./PaxHeaders.19168/denemo-2.2.00000644000000000000000000000013213135434152012610 xustar0030 mtime=1500919914.513315139 30 atime=1500919914.539981806 30 ctime=1500919914.513315139 denemo-2.2.0/0000755000175000017500000000000013135434152014401 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/PaxHeaders.19168/docs0000644000000000000000000000013213135434151013402 xustar0030 mtime=1500919913.673315139 30 atime=1500919914.539981806 30 ctime=1500919913.673315139 denemo-2.2.0/docs/0000755000175000017500000000000013135434151015330 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/docs/PaxHeaders.19168/reference0000644000000000000000000000013213135434151015340 xustar0030 mtime=1500919913.423315139 30 atime=1500919914.539981806 30 ctime=1500919913.423315139 denemo-2.2.0/docs/reference/0000755000175000017500000000000013135434151017266 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/docs/reference/PaxHeaders.19168/denemo0000644000000000000000000000013213135434151016607 xustar0030 mtime=1500919913.679981805 30 atime=1500919914.539981806 30 ctime=1500919913.679981805 denemo-2.2.0/docs/reference/denemo/0000755000175000017500000000000013135434151020535 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/docs/reference/denemo/PaxHeaders.19168/denemo-sections.txt0000644000000000000000000000013213135434036022523 xustar0030 mtime=1500919838.116648472 30 atime=1500919914.553315139 30 ctime=1500919913.679981805 denemo-2.2.0/docs/reference/denemo/denemo-sections.txt0000644000175000017500000013510313135434036024377 0ustar00jjbenhamjjbenham00000000000000
accwidths NUMACCTYPES DOUBLEFLAT_WIDTH DOUBLEFLAT_HEIGHT DOUBLEFLAT_OFFSET FLAT_WIDTH FLAT_HEIGHT FLAT_OFFSET NATURAL_WIDTH NATURAL_HEIGHT NATURAL_OFFSET SHARP_WIDTH SHARP_HEIGHT SHARP_OFFSET DOUBLESHARP_WIDTH DOUBLESHARP_HEIGHT DOUBLESHARP_OFFSET EXTRABACKOFF
alsabackend alsa_seq_midi_backend
articulations insert_ornament_list
audio DENEMO_SAMPLE_RATE DENEMO_SAMPLE_TYPE get_pitch setTuningTarget determine_frequency set_frequency_smoothing initialize_pitch_recognition terminate_pitch_recognition play_pitch
audiocapture collect_data_for_tuning
audiofile recorded_audio_filename export_recorded_audio
audiointerface initialize destroy reconfigure start_playing stop_playing panic backend_type_t NUM_BACKENDS backend_timebase_prio_t audio_initialize audio_shutdown midi_play audio_play midi_stop play_midi_event play_note play_notes rhythm_feedback panic_all read_event_from_queue read_event_from_mixer_queue read_event_from_rubberband_queue write_samples_to_rubberband_queue update_playback_time get_playback_time input_midi_event queue_redraw_all queue_redraw_playhead smfmutex have_midi advance_time
barline insert_barline newbarline add_barline barlinefromname
binreloc GbrInitError gbr_find_exe gbr_find_exe_dir gbr_find_prefix gbr_find_bin_dir gbr_find_sbin_dir gbr_find_data_dir gbr_find_locale_dir gbr_find_lib_dir gbr_find_libexec_dir gbr_find_etc_dir gbr_init gbr_init_lib
bookmarks addbookmark gotobookmark nextbookmark prevbookmark deletebookmarks
calculatepositions find_xes_in_measure find_xes_in_all_measures
callbacks gui mode appending if
changenotehead insertnotehead texttohead set_notehead
chordops newclefify findreversealigns newchord nearestnote modify_note addtone addornament removetone shiftpitch changenote changeenshift changedur changenumdots freechord clone_chord hidechord
commandfuncs nudgerightward nudge_downward set_width_to_work_with adjustmeasurewidth setcurrents adjuststaffheight measureleft measureright movetomeasureleft movetomeasureright movetostart movetoend swapstaffs splitstaffs joinstaffs swapmovements staffup staffdown movetostaffup movetostaffdown voiceup voicedown movetovoiceup movetovoicedown cursorleft cursorright movecursorleft movecursorright cursor_to_next_object cursor_to_prev_object cursor_to_next_selected_object cursor_to_prev_selected_object cursor_to_next_standalone_directive cursor_to_prev_standalone_directive cursor_to_next_standalone_in_measure cursor_to_prev_standalone_in_measure cursor_to_next_chord cursor_to_prev_chord cursor_to_next_chord_in_measure cursor_to_prev_chord_in_measure cursor_to_next_note cursor_to_prev_note cursorup cursordown shiftcursor setenshift changeduration delete_chordnote insert_chordnote incrementenshift change_stem_directive changedots appendmeasures insertclone toend tohome inserttuplet object_insert stem_directive_insert toggle_begin_slur toggle_end_slur insertgrace toggle_start_crescendo toggle_end_crescendo toggle_start_diminuendo toggle_end_diminuendo insertion_point insertion_point_for_type caution displayhelper auto_save_document_timeout delete_staff_current delete_staff_before delete_staff_after appendmeasurestoentirescore insertmeasureafter addmeasureafter insertmeasurebefore deletemeasure deletemeasureallstaffs deleteobject insert_note_following_pattern beamandstemdirhelper nextrhythm insert_rhythm_pattern toggle_tie get_prevailing_duration dnm_inserttuplet next_editable_note
contexts find_leftmost_staffcontext find_leftmost_allcontexts find_prevailing_clef get_clef_before_object get_prevailing_context
denemo _ gettext_noop N_ LILYPOND_VERSION MAX_UNDOS SEVENGINTS CHECKING_MASK ADDING_MASK CHORD_MASK DENEMO_INITIAL_MEASURE_WIDTH DENEMO_INITIAL_STAFF_HEIGHT DENEMO_FILE_SUFFIX XML_EXT SCM_EXT LILYPOND_EXT KEYMAP_EXT DENEMO_NO_COMMAND g_malloc g_object_set_data g_object_get_data gtk_action_get_name g_list_free g_error_free gtk_tree_path_free g_free g_string_free DEFAULT_KEYMAP DEFAULT_KEYBINDINGS PREFS_FILE mswin None Jack Portaudio Fluidsynth COMMANDS_DIR UI_DIR SOUNDFONTS_DIR PIXMAPS_DIR FONTS_DIR LOCALE_DIR DenemoDirectory
denemo_api dnm_insertchord dnm_insertmeasures dnm_deleteobject dnm_deletemeasure dnm_addornament dnm_setinitialclef dnm_setinitialtimesig dnm_insert_timesig dnm_setinitialkeysig dnm_set_denemo_name dnm_addtone dnm_newchord dnm_addmeasures dnm_chooseorcfile dnm_get_temp_filename dnm_newobj dnm_lyric_new dnm_clone_object dnm_stem_directive_new dnm_newkeyobj dnm_newtimesigobj dnm_newclefobj
denemo_objects headtype Ornament tuplet clefs barline_type lilydirective DenemoDirective stemdirections
denemo_types EXT_MIDI EXT_CSOUND DENEMO_DEFAULT_ANON_FTP DENEMO_TEXTEDITOR_TAG GRACED_NOTE ENDGRACE ACCIACCATURA GActionCallback G_ACTIONCALLBACK objnode unre_mode DenemoSaveType DenemoGraphicType DenemoObjType DENEMO_OBJECT_TYPE_NAME tuplet_type input_mode action_type DenemoContext DenemoVoice measurenode staffnode KeymapCommandType SCRIPT_TYPE typeset_type DENEMO_OVERRIDE_LILYPOND DENEMO_ALT_OVERRIDE DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_EDITOR DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_TAGEDIT DENEMO_OVERRIDE_VOLUME DENEMO_OVERRIDE_DURATION DENEMO_OVERRIDE_REPEAT DENEMO_OVERRIDE_CHANNEL DENEMO_OVERRIDE_TEMPO DENEMO_OVERRIDE_TRANSPOSITION DENEMO_MIDI_MASK DENEMO_OVERRIDE_ONCE DENEMO_OVERRIDE_STEP DENEMO_OVERRIDE_RAMP DENEMO_MIDI_ACTION_MASK DENEMO_OVERRIDE_RELATIVE DENEMO_OVERRIDE_PERCENT DENEMO_MIDI_INTERPRETATION_MASK DENEMO_OVERRIDE_DYNAMIC DENEMO_OVERRIDE_HIDDEN DENEMO_OVERRIDE_MARKUP DENEMO_OVERRIDE_ABOVE ImportType InstrumentType InputSource MidiDestination DenemoViewType DenemoPosition DenemoScriptParam DenemoScoreblock DenemoAudio DenemoTargetType DenemoTarget DENEMO_MAX_SYSTEMS
dialogs actiontype clef_change_initial clef_change_insert key_change_initial key_change_insert timesig_change_initial timesig_change_insert clef_change key_change timesig_change score_mwidth_change score_staffspace_change staff_properties_change_cb playback_properties_change tomeasurenum preferences_change header_change score_properties_dialog export_pdf_action get_clef_name
displayanimation set_viewport_transition set_staff_transition set_movmement_transition set_measure_transition set_cursor_transition transition_offset transition_cursor_scale measure_transition_offset staff_transition_offset movement_transition_offset set_movement_transition
draw region_playhead initialize_playhead scorearea_configure_event scorearea_draw_event update_drawing_cache draw_score set_start_and_end_objects_for_draw
drawingprims draw_ledgers draw_chord draw_tuplet draw_clef draw_key draw_timesig draw_tupbracket draw_cursor draw_accidental draw_selection draw_stem_directive draw_dynamic draw_lily_dir draw_gracebracket calc_offset draw_articulations draw_lyric draw_figure draw_fakechord drawbarline
dummybackend dummy_audio_backend dummy_midi_backend
dynamic insert_dynamic insertdynamic add_dynamic
entries NOTE0 REST0 NOTE1 REST1 NOTE2 REST2 NOTE3 REST3 NOTE4 REST4 NOTE5 REST5 NOTE6 REST6 NOTE7 REST7 NOTE8 REST8
eventqueue event_queue_new event_queue_free event_queue_reset_playback event_queue_reset_mixer event_queue_reset_rubberband event_queue_write_playback event_queue_write_immediate event_queue_write_mixer event_queue_write_rubberband event_queue_read_output mixer_queue_read_output rubberband_queue_read_output event_queue_write_input event_queue_read_input
exportabc exportabc
exportlilypond TAB create_lilywindow exportlilypond export_lilypond_parts export_lilypond_part generate_lilypond_part make_scoreblock_editable generate_lily refresh_lily_cb force_lily_refresh toggle_lily_visible_cb custom_lily_cb delete_lily_cb set_lily_error highlight_lily_error goto_lilypond_position set_initiate_scoreblock get_lilypond_for_clef get_lilypond_for_keysig get_lilypond_for_timesig get_lilypond_paper get_prevailing_clef_as_lilypond get_prevailing_keysig_as_lilypond get_prevailing_timesig_as_lilypond set_voice_termination set_staff_termination set_voice_definition set_staff_definition
exportmidi exportmidi substitute_midi_values free_midi_data dia_to_midinote
exportxml startScore endScore exportScoreInfo exportStaffInfo exportVoiceInfo exportVoiceInitParams exportMeasure exportObjectInfo exportNoteInfo exportCustomObject exportXML registerExportXMLNSHandler unregisterExportXMLNSHandler
external ext_init ext_quit get_temp_filename spawn_external GPID_UNREF_VALUE
fakechord separate_fakechord_elements fakechord_insert
figure FIGURE_H figure_insert newfigure delete_figured_bass hide_figured_bass show_figured_bass
file confirmbox file_savepartswrapper file_open_with_check file_import_lilypond_with_check file_import_midi_with_check file_import_musicxml_with_check file_add_staffs file_add_movements open_user_default_template system_template_open_with_check system_example_open_with_check local_template_open_with_check file_savewrapper file_saveaswrapper file_newwrapper new_score_cb file_save file_saveas template_save file_copy_save export_mudela_action export_pdf_action export_png_action export_midi_action paste_clipboard openrecent open_for_real file_dialog lyinput open_source_file
fluid fluidsynth_init fluidsynth_shutdown fluidsynth_feed_midi fluidsynth_all_notes_off fluidsynth_render_audio choose_sound_font
graceops newgracestart newgraceend toggle_grace toggle_acciaccatura
hairpin push_hairpin_stack top_hairpin_stack pop_hairpin_stack draw_hairpin
help about browse_manual
http post_denemodotorg
importmidi process_track importMidi
importmusicxml mxmlinput
importxml startScore endScore importScoreInfo importStaffInfo importVoiceInfo importMeasure importObjectInfo importNoteInfo importCustomObject importXML registerImportXMLNSHandler unregisterImportXMLNSHandler
instrumentname select_program
jackbackend jack_audio_backend jack_midi_backend
jackutil get_jack_ports free_jack_ports
kbd-custom MASK_FILTER dnm_sanitize_key_event dnm_hyper_sanitize_key_event dnm_meta_sanitize_key_state isModifier dnm_accelerator_parse dnm_accelerator_name kbd_categories_length configure_keyboard allocate_keymap free_keymap register_command register_command_row alphabeticalize_commands keymap_clear_bindings keymap_size keymap_foreach_command_binding lookup_command_for_keybinding lookup_command_for_keyevent lookup_command_for_keybinding_name lookup_command_from_name lookup_name_from_idx lookup_label_from_idx lookup_tooltip_from_idx lookup_hidden_from_idx lookup_callback_from_idx remove_keybinding remove_keybinding_from_name ListPosition add_keybinding_to_idx add_keybinding_to_named_command add_named_binding_to_idx keymap_update_accel keymap_accel_quick_edit_snooper lookup_action_from_name action_of_name lookup_action_from_idx lookup_menu_path_from_idx execute_callback_from_idx execute_callback_from_name idx_has_callback dump_command_info dnm_sanitize_key_state load_keymap_dialog load_default_keymap_file load_system_keymap_dialog save_keymap_dialog load_keymap_dialog_location save_default_keymap_file_wrapper save_default_keymap_file set_state keymap_get_command_view keymap_get_binding_view keymap_cleanup_command_view keymap_change_binding_view_on_command_selection update_accel_labels command_has_binding add_keybinding_for_name add_keybinding_for_command update_all_labels dnm_clean_event add_twokeybinding_to_idx command_row_init keymap_get_command_row is_action_id_builtin is_action_name_builtin get_menu_label get_menu_position
kbd-interface configure_keyboard_dialog configure_keyboard_dialog_init_idx
keyboard set_visibility_for_action parse_paths add_ui show_action_of_name hide_action_of_name translate_binding_dnm_to_gtk translate_binding_gtk_to_dnm extract_menupath create_command
keymapio load_xml_keymap save_xml_keymap save_xml_keybindings load_xml_keybindings save_command_metadata save_command_data load_command_data XML_ENCODING COMMANDXML_TAG_ROOT COMMANDXML_TAG_MERGE COMMANDXML_TAG_TITLE COMMANDXML_TAG_AUTHOR COMMANDXML_TAG_MAP COMMANDXML_TAG_ROW COMMANDXML_TAG_AFTER COMMANDXML_TAG_CURSORS COMMANDXML_TAG_ACTION COMMANDXML_TAG_HIDDEN COMMANDXML_TAG_MENUPATH COMMANDXML_TAG_TYPE COMMANDXML_TAG_LABEL COMMANDXML_TAG_TOOLTIP COMMAND_TYPE_SCHEME COMMAND_TYPE_BUILTIN MENUXML_TAG_MENU MENUXML_TAG_MENUBAR MENUXML_TAG_TOOLBAR MENUXML_TAG_MENUITEM MENUXML_PROP_ACTION MENUXML_PROP_NAME BINDINGXML_TAG_ACTION BINDINGXML_TAG_BIND BINDINGXML_TAG_STATE BINDINGXML_TAG_CURSOR BINDINGXML_TAG_CURSORBINDING
keyresponses scorearea_keypress_event scorearea_keyrelease_event scorearea_button_press scorearea_button_release intercept_scorearea_keypress adjust_measure_less_width_key adjust_measure_more_width_key adjust_staff_less_height_key adjust_staff_more_height_key unset_selection_key insert_chord_key go_to_A_key go_to_B_key go_to_C_key go_to_D_key go_to_E_key go_to_F_key go_to_G_key octave_up_key octave_down_key rest_toggle_key toggle_blank append_measure_key insert_measure_key insert_chord_0key insert_chord_1key insert_chord_2key insert_chord_3key insert_chord_4key insert_chord_5key insert_chord_6key insert_chord_7key insert_chord_8key insert_blankchord_0key insert_blankchord_1key insert_blankchord_2key insert_blankchord_3key insert_blankchord_4key insert_blankchord_5key insert_blankchord_6key insert_blankchord_7key insert_blankchord_8key insert_rest_0key insert_rest_1key insert_rest_2key insert_rest_3key insert_rest_4key insert_rest_5key insert_rest_6key insert_rest_7key insert_rest_8key insert_duplet insert_triplet start_triplet end_tuplet insert_quadtuplet insert_quintuplet insert_sextuplet insert_septuplet add_tone_key remove_tone_key deletepreviousobject sharpen_key stem_up stem_down flatten_key pending_flatten pending_sharpen tie_notes_key add_dot_key remove_dot_key insert_clone_key add_mordent add_turn set_grace force_cautionary change_pitch add_coda add_flageolet add_open add_prallmordent add_prallprall add_prall add_reverseturn add_segno add_sforzato add_stopped add_thumb add_trillelement add_trill_element add_upprall add_arpeggio default_mode replace_mode insert_mode insert_opencloserepeat insert_closerepeat insert_openrepeat insert_endbar insert_doublebar blank_mode newcleftreble newclefbass newclefg8 newclefalto newcleftenor newclefsoprano setcleftreble setclefbass setclefg8 setclefalto setcleftenor setclefsoprano newtimesig22 newtimesig42 newtimesig32 newtimesig44 newtimesig54 newtimesig24 newtimesig34 newtimesig68 newtimesig128 newtimesig38 newtimesig98 newtimesig64 settimesig22 settimesig42 settimesig32 settimesig44 settimesig54 settimesig24 settimesig34 settimesig68 settimesig128 settimesig38 settimesig98 settimesig64 newkeysigcmaj newkeysiggmaj newkeysigdmaj newkeysigamaj newkeysigemaj newkeysigbmaj newkeysigfsharpmaj newkeysigcsharpmaj newkeysigfmaj newkeysigbflatmaj newkeysigeflatmaj newkeysigaflatmaj newkeysigdflatmaj newkeysiggflatmaj newkeysigcflatmaj newkeysigamin newkeysigemin newkeysigbmin newkeysigfsharpmin newkeysigcsharpmin newkeysiggsharpmin newkeysigdsharpmin newkeysigasharpmin newkeysigdmin newkeysiggmin newkeysigcmin newkeysigfmin newkeysigbflatmin newkeysigeflatmin newkeysigaflatmin setkeysigcmaj setkeysiggmaj setkeysigdmaj setkeysigamaj setkeysigemaj setkeysigbmaj setkeysigfsharpmaj setkeysigcsharpmaj setkeysigfmaj setkeysigbflatmaj setkeysigeflatmaj setkeysigaflatmaj setkeysigdflatmaj setkeysiggflatmaj setkeysigcflatmaj setkeysigamin setkeysigemin setkeysigbmin setkeysigfsharpmin setkeysigcsharpmin setkeysiggsharpmin setkeysigdsharpmin setkeysigasharpmin setkeysigdmin setkeysiggmin setkeysigcmin setkeysigfmin setkeysigbflatmin setkeysigeflatmin setkeysigaflatmin append_measure_score process_key_event
keysigdialog key_change_initial key_change_insert
lilydirectives LILYDIRECTIVE_H get_note_directive_number unpopulate_menu get_scoretitle widget_for_directive widget_for_staff_directive widget_for_voice_directive widget_for_movementcontrol_directive widget_for_header_directive widget_for_layout_directive text_edit_note_directive set_action_script_for_tag get_action_script edit_object_directive edit_clef_directive edit_keysig_directive edit_timesig_directive edit_staff_directive edit_voice_directive edit_score_directive edit_movement_directive edit_object note_directive chord_directive standalone_directive delete_chord_or_note_directive delete_directives delete_chord_directive delete_note_directive delete_staff_directive delete_voice_directive DECL_PUT_FIELD DECL_GET_FIELD DECL_GET_INT DECL_PUT_INT DECL_PUT_GRAPHIC widget_for_directive_menu
lyric LYRIC_H add_verse delete_verse reset_lyrics get_text_from_view add_verse_to_staff next_syllable install_lyrics_preview hide_lyrics show_lyrics lyric_change select_lyrics get_lyrics_for_current_verse put_lyrics_for_current_verse get_lyrics_for_verse_num append_lyrics_for_current_verse
measureops addmeasures freeobjlist removemeasures calculatebeamsandstemdirs showwhichaccidentals forceaccidentals
midi MIDI_NOTE_OFF MIDI_NOTE_ON MIDI_KEY_PRESSURE MIDI_CONTROL_CHANGE MIDI_PROGRAM_CHANGE MIDI_CHANNEL_PRESSURE MIDI_PITCH_BEND SYS_EXCLUSIVE_MESSAGE1 generate_midi get_time get_playuntil adjust_midi_velocity change_tuning get_midi_on_time get_midi_off_time get_obj_for_start_time get_obj_for_end_time update_position start_playing pause_playing stop_playing is_playing is_paused get_start_time get_end_time update_start_time initialize_until_time get_smf_event handle_midi_event intercept_midi_event get_midi_channel get_midi_prognum get_midi_port noteon_key toggle_paused play_adjusted_midi_event set_midi_capture process_midi_event
mousing scorearea_button_release scorearea_button_press scorearea_motion_notify scorearea_scroll_event scorearea_leave_event scorearea_enter_event mouse_gesture mouse_shortcut_name append_modifier_name assign_cursor set_cursor_for DENEMO_NUMBER_MODIFIERS DENEMO_MODIFIER_MASK
moveviewport update_hscrollbar update_vscrollbar set_rightmeasurenum set_bottom_staff isoffleftside isoffrightside page_viewport move_viewport_up move_viewport_down set_currentmeasurenum moveto_currentmeasurenum vertical_scroll horizontal_scroll scroll_left scroll_right set_currentstaffnum moveto_currentstaffnum transition_offset transition_cursor_scale
notewidths SMALLESTDURATION WHOLEHEAD_WIDTH WHOLEHEAD_HEIGHT WHOLEHEAD_SEMI_HEIGHT HALFHEAD_WIDTH HALFHEAD_HEIGHT HALFHEAD_SEMI_HEIGHT NOTEHEAD_WIDTH NOTEHEAD_HEIGHT NOTEHEAD_SEMI_HEIGHT CROSS_WIDTH CROSS_HEIGHT CROSS_SEMI_HEIGHT DIAMOND_WIDTH DIAMOND_HEIGHT DIAMOND_SEMI_HEIGHT HARMONIC_WIDTH HARMONIC_HEIGHT HARMONIC_SEMI_HEIGHT STEM_HEIGHT EXTRA_STEM_HEIGHT STEM_WIDTH EIGHTHSTEM_HEIGHT SIXTEENTHSTEM_HEIGHT THIRTYSECONDSTEM_HEIGHT SIXTYFOURTHSTEM_HEIGHT HUNDREDTWENTYEIGHTHSTEM_HEIGHT TWOHUNDREDFIFTYSIXTHSTEM_HEIGHT WHOLEREST_WIDTH WHOLEREST_HEIGHT WHOLEREST_OFFSETFROMTOP HALFREST_WIDTH HALFREST_HEIGHT HALFREST_OFFSETFROMTOP QUARTERREST_WIDTH QUARTERREST_HEIGHT QUARTERREST_OFFSETFROMTOP EIGHTHREST_WIDTH EIGHTHREST_HEIGHT EIGHTHREST_OFFSETFROMTOP SIXTEENTHREST_WIDTH SIXTEENTHREST_HEIGHT SIXTEENTHREST_OFFSETFROMTOP THIRTYSECONDREST_WIDTH THIRTYSECONDREST_HEIGHT THIRTYSECONDREST_OFFSETFROMTOP SIXTYFOURTHREST_WIDTH SIXTYFOURTHREST_HEIGHT SIXTYFOURTHREST_OFFSETFROMTOP HUNDREDTWENTYEIGHTHREST_WIDTH HUNDREDTWENTYEIGHTHREST_HEIGHT HUNDREDTWENTYEIGHTHREST_OFFSETFROMTOP TWOHUNDREDFIFTYSIXTHREST_WIDTH TWOHUNDREDFIFTYSIXTHREST_HEIGHT TWOHUNDREDFIFTYSIXTHREST_OFFSETFROMTOP THINBEAM_HEIGHT THICKBEAM_HEIGHT STUB_WIDTH FIRSTBEAMSPACE SUBSQBEAMSPACE FERMATA_WIDTH FERMATA_HEIGHT ACCENT_WIDTH ACCENT_HEIGHT STACATTO TENUTO_WIDTH TENUTO_HEIGHT MARCATO_WIDTH MARCATO_HEIGHT CODA_WIDTH CODA_HEIGHT TRILL_WIDTH TRILL_HEIGHT TURN_HEIGHT TURN_WIDTH MORDENT_WIDTH MORDENT_HEIGHT STACCATISSIMO_WIDTH STACCATISSIMO_HEIGHT DBOW_WIDTH DBOW_HEIGHT UBOW_WIDTH UBOW_HEIGHT ARPEGGIO_WIDTH ARPEGGIO_HEIGHT UPPRALL_WIDTH UPPRALL_HEIGHT TRILL_ELEMENT_WIDTH TRILL_ELEMENT_HEIGHT TRILLELEMENT_WIDTH TRILLELEMENT_HEIGHT THUMB_WIDTH THUMB_HEIGHT STOPPED_SIZE SFORZATO_WIDTH SFORZATO_HEIGHT SEGNO_WIDTH SEGNO_HEIGHT REVERSETURN_WIDTH REVERSETURN_HEIGHT PRALL_WIDTH PRALL_HEIGHT PRALLPRALL_WIDTH PRALLPRALL_HEIGHT PRALLMORDENT_WIDTH PRALLMORDENT_HEIGHT OPEN_WIDTH OPEN_HEIGHT FLAGEOLET_SIZE HEEL_WIDTH HEEL_HEIGHT TOE_WIDTH TOE_HEIGHT
objops freeobject initkeyaccs newmeasurebreakobject newstaffbreakobject lily_directive_new directive_object_new dynamic_new clone_directive clone_directives free_directives free_directive free_directive_data
palettes get_palette create_palette set_palate_shape palette_add_button palette_delete_button repack_palette delete_palette get_palette_name choose_palette_by_name place_action_in_palette
palettestorage writePalettes installPalettes
parseinstruments parseInstruments lookuptype
pathconfig DENEMO_LOAD_PATH DENEMO_BIN_PATH
pitchentry setup_pitch_input stop_pitch_input start_pitch_input pitch_recognition_system_active delete_tone apply_tones clear_overlay store_pitch get_pitch set_sharper set_flatter determine_interval sharpest flattest signal_measure_end pitch_entry_active get_enharmonic_frame get_temperament_combo reset_temperament get_fents_string get_sharpest get_flattest get_temperament_name set_enharmonic_position notenum2enharmonic get_cents_string set_tuning adjust_tonal_center get_enharmonic_position check_interval check_midi_intervals
pitchrecog set_silence set_threshold set_smoothing set_onset_type
playback get_midi_audio_pointer set_tempo ext_midi_playback stop_midi_playback playback_panic PlaybackRangeDialog MasterVolumeDialog restart_play
portaudiobackend portaudio_backend set_playback_speed
portaudioutil get_portaudio_devices free_portaudio_devices get_portaudio_device_index
portmidibackend portmidi_backend
portmidiutil Pm_InitializeWrapper Pm_TerminateWrapper get_portmidi_devices free_portmidi_devices get_portmidi_device_id
prefops INITIAL_WIDTH INITIAL_HEIGHT initprefs readxmlprefsString writeXMLPrefs writeHistory readHistory storeWindowState loadWindowState get_bool_pref get_int_pref get_string_pref
print PRINTMARKER GREATER SAME LESSER GPID_NONE INSTALLED_LILYPOND_VERSION MANUAL CONTINUOUS background_state WwStage WwTask WwGrob get_wysiwyg_info get_print_status printall_cb printmovement_cb printpart_cb printselection_cb printexcerptpreview_cb get_lily_version_string export_pdf export_png printpng_finished create_thumbnail large_thumbnail_name stop_lilypond process_lilypond_errors get_printfile_pathbasename create_pdf show_print_view
printview get_offset get_positions get_new_target get_reference_point get_control_point get_curve present_print_view_window typeset_part continuous_typesetting get_new_point check_lily_version typeset_for_script print_typeset_pdf typeset_current_layout install_printpreview refresh_print_view printview_finished print_from_print_view
processstaffname set_lily_name set_denemo_name canonicalize_denemo_name
redefs yymaxdepth yyparse yylval yychar yydebug yypact yyr1 yyr2 yydef yychk yypgo yyact yyexca yyerrflag yynerrs yyps yypv yysfrogs yy_yys yystate yytmp yyvfrogv yy_yyv yyval yylloc yyreds yytoks yylhs yylen yydefred yydgoto yysindex yyrindex yygindex yytable yycheck yyname yyrule
ringbuffer jack_ringbuffer_create jack_ringbuffer_free jack_ringbuffer_get_read_vector jack_ringbuffer_get_write_vector jack_ringbuffer_read jack_ringbuffer_peek jack_ringbuffer_read_advance jack_ringbuffer_read_space jack_ringbuffer_mlock jack_ringbuffer_reset jack_ringbuffer_write jack_ringbuffer_write_advance jack_ringbuffer_write_space
runsilent silentconversion
scheme scheme_CursorLeft scheme_MoveCursorLeft scheme_CursorDown scheme_CursorUp scheme_CursorRight scheme_MoveCursorRight scheme_GoToMark scheme_SwapPointAndMark scheme_GoToSelectionStart scheme_PushPosition scheme_PopPosition scheme_PopPushPosition scheme_ToggleReduceToDrawingArea scheme_StaffUp scheme_StaffDown scheme_MoveToStaffUp scheme_MoveToStaffDown scheme_MeasureLeft scheme_MeasureRight scheme_MoveToMeasureLeft scheme_MoveToMeasureRight scheme_A scheme_B scheme_C scheme_D scheme_E scheme_F scheme_G scheme_OctaveUp scheme_OctaveDown scheme_WholeNote scheme_HalfNote scheme_QuarterNote scheme_EighthNote scheme_SixteenthNote scheme_ThirtysecondNote scheme_SixtyfourthNote scheme_OneHundredTwentyEighthNote scheme_TwoHundredFiftySixthNote scheme_InsertWholeRest scheme_InsertHalfRest scheme_InsertQuarterRest scheme_InsertEighthRest scheme_InsertSixteenthRest scheme_InsertThirtysecondRest scheme_InsertSixtyfourthRest scheme_InsertBlankWholeNote scheme_InsertBlankHalfNote scheme_InsertBlankQuarterNote scheme_InsertBlankEighthNote scheme_InsertBlankSixteenthNote scheme_InsertBlankThirtysecondNote scheme_InsertBlankSixtyfourthNote scheme_InsertBlankOneHundredTwentyEighthNote scheme_InsertBlankTwoHundredFiftySixthNote scheme_ToggleRestMode scheme_ToggleBlankMode scheme_InsertDuplet scheme_InsertTriplet scheme_StartTriplet scheme_EndTuplet scheme_InsertQuadtuplet scheme_InsertQuintuplet scheme_InsertSextuplet scheme_InsertSeptuplet scheme_AddNoteToChord scheme_RemoveNoteFromChord scheme_Sharpen scheme_Flatten scheme_PendingSharpen scheme_PendingFlatten scheme_StemUp scheme_StemDown scheme_AddDot scheme_RemoveDot scheme_InsertTiedNote scheme_ToggleTie scheme_DeleteObject scheme_DeletePreviousObject scheme_InsertMeasure scheme_AddMeasure scheme_InsertMeasureBefore scheme_InsertMeasureAfter scheme_AppendMeasure scheme_DeleteMeasure scheme_DeleteMeasureAllStaffs scheme_ShrinkMeasures scheme_WidenMeasures scheme_ShorterStaffs scheme_TallerStaffs scheme_InsertTrebleClef scheme_InsertBassClef scheme_Insertg8clef scheme_InsertAltoClef scheme_InsertTenorClef scheme_InsertSopranoClef scheme_SetInitialTrebleClef scheme_SetInitialBassClef scheme_SetInitialg8clef scheme_SetInitialAltoClef scheme_SetInitialTenorClef scheme_SetInitialSopranoClef scheme_Insert22Time scheme_Insert32Time scheme_Insert42Time scheme_Insert44Time scheme_Insert34Time scheme_Insert24Time scheme_Insert64Time scheme_Insert38Time scheme_Insert68Time scheme_Insert128Time scheme_Insert98Time scheme_Set22Time scheme_Set32Time scheme_Set42Time scheme_Set44Time scheme_Set34Time scheme_Set24Time scheme_Set64Time scheme_Set38Time scheme_Set68Time scheme_Set128Time scheme_Set98Time scheme_InsertCmaj scheme_InsertGmaj scheme_InsertDmaj scheme_InsertAmaj scheme_InsertEmaj scheme_InsertBmaj scheme_InsertFSharpmaj scheme_InsertCSharpmaj scheme_InsertFmaj scheme_InsertBflatmaj scheme_InsertEflatmaj scheme_InsertAflatmaj scheme_InsertDflatmaj scheme_InsertGflatmaj scheme_InsertCflatmaj scheme_InsertAmin scheme_InsertEmin scheme_InsertBmin scheme_InsertFSharpmin scheme_InsertCSharpmin scheme_InsertGSharpmin scheme_InsertDSharpmin scheme_InsertASharpmin scheme_InsertDmin scheme_InsertGmin scheme_InsertCmin scheme_InsertFmin scheme_InsertBflatmin scheme_InsertEflatmin scheme_InsertAflatmin scheme_SetInitialCmaj scheme_SetInitialGmaj scheme_SetInitialDmaj scheme_SetInitialAmaj scheme_SetInitialEmaj scheme_SetInitialBmaj scheme_SetInitialFSharpmaj scheme_SetInitialCSharpmaj scheme_SetInitialFmaj scheme_SetInitialBflatmaj scheme_SetInitialEflatmaj scheme_SetInitialAflatmaj scheme_SetInitialDflatmaj scheme_SetInitialGflatmaj scheme_SetInitialCflatmaj scheme_SetInitialAmin scheme_SetInitialEmin scheme_SetInitialBmin scheme_SetInitialFSharpmin scheme_SetInitialCSharpmin scheme_SetInitialGSharpmin scheme_SetInitialDSharpmin scheme_SetInitialASharpmin scheme_SetInitialDmin scheme_SetInitialGmin scheme_SetInitialCmin scheme_SetInitialFmin scheme_SetInitialBflatmin scheme_SetInitialEflatmin scheme_SetInitialAflatmin scheme_SetMark scheme_UnsetMark scheme_SetPoint scheme_ToggleBeginSlur scheme_ToggleEndSlur scheme_ToggleStartCrescendo scheme_ToggleEndCrescendo scheme_ToggleStartDiminuendo scheme_ToggleEndDiminuendo scheme_ToggleGrace scheme_ToggleAcciaccatura scheme_ForceCaution scheme_ChangePitch scheme_InsertRhythm scheme_NextRhythm scheme_AppendMeasureAllStaffs scheme_ExecuteScheme scheme_SharpenEnharmonicSet scheme_FlattenEnharmonicSet scheme_New scheme_NewScore scheme_Open scheme_ImportLilypond scheme_ImportMidi scheme_ImportMusicXml scheme_AddStaffs scheme_AddMovements scheme_MovementProps scheme_OpenNewWindow scheme_Save scheme_SaveAs scheme_SaveCopy scheme_OpenTemplate scheme_OpenExample scheme_OpenMyTemplate scheme_SaveTemplate scheme_NewWindow scheme_InsertMovementBefore scheme_InsertMovementAfter scheme_NewMovement scheme_SaveParts scheme_ExportMUDELA scheme_ExportPDF scheme_ExportPNG scheme_ExportMIDI scheme_PrintView scheme_PrintSelection scheme_PrintExcerptPreview scheme_PrintMovement scheme_Print scheme_PrintPart scheme_Close scheme_Quit scheme_Undo scheme_Redo scheme_Copy scheme_Cut scheme_Paste scheme_PasteClipboard scheme_ScoreProperties scheme_SaveSelection scheme_Preferences scheme_SaveAccels scheme_CommandManagement scheme_SwapStaffs scheme_SplitVoices scheme_JoinVoices scheme_SwapMovements scheme_VoiceUp scheme_VoiceDown scheme_MoveToVoiceUp scheme_MoveToVoiceDown scheme_AddBefore scheme_AddAfter scheme_AddInitial scheme_AddLast scheme_DeleteBefore scheme_DeleteStaff scheme_DeleteAfter scheme_AddVoice scheme_StaffProperties scheme_InitialClef scheme_InsertClef scheme_InitialKey scheme_InsertKey scheme_InitialTimeSig scheme_InsertTimeSig scheme_ChangeNotehead scheme_InsertStem scheme_AddVerse scheme_DeleteVerse scheme_EditFiguredBass scheme_DeleteFiguredBass scheme_HideFiguredBass scheme_ShowFiguredBass scheme_EditChords scheme_InsertDynamic scheme_EditObject scheme_EditDirective scheme_EditStaffDirective scheme_EditVoiceDirective scheme_EditScoreDirective scheme_EditMovementDirective scheme_EditClefDirective scheme_EditTimesigDirective scheme_EditKeysigDirective scheme_DeleteDirective scheme_AttachLilyToNote scheme_AttachLilyToChord scheme_InsertBarline scheme_GoToMeasure scheme_GoToBeginning scheme_GoToEnd scheme_MoveToBeginning scheme_MoveToEnd scheme_NextMovement scheme_PreviousMovement scheme_DeleteMovement scheme_Play scheme_Stop scheme_PlaybackProperties scheme_Help scheme_About scheme_MoreCommands scheme_MyCommands scheme_FetchCommands scheme_ToggleEdit scheme_ToggleRest scheme_ToggleRhythm scheme_ClearOverlay scheme_CreateRhythm scheme_DeleteRhythm scheme_InsertA scheme_AddNoteA scheme_AddA scheme_ChangeToA scheme_MoveToA scheme_InsertB scheme_AddNoteB scheme_AddB scheme_ChangeToB scheme_MoveToB scheme_InsertC scheme_AddNoteC scheme_AddC scheme_ChangeToC scheme_MoveToC scheme_InsertD scheme_AddNoteD scheme_AddD scheme_ChangeToD scheme_MoveToD scheme_InsertE scheme_AddNoteE scheme_AddE scheme_ChangeToE scheme_MoveToE scheme_InsertF scheme_AddNoteF scheme_AddF scheme_ChangeToF scheme_MoveToF scheme_InsertG scheme_AddNoteG scheme_AddG scheme_ChangeToG scheme_MoveToG scheme_0 scheme_InsertDur0 scheme_ChangeDur0 scheme_SetDur0 scheme_InsertRest0 scheme_1 scheme_InsertDur1 scheme_ChangeDur1 scheme_SetDur1 scheme_InsertRest1 scheme_2 scheme_InsertDur2 scheme_ChangeDur2 scheme_SetDur2 scheme_InsertRest2 scheme_3 scheme_InsertDur3 scheme_ChangeDur3 scheme_SetDur3 scheme_InsertRest3 scheme_4 scheme_InsertDur4 scheme_ChangeDur4 scheme_SetDur4 scheme_InsertRest4 scheme_5 scheme_InsertDur5 scheme_ChangeDur5 scheme_SetDur5 scheme_InsertRest5 scheme_6 scheme_InsertDur6 scheme_ChangeDur6 scheme_SetDur6 scheme_InsertRest6 scheme_7 scheme_InsertDur7 scheme_ChangeDur7 scheme_SetDur7 scheme_InsertRest7 scheme_8 scheme_InsertDur8 scheme_ChangeDur8 scheme_SetDur8 scheme_InsertRest8
scheme_cb scheme_CursorLeft SCM_BOOL scheme_MoveCursorLeft scheme_CursorDown scheme_CursorUp scheme_CursorRight scheme_MoveCursorRight scheme_GoToMark scheme_SwapPointAndMark scheme_GoToSelectionStart scheme_PushPosition scheme_PopPosition scheme_PopPushPosition scheme_ToggleReduceToDrawingArea scheme_StaffUp scheme_StaffDown scheme_MoveToStaffUp scheme_MoveToStaffDown scheme_MeasureLeft scheme_MeasureRight scheme_MoveToMeasureLeft scheme_MoveToMeasureRight scheme_A scheme_B scheme_C scheme_D scheme_E scheme_F scheme_G scheme_OctaveUp scheme_OctaveDown scheme_WholeNote scheme_HalfNote scheme_QuarterNote scheme_EighthNote scheme_SixteenthNote scheme_ThirtysecondNote scheme_SixtyfourthNote scheme_OneHundredTwentyEighthNote scheme_TwoHundredFiftySixthNote scheme_InsertWholeRest scheme_InsertHalfRest scheme_InsertQuarterRest scheme_InsertEighthRest scheme_InsertSixteenthRest scheme_InsertThirtysecondRest scheme_InsertSixtyfourthRest scheme_InsertBlankWholeNote scheme_InsertBlankHalfNote scheme_InsertBlankQuarterNote scheme_InsertBlankEighthNote scheme_InsertBlankSixteenthNote scheme_InsertBlankThirtysecondNote scheme_InsertBlankSixtyfourthNote scheme_InsertBlankOneHundredTwentyEighthNote scheme_InsertBlankTwoHundredFiftySixthNote scheme_ToggleRestMode scheme_ToggleBlankMode scheme_InsertDuplet scheme_InsertTriplet scheme_StartTriplet scheme_EndTuplet scheme_InsertQuadtuplet scheme_InsertQuintuplet scheme_InsertSextuplet scheme_InsertSeptuplet scheme_AddNoteToChord scheme_RemoveNoteFromChord scheme_Sharpen scheme_Flatten scheme_PendingSharpen scheme_PendingFlatten scheme_StemUp scheme_StemDown scheme_AddDot scheme_RemoveDot scheme_InsertTiedNote scheme_ToggleTie scheme_DeleteObject scheme_DeletePreviousObject scheme_InsertMeasure scheme_AddMeasure scheme_InsertMeasureBefore scheme_InsertMeasureAfter scheme_AppendMeasure scheme_DeleteMeasure scheme_DeleteMeasureAllStaffs scheme_ShrinkMeasures scheme_WidenMeasures scheme_ShorterStaffs scheme_TallerStaffs scheme_InsertTrebleClef scheme_InsertBassClef scheme_Insertg8clef scheme_InsertAltoClef scheme_InsertTenorClef scheme_InsertSopranoClef scheme_SetInitialTrebleClef scheme_SetInitialBassClef scheme_SetInitialg8clef scheme_SetInitialAltoClef scheme_SetInitialTenorClef scheme_SetInitialSopranoClef scheme_Insert22Time scheme_Insert32Time scheme_Insert42Time scheme_Insert44Time scheme_Insert34Time scheme_Insert24Time scheme_Insert64Time scheme_Insert38Time scheme_Insert68Time scheme_Insert128Time scheme_Insert98Time scheme_Set22Time scheme_Set32Time scheme_Set42Time scheme_Set44Time scheme_Set34Time scheme_Set24Time scheme_Set64Time scheme_Set38Time scheme_Set68Time scheme_Set128Time scheme_Set98Time scheme_InsertCmaj scheme_InsertGmaj scheme_InsertDmaj scheme_InsertAmaj scheme_InsertEmaj scheme_InsertBmaj scheme_InsertFSharpmaj scheme_InsertCSharpmaj scheme_InsertFmaj scheme_InsertBflatmaj scheme_InsertEflatmaj scheme_InsertAflatmaj scheme_InsertDflatmaj scheme_InsertGflatmaj scheme_InsertCflatmaj scheme_InsertAmin scheme_InsertEmin scheme_InsertBmin scheme_InsertFSharpmin scheme_InsertCSharpmin scheme_InsertGSharpmin scheme_InsertDSharpmin scheme_InsertASharpmin scheme_InsertDmin scheme_InsertGmin scheme_InsertCmin scheme_InsertFmin scheme_InsertBflatmin scheme_InsertEflatmin scheme_InsertAflatmin scheme_SetInitialCmaj scheme_SetInitialGmaj scheme_SetInitialDmaj scheme_SetInitialAmaj scheme_SetInitialEmaj scheme_SetInitialBmaj scheme_SetInitialFSharpmaj scheme_SetInitialCSharpmaj scheme_SetInitialFmaj scheme_SetInitialBflatmaj scheme_SetInitialEflatmaj scheme_SetInitialAflatmaj scheme_SetInitialDflatmaj scheme_SetInitialGflatmaj scheme_SetInitialCflatmaj scheme_SetInitialAmin scheme_SetInitialEmin scheme_SetInitialBmin scheme_SetInitialFSharpmin scheme_SetInitialCSharpmin scheme_SetInitialGSharpmin scheme_SetInitialDSharpmin scheme_SetInitialASharpmin scheme_SetInitialDmin scheme_SetInitialGmin scheme_SetInitialCmin scheme_SetInitialFmin scheme_SetInitialBflatmin scheme_SetInitialEflatmin scheme_SetInitialAflatmin scheme_SetMark scheme_UnsetMark scheme_SetPoint scheme_ToggleBeginSlur scheme_ToggleEndSlur scheme_ToggleStartCrescendo scheme_ToggleEndCrescendo scheme_ToggleStartDiminuendo scheme_ToggleEndDiminuendo scheme_ToggleGrace scheme_ToggleAcciaccatura scheme_ForceCaution scheme_ChangePitch scheme_InsertRhythm scheme_NextRhythm scheme_AppendMeasureAllStaffs scheme_ExecuteScheme scheme_SharpenEnharmonicSet scheme_FlattenEnharmonicSet scheme_New scheme_NewScore scheme_Open scheme_ImportLilypond scheme_ImportMidi scheme_ImportMusicXml scheme_AddStaffs scheme_AddMovements scheme_MovementProps scheme_OpenNewWindow scheme_Save scheme_SaveAs scheme_SaveCopy scheme_OpenTemplate scheme_OpenExample scheme_OpenMyTemplate scheme_SaveTemplate scheme_NewWindow scheme_InsertMovementBefore scheme_InsertMovementAfter scheme_NewMovement scheme_SaveParts scheme_ExportMUDELA scheme_ExportPDF scheme_ExportPNG scheme_ExportMIDI scheme_PrintView scheme_PrintSelection scheme_PrintExcerptPreview scheme_PrintMovement scheme_Print scheme_PrintPart scheme_Close scheme_Quit scheme_Undo scheme_Redo scheme_Copy scheme_Cut scheme_Paste scheme_PasteClipboard scheme_ScoreProperties scheme_SaveSelection scheme_Preferences scheme_SaveAccels scheme_CommandManagement scheme_SwapStaffs scheme_SplitVoices scheme_JoinVoices scheme_SwapMovements scheme_VoiceUp scheme_VoiceDown scheme_MoveToVoiceUp scheme_MoveToVoiceDown scheme_AddBefore scheme_AddAfter scheme_AddInitial scheme_AddLast scheme_DeleteBefore scheme_DeleteStaff scheme_DeleteAfter scheme_AddVoice scheme_StaffProperties scheme_InitialClef scheme_InsertClef scheme_InitialKey scheme_InsertKey scheme_InitialTimeSig scheme_InsertTimeSig scheme_ChangeNotehead scheme_InsertStem scheme_AddVerse scheme_DeleteVerse scheme_EditFiguredBass scheme_DeleteFiguredBass scheme_HideFiguredBass scheme_ShowFiguredBass scheme_EditChords scheme_InsertDynamic scheme_EditObject scheme_EditDirective scheme_EditStaffDirective scheme_EditVoiceDirective scheme_EditScoreDirective scheme_EditMovementDirective scheme_EditClefDirective scheme_EditTimesigDirective scheme_EditKeysigDirective scheme_DeleteDirective scheme_AttachLilyToNote scheme_AttachLilyToChord scheme_InsertBarline scheme_GoToMeasure scheme_GoToBeginning scheme_GoToEnd scheme_MoveToBeginning scheme_MoveToEnd scheme_NextMovement scheme_PreviousMovement scheme_DeleteMovement scheme_Play scheme_Stop scheme_PlaybackProperties scheme_Help scheme_About scheme_MoreCommands scheme_MyCommands scheme_FetchCommands scheme_ToggleEdit scheme_ToggleRest scheme_ToggleRhythm scheme_ClearOverlay scheme_CreateRhythm scheme_DeleteRhythm scheme_InsertA scheme_AddNoteA scheme_AddA scheme_ChangeToA scheme_MoveToA scheme_InsertB scheme_AddNoteB scheme_AddB scheme_ChangeToB scheme_MoveToB scheme_InsertC scheme_AddNoteC scheme_AddC scheme_ChangeToC scheme_MoveToC scheme_InsertD scheme_AddNoteD scheme_AddD scheme_ChangeToD scheme_MoveToD scheme_InsertE scheme_AddNoteE scheme_AddE scheme_ChangeToE scheme_MoveToE scheme_InsertF scheme_AddNoteF scheme_AddF scheme_ChangeToF scheme_MoveToF scheme_InsertG scheme_AddNoteG scheme_AddG scheme_ChangeToG scheme_MoveToG scheme_0 scheme_InsertDur0 scheme_ChangeDur0 scheme_SetDur0 scheme_InsertRest0 scheme_1 scheme_InsertDur1 scheme_ChangeDur1 scheme_SetDur1 scheme_InsertRest1 scheme_2 scheme_InsertDur2 scheme_ChangeDur2 scheme_SetDur2 scheme_InsertRest2 scheme_3 scheme_InsertDur3 scheme_ChangeDur3 scheme_SetDur3 scheme_InsertRest3 scheme_4 scheme_InsertDur4 scheme_ChangeDur4 scheme_SetDur4 scheme_InsertRest4 scheme_5 scheme_InsertDur5 scheme_ChangeDur5 scheme_SetDur5 scheme_InsertRest5 scheme_6 scheme_InsertDur6 scheme_ChangeDur6 scheme_SetDur6 scheme_InsertRest6 scheme_7 scheme_InsertDur7 scheme_ChangeDur7 scheme_SetDur7 scheme_InsertRest7 scheme_8 scheme_InsertDur8 scheme_ChangeDur8 scheme_SetDur8 scheme_InsertRest8
scorelayout create_default_scoreblock free_scoreblocks select_layout get_scoreblock_for_lilypond get_score_layout_notebook create_custom_scoreblock create_custom_lilypond_scoreblock select_default_scoreblock selected_scoreblock selected_layout_id get_next_scoreblock get_first_scoreblock iterate_custom_layout get_output_uri_from_scoreblock set_current_scoreblock_uri select_standard_layout select_custom_layout select_custom_layout_for_name GetLayoutMenu refresh_lilypond select_layout_id get_layout_id_for_name
scoreops init_score clone_movement free_score deletescore updatescoreinfo next_movement prev_movement append_new_movement append_blank_movement insert_movement_before insert_movement_after delete_movement movement_props_dialog goto_movement_staff_obj PopPosition PushPosition PopPushPosition reset_movement_numbers set_movement_selector
screenshot screenshot_get_pixbuf screenshot_find_rectangle
selectops get_clip_obj_type insert_clip_obj clearbuffer free_clipboard saveselection copytobuffer delete_selection mark_status set_mark unset_mark set_point copywrapper cutwrapper pastewrapper calcmarkboundaries saveselwrapper undowrapper redowrapper update_undo_info update_redo_info store_for_undo_change take_snapshot stage_undo goto_mark goto_selection_start pop_position push_position get_position get_mark_object get_point_object save_selection restore_selection in_selection swap_point_and_mark pop_off_clipboard pop_clipboard push_clipboard get_staffs_in_clipboard get_last_change insert_clipboard get_clip_objs insert_object store_for_undo_measure_insert
slurs push_slur_stack top_slur_stack pop_slur_stack draw_slur draw_slur_start draw_slur_end
source open_source source_position
sourceaudio open_source_audio close_source_audio rewind_audio get_audio_sample audio_is_playing start_audio_playing stop_audio_playing get_audio_timing set_lead_in open_source_audio_file
staffops firstobjnode lastobjnode firstmeasurenode nth_measure_node_in_staff firstobjnodeinstaff setcurrentprimarystaff newstaff deletestaff beamsandstemdirswholestaff showwhichaccidentalswholestaff fixnoteheights newstaffinitial newstaffbefore dnm_newstaffafter dnm_newstaffvoice newstafflast signal_structural_change copy_staff
texteditors TEXTEDITORS_H executeScript create_scheme_window getSchemeText deleteSchemeText appendSchemeText getNumCharsSchemeText
tupletops newtupopen newtupclose tupletchangedialog
utils DENEMO_REMINDER DENEMO_CAUTIONARY HIGHLIGHT_OFFSET MAXEXTRASPACE LINE_SPACE HALF_LINE_SPACE NO_OF_LINES STAFF_HEIGHT LYRICS_HEIGHT MID_STAFF_HEIGHT LEFT_MARGIN KEY_MARGIN SPACE_FOR_TIME RIGHT_MARGIN SPACE_FOR_BARLINE HALF_BARLINE_SPACE WHOLE_NUMTICKS FONT TIMESIGFONT get_user_data_dir locateprintdir processenter drawbitmapinverse_cr drawfetachar_cr drawnormaltext_cr drawlargetext_cr drawtext_cr draw_for_directives space_after calculateheight offsettonumber mid_c_offsettolily mid_c_offsettoname mid_c_offsettooctave set_grace_numticks set_tuplefied_numticks set_basic_numticks setpixelmin freeit popup_menu warningmessage warningdialog infodialog progressbar progressbar_stop busy_cursor normal_cursor headerfields initdir get_system_data_dir get_system_locale_dir get_system_bin_dir get_system_font_dir get_executable_dir kill_process music_font set_title_bar score_status write_status confirm nullify_gstring string_dialog_entry string_dialog_entry_with_widget string_dialog_editor_with_widget string_dialog_entry_with_widget_opt string_dialog_editor_with_widget_opt note2lilynotename note2lilyaccidental note2lilyoctave chord2lilybaseduration chord2lilyduration chord2lilynumdots UTILS_H_PARAM_ASSIGN GET_1PARAM GET_2PARAMS GET_3PARAMS GET_4PARAMS get_option console_output get_override add_font_directory add_font_file get_prefix_dir run_file_association make_temp_dir remove_extension substitute_extension init_denemo_notenames get_widget_height get_widget_width switch_back_to_main_window use_markup DenemoShortcutType initialize_keystroke_help KeyStrokeAwait KeyStrokeDecline KeyStrokeShow MouseGestureShow KeyPlusMouseGestureShow display_current_object findnote get_label_for_command get_tooltip_for_command get_menu_path_for_command write_input_status cleftypefromname find_dir_for_file find_path_for_file find_denemo_file
view EXTRA_ACCELS INIT_SCM newview free_movements addhistorymenuitem LABEL highlight_rhythm unhighlight_rhythm highlight_duration highlight_rest highlight_audio_record loadGraphicItem activate_action execute_script_file activate_script create_scheme_function_for_script inner_main create_xbm_data_from_pixbuf get_icon_for_name upload_edit_script execute_init_scripts denemo_scheme_init execute_scheme modifier_code code_is_a_duration call_out_to_guile set_playbutton set_master_volume set_master_tempo toggle_to_drawing_area ToggleReduceToDrawingArea get_midi_control_command get_midi_pitch_bend_command hide_printarea_on_delete set_midi_in_status set_meantone_tuning update_leadin_widget update_tempo_widget append_scheme_call scheme_set_enharmonic_position define_scheme_variable define_scheme_int_variable define_scheme_double_variable define_scheme_bool_variable scheme_next_note finish_recording define_scheme_literal_variable eval_file_with_catch
xmldefs DENEMO_XML_NAMESPACE NONE_STRING PIANO_START_STRING PIANO_END_STRING CHOIR_START_STRING CHOIR_END_STRING GROUP_START_STRING GROUP_END_STRING CURRENT_XML_VERSION
denemo-2.2.0/docs/reference/denemo/PaxHeaders.19168/denemo-docs.xml0000644000000000000000000000013213135434036021605 xustar0030 mtime=1500919838.116648472 30 atime=1500919914.553315139 30 ctime=1500919913.676648472 denemo-2.2.0/docs/reference/denemo/denemo-docs.xml0000644000175000017500000001354013135434036023461 0ustar00jjbenhamjjbenham00000000000000 ]> Denemo Reference Manual for denemo stable 2013 The denemo authors Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy of the GNU Free Documentation License from the Free Software Foundation by visiting their Web site or by writing to:
The Free Software Foundation, Inc. 51 Franklin Street, Suite 500 Boston, MA 02110-1335 USA
Core API Index Index of deprecated API
denemo-2.2.0/docs/reference/denemo/PaxHeaders.19168/Makefile.am0000644000000000000000000000013213135434036020722 xustar0030 mtime=1500919838.116648472 30 atime=1500919914.553315139 30 ctime=1500919913.676648472 denemo-2.2.0/docs/reference/denemo/Makefile.am0000644000175000017500000000672413135434036022604 0ustar00jjbenhamjjbenham00000000000000## Process this file with automake to produce Makefile.in # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE=denemo # Uncomment for versioned docs and specify the version of the module, e.g. '2'. #DOC_MODULE_VERSION=2 # The top-level XML file (SGML in the past). You can change this if you want to. DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml # Directories containing the source code. # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk DOC_SOURCE_DIR=$(top_srcdir)/src $(top_srcdir)/include # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS= # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS= # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS=--xml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS= # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS= # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS= # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB= CFILE_GLOB= # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES= # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code IGNORE_HFILES= # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES= # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files= # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files= # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS= GTKDOC_LIBS= # This includes the standard gtk-doc make rules, copied by gtkdocize. include $(top_srcdir)/docs/gtk-doc.make # Other files to distribute # e.g. EXTRA_DIST += version.xml.in #EXTRA_DIST += # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt #DISTCLEANFILES += # Comment this out if you want 'make check' to test you doc status # and run some sanity checks if ENABLE_GTK_DOC TESTS_ENVIRONMENT = cd $(srcdir) && \ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) #TESTS = $(GTKDOC_CHECK) endif -include $(top_srcdir)/git.mk denemo-2.2.0/docs/reference/denemo/PaxHeaders.19168/denemo-overrides.txt0000644000000000000000000000013213135434151022674 xustar0030 mtime=1500919913.646648472 30 atime=1500919913.646648472 30 ctime=1500919913.679981805 denemo-2.2.0/docs/reference/denemo/denemo-overrides.txt0000644000175000017500000000000013135434151024533 0ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/docs/reference/denemo/PaxHeaders.19168/Makefile.in0000644000000000000000000000013213135434044020732 xustar0030 mtime=1500919844.283315139 30 atime=1500919914.576648472 30 ctime=1500919913.676648472 denemo-2.2.0/docs/reference/denemo/Makefile.in0000644000175000017500000007015413135434044022612 0ustar00jjbenhamjjbenham00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ DIST_COMMON = $(top_srcdir)/docs/gtk-doc.make $(srcdir)/Makefile.in \ $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs subdir = docs/reference/denemo ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/as-compiler-flag.m4 \ $(top_srcdir)/build/binreloc.m4 $(top_srcdir)/build/gcov.m4 \ $(top_srcdir)/build/gettext.m4 \ $(top_srcdir)/build/glibtests.m4 \ $(top_srcdir)/build/gtk-doc.m4 $(top_srcdir)/build/iconv.m4 \ $(top_srcdir)/build/lib-ld.m4 $(top_srcdir)/build/lib-link.m4 \ $(top_srcdir)/build/lib-prefix.m4 $(top_srcdir)/build/nls.m4 \ $(top_srcdir)/build/po.m4 $(top_srcdir)/build/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = @pkgdatadir@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ ALSA_CFLAGS = @ALSA_CFLAGS@ ALSA_LIBS = @ALSA_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EVINCE_2_0_CFLAGS = @EVINCE_2_0_CFLAGS@ EVINCE_2_0_LIBS = @EVINCE_2_0_LIBS@ EVINCE_2_30_CFLAGS = @EVINCE_2_30_CFLAGS@ EVINCE_2_30_LIBS = @EVINCE_2_30_LIBS@ EVINCE_2_32_CFLAGS = @EVINCE_2_32_CFLAGS@ EVINCE_2_32_LIBS = @EVINCE_2_32_LIBS@ EVINCE_CFLAGS = @EVINCE_CFLAGS@ EVINCE_LIBS = @EVINCE_LIBS@ EXEEXT = @EXEEXT@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ FLUIDSYNTH_CFLAGS = @FLUIDSYNTH_CFLAGS@ FLUIDSYNTH_LIBS = @FLUIDSYNTH_LIBS@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKSOURCEVIEW_CFLAGS = @GTKSOURCEVIEW_CFLAGS@ GTKSOURCEVIEW_LIBS = @GTKSOURCEVIEW_LIBS@ GUILE_1_8_CFLAGS = @GUILE_1_8_CFLAGS@ GUILE_1_8_LIBS = @GUILE_1_8_LIBS@ GUILE_2_CFLAGS = @GUILE_2_CFLAGS@ GUILE_2_LIBS = @GUILE_2_LIBS@ GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_EFFECTIVE_VERSION = @GUILE_EFFECTIVE_VERSION@ GUILE_LDFLAGS = @GUILE_LDFLAGS@ GUILE_LIBS = @GUILE_LIBS@ GUILE_LTLIBS = @GUILE_LTLIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBAUBIO_CFLAGS = @LIBAUBIO_CFLAGS@ LIBAUBIO_LIBS = @LIBAUBIO_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALEDIR = @LOCALEDIR@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_DATA_DIR = @PACKAGE_DATA_DIR@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ PORTAUDIO_CFLAGS = @PORTAUDIO_CFLAGS@ PORTAUDIO_LIBS = @PORTAUDIO_LIBS@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ RANLIB = @RANLIB@ RSVG_CFLAGS = @RSVG_CFLAGS@ RSVG_LIBS = @RSVG_LIBS@ RUBBERBAND_CFLAGS = @RUBBERBAND_CFLAGS@ RUBBERBAND_LIBS = @RUBBERBAND_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHTOOL = @SHTOOL@ SMF_CFLAGS = @SMF_CFLAGS@ SMF_LIBS = @SMF_LIBS@ SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ SNDFILE_LIBS = @SNDFILE_LIBS@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XML2_CFLAGS = @XML2_CFLAGS@ XML2_LIBS = @XML2_LIBS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ denemo_bin_path = @denemo_bin_path@ denemo_load_path = @denemo_load_path@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ installed_test_metadir = @installed_test_metadir@ installed_testdir = @installed_testdir@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE = denemo # Uncomment for versioned docs and specify the version of the module, e.g. '2'. #DOC_MODULE_VERSION=2 # The top-level XML file (SGML in the past). You can change this if you want to. DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml # Directories containing the source code. # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk DOC_SOURCE_DIR = $(top_srcdir)/src $(top_srcdir)/include # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS = # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS = # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS = --xml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS = # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS = # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS = # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB = CFILE_GLOB = # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES = # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code IGNORE_HFILES = # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES = # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files = # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files = # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS = GTKDOC_LIBS = @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) SETUP_FILES = \ $(content_files) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt EXTRA_DIST = \ $(HTML_IMAGES) \ $(SETUP_FILES) DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \ html-build.stamp pdf-build.stamp \ sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp #### setup #### GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; #### scan #### GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V)) GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; #### xml #### GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XML_0 = @echo " DOC Building XML"; #### html #### GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V)) GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; #### pdf #### GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; # This includes the standard gtk-doc make rules, copied by gtkdocize. # Other files to distribute # e.g. EXTRA_DIST += version.xml.in #EXTRA_DIST += # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt #DISTCLEANFILES += # Comment this out if you want 'make check' to test you doc status # and run some sanity checks @ENABLE_GTK_DOC_TRUE@TESTS_ENVIRONMENT = cd $(srcdir) && \ @ENABLE_GTK_DOC_TRUE@ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ @ENABLE_GTK_DOC_TRUE@ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/docs/gtk-doc.make $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/reference/denemo/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign docs/reference/denemo/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/docs/gtk-doc.make: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local cscopelist-am ctags-am dist-hook \ distclean distclean-generic distclean-libtool distclean-local \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-data-local \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local @ENABLE_GTK_DOC_TRUE@all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) @ENABLE_GTK_DOC_FALSE@all-local: docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp setup-build.stamp: -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ test -f $(abs_srcdir)/$$file && \ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ done; \ fi; \ fi $(AM_V_at)touch setup-build.stamp scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) $(GTK_DOC_V_SCAN)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ scanobj_options="--verbose"; \ fi; \ fi; \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi $(AM_V_at)touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) $(GTK_DOC_V_XML)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) $(AM_V_at)touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$(?)" = "0"; then \ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ fi; \ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ if test -f $(abs_srcdir)/$$file ; then \ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ fi; \ if test -f $(abs_builddir)/$$file ; then \ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ fi; \ done; $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(AM_V_at)touch html-build.stamp pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ mkpdf_options="$$mkpdf_options --verbose"; \ fi; \ fi; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ fi; \ done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) $(AM_V_at)touch pdf-build.stamp ############## clean-local: @rm -f *~ *.bak @rm -rf .libs distclean-local: @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \ fi maintainer-clean-local: @rm -rf xml html install-data-local: @installfiles=`echo $(builddir)/html/*`; \ if test "$$installfiles" = '$(builddir)/html/*'; \ then echo 1>&2 'Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo ' $(INSTALL_DATA) '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} @ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc: docs @ENABLE_GTK_DOC_TRUE@dist-hook: dist-check-gtkdoc dist-hook-local @ENABLE_GTK_DOC_TRUE@ @mkdir $(distdir)/html @ENABLE_GTK_DOC_TRUE@ @cp ./html/* $(distdir)/html @ENABLE_GTK_DOC_TRUE@ @-cp ./$(DOC_MODULE).pdf $(distdir)/ @ENABLE_GTK_DOC_TRUE@ @-cp ./$(DOC_MODULE).types $(distdir)/ @ENABLE_GTK_DOC_TRUE@ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ @ENABLE_GTK_DOC_TRUE@ @cd $(distdir) && rm -f $(DISTCLEANFILES) @ENABLE_GTK_DOC_TRUE@ @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html @ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc: @ENABLE_GTK_DOC_FALSE@dist-hook: .PHONY : dist-hook-local docs #TESTS = $(GTKDOC_CHECK) -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: denemo-2.2.0/docs/reference/PaxHeaders.19168/Makefile.am0000644000000000000000000000013213135434036017453 xustar0030 mtime=1500919838.116648472 30 atime=1500919914.599981805 30 ctime=1500919913.419981805 denemo-2.2.0/docs/reference/Makefile.am0000644000175000017500000000002113135434036021315 0ustar00jjbenhamjjbenham00000000000000SUBDIRS = denemo denemo-2.2.0/docs/reference/PaxHeaders.19168/Makefile.in0000644000000000000000000000013213135434044017463 xustar0030 mtime=1500919844.229981806 30 atime=1500919914.599981805 30 ctime=1500919913.416648472 denemo-2.2.0/docs/reference/Makefile.in0000644000175000017500000005267613135434044021354 0ustar00jjbenhamjjbenham00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs/reference DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/as-compiler-flag.m4 \ $(top_srcdir)/build/binreloc.m4 $(top_srcdir)/build/gcov.m4 \ $(top_srcdir)/build/gettext.m4 \ $(top_srcdir)/build/glibtests.m4 \ $(top_srcdir)/build/gtk-doc.m4 $(top_srcdir)/build/iconv.m4 \ $(top_srcdir)/build/lib-ld.m4 $(top_srcdir)/build/lib-link.m4 \ $(top_srcdir)/build/lib-prefix.m4 $(top_srcdir)/build/nls.m4 \ $(top_srcdir)/build/po.m4 $(top_srcdir)/build/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" pkgdatadir = @pkgdatadir@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ ALSA_CFLAGS = @ALSA_CFLAGS@ ALSA_LIBS = @ALSA_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EVINCE_2_0_CFLAGS = @EVINCE_2_0_CFLAGS@ EVINCE_2_0_LIBS = @EVINCE_2_0_LIBS@ EVINCE_2_30_CFLAGS = @EVINCE_2_30_CFLAGS@ EVINCE_2_30_LIBS = @EVINCE_2_30_LIBS@ EVINCE_2_32_CFLAGS = @EVINCE_2_32_CFLAGS@ EVINCE_2_32_LIBS = @EVINCE_2_32_LIBS@ EVINCE_CFLAGS = @EVINCE_CFLAGS@ EVINCE_LIBS = @EVINCE_LIBS@ EXEEXT = @EXEEXT@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ FLUIDSYNTH_CFLAGS = @FLUIDSYNTH_CFLAGS@ FLUIDSYNTH_LIBS = @FLUIDSYNTH_LIBS@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKSOURCEVIEW_CFLAGS = @GTKSOURCEVIEW_CFLAGS@ GTKSOURCEVIEW_LIBS = @GTKSOURCEVIEW_LIBS@ GUILE_1_8_CFLAGS = @GUILE_1_8_CFLAGS@ GUILE_1_8_LIBS = @GUILE_1_8_LIBS@ GUILE_2_CFLAGS = @GUILE_2_CFLAGS@ GUILE_2_LIBS = @GUILE_2_LIBS@ GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_EFFECTIVE_VERSION = @GUILE_EFFECTIVE_VERSION@ GUILE_LDFLAGS = @GUILE_LDFLAGS@ GUILE_LIBS = @GUILE_LIBS@ GUILE_LTLIBS = @GUILE_LTLIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBAUBIO_CFLAGS = @LIBAUBIO_CFLAGS@ LIBAUBIO_LIBS = @LIBAUBIO_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALEDIR = @LOCALEDIR@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_DATA_DIR = @PACKAGE_DATA_DIR@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ PORTAUDIO_CFLAGS = @PORTAUDIO_CFLAGS@ PORTAUDIO_LIBS = @PORTAUDIO_LIBS@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ RANLIB = @RANLIB@ RSVG_CFLAGS = @RSVG_CFLAGS@ RSVG_LIBS = @RSVG_LIBS@ RUBBERBAND_CFLAGS = @RUBBERBAND_CFLAGS@ RUBBERBAND_LIBS = @RUBBERBAND_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHTOOL = @SHTOOL@ SMF_CFLAGS = @SMF_CFLAGS@ SMF_LIBS = @SMF_LIBS@ SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ SNDFILE_LIBS = @SNDFILE_LIBS@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XML2_CFLAGS = @XML2_CFLAGS@ XML2_LIBS = @XML2_LIBS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ denemo_bin_path = @denemo_bin_path@ denemo_load_path = @denemo_load_path@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ installed_test_metadir = @installed_test_metadir@ installed_testdir = @installed_testdir@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = denemo all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/reference/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign docs/reference/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: denemo-2.2.0/docs/PaxHeaders.19168/TODO0000644000000000000000000000013213135434036014151 xustar0030 mtime=1500919838.053315139 30 atime=1500919914.609981805 30 ctime=1500919913.263315139 denemo-2.2.0/docs/TODO0000644000175000017500000000372613135434036016032 0ustar00jjbenhamjjbenham00000000000000- Tuplets need to reflect the speedy keyboard shortcuts (added Sun May 15 20:06:49 2005, incomplete, priority high) - The customize keybindings section needs to be written (added Sun May 15 20:07:07 2005, incomplete, priority high) - Once the gui has stabaliezed to write a short overview of the gui for the "Getting to know the Denemo interface" section (added Sun May 15 19:58:48 2005, incomplete, priority medium) - When I can build a new cvs and check the template dialog I will expand the Templates section (added Sun May 15 20:00:29 2005, incomplete, priority medium) - Rewrite the Accidentals section so that it has them actually add Accidentals in a step by step manner. (added Sun May 15 20:01:23 2005, incomplete, priority medium) - The entire chord section needs rewriting to reflect the speedy shortcuts keybindings and to be more logical. (added Sun May 15 20:01:48 2005, incomplete, priority medium) - The Editing sections needs a section on replace mode as well as disscussion of editing besides copy and paste. (added Sun May 15 20:02:16 2005, incomplete, priority medium) - The expression section needs some paragraphs about adding the expressions in the chart and a graphic to accompiany it. (added Sun May 15 20:02:40 2005, incomplete, priority medium) - The Repeat section needs writing (added Sun May 15 20:02:56 2005, incomplete, priority medium) - Assuming Timidity is the preffered playback method the Midi section needs to be rewritten. (added Sun May 15 20:03:09 2005, incomplete, priority medium) - Publishing needs new screen captures for everything. (added Sun May 15 20:06:22 2005, incomplete, priority medium) - If there isn't a Lilypond mode then the Working with lilypond files section needs to be deleted. If not it needs to be made active. (added Sun May 15 20:07:31 2005, incomplete, priority medium) - When I can get the cvs to make with the analysis plugin and niff (added Sun May 15 20:07:48 2005, incomplete, priority medium) denemo-2.2.0/docs/PaxHeaders.19168/denemo-manual.html0000644000000000000000000000013213135434036017071 xustar0030 mtime=1500919838.059981806 30 atime=1500919914.609981805 30 ctime=1500919913.263315139 denemo-2.2.0/docs/denemo-manual.html0000644000175000017500000126326713135434036020763 0ustar00jjbenhamjjbenham00000000000000 Denemo User Manual

Denemo User Manual

Richard Shann

This Manual is released under the Creative Commons Attribution-Share Alike 3.0 Unported license.
Copyright © 2009, 2010, 2011, 2012, 2013, 2014, 2015 Denemo Project
Updates for version 2.1


Table of Contents


Part I. Getting Started

Introduction

Denemo lets you create musical scores. You can type music in using the keyboard or play it in using a MIDI contoller or the microphone input. You can edit your music – the input display window shows you what you are working on in music notation – and you can playback to check how it sounds. The Print View window shows the final printed score, typeset to the highest standards used in the music publishing industry – thanks to the Lilypond music typesetting program.
This separation of the final typesetting window from the input display avoids the constant dragging about of overlapping notation which is typical of music notation programs. It also means you are less likely to input a slur when you mean a tie, or a whole note rest when you mean a whole measure rest, for example – these often look similar in the typeset and are easily confused, but Denemo’s input display makes clear the distinction. Nevertheless, if you do wish to tweak the appearance dragging and re-positioning of some notation is possible on the final typeset display.

Some Terminology

Besides the terms well-known to musicians, music notation has some specialized names and Denemo uses some terms with specific meanings which you should know:

1 Input Methods

Most people will start with playing around with Denemo using the mouse, but by the time you are reading this you will want something more efficient. Try using the pc keyboard. By default, keys a-g represent the note names and 0-6 the different durations (whole note, half note etc). When the cursor is appending (blue) pressing key 0 will insert a whole note at the cursor. Pressing the a key will append the nearest A. If the duration of the next note is the same you can simply type the note name, it will use the last entered duration. There are keypresses (+/-, and plus/minus on the numeric keypad) to set sharp/flat/double-sharp/double-flat for the next entered note and to sharpen or flatten. Use +/- with the shift key to sharpen or flatten an existing note. Likewise, Shift with a number key edits the duration of a note.
When the cursor is moved on to a note (with the arrow key or mouse) the cursor turns green and then a-g edits the note name. To insert a note before a note at the cursor use a double strike A,A-G,G. When the cursor is green the keys Shift-20-6 change the duration of the note, while 0-6 insert a note before the cursor. (If you use the numeric keypad you can use Shift-KP 0-6 for this). The arrow keys move the cursor around, the period key adds a dot while Alt-a-g add notes to the chord at the cursor. Ins inserts a note in a chord whether the cursor is on (green) or after (blue) a note, a double Del, Del removes it.
When in the appending position the cursor shows as a large blue or red rectangle on a note-position. Blue indicates a note can be appended at that point without overflowing the measure. Red indicates that the measure is already full. When the cursor is a smaller green rectangle it indicates that you are not in the appending position: you can edit the note/object at the cursor or insert before it. The vertical blue line indicates the insertion point.
For a more detailed description of Denemo’s various input methods, see A Survey of the Input Methods↓. You can find more shortcuts by exploring the menu system – e. g. under the Notes/Rests menu the Select Duration submenu gives Remove Dot with the shortcut Control-period shown in blue next to the command.
Alternatively, a list is available in the Help menu. There are thousands of commands in Denemo, so get to know the Command Center where you can search for commands by key words such as slur, ossia, beam, Da Capo, cresc. etc.
Initially, Denemo starts with tooltips popping up almost everywhere. When they become too annoying you can tame them with Help->Turn Excessive Tooltips (Off/On), and you can further delay the remaining tooltips appearing via Edit->Change Preferences.
And once you have stopped playing around with the mouse for entering notes you can hide the palettes at the side to give more room for the music display (right click and Edit Palette).

1.1 Some Common Keyboard Shortcuts

Here are a few of the keyboard shortcuts that are commonly used in Denemo.
Two-key shortcuts are also available such as "B,s" for start repeat barline↓ and "B,e" for end repeat barline. An alternative set of shortcuts for a-g and 0-6 is available via the Input menu.

1.2 Some Common Mouse Shortcuts

Here are a few of the mouse shortcuts that are commonly used in Denemo (keyboards may vary, for control, shift, alt etc modifiers). Note that under the Input menu is an option to turn on more mouse-friendly buttons, this is the default for Windows users.

1.3 Some Common Uses of MIDI in

The MIDI keyboard too can be customized to perform different actions. Usually, playing notes adds or edits the score (like hitting note names at the pc-keyboard). With the sustain pedal pressed chords are generated (the Alt key can be used for this too). If the interval between the notes played is augmented or diminished it is played on a different channel, so that you are alerted to possible pitch spelling errors (e. g. inputting A-sharp for B-flat). By holding down the Ctrl key a score can be checked by playing the notes – the cursor only advances if the correct note is played, and the Shift key can be held down to route the MIDI keyboard straight to the output (e. g. to check a phrase before playing it in). There is a button in the MIDI-in Controls to do this too, as well as a control to set the range of sharps and flats to be used. With the “Use Rhythm Entry for MIDI in” checked, the duration keys create pure durations (notes colored yellow/brown) – you can enter as much of the rhythm as you wish, and then play the notes on top.

1.4 Note and Rest Entry Palettes

On starting Denemo for the very first time a series of palettes are placed near the main window with buttons to insert and change notes. For more serious use these just waste space, so by right clicking on them and choosing Edit this Palette they can be hidden.


Part II. Using Denemo

2 General Concepts

The unit of work in Denemo is a musical score, which can be saved in a single file (with .denemo suffix). This is represented on the screen by a "tab". If you have several tabs open at once they appear just above the music in the main window, and you can switch between them by clicking on the tab.
One score may contain several movements, which you can move between (PgUp, PgDown), insert duplicate, merge and delete with the Movements menu. A movement is a continuous piece of music with titles etc.
When you have more than one movement numbered buttons appear in the score titles bar for you to navigate by. The first thing on the status bar after any pending accidental↓ is the movement number.
In the top corner of the Display is a flag icon which sets values that apply to the whole movement. Here you can control which staffs are visible in the display, which are muted on playback, and edit any other properties of the movment.
Within a movement there are staffs (arranged vertically). Each Denemo Staff has in turn a Denemo Voice↓ and within the voice are the Denemo Objects. These can be notes, chords, key changes, time signature changes, voice change objects and Denemo Directive objects (see Denemo Directives↓). The staff properties include things like the number of lines (usually 5) the MIDI instrument sound for playback and the amount of space allotted in the display for the staff. Before each staff are buttons to control properties of the staff – flags to set for visibility, mute, non-printing and the staff number which can be clicked to edit other staff properties.
The notes and chords are displayed in conventional format (though not fully typeset). The position of Denemo Directive objects in the music is marked with a “stick and blob” and it is accompanied either by a drawing (e. g. of a double barline) and/or some text to describe it. These are used for most things that are not chords or notes etc: Metronome marks, repeat barlines etc are good examples. In this example the caesura is a Denemo Directive object marked by the stick and blob before the last note and drawn on the staff in an approximate representation of its typeset appearance.
figure images/DenemoDirectives.png
Denemo Directives can also be attached to chords, individual notes in a chord, to a staff, to a movement or to the score; in these cases the directive can be thought of as an attribute of the object it is attached to. In the above example the trill sign is attached to the second note and this directive can be inspected and edited using the Object Inspector10↓ and Object Editor 11↓. Denemo Directives attached to the staff, movement or score can be inspected/edited too, using the relevant editors 12↓, 13↓.
If there is more than one voice on a staff it is best displayed on a separate staff in the Denemo Display, for ease of editing – the clef is drawn pale and there is no time signature for such extra voices so it is easy to understand what is going on. The Print Preview window as usual shows the final typeset appearance. The clef in this case only affects the display, and any time signature or key signature set on it would also only affect the display.
In the Denemo display a cursor shows where the next note will be entered/edited. It is red for an over-full bar, blue for appending into an under-full one and green when editing (i. e. on an already entered object).
The menus in Denemo are unusual: they not only let you do some particular action, but also each menu item lets you add the command to a palette, enquire what the action does in more detail and set keyboard/mouse shortcuts for the action. A single keystroke can be set as a shortcut simply by pressing the key while the menu item is selected. All the extra functionality of menu items can be accessed by right-clicking the menu item, while the usual left click is for executing the action itself. The menus can always be torn off for working with particular items (e. g. working with different movements or with measures, dynamics etc.). When you place a command in a palette you can add to an existing palette or create a new one – you can choose or create any number of these, free-floating or docked in the main display. Also available by right-clicking is creating new actions – often by modifying ones that are already there – using the Scheme scripting window.
When a file is loaded it opens at the point where you left off editing it. The position and size of the window is restored as well as the position and size of the source pdf you are transcribing from.


3 Denemo Main Window

Figure 1 Denemo Main Window
figure images/denemomain.png
The main window has menus and toolbars at the top, and palettes at top and/or right hand side. Which menus and palettes are shown are selected via the View menu. At the bottom is a status line showing which movement you are in and what sort of object the Denemo Cursor is on. If there are any MIDI filters active or other messages they will be noted at the right in the status bar.
In between is where the music input is displayed, the Denemo Display area. When zoomed out you see just the few measures you are working on. By dragging the red bar at the bottom of the score upwards you get space for more of the music. If you have many staffs they may not all fit: you can still scroll the display to see several lines of just one or two staffs for instance.
You can hide staffs in the display if needed using the Staffs->Display Effects menu. If you need more room you can hide the menus (using the View Menu, shortcut Esc key), and arrange a “page view” of the input music – useful when using playback.
At the start of each staff are the staff tools: the flag icon lets you set whether the staff will be muted or non-printing and various other properties set on the staff; below that the staff number can be clicked to edit the Denemo Directives which you have installed on the staff. All these are available from the Staff/Voices menu.

3.1 The Denemo Display↓

The area showing the input music is called the Denemo display. It shows staffs and voices and the music interspersed with any Directives. The background is grayed out when the focus is elsewhere – click on the display to start typing in notes. The background is also colored when input from any attached MIDI keyboard is not being used for appending/editing the score (as it is by default).
The default view has a single system stretching off the sides of the window – the actual division into lines and pages for the typeset score is done in the Print View7↓. In order to see more of the music on the screen at one time there are three changes to the default view you can make. Firstly by pressing the Esc key you can switch between three views, two of which have no menus taking up space. At the bottom of any of these is a red line which can be dragged up to split the display into separate lines. Using this you can display more bars of music at the expense of seeing more staffs for each system (the scrolling allows you to choose which staffs to concentrate on). As usual, this division into lines has nothing to do with the typeset view – widening the window will change the positions of the “line breaks” but have no effect on the final typeset score. Actual line breaks in the typeset are managed by the LilyPond typesetter and can be overruled by commands in the Directives menu.
The second way of getting to see more of the music is simply to zoom the Denemo Display (Ctrl-mouse wheel is best). Again this is purely for the input display – you use commands in the Score and Directives menu to control the size of staffs, titles etc. in the final typeset score.
Lastly with large (deep) scores – orchestral scores for instance – you may want to hide staffs in the display while you work on others. For example, you may want to hide all but the woodwind section. The commands for this are in the Staffs menu – you may want to change the keyboard shortcuts for navigating staffs (Ctrl-up arrow etc) to invoke the staff moves that skip over hidden staffs in this case.

3.1.1 The Page View

The third of the three Denemo display modes that you get with the Esc key is called the Page View – it is set up initially with a small zoom factor and several systems showing. In this view the cursor highlighting has a large green circle around the cursor position and the display will animate during playback. As the music starts playing the second system down the page the top of the page is “turned over” so that, as you reach the bottom of the page your eye can move up to the top of the page and follow the music on. Once the music starts again at the top of the new page the rest of the page is filled in replacing the old page.

3.1.2 Transition Animation

One of the problems with moving about a score looking at the input music is that it can be difficult to see quickly where the cursor has moved to. An even more tricky situation arises when deleting empty measures – often the next measure is empty too, so it can appear that nothing has happened, it seems the command to delete a measure isn’t working. What has happened is that another empty measure has moved in from the right and the display looks unchanged.
To avoid these problems these transitions are animated – the measure coming in from the right can be visually seen to shunt in from the side; similarly staffs move up from below and the cursor arrives at its new position by shrinking onto it. All these animation effects (and the page animation of the previous section) can be turned off via View->Highlight Cursor.

3.2 The Main Menubar

The Main Menubar has menus for overall control of the program. It contains the following submenus:

3.2.1 File

Use the File menu to perform global operations related to storing and retrieving from file systems, importing from MusicXML↓, MIDI, and LilyPond↓ formats, printing full score or parts, exporting to MIDI, Ogg, Wav, LilyPond↓ (parts or score), PDF and Png formats. This is also where you open PDF files containing source material – e. g. manuscripts – that you wish to transcribe or proof-reading comments you wish to incorporate in your score. Another sort of source material can be loaded from here – audio files can be loaded for transcribing as well as MIDI files.
The New command starts a new score, while New Tab creates an empty score while leaving the current score open – a line of tabs appears at the top of the display for switching between these. Note that you do not have to have multiple scores open to copy and paste↓ between scores – opening a new score does not alter the clipboard.

Open Submenu

The Open command (Ctrl-o) opens a Denemo file for editing. Open Template opens one of the templates provided with Denemo – this is like open except the file once opened becomes untitled, forcing you to give it a name on saving. Open Example is similar, but here the scores are intended as examples of how to do particular things – they can also serve as a place to copy and paste from. Open Custom Template opens the directory where templates you have created with Save Template are stored. If you create a template called Default.denemo then the command Open Default Template will load it (Ctrl-n). Add Staffs and Add Movements take staffs or movements from the Denemo file chosen and add them to the current score. Open inNew does a combination of New Tab and Open.
Open Proof Read PDF↓ is for adding proof reading annotations into your score, see section 22↓.
Open Source for Transcribing allows you to open the source material you are transcribing from so that links can be placed in your score to the relevant place in that document. For more details see the section 21↓
Open recent gives access to a list of recently open scores (you can control how many via the preferences).
Open Source Audio loads an audio file creating empty measures with the audio displayed as a series of note-onsets in a line at the top of the display. The note-onsets can be dragged to achieve synchronization and tempo-matching between the notated bars and the audio. You can then add the notes (by ear) and play the two in sync to listen for discrepancies. This is best explained by the video demos (see www.denemo.org).
Open Source MIDI opens a MIDI file it comes with comprehensive instructions. Note that many MIDI files are not suitable for transcription – MIDI describes sounds, not notation.

3.2.2 Navigation

This has the commands for moving the cursor around the score, bookmarks, and seeking places in the score by content (“search”).

Bookmarks

The commands cover finding the next/previous bookmark↓ and moving to a bookmark by name.

Cursor

This includes moving the cursor by measure, staff, and within a chord. There are moves that skip staffs that are hidden in the display and ones that skip over staffs that are voice↓s to move to the next primary staff.

Seek

This has a commands to search for rhythmic patterns, note sequences, empty measures, next higher/lower note, empty measures … The search facility includes the equivalent of “search and replace”: by recording a sequence of edits in the Scheme Window, the searched for items can be edited by choosing the Execute Scheme option when found.

MIDI

These are commands to move along the note onsets in an imported MIDI file (guided MIDI import).

3.2.3 Edit

The Edit menu collects command for editing: mostly editing objects in the display, the Denemo ObjectsDenemo Objects↓but also editing global properties of the score and your preferences.
There are commands for deleting the object before the cursor, the object at the cursor and for partially deleting from the object at the cursor (e. g. deleting notes from chords). Other delete commands are in the Object Menu (deleting movements, staffs, measures etc).
There are commands for editing all the Denemo Objects of a chosen type across the whole of a score. Commands for managing the selection↓ are also here. Editing using the keyboard to invoke a palette button is here too (usual shortcut is p).
Here, too, you invoke editing the Preferences↓.
The NotationMagick submenu is for generating random notes, reflecting, reversing, shuffling notes etc – the sort of things computers can do with music easily but humans find more difficult.

Copy/Cut and Paste↓

The usual shortcuts (Ctrl-c Ctrl-x Ctrl-v) are set by default operating on the selection ↓. With no selection the Copy command copies an attribute attached to the note/chord at the cursor, such as an ornament or fingering. If there is more than one attribute set you are asked to choose which to copy. If there are none, the object at the cursor is copied. In all cases the copied item is highlighted in green so you can be sure that your keypress has been “heard”.

3.2.4 View

Use the View menu to toggle toolbars and palettes used with the mouse.

Hide/Show Menus

Three ways of showing the Denemo display↓ area are supported. With/without the menus and as a multiline page (actually, any page can be a multi-line page, but usually the third one is chosen for this). This command cycles through the three displays – usually the Escape key is the shortcut.

Typeset Music

Shows the score as engraved by the LilyPond typesetter in the Print View window. Some things such as the shape of slurs and position of marks can be edited here graphically.

Playback

Shows the score engraved on one (long!) page for playing back. You can click on a note to start playing back at that point, or drag over a range to play that range, or shift-drag to loop over the range. All the standard playback controls (see below) also work on this view.

Command Center

Search for commands by entering likely words, set up one key or two key shortcuts, load customized shortcuts or commands …

Score Layout

Show the score layouts associated with this score. The score layout is the final section of the LilyPond syntax that describes how to layout the staffs, voices, lyrics, titles etc.

Snippets

Shows a menu bar with snippets – a selection of Denemo Objects used either for pasting or to define a rhythmic pattern to be followed when entering pitches. (see section 6↓)

Tools

The conventional icons for Open, Print etc

Playback Controls

When checked a set of playback/record controls are placed above the display (see section 3.4↓)

Midi In Controls

When checked a set of controls for a connected MIDI keyboard are placed above the display (see section 3.5↓)

Score Titles, Controls etc

If this is checked any Titles, indent settings etc applying to the score and movement can be shown as buttons above the display. (They must be created with their graphic field set for this, not all commands use that, so nothing may show).

Object Menu

Menus of all the Denemo commands listed under type of object from Score down to the types of Denemo Objects (e. g. clef change objects, notes …).

LilyPond↓

Pops up a window for customizing the syntax that Denemo generates for the LilyPond engraver to typeset and viewing any errors LilyPond reports.

Scheme Script

Pops up a window for showing scripts written in Scheme↓. These can be executed or saved as new commands. Sequences of commands can be recorded here.

Score

This hides/shows the main Denemo display↓ . This is probably useless for most people, but might help a very old slow machine playback smoothly.

Cursor Highlighting↓ (Off/On)

The cursor flashes, and in the page view3.1.1↑ it is circled. The rate of flash is set in the Preferences. The cursor animation is turned on/off with this too.

Palettes

Gives access to palettes of buttons that can be arranged to make commands available via mouse or keyboard (via the Activate Palette Button command).(see section 4↓)

Display Zoom↓

Zoom the main Denemo display (usually done with ctrl-mouse wheel).

Object Inspector

Opens the Object Inspector10↓ on the current object.

3.2.5 Input

Use the Input menu to select external sources (Audio from the Mic input or MIDI) for inputting notes to Denemo. To use these you should review the settings in Edit->Change Preferences MIDI and audio tabs first – change the setting for the backend from “default” to the specific controller you have.
Here too there are commands to change the way the inputs (keyboard, mouse and MIDI) behave.

3.2.6 More

Use the More menu add commands to Denemo. Extra commands are available (those which not everyone will want) via this menu. More Commands gives commands shipped with Denemo, while My Commands gives ones that you have created locally. Note that the extra commands can also be loaded at the menu where you are looking for them (you right-click on a menu item, and if there are more commands for that menu the More Commands for this Menu item will show),

3.2.7 Playback

Use the Playback menu to listen to the current movement. Denemo lets you hear your score, using an internal synthesizer. There are commands to play through the all the notes or to observe repeats or to play just the chord or notes at the cursor and to play at a shifted pitch. The default playback is quick and simple rendering of the music – good for checking pitch and rhythm. For more sophisticated playback open the Playback View9↓ where the playback happens on a fully typeset score.
Playback uses a pair of marks to decide where to start and stop playing. These appear in the display as vertical green and red lines down through the notes concerned when the playback control panel is visible. These markers can be moved about by the arrow buttons on either side of the play button in the Playback Controls 3.4↓ and they are set for you by the Play from Cursor to End, Play Music at Cursor, Performance and other commands in this menu.

3.2.8 Educational↓

There are games and exercises to help learn notation and to improve your recognition of intervals. Mostly quite simple, but a more sophisticated example is a command that loads Handel’s figured bass exercises and allows you to try them out, recording your playing and then reporting on any parallel intervals. Teachers with an interest in programming can create further games using the Scheme window and save them for use by their pupils.

3.2.9 Help↓

Use the Help menu to get help using Denemo. A list of the shortcuts is available (including any you have set yourself), a feature-packed score can be loaded, the excessive help can be tamed, and your browser can be launched on the Denemo chat room for asking questions directly from other users.

3.3 Toolbar

Use the Toolbar to access common Denemo commands via a mouse click. The Toolbar contains the following icons:
figure images/new.png Creates a new document.
figure images/open.png Opens the Open File dialog box.
figure images/save.png Saves the current file
figure images/print.png Runs LilyPond to convert the current file to PDF and sends it to the printer for printing
figure images/gotobegin.png Jumps to the first measure of the movement.
figure images/gotoend.png Jumps to the last measure of the movement.

3.4 Playback Controls↓

figure images/playbackcontrols.png
As with all controls and menu items you should hover over the buttons with the mouse to get an explanation of what they do.
The playback starts at the playback start marker (a line in green down the score in the Denemo Display) and stops at the playback end marker (a red line). These lines are not displayed all the time, just once the play has been used at least once. The start/end markers can be altered with the arrow keys on either side of the Play and Record buttons. The arrows to the left adjust the playback start, those to the right the playback end (hover over the arrows for details).
The Play Selection button plays the selection or, if no selection plays from the Denemo cursor position to the end.
The Mute Staffs button allows you to select groups of staffs to play, muting others.
Always Full Volume if checked means that the dynamics↓ in the piece are ignored – good for checking note pitches are correct.
Playing of sections of the music and looping is possible (including editing as the music loops, so that you can listen to different possibilities) as well as recording the audio output (mixed with anything you play on your MIDI keyboard if you have recording set in the MIDI controls).
The master tempo↓ and volume can be set, which will be overridden by tempo and dynamics placed in the music.
Recording the audio output is also possible as well as real-time slow down of the audio playing back (not to be confused with simply setting a slower tempo!). This last is used when transcribing from audio (See File->Open->Open Source Audio).
While playing back the note(s) being played are highlighted – the page view mode3.1.1↑ of the Denemo Display is useful for letting you follow the music in the input display. You may need to adjust the window size and the division into systems (drag the horizontal red divider) to get a good effect from this.
Playback is not restricted to equal temperament – the drop down menu allows you to choose from a variety of historic temperaments for playback.
All these commands can be used in conjunction with the Playback View window, which lets you see the playback animated on a properly typeset score. And you can also initiate playback from the Typeset View by clicking on noteheads there.

3.5 Midi In Controls↓

figure images/MidiInControls.png
These are the controls for a MIDI keyboard attached to the computer. You should set the MIDI InputDevice to your device in the Preferences to be sure all features are working.
The Enharmonic Selection control lets you determine what accidental will be used for the MIDI notes – e.g whether to enter C-sharp or D-flat. The buttons at each end change the enharmonic range sharper/flatter.
As you enter music if you enter an augmented or dimished interval a different instrument is used for the playback which helps you avoid pitch-spelling errors. (See Edit->Change Preferences->Audio pitch spelling channel/program 15.6↓ to turn this off/change instrument).
[Appending/Editing] button: This shows how MIDI in will be treated. Press Control/Shift/Alt keys to modify or click and select Listening to input MIDI, Checking notes in the score against input MIDI or Appending/Editing at the cursor.
[Switch to Play Along Playback] button: When you press Play with this option set, the music will not advance past the cursor until you play the note. (Mute the current staff to prevent double sounding of notes)
The [record] button allows you to record from your MIDI keyboard while the score is playing back. (Press MIDI record button then start playback). Once the playback is stopped anything you have played on the MIDI keyboard has been recorded and two buttons Convert and Delete will appear. If you press start playback again (without record) the MIDI recording will be played back with the score, once you are happy with it then it can be converted to notation or if, you want to try again, deleted.

3.6 Object Menus

The object menu bar gives a set of menus give ordered by the objects (notes, staffs, measures …) that they relate to. This division cannot be perfect – some activities could be placed in different menus, so you need to be prepared to search for commands using the The Command Center↓Command Center.
Note: Dynamics, Slurs, Trills, Tempo Indications etc are in the Notes/Rests menu (if attached to a note or chord) or Directives menu (if standalone objects) . The advantage of attaching them to a note is that they can be moved around as a unit, but the standalone objects are generally easier to drag in the Print View should that be needed.

3.6.1 Score Menu

The score menu lets you control things that apply to all the movements of the current score. Also here is the Check Score command which should be your first port of call if your score will not typeset.
The Score Properties command gives access to some built-in properties that affect the whole piece – paper size and display apperance.
The Score Properties Editor command runs the 12↓Score and Movement Properties Editor, open on the Score Editor pane.

Titles↓ Submenu

There are two sorts of titles. Book titles have a separate title page with titles for individual movements which can be listed in an automatically generated table of contents. Simple titles give a Title and (optionally) movement titles on the same page.
Comments (“Critical Comments”) can be placed on chords/notes/rests in the score and these can be automatically collected into an appendix using the Book Titles->Epilog submenu.
A Table of Contents can be automatically generated from the movement titles by setting Book Titles->Table of Contents Title.
Graphic title pages can also be created. These can be created by invoking the Inkscape vector graphics editor from within Denemo, or using it externally to create the title page. A sample title page is included both as an encapsulated postcript (EPS) file and as a scalable vector graphics (SVG) file. The latter is the form to use for editing the page to suit your needs, but it should also be saved as an EPS file as this is the format used to include it in the typeset score.

Typesetter Submenu

Here such things as the overall font size to typeset the score, the rules for spacing systems and titles, any global transposition, control of page numbering, margins etc can be set.
The beaming↓ rules can be set both in general (invoke Set Beaming Rules without a selection) or with exceptions (by invoking with a selection that has been beamed manually using the [ and ] commands from the Notes/Rests->Beaming menu). Use this latter to break up very short notes, for example, that would otherwise be beamed together while leaving the longer durations as normal.

3.6.2 Movements Menu

As with the Score Menu there may be Denemo Directives attached to the movement – e.g titles↓ to be placed at the head of the movement will have a Denemo Directive associated with them. Other controls that can be applied on a per-movement basis include the barline↓ and notehead style, printing of a custos at line ends, the indent↓ before the first system (which can also be set on the score-wide basis).
Various score checking routines work at movement level from this menu and a command to re-bar the movment (or a staff or part of a staff) is also here as “Adjust the Measure Lengths” – this can also be used just to check that the Denemo “measures” correspond with the actual typeset measures (which always follow the durations/time signatures) or to re-bar a staff or passage or movement if you have changed your mind or got out of step.
Again there are titles menus for either simple or book titles, and for inserting graphics between movements. These can be used as decorative separators between movements or to insert columns of verses at the end of songs (each song is a separate “movement”).
The Typesetter submenu for the Movements Menu holds commands that affect the current movement: per-movement transposition, inserting blank pages↓ (to avoid page turns), page breaks↓, custos↓ at the end of lines, note head style to apply to the whole movement, behavior of staffs that are resting for an entire system etc. Also here is a command to allow polymetric staffs↓. When set time signatures can differ between staffs, and barlines do not have to align across an entire system. Denemo’s display copes with showing polymetric staffs on the whole, though you may need to use Measures->Hidden Measure to even up staffs in the display and mark measures with Measures->Ignore Measure Duration Error to prevent them being colored in the display.

3.6.3 ↓Staff/Voices Menu

Things such as the music crossing to another staff, or Ossia↓ staffs are contained here, along with commands for deleting parts of the staff, setting up multi-measure rests for a whole staff, muting the staff during playback,

The Staff Properties↓ Submenu

This covers such things as the type of staff (e. g. Normal Notation, Tablature, Chord Symbols, Fret Diagrams) as well as the staff appearance and the playback instrument, instrument name or ambitus to be typeset at the start of the staff and more.
For historical reasons, some properties such as part-name are “built-in” and have their own dialog to set the values. All can be accessed from the Staff Properties Editor↓ from this menu.

The Add Staff Submenu

This allows adding staffs to the current movement. Piano staffs can be added as well as specialized sorts of staff for dynamics↓, marks (so that they appear once for all layouts), and coulés (diagonal lines positioned between thirds in some music). The Add Structured Staff command duplicates the current staff with regard to measures and time signature changes, ready for the insertion of music. Add Staff for Instrument allows you to add the staff(s) needed for various instruments (e. g. organ) with the ranges of acceptable notes for the instrument set on the staff(s).
Staffs with “mirrored” music can also be added. In this case the staff does not have music of its own, instead the music mirrors that in another staff. By setting the part-name↓ on such a staff a greater variety of parts can be printed from one score without needing to create a custom layout↓ for them. For example, two flute parts can be printed separately and as a combined (“divisi”) part, using the same music. Any marks etc that need to be handled differently can be made conditional↓ on the part name.

The Voices↓ Submenu

Voices in Denemo are like staffs but are typeset on the preceding staff to achieve single-staff polyphony. The Denemo Display is normally set to display any extra voices on a separate staff so as to make it easy to work with – the voices have their clef↓ displayed in yellow and do not show a key signature↓ as these are supplied by the main staff (or “primary voice”). Voices will also normally be assigned to voice numbers 1,2,3,4 using the Initial Voice commands in this menu (this controls the stemming, slur positions etc). Voices can change their voice number during the music – the commands for this are in the Directives->Typesetter->Voices menu as they insert stem change objects in between the notes.
As with staffs, voices can be created with no music of their own, simply mirroring music from another staff.

The Display↓ Effects Submenu

Here you can choose to hide staffs from the display so that you can see distantly placed staffs side by side (e. g. in large orchestral scores). The location of such “hidden” staffs↓ is indicated by a colored line between the staffs above and below. The staffs remain hidden until you move the cursor on to them. If you are using this and navigating with the keyboard you may want to reset the key shortcuts for staff navigation commands to use variants that skip over the hidden staffs. Some staffs (e.g Click Track↓ are hidden by default as you do not normally edit them.
You can also give more/less room in the display to the staffs via this menu.

The Staff Groupings (Braces) Submenu↓

The braces at the start of each system are controlled from here. The order that you add the braces determines which are outside which. The braces are displayed to the left of the staff and can be edited/checked there with the mouse.

3.6.4 Clefs↓ Menu

All sorts of clefs can be selected – the Set Initial and Clef Change commands give access to standard clefs. The Clef Chooser command lets you set more exotic clefs such as Drum clef and even things like the Gregorian chant C clef using the LilyPond syntax (e. g. vaticana-do3).
Typeset-only and Display-only clefs enable you to work with a voice↓ which is being typeset on a different staff, while keeping the music in the staff you wish to see it in or for entering music in a familiar staff which is to be typeset in an unfamiliar one.

3.6.5 Keys Menu↓

Setting the initial key or a key signature change or to sharpen or flatten the key signature at the cursor. You can also click on the key signature itself to sharpen/flatten. The key signature can be hidden when typeset.

3.6.6 Time Signatures Menu↓s Menu

Besides basic time signatures various variants (numeric, single digit …) are here. There is also beaming↓ control applying just to the current passage (for beaming rules for the whole score see the Score->Typesetter menu or for the whole movement Movement->Typesetter menu).
Cadenza Time allows un-metered music to by typeset conveniently. While in Cadenza Time no barlines except ones you explicitly place are typeset, and no beaming is done except where you explicitly set beaming indications. You can use as many Denemo “bars” as you find convenient – they will not cause barlines to be typeset. Other parts have to be given Cadenza Time too, and filled with non-printing rests to match the duration of the music being typeset.

3.6.7 Measures Menu↓↓ Menu

Besides commands to insert/delete/navigate/merge/split measures (in one or all staffs) this menu includes commands to set an upbeat↓↓↓ (anacrusis, pickup) measure at the start, or a short measure (e. g. during partial first & second time bars). First and second time bars markers themselves are to be found in the Directives->Markings->Spanning menu.
The whole measure repeat sign is here and some commands to check the measure for errors or to widen or narrow the measure in the display.

3.6.8 Chords↓ Menu

Here are commands to add notes to a chord either at the cursor, by note name or at an interval above the bass. Whole chords can have their enharmonic spelling changed up or down.

3.6.9 Notes/Rests Menu↓↓

This covers inserting, deleting and modifying notes in pitch, duration and appearance and all sorts of things that are attached to note objects such as slurs↓, phrasing slurs, ties↓, beaming↓ controls, ornaments↓ (trill, turn, …), grace notes, articulations↓ (staccato, tenuto …), fingerings↓, textual markings↓, cresc. and dim.↓ (both hairpins and extended cresc. — poco — a — poco style) chord symbols↓ (“fake chords”↓), figured bass. Dynamic markings such as f and p are separate objects (see Directives->Markings->Dynamics↓).
Also here is the tuplet↓ menu, for groups of notes that have a duration that is a fraction of the written duration, such as triplets. These actually insert tuplet start and end objects, before and after the notes concerned so, strictly speaking they should come in a separate miscellaneous objects category. As usual, the most useful commands have shortcuts already – Tab starts/stops a triplet alternately (so you can press it once, enter the notes and press it again to finish the triplet). And the two key shortcut Keypad 7, Keypad 7 turns the note entered into a triplet of notes (with Control as well they are slurred). This is set as a two-key shortcut so that you can type it in as a triplet rhythm: e. g. the three keypresses 4, KP_7, KP_7 will give a triplet of three 1/16th notes.

The Append/Edit Note Submenu↓

So called because in appending position the note names a, b, c … append a note while when the cursor is on an note it edits the note to have the note-name indicated. The other note edit commands here are shifting up and down an octave, sharpening or flattening. Cautionary and reminder accidentals are here too – to set the style of accidentals (e. g. if they are repeated in various circumstances) see the Score->Typesetter menu.

The Note Insertion Submenu

This menu has commands for inserting notes at (i. e. before the object at) the cursor position. The double key press A, A inserts the note A in the prevailing duration (more commonly people press a duration key 0, 1, … followed by a note name).
If you enter a note and then sharpen you will hear both note and sharpened note – to avoid this use the “Sharpen Next Note” command (likewise for flatten, use twice for double-sharp,flat) the default key presses are ’=’ and ’-’ for these.

The Append/Insert Duration↓ Submenu

So called because the commands 0, 1, 2 … append a note when the cursor is in the appending position or enter a note if the cursor is on an object. If you have a MIDI keyboard (and it is designated in the preferences under the MIDI tab) then the note will be purely rhythmic (yellow/brown) playing a pitch will turn it into a real note. Here is the command for entering a snippet (which can be a complete rhythmic pattern) as well as Breve and Longa for early music.
There are also a set of comands for appending notes which will be slurred from previous notes (Control-0, etc) which means that you can enter slurs as you enter the rhythm of a bar without extra key presses (which would otherwise break the rhythm of your entry).

The Edit Duration↓ Submenu

Here are the commands for changing the duration of the note/rest/chord↓ at the cursor as well as doubling or dividing the note at the cursor.
Besides commands for dotting notes there are commands for turning the note at the cursor into a dotted rhythm of two notes and for entering a dotted rhythm with two key presses (so as to keep in rhythm – e. g. 3, KP_9 gives dotted 1/8 note, 1/16th note, and the corresponding slurred one with Control).

The Rest Insertion Submenu↓

Besides inserting rests (Alt-0 etc) you can insert non-printing rests (where voice↓s are silent) and move rests out of the way in polyphonic situations where LilyPond doesn’t do what you want. Whole measure rest↓s and multi-measure rest↓s are here too with control over their numbering.

The Select Duration↓ Submenu

The commands to explicitly set the prevailing duration are here (though usually this is set by inserting a duration) and, more importantly the command to select a snippet as the prevailing duration (Shift+ Space) after which entered notes follow the pattern of the snippet.

3.6.10 Directives Menu↓

This covers all the things that aren’t notes but sit in between them – standalone Denemo Directives. The most useful for regular music notation are barlines, dynamic markings, tempo↓ marks, rehearsal marks etc in the Markings submenu. There is an enormous collection of stuff here though.
All objects, including Denemo Directives can be inspected and edited via the Object Editor
One general feature is the Conditional Directives↓ which can be used to restrict a directive to a particular type of score layout↓ (e. g. only to be used when printing a part, or a full score). This can be used, for example, to prevent a cue being printed on the full score (as it is only relevant when printing the part).
Note there is a further class of Denemo Directives, the ones attached to notes/chords/staffs/movements/scores – these direct the typesetter to do special things such as attach fingerings, ornaments etc. Denemo Directives are described in a separate section28↓.

3.6.11 Lyrics Menu↓

See section 18↓ for a description of how lyrics are handled in Denemo. The lyrics menu includes the following commands:
Add Lyric Verse
Appends a verse to the verses attached to the current staff.
Insert a Highlighted Lyric
inserts a bold and/or italic word into the lyrics at the current lyric cursor position.
Skip Syllables in Selection
Inserts special syntax to skip the number of notes you currently have selected in the Denemo Display.
This is useful if you have a musical introduction or interlude in a song.
Insert Stanza Number
Asks you for some text (usually the number of the verse) and inserts the special syntax to typeset this before the next syllable, leaving the syllable position undisturbed. Normally the lyric cursor should be at the stanza/verse start.
Syllable Alignment
Inserts special syntax to cause the text to be aligned with its start or end below the note (rather than the default centered position). This may be useful for chanted text.
Melismata
Divide Syllables with Hyphen
Inserts syntax to typeset hyphen(s) if needed between syllables that underlay successive notes.
Insert Mirrored Verse
permits a mirrored copy of a verse from another stave to be included on the currrent staff, for example when the words for two parts are the same but on separate staffs. Then if the words need editing, just the first copy needs to be changed.
Lyric Tie
Inserts the syntax to separate two words which should be typeset under one note.
Dynamic
Inserts a dynamic marking (ff, f, p, or pp) directly in the lyrics. You can edit the insert for other dynamics.
Typeset Verses at End
This takes several verses and uses the Movement->Titles->Text after Movement command to typeset them at the end of the movement arranging them in columns.You are given a choice as to which verse to start from. Normally you would then delete these verses from the staff so they are not repeated. Issuing the command a second time allows you to delete, replace or edit the end-of-movement text.
Change Font
Inserts a change the font for the lyrics from the current lyric cursor position. Short forms such as Sans, Times can be used.
Larger/Smaller Font Size
Inserts a change in the font size for the lyrics from the current lyric cursor position onwards.
Typeset On/Off
Turns typesetting of lyrics off or on (this does not affect end-of-movement text).

3.6.12 Notation Magick Menu

This has been moved to the Edit Menu.

4 Palettes↓

Palettes are collections of commands arranged as a column, row or grid of buttons either in a separate window or docked in the Main Window.
The buttons are not just for mouse users – palette buttons can be executed by typing p followed by (part of) the label of the button followed by the Enter or Return key. The entry for keying in a palette label looks like this:
figure images/PaletteEntry.png
At the top is the name of the palette that is active, in this case the “General” palette. You can switch to a different palette with TAB – the palette does not have to be displayed on the screen, but if you type a label that does not exist it will be shown to remind you.
To make full use of the keyboard for executing commands from your palettes you should edit the labels so that they are easy to type & memorable. Put the shorter ones first as you do not need to type all of the label, just enough to select the needed button. Right-clicking on a palette button allows you to edit the button, changing the label or tooltip, duplicating the button (e. g. to create an edited version of its script) and more, as in the following popup:
figure images/PaletteMenu.png
You can also edit the palette itself by right clicking on any button and choosing the Edit this Palette submenu (shown open above). You can make the palette fill up horizontally or vertically and restrict the number of columns/rows respectively. You can dock/undock palettes as well and hide palettes that are not needed (you can also hide undocked palettes by dismissing their window).
In the View menu you can select a palettes of commands to display or show all the palettes and then hide the ones you don’t want.
You should make palettes your best friend – when you find a command in the menu system that you need right click on it and choose Add to Palette. This way you will build up one or more collections of commands that you need.
Palette buttons can also be created directly from objects or Denemo Directives so that you can duplicate them in your score without having to copy and paste. So, for example if you run Help->Open Feature Packed Score and find the type of object or attribute you need there then you can run the Object Inspector or one of the editors on it and create a palette button for installing the same thing in your own score. See the sections 10↓11↓ 12↓13↓for more details.
Changes you make to palettes are automatically saved when you end the session. (They are stored in a file called palettes.xml, which can be edited directly by the more techie-minded).

4.1 Articulations↓ Palette

figure images/ArticulationsPalette.png
These buttons turn on/off the articulation. These will apply to the entire selection if you have one and you have the preference15.2↓ for that set. Outside slur moves the articulation outside an enclosing slur.

4.2 Barline↓s Palette

figure images/BarlinesPalette.png
These insert barlines – note only one barline can be at one moment in the music. The Custom button creates a new barline type, specifying the appearance in mid system, end of system, start of system and between staffs.

4.3 Beaming↓ Palette

figure images/BeamingPalette.png
The ? button gives the overview for this palette. Rules can be set via a dialog with exceptions derived from the selection.

4.4 Chord Symbols↓ Palette

figure images/ChordSymbolsPalette.png
The ? button gives the overview for this palette.

4.5 Insert or Append Chords Palette

figure images/InsertOrAppendChords.png
This palette inserts a chord of the given type using the prevailing duration↓ with the root note for the chord given by the cursor height and any pending accidental↓. The chord is inserted and labelled in the Denemo Display with its root and chord symbol↓ (aka fakechords↓). This is typically used on a Chord Symbols staff (see Staff Properties↓ menu). You can create additional chord types for this palette using the command View->Palettes->Create Button for Chord Type.

4.6 Custom Ornaments↓ Palette

figure images/CustomOrnamentsPalette.png
Custom ornaments can be created as encapsulated postscript files using the same methods as graphic title pages. If you have a vector graphics editor (e. g. inkscape) installed and in your Preferences (Externals tab, Graphics Editor) then you can edit from within Denemo. As usual hover over the buttons for instructions.

4.7 Dynamics↓ Palette

figure images/DynamicsPalette.png
The cresc - - - and dim - - - buttons start or continue textual crescendi/diminuendi – texts such as poco a poco can be inserted and the - - - can finish on a dynamic marking or an end cresc/dim marker.

4.8 Figured Bass↓ Palette

figure images/FiguredBassPalette.png

4.9 MIDI Import Palette

figure images/MidiImportPalette.png
This palette is for guided MIDI import. The instructions are in the tooltips.

4.10 Ornaments↓ Palette

figure images/OrnamentsPalette.png
Note that there is a separate custom ornaments palette.

4.11 Piano/Organ Notation Palette

figure images/PianofortePalette.png

4.12 Polyphony↓ Palette

figure images/PolyphonyPalette.png
These are the commands to control separate voice↓s that appear on a single staff. The voices are best displayed on separate staffs in the Denemo display to ease the editing.

4.13 Repeats↓ Palette

figure images/RepeatsPalette.png
The Nth time repeat can be used to hold any needed text. If an repeat alternative is less than a bar the Short Measure command can be used, and the bar number adjusted if needed.

4.14 Stringed Instruments Palette

figure images/StringedInstrumentsPalette.png
Here are commands for fingerings↓, string numbers etc. These are attached to individual notes (place the cursor on the note).

4.15 Tied Notes/Chords Palette↓

figure images/TiesPalette.png
Commands to insert ties↓ on chords and individual notes, and to control their shape and direction are here.

5  The Command Center↓

figure images/CommandCenter.png
In the View menu you can show the Command Center. This has a list of all the Denemo commands, hidden or not, with their shortcut(s). The box at the top left gives full details of the currently selected command and its location in the menu system. Below that is a search box for finding any command you need by matching words in its description or label. By choosing “Fuzzy” you will make the search less strict – one word could be missing.
The search↓ starts once you have typed the fourth letter of any key words you want, so check after each letter to see if you have found the command you need. To search for further commands matching your keywords press Space or Tab or Return or click the arrow next to the search box.
The command center is also where you can set one-key shortcuts such as Ctrl-x and two-key shortcuts such as Shift-a followed by Shift-a (which is written as A,A next to the command). You can also look up which command responds to a given shortcut, and execute the selected command here.
In addition you can save and load whole sets of shortcuts and commands. If you have upgraded your version of Denemo and you have elected to keep your customized commands etc then you should run the Load a Standard Command Set choosing Default.commands, as some commands may have moved in the menu system. If there are new palettes in an upgraded version of Denemo then you can get them merged in with your own palettes by clicking “Load the Standard Palette Set” – this does not overwrite any palette buttons you may have, so delete any customised buttons (after duplicating, if desired) that you wish to fetch from the Denemo distribution.

6 Music Snippets↓

6.1 Overview

Music snippets are short selections from a voice which can be stored on the Snippet tool bar. They have two main uses: they can act as a repository of “motifs” which can be inserted (Ctrl-Space) at the cursor, and they can be used as an extension to the “prevailing duration” idea. In the second use, by selecting a snippet as you enter pitches the durations are assigned from the next step in the snippet. The first case is especially useful when entering a complex rhythm which is repeated many times in the piece. In all cases the snippet can contain all sorts of attributes and markings, slurs, beaming indications, ornaments etc, and these will then all be entered with a single keypress or as you add pitches.

6.2 Details

The Snippet tool bar has only one button initially: “Create”. This button lets you create a snippet from the current selection. The selection should be a contiguous selection of objects in a single voice. Once created the snippet appears on the snippet tool bar as a button – the label is generated to indicate the content, and this label can be further edited by clicking on the button and choosing “Edit Label”. Other options on clicking a snippet button are to insert the snippet, to select the snippet (in which case as you enter pitches they follow the rhythm of the snippet, including any slurs, trills, or articulations that are in the snippet) etc.
Ctrl-Space inserts the selected snippet or (if none is selected) inserts the snippet that you specify by number. Shift-Space selects the next snippet (or first if none selected), to unselect a snippet choose a duration (0, 1 …) to be used instead for entering pitches.
In the insertion case, you may have two or three snippets that apply to a given score – special bits of text that appear over notes for example – and you can insert them using Ctrl-Space, 1 (or 2 or 3 …) as needed.
In the pattern-following case you will be selecting snippets using Shift-Space and then playing in notes (and backing up using backspace in case of error – the pattern backs up for you).

7 The Print View Window↓

figure images/PrintView.png
The print view window is shown by checking View->Print View. This view shows the typeset score as it will be printed on paper. It also allows you to locate the place in the Denemo Display belonging to a particular note or mark in the score, start playing the music at any note and allows some graphical editing of the score.

7.1 The Buttons

7.2 Mouse↓ Controls

The mouse scroll wheel enables vertical panning and with Shift horizontal panning. With Control pressed you can zoom the view, which is very important for re-shaping slurs. Right click for help with tweaking beam angles, slurs etc.
Shift-Clicking on a notehead or marking selects the object (blue box appears) and positions the Denemo cursor at that point so that you can start editing. Clicking without shift starts playing at that point – click again to stop the play.
Right clicking in a blank area of the typeset view (normal cursor) gives a menu providing help and allowing you to typeset with the control points for curves and the location points of objects marked as red dots and crosses. Be sure to turn off these red dots and crosses before printing or creating a customized score layout, as they are embedded in the score and will print.

7.3 Editing in the Print View – WYSIWYG↓

Once you have finished entering music into Denemo you may find that you have a wrong note or two or a missed marking or slur when looking over the finished score in the Print View. It is convenient to shift-click (or click twice) on the notehead, marking etc. to position the Denemo Cursor on the object. For this to work look for the “hand” pointer as you move the mouse over the typeset score. The hand pointer indicates a place where if you click the Denemo Cursor will move to the Denemo Object that belongs to that feature.
Once you have located the note you wish to edit you can press the keyboard shortcut (or play the MIDI key or any other editing method) to change the note – to add a staccato marking for example. The Print View will not instantly update, but you can continue editing while it does so. If the Print View is not up-to-date the shift-click may not locate the correct note as your edit may have displaced things; to minimize this it is best to correct faults on a page from the bottom upwards. You are given a warning noise when the print view is not up to date, and a big warning noise if the locating has completely failed.
The navigation using shift-click in the Print View works for noteheads, slurs↓, ties↓ and various marks – some other things such as lyrics can’t be used to navigate – choose the note that the lyrics underlie to find the right place in the Denemo Display.
You can actually edit your input music using the mouse on the Print View window – something referred to as what-you-see-is-what-you-get (WYSIWYG), which is how the conventional music editors work all the time. But in doing this it will help if you keep in mind that the Denemo program does not know anything about what LilyPond has actually drawn in the Print View window – Denemo is just displaying the PDF file that LilyPond has created. The PDF file does contain links – the “hand” pointer – so it does “know” about where things are in the Denemo Display, but not the other way round. This means that to use wysiwyg features you have to tell Denemo more about what you are doing than you would expect.

7.3.1 Editing Positions and Padding

Right clicking on some objects in this pane allows you to edit them.Use this for the occasions when LilyPond has positioned things badly.
The editing procedures depend on whether the object is attached to a note or appears between the notes in the Denemo Display. Depending on the object you can drag it to a better position or change whether it appears above or below the note its attached to.
You can also select an amount of padding to apply to some objects so that they keep their distance from other items in the score. Adjusting the padding is generally a better way of indicating that something is too close to something else, since other objects will move away from it as needed and if you later edit the score it will behave more intelligently.

7.3.2 Re-shaping Slurs↓ and Ties↓

Slurs, ties and beaming↓ can also be altered here. When you right-click on a slur or tie the Denemo Cursor moves to the note where the slur starts and you are offered the chance to edit the shape of the curve. Choose a large zoom factor before you begin, and turn on the control points (red dots and crosses) as described Mouse Controls↑above. Then right click on the curve and choose Edit Shape. You have to click on the reference point first – this is on the center-line of the staff at the horizontal position of the notehead where the curve starts – this is marked with a red dot. Then you click and drag on the four “control-points” that define the shape of the curve. Once the shape looks good, right click in a blank area and click Apply.
With practice you can skip the use of the red dots and crosses as you can guess where they would be.

7.3.3 Adding Line or Page Breaks.

Page or line breaks added by right-clicking on a note at a barline and choosing from the menu. This works because right-click positions the Denemo Cursor at the note and then the page or line break command is run just as if you were working directly in the Denemo Display.

8 The LilyPond↓ View

In this view the music is shown in the form it is sent to the LilyPond music typesetter. The LilyPond typesetter uses a syntax that can be read and written by human hand (the word c’’ represents the note middle C for example) so this editor allows editing and navigating the music.
The lines are all numbered, and the bars always start a new line, with every fifth bar numbered with a comment “%n”. Directly editable text appears in bold, and additional syntax can be inserted by right-clicking with the mouse. (Equivalent to choosing the “Insert LilyPond” menu item).
The first sections are definitions of the music for each staff/voice.
The last section is the score layout↓ which can be a custom one or a default layout (or if continuous typesetting is on, a temporary one). If you want to edit the score layout directly as text then you can click on the Score Layout button here and convert it to a custom layout.
There is also a pane that shows any error messages that LilyPond may issue when typesetting your score. When an error occurs the remainder of the text is marked in red. Using the arrow keys to move around this text, the Denemo cursor in the Denemo Display will follow, using the little gray anchors that appear before each note, rest, chord or other music object.

9 The Playback View↓

9.1 Introduction

This is a fully typeset view with (more) full-featured MIDI playback. The music is typeset on one long page against a yellow background and scrolls up as it plays. As a bonus, a single part can be typeset in this view with the whole accompaniment included in the playback – you can play from the part while hearing the other instruments.
To start play from a note just click on the notehead, click again to stop playback. To play a short passage click on a notehead and drag to where you want the playback to end. To loop-play hold the shift key down as you drag from the start to the end of the passage to be looped over. To position the Denemo cursor at a note or rest shift-click a the notehead.
figure images/PlaybackView.png
The Play/Stop button plays the whole piece with repeats, (that is the same as the Performance command in the playback menu); if a performance is underway it stops it.
The All Parts button typesets the current movement for playback, generating the MIDI at the same time. The Current Part button does the same but just for the part that holds the Denemo cursor in the Denemo Display – you are asked if you want to keep the MIDI already generated – say yes if you wish to hear the other parts while following just the current part as it plays back.
Set Scrolling pops up a dialog to control simple automatic scrolling. Clear Scroll Points clears the list of scroll points if present (see below).

9.2 MIDI Playback.

In the Playback View the MIDI is generated by LilyPond and has many more features than the simple MIDI generated by Denemo. This playback can still be controlled by the same commands in the Playback menu or the Playback Controls Panel and left-clicking on a notehead in the Print View, but in addition you can start play from any point in the music just by left-clicking on a note in the Playback View. Furthermore, in the Playback View, to play a section of the music click and drag to the end note desired. For a looping play hold the shift key while dragging.
If you alter the music then you need to re-typeset this view before you can play with Playback View.

9.3 Scrolling

You can either check the Set Scrolling check box to automatically scroll as you listen, or you can set scroll points to determine exactly where the page will be when the point clicked is playing.

9.3.1 Simple Scrolling Control

For simple scrolling click the Simple Scrolling check box. The music will start to scroll after a while and continue at a steady rate. If it has scrolled too far you can scroll it back a bit while playing, it will carry on at the rate from where you leave it.

9.3.2 Scroll Points

For more sophisticated control you can set scroll points on the movement. This is what right clicking does in the Playback view – when you right click on a note head or rest Denemo will ensure that the page has scrolled while playing so that notehead has arrived at where it was when you clicked. With the music in the right place on the page for it to start, right click on the first note of the second system (so that the scrolling does not start until after you have heard the first system play) and then scroll the page up (using the mouse scroll wheel or the scroll bars) and click on the first note of the last system once the page is in the position desired for end-of-play. You hear a sound effect when the scroll point has been added to the list of scroll points for this movement and the place is marked with a green blob.
If there are tempo changes, scroll the page to the desired position prior to the tempo change and click on the last note/rest before the tempo change. (Instead of clicking you can drag notes to the position you wish them to be in instead – it’s the same thing). If you add a scroll point wrongly, just click it again to remove it.
You may also need to set intermediate scroll points if the music has passages with a flurry of notes – just position the music for such passages and right click as with tempo changes.
Note that if you set scroll points on a movement these are remembered when you switch movements, and scroll points are saved with your score. This means that once you have set up your score for practicing playing your part, Denemo will remember how you like it to scroll. Note also that you can do minor edits without unduly perturbing the scrolling that you set.
Use the Clear Scroll Points button to delete all the scroll points that you have set if you wish to start over or right click on an individual scroll point to remove it.
Note: When not playing from the beginning of a piece the instruments will only be correct if the MIDI channel assigned to each staff has been left at the default value (channel 1 for staff 1 etc with channel 10 skipped). If you have deleted/swapped staffs you may need to reset the MIDI channel values.
Note: Tempo↓ changes must have a metronome mark to take effect in the Playback View. Repeat them in the part if you are just typesetting the part.
Note: That text is currently generated with the wrong fonts in the Playback View (thought to be a LilyPond bug).
Note: LilyPond Version 2.19.x is needed for some MIDI features (e. g. staccato). Use the Preferences dialog, Externals tab to change which version of LilyPond Denemo uses.
Note: When using the Playback View on a score with several movements you must first typeset the movement in the Print View before invoking the Playback View.

10 The Object Inspector↓

figure images/ObjectInspector.png
The Object Inspector is shown by clicking View->Object Inspector, or just double-clicking on an object in the Denemo Display. It gives comprehensive information about the object at the cursor. This includes directives like ornaments, dynamic markings, fingerings that may be attached to the object. For objects like notes and rests which start at a particular musical moment it also describes at what moment in the measure the note begins and what its duration is.
The Object Inspector is sensitive to which note of a chord the cursor is on, so that things like fingerings (which can vary from note to note within a chord) are displayed individually as you move the cursor up and down a chord. You can step through the notes of a chord using the button marked “Inspect the next note in chord” which will work upwards through the distinct notes before wrapping round to start at the lowest note. Where a chord has two notes with the same note-name↓ the button labelled “Alternate note at cursor” can be used to inspect the other one.
For many directives full information about which command created the directive and where it is to be found in the menu system is given, and the description of the command’s behavior.
Some older commands don’t have full information but the tag associated with the directive will help in tracking it down via the Command Center seach facility.
The Object Inspector automatically updates itself as you move the cursor around, so you can leave it open and click on various objects to find out what they are and which command generated them (and so how to modify them).
The “Run the Object Editor” button will launch the The Object Editor↓ on the current object, which allows you to modify or delete the property you are interested in.
The “Create Button for Clone” button will let you create a palette button that can thereafter be used to insert a duplicate of the object any desired position in the score. This means that a complex marking or a chord with its fingerings, ornaments etc can be created once and then inserted elsewhere, even in other scores by invoking that button.
Use the window controls on the Object Inspector’s title bar to dismiss the window.

11 The Object Editor↓

figure images/ObjectEditor.png
The Object Editor allows you to edit the current Denemo Object and also to create palette buttons for generating such objects.It can be launched from the Edit Menu or from the The Object Inspector↑.

11.1 Editing Objects and their properties.

This window is modal, that is you cannot interact with Denemo outside of the editor until you have dismissed it. To warn you of this the pointer turns to an X if you try to interact with the Denemo Input Display when the Object Editor is still open. Buttons are provided to move on to editing the next (or previous) object.
As with the Object Inspector the Object Editor is sensitive to the cursor height, with the same navigation control (“Next note in chord↓”) to move through the notes of a chord so as to allow editing the detail of each note. Where a chord has two notes with the same note-name↓ the button labelled “Alternate note” can be used to edit the other one.
In the example the cursor is on a chord which has a trill on it. Within the chord it is on the note C-natural which has a fingering on it for finger 3. These are the Denemo Directives attached to the chord and note – there can be even more.
For each Denemo Directive (either standalone or attached to the chord or note) there is a button “Execute command: <name of command>”. This button will run the command in edit mode – if it has one – or simply run the command if it doesn’t.
Below this is a row of buttons – the first will delete the Denemo Directive, while the last (Advanced) allows a low-level edit. The rest of the buttons are described next

11.1.1 Seeking↓↓, Editing and Conditionals

The next three buttons allow you to seek and edit further occurrences of this particular Denemo Directive in the score (“Next”) to set conditional behavior on the Denemo Directive (“Conditional↓”) or to get the description of the command that originated this directive (“Help”).
The “Next->” button allows you to search on from the cursor for further occurrences of the Denemo Directive – other fingerings for button on the Fingering directive, for example. When found they can be edited and the search resumed (the usual shortcut for resuming the search is Ctrl-E,r). These search commands can be invoked from the Edit menu, but this button provides a convenient start point.
The “Conditional” button allows you to say if you want the directive to be ignored for certain score layouts 14↓. For example, a cue is usually only wanted when printing the part, not the full score. So clicking on this allows you to specify this.

11.1.2 Making the Directive Conditional

The conditional button allows you to designate certain score layouts (e. g. typesetting just one part, or one movement) as ones for which this directive is active or ones which ignore the directive. So if the full score is wanted without fingerings then by clicking this button with the full score as the currently typeset layout the fingering directive can be designated as ignored by that layout. Further examples can be searched and similarly marked in the dialog that follows.

11.1.3 Making a Copy of the Directive

This button copies the directive to the clipboard – it can then be pasted by moving the cursor elsewhere and invoking the paste command.

11.1.4 Creating Palette Buttons for Objects and Properties.

The Object Editor also has buttons for creating Palette Buttons for the Denemo Directive that it edits. There are two of these: one button would run the command that created the attribute/object the other will instantiate a duplicate – a clone – of the attribute/object.

Create Button for Command

This creates a palette button to run the command that created the Denemo Directive you have Object Editor open on. You are asked which palette you want to place the button in, and can create a new, custom, palette at that stage.
For example, if you use this on the Arranger attribute of a score you will get a button that runs the command Arranger (which is found in Score->Titles…). That button would then ask you to fill in the name of the arranger. Compare this with the next button, where you will create a button that will install a clone of Arranger attribute that you have on this score – the arranger will be already filled in, saving you having to enter your own name each time you create a new score.

Create Button for Clone

This creates a button which when clicked will insert a duplicate of the Denemo Directive that the Object Editor is looking at.
This means that for any specific attribute you want to re-use you can create a button that will install exactly that Denemo Directive at the cursor. So, even if you do not know how a particular effect was generated, you can create a palette button to use the effect in your own score. The Open->Open Example scores provide useful examples of things you may need. See the section on Palettes4↑ for more about palettes.
This button is particularly useful for things like your copyright notice which stays the same from score to score – you just need a clone to install on a new score.

12 The Score and Movement↓ Properties Editor

figure images/ScorePropsEditor.png
The score and movement editors allow you to edit global properties of the score or current movement. Use the Score menu to launch the editor with the Score properties expanded fully and the Movement menu to launch it with the Movement properties expanded – they are combined in a single window to make it easy to switch between them. Drag the separator if you need to switch between them. On the Movement Editor pane there are buttons to change movement, so you can continue editing without re-starting the editor.
The built-in staff properties can be edited using the button at the top. For each Denemo Directive attached to the staff or voice there is a button “Edit command: <name of command>” – the tooltip of this button gives the help text of the command that created it. This button will run the command in edit mode. There are also buttons to do a low-level edit or to delete the directive.
Some older commands do not have edit facilities.
As with the Object Editor11↑, this editor is modal.
In addition to the buttons described for the Object Editor11↑there is a button to create a duplicate↓ of the directive. The purpose of this is to have two versions of some setting (e. g. the indent for the first staff) which are used for different score layouts – a full score may require a larger indent than an individual part. If you make the duplicate conditional↓ on one layout, then it is good practice to make the original conditionally ignored by the same layout, rather than relying on it overriding the earlier directive.
Note that the command that created the directive you have duplicated will only edit the original directive, not the duplicate. So if you want to change it you can either use the Advanced edit button or delete and re-create it with the different value desired. (And then return to the value desired for the original copy of the directive).

13 The Staff↓ and Voice↓ Properties Editor ↓

figure images/StaffVoicePropsEditor.png
A “tools” icon is drawn at the start of the staff. Clicking on this opens the Staff and Voice Properties Editor. As with the Score and Movement Properties editor these are combined as two panes in one window – often you won’t be sure if the property is one set on the Staff or the Voice belonging to the staff, so this makes it easy to look at both. Drag the separator if you need to make more space for one of them.
You can also launch the Staff Properties Editor from the Staff menu, and you can navigate the staffs while in the editor using Staff Above and Staff below buttons.
The built-in staff properties can be edited using the next button – this is a rather arbitrary collection of things that are not attached as Denemo Directives, covering MIDI output for the staff, some typesetting controls and display controls.
There are also buttons to inspect/alter the initial clef↓, time signature↓ and key signature↓.
For each Denemo Directive attached to the staff or voice there is a button “Edit command: <name of command>” – the tooltip of this button gives the help text of the command that created it. This button will run the command in edit mode. There are also buttons to create palette buttons, low-level edit or to delete the directive as with the other editors.
If the staff has properties attached to the key signature or time signature then these are included after those attached to the staff itself. As before the command that generated them can be run in edit mode.
Some older commands do not have edit facilities.
Note that if there are additional voices on a staff these are usually displayed on a separate staff for ease of editing. Only the voice properties should be set on such a “staff”, the staff properties will be ignored (since the voice will be typeset on the staff above).
As with the Object Editor11↑, this editor is modal, and as with the Score/Movements and Staff/Voices editors there are facilities to make duplicate directives for conditional↓ use in the various layouts you may need.

14 The Score Layouts↓ Window

Score Layouts are ways of typesetting a score for different purposes. Even without ever looking at the score layouts window you may find that you have been using them all along. For example, if you print just one part from a chamber work, or the vocal part from a song with piano accompaniment a score layout is created for this. In fact, layouts are always created when you typeset music – for example from the Print Window Typeset, Part or Movement buttons, or from the Print menu. These are default score layouts they are created automatically, and you don’t have to think about them.
You can also create a layout using the Print->Select Staffs to Print menu item - by un-checking the “Do not Create Layout for this selection” check box you can create a custom layout that will print just the staffs(voices) that you leave checked. In addition other commands in the Print menu generate custom score layouts – for example a layout for the accompanist to play from, with the solo part printed on a smaller staff.
For more extensive facilities in choosing how to lay out the elements of your score when typeset you can open the Score Layouts window.
figure images/ScoreLayout.png
The score layouts window is shown by checking View->Score Layout.
You can create custom layouts to print the music in different ways. For example, one layout may have the score transposed, or be for just two parts printed together. You start from a default layout, setting the values you want, and then click the Customize button.
You can customize any layout in this window – positioning lyrics above the staff rather than below for example, or setting the staff groupings. You can add any staff to any movement in the layout using the “Append Current Staff” button (place the cursor in the staff you wish to append). The buttons marked X next to the staffs delete. You can also append whole movements and re-arrange the order of the movements using the additional buttons that appear once you have made the layout a customized layout.
As well as appending staffs you can substitute the music for any specific voice↓ by clicking on the “Substitute” button that appears when you expand the voice details.
Although all score layouts have access to the same music to arrange on the score the music can contain features that are exclusive to a one layout or exclude one layout, by making Denemo Directives conditional on the layout being typeset. See the commands under Directives->Make a Directive Conditional or Notes/Rests->Make a Directive Conditional for this, or use the Conditional button in the Object Editor 11↑.
The score layout can only be edited graphically when first created. Once re-loaded from disk it is reduced to its LilyPond text form and can then only be edited in the LilyPond view.

15 Preferences↓ Dialog

Under the Edit menu is a command to invoke the preferences dialog.
figure images/PreferencesDialog.png
This is arranged in tabs for the different aspects that you can set.

15.1 The View Tab

The values set via the View menu are mostly persistent and so don’t need to be set here, they can be set via the View menu. There is a setting in the miscellaneous tab for this persistence property.

15.2 The Command Tab

figure images/CommandTab.png
Here are options for how commands should be treated. The can apply to the note at the cursor or the whole selection. A note entered that does not fit in the bar can be split or not. Shortcuts can be set just by highlighting the command and pressing the key, or not. Menu navigation with arrow keys can be allowed (otherwise you would be setting the arrow keys as shortcuts). The Return key can be moved easily from command to command as a shortcut, or not. The “newbie” mode can be turned on – useful if you start to use a section of the program that is new to you. A window can be popped up to tell you which keypress you invoked. And finally the timing of the tooltips as you hover and move from one menu to another can be controlled.

15.3 The Externals Tab

figure images/ExternalsPref.png
Here you can set the paths to external programs that you can use from Denemo. Binary packages have these set already, but if you wish to use a particular version of LilyPond or some other program to browse the manual then you will need to enter the name (preferably the full path) of the program concerned.
You can also set the default location for saving your scores. The update command set feature is not available at present.

15.4 The Auto-Typeset Tab

figure images/CommandTab.png
This tab controls the continuous typesetting feature of the Print View7↑. Most of these can be set via the Continuous/Manual button in the Print View window, but here you can control how quickly Denemo checks for the need for a new typeset.

15.5 The Miscellaneous Tab

figure images/MiscellaneousPref.png
The font used by Denemo for menus and dialogs tooltips etc can be set here: the default is a special font that makes it easy to read the musical signs – most fonts create 1/2 and 1/4 notes that are not easy to distinguish at a glance, the ones in the Denemo font are cartoon-like exagerations that make it easy to see what is meant. You can set the font size too – none of this affects the typeset score, naturally. Some menus that can become very large can be limited (a “more” button appears).
The display animation controls are here – how quickly the display refreshes and how page turns are done in the Page View3.1.1↑.
The excerpt resolution setting is to control the quality of the image created by the Print Excerpt command (printing little bits of music for inclusion in documents).
Denemo can create thumbnails from the actual typeset music (done on closing the session or by a command) – these are displayed by file browsers (not on windows o/s though).
Denemo keeps a list of scores you have visited recently – how many is controlled here. Use Open->Open Recent to choose one from the main menu.
The user name is set for visiting the denemo chat room via the Help menu.
The Autosave options guard against a power failure while you are working – nowadays you can set the time very short without noticeably impacting your work.

15.6 The Audio↓ Tab

figure images/AudioPref.png
This tab affects the sounds you will hear via a connected audio system. The first section is for feedback when entering music. If you are looking at a source manuscript while entering rhythms or notes you will not want to look across at the input display to check that you are still entering at the right part of the bar. The sound effect that tells you a new bar is beginning is set via the first field – it is one of the drum effects available in the default Denemo soundfont, number 72, change this to 0 to turn it off, or other values for a more discrete sound.
There are settings for controlling the pitch spelling↓ for MIDI in – augmented and diminished intervals switch to this channel; if you hear this on an interval that was not supposed to be augmented or diminished you are alerted that you have the enharmonic range wrongly set for the piece. You can set this to the instrument in use to avoid the effect.
The Dynamic Compression affects the volume at which notes are played back as you enter them from a MIDI keyboard – by compressing 100% you avoid meaningless variations in volume – you are only entering notes, not giving a moving performance, after all! Without this you will find some notes are too quiet to be noticed and will think the note wasn’t registered. Note that the value 99 for dynamic compression is a “magic” value, it gives a slight after-touch effect, useful for percussive instruments (disatrous for organs!) to avoid the clipped sound when the note terminates.
The Audio Backend section changes where Denemo tries to send the output sounds to – it can be difficult to match up the options to the hardware (and o/s) settings you have. After checking carefully that you have got speakers attached and that they are working (e. g. by running some other program) you should turn off all other programs that may be hogging the audio out and then start up Denemo and only resort to changing the settings here if you don’t hear anything. Be especially careful not to alter the Sample Rate and Period Size unless you are an audio expert.
The Maximum Recording Time is there to limit the amount of memory you gobble up if you turn on the Record3.4↑ of the audio out.

15.7 The MIDI↓ tab

figure images/MidiPref.png
Here are the controls for a connected MIDI controller↓ (usually a keyboard nowadays). With Rhythm Entry checked you can type in unpitched rhythms and immediately fill them in from the MIDI keyboard20.2↓. The MIDI backend section lets you specify the controller you are using – set this even if “default” works. The MIDI output device is currently not used in Denemo.
The soundfont is the set of sounds you hear – Denemo is shipped with a smallish soundfont, but if you want something special then you can browse to the .sf2 file using the Choose Soundfont button.
The Pitch Entry tab is for acoustic entry of notes – this is largely replaced by MIDI keyboard entry now that MIDI keyboards can be bought very cheaply.

16 Score and Movement Button Bars

The View->Titles, Buttons etc checkbox makes two horizontal button bars visible (if they have buttons on them). What the buttons show are titles/composer etc for the score and for the current movement. The score button bar holds the movement indicator buttons for scores that have several movements – you can click on one of these to move quickly to a different movement. In addition other score-wide settings create buttons on the score titles bar and movement wide settings on the movement titles bar. The menu items that populate these are under Score->Titles etc., and Movement->Titles etc and other menus.

17 Style, Layout, Titling↓

This section covers where to find commands for titles, page numbering, table of contents, critical commentary, page size and so on. The commands for stylistic directives are in the Score->Typesetter or Movements->Typesetter menus. Here you find commands to set the accidental style (when should accidentals be repeated?) and bar numbering styles, Rehearsal Mark style, page numbering conventions, the fonts to use for the various elements of the score.
In this directory there are commands to control the number of systems per page or bars per system – these would only be needed in exceptional circumstances. There are also commands to control how systems are laid out on the page, and on the last page (the Ragged * commands), and to control the margins.
Notehead style for the whole score is here (see the Notes/Rests->Notehead menu for individual notes) and a command for creating a custom barline↓ style which can then be used in the score.
The command to instruct the typesetter to transpose the entire score is here – two flavors, a quick text-based one or one that allows you to specify the transposition you require by setting the pitches of two notes (from and to pitches).
Titles menus are found in the Score and Movements menus. There are two styles of titles, Book Titles and Simple Titles which shouldn’t be mixed.

17.1 Simple Titles

Simple titles allow you to place fields of text around the music. In this example the fields have been named “xxx movement” when they have been set from the movement titles otherwise they have been set in the score titles menu.
figure images/SimpleTitles.png
Each field can contain any text you need, with the Copyright field at the bottom of the first page, the Tagline field at the bottom of the last page and the Instrument field at the top of each page.
When you first set a title you just get a text box to write the title in. If you invoke the title again (e. g. click on it in the Print View) then you can extensively alter its appearance using the LilyPond markup language – buttons are provided so that you do not need to know the markup syntax. See the section 19.9.2↓ for the interface provided.
If you have several movements without titles and then set a title for the score, that title will be repeated for each movement until you set at least one title field on the movements.
When you preview the title with the preview button you see the title relative to the default settings for that title – in particular if that title is normally bold and you want to turn this off you will need to use \normal-text before the text to be un-boldened.

17.2 Book Titles

With Book Titles you get a title page with a border and then each movement can have titles of its own.
figure images/BookTitles.png
The music that appears on the title page can be selected from anywhere in the score, or omitted.
The Score->Titles->Book Titles menu also includes table of contents and critical commentary control.

18  Lyrics↓

Vocal music can be typeset using the commands in the Lyrics menu.
figure images/Lyrics.png

18.2.1 Overview of Lyrics

Lyrics in Denemo are handled as verses of text, each verse made up of syllables. The screenshot shows a piece with three lyric verses.
For each verse a tab appears in the lyric pane at the bottom of the main window. The tab is a simple text editor – a new one appears each time you execute Add Lyric Verse (Ctrl-l, a). The syllables are not attached to the notes, so you can edit the notes freely without affecting the lyrics.
Note that the lyrics for a staff are only shown when the cursor is in the staff concerned.
This means that you will see the lyrics for the current staff disappear from the Display Window when you switch staffs, which can be disconcerting, but saves space in the display.
Lyrics are entered as a syllables separated by spaces or new lines (which have no other meaning). While typing or pasting the text in will be enough for simple pieces, special syntax can be included for more complex tasks; in particular space, hyphen (“-”), underscore (“_”), tilde (“~”) all have a special meaning as explained below. For words with more than one syllable, a hyphen can be inserted by “ — ” (space hyphen hyphen space) or via the menu (Lyrics > Divide Syllables with Hyphen). Extra spaces and new lines can be used freely without affecting how the syllables are placed under the notes. The full possible syntax is given in the LilyPond documentation, but the guidance below covers many needs. Denemo provides you with menu items for inserting the most useful extras such as stanza numbers, font selection and skips.
Special syntax beginning with a backslash “\” should be on a line by itself or at the end of a line, so that Denemo knows not to display it under the notes of the display.
The Lyric pane shows only a few lines initially, but you can drag it upwards if you need to see more or use the scroll bars at the side.
You may find it tricky to catch the “sweet spot” where the lyrics pane can be dragged open, sometimes dragging the red bar at the bottom of the Denemo Display upwards helps – it can be returned to the bottom afterwards.
You can switch to the lyrics pane from the notes with Ctrl-l, Ctrl-l. The verse changes background color to show that keystrokes will now edit the lyrics. And you can switch back from editing the lyrics to editing the music with the Ctrl-l (or Esc or Tab keys). You can change verses with Ctrl-PgUpl/PgDn keys and change staffs with Ctrl-up/down, and save with Ctrl-s.
While editing the notes the command “Edit Lyric at Cursor” (Ctrl-l, Ctrl-l) finds the place in the lyrics corresponding to the cursor position allowing you to immediately edit the syllable that underlies the current note.

18.2.2 Special Syntax for Lyric Verses

This section explains the special syntax that the commands in the Lyrics menu insert into the verse to control which syllables fall under which notes and other special effects. When you have used the commands in the Lyrics menu once (to remind yourself) you can simply type the special syntax when you need it again, saving time messing with the mouse.
In this section we’ll indicate the syntax inserted by putting it in “” – the double quotes not being part of the syntax.
Grouping several words under one note:
Lyrics->DivideSyllables
Inserts “ — ” into the Lyric pane, which typesets as a hyphen halfway between the syllables each aligned below adjacent notes.
Lyrics->Lyrics Tie
Inserts a single underscore “_” or “~” tilde, which will typeset as space or lyric tie “ˬ”, respectively.
An alternative to the underscore is to enclose the words in double-quotes, e. g. "word1 word2 word3", where the double quotes are literally typed in.
Extending a syllable over several notes (Melisma) can be indicated by placing a slur over the notes (a phrasing slur does not trigger melisma).
Beaming can also be used to indicate Melisma (e. g. in choral music). This can be done by turning off automatic beaming and manually beaming those notes that have a single syllable. However, the Denemo Display will not display the correct underlay of syllables and notes when doing this, instead refer to the Print View (use continuous typesetting).
Lyrics->Melismata->During Word, with Slur
Inserts spaced double hyphen, “ — ”, into the Lyric pane, typesetting hyphen(s) if needed to the end of the slur
Lyrics->Melismata->Word End, with Slur
Inserts spaced double underscore, “ __ ”, into the Lyric pane, typesetting a lyric extender to the end of the slur.
Lyrics->Melismata-> During Word, no Slur
Inserts “ — _ ” into the Lyric pane, spreads the syllable over two notes inserting hyphen(s) if needed.
Lyrics->Melismata->Word End, no Slur
Inserts “ __ _ ” into the Lyric pane, which spreads the syllable over two notes typesetting a lyric extender.
Lyrics->Melismata->ExtendMelisma,
Inserts “ _ ” into the Lyric pane, extending the Melisma by one note or group of notes.
Skip Syllables in Selection
Inserts special syntax e. g. “\repeat unfold 4 \skip 1” for skipping 4 notes. This is an alternative to typing in a series of pairs of double-quotes, one for each skipped note. Once the syntax is inserted in the verse, it may be easily edited, if you have changed the length of the introduction.
Notes Without Words, i. e. gaps in the text, may be produced with a spaced symbol (if one is required) or by a spaced underscore or a pair of double-quotes (“""â€) for each wordless note.
LilyPond’s markup syntax can be used in lyric verses as well – prefix with \markup. For example
\markup\box
"boxed words"
will surround the words with a box – as you see a new line (before the actual words to appear under the note) is needed for the Denemo Display to underlay correctly.

19 Musical Elements – everything on and around the notes.

In this section the commands available for the various musical elements are described and their arrangement in the menu system is described.

19.1 Beaming↓

Commands to control beaming are available for individual notes, whole passages of notes and entire scores. Mostly the default beaming will be what you want. An exception is the beaming in 3/4 time which can look like 6/8 when beamed in the traditional manner. Use Object Menu->Time Signature->Beam at Half Measure to alter the default.
Individual beam control commands are located in Notes/Rests->Beaming. The start/stop beam shortcuts are usually [ and ]. Other commands include providing partial breaks in the beaming and stopping beaming on a note.
Setting beaming for the whole score can be done using ObjectMenu->Score->Typesetter->Set Beaming Rules. Either the general rule can be given, or Beam Exceptions can be set from the selection. To use the latter, set up a measure or measures with the beaming manually set using the Individual beam controls and then select the passage and invoke Set Beaming Rules.
Setting beaming for a passage can be done with ObjectMenu->Time Signatures->Set Beaming Rule. In addition, at a time signature change a beaming rule can be set using ObjectMenu->Time Signatures->Time Signature with Beaming Rule.
After automatic beaming has been turned off use ObjectMenu->Directives->Typesetter->Start Beaming to insert a directive re-starting automatic beaming at the cursor. The Cadenza On/Off commands turn on/off automatic beaming (as well as the timing control).

19.2 Barlines↓

The important thing to know about barlines in Denemo is that they are not just graphical marks on paper – e. g. you cannot put a repeat end barline followed by a repeat start barline and expect both to print – instead you must use a repeat-end-start barline. This is because you are telling Denemo about the music, not about how to draw it – the repeat-end-start barline is drawn completely differently if it occurs at the end of a line, for instance.
Another useful thing to understand is that the “barlines” that appear in the Denemo display are not really barlines at all, just a convenient breaking up of the music into “chunks”. Normally, of course, you will use one chunk per measure↓ so they will correspond with the typeset barlines.
There is a relationship between line/page breaks and barlines: you cannot have line/page breaks at any point in the music, there must be a barline there. However this can be a “hidden” barline, so that option is in the menu too.
One curious consequence of this is what happens if you contrive to input notes that are timed so that a note is always playing at every barline; normally you use tied notes for this, but if (by mistake) you leave one bar short in duration you can find that none of the following typeset bars start with a note, and the result is that the line cannot be broken – it extends off the right hand side of the page.

19.3 Ties↓ and Slurs↓

… and phrasing slurs. It is important to distinguish ties from slurs since they often look the same in the typeset music, but in some circumstances they are typeset differently – so you may think the music looks ok, and later after some editing, it looks wrong – you have hit a situation where the typesetting distinguishes the two. To help with this Denemo shows distinguishes slurs with little green and red markers for the start/end, while the ties are heavier horizontal curves. If you import music from other notation programs they often confuse slurs and ties, so a command to fix these is in the Notes/Rests->Tied Notes menu. (In the unusual case of slurred notes of the same pitch – e. g. open string/stopped note on a violin – you would have to correct the error by hand).
Also in this menu are commands to tie individual notes in chords, to control the direction (up/down) of ties and to adjust the shape of ties which can be very tricky to position nicely in tight situations. Ties at repeats, where the tie goes to/comes from “nothing”, are here too;they are called Laissez Vibrer and Repeat Tie. (Laissez Vibrer has two uses, of course, but it is the same symbol).
The commands for slurs are in the Notes/Rests->Slurs menu. The most useful have the shortcuts 7,8,9 to slur from the current note to the next note, to extend the slur and to reduce it. There are also commands to turn on/off a slur start or slur end, and these are also in the right-click menu on the notes in the Denemo Display.
When entering rhythms with the numeric keypad the slurs can be added without breaking rhythm by using the control key with the rhythm. So, for example, Ctrl-3 enters a 1/8 duration slurring from the previous note, or extending the slur. And Control keypad 9 (Ctrl-KP_9) creates a slurred dotted rhythm (corresponding to keypad 9 which creates a dotted rhythm based on the last entered duration) and similarly Ctrl-KP_7,Ctrl-KP_7 for entering a slurred triplet based on the current duration.
Phrasing slurs are slurs over the top of ordinary slurs, used in Romantic music and later. The display just shows where they start and end, the typesetter allows only one level of nesting slurs as that is all that is used in music. More would require a non-printing voice carrying the extra layers of slurs.

19.4 Triplets and Friends↓

Collectively called “tuplets↓” these are handled in Denemo by two markers, one beginning the tuplet which holds the timing change and the other a simple end tuplet marker. The Denemo Display only knows how to display tuplets that start and end in the same bar, but the typesetter is not restricted in that way. You can stop and re-start the tuplets at measure breaks so that the Denemo Display understands what you mean, and control the placement of tuplet numbering and tuplet brackets using the Tuplet Brackets and Tuplet Numbering commands in the same menu. The typeset can also cope with nested tuplets perfectly well, though the Denemo Display will be strange.
There are specific commands for the more common tuplets, and arbitrary tuplets can be started using the Arbitrary Tuplet command – you give the numbers to denote the fraction that the timing is changing by (e. g. triplets are 2/3 of the duration written so you give 2,3). If you wanted 7 notes in the time of 4 you would give 4, 7 so that the durations changed by 4/7, after seven 1/8-notes you would have the equivalent of 4 1/8-notes duration.

19.5 Grace Notes↓

Both appogiature and acciacature are supported, as well as inserting pairs of beamed grace notes (other amounts of grace notes should be manually beamed see the section on beaming19.1↑ ). Grace notes are ignored in the simple playback, use the playback view to hear them.
Grace Notes present a peculiar problem to the LilyPond typesetter that Denemo uses. As they do not have any duration it gets into difficulties if there are other things (such as time signatures, double bars etc) going on at the same time. The problem arises when other parts are also sounding and they don’t have the same grace notes. There is a command in Denemo to work around this by installing “grace note hints” – these are dummy non-printing grace notes in the other parts. This is done automatically by the Check Score routine, so normally you don’t have to run it yourself, but it is in the Notes/Rests->Grace Notes menu. It is good to be aware of this however, as you will see these pale yellow rests that declare themselves to be grace notes in the input music display sometimes.

19.6 Ornaments↓

Notes/Rests->Markings->Ornaments for ornaments attached to notes/chords. Directives->Markings->Ornaments for customized ornaments which appear in the Denemo Display as separate objects before the note they decorate. Besides all the standard ornaments, there are commands to stack accidental signs above/below ornaments and to create customized ornaments, drawn using an external vector graphics editor. One set of custom-built ornaments for French harpsichord ornaments is provided.

19.7 Dynamics↓

Notes/Rests->Markings->Dynamics for dynamic spanners (cresc. dim. etc, both hairpins and textual). Directives->Markings->Dynamics (shortcut Ctrl-d) for dynamic marks (p, sfz etc) they appear as objects in the Denemo Display just before the note they relate to. These dynamics affect both typeset and playback.
In some circumstances it is desirable to place dynamics in a separate Dynamics Line (or Staff). This is often the case for the dynamics centered between piano staffs; it ensure that hairpins align with each other and that other dynamic markings are placed consistently. It also allows for positioning of dynamics markings other than directly on notes – they can be placed at slightly later or earlier times. To do this notes of shorter duration are put in the dynamics staff and the dynamic markings are attached to them. The notes are just dummy notes to indicate the timing of the onset of the dynamic attached.
Sometimes, all parts have the same dynamics. In this case a single Dynamics Line can be placed at the bottom of the system and given a blank part-name. Staffs with blank part-names are printed with every part, so this line of dynamic markings will appear under every part printed with the Print Part↓ command (or the Part button in the Print View).

19.8 Tempo↓ Markings

Directives->Markings->Tempi and Metronome Marks allows insertion of a tempo change (both typeset and playback). Change of beat is also in this menu.

19.9 Text↓

19.9.1 Simple Text

For simple use Directives->Markings->Textual Annotation command may suffice. This allows you to place some text positioned above or below automatically or as you decide.

19.9.2 Multi-line Text and Music

figure images/MultiLine.png
The most general command is Directives->Markings->Multi-line Text and Music. As the name implies, this is used to create markings that can include new lines, as well as music snippets6↑, chord symbols, musical signs etc.
The Preview Pane at the top shows the final effect – it is updated as you type and a Preview button is provided if it fails to update.
The new lines can be simply introduced by using the ¶ mark, which is inserted when you press Enter. For more control over new lines and columns you should delete these and use the commands in the Selection menu.
You can not only insert simple text but also control the italic, bold, superscript, font-size etc, as well as inserting actual notated music, fret-diagrams in the sentences. These work by inserting “markup”, that is the text is interspersed with markup commands – \bold, \italic etc – to indicate what appearance is desired. The Insert button gives a menu of things to insert at the text cursor position, while the Selection button gives a menu of commands to alter the text selected. If any particular markup is not in the menu then you can type it in – the markup “\dynamic f” will insert a forte sign by accessing the special font used for dynamics. For other markup commands are available, documented in the LilyPond manual.
Note that the markup commands are generated automatically in a distinctive font, monospaced and bold. This is not essential, but helps to remind you that it is a special syntax, you can just type in the syntax yourself. Take care when editing as errors can make trouble when typesetting: it is essential that the braces {} form pairs, for example.
By right-clicking in the Denemo Display on standalone markup objects you can edit the text and many other aspects of the object, such as how it displays itself in the Denemo Display.
Use Insert->Insert (with value)->Paste Note Name for the insertion of automatically-transposing note names (so that things like B-minor in a title will transpose when the score is transposed) . The Insert menu also allows to insert fret diagrams etc.
As a final check, click Preview before you finish – if it does not typeset correctly edit it again to remove the error or delete it – don’t leave it as you score will not typeset with bad markup in it.
The text when it appears in the final typeset score can be edited via right-click for the position or content. This same interface is also used if you edit the text of titles or the text to show between/after movements (e. g. on a page intentionally left blank↓), but in these cases the text will be on a single line (unless the Selection->Column and Selection->Line are used to create multi-column/line text explicitly).

19.9.3 Text Spanning

In the Directives->Markings->Spanning Directives->Typesetter>Spanning menus are commands that cause markings that span a passage of music, such as Cadenza and Piano Sustain pedal marks, ottava markings, and extended trill marks. Here also are 1st and 2nd (and nth) time bars, with shortcuts r,1 for starting a first time bar, r,2 starting a second time bar and r,e for ending either. The Nth time bar can be used to hold any text needed (i. e. use this for a first time bar if the indication should be other that 1.).

19.9.4 Rehearsal Marks↓

The Directives->Markings subdirectory also holds the Rehearsal Marks commands. Marks have a special property that they only appear once at the top of the system, even though they can be placed in each part. Theu can be custom text or default, and can be used as bookmark↓s for navigation. The custom text marks can be edited using the full Multi-Line Text and Music interface.

19.10 

20  A Survey of the Input Methods

20.1 Introduction

Denemo allows you to enter notes via PC keyboard, MIDI keyboard, Virtual on-screen piano keyboard or microphone input.
With Denemo you can tailor Denemo to allow you to use your preferred method of entering notes via keyboard. You can set the keyboard shortcut for a command just by pressing the desired key while the menu item is selected. You can right click on the menu item and choose Open Command Center to set a two-key keyboard shortcut.
By default, Denemo offers several ways of entering music: typing at the keyboard, playing in via a MIDI keyboard (controller), playing in acoustically using a microphone or choosing items from the menu system.
Typing at the keyboard can be very fast, if you forget which keypress you need you can consult the menu system to find out. This method is good for touch typists.
For entering a lot of already written-out music, playing the music in via a MIDI keyboard or microphone can offer the fastest and most musical method.
With all methods of note entry a measure start sound will be heard when your note entry has moved to a new measure, which means you do not have to look up to know that you have started a new measure as expected. This measure start sound can be set to 0 in the preferences if unwanted.

20.2 Playing Notes into Denemo – MIDI

Denemo can take pitches directly from MIDI input↓. Select Input->Midi Input. The control panel allows you to choose the enharmonic range↓, the default centers around the initial key signature↓ (e. g. E-flat to G-sharp for C-major). If you enter a diminished or augmented interval the note will be played in a separate MIDI channel which can be used to alert you to pitch-spelling↓ mistakes (e. g. entering A-flat when G-sharp was meant, you will get a lot more augmented and dimished intervals if you have the enharmonic range set wrongly for your piece).
The best way to use the MIDI keyboard is enter the music firstly as pure rhythms using the pc-keyboard, ignoring the note names. The durations show as yellow/brown notes. Each duration makes a distinctive sound as you enter the durations. As you start each measure a sound is made so that you can keep your eyes on the score you are copying from, without needing to look up and check that you haven’t miss-typed. If you are a reading musician you will find that you tap in the rhythm rhythmically which helps to keep your place in the piece you are entering.
Once you have entered the rhythms for one or more measures you can play the notes via MIDI – the cursor automatically goes to the start of the rhythms you have entered. As you play notes in via MIDI they give their pitches to the rhythm you have notated. By this means you can enter a piece of music in the time taken to play it twice – once to give the rhythm and once to give the pitches. If the piece modulates strongly you may need to shift the set of accidentals used to match the score, the pitch spelling facility will alert you to this. (If entering pitches via a mic you need to navigate to the start point, but this isn’t needed for MIDI in).
Under Input->MIDI are various "MIDI filters↓" that allow you to control how the MIDI input is used: with none active the behavior is as if you had entered the notes using the pc-keyboard, but with the following advantages

20.2.1 The Numeric Keypad↓

The set of keys for entering numerical data that appear on full-sized keyboards make a very useful tool for entering rhythms. Even if you use a laptop without such a numeric keypad it is worth the 5 or 6 dollars/euros/pounds that a separate USB keyboard costs nowadays – it can be blu-tacked to your MIDI controller for easy access.
The default key shortcuts for the numeric keypad are illustrated here:
figure images/NumericKeypad.jpg
Here I have actually stuck labels with the most used durations and over-drawn an indication of the others. (Keys 5 and 6 do the1/32 and 1/64th notes). The keypad 7 does triplets with a double press (so that it makes three presses for a triplet, e. g. Key 4, Key 7, Key 7 for a triplet of 1/16th notes). The dotted rhythm “dottifies” the current note whatever its duration is. Likewise the grace note key turns the current note into a grace note and the tie key turns tied status off/on for the current note. Keypad 8 fills the rest of the bar with the current note or rest, while Enter duplicates the current bar. The enharmonic shifts↓ can be pressed repeatedly to shift the set of accidentals to be used sharp-wise of flat-wise, subsequent notes played in will be taken from the new set, which is indicated on the status bar. The duration keys, triplet key and dottify key can all be used with the Control modifier to slur from the previous note.
With this arrangement you can play in the rhythm of a piece in musical time and then play once more with the MIDI keyboard to add the notes (chords require the Alt key or foot pedal). Before you are practiced in this use of the numeric keypad it is a good idea to do just a bar or two, or a line or two at a time, so as not to lose your place.
Some computers don’t respect the numeric keypad’s keys – confusing the Enter with the Return key for example, or treating Shift-2 as arrow-down. Try the numlock key to see if you can persuade it to take you seriously, or look into any key-mapping facility there may be with the machine. And, beware! a separate standalone numeric keypad might seem like a good idea but in fact they are a nuisance, besides being more expensive, as they have things like a 000 key which emits three keypresses at your peril!

20.3 Using an On-screen Piano Keyboard

The Input menu offers you a Virtual Piano Keyboard. This behaves like an attached MIDI keyboard but you click with the mouse or tap on your touchscreen instead of pressing the keys. The PC keyboard continues to work while using the on-screen keyboard, so you can delete/alter add ornaments freely while using this “keyboard”. Chords can be entered with a left-click, and as with a real MIDI keyboard you can enter as much of the rhythm before adding pitches (see 20.2↑).
The default keyboard is eight octaves around middle C which is highlighted by the letter C engraved on its keyhead. The Virtual Keyboard window can be scrolled to access other parts of the keyboard and made as wide as needed.
figure images/VirtualKeyboard.png

20.4 Using the Denemo From the PC keyboard

20.4.1 Note Entry

The default keyboard shortcuts appends a note when you type a number key 0-6 with the pitch taken from the cursor height and inserts a note when pressing a letter key a-g. This provides one way of entering notes – move the cursor up or down to the note position and press a number key for the duration. If the note is to be out-of-key then the equal or minus key can be used to sharpen/double-sharpen/flatten/double-flatten the next note. This method of note entry is probably not the most efficient however: in the Input->PC Keyboard menu you can choose to make the number keys change the prevailing duration without entering a note. With that setting you can use the note names to append notes to the bar only pressing the number keys if the duration changes. The duration can be dotted/double dotted with the period key, and the octave adjusted with comma (for down) or apostrophe (for up).
Mixed mouse and keyboard strategies are possible too. For example with one hand changing the prevailing duration via the keyboard the other can click on the Insert Note buttons in the Note Insertion palette.

20.4.2 Chord Entry

The standard keybinding for entering a note in a chord is the Insert key, Ctrl-Insert or Del,Del deletes. The is inserted at the cursor height, use - and + to flatten/sharpen the note before you enter it (avoiding hearing both notes if you flatten/sharpen afterwards). There are also commands to enter a named note Alt-a, Alt-b … are the standard shortcuts for this. When a chord should have two notes on the same line or space↓ the same keypress can be used to enter it, however selecting which note to edit can be tricky. The easy way is to use the Object Inspector↓’s “Alternate note at cursor” button to make the note you want accessible for editing.

20.4.3 Editing Music

When not appending music, the letter keys change the note at the cursor to that named note. You need to use the shift key to insert a new note. So Shift-a,Shift-a inserts the note A etc. Plain a edits the note at the cursor to be an A. Likewise with the numeric keypad the Shift key can be used to edit a note duration, while the plain number keys insert the duration of the note at the cursor. (If you do not have a numeric keypad, you have to use the number keys – best to plug in an additional USB keyboard with numeric keypad, they are very cheap nowadays).
Rests are entered with Alt-0 Alt-1 …
Spacer rests (that is non-printing rests as seen in keyboard polyphony) have shortcuts too Mod4-0 etc, where Mod4 is the key with a flag on it. However, on Windows machines you will need to reclaim the Windows Mod-4 key from Microsoft or re-define the shortcuts, e. g. to Shift-Alt-0 etc or Ctrl-Alt-0.
The Caps Lock can be a nuisance – you will sometimes have it turned on accidentally and wonder why keypress are not working. You can use it to achieve Shift-A, Shift-B … but it is probably best left alone.

20.5 Playing Notes into Denemo – Audio (Soundcard Mic Input)

Denemo can listen for, and detect the pitch of notes on the mic input of the computer; it doesn’t attempt to guess the rhythm – such systems do not work well – but you will find that playing the notes in time will help you to play them in, as well as make playing them in a musical experience rather than a chore.
Playing the notes in can be much quicker than using the keyboard since the note octave and accidental are all given just by playing the note. If you are able to play a musical instrument then this will probably be much faster for you than typing note names, octave shifts and accidentals at the computer keyboard. Using the headphones-out of an electronic keyboard avoids "noises-off" interfering with the pitch detection. Many microphones and pickups benefit from some pre-amplification – it is worth getting the level right before you begin.
When you select the Input->Audio on the Main Menu the Pitch Recognition window pops up. While the mouse pointer is inside the score drawing area the score is sensitive to pitches heard via the microphone input. The background colour of the score changes to show that the notes will be entered into the score.
There are two ways of using the pitch entry – Overlay mode (default) and Insert mode. The button marked Insert causes notes to be entered into the current measure in the prevailing rhythm – the mode is set to Insert for this. The button marked Overlays overlays the notes already present with the pitches you sound. There is a third button, marked Tuning, which is a state-of-the art musical instrument tuner.
Music is entered into the measure which holds the cursor. If you are overlaying a rhythm already entered, then the first un-overlayed note in the measure is overlayed by the note detected. You can delete the overlay using the regular delete keys, or clear them altogether if you want to start over in a measure. If you are in Insert mode then the notes detected will be inserted at the cursor position.
Use the enharmonic shift to select whether Bb or A# should be entered when you enter the given pitch – you can usefully go as far as B# and Fb.
Use the transpose control to shift up or down by octaves.
Most of the other settings would require study of the Aubio documentation to understand, but the one marked threshold may be useful to make the detection less sensitive to ambient noises if using a microphone with an acoustic instrument.
The best set-up is to plug the headphones-out socket of an electronic keyboard into the mic input, and choose a piano setting on the electronic keyboard.
If you don’t have any musical instrument that you can plug directly into the mic in, then you can use an acoustic instrument with a microphone, in which case move your microphone closer or further from your instrument to get reliable detection. Too close and you get double detections, too far and you get missed ones. To check for good detection open a piece of music, set Overlay mode and put the cursor in the first measure and play the piece in – the notes should all turn blue if you have perfect detection. It is worth while getting perfect detection – more than one or two miss-detects per piece of music and you may want to use the Insert rather than the Overlay method.
The Audio Input button introduces a special entry mode where the pitches you play in will overlay the rhythm, appearing as blue notes. You can delete any wrong pitches using the usual delete keys, without deleting the rhythm. In fact if you have an "interloper" (an extra spurious note) you can delete it and the other pitches will all move along to their correct places.
Another method of playing music in acoustically doesn’t involve entering the rhythm separately. For this select Input->Audio and then choose Insert instead of Overlays on the Pitch Recognition Panel that pops up. With Insert the sounded notes are entered as in the prevailing rhythm. The same applies if you have MIDI – by choosing a rhythm (e. g. half-note, quarter-note, or a custom rhythm pattern) and playing in the pitches you can enter the music into a blank score.

21 Transcribing from Facsimile or Hand-written Score

If you have a PDF↓ of music you wish to transcribe with Denemo you can display it within Denemo and create links between the source material and your transcrition. This means that when you later review your work you can quickly locate which point in the original manuscript belongs to which point in your transcription. In the screenshot the Print View window is shown on the left with the facsimile on the right. The Print View is a Custom Layout showing the chords both as notation and as chord symbols (as well as the original figures). The blue marker shows the position of the link that was clicked on to open the facsimile at the right place. Note that the piece is also being typeset in a different key – that is just another aspect of this custom layout. Everything – including the chord symbols are automatically adjusted.
figure images/SourceView.png
Select the File->Open menu and the item Open a Source for Transcribing. Select the PDF containing the music to be transcribed from. The PDF is opened in a Source View↓ window. Right-click in this window at the point that your transcription will start. This will create a link – a Denemo Directive Object – in your score at the Denemo cursor position, shown as arrow icon. If you later use a right-click on this Denemo Directive the source file will be re-opened with the blue highlight marker on that point in the score. (Depending on the position of the top of the page you may need to scroll the Source View window up or down to bring it into view).
When you re-open the score to check or edit at some point you can click on a nearby link and the source file will be opened and the position highlighted once again. If you place a link as the very first item on the very first staff of a movement then the link will be automatically opened when the score is opened on that movement.
Note that when Denemo locates a position in the source PDF it always puts the start of the page that holds the location at the top of the window. Use the Previous/Next button to ensure you have the page start at the top before using it to insert links. Note also that the links refer to the page with the zoom value that obtains when you create the link. It will re-open with this same zoom factor. The link will continue to position itself as you zoom, but if you zoom out so far that the space outside the page becomes visible the links will not match until you zoom back.
You can also “mask out” areas of the source view that you don’t want to see while you are transcribing. This is particularly useful if you are transcribing just one part on a multi-part system. You mask out the staffs up to the one you want to follow and the ones from after that up to the same part in the next system and so on. To do this you drag down over the material you want to exclude – it turns gray leaving the part you are interested in easy to see at a glance. You can remove any one of these grayed-out areas – or all of them – by clicking inside them whereon you get a menu of choices.

22 Using a Proof-Read PDF

If you send the PDF↓ output of your score to someone to proof-read they can make PDF annotations to it. In the File->Open menu choose Open Proof Read PDF to open a proof-read PDF. It will open at the first annotation, and, by clicking on the note the annotation applies to, the annotation is transferred as a comment into the score before the note chosen. When you have done all the annotations on the first page advance to the next page with annotations using the button "Next".
There are limitations – the PDF must be created from your score with point-and-click (the default) and you must not alter the score in a way that would invalidate the point-and-click. (Basically, don’t edit again until the proof-reading is done, always good practice!) Also, enter the annotations in order from the start and don’t edit before you have entered all the annotations, as this could invalidate the point-and-click.

23 Score Setup

Denemo provides different ways to set up scores:

23.1 Using Templates↓ to Setup Scores

Denemo comes with a few preinstalled templates. You can also create your own templates as well, in fact you can use any Denemo file as a template, just open it using File->Open->Open Custom Template. (The only difference is that, opened this way, the score is a new i. e. untitled score)
  1. Navigate to File, Open Template. The Open dialog box appears.
  2. Double click on a template name from the list of templates. The dialog box closes and the template appears.
  3. Adjust the clef, key and time signatures as needed.

24 More Features

24.1 Transposition↓

Denemo has much better transposition facilities than the common music notation programs such as Sibelius, Finale and Musescore. If you have used those programs you are probably thinking “I need to transpose this music”, meaning you are going to change all the notes and chords you have entered along with the key signatures. You can do this in Denemo (see Physical Transposition24.1.1↓) but usually it is far better just to say that you want score to be typeset in the new key. This takes care of everything in one go – even footnotes that refer to the pitches of notes in the music will transpose (unless you have entered them as fixed values). And your input music stays looking just as you entered it – essential if you have to look back and compare with a source for instance.
The commands to transpose a score are in the Score->Typesetter menu. “Transpose on Print” is a graphical user interface – you get presented with a new tab containing two notes – clicking the Transpose button will transpose so that the first pitch will be typeset as the second one. The initial values a C and Eâ™­ (up a minor third) so by typing G this would become up a fifth. The first note could be changed as well, if you know that D should become F♯, for example, then you can make those the two notes.
The other command is quicker but more technical – (Print) Transposed lets you type in the names of the two notes. The technical bit is how you specify sharp and flat and which octave. To specify sharp the note is followed by “is”, for flat “es” (these are actually the Dutch names!). Octaves are indicated by ’ for up and , for down, so for example c c,, would mean transpose two octaves down.

24.1.1 Physical Transposition

In the case where you have changed your mind and want the actual notes you have entered to be altered the commands to do this are in the Notes/Rests->Transpose menu. The most general of the commands are Arbitrary Transpose Down and Arbitrary Transpose Up. These allow you to describe the interval you want to transpose the music by e. g. m7 for a minor seventh, d5 for diminished 5th. Alternatively you can use two pitches to describe the interval as in the previous section. Note that these commands work on the note/chord at the cursor or the selection; any key signatures will need changing separately if needed.

24.2 Search and “Replace”↓

There are two categories of search available in Denemo. The first is in Navigation->Seek menu and the other is in the Edit menu.
In Navigation->Seek is the command to find a selected rhythmic pattern (Ctrl-f, Ctrl-f) – that is to find a sequence of notes with the same rhythms as those of the selection. Once found the pattern can be edited, either manually or by executing a series of steps recorded in the Scheme window (see section 25.2.1↓). There is also a command to find to find a sequence of selected notes. In both these cases the search can be resumed by executing the command with no selection.
The second sort of search is in the Edit menu (and also available from the Object Editor). Ctrl-e,e starts a search for objects of the type that the cursor is on, while Ctrl-e, Ctrl-e offers all the types of object in the movement and allows you to select which to search for. Ctrl-e,r resumes the search. When found the object can be manually edited, deleted or modified using recorded commands as described above. The search order is column-wise, that is everything at the same musical moment is searched and then the next musical moment is searched from the top staff downwards. When the end of movement is reached you can wrap to the start of the movement or move to the next movement or wrap round to the first movement.

24.3 Piano Staffs, Orchestral Scores etc

A piano staff can be added using the Staff->Add Staff menu (or by adding the Piano instrument from the Staff->Add Staff->Add Staff for Instrument command). In addition, piano staffs, and staff groups such as choir staff can be created using the Staff Groupings menu under the staff menu. You can set a piano staff within a staff group by setting successively the StartPiano and StartGroup contexts on a single staff, or more generally setting StartPiano, EndPiano on adjacent staffs within a staff group.

24.4 Single Staff Polyphony↓

Use the Staffs/Voice↓s->Voices menu for placing more than one voice on a staff. You can set the initial voice number from this menu (voices 1 and 3 are stem up with slurs and ties etc adjusting to suit, voices 2 and 4 are stem down). Directives can be placed in the music to change voice, see Directives->Typesetter->Voices menu.
You will also need spacer rests for voices that are silent, and commands to displace rests vertically and horizontally (see Notes/Rests->Rest Insertion menu), and commands from the Voices menu under the Staffs/Voices and Directives->Typesetter menus.

24.5 Entering Figured Bass↓

To enter figures choose Notes/Rests->Markings->Figured Bass. There are some shortcuts that enable all the work to be done with the numeric keypad. A brief summary is given by right clicking the option. The conventions are described in the LilyPond docs.
There is also a MIDI filter for entering figured bass in the Input->MIDI menu. With this you play the bass note at the cursor and then the notes that the figures are indicating; on releasing the bass note the figures are entered for that bass note. The footpedal allows a sequence of figures to be entered on one note and also to enter extenders.

24.6 Fret Diagrams↓

Fret Diagrams can be placed on the score using the command Fret Diagram in the ObjectMenu->Directives->Markings menu In addition by assigning a Denemo staff to display as fret diagrams, chords can be entered in standard notation which will then be dislayed as fret diagrams. See ObjectMenu->StaffMenu->StaffPropertiesMenu->FretDiagrams for this.

24.7 Tablature↓

Music can be displayed in tablature – the default is for standard guitar tuning but others can be set. The menus to explore are:
ObjectMenu->StaffMenu->StaffPropertiesMenu->Tablature
ObjectMenu->Directives->Typesetter->Tablature
It is possible to display the same music as both notation and tablature, and example of how to do this will be found under File->Open->Open Example.

24.8 Entering Chord Symbols↓

There are two quite different ways to enter chord symbols (also known as Chord Names↓, Fake Chords). If the chord changes do not happen mid-way through notes then you can use Notes/Rests->Markings->Chord Symbols to attach chord symbols to the notes themselves. A brief summary is given by right clicking the option. The conventions are described in the LilyPond documentation.
An alternative is to set a staff to display not the chords in regular notation but the chord symbol that represents the chord. Create a staff and use Staff->Staff Properties->Chord Symbols. Then this case you enter actual chords which will be displayed as Chord Symbols. The duration of the chords will determine the positioning, enabling chord changes mid-note. The chord symbols can then be arranged above or below the melody or other representation of the piece using Staffs->Swap Staffs or creating a custom layout in the Score Layout window.
A palette is available4.5↑ for inserting chords, with this palette selected the key sequence pm7<Enter>, for instance, will insert/append a c, e-flat, g, b-flat chord if the cursor height is on a C, (or c-sharp, e, g-sharp, b if there is a pending sharp↓).
Chord Charts can also be created – there is a Chord Charts palette for these. Compact chord charts require a patch to LilyPond – enquire on the mailing list for this.

Part III. Advanced Topics

25 Customizing Denemo

25.1 Adding and Editing Key/Mouse Shortcuts

Denemo allows you to choose which keys activate which commands (shortcuts). It also allows you to choose Mouse press/release gestures (in combination with keys such as Shift, NumLock, CapsLock etc).
See The Command Center↑ for setting shortcuts. The following quicker method can also be used for one-key shortcuts. To choose a shortcut for a menu item, select the item (it becomes highlighted) and press the key that you want to become the shortcut. If your choice of keyboard shortcut already belongs to another command, you are warned about this, and given the chance to change your mind or steal the shortcut. Also, you can choose whether to distinguish between keypresses with, say the NumLock down and those without or to ignore it. If the NumLock is set but no command for that key specifically requires it then the setting of NumLock is ignored and the keypress is treated as if the NumLock was off.
The menu item that activates the command shows the shortcuts that exist in bright blue lettering. PrsL-CapsLoc, for example, is the Press action on the Left mouse key while the CapsLock light is on. In the default command set this is linked to the BeginSlur command, so that together with the RlsL-CapsLoc for the release of the left mouse button, you can "draw" slurs by using the mouse. Similarly, Shift with left mouse button (MveL-Shift) is set to allow you to drag notes up and down the staff. (This is using Command MoveNoteToCursor).
For mouse shortcuts invoke the Command Center with the right click on the menu item. The Set Mouse Shortcut Dialog requires you to set which button and action you want to use and then to hold/lock the keyboard modifier while clicking on the big button. The setting you have chosen is shown, and you click ok to accept it.
Mouse Shortcuts are tricky to set – you are able to control what happens on mouse button press and release, which can be used to do things like drag notes up and down. But they are tricky to set up!

25.2 More Commands

Adding More Features

It is possible to add more commands to the set that Denemo ships with. Some of these are shipped with Denemo, but not added automatically so as to keep the menu sizes manageable. Generally, you right-click to find more menu items to add; once added you can set a keyboard/mouse shortcut and keep the command in your default setup. Scheme to be executed at startup can be placed in the denemo.scm file.
An example – quicker dynamics selection
It can be slow to choose dynamics (Ctrl-D) because the list is quite long to move down (or move to the mouse). You can define a list of the dynamics you actually want to be readily available as for example: (define DenemoDynamicList ’(("f" "127" "Forte") ("p" "127" "Piano"))) This makes forte available just by pressing Return and piano available by pressing down arrow Return. (The others via More of course). If you place this in (home directory)/.denemo-x.x.x/actions/denemo.scm then it will be defined when you start Denemo.

25.2.1 Recording a Denemo Macro

You can record a frequently used sequence of actions into the Scheme window. These can be used in search and replace operations or they can be installed as a command in the menu system and given a keyboard shortcut or placed in a palette.
To do this choose View->Scheme Script. (You do not have to understand what a Scheme Script is to use this!) In the window that pops up check Record Scheme Script and then do the set of steps you wish Denemo to record. As you execute each command the Scheme window gets that command added to it.
For example, suppose you wanted to place a trill on a particular note in a certain rhythmic pattern that occurs frequently in a piece. You would record the cursor moves and the Trill command needed to edit the pattern concerned and then use the Search and “Replace” facility to seek the pattern you needed selecting “Continue” or “Execute Scheme” as each pattern is found.
Or, suppose you wanted a command to delete the next note (there are commands to delete the previous note and the current note, so why not?). You would enter some notes, put on Record Scheme Script and then move the cursor right two steps and delete the previous note (with Backspace if that is your shortcut). (Each time you use a command you will see the Scheme syntax for that command entered into the Scheme window). Now turn off Record Scheme Script and you can experiment with your new command by pressing Execute in the Scheme Script window. To save this new command for future use, you right click on a menu item (in the menu where you would like the command to appear) and choose "Save Script as New Menu Item", this will ask you to make up a name for your new command as well as a label for the menu item etc.
You can save the command in your default sequence of commands (via Edit->Customize Commands…->Manage Command Set->Save as Default Command Set). If not you will be asked if you want to save your new commands when you exit. Otherwise you can re-load via the More->My Commands menu item.
Turn off the Record before starting the search and replace, otherwise the search and replace command itself will be recorded. Delete the recorded commands before saving your score, unless you want it to be executed each time you open the score. (See the section Musical Scores that do things!

25.2.2 Editing a LilyPond↓ Tweak

There is another way of adding your own favorite LilyPond tweaks, which is by modifying a tweak that has already been done. This can be done by using the text-edit dialog on an existing Denemo Directive (usually found under the Advanced button provided in the Object Editor11↑). Here you can see the actual LilyPond text that will be inserted, and there is a button to create a script to generate whatever you choose to enter. You can also enter the name of graphic images (.png files) that are to be used to represent your item in the display, and say where it should be positioned.
Once you have created the script, it can be saved in the menu system by right clicking on an item in the menu where you want to place the command, and choosing "Save Script as New Menu Item" as above. An alternative to creating a command in the menu system is to create a palette button (see the Object Editor11↑).

26 Writing Scheme↓ Scripts

figure images/SchemeWindow.png
If you are a programmer you will have guessed that you can edit the Scheme Script window to create any command you want. Even if you are not familiar with Scheme you may find that you can adapt other scripts to do what you want.
A good example of this is a script to insert a particular LilyPond directive into the score. This is all that many scripts do: it is easy to see the piece of LilyPond in the Scheme Script window, and by changing it you can create a new command.
For example, from the More menu select the command /menus/ObjectMenu/Instruments/Orchestral/RehearsalMark (the files are laid out in folders/directories in the same way as the menu system itself). Then choose Get Script into Scheme Window from the right click menu. With this command its script is appended to the Scheme Script window. Here you can see the part that says
(d − DirectivePut − standalone − postfix"RehearsalMark""   mark   default")
which is inserting the LilyPond directive "\mark \default" which inserts the default rehearsal mark. (The extra backslashes are needed to tell Scheme that you literally mean a \ sign). You can change this to insert any other LilyPond that you need – always doubling the \ signs. Then you can save as a new menu item, a palette button, or use Save Script from Scheme Window to customize the command you started with.
More ambitious programmers will need to know all the commands available. Besides the complete Denemo command set (the list is given in the Command Center window) there are the following additional Scheme procedures defined (see the files actions/denemo.scm and actions/denemo-modules/*.scm for more).

26.1 Commands Getting User Input

All these commands are invoked from scheme as (d-Command args…)

26.2 Commands Getting Information about Object at Cursor

All these commands are invoked from scheme as (d-Command)

26.3 Predicates

Testing what is true at the cursor position

26.4 Iterators

The parameters are either a string (script) which will be evaluated after moving the cursor to step of the iteration or a scheme procedure (a thunk).

26.5 Directives

26.6 Message Bar

These commands put a message on the status bar to the right hand side. They are defined in actions/denemo-modules/helpsystem.scm. Help messages are pushed paired with a symbol (e. g. (cons (’mytag “mymessage”))) and can simply be Popped or removed using the tag.

26.7 Move and Search

26.8 More …

This is a fairly comprehensive listing of Scheme commands that are built-in but not including those in the menus. Call these via (d-<command> params …), e. g. (d-GetNote 2) gets the second note from the bottom in a chord.

26.9 Commands for MIDI Import

A MIDI file can be loaded into Denemo in order to convert it to music notation. This is not generally possible (because of the nature of the information stored in the MIDI format), but it is worth trying sometimes.

26.10 … and More

This is a hand-made list most of which already appear in the comprehensive list above, but with hand-written comments.
Standard Denemo commands that pop up dialogs will work as usual if no argument is passed to them from Scheme. In general if a string consisting of strings of the form "name=value" is passed these will be used and no popup will occur. The field "name" will be given the value "value". The \0 is a NULL character that separates the assignment strings. As a shorthand if there is only one value being passed you can just pass the value. The names of the fields depend on the action being called. So for example:
(d − Open"filename = myfile.denemo")
will open the file "myfile.denemo".
This feature is being rolled out, and currently works for:

26.11 Midi Filters

The MIDI filters are scheme scripts, so they can be tailored to do whatever you wish. One example is a filter that enables you to enter Figured Bass figures by playing the notes corresponding to the figures while holding down the bass note. Another is the "AngryDelete" filter. With this filter on notes are entered normally with the cursor advancing automatically, but if you make a mistake and press the wrong note just hit the next one much louder and it will make the correction for you! MIDI filters are found under Input -> MIDI.

26.12 LilyPond Editing

Introduction
From version 0.7.8 we have the ability to edit the LilyPond output within Denemo. This approach immediately makes Denemo able to do many more things (e. g. multiple verses for songs) with the music still editable from within Denemo. The gallery of examples and the standard templates contain examples which you can use.
These can be used without knowing the LilyPond language (provided a suitable template or example file exists). Alternatively, with a general idea of how a LilyPond file works tweaks from the LilyPond documentation can be inserted into the LilyPond output and stored with the Denemo, leaving open the possibility of further editing of the notes within Denemo without the need to re-apply tweaks or keep separate LilyPond files.

26.12.1 Using the LilyPond Window

Under the View menu is a Show LilyPond item which pops up a window with the LilyPond output in it. The text is interspersed with buttons which enable you to hide or show the various sections or to create custom versions. The text in bold can be altered and the alterations are kept in the Denemo file.
The two windows are kept in sync, so you can move back and forth between editing textually and editing in Denemo.
Right clicking on the text gives a menu for actions on the LilyPond text. LilyPond text can be inserted between notes, and the final section (the score layout) can be turned into editable text (see Score Layout). There is one for moving the cursor to the LilyPond text for the current Denemo object. Moving the cursor in the text window with the arrow keys causes the Denemo window cursor to move in synchronism.
This menu also includes a Print command that operates on the visible LilyPond text in the window. This means you can open specific custom score layouts and print from them, or even make a temporary edit for just one print. If you save the score with custom layouts then these are remembered. So when you reload and the custom score layout will be printed.
Detail
Several custom layouts can be kept, selecting them in the Score Layout view enables the same Denemo file to print a variety of things from the same music input.
For example, a full score or a set of parts, or several voices on group of staffs or even a piano reduction.
The various Voices/Staffs for the different Movements are separated by buttons. These are labelled by enumerating the movements and staffs in order, so the first voice in the first movement has the music defined as "MvmntIVoiceIMusic" and so on. Within these music blocks you can insert arbitrary LilyPond text between notes, (the insertion points are marked by grey blocks) and the text inserted will appear as a LilyPond directives in the main Denemo window.
The main Denemo window also moves its cursor to correspond with where you are editing. (It should of course move the cursor immediately you click on a point in the music, but, as yet, it only moves the cursor when you press a key just before the note name – one of the arrow keys will do).
Custom layout blocks can be created by right-clicking on the Standard score layout and selecting create custom score layout. The Score Layout window allows creation of customized layouts via a GUI. If you print a single part from all movements, you get the standard scoreblock for this and can add it to your custom score block so that a single print command prints, e. g. both a full score and parts. Using the \book {} block you can put these into separate files (stored in the folder .denemo in your home folder).
The music defined by MvmntIVoiceIMusic is then used in the score blocks at the end of the LilyPond window, by the expression \MvmntIVoiceIMusic. This means that the same music can be output in several different ways, so that the same Denemo file can contain custom score blocks to output the music as a Piano Score with several voices or separate parts, for example.
The definitions for MvmntIVoiceIMusic actually look like this:
Where \MvmntIVoiceI is the actual block of notes you have written, while the other definitions hold the time signature, clef etc. By using these, you can print the same music with different clefs, still maintaining the ability to edit the notes in Denemo.
Note that the normal Denemo Print commands are still operate as they do if you never look at the LilyPond window. What happens is that if you select the Print Current Part menu item then this creates a tailored standard scoreblock for that part. However, if you use the File->Print command then it prints the first custom scoreblock that is open (visible) (or the standard scoreblock if you do not have any custom scoreblocks).
Clicking (as opposed to using the arrow keys) in the LilyPond text does not move the cursor in the Denemo window. When you delete a LilyPond directive textually you have to move the cursor to start re-inserting it.

26.13  Musical Scores that Do Things!

By saving a Denemo score with a script defined (in the script window) you can create music lessons, automatic midi player … the possibilities are endless. When you open such a score, the script is run – it can take user input and manipulate the score, or do other actions as your fancy takes you.
There is a special score init.denemo that is run on startup. By editing this you can startup with whatever template and whatever actions you wish to be performed. If you set it to do something that quits Denemo, you may need to delete the file before using Denemo normally again. Your local init.denemo is stored in the directory .denemo/actions in your home directory.To create it put the script you want in the script window and use SaveAs selecting ~/.denemo/actions/init.denemo as your file to save to.

26.13.1 What Happens at Startup

On starting the scheme script ~/.denemo-(version number)/actions/denemo.scm is executed (where ~ means your home directory and version number is 1.1.2 or later).
A denemo file called init.denemo is/was loaded, but this is deprecated.
In addition, on startup a set of keyboard and mouse shortcuts, and a selection of optional menu items are loaded. Other sets are available via the Edit->Customize Commands …->Manage Command Set dialog.

26.14 Starting Denemo – Command Line Options

Denemo –help shows the options at startup. You can open a specific score, execute a scheme script (from a file or on the command line) and more.

Part IV. Technical Reference – Denemo Directives

27  Denemo Objects

Denemo Objects are all the things that are placed in the measures of the staffs in the Denemo Display. These are Chords, Notes (single note chords), Rests, Clef Changes, Key Changes, Time Signature Changes, Voice Changes (stemming control), Tuplet Starts, Tuplet Ends and Denemo Directives. The Denemo cursor can be stepped through every Denemo Object in the bar and by double clicking the object can be inspected and edited in detail.

28  Denemo Directives

Denemo Directives give attributes to objects that are not built-in but can be changed by the user.
Denemo Directives can be attached at almost every level of a Denemo score and can modify the behavior of the element concerned. They contain fields to describe how the element’s properties should be modified, either in the display or in the printing. Elements, such as clefs notes etc have their own built-in display and print properties; Denemo Directives allow you (or scripts you invoke) to modify them for many more purposes than the built-in set allows. This means Denemo can grow – you can add features – without getting a new version.
For example the drum clef is not built-in to Denemo. Instead a directive attached to the clef has a field (graphic) set to an image of the drum clef, and another field (postfix) set to the LilyPond syntax for a drum clef, while another field (override) is set to indicate that these values should replace the normal ones, rather than adding to them.
The elements that can be modified in this way are the following:
score: the LilyPond fields (prefix and postfix) are placed at the start of the score and just before each movement. The display field is shown at the top of the display.
scoreheader: Attached to the score. The postfix field is put inside a \header{} block at the start of the score.
movementcontrol: Attached to a movement. The prefix field is placed before the movements \score{} block, the postfix after it.
header: Attached to a movement. As scoreheader but for \header{} blocks inside the movement’s score block.
paper: Attached to the score. The postfix is placed inside a \paper{} block.
layout: Attached to a movement. The postfix is placed inside a \layout{} block in the movement’s scoreblock.
clef: Attached to a clef or clef change. The graphic holds the displayed icon, gx,gy its position. The postfix field is put into the music at the point where the clef is found, replacing the normal text if the override is set.
timesig: Attached to a time signature or time signature change. The graphic holds the displayed icon, gx,gy its position. The postfix field is put into the music at the point where the time signature is found, replacing the normal text if the override is set.
keysig: as timesig but for key signatures. (e. g. used to supress keysignatures in drum clef).
staff: The postfix field modifies the whole staff context, with the display field printed at the start of the staff
voice: The postfix field modifies the voice context, with the display field printed at the start of the staff containing the voice
standalone: A directive not attached to an music element – it comes with the music and is used for things like repeat bars etc.
chord: The prefix field is emitted before the LilyPond for the chord and the postfix after it.
note: The prefix field is emitted before the LilyPond for the note and the postfix after it. Examples are fingerings attached to notes etc. Again the display and graphic fields a placed in the display positioned relative to the note via the coordinate fields gx, gy (for the graphic) and tx, ty for the display text.
The Directives are sufficiently important to have their own commands.
d-DirectivePut-type-field where type is one of score, scoreheader, movementcontrol, header, paper, layout, clef, timesig, keysig, staff, voice, standalone, chord or note and field is one of display, tx, ty, gx, gy, graphic, prefix, postfix, override, midibytes. These commands take two arguments, a tag (string) and a value to set. For example:
(d − DirectivePut − note − postfix"LHFinger""3")
will put the fingering 3 on (after) the note at the cursor.
d-DirectiveGet-type-field type is one of score, scoreheader, movementcontrol, header, paper, layout, clef, timesig, keysig, staff, voice, standalone, chord or note and field is one of display, tx, ty, gx, gy, graphic, prefix, postfix, override, midibytes. This function returns the value in the field or #f if there is no directive with the given tag at the cursor.
d-DirectiveDelete-type type is one of score, scoreheader, movementcontrol, header, paper, layout, clef, timesig, keysig, staff, voice, standalone, chord or note. This function returns #t or #f if a directive with the given tag was deleted.
d-Directive-type? returns true if a directive with passed tag is present at cursor, with no tag argument returns true if any such directive is present
d-DirectiveGetForTag-type returns the tag for the directive at the cursor of type
d-DirectiveGetNthTag-chord index Gets the index’th tag of type at the cursor, index starts at 0.

28.1 The Directive Fields

The fields of the Denemo Directive can control the Denemo Display and the LilyPond output.
The fields in d-DirectiveGet/Put have the following meanings:
postfix – A fragment of LilyPond to be output (after the LilyPond for any object the directive is attached to).
prefix – A fragment of LilyPond to be output (before the LilyPond for any object the directive is attached to).
display – text to be shown in the Denemo Display
tx,ty – where to show the text in the Denemo Display
graphic – For directives that are in the music this is a .png image to be shown in the Denemo Display (the directory bitmaps holds these). The graphic can be saved for a command using the right-click -> Save Graphic command, after selecting a portion of the print preview as the image required. For directives attached to the score, movement etc the string set here will be displayed on the button in the button box for that sort of directive (see Show Score Titles etc in view menu for showing this button box).
gx,gy – where to show thegraphic in the Denemo Display
minpixels – how much space to leave for this item in the Denemo Display
override – Contains bits to determine whether the LilyPond contained in the Directive (postfix and/or prefix fields) should override the normal LilyPond output, and whether the Graphic should replace the normal Denemo display for the item. A further tranche of bits controls MIDI output for the directive, which can override the normal MIDI interpretation of the music and provide additional information not explicit in the music notation (e. g. the tempo of an Adagio marking).
midibytes – a string of numbers (in hexadecimal format) whose interpretation is given by the MIDI bits in the override field
The override field contains the following bits:
DENEMO_OVERRIDE_LILYPOND: override the LilyPond output normally used at this point, rather than adding to the normal output. The text used is in the prefix and postfix fields.
DENEMO_OVERRIDE_GRAPHIC: overrides what Denemo would normally show in the display with the image named in the graphic field of the directive
The MIDI bits in the override field are as follows
DENEMO_OVERRIDE_VOLUME: the MIDI velocity to use
DENEMO_OVERRIDE_DURATION: affects the duration of a note. not yet implemented
DENEMO_OVERRIDE_REPEAT: indicates that an earlier passage should be repeated (from a directive of the same tag). not yet implemented
DENEMO_OVERRIDE_CHANNEL: midibytes field gives the MIDI channel to use (? implemented?)
DENEMO_OVERRIDE_TEMPO: midibytes field gives the tempo to use.
The interpretation of these flags is modified by the following flags:
DENEMO_OVERRIDE_ONCE: the value in midibytes is to be used just for the item the directive is attached to. not yet implemented
DENEMO_OVERRIDE_STEP: the value in midibytes is to be used from this point on
DENEMO_OVERRIDE_RAMP: the value in midibytes is to be used as a starting value, a corresponding directive (i. e. with the same tag) gives the findal value, values are then interpolated between these. not yet implemented
DENEMO_OVERRIDE_RELATIVE: value in midibytes is used relative to the current value (otherwise it is an absolute value; e. g. an absolute velocity etc)
DENEMO_OVERRIDE_PERCENT: value in midibytes is interpreted as percentage value. not yet implemented
These flags are combined together to get the combination required for the directive using the scheme procedure called logior.
Here is an example, making a step-change in volume of 0x40 in the MIDI output, and printing "più mosso" in the output score
;;;;;;;;;;piumosso(d − DirectivePut − standalone − minpixels"StepTempo"20)(d − CursorLeft)(d − DirectivePut − standalone − override"StepTempo"(logiorDENEMOOVERRIDETEMPODENEMOOVERRIDESTEPDENEMOOVERRIDERELATIVE))(d − DirectivePut − standalone − midibytes"StepTempo""40")(d − DirectivePut − standalone − display"StepTempo""piumosso")(d − DirectivePut − standalone − postfix"StepTempo""   markup
bold
italicp̈iùmossö")(d − RefreshDisplay)
In this example the directive is a standalone directive. MIDI commands are being extended to apply to chords and notes. Implementation of the commands for Voices, Movements, Score etc are not yet done.

28.2 Directive Edit Scripts

Introduction
Score and movement directives can define a value for their graphic – a button then appears at the top of the score which can be used to edit the directive. Likewise Staff and Voice directives show as a properties icon before the staff to which they apply (staff directives above, voice directives below). Clicking on these lets you edit the directive.
The command EditDirective can be used when the cursor is on a Denemo Directive object, or an object with a Denemo Directive attached to it. What happens then is determined by a script named after the "tag", or name of the directive. For example the command RehearsalMark creates a Directive with tag "RehearsalMark" and EditDirective runs a script called RehearsalMark.scm.
There is also a low-level editing dialog which is invoked if no editing script exists or directly from scheme using (d-DirectiveTextEdit-* tagname). This allows you to edit and delete a directive directly. The other directive editing commands are EditScoreDirective EditMovementDirective EditStaffDirective EditVoiceDirective EditClefDirective EditKeysigDirective EditTimesigDirective for directives attached to the relevant objects.
The low level edit of directives from scheme uses the following command:
(d − DirectiveTextEdit −  lt;field gt; lt;tagname gt;)
Where <tagname> specifies the directive to be edited and <field> is one of score, scoreheader, movementcontrol, header, paper, layout, clef, timesig, keysig, staff, voice, standalone, chord or note.
For example,
(d − DirectiveTextEdit − paper"PrintAllHeaders")
gives low-level access to the directive setting the print all headers command in the paper block of the LilyPond output.

28.2.1 Initialization Scripts

Each menu can have an initialization script, which can contain procedures that would be too time consuming to define every time they are needed. These scripts are guaranteed to be run before any menu item is activated within the menu. They can be read/written using the right click menu on any scripted menu item.

28.2.2 Edit Scripts

Each directive has a tag field, so that it can be recognized by the scripts that manipulate it. In particular for each tag there can be an edit script, for editing a directive of that tag.
Edit scripts are kept in a directory actions/editscripts parallel with the directory actions/menus where the commands themselves are kept.
You can read and write edit scripts by using the low level editing dialog on a directive with the tag you are writing for.
The low level editing dialog is the one that is presented if there is no edit script. Edit scripts can themselves give access to this dialog by including an option cue-Advanced which calls (d-DirectiveTextEdit-field tag) for the appropriate field and tag. For an example see the edit script for Instruments -> Orchestra -> RehearsalMark.
They have available functions to enable editing of directives which are defined in actions//denemo.scm executed at startup. The functions and variables for script editing are:

Part V. Obtaining and Installing Denemo

Denemo is available from the Downloads page of the Denemo website http://denemo.org, where more up-to-date information will be found. This is the preferred way of obtaining Denemo, as the various offerings from elsewhere are often either broken or out-of-date.

A Upgrading Denemo

If you already have a version of Denemo then installing a new version brings with it the question of retaining your preferences, shortcuts etc. These are stored in a directory (“folder” in windows) in your home directory that is named after the Denemo version number. So for version number 2.0.0 the directory is called “.denemo-2.0.0”.
They are copied for you from the old directory to the new one if you ask for this on startup. If you forget to do this you can delete the new directory .denemo-2.0.2 (say) and when you start Denemo it will again ask if you want to keep your preferences from the earlier version.

B Obtaining the Source

Denemo is available from a variety of sources for different distributions. The latest stable release (tar.gz and .deb formats) is available for download from http://denemo.org/downloads-page/. You can install Denemo from the Debian unstable repositories, using the command apt-get install denemo. Builds for Macintosh are available from the Gnu-Darwin project. The Denemo development branch can be downloaded using anonymous CVS or Git.
Anonymous Git checkout:
gitclonegit: â„  â„ git.savannah.gnu.org â„ denemo.git
Anonymous CVS checkout:
cvs − d:pserver:anonymouspserver.git.sv.gnu.org: â„ denemo.gitco − ddenemomaster
Dependencies
To build Denemo from a source package, pleas see the website for an up-to-date list of dependencies. Remember to install the development packages as well (check your distribution for the specific package name):
For Debian Users: Type apt-cache showsrc denemo at a command line to determine what are the package names for Denemo dependencies. Type apt-get build-dep denemo to build the dependent files or use apt-get to install the packages individually by copying and pasting their names to the command line.

C Installing Denemo from Source Code

Denemo is available in a variety of formats. The current stable release is available either as source code or in binary format. The Development branch of Denemo is available as a GIT source tree.

C.1 To install from source code:

  1. Open a terminal window.
  2. Change directory to the directory to which you downloaded the Denemo source package.
  3. Uncompress the source package using standard Linux tools (tar and gunzip).
  4. Change directory to the uncompressed source directory.

C.2 Generating a Configure Script

Git does not come with a Configure script; generate one by typing and pressing Enter after the line:
. â„ autogen.sh
To build from source, press Enter after each line:
. â„ configuremakemakeinstall
If you are not logged in as root user, for the last step type su and your root password, or alternately type sudo make install.

Acknowledgements

Many people have contributed to this manual, directly and indirectly, over the years, sometimes the passage of time has obscured their names. Contributors include Matthew Hiller, Adam Tee, Jeremiah Benham, Roy Rankin, Aaron Mehl, Nils Gey, S. Binder, J. K. Wilkinson, A. Schneider.

Index

Anacrusis: ↑

Articulations: ↑, ↑

Audio: ↑

Barline: ↑, ↑, ↑, ↑, ↑

Bar|seeMeasure: ↑

Beaming: ↑, ↑, ↑, ↑, ↑, ↑

Blank Page: ↑, ↑

Bookmark: ↑, ↑

Braces: ↑

Chord: ↑, ↑, ↑, ↑

Chord Names |seeChord Symbols: ↑

Chord Symbols: ↑, ↑, ↑, ↑, ↑

Clef: ↑, ↑, ↑

Click Track: ↑

Command Center: ↑

Conditional Directive: ↑, ↑, ↑, ↑, ↑

Copy/Cut and Paste: ↑, ↑

Cresc. and dim.: ↑

Cursor Highlighting: ↑

Custom Ornaments: ↑

Custos: ↑

Denemo Display: ↑, ↑, ↑, ↑, ↑

Directives: ↑

Doubled Chord Notes: ↑, ↑, ↑

Duplicate Directives: ↑

Duration: ↑, ↑, ↑

Dynamics: ↑, ↑, ↑, ↑, ↑

Educational: ↑

Enharmonic Range: ↑, ↑

Fake Chords|seeChord Symbols: ↑, ↑

Figured Bass: ↑, ↑

Fingerings: ↑, ↑

Fret Diagrams: ↑, ↑

Grace Notes: ↑

Help: ↑

Hidden Staffs: ↑

Indent: ↑

Key Signature: ↑, ↑, ↑, ↑

LilyPond: ↑, ↑, ↑, ↑, ↑

Lyrics: ↑, ↑

MIDI: ↑, ↑

MIDI Controller: ↑

MIDI Filters: ↑

MIDI Input: ↑

Markings: ↑

Markup: ↑

Measure: ↑, ↑

Mouse: ↑

Movement: ↑, ↑

Multi-Measure Rest: ↑

Music Snippets: ↑

MusicXML: ↑

Notes: ↑, ↑

Numeric Keypad: ↑

Object Editor: ↑

Object Inspector: ↑, ↑

Ornaments: ↑, ↑, ↑

Ossia: ↑

PDF: ↑, ↑, ↑, ↑

Page Break: ↑

Palettes: ↑

Part Name: ↑

Pending Accidental: ↑

Pending accidental: ↑, ↑

Pickup: ↑

Pitch Spelling: ↑, ↑

Playback Controls: ↑

Playback View: ↑

Polymetric Staffs: ↑

Polyphony: ↑, ↑

Preferences: ↑, ↑

Prevailing duration: ↑

Print Part: ↑, ↑

Print View: ↑

Rehearsal Marks: ↑

Repeats: ↑

Rests: ↑, ↑

Scheme: ↑, ↑

Score: ↑

Score Layout: ↑, ↑, ↑, ↑, ↑

Search Commands: ↑

Search Objects| seeSeek: ↑

Seek: ↑, ↑

Selection: ↑, ↑

Slurs: ↑, ↑, ↑, ↑

Source View: ↑

Staff: ↑, ↑

Staff Properties: ↑, ↑

Staff Properties Editor: ↑, ↑

System: ↑

Tablature: ↑

Templates: ↑

Tempo: ↑, ↑, ↑, ↑

Text: ↑

Ties: ↑, ↑, ↑, ↑, ↑, ↑

Time Signature: ↑, ↑

Titles: ↑, ↑, ↑

Transposition: ↑

Triplets|seeTuplets: ↑

Tuplets: ↑, ↑

Upbeat: ↑

Voice: ↑, ↑, ↑, ↑, ↑, ↑, ↑, ↑, ↑, ↑

Voice Properties Editor |seeStaff Properties Editor: ↑

WYSIWYG: ↑

Whole Measure Rest: ↑

denemo-2.2.0/docs/PaxHeaders.19168/images0000644000000000000000000000013213135434151014647 xustar0030 mtime=1500919913.386648472 30 atime=1500919914.539981806 30 ctime=1500919913.386648472 denemo-2.2.0/docs/images/0000755000175000017500000000000013135434151016575 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/docs/images/PaxHeaders.19168/PaletteEntry.png0000644000000000000000000000013213135434036020054 xustar0030 mtime=1500919838.099981806 30 atime=1500919914.903315139 30 ctime=1500919913.356648472 denemo-2.2.0/docs/images/PaletteEntry.png0000644000175000017500000001732313135434036021733 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRÌ…˜€gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>£IDATxÚíy\ÇÀ߆@B DDA‘”KQijU@¼­ÚÖÖ -XÑú-Zoë‚÷]­*¢œÕÊ}ÞhUg€d,Ƙ‹€  Î÷“χdvfÞ›·™ÙÙ};Žã€@(RG+€øò!¢¢~ïhM_Ë—ÿB|Á¶mÛjkkkoï ®®ÞÑZ!¾jkkïß¿ÿàÁ}?¿eXee%Fãr9hr†#†a©¾žuäÈŒÍfs8M­â‹%==c±êP†P,‹Ìãñ:Z¯…ÈÈÈ“'OÅÇ522êh]ÚUUU¬¶¶¦£Õèîܹ³k×îššš®]»’ÉJááá:::ŠÚ·¯ñ;wzöÔÿªþ·É_çXù×_EDlؽ{·££#†a ,`³› ¬aŽã_•ÙI€ã_á'<<|ío¿99 d76°êjZð£ŽN7 p¼° `žï¼‰'>}p|Ïî=Î΃¶mÛ6sæLÛ… 5e‹ŒŒtrr¾uëÖÈ‘£¢¢¢poㆫW¯3f쯿®Ây¼fÑÝüvþ`ÕÕUíèíMyy¹³ó üü<*•ÊápšÿÛH$Çy<ž·÷„?þئ¡¡9bĈÌÌ 011‹‹355¹pábXXX^^ž’Il6ooo.—ëàà0q¢ÏâÅKbbb^¿~5p Sff¦†ƒÈ“œœ¬§§‹†Ë/2™ lv™LÎËËóòò&Ò333x<^^^Þˆ#‰&³RSS µµµ§M›Z^^N¡¨ˆÍ`hh\.wݺ°¼xñ444p¼Ù±ÐpùåtzŸ>} só‚|¸~ýº¾~ÏÆ†F(,,|ýúõëׯ HFXŠÇå‘•šoõJÉÖØÐPϪ«®®òôô²··[½z5‘NŒÅÍVÇ¿®“„MþÊ>AA¡¡¡w’ïðp0 ¨Tj]]m×n]õõõwîÜY^þ.9ùÎãÇ¥Ü÷ãQ ›ŽŽôlõõõL&33óŸ-[~'X¼Ã›ßΟ¯±'wwsÛ¶5jÏž½îîÃgÏžã6l˜¦¦&Žã$ Û¼9òÒ¥Kƒ]9|D•ªzàÀØ´i›Ýõ{ìØ±ƒDζÿ~غuë«W¯Ç554† røðá¾FFêêê¾¾¾xdd$„‡‡³Ùnöü`ÌŠò޲; ²²2•ªJ"‘x<.Ž«®Ž˜6‘ÉdM #‘šššêYu*Šª*­‰Í®««¥ªªR©ªlv#«®Nl66›ÝPÏ"æõêêt’’RC=K•¦†óxÕÕUªª4 •ÚÔÄ®«­íèÖ·XÅWìdˆöüa6Š@(†¯q ÑÎCO`# ò0„ÂAN†P8ÈÉ 9Bá 'C(œöp²ôÌL÷Ñcß¾{'˜¸kï>1ß\½~C¾ÕJ‡ÍfÏÿiaee¥¼šö²¬,:&¶¾¾¾µqß¹g¯ç¤)c½&@^~AЪÕmkfìІ"ŸBÇôd¢Ÿ{Îkܸöo²(uuuà9î['ÇDŠ×¸q1G:Z/…ÐÞNvêÌÙý‡¢.øÑkü‡“}þÒ¥™¾óG÷úaá¢{)©pñò•‘ߎ'ÎÁüŸnú=J°*~ŸÏÿòK`ðO¯y ~ÎÊÉ}åÚu==]~ÙÇOž,^î?jœçLßùWo|¸Ùlö¾gÌõ=ÞË{ÊÔàÕkJJKù¥ ŠŠ–úü¼Äˆ1nâ´î£ÇŠmoÂñÓfÍõíø¹?,H¼u›Ÿ.ZÐÉqÀoÞdçäJ2$­ž>{¶Ô?`Ô8Ïs|/^¾"XPÔ¼íL»:ÙÅËWvìÙ;îœÉ>ø‰gÏ_ؾk›ëЕ+Œz÷Yý¿Ð´ô g'.—›ñÏ?Dž—ee¥»»ºJ©<4<ÂÁÞÎßÏÅb…†oÍ|ïž½­`JàªKs³•+ŒúôŽØ´ùÁ¿‰ôÑGN=7vÔ¨5¿ÿàë[Vö*(d ¿Ôæ¨mVßÏ› óç΀à ëÃD%ž8}fßÁC®C¯ \aÜ×(,bÃ?‡D *++[[Y&ßK‘Ô@éZ…®075]¹"À¸¯Ñ–­ÛI1o{žtà¿p¥¸v#ñàá#$ ã?V':6Öwö¬S§€›ëPvSStlÜî?¶Z˜›¥¤¦»¹º@Rò]ƒaog+¥~gGÇï¦M·a󖪪jâ±z¾ ¼ü|ïñ•C\\.ø‘»d¹ÌÑx;[hd7.˜?ÏÇÛ‹ÈÆ`0Ö„†ñ/¾3ÚÇË“ønjb v¶6]´´„ôáp8q >Þ^„÷a®Ì#qñvv’ š™˜¤¤¥Ij t­<†» ¶%6>ÞÅÙI’y}gÏl·óíÙ“8í¿lé$ŸØø„âGˆÄ'OŸUUUÛÙØÔ¿ÇÉqÀ£’çâ윚‘AÜ¿OJ¾;t°‹’’’”ú$¾hii—Ç<úêõëÆFvw#Ü݈/†ôž_XHü\¶x‘·Žãåÿfe]»‘¼÷O8HõuA‰UUÕîÃ>ô¾îÃ\‹Š‹¥ÑíÞýÉÓg’ŽJ×J¨-%¥q—b^e±´_O¶dáÏcGb³Ù)ii‘[öíÜN&“kjj`¡ß2¡ÌõõõC\í?›—ß½»NaQÑü¹³¥×/Øo‰Â¬¬:ý£7i ô"ÚÚÚ uuujjj³²cróòtz¯^=iª4ÁR4 d ¼¢´®d»tÑâ‹[D]]½©©IRéZ µ…Íf³X,Éæmõåð§Ð~N6Øe¨¨¨ü²t¹ÿ¡#1?ÌóíÚUB‚uº}½M¡P ô{ô¸—šÚU[›Á ÛÙØ´M® BÏ51™ÌzzÄ÷ f…¢B£Ñ˜LfઑÃ׬ ¦Óéž™™”œÜZYÚ]º³²’/‚ɬ¤PT$y`ØGá&BªJ×J¨-ªªªjjj’Ì[Ó¾ÏåvÀ†•…Åä‰> 'Nêéê2ŒÚÚº~ÖVħ¤´ôæí$"jÍesJZúíä»C]Z+[„èQ„ŒË¿ÜÃqüzâMcc Þ¿xÉf³'ûL Î%deç´NèéêÒéô›·“Å™™˜J)RS[£¬¬¬®.Æ Ÿ¿x!]+Á¶\½vÃÊ‚ÐA‚y?ɘ­¥ýz2AæÍ™}/5-"rËŸ»vÌš1}Çž½oß½335)~TrôØq¿¥D¶!ƒ8uš„a³¿›þ‰õtu)•ÿþ{cnúá4_ºò·™lafvóvRvN.q¡gh`@¥R·nßé5þ[.——ž‘ùàáCx˜•­¦&ò"/¿Wn¿$:ûœ ñÐy{2ĸ<<©°:÷e]‹óÉ" A#[髹š1”HÃåÍüÊÿª›Œ´¨Ê¨cCÈ›—RÄ4ÔVv·Ð¢'Ëz^7ÞN—F%©ªÈoŽøŠÑP%™êы˚ßK€ºF®² ‰¡ª¤N!‘—!䃦Ä}«ÿÃøˆ< !G]‰ Í{-aJï]lÈðɉ×;ZIÄç †aø{O#Aó;s;Z)Ä—…àì¾¹' \X—ã";A C¯[DÈ 0þsÈd ½Ÿ–}Èz2ħa¿ã" ýF ä‚àðHÌÉÔ“!ä †a|'kž“¡ËK„|Á°1¡Í= 9B®ˆôd€¡Ž !_0™“á¨'CÈŒ„á pï9BîˆödÍ“²9PO†ød„ÖÉ:ZćàÄŸ ±T†z2„ü an+¡{—Å °bAh/QO†#$ ã ®“‘Ðz?Bþ|ü†à¨'CÈ’ÈŠ?!o0Ñu2´â+$Œ$òš”!ä üÛJÍëd‚=Ùƒ´”¶VŒ@4#x[ ½—!8ÜFF2(‘0.—‡æa¹Àáâoj9lOÒüŽm2u§%ç¿Q&+QUÚõÍÛ­1G\ä.’S.˜µ“LGñ÷­l)þ^_ü£l"©-¶—!üÀ0<½ð½Qó.‘Xyy¹Yùf^ÅýÇÕuÜO«\v%$›Wð}VþQL$å“õ/(ûøˆHÁœ˜Pe"eå2ŠH®ùãvˆÓ\¬ÝÅ+%Ûg¬«æn©Åå4ÿM‹***d2¹ó˜øt“õKj‹(\.—Ífß›7‹`³Ùü$B¾ «K„ÂAN†P8ÈÉ §ÙÉøÛx &Ò+˜LEëá>z¬¤¤"’tn-/ËÊ¢cbëëëÝFQµe-¯f¶¹fQ%[k±ŽÙ%NþVÜEÅD ÚUq¼,+;ç9î[UUÕvgfbºq}˜¦†Fû‹–—}Z«vgq2b‡6>bwõþ2ÐÐ`5ö‹§NVRZºïÀ¡ü‚p+ ‹Å?ýÔ³§>qèü¥KÇOž~ûîA¯ž¾³f¹ r–£Šl6;:&öÖ;å媪Ts3³|çö52"Ž>}ö,,bCAaQWmíÓ¦Ž;¦µõ­Z §Í€›_&ŽŸ8{ábEEE=f7c¸Û0Y ²aËïZša¿­€¬œ?ÿ£<ø÷aÈÚгˆ>rêì¹±£F­ù5ø_ß²²WA!køGC×G˜›š®\`Ü×hËÖm÷RÓˆôµ¡Ä¶£-2î âÙ'NŸÙwðëÁ+W÷5 ‹Øðσ²d€½]VN.±Êš“›Ù¹¹Dþ¬ì--­¾F}¤‹>{þ¶»r^´ÂÌÄ4,bÇY¾)ràÿeKëëëÃ"6ˆmHàªKs³•+ŒúôŽØ´ùÁ¿e1`‹'QTI±jKñY{²ÒÇO*«ª¢"7ö64€žúúþú‹Ãá@tl¬ïìY3¦N7ס즦èØ8§Ž’ªjld_KL<}ö\Ù«²ánn-Šnd7.˜?ÏÇÛ‹øÉ`0Ö„†ñ7áòî¾pÁ„è%Ëýcãã]œ€A§‡¬é©ßÃÇËkÄðኊ¤úMMŒA`€æp8q >Þ^DµîÃ\+*˜GââììZ4ˆMÿ~‡cãž<}Ú§wïܼ<;[›ÿ>,//×ÖÖÎÊÉu°³º§"$šËåŽó?ží:dÈã§O¯ÝH€qcÇ|7m*‘›«ªª54B ââ"hŠ˜£ñv¶6-h²”“(¤¤X‹I÷Y{²žú=¨Tê;wßKMc±Xf¦&ËüÈdò“§Ïªªªíllêßãä8àQI Ç­äÍÛ·ûœüÝÌ„ã'ÆŒqâh\à/Ë[½lñ"o/ÇË+*þÍÊ"ŒÎ-Ñ÷f7Å0l¤Çð’ÒÇDGè¿üD\Œ‡»{ÌÑø)3gýyðЛ·oeié«×¯«ªª7lsæZT\,‹Aú[[Óh´‡YÙ›Ÿ?ÉÛ›BQÉÎÍe³ÙEEEŽÒE?yú´²ªJphÞ²!üç¾§‰MM àòÄÜe2E~a¡,€VDqj·P\ÖžLSS3*rcLÜѵëÖs¹\{;ÛE ~ìmhXSS ý– 寯¯WSûhÃöµëÖßKIuàèèà û}Ò‡YÙ± ¹yù :½W¯ž4Õ6׸>ÐÖÖf³Ù,‹Í`0fL2mò¤»)©gΟ?vòÔ—AkCVIW^QZššü”.]´êêê[$É v66³³ìíª«klú÷³4·ÈÎÉÕÒÔâp¹쥋®®®!ÄñSh4q•-Úo‰"d ¾ÎÒ ²ŸD±´X¼ÙÉ(*¨­­Ú.¹¦¦(**`njºþkÙÙ¹9ÑGbƒBÖ‹9ܵ«6„êtÓ,H¡P„Dæå¨Òh&ÆÆ}Œd÷0&“¸*d¤Çð5+ƒét:¤gf&%' fè¡§G|¯`V¨ªª Ù…D"Ùô³~ùòåãÇOò [”¨Ý¥ 0++ùÕ2™•ŠŠ¨¹Åd€½Ý‘£ñ9yy†jjjýûYßKMÕÔÔìÓ»w‹×ËÚÚ] ²²Š/úeY™,:‹5…¢B£ÑZ4 È~ÅÒbñæá²¯‘‘²²òõÄ›‚™p¿zý†A¯^jjjÅJ&7“ÅbQ(*ìí'Nð~óæMCCƒž®.ƒÁ¨­­ëgmE|JJKoÞN"“…ûÈø#ÑË—,ʼÿ`Ú¬9aróòdiÀó/ÙlödŸ „ +;G0Câ­Û´½vÃÊÂBðhAaá†Í[&7ënjªßâ…GjQ¢ž®.N¿y;IP„™‰©P6Ià`Ïd2/ÿ}ÕÚÊú[[—”>NKÏpl©€zzt:ýVÒÑ›~ßzüä)Y %dŠë‰7MŒ1 kÑ€D“e<‰’,&½xóuuµùsçìùsÿ³çÏ]œ úÛ·ï®Þ¸ñèQIĺPè©ßƒÍn ‹Ø8vôÈ:+.þ˜•…•J€Y3¦ïس÷í»wf¦&ÅJŽ;îï·TT%%%7WW7W×¢ââSgÎ-_Ô»·áOϱ£GIi€¡•Jݺ}§×øo¹\^zF&qÍø0+[M†aXâí$%2ÙÂÌ,ñÖ­¼‚‚­›7/_½zîÂÅÒÇO܇¹îˆÚbbl,I„’’¤¤¦õÔ×·éßL&Ϙ2yßÁC$ÉÒÜìÎÝ{ÿfemÙ!TJ’Azêëw×ÑÉÎÉýv̰²´ ‘H¹ùùsgÏ”EôÌéS÷þy0ÌÚÒ"ãŸûÙ99S&ú“ÍÏ.]ù›0ÅÍÛIÙ9¹Ä¥Ÿt6;™,å$ ))Vmé> D|³¶´456ÎÊɹríÚÕë‰EÅÅ}ŒV®°¶´eeekKËä”{þºü0;§¿µUÀ²e4 ,-ÌUTT.ÿ}õʵëLæü¹s¾3ZŠ-´µµ‡v÷ÍØúú†øã'¦Nš(xôeYÙõÄ›S'M$V“©TŠ¥¹yZFÆÅË—sóòmú÷ ðOJ¾Ëªg÷5ºqóÖÖÈç.\<ñ‡Ë]¶x‘óû+š•!kF 8Òc81JBSC#7?ÿ⥿’SR¦O™ V––d2ùêÄ«×op¹<¿E 9 *%Å Ož=+~ôhÁ÷ó ™LNËȨ®©^¶x1qnˆNžè£F£‰Š¶´°P¡P®^»~õFbc#{éŸ zñó‹ÚGÐhë×þ–xëÖÙóØ‹ü8lèÐ ȯYÊIURœÚÒ| ƒ·‡æp82öɧæN±K,ðv´.bèà§0ç_‡u~У>…ƒœ ¡p:xN†ø@=Bá 'C(äd…ƒœ ¡p“!ŽLNF„µ~&N›¾)²Å(¦vjOqB²ÚSÔÎ&êZ±,þkà â©&œ‡?ù2.>á]yùï7H)ÒÎÑ8í)NH–` R§Õ¹£h…“ÙÚôçßsGŠŠJÔö ij_9_a ’ì´ýŸššÿÉC]„îã?O%}TR´jõîíÛvíÝ×Änò3‹È±is^A~½Ë–,êomÝ¢JmŽ;’Ï#>D<™-¶i榦.çÏ];‰‚8ŽO™9ËÙÑqÉŸ%ÕßÚȟωs2ÑP¢Æ†Fâ n‹Uü¨äø©SînèTj«]¤°9j›•…Å÷óæ?CÃ#ìíüýüX,Vhxó ,=©mqG 5žG\øÐCIM6tÈ£’Ò7oÞ?ó ß½+éá!¥þÖFþ|Ž÷dRB‰fÍÿ^ð§žž®¿ßÒÖºHá›1£}¼< =3œ‰ø·aó">Gz RÛâŽ@r<N>dgc#¶iƒœ‰¹›š:ÁÓ’’“uttúY[%Þ¾-¶~MMÍÖFþ|Ž|p²7oßž=áâå+ :ÝsÜ7cG¦«ô¢€Ð5«ùÛe/÷î?°}×o/~¤ qÈÉqÀ–mðx<©uë#v¶‚?ùñ9ZZšð>>'ÐùO?Ì¿xùJÌÑø};Ækü8nÝÄV(6îh×¾?Es.[¼p¯`2Ÿ¿xÁç>Ä•ÃC£©::Øß½÷ÞÉîÞáî†a˜¤úEkŒüùD{všL–P"s3SþÄ¿ŸµUUUõÁÃGˆSØæ@AˆÇJùHŠÏ‘=IƸ#%6|Hz+† µµ®®îÕëÿ^½z=Òc8´p%È'uN𬠡D½z555—–m t©ªªn³Þ²Ä Éw$%žGløPuu…¹™$Å\œ1€´ŒÌ§Ïžõ52êmh(K¼ŸO êœ4;Yü‘è;wïž^žV––ÒK*“ÉЭ[W"RÅÃÝŠH?{þ³ç/úY[‰!:üÊÊ*¢GLËhã|¶ °ðì…‹7o'™šû-^8tð`±ÙøqGü&±qGRâyøáC–æDʦ߷vÑÒümÕ¯’tSWW³·³½›’RRú˜ˆ‘‘%^HPgÙíù¹Ðìdm%¢P)ÀbÕËèbh` ¤¤´mç®I¼sòò•”´V]é1Hm‹;’Ïã>ÌU4|hsD8ˆ‹áá3lèШí;¸އ›[‹õ·6òçsäC´ØP"Á~Neåc'Oétí:mò$]Ôh´î::wSRoÜLÔÔÐøñûù]ù{꤉L¦h@ŽØøé1Hm‹;’Ï3lèÑð¡AÎN¢²uÖí®“pâ¤Mÿ~¼<[¬¿µ‘?Ÿ#ÒžŒí„?P%D‹H»*î„§³ª„h‘Ïuéñœ ¡p“!r2„ÂAN†P8ÈÉ 9Bá 'C(äd…ƒœ ¡p“!r2„ÂAN†P8ÈÉ 9Bá 'C(œÿ3¼š €FVÍ%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/MidiInControls.png0000644000000000000000000000013213135434036020331 xustar0030 mtime=1500919838.096648472 30 atime=1500919914.909981805 30 ctime=1500919913.346648472 denemo-2.2.0/docs/images/MidiInControls.png0000644000175000017500000017245113135434036022214 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRdŽ3ƒ&gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsÄÄ•+€IDATxÚìýwœUåÕ6Žß»—Óëô¤Ò•¦*(VQ1ŠØ+öŠk4bc‹`Ô„Ø;–X°7P)Ò§ž9½ï³ûþýq…óðK$åó}ŸÇ÷É{ÖÇä3Žgö¹÷Þ÷½Êµ®µå‰^ G|™¢‡&”@Ì2¡ !!4!„‡‡ŠŠÔ¤&5©IMjòÿ‚l#SZ=„ÙJ›üÄ‘ü>£K1«­7é33¦ÛÝÝ$êï2tÑViÇ&Ž@΢ Õh‡þ¥×_“šÔ¤&5©É»tªf“Å•K$Dª—µCö:|Å«¤q¡)¢õÉ*Ù/øxà f…8„8±YB›„шÍþÒë¯IMjR“šÔä¿_è Ùø 9å’ʱ BèÇŠ‡4êhɱ-–ÍÅãb 0mÙT)Bˆ-ÐC(Ë¢5Ö~éåפ&5©IMjòß.µwhµIÉ ¢ kiéú𨖇¡ÁthÇaT†Pn‡ò†h©íØ„PCƒu4Æ®å-kR“šÔ¤&ÿùÒ u)–ìå–ñ’†‚J¬”aó–£ tÉC(‰°¼’ VL–T4†h´J;Ê)'V*˲•JÅí– …’,ËEÝsÏ=#GŽ<à€$I²mÛ²,Çq4M«¯÷V*$™L56†5ͱ,KØJE§išeY˲Êå²ßïÕ4CÓ´µk×>÷ÜsøÃà „<°lÙ!‡ÒÔÔhY¶išŽã‚ išmÛ’$Q)—Ó4ƒA¯¢è‚À†IÑ4Íïw•J˲n7“HeY6M“BÓ4MÓš¦I’DQÅçs©ªiÛ6˲¢H'“yŸÏÇq¤P¨Ø¶íñ¸tÝ4M3s9çyMÓ>üðÃo¾ùæšk®¦iR*UdYÒu÷òKԤ&5ùZ\! uÊ4 K(â2tÉ06‘T#¨™ŒFˆ£IÊ$û®½åò‚(Ì;}¡ÛfTM":-Û¥RÉ(q‰Ÿ6>póª¥N|ñ5·1ȶí¾ëu]÷˜º©*Eµ¸år©ÀSMÓétÚ˲÷ß¶dÖ"{V%ñÓF–eDJ`–e)]÷È¢,p–®²,{×’«–\³äȉð,UÊÝ>Ÿ¥ëLЛîˆ{½Þþ_!žö‡BJY±ÛËq,ÅÚšaFÐ-•ŠšËÝvãÏ>ûìe—]öçGiooÿòË//>çt>ú裶¶¶H(äF>“Šƒ„¥K™MÓšƒÞb:r¹ôrɪT<bhb…#†æèª¥Òa†)Ç 6EQ±¿ú⋵k×Κ5«¾¾ž³M®¤4í8N>•‘"‘f—”MÆ%'@‡rhEa-‹¦i­/g—ËœÇãóy×}ðþŸžyæ²…§¹\.!‚¡kºFtB×àîšÔ¤&5ùE…qXBˆCBKh"Ú*1+.Så-•!ÂB VÅ̰E·øŸÞ|æÜNwûDâ04©B¼iš¯¿ù§ÉSǬ~ïCÓÎÛ¤(º¤cŽ›Á²,¡Ë.P, Kgy›aBHS¿Ðö-[DÎêìÞhXÃE™™sÂLEQüaÁÔuš6)Æ4ÍlE­hšŽDhb ’éP¥L2îv»ÕJÂq#c¸<¼fd8ÙçòÞî@€‹bx‡¢-Ç$´íP¶ª—xè®§VþîÝwßÚo¿ýlÛÎår£÷?}Ö‘S/¼ðÂn¼ô¥×_ϧ:mÛD¡\î³,‹ã8š¦mÛ¶4fUEUAðð4Ën–²í¢n–ü~¿m›ªªÚÄ`8R.—=^o*ÓqéL=x?Uç$IªTŠÇÙ¶n tnÙÐÚÞjò*¹EQ„"¼×§äJ Ç nAvË–¥sÝÑzW,Õ®“MCwÇr4бÇ!5cY“šÔ¤&¿¨h´‹°Dሤ–B;6q!Ä¢!øGzz8½Ì“Y§Ï;÷¨¹çy®aÙF*mCŽcÔâ-[±ò±×}]¤LM KZIˆø !´ßÕ—N;´c³Ï ?nØP__ï(ŽÂ:9ËiÜߨ¢ªº¤\.S¦N™4EÖ)ÇW0œ*—ˆ‡Mj%…u-élZ”E]×·[3MZÓj‘¦é@[£À JE)éºã˜ Ïpœ˜Q+;ûº~}ïý/¿¶jøã ºN1”Â:e²AÏÉç.:îØßÿ죑#GýAEUt]ç8Ѧ(Í0l›äµR(*‹´È&“IAA°;ØTŸÎeX–¥]|G*‰DØ '^ȋрB•§Üõ‘D*áö»‹Š"{ä\¥joŽÒGãˆe™‚ ä² žç‹†ÂÃëõfÒiÉ#9Q¥‰Ê‘’¦¯f8†ã¸Š¦ýÒû¤&5©IMþŸ…Â…³C„°mÐãÄlbj´Y¡I…reMF‰Mö8Œ˜ô÷?n߯Ýãñ–,Æ4Í­}œÛijÏfËç²Y™ãé5ùK6›=æ˜cïù‚¯¼þÊœ£Ž"G cÎI'-Z´ˆP$™¯ä+!Üó/¾ 'L˜ "²’,ËŠ.w®\fXYQLÉá\¢a/¹õ®úúú“O>ùºK?óÌ3D×'Lž|Ë-·Œ92žÍø|>Õ¶)Š’xÉ¢i‡cþôÒŒ,í³ïÍá²¥RCCƒ_ð$óEQö?éù×^ 5´±²ÓÎ¦O¾újÙ²eo¼ô¡ibÛËŸxbæÌ™„PŒ$44¼á¦†™?þÅW\÷ôOB¦Î˜qçwú"|![X¹ò™n¸…ÑcX|ùåW]uÕÍwÜÍqÜüùó/¾øâw^=],š4½aë–Ûn»í­W^á\.£\^ñÜsãǯXL$ÜÒÓ×Ó›*ŠäÓ¡žãmÇQ ƒ±Šª5¨IMjR“_RLbÚ6‡ì2–±YÚ¡ˆÍЄ'ŽCÛ¬Gâd‹#=Äßü«s/ýøÕwg^wu¾w;ãöÉ¢wÕ^¼íÆßôoDQ.Α1l{ÃÚÍårYŸnkëõßžsÔÜßÞ»lܸqápxõêÕ3&*º‚Aw”'2˲ñ®´’Ó¹ñkó4MÛÄÖ5Ý´ çHI&–ÀX‚V´t]ïßH§ÓW_zýèaû}úùnÞýÅßL>pÊÅ—^zý'7ÕÕÕ}ÿý÷ÇuÔ-·ß~þùçs•°·^ \@c Ãp„³Û2)†°UkþP“šÔ¤&¿¤°Ä!ŽM›ÂŠX´Ah“PE”£3álÃ.Út&²HÔ´Ùgøi'-¸á¬S}>¹h;™xì±e½ÿþû¶VaËRbh4!•B®¥©É+ ·Ü~Ô¿¾éæ9GÏE1 6<Û¦ <ø@.wñ¬mÛ<ådâ1Ú2ÔbE–eY)“P¶ÉRT9—çÊRÆ6m­ââÙ']þÉšOö=²R©ˆ¢¸àÄ^}áÏŒm–s90oE–SU•¶ [«2ÉaƒöJô$(Š >Y¬T*–eC“\R6›‘EÑÖ ž"O?ùø‰Çûزû3™¼(Š­ uÏþaå‚ Ž8tú€ C·µÊÊ'{íÕ×fΚ^È—UU¾êÒK^{ñùb&w¬ÇŽuîT ÙAímC‡Nô¥ ¥´üûÞ|óÍÑ£G»\®îŽ®?üþ‰ Î;ç7·þÚ0Œr¹<ã )Ï=óôi§väa3‚Á ¿¡¶ŒB:ikBÓ´Å1 ã8žç+•Ê/½OjR“šÔäÿi GL›·vKÕ£Y´ÆÐšãh4! Q=‚ËC ±ébnÊØйs3åh_~þ5MÌÓ&×Gý–eeÓ}.—ë´SO|èÁ¥~¯¨«Š¢(Gs¬J$ê/d³Ž­šAlSEÃÐ]o[ª$PcEBžLª—&æ ½ZyÖ.hE†2†¨k%ÛTÜrãØår™ib«Ÿ\*•‚>¹¯w§ß+:ŽS)g9ŽÓT5 [5´bÀ'9Ž£*¹X,öìž|á…b=>ŸO)e‘ȨCxÖÞ¸þ»½ú7[FE(Y 'O—ìëõûý4¡]C9åhŸ”K'Ê`)Sàœd¼×ïóÉ"mèåqcG˜¦VÈ•Ežüþ‰å=ö˜ªä(Š8DZ*S&×µR¢¯sðÀ¶\¦/à“ˆ£ý2Êc £bšŽ©£jR“šÔ¤&¿”HO,ÂÙ„ÂÒ4X‘°‚ÉŠF®"©´¢UŠ‚’ fÆ#%)bxßÖÖ¦(Š(ŠÇe2·Û],†á8Îãñ˜¦9xð`ܲ,ËŽãüƒ„¥óO_oMjR“šÔäÿ„”!¡,ËDWYš!–eŠ*—Ëu>¿­—Y–¥(’ÉV!–Et]DtÅahfÇŽJªÄ²l¿~ý!¶m—J%Žã(Šb¦¥¥¥P(ø|>–eUUU9EŽã„s»ÝÇ©ªZ,5M£(Š¢(”9Ò4­ëºËå”e™¢ªªeY>Ÿ¢(Ó4].×°aÃ2™L}}}:fÙ¿rahš6M3ŸÏzè¡÷ßÿW_}5aÂÇq†Éçó‚ <ø£>"„ÔÕÕáë!¥R)“Ɉ¢èv»ûúúÊå²eYãÇ'„‚€)!$‹¹ÝîmÛ¶aI ÔJ¥R©ä8Ž,Ë.—KUUÇqà%¸\®J¥ÒÝÝ{éíí7n\>Ÿ—eYÓ´|>ï8Έ#òùŸaE©ªŠ^,Ëvww˲ìõz5MÛ¾}»$IhY‡ r‡ÆxªªŽ?~æÌ™÷ÜsÏòåËA0M3†±yófôç›>}z,«¯¯Ÿ9sæªU«¦OŸžÍf;::† ö§?ýIÓ´Áƒ«ªÊqœeYÃá°ªªáp¸««‹Â0ŒÛí&„x<EQ(ŠÊçós<w¹\­­­½½½cÇŽýàƒ&MšÔÐÐL&}>ß¶mÛÊår{{{}}}¥R±,Ë4Mš¦qûétÚív;޳çvw5–lMjR“šüOH‘R©X–EÂ:ÐÉ4MÃdYŠa‡±m›çùtºØÐИŽåünÿa‡6ýˆi^Éûúë¯û|¾¾¾>—ËEº·,KÓ´h4JÓ´×ë½÷Þ{/^ ;î¸;wþøã«V­’$©X,¢k<·,«R©°,ËqàY˲¼^/Z­z<BÃ0<Ï›¦ÙÚÚZ,s¹ÇqèÎjš&Ïó,Ë"B…UÃo–,Y2~üø³Î:kÉ’%MMM===–e=ñÄ¿ÿýïW®\ɲlccc¥R¹îºë8à€ßA´xñâÕ«W†­T*9?¤ ÇARS’¤®®.AÊår©T ‚ 0 ÓÛÛ‹)MÓÇ0 BˆeYU·R©Åb Ø´iÓu×]7yòdmW+œH$òä“OΙ3§\.ÃH‡ÃáçŸþ„N@ct†a/^|É%—èº.EQ©TÊq¿ßßÛÛ‹¦ð¥R ÏÙБ#GF"‘AƒÝtÓM×]w0[äq-ËŠÇã£Fzê©§N8်,Ë^yå•çœsŽiš’$Y–ÕÑÑ!B&“‘e¹­­Í¶m]×K¥’ßïÿÙ—WƒakR“šÔäFhBEÙ¶mZ„²òc}ýˆ/¾úĤƶ5Ù±˜ÍÒš'`S<«–iªìñ¸Ò±¼®8šTJ/$rÀB|V*•t:í÷ûËå²(ŠŽã¸\.Žã:;;Ýn7EQ€išEÑ4MØE૦iºÝn@‘ˆ EQŒÇãÍÍÍ ÅT*¤*Aày^UUØW˲ü~<ÇÒ4-I’ªª.—«P( þ+—Ë,Ëz<žJ¥û‡Ì"Ã0‚  …`0hšf¹\årYÓ´P(”L&C¡P6›eÆï÷ãÇ1 HܬÙ4MUU1)…BQ”ÏçëêêŠF£år_É$4MÞÞ^¿ß_*•p;š¦É²ÜÝÝÝÒÒ‚_ær9—Ë%I¬rMjR“šÔä—’Ÿ‚Áý7lî»o¨RfM‹Ð4M( äŽãTÛ¤iZÕ ‘e›J$á@½.8éT¦Â¨Á…îtš¦U*ä,¡úc±X[[[:®T* –e)Š"‚ËåÊd2•JE–e˜U0 ˆq !†a˜¦‡c±X]]]"‘$ E à iÛ¶ËåE1›Í‹Å@ +Æ•J¥b±X%þX–‡3™ lX<…B†ñ׉`Á`PUUÃ0‚Á`.—ƒiÏf³n·»T*ƒÁl6 ²+˲„*!­ÒAPE’$Q†a6M³¯¯¯¡¡!ŸÏ#éñx4MƒyîííF£‰DÂï÷³,‹ÿZ.—#‘¼‡B¡‰Dòù8¥R)ÂvBb±ºÈ¢·_0TÅq¯×›Ïç}>ŸËåÚ¸qc©T‚KQehÃiÛ6&9g2xÇáðô0vT„d2‰vB4McÔ‰ã8ÅbQEÌZÑuc-˲,«\.ÃÖ¢+P €å†ÓÀ0L&“{Ùa„ÌT) ;wît¹\ÑhT×uô²ÿwŸzy<´°¯««Ëd2{š\]“šÔ¤&ÿKeu–¶mÇÑu#—Ë,»ï¶¯ÞæIÁ.º(‰çùr¹,‚Ûí>äCišæyæJUUI’úõë‡fxhƒWWW÷ì³ÏÆb±óÎ;½Â}>F<²,kÛöÎ;Y–mnnÆDÉD"uPÐE¥Ói¯×ëõza/†ñx<ñx<‰À0ð<ŸÏçƒÁ`<ojj*—ËÑh7R,C¡MÓÅb‘¦é–––\.k‰D!˜±å÷û-ËÊçóèË ÔÖÖ‹Å2™LssóŽ;^{íµH$²ß~ûY– “Éd$ikkCǾ\.Dz,Ã0%a&¡Z–UWW‡I#èp‰DJ¥R¥R ‡Ã¢(bTf^"|÷ûý™L6ï믿þúë¯/¸àt%ìííu»Ý~¿_×uY–S©ôp8¬(Ša˜|BA—yQ‹Åb2™ôx<.— ßår¹dY~ùå—Ç™>}ºã8¸È¿õ|úúú*•J45 #•JÕÕÕ¡©ý/½·kR“šÔäÿ˜ì1²„­Âì­û££mT1`Ú¦A†a<ÏG£Q´ZeYC•+•J$áy~ÇŽ×\s Ã0±XÌår†—òù|ÍÍͱX¬ ÒR©\W’¤¦¦&š¦Ñ"8‹ÅbˆóhšÞ¶mÇqÍÍͺ®‡B¡t:ެТÀ0›¦‰FµÇ¥Ói˲ ÀÝEü*B<ïëë ƒUèØqœ®®®`0ˆÖê¡P¨¯¯oݺuÀQ+•J H&“¹\NQ”X,&Ë2l$ˆã8Õ)Ó Ã躎f³n·»¾¾^–eÛ¶1Õ2›Í"¸L$“eYÆèi¬dË–-·Ýv˲ð-š››03 S(@GxW€F¸¶mçóù††–eS©Ô|°téÒT*…ÅlܸqÛ¶mèÞŽ—òo=ŸŽŽ ïTEEDÿ¿ô®®IMjR“ÿòÇÈ’¦iÛ6u]§iÚrœY³f8Ζ™ˆ¦iÂÎñ<ÏqœËåš*Ër"‘eÙï÷çr¹p8 k'Šb¡PÀü,ŒôRGÄR¥RÉçóÁ¸J’„næ‚ BÃ+—ËÉdØ1DEŸÏ‡/UUuÀ€Û¶mƒi§iZ–åb±¨ë:,7ÏóÙlã¦].F”äóù~ýú …b±ØÞÞžJ¥"‘ðd†a4Mkiiéëës»Ýèá~ê©§öôô;EÈ‹#𦵶¶¢ù;ÒK‹“s Õ4Íd2é÷ûóù<êÖÖVÌrñûýh¶ÞÝÝíõz9ŽËf³ø‘>Ÿ/‘HpDzl¹\–e™bYÇqÛ·oolläy>“ɃA†a ð, óG1ìã?^ºtéÑG‰D*•ÊÂ… !Ùl.…(ŠÿÖóikkëêê’e/Âçó¡W>âéšÔ¤&5ùÏ=F–¶mW*L¼"„‚F!Èl!¶ã8.ŸÏg³Ù|>_WW§ëz]]]>Ÿ—$I×uBˆËå¢(J×u·ÛÁ¶mkš–L&1ù¹®®®»»1–¦i^¯·P(„B!Š¢6mÚäñx ‚€Ì4MÃ!ë‰S—ëëëMÓŒD"˜%FMÓìêêB:Óq]×aã].—iš˜ð…ì`.—E1“ÉäóùÞÞ^˜¯×Ë0 NX/Ìí1b€_QUUEΕa˜l6 ó奬>L–e#‘Hoo¯®ëgÝÒÒW€‚Ñ(àRåóy`×­­­*Š"XB°F˜»‚?Ää l‘$©®®NUÕx<ÞØØÇæz<]×a21ê[X– îr¹Âá0ÌÛ¿û|0ÑlÇŽx5ˆã«7^“šÔ¤&ÿòذ à ²!„(Š¢(hd°:ÁwEÞ+ Þpà ?þøçŸ~ã7†ÃẺº™3g~ñÅ@€¦éD"ÑØØ¨ëz,;ù䓇 ÒØØxÚi§}ðÁn·›‚‰•Ï=÷\4F£gĈ_|q2™ë'?óÌ37ÝtÓ¶mÛ.\èóùX–ýýïÿàƒöööΟ?_zÉ%—¸\®+V0 ‡÷ÙgŸûï¿ßívƒÁB¡ ÂÖ­[çÎëõz@SSÓí·ßÞØØˆib¡PèÉ'ŸüÃþÉdî¹çŠ¢êêêN;í´­[·666‚ ûú믿ôÒKU‚îºuëN>ùd—ËU__ßÔÔ´zõê|>p¼JÜEö.ŸÏßu×]  óæÍ{çw¼^/&B·´´¼ñÆ×^{m[[›ßïoooòÉ'1Ó§Á%%ª··wëÖ­çwž×ë ‡ÃíííK—.Õu½\.ƒµ[__ÿÉ'Ÿ,\¸Ðív‡B!¯×»zõêP(´uëÖ+Vœp „ööö[n¹…òÍ7ß¼ñÆš¦ ŽãþÝçsÊ)§lÙ²¥¡¡Ü"€·¿ô®®IMjR“ÿòGc ©/BÒQHk!Úc¦R©p§i&;vuu­\¹rîܹŸ}öÙgŸ}æñx¦M›öG]]‡zhñâÅ›6mZ³f ˲t$IøóuëÖ~úéË—/ï½÷~úé§?þñ<òÈSO="(æG†qÝu×pÀÏ?ÿ¼¦iš¦­Y³æ†n¸þúë?ùä“+VÜ{ï½sçÎíííýþûï·nÝzÆg\tÑE@züñlj'2díÚµŸþùk¯½và 7ÜtÓMd].— …BWW×õ×_Ì1ÇlÞ¼ùÓO?UeìØ±Žã°,‹ÅÖ­[‡AÖ›6m:ì°Ã¦OŸ¾mÛ¶¯¾úê׿þõÉ'ŸœÉd@—¥(ªZCÂ0̲eËV¯^ýöÛo÷ôô<óÌ3ûì³Ï=÷Ü“ËåPxóÓO?Í;×ãñ|úé§ëÖ­[¹rå’%Kn½õÖR©$Šb*•B­ &H§R©É“'G"‘ï¿ÿþ믿~衇~ó›ßÜ{dLýôÓO:è Y³f­_¿~íÚµ÷ßÿñÇÿÍ7ß´µµzè¡÷ÜsÇqï¼óÎ…^X*•Ö­[‡W#BGGÇ¿û|hš5jT.—Ãpz1ñ»&5©IMþc„µ¬¿Î6M“&„eÙ’Rb%ÍñüðÃaÆØ$„‚pÅW ÿwÑEÝÿý[·nmjj2MóÑG=å”S®½öZUUƒÁà€ž}öÙO<ñˆ#Žèß¿?ýc=¶iÓ&¿ßÏó|ccão~ó›±cÇÆDÙ(ê7X–½á†N;í´ÓO?‡û÷ï¿iÓ¦§Ÿ~úꫯ.—Ë~¿u#(¦¼ãŽ;þüç?><L˜0¡±±qõêÕÙl6‰‚°jÕªƒ:èŠ+®€YjnnþðÃ'MštÔQG=Z–åB¡àr¹°Œ—^zéðÿð ƒÁ aÍÍÍõõõ3gΜ5kÖ€¢Ñè 7ÜpÆgœuÖY…BeÙ¶¶¶5kÖ¼óÎ;mmmÍÍÍŽã„B!°,Ë‹Epv|ðÁ÷ù,Y²äÍ7ßD&ÉÎê°î_zoפ&5©Éÿ'Aù!Ä!„uâ8¡(ä™ †‘/•ëÝ¢eY0„güêŒHKÊjõÞh:4K”¢¬Ðëõ ‚€ÒQ‘º#»ÚB\.êý#‘HOO PƒÅW“t»ÝÙl–R%aú|>;yž¯««“eq2—õõõû!<Ï···#­T*(r@…åŽ;žyæ™§žz ‹Ïf³4M9ÒqœD"1`ÀA’]ñ¾b÷ôUD===_ýõ%—\‚rOPiN?ýôb±(B5”"Çóõ×_>ùTUU,Xàv»†Ù¹sç­·ÞúÄO Ì£T*q7hÐ BH6›5 …ŒårÙ4MÓ4o¿ýöûï¿¿©© …%¢(N˜0eÙï¾ûn̘17n|ÿý÷/^ º“ ²,/\¸0“ÉÀ0sgšf0ôx<†a ív»7lØðè£þéOú·žO8Ï yS<(Š¢€Þפ&5©Éÿ^)›„T*–eQ»K3t¨A¡E֨ДŠÔQGuÀÁ Á´K¦an·Û0 ð`ñ3þ°Ê̬¶³Ì\ŽeYI’@M&“°š`]tç»ï¾K¥RÝÝÝÛ·oæ™gÀ2Íf³PÄHàÁh¡†D×õp8 j.òˆ`úBPï^ Öƒ:Ä¡P¨X,F£Qš¦?ûì³ý÷ßVášõ€LTmÁÁCìííÍçóííí‰D¢µµuûöí---ûì³¢(Š¢€8ƒ‹‹EÓ4Ÿxâ‰9sæüö·¿½ì²ËöÝwß‘#GâF,ËBƒ‚/¾ø¢«« D'o !ß~ûí~ûíWƒ¦i·Û‹ÅTUýâ‹/òù|*•²m;¢¤T*e2™r¹,ŠbKK‹ã8˜ðÞ{ï-˲išñx&Ùl-_³Ù¬ ¢(þ»Ï§T*éº^(Ün72nJMjR“šüïGöVf)Š80˜ŽC@´‘E…¦ hrÝ%‡¥DAüQ¨9› …B° °š¦¡˜‚Ú>äêPŒˆPRµ:XÁ[Ù¹sgccc©TÚ´iÓ!‡rä‘GN™2eß}÷?~üìÙ³.\º,L/Lr¥R*‹ðÑÁNS“!õù|ˆ_ Ã@¡=˲‡ì²ñ¸`5㈟ !c,QWê8N$) uuuø¯×KÓt¡P@G4ôEñÀ,—ËþóŸ7nÜ8gÎBÈ)§œr×]wUÃgðàÁ  C~ùå—9Ž«««Ãów™gÀ€­­­cÇŽ­T*¶m—Ëåwß}—ã8·ÛÝÙÙ©ªj]]]WW×Àá+„ÃaUUáj ŽF£ !£»Þ ضÿÖóA¨‡©]øDMjR“šüHŠ¢ˆ$1 cÂ2Ì_ kgš¦[–9›.*¶žÉp¬Œ\& 6Æf›©ÖlB¢C–eÓÙ¶À*ÔP˜4Äj0œ(…liiA϶C9äÊ+¯¼âŠ+LÓêøÑGe2˜B0@”d ƒÖFm BXŠ¢ ë¡ý5M#„ˆ¢Èó|©T¢(ª»»»©©Éív£–¿T*iš†Ž°µU¬µHUK«–’¢(4@Èçó0*À‡¿ûî»õëןp °²0í–e¡_2™<òÈ#O:é¤+¯¼ò‹/¾8ú裧L™²páÂJ¥bšæäÉ“÷ßUU—ËeÇ#ŠbOOÛíÆÝ±,ÛØØX,GŽ9iÒ$­P¢( ÍaÆ…B¡uëÖM›6-‹/ýé§Ÿ:;;ÇŽF;;;Ýnw<ïׯÃ0|].W2™$„ü»Ïh³ªª0ÆÕ¢RQé}^“šÔ¤&ÿŸ„u¹Ã0 CïYŠB à Gé¶eZáp¸RISeBQ"Hްèw°X™LZ]Õâû`äv¯RR‡~lhàtܸqÕ~‚ ¬Y³†¤Pü-:­ãšøvô»aC #Ïóm !è% ŒñðÃë­·:è 4@ðz½o¼ñFCCCSSÌüß,’ì2øýîÿ___|røðáÑhÔqœ|>ÿÌ3ÏtvvΚ5 ùZ<"äÿêêê^xá…Ù³gÇãqY–ÇŒcÛvggg___]]Ýyç·bÅŠ©S§Â"vŽF£o½õÖäÉ“ÑDÞëõªªêñxN;í´_|ñðÃïíí¥i: ®[·n̘1k×®­¯¯÷ûýétúÓO??~<ºíPõôÓOõÕW/¿ürWW×€J¥ü4ʇcŽ?þø÷ùH’´{ ‰Ð4 7¥&5©IMþ÷ŠêrÃp‡eþ.g £eš¦iÒ¬$)e“eYŽa¾ùæÅV-É–‰X©TÜn7”l49r$ JàÁ»o“ì2-U³}B€ >Ÿi6Y–?ÿüó‘#GF£Ñb±øî»ï.]ºuø\mä —«¡*þµúíà ‚‡‚Ï/½ä’K¦M›6f̘iÓ¦ù|¾×^{í÷¿ÿý±Ç;f̘ªQ„Þ½£žZu~þ5?óÌ3óæÍÛgŸ}öÛo¿B¡°qãÆ»ï¾{ÅŠ(°A¢Ôq·ÛÊÔÕ«W·´´´¶¶ò<ÿöÛoëº~ðÁK’DQÔÉ'Ÿ¼ÿþû7nêÔ©ýúõÓuýœsΙ5kÖÔ©SS©: ¿ß¯ªê¢E‹8à€ÁƒŸrÊ)ÑhôÛo¿½ñÆ>øàH$û÷ì³ÏþêW¿>|øa‡¦iÚk¯½vçw¾ùæ›<Ï‹¢ØÕÕŲ¬¢(š¦UûÀ9á„æÌ™óï>Ÿê{¯~Ö÷—Þç5©IMjòÿI,BˆmÃ|ý¼±4 ƒae”áëºnXÖÍ·ÜLxZµ+Ä$ >"Œ»è¢‹† æóùpé*©§šÜ"„ p„å@Â-’sè~ÎqÜ+¯¼2}úôßþö·P»÷Þ{ïêÕ«g̘á÷û¿ÿþû––@»¨Ä@w7ä,Ñ|¼úEæì¿Þá_U< ã}öÙçüã 'œ€5Ȳ|Ùe—Í;—ìÖ=íÿ7Áe5çJéíí6mÚÊ•+;ì0¬AQ”ßýîw'žxb©TBß8Ìi,üÉ'ŸL:õ¡‡Â' !üãGŒêƒ~þùç?þxÜ !dÁ‚·ÜrK©T…­h;°ï¾û>óÌ3óçÏ¿üòËñ.\xÍ5×`¨ˆ×ë1cÆÝwß}üñÇBÐ;bùòåûí·_"‘ˆD"UÇwë­·ž}öÙ„´@òx<Ó§OÿwŸ^| |ào>Y“šÔ¤&ÿKE „0Œã8¦M(‹!kÃÑ}¿[÷¹ÍŒjŠdú©aà€¸bZ„m•%e‡Æ(K0KãtÁ¬18jR“šÔ¤&ÿù²ÃëõÓÖŽýÇ4å 5ËW“šÔ¤&5©É?‘š±¬IMjR“šÔäŸHÍXÖ¤&5©IMjòO¤f,kR“šÔ¤&5ù'R3–5©IMjR“šü©ËšÔ¤&5©IMþ‰ÔŒeMjR“šÔ¤&ÿDØ=ý†azà!ÇÈe²Y[£%ÎgsNÁ.ÊNmôÒÿ‚nÁ`PÅ Ô××÷ôôø|¾ÚæšÔä_Œày^Q4̺ï¾û,ËÊçó¿ôÒjòß(”$B4åy~áÂ…h)³ûgöh,xà¦pxöÌãê[ „! ©P&kÔš³üß(è§ÓÝÝýÁ¬X±âŒ3Îðûý¿ô¢jR“ÿe‚lj¢˜ÍfŸyæ™ÖÖÖC9ÃjòŸ*èAfYÖ¶mÛ>üðÃåË—Ÿ|òÉóÒ÷h,-Ë:äCššê-ÛÊçóåÒ)£Â¨^Fú¥ï«&?#˜RÙÔÔ4cÆ ´ ´m[×uÌ~©IMjò¯ˆ¦iF‹¹›7o¾âŠ+š››1õ¡&ÿ©‚÷nFkkë1Çsï½÷¶´´T*•Ý?³GMšËår¹Œaš‘d·À8,a(£lüÒ÷U“ŸÓ41Ϲ©© óÔ0V½[kR“šü+‚±?–eéº …|>¼ó<ÿK/­&ÿ"‚mÛ•J…a˜p8ÜÓÓ£(J&“!²«ú™=Ëb±(K¼æðÏÓ_Qô‚V´$ÛÏ»þ¥/¯Éÿ¬°,‹†ò†a`r'F`þÒëªIMþ7‰$I"‘¶,—ËŽã`âÞ/½´šü7Šiš@bMÓÄ¡¡¡!³Ûgö¸Ün7Á<,BxŠ#Ž#Ië㌼òKßWM~F²Ù¬ßïÇø3A0=f÷ÉÕ5©IMþ©Ž¯/•J Ãhš&‚ªª¿ôºjòß(Ç[½ì÷ûóù¼eY$ú_iËä.iºeYEÓ ËØeYV¹ ¸¨ñ£„B!LîÄ€LÓ4Y–•$©vÈkR“]0v¨ Çq^¯—çy$8~é¥Õä¿Q(ŠeÙB¡D¢¨`0Ûí3ÿÈXZ–åõzUM3MÓ2VdyÞq´²÷£¨ªŠhS-].EQÅb±vÈkR“]`&ÁŒƒê4 c÷!ð5ù°š¦™¦)˲$I Ãäóy W?óšpW.—¯pç8ŽmÛ†a8Ž#I’mÛÕIÈø2Š¢PÀ`Y–¦iØaEÁY«T*†a`b³®ëÈ\°,.¥išËå², 2Æ ZÄØgQ+WCfLFR¦éJ¥‚Ïp‡ÿŠÿ„MOQ”¦i<Ï‹¢X*•ÌÇ¥àQÂäà“ø+–e1V?X–Ų¬®ë¸UU9Žãyô9†at]ÇEpûxÇ‹E¼˲(ŠÂí¨ª*Š"~#IR5ݸ§õƒ³ƒÏãáà1býàõ†ÅX–Uew4 kæy¨ÛíÎf³<Ïã‘bÓà‚Pô׊¿Åb`†K¥’,ËŽã”ËeŸÏDz,MÓ˜n·€Gg†ÏçîÀ“a{ ê O ¤¤ê´,ËWtUlßvÉ×ëóe*W‘´x™W:½ží^_Rð)Œ¯Ä¹S²ÜáõmñùÖN jÚçp,íS8_¯á3$ËrT–V8Ú¤iÑ }%ÚW"„n/ÙÓzðè4MÃq]×±²k¸axq‚ àfñç²,›¦É0ŒªªxÂ4Mãj†aȲŒÝÅq¶1þU×uY–1'Üql'| »hO‡gçyl$MÓDQÄYÃVgÆívã+xž÷.½ Q¶óØyæ§²VyAã½Þñ}[aÖ±hòɲ°žöíÈr ÛcѶEgX!EÓ½,çS`|†ê3ŸÁJÓÖtcù8Ú'H¥=­‡ÈqMÓ|>ßßÔ±ýÍ}ñ<Ý…]§‹È²Œœ"^âž„¦ilx|¹ \¿zwÿ|•ãSý:ÇqAÐ4 œs,ºÕåråóy¯×‹UO+6mÛØØ¥RI’$\9›Íº\.|/nßbÞ»ËåÂaÇæÁ«¬ª êIÄÁ¬ê=¤`pr±I’t]Çűu¡fñ¨ÁêŸTõyuÄ=6¿ ¸Ü®ë’$išå}‹w„-‹8 Õ )I’¢(>Ÿ‡¨R©‚€ûe̚ݟ9Veš&B=Ã0 ÿ5MÃ]ãÑaø%.ˆåá²ÕÝ‚kâg(Lœ²êÁÇU¶ –eAËýÍÆø·;øì²(ŠE©ª*Ì*^-Çq(ò3 ò,¨¯×ë8N¥RBTUÕívÃúƒƒÖÀ æ81Þ,˹\ºJ/8NcÇ-ÁŽ^/kõÎyžÇëE‘ã¸x<îr¹\.ÇqXˆÂ¢(Ú¶],+• EQØÖ¶mK’„݉%y½ÞJ¥¢(Š×ëÇã¦iRU.—EáyÞívãcP[°gõõõ±X ïÞ²,—Ë¥iZ8. 8º‰D" BpÙŸ]©TªþœÏçí®ÄÿÆÖu½¡¡¡\.C5@q]×Ad0 £_¿~–e•J¥ê®ÅæcYVUUÇ£i¬l±X ƒ¸5¬$ær9BˆßïO&“Éd’çy\Gš¢(Y–†I$ÕÓ[µOؾ¦i Y–išÖu]×uš¦s¹\0$nGduNÉ×iåv‹¬ßÄ÷ô6ö$†÷ÄFwe÷êÊ6tõ4umбeÄÎíc;z4–p6-U,+["Z…°ál›¥-ŠÐalâP„06 Nö´ž|>oÂó<Ž.EQn· K¹\f&“É`Ãàœg³ÙJ¥‚#PUaU¬(Š¢(¶mãoqᮡ Þ¶mMÓ!’$±,‹eÆ)è¶mó<? :EUÕh4êóù€,B¶mÛÆ0 ˲©T*Þ[ E9›IgÓº£·øÅp_r“©ø=Ú|ú ·~€SjæÕ½¨ä‰­£\ÆW dKWÜ¥œäXQ¨K&µBÁbB :'˜’à÷HY%étQ)í±4,œ'—Ëå8N2™ ‡Ã{ú¼ã8Ùl6 b ‹E¿ßG”Édð@Êå²ßï‡Oÿ,%EQ@@UU˲ŠÅ"¼U˲r¹žQ›ššJ¥Òî…"»›L–eÃápggg$‘$)‘H¸@DÒÛÛ …ªVAQ”P(ÔÓÓãñxpŠÅ"Ô®¦i]]]<ÏûýþT*EÓtCC4`,“$)ŸÏ»\.˜pØ <—Ë…S°MAH¥R‡>ã8†a444$ ìì@ P*–M[ð‰Fe­2}ÅF"8ú"{ -Ë$V¡MBq„ð[ˆ4)Q!Ål)aY—Lq–iÙElŠ0!„(ÑâщK% kþìz†cëõza;«T×uǃ·ƒ=ß¶í|>e}}=Bx ðRjp—ÉdЉß%¹\.‰d2`Y–j ¼V¥ªéþFªM¹Âá°aBSÃ0¼^oGGG(r§«««)ê/§Ý’ÛW4Ь«Ì›-¾N~uÜó..t䜟yY0Lròî{…U|çO/zùÝ„#æ’Š–U¿mË…Êf·+™ËD¿ùÔ¿`áܾÌSr¤ËL ú.{ù%ÃÜ&‘Ñ?»Îºººb±ÏC„L&#Š"Ü”Ÿý¼×ëE^__¯ëz]]]2™L§Óˆ3lÛîêꪫ«ƒ'ýšU!rªT*P¢(¦R©P(] ¥é83Õ¬ ‘þ€óÖ[oMž<™¢¨p8Ìq\6›ýâ‹/6nÜxÝu×!¼»îºëF}À@1š¦‰Dðùx<F»»»Y–­¯¯Ïd2ÀÉëëëï¹çž“O>Ùëõ¢L¾ ÅWýNDŠŸ~úé3Ï<³bÅ š¦%IZºté¸qãú÷ï«  T*UñgœGY–±I [eær¹B¡ÐØØX(°åt]WÅ0 Äj0B~¿1I*•òù|Éd²X,~ûí·+W®|úé§ !<Ïß|óÍ3fÌhiiA˜¨(Êš5k¾ûî»Å‹Û¶í÷ûs¹ÔWþÅÆoàgÀpB%ÂÂÀÃMO$ èîîöz½“¡=àŒÂ¡á8ZÖìŠAÈçó0Xˆ¹ãñ¸Ïç«Ú¸òø'ÆÒù¯Ðô¯˜5E1o¼ñFww÷Ì™3³Ù¬išwÜqÇüùó÷Þ{ïêgwÿcçλëD¤¸ü~¿Çãyî¹çæÏŸÏ0L0ìèèðûýEe³YÄU¢(žzê©Ï<óÌ’%K>úè£;wº\®eË–]~ùå|ðÁjË–-ß|óÍA´÷Þ{C‹a—ÀƒºU,«¨:MÓ@ï  iš# ? v$R‰‰Dâž{î™7o^KK 6+<hU”d}ùå—¿ýío/ºè"¨i¸„xCmmmˆáÇÙ°aÃÇ|ä‘G655•ËåmÛ¶}ôÑGÓ§Oß{ï½ápíiýˆØªq<¶W5V}ø»+Ót:í÷û_xá…O?ýôá‡Æ/o¹å–ø†aÀ@™.Z´¨šPÀ±·,«¯¯ïw¿û A8@,¼X¼x16s(Êår€¹àšTãû¿—X,Ö¯_?EQ^yå•ï¿ÿþæ›oƶ¼øâ‹8à€‰'Z– … j½^o¡ò“ãŒå!´b:}}õ§Ìþض›Y5~Ⱦ¶_&å,i ÈÄ£¼óN¿óºÌÅg¦ÜÞð³œJ!ÞX__qÌL±#à;ðûOÉ¡ï‰9ÉÃþ´£ÄZ#<.Çå1÷ÐBèúŸÿüçR©4nܸѣG»ÝîT*¨æïå½÷Þ[»v­(й\Ðw©Tjjjjoo:t¨ã8ýû÷Ïçó¿ÿýï.\àúgðiggçûï¿xã7{ì±/¾ø"˲½½½Ÿ}öÙ]wÝu饗^uÕUÈ%áEBEqÆ ŸþùG±sçNÇÓÛÛÛ¿ÿçž{î¨£Ž ƒð¹«¹Ï¿Â{Ùì=÷ܳtéÒ[n¹å­·ÞRUµ««ëwÞ9óÌ3?ýôÓþýû§R)Ã06nÜøÝwßvØa{íµÐN€8ï,ˆB! m¥R) e2—ËU*•öaßV©'Pz.—kË–-Ø¢Á`pñâÅË–-»ãŽ;žyæ(Ç{ìꫯþúë¯#‘ˆ×ëaûöí<òÈÅ_ ³¤0’Ïçóù|HIÀe·myŸj¢  ˆªª---™L¦ê>â½€f¡ª*`?À•Jq02nš¦A‘B¥ÃEC8TÙ¿Wžÿ†±Ü=R©Â°Øñçž{®ßïO§Ó¸ç#<òC©¦O  êª §›‚}†ÃÌó|,›5kVssóˆ#ªÊ‹öûý€¶lÙòÒK/=÷Üst {ï½·mÛÓ§O¿þúëoºé¦+Vøý~ xW]uÕ×_ ïn8– * øµ×ëEzÀqœT*FEÁR« ¹¯×›Ëå×,—ˇ~øÔ©SA ¨"f€j%Iþ"’a>P„»T(*• ò½½½×\sÍìÙ³¡K¥Ò5×\sä‘G"­‹'ÿ³ëÏd2` ”D4†hþg_b<WUõÎ;ï\±bŵ×^ûÎ;ï”J¥T*uî¹çò<ÿÚk¯í·ß~ˆ¤Xa·)Š‚tÓM7-]ºôÎ;ï|÷Ýwq&/^|à 7¬[·Î4ÍB*•J2™L¥RãÆûøã÷ÙgŸuëÖ;6›Íîµ×^À“qöˆÅbË—/?âˆ#öÚk/ØEÃ0.ºè"Ã0ž{î¹Ã?œâõz·oßÞØØX.K4aÙ/ Ä+gBžx)51èJ½1—×"4ï¸YR!„[¢lA2“”MM”Cq GÓ–ªË,C8‹Ê¢ kÞôG–p÷³ë~D²¶Ê’À—$ ‡öî»ïž?>ú¼à%–Ëe·Û\þþ^_"‘¸ÿþû?þø½÷Þ›a|Ž… àCWÈçó‘Hä‡~hhhH¥R---H ÿ½ôëׯ§§çÁ¼ãŽ;N<ñÄW_}•’Éd>øàƒ£>ú¶Ûn[¸p!!Äårõöö¶µµU*n›u4‹’ÝžlÑþÍ-/3LÝëoŒoFšºS9…õ6ûƒvF鈴 ¹å¾àØ¡›ÿü¦I³öãD-[Ìs’‹Õ÷׋äþ»¼ñ¶ÑFžØfØÅp²4TH&[ïÝ  ëüóϼßÝÝ u±'å#Ëò5×\³xñbdÝÞ;ï¼óÇùàƒÆŽÛÑÑáv»{zzþq%1°îíÛ·_ýõçŸ~ @îÀçóy晲,/_¾|îܹHÚýc]¹;ÏEÓ´çŸþ‚ .€rß¾}ûï~÷»¥K—~ñÅãÆÛ¶mŒè±Ç{È!‡œrÊ)ƒž2eJ}}½¦i8Ô7nD œ†¹sçêºÔtÒ¤IÑhtÚ´in·–Æä Û¶wìØ±téÒ>ú¨¥¥Åív£“í1Çãóùn¾ùæ§Ÿ~±²®ë—_~9¢ŸÏW…:xž§i¼pAt]‚RÅQá°¢Ï ÒȰ655!Æ}÷Ýw—/_þúë¯ï·ß~URÏèÑ£o»í¶ë¯¿~åÊ•ðéK¥´Ã0ÅbŽ,ËpËå2¢\qp5“…M‚{lºŠ{!q†ÜYƒõx<Ò …MÓn·Š)-—Ë•J¥ü~¿¦i;vìhjjÚ©J~.™õÏå.3I¨Ý.ÑÙÙéñxÚÛÛc±Ö„WŽwPå»"ϼ»Ý"»è¹U‚O °mûÁܺuëàÁƒ«!E.—óx<àvnÚ´©\.}ôÑÀ¯a–,Ëš2eÊ#<‚ÄR<O§Ó¸¸¢(@ˆJ&“AZ»Áãñ ˲€Ö*Š"Šbÿþýc±˜×ëM¥R‘HĶmÄx‹°ˆ°÷Ð8@_5M«««Ëf³Xs6›­¯¯Ç¡€€ìÂöíÛªï # h‹`"”Ëe`/,Ëþìú«dý ƒ ö P9<'pǵ‚ŠÊá‡~øá‡W¡uøìHc—J¥p8œÉd \Ð2ŸÏÏ›7oO'4‹=üðÃwÞyçgŸ}œÖhæÌ™3fÌ8ñÄ›››O9å”D"áóùJ¥ë´¹ƒ™’Qªd›{¶6üåýo¯¾åŠºAÄï'éŒãs¢oCÅà\|#-rYÊZþø M;v$“å€Ïåv{1¯_¢úºˆ@ö¢Rç&©,÷òsD©ø#B3MÄùùÐR„>ø€¦é¥K—žuÖYˆ êëëAû{AZýŒ3ΈF£àȃÁ‹/¾ø¼óΛ8qb,kmmE3™LƒÁ=qs-Ù:í´Ó ˆ›çùc=öŠ+®øÕ¯~5}úôºººŽŽŽh4º§ö0ZH∢øñÇ»\®áÇB2™ŒªªK—.}á…Z[[·oßÞÒÒ’N§!͘1㢋.:õÔS‰D>Ÿ‡–0MsÛ¶m“&Mª««+—Ëï½÷^KKK•2æñxî¾ûîµk×Θ1ƒu±ogg'!dÔ¨QP•HÍ8ŽsÊ)§|ðÁmmmð¡¡‘êêê@ßE±X,F"—ËÕ×× …€R",ƒ%¹ˆˆ<à¬Uù«år8¾tòäɰâÅb1r7iÒ¤ /¼pÇŽýû÷õ¯ •J¥ÓiQC¡ŒÌa4ùtÑd2)Š"ú‘º‹Çãà "B€QG2-2àxÃ7Âôò<_(òù|(‚ã @ˆ¢¨~ýúáODQü§‘å¿Ä†uv“'Ÿ|òˆ#Ž@ ºP(€Ñ‹.`qT†@qÀFB#|í¬4M=zô‚ æVƒø¤Dhœ/¾ø¢šŒAQ”ƒ>ø«¯¾‚¥|á…N?ýtÓ4÷ßÿÇ{ ÔÜ;v\vÙemmm@`РAK—.- ’$I’dšf(úá‡Þzë-š¦[ZZ|>ß’%K~øá‡*!Yh$,€{V,ݧÓi C¶m·´´ |LºÇÿøÇ<0‰¸ÝîP(tþùç##•Éd|ðÁO<1—ËM˜0á±Ç»÷Þ{9æÛ¶Gµ|ùrEQ(ŠÚÓúdÞvÛm=ôiš§vZ8®Ò¦þ^>ûì³ßþö·/½ôÒ Aƒ±€Uöù|—_~ù+¯¼²nÝ:Ã0Àð0,ñÛo¿]ºtéûï¿?räHÐ@_ŠD"çŸþ§Ÿ~úå—_–J%ŸÏ‡œe__߬Y³ß²e va]]ßïïííE1 §9¹ ²Ô ,X¸p!¢m¿ßŸÍf !¹JœâBªLèŠéBT’Œâñ!±ØÐžÞÝ=í½]í±žöxW[¼ÏeRå8¼c[6lN³XUç â-Û¡ŠÉ8ŽAÎ"¢N(B2½§õÀ/å 5@$@&Õ¦»8HÞ€¢U.—‘¶Dª {Ô¨QC† Y°`ÁO?ý{Æq\©TzüñÇGå÷ûÀÀo¾ùæ;w"›H$V­ZõÐCe2™SN9¥_¿~™LÆëõþðÃ/¿ür}}}4moo¿âŠ+¾ÿþ{€ÛØo?üðÃ5×\ÓÔÔ„'óøãs/–¦éeË–-[¶lÓ¦MgŸ}vKKË¿b÷Yš¦ÉstNU–YÑÖm†gŠÅâ²eË.\k_WW—Éd@ÍBˆ4ÏŽ;ªü4PÎ’Éä† vî܇'NœˆÍär¹à9®]»vÈ!x%PO ,ì»ï¾†aüæ7¿9묳 ÐÔÔ”J¥õ …Bˆ„Ž;î8ÇsÎ9ç¼ùæ› uww=zñâÅŸþy¥Réîî>ùä“ …Âõ×_'IÒÝwß-‡~èõzwîÜ9gΜíÛ·?ûì³Uí 3‰d"Z¼<T³t@«^*ÙUÏŠXÍqœc=ö÷¿ÿý–-[êêêâñ¸ä÷©4W1mbÓD7ÆÝZ6HÑ Z†¸YR,½H‚,qt¢Ù$Poó †HS–-1\Ç·?†Z£EMÉmÚéÉëCÏ:]rÊEž5‹Õ‰àuåyU.™Õ=· “ \E§Á·ƒñ´×ëÅú‘µµ,+ Âè‚Ow·‰R-Á•‘vG–åd2ÙÜÜœJ¥¾ûî»r¹üöÛo×_=~õÕWÇÿøãÇŽ‹õÀ³†Úzýõ× !³gÏÎf³HTï…eÙ›nºiñâÅPµ¨šÝD1r G[&yé9Cb†´´6ÙìZeŠ™`ˆ÷©åAZ™)Ó´ß+—uÛ09N¬ØTÑëóP*¹ãŽÛ\>÷WŸZ7þú…ß-Ÿ£óC* ¹æü//={\ÿó<ýZ4Móx<4M£2 ¶ÇãY¿~ýo¼ñúë¯ûýþóÏ?ÿŠ+®X´h6sµ˜Ñ67rÙ—{<žl6ÛÒÒ‚sì>+ê:˜¦‰£*Ë2âB;6!~ U Á€ €qøŽ(ïA8‚-êr¹º»»xàÏ>û¬Jž_ºté7Þo ±Zµb_TpÆ –e=ú裧vZGGÇwß}÷Ö[o 2„¦iD?¶m···B6oÞßÞ{ïMY²dÉ¢E‹ÚÚÚ@¯ÅkooÏf³@à”SN©««;÷Üsß{コº:A¶mÛvà^tÑE|ðßï߸qãœ9sÒéôÝwßÉd Cî¿ÿ~žç?úè#ìÉÃ?¼§§gÕªUÀiqNAÛ‘eyß}÷uçž{î™;wî°aà9 !Š¢€àƒšKœ©ûî»ïŠ+®¸ùæ›E¹å–[:è D"7²uëÖ‹/¾øž{î™6mša;wî<î¸ãDQ¼õÖ[QõE]4uêÔSO=»åÁ¤iúwÞihhX·n݉'žØÕÕõÔSO!Ê, &L¸øâ‹?ûì3Š¢‰Ä¬Y³(Šºì²Ë\.W6›eY¶¯¯ï׿þõ>ûìóÒK/U ë!?‹íÿ“Ò‘*¢hY–VÑc±!œãh4Šª]×-Z’”56« ›7oƃA°Q£F|òÉŽãì¿ÿþ G²,;wîÜíÛ·<QÏó ù|Þ¶í!C†¬ZµêñÇ?ꨣlÛ>ñÄ9æ¿ß?|øðH$’L&Ae9‰ð< ‘áxöÙg'L˜pÓM7 žç ôÆozè¡sæÌ>|8Bá÷ßÿ“O>ijj MMM¯½öÚìÙ³×­[7fÌ«XÇqÍÍÍÙlvîܹx8»—díØ±d¼¾¾>¯×‹ ž5kÖÌž=ûè£v¹\‚ ´µµÝÿýW]uhr¢(¶¶¶’´8Ž ‡Ãàþ­\¹rOëÇ¡²,ëá‡~óÍ7ˆÓˆÈ¦hRuÁ\pÁŽã  ô6(zy—{A–’¢¨Ë/¿üÌ3Ï:”Øçó9Ž“Édú÷¸Ýn÷çŸ^WW·råÊ ÄãñüVŸçùH$‚yÔØ*ˆÞ~v¿ÁŸ•L&ûõë‹Å"‘H¢T4hÉåóE'–æ÷6nݶ#uÊÙ]¶@»Ã´m±tEãÊ}fQnm3ñà~ç\e° chn‹úBî–f]$¼~öŒ«%»á¼c²^*ˆ’¤QÊåm—;”·mÛïÐívƒæCn ‡ÃpÞq¼Qº°qãÆêâá;ÃC¯Vvãfñ²ªÕ`0Ÿ0¨ªª‚t“L&[ZZâñ¸Ûíþä“OAxòÉ'Ï:ë¬ÞÞÞ>øàå—_?~ü7ß|ÓÜܼÏ>û Q>bÇL&óë_ÿú¾ûî+•J`&K’„5Wk!Z[[«T—Ë•Š™†” HA^&Ÿ®IÚd¼—ˆ#¤‹?ÈžQñ>, ^÷uA`ÉΞJ} mhÄ‘ÑÕ5°½Á%ò“f¸ ŠÚ“ê 4ü0òÀ9²}«Z¶Þ>~ÜÈý _ï•ÊR©Tòz½(‘B¦¦T*mܸ‘㸽öÚ«R©Ì›7ïÁüì³ÏƇ}[%Î x‚':;;ˆÜ þ§Ÿ~úÎ;ï„{ŠûJ$ëÖ­¥åä“Oîîîv¹\¨Qwƒ2™Lss3xû’$mß¾ý¾ûî»ï¾ûêëë%IB¨ èrw5íK 4‘HÀj"‹‰ƒ?xð`ÇS.—±‘´¢Âçy/£Ñ¨ã8 ,ðx<×_ýé§Ÿ>`À€L&sÏ=÷œqÆ(ÛD,Šâ™gž¹eË–!C†¸\.˜IhÇqFýúë¯#ÑN9óÌ3ÇŒ3|øðÁƒ#®Ú¶m›ßïÇ„þ)•J¯¼òÊ„ .¹äؼööö÷Þ{oÆŒ³gÏ3f  |ýõ×o¿ýöàÁƒ9ŽkhhxóÍ7çÌ™óÚk¯~øá($ƒ†~ÞÔÔôÒK/-_¾|Þ¼y¢(üñà 6L×u<¹\*ýÈ#>|8Þõ…^øöÛoÇãñ~ýú‹Åwß}÷C:èñxÚÚÚyä‘óÏ?ñâÅp¼LÓ\¶lÙO}:Lï!C~ûÛß>úè£ðA,Ë0`À¦M›8à€ª±°¾ï¾ûî·ß~Û·oß¹sç;ï¼SµX/¾øâ°aÃá<@är¹GyäŽ;îÐu=“É}òz½¦i®]»5.—뤓NjiiAŠÔ0Œþýû;öË/¿ìß¿?˜ÍQ– TíÄOôÐCwÝu×Ï®?‰D£Qxßíí횦%“ÉjŸ DiÕ.ðF]©TTU° ìn Pt8H¬‚-[8lØ00\êêêl*¾;3™L^yå•(ì»ä’Kš››:è §žzêâ‹/®¯¯ÞõFµ{¢cÀ/‰F£„?þ¸Šq…ù`Òp4Ý2*4gsŠtµó£Žš½W¤µÂyMÝ`Må+~-oøüüÞ£4‘s8J(:¼f ’‹xEÊÃ;rï1ëßZÓpÑISI“JÈ´ 누C!!äÄOü›ÚvÐÐ6oÞì÷û‘#ikkÓ4 í, ›7oHah”]ŸJ¥€ ¢¤`5̘ªªóæÍÃááÃûܸq#ªÍ®¸â ˲n½õÖ£Ž:ê ƒêîî^¶lÙÌ™3‡Z(’É$Òù ÚÁ<#³R\¥îîn°‡ªt¶j¸é÷„-¯”Õ·’ÜþEâŽR^µ@¼¡[HIòùèl‚œ1y1?Ð!>¸¡˜9Âæ>yëƒË}~^¯˜¶E56ˆk>yï„SGëIYµ5ESÍm͉è&4ù+™á`µ†ŠòØc]|ñÅÀ»‚Á  ¯¾úêÁ\]gµK,KÍœ9nö3Çq7Üpï~õ+<œX,6~üøB¡pñņq ' è„v‚ÑD"ÙlvÆŒH‘âÉ»Ýî›nºiþüù¥R©T*¹ÝîjV¬[`màà]í#ººº—Áé—>—ËZ™¿··wÒ¤I^¯·P(„B¡t:ýÔSO¡Î$ŸÏïܹ“‚n!?üðâæJ¥’Éd@z@…ÆŽ;ÐÊÙÄÄ›7ov¹\{íµ×Í7ß|íµ×Ô=ûì³±ì‡~øÄOa[QÓ4UUÅÂî¸ãއz0r"‘ˆÅbHÍlذa̘1 b,Z´¨_¿~Øfªª0`ß}÷ݰaÃäÉ“Qaölgg§Ûínll0`ÀÃ?ÜÑÑñÍ7ßlذáœsÎÁN{öÙg§L™²aÃÓ4‡ æ8N.—Ó4­±±‘’H$@±X<í´ÓŽ=öØt: GÄ0 ¸>–euuu×u}ß}÷å8u†¦i^yå•Õj¹\nüøñ£Gþàƒ`’ï»ï¾_ÿú׉D]–e!Û·oß{ï½{{{(Oœ8=aõW{Eýl|¹Gc XO×uÃ4Í ‘ù¿–+AM„¬bh§žz*BrMÓÏCÍ"à,²«Æ¿P( ¥ÕËåÜn·¢(È}⨄Ãáîînà~(ðÇМ~ýúõïßâĉ‹/îìì¼ûî»9æ˜5kÖ455U9Žãàh¥Óé>úèË/¿ ‡ÃÀmÂá04;RÙåryРAp?óù¼Ïçªpûí·ŸtÒIÕ‡›ÍfÑŠ¢··×qœ#Ž8bÿý÷G“<Ø'ƒÃ졆$™LÂ#ï½÷^6›íîîŽÇãO>ù$€ ª³À­ú³°U¹\nOëgY6Ng2Ç P°¦ª[´»OÔÑÑt "šf¡ÎYzžÐ¹•¨ú‚+€2SÔP¢þ:‹Uû~555¥ÓéT*…ÞE¡LÄ?˲"‘ˆiš¹\LÑ=E–ðºàL´¶¶Þ7 ÃUÊGüîœer¶Nda{!ðÈìEgûÉ/Gˆj[%¡¿Àæ4[1ØS’iV´(G·‰‡)Zå¼Nš ÚݯÏK¯’|Aª –u+$ ^–í(³ ‚pì±Ç¶¶¶"¡P‹¢(õÃjöëן„/ÞàÑGÝÜÜFÑ‚ f¬j AÆ9DM°(ŠóçÏomm­ €AWâtttT*•Aƒ%“I èƒ Êd2(CÕ°µõõõ(´Ç±7 càÀPÓØc+W®<ꨣ\.W2™¬”ˆÉÛ²è&2ˆ˜wtÑÍ … »•fø’B7ù㟯¨÷‘ŠE 4ÉÅȱ'lËg„lЏdÖÖH®›üiÅ÷>}+C‘bŒÞò­¯Þ¿_]Ø*!ΓþkV yúT*µfÍšÛo¿é›p8|ÕUWÝtÓM×\s n!8Þ8œ0€ÛsæÌiooGT‡£qË-·Ð4}Þyç¡fŸ¢¨É“'‚>ðÀŸ}öÙ#Ž8\nT éëë£(êÌ3Ïlmm…ãGöÒK/åy~áÂ… ©WUþÍÎD FÃ0Hm¹uªÿ§Ÿ~š9s&v…¦i­­­(VA ›ãŽ;'­!^}õÕj«¶îîîÛo¿~$¼$žAµ«$LÓ¬««ƒËKÓ´×ë={ö¬Y³®¼òÊ 6üá¸üòË÷Ýw_˜^øRªªvwwkšöá‡îرz?ªoÑ(ŠeY¤±ª-Õ\.×ĉo»í¶E‹º„¯ÜÒÒÒ××·sçNèùAƒŽwõÕWÿý÷·ß~û¢E‹^y啽÷ÞÍuá3ÁwÙ˜J"‘¨««CAÝgŸ}V©Tzzz¶mÛ†B5À'àþ ÞfóæÍȾa©„jir¡P˜2eÊ=÷ÜsÁtvv"´À¡ƒ“Ê?þxä‘GF£Ñx<Žv4h—c¹§‚õd,á,WM+µK€Sù|>ètè¾T*d®!UH! ÑR*•¦L™R}axÕF [·nÅÅQ‚òÃ?Ô××744À "ÌÚgŸ}yä‘#F<÷Üs—]vY•:\­a"„ 0`ذaPOétÚçó¡«^6!!€Plh@ÿXFµ¦Mn ‚eþ`ýªÅ( x2Ç­_¿~Á‚‡zè¨Q£öÝw_QÇŽ»xñb,&NB€ÌTŸ@uœ°§õƒA^%ТçEµÝÔ߈³køÓð4áu¦R©¦¦¦¾¾¾ºº:𪠶À®F‰UÍM¹àÊàN3™ šØõôô ý&žêí·ßŽ f†ã8Ìü¡iì€@ €QõHHSJBð×8B”qŽÕ³šJ*)Ë)K¶Í1ŽBqªÎPCñCR–ér(ŠbLšÐSæÅ3„%æ¶ŸZÚ[‰¡RÄQup.ša%ÇezäÄOœ:uªã8…BÉK¸ ø ¨ Û·oØ èÑ3wîÜ)S¦T#@¬HÞ % 6~ oàðÃ?ì°ÃÐ p%J]ÁbaãÆE¡«H±X¼á†àg@»L¿µµÕ¶íuëÖpÀ0ê¨BÙºu+,¥®ë‡zh0;ßãñ”Äà ‹e¶zrõ¥ü÷¬ùâÛQ‡Ílëí-E<AΪfçàý†%A`IÄ›úQ ‹Þ‚jزHþòãW$›$~qÒë/ü´i}?Æ©ÿô½«xâaÂÊ›Ž:vH}£µ;ÆÏ=÷MÓ/¿üò[o½ÕÜÜœH$¶oßîv»¿ýöÛÉ“'£6(=2—UòÔ¹çž;xð`@â°U“'Ož3gÎÞ{ï=fÌÇÖ2 ™Læ/ù ô öO2™I«æÍ›×¿BþÚ˜eÙÉ“'Ÿp ýû÷=zôîïo àîT¡¬çŽïÔ©SÁ7ÄÌ à. €UŽÅbÀ$AxôÑGo¿ýv8RÆ`žo¾ùæ‹.ºè„N¨öî€g Ó…¯ÆÙdfÅŠ#FŒèׯ "mÛŽD"cÆŒ‰D"o¾ùæW_}µÏ>ûàâ] Ç‹,Ëýúõ«¯¯ç8Îãñ ´xþùçñü±AH§Ó@˜A€ö#„T;ó<ßÕÕêëë?üðƆtÚ  / 2dùòåcÇŽýàƒÐ% ê9Ø¿l6‹–C† 1MsýúõsçÎ=âˆ#† ¶Ï>û 6ìÀ<÷ÜsQ+‚-N è#”;ŸÏ£úÑ> £Ó¿ÿ¡C‡¢ø¦ç¡‡ …Bù|> "R*•J8¹»óXÉn þ¹±„'µË1¦iªÖ_1´*Ä zJpð¤P~.Š"ž rŠh…{P(¶nÝ:oÞ<„•ˆáð\€––àÝ Ãøýþ9sæüæ7¿9öØcQ—ȉã8Ð|ü~?N^9Ìj4=ðÀÓé4ÏóÐtÈ6Wû²vwwƒ IR2™´,ë§Ÿ~Z¸p!òÃ4MwvvHL&“psº¡— BäÞÞ^¿ßü}t;\´hÑõ×_Ê)§`7,Nijjêéé/ƒÆ‰p®UUG’¤=­]ôpƵãØWöê©ÆË>묳¾øâ À#Ø7©@Ÿ4hÐé§Ÿ~õÕW{<žjåâ .¸àÃ?\¸p!œ¥R)‘H ±Ú××7pàÀ… Þyç·ÞzëwÜpèС°Ç Ã\{íµ8ÿh@¬¨ž½ŸŸÏ×ÝÝ ' U†!õœ’ã$‘§R,8NòË„6oÒªÅò’—¡uU/fhâöqRY8Í&„-36/Q–H»XžèÅ÷×~9cá¯HØ£›eÑbˆe«•’¿Ñ—èîªÖŧÓi·Ûö¼°sU§ ,¶¡C‡Bª|®jš °^ 0 Q)°}¿ßLØ6ìê|tI-¾T*)Šòç?ÿùºë®ƒ»¹ûƒº÷Þ{/¹ä’3Ï<³±±1™L¢± ö‘G¹víZT•Áo!«¾¾Ô à™¦ÉŠ2å4D|¡lœ4#Þú;¶¶uu674º´JÌ2º~§ |jy¼²+`Sf<¦h f¡Ä+ªÁPœZ"J‘moÈÑÒÈ߯¦M›Ìó*˨.Ž ´ ÑÔ Ì̉'"2Þ¼y³$Iƒ.•Jß~û-ºÛT»(cë"@G0°â#‚ñgYÖ?ü0}útÛ¶{zzÐnëÖ­¡P褓NÂ.¥( ¼˜^T; (BærÒ¤I…BaÍš5Ó¦M•§`÷V|U ~?ØïHEår¹c=vñâÅ_~ùå>ûìƒÖX-ÒÕh=ºsçÎÌ™3çˆ#ŽX¶lÙ¸qã,IÒìÙ³¯¹æš¡C‡öïßßãñ ŠÂð‰mÛ¶ÁÀÑG¥££ãÖ[o=óÌ3-ZÞ5hP¶m4¨j–€Z«ÇRE>|ø~ûí‡)—Ëuuu@_AGR%“ÉÀˆ"鮪ê_|qùå—£Ô­P(d³Ù†††J¥ÇçÎ{çwΞ=“†††îînǃ}^.—›››¼BA¡+".g׬‚X,6þüsÎ9çÜsÏu»Ý OüðÃàC€@W¼!Iº$bóWkúQíúÙgŸ}öÙèF7n\[[Þ5|_ä\zzzPgYõ„@جZÊjˆø7Ær¥#Õ’2XM ø‚je" ´ìC |«ªª½½½h“†¶Ú‘H¤»»›ÒÛÛÛ××^#–eׯ_Î8`E}EYÈ]wÝuÅWàÀ§Ói´J‡£‡>ˈ{vo°âr¹Ž=öØ5kÖÄãñH$ó¹cÇŽQ£F!UkqÇwT]ZÜòþð‡1cÆ«„'㇗´A=îZ’¤p8Œ|dµK§¦i 8äðÑV­Z®Þ},«§ÕŽ”UÏëè£ÞÓúá%ÅãqBˆÇã …Bð¶z„¢¨I“&½õÖ[h×^ˆétzÇŽårù€ÀRqê´ær¹iÓ¦½ñÆ6lE–¢(ǃ„܆ !“'O¶,뢋.úöÛoO=õÔ%K–|öÙg[¶l!„¬X±â›o¾9餓ªT0ùŸX¦>úÈ4Í™3g¢.J’¤´Ë×ÅJyÞGä:Bùí¼¥'ÊDgIYQÊyÍ.ټƸ,ÙïÈÓ¡5/#0ºE)pNVpLšMs¶ïèµKdô‡¶d†«“¼„biF£QmX–E….¶1´¹F£èˆ‹‡†È»ŠO ôDÛèx<ŽR™p8‰D*•JuØh™8@2€(€ÛŲlSSÓQGµfÍš³Î:kéÒ¥?þø#Êéž|òÉ>øà´ÓNóù|À$€–ãHwÜqÏ?ÿüæÍ›Ñ%Èåhšöý÷ßW™Ÿp•Xw6•éMgâ¾:2f ÑŒÂõ¿[ì¦=”ßcV!•&~yoÔRÊ*©A®&Ùx±yÖ›6·ï¬ËÈAÓEœ:ûR×G’B16{9ç*qÑ…ƒE‘T™Ð×,Ë~öÙg™LæÊ+¯¼ì²Ë.\x×]wýú׿¾à‚ Î;ï¼n¸a=Ž@•XT™‚\>ÂDÄ©9aTU­¯¯Gs¨!C†¬Y³æÐCõz½0ŸdWCWI’ ¾±ÉÁ *‹ÀѲ ®Òßôª­ºžxÝØÆÐ ˆrDQaÿý÷Ÿ0aÂã?¾qãF`o8ÈèDqÏ=÷¸Ýnì.äkŸ~ú馦¦~ýúAmΘ1cذaˆ%€²Ø¶½eË–‰'"×¼ 쇆††_ýêWO=õÔW_}À²E¨dCÙ>2p ʲ|öÙg?òÈ#X9J6lØk¯½~üñǪy¸å–[ðyÛ¶ ¾öÚkíííÊo5»ù曯¼òJtüñz½ÝÝÝ6wìØ!t>ö!ì1EQP˜Ò‚t>ØRH'3 ÚùªU«ðÆc±—ã8˜W~³Ñhôæ›o. UŸ¬··÷•W^1bÔÔܹsŸþy¬Ý ×­[·ï¾û~ñÅ>Ÿ~Ùm®Èß©WQ„ÉXrÇsÿ5âÝj].××_0«»»Ûï÷»\®7¾õÖ[ ˜®_¿þ£>Ú´iÓ7ß|êM&“ikk‹Åb¯¼òÊï~÷;@ ¨º3 cÕªUíííðÅ`§‘Qs¹\ƒv¹\×\sÍ'Ÿ|‚1F_}õÕÍ7ßúh,Íìâ‹/&„Œ3¸Ž ìðd±! '¢Ìd2ÙÙÙ‰–ŒpÃá0Ã0ëׯÇuuu}üñÇ«V­*•JhA€I d×"t¾À)Ä:oÞ¼=­Ù²ÖÖVBü;t#úûT%^ö¡‡:mÚ´‡z¨££=»«ý¾{ì1BÈÔ©S{zzà·‚©„Žçxà1ÇsÓM7a\b&˜ÿ_|±R© øa˜æææ|púôé Pd£F0`ö¨³kŒ ŠÛö´ßdY~ñů½öÚgŸ}Ät ¾Û,ž„¢^,¤4‡<|Ä,Ú„óÂß[2Ë}¥¾2U2E½L9Ó±UGçi]¤š²Jå®Î§^p6¶WÁÒӱР©¨nŸ¦Xp¬Ðb9$Ø6Ü)ÚHE܃ÂY¤—!P((uõù|PH1¢TJ÷ÓhA‚È„Û<þøãûì³O8†qÝÿýÛÛÛQ<€4šo <è ƒfΜ¹dÉð]{{{aN8ŽéZŽ©mÛ&Óå éþ°–-_×Dîûí¥²3ýök‰Z ñ\"jé!ù¾úrù<Œx<¾iÓ¦K/½tÒ¤I“&Mª–¤#^D'©C9äóÏ?_¹r%²-;vì¸õÖ['Nœ8räHD®È ßÿýÛ·oÇ.¹äŽãFŒQm— ý ¨ùÐC%„\{íµ_}õÕŽ;|>___ßçŸ~É%—L›6mÒ¤Ipå«m‘©ÑuůP×C† ±,kõêÕÀT³Ù쫯¾úä“Ojš†@Í>ä¡5$ „7èóÝwß]{íµ^¯wàÀØüóçÏ_±bÅSO=Êg,»í¶Û&L˜0dÈjg”±lï’Зà±a•Šî8A§yÃ0mK–åæßÕ¹s̾£4Ms»¤T2nÚ=¿½Ûqˆ pš†â9ʲÇuê©§Ü«?qx¯ÇõÕ—Ÿoß¾ýÄysyŽah’ÏeBA¡Pèîîfªµ¥‰8–cÛ¡]²X*æ1¹fŸa{?ú»åo¿ýö)'Ï7Íÿ↜rÊI×_wÛ%©ªJ \$¤ˆ=ûÈY‹-:÷Üs p÷]wÞzë­W_u•(òš¦Ï™süâÅ‹ ]åyž¦Šûï[ÚÓÓsÐÔ©¸àÌ™‡=õû'꣖eårYY–mË`JyE)áOrÙ4ElgKżã8„¥ ]châóùz{ºšðñ´®›=úÈE]ôðCá™Üxã þnùi§-º÷Þ«W¿5tèÐúºEÈa‡N¿è¢‹,XÐÔX 'OštÍ5W-Z´h¯í{Z¿(ŠKgÒIY*J) dÒIŽã(8G6!ŽE›¦ÇqˆCxŽ»ü²ÅÓ¦Í0tuÉ’%è§³eó¦U«V=½ò©'Ÿx, Åãñ@À—ˆÇeŒ!cQ5M»tñÅ“&M¹ø¢ ®½öÚ––8w/½ôÒòeËþôÇg[[š0io0ôkªR,äˆcµµ6[–Iª½ŸlÛ² !„¡ ElŠØÄq6¬ÿA8$uº»»ÿò—¿<ÿüó_tÁ³GÔn™´KûóßSE%d³$(ÎD‰éäÉ]w›rY6¡lCKž†²cöÂö‘#I©äج'Ç…ÀŽíÙuDj>õ(‹"2q‰âPDuÛŽS «„ˆœ, …|~óO}^7Œ t&c´··<¸¢”8޳‹céR©èóù(bS„x=.·K*rÇ™¶Iñz\ÅBŽçvMXt,žã+Šnâ÷y4U ‡¶eP„èZEàYBIä-S'„ðÓÓÓm[f]4ÌsŒ®U(Bêë",KÓÔ_ϰ¦* MdI°L¦HsSÕW\6uêÁ§ýjÁ%—\ …¡@wWǶmÛ~ÿûßvØa¯¾òR$4 þgŒPr†(qA›h%2c¹ëáðÕWÞ3cÿ–k®š³Ïpb;$%_¯%¯½‘!”õÚÇ›OŸµQ*.Ò{'ˆAÎÍ×ßtǪ;®ŸcgIShïõ;£†›CD7òâ¨Bš„Ú¤¿¶â"Dà…|¾|×o~óÐC¸]!ŽÀ³·lèªÛ%56ÔQ„¼üÒ ‡<7ű´¦i<Ç8¶ISÇÒŸ¬ù¨³£i÷Î:ëœc9jæá‡V”RÀïU+åP(Ћ½ûÎÛwýæ–¡TÛôyÝ„b!'I޼(p<ÇüåýwQ²…tC6›]´è¬ƒžzÂÜã5Mˤ“²$Ù–a[&Cs4åДCÛ±MËÔyŽË¤“^¯×¶,Ÿ×}â¼¹Öÿ0uêTš¡5Uá8nØÐ!¯¿öÊÊ•+/8ÿÜRIÁÁŸ>ýÓO;uèС7ߴĶ Ž¥9ŽûîÛ¯eIhnjÈfR‰x *‘eiÇ65ÝD–wýúõ–i45ÖSÄfhBˆcÇÒØ'ÍM ï½»úᇞâ U­ø¦L™rùå—Çò¸eEQdIà9fÖÌ™W^yù9çœ3rÄ>7.¹þÖ[o]rà „ŽcŽ9昫¯¾ºÏºÝn–¡LÃxôwË·oß>cút†¡X–=à€~ÿäãMõ¦ihªŠ MLÓ°('ô¿ùÆkøÃœr’iÚ4Ml›H’pÔQG-Z´¨­µ9NrGSŽ$òåRÁëñ”Šy–e%‘džŽ]¹â÷‹-Z¾l®p×]w>²üá³Ï>wÂøý^ýõöövCWmË*ó>ŸÏ4™\6MòøãnÙ²åÐÓ4Í`YzÖ¬YË—=ÔP¥ˆmšæÁï»÷žË.»ì¶[o•$¡RÑN>yþyççØ¦í8,C—ŠyQàÛ4t[EÃ0)ŠbJ×*ıžµLeY•"„Ñ$„ÊbÈÚptßïÖ}n3£š"ÙŸ~j8 ®˜×-¹åž[nèéØ@(Чd[gMÆÒ8ýów?X³fÍ-·Ü‚)B`ñÂ…¸:%|¨`0ˆyÇŽõõõÈÌÁ§s»Ý(Àxï½÷6oÞ|ÖYg!`)¹Jį2‘{@ ·¯¯íß2™ ºŽ9 ‡Uhpˆ~" Gã°Ã{ðÁ'L˜ÐÑÑ–×àÁƒ‘v­ú€\àf‚Ì‚!…àU#I€T3ظe_‰„eY@7‹”$Z£c ’Uö®™« ºÂ"ÒÏ®¿: À >9`_õõõ7Þxã’%Kà"¥Óéöþý×­]ûÀüñ,—+„žguÝ\¹ò©N8躀“éóùzzz,Ëjïßÿý÷Þ{á…~x9!Äí–-˪T´§Ÿ^qøá‡#F§ŒÉ“§èºV(V¯^ýÎ;ïÜrË-Hªý½‚ðã?Nž<Ù¶m¸VdžµdÉõ£F:äC¯¡Y„<›ãMË£š¼f‘¾ÔŠK.7:º›x‰VÖ¶Bt†¨,­±èfG&>üì !CM÷tuæ xx M¢Kv±)âP?ü5tàÙõë×Ϙ1CQðvÁ* ~fêꫯ¾ð ác{ @D6áÑG1cxö?{¿@(ãÆ—.]:þü=}~ëÖ­cÇŽSUEÓ´Gy$•J]yå•Õ,ÀßK2™°×^;¶o¿á†þô§?1 £ªº$ ‡~øœ9sN˜7ïúë®1bÄÁ ÏãhMÓDY&oè¼ÏÇräÓ5äÑ寿õö‘»c["õîsÏÿÕ‘G×µ6+ÞÖ1väâÖRtIDATÞc&¾ú®k¹ù3ÿü›»Ï5ÙöúéûoÙ|ÿ]oþØy‘ÔðC²ÏŒŠ£Ëz/ZØ`ê /¼ð«_öÙgŸ2ÄÙmJ3âà|𪫮þøã&L˜6SµÏÙ_þò—¹sçÒ4M"hg¡­\ùT{{ûøñã+•J6›]¹råÔ©SQ¼¿×^{9Žr;ü- ê) ï¾ûî¼yóE‘WU²4Õxàˆ#Ž0My¸j¾ :kzÉ’%·ÜrKgg'Ȩà6«ªúÙgŸ½ûî»wÞy'¢[œSäk‘ÞÍïÐŒ©q$³vìØ …<H  Ò ?8PâÕ«WW*•c=vOSê!8ÙÕì‚qÃ0Z[[{zz€yd³YÇ#ËrOOOh‹ÝÓÓƒ0ý§Ÿ~:æ˜cî¼óÎý÷ßß4ͯ¾úª¾¾¾µµ5 V“¦€VGM†ÁpÔ®ñËÕ쟉DÂ¶í¦¦¦x<®/¬zVàt ¸6) 0]«‰"æQ£FÝ~ûíÓ¦MëííEÇ1´òT‰˜µ­­mçÎh3‰çè|=ô~©ïUVšmÛmmmK–,¹úê«Y–]ïõOØ´5¾ß˜P©ðOŒe÷Îõ„¢ÚeiŒÅÚ*«y(î´ÓN»ûDµ,ˆ'¡¡?ãÁ¡àÓÝ@Õƒ9í´Óî¸ãŽÆÆFŽãvî܉ÙFU[…±,躋Ýg7GvõbŦG-‡¢(x‘` ” eàÀÁO>ùøÔ©SQßI“˜ ú(ÒãÐø0ê‘H$‹¡s¹K08 ï¦:Ömá ÍÛŽ;àÀZ£›Z]]x»gÀ…ýg×âƒã8õõõ½½½øìKìц††Ý¥×çëìè€u×u  ?û€Ë(i*ÿD²‡³d{zzÚû÷/äóØÓÕv¸Ùêlô=ÍÄøhŒµÃ”<ì´ …öe¡³nÅöŠ,ÑËŠ‹"‚[¶»:i‘#šJxžP6¡¡¡iBBÑ„"„vÇ)•KEIn—¦i¦eyÂ!U)Wm¤C²ëç\. …ph=/…|¾ÚSý'e—+JQ»&èº\.ŽçSÉ$f‹V‡þìýb]uNx:nhh€ãõ³Ÿ‡ò­ö«ß÷Tr·e ‚ ‚Áî®.TåƒË]YÝ®ÕgX:ô]©dÊ# uŽÁ»Ýä›oˆªš'¹|¬©ŸÀ@)—WýôŠÑ£GÜx½^&ªé ¤QðóîvóÎà1 ú: ¨dË0;Œ¾b±ˆë£:[“a‰ª#8dY†ñeƒ¢(à]ö•8Ž“J¥+ŠD"`¬¡96ö:C˲6lØ€6Uõ„7Šc5[ZZ ôõ€¿ŽgZ6R†Š¢¤ÓéjK-$¢°á0ÊîgןJ¥°ÂmÛ¶¡= ®ð÷Dg¼Ä|.½ŽDÐ\_Tþ çz-VûÔg2Ü ö4X‚mËår}}}&†O¥RUOH ht²§}5QßÐê6â ôxªÎ÷H§R ×X–%•ˆ¨֒˶œ(‘T´µÔÒÐÝØÔv†‚¡`g Øé v¹Ã]®`Öˆeq4ë‘YL»$Ñç¡d¡¢ULšX4±hbÒÄ¢Æ[Úijj²mu½¥R©X(€ô‘Éd8žÇø½D<Žœ=K©TêîêÂÑ ÚÓ°IBH"‘Å  0d;xÚH¨#ÙÓçá™a@˜(н==èYçJ1À0-ʱÓ4ŽöDšUT­‡â‹ñTaÐP2p˜ÕÜ–ÛЧ}¯¢jnò…ºµ².{ó¿ÅvâJÁÈå; LñzÎ6œd6CKñ²²U¤ƒ¶cZôÈ«U;ìà–‘S¯¦oAÜ…Ç\*•RÉ$ذ%pg1Ý%ü(Ò1 (|GLFL&àÍGŠÓŠ2DœèR©Ô‹á¤“]]Éhš°×^ÈRï뫦¥ö9C Vç ‚0kÖ¬Õ«Wƒ¾·>kõ CW466¢’}Áü~?p8´ïG0„ý6xðà@ N§·oß>eÊ$g‚öˆ`‰aœ€o麇P¡?bÕöâÂ\UD/xV™L†ei*¢Ñ(4C<Ã1x°…ˆO0B+‘H ÷:8ä¸; Ò@¦m•àgÀY·„ÿ¯r—ðuQª‹_ƒÁÎÎNô2D˜”L&QcSm$Žô(šÇÀ(ÔÎáÅUl¡§Â¾ÄÀL>E Á ¸¸~pW ö³‚‰<ÅB+´ ÙÅ:F `û˜ÈÊ*ÄÎÎ!n71)R&VB#YÇ,‹lEà5Ž7Yž¢y–p¢Í 6W¶tvl–VL=™Ï¤ËƒØåX1é¿Â°°š0–0Ø`YW©ƒ»KÅ">„Ãa”'Áa—$) †Âax~Õ–I?+MÍÍ–e¡Å9x@ÕèjO'.‘H€\· Sy÷ôy >Ÿ/—Ëá[¹\®x<X L$Ãh«quÅW)J´ãw ažs³4çóºmËp‰t}ÄËP†®iǤlC’$Ž'4«9ŽUmÐ ¥+±Yv;]Ý}>?#»(‡*G¢!š²é²ÏプŒ  …,Ëêíímni©Ž-Ã&ÇCF @T) P=ìétÚÙÕ„ˆA•×u«êZÄ@ˆ¢à¿ÂcF‚$I–«Õ§wì܉]‡CT-Ñ&ÿÿ­[p¦Pû¥Ìó|6›2e ¼d2 ¿ÛFÒ+0i’$á»& ”`" BŒ±~ýúP(tóÍ7sÌ1ÈËü¬ôõõA="›‹ÒdxÕÁ`n:¨=€vññˆ&åóyEQðs©TÅŽLt2XÐQðéáâØâ…b¼%”<øVÕªMÛ¶ªEÆÕº„à<â­A½À‡@G €sp¦óù<¨én·;‹qãñxªã­p¬°Èr¹ ¿ÏUCh*‡%íollÄÀ"ü¬Gò·Ž,ùg¢ÈnVÓEñæ›o Œ›A—àE°öÀ+P­_í‰L[Ué÷ööþñV iZ4­Ö2Âý©6ÁÂ/¡ª€»â•€µï÷û«[ñxu™pdªc\"‘‡O?ý”<ø§­­­8‡@äjáýUy¶mwvv"‚›…G†5cP…j$¸è‹V–åD"{Œ8† zÞ(€_¸Àù|þg×Ï0L:ÆÔ<ÖØýíîþšÑ¤ ÐD$ÅÃ…BÛ·mÃ$ xµèˆø7‚;ÇqÁP(™HàUbŠ\ý~ÿæŸ~4x°R.#ŸšËfÑ#÷g·‚Hj× "´Gv'—ËnmmÅÐMI’„z¢—l“ŽÅqŒJ(ÓqhI L½Ä8NÉY4oƦi›èa?€AÜ<íf‡ìaè!œV€aöðü'ãµáëÀ1* ±XlÀ^{ýƒ±Ãd"±;0EQPߪ^þöGŠ¥jƒ÷Ôt‚²,àJL Cè“ Ï øƒÁ /Ç–Y–ØŒ¤kå’E± ƒ˜”!‰"KѶAr¥ ESPEë©LŒV‹ºNdW¿l)eê=oXQärŽmnªÏe*<ï%Ž˜ŽçE‘ úš²É>`eÀç»»»,ËÚ¾m[ss3Œe©¶n@i>™L$p"€TE"‘|>Žä¸YØ6äeN€+[…@ñ‚@+E èúx_šæà:€.v™P,1‰ýo,%~€ ŽëCE‚pä‘G¢è¹Ú¦("Ê‘ÁkÊ‚üTÞ‡©…BÛ·o¯–>Û¶½×^{)вjÕ*p\©¿kOZǃ¤@5Ûû„\ nª‰¦iÌ´º&„Àl8»š£q‡f:}ôP @PX*æþâîªsÝ©ÝzV9É0ÞP× ý⥠ ˜|ýj6*òÿkï»Ã¬ª®·×éçö:w à E@Š¢BÀkKDc× FE%öšhb#"FMLŒQÔ( HAPQH‡ésgno§îï—9™(ã÷SIÀdÖ“ÇÀpçÜ}ÎÙ{Õw½«¬Ì¡ÀDÛEuGÖ±,°ñpÖ1r$0Ô% æ$p˜PQBC  øpX ؈ÐÖüÕÁåÿaž%P•û¦PÔ,›‚á)—OV÷®é9À8…BÁ4m^ Y–<^‰1&ìžülò‚ éºËíE£¤YÒU—G p‡nݶ-º¡3ÆQV]»'ñÚ†ÁˆtÃâyQuyc¼ 0ÆJš E,ËJ$RÇÒŒ|¡äñxBáh©T’RRVK¥’¦›¼`š3òEY–EIq{|’¬2Æ’©Œ(Š’¬¢’ “Üés–½›4Uuy$Y †¤x{¢ªª*•Jås…ÝS>xQ–I’4]gÄ»Ü^—Û›ÉdL‹I²jÛv:“s¹½ŠªÆãqA¼^¯ÛãÓ0.WeÙ皦™JïfZ) {\2‡Áv¹\’lär¹L6…6›Ù6ãlÆ1âñŒÇó‚Çë÷x<ÍÍÍ™LŽ$Ž·ã퉊Ê^n·»££c"lÛÎå‹/f²ù@ D_(j¢(ÊŠKQ]ét:_hÃXÊP(NÁƦ–P($+®XyeSSKYYY"™®®®Îf³íÉîZ*#bG¸¯Jš!Š"/HÍ-m±XÌ0ŒB±d˜¶eÙ¼ ÙŒk4ZmÑv¹ÆlUES·tÓl/H6ñ6I6ÇÛ<ÙDŒ'¢TF`Œ¹Ü^èAººò=~AtÃp1Îf\1_”e9_(¹\.A” Ó¶lE‰8ÞåV‚¡ˆ¦i‰dzVUÕ~ýnݺµ¢¢š”ãö,z}Ó45Ýt: 3 }½ÇÏw$R' Q"‘…b®W¯^Ps_–bI¯î]‹V6›q%Íeq ÐJ:y<žòŠ*ÇÓÑÑaÙd:#A’I”%›éÇ+ªÄl1—Íø}~A&¯êfäN´Æ-»TQQ'ø•¶f²yêUémk߬—\~µ&.Æ[[dYµuÙ.¿ËEbÚ(ò~eP*ÝÎqœ$sŒx ”ÉæA¨©í«ëºËíÕ4­PÔxA*–tAxAâxæñúuÃJgr²,ÛŒ ø†a¢,+®ŽD ÃA%Y%"X›iÄ ‚(s¼È¹="ž° gs¯º<<Ïë†aÙd˜6#K7,QRœYÊXŒmÛ‰”ßïÏå ¦iV÷®…êŸÎ?ð6ã ôÇñ¢eY†i«.O&›!ô…Ãn dY–()(^x¼J¡¨ ‚Ø館ª.•J™lÖív+ŠÒÞ‘4 ôq‚Í8A”»Û·%ÍÀ u{|0-6³Ünw™ê.‹Å’¸TIÑ4-Éå %ŒåD™ˆp6ãÉ4Çq6ã`}Aβ,-_äy>Šìv5MĈ…BÁãñ꺞Ëá4ÀH#–Íf5M—eY’dŽ¡P…ÂÀaà£Ñ(/HÙÜî|¬ÛíöúŒxÓb^_€1–/”TU´mV(”xAâ8.›+ÈŠ«-Þä­ÏïÉJ‚(†Á,Æó m†ó‚zGGR2]™÷\rL¢Â±‘«?ZÉ+#ª¢mëÖÕ ÔZ0o½ãÞyÃj·ÇÙ’W ·¥ã–Ëv3‰zdÿ4ƒ[–UYYy×]wMŸ>°¯(§}'$á¶›xF²eËI6mâqŒG&OÏ™ÿ¥ŸÀ üÿoÿebûñD6q àÈñ¨,Žy´û¹0Þ ®HœIL$ˆ3‰3‰l²9"8ƒÈ&¦MÄÙÄiŒ)_Mû‘H²jZ¶Ó:•ÎäJš!JŠi±oñÙoE–%ôtUTö’—i1M7EI± 8 ¢Ö,9Žˆ,àl›ãD·ÛÝÒÒÒ»wo˶µ¢fs"“˜¢(¾árzäß)à1z‰Vâ}½´o%œlÃ:šèúàˆqÿÎîÀHfÄ1‘ÿÿïÏ®†Sø_3–»­`çmãÜsxÀHÌÂpî6ŸŒ³ˆÜÄxâñO1?q6 &qŒ˜{÷¥FL òY_wAû•81X·ÊËËÛÚÚêêêêëë÷õÒzäß(+¡™ 2€ÝbeY¶M"Ñ?#KÛ&EQ˜eÙŒF£o¾ùæ ÇŒ­®®–ÈÅÛjÁ*z¢^=Û“»ßp˜ÆÆÆ+VTUU¡ZùÍòßɪ1â,Ž,žX— H`$Ø$ÚÄ1ˆ›8"““ÿ¿×ü_K½þ‹ð|ȵ"¸äLâ FæîÜ,×%uÏD²|ÄdâJÄÉv‘­G$¤‰ ²]Äâ‹Äˆ)d»‰Ïîë;üV‚ÎZàtÀ¸²`Á‚ &`ôwü· :Myžß¶mÛ{ï½W[[»{˜( ŸÕÁè¨O>]-¨£!¹£Mp)q[,höËÏ?Mf:•N3FÐKä“ÌCŠõÝNëý· xg<OYYÙÉ'ŸÜ¯_ßd2 pé¾^Ú·»/YßMèÚi&G£ÎB&‰6I6ßyF¿ÿÀþ’utp=Âw»¤ûõ…/ñÄ"žØîÄ’ä*g™N ­©ãÉ ’­_"N#ÛC¶H‘%Nß ðá Äg‰)dyî» ðV9ŸÏ«ª†ÛÛ³fÍB‹Þ¾^Zü´à{‰F£gŸ}6†øîŒ†GmÝÙ1jd(‰#ô† j)˲nY†ÉB¡àO~ò“ —³l»”5ž²‚U,‰šë;^“øo‡¤T*…B¡ÖÖ8H ºkáø®ˆjuî7ö¯ƒ‰xfsèŠ"½Q#Æÿ‹aì víj2D¬ø¿VŠ D<1‰˜LŒ#&ÚÄqœD$³Ò°Œ'"Žx"žã²$ˆGÙX&Ž#åIH"^'2‰Ó‰ˆl²ûnçµA[ê󎎤Ïç;óÌ3Aõµ¯—Ö#ÿFq¸µ%IjooG3O (1¢Î™ÇbW€ Ç/ж^2M»¾¾9¬òÛ¶í †Bœ)5$LÁb¡ØãaívÀD"Ž SüZTc·±ÜÝùÛÆu‚}9ÿ’Wþ¥f¶GÙÕ‚*ÿk:Pj%&“‰)d+Ä$»¸À¸Ý X›øNL,Ï‹íÄYIJ=d»ˆˆ8“ˆqÄYĉ3ˆqD"¶‚áß×wø­„çùÖÖV®ƒÚ¶í¦¦¦¯hÁì‘ÿÁ¬S‡Ú¤fõõõ™ê*t]gŒD½DRÄEŒåóY)$EJ4î¬=à@‹H!¢*?‘MÌC1‘4²ÕÿlìC©¬ˆíë%ìcq#€ÉÓçÑEg5ؾ‚Óü¿Tú|ÍÏG÷õ‚{äß+ øÂ_AHDD£ÂîŸÀ9u>ÎÙ@T3‚›EŒŒoø »›V"‡SÓ9ƒ8¡_ÁcþŸ—ê^•.Ž£ÊJòª+в›lÛ&žçy²¥êëC¡PI×sES±5ŠÄÙd뜥¢­Išú?‡µï‘ï’¸\. ÌÌ wD"àY;+èQºcÞé‘ù_Œ·m¤¸ ¤íF'aä¸dE1K»É‘Ý P·»¿#bŒ#ÍØ³±Äe1) ôX [ÚߜׂÏG¥’¦iÌ$Ñ.QI)‘$)< y½^1ÚÙÖá D%ÛÈ$Î&[âx‰DÛ–l©'²ì‘ýXÀ´‚)›Ìâv»[[[+++A(ˆA 5 ]ôÈÿ¬`ƒeY`¾1ž3ú‚ˆ@æ×ÐÐ,Ë$‰ˆ×Õ ü FŽqÿòCNÚ³ñðÅL&S[[ –vê$)ܯD7‰ ömÆH´lE‘DQ/ˆˆã¸úÍ›ç,ýà³õ›»D–'²t™=¹ûÙ…úp8‹ÅÎ:ë,кöêÕ+?óÌ3©T Lª/º¯—Ü#=²ÏÄAµ [ÓÊb±Ø¥—^JDÎX˜W_}µT*mÚ´ÉãóâÞç]£(ç‡f7±†®¸Ýî“O>Ùãñ`~x³÷õ#ùƒ/g ôQYå÷Ö­{?Wü^m/9ÞúÌ ÈËîK.¿R±Í.ÆR4DÒDÝeõËÙó¡ZZZžyæI’¦N ‚û™3gÆb±“N:©¼¼ÜaçýÒ™í‘ù Ù1 ÒçóÑ–-[/^œL&Ï9çœòòòæææ—_~™ˆN>ù人:ݶ¨Ó.Â"îFÞQ'‚pèNci‰{îͲm{Û¶móçÏ×4í / ÉdŒçûú‘ü‹ìFlݹã{Ãú³"Ç“¦i¤iªªòD‚¢´´´\ðóiÅ¢nÿ3²äÈ’z"ËÙó~}>ßÅ_üÀȲœJ¥<O©T:öØc@kk«Ûí@ÜßÝ#=ò¿)˜þ„™»h–¨©©9餓|ðÁX,†£”J¥®¸â ¿ßŸL&yY¢=KžïœË3êÚ¿¥‰{†›Û¶=pàÀX,öË_þã¾1b_?/Šea…M"‰Äó<Ù¶ÍÙDTÊå’Édeyy*¿gš´ý ­Ô#=òX@’¤X,–H$t]Ç8žÖÖÖÞ½{;clEQ4 ©ûzÉ=Ò#ûLdYÎd2DäóùÀÆ@Dáp8ŸÏ뺎ӔÉd***0™R`"¡sˆuF’Äs¬“P˜ñdã\¿;{Ü@(ŠÇã˜ÿ¥ªj:Þ×Ι΢­ïåI0ž0B«{‹ØdÜ#=²¿ à¯ù|Þív—••aœ¤(Šð[“É$üh€ý@{´¯—Ü#=²Ï³9Ñ%‚IÀ8A²,‹EÌ{‡AÅdbfý3­Ú‰åáT2"‹¾h8Ú³½ðz½˜´‡K¥’Ëå‚ÉÜß‚1Q Žã@ÒA<σXuâ#lÛf݈sÌ1ÁèThŸýJ°6 ¥s&ÍZ–ÅËçó¢(bx)Ú t]ÿº×G“P±XÄ4`¸`D„¶¡b±ˆ‘x𕜧 ˲ð1Ã00~œ®ëÆnäÃTU49á¿DT*•öÖú»\Ö™ßËó<†¤;„윋R‡iš’$åóyEQ0øÿŠáé{ü.®“†;Ý‹¯~7ÆÝ41ÔÚÞ̓lÛ¶ÞJ¢L@؉ÏP×u°:à`vw×mßÝ—bN.‹éÓ‚ `{à:¸ž0¾KÅL&ÃãyïÑùÌoÊ4Íb±¨ª*F c_÷á`; ‚`š& ÁXVŽç@DMlÛ6t(60¦ìb1{ëeu§Oð^,Ë*•JèšÅ¤½¸Oö(‚ ”J%¼MÓ¼^o2™ãNºmÛ™L»Ïs•ñºEÉårßàù pˆÇGÛÆÞº/¨>çüÚ¶ýƒD j–ȸPçÌg¼l<·Û‡@¶íüí>U¦eÛše2ž³x»`kËÐ2D®ÀLè|®ëcrÆ3ÄSÅ`Á}m¿(6#2MALóë÷àýaœw6›Å0ôýð&1•>ŸÏc¾£ËåÂ0qg¸+¶>ÞÓ7X?‚EQ¬ðûý¥R @0χíõzMÓÄ EQTU•$ ;~œ¢(ÉdR’$Y–Ãá0: Ãp¦À@bŒ{$Ù[ëïN$IR«Âô’––̣džVűåÔ©ãó€Éæ³¾GÁv—Ë%¼ ®s<ÜRû 3ÚÚÚŠÎ3‚IdÛ6ÆÁçL™¦ 3Ãq\W¨-n¯O¼bg⼪ªx’Ý]ý%I²Çð䬠ÙÓé´$I.— ¾O剠êdxÀP{ÜÚ^¬-u§Oòù¼ËåbŒ¡ÿMxÿšV©TÂô Ã0c¹\. áA±Éq\UUU Èårº®ƒùEQÐÉæóùoV{C\åóùà†öâÄiÆh‰TU…;R(pS]£ ÿo`DZÝÿ#"ÞI¸r¶ p†¥k¦f“es†n KçEÎ9Ýÿ—3¾Ú‘®òµ%ÞŸÏçs¹\8öNܳ_ üe§ËµP(84Î'\-8Úßìúð‰×DpiÛv6›ÅQ¨!Ä7èüËd2‰Dê F‰ÈñåcØÓØj>Ÿv+™Lî­õw'¥R)›Í*Šâñxü~¿ßïw€ÃFB¥â«¡Â°`ØõL&ãÜÝŲ,§L(I<ô½xHºþ¯>ùøˆ³³Ùl0t»ÝÇ…ÃaxÁØÞxÅŽëîj Rƒ‘ãÍçó]³2¸,î®ç ¯¨»ëc&-8Øð …Â7€ʲìóùDQÔuÏ!&¢Õl6+IR8ƒ²,'“ÉR©W ÎÈÀì½7Q¼;}â<1Ü5‚žÿA+€ÖC\èºDZEáÈvtt€ ÌP<Ï£éŽò7ÛÏPNö ?Ù»GGOÞa×ýÓÕ^:»´ë¯ãü¿vŒðæÓ242 Eàý.—ßå’ž™š¥©Ë‘ì\~!Oùn 6*ìE̹cMÓàwã‹EÇcšæþæ(ŠR,•G>²ªªpíÄ}}à’Ûí. €SBsɲŒè* "›‡Ýoš¦Çã¶EXÏ1“É AWÆM<Ï;ôÔ…$ˆ€XùöëïN|>_:F¿¥¥º5“ÉȲŒõÀ` + xˆ°xŸÏ×;6 îÊÆÞZw×qö§cGñ¿ß_(¼^/Çq[·nE±¬¬Ìù$^!þêuvÅ 9³ñð$©‹ÊÀJ0å@EG##KÑ] £I1£šÎQ:_ëù”J%¤ñs¹œÛí6M³²²–˜1†Ø @Ô“²Ùl©TòûýétQ)ò“{ë}u§OÜn·ãkâ_Ýn÷^üÞîk@TR·mÛn·™Cǃ¸Üãñ¨ªÇ].—išð“ë <دõ½øEä«PÁÉd2P{ë¾R©ˆ†©Ëžìz(¾ É¿À„g2;ÆíîáÈæ¹Á¶m³X*åsø:Eyž×Lù‚ ;ýݲ—_ÛX"æ€c'¸üý (á8Pxáp'MèEQ`íœÏ­ëÃ…ý€ŸŽÌL<¯©©An ÇÛ©Ääóy„e²,K’$†PÚ•$¯×‹h˜ˆ$Iƒ5 #{½^,óÛ¯¿;I&“И>Ÿn2¾®T*9…IÇãv»¢CTÍ+Š"ßW¤aeYöûýmmm¨U81Ä^|ï_8ÿ_vãº:Ñš¦¥Óép8œL&Ãáp(J$¨Ù |Ç[Æ:¿àŒw<1§~çxè_ÖGø/.Îqœ(Š>Ÿå±=^NUU÷ Ì…‹öµž¶œËå ‡Ãº®ãäÂH[–‰D²Ù,¬òÑh´¾¾Þ^±Xćcõí¥;}È *‰D‰õÿÝê°LT"‰D ÐuÝãñÀtÁrSgÈív£ú‰Dòù¼ã»|ƒçcÛ¶¢(>Ÿ/—Ë[¼{+˜†ê(//GŒ-×õâ{4™_p1‰ÈÜåxÜ«Í3âÈ6KºKVQ´ "²^ ÓÒKÍís¾âË ´]W¸OÊ1_K¾vúÔaD*»j?2ì &¾`‹ ,ëèèˆÇã0WôMÍ J HËØ¶-IRGGG©Tª««ã8NQ”L&ƒD™×ëEÁÔ‹~¿ß‰ PBH¥R8]HÜAkX–•ÍfAÉæñxdY†ï¹·ÖßÀüK‚G—L&ЃA—Ë?‘H@çær9¯× ®,Àšc_1Ì4Í––ld™öbX ù¿\ÍQ ‰D¢¦¦/1 íܹVœˆDQÄC†íüê+ ’Ïç¡ìH€ÇFDH0r]¤P(ÀÀû) MMM_1|þŽÂ,”ʾîÃ[æ iÀA)ƒ/~òí³àÍ"Pšl/ž÷îô â³L&ƒÚ¹ªªˆk÷Ö÷v'h7Â7VTTx<Ô=î|>‡»b÷²Ùl:F ¿X,ºÝîo@8 vÆT*À6h÷bÚ*¨µµ.;6<¼“/—ŽÉÿÂc&O6GvçpYžÏlÑf^A-Æi¦`‚fQÉ Ý–I N+è2œrF×Ó´Ÿ›IÈ׎,‹ÅâÿøGô±xâ‰ÈsîEho‰ƒU³,+ŸÏÿùÏ>î¸ãjkk-ËúøãcGu*1PÙ_W_#@t’ï–eÍ;÷¸ãŽkhh˜1cFïÞ½¡ "h%|þ¤“N0`À(Æ`— nô§?ýiâĉÆ ãy~ñâÅŒ±1cÆx½^Q›››«««‘òÝ+ëïN …ÂÃ? …¾WR(:è ‘#GVVVÂŽ.^¼˜ˆÆçr¹4MK$Ñh÷+‚ÏçëN_¬Zµêý÷ß¿îºëœŠïÞ5–ì_¥»Ï8ÿ ƒo½õÖ‹/¾øòË/ã–|ðÁ“O>Y–e€•°‘¨³lÙÝ5‘êûí·cãÇ£&J_¨ù}Á­ÆKGžÖív¯Y³æƒ>¸ñÆ¿"ŒN8Ðx …ŽŽŽÊÊJ¥ü”âñøóÏ?à{a'ÚÚÚ‰'†ÃᎎŽ|>¿zõêüã`Ar|ˆ®ò·—îô RÍ«W¯^µjÕÕW_(|¯ûU_¿ßú±iš‰Dâ‰'ž(//O§ÓxƒÈ:ô°Ã«ªªÊd2<ϯ]»võêÕW]u•SÊý5]äßþö·'N¬¬¬D¾ê«1__K€_{ôÑGGýƒü_縀_S~ALâxÎæ`L™MŒñ6lFºÖ°c{ÓŽ¥LV`vÀí­­©öÕÔÚªêË/Üï#Ëý91ûµßD.—»þú믾úêŸüä'È%‘n‚‹Z*•î¼óÎÍ›7û·víÚO>ù$›ÍB~33$ùäÇLDŠ¢8(tû!o“ËåŸ9ÍLº®§Óé»îºkÛ¶mÀû¬]»vË–-.—+›ÍnذaöìÙ[·neŒí­õw'‰DâW¿úÕ¦M›ÐÇ‚‚â;ï¼ó£ýè±Çkjj wãÆ;v쀵^±bÅìÙ³7nÜˆŽ \w×_²dÉc=+âüp/FþâœÉ{î¹çøã1bÄÓO?=þü—^ziÞ¼yýúõ‹ÇãÙl®7ŠR_ýœ‘ŸÜ´iSKK âÅ?üð‰'ž(•Jx’_h¯‚™Ä•9Ž[¶lÙŒ3¾ý×*N£šðÑG½ñÆ›7oþº7žN§‰H×õ‡zhýúõñxpSAþö·¿|òÉwß}÷®]»€^Ù´iÓm·ÝFDÀ—‹E¬Ö)Ä~{éNŸ¸Ýît:½råʻヌ)èÛŽØ-€‘ËåJ$xJ(1ضíñx/^|Ê)§Ü{ï½h÷2 cÍš5wÞy'B€Å~ƒ8IUÕl6{Ï=÷ttt¤R)Qáºí­ûB^íá‡^ºt©ƒuèjœþVŠqdq<ãþ9–gÄ3š?wÞ/¿:ïõ¿-_´dù¢%o½þúÜ—_]ûæ§SËêìÿ¯õ¥û‰tF–èºì¼ÝÐf³D‰—%—Ò šæ­ð.Zþ–ÛíþÍo~sùå—·µµ´âÀR<OGG‡Ëå²mÛår!¥€N Ð4M×õP(„LK"‘(++sô&rzðš#‘ÈöíÛÃá° ”£0V^^ÞÐЋň(›ÍÂÕu¹\étÚï÷µï Qÿsj{ÀI»\®É“'ê†Ö ,hFÔÑS%Ë2H·"A ömÜ Ào8Ø'žx"J;–esÎ9‡z(¢I|Àéµpj–¨búýþÖÖV¿ß¬ ®`Æ…^˜Ïç …B4]µjÕ´iÓŽ?þx<Õ½²~d– …Çq’$¹Óëv»'Nœxøá‡cÙº®_tÑEÏ<óÌ 7ÜpÄGzè¡<ÏŸwÞyØ'”zÝu×ýãÿ€÷ €H¥Rh@Pøe(Êd2¹\•Ýl6ë÷û‰ÈyÀ-#`Åô<@$5M ©T*666b'ttt ’K§ÓpP¾ì2£Ù`N„ˆa|ôÑG>øàìÙ³GžÇsä‘G^}õÕ·ÜrËï~÷;ìRŸokk2Íçóï|©ªª°%‰t:Ça`¤³Ù,ö.ÒŒÙl× ƒPÀ‚¢³Ø¶íH$‚†+›¦™J¥àà¿Ntøî»ïöéÓ{cn€ƒ……†ÞÇ¡rÚÑÂüÙgŸ¡£µµUQÀ7ð‹µµµÀL‘G¸¶·Ö­ŠÔ"þ‹l¡(ŠÐ²,£¥ogâĉ²,ðÁÐ#†‘Íf#‘® eÝÜÜ  …::: ìEA¢™«šššb±øÎ;ï0Æ1DQ”ŽŽ¨]”™ñ@ˆÈ¶íöövgêV0ljjŒ³­­­ºººP(8d‡À)½ Š ±ÝÉùÉdZZZxž?æ˜c*///Ç-_}õÕóæÍkllŒÇãÑhú 4ÓxJ@Á@Áˆb|¦×ë­­­E€ˆ ìóùòù|}}=0ÏNT–etë€rÄÓÎf³ íííáp¸¹¹XŒl6›Ëåp0c™Lã9ËÊÊššš¢Ñh*• –ÔÞÞ.IR$±m;•J–ÅÁm ƒ³ÀÙ—$iìØ±Dôþûï;͈f ~†³IŠÅ"`ÉPÔ,++kmmEcŸ(Šmmm_WŸ ÛRUÕb±X^^Ç7oÞÜ»wo¸AàõEI[ŠEUUÇL&“@ŒÁðÒ\.‚TôDf2™l6‹2$8e°O€VƒÅÛÁ¶4 ãŒ3ÎÈf³Ÿþ9üÄIh목©AΠP( ±$‹ÅãqMÓ0„ܶmPǵ¶¶:¾>4€Óõèr¹âñxss3N7~îøxƒÈÞ§Ói—ËÕÞÞŽsaÛ6ô!ž6ÊäpR‘ˆ"¢@ N§±a¡ÑÞÝÚÚ*Ër0Äb%N"„u6~ÈÉ&S ´„(“µÆÖæÎOÔ7Ûšas6¯¤ð¼"Oœeè…DcˆW_-u¤TÆ –åW\¦Vr©*Ù6c¶ÍlÛ¶-bû4“tk,Üšî¡î·mÛöé§ŸN˜0AQ”K.¹äÎ;ïtÌO …àªU«-Z†îóùn»í6d´E …B555}ôÑìÙ³ëêêÂápEEÅÕW_ L’$(n]×o¹å¿ßÀà ‘HæÄårýæ7¿yê©§lÛž:u*ŒÁO~ò“-[¶ Å ÎyóæõïßÿÀ2dÈÍ7ß¼qãFI’vî܉yóæ-^¼8‰x<žçž{nÆŒ6l¸üòËûôéã÷û/ºè¢?ü°ªªªT*µ¶¶êº¾råÊÞ½{ƒÁòòògŸ}¶¹¹9‰,]ºj ì›nºiüøñN‘c¿@M?{öìh4zØa‡ÕÔÔ\pÁ ÑÀïz<ž¥K—Î;×¶íW^yåÜsÏ•eyìØ±3fÌØ[ëO&“mX;ÄyX0Î0T3>&Šbyy¹a ,øàƒ<ϬY³à_tÐAùË_A¨­­}ûí·úÓŸ†Ãáþýûû|¾µk×f³Y$œQûüóÏO>ùä)S¦TVVÞ|óÍ»víbŒy½^¸Æ6l¸òÊ+8à€@ ‰Dž~úiè@ ÀÛºuëC=TWWçõz«ªª®¾úê•+W"¥æ”^ºÆ—¥RIÓ4ìdœ|‡.gÛ¶mP@‰D…œêêê?üðCEñ /¬¬¬L&“P1kÖ¬9è ƒ®¿þzèÙb±¸qãÆÊÊÊÏ?ÿ< ¾ûî» ,°,ëÞ{ï=ýôÓE4hÐÌ™3û÷ïŸJ¥6nÜ8a„ÚÚÚ@ FçЊ`0ˆu644œ}öÙC† 1bÄÕW_½lÙ²P(„´¶Ï竨¨hii!¢|IË#FÜu×]ÕÕÕÙlvÇŽW\q…ÏçëÛ·oyyùìÙ³eYniiÑ4­ºº_ø”СxËv'gubâ€âÙ¶m[4eÝ´Ø·o¾ù怀y0`À”)SPéŒF£o¾ùæÐÚÚªiZ8nlláÁ¼õÖ[ÑÅÿuõ‰ƒÎ#¢\.WVVVSS3gΜSO=µªªjذaÑhôOú¶Mkk«išO?ýôŒ3²ÙìôéÓ@0¼ùæ›ÛÚÚt]Ïf³@@ÅO?ýÔãñ„B¡ÊÊÊçž{níÚµuuuù|¾µµ÷‚µ¡ç.r NòÐï÷777‘$Iét:' "0hjjzíµ×***àéöéÓç¼óÎK§Óxï¿ÿ~4]¾|¹¢(ˆ•MӼ馛¦NšN§0ã­·ÞêÛ·ï Aƒ†~饗¦ÓiÜf±X ‡ÃsçÎõù|ƒv»Ýýû÷¿á†‰:za8׬Y3yòäòòrÇ3hР÷ßɨdЫ6þü^½zÍ™3' "½„gõežnjɺ-åtoÎŒ¨ÚTŒÍMþ¾TÌm­À LPAåx•I*/ð¦aäeÝ^õ÷w3->NІ›x-“#úgùy÷8Žqûõ”Žn¥eYPmŒ±òòrxëŸþy6›7nœÏç3f mذ.ö ÏóO>ùäO<±dÉ’¥K—¾ù曳fͺûP‚%{衇æÌ™óÚk¯}üñÇ/¾øâóÏ?ñŃÁ¶¶6¤ÚÀF¿hÑ¢·ß~{Á‚Ï=÷ÜUW]ì%üôÆÆÆûî»ïª«®úð×.]‡ÇŒ³iÓ& .\xþùçÿêW¿š;wîêÕ« tÁ†Q[[ËSUõÿøÇ–-[ÚÛÛÛÚÚÊËË?ÿüóG}ôÒK/ýüóÏ_{í5UU=öØ-[¶ž·|ùòI“&=úè£Ë—/_½zµ$IW^y¥Ûí>à€ššš ÃH&“Û·oüñÇwíÚ…ð)5ÀTa6›Ö åý÷ß¿öÚko¿ýö?üpíÚµ‡vØI'„­ ŸwëÖ­›6m’eyذa3gÎ4MsÖ¬YçŸþÞZ?°Î>(„dYFlgÛv>Ÿ/‹xì‘HNnMMÍŽ;ÜnwCCÚ5kÚÛÛ/¸à‚GyDQ” qÄ’$½óÎ;çwÞ~ô£… .[¶ìöÛo?å”S6n܈4;Zzè¡Ûn»í­·ÞZ´hQ2™=z´¢(Ÿþ9Ò‡vXYYÙ’%KÖ­[7wîÜÛn»mêÔ©èÝt¹\Ï?ÿüÊ•+çÌ™óñÇÏŸ?? NŸ>ý‘èmpbå®"däÐàv»eY…Bƒ áÖ[o}ÿý÷“Éd.—ƒ ¢(J¿~ý¶mÛæv»/ºè"ä ÐÓÐÐÐØØøâ‹/vttøý~EQV­Z…¨TÓ´­[·~øá‡Åbqúôé÷ß¿¦io½õÖ©§žÚÚÚÚÐÐ0a„3ÏP§Eñᇞ6mÚúõë,XP*•&NœˆF4ÉÅãñÞ½{ …Ÿýìg<ò-Z´hòäÉ¥RiË–-cÇŽ-//ÿðÃqj®½öÚY³f!‹A$f¡ô2°î@èâuëÖišVSSƒhÃAó&‰íÛ·_tÑEÓ§O_¹råæÍ›ÿú׿¾øâ‹3fÌÐu½±±qôèÑŒ±E‹!ÄÇ»¸ÿþû=ôPÛ¶[ZZ¾®>ÁAžËå ÃX±bÅi§vøá‡Ï;wåÊ•¯¼òÊ´iÓüñd2‰ø˜ˆZ[[o¾ùæ³Ï>û½÷ÞûôÓOwîÜ9räHÀsòùüÆO8á„§žzjÅŠ‹/Îd2¿ùÍoà&"æC5E˜vgÛ ¦SVVÖÒÒ’N§}>_YYê/Á`0•J¥R)·Û½k×®óÎ;ïñÇÿàƒ¶nÝú׿þõ/ùË‹/¾ØÐÐPYYY[[Ëq\KK ˜Å’Édssó³Ï>{Ì1ÇàÉð<ÿøã?óÌ3Ë–-[µjÕ«¯¾ú /œ}öÙNÇÁœ9sðöÿö·¿­]»öøÃïÿû—^z©X,VTT´¶¶îڵ뤓Nš4iÒ'Ÿ|²~ýúiÓ¦qÆ«W¯v²7nDÊzáÂ…S¦L™3g΄ 2™ 8ƒ†‡"unü_à9¼¨Ì«S k©Y3»n‹Ôž 'h%žLN´ˆ3xÎT9C±5Iˇ$E*éë7ûL’‹º¤›¢iKËñŒÈvÒZ$ðLÜïÈmºJ·hXÃ0lžG¶Pö…,ËÒKÖ«¯¾:uêTdzuëÖ1cÆØ¶ýÚk¯Ý}÷ÝAÀA˜;wîÇúè#äÖ`æ‰Ä•W^yä‘GsÌ18rh«¨¨Èçó½{÷Ö4-‹UWW§Óéûï¿òäÉ'Ÿ|2z¸~ýúW_}uĈŒ1pû~úécÆŒ,óŽ;îX²dIssó AƒêëëŸ{N:éþûï/‹ù|~èС ,8î¸ã~üã6¬¹¹ù©§žzê©§ÆŽ›Ïçkjj¦N:wîÜd2ÙÞÞFvÖ/À휖‡U’¤ÊÊÊW^yåÁœí´ÓF}à<F¥R ¯uÅŠÇ<}úé§7Þxã#<²~ýú`0Èóüßÿþ÷ßþö·`¢à8#mQúU%‹ÕÕÕ555Ýyç—\rÉYg…crÖYg-X°à…^¸ë®»víÚ…TÛ\pÀȲ\^^~ñÅÏ›7/Nëº^QQ†W4ê »KD¡PQãsÏ=wþùç?òÈ#ÈË•J¥¿þõ¯çœsÎA4jÔ("Bí³¢¢Â²,hvUU7n܈ˆ,˺üòËGýÃþÐãñìܹŪT*‰DfΜy '\yå•©TJ–åñãÇ?ûì³\pÁôéÓ«ªªÒéôÍ7ßüÉ'ŸÀxg2à¥>úh$«‘Ý­Od冯Ð'èòB\{ùÆoüä'?¹êª«AH§ÓG}ô«¯¾:yòäI“&ÕÕÕ¡äüÄO¼ûî»#GŽôz½mmm<ðÀQGÅëèè(//¿ÿþûo¹å–óÎ;ÕôLŸ>]Q”úúzì½`0˜Éd\.X*›ššt]_¾|9Òã0Ÿ7ÜpÄ FŽéñxàÊÀïEqöìÙ“&M:÷ÜsQÇ=ðÀg̘ñ³Ÿýìç?ÿy:®¨¨¸ôÒKßxãQ£F1ÆAøüóÏu]Ç_Qº~ûí·W¯^}à¶´´ 0`Ñ¢EãÇ_½zõá‡.ËògŸ}6vìØsÏ=ײ,¿ß_]]ýûßÿþ /üùÏOô¾ûîûÉO~rÚi§á€_}õÕ[·n]´hѰaÃü~¿aýû÷G~îÆo\ºtéСCáK!gŽæiGºöYî¦âbœ‹^³IËulØ^&¸ìx³¨›œ®qEƒƒg¼ÄTµhÙÅ‚FjUMÙ¶µŸø£d‹ –îR²-Ó4L‹ãɈ#ú.·ŽèºÞ–ÎxTV(ær™FŸ+²iÓæ%óß¾yÎu†a wûšk®™5kÖ©§žÚ»wo‡Îûª«® …BõõõH»9òøã_½zõÈ‘#ql.»ì2ÇS__M4bĈqãÆ­ZµªW¯^Á`ðxòÉ'ÛÛÛóù<:ÀkmiiÔ.RUU•ªª­­­¥R) á´·µµmÛ¶-‹ ><™LöéÓgÛ¶mŒ±sÏ=÷©§žÊd2Èš644À0 yKD mRÆçóÁxÀó}óÍ7‘ò*‹}úô±,ëØcýË_þ‚ŠÚ®]»‚Áà+¯¼òì³Ï‚Ç.•Jy½Þ£>ººººªª ±ú#‰ªè‹/–eyÒ¤I~¿ÅÅB¡0zôèûï¿?g2‡úGUÕÆÆÆ]»vÁŒ555Åb±½²~$[œ^ä ÔÒéôƒ>ˆtHÑÎ>ûì믿¾X,t€ÔPss3rPÇÅãñX,ÖÔÔ´xñâ^xÕèÙË/¿|ëÖ­Hƒ#xÀ466âøAuîÚµ ¸ë®»üqx6˜E0dÈÛ¶?ùä“ÚÚZ¤ —-[6xðàX,êÎ3Î8¶pM˜IXM'߈T32ϸM0: 6ìückkëŠ+–/_~ÅW (8sæÌïÿûŠ¢TTTœsÎ9|ðÁ÷¿ÿ}ŸÏ÷›ßüæµ×^5jTCCTùÂ… /¾øâ¶¶6Æzï’É$Bv$µZ[[“Éä¼yóþüç?;ŒÕ†a\tÑE<ϯ[·®¬¬  ’^½z¡¶$Šbmm-mݺµ®®L‡º®777ëºî÷ûAòÒÒÒR*•žþù™3g~þùçÇ•——···8•éT*Ï•ÄÍ(¿ýâ¿Ø­D°²)S¦\wÝuíííÙlê0=I’~úÓŸâRˆÃvîܹqãFqa;xðàŸþô§?þñûöí›ÉdÞ{ï½›nº ð]UU‰ÁB¡“¿iÓ¦ùóç_{íµ{Ô'D„‡ NŒ;w>öØc3fÌ€™°®¶¶™OA$IB6»W¯^ñx¼±±Ñ©àÖ××}.¿üò“N: À½††Ã0V®\éñxõH&“o½õÖï~÷;L¿jkkkhh˜4iÞQ"‘ ¢–––_|ñ—¿üå=÷܃Ì9rÝ ½E‰ëwúâìNö"jÓJY*o–é*ê¶®y¹T(H¶Éò³HäLžñ²UT‹¼P2ì¼Ç][ŸÍÛ…‚À‹–^4ÉΗ Mf†!ð–bÛ6ÙŒl²‰,ÛâöãØ²[cÉq/¶­+Š¢Çq³gÏ<®?ÿùϱXLUUÆØÆ.쎎Žh4JD}ûöä/oÚ´©¢¢bàÀ<ðÀ”)S@r6pà@À,Q½çyþÀ¼ï¾ûÎ=÷Üd2iYÖ;ï¼S__ŸL&‘ÚBfãÆ£F’ežþnº{ÓDl&ýúõ{çw’Édÿþý9Žkll„½ÆìÝ»7vÈ)‚'%I FÈ£‚Ù®¥ h.ìׯßgŸ}à ¡<^QQ±zõêaÆ^À™§qÊ)§z衪ª: †BëE0ª³¾¾u¸ªªªŽŽ0€úþx Ðp’H$†Š3ùí×ï®ð®ù…B! Ý}÷݃ B[m$V¥oß¾;vì‡Ã P…Þ‡ÃkÖ¬aL¹[¶lá8®¦¦FÅ–––ªª*pÓyä‘èÙÇ7" €‹´µµ¹ÝnàAî¼lÙ²ÆÆÆ|>0-b‹ÖÖVZf̘që­·þá¸êª«Ü·oß8UI´0!bvøå6/ä$aža˜wB$‡üÇ7Þ¸mÛ¶‡zèüóÏï½÷ª««;::FŽyûí·O›6mùòåD4dÈsÏ=wáÂ…Çs̪U«Aèß¿?`œD„øµ1&‰ææfY–c± Css³ cǎݵkW,Óu}ëÖ­0ZD„ׇG‹žJ¥ü~?ˆlÚD®ä‡~hFyyy,koo nváÂ…•••±X øaØ*¸¡@àŽ;î;v,–ªëú Aƒxž¶Ýœ¿ƒA”<{õêõ÷¿ÿ=“ÉlذA×õ§Ÿ~šˆ`“,Ë:è ƒ ÃØ¾}{ß¾}‹Åâ³Ï>û·¿ý­ºº:³N¢]¬ S5fÏžíñxºÓ'À%A_;¨áÇcó˜¦ÙÖÖæóùB¡ÐâÅ‹¯¿þzXe’@ìF ª¶oßîõzQ (//&±¼¼Ù&À­A% QKqúôé‡~8 ÷¥Réàƒ¼¶­­-‹9Îz6›íÕ«ŽçŽ;r¹Ü¢E‹W¬Xj·Û­ëz]]¦i .<ñÄ›ššþô§?½ð ’$UTT´µµ ‚PSSV2™„¢5jÔ½÷Þ{íµ×¢ ër¹V®\ÙÚÚºmÛ¶ŽŽŽE‹¡bâ÷û·lÙâ÷û Û ÄïèÑ£Q2ÀØóGyD×õÉ“'/]ºôØc-++s h-õûýÈØ±.lDN?e™¼Ä‹ºî8‘·¢}j:êë]AŸÔ„’Æ™¦$0Þ&Õ4\š Xœ ä ­¦n€iš&1Ž2%ÝfLãÉ´DÕ¶9‹ Ìæ‰ãYßQ€`f ņwùüóÏ>¼¦¦ fAFŽÉqÜܹsq¢`'TUmooeee%B+Û ã7í>¹\À–eÁ§ëׯ_uuõá‡^YYyÀ|ï{ßûýï?aŸϡ;…ã8xµP‚­­­uuuÐVè‹BKvCSS²”Œ10^|)J˜|àèPÇYPsûöíÑhÔçóE""B}+Noٲ娣Ž ‹×ëE°<4oÀŽÇãÔÙ¼¬ (j‚l¨¥¥¥¦¦•N” $IÄq¯¬i^ð"©G)Åårõë×oРAC‡D"¢(F£ÑÏ>û,  …ÖÖVD® ñ:z ÉdPkjjr¹ð‡(ÄD s@ÏóápœˆP^òù|Æ ûÁ~P[[;tèPl€ƒ:XªÓO?ýµ×^{ê©§LÓ¼âŠ+&Nœ8mÚ4D<Ü—ÄÙÏøWxp¶’Éä¦M›ÚÛÛÁ Ï£¬¬lذa=ö˜(Š/¿ü2·rH.—ûÇ?þ‘H$.¾øâD"ú0;§vbšb±ˆ7ˆ6„™L¦ªªª¡¡æY×õL&çue»ˆÎÞ AãÒÖÖæÌÜèy3X>¨lT¼:::€½däÄf³Y$Àq¾ùGá °¯Þ½{÷ïß¿X,¦ÓéþýûcKt™äv»7nÜXUUõ /ìܹóÈ#<á„~÷»ßájNÓE]4gÎÓ4׬Y£(ʸsçNôY}]}R( Çaê@Y¤w{{»×ëì(™LÅŠ99Åb1 ¢ÅÃïXmhh‚íÉ-òaápØãñìØ±Éa°R'oEEEEE…Ûí®««2d §À!Y‡µªªªµµuݺutÐ=÷ܳ|ùò£>ú²Ë.»óÎ;ñaïý~ÿ”)S>ûì3"úôÓO Ã;vl&“V!œK@ˆq4cüñàÁƒûÛß6773æøã¿õÖ[בʽO„f*ôq= ÏÂ… ¯¸âŠ ¼úê«ÅbZwE Ö¤/î0Æ( 2ŸšXNá2 yûW·ÚšTf’ 0^Õ9¯Áy-^68²/rïŠÆR¶zðc³xI4˜){“˜MŒ8[äIæ‰xžöwº;±ëò¸Î$5XÄ™L¦w¯ª•Ë–fÒék¯½öÐ!›¦‰Rìâ /¼pÖYgùýþšš"Ú¾}û¤I“œ9¢(666žuÖY8ÿžœAE`Ô\¿~ý%—\ [ZZ¼^o$?~<¾:£ù8TÑa™¨sÒ/`Ó]Ïʆaø|>'Ï€ûr˜ÌÐùçô69 m@À‘¦‹Åb]Y0,‹èŸpÎÁ믿þè£âÛ± "‚Dz=Øô`„)++Ã>ðÀQžñûýhÏf³8„ßÉ©npo­p'tª ¬DŒ…uð2–eÁ9@’mšpÿ»#ÊŸ­Óo‡3F.¯[·î„N¾çо®5Zä …ÂØ±cGP†Ó\µ¨òòòÊÊÊüà×]wÝÊ•+Ï:묱cÇNš4 ÝGNöµ+/ ˆ¡ñEQN?ýôûî»ïä“OF… íUUU¨nBíªªZYYIDÍÍÍK—.1bDee%vQ}}ý½÷Þû‡?üÁiêÖ0N¼2ÄL}úôAãc N^÷»ï¾ûýï]ƒ]gV Ã>+v²“-G§#¬&¼(ôuÄãñ¾}ûâ½£m€ˆ<ð@§1ôŸÅ'"ìXô­âùtm=rècð§žzêUW]uÍ5×`\+B* þ¼^ïòåËHÓ4ûôée„ÈÉapP$ Ý‰F£àÞ”$©OŸ>†a¼ûî»ÐD±X,‘H¼öÚk¦¢ã yZØ9ÖÉÓ¿×ÿeB8'• Ÿ@MgÒˆ¬à{‘¶B3XÔ±[€X²d ŒB"`žQ9ñŠ$IMMM Á»:e³ÙÿøÇ¯¼ò œwD™›7o>|øÖ­[Ãáð?þñaÆmÞ¼ö•ˆ9äÆX<ÇãQK{bq¸¹©³' ]uÕU7ÝtS<GU ¬MMM0]¸GT”ï¿ÿþ?üð¥—^4hŽ>úè—^z‰ˆ ¢ §fÉó<°Ð }H&“£Fâ8nΜ9±X GCÓ´W_}õw¿ûÂe8À꺎ÈaÜ ZN2 „D°Ê±XìÈ#œ7oZè2™Lyyù²eËF<* (€Ú"F’¤ÖÖÖP(„¢&ˆo¯ ÓéœC==—èBAïЮ]»[¶mûàƒVå׿þõÂ… Ñ9F1ý—õ‰ð•ú„çùöövÔ¤u]ïß¿ÿñÇÿúë¯Ã ÃòÞ~ûmA°xl{ô9ènÇ;)‹C‡%¢O?ýÔ~·¶¶666Âã„‹p;’ÿØØð¿‚Y ܸÍööv"7nJÝ †þä“O°…`«DQ<è ƒòùü¯ýëW_}u̘1À ¸ÝîT*Å{ê©§P݄ǙJ¥^yå•aÆ¢¡iÚ¡‡êtT3Æ>ù䨗˅f¶wÞy'‰ Bïr¹ž~úid¼Ò1”ð=öØcŽ9fúôéeee…B9 Tú–‡|¦Q6˜`Ø‚MLuY4^>?8,ãö(½z)U)^lE»w•VWÝr{† ˆê×·$ ‰\¶dZ$˦À™´»³’g$Ø$ØÄ‘mï×åW’d³YŒ‘ŠÇã/¾øâ7Þò@Å;ɲeË0ÇOù•W^A† zè¡b±x衇ô …×^{ õ€­[·ÞrË-<Ïyä‘¢(Ö××O™2eÖ¬YÏ?ÿ|kkk:Þºuë/ùËN8Ü8¥8íHe³Ù>}ú` yYYÙ€~ö³ŸÝwß}Ï>û,`ëÖ­[»v-ŠèÅ„:‡p8ËØmõà´z½Þ»îºëÎ;ïüä“O‚Á ¢(/½ôÒûï¿`Îï÷£ñ Ë@÷(xÖ¯_¿víÚU«V-Y²dùòå›6múë_ÿúñÇÇãqPqÞ}÷Ý3f̘7o^©TJ¥R6lX¿~="H‡$ÌÝ …BD$ÂÞZ?9LÊ]ûTA)£d‚sŽTª3€Ù4Ôûý~¸;wîL¥RÏ<óÌC=´páBü|ÕªU³fͺá†P¢Fzq ÚéºRpè“O>‰µ555Ý~ûíGuÔÀ·lÙÒ¯_?žç_xá *t]ë­·¢Ñh¿~ýúõë—J¥¨-$ÀR ªiÚ™gž©ªêwÞùî»ï½ÒÒÒ²sçÎ믿þˆ#Žøá8¨Ë媫«{úé§‹Åbeee 0 cÒ¤IúÓŸÆvD¨;1Y>ŸGz{{ûO<1cÆŒùóçƒ1cÅŠ>øàÕW_J¥ðîE‹Å@ €öJ´” È‡ †:¨?`Æ (§L™òòË/Ï™3ÙûùóçÏž=ûüóÏ>|¸Ãþƒùáð~íGW%XsW†Š\.‡”u©T ‡ÃD´jÕ*=…BaΜ9’”••UTTÄãq˜êóÎ;oÑ¢Ep@ß¾}Ñü‡cûuõ <œkt=ž|òÉo¾ùæ¼yóü\±bÅ¢E‹Î?ÿ|0"µCDN‰¾¸iˆ¨½½}æÌ™Ó¦M[½z5 –+V¬˜?>¶G]]]:…Bˆ³ …JK(²Â Û£À×AIcg/^ÜÑÑÑØØhÆK/½ôðäa¨‰¢8uêÔW^yå°Ã«««ÃÎ¥Óé_|ŠbûöíW_}õ‰'ž8pàÀ¶¶¶aÆq÷Î;ï`¨ªúÚk¯=òÈ#à$AŠè©§žzþùçÿö·¿áU.X°`æÌ™çwZ¥‰ŸÏ—J¥n¼ñF<Dí4.øË‡÷ëÕÉ­ÙŠÁ$›7mÎR]uÇ‘wñ\‡ß8ø`ï÷j Ö+BCUdÈÄ#C9k™– HŠJ§&㈈8b<1t’0ŽöscÙ-À§X,zUU•Ä|!»cÇŽB©0nܸD"á±%ÐŽd2™T*UQQqóÍ7ßsÏ=çw^ÿþý …ÂÿøÇ>úhôèÑ€°7nΜ9ååå(×›¦ùØcmݺõØcÅ):âˆ#Þxã äÓ£Ñhyyù#<2uêTÔüÂáð‰'žxî¹ç"{‰n3‡™ ˆðµk×"ÇÕÞÞ.Ëòé§Ÿîóùnºé¦Ûn»Í4ÍQ£Fýâ¿X¸p![6Ö9ªm]×1â%" g×4íŒ3ÎØ±cÇ9眃†î .¸àÑG3f ’½kÖ¬9âˆ#¡Ÿ u‘û￟ˆ þàVƒY㦛nš2eŠ “'ON§ÓS§NÅö3f̹çž;gÎ$Z‘ŠÅbð—ëêê’É䨱co¾ùæ‹.ºh¯¬ß áò³Î‰f ,V¢¥¥E’¤ªªªT*…j>ƒ.1çî DD&L¸ï¾ûÆ?nܸ;î¸ãÒK/Ïg.—»óÎ;ûôéƒ ¬8T$ª×ØoHX¡ÍqÆŒ—^zé½÷Þ‹ôògœñÓŸþ^‚mÛóæÍ;öØc_zé%‡”øá‡6lXCCC×Éï_8íN2á8.•J•••¡nòäÉÈ÷"†8ûì³§NŠùÛMMMUUU±X ©H]×{õêÕØØF9Ž;äCòùúèŸÿüçgœqÆQGõä“O^vÙe°XDtñÅŸþù‘H¤¥¥1èµ÷z½étÚIÃÈue¾ÅúáŒVTTŠg/¼ð”)S{ì1ìØë®»îå—_>óÌ3ûôé³`Á‚ìØ±£wïÞ?üágÍšuË-·à™CûÃMq*÷;vì(vëäÿ¿¬OÎ<óÌ¡C‡b· âðƒüà‘G¹üò˱ÎH$r 'L™2ž„ÛínnnFãQ X/&Nœxã7þøÇ?FpöÙgßsÏ=Gu”ªª[¶lAÉ-†Ñh´­­-‘H ®LÃõ$bb˲‰„ªª³gÏ>óÌ3ÿûßûýþL&óØc½üòËgœqF]]ݼyó „|ÏðáËÅâYgå ¸QZr¹\¿úÕ¯>ÿüóñãÇs§iÚQGuã7–——ó<ßÒÒòúë¯ÿèG?š9s&܇~ø/ùËYg5`À€9sæŒ5jôèÑ·ÜrËÅ_ŒÎóü<0tèPä`óSUµªªêç?ÿù¥—^:þüªª*@½r¹\¯^½è_Nç@y§i¶ÅÛ$ð̶K|A?eÂŦ6mÞøñGK¶lÑD¾rðƒF\Õ·/ „2e Eƒ—Ùe™Œ,SÓ&b 1%ψ8Ûâcò~ ñálÖD+F}üñJÆTSí7Ý~ë-¿ytgC«d Ù6—[QåH>m0•wÇÜf²€b2›[·n­­­ÅICŠàž{î9òÈ#A¼éñx>ø`g»«ªÚ¯_¿ßÿþ÷'Nܶm[CCƒªª#FŒ ¢B¡€y~Î a(5Àö èQö »ví …BÉd2‹ŒÑ¤ÞÚÚZVV†za2™ŒF£Ð¢(îÚµkàÀ("Â#"dc0ä`SSSEEœ-bYÖ{ï½×§OŸ®\¹òœsÎY²dIUUR70oPIØ‹@I˜l6‹uš¦…B!€>PRÂÞ…S `‘œr¨ÅœÊ?ÆVCé|ûõðÁ@çE'ÕS˲š››C¡r˶mÃÎ¥Ói€YpÚ}ES³Ã³…}F‘“ŒÅb[¶lÁ¯€–S/à#;“ÎÈ2dj«@'‚  ªªª¥¥h^ôƒ‡Ãa4;"E ö[EEÅm·Ývûí·CeÜu×]·Ýv[}}=^ÊÉñ[ß¾}ëëëq$Âá0p)¼5¤ÜÊ#‘…çÛæ4‚áõ`êõ…µ9ø®Âòòò>ú¨oß¾À<#jiiAk?^ß»Ýn I;wî„Ýî4ÿMö€$ÁŠ·FD™L&Š¢ˆO:° ”EÛÚÚ***À1‰¸¨1AçPœ#í¹qãÆSO=uÁ‚§²²µ‰p8ì0ù!†FŽ‘åõ RĘ.ŽŸJ¥ðë¨Ü`G¡f‰7«@DèCmhh0Msøðá‰D‚uáª"€-`=„[ Zy|S75Kùä·¿ýígœ¤W4uì`'³ðôý6$‚æB¡ê|Ø?ŽS©OÑ‹¼+°HàLJÃëׯ¯¬¬lnnÆsC¦jx®/ c,Ë[ºÄ1‘çG&l^,ŠâÎlÖŒ†ÌòXƒi¶j¶Ž©ÞH}0x߈×ðz'göx<@ÃÂVAíº\.Ø!x6¸;ø7H–àîP° ™LžwÞy˜`õÃþ°+`Äχ¶"d¿¡OÐLµG}âLòBná@žhéX k@Ý,°ÜNf›D£Ñ\.wá…VUUwÞy@}ôÑ¿ûÝïF-Ër}}=°÷@Ã"ë‹a8g8_–²²2'sâØ9äKˆãü0É%—¨ª:mÚ4P@††¤[—ÅÃøBh6ìè. ¶Ã®@i–çyl]84˜Ðâñx@6ID¨LA¥ÛãoÓétŸ>}€ÿÀ?!¯«þ—-%id«¢ÄÛ¼mضiÛœÄxÞä9LoYªÛÃÙB®dqÄ|aÛh7lKd¯ì V2Þ¡ŠB$í°2GŒ1Žˆq“IÖ~LßCDSiIÀ{äòX¨:Ö‹ZÓw>qË•¿º±µ¾9Xàeƒå%3#[‰dùˆ¹|”øößÚ#=òo§3xèÐi×]7mÚ4P¼Þ|óÍ?þ8¢x6èÐÝ×Kî‘ÙgâdìŽífwêšk®ÁÙAqa¯|/X#† 2uêÔ‡~¸X,Â-ØßÎc³×ßãÎícÇV¥"i$Èò–¥R\5O¦!e5Áä|Y­]ÔEÉd:Ç›³y™‘›8wÑ.îëõ÷Ht+/²ËåZ:Іà#5¬óª-«®P/Cð‰ÞX±XlNjOH/•´E×¾^rôÈ>“dª$Š>YõئI<„_‰Ü:ïÍ[JVÓ%ŸW Vet‘)¡‚½×Ò¤¶a+noZ,) qÑë3M³=—SUϾ~$ÿ"Çñ‚Í ŒD‘mq¤ÈYÒH".à68Iݼäe¶H¼E‚)r&1‘q‚Åx‘”}½þé‘n%H—••y^âT‘Þ–ô‚%I²YbÉxFË›’ j¥œð(ì-7¹Gzä;*2ϹU73Y)W”eÙ¶‰1ÞÒÈ,1âc¯åMK#2¯äx¯|o¾˜÷¹\œ%z¿Q´‰lžçUÑÃÛûW*Vã9âxÑæˆHä‰x#CvV“­‚LnÙL³Ì‚etSd³X‘³,“L›×#¿¯×ß#=Ò­øÆ2¢m‡dž/f}¼]*•D[t3# R›–‡Ã’ΛéKÓPÆÛ×Kî‘Ùg"™¦ÀÛÅbQ0M¯`<ãy> ’‡LÅÒE‰ÓuåR²Q¤|Ú/0«”Û+ß’+“P‚^QË«–ph(p¯÷ÑÈKœ Ø`_’I!X®$ "ÍÈ™\‘löuƒˆÆs¶ÄY‘.šL”ˆÛ¿ú`z¤GºJ(@wÉëy#+ºyãLKÏY%¨š¼^² œÂ Ŝ쒿ÿQöHü„qɶ@œÄ+$ÛÙLF–弑•½b2×.Š¢Ëã’½¢èæ¹öP(dí¥>H^òÙ<¯RNÏl{<®T*U´òLØ¿œ×qÄó<‰Hd©œJœÈ«J‘ˆV 9U–üÄ‹¦e 6'š%˶ Û*’®óû7%QüoKºTÌñ\´WUV‘K^O«e2Iä9-‰ižÓý¾úbˆ8Yòû}hqÙ×Kî‘ÙgbK¢& 9ŽÓŠ…’e–û#Yj³­¼KE1eè·Kwù(i,öÖyÑ‹…@$lyƒf0Ðf[Õ[ô¸MIÚß2=âIàmâˆHÔ-òY •˜ê’D"ARCª¯is½[ö1^´É“™Å[¼Áq$}˯ï‘ù÷‰e²€?Rëµ}[}0- EQˆzUÕîØÞ –IbµÄDCg’سŸ{äW˜mZ&g™œ,˪"…C±h4šL$yNö¸–eåsš$º6mÛ D-³Ïß^$QðyC[wî ø#¦AZÉâHx¥;¦¤}%Ù$!¡fé&Fù¼‡U"‰ÓY.õÉ{‹O9ý<“S,ÞV9×(ÇlEJº¥@v_/¿Gz¤{áy>—ËYÉuoÿ½š+§0®É ¥uoÿ}âĉ}#eètäy^†ÑôÙ#=ò¿)h_v&ð<ßÞÔòþ›o„ü¹B±XŒxŸ­ëûú‘ü‹,…Æ6Ôo>v`²…cä]\WuÔÒ¿o¯èÝÒÖQp©‚%ÊR¾Àk¼\HàL¿^Tl=¥ð’XUØ¿ùûzä[ÀÈó|2™ì]Q‘ÌåÀš¦Bs<îv»}O2¶mÌÔûú®Gzä?)˜ÈFû¨Ë`yŒâ8NŶxSr÷VL¼º®ÇÊÊ Ó_ò=ûú‘ü‹ì(5Œi˯3~h>)6º"»Š"ñå!‹¼Hª=Õ’iEIBçÉËOšiËÈ(|Ò%@Dì¿"ŠrÞà,Ë,1)Ñš„-ti £B\¼ÍŠ™|¾Àó|“–ļå}½äé‘}&0–Ò€ÔIƒÅqœ¨çÀFIÄ«¢hç½å\*ŠÂóbÉ4[›;Àilš&Ë]gMïò=Þ¢\ÎÔ36ÏD¹Ø14ê£Æ¶`³‡‚¾2»DbD¦‹ÈE/“!’i‘Ì“[ °}ìçbT,’ÇC–Eî‘e‘ "²m2M wÒ­Ò~v8{¤Gþ£bÛôÕÁœKÙ}F#]'ß^bØ)Èå"¯›ˆˆ¹ößc˜+Q:ó©éÖÇTLSÚ-'_HùzIJÄ›íÞ^Õ¶½9Y2ÃghnÃÌË|R#…}½úé‘îLloo½>†Z€ÙÌþ–eafêþUï‘ùO ö?xçñü%LÓ4‘up7HÕ~{qjŸ ƒµm£ö·ó¸Íê²Å[£nâ,1“"£¨•ˆ|A"‹H'²ˆ×ù?Öù×é‘ýU ƒxž#ÑKz–d7‘Ù¹{yÚáH×É"rí_È»é‘ÿ¸ð»;Œçh{žÈ&S'Q%['Ž#Ý$‘§½„ï!Ë"Ó&Y$ƈ—É,‘(ñDûWçíä«‚”u Yèÿ5‘8åíx%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/StaffVoicePropsEditor.png0000644000000000000000000000013213135434036021660 xustar0030 mtime=1500919838.109981805 30 atime=1500919914.959981805 30 ctime=1500919913.379981805 denemo-2.2.0/docs/images/StaffVoicePropsEditor.png0000644000175000017500000027005113135434036023536 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRÓ{Fl@¦sBITÛáOàtEXtSoftwaregnome-screenshotï¿> IDATxœìÝwxe×à3[²ÙÝôÞ ¡÷Þ«4E‘¦4|ë‹Ø^±¡~XTÄ‚¨ô.Ò;„J Òû&ÛÛÌ÷ÇÀ°&›Í&$Dñw_\^SŸrf6Éñ™y– 11Ç5uà~&IKIÊÉ)$"±X,‰8޳X­¬Õ*‹%b1Çq,Ë G‡†ð Ë–½ýй¦i2Ø7¬çüæ5u+‘˲ZÞÇ×;""R­V'&$””–zyy…‡‡+\å:Öj±Ã0ÂiÛ‹é>´ÉZ ·m?tøyZ­ÖÒ’b­Vž››{äÈÃÈŠŒŒŒÖ­Û¸¹¹™MF™‹‹D"±=ÓUéÞDm€†Ô¡eä¼É†øˆDÌCs?¬²ÚH•î^ù65`ù ^à?BöÚ¶êgð ŠC‡Ž 2H$ [ŒFãú ›¦O{’a I$’ˆˆ¹Ri±˜µZ\.ïÔ±£¯oyy¹F£æˆÓj4"† °-× Uß뮀 /·¹OŽíÖ.F©pÕé…%åϽ»ŒßuðçO‰è¯;SÎsG†ùþgîü¼ì †è¹·Ÿ±]Õû´m¼.0ÙgmË‹Eë>{ÝßÇë¥V%$g ÛÛ·l¶ô­çŠËTS_ûÔjeíTCõÆg2[ KÊžŽÛ°ç˜Åb½ûÂï²UÕ/kcôZàø.²­š_®Ó½C-Z¶s|@jrbõË–¯\¶üë ?öчïñÉgAAáÜyó¯Æ'TTTÌaž„ˆ4 1ŒX"Õ ‹ÅÅE&‹M&“^¯÷òò2›Ì,ËfdeY­ÖæÍÄ¢1æ д^}zBŸÎ­>\òUÜÙÓ‘¡'N”k²¸ÀöÂò²$.¼W­å„ùQ^v܉$®UV]¯DTí·É®£f=öÀ¸~mRÓ3Ivk׸ˆh×ö­.eÉ\Hg"¦z9ÍýÉ>[½À»1vìX"òöö~úéÙO飔®ÞqŠ;µßK¶—µñz}§:"Çw‘«Ò½z3œ¼÷àïO$ùùúúùûøùùoÜ´¹ú1‡Y¶ük"Ú´y+}ôá{/Æ=?ÿåÒÒ2"Z¾bÕÆJˆÈd63DF“Ñh0˜Í&‘ˆ±X­&“Io0xòŽH«Õ•”–Ú–Ž1O€¦Õ±U$¥$Äi¥¾ñ¥’Äå¿KHdÒª…‘«]»v‘ÍèÓø‘ýŸ{b,Çq啚3—®}óûnÁXå`A•smÙ-‡n˜-ù~Óc‡øzÝÌ+Z¶v{bJÖƒƒ{>>r@p€O^aéú?Ž ¥Uùm²cÿ‰)£û÷ë×֗h‰ˆ<Ý•ýº´Öë ûöí³¸úŒéÓñáa}ý¼‹JU;Ån?xšŸ¤ýÎP›VMDƒzvœ0z`x°¿Þ`\»ýàž£çˆˆa˜Ñƒz<:¼_°¿OqYÅöƒ§v:ãxŽw½O[=Ñò ‡ 8°W—oÖülVñu­øeǤ1ƒü¼=‡Ï\È0Ì#Ãú8hاßmœMªR‹0ۂ񬕃¢ÚDG<3éÁ¨ˆ`‰XŸœ±yï‰ ñÉŽ{ý—u­ÚñšqpåÛÕYkpl#é UpÏLœðxIIqAaQIqIIiiQqqQqqRÒµšŽ2dЄÇãÓÎM›·¦¦¦Å'$Z,"’H$o½ùzÛ¶m$DäîæFDb‘Ø`0èõƒÁ ËJ¥N§S(ä•j«Åb4ÊËÊlKǘ'@ÓÒè J¹ëŠ+Î%¤%¦åœKHQUú»=4÷Cþ½;~ðJ³òðð˜»ðÔKƒ š?>gÒ¬Úv¢ÊÁt;g¨r®-»å#æ÷v‹ò}eÑg=Z¿öò‹¯Í|ä¹w—‘Ì}d¿./<9æü•ÄwÞy‡,ÆççÏJ«òÛÄJ´ÿôåG†õ1¨÷Ö³™$’<4¬T"ÙóÇÞøèÔñÏLµsßÑßÖýüä¤ñó¦>,åL;c¯ §óCmc÷øÏÄ‘—n<ÿÒk&]åäÉ“]IOÊ€v›;yôáSçßXøÆ£cG¿0m¢Èbøó|ªƒ óÍsuWò«³Z¬Œá—Û„¸=ÿæb]AšÜj;ý…g&Œpа¡]š¿ó+IÿÂÜg^™5^ÄÆeQ­Mj!«©¦KÃ÷ÚAQoÍ}"ÈÏûÃO?¿tálË-ÆO˜˜t\=÷Ú–3WP^–d÷Þ{xHOÇÁ±$FJþôž°lµZKKKù,´ °ðï¾_ýx‘HôчïÑí1ÏK—¯ðÛ}}}V,û²GîÄÏ0TQYID.2Ëq‹Yêâ¢Öh´:]ee¥›››Õj1™Ìf³ÅÊþåÕŒy4­O¾]ÿü¤ÑÑQÃútÖ§³Ùlùüû Ï\µ=æÖà•VMD?nÚ#Ñ[åá»ãòæõìÒaÅêŸÍŠ ªÛ;×–ãrÖ®]«ÖX¸×ˆÂBC¨4Íà=vpw"Z³jyqy¥Y²jÃݺòÇWÿm²iÏѱCzŽ9bÓ¾w-®¾#úvfYvçΙ×è݈hÛúŸ+ ìï/}衇ôÞº{ŸÅÕG8Ý U?2¤­^ùUQq¹I¼lÃa‰¾ÂLò‡v#¢õ?¯®4˜×I˜4iâÃôÛµï°Eæ]S Zµ§û¬qCˆèøñãÇ ^»v­ZËš=¢8F4ºÇ [³fMIQ…Y²jã¡Ý»?:¼ÿŸ[e^µ6ɶ—Æ U;(J)wµX,e…¹FyÐù\ËÅÏ×Hô%&÷;Úª2úÍ[:ym—…FÖœ¿ô]ü͈Å €€Û“þØÍ<‰H$½ðüÜC‡Ž”•—ó[|¼½·mÙ̯JˆH!—s±Ä zƒÁ`2SSS/]º4vìX­N§Õi5µ—§‡mÑóhZ)9%/.þÖ_¬îѹý´iÓÜÝÝgOuòìyRø Ç?«[5 öðਰ@w¥œnÓÏÏObÖˆm~˜WùÁn÷ç|­å”––ŠBºØ…ˆ†a¬FW¥{°¿‰üÚÊ$®*#ç •Þr*.i@÷öÝ[Goth ïÉS§‹ŠŠÅÁý¼‰H¥R‰:èX1ùûûKÍßHÛý}½ˆ¨°°ñm-“ʉˆÜ¼ÄDÁ¾DôÝwß KM*‰O„Ýó9˜Él)*S­Û°uËú_¥ŸÐಲ2QHW™XJDµ6¬J߃‚‚\LåœOx­M²­ÅAÐ\•îŠZ»óÈÓýâ‹/X–MË.øiûá+72kzƒ×î{žN^A»ËµÇnàŸåüù ÏÏYH;‰¨¬¼|ùŠ•Â„C"2[,ÇY­,KœÉdæˆòòò”nn>ÞÞf³Å`0”sÇ?”+À˜'ÀßA¶Å='65.uÉ÷_¼/—»RùM'ö ?«ÿ;k\Ÿ÷{‹ÿïÒù³R‰hÓ¦M ÃÕTÓ€UõÕ:”c0mËÉ/.kª7‘Ñìì︖{Ž èÞ~ôˆa¬TADÛ¶n±º¸›Œ¦â2Uh Ÿ——W¶Áà¯Qqq1YŒUzQ\ª ò÷ LÖ˜Édv•–WùûÌœ9³ô/305ýF»“ƒ1 '’Z\|,Rᅩ4 D"ªµaUú^PPÀïu¦IB-‚渨m{íݳ;Æ_Þ¥KçiÓ¦½:mÌäçßa¥J»½&{ïy:yí.;uÕªõþA~Y÷ÛG‹?^ììоÿÀ­0áH$’‘D,æ8Îb±&³ÅÌqܰ¡CÝ=<$‰ª¢²°°(7'ÇÍÍ-((ȶtŒy4­O^™þDZ ñ)Y!ºM ]ºt‰!ÖUé^©Ñy¸)‚‚‚ò¥·~VK$b"ÒW–IƒZOŸ8N(¤¦«ê«wSή£^xrÌÓO?½|ãa’Èæ>ùãZ2 Ê“R³zõêEDIד“““Eí\]ÜŸþðG}ô×à O<òýùçŸ$‘U©}Ç‘óÿ™8rΜ9_­?`dÅ“Fõÿ~Ë"ÚyôÂ3FÌš5ë›§Íœ¨]tø#C{½³ü7ó÷Ú¾v(áÿ­½ÕÚ0¾ïœXöÜ“cˆhÇŽü^gš$Rý²Úã ¨·ž™°iÿ©ôì|º©žFd0èeº|.¤KM½®~Qœ¼‚vï='¯ZM€z«õûQ¨†¯H©“¤¤kï°˜Ÿ:ޱ³[·®o½ý®0á}ôá{"rss#†á*Õeª ©Dâçëëéåå"“åää$%%åääHÅ’fÍšÛV€1O€¦¥Vkg<ÔÏÓsŒT*)¯Pï>pü×VY%J“Výã–}3Ç [½z5Ý~OoñÊß^˜2êÃ?,«Pÿ¾ûQ¾ºŽyÖ¯œû“AõèÈA«?|)·°tËÞã=Ú·pP mÜs|ÑüiD´}ëV¢0š92«ݾŸÓ©†ì5jÔ¨ÂÒŠï~þm÷®]fy å¯µoúãpY~ÖøÑƒW¾û‚ÎhZ»m¿µ8Õ¬ܸû¿ýû^$†IHÉÜ´cWht·ÿ´­ƒæUÙ[kÃN:µhÞäààâ2ÕŠoÖ8pÀ¤ ±jÕÎ4I¨¥úeµ=ÆAQ»Ÿž9¦w«˜‹ÕzåZÊOß­äjîšÝ÷<¼‚{÷ž“WÍAœàï¬mÛ6/Æe娱c«¾< ÐpR.n¨Ì³±,{øðÑJü+ÁÁ:Õá7â¸a=·:ÜX ¸ï¤\ÀïMh,ã†õlê&Ø!‰ø´“ˆ˜»£Àûß" ÐP$DÔ<ºõ¥K—222t:]S·î …"**ªsçÎLjrb…ÚPVVÖ§O¥²Æ/•¨­Vëããä&'Æ]N=z´L&ã¿ýàî1 c4÷îÝ+!"½^ïââ²lS· îǹ¸¸èt: ¿Ž´ÿh­Äv Á!󀯅Ì2Oh\È< q!ó€µÄ¤k;ÿø#5-a(,4ìчÇvêØAØûÙ—_õï×§wÏžMØB€û2Oø÷úmÃÆoVß©C‡Á˜L¦s.<ÿò+/<÷ì„ññœ8}*22¢Wü–¸+È<à_êúäïÖüðìœÙ³fL·Z­ ÃÌ{ö?/ùlåw«ôë@DD Ã0ø- p—yÀ¿ÔOëÖ…†„L2Y§Ó g?5s߃±gÏ>2ö!a£ð[23+ëБ£*UEXhÈè‘#<<<ˆˆeÙ£ÇO$]¿.b˜N:ôëÛG8±¸¤dïþÅÅÅÁÁÁ£†?àíí}¯:ð÷‚Ìþ ÃÅ‹qO?5Ól6ÛnWÈåÇì3&“‰ßÂqÿ[òTlì»|Þ¼YäÆ-[7lÙ²ò«¥þþoþoÑ•øø>½z†ÍÛ¶OžðøœYOÑõ7^[ø¦¯¯O˘˜í;wý¾aãgŸ,ŽiÑâÞw É!ó€£Â¢"“ÙXå7 Çq•••=–ã8Îl6/_ùÍà?zï]"Rk43g?³æ§ŸŸœ<é̹s+–~ѽkW"únÍ{öî›ýÔLŽã>^òy·®]>ùð‘Hd2›çÍéó¯–¯Z¶ôÞuào™'ü F"rwssæ7 ÇqIׯ}þéÇZ­–ˆÄ"Ñ„Ç]µúûéOøH$ñ§ðï–«*yÀ¿Æ<àßÈÏÏ7 àòÕ«ƒ¨²káÛï´nÝêýwÞæW9Ž8Ž“ÉdÇF™LÆo7šŒDd6›g͘>eÒÄ“§N_¸·nýúm;w}÷õr±XLDóçÍU*·ÊeHĈüñ;þ…DMÝ€&Àq܃#G8t87/ßvûù‹ËÊËûõé]åøð°P"Jº~]Ø’˜tM¡P”••­þáGâ¸aC¿µpÁšoV&$%EF„‘X,jÓºÿÏl6ŸŠW€ŒyÀ¿ÔÔ)“÷<´àÍ·æÏ›Û½k–e/]¹òÅWËC‚ƒ‡vç7#Çq×¼Y³öíÚ~³zÍGï½ëë㓘´}箇Çþ=öíÛ‡Ìþ½D"‘R©ÌËÏOIMcYk³ÈȨæÍµZ­Õjåðòò2 ƒˆÄb±ÌÕõÊ•«eåå‘‘1Ñцã8¾„´ô ©TÒ¦ukw77~>[‘H¤P(®&$”””†…†¶nÕR­Vã!#øº“yŽ1¢©Ð4Äb1?!ÕjrN»†‘H$"‘ÈjµZ,–ê%X,–*ÏÓJ¥R†aX–µ=à_eÿþýxÏþí,‹“i!Çqü—£8_‚Ýãþmð¶ 4.Œy@ãBæ OÛ@ã˜'4.džÐ¸ð´-4. ÉårƒÁ “Éšº1p_1 …‚IMN¬PòòòZ¶l‰äŠÑhLNN ‘QçΉèêÕ«:®©÷ …BÕ¹sg&59ñTì…¦nÜ·nÍm;}úô¦mÜ—Ö®]‹¹m q!󀯅Ì2Oh\È< q!󀯅Ì2Oh\È< q!󀯅Ì2Oh\È< qIîM5ùù¦U«ò´ÖðpÙèÑÞ?î'3u*Ädb¿ú*ïúuÝ’%Qnn"aÙÇçN/¶n-Ù¿_%¬*¢èh×É“ý}}¥ Ö™úzå•ôGõ0À³©pOÝ‹1Ïøxí€WŽ­8ÐsÊ__Éë¯g>ñÄ –½uÀêÕË—çÕZÎ?®\™#—JÛeÛctþY&‘0ü¿’ó—_æöëw%#ÃÐ]«•m×öì)ËÈ06I3šÐ½óü쳜€—}ûÚËå·Ý1c|¦N½qð`ùˆÞDtåŠV«µÖZNF†¡kW·… ë,W!—‹V¬ˆV33 Ç'|öYÎ×_·h˜þÔ…m×»‰Duæ¸Ü‹Ì3-Íб£RH;‰hèP¯=ËË-D´yV–Á``û­h©”¹xQs誴Ôè2nœoT”+=Z‘’b()1ÿö[‘§§DX~ä_¥Rì öfÍ\»tQ^¿®çW·o/íÒÅ­´Ô¼ysÉ«¯†úúJoÜÐïØQZRbnÞÜuòdoo ©ÕÖ]»J}Ôoÿþò3gÔîîâñãýZµ’ Åæç›6l(ÎÏ7EFºN˜àçï/­^~‡JÛ®=«ŽŠr qqP‚ÕÊíÞ]§‰˜Þ½ÝGŽônÀ Ð$êó´mE…ÅÁ¿êÇ·h!?tHµwo¹ÕÊ ׯo=i’?9£ÎÍ5™÷î-7›¹uëŠÆŽM!AKD.¨oÞ4”–š÷î-?q¢BXÖëÙê5Ú²Z¹ìl#ŸOÑûïß\³¦`üøkªL&nß¾òáÃãÿü³L¥²|ûmþ!WsrŒDTZj~íµŒyóRß}7«°Ð´cGéˆñ'NTð…\º¤<øêæÍ%Ö,4èj|¼¶zùÇŽUØví?ÿI9xPå Ž£§žJ~íµŒ‚SZš~öì”Å‹³ëqþVê3æ¹qcÉ¢EYgg×[o…Ï›ReãÛo‡?ùäY³’ýü¤x è9x°g`à­¡¿ÿý/¢¨È¬ÕZü±%}ÿ}Á“O,YÒœˆÌf®oßËûö•·o¯|íµ°âbsF†aíÚVDôúëÂr wút%¿\Yi]¿¾8+Ë8~¨pÀ–-%[·¶éÒÅÍdbß~;sÔ(ïU«ZˆÅLY™e̘„O?ÍY¾üÖúׯëîèã#1Ø)S®ÿïY‡udzñÅôÞ½=¾ÿ>F*et:vÒ¤k düùgû*åÑóϧ ]pœý–/>xPõûï­ ò$¢O>ÉÞºµôÍ7í-Œ‹ÓææšÖ® ågÙõñ‘Ìœh›yΙÄOœëê*zõÕ°‰¯]¿®cY.5U¿lY4?¹‘B!zî¹àÙ³ST*‹——Ķüš$&jí–PQa%¢ Ô}ú¸»¸ˆ. ·û"+À?K=ßó¬ž|Ö”vò¤Rføp¯áýˆ(+ËøÃ«Wxxˆ/nVåH±˜ùùç¸8MZš!=Ý`û€®“ÜÝÅçÏw¹]U 44TÆ/ܼidjÑâÎÛ›-[Ê ¶¨È̯ھØÙ¦œ?Ålæˆhþü4ñí‚ –ˆŠ‹Í|æ)”_~†Ûê%xxˆçÏYº4oÕªü®]݆ óš2%ÀÃÃÑ[¬õŸaÈ6ùtvfdÞz+óƒšEG»ò["#eï½™—g:p ¼Jæ©V[‡—H˜§ž œ6-°}{ÅÔ©7êÚ0†!ÇÙs{~YWW†ãÈbᄯfá³J‹…³]µ]‹–åˆèí·Ã…±Yž0uSÛüµ|Âi·„… ÃçÌ :xP[¹tiÞ?<ØÁÝÉ'üƒÝÕܶ|òi»PäĉÊ}ûÊçÎ ¶ÝÎqT=¡:^—g:r¤£0بV×þm+õÆÏš{ñ¢¦~Ë… 77qPËÍ›":wNÍ¿rIDgΨ‰(:Ú•†U(Ä}ûÞ:ëìYõñãÂj­bbävKP*Ň©^|1dÒ$ÿI“ü““õƒ_=wN=l˜WCuàÞ«Ïܶ¶æÌ rv‘§§äá‡}¾ü2wÓ¦Ž%"­ÖúÓO…{÷–M ƧsüÓªüì²,K«W¤¤èƺ½çé¼öí•]»º-Z”UXh"¢sçÔ?ÿ\8i’¿èvTÖ¬)8^MD))úÅ‹³û÷÷ˆŠr‰‘wëæ¶hQVA‰ˆ²³/¿œž•e¬©–ê ×T‚Ngý쳜 ŠùÃøªÃÃkyvàoî^|Ÿç§Ÿ6wuÍzå•ô—^J“ËEz=+•Šž>dÖ¬[)kx¸ìë¯K‡ ‹ß¾½í¨QÞ3g&GG»––Z:wVŽíýûïÅÍ›»Îží(¿­·Ï>‹š6íz·n—¼½¥¥¥æAƒ<. öŽãóøã× qE…%<\öÉ'Íùí_ÝbêÔ={^ö÷—™;wV~ôQ¤Ýò…®íØÑÖv»Ý<=%S¦ø¿öZÿe*jµuÁ‚°–-åvKø§`R“OÅ^˜>}zc×TZjŽ‹ÓêtÖà`—Ö­¶¯bšÍÜÑ£*‹…†÷’H˜‹599ƘyÛ":º¼ IDAT¶ µÚz䈪}{%ÿdlc0™Ø3gÔ¥¥–¨(×N”üÆÌLCß¾Wþü³½¿¿ôµ»»¸o_™ìαÅÂ;§..6GDÈÌdkÛ5•Êâæ&vu9.!%EŸœ¬wqa:vT ß=ðµvíÚ{—yþ³™§‹@=¬]»önßóp ™§}ÞÞ’ ‚‚ð°+Àݺ3 ýyzJ^z)´©[p?À˜'4.§ÆÀ}¦Ǫ¶ÂÃB‰H£Ñ [œ‰Fõð¦gdÈåòà  "2™™ÞÞÞD¤×ë³nÞŒW( 2hjø´­·—çÍìì̬,Û‡3njժe åh´N—‘™Å²ìµë×·ïÜ•Ÿ_`¶XRÓÒ7mÝVRZJD……EjµFo0ddfåæå ËKÕa=ƒÑ˜“Ó¢…B¡ JMK«rÀéØ3±gÏêõº´ôô-Û¶geÝä·gfemÞ¶=#3Ëh4^½¿ióµFSPXxèÈQ–eùcŒFãC‡ËËUEÅÅ7oINM5šL‰I×6lÞRRRÚH´ëGµŠœÜ\" àW‰†ÝðfdfÅž9Ë“{ìÄÉó.ò«YYÇOž²û45üC5â˜g¯=öìÛ·ïÀA¹\& dõéÕS¯×™Í–‘à ¢ø„Ä6­[ ìߟˆX–ý}ã¦Ì¬,?_ßîݺêõúŠÊÊÑ#Gщ“§„å*ÒÓÓ9ŽkÑ"šˆ¢¢šŸ:[®Ry{y èôú‰ã“Éd‹uÏÞ½§Îœ ã8îTì™f‘‘ Â0ŒÁ`ضcçù ;uìpùÊÕܼ<~Ø3#3“ˆbZDïØýGppðˆ†‰D"‹Å²{ÏŸÇOž|lÜ#Æ*îqTUªŠÃGÇ‘V«-,*4 ¿¯¯/¿÷ȱ㎣aµZí†7"<ìHzºÑh”Édù®®®…E…,ËŠD¢¼¼ü€€W™¬qã÷P#ŽyzyyMž0aÔˆQÍ›—”=~bÝïë=jw`mì˜ûöîÃ/[­V†È™—m¥¤¦…†„(är"ŠjÞœa˜”ÔTÛ:vh/“ɈH"wëÚE­V—–•k4šn]ºðsúºº¶kÛ6#3Ã×ÇÇÛÛ;=#ƒ?75-½Yd„F«U©Tݺt‰DD$‘H:uìP\Rb¼‡sÝã¨rgµZ­V+ËZ]\\\\\“®©5"*)-­55…—Ïçóòó‰(??¿SÇ‹µ°¨ˆß^¿àÀßSã~«ŠH$ŠŒç‰Jµ:!11>!ÑÅť߾UŽdD¢¤k× ‹Š*****+X¶–ÙS«P«Õ……îîn;ÿøC¨:5-ÝvÖ/oa™ÉS­Vó ›——§°ËÛÛËb±êôú˜èè«ññúõ3yùù£GŒ¨¬¬$¢ÃÇŽ _abµXˆH§×ËîáÝ=‹*y{{ 6LX5™L[¶ï8qòÔƒ£F:ˆ†p¼Z­&{áe9.Àß?7//8(¨\¥ŠnÞ<%%5/?ßU&ÓëõáÈ<î+•yVTTžŠíÛ§·—ç­¬ÃÃݽoïÞZ­6ëfvÿ¿¦H&³yËÖmŒHÔ¾mÛ¶mZûùúîÙ·¯NÕ¥¤¦1 Ó¢…É]åé…EEü¼5Dde­ÂñV+KDR©”[’ΓßÅZY~K‹è¨s.äåç«T*…Bš™•ED½{ôºüe7¥²N­­·{Õê\\\"#“SR‰ˆµãhˆÅbª!¼áaÉ©i¡!!nJ¥»»{hhH^^¾ÌEæ¦TÚNþ÷ÆÊ<]]e9¹¹YY7½:v°ÝÎqäRmöÔ‚BV;qücÞÞ·†%Í&sªKIK îÑ­›°E¯×gdf¦¦¦ ™gAaahH¿œ_OD^ž^F“‘ˆ ‹Š„]EER©T©P0 ž‘YVVÖ2&†a///"’H%!ÁÁ·Ë)ÈÉÍVÛ=Žª]•J¥‚ˆœ‰?•®ÝðF„Gœ¿—’šDD¡Á!×®_—H$xÔà¾ÓXïyÊd²è¨¨‹—.%§¤òO´šÍæÄ¤k™YYmZ·ã'åUåßä8.>!±\¥b­ÖÊ®ª¸¤D¥RµˆŽ¶Ý(—ËC‚ƒÓ22„9`ãù7 ËUªsç/4‹Œpwwóóõ ð=sV§ÓQAAaRRR«–-ù½-¢ÓÒÒ ‹ŠZµlIDÞ^^±gÎjµ:"R«5GŸP«+ï2Vλ—Qå ÆÌ¬,þ_zFƱ'ofg·kÓ†œ‹†ƒðúùù*ŠŒÌÌà `" ²ZÙ›ÙÙáø¦P€ûM#¾ç9°¿ÓgÄG?rì˜D"±X,b±¸s§ŽíÛµåpwsOK¿ºiëÖGÆŽm¹wÿ/OO½Áàïß¼YäõäÚ·«µ¢ÔÔ4±XÕ¼Y•í-¢£Ž8™“›ëááADÛ·Û±k·‹‹‹ÑhôôôìÛçÖÔ;ƒ øsßþu¿¯—Édƒ!,4´g÷[c§-¢¢bÏœ  òôðà· 2xϾý¿mØ —Ëu:]€¿¿ÛåÜ÷,ª¼òòò}òË"‘ÈÃãß>mÛ´á·8 á »žœÌyº¸¸øûù•–•…†Ü£d¸g˜ÔäÄS±¦OŸîà µk׎?¾~ †Â¢b³Ùì¦Túøx»¸¸»X–ÍÎÉaY.2"\$©Õoo/_“Ùœãçëãééé ðºªT«‹‹‹e2YHp°ðæ!Y­Öü‚ƒÁàéééïç縖e u:½‡‡{€¿ýZ²eË"º¢êL4êÞzÛ²e‹ãÛê*++‹_ˆOLª¾·Ãí°ÈÈH…¬]»¶qç¶%"WWך¾$C$EFÜy´20 @x'ÓE*ŽjÞàñpw÷pw¯¾],‡…†:YˆH$ºg/vÖäïUg¢Q§ðÀý§¿Ï€y@cCæ ™'4.džÐ¸y@ãBæ ™'4.§2O…B¡×ë»)ÿz½^.—#ª ˆiS·ìs*óŒŠŠŠ‹‹CšÔ ôzýÅ‹£££Õ†"„´©öIœ9¨sçÎW®\9räÒ¤»'—Ë[´hÑ©S'"BT„mHàoȩ̓ˆX–e¦Q›ò/¡×ëããããã㛺!÷†a8Ž#"–e/]º”‘‘¡Ó隺Qÿx …"**ªsçÎD„¨:v?ÅJè‹H„Y !9•y^¾|¹¼¼|ôèÑJ¥²±PWZ­666öòåËD„µ¡ ªÎ»Ÿb%ô¥k×®Mݸ¯8•y¦¥¥=ÚÅÅÅd25vƒêÊÅÅ¥wïÞ{÷îå87jCATw?ÅJè 2OhXNežz½ÞÅÅ…eÙÆn @=pçââÂ?߈µ¡ ªÎ»ŸbeÛ€T‡÷<µwƒÏ“p£6(DÕy÷S¬„¾4 g3Oü-ÿ¸Q¢ê<Ä À.džp_ÁÚUç!Vv!ó„û nÔÆ€¨:±° ™'ÜWp£6DÕyˆ€]È<ᾂµ1 ªÎC¬ìjÄÌsïþgΞ«¾}à€þCª¾ýB\Üá£Ç¼ò2}òÙç ÒÝáÊ­ýõ·ôô aÕUîÚºeËQ#G¸ÊdŽf[øg_~Õ¿_ŸÞ={:ŠóŠ‹‹߸)95U£Ñè×oÔˆá"‘¨N…˜Í浿þ–ž‘±à•— …°ìéé)³ÿСӧÏ«®r×ð°°1£FyyyÚ+òžª_èê­Þ÷'&]ÛùÇ©ié Ca¡a><¶SÇÂ^gîÛ+e{u›·nKHL²{îÐ!ƒöïçL;ËÊË—­Xùì3³ƒ«ìròf®‡ºFµÖžÞ㻂ˆÒÒÓ c»¶ml7Æž9K Ó§WOLJÕI=îÀµ¿þƲìÌiSm7þô˺ììœgfÏ ¨wcþ>œÍ‚¸ºKIK;qê”ÔEZåŸD"¶{|^^þñ“'ùåcÇOäååóË7oùå·ß«ùÊ•¸+Wn—)ÉÉÍýbÙò^~Õjµ:n˜má'NŸÊÎÉu\Q•Sœt#9剙³Î_¼Ø§W¯qcòññùléW¯¾þ†•ek­ÎÖ–í;~Û°1:*J"•Ú.Û“š–~ìäI!Â*UÅÏ¿¬›2cfvNNÚÜPl»VÐÕO½oTŽã~]¿áÙæçææ 8 O¯^ùùÏ¿üÊÆÍ[„lÔtuéOÁÙ ç“®_¯õCQN§?tô¨Z­©¾Ë™FÖUý¢ZkOïÙ]Á+--{é¿ ¶îØQeûÖ;ƒk=ÌIõ¾/_¹wù²í–/—¯øqí/ô ¨_cîRƒÿ¦hÄ1O†¹BñÞ;oWÙn±X,‹½"†¯èÈþ½&“‰?,95U¯×ÛiÃ4o)”Ï0Ìþƒ‡Þ^ô^ìÙ³}{÷vÐ0Û‰†¹UiU=Å)?ü¼ÖßÏï—ÖH$ŽãÄbñC‡ÎåÕÓ±±ýúôq\­¼¼¼íÚ=óô,³Ùl»l{"CŒ«««m(òòóŸ˜>óǵ¿¼½ðuçÛÜPl»VÐÝzܨ×o$·æ‡gçÌž5cºÕjefÞ³ÿùxÉg+¿[= _¿À@~ÄéÎ}R“š®Ž`ü¸G&ŽŒ_~bÆÌè¨(á’Õø¡¨™½*jodýÔµÌZ{z/ï Žã>úôS•ªB$ÙvD§Ó5oÉgM‡Õ£º:ŸÃ0 ݹpËW~³}ç®Þ[4°¿{öÁhlúž'GDz½ÞÁq—/ŸŽ=Ãr\ßÞ½ˆã„ŠNœ:àï*öLn^žÉdÚ½çÏÃJþÚ`î/åwí܉ˆJJJ9ŽÛ{à@û¶mÃBCù]ñ ‰ƒ¡G÷n¶…ÛöÎqE¶§>v¬uLK£É¸ïÀA³Ùܵsç~}ûTïZNnnëV­X–5Bózõì¡ÑhíV—˜tí̹s¾¾¾C %¢ó.fÞ¼Y®RmݾÃÝÍMX:x\.wjoïöíÚ¥gdòñ^©TŽ6´Yd¤PlqIÉÞýŠ‹‹ƒƒƒG ÀÛÛ›ßn[~LLŒm×.þ5ÚvK`YöèñIׯ‹¦S‡vãé¤zܨ?­[2uÊdN'lœýÔÌ}Æž=ûÈØ‡ª^½¶WjèàAƒáô™³íÚ¶m!œn2™lŠ"Žãl/Yõkd?Ú·>&ì¡#G¯ÄÇ+ŠaCGGE9ÓȺF¦z™NrÜS²÷*.-9v⤋T:fôè°Ðƒ‡Ä'&z{y󠟯¯ã•——W¶`æÍyù1-Zð-¶Ÿ9w®_ß>V«ÕñauUïsùW~ûÝÖ;>zoÑ€~}Íf3¿«zǯÄÇWVªôë+œ~äØñÀ€€¶mZ;Ž@Siħmk=ñ÷›^Y°ðJ|BaQÑ;ï}°c÷náø÷>\|æÜyŽãâ ‹ŠKJËNÅÆZÌæ¿”ÏU-ÿô™³ Ãthߎ㸥˿NHJví=p`Ó¶mU çn纎+ªrÊwßÿðÛÆo¼ó®V§ËÊÎ~kÑ{[¶Ûy<¯YdäÉÓ§Ÿ<%<ýk6›—}þÙƒ£FV¯n×{æ½ôr|b¢Él>|ôجÿ<›œ’Êq\âµkùùªrÕ©ØØ¸ËW„eƒÑè8Ôf³97/ÏËÓ“_ýfõ÷[·ï|ñµgÎ7›Í'OŸ~úÙ¹'OÇjuÚ[¶Î|æ?……Ç©Tª%_.ýðãOW|óm¹Juäè±ÙÏÍ»Çríúõ™³Ÿ9pèN¯ß¾s׌ÙÏ$§¤T/?îÒ%Û®Ù†În ,˾ù¿EK¾\ZVVž›—÷Îû|·æ‡êñ¬UýnT½^ñbÜCŽ6ÿõ¢+äòcö=þØ£BáÂ.»½°½R£1'7oÉ—K/]¹â µ|†#¨rjŒ6qDôÕ×+¿þö[•ªâȱãsæ>êt¬3¬kp¸»{†¹¦žrÕ>P_._ñå²,Ë9~ü¹ù/¾½èým;vŠfÛÎ/¾ú_‹Åâ¸G¢œ’òãÚ_>Xô?…\^¥#'OŸد_­‡Õ©§õüQyûGÙ7«¿ß¼m»vò{ívùìó*Û'Œ,ªY³’ÒÒ×þ2éññ¯¾ô"˲™YYÓŸž#—ËoUÄ0"ÃqÜüysU•z½îÓ>¬þljFVÖGŸþß¼¢â’kׯ¿½ðõæÍšY­V†!sç©9‘Htgõvá6«¥"ÛS†9vâäÆ_ñòô‰D/½¶àÄÉS><¶J7ç=ûÌËÿ}ý÷Þ÷òòêÖ¥s·.]ztëê{{ô¦Ju[¶ïxô‘‡¾ö*˲Ç=6iÊé3gZDGÍ™õT¥Z“óÅÿ}ÊqÜ’/—òËUZÈY­–KW®ð«vïþ¹yy3§Mº|àСÕ+W´mÓF¥R-_ùÍà?zï]"Rk43g?³æ§Ÿßøïküé™YYÖ­uws³X,/¼üê×ß|ûýª•Dôñ’Ï»uíòɇˆD"“Ù\,tMÇqvKx㿯ž9wnÅÒ/øùf¾[óÞ½ûf?5ÓÙûì¯êz£™Ìfþe¿*åTVVV+»Æ^üðí*áJéõz©tù—Ÿ‡;nÏ_öÚÄP£Ñ¼úúv£ÍŸ¢RUl\÷‹R©ä¯ÑŠo¾åÇó7òÖŪ»»OE ŠKJÖý¸F,gfÝœ2}†Õjùá»o8Žë×·ïßx3/¿ 4$ØA¢š7³mƒÁðÁÇŸ>5cztóæ·[që³Ùœ’šÖ2¦˲k€ž:mõ?®ß´ÙÃãmëV qM—òË%Ÿ~þÕ²ÓgÎ 6”ˆ9êááÑ·w/ŽãjŠ@ÓjÜ1OŽH_ ÇrÇ9{ŽeÙ§Ÿš©V«µZmP`àˆ† ‘ÍCzÇr§ÕjÙÛsóÜ>†ãXÖjµZ­V–e==<ÜÝÜÖoÚœ›—ÇU°]#›Aá0U?eİa®2™N§Óh4-ZDWäøûoþý×/—üßðaCSRSÿï‹/'M›ñѧK Cõê¾]±lþÜç4N§+++cÆh4rg0X–%ŽÓjµ:NX® ŽÓë ¯,XÈÿûßû\O¾1îs£F ¿ÓæáDFDTVV&$%=5}ªV«Õjµb‘hÂc?yJ8rʤ‰b‘H«ÕšL¦§Ÿš‘‘™•–ž‘š–v3;{æôiz½^«ÕZÌæ'§L¾‘œ\YYY¥|­VkÛ5!t5• ÕêˆèÂÅ8•J¥ÕjŸž9c×ÖÍÎÜ`Õ¯Q=nTƒÁHDînnN^S/Š‹‹m¯Ž\.ïØ¾½··Ã«nb˜œ’â8ÚOLžÄ0Œpò RÓÓkm$zÔûãï §\µÔÐÁƒŒF£N§ ð÷#¢á ãoøà @"2Ž{TS´—¯úÆ××gÊÄ Âے®‹—.uïÖ•ÁÁauïiý~Trñ‰‰Ûwí^òñbÃ|¼äsaWM7›L={t¦d;tô舆ñ?j½÷œï @rv̳~ Åÿ-þ¨ÊFƒÁ`µZ ‹Š‚%b1ÿWŽÕjmyâÔé:•Õ|ñûïñË Ãèõ†i³f}¹|Å'¼7;tåÊ‚7oMˆ2aücÏÌzªÊ~~¾|NEDÜí…*X–ÕëõݺtîÕ£»D"É/(ذióo6º)•óç=Wå`½^¿}×î¤k×rrssrr­5”é€R©Ü½m ¿,‹å®®F£QxÅ”ˆüýüøWÚŠŠŠ†¾“ƒã¸ð°0£ÑXV^Îo  ån?ºFDEÅE‹•ˆ}ð‘ð­0ü°L¹ªÂÝÝݶüšäÚ-ÁÍM9kÆôŸ~Y·~Óæ¶­[÷êÑ}ÔÈnJe]#P?Þ^^D$ôÝVZz†ÕjmÓÂvcM½(WUØÆq\=æ†bè ©TBö®Qqq±3ä/Öß‹‹ ¿ÀwßE*µ]e˜Zzd7Ú'OÇž8uúן~Þ–´u:öìC‡ÔzØ=#•HV,ý¢ETÔ þûú[oïÞóçCަš/eY¹jØàÁŸ|ö¹N¯/,,LKÏXxû™…úÝ{­1gâ8"Òh4vwÊår£ÉÄÚ¤X|šd[QM˶µZ­°Ê0Lÿ¾}÷ìÛ/üQ.œÅÿYi·À*Šp×¾]»¿þr«®®6GrBEUÚSe57/oùªoæýç™ð°0þ/Ew7·yÏþ§ °è̹s/Ì}ÖöDN7gÞ ±xÂøÇ&>>¾M«Vó_}­®¡`bo'~¬Õj²É9«œ(“É8Ž3²Û_|j4‰ˆÿ!"~¸•ße0ˆH,–ðæÏ›«T(nWI"Fà_=>vÛ,‹í–àïç7kÆô)“&ž!QØŸÀŸÂÿ?±XÔ¦u+~×Õ„„ ãfL}ÒÉz##Âí–лWϳçÎO2yØÁ#‡?0#÷ɉONKHJêÙ½»Ó]¯?Žã9â÷›&<öXhH°°ýüÅ‹eååýúTýzžšz1cê“ ØªZk‰OHìØ¾ýíeþ…9sú?ôAÊzôhÜÃcûõ½3õëÒå+|}|¦=ùDDxXBbRÛ6mj=¬±:c0Pi6›_~áù‹—.}úÙçK?û?ÇwBïž=Nœ:•œ’úØ##퀿¹Æ}ÏÓl6Ÿ<[å?ébßÞ½||¼?_º¬¢²’eÙ‡Ÿ=^¨È¶Jº=W½‚ŠŠ ¡Øc'NðSn<6nÇq^^^§ÎœágÅüãϽ©ii\ ÕÞð IDAT…W¯ˆeYËmw2O›Ãªö³Z|” ň†­ýõ÷ýñ³étú»ÿ8~ò万®R—§'edf “É´y۶̬,“éÖÌ–|BY}¹Ö6TÛë€æÍšµo×ö›ÕkJJK9Ž‹OHܾs×ÃczºuûŽ„Ä$Žã²nÞ\ýãO=ºu  íØ¾ýŠUßæ˜Í朜ÜO–|^PXh›™ÛV'\2aGM%ÆŸ×ýúç¾ýF£Q«Õž=wžˆB‚Ct§Ö>ÖÉÔ)“}}|¼ùÖÙó¬V«Ùl>wáÂçK—…6ÌÉ^ð/y Wçfv·Ÿ|zábœó­µÝRk´7oÛ–xíÇq™Y7WÿøÓÀýýýüœid]ƒSï¨:.ÁÁªú½ÄÕÖ#»Ñ èØ¾ðÏÝÍÍÇǧcûvnJåé³göï_ëa ÒSçÏÖD"Ñ;o¼qíÆ_×opÐq–e‡ tòtlQqñÐ!ƒ…Ók½÷œï @jܹmu:Ý¢«¾çµjÙR†aÞycá[ï.z|Ê“r¹\$Í~jæ†Í›ïüv»Ò ÀÀu‡<3ïù¥Kþï¯_bIé™Bùb±8,4tÁ«¯<8r„Édš9uê§ŸñÄŒ§$‰‡»ûÄÇÇgdfV/ܶw*ªvŠÍg·Ó*ázõÅù2ÙgK¿ZòåR™Lf4%ÉÌiÓyh ÿx¤PÝò/>>>†ÏýøÎVTTX­V=ª5ÚDäááaµZµZ­ÅbÉÊÎne7Âaõèi½cÅOûTåsͨÕj5˲5u\«ÓMž6ãµ—^4 ¿p¢3Ñp¦/Ž)À¿GVV¿oïíÈíÚò ‘‘‘ Y»v­³™çˆ#êÛTG†á³GþkÓ…í"‘Èö¡/~ê˺DˆÅb~«Ê¬•U ·USENqL$‰Åb†aX–¦ð±[D"‰Dü{ž|XøåºÖè$†a„…aŸ‚¢³ç¬\¶4&:Z"‘ð£gUÚ,•Jùî8ž?SèZõÐÙ-¿XDÄ?á\íß¿ŸˆîæFÚàLäŒÃ]rP‹H$⯑ƒIYムwU»êýj°K¥ÒƘɶ‘bųÛñ-Ûw¬ýõ·-듈Š[Ýþýû‘y¯¡2ÏÆœÛÖ¹bíþù*÷×ïÞó/jÖZ¸3Õ;tœÃØVgû§pMai@ÇÙÉäo¿€ç ÙNæÿBû«—c·„š.V]ÝÍZ§6ÜÍ™ÎsP‹3éqC5²Á?þõþ@5HõÚ5ÒÊ*m.,*ZðæÛEÅÅOÏœ!|7ÀßY“Ím CîÏΙíçëÛÔ G|¼½§O}ÒßÏ·Wõx4àÞkâ1Oø[‘ËåS&Nà_lê¶ÔnÔÆ€¨:ïÞÄJ*•>8r˲:îTp÷yÂÇÕon•ÿgï¾ãš8ÿ€?—AH{*(2DTp‹ n­»Vë^Õj]µÎ_µµ­¶ZgÕjÅmÕ:PQDq0DA‘½§ìMö¸ç÷Çi¾i ! AÄÏûå—ËsÏø<Ïy|.—æª.@Tµ×4±ÂÃR'>.Úþž'Ð0°æ Z¨ºQÕÄ  V0ó- T]€¨jbP+¸Û€niµæÉápD"‹ÅÒumh±XÌf³ ‚€Úˆ ªÚkI±¢Úò¡k€–F«™§££cRR’‹‹ËÇþ‰ ´Hb±899ÙÉÉ !µ±@Tµ×’b¥Ü€F¤ÕÌÓÓÓ“ ˆèèhxŽ?h†Øl¶³³s—.]B0P DU{-)VÊmhDZÍ_~ò¤ B诿 f̰úí7„Tн½_ݽ[îáa°v­]q±4#CäççŠúî» Åv˜LÂÖVï͛ڿyåJÉÕ«¼¼¸£iÓ{÷6úë¯öL&!Ó¦%¬[—qçŽGuµ|ݺŒÙ³­ú©B(.Nàësÿ~…Jå)'šÿñGÞÓ§U>>Æ¡[·Ê¨&$ÔÌüÀ§û÷+Οw8Ð!´cGÎÕ«¥7Ör1Ð|Àš'€fÇÙ™ýôi—¿ÿv;Ö,:š¿jUz÷þ:­ÖåÊË—;üø£=µ-‘Aðùu¯jÖ‰É$‹*>ûÌÜË‹‹Š‹ã§¦ W­²¥žZÄáоúªUt4¿¢B\Y]-_±Â–:¤cGÎîÝŽŠÉ³Š8®®ì›7K©—×®•úúšæçKjͼ²RŽzñ¢Z"!Bë×·‰ˆð|ÿö:kžš#&“6ÌdØ0„PV–øÄ‰‚cÇ ŒŒè?ÿÜN%%NüýwaT/-M”ž.R¾A÷}I `Öú–­-‹Ú K»bEýÝ÷FE"!T\,ÍÊÑ­­ÿ—ÃçŸ[j(n‹?ÿÌß¹—•ɪÿþÛE]æFFô+ZïÝ›wøp~×®Ü!CL¦O·22ÒôÍUàƒƒ™'€æ%#C´iSæ?¶srÒ§öØÛ³¶m³ÏË“–«Ì<««åÆÅ0ÄܹÖ_~iíáÁ™93éýë ¨¨Q ›5ïFKÍ 7onÃåþgâ׺µ‡C“×ýðÝÿùì3ó;rBC«RR„––L“€€2u™¯_ßfáB›û÷+ªöîÍ;q¢ðþýN††0ùÐ|ÁÌ@óbfÆxò¤êîÝò¥K[)ïÇÕœ\=^—'yø°³«+›ÚS]]Ÿ _mär¼}{Ž™cĈ:žÛ¾=!Äáн½¨=ÏžU?~\éímäà ÏçËSS…ÎÎo+6uj‚‰J£Ú¶euëÆõ÷/KHLjA£©ÍÜÀ€TñÍ7­§M³œ6Í29Yèãó:"¢zÈ“Zsšøž'€æÅؘ1nœÙž=oþù§D B|¾üԩ€€²™3­ɨ»jML¡Ü\1Bˆ$ѱc))B±¸~ßó‹É€€ò€€ò;wÊO*7.þÉ“ÊÝ»•Ö¥VíÛ³»uãnÝšUP AåäˆW­JÏÊ#„ú÷7n×NãÆLj&|ùrÉÓ§U^^Ê•W1q¢Åõë¥QQ<ê¾\u™ ò]»r/^,¦Žzþ¼!Ô¦ «^Mš¬yhvvîtÐ×ÏZ½:}åÊ46›&’L&íë¯[Ï›gC%hÓ†õÇ¥C†Ä\»æ>b„éœ9ÉNNú¥¥2OOƒ‘#MÏŸ/vpÐ_°ÀFË⪪äóæ%SÛ\.ÝË‹ûÏ?zõ2ÔæØ?þpž93©gÏW––Ì¢"©§§ÁO?Ù#„ bß>ǹs“=<"eeÒo¾±íÓÇH¹òׯ»+g5nœÙ÷ßgõêeØ®¾†ÌÓ§[®]›Aý˜Juµ|Ý:;¶–>"59.$ìŬY³>tM€ÿ(-•FEñy«Vznnå‡èH¥88¸B&CÆ™0Dd$/7Wܾ=ÛÝS]-ø°ÂÃÃÀÑQ¿±jRR"åréúúµ/Êd8"¢º¸XÚ¶-Kå«¡|¾<,¬Z"!;v4°·gÕ¬|E…LCÎ2OI&' õôˆÎ Ô=2xYYYÔFL\|Íw;u|û¿¨ööö2ñóóƒ™'€Ú5Ö̾ç @·`æ @·`æ @·`æ @·`æ @·`æ @·`æ @·`æ @· 8æÕ«RSSÛAèéØÚzvî<žÁÐoÔºéJUUAhèÑ‚‚8‘¨ÊÄÄÎÍÍ·K—‰A¯W&r¹äñãƒEEÉcÇþÂb(¶9SEmuãÆwãû6JÓ”é(çÜÜ—‘‘ç "ÌÍÛuï>ÓÞ¾§âÝ;w¾wrèâ2¸KLO‰‹ó;ö—šo5JWªàóKîÜÙ6lØzcc[íò÷ßäæ6ÌÙÙ§^e¥¦>’ÉÄnn¾ÔË‚‚¸/ÎåçÇH¥bcãÖ®®C¼¼¦ÑéLê]ÍC.%åBDûöƒêÌG²²¬ÄÄ{ÞÞ k}÷ßWËåR„Ðäɨ=|$èîD¶±éP\œŠêÓg¾­­g#6à“Õ5ϼ¼Ø¤¤@A£1‚VV–yëÖæÃ‡GTTä6zý]~~ìÁƒCÒÒ;:ö÷òšÊá˜ûûo>sf6Æ$• <üÄÓ§‡êÌ'"Â/4ô¨¥¥3ÎTÞVN£M âãe6Vë”+߸9SBBþ<~|bii†«ëP'§~eeY§NM ?¡H”TR’Ö¸…–•e&$Ü­¹¿Î®l±˜ç/VÖë¨ÄÄ{%%éõ:D$ª ØÖ¦M7êåÓ§‡ÿüslvö o±,7 à‡£GÇVWP 4¹ˆˆÓÆÆ­µÉG33ûÄÄ»99‘µ¾w c¹••+õòƒžÈ¦¦m­¬\ãâü++ó· Ÿ¬†¬y"„X,É÷(^–”¤ùùͼ|ùë þEˆh¤ºéDpðCCËE‹n2™lj»ûˆ³gç&'?puŠÊË‹‘HøuæSV–ikë9xðZ•muê»ï^D£Ýó¬\ùÆÍ!”—÷:(èWŸU® ö ‚üý7þÒ¡Ãðz­6Š:»²™ ?îì<ÐÀÀ!;(è×~ý¾À'§3ON#GþߥKK33ÃÛµëCí¬ª*xõêrUU¾©i[OÏI¡¸8ÿÖ­;I¥âèè+r¹ÄÁÁÛÕu˜" ‡TUÆÇßf0X]»~nnÞîõëë99/ Ì»uûÂÐК:¼¸896ö&Ÿ_jfæàå5™Í6­QSTZšÑªU'ŧU„³³£c?¡°!””t¿¼Æ¤†9¤†®ÌÊŠ ËÝ܆+ÞŠ‹»elܺ²ò–c !{3++‚Åâvê4ÎÚºC­PÀXwûÍ›WA³·ï©<Âäré‹çfλpaqDÄ)ŒÉˆ¿S§¦‘¤ !””xäÈè„„{BaEXرC‡†WV¾©YO §””‡‰‰÷0–+v~ùåiOÏÉ¡¬¬ˆÊÊüêê¢ÄÄ{$)Œ<üø¤¬¬©T{ãðáq¡œœÈŠŠ 41ñ^zzˆb[*Ö7PÿüóuròjûÞ½_ž=;uêÔçÉÉd2‰º€ „bco=:633ŒÇ+¹sg›ŸßLŒå*•§rÎÎ~qõêJ*D!‘¨òò寋‹S4d^ZšyóæúŒŒ0åjK¥‚ôô§žž“UÍ ,Ö¯Qžl¤¤<¼xq±X\]X˜xáÂÂçÏOSû5tJÃCCúùÍÈÊzVQ‘sñâ’ÈÈóµFRCW–•e\¾¼\$ª¢vVVæ]¾¼œÇ+Ör,!„îÜÙv÷îv¯8.ÎÿÏ?Ç&%ݯ³ïàóçݼ¹¡ªª ¤$ýâů‚‚~­YùÌÌp‚ ll:"„ Ë˳zô˜Y3™³³©iÛ„„»š‡\BÂ]7·áÚäƒ4žƒ4ÃÉi@\Ü­ZNi&#ჟȠ^gÍ!D£1Œ[WVæ!„Â×®­±·ï5mÚ!• üüfúûo\¸ðB(>þβe÷¸\+„Й3³ãão÷ì9[ó!••ù‹û3¬¢¢¤Ã‡GÈdâùó¯ÍÙyàÅ‹K**r[ß¹³ÕÍmØäÉ‚.”ÿõ×gìš0aJ=‡]ö윋˜;:östìëä4@±Òå뻑Ç+–HøŸ~!ôìÙÉ®]?§žhB’²ýû&&ÚØtôñYÅã•”•e}ñÅq„¿ÿ&Åv=¥êõëksæ\´µí‚>}zf­‹yþþ»wŸ9jÔ6„PAAüŸŽIN~ RyJ§NãCBŽdd„:9 @ÅÇ „:wþìäÉ©ê¢meå2cÆ)•ÏŠŠ7r¹ÄÔÔ¾Î&.[vZA=}zfBB@_ÊåͤhxuuÁÇ¿÷ì9käÈm¡¢¢¤cÇÆ3™µ,@ièJ7·áþþ›“’îwé2!sÍ6qqðCc‰º šÏ/Yºô.›m"“‰NŸžðCûö>“u³’’ô””3gú99õG=x°ëõëk*‹¡ŒŒÅ£k¨/ˆR³Ðšll:–”¤Nš´OÝ“Ë%qmÚt‹»]g>Ô¶šs!„lm=££¯jèßf2>ø‰ ê¥1¿H§3IRŽ*(ˆ/)I8pÆ@1™oïEyy1Ôpc¨¼!w‰DXç!îî# BÈ !Ô©Ó8ê;lÎ!‰D›ûª²2oàÀo¨uÇ´G/©Y– §åËNŸ~ÜÝ}t^Þëë××íÙÓ÷êÕUµ®rÌž}~äÈï©m™L‚!‘1P5yxŒµµí¢9 iiÅbžâ^G÷qãv(Ý&úÖÖn––.Ôœ!{ÓÅehUU¾†hëë9;¤W£@ÅGùɽêtê4Vq㮵µ;±:;HÑðää$)W|×ÎÊʵcÇ1µ¤¡+ÙlGÇ~ñño[sÝÃc,ÕØ:ÇuHŸ> Øl„ƒ¡ïãóMEENAA‚6ÃŒÊ-''R.— „^»råÓš•/*J11±£¶e21BHùÆQezzlÍ£.==ÄÁÁ!Bû|j=)¦¦mŠ‹“5×LFBs8‘€ö´ZóôóóSlÏš5K]2¯˜Ã1C••e!„þýwµâ~<™L„âóKBÔwUh>DeÉ«æ XEEB5— XZ¶—ÉD<^1—k©’˜Fc¸¸ ¦~<;"âïððúú†£FýP#%íùó3¹¹/KK3JK3·b¾'E jRÌ÷4¤¬,‹Å2TÌB^^S5שӸ°°ãcÆlÊ33ÿøâ/ ™SÓ­š¨áPÝ¡¢°0$e­Zu¢^µ®™¦ÎR4¼¼<ÇØØ–Å2T¤´²rUܬBCWvì8Úß“D¯¨È-*J7nuHcé]õ\ÛÔ—<+*r¥RºV(ö˜›;ôï¿ìñメ¡Çìì¼Ú·÷ñòšª¯o¤’?Ÿ_LͯлØVWÙÔ¬Iuu!•@ÄÄ»îî£ë•O­ç …Í6–ÉÄb1ÅâÖš ùŒ„¦9‘•¯~Ÿ ÖH ÚÞm«aÂI)*J +¨ÓÔ²ÏСëU>¼RŸDk}àªæCêÄ`°Âr¹”Z×BQ¿=¨ò³¬,óöíïGŽüÞÜÜ‘ÚcjÚvøð-••ùÉÉA*XÅbÞ‘#£i4FÏž³ºwŸacã~öì\m*£™r jRGC@ôô8õúáNÆ=x°+33¼¸8•˵tr˜xO]æê216nmdd“™Þ©Óg*o93ÛÖ¶ËçŸSi‚²:;Hq”ž‡Z»SËÿó’RgWº¹ùúûoLJº_T”dnîXß_e¤V,•·Y,ŒåÚ ³Áƒ×öî=/9ùAfføãÇ#"þ^²äŽJ¨ét=’”RÛv»´•ñ IDATvž4#%åaÍJŠDU99Q={ª=û0&³²"FÞ^¯|4<ôX.—!„ètµW†æ0šòD®óÒвeee5J>s·-ÆòÀÀ_8S77_„¥¥3BHOÓ®]oêFÏÈÕð¸È¢ŒzRenn”bOnn”žžÊ=¨Žizzˆâi1Ê-¨¹Â““ó¢ª*ÿ‹/þêÓgƒƒ7›m"ó´©Œ*Ò@C@ÌÌÚI$|åKôó›zT]V&&mììºÆÇߎ½éé9‰ h Š6ѹóÄׯ¯Së¥ ©©x¼bågçÖJËB™™µ«®.,/ÿ_)99Q¨†:»R_ßÈÉ©|ü혘ë]ºLÐ\½š²³_(¶³²"BææŽÚ´"//æÑ£ýl¶±§çäÏ>Û5oÞ?¹ÙÙÏUòçr-?ª¯oܱã˜ðð“9*Éîßß!—K»u›®®ž99‘­[w¡fqï“‚HTÉb2úê“|ø‘ðÁOdP_ œyÊå’ÄÄ{‰‰÷ï>~úøñIéé!ãÆí¤¾cfaálg×õîÝíÔ×WTä^»ömy¹ê§ae 8D™MG[[Ï»wª®.Deg¿xþü´—וU}}c1펾*• B‰àùóÓ‰‰÷ºuûB‘Œú&ußiEÅ„Ædxø‰’’ÔZ×ß4Ð( 4Äѱ¯©©ýíÛßS _¿þ7##T±ˆZë7H;u{37÷¥§çÍ™#„JKÓ/_^ž–öD%“–q¹–~~3RSƒ1–ËåÒÔÔG7n|gbb×¥Ë$ÍÍѲƒBnnø\‹ë׿ ˯_ÿ›šú¨f†ÚteÇŽc++ó;w®÷Ì3<ü5;*.N¹ÿWWס&&vÚ´B*ïyùò2õ2''!¤øJ§‚­m—ââÅË#¶èëž<95!áµÄZ^žuíÚšÈÈó¾¾5<Î'1ñ^‡Ãß?…ââ[ÛΚÓ|ð‘Ðô'2xO |¶­HTuñâbj[OÏÀÎÎsöìsmÛöP$˜4iïÙ³s÷îíÏåZTWÛÚv5j«æ<pˆ²qãvž;7wÏo6ÛD (srê?xð·5“óƒ¡ýúºk×Ö2™l©TH§3ûõûJñlO»#‡˜7ï²››ïùó -,ùüR[Û.nnã¢.™™µëÕKÛ»õê ”êB£1&LØuá¢_õb³‚òþý¿¶·ï¥\ùùó¯(gåá1æîÝíí{˜™ÙkÎ!Äç—ÅÅù·mÛƒz:«“É™5ë̵kkÏžK£10ÆË[µò˜4ii¤u1úãÇÿzùòòß~ë®§Ç!Ú€Ë#"jù®]]éê:ŒNgÚÙyÛÖY=}úÌ?qb ‹e(Uš›;Œ¹UËVØÛ÷òòšvóæú  !‘¨zР5* F9:ö}üø IʨåJÇlþü+7onºti)AÐèt¦L&600ÿì³]šçr©© Z­xÙà|rs_::öל¦9Œ„&>‘À{"R“ãBÂ^hþ.“ŸŸ_¾ìD’²ìì<^±©i[u_k|ÿC”Éå’¬¬>¿ÔÜܱuëNR e¹¹¯$¾‘Q+++åÀ¤,5õIÊ\\†ÐhŒÜÜ¨ŠŠ7––ÎÖÖÄb^jê#wêŽÁFÁç—²XênnÔ‰D•.“IllÜMMÛÖ¬¼PX©!gÍ™kVZš^X˜„±ÜÜÜÑÆÆ]ûµï ‘¨233c²]»Þl¶¦Ç¨jèJ‘¨j÷î^£FmÓü&uÊ˳óò^³Ù&öö½ètf½ZQR’Z\œB§ëµjå¡î±Ã‡2dõ€…ªªüüüX©TdlÜÊÖÖSñeÈZÉåÒÜÜ(ê?TÔ+±¸ú÷ßû|ýuPÍ:oßî:nÜÎÎÿóÝÎ>tz"oÛæ0eÊ!w÷‘Ú·  åQ|Ï3&.¾æ»:¾ýho¯éö:???Î<ø°ÂÂŽ=|¸gÍšuiý°^½ú'))hÚ´#º"ÿóâÅ™ììȉU©™y¶l0ó@7ólÌß󠙨¨ÈÝ·¯ÿ½{¿x{/lžÓN„P—.“x¼â‚‚ZNàB.—DDœ:ô;u ?ÞâÄ”¦¬Ò‡òøñO¤¥M¦ßó 9300÷ö^ÄåZ*?}§¹!Úĉ{‚²]‘·øü²1c~ªõ·@BcÆüTëëZ¤¶m{p¹Vžž“5ß ´3OÐ1™ì=¾üе¨›©i[Åwt?8##uÓN„§ç䦬̇EýÔЇ®@‹wÛÐ-m×›¾>Ÿ‚QQ‚­[½ªÎ”qñ 7nÝJMK'dgk7aÜØ.;)ÞÝ{à`Ïݽ{÷nšºŸ¿ôOrj*ÇoecÝ¿oß¾Ãh4ÚûWV^¾ÿà¡%‹ØX[kÔ®=ûúõíÓ»gÏz•õìùs‰DÒ¿o_êeJjêõ›·’R’Åb‰µ•Uß>½GÉd¼ý"•JýΞKÏÈX·z‡ÃQl#„Ÿ!‚èÓ«gù¨“û&ïIHÈô©SêÕ fžÐtRÒÒž„„ 䣲ŸÁ 7Á5öŸ+WÅÉÌéŸëº f%//ÿñÓ§ß®Z©9Ù¹‹—Žû«K§N>úK$’ˆ/¾^µzùWK¦LšH% ·±±éÓ«1»I]Ý’SR¿^µÚÆÚj„¯¯‡“’–¶kï¾À »vþB#ˆ'ƒ‚ƒgLÿÜÚÊJû£ž„†ØÛ·íÕ£ çñxû:r`?5ªÏ^¸pôøI‡víúy÷100HMKÛèð¿7nþöËO–¡+×®Ÿ»xiÆçÓL¦ò6uøÕ7–.Z„1®3uÚØÙ> ñpw÷èè®}+4.˜y@Ó!Áæp¶mÙ¬²_&“Éd2]—žœš* ?¹‹9A DhnubRòÑã'–,\0oö,¹\NIJ%‹ùmס£Çú÷íkmm…"AuäÓXu;ñ·Ÿ¥…ÅéÇ ƘN§zlmeUPTXwHßG= ŽŽ‰1àp† òqrt¬³ŠJ’$üøI|b" ºtê¤s©LvÃÿÖžßv’$‰1>züd7/¯Åóç){këÿÛ¸aÅšµž<5àp2³³Ë+*®^»nÈå*¶û d³Ùá}½ûÈd²:óñÐ_èèÞÕkû/;’RR\œkÖ@ ¯X¾,'7¯K—.EGG#„\\\šªVÐ2½ˆŠJMOÿ|Êäšo1™Ì­?n¯¬ªêÖÕ !´ïCž<ý|Êää””¥+Væ=~òôŸ«ÿvëêeff†züh݆M2¹œÉ`^¹víET”ï!+V¯uttPL'üÎ{5tð Ûwcââù|P(èïíš–¦.[eµADHXتuë+«ª 8‚]»ys`ÿþ¡[¾OL zlmmõ$4ôß7ã_¾Š¶07¿sïÞƒàGãÇŒÞôý¶:ÓáûÎæm?Ðh46›ýüEä™óz÷ìiffJ•RZ^vúìyKKËܼ¼3ç/vpuE]øçòÏ;“Êd¡s.åðù*æ©ié›·ý`oßÖMé/šH$ú}ßþϧN¡WÐc2/˜ïêÒ^.—#„®\»^QYqý¦¿MvvÎÙ LŒ]]\B¢ñݦ-B¡h߇JËʆzÃÿ–ºº){ý:<"¢m›6v¶­ ‚@‘$9nÌh'G‡È¨—;~Û5aÜ8==&B¨¨¨hùêµÞ½{þóX!å øW®]ÏÌÊ 624ŠŒzyþÒ?ÎŽŽmìì4´âÒ•«=<Ü\]0ÆÿoëÕë7,ÌÍË+Êý΋Å]½ 7f´T*Õ DAAÇtïÐ!++[CÝ”-[²hÕ·ßmÙöƒ‰‰I7/Ïn^^=ºu577G Ð÷¾ý¡ááÆ F= 622òîÝëàá#u†”N§!„***/9m`` “É–¯ZsðÈŸ=ºwÃkjÂãìœœðˆˆƒ{ïÞµ+Bèèñ·î.˜;G¥ò/££=ÜÝ©»ÇsßäQa¯ÙF©TêÚ¾}vNö¶-›ªª«srsÿu'Æø·={©m¡P(‘HRRÓ\Ú;?~Rg>cu£‚JÙÁÍíNÀÝùsf#Ì< IáÚî¶Å$&IÒ³sçqcFïܽG$-š?ÏÎÖ6)99;'gë–MÔ!A̘þùúÍ[ªªª^FGó‚/¿˜^]]jݪՖ ëÿïøß+6Æ …BŒIŒ1ŸÏOMKS—­¡¡¡â°ç‘‘µŸ˜XXT´{ç/|>!D§Ñ¦LœpøØ_ë×®¡ì3ºMÔÊÒ!4lè*e+k„õVi0Æܯ§§ÇãñBB¡ j?UŠï!ú,u¬³³Óó‘ãðg$IΟ;‡ª³µµïÐ!OBB©£Ølvg’$I’T4S$#„ ¹Ü:ÿÌ :ŒÉdR%:9:FǼÆ× ßaCíÛ¶­ªª ×P7eV––—ÏŸ}öüEhxø³ˆˆ ‡Á4mÐÀk¾Y®¯¯ß³G÷ÇOŸ<!ì;tÕœ:CÊfë#„¾ø|A|>Ÿ ˆùsg½rujzºX,ÖÜ Œ1FG½ˆŒrvtd2™óçÌþjÑB•É9B(3+»Õ(‰T‚¢¾­Z3ž,K(‰D"’$ÆTÑÊÛ‘/_vïÖU.—k“õV­£‚Jfcm•ž™ fàC©ÇÌÀûãp8¿þü“ÊN‘H$—Ëe2Ù×KOšþ…±‘ñ´)“¥I~A!Bhë?)žžBÝñR^QYPXÈår¹\.5ëËåÆ ¦î ­“†l•gžêЏxŸ Å/s`ŒÛØÙ‰Åâ²òr3SS„õUUê„“©ü’z8«6i„Báµ›þñ ¹oÞäæ¾‘+MBæŠ $~·QXTdcmÍ ¿}V°\.ogoÿ$$TQÕšOr251A••—× TZz†\.wiï¬(Q1oÁ˜Dˆ@kކ¥…Õ(ÍuSF’¤P(ìæåÙ«Gwƒ‘_PpñŸËç.^â¬XöÕŸ»v „´ôŒõo—%µ )B¨-~÷ýRê>Ûââb‘H¬®ŠZÙÙÙΛ=ëÔé3þ¹ìîæÖ«G÷Ã}¹*•/¯(wïàFmS())5¯q#7µßÔTÓ­Y¡aϨ ¶öùÔ:*(\.W"‘‡£¡P:kžÐ„0FQ‹xµ ˆ „ÕÕ¼¨¨—Ý©Çù¬X¶Ô@ñY™@4‚fmeÉfsH¹\yª©x õäOj[*•¢ÿ^À©g¥ªËV9¥º"X,ÆX,³X¬·û%b„\.Wš˜ýïÙ9$‰ÿ[¤M>Ÿ¿pÙr>eÒÄ©“'upu]±f­r[j>pcÌf³Å‰ò’&Ug Â,,Ì­¬¬^½~í3 ¿Ê[ë7oqssýAéYÄ5KÔ>ZÖíM^ÞÃG–-^ÔÆÎŽúC.wÙ’Å…EáË—.¡~Ù2,üYfV–}Û¶ÎŽŽŠ>ÒRê¥òº±H$Bq8êÝZ[¡8V.—Ï›=kú´©OCB_DF¹páß7þq@e"Çd0©ÇÒ"„Ü\]étzxD„bö®Àãócââ¦Lœ %Å6ÆøulÌÊåË0ÆÚçS먠6¤)Bˆ®fီ½×oRhD•••»÷î_¶dñ˜Q#Û³W,Û·mƒ¢ÓiÜ\©R©4$,ŒÅbÙÙ¶…99¹ŠÃ¿Ý°éÒå+èÝl’ž‘Y³ Ù*'SWõ€ÙøÄDÅþ¸ø‡£ù7ë+.!¡¸¸xÏo;§LœÐ±CŒ1ǯó(;[Û’’’¼ü|Şظx͇`ŒG ÷ zð&/_yÿóÈȲòråØÖJûhhY7“¨—¯Â#"{¨%P’”s¹!‹Õ»g'!!AƒG ÷Õr¡[!&6Ni;!ÔÆÎN›V$§¤;qaŸ1 zð2:º“‡‡‰‰IHx¸L&Ãߺ𖆕VA©…8 Ù*×V]íÚytt?rìxIi)Æ8&6îÚ›ãF¢Wù{¡ò)­ËiNcblŒÊÈ̉D‰äò¿ÿffeI$Rå4*Y`Œ½{÷233ݽweUI’Až=®Hœ“»}ÇΑQ*ý2súçæffë6nzöü…\.—J¥/^ìÞ»¿u«VÆ ©µ’øÝ«:£¡8JsÝ 8ß¡CüΞ¿w?ˆúýU@xÝÿÖã§O?7cL’ä ŸOCÃŠŠ‹ò©5 µ†”Ú¸üï¿q ã̬ìc'O èßÏÒÂBC+‰%’¿Ïœ½s÷žX,æóùÏ"ž#„Z·j­Rw7×̬,j›$Éå_-ár¹«Ö}÷øiˆD"Á¿ÉËÛ¹ûwÿ;ß|½ÌÜÌ ¿[}[ÃwÛ¡Ïž èׯ~ù¨”̬,÷n*ƒ@ê5½Ôî¶€¦ƒ[·«~ÏÓÉÑqü˜ÑÏ##Ïœ<.‰h4Úwk×|·qS¿¾Þ[·lZõíw3çÎ755-++ëèÞaõŠåc¹\þ›6¬Û°iÒô\®AUeÕ¼9³;ºw˜3sæÎÝ¿1{.ƒÁ024œ:yRÆ»§ªØX[ŸyðpѲ¯÷þö«ºl•k¥®™L¶aÝ·kÖ­Ÿ>kŽ‘‘Qeeeïž=çÏ™­tøÛ?TXéÃ?zwŸ-FX›4.íÛû è¿éûmmìl+*«:¸¹8ÀÿÎ++ËwO+UúsønæBÄ– ë7}¿uòôl6›F£-˜;çâåËTÊêêªàÇO:wòèŠUZãàÞßøù—Mßo¥Óéc’$Ý\\~Üú„òŸ¿€1ÆuGãÝQšë¦œçšoV°ôX»öîûmÏ^‹%‹ Æœ/¿?f4ul¯=˜ †‡GGS¥Ûwµ ;úbÚ´•k×ðx¼¶mÚ¬üzµjª¹ã.:;æ÷ýŽŸú!ľZ´°­Ê¢«—§çÉÓgd2uS7“É<~äÐÏ¿íúáç_‚`2™‰ÄÔÄdëæMƒ}RÍQ¡¼ý"2J¹ZçS˨ ^%$&õèÖ >ÌÀ‡B¤&Ç…„½˜5k–†D~~~¡áÇ7U­ eâp8úúú5÷Ëd2±XÌápªªª¨ÏñL&ÓÐаªªŠ$I‡ó:6¶¤¤ÔÎÖÖÍÕ¥ººšúôÌ`0ètzÔ«h‰Dâæêbfj* Y,VYyybR’¡¡¡gçÎ!:N=L•Éd¾ŒŽ–Je]:y0 uÙ*«µ*O–¾~tôë²òr{û¶íœx<u¸‰‰‰H$RÌÌÌÌx<õ}E:nll\YYihhXg¹\Îår“’òòóÚµstpàñø/¢"Û¶icia¡R ›Íf2™ÔsV™L&‰qÔËW$Ivóòd±X,«¢¢‚jŽ‘‘ŸÏW|'VF£äå秤¦‘¤¼½½£ƒŸÏWL«TJäp8 ƒ*Qûhh¨›2‚ 8_ ˆ‹OÖVVŽŽLCñTd¾@ðù—³×®üf`ÿ~µV¯Ö"„Œ…BaYyy\|¼±‘q—ÎÞ>ZV}+”s¦B”–žÁd2:¸¹r¹5ÔÌ`0-ûzöŒ½zöPÄ–Ãá”—W$&'‰DbkkêoE/Ðh4j”RÛåååY99ÎŽŽÊc²Î|4Œ >_0cî¼3'×|$Í×Õ˜Ú¾$Ò©£;µaoo¯!??¿zÌ<}}}XYï‡ÉdA’¤Ê£Y ‚`0AÈd2ÅÚN§î¨Ç )£ªøIhuÙÖY„b?F£žÊÛ(ͬIQ„\.§Vºäÿ}葺:3™L„âQ7Z¢B‡Ò¦•µŒ†öu£Ñht:ê åç!„®\»îwöÜ• çtºö•TΙú…•¢M+!RÊž„„?~²eÃw5 Eio L&³æn@>ÿ;)©ik¾Y®®ÎÔQüß{Î<án[ø(æŠ*0Æ5ß’Édê>‘«¬õ©Ë¶Î"4ìo\ÊsŒq͵ÊZiŸR…†ÐÕY¢–ÑоnµÎ~ ‹ŠÖmÜ\T\<ÎlÅ´Ô—ºyµ6­Ð&Dƒ}^»y35-ÝÉÑ¡ÎBÕQW“ú惒J¥7oÝþý×õ=@#‚ßó>f¦¦³fΰ´0ïÕ£GÍ;]› ‰D²uóæü‚üº“6‰ªªê ß®åÀ‚'|@°æ |4˜Læ¨á¾$I ‚]MŒ ¹ÆF.º» »^,,Ì­­­j½w@“™'ðÑÀ7Û¥NeÍdÎIiÀ º]=~ÏhXó [0ó [p·-ÝÒvÍ“Íf‹D"‹¥ÓÚhy´y:99%%%¹¸¸Àä@½h;óôôôD½~ýº™ÿ€€Æ2pàÀFÉGÛ™'FëÚµk×®]¥Te$I¾|ù2##£eÏi9Ž£££§§'¦«ïÖ~"‘lJŠ^C}¼±m­øÄA'‚ W  0®@£ƒAÕôêñl[yõêUyyùÈ‘# >t]tˆÏ燅…½zõJ³wÊ'ɦ¤è5„ÐÇÛ–ÑŠOt"øˆÀpºã 4:TÚËÊÊj”|>üÌ3--mäÈ‘zzz‰äC×E‡ôôôz÷î »™ç'ɦ¤è5ŒñÇÛ–ÑŠOt"øˆÀpºã 4:Á?7¢ IDATTMïÃÏ<…B¡žžI’º"º…1ÖÓÓÓé"þ'ɦ¤Ükol[F+>qЉà#ÃèŒ+Ðè`P5½?óD}"=1ÖuŸH$›’¢×>êØ¶ŒV|â ÁG†+ÐW ÑÁ jbÍbæÙS²ODRwZFl[F+>qЉà#ÃèŒ+Ðè`P5 ˜y¶(IÝi±m­øÄA'‚ W  0®@£ƒAÕ4`æÙ¢@$u§eĶe´â>"0\.À¸UÓ€™g‹‘Ô–Û–ÑŠOt"øˆÀpºã 4:TMfž- DRwZFl[F+>qЉà#ÃèŒ+Ðè`P5uæÉ½GÉd4ч–O¤û>ÞfÂeP§šæ2¨ü×¶9xŸ™çÅË—’†Ô¯¯·º4ïy-Õ&®­iŠÑ ×#:šyû6Å¢³Xt&“‘‘Á^³†ëíMdeÕy,óÖ-zjjÉôÒÛ½»uÓ Fc¼wïó¡C/¤¥UŽç:l˜cVVÕ¨Q—ŠjܶgdTÞ¼ù6ì7n¤fdTRÛ‡EíÞQs£»u+-5µ¼68¶ÏªR‚Ê_«ì¬ñ¯‡çK*4x«42UTЀ5xŸröÂÅ%ËW¼y“ç3 Ÿ^½ò ò¿^µúÒå+X½K—¯œ>w¾^‡$§¦> eê1™zLƒþ&/o÷¾ý³.ÊϯÐ= ÉÉ}Cm?zü$//¿aù4 Eujyø*::*:ú]'2rß¼ù}ÿå«ÖÈåríËjÜP_¹výÜÅKNŽŽ &³Á™4A´›L^^þã§Opàû ×3çÏÏ_²4&.®g÷î#|‡r÷:¼`ÉÒ¢ââ†eX/ŸH÷颙º¸î©€Ë`­e}Œ—Aå¿¶Öû *Œ±X,>éw:(8øÂ?—5$kðµT×´¬XcMU>Ö5O‚ ±±äÄ ÅKFj*Í×—3wnu` "ÍÇQg¡ŒW¯>_ôQ-¾7 ’QQ…Û¶…|ÿý€ ¼år9AÛ·û,[°e˓ѣڴ1l¼Úñ¶†……k¤R‰L&E½zUÄçKkîot´éwur ú5ׄ@^U gbRòÑã'–,\0oö,j„,[²ø—ßv:z¬ß¾ÖÖVR±äÔT¡PX¯êˆàr¹Û¶l~û’ rrs¿ZþÍ÷Û:¼/¡ñ" 9cEï<¼ ‘Hd2Yri@‹´Ô’:„C;{åN¼w?hóÖmaÏžy÷î­eYê¼¼¼N;.š?O*•6,Ϧ‰vÓ!ô—£üøñŸ˜3ë˯. >ñÐh´¬ìì¥+VnÞºíо½4šÿÓüé>5Sw×=pD-á2¨Õ§ñ&Óàš< ãóŸ{ý¦Aa¡µ•š±ô~×RªgÅjöZ½>q}¬3OŠP(TlÓìì¸{öЧM£?y"ëßÿíμ<½sçhyyd»v’éÓIKËš…Öš†yç-#‰Åz~~âiÓžž†¬šDò×_Ÿ98˜¬^ÝC (vnÞì}éRüÝ»ó翽/"1±ôêÕäâb¡““É_¸›™éSûÿý7ÙÓÓZ$’]¸ ‘Èû÷o3j”£"ŸÇsÒIá€VÔ0 ÑÉÉØÖÖðÎôŒŒJ±Xæç;mšÛ£Go÷¿O¡ÏŸçf–”ml¸“&¹89™¼gˆ÷@ü.Ôþ岸\•r3³²‚WTTÚÙ¶9Ü×ÈȈ:üÁ£Gní]ÄñÝÀûR©´«§g_ï>*uyþ"23;»¼¢âêµëƒ}²Ùlu¹ÕŒ˜öѦöh®gqiÉ£'Oõ˜ÌÑ#GÚÙ¶¾ÿàaL\œ©‰ÉØÑ£,Ì͵I£¡³êŒFÔ«W¡aá$ÆÞ½{!ü¿KwÔ÷@ŒñÑã'»yy-ž?Oy`ØX[ÿ߯ +Ö¬}ôäiîÝ4Ÿ¿µŽ=múdºOËfÖ+’Ú_4œ>Z‚Ë`˸ "¥®lX?ìßVJ`ÐW—sf_¿éô0xúÔ)Š·j=CÃÃtFÏÝÉž††²X¬ݺ5씯õà Òœ÷¹Èëëë+W„[__ûp}¬wÛÖ¬K—<žþñãF½{Ó££1ÆÊªK£Näæùùz·o#©T]²†U»ùD’Ï—gÏšÕY&“(ï72¢—”¬Y²¤+õòöí´Îߺ•QU%ýã—ÞÞg²³«¨·¶n Ý¿?rúô›UUÒ¤¤Š™3ý}E½µägŸ] ÍËÉá}ùå­“'_+j8oÞíÀÀ,Œqxx~nnu~>ÿöí ©T®ØßàBOŠ>üŸ°°|‘ˆ¼z5¹_¿³ÑÑEŠà×7>Šk”þo'ÂãÈê´>Q/•„ò°èxÁƒÞQ¢y™o«Š0ƸXZõMê‰EÉG6eœ/–Wÿ[òlà«-Á±MÖ ¡P5fÔHê?>8lö£À»“'NÀ9ö×Õk7¾Y».<â¹T*MHLœ³`Q`P@(¼vãæì‹’SR¨£nÞº½l媘¸8‰Tú øÑ¼ÅK’SR1Æ1±±…EÅ%¥e!aa29ü·Eª}*—Ë{vï®Çd¾Š~{“óÞÄÆÇ+þóï¿㊊ŠßöìÝþË΃Gþ,¯¨xühÁWË^DEáÿŽ“mÛxNm= ^´ôëW¯_WVVí?txõwëåry㶨N-°±j‹BßÑÉ£#Vß}Êe½|õZ¹Ü§¡¡ó—,}Æð/]¹:gÑâ‚ÂBêð£8wéÒ†-ß󂬜œM[·]¹v]¥>q ùùå!aa"±XCn*«W´1Æšë¹çÀÁ=û’$ùðñã¯V|³yëÿ^¿A#ˆoÜøfÍ·2™L›4:Ks4Î_úgõºõÑ1±…EE[¶ýxÝß¿/€uJKO“—7aü8‘H¤¼_.—{yv±µmý44LÃù‹1V7ö´ŸH÷iÙÌúFRû‹€ºÓGpl1—AåV7¬Îöo+¥²²òÙóç#}‡q¹\Ï.ƒÖ5Ïš@IÂmÚÐß¼Á#Œ –.ÅH/\ étºHÄ9Ò`õêŠÀ@¬˜Ü«O#ýåFI âñ¤/b@]²F A#©o$srªÅbyÛ¶\•1ÆUUUÔ¶D"_¿þñ¸q.§O'\^.é×ïÔÏ?‡:4!DÄõë©ÑÑ -,ôi4Úøñÿܼ™¾`Açü|þŽÏ–.íþûïCI’LL,óö>e`À¤ "‚ hã_~TR"âñ$/N …Šý +!tôèëùó½ô%I’$ w÷#:Y DýŸNS¯y戊—¥SÞS!P¹‘˜\šrl€YÇ ]ÖÒ1!B²‘‘ÛV§ ìôŠ©'uH¢àMTß=¦4Ž„‰üqcƹÇ]~¤¡†ÜMZßVI¤Rkk #D`PбCÝ;tàñxk¾ÛЭ«×Ží?Òh4‰TºlÅÊÝûÞ¿!tåÚõ ãÇ­_»†$IŒñÄiÓCÃÃW,[ZQY% vþ´] üòÛnu9ü§µµclccM} !DˆFÐih4šòË̬¬‹gü ¹\™L¶|Õš?Žüù×áCï²ÁTÓh4c,~ß·òÄ kW­$I2=#cÆœy¡áÏ·EZjIˆÊÈÊúiç¯T}ŠŠK7¯ÿΡ];¹\®®û”ËÂoûéj»ªªêÀ¡#>ü´í{„P57gÁ¢ã§þÞðíZ„Až<½tö´‰±1F[¹vÝ“§!ÆU®ÌÂys«ª«srsÿu§æÜ”#ÆçóI’Ô>ÚR©Ts=‹KJΜ‘îÓ¦™ãúF²5§öà2ø±_•öá:Ï©Zë¬aˆÖkl(W¥G=|ü„$ÉÁƒ|H’âã³kï¾Ì¬,û¶m5œŒÃ‡ ;{ábäË—=ºuC=~òĈaC—­\]ßS^݇ïÞ½Ôçý/ò††ÜvmÛ‹Äb}ËÊÊÒËÕ>b-gÍóí~&ÉdczL =%Eº~}µHÄçó«IR¶jýåKTV¦8VC¡PHu<ŸÏ§½~­.YêÝ|")ÊB&&, i^¼(ÈÍ­^¿¾·@Àãóù,–lÉ’®Šg!„¦NíÀå"@Àãñ:u²dã{÷2årróæ>ÕÕÕ|>¿];Δ)5TTV(’$Æ)]³^(Æ80pÆŽy<ž@ (-­ B(”+¿¾!z¯1’c’‡ÅÊÿXLeÃËNæ¯o7QÄðù|R YÕvìK^F™”§(‘š./·Í!>Ÿ/ã‹7:LN¼‰çç4M+D"1BÈËÕœ³ï°¡ömÛVUU%§¤dçäÌ™õ¥P(äóù2©tÆôÏ“’“«ªª0ÆÜ¿béWT•!‹1ÆB¡ã·§[Jjª†´iÎP<˜A%ò+„ÐôiSé4ŸÏ—H$óçÎÎÈÌJKÏP>!„1Â?Œä _~1Ï­[µÚ²aýÿ³wßáQmÀß½’Ë•ôÞ+$„ ¡wE@Ž(ÒED±a÷CQ ˆA¥ˆô J ! ÒHï½çúÝÞ~,çåZ*íý=<<{{³Óvvî&³7ëäèб%2êI<‰¥R‘$I’¤J¥²²´´öÿs¨´¬¬ey5û uZb±X½–‘QYUµxÁ|‘H$‰˜ ÆìÓ¯\‹yPÆðps‡î7üýý¤2Y‹º’ªT*01¶û5¦¹ˆ)µž™i8æ1£FÊd2±Xìè`ãÆ†Ó%uqv™LfJ'Ë@mÄ_OP©T//^D7ug'§ñcû²ç”+äÀb±t¾Ëáp$)¥ÿúÍÉÍÕ×öLkOÅé3¥˜m¨IÓ;}—)°|2ºAÍ¢½¦tæÙ@5œ®œ´AÔ¥KúõðùE6”Á`D]Ц ^Œžî¾>>ê^ºreøÐ¡\.· —¼¾/'*§Í•‘uuʾ})Š&T_}EÝoA¨‚rwõ„†þ0š1%Ø#¢µùqu廹Y\»V:mšŸÖ[sæœ súã‰ææ,Š©TÎåÞk-R©€žZ¦ohÔþ[EQ™TªÔ¼…F"‘kåðþ6õàæÆûûÛ–hs³|ôèý,sÙ²¾¯¿Þ/4ÔeêÔš‰¶ü³éÚz % 5_K¤R ˜ &|°À‚yï—ÙôÍÆî ;¸ÿ;O:M))W§.QH€Í`µ-?­=ÊÞÞÎÑÑñÖíÛ£F ×zkÝ|z9>:fúwí+—¿Áçñî…#€A0œD"ÑÒå+XLæì™3æÌšÙ# `å;k E“0ƒvæÕ·ÍkÈ/(hjj ÐyÒ …æú¯‰ô[RúÏILÜŸçÔÌ—Ë£ÿ"­ÞIÏWtp‰LóDDŠ¢D¢ü"bØ!§#Ï©-OŸÎª (ŠÃáP%“ÉÔÏt•Ée@ÿ1t­È§¯2M‰Mçá¦Ô¶é1Óÿ«TZ=$˜ÆèÉÒY\.W&—kvÝô]—õœL&3>!Aë»)E¢;ii³gL7pýÒ;t¶=0¡<%§Ï”b¸ŠÖ¤‰@{¾Aa7¨³*£nðþ±mÏóCÿl€¨èh‚ &N¯àÙÛÛG]º”–žaøb3räŽ_~½™’R\RbogÒÜÔÔ¦K^Ç—0Ø€;¼“o­GânÛŽA’‚O?{{ù¤I  ›-êߟþ'U(”çΑ\®úS˜ìqDQª_ þçŸÌüüFÍý/UU‰'LðkHL¬T¿›PnaaæâÂ7³¯¯uyysAÁƒh¯_/7=cmKôÆŠÒRá‘#³ßx#dà@G&SÞÔ$3=Ñ.Àu¶’èoîKÿSÈäç*’¸„™VÈø¦¬ÛÍÙàÇuîšLR5iÂøóQKËþsún$%ÕÕ׬½à»—§0™Œô?…BÇápÒ22ª««·lúföŒé={ô (J(Ô1Ùn £¹U©T¿îÞcmm5tðƒ5ß4{ä¼üÍðwRÓ4¶S@½Žœw7W±DR\\¢Þóîú }öyg—¨C<^'‘¢¨¢âúD0xúZ¢O_zf¦zOZzÇs°·7šnGÅfJmwl>õ1ñdiqws«©©)+ùÔ´ôÌ•Q\sóñcÃ=VQQ©õÖo»W*•S&O¢_ê¼~Ûy¹=%§Ï”b¶³&z¿§»ÁG­l*B‹ºt),4tÉ‹^šOÿ[ýÖ ƒqéÊãmïààk1qÑ—¯Nžø ©T¶õ’×ñåäà¡ TÎCï䉑'Õz@Èåf§O›>mvê”ùîÝÖ“&±/_VîÜ)c2)Š’ûùQƒq7l ‹Š …*/ÿæ›ÌÂÂSÕÃÜú+•Fƒµ6ÛZM®^ÝÏÉI0kÖñ  •J•\NFE¾ýö%//«¹s(Š ²0ÀõãcÊË…EÅÇ—íÚu{Á‚Þô ´ÒUß;q¢·“ÿí·/ÕÕIT*êàÁ».€ÆŸî4ëD©Tiío[¢vv<Èʪ”J¥2™|çÎ[™™µ2™R³òÛPEm>j±ø*EQê™:?ŽÓ ë€ ù‰ª Ež°üÍìß e5*•êÁ”'EÀÏåç¯7gS•%.û¬èÐhÛ^>f]VŠùóž·³µ]ûþ†ë7I’T( ‰‰›·nsuq®³»›[ïààwü\^Q¡P(JJJ¿Þ´¹¢²R¥RÑë­çH¥R¹\~èÈ‘‚ÂB¹\¡Îý×M1´,‘B.¿w-6îZl챓§V®^“tóæëÖ1è9qв¶¶Ž‰§W;uælNn.¥Ñ=–š–NQTaQѯ¿ïéæêâ¢YMêíÐ>}ÜÝÜ~رS$Qu>êâÍ”z|Û%2êÉ;‰@ccãý“wùêÕÍßo‹Ÿ1meìôiþš—Þöñöî´ó×]5µµEÝIM;züÄÔÉ“Ô]zËÚÔQÉE§b46}çÂhm·*Ÿ-º;01ŒÑ“¥³6† hkk³yë¶Æ¦&•Ju>êâõ7º²çT©T+^_&V­}ïʵ¹\NQTiYÙ7›¿;yæì[o.·³µ¥ô_¿Úž‰ à)9}F‹Ù¶š4±hû§*vƒOJ7Hi|¶-Ïý³5+;»°¨xÜØ1 æN¿¾}£/_4 ¿‹‘$ÉqcÃ/FG§edL7–jë%¯óËI¯à`•ÓæN:Èã|·mCƒÕ¢E÷b¨‘‘Í!!*}[¦R¶{7gútû~ýHfU•ª_?ùæÍš-Ìp•§§Ù–-¶£FÕ8a8ªGG²DÊÓ§ç.]zú…N±X Š¢H’ uþã) I×ÒöíÏLŸ~(4t¯ym­dìXŸ>LQ u¢µzoƒ¡úùçÉóç ÚÃç³ bÆa?ý”xÿúy[OOË-[nŒuàĉéêýmK4$ÄqêÔî/¾xÒÏϺ¶VæüÜs©îîü¥K{µ¹ŠÚs Eix¯€R*•»ƒÞœžòu¿”÷ØVUŠÆ~–þ›»/¢dÚw°Ìt<#cÉiTн¸[º/Q*•]YŠ·~÷é—_møø&“IQ”J¥ ìÞý³O>"ÔÞ?J¥ò“7¬z÷½ù‹_¶±±©««ëÔcõÊEuïÖmÔˆá>ÞèáîÖÐØÔ#0`ôÈ'Ïœqtt˜>uг“ÓŸ/½ºüÍ­›þ§/í²4 …Ÿ|þý’Çãö ÚñÃ÷Ýüüèû‘`Ñüùßlþî……‹Y,–¥…ÅœY3ó ÔQ…½fýûæææB¡ÐÅÅyͪ·Õû c ?$>Ú°~íú 3ç½(ð››–,Z8g挴ôô,‘‰ž¤“yùê“Èd2ÝÝÜÖ¾³zÒ„ñr¹ÜÀéÓLKs{ýÚwßY»nÞ‚E–––ƒ xyÑBt5>>ï[½·™)•J#±éÿ06\ÛÆc¾Ÿ1/='P¦„1|²ôÕA®_·áãOfÍ{‘Ëå2ŒW/:pèPW6W6›½kçö/7}ûé—_Áf³år¹µõ'l3j$}c-è¿~ ¶=“ÀSrúŒ³ 5ÙŠN }ße±„Ǽl]*ºòl¬‰¶Zk¼xùŠ›=tÐ ÍI’ =*!1ñfJŠá‹qİ¡[ø1´Oú·²m»äu~9éÔÃ@åtx'ßZDNVZL\â‚ Šˆˆ0 ="""&L˜ÐÚ£x<ž¹ÆsKé&(‘H4¿‘3 .—O•—ƒ¯¯²oßææfŠ¢¬­­¥R)ýé¥/ pY,Þ•+”BQ?lÁfë Ö*‘‘‘ZMƒÁàóùùùMwîT‘$`׳§H$RßàÁd2ÍÌx11%UU¢€»Þ½í…B!]|ÍÊ.—Ëf³éµïØl¶BÁºzµˆ$©#<ù|‚Ãá444€BaÆb‘A‹Å¹r¥T¡ ‡ sT©8êýmKT $%U6Ú÷ìi×Ô$»x±( ÀÊÝ«u”é"##  u+ †ÖâL&ÓÊʪ¹¹Y¡P0 ®€ߘU.«÷å9÷øh5Ñ"Eí€[ë.‡}îηk¸kÅæ³ê¡ËÚ°0C›K÷[HYyyvN®JEz{yùúø¨[ˆVÅ2 w;5µ¦¦ÖÝÍ-0 »úb™wï–•—ûx{ûúø…¢Ää$O{{6›}3%E¡PöéÌb±ôÅ É”N€ÃáÔÕ×gÞ½kaaÒ»70™ÌæææŠÊÊ//ݵs»““ÓŠ_Ô IDATí;w‹Ð>½år9I’šÅ¡ûh:*‹Åd2“o¥ÈåòÀ€î¶66‰¤cKdÔ“w-,,Ø÷×V¡+\¥RI¥Rúg'úNh¦ÅápÔÛl6›cnž’r»®¾ÞË˳›ŸŸ)ý†&>ŸÏ`0èT˜L¦‰±µª¶[³­­­P(¤‡ {ÆÆF £aH’4p² wÝ*ŠJ¾yK¥R……†p8u×Ý*íl®<¯¾¾!3ë®T*svr¢ï£†ëô·^<5§Ïh1ÛP“&vmþ8쟠nPópÓSÑ̳sÔ*mkT<¾¸´Räp8|>Ÿ®=#AÖÖÖJ¥’ Û•JÐùåÄpå´­“7ñ‚õòò2ðnDDÄ#1ò?~|'El6› •Je`šH_zõ9úóÀĨ ;wîÜ#[“L&“þE2ùß+Ó‚`±X ƒ$IÓ‹Oÿ¹è§ «÷3 JãïdêzÖÚß¶DÕ‡$Ig@g‰LwîÜ9è¼Vj ])j¦¬?ßë£Þ\Oú1ô-7mH¥ý¥0ÜB´è+”³Óá—›f¶)ŠRO„@EeÕÂW–nß¶µ›ŸŸŠÕÙ ‚P*¬žÕ•%z O¢ÎÓGÓLKs»mý†>퉭3:ÕÖj[¨¯ën•ö7WƒÁb±@« ™rývTÛƒ'ýôíZ[“Ô“«a7¨éqï;$•Gá³UŸÖö¥m¾ä[~9¡é«œ6tòôŸBŒ2:ò|œï¶5úâoC­Z6%ª‡«=5©T* \´Eµ¡øEél©ZW‘:ŒÖþ¶%ªÙ5ëË@t^+5PFõíXíñÞÅìñ~lì#ÈÒÒbÙÒWìíìvFB­†×/B=¦žü9ϧ Ödçy(ukApÞrž$•JUÆ÷l"l!4.—;oÎì¬Ø®„'=F:£¹>Ö×/êØ ¢‡ªkàÈó‰‚5ÙyJÝRÿ}ºt‡Dر=¾:¼b»žDô館ßëuìQ‡ÃFÕ5ðn[„B!„B ç<Ÿ(X“çɨÛ'£O9<‰è1‚ÍulW¨Ãa£ê8ò|¢`Mvž'£nŸŒR<åð$¢Ç6WÔ°]¡‡ªkàݶ!„B!„:×ßóär¹R©”Ãá<ìŒt:™LÆãñ:/þ§§&»}Ö(Šz¬ëöÉ(ÅSO"zŒ`sEÛêpبºØÃyúùùݽ{·{÷îOöù–ÉdYYY¾¾¾—ÄSR“]Ió¬=¾uûd”â)‡'=F°¹¢Î€í u8lT]ïá]—Ÿ/kOüúüúkÅ?”uFÌpû¶(2²žÅ"X,‚Á€ü|éúõcÆÜ).~P–Ž-šfq:¯ÒB!Óáœ'B¡öúè£ÂˆˆªŸ~ò›:Õ®Q}ûm‰££Ydd0—{ïo£“'ÛΟ÷Â…úñãmÒÒ ¢ÝùÕ!%E$‘3ÍÒ’ùã~ê—99’9s2—-Ë9y²'AtlÑ4‹Óy•†B™Gž!„ÚeãÆ¢ß¯Ôv–—˨./—{y™ÏžmïàÀŽo®¯WNœh£süx­›',L [n®´wo¾zØ cÆXaU_¯€¸¸f__sWW3HLl>q¢f̰çóYY’I“léh{÷æK¥Ô¡CÕ25l˜å„ MJFE5ÔÖ*œœÌ¦M³óõ5€sçê ¥R©êï¿«fÏv8r¤¶9}HBB³X¬5Ê Ž­ ÔÖ*ªyç7;;vË’šRiþþÜÏ>óZº4;6¶ièPK­¢µ*•´4ñÑ£µb1Ù»7æL{‹Ð*Îõë;¾æii"‹=ÚZ}àÙ³õ\.cäH+‘“$uòd]r²Á  ²Ð¬C„B¨ ðn[„Bm÷ùçE¿ýV¡5ì¼yS8jÔíC‡jÉ߯9òö;¢ü|é²eÙMM÷&âJK寿žS]­ÐŠÐߟÕpöl=IRêû÷Î믽–}áBìß_ýÜséÉÉ¢"Ùœ9\´iSÉý,ÿôSùÂ…wëë•wïŠ/ÎÚ½»‚~ëÏ?«¦LI‹o‹UGÖŽs'5UññÍ¥¥òª*ÅÙ³õ õþûù ÍêÔ¨þå—rzûÓO‹víª˜93ãÂ…¹œÒYR«nüx33†ú¦euÑZ•ʱcµ&܉mª©Q|ðAáܹ™$Ii‡Ž9!A¸|y®Ry¯V•¯½–•%Ñ9EÁâÅYkÖäWTÈss%¯¼’ýå—Å&– !„Ò ç<BµÑW_oß^nmÍ4ÈR½“¢à­·ò ²üí·nl6!«æÎÍX»6ß¾Àuëò##ëg϶€#Gj¬­YááÖZq~ðÇ‹/Þ]²$ËÞž=|¸åˆV£FY99ýç·£B!ùé§E¯¾êòñÇž”$œ:5­{w®:ÀÉ“uÑѽœØð ™'OÖ-Yâ ¿ýVñ⋎›6ù€BA r+2²>8˜ÿÑGžUU ‘ˆüý÷îFKýï¿5‡÷ P̛ٲ¤gΛR{l6áæfVZªû˜¦¤ÒÜL®]›¿p¡Ó_x@Zšxüø;.4è,ÎŒv?ýTvíZ=y{ê=]l7}zFËÈøÁïÂ…†}ûGŽ´€¯¿.>|¸öý÷=L)B!¤Îy"„j‹ÄĿߝܵ«;ƒkÖä©÷§¥‰rr$«V¹±ÙðxŒ×_wIIÀðáV'OÖÑÁŽ©6ÍŽ£Éߟ{íZŸ?þ˜2Å6%E´jU^¿~·Þ|3W"Q©Ã\¼ØÐÔ¤|ûmWúeX˜`ذÿ,ÜúÜs¶ô°zöä‹Å÷Ž=t¨ÇgŸyÑÛr¹Š ‘H­4mš]h¨À@I”&FÅfêIÈ6¤ÝØÜL®\év¿¤¼Í›}µFéj=zð¸'NÔÒ/­?Þ¦¼\®3òÆF›år¬[ç‘bj!„Bºàœ'B¡¶03cìÛ&P©|–.ÍÞ»·ê¥—€^FuåÊ\&ó^H©TÕÕŠ)Slß{¯@($‹‹ebzî±%6›7ÎzÜ8k(,”íÞ]ñ믖–Ì/¿ô¦ÉìíÙVV>ÂüýÍ«ªäê—®®13™ÄT&' ss¥yyRÍzMçæv/r%µ¶6é㵪J1b„îß…š’Ja¡ÔÒ’©cÀóÏ;HnútûŸ.ÿ檮N×üÇÝõEniÉ\¹ÒuëÖ²;Êûö„‡[Ï›çhiÉ49B!dŽ<BµEïÞ|zq É“mg̰߸±pøpKoosz óÁÁ*®®fNN¶k׿Ÿ?ß‘!öó3ïÛW g~¾tÆ‚Ï>óöó»·º—gãF¯²2ùùóõê‘'ƒAÈdÿ4*ÿyÉÐuCOs39nÜ‹X¼Øé¥—œ‚ƒyóçß5¥¤Z‘÷§i ”Ô”h32Ä Jzb³%SRáñdk–ã6Íî믋cc›²³%ìQ£¬Ïž­ÓùºuK—:_¸Ð×´ukÙîÝ•.ô²°ÀÁ'B¡6»mBµ×—_z[Y±V¬È%Iª[7.ðxÌ!C,éL&ÓÄç3--™£FY8Q{äHͬYö-ã±µe]½ÚY¯µŸ¢@sÌãçgÞØ¨ÌÏ—ª÷ÐwóvãFsY™ü?^{ÍeØ0KkkVs³Þq›æthf¦Dg%5š’¤>ÿ¼ØÖ–õÌ3FÖŒ5йHDæä<ÈÞœ9Û·—ë‹ÊÓ“&8y²îèÑÚ9sì ½‘çäH¿û®ÔÚš5w®ÃÖ­~ÇŽË4W]B!„Z Gž!„ÚËÒ’¹e‹or²pÛ¶²nݸaa‚O>)¬¨@q±lÕª¼ÂÂ{ëèL™bY_V&Ÿ9SÇÈÓÊŠ5uªí–-¥ÿüSCÿ8S$"÷ì©<{¶nþ|Gu°1c¬=<8ë×…$EÁž=•ii"ÂØ+é;`KJd RÁ¯¿VdgKd²¿óT6íìØçÎ5пÀü믪Œ ±Î —T‹L¦:{¶þìÙú3gê÷쩜:5ýêÕÆÍ›}5ŸÓÚT†·òö6ÿýz}èP͵kM¡¡|­âhš1ÃþرÚäd!}_®¾ÈÅbòÛoK¨¦ºq£<3‚ 1Çßó žêê;´]¹ïr¦œëÎ+Z'Å\]r3+i_]eaiçØo¾“×õ»×Ï|ìê7Ò£û˜L±,/¦ íä)_µ|Ë@›i3‰¨&áÌÆ°qëVn¦wrƒgà87ÿQ­J«4ç2©”yާ_ÖU¤ÝMü»¶üŽR!ã[¹z„wË`²éwIR~ûÊ UYƒ§|ÅæðÕÛæ<(ɾ@¸wm4}šê ‹2ÏYªóÝ«GV«H8yõ¯,¼Aƒ_vp iUyB!„PÛ´eγ¶,µèîy‚Á",‚`4ÕÄŸúàØŽg„ %ž¿Wž_ž«¹çú™o]ÞæÞÎagmyê‘ÃKs¯¸úï:Çœgòƒó.¤(¦Ÿi®+hOüú¤Çï¾}m{gÄ ¦ëŽ-šfq:£ÒRc~>µkFcm¾GÀXW¿aÍu…göÌMß­P|7ª±&·cm®+(̈l¹ßp›i3…L”ŸvR.ilÕQE™çkòZuˆ\ÚtýìFG0úåk;Žÿ<¥²(ÑÙgˆOð3Ž áì§'~™"n® d&D¤ÆþbåàÏd²5·éw3öÒ× Ñxô±´õ*ÊŒ¬*NÒùnAÚ)Š"­x–.ÖŽùi'Eå­*/B!„j³6>ÏÓŒc1bÆõËÆšÜȈùчÞ|ö•#Ó³¼Î~šyã¯3·úô|¶QÝŠÞ³p˜òê ›Kïñzæü_‹K².zŒ÷ÞM‚è”{›kÊî(å¢Îˆ™fô\wlÑ4‹Óá•VSv;)ê¡£V=˜ô‡Ø“ï'žÿʳDŽVÍvÃm¦‹3Óiñ»ÜüGšóí  ýtRÔÿz {½ï˜5ê³V_•unïK,›üò¿Álª+pp é;f hn€B.5–Ú8˜,}-éÂ×ÿ£ó]€ñ~½§€gÀ¸›—6wP5 „B!ãÚ8òÔbeï7pâG—¾QQïì=˜Þ)jªÈ¹uHÜTnaãé2“Ë·€ü´“ö®½” YnÊ¿$)wñâ0NCÄM•é§™,N÷¾Ï[ÚyçÞ>VUœhη {gqïÑä ÕYù©'$¢ZK[Ÿn¡³8\ÃÙ¾q„­agËì¹oÎÿµ¸0#’Í4VçHDµYÉ8\Kõ¶Oð¶¯$û’{·Q¦Äã4ÉÀ•âÞmtìñ÷jËSí\‚õU;B!„êz6¡ä0ŽÉ4SßÈZSšrtû¸ÜÛ‡åÒ¦ŒGW[ž I翾smgÔ¾—e’Ɔªì‹û_ÍHøÃè!q§>Œ;õŠTä§<ùÛ´‹û_ËHØCQªÌ„ˆ³{æR*%Ý=|çäÂŒsrICZܯG·O6–Èpâù¯Òã×vêÌCS]~ô¡riFÔX}h…DX­¡•½_Iö¥¢ÌsEªwŽi¯È,ˆþçÍ’¬‹}óàéݳ«Kn ë‹##^Hˆüìæ¥{3Š*'+iß©]3+ ” q^êñc;ž©«H€ŠÂQc¹¤¹ª(óœJ¥ˆ?õQUQ¢:õœ[‡ÒãvÑÛ7Î}•q}ÏÙ=Ï—d]$•r}µÝ†s­.Z«RÉO=qâ—)åqaM™‘ó)ŠÔ*sUQâ•ÃoÓgäÒÆèCo6Tgˆ¼©¶ öĺòü8Íl+âò¼kþ!³´&͸|û×ÝÑv–d_ºtà5…¬¹¾23jÿÒÌ{éýÚ˜VÁSc‰Œx±¢ðº°¡øÒew“öé¬ImF_«3ñr€ëg6&D~.Vç§<ñó”⻌–â>*jß«±'Ö‹›*kò.x=)ê-3_QaëÜê*3›ë úÏoÌÍ”…gQFdUqRsC±L\[”y®,/F½M*$P”é8Á”xÀà•Â`°\ýF¤ÒYá!„Bèaé˜9O`0X|+WacPW¾ãì5pôÜ K©GFÌ;ùþ³K@Aú™éËÏqŽpþÏ…é§{ XhøQcùÔ×N2Yœúª»ÇvL wÿ‘,kn(á[¹^?ó‰gฑ³~ ¦T\ê·i7/~;|ú¹MŽÚ”û ‡kíì5Pc·î<Œ›wòƒâ»üúÌ€¼;Ç8\k÷+Ðô»îü_‹.xÍœoçê;ÌÅw¨›ß (…\”xþ«žƒ_î?~T—Ü<µk¦æ¼œžÊôë¿wïû<½DJ¥üwÛÈ¢Ìó¶Î=û_"¬VÊEcžÿÅè9ʽ}tâ¢ön}¨s{çë«m£þ{®Û’ŠB&Œ=ù~@¿ùƒ&m€ºŠôã??[œuQgq|{=w'fgY~,=y[~|{O;óû}E°qì>îÅ=ZžÂ†R’”[Øx-`}eæ´åçèÔs{çfœ ìÿIÊ ·1uÁÅÍ7/}×cÀ‚7@}ÕÝ“¿>ÇbóZ&d ÍxNÐÙêÎ~jôr ï‚–ˆj¦½ÉáZ“Jé¹½ ®ŸýÔ­Û(ŠR½RkòJ²/ŽŸáê7’/~›wû¨Ö$$”åǨ—çiªÉ;çž:ëÓÖ¹gCMΈ™ßK…5Mu…c_Øq'7¨·IR^[‘æèÑ· í´Ñxèm}W 8¸…ä¤3xŠB!„PëÈÑ1˜lJE@]EzcMnŸ‘+ °Ø¼à!¯Ö”Ý¡ï;õ ~–þ¾¶ÎAJ¹Äè!ÞAÏ0Y°¶÷Ÿ^Sé€YÙû€R.®)¹%j,ë3ò-z:ËœgØÿ%zˆÒRUIrFÂcæî$"æø:õ~}yßaôý±wç˜Oð:Œ&+{¿+.…ÏÛå4¹¦ìv̱µÿlzåð*¥B¢Sš-—6õñ&ýÒÁ=ÔÕwˆf$:+žY¸oàÄémR)'€PÈÅ&•ÿD>ÅÞ­’Òµm õ¹n[*¥¹W2aŸûw½Ú: úµÖ(]ÍÆ)ÐÚ¡;=&€üÔÝÇŠ›Ê ÁÌÜÒͤ֒Qô‰àðŒÜƒ ¾½¦¨oܵq RÊÅ`´© ^œu‘R‘¡÷Áhã ïWÄÚ ‡k­¯Õ½èCz~…õ&Ë½Íæð)Š4åJé;fMР%%Y+ âS®ü˜‘ðÇsËÎhU5ƒi¦n½î! «$ûRËLÊ¥MUÅÉôv ¥ª(L4ùóVÅc`Ñc©Ó¤ÎÍhφB!ô´+,ìh:æn[Š"Ïeγ¡(oíà,3ž³÷ úÁ`–çDzÍtOδíMVv>P]’¬ÞSU’Ì6ãë»SmФ®åÕ#«(Š43sK7¿áé§óîóë3½e<æ<›²¼õ".šuc¦ñ}ÝÒÎG.mlÒxFemÙ£¥«*N5•}á·žƒ_qñÂáZËeB}U7ÁÖWé¾ç°=µ­u® 0Š¥­·B.Ò|lfdÄ‹©±zª*°öppï[~:/õ„ÈL‚`´©„_ï¹·Ñó¥j¥9—%Âj͵su2½YÚz‹›+›ë¤RUœ -m3F[aškMU&€•¯)¥¨)»“ry‡kå2kØ´o'-ùGØPRYtC+~®ÀAvÿ‘¡fæVÞ=ŸÍˆÿ]ØP¬,ñÂ×*R6Oo>‹“ì]ûÐ#áöÄ£&—6šq,˜,s£!B!„P—iãÈ“$åE™çŠ2ÏeFfÞØ{j×Ìò¼˜!S¿¡ŸaeïïàÞ÷Fäçô“ß… %׎¾Û\¯ýURSÑdëÜÓÁ-äFäâæJ¨,J̼±×?t¶Ñ§Aš™[}nSuÉ­ÛW·΃wÏg‹2Ï‹Ë}{똙[ù?›ry[nÊa¥B ¹8óÆÞ¢ÌsÝÃ^Ps÷%°v?õ¡B. 2oì­«H'Œ=ÕŒk †R (UzüîÆšÍi4õhÓœo[œu¾7+y}e¦Î[UۆϵRqõjaãúc…L¹·”çǪ'QUº~AêÛë¹üÔÕ%7ýCf-BcmÞåC+Êr¯jEÒ{Är®Àá\Ä‹¥9ÑEªHEiÎå˜ãï ¬ÝýûÌ4\ÓÛ˜gà8®À>æØ{2I=•{ûHiÎå–šÒf ·:ÃÒâwÓ#̆êì¤ ÿó+°v7¥J…øfô–웇è—UÅI þI§š½[Ÿ†êlõËÏ|È6·8óûœÂŒ3ôD›ë ¯}'+i_¿ñïXØ©(óœW íG­¡:ÛÞ­·ñ B!„B]¨kÛÊ¥M¼Fo³Íøî!þíäÙ_`äÌ­çÿZ|hëp®À^Ü\mïÖgФO ÇÙ†C4 ™úÍ…¿ÿ³e‡k-×¹ú ï;æ]StõØÿ¥”ËÛÜ»2Ï€qL&ÛÁ=T`å¦3žÁÏ~Ád™_;¶öêÑ5,6W©0™ì^Ã^W/¹ &{Øs›.xmß7!,3žÀÊͯ÷tͯï:9¸õñ µo©•½¯TTkïÖÇ+pBVòA [ï ‹Öî©1;íxfÒËÿööFÜ©nÂ`²9æV=,МWÔdzm=×èK…`°†OÿöâþW÷ý/ÔŒk%×÷þ&½Î°fq4£ò ~öFägN^ý-m½ŒA*ªËO;éèÙŸ^UÅæMXðçµ£kÎÿµ˜Á`QEQ¤Kðșی¤Áä6Æd™{îчVìßÔeÆ#FŸ+2tüžÐh›1Úê è9øåÓ»g³9ri£¥ÏÀ‰Ÿ˜X g¯ÝBçÆžX—õ ȥ͡£ßÑZ(\}‡Þ¾ò#¥R ˜ól'¿üoì‰ —¾A “M*eæ|»aÓ¾5<ª/͹:zµúe›ãQ«.¹éê;Üx8„B!Ô…ˆœ¬´˜¸Äìц_CQ*eeQ¢DXmaã©÷7í>DIÊ+ ¤¢ZK;_{×^­=ÜpäÒ¦›š´ÑðZ8Rq]uÉ-¥\ijt±qì®^—E*ªesø &[©©HyEA‹ÍuñvåðÛ©=w§ÑŒU—$ J­ümz(dÂҜ˶ÎA–v>*•²4ç2¥Rzt'¬æúÂÚò43s+gï-à5¥¤­EMßÍRQÈÅ•…ñ¤RnëdaãIïÔ,ŽLÒh æö¡±6¯¾ò.E‘Vv¾¶ÎA¦hz“K+ â)Jåì=ˆÃ5´ ®¾6&·:}šë‹jÊnÓOb0Ù­*EcMNCu6ƒifç¬ï®õc;žé¾Öã¿O5•×–§’ )ßÊÅÞ-Äp#T‘Šª’äÿ>ܨ-ñ¨ÉeÍÿ|7xú›Q-ó¼÷ó€!S¿ñë}ïW¾{6úŒš½Ý;h¢)Ñ"„B=½Lû§——¡{Ó""":ìyž- –³÷ Î>D“iæê;¬Í‡ÎCöÍAxM2|¸9Ï֣ţ>áþ¢¢¦Š¶ Vß7W”fG÷·Þ”Œ9¸÷¥F6GàÝs2½Í`°<º‡«ƒYØx™rG"´»¶Õ /[j ¶Ͻ›v]iÇp̆#7ÌÊÎW½®O«˜ÞÆÌÌ­<'§¿Í€É­N Oõ^“)¥°²÷§Ób@Ðà—snÔÊ<ßÒÅÀ³ZL¶ÎagkãQË»sÌ#`œÑx#„B¡.Ö‰#Ï'†°¡äìó„ ¥}F®0å9 ð-{ {ýÊá·²od2Ù•E7¬»û‡Ìꨬ¢'F¶ºÎãßgfVÒþºŠôVÍw’”g&ì7ÿ}R®l»›ø—›ÿˆÒœ+]™1„B!„#OãÌùvÁC^å 4×Ai³°ðµ>ÁSªŠ“H…¤[ßçÝýG¦ÝFˆž*Ûê: A0FÌØ"×=ìŒÜ#Õ ~ö Ï€ÁÏ~A/^eiëÅ8ú‡Ìjó=ù!„B¨µpÌc‹Í ìÿRFhëÔÃÖ©GFˆž<Þê:‰¾z ¾¥³¾a'hÞ\Ð!÷™#„B!ÓuÌó<B!„B!}Ló¤Tªü›7+óóåbq§f!„B!„Ð#bäÈ‘©#Ï‚[·Èúú)'òùüI!„B!„Ð#®Ð´§ªeêȳ"7÷Ù‰ÍÌÌäry‡$ŒB!„Bè)aêÈS.‘˜™™©TªNÍ B!„B¡'O+Ö¶Åa'B!„B¡6hÅÈ“¢¨ÎËB!„B¡'Ž<B!„Bu.y"„B!„ê\8òD!„B!Ô¹pä‰B!„B¨sáÈ!„ºÎÙsçã¯'´Ü?bø°1£Fv}~ž‰ÉÉ£/¯]½ÊhÈ´ôŒã§Nå俏»¹OŸ:¥Oï^êw·þðã€þý† Ô5y«®®Þw🬜¡Päâì4|èÐgÆc0íI®®¾~ÛÛ—½úг““éG}»åûaC0 Ui]¿qC.—:”~™“sìÄ©»ÙY2™ÜÉÑqèàA“'Md³î} Q(ý—Ÿ¿võ*§Þ¶²²€¸øë@ƒ0>%¥eWcbæÍ™Ýª" „êX8òD¡®“›{5&fÌèQZûY,fô±ÿü{X&—ÏŸ÷|g'ôH)++¿ríÚ»«Þ6ìïwþú[Ÿ^½F.—Ëß\µzÅëËfÏœAˆ‰wvv<°#O“¾¼eeç¼¹jµ³“ã3ãÇóy¼ìÜÜo·~>êâ·ß|Å ˆ6''K¢¢£_œ÷¼“££éG]ñòòØ¿ …ßÿ¸}çÛèVý×þý¿ìúÝÇÛ{ØÁ|>?'7wÛöGŽŸØôÕööðïÑc8øâósYl¶æ6}øáãÇßxõUŠ¢ŒÆ£‡»ÛÕ˜˜à  àžA¦—!„PÇ‘'Bu.·ñôö+•J¥RÙÙ©gåäH$’§®3'Âp©3ïfý²k÷²¥¯,Y¸€$I‚ –/{í«Mßnÿå×áC‡:99A‰§£ò¶û{û½»w±X,Š¢˜LæØ1cV®~'6.nèàÁíO¶•¥huÁþ{xèàAŠ¢¢¯\ùù·Ý‹¼ôúÒW(Š¢(ŠÁ`½±òí>Ù¸ýû­ £¬¬¬WÏž¯¾¼D¡PhnS%K*+«|¼½.FGG_~H’\8þÎß~ûá»Í­)8B¡Ž„#O„êJH$’–o¦edŽ3ÚÌÌ Dbqôå+¡!}\]\ªkjΞ;_]]íââò̸±666ê£rrs/F_–H¥ÝýýÇ g2™gÏŸ rws£ÜIM“J¥ýû…ÅÄÅ—–•Éåò“§ÏŒ7–ÍbˆVSË$ÔŽºÝÐÐèîæ:qÂxKKKzÿÅË—»u¯®­¹|õš›=yâDw7× /ÝIK³±¶ž2y’½)aèØÒÒ3âíììÆŒåáŠL.‹<A¡Pô :äÁ,ù֭ظxE 4( î„Õ××ÇÆ_ïäíå©YÆ=þéæê:Þób±X½ó•Å‹"Ï_ˆ»~ý¹)ϪwfÞ½u)š$ɾ¡¡C?¸óV_mD]ŠîÐØØyþ¢/Y[YéË›¦’ÒÒÀ€•J%“Éè=}Cú Ð_(ݺ}»©©yøÐ!êÀ—._qrt¬¨ª4^¥÷’SE]ŠN¹s‡Ïã…åçëk´êLªTªè+WÓ33ѧW/Í:WS(•ÇOžÚ²é•JEQÔ/»~ }íå%šÍÞÙÉé£÷ׯ|gÍå«×ø<^AQQ}CÃá£Ç,õö˜Q#¹\n|BÂÐ!ƒ•J¥ÑxFn UôëúùW_ßÍÎîîïß2Ï!„ºsåŠåÅ%e}úô1(%%ºwïÞU¹B¡'SbrrN^Þó³gµ|‹ÍfòÙçMMa}CàûŸ¶_¾zíùÙ³²²³ßXùvyE…¥¥å•«×þ9|$¬o¨­­-\Œ¾¼vý%I²YìMLN¾rõ__õp"âï¿o$'3úôÙÈ;ié"‘X"2$'7W_´št&ADL\ܪµë›šø|ÞÅèËGOœ9|8ŸÏ€÷?ü8=33êR´““ãÕØØ#ÇO¤gdÞ¼•bogwæÜ¹‹Ñ—Ÿ{vò†7 CÄÉÓg>Øø)ƒÁàr¹7“þÜ·Ѐ¶¶6t*µõu{ÿÚçààPRVöç¾ý=`ÿ?‡¾üf“B©€¿÷,¯¨‰Ätçäæ}°ñS//Ï@O4©TúÝ÷ÛžŸ3›>\ÍŒÍ~í•—ºw#Iþ=z¬¡±á؉“ÎÎÎEEÅíßomeн;¨÷6|(‘H¿ÿi{m]Ý„qcŸ<¥/ošn¥ÜŽOHðôðpws%T*ÕÔg'ûùú$%ßüzÓ·Ó§N53c@UUÕŠÕk† ´ãç_V©H,ú÷豂¨èhK ˤä›ûþãïëëáîn ÿ=Ü;880 ;EQïôÉácÇííìêê#þÞ'“Éú††he>ùæ­˜ø¸eK_Q©T¹yyí?°|Ùk®.Κa(Šrsu=%‘He2Ù­”ÛB¡P*•65 3ïÞ¥·èoÎáü¹oÿägžihh0Ïð¡C ´ (,*ªªªî¢a„B†ÉårS‚Y[[x7%%ç<B¨ëP±øëoµoù›=s†ŸÏ‡ï¯[õî{#† ‰Äç.DýþËNƒñÕ¦Ía}C¿þü3ƒ!W(–¯|{ó÷?ìØ¶U,÷ý¶Y3¦¯Yõ¶J¥ÊËÏqÑ’Øøë ‚¡î± ýråò7›$ñ7_|.‹õE«™+}I èöÃö£FŒøbãÇÐ,.zåÕ]{þXÿî ¢º¦æÏßw1™Ì‚¢y ’¤r÷/;)Š:dÈ»ëß/+¯0%Œ»›ë¿GMnêº5ïгg3æÎ‹÷÷ó¥S¹|õÚÁ¿öZ[Y1Œ·×¬½z-fúÔ)5µµ¿Gì;kæ;o¿¥R© ¼¼”ËåÒâëãýÖͮ..šŸh•UUr…ÂÙÉIëcŽ¢¨¦¦&Í=¹yyÿÜkiiÉ`0V®^s5&v곓 …Ú‚8õëöƒzô(,,27MË—½ºêÝ÷>Üø©µµuXhHXhhÿ°¾vvv0rÄðÍßo‹>¢.E[ZZ4ðÇ;V)“É€††ÆƒîåóùJ¥rŪw~Üùsÿ~aE*PEÇ'$ü¸õ»~}ûÀ/»vŸ>ùÊâEZ™¿™’Dß=^RZFW{Ë2*Š€nÝŠŠ‹6~¸¡©¹¹¸¤ä»ÿ}CQÔ¦-[ém‰D"—˳sr»wó¾rÕh<EéktÈgÎF¾¼h! „zpä‰B]ŠÒu·-¥¢T*UHïÞSŸüÍæ-R™ôÕ——¸»¹ÝÍÊ**.þäà ô!A¼8ïùu|ØÔÔt3%E$¿ô¼ææfpuqùpý:'G‡{þ§Ç¦(Š’H$¥¢(J$åäæê‹ÖÂÂB}ؤ$I¤gfVVUmþæ+‘HLcöŒé;~ýmÝšwèÇŒIß&êè`ãÆ†Ó!]œ€~ËhŠ¢~þq›™™™P(‰DB½ŸNe|x¸9‡Cßëïïw#1‰¢¨øë *•êåÅ‹è<;;9~5&–>ŠËåöV©T*•J]L©Tѹ cDZÙl:E?_ß”;·)Š2ZãÇõòôljjŠ77MއöýuýFbl|üõ„„¨KÑ côȑUÂÜÜ|@ÿ~W®];f4DEGNÇh•r¹æðÂós ‚‰DA¼¼xá›o¯ÎÉË“Éd†KAQ“Á€Ä¤d__6›ýò¢…¯¿ºTkp…Eîît¡ä 9пVmYŸG"‘J¥R•JE'­¹tóf¿°¾$Išý–ÎVAsvrÌ+(À/3!ô°´bä‰B¨ýx<Þÿ¾üBk§T*%IR©T¾¹ìµ™ó^°²´š;{–B./¯¨€O>ûB½z }ÇK}CcEe¥@ ô¨ƒ$ÉqácèûB2­æÈS_‘ç/¡~2EQîî2™¬®¾ÞÖÆ蟪҇€›­ù’^œÕ”0‰ä艓é%¥¥%%¥¤ÆpìííÔHêþFeU•³“‹yo­`’$½½¼®ÆÄª³Úr%'kk¨«¯oYQ¹yù$Ivïæ¯NQ=n¡(UUÕ†kÃÁÞž.”á¼iR©T‰$,4d`ÿ~,«¼¢âÀ?‡þ>pPÀç¯\þzø¨Q_»Y,‘TVVææå¯»7-iR•€‡»uÿ÷¥ô}¶ÕÕÕR©L_)Ô¹rww[²pÁž½îÿçPP`àÀþýž™0^Àçke¾¾¡>¨G ½M×@MM­]‹¹éý66†nÍŠ»N°MGg«  ¹\.‹y<žDBuœóD¡.DQ@OâéŸ Kš›…ÉÉ7ƒ{ÑËù¬\þ_ý]™Áprtàry*’ÔjªW£¡Wþ¤· ü·§×JÕ­fH}Ip8Š¢d2‡Ã¹·_.’$5fÖÎQ©¨ÿfL #‰–._Áb2gÏœ1gÖÌ+ßY£Y–– ®RÅårer¹æ”&gaöövŽŽŽ·nß5b¸Ö[ë>ø000àSµˆ[¦hzm˜˜·Ò²²vì\þÚ«îîô_,‚åË^«¨¬ŠOHXñÆ2úÉ–qñ× ½<=ý}}ÕçÈp•Ò/5ç¥R)ðx<ú]¥PK’ä’… æÍs-&61)ùÏýû?ñËO?h äØ,6½,-0™Ìø„õè]M(ÝIK›=cºV-©·)ŠºzçíË)Š2=­‚ÞPÈÀÔ3qŠB¨³µë™Ô!„:Pccãæ­Û–/{íÙI7mÙ*“ɼ<=€Édô  ÿ)Š˜¸8‡ãîæ*–HŠ‹KÔ‡¿»~ÃÁCÿÂýÑ-/¿ eB¢Õ ¦/ zÙôÌLõþ´ô gø™Š­•–‘Q]]½eÓ7³gLïÙ£EQB¡ÈèQînn555eååê=©i醡(jÒ„ñç£.––•kî¿‘”TW_¯¹€­N¦×†‰y³¶¶N¾y+>!A½‡žU©H€gЀþWcb¢.EOš0Þĉnµ;©iÛ©àáînJ)²²³Ýý;PTøèQ֭ݵsGEeejºvlmm›š›ém®¹ùø±á‡«¨¨Ô öÛîß•Jå”É“ôå35-=¨GöÇ£Ö, Îý™a„B]¬#O !„Pû€B¡¸§õïfJ EQ›¿ÿÁÝÝmÚsS—¿öªL&Ûµçw7·ÞÁÁ?îø¹¼¢B¡P”””~½isEe¥J¥ íÓÇÝÍí‡;E"EQç£.ÞLIélmm¯T*)Š:uælNn.¥1 JOĈV3·ú’ðñöî´ó×]5µµEÝIM;züÄÔÉ“èõ>/´>A@c^Îpk++È/(J¥r¹üБ#……r¹B3ŒVE 4ÐÖÖfóÖmMM*•ê|ÔÅë7n¨—|þõ7‰IÉZçeþ¼çílm×¾¿áúD’$ EBbâæ­Û\]\Æ…‡ëÌ$uÿ•ÑÚPe8oj|oüØðˆ¿ö»E?U,–;ùöî;®©«ÿø¹„„°APDp#ŽºÅ]ë¯ÖU­O­£ÖÖÖÖ]«Õ¶v·Ï£Õ.«mm-vi­uàÆ­€8Q©€ÈÞ Ù¹¹¿?.Æ4B‚€Ÿ÷ËW{ssïßsîIwäй &MœÈ0ŒN§9üBl\qIÉÈ‘u¤Î² {þù'9%…a˜ìœ{?ü¼cØÐ!Þ^^fj¡OH¥VÿòëoGŽW©T2™ìRÂeBH»¶íŒÊß5,4;'‡]Öéto¼ºP,/[õÖ¹ Õj5Ã0yùùŸoü"úÈÑ%¯/òôð`œ­)áƒåØK—† Ò°tLô VvNN×.aFêՠ饸ڠé0„ÈåòõßçôÌÿM¸|õê¯?oW)•ç­•+Þz{íÁƒÖ¿³vÙ›oÍš7ßÝݽ¼¼¼[×.Ë¿Á0 MÓï®]³jÍÚ©3Ÿ‹$U’çÎéÖµËÜY³>ßøÅæÌãñx.ÎÎÓ§MÍzðT_Ÿ_O~yÑë›ÿ÷_SÉ–ÊTZ­vͪ7W¬Z=sö\—ªªªýûÏŸ;Ç`÷š*ÆàË?yp-CK¶ éÜ9rØÐµï½ïßÞ¯²JÒ%,tÄðaÑGŽ´iãýài¥‡f.E½³fõÚ÷ÖO›ù¼P(äp8/Í›»kÏvK©TræÜùž=ºG0Æ?­ñÍæ/>øäÓµï­çr¹ Ãètº°׿K~üÕúf¦þh<ØË|Ù Ó\±d±ÀA°aó—ÿÛ´Y ¨T*7÷…žù¿ ìõ±OôëÇçñºwïæîæfpù®%a'ÿ™1céÊUNNNÕÕÕüý—¾¾ˆ=kj¾ ÃôêÑã™§ÿ¾Þ¾ãBˆL.õåþíýŒNºöÿyç¯Z­–½¨›Ïçoߺå“ÿmøà“O)ŠâóùjµÚÝÍmýºµ##‡³ÕÑga¸|åê5ÃXœN½‚}•’šÖ¯O|™xT¨Ìôä‹qWfÏžmf£¨¨(Bȸq㚪T­“H$rtt¬½^«ÕªT*‘H$‘HØïñ|>ßÙÙY"‘èt:‘Ht3)©´´¬½Ÿ_XhˆT*e¿=óx<.—{íF¢Z­ ñpwW( ¼¢"5-ÍÙÙ9¼gOB—Ëe¦Êçó¯'&j4Ú^=ºóxŸ}Î*ŸÏ×1̵ë7t:]ŸÞá@ TVV²Õqqq‘Édú{bõ8Ž““S~AAFæŽî(“ÉôÓ*£E"Çcs´<fÊfˆ¢(‘H$“Ë“o§ÈårŸ6m‚‚ù<žþ©È2¹ü¹æ¬\ºdøÐ!u¯ÎB\]] EyEEòíÛ®.®½zö¨y´¬éZ¦Ì†èÎÝ,>Ÿ×%,ÌY,®ý f÷ò¢×ç<ÿüýûéc+‰***SÓÓ”J•¯{·¾œœœ8ÛKÙåŠŠŠœÜÜNAA†}²ÞtÌô ™Lþü¼ýy{íG"€y†%4# ÀÌ»QQQ ˜yŽ;¶AE[áóùEét:£G³RÅãñ(ŠÒjµús_\.—=qÇ>^ÈûøSýOB›J¶Þ,ôë9oÕ·À IDATûT^›T³6}4M³gºè?ôÈT™ù|>!Dÿ¨ ±¡#„X’‹QŽFÃò²q8.—Ë6áóŠ!ïÛõÛïÿù;˵¼†)³¿PbÔC,©…>DFýÁÐù‹±gÎgÍ[µ3%„˜ïoz|>¿v¶"Vô‘£™wV,yÃT™À”Ú®­S½3O\m ÐèçŠF†©ý–V«5õÜèÃÃT²õfaf½mÎ=†±ðÃÏò-˜ ]½9Z ËËVçì·¨¸xÕÛëŠKJæÏ£ÿ–†25¯¶¤–„hdäð}fÞ¹Xo¦¦˜*ICÓ!„h4šƒ‡ñßϺ#Ø~Ï ÅðpwŸ=ëyo/Ï'úõ«}¥k3¡V«×¯[WPXPÿ¦MB"‘®ys¥ØÉ '<!œóh1ø|þSãÆêt:¹\þ¨ËbŽ‹³ØÕ%Ä~—a7ˆ——§O›:¯Ý€&ƒ™'@‹Á0L³=Õi¨™Ì9YV\  6×€ßó°Îy€}aæ ö…«mÀ¾,=çé *•J@`×Ò@ëcéÌÓ?88---$$“OhKgž]ÃÃS ¹~ó¦ªyÿ€ØÊðáÃm’Ž¥3O)‡Ó5"¢D×&ÙÐétׯ_ÏÊÊjæ?ŠÝH"‘((((<<œÃ±×½µI$›’¾Õ!-7¶­£94"´ è®`èW`sèTMÏÒ™'CH%!•v(AÖÚŠŠñãÇ;99Ù!ùæB&“ÅÅÅ»q#0"ÂNY<&‘lJúV#„´ÜضŽZ<æÐˆÐ‚ »‚= _Í¡SY.''Ç&é4àWUì¤ðÎÿ?ÞÁÁA­V?ê²Ø‘ƒƒÃ€¢µßÌó1‰dSÒ·a˜–ÛÖQ‹ÇZtW°ô+°9tª¦÷ègžj…ÂÁÁA§Ó=ê‚ØÃ0j{žÄL"Ù” [­åƶuÔâ1‡F„Ýìý lªé=ú™'!ä1ii†aìÅcɦ¤oµÛÖQ‹ÇZtW°ô+°9tª&Ö,fžM0%{L ’öÓ:bÛ:jñ˜C#B ‚î ö€~6‡NÕ40ólUIûi±mµxÌ¡¡Aw{@¿›C§j˜y¶*ˆ¤ý´ŽØ¶ŽZ<æÐˆÐ‚ »‚= _Í¡S5 Ì<[DÒ~ZGl[G-shDhAÐ]ÁЯÀæÐ©šfž­ "i?­#¶­£94"´ è®`èW`sèTM£¥Î<ù¿þÊ;y²æE1b1ݧfút"Ö»¯ãÒ¥Ú ´cÆ44ÓæÏêÃæòå‚;nݺUBQTp°Ûüù½ö³mÙΜ¹·woúW_&„¼þúñiÓÂ"#;mcj½M,]zr„à1c:Z·»±Ý’w´H]õ~à Õ¹ÊÒw³þ\æÿ=Å&K²4ã§ ž}Æxô²¢œæYÝC’o§8t(óÎ]Š"íýÚOžøt¯ž=l[¶†:|ôXÂå+5/(J$v 3j¤@ hL²6}9dðÀýûB>Û°qôÈ}íö¼ÖiMõÛïwïfé_: ÃBBž7Ö±qØ&ê·ßïfe­Z¾ÌÕÕÕêtša´­såÚµSgήZ¾ÌºÝ­î®™™ûJËHW©Ô>mÚ 8`ÂSãù¼&úÒò˜4_Ë­&†A»jšaÐðÓ¶9hÌÌsמ=))i£GŽ2x©m9–ÚOŒÓ4Ù˜Ç4/1‘ø0W à \>Ÿ—•%\±BhDÞý¼¼/¾úúe+hš¶ý߆-ßÿ0tð`Ÿ66)Xzf¦B¡hPñ(B‰Åâ÷ßYWó’¢rïßõ%ï}ôñw_m¦ÌæÖ·ÎéãGÕjµV«µ"+jd¡ÖÔˆ„¢;6âñ˜“ëÖ¿wéÒ ,Ì˶¡ÎÏÏïÑ­ÛËó_Ôh4Ö¥Ù4Ñn:E1Y±ã™sç¶ýøÓÜÙ/¼ºà%ö‡ÃɹwïµÅK×­Ë—›9;þÑü1i>;UÓ~ãž ƒ¤5 ƒ}o2V—äBlœL&Ÿ4ñéý£ ‹Š|Ú˜èKKí¨i ÖRgž,…B¡_æ´o/Þ´‰;c÷üyíС5+óó~ÿ“Ÿ¯ëØQ=s¦ÎÛ»v¦unÃ?r„“•ET*‡¨(ÕŒÄÁÁLR͇‘üï/º-_ÞO.—ëW®[7h÷îÛÇŽeÍŸ_s]DjjÙÞ½é%%Šà`·ÿü§«‡‡#»þŸÒÃÃ}”Jퟦ¨ÕôСþO=¤OçܹûGÞÕé˜'Ÿ $„Ñ—ðèÑÔà`W??ç#GîfeU©TÚ¨¨¤3ÂΞ­YߘL/_.8q"»´Táë+ž:5$8Ø­‘!²íŽÌƒ8°ëóÕå¿]ÈW—wtôžÙfˆ7ßÕpG)­ØWš0Í{à‘òk±Ui.<ÑtïAa"ë/„¶¢;~ýÕ¯]»Y3Ÿ3ì!/Í›{ìDLÜ¥KÏ<ý'OŸéZUUuìDÌÜÙ/¸¹º–”–=~¢¤¤¤mÛ¶OŽíîî®ß1ùvJ|BBUU•§§çÈÈHÿö~„‹qñyùùjµ:úð‘±cFóy<3)1¼½¼V.[²êíu×{÷êE9zâD÷®]ÛûÕDìVR²R©ì×·L.?söܨ‘#bãâoÝrrr;jdÇ€£@¿x±½Ÿ_›{æ;§ÎœU(•!:=ŠËåÚ£FõjmÈü«#Â{BJKˆ1Õ|†y‰ÅNFùfçäœ<}¦²²ª½_»ñãÆº¸¸°»Ÿ:{6¬sˆJ­:v"F£ÑD„‡4Ш,—¯\;w¯¢²rï¾ý##‡ …BS©ÕŽ˜åÑfט/gIYéÙóøü ãÇ·÷ksêô­ädw7·§'<ååéiÉ6f«Þh\»q#6.^Ç0ƒæß:ûž%€<6Íga5IË3‡…0 ¶Ža4¥ue~´Ÿ­¬'O…†„¼4wÎþƒÑ'OŸ™9ýYý[uŒ±ññ<.¯¿¾úÍ.ÄÆ ‚~}úXwÈ×ù儘 Ž ù†j©WÛÖÞ‘¦iùèÑD pxpʘ{õªËÀ‚Ý»yÕÕŽÛ·» ÀMLdÆpGSÛ8ÄÇS÷ïS‡ÆÔfÖ»ùDR&SŸ9soöìžZ­Úp½‹ ·´tÅÂ…ìËÇï öÇ¡CY‰æÛo¯ôë½{ö­õëc¿úêêÌ™%MZZå¬YÑ߃}뫯®Nš´766?7·ú…ýüóM} _|ñð‰9 ÃÄÇÜ¿/-(>œ¥ÑÐúõVgºcÇ­qãþŠ‹+P*u{÷¦ò[bb±>ø ~G[õÒ‡+ Ã0ÌUé×ÞÞ][Í(·žpmMbuvMQ Ã0L‰F²$ó§—Ó·®Íú£„–þSziøwÎT&5Y- ÅÕ«×þï©ñì>õDBáÙǦM™Ì0ÌÖ~Ü»ïÀ’•«â.k4š”ÔÔ¹/½|âäI¹B±ïÀÁ9/½œž‘ÁîuðÐáEK—ÝJNVk4§Îœ}ñ•…é™ ÃÜJJ**.)-+¿§5›Â¿kdܦ4M÷ïÛ×Ï¿‘Xs‘óæ¯¿Mº}[¿ÁÑ'þúç†a*++ÿ·ióGŸ~þÍÖm••§Ïœ}éÕEW®]cþÝOÞÿè“ø„ËìòÉÓg^~íõ7oVUI¾ÚòÝò·VÓ4mÛÕ«6"c\£ØøKEõèÞ1Ý|†y]¿qÓ0ß ±±ó¾v!6N&—íþ{ïÜ—_),*bwÿþÇŸ~ß½{Í;ïÉäòœÜܵëßÿ{ß~£ò$§¤VVT^Œ‹SªTfR3ŠXƒ¢Í0Œùrnúú›M_}£ÓéNŸ;÷êâ%ëÖðÏþŠúçÀ%+ÞÔjµ–lc¦±ÌGãÝ-_µ:ñVRQqñ;ï¸?:Ú†`½îܽ›—Ÿ?ù™‰J¥Òp=MÓ½Ã{ùùµ»gæøeÆTß³¤<&Íga5IËS‡%0 ¶šaаÖÖ•ùÑ~¶²ªªª.]¾<~ì±XÞ«çÉS§õo™:“o§|ôÙçìaÎ0ŒD*}ÿ£OîåÞ·î¯óˉùàX7ÈÛjªÒRÏyÖ5!Œ¿?7/aÂ0N¯½Æ ¦ùóO—ËU*ùãÇ;-_^y⣟ܛÞFóé§¼ÒRR]­Ùµ‹‘ËMmf³ØHC#™›+U©èÄF;2 #‘HØeµš^½úÜĉ!;w>CQLE…zÈŸ|¿eËhBEQû÷g&&.ðòräp8Ï<ó×Áƒw_z©gAì³Ï.½öZß/¾­ÓéRSË ÚáäÄg3¢(Š¢8 Ã|úéˆÒReuµz×®É …B¿ÞºL !ßsþüÞß|3V§ÓétT×®[ÍêÑËöo:M}Î3WY²(ãÃ5•´œMMÇè^Ëøa˜G·?{­ä2”’hÇ_}ù'z¼«Ÿz²»¤Êó® ÞäΩ)úÿ®~øvÖïçz}È!Ö\MÚÐZ«5_3=„PÔ‰“'ØòM×.]ª««W¼µ¦ODïÏ>úÃá¨5šE‹—nüòëï¾ÚLù{ßþÉÏL\½r…N§cfÊŒ™±ññ‚ƒ/z­²J¢PÈ?ÿø#¹\þéÿ6šJá_e¨«F Ãøúú°7ƒB(Šp(Ž~‡cø2;'gׯQÎb±V«}cÙŠo·nûñ»-’aتq8Ã0r¹ü‹/¿š6eòÊeKu:Ýݬ¬çç¾ɶ5²PkjDBHVNÎÇŸÿ—-OqIiJjêºÕovìHÓ´©æ3Ì‹a˜÷?þ”]–H$_oÙ9lØÇï¿G‘VWÏ}éåí;~YóæJBEQgÏ_ØýÛN7WW‡³tåªó.Nžø´aa¼8O"•æÞ¿ÿÅ?7ŸšaÄd2™N§³<ÚÆ|9KJKýy;—ËÍι7söšÖþôýV†aôæš·ó -Ù¦½_;Se&¥ee?Gíœ1mꊥKt:]vNÎìù „Ba“œ÷óò !Akï¨ÑhB;w¾—{}iêø5Õ÷,éIóYRM†aÉ &ËaléàÁ:¦ÞcªÎ2›é¢ ê†E±b¯ÓçÎëtº‘#"u:ݨÈÈ ›¿ÌÎÉ èÐÁÌÁ8n̘ßþÜuõúõ~}úBο@(êÉ1£-]ÞÐCÞÔ—“Až0›ò ÕzÎyÖ¬çó‰VË0 ÷Ö-nF†fõj©R)“ɤ:vÙ2îõ뤼\¿¯™m Ûð2™Œsó¦©Í¬+vó‰¤B¡%„¸¹ ÌlsåJáýûÒÕ«ÈåÕ2™L Ð.\¡V!dúô.b1‘ËåÕÕÕ=zxËåZ†aŽϦiݺu¥R©L&ëØQôì³]ô%ÔV¡Pèt Ã1ËúL†9qâùÏ>^]]-—ËËÊ*)ŠR(hÃà74DÚ‘!4£«fT†ÿ䌊MðVõ½ EÁêŽS”Õr™L¦“«—uxúzuV¹¦ZŸ#;]~#`‚@Id2™V¦z;pZª<ï¶,·ij¡Tª!Îb±ù”ÇŽСƒD"IÏȸ—›;wö …B&“i5šçg>—–ž.‘H†ÙöÍW‹_{•mòòrŠ¢T*Ã0 …‚aj·ŒÌL3)XR#.—§0ƒÑ6†¯!3gLçr82™L­VÏŸ7'+;çÎÝ,Ã]! C†¹|õªL.á?3ÙþÜ®mÛwÖ¬öiãmÛÕ«56"Ãèt4MÓ4­Óé\]\œÅâ?ÿÚ“—Ÿ_»¾†ã†>/¹\®_NNI)*.ž7{–L&“Éd\çÙ)“Ï]¸ø°Ž£F9 ì¸Ñ©S°R¥ª+¥N§#¦ö b†±$Ú·SSͧ<2r¸J¥’Ëåm¼½!cFbkÚÖׇ¢R©,ÙÆLc™‰Fü¥N7Þ\¶«ûúøŒ=ª)GNµFMáñxu¾+ %cúøÍ¼sÇTß³¬<ÍgI5­ˆ¤åƒ€©ÃÇ[Ç0hXµz©:Ël¦‹šÏ×LI¬pòôéþ}ûŠœ†6d0‡Ã9yú cö`ìàß>(0P_ÁÓçÎ ü ¡5-..¡(Ê×LJ}É6«J¥*¯¨ðpw'„xyyêÇ ¦¾Ó,õ¦¦˜!K¢]oÊì[lú|¾áKöáY–lc¾±êŒFQq±¯Ëe š¦;œ¿k>V6ÄF ´´ÌÓãö»¥¥eîî5·î×yüjµ41Ñ÷ˆà1i>Kªiæ(¶$’õu>öƒa°¹ ƒ/ó#ÿl%„%%ßöõñYöæ[ìwòÌ™y³_0s0Ò4=nÌèßÿܵdÑkUÉõ‰>û„a+yS_NΜ;OLç‘òÍbæiõLÚhG^J )/×FD0 C¸\BˆîÓO™ý¢(E1íÛý ÓÛþ Ä’Íš‰†–§];'??ç ò&M 6zkúôƒ}úøüòËxGGÃ¥R-Öô¥RC{j™½ Ñøo! ÈÅJ¥Öð…BmTÂËÌˬ·.S©T=bÄŸ<wáˆW_íÛ»wÛ‰wfÚ˜?ÛX»#S]]møZ¡TBC¸.!äÓÐÙÎÜš''±·çx’÷y²y*iµ>w…FIásxÖ•§¡{yyy¶iÓæÆÍ›‘ƽµzÝ;aa¡v\?©¨Ý|u†‚a@À0ŒJ¥Òÿ¦«J­"„°Œ'u=SÚT0-I­ÎÝ-‰¶å)³ÿÕéŒFHbÉ6õ6VÑ …*µÚpèfÏÑ5ÙÈÊår㌾›Bªe²[ÉÉÏN™læøeWÔÙ÷ˆà1i>Kªiæ(®7’ù…a°ÎP´ aðÁ¾Ö—ù‘¶BNž9CQÔøqcõü»ï¸ž˜˜{ÿ¾—§gïðp©DbÕ!_Ç—b¶Û|o¨fqµ­mдøƒˆ——ú©§!ºÐPBˆŠÏ—õëÇþSj4ÚãÇi¡P¿‡%ÛX¾YKÄ0ºçŸïþ×_©YYU†ëOºW\,7®!¤S'7BÈ•+Eúw œÚ¶u2“rP[A4;ûa²—.X^0ë2½|¹0/¯úŸž}íµð'žhÃåª%•å™6±Pa;B_Kõs bÿiTêã…W…”ƒÑ–ñ’ô‡ËÒ BH°Ð·i É0ÌSãÆž8y*/ÿ_ÍwùêÕòŠŠÁøÐÁŸÂårº„…²ÿ4ÍŸ8@œ’RRR²éŸ?;er·.]†©®®ãd»™ê-­N§ûá§nn®ƒ>|æ›áˆ|7+Ûpû[IÉËI„ýs䌴÷k'W(rsïë×¼¹fí»~dïÙDËjD†aîåÞg/A$f›¯6¶ùn§¦ê×$ßN‰DÞ^^õæk«Ô,‰¶mËiŠ…e¤½Ÿ_iii~ÁÃÂ'%ß¶a©ê%tt;zÔÞ}û ‹ŒÞúñ§ŸµZíÓžb_Öyü6òp{LšÏ’j62’|Ü3‚a°¹ ƒÏ¥9ô±“§O÷éÝûÅ9³ç¾0‹ý·|Éçô¹sæFOOžÝ»_¸wæìù 㟤µZkù:¾œìÞó·™à<òA¾YÌ<™†#„PjµÃáÇ;:äøÓOnO=Å?{V»u«ŠËeFÌ  \»–¾wO£ÑèîÞuzýunNÎÃSÕf·©™úkµõnÖÐb7·H._Þ×ÇG>ûö›³g÷do*0ÊWqìøñ}|œ–.=]^®Ðé˜Ý»Óbb²‰ÁŸî c¢ÕêŒÖ[—©§§ˆ’ž^¤T*U*õÖ­7RSËT*­að­‘Õ;2µ¾Ê0ŒþL]°Àg€[èÚ¬ßîÉŠ5ÍÝê‚×3~ÌQ•êtº‡§<†²­àÄ%iÃ0éòüïíáÑ#ÐÁ»Éj1kæsž«Þ^{éòš¦5M•+7Õ®mÛ1£F¥ÜÞϯg÷îß|·­ °P£ÑÜ¿Ÿ÷Ùÿ6ét:öyëYÙÙJ¥R­VïùçŸìœµZ£/û×M3)Ô®‘F­¾w!6îBlìþèC‹—¯¼zýúºÕ«9ì9q†qss»Ï>AîБ£™wî0pï¾ýIÉ·†É¹wwôëÓ§]Û¶†aÒ/÷îÕ«½Ÿß×ßm•Éd Ü8yêzb";¿µaêÕú‘!¤ªªêA#Æ=~ã—_ÅÆÇO™4‰©¯ù ïæe—;vìÞ­ëÖ¶—–•1 s+)y߃'<¥ÒkG³Ž 3 ›K½©™j‹z£Ý rÖÛÔÛXuFcЀ'<<Ü7nþªJ"Ñét'NžºtùrSŽœ:îWŠÅâe«Þ:wá¢Z­f&/?ÿó_D9ºäõEžŒéã×Lß³°<&ÍWo5­‹¤…ƒ€õŸª[Ë0È|ÂZWæGþÙšž‘‘s/wÌè‘ ŽA߈ˆ3gÏ èßÏÌÁHÓô˜Ñ£N9“œ’2nÌhÆÚC¾Î/'=ºw7«yb#-ùjÛÊJ×¹skR‹™þý5ÇŽIÃÃuö²L­ê§Ÿ“'{õíK{{s‹‹u}ûª7n4ìaæ·Ñuèà°i“GddùÁƒæ“j>¬(Eiž±`ÁáÿüçÇa†¦™Þ½}ùåi‡f£´eË““'ïéÝ{§»»cY™bôèÀuë2ŒFŸ©ATkÖp8ºmÛ&Ìšµ¯k×NN|‡Z»vÈ·ß^ypü<,m‡.›6]ŽŒÜuðàdýzë2 o3qbÈóÏG»••)ûôñ}æ™Ð¨¨¤öí,èauˆ³#ÃïXÂhµÚŸº¾>9ñ³¾‰oyó]‹5U}]:m ™Ë¨Œ¯`™ê3pJÊÿD\A•V ôÞò¢V«mÊZ|³ù‹>ùtí{ë¹\.Ã0:.,$äÃõïRú4‡V«]ÿÎÚeo¾5kÞ|ww÷òòòn]»,_üÃ0!;Gºö½÷ýÛûUVIº„…Ž>,úÈ‘6m¼'O|Ú×Çç×S§_^ôúæÿý×T Æu!DZ]½þ£Ù—"‘°[×®ß}ýeçà`öz$BÈÜY³>ßøÅæÌãñx.ÎÎÓ§MÍÊÎÖ'5jĈ•kÞvtt¬®®nÛÖwå²¥úÀ>Ø a?$Þ]»fÕšµSg>/;Iª$/Î3}ê”äÛ·mX# µ¦F$„ÜÍÊÖ7"—Ëmïç·jÅò§ÆU«ÕfšÏ0/Ãå5«Þ\±jõÌÙ55}\ IDATs]\\ªªªôï?îƒ| >>kÚÖäefZ­¶žÔL›vý)?(˜Á ƒ‘“0–lc¾±LEƒ¢¨wÖ¬^ûÞúi3Ÿ …ç¥yswíÙӔݕÏçoߺå“ÿmøà“O)ŠâóùjµÚÝÍmýºµ##‡³ÖÓǯپgQxLš¯ÞjZÉ û.‹a´ða°a¹ÔUæúºhƒ5tÇSgÏ9ðùƒ 0Ü‘¦éQ#"®\¹ž˜hþ`6dðæ¯¿éÝ«{¯¬u‡|_Nºuíb&86äŠÊLO¾weöìÙf6ŠŠŠnvƒÆ85nܸ†î%‰õ/Ù.¨P( ¿‘s8g¡Ï  mD„T*eÆÍÍM©T²Ÿ^¦¶!„y<ѹsŒFS1dÅç›Ú¬AŽ;ÖÜ"Iáp8NNNYY’[·Šiš õìÖÍS&“é/ðàr¹¢‹ïËBC={öôª®®f«oLBˆP(äóùì³ïø|¾FÃ;þM3Æupr¢Aee%!D£qàñhŠ¢ !<žàܹ<†2¤N'Я·.S±X|õjqNNeX˜W·nž‰êÔ©{¡¡®íÛ ö²Ü±cÇ!VÄV,s8£gˆs¹\WWW©TªÑh8ŽP,НJ/PU‰|#ÄF]ôž¦¬ÿÕgû|ÔÞÉ+®2Í•ï4ĵ‹V®²âÁ Vׂ<è!ù™wt:ºc@@P` ¾‡–ÃáˆD¢›II¥¥eíýüÂBCô‹X,NMKË/(ìØ1(0°ºZvåÚÕþþÞ^^|>ÿzb¢F£íÕ£;Ç3•‚!K@P^Q‘š–æììÞ³'!„ËåJ¥Ò¢¢ÙólߺÅÇÇçæ­[b±sï^=Õj5MÓ†ÕaÇh6)Çår¯ÝHT«Õa¡!îî …Â¶5ªWëkDgggþƒg«°×étJ¥’½íÄTóB óúe>Ÿ/ptLL¼Y^QСsp°%ã†!'''‡ÃæÂår-L­AÑnPÊÕÕÕìÃ!ØÑ£ªªÊÙÙ¹Þmhš6ÓXæ‡nÃ\»~C§Óõé.ôCwƒ4²»ŠD¢ŠŠÊÔô4¥RåëãÃ^-Æv 3Ç/1Ý{-ìä±i¾z«iE$-¬þ8&[Ñ0h¸»å¹–ÙL5ˆuJ$±—QŽÀÉɉž™ƒ‘¢(777­VËnIÌö+3A¨óˉùàX7È[xÀ˜y7**ªYÌ<ÇŽk§Ä !|>Ÿ¢(Ngæ4‘©mاϱŸ&eÞñãÇ›m$¹\.{G2ýYEñx<‡CÓ´åÕgÿ\MaMX¿žÃá0'ÓÇÙh½u™êw¡iš-@5²ÜñãÇ !öë¥fúÕ=MÙ‰kNôx·§°û3ì%7VäÒøZ˜ï!FLUÊLëØüp3,6Ã0ú¡„¢â9/-ØòÕæÎÁÁf[g‡¤(J«}øô¬¦¬Ñc؈u6Ë0/ÃeëÆ S“š=Õ†²n<45t7Hã»+‡Ãáñx„£.dÉñk«¾GZ{óÕ;&44’vÉõ0 jéàMriŸ­¦4t,µú¯ýå„e*8V òìŸBêUï̳%_mkýÁoÅ6FQ¶$©G«1‘ÔjµfZ†a¬¨>Ã0uöT££H¿Ñzë25šMÀ öë¥f꨿«‘“g£­c¾‡1U)3­c§Ã­îb?¸°Ê|`-éM_£ÇªÍØT¾Ö¦4&5{ ª eÝxØLFN“‡§ǯ]ûiEÍWï˜ÐÐj6Í' ƒµój‰Ã MriŸ­fÒlÐXjõ!o*¦ÖÛpo¨fñ„!¨“;O¼¾ÓsmZöÏÆ6C..Î ¼äåéù¨  †ã …jýç<+ˆ¤ý<’Ø:S‚%¾O)•J]}?÷l!ô–P(œ9ýY¶)¡¡±GwmÑÇ/؆A°9tª¦™g«‚HÚÏ#‰-óï_—¶I‚6L­å²y`›Z;]ÀÖr_° ƒ`sèTMWÛ€}áœg«‚HÚOëˆmë¨Åc-º+ØúØ:UÓÀ̳UA$í§uĶuÔâ1‡F„Ýìý lªiàj[°¯GÎÓA(T*•àQÄîT*•@$²_úO$›Ûj Ã´èØ¶ŽZ<æÐˆÐ‚ »‚= _Í¡S5±G?óôNKK iÝí­R©ÒÓÓÛÙ/‹Ç$’MɰÕZnl[G-shDhAÐ]ÁЯÀæÐ©šÞ£Ÿyv O%äúÍ›*¹üQ—ÅŽ"Q‡  °ðp‰Ý²xL"Ù”ô­Fi¹±mµxÌ¡¡Aw{@¿›C§²ÜðáÃm’•™ž|1îÊìÙ³Íl”““c“Ì õ 0ónTTž0ö…™'ØWƒïó”J«‹JJ”J%~÷ Å¡(ÊÑÑÑÇÛÛÙYÜd™6윧T*;wO¡P`Ú Ð1 £P(²ïÝ“J«›,Ó†Í<‹JJíThJE%%M–WÃfž*•ÊN倦Ԕó»†Í<ñûª­ƒcÎï6óôñö¶S9 )µiÓtó»†Í<Å;t …EÙ©@`?E‰„ÂŽœÅM÷lÛÿªŠ³³¸)Ÿ½ -]ÃÎy4fž`_]m`ïr@k…sž`_˜y€}aæ ö…™'Øfž`_˜y€}aæ ö…™'Øfž`_<öQQQ¶ÐZáœ'Øfž`_5WÛΞ=ûÑ–Z¥¨¨(œóûÂÌì 3O°/Ì<À¾0óûÂÌì 3O°/Ì<À¾0óûÂÌì 3O°/Ì<À¾0óûâÙ;ƒ $¿þZ¼v­¿¿¿Àp}\œä—_Šß~Û¿CA;._~wòdÏ¡C]_†½{K¯Ô¿‰8ÁÁŽÏ=çíéÉo|âdÃj4Ov?çì]öÏ?eFëwî,¾tIÒ¾}ÝÓNBÈáÃåYY*›”!)I~äH9G±ÿJK5›6å œ˜•¥´Iú õÃ…_Ï.Û°šÍ“ÝÏy¶më0p Ë¾}¥‹·Ó¯T«u11•3gzsLÏ|““ûp8”­Š!r¾ù&Xÿ2;[9fLÒ† ÷¿ý¶“­²°\b¢L&£ÙeÛV ²ûÌ“2uª×òåwSSaaBvÍ™3UÕÕô3ÏxBÒÒû÷—•–jŸ{ÎÛݽ¦HqqÒ  ÇvíØ—ÉÉò}ûÊärºgO§©S½x¼šÙZAz×®’‚u@€ã³Ïzy{[tmÇŽŽ½{;¥¦*Ø—ûö•õî-.+ÓìÙSºb…Ÿ§'¿ÎRI¥ôÁƒe“'{?^/uvæNê*Ô'kª0†é÷èᔓ£T*u¿ÿ^üì³Þ—.ý«šu¦@ÓLttùµkÕ5`€ó¸qîÖ7@“³æjÛª*­™µ·Ÿ0ÁC àìßÿð‚Ûèèò€AD„øØ±Š1cn9R^Y©Ý¶­`Ĉ›÷ï×\zúÊ+1157gîß_6nÜ­ØXIi©fݺœ3Riš!„\¿^ysÏžÒª*úçŸ ‡¿yë–Ì’*Ð4“›«ÒÏr?øàÞöí…S§¦ÄÄTªÕŒ©R••iV®ÌZ´(ó½÷rŠŠÔû÷—{ëüù*63…1LÿìÙª¼jµnݺì'Ÿtÿî»N\.U^®0!éóÏïýu°áîR)½jUÖœ9>Ü‘’œ,;öVLL娱îK–Ü0ÀåÇ;óù”\®›1#eÕª¬#Gº×.˜VËÄÆJØe‰„þóÏ’œÕâÅ~ú þþ»tïÞ.½{‹ë-UjªâÔ©ž<¥R7sfê»ïæœ<Ù“¢ˆùÂèÓ'„¼þú™ŒþùçÃ2LÝ)|ýupLLå„ îJùì³Ü½{ËÞ~ÛßÒÖxÔ¬9ç¹`ïúõT­›ëœv²¦NõÊÎV^¿^M9¾J"¡'MòºvM–—§^¶ÌË¥!¼¹s}*7Ú÷Ì™*©”ÖÏ»umÜäããœ,ËÌT,[æÇçS„‘ˆóê«me••uœw•ËuÓ¦¥°ÿ^|1ýúõêuë:Ìœé­ß`Ò$OvZXo©,ðõðàB9+V´OKS¤¦Êë-Œ>}SL¥PUEB®\‘ªÕ:BÈêÕþ áfÒhn¬¼ÏsÁ_Bˆá™O3ÓNBȈnîî<övÇèèò°0aX˜p÷îRŠ":=¼O2$D¨Tꊋ5mÚ<¼]3'GéâÂõñy¸æ¹ç¼ !–B/¾ÃåÖ¬W*u„’››q½œ¹—/÷f—¹\âäÄ5ÚÀϯæ)»÷î©L•Š}ixcg—.Bv†1_}ú¦°O¸­‚‹ wñâv›7ç÷]AD„xÔ(·™3Û¸¸— Ù²þ C†“OóÓNBŸOMœèyà@ùºuŽ«xå•¶„GGŠaˆV˰gù!ìüM«ý×…¼"‡¦ëH“¡­[ç/ÿk¦Z!Š"ægkúS¸õ–Š}i¸ÌåR:c¾0µO[^Õ«ý,ð‰©Œ‹“lÞœÿÓOE11=œ1ù€–¡Q϶e'Ÿ† fLêùË/E6ܯ¨Ð²Oµ r$„\½Z=dˆ »Í•+Õb1××÷_SÇÀ@G™ŒÎÌTèÏCNŸžé6fŒ!D$âT³û¥KÒsçªô/­c¦T÷î) ! Rö–KBH|¼”ìÈ>ñ¨1…éÜYXg NNÜ“'+—,i7c†÷ŒÞééŠÈÈ› ÒQ£ÜSM€&cÍ}ž†,ðµdÚIéÛ×9 @°eKAD„8 @@éÞÝ)"B¼~}NQ‘š’ ýå—¢3ŒäsèP׎ß~;[*¥ !{ö”^¸ éÝÛ©sgaŸ>âõës Õ„Ü\Õ²ewsrT¬Q½¥Ú¾½ðòe)!$#CñÉ'¹C†¸96´0ìLÕ©ärzÆû»v•°›±Yûû×sí.@óÑ¿ç©7eŠ×¦Myì OÖ† A/¼Ú§Ïuww~Y™føp×Õ«Û‘G}ùeмyéÝ»_uuå•—k–,ñ8Ð…òí·fÍJëßÿ†·7¿¸XîôñÇ/§ùRM˜à1mZŠHÄ­ªÒúû >û,]oyaüýß~[6jÔ­ýû»®¯3WWÞÌ™Þ+Wf±?¦"•Ò«Vµ Ö™2@3De¦'_Œ»2{öìGUµZ/-+Ó9öêå¤__Zª‹¹ŽŽ5§e2:.NªVëºusbO™²´Z&!AZR¢éÐA`þá±/Uv¶rРÄ#Gº{{ó¯\‘:;s rž¢µ°0 sæL¥VKÆŒq«¬ÔVÓT Šôt…ƒÕ³§“O7²4OQQQ~æÙ‚ègž†3d0#**ª±÷y˜‡™g¸»óV­joôè]0¯IŸ0ÔÒ¹ºò–.õ{Ô¥hapÎì 3O°/Ì<À¾0óûÂÌì 3O°/Ì<À¾0óûÂÌì 3O°/Ì<À¾0óûÂÌì 3O°/Ì<À¾0óûÂÌì 3O°/Ì<À¾0óûÂÌì 3O°/Ì<À¾0óûÂÌì 3O°/Ì<À¾0ó€fäÂÉÂ…™¹¹*£õqq’… 3ïÝ3^¯·|ùÝóç«lR†]»J.Ìdÿ½újæ›ofýþ{±R©³SvFì—2À#„™'4#ÁÁŽÑÑeÿüSf´~çÎâK—$íÛ LíxøpyV–ÉyiƒÜ¼);v¬‚Ç£x<ŠÃ!YYÊ5k²G޼e8¶av„~(üúë|{¤ ÐLðujÛÖaà@—}ûJ/n§_©Vëbb*gÎôæ˜þ{irr‡²U1\\¸ß|¬™™©˜>=uáÂÌèèneûìe2Í.Û6e€f3Oh^¦NõZ¾ünjª",LÈ®9s¦ªºš~æOBHZšbÿþ²ÒRM` ãsÏy»»×|ÅÅIƒ‚Ûµs`_&'Ë÷í+“Ëéž=¦Nõâñjærê]»J ÔŽÏ>ëåíÍ·¤H: ?ü0`Á‚ŒØXÉàÁ.FÙíÛWÖ»·¸¬L³gOéŠ~žž|3¹Ô.Øñã99J¥R÷ûïÅÏ>ë}é’4(È19YÆãQ#F¸éwÿü¾ÑîR)½jUÖœ9>‡uÛ¶­ó¾}]ãã%11• C–,¹;`€ËéÓ=·nítöl¯à`ÇU«²,,ŸOùù9äåÕ}æß—îÝÛ%!!Ü××ÁT.¦ öî» r‰ˆGE…ŠD5ŸËS¦xVVj/\¨™è:Tή¬3ñ;w11•?þØyÛ¶ÎQQ¡‹µÝ·ÏøFY€G 3Ohv¦NõÊÎV^¿^M9¾J"¡'MòºvM–—§^¶ÌË¥!¼¹s}Ø)™¡3gª¤Rzñb?öe·n¢ƒ||’“e™™ŠeËüø|Š"q^}µmb¢¬²Rka©ø|JÒȤIž½{‹ !fr1U°:ìÒE*}®»»óËÊ4Ç»®^ÝÞh/úòË yóÒ»w¿êêÊ+/×,Yâ7p  !äÛo;Íš•Ö¿ÿ oo~q±&<ÜéãêÌZ"¡_|1]‹¹½{‹ÿú«ËO8[RlS¹˜)˜¿¿àÛoËFºµWä&Nôx|'žpîØÑÑLâ®®¼™3½W®ÌbLE*¥W­j"¬U4€G†ÊLO¾weöìÙº$õS«uññÒ²2mPc¯^Núõ¥¥±˜ëèXsNR&£ãâ¤jµ®[7'ö”)K«e¤%%š¦nÚ´„QvFÌäRgÁ4æÌ™J­–ŒãVY©5“²™Ä32éé ªgO'SÌx$¢¢¢0ó;ŠŠŠÂ}ž`_˜y€}aæ ö…™'Øfž`_˜y€}aæ ö…™'ØÏŠ}nÜø+3ó»LQ”ƒƒ“Ÿ_xÏžÏðxŽ6-›íeeÅ^½úÇèÑo¹¹µ7\Ÿ“séòå_G^åææ_玼սûÄ  Á/ƒ%ѳavFì”òýûׯ^ý£¨(…ÊÓ³cß¾³úëß=rä½ààá!!#m˜ãÝ»““£Ÿ~úÓÚoI$…±±ß&+•7·öaac{õšBQÜÆd'“•9òþ˜1«]]ý,ß+:zmXؘN"”WfæY­V6–}YX˜|åÊï·4•«k»ÐÐQ½{Ïàrùì»4­>wî›ââô§ŸþT pÒ/‹DŒS„P;¨7SÊËsRS´ Îwÿùg9Mk!Ó¦}Í®yä=Á&­_gT}}»””dBœïçnÃ*<¬9癟Ÿ”–v‚Ãáq8<Šâ”—g:´î»ïž¬¬¼oóòÙ–§gÐíÛ‡oÝÚo´þÊ•ßsrÌL*nß>R^žm“2X=fG‰ÿéÂ…-öH™uñâ¶íÛ§”•e…†ŽR^ž³cÇŒøøŸô¤¥,-½cÛLË˳SRŽÕ^_PôÍ7£îÜ94´wïé"‘gtôº_Ã0ºÆd§RÉ’“£Šª핚z¼´ônƒvQ*%G¾ïï߇}yáÂwÛ¶=}ïÞ•ÀÀAÝ»?-ˆýàûJ Ù ¢bc¿÷öîÄåò —¼»ÓÕµ%é˜âášz,7÷jï&'bºM›Pöå#ï õ¶¾á±`FQuwïЦMhrrtUUm«ð8°æœ'!D pž2e“þei騨Y{ö¼þÒKÿBÙ¨l¶çââðDRÒ¡CéWÒ´:=ýdDÄ Š29ë­ëfÞm¨z£gÛìòóo©Õ2vÙ¶)Bòóož<ùßÈÈeÇ/f׌E¢£ß>qâÓ.]Æ5è ¡Mœ9³ÉÙÙûå—òùBvM×®OþöÛ¼ôôS¡¡£›¸0VˆßÞ©Óp''OBÈíÛ‡Ožüï!¯Ž¹RßjÅÅé;w¾°k×Âùóÿ¦(nyy¶Ÿ_øÈ‘+ !†Ë„µZVU•צM¨%é˜)ÒàÁ¯ÄÄ|6oÞ_u¾:¶gÏI¤yô„z[ßðX0ÃLTOŸÞh·â´fVÎÕÉÉ‹’œÝ®]F•˜ø7M«…†ŽÑ§cf‰¤èöíÃ<ž "â9OÏŽ7oîÏͽâääÙ§Ïœ}ØÝKJÒ“’Êde½{O ÝkµgÏI¼U\œÞ¦M»&3óœZ-ëÞýi3)dg_òô tqi˾,,¼”tP£‘·mÛ½gÏÉÏLù­ˆžavIIüüÂåòòÄĽ‘‘KE"3¹Ô.XZZLEEŽV«ºvmW¯^SîÝ»ìéXXx›Ãáuê4\¿cjêq>_<ÔTâ2YiZÚIÿoïΆ…?sæKwwÿaî1byRÒÁôô“ýúÍÖ¯ÌÏ¿•”t@§Ó6œšŠyíŠgeŦ¥Å0ŒÎ̲¬,«mÛú‰!¤S§È  !Pªì IDAT EeNN‚BQ6NÿVrò!W×vUUyv0B˜¤¤ƒ99 ¸G‰>>]ê­…ÃÐÉɇóònP'  ¿a·×£iÍ•+¿ÏšµƒÝ#&æ¿OŒµÊp›6mBžyæóß~›—’rL —”dÊde×®í ]ôËÝ»?íà ÊÈ8ݹs¤%étíú”™³sç¼UPÔ¶mwSa'Í£'˜i}BˆÑ±Àåòïß¿–‘qZ&+wvöéÞýiOÏ@BÈ;çÌDÕLÀ ›þ Ãå:deŲ/óò·lsóæ^¥RrùrԷߎ)(H"„œ8ñÙ… [ÿøc¾BQU\œñçŸ/'$üRï.‡½sèÐ:šÖ$'Gÿøã¤?ÿ|%!aÃè¢v옡Ói !ii'¶n’r\¡¨Œ‹ûaË–qUUyµËÙµëS<ž )é ~ÍíÛ‡ÝÝ;øù…›I᯿^OO?Å.'%üþû§³³ãª«Ky?*jÃÐfÊoEô ³;~üÓK—vìØñ\zú)­Vm&—: –““PUU •§¦×é4lÊ÷î]Ù»w)7BˆRYµgÏë%%f/+Ë>xpuVVœa±5ùÝ»Âç4sròZ½ú–ád##ãô®]¯¨TÒ¢¢Ô?ÿ\pùòNv½™˜U<6öû¨¨çsr.UVæîÚµðêÕ?ꌤ—WpFÆéÔÔãl£°^xagxø´òò¬={ÞP*%ìʪªü={Þ¨®.±°ƒBŽyÿرª«K’“£·m{:--¦ÞZ<ÀüñÇË®‘H KKïîÚõêÉ“ÿ­]øììxŠ¢|}»BŠŠR+*rúõ›U{³N"ÝÝ;¤¤ËͽZY™+——¥¦¿{÷¢~Y£QBRRŽ……³$böÀäpxÁÁÃ’“ÕpV3é fZŸbt,\½úÇöíSsr4yRÒï¾{²°0™b>ª`Ûœó$„p8,lÌ´i_SW.¯øñÇI§Nm˜©¼<ûéÓ$„Pff”\^ÕµëD#sHOT(Äì%…'~ck뮿þ&E¯¦®]_õô Ô%]«5CwwWW_fM‚zðଯoHUUž&X[Ûuì8”¹] ‹9 ÄÜFU¿nÝ^e/ÜuwP*¥!ƒ1gžšz•¦)ö»vnn~]ºL¨µ ŸÅ‹¯M›¶? `|~þ½Ó§Wmß>ðĉe*•L pðöôðáóVß¿ºk×W™Æ`Ì.ýûÏB\®õ°aWTä>2fä0¹åæÞ¥(%BhĈ•K—Þ¬Yùââ'ì]—ÕjBHóÂQMVV¶VµÊȈêÐaB„ñùÔz`2Û””¤ê)î% zz¿fMfÌøcìØÏ™Çjµ!BH@]uÎ344”}<}út]ÉÄâ¡Ð !TV–:yr9{éZ-GI$¥!öÛ’šôï¢uv«æÉ®ŠŠ\„fÙÀpuí¤VËÅâ‘ÈU+q§NÃÇÎxz>|xÑÍÍ×ÍÍ7)éocr(+ËæómÙ7è¡àà7BÌz¦Öú3kƒØèÕÄ®÷ôDIWÅtéÖmbLÌþ 6I¥åYY±ï¼ó‹žÌu5¹ÓGZŠŠÑ´ºU«nÌS;»Ö5Óì5¶áåå¹ööž|¾-›ÒÍͽ Y Ir}}G0?ÝQ^ž÷[lìkkÛqã¾èÒeü¹sk•JIEE^qñ㉿av18À^TÏ—}Ì|ɳ¢"O¥’êj»ÅÙ¹ÃàÁ‹"#wGGÿìåܩӰàà7­­í´ò—HJ˜õzÛêêB;;š5©®.bè’’r9 `¼IùÔz`2{µZ¡Pˆù|Q­ ^ž‘ §÷µ %IòöíCyy Ïže>{–É^Sm Í) ½ëD†±WŲ̂¸ø±LVÁ¼ofÎð„„¬ÖzŸÊ¼é¬õÞªúw1ˆËå#„)JÅÞì‡ù™ÁZßM’$·K—ñÉÉçCBV§¤„õï?Çø¬¬„µþ>Gë¯=]™ë/EWÅtéÖmâÕ«ßeeÅ–”¤‰D®>>CRR®˜Ú{ûÖvvYY±Ýº½®õ§C‡fxz¾ýöÏZMÐd0æì^VVBæÜ‹¢þó”QV–uáÂçcÇ~îììÍlqtl;fÌúÊÊ‚ÔÔðqã¾ð÷}îÜgÿS\üØÙÙÛÔ_edÎXj>æóm0¦Œ9#F¬ì×ovjêÕ¬¬ØÈÈÝqq¿-XpQ+ÔŽM«˜Ç^^A$É}òäZÍJÊåU¹¹ñ}úè<$1¦³³ãÆßdR>znzLQj„‡£sºxF‚ÁÞ×ÜK¡ïÛ7ž$¹}úLïÕë]€Ã‡géj]MçC€ŘÏåëçj[Œ©°°ÍB¡£¿ÿh„«kG„••°}û~Ì?’ädfFë¹3¤»hbnJ™—ÏnÉË‹·²²Ñu¹i÷î¯WWEDìÉÊ™»Ú™ƒ“S{¥R¢ù›„¡¡ï2?÷gvýµ¢§‡žRtULWVm¼¼z<|xáÁƒ³AA“ ‚4« D÷îoÜ»wš9_ÊJK».—hÞ;·VÆ÷š“Sûêê¢òòKÉÍG5…ŽQì4`fgmmçã3˜ùM×ÀÀIú«WSNÎöqvvBÈÙÙÛ˜Väçß¿~}§@`4åõ׿›=û¯ŠŠ¼œœÛZù‹D®ìO†Z[Ûwé2!6ö`EE®V²þù†¢T={NÓUÏÜÜ»­[2«¸ºäÃ’Ë+ù|[.×Zw’Æ {_Sn‚wÞù¥ÿ¹:  ±þJ€º0såIQÊ””+))WRR.ß¾ýûþý“32¢&NÜÂ|ÌÅ¥£—WË—71¿S_Q‘wêÔ'ååÚo|5™±‹&.žžA—/U]]„ÊɹsûöïÁÁSuÆiÓ¦§£cÛ¨¨==ƒÛŸƒ·÷@GÇv.|μO½wïdff´§g Iõ×=󢤫bÌŽµ~ƒ´[·×<8›——4Uæ¡gÏ2Ž_œž~C+“!C‰D®¡¡ï¦¥E`LQ”*-íú™3Ÿ:8xNÖßã{Íß”Härúô§2Y9BøÞ½“ii×kfhmmßµë„ë×w&%P©¤!¥Rzûöï))Wzö|‡Iӥ˄””°ÊÊ‚îÝM^yÆÆ`VG%%Oþùç[?¿/cZ¡RI#"¶'$gžææÞE±_édyz–”Œé}ôâX`. ¯¨xŠ˜Ž=PZšVë‰tP/̼·­\^õçŸ0­¬l¼¼‚fÌ8Ò¶mo6ÁäÉ;žµcÇ`‘È¥ººÄÓ3pܸ úó4cM'n9rdÖöí©´ÌÇgðˆŸèIß­Ûk‘‘»˜žÆç@’ÜI“¾;ztþ·ß öRiùàÁµk×פúŒžºJÑS1¯¨¨}{÷¾2gÎßšYuí:áòå/ÛµëíäÔNæ!‰¤,9ù\Û¶½™»³²x<áôé‡NZyøð,’äbŒ1¦Zµê:yòNƒ idt¯q¹Ö¯½öíñã‹·níee%$rÈÅqqµœÓŸ0á+.×úôéU§N­äñ*•ŒÃá ô!{›V?¿QÏË+ØÞÞÓ`õ´ôï?çÀ©|¾­\^éìÜaìØ F¶¢]»¾ÁÁo=»:<| BH.¯>|…Ö‚BÞÞ##wÓ´š9]):Í™ó÷Ù³k[H$‡ÃS«66ί¿þþµ\ZZäðáËÙ§fçÃÊËKðö¬?ÍË0 ö>{,Ìž}ÜßôÌsqñ–Hžyzúû‰?æäÔ¾o_.»F"ÒR“£bîèÿÚRhh¨ßk¢iuNα¸Äѱ­®o0Ö}M¥ÌÎŽ“Hž9;{·nÝÍÔÝõä ‘<ãómØ« •Jivv¬Z­ôð`N™ÖKýu§EO)µVŒ¦Õii×iZíë;R&«Ô“s]šðìYFQÑcŒ)ggoãw4¾×äòʬ¬XŒéöíû ún£*•–åå%*•;»Vnn¾š÷ò‘Ë«¶më;nÜFýw`Ò¥¼<'?ÿž@àЮ]_‡gR+JKÓJJžp8V­ZuÕuøÞ½¯Œ¹Š¹A«ªª  àJ%··oåéÄ~²V¥ÊË‹g>tÐbR>,…¢úûïûôQxÍ:oÚä7qâ–îÝÿóÝÎF zz_óX In^^|EÅSW׎îî qZÚuæÒ_]6nì0uꞀ€±Æ·  Ù3¸` ­·ßó¬‰$¹íÛ÷³ô.š8+oïAfï®'­ûˆZY ;uQ3Y믫8ãK©µb$ÉõõiLÎú3×ÏÙÙ›½³‹IŒï5kk{ÿ1†Ó!$:i-ÞX 0΄*jptl«ùY˘V¸¸td~¦Eþýç$$Óª¼]+=7ž­Q^­ËNSóaÝ¿ÚÏo”®¥rM>ôô¾æ±€òòêáåÕƒyÌ狺toJ}€ êó÷<x™UTäýðÃà+W60Oׯƒ4ºÀÀÉbqIaáÃÆ®Ès¥Œ‹û=$äS] "#w80µ!«ÔX"#wµ–X‚ÏyðR±±q0`¾Häªy÷— Ao¼±]*-kìŠ<'‘”M˜ðU­¿Šš0á«Zo^Õ,µmÛ[$r šbÞ•ü-¬&•uëöm¥R9xà@æé“´´ÓgÏ?~’ªP(ÝÝÜöï7~ÜX÷ù»•JzøHFfæªåË„B!ûØÞÞ!{ Dÿ¾} æ£KÞÓüQQÓÞœjRÔ Xy@#x’ž~#*jÄðaZÛ¹\NL¶ý}B¡T¾7ímKôRÉÏ/ˆ¼yó“eKõ';òç±}?ÿØ­Û°!ƒ•JeÜ;-[¾øÃS'¿Á$ˆŠõððèß·>»IWÝRŸ¤}´l¹‡»Û+£GÛ…OÒÓ¿ÛñCXøÕï¶l& Âìâ¤RYxDÄ»ÓÞvws3~¯ÑQíÚµíÛÛ„†‹ÅâvïÙ·k'3ª=úÓþƒÚ·4 ¿MZzúÎ={Ož9»uóW®..¡¿O>òç±wß~‹Ëãi>fv?qæÌÂùó1ÆóÑ¥—稨®]»ß õVžÐD„Âë×imW«ÕjµÚÒ¥§¦¥Éd²7«B„þV§õU·¿…ºº¸ü~`?—ËÅs8œ#–,_3°ÿºkb+Lnø±¿O ìßÏÖV„1ŽˆŒüñ—3§¿ÿá¼¹cŒ1I’Ù99 —,]·aãžv$™ŸŸß­K—ùsf«T*ÍÇc©TVTTÜ¡}»«óÑUŠ¢f¼÷Þ¾_~Ùõý6S ÀÊFÉd²šÈÊÎN~”2jÄp+++„D*¸غU«’ÒÒKWÂJJJZµjõʨGGGv¯´ôô«×er¹oÇŽ£CFr8œKaa]¼<=™÷$ËåòÞ½zFÅÄ>ÍÏW*•ç.\=*„ÇåêÉVSÍ"Ø ‡_‹¨¨¨ôòl=vÌh;;;fûÕë×ý;ù–<+½~ã¦7~ìX/ÏÖÿ\½v?9ÙÑÁáÕñã\œIÃä–üðQl\\ee¥³³óˆaÃÚxyj–¢P*.‡ý£R©z ðï’,>11:&–Æx@¿¾cô⵬¼¼<:öV—€€öíÚj¶ñ×C‡<[·~oÚÛR©”Ý8wÖÌËaÿÄܺõÚ«Ø)‡_‹ (ªGpðÀþÿ^y«+á×":ûûUVV^ûgæô÷ìíuÕMSÞÓ§þ~~4M+ fK À¾}z‹Å’Ä{÷ªªªÀ&¾v=ÒÝÍ­°¸ÈpHŸG‡_‹HºßF(9|˜··ÁV°•¤i:"òÆÃ”’ »uÓŒ9K¥VŸ9w~ûÖ-4McŒÚ°gpðsfk{w÷ÿ}¶fÉŠ•×oÜ´ ³rrÊ+*Nœ:m+±G *bãâè¯V« æ3lÈ`=£¢WàM›¿yüä‰oÇŽ5ë Àr8K/ÊÍË Ô“()) !äëëÛPµ€fîN||ZFÆÛS§ÔüÇÛðå¦Êªªž=‚B?üßžë7n¾=uJê“' —,-(,´³³‹¼qó¯'{övrrB]¸¾jÍZ5Eñ¸¼¿Oº?zäÈ%ËWz{w`—¡GŽÜŽ1üÂ¥Ë÷“J$R™L:xÀ€´ôt]Ùjªµ‚ ¢bb–­Z]YUec#¼qýÔÙ³C¶±±A}¶þó‡))á×"ÜÝÝnDGŸNNŽL)ÏÊË~?ü‡««k^~þ¡?ŽÚÚÚvöóCýëø×[¶ªÔj„Б£Ç %)ó´ôŒu¿h×®­¿ÆK›\.ÿþ‡o¿9•ÙeÅã}0wŽŸo'Š¢BŸ:]QYqúì9œœÜÃG:ØÛûùú"„ôDãÓµëe2ùÿ·çYYÙ˜Q!gÎ×U7M‰I÷bãâÚ¶iãåÙš „MÓ'Œ÷ñîp7>á›­ßMš8ÑÊŠ‡*..^¼|å€~ýöþø³ÁJ¤’¿OÎÊΈ°³µ»ŸðDZ¿:z{·ñòÒÓŠcŸèÞµ«¿Ÿ/Æø³ÿm8qúŒ‹³syEyè‘? Eà ­ÊÇ'$FÅÆ,˜7—¦éôŒŒÃGÿ\´àƒÖ­<4Ó`Œ=[·¾.“É EbÒ=±X,—Ë«ªÅ)3ûöémÍçúãèøW^©¨¨0˜ÏàôŒ „PvNNqqI í 0Ojj*BÈàŠÎy@#ÀɤÒo¾Ó¾äoêä7|:tXÿÙêeŸ|:dÐ@‰DzåŸðƒ?í#IróÖm={³éK’$•*Õ¢%K·ý°kïÎR©ôûvNycÒÊeKišÎÈÌ|wæìèØ[H‚d§n’$™§K-¬¨¬’ɤ[¾Ú$•Jue«Y+]EôéÕsמ}Æ ùjãç¡j±xæÜùûýmÍ'+BA””–:¸ŸÃádeçL›>ƒ¢Ô~Ú‡18`À'k>Ë/(4&—gë¿OžôÚÄÕ+W0gÏÞxkZtllGo¦”ë7n;ü»ƒ½=I’KW®ºq3jÒÄWKŸ=;úû[S&¯Xú1MÓYÙÙÓçÌL@¼;´ßµ}[ëV­4_ÚŠŠ‹•*•‡»»ÖëƸªªJsKzFƱC¿ÛÙÙ‘$¹dùÊQÑ'ŒW©Tz¢",<üç=»:wÎÎÎÑS7M‹Ì_öɧë7~áààÐ38¨gppïž=œBC‡ ÞöÃÎèØØQ#G „¯EØÙÙ è×w÷Þ}CÊᡊŠÊc‡~·±±Q«Õ‹—­Ø½ïÇÞ½zbŒõµaŒqNnnl\Üîß÷êÑ!ôÓþ.]ž;k¦Vå’’º0Wç=ÍgÂ^³*•ʯS§œÜœë×VUWçæå}ÿíŒñÖí;˜Ç2™L©T>IK÷íÔ1"ò†Á|0ƺF“²³¿ÿÅK—çÌœ4 Xy@ãÀµ]m‹iLÓtP÷î'Œß²m»\!Ÿ?g¶—§çãÔÔœÜÜ ë×2»ñî´·W¯[_UU•”$‘JßgZuu5B¨u«Vë׬vws}žá¦nŒ1–ÉdÓc‰D’–ž®+[[[[v·ÛwïÖZÄÔ”¢ââm[6K$„‡$§¾1iïÏ¿¬^¹‚Ùqİ¡Ìe¢n®.¡Q!#™”­<ÜBÌŸ ¦Áÿ¸{§•••X,FÉd2‚ ˜íL)£GŽ´æó™ëc;vô¹}ç.Æ8öVMÓsfÍdêìáî>:dä¨hf/@нkWš¦išf›)—+B¶"‘Á×»1!£x<S¢·wÒý{cƒÑ=*¤]Û¶UUUѱ±zê¦ÉÍÕõø‡oݾ{+..üZI’Ç]ññbkkë>½{EÞ¼2b8B(<"btÈH¦9C*X#„Þyû-‚ $ AsfÍøhéò´Œ …B¡¿cÉAݹßÑÛ›ÇãÍ™9ãÃùó´ç¡¬ìœ6^^L£”*%Bˆù¶jÍxòù|™L.—ËišF3Ek>¾›Ð«gŠ¢ŒÉ‡ùS­£‚Iæáî–‘•ïj ™°òP„Bá·_¥µQ.—S¥V«?ZðÁäiïØÛÙ¿5uŠJ©,(,Bmøò+öî)J¥!T^QYXT$‰D"³ê (jÔÈÌu¡éÉVså©«ˆËaÿÁþ2Ƹ——B¡(+/wrtD1_UevAYñxšO™›³“F&“:{îá£GyOŸæå=¥4–‹!gv‰_<(*.öpwçržß+˜¢¨öíÚ݈Šf«ZóNNŽ¡²òòšJÏȤ(Ê·SG¶DvÝ‚1*..Ñ W¦Qú릉¦i™LÖ38¨oï^\.· °ðÏ¿Žùó˜ÈÆfÉ¢GöÍwÛ¤2YQQQzFæêç§% )B¨—'~ñýRæ:Û’’¹\¡«l­¼¼>¡k—æv>K-´aß+ˆ$Hw7W@HS”æR“½ sçOæ±J¥BÿÉ™{¥êÊV3¥®"ø|>ÆX¡PðùüçÛ• „EQ ³ïCÓø¿@Ƥ‘H$ó-ær8S'¿ñæ”Éýü–¬X©Ù–š7\Å …R©yJ“©³ž×2g77·Ä{÷† ¬õ§ÕëÖûûû}¡q/âš% #ëö4?×Þ}‹>˜ßÆË‹ùDÀV$Z´àƒÂ¢âظ¸Å 0¿l{++;»]Û¶½½Ù>ÒRæ©ælrâ IDATyc¹\Ž …Ì_km»/EQ³gLŸöÖ›7£¢ïÜ?tôèÉ3gú¿]Z 9—ÇÜ–!äïçÇápbãâØÕ;K,‘ÜONžúÆ$­(±1Æ÷Ü_ºxÆØø|jÌ•R…âè8q ÀBêôSÔ,¡²²rÛŽ‹|0aÜØ­Ûw(ŠvmÛ „8²³¿óO¥REÅÄðù|/ÏÖR™,77Ýý“5kÿ½X-022³j¤'[ÍdºŠ`n0û0%…Ýžüð‘P(Ôÿ›Š¦J~ô¨¤¤dûÖ-SߘԥsgŒ±X,1¸——§giii~A»åAòCý»`ŒÇ~õi~æöÛwï–•—kÞÀ¶VÆGÃȺ988Ä'$ÆÆÅ±[˜S 4M‰D6!>Ÿß¯OïQQá×"Æmä‰nÖýÉ „ÚxyÓŠÔ'O~>pa¬j±X$ñ_œÐ0LXybõ!¤R©nFÇhýKHJÂoûa———çë¯M\ôÁ|…B±ÿ×ß¼<=»wíº{ï……*•*/ïé7[·Ñ4èåé¹kï>‰D‚1 ¿š”Ô­kW‡¨ØXµZ1>ñRZz:Ö8 ÊœˆÓ“­fmuÑ¡}û®]öý¼¿ôÙ3ŒñýɧΜ8~³»Ö ‡ÖK Ò8/§?ƒ½=B(3+K.—+•Êã'Ofeg+•*Í4ZY`Œôëëää¸mÇÎʪ*š¦Ã¯޺}›Mœ“›·é›-wîÆkõË{ÓÞvvrZõÙÚ[·ïP¥R©âîÜÙ¶cgëV­FYk%ñ‹g£Án,¡ptÈÈÐÃ\ù'œùýU©TvúÜùÈ›7_Ÿ8cLÓôðaCoFÇ—”Œ>¬Ö€ÔRæÁñ“'“=Âgeçü|ð×!ƒ¹º¸èi›‘B©üíÐá‹—¯( ‰Dr+î6B¨u«ÖZõð÷ËÊÎfÓ4½øÃ"‘hÙªO#oF)•JŒñÓüü-Û¾?wñÒÇ-rvrÂ/ÎÆ>¯á‹ÇÑ·n 4È´|tŒ FVvv@g­AÀlF.'áj[h!©Tºa“ö÷<}¼½_›0þöÝ»‡îWÈå$I~ºrŧŸ­4pÀ†õk—}òé{³æ8::–••u è¼|ÉbŒ1EQÿ[»fÕšµ“§½+ÙTUVÍž9£K@ç™ï½·eÛ÷ï̘Åårílmßœ29óÅ]U<ÜÝ]½6ÑG;¶~«+[ÍZé*B­V¯YõÉŠU«§MŸiggWYYÙ¯OŸ93ghìþü k¼ùG/®³Å“Æ·S§aC¯ý|c/ϊʪÎþ~Ç9wñ¢››ë‹»•j¼ì½X¹±~Í굟o˜2í]@@’äÜY3ÿ<~œIY]]y£{·®=°öOkìÞñý_o^ûù‡ƒ1¦iÚß×÷Ë ÿ#4_k¼ÐbŒ GãÅ^ú릙犗ð­øßíøaëö|>_¡Pp¹Ü™ï¿ÿÚ„ñÌõ±}{÷æq¹]»vqtpи|ט°£wÞzkéÊU666b±¸m›6K?ZÄœ5Õß Œq`·n¯½:áû»öÿúBH"•~8^/O­“®ÁAA?¤V«™‹ºy<Þþ}{¾ÞúÝ_o&‚Çã)•JG‡ ëÖŽ6”i[„æã;wã5+`t>µŒ æÙ£”ǽ{ö„w5ÐÀˆ´Ô䨘;Ó§Oד(44!4f̘†ª4sB¡ÐÚÚºævµZ­P(„BaUUó>žÇãÙÚÚVUUÑ4- ï=xPZúÌËÓÓßÏ·ººšy÷Ìår9N|b’R©ô÷óurt”Éd|>¿¬¼<åñc[[Û îÝB‡¹™*ÇKHJR©Ôݺr¹\]Ùjªµ&O¾µuRÒ½²òòvíÚvòñ‹ÅÌîr¹œ] 899‰ÅbæûŠÇÞÞ¾²²ÒÖÖÖ`Š¢D"QÊãÇùÚ·÷îÐA,–܉¿Û¶MW­RÇcî³ÊãñhŒãišîÄçóù|~EEÓ;;;‰DÂ~'–E’¤M~AÁ“´tš¦Ú·kçÝ¡ƒD"a—UZ% …B.—Ë”h|4ôÔMAB¡P"•&?|$•JÝÝܼ½;ð¸\ö®È©ôí÷g¬\úñÐÁƒj­^­!EÙÛÛËd²²òòä‡ííì»w{~kYÝ­ÐÌ™ QzF&Çíìïo+Õ¼Q3—Ë¿è£ï¾Û·Oo6¶B¡°¼¼"%õ±\®ðpwg.ðf{ÁÆÆ†$If”2ËË˳ss;z{kŽIƒùè‰ôÝY³Ü_ó–HÌsùòe„Á¥ +ÏÑ£G×o˜ŠÇãAÓ´Ö­Y ‚àr¹A¨Õjö܇ÃaNÜ1·ÒÄÜþ”YèÉÖ`ìv’$™»òÖK3kb‹ (Š9ÓEý÷¦GºêÌãñBì­nŒÄ„!dL)Z% ãëF’$‡Ãa:Hó~E¡¿O=|äï£G¸Žñ•ÔÌ™ù…­bL+ØiM7¢¢#"o¬_óiÍBBúÇ‹ÇãÕÀfäÃ8wñÒ“´ô/ÖUg¦ºrå 2bå WÛ@S®µ`ŒkþI­VëzG®u®OW¶‹Ð³½~i®=0Æ5ÏUÖÊø”Zô„Î`‰FFÃøºÕºú-*.^õٺ⒒93g°?Ðb*]ëjcZaLˆF zêìÙ´ô ï ÕEWMLÍ!¤R©Îž¿ðý·ß˜º#€ºƒßóš'GÇéï½ëêâÜ·wïšWº¾$”Jå†uë 'mUUÕk>Y)²±žÐðàœ'Ðôðx¼qcFÓ4-•J».úØÙŠìí|-w¶I\\œÝÝÝj½v€¥ÁÊhz0Æ/í©NM/Éš“aÆºê‹ ¿ç ˜Îy°,Xy°,¸Ú€e{ÎS Èår>ŸoÑÚh* …P(4æFëÆ®<}||?~ìëë ‹O …"55ÕÛÛûÁƒ»ò BÝ»wï%ÿÝ0 @(z{{ÕçÊ“$É=zôèÑ£nu«MÓ ™™™Í{MËö IZ껵-$’ ‰í5„PÓmóhE š®À`\zƒÊvìX+++¥RÙØu± ++«~ýú]ºtÉr+ÏɆÄöÆ¸éÆ¶y´¢…ƒNM W` 0®@½ƒAežº,jå)“ɬ¬¬hšnìŠXÆØÊÊÊ¢'ñ[H$’f¯5ÝØ6V´pЉ  á ,ƨw0¨ÌS—EMã¯<B-¤§1Æ–.¢…D²!±½Ö¤cÛlnß.øõ×û÷ï—áãã0gNàÀžõ[·ˆˆœ'Rwî A}ôÑ•)Sü‡ k«•F×öz±tiøøñ>£Fµ7ow3b»çé¥"eåÆoinÌ•—þ/óè²6º‹tÖdé“ã{Žr 4£žú™=B’>:sþ|ZzA /O¯I_ ìÞ­~ëfª —.Çݾóü A…‚ÿQ#GðùüºdûÝö ì߯O„Ð7ßm 1¼—Å~ƒ×<Í©CÉÈÈdŸZ ¬ý}}_3ÚºnX*•*ôð‘ŒÌÌUË—ÙÛÛ›ÏKmó܉¿q}Õòeæínöp}’–vúìùÇOR ¥»›ÛÀþýÆËã6Л–Ò}M·™0 ZTÃLƒš¯¶/ƒº¬<ÿ<~üÑ£Ç!#†8@Wš:Î¥–ÓÀ#¦ý°é¸II¼ 8|>‡ÏçðxÜÌLÁŠ¢ˆìlƒûòΟ礥LfµgÕ¶mfÔM—0’ã;n‡„MO¯œ8ÑoÔ(ïììªqãŽíÙ_¿mÏ̬<{öyØÏœIË̬dïÙ¿m[\Ííõîüùô´´r3v4;¶·ªž„—ßÓÚX¡–œ(‰-PVèÙñü³»iòB3JÔ£.#äðÑ?,^òôiþ°!ƒû÷í[PXðѲåÇŽÿ]Õ;vüïßüaÒ.©ii7¢£yV<žËå<ÍÏßöÃÎóæÔ)t7¢£róž2¯GÞÈÏ/0/3ZdPóëÄĤ¤ø¤¤ÈÍ{úôû»/[AQ”ñeÕo¨ÿ>uúÈŸÇ|¼½¹<žÙ™4@´L~~AäÍ›fìX—ázè?æ,Xx?9¹O¯^¯Œek+Ú¹gïÜ ‹KJÌËÐ$-¤û,ÑLKÌ{Z`¬µ¬¦8 j¾Ú6®º *Œ±B¡8ú{xDÄÑ¿ŽëIfö\jiuœäMÕTÏyìí•°O¹iiäèÑÂY³ªÃÂAèß— ƒ…r ‰DÞ¤N¾›Éøø¢£>ÿ|Èš5(Š"bÓ¦a‹]Z¿þÆøñ>mÚØÖ_í‚x^â¢*•R­V!„‹%UÍíõŽ 1ý®‹9;ê.QMDÈüªêaFž)SÚ`Á¼¹³gLgFÈ¢lÞúÝžŸ~{®°¨ÈÝMÇXªÛ\jA [±¦ºòdÈd2ö1éå%Ú¾óÖ[œ7Ôƒ?ߘŸou䙟O·o¯œ6vu­Yh­ix/’™™H¡° U¼õ²²Ò“ÕËÃŒH~ûí­–/ï-•JÙëÖ 8vìáåË™sæ<¿."%åÙ‰©%%2‡wÞ pr²f¶Ÿ<™ä.—«}¤TRƒ·7ΛÍ'22ïÒ¥ 𯝼Ò!ÌÖðÒ¥{OOÛ‹323+ uh胷Þò¿~ýùöºzûvAXXVi©ÌÃC4y²¯CCT¿;âq`¶ç+ËŽÝÌW–µ·væ6È•g¯¹c5%;U7ŵÿŲøèÊÇv\á›®ü…æ_mF+~=tȳuë÷¦½­9BæÎšy9쟘[·^{uBøµˆÎþ~•••—Ãþ™9ý}{û’ÒÒKWÂJJJZµjõʨGGGvÇä‡bãâ*++G ÖÆË!û4?_©Tž»pqô¨—«'-𓀫‹ËÊe¯úl]BRRp` BèRXX×€/Ïç»ÿ Y.—÷îÕS"•F\9bxtLlÒýû666£GŽhß®V nDEyyzº½8ØÓÒÓ¯F\—Éå¾;ŽÉáp,Ñ"ƒš['âÿtb @„Pié3Œ±®îÓ,K$²Ñ*7+;;üZDEE¥—gë±cFÛÙÙ1»_½~Ý¿“¯B©¸öJ¥ê4p@­ºÜ¾s7+'§¼¢âÄ©Ó#† ºr«1ã£ÍlÑ_Ï’g¥×oÜ´âñÆëåÙúŸ«×î'';:8¼:~œ‹³³1iôt–ÁhÄ'&FÇÄÒè×á§n3˜º#Æø§ý{0g¶æÀðpwÿßgk–¬XyýÆÍÞ½zê?~k{Æ ÔbºÏÈfšIã'=‡‘`lÓ ÒèJóêܸ¯­Œ°ð«~¾¾sgÎ8}ö\øµˆioNeÿTëÁËåpûôîÅ&»Íçó{÷ìiÞ!_뛤78õ8É›ª©^m[sGŠ¢¤!!ˆÏ·zqʘs÷®]ÿþücǸb±õþývýúq’’0Æš;êJcKäåV. •JW2óªýòDR"QFDäLŸÞ]­Vjn·³ã”–®X° óôÂ…ô!Cþ8>³ªJõÿ—0`À¡œœ*æO6DïÜywÚ´³UUªÇ+Þ{ïÜO?%2Ú¹óî믟ˆŽÎÏÍ¿ÿþùƒï±5œ=ûBXX6Æ86¶ /¯º @ráB¦JE±ÛÍ.ô×_ïóWLL\NŸ8‘:hÐᤤb6ø¦Æ‡Ý±¾Fé¿Æß­NïÿÙ±Òh1–ï/¼Ú/~M’8ëyUÆ—¨ª>N;0?ußÚÌ?J¨ê“¥·†&®¨xÐ`­ÉdwïÆO7–ùà“%®‡]žòÆ$Œñ¾Ÿ9qêÌÇ+WÅÆÝV©TRRfÎ.•ÉN9;cîüÔ'O˜½Îž¿°hé²ûÉÉJ•êjÄõÙ,H}’†1¾ÿàAQqIé³²¨˜µÞþÛ"í>¥(ªO¯^V<^bÒó‹œwìú¿² .……ýuò$Ƹ¢¢bëö›6oÙ½ïÇòŠŠk×ç~¸èN|<þï8Ù¸éëØ¸ÛÌãðkó~”xï^eeÕÎ={—ºš¢¨úm‘AͰ±v‹¢coÑ­k¬»û4ËJH¼§YîÍèè9 ÞŒŽ‘H%Çþ>1sþ…EEÌî?ýràȱckÖ.‘J³ss×nØø÷©ÓZõI~ô¨  °¢¼"*&F®PèÉM+b&Ec¬¿žÛwíÞ¾s7MÓ×"#?\òñº _œ<}†$ˆ“gÎ|¼âµZmL=¥?ûkùªÕI÷¯ßøåésçêq4(=#ãi~þ¤×&ÊårÍíEzz¶¾£çøÅë{Æ €Ò}F6ÓÔH? è:|ŒÓ`³™5[m^÷µ•QYYyëöí±£G‰D¢ ÀîáW¯±Òu0&?|´é›-ÌaŽ1®ª®Þ¸éëœÜ<óùZßœèNýNò¦jªçgž@ h°™3ïi>BÈ»Cûš;ªT*¿Nrrs˜§ºŽ_]cϘÐBºÏ˜fbŒM¤ “€ŽÃÇx0 6õiPc6xLÕZg=CÔ¤±¡Y3öºyƒ¦éÇÑ4=rذïvü•Ý®m[=ã˜Q£ýónBBïž=B‘7n"‚xeTÈ¢¥ËM=äu½9Я¯®àÔû$oªæsÎóùv©ÕcÎýûœ'OT«WWË剤š¦ÕË–qPY»¯ž42™Œéx‰DBÞ»§+™yÕ~y")“©B|=iîÜ)ÌË«^½ºŸT*–H$|¾zÁ‚콂Bo¾ÙY$BR©T,wëæ*•ª1ÆW®dQ½n]ÿêêj‰DÒ¾½pêÔÎl ÙÊÊd2šÆ#9ËüB1Æaaï~óÍP±X,•JŸ=« B&£4ƒojˆê´#F¦ÅX¡ùOŠL†÷Å9Od«Û¿!K% -U.kûj‚8³L%fKd–Ë‹ÛçË‘D"QKŸu˜’"}úP’Û0­Ë![‘HΣG…´kÛ¶ªª*õÉ“œÜÜ™Óß—Éd‰D­R½;ííÇ©©UUUãwï\²ðC¦wÊÊÊ‚P(c™L†ñóÃíIZšžŒi‡ÃeoÌ •FóBhÚ[orHR"‘(•Ê9³fdfe§gdjî‚ÂaŒoß½+‘Jßg3ž[·jµ~Íjw7×úm‘Aͱ1¦iŠ¢(Š¢iÚÞÎÎV$:ú×ñ§ùù5Û«9o°eI¥Röqò£GEÅų¦¿'‘H$ ‡$§¾1)òfÔ¿m9ÒšÏgæŽ}ä EXÉišFFæö"bš71&ÚSRôçŸ/“ɱîã7-=]ר3n´ˆî3¦™fDÒøI@×ác ˜›Ç4¨Ù4ƒÇT­uÖ3Dõ—«§&f¿v­O¯^"ŒñAI’ ¿õŒmÛxywèÀ6ðZdäà‡¼®7'z‚S©^Šsžõˆ(*B#F „xÙÙ!îìÙŽ/.w&är„§´”M¬'Zãbh#“5E..B„PI‰¤æŸ’“KÕjèš—'!Ô®ˆ½¸±S'™L]\,us"„Zµ±tÑôó˜›+nÓÆÞÊêùȤ(ªsgç ÒŒ¬˜y…"„d2鯿¦Ü¾]˜ž^‘ž^AQ&’Z¿Ú Ü~¢¹å¾8»ï­U¡le Bhöƒ]œɱ !TªÖúDu²òÀ/NÔwây „r•ϺÛX¾úÈÑÁ!TV^^óOé™Eùvêˆruq¡( !TPX„ÚðåWì-@”J%B¨¼¢ÒÖÖV&“:{îá£GyOŸæå=¥jûœ[ÆÔùYYY‡žÆ¤lãåɶ—B¨¸¤¸Ö”…EE"‘H$z>ê(Š5rEQ Т:zÉ;ÑÛ»Ã×_ld!“Éߟ={û®Ýß|ù…©--..!ÂÃÝyÊt«B¡(+/wrtD¹¸8³ó6tšÅ`nlÄ4mƒ9[YY1bò·âñ4Ÿ27Ï2&þΪ5EÅÅîî\‡94(Šj߮ݨhý±ªGLJKŸ9;9Õükié3GÇç_ݯõøU«)¤cì!#@ é>cš©ç(6&’'ZËiðe›ë^çFmE=H~èáî¾ì“O™-\.7<"bÖô÷õŒEräèŸ/ZXYU•˜ôÝ7_cŒÍ8äu½9‰ˆ¼t§Ñ'ù—båiöºYkGî£G¨¬LÝ£Æq8!zófübüAöòBì Ýi°ÆG Æ${I˜ZŸÖ­m<=moÞ|úúë>Zzóͳ={ºÿöÛXkk.ÆH.W ÏG‹\®Bˆ9µÌ\ШýÉÆX$²’ËÕš—ÐÈdJ­¾xŒÿ½¸ñÅvó ­®V~”Ëå,XÐãÃ{·š8ñOÍBëò!¹;b±X¬ù\&—#„F’ƒÚì7Ý–óüÎIÌÅÆ^¤3zñ=O¦L9¥dK—©ä!É5¯>¦îåââìææ–xïÞ°!ƒµþ´zÝz¿/^ÜŽÉ™ù^û’E m„ÂçéD¤»›«D"™·h1—Ù:ù7§Lîìç·dÅJTcHèÉA»òìeó2³²ªªªüýýjít•J¥¹…ù4‘ù“œù8‰ÃE/ÎsjÖJ 2ŸH³™óõÜ"ã4«NDc,‘üûáAƒ ¸pù »¨¨Ù}µ†cÌçó1Æ …‚ýMW…Rb>ŒGµÝSZW0É­Ö݉¶ñ93ÿÓ´Ö ‰ŒIc°³j†@ P(•šS7sŽ®ÁfN??‡§õÞ!$–Hî''O}c’žã—ÙPëØCF—ÏÛ8IDAT €Ò}Æ4SÏQl0’FNuyÓ`­¡hBÓà‹}ͯs£¿¶"„Â#"‚;f4»Àsqq ¿v-ùá#ý㈡C÷þôsBRRn^ž‹³spPPuU•Y‡|-oNÞ\©^Š«mëE‰¾ø¹¸(ÇCÑ~~!'éÝ›ù'W©ÔW®P»‡1iŒOÖaL¿ûn׿þJÉ̬ÔÜ~õjNq±t̘Ž¡ŽBw+°µµjÕÊFOÎÞÞÕYYÿf{ëVñ3¯ÐÛ· Ÿ>Ÿ<9uá ¾}Ý8eU•ÂøB˜Ÿ 5Bˆ§&z[{3ÿT å•»ÂJ+elUê¿«Ÿ „| SIŒñ¸1£Ã¯>ÍÿO÷ݾ{·¬¼|`í¾·kÛ!Äáýý˜*•**&†Ïç'?zTRR²}ë–©oLêÒ¹3ÆX,®åd»ž Ö–¦éŸüêà`?°ÿ¿÷|Óœ‘32³4Ó߬ñøBˆ½œ/ÏÖR™,77ÝòÉšµÿûr“¥[T/šV'bŒsró˜K‘Þ龇))ì–䇄B¡«‹‹Árë+7c¢]¿õÔÅÈÎÒâåéYZZš_ðoå$?¬ÇZ$°¶2òĩӅ…EZúåÀAµZýêøqÌÓZß:n-¤ûŒif#Ùèóž˜_¶i°î¥¼ c,üÚµžÁÁ³gLŸùþ{Ì¿å/&IòZd¤þƒÑÙÙ©{×®7£b"®ß?öJ­6÷¯åÍɱãë N£Oò/ÅÊ›!D(•V.X]¸`uþ¼õãÆñ®_WïÛ§àp0ÆJܯŸ`íZ*'G¥RÑ6}ÄÉÎþ÷TµÞ4Ï—þjµÁd¦Vûe‹äòå½ÜÝES¦œùçŸlµšV*©ððì¥K¯µkgÿÖ[~〧>}ZþyTAc›¿ÿ½éÓ»3_*Ð*—½8vìØöîî6K—^++“Ñ4>vìñ?ÿd!î4c¢VÓZÛÍ+ÔÙYˆJM-’Ëå …r߾Ĕ”g …Z3øf„Èìq›¯bŒÙ3u>|÷~~k3çHŠU*U†¸à£'¿d+Jišþ÷”'Æ¡ ÂnU?Á§Jó¿Ì9>Ü©[+×kÅ{ÓÞvvrZõÙÚ[·ïP¥R©âîÜÙ¶cgëV­F©•³—§g÷®]wïý± °P¥Råå=ýfë¶Â¢"š¦™û­gfeÉår¥Ryüäɬìl¥RÅVùtSO5[¤R*oFÇÜŒŽ¹}úÜù%ËWÞMHX·z5ÉœÇØÁÁ!*6–¹ƒÜù‹—ÒÒ ‰D‚1 ¿š”Ĭoë±E5¿NÄUVV¾èĘë7nlûagtlì¯¿Ž uŸæ·y™ÇÚ·ïÚ%`ßÏûKŸ=Ãß|êÌÙ‰ãDZSzÍhÖdŒ™R 榫/ FÛ¤zÖ˜î‘i vV­ÑЯ¯““ã¶;+«ªhš ¿zëö톜9iš^üá‘H´lÕ§‘7£”J%Æøi~þ–mߟ»xéã9;9aÝǯž±gäh!Ýg°™æEÒÈIÀüWU˜›Ë4ˆ5^aÍ«s£¿¶¦>y’“;*d„Lƒ5Ÿß«Gˆë‘ýúôÖs0R5*däÕˆˆäGÆŒ Áæòµ¾9éÖµ«žàÔû$oª¦|µmE…ýÌ™Ïs‰pŸ>ªË—«ƒ‚hsY¦ZqàÒ$—^½(WWNq1Ý«—rÛ6ͦ? ݶ­ÕöíNÆ•=«?«—‡U"õ… oÍ›wáwÎs¹$Ƙ¢pp°Ço¿½J’¥={^™4éxpðÖÏžÉBB:¬[×c[¨FTŸo!IúÇÇ¿÷Þ©€€_mlx$I¬];èÿþï΋ãçßÚ¶mk·}ûíaÃþ<{v»Ý¼Bƒ‚Ü&Nô}÷Ýs>>ÏžÉ{öôxí5¿ÐÐ^^6óæu3;DuÙcíŸGaµZ} à£IIßôJúÔ•g_¬ªìe×q›ïL¬Ð¾‚e²{ÿ7mrø•ji;ëvßÙjµº![±{Ç÷_|½yíç8Ƙ¦i_ß/7ü`3|ÑjµzÃúµË>ùô½YsËÊʺt^¾d1ÆØ·S§aC¯ý|c/ϊʪÎþ~Ç9wñ¢››ë¤‰¯z¸»ºzmþ¢vlýVWÚmA¨Z,Þ°é+æ©P(è°w×||˜ë‘B3ß{o˶ïß™1‹ËåÚÙÚ¾9erfV›ÕÈáÃW®ùÌÚÚZ,·jå±rÙR6°ÿNì1/ÿ[»fÕšµ“§½+ÙTUVÍž9ãÍÉo$?|X-2RsêD„PFfÛ‰ÇËÓsÕŠåãÆŒV*•zºO³,ÍÇkV}²bÕêiÓgÚÙÙUVVöëÓgÎÌåj¼X>ï[—™©Õj¹é~éÕmÃ9¿¨˜Æ ™acÒèï,]Ñ býšÕk?ß0eÚ»€$ɹ³fþyüxCW·ßž¯·~÷Å×› ‚àñxJ¥ÒÑÁaúµ#† e.¬Eº_½cϨÐBºÏ`3͈¤ “@Þ¹"³Æ•Á&kÖ ¦AdáiдRj«³¡!j2Sw¼z=ÒŠÇدŸæŽE>,î΄¤$ýãAwìÚÈ|WÖ¼C¾Ö7']:ë N½Oò¦"ÒR“£bîLŸ>]O¢ÐÐPý ê"44t̘1¦î% ­­­Ù§Ì”ÉdšïÈI’´¸±±¸ y{«{ô¨®®Æ;88ÈåræÕKW„€ËFFb•ª|Ð ‚ÇÓ•Ì$—/_~Ù"‰"IÒÆÆ&3³êþýbŠÂ~~Î]º8K$ö‡ce%ŒŠÊ+.–øù9wïî"‹™æk!$x<sï;§RqoÜÈ¡(®F1¿&Ìn'Ik|NÆÆYk»y…²»PÅT ÖïÊ•+!ËR=ã*Gõ¬oÒš°nÿë.hËüÌsÉ¥Ô½úGˆ]ÒÓ;õ~¸iVcÌžEϘ;oÏÎ||ô¶ÖI„Zýïݳ²E-°kí>†fYšÍ›7t©Kn–˜TMeÞ|¨kê6I݇+I’\.!¤5„Œ9~ëkì¡æÞ}çS#i¡™œÓ ¦¦> ÖK)/Ãk«.¦Î¥fò5ßœ0t§¾&y3VžMùj[ã°¿i˜œLʪqÕ%’jµZÏA‹16£ùc­2´Ž"6Övó ÕœšuUÀ –¥zÚÈ^ŽUÇųV†æÑ?B´èj”žÞ±ÐáV{µ_\X¥?°Æ ȆoQ‹êD=ÖU®yó†.uÉÍ“ª©Ì›_’™SçáiÄñkѱ‡šQ÷œLmfüq‚i°fYMq¬—R^†×V=yš4—š}Èë ‚®íõ8ɛꥸàVŽ\цŽo·²jÚ?û²³³]0o®‹³scW`28~ ‰jþç<[ˆ¤å4Jlm þÇãär9mèçž#„!¦½9µÛ Ab‰áÚ¤_P/`õUÀ•g³‘´œF‰-þï¯K×K†õ˜[ÓUïmHЉ  ±ÐlM÷øõ¦APï`P5 ¸Ú€eÁ9Ïf"i9Í#¶Í£-t"hB`¸K€qê ª†+Ïf"i9Í#¶Í£-t"hB`¸K€qê ª†WÛ°¬Æ?ç)är9ŸÏoìŠXœB¡ …–Ë¿åD²!1½†1nÒ±m­há AÃXŒ+Pï`P™ÇìEMã¯<}||?~ìëëÛ¼û[¡P¤¦¦z{{[®ˆɆ¤ÙkM7¶Í£-t"hB`¸K€qê *óÔeQÓø+Ï   „н{÷¤Ric×Å‚„B¡··7ÓX i!‘lHZ½ÖDcÛ4—IDATxÚíwXÇÇß]®Ò‹‚ˆÁ"*öŠ jTìÆ˜cDbLTì½+v±ÅØ{L$š¨Ñ$¦Ù{lPóÄH/w\Û߃ëzeoï¸5û}xxvgg?3ó¾³s³;³³B $HKdEg@ A‚Þ8 -£ A‚éKh $H_"f+>~MEgF A‚*L&Ld¶ „ÐúõëBCC›6mæìì\Ñy$HPëÉãG?9Ò®m[2Ï_¸0â“ORRRl›Ub5ͳgÏ2ž=‹¢õë× þ‰““#EQ*U‰mó-H ·Q$AÐ4mK I"„lË´-V$Õ¨QÃÇÇgíÚøØØ ¢ÐÐ&ŽŽŽZ­Ö¶9$HÐÛ+ÜâØèàà€²ùA›c%‰¯¯/ˆš4iBQ:ÛfW AoµH’ü¯õùx{Çǯ¹¸¸””(m›]A‚½Õ"I’¶CŸÑ¶L;aEb1ˆhš^ƒ$H[$I"›vÄJo{mÝg´DB³(H =‘$IÓ¶l^ÞöÚ¸µ±„–Q A†"I!;ômÊ´pË(4Ž‚ bËæ#0¥ís7ms,}FA‚Êæ#0¥·½¶nmÌb€¢(³z!DƒÐ8 â¡ÅK–<|˜²wÏîŠÎˆ »«üG`""»™:ôûo'­Ã:88´jÕÚÁLJJÊËÍÅžž!!!E_ºx£q ÷Òo£FŠ9{ö,EQuêÔÉÌ|0sæÌ°°0»&š™ù<33S&w¦y½ó²ý¬2ô¹º„œXJ«EÙ¸qèíÛ·rss===7„(VK„)²ÙaXG½µmÛÖÈÈn=ºxñbZZZxxø´iÓOŸ>Å}ƒPF­]O’•IÐ;#›÷I~ÓkôÖµÁKvìXTT”ƒƒCý t:EQÇŽÓ¨ÕNŽŽdßM oÝ–Z­þéøq//¯Í›7=wnÈC{¼×³]ûö“&OÉÉÍÅá×®_ñéÈ÷‡|ڤ逃îÞ»NþöÛ'#> ¬WÿÔéÓÑ£bš6 ëÕ»wò;ë7lhÕºMxç.7oÝB?üøã€ƒëÑ9ztØÇÖ«ÿ˯'‡2"´IÓ.]#p4ð䟢Gż׳W³°æuñ߯¯6U¸Å„?þU ÏÚ±áŸIG\ŸùZ„uwwS«U—.]‰D ‰.]º¤V«ÜÝݸ3#ŒM¿ÝªY³&¸ººîÙ³§V­ZîînçÏŸ92:!á`›6m³²²Zµj¥Ñh6lXš0a‚\îxîܹ7nôéÓgíÚµÛ·oߺu[bb"Œƒ™………ýúõg’øúëÍ;vlïם߿Í[B..®}úôÙ´ékš¦«W¯>|øð'N=ztÓ¦¯wîÜAQÔ„ ïß¿Ÿ˜˜˜žžÞ­[7ÿ .€Z­ÖhÔm0Aæõ²ÏhÓ‘ˆÏô£8Î⃭S§NXXsN'‰t:]›6m®_¿–“Íhá¹ÑÛ«ÌÌÌ/^|õÕW[·n%âã×ìÝ»!4hÐ`&ÎÙ³geRYI‰òÏ?þ‹%………©) ==]*•ú>¡{÷ÒÒÒ®]»æîîþÃ?L›6­Zµj'Ož¼téRtttzzºD"-Q*^ýˆ¾œÛªU+¥BѲE‹£Gfddàh))===‹‹ ÀÍͦiEqQE›J_•¶Œ6í3Iø½àl4ÇYf±•*UjÞ¼9AQÔùóç[·nM’dóæÍ¯^½šÍÙ8ŠB Ý¥s¸^‹4aÂDF“xû6AãÆcNg"ÐE²~&ÙÛ¯º˜Ú„ââ–L:mÀ€UªTùì³Ï¾üòKV+ Ú¼EÂ}F­Ö²Å ¹GWH~#0–’¹±Q:D+Š‹+Wª\XXxìØ±ž={Ò4­ÓQ?ÙBŸñ­MÓ&äçç9ÅÄŒ:öÓOÓ§OŸ>mZƒõŸ¦§8ðíî];@§ÓåååmÞ²åÁýûÀùø¦,ªâãƒ=uêÔ#F¸»¹iµZµZUÑFd™H’ÄCFeô›Qþuü9€¸sg)Ó,™KÓôîÝ»ÀÕÕÕÓÓ<==ó òwîÜÕüª9pÍÚ¡> ø¶)&&æÉ“'ЩS§œœl™LþÅ_L™2E«ÕÖª]ûûïV¯^·t©H$ª_¿þàÁƒœŠâiÓ¦-^¼8!!a„ØÓgÎ<~üxôèÑ~~UŸ=Ë€#F¬]?nÜxHOOOHHxüø1Þ^ºt©T*ÉÌÌ€¸¸8­V“‘‘£FZµjåĉàéÓ§qqqcÇ~YRRrÿþƒ””Ô+VÔ¨Q£qã‘#G6hР¢m&ˆ¯pŸ‘ L¶ FçÖp O¯áh­`òÁÖ¨^Ø*yUrws× 4b„ì¬,‘ȽmrrrÆKlREÐj4jµ ß 888ÈäŽÌû¡Z«Ñ€X"‘ËM«T*¹£#AZ­†¦h©T ¡Õj•ŠbG''±X•”( ’”Éä€Z­FIe2‚ Ô*He2Ðj5J…ÂÑÑI,‘€Z¥êÕûŸþwÿþý¼¼¼“'ONœ8±E‹¾Ùo×Yè‚l(…B‘œœÌÑ2Z!ggïÊ•=zlÛ¬Ú {÷Þ]B4€Ð2¾}RpNê¦(Êèp°V£ÁM$h 4L8ûãhJ…@Áìâv°t›u_üÚ)J(KOÉÈx¦P(þý÷_¹LêêâÝ»w—É…áé·H$IrÜiZ¡—·½6njì„á½iA6ײeKW¯^Ó¹sg___÷¯¾Ú8`ÀÀ’’¡š½-"B$Ù¸e4wÛûFaAx;PÍÕ¾]»Îáá2¹#ž-ŒhZ¡(f:ª‚Þ|ÉårWWWµÚ–ÓòIû4av‚ðŒ {H«Õjµ AÖËÃÃ###C"‘Øj³cÓo„5½ d(///•J•'É–½}|ûR©Í¡‚ z«…_Šwss{üø±Rù_\ŽÓöm­ A‚Þét:ggç¦M›VtF*@·…猂 2.Š¢þ³³P…×_ $H_"ÁÓŒ§Y9Ye¤—J¥•½*W¯VlA³SÀ–3_œRQzeyâæí›b±¸^@½²Œïètº)tZ”f?¦€-g¾ +$8¥¢ÄXþô_§ˆ_ÿµsÇÎeüš5I’pñÊEµZ]všý˜¶œù‚¬à”Šcù[×oŠt”Ž$IMÙ^Q (Š ° Í~L[Î|AVHpJE‰±<0³vÊ8B­7Ô&ãÝö` Øræ ²B‚S*JlË‹‚°Ík0¨mË—jìÁ°åÌd…§T”^[¥ß;*«õ Dà׆¾´SÀ–3_œRQb,o»>#vø•³SÀ–3_œRQ"lØ2"„ÙØ—ö` Øræ ²B‚S*JØò " ´Ón4žZ£Ù»ÿ›ÓgϽÈʪâãÓ«G÷ýû™ZÒâ¦aõî?° °w r¥Jf2jši§ŒXµFÓgàà};·s'd6'7wUüÚë7oɤÒÝ"?‹ia¯\»6eÆ, Y¿fUQQñŽÝ»/_½–“SÅǧ[D×!ƒŠÅbë²]nÒ+…Ñ8l>züØl|³.x“Åál+''§c‡ô<›‘ñìƒáŸÀ‘„ƒžž]“ÊÈxöÛŸ4P.—e*#OOϰ¦MÆÄÄ-ŽøÛ•+ÛÀ­¸i4ÓgŒ_·þì…‹Ã?ú°š_Õ{þÞºsW^~þgÑ#õY˜ÀïWnÉ‚ùÉwïnÙ¾8/E³Lž›`¿=˜€W1•Ø%ËV<ùß?S'NÈÉÉÙ¾{““Óǵ°ø±ÈüÙ3«ùù!„-[vïÞý?ú°š_Õ”Ô´½ßÈÎÎŽû¥uÙ.7é•Âh¶ ùÄ7ë‚7Sf‚Ë®P(.^¾Ò¡][ö¡?OŸfs*º(&•þ,c×Þ}Q={Êd2㸀ófÍtwwšFOŸ>ݽÿ›ìœ¥ñ+–›Š_ö"3–Üg¤iÚ(± °ð—ß~Ÿ1uJÈ„Pû¶må2Ùþߎút„ázm˜ÀAcÒ(X¥V§ËÜLþœ²`·lßqúì¹ÌçÏÍ&d67/ïúÍ›ófÏì ¥òð‘£Ã†~`)–‰Ð(8¸’—WVvöå+WçÏžÕ%¼B¨mëÖR©tçž½cÇ|Žg±ZÁ/±Ka*†çŽoöô7VÜNÁ!ž:Õ¾mö¡¿NŸ x˜’òæ—‘]£!ÁÁL°EX3‰D²2~mII‰acŠãÛì© Ìï’¡ž?ÿ×ÕÅ%¸aNGQ”V«­æç§,)Q*•¦Ná 1¢(Š]³2Ådsn'&…wëqãÖ-|è̹ó]ß땚ö¨ŒX„PíZµúöîÕ«Gwžæ‰}šžþþ:N§ÓÔÍÏÏW(V;’¦iš¦ e›Ö­Bc—étºJ^^*•J¥R[—ír»W®]ëÙýEVV씩‘½¢FÄŒNLJÖ³¡aüôŒŒØÉS#{ö=êVbâÝ{÷Gù2²WÔ°O£¯]¿,¯x.SNÁšˆÎá/_Q°.Æ'ÿüóèñ“ˆÎáL¿=˜ðþGG¼×kxtÌŸ§N#„æ,Xýù暦ýpUüZ„ÐÑãÇ?üäÓÈ^QÑŸ¹pñBöizúøÉS"{E u;1éî½û£Æ|ѳ7cX,S§¿ÈÊš0eZ·ÞQ#bF'&'ãÈøf¹ßûC:Ev7U@ÑÔKét:¹\NÀ0qL¼›“› Læ!”š–6uæìÞýöê?`Ú¬ÙOŸ¦sXÞLËP÷ç£?úV©‚w)ŠúñرÀ€¹\n”¬Xfŧ‚òabNhãžÝ»Å¯ß¨ÑhJå†M_ôÁÿ:µËˆEu‹èúÁûƒ;uì`6ÃaüýwlùÚÇÛ捻¦I¥R©TZFlêÕ–/^äáî®Õjsrso'%}›ð}‹°f2™”ã\‹g?1¥Àw$ ã–µlÞ|úä‰ÊåÂ¥K £éÅŸ=aÛ6­§O™¤R«ç-\S­VOž;966'7wÞâÅ–&{¡!ÕË/jÒ4½*~݃¿ÿÞ´~2Ýæ YÑû5Ëd8EŽ5ìÓ‘&9;;}8ä}So›òÇ"„t:àUê¸3lV*•Ö©U ß+]¿qóÀÁ„ˆÎáøJ( !„_&ûãÔ©«ãÀ»råÕË––%Ûå#½R@›V-‡¾?!DQô’å+ \]]‘±–o4°G·H„Ž¢â–¯œ5mjd×.Ìn~A›Áéo¬¸‚ûT‰¸]Û6ž>Ñ¥3?uæl÷ÈÑ Õh¿9˜0¨¿11£B:´ÏÍËÝwà»e‹ŠÅâ‹—/÷éÝ Î¿àãí]/0`ÖüùÑ#>ù`ð „PÇöí´ZížýF|üÑk†ÕéâV¬œ5æ¥auº¸+ å{öï7uz›V­^ú‘Z²|vD€¿?4 òðp7¼Nq‡ŒfVõõ;þvRÒkw/Q©Ñ´Z­Ñœ|_P°>v\êÕ šŸßÑãǵZ­áRŒµIž…¯6o9éÒWk×Ö¬^ãw̶}F>L†#—ÉÆómÂ÷ÇNügnU_ßÑ1£l˜ÛÖ-Z®[µò‹ÑŸ+ë¿ÚTÆl—ôZºaÍ´Z­N§suuEéEÓ‹ß(8Çwsu5Ü¥ NÃÅé”Òk¸s§Ž7oÝÎÏÏG=LIMÏÈèÔ¡=>úìyfAAA§°4M玦¤HÄâaa._Æ s.Ftéüèñã‚‚ÂÆ‚ ‹ŠŠŠ [6KMKÂààRKº¹@cX7WÐQº'ÿüÃqºž±#(šЦ¿0náüMëÖâ¿S'+”Êøõ˜²ë™ÿ7•“ª¾¾2™lÍú ç.\,,,¬S»ÖäØñø2ÆÓÆ#0ì}£ÊxöìÈOÇÌ™U³FuSkü"<šÆƒÆ>™í3ò`2Ejצµ£££»›k€¿?w|þXþ¶ûèñ“y‹?ÿ÷ß®Ã''‹‘©.¡å¹uqqjÒ(˜¢¨m;wMŠgj%++g?±óàììÌÔx½Cì f›$Iv|½]½Ó+¼¤fíÀå”—% kÚT.—Ÿ>w.ªgÏÓgÏÖ ¬â㓞ž¹¹yàââÌœîîî¦R©Š‹‹;¶o·bM|qqñóÿ}–™ÙµsxvN|>.V/’dé­ ¢ŒaéÒlsœþÊ4ËÜw„À¿NJ^^8 ~½À‚ü‚m»v·kÛæµY=GŽœHÄâõkVíÙ·aÜRŠ¢š„6]«f S–ÇÒç! ,âäÕ2ò`2œƒ‡;dfæóŸ=Ù=2ÂVXž¶›ùüùä3ÔjÍÜ™3:wê¨Õj¹îýycÓ?^³nýÜ™3|¼½€¢¨*>>E•”¨œlå8û‰ma½ü˜mõ¼Ã±ûv´Œæœ‚Ã;µoêÌÙÞï½wúì¹þ}û0µÏûËÍËÃ5rró¤R©““SËÍ €«7nüïOëú×a¦=Í9ÃÇÇ›D^^ÃzyzrœÎíGGè}kÁ¯jU­V[\¬`Ÿˆ'¨2wÓ¦r"‘HêÔªµdÁ|N—tçÎŽÝ{fÍ›¿×S–žwÓ¡C~8ø­‹‹ w4°ðnXÝ=«™ '=#cß7Æ}1fè÷·ïÚo1ÊŽµ(Ãü±ßÿðcQQñäØñÚµU«Õ¸ö”ëîæ–’š–”|‡9”˜œìááîääX~ùÈÔ•ƒ nœ³qÔ‹oêô7\\NaZ„Â;v¸{ïþ©3g_deul×–9êãííêârúì9æ¤SgÎÔ  iZ.“5kÚäÒå+ç.\ŒèÒ…¢(oo7W×üüüÀºuñ߃ÿöÇŸ¥¯K—½kÍéz(Ód„i¸éÏÏ/ÀW®]c·j¦ròèÉ“!ÆçååQ< _ßYY%%%¦,æõôðhÙ¼ùæíÛsrs«øxß¹wÿøÏ¿Œý|tY²]>Bí{ƒãw|ŽÓ ¦¦6nÔH,›Ú®@kp8åe)!ÔÐÃÃcãæ-xƒ‰ï@’Cß¼eÇN‚ ê^¼t91)™îЮ]ü†”NשC{„I’Ã>ºië¶_dø§>zœpèðÄqcÙ qÖŠÓñìÚKW¯ùùú6 â( (‘JÀÝÝÍÁÁaãæÍý¢zß½÷ íÑ#v|S9©æç§Ñj—®ZÙ¥‹R©üîС † ñTã–çùÞôÃÔÔÙó~³{§§‡™÷x¾JÁ³e4Ëd8'~ùõï‡wnÝŒ‡’Ç}1fúì9‘]ºÝ"¬E-£EØœÜ\š¦ç,XÄŽÀaažX„Ðô)“¶íØyìø …RQ£zù³gµnÙ›¥ì޳ŸÊ¿eĵzßÎ핼¼LmW”5¸¢7 Þ¡ýá#GÃ;vÀý)æè€~}uuìĉcÇOTóó›?{fPƒøþ´U‹æ4M‡6nÌŒ×÷íÝK§Ó9öÓGVõõ8~ld—.W¯ßxÝ’`j×ÒÓ넆„lüz³£\~pÿ^Ž2U}} %5mêÄ ;öì]¿®yX³©'~;©B¦r¢ÓéâÌûjËÖUk×ÉdÒfMšŒŽŽæ®íÄÙógëÔÓjµ‘d2žàm*ŽT*Mº“„?[ÁM€[‰‰³æ-Ø·s;~.`5“áøx{K$Ü=f2¬R©Œ>åe²g °±ŽŽŽ†ïå[š[‚ $ ¾õ@i4îcZä8û‰] =k³w™hÿ{ú”O|S§ëej»¢¬Áí½J$±X¬ÑhpLöQ±X,‹ñX Æ‚ )Šb¦å€X,‰D$I2‘ùÖÒÓ ‚J¥xt¿wËQ@vž5 BH"‘~ýD.—«Õj©Tʑ̋Ÿ¯JQ昲|â­Û"xù"‡ŸpܾdfiLd>ér3ŽF£a/ ÏaþXv̲[€-..~²"·%%%<á|øå#v)ô¬ÍÞÕ+¬Ùø§ë…Ý®Xk€ §èåP¥R±8öQµZm껃EEEz!†‘ùÖŠÓ DS1 ó̾Øq ;Äh©yº•±¶-W!C¬÷™8b&%ßIIM7§ÜLþœwËâ'Wõõ àO¶ˆ_>â.Û†V”Új”¿Þ(§ü§Äœ×|FžD^Óâ–¯^SXTüZF&Î;Œe´z݆FAAKÌãO¶ˆ_>â.Û†V”Új”¿Þ(§ü§ÄX›×|F>½P>´¾ÃØŠ‹‹¹cr3ùsÞa,4 ýëן€¢(Ž;«ùå#>¥`ÛлreKKmµ Ê_oˆSþƒzínÚ&ÖG/g`™¥>à°ŽÉŸóc@«Õ–å¹ÇÙU|JÁ¶¡O­vAùë qÊP¯úŒ¶šÈVÚÖÚtZœ=˜¶œù‚¬à”ŠÒ«>#Øè± C°¡/íÁ°åÌd…§T”^õI’d–زG„V§•ˆ%6¡Ù)`Ë™/È N©(1–‘»›{vn¶‡›‡ájøì.½p½‚ ‹ ½½½ÀÍ"`Ù™ÿ)¬'Ü"~9ÈŠëßÞM†QKÚÛo‚S,-¦ýÌbØVدÔlË‹|«ø"„ž¿xÎ~ áÁ¼§A°„CH‚ÄËà¥)ÜÝÜ«úVÅW }ºaÈ«$€ Â"¦a& Óz úÎaÙLCóê§/·‰W‘ÍòmRáøâˆlÄl•î«5¥‰×w_ÄqŠQÙÕ)e±R“àæ[‘ñÒî¯í¾ÃH|0i|ly rrr$‰H$2õÑ+îFø…àO«滇å&˜ýå÷“Þ›Ä7$l•¿S*ÖoŽ °å÷ìÙ-¢i:%-%+'ËÔ[D|$•J+{U®^­: (;Í~L[Î|AVHpJEé•创·oâ×9V3+N÷ åN«€²ÓìǰåÌd…§T”ËŸþëñëï¿vîØ!T–Õðâ‹W.ªÕê²ÓìǰåÌd…§T”Ëߺ~S¤£t$I²Wª°BE$6¡Ù)`Ë™/È N©(1–<ÓÊüTï ±­¦òÙœ)`Ë™/È N©(±-o³UÈð—l¼n’=˜¶œù‚¬à”ŠÒKcÛìí@•Ε³¡/íÁ°åÌd…§T”Ëۮϥó‡mìK{0l9óY!Á)%À¶kz²±/íÁ°åÌd…§T”°å¯é œOy¯\»6eÆ, Y¿f)H™j¦ÏÀÁûvn¯\©’­°9¹¹«â×^¿yK&•öèùYôÈÒéZ‚íÝ þjøáïT®T©¨¨xÇîÝ—¯^ËÎÉ©âãÓ-¢ëAM}Æ“'öÑãÇ672hµÚ#Ç~úùäoÏ23eRiÍ5† Ô¦UKþüröÝáoT®\Éè¡# ñ'êùÓØ!žžžaM›Œ‰‰1 áHÝ q;«C×HS‡Îþñ›móÃG•°S¢Ï~ûóÏ!ƒÊårÛ–ÅP¸i4ßgÄwÝógϬæçÇñ~÷¯ˆM˜ßLÀ+<Û0«K–­xò¿¦Nœ““³}÷''§?j)vÉ‚ùÉwïnÙ¾G^´lÙ½{÷?þèÃj~USRÓö~s ;;;vì—eÁÚÃÈ0oÑâ›·è_/0P©Tž¿xiúì9cÇŒدŸ$ÊS êÕ‹_¹ÜÝÝÍ”[Á’¡^|ʼY3ÝÝÝ€¦ÑÓ§Owïÿ&;giüŠå¦â[”„Qñq VüÊÒl<øûá–í;ÎíââÂ@8¬QFqT ;%šþ,c×Þ}Q={Êd2Û–…-Æò€ûŒÜëãC‚ƒ+yy™fŠÆRæ–í;NŸ=—ùü9˜{nm67/ïúÍ›ófÏì ¥òð‘£Ã†~`)6¤Q°J­ÂѲ²³/_¹:ö¬.áBm[·–J¥;÷ì;æsS+ñÁÚÃÈÿ{úôüÅKq th×–¦i‚ ºGF,]¹jïþýûô)Ï—¬ùÈÅÅ¥Y“&nµèæÇ fº?-šI$’•ñkKJJ /Q+’àNÚìµÙ¬I¼+ nÄtfišæ°FYÄ]%씨žeì'†O2¿K¦Ä—–[¦hlÈíĤðn=nܺ…9w¾ë{½RÓ•…‰ª]«VßÞ½zõ謔—1«¡§ééàï¯Óét:]`@Ýüü|…Ba)–¢(æÊQ(”mZ· i¬Óé(ŠÒét•¼¼T*•J¥. ÖFÎËÏ€ª¾U´Z-ΪF£‰êÕ³Cûvjõ«Ü9öÓÐá#"{E}úÙè¿NŸa¿=˜ðþGG¼×kxtÌŸ§NãÀ+×®uŠì~ÿï¿ÇNœ4úËq8ðèñã~òid¯¨èÏÇ\¸xÉ0'_ÄNœ=ÞNLNîÙ=nùJ¼{éÊ•N‘ÝSRÓ._½Ú¡k䋬,„MÓ»÷í0dh·ÞQSgÎ~ñ"‹]1Ì&‡^öhDS/¥Óéär9A.Nˆ)QNn. àJ"5-mêÌÙ½ûìÕÀ´Y³Ÿ>MG¦eöÚd2†h„]ÿ*!Æ8{OÓÓÇOžÙ+jxô¨Û‰IwïÝ5拈ž½‡}}íú þ–á®l$:<øÃaÝzGÍœ7ÿVb"6cº S¦uë5"ftbr2&«Õê-Ûw|0ü“È^Q} ž6{NjZ>„kô{H§ÈîŒÁ ío]Õ2âz>-#býrÇÖ ,HhãžÝ»Å¯ß¨ÑhJå†M_ôÁÿ:µËÂDu‹èúÁûƒ;uì`6·aüýwlùÚÇÛ捻¦I¥R©Tj–!ר^mùâEîîZ­6'7÷vRÒ· ß·k&“• k#×­SÇÕÕeaÜÒs.¨T*X·îÔ‰$ ÞýñØOë¾ÚÔ¾]Ûy³f4¨WÑÒe·n'"„¾?üÃÖ»:uì0g挀ºu-]výæM„JŸ­Š_×((hô¨hLذisçðNsfL÷¯ã?gÁÂËW¯êå¤eó°ä;wñÏÕÝ»÷ ùî]|(ùÎ]Oÿ:µ™5¦BÚ½oÇöígM›æää¸aÓ×L³Å'9Æ8ª•R©T*• …âajêwßê.—É™„˜±CŒ&¡P(&OŸ©V«'Oˆ›“›;oñb모ñ:ðzÅgr…7æ,XÔ®Mëé“'©Õš¹ Í[¼¸[DÄŒ)“µZmÜÊUÙ¶¨J0‰þtâ篷mïØaöôiNŽŽK–­`gfaÜÒÍæMšTRR²(n†ìؽçð‘£½zôX8wöç£Fef>Ÿ6{.>3òSX0göšËØE3ZRK«–¡åÏw`¿{„Ò£&hlEQ£cF ûtäƒ EEEÎÎNyß蛡ü™€×°cÖ@6["žX©TZ§V-|A^¿qóÀÁ„ˆÎá¸ÊZ„e“išÆ¯|ýqêÔŠÕñà]¹òêeK9Î⃵‡‘e2ÙêåËÖnØ8wáb‘HàïÔ4´q³&Mð0EQ{÷Ó¿oŸ11£BíÛ¶}üäÉïýÔ°Á7õï‡Ã;uhŸ›—»ïÀwMCCqg¬wÏ÷úEõƦسôˆO><!Ô±};­V»gÿaaìœ4mºsÏÞÇOþ©]«æ{÷›5irãÖ­ìì//Ϥ;wš5E¨´›‡Òh4ßü>ªWÏØ±_Ð4ݱ}»±'%%ßAiµZ>ÉÁË'ñÃFF³«úúNŽ;)é5›ãî%*µ§©$>‰Î/(X;®FõêPÍÏïèñãZ­ÖpÁ³N7šU½È¯ÀA{t‹Détº¸+g™Ùµ ³[PPèè(çcî*ÓÒét{Яï˜ÏbBÛ·Ÿ8uZvN“™6­Z }0®¨K–¯È/(psuÕhµc>Õ/* ߤ»ººÌœ;?//ÏÝÝ=Àßyx¸Ó4­W^½’ZZµŒXžÏŒE-£)šD.“3féÊU4Moˆ_m´¡±”É?·–b)ŠR–”lÛ¹ëøÏ¿Ô¬QctÌ(+rk”ܺEËu«V>LMݵwßú¯6MŸ2©ìXÛük×Þ¼a}NnîíÄÄÛ‰IW®^ýþðUªø,˜=Û¿NíÇOþÉ/(ïØù’ßš•Ëu:ݳÌÌ‚‚‚N^…wîØqãæ-L"¡!!øÐ“þ)((lÜ(¸°°ôÛ~-›‡­Œ_KQI’%%*X£Zu'GǤääZ5kܽúä‰wîÝK¾{·uËÿý0ªgO†Œz–™YXTÙ¥3óÒqDçθeäNîuËÄ-œïîæŽCžf¤oÚ²-~ý†N;¾nó×a*‰ª¾¾2™lÍú úömÜ(¸NíZ“cÇkµZS•ÿ¬&¯_ L @Hp06¸››+„±wu”Ž¿e8ªNëùó³³sÂYÞïÔ¡Ãõ›·˜Ì´k†¹ººàK !4aì—øW-//ïizÆ/'ü¢i hêe×çµòê•”gÕ2aI¦eä÷µo^-#2óípöÕÛ®MkGGGw7׎øü™üsk)öÑã'ó-~þï¿];‡O?N,›lbÌaõÈ..ÎÁA CSµmç®I±ãŒwøaíddüÜÊÙÉ©C»v:t I25-mÁ’¥K–¯Ø±ySQq¸¹º2ç:¤H*ÍÍÍÃdÂÝÝÝT*Uqq1”vÆ%øPQq1|>.V/]¥RéääÔ{À@&¤]Û6Iwî„6n\XXܰaPƒwîÝswsÓQTÓ&¡!xYðüüpsscR÷ðpLJ¸“Ó3 ø×©SÉË Ô¯X_°m×îvmÛ¼æÊ×{.¦’ˆÅë׬ڳoÿ¸¥E5 m<::ºVÍV×%½¬êGf@ãv–,ýiÄ% ’dïZdŽ*1&fdçd€«« ÛûìÌ8;;륎ð=YB½û÷]]\«W«æääøªPz4±kQÕ⸀ÿ÷¦yµŒ„™Ñ46äà¡Ã$™™ùüç_OvŒ° “gn-Âf>>yÆ µZ3wæŒÎ:jµZSKBñÁâh©­Y·~îÌ>ÞÞ@QTŠ¢JJTÎÎNVcíaä;÷îMž>só†uµjÖd ^£zõO†}´`IœR©ôòð€¼¼|\x–™YXX„Isóò˜ðœÜ<©TÊÔH&Ÿ^žž0wæ ovÒøaîWë♇)©{¿9pïþýZ5kÊd²FÁ.]rwu­S»6»iFáÔ³³s^¥ž“‹q'ghÜ 0»~U«jµÚâb»xJ)s7m* ‰DR§V­% æëtº¤;wvìÞ3kÞüý»vX]— Ï2Õý4ÄÜëvA†5 ?]Å-B~~¼ríûÚ2•Ä£'O† ž——GQTHpð€~}_de•””Xçt³Y}¨wÔÄ.OËpW ¹\Uªø¸¹ºž:s–‰pöÜî̤§gh4šýûŠE¢’’•Ju+1‘Õνv^+LßþÑ,ðõë–>+J ÞÏB|†5Bñë7††6nÓªe‹æa'ÿcëÎ]“cÇ—…iQn-ÂÞ¼u›$I¹\vùêU&NhHˆÑÛ^,›ìåéÙ²yóÍÛ·çäæVññ¾sïþñŸûùhSgñÄÚÃÈ2™,ú“á›¶n{‘•ÕºUKw÷âbÅ[·N9;{úT„A ýàë­Û@ÃúõoÞºuçî½UKãH’úþà-;vQ?0ðâ¥Ë‰IÉx`ñe>KsN’ä°‡nÚºíßYþ©':ú);&“$9dÐÀ-Ûw$Ù((èÂ¥K™ÏpîäŒöµ9t©ÜÝÝ6nÞÜ/ª÷Ý{Ò=ÒKÝhÕüü4ZíÒU«#»tQ*•ß:Ô°¡Ñþ‹Y§[r-nèW‹,c¶JI ý`Ó–­$A4¨_ÿòÕkÏž“™©Q£ºL&‹_¿±gî4M_»q#)ù$&ßéЮ-~,xéê5?_ßFÁAÕ«U3j‹ªWã`Ã,>Ã'~ùõï‡wnÝŒG“Ç}1fúì9‘]º4 ²šiEnybsrsišž³`;Î7»wzzxX„e“išž>eÒ¶;?¡P*jT¯1ö¬Ö-[p|"ÎÒ¹ß>uêÔ>ôÑ»÷+ÎÎÎ Ô_µ,®QP†÷‹êMQÔ‘c?ÿù—j~~ógÏlDQÔ€~}uuìĉcÇOàð  (Š2.èÛ»—N§;rì§Ž­êë;qüØÈ.] ­jִɉ_~mP¿BÈÁÁ!0 íÑ£† ê3—Cد¯J¥:þó/'ÿ£ihèÜ™3ÆMœŒñNN?ŸPÕ×RRÓ¦Nœ°cÏÞUñ뚇5›:qⱘLr$·`ÞW[¶®Z»N&“6kÒdtt4GEµí »á0µËÇ2ÜUâêõ8NßÞ½ÔjõGŽþòÛï]:uütøÇK–¯‰D¦RwqvŽ[8Ëö«×®susíÖ5bücFéò•ömÛÔ  ÙøõfG¹üàþ½ž†ö7,)ÿªeÄøgÏŸ­PB2Ô­ÄÄYóì۹ߴ›’T*Mº“„?[aHcCD"‘D"Á7ààà “ÉT*»w`)“ Ä4¥RÉQŸ,Â:::¾éa”ÏÕ#!‘Hð­BH£ÑßRìÿž>µ¹‘«ŠÅb’,}öBÓ4žåËD‹Åøw!­VËÔ<±X,‹ñ³l&ܨ0$IvL£Ö‰D%%%ø~V&“‘$‰ß5$ãÔ3õ™MÎh> ‚pttÔh4!‰DEiµZ¹\®V«¥R)wŒ%áågêŒVT>N1›U&$IöQ½È†FããSU‚¡¥¤¦úùùá‹ÿpnÞ¶ý衎Ô$ ¾Üt:vMÓjµš ©Têàà€ÂîÆ5œmÃ’ZTµØ–O¼u[/ßš0âŽÃD3“ Ñh4ìÜqvËÈäC³[\\ üÄ5$—””Øk[#ó´ªZ­6ú};£áFi¦zÒ3Ó&%ë19YTꢢÒ) l ã@vÿ²MšÙàó£X&·¦"sÍRã0áKW®nݪå§ÃáW®] ¨‹‹c*uC¦B¡`¶õ|­WñýõJjQ‰ô,Ïw²¤ä䪾¾¦"`7Í,¤˜…MJ¾“’š¼ŸKXµŸ‘•³Þ§ôz¯Çî}ûýªV½yûöÕë7¦Lˆ}óËÂzÎÈoÎÔêu-Y0ƒ`f–YH90+ »|õšÂ¢"°ªe䉵Ÿ‘•³Þ§à§Ï?ÿz2;'Ç»r¥˜‘ŸâIo/3b¬M\¸x¡Fõ÷Þ"‘¯‰FQ”^‡–-‰Drÿïûr™Ü('¤˜…uvvÆPŠ‹‹-ªëü±67²  Ñ»á‰D‚Ÿ2ã§ÏoÅG±å“n'šŸé­Õjù´ôèå ,£4žr`V–y8e?,ÏgXñUˆÞ §Xô€ï cmó+JðTé“KÑìǰåÌd…§T”^À€åO¾ŒŠ!ØÐ—ö` Øræ ²B‚S*J¯úŒ$I2+wY#B«ÓJÄ›ÐìǰåÌd…§T”Ë€ÈÝÍ=;7ÛÃÍÃÔ:û`àÃß1‚ ‹ ½½½ÀÍ"`Ù™ÿ)¬'Ü"~9ÈŠëßÞM†QKÚÛo‚S,-¦ýÌbØVدÔlË‹|«ø"„ž¿xÎÃÃA0¯,á’ ñr xi w7÷ª¾Uñ¨GcŸnò* ‚°ˆi˜Iô^ƒ¾sX6Óмú)ÂËmâUd³|›T8þ‡Êòmþ Ù*ÝW«y¯ï¾‰ã£²«SÊb¥2&ÁÍ·"9â¥Ý_Û}=†‘ø`ÒøØò@äääH$üj—^$‹~0ñ«NÀŸV!ÌwËM0ûˇo'½!7‰oH6Ø*§T¬Þ`ËïÙ³ûÿ˜Þº² . 1%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/MiscellaneousPref.png0000644000000000000000000000013213135434036021054 xustar0030 mtime=1500919838.096648472 30 atime=1500919915.009981805 30 ctime=1500919913.349981805 denemo-2.2.0/docs/images/MiscellaneousPref.png0000644000175000017500000015647013135434036022742 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRº)’‹øgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>€IDATxÚìu\ÍÀg︢îAA EJTJÊ"íVLl_,|»»»»úÚ-aˆ…-yÔW»¿?VÏó¸"ôù~øèîìÌ3ÏóÌìîs3³»X\B\Ò½ûááuuu%1A€¿ Ã0ŒÂçóvïÞ­Ó´qS‰H¢««+‹´­U‚ BÂ`0\]]©&&ÆíÚµ#µ­U###„Aaa¶•@\.wÓ¦ÍG?^PP¶Õào„Åbé „$‰¶5€?œ¡C‡]»vÍËË“JÕÉËË;vl``€&g̘ѧOß-šÛØØR©:‰XÛ¦(fìØ±gÏžóööÆ0L"GDŒ¯_¿¾¶õ |À–/_6zô¡P mMàÇή~\\œµµõÕ«W‡ òäÉc*•ªºˆD"ñòò:qâd½zuÂÇq\Ûv¨7 ˆË—/7îÀýöööÚÖ €r€‚ÈÑ‚€?øƒ¿ŠýC!$(â;9:…B>¿hé’¥^^Í®_»¼bù D)/S Ü­[÷ÇO ‚=z —›ÛªU«:JÄ¢Ï_ÈU[|ã†Íšy¯Z¹ª_¿þ®®G…"—ˈˆøw꿽{÷¹{ç©›\AD[¶léÕ«×°¡Ãz‡õ.©E|žŸ¯Ïˆá×.]FÁ(*V<ÛŽíÛ}¼}V¯^Ý»wŸÆ›Ì›;ïÐÁC={öjÔÈuùòåd‘÷ïÞ 6|üøñþNMÕ~+Ãüý¡Øòåˆ NU÷' üÔ¯ßàæÍ›:::kÖ¬¹}ûvBBBaa]ýÎ;K$77·Aƒ¶mÛnåÊŽQ@@@rrAõë7ˆ‹‹³³³‹Å!!!Ū-¾oß¾ êŸ9sföì9ÏŸ?Ÿ>}º¥¥åĉ\]÷íÛ7"b¼X,îÒ¥«lÁÌÌÌfͼ¯]»Ö AƒQ£F­_¿žÇ+ÔÄÀ¸¸8sóZäÈýû÷ÇŒûèÑ#¯PN¾BŨTŠÂl‡rrrÚ¼yóêÕ«ãââ 6lØpúôéÄÄ@еkב#GvìØéÌ™ÓkÖ¬ýßÿNUå¨¾è „p‰aÚVþš7o®««Û¸qã­[·AÞØ&MšT·n]„Pffæ³gÏ‚‚‚ÉÌÙÙ9›Ü.(ÈÏÎÎVxTmñºu뚘˜„…õž5kvVVÖÕ«W÷ìÙ-‘Hnܸnll"‰ä4jÔ¨W¯^#Gþ3þ<Ç5rŠ ~yò4 P$zxx<{öŒÏ/¢ÓiÚngøù±Ô‘J¥h[øó!Ç ‚H$¼ÂBDHð‹p\RŸ‡JIIa³F ùy?JHPT¤ì¨Ú⸧R~ü& …ùùb‘ˆN£‘ŠKÎËåîÙ½û§O¯_¿þôé3ì—šچܸpþœb# DÚuÿÞýF!D¨Ðü7ÅBÙ(ös[¢C¥ „(ŠD,AQ©T±HDÆ0 C €rçÇÚ‚<Çáþà¯ÂþHòóóóòr $¸DšHf¨ajjaa±nݺì쬸¸[ïÞ½•üWW{T“ $^^^Ë–-KÏÈ((,¼s÷žÂ‚oÞ¾=~âx¯^=-ZôéÓ'=}}©çÏŸ‹×70Th NW®^Û½gwTT”X,ÑP1 ³Én›7hÐàÆB ‰‰NNN&&&Zohøƒ¿?òâì䬣£f…6eaúŒÏž=ÿöí›Í®caA&nݺ-!!!//ÏÉÉQ_OðF\6nÚ´víÚœnpPðömÛoßÎÎÎnÒ¤±ž®®ÜÑ]»v©.¾g÷žøøøÌÌÌV­Z®Z¹ê~RÇ›8qâåË——,YréÒ¥úvvÎÎNAÈÄ%’uë7\¾|ùÆÿNÚ A Hj‹P ÿd ùúõëW¯^8q|Ïž½oÞ¼™?o^S·¦<“¯P±€€Ö.ÎÎ ³Ì™3'5õ5ÇkìÚhÞü¯_¿f±X®\<=<×­_ãúG-X0ßĤ†PFUÊ lùòeƒÔ¶ð磫«Gg0D"¡ H }ç:ƒÉd±t…BaŸG.eÐÑÑÑÕÕÃ(‘HÄç2L&‹%Í w”Î`¨.Nf ………L‹Éd …‚">_WOŸJ¥â8.(*"Ÿ£–+ˆa˜®ž>A† Šø"‘ú—ÄëééÓètÒ4 Ãpœ(*âKÄ?^¡‰b¼ÂBÙHù‚¢¢¢"¾®®Nçóy‚¢"*•ÊbéâaŸÏÃáE2P`Ë—/áÊÑA!X€rt‚UĨB!„0xŠ¥@ € \@ . PƒŽ¶*ƾ}´kוZ°f ¢ÓÕæ§¼ÏØ»—ò勸eKAÏžÚV_1Gùü™`±ð:uÈêÓ§¬•+%õëó£¢´­ÝŸ@õògñþ ]9šœD¤‡eÊPð5D-Zˆ‚ƒVm¾ûW½ú Pj \ø+`-[FIKCÑ;u¶m«:3–Í ²³B˜PXeÃÄDƒž=ž¾yÿû™Bùþ~â„ØË .[åBõògñþ E9žD¤‡å™›6‰üý öî%ôõ+Û‰¥¢zõ Ô@¸ðç£sÿ>+ „è'N¨ tž>Ų³q++ÞüùKKm«_Äç>Lp8ÚVäüYjJtI6äÍžB"‘΋Ì h·né[°c‡¶í€_PCBB7n¬m5€ „¹v­NR’ÄÑ‘’‘AIKŒ‰h4ùõÇŽ¥|üˆh4¬°Ãq±›™Ž2wì`ìÜIKL$Øl¼vm„^DãèQ‰³3ad„eeéGÿßÿÄîî„åóg½ ègÏ CCEñ*,'‡¹e c÷nZ\b2q++2úô©^t4õÕ+Zb"cÏúˆJÅml~Ó3"‚òñ#ÆçëåÛ7ŒËe­]K»qƒàpH‹Hh·n1wì ;¦óü9nmMWþ—ìlÖºuôóçB¸­-ýÄ æÆ´›7 KZã/}vîd:D?wNçåKÜ‚`³‡³V¬Àx<‰³ó&Û¸‘¹q#Ádâ¶¶ +¥¾x²V®DT*ng§¬udëemÚÄØµ‹~ý:%+‹µj5%Eìë++tÚÝ”±¯¯¬?•Õ«¶ê2j®…­S¼?¨v»2•TÈѰ÷ª8‰ä}òîãÈÜÖ–?}:ncƒÛÙ‰½½EíÚ1öîÕyöLØ®af¦ÚÉj{²Â‚%íº*,ýeE:‚¾}Õ¶P}Á–/_>PÛjŽsœ)ß¿çŸ:¥7båÛ·‚mÛ„;«(alb"ÝvéR°u+Bˆ’žnЮõí[é!~L ?2Ò woÚÅ‹…«W úö¥]»fн;B¨`çNa‡ôS§ô{xä?¯°"Ê»w†íÛS¾}û%sòdþÔ©!Ú•+ÅÆoù&ð§MS¡'YJìå•wö¬&ò &+úùõB %ÿøq‘¿?BHoüxÆÞ½ÒR„®nÞ’߃•_JÒéH(”&Š]]u=’îæ<( "·©ïÞ`¹¹¿D0yGbyy}ûJœsoÜ@!‰Ä¨aC,;;7.Nâà ºRÞ¬YEcÆ(k–}údئ åËY9ÒÁv9§ýØõõÍûßÿd)¬WEÇ(ÞÜ¥Ð\!ÊZGa¿Uáv±B•”ÉѼ÷"%'‘2ŸHÿËÆ‰;wò§L!‡÷UxIuOVV°D]Wµ¥*¬þ0àɈ?Z|<åûwÜÂBäë+ìÔ !T|®Tò–,qtÌ?|˜A&êNJ}ûVìí]°e òdD£±æÍÓyüXÔªBˆ¼ÊPŸ=Ct:Â0ê“'!êãÇ!QëÖÊ*Ò›2…ò훸Q£‚M›ø‘‘ˆBa-]J–’"qq)Ø´©hÔ(„kÅ êÓ§ªõ,‘|¬¨HÔªUÁöíb„ãŒÝ»BÔ”ÆÞ½ƒÁ›?¿`÷n±§'Æã16mRê/¡PØ®]ÁŽbOOÒÂŽ¥»ŒÃ‡¥Y‹a¹¹¢- vì(رCäïæöíâ–- ‹úô)yG§%$`ÙÙ’ ŠÇ ²•н½ W­¶k§¢u¤mGùòEbo_°a?"¢Lkè~¯WmÕeÔ¼8*ZGYPæve*©íWšô. …(Cìᢾ|©¡“ödõ5뺚œ§À߬]øÃ¡;†vïŽ0LØ¥ sÓ&Ú¥KXAŠUTbWW„ad$  S°Ü\ú™3‡“è¡§‡ÂæêÕôcÇÈáGê£G!gÏ$ bùù:OŸ"„tžr€”’žÎØ·qü8¯Q£™¨Ôü={pKKa÷î”ôtúÑ£ŒcÇx?Gì‹ëYRù‹U°};ahˆh4ýþý±ïßIcBDÂÎñš5ñ:uÛ·KÞ‹ƒ›šlÝŠèt¤££ß¿?^«VÁæÍˆF#wI™?ª305o^¸|9^¯B ´[·(éé“)jÙ’~îíÂÁ AôÓ§Bdl§ ÂÀ ÿØ1‚ÁPÝ:âF0.—~á¢Pò÷íí­B”oß–®;ÉÖ«¶ê2j®¸Û(oeýA™Û•¥º_iØ»4¢ÜÈHj¬&^RÖ“•5o®a×Õè<ÒÕ•þ üÁ@¸ðG#‘÷7 z÷&?=Š ´sç„=zh.†úò%’HŽëJ¦P>FQÞ½“4h€[XPŸ>E õÙ3q£F§sïBˆúø1Áf‹›6U,35„ÄÆF:Ï*òócìÛG}õJšGbk‹ÿ\&&  =*{TÎÈÇë×' B?î^d¥..x:”OŸ8..bWWQ@âD¹ÉZYpòÙTRnkK. ‘•IR¸x1íêUææÍÔÔTê»wÒõ§!Q›6ôsçè.¤9ƒR=a$±µ•ÞÞT´Bˆš’‚p\bgGÆ !Q‹¥dëU[u5'1èÝû——¼½Æ•¨uT»]¡Qš Iï* ˜@€B,–†^RØ“U$à º®FçQ­Z!Üܼ\lª,.üÉЮ^Ÿ\„ÎDzéŒ'J./,/vñâoé!QË–Œ}ûtž>¥¾z%èÝ ôS§¨/^P22„: *U±L±!D0™¿’ôôBˆ¼P"$wôÇoé­Z5‘Ïb/H°Xy.°–.¥Ÿ>­“œ¬“œÌ\·.ÿøqr|¸ô„~ÿþôsçB‡#±±ÁÍÍuȃ¢D¡èܺE»y“òý»ÄÞ^Ò°¡*i2·7Õ­óãÆ#ûËOõ¯@‰DÃzÕV]FÍIdzzE%m•nWh”&hÒ»Êy3–Ô­«¡—öäÒ´N©,%j×F.ü@¸ð'Ã8~!$ìÙ³(<œL¡¦¦êEDЮ]ÃrsÉÅáš@^ð:u ~NáSß¼ÑIH ç8Ép~ä‰$ÎÎH$B1öïGÊg"¤2©ïß#¡ü‰CÎÔÊ^t¨ïÞaù[‡úìúù;FsUËWåÝ;æ–-"?¿Â%K¨Ïž±–-£ÿïÌM› Ê.PŸ=£Ÿ;G°Ù{öˆ||†ÑÏÓÿyßÂkÔ»»ëܽ«ûï¿HÝLD‰Z73CQÞ¾Åø|ò¦B}ñB”Ÿ_±§ûñ]êªË¥xÞÿýÒ±F’¶Žj·—šR÷.‹éGŽ „Ää@i\ÆÖÑÜR‚Á ŒŒ4?7j ,uücÁø|ÚÙ³¡¢ÄÍš‘‚¾}‰5PH—¹ «Ebg‡[YQ>}ÒyôHÜ´)ncÃØº•qð ù›¨E „a?.pŽŽä|*ýða¤r£ÄÖ·²ÂòòtçÏGB!õÙ3ÆæÍè÷ËÏgÍ›‡„B‡™[·*ˆã¥–¯ æ¦M¬ùó±¼<‰““„\µPæWì‘?õKbo0Œúü9kñ⟺JBÂ6m9w n&¢D­#iЯU +(`Íœ‰ ÔgϘ¿¯Ò'‡m¨©©”ôtÊׯ¤—Ê¥êr).íºâfÍȶPÓ:¿÷µnWŠ’~õ£hz—j(>èL}ýZbg' ,‹“ËØ:%²4çõkÁàÁe´¨â@¸ðÇB;ãñðš5Å^^¿R)ò¶¤öùˆßÀ0Þ¬YÃt££--9ŽŽ:K\\DíÚ!„±‹ %3¯U‹01!jÔÀkצdfÊ®!jß^îIÂöíB´›7±¬,Í¥ ;v,ؽ[ܨ¢Rñš5ýúå>ük1yëÖ!‰“Ó]WW¤Á/-açÎ;vHœ…BÔ¨!Ï?zôÇ%!„^·®ØÍ Q(„¡¡ gÏüÇeŠÝÜ}ûººXv¶Â‰µòƒa;w »tÁMLMìæV°{·(8¸ŒÍA0ùGŠBC 6›À0±OþÑ£¢-]]r¼¤~}òÕ%ZФu}ú®^-±µEŽÜX4a`¿oŸ¸qcBGGbgÇŸ8±«.ÿâÊ[GaPëöâ¨íW?4/]ïRˆD‚ååayyŸ›š {ôÈ»z•<‰Êèä2¶Ž¦–ŠDX^^‰–DÕxMPù_ü"‘p)™™¹‰‰’ *®Ù1iÛfª °Ô´åÝ;Ú½{”ÌL‰ƒC…Æ ¥ÂÐ>wwr£hÈmë X»ÚGÒ°!¡¯_4l˜`à@më ]ª"¢€€ì’¬Ä¬îäÆÇWZ]›o(`t5@¸€ \@ . P<@õ@$!V^Ï»V>‰–£P@Hð²‹Qˆ¼"¢â|•@¸©>µ£3+¢¥!ZÖ¯¦.P=Xs3÷éwIP£ZIEÝ}å R0j•‚¥`ˆ®SšàɵgéënåE´Ôôûõ@áÕƒÿžvñ²d2t˜ÚÖ¤úB¡R=˜ž¼ó ¤” \ÀqüõÛ×Ù9ÙjsŠÅb© ÿ $‹ÕWJà’bŸ¥gÐæµÌmêÙ¼}ÿV}*‘X¤•zIÄ"õ®«²¶—có•½ÊîIµ:TtwUxŽ”š¤¥L”H2ƒÎ041'pÖÔVºbéßýD"þàÅ+AF½Çq ®Q#pB”èd!B,Qß‹$ ¥Uîg®† kŽãx9MžIp Ž«Ü:•(\xýî5ÏkÚ¸)†i:é¥CÕÑ<³,T*•BQ:ò&?{œô0‰Á`”HŸJƒ¦CÓ¶ ¥GG§”­¦!×|¥îoš£ºgV²½*À¦Sº)—7åÒÁ·ŸYékÛš?+#ê§AˆG‰{c¯lj;ÓåQƒ^²“¥tŠQ(*•ZîÊh†a:ÔJ=OKw>ŠD"T¢páë·¯M5!pBýÈÁO„aÙlS×æÞƒ{ö%Ò§ÒH*d5V%)/¨på+¨ù*®¿UM{USQC%¤¼ºÝÀÜʸÊéÕ+cÝÀ¼½±ŒW6M:Ó¥iÉN– ºä–N™!WêyZºó‘Á` ͤ‰D‰„AgT¦a* Cª£P"þ¶æûÛì­¸|diTíª–F4._ÛJ(¼3Q)Ô2KúÓ”Ñ:š† <>O—U…f «š>@‰øÛšïo³·"È*[pèÚÖâÁ‚CÏ*Ôæú'Õè²ty|ž¶µ¨ŠÊhM'#x<‹ÅÒ¶¶¿(**ªRú%âok¾¿ÍÞŠ ‡'ö1¢WÁ…JÕ‘ÚFôïªn¸Àb±ŠŠŠ µ­H•SF»”`tɨB/ñ‹ø,&\«+[óýmöVÙ…bs6Ìæ”ælFv]`1Yü¢ª2YR¥”Ñ.š† |>ŸÉT.ܸÚ±ó“§ÏäÒOù/´cç/_¿ÞONíØ933«õ.**R¦ ŽãgÎ7qrçžaÝûô›0eê­øø tdÅ@º.''Gaºô¯M§.½Ã­Z·¾  @­´²7DÙå¨n>9ë¤3æÌU!óË×o{äó‹Êh] <¥©ÔvW’©Óg„vì¼c÷Md~ùúuïƒü¢۫зä_%¸®Ôek±OF$ܾãîã×28T(’¨õã§Oî>~î>~YYÙd¶ôôôòRX*°Ü%W4µØôì5ë‚KÔå^¸Jw­`2™EŠº)­[ï¾¢b ýåë7²gçä ßÏP¹ëIû®Ý‡{äø Ù'9UœÑÊ”Q ¹K·a£Æ=q’|.QÖvMÎV }¥ôò8[õå±”— Y4žŒàóLk˜*|:ÓÓÝÉdÞ¸uËÉÑA6=>!ÑÖÆºVÍšº,ÖœÓ ôÕ>Ü©9ü"~M³š*Î[´8éÁÃŽíÚöêÞµ°wûîÝy‹– ”Ñ¥SÇòÒ¡ ÆqBÎR2}Räx¶!BH(¾}÷þø©ÿåææÆLR#ÀËØv66elPÕÍGBhräxCÃßÙ†l5~þòyïƒmB‚Œ Ÿá&5ÄqM=©¶»"„rr¸Ÿ> o‚ š6i,m’rÇWªBèêõ·ïÞ[¶pA};[2% UË56îØ½'°u+}ýjóô6ùè9KÉt'§&&dJ3OO]]Ý­;v „B:¦JA”±!ÊÞ ª›Lw–±NîŠRe·NJZ—j{InÆÇQ0lHø€µ7¥¼zÕ ~}5:(éj!ÛN*¡‘³³‡#k—¶PaQf°¶ºuŽö \¸t¹x¸`ß AÊ«W!‡íÓÌK‹V)jsè™BK#Åó;%írH›²t× ƒÁãóŠ!Slml®ß¼åíõ[SÞŒ‹·µ±yóö-ñôó -~=ñõnæîÖ4vîü«7n´jÞ©<£•)ƒ”\‡B§NŸéÙ­«¬íšœ­^Ÿ‹W*çÕ-R–s\£É±X,Á%4¡„þ~\.÷ñÓ§Ò”Ûwïá8îçãMÄýääv]ºedf’‡Îž¿0tÔè.=ÃÆN˜xûî]‚ &ý=gá"òèÓgÏÛué¶låjr÷îýûíºt{óölub±Çqú;yªU‹æv¶6²‰Ý:wjäâò>í¹{ôø‰AÃÿéÔ£×ÈqãoÜŠ#IU?ù3½KϰÆŽòôÙ‹””q&uî6bÌØä5ÉCJ…;vïòϨ.=Ãz‡œ9wÞÛwïdòïô™]zõ5>òé³çdÇ÷<ÔðÐ.½zϘ=7##S¶ÓËR<ÝÐÀÃ0ijq?“¥¾Oš6½Kϰ‘ã"ž<}¦BÕ¹ 0Q*ÇñC†­^¿A®AUxòUjêäèi“£JÔ| ­#yüäiû®Ý>~LîÆ%$vìÞóí»÷Acqý i×¥›4ÿÙó†ýp¤Ûwï)ÔíWsÌoŽßÝ2(vî¼7ïÞÉiøæÝ»³çöê? g¿3çÌûôù³œÎšØKÄ›qnM›¶nÙ‚Éd܈‹—UUêjr7;'G™½ ÛBs?Ÿ¿x©S÷ž……Ò”ÑúÖ®K·÷ii“þîÜ3lè¨ÑW®_—-¥°§½ýÍ-seÝ¢0¿2‹Hr Dµ9tL)!t+>žÏçKSß½O{óömhpBÃPâ;î>~醥¾~3n¤Ö!mZ‡ŽŸ8éÃÇOÒRGŸèÜ£—OËÖaýÃ/]¹*M?vòT—ža>-[÷ t3.^Z/’Ù‰Dk7lìÔ£§OËÖmÛŸ49õõ äUÿ3vœo«€^ý<|ôX¥äìÞ·¿C×îÞ-ZõìÛïâå+d¢¬!ÒÝììlÕvÉQ›CÏ)•WoTváÒäZQš Çq±X¬°Ç6÷ó½{ï~!'MüðñcÚ‡Íý|åBeýœ ·&MÜÝš^¸xYEµÊ(,åа!77—ÏçËÚ®°oŸ9w~èÈÑ]z†Žˆ¼G(¿>«­T®ŠßYä»*<ñW®]'[£¦áŸÏg1Y¸r7jd ¯óV¼4%áö;[[3SSÇLá8ŽŸ>{nãÖm¾ÞÞ‘ãÆÔµ²š»pñÝûI5zöü…D"ÁqüÙ‹¡g/^ùŸ>{Îá°ëZYÊVÇãóT蓞‘ñ>-ÍÇËK.½¦™YlL´CC{ÇOüïôνû¼½<#ÇŽ©W·îâå+<|$UuîÂÅnncFþ#æ-Z¼`ñÒÍýÇŽüG(-[½Z“_¿~›9wž´–EË–7nä2æŸ|>Ñòåd‘c'Oí?t¸™—çøÑ£˜Lææí;¤®“…”Àçñx<ÇÍÍ}øèñÃGZµ¤R©ÊüL–ZºjUÓÆ®£ÿQTT´hù ªú4ózûîý÷ôt2ÏË”WYÙÙ-ýýeTµ'W¯ßаAƒ}zkÞ|ÒÁ⢢ÂBžìŸH$rrthÙbÝÆÍ ÇÛ¼m{÷.ÉîѯwBhRÄøØ˜hÙÎæÓ¬YÄØ1u­,ç-Z|÷~’Tþêu6hпO¹»hÙŠÆùg8Ï“6‡Œ["ôéýåë·X²]ÆÄÎ.6lä°¡YYY –,•3G­½8Žýöíå«W-›ûéèèx¸¹ÅÅ'§ƒ¬«åvÙ;-Zu[(õóïÂqwwk*Áñ¤ääîç/_Þ§¥ùùx#„fÌžÛÀÎ.bÌèzVVËW­yøè±Š3º€tKQÑÈaCGš•=ñRù•Y$%»PX“­fñG ? …rõç 4BèÂ¥K6ÖõìlmärŽ7ž_ÄŸ:yÒÔ)“223§DO#>zlѲå-üýæÆÎtth=cæý¤d2}Éò­[Í™9ÝÎÎvÒÔã‹ë°nÓæý‡wl×nÁœÙcGŽüôéó¸ ¥Gÿ>³™§gÌÔ(÷ïôÒ•IÞwðКõZ·l1{Æôvõ£g̼sïž ¨°«85ÙÌìBayõFe.M® a1Y<>Oá•ÁÓÝ £PoKӯ߼eY§N]+KôûDñmYš¸º¦¤¦þ0MIÊ(<ƒHï1 ¦úl=}öÜÆ-[=ÝÝ&Œggc»xùÊGOž*»>¯Tzñ—"‰TÜYä»>+<ñ}½½¥•’}F£ÉˆB^!“É$”bP(ŸfÍïÜ1t0…B)**zøøqß°ž?â òeX!‹:Ü7¬g·ÎB>Íš‰D¢‡ pàð‘´ëZY¾HIiäìüøéÓ¬ìlc#£g/^¸º¸ ß‡YÈu—ÊôùžžŽ255U–A,9v¼}›6ƒÃ „ü|¼s¸ÜƒG6rq&UíØ¾mPëÖ!±D¼z݆ñ£G‘#œän^~¾úùR6¾#!%Œ7^6ÑÌÔtpø‚ $‰B?÷éÕ!@ÖKÄʵëróò •¨Ú ¾F»sï^»ÐP„PÂíÛ¦5j84´ðèÙ "‘Hµ'[·nß&´DÍ'ÍüÏØñréúôîÖ¥óÀýGGD=q²  @W—Õ£kâÇ¥5BÈÙÉшÃ!°ÿÐá¾½z’Æúz7 EqkÒ˜Ìк]›P„PòÇ!·&»uî„’HðUëÖÿlAáon1 [0Wªü»÷ïóòòþ:ÃÊÒ!dn^ëüÅK"‘HöÌjíEÝŒ‹×ÕÕuws#Â×ÛûV|Âó—/6”ž;²§ÙäìUÑ«•ú¹Øà'‡ÍnPßîÞý$_ïf¡øÄÛœÿwæ?/OR²¯w³©13;æâ줬§ ›—77v¦•e„y­Zç/]‰D†)ÌïÖ¤qñ”U5Ÿ'ª[[Í'‘˜Lf ¿ó.µoó£½.^¾Ò.4¤xÎ×oÞäp¹›&¯%k´ªcyìäI‘HD¡P6oÛÞ³[× ãÇ!„Zµ|óöÝÙó»6Ú´mÛÈaCèOöj¡P¸iÛö† ‘“,ÆÖ³¹ËfNšýs©²Ÿ÷ ýB8ŽÏœ3—ËÍÕ××S(Ù×Ç[$mßµ+¬gR™àÀ€Ì쬭Ûwzyx(ó€2»hŠf'k²i_òvË’öF¡P¨ôÂõ³ˆŠk…²Öäóùro+!ëe0žîn7ââZµh.U¸u‹æÅG亷œ±&ÆÆB¡°°°POOOYÊH= ø|>BH(=ñâ艓>^^HæÆWül•H$iBzÃÛË3íãÇë7n"%×çâ•Ê]üBúö¶®W)º³È) w}F):ñ伡Q¸À/â3èjf^›ûù\¸|ùñÓ§®..÷““E"‘o3ïŸíG: ¥}ø—ŸïìèD:!Ô´qãu›6ÛÚXë²XOŸ?·²¬“’òjÌÈ^¾zõüÅ w÷×oÞ†ÊU]$(R¡7éèP•eøöý{^~¾ŸO3i?oï»÷Hû•‹ã7qØÒŲ»äzZÕyDb1AÇ Fá8Îåæ~þòåúÍ[! Ž“µHï[l6›ûíû÷‚‚‚VÍý¥Š5÷÷U.!4uÒD¶¡B'ˆ7oßí?xh˶ãFTæg‰—­—\ø#V®*Noܨѻ÷Û†„ „îÜù9Ü÷Cµž,ÞáÔ6úyÆN4møÛÂÌÌ” }=½!áák6lÄq|Þ¬™:::ÒË’¹:¤}øŸŸïìä$}V¢i×õ›¶H$2ƒËOÝÈešÃP¦ýt ÷ó—¯×n-(‘4¯eNþ–êØ®­³££­µõèÃÑïµö"„nÆÅ{¸5•ˆÅ|±ØÑ¡!“Áˆ‹Op°·—ºú÷SéWn©h „ìÒné3rH<ÜÜNùÇq ÃïÜmæéA~#£¹¯¯4[ ¿]{÷¡¬§Õ43c2›·mïØ¾­“££­Í·¼{ÿ^IÏ”P(…úĦ†êŸ¢ šüot—kÄá¼LIùðñcpPà§ÏŸå²YZZ²X¬ÅË—÷ skÒØÑ¡¡£ÃT„ЫÔ×9\nHP 4ç†Õ+%8þæÝ;.7×ÝÍ÷Sm_oï¹ ÿÆÏÔII²²²Ó>|8{þBˆøùãÌ×Ç›Ü066BI$b¥’qüËׯ\nnp`€Txp`ÀŠÕkU˜¯Ì.…˜2ž½+ JÔU^¸~QÝ?‹Ã 3ŠEÅ®{?Î;_ß…K—åææ¾yûîë·o~¾>_¿}Cê&#Ö¥6Be¤9.B6±q#—Ááýem/~¶~øø17/ÏÏ×[*sÖôiIÉÉËV­Qx}.^©ôâ/ÅÌÔ,íãG¤èÎR\â×g…'~iÂGÎߨÈÓÐÞÞØØ8.!ÑÅÉ)áöÝvv&&Æd‚ÀB8“¿Ë§L‹‘++œŸ>{æâä”_PàØÐ¾A}»g/^J$Wg¹ª‹Ez,=eú§âׯßjš™ÉÚ¹w_]KKSÓ!©6›]$ªR¨YÍ©”ßvIªÉƒã8Ž?{ñâØ‰S/_½2Ð×·¨]›Åb’‡È<úúúrEr¸\ôûW2ø d†ƒ~ö!dkcmblL¦8ØÛóx¼c'O>T™Ÿù|žÂzU¨êíå¹nÓæ‚‚‚ïéß¿§7÷óÅêxVv¶jO2™Ìâͤºù¤¶µ±‘Z'…,åÓÌkëÎ]†úõmm¥rd‡ByyŠÀãýXµ$ÕÜ•qË/9Ï^¼8zâdÊ«WµÍÍuY,ò4Göôi‡X¼|¥D"qqv< ¿e:%²÷ã§Oi>¤}øpãVœ41þöÁ᤮.Þd²Û!m¡««6` Tòñƒûe{‘\ïòpsÛ{àà‹—)¦¦5^¿yÓ§Wò¨¡á/ɇ”¬¬§Ñh:³gL?rü8é–FÎ΃ô³¬SGY~§«««P’‚"Q CõO¢ú4óÒe±.]¾Ò³{· —.;4´·²´,.mZ·fëöQÑÓĉ§‡û„qãlm¬sssB&2+ÈôôôB))¯BáC‡É«Í—?éÁƒí»v?~ü„Íf×­k¥§ûÛïQ[~€$/7O±d| ÎXæ9c>Ÿ¯âaiev)Ì\ÃYP$*îêRôF.M®ºº ^xJÓ¡ò ‹]÷~œw¹°X¬[ ‰m‚ƒnÅÇÛÚX×43ûòõ+R7!+-3+‹Á`0 yT(#õ@ÔÄHò%N†™šÖ ¯Z²×Éâgkn^Bˆmh(•Éd0H?(¼>¯Töâ/åý‡4e䤿>+;ñeÑ,\àóÌj˜©þy„òõnvýÆÍAýû%?|Ы[7¹á‚ Œ9F¡ˆ1£kÔømI'Noäârôø‰—))u,,X,–cÆ÷’’Ù††V––l6[®j@`Ì1V¦iµk›Ç%&º6r‘MÿòõëÿÎü×/¬W;;„77WOp¹\:Îb±äbLe»šäÉárgÏ_ØÂÏoÓšUä³=J¼sW6§\òj’“#U,‡›ƒż caË:uD"QQQ‘2?–TUw·¦†%=xøéóçzu­êXXÈ7bs4ô¤æÍ§Ì:YNž>C¥PÒÓ3®\»Ъ¥ÂRdÔ1f´Üúa:®y Ι¿°¹¿ß„qcõõô”µ ­Í¿“' …Â)¯9:wáâkV•ÈÞ›ñ t:=fêé·.S^¥îÙàɳgrºåååIwå©n‹¹±3äÜ«ÌÏu,jתUó^R’‘‘‘¾¾“ƒÃã§OIi2Ý’K§Ó™L¦Š3ÚÖÆzê$Ò-)‡Ž›³pѦ5«UäWý ¯€WTé앎d:†at:= u« —.÷êÑýÒ•«½zt—®„”Ûpvt\¹t‰@ xðèÑÆ-[ÇMœxöä 33S„—›+ ø>~ú”ûÓ¥ófŚת)[/ýH%çä䌉˜Ð.4tÁ©ÙlCC„PÂíÛW®]W¨ù¯2É,Ë´F „PNWªLNNƒÁ0 W4ËHËÍÍSm—B§Õ0dðüb.EoT{áÒäZ!ƒÁÈæf+»îQ©Ôfž·âBƒãoßn¬bDAY¿zôøqƒúvrzj®ŒT¹6 Ï/ù³•Ã!Nêoß¾¿J}”_—Š;A™> %¨¾è!E'~qù-uäñyÒóYþ>Þù{,*x7ó’9òÃSÓúú……… 4 ÿÞ¿O‹OH¤P(®.ÎÜÜÜ+×o4lЀ {û´’ü‹õyôùË‘HÔ¾m(91FÄó/æT\‹i² †oÅ'þ.\Þ¥²¤}ø` ¯Ïb±”û™ª°^ªê²X.ÎNwï'%Þ¹KGË5¨Æž,AóÊ—þñåë×ÃG пsÇ»÷íÏÍÍUXÊ´F }ý‚‚†ö È¿÷>Ä'&JGØTTGî~þòE(µoª§«K¦?{þBî”{ûîݰQcx<FkäìÔ®MHFffQQQ‰ìOHlâêêØ°¡´½Bh4Z|Âm £ „¤6&=x(Ó~ëx*Û‚J&Ï/¹ §GÓ¦÷“ܾs×ÓÃ]:G÷S2Žã7ãâmêÕC)ëii> -u‹sÛÐÌ̬¢¢"Wú %t*Òehô}©Ð  GOž\¸tùÛ÷ï!2#ù²¼|õ*´C§ÂÂBƒÑÌÓ³O¯žß¾}çóùµk³ /^ùõª†YóæïÙ vms6›_PÐØÕ•ü{•úúÂå+rŸŸöA(öíÝ‹ýó}!ɪÖV…äÚµÍÙ††/_–f¾pé’£CC„y#'Ó#„âTÛ¥°j]NEEBIÙ{£Ê —&× Ðétrü_Ù•ÁÏÇ;åÕ«¸„ÄÌÌ,ŸŸ·¤.\òèÉ“{IÉA­[©È£VW¹bGëÛf¦¦úúúñ·oK³®Û´ùgþSygѤR÷/…÷©ß(vâÿ.H“щD"‰t¨:¸º÷lÔ«[×¼V­s/5°³3âpdF‰q„Žã ¥kçNÛwïÉÌʲ±¶~Ÿ–vòô™áƒá8^ÓÌÌ´F—))-[à8ngg‹aØ«ÔԞݺÈÕ‹ã¸X,V­Oë–-î%%/X²Ì§Y³†ö Šøü{ÉɯR_wëÜÉÌÔ!Ô©}»ý‡cVßÎöîý¤g/^Ìøwê¯á£ßGlŠ ¾jóànanÎ`0¶lߨÇñ“7›§ÏŸëê²J P(Û¶Ùwè0…BqlhçÞýoß¾!E/î ‹<}öÜÀ@ŸìïÓÒNüï;tPágeÖ©PÕ§™W3­;wŠÅïf¿Äq …¢¡'KÔ|dï|úì™Áïk|B®..6ouphØÌÓC(j|ãVÜ®}ûÉyqò—Öý¤dsóZŽ ’Nر{off–­Í»÷i'þwzÄÁÅîAºeóö!8N’?†d«jßxƒš1îÒ•«×oÅÝKJ²´¬3zÄðæ~?–kuhÛF,_¹výÜÅKµkÕŠ3ÊÑ¡¡\Ì%§ù¯Ýßד++¢¯¯?%2bß¡Ãë6m10Ðoáç·hÞœi3gݽŸÔÂßO™„íÚ „Â+×®_½~ÃÅÉqüè‘3çΗïd]ºfÃFrð&&Ú·ïÒ±™S¡Ÿ>~RRU½½<Ý›6ݼ}‡“ƒƒt½úo kæÉ5yt͆MÅ ðúÍ›% æAÓÑ4 ÿÂ¥ËZúû;:4´³±qlØpÛ®Ý,&së†u²Nøïü3SÓaƒ’Mö—’‰ävõõõ§LˆØððºM[ ôõ[6÷_4oNLìlÙd0è“"Æï9p`íÆML&ÃÙѱ_ï0YëÔÚ—˜HÓÑiÒ¸±\Ow÷¤?}ù2bÈàÃÇŽ¯Û´¹q#—† ™>k©ª­µcÆÛvþ²WY[(÷³â6jPßÎ@_Ã0Ù¦Œ7æÄÿNŸ¿tÙÄØhäð¡®..*zBhRäø=û®Ý¸™É`8;ýr‹Š+@q‹H ø"S .P(”à€Ö‘]±(‡.‹µbñÂå«×Θ=‡Ådzz¸GŒCê×;L"‘9vüð±cu­¬ÎãéáŽêÖK$9v|ïþuêÔ‰ŽšÜ©Cû„Û·eÅr8ì‹­^¿~Æì¹§CÛ6÷ìê?xèµ7;´k«L…’ÉCúõKÄÇNž:xäH]+Ë…sçx¸5EÕ43›ýï†-[fÌžããÝlæ´èÆ«¶K!¦†Ì¾ÈXïW(VêÞ¨üÂõ«•´2 @ ûötÙSÃ0ïf^ç.\$‡äŽß–^OtttjÕ4 ëÞ­mhˆ´v¹‹€&ʨ8ƒŠ-Þ·Û…†H$’KW®^¸|żV­ˆ1£˜LÖéÿÎ*»³È‰•^üeùwò$¤äÎ"§€Bár'~qùØòåËÂêèRééiÒ¬êX¡ªAn~.7—[·N]m+”†¿­ùª©½Q1ÓëÛÚ ŽzôøÉ‚¥ËÖ¯\n\liUåò…Kcé‡z9jÛ+çï<ñ ìks´­ˆbÒ>¥qض»ì¢þ0e*Ù_r NýèÏÓ¡©Ÿ‰¨4ŠŠŠd{êÅßÖ|ÕÑޯ߾¥}øØ¯w©6þcܒЖ|°– >]]Þq³«lç¤ÑhEEEzeõ‡)SAÈøÅÑ(\ QiNFT"±ˆAS?TMþ¶æ«vöž¿xénR²™©©ƒ½½Üœ¶¬Š$Fºe—Èad ›"’TÙÎI£Ò"AQ¯J)S?ñ‹£A¸ÀãèT7 …B}]ýª£P"þ¶æ«vöž9¦£3røP$}$LÝ´nE#‹Øú¬²Ëä`ë³ÄbQ•íœ4-¿0¿Š¨W¥”©œøÅÐ(\0fW+P öQ@•åok¾jgïª%‹È ©ÎÎNŽ»·n–M©d„B[Fʶ¾®P(¨²“¦CTõª”2Añ¿8jÂÇ…"!•J­"QAb±¸ê蔈¿­ùþ6{+±§Qp]£—.%‚A§Ñ(¸H,Ñ¡jôžJ†J¥’_s­ ËVª”2ÚBM¸À/âÓit¤|t¢’Š„4ZÕÑ([óýmöV¡cë+ ŽK R™ê¿Ç¡h:4¡HHÞƒ´N•RF+¨ È÷²U@@§Ó«Ž>@‰øÛšïo³·"Š„˜‰¨08úºB‘YUoètº@ Сjô±‚¿J­ Æò"A‘U§êü6‰EUJ DümÍ÷·Ù[ˆE"ŽGÛZü±°õu¹9Ü*ÛEu¨:¢*³³J)£H·.^½¨,SNn޶õ¬Òú%âok¾¿ÍÞr' U+m«ðÇâÖ¸Éáㇳr2´­ˆ*2²ªzUJ™JÃÆÆÉ.„uÓ¶V@%a\öÕ‹7àp8¾ÞÞÚÖø«Q0ñékZZõj×¶07¯-÷ghRkK’ak'#œÊ Pi LTÒúôõõ¥—;rìx‡®Ý<}ý{öíýæ-…ùå†âÉ]r:#%5uÔ¸ÿ€@¿Ö£ÇG¦}ø -¥‰dP¸jíºv»zúú· ™’šJR(Ô¸„P@h[W¯âÒJ¡Rqr)RH7†Žåé×¼[XŸä¥röìÛÒ¾£§_óñ'ÝOJ&½¤BYvìÞÚ±“»_—žaç/^’ó¼ÂêT›\Ü(e~&kyöüùÀaÃû„Ra¾\ 7^¿y>d˜‡¯‡®ÝΜ=WÒÞhˆ‚pJÕa1uétºÎïä Pľ×]<ÌӲϿðRRS‡Ú©­ ¨¨ˆÇãóxü—))»÷î d±X]¸tYP@ÀÜY±õíl#'O¹Ÿ ¹Þ………#Fåñ§EEM‹š’‘‘11j*y¨D’×nظïÀÁNÚ/š?oüèQ?}=>R…ü1#ÿA-œ;gýê•å¢Rq*ª@M‰Žñöòš9íßB^á”i1dâÑ'—­ZغÕÜØºººS§ÏP­,{öXµv]`«VófÍ´oP?jZÌí»wUW§Öäâ&(ó3ɬ¹ó]]\Æ©Ö|9FŽïâì47v†­Ý´™±wïÝ×¼ š£`2‚N£1èL*•{ò㔬¹]ëù5à|É)¿ãqÿV¶¯ÒEŸr‰ÇÏ“– õ󴯩¶‚ŽÝzÈîÖ±°˜-‹7lÞ2zÄðÁÃBÁB¡hã–­þ¾>êúúuNNζëmmlBVV–GŸ‰D†•H² H1vLŸ°^ä.‡ÃŽœ•óáã…ò"„<ÜÝj˜˜”‹JŪ¨!äïë3d`8BH"Á§ÏšÍår 6mÙÖ³Çä ‘¡àÀÀá£Æddd¤¾~£Pí×ÇjE"ÑÖ;ûôê9)2!”™•µyëöfžžÊªãȬ¢Pfrq”ù™ÜíÒ©cï^=51_ŽÖ-[š†¶yûvOw » 9 ÂÎ`ÐßfN'}‰hc½ùÒ»ì¼Z;®¼ jø2ÏÌܾûpÛÄv­›XiRÁŠ%‹Œ8FävÚÇ+V¯Y´tiŸ°^\.×ÃÝ]ºÞÏ×{ö¼8ŽS(MVÅ[YZ±X¬K–öïÓÛ½iS'§i¡”W¯TH..':j2Bˆ ˆ¬¬¬÷iΜ= \™üJPI5Ò¸ÇÄÄ!$–H>ùšž‘$ÍpçÞ=+KKµ&|þò…Ëå†È” Zºr•Šê41Ys?“G½<=Jê’6¡!ä†aíÚ†®X½¶trÕ(ètFA“Å¿tõ¶Šö!<ÈáùwIOpù污54ŒBNŽŽÒ¥ŽM»r¹Üu7…!„ú ,—™Çãéëë{·h)MQ6"mll´mãúM[·Oš-‹½<=&GFØÚØäææ©\\Îýää­;v>zü˜Íf׫[WOWWµ|––—Jªá{D"=#!dbl,M111ÑЄÌÌ,„±‘‘lY>Ÿ_PP ¬:MLÖÜÏ$zzz%õÃme¬6­aJj^ ¯ªQ.èÐ F3{=¬ÈT»ü’×ÊÁòá±PÀ¿píÎŽ‰Áâü”R×g]¯®P($‹X0g¶y­Z²G™L&Bhç–ÍÒŸ'›ËåJ·W/_*’>Ú°ióèñ‘çOŸ233U!Yެ¬ìQcÇ·kÛfѼ¹lCC„P|bâå«×TÈWm]ÙU*ä-3+;Û²N2%;'[CjÔ0AeçäHËfeg3 Í︚x)+[•ŸK„l³:++‹Á`”:òT `0œN£Ñh4:ºwb«³Wâ èèOx^Á…ëwMïèãT‡.3ù]Rh:4„PÍšf6;¿ ¿IcWò/%5õÂ¥K:::!ib“Æ® !”“óc’[ºBðeJJPÛö……… ÃÛ˳oï^_¿}ãóùµk«,Çû´4PØ¿Ooò†JJ~ Z¾ ÓÊE¥RPÇ‚ÃfŸ¿pQšréÊU M°¨]›mhxáçÓ¡ó/:9:hXµ†^Rágµ(ë?µý¡9Aÿ?ïа¡ô¹ QpÇb0˜#„\¬MÆtì>û”e-ÓYÙ'b;»X›ŠDB£ô?‹ÉŸÔ……¼aC/^¶âû÷t'G‡—)¯¶íÜ5#úßâùm¬ëQ©Ô‹—öíöðÑ£”W¯Èt+K+¡P3½s‡……Ûvìpuq!-4”Œ²µ±f±Xó-îÕ½›D‚Ç%$Ü»Ÿ„JJNö÷õS(Ÿ|ÅÍ[qVV–îM›ÊJ+JŪ¨B!4mèàAËV®¢R©®\®ßŒûðá#B¨®•R}dË °jí: •ÚÈÙéʵë÷“’5‰–2“åL°µVêçâÃre•u’§þ§££ãâäxáÒ•iò0P–/_–•••••uàÈ‚ ‚x÷ñMÚ§w"‘ˆÜ}ðú{ìîø·_¹AˆD¢´OïÞ}|Ch@\BB#wÏoß¿Ë&ffe5r÷ܲ}A;vï íÐÉÝǯs^ÇNœT&çÔé3!í;zøúGLšòðñãFîž™™A$?xØwà /ÿ-ƒC¢¦Å|OO—Q+YªÛí»w{÷÷ðõn×aí†9\n»Î]§DOS&¿  `ððܼ}›[ •Š ”K‘ª*çOr—tŽã›·moÒÆË¿EìÜygΞmäî™——§B)dÙö›6óéÒ3ìÂ¥Ë ›O¶:µ&7J™Ÿ‹w’âev²à͸øC†¹yû¶íÔåäéÓštK@s9@ ØòåËÂÃ"„.^½Ö= !$‹¾g|åæå![`Æ14ªij®£Súù ÜyþâeíÚæ6›Ü=tôè’å+ïÅßúƒGæãG‹¸øßiéBZ Ü9xô`pë`¤p2BG‡fanea®é³€Ö™=­uËÆ#woÅÅ;4´ÿƒc ’)ŸÕv€véÚ¹Ó†Í[ ëZY%ܾ}+>aöÌéÚV øs€páO``ÿ~‰äøÉSéµjÖŒ;¦SûöÚV øs€páO€B¡ 8ާ¤¦|þúYõG¼€ÊÅbY˜[Ø7°—¦@¸hŸ”Ô”nŽ©±)"Ê. (+A¤g¤Ë¾Â@û|úüÉÊÂÊÀÀ€BÙ1íC“ÉÌÌÊ”¦@¸h¡HÈf³Y,|ç *@ˆŒì i ü˜ª+T0 £R©²)0ºhì'ÚVøÜ5FC!³þFíCư0ºPu[{£ €ö@ *"óp»üèB|bâ¨qÒ]fY§N§íûõÓÑQ3ãø²•«NÿwV(ݾy½D*‘õ^üïtM3³?ýwî\x¿~ºº,e9‹§O?.¼_ß’ºBE]dE¡ÁA‹æÍ-ž~åüÙ&&¥l€’# û ´iíZcc£²´Q%óøÉÓ[¶®_½Ru6 ɯ]¸}÷î„)SelÔ©caÑ64´W÷nUÍF€? Ó`2bþìX‡ƒâñø÷“’ÖnØøèñ“K©ýäÙ³½þ3l¨‹³SYTüøéãÆ-[{tëª0\ÓPŠu½zQ×ù‹—Ú††´ð÷/‹Eeg˶íÞ^^ÆÆFÅ=P¢6ªd¹8ã~ñòåàÀ@Ù”.Ìœö/›ÍFñùüä‡6oÛöôÙ³sfkÛ,€¿£ $înn5ÍÌÈí €Öþ~¾c"&üwþ|»ÐPb B=ºu­„ŸÝ²V(v¶¶s,rkÒD__¿ªSHaaáþƒ‡ï߫̚·QåÓ³[· ›7k.È ävÓ&MÌLMÉ”Ö-[úz7›õïÅËWB‚TIÊF)ù“~>>þ~¾ÇOœ’¦9v¼C×nž¾þ=ûö¿~ó™HŽ„¶uõðB „ÂUk×µëÜÕÓ׿EPȘˆÈ”ÔT„P|b¢«‡×÷ôt²¹›™•%.'§DìØ½'´c'w¿.=ÃÎ_¼$[Å÷ôô¡#Gyú5ïÖ'ùÁC ëš5%/?ÙªÕÅ©6ðÃÇCFŒôôõïÒ³×ýääÇOžöê7ÀÃ׿S÷ž‰·ï¨ö¤ÿ;󟵵u ‹2¶‘ ?¨È¯¡! =òóñþòõÛƒ‡T(¯áÚo//ïf§Îœ‘¦œ8õ¿}úµ 0dØ­ø„Ðí»w½[´JÏÈ1¡eph߃>~¬6ÿÇOŸFhÒ{ÀÀ=}þ<|èðæÁ½ú¸sï¾´øÞ»ô kÜ'|à¥+WKØ7ª†įáM—:ú4köäÙ3²äÁ#G.]0wVl};ÛÈÉSÈ+ÿ „ÎCÎU¯Ý°q߃:´_4ÞøÑ£>~ú½z^¸tiÖ¼ùÇîg2™ÒtÕöïÓ»K§Ž!±D2cÖœ93gtlßNºËÍÍÕ×ÓSæIÙÚE"Ñ£ÇOzuï^ö65b˜B?èëë«È¯Ö=]]Õžwtp¸q+NU¸ð{ «3SS@PPXÈb2·nß9|Èà}û „Zµ E[wì>xBȧY3rÝ«—Ì™¿ô¶Šüa={tl×!$‘Hæ,X8=z*9§Cîææåé²X»öìíÙ­Ûø1£B­[geeoßµÛÃÝMµªä¯))š† ØÏÙå7oßr¹\wwïÇ·†ý|½gÏ[€ã¸\‘è¨É!‚ ²²²Þ§}8sö››ëÞ´IQQyÈÇÛkÁ⥤ÿ}½½É‚&Æ&!ÇUçwoÚôG~“⻉äë·oÜÜÜ €ÖR}‚Z¯Z»ƒG@øCÁ0LýRÇâ|OOg2™zzz¹¹y¡~ƒËeàñxr)÷““·îØùèñc6›]¯n]=]Ýr4ÃÉÑQn©ãý¤d„±Ñ¯ÂÄÄ„Ïç“ 0BrOR”këáƒmز5$è×MQµ4MÅ.BH…'e—U’Æj•TßF|žB?¨Î¯ÖÌÌ,ež' 144 …ÒÝâh~ÓMOÏ`2™zººyùy¡Á#Fó!Äá°åÒUçWkcVV6BÈè7ùEE……úzz*P(ådÄí;w¹8cfffŠZ0g¶y­ß~ïÊŽÒ#„²²³Gß®m›Eóæ² Bñ‰‰—¯^+.™Ëå–‹a5j˜ „²sr,ëÔ‘êÀ`0Ê뉆ÁÃ/]½:sÎ\r8Zs•¡¡'I4ªWÛFä-SsM”å/¹ç1„ŠéLÁ“d1ùÑ…»÷ï;;9R(ò‰‰93gÔ¬ù[Ô˜ŸŸ/[ð‡ +i~¹]ÒF.—kYçÇ‚Ó윃a ½çe*¬ߌ¸}÷îõ›·zt킲¨]›Ãfçä7iìJþ¥¤¦^¸tIîå9ïÓÒBaÿ>½É[)B()ùÁ*)T„PNÎ9~…‹ûJEíÚlCà 2kòÏ_¼èäèP^ŽÓÑщó>-m뎡4åj®°&ž$ßµ¯îÎ]Š6*©&¥ö|^~>N7P>@¢áèÂÝû÷oÆÅwíÔ !TÛÜœÍ6Ì/Èoܨù—úúÍå+W•é\ÒüÅ‹^ºrEšrñò‡†ö𔍦¨MÓý¤$rÈšÏ/JzðàèñÁä£ó4mØÁ‹—­øþ=ÝÉÑáeÊ«m;w͈þWN‚­µ5‹Åš·hq¯îÝ$<.!áÞý$„PRrrcWW*•º`ñÒ¾½Ã>z”òê•\Yò£™7oÅYYYº7mª¡U4mPø€Uk×Q¨ÔFÎNW®]¿Ÿ”¼eý:Õ¥JT—“ƒÃ€¾}vîÙ‹²Qn †ãzÒ¢vmƒñåë7'GÇòm£’jRjÏûöMíK´ä–)Kl’>ä¯i**zððáñ“§[· h¢ÓéCÂׯZ“žžéè`Ÿò*uçž½ÑS&Ë>R!•ƒ!¬¤ù‹ï×wí†T*ÕÙÉñڛɮ_½Ö.ð§"÷ÍÅáBôŒXrƒF£YÖ±;òŸ¾½Ã¤Gûõ‹Å‡Žݳÿ@ ‹˜©Q;v“ÀápV-[²jͺ˜ØÙFNÇöíïßÛoàà«×o„ÅÆL[¿isLì,_oïØé1•-ëâääÞ´éüÅKôtuo\¾¨¹mû÷‹ÅÇNœ½Åbñ‰Sÿ;tô˜•¥åüÙ³4eª%2flùòeááB¯^ ëVZ‘@ràÐáÓÿÝ¿{§¶) "‘¨UH›ÕË–6mÒXYž¸„¸&®Mètº¶•~ ‘Hn'¤g¦·FðEÊjAÇöíÞ§¥}üôIÛŠ”†øÄÛµjš©ˆP±§{€ª|ܯ §§×'¬×ácÇ'ާm]JÌá£Ç† ¤:Oñ'#í"·vFªÃº}çŽ&ïĬR<~ò!$û² …@ P‘]U£ Õƒqdÿ>mkQb¹8«øð‡]¨j”æ½ P±@œPÅ(å[ â€Ñ€*Œ. ]´…B!Fª¡€AgHw!\´±‘ñ›woìëÛ3Œ²KÊ¡É7Íþb9‰&þ¬Ì<•i×A¯ß¾677ÿôõÇ+ \´u=ëwïßÝKº'‰´­KÕ¥BG_J*¼¢óWYÊ˲È)QÙ¿ª¥~{á›vhô‚8¬„ù5S^úT4ÆFÆ6Ö6÷’ï‘».Ú‡B¡ØÚØÚÚØj[@1°Ô5ÀèBUÇñ”Ô”Ï_?óù|mëR…`±Xæö ì)„¶ZÂ…ªBJjJ7ÇÔØUâ"›¼¼ŠóÁUˆJŽª†Q©Tmkð·£ Uì'•_i— !€ÖÑ ªƒ!Œ¨ÌõŸ@1`t¡ª •¯2V‹Ñ…Ê\û (.ÄUrW .hùp!>1ÑÕÃKúçîã×¥gØÎ={Åb±ZY8Ž/Y¾¢y@P³æ-KªYï÷ôt„ЇŸ6lÞÂãñUä,þ·kï¾Rدº.¡P¸÷ÀÁ}úz·hÙ*$tȈ‘7ãâŠ+\.`¿V/ü†P$ j×!#3S.=;'gjÌô€6íÚvê²nã&DZ?˜ŒÐ.Š'#æÏŽåp8!?)ií†?Y±d‘jYOž=Û{àà?ƺ8;•E§Ÿ>nܲµG·®ºº,ey¤J±®W¯Üëš=íî½û}Âz94´/,äÝŒ‹9qÊÄȾaaNëW¯4ú]‡² lta߃<¯xúìy Þ¥½Ÿ1>++kÛ®Ýzzzƒô//eª-hÅá‚»›[M33r;( µ¿Ÿï˜ˆ ÿ?ß.4T…¬‚‚„Pn]k˜˜T´Þ²VïÞ¿¿vãæòÅ Zµ"S:¶o7sÎÜÍ[·÷éÕ‹Ãáøz{—cuX±µ ë6nºzýÆ—¯_Q±YÙÙ÷’’b§O Dñøü#ÇO PŠJ1-­]X³n%Bhìèõ)0M e4Z»àçããïç{üÄ)iÊ‘cÇ;tíæéëß³oÿë7o‘‰£ÆE „BÛºzx!„B᪵ëÚuîêéëß"(dLDdJj**6ŒOîffeI…ËÉ);vï íØ‰œC9ñ’lßÓÓ‡Žåé×¼[XŸäÕÖ•“ƒªke%›Ø³[×V-[Y+ŠÏŒ¨ð’2Šßb­ëÕëÜ¡}û6 B´?"„ìíÉ]‡†ö\.Wá Ćaðùyí¢é“>Íš­X½†  Ã9ºdùŠð~}ÚÛ߸u+rò”ÕË—ùûúŒùÏÚ Îchh€Z»aã¡ÃG†TßÎ.''g×Þ}£ÇG^>{Fm]rrRTT$»à€ªCeÐé{öXµv]¿Þa.ÎN×nÜŒšÃá°›yz’y¦DÇ4÷óíұÚ §L‹!5QQ—}ýúlCé1ÓGîÓ¬“ÉD99::9:Êå\¿z¥t{Éò•t !¤ÌKÊ,’®]¦´kŠº}÷î™sçåÙׯ¿cË&‹ÚµÉÄ×oÞ2ŒR¼åI‹£ ÒÌå’¨P4 jš™ ‚‚‚‹µaó–Ñ#†Ž   E·lõ÷õqthˆòpw#'#E‚ˆ±cú„õ"%p8ìÈÉQÙÙ9jë’“£ŽÝzÈî¶jÑ|É‚ù[wììÓ«ç¤È„PHPPfVÖæ­Û¥á‚¿¯Ïá!‰Ÿ>k6—Ëåp8*êÒ××ß°fÕÂ¥Ë"'Géèè84´oÒ¸±—‡»·——Ü{¥³'ÿwú{ú÷»w‰Åbe^RfQ‰~CëééI‡îܽ·gÿà€Öꇂp@Ëh.HgÖß¼}Ëår=ÜÝ¥?îý|½gÏ[€ã¸\‘è¨É!‚ ²²²Þ§}8söúàá£Á#þ9²¯­­4Ñ¡¡ýˆ¡C£¦Åþmßµ;//7:j5¹«¡—dÁ”¼ÕQš.{èó—/£Æ„³gL•P)ÊnÆã&V¨Ì•«—iX „ ZG£ÙîÛwï^¿y«G×.!‹Úµ9lv~A~“Æ®ä_Jjê…K—tt~‹<Þ§¥ „Âþ}z“±B()ùÁ*)T„PNÎE ·âÊŋڵن†~> :ñ¢“£C©6¨oGÓÑ9|ô¸\ú“§OMMMõô~ –¼LIÙ±{Ï’ó¥Ñ€†^’¥D7Å=ûäååO4±Œ±Bu^Ó ]ß½î'%‘C÷|~QÒƒGŸ  DÑh´aC/^¶âû÷t'G‡—)¯¶íÜ5#ú_9 ¶ÖÖ,kޢŽºw“H𸄄{÷“BIÉÉ]]©Tê‚ÅKûö{øèQÊ«WreÉ…„7oÅYYYº7mª¡%4mPø€Uk×Q¨ÔFÎNW®]¿Ÿ”¼eý:Õ¥TÔ¥§§7zä?ËW­þöý{ë–-LŒó òoŸ=aþìY²9ÿ>£…Ÿß÷ôtéÓ¡¾ÞÞšxI…³þ GîÞ»O¡PØlÃÛwïJÝ›6¥Ñh%jþjñdÄŸº„ ¡8\ˆžKnÐh4Ë:cGþÓ·w˜ôh¿Þab±øÐ‘£{ö¨ca35ªsÇr8ΪeKV­Y;ÛˆÃ騾Ýáý{û |õú  Ø˜ië7mމåëí;=fÀࡲe]œœÜ›6¿x‰ž®îË57f`ÿ~b±øØ‰“®keµxþ<w7ÕET×Þ¯o;»}‡­X³6??ßÐа‘³óƵ«½<<â¥ÙÞ¾{ÿöÝûÿΟ—¦<ºwG/ÉR¢'#2³²pŸ0eªlâùÓ§LŒ5wWu´ ¶|ù²ðð¡‹W/†u+«< ´Ä%Ä5qmB§Ó+³Òœœ#™Å¡US¦D"I¸ÐºeëÊô €:xô`pë`_¤¬:ÀÛ€*‹¦OF²'#*ºRí®]ÐX» uàB\U€ÇUߌÐ.0ºPU€ÑÕž´Œ.Tàž¨´Œ.T`t¨²Àèj€Ñ…ª…B!FŠ# tFeºÂ…ª‚±‘ñ›woìëÛ3åvk”} @îárW"‘H$TæGÈâä¿B¡P (”YŠZ‚xýöµ¹¹yyù(.T¬ëY¿{ÿî^Ò=‘HTŠâÊ>6¡pCsQ ·Õ L“‘öóT2ÿa²‡e)ÄØÈØÆÚ¦<| ”ª  ÅÖÆÖÖÆ¶ì¢ |¥Ž¨Fª78ާ¤¦|þú™Ïçk[—*‹Å²0·°o`OÁ ( \¨Þ¤¤¦äpsLM+óÏyyy†††UY&Aéé†5lаòüðçáBõæÓçOVV•ù&&“Éf³«²L‚ ˜LffVf¥ùàÏÂ…êP$d³Ù,«2_Ø  uuu«²L‚ DddgTšOþl`f·ÚSɱBµÃ0*•ªm-þ`t¡zƒý¤ò+­â2!„(G`tø3ÁFTæúO€?]¨ÞÀw,•Q™k?þxà’Z½!wUÀà@9ñ[¸Ÿ˜èêáåÛ*@(Êåûðñ“«‡—«‡WfVVIë Å~OO¯dÛ*ȵ…½öèÓ×»EËV!¡CFŒ¼WA®À~­^ø ¡HÔ®CFf¦\úÓçÏGŒЦ]>ýŽ?ýÑÀd@y¡`t¡  àV|¼\âù‹K]‡“ƒÃúÕ+8­XXîæ¨eJô´õ7µð÷Ÿ;3rìX##ÎØÈ‰û¬W(]Øwà Ç“K|÷þý¸ “¬ëÕ›9-:$(pÕºõÿ?_q~Ð>-” Ö.4´·?wáb@«V²‰.]nhoÿ2%¥up8_oomYXîæ¨æÝû÷×nÜ\¾x¡´ÆŽíÛÍœ3wóÖí}zõ*wW`ÅÖ.¬Û¸éêõ_¾~EÅlßµÛÃÍ-zÊd„PËæþA<{ö¼}›6¥¨ÓÒÚ…5ëV"„ÆŽŽP/Ó4冂х6!Á7oÅÊü6}ûîÝë7oÚ„“»¡pÕÚuí:wõôõo2&"2%5!t?)¹±g³;÷î‘Ù._½ææíû*õµtžÜøðñã#=}ý»ôìu?9ùñ“§½ú ððõïÔ½gâí;rÃõänfV–&eZ¨Ö„БcÇ;tíæéëß³oÿë7o!™Yƒ¡#Gyú5ïÖ'ùÁCeºÉV—“ƒªke%›Ø³[×V-[Y älˆìŸ2eTPük]¯^çíÛ· •K—H$ ·ï´oЋšC‡DMšX9ý¬òÁ0Œ `x |P.´lîQ(W¯]—¦œ»pÑÆÚº¾Ýo+¯Ý°q߃:´_4ÞøÑ£>~ú<4%:ÆÛËkæ´ y…S¦ÅhâPûúõÙ††Sc¦_½~½¨¨ˆLtrtŒ™Æd2es®_½Rúg]¯ž}ýúª•QHñµ íÚ„è×70 5B¿ûüå ŸÏçææõ<Ä? (´C§=ûök{uA‰ùauI2eGÁd‹ÅjÙÜÿì… Úµ%SÎ_¼Ô¡í¯!kA‘ bì˜>a½È]‡99*;;ÇØØhBÄøÎ=znßµ;//O__oØàAÅå÷ïÓ»K§Ž!±D2cÖœ93gtlßNºËÍÍU¡®Ú²œbßPmŽX,Þ°yËèà G…¢[¶Ž1 !äïë3d`8BH"Á§ÏšÍårÕ:T__ÚU —.‹œ¥££ãÐоIãÆ^îÞ^^rï”ÎJœüßéïéßìÞ¥L_eÕiþšöX½n]ïž=Gÿ3"ùÁÃ[·IÝò‡!Ê Åï]h2aJTNNŽ‘‘Ñ‹—)>~ þøéy4:j2Bˆ ˆ¬¬¬÷iΜ= !Ä64œ9sÎ\Ç·oÞH§Ó‹ ÷pw#7j˜˜ß%ÇÉ•Qº²*Ìyóö-—Ëõpwçñ~|ÚÏ×{ö¼¸GIïÓ&&Æ!±D¢‰O÷lß–‘‘y?99éÁƒ›·âvïÝgQ»öŠ¥‹‹gþüåËâe˧EEÕ«[7åÕ+ÅÊา·¨þ%-{H$#„ 0 o„O³fÜÜÜ]{÷‘ñV‰PQãª5ËU?vB¹È\½v…Z™†ÁRG€òBq¸àëÝLWW÷Âå+a=ºŸ¿xÑÑ¡¡•¥¥4\¸Ÿœ¼uÇÎG³Ùìzuëêýþe  ÀÅËWqØœ §Ñh*vUSº²*ÌÉÍÍCõ4X®ÏCqÊðƒ©i6!Áä ‰/S¢g̘:-fRd„lÇ£gĶnݾmUÊðxúúú kÑ|ÈÅb"„ü|~-´ôòð8sö\QQ‘Ü,ÉŸLF”#ŠÃغչ Ãzt¿pùrïž=¥‡²²³Gß®m›Eóæ² Bñ‰‰—¯^“fصw•BùüùËÉÿ&'Ê‚&ãÿjQaŽ™™)BhÁœÙæµjÉÉËÏ+n><âŸ#û÷ÚÙÚJÚ:4jZLaáo7nßµ;//7:jµjeTÜÎ1%ou”¦KÕ©]!$‰¥)‰„ ˆÒMó++1®ôk'5‘¹rõ2 kp QúVÇ6!Á?>ñÒ·oßC‚¥éiii¡°ŸÞd¬€JJ~ =úáãÇ›·DMš8(|ÀŠÕkrrrJª•BEI ª^è§9Ê̱¨]›Ãfçä7iìJþ¥¤¦^¸tIGGA ¥‰n êÛÑtt=.—þäéSSSS=½_#1/SRvìÞ³dÁ|i4P"eH4¿)š˜˜Ô«[÷Ò•+Ò”«×¯Û7hðG-ÀkšÊ ¥÷!77cãù‹»6jT«fMiºµ5‹Åš·hq¯îÝ$<.!áÞý$„PRrrp``ìœynnMƒBÿ3gÏ-[µznìÌ)dm]J¥.X¼´oï°‡¥¼zU.v*3‡F£ 2xñ²ß¿§;9:¼Lyµmç®Ñÿ–Z7==½Ñ#ÿY¾jõ·ïß[·lablœWŸxûìù ógÏ’Íùïô-üü¾§§KŸÌôõöÖ\) ‡Š. „ è;wžH$rmÔèV|ü͸ø‹•nh¡Ü»—H¦&9á›åˆÒpB¡î?x(48H6Ãá¬Z¶dÕšu1±³8œŽíÛÞ¿·ßÀÁW¯ßÈÍÍ{úìÙ±CB :}êäIc"";wèP"…jš™ÅÆL[¿isLì,_oïØé1-»ÊÌAõë&‹9ºgÿ:1S£:w쟘XjÝÂûõm`g·ïСkÖæçç6rvÞ¸vµ—‡‡¬Ø·ïÞ¿}÷^ö½ŠîÝQ¨Œ »42!Ô64¤ÇÛwààÑ'­,-ÏŸë룵×gU0¸PN`Ë—/ ˆºxõbX÷0m딌¸„¸&®M>RqϘTq™‰$ávBë–­+Ó3 nŒà‹”Õx»P è”] E”=QÑ•jwí‚&ÀÚ€r.©Õx\PðÍ€òFª70º Ú3@¹£ Õ¸'*€rFª70ºT0º€`t¡zC¡PÈï>Tf¥ÕbtA 0èŒÊt À „ Õc#ã7ïÞØ×·g0ÊíÖ(û@ÜÃä®D"‘H$¨ÌÅÉ…B¡@ P(³µñúíkssóòò À_„ ÕëzÖïÞ¿»—tO$•¢¸²M(ÜÐ\”ÂmõÓd¤ý|•̘ìaÙC 162¶±¶).Ts(Š­­­mÙE€2`©#j€Ñ@#pOIMùüõ3ŸÏ×¶.Õ‹eanaßÀž‚A˜@5Â@#RRSr¸9¦Æ¦Uö«Ðyyy†††UY&Aéé†5lа²½P6 \4âÓçOVVUöÓML&“ÍfWe™A0™Ì̬ÌÊv @™pСHÈf³Y,V•}÷¢P(ÔÕÕ­Ê2 ‚ ‘‘QÙ®(3Uô—"P©Ê±BµÃ0*•ªm-JŒ.ýDÛŠ¨Ñ°ŠË¬ÊPŒ.@å!Œ¨²‹E”£ €FhåÓ—%Õ°ê.TÙ…¢ª‹ U9P¨fÀàÕùp!>1ÑÕÃKúçæíÛ¹G¯]{÷á8.=ú==½Du”®TYDÉYáîã×¥gØÎ={ÅbqU*[äÔsõð m=#63+KE)Ç—,_Ñ< ¨Yó–•æI)Ø¯Õ ¿¸rízXÿðÖ!mø'ùÁCL *²©– ‰‚ÚuÈÈÌÄþ `2€êˆâɈù³c9BH &%'¯\³V$ 4PÛÚ– ©<ÿ~RÒÚ =~²bÉ"„“ƒÃúÕ+8œª Ži>lݱ3#3cËúuÊò?yölïƒÿ êâìTùÚbÅFîÞOŠ;¯[—ÎM»ž¿xiÒ¿Ñ»¶n¶²´Ô<›Z ûäñx•olÅÑÕÅá‚»›[M33r»uË¡}V»pAÖŠ €Öþ~¾c"&üwþ|»ÐP‡ãëí]uÔó÷õa2s.âóù,Kaþ‚‚„Pn]k˜˜T¾¶X±µ Ûwîòõn6aÜX„¿¯oŸðA‡Ž›2!R® Šl*­Û¸éêõ_¾~E/ Ð0[I­ÖDæšu+BcGG¨H9ª%­]hÒ¸qvv÷ëc¡pÕÚuí:wõôõo2&"2%5õØÉ“nÞ¾ä]¤GŸ¾3çÌ%·ß¾{?pØp_ÿ¶º;yRµ(éÑCG¶ïÒÍÓ׿{ï>.]’ÕJ  þO—žaÜÜ\M¬ðóññ÷ó=~âú}(>%5uÔ¸ÿ€@¿Ö£ÇG¦}ø ÍðúÍ›ð!Ã<|ý;tívæì¹ßj/¹T£¯¯/½39v¼C×nž¾þ=ûö¿~ó™8j\B( ´­«‡—TÃgÏŸ6¼Oø HòåË×ÁÃÿñôõïÚ«÷ýädêÉÝ5y|þÓçσÈ]*•ÚªEó{÷“äJ©È¦Z‚u½z;´oß&T×U#0 #^ ú¡Q¸ðéóg&“Éb1¥)k7lÜwà`§íÍŸ7~ô¨Ÿ>ÙÂß_"‘$ܾMæùðñÓ«Ô×!äî”èhgGǹ±3ì4˜=oÁ[·Tˆ"Íš=yöLöz]XX8bôX~ZTÔ´¨)£¦JŽ;ÞÅÙinì ;[»i3cïÞ»_ÈQTTÄãñy<~aaáË””Ý{÷…²X¬ƒGŽ.\º,( `î¬Øúv¶‘“§ÜŠO@ùBháÜ9ëW¯” ™5w¾«‹Ë¸Ñ#Iw/¨ÚÀè3}}¼gL‹æñyQÓ¦«pÜÚ…OŸ>ã8n]¯®4ź^Ý/_¿â8®a6ÕÚµ Яo`@k„-š¨büpQI2T/OFw2„P(H~øpûÎ]­[É^éE‚ˆ±cú„õ"w9vää( Fqqvºq+.80!tùêU›íåéqûî]„PÛI‘¡àÀÀð!ölßÑÂß_™¨ìì6Ûpã–­a=º“¥[·zýöÝ™sçBAÄÄÎzñâåŽ-›MMkhnmM33@ ûë?õõ뜜œm×ÛÚØ „¬¬,?!‰È£­[¶Õyóöíƒô/…*Ó±[ÙÝ:3¢£Åbñ†Í[F>x`8B(80@(mܲÕß×ÇÑ¡!BÈÃÝMv2¢K§Ž½{õD)+89r¼ »uéÇ)Ê•k×[·j)}ëm›ÐrðvmC—­XE†aÊD½~û6'''48HZéæuknÆÅO™¾héò«×¯·ð÷·²¬S"k±bðV–V,kÁ’¥ýûôvoÚÔÉÁÁišƒô¨œÎ+V¯-‹äX±d‘LjÜNûøqÅê5‹–.íÖ‹Ëåz¸»K§~ü|½gÏ[@>™Ri,òæí[…ëXX¨0ÐßׇÜ066B‰%®“û%Ð12åÇ‚ì7÷ªÏ¦N*µ Ÿ>}TQ°NKe‡TÈ\µf¹\Êêµ+¤ÛãÇNP&–:PQ.Hïd†ÌÍÍ¥+ò¤ÜONÞºcç£ÇÙlv½ºuõ~~†§U‹æ«×­ü䉹¹ù³çÏÉñsccé¶i SPXXX¨¯¯¯LT.7!d"óKZOOÏÐÐ!ôøÉ“áC‡lÞºíöÝ»Í<=5·ö{z:“ÉÔÓÓ“¦mÛ¸~ÓÖ퓦F‹Åb/OÉ‘äñâ:óù|éÈD)< ‡“££Ô±M»r¹Üu7…!„ú ,—YÙR[rsód2™* ähülˆÜ]ÓÐÀý\}IRPPH¡Pt_§©"›†þ0`2€jŠâpAöNVœ¬¬ìQcÇ·kÛfѼ¹lCC„P|bâå«×B6ÖÖV–unÜŠ3­QƒÍf{º»ý*•mY§ÎO Yºº,}}ý¬l¥¢ÈY†œ®´Ô‡Ÿž<}†Z¶x¡«‹KBâíÅËVÙ¿WóÏöܾs§‘‹³Ü%ÛÉÑqõò¥ ùᣠ›6yþô)…:3 òö\:¨Æº^]¡PH>±`ÎlóZµd2™LÕÅÍÌL•Ta æÈ ÌXÖ± P(ïÓ>4¨_ÿgë|¬mnN£ÑdK©È¦‰i¥Þe•e³´´*©½jeFŒ›(Ý^¹z™\JI¥TqJóVÇ÷ii¡°ŸÞä!””ü@z´Eóæ7nÅ]¾z- åoãðç/þx® ˆÓÿuuqQ-ªŽ…ÛÐðâåËR ±sæîÞ»!d^«†aS'M|ûîÝ¡#G5TûöÝ»×oÞêѵ‹lâË”” ¶í  †·—gßÞ½¾~ûÆçó‹ëüßùó ’—ûÒy@54B¨fM3›_ߤ±+ù—’šzáÒ%5¯ë¶¨][aÁ×oÞ¨0PsäîszzzÎŽŽ—®\!wq¿zýFñ‘Ù4”ðç¯i :RšoFØÚX³X¬y‹÷êÞM"ÁãÈ’’“C‚‚Zµh¾gß~ …2|è¯q ÃÈ{ž‹“ãù‹—?}º}ÓF„­µ*QC \±f-°Æ%Þ¾üðှ}víÝGÊtqvêЮíúÍ[Ú††(T¿Ÿ”D¦óùEI=~"800ø÷ç¬,­„BaTÌôÎ:nÛ±ÃÕÅEú惧þGê|áÒ•II(…ÔBŽò† ¼xÙŠïßÓ^¦¼Ú¶s׌èÕ§Ñh ª6°DÈýÊ<0ãñÓ§‹çÏ“{Ê`ü˜Ñ¸D²fý…zFψ5.bÔ¸ˆ©1Óoß¹3vä? æÌ’Ë£«ËZ¹t —ˉµjíZ'GÇ¥‹H.]¸àÉÓgÓfÎJyõjöÌéÒ7;•Âj©[× !tãÖ­~½ÃÆŽyîÂÅ©13._½35ªsÇšHPXPµšƒ{a€¯w³™Ó¢ã¢gÌüòõëÊ¥‹ëXX‡^¤¤Œ›0‰|†Šl*ýÉÀàÕlùòeááB¯^ ëV.B{öéçââ<ýß©e¥-âG‹¸øßik8þlÈ—×ĵ N×¶"JÉÉÉ122ªâ2%IÂí„Ö-[WªkJËÁ£ƒ[£Šø"eÚ‡)©©ÊÞMô7ðGz^ð7Sšµ *Ø{àà•k×êXX¸»5Õ¶iÚáOõ@ñWVT5´¾vA`íÕ”rvíÙK§ÓçÏ™õ×^ÿTTå@¡zߌ :RÎáÂ¥³g´mQùàëíýèÞ¿ÙrÀèBy ¬T§”Ô/` Û\yáÕ”r]þT`tàoFPŒ.A¡PÈ/ˆj[¥T‹ÑPÀ 3*Õ/å„ €F¿y÷ƾ¾=ƒQ!w;¹çŠ?> 6ƒX,‹Å¥®Z*PvC ©®·D½~ûÚÜܼ"P¡@¸h„u=ëwïßÝKº'‰Ê"Gáõâ߉@%\'!—YٮŠÔðA¦¸tÁ'öû{«0ù£Ê062¶±¶)‹´„ €FP([[[+hXê€`tAûà8ž’šòùëg>Ÿ¯m]ª,ËÂܾ=ƒ @Ë@¸ }RRSr¸9¦Æ¦•ùiã¼¼”á‚öŠ„l6›ÅbUæ[ „B¡®®nU–IˆŒìŒJó   ˜®Tr¬P-À0ŒJ¥j[ !]¨ `?©üJ«¸L¡ª0ºT]0„•¹þPŒ.h­|ì±ZŒ.TæÚO@p9Ö>0ä® \¨È.Ä'&Žñë°ŽŽe:]:uìß§w…þÔsõðRvèѽ;åX‘P(<|ìø©Ó§?}þÌd2mêY‡÷ïÛÜÏOšáÃÇOÿ;Þ¯Ÿ®.«âì•CŠ×.„Âv»îßµÃÌÔT6ýòÕk[¶ïHOO¯W¯î˜þqkÚ¤4•V‡Ñ ƒÉ€*âɈù³c9BH &%'¯\³V$ 4°âôX¿z%¹ñüÅ˵6.œ;ÇÐР"*š=íî½û}Âz94´/,äÝŒ‹9qÊÄȾaad†Ÿ>nܲµG·®•.(¹Åî;pÇãÉ%Þ½Ÿ;w^·.›6v=ñÒ¤£wmÝleiY9ªjˆªŠÃw7·šffävë–-Bû¬ÐpÁ×Û[v×ÃÝ­†‰I¹×òîýûk7n._¼0 U+2¥cûv3çÌݼu{Ÿ^½´5)P|íº›®^¿ñåëWTì'ûö»|½›M7!äïëÛ'|С£Ç¦Lˆ,E¥Ú]X³n%Bhìèõ)0MP%Ðh~¡IãÆÙÙ9<_ ®Z»®]箞¾þ-‚BÆDD¦¤¦’yöìÛÒ¾£§_óñ'ÝOJvõðÊÌÊ"9v¼C×nž¾þ=ûö¿~óVIUŒOLtõðúžž.»›™•En<{þ|à°á}ÂI³ 9ÊÓ¯y·°>ÉʉÊÎÉAÕµ²’MìÙ­k«–-¹KÎÅ„¶•QhYãë7o‡ óðõïеۙ³çÈC)©©£ÆEøúµ=>2íÿÅZ׫׹CûömBåÒy|þÓçσÈ]*•ÚªEó{÷“ÊÜ ª(† /hÂršŸÅb®Ý°q߃:´_4ÞøÑ£>~úk6—Ë%aèëëoX³jáÒe‘“£tttÚ7iÜØËÃÝÛËKúAG‡†Hf6D­ ­[¶˜A>dØæíÛÇü3"''gÛÆõ¶66!++Ë£ÇOˆD"¦ÐÍCçåç!„ ô­ê0Ð7ÀqœÇãè—c·¨"`€*âp¡c·²»Þ^žd(5!DDVVÖû´gΞG}úü9=##48Hš?80àν{¡7oßr¹\ww2ø@ùùzÏž·ÇñòzÎÂËÓCvWz711F‰%¹üNŽŽ{¶oËÈȼŸœœôàÁÍ[q»÷]{ÅÒÅöõë—¯Âr·Mh¹aX»¶¡+V¯µ²´b±X –,íß§·{Ó¦NNÓT˜ ú—´Ü/r„~ G)?ÀJü4¦ŠW­Y®¢àø±ÊEæêµ+ÔÊÄ0 –:T‡ +–,2â!„0 ™››K—=ÞONÞºcç£ÇÙlv½ºuõtuBéé!cciq“Ÿ«ssóBý –“ÏãñôõËç×°žžžì®ìX‚ LMk´ nŒzñ2%zÆŒ©ÓbN>T<§ ~+c¸i S>ŸO§Ó¶m\¿iëöIS£Åb±—§ÇäÈr¤A!šßé BÒ”‚‚B …¢Ëª¤‡8*˜Œ¨"(œ¥!‚”¬ììQcÇ·kÛfѼ¹lCC„P|bâå«×LŒMÈ£–uê9³s²É 33S„Ђ9³ÍkÕ’%](P ¸\n©Ë>xøhðˆŽìßkgk+Mthh?bèШi1…<ž^±*ª5AÖð¬¬,ƒ¡§§çäè¸zùR@üðцM›G<ú”2­0%ou”¦KYÖ± P(ïÓ>4ø9òáãÇÚææÊ¦9T£ìf1nb©=¬‰Ì•«—iX „ U„̼OK…ýûô&c„PRò„…Em›}þÂEiÎKW®’µksØìü‚ü&]É¿”ÔÔ —.éè”àåÓ !”““Cî–e¥dƒúv4ÃGË¥?yúÔÔÔTOÑÇ—Õšpþâ%rƒ ˆÿΟwhØ0åÕ« ¶í  †·—gßÞ½¾~ûÆçó•i¥ùMQOOÏÙÑñÒ•+ä.ŽãW¯ßhæéYj‡T}à5MUܶm­­Y,Ö¼E‹{uï&‘àq ä#|Ÿ<:xв•«¨Tªk#—ë7ã>|øˆÂ0ŒF£ 2xñ²ß¿§;9:¼Lyµmç®Ñÿ–HEëzT*uÁâ¥}{‡=|ô(åÕ«R[«§§7zä?ËW­þöý{ë–-LŒó òoŸ=aþìYdrÍãÍ[qVV–îM›ª5áÄ©ÿéèè¸89^¸tåÁÃGëW¯´²´ …Q1Ó;wèPPX¸mÇW–Êù…³þÅGBƒ†GNž²bõš¦Mšœ»pá{zzßÞ¥ycDERÓÌlöÌéäû¦V.]²lÕª˜ØY,ÓËÃcÂøq*TÒüÉ„¯w³™Ó¢·íÜyôÄI[ë•K×±°(µ7ª0¸PÀ–/_>!tñêŰîa¥“òüÅËÚµÍ9l6¹{èèÑ%ËWÞ‹¿õgÏ=“ß׸øßéâëýÌçóµ­K‚ÅbY˜[Ø7°§`øT .TRRSr¸9¦Æ¦•ùAç¼¼|غcgFfÆ–õë´¥¤“ƒÃúÕ+~w`)~‹5þÓ§Ïú÷íSÇ¢öë7owîÙ›™™91bɪ0Jî[XÈóñnÖ¤±«4¥¦™ŸÏ/*ðøü§ÏŸéT*µU‹æ÷î'!„Tª¾`F0¼P±(ŠŠŠx<¾ìŸX,vwkÚ©}»y  …ÂBoÑÒeƒÃ4¨owðÈÑ‹—¶lî?Îl'‡¨iÓÉ;ÐÁ#G.]0wVl};ÛÈÉSnÅ'H«˜5w¾«‹Ë¸Ñ#ÉÝ‘cÇ»8;Íagk7mfìÝ{÷Éô1#ÿA-œ;gýê•Êlj[XXø2%e÷Þ}!A,K¡………#Fåñ§EEM‹š’‘‘11j*)gÏþ«Ö® lÕjÞ¬™ö êGM‹¹}÷®&NT¡¤j™S¢c¼½¼fNû·W8eZŒŠ*°_o^À0 ³®Wwù¢…f¦¦‰$;'çÁ£Gûòòp×ÓÓýôé3ŽãÖõêÊfþòõ+Žã*aUŒV—$3Pq(žŒèØ­‡\ÊøÑ£ Ÿ1¾sžÛwíÎËËÓ××6xD"Ù¸ekXî“"#B­[½~ûî̹sM»nؼeôˆáƒ†#„‚„BÑÆ-[ý}}H]:uìÝ«'B(>1!Ôºe RBp``øa›·o÷ôpG9:4Dy¸»©Xº(§m ‹ÑÑb±X¡“#ÇçäälÛ¸ÞÖÆ!deeyôø ‘H„ÚºcgŸ^=I5B‚‚2³²6oÝ>dP¸Z'*SR$)”ÙÌÓ“Ìàïë3d`8BH"Á§ÏšÍår9JV<(û }þÒ¥¹ !„jš™­Zº!”—Ÿ‡2Ð7æ1Ð7ÀqœÇã«8d` _n}ªrÁ„ ŽâpaÅ’EF#Ù”ÚµÍBlCÃÉ‘‘3çÌÅq|ûæt:=%55'''48Hšsóº5 þæí[.—ëáîÎãýøà²Ÿ¯÷ìy p'w½<=då· !70 k×6tÅêµšÛ «mÚÇ+V¯Y´tiŸ°^ ¨caÁb±,YÚ¿Oo÷¦Mœ¦9 „Þ§¥q¹ÜCBƒ‚–®\Uç~þòEµLiðdbbŒK$ÊD)û%íçí³n劔ÔÔm;w­Z»nÖŒ˜y°_ó?¦¨8¤¨R…ú¬Z£ê1™ñc'¨6DC™«×®P+Ã0XêPÑ(œ•-u \¼|…‡ÝÈÙ!”ËÍE™ÈüªÖÓÓC½LIAõ4X®8Ç“Í&Åĸד¦5Lù|~AA¾¾F?yeµmÒØ•Ëå®Û¸)$(H¡L&sÛÆõ›¶nŸ45Z,{yzLŽŒ°µ±ÉÌÌBý ’LLLH5Jí\µ29?=¡ìkdÄqwkêîÖÇñ ›·Lžjh`ˆ’U»  B¡è²X*•ÚF­“•@‰ßê¸kï>*…òùó—“ÿ;Ý¥SGSÓ¡œ®e:d†?åææš™™"„Ì™m^«–lq&“©PlVv¶TBVVƒÁ‹'4Ǻ^]¡PH>¡P'GÇÕË— ‚ä‡6lÚ~ܸyKÔ¤‰ƒÂ¬X½&''§Ž…ÛÐðâåËÒ<±sæîÞ·Ï¢vm›_ߤ±+ù—’šzáÒ%ÅŠô‘‚ þ;Þ¡aÃRßh:4„PÍšf xýæMPÛö……… ÃÛ˳oï^_¿}ãóùµk³ /È< qþâE'G‡_ž¢PB999ä®ì²Me¨•©9rÞ0âp^¼L‘}˜âÁ£GFF}===gGÇKW®é8Ž_½~ƒ\-¡âPµ^ÓPÑ(¾yßOJ*>NîÓ¬YìœynnMƒBÿ3gÏ-[µznìÌ¡ƒ®X³aXãFoßN~øpÓº54mØÁ‹—­øþ=ÝÉÑáeÊ«m;w͈þW™'NýOGGÇÅÉñÂ¥+>’>b@~žøæ­8++K÷¦M51‰À(,ä)TÀÊÒJ(FÅLïÜ¡CAaá¶;\]\È¡ˆAáV­]G¡R9;]¹vý~Rò–õë„"!)ÖÆº•J]°xißÞa=JyõJZ£2%i4šB™¥k*ÙY3SSo/¯kÖdeg[Ô6ðèñÑã'&ŽG~@aðÀðÈÉSV¬^Ó´I“s.|OOïÛ»YVÅ!Õ5–%’©INøf@% 8\ˆž[¸ªif3mý¦Í1±³|½½c§Ç tä(O¿æÝÂú$?xH…«Ö®k×¹«§¯‹ 1‘)©©Ò‚oß½8l¸‡¯ÛN]Ž)•6%:ÚÙÑqnì û fÏ[pãÖoÁÁ#G.]0wVl};ÛÈÉSnÅ'”Î/Ñ3fúúxϘÍãó¢¦MW9bÒ”æþ~3c¢ùEE&GMŒšÚ¾MhlL´@(˜63VåKá Y GŒË/âO‹Šš5%##cbÔÔòè€ÂÉ:Æ 3©TZìÉ7R²æv­ç×€ó%§hüŽÇý[Ù¾J}Ê%?OZ6ÔÏÓ¾¦Ú :vë!—2~ô({û!_Ÿ!ÃB >}Öl.—ËápE‚ˆ±cú„õ"3s8ìÈÉQÙÙ9änÛI‘¡àÀÀð!ölß1rø0òX,Þ°yËèà G…¢[¶úûú”Â/ݺt&u#"&v—ËU‘¹ŸÞ]:uD‰%’³æÌ™9£cûvÒ]nn®2å[øû“‡Já YR_¿ÎÉÉÙ¶q½­ BÈÊÊòèñ"‘ˆF£•S?þj„ 4Á ¿ÍœNúÑÆzó¥wÙyµv\yÔðe:ž™+¸}÷ᶉíZ7±Ò¤‚KqŒdSj×6ýæ BHz#711F‰%„PtÔd„AYYYïÓ>œ9{!„8™³Mh¹aX»¶¡ËV¬"‚Lyóö-—ËõpwçñødŠŸ¯÷ìy p§PJüˆT7cc#©nÊðpw#7È5r»ÒÑʗ²XYZ±X¬K–öïÓÛ½iS'§i¥è  ÅáÎ((âc’¢øw‚®ÞVñÏ>„9<ÿ.)à .ß¼36´††±BÈÉѱøRG2\à(ZÛ?9yëŽ?f³ÙõêÖÕÓÕ•=jbüë© Ó¦¡°°°ÜÍÍÍCõ4XN ÇÓ××/©_8%yî@îG¼²ßô*”/…+d166Ú¶qý¦­Û'M‹Å^ž“##È‘(;ŠÂ:ƒÁhfo ‡™êa—_òZ9X>ü" ø®ÝÙ11XœŸRAÚdeg;¾]Û6‹æÍe"„â/_½&›Á²NÛYYºº,i(`ffŠZ0g¶y­Z²2™Lf¹ë©znB…uÊ”/…+äprt\½|©@ H~øhæͣÇGž?}ªÜ þNŒÒÓi4F§Q÷NluöJ¼ýï OÀ+¸pýΡé}œêÐ+lFü}Zš@(ìß§7yƒD%%?Ípþâ%rƒ ˆÓÿuuq‘²¨]›Ãfçä7iìJþ¥ü¿½û‹âhþî×h* ( " ¢H ö. j,ù¢TĆQTì½`ïšXb¢1ÍF{‚FˆX(Ò›r w[¾?VO<îP¤èû{x’»ÙÙÙÙ¹}Üwggg#¢¢444*½}•¸.äç¿7ðq#(ÕTþ#š¢¬G Þ½ûJ$@àæê2ÒoxzFFIIɧï8B!J{!ÃÐ`oat4´ÿÐÅš56ú/7ï÷°öF2™T ¨ÂõúØØÊwì[YXˆD¢e«V:„¢è+׮ݾ ±qqÚÚÚA°§{;Û³‘Q÷îßß·sGÉ›·'E÷Ý·ãW¯Û™™egkó(áñÞ?.˜ûCµ4“…E3.—»bõÚ‘~#âïÞMxü¸ª%(­üG7…Bfs3s©T:`¿~EÉÞýûìíE"Qµì;B!¤¤wÁȰqzÖKv€žsËÆ.äíÐøìŠaöF$I¦g½42l\ù Ì]0ušÂŸªÌzzzáëÖ”—„†-Þ¸y‹‰±ñ¯G™5isá"±uãÆ¸âç-\”ôôÙªeKÛµ-»ú(¿S&‰ˆœº :æ|èœýûUK35jØ0,t^fVVhØ¢ôŒÌ°ù¡U-¡ÂÊW©)hjŠ6®]SPP¶(|Ë;[Ûµ«VTËŽ#„B@¬_¿n̘±9bè IYfvzÁ«|ù¸ý÷¹ BOW¿‘‘±†>¡‡B}áŽ?Ú£{Pz3BCƒgjlnj\ÙgB!ôeÃX#„B¨. „B¨. „B¨. „B¨. „B¨. „B¨. „B¨. „B¨Õðú%TI4M'$&¤¥§á˟ʉD¦Æ¦Ö-­9¯!TGa¸Psò ò Œ€ùôÂ*ëÕ«WºïÞiY7Ëd&+;‹ ˆV-[Õ\» „ª jNjZª¹©¹ŽŽ‡Ss—ÑB¡P,×å2† …9¹95Ö&!„ª Ã…š#•IÅb±H$"¢æ6*•jjjÖå2†a€ÉÎË®±6A!TUx·¸FÕp¬P/Áårk»!„ÔÁÞ…šC¼Só­ãeb…Buö. ÚGÁÔäøO„BU„½ 5‡½†ÆÞ…òjrì'B¡€ÿL×ìrW;B¨û \¸zýºƒ³«{7O©Tª/9%ÕÁÙÕÁÙ5'7·¶ë\eÉ)©Ûwí..V>9MÓkÖoèìéÝ¡sWy#dfeÉ?TW5ˆ÷£ÞËËÏŸ:ß³WŸÞmݱ“¦iù¢sç/Œ=¦»O¯ñ¿û'žø¢áÍ„ªË”ô.]¾zU!ñlddmWõ㥤¦ìؽ§¸¤XéÒ<8ôóQ¿á¾kW.;›m›6êëéU{5”ö.,^¶â¿„„™Ó‚ü‡ûÿýŸaÓo݉ [º¬ƒ«KØüy5šùÃÜä””ÚnÈÏ £„ªÃ”Œ]hem}&"Ò³[·²‰QÑ­¬­%$Ôv…«_QQ 2ذAÐÓÓswsû*?v!7/ïvllØüy>^^P\RrìÄïãÇ|ûüèîÖaúÔ)àáîî?fÜ/Ç›==ø#6Z[c6oÝS§U\ oÓ „P¦¤w¡—OK—¯HŠß_‹?}öìIRR/Ÿì×R©4|ËÖ>»¸{tñö™<-8!1îÄÆµuépóöm6[tÌùön-œíáððáØï&øÇ&ûíD¿ÁC\Ü=|G޾pérÙü¿?ÞwÐw¡~þQQòôò«ÈïüoR€K§ÎCFøÇýÏf˜: <{övpv-¿¿ KU݃PZÉ„ÄÄ€©Ó<<½:u÷ ~‘œ¬¦­ËŸbÙkkö«M+ë‚‚‚ââââ’’ûz{z²é\.·[—ηïÄÖÔQQÓ‚`ì^@¡ºKI¸Ðµ³ÁáÄœ¿ O9iiaÑ¢¹ûuËö‡>: _ßUË—¤¤¦€S{Ç}û,[¹Z*•JŠ‹W­]7~Ì7-[4/¿‰EK—;ØÛO œG_¹v·§çÒEa-š[Ïš}ùê56ÛÑcÇW¬^Ûµ³Çò%‹íllBæÍgO™jV™=7ÔÍÕuá¼$Å’ÙóBÙÄÉ“¾€•K—lÛ´±|eÔ/•פü%ÉÄÀ)%oJæ…„Ì ™=#dŽš¶.?vÁºE‹ý»wšš˜°_Ÿ$="‘(55¦i‹fMå9-š5}™ž^vdCÝ÷v¯«’!„Pݤäf„H$êÚÙãtDD¿>½Ù”³‘Qýz÷’g(}S:mÊdÿÃÙ¯zzâàY!yyùúÓ§ æ»ïÇŸ^½z¥­­õÝøqJ·:h@¿á¾@’äö]»'N?v ôðò”Je;vïñpïHQÔŽÝ{F :3xxuïöä鳓gδkë t•€‰ß€‡{ÇoÇŽŠ¢ç/Z\PP §§gkÓ œÚ³·¨_ª¦’³‚ƒòóó÷îØfei ææfÇOü.“Éx<žÒrÊ_CkiiÉ»nÞº}ðÈÏ=<»s8œW¯_€Ž¶Ž<§Ž¶MÓÅÅ%::Úµv°|6`¸€BušòyzùøLŸ’ŸŸ¯¯¯ÿߣ„ä””ž>=RRSÙ¥sCfÃ0¹¹¹Ï_$Ÿ<}h†±®î¬àà…K–Ò4½o×>Ÿ¯´|WgöCÒÓ§ÎNNòÇ:¹»-^¶‚¦é'OŸæçç÷ìá-_k×ÖÍE«\…¢Àý#›Ø õém¤j‹MLME"ÑŠ5kGûû99:ÚÙØØÍ³QSŽª+iIqñÖ;Oüñg³¦M§N|Ÿ‡xÿâíƒD•ŸÆTsí¾y½šƒ¦L¯–27mÙPa™AàPG„ªË”‡ în455#¢Ï6ôld¤­M+s33y¸p'.nÏþwïÝ‹ÅÍš6ÕúðmC>Þ^«×oÐ×·iÝZÕVµ´´Ø……¯`Ô¸ñ Š‹‹  A™+~v-v¸¥’UJŠ@ï3<Ñ ª’B¡pïŽm;÷ì›9g.I’®.γ‚§±= J)=Å&>Iš=wÞËôô^ž!3¦kkk€®Ž.¼ƒÉ**’p8M‘¨Ú÷®.À›!TÇ)x<žW÷ng""G íçë+_”›—0%¨Oï^«–-ëêÀÕë×£cÎË3üxè0—ÃIK{ùÇ_Ð_ýæ64€K7n\6](@~~Y“&lbrJjaa¡ªUØüÏAM%ílm7­_[ZZwûÎ]AÁgÿþSU9D¹'#Ò^¾  *-•.^0¿l?ŠYS‡óüErË-Þí{Љ±±ªÛê©:O›:ã£Û¤2enÜ´®’[Áp!„ê8•³:öòéq÷Þ½³‘Q™>Þ^òô/^”J¥£ýýØXbãþ‘/MNIÙ±kwÈÌãÆ|³aÓæüü|õ›751Ñ‹_½n×ÖýKHLŒˆŠÒÐÐhbj*ÖÕŒŽ–g[²ô§Ã‡Õ¬ò™ÚHÕŸ$%y÷î+‘H›«ËH¿áé%%%ªÊ)RûƒÇ/Ïþýgw· çÍÝ{àÀñßÿ°²´Ø¸vuSÓêýíëì\@¡:ŒX¿~ݘ1c 2&rÄе]Ÿ/Ù•kWÚ9´Sõ´ÈgÂ>ÞRÇˤ(êÚkÝ»v¯É–A!T¡£ÇöèÞð”5 g@!TO}®á¨¼òOFÔÌFkwìBeàØ„ªãðŸéšƒ ªïŒ@¡º {jö.¨o„Buö.Ô <'ª€áBÕqØ»Ps°w!„P=…½ !„ªö.Ô‡Ã0 ö.”W*-ð5Ù,!„ªÃ…šc oô,ɺ…µ@Pm§Æ²(<\À~¥(Š¢(øäGØÕÙÿJ¥ÒÒÒR¥e~ÄV†yòô‰±±quµ B¡j‡áBͱhfñìù³Û±·e2ÙG¬^þ‚^žRþCå‹Rú¹â_”)íÝTeþG”]\v‘Rú–*_üB¨Öa¸Ps8Ž•¥••¥UmW!„ªêˆB¡ `ï‚"š¦ÒÒÓJJJj».!„P-‰D¦Æ¦Ö-­å).(JHLÈ/È720ÂW*#„ú:1 “•Uvø† ŠRÓRÍMÍuttð½G!„¾N Ã…œÜy † Ф2©X,‰D8q!B¡¯Ã0 0ÙyÙò¼€Vc„B_3‚ ¸\nÙì]PD¼SÛA!„jÂy{B!¤ˆ‚)3æ{ÕÊ{#B¡:Ea¼?ö.(Â@!„€² († W¯_wpvÍÌÊRšž“›[½5a‹ ™Z3›« âýè…*¸yû¶{7Ï윜Y!„ª{ÊÞŒ¨½ g#£.^¾\Ûµx‹ÀÞ„B>è]¨cš[Y-]±ª}»vÚÚÚµ]—» _ £ „B_‚óÉOF$$&LæáéÕ©»W`Pð‹ädù¢c¿è7xˆ‹»‡ïÈÑ.½í0`ï,»¸{tñö™<-8!1Q^frJÊ·'¹¸{ ò~'.îÞ¿÷‡úÆÙÝcÀPßë7nª¯•Êúð|ãÖ-·.Ýþ{ôèûÉSÇOœ‰O’‚g‡ôèÛß»O¿é³ç$§¤Ê3§gdLšÔÅÛgäØqÿÄße¥Ré¶»†úùwñöéÕàŒ9‰O’ä%gegOž6½kž#ÇŽ¿wOiâg?(B¡Á0Ÿp3B"‘L œRò¦d^HȼÙÙÙÙ3Bæ°‹Ž;¾rí:oOÏ¥‹ÂZ4· ž5ûòÕkò-]î`o?5pRù2MMM¦L:ñÇŸ·nßQX´eûŽÃ?ЯïªåË‚RRÓƒ‚åK§ÍœÝÙ£ÓÂй%oÞLŸ2#dNß^=ÃBç–JKç- «L­”4ÂØ `Åšµö­í&|W\\}†  ÷þ½_PP0;|£¥E30kÒä÷¿þ’Édl¶ýúŽ5†Y¼|EAa¡žX\*-üýDß¡CØ<ºººsBççç¿Ý…Ž:°«P4µdùÊ‚ÂB¥‰zbqU)„B裱—¯rUÌÍÌE"ÑŠ5kGûû99:ÚÙØØÍ³€„Ç œœŠ‹ß¾÷¹“»Ûâe+hšf¿ºº8«)–Ãá,šê;rôæmÛgMß07d0 “››ûüEòÉÓg€fÞ–éìÔžý`Ø Aù¯$I&=}ªªVªÞ ¥U[2›bnÖD$® ÷óõulë`kÓÊÖ¦•<›»››ÍÀÀhš&böôà·»——œœìð‘Wi`Ð(š*ŸÈ–S#‡B!ÀÞšÿ”¡Žú{wlÛ¹gßÌ9sI’tuqž<ÍÊÒ²°ðŒ7^!qq1ûAKKK}É–ÆÛ¾{··<ñN\ÜžýîÞ»'‹›5mª¥©Yv§æ+¨©•ªa•JOÌòÊëëëoÛ¾ïÇçÎ_@R”³Sûi“--,Ø¥zzJúââãÁþŸÐÀ¦ØÙÚ¬[µ²´´4þÞ¿»öî žò×oDz½ýJùùA3fõòé±,l¡®®.\¿yóüÅ‹òþ ÅU€PZö. „ªI„úwFX·hÁçóO(›HÓôß§N[4k¦­­ý(!Á»w_‰D"Ü\]Fú OÏÈ())151Ñ‹_½n×ÖýKHLŒˆŠÒШB†††FØüÐç/^ìÙ¿^¼xQ*•Žö÷ccˆû§J{ûµRbNxœØgÐv÷]F –‘™Yòæªü/’“¥R©ÿp_Ýw» b!„ªËÔ½3BGGgò¤ïׇozþüy±Xœ™•uòôéG ·l\æfæR©4$tþÀ~ýŠ$’½û÷;ØÛ‹D"øîÛñ«×mÈÌ̲³µy”ðxïÌý¡ª•³³±ùf¤ÿƒ‡ÀÒÂB$-[µzøÐ!E_¹víöXˆ‹«ä <ï#jUöjþíåþ»ss3©T:Ñâ~}úH$’ý?´oÝZS$RÈ&ï$°´´‰„«×m:x EÑ×nܸÿÄÇkki+Y…P^ö. „ªI #ü”\d5²©¹ù‘£¿¬Ý.‘H ôõÛµ›ÿÃë–-@SS´qíšuáá¡a‹D"¡«³óô ©ìŠ£üF$ù˱ãüÜÄÔ4tNÈÀþý>¢Š'Ä\¸˜œ’¢§§¾nMøæ­¡a‹õõôú÷íóë‘C£ÆŽ¹p‘}¢2ªZ+¥OFÈiŠDkW.ß¼5léR‘PäìÔ>(0@Mizbñº•+7oß¶t¹žXÜ·w¯#öýnâ…K—ûöêU-¿(B!ôY”9ëׯ3f,DÆDŽ:¢¶«Vû®\»ÒΡŸÏ¯íŠ „Bµ†¢¨k7®eådõèÞêÈ;#ê…'MB!T'ÞQ§õ΄BèK¢0v{a €B@Ù‘|Ø» {B¡ æ]@8t!„úÔWL}ñ°w!„R€½ !„ªö.(âp8 Ã`ïB¡¯Y©´TÀÈ¿b¸ È@ß éY’u köm[è+¡f*ϯ°äÏ]8ª.Uý™ª”ÿóe® MÔcæÉÓ'ÆÆÆ©é©l † Š,šY<{þìvìm™LVÛuù*ÔVGΧl÷£×ýÊ{­>ßîWcɵr`Tï.Ô ŠâUzï«<“ñ ëV®Øj®s9 ô ,-,oÇÝf¿b¸ ˆÃáXYZYYZÕvEB¡º‡:"„B¨Ø»PÿÐ4˜–žVRRRÛu©CD"‘©±©uKkA0BU3 ꟄĄW¯_µkÓVXƒƒ1 ôôôêr™oÞ”>NJ|œø¸UËV5Ö,!ô•Àë°ú'5-µ¥UóšŒê¡P`ÕÌ"'7§¶+‚B_ ê©LÊçók»u‡ËÁ‡©BèsÀp!„BÀp¡þ!¯¡BÕ$ Зƒ‚ ¤B¨úa¸Pÿ`ï‚juf:4„ú²`¸Pÿ|m“ÅVAv. „ÐçPá„€Éήá[·U&srJêö]»‹‹q"•”N?ž—ŸåúÕÓ‘gÎ]Œyöâym×±ÖÔ£›W¯_wpvÍÉÍe¿–J¥ÃüGæåå«ÊïßûS§Õv­B_)%Ó4IJ$·â®½z ‚Î:EFEW8¤ò¤ï`åÒ%Û6mdSù9|ËV¯nÝ–-ZhݲEȼзnI$’‰SJÞ”Ì ™2;;;{FÈ6ÿ–í;ÿ|t@¿¾«–/ HIM ööìžðøqzF›çßû²²³ûôîyôØñ•k×y{z.]Ö¢¹Uð¬Ù—¯^+_+¥Ù>®ÌEK—;ØÛO œÔÅâ¨k7n°éÉ)©ŸøTâÂQaìBqq1IRR©ôâ•˧"ÎDDG=IJúŒ‡L½¥æ˜Qó“=v|Åêµ];{,_²ØÎÆ&dÞüÛwbAÅa)ßÖ칡n®® çý )–Ìž7MüñÐáí»v{víºdá|--ÍÕë6ÈóÇ\¼èâìTa=ù|~;‡61/Öv["„¾:JNü|OÀjhð”® à ù<TÎÙÈ(mmí.=ÀÇÛ3"**þî½vmÔ¬bkÓ œÚ6h2™lÏþþÃ}gOoïœÜÜ]{öM œ”ŸŸ¿wÇ6+KK077;~âw™LÆãñJß”N›2ÙÄp¶@==qð¬ûÖv|>ÿÂ¥Ë~¾Ã :&Ƹqã6­[OŸ='pâ„ñcÇ@/O©T¶c÷÷Že«D’äö]»ËgÛµmËG”9h@¿á¾ìgûÖv/_aû–£cbôÄbWç [• ˆ²AW©´=¼å)=½½>zdnf.‰V¬Y{ñòe‰Dbgc³pÞ\ößÓ¹!³üG g&''çNlÜÉÓg@$¹¹º^¸x‰-äÜù ½zú<}ö¬  ÀÙÉ©¸¸„ýëäîö(!íÒ—KzúTi6‘Pøe– ºvî|åê5vѹóºwëZ~¼HyÄ‡Ï R -›·°nÞ²¡‘‘u+3Ó&‰IO>Çá¢Tzz†š¿O/SUŠò–QÝ{¥ê˜QõûÒ4ýäéÓüüüže¿][7Ï RuXʿʣà €¤¨Ô´—…¯^õëÓ[^Õ>={²ŸÓ^¾,--•ÎPsl€‰±ñÓgÏjìÇE!–’ÞÏç Tõ.ðù‚J† IOŸ&>IJ|’têìYybÔ¹˜Ù3¦W¾~99¹` ÿ~¸xƒ JJJø|ÞÞÛvîÙ7sÎ\’$]]œgOc¯ÆîÄÅíÙàî½{b±¸YÓ¦ZššìŠÞžÝÖ.+**J{ù25-­o¯ž¹¹y0jÜx…kkkË¿¾R•­Je²´´Þ?TÒ­KçM[·Ýû÷_ccã²7b*¤0vACƒ 6”§&§¦PÍåâ¼ïè+=fÔü¾……РAy"ûó=NLe‡¥|$Jùsçå瀡áû¢ ß.ÊË]õõd—êêêH¥Ò¢¢¢²‡(B}nÊ ¾@ ÐÐP>@A ð4*.œ‰ˆÛ6märÞ^1Çß»·qó–;±q 9 TÂþóš—ÿ~œn^ž@ ÐÖÖ¶³µÝ´~miii\üÝí;wŸýûÏܼ¼€)A}z÷Zµl©XW®^¿sºvö âʵëIÏžY·haeiÉ^ʯX²Ø¸ñ£î…BaÙ¯ ©ÊöÑe²,-,ÌÍš\¼|ÅÈÐP,»8µ¯LÃ*„ "‘húýeuÙÏ5 2Ï,|J™•2¢BJ5¿¯‘‘!äçÈ¿ä”ÔÂÂB5‡¥ªM@NNîûUÞ͸À*{ƒIi=ß-$§õDÕ0%WŸ|ÇãqTàñx•»p62ªSÇŽNŽŽíÚ:°ÇåóùQQòóßÎH£tt!ËÔÄD¬«U¦ØH;[›G Þ½ûJ$@àæê2ÒoxzFFIIÉó/J¥ÒÑþ~l¬±qÿ°ttt\Ï_¼}.¦Oï^lázbñë¢×ò&$&FDE)„Jj²}t™r]:w¾xùJtÌyÏ®•ºåÆ.Bm-í´ô4yJzfºXWüv-„ºwF¨:fÔüdMLMźº‘ÑÑòB–,ýéðaU‡¥šº™ëééáÛqc¹\îŠÕkGúˆ¿{7áñcyö”yéòss3'GG7nÌ7á[¶r¸Ü6­íοp'6n÷¶­æfæR©4$tþÀ~ýŠ$’½û÷;ØÛ‹D"+ ‘H´lÕêáC‡P}åÚ5v{l\œ···g÷e«V“$Ù˧ðx¼ï¾¿z݆ÌÌ,;[›G ÷øqÁÜöE}¶+S®[—Îáp8þ7ªàƒ“b «æÿÜ‹§iº¾AFVfFf¦KûЇL~mT3 ê'ãñxÿ7vÃæ-@mÛ´¹~ãF\|üέ›U–j¶ÎãñÆŒ¾e«—ÛÞ±]tÌ…ä”v‘©‰‰@ x™žagk«¾ž‘‘aѬYm·%Bè«ÃõññiÛ¶-$=KjmÛd¤LR\¤¥©Íá(^ž’$™ž•¦©©¥§«¯¾Ü~ôøñÂÐy ]R©ìlD¤»[Wgç —.:{V__ÚÔÉ¿ÿùטQ#555õõôîÞû÷øï¿Ÿ¿pqÜ7£ m›6§NŸùëÔiŠ¢˜=«s'w×¶M›ó/ÿýØâÚµm»0tž–––P(´omwåêµã¿ÿq÷Þ=§öŽKœ‹9/‘H¼=»ïÿé S{GöYhcßZ üñ×ß:“›;eÒ÷ƒô/¿;j²U¾Ì”ÔÔSgÎŽé¯]føBãF~9v\(Í=«’³ %§$7jذlW„®®®@ÀOMKKIK¥i¦}ãFª÷@yóæÒû)5P&; @G§â[õ ä§gX4³PºTÕ1jß6öö|>ÿïÓ§Ož:]*-3sfN â°„r¿2û•=¶ÚØÀ©³g#"6j8{zðŸŸ3j¤Ž¶ö­;w‚`¬PSO8pè­mǪ÷·@!¥î?¼oeaÄúõëÆŒ ‘1‘#†Ž’”ef§¼Ê/” =]ýFFƪB¢àë?ÊÞ¾õüæT2ÿ•kWZÛÚò*ý8kµ((((?|¯®•IQÔ¸¸î]»×`ÃTŸùõïS§üt@}6™LÖͧצukÛµ­í*#„¾ Gíѽ(½¡¡Á356756¯íJ~^$''$&²ïWtSªþNÝ¿oŸÍÛ¶§¤¦ªŸºûêõ5ÄX!Tó¾ºÑpuÊ¡Ÿ†-]ÖÄÔÔ©½cåת¿'E¤Š–––ÿˆá¿þvB}¶_ÿöÝøqµ]Y„Ð×Ã…ÚôãÁCYYÙË—,*?LD …išPYõ÷ ÃïÆ»qó¦úX€·w E¡jRÙ·? Ï!êôÉX {T©×-#Ž9¬&CûÖò© „P ÃÞ…zˆ€z{ B¨^Âp¡þ©××Ð!„ê# B!T ꇣfÚͯ™Œ” ø‚Ú®B}p¨cýc oœšjÑ´i5ÎÔTþ…Š¢)Šúä­ûL[¸T*“J¥eÓ•®BTn¬A@rjª±±quµ B!9 ê‹fÏž?û÷Á™Lö«—ú O)ÿáÉêŠRú¹‚2²2߯ï>”ýþnqÙEJèXZXV[C#„zÃ…ú‡ÃáXYZYYZÕvEB}-pìB!„*€áB!„*€áB!„*€áB!„*€áB!„*€áB!„*€áB!„*€áB!„*Pá„€Éήá[·U&srJêö]»‹‹Kj¹a>tõúugWù_{7÷Æÿxè0MWíÝ usïB!õ”Ìê()‘ÜŠ»òäùcšV|G‡ÃmÞ¬¥‹c'-‘V%7“›{;6VKS32*:(0 Âü)©);vï6d°¦¦¨¶GÑòÅazzzPZ*‹Û¸y‹L&û߸±•/¡.ïB!¤Š’p!6þÆ›7om:p¹\…EEe忌¿ÑÙͳ’ˆŒŠæp8Óƒ¦.Y±òþƒ­íìj{—?žSûö6d?wïÚ=Z¥p!„ª”ÜŒHMѤq3Scc…?Ó&›¥¦¿¨üÎDFvêèÖ¯Oo‘Ht6*šMdûö3³²Ê~ÍÉÍ€€©ÓÀ³gogWy!û:سÿ§ŽùŽ8Å&&$&LæáéÕ©»W`Pð‹ä·o@*•J÷lí3p°‹»GoŸÉÓ‚ƒg…øŽ-/aïÞ}/[Ç~;Ñoðwß‘£/\º\ù]k×¶m^^~qq‰Ò-Ê÷ëÁÇc¿›à?fœÒ½Sµ!„PÝ¡$\àr5DBM>Ÿ¯QŸÏ 5¹Üʾ˜*íåË{ÿÞïÓ«—@ èÜ©SdT4SÑ«ˆ'OúV.]²mÓF6åà‘ŸÃ·lõêÖmÙ¢…Ö-[„Ì ½që–D"™8¥äMɼy!³³³³g„ÌaóoÙ¾ãðÏGôë»jù² À€”Ô´À `oÏî §gd°yþ½ÿ +;»OïžG_¹v·§çÒEa-š[Ïš}ùêµJî]jZšP(‰„J·(϶hér{û©“Êïš½@!„ê%'~>'à 54xJWð…|*çld”¶¶v—Îàãí÷^»¶jV±µiÎNí 4™L¶gÿÿá¾3ƒ§€·wNnî®=û¦NÊÏÏß»c›•¥%˜››?ñ»L&ãñx¥oJ§M™ì?b8[ žž8xVˆ}k;>ŸáÒe?ßacܸq›Ö­§Ïž8qÂø±c ‡—§T*Û±{‡{G¥u{óæ ;JQ*-‹ßwàG¯îÝ‚PºÅ¼¼|öë ýý†û*Ý»Ä'OTíEÍ !„*JÂ/ðyÊ»>ǯdég""ºtêD‘T1YÒ¾];‘H¥>\PöòeAAOoyJOoïµÃÍÍÌE"ÑŠ5kGûû99:ÚÙØØÍ³a3Ì ™ Ãäææ>‘|òôY‰Dn®®.^bÃ…sç/ôêéóôÙ³‚‚g''ù£ ÜÝ/[AÓ4‡£¤ß¥ÿae¿º¹ºÌš¬j‹4óö¡ WgU{§f/B¡ºCy¸Àç Tõ.ðù‚J† IOŸ&>IJ|’têìYybÔ¹˜Ù3¦W¾~99¹` ¯/OiРAII ŸÏÛ»cÛÎ=ûfΙK’¤«‹ó¬àiì5ú¸¸=ûܽwO,7kÚTKS“]ÑÛ³{ØÒeEEEi/_¦¦¥õíÕ377F¯°Ñââbmmíò•Ù°f•¾ž>ˇ=ªÚ"KKKåS$úªö!„ª;”… |@ ¡²wAÀÓ¨T¸p&"R lÛ´‘Ëyû„Eü½{7o¹§³  @U!†† /?߬I6%7/O hkkÛÙÚnZ¿¶´´4.þîö»ƒ‚Ïþýgn^^À” >½{­Z¶T¬« W¯_Ž9];{qåÚõ¤gϬ[´°²´dýX±d±qãÆe7* •VÆÎÖV"È©Ùbe(Ý‹OúIB¡ê¦¤ËÏãñx<Ž <¯’cÎFFuêØÑÉѱ][öoøÐ¡|>?"*ŠÃá@~þÛ»ûjFšš˜ˆuu#Þ= g##ílm%$x÷î+‘H›«ËH¿áé%%%Ï_¼(•JGûû±gnˆû‡ý ££ãêì|þâÅès1}z÷b ׋_½–×0!11"*JU¨¤”š-VHÕ^|Ž_!„úhJ΋aTNVÈ0´@ „ŠÜð %55ðû‰e55E\]¢Ï_øvÜX.—»bõÚ‘~#âïÞMxüXž‡½â¿tùй¹™“£#Ç7æ›ð-[9\n›ÖvçÎ_¸·{ÛVs3s©T:`¿~EÉÞýûìíE"‘•……H$Z¶jõð¡C(оríÚí;±çãíííÙ}ÙªÕ$Iöòé<ï»oǯ^·!33ËÎÖæQÂã½~\0÷‡*µ š-–¿£¡°wªö¢†„BH=%½ F†Ó³^’$Y~I’éY/ WXH>ŸßÙ£“Bºg·nÏž? —™•¶(=#3l~¨<ƒ½“£ãòÕkfÌ~ûHáØÑ£¿Ÿ}.æ‡ù Ÿ$­^¾ÌÙ©½¦¦hãÚ5¡a‹Â·l±³µ]»jèéé…¯[SR\¶xãæ-&ÆÆ¿9dÖ¤IÌ…‹Ð­kŠ¢œÚ;642b å7bJÀ¤3‘sBDÇœ2°¿*µ ú-*PØ;U{BÕ)ÄúõëÆŒ ‘1‘#†Ž’”ef§¼Ê/?GAzºúŒŒU „D!„Ðãèñ£=º÷¥7#44x¦Ææ¦Ææµ]I„BÕ øk„BUÄBUÄBUÄBUÄBUÄBUÄBUàƒyŽ?ZÛõA!„Pó>\`§mB!„R€7#B!T B!T B!T B!TO/!„P-¢i:%-%;7»´´´¶ëR‡£FfMÌ8„â…1¶˜RjZ 0\@¡ú.%-…Çãuó覡ÿ¤¿G’ä£ÄG)©)MÍš*,ÂSJM‹† !TßeeguïÒa¼V.‹ÃáX7·¾vóZùEØbJ©i1Àp!„ê;’"9ŽT*­íŠÔ-EBé"l1¥Ô´`¸€B_†aj» u Aê3`‹)Pßb. „PýFÃ0xòSBE“`‹©¤ºI0\@¡z¯ÆN~Ç/<ÜñG,IÓÀ0  0àådµ`lçÚn%†PuÅ\Õc&1)!7/[éR#ÆV-+ìϨûÔ´† !T¿Õص2IÑ[NÜ^2ÁSK( ‚¤fàU1¹bß™ùcw¸ô2ߢ±‡CÐ4 b-áÅød)M”’PJžmÍ¦ŽŽ`;@>±Å†Iz–( m¬m%’"’”)dÐÐа±¶ûïñƒ'O[Y´¨×ƒªœÕ!„ê;x×»^í.Æ¿XwŠ Þ C3 £AJ22Š‘‘Ì©Œóîì«àN\\Hèü¾ƒ‡vïÙ{ðp¿¥+W={þ¼l†·nyxzgeg—Mܼm{oŸ³‘QŸ^yPzö«|‹Ñ4ýôùûX!içÎÓ†§ôÈÿN>Ù¾C")²ii'ð“ž=¦iZUiEýþ×_ßLöîÓ¯÷ÀA“¦Å\¸ø™~8o›:+[}6U-Ø»€BõÝgê]`Øw*>æŸço¤[8À0 ÍIEI …¯AÙS{üøÓá#Ý:Lþ~¢X,ÎÈÈ8ñí÷óBfwëÒY^ówÛz»úžýŽø}ÎÌ={x³ŸP†ù´Þ†až'?åóùl¬ðt÷ž¤E‹»XXð9Š$Ù?IiéƒE‹a¬&MjeÝúÁÿ&&=jni­´aÁâ%·îÄ!³kÖ Ê„.\ºôÓá#!3¦÷ïÛ‡­AƒX»1|Åê5Íš657—¯%?s>úËÁ#?Ï êÝÓ‡¢¨Oß UmRÉ{þ"‰/àÛ¶j-‘=Û³÷ÉÂ0'>AÐżëBp¹­¸ÜG‹0–ßogÓ:þÞ?ÿ%Ü·±n­PZdô¹«×oìÞ¾µeóæ4Mѳ‡÷šõvîÝ×Ó§‡Ž¶v5þ|ªš¢Â IÍR B¨~«öÞ…—9¯çìº`ÓÜÌËÅZÀã@÷i‡äKƒ7ü\.áíÜbÎèî9…EPî4³ÿ§ƒ]<<úôê©0RP`@lÜ?‡þòì™òD¶ò¿ýñçî}û§ôïÓ‡$ÉjÙUÍRÉËÉËöêÖS")z¶oßãù Úéèð(’doRÐlÄAÓ<‚°H [LQ´Å÷Ú´v8ñDZV-íJûåøo={x[6k&“½ý0ÂwXzFæÓgÏZµlyàà¡ —/çææ‰DÂVÖÖßkeiyëÎyó=|pÅêµýgbl2mJ`›Öoc‘?ÿ>ùëo'rrs›˜šŒòó“wÛüuêÔ¯ÇOdç䘛57ztG·lŸ‡ ª2`¸€Bõ[õ† q3–¼ÖÓ£eãÄô"‡fâ­s|58 Á%ø\𸠎HÀÓÖäSÍáe·ž™•õ"9%`Â¥g}o¯c'~—_ì²ÿ=yæÌ–í;&|;~ÈÀÕ+TK‹¤ìßiÓÛò‚"I¶Âo㊢iš¡i>ÃXd¼Pã1£u´u¥2™BáÙ99IOŸNüv¼Â–F ®]¹œ¢¨m;wýñ÷É1£FZYZùå×ÐÇd‡Y,^¾ÂÝÍ­_ŸÞ»öî[²|寇ÀŸÜ¼m»ïÐ!mZÛ]»~sÉŠ•zbq[‡6ü}rÛÎ]~Ã}[6o~åÚõù‹/[ÆåpáÓ¸Åp!„ê9¢Úæ]8váÑñ‹}{wÒÖ=yYÄ×€‡É…| ‚Çž4—p§æ 4¸DbJ¶©‘{ö•’™•¦¦¦J«ÔÔܬ°°°¸¸D$²¢¢Ïíûé ;+sõÆ *Û¤Ò-ön|'ÃcŠ$Ù!òQl¸ÀÒ`†aHŠ¢hZV.\ÈÈÌ##C…t†aØ©L0ñ»Aýû³÷)tuuæ.ËÏÏg‡tìÐÁ¸/;XrÙªÕ……ÚZZ?:Ap8ìKša(8CÀ¡ØnmBƒË)•‘">·üÖišRS%Š"åuÞûãO!3g<{þüà‘Ÿ][4·ª®–Q9v¡Ò-Æ0 M3@Q{"ù#òHá]»_4EɤRŸ\®ªO™Ì†ùùù)©ig"¢€~WG§öì- ]]¶2Ïž¿((,ìÖ¥³üÖÆú5«H’|þâEaá+ûÖ¯^½fÓ]ÖlØÈŽÁp!„¾^TO¸ %)`€QŒ”¢5(#¥ %$Œ‡ñ!ò8ì†f€B/#÷µy#qÙ­744€ÉÉÆ—ßÊ‹ämmm---ù*A“½»w#)êÚõ«×oؾ¡ºÞ+­òɈJ·ÃÐME’o. ù#˜ï;(нË@RI‘åoFÀË—éåÛdçÞ}M›6nÔèȯ¿>üï?]]³&M´´4ßÕŸmmí·7nè··o^½±®®|C\GC x]T“¦NSØJIɨd¸€OF „Љ ªçɈ…ßt×ÁŹì-ü.Îì=ˆ9³fLž6ýÀ¡Ãߎù¦ZZ†aU³:V¦ÅH’¤iš")ösÙé‘åႼáí’$E’åoF442273»xùŠc»¶eÓSÓÒŽŸø}ÈÀá[·õðô\¼`¾Ž¶6Ã07oݾxùм…Ú2 Ó@ßòó 5lÈ&¾LOõêuX0÷‡F–ÝP~~>T2\P1ËNÓ„Bõ¡b–¤à×½Õ´!íNœ½œžÛª‰—Cx:4îbßÈݶ‘k«†í[4t°jhŲ̂¹™añò^RÆÊC—D|nßVe ¡izìèQW®]ÿóä)…ôm;wgdfŽ1\žE±Ÿ[XY :äØo'%$T×}J‹I¥2š¦IŠ$¢D&£HEÉŽU @ @E‘2’”Ie EÑ4=l𠈨¨›·ï”MÜÿÓA‡cia!•J‡ÈÓÐ())yóæÍ?wؿ?o¿6nÜHWGçâåËò%ëÂ7ÿýF Šuu Z6oÎþ=z”}ŽËå~PN[ °w!„¾êÿ¡¯gëÆë&u Ý{%¯ ™{»4³ÖWÈC ¯#4i 3¨S 7;“ò·¼ÝÝܾé¿uÇÎ[·ïx¸w‹u3³²£ÏÅ<{ñ"tÎlSöË|8EQߌyõú5·†oàóxŸ¯Y*Ób2™T&“aµbéóEKÍJK*V—¤…&sfn©´´|ïôìá}íÆÍ‹—tñèÔÚÖ¶¸¤äúÍ›ÿ=Jøf¤W¡P¸aÓ–>½zÒ4};6öÞ¿÷àî¿÷µµµ@>Ͷü¿AŒò÷Û¾k7`ÛªUÜ?ÿÜðpíŠågôHÿm»vgfe·laõäé³_ÿ6}ê”w+V0]·šfÁp!„ê·jŸwÁÔP{ë4¯¥oüS8ȳ=œZ¡rÚA¥Û%Iò›‘þmìí8±gÿâ’±X×±m»¹!³LŒåS0)„ ¬93gLž¾ÿ§ƒÆ«Ýk``x;öf;ÇF~~E'/]fVò†_.+Í 6:X$¿pÎʪyùÂI’\¼ ôïÓgÎDD^¿q¢Y³¹³guïÚ…$Éå‹ÃvîÙ»nc¸®X×ÇË;(0àû©A×oÜôòì^¶‰˜2} ƒú÷£(ê¿þ>yúLSӰйö­í(Šد/I’üõ÷‰?ÿ416ž4¥‡§ç­;±ðia%±~ýº1cÆ~¦Ÿ!„Ðçöà¿Ö-¬ËNþS-h†Ùæþ„ìôì‚?÷g¯h€ ‡S™)q¹\Çff†¢(™LVvÔ—Ë …ÅÅÅeÏaG$Éd2…)ž>‚@ ¸wÿ^Û6m?®Å†yøß¿C·oçôêUaú‘ŸÓ—¯4{ó6b`k,H O51\KSëò•K¾°KçnªÚ‡ÇãihhÈŸ°Édì¸ .—ËçóÙt’$e2™P(¤iš$ɲM¤ÐbòÒÊ%Oçp84M³éJ›ºò-Ø»€B_€²£í>½¨·7æ)jPÓFºÜ½¯rrrإ칟ûކ†{ZRU”úS²Ò 4M¿~ýººöå[¬•µÝ½ûñ×®_uvr6ôJÑÔÓEKÙ  ‡Ó (ÐÀwˆ@ 8!F(ytê¢æ"¾´´´´´´2M!‘HØeÓ²©*­|z…¿E…-†áBÕoÕx3‚½®•ÿ—$I[aP«üü|š¦9ކ†ÛgÀ ì>Ÿÿv$]£ªYªÔbövÿÄÇ^¾rÉÕ¥Cƒ¡ƒuú÷e˜Þ9ÉåjhðøçÏÇ¢.»@5Þª#-. „P}W]ó.ñ!àp8fFšò×Dq8¶/Až‡Ëår8œºy‚TùdDUZŒ$I+Ëñ÷b/^¾àÖ¡£@ ¤išfh†f†¦(Š$ÉsÑç44x.N®$IVפuªÅĪïªkÞ¶(>ŸÏãñ;Ú@Žaö‡Ãa?°ÑÔá‹iU]ë•o±âââ’’’’’’FF&Ÿ<úùç#ììäÏ ÍP4ÅÐŒ‘¡‘];ûÂÂB©T*‰455k{׫¹ÅĪïª1\c〠o1ÔÙ@A}õ*ßb"‘ˆÿŽƒ};™LÆÞ¦aO«ìÝÇX"‘H$©™é¹îÃÞ„úrUß+¦¾0*¯•«ÒbGKKKKK«’­×?ö. „З Ã¥Ô´ ¶˜RØ»€B_,‡#ß`m×¥!BFÊø¼òó*a‹)§¦ÅĪïôÄz9y9úb}Uó|¢ Ï©ÕrÒ-[Hu Û|UôªaÆåa‹)¥¦ÅĪïŒ3 “‘•!ŸÔï#”Ÿ…°lJeæp¬j9•)“`_H”ù\fÙÙ”¦'Ö316)?=¶XU[ 0\@¡úŽ$É&¦Mš5mVùST…>k/}Ý (JéLÒØbª¨j1Àp!„¾R©ôÓß°ðUÁ«ªÏrÛ!„B_ B!T B!T B!T B!Tÿ^êÙ“f¸a”%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/gotoend.png0000644000000000000000000000013213135434036017073 xustar0030 mtime=1500919838.116648472 30 atime=1500919915.036648472 30 ctime=1500919913.339981805 denemo-2.2.0/docs/images/gotoend.png0000644000175000017500000000217613135434036020752 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR&"r[ŠgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<PLTEïëçèäà³ZÈšmëçã¿bÙÕÑÐeæ“GÅ—j×lÑÎÊÕhø¾‰ç“BÇ™jØnÞmú¼ƒøº~ç’<Úp¶XÑ`ÒaÒbÓdÔeÕgítúº}ú¸x÷¶tç‘7ÉšjÛrù²yù´|ù¶~ú¸€ú¹€úº€ú¹~ú¹|ú¸yú¸vù¶rúµn÷³iç1Ê›jÜuù®rù±uù³wù´xúµxú¶xú¶wú¶uùµrúµoú´kú³gù±b÷®]è,Ë›kÍÊÆàzÝwù«kù­nù¯où°pù²pù³où³nú³kú³hù¬Yø¤Føœ6÷—(ô‘ဠÈ\ç€Þyø§dø©fø«gù­iù®iù°iù­aù¡Hø–0÷Œö„öƒ÷„÷†ó…á}¾„Oèß{ø£\ø¥^ù§_ù©`ø¡O÷“1ö…ö~ö€ö÷…ô†å¯{H ž›ã€á~ÓcøŸTø¢VøžM÷Ž-õ~ õzö}ö÷‡ô‡æ€¬xF³°­»·´áº\ÔfÖiØmÙoÚrâwð€æâガ©¦•“Ž‹‰ã{ãƒäƒä…Úwå~¬wFå†å‡Åm«wFØ}Ø~·´±ÜÙÕàÜÙÿÿÿ¢ƒbKGD«Ég( pHYs  :èÝ™ÞCIDAT8Ëc`ƒ021³@¬¬Œ¸•±±sp‚Õ±qq±áVÆÍÃËÇRÇ- ÀG™ °H·¨(¦2F1q I)iAY9yE%neeLelâ*ªjêšZÚ:ºzú†F,ÜÆÆ˜Ê¸ÅMLÍÌ-,­¬mlíìœ]\ݰ(“p÷ðôòööñõó  À¢L22*:&6.>!1)9%5-=#3+›²œÜ¼ü‚¢â’Ò”²´òŠÊªê,Êjëꛚ[ZªÚÚ;:»º{z°(ëíãéçš0qÒä)©iíS;»Ø\¦MÇ 3fBÀ¬Ùiå@³ØX¸çÌżlÜÐí–^RÅÀ=o¾Èš¿`!H÷¢Åø”-Y VÅÀ½l9el]+Ø iÆ < ‰qå*h²dcÓ,‡)+`N~#mòtEXtCommentCreated with GIMPW%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/ObjectInspector.png0000644000000000000000000000013213135434036020531 xustar0030 mtime=1500919838.099981806 30 atime=1500919915.036648472 30 ctime=1500919913.353315139 denemo-2.2.0/docs/images/ObjectInspector.png0000644000175000017500000024412613135434036022413 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRf€¹S#BsBITÛáOàtEXtSoftwaregnome-screenshotï¿> IDATxœìÝw|SÕðó2šŽtÑ= ŒNZÊF†ì¥"(K@öÈÞC† ‚lPä§²DöRf¡:Ø”îÒ½w›´ÙÉ»¿?ʦék)´àù~üü~ÉË}÷œ{Irúf )1B!Tó„úÍ!„jàxÚGÉÏb ++¸\.‡Ã!„¨5Z£áp¹<.—BÓ´¶½››#ó :&öã¡#_oÚ!„ÞfgÏœðoYßYèãé=§iZ"•5²³mÒÄ£¼¼<&:º¨¸ØÆÆ¦qãÆæ¦fR©D£VEQÚU>:23#åµfBè­Ö¸IóxÜP¿dj4šâ¢B‰¤ÂÍ­qvvöÍ›79efnžššêëë' UJ…ÀÄ„Çû׊™¯1g„Þ]ßíaw‚kñ*B¨~ÝìÝ»'‡ÃÑ.Ñ/™<¯I“&fjµJ"‘š™™µ ldgWZZZQQN€H**8åä註Vã&M^Gúè-Ò¸Is (J ØÚÚøøø|üñ¡¤ûî|#dgçlÙº-$äVII‰]ÝÌŸëêê¢ÛÆø¤Öfìã©¶ÁkÖÐòAÿžÞþÆܜݱsÏŽ»G޶~Ýæ{)//_¿dVTTEqy|™\®V«ML\.W©TÊd2•REÓtjzºF£iÖÌ]»ne¢Ú ½}S*•ffexïÐïžD>]´xÙ̯g>ø+?qrÛö]ŸŒ±{×¶ý¿üoÕªµe%¥#G¯œÿ7À×Û[;?¸y3Xwh'NœÜ²yÅálØøý¢ÅKE"Ñ ÞÓ›#™Ÿ8yúÇm;:uêxð÷à×_ïþn×°;Áº‡B|u_28i_~õuNNΦ ë;uê¿gï¾æÍšV›|$\íTGDDüö¿_„B ü’A/ã»õk´5Mqq1S>óòó¿Yµ¶r{‡³~Ýx±•ùøI$³œJJŒñôö'„0™<~&¹¹EjjJJJŠ·—‡Ã)++suu•+’èèhkk«©“Ç1]xzûãÁ TS•kÉd2o>ŸŸ’œ}ú x–”tûÖͦM=Äb±@//¯AW´ëÞ¿æìì¬V«›5÷æp8éiIlÖzp?ÜÉÉI¡Pxzùi;¡iÚ£©§¶“Þ½û'%'ß»æâ✓“ûNçnž-Zܼy­ò(š5÷R«5ÉIñ&&&Ì¥RÙÂÓ—Ç㥦$jƒß¼Þ¢EsHNNéÕ»Ÿ÷õk—õ&ÁHæ]»õÌÌ̼y㪧§§ñ942ÉF&- U[©TzöÌI__í@ªM¾N62ÕLã‡"ÿ}æú¨Ã3f=½ýteäÕœœÜ‡Ž,)-ež6²µÕßÊ473#h r¹L.—+Ф¤¤Ç<ØÄÄD"•J¤’ŠŠrk+ݵð@T;ºïœÔÔ4°··c¦¥§@÷½u¤ê¶W)•Ú§4M³\K©PTÛIfVÈeÒÌŒ •JYÙÙßäÖVÖÅ%%QO£˜%…`mm­Ûžòü)¡ ==C÷Õj3ÏÉɪŠZŽeïçÓ§îܹgЇq8oo¯_~Þ¾}»j“¯“„«j…\Ž_/¨^Ü¿ÿ`欹Úz %¥¥ú%S¥VB4š¢Tª@NNŽ…PØÈÖV¥RËåò¢ÂBB³ÿV e¢ÚÑ}çìÝ·FŒÎ,tvvÎÌÌd¶Šª]Wû´vké=uuuIMM353g6}ÀÝÍÍà›¼wï^'OŽOLlß¡=³$äöèÓ§·n{ó499<<šè¾Zmæ®®®™™™¤ŠZµŸ¾Ê±ôž~ýõÌÏ?ŸŸrëûÍ[Ö}·éÁýðj“¯“„«jünAõâÐá£ë¿Û¤V«€Çãµ ðgöÍVºÈ„Ë%„¨Õj…B©R«!}ûô±´²âñxe"q~~AvV–P(ÔûàŸ¨v232¤RiVVö‰S§ÿúëR§Ž†}<„y; öÑ¶í»–.[1oîl>?òiÔŸÇOnÛºYw]½®j½–ÞÓýûýôó/?ü°uÚÔÉû9~ø¾Á7ù˜ÑŸ\¿´qÃ÷&|~`«€§QÑ›6n¶µµýtôHÝöË–¯Xºx!PÔÆ›`ø°+oeÉ|Äð¡?nÛ±xÉò¥Kš™šþ~ðð×3¿kë2‘ènD„«««ñI6>Þ¥ËVŽÿ©—§§··'˜ðùl’¯“„«jünAºª½\ª¸b¤FbcãÖ~ûsY;»F»vüؾ}»å+V8yZÿXfVV>P”X\ž›Ÿ_.Ée²ÀÀ@ +++666++‹Ïåµ lÕ¦ukOOíðX&ª)íu™&&&¶¶¶^^žC‡~4|ØPÝSÏ»°ÿ—ÌÆMÇŽ¦MÜ£Gw¨tHLïiíÖÒ}ªVköîÝwâä©ÜÜ<77×±c?:eRUŒfeemÙ²-äÖíÒÒ[ÛF½zö˜7Ž»››n·[·nþå—ÿ¥¥¥»¸8O›6eÜØOk”9\¸pñçý’’’…Bá¼¹³™ÓV:²eëÅÅ%PÅÍÊÇ2 Ž÷Æà}?ýüøñ>Ÿà¿rÅ2æÌaãÉ×IÂF¦/âü3x,³v%³Ç2™‹2[ìÙ½ÃÙÙ hš^¾b•~ÉLNÎHMKKÏÈ(//×h4EY …4!%ÅÅr…BhaáíååååeiiÙ¸±³6Þ¾¡šÒh4Ý{öåóù!†N,jðæD¨u}·Wžþc¼Aå@„ƒ‡ŽŒ5R÷2qš¦õwÌòù|{{•R©vtB€¢(  IãÆB kkk¡P¨{N7 T#æúõ hÙÒ¯|xzU«¥—¢¨‰Æé-äp8ú[™µ€¿d‚B¨n½¿dR þ-àýæB¡ºõ†Ý!„ª/ú[™Ö¶Ž ÙÙÙr¹¼^B!„&ý’™˜˜(“É daaQ/ !„B “~ÉÌÌÌ4h‰‰‰R©¬—„B¡†I¿d* š¦ë%„B¨Á2pÆ,ÖK„B¨2%“¹±B!„taÉD!„XÁ’‰B±‚%!„bK&B!Ä –LÔp=xôèâ_—æÍ™eeiYß¹¼ý6þ°¥_ŸÞÚµ{É~¶íÜÕ©c‡®;×IVŒÝY4onö‰P-`ÉD WNNnPpðŒ/¦¡°~39qê´B©7fô›¢½…ܺÝÒ×—´}ÙhD„³³s—wêòk$''÷Ö; çΩÃ>ª,™¨£( ¤þß“‰II2™ì•¦Q·!jÑÛÍ«—•J¥Z­~ÉÐPEÕñ\Q@]÷‰PÍaÉD !@!„Ü ñõòV(W®]W©TíÚ´éÖµ Ð4|ëvl|<‡¢Z·jÅ,”H¥Á!·úöéeaa1 oŸ¦ÚŽ ‹Š._½VXXèââò^ÿ~¶¶¶Ú—’’“o‡ÈäroOÏýúr¹ÜÐðˆìœ¥RyñïKú÷ãóþùÔT•UUQÒÒÓcââû÷éÍüN;“gÛ6­SÓÒk"-==èfpY™ÈÝÍõý¬¬¬ rÂFÆ«u;4ÔÝÍÍÑÁ¡Ú º*O³<>!!èf°F£i×¶m·.ÿì¤5˜0Ý öóõ‰DW®]Ÿ4a¼µõ£'OÂÂ#hBºv~GûN¨æ ƒÐ+ÆõõŒ;÷¬^½º´¤2³r¼½½ë;+„ž%%‡ED|2|¸™™Ù²•«ŠKKùÃÁÁ!+'çðÇ,--}½½—}³úô¹óövv¥e¥þ¡P(ÚµmSXT4ÉÒ´ôŒ¿._±²²|øèñ±'[úùº8;@|BÂW³æäæåYYYݺ}çÄé3íÛµmÔ¨ÜY´t¹Z£áóø§Îž}ðèÑ€¾}/]¹+‘He2i÷®]y:õÌ`V~>>UEqrrZýí:‘Xܾ][ؾ{OÈí;£Gޏ|õZ-B„†‡Ï]´D$[X˜ß9{áBÏîÝ-,,þ¾|E··¤ääªÆ«ë˯g;::z{yªËàt>w¾LTvîÂEgg猌Ì#ÇŽÙX[ûx{I/_)“É·ïÞS\R2°¿óÿúnÓf•Z GÏÍË“H¤£Gލó÷B5‚[™¨á"@˜ÿ%„PrûÎñ#‡l¬­9Μ‹nß mß¶MĽ{»¶meNZùùÀÿþ¾|eÚäIÌêiéé>h)ªÕê¯çÎß½ï§_öî€ ›·´o×vãºo9ŽR¥š1kΖí;÷îØ&•J·nß1bØÐsçÐ4’š:vÒ”°ˆ»³f|U&ËdÒMë×éíí4˜ÕÐ!ƒ !£ìÛ¹}å²%s.îñn7‰DzõzЯ?ïãr¹µ¡R©vîÙ׫GõkV@yEŤiÓüöûÒ… t{“J¥UWº)ŠÃy¾ó³ª ºÍ«š.HNI9~ø••‡Ã™5oÁíа!2’0ýZPÐþ=»Zúù¥§güzðШÃçÏ™MÓtZzú„©Ÿ™™™áWªw~bš ÔPüó†€}ûš R©´¢¢ÂÓ³…\¡àr¸ðàᣲ²2‰D2uÒÄ §OjÛõ —ÑH$J¥rê䉩iéÉ)©IÉÉ™™“&Œ—Éd‰D­R3:!1Q,ßøP"•ŽÿtLyy¹D"quqY¹t‰“£ƒL&#„&„H$š¦õò«œ!¤ª("‘¨M`àmÚòãÛ·OŸ:ÅÝÍR‹±ññù“'Œ“H$‰„ËáŒ6ôÖP½Þž%%U5ÞÊsÍ66TWUÓûõçóù̺-š7—+äÆ~±?&MÄbqXDMÓS'ObzvvrЯ/~5¡†ÀÀV&B “½½ö7M€»»Û”‰~;tøØ‰“-}}ßéØá½„/~êµ±»yq ¬±»;¨ÕXýízçùß‹ÌïÜ•–‰òòó…B¡P(d¢h4šþ}ûh4FS£¬ 7/¿ª(–––3¿ø|ø˜O­­¬G¡bñ+{CRåìäô|9!ÝÝ EIii#C•Æ3©iP]UM³.y±EH @±IØÁÞžY=¿ ÀÙɉÇå2h4š¦·Cê(„^5Ü1‹:æ;¨|¦F£™2q˜QŸÜ {ððÑácÇΜ¿ðóîL3…B¡m/—Ë€Ëå1 fÍøÊÂÜüy/p(Ž“£ƒ™™9ýï©P(ô2©œ^å¬!ÌY0£B"îÝ“Ieåå=ðoY»€¢P(Áól• fNtÊU5™TŽ¥]h0¨îSãÓUë„ÀÌÌL¡Têþ¤Ó3~5¡zg`Ç,BoŠÄgÏöÿïW ¤oï^Ë—,:°oo^~~tl,ójTtŒ¶eTt44vwóhÒ¸\ŽŸ¯óŸJ¥ în®R™,33K»Ö¥˟¸º¸2¯Ÿ>{.:&–’ž‘±ÿ×ß:¶oïêââîæ°kïO¹yy*•*++{ãæ-yùù4M·mÝÚÝÍmçÞ}‰„r-èÆãÈÈVäÅîAÊŠb$Ê–í;ÝÝÝ>þhȌϧ+Š¿ý®]µF!š5màßrßþEÅÅ„¨è˜³ç/ ôs(TÛ›‘L*ǃêªjºô¿F^<«6aíZ];¿Ó¨‘í–m;Db1MÓׂnܽ¿šPC€;fQÃ¥ûM­}øâ5@Z·jõÑà·îØyà·ß@"•~9ý³ÆînÙ99зwïK—™ššVTT¸¸8/˜;‡¹NõÊås.7yª­­mII‰K¿y³¾&„h4šo–/]´tùð1c…B ±HŸççëk)Êd²¼üü S?;°o““ÓÓ¨(¡Ð²më@¥RÉxãp8æææO££‹ŠŠÝÝÜ|}¼ËËË™¯cÇår=‰T*•¾>Þlme2ðùüÇ‘‘*•ºu«íy4PUVUE111177‹ÅL&|>ßÒÒR,«ÕêZ„àr¹SÓÈȧ%¥¥M¼Z´¨¨¨`¢ÛÇ«j¼º!EUT—ÁéÒ[×ÜÜœÇãU›°ÞZ|>Ÿ&äÑã'4M·oÛF ‚²²²Z½ª3Jæ€ê;+„j€Ëå2'¹¨Õj朑¼ü‚‰Ó>Û³c›W‹<ÙÄÑ+|>Ÿ¢(š¦õnGQÇ£(JÛƒ¹_’Å ®l¢T‹L¶G£Ñè…Ðë­ÚL8©´uÈ2ÊÓU‹„+·äóù R©pû5¸c½ñÔjµþ—ï‹#hF.©ª2B ¾T»ótjTÿj¢ªl+÷Vm&Ư¥©E/ÙžRës£zEðŒYô²²²üâ³iövvõBè­‚[™è-dff6æ“‘r¹œÍ®B„b K&z B$I}gzÛàŽY„BˆÜÊD!„XÁ’‰B±‚;fB!Vô·2MMMårùËß²!„zËè—L„„ooo¬š!„.ý’óäÉíÍB!•K¦B¡ ìСƒî¡B!dàŒY©T*•J_*!„PC†›’!„+X2B!V°d"„B¬`ÉD!„XÁ’‰B±‚%!„bEÿ"𦲳³ñV!„.ý’™˜˜(“É daaQ/ !„B “~ÉÌÌÌ4h‰‰‰R©¬—„B¡†ÉÀ óLLLhš®—lB¡ËÀ ó°^"„B•(™„ןB!ÔÀaÉD!„XÁ’‰B±‚%!„bK&B!Ä –Lô6¸rëöžS”­­Ÿ¯O¿Þ½9œº¿+ä¶»:uìеsç—ìçYRÒ¹ %)Á·nýôËÿ&MÿågÓ!„‡“ž‘ñÕ¬9+V¯Ù³}›¶¥Á(çOžP«Õ*•ªvÑuÇ¢‹ÊÌÜ\wjµZ­V舢žÏÃÍ«—•J%Ó¬ªþzÓaÉDo™L¦û´cûv›—×:°Õåk×Z¶twsc^ŠŠŽ‘Ëå;´€!!¾^Þ ¥âʵë*•ª]›6ݺvÑë94<";'G©T^üûÒ€þý˜…ñ A7ƒ5M»¶m»uùgiaQÑå«× ]\\ÞëßÏÖÖV¯7BÈÏ~mß¶íçS§èæììäôͲ¥³æ/¹}ÇÇË ¡ƒnGFEY˜›÷íÝ«EóæLË‹—.5mâѼYÓj#&%'ß‘ÉåÞžžúõår¹zcaökS«iÂxkk#qj æ!½i ¾u32³Àã !dÛÎÝѱ±Ú—._»vâÌæñÏ¿üïèñãKW®’H¥é™™ËW¯9uöœ^WQÑÑù…EÅ%¡ááj• Â""V®ùV®P¤¦¥/_µúìù L˸øøIÓ¦_ ’ÊdgÏ_˜8mzâ³gz½%§¤dçä ýhˆ\.×]®ÑhÚ¶iíææz',œ€í»÷ìþé§²2ÑÍ[Ÿ}534,\›óý‡«t3xúW3Ÿ<}*‰wìÙ;oñF£7–j§Q×ÇOÌ[´$2*:¿ `åšoÏ]¼¨m¿fÝw÷îWž«;aaS¿øêNX¸D*9~êô¤éŸçåç3«ìÛÿËé³çg/Xqï¾êß™ Ô0áV&zKЄ3 MòòóÏœ¿0jÄð–¾¾†¢€Cq´ïm‡£}JQTÈí;Dz±¶æp8s,º}'tèÁºÏšñU™H,“I7­_Çl„%§¤?|ÈÊÊŠÃáÌš·àvhØB6lÞÒ¾]Ûë¾åp8J•jƬ9[¶ïÜ»c›noYÙ9мYÓÊŸ5•Jåãå•‘™Á¼TV&:~ø………Z­þzîü]û~êØ¡=Ç£(ŠÃá0Ÿáª"J¥Ò­ÛwŒ6tÁÜ94M§¤¦Ž4%,â®ÞXts 2©tã[ô²9|Xó¦M‹Š‹=xhÔˆáóç̦i:-=}ÂÔÏÌÌÌž÷@QEÑí_,ïܳ¯Wë׬€òŠŠIÓ¦øí÷¥ 0«\ Ú¿gWK??‰D‚·êD –Lô6 „¨ÕêM?lÕ.Q©TŽŽƒÞ_÷ Ü¿ßÛDût@ß¾¦T*OÏ÷<ÔûÈd2BhBˆD"a– ìןÏç3«´hÞ<2ê)!$)99#3sõÊåLY¥(jì˜ÑKV¬‹Å–––ÚÞ”*%ðx<ƒŸ5@ “É™—>=Š¢(‰DBQÔÔÉgΙ—”’Âì³eò7ñqd¤D*ÿé˜òòrpuqY¹t‰“£Cå±ük& í˜%4!„DܽGÓôÔÉ“˜œôë{;4Œü³y „Ýþcââò ¶lÚÀÄâr8#‡ Ý»ÿ—% æ?Ÿùþý<š4‹Å•3A¨2P2z™ðùa!7µO‹Š‹/_±pÙ²#¿þ¯Ú3fííí´›8„Ý¶Ž½½N© (ÈÍË€Õß®×^ÙÂüˆ^i™H·d6²µ€¢¢b»F*÷\TTlkkÉDB¹tãqdd«€½±èQ¥RÝ ×ûïqd$!¤kçw5²Ý²m‡H,¦iúZл÷ïƒîæ{¥¹jÖ´i€Ë}ûB¢¢cΞ¿0dÐÌ„àzãàŽYô6 :j¹ººRuæÜy?¿IãÆmÚ²õÓ‰“y<ž•¥å'#†§¦¥é´'ÿ<&ä_O_pvr:|ãæô3·mþþÅú;fÕjõê•Ëç.\Ÿ`ßžï6ÿ°ö» Eñù|¥Rikc³zÅò>½z2û`àÓQ£æ,XdaaQQQѤqã93gü³­Lˆñˆæ›åK-]>|ÌX¡ÐB,O™4Ñ¿¥ŸZ­Ö‹™™Ù?CJ¥«×éËlѼùÞÛ(ŠZ¹tÉòU«GŒkffÆáp¦MžôçÉ“DûgÆ‹Ýþ—.Z8Ñ’1&YYY‰D¢Î:M4Qw¶ñ ½A¨¤ÄOoBHò³X 0pàÀúÎ ¡š133355---Õ]HQ”­­­R©¬¨¨%¥¥ñ –––m€Ëå2g~ÚØØÈårm•233ãóù•Ïáäóù##U*uëV5Ò]ÅÜÜœÇã1«p8ssó§ÑÑEEÅînn¾>Þååå«Ó²´´,>1A.W8;91»U™„\.×ÚÚZ&“•”–ÆÄÆZ[Y·l%—Ë™C‰§M:dðÇCÈãñ¸\î£'‘J¥Ò×Ç»‘­-s6¬îXtïÁknnnjjZ9UµZÍŒŽÏçÓ„ŸOQMÓ†ï3§ƒÃáðx<¨ª1Ó@7mBÈèñÇŽ5äÃAÕF¤(йŽS­Vëž¹Ã~,z˜mb`n> ›'ÑÙdÔíŸÉÃáh4šj'¡† wÌ¢ÿŠ*o”ÊšÞ§F°/EÕ^õ¡× )9yçÞ}e"‘·îGµªˆ„ƒ/±Kå ®«7 Ý6Uå€ÐϘEèMbcc3°ÿÿý´×ßϯ¾sAè?·2z“8:8 ûhˆJ¥Âí6„^?,™½I^~÷2B¨ÖpÇ,B!Ä ne"„B¬`ÉD!„XÁ³!„+ú[™¦¦¦r¹\ï.Ò!„Ò/™ ÞÞÞX5B!]ú%3 &&æÉ“'xãG„BH—~ÉT(:tнY3B!„ œ1+•J¥RéëO!„jÈpS!„bK&B!Ä –L„Bˆ,™!„+X2B!V°d"„B¬è_dBÓtBBBvv6ÞÊ!„Ò¥_2e2Ù Aƒ,,,ê%!„B¨aÒ/™™™™ƒ 211Q*•õ’B!Ô0¸až‰‰ MÓõ’ B!Ô`¸aÖK„B¨2%“òúó@!„8,™!„+X2B!V°d"„B¬`ÉD!„XÁ’‰ÞH1±qçÿú+)9…¢ÀÝÍ}èÁ­[ÕoJMIIÕ>553õõö~oàS ¾RR©TMIM]4o®µµu­û1>Û?ü¸ýÝn]:wêT)#Ô aÉDož£ß·ÿ—Ö­ZõêÑ]©TÞ{ð`æÜy_ùÅÈáÃê*ĉS§Jå¸1£Ù¯ò$22)%õŽ€Ð$+;ûïËWþº|eßÎíޱ›9ëÆªE\#N=wôÏãcGâñùµþ\W;Û·ÃB=<š¼Ó¿7ÐÛK&zÃÄ'$þ|à_|6mÊÄ †¢¨_|¾aó{~Þß½[7''Ç:‰’˜”$“ÉjöY ¨fM=Ö¬\ñâuõzЊÕkÂïÞíÚ¹3ËXµ‰[µœœœVþþÓ§NQ©Tµë“ÝlSEá÷ú/À’‰Þ0¿>ìæê:nÌh©Tª]8mò¤+×®‡ß½ûÑàƒnûùúˆD¢+×®Oš0ÞÆÚº°¨èòÕk………...ïõïgkk«]1&6.âÞ=‘Hdgg×§W¯Æîn‘“£T*/þ}i@ÿ~|ÏHÿB@&“iŸµkÓŠŠŠ !—¯] hÙÒÝÍy)*:F.—wìÐ^7–Ph¡7-==èfpY™ÈÝÍõý¬¬¬˜Õo„„øzy+”Š+×®«TªvmÚtëÚE/—û¦ed”–•>{®O¯žfffUõVyÆØÏö?Cñ½Q»œÙÎ0BõÊÀþ"‚PC%“É>|ôáï3›MZæff!×®Œ6”²oÿ/§ÏžŸ½`QĽû*•*.>~Ò´éׂ‚¤2ÙÙó&N›žøì³Ö…¿þž1gnTLŒR¥º2åó/Ÿ%B¢¢£ó ‹ŠKBÃÃÕF{ÐDÿãq—¢¨Vþ„m;wGÇÆj_º|íÚ‰3gôb=~òT7î°°©_|u',\"•?uzÒôÏóòó™ÕþåG_ºr•D*MÏÌ\¾zÍ©³çôò‰‰‹ËÍÍ++- —+FzÓ›±Í6!DwԵ˙å #Tïp+½Iò ”*•³““Þ»”"‹Ÿ?¡¨kAAû÷ìjéçWQQ1ñÒöíÚn\÷-‡ÃQªT3fÍÙ²}çÞÛàÔÙsC?²dÁ|š¦ !ÃF ‹ˆðlÑ|ÖŒ¯ÊDb™Lºiý:©Tºaó–ªzГšž¾~Ó÷L>…Eqññ+–,nÖ´©F£¡(àPmÚ‡yª‹²fýæ±X,Þ¹g_¯=Ö¯Y哦M?ðÛïK.Š¢Bnß9~äµ5‡Ã™³`Ñí;¡C‡ ÖMæ³)“Ååå™YY[¿ßd¼7Ý“H$Ú[f²ší–•JU‹œ !ìg¡ú…[™èM"—+ÀR(4ÒôïçѤ‰X,N|ö,#3sÒ„ñ2™L"‘¨Uª±cF'$&ŠÅbBÈO»vÌúêËŠŠ ©TZRRBQ”B¡ „Èd2BhBˆD"y–”d¤‡Ç%„¦5F£¡iÚÚÊÊR(yú´Wîz/-Y±Ò××gí‹V™·1—Ë€Y3¾²07ÞŽÅqrtH$ŸÍøšÇåŽ>ì“Ãý||fÍ_ÿ~ÿBŒôPù“B‘H$Ú§E½ÛµëßW®~ÌK*•ªr,ÝÇ€¢P(/.ëT(Àl2“JûK N›Þ ®^“Ù®}Î5ša„ê—±ËÅjh! p-èFvN®îòû–”–vë¢-‡G“ÆÀårü|}˜ÿT*Uhx¸@ ˆ‰‹+,,üq󦑯úûùB**$P‰‘Ød›‘™åè`Ï<ÕÝŒKIM3¾.sînl|¼vILlœ¹¹¹ƒ½}µq몷šÎví¢¼Ì #ôšá±Lô†7f´]£F‹–-¿{ÿF£Q©T÷<زm‡«‹Kÿ¾}É¿º»¹ìÚûSn^žJ¥ÊÊÊÞ¸yK^~>MÓÌ¥©iir¹\©Tž¹Ì–#›ÞªúàW;ÛÏW'¤Ö9×`†ªo¸c½yvmÛºö» ËW­ær¹„š¦}½½¿]ý ¥}÷Â!ÁÒÒ²M` p¹ÜòòrÐ%´ù|¾ÀÔ42òiIi©‡G¯-***˜¸zc433ãóù•.ü ‡ÃDár¹,{«Ñlë­Î>ŠnÎFþjP ”ÌÔwVUËå2gŽ0×uoÌçó)Š¢iZ­Vë.çñx‡é¢(>Ÿ¯íÍÄÄ^œ½i¤‡š&LaÎýÑ¥K÷1EQÚ kWëezc?ÛµŽòò3ŒÐ«†;fÑ›J­V³ÿnÕV>=ºÕ‹Âl2té=# W—òòqë¤7ö³]ë(u8R„^iü8+KËà[·ãâã)§u«€n]ºh»MKO¿RZVæîæöþ€þVVVÌr½l¬­µ«D>rssutpš¦«êYWUQn†ÜòñöR(W¯)UªvmZWÕCL\ÜÝ{÷ËD"{;»>={º»»±œ%ã“Ï~øŸD†FDšîÒù-ÙÁŽBu‹;ëë;vîY½zuiI!˜™ ¯pîÂE[›žÝ»ë.ñ/G‡ŒŒÌ£·µ±ñõñ€ø„„¯fÏÍÉ˵ o…†8}¦C»¶véu{#8dѲå*µšÇãž>wþáãÇúõ5Aó¦M=[´`ÚoÑ’2‘ÈÌÌôfpȹ {õè.´°Ðëa`ÿ~ææÚd¾øz¶£ƒ½·7!dùª5{Öe$ÊÒ•ß”””:z¬Q£FYÙÙGŽýieeåçë£×ÃÅ¿/­\³€2î?|täØŸ;ub9K§Îž«jòÙÿÂ_÷ýf•JIÓäã'òòó%é˜OF3 „ÐJme&§¦þöó>f rÁ’e!wî|4øCBȆÍ[Ú¶Z³rÇ“Ëåó—,ݲ}Ǿ;tוJ¥[¶ï2øÃÙ3¾€¤ä”é3f†ß½k<âµ ÛøÞ×Ç'#33âÞ½Íß­ïоüòÛï׃n|6e²J¥Ú±gß»]»|³l)‡Ã‰Ä_Ξ}à·ß—-Z¨×CU!2³² ö¬Û¦Ú(!·ïüºÿ'¦þ-Z¾"äöa Ñ tòÌÙß9ÝF­V<54<Ü˳ËY28ùì‡_TTüëÁCC‡ ™5ãKHIMûrÖlSSSãóBÿ5uv‘Iß^½´{\[4o.—Ë )9%#3süØOy<˜ššŽ9"!ñYyy¹îº÷<”J¥ãÆŒfžz¶h¾pî;;;ãûôêÉT;Å€èØX•JÓ&Mûá‡ß½KÓôÔI˜åÍ›5íݳ‡‘iA¡ÿ¦:ÛÊtt°¯¼9ïtÃ÷?0ßÚ P* ¤´ÌÒÒRÛ,'7×ÂÂBw?äûTÑÉÁyàîî6vÌèCGÿøóä©–~¾;v|à@¡Ð"7/¢¨&ݵ«xx4Q(”%¥¥lmu{¨JU=ë¶©6ŠÁ™ÑÃápÎ_¼Ÿ™••¥ÑЕÛ™%ƒ!Ø?7/ÏÑÁÁÂâŸq5kÚ4üî½jÓF¡ÿ”:+™ÇÀ+—ˀϧN1·0×]®÷ojjJÓŠ„µJ]UÄi“&ŽúqÄÝ{Ož>=tôÓçÎØ·ÇÄÄ„¢Ñh˜m\mjµÚHÎz öl®sàóå£H¥ÒϾšÉår‡9J(ŠE¢qcF·l5vô¨wîúdìxŸo)ýhˆî6–VëÀV¼7ð‡mÛ÷ÿú+H$Ò)'x4i çÎY²rÕ'cÇ[YY•‰DÚ·›6i"ûäô¬ë%£øúx¿ÛµË²U«»»‹D"ïîݺþ}å²›«Ëð¡W;KFzf™˜@`²hþ¼µßmúÉhS33‡?öÓ3ç/0¯Æ%$Ü ¹5oÖ,@À~P!ôö¡’c<½ý !ÉÏbÀÖιÎch4š¨˜˜’’RWg#g¨Êd²È¨(•JåÙ¼…‹Ëó4rrsŸ%YZ [·j¥=&gPzFfzF:Ç÷ñòÔ=ÛV¥REFE‰D"w7wo/6 —••™™™ &Æ{ÖU‹(zbââòó <š4nѼ¹T*½÷àgó•oh`p–Œ`ŸXyEœȧ„Ðmµw<@!¤õ:J&B!ôÀÿB!„XÁ’‰B±‚%!„bK&B!Ä –L„Bˆ,™!„+X2B!VXÝý'.>¡¸¤ÄÑÁÞÛëùµðR™ìÑã'];wÖÞ€íit´X\îêâRPX Vk:wêXùæ>’+:´711©(âÞ½ªV¬ãQ^Þ«è?/??)9ÅÕŹy³fõ’@CSWo†:ñ¦OxrJÊÓèèòò [›íÛ¹8ÿëòkš¦Õjõ:4„^'V·2Øÿ¿_þyÜÇÛKûÓÐA7ƒ×mÜ{wlÓÞÐgè'£ËD¢ù³gíûå€D"¹pê¤PhŸ—ŸÐÒÏÑÑFŸ˜_PpüÈ!ƒw-ÿpØíŠ5F¢¼¼WÑÿù¿þúqÇ®‡ ž]醂ðÚØÔúÍP'Ô„ë%S#ÅÅÅë¿ßüøI¤v ‡ÃùtÔ'S_Ü:Q¡PŽ?aÕŠemë,c„ÞR¬v̶mÓ’’S´÷æ~ðèóàÞƒ‡Ìƒ¬ìì2‘Ú´þ×ïÌùóßnØ­ó{¯Âë‰RÞú64 jÂkŒF£Y¼â›ÇO"mllF ýxò„ñÝ»uBÿqìâß—˜64­a>¹¡j±ÚåÕÊߟÏã©ÔêØøø¶­[ƒnɼÿ`ÂØOáÅLÙÛÛ¹»¹?yœÂår %ó;$*•J©TêîùÉÎÉ)**vqqvÔùg튠P(hš633ËÍË+((tuu©êüšF‘Hœ–ž.Z4õð`‘—ŸŸ—ŸïäàXùž®Uõ_XT”•-´z¶h®Ýq­P(!¦¦¦Ï’’(ŠãÙ¢9¤gd[YZÒ†~Vº¾(—Ë !ÚßhS©TÌŽ;í?Þ@4MfV–¸¼ÜÍÅ¥òmxÙφ.Ý7Á2b½¿£ªÍ¡ræ“aîôÙsÉ))ÎNN{¶ÿhkkË,˜;k&³\»¢……ÅÄiÓó º¼óNøÝ»LËhp§åÜE‹ØG¡izÏÏûÏœ;Ïü\³“£ãÂysÚ·mkpàR™lýÆMaw™§­[-_¼Hûg°¹\¾ñ‡-!·ï0m—/^ÀŒ®¤¤´cûvwï?ðöòZ¿zÕÊµßÆ'$0-Izý:jŒ\.¿rá“Õ¶]»ÿ¾|eñüyï è_y _NŸöý–sóò˜Löï·hÞ\滘ýlü´k‡^nºo†'OŸVB‘ˆ áe$‡ª2×Kfã·kÙ‡ûûÊU7f´¶^À>ögyEEJjj‹æÿü¥RQ! ¾uçΖ ö†b{Æ,³o–ùåáû@·Îý|}hš~øèÄÄÆÂ‹’)‘H% !ÐÊ?ÀÞÞ˜ßnÔù “ÄgÏÞíÚ¥oï^Àù¿þzôø ³\»¢VøÝ»Ýºté×§7EQgÏ_ÐnÝêªQ”ÿý~ðÔ™³|>¿Ç»ïúx{å,]ñMzF†ÁQoܼ%,â®M¯=œ#ŸF}¿õGãýÿ°mGÈí;æææÝ»uóhÒ¤  `éÊUÅ%%Ì*4Mß½ÿÀÜÜÜÕÅyùê5ñ VVVïvíbgg§T*«šüú ÚØÛÛ}³æÛܼ¼Vþ½zôàóù—¯^»rí:ÓŒål¸¹ºT¡}3(J#!ôõýŽ2’CU™ë%Ã>\IiiZz:tïÖUw¹@ 8wâÏKçÎèÖË¿ý>|̧ÛvîJH|f$s„þãØž‹Ø¶uë߉‹'„Üô:´oogg{ïþÃN:¤¥¥C¥™_NŸVRZrýÆÍÑ#GöéÕS»|ü§c¦Lœ\÷jPPZFF»¶m ÆýtÔ'ŸM™ |ÿÒÕ«©iéÚµÓkÃ>Н¯ÏÉ3gù<Þέ[¼<[B6nÞr5(èÄé3 æÌÖë6#3óvh¨@`òÓÎíŽŽŽ¥¥¥£ÆO|øèqyyyUý»»¹ÞæPÔö6{¶h®V«ç-^sñïKÇeÖzà€y³brN IDAT¾~òôéÂ¥ËÍÍÌ~Þ½ÓÉÑQ$OýâKÝoö†0@㘤¤¦~>s–££ãŽ-?Àá?Ž9ögⳤ÷ô/((`9Õý¬[zyE…Áz-ÙD¬Çw”V嚸»W•¹n2ßé4lÔ–ኋK@ °ù)·è˜XE¹8;‹Ùýë#ôßĶdú·ôL$IBbâÓ¨(.—Û®Mk{ûÿý~ðþ£‡±qñ4!NŽŽz'¯W¥WÌ`v1U×ÒÚxK6Qâã …]TttjZšP(lÞ¼SïõD>€N:0§)ÚÚÚ.œ;G$k^äP¹ÿØøxBH«V­˜#s<ïÃ÷ߊŽaöZ3>ü!ÇcýöìÑÝÉѬ­­úöî}üÔ)ö£{ 4Žˆ£ƒŸÇ+((˜5AçN:´k;vô(f—)ûÙ0ÈH=l"Öã;ÊHl2€Z„#„Bª=fùчƒ>õIdTôöÝ{ªŸ„þ«Ø–Lçß²å£ÇOŽþyB¡Pú·linnîíåicm]TT|áïKðbç-––Â:oÉf]‘X ÅÅÅ;÷îÓ]^!©¨¼:ÓX÷ìŒþ}ûïŸù ÝÞ®‘v‰½ˆÅbíæÛ¶¼¢œt®pt¨ñÕ ¯z€Æ1±±±Y¼`ÞöÝ{£¢c¢¢c ±»û7Ë–z¶hÎ~6ª TU½–l"Öã;ÊH?l2¯i8{P*•ÅÅ%Ì®]­oÖ®‹Ž4~ìAƒ˜%½zö¨Å,ý×Ôà"ñv­[?züäNXtlß(ŠêоÝõ7o‡†Â‹™ ™¹™x¶h>ã‹Ï™%R©,3+«‘ÎÉZf¦¦ ÿ³Ÿêâ¥Ë999¼7°ªþ-Ì- ´¬L»„ylnn®]Âü½/´°€’’ÒZÖʼnþ¯h€‰¤òêÌ@ÊË˽<=Ù³+5=ãñ“'¡á™YYßoÝúóî]ìgÃ8#!ôZ²‰X·j4áF°Ì¼Fál¬­½<=Ÿ%%]ºzuü§c´Ëårù½÷ e“Æk”$B¨7ÌkÛ¦ B Cûç‡:uè ]¨w ³òöòäp8é™¶66mÛÞøpßþ_â+7öõñ€{÷ï3[„ååå{ÞÿÇñ\N•çôûx{@TtLnnB®^_oo½–~¾¾rç6sàP¡PÜn8äPTH$ •ɘ]¸Ý{ð`â´é›¶þøNÇ_|6mÓúo =#³F³aœ‘zê*"{5šp#Xf^ÓpC>ž<¥m@ùõàa…Bigg×Êß_·±F£ÉÊήQÚý×Ô`+ÓÇÛËÜÌL*“YXXhO#ìØ¡=EQ„W½+ÕŠw”Jeåó5ê Ë(¶¶¶ýz÷¾4{ÁÂîݺ•••Ý çp8ƒÞ{¯rcÿ–-}½½ã¿üzö;:>|ôX*•úz{W¾:SËÝÍíŽîÞ0sî¼ÝßMIM{%ú@¯e‡vmÝÝݲ²²§ÏøúŽ"£¢™ïÊ2@77·gII«¾]×¾mÛÛ¡¡F.uoåïÏçó=~²ö» Ž=†_ôìgÃ8#!ôÔUDx5n„ñÌu“©Q¸Aï ¼v=èitôÌ9óÚ¶iÝÈÖ6)99%5 ¾˜6U÷‚ÎSgÎ~ûÝÆ’ÒR ‹z¸×BoŠler¹ÜV­ ]›ÖÎó™?Põ&f€K¸rëFHÈË&[5öQf=ãNE"ñÅ¿/Ý  -͛ۼYSƒW¯\Þ¼YÓ윜ÓgÏ¥gd4oÖtÙâ…Æû_²pË–%¥¥gÏ_xe)®Z¾´òYQ\.wݪo\œóòóÏ]ü+-=Ý£I“†3À/§O³°°ˆŽ‰ýýð‘ŒÌ,#{ðç~=S Ü ¹õçÉSÉ))Þ^^‹æÏ­Ñlg<„ž:‰¯lÂ0’¹n25 GQÔ†o× ìßÐôƒ‡®^JIM -æÏžÕ¯OoÝ–w±^"T-V÷˜­©²²2š[æHUL\\^^~S&º×±Y±FØG€”ÔÔ´ô ++K_oã·0¥i::6¶¨¨ØÉÉÑ×Û»Ú;é!$áÙ³ìì¡…E`«í=t*S«ÕO£¢KËÊš5mZí—ìk`yyytl¬J¥ ð÷¯öÈ\™HôìY’D*usuaþ„Òb?ú}þûÍ`$„žZGÔóŠ&Ü#™ë%SÓp"‘8.!^"‘4²mÔÒÏW h_’ÉdCGéÕ£û‡ï¿Ÿ›—·}÷ž‹§OÖ.„Þz¯¤d"„Þ„©TÊl_^ º%!#ð÷2úO£( ÷Ç"Ä–L„Ðsž-š¯^¾¬¾³@¨áªÿïE5Íš6mÖ´i}gPÃ…[™!„+X2B!V°d"„B¬`ÉD!„XÁ’‰B±Rã’yâÔéµßm ÙìØ½7üîÝ—ìäáãÇ[¶m¯“|tÕIn¯§ÛW4!ôW³’©T*;|„¹Õ§îò“gÎ9ögåÇ5‘‘™U»uµ²srn…†U^^‹ÄtW©“Ü*{ÝV5!„^FÍ®Ë ‹ˆJ¥ƒÞïïËW ´¿I›˜(“É+?nPj‘Xƒ B¡×¯f%óZÐ /Ï“Çûûò• à1ŸŒ€°ðˆœÜ\¥Rù×¥ËB¡Pûx`ÿ~</&.îî½ûe"‘½]Ÿž=ÝÝÝ´½%%§Ü–Ë^^-ôí«½!xBâ³ à`FÓ¾M›®]:kÛ]¾z­°¨ÈÕÙy`ÿ~¶:÷ ü$24"‚Ðt—ÎïÌ\7I&±´ôôÁ!¥eeînnïèoeee|•Z禫¦C®*É ›Á-}}ËD¢+ׯO?ÎÆÚºª(-- ‹¸àßÒø/¥ „ªV vÌŠÅâ{öïÓ‡ùqÚë7n2Ë#£¢ ‹KJï„…?züDûX­V_üûÒÌ9ó"£¢åryÐÍà)_|ù,)™YëFpÈç3f>Ž|ZZVºsϾùK–Ò4 wïÝÿfí·R©4%%uùê5ç.\dÚÇ'$Lúìó«AAg.\œøÙçÏ’’˜—Ž89oñ’ȧOsóò¿Y»îâß—þÏÞyÆEut üì. KGªtéHUņŠ-±Ec5£¨±ÄÞ[Œ±Gƨ±&jì½Ó{“Þ; K‡]Ê.Ûߣ×Ͳ{YMÞ<óÿñáÞaæÌ™3³÷Ü)w¦­òÒJ …ÂÈèèo–‡GF555ݼ}çëo—VUW“'éœnÒt´È$Jž9þ΃«×oˆ‰$(+gþùø›ädå+ƒÁ`0ré@/38,\,ûÃü†œ8õkIi©µ•UÀ·ßÔ7Ôs¹­?ìÚœâúö½ûã?»võ* …³¿^í`oÇápŽ?1qÂøUË—@~Aá·ËW U0EE—ΞA½´u›¶„FDLš0^"‘ì?tÄËÃ}÷öm***­­­k7m>rüÄ™“'jkë.^¹:yâĕˠ°¨8`å*uuu奕'NŸ<ÐwÇ–ÍT*•Ín Xµê÷K—·lX¯( é¨nÒÒ:Zäv•|tüðAg''r ô´±9°o¯ îbb0ÌÓ^æë  >½½Ðщ~C†P)”Wï:šŠøùÐèZ PÐÔ`\B"‡Ã™3k&ú—½íú5« ÀØ0bTÓÎÖ¶µµò KŒ¹³¿RQQuuõ™Ó¦æäæ555EÇÆŠÅâE æ¡$¶=m†û %×*+;§ººzÞìÙè l]]É&„ED´kŽê&¶£EnWÉÃüœœ€ÜZZš>ÞÞĬ3ƒÁ`:²½ÌŠÊÊŒÌ,cãÕë7¼M©ªòÍ‚ù$©¨TêÃÇ3³³eåeåe"‘…3+*455 ºw'b~6f4º062l+§œÉ€ý#ÿ<>êX••ÆFFÒ§õ´±‰Ž#/ …B±²´ B¬­­x<~}CùYÊÕM[[›ˆÖÑ"·«¤‰‘³£À`0L'PÖe¾ ¦ŒòA8=]ÝÐðˆŒ¬,W¹I8Îâe+h4Úä‰&Žgog»qÛvô/uuu4× UNÇ—F£À’E 545¤Ã ÕÕÕù¾t @ /‹šššD"‰D¨_BЄ% ÕMú¶£EnWI"U',€Á`0˜NЗééé±pþ<"¤¡¡!<2*0(D‘ËLËȬ®©¹xöŒµ5 áp8èÂÂÜŒËå–2V––(äû›|¼½åneit:ÝËÃ…¤¦§'¾Iòòð°07¯««gVT˜õèþ•ž™I^ ssÈÈÌêÓÛ …ddeiÐéF†rz{íB¢Ûß3íX‘•W²À`0L'Pj.37/¯”Á9|¸t ¾¾¾—§GpXê<‰D"â_èZG[ªªª@"‘ܾw¿¤”:@}{÷6ëÑãø©Óȉ¾ LJNqqrR¤€µ•¥«‹Ë©ßÎÖÖÖ@eUÕÃG™0È×W_OïàÑc‰äe``||‚"9H1{;g§ÓgÏÕÕÕ@ZzÆýGÇŽM¡P%!D7i:Zdå•$·£¬lÏûß—ƒÁ`0í¢”Ë|¬ªª:tð`™ð~~,+ñM’©‰I|b⢥.—¸¶¶²<ÐwËÎ] /™2cV›7C |úâù{÷i4Úæõë 'M›1yƬ‡ŽÌ™5ÓÓÃD‡­›6‚™óæOŸ=wö‚…úzz+—/€nÝÔ6¬ý>/¿`òô™ã§L=yú×¹³¿’+AZÉõkV757OŸ=wòô™+×®ëåâ,wRV:I't“¦EVRIr °XìàÐ0Fy×ï[„Á`0ÿkPòs3ì]%IA^&è˜vBŠP(ŒKH‰Dô—H$Ä5FËÈʪªª¶¶²´³µåp8q ö¶vhC.—›’–&ìmízôh?_‘H”–‘Q_ß`ÖÃÔùïý³¦ææä”T‰DìåáÑvS‚¶JÒh4@’–Æf³-Ì-œ”IÒ9ݤéh‘•Q¡Œ0 ó!tËÄ`0 æ?>ü ƒÁ`0¥À.ƒÁ`0¥À.ƒÁ`0¥À.ƒÁ`0¥À.ƒÁ`0¥À.ƒÁ`0¥À.ƒÁ`0¥À.ƒÁ`0¥À.ƒÁ`0¥À.ƒÁ`0¥À.ƒÁ`0¥À.ƒÁ`0¥À.ƒÁ`0¥À.ƒÁ`0¥PQ&Rv}öÏ ?·›læ ¹8‡àÿ‘kkÀ`0JºÌª–ª[9·ˆÛ¥^KÙ<6Á!8ä$»L ¡ÔÓ\!·¬©Œ¸µÒ±KÄ8‡àÿ‘n´n€Á`”t™ ƒÁ`ðò ƒÁ`”»L ƒÁ`”»L ƒÁ`”»L ƒÁ`”»L ƒÁ`”»L ƒÁ`”»L ƒÁ`”»L ƒÁ`”»L ƒÁ`”»L ƒÁ`”»L ƒÁ`”B©“L0£¬ìMr ‹ÅÒÐÐèåìäÚ«×?­ÑÁår“’­­,--,ˆÀ’ÒÒäÔ46›­¥¥åêââäè “ª®¾>#3ÓÄØÄÉÑAúý·¾¡!3+Û­—‹žžž’åRT\̬¨è߯ŸŠ þ‘b0ÿ”ý5>{ù2>!]S( :ÝÙÉiäˆݺ©q=æ?|XßÞ½»\Ë.‘,þ¸~£¨¸xíªUºº:]¥Ûÿ/“’BBÃÖ®^¥(BQqñÂ%ªªª£üG<}þbÖôiß.Zb±øç_N=zòT:²»›ë;wèèè@fVveU•[/ccã] ‚Ìôì…‹ž<½xö ºe±Ù‹Ž•ŽãÚ«×– ëÌzô@·…EÅ+Ö|Ïår]œÖ­^M\Ÿ>þö€ÉÿqýÆÝו¨·mמsçÌŸ3…(ª óÉPv`67/?2:†F£Ñh4 …ZVÎüù—S‹–TVUqÂ""˙̮Òìö½ûÞø« %ßøèÆ­ÛVVVªªÿ»¯íåLfXdT'Þ¾wïÑ“§jjj_Lœ°ryÀW3¦ëé饥gþùŠpïáýûJÏÌêR}ÛáC2ÍÎÉyðèñgcF£.&‡ÃYµv}tl,Nÿ|ì˜oÌŸ4~œŽŽNFfæŠ5kkjkQª×AA\.··§ç'H_bÃ#£ÜÝ\uuu”¨g'§!ƒýyýFYyy'J‡Á`>pššš[7n nKŒµ›6ïÞ·ÿôñc Þ¾‰.º„œÜ\.·]w‰ä²r¦‹³Ó7 æ°jÿetuu@GGGWG] ðà0X²há”/&¡Ãü¾ XÃår©TšH$@ÀçóÕÔÔ ¦¶¶¢²’®N·²´”@TVUUVU™÷èaªLx[i<_n¦eååZšZöv¶ämæúÍÛ‰dòĉèöì…‹¥ †‰±ñχšš˜ À¯çÍ[»isAa᱿ü¸gŸÏg76ÀÐÁƒ|û÷OIMC×~ƒ‡ øåLfQqñwK•ÈãñÄb1N¯¨¬¬®®13ëadhHh8yÒ„ðÈÈÛwï­þnIÕ`0˜OFçû[V––ß,ݹw_rjjoOOHIM377362€Àà^ÎÎ,6ûÅë× æÎÑÓÕ­©­}þòUMm­™©é˜Q#õõõ Qù…A!!­­<»Ñþþ4-*:†YQÁçóŸ<{>fÔÈ´ô ss³ü‚Bš·7‘0"*Z½[7ï¾}H„#âK¥,ëɳç#†ùÑéôâ’’ ÐËÂÜü³Ñ£ˆP[Í¥å´U…+’æäèP[[®¦¦6nìXss³×AÁé™zzºÇ}n`` L$-#++6.žÅfŒðó³°0—Î…Çã½|Èúxyòõ%tNJN‰Œ‰‘ˆÅ¾úK—¥¡¡!*&Ö͵—µ•Ø]_ßÀÀÀÉÁÞÑÁœÞN¼µòx@¥¾–°³µõñöæp9MMM»öý˜•?>²kë–½ûÄÄÅ¡˜ÚÚÚ«–øŽn9\Dż®ôôpߺqƒ‘¡¡ÂpG®´56Hgºgû¶Ÿ @ÑŒ·n\ïáæò¨««‹ˆŠrtp°íi­­­Ï^¼€µ«Vî tuu¶oÞøõ·K£cc+**ýò šž8~êôñS§Qœã§N¿ D³á‘Q0xÐ@%®Ù°±ªºÚ·4xK¡P&M¿jù2ÙËÃÃÔÄäÅëÀ¥‹¿QWWWT5 æ“A[ùÝò'OïÚµ«¡¾èZrãÅÆÇ—”–Θú¥t ¹™Ù[· z{yÀÒïV:9:ÀÆmÛ8\î‰S§ëêêÆŒÉ`0–­Zì¬ÐÖÒ ‹Œºu÷žwŸÞÝ»@PHè†-[B¡Š í‰II£Gú?yþ"=3³…Ãåp8CZ±f­±‘aaQÑùK—§9=¸›š›—¯\mggG¥R 'xù:095­¥¥…ËmàÓ/1)éû ›Xl6®úàÑãaC‡hij¶Õ\SCƒ"WU …­HÚæí;2³³ƒCŒŒ #¢¢ï?z˜™•ó&9Y__ïù«×Á¡a“&Œß²cW»q¨Têã§Ï¶ïÞ@QïÖ->ñÍŸ7þàナ¹yûŽúúú«×ntïÞ½¬¼üÏéèè¸8;À[·ÞÞäÒjjjΞúEMM­°¨xÑÒ¾€†²}¼½wìÙ[QY©L sóÛ÷îÿl,Z¹# g½(2:ÚÁÞåqñÜoȃnغ-4ýU ƒùd|èw™4M$Ëý׈a~Èëä–2sg…:êêê3§MÍÉÍkjjŠKHäp8sfÍDIìílׯYMŒCÊ`Û³§µuHx8º õ0 ¦¦V‘pE:geçTWWÏ›=õVuuu&O˜ÑVsi©Ú®´¡ƒ£Þ€µ•%ø†æØÐmk+OÉ8?:°" Éb®†ûùk{[ÛÖÖVˆŽ‹Å‹Ì{g@›á~C‰$ZZš>ÞÞJ®5ÕÑÑ9vèÀÙS'ÌãæÚ‹F£•3™Wþ¼¶bÍZ/ù—cG®^8_SS{÷þƒŸOþÂ(+±X hþÈW__ýšÕË–|û&9En¸H,&‘F™-‘HÜÜÜìíl@EEeügŸ@F–ü•AU5Õ`hðvâÕXAK–H”±DDEK$’ÁƒuTà°¡o+EOOW¦h†††P­à­ƒÁ|b>tíh}Cú·ÅÄÈ] Å®û&fÂx|Ô7°˜šššÒƒ¨ŸM’ÝÈáÃnÞ½÷ýÊïØÉ)©?îÙM"\[[[®ŠÊJ …beùþSz£ÒÒzkSc(-+‰DÄü4AIi ˜´÷neei‰Þr:$P[[þl¡a£â÷? ó)ù —YXTÜÔÔäâä(÷¿”w>ŒF£À’E 545¤#ª««ËtÈ1|ØùK—“RRJKÝ»ëûx÷ˆŠR$\‘555‰D"‰ˆÄ…!…BÍ¥Q¤j»Òº‡³xÙ 6y℉ãÆÙÛÙnܶ]:‚"ù‚¿uA'rg³ÙŽ5èÞXU¤©©ùÅÄ yOŸ¿(+ûÛWee忞;cGäëkmeyàðQ¢·GWWvã{ðøÙs&“Émm•îáîF"@SCX,"]khh€<´4µ ¥¥Ý:9:jii67·†„Œö÷—Ž™•“_PH¥RÑ„½"š›[’SS‰É~%^¼r•D&¡!ÒƒÁüãt~`V,ÿvþw]]Á’Ç´²´:îåáþ¨TjRr N·07ãr¹¥ ùû›nܺ­HTSSW—Ððˆ Ð1£FQ(ኄ •RóedeiÐéÒ]y©ä«Ú9i%-#³º¦æÇ=»¦}9¥·—§¶¶6‡Ãi7•…¹y]]=³¢‚IÏÌìDîæfft:½®¾­Eðx?9%µ®¾ÞØÈhäˆ@¥P "*ÊÜÌŒB¡dçæž>{®›šZ`H‹Í€—¯_tïîÚ«—³£cvnnÀw«úûôK|“ÄápœGù¸{ÿAÛðþý¼Q,È”Ïç÷ï矰bÍ÷C‡ .,*NMKëÖ­Û„qŸË-‘‡›ÛË×™YÙ¾ýß~x3gÖ̤”ÔÔ´´Õë6¸»¹™›õ¨­«KJN …ÖV–ß½›EVDxd”±‘‘ôfx(¾¢Qô© ƒùÄtÀe67·lß½]kÐé.ÎÎGþ¤äyë¦ ›¶í˜9o~w}ýºúz'§•Ë—FÛ¼~ݶݻ'M›¡¥¥ÕÈfÏ™5ÓÓÃLML®‡ÞZ´4àä±£Ò¢†ûù:sÖÝÍÍÜÌŒ\8 ë׬޴}çôÙsuttXl¶wß>ínq@¢j'¤ug'ÇÁ}·ìÜeiaÁf³œ‡ øôÅss³_NþBQªnÝÔ6¬ý~Ïû'OŸ©N§S©”¹³¿º÷ðú/‹Å swsm×eÀ‚¹sètúÕ?¯efegfe£À^.ΛׯC_q¸¹özÖÏ»ïü9³¯üñç­;w@OW×ÃÝ=5-íþÇìÚ¾uËŽ…EÅwï?Ûž6[6®¹áæff$ÒˆL›[Z¶lX¿mמŒÌÌû€¶–Öæ ëz˜šÊ-Žwß> %)%•QQQ9¸ï‡³.µ©]>PÛâ’’²r¦µ•̾"5ÓΡ¬Ë<é2“Éœ4~<Ú"Ž@$8rT(|»¸k7"'8zâä _ßþý¼?†pÄÁ£Çü‡ëÛ»-[•D üqýFQqñÚU«”ßêE'NýÚÏ»±ª4]«öÿ “’BBÃÐ9Û$H$’ _Nkii™8nÜÃ'O\{õúåØâ¿‘ÑÑÛvíÙµm«³£ckkë™ó¿?yö\úäccã[6;ïÜû‹Í¾wóFÛŒ®^»²mÓÆN»Ì’RFAa¡µ•mÏžpçÞý»ÀžÛ‡ zàH$Ú¶kwYy9<¼}³sy)aœ à[w頻ªÞüãŠôý§CGÊÊË9Dî2eÊÕ RÓÒ‰:¥±±¶Þ¹u3:o¼tH1¯^~ŒzAƼzá|[—yö÷ ±ñ ûvïúxþ@ú‡€B.ÿqíæ;°jù²/&N I+cÆÔöÂå+á‘Q;·n!w™]›) $efãƒCÃ<~,þ&)ùU`PphXsssWª,EDT4z‰ëZnß»ÿç¿ÐuXD¤Üó1:Çý‡nܺmee¥ªÚÉN¼´nQ11¥ ùÅïZµÿ_PÎd†EFµ­œÙÒÒ¢ª¢" áÝñ)‰DráòU{»¡ƒ±Øì€•«Ÿjjj4íöµ?€F£‘Ô)B(æp[[mmzÒéê"‘ˆ¨SeJGÔþÙ B!Nçr¹Ò½”¶šëhk˘‘ЖH"ÓÔIš»±±ººZ[K‹è,ʵaÛºk›iۦخõ䚈äÒ—Ù×Ë+*6&:6vØÐ¡DÁ"¢¢Ñ±M(¤¦¶öùËW5µµf¦¦cFÔ××€àÐ0'G÷òu _ èãå‰N*~ñêµk/¢'ž–žÑÚÚÚÏ»/¹Å%%A!¡ ,–…¹ùg£GIï3ž_PÒÚÊsp°íïL™‘•Ïb³ Føù¡´¨èfEŸÏòìù˜Q#ÓÒ3ÌÍ͈&EY(*ˆ4ñ ‰%ŒR‹õäÙóÃüètº"iÁ!½œYlö‹×¯ÌCtbdtC9¹y!!"‘¨¯—×@ß(0%5P[,‡„…gegS¨TOw·¶Š‘˜¨Ý"×ÖÖ…†‡«©©;ÖÜÜìuPpzF¦žžîÄqŸ(I“[í6)9%2&F"ûøÛètCCCTL¬›k/k++™b¢§À¸±cƒƒ ú÷ë‡ÂÅbñ¥«¸º¸ ðñyüìyzF¦¾¾þ¾=»ºëëi &MñÊÕÔ´tÈÍË€„7oÂ##QK ‹Cû÷™§¤¥­Y¿ÑËÃãØ¡PXT|èè±ìÜ·¯Àƒ|}·oÞD< âŽ?YU] ***‹.èßÏgÁâ·ÛÛ®X³vÛ¦ ¶={òx¼^ÎεuuÒæÛ÷î×Õ×<¸”Áprt$É ©diaÁãó«««@[Kë‡Ý;=ÜÜÂ""wý°ÏoÈà]Û¶€P(œ8uºH$zzÿ.š¸•6N)ƒÁárutt$ICCC`pjŠo_ Þ<ð&)ù艓„ªCÞ¾yc9³B¦\=mzÊÕV,Ÿ9wþÁã'ÈUhiin^·ŽhÞÈòŽïC°Ùl FeÙA®dsssiÅ6oX—Ÿ_ (wik+Y/±ñ Ç9UQY‰"8ØÛïß»M ¾IN^·i‹µuSSS]}ýŠ¥K„"aÌŠŠÊÍ;v–”–ö÷é·có¦ŒÌ¬Ý?î÷ñî»cËf’:€°ˆˆŸ9ÝÐЪªªÚZZõ 7®^624$±­téPHFVVHX¸þõüy§ÎüÆÙ’Ñ|¸Ï=y*]¿:Ú:„¶r›úô/¿$i~ï*úm£’kÃææ™F%“©Ü¦¨¢¢Bb=’æ§èZ1«¢ª2dà  °÷¦LJæóù¾ïŒž“³`ñ’—ÍÍÍ÷=ž¿xI^~>üvþ÷ëÝܲcWcSSqIɶ]{ЬÀÏ¿œJÏxâñóW¯nÝ»G®Cdtô7ËÃ#£šššnÞ¾óõ·KQÅ@PHè’å+’RRX 'OŸY»i³X,~üôÙŠÕß§¤¥·¶¶‡,\—_)iéÕ55uõ QÑB¡p×¾cââÚÍBQA¤IÏ̬¨¬b±ÙQÑ<DÚ™óçïܾ{¾ž;GÚ_"Ðk\sK3äæå—˵07è; [·nŒ²²_~=ïüú©WUW¯^·>;7×ÉÑÁoÈ`55µÈèèKü¦¦§oÞ¾³º¦¦oïÞÞ}ú…Â3ç~ÏÉÍEsHzzz||\{õByY[[”3ß ÞÔÜ|ãÖ-/* Žö$y¡§£¬LMUu¸Ï{˜š657ÿuû¼÷@oLÅ%¥|>ßÆÚšXè$m¤‰‹“ã„Ï?€Ûï~˜ÒBrró6mÛ^Îdºº¸ òõ¥R©a÷=nll”.—¡¡"m={îÖÝ{šššþÇ[˜›77·œ¿teÔÐÐP[[Žöo]&Ç‹úüLž4Üær%Ë(©(w¹Öh·^ wìÙ[]S3ÀÇÇøp ¼üüç/_½3]>—”4°X=z˜z¸»ÆLMKXµª¤´tÚ—SöïÙ­¡¡‘•“ÓÒÒ‚:X$ušøf×?²Y¬~Þ}ÝÝ\A}CƒŽŽŽ‰±1‰meJ‡8ýÛYøjæ ·^.P]]I[Ím¬¬dÚ­´¶r›zEE%IóCòÑ»‘"ÊÔL¦Šš"¹õHL¤è]1;ÌoÈöÝ{9\.êÀ‡…ùö÷Aã´ ì?tÄËÃ}÷öm***­­­k7m>rüÄ™“' 4<ââ¹ßÐÛÖ†­ÛBÃ#¦L𨡬@ œ8}fð@ß[6S©T6»1`Õªß/]Þ²a=‡Ã9rüÄÄ ãW-_ù…ß._{ûÞýñŸE«E„Báì¯EFG;ØÛ|ûM}C=—ÛúîJf"´[¯çÍm`±Ê™Ìý{w·+íU`ÐñÃeN+k«[AQÑ¥³gP—}ݦ-¡“&Œ—NÂ(+‹‰‹;ôã>tòåùK—_-^øµtE&òñö&W²¦¦æì©_ÔÔÔ ‹Š- à ø§£P(>ÞÞ;öìE/ƒíƱ07WT$†­­­»xåêä‰W.€Â¢â€•«ÔÕÕQ’ž66öíµiÓÅ sóï–ÀøÏ?#E"Ñå?ÿìíéÙÛ˳¢²²¤´”F£ù Ü6ySs3èéêÁ»ŸœßÁÛ6mTQQyù:pÿ¡Ã o’àïÝ }657/]üÍŒ©_Àó—¯9¿dÑB¿ï§ƒb±xÛ¦ hÏØÅË–çêééŽ韛;|èPTÀ›¹wÀÆÚÚÈÐðMR’@ PUU½vã¯ææ–sçœ>{¶îÜ¥(/äÅÝ\{ùi¿ššÚ³/=F£Rá݃è´åäæJßJGê¿Çûëöü‚ÂäÔT/wo öb±xïþŸBá²oOûr \¸|åêµë ‰‰S'!]®•k×ÉÕvÑüyŸ=€ÓÇ™š˜¼IJÞºk7z‡ƒw£²0qêtéªÑÔÔܼ~]oOO›+’ìîæJ(¶lÉâ _NS”{kä)S/§;Ëçó¿ X:å‹IpôÄÉGOžÓXȤv¶¶ûvï416&Äýtè0lø~ÍgcFKßéÝ«‰Ü:åp¹?>"‘Hvmß:tð`X¶juVvŽ£½½P($±­Lé 84,3+ÛÄØxڔɭ­­ –Hʙ̞66r5 EºÝÚ*jêŒò2’æG46¸}ï¾\J×L¦äMQ‘õÈM$÷‚èØw™}{÷VWWŠŽw£²Ä m~aA)ƒ1wöWhÞB]]}æ´©9¹yMMM0ÜÏX²lok‹j¥£deçTWWÏ›=ù|]]É&„ED@\B"‡Ã™3kæÛ,ìlׯYm``ðó¡+P @  Ï’dèPAÚ•6b˜Ÿ2§{ú¦ÿ®'d'/S*… é™™¨·úÍ‚ù7®^–‰£ÈDí*9tð`Ô±¶²DÊ Q tÛÚÊS2y]È5ltl¬X,^´` ·íi3Üo(‘DKKÓÇÛÛý†•àÙ‹—•‹¾ž…EH=¹ˆ&%'#UWW³Øl55µµ«W¡†íÚËÐ 8á? ‹ŠÓÒ34ètíåëÀ¨˜X4< ¢B€˜¸¸êšš>½½ˆ=ÖçÍž½|ékkätÞ¾7 ÛžÖVF††b‰„YQY[[wïáCOwÔ‰éÑô¦¦–$/ô`úfÁTÌŠ °·³ƒ¿?…ßß¾[*)mxï_ † ·ïÞonnaVT µ?)©iåL¦ƒ½=zH€­-p[yDAìH,#‰Ñõž÷߸yKWWçÙƒ{—Îý&­•JU}jQ\.׬GèœdB1òÜÛX£ýzÑÖÒ XüÍ¥s¿™š˜Ü¾wÿ؉_^¾~ R½dT¢åK¾E^§¥¥ÕΟ7þ…ã>ÿŒð—ð÷ Eu]W_ïÛ¿?ò—€f(ì;T:@pö÷ (áóW¯BÂÃQS'¦3e4—6£Œ¶$M¤ù!ùh€šÄ†Š2m¯)Ê·¹‰HèX/“F£ 4084täˆá‰II`€*Iy9ö~œ™Í(+/+/‰ÄÎ ßu¨ íJ3Qî˶v3µ°0Ÿ=kæÕk×ÿº}§—‹ó€~ý>3Fæ1E&zñê5¹’D¯!s+7Pn*•JRrËXQYild¤©ù¾ =ml¢cã䘠=ÁÕk×ûûôsuqô&'WÏææ4Ü=x /Z’×ÛË“ø¯®¾ÌÌz Gžnan~õÚuàp¹¿œùÛO®‡iŒBÒˆpâ+…·žÉÞÄbq~a¡nlllhhåLftL ÇŸ?gvfv¶H$rrpˆˆŠR”Z©®®îîæú7ùö•UUMMMÒ«:sß>ÂìÛG"‘äÀ»NÀÔÉ_‡DÇÄ„„…€¥¥NˆŽ–.¼[1ajl,].m»uS XüÍ™ó¿geçdeçüöûw÷}»v¢v‹©ß.ZˆzÀãñ×mÞœž‘ïæÚ«s’ ÅHâÈXCÉzç.\|þêµô×J ÅÞÞµ·ŠÊJ:îáþö#W´ ºëë×74„„…/_ò-òUõ uuuÝõõ Hêôéó—0èÝô$QŽÊ—îÜPYU…j¸ÔrtFY¹\ÍeÚ­´¶Šš:Ióc±ÙÕ55ÚÚÚ=LMÉm¨(Óë·n)jŠ$Ö#o~$tø+ˆa~C7oÛÑÜÜîÛ߇XÝ€’,Y´PCSC:>zR¨íwg…!y555‰D"‰PÃ"’…Buuu¢OMÀáp/[A£Ñ&Oœ0qÜ8{;ÛÛ¶w: t«LAº\š2ѾY0êä/bbã’SS¯^»~÷ÁÃßÏœ–^&×DÊ(Ù%´[r˨®®Îð¥C¤'};Ä£'OkjkصÝêêè@)ƒÙ¤c:ö3ÇwwsuíÕ Ím˜š˜ÿމ€ÁææåK${{{ …‚¾š3kfß>o¿‘-++oáp¼<< ¬¼ ˆ nݽ§­­=eÒÄ’ÒR555´˜¥¸¤”Çã¡QôhŽ‹öò•‡»{oOÏËü ލ,7¯œ¼<‰DbogK¼¶¾{09¤ed€Ô°Xccc~A¡ŠŠ ú¾MÆ8¥Œ2.—«§«‹V–9;9¹º¸ddeýöûïð®ëSþîË Â2±qñ0 ¿Ç#ÊuýæmEÚ–3™Þ}ûÜæ—˜ø&)9$,<5-íUPàä‰AªOÈïÖMÍÐÀÐ+‰ÍIþ|ÌB1’Üe¬¡d½\¸rõñ³çÝõõ'Žçê⢡¡±|õ ss4‡…Þìí‰w¨€}lZ·vÖ¼,+(4t´¿?ü} ’¤N;ÌÍß¶+.—‹–†8ÚÛ+_:6»ñë7`ÒøqÄ·¡á‘Q…EE¨—ÙVséú•ÑVQS77롨ù%¥¤Â;GHbC’LIš"‰õÈ› v™½==5µ´BÂÃ#¢¢×¯yÿE¹•¥%Ðétô˜€ÔôôÄ7IÄ­\ÐÂDQIqÛïy¥A‹222³ú¼[ò›‘•¥A§Z˜›q¹ÜR©ßoܨ®©¹xö ±¾ŽÃá—Ž$ ò„Ÿ@ 9¹y±ññsfÍ;zÔØÑ£JJK,^’–žÑßçýB/¹&òñöF;!|l%Ó22;Z`an^WWϬ¨@cqž™IžD.<ïÏ 4ˆ˜:uwsUUUmnn9wñRÀâoР_kkë¯gχEDÐéôµ«VÁ»XII)J•›—w÷ÁC•±£F¢Î.ꥡpÅb1jí9¹y'NÿJ£Ñn\¹ *4¨ªz»¢êÂå+Ÿ=Ÿ4a|~a¡X,¶µ±A£w£Ö€ŒÿèéS‰D²`ÎlHKÏ'‡RCQ^Ï_½©±VôE©¡¡¾¾>ZiE¬×¿ríºH$²·³USSkk™•0uÊäŒ}YÍÍ-ðnlMEE¤ÆîÂ#£“’´µµè/].ËLŸ3—Ïç_>v´¿ÿh‹Ÿ ¦ªïú …ÕDÁ»Çk'$K+¶pI€Ü8ЬÑn½þù8ìݹí€qüÔiiJ=J‹õ6L[KkìèQwîÝ¿wÿ!r™Ò‘ß]Ë©SôªWQQ‰,pîÂ%>Ÿ>Õ3a’’¥»üÇŸ---îî«¿[AèÆçó —ÙVó6íö}EMýØå6¿·>ÌÑBÃÂÙ,SÅM­’k½™ó(j~ätØeR©T¿Áƒ~¿xI(J/½µ¶²tuq9õÛÙŸöî144¨¬ª:pø(±Š\ôtu£bcÇŽE£Ñ?{^PXD¼0ÊÅÁÞÎÅÙéôÙs~Øc``–žqÿÑã±cFS(”¾½{›õèqüÔé½;¶khh¼ LJNY²haRJJUUµµµD"¹sÿAI)£×û,¤v»YtÔP(­­n$´¶¶^¼rÕ {÷qŸ€´ŒL055‘Ž#×DógÏîÚ"+BG[HêB.ƒ|}õõô=¶gû6mmíWAAññ ZïÆvee¯\ý|̴艄{²X¬…óç!ÚÚÚ3§M½zíú­;wãâ\œ8nRrrSs³¦¦æÞÛÑ,,ú='§¦nÙ±K[K+$<œÏç/^øµµ•ѽ€Þ^žÏ_¾ºqëvMm­ªªj`pˆ@ XúÍ"´÷“—§GFVÖ™ó¿•3™ ‰o´´4gÏœ "±èÒÕ?̃ž66V€ºS‰ÄÃÍ­·—§X,ÎÌÎûÚú:EyÉ|•ñö±âàhnøuP°ªªjFfV\B¡|[ã´ýºcèàAÆÆÆh>Jåéî}í¯›uõõ--œ°ðp …²iÝÚnݺåå"±ŒŽŽvmmÝ‘ŸOôrq.(*ŠOHÔÖÖö2„PÀ¬Gé1y@ ¹ÑÈV'$†„Š)Š#ÏJÕ _ €;÷ïÇ'Z&&%!WÚØÔ˜Lž IDAT›—çèàû÷™<øûCÿ‹ ãïÞ››•ãâì$ýÊBR§½==óòóOŸ=›“—WRRšœš ï܃’¥c”•=|ò„B¡|û´Ñ»>˜m«¹tý.˜;GZ[EMýæí;ŠšŸtr’dJÒI¬GÒüÈé̶ìÃýüXlöÀý¥÷ိ›6‚™óæOŸ=wö‚…úzz+—/#‘3{挘ظé³çΘ;ÿþÃG“•XC»~Íê¦ææé³çNž>såÚu½\œÑŽ4móúu……“¦Í˜#CC4?š—_˜ô~ý­µêͼý’uþœÙPPXÈårÑ’¼¤Ÿð÷§íØÑ£´µ´*«ª.^¹ú&9õÚä‡XûC„P©T´2œJ¡ØÛÙÀ¤ ãûôö …Ož= ÓÔÔܸöûú€t¹H´]8•JMMO¿qëv|B¢­íχ ™$¤€Ãß»˜ ¦ª QÑä6W$YZ1¹q¨4ªóôp·íiÃápímmW­[ßÀb]9ý º¼tÒH›QF[EM]nók ‰ I2%iŠ$t®ùu±ËÄ`þó$%§„EFÞø¨Oo¯#?íÿ§ÕÁü/ò20pÿÁÃ:::K/¢Ñh=ÉÈÊ=Òóúuÿ´jÿqðá_LÇ8rüD9“©¢¢"½÷)ó)ÞÞ«W,ÿgµú_»L ¦cLš0^MMÍÇ»oÛ×1˜Oƒ~öÔÉØø„òòrUUUg'Ge&Â0˜Å`0 F):³bƒÁ`0˜ÿA°ËÄ`0 F)°ËÄ`0 F)°ËÄ`0 F)°ËÄ`0 F)h+¿[~âäé]»v5Ô×]C«m¤»÷ܺ{/4<¢í•J³¶²ÜPÒ>ËôYÎdv4S¹¹ (¤õïÉ]«óéQÊs|1qÂ' ë¯¿]ÚÓÆzëÆ S«EY9ÓÅÙéCöÏÉÍår[»P¥ÿ*n¨ÄÔ]›©’ÒÞ¾ÙUçÆt¡(ø»þ]"¹kÕÃ`>=]¹ûONn^`HˆH$êëå5Pê¬ðšÚÚç/_ÕÔÖš™šŽ5’dSàÎIàp8Á¡a#G ŒŽIMKÓÔÔå?‚8—‘ >!±„QÊb±ž<{>b˜N/.) m`±,ÌÍ?=ŠØ’;08¤—³3‹Í~ñúõ‚¹sˆM„£¢c˜|>ÿɳçcFì’Rç…„´¶òìFûû›°+Ò-84ÌÉÑ¡¶¶.4<\MMmÜØ±ææf¯ƒ‚Ó32õôt'ŽûÜÀÀ@™8HZFVVl\<‹Í640áçGìŽ$ðx¼—¯ùA/ÏA¾ïOZOJN‰Œ‰‘ˆÅ¾úË-T‡ %W 2[Ë5ZÛZ#©%3%‘Ð…FHIM377Cç9‹Åâ°ð¬ìl •êéî&mviå.-ªCikRýÓÒ3ÌÍÍò UTh>ÞÞDˆ¨hõnݼûöQ¦Á+SÒ†††¨˜X7×^2'Ï`0ÿ”šË”æÁ£Çúzz2çŠÝ¾w¿±±ñáã'ÆFF¥¥ŒkÝÔ×Ósvr€ìœœe«Ö0++´µ´Â"£nݽçݧ·A÷î2b;!á¯ÛwÜÝ\{¹8W×Ô¬Û¼¥¸¤äéóZZš‰IÉݾãÚËEfÊäåëÀäÔ´––.·u€O¿Ä¤¤ï7lb±ÙtºzpHèƒG‡ ¢¥© ·mãp¹'N®««3j¤æ»?{žž™ÙÂár8œ¡ƒÝôøKºaËVP¨¢B»ûàabRÒè‘þ %2:Z‘n›·ïÈÌÎ 122ŒˆŠ¾ÿèafVΛäd}}½ç¯^‡†Mš0~ËŽ]íÆ¡R©Ÿ>Û¾{E½[·øÄ7Þøk€RróöõõõW¯ÝèÞ½{YyùŸ7þÒÑÑqqv€·nÿxð@À‹%×oÞª¬ªjiáÈ춪¼¡é #AÚe*2šL­1 EU d¦ùŠ$t­–~·ÊØÈÐÉÑQ"‘lݹûÞÇÝõõëëþ¸~ƒÏç£3À¥!ÉÕ¶“D®IŸ<!­ÿŠ5k ‹ŠÎ_º<ýË)脊¦ææå+WÛÙÙQ©e¼2%Í/(ܾg¯••¥ Þóï£Ëz™EE—ΞA¯–ë6m ˆ˜4a¼D"Ù舗‡ûîíÛTTTZ[[×nÚ|äø‰3'Ot¹„¢â’ ¿ÑÕÕáñø¶lýå×ß.üö«ô(Ð×óæ6°XåLæþ½»Á‰Ógôݱe3•Je³V­úýÒå-֣ȯƒŽ>(³mcÀ·ßÔ7Ôs¹­?ìÚñá:s8œ#ÇOLœ0~Õòe_Pøíòѱ±>ÞÞäºÕÔÔœ=õ‹ššZaQñ¢¥|ÿôñc ÅÇÛ{Çž½••Êı07¿}ïþøÏÆ®]½ „Báì¯EFGǵ‡†G\<÷zêmغ-4 Qk‰dݦ-Šª@™LI*±Ë@À(+‹‰‹;ôã>thöùK—_-^øµt%sG(cE&•[#G ¿~óÖ›¤ä~Þ} ,<®Z»^ÉŸy»%íics`ß^ÜÅÄü+é²Lü‡ #†bìlmÑ)ðè4»¹³¿B½uuõ™Ó¦æäæ555u¹„©“¿ÐÕÕ€nÝÔæÏ™]\RRXT¤HÛ¬ìœêêêy³g£—e]]É&„EDF óSf›ãÑ9.!‘ÃáÌ™5ÝÚÛÙ®_³ÚÀÀ ]݆Œ÷F‡ú†Þ Ðmk+OÉ8?:°" É鉷á~~D/Áþ]Ñ¢ccÅbñ¢óP¸mO›á~CÛµ’"Cµ«C[ ݵF^ÊdJ"¡Ë@@¥P =3S À7 æß¸zY&N‡rWÆ ä&•Á¶gOkëðptê;`@MM­ò?óvKª¥¥éãímll¬(-óÒe½Lc#öhuÜþƒ‡‰ƒFy|Ô7°´µµ?P‚LL›÷“—¶¶= ¢²ÊÎVþÁ¡•• ÅÊòýŠkk+_ßЀÎ612RXÔÐYºÔèXvéÁ«ÏÆŒ€¯^“ë&Ó¥ÛÃP&•J}øøqfv6£¬¼¬¼L$·[´ŠÊJc##MÍ÷g—÷´±‰ŽkS¹ÒÚÕ¡-ŠŒ† j¼ ”É”DB—ÀÂÂ|ö¬™W¯]ÿëö^.ÎúõûlÌ™“â;”»2!7i[Fvóî½ïW~ÇnlLNIýqÏîýÌ•/)ó/¤Ë\&…*§ÃJ£Q`É¢…š;8^î³ã%B™k”V.jjj‰D$“d(‰P($Q¦kuVWW‹å<¬ÛÕ­Kàp8‹—­ Ñh“'N˜8nœ½íÆmÛ¥#È-šºº:_À—A½„v‘+­]ä* ×h2¹T’™’HèZ#ÈðÍ‚ùS'—œšzõÚõ»þ~æ´†Æ{:”»2!7i[F vþÒ夔”ÒRF÷îú>Þ}#¢¢ '‘ÓnI1˜!÷¼L+K+ Óé^($5==ñMqÛ…Ò22줤¥€¥¹Âoç-ÌÍ #3«Oo/’‘•¥A§¶ÓèB-Ì͸\n)ƒaei‰B¾ß¸ÉÇÛ-‚øHº¤edV×Ô\<{†XZÌápÚMean^WWϬ¨ –V¥gf~Jmæ´©ÒÑHª 6>A™LI$t­¤ÉÉÍ‹Ÿ3kæØÑ£ÆŽURZº`ñ’´ôŒþ>ý¤,ЙÜI‹£”I z˜šºº¸„†G5ŠB¡tâg®LI1˜!wÆ„;÷¤gd@I)ãÜ…‹½½<‰O&Úâ`oçâìtú칺º:HKϸÿèñØ1£•ùhL$u‰Î}{÷6ëÑãø©Óè‘ý200)9ÅÅÉéCtSmm¨ªª‰DrûÞý’RF»½¥A¾¾úzzkll”H$/ããEn×PíêÐV‚"£ÉD#©%3%‘еF¦µµõâ•«Ï^¼D·i™`jj"§C¹+cr“ÊÕßİ ÐÌììÏF"Þ‰’2ÊÊöü¸?!ñM»…Â`>=·— [7mØ´mÇÌyó»ëë×Õ×»89­\¾ìcHð2x͆tuõ¦æfS“ï¿ûŽ\ìú5«7mß9}ö\›íÝ·2[˜š˜\½µhiÀÉcG?Pg¶yýºm»wOš6CKK«‘Íž3k¦§‡{§uëÎNŽƒúnÙ¹ËÒ‚Íf;994ðé‹çæf=¾œü…¢Tݺ©mXûýž÷Ož>SN§R)sguï᣶1•1¹Ò4èt”„Äh2(ªå3U$¡k §‡ûçcÇþùø¹‹ ¥…³pþ<™Ï•Ï]Iƒ˜T‘þÃýüN9ëîæfnfF.¼%e±ØÁ¡aîn®Ä óï’Ÿ›aïè*‘H ò2@ßÀ´Ëó‰Diõõ f=L•Y†ÚQ åL术9yB__/#3KSSÃËí%G ¤¤¥±Ùl s 'Ge4 …q ‰"‘hà€þĶЙ€Ë妤¥ {[»=Þ¿ºu‚Œ¬¬ªªjk+K;[[‡—`okGÒ;G457'§¤J$b/b”7”"H$(2š $U d¦$ºÐ,‹N×èÖím‹-)e””–¨¨¨:9Ø+Z¹ª(wQÊD®I¥õojj"‘L.üCJŠÁü«ø.ócC¸ÌçZ0 ƒÁ‡a0 £ÿ—©££³pþúúݾ÷G/çž?Ïd*ÆÅ'Üùãþï§NŸ¯¬¼|çÞý“'Nèá䘟_pöâ¥#ÇO8÷pRUUåñy¹¹¹ç/®^¾ÜÀ@ÿÙs/oŸ¹‹–èèh=x ƒb‡‹—¯¾óþ0lð`´þí0Šà×é¿èhëx½~½pþQPXpñŒ‡Äõ½?úœ:sιG)“~…z>¹pùJg-ÍÁƒµX—`à±§ÌLMÖ¯^¥¦ªüâ嫺úº#öK³ýÆí;=¶·³›2é'ƒñäùóßO¦h¬=edf.^0¿»µUiYÙ•ë7÷8øàέæži±!¨-¥8J-¹¹&-º…⯄Á`þáÈ2;ih Ž;6?:ÄuÐÃÇžõõõÊÊÊÐ4*»nÕJržÈÏŸ•••îÙNNYÙÙ‘Ÿ>“óäåç/œ7wÖŒébò‰ÐòË”ŸÉéÁ¡¡ƒú·zT¶´´tùÒ%èÂÊ¢šÅ:érVv޽-ÔÖÕÛ¶µ—sOظn_@_ 8zè òÀò¥KVoؘ•“ƒBæ0ŠÀÞÖ6//z:9™™š D.—KÜ’ZYXTTV^¹~#7/-ê{ùú …s§N"m{öèØ±ãµ›·>úú¹.&_ \¹~£KÝÃöÉÉÉ€“ƒý¯ó¼zóŠºD"ÑÕ·TT”O;Šna8Ž÷GŸ¸ø;[›æ¶³X5>ö4408~øzöÜÛ¹çÂeËsóò@µµµÉ©©£GŽüõ—iDâ#ϧ……Í=CÝÔ–R¥–,¦‰,n¡þ+a0˜2í3û`ˆë G¼àAŒÊ’ólß¼éÕSOâ²Z TVUó¾¶G§Ñ&ÿ4QL8 -®ˆ…÷éË×~.}Û ð(RüÐÕÑŸ‡vååäzöpú¶-/¯ÞQÝÂÜŒ8ÍuªþAFɦüb[G[x<>°Ùìèè×m`¸±—Ð\NrjjEeåX77'€Édnß´q´ÛÈë*((,,*9|8yÈ÷çŸ&@äç¿®ȶ‰Šâñù?OšHÌÕ’““›4a¼43•””äåå㈘:rذkÏ[˜KXHœº!¨-¥>*KÈè ó/¥}ÿêflldhè8jäð rrpPWWCOÔJKKCÂÃ3³² ‹Š223Y¬±™®*ªªb£¬Ÿ"ù|vçÎá‘‘EEÅ]ºüõhêóׯ¦&&ä±_QTTTUU•vT¡C:ý»+ ¦"ÕÀoûÕ"jjjL)Ñ……B‘(:&vÃÖmät:VYYÕ<aaè“Ñíu‹u¡w*Ð4´[T\B¤mGOŽMŒ»‘‹I” cñüy¯^›»hI7cc;—¾½{ô › Ami‹~h±‰ dt ƒù—Ònëeqt÷þƒššš†ÆÆ¤ä”õkV‹exøØóꛊ:ØÛÙY˜›qs  'çiþ¼M îÙ±­S§N«Öm8uîܱC‰CA!¡ƒú÷#vi4µ†4 I«¥Í´»Q-B¡<šPª£­mfbJN731‹4§ƒB‡6Ô%‰@þûè%''G£ÑÈóZÉÐä)9ùïŠ(ÈS=Ì›úóäÞ½œ?øú}Šzýî×ë×ÝŒ?|H³S'±œÔ Am)õQYš˜@F·`0˜)í2oݽÊa³étúÀ~ýÈGkëê®Þ¸iÒÍøäÑ#ÄÞ×èèźôé=°7fôË×o|üü‡  B¡0,2ÔuPttLRrÊàAÅuÑí¢  RT\,‰ ‹Š>’ž‘)àókkeúXšŠŠòŠeK«ªª®Ü¸A¡¡ûw#«­­=~ÜØÌ¬ìµ7ùåäæedf¾y÷~Õú 555 çΕö ¬Í´»QÍA¡‹â+bÌš1½¨¨xÏÁCyùùl'"òÓ‰ÓÚÚÚýúöižYUUuì˜Ññ ‰¯\«®®®ªª:ùJvNz M ƒÁ˜öóä⒒ߎ/)-es8o½½y>éfl,±.ÐÕÑ4 l\Üé³çŠKJÊÊËÏ_ºœ$ýÿ¦&Ýäåäîÿù(*&†Íá”–•»xY ØÛÚŠy¦Å† ¶”â¨,MLÖ¤ nÁ`0ÿ"Ú3Š ìzíÖmƒ!Ì C…UËÝ=Îÿuî|ƒ!öï·dá‚+×oL9ëÊùsb3&$2t°ëû_½yë6bxpHèÑCÄ2¬r_ÆTT|òüžC¿‰**ÊkW®hq¤± ´»Q6ÖÖbGŒ `Ó¶í&&Ý®^8ߢ´Ñn#‹KJî=xÚô°M__oßÎŠŠŠó»/^TQQùèÉ“GOž‹4€ IDAT ”ý\¦OÒbE0cÚÔ²²2¯×oÐGÆÀØÈèÐÞ=O@7®][UÍzñêõ‹W¯€Édîݹ}Û®=3+++oÙ¸þè‰Së7oE)tm´ÛÈI'@3Ï´ØÔ–J;J§Ó[”,¦IÜ‚Á`þ-ÐÒSÌ,lD"QFZ"hh¶böfk)**Žoä6Úv·1éf, ‚‚ÙlöÐÁ®ÒffJ¤±‘2|è‰GkjjbââËÊËé4Z×®]ìì:t:ÃåïÓ^FI#>!1-#½k—®}z9ËX¤´´ôktL#—«¯×ÕÑ޾œujZZrjªH–æä²Ÿ_€Ì740¥.‘HŸ™•Åd2ûôrnñÝÄÚÚÚèØ¸ŠŠ 555+K‹®]º‡Ä<#KCP[*íh‹’›·QkÝ‚Á`þüGC&ƒÁ`0ÿ^ðB  ƒÁÈ™ ƒÁÈ™ ƒÁÈ™ ƒÁÈ™ ƒÁÈ™ ƒÁÈ™ ƒÁÈ™ ƒÁÈ™ ƒÁÈ„¬!óþŸnݽ'ñб“§¾DE¡í“gÎF|¢Z}þ£¯ßþß¿c'O=xô¸šÅj•ÒÔ|‰Š:qÚƒZÏÿpy<ÞÍ;wwï?ÀbÕü‡U:sþbXD„ÄCí¥IUUÕþß—|¿ø—, üÚ¦ü·Ñb²°r݆ø„ÄÖÖõ¿MÛ<‰ÁÈ2£cc¥ýÃC ÑvphX^~>…œ´ôŒ PFUUÕwþ¸?{ÁÂü‚‚VéMAAaa`H(µž?ÏgÏÿxøgkKýwu–Ùç^/>ö444”——k­Jmp¹HhxxnžäÕ^Îas8~µµuR( ÒÌÿO¶ìŒiS<~üw$ü3ãÊ?S+Ìÿ6í°’‰—磗W$Ó¡C‡[6»……‹—¯¼u÷[7S”úû´V϶‘’šÊá4´—´ÿŒÎ!’_Phme¹hÞÜ6¨Ô‡ÈXä?ãœû·oþZ¤ÙòŸlÙ~}û^½q+7/O–¥u0 í2cbãôôºjwîL¤ÄÆÅ³jjÈK€ùjwÖînmÕ¼¸^×®ÖV–YÙYh7;'Ç×? ªºZ_OoôÈjjß–ªö ´´0ollôþèÃåñz8:ôwq!„DEÇ„„‡‹„Bé«’õ”&M(ú%%'Óèt;[reååï¼?”•—wÕÕu1\CC¥ûøùw·²ªf±ÞühafVXTÄår_¿}ç6b¸œœœ´Rí¨36›í8|è°ðظ8eeåÆ$º·¹Õ¡aá„!9y¹ÕÕկ߾:Ø59%©”““˜”<|è¢êŽŽ]ºüõe²äií+­JLIMóñ÷=û¹ômîІ#CQ»H$òõˆ‹SRR6d°©‰ J 6244éfLÝ =#Ó×ß¿¡¡ÑÜÜtä°a £¹ù[VFåÛ F›öóä‡=7¯_×ü(ŸÏ÷zõÚÇß¿°¨¸®®N]MÍÎÖv¸1N iÓïýw‹„Š~òâEl\\cC£ŽŽÎàAçÌüU^^-)-½yçîç/_kjj gNÿeˆë ¢,õQ É-jsëν”´4°´°X0g¶ƒ=^âÓ0V¯Zqæì…½{÷VU–SIEb¾¾¾|>Œ›[óCËV­Ñî¬eiaz>±³µáp8ÇNœœ4q":™–––®Z¿±oŸÞ†Ÿ¿|MKOÿõ—iDq¡PxçûšF¶~óÖj‹ÉTôóxñòÕàAU”•`ۮݕ••wï?ìÔ©S~AÁÿTSS³¶²€‡=;ö;Ç E=..)©¯gϘ6•BO‰Ò¬,-vìÙ÷ÌË«“†FeeÕ½¹\nO''HNIY¾f]aq‘ªŠJ`Hèã§Ïœ{8ivê[vîds8gÎ_¨¨¨àñyYÙÙõl›Í4 zF†´Rí¥3òAiYÙÆmÛ³srÞ¼{¯¢¢ü%*úOÏ'6Ý­ÑšYÝ«¬¤ÔÜê¢â’øÄDdHCCC|bb}}=‡Óзw¯µ›¶ •rr{þVSSãÜ£xœ¿ö47550ÐGnWSS³íÞºøúlÞ¾ƒÇçËÉ1ž¾ðú5rø°×ïÞ“m!‡ÌÖ*˜7{–؆Œt36¾pùê×AJͤ;pø(_À_<þÜY3g͘>°?:þØóé˜Qn¨¢y³gݾ÷‡ßû·h[¬øþÃGFé¾dñÂysû»ô üü¥¿K_()-]½~£KïÞ+ݗΙ5ÓÚÊêíû÷ÄúóÔG©%Sk•˜¸sïþÓ¦®[µbʤŸäå?uÚÑÁ¡³–Öß÷$æÿ9í¹Ä4ÁÀþýN=>rø0øè篪ªÚ·w/tT DÇÆ¢íººú·ÞÞEEų¦Oçñxg.\ÐÏe÷ömt:Ūq_³æú­ÛÛ7oB™‚‚o^½ŒÎP›wì  ž¾ÇYYZÀ¡£Ç8œ†ƒ{wS”jG'OœÐ<[VvÎË—ÔÕÕ¹›·ï8wñòËù|¾D÷Κ1½¹ÕïÞ®¬ªD†§SPXxøÀ>r-ª**›Ö­Ý¾{ëÀuõõÞ>^8ã.’Ü—,"ä´Ø¾Í‹ ”Œ¬¬[W.¡û¹[·‹-ž—Ÿ/±áÈyZ¬½²ºêæ•Kªªªßœvérï^Îä GÑ l6û„Ç™ ãÇ­Y±Ò32—¬XÑÜ–æÈ¢üßGNNn¸±žÏž/]¸@ìPXDøã?ª¢]}==}=½q£GÉ(ùâ™ÓÄv]Ý•îËfÌ™·iÝZ¸yçîØÑ£¦7]v·¶Ú³c;‘™ú(µdjþxøh£ÝF¢Ý±£G±Ùì{Ú+y1s Fv~ÈK&ªªª=‚‚ЮŸßÐÁ®ÄÙ§¡¡aݦ-è·kßþ¤ä”¥ Œå–”œRZZ:gæL:êêj“Æ &ÄquEÑÌLL ,"B(.œ7¥›t3&íPÐ\F€øÄD‹æÍ}x÷6¤gdææåÍžù+2AQQqúÔ))©iµµµ¨øÐÁ®(^’¡(ÕŽ:KÌ6eÒOêêjСƒÂÜY3³sr2³²¤¹WšÕ²Ð§—óh·‘GŽŸ8~ÊcîìYf¦&™[l_i <˜ÿ4•dµ,&´Xû´É“QØ@N+*.ÎÈÌ"K hÐÈÏ_Ølö¬ÓQN3S“MëÖjjj¶hšŒÊ· ÆŽñõóg³Ùbéf¦fû‰ˆüT['y"‘è¹×K÷ÕkÇü4yˆÛè!n£'ü<•¨âÓç/ÒÖoñ(µdj’’ž À€þý“d³ ƒ¡â‡ÜeÀàAƒNž9ËæpŠ‹K2³²7®ýëÚPIIéÏ»wÐ6ƒAg6Óh4C}"§‘‘ac#·²ªª“†hwÖ‚fkwî¬LÜëflÙ¢†Í¥éëëÍœ1ýîýz>énmÕ·W¯Ñnn**ÊhfãácÇÑÙ¹PYUN²:¤ç¸¥ÚQg‰ÿõðÒĤ—Ô××Kt¯’²’D«e©–/]2cÎ<55Uò`»DZl_i´hµ´†“±v´K~⋜V\RbiaN$R4haQ‘²²2q5Ä-N‹È¢¼ŒgŠ=Ûee塃]½^½žþýøÿÞۯ߾}ô䩪ª*mmí.º:ŽööÓ~ž¬¤¤ÔbWnÜŒüôyñ‚yVêêê4Ë废ˆŽ²jj´¤_7P¥–LM]]XÒìÔ© Ls~TÈЯßI3aáá™YÙúúäGn4MâAAAA$ â~”ÏãŸÏÿV.ážXQQ‘Ëã’SÐÕz‹H”¶hÞÜ)“~ ˆŒŽ½{ÿÁÓ^×/]`0è°tá%åïN"Ä©\¢(ŠRí«ssßÈÛ ½­–¥"ˆŽ‰åp8uµµñ ‰v¶69[l_iÈbµDÈ'ýk'«‰=ö£nP¡PØ¢’mV^Fš‡I1¦Lúiåº S&O"8kiinÙ°róò’’S^¾y—pâÈák|ýöÝSúzzD ùm1u5µòŠ ô½9ÔG©%S£¢¢RYU¥£­M¤TTV¶í*ƒãG}ýGEEÙ¹gOÿÀ ~þè‰f‹ ¿Giü$!)I‰É$?´—Xª¢¢²°¨ˆH‰Olã[Û)©iwþ¸¯¦ª:j䈭7œ=u¢¸¤$.>ÁÐÀ˜L¦£½=úÑéô¨èf³™d(Jµ£Î‰KH ¶cââÀ@O_š{+++%Z-KEÕ,Öï§N/ž?Ïm䈣'N666Rdn[ûÊ‚´†kUíœFº%…´+‡ÃÉÍË#2¯ß²õácÏöR¾½ÐÔÔtrpøàã+ñ¨¢¢¢…¹ùÄñã~ÿí`Â÷Ø:(p¹ÜæEètšò÷¡ÝóÙsbÛ¹g¾~Ò”¡>J-™Z«îVVÁß¿åjcm-­. FvZ2kkkƒCÃÈ¿œÜ\Šüƒ]†„…—••6Tùæf¦ÖV–®\­¨¨€¸ø„ç/_rIýúZŽQ~~ˆ‚†††›wî¾}ïvã@WWÇÈÐÀÆÚúüå+ååP\RrôøIrÀC E©vÔY"Ož¿@_{ÉÉÍ»z㦓£ƒ¾¾ž4÷66r%ZMBÁñSz]ºL™z\ZVÆæp’SS9*ãQjÉÔZýúË´Û÷þxûÞ»šÅªf±Þ¼{çþý_§ÿÒ&‡a0ßъٜܼ]ûö“SfL›º¤Ù<‚..rrrÝ­­È#$ÔlZ·vë®=ÓfÎVSS«f±œ{ö@¯ÏSСƒÂæ ë÷ÿvxÒ´éŠL&N›=ó×g^/e¬‘Œƒ½Ý˜QnÇO{\½yêëÙ æÎ124€[7oݹ{úœ¹44**+­--W¯X.Qˆ®ŽÎƒ€Ç —¹Ÿ=uRZ©vÔY"®¬Û¼…©¨X[W§«£³~Õ*”.ѽL&S¢ÕdC$ÖòæÝûÈÏŸ¯]eò¤Õë6(++×ÖÕéëë­^îÞ¼"i Ê`0¶mÚ¸sß¾‰SQQQ©a±f͘Ž^$ÛÒüÙ•o/Œ ºvÑ ^o]»rÅ›÷xY^Q¡¬¬¤×µëð¡CÆC.å¾d‘ǹ 'N{E"òðïò%‹ï=x¸e箲²2%e%;ûs§NÌY¸ÕÕÑ9sâø­;÷–­ZS[[kh ?sút¢,õQjÉÔZÙÙÚìÙ¹ýÖÝ{çÏ€…¹ùþ]»ð]&¦] ¥§&˜Y؈D¢Œ´DÐÐÔm±ŒÕÕÕL¦R‡ béuuõS~ýuÍŠ²O…Çb±ôõôÉ“/¨©­«‹Ž‰‰„ŽööÍߎ§ÖSŒœÜ¼œÜ99yKs3ò¤G@—PYYÕµ‹nóù±|>?òó@ЯoƒAQªu&((,œ5ᥳg44:&$&)++9ÚÛ“_üæÞæV‹Òf•ÄäÈÒ¾ÒªCLi G†ºö¢¢âäÔTUUG{{âißôÙs'MœðË”ŸÑ.Eƒr8œ˜¸8gfbJ|ÏAF7Ê¢|{Ÿxùúõ³'OüÐZ0˜ÿIÚ!dJãÑ“'7nß}úð~&2`Ú2e¿ÚÀP ‰&ý2}æ/¿Lýyò[ óßç‡Ì˜-.)Y·iKIiéì_gàx‰ù—’–ž~òÌ9«}} ƒÁ`~HÈÔèØqúÔ):i èׯåܘöCMMmÁÜ9ZZ?vdïÿ ªªªC]­t_Šƒa0ĘÅ`0 æ‰õ^&ƒÁ`0ÿcà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLà‰Á`0ŒLÈÉ’)9™qú4“ØÝ¶ÍáÐp NÁ)ÿORŒŒ„€Á`hé© f6"‘(#-44u›g Ÿ}ø@FÒhllܹwÿ¼Ù³æÎš‰R$ú¼ Vc0˜¬³©ié!aá ƒÁ`Ðhôü‚ÂÓçÎ/\æ^\RBä )(,l/Í<Ÿ=ÿãáŸí(ù¹×ˇ= ååÿÿ^݆„¶¶”½­íð¡CÐOYYìíˆ%&³E ­å™—×ÃGâ“ÚP69%åÅËW£ÝF¢[L6›½fæ°ˆ&“9f”Û¢ys'Ž«¦¦–˜¸rÝâîù£¯/‡ÃqrpøiÂxò6!6($ÔÎÖF]]MFÒ°²´Ø¿ÿæ´Á: ó_¤ÁCYYyÇ–ÍÄnn^Þ†­Ûö:|ÁãF/ÏGh£]HIMåpÐv»HÎ/(´¶²\4oîßVíuuuPSSSWSCðÓ„ñDð˜¿dY}}ý”I“ôs!d±j²srTT”Œ Jlll …L&³¨¸¸´´¬k×.µ´Ð¡††‘HÄl ·<Ïç+((0ŒÆF®@ @‰\.WAAÊÊËó T”UÌLM¨;ÃGž"‘hÒ„ h÷Ê›¹yy:ÚÚ§ÓÕÑùfÅœ9¶nËÈÌ}¶vÕJi>Ç`0ÿ@Ú~¿eh`°Ê}Ùž‡¢cc &6NO¯«vçÎàãçßÝʪšÅzÿñã¼Ù³:ª«—•—¿óþPV^ÞUW×mÄp BTzF¦¯¿CC£¹¹éÈaà FhXxaQ—Ë}ýöÛˆáqñ zz]Ó32å佉‚Á¡aŠ:8÷ìA!ñé󗜼Üêêê×oß ìÊd2³sr|ýªª«õõôFAœ§škN–Ó\U”.Mš_@ ¥…yyyE@P‚‚ÂØQ£ôôº~ôõ‹OHìØQ}ÂØ1ššš²äAÒ’’""?U³XZššC]]õõõȵ466zôáòx=ú»üÏ¢¢cBÂÃEB¡Kß>d[ªªªBÃ#lmº‰44455-ÍÍ,ÌÍÀÒ¼åçsB¡ð•«Ï^x …BÐÑÖÞ´~-EŸ»hIIi©KŸ>h “F£M?nÍŠå0é— ï_¾@ñô¹óo޽߲aý¨‘#ÖmÞœ”œGŽŸðñ÷ß¿kç‘ã'‚‚QuÚÚÚ;¶l²·µ•¨LEEEph¨…¹¹I7chhhxûÞ6¬YM„7PWWÛµmËü%ËÂ""ŠŠŠO;‡ž;xœ¿àqþÊãqþ‚·˜ €ýûÉ(pÝæ-Ò G{{]÷}–-^¤¨¨ØŸc0˜ÿ kÆl¿¾}åå壢cÐîÞC¿…GF¢íK×®=yñbí¦Íá‘</9%eÞâ¥Þ>>uuuÏ^¾š»xiZz:Êéë°tÅʨ˜Øªêª³.mغM(ÆÄÅ—–•UTV‡†ñù|$9>!áà‘cèþjëêöú-;7—B8A|bbQqI5‹ÖØØ¶È}EPHhmmí#Ï'ó—,+)-•¨9YˆDU€BÚåk×O=wòÌYŸïè¾fÍ®}ž¾ðŠ„Ï¼^®Ù¸Y È’^½y»ríú˜¸ø††?ÿËÜÓÒ3ˆZüùhûî½5µµÙ99;÷îú zøØsý–­1±±EÅ%»÷|õæ-aN~AáñÓ_££Å|5sú´Ñnnv¶6?MoanÖb7¸qûΓgÏååå `ia^RZºmçîœÜ\"CXDD—áC‡Ðh´ç^/?ýJ-ÐÎÆVKKÌÍL­--Ÿ>¬¤¤4°#CÃÒÒÒm»öTTVJ,ûéËW¡PØÓÉí&¥¤p¹ÜŽê꽜{Šå424DÁ):.ÖÚÒ=45éÖ ˆm;›o98$ÔÒÂ\»sgRN£ÑœÐí,´Þç æ¿Âßzª'''§£­M„1>øøz?fei)‰6nÝîho·o×N99¹††† [·ð8séì6›}ÂãÌ„¦ ðôŒÌ%+V†ED¸/YTYUÉá4Ü»›8|èŠFg«À `”¸fÃ&‰ÂÉÊÌŸ3»ªºº °ðð}<ïÌ…Kú¹ìÞ¾N§³X5îkÖ\¿u{ûæMbš“%HSµ·³3µ´²²²+çÏ)((dfe/\æÎåqÑPvogçÝûË’G_OÏóÙóq£G¡™;|>æü…!aaæf¦¨–€ à›W/kvê›wì  ž`e!ùB­sg- &ÉÉÉýüÓOpöÂÅØøx"[n^ÞÃG`øÐ!Ú’Â""ø|þÀþýÛK iØYú…ƒùÒŠÉãqƒCÂCÂBB_¼|µbíú/QQ›Ö­íСuA#Ckëó—¯ ©Å%%GŸDçñžNN]»tñ8oŸ¨èë¦çˆÄäX2ÆöõHLN=rµpi˜›™Z[Y^¸rµ¢¢ââž¿|5Êm$õÛ~ÒTm›´Ö¢¦ª %%¥ ‰<Ÿ=ÏÉÍkñ–±¿‹‹FÇŽÇNžª©©‰DÞ>>Ÿ>}&Žæåçïÿíðç/-Ì_¥FCCcø!<oÍÆM'<ÎìÚ·ÿ¹×K:>vÔ(ê‚zzz°çÀÁ[wï­Z·¾šÅ"¥ÓèŸØ§—3ŸÏ_¹n½Çù k7m‰üü¹C‡ãÇŽ‘(½|’˜”L¤Ìš1ÝÞή®®~íÆÍk6n>vòÔæ;.[^T\ldh°ªéñ°4‚BBµ;w& ïo D ·h¤½*ƒÁ`þ™´b`¶®®~×¾ýh[‰É´¶²:y숌ÿù[7oݹ{úœ¹44**+­--W¯X cÛ¦;÷í›8õ•kÖŒéöv «£ó àñÂeîgO$‹âêzþÒ;[[â#mÒ„S°iÝÚ­»öL›9[MM­šÅrîÙ£ÅOP¨Úi­ÅÊÒb@?—í{öèë³X,KK‹ýû½yÿN¯k—Ÿ'ý$­T‡ ›7¬ßÿÛáIÓ¦+2™t:möÌ_Ÿy½DG««Y~v¶6Î=©æ¯¶ÈšU+Xµ5‘ŸÐ,**Ê+—-C¯ERà¾dÑ®}âãåää Èwð¶6ݽ}|üëêë·oÞ´sïþ„ÄÄç^/@UEeÛæ]tu%ŠuîÙƒF£EÅÄ)rrrǼrãÆËW¯cãâbãâ€N£ :dõrwâ©§D¹‘Ÿ?£y³í" *&F^^ÞÉÁ^–Ì æ-=5ÁÌÂF$e¤%€†¦ä3‘,TWW3™Jä¯Î’q ••U]»èŠÍGåp81qq<ÏÌÄ´K—o ðùüÈÏ_A¿¾}jkk)$S —Ç‹‰‹c±Xúzú2~P[šªm–ÖZ’’JJJ LMLØlväçÏf&¦Ä ¤Q[W+ ííÜ—e2³²²srÕÔT­,,e µµµñ‰‰<ÏÖÆ¦ù³Ï„¤¤ââc#CS‘H”’–VPP¨¢¬logK1ê[w펈üt÷Æ54fNÀf³“’Y5,e+KKY¾3ŒdZZ˜KfoƒÀo¦%&®\·ÁmÄð­7ÈXƒÁühωÁüˆ‰[»ióÔÉ“–/]òßÖE2óó÷¿zñB‹÷â æ^/󿆃½ÝÈáÃ^¼z]ZVößÖE™YY~þþS&OÆñƒù×ñÿwMÌÿ0+Ý—ÙÛÚÖÕÕË2yõ?Lc#wÃÚ5Æ ùo+‚Á`Z ˜Å`0 F&ðÀ,ƒÁ`02C&ƒÁ`02C&ƒÁ`02C&ƒÁ`02gÌbþ?Ñ©“ñ¡Úêêê/QÑÅÅÅ ÃÈȰ§“Z‹ _S[ë`o§ª"þõœÜ¼¼ü|cCÃ?(!#…EE™YÙм:T8ÚÛËø±ˆ¶œ£®¦–‘™¥¦¦*ö…¯„¤¤ªªj s³=™Ãá|‰únýs99†®ŽŽ¾~ó5d~Èjªª?¢]3m»[wìØQìPfVVaQ±i·näO¦´;b6›ý5:¬­,É«6µÈßÔ6;''¿ ÐØÈPìó#?´Ò¶!kȼvëvaaáÄqãÐ'âÁÑ'ù|¾û’Åíû!r‚“gÎöwqéÓËùGG;yjØÁ=œÚEÇ»÷àaVvö†5kdÿ"Œ4Μ¿ØË¹‡KŸ>͵¯Úÿ ¾DEùnhZ¼Z"‘hüÏSëëë'ŒëõúµM÷îçN ކ„…íÜ»ïÎV —®]ýöyåmmí=Û·u·¶B»{¬f±ž=zؼ¢»÷ïûøùïܺ¥Í!3'7/#3ÓØÈФ[7xòìùÓ^°÷®ýÿZð@ ìÜ»/¿ ¼<µ­.Y œãëçÿøé3yyùG÷îOèG~?‘_Pàqâwê)fWˆ‹'¾ÐIÆØÈhÏŽmÆFFmÛ*Åo|øèó#Ú9óîkÍCæ•ë7">}>´oï‹ä?J¹}ïþ£'O`ÍŠå?MOQVÌSÛ·ï…„îÙ±:d¶o¥Pœ@d˜ýôù‹_@à‹W¯ÄÒ¿FEðñõ ¬««“Xðï†.âÚÏgÏÿxø'Ú Aën¶ Ͻ^>|ìihh(/߯›x²n¡áá¹y’Ío_µÿ†„¶œ­ °¾¾^^NŽ/à€i}:‘Htãö]s3ÓAúW³Xî«×¾xùJNNÎmÄðEóæNþibGuõÒÒÒ­;wUWW@iYY5‹¥­­ÝQ]º°)©i`iÞöO$>zòäÀá#É)ß~IIK',%g{ýî:/wÑÕ•¶ì߇ì¤ Ç{ñê5‘¡¾¾¾ °N£™›šR‹³« ¤¤¥€^׮ÇA?—>}²srÎ]¼Üf±²+ÖÜЮíÂf³ •””ˆÏe“A5Zš›µJ¦ì­C)EEÅÏ^¼@ÛyÔÅ%öÛ6kÛT¼…ÿQûVJÅ ¤çtMMͰˆÈÆÆFòÒ%~šššh)©©NÚöò|ÔŽ äZ[Yþ/³“u£ }Õþ_}÷ÇÎ檪z:9‡üƒ2³²Ø»öíÏÎɱ²°8¸w·¦¦&Êðë´©KV¬ª¬ªzæõrþœÙDPÌÏ/(-+SQQ673Cn‰D—ÎzÐh4òâùå:ÚÚÍ?/‰22³Œ Ðé•Ãá ÿ¿‘¡ŸÏ§ÓééF††9¹¹äSsccã{÷Ñ—ë-H'ˆæu‰D¢††ƒ!//Ÿž‘Áår»#õÐ!:A|«¹±±Q(***½ˆìœôôoAâÅ«×3§ÿ‚–ƒMMO‰DÄg~E"QvNN5‹¥«£C¨!f*+Í3l6;7?D"CCC%Ò׃QÈ;zÔŒiS‰Ä{^¿u[ì»N²Kn®˜´ÚÉÞ‰D²·‹@ (,*ª¬¬êÔIÃ@ÿ¯•牦‰ %-UG[»°¨H$Y4u'@Àår@AAÁ`xÞ¿ ƒ¢M|>?=#ƒÓÐ`bÜÉTD›ÊbÑúWnÜàñùL&“ÃáïRšk®¦ª*æFB[¢ˆXW§è~¬ššÒÒRUâfQ¢›·]óJ›wŽ'ÑE'V„ÌžŽŽ¡áaƒ "  1lèÓçß®MÊÊËßy(+/磌ë6b¸††øZZ˜766zôáòx=ú»¸Àûmº[wâqñ ½œ{R«‘“ãëPU]­¯§7zäòwÆÓ32}ýýÍÍMG†\™”ù©šÅÒÒÔêêŠÐBà‹Š¸\îë·ïÜF ‹OÐÓëJ 4I«Bš!d>}þ’“—[]]ýúí»¡ƒ]™L¦4i>~þÝ­¬ªY¬÷?Λ=‹¸‰Ó %¦¤¦ùøû ‚žŽŽý\ú¢Ä˜Ø8Bm¡Pè””œL£Óìl›+Fá¢M./¯ RPP;j”ž^×¾~ñ ‰;ªO;FSSS–w>>á¯ß}øðøÙ3jB¹¯ ­­­}äùdþ’e¨aÀ×?`銕Q1±UÕUg/\Ú°u›P(|õæíʵëcââ|üü,sOKÏ€˜¸øÒ²²ŠÊªàÐ0>Ÿ¿÷Ðoá‘‘-V!Í2ñ‰‰EÅ%Õ,VphXcc#…´K×®=yñbí¦Íá‘ä•/Åt€ˆÈO»÷`³Ù™™Y;öî{ñòÛð8¡¶H$Ú±gßñÓåyyù»÷¼zãfsïItQ‹&Ÿ:{î䙳<>ß7 Ð}Íš]û<}á% Ÿy½\³q³@ %Hk jÇ>|ì¹~ËÖ˜ØØ¢â’Ýû¢õÅù…ÇO{|þn†¢sg­É' ìßÏ¥O÷Å‹éôoýüƒon^ÞÂysÀóé3˜?{VóETÐe\]}¤¦¥‡ÃÑ×ÓëçÒ·C‡yùùç.^‚¦øþê%¥¥k7nJNMµ´0w8@AA!$,ìÖ½{H`l|ü¶]{JËÊz:99÷èÁçó/]½ž’šŠž!uìØ±oïÞ6Ý»£ºŒŒ µ45 ¿­ùZ[W÷ðñcG{{:ƒæfu¡³O^~¾‚¼üø±cºèêÖÖÕýéùþŠ@ßNLÙ9¹\.×ØÈˆ˜èDvÒÄÚÒbü˜ÑàÙôÇ$ IIMÛºsWAa¡µu:üü嫚š²]ZšZÒ´½xåêã§Ï”••‡ ¢¯§WWWíÖmTQUUZ×Âì[ÈlläFD~zóî=Lš8žÚç%‹)"­v‰Þh±]223wï?PZVÖ·wïaC†())¥¥§¿óþÐäºtÈÎÉ©ª®îÒE×ÞΖpfl\¼ûš59¹¹Sž|xÿ>%%¥¤””úúztƒEѦŸ¿|Ý{ð7Vuu/çžv¶6<¯²ªJMMMG[›Â·bÖ!.\¾¿NÿŶ»5”––¢@Ò\scCC±~KÖVbW/**¦è~H>º6’æC±¶«TZW¤ö…‹¤@ µ3f»ܵï›ÃA7°~.}z£qZ‘ÿ~ÂÑÞnß®rrr ¶n;áqæÒÙ3|óêetµµyÇ΀ àÉ'´ªjàñxg.\ÐÏe÷ömt:Ūq_³æú­ÛÛ7ob³Ù'<ÎL?nÍŠåž‘¹dÅʰˆÏgÏÇ…f‹ðùü™ó†„…™›™º/YTYUÉá4Ü»[Æ*P† ™?gvUuuAaááûZ”öÁÇ×ãø1±ÕÊšë–‘•uëÊ%t˾qëö€àà‰ãÇ‘‹äåç‡GFþþÛ!´òåµ[·?úø.^0ŸœGš‹z;;S+YVVvåü9…̬ì…Ëܹ<îS4­·³óîýÐÅ`‹yôõô¤µ…cËË+nÞ¹;i„Õ+Ü 3+Û}õEEET¤›±ñÑCŒ›Ýb€¾žÞªåî0nÌh"Q Üþã''G‡¢ââœÜ\ƒá:p@óâµuuÐQ½#4ýå\عu‹œœœ÷GŸÃ¿ÿü5 ¾¿ :tôXm]ݲŋ~™ò3¼óþpôÄɈÈOK.hlä:rL(îܺ}Zvñòé™;ª>,95uÈ AÈÀG©OÀØÈ¨³–Öר('//ÿáŸuuõófϺpå*X˜›ïسWZ](ŠÛÚt?qä°‚‚ÂÛ÷ÞÇNžbÐéÐtâ#nÚRRSÉ»d玚O;öOÏ'é™Ñ±±ŽööMW fB¡ðÀá#<>ù’ÅSž 7nß¹{ÿÁç/_¦Lú‰l×ê %j»pîœWoßÀSº::_£¢wì݇®á iT&L™Fneeåm›6:98Pø\šd;[B±åKÿyª´Ú›y#M–v¹pù —Ë]å¾lòOà䙳/_¿!c!—šš˜Ú·GG[››™•uä÷ã°yýºÑn#Éæ[6]šHlS6‡säø ‘H´w׎AÀò5k“’S,ÌÌø|>…oŬ¿€ÀĤdmí©“'544€P$*(,ìfl,Qs ÑÈý–ÐVZWÏ+ȧè~DgÏgÏ%úÜvb•RwEiÞ£v‘Ä¢uïeötrRTT ‡¦QYb6=3#7/oöÌ_Ñs EEÅéS§¤¤¦ÕÖÖÀWWbʲ™‰ j•Ö’”œRZZ:gæLóÕÕÕ& ‘Ÿ¿°ÙìY3¦«ÂÔdÓºµššš§?ºÒÝ%òx<õ3BŠ*­2¤EiC»Ê²ºç°Áƒ5šî„L%UJ§Ñ­= ‹æÍ}x÷¶Xi.jQÉA #C¤ µ@» 2æ¡n ‰Ž ‹ˆ … çÍAé&ÝŒ‡¸"Ѝ¨(÷vvÖFÿaxûÞ»¨¨xáü¹‘™…Ô“¸€hTt4rQiii5‹¥  °aíÔ±mº[º'âGfVv\|‚“)Ç`xô @Ãrr Œ,-+ëáäH|Š}ÎÌ™+–-562BA×ÜüÛuÚífdØYKK(——W<óòr°·C71]ºè–••SÔ…NL‹æÍCÍQXTf¦¦ðýYø¯Ý¦©’dçÀ_ñÕ\KKsð àùôy]]}aQšûWPXhnf†NR`jbœ†FÂssS ÏB´½ÿ·Ã=VWW{ûâÙ­«—É Ðétù&Pâp8]»t€¶I&£®½™7ZnU÷Å‹n]½¬«£ãùìù©3ç¼?~Ò]2²hÅÒ%(êÔ××£ÖùãáŸ<>ì˜ÑD¼„ï0¤µiHhXEe¥KŸ>(^zBaanÖ*ëx<Þ•ë7PÁw>ø¡®N<ÎÓœìF1m)º:E÷CòÑ5…¥UÚRW”ì=jQк»Lƒ1¨?¿€€áC‡|‰Šâñx}{÷F–Àáclj{ØFn#TVU€vçvxÿ¤¨¸˜F£üõDÝÈȰ±‘[YUUXT¤¬¬L~‘õ¿šš¯W¯““óò ò òa›«@Ãw­2¤Ei:²½ÙÖb¥úúz3gL¿{ÿÁŸžOº[[õíÕk´››Ø+bÒ\ôþÃGj%‰»:„Ø®ÄD‰yèt:E[H´±¨¸X»sgeå¿ éfl)Á-ÁãñîÞЧw/kk@Wrõ¬««GÃÝú¹ )yNŽÄ«x••еktÊSb2õõôîÞlçÜ¥ïþr]t»@PH(’F¤o)|‹Lff  Ó33•˜Lmmm--M((, oläÎ5319Y X𛇆J« ÍÀTTT´³µùN¾¹YqIImm-yVgê·S˜YsçˆD¢´Œ hº ˜2é'?ÿ°ðpÿÀ@00Ðg2™ÁaadC iÆ„®¶6Ù. m;tPp_¼èÒµëIÉ)IÉ)—¯ß°·³;´wê·è”ºdát ÜÛ¶Å'$F|údkÓ½m’ Å(òˆyCÆváñxWoÜ|÷á#ùm%fffŠú[Qq1“É´·ûö’+šH44*«ªüƒV,]‚bUeUUEEE' --MŠ6}óÎú7=ž$šÀÂÜ\vëàÉóÅ%%¨£‘¦£çåHÔ\¬ß’µ•ÖÕ)º_5‹UZV¦ªªÚEW—Ú‡Ò*}ðø±´®Há=êîGA«ß‚ì:hÛÎÝuuõþA.}z³ÐD’¥ ()+‘ó£S!Þòí,ŸÇ§Î    ‰êXD>Ÿ¯¨¨HÜS°ÙìÅËW2ŒIÆO;ÖÌÔdËÎ]m®íÊbH»K“%Û¢ys§Lú)<"2:6öîýO_x]¿t<1L¢‹dQ²]h±-$Ú¨¨¨ÈåqÉ)䇾­âåë7eåå÷îA»êjj›—‡ÙÈ9?uº±‘kgkcÓ½;z¶¡«£C €ýú¥¦¥‹D"333†Þš5czÏßÞ‘ÍÏ/¨g³íí ¿ ˆ ªªª?}¦ªª:yℜÜ\4™%;'·±±: SsDä§·Þìíìœnßû,ÌÍÑý±ÄºRÒÒD"‘™© qÙÚtb2KHÒ°XMMMzF¦œœz¿MÌ9¹yù§£º:šYfeiicm”tùúuhºõ)hz³‚ðLDä'èÛ§wcc#a׃GžÒ´-(,tîÙãÑ`×È/_¾FEûÅÆÅ}ðõ™4aîà ù:(hijº„¢ð¹4ÉcÜÜÅ(jó†ŒírãÎÝWoßuÒИ0n¬µµ’’ÒŠµëôõôÐ3,t`nfFL¸Cösé»uã†sæUWWûŒ6 ¾¨¤hÓË×n€žÞ·~ÅápÐÔ 33Ù­c±jî=xÇ%Þ ÍÌÊBw™Í5'·¯˜¶Òºº^×.Òº_TL,4B RTJÑ)¼GÝý(huÈtrpPVQñ  Û´î¯7Ê €Éd¢ÓÄÆÇùEìJM Adåd7Ÿ— š”‘˜Ô£iÊoBR’“ÙYKK_¯+‡ÃÉÍËCjÀú-[A¥ee7¯\"æ×±Ùljë(ª .øFAJjZħO³fL5rĨ‘#rrsç-^ŸÐ§÷_½$º¨·³3úÂV2.!±µmúzz•…EEh,â©‹H¤±±ñ‡ìߟxtjgk#//_WWõæ-÷ŋР_CCÃÅ+׃ƒ™Læ†5k é–““‹J¥¦¥=}á%''7jÄpt³‹îÒÐ ¸B¡õö”Ô´3.2Œ‡wn€CJJ¾Í¨ºqûΫ·ï&Ž—ž™) MŒÑɨiôÏó_¾y#‰æÍš qñ `inž›—'­®w>i¬½Qª¥¥©¡¡fZóõïÜ ÌLMš;Gl¦L™<)áPR]]=4­ÉÉÉiì.($ôKT”ªªj¿¾}ÈvQxfÚ¬Ù\.÷öµ+#‡ 9lXuuuÄ§Ï ò ÐtA£ÑˆQMDfV4^Û ™¬Ø‚¥îóHóF‹írü´س}Ããü²Écd±ÃVUQ5rÄ“gÏŸ=÷B!“œ¹i[B›¢K½¢¢bä«7nq¹\ôª†Ûø‰2ZwûÞõõõövvkW­$tãr¹DÈl®y³~ûWi]ýÙ%v¿o1̃¤ùªRé]Í’è½ésæIë~Ô´:dÒét×ý¯ß¼ÅçóÉSo l¬­Ï_¾räÀ~--Íâ’’£ÇOßO‘HGuõЈˆQ#G0ŒWoßedfŒ173µ¶²ÖˆA© IDAT¼påêуû555ãâž¿|5Êm$FëéäÔµKóìÞ¥¤¤äíã³tႨ˜˜’’Rc##‘Hôäù‹œÜ¼ŽUAØ-VÑZGýMiÍu£ ¡¡á滚:= â@WW‡œG¢‹æÎœÙ¾&KCMU(ÚB"ý]\4:vk$‘ÚÛ)‘QQaß®_‹ŠQ»0<#//×ÐÐxñŠÇ 3Ó¢’’¤ä999ÛñãQ4ÔÕYïɉÜÈ-$‡†‡£ŠñÊÃ͸ڥ‹F¼HJÑNIMEBiKkKAa¡±‘QÁOòÀý93g¼ xWP›—ofjÂú—£M‡ Zøõ«§—W~aaiiYZFø7<à´®¼¢"ðí[°~Í*V?#ÿõ‘³œš³¶ï2·Å¬ÚòêêÏü_ðê~¬Å1|ˆQ)FWÄðF÷ÃFeÙímm›Éd›1£Y×áÜ·‡F£9/YºÀÕÍuÙ %EÅ-7`Èqu^Ÿ¸ÀÕm¡ÛÒ€À7N8æÐîÞ¾­µ­m«›Óç-;w 23EV Ù¿{WQqñìù ºœûûâbç…óç³±>pôزÕkç.tIþòeüX›w?¼xP0 )%eåºõ*O‚!˜4^ºñb¨…ùS/\qŸ³`ᜠݯ]_±t ÛÛŠ\]„,(\“¹bjbŒÑ¼ß³sGá×"§Î3æÎ»êyÃÍuz¶¹™Y^Ége( •úä¹ÿ¤‰ölY¾Äm±‹³˜¨hiYÙ‡àO‘ÑÑíííãÇÚܾ~ ™YWWG&· 7Öâ‚CC ÆbgäÍzÖ;‡“ííím'0ŒO¡Ÿß}ø(**ºaÍjdÊÀeÁ|c## …òúMPrÊ]ó§O«ôï<-üZ”’ú}þ­®2šùçMÖ¥‹]EÅÅT*™c‚Qëüxµê0ENV¶¦¶Öûï—´4dÔnldÄÕ9èÜ4…H$"3É‚¡>`öÌÇYvww¿}ÿ!<2RFFfïÎ6cFXíÂÐvÅÒ%D"1#+Ëï¹Rrоþ•¿Ï!O’Œ~bÄÅÄѱqØ>ç%™U1®yˆ"DnÞÀÕ.‹. ŸÃ#||VTVY HJNi§PÇX y.##ƒ4„–¦æ(«€¯Ñ®…ÜÀÀhÓÅ. õtuÛÚÚ_¿ ÊÊÉA\g9Ô‚—8­»yç.NŸhg‹.˜‡€„ÌÖÖV2¹…s”ÉÖoYµåÕÕyu?–ÎfÀð!F¥]Ã{ÝÂׂlCãÁL&³¨0 ¤Ü«Åúètzfv6‰Ô¤¡®†g.hUuuAáW99Ù¡ææè³4lh4Zzf&™LÖÒÔbmH•JMÏ̤Ñh†úèBÙ¹¹µµuº:Úúú %19ÙPß@KK³»»;19…N§ÛŒÝÚÚ*%%>—ŨBƪÆ ÔÍÍͬj—–•—–•ŠŠŠ™¢«°ÁÕE‚))¼Ú»Tk[[Zz“ɰ´°à:ÁRSSNnÞ`3S%Ž÷/íííÙ¹¹­­­²²rf&Æ\å+-E0ŒÌ¬lRS“Ú€&ÆF蓕̬ìú†}}dP‹ŒºxA&·dçäÐtó!CÐu3°ƒ “ÉÌÍ˯®©–—“72˜u.›]¼´­ohÈÍËc2¦†‰{JO%³*Æ™§7ÞTTT•”(*(˜‰‹‹Ç'&‰ŠŠ ·´ÄyeC!55ÀÖ!6.þÍ»÷C-ÌõêQ(TC}ý­»v757?¸sùA Ý:VXÝȦ-¯®Îµûq‚áCŒJ1º"‚u?!‡Lä·'5-=2&& ðÍða–ÿ:û«Õü/zöüyyùu«WŠˆˆ¾y››ë0yÒþÝ»~µj¿9pó/¤g\t÷¨¬ªe]ûù™Œ³±Ñ8°¸¤äüÅËHÊ(+«m›6þZ­þ€!é³gÎe5‚sáuäç -%åuýjBRree¥˜˜˜©‰1žaÞoÌB ‚ AfÌB ò? ™à†L@pC&@ ¸€!@ \ˆlÙ¼Ñãªç±cÇšHõ)iYÎL/^?ù*"*šóC$Šèêh{\¿Á`2ÐUw@ —<®‰"Zÿ.äöàÑãW¯‡[“””蹚?Ð{«RRSŸ<}f3f FžßÞQ½tÂùK—%%%Ñ¥ç{S{/Ea É}§òsÀ5Ê$‰"ÿ’˜œ’“›‡‰@l|<²À !:6]½'oüžûëèè Û €ÿ«€G~O‘ï½·ú7 ²ª*’e=”Þ;ŠUÂOC°J{é„Èè˜ÊªªžVʵö^ŠbƒU¡H®zÈÏWä˜3kæœY3‘ïË׬¨§{pïž¾Ôª¯¨¨¬235éÍšãùTj‡Uú]é½£~‰«…[)NiþÏ„µoŒEõŠdáªü|„¹úO~Aahx8NaiiòWx}CÇàOõ jjŽS&c, ,˜ …9y¢}L\|Ff¦ŒŒÌ”IÑ}Q’’SJËËš››ß¾ÿ0ÑÎVJJê[iéçðˆ¦æf-MÍiSÐ%¹CÙš6“ÉCB–¹-FŽ‹¯ª®îêêzûþƒã”ÉB±úkQñçððŽŽN##‡I“ÐEØyéiblÔÐÐ%..>}êTMMÏaYÙ9ŠŠ ³¦ÿ¡¬¬Œ'"-;77!1©™L<ÑÖ]!‘ÐÙÙÚE£ ·:ÖúûNë©ié1ññLÃzÌh®FõÈQ\u`“À¶°5W§q¶Fà¬C‚ž‘©©©ìçÌ`0Â#£róòDâPó!¬ng…Wí¬¢zäN—²éŸ™•­©©ñµ¨XTTd”•Z0:6NRBÂjÄp<¥MMM±ñ CbÛyù/€ëY&+¯ß))*²í+æÿ* ¥¥%0è­ªŠJYYùã§Ï”MMŒyùù¶n¯ª©–“•Œ‰}þò•ÕðaÊýú±‰@ÂSÿæC23­«¯ßµÿÀ·ÒÒw>ÊÊʤ¤¦=õ1xÛ#“àдŒÌööv*µc̨‘)©©;öìk&“¥¤$ÃÂ#^¿ ²›0^VF°÷Ð! •êqݳ±±ÑqÊd™wHzÿ!+'§B¥P(Æ xÔK«?‡Gì9pÖÝ-**òòu`JjªÃäI!&.Ž—nûÉÉË WQéð&0'7ÿKZš’’â‡O!a‘³gÎ8päßB"‘|ûõëׯ¢²ò‘ßSyyy3S€ßsÿ3çÿ¦Ñº æ“gÏkjkÛÛ)l«­âw/Ø$°†L^Nckµòòr^M€³Ò¯EE¼$× ë6oUUéoblÌd2=þ*0°Ÿ’‰Ôôð‰_WW²8+µ£¢8»1†C¸ºô퇬úoÚ¾SU¥qIÉŸû þœ‹ìPÑÚÖ¶qË6"‘€§Ãã±ôkQñá'ut´Íà pÿBe•”øxÝDþZîÚw ":zöÌL&óìß--Ì>$**ÚÑѱsßþ‹î7¯z]BÉ·Ò{·n*(Èwvví9pðÚ[÷nÝ`½ ´|‰[SsseUÕÙ“Çi4š‡çÍq6ÖGì'‰drËú­[ïúÜ?°g7’ùSèg÷ çÙ–m\¿f©‰D¥vœ:v¤÷:S(”‹î³fÎØºqàkQñš›âFYYaëV__ïuýš¸¸xqÉ·•ëÖwѺ<Ý/„QVVGNœ¬®©Á“GKSÓÿUÀŒiSwnÛ èîîv]¾2&.Ý®="*Úûö-䪷çࡈ¨è¹³g544z?ðuš5kËÆõ€â’oë·låÜj§£¼tà”€í4dŒ‚¶“Éܵï¯&ÀS)F# Ý (åñ‰‰Ÿ9lš}Çç~HèçÕ+–³æÁY;‡ðr)×&˜<Ñþɳç_RÓFZDFE#‰[wîÆù3çké@=½s§OêÁ!&ä?‰Ð^2™dg‡ÞŠ1Ð×GvGv³ss]„Œ$%%çÏË/(lmmº„yNsäâK»~+--.)á¥mn^~]]ÝWWäϲ‚‚¼ÓÌ™‘ÑÑh†‰v¶x–9îΉÉ) e±‹3rhh ¿{û6eee¾ºM7ÙÜÙŒp’òÏ9ìèèÄ™çÊßç6­_ȤÑhX¼ÙÛÚ¢£ÃM‹KH`0+—-AÒõêÙÛNàë%^Žâ«'¼œ†¢­†Ýx*Å t'  D@VNF¬Z¶ÔÏ÷>[žÕŽÇ!Ø.eCà@=]Ýð¨(äðsD„õ˜1õõ øæ|-•••ee¥ªªÊ«,ò Ú(SU¥?g"2;îìù èF£]RS³œœ\/%°åÔÓûþðR_  º¦Ö@ŸûÆ¡Õ55AGûûŒ]]ÎÎ.RS²‡ðž¦öBgV«‘mÙYo^Mst|ü‚­Û‚ëO"‘”“—W^QYQYA§3øšV]S£ª¢"#ó}ïòzzq ‰œ9Ùà*¯œðrÚjØM€§R BwŠ––¦«‹³ïã'Oý_ 233rä4GG¶â{T;‡`»”“ÉövÏ^¾Ú±e3¹¥%-=ã̉ã=ú™ã·ù"´I r°ŠˆkW®–ùaãx®×Ž^Jè¦u³}GÊrE\\œÉdÒétô!R¤»»Cáê,))É`p¹XóÕM(P(”Õ6‰ˆˆ8Íš9kútCý½‡³fàjš¤¤d­‹5%ð…«4¾:pU€«ÓØjÁhœ•bH®ØXµlé<§9ñ ‰i¾Ÿ¼|x÷¦§´ôwzT;‡`»”“‰övw|§—••÷ë§4ÊjDtl,/árøZ üéÛý2u´uRRR–HJFVVÊ—TôPˆ2³³‘ç"€ôÌL€¶&Ïwçµ45Ù9¹Ã‡Y")Ù¹¹ÒRR*ýùŒ„¨³–¦•J-+/×ÑÖFRvìÝ7ÊÊ ™ÑGº¡dfçÔÕ×{{ÝD§S(¾¥´45IUÕÕèÔª¬œœŸ©/§9ÏŸÇš £ ’’ñTŠ!A¸N`%¿ 0!)i±‹óT‡)S¦”–•-[½63+{ô¨‘,¤vLsp¹E]Mm°™YDTtIÉ7Ç)S‚?s<–B ÿAúvÁ<]íÁff×oy544jjkÏ]¸TU]Ý^¼ÎÊΔ–•ß¾ç=Ìr(úÊ'F†f¦&ž^·™YÙo‚¦::àyiŒN§ EçÆi¨«»_÷D.ÙÁ¡¡©iéf&&½Ñ ?òrr€ÚÚ:“ÉôPZVÎw´4ÖÚZIQñü¥Ë---L&3844))™Wf¾Žâ«§^NcˆÑ8+Å \'°ÒÑÑáýÀ÷ýÇ`ä03; ¦6€5OjÇãl—rÕÒD»Ïá9yyÓ¦` ÀÒòŠŠgÎ&§|ákòóéÛQ&àà¾=ûq^²´Ÿ’R#‰dfb²eㆾ`;~Üö={¥$%[ÛÚÔ رy3¶ØÝÛ·í;|t«›¼¼|3™l5b8ž%Ô xñ|åºõW/_ê¥Î"""ûwï:tüøìù eee[ÈäÅ.ÎC-ÌÖ­G˜š³±>pô˜¶–™L611?ÖæÝÇšê:ÍáUJBB|ÏÎ'ΜuZà,)%E$Ü\½ |Ù£°u`• -%…Áp¼š¥¼$× ¬ µ0ÿcªã…+î·½½íí”K—°½žˆ¿vœÁp)/ýímm¯ßô22DSC[¸–67“Ã""͇ FoA ÿ_ ² 3™Ì¢Â€’²šÐë Óé™ÙÙ$R“†ºži¨=•PYUµxùÊ›W=””³sred¤--,ù¢ØÐh´ôÌL2™¬¥©ebl„G“îîîÄä:n3f4ºì€:£P©ÔôÌLf¨o ®þÝùè&Ù¹¹µµuº:Úúú %19ÙPßctŽÐÚÖ––žÁd2,-,Ð5ØÀï(^:`Hàå460šg¥„è„ææf))i ‰zliYyiY©¨¨˜‰‘!¯™«¼jg…ß!\]ʪkk+†dlá½±ùOñ3Bf_ƒ†Ì¾ -ÀÍ¿ ÁÅï2åååW,]Ò¿?¼±@ >¤Ï§ÿüädeݹüj- ò›ó;Œ2!ù À @ .`È„@ 0dB ‚ 2!Á ™à×K&L&óɳçTU&ÙÛ?õ¡¨ à8e2À÷ñ“O¡ŸÅÄD=ÝÝ9WÒª««Ûµÿ ÀeáüiX;ðñbËÎ]F††›×¯ÃÎvüô™yNsIw}î¯^±|üX¶ /^¼z{`Ï.Á–ë.8⊧×í¼ü|‹„®Õ¯ª«¢²òÀ‘cË—¸qî“ìãûðsxFÙ½»v 63ëKíðÂë@~3p2 Æí{ÞoÞ½Üõ¹ÿòu ’Njj*¯¨(.ùŸÈe‡Ûð¨¨òŠŠòŠŠ–ž›³cSQY…ì€ASSSRÊc#£¶¶¶òŠŠöövÎ<ÍdryEEGg§`jÆH‹J¥ææåwwwãÑ-*&v¸±xr²Á`0ŠK¾}-*îä6úìììÊ+((-+GSI¤œÜ¼ú†®™…k_ètú×¢â¯E\•”•—çåç“É-x¤Ñh´Â¯_K¾}ëêêêi]t:½¨¸87/¿¥…g]l¶···çæå—–•1™L<êñÛXì†î¼ŒÅþ@ ß¼ æ™"_ôõôXOÙÛÚ~ü?ÉÞMŒˆŠ&Æûø)Môñ}øÔÿEGGr8ØÌìà¾=êjÿìrüôRSóúÕ+÷>ÚL&?{ä˦ƒç-¯×Ao×­^é4k’B¡P²²³:€ßà³ç/TVWoZ¿öø©35µµ9YÙí[6#ÏÒ³ çÍ=é22>lfvòèáÛÞ>‚?!—ø©SöîÜÑwF¡ì;t8ùK*`Ö­zzz^ׯ"éi§þ:l@-++³cËÖ©éé¯xTVUˆ„ñãwlÝ,'+ËË!oßzÝõFnhKII-_â6®z»®÷ÁÁ7oßEâ‘@°·³Û¹u³Ô¿{[rÚÞ_Yùö=ïç/_!áS[KkéâEÅ c±z÷þƒä–Ô¥€·ï?¸_÷¼íyMWG‡«ç±Åø@ ß¼!sýšÕR’’€KÜØ¶¢424ÐÒÔüÉ2Ã"#‡Z˜+*( )!ŸÃî?|4ÒjÄœ™3¥¤$3³²²²2—ΟCFuÃ,‡R©ÔàÐ̬ló!ƒ9m'“[ž>÷×ÑÖ¾pö4òìy”Õˆ•ë6”•—àk,vCcÀæy<Æbÿ@ Èïpæ)ØÛN ÑhQ1±È!zW–5Ï=»ƒ^ú£Àét:©©™öã³="0wÎl6áHh±?Ž-´Ðh´¤”/6ÖcPx*KüP0@ëþgÌ!&*:bø°¾‹‰)(*¢D•þHÕ}d>姠ߨªh´n…BIKK·?Õ0kÆt@fv6§œ¼‚‚Fiº£#/RRRvïšæøý ^uUVVUUW;LžÌzË÷Ï9³‰Éßÿ1°Úž’šJëîþÓi6:WKTTÔiÖÌžš€ÓXŒ†ÆNc!Èop6ÿ¨§§«£9Õa <*jØÐ¡ òÈC&”ººº˜øøâ’oUÕÕEÅÅdr ÛLWY99¶»¬ I‰ÝÝtU•øÄÄêêuu5ôTò—/úú¬÷~q")))''Ç문„‘øÃ? )I¬¿Â5Š/òòòR‡!SL>|  57çZÄÂ|@|ûž5ñíû8,ãBOeƒH ¶¶~_rˆÉdÆÅÇóÊ,€±ä·D˜Ë”L´––ž›—o7a<Û)u5uqqñÈè˜êš&“YU]}òì__‹ŠéÝݬW. dee6®[ÛÔÔäuï *6–m-YUUÕ\$£ù IDAT™3¦—|Û¶kwxdTiYyQqñ»7ïØÙÒÒ²réRQQ¡ ©ûÈ(NÐ…±J‹]œ««kŽž:]^QA¡R“.^qWUUµ3š3³œœÜô?¦eeçÜðºÓÜÜÜÔÔtý–×·ÒRä46""" þœ[S[{æü…Úº: •ú>8ø™ÿ‹zz\ë¨ 0aÜØŒÌÌ+W¯ÕÔÖÖ74\¿y+7?§i½4– m-­FéɳçÝÝÝÍdòEwºúzÖ ¬žÀXò["Ì(bog{Ç羈ˆçÂèâ›7¬w¿v}ÑÒå"""t:}üX›5+Wxݽ7ßu±×õkls+¸2ÑÎöã§ wï§LŽŽ‰=wú$[†Íë×IIJ¾x}üô4QVVfÛ¦|ï4 €Ðâ\d\WW°{ÿ}ý·=¯ó•6ÍÑ¡¦¶öá¿ØŸ§jii?tHRR’kþõ«W56’ž½xñìÅ $eœµóüy|+¸,˜___øö]hX’¢§«{úØQŒû¢»¶mkj&¿zû:è-@JJêØ¡ûÅS'=5–W—…ñII^wïݹçÍ`2õܲaÙó£Øäs؉3gÑÏùK—Ÿ<{ÞL&÷HilRRS/^qÇÖó¿Æ\gæýÀ÷ȉ“drËOVÉãú¸„®§„¥ISSÓ‰3gkÜ ½A0åí§±}Áæí;³²szZ×Á¼ô¼!3-#ƒ×/<2:¦²ª ùW^Q!§ðkQTL¬È¿455?xôØmÅÊŠÊÊéAeUUdL,¶ž}‡ÿ«€G~O{Zê×êÌVCßø=÷×ÑÑí©J8„µHl||Y9÷%,çP¨Ô°ˆÈÖÖ6®g1À/óf˺,˜÷äùsì<¿*êÀhùÿ…v2 ôÆw{EV$$$î݃VVU­Þ°ÉÇ÷Ñ¡}{0Jõžžê)ùTj‡°¤ý¹ÂjHEe•™©ÉªeKPI‡à,òsœóø¾wojáeËÏlY›1cnßó)+/dzµÁ@!3=#SSSCUEMÉÈÌ"·´°n©ª¢:ÈÌ”³¸¦††™©IÉ·äð[iéçðˆ¦æf-MÍiSäåÿÙª:,"ÒÄØ¨³³38$´‹Fn9t¬µ5*$5-=&>žÉ`XóÞ¿UO^Ò FxdTn^Hj>„µŠú††ÁŸê4ÔÔ§LVRRBÒCÙš6“ÉCBŒ «ª«»ººÞ¾ÿà8e²¨¨(¯RBÔ™ …9y¢}L\|Ff¦ŒŒÌ”IõtuÑ \ÝËiul\æLŒW,qj7ô†üb„0ýçØé3ñ‰‰¬)••'ÏœmkkGëêêNœù‹ÔÔĵ8ƒÁ¨®©‘—“ÄÄÅ­Z¿1*&¶µµõ™ÿ‹åkÖ¡O˜nݹûäé³G޵´¶~+-=tìÄË×È)¿çþ;öîKÏȨ®©=râTÐ;ö_)§ž\¥1™ÌƒG_¸âÞÐØX^^qäÄ©Û÷¼‘üyùùËV¯  mkk{õ&héêµ…_¿"§nÞ¹óâõëm»÷Ä'$&ùRW_ßHjŠŽëîîÆ(%,Ùò757_¸â~ê¯s×oÞj$‘>‡G¬Þ° ½£ÎÕ½\­NÏÌB IÏȬ®©m&“£cã:;;Q•”••ï=ðõ~à‹÷ôºíÿ*@Y¹«>¬rº»»1Ú—W@BbÒ‘')JqqÉÁcÇ_¿ bsFñ‚]ûµ7=oy‘ššÂ""×lÜŒîÁyëÎݤ”¾ÝàsxÄÚ›RÓ3šš›®zÞܹo?ƒÁà´…³eq*€ÎP„ÃäI©ié$W™ˆ4ä ›äºººÍÛwêhkßö¼ðÌo±‹Ë_/£ö>b5b¸—çµ7/ü<šž~ÿá#<*a×›“sôÄ©©Süøø=ðq˜4ñðñ¹yùlؾ@ }0·˜F?ÖæòÕk±ññ“'BÂÂåääÆŒ‰œ¥ÓéiÈ÷¶¶ö÷ÁÁÕÕ5‹i4š‡çÍq6ÖGì'‰drËú­[ïúÜ?°g7’9"*Úûö-å~ý{ŠˆŠž;{VCC£÷_§Y³¶l\(.ù¶~ËV<› sJ³>,>1ñï3§‘?Ñw|~^½b9“É<û÷EK óã‡‰ŠŠvttìÜ·ÿ¢»ÇÍ«ˆ¨O¡ŸÝ/œ751œ>wžJí8uìF)!ê²jù²^*üÈïÙÒÅ®ÓÃéÓ¦R(”‡~~§ ¸!9"úä%99¹Ã,#¢¢Ãа°‰v¶èÕ§££cûî½Èùç¸våŠ?¦:ææå×ÕÕ-qu%‰y§™3#££Q±ö¶¶H´êëwttâ ÆÊeKtýzö¶ð(É)H ²rrh4`Õ²¥~¾÷_‹ŠËÊËÝ\!&HJJ:ÏŸ—_PØÚÚŠŸhg‹ÄKV0J Qg®Ùæ9ÍQPHHˆ/]ìú­´´¸¤„—{yY‡Ñ#­¦9:üuáâ…ËîKÝècdæÛ¾¼˜dg‡Þÿ4àf5øÖ¾`î\999ð¯ÓªkjŠŠKX%`4hbr …BYìâŒä44Ðß½}›²²2_Óp*/fMÿãsX8…BéQ©Ä¤ä?¦:²¦Œ>¼ °=5r$ëYm­ÚÚÚÞ艛;ŽåÉ`ÜX›œœÜÞK†@zCŸŒ2v&\ò¸J¡Rkjj‹K¾íÚ¶ =%--ýÔ÷ò]D„(%%…|¯®©!:ÚZhN]]ÎÎ.RSS?%%€ªJΊªkjTUTdddДzzq ‰œ9Ùà”¦¥¥éêâìûøÉSÿƒÌLÇŒ9ÍÑQVV™Ùxöüäj èìêšš‘‹ì–ç¸(¥„¨3Wôô¾?¼Ôר®©mooçê^ii®Vã©°aí—%Ëäåå-\€“oûò‚¯Õ¼gíÈ!ë_Äi5µµ&ÆFh"FƒVUWËÈÈ ÿfèðˆ/x”Ç ëìSÎ{•222ílƒÞ:/˜_&¹¥eÑRö!/‘eâ’œ¬,ë)À`2ñËçE[[[¯Pîׯµû¬fä§ÑW!sœÍ%w¸øøâ’oÚZZf¦ßaëA\\œÉdÒétt<ÚMë D.cbIIÉ.Zk òo/\¥­Z¶tžÓœø„Ä´Œ ßÇO^¾¼{ÓSD„X»r…´Œ4kfôRÎUF)áêÌ â7Öï""D ÷rµOE€´ô *•ÚÖÚš•c>d0FN¾íË \³!rzÔ¾|«f…Wñæá[»ÿËWÙ¹¹€Ò²²Û÷¼m¬Ç¨ øAFƒŽ6LC]Ýýº'ò¤08445-ÝìßÇÛØ¶àQ^ˆ,œ?ïÙ‹—LŽ{§šš!ŸÃ8U]¾ÔÍ÷ñ“WuõõÝÝÝ5µµï>|ܸËË*œØMáŠ{á×¢®®®ÆÆÆ·ï?xÝeŸ Ì«ÞE ÜøèýÇàf2¹™L~÷áãƒÇ9/쉭ˆðéÁÙÒ²òÃÇO°¦¸,˜¿†÷¼qÖÖ¢¢¢ƒÌLYï®`³{û¶}‡.pu“——o&“­F G^ŸÇ@BB|ÏÎ'ΜuZà,)%E$Ü\½ |ƒ³FV†Z˜ÿ1ÕñÂ÷ÛÞÞ€övÊŠ¥Ktut÷íÙwèˆó’¥ý””I$3“-7p¢6`À“ˆç+×­¿zù¯RBÔ™+¶ãÇmß³WJR²µ­MmÀ€›7#é\Ý+%%ÅÕjVC¸ÖòîÃÇÄää;7®#wÚ·oÙtäøIÛqãØnϲÊÁÙ¾|«f£áXÁ®}Þ\§-ÛwÊÈÈ´¶µiiinÙ°ž³"^ *""²÷®CÇÏž¿PVV¶…L^ì⌼DÈj ×Û›8•º:Úêjqñ èë­ë׬r¿æyñŠ;ƒÉd½Á«Ò¿ÿ¥ó=xøØïù ‰$+#c9t蚸¦Ý.ssó}òäè©S õ Ò2ÒCÌÏž<¾rÝ?^õš|ôÐ߇îׯŒŒN> G™_ákA¶¡ñ`&“YT˜PRVã[†ææf))i q¶ô¶¶öy‹mݸÿTFKÏÌ$“ÉZšZ¬“/°imkKKÏ`2–œoÇcëÉFiYyiY©¨¨˜‰‘!ë¤G:ž™M"5i¨«qÎEéîîNLN¡Óé6cF‹ˆˆ`”¢Î(•UU‹—¯¼yÕCII1;'WFFÚÒ‚õÅ^îå´šÍUb“ƒ§}yUÍ›&¼ŽìÚ««kò ääd--,Ч}ÎnKfÏZ8ïOä£A©Tjzf&F3Ô7@×sÀéF<Ê ‹¬ìœ[wï^½t±Ok@~K„2yñìÅ‹{÷}_ú=`"D0Љÿß&“é´ÐÙuáÂùÎýÕº@ _OŸÌ˜­©­Ý¾{om]Û"/!ÿO)üúõ’Ç52¹ÅÄØøWë@þôIÈTRTtž?¯_?¥q66üsC„‡¼¼üŠ¥Kú÷ïÛ;{ÿ#ÈÉÉM´°iýZø  ôáY@~'úê½L@~3`È„@ 0dB ‚ 2!Á ™à†L@pC&@ ¸€!@ \À @ .`È„@ 0dB ‚ \˲çå‰\¹ò}wÜýû)T*¦À˜ò?’¢«Ëç²ìbsçÊ¡‡¡¡-d2¦À˜ò?’biÙ ÎI¥**¾ßÂÕÑa0¦À˜ò?’"!Ánþ@ Nàô@pC&@ ¸€!@ \À @ .`È„@ 0dB ‚ 2!Á ™à†L@pC&@ ¸€!@ \ÀùòîÃÇ{÷üj- ^»1ä?®ý2_¼ÎÊÉázÊÞÖvüXë7FZ ·=š3ÃùK—'ÙÛ6¬7ZbȘ”ÔÔðˆÈÛ¶ Qfïa2™ù…… :ÚZ:ÚÚ‚ IMOÏ/(\±t ׳drKJjê°¡JJJx¤ ¥ùÒMü¿ ¯Ž}ÉãêXkëÑ#­~š&•†ú‚çìÆ=íºˆÐÁ5Ê$‰"ÿ’˜œ’“›‡‰@l||Yyײ‘Ñ1•UU½ÔC¾ÀTVUEÆÄâÌìÿ*à‘ßÓžVÑÓRÝÝÝûÙ°eÛÙ¿/,]µæ¢»GOkÄCYyùɳû†3?ÎÀE¬Eú¢‰ÿ7áÕ±£cãÊ+ñ°`píÖ­O¡Ÿ(È‹žv]DèàeΙ5sά™È÷åkÖ ÔÓ=¸wÎ ýŸµûÏ_P@¥vôu©;Þ>Y99·®]524 ?õ×¹¡ææ“'Ú÷´^l$$Äâ8óãlA\$˜W!?™ž6SGGGá×¢ˆèè„Ä$]m!jÒÓ® \!'ù…¡áát:}„¥¥õ$1=#SSSCUEÀ`0Â#£róòDâPó!c­­¹ÊùZTü9<¼££ÓÈÈÀaÒ$ ù€o¥¥ŸÃ#šš›µ45§9L‘——GÒCÙš6“ÉCB–¹-VTPHMK‰g2ÖcxÞäT26.¾ªºº««ëíûŽS&‹ŠŠfçæ&$&5“Éý••'ÚÚjiirÖhlhÈZŠH$bÛÎd2ßš3s†‘¡`’½Ý»ß}ü(ô©«£+**:PO—«±œùY[0,"ÒÄØ¨³³38$´‹Fn9)Âé"^‚ÂVIäÕÄõ ‚?Õ74h¨©9N™Ìõ¾¢[CCcDT”¸¸øô©S555B>‡eeç(**Ìšþ‡²²2_i¼Z–«£>~ <ÈLKóŸ<™YÙ#­Fn}  ðò<žŽ§¾Ÿo7ÄÆ'¸_÷…ý_¹§]:"[6oô¸êyìØ±&R=@JZ»Àë7AJŠŠ¶ãdz&ú¿ hii z«ª¢RVVþøé3%EEScÀºÍ[UUú›3™ÌƒG¿ 짤D"5=|â×ÕÕÅù„ìsxÄžiÝÝ¢¢"/_¦¤¦:Lžô"à5/ù1qq;öìk&“¥¤$ÃÂ#^¿ ²›0^VF°÷Ð! •êqݳ±±ÑqÊä7oß9ÿ7ÖÅ`0Ÿ<{^S[ÛÞNqY0Ÿµv®JV×Ôfåä´S¨ e¸±‚?>~‚¤„DRÊ—G~OÇŒ¥Ü¯[´nZÉ·oH©ñcmŽž’“—®¢Ò?:6.àM`Nnþ—´4%%ÅŸBÂ""gÏœA$1¤½{ϵey9jóŽúzz†ˆ=Núòeʤ‰€£ï•——ã1—žø=÷çÛ±Oý_˜<ÈÌ´Gf²v~<Ý0POÏeÁ|—óƒCBu´µGŽλ«bÁÙ{Úu!¡#´QfQI‰×Mä¿ó®}"¢£gÏœÁ𡼢">1ñï3§­F Üñ¹úyõŠå¬y(ÊEwY3glݸðµ¨xÍÆMq ¼äÓh4Ï›ãl¬ØO$Éä–õ[·Þõ¹`ÏnDà§ÐÏîΛš˜444z?ðuš5kËÆõ€â’oë·l•””d³‚«’~¾÷IM$*µãÔ±#ÿW3¦ME¦Wtww»._‡ Ykœ>w)UV^Î×öºúz€ªª š¢ª¢B¡RÛÛÛe~ 6½gžÓ^ƲiÅIDT´÷í[Èu|ÏÁCQÑsgÏZ¿fê"¾‚ÀZIáÚÄL&óìß--Ì>$**ÚÑѱsßþ‹î7¯ryÐ[__ïuýš¸¸xqÉ·•ëÖwѺ<Ý/„QVVGNœ¬®©ÑÔÐÀÆ«esÚ˜Læ®}ð˜€Ýµ¸zgÇÆS ßΧ÷5½éºHïÚK&“ììÐ{Múúì?ˆ" +'‡F£V-[êç{Ÿ-Obr …BYìâŒèïÞ¾ ¹ŸÆU~n^~]]ÝWW"‘PPwš932:8ÑΉ^q cå²fßéÔ³·Ài%¯ü}nÓúõÈwF€õIZcOÅvvvÄÅÅÑäÉMgW§žBVœØÛÚ¢Ã#Cn Í·QxÁµ‰¿—•—»¹.HJJ:ÏŸ—_PØÚÚÊ)a¸qˆuu´ÈSXä°££[¯–ÌQhOÀov×âêyœO-|ÍÌ}ÁGÈÿBeªªôÇΠ¥¥éêâìûøÉSÿƒÌLÇŒ9ÍÑQVö‡ñSUuµŒŒ ë «iŽò«kj‚޶𢫫ÓÙÙEjjꧤ ¢‚æTUQa® ÔÓ‹KH@I"‘”“—W^QYQYA§3XÏ¢5öT, ‘KB}­8áÛÐ|¥G’‘ɺgÏ_@0 ³«@jj–““cËÌ6ºâlaKãÕ²‚9 í øMÀîZ¼~x:6žZøš)˜ú‚ÿŽ&ÿ5„2 DþÖUË–ÎsšŸ˜–‘áûøÉË×wozJKK£$%% ײ\å‹‹‹3™L:ŽütÓºÝÝÝl¥$%%»h? ×Xƒ_%ѳ eõ†M"""N³fΚ>ÝÐ@ï¡Ã|õÄc{åþ€††Fôŭ†FIIIi®]iéé©ééßÊÊššš»»iòròúÕÕ5¼ŠôT+Nø64ßFé‘d"`íÊÒ?úoäæ †4ì–Åœæà4A°®…¿cã©…¯™t¾ÖûB„/œ1‹M~AaBRÒbç©S¦:L)-+[¶zmfVöèQ#ѸoϾCGœ—,í§¤ÔH"™™˜lÙ¸A0%1¤™šc´,WG¹:/¼|õÚW7Q119YY§Ù³ÊÊË6[^æàìØ8káÓùñuc<ô²ctÝÜüü°ˆÈ[¶HHÀ ‡ðµ ÛÐx0“É,*Ì()« ·‚ææf))idn  ´¬¼´¬TTTÌÄÈ}µœ *•šž™I£Ñ õ ÔÕùëC£ÑÒ33Éd²–¦–‰±FÎÖ¶¶´ô &“aiaÁùr= §’ÝÝ݉É)t:ÝfÌh‘ìÜÜÚÚ:]m}} …’˜œl¨o€¾ŽÂV íL&3+;§®¾~ ž®þÀœž<{îu÷¶Cô¼ø×®7 ñË[ ò‚ÍX<ÂVC8NÏÌÎ&‘š4ÔÕ8'$÷ i-ËÕQUÕÕ…_åäd‡š›cìqš€³k±³c f¦Ý˜/BéÆBÑé}2!Â¥ðkÑÖ]»©T*׳ òsgÏ^8ïOøò_vcÈÿS`ÈüÿG]]Ý»Á‰ÉÉuõ ]RÒÒjªª†ú#† 5Ò ÏSLä—»1äÿ#0dB ‚ ¸Å4@ ¸€!@ \À @ .`È„@ 0dB ‚ 2!Á®—Ÿ^¼æµÖ³½­íø±6×oŒ´n=z´Àz<~ú¬««k™ÛbÎSç/]ždo‡l¹~ÉãêXkëÑ#y.Ôò9,6>=”””ÔÖÒšæè ¨  °nl¤¤¦†GD";ôB~¼ÎÚ1ÃÞqZØÇ÷¬_þ_ÐwÚþ”ÜÞÞ¾dåjRS~ù›¶ï\·jåÁƒúBŸßŒßÕWÿöq2‰D¢È¿$&§ääæ¡‡D"_V^!˜êi)©©\OEFÇ ;¢cãÊ+°**üZ‹ª×ÔÔüàÑc·++*+{£+•UU‘1±Â’Ɔÿ«€G~OûHø/G0ëx9œµc@þg¹ÿðQO70qY0ïÉó罩ÔÞqZoŠ÷}¡_ý*oü’zq2çÌš9gÖLäûò5ëêéÜ»§/µú@ÿg\7Áà…„„«z•UU«7lòñ}thßÏÓY`ò ¨ÔŽ_­E_!\ëzÚ1 ¿•ï>ûxÝBw5ÁƒÍ˜1·ïù°n2áôÂ\•*¿ 04<œN§°´´±ƒ¦×74|þTßР¡¦æ8e²’’RĦgdjjj¨þ»Ç= #3‹ÜÒ2~¬ š©ª¢ÊußM 3S“’oÿlÌô­´ôsxDSs³–¦æ4‡)èÖa‘&ÆFÁ!¡]4ÚpË¡c­­Q!©ié1ññLÃz Ï›Ï #<2*7/@$52ÖÚš—žµuu\늋¯ª®îêêzûþƒã”É¢¢¢Ù¹¹ ‰IÍdre剶¶ÈÂÙßJKsró&O´P(”°ˆÈá––œKØgçä„GF&Oœ(%%YZV6~ìXä×FÁv¯v djÚL& Yæ¶XQA«ÚœÖat <gíœÎGò455ÅÆ' ì®÷}älØÇ÷ˆ-ÈN»0¼Ý¾|[C2¶VÙ99GOœšê0Åï߇I?‘›—ß{_a×Ë·×í;|ÄjÄp/Ïko^ø=x 5=ýþÃGxTê½½ÿö…6Ê,*)ññº‰ ví;={æ &“yöï‹–æÇíèèØ¹oÿEw›W=zS×ø±6—¯^‹w˜< .''7æßçt:ÙÒÐÖÖþ>8¸ººf±³3Fóð¼9ÎÆúÈýD"‘LnY¿uë]ŸûöìF2GDE{ß¾¥Ü¯`ÏÁCQÑsgÏjhhô~àë4kÖ–ëÅ%ßÖoÙ*))ɦRyEE|bâßgN#ÿ¡îøÜ ý|ÛóW=¯Ý¸Éµ®õkV‘šHTjÇ©cGþ¯fL›ŠL{éîîv]¾2&.ÎÈÐ@NVv÷öm޵?®­½=øSˆ§‡;Û?q •zãöys6¬Y ÈÉÍÛ´}2ÒÂn®ŠñmÇO¡ŸÝ/œGö´â¥6«uq:œ¯óW¯X¨§wîôI=¡1™LfRJJ@`PBb¢¦¦¦«óÇÉS¾o¹uÃã ú]]MmÓúu.K–íÞ¾¯dï¾Ó§Muþ7 23=zð€Ptöö}8ÍÑa‰ë"äpœuggÇý‡O9Ô{áÛ‹ÍáýûÈä–Ÿ>½}ÿáésÿ1£GÍ™9ÓjÄpän'%%|§ÑhУGZMstøëÂÅŽŽÎ¥n‹ ôÙÊ&&%µ·µ¹-rA™™·´Dþ'b4 /Åø¶ãD;[tH µQ0ât8çdeeFYñœ_-n+VÕÕ×O7îÒùsœw{˜Læë7ACBKËÊÐÍ­p>sMJN¹zù¢pµEHLJ¾vå‡}¼G ~ûžOï%÷Æ^¾((È/œ÷çÂy¦gd¾y÷þà±ãª**½ïßtuÑæÌœ!°ðYÓÿX±v½›‹³´´4kº¡á‰³Í›3gÐ 39YÙÉÄövûbŸíŸ³ss·núaKóqcm?}†§,/_a÷×ùü-m­Zn·zJïíÅ@h!SU¥?g"2¡ñìù H”tvuHMͽ ™» .y\¥P©55µÅ%ßvmûþWKZZú©ï仈QJJ ù^]SC t´µÐœºº:]¤¦¦~JJ¼L¨®©QUQaý';POó ®¥¥éêâìûøÉSÿƒÌLÇŒ9ÍÑQVV†—ž\ëbƒH$åäå•WTVTVÐé Ö³Ö®qY²L^^nÑœe«ªkYðÚÚZHÈÄh^ŠñmÇ,Oš±Õæ+§ÃYáå|Œ"½DDDD\LLTŒËÏÇëžwbRòêËLBWW—ãÌÙxÄ’[Zú÷ÍVÉä––EK—³%…Øzc/~DEEÄÅÄX÷!¿ÿðÑÖM±÷cQÉyÿMFFf¢m`Ð[çoí;xàîýûç.]njjRUUUW`ia±àϹx¢¶7°ÛûloüÜÖÖÖïÇ$Êýúµ¶µ±¦æ+løö:¶$Ádâ—Ï <ö ŒÐB&È屨ˆ°vå i™zž€Í8›KîqññÅ%ß´µ´ÌL¿osO ¸^.ÅÅÅ™L&NGfÝ´n@ww7† ’’’]´.ÖÆU¥UË–ÎsšŸ˜–‘áûøÉË×wozòÒ“k]¬P(”Õ6‰ˆˆ8Íš9kútCý½‡³fHKÏ R©m­­YÙ9æC³'‰lz¢fb7Š`툖â«6_øÎ Wç÷è1~|ïÝILN |³eûNmmíéÓ¦:Lš„Þ˜}ûþƒ§ûe-MM4?þœäå5ÔÕùgí!Š îÝ‘þ÷ï£é½|!“[‚CBÞ~øX^^>zԨ㇎19ÕÚÖvê¯s§þ:‡fF.ú¬—{¾©æ9ÍÙ´}ç¼¹N¬¡·å½;w:::ÊÊËsóòß¼{Ÿ™}ñ¯³|ÆövûbŸíŸeeeIMMTUÑ”FÒÿµwßqM]íÀ!BĊʰlD+P jk«UT(.E¬âÄ× V¬UAD­£NÜ «¾"8õUF@@Ô„$@!@~\1†äzYjûy¾þHî½çä9O.÷äÎS©´‘l_®ðud­#ihÈd2ÅÝhâ}‘ö¶[×>ýÇŒa†¢R©ÎNN؉Dzö<‹Úá]==]—AƒRÒîÝNNÁ{~¶¶1óòåS˜ùù:TªAo¼þ›nj*T¾-/—OQùT‡‚¢§Nw§Ñ¼½HÏàñxžcF ÆÚÊÒÞÎvßÁC!”“˼ríº÷8/üóÃ]]õ{ôø#*º¦¦F&“%ݹóøñ“Ö‹‰Åâ£'âä7‡å0óBÆÆF툳¹¹!ÔFCq¹!™Lv1þ ‹]"ßßÚcڧϔɓ‰ÅâCG)U2tð`c#£˜=ûD ØYââb¬¥múR0Ä‹à‡-oN…®'ù%¥¥‘[Ÿ<ý~ íÓÇØxþ¼€ §â–-Y\Îy—Qîî;vÅ”––566²Øì1»ÞjÌ™éíÆ³ç/Tðx¢††……Š{Q1g–Üé3ñW¯VðxR©”ÃåÞ¸™ªâ¶¶êH{ñq8Üå¡K.œŠ›0×ØÈ¨SêlmÚÔ)ç/]–) ùõü¥KE/‹ÅbqSS»¤äÀá#î#G(–251½}7[™ágÿûÅŸK$Ïê¢òæsü䩄Ĥj¡°Z(¼q3ñÄéÓ¾Ó§usVO}}Ae¥½­íâ…*—d±KÖ‡G(N™á35Hý5Z#\]Édr?{;Åp|+—†®^¿ÑÇÏ¿{÷îÕB¡Ë oä׉¨£­­µjù²ˆÈ­“|¦S¨TIÃßÏ7þê5¥Å89Ž÷·cWÌ¡£GBõõ¢¹³fbW¨¶)Nc#£3©ÇFíáæºfã&. mmmFw»‘xÓÔ¤•JÍ|òä¯?÷b‡ —.^´!|³ûˆЇgÉdrØŠeëÃ#~œâC¡hyŽÃb½û BüK‘#XÄÎÖF]Ø?Oúé}뢣ÔUH0á“_]-LNMsìïÐY÷ ¶¦¥¥åíåéí剽]xòÌÙ°uëy<žŽ®ÎG§=Ñ;g©ÊØÈh÷ÎÇNœ\ðë’ÚÚZ3ÝoúôN Ò wï¨?~?qòôÙ —*++õtu šÛ¶ UêH{ñÉïsíRæf “>Æéä·’‡. ¹‘˜ÿ÷5¾@ ««cjb2vô¨ÆW,4/fϾ»bZd2Å][ülà¿øs‰äY]TŽý6®[s,îdÌÞ½!këˆõëÛ±×Õ:WøŸÛ‘µn¶¿Ü™3ûÏãëèê8õwܺ9<`ÁÛœ®n¯J/ ™V62™¬¸(!¤ßKùvøŽknnÎa2++«Lú˯«$®ººšJÕÑÖV¾¹®®~Нï’ùÅÄD455eåä…Bº)ÝÖÆš`©ÚººçYÙ2Y‹³““üé­±Ø%,6‹LîfkmÕëÿÏä·)N©Tšùäiss³Û°¡šššÌü|.·ÂÜŒaia!‰2Ÿ<±²°Äž €¯¥¥E"‘H¥ÒgYYÚÚ”A·lÛÞÜ,ØðîÌb;¾âEÔ…­Ô:œ ‰$\iÅP™|>*—™wàðáØ¨.¹Vù_rõ)ºÌ.rþÒ¥#Çã.Ÿ=ÝEWyt–Ï'Ï÷ñóß´n-v@‰ÏÌš8?0`â„ Ÿ,ø—éò³]Ãå.]Æ­¨ð÷ñ%÷—Ÿ1NƒÞ½}§ùlù}[Bb"™Ü-;7·o_soOÏOüËü#÷2%Éͤ[={êpsû’ÌýÙã,~õ*7/_"3èô!..Š·µh«d— |z]{“ ð¯]&@t™!Ðe„@— Bô¾ÌÛw“f¼¤!…BaÐéßóêñÕWØ”¨Ý±Ã]]‡nÛØ„UUU±îŸ?/€øCïÔ54ìˆÞ5ë?sÂã ÿ=f”Ç ‰J;Š'“É ŠŠø|ƒnÆ`t¤ª.³JKËÄIëq=ËË9¯ß¼Ñ××·³µQwNZ:1cŸÌÓgÏRRÓ°!¸ÿ,D»Ì¢—Å÷<ôøv$ö¶ªª:95íô¹sîŽÁF¹ÿ0ÝŒÁhk—)jhHNMó6­ã]fScSrjÚÄï'àw™ã¯H$¿éÓBi÷ØÙÚ´©_iG‚¤RéÚáŸ>¥R©"‘èûñß-_²¸Ýµu0NÅ,uŠ=˜3Ì”ºÌ}]¼µ×ÖÆzûÖÈÖ#ú⤥s3öÉ”½}›öà!t™üµáé?ÚÚÚkÃVÉß–½}¸pѱ¸SëV¯Â)õ¥)(,lhc¯¯^<ßÖ' ´£A=–›—w`O¬µ•åä”ß~ß6ÀÑqìèQí«­ƒq*f©#ÄbqÑËâÔû÷e>6g|ðSæ¿ 7¯\½¶usÄÐÁ.%¥¥¡+VøëðŠV NZ:7cðQí`ž©‰‰½íë7¯[Ïbæç?Ê|\-öîÕk´»;nš“+¬©9ÜM¾LJZš¡!60¯L&»›’š“£££3f”‡¥…NUòY/‹_ÝMI‹%ÖÖ–^c”‡¢,--ËÊÉôÍ@Åaƒ¦g¼-/ollüoÂÍqžcsr™¦¦&†¡äÔ4[k>_zïž––ÖooSS“Ûw“s™y=z|5qÂxìIßYÙ9JE$IÒí;MMß8îêú>ò¼¼”´{¡±£GS©›=røp„PUUÕÃŒGýú)î Ëd²„¤[?ý𽵕%BhÌ(‰‰7[wgâ­ÛýìåƒÖæä2Åbñ`—AJY"“É<>ÿfÒ-Ÿobl<Îs¬¾¾>B¨¥¥%%í^þ‹$ÒÇþŠmŸðŒG1{÷¡‡bÇ\¸ï5v vX‚A§ÿº0¸°¨Hiœ´ÏNœ*Û…QZ»äNzÃbÝMI­ª®¦›š~çå)d<þÊðìyÖƒŒ YK‹ë°¡c|ÚùOKKK9‡Ó¦<ÊÄõ ‹B—eåäŠÅâ;É)s½,.-+Û¹µ®®[¦¢¢""ò÷ʪ*ìíž?÷ï;p°²ª*95-(äWù¨¤*«ÂfÝMI²èYVvUuUì¾ýËWÿ§¥åý¨i,6û×å+˜yùJÇ{³rr+x+p~ÑË—2™líÆð»bøAII醈ßQÍ!4ÚÃýï çþ¾pÎØøƒ§JUVU±Øìá®ÃB2™ÌãÛ‘­zÃI ÁŒáÄ©²]Ø,UkW BèAzú¼à{ÖÖÖž¿xiNÐnE~’Bg/\\¶:+;»œÃÝñÛõ  ðejÃ^fssóóìlìu]]}BRRy9ç—Vãù]Œ¿òýwÞØ©©Tê7'àAzúÏ?ý»çaF†×Ø1¡ÛÉ)4mØÁا²ºêèÁý4M"i\µfížý† v!“É*«²¶²‰D;cvOüáû%! B/‹_…,Jô®‡`±Ù¡+Ã\‡ Y¹,Téàdpмʪʆño›6´n Ç;¸w––Ö«×o765ÖÐÐââ²!bs9‡#ß!“K½wÿ衽zöD­Z».õÞýÉ?N54üyè¯)“'- Dåå¿X´t™|Ÿòë¾}·mÙÜ÷î<BÈÐÐ@>ÅÐÀ@ÔÐP__¯««ÛEq¶Î@ë,Éd²­Ûw:;9†¯_G&“ÅbñòÕÿÙ³{ͪ•™™Û#·`ãPþuìøí;wçÎQW§’Ò²2„PE/`Að«×o(Š·—ç ÀnݺL ÁŒ•”–ªŒS]»öÇîV³v=ââ²{ßþn®Öü‡D" …5ÁK–>v|ͪ•8IæóGOÄMš8qqH0BèÕë7Á‹—P(œØæðéµa/S,/]†ý­ÈQ0?`îxïqJ‹íÚ¾mQp0öº©©I¡†1F4Ð9õÞ=lúääÑîdò»Ûgòd†ÒÖÖšõ‹_9‡Sü굺ªB™OžŠD¢_f¼ë­­,-V. ÅH²XìЕa½{µî/?êÛ#´´´Bæf „Ьì­X,i]d”»;¶‰DYYXˆÅb„PæãÇõuuþ¾3°éýìí¾qv–ÑÓÓââbøáî¯DÒˆÂ>ƒ )ilìº8‰xYüŠ]Râïç‹}Y eúÔ)…E؃ܼ¼¦¦&„Ð¼Ù³ÎÆ'X'B¨¾¾!tà𑱣GÇFí œ3;!1iÿ_‡•ÃI ÁŒ‘4H*ãT×®ÚÚZukWþ‹‚ŠŠŠ™~~$ !ôÕWÝ'ýðCÚýûòÏR™äôGZZZfÏĦ[|Ýw”û·ø±¾XmØËÔÑÑ9w{­©I¢R©*#‘HW¯_Ï{ñ¢¤´¬´¬´¹¹›îñí·Q»cE ÷Õë7+BCåEúš›Ë_[X|âp¹¶6Öêªz[^®««+ßR“ärÇÐÀ@qÇ÷ë¾}Ù+‘qIDAT±#"êb#˜CÀ§×†.SCCã£ÿÏ"‘(pá"MMÍI˜8a‚•¥EغõجnnQ1»Ó32^½~àÓííl奤Réû×MR„•ŠS…BÁÎ-µ6cšOÀ¬™ ‡îŒ‰=¸7V¾#ÛE4H*vÓI$’â¦}Ø@•z÷êâóò› ù|…BÑÕíœQ6UÆ©˼MMBh~À\#14è=oö¬)“~Êx”ù<;;îô™Ë_=¼ÁaA±>Ʊù”~vv---åœrÅßO8i!ž1•qâ´KÝÚ¥¥¥%“Éš››å+–1ù—«2É ¥±éƒ_Åu£#9|züôŸf^±iêÏ“: Ñh"‘›¥§§ë2hPJÚ½ÛÉ)ØM…RLù묜„ƒAÇ©ŠnjÒÐÐÀ.)‘—Z¶úìÅ‹!—ojhh,]Âb³Ï_ºÜ¹­#ˆA7­­«ÃN×a •¯m]„¦§—›÷þbf^ž½mW²‰]+„yÍzÓz3†BˆJ¥:;9a$éÙó,vIé‰S§»ÓhÞ^ž«W,ÞÉársr™­kPÉÜŒ¡­­­˜"—‹êÑ£‡âb8i!˜±‚Â"•qªk•JU½v]¸ˆ!fæå¿ÿÄü|*Õ 7Þ<ÝÔT ¨|[^.Ÿ"Y]lDø,:¹ËìN£!„¸Ü „L&»…Å.‘ÿ¬öpù =ƒÇãyŽ­Xêâåxf~>BˆÅf:rÔÍu˜±‘NUƒ4éÓ'fï>¬MºsçÙó,{[y…V–?OúéÄ©SåNë û‰®0tð`c#£˜=ûD 2™ìïk׋‹‹å›ò’Ò҈ȭOžþO±‰Dòöò¼rí:ÏGeçæfd>žàíÝ¥qöøê«‡aÙ¸žp;,‡M77c8ØÛï=pÏ „8\î¶QoËËÅbñÑq ‰IØÂ9Ì<„±±‘òg¨¡¥¥5ÚÃýøÉSoX,„‹]wæìÐ!ƒ±‡I]¿‘¹U"‘अ`ÆÔÅ©®]HíÚekmeiog»ïà!@€ÊÉe^¹vÝ{œþÏšá®®ú=zü]SS#“É’îÜyüø ~lsøô:ù¸¥­Í7×571èt¡Phkk3r¸ÛÄ›¦&}~žôÓWW2™ÜÏÞNéÞ)“'-^º\WW·¶®ŽN7]¼0ø£UýgåŠuáá?N¦§§W#þ2cúG'Å:çÎôO»wWìÞm[6+N762:“z!`ApltTç¶]ŽL&‡­X¶><âÇ)>ж‘¡‘çØ1,›[]-LNMsìï€]')7g¦Aa‘ÿÜy}ŒÙlöøï¼ÇŒòè¢1~Ó§EÇîññó'wëFÓÓ›ôãDù®•b–Ö®^µz݆é3gõÔ×TVÚÛÚ.YHÓÓï=nÇ®˜CG"„êëEsgÍ$þ¨B„PpP`ØÚus‚tïÞ½¦¦ÆÎÖ6lÙRlV~AArjڲŋµµµqÒB$cœÕÅ©²]!MMMk—“#BhåÒÐÕë7úøùwïÞ½Z(tôͼٳ𛩭­µjù²ˆÈ­“|¦S¨TIÃßÏ7þê5üØ_&—…L+™LV\”‡ÒïeüÑ2ÅÌÏçr+ÌÍ–"‘(óÉ+ K:Ý´®®~Нï’ìz Eå圅…4šž³““â HuU!„²rrššš¬,,ûô!¶T*Í|ò´¹¹ÙmØÐÚÚZ*UGñz“ª®®þh‘––‰D"•JŸeeikS tÞ²m{s³4bÃzüÊe2Y.3¯‚Çûº¯¹Å×_ª}q"„Þ–—½¤Ñô8:*¦]1KšššÍÍÍ9Lfee•Ic;Û÷'¡Yì›E&w³µ¶Â®Xn™LÆÌËçVp úÙãwhÚ¯k/(•ãp¹KW†q+*ü}gü»ûK„AïÞ¾Ó|¶ü¾-!1‘Lî–›Û·¯¹·§ççŽ @‡|¢½L‰Dr3éVÏžú#Üܺú*Ð/Dñ«W¹yù‰˜A§qq‘?¤À?Ô'=0 üsuòM&À¿t™!Ðe„@— ]&@t™!Ðe„@— ]&@t™!Ðe„@— ]&@t™!Ðe„@— ]&@t™!Ðe„@— ]&@Yé}•€óYâ¾p°— òn/³¸(/-åöç ø¢½,d~ÿ·:yÌlНCIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/PlaybackView.png0000644000000000000000000000013213135434036020015 xustar0030 mtime=1500919838.099981806 30 atime=1500919915.096648472 30 ctime=1500919913.363315139 denemo-2.2.0/docs/images/PlaybackView.png0000644000175000017500000031264413135434036021700 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRÛðÉy. sBITÛáOàtEXtSoftwaregnome-screenshotï¿> IDATxœìÝw`eðç’4éH÷.Pö,{ï½_–‚ÊF@@@@™Ê¡8Ù € ²‘ J¡€€¬J[F[ºKw›f'—ÜûÇa鸖~?h¸Üóäy~w—þòÜsw„pb†ë6@•%`ÿGINN'„ðù|Ç0 ­Óéu:Ÿ/àó†Ñëõ†bÕªù°/6oÙv*ø-€ÂèÓ~îœÙ\·¢p×B. ÿÐëõr…ÒÃÓ=0°¦T*ŒˆÈÊÎvss«Q£†£½ƒB!×Ñ4!„¢(C‘SÁwê·íÍAàN_® !äUF¢Óé²³2årYµj5RRR®\¹Â£(GǸ¸¸F‹Åb­F- qy{'çro3”­sÛ?#„ ™µ–“âeWa©7 Š"8øJ¯^=x<ža‰Z­>|äØÄ ㌇9^¥ 00ÐÁɉ¦µr¹ÂÁÁ¡Eóæžž¹¹¹2™”!Œ\&ãQ”¯ñǨäÒrè @ÅqiïBÃ0-/Sħ¤]¾õàÒͰÊ5%‹íK£¥Ó³r/Ý =rþ*Më Ë©¤ÛJ&6D ‹·B>Ÿ·ÿÛÅÞn¯Ûñ,Þ°¼iƒZ—ÏÌÌÉ¿pC5  Š¨× ¨àbžEš/ܼeûæ-ÛÞõöºµ«Ù¤$--}Öì¹á"$‰ñøÍ«ŒD&“Šâ ì”*MÓB¡ˆÏçk4¥Réææ¦Õhõz}\B‚N§«]»º¡ÆH j6l˜ƒƒC@µêC† Y4íÝþ[®ÙuR£¥¹nWñ :”âîî>uê“Gðp²Ûuú1úÉR¼Կ ®ðlȽ)o÷Ñ¥qÌóx"z¹æˆþÝ!gOæ<2k •t§,Pñx½›4iÌ®ü*#Ñhµ!jZ­Riµ¢u:F£T©Ü¥×Ó !r¹"+;ÛøÃ0FUVŽCíœl}ÔϧUZý}ßëÖp×™[„¢(ŠÔ£Ý[ýºø{{dæHN]ºq&ø_v…™øf÷±±C{ùxº%¦flÞw*2:Rh©ï9>vH//wפ´ÌÝG/Ô«0¬O'±£Ãó¤[özŸÂV2¼O§a}:ùz¹gdç ¾uêÒÍ‚o”M”„l9Ü£G÷îZíܳWëègx—=ÀGè:sìP†aróeÿ†=Þy蜇›ó/_-T©µïÍ[«P© !|>ïÈÆå®ÎNS–~Ç–íÝ»÷ÛïŽ ðõLËÌ=váÚù«¯fÁ›WÈVBéѾù;ƒº×ð÷VªÔûN]:òÚÜy•\ÚµmÓÏfŽåñ¨íΞºtÓøÝÓ]3¨k—.]vþz8KN!®ÎN]Z5R*U/^ÔŠÜÿÜþ9!¤ï¤ÅD.µð}ß, ðñœ¹rst|JïŽ-—ͳ~Ç¡Ëÿ>hP«ÚöÕsSÒ³'-úÚ–Ýàðî;£²²2ÓÒ3²2³²²³323323£¢[[¿W¯ïŒz›MGŽý~"&&öQD$MÓ„@°|ÙbC:BŒ3g±˜ÂçñU*•R©R©TŽŽNN …ÂÑÑA’/ÕÑ´Z­ÊÍÉ1þ0üÔ€*˰óŸ¿3d`ß^Ý»ì?y‘q­>¸{›Y£]¾qwé’¥o 4g»©ŒV1 ©^-€dǪ\ë©”\Kóò”Êþ]Û¤2Ýu5ŸX£:“­v­;¨k+BÈÉÃ{%*ý¡K†2¸WÇç.ÒöôÂÃÕyʈ^„k×®1 c|P³¯9v^ ÌÔ9Ô8š:—ö­šmݵ÷À™àέ› 4ðÌÕõ´È½{ëF„S'OèìÄlÙ={ödeH´N;Ž·kÛö­~]/\º¦¹Y«Pëè7¼W;BÈ®í›22s5Nþ›\(%ZâÀV8xðà'KËÌ^³jERrŠÚ¹†žr$¯;2´Wûú»¸’¶÷ìß¹¥^¯?sæ4-rÓ*Æý²ð[¡Cz¶ :s5´M“:’üü6mÚØiv5®@ ¥ŽZ|ïÂçó}|||þ›]j1#!„ðx¼9Í ¾’“›Ë.ñpw?yüh@€¿Éš¯2G†!z¨TJ•J¥Q«cbb†* å …\!—ɤn®.Æå1FU–açô÷&„äääP mïäìïãIùé§Ÿ kúûûÛiòì?³³³y­_H¡(ŠÒ©‹R*''ÇPÊP‰ð¿Jx:µ½“³¯—;!$//ïÓL¡çB¼½½í´gM‹]8{ö,!D£¥3ròö9qüðo”“—ñAmïäܰVµ ÃzÖ©îëìäÀΊ÷òòhe ’ð'Ï›7ªÓ¼Žïs¥s—ÖAÏãÃÃÃyÞ/Ç`322x^MDû<5CñóójrÖ*ä;9{{ºBÒÓÓ)ÏF";B»ñÿkÌäÉ“)ŠÚ÷Ëž¤ŒoS¡ƒyò”ôШnm›¶mH<ëVóõüçÆÍŒŒL¾ ¾@dÜ/k’˜¡¥é&MštlÑÐ^$üꫯV­\Ñ¡E£¦ kk´Úððp¾km¾=¾÷ŠêîÝ{ÍoHG!9¹¹[¶n7Lt5x•‘hišaN¯'ŒF£eIMMu‹=ÜݵZZ¥Reef2 ÞÜ1À TY†P—¾„†¨äÒì\‰Ÿ·Çû￟ýÚ¤+êµ±•šµqU¶”2«$3'¯š¯—››[’Jåíè@ÉÌÌ$´ÚÚqÊÎl%„Šbxv´Ðƒ¶s'¯‘|:e„Ÿ—ûêõ_‡Ý½m'à;vŒ¢(¢Ó¨äÒƒg¯4oTgP¿ÞwŸ$‹„v§OÐóíÕº—£8>>>1J Qk½ý½ !iiilK ¨03;ÏÏÛÃ××÷™LK4¦Ó„׬Y³bÅŠ ¨6ï¹G4–;uôüÕnm›êßGoçH9yâ¸Nè¬QkˆZS”€KrsŸÃ04M«Õ-­e¦OïÞÎ.. O’Ÿžž‘’œ,‹ýüüŒ? c$Pe¹{zx{ íÙ®o§E9r„ûØ;9Ÿ ¹7ýþS¦LÙyú¦–áÕ­1¼w‡Ï·´7*kràØ\ÊäŸÁ·MÖë­·Þ:p9bì𾄠.¨€ã”©ÑÁðZ`üð_Ÿ¢Ìϱók4ñÝÆoEĽˆMLéÚµk@¤œ¼ükW¯R®5 Ÿ5uêÔ-G/3|ÑÌqÿ#„œ>}šmIž¾rwÆ»¦M›¶éðßj=ÿ½]wÿÛ°Bxxø[ö®œûþçó§oùõØß÷¢-ö(.-7*&¡C‡„¨'Ïž={Æó ²¾öSªà€‡=IhÓ´Aýúõwìú™ÅWî?™5z!äþý{Däb/v±ø¹•H¡×ñ+—òKTÔã/Ö¬g'׳GÚ´i½ü³•†‰®äõ¤äÕ÷X,&ÅäKsò$v—§§«››P$JNNŽŠŠJNN¶ã jÕªåïÿÚ‰Œ‘@ÕtæÌ-­Ë—ÉSÒ¾ßúSÈ_çtG5ß…È¥GÏç¼H9¨çî5óEEDÇ;}žI‹T;Š›8*[K™üóÀ©¿E^¿î˜ž-ùiïÁsgÏj|iëÇiÁ‡°J.]¿ýàœ1×®]›#‘:w…vÆ»úÙ¬± ëÕÙwàVOTDh?¸qãÆªÙ£üý3sò¶îÜó÷ßkœtVxìËl¶¯œ£PköüK—£u|5wõö£ØßþøÅÂó¦¼ç$:~ø/ËO±8zþÚª¹!§N× ÕZ†h‹ð÷~0ªMÓׯ\ÒÚ9ÿ}íöôQýÁýû÷µ<‡‚ Æš4i<ç£Y›·lkÞ¬éöm›ýü| !Æ]ý~¢Oï^}û¾¼ù;Å0 û\›ØØÄ¸øø„ÄD©TªÓé(Šr‹õ ““­R«ÅNN êׯ_¿¾³³s/‡Iz˜Ô¬Çpn: À*éö¯x„' vŒ£qòzm%E6%}Ah!„g?bïj(k™0ù§m¥^ÿ'CòS)yÑi_Ȉ}‰ókãš&½0#±ú®ZJåÆZIxvŒK•ox‹Ç£n˜o'àOž<9ŸçF\^+îQ÷ewøBÆÙŸˆÿ»jÆz…ÿ!ÐJBñ×jìµ6¯µG%¡²žFϸgÓÉq/)s©¬g„Æ«qp·Úk+'Z%•N(Š hMx¢§©ÔPÂ0Œ_sbiþ @…õèêé˧ö–JU6Ü!a˜}¿ýÞ;"Ñ«‰\z½ž)™;g–ái×B.½ÊH_äææ¦¦¦Òz=aÂι#„Ç狜\]]Åb±P($„T¯þò'Kï“ð\€*‹¢¨N­1oÒé3gwïÞ­r«ÏPü‹@9оw¹´2’R¤×ë/_1ŒŽ“'íúú·hQŒ›+èÓþTðåÒl#T7ÿ>ãëëúàᡃ²ò¤©±W¹n˜ѧ=×M°€Çã§#¬Wc$œ¸r‰WøZeìÕYwOËÓßÊHnvûâUF¢×ëŸ>}š’’¢R©8jìíí«U«Ö°aC÷ÆG Ju¶$(Û nP%Ý(ÆÍæº-P~^Í#IÏÌS(:urrrâºUåG.—ߺuËÑѱQ£FOž96®ß|¿Q*“~±âsöŸ†X …Å ú¥Û:{åêÕÓçþHOÏðòòö¿ÿõëS†6ï2'¡³!P™™Y÷ä"6¯XÅ `¾&&%:ztñ' l¨­¸Jq³á+Åš²‹­ñ»EÜQ Ý᨟»`á+?7DéÖíۆϜ>ÍâÊ¥¸¥  zm_gŠ/"*jÈàA³>œ>ラþþs?Y˜™™©R©Ÿ>‹.V=W®]«W·Î§Ë–{yznÛ´ñ‡¯7Pµ|å*öÝÞÓ4mCóЍ$`&--ýÒåË÷CÞ<}Ê.1DÀb(,­ÐO)­ ”¤³§ÏžÛ²}ç{£Fmß¼qÂØ±ÛÚõ×¥à’7Éó.—gèJ(k{r›W¬â0ßœ›4jd[mET;˜ _)Ö”]lqG-tsT„£þAx¸V£5ü377/.>ÞÚÊ¥¸¥ çT=%?kCÕ®U³Aýú„Íš]½þÏÃGuëÔ6Ô¦P*oܼ%ÉϯS«VëV-?}êíéåååIIÏÈH$ ê×§iZ¯×Kòóã~ûy7MÓE-œÿñäé3d2YÌóç„[·ïtêÐ^¯×ߺ}'77·YÓ ÚµjB²²²er™VK‡GDÔ«S§Eóf% ‡mÇÀß—/wïÖU$]º†‚æ¿Ú /ŒQæAëØ¡½q ! ¥òy\œ—§çƒ‡áþþ~ä¿ dçäܺ}‡GQ]:wrws+·ÎªÕš»voß¼±n:z½¾cûv æÎ9|ôXÇöíâšBärùó¸øfMƒŒß½[WÃëýû1 sçÞ½””Ô &6h@Q©T1ÏŸøù_»qCìäÔ£{7;àá£G†.ýL,Qèlû¹YÜ@eeg[Ü“œœÌûnÞÍŠkµÚ›ÿþ›—'i×¶M€¿¿q7öïGÓ´ÉÑa¾:::6kÚ”a‹1g·Å?7oi´š]»>Žnݲ¥ ³-nÖv°¾½{Gæ1$fß3äõ}``ÿ~…nš’ÇöõÞPæ;j÷®]L*)xsï\õ†R¯¤¬o‹—ËK÷›ªˆ’Ž‘Btz=MÓ4Mgeegeg¹º¸vV­V;cöœ{¡¡*•ê‡-[Oœ>}çG²eÙ÷[xD$Ã0¡aÚ´jå,‹Å⯾ý..>^§Ó©Õêß~ÞãääË0LdÔcF»`Ñ’óþ™“³xùçÁWB† {øpåšußmÚœ——·á»ï÷î?`[/lŽÃ0—._Яoïž=.‡„èõzC&/Œ?Î$hNNŽ&b&==ý›ï7._¹*>!Á„„ÄÄé³çddd<Ÿ6s¶\¡(·Î†=xàíí]»V-­V«Óé´Zmn]÷ü¸#1)yûO»Øu’SR¶îÜiÒxã× Ã¬^·þ÷§¤2Ùªµë8É0LFfæ—ß|»á»ïµZí©3g¿ß´™aC—u:]©„θž2 ”‹³³Å=ÙbßÍ›g­8MÓ/\ríŸÌ¬¬™s?ŽŽ‰5î¦N§3?:³ý0))é‹uë­Å\£ÑÌYðÉ­Û·“’,^úõw?·ï%‰›µ̤#æ14ÿža^ß Q¦±5 ‚ÉŽ*‹Í+)xsT„£ÞPÖd ûÂ|[Þ-Ýof¨"Jafëö?999êõú§Ï¢7lÔ¦u«ø„¶¶ü|é ý'Oœ ×ëüýoþ{{òÄ /ütöŒéì/’Y3¦3 sëÎ&¿/vlÞ¸ç×½³çÍwttlß¶Í[#†×©Uë½wFmûñ§™Ó?¸¢gô?|óµ^¯ïÞµëÒÏWôêÑÇãåIòöý¼ÛN xgäÛ£'L1l¨³Xl[8lˆ@tllž$¿U‹„­–{ð°UË&µ™Wk´úõê™jÄP†¢¨ä””‡y{{éõz6gÎýÑ,(hÖŒé„Æ * {ûòélVNޝ¯MÓ†%F£ÑP¡([EQìkãÆ?‹Ž6¼þ÷ö´ôô_wý¤Óé†2vÒäC‡BÒÒÒwmßæêâÒ¹c‡å+W3 cØîZ­Ö¸©6‡Î¤ž² ”µ=ùÁÃpó¾›wÓZñà+!ÎÎÎ_®Y­×ë«W¯v?4´c‡ö†nþu)Øüè0i?»](ÞËeó¿ƒ/ûûù­[½J¯×?yêà‘£%ù«PZ;˜q…chþ=c²nýY¦±5éŽÉŽªT*Ì+)xsö zÖ˜Iï^ëõúvmÚXÛ†O)Ýof¨"J!#éÕ£{µjÕ(Šòöò¬_¯žB¡0¤Éîîn:tØý˯IIÉÂÛ7kàïçêêõ8+;»YPS±““^¯—Ëåöö ÃT X·zÇ{øèÑÙ?ÎÏž÷ñ®mÛªU „(•ÊçqñmZµ’Ëå„:µkåååIe2BH³  MÓZ­³XàœÜ¸aCÛÂaC._ ;9mÙ±“âäèxùêÕ–-š3f¿Ÿ šJ¥2 [ÖÇÛÛÅÅY©T²¥”JeÇí=:uÆÌÖ­ZöíÝÛÓÓÓæËùŠÛY{i¾”yý÷Vl\Më µwÜÐxã×ѱ±J¥jÅk!EiµÚ¬¬lv{‘ˆýËÁg½¡T*ù|~©„Τž² !Äâžl±ï>>ÞæÍ³X<&6¶u«–ìþÿ¿)ŠŠŽ‰1t3.ÞÂÑa¾šl “˜Ç>Þ¦õËJØÓp噑XÛÁj׬ih¶Åúúúe(ëØštÇdGݹkwÁ•ppxÔ³N9äãí;>}îËW®XÛÆÑ(Åof¨"J!#iÒ¸qƒúõ!lnAŒþ,Ý ûêÛï>˜ü~ïž={$$\¹zU§ÓõíÝûú›/Ò^ ìßO¯×G>~Ô¤‰^¯¿w?4ìáÃiS&BÔ«·ôÓ…é顸“ÿs •¾ü¢iZÏ0|aFËŸ:ަµ¾Àæ¯Ñâd&øJÈð¡Cü|} !ž‡Ž›3óÃB¿­L‚öÀ$PlY¡P¨ÓéŒ?ÎÝÍíø¡ƒÃݾ{wÞÂO—-ú´mëVåÓÙ¦Mš|óýƼ¼<×ÿfÝ?yúlñgŸoXû…¡6µZc踡ñƯAÃõÇ~­aÒøqîiéé|>ŸÝˆìzš´ÓæÐ•Û^amO¶Øw“]¥€â<>ß0Ž’—'‘+äÆÝ´vtÓDäUÌcÎãóÕ*õ›RmCßK7k;ØÉ#‡ í·Ã{÷C‹²2Ž­IwLvT+•¼ T‡‡G=K¡PH¥Rö5­ÕëÛ"%5•ü–Rüf†*¢®+cÏø²§~MÞŠ‹ëÞµËÁƒüý¢?föìÖíÊÕ«‘wêОrëßÛ];w"„Ô¨Qýüſؚ¦éôŒŒø„„ºuêjkÔ䯭[j†rõú?µkÕtpp „<|ô(#3“òøÉ“ìœÜÀÕKÞ©"zð0\Ï0“ÆЯï€~}'Œ#´³»}÷^¡M‚f1P=~bãÖm ÔŸ2ib÷.]K­3…ñöòêܱã¦mÛÙt­VûÛ¡C}{õ …Iû]s÷þý‚+iÖ4èñ“§^žž5j(•ª/Ö}YÜ¡ ›CWn¬íÉE컵âM›4¹~ã{Rãð±cÇNœ4.eíè(–fAAWÿù‡ lÈõ넲©ÿ¶²¶ƒÏG¶âïå[“µ$ˆÃ£¾…îÏ~3C%U c$æ¿> ‰·.çÌÿD’Ÿ/—Ë===CÃ< Ô²EsOOF ²ëdeg»¹ºêõz?_ßÙNŸ=o~@@€H(LHJùÖ[MƒšÐ4íêâ²nÃ7Ÿ-YÔ¦U«i3gר^=öùó/×~¡×ëÂÔ¨^mÙŠU>Þ^Ÿ<ýtÁ|¡PXn¿†/‡\í×§·ñ£½ûôêyåêÕ cdzŸ¤&d¼Ðb ÜÜ܌˲A˜úþ¤‹ÇÆ>g&-=}ÊûË­³:náüy+V¯3ñýZ5k&§¤Ô­Sgæô!vv‹—Šœ\\\Ì;nüº~ݺ=ºu›2cf½ºuž>‹^²ð“_™Æÿe»¼dá;;»’‡Î¤ž² ”µ=™bÞwóæY-NQÁWB>œ3×ÇÛ;9%uëÆïssó ÍkÞ´©…£ã¿È½°ðËÞðßîݺ^º|eÆGs=ÜÝÅ%üQ[Z;˜qû-î?EÙ Ù4¥[óî/´RIA›ƒT€£Þb_ëÛâUXJõ›ªŠa˜Øè(BÈ[÷ PÜònnn2™Ìx2!„Ïç‹Åb‰DÂç󆉎‰­U«¦‹³sl\œØÑQ,4ÁÇ}T¯n½^/•É\]\Ø‚"‘ˆPÔ“'Oy<ªv­Z"‘ˆ=¬Öh’’’ëÖ©-‹Ó32²²²6¨¯Óéhš¾zýŸ;÷î-_¼(:&&00P$O…+¢‹/2äܹsÅ{…B¡0,qttäñxJ¥ÒöEÁA³(WWWã²lÔ¯g'>}úL à7lÐ@©T÷Œ²Í%„P%‹_¤¥½HK ð÷÷óõ•Éd„{‡È¨(gçš|>???߸ã&ApttÌÉÍMIImP¿ÇÓjµÖV6lwŠ¢J:ãzÊ:PÖödó¾[lžµâb±8)9%?_Ò°AFÃnC7œœLŽã#‘}AQ¡(F¯·ó̬,NÏãQ„¬¬ìƒG®]¹¢¸}/õŒaãÖZÜ Ý Ý4%­ñ§Xüb4¯¤àÍA*ÆQïi¬&ã IDATáá‘——gøD‘HÄž"Ë¥øÍ\ÜRPéäf§B®…\*éInn®ùBš¦óòòØE5¨_O§ÓÉd²jþþ‰II‡?®ÑhÙ…E¹»¹N÷¨T*Š¢êÕ­CÑét†¿ôö"QÃõiš–ÉdÎb±«‹‹Z­6´V¯×k4š:µkëõzãá 7ìßccìLBˆ!ì cæA3”^¯7)k‚^¥bïøbþéÅbÃæf&??ßÅÙÙÍÕU§Óåçç³Ë• Eýºu†14ɸñ&a'2³e¿²­­l財©% Í?‹[ÄÚžlÞw‹Í³V\*•zz¸{yz¨T*æå¤‡WÝ4?:ŒDöÃ0E1 c1ær¹|ùªÕ³¦O‰D{÷ýΨò#!Öw0ãÖZÜ Ý Ê.¶Æ,~1šWRðæ ã¨ÏÎÎ6þ§J¥2\»Tð±\ŠßÌPE _¥d؃}MÓ´VK†ùzýZCb2ûÄx}½^oÈÐ_Bª´iÝÊb©ÊÅ$Pæ+:Îygu:]Q¶ZL6b W+zèÊ“µ˜˜7Æbó¬7Ÿ­UhUæ5[{«NíÚß~¹þÂ_«ÕêÉ'tlߎ“?$æ;˜ ónºX[Ùäs‹õ¡6°Øò¢¬ÏùQoµ°¼1ßÌPžÊûI{µkÕœ3k¦J¥*øà/ºõë5iÜȳ—P•:ÍY¥:[U'P4MW ˜5}{1g «ª·J¤Ü6Jé~3CQÞ {æ¥+dg³—VmUê;´Ju¶$ªT Jñ€ªRq«,Êm£”î73Tå‘TpU*Uª³%@Ùq«€°Q "CFòš**ÕÙ’@ lƒ¸U@Ø(P‘•ÂÒJc$¯©R¨R- Ê6ˆ[„Ù«ŒÄÞÞ^¥R‰D"[à µZmooOªFªTgK² âVUÒbh6TüU«VåædB„"‡ÄÄDWWW›‘Z©ÕêgÏžxzzêtº7;Uª³%@Ùq«€*éF1n6×m2§RÊ! ñÏ_ÝEÞ/ fddd|||•º‚ÜÞÞ¾V­ZAAAjµZ$½Ù¨R- Ê6ˆ[TI7Šq³¹n ”9Ã]ä_e$îž~ŽŽŽB¡ÐøI›o<ö>dž;I¿Ù¨R- Ê6ˆ[TI7ŠI³áÍfá¹6Ñ)Žh”Ü5Š;‚ÿΫV…T©Î–eÄ­ª¤EP9f¼€)Z=‚}Á>‘±è*z¦ U2à^™?ûª8©T–ž™Éΰöõövv›¯ƒ1(CR©4>1Q©Têõz¥RŸ˜(•Zxæ.2(Cé™YfK2ÍWCFeÈü8oŠƒŒÊù•,>b  p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ”!Š¢ ]B‘@™²··7Yâ`¶„ #€2åëím²ÄÇÇt AFeÊÙY\+0ÐÑÁÇã9:8Ôªè,›¯&(ÿ–@•âì,vv¶…à p p p p p p p p p p p p p p p p p p p p p TJ¥&##ßxIZšD£¡—$&d•o£ 4!#€J`ú»»wYššËþ3'GÖ½Ëê)ïÿ¨×3ì’+QÍ›.ùeÏUîÚ%‚Œ*ºcGoŸ9}ÿÅ‹¼‰ã·«TZBÈ¢…ÓÓ%gÏ„~õåBH~¾rÖÌ_†YôéÁ7žBRSssrd·Š Théé’E ²¯ïÞy>÷£½çΆ;z›]òõWgO¿³|é‘”äBˆFCO·=**eð€¯oÞˆæ¬ÑP|Ã0±ÑQ„n €©qc¶:;;„‡'FF$³Kìíí>Yø¿ï¿?¯Th!"‘ÀÅÅqÜø.¸`X¡{ÆÇŽÏã¬ÑU­Á¾J¥EZ_#'„\ ¹„1¨ÐšUÿöûq‡Ìñòrf—Œx«í¢%CwìœBQ!D­¦¿ûaÜê5£FéÄ®`oo·iËDÎZ 6AFÚòÏFˆÅö5½þH$øù¹~õõBÈ[o·[¼t(!äí‘í‡hKÙ²íý®]B6|36 ÀÛf@q ¸np,;[–œ”Ý¢eMÃ’Gá‰~þnÞÞ.†%W.GuëÞH àò7LÇŽõ~Ùû¡··‹»»»dÉÒa®®Žï~94" ~ýíÃã¿ß=¦Sdd²‹³C@OîÚ Åƒ1€*a˜iSw è÷UXh<»$-M2dð7oøA!W³KN¿3bØwŸ-;ÂY+ÿó¿!­Úw¨kø'EQ³f÷3$(„oo—gö=°ÿFç+Û´Zö(<‘‹f€-‘Ti¿ì¹|)B©ÔŒ»-=]B™7go^ž"üaâ‡3~f&33ÿÓOBvl¿´oïuBHdDrttÇí&äúµ'£ßÝ\·ÖÇžnÓ:w\yíêcÃ[÷î='„¨Õtxxw €âÁY€ª+1!ëóÏŽ±¯S’sÆÙ:~|×?/uoýºÓOŸ¼ÈÊz9aþ“ùû½¼œ|üÛÆÍë×÷ã¦Ñ„ÈåêYþ|êä=ÒȈäÑïn‰yþƒ£“ˆ2wހؘtOOç·ÞjËU# ¸põ/@Õ5bØwM›Öxþ<ãsaìúi÷´Ÿ3ܵZu•«ÞþpúÃÝQGŽjÿó¯3¸i1!:~Øÿ¾ý矧æoÝüwuPÓêåß$0fóÕ¿#¨ºÆOè:dhkšÖõë½>**…òÁ´^ï¼Û¡^=ßA7(Š¢¶lÔ§oÓ©y+WüNññqùöûqåßT†a:µ_ñâEžZC³·!17hÀÚ¸yâ TB#’˜Õ«ÇZ'±èÖí/œœD„3§ïO¿câ¤n›·Nb×™3û×}{¯ï?8{è°Öœ4òÒßÉIÙ{ö„„?´0_µÿ€æÿû_KŸ÷¿!­<=Ååß¼Ò•–&¹{'6&:-.>ÓYl_­ºGƒþ]º6pprÝ4€BØëÒßKrt-^:¬qãNÚ)•*³³dZZ7~Ì6vhĘ^ÏÜ»÷¼%]³F §««ã†oÆpÒH‰D‘›#W©´‰ Yb±½Åuø|^åºsü¡ƒ733óOŸý¤ŒêÏÉ‘åK”‰bÔÛ32òMÞ•ÉTÂýüÜØt³(†9{&tÅg¿gdHš7|ûív½ûù¸ûúºP¥Tj²2¥7o>;|èæ÷ߟ2µÇˆ·Ú"/"ÂÌV€²ò×Åð§ïiܤÚê/FµmW§à•óò^xhxzm±„\‰:{&4>>ÓÕÕqÒûÝ{ôl\Üš6YÄŽäì›ïÆMŸÑÛ†–Ã0õjÏ7Ü«­ÛvL®DÓJ‚/EôéÛ´¸¥ärõ¡ƒ7ïÜŽÍÌÌoÒ¤Úì9ý->YP©ÔÔ¬>G­¦ ­ðØñyý>+(##ÿ­áßËdª ߥàÁNÿç…‡­Z×ÂS«\kP±,\pàÖ­èŸѰ¡Ù}ʳg/f}øóÝ;Ï Kø|Þ鳟tëÞ¨Xõ$&dåäÈ?ÿì˜ñ½Ø >œÙ—=KÒ¨q€½½] Ûl³ø¸Ì¼<Ŭ™?ýíX±“å1Š"W‰ÞäÑßûo|¶ìhNŽÌ°¤NŸÛ÷ÖXœ¦“.“ª¦MÝõìÙ “·(ŠZõÅÈž=›ðxT“ ê…žúëbøÂO,ütÈÄIÝJÞ xƒáZ0Å0ÌÊÏÙÛ-ÿl×m©rÖ®9éæîøÏÍ•e:^ý ,aøÐoóòÆ u:ýù?7# ¬éXÓ+66Ýd9EQ/´rÕÛaà½VmoBˆ““¨yóÀ ;/¸¬}¹þôWëϘ,|þ<ãqTŠñÓ› êÕó%„¤¤ä˜,·³ãoøfÌÔzñsïÝ}¾cû¥·V±'Ê2’Ê*üabTTеA~†afÏüåÀþ|>oàÀmÚÖ.çæUe7n<«QÝsÒäî6”‹Ëxö4ÍÉIÔ¾CÝ‚¯ÌÔhèiSw™¤#,_?W>šXÃSh'ˆ‹Ë`ÿÙµkÃ%ˆ7¹bQ©´O§¦¤äÔ­çÛ¨Q!³ˆnÞ|¶á˳ßòów+  —·³³³}Zš„ÂãQƒ·\²tXóEoäÑ#ÿ96׆«…sså‘É2™ªMÛÚÅšº U2’JI"Q|0å§_›im…Ÿ÷„؃¢ÓéÌÿíêõåØºª®K—]º4(n©¿.†¹þLèý8öŸ5=Ïýñ);*`Ñýûqæãð„áÛo·+î§³Döv\ø4-M"—«ê7ð÷/ð”R©Ù¼ñÏwgg¿<ÿ2zL§?N-àÖg‡ÞbÆ|yŸ¾M}} JCíEvwï¯ ‹×éôxxïž¶ööv_;¶XE! ñYë×:þû­VG‰7O;î͹H J®¯|†ùhÖ¯ã'vkÒ¤šÅRSrW|ö»áŸÂ®†X˜Ã0‹|gä&C:BIJÌþᇠ”ºùÏ3ó…oÛŽÉ5½ln ÏkÓ¶v÷‘Ž”©Ô”ÜžÝÖ¬_wÚŽBºuçNl¥n]•mP·®ïÖíïú‰"‘ cÇz]º4(n:b›‹†wî¸òð¡[l:BQ«éeK[̨ÊZŸ^ëŒ.¨°0FRù|³á\zšdöGý¬­°wï5™Lž2´Už[6_´áú (Sr¹úÞÝç Ã9|ëà›æ+ÄD§…\‰òów3ÌÏÍ•?|’’ëà(4~朿¿Ûì9ý==Å!W¢!µjy0ÄbâɓԴy¹¹ò[7ŸYû‹EQTÛvu ¾W™ŠŒLÎÌÈÏ—(¯_{b­<Õ®]]Ç úð—çÏ3²hZÿñ¼}/nºqý©J©iÙª–››£ñòÇSÓÓòdr•ñBŠ¢:w®ÿᬾϞ¾xöôGµm[ÇäN¯Âòòär…šÝ+,ø…ž%,¢»wžËåªø¸ÌOì7¿‡›L¦ ¾éè$,çûÚ=yœššš×ºM¹} Ø×ÚT2»w]Y½òøµ+j×¶zC­Í–ÄÇeB–.¾dÙ°‡z÷\·ÑÝÝ©[ZÔjúð¡›§NÞ‹‰Iwqq?¡ëÌY}K«ò«!ýåZdD’V«ëٻɪÕ#]] -¥×3çÿxpðÀÇQ)ðÿZ.ûl„ÅK?~Þ2ÿãß ­°f-¯ðˆ ÆKÖ|qòÛ¯ÏZ°sçþZ\èj,Ã>S°ï7Ž/ú\ÈÒÅ0LÃzŸ¤§K ]sçOS+ìýÓúõYçvA£ ¬%ˆ-]6ÜxI“FŸ¦$›ÎN5·yë¤IᅳÀ¤TjjÎS*-?*ÙØñ“óûö³zò“'©;w\ ½Ÿ-mÕªÖÊÕ#Ÿdž. jô©aPÄ ¾²¼u›ò›ÜVÍoö»>(­»Ó–…”äœw߸ñìÅ‹¼† ý—.Þ¾C]®e;\ýûæcæ› çÖ¯;½÷·‡°ú°õìlYšó!“&wß¼e!D*UV÷ÿh÷ÏÓßy·Cù5·ìݺ=cÚî„ø,ã…¥r/ŠôtɇÓ÷\Ž4^8â­¶{­OÜaÅÆ¦O›ºëþ½×Ƈ?šÓÝ—ïY\_"Qܼ=úÝÍæoµhYóÄ©ùßÁAh’Ð0 #‘(¾•/QN³~w''QÑïÅ©VÓJ¥fÜè­ßoš`mFE‘¢ädeG¥ÒªTÚ·†¿ï·™ÎV®µá¼‘Óhh…B3oÎÞS'»båÛS§õ"„¸º:˜\ÜÄn ÷FmÚþãOOg‹•[ì»R©Q«é>=ׇ|f­U|>eí µš^¾ôÈî]WŒÏ¶Ôô Ø`q¾‹B®ÖhuíZ/7¿›ƒ£ðäéWxÖnpWŠt:ý€~_ffJ !‰ Y^^ÎŽN">÷æ jÀ˜a˜ï¿=ÿÕ—g4šW·‹íF|ååeyCW|¸ú÷ öé'®\Žš>£wé!ÄðÄŠõÿý‹í)Šºr9òMÊH®_{òÎÈMæ?þnÝŒ.aF’•%<`CLŒéu°·nF\0..cPÿ æ?âoZ/èêê(—«(Š29¹Þ£gã}ûg™ŒÛPåææèà Ôhhkë—H$‰;¾‹‹CiÕYêìííìííž«›c%½úW(…‚8³á(;;þÊÕ#çÌ`­àË $໺:k98„|>φͪ×3Æm»øg¸Éò¤Äìä¤l‹Ó•DŽ„He*“å~~®{÷ÏêØ±^qÛ`3>Ÿ÷Ñœy¹rBÈâE‡†kÓ¼y Š¢šYž~Ç•%‹ïÜqÉd¡L¦zžÔ«77׿2’ *-M¢RjÒ3$±1çÿ»pþMë»ti°v½å_Ûì}“ÞŸÒÝð+D­¦†‰{^ø˜|e¡VÓ³gýbq,ºäO‡Yµâwót¤(52ÿ€Ås twwêÙ«ñƒ°„Ü\9GµhYsöGýGŽjgÍ¿ÁêÕóõòr¾r9R¯g…C‡¶þxÁ   Óg/sî·}×ÍÓBˆƒƒÐ¿ÀÛ°úúºŠÅö’!~~®“&÷˜9«oÑÏGG§Ý»û<+KT½Wï&6ß gÄ[/¼-_v´wŸ ‚ÏÚÈåê»wbÿ8–•%ËÉ‘åç+y<ÊÅÅÁÍÍ) ÀmðVmÚÔ.õÛþóÏSót„UAtUΑTD ñYÍ›šÎèÔ©þ±z3Jv¾ØÀ- Kâã3 !IÉ…ß#¼²˜hr²†åìì0®d$ Ü;fñ­ÙsúPP.W_¹i¾œÇ£>œYÈÔ–Æ«;þqzšÄËÛ™Ã;¢B¹áóy«VÜ·f¾DéàVî>gÑÙ3¡—Ïø°OÁ'EBÁ[«ÒÓ%vvüb]Ú¶|é‘¿.>2ŒÑvßþBΖ…µgfæ÷Íg΄fgI=½œƒ‚ª»¹96jàííÌ0$33?'G™|ü÷;99²€wÞë0gî€Ò¢;{Úr„‡k]³–íWÌU^ÈH*"óõLëµîË÷Šrol¡H@i`tçòëמB覛U"·o[¸ÒÁQ¸ÿà,?[oÆR(4R©Ò|ù¢%C‡k]@Á¸çz½ée<õýÚµ/ä‰6„;;~õÅj*Tvb±}9L§(‰‡ÌÔbYÑn]ð-RÌ_Š7v›ñåc„Ó§îÅÆ¦×­ë[¬ªL¬ÿ꽎ê›,T*4Ÿ.<|)²GÏÆGŽÎ jZ£àIšÖ‡…ÆoÚx¡C»ÏGj¿rõ¨â>~Ùûål¢e«š›·N*aÍ•2’ŠH©Ð°—ðyy9÷êÕdƇ}‚š¾ÑÕhh©TUÀ…sv>!D¥Òþ@îýõ:!ÄÛÇÅâý=+#'G‘‹ñÔ¹.]|±özõýJØG™Tåá!6®9°¦×²åà nYpÍJ¥ÖßßíÅ‹<Ã’FV®Ù¹Kƒ‚ Êåjµš¶¡ÙJ¥F¥Ô–î6¥µºü|¥ƒC½t–EÓzIžÂ<ÿ«D4:_ª´aÛÑ´N"QE°l Óémø8€o<ÉÉÕÕqæì¾ÓgôQ*5_¿cÃÇ¥$猳Íbµ2©ª„û9;÷.-MbƒLˆÏ\¾ì蘱׬{—£ÊÏ·ðSÄDý~[·OÖéô‡Ý|gäÆo¾g>ùT­Ö …‚"Ž{9;Û …ÜV{{»ñº~ºx(Ç+õ¯ë ;?Ì®µ©ˆ"#“;wXIññq‰~þƒñ[Ó¦îJNÊiÐÈêÃÛ4jíÁ7ÇŒí,²·#„deæ³§!5 èØÙôWBQdgIccÒiZÏ0L`M¯ê5<Êg9æYZ¾TiñÁ¸ç¹¹rg±}žDáä$òõuõ,¥IéZ ý×ÅG-Z¦§çÛÙñ=<œªU/RóråaañµkûdeIE"··KÁwõ6HMÉMIÎiWü+ý¢Ÿ¾Ðhé ¦5ŠU*/W~çvlÿ–Ÿòúןáݺ7ª°7ó`?Ö¯3»Ò¸yF™º{;ÖÓ˹N] ³®…<jZ݆öÏózõÿÔÞÉãwßYì;ùž:q·[÷F‰‰Ù ø¹9z Švõ– w÷vldd²ùrWWGkU)škW÷êÝD(*( I‰ÙQ‘ÉYYR­VçîîÔ¡c=?·”ä??W~ñs;Z›“#7æ*¥&**%îy¦L¦âó©Úµ}:u®Ï+ìž+—ƒ#7ÈÌ”j4´›«c@O6nQüõgøî_¦Ûp/iÛàZ›ªÂÞÞîíQí¦M/è‰ð—ƒ#g|اUëZz=Ó¿ïzvá7ßíÞ£Ø×¼mÙ|ñÈ¡[\XÔ¦mícGo0å§±ã:oß9¥’’/VŸˆx”´ióDó·N¿óìiÚ’eÃJýC¥Rå³g/ŽŸœo¼pãfÎêWð)³'ORׯ=mà ïàK—þŽørÃèâÜ·÷ºD¢(àê ‹þý7æô©û£J>ô»ÕkFUð»µFE&õõ˜Š­Íÿ~Ý«W“ ›¿5mê®9s‚ ä IDATý±2¯ê|–¶vý»6\zëÆ3k½·oEÿv`– » ×»çZó…ŽÂ£ÇçY»B'!>ëÈá[«¾eíôPn®|Êû?_ÆŸ›+¿u3:&î‡R¹œÁÙ3¡³gþ"‘¼Õ i&::íw;,^ZÈwÔ¸1[W¯y‡}b™rO-ù9¦rP šÅÔ´FXhŸ÷î{Ož¸[ðÌV(‰êÕ<úömúǹ0¥RÓ°QÀ»ïuœ8©[IY°sÇ¥ð‡‰æË]\jz²¯7þpáþ½¸û÷âFŽjo¸T¸X4ú“ùûu:ÓûåBšóŒª ÂBã/GÆÇgú¸OœØí ˜Œä Ô»OÐ;ƒ>Hdÿ÷Fw4¸E¡¥L„Þg-+v²'„U_½fÔñßï Ö¦e«š¥ÞæŠløˆ¶ãÆlåºo2Z½fT)^cb>:ÂZ´d¨áÊ€nÝý~쎓“¨EËbŸAc=yœj<ŸÝÀËËùƒéeø¼…ø¸ÌùÿfÜÇ]?^¾~ceeOJ‘¼š5«!•*Ù[¥¸oøfŒ •ܺõòN£†“ÈÏôñüA¥ÔÆÊ¤i³ê™™ùj5]”«¯ "xo¾ðÙ}?2º±Ð¤ÉÝ»tkèææhóýÚZ†ñöv9~òã²{ŽXXhüˆaß™\Œ““#;þÁt땨ð [Éètú䤜aîÀbfýºÓìî„BÁç+ßNˆÏ²x?±‚Žç«WŸDF¦Ð´ÎÇÇ¥c§úŸ°UD ’’ãè(*Ê 2Ò%ù¥ÅžÆÇe½HË+ 6“+Ô ¹Æ¼f;;þåàȦ|ÆÇgæåÉmhRllFff¾ “’²eRUq F?K#„X+%•*##’ÓÍÎèW(r¹:<<‘º«È¤2Ujj®ÅPçæÊŸ>}aÃÌR™*âQ’›[±ÿÔ©ÔZö1¥Jû ,Á†™­6|œL®Žx”díñ:±ƒ‘É/R-ŒR8:ŠØ‡±ÿ¬]ÛgòÔ=z4~øÀ4‡IUÉI…?ÅÐr³eªÀš^‰ /¿`íìøýú7›6½7ÃX=ÊŒåå)G¥È¤¦7Ý/€Z£4~‡Åkƒór ú *ô ˆ2’JF«Õ%'çXLÿYg΄_Š`_¿7º£F­-`å°O¨"„Då]y•aFâ*žºûçé;¶ÿMqwù 77»üüÖ¯;ýôIª¯Ÿë¢ÅCÙñ¿ì¹ºyÓŸIIÙÕª{,ZO&S |™L•RIN’BW¶¾Zú‡M†þï[Ãæÿùpúžï7Ž0°ù³§iS&ÿÈN£ûî»?vþ4µU«Za¡ñ3¦ïfš¯Ù¯3kŸe8kÓ»OÅOÑë™ùóömÚ2©[÷Féé’ _ž™8©ÛÙ3¡_}öÇŸ¦¶nS;ô~ÜŒé{||] -o×®®á©cÁ—"6|uvÇS ´Ø‹eK‘ZM‡?Lܺu-_—jÕl¹sÎÇ ÿýNnkž4_5êý4»pþA‹§¦äÖ¯ï›Î^èèá!0°yß~MoÝŒ.´ì³§/ÒÒ$&=eݽó<55×â[%¤Tj^¼ÈëÔ~ÅãÇ©„!C[¹¸8åƒâã2ïß>i¹\­ÕêTJ ÇSk´„­VÇ0D¯ÓÓ´N¯ghZφ}Ú§V£ÓhhµZûû±Û4­×ë_®SÄëô†)nØ«­•R)5—þŽp®Ø3àhZáüQW«²²¤‘‘ÉCñ(iÕÊã"‘@£¡ÙADµ†æñ(µš¦(¢QÓE©TZRkhŠ"ZŽa­V'‘(z÷XË0D¯ghZÇ0ŒZMžÍûöî:¬Éíøy×Å襱±ÅîîîîîÀ«^ëÚíµ;±»A@0–ÍŠu¼¿?æown¶Áàù<÷¹œí¼çìE¶/'¾§ x<Ö€ßWx÷N”ƒ¬\®P߿ЋK=üBÓgQa!ðôq´¹¶SmÙÁ½»QÆN0‘œœgð{ƒÁzù"&6&K÷* ߾؀­ã|žá™ò«Œq#’CG'·k÷ËaƒÛ·Þ;td’âlhÿî§ÏÌ\¾ì2`×îq¾€€¾ÿì»g×#€æ3µF$ª«h-BÃ7M|\³.ݹ{lï>MvÇON:ðl×îqŠ#è:vª¿sרý{kíùž]vî«ÚÉqck¾œn]¶jÖ­DX,B&TÏ•ÎÈ(R$Wõò²=¦âÝãÙÓo×®†•””þøQüî;ÀÙÅjÜøözýXZ*zö4:úkF‹–––Ô¬ÌbÅù™ºdQ ÒˆÍýÝ×ÎÉaZ[ÓìíÍuOfO$âñx¬Ö´)T¢ÚM¨,ŽÃ(’´oï3}FWßÅbi.ƒeð“Рyž^öúÞÅzûßÕZ³nݨbmjê.è‹ÃÉx­·:?Ÿmð¡'†RoccfÀï ‹±° 0ë‹Á"ú6‡ÃaÌÍ)zEÃ"‘@7'kmKÑy}OÏÐJ"µÿ”uAÀcÍÌ´÷ÿwÈd…J4 ÅqÒžq#’æÍÕ‡»c¾eNLµD±^²]{oeI@ßùsÏ´>S“be+'zó:~Þœ3|ÖÚ €Ó<ü61‘ÐÁWùm‡ŽõMkö<>>G­“Z_ŽÖº•‡Ãzû8tîÒ@Yrèà3Å»öŒëÒµ`åò+Çÿ}¥V1'»dçŽ3guݹ{¬.ôðy¢n]¶ÆÇç96eü„Eá«—±³fœ~ón½ò`ˆ²±X|A† ýï0ñ¯_2öîy¬Ë¹ÁÁ \®@õ•*•””âqX­U—+PL'5hà|ëî2Y×Q.[;úýOKõÏ0¡@$â°8,‘€Ã`Å_ÿx@&$2@"â!q8‹ÅàñرãÚë{HdÀ·RciAõð°×z«6rUü`A(‚ $A<‹ ‡!àq‚(β§ rTN¥’d29F”Jå66füЩBç.õ #¡Rˆú6gnN èà«ïî_@»ö>ZÿF¢Q‰:×7öî_±XÊbñ þ…:yâuë6^zíþ MjÔÈÅ€ 5!å´q»¨¹Ç1òªŸô»­ÂšÏ,•Jì?À€©ÖimÅÍu¡Î×Òs­C£š ™Ó¦Uñ*Èø¸l€‡‡"yò8ZŽàp˜-<""RÛø$|gq'Ž¿v­c£È/R¶³gß)þŒë rhp·îš6«t#Bëëºpt²xôðsjj¾§§Ñà6‘ˆ;}n–îá€J!ÚÚÒ=½ìŠä]ŠÏ~ Á 8Çb±"G¡éæd2‰`aI!‘ÖÖ4 ¯øcŽN'c±3:‡Ãè5| Õ,ööôF]1Dq.™L”Ëåff$‰DffF–Je4I*•™›SˆD¼¥%•@ÄYYÑH$¼™B ñd HÀQ¨DG¥ñx¬©_U‚ªšš5«ûåKºbîCÕ‡Ðdåip!ï4p MÒú̲õà·õï;ͺ ¹¼N8È_µÐ××)4$±_?eÓõê9…‡§h^¹aCµN–ñrª’"qaŸ¾ÍÊœ<ñо½Ï©33œ-›5^3{N÷^½›œ9ývÃú ‘HºmËÝßåR•˜«øâê•«×T–#R‘õ1ööæ]»5ºwç“Á1M;¾}ƒÎzUqs·ý³ÝHýj™Sgfšº :‘Jåéé…ŠpÙ¼zgò…j‡ªŽHÖ®¼~í­ÛG5kV 22íð¡ç€Ë/›ÑIŠE£«V^9ppRhh’æ3ƒn-*·‰Q£Û>xðY³îšµƒfL;I"áÛø*V¶?9}Á¢^+W\17§ø5ÿÙôî=ãG<¨yÙ%Ëú.]rIµ“Z_N¥ß±r)þ”oÑòçTQlL–­-ýòµùŠñO¿ænÑÑ6Ÿ=§{:6cGÄW.….YVN@P¯¾“â‹íÛîEE¥mÝ>Ê××199/*2íðÑ)é°Ž+[Mhþ‚òÇ ¨ÖËÊ*îÞe‡Á`08<A~N’Èx ƒÇasF A&“+Gwär´ €³a}¹9…fF¢ÑHVV42oaAÅb332€£P‰$nª‡ÔTuDÒ©sý-ÛFnßzïÓ§¨mÑÒcÅÊþÏŸ}[º´ïü9ç²²Šœ]¬V¯Ô½G#€æ3uibä¨6×®~ؽo¼ZÝ€¾;wݼéNbÃÁÑb媀›pæÏ=—•Uäêj³råå(ˆš=¯XÙά3¹ ¦««õòåý/º ùr*ñ^éÈÎŽ°³3 (Êbñ ôWNÇ6ó««Îôí×lä¨6ׯ…½ŸXnD2qR‡S'Þ¤¦æ^Ÿ'2Þy¹P€ (šš°uª¾š¸¸ìv­ÿØÙÑ“Óö©>4mʉâbnÓfu•%‰ Œ'£‡kU§®5àÒ…kkZŸ~Ífe?y­<¢:'»$èF„Ùø‰åv£¨{år¨ê63×§o3w[_HrR^q·M;oÕ¬Ìâׯâ&MéXvÝ¡I…ÜACü5ÊÉ.ápõõœXÑ…L*ú$ºß¿J¿r5ÁÈaÞ¸¾xiSw¤ö ºáîfÛ¢• þJ©,W.…2™£K·X•¾~ͺQõwõò>±¹¿[¾Õ4g³ù"‘”ÏI¥r&“'I˜LžD,ãpøB¡D,–‰Å™ ‹¥„ ƒðb  %‰L$–Èdr¹ EQT*•Ëdr©T&•É…‚_’j˜›S&Nê ×j•윒3§ÞŽÝVëуïž8¹ÖÈùHÞ¿OŒŒL5ø§ý5cذVuõ9•ÏùÖsêÞ½‘^ íßûĬÚN jSù?‚ Ö647÷ÿF)ÜÜmGŒlóòEìºõƒYµzàÛ7ß×­½qåÚ|EòVs‘Xª¨¢ƒõkî¦z­6Þ6¢Õ¬ÙÝ£F·=súí¶-w™LžL&?|èÙXÝrÀÛÙÑ‹Š¸ªmI$²ûw?MžÚ©Ü˜[P(B¹Oƒô’—ÏÀ»ZHD¼¥%­FßêJì<Ÿ'Kd\Ž@&“³X|¹\Îá¸\!‡#`2yB˜Ç5hè¢×¦!ÅZ~×:ÖZ×é877[cïþMJÊ5§“ ¾QT*ÑÙÅJ¯ê–T;;º-;5K¥€Im°bUÿöm7^»6fl; =háô©'z÷Üñ!|ÀËË!%9O‘í}p"`ذ–e_EÑçÏ¿­Z=@ñ-‡™9«kïÞMÚ´ÚÀã‰âãrD")Ñ Ýí[6ßÉÏg|þA5…J¤ü>5)Àˆ¤6ðô´ß±cô’ÅÝ=ìÚ´ñ²³£ß½¿,!ñóQoû´ÔŸ'Ú¿÷I¯ÞM43Å©AÄœNV­§P§®Ms÷÷Á ÖÖ4Ñ=»íß÷äÀÁ‰0ÙAµ—+LIÉû&žF#ápX3: ‹ÁÐÍÉ †_€I-1yj§ââÒAýwoÝ>jÊÔNX,F™QÃËËácD ‹ÅŸ2é_,sððd].8{N÷Ýzôd¥r‡žX,ULúÌ_ÐSßî âóÎ݈8ÈòÔ<³A¤ôý{ÎãG_?ú Àã±x‡Å(Ò!âpX€þŸrógÖD"AˆÃ`0±1YË–\²±1#°$2nF&‘ñææ ™`eM£PˆVVT cnAFbaiô¤ø&#’ÚcÙŠ~Þ>+—_9väÅÈQmZµö²´¤òø¢âbnhH’_“5MšÖyül¥­-]—«-^ÚG"‘ °gîüÍ›»ó¢í[ïäsV® ïNðð”…óÎ%&æ6iZçßÚóóBÕ8^^ÿíy‘HdlJÊÏg—ñ¨"Ê!ొƒPáp'uPKõYkÀÝ¿ÕQ»§N>ž’’ïþûeM2™<;»$—Á,-‰ÅR§8”¼]{kkš¾=‘Hdùùl^©P.G©4’½=]¯3W fbB.‡#@Q”L&tê\_÷œH99%|¾Ø[ÏMnPÙJK… Œ-jð–Ôš"1anNqp´0uGj-±XéçW‡Ó²6)1×Ç×ÑØ}(Èç|ù’®Øc,—É2™ •Ê×hƒÎú¾´¨¨´³çf·jíi¤.©»ÿT*qÂÄ€3»ê^%-­ MËÀ‡W¯W¿s÷NÔÜÙgP¥ÑHÏ^¬nÔØµêûAdT"‘T  …¡@,JDB /’ˆ¥L&Ï3™<‘PÂdòÄb)‹Å'ql¶€@Àr¹BÃ㉠$‘X"—£b±T.“K$2‘X*—£2©L&C%©D"‰$R©|Þ‚žÊÓOk‘Ô6r9ª6×H¡E"©D"3áq\{ö‡áAµ‘ˆ3l±Ù±"ŒX$åñD‰¬´T(Jüš»Uz[ÕŒHj @¼é¯[W¯|ÉЙ³»n¢EE¦±Ù|@ZZÁÂçOŸ|sîâl.k… ‚ ]ÀªÚcŪþ :oßvÿ¾'x<A¾ýš½ t­cmê®AAP9`DR«ôëïׯ¿_qq)‹Åsr²$“ ¦îpZø­ËÌ9T‘‹¼yúԛȩÅÅ¥ffäV­=gÎêÚ­{£Êê$AdZpÖ¦²¶¦yzÚW“p“Õ¨‘‹ÁÕQ]¶äÒÆ¿nŽÓ.4|Sfö¡Ógg2ÌÓNVb'µÚ¶õÞáCÏu)„ ‚*F$ÑÅÄdU$…ü¶­÷23‹Ÿ¿\Û€Ÿ…JìÚ­áË×ëfÌ2ú.žˆðõ•¹Z !‚  ‚³6ÑÅÅftðU+¼pþý‚yç‚ØØ˜µiëµeëH73““óΞ~õe«Ú±D"nÍÚAª%r9zî̻ӧߦ¦ä[ZQ‡ kµ.p0Ûùσ‹Þq›4­³zÍ aCöYYÑ~dPVd³ù꯻v>Ô¬þæuü¥«óÊmåÚÕ°ÔÔü§ÏW+F&œ]¬vîëã¹4 ƒï£'+ÏéÙ«Iï>MÏŸ nüëÒ±£/§ÏÎT|ëíípåú|o%;×oæ§žë6úk†ZáãG_óóÙ—®ÌS«#‚ ½Àˆ2®¤ÄÜ:ul4—Ù>{úíÂùàoß² òÙB¡àâj¥Y=;»ØÓÓ¾ÜVÎy·>𗉺°jõ/‡üa°Ð#¹rùÀœ6MµÐÚš©yê·fá±£/ƒß}׬^nŸ!‚ U0"Œ+66[sYë¶­÷B‚V®а‘‹¥% ‡Ã݈¸|)D³:‘ˆg³ùvvô²[‰ŽÎôoá®Z•hÙÊSµ0.6Ш‘zÖ®´jÍ@µÂÁ÷LŸ¡¾x6úk†Zá—ÏéÙ¹‡ÍÌÈe÷‚ *ÜkWlLVcˆäèáç/ÍéÜ¥­-‡Ãp¹‚}{{{;hVoàóôI´Z᧨ïƒTKèt²b EA*•oýû. ´T¨,|õ2öë— ,S×ÍFYÈáîÚöÎÄ|ŸÍšÑ IDATËjÒD½çš…‹¿GAßI!ãŠÍj¨‘ŒÄÁÁ<èFŸ'**â>|ð¥WE>¾ŽšÕ7 ݾõÞéSo ¦P(‰‹Í^³êZÏîÛœœ-UŸ6h°ÿÚÕ×9L‘Hù1mЀÝ.®V½û4ý{Ó6›_RRzêä›Y3N{û88:Yœ<þº´T(I¿~ɘ:ù8àØÑ—ii‰ŒË¼N˜4áXvV‰X,MO/D=UY³pЫW_Ó¬^iw‚ èÏgm ãŠÉ9ü—)®u¬¯\¿tÉÅn’H¿æn†>øÌÇGKDÒ°‘ËÝ˶o½·mË=‹gmmÖ¦­÷ÍÛKÔ—lþ{ÄæM·»uÙZRRêåí0uZ§)S;ç2˜sçœõõZF§“û ð[°¨W|\öØqíW.¿²kçC++jÇNõ7mþæu\ëÖž#†îÏÎ.!ñ­Z{ΘÙÕÅÕêï-#fÍ8›ËòkîöæÝzECš…ÛwŒÞ·÷±fu£ÝQ‚ Ú AQ459`ënêÎ@?ÅÅe·kýÀÎŽžœ¶Oõ¡óÎ5iZgÆL£'«}V¯¼êälµpQ/Sw‚ ¨6“Š+¾àr¹:=_Ì¿} gm ?Ell¶æŠ‚ ¨š€ ô§ˆ‹ÍÖ\ÑAUp ô§PK´ AU+pŒ‚ ‚ Óƒ AH&“«•H¥ê%Žà¬ AhÉ¢‹×®~°µ£ÛÛ› øâ‚Ž“³åƒG+Ê=Ò#‚ 2X,‰¤ÙY%ÙY%ööæsçõ˜· '‰„7u¿j$‘@T# ââ¢R{s<kê¾Ôf|žèÉ“hƒéëëØ½Gc 1uª  õò¶÷òv¨_ßYyD")‘?aõב@TÈÅÒuk®yèöíÈݶíÜñÀÔ=ªµ­Zææ² ò?tðyï;|±ñš»s;rܘÃ+–]3êГÇêZU[³çv0ÐßÎŽŽ EÑwo¿}xÚ”ã¦îWÍ#8‚j˜•+®\<ÿ>5ýŠ¢wnGnÝr·™_Ýž½š˜º_µH$;ê°T"›¿ çLjÔOQi<žèùóoƒ·0Fs'Ž¿^±ìräç-žžöãÇ7æðó—kZ´ô0F[•ëØ‘IIyR©ìÑÃ/D"¾e+U«¶jíY~MèWpŒ‚ š$æ[æ¹3Ánn¶”ÏŸ~|þôPX¨S²jH/7ƒ"RSó]ëXðx¬X,%pnn¶Æh‹Á`nXäìbåããøòEìãG_e2ù§O?ŒÑVåêÞ£Q@ÇzŽNñqÙÍ›»³Ùü˜oYõ8™º_5# ¨&¹w$2е[Ã' „’‘£Ú˜º_µPhH"ƒ ¿ænÑ1;Q;v»²ÜºùQ ÓÍH€Î]LšÜ‘ËVÿkXXòƒûŸ³³K¦Ïè²>pHxXrÿ¾»òóÙ¯^Æ b”‘¤Ú F$¤]\löÙ3ï¾Ççˆ%Ò.].YÒ‡L!èR1<<åʥЄï ,Ó§_³yó{`±p0²Ò¤$ç„ñûà>_Ü¥kún6¦îTíô#­Ã`®[s] xyÛO˜`¤¶¾3R©œÃˆÅÒƒ‡'©¡Ê"“É»wÝæííð-:“Åâ{{;àñX33²âÑ¢"8hg‘@:6›¿|éå (Š*J>F¤fgýwjÙssY æ{ñ½}_XÀa±ø{ wwÛaÃ[5n⊠Uºù¢¸¸šZ™YŒ¢è¸1‡ûõ÷û÷ø´ÂBNàú ªé‚ ;vŽqp0¯šæLE‘û‹Åä¯\=€W*òkºæÀ¾'¯Þ¬wqµªô¶²³Kéé…›7ÞFQô‹{/\Ô«Šÿué‹Å<{±úãÇÔë×Â?¦¶hé¡ DüüÜLÙ¹ F$ô G0 ßîè¯jå¯^Æ–]‘Á`öéõOúBÍŠ57"¹s;òÐÁg"‘ÔÛÛ¡Y³ºT‰N'§§ff…}H>}ê-Š¢]»5ügç# ækrr²8:YŒßpòÄë»w¢7v]¾²ÿù‹sª¦×:Ö)nî¶ææssŠ—·ClLÖ‰ã¯6oQémÙØ˜h4Òî½ã¡!‰ÖY˜S&MéXémU×ÜÏÍÛÛJ#ΙÛðøÑWÀŒ™]ý[¸›ºw5ŒH Ó %ÆH"dp€Œô¢eK/I$²ä伜ìÍ'ðùâAöHøOL³´¤*Ë¿~ÉØ´ñ–\ŽÆÅfr4+ff°ÇÜœrúìL#e΋¥_¿d¤¤ä[[Ó:wiPYY¶ü}ÇÖ–þèñÊßMW¡(ó-kç?ü›¯ëÒ¥Á©Ó3(Tb¥4]†F]ÁÕ0 ùg—¬¬h€SÝî¨c§z7ƒ"p¸ŸsŽ •¥å·£â¼¼íæÿÏsêìbõý;ãÉ“¯•‘Tî;…J|ò|Õ¡ÏÖ¬º&—£99%׃öîÓ´²®ÿ§ÓÛ ¤¥ôì¾½Ò/›’’?kÆ)ÃêÒÌHžžönî¶%Å¥ZŸÐ¤i7w[ooñ—·3KKª§§½««ÕïfŽý[¸»¹Ûúø:(ßÙ+‘\Žž8þºiãÕ=ºm›3ëôÈáZú¯c0˜•rñõCfÍîVÆêAš4­séʼԴ}®®Ö-[¬ÿaôÈ`ô˜¶N&û9¡&KÖÖ4c·û1¢µ¥%U,’*¾e³ø€F\ŒÑÖ¨ÑmU'hó¥8\åGð‹œ‹Ë®Ä ÚÚÒ7o±c瘻ÇÂp¤‚à d2™œÍæ㲚§^éÈÚšöÏ®1|žèÒ…÷šNÞyï¾ñZ§´ëºÙìÞ;.6&ëâ…ÍG7 Y¾²¿a]*—€/3úЛ×ñª…éEçϯY;ÈHjE¡ÿÙ5fæì®3¦Ü¶ct›6^ÆkËÖ–¾tyßûŸòx"€„ï  ?cfWãµøÇ¢P‰'OϘ>õDDD ‹ÉOIÉð5§›1Úòð°1²õ“ÇÑ2™ƒAÒR #F¶®ô†d2¹ÜÐw ÈØ`D™Ÿ'**â*&«™\niIS|±¶¦n:yjDzWØáðX;;zAÁœ-wü3ÚH¹¤Ì?§Ž(…ã5ZOOûGWΛ{ÖÚšæíí`¼†Ö¬T·®íê•W%ÙÐa-gÎîfÔæþd=z6‹ØüôI4‚ Ÿ­2j¬yèÈäÀu7fL;)—£–VÔ gõת†`D™Š‚»w¢¦Ïèbꎨ«ëf³yˈ¡‰T*©IÓ:C‡¶ÔqÓoë6^»4ˆŠL³µ5ókîÖ@sÁˆ¿_ÉÉyA7"´>Ô­[à ^<6&ëÈáçá©yy¬†\þÚ4, ÀW—Šd áøÉéÅ¿™ùúE_¾ˆ=uòMLLV)WØ®½÷ŽƸ¹—•‰kì¸vcǵӫÈ0NΖS§wþÝ£ùùìØ˜¬S““òèæd×ÌÏ­S§zÎ.zïÇ!‘ð»öŒ«P_«ÒRá…óïçÎëaêŽÔ00"LæØ‘“§t2ÆêŠŠ@õO»KCFn[î¢T 3}F—*‹±Bß'j-9ªMÇNõ ¾¬D"[³êÚ©“oTw>v >q·Ž§«ãñX½¶ÅrfL;©:Øóäqt^ûmp ^=‡ªRa!gÿÞ'|.ÈçXXP\\­\]m¸¡¹9åáƒÏ'Ž¿’Hd=z6^´¸·ê2ð?‡-xñ<F$ú‚ d2))ù7®‡Wó¿te2ùúµ7ììèÕíØ”¼<6‚ ʸAaêôλvWè¯ÌiSNÜ»¥VÈ㉭[Wþˆ=‡#è×{gbb®Zù·èL©T^Ý¢UÀå Ö¬ºt#¢IÓ:Ë–õ:¼¥2-˜šˆˆ”ƒž®Z=лê Z AQ459`ënêÎ@?ÅÅe·kýÀÎŽžœ¶Oõ¡iSNs›6««µbq7=½H(c1*äèhac[ 5|1—+ Pˆ43Rů`2y7®‡ øb •8yrG‚¶Ýª\ŽP"‘Z鳇‚YÂûšÔo€ŸÁ‹¤wnGŽÓVµðÍëx©DÖ£Wã2*–—†}H®HÓúŠ‹ÍNÿQ˜Ã`òy""çâbíß½ܤ b‘´¨ˆû»§¥$ç=|ðE³AY³»‘È:}®äd—äå±Å"©=ÝÓÓ”™à*ø]Âgmg—XZR«s" ]q‰D|eýÊT¹ ÖýûŸ,ºtmhF7ñK“ËäyylGG £Gµ§£[´ô¨”7Æ2”r…/^Ä ÚÒ¨­èŽ‘Ã\·~pÙ3¡•H*ú™‰ËÕ)w­TÌ¿} ÇHj …ФiÃI“Õ߬óòX«V\LŸÑÅÝݶ €sébÈ¥‹!^^ö ÷6xXQwíêkr9Ú©sý§O¢9Á¶í£7©SÁW‘–šŸU¢˜‰¤«Ö Ô|ήüøQð÷Ö‘º_6%9¯ €½di_ƒ;Vʆ…%«]¡}{Ÿ…óÏ—}Ù䤼¢"nEšÖ×õka¶`Ƭ®¥\¡òcO&“—±>*2møÐýéYµ>º|é%­åcƶ]³®üÍ;á)›6ÞŠ‹ýokåÀAþ‡ŽL.£Êý»Ÿ´–¯ O¤ïÛ`†´ÚaúÔuëØ¬TOU>AÏnÝ.] Ù³ëàù³oÍ›®õk²&7WË'šMÝNNÎëØ©‹‰ù–¹bÙ“ÉûY)ݶ±1»|m>‘ˆ_½êZ¥\ÐH¨T"‘ˆÏÏc›º#åðoáó-SsM†î¬¬hª‘‡Ùæ-#‚n-*7ùú%cÉâ‹jáA@ÙkèfdÕmÕÞÞ—®ÌÛ´y¸Ž–ÉäG¼6d_TdÚŒ™]Â#ÿ.fÌ+<–™sHñÿ§/VOšÒ±¤¤´oï¾^K}©¶ò¦:Jå S*­º$X—w¥¼t:™ÃâgO£§NíÌf œ-›ù•3üæuœH$ 8€™9äÃÆð°ä–­<+w(rô˜¶gO¿=þï«j‘Ü»åáaWÁ‰ªªÑ¡c½Ø˜¬Š\ÁÖŽn@þÓ¨H-«Síìè{÷/·n£Æ®šsv:"‘ð uNjîßÂýÁ£åéE‹]7¾ýð•ŸTwxά3wnG*K¸\Áê•×:unP¿¾“1ZÌÎ*7öð×/ÿ!™•YíÄ·Øô½ô瀳65^rržê·ö=QýƒAê×wV>“L!¬]7Hsa¬¦¸¸Å2™¼¤¤4?ŸmmMë×ßÏÎNEd: ükè˱,Vå畯8&“·mËݳjF’òºum²²Š«¾]‹§VÒ¤i'ÏW{zÚW}gÊV×ÍæöÝ%L&O¯i‹J7y⿪ሊ¢i©ùÆhŽÃôë»S5Q`³ùú¦³ÓE^»Ÿ]šˆÙY%Šsˆ H+¸û·:*c÷ïÔÉÇSRòÝU–L‡‡%ç©,qÀã±ýúÿ²5ìCr~>àáaפ©®‹û¾Eg¦¥œ³³‚€ÌÌ";;ó†\¨>ßµ´T—£:~ûôIt‹–ªK ¿Çç°Ùü6m½u¿,—+üþ=§U+Ç…¥RÙ‡ÐäŽê)¾•ÉäB“øq÷îÊþ;²âMë+#£H"‘yyýò‘Ï`0““ò:uþm†´ââÒ÷Á ƒ‡hß{õ!4©¹¿»Ù#^½Œ³·§çæ²Pèf¤:um-ËL»ÿ_ÅnÝ Ì0+—£ÙÙ%ÌžH,1§“=<ít´²aBÞ'ÚÛ›{ûhIoŸ—Ë OÑ,G¤g¯Æå®Ú1@|\NR’–Fd2¡WïòíÈdòìì&“'K--¨î¶eŸ÷åKzFz‘f¹¹9¥K×J åóÅÏŸ}ëÓ·)‘¨Ç¿Ø¨¨4oossã®9 %Ÿ?ýh×ÞǨ­èî<îþýSP©Ä TÇÕïÞ‰š4á˜òÛ1cÛ©í·ì°Y‘ŒÝF÷Øvl»¿}Û=@÷®^_X»úú‘ÃÏe2yØÇÍõĢŽ½ñŠ‘Ãœ7÷lU¾!”Íœ6ÍÒª$Ï­©³6æ´iÊÿìæ´ò_¿w÷c‰Dfê~™Àà!-Ž›âããhaA7¾ý¶£Ôž•ùs¿AgÀ˱º,5PKQïÿ³Ú­ÛxòóÙ—.j9ä¶‚ø|q¥_³"?úÐnã—Ïé7¯HRöª¤øÑ ÖÊÔ1º½»O™t<ï×ÝOÜgT•BB´œ0tX«;G©Å$;ƒÁ ›6/7Ùø×­¹³Ï(Ã…ðð”œì’2jinLÃã±ûL¨Äpª•jð »ô´â >O”ÀØx3?ŸýÏ®1¦í•IŒŸ0~B€Ö‡¾|N/))àñØN\½òaöÌÓx<öã§-ve\³éÿçw”ÇÅ)7M¤¦TþT7#§¤šœ,J'Ž?¦È¤>iJÇE‹{›ºG:‹¥³fœrr²èݧ–¿é‡‡§lÞt[ëC¶:'â %)ÉylŽ aC—ªOááaÇå 33~Îkøø8._ÙoÔè¶eת+k‡Q.Õêб޺ÀÁmË›}ó:~ߞǚåX,¦ì…ÞVÖ4“Ç㉂ôèÙx}ààßešÖ$KÓÒ Š ¹Þ>z@5] ŽH”(Tbs÷'§w ØügF$e¸qýçò ÁCZXXPÄ")@&“—;žÔ¸‰k½zN å®N±øg½2»ë¢´TXPÀ©WÏ([ ô•Ë`Æ|ËtèXow 9‰´´T8mʉ÷Á Ož­FtY¾Q“]ºð^kN‘î=éÔ—îÙõèÜÙwŠÏK2…°wß„*>\‰L&\¸8‡Ç±X|O»zõœŒ=ÙD&áÃ"v…}H–ËÑúõêԵѥÖÙ3ï´–ä_ö¶p•ø!|SxX2‡mÐÀ¹Üà ”ø<ÑÁÏN¥Xo‹Çc×®¬uæ ª•jCDò 9Ë—^¾r9ÔÚÆlÈk×f0˜ën„‡¥p8‚ú œ/é=tX«´´ÍBÀÙÓïìš]ìâb½diŸš~¬ '»äܹ`…J\»~0`üÄ2…àìbUnÊ AþÚ4l̨CÊØ””<‹>¼’çž?ûææfëZǺr/[nî¶W®ÍWŽUg))ùãFNH`lÜ4ìOHö¦eF]7›'•[7*2m̨CªÙº|ñò¥—FŽjSŧúa±˜€¾UÙ"FêÑó¿³™V.¿2ab@ÙË)>}Ò’Ã×ÇÇqçî±å6gaAÑwejjþð!û ê$ÙæM·ÇMhGJþ5u‰*_üõKÆœYgÍüê&§í{ôxEffñŽí÷'Oü·m;ŸO_·åäÙ·Âí[‘­…îÞ¹óÁÁÃÓ³<øòüÙ·ÐФ£‡_˜›SŽŸœnpöˆß¹ï³Úþ ÓÂá0§NϤӵŸhZ}Èåè±£/;¶ß”À6¼Õâ¥}LÝ£ª –¨oíÕ»Éó—k]\­Ê®˜•YÍ´vRÇÝ¿8-µ€Åâ …K+ªD,­Wß îþ5ª?q÷¯re«bÔÂyç}<—Öu³ÉËe)Þ¦±XÌÂŽÚm8Ø¿uk¯.]:8˜fÌêªY˜˜ÈPDíбÞü¹gMñ²ÊA¥'NêPnVÍÛ·>N›r0qR‡‡&6K}áüûË.·låyóö[;zô׌¿7ß±±1Û½wœ^‹¾EgΚq*>>GYR\\Ú̯nÙ[ãÊÝýý5cÖŒSªïbEE\ÿîÜýÛ¬ñšë7êž TÁ$»—.¾ðò²õv½ŽË3·û×°×nÀîßݶݺ³Ä€È¸…ß:ÍB<{åÚür'P¸\Á²%—ß¾ù®\ÂÂfó}ë9•Ñù2vÿΘvrÁÂ^º'ª8Íû,•Ê]œæmÛ>ªŒ±¥6-ß°2É€ëÀþ»5#A2r”öS ËÝý+•Ê·m½{pÿSå²9.W@£‘6m®û2[ÃÀÝ¿†© ³6®^='‘X¸}wifÎavééÜü£2™|ã¦a­pw·{ò8ºu‹õG?h-¬M.] ™1í$ƒ¬^;Ðàp$òcÚÂùç…BÉ?»Æ¸¸Z‰¸V­=oÜ\øâEÌý{ÚO×**2­O¯TõBÇÄG~LëÛ{§æ[…RÑìmxñÞݨ¹³ÏhæÌ…ÔÔà15_¿dàpe Ë·o¿+¾hØÈEñ“‘^Ðnã¼ù=µúú:…†$*W3„¼O¬&[?ô"K×ý{쥻»Ý¿'§µiãeð¥nE(~KEB‰²L&øû{|g R?fX;‰D6gÖÕ·¥€Ž†/ë“Hd³gžÒzÙ[-ˆÃa½} 9¦ŽF%¹–·ŽÁ-éãßB¿ ¦?–9U¤.¥P‰cǶ[²´o¹«O;w>ü¥åà7ÝIÏ¿ IDATv¬T[$¾¸¨º,Ñp­cíèd¡øÌ&pƒ‡´X¶¢_EÞ„ƒnDܺùQ³œ@ÀÕûÿÁ[þ¾sþl0 AC—ŠçJ‘Jå‘‘©)Éù Au±]a!gêäãR©üó§ᑆ$üsÔ†ˆD1kJåL&ƒAÞ¼Ž_±ì2`Ø}óôjÝÚàåËO/ûß.XÔkåŠ+ææ¿æn_>§¯Zye÷£$O4žää¼Ù3OÇÆd­Z3pÉÒ>••‹zÆ´“'NÍP|ìÉåhô׌1cuMœ›­=w5…0n\{ƒ»ó-3E[N2…0¶—É„–PÑÅÕjëvõÜtƆ'àTOU„ÊF$âÂ>nNO/Ô­kSîñrJ·oiù`̜խÒ:Wå¤RyZjbκ:Àã°7o/ærB‘ÄÝÝ®âüî§6yJG"ñ短-€ ˆî™l´BQô¹÷»v=T¦£47§(Ã) …H£‘X,¾m寮ejpD¢\ÜŠÇc]¬† oUXÈmÒp•H$ñöqܼeÄì™§gÍî¶{çè¨4*•Ø®½Ïù sZ  l^XÀ™?÷\VV‘««ÍÊ•úô­¢E@'K÷íy|`ÿÓ¡ÃZž=7KÇde2¬åñ_¡(š’’ß­ËÖ‘£ÚlÜ4ìÚÕ0O»î=—_—+Ð,$p§NϬH'¹\-£#îÌÙYÕj ±±Õ«çTMÒÊÕ ¢Ëªp5šH&ÔèwnGâpت\Ë¢‹JyïRàr´ ÍvðÝ´y¸òÛ5kÕ«çäälÙ\Ï•ìªÄbéÔÉǧ¯+±ÙüܼŸG9R©Ä×ïÖ‡'ìop+ˆš‘(—µ–A‘ ¹g/õ±¸ž½šh¦NïEQE¯_ »ÿ‰ˆÿ½M÷…)-Zx(Ò¬)Kš6«»ÿÀ„ŠüþZ¶ôðõuTMî×Ümÿ‰ÍüŒ»Z­º1Æ&LH…BªÌ]Z[ÓÖ®•F´·7wÐyÇçO?JJJ7#I’“óØ,¾—­5„±D"3ÓsËIA>ûñ£¯“§vÒúèÕË¡8Ö€Z>_dØšb@§ø–r…7ƒ"Fnû»²ùy¬ÌŒb¹\naAus·%ê¿­½\"¡äÚUõ%Ï :×w¯¼?+èÜ™w7n.ª²s…þÄÝ¿&*•8|dërwÿVÜÍ ˆÏŸ~|ŽÞffFºq=|ã_·9L@^›@Àé„RUŠÝ¿N4vC”ðð”'£wWC‚´.ÐÑ…Ö…Æårp0×÷G—½cçvÿ†H6ìŸSø‡ä»÷—é[«_R^õÙýš¤xí‘Ó&Œ;RZ*|òluËVe׊KÞ`‚ª²9Ý%~glÛ1ZÇÔ2 éE7ƒ"þÞ:„]ÃÂ’¯^ù YÞ£gã [‹ªÏ(Ú¹3ï,,kÀŽ¼Ú°û2†-›ïnB§“5ºí§Ï[çÎë¡xèÚÕÆÞ,™„m•¯¼33«î‰qk ‰D¶ëŸ‡ýúü“›ËÚ»B¹á¤ //{å:Y¥Q£Û^º2¯ú„#5#´@Q4'§ÄµÎ«Ì(TâöF¿|›””+ˆ%Y-žþcíÚ36OÛ*NãÑwÖ 2 _ îØ~“"-Ð’e}'ê9SýŽ­-ýÜ…9ën¤¤ä[ZRÛ´õš¿ WŸXT›ÀH AZ·ñzö4º~ý_òØÙÑ“’rÛøÂp¤VjܤNã*šh†ª”H(QlL2´å_‡šº;µJß~Íúök&J 8~Rgm íöìüßWwnG*K>ú‘bcc¶g_ ËÔAÀÃÃîðÑÉp6Á`8R)à_º5Œ\Ž•¦ÿ(4vCDîÊÕù—.†\¼beE--ÆÅå ÑzÚô.D® :Àfñù|q4ôGÉËejô]啊’s HÄ"K {á†UŠ$L¦ö_UOÄ`0«òpi™LŽÁ [·**äê´ý ËÒÓ  w#‘Èô½cB‘$3£ˆÍâë^%;§•Y,à‹õëßI.¯‹ÿ`DRñyb{{s––Ô诪‡BõèÙøcDêÝ;QUÓWWkWWk™LŽ¢h›6Þ€P•-þFeeMkÙÊ£Ê^éB"‘Í_гFßÕää¼Á÷‰8" O"â ,™B´¶¦ÙÙÑ--©t:ùw'Ár¹BÃ^¸a;t¬G à´VÌÊ*~ó:^ó$ã %¾¾ŽI‰¹I‰Zr(ÿ—+¸{;Ê€1îXqqé£G_)úd1Éäóô ~—`ØÑ]” {Õ­ ‡À|$Õ‘2‰BÛ¶Þ;vŽùÓÒAVþÍÖþn‹2•J43#‘È J"’ðÖÖ4g+__Çúõ§M9þéë6ZlÝ"0"ª2#©úÝ¿ÞKN™Ù©s}½jµiöq³agÿ~ü´E¯*½{ì¸zc^»¡j æ#©ÍÂÂ’{vß¶{ïx¸B‚Ì-(8F*•k>Äã‰x<‘ÖZffd@äßl-ÝœB£‘èt’…µn]›ú œ=½ìœ,kýùÉ-[Âí¾Pu#’êÈËËaõÚ|ž¨ €“œœ÷åsºH$]8ÿ¼L*Ÿ2M{¶MúC\¾:ÿÇ‚¤„ÜïßÅÅ\.WXZ*äñD,&_(3™<ÕŒïJŠ#–´®àñX332ÝœL£‘hT¢…%•N'»¸Z5nìêããèèdYé/¡Wï&NΕÙ2LšÒ‘B5$©.U%‘TGD"nÍÚAÊoóòØG=;qüõÒ%ëÔµîÖ½‘ ûA¦åèháèhÑ®Z¹D"ËËeee'Ä3’’r 8Ž ”+äp®@À³Ù|‰D¦yA‰DVRRZRRªù…J¤›‘Øl-FVÄð=KE_ë‡P+=£¨• ‰ŒPÈ$2ƒAˆD<‡A„B!J¥2 *€µ²¢Ix++•JàñE‘Óðx¬„Å`,,©X,³áAå‚ëHjŒøøœÉŽ—¾ÿð—“þnƒ ZŒÅâ§ÿ(LIÉKNÎKÿQÈbñ…B ‹Åc2yB„ÿݯáädù=iwUö¶šðõZjpÆ<,C"áq8,Å㱂àðXdAˆÇá0X,†D"Èår33R؇䈨-&ËU"¸Ž¤ökÐÀùÅëµ#‡˜8þè“g«ñx]Ϻƒ È‚Ò̯®æòp™LžŸÏÎÎ*IIÉOJÊeä0ù|Qi©°¤„Ç牄"IQ×Òê]nigonpD"“É·¦G+"'K k ª5`DR“˜›SnÝ]Ò¯ÏÎ];®]7¨ü • ‹Å89Y:9Y¶jí©ö\Žæç³s²Kôúd­M7 ùþ!JJJJÅb‹ÅÃ㱊»!KÅb©\Ž |A_Œ¢¨X"•Jå(ŠŠEREB *GË‚R°²¢ÑÌHUò² ê F$5 FºqsQ×Î[úöm÷Cñ`0ˆbÍŠ©;b2={5éÙËc$' %B˜ÇIÄ2.W J 8˜Íâ—ò„¼R‡#@Q”Ïc0Ÿ/†iO!‘Ô<ööæÇONŸ3ëô›à@ø; APuƒÇckýnjÈà¹65R@€ïÐa­ŽÿûÊÔ ‚ ÊÇHjª«úóÿÔém‚ ¨öc$5LyAÕ0" ‚ Èô`DAAéÁˆ‚ ‚ Óƒ AA¦#‚ ‚LF$A™ŒH ‚ 2=‘@Adz0" ‚ Èô`DAAéÁˆ‚ ‚ Óƒ AA¦#‚ªˆH$•ËQÕ¡P¢ö@\…=‚ ¨ AUA&“÷ï»sòÄQôgPòãG—û’Ë—B•Ϲpþ}=ïeII¹&ê#A¦#‚ªÂ¡Ï>F¤Þ»µ}Û}€\ŽÎŸsŽË,Yt!<<U²võu‹?fä!‹`±øjc*Õb0" Èè¾glÛzWñõÎnßúxòÄëD€H$?æHfFÑ‚ùç¸\ %%òÄcŒfó¦kRSóMÙo‚ª‚¢hjr<ÀÖ)ÜÔ ¨’Jå=ºmóñq¸w÷“b™™LÀ㱃û_¼¢x޵5ÍÒ’êàhò>QY2p°ÿþMÖo¨F)-¾~÷àþçì¬&³T*•[[ÓllÍüü܆oåáagêþA¤¢ÁŠ/¸\®NÏóÁo_âŒØ)‚ ˜ÌÒÆ]÷îŸÐ£gãéSO¢(*ˆç-è¸aˆD"»v5 Àdò®ÞXàííеÓÖ? TiËÖ‘¦î;TÝI¥òËCŽ~ž‘QdeMkÕʳGÏÆõ8»ºZI¥r.W–V°eó2™°ýŸÑt:ÙÔý…ÊÇH ª:›6ÞÚ»û±¯¯cpè_$^,–°'44iá¢^o HJÊíÞe‡#¸soi—® LÝß )(àðy"+kü 4Eì{ºß2…0ujç)Ó:ÙØ˜™ºSpŒ‚ !pÃP¹9² ‰„¸sçìÜñ`íúŸoa>>Ž/ωɪ‰áˆX,}pÿóÍ ˆOQ?8\.Çâ°¨•Éä..V­Ûx͜յ¹¿»©»Y¤ÿ(9ü‡#8qjzÏ^MLݨrÀ1‚ ŠÄ{v?ú÷è+3:) Àwè°VM›Õqp°À`Å9Ìððä'£E"é²å}›6«kÚ×h>$yhæìn«× ÄbáþŒjŽ‘@TEP}þ,æâ…÷ßãs½z7 Ü0„L!p©ˆˆ”Ó'߯Æd•ò„¾7·³£Wvîë—Œ1£yxØÝ½¿´EK­Ïqr¶:¬ÕÐa­„BIÂw†¾M (úìé·KC¾Çç Ò«w“õÞóŠøüéljã¯cb²8AÛ¶Þ7sr²¬â>¼}?kÆ©Ûw—ú·Ðc´©°sâøëà·ß³²KÜêÚ¬X5 Z ‰DÒë×ÂîÞ‰JNÎ33#ß~˜º_U F$é!3£hÆ´“Š " )‡Ÿ „â}û'èu‹?îÙ÷?+K2Ò‹²²JõdDÄ÷<99O ìÝ?^¿¾V—+X¼ðâÍ Õ^¥¥å¿|½®ÊúHNÎ[»úúûõŠ\Ïœz»nÝ >O¤ø6'»$jİ›==íÓMýDD¤Ìœ~*ýG¡²díêë4iÒäŽ&ì•IÀñ.‚t•UÒ«çÕpD!,4I¯ëðx¢ýv©†# áaÉÊŒ®±1YÇ;vô¥Á½­| Nû¸YÇpÄŠ{®Ž(„}ÐïžW„@ «õ,§?3 ŒH Ò‰X,}ñoAOå×nî¶)4ÉÚš¦×Å« ]¶¢Ÿ^Uø<Ñöm÷NŸzËûÿŸìo¶zõf½ƒƒ¹Öç‹DÒçϾi}hÎÜz5]î©f)ÌWùyU}g»O}•Jåšå­[{µhiúMO±1YŠì;jh4Ò„Iª¾?&#‚t’Ë`I$2µBA¶íÕ¡c=ý.•ÇÒ,œ1³ëD•wáCG&÷ë߬q“:µ&ÉD~>{`¿Ý ¿,kÍÎ* º¾`a/­UŒÍTÅ=èàk¬ŽjÈÈ(Ò,œ01`æ¬nUÖüy¯YèéiîÂìê°nôãÇTÍB2…pñò\GG‹ªïÉÁˆ‚ rp¹‚»w>pèt2›ÍW–;8˜Ò’B&œ;ó`F'ÞªŒëH¥ò›AB‹ùe›…¥_¿F\Ο ˆø¡ÃZ’HøAƒ[çU2@L&ÿvÛK\\vdD*Š‚ƒž¦¥iùƒ8*2íÜ™w»ªîÓápwïDpÌÍÉŠsô½ç!“ÉoÝüÈç‰Ô>¼étrŸ¾Íüý=.œ àðØ¡C[RÊœ{ª\eßp…ðð”„øOD$┋]p8LË–žû+GžÚøøø”5'(—£R©Œ@¨äÏʬÌâW/cããrèt2‡#P–{yÙÙ:3£Hñóus·íÜ¥í 26˜‚ r|ŒH;ú°H$ÄN&“#‚Á x>ŽÿìÓµ[CͧmùûÎÉ㯥Ryi©PëuÌÌÈX,2hp‹ƒ‡') #"RÆ>Rñ{^……œÎÿ.å •?/‹!üÚ"çÞÒ†\ŒÑUQ‘iö? I,..ur¶ Ü0tì¸v¿{òô©'^<Ä8V.GQE0‡UfˆQX´¸ÏÒå}5«K$²ë×ÂΜ~›-K[·ö:pxR%®g:6xC`X"“ËäAå(‚ 8‹ý¥{ÍýÝïÜ[ZYVƒó‘T÷ˆ$7—eoo®öo‚ªÌ÷ïŒ+—B>EýÈÍeq8A¨4¢½ù !þC†¶¬úd &”™Q´léå [‹*~©Ö-#¢þ®øuL…ÃÌœ~òÉãhÕB •˜š¶ïwC;¶Ý׺ÄrÕšk× ú]CéE+–_¾q³îyE´ò_ÿñÓv@"‘­\qåìéwÊ­X ‰ˆú»ìŽÅ‹.ŒÕ¦];½šKK+˜8þXÌ·__7mV78dƒ^×)×½»Qqq9eü¨¡ªu†4sÚ4ÕoÙ¥§u¬š4zÄÁ5ëÍWuk¸  Kyq`ßS‘HÒ ¡sëÖ^»zy9àñX©T–›Ëzý:nÚäftÒÚuƒ XpÕ\R©|Ø}#ÔWðy¢ôŒ¢ œµÖ*))EDõ•@Àþ5tá"í+H Usfº¡¾÷X.GrËŽH —Çî×{'ƒ¡¾¿)á{Š¢ÕaõI-VEëH4£E'Œ;ºfÝ † µõ}ø4lð>@¼yÓíÞ}šþ™[¡j1.WÀf Øl~zzaë6^Õjõâ˱3¦tv±:v|jÏ^M´Ñ ØÀbñ/] ±w07`ZhhRHpBVV±‡‡ý„I¶¶5/WéŸéÜÙwšá€Lþ{gÐÆÒõñ‰+ÁÝ)J• uwêJÝÝno{ëîîîFÝ ¥@ ´Ð–âî4îú~ØûæÉMB ÐîïìîìœL6»ggÎÿ¬–Œ[Î.V3föˆŽÊ,(¨tuµî? Õ’¥=ÅÖ¿I¸oßw.té㇤©“O båù•áiм Œ‰«I±9+°×ú#Þ˜Ú#—ËW®¸ ©™”¹{'òБ©õ¾A¥2F =˜•U¦¼Q"‘Ý¿¥³Gò)U}cÿ­NœœY'«VÅQÙ‚B!÷˜øšœ\Äç‰n\PqG ž=ýþý{Îà!mtÂk¨TÆÅ  ^fFé¶Ww‰ˆ[»~¸–%Wxüø;¡P\QÁÒr µlù` “›1:}*¸¢‚%“ɱX´âÁciIêÚ­©¥%iÇö'1mzwe¡Ð§Ð”°°”ï±9D".3³´º“wèà9jtÅ¿%%ôKC ^FzýŒyrR‘Æwbû¶'Ç\(”=òZ WT°µØ€F£/-¼þŠËú4ðìéwõÌ耔”âmÿ<öò´›XsÑ–{w£ÒÒJø—+Ôr"7kV/SóHärù×èÌÂÂ*_Ô´©‡+ˇ!’°%%tEä …0°•²G’•Uö)¥¼œ…F£Ê˙՟€Ç*{$t7òs›Í¯yÌE-"Wù%ä§S5@$bÃ>¥ˆÆœÏEEf²X<OÛ÷EÀc§Nëy$……Uáa©¾H£;`³aŸRètnm<’ø_ùÑÑ™4×ÕÅZ,–Je2M$á nXØÿìiÕÊUÝ#IL, û”B-¡ ø"è~¨oo…G ”T*óñqfsH$‚€Çà𘌠ªâ $"nöìÞÊ7«_qy11Ùåe,î‡NM-IO§¶më¦ì‘ÑÂÃRét®€/Tï‘0¼ê<WxþÜÇóç>”•1Äc'fŒo¨ä4 Cƒª#ÂSgÏ<Ïbñ©åç´<$._ú´võm" ¶ÅÇÇ ð4(vöÌóq ûêkÕP*•MžxÊËËn÷Þ‰µ|\éÁÛ‘kWßV©Y0> óÕë ÑÎ:ét”Zý­¯±» al0 ùa‰XzèÈ4 ¨T*£ß=)i‡’“ЦL>Åbò=½ìôm]ë IDAT>…o©K§R©lõª[ê“ÒgÎNŸÑ£.g®ŽŸ?r§M9£çäd™šq¸º&N¨¿®ˆØÇOV5d NýPWÿ²Ùü¿6Þ?z|†®ù£µú·ß=Ï_®Õu ÷ÄñwÖÖd]/ÅzTÿ:Ú/Q©6hïçñêÍú?‹®êß[7¿,[rM}»v©su,œyñ’ú)ÚôPÿê'u9üpD¸êꙌú|Mgÿ&ÕµÒ[ý›‘ApR%áˆ-(:UïÉÜôÀ¤Õ¿sf_˜5»×“Ç1·n~F¡'uÑîV–-¤xŽBo_£³êË#Ù¼éÁÄI]ô[‚©%/_ü\ºøšú[>µDCþìº#•ÊÆ×X ‹ZBo`dû?Ozôh>qR—ê(+eÒéÜn]¶%'A[œ5½^èÄÆõ÷ÔÝ€Æ*eu'?¯rôÈ#ÊÉ!**Xb±´º+\$’¨H@›4±¿te~‡ŽÆ/±¡x<öí›ø‘£: 񮯦ÀÔ€Jž\À„‰þGÏ0Dx …$°Ê/c$n÷ž‰sæõ©÷¾L‘Úväº;p÷°iÔî0œGòðþW•H(KKÒí»Kk35F£¼¼ìœ]þ§¬jS•Pëçe—HÂéêŽDFf,[|MyŠìÕËŸaŸÿ©nVXP¥¾ÝÎŽ²rõPº®%Ÿ#Ò4n_½vX+Vp8´wšZ ùj¶¶”±ã:†']»±HyJV.—_¼ºs{"ëvTTFHpbÌÝÕýÂ#?§+"Ñ”0°UmªBäW.]r]yÒõí›x¡P¬eŽ=22]}#ܱk‚ö¾z÷i¹nƒq"{ ÁðíW¯¼el+`j‰DBPvviaL–ÁCÚèZ Z?>Öp·G »÷Ll€Þ Š¡^ÎTýúû~ŽÜVË•r" «"ô}óêÃÔ£…µçõ«¸1#¨¬Ø âêTò*•¡#éænóòÍzùê$bÙòAµÑÐ70Íš9ÒÆÁÁ<-óÈ¡#Ó¬mTäï¿nXwW¥HVVYFFµ:…?rÕ7öëï{óö’íÉÎ.دúð»·ñ‡¨ªT•I¸«×vïnrq©¥y §¢bš1È000ú‘•Y¦²‹EŸ89S92º‘b¨9¾@äîaƒ@ Z·vݰq¤òZÚÅ ¡ÖÖd-ÓYÅE´Ê ö³§ß¡³³Ê 96›¯ØXGØlAaa—#p÷°Õ>ÍÅf 6®¿«1ˆº¨V=U¶ÅÅ4¨!‘„ëßßwØðöi©%i©%›Ô" çâjUTHƒþmÑÂiÔ˜¾¾.ÏŸý¨¯.är¹H$ÁbÑ5 R˜ ^aQ•€/öò²³RóÀü»x7oî“óêåOÆ û”’—÷od~bbá™ÓÁêçD ?䦧i=‘HâímŸ]=-† oß³WsrG•µw÷sS XËõF&ã1´pƒF#»ti:jL¹h¿Dóò*#ÂS‹‹iÚ­R±P$’àŒäŽ+SYÉ.-e¨|@¡PÌç‰îß‹ÖIyȪ¿ß²‰$h4©{ Ó¸/_üÔUi™œTD&ãu Ú¨¨`•–2ëe¬ê2æl¶@§¶ßcsòó+uj¢å:/,¨R¾EèD^nÅçð´ò2Ví›èúa!Š‹h¡¡)*ùWj$6&»°úçHu‰X<¥¹C ;yŽÓÑÜ‚¨å_„F#oߊ´¶&?ZXµBCP‚¯¯ËÛ‹µÔ¾‰/°¶&kñ,«Cã[8phªv]‰ˆ4XçpÎǾùùyêÝœ]èÞ£yÃg°U¡ ¿òÑÃo*q9¯_ÅõéÛ²o¿šƒu”!qµ‰ï1"8<ºeKgFRÌ ½z·Ðu¶ºDuýÔùy•OÇÔËXÕeÌumËbñår¹NMH$< O_õ)Ø{w£:tðÒOýûìÙ÷ö~:©õ¨›7>wìäU›ÒÊ0™<¡kw$"N$°X­%LS4ÑÓÓN.—§$¹¹Û¬]sÚ¸bÕ:ž¶° j¸ãêR©ŒÏUw!‘p*2¶ÎþMN™mÐgc$1¡`ÖŒsb±Te»@ ’JeHää'r¹œÃ,Zpå募P¼Hu¿d 9ej·}&h†€HÄZZ’ üf.®VGŽN¯1c4 àë׬«Wž>_clC```~LÑ#A"]»5 Ký %þkÛÎ}ò”®u<íÑ£o4®¿øúºh)»jeMÞ¶c|~^Ei)ÓÝÃF‘rØ ä䔟9üí[v)•ÑÂÇiË?cµ«Wê‚\. N¼~-"9¹H,–öë×rמ‰––$]ϳß uwЭ{35ìµ+áû÷=g2y÷îFA[0TÿŽªµ yמ ïÞÆ …â-œÆOèìéiÀ²Ïh4jÌ¸ŽŽ))Åööæþ]¼Gî`¸¤y†#5µäÜ™ïßs*ÊY­Û¸mß1Þ‰”Iˆ/˜2ñT¿þ­zõö1hG000¦è‘úõ÷Ý¿÷6ˆÃ¡kŸ\ ß¾f©oÄbчjª{éìl¹xÉ€:ö^Kd2ùî]O}+•þ[-³¢‚5~̱¤Ôƒzx 5RRLŸ?÷Ò—/ÿ²Þºù…ÉäߺS³DE…ß5¨]Èdüž}“T6¾zõŠ$E ]ºxçæ–_»¹HyZµo¿– ¹àEÀc7šž"©öˆD’-›^¼ª¼|üô+./5ãˆöR´uáiPìâEW)f„³ç Ô ÌŸ†‰¦fÂã1ŠôSÛwÔˉz‚++òý‡ËMJ®¹|éõ#‡^+ÜGœ\Tï}••1‡ Þ¯ìŽ@Ä|ÓàºÕS-]˜“³å³k}}]T¶‰8OO;++ò¯„}ïB6¹¸Z p©n=‘Ëå³Î_8ÿQE[UÅÉʪV,]ØlþÚÕ·g]rpçÞ2-ó‹0000:a„9‘HrôÈ3JµqaÅE´ '±Ðß>>NeeL-e'k …tu³†ü ×Ò×ÙÏÏ3""-¢šÜbÑ‘™)ÉEÓ]h¡²‚”X¨«Ùy¹ÕÉ·ž}×.dMI.:s*X]j«…àw J¥Ñr.G8vô­Æï‹AQÌ¡É …кµkÛvî¯^ý|õê§Ê‘žž¶ööæ÷ïE_»(.¢]8ÿÁÎÞÚ[\DÛ»û9«Û”X…U«#?¯2/¯B L{õÚêøù3O,–ª‰ @ìƒû_â5ÉyÒÓJÞ¾Ñ7‰Dܽ‰®×å'‹ÿ+.¯EÓuŽ@ôëï«ñû­ ú^CÂdð?ú–˜X¨¾«!/Q‹¯½öoí©Ë˜k¯ý«NVfiE9[cÒ„ê(¥2Û·=Qßÿ+_ù¡5ÖþUG× ‘”XxîìÛj£ï5Rcí_è÷U2•$&‹< 5a’¿£ƒ…ƽÙÙe³gž‡& <=ínÞY‚ÅÔ‘/žýxú| —'”Jdµ“äq…Í[8  [`sz:µªŠ¨[]û;‚4n>¢ý²åƒ´·MN*;®SíëþÈüêå0»6nÙ[Sd@y9ëÒÅЀ‰5¨p¡áe±ø(²F5Zy9ëå‹Ðø|ü…¦…âfÍ nS›ŽuaÙŠÁ†}ÁÀÀÀ˜ŠG’œ\´oïsèï#Ǧûû{z÷ö û”²hq)oMg'Ë®+7Xw½zû+™„rmg˜ºàÕÄ®m;}ÒYꉜ£yQ¦Ž˜ŠGòׯûP¡™qã;+JÀ÷îësòÄ{‰Dfè¢0000µLÆb ±q‘šRܹãV]§öØ, …T¼wÕ™T®“bE ÙÙe¾>ëõk[VÊÔ©­€/vu³þ{ËýºSáË—ôO¡)ºŠ› è4îë—q:%P¯¬`ëÑQtTæ¤o'ID‡ X9‰8¹\N `Q($ …Äã12™œbNÀbÐÖÖd“ŸWYQÁ û”B"á1Åœ€B"Í-ˆh4R×@¥ß#x$B¡xÍê[ÊëÜ /<,@ bE"ñ¬ç2™œJ¥³Ù|ßëˆDœ¹ÑÉɲ.yÒŠ‹éЙu"-µ$ìSÊ“Ç1:µb2y™™¥ºv—_°vÍ]+xAÄÆfoÞôÀ̬¶±D"ÍÎ*×ÉB@ X»æ¶Æý†W쬲E ®h) ­‘ÌÌRSc¥_u*ÊY¥¥Ì’º® kùy¥R'âq…,ŸÃ”—³2ÒK4 Í4%^¶ä«áךU¾hÁ4º!’ÌJ$R Y/ß2êå<†£ªŠsî쇗/4h›eryq‘Õ›•¡éÞŽLÆ××X)jƒ7@[¡“Ù40{æyõ]l–€ÉÔ_¹ª1U·ðxŒÎáXj9™jÉ‹ç? …@ H$ª8@"($Šh4R&“3™<=,¤Ó¸5dlŒà‘àp˜£Çf(km6ozö)pö\à¸ñßcsæÍ¹”›[PTŠÏÊ,Û¼eô’¥õë׿ãÖ·ëÚjÏîg­[»ŽÝA§VI‰…ÇŽ¾½rmN­Æ?rtš›»N­ fN?·yËèÚ§’c±øãÆÕi@¨TF‹¦k®Qk£ßðªÓ¿ïžóçêú~pâø;kk²bv­ö„~L NÜw`²® •?¯H$©ªâ”•2““‹âåWUq8AU›Íðø"WXUÅ2˜!‘ˆÀ¹½§LíVû޲³ËB‚OŸ Ô¨µÐoÏù‹5K±`tÅ×gýâ%&ø«ïêÓkWÜϼ³¤];÷zùeù4[§‡ç­7¶:qníÉÐoÏõ›‹ÔËÆ×ãeCo<=mõðqcŽ}ü¤w§r¹\"‘×|««…æä¹–V üË$VmÂÂRÍ›;Ž× œ\4zä(í2l6ÿ¯÷s²Ë×”÷Æ0¼¼ÜЬ¬ÒÌÌÒ’ú¸1Ǹ_ f1ù,Áà©$ÛUFy{;4Œµ0âð‘izMì뇳³†ô?zpæ\ PX? @µ¡…O½ èvîžP÷ÂïµÇÂR=Á–­cÆt¦Ñ8¾˜Nç …bƒ‡Á  ™P(‘H¤R©L(x|àóDr¹\$–@ BX.—ób¹L®\ÛU{}’Å5 LÂ#¿Ógö„¼ãu«ïp8 9jt[[³û÷¢7oóòùÈÈ À¥‹¡;yÕ½ð ŒFÊʘÅE´ŒŒÒÔÔâ‚*.WÈfñL›-àóD WQP°6¯Dh4’B!’È8ŠB!àðGG–l`L޼Œm‚>ôëïklô¤eKgýÒ£5$~<ý:è‡M±XÊå ±€/âò„b‘”ÅâñùâÊJ6'd1ù,6ŸÏ1<p¹BÃiûŽñ=©T­óõë×PVÆŒŠÊÀáÐAÏÖôèÙœJe\¼:qR—ÅK,mf†7£,,ˆ$<cf†oâmïããìáaÛÄÛŽç€Ñã{$«¢"$ñE¡‘€N›(ö¶÷ó€<Àä)]ÏŸû÷3ïÇ\Ø#©;¾­TKCn‡¹9ÑŒB à1–$ …`ooîÛÊÅÇÇÙÞÁ^v1Æ©ý»}Ûc’’˜B.—³XüËn ‘PŒB!Oxÿáÿé©TÆõëyùÿV©…òŠ>~“›[¡S¿¥¥Œ•+nêjmÜϼؘ쓵#•H9!—+¤Ó9L_(ó¸"¡P¬kw))Å;¶‘k­àU&>>ßžçµN¦)Iòr+u²ÏvlBÒ$„ÑoxÕÉϫܸþž–¢µ"¡˜Çq¹B(žT ˆ%:ëêj›£kw•,3‹A£Hd¼•‰B!H8üWjÙÁׯY_¿féó‘ê‹Éüýר® y¹•×ßÃÀKBõ ƽqýóçÏéÆ6äO¡²‚Xµò–± ùmÕ¿šÁbÑÛw(«¿|I>äà”iݺvm À`Ñ_"Ò÷ìI@ß¼þµmëã'gBß»õãû•iÓ»/^¢[.ׯQ™Š“Ô…úW,–VV²!…gjJqU›Fã2è\¾@ÌdòØ,>ΕÉþ'ßòô´Óµ»€qÇ·m§·ú÷¯¿uSÿfdPu²Je<¸½mûxê_ý†W¤ÄÂÍf±•¬ì¬²¬¬2*•Áá8l‡+`³|¾ˆË²Ù|åÑtìäU/˜ÙÙeAObö웤¹Ò^RáCSàÕ¢zçCHâ¬Ù=5ªa AlLΫ—qÇOÌ€ËJ‚ëWÃaõoméÑ£yÇN^W.}‚<’½û& ì·wRÀÉ+×:8˜{7µÏË«JeP֬‚*€¿“Nª/Ê Ï¼ÜŠØ˜œ×¯âŽ~M§s…HÖU«˜Çæ-àêqÕÂ`ð¨TFA~ennyNv9”Àò9ÒRKôßËã ™L>”ã–4Ó±8 ŒIa `ÿ)CïŸ4¹ëÀA­Édü»MkVÝ>w6dÇÎ[™LVPPééi'—ËŸ?ÿáÛÊEoDU§¤˜–™Yš”TTXPÅáXL>ƒÉãp<®Áà锹‰DP(²žbF ›áÍÌææÄÁCÚÔÅÂFP(©(g•”ÐssËÓÓ©¥T“ÉãñD,ŸÏ±Ø|¡@Ìbñ¡$°ê”kËã„Å¢)ˆ%q$2ŽLÆ›™áI$|ÿF+n„¦ã‘têìµmÇøÙ3Ï?x´¢GÏæææDEÂS,íæf“UîéiwårXjJñ»àMztQZÊ1ìä|p¹&‹FÔÈí qæD …`fF°´"5oîèëëâêfíìl…Ó¥zÂoFI }äðÃ\®€ÃpyB>OÄf ô+ÉÇcÌ͉8<ÆŒŒ'’°ff"kaArt²hÖÌÑÃÃÖÙÙÒÖŽëia```~'Lèž¾|Å`ÀØÑG—.´jõPe}¶wS‡””â„ø‚ýûž_¸4¯³^K6b±ôsDZ‡©H-Hd¼µ5Ù«‰¤ðôô²577”pœÍ⇇§ÙÚšéѶ¬”ù%=¯ÖѾ<žËѭ܃vÄbiDxj-Vžç ›áÉd<™Œ#°.®ÖM›:x5±st°pqµ†+,ÂÀÀÀü9˜GX¾bp—.M×­½}þì‡^½[´háD"áètn^nŇÄV­]Ÿ¾XÛ½{3ýNÞ¬¹£¢ƒ27'’È8kFÁ›› ¬““eÛvî¾¾.öææ `•žN]¶äšÞÍuU‚H8½ûRÇÕÕ:#ãY= ÇŽHÂ)û ÁÍݦysG//{{s;;Š®õ`````~Wr¹<;3`ëôµÏ{ôð›ÛŸfÎêyêÌlå]®N˺vkª=.“É+/cñù"‰TFÀc  ìܹNѬqqy‰ŒHÀRÌ d2žHÄâpä”F$ìS ƒ¡‰K]17'öíײöÇK¥2*•áèh¡Ñ€”·x†H™‘ñ"ÇÀyuë4ìNN–î]…ˆð´nÝ›6Líß?ŠR*ÃÜ‚ø§ë65ÄbiYÓÅŪæCat§¤„~æ\`³f þ/Žþ`³kUJ"â"Â>˜Díß¹pþcDxj½À4eF8œ]Ö`Ý99YþöCúÛ×þ…ùm0­U›ª*ÎϹNN–*™4‰D§^ƒL“¯ÖÛã`BIГ˜åKo@µ›—¯¼{ïDÅ. )‘Hg Œ‰Ò±£cB¿b½1•¸Âª*Î’E× wpúTprr‘b/'¬ß0L˜ßƒý§à5e—‡it˜ŠG’˜PÀçÿ/;ˆ\.OO+ùßÞÄBWW ™Ëa``````~LÅ#±²úOÍ4Ù®½ô·\.ŽÌ覯èÆô1•èV­]œ-K© A&ã÷˜ìåeízýêÆ6¬q-„i¼df–^»îàh媨`••2mÓ­ü²c*˜ŠG‚D"¶ï¿`Þå‡&/XØ_‘z!5µdÕŠ›;wO áÄ0000z’šR|æt°â_½tù Î½h Œ ¦â‘&MîZ\Dÿkãý¨È̱ã:Øè¨ÌKCW­:‘Z§» IDATuZ7c[Ó¸13#xxÚº¹Ywöo2irWGG c[óLÈ#¬Y7¬_ß+—?:øJ.“·mçþüåºN½Œm L£çБ©S¦þçí®° êæÍÏsçõup07–U00 LË#´kï®’u¦Á()¡;8XhÌ×ÓØ‘Éä—.†Æý̃ê\f¤S++ØóöÓ¯º'ŒJŠéNΖƶ¢ña*Zã’œTT_yðÀËR*ÃØ¶ÀÀÔ?(òí›_mÚºuìèõ4(öèá7 …w,˜à¼¬GÞ¾‰¬^uËØ†4Jà ¾}ÍJJ*ÈdrcÛSÿ´oïÑÒ×eå²ù•oÞoD£‘ù•§O½7¶]¿×®†är¹\ßItöH``þåËçôèÈÌaCÛ˜úä{lÎô©g&N8™”XxýÖâ;š4±·±1Äÿ*0¶u¿b±ôä‰÷B’îil[°G ªxyætpZZÉÀ­mŽ>TV²â  ž± 1Ö¬º ½¦T®]7¼ªŠýúUÜÊe7 ½‰ `aA4¦‰¿/„~ŽHÛú÷CssbÇN°&Cg`ˆ%R¹\¾tÙ € þkÖ3¶9ºÁç‰-¸²dÑÕøø‚±£þµñ>¼ðôÇRRBý*úûæhÝ`ÜøÎíý<(fÀÌÙ½¥¥Ìª*‰˜3¯ÑlýáóE áÙ‹µ;yõÐÊØæ4>LNkÓðxyÙmÜ4ÊÁÑ"88A$–(¶ïØþ$'»Üнå0Á_ïæK—\{ùâg^áIGpötðÙ3!Ý{41²}=ZÓXHˆ/¸s;rø ßþµ›‹¦M>Íç‹bcrNŸzïäl¹ÿÀä=š7¼‘¿1+W ‰ü’Þ·_ËÓ§ÞK$24~ç× Ø#ù—!IŸÃÓÞ¿KHM? mÙ¶}¼qMª‘ؘœ'cš5s$‘p?¾ç¤¤Q at:÷YÐ÷””"1xH]_Á[¶tþñkïϹÅÅ´+‡ø¶riŒU£¿|Iüœ^TDkâm?cfOkkrÍm‘H²oïóÐÉö¿ø{Ëc›ÓÈ€=ŸW¹{×Óª*`ÙòAÆ6G^¿Žàð@¯Þ>7o/æóÅãÆw6¶]0õ‰X,=rèõÉï¸\!´åÂù‡ŽL[°°Ÿö†wïD:8X ø¯ï‚D":vòj¤ñ ñ«WÝú›£ØrýjÄç¨ÌÌF´J…3§ƒ#ÂÓ>…¦ØÚRzõjalsðœ ÍðkÖ ›<¥ë’¥m‹dg•¸Á‹ç?îß‹öð°<¥+œáíwB OšprßÞç wâÖÍω$¯_Å͘vV"‘-]|íiPlƒ˜iX‚ß' è·GÙäæ–G~É0–IA£QÖÖä›ý:xô„=ÝçHL@ܽË6K+’­-ÅÜœXYÉ.)¡OœÔeÕê¡Æ6í7ÇÝÃfÕª¡ŽÁôcÛ¢¸&/¯F™™áû÷ÝÓ­{³;÷–Òª¸G¾iPHäÞý“ãü¿‰C¥2.^ø(“É#¿¤ÇÆä¨@§s·ýó˜L¯Y7 Jq“sóÆçàÄàDÅaXœ†›¼\./,¨âñEMšØc0(Ã}Š:rïnTZZ +¼q=B(”¨ðäqLttæðáí;û7ixóÔY¸¨ÿÇIºSYÉÞ»û¹T&ãóDž¶«× %þÐʲ°GbBˆÅ’¬¬2Å¿.®Vëט=§·MúsÀ`Ñ8zùŠÁªü˜³³%ÀÙÅjØðv€V­]ÃÃROžxÿ÷–1'NÎ4¶u0úC«â|ùœ.I 5 —ËÃ>¥XY‘—‰A°éSO—–2¡½(R*•»0w̘ÿ9-sêäû«—à _ÖÑÑâòÕ=zšh|미ü¯_3ËËXÝžNÍÈ ¶jåj" €DÂöì›TËã++ÙýûîéÑ£ù™sQQC()¦>hHMØ#1-\\­&NêbkKéÐѳC/8T»Á˜>£;Ñø;Ú¶s¿w7 ûwŠJ/ÿ+ߨFÁÔ¾­\B>n.*¤ùú¬Wß;lx»Ûw—ªd‡TߎŽ+V 7¾s+Ÿõ*Kx_¿fÍœv¶¬Œ©ØB¥2–-¹þ+qŸÁ>G8ph `üØc%%t•]D.èÙê®]›Ã.m\½¾Ð´©C-ß±íI^nÅŽ€åK®>N7˜u¦üÀ3-z÷öÙ¶}ü’¥ýý½Ñh¤L&ÿ.aܘc/žÿ0¶i¿9ÑLžÒ•@ÀJ¥2è_‘PpphLÓ<0ZJe*‘›(rùŠÁ7n-V/FsèÈ´=û&ùuð\²t z-ßÌÌÒñcŽ)»#¥¥ E››7>ÛÛ,;ú¨X,­×ÏQ'|±Ê–fÍß¼Ý`‚îÐñNÂç‹=üþÿ]bÓæÑý›lÙ:ÖPÆ™<ð‰iÁ`ðþÙò¨°–•UÊã Åi×®Mwí™àëëblÓêJy9«¢œ•›[A§smlÌllÌ,,‰^^vp•¯º`iIÚºmìÎíAt:‰D$'™™›|pnrRÑ©“ïííÍíÌQ(dy9«”ʘ2µ›É.¿^Mìb¾e[Z’Ú·÷˜7¿¯‡§­Æ#ÇŒíøîm|T¤æ`ÏÛƒ8úö=ó(—/}Ä¡“ÓR‹[·q«¯PG\\­¶lžJ£qš6u5ºÃè1ù㜜r>_Hd,ÂDÿ õOMô{$&‹±w0Ÿ4¹ëÇ_ÓÓKŠ‹é|¾hñ’×a±ø7®G<¸ÿ5/·…BXƒÇax|Ÿ'âñ„r\œ­ü:x̜ݫ{÷fƶ·Q²tÙ //û;‚$bé¢%çôQ?65rrÊïÝRüK¡6mÕ½|hÇ?¡gHЯ¸<Ý@¢£2ÕÀ`PÛw(þ2µ[bBA»öÍš;é×£8¨õú#ŒmEýSTHƒþص3hÀÀÖAc:tôܹk‚“³¥q 3°Gb*Èdò訌’búº5w.î¿õŸqÓ¦œ~÷6þÌéàÅKÛ:a0xÿl}”šRܺµÛÞ};un¢1z<7·<,4544yê¤SX,:pnŸå+™T‚FÁÐam‡kkl+tÃÑÑ¢¥¯‹³³e—®MGöƒ¿ôz¤ ¿òñ£©TÖ·÷îé3zœ9`³ù*‡‘ÉøKWæwêü¿ô$‹— ˜=»ø‡ =+«3¼-\4`ê´n.ÎV«VÞLK£~‰Úf\ÃŒ쑘‘‘ÖÝuw·ÉÊ,8¨õ˜±P:Ââ"š\.o\Q¥¥Ìû_,\Ô¿ÆÙOO;Ϲvs{Ëåòˆð´£GÞ\8÷aÙòÁë6 oø,—ËÓÓ©Y™e¦{æ°¢Õ lß0yJWå-I‰…×®†¯]7ü}AT&=ºeóC“—™Y:zä‘ê³²"Ÿ»0ºVétnä—ô’Ú´ÚÕØ €Ë.Zp€Á  $aooîînsáüÇ ç?ˆDì‘cÓœ,MÊÙ³ûYÌ·ì´ÔâÌÌR->ë¼ù}GŽòkHôÃã “’ŠJJèÞÞö­Z»j9ÒÓˉDÈdr(ŽÄÕ͘P—[QÝÚÜï 쑘-[:¿y·aùÒYYe99å›6¶° ²X|@Ó¦Ë88˜;>C§&¢wŸÞ}|Š i \~ùòç“§«lm)²PW/ãöï{‘˜ðoqv''Ë—oÖ{{Û7˜†@(”Ðh‹oiI²³k¸Á¬ <®pÿÞII…8…U–¤…‹úÃîqqµbQEÅ4-'2 §ˆÄêÛkwnîÊ0-XØoáâ(ÒÅÅ ÇŒåG£q‘H„……þO …Ùœ nkKñð´-,¨rr²´¶1«î0 ÅT&ظ\á‘ï/_üÄdþ[…;`‚ÿ¥+ó«KZhccÖ¯¿ï‡$•íîž__À‰I`iIôèÙüù³ï{÷O¶° â˜oÙ(rÇ® ƶ®AqqµzývCddÆÄ€“/Ï«½ˆNod2ùšÕ·®] WÞXRB?yüÝÉÓ³ Ý{½#“ÉŸ<޹/*þW‡+@"h4J !‘H+kr×®M§LíÖ€¯qoy8úÛ·¬+‡PÌ '޽--eÚÙQ¿üãäd x÷6>-µÄ XZ’fö2huÄÍÝæØñùy•ë×Ý©ej.W ±£Gw˜<¥Û„ñÇš = ÷˜ú1¹Ñe¹€Òä/œyñ’íÚ»ÛœÈÏ«;úhvv™òÆÇ¾-XÔÏßß»ºV«× ý˜L£qùù€ö~î6†¶Ö4=bÁÂ~(""<­´”‘•YêÓÒyËֱʫ¼Ý»7{ú|ÍŠe7žjè8Íû_¨¸#l¶a‚‰ó4(öö­/>>Î«× k×ÞLÆCÛ¥RYY)3::óiPì‚y—0Ôæ¿ÇÌœÝÓX~‰££ž€]0ÿòô=¢¾ílÑtmy9ëÌ©`(¯TëÖ®†0“È8ƒžß(̛߷ªŠSTD»piž±mùãÄêî—#Tߨ Gæ×n,ºt!4-µäý»„é3zlÝ6Î`fš:°GbX$Ù³§±÷îF¥§SQ(äÈ‘~[·ÃiÊë 1w^ß¹óú …,ÕH'î¾~ͺt!4þW>‡#èÚ­Ù®Ý\\­ô8…ñü…9ŒÿŸü4ŽàØÍÙÖûôñ1\¿%Åôóç>DD¤Ñ<=í6l©(‡V<×ÌÎÆ¿F½{ó†æz70åÞ(÷ë੽혱ÇŒí(ˆwï¨S§ñ¿òÏŸû÷3Fãvìäµ}çøfÍu:ƒ©{$$5µdîì Šû,àÔÉ÷ص§†ËN‹ËbÊ0™¼¥‹¯½|ñS±%èILnnyXÄVýNH$áˆ$þËþŠËט º³“i3z¨ÓS'ßïڤ跼œ5eÒ©˜»<=íêxfè¯1|Dûá#Úß¿=¨ÿ¾‹—ç5dnœ98hÀ¾²2&Î Û Å{{S-ÃÀTGDDšÆí»vO€¢VkD§Pz>O´vÍí;·#[^¿ŠKJ*ŒOÜßH_e!~‡$3¦IZZɰÁ”݈¯_³Œb¡áóD£FVvG ª{ä›ååLõ ³[=yºÚ@)˜ví|ºeóC•1‰$q?ó Ñ&OéöyëÞ=Ï23K¬Ó>}[zxÚ::YV¯(*¤UUq0ÔÂEýÌŒ?Í«@7ê?"}øè´9óúÔ{_‰lâ„“ÊîD~^¥¢°Q#!—˳3S¶N_ëñ¼G¿Ù±ý `欞§ÎÌVÞåí¹:,b«~3ù†Šª«¯Ÿî—/é+–ÞÊd¥T†@ šü@&ãmlÍlmÍ޾ߤ¥êfffé×è¬R*ç¥óÐamM6±)Æ9ü0‡#`йPí.Ðh¤‹«5‹¾~kqË–Î:<9©è{lNE«M[·[×ïíõ募[ÿ~Äç ™,¾H(‘Je‡CS(å‰ooû'OW×½»åK¯GD¤‰„õ NN–XzÙòAóôÓ¯‹ää¢ï1:+¼v-|é²Aúuªù•s/ кm;÷‹>RKèOíÕÛ€ËdŽŸ?r̻̈ªª8Zf,,ˆoßmT\±ÉÉEïÞį]?\q•Ê?æ—',)¦kÑ1áq˜û–×}–®~Y´àJttfE9ËÜœ¨±ˆ1ÄêÕCX‘tÞœ‹±±9å,™\Îç‰H$‚HÄ™[•ïðk× Ÿ9«§–óp8‚O¡)Y™¥f¨ÑÔ—S…BÉAûi4‹É‡"aU@"nî6hòÌù9]ºTKÛH„c ?Ølv­Žqaåê@ýòׯûë7ŽÐõaYÞÞ³{ñxÂû^ªïE"Ógôpt´°²&WçŽää”ÿµñþûw ŠŒ½ûø<}¾Æ4 …8kv/WxîlˆÆ nãïïÆ \t‰ HN.úkãýð°TÅ–Q£;ܺ³¤®æ*Ѻµëì9½²³Ê23JiÃá ‰¬ú CêÎÈQ~MšØú”¢Ñ#q÷° ì@ ô»$'mÞô ìSŠrw·ï.­M[" ×ÀîÀÍÝæCèßy¹EÅ´cÇg¸¹ÛÀoó*xxÚÎ ìUYÁ~óú×´éÝ«;ÌŒ‚WÎ âë뢒ÈÊŠ~²I%— ‡ž5«'ƒÁ»~-B£GÒ«·Oß¾-‘(d“&¦åYÖØ#ų¿î88˜¯\5äÇ÷Üý{_¨ìB£‘§ÏN™ÚMKóˆðÔÉOq¹ÿ‰ÍKML(Tˆßâ~æa±hßV&‘ZFB ½C_©ï œÛû豺>l^¿Š œu^e]ãÅóùy•õ(Šóð´]µzhèÇäàÄÕk‡Õ×i«cÐà6ƒ·yûæ—ú.§ç¯ÖéE¡q¸^¾øiúI–<‡#¸z%üèñé*CSA'O¼S?Ϙ±/_] eÞ½Q`Š¯Ý¿8ZeYª½ŸÇÛ÷›´»#¥¥Ì©“Ϩ¸#(Ô¿õ '1}zíêÑm»ò ±)@þ¯œÒÉÙò̹Àã'fêêŽdg—Í™}Acè‰NŽ@QÑÔt°µ£”–„ðxÌÂEý?†mÑÛÑ:\:Ü›Ls¸`Ô¡Pvvõ€-˜FÊÊå75j¹ÝáðåðU[[ÊCS®ß\ÔØÝÏ‘ï;ÿú•giIêÐÑ«6³ñW¯„©×žxxÚ¶ðùwQ)9¹ “ÉÓÒJúômY¿6× ÒÝûË?~HB¡>- l…Åêsu?ûAcüMë6nµQ„¦§S}óþ]BU‡HÂ-\ÔÛöq¦|naA¼vcQvvÆñò²0°UÅ·Õ W«Ö®µ ÕJO§ž8ööÝÛøª*ˆ]¸¨ÿöã 1\Ë—^?yz–ö3ËdòôtjHpbbBD"ÃbQNΖݺ5kïçaS}¾Î?ISº¾xþcÖl“ÎðS ªž<ŽÑ¸kÈÐj+UQÌ£W½}óK&“·ðq8¨µÆªaØ#1bÄÈö#F¶‡þe2y—/~RŽ8Sçs¸ý9uz–Âù]´¸vV‡Ö²´l,:tôìбå}DiªPJ&ãOžª9måÑÃoöîyUîð¸ÂcGÞ´më6v\§:ZUXY‘i£ø÷Sh ìÙ«…~g‹ŽÖðvE&ãOÕ"Ûì±#oöìþßpñy¢ãGß¶më6n|gýŒQ¡¤˜“ iº/úÄ©YÕ9$T*ãØ‘7_¿f‘ˆ8W7k(…1Ÿ/Šú’qïNƒÁss³ž0±Ë²ƒ~›;o]èÝÛçâ…Æ¶¦ˆŽÖp»̘٣__- }[¹˜ÈÂ}ý{$ „L&?°ÿÅÀA­Û´u«î˜ÊJÕ°d''ËKWæ÷èÙ\±ÅÖ–rýæ"CYiT© ‚‡§íµë kÌ2tøà«];ŸªoOO£Ö›q îg^HpâÛ`==’ú®ôz®ÄÄÂ÷£!D;}›· ïÁÃS5î­ªâܾõåîíÈãÇÞnØ4rÙòA¦åÝ`xxÚRK‰Ì@u˜ƒÏ¡ÑH‰D¦Ø‚D"V¬²mûx#ZeDŒ þuuZÖµ[Sï:‰´¸˜Î óDb ƒ&‘qÖÖdè…ÉpÄÆæ4oîX¿µš˜L^ffiÇŽÿI“M&á[úV+ꉎÊ$q¥e ©DF&ã]¬<‹)c*ïß7®G¬ZqóÎý¥‹— ps·ÁbÑ:z>z²râ¤.ÉÉEcF=}*:R ¿— 1—‰ãÛÊ5+SCᘺóYS g__—V˜Î$Suø¶r),¬jÈõ.>O0îø‘C¯îÄý{ÑÄOƒb'M8)KW¯ºõòź˜ ±`a¿'ÏV-]tM£*­a8{&dòÄS w"6&'+Ëà?p¹\~òÄûQ£;º£?™L¾dÑÕëï©<ÂÜ‹®Ç<01‰›uvvÙúµwvì P™¨@ ÇN̰³£Èåò¿ÿzž X¶äÚÄ€£G6’±úcnNär…°ÆÒ4ibߤ‰½â_ â†M#?†ýÝ(J¥˜›Ë6÷³úp­ß8¢6õg÷3èg¨‚ò:Dddƕ˟B?&ÏžyþÝÛxèVŽÇk\«•ee•%Äðù"õ½ÕÙüỖû5$!lâ~æýý×'C/1Nžx™¾|Å`CwôÇrýjøÝ;QêÛ-­H¦£Úû]1‰ÈÖÇ߉ÅÒÏŸÓ##3æÎïÓ­[3Å.2?+°×¡¯;w}ý›ÉäÅ” …Uææ87¥!@cP«×óô´-(¨rs·ökïaè}õHaAUWìDcP«Ö õò²Ói¸d2ùµ«áw©/9Í™u^QbƒAI$²+×@¹¤TT°Ž}{ýZ‡#ØÚR.]™ß·_­Ög›5sܱ+ 6GÖ;W¯„i|¯èÓ·¥¡UʧN¾ß¶õñ¦¿FÁ™å ÇÕj.ò€€j—ð`ê “ðHÞ¿—ÉäAObOƒbßoô÷ÿ_öŽƒZCÉ÷ØÜ²2æ©3³=üªE«m²kú9e}YEkåŠ It²ªáùªIqíälyâdÍu½áóE«Vܼ/ºGæë7Ž0\G0YY OvêìµaÓȆ7æOÃø Ÿ'R.W(•Ên^ÿ¬ì‘´háý!—Ëss+ºtñnŒ3–¿âò¯^ «—šm0¿›7Ýww·éÕ[OõoC"“ÉÌ͉ŠÒ µ|åà¿·ŒUŸù;yzvaaÕ§ÐäyóûªŸ*=:aü žZ Hy9K&“›ø<"¯jvÏ^-Î_˜k¸ê¡QQ+—ÝÌÈ zxÚÞ¸½ØôC£54J9O%˜6½ûÁÃSIgÚµñbD$’lßö˜ôÿb ¹L®"Èþö5k力ŠåJ¤G½ÖR¾R?â~æØ÷ÒRm!¼.Ъ8I‰…ŠOÁfñß¼ùekK Š Š­®UJJñŽíA䚤_Æ fܱý I“¦´”¡Ï?0# IDATü­éM~^åÆõ÷Ð:j;“ ñ8LllŽ®Ý•Ó‹‹hõbymøE§smlÿÍÓš˜Pðã{nÿ­V­¼U]“øû¯8Mòà¼ÜÊëïatL›œTˆÃb¾×m¸8l‰„sv¶¬¨`c°(³æÍi4îÚ5·5_TX•žN…ÆV"‘®ZyS± ú1YÝXZV¯ªv(HÄÒ̌Ҳr&—#¤P­Z»Öïï@§qo\ÿüùsºú.¡@ÒÙ¿IaA•T*³° y5±sp´8tHC]§ºÃa ¢"3!añóóÔ˜E¦6Ô×/Ô@TV°±19\î+ë†ÊÛ‹@ Ú¶s§–ÐQ(¤¥%©YsG4µù¯Ú[ýü‘w`ÿK+M‚8-äåVÐéܲ2ÝÂÈôû*é´Fê`‹Eoß ü>A"áΞù·r,ͪœÂ²¨vãzô÷ÖÆjÉ0¦†SÿB³¸Ðì4‹ù¸Yû[TÀ¸ãÛ¶3eõïƒûÑ۶רþý•Y/³ÖI‰…MÑUý{âø;kkòô=tíÎXê_‘H²nÍßsçÌë£ERÈÎ. z³gß$êßä¤Â‡¦èªþ=yâ½¥%iÆL݆« ¿ríš;ž¬¬åñúº*îÞŽœ:­;‰ˆmÝÆ ÐÄc•úñ8úîýeíý<´ŸöÑÃoÖÝUÔ>­¨`Ñhœïq{ê7†ãCHâ¬Ù=5ª“ Ÿ>_£ë%ªùy•áa©l6‹E?}±F9ÆNWêëj bcr^½Œ;~b†ÑÕ¿Ñ‘_þQÞòóGnÛvîÚ§¦Rý«ÇWyýjx½{í†À$fÿv홸s÷„ö~ý›\¿¹H%£v~Á¿;,ݬ¹cYóì™PÙÕ‘H²ï‹QÃ3™¼[w–nR¦q‘žN:øÀëþþÞûö73d,²²Êöï}!‘HØwîìh£z<й9ñîýå5º#gNÏ›sQ¥;Îù–]&›"oSw¦.L™t*ø}¢±­ø#0~ F®\5dåª!÷¾ýÑ»™1ízðû„ ç?Æ'îo@u¦´”Ñ«ûŽÔÔÀ‰S½zûÛ"ã#I¯_ ôð«P(ñð´½û`Yu©Z;¬°O)?$½yýK±Qñúkgo.ˆ¡Éj;eZ·uë†×XI1%¥øŸ-4îr©EF€L&Oˆ/ÈÌ,57'ôêíÓX߯ƒçŠ•šo0 Àè1ŸÅÖ=¹L˜„G¢‰DöøÿK#Î×`nN蚬·áIO£VT°ë6ŒÐuzæw…ü~ P÷,ÿKÚöë³§ ÿ? Ä–-4A?èo"ûcwZj ‹jÚÔ¡–e¢ŸÅ*œ)ðëàY›Ùòû÷¢î™ýïôª“³åÛw…Œvíºá&íû{3ir×qcŽÛŠ?S÷H._ -.¢úh5dhÀ©3³Çøwéê]SS“`Ðà6[¶Ž1¶0¦¸vcQË–ÕV8ú ðE 7> óä©ÝÆŒ<²kÏDåÇ*Ñ52@cqlW7ëk×j`‹ÅÒùs/=ýoPyI1ýü¹ûNÑɆ†ƒE ÞÎØVüÑ´iëÆã‰˜Lž–7a‹•Y\L×éÌqqù…UK:hË3Z¶bCcÒII1}Ï®gKKÒé³³¡)_ÛXfÏlm)gÏÂiþ`TX¸¨ÿ€­Œm…aYºlPE+'§\¥Ðf]Àá1ʺ<1bdû£ÇgØÙQ´7ܲùáSM7¾@\_¶32ž 1. ÊÚš\TDÓâ‘$Ä„ëkòøÑ7Žÿk>_ý[R‰ôÍë_,Fúwñ>P£++X)ÉÅìÿcï®ãšÞÞ€ŸuÐ Š‚z±[±Û{í¸Æµ»¯ÝÝÝÝ-¶¨H*‚¤Ò]cݽßó·ËwŒ1ÆÆœ÷Ë?æÙ'žÅ³ó9Ï9‰ÔÖŽ„@ ŒQýËå [þá¾cûÝ÷ªÓÕ¿éé%M¼–¢PH4…²°ÀãÑd2ÞÚ†@ ` Œî婵\ý+II­UE&&æ[X Y,¾îg4«êß””Ý#×Rý«_ùb^.µk7_j[$’ZZá==í­mˆ;wTñ Äwïh^Ø<'»¬²0´Tÿê÷ÕB®ðnìh×g§:ZýËç‹/œÿ`ª'PRªøD••±÷í ¶6þ*º@cP°ú×`*VÿV$ˆ§M9M£q Dì½û‹ÕªoôÆç‰–.¹þ<8NÕRTÈÀã1«× ­nÕ–vI‰ù_¿dTw Û:]ýûôqLùù7UˆD,™Œ#°xÇH8 ki‰÷ð´÷ósõövtr¶rt´TUÖÕrõo-›8þDÛ¶^gÎÍÔ}s«þÕ½ìP­ú÷ÈÑ©ªßúúU¢ÎšqnÉÒÊúaÝ?‹Õ¸`ÿ ÿû—TÖ…©½úW—(¤–êßZ™¦öâŒO½w7úüÅÙZ<•QØÉÉÆî·úZýkŽWmX,þ„¿ŽGF¦ùúº\¹>ÏP—Û¥RùŸcŽFD¨ÿèÄÕý‰© [[Rƒú̲¶&j\lˆÇiY£¶°´Äã gi…Çã1™¥Ë–\oÚÔÙ§©S“&NNÎÖäú4IeÛZ\TÝ|lÚ2ÚT—¨e¡¶0Þè1àUH2™|ë–‡&tÕ>þúÖ…µR=fvIRbþÔɧ³²(Óþî±gÏx®—vñÂÇŠé€HÄúø8Ul¯ bÇÎM {L3·nýð䤂¢"†@ f±|¾ˆÃò">OÌá$™Æ½$Æ´ÿi¼w÷w;‡¶²"`qh2G `Èd<‘ˆµ²"¸¸Zûúºzy9¸¹ÙØ;u¬Ô0-ÿpïØ©¡¼0<½ì;ün•ìȃ·Žù–E¡°ñŒrоýêù8ÈPÖ­¹“ŸwþÂlSÒ ˜ÑG¹\®8îÃæ|š:¿ Y×ÉÐßè¯ÿ^5‹– 0øOp7wÛcǧö˜fnÜø.…B ¥”U\ÂÌÌ dd”1ØlŸ/f³|žˆÃ 6›/I5S(”…•ίŒÁ ”ý+D–Í ÚÖü¯Ú¬ßЀ ¯üü\U‹R™VË?Üoß]Ä`𬭠°_Ò‘H$]±ìúõkûNªUâõ€¹d$ÉÉK]--eïÙ;~Ê´îÆè¥×ø3}ìŸW­†+: ‡öð´÷ð´/¿tbyL&¿¸˜™—KMK+ÎÊ¢°Y.WÈå¹]…E >_d'Y,–êqOTXȨî0^ …Ådð«{:™T^VÆÑ¸—H$ÍÍ¥ p%XC*.frrÊÀÄXb±lËæ‡gN…âV­=Öþ;<7‡ZõnfÏl¿YÊ3AF"‘ÈîßýB¶ü=ê“FåðùâþAþeeìkWÃzêÉS³2) ¹ÂÖŽäåeÏã‹®\3ê«Å¯¹ëÛ7Õ›*§6ñ¸"Àƒ{_U»ÚTqÍg¡@Âç‹ØlƒÁc2ù¥%¬Ë—?Õ~`ÆÆdò·o}Æá5Tÿ¦¥¸‹Eaqh …ŢȖ8;;²­-‘DÂU6 ë{L6‡f0«W Èf y’Y,¾ÇÉʤ?‹ŠJ¯Ö^™¥”RvuOÇåŠ>…¦””0+ÞE-cß¼‰ÆÔR1jQR̘Ãrq1ãðÁ—KK|@€Ïí[ŸM‘ahüIcnLSý»|Å`¸ì\S\Ì<îòåƒ4VÿBF’™YzåÒ§Õk‡i¬þ}úø{v6…S¡ìZ9ȆHÂâqeŽbi‰wr²jÑÒ½E 7 Õ¨‘ÝÔiÝ«I^.µ Ÿ¾uÛX½‹Êë—ñz§°€>w^_=ªããs7lU­½Üÿ2öÏΫ#ÂSÿÝ0¢AUÒÕ‚o_³îÜŽÚ²uŒÉú\½&JDlÈÇõûnë¨#‡^YY›ûÒ+À|Æ‘@¤v¶†vå ›ÊfˆA"‘x<úò¥Od2ÎÒocClâãÔ¢…›§—ƒG#;<cô¸!ȼíÝ7¡Þ¤#uÌH ¨»|eNRRÁ¯Ÿ…¹¹T6[ÀdòyØÔ!4P0# zÈÁÁÒÁÁ²M[OÔGB0™üœì²ŒŒ’ôô’œì²²2ŽH(áò„ ˲X|ÕRv*2™œÁà1<ƒÏ%Aæ@ôò7u ” 2™L•îA®ýSC5A§sQQé™™¥¦Ž¥)*b"#R«[⫽=ÙޞܥKSU‹T*§Ñ8T*§ Ÿž›KUZs9B.O$JD")‡#Àá1¡Sj~vƒw÷N”¹Z«˜––²c¾eÓhÜj+))?7‡ZݰEBiJJ¡Æ½|qDx*NÓ‡ÞRS‹¡šz`+@£-¢«YÏU'HÄu ƒ¡P(2ÓS®š—ÇÔÏŽíïÞ‰F @«V«× kÕú¿áñ'O¼ÅbѨz´RI¡P‘X‚Å Mþ‘Ñ ˜ÃÓ.–Èè4.ε°@d¸ß²¥×Q( <C `0X‹Æ0d2ÞÉÉÊÝÝÖÆ–heI¨øx¯] ïÓ·¥»[õÊôâò òéC†´©Ö^"±²Ð¸T&‡_'—+Ä)kú<¯^þ}Ebé¸ñ]¬k«ÜF*ú=95§b ÆíÅ<@Xhˆ±úHxl^.›C ~Û§oËcǧ)«F, 2ÒI!ªvïzZR‹¥,_í.4ÚÂÊŠ€'`ð8Œ­-ÑÆ–ˆF£\\¬[´p³´ÄwèÐ8h@«j-Ú§¬þ>£§AA†g¬ŒDí#ãÃûäîݶ^»1¯GÏæF:#Au‡¶²"TLG‰LcÑ2À™ŸgeE°´Â“H8eA§§}‹–îM|œÜÜl {a ‚ Zf¬Œä¯q$B&•S(¬øyÑÑé ï¯?=x´40Ð×H'… ¨Nøòu{^>-7§,-­$+“B¥rØl>—+ä°…®°²ÅŒd29ÆÕ8Ž„@Ä’I8<cmM ‘p$ÎÎŽÔ¤‰“«FÅÅLî{A‘k‰š¢BÆÞ½Á×®„YYÂ#7ÃI?!ÒˆÉäÐ32J’’ òóhl¶€Åä³9[È狘L^e+Ek„D"ðxL§ðÈÍÆ‹‚ òôGRK‰Ò§ÐŸ3ÿ>çéeÿúíZ4® AP5¨VŠNJÌOK+f2ù\ŽÅ°Ù|‘PÂdò…B‰ÆûöûãÑ“eµ-5Xf7²U£ž½š¿ Y;bØÁÍìÚ3®6O AP]gmM°¶&4oî:``«òíR©¼´„™_@OI*HM-¦PØl6ŸÍp9B6GÀå-M3Aº«íùHš4qzö|å€~»{÷ig¡ ¨æP(¤›»­›»m@€Ú]"‘´°WŃ :ÁU×;Þ¸½`ù²GÚC ‹jÜØö‘@P`šy`:wö™ýOŸukî˜äìA™“ÍL·hq‹ÅON.0UA™“­´‡@ nÞ^hª³CAdVêÛìýAÕE0# ‚ Èô`FAAéÁŒ‚ ‚ Óƒ AA¦3‚ ‚Lf$A™ÌH ‚ 2=˜‘@Adz0# ‚ Èô`FAAéÁŒ‚ ‚ Óƒ AA¦3‚ ‚Lf$A™ÊÔ˜#‰D–”˜QVƦѸ|ž‡C7mæÒ´©³¯ŸKãÆŽ¦‚ ‚ꘑü'+‹r`ßóÈÈ´Òƒruµ¶µ%YÛ‰D,‹%xó:þÎíÏl¶€Í´nã¹`aÿ[!SG A@¡°KŠ™­Z{˜:*°Ù‚·ožÇ2J),‘PB&ãmlˆšŒŸØµeKwSX|xŸÜ«w $~:Au B¡Pd¦§\£MŒiÈåŠë×Ây]TÌìÑÃo쟻ukæêfSÙö|ž(22í铘¬LÊœy}GŒìP›ÑBFë×Ýýü9ýã§ ¦¤Ro^'lÚp?;›âèdÕ¾½·OSç?þpwr¶ ¥%%ÌÄ„ü¸Ø›?~B×yóû¡Ñ¦Ž·®b±øÍ›­>Nû“ݾƒ·©#‚ jh µ6‰lʤSîlcâvê—Ž@™JåÑQé7¼x—M1uDÿÙ²ùa~-öÇn]Ò‘šx×3pÛëWñªtpòÄ;G`Ôóš›G¿®^;ÌËÛpâø[S‡Óà( ›•E)-e™:–:©ö‘¬[sgÁ¢ .]šš:ª©'¿Õaȶ{w?£Ñ¸gN½ß»‚©ƒ€«—ÃììH[¶Ž1Þ)BÞ%q¹ÂÂBú¦ ÷¥R¹Ú½r¹"øY‰„íݧ™Œ7^æ#øYì•kó(öÚÕ·Ÿ>‰ÉÉ­ÌN £ÊË¥^¼ú#.·ŒÂ I)6—+´·'w ô<¥[ï>-á@c]4Ðq$¥¥,''«š'ö{öñco¿|É()fúúºlÝ>6h@«š‚t7eÒ©KWæ Ñ;¶?Þ¿÷9ˆMþ¹ÏÖ–dê¸ô|— øâë×#nÝŒLM-F"ƒ‡´9td²Æ|B$’¶oû/‡-àóÅb±´â(’DÂ!‘ÈËWçôê]ÿ»BÃ>ýLI)œ;¯Ÿ'jÙ|5Î]¸(hçîq¦Ž«þ+-e)ÀÙù^í|ž(""õÚÕðȈ4½lÅà™³zé7:ªÎ#[k›X,]µòÖ•KŸÊ7âpèÄ”}ŽŽ–F=5‡#8tðå¦Í£aí1”Ÿ‘:A…Âní¿–Ï84iö?}Lš>¾Çdÿ=ýLnµ|ã´¿{;>MË^íZÿ›™YªÖH"á^½YcþåдrùÍ­ÛljXÀÎOöí ¶²"dåE¡êÆ·`^.522-)1¿ €Î㉬•Þ§©sŸ>-üš»ÕÝò+™L~åò§ƒ^ž=_éããdꈌf$µmòÄ“ÁÏb+¶¿xµ:°»¯QOû=»wÏ…%'I$œQOÕ9|žH,‘‘H¸ºò%T^B|Þ {¹\¡Z{»öÞÚ«š=ܱXüÿiñ´¿runC×)—+Øl²—HÕ˜œ\°zå-oo‡ÃG§šÏ|nõÈ‘WI‰ù8ÆÝÝÆÙÅšDÄ1<:Ëá³²(y¹T±XêèdÕ·_ËÅKÖÑ9*årÅ®ONžx·gïøiÓëyI¬µ©¹\ññCr\l•Êéбñˆ‘ªûæ|öô»Æt‰D4óu1P˜T ùô7oâ3ÒKíìH ðð´7Èa Eا_ßc²)V«ÖžcÆvÂbuýÐÈÈ(}’”Eqv¶?±«ZŸvEË—]¯˜Žš7wÕ¾£££eÏ^Íß¼ŽW(@3_—I“»M›ÞCÙUÐÉåŠï“ÄåP©œŽšŒÙA•žîÝžž:lxûÍâúrq1óÎíÏË– ÒþŠ-*b„~üyýjx×Λ-gÎêµ`a9$UåŸmíß&H$bÃÆQãÆw>ä‡7¾‹Þ'e0xσãÒR‹°8ôðáíëSG`ƒë#ùð>yíêÛ©©Åª–aÃÛݸµ ZY¼èêÕËaÛ§ÏèyôØÔš†X *•sætˆD"+-aݾõyÁ 4Æ‚DÄ-^:P÷/ ¨þa2ùþ½{çv”D"S¶‰Øwþ­ùü§‘‘i«VÜLN*PµôêÝâiðŠ*w,-e­Yuû铹üwå‹)4l£–o&“ïÕhqùJ% þy³ŸŸ¶¤¤s‡_b¶+ ™LQ;‡ (ä]ÒÚÕ·ÓÓKT-#Gu¸z}žòö±£o6®¿G b£¿lóô2LÎZËø<ѽ»Ñ‡½d³›·Œù{fOó>$iíê;iiÕû6¡Ñ¸ƒì=ttJ·nͪ{F‘Hºooðé“ïx<‘²‰Dܼ½ÐصlÕ¥wIÃz÷ž92zäáòé øY,…®Öq"ÃS+6 hµwŸkX,~\lθ\å !!ïG\nll¶@ 6ÞI!3WOïÕ}ûõkªtÀã‰îÝ©éŒë×"†ÚW>„~L©²º85µ¸G·­}S¥#ûôéw-{åæ”ULGp8ôå«sµ§#*¢§#'O¼;úHùtðôÉw:«¼½xÉ€O᛾Çí¬£é€@ÄNŸÑ3!iï¡#“÷í î°¹ºŸÞ†rúTȘQGʧ#€àg±eeUÄcgGz²n÷Χ«Ã´ãr…#‡<°ï¹*ÈåŠ+—?iÙ«ni}$'Ž¿-+c1ïÞ‰ªx/˜¿ ?ž€™9«—«k¥“Ç+ݼ™–V|ÿÞ—2 [5¼Ÿ@ÄvìØ¸m[/€ø}Àqã»TÙÕ,—+ òi8<¦º#aá8è{Lö³gß÷ï}), WÜ k×fš´kçUÝUΟûPP@§Q97oD–O)Tþ™Ó‡DÆMŸÞSí[-<ìWHH’B®¸y#’JÕðèo¿?ü[5 ôíä_¾½¨ˆqñB(¥”õìéw&ó¿á ž^ö=zøÙÙ“•ÿup°\¸(¨üŽ …âÄñ·T*çúÕð)ÓºWöˆP(‹Y³{»¸Xëðèë…BqüØ[STȸwWÃg8X°PùùfŽO‚L&/ȧIXûÿÿCëN¡P=òúäñ·W®ÏÓ£¿¡¢‚|º ©ýY:~ì •Ê©ù·IDxjjjÑÌY½«Œ*7‡zåÊ'¹\ò.))1¿â¾¾.ƒ†´qw·5ŸñìpI¥$YÈ»Dƒ§6€_…LÆEF¦"‘È þUf$¡SÒÒŠ9l··ƒ@(‘Éä8,šDƱXüÐÐÕfíÚyiÉH²²(‡¾¼ÿ‹€/tïáwíÆOT­ŒD¡P¼{›XZÊÊÏ£iLGˆDìׯ™¢W¯jIllNèÇ6K 1A"%ÅLƒÁ Ô2’‚|ú‡÷É|žЬ™ /B¡<‹C'–ûüµ¶&þ3§óßG–X,{÷6‘Åâóx¢Ð) H$rРÖføelb±,ä]"‹ÅÏÉ.Ó¸™Œ‹ˆHE"‘ƒµ1«'áׯ¢C^>}#JAZ]¾:Gû¯¬âbæ¾½Á‡LQþ@,]6høˆöãÆÛ¾óσZëIQãèá×·nF²Ù@Ûv^7n.pod[qK±Xò.‰Éäiy¶•ß&¶ÖþmØÝ7@· ±²³)?¤H¥ré@$–†~Lqr²š5»w]/À4÷>’ä䂦MË é­Õk*&%..֯߮­î$B=ºÿÀ$ýz>¯] _½ò–Ú¥–æôÙp’ŽG(.fΜ~öÙ‹U ¼:zäõ¦ ÷+¶oÚiÙ|UA¾zzêêfóöݺFv& I‹S'ßmÞø@m™Uk†nØ8ªâÆŸB" GÏæÉIóæ^ ‹Ø¤¶'úkÌÑí;ÿl×¾ÚÕUÁÏbçϽ¤ÌETFŒìp톶—¢Ë5y¹êß&®®6¯ß®5Ò±ÈÈ´ÁöVlÿk\Àù‹³qÆš0£&›0ò IDATq$V¤™Êå Åæ<Üyº/Ú²ù¡ò‚±P(‘É´]H{ñ<®OÏû÷=7H`¶ú0þN›¼y·®6ç4|pÿËâ…W+ŽüÈË£é~ë—oÖÔït¤ü¨¨22©\m`?ˆ=zlj Ó‹­>ùzë6ž¯Þ®©rH‡P(Q›ÊÚšpùêœú·›-Ðow³&ËÃÃ~™:àqEj->晎\ººnÍŠ“ÚååjþŒúœ•¡å€D"öÁ£¥‡½âóÔŸíB?¦LŸzš]áÕžŸ_Å2—£þmÒ¹³ñÒ€B¡À0å[,,ËW>snfe»ÔE†¿jÃâ^¨e$W.…}ü˜¹0eò)oo‡I“ÇŒ<|àðäÊ®n¼|ñcʤS2™üðÁ—Ç·óoUÓ'òÌÙ½^¾ø!—É}ý\'Nê4À¿6û¸$ÙÚÕw*ß´¯NjŸ—K½y32%¹P.—÷íûÇ´¿{ÔéyE"illöë—ñáá¿ òé"‘D$–ʤr Ñ(,E¶Äûû70°uŸ>-ÜÜ5t¥6Xvv¤é÷ÌÌ,ÍÎ*sodÛ½»ï¬úØÙàòŸ³³õä)/_üˆ¥Í|]Æï2dh[]¦Ávq±ž¿ \\NaÃÓ˾wŸ3fö²´¬«3¸+Š7¯Þ½MÌÉ)ss³9«Wë6¿×þø!9::pñBh÷~& ,gÌêõúe¼\.÷kî6ir·~ýÿ0Ã>|.W¸iãwÕdþ<³wß„‚Bz³fÕ˜aõÊ[‡—¶kç¥}Çßß&ÏÈåú|›$&äÝ¿÷%=½‹EÛI—¥%Ñh‹þýýÉIvö¤Ž›ü3§Oý[" –Ƒܺ¹qÓ(eþ¸qÓ¨ûžgeQÚ´õ¬,¡Ó¹K]Uö H$²];ŸÞ¾»¨†1 ˆ Giì¬i©Å‡a»ºÚÌßO—#ðy¢M\¾ªz=ŽËÍ¥nÝ>ÖÖ–ää‚×Þý“íà@öõs>¢}@—¦d2Î’Œ'[â%)‡#d³yyÔO¡?/] ݼñ>ˆ1£×‚EA°àYÉ»±ÃCº^ïÓ–.´~ÃH=öõoÕhÇ®ú°âî¸Üùó.•¯6ºw/úSø&__@瀦®n6”R–~+6m½ióhSR…øø<Ë6iâ4µòáÉ*L&oýº»£Fwìб±Ú]®nUŒTC¥rÔê.•¬¬+VVÑ˨÷· …Â^¾ôúóà8ÕOÓǾ:3cÒänUîkmM8~rzuÏX·ÔÒÇúÏ”"Õ¾¶í¼óét^X¤úå@•½»ƒU5]x<&ìÓ¯´´âj%¿f(#£¤b£§—ýÃÇËtùÉã‰F8¤üYVÞÓ'ßë\FÂdòο\XÈ?¡ËÍÛ *Îæà` hÓÖsøˆöÊ–„ø¼£G^÷ ܺfÝðQ£;Ö^ÄPú1eü_ÇÕ.° øâwo•‰³³UBÒ^OdmM0QŒu’Z=¹R³f.ž,Ãã1ïR*,bìÝýìîèÜê‰ão=½*f$ÕUZÂB"j#¸-ïÞ_\ÝäFG…ôÁƒöUûìéw]2’†ÀX#[­H3•—o”l,gQhg•×¼c¾eõí½óÝû;un¢q_±Xêë³BYCß±SãËWænÝòÐÖ–´ïÀD="‘Éä«VÜ¢Ñ8ïC’ûökYÙfÈÕk‡Uy™|ÇöÇéi%ÑQé­Z{•¾fÏéøß\ò1ß²N[Fa''0™|evŒF[x{;6óuF¡~ðð°Û¾SýÇe~mÛÖGb±4)1?#C}ñ€©{? wàà$|å!é"'»,#£Ôʊоƒ·¡Vª”Jåéé%y¹TO{e—XNvÙ†õ÷–-¬w'­P(Ù¿ï9‹^µfhùv6[ðëg‡#hÓÖË /ŒD,–¦¥2|š:5i¢Ï"¯^Æß¹ý9'§L*•kY&£CÇÆ‹Ðý° …bÝš;ÅÅÌO¡?»ûVv5‰D.]6PuýBéÞÝèÏãÒR‹ñL£F•Ž]èÓ§¥Ú˜’_¿Šöí f2ù?vê¤ù3`kG:ppRù¤RùÊ7t^•oíµÿ×ñ÷ÌÍ‘oß$H¥²wIÊ5:6vw·íä?yJ .46c< Fžzþ܇â"fZZ1ƒÁS6b±(ooǦ͜UY_?××PÞ–ËÎ<{:Dí£ïÜ…Yç<-.f¦þ*B¡-:thŒÃ¡µD’šZ¼w÷3‹ÿõK&—+T&%(ÒÃÃÞ¯¹«ªÂÆ–xààäò#öd2ùÊ7é4n•ÏöšuÃ}ÿþîï1ÙǽQ(QŸÓKKY·÷ô²oÛÖ«Q#;‹?âryM¥rrsËÚ¶õªì¤..Ö{Œ9!Vµ˜{õ/‘ˆc³vv¤q¹cGÁáЕ¥#€O¡?•éˆ+§Á+‰Dl@—¦G¿Ò/#1¬^—µ±!vêÜ„Í`qh2W­ñ•~U΃YÃëÅ/žÇíÛü#.WùßæÍ]Ÿ>_YÃå‘¥RùùsŽ{£ªP6¼Ý•kóDì¥+sjR?…á7nU¾ðµ Ÿ¾g÷Ó»w¢•ÃåðxÌÑãSk2O³‘…’ÇÞœ9ý^yý@LÖýèñ©fx½¿!+)aiLGp8t•sáCUrt´ìØ© ‡-ÀáÑd2^ËŸ’bæª7Uÿµ´Ä[ZáïÞ[ü‡£ò›}ý’¹kç“~W€;;[=z²¼åUÏYL"áº6c1hŒ…¥%^íÙ°ïJ‘H¢1xx`’þ}w­^3ŒÁà-[rݧ©‹~²®²}ÏœY³ê¶­-)]ÐW/‡qy ƒªÞ´šúôÚübUù¥a6®¿×¯¿Ï^͵ïxpÿ ÷F¶zä‚fUý»hÁ•Šï<sçÞ¢^½[ðDÔ©ý†¯ßw˜:Šª=Ž‹ÍÖq¼KQ!£¹ïJ@×®ÍÖ­ncC\0ÿŠZõï¡/·o{¤öÙ8dhÛ[wj?xZZñ¶-ª»„ˆ’/¹×¯âÇýy¬bûÆM£V®Z±]Í—/7®EÔ•q$fTý«Q·@ßÓÏΞyžHÄJ$²‰Z¯™)û.]>H5G ‹Ä|Sÿzk8d2¹µ5±| ˆÝ²uL ÓÀÖÍ+~øÔS­…B1á¯ãÓ€ªÐ.;›ÒÒo•÷²7¯ô> %¥pâøÇÊñù¢êNÒlTb±tÔ é€ÍÖÿ©®5R©üÒÅPSGQK°X´ÚÐé–-Ý_¿]k¶éH}åâjýäÙŠe+÷îÓ¢GÏæH¤úÖõk[·<¬øSÅ4»÷‡VûõeoO¾pé]Ò‘†ÃðWmTu¿Ê£ÇtŠ‹ÍQ®…@ x<Ñ„I]µ©‰¤H$¢üHåEÇMÓS6~~®¶ŠŠJ'‘pmÚzNšÜ­æÓ¼R(ì“'Þj¼«{wý _¿JˆŠJ¯ØŽB!|”·Ã>ýRNîùòåš,Cº{çSì:û˜ÃÒ *·o}þõKC:B bõ˜Ö©öMœÔµ¿Ý|žˆÐÖÔµ³'ý»adV¥¨áéiß?ÈÀÀVfÕßÖ@ ˆÞ}Z|©0œ_I¡PlÝüPã]=|5¶› e1tX[G'«¤Ä|''«Žߥ†#ÿêcÍGrøàË-›=üªl÷ð´¿sw‘.×öP(‹fÍ\Ê/s’\(.b<Ú:iXº|ÐR0È€Çü¡±#!0з&•,aŸ~jl_´d ª€~ÈжW.‡••±§éPò§Å×/>­ðÌN3+@­l­ GÚØ5ÞeVü[yØXÓÒJÚ´õ¬zëºÏÓÓ~é2C¾× ƒ %·n~îФI§œœ2ó)x{;Vk@w­Áá0[¶Ž1ufÍXWmÊO†F[Lž±I—t@"ã\\ÿ[A.W(#6€gµ,/Zñ—_ЀVw,®ÉÅ ””Bµå ›·üwñØÞžüñÓ†¤”}5ì!¨8»¨££åƒGKÕ*AL®âõ ¹uûXcŒ1Ÿ¦ÎUÎe AÆ ‘Ê^½Œßµóɯ_Eóæ\|’ `Ðy‹Zµöxñj\…´Ž2V­ ‡+pq±F ]šîÜõWùòîÍ›ˆ8-=ê ñ¹9ÙÔ#‡^)ÿ›•EQ®G“ŸOS5êFãÖd÷ò²³Ê.] ­îOÛ¬lÊÏ”Býbàò„tCů’””ߤ‰c^M,–"WënÝšµlé~áÜGí;* kmMP•.—'à‹}|œ²²(r¹ÂÂéããÔ½‡Ÿ ñèá׆€Ã¢É$œröÛ¾½w—®Mc¾fÅhÅ¢7±XªƒÃ£ID_ VMYM&ã”C´PÈ;fg—)  éëçÚ£‡P€*ÿ¦"‘„Ïk|±ÅÄdI$2‰Øð3î—”°N«VU\ĸw7:SS ºJdd𕡏ˆYÝ3R(ìô´ý^áú½µ9\!HD _]ÑQ™¥•­ÍižètžÁ?ô¦å¹ýù³°°¡{¨ùù´¤ÜjùÙ®Ã>ýäóD%%L7w[•Ãã‰vv¤€.MÛ·÷¾ï‹.G¦R9™¥µö’ËÎ)KNÊ×ûo”—GKJ*Ð{w3aY-µ¨‘±22 _\ÌHXµÙf®_ ?}v¦–ÊR4Æ"=­D5ˆLÙAøó¯//ý'ͽ|ù“¡¦½~Ð¥iuÿºVV6K _ ïÝÛDƒ¬S(DnÒ¤n¥¥,GK\U_«*b±´ß]ç/ÎÖ8ÃAbbþ_ãüš»²˜|''+Y‹¡\ºzõÚ<*•ƒD"ì쪽 ¹Ž>NÛ¹ã‰òöè1–,xùò§+—>)[ÖoYåŸ&,ì×ÄI]œ¬¸\‘““eÅ1z•ùð>ùö­Ð{–T¼‹Ã bc ·¼sûs`_þ¿^I…Bqêä»Àî¾;ûhÙ1?Ÿæäd¥GH99eÉÉú=ýÞÚÛ¶>²´Äk¼4“Sæåi_·Æ±^ºj>oÝòÐÚš¸déÀŠwY h´…Ž¡ÒéÜÍ›þgÊyKKüœy}ûõ÷ÇaÑ™™¥©©Å—¯Ì¡PØ–Vx yyÔøø¼Z{ÉYÇå0è<½ÿFIIù%%L½wïÙ}Û !æµø³F&˜Š‰D¶lé®q­g%[[âömý[5²°@>|ðõ{L6 M[Ï‘£ª±®zE8,ÚP—À-­ð-Z¸U·ú—Ã$'èCY[9 U}µÈΦE’òsÃD„§îØöøõ»µÚw‰¤__GÈMš8•Ÿ#ÎxpXtÛª¡¨¹’’ÿ~ô;8Û´õt~õ_Jíái_åŸÆÆ†èççZ~…­[Z’ñËV Ö¾cff)c¡ñøñ?r¹<¡1vˆØÖ­=Ë_'}ý*žÇMœÔ•LÖ6¿ðû$÷F¶z„„Å¡­­ ú=ýÞÚ66D¢Æ_Yyy;Ô­3ü|«9¢½=Yc<tƒ§c¨ª9‡¼½gÎîÕ¢…ÛÖ-Ts·£Ñ66D½'o%1VVøZ{Éq¹Â„„|½ÿF"±Ä.šT“?qXþÌCläa‡Å ~Äå–”°Ö®¾­l\¶¼ŠnÈ Z´t‹ÍÖX¤ VÓ¦.W¯h¨»6CT*gÅò3föÔžŽ@a9:YíØõ×ä)'u]´x€³³¹ÿćjÈ3ØÝ÷ÃûäÓÎ(ÇôèÙ|ÄÈö¦Ž«A°µ% hõôqŒ©©ÿFŽlO¡°’óMH(ö˜Q‡eRùRø«ª]h´Å¢Å´,JÕ3fº€jŸ¾-×­¹£¼4@&ãOþNPkzõnQY©*d@"¶Sç&1ß²Ô¦Ä6+q±9'œ(-a=~ºÜœ— ‚ ¨0Ç>‡-T¦#€ƒ‡'5ò€9ríiÜØ±OFWk¼;šë,;‰ìàþƒö2vîWåüñdlÞÞ+W 1u™ D,–nÙü€Xy½x~íÃûdåí?ü}þœþù³† @««¤„¹dñµšœ\°më#¹zC»KŠ™¹9eúÅ ˆ33J ¿JNv“É+)ùŸõŸŠ éi%ÚÏ%—Éû÷=·³×PÞò5:#3“òäIm\ú))aüi©¨ Ü<áa¿–,¾ö#.GÕrãz„Æ9jË‹ýž½wO°íÿv3DNGcPÊK“•É΢0è<1=µX"•¥¥•èòª%+“ÒÆ­r®äæÍ]ý*ÒñINˆÏ#±z¼a™ Þ¹úý)õ{kÇ~ÏÆbQwü—•ªy¢?óT;oÅ~ÏÁãÑãÉË¥R©«ûÑŠ ÕÑÞÿÿ·ƒÎKˆÏÓûQ³˜ü„=w×ã%WRÌÌÉÖóóPFaWù±¬ƒÎÓ{ßZc‚ŒƒAmÙ:¶²Z›/_2F =¨,=où‡{XÄ&CŽþœ~ôØTƒ꯱G7m]›+í••±§O=c¨øU?úöëWѺG”o<¸ÿ´ŸK$’^»¾jõPµ6kWß0°uï>µQ‹™f𧥢ׯâCÞ%)owïá·ïÀÄÝ»žª–Jž<%pü„*Ö–›ù÷¹eË©] éÕcûß÷œöw-;>|ð53³Tãc4ÞJ{¡Sr²Ë¶º}w‘îïÁ®´§ßŸR¿·öÌ¿ÏÙØ5¾wïzêççZ“i‹k_í¼t4cúY{{²ÆÕÚ«µÒžvÉI¼ÐûQ+WÚ«µ—\Dx꣇ß™¬ÇéÀÿ¯´§÷ƒ½ré“m˜Ú¼®Ú1&?)ˆ®®6ÅEL8|¤–ñx¢K—B‡ mkê@L/ö{öÝ;Qª«‡U’Jå~­²³D%""59© ¨kú›«›ÍÙó³êDÑ Aõ€}ÖH$²ÓÎ*×)ðð´ùð¯P$ILÈ3u\ ˆB¡X±ì†L*?¡«©c1±ÔÔâþ}wý3ëÂÆõ÷tÜeÏî§O;;(hoì÷ì*7¦R9 æ]?¡‹9ÏYtþÂì:±æAõƒe$›6ÜWþ¾´²"ܸÄÍݶK—¦?¦˜:®†B*•/_vãö­ÏûNR[н¢Ñ8Ê5KKYUn¬¤¢P(ÊÊ8Ú·,*dŒ~ˆÇmØ4ª†qO` o`w³[@‚ zÌ\¾x¾|É8}*€@ Μ›éçç èÑÓïSèOC­À)—+˜L¾A%‘ÈØl~uÆáer íš;mÊéð°_³f÷6¼©Ã1½®]›íÝ?!%¹põša:î²aã(”……»»mÐ-›EGgL™x’FãÞ{°DËZ &§}tKe¤RŸ'ÖãÆa $™~ïP¹\QõFyËå"¡Ä ÅlŽ@,–ê}([¨÷+GoG(ëÿÀ¹¡Lf¦_d.ɺ5w”£YgÍî=xHec¯^-öì~&I ò“=/Ú±ÝúšÀbñG ;XÝëëb±ÔÖÖgtxõ2~ùÒëEEŒÀ@ßÝ{Ç›:s1w^¿jmïèh©}ØšH$ݽëé¡/Åbéî½ãûõÿ£f—~óU¿{—øëgñ®Oª»£T*çóEú½C•5APð%:ãâ…Ð{w£k~¨š¼f”»ë=FJo±X*Kß¼NÐïŒb±ÔÒŠ ß¾uˆ 2‘H²|Ùu<£j¡R9ÊÅkÈd|I sÚ”Ó©T–›KðÅÍš,Ãã166D7wÛò mT‰Ð^fY-"Q5ª×T,,ÊGW]b±ô×Ï"ýöÕ¢°žœ\¨\ÖLÆ[ÛfÏ<¯ËŽÊß›6>°¶Öð&ILÈOˆÏ»rù“a£Õ¨¨ˆið§¥¢ÒrÒïÞ&N›rúW¹‰öÏ}ÿêåíGˆŽJ+JÞÞŽ_¢3¾DgèrêÂBº²«â],_.W|ý’©Óc¨2¿}ëc$²ÚãÊ ò鎀Ãèw^åóS]X,J×@LL­yÇ_?‹È–¸'ujæb[ o}û–…Åh~nÓÓK±²|Á ô{Í(YYô{Òôþ6ðõàH¤ž_J°úW3,}èð”òÕ¿+–݈O\¹6WùÃñõ«ø¹ÿ\Tþôa2ùL&¿¸˜™ž^2o~¿Í[Ç¢Pú$¶7æ˜zyñ®Ýš]½>O•Õ¿úí«ÅãGßæÏ» pp°üºÞÃS×zf‘Hêh7gÛö±&¯þíÔ~ƒÁŸ–Š^¿ŠúówMÿ eõïž]Ï”-ÿÌé[eõïÈá?~HQî~÷þbÝœ=|ðuÓÆûµð bÙÒë·o~®å“ÚØõx~êYõ¯YÑRý{ïnô¢W̤ˆ²M[OýÞY&ù6 èâ£÷ç€if¨þ5‹«6Ê9ËÛ´õT¦#QQéS&‹Õ«.%Ù±£orr¨×nÌÓã}ãöB.Gh€õæl–…âĩ麧# ÄÃ_SR ç/è¯ãìéŽàÄñ·îîvS¦V¶««Í¹ õ¹žvã¦QÓ¦é3¥&ЋZ>#¤·¡CÛ6kæbê(~³×4Á£.Lòmâäl¾ÃÎ Å,2’ü:`Òäߟã«VÜ‹¥xõNùß ›Fy{; r@9¦Ä§©s^U"‘)ïÍÊ¢º÷ð3U´AœYd$€½û'„…ýºs; €Á ž¯èäü4àáaD"srÊ2™üÁ½/>Êq¯AÕ¦¯µQòós=|dÊ’EW1‹Ñc:a0¨m;þTÞ…B!½¼23J›6uÞ·7¸¨ˆqË8u°A™Š¹d$€ »¢Póç^~ó:aí¿Ã½½ÿ+Iõiêôí[VÈ»¤›7#ï=X;H ‚ ¨ž1AF¢P(Xl>‰‰«xWÿ ÿ×o×îØþ¸}›õ¾¾.¾~®x<šÁàÅÅæ¼yЫw‹gÁ+›6s6ÈJÖPMˆD‡#l  O¤º-K™L~ùõ½ø<‘ñžO¤ÇÒçP•ÄbiMÖ²‡´P®s Ÿ[¨º …"3=ààj€å¡Ux¹uËCÀÔiÝŸœ^þ.·EcÿìL¶Ô‘¨ðy¢ü|›%Éäx¦¸ˆ 8΢hF 莎V dI‘PB¥r”·Idœ•òٿ?pmmIÊytŒAÀ³X|ó\©NcÐy$Bcù:TC :iPN± ™ƒÂúú#Ë_y0*©h¤ò‡ÃÑi{1b‚> µ|ÅàòÕ¿U:wöCèÇ”­ÛÆ/*‚ ‚LȌƑ22J##R]\¬ûù—Ÿo›@Àp¹&^¶‚ ‚ ã1£ŒäÜÙëÖÜ–Jå€?ÿê|áÒ?ª»H¤r’P‚ ‚ê%s™¤¸˜©JG÷ï}‰ýž­º—ÃHX…AAÑ™KFò3¥P•Ž(åæRU·ãäzz:ÔzPAÕsÉHÔJ ðxL§NM”·årEDD*œ6‚ ‚ê1sÉHš7wõñqB"\~ IDAT¶¶$__—k7æ¹¹ÿ.ƹ}ë³L&àoÚ!‚ 2sÉHÄ®=ãsæöý³=h@+e{ddÚšU·šŒÁ˜Ñ \‚ ‚ ËŒ¾æ luòôŒåK¯xŸ<|d{•þâyÜÞý‚s£AÕ7±ß³Û´õB"Uo 5æÒG¢4qRטؽú´ûôóÕ«x÷F¶Ÿ£·N™hê¸ ‚ C ý˜’™YzöÌ{ N6ýfF}$Jîlÿ]?ÂÔQ@AF””T œ³¸˜icC4u8Y0»Œ‚ j)*dìÞõ…¶`³-Z¸-^:n‹ Auš\®¸v5<ìÓÏèèŒøÄ=¦2 0# :¬°€Þ§×Ž?ÿ ر믗/~LwœNçîÜ=ÎÔqA6‰ y[7?JåÈ5놛:È\ÀŒ‚ê°5«o—”°úù/¼ ˆˆH5uPTKK‚¯¯ë¬Ù½££3ÆŒídêp sa^#[¡*ñx¢ ç?†‡ýzwÿÞS‡™•ÊyùâÀÒذqdçÎ>k×ÁaX¹óô²Ÿ8¹['äæP«Þj`I“’\¸bÙ €…òÆ­¦2¥ÔÔb™LJål¶`úŒžÓgô4uP‰••±¯^ûñ#—ZÆéØ©ñâ¥,M”±ôÜÙ÷Ÿ#Ó£¢Ò’öš:È,ÀŒ¤Ž).f(oì?8ÑÖŽdÚ` Ó*ȧ)olø÷n`¿»w¢zöl¾eÛóüªñÇ)OÇäÓèt.pr¶rp°ìÕ»Åà!mL^0"—+|¹ßs@¬l‰ŠJO ÛhÚÀ*ú—»më#¹\Á ¶ïüÓÔá@æf$uLdD`ñ’M/ºúþãzSG™ŒYycɲAƒ‡´!±[6?ÌÉ){ñjµi«RR 7m¸ŸŸGss·mßÁ»m;/KK<Ÿ/ÊH/-,¤ïÙýlÙ’kNÎÖ+V ž2­»…… ®†+Šùs/ݾõY­=.6§¤„åìlUû!iáà@nÕÚcÎÜ~ŸBS† mkêp s3’ºD&“ÇÑ~èðvcFV[žª+xwaVß^;‹‹™0#©sx<ÑýÏ/œûÈf ”-cÆvºpéý>”7vìØ©ñ·¯Yå„râ)3D¡°)¥¬’–@ nÔÈÎÑÉÒÕµÒïxó1ir·*·!“ñÓþî1íïI‰ùÿ̾ðäqÌù‹³ñxL-„§t綆t0yJ yÎOãèhimMØw`"™Œ7u,¹€IÁánÝŒ¼so1QŽg„ê–œì²Q#eeQÊ7>|ðuμ¾;ûèwÌ+‡NwœFå*èÕ»¹µ5¡æÑPDDê©ïââr¤ mÁ är‡-ÄX,Ú߿шQ¦MïÅÖ‡£?üEFm9súý¸?=x´´Ö–MLÈ¯ØØ¹³Ï–mcj'€êúk\€©C€ÌN}øh ¶mytäØT{{²©ª'-­¸¨!K/¼Z\̬¸ATdº€/öoå¡Gïú Á­OŸqöÌûÏ‘ioß$ÌšÝ{ýÆ‘†ˆÚ0âó|ii…Ÿ¿°ûvÞxÂÿôH¥òØïÙ~=uâÝÖͧNë¾ióhµmê"1o~?ÿVV,»qôø4c_•ø“ÍáD"IùF 9pPë©Óz|É ‘ˆN}p8´Q# B(ŠÌô€ƒk´{èÀË­[¦Në~üäôòwùx/ ÛèÞÈÖ€§«÷|ñ‚ù—U]#ïC’9µ5¡Wï:6^´x€iôèßw××/™Un¶qÓ¨•«‡ê}‘Hj†} ?5nì¨K`Ê¡£ÉI×nÌïØ©q-Ħ {þì‡wïss¨.®Ö ßE÷Ýór©®n¶(”º …’&^K¹\¡öÍÄý‡K”3éA±IE¿q8¶óa¡!f÷i„'`.]™£¼-‘È{.`±èËWçÂqafîåë5<žháüËÁÏb+Þ»kϸI“5¼Ôb†é ysW·lÑÂíÁ£¥‰ ysþ¹8uZ÷¹óú50]ܾõyÕŠ[Îï?eeì9³/zxÚwéÒTÇ#xxÚ-ºßp8tfΡPҷ׎÷¡*Û …B’H8cA5çl­c˜LþÖÍ•ã"KKY»w=U}bBæ ¶°¶&äæªOL‰Å¢ž¼`aµ5ÁÜF~˜Š+Ȩ-¿~ݽeÚH.^ø8oÎ%µ7—B¡Ð¥»«–áphkk‚…RùBÒø¦#P`Ž¿« -ÂÃ~ùú¹Þ{°ÄÖ–D£qJKYáiƒ·6ÈÁs²Ë¼¼ r(H³››ÍÛ7‰2™ÜÚš0bd‡ÅKúø8êø /ôcJFz©iĨ,øLLÈ‹ù–]VÆnÝÆ³¿î}r¥¥¬ð°_Y™'g«Ñc:êXR@ Žzâø[@\›µ*åÐׯ»§P(*Þ¥ûŸL$’~xŸœú«…¶<¤MãÆŽ±>àr…Þ'§§•-ñÆ·sŃ ÌHê˜aÃÛã°_¾dxxØoÝòèÄ©éD"Ö§hàHĆ£®^ŸÏá ;1*îž*Iº6 Ðiò@ŒD"kyÄnÌ·¬ˆðÔ’b&ž€ðw“ ‘ÿV¶ ~ú{lr·@_µ‚ ²2öÛQ2©<$$I-SÊÏ£9ôÊÙÅzüªu¤R¹H$Ñ¥ÃòÆõj‡Nç9ôª²mЋ »ÚÚšròÖœì²'Ob€Äbé§ÐŸªÿ’H¸y úÍ_пNÍå /^½v%,+‹"—+}Ïœ›©œ>\oÉÉG¿b2ù€õÌh6‹úáÆõˆ?rË(l:«e¾,K2^÷ŒäÃûäË—?‰ÅÒ¢B ßý€ô´’Ü\j@€Oµ2…BqöÌ{ …M£r5¦#X,êჯ€ðõuqþßk/_þ¸w7Z(—ïPA ?~ä&'””0µg$ ïìé÷·nEæåÒýúÿqæÜÌZ›†'88öÉã&ƒG"âxŒT*G£-px4‹Å¿w÷¿ùèt®ZF’œTpñ|¨\!W†]ν|ù“ q쟵ÔK¥ò÷¿œ=ó>)1_,–6kærìä4-Õ=B¡äÌé÷Ž€Éä]¾ü©²ÍDÛv^]»6Óöà,**ýò¥OR©¬ Ÿ®qƒÜêåËŸ|}]`FÒ`ÁùHôÁå ý[¬éäooOîÐÑ»o¿?¬¬j£V"æ[Ö´©§ÕÞÏAZݸ¤&‡MN.;êȬٽ¿Ï>q6Gb 3ÿ>·lù ?üð˜§N¾[·æNÅö%KnÛQ£õT»lNN*Pk$“ñÏ_®jÓVÛ•þÍ›hü¥¾}ç_‹—T=kNèÇ”Ù3ÏS(ìòã't9{~–QÌî]Oýü\GîXÝò»jèbìջţ'˪\¯¨ˆ1uò)µe,Ó2U9 ¸Sû _¿ï¨nÀµïჯ3¦Ÿ­Ø>yJàÉÓ×~<1ÀùHjÛ€­Îœ›Y¾%9©àì™÷ýƒü4ø4%¥päðCk}SS‹jxä–-Ýÿ™Ó§sŸ¤¤.W3’º‚ÇYX Ë/)€F[ü»~䲃jxd:«ÖÒ¸±ãå«sµ§#6[€@ ÊW©àñ˜]»Ç͘իʓFGgŒûó˜P(QkOK+Ñ)h3 •Êq8´ÚC˜4¹ÛÁÓ«LG8ÁûÔ”•±™Lži/¸H$E£-ÊWC"‹—Ü´y´ £‚ÌÌHô$Kì{ž˜˜O-ã %d2nÎÜ~k8ýº5w4N=Òª‹Ç–÷àÞ×è¨ôCDÛnBÆæèh9ir·„„¼Ì Ї‡]`wß ƒ<½ 0+—‹«Í°áíž? %~~®ãÆw?±«.C:ÜÝlÿžÙóKTF~>ÍÓË¡oß–sç÷Ó±ªsŲÓ@«Öº¾ÂE"éÓ'1q±9t:·CÇÆ“'ÖòœôÈ=›‹D’ø¹¶¶¤ö¼ç/èß®½·.û<ð²b:ps·­7éÀÒ?rT‡Ü\ꯟE..Ö]º5›¿ ¿¯¯‹©ã‚ÌÌHôBYðx¢£:I¸KB³²Je2Ź ³ 5/HEb±4êsZÅv4ÚbÍÚa5‡L©î^47)QÃZqxfÙ2º|îßû²áß»ªQ,wnG½~ÿðñ²êFRCÖÖ„ógë±cù¡iåÕ¿¡]žö.ýcê( s«õ‘ŸOóòr˜>õŒH( ùøo¯Þ- Åž]ÏŒwF6[Pq¤!¹|u®ûHД½=yמqÆ·›©Cï:\aP*ai‰¿w±.³ömßöxÖŒsjƒjCÞ%Q©:]Æ6i©Åj-bý†‘“&w3I<Tû`Iõ$&ä­[{W.“‹%Òqã»(ë)K:³³)r¹Âà«Ì”–²ì{Îf ˆD,‡#T^¡G <ìÚ·÷ I II¸›GëW*éçç:cF϶í¼b¾e6xpñÂÇ„„üØïÙ{÷ÛV>•êø ]t_0%<ì׃_ÓS‹%R™–aíÚyM›Þ£ZÑîÝý¬¨˜™—K[½òª’¹7HÄÜyýÔzÚ_¾øñæMBB|‘ˆýü9½²ã÷ìé7zL§ò-9ÙeÇŽ¾¡Ñ8VVxeÁ—ò^^í;x?|øíáÃo;;Ò†£Ê¿¿ärÅömèt^Q!ãí›qnÝüƒA-^2PÇ‹YÁÏbCB’~ÄåDGe„VÒièÛ·åðíË·df–ž<þŽBa%',Y|­²-ÿ]?¢|î%•Ê·o{Ädò  …Týðpp°l×Þ«°ˆ¡<e±tÙ Šª'¡¤„¥å¼( ¤îO‚‘Ä~Ͼv-<7‡J¥rh*©øúºÔNÝ"d†`FR=ÖÖÄc'¦íØöøáƒ¯ß¾fM™hcCTNNåænkŒEïxZ½vØú #e2y›Vëòr©'Oÿ=yJ ‘ÎXVÆž>õÌ‹W«t|ÈØ*Vÿ^½fcCTû©]-W/‡qy ?ázŸ^;‚_¬*ŸžîÛܳwóÿcï¬ã¢xÞ>×EK‡‚”ØÝ-v£¨Øñ±»»;±»[QQ”¥;®;¸îßëï¾ç{ܺï?xq³³3ÏîÎî>;ó„·w ÁÍxéèd1a"¬ `²$'îÝý4èúe y³Õùò!.ÜÜl^½]cc7n½,Z{ÿÆÅæ8þV;;’Zºï6ïßÏÆÄdëÒ³æÃûO0tX»ÔÔ¢™Ó΄En×Y×ÿ,ˆ÷¯NY¾r‹ÍKˆ§ž;ó#›€Ç^¿¹°6¯Y¸\Ά2šê[–z„Ng߸ÚP†MQ1ýâùO5j$z«ƒfð6'NÍ´²2Ñ‹<E\l‡ËG¢®5þE¤¸¸êò¥Ï1?²étVÛ¶Î+W­Ñ;ñcpb›¶M¤ùTÑhÔæ-cQaÍoBssJýKý×RUÅþœøæultTVii5Ÿ/‹G³H$о««M¯Þ^C‡µ­½¯á0qR×ÛåS+Ä|á”)ÝG?Äå ˆDœ¾e‘ÇÊÊdŪ¡¯_ý’ˆ%ž^öS¦tïØ©iÍ»!À&+«ôÊ¥ÏññT6‹ßµ»ûÊUCML`erþë)*¢_¹¢ÑÛA ÿ–F"‰îqèàKi°¨È¬o¡©ß#¶)Úùâãò WàÙ3æ÷íÛ¯¥ìV£_K±†NÈçäÍ›îge–º4µn۶ɺ #[·illL21!Q(±XR]Í©¢³KK«C>'……¥ß¸ÊfñÆûuÙ¸yÌÔö†Œi»öÎß¾¥j±Æ¡{:vjJ&ãÓR‹àGÑ%‹Ðoºà¿‡¿iÃýË—>KñEDd¤$Þ½¿D¿‚iD"¡ÑX ®Œ÷óîí«Y¾'ED"ñþ}Ïz%û6ùþ-í{’L{þ!D"‘,¸|÷N˜\yRRAaÍÁQþ;U  è¿·¨ä´®ü‡(,¤-œY,–¬\5tð¶Jó©¢Ñ(33²™¹‰³¥4‡H>µòÔÉwûí5§×Üy}t+uÝÓ¬™½?CÃÃÓŽJ­0L¡>àñ„ÆW ”ü!A$×…ÖpÈÊ,]·æÎÑ%%U7®‡z5w¨¥F"‘HæÏ»$›ê"11¿°€fï`^›Æÿeô ‘…¢û÷ÂU­tÐh¬¯˜¡M I}v @´háÕÞ¾ÍÕ«#ƒÁY¾ôúÔi>·?6‚r~UFFÄ-[Ç]_Ð ÞmKKã/¡›×oéÝÅM©ýÓ¥‹ŸŽz¥ølçjø@&°‹— |ò|¥ŽÕ±X’ª‚ b–­gN½/.¢Û;˜ß¸:lx{Ù§^Ó¦Ö&v¹~-”ÁàlÙüàêµù¯^þ’H$ÏžþÐ4Á˜™åäéY/_þ ÅžÍìÇ÷¶µU=é¿U·.^ø¨ªú½–ìãã¹xé@¹j))…§O¾ûž^TD÷jn¿y˘=›©j“Íâ=üJé¦>} eò£Nxùâg\lžb9€íÖíw ôȈL&“  IÖ"•”}{Ÿ+füøôðÄb BáV„Ï.¸™üiƒ¾e©™êjÎ$¿••¬•«‡ê[beeràДϟ’0Xt«VNãÆ{›š60•´MÛ&Á•n’H$»w>UºÉ·¦²™åÄ©™¯^ý ÅͼìÇ÷Ö._]ñà~Äß‘‘Ñ 4’G£ÄbÉÆõ÷»v<ù²QÖ¥{䨎ׯ…^¿úÅdr7osäЫÉS´É>Õ@«þZÁ©É`p(ªSç¦ãýºæó'å AÖ®)õi9ªÃÓ'ÑeeŒ€ùýjÓWÌ%¹xLMÉ»öL¨M³õGIIÕô)§ÃÃ3vï`øáUÒÓ‹'ùÈÈ(¹y; ´ð2v\ç±ãþ—‡èÁýˆ¡CÛ‘ÈJì¬lÿÔÉw={6kÕº15¯Bi"ÆfÍì/‘ÿøTdÀÀÖ¶®µ!èÊ—+†4Üë"Eÿ‘HvÆ©°vâØ[Ù ÒÙ6.WžVìããùðñrÙ›¤>èÕÛkÕÈDÜûàõóú˜˜ÊÛÕ.¸|âø[¹u6‹—¢l©‚Nc+úË Üæá“eû5¯99ò­8fÛŽq+V ‘–˜š’>^þ%t³——}múbþ¿Ù¬”&ΖÏ_®’Ëg ¼xþ³—ÏöððŒI“»x:1‰DrõrHŸ^;ÓÓ‹×®„¼DìÞùôñãh}K¡1ŒjÎí[ßW.¿‘“]¶~íÝk—$N IDAT‹ÍW\~êÖÍãù«Õ䆖ޫ¤¤êÜÙ`}KQèaŽ„Ï>ôÊØä÷z›HaÊýÃûxþE"óÖ?vôÖAÉÊʪ·l~¿¾X$„Ð.i©Åׯ…~ù’mÊÎ*{úDùmùäqôû÷ñJ7åS+7ª(g2,mkgÖ¾½KSWëƒ^Ö( ‡ÍÏÉ)ÓHþzE,Î ¶²V¨»²’éáa—]*ˆH$|Ó¦Ö;5¥ÑXõ!?‡1w´€rÙ››SZ¶rjÕÊéÑ£¨Gµ3O‘#;ë:VDDÆ–ÍÂeÒÛ>~•œ\ ¾…Ÿ19üŽçS+ŽVVÆ[·<„ÓuZjQ£ôÔ%ÄSù|Q©&)ú`’›SÞ©ýÆÂBÀËËžÃåüvQ™Æ&¤¤¤Ά"•̤ÄíFˆ¦·6DB<•@Ä)Ý1ü{z|õׯ\%)­Ž‹ÍÓö(µ¹Aj¹»Š6åO¬µµÉ¾½ÏRSU~wA$ÄSId¼Ry23JJJªtö(ËÉ.‹ŒÈ„F²”ïãËʪi•,+k›O£±0´i›¶==íO|Wc³Ú ¹ú@À±Ø<À®O¨Ô #c•†,tšÆÞìºG ‡™3··ƒÃÿ|mbcó¾„üož֜ޓ&w“þ,/g;úúúŒí;¸h×ïËç?—¯Rs½ÿ‡Ïž?÷Ú%.6oÌØN­[763§Ö¯½£t—±ã:oÜcc"…âj$9@ b°šÉ_¯@1ÆÆD¥"ðX##¢……‘Eý'lÑô²Â'#£$;«´Oß Zö²ðX33²¬™B03#K$’ÏÉÖ6¦JÝg ùa"wûÎb"P((|­â&2 /‹ëãð¡rvÓÈdDÄ“)x-D26!ápíŽE»1€Çc¡ûQq‘ˆ£PZ´ibLRÕfÔr$×Ç Øf»öÎX,†Çª7*Âã±çB!t•DSðY3ûEKzyÙ/¼*ýÜ56!b±Ùra!­K§ÍñIûj4à­¿ÇŽ¦àps÷Á’aC<3w^Ÿ^½½”Ö¬e(Ý`æ ¶¶¦ž,Ï+8A-;{ÁÂ~#Fu˜6ÝǸ¦0›ööæ66¦/žÿT_Í12"Þº½ÈÒÒxÍê[Ò D ƒÐH LMÉJ¹Ü€þ™:ÍE¹HJÔx¡Z#ŽyÝÒkµP(ŽŠü=bkkêÿÿÓã&¦¤ç/W84eó–17n&¥\½fXCñÑWJVVé’ÅAM»:/³³^0wÎ…\/¡æU@g 3³æ.Å¡Pœ­"U••ÉÿÞu$`½Ó¶]“AƒÛè[ ÃB$——1Šá'š2µ»µµZõ¤ÉÝž?ûQ"Õöæ—®ÌKI)º/Bß²hAxÿªácp⯟¹ëiÓ|‡N½tá³ Õ‘”XE¹01!ÕáçÏÜí;ÆÉzÿZ[›Ì hð™Þ .]ü´~í]© "KîÝ ÷òruù×èѳÙê5ÃR’ 7oU¾.«Èºõ#Ùl¾ƒƒ¹ªù¨Ñ5]jÔ#A"C„:çÝÛx<ëî^É4 “=›9ý^ßRhIoßæÃ†·;{æÃÄI ¸R úùÈã ÿ[u €Á Ï^˜9[{xØí;0©¾»vs³:¬]ð‡„´ÌÃ$^‹Dú"èÊ—Ën(–ßø+A¡P7©4RVŠSãFW¯ÍWS¡eÃY¯tìÔT‹½Þ¾‰ËÌ,Ù»û‡Áâ0X,‹Ec0h<‹F£¡ä$^"‘É‘HldL$à±fæ”ê*vNNÙÍ߬¬Œñx¬™…¦¦d4eý­uf+Žâ¹›6Þ×tG_XÍà¶lþŸ–Wi±—.ápø›7ÞŸ5§WVàâbUc˜¢&Ζee ¡PÜ@qóÖ1;lÊÌ,Ñqzº%‘H2Ó“VöJ2jÍჯ¶m}˜>£‡\pÕÆ‹ lEm÷Û×T(û‘\Bíxò(j”&±A%bÉÍ¡Pì²ïã›7w”æ˜þð>¾KwM½HŠ‹è¹9eÞ]Ý5Ú B$e¤—xÖ.t‡"¾ðþ½©ý—,]º¸5Sà\,_ ú:|DûFÊÂÁE†g8:5ÒMJîÇ£ê{ O­øð>ú¿ys‡Î]Ü~ýÌfï=z6sU–¬Q–”¤;{s-Ìݳ³J££²Æÿ™Œ¢¼¬Z,–X׃©GÌì6mc°/D¾__Y{04B£Q( AÐ(‹EK$z[`±‰D‚ÅbJK«´ˆ1øås2€Uz?¾{'ç/ªˆDÜDCMIL ¶hYÛ‡¤²ÏL‰XòéSRI1}ÔèN5Fâ ù”L"á:ÿ&2Yè4“Éutªm6+ø”•V‹ÅbSÜ*:;&&Û·O ÙB›÷NØŒ™=QjSbiú6©?„ÑÛ7qC‡ÿ/\Ðó§?Z´tjêúGÔ«—CîÞ_¢³uX!ïwYCI :%õù,À—Ïô0G‚Çc·n'—iO‘C^^M/lÞ2¦NÂW‡O?v|:üú|¾ðÞÝph¿qÇæ÷•®Úø;¶yËM#£|ý’òôɃ‡§h´W½òõKÊÍßË]¬ž<_)k½+'¼ôuõÔfÚ[ûßíƒÚÔ‰¹Nû–¦ÑeÕŽ7¯c¥IžÍöœ¼g÷S©F2ušOýM“>|™™Y¢ƒc¬–, ºò¥öíˆDb‘ne¯Åù™3ë¼¹9Eéý¸ àÒ­›ß5m°–XZÚU–>3++™3¦ÍË-¿|5NtÊÙ3ÏYZï?8¹þeÔž´´¢í[ÉógO„…¥?9Cý¾š¾Mê‹—œ\ + ›ÅS\s¿z9ÄÜ‚¢sé4ÆWm$ÉŽíxI$âö˜¬>)®nðòr°UP±ÿbbr ]\¬?[®FùGøœ˜šZ4mºÌìYÿÆõP‹!CÛÖ·lËÚµ#† kG§³Ù,½ŠÍáðÕ\6‡Çç Åb‰@ ârù"‘X  …b¡@$‰ù¡X,áó…b‘˜Ï‰Å¡H$‘H„‘H$„ˆÇ(Í^QçAë7Œ;λnÛ¬"©¾¢éÔ’oßÒæ^¤æU.PßÁ²õ‹H$>~ìÍèÑõ-H­`³åÃX7 N#a³xK—\»w7ÜÃÃîJP@ík´FK’nÛ1N_bÔ+NN-Z:J½UIsü{¯^3L/, Š„xê˜QG$IrRAL»w>9~ì-àÍûµ]µZ›û °w0¯ýj‹ÅD,&W 1™\¡PÌ`pxŽzýf ¾©……ôô-…––F’˜˜?{ƹÜÜò G-]>²ƒÓX,:.a¯Ð(jøˆö.ÎMM-´³7oݺqQ=èê—ÀEô-šžárPŽr‡sÎÿg0×4•9‚P\‰@õ/C£±®^´iÛä⥹hµ¦ ‰D²{×Óû^ìÚ3¡Ag”‹%9ÙežÍêØâPgŠFÂáðìqúäûÑc:Þ¸´q-“×Ô-¨å®Ö´hé( ÛÅã ¶lz0ir7 ‹†ªe× ;5½pinbbþ¢Åp•³M[F›™“鯀A7XZß½¿¤¡Ä у0÷ÒË?j¸È ó_ÖHdd¦P(jßÞYß‚h‰Ah$_B’ÿ[u«]{çа­n5ù, Ô+-Z:z5wxþ,fÆLý›ïè?eî-j05%kê0Œ€`øœ<=«AO¨çÝÛ¸åË®çS+›5³¿xy^Cÿ }þôG¿þ­PÜ#9ôàýëd¿¨k7w©á$Æ**¤7uµ–MRHìÛ¯EÍõ`–ÞºMrM.pr”—1 i­Û4®ê„‚‚JF5·ÙŸNÅi©ELO½–-Kž=ýÑÛ·¹Ò©õø8ª­­©Ò´ÀuN^V5”W……ýNöÛ´©uë6S’ SR~g@íÐÑũ޼ *òl]Oíÿ³DGgáqXƒº W/™™‘»u÷ÐtǨ¨,ÞÐÏ-“Éýþ=ÍâˆD\¯Þ^ðÍùuóØQEiI55¿‚QÍÁ`жvf…4i.›ôôb3S²â³÷ÉãhÄûW9îð‘i5zÿÖ9Þ7]_P'Mù;vàà”¿Àû÷ñ£¨””ÂuëGʾ|ñóÌéêÏ'´n°}Ç8½{ÿvî°±®.«Þ¼Ž ÿ[#é? äý»w÷3¨d^@ßzõþݼ龎ñ_C÷/„Kã¥ç.ø÷é«ñ«·¡xÿ¸ŸÍâ‘Hø·ï×*}”©¢ß&‘“]0÷¢4ë8 ¢‚éàhQ£0¦Fsï_„‰©)ÙðÃG" Ô7h4ʧ‡§¾¥¨wvíñÓHÑ™™%ƒì+)‘8SȉOƒ ”‹P¯ää”Y4m¡^quµi¸ 0ñññœ=§·¦{¹{è!³Ï’À EuеÛßkà/m²ÑÇŽ>R'Mýú™»pþeM#Ñh,<®œð;·Ãºùh¼rŒ€€ð—ñ.x¾E¨wVý7L kÖ·t³¤´´:44U±FýM^ àYW…"i ðÚ£tpÔˆá{ݹžqþ‚¿¾A@@@¨_ˆ$\CñÕ¯ªb+¢P¨ƒ‡§tèè¢{yê‰hÕF/ólrÔy*¬ºå󧤥‹ƒæôÑM’<=bb¬»„ÒµÄÍͦ˟™ ]]m=Y>ÇßW_"Õõåý»eÓƒ3§ß£P¨!CÛ»0Gv1rÒ„ ƒÑµ2ôógŽÞƒiZÛ˜ºþ™’Q¿Èzÿfe•&ÄSI½z{ÕœQ"EE4kk¬²ô°L&—HÄ)ÝTçÐh,sóz·záñLè …`jJf0¸ *17§Ô_ .WP]ű¶Ñ…+õ?ÆB£Q¦¦Hdغ§Aœ[±XRUÅÖÁÓ£®‰Ä¹¹åUUlgaA±±5ƒ¿ÜT\D?yf–»»Ž>Ë Îû×Ô”Ìã F~ÿ–¸xàÂÀþPñÛw×S§šyÿÎ è»fõ­¸ØmÛ5Ù°q”¾¥@@@@@ø§Ñà ‹Þ´yôÕkóoÝøvÿ^„ÎúE¨‘M›Çàpºð‹A@@@@@P…®#¤Õ‹Å,¸Ü¡£KÓ¦äûÏÒ¨‘‘“X" @è!BÚÐaí6m½0à²X,Ñ}ïr4il©Ee„ºE?1[çÎëÓ¸‰åéSïõÒ;‚GÇFýú·Ô·ú‹"øèÔÛ·¾çæ”ëK@§ÎM—¯¢o)ô—iÏȈxÿáR3Œ€€€€€€ ô™û×ÞI熀€€€€€À?•ûÁ`A4ýƒh$úÑHô¢‘ èD#A@@@@@@Ð?ˆF‚€€€€€€ Aÿ  ‚þA4]C§³cåÊ–$%”–VË–|ý’"Šu+‚>A4]¸àòÀþ{DgC?+*˜#†=ò0‹ÅƒJÞ¼Ž6äÀº5·õ'#Âo²²JçÏ»Äaó¥%F9ôJ¶Îº5wB>'ë\4„¿ D#Ñ)7o|{ñü'‡ÃŸ:ùTQ°bÙõ²²ê„xê<ÿ b±„Fc-]8îã•K!€ÔÔ¢ÔÔ"=Ë€`0”—3’“ ¿}K{ú$:""#7§œÃá×¼‚VˆÅ’ÀùWnßú>×ÿ‚X,Pó*mÝò0èʨÎÍßNŸz?eÒ©ääB½ ‹ÐàAI$’Ìô$€•}¸¾…ùË), ué¼¹ªŠ ýlßÁe^@Ÿùó.I+¬\=4ŸZy÷Nô‡Ã\¿¸zÕÍ]»ýFŽê¨‰ &“{ùRÈÛ7±ÉIL&—Hĉ8##"‡Ãçó…|¾ÐÆÆ´G¯fþþ¾-Z:ê[Ø¿Š“'ÞmXwúͺëÖ5âðçOIûìåê&M,½;n‚knn6C6†}Oÿõ3wíúú”A¯y£  ¬ú|àËçˆF¢;&Œ?îäÔ¨¸˜þüY T‚B¡NŸ½sÇã‚üJè§É¶ãο,‰¡’¡ÃÚÞ¼½HŸr7d8l>‰Œ×·J(-­¾/ü[hZAA%›Å§LMÉ-[:NžÚ½E =¿Sù|!Æb b53³dÓ†ûÁ\\¬zõn>|dû\H$ùkšO­üð>þõëXF5gûÎñ;5Õ‹´ééž=w’H8ÈÐ …BÕ!"<£¤¤ š/±²2ñlf—•UZX@ƒvéѳYrRÁ™s³ l­OÑô ¢‘4îÝ >¼½X"ÐoOB<0cfÏã'gÄÅæ °—ÍânÝY4tX»Çßn\`aa½ÃÚÚDÏ¢7ÄbIè×”sgƒãã©B¡ØÚÚÄÆÆÔÖÎlêTŸNõÿ–‰ÄW¯„œ<þ®°æìlÕÍÇ£S'×6mSÈ‹WVV–ngk6sv/ –O=w6ø[h‡Ã7· ØÙ™Y[› ÒvÄÈ:–DŠP(Þ¸þîÝ;ácÆvZ¹z¨½½9œ½*+™ÏšíßÛÒÒ¸¾%üë™çÑÕÕºÿ€Vƒîãr ýöýºÐ¯)[·<„길X‡„nš<ñdè×T¨dÚtŸ“§géMhÑHÔ¼ ß^;q8LxÔvSS2àù³˜éSO÷ërþ¢?TgÉâ  +_®ŒÛY¯Â*Íâ‰Äbcc’¾ù¡P|òøÛ#‡_áñØñ~]æ/èÛ¸‰¥¾…úƒG#ÿ[uƒA.8sVOƒ8OŸD¯_w·ŠÎ8¨õ²åƒZ´tB£Qú äd—Mô;Þ©³ë¾ý“È‚¾ÅùGápøÐtÔ½»áóü/J$’¥Ëmß90÷âÛah4êù«Õ>>ž••Ì>½veg—:8Z„Gn7± /¤‘˜˜B¡š7w–|xŸÐÙÛUz'óùÂwo㇠o÷îmííÛ\O’þ&!žzñâ§Ï“ËË<žFñxBkk“–­œ¦Lí>fl'JŸ¯±°°ô™ÓΠ1è}û'éñ³^|¾pîœ Á÷˜4ir7Cxå ò+ÇŽ>RTD_¾bÈâ¥1ƒX¦$'úÏ>%(ÀÃÃNß² üfû¶Go^Å~ ÙH$â\®`ä°ƒ:6ݽwT!%¥pØàç/ú÷éÛB}S6ŸÇ2\¡PÄ`pD" ƒÁ ÅÅÅt€­­‡12"b±h##"‡¡ ¬âR‚Á‚h$ƒÁ)-­vtlD `áÔg±xEEtGG 膇¸~-tÑÂ+àÿWsêKVµüŒÉ \x%;»¬sg×1c;uíæîìl…ÇcL&7)±àõë_™¥ ûuíê®QË<žJ­°µ552"ÖFÂ}{ž9òza`ÿ›F«ÙsØü‚Bšƒ½¹.Kø|aÿ¾»MMÉ7nÂÿv¤ÑXt:Ëѱ‡©©^¾ø0÷Ro_¯óüÕOB"*µÂÂÂÈÌŒ\’ÈÁbñæ^O(‰Åb1/D£P/‡¡Pˆd ¾Q#cWW›–-Ûwpiæeogg¦£ãG€Ö ¬—%|D"ñ­›ßOŸ|—”T05%ïÜí7}FUõÅbɽ»á'O¼‹Ë·n;w^hkaA%ôä*¬{¶l~p=èkࢋȪJFFÄÎÞ®½]ÐS&ïßÅ9ô*<õþíùõÀÈQgÏé…B¡ÚwpÖû—n|\^EsùÒëYY¥Š[ÿ[;¼{wÛ¹³k-g&ŠŠè3¦žyûa­*ǨÊJf\lÞ»·ñ§N¾SÜÚ²•ÓÎ]~(ðð´ƒD#„Bñáƒ/z%~è°v·î¨‹(K"#3™ î„ñÇóS؃‡§6nÜÈĄԾƒKmÄ«¬d®ýï'àro^ÇöëßòÙ¾c¼šEC„dÕFŸxxØyxØÉƃ‡@¡P+V Ù¼eŒ\¹««««Í’ÅAŠM- ì¿{ïýzÒjÄý{s/Bf¥TV2¿…¦Ž÷¿H*ööæööæ‡ÿÌÎ1|Dû‹—ç)šÍªçé“èCG¦ª©ÐÄÙ²‰³åº5w7MŸÑãèñé†ãìÚªuc€\þg‹Þ»’Ô̹ö]ù²eûX5£Ë¨·osE+@·nwî/V?ßSÄb‰ÿìóEÉ•¿}Ëç ÕB¢Ñ¨.]Üèt¶âq™š’¯ß\Ø«wÝ|ÁãñXKKc›346&™š‘‰Aáû×s÷NXA>mÞü>µô¡Cøù§5’°°ô·o⬬ŒÛµwööv«å+ÊÁÑ‹ÃPó* ŸÝ»{¬]?BÍ|f“&Vh:;û÷gqgo×µëFÀ_(©oxµrñ¢«rê„ÒéqOO»ò2Fbb¾ôçŠUC'L좩&‰=<ìà¼]ÝlQzz1ô³MÛ&ÿ­>l¸îü¨ù|ajJaAÍ¥©µ§§ºè,Èd¼4\÷ÀA­×­Ù¶]õí …â´´¢¼ÜrÈÝ@}e tïîQ£Ìîî¶mÚ6‰ý• ýtjÜhÉÒAsü{׫wõrˆ¢:077‚ã—!‘Hœ­ò *¡µvâ¤nkÖwp´¨qßêjNJr!ÆjÛ®‰še##"{£°vïnø†M£þ¦U¡PœšZHÍ«pjÜN‘Hœ–Vœ›Sæà`©Ô!Ÿ“çù_”–VíÝË¿¬^Q%'‚aòOk$]»º»¹ÙDEf]8÷iάó­Z9mÝ>N6j™F ¸7äæ–±Y|OO»'r‰DÜ£§Ë+Ê™ ÇÃÃÎÑ©æG§nàr'¿={&¸¬ì÷Wû”©ÝOžž¥h#öøq”lŽr)vK°8vÇ®ñVV&¥¥ÕM]­­´³;Ã`Ðÿ­§&€»|5@(Ñh,77Û&κ‹âÊã OŸ|wúÔ{éäÇ„‰]ÏžŸ£êID|DÔŽ?²%bI3/{¥ÎY²ˆDâ‹>?ö&ŸúÛE|ÀÀÖ7oªyô˜AcÐþs};{»Ró*š8[ººÚè`>éæÍoJ˧Lë³KKãwÁë~ýÌ56&5󲃳WTDß·÷Ùí›ß¡éxqü­47ÍÐaí‚®/PµD(‰¯\9zäµôë«o¿–·î,‚¦9¥ÃÖó¤z9 “Z#XY™ ÚvÈж\®àì™ýûìîÚÍý̹Ù5¾”‚Å¢½½Ýà×ǠцlE–ÂBÚØQG `*RnÞø6cVOÅC ùœ¬Ø‚¹9åÒ•yjÞ‹­ÛèôKFÕÒ€@ Š‹«ÆŽ>e/’r÷NØô™=||TúÜ’Hx5[e©ªbOw<,,]¶ðÝÛ¸W/]7i¢›5³oÖLwa<ÒÓŠ }zx®]«A Y £†Jùö-mÊÄ“PØ>_¸aݽiÓ{¨Ÿ•±´4ž>£‡£ƒ¡|BÔ5~ìѨÈ,Ù—/~¾{§4$#ƒÁ™8þDhèpÁž?‹ïç èѳٕ €¼¼Š:\mÔ‚êjÎ$?ur"&ÿºF"…HÄ-[>xÖì^s/¶mµîÚðPRR ‹‹è4:ëû·4U.šh4ªS'W(°GzzqA~eE#<<]ºj# …êØ©i]ù+ÖHNvYNN™P(^¾ìz^n¹b…Ð/©6¿}è©y™™%UUl4e…hÞÜañÒA••L(_y›¶MÌÍ)€ÂZZZ•Z›§æƒ»e+§ºr ÌÎ.ÍÍ)/)©ŠŽÊ’ P!‹ôˆêÈœV$¯X~CÖÔWÊ÷Ð4¡@Ô¶³lüӸؼÊJ&‹ÍƒNšR°8Œ··[YYuZj‘D6m¼…Ô“#*2Óܼ̌…£vÙËË ñÔÌÌ# A05OÂçGt6ƒÁ‘E,=xHÛé3zDDdð¬ªuU‘H™Y^ƨªb«‘ÙØ˜Ô¡£ à×Ï\:UTD_¶ä45" —+øð>ÁÔŒ¬ÆŽÇž85Sã4, ûQ"ë×Þ‘ûü€ˆŒÈ¤PÒû±¨ˆžšRغå¡R¶è¨,++c¯æ66¦zLÅ%•sËæ¿~æ*V•SçÒ!ÔÌ¿èk“šZtîLpLL6ÆnÓ¶ñ–mc›6µ–­péâ§îÿ÷ß0˜žc^ž«¤žj8~bÆŒY=ÛmZ6¨aϾ‰ ûàöôõÝ•Uc5©¯ìð¡¿„(™ ‘cÉÒ;vù&M8ñêå¯ëÏñ÷=|T½ª”ÂÚ¹³ÁaßÓ‹ŠéžžvëÖ„Þ7RúôÞù#:»ÆvÖ­¹v½’¯ðòrÆ…óC¿¤æQ+\\¬V­ ÇÅqPÿ½róJY¹z¨ÔÞ™Ãæ;7^¢øjTäÑ“åW¯|yöôG5§Ïè¡ô•É`p._ þ“Sfkc¶hɹ@+–ݸtñSíÒæÎ½ºñþ--­öòX©è## …úðq}ÇNJ&Dg÷õÝ%ÉM,”zÐȈè촄ϯÙ×úé󕪒IEEf]ºø)!!ŸÍâùôðܼuLƒË3<ÑïøëW5{ãKïÇÙ3Ï=|YcýI“»=?§äÓ–Y3Î=zX³œ“§t;sNŸrþõüµÞ¿B¡¸£UòxÂëï^¼ðIöƒÌÙÅêWÜ9ãÊoßÒüÆÛ¾sœEe(âÙ„qÇNŸ›Ý¨‘òg ¤–˜Pð®™ÓÏìØ9Þ©±JËݤàó…l6É¢ §O¢·nÞ2fÎ\_€©) :QPijµÿÝ;®s§ÎJLF ¤ñÇ úÛ·>êíë¥æÕ'BšD"9rèõžÝOeß+ÆÆ¤Ø„½²™P #ZxuA`¿æÍUZêIH–Ë?oØpr©€ qáQÛ]\¬Z NW­¸¡Ô]eÝú‘óö2§ŠÖÏwׇOTµŒÁ ŒIB¡˜ÉäîÝýôÌéŠuüçúnÚ2¨8OŸD/[r½²’)-A£QoÞ¯•]Œƒ"¤?ljFž0±«*aê6B›Åã DêJº¦j+“É-/cøÏ9ÿàÑrUuð8 äKíÞ=v(NOØ[wwìÔ:ÛŠÐéìÅWå”Bß>ÍŸ<[©ª_ÃDz?*U@ €ì´¤ x÷¿8qü­bý™³{mÛ>À»ëHÎûžŸ<¡Ä}}Öœ^[·„œ=äýkjô[÷¬b^R,Tܤ†¬¬ÒÑ#oÛ>®N–ÆÅbÉ´)§£Säd—äÓä K»w÷º¾`ê”S[Ö–ŠHĉ8,cjJ†£FX‹ÃaML`Õ×x<Ç*ÆÃÀbÑ›¶ŒY¶\> ‡13#ã X#c"œC€ê‰8 …PËC^ûß³gäßÇ '>.Oö£:"<kbLҨǃû_ìØþX®ËDGeר‘¨9ë7ŒZ¹z¨Ò½Hd<‰ŒÇ`Ð5ʉŢÍÌÈÙ ëA(*pQÿ»üT™ÍÞ¼ñmÑÂ+r+#b±$ì[º¬FÉ@$áI$¼ÎF&™B ÿ×Úµ`dDDX N ÐÙ–ZmK±°0ºxy®šµZ&“;|èÅ ËaßÓ%IòØÿ?*êdh4jéòÁ[¶Ž‘;hàåä(xóûîÙ7Ñ@B£Bræ*¬;£P¨ù úîÞk(r"¨¢î5HÛSA€2-dû¶GãÆ{«òmIO/2p_iiõª7{ôlVËD €kW¿( –E"ám•eì׿åþ“çÌ:Ÿš~H—©bõˆ»»­¥¥ÑçOɉ„HÄ Þ~ÅÊ!:HþŸÐ¯©ŠêDêówïzª¢}+˜¸»Ûš˜B>'‹Å;dh»•«†Ô¡ç¡§§H$þô1Q(ãñØ>}[¬X5DIuqqÕê•7åÔˆ¦®upÒ¤ðxÂo¡©ééÅD"nð¶ÚÙ²èSW7ÈÃÙÜœ2}FÀÅÔÛìßû\Q8;[i¡Ždf–ÄüÈ))©jÕÊ©g¯fZ+44ë[hZNN™½½Ùà!m5Ê~åáa‡F£>}L‚^öÐjùŠ!jlí=<íúhõùS’@ Âá0¾}Z,_9¸[·šýÉuŒ»‡­œœ+V Ñ439‚^Лeë«—¿¢£²Te  Åóü/Bn“eeÕûö<«}z—çÏ•¤SÌï«jahúŒ÷ïE,YtáÒÜZöÞ À`PÛwŒoâlY]Åqp´0Àï UVÆ·«ÏÞW/~) ¯âíí&g§¢ ½ió˜ ë6ÕU{ó:ŸF¡Pþs}¯^›_YÁ´w°¨qYócp"KfJŠ‹‹µªüš"K.^øtøàKi’j2å΋—«áŸ4ƒÃa¾„n†²ÉVó§Ê ifì•™Y²qý½×¯b¥¶/cÆv¾ Q#‹·{ç“Ë—C¤Ë‹M›Z¿ÿ¸¾Q  \4àêµù´Jœ„B¡fÌìt}AyÃÞÁÜ rÉÒPäDPDwkiM›,µµ^еóæ³g>dd”¬Zyóô™Ùª¾ Ο Žùñ?³Äë×Ceô´Cé÷ÍÀA­×©Èññ»ë› ß¾‰Sã¬ñ÷ajJvjÜÈÕÀ·oJræµnÓ¸®|B”™ëººÚ\ Ðô+:õ·\mdDlÜÄŽ••Rdkk“[wë&6'œ<ñÄê•7¥ê€Í⩚Í2lmMaª#€âbºbáßé3zÀïñÓÇ$ŸnÛ^½ü%kŠûèa¤*Ÿ;UÒz÷ØqòÄ;Yk§¬¬Ò'•Ø©ÇØ˜s AP(„&Ζ†ÿš7p9á³ÿƒèhŽZ²áñ„I‰ù«WÝÜ¿÷ùÖíãÔÄ»tá·½•©)ùàá)wn‡]¹²b•–9“ž?‹©(gðxB %}Èø¾}[ôíÛòέï4=bdÅuh33òä)ÝN{»mÇ8Uí¿{WX@+.¦ß¾õÝX…ý …4¤ 4-üécRnNY>µâÁý5«Q¶ÖY¾ŒÐÐÔŒ´â¬¬ÒgÏ~Èê‚rôömîìbˆˆÈHN,HO-~ýòWj²|ºc)>=›¹¹Ù~DgÇÇå%&æ‹DbiÀ"E¼»º{y)ñùSRNv›ÅÃ`ÐÒi Ó­»Ç°áíŸ=ù=wÒ@+(L§ôˆž>ý¡ÆÈ·O hr%<<#%© ºšƒÇc¥6³ ºS§¦#Gw|ÿ.^–žš\˜‘^òâEŒRï\ˆž½½dÝ»ž<ަÓXt:ëêe•Yî0XÌÈQ23JbåÆÇSY,^q‘’$D'oW(ìfB<5:*«¸˜N"㥱ìP(Të6nj힞hßÁ “œ\–™I¡ÄÊæŠ ZµnÜ¡£KqqÕÛ×±‰äÁƒÈ¯_R«ee•^½âàh¡ÆK,–<|ÉbrÕ>3¦“ÒÅS›ÿèQÎ*)©RÓň8v\g4õèadu§Æ³=jtȸU =zÉaóå”KSSòÐam[·v ºò@ âÆŒíL (¢¾}WTH£ÑX{v?UšUñáýH++“ÁCkXê‚.¨D~¥ÔK?ì{:ƒn×Þ¹M[uÑ~¥÷£D"QÚ„ô~Œý•û3&rS¯PýyÖ±SÓ×+R9i4–9;uvÕËbô»·q÷ïE$'VV2YL.›Í75%·ïà<}FÏ!CÛæG Ž©/_S£9JÍWétöð¡’“ Ê*Ï©úèüݧ÷N€™ù]ðzOO»£G^?~òu³’"** —D …"ƒÆa1²ýc0èËW”úûUU±õß¹]U½{îÈÎ*e2¹ QÕ‡4 …:|t*ä©?dà¾ÄÄ|‹G"áÕŒÂÝ{'N™ 7`e-™èw<ì{:›Í'pŒJ‘Ö®¹`a?À¬ç>'p8|«æëjé²Á¹há•çÏb¸\ƒVóÕâ?¯ª…¼áCÆÅæ²X<'‰% Âa1r'pûÎñ3föL<<¬æ#Z·aäüý3§Ÿýô1‘Ãác±±X¢ªýeË«ñ Ÿ:ùÔ×/)l6WwZV®¶dé@è›ßÅ{3Æb0¸ÆÆ*ÝI°XÌõ[ ïÝ ü0ªÆÓ8sV/H^¿öîÍ¡<ž…FIıXŒÆ ±ŒÜ ñ›ÐåÀ¡)€Û_<ÿ‘Ç ¨Ž6|Dû“§g=|¹rù ±XRUÅVZL!àq˜¦®6ŸB6ªjª¼œÑÓg;‹ÉUøx<öÑ“åJmqâ©£Gæñ„,W?ňòu™LèÒysu»Æ³}ó΢.]ÜùÔÊþ}w³Ù<ƒK$â mAãÿ<ÿD"îå›5ª´UŸnÛ¨yåSžâV mlLD¡PÇOÎóÇ–cú»7®‡Bž2J+@n\ãýº<¢jß«—C–.¹†Å¢>^©îGøÏ¾’~þ«"Þ7EDïÐnß ã_ š¯Þ¾uè ýA7À_Ä?öØÁCSt×¼FügŸ_²tü˜ªKMšÜ ¾ÉØúµwûökQ›Ü=“&œØµg‚\ü5Ì™u~ùŠÁð¿Û–, š<µ;ô*Òš…ó/Ïñ÷ÕÔ„þøÜ²éA×nÙòÞÝÏ<ÑL”—É?å ìž}5RG”òëgîæM÷kÙ‚¦`0èy}“÷“H8Ÿ®[ÿe“zŒGýsü䌟?s‚?$TWsVV&¾}Z¬V{çTÑÙ€€ù}¥%ÐenŽÊõÎúf̘Nª¦¦þeŒŒµ¦R+“ómlM;wv[Øßв5ŽŽ}û¶xñü'—'ðô´ï×e欞jVšTѸq£iÓ}¾~M-ȯlÒIJ_ÿV û×Él넉]¶lºŸ™YâêªÒXêo¥¢‚ùôqtJJ!‹6¢]Ýz5C§¦a0è¡ÃÛ)MÁM¦î=Xºcûã±£¼xµZ#…žÁàKJª²²Jáæ¢b:…_¿° ’ÁàÀ¬Ÿ™YRVÆ¨Í ¡õí Á`p˜,ü´è®–˜,^|\žlÆwwÛkW¿vïî©Q;EÅt,Sûs^VV™YbañG6›ŸŸ_©´ñ’bzv6¹öýÖ7¥%UÙÙe0å<|èÕ÷ïJ¢jlA,ÒÑh”™Ò7ڑPª±ñ9þ¾JhÉqåJˆÒ ¦,Z±ý- 6:‹”úÒHŒHP<Ä~ýZúMè"»ÉoܱYsz™ª~»—–VÑ¥‰Å_¼ø*Q ©É6^#,¦ºlïJIO/þú5²_A¡PíÚ;Ñ^•.UUÅþö-B&Àl¼¢‚–nnWƒ©C.\øØ³g3OOùÈ%%ÕÑQYùpWÇ i?æTV0k® ŸZI$æ²U8.¡¢‚‘‘‘7¥@IIUtTV>þÑÆä¨‰d Ë¥KŸ»us÷ò’OƒPTDÿ]R\³Søã“šWBÉOCª!'»ŒÅäÂ_ÈÌ,%q0GrVViA~%LÉüÈNO+š8©›â&-nOYØ~U~ ZtWK UUìÐÐTY žH§§?}­ôyøða¤½½¹¢/[Nv£š[ûà{ùÔJ)Åüã~üõ+‡Å(=ÒÜÜ @¤&P.‰ÄG¼ž6½‡b—œœr˜r …¢*byÛØ˜ª¹Ü4:+ôkjì¯\@°¶6™4¹›œn'Šž?Ó¦qøÜ»«ÜCÖÉ©‘\û‡½ºy;°GÏfµï´^ÑCy,3gޝ³Œ¤¤‚!÷-[1›·}Û#€½½ù¡ÃSksÞ¾õjhqàÕÛ·¾KK$IÌìeË¥<íßûwñóûÂ÷þýö-möœÞzñþ=þcÿ­ÝA¨S¦v‡ïý›•]ê7¡ |ïßÒÒêZzÿFDdÌœÝ ¾÷o|~µÁsÙ0¥¥ÕééÅ·ï.–­û+WiããÆ{_¼¬²qø”—3¶ny¨XÞ·_Ë›·ÉÅCÚ²ù^Eø>ƒÂ32»»Û²Ù¼ÌÌ@´tÉ5($QÀü¾ºÌ½dÑꈔ‚šÎd@@@øëqr² ÂžÃ«ovïzB ↠m§oAt …¢Pþ˜ Äá0«× ;wÁ_•Æü!aάóŠꔾä©p8̪ÿ†¿¨²q ÅrQþÐhÔ¼€>·ï.†ŸÀÐ0D¥ ‡ÃtèÐôËç”ÔÔB( PgËy}t&ÀϘœ[7•¨#€N\u&Â_—+ðá.ÀÕ+ׂ¾;òæä陆omPW Ñ¨Þ¾ÍÍÌÈ?¢³­¬M:tp™;¯z·Êukî(MÆÙ©“¼Ç;êÙ«™……QtTÔ¸ÿ\_§ÆÔ‹TQÁ¼võKLLÆêÐÁeɲAj2´léÔ¬¹}DX†‰ ©m»&þóú¨ÉqÑ 0DЧo iâ4uúÌl2®}Fíù¢,I`ÄÈH „º‚ÃáÿŒÉY½f¸~ÅH${÷<Û·çù°áíþš@æ0¡P§ÏΆY¹¢‚™šZ¤XnfFVžŽL&œ:×I[,–?öfïžgRÇœ¯_R¾~MùøYesäè4˜í7 T#qv±’æš¿ ŸOÍlÑkITd¦bá¡mÏ_ô×¥7Î21%{{×*kA-)ȯ\¼((øC‚——=üwó¿IYY5’óF´³3»{‰Y-_²èª¢Ëñèì’’*(Eë¿€4¡Pôöml£F*-@ §IDATKJªvlûmäéiס£‹)¶©fpà·ãâb-Ínï`>th»î>oßĩ٥¼œñêå/’š:²Óß½‹³²R—곞à°ùQ‘Yh´üZc>µòãÇĬ,¸‰Ñs²Ë¾†¤Àw*ÉÈ(&‘ñ WYÿ¤¨ˆþþ]<üû3ŸZññcRFF Ìú99e_CRÔ¤Õ•…ÍâýˆÎ&(¸ çæ–‡|N¦RU¦8V üñ™ž^ Pd3ON.¨ªb+^nU$&PÉÌ‘œ˜˜Ÿ•U Sò„xjeKienOE˜LnE~ ZtWK Ì—/~J ÒÓŠ÷í}6ir7UÕÉÉŠ&'Òh,,¶¶k+iiEIIáßÄ„ä?¯ÏÇàD5õSS ù<Ò5 Ý9¹|ú””]&·)-µHÀ‘3'§,ŸZ ÿ²ÓÑ¡ôà$¾·¯×Ðaí³³ËÅÈÍ-ϧVÀl<<,]iú5U© %Æ*/cÀ^.&Ša¢…B™˜å Î¥ÐéìC^2¿CÎoÚ2FMŠNÀ`Ъ:•ƒL&ŒŸàíâb]^ΰµ5µ²2c‡„Á¢ÍÌÈð5cbB‚)RÝ‚F£È‚b×8<ÖÄX‘œ‘1Q³úÊú…¦' ‡Çšh"!…DªN£FH?> œEƒöI$¼R9UA$áÉ$<Ìú @À¬L$á°Xå‡ ÿð•‚Á Uµ¬ª~ý] U`±hSS²‘ó#çðáWv£ÇtRå˜ÃaHÊ.‰„Ó肪B"(€Ý¸yt&D"Ž¢ÉÀ«W ÄXÙF À•ÓĘ„Ãcà‹Å³³5Û½gB^^9…Lpp´PcsC«$áðpoHeó€¾ýZª²#‘H$ Ç<ÌšzD ƒîÚÕ]©õ'ü¿öî;®©s}ø{2IÂa)CPÐjeHÑz­·V­VÑ"UjmÕ[{{­Z«­«×ÖZ¬U먭ë÷ûiµ ޶Vë,.FQq€ „)#²÷üý‘{‘£¾â ð|?þ‘„79ω9É›“÷yžWÆo å!âææÒ‰™f6³±uß_ËÊ*‰Œ h+Ë·-ž\N\|8~öïÎbbÂHÉþeºÐ##Z>‡^>¢~öï‰yÑÏ…àgÿž?wè°>˜ÿ ­ú~÷¥‘1¡øÙ¿ÿïúðýð³OÏ‹~.3û×…Å4È¿åî;šóüó}íÍþÅ}þqùÁ¡AøOcN6?|@/üñ÷î=ærÙøãkk¤˜ƒ ª î?nu0þî·J*U{xØs;6×ÁBìQ ÜÝYßnýýóõ'y<×cÿú‹u”žžœŸ–ÍÍá÷õë`0¡ôc¹¶ Ûw¾…S1ýÚµ‡‘ƒ;¾ÝN¡×›BÇ÷k™ý{õj1fœ<žkvv þñùÂßNçc~*yyU]¿þóÁ¼»·åÃGôÛ³ïݶ¾å rÏýWðƒ‡ì_»­øøÈ­›å!ú‘£ÿ¬¬¬o\M]]E¹xòį׮ɠө?þ´Èºe%ÍÙ) \@G4[›B£Qæ½3æ×ÓËðOºwN4iÊHÏÝ¿7!DÄöo½<~è°¨àÌÌ"ÌJMà̤Rõ¸± A»˜Gî‚V²vÝ4²£ˆÇsMûzÖÙ3wM&sddàŒ™1OÍî–œeFR[#mìüñÊI¶Âó/&ÌüãÌHÝ€Åbµ­ˆ\µzÊÔ×GBÅÆ…÷ÌO>'4õõNòª ‘³ÌHV¯J·UÁ‹‹ _þßìüÑ£#Þ·ÇjµvJ…;ðTù·+.ØÇÁ.ýRQ.ÎË-uÅ^z\^& âu¤Šü½{U©³¿sqÁí„WÊÕàï¿D޹ޤ-7óÊîäWr\í« SYY?n윑åb.—_E>+ëQFzîþ}WBl6ƒF£R(‡Ã´Z—Ëvsg¹r˜Þ>îîî.l.—#ÊÍ&sCƒŠÉ¤5+:é8•U¸»ß*“Éòèaþ#TV‘ösð¨Q–,{•¬­7Õb$"aFb0˜¾Ù|ÆÍýÉ;\®9žñ'BˆÉ¤ а5²AÕ‹•b±bì˜/ÜÝY~~½:–ð-+Ö®ÉÀ™“URXðøöí »¿¼Bœ¶ñW·®D¢Ú¹ã<þøN¤kÓåÞmÑ[²¡Aeo/b‘Ha×øs¿ß³­\n¥B‡ß6Ϧ» Bˆ ˆS'óŠŠjpK%êÇóX,VJ$vl´ÑŸ¹­¯·oéÂùû2¹spI‰ ¶FZR‚ÕbžF£X­ˆJ¥¤¥¦…bûG¡Ñ(AP©*bµZé4•J „ F3A Ì—ñí[Õ%­†³÷Û‚ÿL& óÝ •F±÷.ÍÔ×+©TÊ€þŸ­k¥IK¥¥"Ö¨Õ5OÚÌÍæççWÜ¿ÿ¸#Á „**Är¹§ ªW5ܼYÖÁív [#½ïw_òiÑi/ëÆ£Gëpâ‹÷îVá?R©º¸¨s|½XYpÿ1æ`ü§Fj•¾¬L„/ü–é$"aFB§S“fŽìÝëÉôb×Î V«!´xÉ„Y³âB¡üßkÛú8ÛÖº"„Búú,ÿxR||xû¶ûË©[sç&âŒÔj aá½Æb×ã_¿ö0yV~/_Ì`á§ÃY£ÇDŒ?´Ùí·n–_k£^mgy}ÚˆÄÖšŠaÊÉ*ÉÉáwb<Íz#9ó‹cú±Ü„NœØ¼ HþíŠ+™Eˆî‰©ÓFà¿>ËJE¿ÔÜÂl2YBf³Å€]Ú¼O°7æ‹™J¥ÈdêVŸ8ž÷,—±ûúyØ{vü€=y"/.>üƒÇŸ›ÍŠn¹]ƒÞÔ'Øûì“dm!ñ-¨ã FÓ·ÛÎMšüü AÍ{˜«”ºÈÈÀ¦ÛR\\+“iðŸ‡ÊÊúÊŠzÌñÅŵ JÌÁøOÄbå½»U˜÷ÚúÍYü“Ù$"§IP WÓEæ·o—#„üý=—}ô*ƒA«­•ÎMÝ]Û¢qQE¹øý÷lLK^°pl;¶Ë`ÐBúúàŒäzr|}Ý17raÒƒúxágÿ’ˆJ£úø¸µÜÁ·ç%Øüðî\ûÛà€Àöç¤ÎM279¹Å Ç,[G§·õ4Žïí€èž?~hŸ`ܼñ Çzx°ŒF³Fc@étFƒÁdµZµZƒÙl1™,:­Áb±Œ&£ÑlµXF³^o2™Í˜%•† ëƒy°ðx®Lfë‡á¬”¸†úöœXjž—«½xÇ1è´”7ãñ·ë¢s¹œ–ã¹\v«/¼Å–ýëïÏmùxoà …–Ãaâ?“&³¼R©åp\0ã<5ra1\Xtü{µUöÆ©8Å:’’G„PÊìxƒ†Z¾ì°m:Ä˺Q2-é…sgïÖÕÉ,ëŠåGôOÝþïÙ -¯O{¿g=)f¥ÄÍJ‰#;Ч˜2uø”©ö³q¨Q 0û0h5½Á$“ªõ“VcP©t …V*U74¨4j½D¢R©tf³E­Öa0˜´ZBh@gÌbW~òZÇÄù……÷";œù3³Ù"—kBã^‚’É4¿Î§Pˆo¶Ìž;/±¢\=låf|½9eSÚé´¿Z,Ö•+~º‘½ÎÞå®*µîÈáÖ;ú6SXðX*Qi쬹++œ¤¾2íÃb3XlÜj­À^G3>èß¿Z³¾õv"›Œõg8ù3*•Âf34CTTB¨¸¸Öb±ÎIM˜;/!âíáÁ¾{·*>>ü“O_£Ó¨Ÿ¯?YXP»â¹çí«‰))Îßçˆ]°¡Ó©2™¦ç´DØ¥S¦#!x“Ý•SÔlíÝ›ëêêÂdÒB½!Ô˜ JDTtðÝ;•¶«K–M°ÕÙÙ%ön%8ر?»º¹±<<àË%éò¥ÂÕŸ¦'MÛöáâƒÇ3þ„Âß] çHôzã’²XOÎ:MfµZ7çÍïéõF‚ ¶n9{òDží¯5ÕÒ];/äþ7ÂF£ „þgÿU{s…B¹CSmµZÃ’Åÿ¢ñ’óHT»v^øùnþh•H¤ø~÷¥3¿Ý!;.ƒÏÖÖHSgGv ]CaAµ N†™‹ÞÓØÊ®¯YÑòGƪÊú†•­yûþ½™t:•Á 14&“æîÎöñqãzrloÔr¹¦¤D€ÿ‚T©t…Õ˜ãízðû ½Þø °ÿ^R‰}•HAÂŒ„ɤ³evÓ\›ßNçÏzcÇÇ+&ED¥$飼“í;°À6ù8uò榴Óÿ{ð¶ÁGg-œ¿ovj~h&bàGï-çä‹Xß°!+, =AðíØ~þÔɼÆcüµ)“7ÇÄ„­ød2Ù8#½Þäëµàßë§·ì´7ÿ½GÊn¼j4šF³­§@ /+òx®>¾îÞÞnL&½woîšu¯÷íë‹“ŠÂç ׬JÇ|ß¿WµuËïûÌÇÿ=˜÷òpçÉíLA"òב „þþʰÐP¿C¯ùÕ¡M›SƼ¸þý÷lývŽ‹ =,¬Wi©°±r«­¾VT”S@tQ.Àãq*+ëÅb…X¬l¨W)•OŠƒ™L‘HÑ´´ãØÑ_ðx®ÞÞn¾~îáz'& ë»Iá3*•òÙú¤¹©»SÞŒ<$Èßßó̹ßy{Ϻ5Ó’ûõ÷Õ댵5R[‹‹ yñ£°²ô(ƒùoLK¶]6™,ÕnÞ,»víay™H.×H$jA¬i@©T-•ªKK…¶«Û¶œõövóòróôäxy»x¡_BÂÀA¶•ŽÀ¡œå)ž8)zöœ„¤éÛÎü¾¼o_ßþýýÎ_\i2šB,Ã?À³´TÈ;îÞµ«Å‡/¢RbM.§E£QBúú„ôõ™ž4Òv‹Tª¾“_™™ù ”/ åõb¥D¢’Éžôd0™,\ øO³‹ŸOÝtscyy»úø¸±ÙL öj …Rw'¿â£¥?â  å˜#iµAÌ®»8?g™‘ „6mže4šF'¬ß˜–<óX:Ú¸J44´W)_¤TêÞ·gÅ'“'M~ŽÜPtEžžœ1/EŒy)ÂvÕl¶”—‹ssø9Ù%"‘ÂöCH(×éŒwQ*µJ¥¶¢\ŒÂ,èŒ ååå⾿Œ9d£î—ÝéD3*•òíŽÔ˜Ø°OWýêË_'NŠŽˆ d±èR‰ÚÖŠB!6¦%ÏIM ;RÝ•J õ õKy3Þv‹J¥{ô°îÆGwò+u2±X!“iÄb…-»'"2ó‘ûõóe0i˜­ÚÇÑM?ž=Âjµ––<@ùøçtâã~óõ[Ë9© Ûw¾ÕôOAþïÇÆ…5ÍþmÆl¶ÔÕÉD"…F­·X¬L&M«50´‘1¡ðcM§()øùy¸»³È¤kãó…>>nÝïkŠãH$j…BÒ£²à«ªj`³Þ>] UÖ³gµ¢â¢š~ý}™Lº£·¥Ñ$U}½R§50]èÑÑ!8÷R«õ9Ù|‡v“á¸2_x¡?ÎÈâ¢Ú½ûßuhS°¦Lú)¶ J¥k¼AºšyÑ)²Ÿê»]o\xèð"ÇE9Ý)‡ÇU µ¾Ùl6CÝâFtN4#ù3·4zèÊÁ˃ƒ>8°ïJÓ?1´¦ÉZèfœeF¢Ré’gn/+!„ ÓGË~¬¬xÒŒ@¯3º¸8üÇBÅYf$wò+ëëŸ,1Í·o—7^-.® °cÝ ºg™‘´\/Ý´swnnéóÃû>Ûˆðì8ËŒdXTŸÆ,J‚ –,›0tØò”þÌ-}X\ UÑ€nÌYf$ mÉÒ  ñù†…Eik×M³Ý^_¯\ôK—½Êã¹’!ljj¶~°øïEE5ë?;¡Ph§LÎb3²n<úrÃϱ±a‹—¼BvttjµžÃa’4çD3 …Øýüq/ùa÷åm[ÎZ­(rpàªÕSßHŽ%–½ ‡¸u³<*:ø·8rôŸdÇÍ9ÑŒ!DÄô¤‘¶&V«&"t¢½{.¯ÿb†Éd!;h…sÍHš‚éîò¥Âû÷ª–~xhó–7ÉŽ¥K2Í«>9Ö?ÔO§3*šU«§’݇óÎH(+ëÑÅ ‡Ì¢Ñ(Pݧjª%»¿»ˆ¢Ó©éǓ݊³äÚª¢¼^"Q­]7-&6ìåȧ«ª®–Ø.lÛž*•ªÈ €nf$ô³RâfÌŒ™óV› ‰6í÷ÇBËWL2$hõªt²Ã [ =Èo¿æßɯxÿ½dÒ%Y,ÖS'òfÌŒ‰ {mÒf3¬ SÁ:z„«WŠÎž¹{øÇ,:Hv8]RFzn¯^Ü»æÎLÚ&‘¨z÷æ’Ý œ# G‰Z­á«Mɱqáï-Gv8]\®9r8ëБEL&Íj%;º#8G@0=i䥋Ó“F^ºXˆ3^"QmÿöœTª6Íã^òڔᎎÐÉ}ºòèÚuÓ‚É4&£!d±Xe2 ƒNeC \:ÌHè)( …B,ýèÕ§ŽäãÆn˜81zë¶9¿ü|kvÊ®M›Sæ/xéé´‚‚¼¸b»Ìç B …v회`oÈ] SV«µ´äÙa çºšyÖ‘€|´Ò’W3/’©þ·Sy¡ô×IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/SourceView.png0000644000000000000000000000013213135434036017527 xustar0030 mtime=1500919838.109981805 30 atime=1500919915.149981805 30 ctime=1500919913.379981805 denemo-2.2.0/docs/images/SourceView.png0000644000175000017500000224540713135434036021416 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRJ¢£gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>€IDATxÚì]g˜ÅÑ®žÍñòNY ‘ƒÈIäEÎlr62`¢ &gLÆ&°Q„!D „DRκ|›wgæûQš¢¶gvo/éN¨_ôðìíÎôTWW÷t½]]-R©äôiÓê8p ×ë…µ™Lféҥ˖.ÝaÇéËGyd‹-¶Øj«±áp¸¯TPPPPPPPPè.æÏ›ûßÿýoçvêÁ2?™:õ´SOýùçŸ{VÔ,'ºK–.ýãÿØáÅîéÓ¦m5v¬ÏçëÙú(((((((¬x½ÞáÇ×××OŸ6 ®Gyä”SN …‚º®§RɾPAAAAAAAA¡  aFO¨i¦iöl™=[¬Ûí:th]]ÝC=Ô!Ãå8p â¶Öjø|¾úñó[l ³Ùl_ ¥        Ðc@Ú¨ t¹\¦iöl™½Q¬×ë­¯¯ïð27͆Ö^ 8pÚÔ©ßΘqæ™géz®¯ÅQPPPPPPPPèIhš¶®Eoêjk|ðÁsÏ=·È5n•oKAAAAAáwz¡G"‘d2Ñ×â(((((((((ô$4M3z!z«gËì¥bÝOÇ×ôl5ú†aôx¹‚‚‚‚‚‚‚‚BßBÓ4³GC¢Vï"ìéè­^*¶C(zKAAAAAáwÅm)(((((((üþ išaôä4ÏÚEØÃSÇ^*¶C(zKAAAAAáwEo)(((((((üþ išiöBôV–Ù{ÅvEo)(((((ü®Ð'à(((((((((ô-z<µüê$Y½³9±Ç‹íŠÞRPPPPPø]Aq[ ¿?ôxjùÕ»{zêØa±.— t]ïðËNAÑ[ ýMMÙL¶nÀ€µ®p…þÓ4@1\ý7ÿõ¯?ýôÓ3O?½|ùò‡~ä…_œ3û‡ž*|ÑâÅ=øÐ˯¼òÓsúº¢¿7iK5q_ ò»Âï^«†aüú믺®3¦¯eQèGè–ÏßV=øæZÃUûæ›oî¾çž3f^pÁùgœ~zw”À¿7 ãã?~êég–,Yüî¤I½Z…5ŸZ~ï}ö-ôÓ{ï¬lñb].×öÛïàri3gÎlnjÂ/+*+7Ûl3]7¦O›Úe†KÑ[ k–-]šN§Àãñ˜¦)„ðxŸ¿¯E+ Ó\²dI6›åbƒÁ²òrMÓïÈåô\.WJÙÉD" J_.Y²$›É€×ë­8P‘ÍfW®X‘Íf=Çë-±p…¾ÆrK…ã—Žèpkâá‡ÿî»ï`ýõ×ÇãÁ``½õÖ?óÌ3¶Új«¾®zבJ¥î½÷Þ7ß|«©©©ªªjë­·¾ãŽÛûV¤½÷ÞgÞ¼y0räÈd2‹/yë­7G½lÙ²åËWøÁc;~Ñ¢E Gb±ön>ñûï¿¿ð‹‰DCCCO•Ùe1&MzÇSÂÞÇwü²eËÖ¼´²  &N&Žô7‹E… :túô麮¯·ÞÈ¥K—5j„ Ûl³u_IeÆGMÙ}÷ÝðÏBZEáüŸ×\sígŸ}ær¹FeÆO?ýÛm·Ý¿þõ]<~ü3g΀M6Ùä‘G®««sl‹³Ï>û£¦èº¾ÝvÛÝwß½••• ëú~ûí?þ|Ó4GŒ‘J¥|>ß^{íuþùç…Ãa,ÿw&=ôÐC µµµúÓ•Ûo¿½T©¹sç~øáuuµï¾û.}išæ+¯¼z÷Ýw755uÔ‘7ÝtŽùŸ|2õøå—_4MÛcÝ'L˜Fñ–}öÙgîÜy¼ä»ï¾ë ƒâß8™LžyæY³fÍêPE×^{m×T¡ëú[o½ýØc¥RI^Ù.k©Ð]}ôÑC=ü믿š¦±Í6Û^}õÕƒŸ’Éäƒ>ôÆo$“É`0x衇œwÞyn·ìSs¯]–/!No¿ýgÚ´©ö:ÚašæË/¿üò˯üôÓOš¦ <ø°Ã=í´Ó/æo«cÛ£Ëo®®U­G°`Á‚3Î<ëñÇŸ8qbKK«ÛãÍf3öË2™Ì#<:iҤŋ4èÐC=ýôÓPŸ…^Ùo½ýöE] ë­·^ J$âŽôȰßãÑ[®nDo Î*Z¬žÍš¦)„¶ùæ[|ûí7MMM•••›o¾˜¦žÉf…]«Ndzd…þ€úq:hðàÁC†Ôèöx–-]ÖÒÜÜ×¢†ƒæbG£ÑÖÖÖÆ††BwÔÖÔ 4¨Ã‚SÉäŠ+ìß4Èëõ@Uu5 §¼¢Âãñ <¸ÄÂJÇüyó ýër™†a,\°`á‚mmmôe[[~YJ³£sjþûßWGŽ Ÿ|òÉW_}õæ›o1â˜c޽çž{ûZ£]Çßÿ~ë£>vÝu×ýøãœ3Î8ãÿûŸßßÇëï½÷.êyÚ´éŸ|2õÓO?óx<Á`HÓ´{î¹çí·ßB|øáÿ­·Þz=ò8Ó4o½õ¶Ë.»læÌ™=UfwÄ(++/åú?ž²æ¥í¬]5q¡ ú•Å’B^zé¥áÇÀÔ©Ó>øàƒ9sæ\uÕU¸[¤Oðé§ŸžuÖYä¨;j•„ßxãMžþß0|øðÉ“'øá‡°Þzë}õÕWéôj'våÊUóæÍŠªxíµ× Œu¹\Ô¯§OŸþå—_ž}öÙÿüç?¯½ö/xÁûï¿þùçŸ|òI_}õå¨Q£N9åÔùóçsi‰Ä¹çžDžЂÁ}ÿðÃ_uÕU'œpüœ9sþñ;=/üüóÏgœqƆn8cÆŒ+¯¼ò?ÿyù¯ý›Týó6Ýt3‰Ô("pmmík¯ý¯=öØc]PÅòåË÷ØcÏK.¹ä‡~*Û5-ºkÙ²eguö˜1cfΜùÜùÞ{ï]z饴tà 7<ôÐCÿûßg̘qæ™gÞwßý÷Þ{ŸÝÒ¨¹×"Ë·ãÃ'···755}þù>Â4ÍË.»ìšk®Ýo¿}§Núõ×_o¶Ùfo¿ý6ÚžS´­ºóæêZÕzO>ùTkkëæ›o~à ×O˜0Áñ¡º®Ÿ|ò)O?ýÔ_þrí¬Y³nºé¦Gy䢋.ÆuÃB?ðÀçÏïxâ×#Ã>Foõà?Í ³*ôŸ{×]wòøe—‹Íåro¾ù&Îi·ØbËaC‡m±Å–`Æ›o¾™ËåŠ SL?kÀ’zš¦UVV†Ãá–––t:Õ×┊H4êr¹’ÉdÁ+„èp|7M³µµµÐ¯¸bÇè›x,¶z­„Âúš‘ájkkkjl,ýFÓ4¡”ˆÇÜ.íÊ+.øá÷ßÿwß}WÒ½ýïßo¼F:è C×Çnµå€ÜnOŸKÅõœJ&Æ?<ƒiº4MLćîwïAO™ÒÞÞ>~üá™tº§Êì¦%Þ²æ¥í‚ýÇ›¸ÿ[¬£ñÔÖTWVTÄb1ŸÏß'ReÒéG} üþ@­rá k?‹aÉD9ä\.÷Þ{ï 0ÍIï¼³ç{ø|>B$âqÓ0 µ©"™ˆ›†a·Ød"~ôQGVUVN™2Åçói>ôÐÃÁ`ð„NÔs¹“NúhÙÒ¥Re»¬¥BwU”—rðÁÛo¿=€9n×]jjjæÍ›GFûî»ïUVVî±Ç™LúÐC€©S§z½Þ"ZZ[,ßþïµ×þ·í¶ÛÀþó·ËUüâ·Þ|kâÄ×/¾øâ .¸°¬, ¦±ývÛƒ!·Û]è>VwmÜîrÕºÿÏ4Œïf΀H$bèz:•̤SöËž{î¹/¿üò/¹n÷Ý÷0t}«-·˜pÕU“&Mzë­·íJàÿrÙ¬ÝÔ¥Ýö…š¦õ(»eZ9à þÃ:m0zþÏi»X¬&´L:=qâDÃ0„c6ÜPaÆÄ‰3é´&´â¢·ÖbD¢QˆÅVÇ&“ÉåË–-Y²dñ¢E «Vá–ÝX,¶|ùòùóæ%âñË—/\°`ÉâŸϱÐ-‰DbÅòåóçÍK&+V¬X¸`ÁÒ%KÒétKsó¢… /ZD·§ÓéË—/]²dÉ’%Ë—-K¥: ÚðüÍ倖––¥K—Ο7O×õ¥K—.[º4‹-[ºƒ>Šˆ½jåJ$È0BDÚoBz+Ç)‹aÉd2ó Uk½`þüÖ–hmi™?o^<€¦ÆÆùóæ-_¶¬¯Û\A¡?bøˆü_7KÓ4­²ª ?756®\±‚¸­ÊªªÒ7'vøoõÅ&€ašÇŸp¼iš¯½6Qs¹L€)|ìqÇíÀ;ï²ëe—_ÑØÔdüïµ×N:ùäÑŒygÒ¤SN=m‹-·Ús¯½¿þæ,Äñ–Iï¾wêi§Þ`̇“'ŸyÖÙc·Þæ ƒžùÝ÷÷Ü{ßö;ì¸û{Òí3¿ûþô3Î<ô°Ã÷?àÀO:ù‹/¿,¥ô/‰´µµÝ}÷ÝéLfÃ6š:u*êÁ±Ø'ŸzêðñãGÞÀH$“×\û—}öÝoï}ö5î»ÿþÃ?zƒ1 ‡>þÈ£Ž6¾þæ›ãO8ñècŽÝw¿ýzø‘"õ-¢ç7ßz몫®ª««}åÕW8ò¨Q£70¬–¢k •ù÷[o;ç,Rýœ®ßvûí&LÐ4W6—Å2ß|óÍSO;›éÛ3Šè¹ôf*^k.Æ]wße×ä·3fŒ?âˆq»í¾÷>ûžyÖÙ\KŽÒ~ñå—§~Æ1ǻŖ[qäQ?Ìž]Ü‹›¨]È7ßz«”Š1ÇJ½òêy;ÚO!‹u¼Ø±ÕmµPÒ|!ãI§Ó¯¿ñFuMÍÃ?,„(ÒŽb8>®³­yÁ…}òÉ'0`À€õG¾÷¾û¤ŽSHxêPpðÁÀĉ]n· ðö;ïrè!?j iœtì×Ù\.‘LVTT¸\nà矮¬¬t¹\™lvøˆáðã?z¼^¼ë™gŸýaöì[o½Mà‘GËf³gŸ}v6›MgÒôôwÚiÒ¤w.¿ürÓÝ0’Édee%V„‹‘fÐ ÝìŒÀ%ª¨ ª0 Óˆ±Wº¥kZ*t—Ïï¿ýŽÛ9äÖÖÖ?ÿüFmøÄOhš†w9²©©éºë®kiiùaöØ{ï½IB{]ÖË·ÿkni™2åã»îºËçóMš4)‘Li¾ðâ pöÙg§ÓéL&c˜æøì³Ï˜E^ǼE:|sÙG³âUs|n)£ºôϱœ‹.¾dÆÌ™øè±[oSè^ %?~|:Êé9`ÿö€×^{ÍíñHÿuîÜ‹.¾x·Ý÷Ø{Ÿ}÷Þg(ÜMJö;œ¹išfšFþsi¹Àš[vüe§Š-//K§SÓ§OÇP>·Û=}úôt:U^^Ö¡0ÅfÑ^¡ Ðoûþ0ÛT2™\±|yEEÅ AƒêŒÇã‡õ\4—+l6‹[ ÝÒÚÒ‚üÑŠ+’‰„a™LfÙÒ¥---º®çr9¼=“É,_¶Ìív4hРAn·{ù²eÄ|Ù‘ËåLÓŒD"P^^ŽôÿÊ+ ]!Âá0m;*"vm]Vi{z Ðu=™J@"÷ú|n·›^¨âu¸Ýn!DYy9 ±•ˆÇ ¬¼Üår PiéÖ¢Ñ(1\‰Äêl•UU”r¥8ºvrâ°aÃ`Μ9ç“O>9ãŒ3ÿô§«&OžüÎ;ïLš4éúëoBzè¡+V¬4 cðà!§œrÊž{î¹`Á‚|ÈårºåÑGýä“O Ã8묳'OžÜÚÚ:gÎãÇ¿ï¾û-ZôÐC»\®Ù³g}ôÑõõõo¿ýö|0dÈO<é‡:‘³öòË/BÜvÛmG}ÌçŸnz,Ö^¨ØSO=5O˜¦‰DÀÍ7ß4wî\MÓB¡ðù矟H$ Ã8ÿü Ün÷üù Ž;îø 73qâÄÚÚÚ;ï¼3›Íªo‘FùÇ?îŒÅâétú°ÃkooǧókŠ”9{öì9sæÁBåOœøzmmÝî»ïÆ_C‹/>úè£wÚi§ <ðÀƒEô\b3uXk.†]“Á`è’K.ýõ×¹Ó§O衇&OžÌkd—.¹äÒ%K–¼öÚÄýë_3f̸ûî{4ÍUÄ‹üä(d‰/b0(¤T©ñã§&ž3gŽÝ~ Y¬ãÅ…ZÍ®á/¾ø²PѼ£ñ 6ì’K.]¸páÓO?½xñbüÒ±9JoèζæÃ?„û€–/_¾|ùò?ÿùj{Çqžc½õÖÛpà ?þøãx<±jÕªüq=ö”IǶèpÌÑu}É’%W_}M2™<ᄰ̲²²U«Vá4gh¹\NÓ\ðõ×_ß{ï}>úˆ}$Ÿ={¶âÎ;ï7nÜvÛmÓM7g2BŒ9ÀÌdÒŸ|25™LŽ?^þôÓO?ôÐÃN9å”矾x2fGKTQTQ]ÓR‘»àùçÿ½É&›^wÝõÉdª®®Ž9ÝtÓMÆ {ôÑGwß}K/½ô¶Ûn½ì²ËŠä¢][,ߎ·ß~{‹-¶Xo½õvß}÷L&óÖ[ìøûñÇŸª««ËÊÊxþ©\.ûÕW_uêu\è½à8š©Z¡®”Q£P9÷Üs7=zΜ9ápÄñöŸþ¥¦¦Æï÷g­h¬`0XYYùý÷ß»Ýy‰çÍ›wøáã^}âÔ©S?ùdj‡=¥”a¿x VôVOB[fUøèR¾ìT±†aŒ9rÇwÄþ˜ËåvÜqÇ‘#G¿¥C%+zKa­¦¬kok€eË–ÍŸ7oÑÂ…¦i¦ò÷úýþ`0XU] Ø‹ ÝBy¾2tØ0¼Åív:´¦¶–nomm5M³¬¬ ËGJˆçÊá˜?oÞ’Å‹3™LUu5Ý‚P_?hР*Ë••`»C„#ˆÅb‹Ç)Á'¡ˆ®Á aét Çt¿ßŸL&MÓL$Á`ÔÞF…5…h4dÇGƒÁ¹-0L£ãwBþ—‰DBÓ´gžyÖ4Í£Ž:jРA[l±E*•š2eŠßïsuÚúí·ß~¯=÷¼ñ†`É’%^¯¯Ð-/ÿç%œP~ñÅ?ÿüó­·Þ ƒž5kÖ?ÿùOX¼x±×ë{ôÑÇr¹Ü%—\"¤SɳÎ:S×õ§žzÚ¥i%Fì°ÿþ¯½ö¿±cÇΘ1ã„N|ëÍ·À4‹û›&ìcÕñÕW_2eÊ­·Þúàƒêº~á…†qáç?óÌÓ•••ÏV‘]Ï =zƒ… z½^Á±ZÿЍýî»î|å•W´ÚH§R÷ÜsÏ„«®2 SÏe©ÌsÎ9çÐC¹á†ë;Ôó_}¥”fz¦h­íbHš·ËÇo¹å–ꪪ7^}õ.˜Ò‚i~ðþ{ï¼ýv[[Û/?ÿ ‹-Â}O…ì°øOv!K´O©É$ƒq¬]ÿè£ÙíG²XûÅudƤá'žx¢P9k¾°ñ,[¶lÆŒÇ{ìo¼qã7¢ÝoŽº ­IÎL{[k{[k^Çq^Ü`ÿý÷Ëf³ï¿ÿþ{ᄏמ{ú|>©Ƕ(8NZß4hÿý˜=û‡¿ýíoçw^6›Ó?þðt:}Ë-·´¶´NŸ6 ð ĆU«.¸àÂo¸~£6Nò´Ó¦ ¦‰¹®î¿ÿþ>š|Úi§=óÌ3<ò(=ÎÐõÖ––ë®»n‹-¶¸øâ‹sÙÕ5}ô‘G¾ýöÛ‡zè¾ûî þò—ëüñ"¾£À%ª¨ ª(òºéš– Ý…¿rðÁ³øáÆoüüóÏÿüç ´ƒ²¹¹©½½ýøC8^¶lÙ<øõW_9îJ[‹,ßygâÿ^;è õ\îÀÜŸXx›!˜f*•2FÞœ¡ØëØÖ¹Š¼¹ }…ªÖáûºÐ¨.ý+Rt¬½ÍñvmuÌQÞ—.—+›Íºp¿§…‡|(‘HÜ~ûµµµ‰x,Á;;QáŠ*isb†o­ÞEXøÖ©”/;UleUÕ6Ûl#„Ðu}òäɺ® !¶Ùf›Êªª…)Eo)¬Å C ¬†Fûƒ†f¿…ïëéð·Û­i[ !\.W(ô[^LŒsYÁS¸Ž”åû®†1løðƒaiB¡i˜¾JÙŽDƒš¦%âñl6›N¥¸ÌVÝéD"™ˆÇCáp04 #•L&‰ ­…ÞC[[Åm@"‘(ÄžÛQÊæÄß.¶þÍ_°Ö_}çîÍ™3g¹…_ý•v² rz. €aš¦¹'”C† =ôðù|;ï¼ÝŽ' Ö××§ÓicEýõW×ÇÅ5zú'Õ¨¥µu̘1Ï?ÿï .¸î¹÷^·ÇS¤XIüO„×ë0‡‚‡¯•——g2é±[o½ãŽ;%ñU…ëk×óòåË—-[¶ÞzëÑ~ûã ˆËÊË«ª*‰¸ck>ûÜsÛl³Íæ[l‘N§¤òÓ™4sÖ¡žKi¦†¢µ.$i2•JÞy×£Fz衇8ðÀÅKÇã±"Òšß}ÿýñ'œpî¹çz¼þ}!;,þ“£¥TÜÞeøŸÅ+5wî\»ý¦éh±ŽÏíÈŒIÃ+W®,Ô@ŽBi5!D à¿ì²K£Ñè”)S|þ@‡ÍÑaCw§5.»ðŽk¿ýö€‰'¾ýΤC=$—ËJå8¶…ã8)õëyóæýßÿ}xÊ)§d2ilóÏ?ÿÊ+¯üꫯ®¾æš§ž~Ƨëú+¯þ·¡¡áÞûîßi§öÚ{X¸pá.»ìò‹/šBˆ\.ç÷ûS©Ô±Ç S¦Lñúüø¸Ö¶¶ÓN?càÀ/¾ø¢¦i)«²Ã† ‡C™LzÈ!ýÛßàý÷?ðú|ö¡²ˆÀ%ª¨ ª(òºéš– Ý…eºÜn—ÛuÌ1GWVV~ñÅ—h±&Àßÿ~k2™¼úê«§Lùèšk®Y°`ÁíwÜ{ðµ´VX¾ýßÂE‹¾úúëk¯ýË Áƒ/¸ðBøì³Ï–.]Vd0jÔ¨ÆÆÆ––éûß›„Bï…BC_¡ª•ò\ÇQ½kòú7räÈ•+W&ÙÖÎT:ÝÐаá†JÿéçŸñAÉdÒÈY,Tx)Ã~‡“·â©å=ô0û¿âÉ·@ì0µ¼TæêšvµXMˆ±c·XoëÇç`.1vìÖš*µ¼ÂºŒBÂè$× Å²¶ÛÐ…[òn÷x€ETá^BO §ðö Å~ !‚¡iš «V;5V¤â~¿_Ó´d"ÇC¡RZ±X,“N÷ùd ëx.yŠá¢Ló¢¤ÔòìêÕéTŸ}Ž9æÃÐG“'OnokmkmÁím­7Z(åC×5Ê?2–.]Šy‘W®X#FŒâ•Þyû­O,D£eü§qãvÃçþñÑh´½½Ýçó)÷5$‰B«Uiêê૯¾Â%n=—Íe³Åêë¤çö¶Ö§ž|¢¶¶¶È㊔ÙÔØ¸háBC×íMÙÚÚúÄO^yåz.§çrÎí[ŠžKh¦"v(†iz.·hÑ¢7ßxýŽ;nohhøÓŸþ$0™tiÁ4/¹äÒ¹sç>ûÌ3ãÇ/ÔFEšOú³¸E*Ž«÷… ¦x¥í§Å:^\J«¡†GZ¿P9 Ùa« MÓü~?†”ÒEºË­™ÍfKmM§Û‡¶á†~ôÑG¿üò˸q»e3rhǶ° và~ûÍ·ü{To<ÖNg¸4íÌ3Nÿ﫯>üðà [n¹åA¤ç²gŸuæ¼¹¿N:õ“O>™:u* :têÔ©gœq¦×ãYo½õV­Z‹ÅLÃ0ôÔ×ףΗ/[vòɧl¶é¦/½ôR8úÇ?îÀµµ¶Þ{Ͻ/<ÿ<šŠÏë€!C†`¦jy¨,,p‰*ê‚*мnº¦¥Bw}ÿÝw{íµ÷³fa¤›žËUUU¹¬Äê‹/‡Ã.—+—Ížtâ UUU‰DÛ·–ú¹å;þ›8qâÖ[%‚éøã€W_}•öÛÿ}Ô‘ðøã «Ø‰'uÔÑ%8ô±Ð{¡ÐÐW¨j¥>·#mt¢§‡z(¼þú뤖·ßzË4Í#ï¼ó¤úŽ9r@]þ‹µç%ÇI$ -Îf³NžÇ8â!D‘bW_}õ‡~øü /‘í¸ã€K/½ôý÷ߟ9sæã?ñ믿v¡¾uuu™LºH )ó²Ë/?áÄ“#yyä‘C9dĈ¥œ#\¢ž» a‰b\}õ5º®ï·ï¾Á`pðà!E²‰!²ÙLssóÃú¨iš/¼ð"œvÚi¦aüðÃGy”išµuu÷Þ{Ïßÿþ÷—^úÏç€iÓ§ßÿÀ·üýVL {×]w{<žóÏ?µZd¨ìšŠº¬ŠÔR¡»/Y²pá©Ӧ»\®ÿýïµÖ¶¶SO=•Þk¯=W­ZõÖ[oÀÔ©Óššš;ì0œÒJZZ[,ß±_{mâÉ'¬çrÈ.yÄxxùå—¥tQGqÄÞ{ï}÷Ýw?ñÄ“---¦i~ñÅBˆóÎ?¿S¯‰BÃN¡¡¯PÕºùzê©rŽ<òˆvØá†n˜ùÝw¦i~ûíŒ[o»}·Ýv;î¸ãx’2øx¸ä’K.¿âŠ{î¹÷Š+®€D"ÆæˆR†ý%Ô4Í]wÝu§ýŸ»(0̪³evXrñb…O=õäO<žL&*++Ýnweee2™xâ‰ÇŸzêIòCíèP?®k®¹¦S£ Ð'X¶t)¾Øâ‰DkK ÆmUVUE-:ÉårL6Åâñx.—‹„Ã^¯·¹¹Ô²Ùl(Zµre6›Åæ¡P¨ø-™L&Ó-n·;‘HÐNõp8ìñx[[[{{;T×Ôà9ʄ˗c®ÓT*år¹p@G475ÑS¼>ŸËåjmmŽH&@*•*$v !2ét:Îf³`ÐN<¹Ýn̽U]]¿ò UïÅL[eååXÝ0R©TEE^AamDKK‹ýËòŠŠ/³›%›¦ÙÚÚ ,—¼ÏçÓ\.ÊÊË‹pÍ‹-Z¾bÅæ›m.Šîh>âˆ#qÃÝ믿þÐCÿë_ÿ6 ã†nøÃþÍfÒ™LyEÅn»í6wîÜ—_~ùõ×ßX¶lù1ǽùæ[Üvûm}4E×õüqŸ}ö¹ôÒË~þùçx<žH$öÝwßB·L™ò±®ë³fÍÚo¿ý.¼ð¢_ý5‘HÔ×׿÷ÞûŸ}öY"‘H&“rð;ì8iÒ¤'ž|ò¥ÿü'—ËÝsÏ=cÇŽM&Rª“ÿóÏ?ßÿý÷Ýÿ·ßÎ8ýôÓ®¼òÊ\.WU]U¨Ø!C†|þù3fÌX¾bÅ.»ìòú믷¶¶¦R©¦Lùä“Ot]ÿá‡FUQQ1lذѣG÷Ýw/¼ðâÔiÓ¼×Þ{×ÔÖ·«½¾6ý=çœ?|÷Ýw¦iN›6m̆cªª«QæÇ{ìÃÿ/—Ëe2™IïNš6mºa³fÍ:|üá{íµ§c™?ýô“ßï?êè£Ó™¼üÙË–-»ñÆ›xðAÇK~ÂÝwßÍ4{öì}÷Ý›©¸žÿú׿N™2¥ÃfÚgß}[yÁÂv1n¿ýI“ðÅ_>üð#O=ýÔðáÃï¼óΪªªÛn»­´Ûn»mmmígŸ}6þüãŽ;þ³Ï>[ºtéÏ?ÿ<ë‡Y…ìpÚôi…~2tˆ£®J±Ïm·Ývذ¡Ž³ívÛÚ+õÀPyä‘vûñx¼?ýô“Ýb h¿xð¡Ûo¿½½Õn¸áú?þ˜k¸PÏÍd3v!,phµ³Ï>ý«7Þxãþøî»ïN:é¤ &˜¦‘Íå›ãÛ3JièL&ÓÙÖÜv»m=÷?ÌþüóÏùå—fÏž6m*juðÁvá—,Yrîyç-Y²´­­íÍ7ßü÷óÏ766~ðÁ;ï¼Óˆ‘#Ÿ}öÙk¯½¶¾¾þ‚ /üæ›o ÃøôÓO·ßaûP(ä8zì·ßþ¸iè¿ÿýï³Ï>÷ÔSO·µµwüñW\yå÷ßošæ'Ÿ|R^Q>|øpi€š1sæ™gžÕØØøŸÿ¼´þúëã¡Ò |ÿý÷WVVž~ú騣GŽ9lذçŸþÞ{ï[¹jÕ-·Ü²÷Þ{'SÉgŸ}ö£¦444LŸ>ýÓO?ýüóÏÛÚÚ®¼òÊt&=bĈP(¼xñâgžyößÿ~ÞíñÜ{ï½[n¹%™4NžvÚiß?Ë.pCCÃI'Ÿ²råÊUtÌ1ÇvAðÄOÞqÇ?–.]‹Å¦OŸ^]S=dÈ.k©Ð]ë­·^ xá…ÿùøã³fͺôÒKÎ:ëìL&ÓuØa‡2™ìc=öä“O~õõ×_|Ñé§Ÿ‘Ng0Si鬳Î^+,›m·±¿ÓÏ8óÌ™3¿‹ÅãÛl»-îÝ»õÖ[úéç–––/¿úŠŸƒÉ!„Øwß}+**_yå•;ïºë¹ý«½½ýÐC=äCÆŽkp&L˜0mÚ4|[M:íóÏ?/þ檯¯wúÜn—cÕ>¸àëé£>*¤({½ê p,çºë®›2eŠa3fÌØl³Í å3švðÁ»\îþóñ{î¹wú§Ÿ{ì±·Þz«i©Têæ›o¦WögžQ]]õË/¿üüó/ç´ÓN}ùå—c±ØâÅ‹=îX݉Msj¤aÿ¤“N*2Ëf2+W®Ô £ºªÚþO+Š@À‡›››;Uf‡%/ÖårE"‘²²²p8L_ƒAüÒãñ*¶±±q›m¶)¢"‘Juqg–‚‚‚‚‚‚Bo×¥PÇ/%L›:õÛ3N>éd·ÛUô ŽDq³æòÄò3Ö±—Ëåé²L&Ídüþ€Ïï€l6“ˆÇƒÁîwN§R©T²à->‘ÍfñX0òx¼`šÉdBhšßÓL§Ó©TÒívûü+nÂH%Sº^Ò‘ˆ`(äv»„iš™L:ZÓQ¨X—Ë …0­i& †ÂX€ñÙl6•Jº×ç÷kšfšf6›I§R¦i:Ö—‹ …ÝÖNöT2Açšù|~Ÿß/„H§RB¯Ï‡K$â.Ms,Óhš+/y-À„ ^ýõ/¹ä’öö6î²fÊ&â±ÕÍTTÏ¥7“½Ö—_v¹³€]“¡PXsi˜quR\Z×MÃH¥R¸¢“Íf Ý(d‡àøÓçŸ?bÄg]•ZqgƒI¥’öJñ&N¥’ŽöSÈb/vn5' 2KIÈ+¯ü“c«‘Ñ꺮 ad3™t:…×87‡a”ÒÐo/Üš©TÒëõ᯺ž3 Ãëõ ! µ¦¦i juu¦Q—Ë¥ë:vœH´,kÏårôˆ\.—LÄ Ãpl ' {®Ð4-k÷ùý“ËåÒéTŽ ›ÉdòÄ“N>ù¤“Ž9öXÛÇ ÅŒ”•W†Þζœ{½^ŸÏ/4Í0Œt*iò³ºwp´¶4ÓHâõzAÓÐT*éxxb(vXhZ(.EEÁP¸³ª Ýt˜N¥r¹l×´Tü.Ÿßïõú[0ÃNÒBøý´jÓ43ét&ãpÎæZaùøS¡&Îå²xæ;ðŒ= Ôçó{¼^—¦™`†‰µvp ½­LÓ@…s9ŽfEªVðõTXQŽ•*>`æ²Ùd2Q<žËç÷{<^M†±Zrüž+!™ˆ{½>¯Ï'„Ðs¹t: G°^…¢&;öÛZ[ŠHÇ¿ûî;!zr^8®­©™;·g64ôv±³~˜uî¹ç¹@Ñ[ ¿ ½uÒ‰'ªpËu³~øa³Í6w»\]Øm÷ûãw äšÄZ­þ,¼"ŽdÒ©L>Ù­ÀÑ5-)Ý*¬ãˆÇã³fÍB±§ …*++-ZÔ³¢öR±3fÎ,No­¹4Ø k¦YBò-…ß6Úh#Ó4Rél÷‹úˆñ;rMb­VHÞ4ÍööRº]gÑ5-)Ý*¬ãÀ¤T=Ko¹\. îYQ{©Ø¡è-…ßLé…ß5ô\'öoþîÅø¹&±V+d­^A¡kØÿ€í_¾ýÖ›={ËÚ‚îT­WÕÒ{…h4šN§»_A몗ŠíŠÞRPPPPPø]Ao)(((((üþðö[oF£§´·µµöà-k ºSµ^UK¯^QQ±dɯ×ÛS‡ÚÓ‡=RZoÛ!½¥     ð»‚ýTA…ßZ‹¦ï©[Öt§j½ª–Þ+¼ªª*•J544ø|>·ÛÝ}’KmNTPPPPPPè¿ðù|}-‚‚‚‚‚‚‚‚‚BÃ0Œ!C†”••Í›7/‘Hôµ8ýŠÞRPPPPPPPPPPPPPPPèïÈårápx«­¶êkAúßΘQüEo)(((((ü® v&*(((((((ü^¡ëº®ë}-E„Ö×((((((((((((((((((tîööØ¢%‹V5®êÙ&»ŸÏWSU3dðMh†a(©TíÖA%ô+aTÖ˜f/XÕÕ›»ŠÔ«ÕÄ?uSLù±mÖ’xk"ׇR•Ý íºAÔ¥‰uAù…ú²‚‚‚‚‚‚‚‚B /–qL|ýí×gƒQ¬ù´ör¹ÜœŸçä²¹aC†-X´@I¥j·*¡_ £j´Æ4ãxÁÚ¨®~ØÜýP¤^­fKcÓ·3f Ýö0dzïõ^«¥Êdõw¾Y–Ëewß°|]P~¡¾¬        Ð}<ýôS§œrj‘ Ü+W­Ücܦiöù‚ª¦i¬¿Á´Ï¦€’JÕnÝTB¿FÕ¨WÁ5㈵Q]ý°¹û¡H½]M˜¹(>aüF:Ý—Ñ[š¦íµù€G'ýë’òúÓ4-“Éôµ$ ëºÐ~VR©Ú­›JèW¨õ*¸f±6ª«6w?©·« ñ´îqõ}Mu]pé&Àº¤|…>Áê=ýá”%!äÙ¡’JÕn]SB¿FÕ¨Wa׌#Ö.uõÃæî‡"­™jö‡š®ËÊWPPPPPPPPXÃp !LÓì/3NK %•ªÝº«„~%ŒªQ¯¢¨&ÖVuõÃæî‡"õf5ûUMMK¬þ#R/ÕSAAAAAAAA¡oá€þ3㦠UP%•ªÝº©„~%ŒªQ¯‚kÆk£ºúas÷C‘z¯šX7ÑojjŠß˜Ÿ~"Ro Ã¾¬        ÐÛègÑ[ úá2oÿ”JÕî÷ª„~%ŒªQ¯¢°G¼««6w?©×ªÙ¿jÚEêåš*((((((((ô ú½eš«÷1(©TíÖY%ô+aTz¤G¬¥êê‡ÍÝEêÕj€`šý"Ñé{ÝQ¾‚‚‚‚‚‚‚‚BŸÀ-@@l¯Ÿ}ñÅ®þíR·{ÐÀî¿ßÑGŒ×4ÍñâW^øwMuu¡‡-^²ô½>8ö¨£¡kp†Ø©¤ <Ï ÷ßwŸ£Æîv» !œ{ÎÙÇud¤Úu¯} ÕhÊûïöDKuK–,}÷ƒŽ=êÈ@ Ð5£®B¡ÐÄ—_òxû¯«Åèh™·C©¤ ‰ä×ß|óÏ'Ÿú~Ö7_ÿÇBC–Z¢TwÝ~+~˜óãOüóñÿrM$¡ú a-,Fx ßï@)–R;ÔU<Ÿöég»î¼ÿéƒÉ“yQ}XÍÞVéẫÿ\^^™tæëo¿}øŸgsÙ;®o…1 sÑ¢EO=÷¯†Æ[îºíÖBþá‡ÙÿyåÕ3N=eã6ì~{ñdFE.+±Fð—oúü˯Žøi'‹Ç§|òÉu7ݼråÙGyD×$”TcTyyY?±U®™B.щä×ß~ûÏ'žä£\§PbkvªRŇ”>œ¼×»ï¸ýöÝ—¡_upG¬Û“ÌIá½µæ•/DÇÑ[¿3å+((((((((ô Ü„aŽÓ>ürÓM6¡€¬wÜAñòÿ{±ÇHG"‘±[nY¨(Ç’‹|ß©ìŒÛeçvÜá²?Mx÷ƒöÞcÇk¨pûCK‘jì–[â]×`³M6¥5pÃ0z­ù:.ë¿=jÔ~¸ËN;òŸþoòäÑ£FýôóÏkË–“îÞf›lB!;í¸ñò«ÿ;áØc¡óèYa¶Ýz¬×ë½ý®»“ɤ£Ÿ ñD9ð€ŠŠŠî›%ÊPJÓ—R£wßÿ`êôO{èÑë¯o†b¿}ö¾ýλyü‰ýöÝ'w_ÔNQkÅ%锌ÛeçvØžr]¤G:r‰CÊÈ#î¼ç¾Í6Ù$ õ” ýªƒs¬Ûã… ýDùC¶î(_AAAAAAAA¡O Ñ‚ªx…aº…l6»ÉÆ77·$ÉϾøb·}ö›óã\zÙ9ç_øéçŸïº×>+W­ÂïW®ZuñWîsÐ!§ý‡3¿Ãq÷ÁáG»Û>û™…l™·³Rº`ì–[î¸Ãöo¾õN¡B8î‚TT‚i˜Rɯ¿õö^‹ÅèâÓÏùãǰÛ>ûÍ7+/ÝûÀƒO8õôIï¿Ï |í7N8õô}:äÌ?ž;uÚtüò—_½òÏ×<þȃÆñ§«¯Y´hqñëÓù1]×9®Hï½ÇîÓ>ý,žHÐ÷ó,˜;oþÞ{ì–Sôü‹/sâÉ{pÐ)gžýÁ‡“MÓ¼ö†Ïüã¹t‹aGÂwÝí(0Z΢ŋ/ºüŠ}:ä”3ÏúvÆÌY?Ì>ëÜóö>ðà“N?ó‹/¿*R_2¼K®øÓ¾rÚÙ˜ñ]¾áuC ¤Ã̳«M7Ú¨¹¥%‘H¤ÓéGþùøq§œºÏA‡zÔѺæÚ_~ý•¤šýã\zÙο°÷„Éår@@(bøèC:f×½öq”­S†‡2,[¾üÂË®Øç CN=ëœogÌìr^|ù•ýöÙ{äðáÙl«“ÉdŽ=ú¨±[n9wÞ¼BÖ©v·Qüú’ÛØÔTÊ£í·骎šqDg­qì–[î¸ýêQ®løÁ>ò`&ì_ß̘±û¾ûõõ7xÁG¼×ý:wnšŸuùŵ··?øècÒ÷]` tð;K¡lo™“àø2ëåƒi¬cÊWPPPPPPPP裷L¶œKX¼d‰ßï÷ù¼¸›àŽ»îÙtãÿpÖ´µ?Üø·¿o·Í6W]~i"™¸ñ–[ðÞ³Ï8n¸öš;oû{ñ©a—¥*t®ëÛŒ;ûljÀ€T*•H$é_:“éŽTyâ±çï¼Ãº®nQ3‹—,™;oÞ^»ïW^}Í&mxí„«Ö_oä-·Ýñõ7ßâ5ÿøú}>¼Çî»];áªõF®wí 7~úùçñxüò«þœN§/¿äâË/¾¸±©éº›o.r}ê¶ßn;Mˆ?™J_~ðáäÇ 6 ëûŸW^}ô‰'w·ëµž0jýõoºåï_~ýõîãÆýòëÜ+Vâ-?Ì™ÓÐиß>û8 Œ™Y®½á¦wÜáªË/K§3¹ñ¦ën¾yß½÷žpÅåÙlöo·ßQ¤¾xû»eÛm¶þÓe—%“É›þö÷^7¼¥Ký~ŸÏç{ü©§_ùßkí¿ÿ¹ægµlÙò?]óÓ4Q*«›œÙ³Â¤’©D"‘H$âñøO¿üòÂ^Þs÷Ý}>_!{m—­³†½õ¶¶ÛöO—]šJ¥nº¥‹5Z¹jÕ¯sçŽÛyg‰_®«­½ãïÛ|ÓMMÓÙÀ¨¥´»°6s¼…~Å{ùŸÅm¿¥ˆÆ iƵF]×·Ùzõ(WH6üà8òÐÅŽf°åæ›°ß¾wß&“‰'÷=ôð‰Ç;rĈ®0ÔÔTŸ}æo¾ý{¦5xvV€5ÐÁKì,…F¼5oNB@¡Åš5­|K´uGù }7ˆ‚ûLÆ@6›™ùý÷ÿ~áÅÝvÝ…~=øÀ;ä`Ã0>ÿòK`[vÜ~»ã9Ú4M]7þzëm­­­ÑhtÔúëÀ¦›l\Q^î¸7ê71º!Ÿ(ó«*+Óét, ‡ÃøÓI§ŸÉ/Øi‡íoü˵]“ê·‹A~zYYt£ 7üôóÏÇí²3LùdjY4ºÅ替øò+»î¼ó¹çœmšæ¸]v>ïâKž{þ…-6ß,—Ë=ýÜsgžvêqG…?e³Ù§Ÿû÷Ï>³¥µõÞ‹/:d 4èµ7ÞÈf³àxý¶[o £Ö[6Ýx㊊.êkäõzvÞiÇ&OÞ{ÏÕûž>ühÊ~ûìm˜d3Ù½øÒQã?÷ì³LÓÜm×]šš›žý÷ ¿ùFÇ3íÓO=ø øø“©uµµŒuõõ×Û>íäàØ£ŽÜß}LÓÌår»íö«Ï½rŸ½ö¤?[[Û‚Á€c}ñö·ßÞ2<ý¯·ÞÖÒÚZv_ ¤‡T*•H$ “Í~÷ý¬¿ðân»îŠž{ÎY‡rn¬‹F#þËõÍÍÍx×Ápø!†aF sÒy<°¾þò‹/Êf³…ìAz´$[&“é”ááí‡t *Ü4Í›ÿ~+*¼³5Z¾bÔÔTK?™¦™Éd —Ë9ØV[lb”Òî¿õÍ·ðžKg³Ùâ¶ßòë¼y޳'}ïÀ+îÈì¿VWU¦ÓéX<^H6ü`yŽ=úHªo!ûùãÙgtÚÿ~ñ¥öX, xܱÝR Ã8üÐC>øpò÷ÜóøCú|>ü¾ ¬^bg¹ó¶¿ÛG¼6óÅW_­as úòWK±Î(_AAAAAAAA¡OP,µ<~yògñ/·»úEøë›o† ‹D*m»õXü>@N×ÑÜzà( ‰Ñe©ì’xê\üéo7^_^VNíÕ©ØÅyÀÏ;í°ý ÿy‰O¦NÛu—5MÀž»í†Z€}öÜ·ŠÌ_° µµmóM7ikkÇŸ¶ÛfëÛïº{`}½ßï¿óÞûŽ8ì°Í7ÝdäˆáÈeü:w®ãõº®kš¦èF×uN5Úc·q×ÞpSKKKYYÙÏ¿üºxÉ’ÝvÝeñ’¥°tù²ÖÖÖÝvÝ•ª³Ç¸q÷?üˆ×ãÙvë­§~úé!O¶÷ž{Ì7¯À°Ù&›`!eeQØl“ùŸ9=WH?x»dx:^·•@z°ÞØóÎ9Û4ÍK.8¹˜æææE‹—¼=é=ܰÅf›‘fzPnÀ‹–,~ð‘Çîº÷¾Ã=¤~¤GK²uÖððvRx$&…wºF¦ .—«PçZºÌÙÀ¨°RÚõMç[€û·ÖÅ>Ú~ËAƒ h¬ fÑ¡úUØ.êî4ò¬¾ Hÿ øýžwîßn»Ý4ÍûîúG!ùKRô\îªË/=ýì?<þÔÓ<û,ü~þüN °:x‰ÅírÙG<Ã0Ö¼9‰BÜb_(õɉëŒòúîBk¼r¡…€ºººªÊJ>·óz½ü^úLT‘l*ò8k Ý”Êñ)+W­òù|Á`¾_oäÈꪪ"·tV*¼Ú^ÔŽÛo÷èãOÌúavmmÍœŸ~:ã´SrÙD£º¬¢¢"•JÅb±öX þxáÅRÁ^çÞ;ïxúÙçnüÛ-º®o¹Åæ8óÌáÆº>‘H„B!Gy:W;«„­·Ú*LþøãC_ê¿ßm—]>ühÊÁ0yÊÇã;”¶¢à1‘MÍÍ¿U§©Ùçó…B¡í¶ÝF|þÕW .Z½‘ƒ ¢ì777ƒ“EIª/ÞÞ'†×ÜÒ2á/×í³çž7þåÚH8lšægŸñÑÇŸyt#ð ³ÙlÀï+d…TŠvÖðð×" /½Fµ55C‡ ùèãO¶Úr þýâ%K^~õ¿gžvêFŽ)d`ŠQâÅSk@k[þYĶ¥òéÃ0ŠhÌQ3ŽèÐG¹Ø(g—ͪ‚ÃÈEûŽ'/¾üЦ¹–.[þÖ;“öÛgïBR•8¤ Ž9òˆ?šò{î=ó´S ººªk¬7K‡ÅçóÙG<'פ9 ! Ãì'Ê7iP¾‚‚‚‚‚‚‚‚BŸ ãÔòü@)ñ3aÿÓþ½ãçBO„rБÊ.€iš_}óÍ´O?;äÀŠ\ÓM©¬KM{¹º®ï¸ÃŸ~þÅ'Ó¦íºÓN`…ŠLþèc¼À0Œ÷?œûâ ²·Bšp¼åç_uÖXaÍ8¢³ðõ7ßNûô³ƒ8À4ÍB²yÀ‹Œ'‹—,yößÏ_tÞ¹'{ÌcO>ÕÒÒÒEÎÞ0Œ?]vɢŋÿý‹8˜tZ€^îàöGÒ>âñÛט9:9qÍ+Ÿø­uGù }7ß”Wò¯ö?íߣùégŸX¿Ù&›8–iæO•Š.˜1sf$€T*ýݬYo½3i÷qãvÚaʰS¼ÎJÕ¡x;n·ÝK/¿¢ qÒñÇѯo¿û®æÒ65jÊ'S¿Ÿ5ë¶¿ÞŒZ:é„ã|ô±+WµÞ/sç½ôò+—^xÁàAƒ2Ùì-wücŸ=÷L$/¼üòÆm„!9Ž×ã#PçÓ?ÿbP}ý¦›lÜ…ÚY5Ó47Ùx£ŠŠŠû~?Ðõ.M;þ˜£yü !Ęѣ§MÿtÆÌïè ­]wÞù®ûî×s¹ÝvÝ¥HùƒŠXnï¾$=H? :Äï÷ßuïýa_|õÕÌï¾€ß}‡¤»zO¯Ï ±x¼~ ¨ÈT:exÅÛ«³5ÚoŸ½§}úÙ_n¼iÜ.;o²ÑF‰drúgŸÍžóãÉ'_[Scšf+±ÝmWæÝ2tÈ`—ËuÿÃ~ÈÁ³~˜óëܹdo…=d°ó-Å5VH3…Æ“"ðíÌï0qåvÝyÇt]/$[¡‘'§çP'…ÌÀ0Œ»î»‹Í6Ûqûí¶Ýzì¤÷Þô‰'/¿ø¢n)øÍðaÃŽ9òˆç_ú¸:/@owðÒ;‹ãˆÇo_æ„!DB)¿/” }‡ŽSË÷ ½µÁ¨Q[l¶Ùý? ^|î™"buY*ºàÖܵº†n÷ õgvêᇒËåJ,¤³R±§ƒcÉc6F5!6ÝxcúñÆ¿\ó쿞ŸøÆ›55ÕW]qÙ›o†ìÛa”Ëåþ7ñõW_{m`}ý¥]°Ïž{ær¹¿ÝpݘòÉ” Fm@ q¸\.¿ßŸH$'sÒ¯ô§¦iŽß›¦)„ðù|x>žÿ-ÁçóÍü~æ›m1kö¬®IEðo ÃÈår¼´ é¬T¥”|Á¥—o¼á˜?œu&|ó팫¯¿á_O>Q_?Àår†‘Íf‰}Çãv»5Mã?¹\.ǃ«åº®g2zŠãõÐ}K5òz½'“Éà•üWÇãñx0ÁŠ$C0Ôu=•J©`!‹rü³S·¯Ãs¹\^¯OçDcóûýhxÒ]½' ꛦýQig ¯”Ò:Ûƒðé¨FÓ4íÂn`¥·{‡c6"Ö1›Íno޶ív»o)ÒU5㨠€cåeûú›oGžû–†Û²H€T*eO_ØÙ!…4M£Á¤tÖL/±³€ÓˆgWo0ÌogÌH ÝïÔj@Ïô¹ò=^ß=ï-»l¿Aë‚ò õe…îãé§Ÿ:å”S‹\àÃ0(ý*Nþ Ý)ýJâÔ°ÐeŽÓ_~1ÿÜ©J¹ Äk:%U‡%/Yºô×¹sÿpæx;žUžÓs…’N§íùò‹ˆíx=¢›:—šJ¥8KÅ-"C{{{‡²(Ç?;{{ožý×x<Žìwõž0¤çRìÇ±Ò ¯”ÒJ¯Q‘§wJ¶"íÞá…¾«]™EËd2Ž·”8ÂL Ã`!Ù <ö/©´î4w¡{©ËtA€5ßÁ¡3#^‡êu¬cwÌIÃ?û‡ò‰ZG”¯        Ð'p—²án$ùIõÚoNÿì³úúm8fõ$¸K»#ûgí~èWJèW¨õ*º¼—³;ìð¹=U©þÓÜýP¤Þ«æêÜ[tÃÔúAMIßë‚òûZ …unýhÆùۮߗTÿøº×ãùó•WHyúCû§Î×e%ô+aTzÅUÑ{êêmz«·åÿˆÔ«Õ`˜¦è55ÍÕÙ¯Öå+((((((((ô ܘ¢ŸÌÌ(¼ÿw&Õ‹Ï> ŸÇãñxEÓ4|4Ußãñø|>Ó4³Ù¬Éàóù4MÃÒ ÃÀs9QZǃªH§ÓB—ËEöûýT²išÁ`Ð0ŒX,ær¹LÓL&“ÙlVÓ4Ã0\.—×ëõx|¢ÛíÎd2š¦ƒAT#Їw¡™E"4fÓ4Ýn7Ú-™h<ǧ{½^Ó4Éü€Çãq¹\xòƒ®ëhÞØLhTn·Ûív†‘H$R©”išº®£TÁ`Ðçóµ··'“Ép8Œ ÇJy½Þ@ €ò`}QZ2uT;™7õÙL&ƒz‹F£^¯7•J¡qz<¯×‹’Ó½Bl‹l6K6‰ „-[ ë…"‘}bË¢®‰š™ÇãÁFÉf³¤¢\.—Édиac¯Äo¨Û⽦iâ½Éd2‰d2|4¯t]G+Êår†aÐBFë÷û± Ý¶>›˜^.BTØútu:¯×Kã U{Y6›Å!Ï9Áñ¯¡‹±>&kšF„ë5Oõ# ¦ivØl6‹rº\.®MÓôûýô =—Þ ø\|4 +ˆƒ!¶8–¦iˆ•E¨´R3™ ©ˆF·Ûmšf:Fõbh8%±ñYtJ vm2l53].W:Æ.€vˆ%Ó…ðÿx¾°xáü-‰å Xj{ vxé½@·`9$07rzïàíÔ¬Xä»ìv»ñ¥€*ŸðdÖ2â#°ÕÐf\.^Œ;¾­°îØÓ±.øtǃ¶&7I~oçæµÀqmoAÁPr^8UÞ\T 5t6ýŠò“Z ÃÀ×7>/>íœ?vqjU½¥     °Ö ©¹yöœñs,ûaΜƌ)áê)HóN>ûáÓtœîà\ §S}­¿>Ÿ"w äTH¹I4»ÅÂ@UUU.—knnFž\ œ†¦R)"zÂápee%N¬‰D¼^/ΞÑ乫@tºO~¿? ‚E=pGÂçóùý~Ðu=™LjšæõzI*@âç»ä_‘!ñ Ò”gÆÜ Å»pFÎ]#t‰n£y<…ÚÀÂÑC9tɰš\Ã0"!žˆ¾ºßÔd(ŠAN2µªCýhš–J¥ššš’Éd<G2Nô”„¡PF!rLè%IÞšan·Ûçó‘ᑃJ®~(Â{¹¢Ð!O&“H¥R©\.WYYYVV–ÉdZ[[Q?H8& ¯×Ç›››Óé4Ñ4X…\. 3™ ²6¨^$ËÐG±½½]Ó´ªªªÊÊJ$Ñš››ÛÛÛQ0—ËÕÚÚŠ4J*•r»Ýáp8‰ØÒÒÒØØ˜Íf£Ñ¨ÏçC_+‘Høý~¿ßòÄb±\.çóùVK§Ó(yyy¹ÇãI¥RDo‘ÛHz¶µµ% ò]Ñ*Ð[Ëår^¯7™L")`F2™”hÎç¢ Ñh{sH:4Ų²²@ €Ê÷z½Á`êŽÞ»¦iH€bÕ°|dÙ¨CáØë÷ûC¡öh¼ûš×ëÅþ‡JŽ$ FH"dT‰ +˜H$m!’?#³†v…þ3oÇÂÁÁï÷»Ý&¼žH+b¾)C]¡ÌØ%É?G: ©,,þ7Çb1¼,‚ƒSø,¼-œDEB+Hµ°Ìd¤—Ë =O2™Ä.Œ„’¨^ 'zÅårù|¾@ €ÁêD<¶8=‰ûL&CŒ9ôþ%}r‡Ö?p¤¢3ø+Ruü½€µ ÁŸØ—ËEf@=‚¨.>Ô‹šN§‘"äÜí±ÿ"¯Ç_Løæ"Ê›f ÔL¨^T64ÖørDóCN »9­µÐÈ‘Dtq¬Ôjdo´ÖB*Bºœì„4‰ŽF£¸&e¢1g³YTuÃP(äóù‰æt!Öeóz½8ìc]ˆ £&&t]O¥RdZ¸*àñx¨Éȶ‰#ÃjC}–÷;d6éUNƃ,Þ›t9Ó[j ƒ‚‚‚‚‚B_¡HÌö¢Å‹¥o.^\"½%±KY ýD³OŠ^¡¹NV06çIÐY¢iàœ5•J577ÏŸ?¿±±‘Ö]©(Iþ ]CÚg]…>‹8°×Ñþû—4™£ïùò/ÎÑÉû¢¸°âð2 ‰âìM^y±ÄQ¨ÎkqŠsnœúû|¾òòr\l'×.—ËUTT <Ø0ŒP(´jÕ*ô´Ýn76 úxD$UTTTUUaÃ1¢®®#thq˜l¬);0·BpUYjÁl6K¬γQ8‡¶ÐÍgÀ\ÿ‘SÃepò?¹8ƒÇÂ1Ø(¬Æ8p‡<4 sàfC12d,ˤîVH:'Ȭ៉DÂ0j Ýä&°´p8ŒN#Äb1twñJ°¼Yt‘£A"€ü@´:rò£Ñ(ê Ë¡Øôœãñ¸ßïG¤¾¾¾¦¦&“É OV<]YYYYYY[[[kk+ÒmèCêºÞÜÜŒñ\äaðR„@G—ËÕØØhšfmmmmm­ÏçC»ÅË¢Ñ(Þ…Êimm€ŠŠŠêêj*¡¡¡! !‡±­ÑÿDï+›ÍÆb1  H#¶µµy<žªª*ǃ‘M¨UÔòJ>Ÿ¯µµµ­­ í=R¬>jIŸx<ÞÞÞŽî1–ƒ\:ÀÏ…J¨ªª0`rjmmmMMMñx«¡P¨¦¦&Äb±ÖÖVlñ`0¨ëzkk+r4œ(!±¶¶¶d2‰ª‹D"uuuµµµ~¿?‘H$ b.PN|ãdè9£´|pkooÇÎN5X$ò¡Ød™L¹BŒ§£Âi…CTh À8>l) ß ‡Ãœ?åã@,Ã)?©|ä P$¬ŽNííí+V¬@žxв²2´ ¡B~!›Í644ð`ŸP(TUU…Ä+6õeNUpŠÇ@ŒoŦA É‚Aû¤1Šú&ñ§^¯7†Ãa!6"FüƒA\®H$œ‘ÁÑÏ>F¡Òø{ {"­T¼’q4uiuoxŽêØúÈ×` Ú… bH&Ú-½GhhÅL—‚Ú¨¡ñ݇ä,ŽD¹ò5$¼‹V°¦‰ iØÇ§ãp„Ì --OÄåÈøý~?ö›Ê¡¡& ZÈq»Ý¡P(‰„B!Èd2ø¢·@yy9¾UѰñW$ã°_`¥Ðh±Å‰*%µ`ݱ.¹\.£8¼ãÄŒÏ^R©TKKK&“ikkK¥RH£MÒûo¡© -ÿ`ínÃ!% á`…Êá…Ï竬¬Ä’y€ÑM=¾K±`ôÖŒ/>ëÙ')((((((tˆÍ·Ù®È¯ñxÂöM¼Ä’9©$Q.—«²²²¢¢£xpäñxB¡PYYY(¢EZš’F"ŸÏGþNàp³ mÀЉ•+W~ôÑG_|ñE{{;NiÏ·¼á7öÓ}3«ý‰þ'MÓqºF;LÛôP<äÐu äŸP 8q$Ñs.++ør‰q–®,2„B!ôß³ E{|4Na)"« …¼Ó¡­ét:™LºÝî²²²#Fà*.RQ8!ƒ555n·»¾¾¾©© U"‘.éÇãqœÊ{½ÞP(„³m¿ß?pàÀÊÊJÜßôä/}ƒåüо¢ðȨPE´+ÐdÀ¹¸ËåJ¥RœÓ¡ˆ-Š!¢[С"ç!#UD µ,ñbèÏ Ÿ‚Î5"ù“äoà0Œ¦±÷ ‰B€¹´ó‚A æ"kÁŽÀýpÉ&´å \'áÑTÐáç¾F:à61 š ž VÔ ' ©·‚ †¦V˜ÆÑ ͤ*ÜÂŒÇ ‡Ãáp¸­­ ·>¥ÓiŒ€¶¶6äY¸ÿL[Ã(GA±WÈû qF«ªªpÇvØææf!DMMMEEE8FI,–" ±jØ‘ÜI&“ÄÑãžYŠòC¥F‰D‚bÙ]BÊ==MÓb±Xss3އ¨ä2ðšÖÖÖl6[VV†ÑdÕÕÕÕÕÕDº566Æb1!D]]ÞR^^î÷û1° G`¤äðÊX,DZLÕ´bu]ohhhiiAW³²²ràÀè0Ó~RÔíE¢í½`mŸD—S±¸y“GoÑ€®¾°6···#áÒÚÚÚÞÞŽb`Ð yÖ‚æ …0Ì MÂëõ& ¾u”:/ñbȲQ\ÔuKõ¢7Qsssuuusss[[[{{;”••UWW#s„š"¶i,ãA@Á`°ººc<‘¸Dk¹£¥t hçÑVQQQVVF ßÔÑÒhLÀ—j•È_äé ™L¢n‘ÂÀO&“<ˆSlçÙQZì,ØÐøâ@º“˜$Qx”¢}©-håƒsyDNሄï;\*ÀW96 ʉ >˜cÔ§®ë‘HŠÄa‰{¤·p/¹´á·•L&ñÑ㆑P>Ÿ/…‡am¥G£5Á"ѺžC9q$AýãËa Xkoo§OÜ ‰D¢Ñh0Ìår©T* ¢ÁЋ€‚ý- Fuá„¢§‘ÃÅþ‚uÁ7†ã̧Cx#êåÇ•H4ûh4Š´#Ú!M9èÕÆ·4â« ç-ÆH½ßIM»b±ù°ûà+i Dr©Í‰ k LÛþ>³ä41®™ã`}}ýرcGU]]M4.ù¢ÛfZ9MhŸåèÁÉ4¹8ŸÃÉ.ºÊ‰D¢¡¡¡­­-£Ó‹N#Î8qzsV /B:¦½½½µµ•¶Ñ®’­ººº¢¢‚6àÆ–¦¦&œ°ò ´fXQQQWW‰Dp¿nW¡Y2à:Ϊћ ƒ¡Pˆr€Ïç«©©©®® R@•â¼–˜Ü…„“EÌ£DúN…{¸ˆ/ÀåPÊ„…|*Ý·Û]^^>tèPŒg‰Çã8E¯§­étº®®çè(¿W¼q….pMØëõVTTàÊ*Ï¢"¾QPÿ¿d{<‹è*ü‰¶<ЯØ(”f… äÙphAž<'Ü)d¬0UôxÑ9G¨"çƒÝpÇ%èÊâæÍ`0Çkkk1(ãžP¨ªªÂÝÄÈ—Qáã(¦ûrEE¶7]4 ]׫««‰ÞŽ+N‚þ9Ú!1ò¨d=h?#6.õ2 ,ÂÝ R¢(ÓÊKEVOAŽž’ ÕÔÔ`sà˜Û9ñÑÑhCu(Ô·‚EPâËIÊwF¬Åuò1¢§ñ‡µóù|ÕÕÕ™L7½b¤É§nET5EÐP@­ÊVö(ê¡V›[Xý(g 8& Æ>H,m¦£´ƒØ[1ì ™\J/H 4bã4uj5Š´ÂW Oˆï)T 1Q°¾¿°î8ìPÇ¡€:8Ñ[4RѲ M #U1z ûq[4’ ‘‰Cj¤™ *ƒ°°LT%³#Ž›–š.ä³ìzáp˜²4¢ò)P‹A”Ç^ì¤Èl"Ã…Mé÷û1¬ %Ç'’’QiH6aïÀ­…úJ«€´Ìã÷û± ããwÆ‘Wøf||ûý~$Í‘ÐÄ•È@ @¯ªX,†Â4ÔqÒKWkw£×(­D¢Np"‡FNs*´œl ¯m²øý^‚¢·úz)f{ƒ 6X¾|¹aÁ`×ö«««‘À>|øÖ[o=dÈÚB9Š|¹g±8ÚîDIðtQpNFŒ39]×ãñx2™Ä¹îjL§Ó§®®N;w0.#/\¸'¬UUU®_UU…{—ˆ]ÂP©d2‰N,‘h˜sáëëëq"‹;;hê1¸H‹SÜQ‚Ùp04Na‰òÃÝ"ÜÂÑgƒáp œ—w†3EÎOѲ? C>NÇišŽ+ºáp¸ªª jÜ}@¡8¡Ìår”ìi,ì€ÁÆ¢,Ú´),ö ØnMrEh—.ã»xÀŠõ@1hí—l‰üpž:D¢‡x,ùfþŽEþ8úìbéÉÛ¡Ÿx •ogè8ˆÞ˜ô»´ü„5‚mÚå7Šüí±$6J‡®Äo°á€e &b‚¢'„•ã™Ülô¬xä…fÐõÜþyŠëÁ`Á&œÞBÖ )ʱ…)vIôÏÉGF©ô‹:A¶ââ¯È¾aRHP:(oްr¥iVÊ?T Çá½1JÐ Qi´-«CŸVno¢‡.¡ÜèÚáÑÈ0ƒÁºººšš"8¨·"€T+|_uIŠ…•9Îdq¦ÂJÊ.„À01ìã¨~%=c]‰É¢þB¡LԿк°Eì]ž¬JƧ¥¥‡G"@ñÔ!Öš6Uqó£nŽqC$¤ààI‹òhl71ÉFc«b^6$&0„ aM‹¨ê˜d_IÃ,ê ©(zQÌÆ/Si,¢He†÷ßV¶oê€ø¦À΂ô Ö‚ßl«>çp(­a³’AÒ‰4RiVÒwbÇèµÎé-UDéÒIùÂJCn²”íQNÛÛÞ†øh$@‰+ÇËh9„"ø –#V†h4¦€A¬e™D ÁFÁù ±ÕDñP(’tÀ’ÓQ 2¶aÇA˜v¡"åJW¢2‘FÄ%lM,3 â¦o"’Px “ÉÐb¾R©Æ¢Ú±z<žâ´ 1©!ˆ3CÎŒµ¦à/4!²I"y©#`u(MXQÕ8tÓöd:¢¡÷ è-…uÇsÌ÷ßoFmmí€êêê¢Ñ(Î,ëëëGM3<Îb Ìü,T`M Ñq[‡CiVö°ŽEkß“¢¦¦yÓ4c±XKK î¬ ƒååå8DW“[ㆷÛÝÖÖZZZ<Ï!C0F s0cáÉd²½½ÝçóUUUað?1áô.×ÕÕáFªH$‚ž'9K4!ÃÌ&ø\hÅìδé’þ/¬Ó‚p.HÛUˆ¢ÂT²8ÅufNF`”¾ËåŠF£èó´>äPÑäçñ˜‚‡â;€eÞÅÿc’&œ¼†B!ÃÊ»LN2m`!^ƒ\tÎ9Ò[ÜqË×✑`I|‰nÃ[x(äçÌ’è-î’qØI’JFn²Ì8¿›Uª /Üø8Šx¢¬1;‘oì*T²TqR¿€¸ T _6§>Eâ½¼É –‰•ÃGௌ€Ö…qt;ò>x=RÄ¡¶yž5$Âáp{{;z§\çtL0%Ƹ—•Ï^° 9 É!C%Ë+öÇ4ÍŠŠ Ú’C‚PxÊ Í¹)¤/æ4Ëù{É+†üãø¯v!µü' +é±Kô«Æ’%Óíºuâ$X´ŽœUÁ¶% kwçGð2¼ÀmÀd»3x …À`ð X\'ꊧC¦G+ É̛ƴ63ò™t…?ð¡È>î»jù{9)䄜C* Û—\P°B稩×` OEf‰{ÄÈDù¦Hü3‰Ð÷ø“‹ ÀíXØ öVbÍÈìx8ÞF<ÆSs['i‘£B}ã µiš˜à†(*â}ÈfÈ%v±ãÏ„u°)Ù*ÅÚP"y,‡8`yå$.Ï̸æW›VBzÁbspÄàdÎÎ:äò>ìÔT$õ(ú£¬¬ ÅÆ#5…w†Gp’ñPŸ%i9_Fˆ‡½`æ#Þ¡¨Ñ)ygÊhhÂu4Q“Å-wùNÞÇ)8Èe%¢ân|”¦q { % ®Çwp£Y«B„@ÑÎwN¶¢Ùý–ËtEÍÇ`L:mEç£ðýƒÀ6žcin+? Ç4–ºòOQäsoÅG*ZwÑXÌ8&ÛE¡—†•Ǫ&Ø^Q¤„èÈQÚÍJ†Mg,bÂW°Ë:‡bÖ„µŸ—z(>‚–ñø»Òdûa©KâÆpþšà/qŒSÃ~š•^“Reáè„ñã˜ÈÏ´î2£Sz‰à3­ ‰8Ô$“IŒRBþÒÝ£Z°dKßFq[VFŽ.s±PYÁ‚ýÉh±ú”÷Ö;;?{í½¥     °N ±±ñÛo¿]¸p!ÎWøtjäÈ‘#FŒÀº¥,¬‰ü#¢iÇWÎqæ„in<Omm­ó# ƒ”V*•”C¸ 7âaêÈ|¡_1dÈ—uBPyy¹¦i˜p·½½r¹\˜n7ñaæ/ÚÐç¶Î¤ã«1ÁËåÂ(0Ã0º^ÂJˆ+U–¯¨c:ddëÒé4í¡d%"?ÈŸ¦€\‡´zÏ Z]ç3cZ]ù»„ˆ;@Ï£](ÚBZƧ¦!vŒNX—è*’\jw*<ª‘fe5’D›)ø2¾´ŠkÚÎÓËQ¤Ë\,)’i‹Þ’"§ˆŽá:äbð A<Ö€šƒ¾¤F$†Ôè86Á½wî[’ýØKbg2™ÆÆÆt:]SSƒv…1PÀh>ND +ãqP&)Á‚ËèFÛFê%R€­ (Øyð\ÛR¦OqÿyìÑ.¶(Zj¤†ñÜ‘dš&Fî`p’Ô< ۀɠÉqv&0"•*RÜã¢:b7Ä@ Ú „ŽïÙV„…xpº„jÊ£c0¾•“¤@i !Ì‚•ì™XQÎ IEw ëØSm¶·š‹ h²˜JÒ3 G’kÖ!¸ïÒ4MÜ„ÎÍŒ#&;Ÿ‘OÈ]çC©”’7‘s³1ó?I«Ô= –6žè`{ŸÍüØ4nù<à”¾ÔX.B‰ "^ŒT$…²Ò—¦uD,ïæ¦*5§Úɨ¼#ÐàÀßÔübþêáÜ“™FÊm†'g÷€´ËG΃HmĹN å“,™w=”–ÏÈl¨­1 œâ¡¸ØüÝ$¬*ù;‰ä¥Šãmvæ’ÃHA¯Â ¶â{ñðFd© clmðĈo|4å ¤4öøÁ0 šr$°°ßá›"‹µµµ566®Zµ*•J566¶µµñCB¹]¹¬-ÃÆYHœ$ÐæJZÏ,ÙŸ“ž l<.Rò‘¤— è-…u³gÏþôÓO—.]JërD¸†ÑÔÔDó9Qrè8wŸ+´§V˜6‹v7м ¿Aï—ÎÖ¡ 4MÃܨn–©=ƒ5…¢“°s¹åœÆy*N71]«išx°:M‚5¶ó #°p&)ûx4a•NÑÆè­BôR?Š…!G”ˆi­ÛÎð•dÉTÒs‚ŤH$ˆ`ä”fâ³U>6m-ö¶¦¢Œü#¹o#-zs#¡çJà´—D^Ø µ¸Ý ¶ÔÏË—*NÒùéáíAF†A¾®D™IÏ’”#ÕM1‘H´´´”••ÑþY èàLØHߦÌ[[ÿÀ£'8Ìɤ0©M%΂ö@I%KWÝ@ÜËå BÚŠ‹è3¤È)N‰c‰Ù|Kê e NÁ&9çÔU5[¼õ¸yöx‹ÐN+‰Æ-"Q¿!ŽÓÍö–Õ¬C͈=,pƒ_Ïu¨YyÖŒüƒG]ìLNr³§¼o¸|BqaœÐGP£»­\ò´Q‹v R~%R 2t(m¥5 âÌü˜>°8°v ’&©‰¥ñÇNÇ“œ—†,nüôâ4…sdXgƒ`çÍqL#}Òµ|ÐÆS›ù|Ôp"ŸÖt¤ÒxÝiØ”†`kô½ištþ&ïøERz¨ÁΡ%Y&Nb­)Ûí¦J¡&©[qýc…ÚÃ3CèÈ`æ l‰×ƒªðt¢iÃ/Ñm”gŠjDvNš¡Uam¦¦Ó‘€6óãˆÑò1&uYg5¶¶¶bŒ|8Ö4­¡¡aáÂ…‹/^¹r¥®ëóæÍ«®®Ñh”wC»ySðât>/mh¶JdØVÖ|\à#ŒÎî=(zKAAAAAa†#at=wùRp§À}6Ëí*]†Áb|«‹È:Ñ^H:f $9ÛE‹óÑhOT¤Äº¡P,î,cnT̸Ó>œ«aQ8—¥•Cž°ƒX$ÃÊCŒ›Œ(%í¡ùF{ñy-.œBQz‹¶2i,„%份¸SD·ÓãønÊÇAsSÚQN»ù¸?CôñÜ‹–ü"jeiOè »!IÔ'b$ÞîrÈñ;TÀÓ)‡W ØþGÉo!eãÈ}Òœ… +‘9Ò¦-Ô…®çÕä ç—‘‘D"ÃÊtÎ[™š•2µÙEÅ‘\cW…ĹhùÜQü““Vd“œâqÔ¹–yD×ÓÓ5PæbéŠ5–ÉžŸó(QŠ…ÂKWÄû£dçŽ !•Ã-™vAò¶ G ;Gy”9Ï(qmK°]|ø¥p¿²3ÏB‰ðùèÁ{.ÊÀ‰-?ÚÎnØô'YD¸[Ë·‰•É›²Aáö+÷ µGã<ß›FÐ(Ju$ÊÃy|™dÌ\ÄdžÀkZG",ÛQ¡qÉÈÏjÇ⃒Ý~¤G¢wÉè•”Ífy ŸÔïxɵDñzö®±ðÞ”` ÿ”º†ôPÓÚ‚Ê«/Ø>;þfä=BX«G‚e²ãWò¡’ãœ~â 5¶}•W‡èi~Ž¡ÆvJrµ›,¬ ¹T<cÉÑVñÅjZ¹))ô¬,¢+V¬hii:t(»‰ˆç¸m)*jz‘¿˜º$5^Ô°ÃRf:°æH½á¼ˆT£© ÙÔÔ´bÅŠÖÖV -Ÿ?>¦h¨©©á±W¼»a_ãCaèâ¶PK4Å¢©å׬ôŽÀVL+†KÑ[ =€ÊÊJ: ˜—>Ÿçj¥—ÆçÓ´®+q+Hl™VdÆUaÑR8·ÃÙ‹ñ{t#‘æfÎd28MÄ AÖY½p’Y†•Ç]c'ÄÓ´’Ø"JL‘´y‡8;žÄŠˆ¼ ëBÎO^Æ=ŠR¡ ¸OË×QI«ä`H±-‹ ‘Ö]ÁÊ’c²ÄRÔRRæ&Òƒä]pê» tÝý(NØÙ Èç³€ù6’ƒ ÌW´;9\rÎ[ñC9øãÀJ¨,9Šä“ðŒ¿œ>£ËÌü8 Èg¸ ŒJæõ’HL¼Àï÷WWW£ÓÅsqÒ¾ýGR,ß>#Xà•$0÷K9ÓMŽ+oùN¯½¹»¬ìé܆K0Ç“¹PN¬h,ä'¨â¼ F°32¬DùzxïÜÿ§]Ô_°h!tl¢È's!?);©ÅÅŽ@yxp“äÃóF‡|nŽS{Rp ýŸ3_¤mƒ¥Ãù³Ä¸}b9¦å!Q$|/$n•V~@[ˆÀâVÇ_I”Žv辑;¾S€å÷‘Æ%|4ìÓ¦NIiÏR«Q†);“+©H³--p«³›+2Ä‘5Š|f–z ß–N×Hƒ­Æ2[IšÒ¢0x2;é}$u=-? _÷DmØiA`áoœ)vY'? AOK&( å›3­‰áå¤-?mS»HZ:ŸT|4M£nÞHu!7ê¶Î{!ùi’CÓÀ:^sñ$s2™¤mìD¥á‚ t‰â~aE{áPSQQÖÉ6H(ã.K<¥ϛƊƒÁl6ÛÜܼ`Á‚Å‹1¢¬¬Œ­ÆÛH?¼É4+9)õYÎO9š‡aÓŠÁe4BR+ØA{k½Õ_O7 ­ÜLú>«§[’ËéÖœ‘Ö ].¯ÛðD£jŸ;Ô×R÷ rF¶9¾$žiÎêàvùCÞ²ˆ¿Úï ÷µhà§Ó`tÝ}-Hw±°ifÈWYÜׂ((((t555¸n°ÓÓ˜¼tzKØÖ“Á¶—AÓ4Lïr¹¢Ñ¨i%½"BŠLx%žÞhš&RN©T çR–…³"~Äùüä{à,gœB\çÇ ¾åŠrÄR`ªM‘[€¥Š›,¡¾Ý£ ÈÐ1¬d½4Ã㼃淓'`X‰„¥ep`î±ÉÒš˜…ƒ˜hNOiw…mñ\úSjn°Å"Ù}'ÈçGøô×Ñ„°‚À¦Ë¤mNư’àÒ—t<¥¤I'´ƒŒ|ÝBá O‹ç¢>%ض)á´á”–¼PÁâ ð$‚!ß1¶ÿÉ›ƒôC ïH¾fÎÅ ®ÊyCÁÈ#ó 3£Êš,z œüaeÌ¡Bx$ˆãf:`‡”qÓÂk0Ùúxކjæ‡&I×P¤ºPs›,¥9~ä£r7^XèrJ…_CÄ:Ù$°m‰$3F3mÀ§s­ºXFvÒ³EEÀ!Ž›a¥0ç­¦åo²ùœ—4ÖqN¢±Ã^€"ï\ìpC;Ì”,ûºKê"粎Û#"ȆA¡¦çï¢c:iÿ0‹Q¤> [Ô³DæšÖRØbŽx¤j "ã{oEþ „´dQB=K$.Œ×ŽÛ¡°QÕ¼wåHbS¨  ·4,Þì"ŋ^ÄŃE‹ðçâz² Õb² \$ïŒRkb`‘imlôx<¸ÓwâÒšfeå§$S¨ê•+W®X±¢®®nÀ€™Lo¦]·|XÀóR…•ˆ“ŒVXq[&F§"加WçNË`9«i†®£–p<Ä…@|æ­©©Ñ4­µµYÝ––– l¸á†áp˜¿°T‰­æ=Y#Hrþ¦“|©§¶¨ÓKèïô–nd›ãK«#äï›ËVµ/øí½e˜¹T6–ÊÆšK{–Fé'ÔLVO-lú^7VIš™\"“K4'–õ¹l¿?jô¨¿¶1¾¨"8@ý½ï((((H(++‹F£|6ƒB”••áVÁ‹r¤$g§’tH'_púe0hÖáA˜ºØR!(Fó-ò6ü ¾”–¦Pä”Òæü ƒ³(D‹û!Ž„ŸÂšù!0†ut†ªñ©HBÓ41ó«4kÇ2í©å!? Š‹O)ÝΩ ЀÒf‹|Ø«,Xà€£TÒ-†üˆE-aÚ7VK/k̦Ȝ¤Ñß]ô–ÄrÃ4"¾ªü/—­jŸQMY°Îë ¸4—aêY=H·¶¥úZê^Áªö…º‘õ¸ü5‘áOX®œ‘‰§[ÚR«úZ´uÑ@õªöù͉å*€KAAa­&_(++3­äS4ñ­ªª ƒ…¼£ÁÝKÈç¶øX|*Ïc°¦w´ KÅÒ ‰Ï¨pJG{.¨|¢·Àr“)vnš`KÄ´üKÎw)yùF03?< kŠM<Œ÷ Pè ˆ›ø~î€ñÜ[Žw™ì. pÌ€…„HMæèás\³í¯üX©LíÍ!JåØýî`Û=R`^Wšdx ^ãn<êxžcI…T ¶}"ŸNr$>¸WÆsTI0 l;¤¸–8SÆÛW’Gc§ƒqå;þ_Ò¿Æ6îQiÒ>õ}%w£_©#ƒ16J‘œ1¶™Iã¯;§·¤êiG{G“ü|°9…,D2W{.ã–;팳Ó[޵³!o}@ÇÙ)™·’“'⑺€`t‰°ÖLF‘Ó{Gxñ §å Å¨î¸ Aô¦“ç]K"(3¥ãž6Ò¥®$ ÇÃJTWõbËæN#9Øž‡Ž[”f…sí¹\.ÌµäØ¦„" ¯DÆqû”Æ= í¦+òù¤¡dù¼‚R£Ø%N•â0B'f’ØüÕfæµ\R>on°i¦iâ!­EN/kz/———›¦‰Dh€æG©èi²A -òßòø\ì5Ès +"U ÷Öz8Û¡ EÓ £ƒÚÛÛ1÷(ñƒ˜¥¡¡¡Á´ŽH6 £¥¥eÖ¬YcÆŒ‰F£Ââ[¥SP¥f¢É‰4žp3“úŽDÄK£œ½cö8ú5½e‚Ùš\ð„]ÚorfõôÊöP_6*⯦ï5áö¹Ý>w¨"4°¯ï$³­P_6ÚïY½õÒãò—”ôµhë4áö{ÂmÉ••ÁAÝ™4+(((¬yƒÁúúú¡C‡úýþx<žL&1„¦ieee~¿_óÀ»€IDAT8Ô‡äùðY8f²§Ø8)¤d+RB+MÓpr ù -ê’3¦±=/`íµÁ‹iË¿Ñ`gâä•Vƒ…µÄ*-ÝK®Ž™¿&£9¯8žÏ(òϸƒ€oqB ZPtÌØæ‹Ü %Sɱ”‘BÕáe 'R¬Klg@øOZÙe6’ÅÑŸ„|šƒ{àø²§A>6çSc{íÕætq»åî£ÐŒ\Ò]o—ÜñFnØ‚¥B—ô •ãØp"Ÿ<2ó‘ìåp¯LˆÛ@!ᥦ6ʆ—¬å‡I2Sß*XÀ”½©eÑ⎂Qáœþ°žôÓv<%0:l!0Z~Ø”Ýs¬¾¾?ˆ3MŽ’óG3RÄÎíâIÑ7œLä\ =TÚrKü”=Ї—ÆuHmd²Óø&MOÍÆN[‘ᙽSØEÆÙG¡.xÝŽƒ$°®MÓìz6ÙFBN`q#ç×ðAœò:‚…wñüÒ€ ò‰!éA\Ûø’å ׹̂OÒP/I+Ñ[Ädñ*hùA”RCó.@›aùfjnÂÊ`Q¢J麞L&³Ù,UH¹ØI¦iú|¾ÁƒWUUáí&[¢Ã‹DF-E=Eci¿01™`gÒ+ '6 ¦iƒA´Ô'åÞÂ=Ñ(3N™°‡â•±X¬¹¹YX§ô躾hÑ¢_ýuàÀ‘H„RûHÎGÇá]¢y+óaw7-±SÍŽ©ŸMŸÏWSU3dðMäqsýšÞJdZsF¦,PË¿lM®0#þjÎm‚ã3û—í©†–äŠL.©9—æz£eº ·Œ.æè^Ó4[S+[+²z¼î`Ô_[¬³?kTÝöÍñ%­ÉU9=íuªÂCþ ³1¶¸-µ*gd<.Uhpñ­&}]¾RT—̶·$–'3m9#« WÐ) yË©¨%_¿v»†Ø‚Xª1gdIcñLKK|Y23Ápkžˆ¿ª24X¥niq8ÓÖ’\»5wÀ[Vâqùñ×…Mߥ²±Ñõ¢6cXÑ6×ï ­Ü´Sõ*nEÞ²¦øâT®=à‰v§Ê k¡PhÈ!‘HdÕªUMMM”²7 JÝÒ!Lë„iî âì 'U9…ž‰ÏçÃÅgL9AY±0•,X“$ǃ'vóè*œ>Òª¸`G¹ñXškÖAlÀ²ºÐ$˜6€-ØGJvƒ’k,m™É’¯c Ë@[ø,P³íân*_ uœnòÙ$yzt=NÊQ?”GÌÈ?±›{›Üuá^tñeÉÿá6À?ðkhÍŸtÐOQÅ‹â±*Üc±ç ¢X~;6®”÷‡€ßH™S\ì˜-).F’Šë“ÿɹ:.€+œkžjÍ ×XÞ(Ó)ØGZל‚ìðOJ$yÈŽ4×¶`ì×’DXP/“¢~¸ÓNœ®üLÞ¦•B£ 1Á6Å2p9íE.+1¦ÓY v#$¯XÚ5~fÛ¤Fº=é Xô$Q]8"yƒïK”—‡jÊ7ýa0×’£ÉÙŸÈÇIáZèx£fíI´TAnÀœªàˆ®´&|×9©”š@³Îå.xÇá2HûŤ*SóI$‹||¦ÁGÚ0ËX©4iŒ•šƒk’ßÎÿ”ò=QW’Z“õ¸‚‚/\éÜj R©$‰i vº¥‘ÄÑØèF®Êœ…râAhÒš¬G/nT©;ËOÚ Šè<ÀØj|5ë‹ÖÖÖT* …ˆZ¢(Ê€¹ä1?)”áí4s0lìÒ¶>nÃX‚Çãá® ë°’‡Ò‹gJôZÇ R^ çƒA¤ÞøÉííí4YjkkK¥Rñx¼©©©¢¢˜æ³)Þ üÿüLÞš” U³í±÷GéŒÊïÚï ,jÎÏs-^4lH^«þMo¥[ÀçÉËŸÈ´€ÄyuñűEô§ndÛSí©ÆZ­hû…o„ÄÌ_©\û€èúÒ•+Ûæ¶&Wâçt.±´åÇ!•7Ç—ÆÒMøe&—\Öú³Ûå x"…çó„’™¶†Ø‚êðP—æ)"X³µya˜¹Xº9–n¦•.ùж_ÚSü›†Ø¢¦øbú3«§›âKãé–!•›t‡áZÔ<‹>çŒl{ª!‘iZ¹)2\Áúe­?7'–IôVsb9Tv¶^Ý߀DºUÑ[ kÂáðСCÛÛÛqZ±XŒR°›…·±‚™ü’&Ö޳IœRãÜ‘òeoE‰á¥%M—u~¼´& ùkÅö¶”ô_û v4˜GàNšTšÆ¶EÐ7ËÎC7Ò$ÏÎ/H>aíd‘ÔÈ›ÃN¬Hþ†`A܃’| {+KN”´íEäó&ü3wÒøg-¯×€}²Ë™NN²FZ9G:Ojb*-N£Q9ÒĽSú†7±–¿gŠ›‡p räg|âUj n*ÜmàU“в?Ý®+ƒ g·7é^‰˜p´`,ïõ‚ía¡Ò$3°Û!ñ³‰D=4®ê¤.ë”U‘ϧØíœwX^”d™vÚ‘WÊ®gê•’iÜàT8ȹîóS-¤1S",£Bx‘¶y@«ÝB;,o>ê/ÀR)“$<סԔv[Æ~JWJcµétV„j„|ªË®4Ãv\)ïtÅóKòÊÚ{ ׿`1A|À´­Âönâ ÁoÑòã9g*u%;«Á±Ý%a„È>HD5—Äq¸àÃöG©ûÛM×>Ö½,ñå½r»Ý©TН? ÝIY&¥¾,l'áŸ!ÿ€ Iœîáêâ“yJ&Áó{š,E ŒeÒ’˜Á޵kˆbǸ҈Œ#É1> sJв–`‹vš¦UTTÔÕÕ/ÖÞÞžËå‚Áà’%Kð¬$ûì,³}rÅm@2"é 8ÒpçØå; %‘imŠ/vkÞÚèð€'*„+‹¯jŸŸÊÆc‹kl'”ޝ¢"8À¬ž\Õ¾ ‘imŠ/©‹®a_¥[ó¤s‰d¶ÀD¦5“K¸5oÄ_ÙÙzG¡FGxÜHfÛºev k˜{«¦¦†Ž jllŒÇãÐù '&$^L³NâNM¡4–Z‚Ÿ`…)Q€ÅìpšV, 5ŸfQTbLìóZ°Ò[›Êó¹X&{ŠÓX1“uÍ•#ò#)¤0=Ô^©Bú·;çtø /V*Oå;,ܱ©4É$$‡_æø=M| 1eŽÕ¬}(öÊé2"È(„ /²ÓоòïXS»[(í¨â^£­J$/9;î0ØUç¨^ þ)9óœÁá–À½zêq…š¯P”Š•$Ds s!ÐQ GiZçQè%¿!òÎNÆñ.OºÈÐáh®d’´Eš€x¦• ŽÇ2Øé3úÌ=jÇÂ%“°_)±NR“’YÒ˜p ’ô i›NÅݪ¡ÀàãØ³UTR­MFqŠ|VE*¹Ã–Õòw‰Jв·‘TIÃR¤1ܱiÍLc»¹ms=ðZÓ¹“ޝ»¤¡¯Ãá‹Ûˆ$=jY2]ŒZâXM\h’NK¤ù×?-eÑot»ÝÌf³´ìGY$6ºäËtPßÒ(ؘ°UØM–'Ád'/£´Å’¯4`èX˜ŸÂá)™‚Èp^ÇãÓ+++ýþÕ{¡0qX"‘X¾|9„ÃaŒ+eúgæ“’ÒõREø]Ž4·cØf§`·¨9Hޯ魬žžx S€nn…³+(è-s»¼Bî°¯"ì«(~W[j%T•ëñ›Š`½aäã‹ÛR«$2¥.:"âÇìøîêȰxcKÎÈÖ—úíËð°xº%KybÀZ¹Ic|q<Ý‚qI-°\­:<„— %¹ ÊuuÑ‘ôeÈ[N;;%yMd¨%$¾êËGÇðDêËFÏkø:–nê½5¨| }ö¹Cõe£~]õe"³šBB+ hŒ-jN, ”­~tKb”ˆÎÖ«;pk^°ŒSAAAa-‚Ûíƒ555˜+N‡B!\EÄØûN•Æ'—R`‘ɶ …¬ú®ÙlV³¶%â´yÌ Úiþ‡[çyPÀçá¬ùç4ߢŸh øCsPô½…mÓ ~ƒ¿r—[°€.w® ëøBŽ&ßÒ<’—i¯²äSI^œäåò4Š·rG‹_FŠâ¾_!L¾™cŒ•ãC)w í¡'VsÉ¥Ói46^m&²óRÜ™½²´ÑòIFîg ÛFGÿБz0ÙÁd¥·¯¾t‚˜¤XNÁØÙ`ì7c(™+á„(¹[DRÓOÈq{½^ŒM   .¹«pvÎ8‘Gêf ¤­äÁ׿t#ý_ÚªS¨G^D«ÜU.Do9Ú˜d…´'œv5Ò÷¦/ã¨m2•G9Ár¥¥öêPÛ…ô/òé­Bñ›O‘Hl‹¤“í-dofþº…4ØÚ»ãXÍuR|à%{ Ë.3§·„´Ëϱ@©¤f•®—˜#GæÂ´eàr¬ýJçë™,(ÒNÉñV–^—ŽÍJï_ÍJ…Ƴv¢rü~8&Þ¯B ¶GOЧCF‰jŠã6ý_bv„8áV˜˜Þâ o`1b™Lßb¼}5k¯%X …¿a!x£aÑh´¢¢']ÉdŸÒÒÒÒÔÔ´|ùòGfªP±?Vå‘–ŽLÛ9¥tðR Tú5½e˜9°1YšpfÎ0uMôŒðÑ@uKbù’æÙšÐ|îPÐ[V¬C £RÙ8H{å"þšÆøbü‰Óx!|î@¡/;dLüžð ò1†©#½Ï´$3m«Ú¸„›$IfÚ`5éÓ’‡òi¾T¦7Í@Né·¥›tO"ÓÚ’X–ÌÆt#°ºÌœñ[™åºÆØâXª)ɸ5o&—Š¥›Ú¦Ú©zu˜¾N7²Ý.IAAAaB¢Ñ(æ_hoo¯¨¨hiiÑ4- Òf]›|p·€» hV-¬ä˜¿¡8/amÐãιÉI(¸ƒŸOOçSCŠ«¢ETÊFOJ¤ÌL+pŒæ‹öh ÎâI0M³½½N{ÄIMǵüÝ‘t£ã\ŸOû$·GX$ äŸÉMÓMÓÊDCqÈ_hµ»ßf~he颎W5})ÍhÛwV|KiVèübÉ~xãRsãžDtT¸Ë!Ù²`f~J&iÿÿžWDšŽãò‹8 lOÏÀBÎ$Ú¹a´EÓ´L&#íh£H´l6ËσÃbu]÷ù|h¨…\kIc’üÄáJ®°mI3m(ârÑ¥ëÑD¯Ïm,SÞ½H;ïèGß›HÉæ¶Ê­Óú¶ ‰_Œ¤?¶‚VhdÓl)É ‡ËG<ø,—Ëáæ ~&†Ôš¦•ƒ åçÌïn¼/óºÛû2×!@¤þN¤D ${ìà Š(á«t ÅR–C*–8ÇI»2%‚FØ‚õ(|‰ Ï3KæÊ[ÊÑŸ§ö-r?êÚÇaÀÔà¦ib\³pŠã]%E3ág_lŠtaÞ(Rs›ù!¨àÄšŒIäC ç‰øÅ’m›l÷*“Œ‡ÞòöŽoR£CÖ’,Mê8ªóÑ@XçJ½I0VXÌ5æwÇ©-'ЯÀò¸IÛ)_•‚h2aÛ<‹?ÑÏ~¿‡&!mÞôù|^¯W×uǃÕÁ>ˆ‘\‘HóÍëºÇñÕƒ”!*×;1„Ö°°&¦ ð@InfÔ¦”bŒ«ˆÆ+ÓÊ®H5§c;‹ßLщHï×ô–…¼éuûSÙX*çôPwPîÑ|m©†t.žÌ¶'³í͉¥Ë7 z‹eV2MÜ®< ÿÔ 9eZ~ª,QøË’Bp5á z˂޲ÊР¦øÒ†Ø‚&–”J7t ¤ìÝ•\ä%ùÊ90QNYØ’„wD{ªaYëÏN¢²°mÍ Tµ%ZË«ÃC1t+¨%5vª^ÝBO°Î k´IÐï÷———·¶¶VUUµµµe³Y:KHt•Û¢ù,ç|oϹrõiZ Œ?‰Îä0u—¦i($R& Bkò*ÑO‚ñ\ô+eÐçžX|XEÖYò4«Ã§iš©T “aÞYò~ùF*³ÐÞþÙî#ñï‰ 1ÙB7Î}Q3Ž‹¥…üG ¸Ù&;QŽœCtHÌü3à%¿‚OˆM¶dMž'w2í4 /œxGeJ$z"ŸR$ãtô·y"nÉ$›pŠ¡¬ê<> &“É466ƒÁªª**œ§rÃ\.W:BБdŠAz /àÕ‘üR¾×q‹%霺 ¿L¢byS2Wȧ&íE· q¢J1m³Æv‰x˜Ð-¼sI‚96'SL'ØG 2!éÑRáí%Ù†t%ï€\`‘Ï Ù­Îöqƒh5a8"õh^ˆÐD±/ó8>;H=lÁ†ö"ØÁyv5Ú I°µ>”Ijɨ¤®*i@z_86"_H°çò/½¥øõD>ŠüdóÜ ìÆÏ•Àù2nÌ|"Ø 6˜¿†-Ž=N*·#~CaÝ`Åœº¬ó‘I~i@o°|íoÁlñÙl©p*¿ç›¸I<|\ Ðu= ââÖ«µµ5™LÆãñT*µjÕªåË—û|¾@ €¯<úÙÌ_îâªæ]CØÖØøh‰Ú㋦ôº×lù=»€ß:»)¿q ŸÓ[.ÍcèiÃÔ],P+è-Kec­É•¡·L"•0",¢"4°"4P7²Él{s|Y2ÛÖ[€‡ñ‚.ÓÌåô ?Ê#z¤Ý”½Šò`]ClAVO1¥¹t#—ÕS>w°û’KãÒܺ‘Q½U‰8–ˆ¦ø(ÔU„º]>Â4ŸW~&]VЖlhM®,Ö·¥V@ Rëd‹7‰b@²¬xv…~Ü„)EƒÁ`( ‡Ã¡PcCøŽŒRJ“¦³vßç^èóLAUÒeҬݴO4m™ª8塱S«$ŸŸ“)À¦¤ô\{JGÇ•KB7’ûäóù"‘Xiò)@ @8eP¢V%=ßÝfÿ†ß+l«Í’o AR äÇCA¾¯‹\ƒnwéb-?¶½É+ÓØ‘íx™ä>¡;Áý>±¦ JÁŽ“u R±ü Aþ©¾ÔâDÙû0(EÑJbð‘³K\RÔ$äÓLdW.ëÄU)#ñ_˜B¶r›ù«`ñ­<\Ë4MÔ-½OMv:ª°ÖÒ0þ—> 23™ ‚1Y€Qó|xUUòþXR¾ª„>ŸÖµü=м¨øfÌ ÐRWˆmnÕ¯é-·æÍê霑áôDY ®)¾´=ÕöUò´PŽÐ„Û0s™\Òkq=±tK¡‹]š'ì« x¢¿®ú"? –0M0ÓŸßJdZÛ’+«ÂCèKä\z0í}‡Èä’ à·—MÀ¥šZËyî-ŽîHð„céæÖäòêp×Ól9ÔBO@udmDÅó1mOøÜ¡t.¾´eŽaêAo™—Qx%Ö«d“=›Í¶¶¶¶µµ :z–àëC466VUUu¿…þœ£ Ÿ…è@  †¯wª(þ'ŸÖãD*•JÙw`ñY,}S:* ϘíÄ“ôYòÛ ë°m{âG"Àq®Ì¿ä4F£@ ‹áü¬Õ`¾¿IZT/>½³“2‚ßbæo0±7Íž%uqš˜ÿcçƒ ßŸ´ƒoËÂà#{ëÛ^`Þâþ2™LCCC.—«¨¨ ŽÉî™s¦Ãñqš-·Õ iJ»yS$—]·Ü5•L<Oyy9îþ ¿÷má¢:wËÍül5ŽU о=“;oPÀ-—¢·$ÇΞçÁ5RÉöï;e«…RûKå“ÈsÜpS¡º“%HbðsÖ°¥mÇ9òµL+×ÛíÆLÌÄgÆ5ˆü Mv²€F0N©8‚Z-‰”••…B!·ÛMÛNíWJV N¼]`w¤íj—¸-È'¹¸ò9ÅÌû&¿ÅÞSxäwòr¤î)‘bd‡%î`’†ôð¹yÛwóaD €Üo^ µP, ű÷qC%9i+q+Ô)éA*l¯]Q€S°—f/Vj/»Ìôj&K°÷/{·¶@0I{öjÒ5œñ±Û¶½Êš-? 4¢ågÈårŽôXŸùŠ^[¼#ðÁV°W‰‚Ÿ‹ôJlƒ'½€4– ÅV¬ð|‡ÒÞ|”Y{œqQÍ4MÜ)I¡ÐX`6›Å<\‰D¢½½=çr¹T*µråJÓ4ÛÛÛ Ã(++Ã0R°6J „o+N>ù'G;'Ϧ•’5â‘d2IŒ°EyÛÎ#3ÿx/"ø¸cÆ›[X1)œPàîh?Üi”œ1ÈçÀæ©Úµ!@RÈ—„›´ä¸:òÔIù>V‰¦±³6ÜIÆÎ‹Ç„‰|ކG‘`8•t#°óé Ÿ<å–läá– ‰G §ü~?åéãÁ¡¿AÉ´í ’:¸$ ÿ“Û¡x¯÷“ õ#IBÈg¾ìaG¶ÉKê°R‹tm.?†rš¶FLk÷àe$0Êxö(‰Ëp´|a‹ö²KËå4­Oþ#ÑLÜüì/8©Êœ:‘ú,¿˜· ߀&Æü3Ò["Ÿ"¤7 ØF{«I£ËÌßV l-„_Éû¦½p‰Þ’r£xxbÈ$$æœ^ œ¤Ä ü¡^¯×tJÚH&!‘}&;oÇ´Rø™V€ÿ ,¹!Z!ÂG3 ¹¢˜q¼ŒBƒ9'åñxpe( 0 ™Lb9†aàº54U_‚|šäØ‘%³”r®êéÝA^÷·ñ[ýšÞ ùÊšKÓ¹Dò¢K*‚õfCûÂÖäÊÖäÊ"%T$2-‰L뼆oð›h ¶-ÿ–d¶=ÙÚ.ÝX¨ûM oEKrùж_W´ýŠßŒ®Û!ꯎ§›ÛS +Ûç¯düHÔ_݃‡ôq¤s‰tl¡ý{·Ë[Ãb©‚ÞhuxXClA[rU[r•ýúîHôFk#ÃWÅt¨yGü´bºýËÑu;Dýu ±Mñ%ÈF@Ô_³çž{Ž3æ¾›ÿýÅ_à—ãÇ?묳·ÎœóÓìwÞz÷ñOÿwí„›N;í´xÀçó•X¯RLòý‘þöúë¯?rÛË«"›€ü“z 3gÎ<ùä“_~ùåõ×_¿—ñꫯÀ+¯¼Òzë”SNÙa‡n¾ùf©?ÿüó'Ÿ|òÅ_¼öÚk©z[] ÷ ãóù‚Á †är9ŒY 9_§&Ò|Ú4Ít:þ<ØVnùü›Ør9 ßu§ó ‰K’Hb¯hê‰?ñMIviyøO.9óܱ¡ÌÜD–ñ©’\±%]à¨Â#H$Z³µûí¦-@€&‘Üã äÙ¬H·’· ù™D ð¥l äÁ‹Ñ'Ìår eee˜Ê. ’ùƒÌüˆ'»´’¿Mz¶’¬Yùª¢Ñ(i=CÉç—¨GGÚ´2ûR³Ò¦n®öé;§Y ›ÍÒaXK1Æ[w°ÛÞˆ¢QD¢y<ž\.‡ô FÐö%l"ÈÈ•F’Ö£˜“…{YTC º@|ÓË»³ó&\óRw“,V²g`ÔÒ®7Á<óàÒ0ï$-ý‰1†•œ+ˆE‰Ï¨5‘]’ ¾GFd0Y!ÉøÉ/¥½¨¦¿@“³RH þDço€µq’ö;óѬ8íb¿@ê&E")¸IKö‹í‡ÉΙ%"Q»C>'XÔ’$˜–Ÿ–Èd5r#ÄüDŽ áæaäŸmÇÍ•óô†rT#ãB·yºÞ¾/òwËrc…£]$BÊþ »qÒO”=@ZÊ•Â<Á ¥ÔlG+ða“Ç–reò‹9«%™…ú¡Ô–ö1Dˆ8‹Dl¦D R_£ÿc.vi`—z·–Ÿn÷YÈOßF·Pî©ìöC+”TXç,Óû'l8ò#†/_.xH"õ5ŠÀÅÏX_¿ß¯ït:=dÈD"ôe(¢ šµÕÈ?­‚H.>òƒm¢Å5Cë‹R ØĺþYË¢·Þ2·Ë›È´VÁé§ŠàÀ·²%¹<‘iÍéiÓ4„pyÝþ€' üªòU ˆŽjN,Iç’—7ꯩ –¸Œ!•›´%W%2­Y=íÖÜw "8 ìûP«Ž šK5eõ40ˆ®ðDÚR+q‡ Ç(ÖEýµÐ;Vµy,՘ȶ¥³ ÓԅмnÈ[Q åª xÂ-ÉåÉL[Îȹ4·ß.ü–¦ª;’—ëÞhS|i*Ûž3²Àãò½å\íEE¨Z“+rFÚ­y£þšªðà¶Á«üÞ+ˆ=ùãÿ¸×^{-j²ën»wØ{ízpKKËã?¾|ùò×_]QJ½J1 ©ÑGµù曬¦·â™ËðD;¬W71yòä3f¤R©îU#GŽ\¾|ùÈ‘#»pï˜1cÆŒ3}út©à„Nøãÿ¸Ã;H ÔÛSPPèèõ½…¹·r¹\0ÔliƒJä<€E¢ánGb‘ìû¡€/‡bB%`?†uØäû*Ü)k‚…þ¤äŒá®ŸD"áv»q&Ø& œ)š¬“!ñ `²# %Kò¯è¡¢À‚¿, £ÛÒé4Ÿòã$§Wš”K­ÆgÌvþ,÷ÝÂ\.ÇC¡oe^^#òÂÄù1qœ1áâQ-$Ê “ÉhšVSScZ™Jh–l/Äd[±ìŽŸÝG"Ûšò½jîÑ7vAÛ:ø7ö§£G‡ì³¦iétšöÖqƒ›f×§DØÍóDÀI³¥œãŸíœ¬½"ÒO‚ŶØ”›‡4° Â[Aòÿ¹V¹ûíÊWœë|ZÙÑ`xvií¯!ûSøÊû0üb“q÷ø†"ÒÍ®pû£¹fìu1m1tÒ¯Ò¨"Éì¨I½:!Ÿ,“”&Y‘™OKÆl§~¤×Xk$9½8(W‹–Ÿ¸Ýql—ô©Ùvˆs³¡ »ZHŸŽ„‘]ÿ6!ÇG×ãåùk]R2¯—T N“ÑëÉ´VbèÁ8\:ëØz½+餶éj GQ‘üë|C¼Ød» Ýnw À'âÒc à щ½Ø}ˆhã±4R‹H‰üìFÈ-–7A¡ÎR:¤çJè×ô–Qæ¯mŠ/1Ìœ&dQ½nmdx‡…DÕÑ@^PÒèºøŸO$Pt£™&´šð°[¶)!Dyp@9Ënn‡ô¬Î~Éás}á`‰I’Þh ðÉ]–Ü’$T_6ª4AJªQXh¿%Lßøýþxº%™iBÛr“mÏ9çœ[o½Þ|óÍ'Ÿ|òôÓO/¥^P‚I€­ÑŒ4à—[¤sñÊÐàî÷ÌâÐuý±ÇëÕGÀV[m5mÚ´­¶ÚªË%D£¿™†È"ÆŒco Þ®Ž‚‚Bq+£-D‡ËËËÓé´ßï/´Ñ¬ Oñz½@“>Ðú!qES7ÜÛù“]iŗ†ÒTli›ÁJ]‘ÉdR©Æðg2Zy.ä-ð/¹?Àç£Ü¥ã¥é>”@rÛNÁðË ßI¸93ÿ£c!RQ¿Aƒkœœ%n?¸É«¦¦†ù’®„•º%Nã. {>o»Î‹ˆ¥!mJ™˜hÛ¿˜ˆ-´(®"©¡›CBñ,QÜQq,Y:È’_ÀW³éé”o(N' !(“ä”2¡ Äãíq"Ÿ}˜ { }E!òÙÉñ,F‰l^sÊíùD›cQ’Ø\3vÎERš4bˆÂœ©T°Xm\*ärC>Á5ÀEµ[ô½Ô%¥ëí¢rÆÊq丩X>ºÚ‡ IuRûJÊ,Þ£K‹«¨S%S]ÈŸ/bÕšmh‘§›lý£<œÚÜr{í$fÙnlŽéùx»âŠÎkÁ£“LÛ‚¯°ð7{Ï-$ ”ЋíàQŸ˜yŠ“;Ÿ˜Ÿ>ܘ% Fª)§ûÇy‘¿hùì=ᕌU:¦}²Èíeg!y}¹ätW&“«›#cåv»1‹¢G1;j&“1­C*ñ{¿ßOg,špªœÈS`½Ìn]¤öÓêW©]N­Óå­Y”¡µ%úZ…¾ïi£uiëˆú«5á:묳è§û§žHŽb„Ê=´ŠàÓ–,F:u¥?—F7ü|É%—|ÿý÷º« õBbËNoQ<|‡(òê*½J¯E‰5-½üÒkª ðû’>´"‘H8öûýöHûÒÁIZüÔu=•J¥ÓiJª ù~&e×"ƒ¦}9šlñé)Ê€¥ñ[pF:O×õD"Á÷ÈvæŸ+òŽì³aüR:ó›—)9*Üü¹»t±4¹´;{¦µ{Ëçóñ°µB®¯4 å…äeq·Dš—£Ù˜¦*++q«—½v$^&“Y¶lÙªU«Òé´°"¹¸TüAv™%»¥ã«²Ù,mKägHáZ¼x+KO‘*®Ù2 'êAòâ¤åBV*ûÀ]8R²feŸAÏ$“Éà댋a÷!é'ôë$’Ú.<5´ÝÕÎ(qr«$ãá½’—i¿’ßb¯?•d¿ØÑt¹º(n‹6`óÃí*¢§“J¥Ð »…p *ÐÞ—í?Iê*R”}”dØü'džv,–zi[âøhì8‚Ù%ç8j^êŽ+4¸² ´ž²¹‹ŽF{p¢`Åvô·…Íí·SŸRá’¢ q©\6GÕ7¿R.sìqŽJÆ!+™L¦Ói;K^Š%ã—RÂra{çÒŸ;ކ®·Ò³0t¹u|—qÆ%,Ç>߀ÂïJ¾ÄE×ãăච·ÃÛ”SR>/ú‰GœQ£cbzF]¥R)<ᇲËc•5Móz½'NãɉØvmmm­­­‰Do¡‰J¯`üI²yIÛR7óéÈî{^…8D¿ŽÞ—æ© lK­ì0$Gá÷ÑÛTµëËM³R€¨ €‘#Gúý~ ;ÿöÛo—,Y2hР;ï¼sÆŒét}ªþóŸƒ úóŸÿ¼xñbúòÍ7ßt¹\Ï=÷Üûï¿ß¤R©'Ÿ|rÒ¤IûÛß~úé§êêêÃ?üöÛo/+“lEª<¹„ç裎2eJ<;vìõ×_¿Ç{ÐÓ¦M»ï¾û&Ož¼råJMÓ ´ë®»þéOÚxãñ‚'Ÿ|ò£>ÂAþ÷¿ÿ=üðÃ7ß|ó²eËvÛm·—^zé½÷޻ꪫ,X€×Ÿyæ™ápxÈ!O>ù$~cšæë¯¿þÀ|÷Ýw+W®3fÌÎ;ï|ýõ×0:U/‰Þ2 ãÉ'Ÿ¼ûî»çÌ™ãv»·ÝvÛí·ß~âĉ_ýu èl“ÙèÝwß-^÷§Ÿ~ºÄæs¬é£>úÀ¬\¹rà 7üÇ?þ±ÿþû¿ôÒKW^yå‚ FŽyõÕWSYÏÖTAa-M1À ON ~¿_0^£³ IF*•joo7M3“ÉÄb1< šÎ”Ü`ÓY$ÝðK ³Â¬Īðé#fZ¥?MÛ†;°phš†Û%ŠÏºp6‰“B‰k Ò8fÚ‚¸ßÇ3™ ¦€åG#ÓZ.—„oAPvöB„ˆ`î7ÿ¿´s=\‡À¸N. E¬˜V¶&ÌLdZYoQ$¯×‹¬%M¾¹sE±<‰D"hù»ê4+µW£™ÏåÙsÙ"³€[KÀZ–çµ#%#ðàNŠflC$Þˆ¨ ÆYØ­š›I…¶-IN’Ð6Lª±]R*šñSá¨^!¾qSÄÕJF)í±¤\àÀÉÉ6 vÈW8¦+5MCëÅ(Þ ö^&•Ï]>©q¹Ý‚ŽüˆBÊ‘ìäDÁvØI½ƒÓ—dä+ZÊ’m÷„yG IÛ M[˜å{â¿Éâ¹€m`”Ƽžì3ó÷…9º‹|Pr´UÞsÁ‰‹‘L´$yò|½C8©'rа,X:!ÇìÝTñ$p»âÂØå—ö°›N 46rk”lÒÞñ…”±ÿ©åïëtÉÉkaa‘z q%vÎKâq4ë$>>Ô“l¦-•k.€¤|ºžúcQ ÃvȬ°Å÷‰ü=ŒÜ˜%0óÁ_m’V5k%V3óyOn~ô=®Eù±"\i»%ØÊá(©{ IÂãÈHš•VÒd f8¡3UqŠB£‡Æ2uÿÈ­U„¹´p¿!PNz\zð³Ùl<ÇÓcÉ–ht²ó†¼oòÞÍßYÂZŸà×Pì™5B§· *4¸*4¸¯¥Pè>w¨:2Ôãò€¢¾¾~Þ¼yøÛÂ…  4hРiÓ¦½òÊ+øe2™€aÆMŸ>}òäÉø%ö„ÚÚZMÓ^|ñEüòöÛo¿óÎ;‘÷ihhxì±Çâñø¿þõ/I‚_¾mØwÜacÇŽ=è ƒžyæ™?þx¯½özâ‰'N=õT˜4iÒA”Ëån¾ùæ³Î:kþüùûî»ï³Ï>ûꫯ~ùå—cÆŒ€ºº:]×ñ¹¡PèÙgŸ½æšk6Ûl³%K–üßÿýßwÞ¹ûî»{챸­¶Új«ÚÚÚêêÕ»)s¹Ü1Çóꫯz<žýë_[o½õ„ yä‘^xáùçŸßÿý;U¯6Úèž{î2dun»›o¾ùºë®»è¢‹^{í5Ã0î½÷ÞÛn» ÒétH{uX÷Í6Û¬ÄæÃôxËäþD"‘†Ãa¢“ìÍÌC0m»BÀæHhù{¦ìî:Ý%9Ï`9~\NÓ"7ÉÆìM,¹Ýk²;‡H‘¼È·'‹5¬Ã­ør=vI‘`‚Zæ\ÃÉÔ¸´X |°ËOtY6›Å¥~]×¥m§¥¸"’YPhlqt>%‡P°˜$?J‚@iã%ƒ„ü‘Á®Q€ÅàôV¡>ä Ò½R—in–¦-Ù™Ôšm.—‡7•YÈ€ù½Ž¦Î[ÍÑž.rµˆú¡ŸŠ¿n$ÿ™Û‰¤.éb‘Ïpq­JôV!($ý2,P:ßÀ±pG5sˆ¿à­ Ö;KØ¢c4+1÷Qo¢Q‚“…lÞ±H{d"X¯†"¯'p²s{­íŸÁ̉­ÖØÁ‹\]Éd²µµs¨Šjä¯%òùXŽÚ, ¿Àï÷KQáÜJíï/é b£L‹Í§9 µ,ozbñJžiN°ÓoÜn·ßïÇ56Ã0ð}Ä'Kxé¸2™L"‘ÀˆW:×Uz;k,^žó°öaŠsvRÞCè6ŠÓ[ý}s¢‚â§/«=£‡Umò–Ó—<ºª¹¹Ž9æ˜ &H÷žsÎ9矾ôå>ûìsûí·ÓŸO>ùä—_~ÙÜÜ|íµ×â7/¾ø¢}wa&“9ì°Ã^}õÕ'žxâúë¯Ó4/½ôÒÆÆFø×¿þ…+«±X¬¶¶vÛm·Ý{ï½ ¿ôÒKXÂpË-·àç\.7a„—^z‰’»çr¹½öÚ몫®¢'ž{î¹×_=Éà 7àq‡§žzêQG5bÄLÑÕÚÚzâ‰'.Y²¤Sõòx<^x!4¹\9µ½÷Þ{äȑ믿þ½÷Þ{õÕWc­»ÖjRuX÷Ò›[ð®»î¢?ùå—¥K—.[¶ šÍfo¿ýö/¿ü²©©iܸqxÍsÏ=×K5UPX+`Z÷>ŸéÜÐ$›ÝåÂñÿétzÕªU.—«¬¬ Ù ‰’Üo)1.—œÉqâˆü}R8]£¤Ýü2¾¥KJÏÄ$ía,ä$ÓŸ’óÀaÛÃeW&yÈä®ócÔìûì8Ëc0p.ÆS¨)%ñŠTUÙ`ç`¢øý~GV«DÕQu|K0—o3á×sî‰ÇÐÙKæsƒƒúW¡è2NéJ,†µÁíÇ4ÍL&ÓÞÞÞÖÖ–N§ñK2»’@—ËÅ÷#ÕE1ŒvÅšùQrŽ66þ!™Øz½/`ÜéJªW‘»$N“YÜ’;„cu4{`&/_2<ΰð‘¡Ð Q"ìÖb¯/7]‰xUäA|³§ÔÐ’µ8v=“mÝ-ôP»–JщciEÞ#þ¶Èg¢1? öJ#ÿPB#¦m3;øõÐÑjXgÕQ ¿Ò…ï°SH²Iƒ!ï…ʤAÕ¾Uœ—àHºñ±‘†)¹iš”„ãAêSFátŠ4 óÔWÅmÏ0ŒT*•H$¤*;¾î…²‡[ÿh· Á>5¢rßÈÂÚŠ¥a<µi%ƒ“fMê…$‘Þ ‡Ã‘HÄï÷ƒÁ`0èv»Óét[[[,Ãä\’Ñò—m–4òsÏ@­‘bÝìqyú±µçZ½¥ P+WþvâaMÍê£qžÇ/+++q‡ üéO;v,üñ7Ýt躾|ùòAƒIw}öÙøá˜cŽAΨ¹¹yÒ¤IÇü~ûí÷ïÿÛï÷oºé¦x e^§Í†P__Òétuuõ{ì1hР¶¶6—ËuÅW©o"‘ zhÏ=÷Ä‘HdÈ!‹-jjjºãŽ;îºë®®Õ«¹¹èƒ:h—]vÙsÏ=÷Øck®¹fðàÁtâX÷¨Ãº—Þ|‡Ãáp,€ /¼°¶¶6ÝtÓO>ù;ì°-·ÜvÚi§>ú–/_ÞK5UPX[@œQ0ÌårÉd’£ÞeÐó[¹\®H$R^^Ž9MéÀ¼XäŸB(ùÌ4o£°š"T§oLÛ’¯äºØ'µôhr 4äÏ=7)†°tz#‘nù´O¬I0»öŦ5aaå#Ã=kä8Ÿ&9ã åŸ*e:mç”d I„Ž]xÓbôHcØd|Úd1e¥X‰Úáevÿ”–âµ)?„ ïËs±xC‹ü h—Ë•N§›››‘K-ò òW¥ÀFþÉ<Ð[Æý¤ét:™LÒžb¢;ôÕ©±hË0ÙZW¡þâhÀÔS¨ûïŒR8›tT¥]rtÿìgáIÞµ½¡í×ÑOñ.ÉòÇ+êk$a!ϬâøÓi'Wg‰-°1b¥TVFL+OÈi±SxÛ Æ¿ç&QdLàÕ)E!EŒßÎin*§Ä7£¤1ŠfN$‘ô'–IQDµÐŽcÍi/¡½Ž¸‘¿Èð^\i§ix$>®Hwæ­ iØþ"“ZÁ^,½餑p8ŒAÓ…TÄÅ.R/þgq…뺾råJÃ0†Ö€&Q¨ÀìßQ6‰ £/¥¡ÀÎmÙ•,ØQš* ™eZ[;éUHçMcù^¯7 %“IÌ®Eó `ôbåbK-(MœH<âÅJ·ÏBMùÛ[{*z«+øiÅt(á¬C…^…a+V¬ ?‡ †ÿrü{)Ò@”+ÓŽìòl€†J_Κ5 Ž?þø}÷Ý×ï÷Ïž=û–[nyï½÷¦OŸŽðžÌ…9ôÐC±L ïâ½MÕ²Ä÷ÿÏÞwÇÛUUùï}Þ­¯÷䥒„$Mº ŒŠþÆÑ±‚Eœ±Ì8"ˆefl3ˆ#ŠƒŠ A)‚”PB€¤÷×ËíïýûcÍYó=kïsÞMOà®?òy9÷œ}ö^{í}ÖúîUŽRGÑüqngÊ”)|ÛᇾiÓ&¥ÔÚþåÏíx`Á”Svc\]]]K—.]±b…Rê/ùË_þò—Ï~ö³ííí_úÒ—ðÙ=œ IÇ^ýô‰Ÿ8Ä’]ÆfÌøß æ¦¦PiÔ½>ÒÕè"­u2™'úl6[WWÇÕvT¬¢¯ÂŠ ˆŽãŠÅâØØX]]]GG‡ïû©TŠ@äB M#:ëÖPsu#ŒƒóÂq~8¿¬‚‚ÖÔB2™¤CHú°îȸ€ kØ‚¶òý$uúOÛEøVB¨(ã!<í‚–(;† 0F"¸A‚1E»"t¼ 8NžVÊŠ7ÁéV`w 1@ë”ÿVcH)Ev(3B)2#yÆÊ",%Ð þ× W´a‰Øg|¿Hä¯áøfŒƒã§<Ï+ äĢnx™ ; ýD[ÅÑUZ릦&Nï%€-óHâDKOdÃTî‡b/Ú÷µP³é‰cl¤—“2Œ‚¬¶GJp„áþ X-0&¼“_aÛáªtZòžç lÎDG7›päµè·/,sa0ããìOAϢŮ\û›hÅÏFdüpŠ7aÌ;—¶Ó¼÷¬èfžGÞ4õ‰ˆˆƒYÅÞÚÿå%CrÃñ.Á«‰á-/IÃ|f¸ oú,À¼ì ßþð1‘ñ’ì¼(¦€}ˆDfqì z8Ò¼PAC\Ô*mó ÏŽeUÅôi8T K}kèt_¬5 )òÊ"+H¹År%œ4ÅÜyán ‚â©H1a8V±ˆcœí^ìb»A”âÄb7(oYtPÃ[ÅÊXnsyR¼Oê0Bg³wÝd2ÙÑÑÁº 6‹°‹S¥Rá:øÁâW ¼ÅŒb Ô!‡,-\+†™ÀéºÐ£ÐEyÖèÊÊʸ¡U‰ „Û0HY…¿ò(8whÃîáʵ÷¨ƒÞ+ l~Ž{<>Q™è)öî;Ÿ©–ì”beíP~§ o åw*¥š³ÿë/sûmíÖúŸÿùþûCúÿ»6Ã"›7oÞ“wår9þƒµ„¡¡!fòìÙ³'&&Î>ûì‡zH)õ¹Ï}îÓŸþ´ÖúÎ;ïŒo™ƒõlóµ¯}í?üÃ?p‰C¥ÔÀÀÿÝ××GÌŸ?·Ç¸nݺïÿû?þø_þò—?üáýë_Ùõì¶ÛnÛ Ð'j‚âǾ/¦o_´F5:„ˆ4*{Gйq¡…\M;ìðEë”`2ªÀX(Èò™˜˜ =*@g8{” ;¥&I&“h ²ÁL6s&¢Âî<¤`QnlVé8ӪйY©µ=>hoh¢8mT[QÖ®˜Ö­I/õ\)–ÜxT€•$‹E3OÙ£-Oáã È@4Û'lŠOfsà ÞÙ/u^Ñaï0œD§ýŒ¦)úhµ ›_4¢Ã6³šÄ¤û¾ŸÉdzzz8Šg-ç˜á;EQ̈gŸ¨g£‹²À, e¼DŒå»Ã*q?Â+bu Ãm+hnÊ„ýYÿÚªrhÊ^³âW'L¦ÃNp¢ç¶Ú6©À8gñÅ“îÌ´½Ðöë ç´ù_ånï$ÞWíñе£]—1,(0‚#båš°«.ag—l4J‡]2q«´7ä¨Ç••kÌr–ëlÓ9/¼ÀÄbÑaß7–F”RÞü‘ÛêoC€ ûÉyšè´‰Ñp>ñÛ£s9‹M ?îöìàŽ„ãetIä‡{ˆÝöGðÐ Z‰îÙ»„˜ ,‹”0Ëó<ªƒ[±Ð ØÛ¿Èxl£ &ÿJEré<’Ít¸Ò1¡l,fÔ‡J¥R*•Êå2å‘D(öj¼T*áÞ®ÁÅ^ì9”¯ê»-‡/¼Õ?¶ÉSŸjíjšJd}"_.ìØó–£¨)ÓÙ;º¾P÷Ë ïÿ2&T&J…ʰ§½æLçæJU´ÿY·ïˆÒ*aÚï¾¾¾ï|ç;ô÷«^õªóÏ?Ÿ¢B×$÷+V¬X¼xq¡PøÚ×¾Æ7Ä0 â_‡††øÙgžy†"þyäºØÒÒrôÑG?þøã„m)¥Î<óLêÃOÆ3nW'hÒ±ïÒô9Ç2éz÷FZ£½8HC¢S*¦CÙXwÕWœ–9v óÉÅ]O‰ó=R˜(Vš²q£rÉyañøšõ¬”™×y¢çÕ)¥6ô?Qϧõ³;ŽQJùþÄ }Ë•R‡wŸ¤Uä.¼q`es¦»)ÓYçM2kձΠå·zË­T&ÙØZ?­1ݦ”2Æ*l)ôV&ŠJ©d]¦)ÓÕÞУ‚¾Ñðï>©olÃX±ÂŸ?åä]åö¤400°aËó«Ö?xøqíZ«R~âç·þxÖ¬Y½½½Ë}ð–Û¿Ó8­T׫ÿßÞxÓM7ÑšðÇ×ö=ª”9ç5¯úÃmwh­þ鳽㟭yaõì%Óvæ[FúËC; ÿò/ÿrÎ9çœp ·ÝÓaÇ4=·¼_)uï½÷üñ›FVÜÿýÔ'v<þøã§Ÿ~úsê‰5 NìÈoËnÛ¶íꫯþÁ~àûþW¾òº‚·ŽlXpb‡Rê¹åýßøÆ7Z[[~þÛÛçß®”z~û#¹ò¢|ðÊ®®nF£”RwÝu×¢E‹:;;ëêê*ÅÞ± ¹Ò§ëŽ=eþЇžWJÝzë­ßý[?üpJWÿ_ÿýozûë å±?>ôãÿ·æå³z¿á¿n&ŒécûØñÇ_,ï¼óNFšþòàÓ4Ž›Ò}÷ß7çèÖ±ÁrÿÖÂwÜñ÷ÿ÷½åÕ8¡›•R—\r‰1æ­çýíX¹oÌ۶蔩Å|é¯=É7bvìØñðÃó•Ÿýìgÿ;AË—õ«_ݶm›Rêïþîïx‚FGG£ÆÎ³Ùì«^õª;î¸C)uñÅÿêW¿zøá‡?üp¾¦ïÌ3ÏÌår«V­b|íÁ<ãŒ3Ö¬YCWž|òÉÞÞ^Ïóüqº²zõêgžy†6téûßÿ~ÊÔÐÐL&ßøÆ7֨F‡±F5>>N§sJ):ÛÕ¦ø@"&•Jq®(>ED‹‘#\8 F¹<+?‹U ƳøfÆGTØòW ¡ ¬ G„#µS¡1c©Ú-°R®\ö Z#¨ ÇÃO¤õzAº ô¨Õ…ÌŒê?š¦ü”’ê6'eY¹N퉯ÛÀ„%‡uh4•†ºs¥8ìªx\‰±’`«C4ÅÛJäÅclcÑ¥Imr{°B4ø§Ä7‹¢‹8…˜)ÑÚœöìc̯rÍ9­Yah)K,p†à¶à¹r­Vî­. ˆ- ÷ å’|œAl›UU J‚¿ðºð^Äû1Sž˜bœ/ç®âÜ+p,‚|W~q'Ì"!~!^ŠûC”X€Àø"nãöí&LÊ’a†'œ²!¶5vGjM…3îÙqvöýbGâFpø˜U*ÊwfÒùU®/”`¾`]]]]±XlooWJó–\¯Ë¿L|XTÄy’‚“=¡øÙ5pd"dÛÞ„m†ãžoËž=¹<^¾Žôø;e‚˜btWç¡1ØÍö [?B?q.ŽŒö¡$ºÁr^y T'Ð ³¿±4Ršº“Ê"³ü£‚$º‡³¿‰UI›lÿzðÂ[I/Sž(Œv´d§ÔyîÍíÃkFŠ}üßÊDi ·5WšÙ~™â“Þ ¨%Û=\Ø9†·† ;駨®Æ¿E+I6Ê#¥ñ\6Õì›q‚ŸÊ‚ Šã9cL6Õƒm)¥Š•\±²®wt}S¦£9Û]ŸjÙÖ™-ƒ«så¡ÿýRùòH¾ýŸþé’l«Þ4ð”˜Ç+¯¼ò†nÀ¾õ­o}ë[ßjhh˜2eÊÔ©S_ûÚ×^|ñÅœÛ^)õáøûßwŒÎˆ®¿þú׿þõO?ýôèèè-·ÜrÑE}þóŸŸ6mZcccCCï~õ«±±±3Ï<óãÿøõ×_ÏOýë¿þk"‘øÎw¾ÃE*o»í¶óÏ?¿±±‘&E)Õßß¿hÑ¢k¯½–Fú‰O|âÓŸþtOOϪU«,Xð­o}‹JŸÔ¨F/Vb­‚‘&Îë´«ik”RèÐÎY±È°gß"r³sj`1i{RfÌ.BlÝ¡ÎÇZ£é~u ‰¾h¹o¨3¨]±ÞiÃ^tk– ²Øj+)‰2Ý P@Yê>šj<)~q\Y.N¨I«°†f<*¾ RØÊÅ”Ëeòf” ³«0XÃ*)E¡bÎåÒY£ŒB÷LؽÛ±Á! ‘‰Ç’€ÞX<(Ä8pXä8ÐkÛ £TùQQ¢Ø«xTN<‚àѺ݇ŒCÀ:ÊÛ±Ã›ÈÆÅZÓAùœA'"À AtØÊåÆÿ"‹°5•3\‹øPAdN“[‹ÂžDn3Uóþ†=TöaÂx+‚G ‚4méâ>0üÁ{# ž²ð&&%UìèèÈf³*œ¨Î~Ä>±‘Üêé¥b‡r‹Þ¬6,â\¼çr9c 'Ôï µƒ¹Ãp:bP쀨^‡üR„lKU´lϯ~Ž gŒ€7aÁ¨¥„n¹&HÒ¶‚¦¾?G>“àD2™däÛáB·¶O Ç žà÷‰/—Ëôx:.—Ë^8œhßH $,L…A"Üé6¸ "Ó5€Yˆ 9w0œ;/\úC|îÅWÆùEÖa›9õ„ ^”vÜ1x§ÂO’XÔ¸p¸?œò“‘% òާŒ¼çÛß}ödÉÑZó$ê Á®VT®LPœ‘ˆ5½ ·)'¹W{LB¿¿¼ðVGãŒmÃkúÆ6õmJÖ¥3ɦÆt[S¦ƒ–áÂŽ‘b_ÂKu7–M6k]WÏõŽ®/VÆúÇ6w5Ížôû¥™dS:Q_ÏÊ#”ˆ½P©L”Ò‰úL²ÉÙÏjÞ’M6Ê#…ÊX6Õ\(c’uéÊD©PmHµ+ctO÷š‘#kyF®ºâ¿xFÚê§ÑŒ â‚)jxxx¸°cSßêÍ·VF“óf1þÂqStÎãw¾ó?¬’n¼ñÆo¼qÒÛæÌ™óÄO<òÈ#GqÄœ9sT8ò‘ˆÐ4qñÓŸþt5=ùÄ'>¡”* O?ýt__ßa‡6þüÝð^©Q-BŽrˆ’¾‚éºUÕ1,>ä…Ua# 5-V¬YÏcS& € í/\|б³uèÀ7ŠDT¤X‘0#%v¡'l;µ“m½h—Wˆ§}ÙD…7Ú‰“HQæ„;8dä¼h¡lÇ9@lâ¤8Ö‡å ýù†l8†œ÷³5 d;Ð@4Ô÷8™F,v2x9m,ÌID„+‡Óƒ6²Ý{•LCÛƒ1h63hîØþQ±¢)q,/^áì- Øøøx___{{»†8S PŽX#â;Úík—/Ý=çºCÆŠi‹ ï÷ G¡pý°-d¢R©”H$ȳU2’†‹=F~ð]ÔxKK‹s];g[ÊÄv°31ÜÑ8 ùÑ"õ}¿¾¾¾¡¡!j.l‰ýZØmÜŠE5 §ØÄ¬,{šD•ð XÔ<ŠUBêp·tî84ÜôÔ¥ © Ò' ê06W g|_ûÓ@øFÚWù< ë¢ßjfQÔvgÈÔd["r^lYøáoŸ‰(DL\±Ê€;v‰}•Ã÷¸& ê²®E9R†½eȘ¿Œ¬`°ï¤†bÍ:ðy§Î°Pl#¥U¥ñi‚›BICˆPHµRŠRRì!‰í]ÐÁ o5e:u©ÁÜÖ\y¸2QªL”F‹}¹-3Ú‘G9Uõ´Ìç‚€ÙdSOË‚u}•ºšfOzƒó½-Ùî£ë‡ ;è©¡ü¥Ts¦+ªŸÕ¼… «âø˜R*_QJu4ÌÚ>²&_nHµ–ÆsJ©úÉÊR€ae¢4RØ9\ì­LûÇ6 ä6×§Z›3]M™vF¯&eÝHa§Rª«ñ0vIË&›²­ •R#…>¥Tgãlþ©9Ûm”Ù1²v´Ø‹ðVwóœ†të.ñaWiZËú#Y—žÒ}úô ý+Kã¹®¦ÿå𒣎Vêh›¢Þž+*¥º›æ$dSͳ§,J¦ë”RétÚæp}6ù²ãN­L¿®ï±\yP©ÃvC2m.ìL¥RËN|?•TÉ=œÇÝ ººº“N:i_¿%›Ížp ûgD5ªÑAE”Q¾¾¾ž* îRÎ&"ÏóÈç+N“ñIú­xA¡R‰P©µ1Ô­½ ¿)ƒŒˆ!`áD:8˜8ZTa _*Þ.”]ÿ&mO¼×nA4E·Mjš¢ÌV ÜOhÈl·`î!¡Cc;©TŠòh eY N{a,¶‘bAçßb®…DÝCo¦Ÿ0Ûá±ÊdŠ"žá‹9†«mòÙì»´p¢Æˆí 'A1‰Â^š´}ˆa\Ρcc(‡6¢ªÂq‚6qƒ>úèi§Æ@†sö䇓»Ù†Äðagð¥“ö¼šÉu ¹Ó VaÔƒ­G$9e#æí&?E‰Å&€}HÚÛ”óÛ¾uë{¯˜ä­sϱ[__o §˜}›a¡Ô™É" mN²DiH¼­+Ø„²¾Î Óy›Ø~qª $1T8Á¸øÁ*@óEøž1†0&çx«Y’âçì”R  '“IÊÅH žoÅœ.‹Ç>Óâ­Þ>QÀbhû¸×&>Ù³éd‹šì‹ÏÆ3wÞúð/œç‹G$¸G‰Ì¨¦¡ïûÄvB©Òétcc#וF~ü(ÐSãããô eàhJ!0ÜsQJ¯³â¤ƒ"Õ‹t¼ªC.8Q)•M6g[›2åñB¡<2˜ßVÏ÷ç6u7ÍUJ•ÇóJ©MƒOÛV&JÕÜदLgïØ†\iÀ7J©\i@k¯9 oUó <$h¦PNÔ¥š³½cë •¥T±2ª•fï0r¨aå“uéŽÆ™3s¥¡‘bïX©?WÌ•wŽ&çuýŸ¡Ï:JªEÎYÎáP.¦Ætǵ–žbxÜîq;†Œ2ƒ¹m£ÅÞÊDÑ7ÿ+»ãþÿ!¾í Óóå¡¡üv‚†òÛ•RmõÓvu û‚vãítøöû7#{}kT£œDÊJ6›M¥RXаJbËÏ …ÎŽ]¤²Ûv²rÙðô7iZTTH +Ÿ1ªˆöŠ÷µñ1a•áI¸‹Ž8jÖá“^„ðphQ–§ÇéÃLl¯,»„(ËbA[T)EÉb¹’ ^àèhÒ¤§bNß( qþä|‹m6( ÑÁù0O[nÚ…ÙÇã|Žæ„ “ŠÀ,uQ¦Î.‘“É<žUSOLb{÷l™Äd7Â^Ò€S¨pwQ!^Gø!Š´¤R©)S¦DU®ˆE<‚†“#ÀQó^Ûx›´óQwR 0K`"‘(•JÃÃÃÆ˜T*•Édœ/ª²«b硘DÛ3" Û"¢Àp”·‹Šº5áP/vÆÔ2ª°¸b˜â·DÞâ>`H¸Š%]¡PÏd2\¹H‡á á›S%Ðiï?ÎÙT ‰åÆÄã¢Â,öW@U±èø6 Öæÿj­9€ýxõAøâ~rb&/ˆ®5AÞ>Óà];éµKCмÓÞﻲà Yb[…°'Ô–œI‡ƒã ØŠ7gÎäÀÞ¬1ÇK|GÏ–J¥|>_*•h^¨Žk t‘ÓS ²F§zÜH¹\f\Œ;À+{‚ÔÃË^f¤î¹W<’xPÃ[ÿË¥Ó‰út¢¾>ݲ¾oE®4¤š&}hR5=ò†:/Ù”é)ôú”V¾ñ›2QÉ¿ª|‹§ëÒÉúb%W™(–ÆóMéN¥TCªu¤ØGÞU™dîf§ÒZO:ÌÝb]µäéê…g׬&¢¾±/jÈüßJ®O5g’MÅÊh¾<¬µW¨Œ¦õQÚ%ÚUëî`¢]íùîôÐåÏþ cL>Ÿ¿÷Þ{_óš×è¾Ô¨F““Ô¢¦LdôÒOÕX˜0Ey¬ Û.…}±NÉÈK¥RÉårZët:ͪ0k› „ŽUp ©”¢jŒ¤ZùP›ö|Áh5ê3µÏ©my°¶š(ÆÂ («€|× Â"åÂbQ F³=À&ãƒÄU ¹ö^ôÂiÝ™u1S&lÒI¯Åë&ìüeÏ»ñññ¡¡!cLWW&AØEȶ0K `5|ìñ燓Áói0×sfòRÇ^ èÓÇ}æö<åw) ÅàT)1¦¬Ã(„× €§"±yÀ|#i'®»(³ ‚* jp&æ3§û¦£ 1 T‹±;;¬µnmm=úè£Óé4×üb6êpy|0>¯“röÑZ×§Z[³Ý ±°ŽÅºLi_+ö'¼Ts¦“ªf ÄÜfßL”Æó½£ëDûäµW(ǯCû¶Ý`cCªM)µst]¾<âû…òHïèú=áp5÷Û=ßGóxÀidddÊ”)O?ýôž7EË—/¯T*µd^5:$ˆ”•d2™Éd²Ùl6›%vR+B¨€¶É­,_¬¤ãIÐS©ûÛ ó ;‘ùV}+áõ_†Šèüê6Ú¶®û–ÕD® è4Þ¢l9ÛzÔÂENo/e)èöƒÎ‹zÅ#<¢”ªÁ[5:$ˆ5>Ù¦3:SEX"‘mëÛý)~*•JÑYºl…ª£²ý€çáZ)ËÆÓÙÇ×I­ô¬Ü%ÞâÞzA‚v¡“UiNTIÚEvÝÉjZpªìN,¦)¶9"ÒQ@SSS6›­¯¯'Qñ¶…¦#È–Ca_±ðá¢ãQ¨,'8ô‘Š8Ö–]TØQ,ŽûOëd]¦>ÕÊ™à'½!Šš2]½£ulÍÄ껡”ªó©D¶<^Àjƒ é–Òx.U—¥ØºxJ'ê[²Sš³“&½ª‚uzFÛ‘¹m£Å¾òx^iI6RRv­õŒ¶ÅC…m#…¾òx^k¬Ë6g;[³S<Úm>TOÝÍsŒR¹ÒÖª1ÝÞÕxØó½Û·e“J)O×µÖ‡€ÈjÒœí.FŠ½Æøéö)ÍsG‹ý¡>4¦•Ê•†}†à¼m7ØXç%g¶/Þ9º>_ÖÊkÊ´w5Íy~çC{ÂáɈk€{w*úùÏ~ÑEí‹–óùüªU«¦N:}úô=ÊÕ(’„2GS^PýpW[sšdâqÚÉ$eÝB ?\—PCmlŽ„àñY‹ò!kx2™¤È²'ÙŠö wŒ“‰±Ä öù'rá4X}Ä+œ¤LèåòùÌc³¢}«äŸ°ivÐ|eK)‘H444°hi¶ö¿F±Qpφ#ÛbÅÝf¶ƒ×ÑEg=4?~BÙ@÷ »eœV¾Çαb³B NŠFÌeR€ƒJYMLLPT?or« ­taOòîDA*ˆé(kíG™@*;ØÝE7IÿµRáj ÌnCx¸íDK4NÜ6.7–|ûÕÃ7Sºw„¨ø„&‘C¡5¤·cE T©âª.½|¨±(N…ü‹5ÂûiYtœ¹'442D´¶´Në™&rÕ¼ðV:ÑÐÝÔ0émõ©–øàÁIopRÂK.˜rrÔ¯¶ßJ5o9¬c©¸ÒÙ8»³qv•]šÝqÌ^eno˜ÖÞ0ÍñƒÖmõÓ¸a5Ãß%>TÙ”§=-ó'½9_VJµÖO±sóO:¥TWÓ쮦ÙQ¯HÔ¥zZL: çmÕ¼]P².3½õˆø!ÇsXÜoŒ1•Ä}!*TÔwé-‡ÝqÇ<ðÀ)§ìµþc[ZZV¬Xáûþ 'œ0<<|óÍ7ß~ûíS¦LùÛ¿ýÛÛn»-‘H|êSŸêììÜó×á{kiì«¡£¢ˆ”ÊÅjë.éÖ¨¾àEeÙíâVjÑ@‡ÝûI‡+ ¶QTWWÇ•ª=¨®MÃÑZÓá3ŸBó=ì1!ôZöÕç+ä[»=^T^æ@ðû?©Í¯]A1Nãu4; ¢ò wæï·1öØFŒ­bÆ¢Œ TÙ $ö‚4.2ñ‹Ž rúàfEOëqb…v›¸NÉm“Sw) #˜”lx™ :£!-š˜i<ñEûÓ#(€~[PQªŽé¸†´ýøûC ,h ßn‹ã?Ðè_ƒ_UβäD‚°BžMPèPAúˉ‰ ŠSÓààÆ›¡-É8Søõ4–¬sîøþvc1"ˆÞ”xW±Y'<í±'š)‘H°Ñøø8Ç,9¸gòçW·š '&&2™L¹\.—ËäxE}æéÐN,FßDò‡&×x(Ï“øJÔÞÈÚ5e"ar*Üsï­c–ÃñÁ²ƒ7÷Vj4)ùfœü­šªp²{ Òu×]×ÖÖvÿý÷èŽ,túé§_~ù廪EѦM›.½ôÒÿú¯ÿºôÒK¯¼òJ¥Ô–-[¾øÅ/ž}öÙétúÛßþöÏ~ö³·¾õ­úÓŸn¸á†½;ÚÌVI5F B•‹O)¬ ½$ªoJ(Êü껬v „ˆ4'V¹HoSá’Ø¨~‘V„-Ø‹+h» <. 9â_½ 9+”¨é ;„-FʈAi¿„iªÂpö߸bO+®‚(ëÔþ¯ó¬±’ÐÙÒŽâÍ,O˜ë¢â×(ÇC㊻ïbëšË~E ƒÝ¾Íy6–¨){áàðmž«h "æNœP{‹ã¿q㲇 ®{á 9½Ç"¾ Â[–óA±u ¨xáI»M{yFMÍ:›?1Óª\ØxñºfâE{?wN%n ‚Î¥aÂ@? dÔÛY*ð\Aüjϯv}‰Ä/`öÂA©c—útÚȸ²>‹Üvh-ó¹J¾qy FEh ߨ˜}5ÁgñyRððƒ:}Nð¬@l±²'ÂFÙ¢xî±~ü_láˆÄL1°hw¿8\Ù~o6›mhhÈd2©TŠ3š!8뙆ãêU2™¤˜G:ÑΓ ˆRniÐ…è m®[8! t$áó{B…€œŽ`¯÷VjOœ±«!ÝšNÔèîŒTKv.èšk®¹ð o¾ùæw¼ã{ÞÚÿ÷ñ‹_lll,•JoyË[”RûØÇÎ;ï<å=ï¼ó.½ôÒ'Ÿ|òˆ#ŽØÃw ªÍl•TcT‘ºCš1†“RÛªÉî‘8}ö¹Ð°mW¡nlÄnöø"Û†ñ\¹icÑáðái‚ðŸè0æE&B¿¡jØÅæ»ZØV¨Šâ(0»“Ö:‘Hpà§u•³é 1£xn (¸“·1 Û¥Æåu‚ «0§Ñ”0Ÿ@cˆ ÏÊVæ[e­tvdÿ‹(ÙâŠçÛ*l— žˆ)=´/ ¢«,x>zÇW;e{³¢¬5 ªžÐ5I-ÆO.˜2ƃœq¥R)ŸÏ'‰¶¶6Ú"4@·6¶èœd”ó6a–ÛÆ§Ý>ˆ7Û&®í—!ÄO…±FÅIb $ÍQáe¢,¹Uösü¬áè°c€Bå‚3œ[Y<Ù0\Ô³ÎQˆ rÄDÔ°g9Š?8ï*Èe©”*—ËTäÁù¬6NÊ f2.–.Áþ Ö,œUBĉî9¿’“Κ`;½×ùÕ^ö(ð«JaÑr"§-ü '¨Ê)B‚ý‰/m_\çD-îÎo¨øtªð÷ÅžYæ0bU¬¥Ð³$~&(š)°*rõÂRà'¹‡Sû@< ‘É”‚U Òž\ø¯ðÛBõcßQ Þ:„é†nø‡ø‡'žxbÖ¬Yº/€Ý Pû‡jÉÎtÄG,[¶ìî»ï~Õ«^µ‡MrÊ)”Æ«X,~éK_êèèH¥R7nlllܰaÃܹsÛÚÚ>ÿùÏïõ!Ôf¶Jª1*†´Öåry`` ¿¿?ŸÏSUÊ¿P} QÙ²BPƒÔ)ÖÀLøÐR¹\K²Ùl>Ÿ§¿9Si´AïâØFÄtØb÷‚ˆTçH… M á-þ Ñ"­Ý–J¥üˆêuâ]h°]Š*»0cD¤!g{¥|À‡ÂGÊxÎ/x‚¹üÙF;YÁö'÷õ̲!P*D(|«f“CH`bjÈD!ù't|sÙ'"öß"¦ƒ»Á&Ç¥²w!®ÒAÝwa€ ;YðAU’[v¢¬5çM¸€ý8Í£Îg7Å Y„ƒZÚâœß]¡U,N" B׋Åb___SSSKK Æ|‘xs>´Þ ø‰ún”4J²TÈþ+eƒì Dý0çÉü+—Ë‚Éhãè¿$88N ó„ìRþÕ gYRáœôöô1‰åƒÇŠØsKNüBL· üa*4»'bŒ `,ˆGðAãªÕØÁ2‚`Ç¥yËb®qž•vÖ!'~„CÎ5 ñOÄ—-ñ6Î\åu$¶q^ìØ²=Gbvl‰,‡HäŽÍ3q%j­“É$y”+Hd©_]‚'–’=dsc||ÜÆÝp“QáhMþž %¯s&xt­Â}Ò@ §pÎbÀnwüѧ-”FÁAy”qS`¶>bt!ÿÊ* ŠccÆÇÇËå2}ƒø¸…žU€Lp¨†ßPVÉüpõX:$‡Ü}G5xëà¥J¥rÅW|õ«_uþzóÍ7¿ÿýïWJ]xá…øÃtgkt°9@ÉÎ!:묳žzê©=‡·˜Ö¬Y3>>~ÄGœsÎ9=ôP{{»Rê¸ãŽÛ»Ý®ÍlQ{‘(]Ô‘K9S85Q'ˆG@- ñß ÷øP²1á‘A–!e¿¢ö‰D¹\f[K(ñ¶M‚&klho‹`7h”0~btP¶OP‘õÃyùf›¨gã¸TØ]‚ñÂ[YÕVJ‘*Iv‹ðP@Eð‘GÊÄ-ã¿¶6/¤"J~ÐZˆªø ž6öÄp’àBÈ~;‹_üç?{QNdQ¡‹Žc´¾L¬Ÿˆ=:„‘ibLl::ð–\¤~8O?б0öœS nFk“‰aM‘uÅ9¨ºººL&“ÍfuØ E×JŒ•ËmQxÆ1oñæd„î»2…Gˆ“× J¥£]Mq¹)ØZ…-7s·Ùù‚–éɼ$ì}Æî oÎ*ÁÀ$²Ù(®àG$jrív¢¶\ïj²½hRlkÒO¡;ÒEÚ{y–iVðpÂ[ñþGv÷bx‹bU8Tœ½rDZ´ù_IûºMQû¹xƒãü«Cç8ÇŸ½ülÁuG-£û’rI²ÀÁ¹ÏëØÐ•R $ðœýRMØA8Š™¬&±“;\ñTØ{…‰À4ÔÞ¡³=ÊŸ%<=Y¨¨ó|æáÉìý Þ"w¿n ¾¤üdVÓ¿\ùd7ŠtïÕà­ƒ—>ýéO/Z´ÈùÓ¶mÛ.¹äúûöÛo¿ÿþûO;í´*›ýèG?ªµþÿø=¾í}Ú´iÓµ×^ÛÓÓ³eË ”£dçïÿûï¾ûîoûÛ•Jå‚ .¸ä’K¦Nú‰O|â@÷÷À1&•JíÅ©µŽŽŽ§žzê´ÓN#¸ùøãß‹¯¨ÍlQ{—È&¯¯¯onn&½'“ÉØ™­b^°Å¨Â €lB½P±ÄÚ’²<†X‹em’4$ÖÎ=«Ÿx^ †0)‰°ùQyº¸ ´¦°)ß•\ØBƒ q Ö¤Ñb¤2ñÛy¯qÖDÒÖƒIKÖ€ ÚÈŽ“™È§ü P_w¶9©Øh—ÃÞ‰ïÜ‘ÃÅîpŒÁÏglÔ‡JðÉB&ÇÌmäxARa”('“íðæ(ëÝ„ëýEqÒX1­ÎÖœ/²e€ÄÃ|ÑR&“éîîÞ ^ÄO¶“ ¯áJ&Èi GÉ!Þ#Ì9ç#hQ㎇҂›•½îbv!6¤Éz¤]‘<¹œ¸66.ÄÉYÄmbg¶»/1b†Û{ÌDDaÔ«¨m!õˆ?‘Â/Š™*Œš©høLŒ=ž9j2+ªKx‘]&Ù§ !-DZÑÑ,~ìÚu‰>Ç‘‘J¥‚:9ï캨¬ok[&2T*|¨9ãÜì–Ø=:ƈɊ¨Â[ïªÄ*&‹û ¼G™ÈëŠS$‰t:Í>b¼Ñ± b?Y¤~e…½ù0üÐó¼t:MÃ$ï~x¦c¼¥`ËRÖ®b‚²•ôRß÷‹Å¢Ú—Tƒ·RºõÖ[W®\yíµ×:ýêW¿:44¤”Êd2o|ã¿üå/WoÑÑ÷_ö Àdç‡=ûì³'Ÿ|ò^lpþüù3fÌøõ¯½hÑ¢~ðƒ×\sM*•Ú»Þ[µ™­1jï©Går9ŸÏ3´´K-  àARªjŒy6–X dhËÑ™!+ItœÈƒ“ÞøÕÔ>{ñEˆxg¼¡e@BsUaW á{%Küd÷:¡€:¹Ê·¡^ëœ5c¥%Ö¨"Üâ$w¯FõÄ0Ú¢kÄ–ñ”h( ìS†Þ^¾U ^¼Q…-U¼NyvHãGO.§Ì‹Æm)ŧD|™qöÛâ-ØÎâ%·ñœ·AÛ¦èp¼)nc+bâñT*¥µ¦1XÑ_Ô.ò¡„¶l¶¨êà-1¿ÊÚ^pP4›l30jKˆS'…·¿ÀÒ¨*ËžGBÌѾM¹ê„ðßÜOº®m®Šíš'.FœÄßNþTßqòáÜjœ}V=îÕ1k°š­oÒ>cŠÅ"}9É·Øj죚ºº:üâ‹ j||œšŠßÞňœÚ¤2@Y …B:²„ÙšÄ&Æ¿‘!`€Ï±Q°OVülrŸñKdŸ DÒD&‰4|Q– –¤±¼Ïø:§} €u‰Òm\µ™P0NéeÏî$k~^5xë¥HwÜqÇ%—\òÐC9ªïû?øÁ”R===úÓŸ¦OŸÞÝÝ=88ØÖÖVMãXΣF/2:€ÉÎZÚ°aÃêÕ«1?Ýï~÷»+¯¼r/¾Âó¼+VŒŒŒÌ™3G)uýõ×ï{ßÓAÌÚµkGGG•R{’ê%8³7nìííUJ566~øáUú3¿µ{Äg€étÓC˜ÉbÇ¢s7СÏñE6ö¸˜·ˆ,ã;Ñ/ŒÕ&/œ…JG„õWl‹ˆÒ²5HDõT(h0àãØ2ýŠÇªNuV > …Bâ³Dg?IçÆ³n Ñm*0ª ¸íýÞ³RÃàu›ÃÈ:¡£+˨¦Ìd=©0 ¦,<Å6ŸlqE!DkÁžkj'üìl«FÀÏ’ P©TÒé4Ç¡ð[Ø’Ä\fʲyÄ0…4ê04ã䉸-& Ò¹(˜üp]Î9ž‰"ÿʆ†€J¢d2IŽEα¹ÒA‚deùÄ!Œ(,^xüI‡“j9Wr[’ÙGY°B†…ˆò.'Ö¦ äC î&ºŠw’— '2¿£LzûoNn¨`‰á,sd™e¢$Ç€3öïáþ‹îìó.AZ(ösIœmˆ} ™‰’/¦7û3566a¯)n\ÛµøâxVâ9ä³ÈUdzŒX’@L&å'‹G¹\¦´J¢ÛNIãŒNäÀEÒEл‡ëðIX¹?öZ6á MŠLçñ2ìb#ûË.vÆ Åñ,ßL§¸:]³ñÓ@ç²¼—â|QžM›øC@sšy>Ibnóô‚¼lŠS« ™g”Ã8ncL¹\§­†—§ dŒŒf“Ûá¤õܽê—ínP Þ:èèøÃ›Þô¦Ÿüä'3fÌpÞ°uëÖ­[·¦Óé[o½õÈ#TJµµµÝ~ûío{ÛÛªi¿úÌÁ5:äè@%;?8©R©\vÙe×_=z‰>ûÙÏ677ïÝwutttttÐßÍÍÍ[¶lùáxÓM7­^½OÉÏ8ãŒO|âË–-Û¥ö_"3[,ýë_ãßX¾|y©TâëÉdrÁ‚neÛ€IDATýèGßùÎwf³Ù£öœXÝ!‡F¸ªoõ`¾bë… ÌB t˜úÁ@r qf«¬|Ox`ˆ1>&|Ji«ï³0DÔ0£P}Âûq°¨M²&í¬#n Ñ,ê÷Éd’|XDÞn[Ûæ|l¡ Ìu\vôÀ/yˆ ¤µFmžu¬ \˜J«Ý*Ñ€;½ÿlÉŒ±ÿñ¿BiøôÀ¹Ö€úC*• ÃÖb¤œß³ xP~„<­8žQŠË0zßÓ9 Á[äIÇ_m¥µOQÍÑüó¿û&œwL€SØ»Tƒ·"¸âŠ+¾ûÝï^yå•çž{nÔm7nTJ]pÁ'žx"]I§Ó÷Þ{o Þ:xȳyóæ¾¾¾#<2“ÉìÿWìŸdçûŸv‰±_|ñ 7Ü@wvvR*ñÿ÷ÿþß¶C;vìøÈG>òóŸÿüøãÿÈG>2wîÜ––ß÷‡††žyæ™»ï¾ûöÛoÿýïÜqÇýèG?Z¸pá®¶ÿbY¥ÔÕW_ýÕ¯~µ»»ûíoû§>õ©¶¶¶D"1::ºiÓ¦{ï½÷·¿ýí>ð+®¸âú믧¨Ã—,£ö «rÒOöãQ6Þ†‡ùh̳6Fj%WC½Ê¶µlËÍiÀ«X@>ˆù¼ÐzqZNãÕh>·CÀ—²ÕœaS$“É÷:çD°¡3liÛz¹Í ¡Íóß¾ïS)%¡H`÷¸Q©ˆœí;çEà>6 &ìL§¢`kN[QÜ&`ä¢f,xN®‚ªd|t£Øf$²TLM”*—õók5d"<ìì+Qû†ó'‘“‡I|ã¶)‹€ˆJ¢¸¡ÂK@4…ÒãpÁö¼o•ÂÔ“A®NDgßoçôÙWÌÍ1·©h©˜RÁ6‰!ìšáÄqì!LjÍöøÍ TÚluì)QÔ¾êì¶S„é •’€S)ò u•%ê*¼oãÇŽßbGÊ×K¥Ò–-[Z2™Ì¤3«wc»á¯<ö~b7"Öpí>›ðq»2ÑK™4§*¨H¨,8Œ;ãœq>vŠ,ÊB¢¶ã»Ä¬©ðvζ< ¸2†HWZRÁAvLøÈ«à4Ñó<†Ï4ä,à »ÇG\¦–&—‡IÊÁØwTƒ·0Ý{ï½}}}}}}Ë—/ÿùÏ>88øÚ×¾6Þ¹€ÖÒ‡>ô!þïÖ­[7lØPåkðÖ¾¦›nºésŸûÜóÏ?¯”êîî¾í¶Ûön–ñj^±’ïÚUÆþô§?忳ÙìC=4sæÌ½Òr õöö>þøã_ûÚ׸øÓ«_ýêË.»¬P(üüç?ÿ—ù—cŽ9æÆo¬•fÚ¥™Y·nÝp@ù|^)¥µîéé™={öܹsöâí  …_þò—Ÿüä'?ò‘ØVñùçŸïûþwÜñ¯ÿú¯o}ë[ñ‹_üð‡?ŒW|Q.}DtÂÆ.úª:c¸züÈNÑEÄŠ:ð¯Â Ńb­¨¦«¬Fa+NJ[ñÄæÇ X&,šàtKý«"Bœš}Ô=Ì=NÑR ßÐE<·mã¿Ê)‹º-Š{öãbšÝ2£AȸwCCDrLAa/˜\^Cüˆ`‹è¹³“Õø)˦âI©ÅÞU¼[¼Z»’šæKÜp²àõB®©TŠy%æýÄF6í§ :ÕÐþg×Qø‹!/iO™Ó7ªó6ŸUÕ›°="UÝ&¯\v¸²RSa¢¨âv°ªž“vSöHc„–ÅR…§UÀ[*†pù£[±“ó1£À›«_S&LÎ65@ê&p­-—ËÛ·oO§ÓS¦L‰²øli´_íì6n,ÌŸáááÕ«W§Óé… N:Õ>üˆÚÒU$2áø;"t437_5ÜSàÎÉ~Ó‰D‚=˜Ð]‹½˜y Bñˆ™ÜxÄ–Ž·¿â:© ©£S6&g°›â:È*|²È¯à:ŒìÂOÛ2y˲O—TæfùDÝ+• zŠ”ÆòÉÌÄó¼*ÂîQ Þ:Àtæ™gâÿíßþíÍ7ß@566¦R)΋¼nݺJ¥200På©äÁ÷‹“*•ÊG>ò‘ë®»Ž¯ìܹóK_úÒO~ò“ýüŠýì|Òî1ö”SNùãÿ¨”š={öÏ~ö³¹sçî­–c訣ŽzöÙgcnÈf³çwÞ[ßúÖ¯ýëïyÏ{‰Ä›ßüæêÛŸtfŸxâ‰Ûn»íÞ{ï]¾|yLSZë©S§üñoxÃÎ>ûìÙ³gïÞ÷ e³ÙGy$æÏóÎ9眳Ï>ûÆo¼øâ‹ßõ®wÝtÓM1Q6/²%°/Hœ—²þQ½ÙSý[ ¤3ÇŸtàÕÅç̨ù‰ ãÙi¾Šÿò•˜Xuƒ}þ‰¨a‰˜äB‡Ê2‰8Ò‡Slà+lˆÊÙ7†·HßõÂUØ£­;îm:æôIv|AÔÔÄÈL”­ŽÛ胆ÔlbàÚ«!o}È­+: âæ0@Ãiºy@YälX ƒËå2Æ„²äÛC¶qå2G£“¥7qZªö\ð¤ÇÁÊ¿p3q2–à¿K°Ý. g2†·œ[V”8‰ƳÑyƒs}ql—ÍFÆmÔî!v³¸A°WSr¢(~²§ åJ<Èÿ’†R*‘HP€²÷‡*?%ñÓÃd!ÆbDNx …мç#ž/1q6î‰wÚÏ«X[H=5äà#¾øQªCó"ŽÏ–[å{2Fð1šƒøš‚mÓöTâÞêXO=NŽ[öÓX˜,¤…1&ñÙâá£g±BiÔ|h§ÃG2v\*GP²N‚€ ã_årÙó¼t:Í ¾ÉEK§Ñ(’Éd•0ånS Þ:ÀÄS>mÚ´O}êS_|ñ¤ÛJcccOOKÆüc¥”Ótw9 >öØcO>ùä)§œ²`Á‚̓]}õÕ”ŧ ÚG¯ð¢“Š´{Œýýïÿ裋œO>9 2ÞëSfª rL&“ÿøÇ<òȇzh—à­¨™¾á†®»î:òAkjj:ꨣN?ýôcŽ9¦³³³«««³³³©©I)544”Ïçóùü /¼@(Ø•W^yÑE-]ºôãÿø[Þò–âàY%ß´Öï}ï{g̘qÕUW …ï³ÙØë$´ORJªI%k· ¢ãV”¥‹TYìOZ—hSDÒá1 äŒ<¨›rV¡ ³îȧßd½02%Q`Ò£Ù€ú+*舉ÕS…ëÍñxù fÒÁ>â]üˆvE1ÍReñ'/œ”ÝX'½hp]-Ñ1â9=ì!ÏšÎôl‚¬½èžÃ!~v™ ÄéGñ‡ó4i­i”¼²‡ÝC3‰ÛÁ4ÆLhƒ‰IqÒøøøÐÐ1†ª°Ñ.äÄ~œÍN$*§H‰¹olÄjH„¤Ã˜#™ éê½ yQbQê䟊Å""˜°$¶&çêã]‚@qƒhI, çÖÄó‚£CTÚù"{Pbû2àÄuF"¶÷Ãuâb ˜®ŒÃïVR`zD„ù Ž—Qrœe{S++j™03}+?= ¡ÀCÔóÍ~¸r«xK‡¡a–ûó‡+Qa4„©á[„{álM|P!¾¹¨h8ÉÀ¬g1³,>¾‚9ˆ; –òÙ€ŠøÜ ª‘I[Á`” 7Öpì>|*Ø «â9;•àcX|–ƒ{#AäÔ&öÙ¾ÂXœ¹Ì%ñ³H s'ŒÓ™ñ¸EÅâQû‚vᨶFû‚¦OŸ®”ÒZ3¶¥”Z»víÈȈ‰¦9sæzñ…/|yöÙg£nþÈG>òÑ~”ÿûõ¯ý¤“N2ÆüéORJþùæ¢×¾öµ?úÑvõ©‘‘‘ûï¿cCö ¯Ÿd2ùÝï~wツ îîÓWÄÓÂ… zè¡ýùÆÑÑQ\{wÔ{kÊÊåòÅ_,V÷[Þò–=ìÞ1ÇsÏ=÷ÄܰråÊ… &‰ .¸àùçŸßs†Üwß}K—.]´hÑÓO?½ç­(¾9ixxøæ›o>÷Üs.\ØÙÙÙÞÞÞÙÙyì±Ç^|ñÅ¿þõ¯)ãf•tå•W¾ï}ï;Ð_½@d[¦ÓiL¶ºOßhÂZ]LÇT Óy²†ê<¨)âSh‚ª°¾®\úŸ$ÞîÙM8tK˜µü_>#ecÉ€ñüÅZ †e)Š{ 0©°&-\« $ÂW`Ìc‡ùN¦…ìÙ­áH™-<)¾«ü"ö™CÛ«¤îs@‡ä )—Ëù|>—Ë•J%zŠÝlq5—Äf2zV9pñ`Ôuûœô¨‰@iA32fîp¡a ‰D"“Éd2‚¥bD´ÊI/ ”^C[ÕâM4¾ÿ NíñŠ­ Êžã’6be¡ô EmAñ.‘x$j¼Ú¿bWíI¬~uëhŠy*JfD þ‹éƒSHÄ*Ð㉠ûò÷‡ò ü ýÁ‹Q½µEK…—3OtÔ.a3§Û³Öb‹‚Šìâ· ~Ööª[ ·…‚‰AáØÅ¸Ay—’¶¾ã8³&(X¥Ü*kó´÷p'·Q»p.=Ñl5{#K8ñaOxŽ8=aIÜgæ3ÞC“[–ôü £‚‰™L&›Í¦R©: T*•ÉdhÛç¤]¤ÕÕÕ‘©”/—Ë¥RÉN¯‚EÌŠ}&Rƒ·I:õÔS}ôÑgŸ}öª«®RJýÍßüMLŒa¹\Æ`ød2yôÑG+¥ÚÚÚ”R­­­z4{™Œ1›6mzüñÇ©tÑ+_ùÊÓN;íßÿýß÷é«3™ k9Ë–-»÷Þ{ßûÞ÷îI·m"$~—^QeË-íܹ“â viÔUR6›Ýí)CÚ½ Ç=œšR©tê©§¶µµ­Zµê†n˜7oÞž3ä´ÓN{ì±ÇÞÿþ÷Ÿzê©T¤uRÚ“Qì¾=ûì³\pÁ”)Sþñÿ1•J½öµ¯}ßûÞ÷Þ÷¾÷5¯yÍÄÄÄÿ÷¿á oèîîþ¾°¯”bUƒ”<ìÝT¥ÍÃGë|fh§qÕÔ‚ÿUVf1>Úõ­"nʲé"ê—¶Ù,¸ŠF)ÙÂVŒ·LÐ ŠQ‘Å ì)f³”`·“I (ÇÉL›{6Û÷¢l8Íl1 Æ…0òEÒÚëëëiŸ§gñ4Dmu†ù„}H÷—ËåB¡ ³¨¹s’óÁ(;Ðn°Êe%'âE1­áDxž×ØØØØØ¨#"a£l¼¨÷}¿T*é«ñ6.tXYøQ5ýq";ñV(;½Ú›g 7L4‰y‰¾Àyí—FɃ½_)×^a÷\UGñrî¤>Øíh—˞݇(îሼ h/ú^ áá…o_ÇP_g‡Q´ðqBoÙSu%†·ˆþD ¶Øm¢¤7êö ´õ3A¹Ž›óÂÚØ„nJ»Àïø§Ý†·póÇ‹ÊBQ¨Ä BªÙR|[qâDrw®ÿÈa¤&ìDIŸ9ÎreŒa7.¾™²æQfF¾ê"Êd2ô%hŒßH˜EGrEQºs|||tt4—Ë!ó™9ts:fçß}DµàÄC’N=õÔßüæ7wÜqG>ŸO&“_üâcnÆ Xüï~ðƒÆÆÆ /¼ð@foRT ¼I÷”½B ûØÇ^óš×Ìž=»³³sÏ»m“çy7ÞxãGQå+öCÇýC÷Þ{o2™ÜUÆNJþð‡_ÿú×ïaËßýîwí‹ïyÏ{bÙó©I§Ó÷Þ{ï’%KDùç=$­õå—_~î¹çΚ5kÒ›÷pû‡o¿øÅ/:::žyæ™Ã;ÌþµX,Þyç?øÁþùŸÿù¿þë¿~ùË_žp {‘Ÿ3'®ÕÛ3¨ÏÙ¿zVèS<¡>©eJ)R‹„èðq+à4$uBõÔƒ¸-v¡›1½=ÿ¡¡„¿oP.…aV7±Š"úóÛ„½‘ ”{´X¼ t7ι-DW=QàÞ%l‰˜îaÆ#„Ic/q` ˆša‰2CÇ@ò#샑~ Íàd2I*¸ .°@×××S&)yDmÚËD)5<<<00ÐÕÕÕÒÒ‚à ;îI¬Ûj«F0‡y+Ü… äzS.…‡†/µÖ”Xy^xà`\ì<çØÂ%cO³ (r` "­‰D¢±±‘ß³uðý„3Ú2`³ÝipŠüǘ; %܆¨<ÏK§ÓÄç„Ú}Ó®˜5žtìÔó g—  œ¼ Ù?qÆ"–(ž)Ñ%'räì§-ùžçQ(‡_Ù-ÛO æìžW‡”@Ú• ÈîZ:á…¢…Ke Wy¯ÐW‰6ye…ÐÚýyÙ ¤ÉÀ´_(<¶ä zå…ÃМ‚dƒ5<.›ÏbÏD>ðS8@/œˆ²7±HýpwÜqøQB%nàíA9c{üVòDóªñ"rÉáJa-‚žå£8ì~ÏÙ1¶G± —D>° Áw¢Hë°»'sFBv¼ßnDYà|ì^©T( »Õ{žW*•ŠÅ¢çy"7.w•¸ÝÜܬö%Õà­C’N=õÔ}èCô÷?ÿó?“7V Àd2Y©T®¿þú[n¹åöÛo?ꨣôhöÅ—ÀûóŸÿ¼råÊSN9e_w£¾¾ží•+W677;-ê*»í¤ÆÆÆj„ýPÆqRKKË‘G¹/ZÆ)Û=úíoÛÛÛ‹W’Éäõ×_æ™g:ïß‹Ssì±Çî ž(¥æÏŸÞbppP¤¯ÚG|‹O5˜ÉdÎ=÷ÜsÏ=wݺuW\qÅYgõ›ßü&ª/&ÒºU}• Ä2œ¯pþd¢³W°J*e¡ÖAæCÆ_»M/œZ$½b Ì„Ã.Ä„©ƒ÷¡5Âê ÎÂê#æ|õ‚øJåJƒ +òVYà¾B©â9è@Ø?ÚåeÃê¬õ’l»"jÆ^áw .ÙƒÍûf4Ò€ _à§œoäÿ H8b‘OÐAd3Qbc wÐlð}xxØó<:Üf–jÈ÷,’L£ù-F!8oÞ: ωyÁîÙN%@14tPè]é«•Ë@E¶;ý…Ñ‹+€D1ëóVkMÀ¢3…Ö)ŠžãŒ‚8:Ll¤QW5 h@ N¼ÿèàÐùÚ±) pÐÞQíþ Àìñ’g>‹5È|@d6¦5åJÄè¡Ð*Å‹Ùí v‰Î ÷D¯x¦ˆ\ðQ¹ ÑÚ»´sC&x”úÏ8šTø{g\H¨Íj\kb[¶7sÄ8D?U° \É©oCPбÛBeOœSZÄDˆÄÆ ØÝÙ [äx‡qúh{A•ĪNò\Éþð6[D½èL ø ~pÙ_R¬ lÓ J”ð^‡;-}¼Ðï’+ÀG@TÃâï¾ØÒ‘W$Þô,o¤:ær¹|>O 5Ð)ÀßCNa\f‘³4íëàļuHÒM7ÝD¼êU¯úÇüÇø›mxë·¿ýmÿc=ÖÑÑQÍëŒ1[·nmhhØ‘Œ¦ºj6ÅG9555vÚiûºó‚î¹çžG}ôÆoÜínï íFË»Íüƒ™.¼ð®®®«®ºÊóöU,ö£>ÚÜÜìû>!/[¶ìÚk¯=ùä“£îß‹“¾ï¦lÒ–÷|;wî¬T*¸ïS¾UÉ¥9sæÜrË-ßýîwÿüç?¿à-">ԓႜ擎F¯¢ÔpœÎ0eú½0íÆÑÌV–ßA¤Ú’e%ôKV.1Xxu¾TY‘<¬f¬Cr|<ʰµsaŒQ|ÐaxBø=i¶„cÏ ˜Ì9jq-öôqÇøWNX‹oáðN&â€I‰eŒÚÁœ\Äò´gǶ0µÖ”áš 4©,‹Žÿ¶ó1Ù¼Š’„IGíœ8ñjŽØI.Êeë:çTà/8›|Vï´xù4Û;Û'[}Î%ƒ‚Í›ÿĹcÈðÃ`U›¶ñÉž&äù…ÉÈ?Op…;±KmT±ûí¤ö?¶,üCýèBüœHJ5Ä“×ÄÄU‰‰ßWí>Øïp˜RbÛ!œ¼¨ÉüF'çšE³œ¶&#Q‰:Oòƒê„œúŠt„¤ãÙKÀ“­Ò2ÃEUP%Ö@™cåZ\8_´Ñ‘ÆN㢄•ÆJÅèûþØØØØØyo577cYaVºÔdU#öœt¿}õ¬s^óÄò‡öé‹kDô¶·½í'?ù è!ÚU­F5ªQj´?©µµuppp5~̉'ñßwÝþ{úcÇŽôÇýØY€T«ž“‹3¾€ø¯x/Î5CimDŒ±T1›v›Â,gù'£º¯¯7{+Æ–‰„“)¶OT©T¢Ia¶Ðm}èÑF{…˜ e%ÎE‡ÄibbbÇŽår¹««‹Ž©¸ÃˆÿòV)ä܉ 3@Ã>;þð1"›ø@‚Ê/åU,¦Æ‡*\Š×2–~²=q‡dÆâ¼P³´ i!Éäünè§£ÃAßt‘ƒé' ¸c¸e A!ùiæ°­èÆÓþð{§–û °šVâiùòå?pQ___5ßpà ŸûÜçž|òI¼øóŸÿüꫯ®&Èå/ù ¾ô÷¿ÿýæÍ›÷|PQôÔSO}å+_ùÌg>Såèö„Œ‹~ûÛß’,ÖÕÕ½á o0UÐUW]õ¹Ï}®š;}ó›ßÔZŸyæ™l }öÙË—/ßÖâ©újQ•÷CÕÂIiÆŒÿöoÿ†W–.]Sî‚ .hjjÚ¥n'‰_ýêW“ö¤··WäcŠiy—ª×íÿʉ/¼ð‚RjÕªU»ÝÂSO=µhÑ"ÏóÎ:ë¬[n¹¥¿¿Ÿš5kÖG?úÑK/½´©©iãÆ»×þg?ûÙùóçWyó¶mÛªŸš¨Ê‰û®à`•- U?Š(Z½zµRªú‚»Z@sßqéÊ+¯¼ä’Köõ'`_ÕP½‹'+&¶1á“›Ð*°tø„É'QÖ¶pâîyA–.²a\–§ègÌ(ø®1Ä*#7eóÜ„C1"”@?ÈmÌÿÈÕegñÀñ-Ú:@æÛÐØÃ>GM™øÉ^A{Ï ×€Ã3jœkÚpmá–µ}CFð_áAª]Njf¨&ñÁe¤lÄÁ„^ìn Ó4~õ¡Hð¼h‹x°lIª°;ƒ¤ñïŠY¿¶ÅnËžea! . Ççƒb˜:ŒF@%TØCÓà$ÈÃä4íbàÈjƹ0³;íTÈ‘ƒAbuãEô¬wš0žŽ×í}É)öìàê@—žðe³…\ŒÂ¨ À£¸A)•N§³Ù,ãØˆà› ãƒNÉd„‡&²ï >ˆk€{ðN;°ŒÊ!&ðÆÎˆ!ódy/oËŽÅÙ󘯪ý¡?©ˆ5eË­è›xÖTõ8.1ÑIvùd  û)vr1ê¨ÁÚ-ð>€ñ}t± N[ø™D BÀœSCW0ëòŸG2Ã*„²Ö”ø°¸ry±–©5¬£‚µùS#4X]:nnnnkkËf³ZëR©466V©TèÀ/ŸÏ¬Fà/XÔVÞ€½N{Þºþú민òÊÑÑÑ;ï¼óüóÏì±ÇÎ?ÿü§Ÿ~ºšÇO>ùä/ùËÏ>û,^<á„þú׿þæ7¿™ôñÖÖÖG}ôüóÏ_·nÝôéÓwìØqê©§~âŸØU­ºJš>}ú¢E‹>ÿùÏ í‹öãiíÚµçwž1&“ÉÜzë­÷Þ{o5U!HÐ{ì±ïÿûÏ=÷\•ïZ¹råG>òcÌ[ßúVÎé{â‰'þñ¼âŠ+v©Û¦Š2g{èT(ØúÝ»Åõö„æÎ»aƨ_}ôÑ“O>y_t»¯¯o||¼Êjƒ{7@²šéÞÏ´xñâ+VÐ>óæ7¿¹³³³££cêÔ©S¦LÙ´iÓW¿úÕûï¿ÿ—¿üåÌ™3÷Cg¶nÝZýÔDѾ+8XeËÃÃÃ{>Š]¥úúú]*sy@ÊY*ÄÚ +@˜ªúFXsÂëÕÛÆ|‘í öKÒAjp, Ä/"NàDž‹ú ¡ð¹= Æ#Øç ¯`kÂÀo¤+&âÜÛir SÖiÙjÈ–…†ª§Â×FX¨ ‹( c!€Hì¹fë¾"ìøÕB«ŽòÁQÉÊz¶Ö:•JÏq‚d7C“›™àLd,€Ér‡Ö…0ªT¦Óà’†äAü©»!ðã"é‰P&!ÌbDÔ63˜-&È,¼d·a†«°½'d@G`—bùàlâ ØÉÅž}d–°·§e®#ãkÈC8† © )†iW4ö“³2ã(ø6t÷[6Ž(§Š@7pw 圞§ÂèÌ4±õÙ/â¾€GÈ‹½j¶2 ǘ0øÈp@CCCKK çÉf°^‡a>Ï ¡R¸ ãþ8û(´bj넃ñ±wqÕ9ŽDæ5ˆsÏ´»Šˆ¼í5¦ÂŽN8(œEìN ¾öÎจ¨Šv!½¸Äìéìµ7=ܱ½p•ÆßÍá{Xï68~» °!ç—¹MºNIÓy!S¥T‘K‘]ù8 ·q±‰‘:‘Édèfj …„¿ì¼Q÷ÓÁ^]âo~)‚KUúAÙJæ<Ï ñ‡ØKO‘×9½š÷ORòÆÉçóìé©”"ß.šGÚh1j@îœJã^§½{kddäúë¯ýë_¯µþþ÷¿ÿæ7¿ù=ïyÏöíÛGFFªy|ñâÅ\t†iöìÙsæÌ©BZ²dÉë^÷º¯~õ«¯ýë—.]ª”øøÇ?~ñÅǧôÞ=jkk{ÙË^¶×›­†J¥Ò›ßüfâÉM7Ýôº×½nΜ9>úèI'ÿ`2™üÊW¾r÷Ýwoܸñ…^¸ûɰþŸÿùŸ´ÅÌ™3‡®,_¾|Íš5J©»ï¾;—ˉšQTe™³Ý( fÓ¶mÛÖ­[·×‹ëí ù¾/\N}ôÑ?þñ÷Q·xà¥Ô¤-ïæ´…“ÉäÇ>ö±Ë/¿ü±Ç»÷Þ{W®\Y,;::n¾ùæ|à×^{í~îÏO<‘Ïçw{Ò÷]ÁÁ]jù®»îÊd2ûmÅ544\qÅçœsN•o< å,9Bó /Vó`ÔÍ:5éÍöO:Ƚê¹ñ(°Uįø_Û ßkwÌ è(°í¹ô›èžø›Í$˜”0а­ ¶|ì›ÅÜ “_‡vŽlàˆ@7„M¨Âˆ|.hŠQ㤘¬“MYn„M7 ¼esÏùS, ´¢d‰ ËÁŽY*bq©°*þ“b,ÜÍy§³&%góǃ„kõð‰„„œ¤€ÿËA£1ôM}[æÅª q²g,ÇdcˆQB+V«±&œ­Œ;€{ããQð„tɇt&¨¶AwRh¶ÖšR8§R©¦¦&Ïó(üÇ)bš” ŒP°œÛ'vOȤ˜h~;²ËƒÄÿ~PÏ ¡–˜A ±$ŸŠf™ÈÊ¿h‡GJæ>¨ð÷…ÇBsì˜ ïœN(J N*¼ù£1ôoݪ*k‹æ¿ÑåÐ^†Qß&åÚüí!zÑ© ”k˨ŠñÂôyr„E Z…·hdHTꫨÁÚNµ¨„·q­'[6Šõ“çùÒÆñi¢ØÞ¸OÔÂ4A…PF~yK×Z—ËeŠ>›ƒ³ÆFµxN ¦Jt~ç·ÓVS*• …[\~‘#m„Nè0ö®»×i/´nŒyÍk^#.¾á o¥¿‰‰/¼ð3wddäÉ'Ÿ$„iÛ¶mkÖ¬‰ÚÈœÄ÷*æÙÁÁÁ+VàáüàààªU«P±»ÝÛÛk÷ÐÙ1ûÙ=§ë¯¿þñÇWJýã?þã›ßüf¥Ô+_ùÊ?ýéO“>˜L&gÍšõ‡?üá›ßüf¹\¶ÝœDïRJq&æ¥K—’I¹dÉ’úúúI[¨T*—\rÉ»Þõ.²UPæÌ¾såÊ•[·n}þîw¿{æ™gî‹ÚÛÛ?þøƒÛÊår÷ÜsÏâÅ‹T·[[['mylll¯0¿úé>€¤µ>þøã/¿üòï}ï{7ß|ó7¿ùÍÆÆÆöööýß“j¦&ŠæfŠŸ²ê§fûöí»$ ---ûyÅQ™ËjÞøŸÿùŸv9˽¥pÿ‰7›«'Û”ÝÕÇ…ê, ,ªl“5i>À´UpD‹˜'¨¿¢ÂªÂz6z ©°Ýc*ó\*ìÇE¬DÌTÚ®F¢ÛŒ#³ ÛO)0™œ³`kö‚“BÑ·Á'ú€LÖ–/˜Êiñɳ³›]¤Ä{„”¾“‹Ií†x;Ç(®GÉ;9FM±mǪÀI“í vÁÐA)U%ºbV™Sý’4“è‡ÉLg ÄÚ3ÿR{ºqÒQØLàÇÏF-+»Ï¶« ÝYMX¨³A±±K1;FÔtTùÞ`"LkÁ4ÛÙÐf¸SÚÛ…½ï™XRž¥,iRÉ<ÄpéøÞF-Ü1â9µ„M)«~… Ù‚½Gu/FVõ.ª P’‰EÚëH‚œåN_9G>øÝ7áó¼y"Lø”Ž_6vÏ=ì6¹^rJJ'PhŠ™Ý,/:{BÑҦ‚£ þ•Þ^©Tr¹Üèè(UB$©&ç/ä‰ìUCòøúúúÖÖÖ¶¶¶–––ÆÆÆúúz‚½ØLžbÊ*ï»×i/À[×\sH¢”:÷ÜsÏ:ë¬o|ãÓ§O¿üòË?ò‘,[¶ìª«®RJ]wÝuoyË[î¿ÿþeË–‘7Rê‡?üá¿ÿû¿_~ùåó7c‡„8´qãÆgŸ}öÖ[o½îºë>ÿùϳϑýì—¾ô¥7½éM=ôÐÑGM9̾üå/_xá…úÓŸÎ8ãŒÍ›7;»ýµ¯}íÔSOýæ7¿ùÑ~4¦cÎg÷œr¹ÜÕW_­”zÙË^ö¹Ï}Ž.¾â¯øýïÿ /ÄÑ$“É£>Z)EU~ª¬~È6/¹l6ûøãÿøÇ?¾ë®»ªÙת Z¿~=z9<¡…{BƘøÃgœqÆÔ©St_âhtt”é¿»Íü}W²F‚V­ZuÆgT¿^ªŸšÞÞÞ½" ­^½º»»{_péÅAQJ-ÿwO†Ên·ÀqZGÆe›á¿Qú%«ÂÂl@mUGãGÆÓ¨hH(ƳgUaö+ ª°.‚ƾ‹µg1ûñ½eᯓ ›qÁœÔ†…8‰õx§Gž”§¬Fœœ¿âÙ» ‚ÍZ?:WLÍ ãBWmþ˜p4(=ÞR¼ÈÍ’uÁòo/|Jyac|Qsj pü=ȳV™ó¥bNeÀÇ?¨¬í%JB„}hÂÑCø¯à!ÍŽ§²¹aOœ“¥Ø%/HBgŒI¥R---|ØLDÍݤ?9o“¨" d{¾øf¬]ë\¼1›†Íø­xž×ØØˆðáááŸþô§¢ÛóæÍ›?þƒ>xüñÇûÛ߾袋֬YS.—Ͼò•¯ŒaZ­rbjT£rô"¨œHÁ…BaûöíÅbqÊ”)mmmX´'C°u»ÝhÎ1l¢ƒäår™m9ÏóÐá×ѳ¤ŒŒT*•æææT*Eõh‡~ç˜ œ‘Nɇœì±ÏêµÎðJ%ÿòù<¿ÍZN‡Á³.¨Â¦5 ‰DÂP•L&éíô •Èù6䤔wÃcä³S¡ÜëàHÙ êÜ©°±Á&ï!ä‰ Çþ dŒ©T*Ä“B¡ ”J§ÓDÆåö¨ÃÔI~ÕI¤Ç›››3™ q›!êW€€Œ²‘ÀS@Õâx^Ðr°£„OÄxv\Ú äáâClzÕYc9äG8QOs’%„þF½‘“Cq#•J%•J±ØðJ¡{¸\f¡Pð‚Ú \;’ØÑsÍu<ÏÏf³©Tjtt”ÌBŠ%éyÞððp:f#§\.s`—m¸â\{IrxѤGƒ“fŠþÇÌÊ8ÑdLÓAÝÏl6K¹xÄ HJy^Dý°cš¨ª ÙñÜ 2 òæ,†Lô÷÷SåD*÷‰é/5 ÿˆ"‘ëá/|û¤à|ñv§Â8Ž(G­Âè$÷Ѷ–yaù¡C½ Bœ '×cÁæEÄïÁ»®G?ikH—¾ ´ÓNŠ.aû´ÿ0‡‹Å"M¦c)â@-ŽábTš;†{ÐáÊ<(.öª÷Ušhö#ވظœO©vYF|Jìêâ'ö\³·Mmˆi2AåS–.Þ‘0ì凛µ©ÅÂÓÇ ÉçóDË!•JQÉ?îÉïHÔF-ÙÕTAž/>ÀMO‡tžYß÷K¥R¹\¦íBkÝÜܬÂèm ´'P€!ßÌ_,ˆe£¥¢E°— 2jÑi®#á+•J‰D‚€K”³ÔZ“¼¢K¹\&ù§Þ644о”ÏçµÖõõõ„‚¥ÓiÊØØØH-k­óùüÀÀÀ•Ÿþgf×ÁX91žêêê¦M›vÄGüÃ?üÃ+_ùÊ?üá™Læ†n¸öÚk) M'eƒª««;á„î½÷ÞðØ/ºà‚ nºé¦O}êSo~ó›K¥RÔ³üãçÌ™ÓÝÝ=sæÌmÛ¶-[¶ìöÛoŸ={6e’:æ˜cn¿ývš*ìö}÷Ý711±dÉ¥cgQÏî6ëð[þêW¿Z)õÆ7¾‘ë­o}«}&“ùÍo~c,úþ÷¿ÿÞ÷¾÷[ßúÖ¬Y³î¿ÿ~Sxâ‰ÔìÝwß-~*•J˜'ÕIŸþô§9ª‘(¦ÌÙ­·Þê<‡tRTåDå:7ØÏD•K¥Ò>ð¥ÔøÃøû9æ˜üã»ôŠ*+'>óÌ3ªºštŒöè£VÙgåÄÿùŸÿÙÕªvÕÓžWNŒ¡Y³f}ñ‹_ÜÃFv©râ£>ª”Úºuk57;+'y䑟üä'«ï^õEEW®\©”ª¦‚$LxòÉ'÷„o»Z9qúôéÿñÿQåÍ—^zéñÇ_åÍ«V­ž#ñü⨜ˆ ™ '-ÞsÚ¥SâI›Ram[Π´˜A6’ítªÚ"~ÊÉœzq›¸.ð ÑIv.ãЮ0Æp.XŽ@+tñ!'1šIÊ•L݇dÛvƒ>T¸÷ãª;—†`š-oNöгnæ!Ûc¾+ðåÁéòƒFrŒúAÔÞ#Ò&°º=WÖg2sÿÉ€ôÂäìÏ·'…Ü@ÓWŠÈBÅ÷³L »Ô *ŠúÑÊh3ë0ΫÂQ6B0ìe‹8” ïö,++`YÈ$ÊJ…àƒ 8wbjTç²Ýô¸Ÿ^›í^ )ðøon M\T®`X$j¥à–¢‚Ä^>TÀ4a7!{úœKO¬\üClhÜCáG©PY®ñít)ÆñÓ#DET¶(:7p\ž¶Àà ðBÀX8´""XñDvcÉd2étš1/šXtø"», ðöš”Ä0„KãÄázë‘’¢Ö¸³obu ¦‰FMoö»pâ´UÆNv_üÇ›†ã…#°<þ.ÓD{áÒ @I/Ï+{¾hP¬–Ø Îé f–áäY4À‰‰‰b±H'ôEàÌñLÔf£D&†^,¹MJ¹Å -ÚÁèEÅb‘úËåÈ=`8d»‰NA¸i/¤–Ÿ”-ZÄçr¹¶¶¶÷¿ÿýJ)ú—.ò÷•R”áãÎG¢è¬³ÎÚ²eËo~ó›×¿þõžçÙÏ~ó›ßd8Žã,øø1ÀnÓÁ)ýͨMLÇðÙ½BTYòãÿ¸Rê§?ýéO~òÏóþîïþnÛ¶mTMìÎ;ï,‹ïz×»ž}öÙ®®.|6™Lþö·¿íïïì±Ç:::ª|ãÒ¥K—/_®”²#¿ô¥/½÷½ï>}zÌãëׯŸ={öºuë¨&è²eË®½öZF_Ä´aÆã?þ©§žºì²ËÞñŽwèîì'Ú¸qcKKËðððKmº ¢¢¢µ©‰¡íÛ·û¾ÿ’â"t4çíãLŸ{ØOqÍ`'êÁ¾$¤Q‘ÑnàüßnYY¹i_„ Ê&«²Ò!Ù6€1Aü­h4Q”R\W›üÐ~ÆÆñoòR‹nðO*¬Ðó¯  " .â14íÊJ&fM¹ 'û63º„FlÔŒˆÖ|+[¹mÖ¢q#µ·Œ‚Uÿ¢8É/µßåYùËchO¶…¨©T®tÚöðíœæ¢ C®âž¨u!V¥À#°DŽbX+qRΰ‡dU²GªÃ^Øs?¨JµË![ìQÛLŽ™ æ!öÍæC¼<(k¨†QaËÿÁŽ-Î*È=Jòq³˜@=ËÄ‹pØOªÊÎóãNR c¸öU¸FÆ‘‰ŽaéI–g¾èà¨nÓƒ1{5÷Ö ©Ÿ$¾ó)-#oãåÄ„…!÷7§£:NºŠÈ ‚¤Â G Ù&MÁ¦ôe·ñ;iHø…xÎ` TÁ%~%d* $ªS*(ÎÌTàLNm\*”‘} ktyä|V__ŸÉdPi!WG‚SöµÂ¹7[gFñÂdOË–-Û´iÓÀÀ@gggkkë¿ýÛ¿’bŒY¹rå9眣`ÛļwÚ´iÝÝÝ¿ûÝï¾óï<÷Üsö³gœqÆÚµkŸ|òI¥ÔŸþô§»îºë5¯yÍÖ­[) ñŠ+^ûÚ×ÒL`·O=õÔ‰‰ r»¸çž{”Rår9ªcâÙ½B###uuuäQõÝï~7‘HüùÏþÙÏ~öîw¿{úôé¿ÿýïï¹çž©S§~ò“ŸÏ.Z´èüóÏÿÅ/~Q=¶¥”úЇ>D‹ݺux}llìᇎǶˆ¦M›¶mÛ¶Gy¤··÷î»ï~qÛŠD…BáßøÆSO=uúé§å+_9ÐÝÙ¯ÔÜÜüR›îCˆjSS ­]»ö%Å%œilllkk«¯¯?Ø.;ðEÔ5£tbD[Øß^´i«¯ÁnØÆ†vö “˜îá=vˆ ïOLL s ˆhV¸– b*.òëbܯÄut?Ù£3ਃH йmÒ؈E¶D½Â„ļTÓCaY‘¯‚Òf6«ñ)ÁarRap'† À‘Ž1ùVÜ®ãø¨]Ñš{N6óÅE±Lâ‰!gÎiÁ.ÄAs­±˜·D‰%®‹x–òGFFvîÜ™Ëå&M9/ú㔟¨®:eC,[ì[ÌÊ%áø–º0 jÛÇÛâ¥:žxƵ ëôƒ¤Z13‹¢b‚"ÂCgQÑí¨ÉŠš\d¦ÓR›¤ ¼uTnóió!¦XxÓDñÁ9˸ EݵÈ·ˆÅ^厤\kß~{%3ØÍ€‘• }딵'«ðçÛ94±í‹Ÿêêê2™LCCC6›¹ËMoéà4.ÊY =gcºª‚/yöPS‰D‚’gq¢ Å+é'öX¤L•JK%R¾0\éŒREWòðb0K¹½ÝŸ¤½æ½uÙe—ÝvÛmJ©7½éM^xá[Þò¥Ôüã{î¹§¾¾þ†nxßûÞ§”zùË_þÙÏ~öì³Ï~ÃÞ°~ýúüãÃÃÃ'žxâÐÐÐÕW_½nݺ—¿üåï|ç;þóŸÿá(•J7ÝtÓùçŸ/Á ¾îºë®¿þz¥Ô%—\òáø¼óÎ{ç;ßùµ¯}í¹çžûà?XWW'ž]¶lÙW\ñªW½êå/yCCÃ÷¾÷=­õW¿úÕ‹.ºèä“O^·nÝ~ô#»Û ,¸öÚk/¸à‚W¿úÕ4%—]vÙM7ÝdwÌ~v¯Pgg'§I~þùçßñŽw,[¶L)uüñÇó›ßTJzê©7ß|óYgE³€tÌ1ÇØ˜à¤tÌ1Ç|ík_»ôÒKúÓŸ~à Q …Ë.»Œ’ÜWCííí¤,Ý"Úhzzz~ö³Ÿ±óK‡^jÓ}Qmjª¡¶¶¶j€û ±"Eé2¹½BSÍÀa/Þ£W#¡ ¶%FøWnJœåšÀÏ‹Ûdof »ÀP›"èLd“™tŒ3E:e.—koookk‹š#d; øAñx4bQëEý›»­-lΞ¶.t´ËšˆÌ@g k½Ø=ò,@W5;¨¥'B…#!*: {ÅL ²ï¤ó¬/žQV¬œèŒø {ˆAšÚJg£]eFéuœ†\°){mÄ<†3&7A/•j¸ê`[`è¢p±9l=q"#´"ó™}ìc›7ož={v&“)—Ë¿ûÝﺺºvìØ‘H$ÈÃèMozÓ›Þô¦¨G°µ‹/¾øâ‹/Æ+_ùÊW.¾øâ™3gÒ ÙÏ~éK_ú§ú§¹sçÒ¼^vÙeï{ßûúûû¯¸â ­µ³ÛW\qÅ…^X(º»»?ýéO744¤Ói»qç³{N‹-¢¿;;;©¢Rê¨£Ž¢Ê‰™LæÌ3Ï<óÌ3ï¾ûî;wvwwïùK?ô¡yä‘×\sÍßýÝßtÒIÅbqppðŸøÄÂ… ÷ú_4¤µ¾å–[òj‰5ªQjÄ&›è1ºþ!¡¤"ð¤@ó†=*ˆ¨ª dG…õuVÎPsåÿ"6dÀ¥Ó6£ŠC`ƒ9*lGƒ#ê‚4GMMM”áE1¡’­!˜9†á™Ü `¯Ó ˆR¯U‹RñÑ8á?è´\Äéøá¼ûxfNEÎ2'EŒNŸ»È‰n`‡mLÊ3ûqf‘˜^;<Ël;q–hS]šè<ælÒáÐÕ˜ù‰6›εäœAl yÅ'‹ª ‹gSäb…ÐzA•^e ìR†½ØÑ€¢‚Xf1ƒÜUN°%QdÎipçôÂY¨Ñ0æÀ±t:ÝØØÈ‰öÙÞcÀµ ò|™ ¢y||¼P(ÔÕÕ‘û-.ˆ2»‡ò£‚ ®‰!FjO£~¶TÛre,§Ù%¤ÂIÜ>oøöøõE8” >%Ú:,a¶° dQ1´„;†ó‚œý(ó6’¥!E#^7V2{–;•ø?‚¸Ø«O |Ò³”Cš}ÜOK1ÌW®]ýps³yëܯÄÃM€ñþ‚ðwœCéu˜@Y!>ˆÎ±ð=¢Û|Q|YPþž‹:‰ŽvtøH74 <¤“0ÄÉ•ʪ²ÜòãäEE+®ó91Š·Sd.Ëçó###õõõœx¾R©P*.c  ôÒr¹œÏçËår*•ÂD¢Üòøøx¹\>”*'Öh7¨V9±F5ªQ9:Ô+'üÄJ˜ 40":í¤{H£¬|Éê,%Ž$UrOð㬰zžGµÉ9…¸)ʱŠv2'?"]-•Jù¾OF&Z˜ñÄeãYÉó!ëë”|€lŒ¡JCtjŠx Z€¬/ªÀ@M§Ó\kR®Œ e"ŸU uPW“ɤ­ ŽÎ6<OÂpåÙ¡‰«««£ªsô‡çyétšÕ´¾„ÃÄÄeÄ+—ËÍÍÍétš´yÞâûÙŸ…˜©Â©ÄøÐ˜ŠI9O 6lÎ1¨AJÖËgÝÈ"t½I§Ó…Bt}z)Ú‡Èa!{(E4kZëb±¨®ÅÒc«T*Åb±¾¾^k]*•(ØD[¤¦( ™v¾+k› û¡Ð³ì½B3::Ê~ìö‚掣££™L†žòƒp,9´²HÙ½Bp Äxà ÃUG¹«ÂcŽÒ„“Óçš©T*™L†ãi¦ðu&Œ¨j­‡††èÌ›†Éx u•ëÁaT©Qf‘ú€ ÝÖ××G{öªT*Qö’––Zœ¬‡6|„ÛääÓ=!è+ŠU†@oÂÄÿR©ÔÜÜl£$Úr9Ääî¼™¨u`" R1#ÈdÜœ7óØý |*¦ßÂg¹ê¨Ԝ光u0 {ò‚ĈdÏ+¥øŒ.dYEaÛ‹c ­ £K|s©TÊf³´t‹>;ÄúD¢óVIÃÄ Äùà½Q||ÅÖÍ‚aÂX¸áà(áô]PÞq›|°A¾ØØ Ø¸eŽLäíšØB_"š¬t:mŒI&“ôUâM@‡=›pu ÿY=ð©íÍÇî-©¼!Ïñ6'“Q’éqÚv¸|äøøøØØØÄÄDSSK÷_Äl&“Iþ¾ð&L²”Édh‡ß´iSCCCOOO{{»ïû¹\ntt” F×××'‰þþþ±±±B¡Ðßßßßߨa‡wÜq­­­$~Ùl–ºAß&çþõ*õ¡W9±F»M¸ ·´´üéO2Æär¹¥K—^z饴ñþù7ÝtÝö±}¬­­Í)ßÿtÞyçuÖYUÞü¢©œØÞÞ~ñÅWÿ‹¦râç?ÿùyóæí!÷¢¨V9Q\ÜÕʉÕ/—låÄ?ÿùÏJ©\.Wåý/ŽÊ‰/b#ð|ž¨š69ù…‰ësb ‚8…‡7~DBg÷ȰY½D°Œ çÐÕ®”LQ/ýÁÅÜÉ÷p>›T„ʃ5á`16·ãñYÛ ±ßë¹Éª0ûÕ:ÈÏ"bQùW´Câ›UV‘;Ñyf”=(;×[Ì»QsÅa[¢.V?MhíǤ˜‰ïCÔ(xQD="䙞U8µ|Ì@ì·;Iƒ¯aŽ:(gÆ}æ*oÕ°+•Jµ¶¶R€¹‘ü.FöÄu§Fµ€ïÄÄÙ´ŒREµµœ¹œî·öB@N"+bºs›ØpŠ«Ù6cD4j¼Õl2‹ó*ž­5Ÿ¦÷ˆ½Øöp²-±sçÓétsss}}=¦å¢¿‰™©T*›Íf2­u.—ëííÍårT{‘:C{Oå!“{«Fû”š››?ûÙÏ^pÁ?þx[[ÛÿøÇ|àßþö·/¹ä’ùóç¯Y³F)åûþí·ßþÎw¾s_ M¢(•JvØaº/6"WXQPuomÇzˆ5ªÑ![„dï mùu52™|+äÿµùÀ®a&p´‰¢ºªÃ0‡mÉ umÀMG$zkàð\¢ÁÇZâ~½1. m Û®°äÅ@ìÀL'{q˜¶%ìCÌrRØ*ÈyÇãèÄ5jñˆ˜zšèö!W¢{Øâ"#J‡XEÆ ³ÕÐöVG`@ 0>EŒ¹«-秨‰¢5…g“¢ÿ1ŠÍÏ(«rÒU&˜)¢ÛìQ£lóOœw9•Já{㳄Re³Yú[¬:§+Z™yk3S°È¹rœ~y:]Š2¼1b—§[†É|¥4=âu«Š ´å×#„¢¶œ ]â¿…;Œ˜e1Þ7*\¶Ò–üy+%Ò&\Ø×– {•Rì@ê‡+{Úy¹’×ð¾£¼uÈÐe—]vï½÷¾å-oùáØÝÝý«_ýŠ®/X°€þþÆ7¾ÑßßÿÙÏ~ö@÷ô¥K=öXWWWõ÷¯^½zÕªU?øÁÒét&“¡#¸†††®®®ÆÆÆl6ÛÖÖ–ÉdðcÌÆ×®]ËWô ÷9͘1cýúõ3gÎÜß}÷Ý»TQ4ŠÖ­[×ÞÞÞÜÜÜÞÞÞÑÑÑÝÝM9òl*•Jû›ƒ5ªQ™°×ž l„Z)LJ)QšGœvâ !ûá{VÎf$̸¡¸Ä¢ÆXýEíS¨­*œL¹ZÏÂc—ü[šË]åH¼¨ \3æíÙ9ûÜ “ˆ¬}Vúo&„ g>F‹‚Í4ðT¬úîC&ÿ×öš¡y‡ù p%¤XBß½(k§„mi£BN£WYöG½1ƪÂE uZ(d†£óDšs~+<ÝÂØF´BÍï¢s~Žm±¥Å¶ÌÙkΟ8OØ–ÈZªjP ”šW4Æ‹±ekw ¥‘Yä5ï• ïÐàK¦5K¯ç?B×”²LkïRáŒì^OJXì¸~m,‰œGtF8ïTÄ­Â6³M$R…CñÅ—Â÷ýD"AIQ\9Ü•R,+%)¥8 Øùvܽ}æUš€¨NËå…óm1«Å‹¸Urø$ªÓw„o`3ÜôLôÑB̼˜ Y8ñA$öß)ßpH à³ °xHİh ÁÎvøí$$¦Ø·VB}æ·‹ËžˆÊÄJìƒX (E9FnÔø)<(Ã_%¢Ša;ïÒ\Èù‹,˜)¾¡&ˆMæì ´5ÑaCW(‡¸ä>®ñäÕç©8“ŸùѪ§Wè$ôÕ`‡/ß÷ëëë9™¹J›?ïº ŸN§ÓétCCƒçy¥RIœ2ò,ìyî­?þù1¿Öà­C†<ÏûÉO~rÑEQº÷×½îuÓ§O×Z/X°`åÊ•—_~ù/~ñ‹?ÿùÏ{ÅV¯ÑîQOOÏ.ÝOHGL¤1Uo¥Ý‡õõO~ò“ŸùÌg(ÓA¥Rihh §Ð–––L&ÓØØØÝÝMÇ—¿üå©S§:a²C ÛGØ–Rj¯˜2eÊøøøààààà Eí)¥è‹_ÒZ(çâ~ãÛ!AgœqÆìÙ³çÍ›7}úôéÓ§Ïœ9sÚ´i3gΜ:ujLÄAv´ëĘõûxs¨zršÇ{ÒZ ¶ÁÀª*e!¡´5|hŒQE¶ùª,KhÒ˜x•»Ä bšÖDu¶Ö'«vÂ"xÅi¡&F”0¿ $¤ç±ØÀ ÃR*œ^°BÄYË›,frÜ#ÞnÂþ)x¿@(œaØÆžÞ"ÀN˜Cü.Ü[ÐW¢V„x5Zb¼b¤s1– ÷!ž†!TúDáA> •ëd .våJ$çV,ú³$qÇW ÔaÿJÁCûÁ:.Y€KÆ3¼pÂ2å !BX„ãÈœL¶îœJ,jZæ„GˆïòJ€† D]L%oæ jSp¬çsrÃÞ½m!äs&±Þ[=‚£°åÁ–Ig9â›Eø+5&p¤å„ýÁµ•kKdÝÀ^hxœc ;»7V„¾!Ü?ÅwÜX'p¨T`?ù)Äs 8#ЊOhVál}&¨\qÙtA¾¢&HOogq, Zë\.·}ûöÎÎN„ÎYÕSsSs̯5xëà¥{àƒü ¸²jÕ*¥Ô¢E‹t¯«žÜ|Ûm·½ãïØÃ×DÛG.—Ëcccøß\.—Ëå)‹Òõ×__勎?þøê{uÒI'9¯¿øø¿'D®ÚQ¿N›6­Êv–-[f_|æ™g®¹æšê;³KS3kÖ¬*ï\²dÉž3jÛ¶mÛ¶m{ðÁ«¹ùòË/¿üòË÷ÑÀÉ­ºJjmm½úê«÷|øû™l°3x7Þ"^±ç ¢ŽnÿDŠW¹\N§Ó8Ô‰ÙC»Èib±¾Îý·™&®£&ŠH‰ ~\´,,7{ öðÑÊbÑs4é¹v9QaÓņc°K¶C0˜ØÁ£ýϦ¦ˆ@´gVEX8_6ùAv-ä$šRNœN^o¨ CÂ/½a›?ø çÊ*ó%LAeÙKÎ^9{.¸Ê§/10¢³å²]m£ZH¦Èáûóù|ooo:îèèIŽ`½~~­\’ïä¯Yái‚·E‰(öM‡Ë>(0/MØ—SY®vÜmÑC{Y9W„hăhB‹‹üSÌj¦Nu>n“ðvÁ¿ÑK­^àÙÿVI&€ç 8¹Tÿ,¿‹[) ¿ @ùÝhM|Cð~ܾØÇ~Īå*¨aCüT‡ÁVQ+Wº‹Š‰YÆùŠ¢˜4a1Û—ÎTh?¥Ã:M4:ó*pÕ$-•êŠÏNnÚ $‰ÍY)511Q,K¥9"Ø£3ÖqyT±#sÞƒ’Œ…aoQ0g™8^ÒáÌ÷*pVAV,àÅvTP¹E4y‹cÿËåòèèèèè(õv```||¼X,’—†çy”ŠK•Lª_/N:ùÄ“c~­Á[/Åï ãããÛ¶mó<¯«««¥¥¥P(èþ†èüóÏß²e %lž”~ýë_¿ño¬RÖßóž÷¼þõ¯Ó›Þ$®kë„öà§B¡@.?Û·oß¼ys_____ߎ;úúúh›ËçóT.‡3ÿÑfÄÅPöœžx≣>ºš;_ýêW_{íµ»úê«¿÷½ï=ÿü󚣌Œ1/¼ðÂÊ•+Ÿyæ™çŸ~ýúõ›7oÞ±c‡ïûÍÍ͔ޫT*Q‘#,ýO¯{Ýë>ùÉOžvÚixqÑ¢Eo|ã«ÇVª_O>ùäÑG½qãÆIÝå6nÜ8{öì'Ÿ|ò¨£ŽÚ¾U |Pr“\.×ÔÔÔÐÐP(òù|[[ÛÔ©SgÏž½pážžžiÓ¦Í;·§§§§§Gkýáøxä‘Gªiÿ®»îzÅ+^‘Ë娎ò¤tÕUW½8Rj”³-öÝ»ÿëŒoÕ`²o ?(i§Â–­„Û¹(8®ùãDX8øˆÝ^œ0PÔ[L8̯ »×¶=b†¯]nJ¢egÔŽÑD{ s‰]Æ'E“^¢ˆ ð sZ8ü« Û9Áä 2S &NlNt/~Û·9}(Ä.á\S:ÂÁÁ–?\PÌ î9ÛÌR5äŒTT¹ЖÓ>BЪ7b²” ËÀ¦D„í8ñ)áó¨ÀVEûdщs¸“è9¾ÚÆ€lér2ïÜ( ÿÂYˆjYðÁ .r1_ x7.‡)[´âq"!À»ªö“ÇsW)¿(•J‘ gg:cG@ ¯ã#è­CàB¥R¡¯˜“Ÿ âšÅu›Ý1 €(«¨Ÿ‚… 2Tâ*c`% ÞîÌñ\­fç±ÕœSv2a×fŠËãÛ”µÞ1_˜ ¹‚-:ýñÔSÒ}JY¥ ÆGq b¢¨˜‚äpHÎ *îG§%L™°H(%<…²š„Юª/IÄâÊݦÆIWO§Ó¾ïçr¹‰‰ ÒØý Z+©LdÕî Õ‚_TT.—‹Åbsss"‘`”Mwé âÐ¥ÞÞÞ}‘n¿Q6›Íf³Ó¦M[¼xñ¤73&¨··wçν½½CCCÃÃÃÃÃÃäÞE[ •´ nBÍ}ßÏçócccøù¬ÛRJmÚ´ioaj/&ÒZ~øá‡~¸¸žËåÖ†é…^à¿IiË–-/nn÷ôôø¾ßØØ˜Éd¼ “7y#"dO /”RCCCCCCt‘ܾžxâ JTGzÅ~vuu˜ø¯ÿú¯³fÍš6mÚŒ3f̘ÑÒÒ²Wº=66ö"Øomíöà´˜8DËX ›ÄI,e‚PJQn1RÚýÈVh¬Ñ¢Ê¥8ÆÄÇÙZà$VÂlˆBmð"é¦<:al ÛŸ5G ;Å ¦Ý,ÐÆ6¢3b¼Ü,šxzl®f2€)Ængn8JŒåƒ/bËS66>®Ã\â' ;ÒAþ/¥e £p 4 |‘AOv’ Ç~â”é à‹^-â(q€4ƒlÑé:áD>$t#Ÿ¡œ¬Dÿ²’釳žSÖ?üµX,‹Å¦¦&â*—œ§Ã|êC]]]GGel¡v¸È=Ñ ?žkìA Âþl^âº6F[‡4VEÜ.jæN"m5 ëøVjmDΚ0n넨°ó™BtÉÞx{a áå\¬Mn_¬k  Μ+HÇ¡ ÇO,ΡÜ6õ9?‘lŽÍÔa/>® & ROYx©Š¬Ib-Ðý˜‹_a{2âDà ¼iÄ`W9y™Ø*• ;ÚpOعFð_êCI\¾X¹ÀJ1 1}â-&"ä\|ƒœ§G>^*•(‹oË,á”+" ëB>€ðxë \+˜?Ф€544¤ÓéR©488˜L&[[[“Éd©TgÏzBÊö< ñÙ¯8;æ×C^AIÑ5×\sÕUW‹Å‹.ºèºë®ã¥B‡ /skOè²Ë.;Ð]Ø·ÄXX57GaaLýýýƒƒƒÃÃû”¿F»D K–,Ù+A|/Jzá…z{{·mÛÖÛÛÛÛÛ»}ûvÂjwìØA÷õõQ½>q*—Ë~ù¾?22222‚Írïg?ûÙt:M>YäíØÖÖÖÝÝ=sæÌÃ?|áÂ…{1döÒ!Ä5„kýžÓÞjG¹´:Ô#QÍB`Â)™FˆA°É§ÂúnÔ{Qá¶Ã9ÑDAu?~\x'é©ÂÒ6Vvyþ[Cj žG䚩Ʒ‰–YŽ‚Ã„)"Œd…ÊX)–«—"‘¿L…“ EqU„z £Q‡vt´Î5•ÑdCW Ù–¬ú+0bE³&œK…îÄ¢`|³Éé]ÀŸ ò{U™-ŒáêÐùÅ~œ[6ใ˜ Ú]Ôáñññ¡¡¡|>ŸL&qâÈÅ’úIlÌ£PñY&‚MûÔÔsòßÈ‘X[?9wãò™2á|F RûÑ:bÙeÂLÔó…K …Ö9A¢{Ü%Æ>pˆ±óòäíÂ)Z:È"Šð± ûÕŠþ0ëÐÃTìº ŸqNZbT]ó%qjjºŸ¥—¶Mᆃ‹E-.À/„·P„|H &à íªÊµ½Äï„>äKb×`[,1å<†­ùáœ\by€Zk £ÆA_4[<įâLH…“‚ nl„ÕT8åb¶ÅímÊ^¼bÏW°‡0Çt8–†Œ‡ö‡X¹>I5 1ã§ÈÃwNöÚié….K÷Ü-‰'äTh‚<¿år“Ö#P¥‚|… ŸŠc6Ú]MʤÏ&Ò@(êplllppP)ÅÏJ©îîn>ìQ{UKtÒK9´èî»ïþÔ§>E_ýõo}ë[Ï:ë,¥ùûaiÒƒ„|ßß¾};y[ 488¸sçÎ;wö÷÷ ŒŒ ù»’÷ÁI_ûÚ×ôˆ"Ú%,¬F‡( òïÿC)õ³Ÿý,æžáááB¡`ŒÙ²e‹Rê¼óÎ3ÆÐyK©T"Tˆ[è[N6Þ^B6›5kVL¶/cLo@~mÚ´iÛ¶m;w˜ GEúÜ Ÿgrãâÿ²Ï—Rª¾¾žÌª=w“>TÈV^Y+J¥R!¼…m" ³“߈yCðq4H870+¨à2¡+,RV QÇvìðéÀ²bd¼Èb- õþñ™”ó¨v‹Æ£ºŠo7Vè“ cFx¿‚ˆE2 !äG—is¢Nl¹ÅŒ‹‰¦ ]œœw¢¶~[$*ä Hö$5Èu©´EÜgމbFë”؈¢·g2Ô°Y„²e? ­TÎŽâ´E"^œìI7R&“!Ï…r¹L§°„bP>?(Ç–H$èƒrµ‹EެÑZ§Óiöÿ*•J”Û…î§.Ô~5_%ž}"~¹\& ׸øV1L6¿n_öKmPyk .OœM޲‡#vfc£èÃ@$ÚÆb+SÖ.ÁŽ„ü¸“Ãö®"d‡/ØBÓÁ‰®9q5• )—Ëd-«pô™ ¼ ™‚K6T‡ø²pF³÷F›É<×¶›=ðxiĥ͌å=S )ü í ö—K¹0Sv6$J&“”Énßù]âÍèÖ LÆÏ¨N˜Å†_L‡46K™¼ «ýɳ†#bb€O…½•ñ+¦ÃNjÆrg柈 ¶»“ŸÁˆKäz7.âW°÷:7Žü1áEê’ïû˜G{ˆÈÌdÏ£ ïŸ°Ìs!Nt!§¤:ôö\.·aÆ͛7wtt”Ëeß÷[ZZÒé4}O9Ù>¢¼uÈ%gZ¿~=ýñì³Ï~øá»”Ôp?Ð/ùË|>?þ|Ö M€(“âr ;X£ª´fÍšk®¹æšk®!³A)Å›ùĘ]îig¸è¢‹XYTÁ‘8jÙíß{ï½Uöd?øýi­»»»»»»cî) ÂlÓ¦M›6mÚºuëÎ;)\—¾ô åЃù| YV4ú" FRŒ1\ÚeB½\$5H'“ .<ÔaJ-êå ÎlX5øvÛȲñ°KdWª(ìÛ¨)ÃSkn–Ue>89ÿ¶Çe[q|Ù®Ã1AÌj‚=§âu*l0ðÍU*<´é‘U ‰/Ž¢®®ŽvË|>?44ÔÐÐÐÔÔdÛŠ6 kÁ)Ø%4¡ù º‰MŠ›p„ˆ²ìù(D…á-¶fñ¿Õo üÙ˜ün<Ï+—Ë[·níííݲeËððp}}ýÔ©S»ººêëë)¯"û¯ZµjÆ dÇvvv¾ìe/£ ¼T*õöönذ¡···R©Ô××Ïš5ë°Ãknn¦‘SÐÆ)¸“d¶Ñ)Ž\879…Í·R‰  ϲ¯Š€w±Û–FÉ·Íx7 ÁÀkŽcb ~8ñÙh »øÙƒBy3a”%œôKbç±²Tà}Æ]å”Ã[ˆØê0š£¬}‰ {Òš0(ŒÇ…½eöò»ÀQ_²ªEÉ¡½v¸o}FÝsbOÊò#f¦ÅûbÓG§G->‘¶(ÒB¢ h®Ix? ›ˆ-E!TÁ‘%ö÷š‡ÌîNª:2aÈR|Ñ—¡¨¥€X•¶|´í¯X ÿµÖ|´¦ÂèJs jöìÃeBœœ˜˜ "cù|¾¥¥eÊ”)”‰dmþæÀF\2ì>¦‚ýÿëaãÊòÒÚÌçó###¹\®\.“ÞØØ8sæÌ7îܹ³X,–Ëå)S¦´··c2™L6›Íd2û:}m Þ:d³#µ¶¶žsÎ9ô÷-·ÜrÆgèÞI¢b¢Æ_i­÷VNœÕèEOŒIEáS6‘ŸðÞ"ú°Õ××O™2å@3C©]t[»víóÏ?¿aÆ-[¶ìܹsppptt´X,¶´´¼à-cyß°é‚*àþ¹lã_XÚö¯~8Ë• à*;Y•†LhJ‰ìZ¬ÏéÉüç…6ŒiPØ3:"ŒN h¸bR$'Ö ÂÎbÔs‘¿!¼S‡£ÏЮ0pØNÎ,h¢ ?19)»ÂÎ÷ùÒä!ÒAŸë‹û,ª@bûʲ–ÅãDN$Ô¸ FÄqСÓõÑÑÑ+V¬Y³æ„NX´hyÅCØH”$;õ{^†” ŠKhEõM5š&Ëz¯ÃÛÉ%cy"&ë0ÌMÑÒ {µX,®[·îŽ;îØ¾}{"‘èîînjjjnnnkkK&“”´¥R©444lݺõ FN:é¤l6ËC©T*›Í&‰uëÖmÙ²%›ÍΛ7ïÄO<üðÛšš8i´0Ûļ0Øïg_X¿ü_tqBoD”"[$aX§NEO¼ÕØÂÀûâk.í*ŽiÀ'E‡ƒ+áv+Hfx²ø-Â#ÛôŸŸ˜˜èèè˜;wnKK y(×ÕÕµµµ¥R©iÓ¦566–ËåÕ«Woذaûöí¯xÅ+Ž<òHº“$læ''ßAÙ&¼R…C˜í ²!?ÎЄ«›Mn.7áÙÁ8ý c´÷ ˜ùÏ¿"()ö¢˜ 7ONã¹R_q±”:„œTð±\e¹E"˜.<()ÕÀy ¿—ýþHðpǶáÙ¯G ¹nGÌnÖsU,åmM…I|§ø"²Eˆ?"¼À1†Y„W0¾@ñn ªf–LÞ±{޽(苉ç:")› — £Àÿbþ/~/j³ ;^}8wúÁÏ%z­ârÓPùA ·<Ñ&Œñ! Ç zAáWq3O¶$¨ŽûOƒ" —¿)CPðF',ÏóFFFžzê©»ï¾{óæÍ‰D¢££ƒ¶P,ªH‹ˆ?4ì"§ÂŸ!! ÀÈE3ø“J<§#‡‰‰‰-[¶ŒŒŒ´´´P”âàà ù‘)¥ŠÅb.—+•J”œ‹‘²}G5xë¡T*uÓM7½úÕ¯&¿T*õç?ÿùÓŸþô¿ÿû¿„)––,YR.—gÏž}X@³gÏ®ÁX/V¢Êtº/š={ö† ÚÚÚ˜SõèqÔè@ÚÀ\ú@w*²ŸHY¨ý…ñßl'àm”xT˜3VØí³*ê|E„áýtÀ°CK¶*ŒƒÅ·ð#¤€: -ì¿°ö¹e2¢ÎSb>²Ã‰”Ê@ mj­¾¾¾®®®X,j­Óé4mPétšYÍè[ìNÛÞ¶Ø£î4lb„D0SÌ2ËÌ–-[î¾ûî§žzª«««¡¡ÍglSVE˜j(ƈG( Ž´ÅŒ]ä„`Äó„ÞΞ>¤‰q>Åÿ’e Ú¦ LjGLà—A¨ÊÎ;ï¹çžGydÖ¬Ygžyæá‡ÞÖÖFøݨÀÓvëÖ­ÔÃ… .^¼˜œ¶¨|hÚØØØØØ˜H$–/_þØc …\.·téÒîîn²‰!÷]RîÉ…Àçm`ѹ”xá8§§[3ŠAü+EÝéYÅ.ìÆ; OvX·hö¼Äè~ÛP ß‹ ðÄÄçrâá£,q³èj»³Å³­}tÔUáÕÇDF@8ß"ÞÉÎ,1S£"<¡¢îdòŒpÆnîf¾wn_Ærì%içnÓ=« ‡SlìNªòÆE|¦qE¶JZœSÞŽ<+Ͻ-¶<ÛG\5Œ@‘[–P' e&ÐèÄwiÐã ÄÞ yËÕ±ŽïÅ ÷ÿFɧAþj­K¥ÒÈÈȆ 6nÜX.—ÛÚÚ&³:”4 ÂÓBG€žpHàE‰néíÛ· P%ô¾¾>ú 444P¿ÝwTƒ·%ZºtéÓO?ý¹Ï}î’K.;å”Sn½õÖãŽ;î@÷ËA+W®<Ð]¨Ñþ£÷¾÷½ï}ï{t/^*Äy÷jT£]%§nMšœÉGt7ÿ·WlJáÁ¬€fDÔz`¡uDYNMp¸i¹Ð€G¯Ÿ( uäÛ8ô ãhl3U(Ù\ɶLòê;?…Ê1â#è211‘Ë冇‡FFFòù¼ÖšÃ&&&‰‰D‚CÌYèë룖3™L{{ûÔ©S»»»È|ÕA­.N ¢ÀÔ´]Hã"qƒðY3ápN4**•ÊSO=õôÓO/X°`ÆŒd÷Ú¶ºÍjlµy”m‘b‡Ñ@UaxËW®T÷‹.!Äc3…Á¿Æ8\åB ¹ªIRWW—Ïç{ì±+V$“ÉãŽ;nþüùííí™L†jäQê+fÈ /¼°mÛ6rÝ:î¸ãfΜi‚¤K¸XšššŽ8â }â‰'V¯^H$²Ù,a^X¢‹)ˆál®)|BÑ!%Ê–FpíÒIåÿ+r9¹ŠqUöt›0`Ó6¹…°ÙNaQÝ Q¤ -´ðApJrÌêk6LÏU¼Ulò Íø€_äCÎ/em€¼WÞÅ( à¶L@ ›Ó\w¶€;¶XqÔ={óǽZ0ÖAlÎM€úŒ1ãBö|_ðAôôÁiŠÙ¨ð ~ĵ• _„r…¾{L‹©·‘|)Èã(°Aôk‹YVQ¡Ø]5¸“OºH „óÚ$„ŽwB”^ÔáÖÖV ¹àS:!:Œ¾ñw߀ǯzºÎj‰JúRŒáøøøØØØÐÐP¡P Ìçóýýý”ÌS(vîÜY(†‡‡»ºº¦L™âûþ^¬OE5xë£îîîo~ó›º5ªQjT£ ±²«&3öÇHa¤ükÆÂÂ$2£‡æ« ^ðŒY‡‘y¸¢:¦Âf³ó4’-&î¶#ú̃­òx“5r>çÒ¶¡(ÔwNG2>>Þßß¿mÛ¶ 6 ”J¥T*ÕÐÐ@GÁtÿèèèêÕ«_xá*)8sæÌÖÖÖÖÖÖ¦¦¦t:Mà`±XÞ¼yóàà`}}ýœ9sN8á„#<’ Ÿ±+Šªðy»²ôïjH D8elÿƲ֎F8ݳzõê|p`` §§çe/{Ù´iÓÐîrʃ˜YmavQ±?ø8ýmÆÂÂTؤ‚'lÑ2  §¦µ¦ÓøÎÎΩS§Ú Wa6Æ’;\¹re>Ÿ?ùä“—.]JÙjêêêÈFÂ)yúé§ÇÆÆ‰ÄÑG½páÂT*E®‚7“ç I{6›]¼xñèèè–-[¶oß¾zõêéÓ§ÏŸ?¿¹¹™Â~qPÂ=DñP°o;ö Â[à9Æ$Úk¯qä*ÊFh(ö7ÈoÌJñ]ù§Dˆ1u»T*ÑE²ŸÅS|'m/”‰ŸÌl^ÙKÈ *Ø ‡à¤K˜‡OÕ0}È-È}@?²\³’ ÜLJ¶9OEåh“'oSgÐ=JY†‚ “·Y{¡Ù öáàpú¨qâ'uÛÙ¸-*búøcçÙT®€\Þ[Lø`I…a,N)FgóeOH/»šp´¸ˆWõ Ž$é*¼Šù6~ ®&DsX`8‚UBÍ :Á’¬¬ÈG1@DÃżxVFBU¡jÁÂâ9ÚÔ)êhK¤´VJ©T*5eÊ”žž*¯Éþ³øÕ°=é(b||œ‚ÄQ~^'ÿJ’"ª¥NÎY½½½„aŽŽ e³Ùþþ~šÖ‰‰‰B¡P©Tr¹g¼U___ +v›jðVjT£Õ¨F/ 2Ö)½°½éâ®"\΃¸I‰By°cô·ðaÑíEA¢hôAã;Y‘eç#ÔzÙf¦2Õ˜[ CØ6ð\ù•8¬†ß‚¯Ð‘$jÈ:pb2p:M6§hV<Îö¶8‹¶a®rzL DhÚ¶mÛî¿ÿþçž{Î3eʔٳgSþïÆÆF¥%ˆÝ¸qã<0:::>>>cÆŒc=ö˜cŽimm¥X•‰‰‰úúúiÓ¦•J¥¶¶¶'žxbýúõ”’£µµuöìÙÈ i,üNYïó˜H ¸ïálÚÂÑÙ*ŒÅ ÖÃÀ ÞC Ð F äS †HÒé4ñ„ cáé¸'‹ëxºÀ× ¤Cÿöpd)âR±cˆ#ÑF?µÖ£è àfÄ_вŠ3‚#&‚!*Þ1y– çÆ²q:\ ˜!N[”x?÷1qçî§,ð‘/Úѯ ’âO´ÛÐÂ¥ÌÑw›_Áq¦´op²-º‡á¶}j¼R©¤R)Úsh±d2™\.GU;ž{‰‰öööyóæuwwÓ6KëšÔ\õ8^\³ôv”OÚÄ`|œÉwddddd„Š•ŒŒ Q©ÄT*EEÉY¼ F/ ccc,rû”jðVjT£Õ¨F/-2Ñ(» líy7è£ö¯âøOæùWr’Çâî¶-Äy7¸¶{œ­Ý7ÐàÁ“OÑOV µ•X—µF .ø Sað2V ˜ g¨asQ… -}z:fÒ¡±1¦½½½££ã/ùËÊ•+Ÿ|òÉ#Ž8bêÔ©ä(:†ö NŸ <¼ç"¯ | j¨©;%Ü@4á<¥Â–3Me©TÊçó+V¬X¾|ùðð0yŸQŠ\œPaÞ8Û½>¤»B«O¬»‘R©DP/¼ðB±X$„H´`Û*BÞœ‹ MYvv@1‘óùüêÕ«Ÿx≠‰%Ûä×ÑD:666ÖÞÞÞÚÚ*lQ®ëGiÎþú׿R¢–¥K—Ο?ŸÜýÐÇŠÖ2£·¾ï···ŸqÆëÖ­{òÉ'7oÞ¼víÚùóç3Äcã5>$iÆ®rnu–T+Äcg`ÝDd»C‘VÖ®Ë?ñp¡X2@À1\Bü¨œŽG˜å8¹¸ú<¨¤&âžTò`€œïÄ~…ˆä\\ò‚±B\Ñ|…yÅóÂ1kÜܾh0=Â¡Žø]`—%ÌLdBN´‚lDìÓÕŠŠÀ¯m„È™ÂUøë Âß\ 6,.¸ê$ì’LU¸:'z=;å9jÈ΋“@ÞYz16RaœÎ‡”mQk…„™Ið.&ßñ2VxóËS¯3øÅ 1M¢K42>>N¸3-[ZYãQùðŒÞEy³¢FGG×®]»cÇŽººº®®®iÓ¦Õ××tK‘ìïCqc |ä…Æ®è¸#ñÈfè½ù|~lllçÎtz‘ÏçGGGGFFÈÁË0cËåòðð°Öšt µ/©oÕ¨F5ªQjô’#V÷íêuû§NbÑ GÓ»“ضh‰TCa±ÙŒþù`ñ»0`͉(ëTo&ŒŒóøD‘ £WBÝg¬(„ÎMh6ØÐ¤¬Öà–.ò €X±bÅã?ÞÜÜ|òÉ'qÄ­­­ l(Òð׬YCÐÒœ9s(“7JÉZëb±ØÙÙÙØØH)oûúúž|òÉ%K–̘1ÇzjÜ=ÑUÇádñ«°ë [ò¢r pVdG’|Ðz{{ÿò—¿ìرCk=wîÜiÓ¦Q²|D¸Wöˆð'>„÷ Œc<¶e¨S¹\~â‰'î¸ãŽt:ÝÕÕuÄGPµ\ ·q®\ÂÃþ ‡ÅºCƒ\®=ccc7nÔZg³YrOÀÛxD>$¾áÖ&&&¨ïÈÈÈ–-[šššÊå2ÙTÉd’á˜\.·bÅŠgžy¦\.}ôÑÇw\kk+-jÖ™0"¬”š;wîᇾjÕª\.G9_ÈÇÝ‘pùÐ, ‡–£í‚ü¸|'ó‡)ó¶ìýç‘ '·Å T8…¶0Â…¨Ø(ƒÎQÅ›!Ek2$$„_‡+'ŠB³7+ÛÃ6@ Ę;ãEäގ߯¼  «}¿ Š]°$#ÿ¹^"#[мðg……ß±–bq‰Î ¯ìá µ‡iÿ*âÓq8e ¶;my0‰p9VœœÇýdÉa>üÈÚ¸hÁ­¢fÜ ×7ˆ—çVæÜŠÅ¾¤,xËæ¤|)ËSÌ—x#`ÁYã¿y3¡;Y… ]ˆS(ÔÅI<Ùg™eÀ÷ý‘‘‘;v”Ëe򵮮ÆH硽Žñ½¬Y)¨o‹Z3–vQž^5Åbq```Ó¦Mk×®¥”ötú³Hs0Æd³Ù\.§ö%Õà­Õ¨F5ªQ^¢„j%]Êô>%c e±s|Ä‘¬t²¢Ìª*&dj½Ü¨ÉdR… `ql§}á›` ¼Í~ ‡¨ÛE\ŽÐ•Rt੔°/é{ãa¬Iá-q'¿Z±?õ÷÷ŸqÆ‹/îêêbsŽÏŸ‡††È«T*Õ××{ì±3gÎä@ Ì ÍÌ©¯¯Ÿ;wnOOÏÀÀÀÖ­[ûûû§NÊ‘kv϶ÅýDûÚ¯¯¯×AI6­j 8ÏaeÜI/œÍó¼ááá'Ÿ|ò‰'ž0ÆÌž={Þ¼yô.ñ” ™¶E„~*lÊ:S|œI&“›6mºï¾ûž~úéc=–L’6ävcµ:Ÿ|c©^¿~ýÀÀÀ‚ fÍš…™\ÄÚ1áÜ.*ˆfêéé9á„|ðÁ|pppðˆ#Žhii©¯¯ïêêbG°5kÖ<ðÀÃÃÃMMMguÖ‚ ²Ùl”!Š #‰•/‹*¨ Á3k?ˬ£; à‰ŒàØ+Ž-CÆG8"É6zÙuHøªDá 1hã¤ókÀsS¬,î{X4ƒˆ“£#Z„#b«¢”ÚˆÞàt™œT>9C £KؾB0“¡v|–ÇHSÖ¼o>¤‚B9³#® Q1“[âƈ D=ãÅÆ(„DE@6(¢çN%lÈ1»{îÄÎFÍòÆëœkí }Å_߸Y¼YL=<¿vkx³³‡bºEãNV ªˆÇ*ŽÙHÒ¸„+o¹|tÁ¨y©SÊKòÌ"µaÓ¦MO?ýôŽ;èÙþþþ7.^¼˜¾³ü^?(¯Œñ’$xìym¯b8sc(ñ–çyÅbqçÎÛ·oß¹sç–-[z{{GGGùÉFyÔÅb‘"GGG÷uˆb ÞªQjT£Õè%ABkTàÍ¡,½p_¦ó?±þGJçÄa%•½èu½B Yžœö˜]úÙEÓÎ¸Ž©ÞBþøP®ÎVgéˆU‡ÏÕEd‡ þ].— …ù³ 7¼ _˜SÝG%›“}[H¨ªlÑá(Œ1ù|~dd¤T*ŽŽRZccccc#qÌ÷ý^xaùòåÛ·o/—ˇvØÂ… );,˜ç¹ã†ÎÎÎyóæ‘ÏW¡P P;<ÿçž8"44$.I¥R"Ô‚yÅ‘V&8£6'…rNÌ)—ËÄvÊßlŒY»ví}÷Ý×ßß?gΜ³Î:먣ŽjmmUVð'Ïb ƒ1An–, RèцääA*Èë„«ƒžæ™gV­ZåyÞqÇ×ÝÝÍé“(D ÐHlxøÄN!gÂA²òÉÿåÐ2«¶mÛ6uêÔ³Ï>{Μ9hN³±¤-ßÏ󺺺N;í´l6»uëÖµk׿r¹úúúŽŽŽ¥K—vttd³ÙáááGydíÚµJ©N8aéÒ¥~8­¾§<Ë|ëx»`£‘7šYÎtc‚4LLtó”kH@ÃÑ=䤀™hÙR¶&Ü%Hh©3&ð~2K©ÎOÏ-s:pd,çb/*áÓ¡`AFxâ-Î',6N˜€|@¸È¬Û—±0eûƒP)ïf*Ú2Œ,Ra0Nl¹8¨˜ 8mp¨0Ú¥ÂøŽ†tcÊ"ä›§—BÏGÔŸZ{ù~ñ«¦ £c<­Â÷Š%»ÄŸ1pþR³ÄªÀˆ}T4ÀGDMZ’ö0qhÌ.lY‡“pj|(Pà‡S::™†Ñ£85¢Y{¢·¸¯2ßpÃGg.Ú 4”£eʇx|ß÷ÇÆÆÆÆÆ9ÅŒoݺõá‡~øá‡‰DssóìÙ³)="í æÐX!‘O .Fœ¬B¡àû~±Xêïï§ÂÊ¥RI°4jº9—h©TÂm_P ÞªQjT£Õè%AB÷Rp\¬"¦}J¤Ú:bË̹Ã#Ra(DVésâLX¨ã:ži¬P/†`XýÅð.j?!Ã}š·ˆ¼ÐY†û)ø£¬d·bDäºâ%À…Ê+[û \ÞÚÛÛçλsçÎ矾X,666Μ9sÁ‚‘722²jÕª 6”Ë寯Æ%K–ôôôP|c:Ø[Ö˜Óéô”)S‰D.—ëïï'Ï/´á9K.òí çùR„˜ ÞžÉdH–„ýFc¤ÜºRó I†0âèèèÊ•+W¯^ÍfO=õÔÓO?½½½R™p—ÎEÖ>µFøûÑI;ÞÌÑ"Zk ÓÆ<: ÎoݺõÑG<òÈ#-ZÔÐÐ@ FÔ*0Ay ¨–:ÎUìA^p6G …‚@©x*¥f̘ÑÚÚºtéRš;j½cR©T©Tb ˆM5¦t:½pá¶¶¶þþþM›6Q6·úúúÖÖÖL&ãûþ³Ï>K¥g̘qòÉ'wuuñ¶€X ûrŠ%ÏP‹ꈱ1—êêê(v†øCås¹\©TJ§Óõõõ]Ñ‹ …'™¢ö)ê‡KOðß¼u+Êå2Á¸¾ï×××§R©b±Hì ì9€IDAT‘8¹\NkÝÐÐÐÜÜ\__OC£²bJ©d2¹aÆááᎎŽ3fP—TŸâ8#ÂËúúú†‡‡§L™ÒÚÚÊÒ%Ö‹0¿qcÁY¦ý‡ÓÔkÿ²íMž# DøØ_*`’ÀÝ’_¡!LL…Aa'W§qÅN¢l`OlèDñ§¶?ò0*ê™Cùx“Ax‹ ’4b)ºF²g ¿Mô+ft²™ ÐaNìÅNmØ úë8ùà!‹ì’øêùP4“‡£ÃaŒ¼G ÀWñ‰Ç9®[Ú Òä§0ž'ÕüW…1ñÙÅ— Çs?œ¾ŠŽ=صÁtv¨¤fÑ]Ô瘣¯ÀÚµkgÍšÕÞÞN3X(Ö¯_ÿØc­_¿¾R©¤Óé9sæ¼úÕ¯îììÌf³år—žªyØpè" Ÿá¡£†\u*KÖÕÕѧŸ²ÅÓ'XxÆ1¦\.“›í¾£¼U£Õ¨F5ªÑKš„ETÍ#&|îmë‚U¾×y'+dœÆ°YŠb`Óž&ÞvøAv±A^áKíÏ™Í(!Ü‹WÄ«ñÔJ0û`#bØyñß©"ªOŠ!ãØùWFéÊÕÚÚŠþ¡(r8³v'YáªT*sçÎmhh hs O(z¶©©iÖ¬YT–4úâÇ‹¼M »ç³, É°»²òÅT*E›ýD߬b±åKè\’„‹ «}I5x«F5ªQjT£—±²ˆ¾K»Ñÿ ÑÅyæn÷ô0Šî±mvÊàG†p"MQª°¥bÂÇÔ*ðбCœ§ÊüFaEØ‘cç%FÊÉ2ðº8KÇ!0f$ Á¤6ÓZ§ÓéÃ;¬¡¡=2š›››ššFéëë{üñÇ·mÛ611ÑÑÑqÔQGM™2…-ÛLbóƒÕwâáHØO}öKÕ ‰9Âݼ ;û¯ÌÁ™„13¥„&¾ïSñ¾µk×N:uÙ²e3fÌ ð‹YÊüô!¤—}23ŠÅb2™¬¯¯'‡5Š(a€‹&&&†‡‡GGG‡††š››ÛÚÚR©ÔèèèŠ+æÎ;gÎ2‰W¬Xqß}÷õõõ544444¹Ëù ŒŒär9ÏóZZZ:;;3™ GÒQíö­[·ú¾ßÝÝÝÕÕÅ>cccCCC[¶l¡>Ì›7¯³³­;–:B£Ø ¢Á’Õßß¿víÚt:MFO F1Ñ«)9=ÕÿÒZ?øàƒ+V¬˜˜˜X²dÉI'ÔÝÝͼå€;T]`¡B±/ Û¶m£—&E€Y_½½½kÖ¬Y¿~}ooïöíÛ[ZZŽ?þøžžžÕ«Wÿõ¯ÍårS§Nœ?~kk+a^›6m:ûì³/^LÞj*€ÆÇÇ×­[÷Ûßþ6‘HÌœ9“‘¥ÔèèèŽ;r¹\.—[³fͳÏ>»sçκººÖÖÖD"‘J¥ÚÛÛµÖ7n\¾|ùæÍ›{zzºººòù¼ïû™L†¸—L&7oÞ¼eË–“N:é°ÃÃ…×>¹§mݺõ¾ûî[·nÝË_þò¶¶6?6o·½²Œ+‰!‚^8ÌY…!rΩOf°˜k±ÛØ(Ñ0P+ÝnîÒñíàîÍõLD#¢±wáW@|Rñ«áA’/þÉYò‚†ÏÁ¶bî¢\­5xqŠëB–m“(ê¢ÂðФŒEÜG…Qo|&Cq ¶ÆÇü®(,U…¡¨¨Á2úí¡ïÒ¤b#°Îr¹Lƒì­ŒÐ¨Ù“š}ÈàNóN^N ---\ø‚>…™L¦­­*ÀcÚÛÛgÍšEŸžD"‘Éd0' iS&œ6^…c0Å xÖX9¡ÎèèèÀÀ@ooïÀÀe‹·ÓùÅS¥Réïï¯þþÝ ¼U£Õ¨F5ªÑK”´7©À$ðT¤ª|µ³A¼A¸nñm|*Z`Çv+À;muß~.µÕq€Œ¿€Æœc4.çlœ²,i±1 lÍgªö­ÄÕxÍ?‘¾K,"ïv[khhH§ÓaÄá¾ïoذ‚3™Ì¢E‹/^L fiïE¡ªT*•J¥®®ŽÂµØõ€N\e3ãé‰D:Ædjä®5>>žN§¹VÚøøøèè(e®íèèhjj¢ä÷Ô‡¡¡¡B¡L&›ššêëëE±vʵ|ùòJ¥rÜqǽìe/kmmåÊ|>O9ÝÉ?…ºM¡ÂU½½½;wîìííM¥RsæÌéêêÚºuk6›]´hQ{{;1“) 7n|ì±ÇÖ¬YÓÝÝ}Úi§M:õ©§žúõ¯Ý××7wîÜãŽ;®­­mçÎ<ðÀóÏ?Ooéëëihh Æ …¡¡¡-[¶lÞ¼y`` µµuÉ’%Gy$A?55¥Õjëëë¯_¿~éÒ¥|>ÿüóÏ«øh²,ûýþ7Þxc||üèÑ£   MÞÜÜ”eÙãñ Åb‹‹‹@ ¦¦Æív›L¦l6k·Û·¶¶Þ|óÍåååD"Q[[ °O¯×›L&¬Zétš§P2W·-éóùÞxã7n477°H ;†â•3TE‰r`¥ÞR1C±tèõzÒÓ‘׎ ‡õ¥r2Ý…ß”W©rõ¾±ãÝû«\9…b¸VùûÊ®ªX%`ÇßoñcZueå ˆÞ}Bpm8| ‚T/ ~€ÁJÕV;V^(Œ-®MC¡³ \ŠÞJ;vúŽ…#e(ôŒ;~WUj@sM ªÆ oóÊáq7pŠ„º• ñÇïeÚoPžÙJ=u:†@/NF4;½Å4Ì®+ŸÏ'‰p8\UUåv»F£,Ëx “É„·˜Ëå:zôèðð0!Mx?r'C’“þ—~à@'yÔŒ8¿Ñï÷#a"Ö1úâ}bиZ,zãý|þí•]xk·ì–ݲ[vËnùñ*ªm+?ѽÿ‹¨—û9 åeÇp… ÷Jl·ª²„Pé;È’¹2ºÂB’.ú+*L‰´+÷ë´×¤*‰r8 è Q~M:Ûç(w:§->ÝG@{7@+w$ENBסVâê9"4á1ñ§\.‡#b8ûò`^(¥R) MLLD£QFÓÚÚºÿþÆÆF"ÐS“·q£°u}2=»ÝNj Ú@ûýþ`0XSSÇ%n ŸËå¶¶¶„õõõˆùÉ!|¸½½>ë´­çOODÌ&èײ٬Édr8|À@[wîܹ۷o;vìäÉ“äÈeÇíÛ·¯]»V[[û| ººšìoeY—/_>þ|&“yê©§œN'êÈ @âØùùùK—.¥R©®®®“'OÖÖÖªr¤ŠH²"ªÅo¿ÂÁª§§‡<¬^¯×n·ƒò°ºº‰DdY6 ÇŽ;pà@SS#\ÿµ×^[YYÑëõÚKC)„˜™™yã7ü~ÿ©S§6”ûúúz!D óù|MMM/¼ðBkk+[ÂáðÊÊ >ìp8`dƒ&D"W¯^½råŠ,Ë­­­Ì´J`äçóùt:½±±qãÆh4ZUUšÉHU« Ÿø´,ÆOÙñOª¯H;‘ªxÏà¥ú _|TãAª(ªEžÖ^~5¾Âs…¤Ç¢ü$€GõXÐ@“áo©i’”Ü…ü¿´,D«j ™ÙiIådÁÔm´ô‰ò·§êÕ@o+ú·¤¸ã©ÚM”.2K‚)•#Gè©|>ÏpxÇUv¢TA²“ËKå[’¸²aé̆¦¹ÄM¾€ÈLwÏ?&•C„•/ÜÊuƒ—JºO«ŠNÏ”€`rð¬ä¤ï¸Ï¡¦ãì§R©q}6›½~ýúÍ›7···Ñ_°ÁP522ÒÛÛk³Ù$…º¥×ë=.U]]­Q’·"sHuuõ‰'†††jjjêêê0P‰®B²˜–ŠlIŒ +¨ÇÇ•,Ëz½Þh4âýU__ … Y<`Qõ£(»ðÖnÙ-»e·ì–ݲ[¬PŒT o=†[ï!¨6»¥«T3•RÇ{8•T†¢<&QQ´x”X¹³”ʹ ¢ŸïÍ7ß¼qã†V«}î¹çúúúÐÔ(>Ÿoyy9™L $%f©TšššúÞ÷¾·¹¹ÙÙÙ¹ÿ~àqª?æ©©©åååR©äñxêêêðr…E— Qqyî[r—CÕÚE+ºšja¬„±TÊÝnºã:¹c§«pf;Êᩞ€ÿîß²òíÀÉJwû0êLZ滵ƎÏ[’TÌDõ%WAQŽÑÅù*oJS0%ßÄ4QQùT]Yù¼KqÆ5”JÁªêVÜ€·8éI®ÐH–X¡‘)óþÂU5£(ËJÌ/Mô˜L[9‘HTUUá4…ÔTJ5ïV8ÞÇñGØÎÍͽöÚkׯ_ÇãF£±®®ÎårY­ÖíííÍÍÍ@  …ôz}OO^¯»S§Óa ŸÏç97Ld¡$–Íf³°zTu-|Í!ÚHÁr9Á\.wöDkÀù æ’v»Ýjµ»¿ŸiU9Àô[Tvá­Ý²[vËnÙ-»e·>¾°°ÒêëëÍf³N×R5‘$I´¡Åb²,766Ú˜L&ççç/\¸€”y8 –çì\.799¹°°€/bSžL&Ãá0r:Ά†ð_’É$yäc³îóù¶··3™ A*°f‡€ 1l¹Pí•••3g΃Á–––ƒÖÖÖ"ˆÂ!ùÊÊÊ­[·J¥ÒÑ£G÷îÝk±X‰Äôôt8~ñÅ{zz°Ñ‡Tü,!Äž={:;;ÉV a„i¹\naaÁçó•J¥úúúþþ~OŠÅ¢ÃáØÜÜœÍf³###'Nœ&IÒÒÒÒ·¿ým£ÑxâÄ «Õ 0!Ì\ŒFcSS“Á`ÀÈF£W®\™ŸŸ·X,ÃÃÃ@Cð- ¨ccc0 ëííu:h[DGä $—[ §ÓiI’ ¹K§Ó€ó “ª‘ ”x˜‚öL&sõêÕÑÑÑb±8<<<<†“ÙlN§ÓãããgΜ‰Çãûöí¢Š ´P(ÌÎÎ^¼x1ž:uêàÁƒ A›Ífoܸ1==íõzŸþùÎÎÎQÂ|>Ç}>†qKKKMM \º`ƒ¥jsÍ]»ï±Vó~G8‰¯-ÄÛ𣂯hAàðÖŽÈš ­à‡*hŒW˜òcrTEõIIIP U¤¤P=õŽUåï8޶ìøEIŒK,ë"æ~CJ@~#þø²Â†ÃÇHÁM”œÈF­­êhþö¡!$•§‘!»CÎÐQ5²j.ËŒ¥ËWþÊqÅIRüßó+”Ëù€•í¯º½Îø/å ¥ L$¬°oÌÃÄš¼¶¶ÖÖÖæp8ð1:˹:©ª¶\ÁDÉd2›››ããã~¿¿µµè6Î]\.WWWW ˜ššZZZºråŠÓélmm¼…¤­åååL&ÓÚÚŠºx‘aŸ€ƒŠT*–¢¦"÷(m‡$&'™a¥”•¶C´hƒ×–ÏçÃáðöööÖÖV4%ë®·lU¹¬ð”]xk·ì–ݲ[vËnÙ-o§HåN+|ù°®Ot:‚BÐÞNT„"B‰¥IuHâÚæ’$'–ðç’ãyò“Rmߊìè#£j©T ä® ª|:TU³“¡>E t ȘFˆò Š»çPÀÆe¸~"‘¸yóæÄÄD<·Ùlûöí«­­5›ÍªPŠêÃ94JÃp8¼ºº Ess³Éd"lemmíÌ™37oÞÌårhll¤äåÅbqeeåÚµkÙlvÏž=‚#S[[K{÷@ g.¯× ‡ÝB¡Ëå"‘ÈÅ‹}>_mmmcc#HáƒÁà­[·âñxkkk{{»^¯×jµÁ`ðÊ•+wîÜÑjµƒƒƒ°U’Iã­[·VWWûûû‡‡‡ëëë‹Åâäääèè¨×ë}á…`I [  eY¶ÛíO=õ”×ë ïød,›˜˜-nïÞ½ÍÍÍ`¥û›ššZXXÐëõ###uuu9@àÕW_½sçÎûßÿ~|X’$àJ¥R gíííýýý°4.‹ËËËç΋ÇãÐVUUWã;wîœ>}:™L»$—âJ úÙ%Ir8 ødCCBAšª|îÈL`E§$Iðƒ—Ù‹/¾¤R™cPÉJZ.°.¹´´477‚•Ûí¦ ”P De²nnnÚíö§Ÿ~º··×b±Þ¦§§ß|óÍ\.wäÈ‘ýû÷“? ³Μ9‹Å:är¹$‹£2>Ÿïüùókkk§Nª¯¯×jµ°v. ÑhôòåË{÷îííí¸;¶b±Fž$Iû÷ïß¿?ˆcœƒ¡ÈÓùI’D *úˆ†V‰¥¡à H%FO—’™d›IZ^hšsÆ -k»Q¥ÿã:Sò¥ªƒ(‡D9&"1µ8?‡ 5œ¸'r¹¿Þ”.ƒ¿_*ß8•"O(ž&’ª²U+Uó÷xµ©p%©BÛÈ;‚ÛHî£jX©\˜¦B äâžY<9/§ªÉ;ÏÈŒ¥Ê&LUUýÌ+,Ë2°u™„ñ¥ƒÃmÔ¼ôž"DFõu©âÄK”Ã[Ônø/­!¼‰ ƒÇã^›Kø‰Fw‘#”·¼¬Hï…p‹Ç+O’¤¶¶¶ææfðž`ª•L&³Ù¬ÙlÞ»woccã¥K—fff:;;hú wdÖï÷?óÌ3 ó9+˲N§Ãy*1qÜ‚E®‹|*W Ô`zƒ« 1bòÂ=p}}}ccc}}þ÷mñE€7æ£(»ðÖnÙ-»e·ì–ÝòcZÞ!U‰æ<\l‹oÜiK-+¹ÿøVLT°(Ä­ÜQQÈ÷¸%%*hQQ *)K<‡à=D£ÑD£Q¿ßïr¹ ¤å®FšÁýS*c<ÔÔ!ßVb[¼UÛ\l^Ñ>àŬ®®^¿~}ssSÑÑÑÑÒÒNª&ü.z!*€û{0, n·»©©Éf³É² /ð .ܹs'×××ïß¿¿®®Îh4âp8 ž={vmm­¶¶öøñã­­­&“I–e“Éà ¦]W®\ ƒn·{``VSà•+‹û÷ïïììG1ÆØØØôô´N§;xð HaétzllìÒ¥K±XlïÞ½GŽ©©©1 dŠ …nÞ¼i6›_z饖–È!ß|óÍd2ù“?ù“„Ù¡U×××Ãá°b`` ··4™%DtxëÖ­‹/f2™={ö8pú8¨<ÖÖÖÆÇÇãñxGGGww·ÑhDj¿sçÎ]¾|¹®®®§§0\³X,ƒÁ™™N7<<ÜÒÒ¢ÕjS©T,»yóæÒÒ’Õj=tèX]°6×h4~¿ÿÍ7ßœ››s»ÝGmii!|„ÏêÖL&NjŢÝnÇe2™ªªªºº:ÔDSž—@0r„&/ÀâñøèèèÒÒ’Á`8|øp__ŸÅbÁ݉5†ë†ËmpAøúOMME"ˆž@ÇãÀ$Êf³ãããðݧ¨U«Õnllüð‡?ÜÜÜ:yòdMMMUU¨ ?üáNœ8ÑÚÚŠž* ÆP(ôæ›o¢ :488h·Û1P%IJ¥R·nÝBrÆþþþúúzgù|±âéÓ§———ÛÚÚ</Ã䚯Q\Ã-KKK æ…¤°A9:¯Z‚TH _:4Šw.—ã,<΋Q¡0ˆ堉ꎂaÔ;o£¨ÖB¬8H$Ê¡ÕR_ù§J”/þr¹8 ÿU)㤻Èä+!EnoTùPR…Á™†ÙÃs¸ÿÒ¼  ÒTåƒ_õDüt=.Ê ÔéuÆsU‹qSHÁYø½a+7ÞnP…Ó'‰GI'¸_¡êý«{;xù.P) eÀ(1sz<¸×ë­®®FaޝU‘¼›ާ†Õëõ$ñã ¤OÁñ ¸„Èâóù|>_:÷ܹs“““}}}xÙὉDfgg'''3™L(ŠÇãz½„MÚ{@'žËå‰ê€ÞMÙl–Ž. ÃÄšŒßÐr‡³ª¼‚Û&¢Ý`þ•L&3™LéMåïÖe½÷¹G}Äô˜‹jK¡ÂƒÞö5+A®·wU¡¿Ê;ÿSx&ÊÙLü+²B­çp çD”ÊsE©Û±[Å¡(%äVÊœôÄwÀ¤ä¢;s°³äi°T©—ʰR¢%رüÝÚYªàGìØS¼•xÍÉ0>™LÞ¼ysnn.“É8Žýû÷×ÖÖR>;¹BŸ¢ áp‘`03#!D]]¦R©¹¹¹7Þxc||<‹étºþþþÞÞ^œf„ºsçÎøø¸$It:%z@ÕÕ«WÓéôÀÀƒétºP(¬®®¾öÚk'Nœðz½ªAV:sæŒßïokk;|ø°ÅbÑjµ[[[W®\YZZ²ÛíÇGMHê•L&¯\¹²ºº ¹™ÝnF£çλsçNooï³Ï>ër¹L&>\*•¶··/^¼^éèJBýD"íàòòruuõÑ£G›››©1ãñ8®o6›GFFššš¦Ü¸qãìÙ³Á`°³³³¹¹nÄPùÅãqÀv}}}ÇŽƒ5X:^YY¹|ùr&“ikkÛ·o€6uZ­vnnîÖ­[Ùlvhhhppìºh^Àwc:˜|9ŽL&³¼¼œN§­V+ò9ªæÍŠ‹è¯¥Riffæüùó±X¬··÷ĉÈ_‰‰Æ³!`/jŸ_Bˆµµµ©©)pöîÝÛßßÏÓ·axcHœ={Öï÷755=õÔS à©ÉŠÐèèèõë×kjjž{î¹öövJ +è©©©ëׯ›L¦—^z ÃÐ'êùêäääk¯½‰Dúûû>Œ¼‡®¯¬¬¼úê«‘HdÏž={÷ÁœL&oܸqíÚ5I’žy晣ÑH4:¢ÐºJ’¤×ëS©¸ä2F…ØI•ÄÏ»¬KB!¨Š¦¼àAvt¶ºÛz~·ÂÑ·—/ò¢à\jŒ WºŸ Òˆµšç+àÞO|ÅãXÒÝŠTn°¨Ñ8%‡3’¸s"Úk]¥+V%Uª ºx‰e,¥[pÄ¿þ®ª¼¨À:ïv¤$ØK¹ò»ªV¥6QÁ‚ªÖ¦NGƒ¨ÆØÝüÂDÅy›jVn'P´Z­Á`0ÕÚ ®ßHð ÓÑ-êÍçó‰D"nooG"I’Ìf³Á`€0¹A0ÑívCJßÔÔÔÔÔ‹ÅB¡Fu¡PˆD"KKK€ò‘ezzúöíÛ~¿Þ‹„@aµÌf³¸B4- UUU8À„6$DßCm ƒÙl6™LX‡ivÓZD]œÍf‰<ÞrRï8ÇeY~Ž]TvÙ[»åG¶¬®®þÏÿóÿüýïŸ[¼û˧?ýéÞÞÞŸÿùŸÒyW—T*õòË/ÿÍßüMmmí“®Ënùÿ—`0øéOºµµõgögŸt]B™˜˜øô§?}âĉ§žzêI×e·ÁÒ ò½2ɳ6§B}¾Á-±¬ê\®Bô¾ƒçÆ´—E°M¡BÕ“™2W°Ûí`^hÊÓ–ñ:Sz)ÕãKåLÊ¿ÞãOª}¿Ta4&3¹b*•BnÁH$ø©§§  iªÚY°<²,k×®ÍÎÎær9›Í600€„ƒÙl6‰¬­­¥R)I’ÚÛÛ‡‡‡¡öBo®­­]¸pÁï÷wuuK ‚"Àb±¸¹¹ ºMMM xI‘…B¡³gÏNLL˜Íægžy¦»»›ü•Ö××_}õÕ™™½^ðàÁææf!D2™œœœœœœ, O?ýôài¹ ÈA/^ljj:~ü¸ÛíÎf³W®\¹pá‚ÑhŸ_^^¾|ù²Ýnî¹çº»»6¥R©ÑÑÑ………ššš£Gz½^‰e-ØØØ¸~ýz8njj:vìXmm-—ÖÒ¬¡žÅ·Ün·^¯O§ÓkkkÓÓÓ¦¿¿OD×*´…rБ„ápøâÅ‹KKK^¯÷™gžikkIfÔ >k¨¢<<ƒ !:::Þÿþ÷÷õõÁEžËp8|îܹ©©)«Õúì³ÏæÃ¢`ïÖ­[o¾ùf©T:|øðÐÐÅbA(¨×ë³ÙìÒÒÒk¯½‹ÅNœ8qøða \.G‘d©TZ[[;}út0¬¯¯ßûÞ×ÒÒ§<08666Μ9sëÖ­ææægžyÜ:R>ú|¾k×®A=zìØ1«ÕJ¨)€•F¢Ñ@ °½½mµZ÷îÝ r‡j¦s EvS#WþŸ¿÷VY®ÐÜá D`ÙqžÛÕ‰{‹T>Ý=ÖÀ{\‡ú‚Á»¢‚ÌE2®ÊªVVLµ´òp(‡C6²â‚@GVˆTô\;lHŒÖÄ{¿TžWD”cIt¸Â_œ8yŽ£7#¯•ªTÕ“Ùý©Ä (U8 JƒÉ^ÿ»ÕÀ&B÷¨æ*ßtþEîkÆåYSøÃ %åïD¬uÑhtqqq||<Äb1$@lmmíîîF¢[I±P°ÙlÍÍ͘}µµµ‡†!VÝ`0xóæÍÛ·oÏÌ̤Óé|>óæÍ™™“ÉÔ×××××çõz].—Åb‘•<¿UUUÄëijcÇ2iå) s.Y•Zoaˆ xÝçóƒÁd2Iı·6|ðàšñxÜY[wÿSõAË.¼õÞ.ÑhÙ‹wKeYZZ:}út&“y²ðÖØØXGG‡Óé¼ÏÏ¿ñÆ¡PhÞºw‰F£o¼ñÆúúú.¼õn+gÏžýÑ€·P^yå•%xëÞûÂwOá¡ߌòí‘ÌÔüÃ|ÛJ,* Ë~Ew))¶2ªCf¾A&“É`ÏJê þ±ÊÌÍ q."ôK½[Wòå‚–Mšûü‚*0…®¦Z7øõùZW‰npÔ•Có%æÅËÝSªÊ¨Ð¾nW¾%9u«òš*€‰ Õ}U] 3˳O ¨ãíJŠÍ"ý É8Â;¢Bª»ˆòÓ¢êÈåF>T$…•†A2™©¹²[UÍËß\RŠ—…j0¨0#¸ÈÌœ«²Cy³Áâ×—ËÙsªé@8¤WÑw)u ß'”˜-PD‚€@~å•W€I‘ObmmíÑ£GO:GEòÌ‚i`6›…qA±X„Íe"‘XZZºxñâüü|*•Bµá8 êñ­[·ª««[[[qú‚Ã$—ËåñxÚB(jVòÈÃ+˜‡@[¡ÂÑÆz‹/f2¬Æ™L&›Í®­Q2Ü{ÆU–·Áüz ² o½‡ËŸÿùŸÿ«õ¯ÆÇÇ[ZZžt]vË]ËSO=õ‰O|âþèžtEvËý–üã?õS?õ“?ù“Oº"ïÉòßÿûÿÓ?ýÓ·ýõx<þì³Ï~ÿûß§PóÉ–¯ýë¿÷{¿÷¤kñcZvÄwà Ũ±Q¦Í:ÿ<òig\bU‚™žTÆHØ çr¹x<3 È èÔ`09v–‚åGWÁ@twÍNùÝ…²Ë¤Ý¿ØÉ^„Ÿ¸ªÌ§ùŽŸ€Ê6Q¹†Ó³8Çoܸ1;; YâÞ½{ÛÛÛ{ã˜û¯(ë@ZÑh4+++/^\]]•$©­­íÈ‘#õõõÀ°R©¨[UUUÝÝÝýýý‡’Éd¦§§¯_¿^*•Ž9ö“`žhBà#.\‡Ã§N‚ǹbccãüùóëëëO=õTSSíÑaÔÕÖÖöüóÏ·¶¶Âùh||üÖ­[F£ñðáÃp”Ç9¾ŠÅâ‰'öïßïr¹¢Ñèøøøìì¬Ãáv»Ý”æ®±±±¹¹¹ªªªC‡ÁO GyÜ1‹]ºtiii©ººú™gž2–R©4???>>žÏç{{{a¨/IR$™˜˜ðù|f³¹»»’4˜ÍæcÇŽuwwƒ¢•N§·¶¶.^¼¸¶¶ÖÔÔôôÓOC w6F³ººzñâE(éžzê©ÚÚZY– C:(Ëòööö¥K—‚ÁàÓO?ÝÕÕ  K6›•eyÏž====À…‚2p™·œ|>ߥK—ÀÀÀÀÑ£GkkkQ+Š™háFÿ¹B÷D"qéÒ¥7ÞxcssÓb±¼øâ‹###V« N‡œz¹\nvvöìÙ³@`ÿþýh" …x<~ùòåëׯƒëG44T#‹ŽŽž?^qêÔ©®®.À²¥R vѨ<éÃáðsÏ=÷ôÓO»\.òŒ/ 0ïF£###‡†t.—WâÎ;£££ Ž àaÀk¯½víÚµB¡ðOþÉ?zˆ‰D¶¶¶\.×ÐÐPmm­*ÒÆ×Žâ+$E 6Á°Z(8Æ(–\ÉT+ñŒøê¤Zg$––/¤ïÀè\Z'I÷Í{œ©¢- ¸P åW¾2T¿§úл@å{µ#]Hµªj"3£.ŽURqUÇxRš2Yã'×$QNVba¼†¤D#}·ªõTØ%j‚‰F•'Ò.ˆ´Hz»¼¼<88èõzeæÐ„iË[ïnP#½ªö¨ØdWUU[°Ýf7 -´ -ZU8¸&”×=P- *3²›¤œ*¡=9k›^ápxffæôéÓÈ{ˆJ¦Ói¼FYƒñšËå°ºZ­V»ÝN,*œ«ƒÁ ŸÏ—H$8ë’H$‰ÄòòòÌÌ |K¥’Åbq¹\@Àëêêp&Áù‰Ô2\i+Ê“V¬dóiµZ³Ùl³Ù¼^o, ‡Ãø%y¨:kÇ~§±Q¹ãz¸eÞz¯–¿ú«¿ú_þ—ÿEñK¿ôKßÿþ÷ŸtuvË]‹,Ë·oß~ÒµØ-P._¾ÜÕÕµ o½½²±±á÷ûkjjÞÞ×Ãáðµk×¶¶¶Þ%ðÖÊÊÊ;yœár·íËc¸oeÀP¹»â5äæ&ü»øM‰9¸óø„<&¢Ñh2™„ î“»Ýn2™@‡ Á`0•JáˆÕáp466BŠÈëC7BäIlzþPüYTœ‚wù;6юԀʯàt¹ö®\¹‹Å´Zmww÷ž={òùüââb8¶ÛíHI.*5óøM(B"Ât: ·#äòCØ¿¾¾~çÎT*ÕØØxðàÁššªm ¸råÊææfKK ,™#ÜÂV{}}ýõ×_Ÿ™™q:/¼ð¾}û,K©TJ&“gÏž3›ÍO?ýôþýûUáOž ÃÓO?=22b³Ù4ÍÚÚÚÅ‹À¾}û 4›ÍB K`?BF³¾¾>::ÇûúúnJŠÚe}}ýüùóÑh´££ãСC^¯Xzß¹}ûö7dY>räÈñãÇ¡(A,‹Å®]»æóù¬Vëàà —UÞ¹s<ôt:ËåðÈf³<ÆÆF³Ù U]2™„qûÕ«W5ÍÑ£G!,%D2™L^¾|Þ^ÐK"ˆF£ ‡Ã—.]zå•WÒétKKKGGÂc8ñ‡ÃáT*µgÏž§žzÊétª&Ü_œˆÉÂáðåË—§¦¦ŒFãÁƒ[[[aáÌUQ²¢Ï"0·[@víÚµ×_}yyÙáp ]íÑ•]xë=Y677åW~?¿òÊ+çÏŸ?qâÄ}~÷×ý×%Iúÿñ?>釸1*×®]{ÒUØ-»|ë[ßúÊW¾òÿðOº"»È²üÌ3ÏüÈ@º?bó^)ªÐKÃÜUŸ”™ -ßÜÓ6šgdã‚Õ•é“« …B:ŽÇã©T ›Zrf…=|©TÚØØØÜÜÜÚÚZ]]]__‡ž«T*¹\®ÁÁÁÁÁAdµDfÊ Ë{ÈCÚÅVšy© $ÌQä wQÙTòø•ÃáðØØØÊÊJ>Ÿommü‡ý~ÿÜÜœÉd²ÛíÕÕÕÔtâ‘$) ŽŽ^»v-™LºÝîÇïß¿¿¦¦ @8ž››ÛÞÞÖëõÃÃÃH ˆn.—›ŸŸ¿sçŽÑhjhh-ˆäHét:›Í^¼xòÃcÇŽ8pÀd2Aòvûöí3gΤR©gŸ}öÙgŸ…ž 5œ››‹ÇãÃÃà•J%87MNNšÍæ}ûö¹Côº`0¸´´$IRGG‡Çã*433³¼¼l4Á©A¸Ûõ;wîÌÎÎjµÚ}ûöµ¶¶ÛJ¥Rƒ@ïæóùΞ=»µµÕÕÕ-$ø\:Îd2mmmMMMåóù†††ŽŽ¤ÞËf³sss[[[ M,//G"›Í±a:.•Jv»rED>€Éü~ÿÁƒ‘@ŒºÎŸ?ŸL&÷íÛ#*D¿sÁ/X[[»~ýúêê*¹;YCkhh¨¹¹yÏž=*çII,À#1@Xž>}:‹õ÷÷B §Òp©X*øk±XL¥R‰Dbjj "SŸÏçv»ŸþùÇ·¶¶B¬ˆ '“Éñññ±±±R©4 'ðù|Þï÷¯¯¯—J%Œ–l6ËcÚD"dYniiq8h™ªª*³ÙŒ¹œÍfoݺ5>>®ÕjO:Eƒ™–ˆëׯ߼yS§Ó;vlhhÌ2Bb±Øææf&“Á/“ɤÜ1¬3‡Ãáp`L& Œ¥Ã‡766Âì‚ðzÞ”àŒzM£Ñ€[Š\ hR¹œóµ#¾£Z%î½\W®0œ£¤‚×%–(pÇ;ò{G¨…䕈Œ´Ó`P±«Sr`¨P(€ð(”,–ôóÝ¡RÝZTÑ:/ü¡jvzÉŒÚÆßz²¢<å¼`^W’˜'}‰e“”3J^”UO‘Ïç‘äÎ;PŽËв¯HÞ/r¹ª”šš¨jÜKeÓÆíÌU eÕVvPä„wÃIÅÝñ;Q9Êå ‚qМ ‹°$I©TjiiÉï÷g2™©©©‰‰ ¿ß¿ãPçÔíÛ·«««=^¯w8z½> Åb1t7,çñ>ÂëÃb±ÎV ¼z´Z-ˆÕV«µ»»»»»Ûf³E"‘ÑÑÑáááÎÎN:º¨<2#]Òh‚€±NŸ§„Œz½Þl6x<¾ººº²²‚¼º|¾ÛB;í÷•]xë=Yþèþ(‰!ŒFã‡?üá/|á ÷oa zÒOðãUì@~¬ÊäääØØØ“®Å“)wîܹ|ùò‘#GžtEvç=\øýn1 íž+|ÇO;<¾]æ*B ùJŠ—<’ÉJ¶lðQ¶¶¶–––y„ÃaÄŸ)éõz˜544  Õ×׋rpJVÜÜù3b»Éœ¹C :RR¨|‘U-sïF& Ò';'“I—ËuìØ1èãà ât:¤pe¢`{eœK_¼xqttÖÁƒ=ŠTèøX0œŸŸO§ÓmmmƒƒƒÕÕÕØ—çr¹ÅÅÅóçÏûýþöööþþ~³ÙL®dø¡ªªjnnîܹs>Ÿ¯½½ýÙgŸ…ª®P(,--}÷»ß]^^îîî~ê©§ZZZÈÓnVËËËf³ùСC ¨êäää•+W¢Ñ(P£ÑHò½`0xãÆ|>¿gÏžšš³Ù\(677GGG£Ñhkkkoo/lÈNkyyáf³¹¯¯ލ’$‘ãЮ[·nMOO˲¼gÏž¶¶¶ªªªÍÍÍóçÏ[­Ö‰‰‰ÍÍMFÓÓÓÓÔÔ$„Èår[[[ãããÉdR£Ñx½^§ÓIQq$ ‡ÃÈóHY>Ÿ¿qãÆôô´Ùl>räHSSè?%Å,zzzcc¶Ä6›­ªª*—Ëåóùh4ºººšÏça‡____]]­Óéìv;9à‹Åbuuõ¾}û¼^/(H|8Q>šA4T¾÷½ï-,,h4šÞÞ^—ËŽqÔ 4Àl6‹ø0Nonn®®®.--¡òù|¾»»ûÔ©S‡FDž¥©Äü~ÿØØX0lnn>|ø0ÜÍÃz<lÏfffºººCÃkÌn·×××C€³¼¼ –ŠÍf¢Š.ØÚÚJ$ÃÃÃGŽAk@„îF*O¿ C&“ÂáphµZ“ÉÔÑѱ´´„ adMM͉' '¼sçN( «×ëëêêdY†è•¸ƒ ª¬ÁÚ@cÂÍG….É;¸TkHåâs7ç+¹jU¿î€Bú¬5t;–JÅ4¯?¯Œ ÞÚ†æ›Ífãñ¸F£!Eð=à-ÕÃJ\0þ'šÅr9 Mµ8sˆGÕþü–p2ó,«Ä€èeJ_å8 Ì¸iä+Ç _(±Xl~~¾X,îÛ·Ïn·çr9Jû@gÞøª‹óC>ñùUÒ~¼¸yçÊ&\BTêt:$(ÄËqÇRÁt_.&%³N¼2’É$¢`0.mSSSGG‡ÃáÀ«óÚµk‰D"‹%“IUñ^ÉE"‘0›ÍF£”ϵµµ@ i°ÍfkjjliiÚåõzÁ—$ Ùx·¶¶°ºšL¦†††––¬Zuuuuuu6› @ùøø¸Á`ðx€ QHÌF¡Õj‘;2‘HûlCCD²ˆE!`Ä“Â÷ýøÀàà qbuJ&“0©éîîþЇ>TWW×ÜÜ Å›ÍfóÉ“'ëêêR©T]]Ýn7›Í¹\®¶¶öùçŸonn^__‡ô —Ë:âÀׄ†cîã¦È €†âÀE$Å íÀ×"¾d!| R­K¥Š”µ÷(„§‹rh‰F…gqP†˜œ=*•“øP!)˜’XôÈ]uÒ€Ÿ³ÙìÌÌÌíÛ·;;;O1ö|ÀSnÞ¼9>>¾¼¼ ¿‰Ê§ <.—ËÍÍÍXDYá*ë©2IR<Æ%Šœ©Aa-©JåÙ$Kåy£¨õ(LÛGù………b±ØÔÔ422RSSC!q¼×²Ùl4ŸŸÇwý~©Tjnnîîî>räHww7 }>_*•Òh4‹'Ì(‰DÂçóe2™ÚÚÚ¾¾>èò(bG tûöí«W¯‹Åƒîß¿Æ%ÀhFGGS©Ô©S§öïß=—P é“É$`#­V›L&€^¯ÏçóÕÕÕmmmáp8‹­¯¯ëtºêêjY–atÒÑÑÑÖÖf0pXf7™L’$ASf±Xàˆ/„¨ªªòz½ÑhÔb±€‚§+'¬­­Õ×׿ð ===ˆÇ•F"‘|>ß××7<<Ÿovv6 ©T‡ù|>ß¹s§ªªê¹çžkllôz½Hý‹ÅjjjÜnwmm-\çý~¿ÓéDžDx#ÂT§Ó544ôôôLLLlooƒ¼IV†ÕÂ$¢Í ß9¨Æ†ÌrE«nµZ½^ïÖÖV<B€²ªÂ»qY ›è&äv\ó=Â3ã]xë½WVVV„¿ø‹¿xèÐ!üÆ`0¼ùæ›»ðÖ»³ÔÕÕ…ÃáP(ôî'€È² Šlÿ£&Žî–Õ¢Ñhêëëí×~íGÒjµ?Jón.¥r_Ûʳ\¡œ&%”£f:3äÛeU&3Ò“(Ç΀GÀQ Ño[ØUçr¹B¡ßt$¿ãB•{ĉDÂï÷ãl¶R»¡ ±$&Ry¾òGà‘ŒT!ôåy!¥ Ÿšl6‹ Z§ÓÅãñL&³°°pëÖ­x<®ÕjÛÛÛÝn7¥B§í, ~pÜßÞÞžŸŸŸ™™ÙÚÚ*•Jn·»µµu`` ©©©©© Ô'¡Bs¹œÙl¶Ûí¡Phss^ïF£¦Ýn·À"ÒÊå´  ŠÙlvïÞ½Ï<ó Ì­pHeÏž=Ï=÷RRàŠöÁÁA£Ñèt:“É$ˆˆLçõzK¥’Ïçƒó=Ød­­­&“ ÎPBadØíö#GŽR ƒðëEÐe6›ëêê^xá…ÆÆÆt:]__O¼-\¡ªª*›ÍZ,–ááẺºãÇÛív ®ð@Àd222‚~4°U–™G8Ú æÓÐoÂì†ÆP-«Õ ø€:”"7FˆS¯×Cxˆ¶Û휃Ád2ÁÓáýÌÌÌúúzgggGG_§ÓY­V¡Ûø,˸5­Š\VÆ×|ýáëÍVüë÷û/^¼¨×ë‘É:šðšÊ¥²´âð71T¡`*xK*'aÑÏœ¼#Ê5ƒ‚y ª–8 °,eY6™Lf³™Þ;b[ª‡"Ž’¨ ¡5d…_³°°0??ØñÀ×gj"þ¦ÜCyù9H<&ò—Y‚]\ ‹Ýn[³²Tâ,ª·‰`t<>Ð\&“©±±±ªª*§ÓéÖÖÖ—^zÉjµ^¼xqjj*È™UP#^£Xu%%¡'×ó–¡ç¥/L'_%«ä…\±ðBÏd2€™°nÓ[•kè°bàšxåÑkܨB¡ ïܹƒ7>oÉB¡‰D–——‘ku2™ôûýÑhTU7ZpöíÛ×ÓÓ¿-<—(GxQR©Ôúúz<ommÅ¢—Éd¢Ñ¨Á`0 àÊù|>P°ñâ^¬•Ÿ––h¾`j*òrÒ9¤†¤H¶úhI—ËU,Ò€ ‰D‚ëÖ1zÍf³Õj5&“‰Ö±GWvá­÷^ÁŠÿ«¿ú«ôßåååûüú.¼õøË'?ùÉ/|á ïrÈ×¾öµÿðþÃÜÜœ¢¶¶ö»ßýîÈÈÈ“®ÔnyO–šššÿößþÛÏüÌÏ|æ3ŸùÌg>󤫳û8ïr7›:u§]>ö ¤„å2I,u·ŠÃÅìz´“5;²BjÈår©Tjmmmuu5™LÊ;1Îv|.p”(È‘wòÜå!¢¬PÌT—¢¸ZoуP[á©)çÕBä²¼¼¼¾¾Žm}0„ãûòò2br¸€ûý~«Õ –@Äüh„µµ5¿ßnb›žž0V°ÛÎf³PüÉŠ¤§§'›Í®¬¬ØívÄc@:4;}û€!»Ñ°Œ–øzCCxOb §J¥RmmíK/½är¹öîÝ `ZZZ>ðÀ ¹,¡Ðh4lii‰Åb0ZB¤Q¡ ˆW]]ý /ŒŒŒäóy·Ûív»i+0«···±±1›Í #•[ 566~ðƒ4n·›’©S€N§ççç>|âÄ èõH=Z]]}ôèÑÞÞ^!DUU•Çã!mE Sq*~ðàA˜ˆü ‚·Û p|‹ù@E/#ðÀÕÒéôää$8UUUÛÛÛ@Àét655iµÚH$ât:¡‹AÈȧ¶¶Ð!áP’$¸Çaq%1 ¬ˆ°HvDL è€`rϧ‰j²s7ŸÏÆÆh4"BñJRĉΑi¡{~Ê e¦2ã÷%Óeü   ¡p1 WVV¾÷½ïÁK«½½]Tx ¡zˆÃ g'­!‰2#¬U®ô{|Ópvvvlllhh‹† úZ”s4vä›üÁWÒ¯q¢q-ùC‰ 0ŽªG«úŽè¼ªz“rƒSI­Ä® ZôT«==#G*Uk5$xÑhÔétnnn›²ªª*•Jy<Nïñ ¨|Q8%v‚)%¦ãm‹…‹¤åª÷#w`ܱ¨°?•K—Ø Þ̪ØnÝÝÝÝÐа±±±½½Édªªª>\SSãõzÉGE¢ÙMP‹ªh%âJËŒ¯Ä —Ýñè­ŠFÎçókkkX© …‚Ãá@†@Õ´¼sõe.—$ $ÚcøýþååeJƒ¨z¹£M°ì øsår9’S ].W__ßÁƒ›››766pÜR9„ˆS™Édb±LµÀ#†‡}<F£±X, •J¥¶¶6Úa¡ÓétF£Ñh4âp9˜Ô„g E+1TšÏ ™%¤¦aÉç,^OÅbÑét¶··#o¯ßïÇ"H$hrY­V—Ë…—/ޏ0aÅ[•p8²²¶–N§M&SKS“Ëå|˯PÙ…·Þ{ô¯¯ÿ]\\„AÃ}~ïƒ'ý?^å]NÉçóŸüä'ÿìÏþŒ~ãóù>ÿùÏÿÍßüÍ“®Úny¯–~ô£¿ú«¿úÅ/~ñGú{œ'XJåÙ¸94ƒ$b$é¢];Vs„‹B ®(‘ÊÏê¹~Ô ªC~B‘´Z­ÅbVK­j‰9daÓ†ÀÞf³ÁHžËgð€ ág0’¸««TÎh”œŒr…"@õ²æè˜\ÁAS5)må)8D;$ ð§@ˆÇã¡P(N»\®êêj§Ó‰vE‹¾¼RÐ&À¡jkkÁnp»ÝV«µººÜ(Yqƒ’””|Bˆªªª––—ËFa  m)¶Ñ]]]µµµ‰D¢¦¦ÚÎ*!9¡¥³e¹±±Ö¹F£‘ãè/‹ÅÑ#6†:¬©©‰ÂlbFPZLBá÷0Õ‚3½¬¸z Æ’ Nüdï hýb6›[ZZˆx —Â@ ƒ*P(VGBÄZ Y…$U ÀÈsM§Ó>ãTY± –Å.y ó?ãy³á[‘H䯉DÂår-,,\¼xqyy¹¾¾~`` ™LÆb±§Ÿ~º¾¾§g'f E’®€²ñðžk>;ˆ‚Ç)Qnö,DD ’CPºšûüc4´bÂQ !%䟸§“d³Y¢›  $“†¹¼%”ô´«W¯Þ¸q£­­ X(ð Zƒ™’ìÈ)œ*`KÞÉ•œæ¾*­H$277W*•ººº€Пˆ÷J ®ZCø C+—†qî‰(§ŸÜ£Èå´¯ÊúS\MSŒ˜)ø%ŽvÑ5…æÐˆâ ieƒ,K¥R4õù|ׯ_‡R{ssóÕW_Å Âð.•Jû÷ïœ!)§&ø—+¼06d… ÈïEUå>MhãÏÀ¥TnÔÅÛY’$‡Ãsþ~Q=;ÿA0G0©\G©ê)Ž4Åãñµµµl6‹|7nÜXYY©ªª8yòdoo/X9”®O£šÓñè †CÜ7@°“-LLI’Àæ¸'õ€¿p8|íÚµÑÑѵµ5d#u»Ýûöí;pà@WWNhÑÔO¥R È$#I’ÛínjjêííÅ ™LƒAZŽhi¥Æ¡,@ÕÛÚÚ@s£Q¡×ëkkk÷íÛWSS“ËåB¡†TªtùÈ×(® ±XìÎ;–x;ã¦f³¹ººº££'°Ì™Ëf³uuuá¸+ž¬p¸¸º†¿ ÈÛ®r }½¼ ¬nii±Ùl0îŒÇãø­¤ÕjGss3øÈp, ƒaicë«D(žœšÆÏ‰DâÎÔÔ@_ßý#\»ðÖ+ápøíåÅ´Z­õõõÞÿõ_ÿµ¢££ã>¿Ž·ÂØØØÄÄıcÇzzzžtKûÙÏrl Åd2íøaNíÞ-ºTº-¼‡Ê‡>ô¡ÿú_ÿë“®Å#yU¾°Ýrÿ…Â'ÁÂ3rá! ‚>¬BPè(XuÈá-QN‰â.Áö‘’bÙ#ci:ÊÆV WÃv^H{÷î…É.ÐQ!ý à›îv»ëêêÀª¬0¶¿8°BÁL©"[¿‹*hŒƒIñÂç_¬ªª²ÛíÝÝÝn·Ïgôh4 /3DJ<Ê%i7°W. étÚ`08‚–(=¯š†DF£Ñår5Éd²Z­8Ô%ü…[„@£G˜ŽP'›Í/*U6ÂM‰¼C3€h‡Ûå¨èèx!kÊójɬ”˜m?ÅdtBÄ‚7Qœ‰1ŸL&/_¾ÜÚÚzüøq0­¥ äG;á­s ªŒ$)’áR5¢n!T#‡fpÊÐè—H$ræÌ™ëׯ£Óa+“ÉdàÂ#I’Íf;|ø0 „Iñ8ŸBYª9ÝŽš…?šÄ<Œ¸øK”Çä|‚«¦x.Àdù*QbNä*Ì# Ò>ŸÌ>ä‘ÄàGG€ŠEͨZÐøDSÄÓŒt£Â/0¹²Ùìâââüü<&B ðù|HïË0·Û ¤F¼8Ep9_º5 UÝq7ކjÂrPC”+iŠô a¡(àø¡¦“˜w>AÒ*@‡0µ|>‹Åoܸ‹ÅGuuu2™ÜÚÚÒh4N§³­­­©© öR* ‰ŒÐë†R[r;|Zó9¤KOr¼Jí-Ÿ/|Л‹F25#¿ˆ(GOdvzD@# «“,ËȉD2™ÌÊÊ ~Öh4ÝÝÝÇŽëêê‚Cœê‡®£"ú¡Ä%±½ˆ„ Þ–V«õûýù|N*»‹ÅFGG_yå8b*…B¡X,y8R@å<^a·nݺpáÂÒÒR6›EmÁ¯„ÿj…áÅ[I(h¸ÓéìîîN¥Rð7ìèèp»Ý°‡ïè設­Çãëëë ÈmÂ'‡8%I²X,n·;ŸÏƒÁÉÉÉK—.-..ÂZ‹3ŸÏÏÏÏ÷ööÖÕÕ¡¡Ö§‘{Dœ¦ÐÐèÏg_ éeÁg+éðÎÅ9²UbI$KKKô¶Ùl‡)Yp)ì…ìvûÕñ‰{,8«kkªß¬¬­íÂ[ïö"ËòÏýÜÏÝæ¨ÄÑïñ׿üË¿üË¿üËû¯À§?ýé'Ýo¿¼òÊ+ÿøÇïóÃHÑýdËïþîïþîïþ.~þ÷ÿþßÿûÿïïýùK—.}ùË_~²uþ¯ÿõ¿Þ ›8vìØ“­•<¢+?,òÞ³ø~ÊsÏ=÷ˆžñ•Ç¿óØ»wï“~Žÿñx<;>ŽÃáøÃ?üÃ']»÷dQmªCyT$,ú™ vl‹[7œr«nTù-1Ð]èú0•ÇÕ$E‚Ý!½^ßÚÚúÌ3ÏH’499¹±±Až¾Åû–ö¬8Wß·oßÀÀ€Ýnç9ùq=6Ù¸5ÕD.'y +JåŽZr…\ ûWI!…ñ)‹ƒþÜÔår92?Âó⿼§è¹È¼C’$X“!Ðw2“tQBõçŽÓ4Šû5Þƒ<\—ÊÈ8ªÈáU[Ñ©>ïhMyþŽÂÐ ±Êf³Édæ&„“Š ö=ÇaeÅ;è-9ÊJF &Y–kjj766VWWÏ;WWWW[[[,…pÕ ›-K~G¤!¡˜ž ø„¢æå1 €ó­®®^¸p!•J;v¬½½ýÚµkp Òh4^¯·»»Ûëõ¶´´p7«  ¡àPŽ`ð'h˜)8ï}­’ÔLV´i<°'4­Ä쥄Âô”Ê™‹Ååååüà›››ápø#ùÒpr]P04Y5O9TŠo…Ãá7Þxczz:ŸÏomm={F~õõõv»=—Ëõ÷÷C|*ÊññJðZUy•Bÿ>—ËÅãñÅÅÅ‹/noo»\®±±1øå!)ú®ÒƒâÞ¯lÕÈç*1óDÞ>;B!vפ 2‹`d.Á@ô ‘|i<ó¾P=‚\q&å`}:ÖëõÝÝÝ7oÞÜÚÚ²Z­{öì9|ø0ÔÁ`'Л‚SÌTÍE2~Ã^ÒR V&/°u²«¤ôÒ|çkŽêE ˜‘™jJ &åBH¢CŠò•Öjµööö:ÇÎl<ìììØGwáLÀ;š‚¯ç|þòïbÍÄ»ƒ“¯AÂ%`4“É,//Ÿ={vvv–¤ÍBˆ|>¿½½=11Ñ×××ÔÔDL+èL———OŸ>=== Ïxd„ljj¹”V«…ÞŽe³Ùjkk‘‡<ßÎÎNˆ‘‘}§#pÓPˆÌ°*'/>f4Åbéî¯/ ‹‹‹çÏŸŸ››ƒŽ›Ï2ø6.// Ç+* z)ø~¢ ƒâ7•S˜†¨ÇP;â7œg‡ñIÄO 6r( [[[ð˜‡n±¡¡¡®®Îãñ VxŸÞÍ'ŽJ2™ªøMRÜwy´Î^»ånå?ÿçÿ<<<|ï´gÏžúúz—Ëe±X  €sjuuuww÷~â'~âÅ_lllT9_ÐSH’”Ë剥¿xËìØJt5ÀLÜ¥Ûl6C™h·Ûa²n±X¬J±X,0^AÁ@çþKV±Iº¥p>ÂT©<$aF¤¶à¥¤Áàù­8&÷(;Ž(hÙ¸+•T* )-@¥>ˆš”ÓÖ0ÂÓét(¢@‹BMbô@²§ÑhêëëŸyæ™§Ÿ~ÚívONNž>}º2’áW€P” 5A±‚ñ©–ŸA…~ÒÄ”•Òçóùý~›ÍÖÙÙ‰ü†B·Û}âĉøÃï{ßûŽ9RWWGª(Õ½TeÇ>ªäü¿¼µUßBmsJ¥4¸‡•$ ðq<Ïf³°×‘Ëá- ¿p8¼¼¼¼¼¼ìóù.]º4::JYÀìÉ ª ÞW>0$…à°¼¼|ñâÅB¡ÐÑÑa³ÙÆÇÇ_ýõ×^{í[ßúÖ?þã?ŽŽŽúý~Qž/õnM'*BÕ J …h4zõêÕ™™Çølmmmyy9 J’äõzëêê௧¹œ{Ì2>~ø¼PÕVuzMÞ­IKŠ1_ 4Šú¤¾ƒ³y}vl:Þz²,ã"À)05Òéôææ¦ßï‡8zß¾}ÍÍ͇ƒüµJNCÁ”³²ÂØDb¿ EL£7“Éd2 N 6|‹”à÷^¾DJ-ƒçìd‚‡!´b”Ê3í ›Ëf³˜V«õÀ'Nœèëëkll9tè,ç©»U¤jvÁ€<‚Œi1äŽ{|o€¡år¹ VVÒ›¨O>ŸŸžžž››«„ …צÓiú ¦üèèèìì,­ðTÕx<>==$I2›ÍN§³òí£QÔ@ß$IB~ÀúúzÇS__ßÖÖâ’ÉdÂM ƒÇãñz½ÈA±ãü2 MMMÝÝÝ:.™L®®®®®®Bž)ÊQ6ÞBtV<O¶HÅÇs¹œFQ;Ò:¶ãû‘ºRª@‡5ŠÉ×f³h/ôN§³¾¾¾¹¹ÙårÁ¯ ­­­££Ãét"ÁKmmmmm-m÷^d*Çó½_ýª²ËÞze~~þk_ûÚéÓ§ßöŽ?~í򵮮Æÿýÿß…ï{ßûî¡1¤Ü:(:nhhHár¹„o  ¾“277×ÑÑñ /ÎwXd%ýOÙþüóÏ_½zõ _øÂ¿úWÿêqVFU>ö±}õ«_½wµh¿óÇ¡dÁúxêÔ©Ï}îsG}Û”eúEº8Fïny7êÑéêÕ«ïÅD;. ïÝÇy· ù´YÕUÀ`x$¬§¸²Œà KÐN¦(aGÄè|’TBQ|`#ì Åb±òx;cccV«5NÛíö'N¼øâ‹---z½žÒJLö«ê#ÕMy»UÆN•3]b~yIA^3è˜$EƱI!BøœÉdÌJD 3™ŒV« …B?üá=ÏÀÀ@"‘@§Óér¹*¹-ª®Qý)—Ë-..nnnöôô<óÌ3ù|þ•W^Á±«Ýnommíëë«««ƒ±WåÊÆ;šÿU…ÐÇègôl8–eùÀýýý+++èM·Û}èС‘‘H•©/x¯•*qp`šÖRfóÙJŸ¼Ç†önCEs“)Õ¼ãU­\(8ÕŽ¯¥òDu*ð«Ä²s¤Óé………åååT*¥×몫«@…åÐ*å B qÀ[²ÂEWâ[(ÀJŠú Ò9‘/ò\h¦©ð«’Ì#Šc²ªÉNÍB+qñÊœDUu»Ýf³9‹AëªQLÄS©T<§W'vþ4 7Ñ()JH±Hô.ÃSã…‚æåë9xét^™Üç ªR@ðªW?zayyyaaÁãñõunnîÖ­[*Nª IàÖÖ’äbšÐøD»ÆÆÆÆþþ~§Ó /8Ú{ô‘$ Ž~èh4П`0¨²‘” !&“)‰Äãqh-ù’HühIIzFÑ>Ÿ/N' `‚n·;›Í®¯¯ëõúööö®®®êêjbOÓ(â ³=¢Cjʽ Ñð^ ¢ajt”¬V–edI†€–<ñô£(»ðÖ(¿ú«¿úïþÝ¿{{Æ[(ÇÿÖ·¾õꫯ¦R)NwoŒ*f ÿ~ýë_·Z­¿ôK¿ôèžôµ×^ûÚ×¾ö–Z¼‡Xxú?Ž€Ÿ¿qãÆc®˜Ýn‡>V4ýbåÅÀcn¢Ý¢*oÙ)ËËË¿õ[¿õ¤«ùö‡/ ï¹Çy²¥ò8£;BüoYøy¾Äœkïv;Š–± ã ¯F±V•WIqu‡¢’ÖÄU!Ïc¿k³Ù°ç†ç«¤ˆÝSñPMÜEE‚@›f‰ -U{_¢ðOò°­² øq½P‚|Ž vÖÍ ¢‚œ¢ê;‘T~žrœ‘¥5KüçËèÇq4ºµêAC3 ãpƒ´dGUŠ©>O¡‚̬¬U•ä”ʇ «•”³qNÇ¿C§Óµ¶¶ž:u É oܸÈJ5rhT ! ŸÄ18h qiXÊ6Pœ(b¡ÀO„4D㺡ÖÖÖ£GÆãñêêêžžžšš«Õ ,ÑQ6›M$Z­d‹Åq®¨0Öáµ"v¡ÊŒ{R*÷“ #V|ß0º òâ¾EüIqØl6 ÏÜó‹VƒÁ€¤¨PÖÀàæÍ›ÝÝÝ'NœèîîŽÅb/^œ™™9vìØ /¼àõzU0Ÿ§D ‡Ã333SSS:n{{ûüùó7nÜÈf³{öìyßûÞ×ÛÛ‹ü¡’$"áž°×’â݆+ãÁ%…îŠÅ XCÃÞï÷ƒžãÆ è§,KCCÃÐÐ|pè¦h;Òé4\çHì‰ND9Ü]«Õù4µqÍt:ÍÙ7Š„t“A«\#Œ'EöRZ²Pa!§˜5 ‘¢’”Äœ%$.ÆÜtAFƒ C&“ ‡ÃP±ÑŒËd2·oßž™™á ©PD^6ᘄ¦9ª»’$¡¯K¥’Á`´TRÂxjŒ^€S˜GÀ¿R©>€Ö. ™LË‘Åbn£ÐÂx^HÑ1œÀ¥œ¨?¥­ èH¥RÉd’¾Eé5ÑM`B G&€˜§‘H„†1¾ m#½ñàp'N“Fñ˜—2©iHg³YŸÏt:Çã!ÉrÇb±âN¹˜ð\ a&“I¯×›ÏçÀÖÖçñ³¡ÈK‘¬Öår577#]l(*‹N§`·,ËÑhtss3Øl64TIIì"h݃йÉd*‹››› `½AþD²ªªªººÚl6£ëC¡G‚ToÛªª*“ÉV©F£±Z­`Øq»€P( …dY¶X,˜ƒüœ…ÆKåD-ÁŒù[˜Ä¶´z`Y­V¯×ÛÔÔ$ÿ8¨;1øñ†‚¥—x”eÞzÜåÏþìÏ>ñ‰O¼Ã~ýÚ×¾†^xá…ßþíß¾÷‡+á­oûÛÁ`pll¬ººú~n'ËòÆÆ–Ñ­ê/ýÒ/ýÄOüDGG‡Êpú¡—ÓÿQ±Ùl'Nœx¤àEf=þûJÈŽÕV‰žHµTWø@é´Ü»sú³?Ò=ºj?t)è½Ë[vJuuõ¿ý·ÿöAž¿<ÜÇù1/•ðÍ;¹ZåVLTà‡HL¯AÞ%ª¢¢âc‹OÆO¢Üo^V’ÂäârHÀd¸N’¹è²òî*(~&¼IbF¥ Óh~ü¬âðöá„~SRhJå~I*ä«4$j•ªÚ;"ÔDæ’ ŒÌ¨OÜnŸ"gM…kؽ‡‡ªhÈá¡`ÌLµ•ËIXŒ¨ì&Y–Ãá0ÒJrJ‚ ­l¥ëY9¤)ÆF”¥Õj›ššžzê©H$211qûöíÁÁAèb(! T(Z__ßØØ ãÄ„ˆ¯„‚ì•In;d™L=ÅÇ@6›D"”4Ín·cÓñ{&“I§Ó‘*ГÁÁÁŽŽ;4,Y„ =äJTà¿„ðßl°“!å—$öÍÄ’bàm4µJ¶{™yêã²`LØl6 ---/½ô\Dª««GFFr¹Ü÷¾÷½7ß|Ón·?ûì³€ Tðp7Z…âñx0ŒD"ÙlöÎ; ‡Ãív?~¼¥¥Åd2!ÈGL‘9@h¯d%i)82œ&ƒv•¬šœ„{rr2•Jɲ<;;›ËåU±d*•ÊårÄlP *CØhIÉbIE0"1€8õŒE•¯E|m!)žˆÿ àÀÂ×F±4Æ?_Û”A*+±¼™¥rñd ³-“É„oáëN§ÁŽ¤Ð„ñš …¶ƒƒÓ ‚^¯7›Í|A@îѱ±±d2Y]]}àÀǸ‡Ú@(Ê¢Õj) !½k9á‹@ ´Z-¸±Ô¼…B!•J©àuš°UJ ÉÁ,jy@Þ¦½½wáïŒ0ÑdE´Hén‰ìÃSKãÖàc)Æ BÀÍ€_Wú©^v²,Çãñ«W¯ƒA³Ù¼ÿþîînƒÁÉ[ ˜››ƒìWõúÐh4µµµ{÷î…‡ Á`Èår©TêöíÛ£££èÕ­ÑhGKK r›ºÝî–––˜L&|Þ`0¸Ýn@« ¹uuu™Íf»ÝžÍfN§×ëµÙlÇív755‘ >ŒÕ- ¶………ºººÆÆÆÆÆF8R¡u:]&“I$›››±X,‘H¨vÕëõvuuy<Œ´!t‘X£nÞ¼¹½½Ïç{zzÚÚÚL&Í;¼,èÈ„ÖF>Œ±ñ^ 3 ŒgÀ[PV666ÂÖ9‘H444ˆÄ) $I ïö¢|XeÞz¬%•Jý¿ÿïÿ Ëó·,÷³½ûáxŸv0ŸûÜçøÿûÿïSÞuoý-ßýîwîç~î>?ünËœ(î£ggffÞa@ø å$„÷ß›÷H¿øPÊCæÄS§N=¢g|D…ÙØL¿òîÌœÈÇét~ö³Ÿ}Òµûq)t¦Z‰ ñBûxn5©út2L%:çÇîNÏN§‡É¤A8Tb.ãw Ý+O°x=é7„­”*\¥+‰!r!Ku}.XS‰¹8HÑ'¸¢¤òoŒâ¤Š7T¤ªè ¤x’å×(Qý9鉨X÷36H…¤Q̧xª²ÅM¸”ÿËå‚Á`,ø” ê’+Xcªÿò2“É”(³ÙÜ××·µµõÿøããã]]]”<‘¦ÈgΜ9þ¼Ïç¨AD".I 9‘ûFs\±–`D<Õ#ð—ªMp$jK’@à,:Îf³mll¼øâ‹{öìáÈ&U¤~}>ìiX‚7r6 ØáŽ€ †â x¾‚јJ¥H;)3ú®†&ÚØØ…BBˆH$¾Æõë×/\¸7qP*Ö××ßxãb±X[[‹XTVÔOà×€ë‡y … LBÄb1˜ÖÖ֢ѨÝnÇ#'“Éx<Îs·Aà ?>€`yq^.—.&„@äÌÁ£R©”L&—––ðø¹\nuuu{{»T*AjJñ-ÚØŸ,Ë@mÀÈ#$ˆRI ïøZnB,M`%ÔXN§³­­²Tsµ¥n‚Ý:h,`Y–!,‹F£Ñb±€¬$„0„Ð=ÞLÃÇ3ø½‘æ (3‡WøMIÌ)€‰“†ØP@I~¨ÕØÒÒR:öx<ÃÃÃÕÕÕ„ßá.€™}ÃÈñ‰O|ùË_~çmøòË/ìcûÙŸýYÕïkkk“ ètºO}êSŸûÜç°‡ˆÇãG}¤|ÈJ}“Âjµþöoÿöÿö¿ýo¨äòò2ç4UV»¥¥åùçŸÿÒ—¾ô+ó÷ÿ÷ÿ×ÿõýìÏþ,t¬kkk ‹ªÊææfCCÃG>ò‘o|ãü÷?ýÓ?½£®°¯¯ï/þâ/T\¼¯~õ«¿üË¿ÌW+N÷¥/}é~áJÃV¶Òç?ÿùßøßÛ¿ÿ;¹òŽ]f³Ù>õ©Oý»÷ïÞÉ•?ÿùÏñ‹_DÀ·]†‡‡ÿøÿøé§Ÿ¾Ÿj߭˨Üç°;uʾð…_ÿõ_¿råÊ¡C‡îóv;>ˆbbbºéÇ3sw|œßú­ßúìg?*Y®ÿú_ÿë'E±|¸¥T‘äèq–ßq(ÅòŒé<."<‚“>ø<ñƒ°ÛѰ™Î+Q3¿ß?==Ø’v‚±H@!Tb¦Q¢âÑ Ç³D Eá=ES²Â\ õ ¼)xkp<‹³øSpL‡hkD¸ FTP“8È"Ê!K¤ÓÓÅ\]Bý"+T/jbC†ë¨>F·¦Ö¦…„¢h^IŽÔðŽ.)–äâü™ïòKŠ1Ÿ2¢¹ñaÀ®„‚JŠF‰ªJ‰‚L„ôìZ­Ön·wtt¸\®õõu $ Bge2ŸÏwîܹññqp…TO‡B-)+òœ„m$µryA5=¹D… aú$ø\×®]óz½È³ çI’R©´fp¥‘eBr46’É$Z’Ð7ô‹LI.V*•@ƒ’mPR<þ`~ RÆ:„BdÆ3éh4úÝï~×h4"ÕÚõë×3™ŒÉd @ “ÉÌÌÌ„B!»ÝTH(+®FrßÂÂÂÆÆF,³X,‡£©©©««Ën·ÃOP’$Ø~ñnâP¯já'àñgS*ç/c<à%HoH&«ªªÚÚÚpB£Qˆwvß[Å·S~6èï¡rñâÅááá·-,,|ìcÃË7¾ñ}ìcd{$~lllbb(ïýÜëæÍ›Ÿüä'eYþèG?J$äC‡ä|?i}>߇?üa`[UUUùÈGiÛ~ö³Ÿýµ_û5l,Ž=úÏÿù?oll$ÎÚãÉœ¸£¾‰/÷>Ÿï-«ý§ú§ï¼&ÅbñŸý³–L&/\¸ðÑ~tkkëßü›óÿðwû¼ Û¨+ÜØØp:Ñh”?ÈOÿôO?ĆUµÒÓO?ý¿ñåÊWö(+";‘øá–G$} aSÙ)Ï>ûì¯ÿú¯¿óáå±å<­|œ¶¶¶I~–\AzçØÖ=€ªwrMUœ£¢Ñ‰ÃsZ%S;[Ä ô¡˜Y”gß+•JÛÛÛÉd²¦¦†³$æ¯Äõt‚mây}ð§h4Z,iK0JQÉçÅá-ª "a¢º„Ãa»ÝIG¬8FF3 IfÔ$™lñÖ(²äbôa4‡œè¡¸¹‰Ì’Nâ7œ˜ ±Â©%Ts‚H ·œÁ{r`áQLKÇ΂ñ¡8ÿˆð;:g–ÊÍeð-UÖ'ÞÑpÿ…q5l›8dÆ‘JćäC÷ zÂu.2ÀªfssÈ…èV«ussóöíÛäÅ ’Õj-•JËËË”ç~Çù++%©œ¼¦¢ÅÝc5àŸ”+¸i¥ ù*Ý( ^¸pa}}Ýb±@a'IR<‡¥Q"‘€’øŽÊV†²šÒtÖh4ü1­V«N§щ jîêM:ò‡Z‡k9I©Q…bË [t½×ëÍd2~¿$ŽÖÖÖ@ à÷û€§$€IDATûÞãù|L+ \ÉŠÀ;z.€&“‰F8ØI‘H´[‚ÒŠ 3UíÆëëë&“i`` ½½]*7 D’ד3Ú8\ µw$âÃÉ€•ô+štk!D.—kjjª««3õõõ•K4_FøA¢|¬4¸Ø3M¨hí-ã4àá é%ä„?ëõz2ö"LJ7ª_‹ðI,æ4 xÌÏá-I6¢0TÈŸ›O7ü¡wÈ™»r~ñ—ަ\`KK1+UË­\¾¶¶6Édjllôx>%”V9›Í„WõŽÖ–gƒ}èeÞz¬åòåË­­­oï»Ùlö#ùû¾öµ¯½üòËííí×®]{K¥˜N§û?þÿã7ÞXYY™ŸŸã7îÇaý‹_ü"^íííøÍÕ«Wggg…o¼ñF2™¤¤*;–b±øâ‹/Þ¼ySár¹þáþáQk¬>ñ‰OüÔOýÔ¿øÅ¯~õ«—.]ºtéÒãÏœø•¯|¥ò—6›íªýP2'j4šššxLþüÏÿü… þÃøt…ŸÿùŸ ÏÛíö©©)þ ¿ù›¿ù°2'V¶ÒÃ’ÖîØeo[ÐÊóîáìú¡TRUR©ÔŽÕ~Ð.«,4lJ§ìø ¼<ž™+ÞjùQ*ªŒ:JyÐkJ¦<ü"*}†Ÿ Ó/ .Ñ”‹ÔhJ§ÇØ„ñ« !d477755‘Š„öy¥»8IËŒ¦:“”™E?&厪 $N§ÓÛÛÛóóóKKK}}}ûöíãaÕŽÝÊ^+P”ûRUŽÚðÖ+)6äø Å–B1ðž–B 2ØûÒ×9W‹"Ûb± …òùÙ̉ ïR@ïÞÊj?”̉’$}ç;ßùƒ?øƒt:=44Ç_~ùåûü.ªýÌ3Ï<ÐeYV=ÈÃÍœ¨ºøÃÊœ¸c—ýÁüÁÛ¨¡Jd—H$4óÁ~P•ÔïíuYey aóP:¥²ýÿ÷ÿ7ó7é7-çé½¥"3i™RÝò@—UýæA/¨ `øï+ñ8¾¯e3RSˆrƙ̄{„VÆ®¼Î2ã©â=? !€ëA#†m:€lú±ÛB¤Ói@G÷ä}^RüJ\.¥ÇeU"yÄÈL …Âá02¬ÑÙ5dY† IÊ(o& +dŽŸžž…BbˆÎýH,âL&ä@-ˆª’w2œ2‡‘mrrreeq?‹e³ÙP(„ z1Àpv»ÝjµÆl6ëñxÀ ‘I".´­Á`€S8ÒÌk4š®®.·ÛÍ‘M´¢&êÊh4Gmm­ÙlFèˆçÛ"˜4ܳÙ|ìØ±þþ~“ÉD¦Ý¥RéÂ… ¯¾új¡Pèíí}öÙg¡¿Ó(O4Ñ&“)›Í^¹r%†Ãá¶¶¶S§N¹Ýnð1©UQ4!•hRo¦@c^”£ºZ­vkkëÆ²,ŒŒÀ ¹¤HV •v8ÓÓÓí···AoÒÄ'5+^3¢œàƒûªÔ¢ÎpƒZ„8 ,ËõõõÐ1UWW;Ø*„Bõ°BnÉDïQAKáõT­ç•4jx,F¥ðR]œÖpÁN2är+=‰ r1ã²Ù,ÀS²fƒJ«¶¶ä;‚éF2£PIJ:HbûJI$T–ŠÂ A®*܇W[V(–˜ø¼(ÏûÉ;‘„w4ï/™1Ñh $O´H$ræÌ™‹/úý~`ÍZ­Öï÷ƒœxàÀ©\ Žûf³ÙõõõÓ§O_¹rlS!D*•‚úO§Ó=õÔS‡3›4LÍßtª†"˜#NÏÍÍ;wnmm¤ ¸u:¶Ùlmmm ) !@M«„¿³ð¤¸»Ífs¹\ÔÑ´ÈŠ¢–š3¨µµõøñãn·t<¨ùðžÂr ù0fkå[˜ž‹È¡¸ ’r!ÀÀB/¶•Íf­V+¬úTsAà Πø6›Í---µµµ.— 5GÞííík×®ÍÍÍá¤aäëB¡°¹¹yçμˆ±ncj?/4¼+Ñp¬„œ§)±s/Ia…k’5ZY)û½:K,]õ£+»ðÖã+“““ÙlÖn·ßççï|îsŸã>ñ0uºÿ«}ík_£Ä‹÷S*c扉‰ûßd !žþùwØtªò^±–Ïçó¿ø‹¿(*¬åß²,,,¼ÃP“—o~ó›BˆŽŽŽª6j¾c¹¢Z©2ûÛ¿ýÛ¿ýÛ¿}XRYºµ2ggg_}õÕÎÎÎçž{ýB!".Ä{Åb1Cb9===99i4{{{ŸÏÇiöiQ0{>‚&ƒ*†>\ÿX«««½^¯ÓéÄç!b‘`½ÂuÆ›TAâ#£"¾FI,­våÀ Ÿ#ø|ÅSaR¼IiJjï0~< •sµTÈ”j-¥Ïk*éœ~Eë-!2ÛÛÛW¯^½sç Fc6›«««{{{ûûûÝn7S.wý£•ØO߯,œúÇßMäóWñb;àsu4…žNÕŒü»‚yQ³Ðâ+d³Ùùùùëׯƒy@OH$GGGÛÚÚ`–Äû$©[·n]¹r®[¼À7ðE,&4õT/Çʳ™¹àE"‘™™¤>åÐj&“YYYÙØØhjj’/ cï¼¹@­ éŒ 6¬o”°2U´0Ñ ¬VkuuuMM ™Ö\ J¥è-FÃQH‚ϰަÓibºaM ÅŸ·4§R)»ÝŽ’æ5°*dº°Ûí ˜•J%“ÉŠÖÒÒ¥Ëäà ¾ ý~:?'¸‘–z¨\j´½þxWr~7–qœj˜Íf¼8„‚‘qÌZ<â² o=¾jÃýËMù:òŸþÓ‚©Í­[·öìÙS*•þøÿøOþäO„ƒáýïÿïýÞïíhZÿçþçW®\ùÒ—¾ô©O}êË_þòÅ‹ï‡Aæv»A^8sæL¥³õ}–ÿüŸÿó¾ð…¹¹¹‡8”ïf-ßÒÒ²ººZùyXË?¬»¿e …BÐ7-.. !jkkõzýÿú¿þ¯wC!w¬ö>ðo}ë[«JßøÆ7FGGU©3©ÀZþôéÓgÏžåÕ¾›®pGkùÏ~ö³ŸùÌg*ݦNŸ>ýÎ)EâîûέåÅN]f4ññ¬åw¬¡×ëÝÚÚz'uÛÑZ~``àÃþð§>õ)Uµ–åÞÃFܽSÈZ^ …[[[$­¬¬´¶¶’µüc+w{œ=kyBCÄN þÞvy{‹<öy‰DbbbB’¤ÁÁAXØ%Š ŒC aG²AìÃ(Òã›{:{äñ0>ŒÍw·!€êlœÀI‘D¡{Е5åŽ'¸>ühh”ÔüqèÐ5—ËMMM?~ssÜÆ†††¦¦&à#|‰ãw:å{M¢9`GKùݱ·æxh8øŸÄ‡²àë¸isÀŽ!Cn‚·HìÉy+%ʼnÞÔÔ²¢Ý£–ÄŹ“ "r8¬ ‹Å"ü×u:ÒØãÃ0Ð¥€J«Õ¦R©P(T*•º»»ÛÚÚh>ÿ%'=)DBÊd2ËË˱XÌår=ÿüóÈz¦‡Ôh1@Køž1 B©L&£×ë­V+¨a…Bavv6466>ýôÓ&“‰°¿ëׯÛíö“'O¶¶¶"0#FR±X ‡ÃuuusssCCCð· 凎ý… þd³ÙÍÍM“Éäp8z{{0w@"o2ÁvžZ­öâÅ‹.—«¯¯ÌÑdÅ0¤a.S[[»²²ÞUt)j1$‹ÇãHÒG–@`‚ÙŠ¼u„§¶¶vzzþ嘰šr,f;Åió¼—Ð(Å0p8ÿȃ™Ã+ $´¶¶Úíöp8ÇÉëZe+Np7bs¬­­Ý¹sg~~Ä=D›¨‰Çãéíí=pà@kk+VZÖ4,wÕBo"ØÃÑÌ¢:s¼[0Ѳ@}tK 3Ùû8>F€²Ì²H,á)ûùMé¸ÞYu– ú_ÌårÊý•4¿çλqãF&“"Y,£ÑèæææÚÚÚÆÆÆÈÈHww7ù‹ Åò¨y&¦ã> v¬ø.¶r¹¡a©T‚#8‚|I’bʲkjjà܃TF£Ñ`E/ 4³ÙÌ!~!^hœR©”H$¢Ñ(%O,*™ QC¼FñW€A±XìÆ[[[tÌC!—ËMOOOOO÷ôôŠJf³YŸÏwíÚµp8¬:•ÁM777ÇÆÆHKËù¹h@ B™LFf"8BU¶2‘HÌÏÏ£MDùÙ[©TŠF£XOòùüââ"Àšùùy¡ ž0©œÍf³kkk£££v»½ÄÒ>AÆë¯-@íápGJÑhÉ"Á“%²6®œL&3™ ¸E !ð¾JjN<52TƒAP«"‘¥E¿`ªBØžL&C¡P €‰ ‘Å0ðæB8κº:P½ü~ °Z­X'a'¢š&ÔzÈ5 hÒçóE"§Ó‰á$*X“4=éÊÏ0ìK册f[‰ÏƒB‹~ÁÌÊf³”›µ+D彺A/ EÉdòm|÷;ßùŽâÃþ0°­Ÿû¹Ÿãš¯l6ûÿðßûÞ÷þîïþîø€ê»:.ŸÏéK_úÆ7¾ñÊ+¯ÜgÐØÕÕuõêU±“ä$—Ëñ­áŽéf~ò'rjjêë_ÿúÇ?þñGݼ•*'dN|Ô÷å¥RßäóùîmÀTYí––HÙVùú׿þ©O}êÞŸùâ¿ÈÝå߆®P5N–\în­„̉ïüÊ;vÙ½íÒ?ù“?yùòå‡òø•¥T*=:)(Ê[›ÊGFæÄ½‘ÛíFîäËcËœXù8ÈœøHoúD ű÷šoû[’$W_}Õårµ··S\G" Q.±¡mœŠŽQŸóÑÁr%´ÄÉ;ê(ââ¬.¹<=6¢ø§!èõz»ÝNŸ;1Ñ L1VWW/\¸ß_Fãr¹<Ïææf €ÍS*•Âþ›Ã[ˆÒ­)! öå³ Œ£´€B‰šJÌÀ… = ’"„ E ":T HÈPÞB Ò@ÊIgø=E>:(ƒ^¯GèžJ¥®\¹²½½Íf»ºº^z饚šùÀÚè˜ÉdNŸ>3†cÇŽ:tÈår!˜ä÷¥gAïSÚ²t:íp8®]»f³Ù<¹ËW’31á`Ô¼–¥ÿ­©©!R%;ƒ¥£££©© Ö¼%%âjxët:‡Ã. Àš`YBdëÀ´ ±iâ9ŽÃÇBd”^M5ÓpØl6Ä…BþÍÀùÕ$Åf›¬sTó&4}x§ÀàßáphX–‚tUpgü  ÆXD!¸–ÏVƒÁP]] Y(¸`4Ù¹¼´¶¶Öét"ø'œ§; ž·í+‹ Ä-//kµÚšš—Ëe4s¹\"‘H$Pnooðƒìïïåv6¸&á>¸8ø`À F#äÁ—5I±Šçâ5®"’&-nQ¡Õ"l‘3§hРjy*äcó…VE~5º)–MM¹¡}UÊf³ —.]º~ýºN§ XÊåË—‘ÓζÒ²,§R)„3`ôw@ ™LK(à¼AŠåHùŠŠÓ‚·àV, ³ÃL¡£Z®¡ä•e¡"`x7ÑòˆV …B>Ÿ˜§|#x ÕÀÓE£ÑÅÅEdJ­œÈ~¿ÿÚµk0@ÄQG"‘À¦E7Í_p`n^¿~= ‡WAúÙD"‰Dâ1Èh9 ×ù|­DõáW2™¼uëV2™R¿½½‹ÅJ¥Òèèèìì, Ý|>¿¿L&³¸¸˜J¥, °-Ê«‹“Ò6yÁjccceeÅ`0¤R©p8,I–)ÏáƒF°Óê±Z­N§³¦¦Æn·g2™¥¥¥¥¥¥ÉÉIŸÏW,_ýõÚÚZŒjNçr¹vWUU³¶´´„ã —Ë…³%`R‘H$™LêõzÇ‹ÅpN311155µ¼¼ìñxŽ9ÒÚÚ*ßEþI›¨h4ŠÆÑh4Xœ­V+°ÈÊuRu¾ìK,Q-8´ªå ˆv#D$Ѐh;îµnÙ…·_+üÛƒ·¦§§…ˆ6ÿöoÿöoþæo4Íÿø?þ›››ðƒøá˜ÉdþÙ?ûgÓÓÓ555ü»:îÛßþv0«¤!Ü­ ÞRE}BˆÏþó¿ð ¿poûó?ú£?úßù!ÄÁƒÿâ/þ¢¿¿ÿàÁƒ´yyâ³S§N}îsŸËçóÞzË̉÷S퇂ÚP …B—/_~Kë¢w˜9Qáv»OæD´Rkkë»*sbeÞ½µµµGo?þìÙ³ª_¾ó̉TîgØTvJGGÇÛ€·Pd%㤠~"™ñ8øå#½énB”J¥•••«W¯îß¿Ÿ@™¹DqbÔ½—SU4%1 Œ(Ïó¥:´$ÜJõ{‰%á’™„‡STŸWÝN(øöÄø¢ŠúG±\$¹|ùòÔÔÆaccã,ËÄÄÄÖÖbéËÓDW §jŠ3‰ÂCò%¡!®l#|Õ(vˈx ±ï'Š‚P‰âÀþN„Çç{Y-ËFO)íˆMC¸öÇód^¾|yee…Ìà;::š››ÉŒƒ‡nBˆT*µ¶¶† wttttt í ÊrNb‚5ª~†bLø‰ì¡ò°œø,Ô>xü@ô ü×b± Ž¢VB†Ãá|>ßÓÓ) 5EUJ!Y% »¡o„gQ?R'òC{¾¦R)£Dâ@Ç)( Öh4¢Vr¹ÎE0¢œ AÝ$…ÄÿН`ŒQ+i˜ç7uA!Ä*¢Õƒ¢qŽß*B§îÕårá¢AÑÜ‘QsMM ’ÍaÖàjÜ_F(š&ÌDN—H$&''ðƒ„B¡áááŽŽŽšš›ÍFp©TjaaabbâÆµµµõõõÐ+¡zdÌS5“ÉpPT ¢¦ÊÌ”BÍJ(P(¾ÔB eùÜO§ÓäÍ]ÒdE†V‚$V5œP8¦ ÚTÌ¥R ˆ3š„%%µ%ª]*× Â³I¯×'‰™™™™™™x<îp8àI$)âbPäR©ÔøøøÆÆFuu5Í20Á¿[ ‰)qÒ€ÆÇo" s£'µ#AÛX¥µJzJ bðP‹Çãiœ›F°8±_‘›‚ˆiÔþXá1ÅÌfs$œ×ëEÞ=€J¨¤ÙlÆEð-Ч¦¦¨æ)•JXÆiZ¡;Ìf3(K\¿¯zßiµZ·Ûíõz1BpœCNð·nÝÂQ - h.»ÝÞÐÐPSSS]]ít:c±Ø=èðf³¹³³³··W§ÓAi¾¾¾^(<Oww7æ`±XKneeÅãñ BÂL,cL *ét: "µ1F ©@X‡ÃƒÁêY p»Ýµµµ555$ éáÐBfœÇx<¾¹¹¹²²Ý1°l°ºªªªÀ]ÅùD,[]] ƒ›››'Nûý~ wP냇‰Dâñøòò2,ÀÖÖÖ¢ÑèúúºV«ÅA vÜ®ÅpŠF£¡P>è~°Á©sœ„^ù²Êù‰CiH >À±&àL¥räHûUUvá­ÇWo…B¡·ñÝX,¦Õj!ùùÊW¾RUUõÃþðÔ©Sÿå¿ü— .|õ«_½páÂOýÔOmmmýÎïüÎù/ÿ…w``àãÿøç?ÿùû×E !~õWõ+_ùJ±X„ô‰J"‘¸råÊ[:Iý¸oß¾ŸýÙŸÿŸþ§ÿéܹsï”öyX™+óî=ºÌ‰BˆñññÊ_¾ó̉TîgØTvŠÏç{{·ã'U|å¦ê•ÊǹtéÒã¹õm¡íT©Tòx<ííí&“©¤8żUªpsËkŠòY‘e‘CàW „©äE‚9Ëž  ¡3¸…ÊaZ0ÓeÁ¸*œgþñxüæÍ›×¯_F£²,·µµ=ÿüó{öìÉår&“iuu$¨9°?&Ñ%6åü²¨ÉÙˆþÀÙ%¸û l‹ë›H@°"(ˆ>ÈZˆx% ™^C0[Y±ñÆÎ›hA2,0·¶¶¦§§oß¾=11á÷ûQ1PØP#Ê•Š1Ê•N§s:V«U¯×:¤ƒ311‘H$zzzŸ#2$¨4´Q`!=(Ä\4MðøˆîðóÊÊÊ+¯¼²´´tðàÁžždÀw1Iív;ß¹¹¹‹/Ö×× ™X"‘ …¥ÉÉIhûÝï~WõÝ}ûöýŸÿçÿù wÜ·oßúOÿé×~í×þöoÿöŸø*ŸN§ÿå¿ü—÷ÃhøÐ‡>ôk¿ök¿ó;¿ ÏíÛ·ßmíʽUN¡¼Ì‰ºÚ_ÿú×ÿù?ÿçô•waæÄG×J1s¢êñ]æD!„ÊæìáJAÅ}›wÞ)•'ƒÁ ÿÀcËœøPç=TJå9þT$ ñV´Ó‡Uìr:::>úÑvuuÙl6ҼоJf ª€hÚËD ã4a K@®S4N( ±iT|(^8uEf[ôW„aˆÐ¸F¬TîrBÛñâ>ŸïêÕ«›››¥RÉl6>|xdd¤ºººX,z½^$¿Cš?Ê‘'±tõØ …T*U(àA‹ä )u *Q{*¢UVÒê¡¶¤ÃòE‘€P%Â/È‹íCÅ•ùq1®†Sß’bè‹$‘H,--MOOûýþT*ÅyCœRÁ÷åÔं„bNRÌz4Š“²’ÞGJ"|µX,àRá»üÔ§DO#­ŸF)‚™U—˜-¢P"Çñ±ªÕj‘º‹,ê Î Hí Ì’TR•$&$J¢.4/Ì}ÜÌAyâqÇx<`«‡=2¹Ã¼£DÑhT’¤t:‹Å 9¢†>¥Ñh¢Ñ(9‘Hø|>°$0ê[â[ E@yŠ ær¹ííí`0ˆ¦ Ž•$I`aPÔ„ŸN§qk P‘p “ût:½ºº:66¶ººº±±¡Õj­VëÀÀÀ,À|”o5¿yóæÂÂÂÆÆr`ê!Ø£Xo‰D" .//—J¥Û·ooll ª'!­Fɹ¹¶¶ÇÃáð7¿ùMÇx -j‚E€ÅÆÆF*•òù|ßÿþ÷‘ `(`‘*–F5Ç”%f¬£Urü …¨a™ÎÐ,&“IR\ºÐ’ &S‰D«+îH“†Öœn†gA‹QV ™²,cüù%‘HhµZ£ÑHÐ9T„Hêp8 `% G£äqBÀAéÚµk:îé§ŸF®IÜ|úcâÍ|-‡ö|8ÀÁ>O@-[ ¸~ý:2Î Qö[®%6+D°â'@|­Ëf³n·Ûjµ655577¸@IÎGÅ"bZ¹:Òl6÷÷÷#…=Ы¡X,z<ÒSû`D™L¦ÞÞÞžž·Û­Q”Îù|~aaaqq±ªªjuu•ƒ#´bë©©©A˃}&3±*-ï‹eÏž=­­­n·(P¹\Îív{<·6›­©© røêêjx.Ëâ»’’´õ¯¯¯ŸŸŸ×étv»&YªIO:N§ÓY]]Mý®Q‰`†Â4Œ-(S©TmmmWWW}}½PðtÌ)«Õ ¸Ùétêtº®®.—Ë¥ÓéਅNïÏh4nooOLL  ’H¨.u%¡ðIm6[CCHdf³¹®®®££ Jн=—óKLÈL3Bf Y¢%¢ÙAÅ‚@;­’0ÈšÅbL,+6ôÒ|¤ÛË]xëñXÊ-//ßçç+·Úô›ÅÅÅ¿ø‹¿Øñ“7,9}ú´ŠÄñÕ¯~õ>¿ûÑ~ô£ýèC¬ Ê|æÄK—.}ùË_~XÕ8{öìý7—ØÍœ¸›9QñàÆÊ;ÉœHe7sâ£.ã¢?©:ÐŽÊëõB¥§H‚ŸTlyúwG0B0Í”( ˆ\C²ÄÝýÈ8qƒ.¸ã-€ãôQ¡ÏÒ(ÖKø ×­­­­­­!„nmmíï9ŽgáÞE 8ÖFÍåóùfffVWW³Ù,6²°tE0_*•8÷ªr<ðcU~r+•SØP"|!"|Ki3>ŠˆŒp"”ú˜ “Éø|¾ùùù¥¥¥ÅÅE¸ùËsh‡…CŸ2 !,A5À¶ ‰>FJ.ÞS˜âóˆi³Ù,w.«l@þ¼T<É删_RnJ4ÀIÉ€Ó’ÀfhE4E¾BœÃ9H0%Édäååep¦§§¾¡ŒZŒ7ÙÙÙB¡°±±111QSSƒXK¯×•ä•©T*NƒT‚Ç¿ví”/—.]ÚÞÞ®œÂ™LæöíÛ@ ŸÏ_¹r% !®£–§æÂƒÀ²¨P2™… Dê,@³C\JÍ |Š€ðò í„)¾Ïç[__‡¿’F£9w‹/ ‚&‹ÅŠ |Ž0ÀH‰ifm6ÛÐÐÁ(€3ý ô ŸP(‹ÅŒF£Ûíª\)‘Hp¬1ª,Ë‹Åëõ[)qÊi¢ÌžÜIM°3›$f£a2aÀ”ÖÖ©ÜžÃ[tÆ€ó?ÔË Tµâm©T*™LÂhŒ£-bÈ¡‰ÖHŒYF4 òÕÕÕæææúúz|LÃ\½øp%Àš |€2Éd7ÂáÈ_Wø Z,QŒ xä¬ÄL©\:¨&x"2 å‡+h4ŒgüWÕ›‚§ç"ü¿¿Ó’;88h6›!§%]RäÕÐkÊ%ÅöîÝËs}¢¶8Wðù|ðl›AÔ³D"A½¿ãƒ$Iv»}hhhppÐf³Iе9Ç鬿~–Ÿ¦Â]‘¿s1°ñb%;B©\”§QÝd_Hï;úYSnAÑëõz<˜¸ÛívB„°£,‹Çãfª ¡Hw±nëõút: Õ„œà‘Y,–¦¦&Y–^—D5êêêÝn÷öö6pF¬Õ´‰Ò*Žø¢< „¼S!©2m dEïŒyáp8\.µ6ÍÜ·Q¾?—‰‡Rvá­ÇWo…B!Ê\p?û³?ûìg?»ºº*IÒþáþùŸÿùÔÔFÌ¡C‡þôOÿºÅý¯ÿõç?ÿùÕÕÕ¦¦¦‡XsY–×××q^qÿß …B_ùÊWºcÎÝ2'¢p•“Ëå ‡Ãïò̉•ÕÖétüà¿ùÍo>”ú¤Óé{[2QæD›ÍYÖþýûçççc±ØŽŸ"™+[Éãñó̉NÓú–ÆJe§ …¢Ñ(Ùï÷“Í?Á+„&s¤ÎÓ–ÞCÏÀ[aM…H(°?BýhÖ¬ñz½ <†B!¸Œã䨵µµÒu1A±uuu€¹;üÝ$Æã3›ÍV«*<;pj B>Tø¼‚†äh555ÍÍÍ’$Åãq€h‘H£¡òÙ³g@]]ÝÉ“'[ZZh–q„ËZ5åºi¢¯¢Jétq>V(1“É$:– 8dØDÌâÕò»ðߨž”/ï„!cÕE§X, \â ÷:8 BA Ç:Õ¸²Édjnn†® ×'@ðÂéˆ,˜P7‹%“IðìˆY†‹ÈŠËï9tHÜ^U;ÈåüYÔ™j"˜! ÐL"â‘.Œ¿Jåödôº!HQ¯×;N8Ua”öõõ?~ã‡wÿË XH˜P‡J·ÎÎN`©ôhÜ …ÍÍMÊ3 z;È ËŒZÓ¤¡¡¡ªª*‘H‹E·ÛÝÕÕµÿþöövp»È3½C“Ž/2XÛ±TÞšS¶Áì³Ùlf³Ùn·“tnÇ­B6›3‹\&ù 'ø“B’$§Ói4«««iìŽ+à[ƒ h«Õ nAÉX1´J6 @`ÝÝÝñx<‘H8Îööv³Ù‹Å0´ ƒÅbÁh¯¯¯ïì쬫«ÃD€§A‰e<äoÿK„"ضki@(?[ƒÁ€y¡×ëÁ&¡,:ÀqYzþÆ|¤å=¿Ar|¿uëÖÉ“'è»ÿôŸþÓOúÓ§OŸ~î¹çþÅ¿øý×ýÉO~ò?þÇÿXUUÕßß?==x²P(¸\.¬A±H’ô6ð2·Ûýì³Ï>ªÖ¬(•*§p8Œ•E<®ük;¦ákhhèèè¸ÿjS¾Û‡RÛíÄ„ú“?ù“§žzÊï÷«rÜ»¨V«‡+—«l%x¿sdgÇ.kll„•Àý—Çœ9Q>~çÎŽŽŽãÇãaùôÁõAÁ (Ø<_¼xqvv¶¤xH FBq»Ýt:­Á'Èd25559r¤¶¶6¿úê«ÜXƒ ™ëêêN:…ú“¸Œh d®„î&Ò"'žÐÅQgF‹ÅÒé4d º`h™L&TžÓkkk£££ÕÕÕ­­­^¯7ŸÏý‘˜.•·$Mv®cåÖÔñx<‰„•/jàVÄ1Ñh4F£±®®®³³Óív «Õªe$(úåTËׯÊÅ“ÞJ˜2h1L I’à®í÷û¡‡u»Ý===€ò%…z#),à° õõõ´(à ,ÔÑê°¸ÚØØX^^-„0N§ƒ¼£££¶¶–Ÿw:'OžlnnŽÅb€·jkk‘ÃÄòܘŒÏ Y1‘D_go*¨¡Hu yÀ[ÀÎv,`Ë‚'Å 51•$IÊçó —VUU9 fèY<,¹H¤h±X±‘™A¥ØÔÖÖ666†B¡ÖÖÖÆÆF ›Í†÷E6›œœÌf³­­­h[ðQíD"i‹Êó×SI1ùâo.¡`Ž•)&0éҬK$$§!*)Θz’ eéAÜTßvÙ…·_immÅ7oÞ|PxËn·æ3ŸùÅ_üÅëׯ»\®üàŸøÄ'¾üå/ÿʯüJww÷ì쬢T*½òÊ+ÿôŸþÓG­h½ÿòPlÅï³ì˜ï§~ê§°†>žük;ÖáÅ_¼×ìn_~líVYNž<©ÑhþîïþîW~åWîÿ[/¢j·cÇŽqxëqfNÜñqp¼ö#\¤ Ác+;">´[%É8E‘ ? ¼z~b)˜ã?Î¥$u*ø‰„c¼•ärm¶­ÐΨږȪ—™gp©TZYY x¨¦¦&ǃà ûN¢ ñ@…ÚG’¤ÍÍÍÉÉÉX,ÖÒÒ²oß¾ºººL&sõêÕíím¿ß“d)ñîЃàÑ5® SjŠÇ(ùünR©T"‘H$ø rKЏyè‹JÊpÚC#Cõ qb±X(ŠÇã8g&;sQ»QÜ¥Óé‚Áàw¾ó·Û àÏE»j¡°·Âá0gßùÎwœN§ÙlF¼JÙ‡ FÝ¢ÃvI’` ŽL² uÂø 2±ÿˆŽ¬i[ÐÚÀ‰†#„XYYA\$3q*ƒS::ê‡|!w©TêìììîîF>8I¡D"‘×_=‰ †—˜Ãº$I.—ëÔ©SðHFê:ÄQÐjµZ$»téÒÅ‹kjj^~ùe ¤YqΤ|0ŽD"¯¾úê•+WZZZ>ô¡555ÚÐ(Ùâ1677¿ýíoÏÌ̼ð ÃÃà דlS.×ÿ"X-•J555Ñhtddä™gžÁÕ×”Khi^!677oݺEŸ›øLSSSwww:v»Ýf³9 y<ž}ûöíÛ·Ï`0ܺu«’“NX (p¢ ã(ø`®¯QŒºC¡Ñ‘¼^¯Óéä:´°N§Ëd2”qÃLVø’ÿƒVS‚âÐÇ4åiÁXº2c8¢+1wR©T,[^^^]]]^^ŽF£¤k7Å\N&“ÛÛÛ 7oÞ¬®®nooïêꪮ®˜K3Q[ž2UÐÒjLÒ]‰¥rå'ú+€Ý±±±ååep3…‹eyyùÙgŸmii;ñSp/¯×;44J F#÷†'}+z3}ffæêÕ«KKKÀ\°SýNç¾}ûž}öY—ËÅû‚·6fA<§ Î0ž  !ºF£céFK~Cô4®˜V½ª€Aà,¼µµµ{öìq:`P‚cHtW:!à“6á&“©µµµ··„>‡Ã “¨ľ¤q¨:¼ä/k‹Åâr¹hDÝl6[{{{GGêN dÅ6‹œÅè.|Ï@+á/’¢@§^ãêB,×ÞœÄÍ»¯Å­­­`0˜H$а”w…ÐIbžf³ÙT*DZ`ÒŽ‚rS„#²LÀZRRЂ“X(¼^oKK ÚÇívƒ¥ˆj …ššš¦¦&Nwüøqì½%I2›ÍàbüêMéhøæ°¬ýiý¬\7hÄòw Zðüãñ€˜>B=9ÙœÞÎ*FöC/»ðÖã+Xv…oãëÿò_þË7ß|ó§ú§ÿÛûoµµµÿßÿ÷ÿá÷===øùOþäO‚Áà;7 z–SàQ.¹ÇÀ„|Ë:<¬¯<†¢×ë/]ºô@ðÒ²<"¹Ü£k¥‡uåÇœ9ñÝPJÓU¶Û“Êœøîœ‰¡|øÄ‰ðÀ˜ A.vz<llllll<õÔSCCCv»Ð„l6;::ÊéxªVµÙlýýý}}}„¤P£ÁK †/[[[£££{÷îõx<–¸bH Ñ­ñx|fffllÌãñtww×ÕÕḞøA Fdz¾¾ÞÞÞ $Õ¬”Ê¥»°Woiiq:pÜÇ™%¯ êOßæˆuj>¹Ü•?$ РŒFã¾}ûª««‰úÔVX+°NRT,ÊA¾Lñ_JJ:´L, sss °S0 õõõ---á­€p¡µ¡Ôóù|Á`0™L^»vmbb¢©©idd¤±±(ŒEù©ý—ü³4̲¯ÀªÑK“%¿ùæ›·nÝB¶ | ‹!7 ¡(¤x_ÍéîîFÓ‘•£B<O&“SSSgÏž]XX¨®®>|ø°Çã‘*V4…†t||¼¾¾~Ïž=™œ¢‚QN@ždVVÔyœñʹN„<ò¤Dº‘ëq0OéuS*• Ö¦Á ­fj±XH×¢Qì¥xSclh˜Á9øn€ÚñRˆ¦€6ª$p%ŸO ¤¬®®£W(ùI].WMM êćNG/æä&¾sÀ-ˆ×‰w©8‰p*5.š7ŸÏ#‰!±;é%H&‰’$ᕇãHb.þXÖ¨7!™Ç+UV×X+„rôi$Vx‰1þ$f»Ž*ᵂ¯ ã`ƒˆ\555}}}d'‡ ˆ1€ž²Z­±XLRDÇ”¡¢¨dï!l·Ä’óÒjÉ,‰&Œ¯Ë²ŒmzœÖ+ê;JHB‹¶Š°ÿˆÊ.¼õøŠÉdjhhØØØ¸yóæÛøºF£ù›¿ù›_þå_îïïÿýßÿý—_~¹±±Q’¤žžž›7oþÆoüÆßÿýß¿þúë•61?&eÇx$Ž{<ù×î]‡‡õ•ÇSÞ†&ëÑÉå]+=¬+ï˜9Ñår=ŠÖx—”‡Òt•í ±ËÁ[æÄwíL|¤Ez¼t­ïNuÊyd´"Ž>¦©ð%å{2ú%$ã°‘6š\Çà¼zNþ’™‘ܬ¹ÿEŠ=U¬ÎÅPq+) q—L&‹ÅcY,¸n –>ú|>N“{ÂZ1¦¦¦B¡PUUÕöööµk×pÍÍÍÍíííË—//-- p”ˆ¶€ó|­cF‰~ [¶#¤Uv¬A’—¡2B‰µZmkkkkk+H[h"œi£/|>ßõëב>œ pZhoo¯««s:555Ø+û|¾¿ú«¿* /¿ürWWÌò ì£È]»vÍï÷ !^xá…ÞÞ^PÌðÈ JÈŠ6%J£˜™FËÆÆÆÁƒ=ŠÄg0äBgAN(š@&>4üÐS·o߆B3Ñ\‹¥³³‰ÕHb£òÞâÏq·Û‰DÚÛÛ‘: "8ÞHÖ&™‘ƒ;€ Ľˆ FÚGýà nçˆ Vзk0ŸP4‰‚åv ||ш’Ã[w%=8àrIS­|%‘Ic©TB\ªºaÊ€çÀÎÐëõmmmB¡UUU½¥1ÏÇ¡c”ñúƒ™‚FŽD"7oÞüÁ~0118žžž‡ÃùÈG¼^/RU’’ŽèîWñ¸QÜe1ßQ„gDz¶¶6??¿¸¸ …ŒFcsssKKKMMÓét¹\d­%)*?E˜Éd2‹-.....NOOÇãñ={öô÷÷ÃR†®ÌLÁs÷Cœ¯aN@u9^CXàû““““““H&Àû%‘HŒwww;h€(ÑúO*ƒITRÜÙòFkÛôôôéÓ§}>ßÞ½{ûûû[[[- ÆC©TJ&“ápxeeåÒ¥KçÎÓëõ}}}x`¦ÄÚ£çE­Ф ‚I}iüciÅ)1ªˆ±‡‘BÔï÷oooÓ« Fr$ÌÄõÑnKKKÑh4“ÉÀî½X,bÒì£"ðb=‰D"Ñh´P(`À£Ñ€¬âF†w4ƒ‚Á áþª!j·ÛÛÚÚªªªÂá0Zúq< ißH͇+àm…úÔ ˆ‚KJ^K(HÂáðââ"2;Ñ4ÇêDqhÒH$²¼¼‡·¶¶|>¹ …äPÏçó!ìÆÆÆÂÂE(¹g2™5ò~†Ãa¤;ˆF£H©IŠ·'£ÑH‰5J,K&M ü2™LƒÁh4Šc@‡Ãéüÿ±÷ÞQ’¤Õ•ø‘eÒgVe–·]ÕÝÕÞO›1ŒÁÍàV¬A,GBfÏYÚåì®VúI B¬G‹X@ØÁ ãzÚwW{[Þge¥÷Y•ñûãn\½ŒÈnÆ´›™zôÉΊŒø||ï~÷Ýý°»»ÛçóÀ‹…ŠÅ ‹C]ב®‘² ÀÁÉncy”ÉÞ²,#œ˜<ÿãŽë<'gÇ$§Æ­³Uxë¶Ú¶mÛ†Æ~ük·\ðþ÷¿ßòÍ… ”R›6mºÓU¼öB2'ÞŠ\r/Ö^BîT±ía¤Ÿÿü篗½ñz™o›«|ëZéæÞ¹ ^æMjfN¼xñâG?úÑ›^ý—c7±éâñx{{û]^¿ßÿŠÎœx÷˜³´jSBú”Fw…ßÈk,4 ‰^ñhQ¾ù,]¨óò„Üa#t†¹ñ•w®¯¯‡o/)K8i2S‚l‚}9ÜZ¯×˨ en+'&&~ö³ŸÍÎÎÂa0ªµW¶Ñ+++×®]›œœ„Ë„dP~ex Ow¬¬¬D£ÑD"áõz{zz¯@*ÇÅ@ʆ‡‡—––˜¯ª©©i```Ó¦MÈ’^.—ææææççfˆ(žþþþ‡~xãÆØý»\.‚A†a,,,$‰X,F™a´§ßïommݹsçàà`OOòa‘”Aj@gg'RËšT‚7‡*÷÷÷»ÝîåååÖÖÖP(„ÈD€ÀË…ÃÀ¸Bv.º²³³HP @¯¬¬€-e:%¤%1…•••L&366677Q‰³küÇòˆÄ>˜&4Ñ8\A=s¹\@€ø.›™™¹páˆB’üÂ1Ïù"«× n6ÃvdcÊ™b¡cÈ?É™kˆÔ»©‰b[Ù•äk(GGúzë ëoÙþ˜ßïƒÏ$?B‰ØìÌV‰VƒAðìPH6)ƒ7WVVÆÇÇò“Ÿ?~œ%×L¥êçŸ~``ࡇB÷1¦Ï£!Dno¸¦²x’õf‰Ë¶¬¢˜øÇ?þüÒÒ’ÓéÜ´iS8nmm…GŠ!Á•“bðpȱâ577—Ëå–––¾¾¾ÙÙÙ™™™Ã‡kš¶víZN±Š>S­ÓÍ\SEÎ9µ±(®”wf~~þôéÓétZâŒl´X,vîܹ––œ,ýŽOÎ꥛aï…BâGP©Gi‘WáÙgŸ½víZWWWWWWccc"‘ˆF£!CHW.—`tõêU]בLêoX À™)‹£££X<•‰CÑøâæËyQ__~+3NRd0NÁ9räÈüü¼n ƒX§ 6™bˆ%{â‰'“—h>ààGS‰kB©TJ$‹‹‹uuuÇŽK$˜†Æ'HǼ«\À±e“f¥”Êf³—/_^\\$C-BÙêÛßþ6ÖAÖLFЇé (Ê0Œþð‡—/_fs‹Å¹¹9¼Î¾óï`Ùç¬DþG€8hmhhÈår©TêܹsÅb1ðè‚]b±ØÔÔT&“9tèÐÈȱ …‚¦i~¿Y±ÄáÀÄÆJ¥råÊ•ÖÖVˆR1ùf>Ÿ‡À?^Í™dAûâø,C—3•J ¡µ@(ª˜ÿmmmˆƒ^^^ŽÅb”­Ô4-—Ë-,,àlìüùóJ©tttðÍ…·ža’âõê4>ö…Åò*!ξÝÂðÃá© ¿ä«ðÙ*¼u[mûöíO<ñD:ž˜˜ÀIÑ ìÆÌ=¤¥Ðu½¥¥% fáµ`íííïz×»þ×ÿú_ö?Åb±[—KîÚK(Ã-62'ž8qÒòt„ðmÍëNç_ÿõ_[‚¶>ò‘üÝßý¤In‘ݺVº)w®™ðå'Žôz½ögö[¿õ[òKdN¼°•—ßt·¨Ýnuuî½÷ÞWhæÄÛ†A¿ü²qe³,þ³ôå$A€».86ܺ!†Î.Ðg\ 5ªx[J“H]2p "¤“¯ªéf²´tr˜•I)fOûqv `؇f¦$‡g ÐÊáp,,,ø|¾ 6@Ò[)éñÍ›7c/‹ƒhÁòòò©S§Ž;ÖÓÓóàƒ¶¶¶®¬¬ø|>ÒIŠÅâÄÄĹsçPÄmݺ‘eº™1 \†h4:77·´´T.—Ýn÷ÀÀÀæÍ››››ÉE‚”Aºººîîî³gÏ2!½ÏçëîîÞ¸qãÐÐPOOÏçcb2—ËŶBŽ2%½96xŒ¬L"qM’½ ÇËüljV3 p øcE™c´È³€\Å#âñ8ÜòJ­ôU"QBÜ.!$~“KO¸©© ñŒpŠàí,..B›˜—e¢ÑõeL. ,E¬€BCM¢éü9½G†»ÊÑ®™ZiÆ ”6Ëi™×¸Õv £ŒÒZ–_YM)ÐP«&÷ñÎÝÝÝÈÔœ`L ýaö—|–Çã‚H ¦ næÔ©©$á¼úúúh4zùòåÝ»w£ã0¢¤)"®9ùÂì“Ý'M¶›…2[ÓÓÓ'Ož<þ|"‘hhhèììììì š¦£i¨ŽmÃPAe!ßnAH¡&ær¹Ž9rðàA‡ÃÑÒÒ|À„}¹›&•J% XÆØŽl>çóùt:=77_¾,8l–——Ï;—ËåB¡¦-„P~Fd3Î×0 ÈHµ¶¶’ A@äo- ÑhôرcŒSxxéW®\‰F£Á`ÉÐD Æb±J¥röìÙ‰‰ °h\K^S—`µ—Q·Xadâ -hÅãq@'$®ˆ<˜ Ì¢Rx7q…$ʃVLÑ(yÃñ´ÝD"þð&@3HKnÚJ×uE…úNLLÌÌÌ0Žw^YY¹zõ*âæņ3ùêL&“ "MLL°7q°¨J¥ÒÒÒR.—#cNîòù<šéM@ ÄHp˜•R¨/&4Ë8‹ãñ8B] £’|áÂ…¥¥¥`0 …‚Áàòòr$Žx«T*utt@«kqq‘ST(HÜ^YY¹rå #ññ&EŸÖÕÕƒA¿ß3ð¼4“™¥iZ2™ŒÇã`>V*•õë×ãü˜¯ChVRóK¾Ë$¼¥‹Œ·|/¼V¦¦&N.ñÚE+­Â[¯*Û¾};>œ;wîçÂ[5 ù³ý~]]uµ±w|…º[/Ö*6…Ú-Í%÷í%”án(6leeeëÖ­©Tê/ÿò/¯wÜ`ÝN»u­tSî|‹BÛn0Úï{ùMwW…¾ðêTLMÍU{ù&÷C–ãA©Âh lÄAvPÂYÕEª)ÍõÐEvv˜a£N3«þKï7ä±?é$İ”8ØT¦,…¼3÷Á„“(:£D”#Dp¶Œ„º»»ï¿ÿþh4 WGÄtKòùüØØØOúÓÞÞÞx"Çår¹³³S×õ5kÖø|> ˨±T*uòäÉÞÞÞîîîP(÷•åŒF£\2 # Þ{ï½{öì' MáñxB¡Poo/Ž QN裧*1> Cˆ$SkÖ¬Y¿~ýúõë;::Pb=š©h«L‡0ŸÏÇb1à\ì¸Uht}cc£Ïç‹D"étZ7•Ô•`3q+OþˆDèÍÍÍÉLö=“؇VÍähhh€C¸°°PsÑ€ßÅcmšZBg[ˆ¿h¦P Ç•„‡j€x<¨¥¦H îO1ÔÚår¡â<=ÕÉݺ2g"¿PF©˜XîN¥Ñ,~,ë˧CVŸ]FïN×uJÅaÀ &©ªŒÔnÛ¶ Qð`2jÕÄOÖÔBþ‚Ï¿yóæ½{÷BM>?DÇåJ$×®]K¥R–ŸkfdÓÈÈÈéÓ§ÛÛÛÃá0ªOÜ„ÐýmMÓ‰¨CuuuétúêÕ«¥R)‹]¹r¥§§‡=As„xçùùùL&“H$¦¦¦I”ËåÙÙÙT*uöìYDo¡SÜn7Xœ`*žÀú@Dà f:L©Tjvv6‹555ùý~ÀRœ§’Éåv» ÃÈd2€{À¬Dí0$€× qæZ(àºÕì]Žºd29>>FN'_‰D‚¢ì|¹ ›!“ÉD"RՀ㠰š+rÛ†ÑÈPkLÒb±¸´´¤ëú† <rÕaB%“ÉóçÏONN655mÚ´ x($ 3†keeåòåËH˜ÞÕÕµ}ûv‹ä)cÁg§hš–ÉdŽ=:22²mÛ¶={öÔ™†²K«%hJkÖ¬yä‘Gˆ‰³) 3%«<×Áú‰D’Éd"‘Ø»wï¦M›êêê²Ù,† Ùdå ËåòÒÒÒðððüüü½÷Þ µxŒ"¼ƒ8M Û777wøða¼_À%¶b#—GŒÕçŸ>ŸÏïÞ½{×®]h”öÚµkà?üðÃíííx@y0˜" Yï_ºt©¹¹ù¾ûîëîîÆàDc)s»Ýsss‰D"‘H8p`íÚµ,!–/ÐëÐ@º?~éÒ¥R©”N§‘p¦©© Z„+++P²Ã•J¥ÀPà…f$© ¼°ÑÑÑóçÏ×ÕÕmÞ¼¹¥¥Åçó†1??ðàAŒ:Ã0"‘‡:;;‘Ó³ówvv6‰(¥÷ìÙª—R•”# 9«=wPJœXèB/O¾ø”™z…4@"u3W,Ÿ‚É~Kí5ˆÜ=¶mÛ6|8{öìÛÞö¶ûó~ô£üÇ\(Þ÷¾÷}îsŸã¨‚$ÁkÞZµ[d±Xlpp0‘H¼ñoüßù;]œW˜É €7=q䫨VÛmÕhv$WÂ@’'ÏÔHšP ±Ü„[íŠHú£Ù’’B%Oª%·K~Öªó¾ó†J löZq#Ï›W}ÃeÅmÓÝÝÈAüÐçóõôô{u˜Fˆ*›Í:ÎS§N9@´KKK n·»··—)Ï•€Q¦’:² †ÑÔÔO[püµT*ŽŽBéÆãñ<øàƒ<ðb—(½dˆ„n8ä–WJºHQÍLïp8ï¿ÿþuëÖùýþ@ ÀÓ`ÞÖ0³S!Wßï_XX˜]·n%œx’LnšR ¸ÛÅ‹!¯Lô„ahÔhC•Whˆ0Ã|>ÈЖ–HÏqcƒ=® ·ºº:*è[\e¯¨à$pô(Ñ%YN0™Ç-R¦$“®7Ëà·C2ލ ™þŒ|¢\.‡ñIdž͋¹ƒÃÀ(È%“I hô‘@ (•J‘H$‘HÄãñK—.uttÀÏI&“étX$Ÿ‚JX£èp8R©ÂÇP$—Ë…qËp*x˜p¹´+ie¨ZGGǶlÙât:Žð¾%b¯2™ÌÈȈ¤ÕTDöI÷œ>}š$&ˆ=#¤¨ééiä^Ôy“½P©TÆÆÆþéŸþÉëõ¶µµ5%‚¨dŒÊØ1·Û =øT*¥”zâ‰' ¾¥R )Û …p7xÔJ)„ãTÉëõ‚§ŒaOÊŒ®ë îÕ××{½^€ãhLà Nij C_SSSsss*•š›››˜˜@š ¿ß’ËÁÜØØX(Μ9ƒ•#ÜétööööõõÆ…’///£±¤³ä‚ÜÐаfͤãÔut•ùùy™y€VWW·aÆ;v` ³ ö&`,éºîõz)g®›‰ ð€•à‡¶µµaÝÖÌÔ( åÎÏÏoÞ¼ù¡‡B+ñx ð²ìMLL€ôºcÇŽŽŽ ´ ´½3™ „í7oÞ¼}ûvæ:T¦&½.äÒˆ!ºÝî–––þþ~§ÓY1åö¸ÀVÌ$¿ò=¸²²âõz;::òù|kkk{{;„ö0 “©*ñ ÌÏÏCönÓ¦Mëׯ'#‰ ˆ&س³³Éd²½½}ÿþýhvL3“#ß#È£råÊ•l6»sçÎ;vàz¬ÉJ©óçÏW*•;wâ¬à Puy΄ ©Tjzzº»»{ÇŽò‰Ùl6—Ëax·´´,//oܸqÛ¶mš)£Î0Ll!¨CÇGGG9[ÁŒÅb¨8@U¿ßßØØˆœ­xI)Sp+†nêaµ··Çãñ@ ðÐCµµµAnll Ù–ÉÊÄЭ««ëììܲe‹ßïw»Ý˜øÓÓÓš¦8p`ïÞ½ÍÍÍ×ÐøLÂ(O ¹f’uKhX®ê–×¥G¿<± ^WW„½"’ÜR[Dn« aiÕÿEÙSO=õßÿûÇç¿ù›¿ùÅ_üŇ~X™;ŒìfVmÕ~®}æ3Ÿùâ¿hF8þÑ~t§‹óÊ3d¼ã±±¯8[m·U³ýy`ÈÈ\S²Ðv,×7¸ÔDØ£%´JÞP‰ìz –i6YËs adˆ Jnˆ+Bu^×uà ã03 #Ö†YCán øýþH$rùòå`08::Z*•vìØòÛÍü¸O¡PXZZÒLqÍLÈh˜’^gÏž…Hù¶mÛöïß´h¼‰,<ÿ¥£eˆÀRéÙJ*`² 6Üwß}MMM’ì£DV5Ör?@úìH¢t3 Ãçóõõõ;wN3©¸RÆJ¼’Ô²ŸP\.7†~$Õª£¥$[éò$‹õBª>ž¨k"$CDÆ¡›ÀcNÔÓÓ£ ¡·öööÞÞÞxŸO$J)@ZÇ/‹ÓÓÓ?úÑÂá0ô¿WÉÅb###étúé§Ÿž™™¿<›››A¬ ž4¬x<-KŒg`pº®»Ýn@-º™ØQ×u%!BÚÊ$iâs¹\†–Íøøx6›¥°4Ú Tl('Iuuu£££à‰à‡™ÔŒ~c<O§Ó –±#Ï+•Je2™ÉÉIÕ—î¢Ëå ‡Ãàè!_¡PuÈçó …ÅÅEÀß---^¯h]}}}0„˜42„‚ T.—ÇÇÇ/\¸ …úúúü‹êSƒ‚@¡’Ïçu3¶ lÅLƒ€o43©b©Tšœœ<þü¦M›º»»‘ÇMj3)¥ŠÅâ™3gdžS¹f¶´´€‡Ûì ‡ÃH×hYx12À¶oßÄsaaáüùó5g~âõzׯ_,Ì¢}VtSœ@'äˆÂ+¥ gšz½^,ï¸$ÿ:;;ÛÛÛ Ú¬LáÅJ¥Ê-Æùââ↠€¯aÊèfL=g2€ü~?د’›L.3ô9´Hq•oCbýrÂ#¬Ë <Ýárº¼¼\.—ßïGÔ*À>ÃL@Ì1€€ikk+`DÙ>Jd<ÄHÀt@DÚ¯Bǃ®GÜ+%j‰ã .ePºlnnnjjr¹\$y9Ì̆`8b¹\.¯×k˜aþJPeÙuuu---œ×ÍprÆâiš–L&f&\ þÁ`ppp0»Ýn¦(E½–——[ZZš››ÛÚÚººº@Ë* HÖ9;;;??Ï.@<ãòò²Ûí…BÐÓuq‹§µµ+ߪˆåKÓ²¥!’Å:ê"ºƒ{yzÄqÈUø#{Vª—Þ"[…·n«^xòäÉ—oA<žFѾ˗/¯]»V¿sÉÝWíU`÷w§”r8·T?ëÕmwOé+ËVÛmÕ`Ü]‘ÅÍ7Oü/á-%˜o 8]óqrÆSkŸònZ-Í iv„‹HÇðO>±/„d†2•†âñ8½_]¨Ñ3ŽL¯– Ö4Íãñ´··ŽŽ>õÔSËËË÷Üs´oˆb°HÜq2j K:îêê‚K6333>>žÏç="#¸ï·Ü™ä)ec'Y:—ÍEžˆÓélnn€€åQF¶ÅL=:ÜÍÆÅ“ˆ˜d1¥”¢¥Ld ;òºººh4º°°ÐÚÚŠ@*)ߦl1€’½U__F¶Ç JZ_$SJQG* ŠXü ‡Ãǯ^½:;;{ôèÑL&ÐO*•‚˜±VKRÝ0Œ±±1*Àgȇ‘€AˆˆWè×üèG?:zô¨ÃÌÇáWår:ß@§§§+•Ê¡C‡¼^/ã¤àÌ`Â"µ™R ÚF踠N§3‘HÈÄó†a€>…&¥ÔÜÜœËåB Nä&ƒ$?ÕÐJ¥±|>FA~ééééêêB¤ Ö‰D&“AÝ5SF)…ÀÛ†††ééiPÆÖ­[‡mÅb‘Ÿäb À;E;§R©d2yòäÉ™™K Ç{zzöïß …âñøÓO?=??/Gš¥¿¿ÿ¡‡ ‡ÃðÕ+•J&“Áy6ú1‘Hèº~àÀD‰2÷ p¤áwtt A€ÈÐו€/ É)l˜ù”Ry1›H‡q˜IÑËH‘yñL’ J…xXKû¬¬¬Äb1C¨(i†aôõõjÿ•ÇãÙ¸qã¦M›@f„`ùôôô Î9Ea$cÎ"c&¦B_ý~?è]€øjàårÁãÒc¹¼+]eˆ=îÆßbASJÅb±C‡uvv®]»–Kç‚ädá‡Ô“K®<æÑÍaÌeÆÂóÍb3”àÞâHâh#…—–K=–@‡J„üËßò%ˆ¸EÒ»Œê4•ê¤r3 Á2ÝL9‚IÊø} ê¦P&†.PKÌäÀUÕ'•J%N_¼xqxxxnnŽû‹¦<§‰ËåÚ¿ÿÙ³gáÉi…-þ466öï|§½½0V[[[{{; g0ºººÂá°Ìõáõz·lÙ‹Å<ˆå”¯3hY•eJÍäëB§Ò°±àåÙ’ç1Þ2Lîž<}D”%£ÅÒKÒô‹Úª½4[…·n·mß¾ýäÉ“/^˜ýÂÈÀF¥T0|ó›ßŒÏ_ÿú×xà;]­U{5Ø~ô£@ p§K±j«¶j¯ #:CZ„Ü—â٠äú•åܘÆM-ùóø¬ ý >Ž[.aá°¥Çæ®Nx¬­„ƒ/ˆ¿Õ…Tyš©#Žœå<ä„‚¿‘Á f"Ê n9âM¦§§].×=÷Ü344Ä`C:–JHGa¯‰ í’L&/\¸páÂ…îîî‡~8ÏÏÏ#p& ¢\zwÒ!'À¸ŽÒ?Ùš Ra«ÍøP4HCš)Q7T»t:Ý3’9‚Ý€Ð-жÐeêw$wGÜ™fÒ£r¹½>‚eLˆžšššBî°'Ÿ|rllŒŠþ@è.Òù”L)…N_\\¬\GKqqqñ‰'ž8yò$¬âd‡¡¸ì>à,Ñh4“É<ýôÓgΜ¡«F°L™pêè£B¡pôèQ—˜( 2ßʉ †°šadáL"¯Ä¿Nç¹sç‚ÁàÐÐPkk+hA@@Ø;pà£Ñ(".jll$O„m…aŸL&¿ùÍo:ŽGy$ ¡@ˆ@â:ZP~)fbbâ[ßúV¹\~Ë[Þ²víZ9O  %I,"J‹è¼óçÏÏÌÌ444<òÈ#›7o†4  ‰¨Ú¶P(8Nj½çóyôàââ¢ùðÞC¡Ð?==½°°ìÉëõ¶¶¶öôô„Ãa¿ß‡K¥’ßïojjÂxÃþ§¡¡¡µµuppðÊ•+ÈÄR™LÚö¨&@Rô _ÜDN•8|²OUƒ‰ö‹ 3b]òë ´át”RRÿ"YÁ Ü(¾4[…·n·A]¾\._¹reóæÍ/ü‡{÷îݲeK.—{ï{ßûK¿ôKJ©k×®}îsŸ;~üø®Öª½âí?ÿçÿüÈ#ÜéR¬Úª­ÚkÅ,[j GUݹ¢ö-A"r‹F‹(CäÔS‚X$·ÂÒÙã^Ù··c[Zµ¶—.ò*£ӫÓÉÁ%eÌaæƒÇf n—•bå¡(ül———çç秦¦@…èîîÞºukWWÀ­:PÎ*ï‘/"\ kùù•ÉÉ:‡£©Tênk;ÐÔTêêêv:7åóËËõ¸ƒIÖðh𦔦ëÿ’J¯R©44Ì+µ,;>ƒ!‚SœN'ä±S©ÔÄÄÄ™3gÜn÷ÊÊ @ìàA#‚\=0”r¹\,/\¸P.—Oœ8át:qÊN§S©çá{ƒ‚øÊ§žz Ø_©TBù …B:^P1%äAµ ¸vÒÌÌL¡P8|ø0 BÕpÐÂÀàt¡ßþv<ollD´s´1‡0,Èô†È\.×ÒÒÒ„IÇ."tpoÁ¼^¯L^þD½Æ¿T*•‹/ÎÍÍ¥ÓiþDìM›6íß¿ê`’P6ŽaÔ+ŸÏ»\®ÑÑÑ¡¡¡Ç{¬­­ £—¡œ†aÌÎÎŽŽŽ¦R©78pÀï÷+¥Àİ”µ#@°´´tüøñJ¥²qãÆP(„DW¢JkšxY¡PX¿~ýš5kR¤L¾"øäŸPÔR©„?$^@îNÉkˆ|¡P@Ð@xt½½½p8•p].×Þ½{ï»ï¾P(T.—Ñòr}`/ &¸iL÷Iž>€J&# ¹(ÕyôÀ¾xšN¼Tâ5J¸²r)Ö«sw g+6éCÂ%ÄÚ0;D™éfgg!‡gGI*• %áY~eÂ[ðó].l ÖÑѱuëÖ./¹\•ý½ƒ÷@1–pyyyaaáøñãÃÃÃÑhKfßÌÌ $ÿ˜Ê@ž‹à‰$‡òµÂÙŠE;›Í–ËeÀ²ì&48çogg§ßï¿|ùòðððºuë¼^/•ø@“cÏ0ƒÑ”HWjˆWͤäp5ã¼Æ÷•Zy'ø[N(ò¶À±2l¹ƒ9̰˜`üã¡>Ÿƒ“¡p0†)¼²N)È€ãVf„¸,h˜r*ó…ï Iì/¬ÿ×DJ°ÌÊåòôôô•+WÚÚÚBqvv‰€#‘H&“©˜sÔ%TÕ‡7šÐ¢Ò4Íï÷ƒÁ–––­[·...ÎÍÍÍÏÏ_¼xqrrªü’yM0°T"‘˜ŸŸ¿zõªÓélllDŒg]]ÝÀÀ@cccWW—ÓéDÓ9ζ¶¶ŽŽŽ¹¹¹ŽŽŽ¡¡!¤wF¶¼¼œJ¥d±Æafgæ¢!W~ÍÆÈӪɀR@¡â¸k)Ë2dÛ!R Ô{7×Vá­ÛmLž866ö¢à­†††/ùËo|ã'''#‘HCCÓO>ùû¿ÿûñ¨kÕVí%›ËåúøÇ?~§K±j«¶j¯!㞉ª¨–X6îPÉi· bÜŠÉ ™Va!OJí¶C?º©`"Ùü•th‡¢‹ÐEYAydJõ%yè#QºX×õh4Š£WC¨ã³ ÜDâæ¥RizzúðáÃW®\) uuu©VJÑ Õ‡° ¨t: €¬½½½µõ‘ååÞ¥¥¥¥%R+ù|K{û^D]E"Îb±ÒÐ`˜ûòÿ'ÛÄ}*5òWVVææ¾ËÅ$íU¦gè×±XìÔ©S€{˜‚Š \h%Ñ ,L&WVV&''½^/ÄPb±X<×L] `%‰r¹<335øQ»Îd2ù|ú,Àn”Rccc‘HDÓ48ŠÚ*±sçÎÎÎN·Û1úÆJ)èÇ#HP‚M âƒã—ÍfVŒô­íIµ#À—†a<÷Üs333%Q¦k±fÍš·¼å-|"œcNÉ™Bx ß.‰D¦$èQŒþþþíÛ·û|>pš”  sq+(.utt\ƒ£n5zü¶\.CÇår!S'”Ë9qÐér¸2U":”¨3ê"[0躺:x×Ðëd„¿5‘‹:5\Ž0Í›ššššš’ɤÛíFÃZ¨.ñ¡4»f Ø)¥ ’ÖÖVDb†Ãá‡~¸¿¿9ãFGG‡«ª.ˆgYVÍŒ”ŒEËÒÄkð!N/--MOO' §Ó }>=X¹€km–ZÓ“‡gKÃü­¯¯Ïçó€Ò=t›å$™È²\ã&ˆ0å–Ã# 9Î7nß¾IWƒÁ r°dÉår­—í&y(Pô”ŒÇ]¾|ùùçŸF£rðý<þüúõëƒÁ Ä}°D0û!ó×ËñéRñ )i¹Xaúúú†††t]?{öìÙ³g€M(Á¥âEƒcG/º’ ‰| Ê’ÕkÑ´Ô‚™4°Tb0WÇ?ãa!–º¡™TAö…¥Çƒàæ\[$+ßÎ8üÀ’"y܀݉ü²^2$ßAa ÒØÈbDOÆE‚%jS¸Š‘ï(Vø¦¦¦žžžd2Ù××X¿P(D£QDFãTIÀh¨T*…ˆéùùy¼ÑÆÆÆ.^¼ˆ” ­­­8Ú ‡Ãíííûöíƒ^'~ž)&,°rÿƒ)¯UòÉc0 ½]ÎPûlÕÌdØ"m‹Œ å+µ´o…­Â[·Ûc855õb»cÇŽóçÏÿÑýÑoþæof2™|ûÛßÞµk×®Óª½âí%äñ\µU[µU{9¦ !­r¹ â ÿ$&y´hÔŠŒ Ù}3é[.³ßM^cñY™¯Mn—奠5ÿ¥!^Ÿ­±±ô™¥¥¥ÙÙÙþþ~7Ø©#196¬ô4r¹\,;þüéÓ§¡L„øÄááá«W¯2pCz _àÎAœhjjªX,^¾|9‘HlÚ4P,j+++KKK©T .±±1¦Õ3jiÐ*¼3 ãܹ³¥Rš@ý7x¸ ¸Zø ´u‘®탌x‰@ÃÉf³‹‹‹(Ì©S§6oÞüàƒâW©T*NÃûâét©Tš››;xðàäää–-[öîÝ A(ÄV(°ùöx<™LæÌ™3ÐYWÕh)¢ð^ÿú×wvv"¼K™á?ÌÖ‡Ø%„º/ÊfrX¨1L1o¢ºÈ‰ ޾Y©TBl Y„r ¡ííí}}} 1‘Z9abò›8Š®]»633CgÕ25*•J"‘‡.Ø”ùF‰saÇÀ+éí“Ëãõzä‘"a5­Zɘ# •‚CH ˜‘¹– N…8Œ²9¤º¹ì;U­žÆ± t°©.+"­˜Q-¨‡;Ðɇ¦OKKË¿úWÿ t9…Ãaü¼T*---©Z\ Œ%ÉôaÁ°ø€¤ «¹ Æb±3gÎ ÇãñB¡€bø|¾îîîíÛ·wvv²£ Áo5l’U6ø/“ È; …ÉÉÉ‘‘‘H$ÒØØØßß¿víÚ@ `ÁØXó½¶ÅÈY—J¥â÷ûý~ÿÚµk7mÚÙ5à èÉ_»Þ 4¢ÁÁApëÐ’³³³§NB±eŠ![ÂÒÒdÈ-òC¶ 3ª—Y/¦*Q~uŽÕ€¸€®ëÁ`R÷¥Rillljj Tµ‘)˜o.tòÅ$qF^I —…aÁ8˜-±ò&X$M“ªcç© àÀµGâÎ< ’ïP9ºHÖS¶èE¼C¥>4ðRu3‚[3Oƒ@Uã£ÙAœ)²t]O&“™LF¯•X†Å n=Á‰!*‘V…=…õdíÚµ ´‹ÅD"‘L&c± ®b±˜J¥pÔ$5”¸0Þõ###'·¶¶ú|>° Ö¬Yœ!í8µRJ Íè~4šf2û4Ûœe!Ò…Ž¤QÍøÃÏqš‚ñ SfÎP ±øë$|vãÍÛM±Uxëv[sssww÷ôôôäääKøykkëg>ó™;]‰U{õV··¿ýíwº «öBíþûïß±cÇ.Ū½zìz>†ªöðoQÑCÒõå7òÌPj=pOfˆÌ€–mÑ(CÈÖ"m¢&Ôj,·å©8Ë#ý„šN1ì8•ðŠÉ/àý™k × “Ú–-[0‹ÅŽ9rîܹT*Ŧ™%›Íâ•Jerr2‹QÙSÖ‚3¶¹ð°{N§ÓN§syy¹¾Þ­ª%㤑,æzµÑÑíèx“¦á굌ÚÛà+•J¥áááƒîÚµëᇃ(-~¥ )+ÀaÐÝ/‹W®\YXXضmÛ¶mÛü~?Èd²P#¬R©ÌÍÍMMME"‘Í›78p±fð0M©”ZYYill„¢”ä844ÔÒÒ‚Þˆ Înf±MšL&gffZZZ0g B²¡Ó¡Gˆµüòù<&E4牜 ªr¹|õêÕ\.7555>>Ž¡>::zöìYÀúw8tãñøÂÂ’9\¸p3Z®,!!(f³Y†^2"Û!ÿlmܤT*MLL¤R©b±811ÑÓÓÓÚÚŠ†åM”©bæ)þŠYQ-€Vè%OÃà½f2™ÅÅE¼¹°ÞI$-ëüüü|¡P(•J£££ápo tâÜÜ\,‹Åb—/_f\*ZXVŠAåét'C†©ªÑ7öucc£ËåŠÅb¹\Îét’­™òXöÑÙl74a¼R53¶X,:Î@ "}SSS‹‹‹2ŒT.xe2™H$222Â1‡0A2mhhH§Ó‹‹‹†aƒAœ  …¹¹9§wwwû|>°Yç’h—QZŽ1ÝTäDì-˜›àó2b×çóAŒpê­F¸Vá­;`Û·oÇQÀ.Ȫ­šjooöÙgï»ï¾;]U{¡öùÏþNaÕVí&˜&T6€€àX›i¡(7^1µcñCJ#÷I¼›ÛâFY ÿ 7RâÊTüÁ=¥gν ÌŸU²_Œ’`ð ?ó”›È—!ø)pçæç籇œ9ÂmÐP…B!g³Y_‹Åx<Ž q>Ÿ¯§§ÞT±XŒÅbN§³½½]âPŒIñx<àO)CŒÅb'NœH¥R;wîRʹ°°°´´ ³Ù,euuuÈJN眡 +¥”jj:€0FMÓ€³@§™qdˆ**—Ë…BáôéÓMMMÝÝÝðä5‘k¸üR„¤ZJ§ÓØ.³:P$¡·Ïç ƒJ)„r ü,3éfð—®\¹299 ê‡(G„јrvvö‰'ž†ø÷®]»6n܈@'CÄ­(“ƒƒû€µ'‡¨¼ŒÌÎ ‡Ã‘J¥Îœ9‹Åìðn#r)#Ü$µAŠÁ­¬¬LMMQû©æ$m½€~Gúùd2yþüùS§N---U*¯× -3RƘ([¹\†f6È À8,xŠ„¹1NgOOÏØØëHCt3¼úúz2›05ˆ8H… ¢ÌÄCeˆr>€@ÁC7U„HÞD™Éj¡Ó«LM1ž)Ñ`‚¡PhllÌ‚pišæv»·lÙžʆ• Ì &§Ââ)“—qÉ*—ËcccÇŽ›››#/†Èi<ŸœœÜ³gAÝÌn¡L¯•Ѭ†`xñ&ôÕµOLL>|øâÅ‹ ~fÐ.¢ƒ[[[!ú†> ÄäxÓu½µµuÇŽáp ¨„“ÏîF¤§fÆ`y$s£K &á-‡Ã …ÀÖD¦¹¹¹¹3gÎ FÍYÉdNœ8‘L&È…ÁPôtaŘM”œ›››+‹gΜ™››Ã2…< @+”ɰËçógΜ™ŸŸ÷z½8±8vìØäädSSH»¨F]±XD–Û“'OŽŽŽ*1ÊEF™a¶øëÜÜ–8€qrMÀ“ºãÌ€æçç‰Äòòòððp"‘n·Z{Deñt@]ˆÏf³W¯^…<"Ї¶åðÒwD"‘çž{nvvS Y´îÆÌEdŸ®ëO>ùäøø8³yâ8>>^,¿ÿýïË <¾¯eÚG€kè>Ëê§ C+!=È·¾õ-Ùb¸ÀV¬àf³YeFC/X' w;x â{d¨´¬9hXÔŽ'j<®cÙ~ô£aaq»ÝëÊår‘Hdee¥½½½¡¡aii)?÷ÜsçÎkiiyä‘G6nÜ(·IzubžX -U-ZªªÏyP¡LóKÀ/\‰ƒŸ»?4®Ï©ÿ¹¶ oÝzüñÇ1VmÕî¸Ýÿý/ó»ví²g¿^µU[µW¢ÉCËÛ`dKY‚4[Fp~_s—ý—ä^qO'YR’…A¿(‹¹\.œ±«jÝ.yžÏØ+f×¶Iz¤šP ‘¦&tµZ[[7lØpùòåd2©”š™™’Q]]ßïߺuk0„ãáõz§§§Ÿ|òÉL&öìÙ³iÓ&—ËÕÐÐÏçOž<ép8¶oßîõzáÕf¸ý.p²túôiÜYÓ\ÑhÔívwvv‚*ô¡®®NÂmlg  °Ž^¯oiiú>ÂÀ¥Ïá` Qv´$e€+¦N-Èõõõ‘H„¾dÓÈÑ‚]µa†·@¶ßï÷§S¦4U*•º|ù2ļ5D—Ò0J©b±xüøñŸýìg ‡cdddddäßü›³uëV¸è:J¬S‰LmJìÝ !wÅï+fꀅ……ÉÉIúêØD܇Å#‹aÌteÓé4©Or–qB‘"AM×õh4úÌ3ÏR©ÔÅ‹ÛÚÚ6oÞ æ‹ÌÉ 'z­££±ÃÀ°( îp8ÒéôÄÄD6›œœ¤°ü̆177·°°`¾-ç à¤C‡;w# ‚â–U¹ž”J¥k×®ÍÍÍ^Ïf³`¡"†þÅ‚øà>°™0n‰ÇEÂÒ‡üwÍÍÍ@ R©Äb1¥Tkk«R YK¥R*•BﳑûŒ kIpDö{2™\XX€Ô#¹WÊL‹5–0=F>ää ÃÈd2333 Ì” Ì…‚rÀ”ËåH$‚(x…ø†öy¥RÁñ ä …ØFD£ ÎHÒ;Gº®ÏÏÏøæÈGv Ÿ.— ¯?„]ã݃.›V(p¬…¥ €ÖÖVœ‹ð³ivѳ<ª««e ä)´¼ËåB¶¤p:UÆ@¥"u0qHãv»S©T<w:MMMˆÊD" ƒÅãq2¼08‘ä|F€P¯®ë^¯qåÉd²©©©¯¯U“$MË›‚K±¤w‘îÇË(§Å›h&;ãKÆ?F¯n*ÜË æëhË7êÛ*¼u mVá­Ûl_øÂ”R¿þë¿~§ ò*,óc=öØcÝÁÜå u—oµÖ¯3l,ôš×Ðå{QÇe/Á$ZD®“üëÏ5–Y þ¼fJ ÑЪóÉšÊË\.Rãa¯/¬°Ã–s²ø,Ý]xq‹!bFøsV¶´´$“I@NÓÓÓˆ¼Ãî¹³³³©©‰­8Н¯¯ß¼yó<ÐÕÕÅ <Ã0FFF ­ƒÄ[²g¹¥{ãp8†††FFFΜ9 ŽÔ×û 2Ù—D"/.™L·—‘‰•j™X~¹¸¸øÜsÏlݺuÆ Īè*“óçQuº-ç 2á<%•JA”q—×®]K$(çõ¼éÒÃ-‘c†±T*u=…áT¸>‰ÄãqPJ¥³ȈZ]hÑÛ—JÿÕ²SÃJ§Ó7 •†ÑÔÔäóùPGv ‡%{J rRÀÔ®`kF(êéé¡|2fA±XFÁP€ã‡Ÿ è"U‚¤†Tlaœ#H)Œ-g®ëzsŽ€„f¤à‘2SFjf\_?‰A£$PÅR¦6<œ4erа{§ÇkÜQ`‡Ã‘Ëår¹\¥R) ™LÆív"± žª…Ëàóù¶lÙâ÷ûc±–‘J¥2;;K‡¹P(\½z5ŸÏ/,,:t¨¹¹Y«f­â¹çÏŸ‡ënéYØììì±cÇúúúÓ R,—ËÄXÃd8rz’?‚YP(’É$ÃÉgá&ñxü©§žº|ù2ý^@ç Óæõ+++³³³Ï<óÌÙ³g!¼ç²ñc±`»x<ÎúÞbX‘sAéí\Œ¤ÈÍ*9›öæòûý ÄÎÏÏŸxð`ÿßøÆP($<Ø4È![__ïñx°Ðd455õÔSO-..öõõíÝ»7`QE›c¨D6„Ôc"‘xúé§s¹Üzzz°È£¾ˆR'jÇ?~õêÕ={ölÛ¶­®®.NmMfÏ,‹çÏŸ®¯¯ß¶mÛ¾}û€é /Ÿzê©™™(x€i Ì xÄ×ñ @s-,,;vl||¼±±±µµµ§§§¥¥Åï÷·µµb¦™ Ae¯4S=âƒN§@ŒßïéŒè'¹¥ŒÍõ•47\†×°-‡Ã Ëét"<8¢Y£Ñè¹sç®]»† S®$mmm½½½CCCJ©D"±°°€”‹øU©TÚ·oߎ;¼^/á-¹|Ùåô—ÁéœGºÐIä‹RjqWˆ/‹ccc±XÌï÷ =¼õvw_¸t©ê›žnõ‚mÞºÖ××§l/³U»Õö³ŸýLÓ´W–³ýJ,ó±»¼¡îòâ­ÖzÕ¤ñÜï¶=Q7s«+©ëÃ[òO²Ø8a^^^Æù³üÛn€V$ŒÀmÀfGŽn·›ž¶åæd@èfRvxª³`É•™O”{G HooïÚµk§¦¦p¦ 5qŠø€õ€òüüüéÓ§S©Tooïž={ +Ž%TêGGGãñxoo¯f¦6c enàl€óÒ××·yóæáááÙÙ¹úútcc#Ä¤šššš››S©Ê“Ífy|Z³ 3uÚµkΟ??88(qF‹“I*âºEL¯N BŽð‘‘‘£G‚CÌ‹Íf³óóó™L†ròÊd'-//G£Q€³©TjvvävºDè`˜¤…Ba~~~ii ò7 p±ÖN§ñJLÒ§ëz¡P˜ššŠF£étzttï˜ïlÂÔ+•J`å0üG×uL@x•³³³³³³¸¹R*™L:ŽL&#;‚;š j.--úÎw¾ƒ€8 ê¡Å&&&fffìðb¡Pž˜˜ ˜”®ë‘H$—Ë‘šN§@@¤©R-J Wœ`®Å€Å#›››“³²P(@úÚ¢¾g˜ÊîÍÍÍdœá5ñSóÌÞ0£äÒé4òœÊi^*•œN'('Ôh_YYY\\Ä2ˆ µCôV<Ç@ +2‡JXëäÌÌL}}}KK VP«PÖØØVVV&''Ÿyæ™ÙÙY{ù1H¶mÛöðÃL&søðae"ïdw|+­o€IDATJv¹\7n¨T*qš§OŸ‡Ãk׮Ţ„¢$Ц§§].Woo/Ôî‘ÊvݺuýýýÁ`CM Ñ®åååk×®ŒŒtuu ²´|»É^P~@¡jmm]¿~}sss>Ÿ—Ð0èðÆ!¼µ¼¼ìñx†‡‡—––B¡ÐæÍ›[[[½ÈW§ª>9ÔñûýËËËCCCHê ðRûá­”N§#‘ÈìììÐÐÐŽ;À(á-œj`}B!°ŽŽŽþþ~¿skrKíêÕ« –/ëêêöïßÿŠ}{ÊüÒŠ}=3 ãôéÓPv\»víÞ½{.õ…Ø­ëÜ›U÷š÷QJíܹóVôãMì²—l7±S–——/\¸pöìÙ†††mÛ¶ ݶZ¬šÅ,* ·Ôàj–ËåÅÅEdѦ›‡ý"3¬Ý ÀÉ-v™L”faò¹4& 5Üã³Ü¥É0šÔúe‹Ùk§ Šy[dpÈË ?½}ûö .LLLÀÁc ³ºº:8Û'Nœ¸víZccãþýû7nÜHvìæ!µ>55µnÝ:þ …L&“Ñh4{<žžž¯×‹*ƒÁ´··—˽uuÞ@  …°¯ …Bñx<‘Här¹ÅÅEŸÏÐIÖ¸Ó…e³ÙS§NéºÞÒÒ¿Jž‹f†Ò`CoYÜ.FcÁûþ÷¿úô饥%´"2|>åæcg!¹\®ÆÆFs•J ß`ÄлÃö]¯•Ñ •‚oµlÇ344ôðÃ_¸pÁápìÛ·ïþûï‡ì´!ÒÃÃà·0•÷¯TËW+ÁW¢š²ßïƒÐ¾±ý~?Nã•éi°Àhe*!M3E^¨eÃØ°¢,u‡36??â|’|>ÿüóÏ_»vP DuÑ5GމD"Sã䪫«‹F£çÏŸ/‹ð™Ãá°Œo"Õ+ŸÏ“áNÊÌÌÌøø¸R*•J†§`}Hü)“É,,,,,,T*•ï~÷»ëÖ­knnF ë®™Ùëé¶¡¡êêêoŒŒ …ÇONNÒeÿà&G8–ÑÇC„T¡PH§ÓÙlöé§Ÿ†&:W3 •J%“IMÓz‰œ¡G~I¬Pì–#¼¾¾>•J;wÎãñlݺÕï÷ãѤ¤iš¶´´tåÊxι¤Ã?00pàÀ¬-J)0GÊåò•+WžyæÐñ,ã¡»»{ÿþý@©˜Eayyyjjê‰'ž@<¥DZ{{{zè¡`0NM*•:räÈñãÇ·nÝ:44uÔ—`˜{‡år9‘H=zôòåËÀ”EÎÆäÒVº|ùò~ðƒþþþG}O^Þ(–Çr¹ÜÔÔ4===;;k‘±Êµ··oß¾½¿¿¤³¹¹9ûRoˆ(H xEn·¹S S*§XÒ1q¬‚Þç¢ñ{°w ¯fÒR©n×L./²¤f‡+£ç8\•Ruuu(§$ £À•Ä­›bv¹¸¬ÞE”%50§xNC°[¾‘ÑMMM.—K×up¬‹0š›0baÝ fÄ2S*hOž¨Ìs©„ËáéÊä„òl¡¾²m¹[ ±T3^,ŠG˜LÚ$E¢.ø[Tò ¨^D;^¸päî`0ØÜÜ … :†½ÔýÀd´¼ƒäÛ„(-+ä %J i.7E’4ʳÎ1‚Øív¯_¿¾bæx!Ÿ¦¦`SSðç^VÓVá­;`Ø‹ü\bÞª½X{ßûÞwäÈùÍÐÐÐW¿úU¤™Ã {«Ëð±}ìÿïÿmù2 E£Ñ—PìÛSæ—VìšvöìÙ÷¿ÿýÏ?ÿ<’/,,lܸñoÿöoï½÷Þ—YÂ[×¹7«î5ïƒ6¹ýx³ŠýrìfuÊÙ³gù—ùôéÓmmm©T*ŸÏÿûÿï¿øÅ/bSuGìµYyÛ°-˜Accc===Rƒ‰xN,5Ž$)0ªZTˆ»vJ¢ð—ÛPC˜åq²‘'´Ü¿ZÀ* [ŠcvBét)áŠÈ§8ÎÞÞÞ¶¶¶éééååehÁòçT-Éf³×®]ËåràPÜŠb®]»¶yófhT1K`$yæ™gÆÇÇ].×þýû¡ß jRwwwssóÒÒ:¥œð+p·¦¦¦®®.’ÌÎκÝîöövàb„”ˆó*‹ÓÓÓ{÷n#ÝÉA&Û¾9&@dè8Žh4úÓŸþôÈ‘#`m aá k$v𔿥‹¥™Éð‚ …Ÿ„/›gN»Üv£ét]ïééñx<ÈÜçóùšššxàuëÖ9޾¾>§Ó yuôxE¤»¢N0nÈ'â¿òô[zéù|ÉÈÈ‚†èÕð‡ÊdÍLMMaW z Àà;¨u±XÌçó…B¼e˜QE###±Ì —.]J¥RõõõHò•Ïç“Éäää$ô³ [¶5tÜÕ«Wggg©Ñ΄'“I¸@|èÚ¹\.§Ó™Ëå '³ò›šš ƒ®Q&DˆtÐÑu0¯J¥2==tˆ¼£“¯Ì<tS>(-’šAÉëõ%„`I63à‚l6[*•âñ8ª»»»§§‰1ØPßh4zøðáx<þ¶·½ éSÜá&$]‚Q‚Haer&&&FGG¡¾×ÙÙÉuŒd „/={V.J\»¼^ï=÷ܳmÛ6àM(gss3dË ÛT™ä ¶¶¶ÖÖV‡™†Ò0Å’ü~¿eûåwyy¹¾¾~```ãÆ>Ÿþ6(~gϞݰaÃ=÷Ü~–$–r —Ò~™L&OMMa]òûýª:ê“­”J¥pdÒÝݼ´š)¼ o`4¯±ÊÀ¶víÚÕÓÓƒbäóy€ì––Q&´èN¾V0BÀ…QÕ(6×U̓C9wr¥•²}XH¦Ë”Z5£–õå\–/2Ë©3Q~Kà¶2³Ü*‘[SB9î‘G¨u±XL&“’WȺ`õž™™™žž¾rå …ÉäKÖ!²óe !hÝÔ;Ã,nhh. `ÎþR¶|FМ2sÚr½‚Q^@Ûßòx†K7ªeûù™ÊÃ6æÄ*„Ùׂ:9£Q$¼òúúú<(ráp™ "-^=x9ær9Ä´’ §„Ú©C¤r–!«²£•ÇdQY*)ÅÀv–¯¶R©äv»¹%°ÈÜ […·î€t_…·n…ýÛûo¿üå/+¥°-{ï{ßûK¿ôKçÎSJq7s«mëÖ­G½)žme~iÅ¶Øøøø#<ÒÚÚ ‡ÃqõêÕ÷½ï}o}ë[Ož<¹fÍš—YÂ[×¹/¿î7¸6¦·¢oV±_޽üN‰Åb=ôÐæÍ›GGG׬YS©T¾þõ¯ÿê¯þêûoÿíÏÿüÏïT½^S‘•·̲]ìïÁÄÑQ‹7[ò¤TU³‡HÊPJùeç.¶€f‹²ð¼t!«$›®R­'­„σ­*eÝ-“Ÿá¢477¯]»öÂ… Ý‚h7à€drccãæÍ›™‘{e`U^¯wqqqvvv``@™î7R_½z5‰@Ë£¡¡a÷îÝðɱI-¼†Ñ ik•Jerr2›ÍŽŒŒd2™ÎÎN¡Ë£ZxÈsssÓÓÓÍÍMÛ·oÇ12v½ )0<,lÄAr!¯ŠŠ¿årùÈ‘#Gޱ¤Äçl6;==½aÃ%xOx"xøSSS…BáòåËÝÝ݌Ǥv Ø:‡#‹A<[nÐ ’F"‘ƒ‚gát::“1&2i R 2ê:9P 3镄ý‚¬d•J%•J---If™¨étúÇ?þñ‰'‚Á XE  BezlI´8ŽI|èÆ¥‘5[XrR444ôôôtuu!i&ývL„h4zõêÕ©©©–––M›6A;¬±±„<1N_½zõg?ûY"‘°PÃB¡Ð}÷Ý …Èö‚gx‹ä> €x<þÝï~7îß¿¿¿¿ßårÁÇƒÆ Œ8·ü…^¯7‰<ýôÓ>ø`åÿ¥Mð‚ I*HY:”¥Rirrr~~^)õº×½nݺuœ5„z‘#o|||ïÞ½mmmÐÃæø‘Cþ*„l˜ô váp¸­­ÍÂï¿£··÷Â… ºFÍÕÌétnÙ²eíÚµÀ›Æ4À(G‹´J¥R@I^TNeAVJù|¾þþ~R°š•Ëeü7 Mðj•éHžf*@ôW[[žN9s\ψc4ïòò2´–ØÔÔû#N`¨¡¡¡¥¥lPæ`Õ4­££‚P ¡EïX^lXMdr” >_FXjðâ\d‘*„ˆ¦t:’‘*y@ |K|_žÍHJa,¹Ê©ëìØdŠaÆÉ´ü—7§¸„c±Æ'ÐÉx<žJ¥"‘ÈÄÄ0î\.G5(B9öw¥R ŸÛí.•JDŠ »466®]»ÖãñtttXð;{}axuRáK `PÉW²c[5!q.þ„gZTìâ’Ž ÜŠ/&¼/˜w˜`6›––––––p8Œ `]׆roãt:«Â]UDîÅJµÊªQÍÂÓ„¨ƒÇå[ 'C’íÈ¿"8‘yið LÒšáÒ7ÝVá­;`˜uÈz»j7×ð>PJ9Î{î¹çƒüàûÞ÷>œÚÝ6&”®ë(ÃË/öm+óK+¶Å>üá+¥<È]κuë¾ýío÷öö~þóŸÿÓ?ýS¥ÔÒÒ’Ïç[YY9uêbÙ4MÃ!ä¦M›ÚÚÚ^B+½üÎ}ùu¿ñ}nQ?Þ¬b¿{ùòð?üááÜêºþ®w½ëôéÓõWõÑ~)_ò˜¹Ý ±Ì·ßî¶Jacä÷û‘Îɲ+åñ&cŽôëÇNfŠ@îæq€,Y™yž¬„ó`ˆÔr²é,[dšt™ìE¢_!Õu‘K‘ÚN§sóæÍGŽAâââb>Ÿ÷ûý(ð£k×®%“ÉP(400yîAÁ’Ðu½µµU×õ©©©L&ƒ¥2ÏÒáuW*•ÙÙÙáááÎÎÎÖÖVl:WVVÐÊ„Q<—ËÕÑÑaÆää$ –H$ü~¿ßïgfºb±˜Íf—––Êårgg—ÓéŒD" Á˜0 @F¥RƒcnnnvvV×õ¾¾>\ŸÍf¡ªÇÏŸ?ç–WJåóùcÇŽIéÍT3¡T &`êp8B¡ôŒEúý~éf+¥àƒÏ 2¢pCC2r*¥ HDOð ft‘QR.—Ÿy晟þô§(ŒÝ{ì1,ÔšÞÁ­¦§§ ØíééyÝë^‡¼õ@µP @###Pûæ¤CóºÝîP(ª‚nJm„Gàà‰'J¥Ò<°fÍ¢Qµ) 0Æð§ååå‹/‚ær¹à¨kš‘¸úúú`0ØÔÔöñ;¢QX¦UÑ"`I2ÞxtCCƒßïg)ªÆ  Oa¨—Fa  Ù›››HêBÎï÷oܸñÀÍÍÍ„/Y6¤JcqDѶ$RØ2ü–Ÿ€µmÛ¶ff@ݸ‡÷>óE õHµ -MÓ(-×ЫÓ8@¿‰@’ânÕBÉÑMàƒÁÍ›7ƒöât:×­[××ׇB ðz½>Ÿñ‰–ú:Ž®®.„Ø DbY`T;ÛPÓ4®SÃ(%‹°‹D8Ð’^Tóµ$B¢*×Û XÞbŒõÃn“¬(U}ücAÞ ‘#¹X,¶¶¶jšù¼T*E>©Œ’–ï2ù¶•-ÉÐHOø!Ó¤466®_¿~pp°©©éð–Ü5&)·¬ £:…þt4‘ÊCÓªr³rÎB°Ì!¤Ù‘? <Þ_Œ‹$<Ä厯¡úúúp8ìv»ñˆ`0ˆ­2%A1p„#!-e’×”8Û“‹’(תÓ[ÞÅÀ°¤#åÁ…¢Ÿ3Ó(ŸuëlÞº~ûÎ;ïtA^ý6==ÝßßMÃ턊nV±_AeN¥Rßüæ7ÿäOþÄBKôù|§NâB644ôÁ~ðÓŸþt}}ýôôô‡?üál6ûÿðˆjùÞ÷¾÷ú׿þŶ’ºë;÷./ÞM´Û)†a|éK_úð‡?Œ=.íƒüàßøFlõn☑v7Ä2ß~3^@æÄÛY(B`÷Hf–2-8ÞÊ”%"¾@'P™{kÝLŒ¥Ì“$ì´ðsÈ@È( ‚8öÐ U xYÚP27”ÈѪUH¤ÇK/K …<&L³fÍšÞÞÞÉÉI¤”b° ~Ž(Îb±èñx-áæ Z +++Pr›žž†«\1µÉ<O,ÃÅ###W®\©˜ÕËËËËË-†Ñ ·þ†™ƒŒ!r`»ÄãqêžT²åÚµ ‘È$\VКVVVàÜ r¹\*•‚¯xåʤå Ï*•Jà.YFŽÃL|~åÊ•ÅÅEyzLoƒ`2?2ô H âàdùʃ£¯ ð€9¸Uu¦‘ªgéä1Øä( ƒØßóÜ^™ 5¸v™ õ‡¢oÇès;½Á5ÈõÉèé âÌ_>šk9 J)dj3̤W¸@3£z9üXßR©´¸¸xîܹññq°Ÿäìðûý{öìÙ¹s'‚ìÈf’³`Íš5GŽA–ú¦¦¦d2‰¨"„­566ŽŒŒœ?à'qy1ªÓqj‚¢ˆ±¤ã #Š 1BÖ¬Yc˜RVƒƒƒ[¶lf9–¢lÀ¯kª>ã†À8T5“ ‚@i)ò¨}÷îÝ{÷îmnn1 …Ö5Âk:€=)! „AÞÁhÑLêác9`Ùj?Wñ°$ßÕÕÕƒÁ½{÷ööö–J%]×ÑĤ€yųc1À ±†3O¼€A¦VXYY‰Åbccc§NÊd2ø&c—+†YMðMÅLZ¢‰plLébY‚–£bJœßÈÝ ×MQ*þ„ë3_‹rxD£Ñ#GŽ ©â ü•jIJ<…ê–bX ð0Œx1¦Æ¿ÜêÕ’ˆJääÅy>DÇt2lÖ0Ijr¬²Ö2,Ñ’pC7Zi¸†gHìL<ðäF7Å ÓŽ ¨(^©N§Óçó¹\.¾pQ`&࿤HÄÃtŠ„ÿd׳Àší\í†;³µ±ÀÛ–3R˜¹|½¨í⋵Uxë2¼ìÚµëNäUh###û·«”Z^^¾téÒÿý¿ÿ÷K_ú&$ÎnCb±Ø¿øEùÍ;Þñ$³x±Å¾me~iÅ–væÌ™r¹¼oß>ûŸúûûå¿ð…/œö±_ú¥_ZXX(—Ë[¶lùüç?¨âÖuîˬû îÓÐÐðž÷¼çõãÍ*ö˱—Ù)³³³étzûöí–ïÃáðC=Äÿ¾ä1sc»b™_ãF¯¨§Óø/DÇ5£ÌÝ$|MUDŽynÜáþ‹ÅŠ©áE(›-Pý“¢ªc:XªJuÊ$> m¡L&"0»aæQ2ªó0²²ð¯†††Nž<™N§gggÛÚÚÈ1• 0r&iGµ.\H§Ó…Báù矟››Ãn8NÏÏÏSAðÙ“O>9<< Ïmeeeݺººº‘'l‡x„2.REäÑ·ÉTªÄb1â_Èý‡GGGÁú!§`eeÅëõ !dŒ÷/•J§Nµ#\(ɺuëvî܉íp8öîÝÛÞÞobó€`°ÛFuà‹ ‚a†f®âZÇ»”\[,‘ŽÀA]]HaÁ`ðÍo~3ð…ÆÆF°<,k{T,eFCËIW©TZZZEX …ñx<---à®]»AŽˆŽÜ´iSKK‹\QÑ&ªÂO*p³àK&‹2á¶Û–À"d w&·N3Ó,àþ@è Ãhkk ‡ÃD¢ñÊ`:B\&W!Ž[·Û½víZ$ìã´GËåB¡ÞG†aär¹«W¯>|øÊ•+Ñhk@e¢i’ 3Ü㯳ùùyâw†©¯Ç0[.&õõõà…Fˆ¤Ët~‘ùß”J%äF¨T*\¸DcÌpW‚˜Æ°kÃ0=Wsma—áEü <1ÒÌØvþ åøHÉs.<}@wàWŽê´¼ÄYˆàóð ïJô¸Cös’âq(3·Xÿ±fjfÒN“úúz¨ È]þ uee™% DH>ô¤å Î~´R©d2\^®T*Xa .–H$âñxss3q^¾Î$°Å£;U?GU3ùsnx;… Z™à…HË¿[…·î€ÍÍÍmÚ´‰ ¶Wí&Ú… þäOþŸ‘¼yzzÿÅfëË_þò±cÇ6mÚôÿãtÜŒŒ~v›››ûýßÿ}ùÍ=÷ÜscÐázžme~iÅ––H$”™öè£"ƒ²Rª¹¹yttŸßÿþ÷wvv*¥ÞùÎw~îsŸûƒ?øì¨{ì±Ë—/¿„Vzù õ2ë~ƒûøýþ÷¼ç=·¨oV±_޽ÌN™˜˜PJýÜ×>~èСT*eF,ûáxöìYl²‹Å"öâ@4 KòäÉ+W®€v„ÃÞååeŸÏGhee%‰är9¦1êîÎ56Ök"ØíFÖ‰&„™(!C„à\mÙòïêë+t¼‘qÏår>|Aglìž}>ß¾}ûöíÛdž~ø5‘H„JàD¡PèÁÜ·oŸ”Ý‘¯ë:è0—/_ûöí"÷Š%wTç ³§L›¬œëAÞlð^¤‡·Í05×áÀ÷À(r»Ý†`’Žšé5ŠÅ"b²”±"Ã^d\½:Òù· ?Ò^ì)rØ£l±X øE[[Û}÷ÝgBG!ƒÁ7>ôÐCkÖ¬AS šœà,*™)øt98c‡cffæêÕ«ò·²T$nÈ*PBƘ ¼ Ëð Ás„ÏE‡"…%&{Í5A¶ ,œŒµaj …L&ƒXTNZÿ“õ"ø,‡®a^¯·©©)ttt@±Uh œ;öµ‡ÖÕÕ­_¿Ñš‰È EVÄžžž×¿þõpp\.(oÊ„i^S©‡=×yN@éx+CDür:&àhyw¦ø°»”R\IáÑà¦R)ej’"J°¦X,2?ƒDu5Ms:ƒƒƒÛ¶m ˆªF†‡r¹ t¾P(D"¿ßÀ:ˆ»>|øìÙ³IÐ4mddäÂ… H÷¡›‚‰Ùl6—ËátÊq†a¤ÓésçÎ {ê©§¼^o.—K&“…BX¼f¦ÅÌÍd2ËË˳³³§NBŠ ~ä1‘)F$tS"‘À|?räHgg'~E6"u£€³ a’ɤ!¨mr˜ÙßéÙlöܹs333NÊ/&!v‰±±²²$èŠAâ¨Á rÊážÂ»hROb¢Êçóét:N#]ÆŠiº®·´´èºžËåJ¥R&“I§ÓHдºT*]ºt)‘HhšvðàÁX,¶wïÞuëÖæ¦WÓɹ0²¦×#WòELÉBv+áNË«“‹„8%L|+lÞºvôèÑýû÷ßéR¼:ííoûW¿úU|6 ã‹_üâ¯ÿú¯www?úè£õõõø‡ø;¿ó;‘HäÓŸþôåË—?õ©OÝŠ2lÞ¼yxxø¦û¶•ù¥[(ZcccCCCøæÃþðÒÒ’Rêé§ŸþÊW¾Â+[ZZðt\Ë_B+½üÎ}™uÿ¹÷¹Eýx³ŠýrìevJ__ŸRÊži»R©D"ŸÏ‡wüK3/Ê^AᮯJ“§»/äzúZ-S¦cfü@jèð‰’+!MÕ¶$Äã0“.§ ³Ì,°ë™å¯²´íííýýýSSSÅb1ã웓É$¶û™L&‰?é€Dø™pÿJ¥R8îììljj‚ƒ0exxx||¼T*µµµmÛ¶­¥¥–Ï·ÝápËf±[7Õ…e”ŠÄ`¡Ðn·û_´ÆG¡PXXXX\\$} ' $&7ž€GZWW×ÛÛ‡!hÍ_áxãÆ6l‡Ã,Ç\5èC\,´··#sõªÑ_ŒJSfPžÄ‰xO"_J„«°âSœ˜!'<Ÿç-€Dq+Â[äpq’@(™úÑÞéR¼úMÓ´_ûµ_ûÿãüøÇ?~ôÑG¶lÙòçþçñxük_ûÚ—¾ô¥[ݬbwvv¾"ʬ”Z»v­Ãá8xðà£>Šo~øa|8}úô-m¥»¿sïòâÝ,{ ÒÙÙé÷û?þŽw¼C~øðáûî»ïñÇË[Þrë |7Ä2¯ÌîMIhÉâx‚T¯jåêÖ[D™’Ê”’‡Æº©¢›ò–'Öt³‘ሢȺÚ8?ØQ-Uí™Ëmb X»ví©S§b±Øââ"¶û÷ß&“™­««Û¾}ûÖ­[!C·ùÅ£ÑèOúÓ .¸Ýî;wnÙ²¥©© .ˆTóóóPá9pà@gg'܉d²¯RiPbÿz½2³Øž`-‚Á€®—5!¤”š˜˜¸råŠ]$^3i;/¨#¯lÍš5»wïŽF£ñxœŽ´®ëýýý÷ß{{;“¨jF7sêy<ˆÙS,Éa&ÐLކfÊ÷ÊŽÐLåf¼VSÖJùt à«&7ÇýAŽá %‚qs"]ˆrÂ99±EvóòŒj¸ý’Ë q1eúœÔ,g ³Y<øQðüAxìêê‚j8œph“˃KÅ•éê¸Ýn\lHÐÞ‚ËmY`.—+ ¹Ýn­šØ%á-"°„i¤ol§X2~CRÓ4Ðg,—É‘¦ pYfÝ K”Ž¢¼CEÈN"A¨ wZuJAr‘V̤@aÀïàr„IÄA^(²Ù,À”͈iÎA\+!%ùŽ;‚Á Tó SÜŠ0n"‘€ alÃ0ÔV©T@›%«‘´¦¹¹9PZpŽE †A[ÌI Ô T*Åb±d2™N§úÓŸ‚@DŽ˜lÞL&333“Íf'&&žxâ m\æb·q¢ðÄO´··ã „ð¦Æ9À2e2O1w’Éäðð0{M á³l6ËdÈB?ÁA¨: †Q(âñ82ºZ^"N'ìp4,B€¡Þ p6‰œ;w.›ÍM›6Õ××3}X™W¡"ßâñøððp2™lnnÞ¶m[SS`;®LØŠ! ’T ¨T*ˆ ÄéBww7Ê ‚’®ë@ù‡®ÇãÁ‚ÌÑH¥­åååD"Q__5ÄòÒÇ{¿åø$d¸gE¨›3Z#CQ3Y]š¦a€QdŠ÷A£í¸¼¼ÜÞÞÕE„»*¥ð_ÝŒg$Ë›z .— q£Ðˆ4 Z˜¡ÔûÓ4 Ô0ùòª««ƒn^Lˆ5 ÷AÛz<žææfdá`"Ñ@ Ðßßo °µÀÜrù’ ¼Ïb³3 –—‘½‹1ÉðpcÛ’ô¦Û*¼u»-™Lær¹ûï¿ÿNä5a™L&‘H€ëQ__¿qãFe¦’atw›±Ø¯ 2;ÎÿðþÃÿüŸÿóø€,g:†¼Ñ­k%u×wî]^¼›h/¶S4M{Ç;Þñ™Ï|æƒü`SS¿ÿÆ7¾áp8nõ:y7Ä2ßf³£Hw•I+"í ì2I1û`bUØŠQ. ÎöŽÜWáq81–¨ Ë£ úùš©ºÍ]ZÅÌû.ÙiáV,ž.”,P)0aÂá0h,ðÚÛÛï¹çž‰‰‰¥¥%Ã0 †H"œfµimmÆ®{\¿ßφÅb¹\®\.{<žÁÁÁöövˆ%kšV(8+•zU‹°&ûÈ0cs*Õ)#ù¹¾¾A©Š¬~¡P¸rå ò*Z:ü)ÆmɇÖÕÕ555íß¿¿\.Ÿ>}:‹Y¿~ýÎ;÷îÝ ½pKñˆDð̼ìò±Õ6„P‹…}†ÍºDHôÕ·ô,42°8Jy]5bj!!‡21a”h –Ãv^””J'ú¦ªHù+ÝÔFQfv6]È!£¦Žï‰ùè0ó**¥Ç §T†p±$ø«›Š6pðà’áYh%Í e³Y ~§”òx<6lp¹\ä/0’”R?âÀ·”ë娙P‰ž±ŒL0Œà{KÝ+ÍTeb’”‹I¡PX\\Ìd2º®G"‘ÎÎNxª »q“H$²Ùl6›õx<ð‰“­¥ð:N$ðÕK¥ÒÙ³gËår<?zôèää$ÈPÒí¬¯¯Ïd2###•Jåé§Ÿîìì„Ì™2󨂆ƒå yˆÑ›››c×ÈöŸšš‚2ŠähSínqq1_¾|¹\.»\.´´ós¹Æú <#ÜËî€R‘iæ8)ü…EÛãñP€)—Ë!E†ÃáH§Óù|”ÏR©411»aµÄrŠYƒò Ð^G,s:­­­@ܰ^‘ozשS§ÀîÝ»HÈqˆÑÂãغ&‚ˆš¥R©‹/^¸p±Z»víBÒ[Âîñxü'?ù ÒeGp‰ëïïó›ßŒDl=t=ÄòÑPSSSKKKccc°Â5DæCä¬Çà7 #‰ÄãñsçέY³æhjj†¢™q©@¸ë¦~¹ÛíŽF£ããã•ëíííîîv»ÝÅb’p‡#—Ëq" €,ħ¢á¥Œw7¾ÁM˜pæz» eðÃÌÝ)EÜP ¦ ×R)_¹€ðØFjœYgÍÔÜÄšŒEž¬g Zá Ì>”xÓ!JÑãñ´¶¶–J%€³Xåp<€ÇÙÑÑÙ$Fö†¦¦&ðìHE.W®uÔ˜—Æî ËØNXæ:¯D.9UÁ1ÄÑ&8~²}'psmÞºÝöþÏÿùå_þå»ÜÇxåÚüüüO~ò|N¥Rý×]©T~ñQ™ÙI•R_ýêW———?ô¡ÝéÂþübÿð‡?¼kËl·?þã?þæ7¿yß}÷ýÕ_ýÕë^÷ºÆÆÆS§Nýöoÿ6S>ߢVRwMç¦Ói–¶~ýú»¤x·Â^~§üñÿñã?~ÿý÷á _ؽ{w2™üÆ7¾ñéOúÃþ0Ò®ß:»b™_Ëf¡BÈïyF­ªã¤èÇ2ÒA†ifÒwCä+” ?s—© øƒ¨ *¹x¨…·eÜP Ìâ?(›æ>¸\®ŽŽŽÖÖÖ‘‘x††)üÜÖÖ¶eË–óçÏ/..Že2™ææf"8š™vÐãñ@á´AÉK¥Òùóç'&&*•J?•4MÓu MU©ÖÑ¿^¥´j†š±!üv·+++P½µc‘æR¶½‚5kÖ¸\®­[·&“I$hëíí …Bd£ÈâUD’5x,)˜\¯"òÊÃ|Ü„ÍdQ1: ° .:«ø^ÆIúË£™:2„cXZMЩØhÒYbŒ¡^­EÞÄ…åxcáy+0PÈ“â;„Û0ÞdÓi¦€[Æ0Â(i¦äÁ_̸¾ÐØÎf³ÓÓÓ“““pÅysMÓ¼^o[[$½d› n·¥¥…‚;ð«Ñ¼¹\.‘H`Œ‘F§§§÷ÔÞÞJ~®ÝÊÊ 4ò ££¨år9™LŽŽŽf2™þçƒø Ú ÓÊ03°¾àû ©'''Ýn÷7¾ñ „Ñy½^ ãšžžÆý¿ûÝï>õÔS2&nEÀAЈ¡ƒžÏçÑœ:uÊåriÕúqp•A©T*W®\AÈ'ƒµ)Y ‡_ú|>È«a–ùý~284Mkiix6©éì0ÓD2á©Ãá@D$.nllă¯Ž`êd2911Çý~ÿ† X08gEs NòðððÁƒÃáð<000 ”%£zÓét4=}úôÈÈÈ®]»6lØ€! 5ä *SZ>—ËŒŒ<õÔS‡cÏž=›6m È‚$ú699922 …vïÞÝÕÕe+£’Ñ,ÌÔiAÀø¶nݺÎÎÎ|>ïóùø ôM3SCŒŒŒ $_”\~1Y”€¢õ›þ’Éd0DAœ¤ô31%dÈØ8\Ö:::.]ºäõz}>€›SYƒUõiMcccooïúõë‹Å¢ÛíFDðA æJ¥âõz5$X©N ¢1Ó³™Â7‘¥´æÖ‚÷áÚö²ÄòÄH.È„1€‰ÅXv²m¹ I‡]£ %/©o¨™1­2+Æ< æz"Zº"úK[Àëõ677ãY¹\‹¤ÛíFè.Ï”Éa×…Ê~Edű„VD6 žXc´j2—C¤SDÕ!ŒdT·ÒVá­Ûj•Jå+_ùÊã?~§ òªµ§Ÿ~úé§ŸÆg—˵mÛ¶ýèGkÖ¬Q&Éÿ©§žúЇ>ô—ù—¿þë¿~§ ûó‹}7—Ùn­­­§Núå_þåÇ{Œ‡Ïò'òïþݿ۳gÏ­k%u×tîèèèßøFË—ŸúÔ§|>ßÝP¼[a/¿SúûûŸ{î¹_ûµ_Û¿?öÁº®ÿÖoýÖüÁÜΊh¯¨p×W¥UªSÑ]ÏäN”Œ*%¶•†Í¨ÛJ‘Ý”â2lñw¾€tZ”4$#•"Ô„{4e D’%”DX[[[cc#ø+++ˆ&ðz½CCC±XlddäÈ‘#.— º‡2ú Ê ¹\naaA)åv»³Ùl$¹víôe½^ï¶mÛzzzs']¹[UÕø‘ÞÒj…k­¬¬hÚ 7Ðø áYêk†Ïç¿L™8ú:#õõõ­­­½½½pº$Ó }*7Ê‘UÁ/`€5C ŽnFÍ.@gé¦<é9RŒt8lä0›G‘ÈèETÌ$žøžm"‹A×X oJ)¸Ã@ fITŽÕÄ9?²"H––2Ñ`Ç8Þ§ô¾‘Þ>Š ý솆¸ ŒÁA]ÔÉŽD"KKKÉdò{ßû^{{»œÅè»h4Z³S–––_.œ(vÅL8‹&’\T ºiµÎç8• 30ß ã4AZÔÌpiÝ£T·ÒVá­Ûj_ùÊWÞÿþ÷ßæÔf¯cž¾šV__èСáááüàûöí»Ee€”ÏÍ*öí)óK+vMëêêzòÉ'çççOž<ÙÜܼcÇŒŒà‚h4Ê‹ï¿ÿ~¹Oúó?ÿó—ÖJ/³¡nVÝÿöoÿöz·úÒ—¾tÓûñfûåØÍê”M›6=ÿüó£££/^ôz½›6m’‘Œ/y̼X{…»¾*­bêéÞxßCš=Cé KˆÊÁwJ&“È@Ý † róÊIþ‚ͽ 7šÜ½ÉÍ_MôGm<õ¥Yê[©T »Ø"dãθ§§ç¡‡ŠÇã“““GE’¬`0Hf ªßÔÔ„ãîÉÉÉ©©)e®\¹réÒ¥ùùùºººmÛ¶mݺµ¹¹›Wí_mÚ ÊÆMª+ü ­äø mÃaýýý~¿Iâå u]omm…è;oˆö¤S¤”±Ad ɲí6D$E>Ÿ_ZZ*‹šöù|.— ÑO¼ŒÙÐÐøÐÜ¿'9_©T*‘HPèPÈAÓ—ÃR)åt:ÁôÀ¸9@oɆN+á3€̧ÎìòŒŸåõ…B)äéù Ùá„WL™dÔ·P(@"ƒY½È`"H‡)•X*ÀQ3¥R RML’H‘ÉcR¦3ú 㡽½âÓ©T µ€Ûcbgººº¨±C[R&µD™¡…hC¯× wšib±X4mnnÞ¸q#À8eº‚¤TÀ£/Ó¢ £££X·n×ؤpã‰>ƒ2‰„˜ù|þâÅ‹ÿüÏÿÇ»»»ï»ï>ˆé$“IÍ$LNN&‰T*õæ7¿Rz d#܃ÞØØˆ€;¸¯pŒ™¨Ž¸ ç Ò5`ü766nÚ´©­­M75qT-ÎFÎòòrWW×ôôtGG$2ˆfÖ\œ‰ættt\‰ xAO‚k`˜öööz½^—Ë ¡§ÎWá-Cä|P¦èa]]]"‘˜íééñx<¨‘„lÀ=(C™$ •ååeô¾¬8دxQ9yÈ!bI²õ`$-¬±àÊDÀƒð?ƪDp ‘RUc$_p¨&¸·Š2¸^¾¸H‘…zCp£$à­P(„—&[‰àý„I¾à4“’i 6a2ò@Uõ±îÌàAÂFl‡©:_3‚epZjM†aã’â­›¢f\RÒÒ³®[W¢ã$Ì0iæPÍêŠ(_Z­ƒ:©»Ïa¦LüŽEHMj­Üа%WÌ|8\£nY“J°±$¹Ov–2³+pL¢µÑA˜hr f¤±XT·ÒVá­Ûg333?øÁn‘Ѫý\ëìì ‡ÃO<ñD8¾Óey5—Y)ÕÞÞnQ·ô‰wyCÝåÅ»jíp8Ö­[·nݺÛY»?Üõ¦›aSž›Œ'¢*Ü`aOϽ©š¦Üsóbl%‰Ä±cÇ"‘È®]»6mÚ †”ÕP&Ȩ΄­›b(;“Ÿ¹{#TdTÇZâUl•`ß0®ÛMÜÑ1¹\©µRx½ÞÝ»wg2™ÿøÇ³³³?ýéO§¦¦Ö­[××××ÜÜŒ`¥r¹Ìô^333ßÿþ÷ëêê––– ºåñx¶nÝúú׿¾··(¡apÿXeðj&UM N“¥w”yÍf) Ç2=@'@`aaÁ⃹Ýn”ÂFA ¾œÉdðÄ•••™™ÜÁM ¶ -\3"5.;yòd.—Ëçó?ýéOGFF<Íá@f2ʱU*•|>>‚;xTŽÈ©t: :J,P .™‡ ^ ZôeFqRí0%î•Rh¤`ƒBÜŠþIRhFæÒ…Æ"F,zRPÿû\]¼-Dj-Ç‚ïQTIIk œ)Hqif¸"âjáÚ¿@#)à ÁbH#B–àé¡Ñèæ®¥£H(K#%á+¢âétú«_ýj.—{ýë_¿sçN ` :if<Ÿ¯¯¯ƒ6l !i¢–Œ.$ ’9 ¸ q‘Äp:'@Ñ̨þ3LI5éý*SjÄ(²Q˜¡UUÃ÷,$ Ù©è‰:qÄ€dþF¿ê¦îÑ: ™¨®®Êëù|þСCËËË›7o2®LÜ!]è ´ƒ&h­3‹ŠMÙ; xø\< $ÝÌvŠÁÉc•ÐD îfD¢IZQ¦ÛÏÅAQíRÅ SÕò¾–o—ËÕÜÜ,‰ÀŒ&Á!ár¹œN'XeãJK¤†eæjÓÜܼoß¾5kÖ­à˜×lZ„œ’Ž^6‘%ÔÂkøŠ'(É÷&¹½ò­-M«æ[qUç87D Æ!‡±\dãðWšÐ¬‰irQµŠ¤o©=ÇêCTJy½^¼skfX:ºUNOv«D·ÙéM“=+Gša²Ú9r8Z0’%²l˜tWe²Þ4‘ò‚}a'Õ¢$è,ø†÷m9èºé¶ oÝ>û½ßû½O|⯠×âUfoxÃŽ?~§Kñê/ó±»¼¡îòâ½fk}÷‡»¾¦L³ñÿ¥à¿—Þ”ÛJ £Ì :CÕ–––Ž;699ÙÚÚÚßßö·t–§È ®Ü”K³¸J$·üÊâIJäHzÊÕØø/á9 ~,--¥ÓiËÁ/zy~~þ?ønf°¼…LçðíQºŽ, a»ˆ}v>ŸO&“¸ìòåËÑh¢æ zâ12ãÎàšÂ1†N\NðM€¶P?˜<)*zPð·•R€6 p #Xê À[(-nD çí”Hohh Ä"õ0Ó":Øæ2AœE"s‡ºÑˆõà …{Jq<Èåråóy:êJ)|Fãæ€E PN$˜Ïç‰!¯CÛªj'J†Ã  $š1L’ž'~•Íf›››½^ïÀÀ@86DV5RtSGÎ}Þ¡¡¡¨1d×=ž‹¢ W¦”;~à`HO`i?~¼©©Éçó¯ÔØØ‰D¢Ñh{{»%•¤ô« É)Á|‘1¼–Õ†BḨ™©0tSmМìÿ¢š#¶Ž°Êl6˰eË*m¹C´&f.Öa™ŠÁONO)%W?%$“,^4&fÇôôt6›½xñ"ÙZ[[ƒÁ`0DÜðhô2Qæ–eóxCN|t„%´P‰3 "Úª:¨MU3¹ø>ÂòÈÅD tiee¡âzuT8— ŸÏ—Ífõj™¯­­­¯¯øEM1#´s]]ÝÆNçš5k$åÖþ æ_I|s8­­­€€½f ÏË_YÆ­üÑ|ƒ™.Ç!ñ*!J¤‰ÝÄŸ+!u½W³å#/“¬+nêänD‰<ËJa ¾¶¿Úäm ÇscƒIrE2Ì?L|›0¢P[–w´ÜÿÈbp¹VÕêZ²`ö’G¯Uk;Zö3ì;‚ª†0.°Ø`«Å¹ÔjæÄU[µU[µU[µ›lwC,óªIÓjSÛ7â–ý“’Gå¼I]]] ذaCOOxÔÀÒ„q©ª#” z“»IË,•t é¢ËÅwb\C{{{(šÇãðÖp7Ð=šššvî܇;;;OŸ>=55577LJ=a „Ãá®®®¦¦&ÇÓÒÒR,ÇÇÇÁŽAR3Äš‹ååeÕÇ›i!ÈÆ‘QTôyΞý¶RÿOÊN’öövÀJ–——@(*•J8«Ç¦ßår¼€Ú.vÆLëN--䇂3ÿÅÞãñ6òƃËåbîK:W@1LÉ©B¡+àAJ0•R$…áOèP„ɺú!5ƒÒ3Ñ@›Ó‹&HDÎ]5ž¨C¤ ðImΈ%¡:ÐsYYYñù|ò)«ÀÂívõ jœ†¨Q.—£(²tü$Ò‡0+ô…$¼íBñh KÎ@„r6áJÉÆÒM±<:ÌN§ÊnSqlˆ|>¯”BõA”S’ ŒÃáݯT*12Kì)gÃÊR;™LBí^)êßää$+ ç6“É@WN®B²Ž²`ìzÉÀr˜ZΖõG Õâ jâ0@þ× …x<Mz.’öõ Ÿ9¢Ð›2w-WcC—±j`s`)¶¬ó,›&Ž @uÉçó3 H,K¥RcccÐу---@ ³³³«« DKV™h¡L:óHn·;—ËÉ…ÚÞ8œæ ß±8…±¤ð`&NÏÌÌÌÍÍ麾eË–p8Ì4 ¨×ÒÒÒŋ׭[‡el)V®®®þþþùùyÉPÆ_ý~ÿƃÁ QÍÒ§—pç΃ƒƒÁ`Ðr 2ÅžâᄦiÍÍÍÀ¶¨îÄÐ`£\«6Ùï5_|òUÂ÷¦%t‘Ë1,ßòöFïn¹dñ¾´[rA– %y£XÖ Át““—sÓ²°+3FIegò&†÷’ÇC$Òûr²(3Q€e*qàæŸŽm˜ªðRóN‘¬ª>–㉉ƒÕ ȧGº¯ª‘Ü[a«ðÖí³O|âÿõ¿þ×/}éKöµ`ÕVmÕ^éfÆðð0d8P3cñª½RìµOzgMõòßšGÍܧJ?Šé2›!š`0xÿý÷kš ‘û ¿@À˜e±JŸßBs ØªŒm´ì’-Gܸ-qË6]Vßáp0û¡Rj~~ºN×®]ƒöˆHŒjh>lI‹ãŠ|öóóó€ àáã2*[¯¬¬47ŸPªŽ»O¹qGûDJŽ™V\56jºîÀ&øþû÷FÈ0&Ã0\.vð€À 0 Ãëõâ¶ žñ‰P•" P [y0•HG’»)WLråÒé~”AI‘)”mÿ%]"8ª:–’FšM!ðDDCbj²÷åãP5 Ë´j 2ðP(ßã{2ï´j~œJtü@u!6Ä7årRPteI’‡öè ÍÔ%R…è¦à9SN§~XìÃ@~À*JDRrE–$ªW®\ùÙÏ~6;;ë÷û–tÖ0ëäädCC²RZ¸±MMM[¶l‰Åb£££`€EœNçöíÛ·oßNœ]v‡ÄD01CÝn7£ kBB´‚`ß•òÍ"!•{µ5. fD.–Š™ˆCv‡,!%U-„‹pRÅL2¨½šÓG†ÇÊßZ–qË_%ÇPÒuí{Æë¡.Ì¿Œ›# ›²wóXÖ¨cEüT©J삌ʕA†p²„Z-D[v+o¨UCŠ|ãÈ*»Oä›9I !«Ï ¹á·ìŽnº­:`·Ïº»»ßüæ7ùË_~ï{ß{§Ë²j«¶j7Ób±Ø[ßúÖ@ ðÇüÇ/^üÈG>ò™Ï|fíÚµwº\«öíî¬|Õ˜ÜÊM¶ÜÃaç$C¢,›cùYnéäçÆÆÆžžu+SåDÙöô0 ß<,M}KW_Õ:éeu‘„4%n‹Uµ«©L8Þ‚Èb±ØñãÇŸyæ™t:-ý=R6À&À¶ºÅ`"(SVV8Ÿ8G¥W¦ë:ÄÂŽ¢®—+•Šßf&’£ Þ¸ˆÔ#`û›®ãvlj)5eAšä–^‘ÝL†æ*‡Ï„/e Ókå—Ðþ€¾» W¢Ø@ñˆªHoJîò90$(C£"rÕÏ¢ûe+òDØÑÒ«7„>oˆ‹)‹&cZ A‡±0¤û„V•S†Ke4² Á»ÑL eò 5SáÈafg“JIìdZ5ÙA¯VbÖ…ÎŽÅ¿R¦æ±ChTË•Aâ˜èA–G*à€iȽ’ “ *3››\äD}4MD1+›s(Ç ¹ÝÝÝ»wï>sæL*•‚ˆ#àØÈõõõÍÍÍ„·,‹¡ü¯åAšÀµjˆœc•@«y`@#ŠMdÐγ°t†:à-¬oŒØ•ˆ„&———s¹\2™\YY ¶e:còf2¿ß/5¿ ÕÚÚ‰Dà<Ë"íˆlƒ‘HD)U.—<877×ÕÕÕlšff]ƒ ðf+ë.c$å´Å¨À¼æŸÐÚñx¼T*È„]¾|<Óx<¾¼¼ ^*;Îãñ(¥¦§§·lÙÂP0 cpp°¡¡áÙgŸÅ0nnnÞ°aömÛZZZôëdàÕ{‹Y_ï릎ž}ܪjœ•݊ȸW:˜öîõ†±°¬eÔY˜†òzM@º\åt¡ %Ÿeÿ9žß‘?”SÛr™¥"¤»RÑ_^Jäöå}ø¯TƒP³sÊ}Ž&pyö¦Qð”K!Ìd•å[’K·27 ö¡Â¶,¼LF†Z¶=ò_⸣š»g0êVÚ*¼u[í=ïyϽ÷Þû¶·½m5y⪭ګÉ>úÑ>|ø»ßýî=÷ÜsÏ=÷ø|¾Ï~ö³ñq§Ëµj«ö 0¹I’›cî·¨R¤™Š6†H'Ï< 3BD QsMûÁÅ vaêàÒcg¨šªÞÃfø 3$Š[vIûÂS¯B×™Yfa3 U„0¹°²ì ÙÑzµb´lü—t0™QÞ‚ÁÑaCئ…‚Ç>¢ç,—>ÞWÍ$D8Dª>®¸3éHŒ¾áo•pøe[µµµy½^ÈÇHxÈ⇅A™qqggç;ÞñŽÝ»wÏÏÏÏÎΦÓé|>õ¨d2™H$€ïô÷÷“Ú n%ÝښοfRB8Z˜aS™!«bf˜³„S•ðcñÛíöù|rÊèBÚI¼,˜¶uuuÁ`0N£OÄ'» µ^XXX\\ŒÅbããã±XŒEYT'^½zuãÆííírÔ­[·îÍo~óØØØìììââ"'å$³¯R©ÌÏÏÇãñ .x½Þ¦¦¦¦¦¦@ ÐÕÕÕÝÝÝÔÔÄHaMÓÂá0芨—a*1|M hL’¿殬¬D£ÑÅÅŦ¦¦ååeë”RÇï÷;„äºÌét¶´´\»v-‰ƒAv¥ÃTiD\¿ß¿¸¸X*•Ünw ‡Ã>ŸD3ÃdƒÊÑ‚‚qPqµ7„>´‘nNmv1y²J‡àæø\8~4“û¦ƒLUÃR@cÁŒ“Ë8XÉÏ•k)çV~C!ùÚR6hLÂ7NœÖåâfˆü*œ)ÐYckÈuU†úb^Ò¹•e“E%éUHÙƒ\ŠåªË/-Á˲•ä>Š l¥:Q‰ü‰ª–F•m(+‹;#¼h2:Оº•¶ oÝVÓuý=ïyÏ—¾ô¥ÿôŸþÓ.˪½h‹F£‡êììܵk—Ú_µ×²Åãq¥Ôù/ÿ% 8pàêÕ«ëׯ¿Ó…Zµm«süšQ­âALvLA!ÒÆV’óu¡K­Ä>,‘HLMMµ´´„B¡J¥’ËåàºP¥H>W~ƒ2âoF‡à/È(?U­ç*+Å1€«R©d2™L&ÓÝݽoß¾ 6ÈsWx•N§Ô-ð¶€MLLŒŽŽ&“I]×ï½÷^äMCí4M»D/ÃGBëQ_\™‘MÜòf ÉVxK‰`4¹ÕVKb°í–n˜ÅéºÁ)±ì"Œ2w‘e;—ÿÕl¦×Òi– ¥ªñeúäpõ% #qR^ WßãñXnb/‰ÞšD=ø=ÒJ¯I‰³zMˆ^ÛgúQêmÙ§¡ÜY¤šSØ~ œÉ§+‘ôЂ”Y†&åe—L¤¶"R¡M.˨ùtèܦ_°,ArD±w8³œNgOOOoo/0ÕæäääÅ‹£Ñh[[Û† pÀÞ˜–Ï×ë˨`/`-BD­¤FZÖRv }ÈfŒTõÂË|p<*Èd2Åb¥l6kF>ŸÅbñx<.,,ÌÍÍ¥Ói°ê !ôÃb` …B¹\Îï÷ˇbœoÛ¶mppHÙÒÒÒÂÂÂôôt,ãá„¥À˜L&ççç;¬ùáp]Ñ}qQ´ªšéƒkt]zEq=—Ë5´^ccc__ßÐÐÐìììÎ;{{{IŸá˜q:W¯^={ölkk+~H<Èaf&õx<†™â–e³0uª/W!y¬QÕè’åJe[*ÙM5óí—]ûЪÕ߈yé6‰}Ëâ/Fì¯NûbÂ]„„i”mÿp½'[ÿµ¬¨rÑà ŽÛ¹ˆá•ÄûP2ϨE“ÔÌm‡P]´–ȶ"w̲[V¹šµPü’cIر\`•yrƒY¯›qúL\’‘ˆˆ—ÑÜ·ÂVá­Ûm¿ò+¿òÈ#üîïþîªïôʲÏ~ö³ßþö·?þñèCjnnþÚ×¾¶Úƒ«Fûßø¯|å+/^¼÷Þ{ßýîwG£Ñï}ï{wºP«öâluŽßqãfNúf<úã–Ž×À2ªÕ1ôê¸BË^_Þê'Tagò5C0b”8zåC©´‚Vª%ØaçJçGúÊ–ÕÜt*3ÁY}}½Ïç ü'ð¥RIÓ4F™*‹^¯d8] ­Á?¤Þ–E,–l*Ùc«J‘#ðt§ª©Xªޱ8ì þ\×uD_ŠºÁÀ¡R†Ð~¶ìïå QŪ%7xŠÝ,…×®Ø!!” µ¤Ñ!DÇ!,ËŽd)ó`_ ý©šgÝœ„t!,eŒ-.+ÛSJÅ«jèXJ¨^€›d£åðÐ…ÂÝ ú]v¨QÖÄ{ZTfØÚº™Ü0ŸÏc´g³Ù\.‡P\{íì52 Ãår…B!ä[ ÏRé3Kš à REbžnÞ¼yïÞ½™LÆår!ß‚.b*e[Éf´ªš­-!žb±˜N§eNOíúñ‰ êÈ‚ÄĘÐLå>|ƒÀË—/××׃ˆ‰D’ÉäÒÒR2™, ãþËæ* ª2dæñxúúú³Éç"ê³®®.‡B¡ŽŽÌÏÏÇb1@]‰D"Nçr9ÜY™1†DVVVð§ÓÙÐÐàõz€ÛíN¥Rn·»¥¥eÓ¦MXíIJ~.¬P(H©ìŠÈâT=Ž¿¾ãï˜]¿~}0dGbß­­­k×®=uê”ÛíÞ³gOKK‹!Î?Pˆ¸!‚%±£…9+qjB`þàeùª¹V[¾—ó‹•ù1åY”e(ZÐͤqÉ£‘аšë¹KöÅA«VÙ»Þòeÿ“~Œ“ö…Èþ²ÖõÉÞ#šI7#=V®`šÍjç´j60‘’WòΖ%B3¡Òe×ËwE¤Ç±¯'üU¥Zƒ_ OÎ ^†XbÙÄ\àK 0€Ú[g«ðÖí6,£Ï=÷ÜŸ?zôèW¿úÕp8|þüù]»vÝér­Ú µÕ9~g­¦Ïlˆ¬[üï ~Hq%*R[ödʆP "Ó=E°œWj¦€«ô¥WL3„Ö´®¸ÖͰ>ésBÆ»"dÅìž'•ÔåÁ¯R ©Ù$ªÂ-/B” 馂>|l‰¸ÙaAî\e ¾§gÙÚÊ}¹½o€€ð{¤ Wµ\÷ë™,³tNd¢Cö— Pµ;/êq7½ÐÉ&dSóA,8SÒ»ÐGI3åíéˆÖ,0ªÿ_Æâa¼•J%ÄmƒAFúÈߨ„mÉÚv½0ª™×ké ÊN·Üd4,KÉ< Â¥ªý[ù¬ºººÎÎÎd2iTÛõÊ\³FÁ`píÚµPSº¶¥U3G70–¤b( ‡Ãëõz½^€5t¥àŽªo½ðQJL§X,"ïÄÏE0•‰“ÊÌ\RKáç@©²Ùl<O$…B!•J-,,\»v àŠg³YrWÅê0äÖM⹇ºT²C5=D!â—C¡Pkk+ô¼2™L>ŸG©æçççææ–––Òé4a8Ò»P©t:‹Å@©T* ù|~fff`` #] eÆ%‰R© LÍ¥FÓ4ÐiIÄÃkeË–-}}}ððŠÅ¢6 [·nF£‡Îf³÷ß0ä âÉøøx2™°Àâ–A+?Ë·˜&S;lQÚ§;Ž V£:¡]êÞÒƒѪÁhÐo–n1ÝmØß7˜Ú5k§ªß&7Xie1¤¾<ìá›Äa¹^á`ƒTn ¹ååeœ­Çã …BšyZÎz‘_Àcsx€Ò¦¯Wœªgض꺞N§ý~?ÊOÔÏâÀÈN·o—IOà^™Î’Ýǵ–P‚"c‹±T”תC ‘gÓ0U@Ê`—IÑôd $!9'}9øçò{Ëxc°Àè ¼KC²38Þ¨eïUK>÷—";4­V”( v=ÆâªÕlLžü[Vö);‚—É;“÷!!×úúú]»võôôüÌD „é"æýæJ©úúú;wJ‘ô(eó·arHËq"×"K°'ƒõ8Ú)ôÚÒà˜û„Z$-®¾¾j_ÿCh$V I†£fª/)¥J¥R,s:3Ìf³™L&™Lâ3€!†–J%К À”ç)ÛJFK¡O!òÅUöµ•‰‚ñW.—Ë0ãž ëƒû(¥¼^okkk¥R) ù|¾P(€Ï…¸ÈH$’J¥Ð–pà¨jšV*•®\¹2??ßÞÞÞÔÔÔÝÝÝÓÓ …ÀóBˆk>Ÿ×u½¹¹SX$Ve Õq` òù|T>Fÿtttlß¾}vvöСCñx|ïÞ½íííˆáªT*ñx|bbâêÕ«kÖ¬Ù´iaÁ¶8 ,ˆIÊ“¡ô–•j >%$Ò•ˆ+ÇÙ‰]JR3¥£ø\9å»A „ãåÊ€wezêBùK®¢ö kGâøâ³“§øÞ'›OÔÌ”¦,¶*²-K¢!Žâ4»Ç»1' —tfw±¬{²é¸‡a‹ÉåÅrlÃFЫ#O9\åå¼³¬*–W-Û9Ø$]7ußêëë€ñË»ìÆ¼Ý—o«ðÖ°{î¹çþèît)VíEØÉ“'•R±XìĉŸüä'W3¬šÅΞ=»cÇMÓÞûÞ÷Þ{ï½ëÖ­»pá‚ýŰjw­­ÎñÛi5ñ ù»Rx¤tÛ-¢Lÿ_ú´ªú´Ó¨V¨ù¯Ä¼ˆ©éB“U‰m¢Ým0Dš9“yã2ÙgñFäý-Ô¥T¹\F(Scc#¢]¤#Á3R͌“4œT*uñâÅÅÅE¥Tgggkk+y=†Ð|µ¨Iƽååå|>ŸÍf6èÅb²A›7oîééq»ÝZu<‚ªv6Øà5/Í”€®w/†eû®j(³_ ›éÀ S*øϵ.ËŸ˜ÍÀ^%@Ã&'g¹X^o÷7,E²8l¨ |þšô¨š@¤ì/‹‹uƒÙjˆ(6eC„o0ìµ¶ƒ\–²Ù«`)9KÂßÖÖ↙E•™0SÍG°g;::4õM–PBÛl‰r’ÊBZ|iùL=:ɼ-vÒšä™Ð!ejÆåóùT*U(&&&‰òær9Àå ‹ÌB´cÅÌ0h6r|¢é\.—Ïçóz½P¿B\^KKËàà 1˰QbÎrlËØ4®`2Úßï÷ûý@R2™L*•ŠF£@»’É$b)XŽf)•JKKK©Tª®®îÂ… >Ÿâkˆ ¯««3 »}´OÌf³H/‹„r0X` —˵víÚûî»ïàÁƒ§N‚$€<À[ñx¼µµµ««K†ÇÖ|›È?ÙžëíH-—Y>ËiÎüw\vXA 3ÈrgW9Ô%,BàÆR0Y)ûø—cC>‘e6L9*Î2.–‚òƒ|µÄÂdËÔl4¶ N¹ÐY^¹à[Êïùª²¿ø®·øÈÅŸ@¶eÏc˜Bry±O¶¼L^!ÐrNƒiEý>™ æÆé¦Û*¼u¬££ãÂ… Ùl–ÌÛU»Ë ïøüÇü…_ø…7½éMï{ßûþôOÿt¹X5Ú<ðøã¿ímoS¦Æð»ßýîÕò ²Õ9~{L³Ñ@,n|MÆ0‰$ Áý+Ož™ÚÌ$±á ZÜKésjÕRÍüF–S:óªÖ™gÍŠÛxK³ÈˆëI¥RJ©¶¶6ŸÏG¦•ô`ÉÛbC‹E@´?úÑ6qýúõÈOf«/ºSoÞ0ÈÊår4=sæÌÈÈÈÊÊÊë^÷º¡¡¡ºººÅÅÅüàçÎs»ÝmmmN§Ó~ú-«,?Û!äÄTµÒ¸4lRe2¯&ð¡™Ê&Jø]J8Hv1yZÆ.Mb]vŸÐ¨–hQÕ.™ ¨‰m6‘—Ì& YƒÿbF8ÎДp]ìSFv™}$Û¿V+´GÖ-o)y͹ Ëc/ƒ¼RzŒzµÌ¦i.— ËgŠªÆ= “3UÓóä_Á "Êl™A–vP6ÿÐÒ༹ÌUw½jZ:×Ô#=vù%¦è„KKKÏ=÷Üââ¢×ëEXŸRªP($‰d2 Jl*•ZZZ‚BV¡PˆF£óóó£££º©M ìšÝÇ*À¡­««s»Ý~¿AŽÍÍÍ---Psw»ÝàO544¸\., 2cX«ÎîZ³MT-W\Ò‚2™L¡Pèììt8…BÔ³L&³´´´¸¸877µ{ ˆ€ÆX,‰Äìì,àQ„_¡¹œN§\"4 X0 Õ××ã2C„°ÉÁ€?šôx<;wîôz½§Nšœœ¼zõ*:´dkkëþýû{{{u3gŸ}DYÖIe[aør±Ì÷šÃÌ>ưœ"]#ß¹êú«âõ‘–RÕÀ´Ìöÿ’+!G#AFˆkZâ]lYadK‚déåë½näÀ#¥ %D¹bhf*CJY6$–Q}ƒ±¼×,]fx|4WäQ(_ªúífÒ¡bÈf—xòÐ?ay P©T¢Ñ¨º•¶ oÝkjjªT*'Ož\O|¥XWW×èèè»Þõ®w¼ãŸúÔ§>ö±½ýío¿ï¾ûît¹Vín±Ï~ö³ûØÇ<èõzOœ8ñÿýÿ߇?üáÛð\Ã0¦§§£ÑèÆÀ¿j/ÍVçøí4‰†È}§ª–Ñ!ç‚‘VÜUË­¼Ô<¶˜üž?çù3 £&¢ª½‰ªP/©¦Ã¯ÙTuµjhL{Áh)¸ÉdR)…Ð*‡Ã!•¡yO(s!l3‘H\»víøñãgÏžšš*•J»wï¦ò…2CcìÀ ±ÄÍçææŽ9rþüù©©©x<‡[ZZÇñãÇŸþyMÓ<Åke´KM^’p¤üPÃä‹Õ„·¤hˆ2á-S³•y¶lwK¸Å·»gìq¸ô– ÷vG®& ÆëUµS'7ýªNÄq"‡î 4Jd¥©ÑDÒ“‘uçeÚuŒ~£²á)ö2ÕŒ¤\¦¢T¿³Ì\–óz,[R³¥¼2…Pe$È"L£U#P¸u-­DÎRBéîj×·¦¤ÛšåPÕˆ€eØáþÀåre³ÙÇŸ?Ü4ƒ°€ÉEÄ M‡Fû\fÅ‘Ðçóµ´´øý~‡ÃpiÇÓÒÒ‚•k =ExNÊŸsUG'rŽË9b™_ö香œYDº9Î\.‡ú|>Ç ÑòÐK$sss‘Hdqq1‹-,,€ÂÆÕ£R©0Ëîï÷ûÝn7qyö;É:5“ï£W‹¸Ûç:Ôãñlݺµ»»{rrrtt4—ËáW¡PhíÚµÀ %[“ »„o05›¬xÍ7¦¼ÞòŽàñÒ j -gE² „†•ØH:¶4Œt«eÑ3„ü“H3ØrYà}dÊU½P[ž‹S®¥rä[Ö+ùú°wׄØä˜±°ØŒë€•jí-Ë WÞ_6‹eÉR&öÇgÉWaÍ#ßtàm±À’ym‡rúÈEÌ0ùÅ«™_…ÖÔÔ¤”:uêÔ*¼õJ±‡zhttÔçó)³ûFFFV]ßU£9Î?üÃ?¼Íýò—¿üGôG×®]SJµ¶¶~ÿûßß½{÷n‰Wª­ÎñÛl–=“ar¯ðWä#1Á<èòòê::¯ªÚÛQ6U#ì´¤†Q­$"}o‹K©Õ ]¬˜JR–cUšeëiqB q|ïãñx2™t¹\kÖ¬ñz½šÈ Å_áÑóóóÃÃ×/_žšššŸŸ_ZZÊårº®wuu=òÈ#CCCÜb›®‰ó[‹À9þ‘‘‘¯ýë¹\nË–-›7ož˜˜èêêÒu}jjêÈ‘#Ñhôõ¯}WWC¸}gãØ÷⺩pÏêÛ}ri7€Éä b‘^’Ιõ••r<ªÚÕѪsrÕ,ªü‰e|Zþ[ÓŒëDnZ¾±;®Z- gæ’Å`dû(3àKºÐJ€GòW:”…dP!˜†Jø?Ò³ªÙ&ÚP"=©j¯‰cÛRy7%x‚5ÛÍÒþ¸!Æ ÚÓ„kØâ‰d1äMTµÃ‰¨J¥Ø…y*äðSÕV͉P³RšÍ ¼ ‚YrRЯ&íÝJ…#9ZÐøæs»ÝÈÄêõzÃápsssSSS0„<à]×!ú˜ZZp‰].Y·J` ¯fø¤VÆVlYt‘Cz×uw8ýýý---Pø‚ Sj"°Úï÷C™¾\.3ÏãÔÔÔââ"–STG Th=XÓ' 555¡m9t ˜+¿¡˜Ú­¹¹yãÆ É@B1 ñÙM\Æõê´$7Æ)8&¥¨–¥"–•wÆ”¤<Ÿ³?K®–é`Ú‘®–ûpM¾ÞBÇ[aa=¼¼D"Q__ßÑÑ~û"V³Øb7Ƀûª%+ËרÜ9Ô¼Æ0U1,íõâr!G8¬T*è¤hVXCnW0ÔÉ“&e"-oU˨æêj‘5wãtÖÍœ‰ò¥ƒ8š‰èÕÕÕÝjUxëfì­&æ­ÚM´ßýÝßý‡ø‡¥¥%¥Ôüü|]]ݾ}ûît¡Víµkårùw÷w?÷¹Ïñ›H$òñük_ûÚ.Ú+ÕVçøí4‰"‚“…ðCn›ÀÇ»40} …÷|v[+z‰«‘Š!„Z*fr1æð-XU2€¢…¨%ó£óKîöðbÙ÷Ó¸ƒ„k—N§GFF‰Dww÷ºuë¨Cl4S ùûßÿþèè(ò”ÁaÛ²eËþýû·mÛfÆåË—»ººÚÛÛ¥ŽµlÝLçW,‘¢ëë_ÿú… |ðÁÝ»w»\®]»v¹\®|>ÿÜsÏ]½zµ­­mûöí~¿Ÿð–&˜,–àMîh©­+á0ê¾+‰7”¾¥a†d§ão qŒÏ %|$Â[ª:0S)Å8 Š™d}¡ªq%kqÌTuÔáÏEÁTµ‹EÅŽhh¦p[MÏJUÖQªl|énY–Ý„+%ˆlzµH¼|…U$µá,„ÀV±X¤R»}"HÒ~ÈÑ%)æ!…›-U–¥ÉŸX&©eÌh‚Êg˜ÁΪ:ë\¹\F:T>Z"¹O™IéìqM×åryiiéÒ¥K ¹\.ïß¿?äõì æn]7µ·-<;,›D ‘ë@BùÌ^hcc# ¥¢›››@CCC @Ô¡ËåòxŸ»|48n¨„· !ùùùùÇüøñã[¶lÙ²e déƒÁ`¹\>vìØÑ£G‹Åâ›Þô¦ÁÁA$E’ˆ†ôÜ´jŽ›l=DB)¥HF¨Ù°RbËŽýºôß$êd¹ØýðY •È^¦s%Ÿ…ôdø ;¨aw\-ÕÒ&–ŸÛ¿¯yÅ âãôëH¶€PKƒ(Üaˆr¬ò²r¹Œ6gÈð²[â\’‡ùˆ¿J¥Ù{est¥ŸÏ(9Ë”T3"×ÌâæI?ÝéC²ÞŽ9’L&÷íÛ×ÒÒÂ3mKû[8k†ˆÃ•’,cnhR„EUÃ:Õ- Ÿçõ®·:·Þ*¼ul~~^)ÇïtAVí&Û³Ï>û|àïÿþï[[[õ©OuuuÝér­Ú-·Û-ø¹Ï}9­¾¾þoþæozè¡;Ý «¶j/ÂäÖþR¹\fz2n¶¨O¡‰UË£Cì T C«j iY*µëœjò)Êæ4Ê­ÜÒf¥š¬÷è@ë,ø‹RjyyùÊ•+GŽñx<¯{ÝëÀÀ’û`e:œpûAû÷ù|†Hnii9pà@0dì!€? ;ò\×õk×®=ùä“Ùlö‘GÙºu«×ëEi‰Äüã³gφ±gÏžîîn€el"ÖB²¨¸ÿ–-‰o‘ Ð’t`d»IÜG~–x¢ì fÔ"XÉ›+á‡PÇ„tB Klũؽ2»]ïOy±L û¯,ãÐŽ¼( ÉîªIO[¢70K ´Þ2„—¼?Ë,c0»WVVœN§]kÆb@R¤Sj™³jÉ÷Ô®O‡‘è• Î•ô+ úÀQJ,ào.—3 T&,G† ‘.¢l^~-ó#GŽÜsÏ=À }>_kkë¡C‡æç绺ºð8 9Nö…¥»-CBöŽ ÚÚÚÞð†7 ­¬¬¸\®`0èõz¥<—VMÓÀOÁBŠk±‹é°¼¼ ’8£´4"‡âIr–ì“A‚22ËRÙšø‹¥4“¬$S…h‚æSk°Ìr ŸK m¡±P(T*• eF±XD âž={’1Y–»]oŽÛ}Ý‹^ÍÁ „œ9W'LL9à-]` ¯³´°„?¸ØR%J’Âìk”ª!ñ†‘¥´bS°×ZÂv”áÓDdñÆÇÇüñ3gθ\.‘Ð\<¤®³ØÚÛ™SÉò àYxëá5Jf™Œ"T6“µ´UÍ·£ùÀ°®T*¹\n~~>ŸÏ»Ýî-[¶`’†Ãa¦ ”“Ño‚Ãh ’ƒlY»,“KÈz‡«·ì‰Ã2Ë3¦ ÓÀ5 õ¢¬ê-²UxëØÄÄ„tÙU{™qÃгO~ò“J©¾¾¾¶¶¶w¿ûÝn·»³³óNùÕc·(ê3™L;vÌ0Œxà%„NMME"‘ÏþóŸÿüç-Êår'OžÜ¶mÛÏÝÍ¿p;wîÜ'>ñ‰M›6=z¯í]»výöoÿöÖ­[Oœ8áñx6lØp³žõÚ4c5åm4éW`Ë߀a/ô¥1Ú±§ÄÆŽ?‡f‰YìD±‹‚«\s“GÏS#覺¯iîËår>ŸGN.ù\»¢„N #¨öm9­e±GGG¿÷½ï-,,<úè£÷ÜsO  ³ÇP6½[4—<³Åž²¾¾I¾”¹%üDχÙôôôSO=5>>¾k×®½{÷âÑ€$Nœ8ñì³Ï& ¿ß/½Ã0 ;ƒ‚A ܸ@ܦk¦ ·Îˆ¿ÀÅÅb‘l=xÝ¥RI×uë6IoÃ$ÔP*mËø ü—MÇG_C"Ûcñ0åþÞ¸¶…(Ëi?}ÑB¡ÿ¹"Dñ¯7Sôê4dšM«KlÉt +ã˜4¡ž#§g"ýÈsÆçbì•aHN§ +%ô\$~ár¹2™Œ%’ŽK ‹é¦¤>`ÄJí6öŽª…!²©Ñì$~êBʨN Æò뺞ÏçK¥’ËåÂ/]ºtäÈ‘D"ÑÙÙ¹wïÞŽŽŸÏ'ý|Ît¤ äs->-ž›J¥ž}öÙööö 6À}íììlkkYr–X-Ã&âƒÎÅ*‡µHU7øàr¹ÚÛÛêN­%‹²;3«Jq%eRxð,$^Ä|‘ZK–0çŠP3´—AN‘cƒ£Ý‚HOù:8=©Í1 y=¡âgÇ’¨¬g9öOY6MÓ(ãµ²²2==L&[ZZ©™á«Ê†örÕU_–è†33K®Ù°cþÖ"ÀÏ̱kù¹|‹Ù›Z%üëÊÊJ&“ñù|8‘¯HY;ûª%{P™ªLr”‡JàŒ’¤‹t(Ê|›h&Í™«k>Ÿ?{öì©S§ŠÅb}}ýÉ“'¯]»ö¦7½Ižø ç°áºïG>ŸÇì@%tN’TEV*¥òù|,‹F£áp¸­­Sƒ¯xyü  V¢¸1Ê’:¡èßl6{åÊ•§žz*ô÷÷—Ëå–––ÖÖÖ•••\.ÇÑh!{ÊG“k)ßbx"ƉZø.?à-Œ“ ÍSóOßûÞ÷¾÷½ï}ãßø×ÿú_߬vxç;ß966666ÆoNž<ùk¿ökøÜØØ877‡Ä«öl5å1îüTK&ƒ·ÓCTµgeTÇB[WþD>K~ÃsolÚxò)%yŠÏ©Tª¡¡‘DJìV¥œ“¥ØØòZb»XàDcccÿüÏÿ|øðá]»v=üðÃöl’üÀ‡²üöÑ«…¥-þ'P8-àg;v¬»»ûMozS}}=ÙÙÙgŸ}vvv6 mÞ¼Ùãñd2§Ó™J¥ÆÆÆ¢Ñ¨ßïokk« PÔòò²×ë ƒ8þÍçó@Ê="G ÃÈf³ ‡c``@·i!flÚ­Mé.XEH±€ý§›yÓ”-ô‰­TÓ6ª5›jú™̨˜CW.=|‰L&3??ßÖÖFú Qûh©9SìŽ|â C2£¬‘ªFO®wK|™&gÐÔœ¼õ“ˆÿ%v&Kn)³Q-z%]z97µj©fþƒ–ŒT½ Ù/—ËËÞ‰|œ_ …ÂåË—?>;;‰DN:•Ífá~‚åòéÕȇ]vÀÌŠˆ £J¥râĉl6{Ï=÷èºÞØØøè£¶µµÁŸ—Ée/Õ\ qÖì8 %È£šš¸‰ìû ‘hÕ ¾å†Tž¶œê¦TJ¾´ x; ÄÛÛÐÐÏçãñx±Xlnnì"ûÂ2´,³‰«Ê öÙ§‰.Ã0æææž}öÙl6»qãÆX,ÖÜÜÜÑÑA0]U»ý5ïo·ì ¦~)=–Ç–+YQFµñ¶ _ÉK/Û„áêt:íË”eñ©9ŒjE*Ù)ªÖÜWÕ‹§Ôl§GÀ #‘ÈÕ«W———ï½÷Þ¡¡!ÄÑŸ;wn×®]d5qþd©;^+†P°’ecžMüWÆòG"‘ñññóçÏ/..nݺõþûïonn–+ÉõÆ€|×X–_ËÈYYYYZZzòÉ'Oœ8188˜ÍfÏž=ÛÜܼoß¾íÛ·ƒA¼- ÅC5Ù öê[†Ÿ2!HUýÒÄ.Âï÷˜¶¬ö«ÔWMÓð"&H-çÈ*¼õ*´Ë—/«Uxëe/0ô,‰(¥þñÿñ~áÞô¦7½ï}ïûÓ?ýÓ›‚¼ÆíÖE}~ðƒL¥Rï~÷»·nݪ”ú•_ù•çž{îEÝáÓŸþô»ßýî7¿ùÍÙl–_"Z¨ÓM´«W¯nÚ´éï|çG>ò‘›~ó»ÐÒéôÙ³g÷ïßãÝÞË·Õd”wܰ‰lhh€Æ9CJDÕÜ ëf®%ž÷Z<U- Av†nKOfT«I0ˆ\FЩ‘ùÑ4»aÁMø/.Õ‚[[Þ|ttôÛßþöáÇÛÚÚzè¡®®.lÍå­dÄ $˶ÕÒ\Ê<µÆw»|ùò¡C‡4M;pàÀÚµk‘°R)•ËåŽ=zõêU·ÛýÈ#ìÞ½»©©Éï÷OOOONNF"‘‰‰‰ÑÑQ¥TGGÇæÍ›S©T<ÏårÍÍÍ»wïnmmF£óóóétzíÚµ÷ÜsOkk+Ê099ù“Ÿü$ …Ãá`0h)-ÐpLŠŠÝØïFíaFRèÕêËJÈÄXzözïw‰Åಙ™™çž{nzzúo|ãúõë!QüBæAƒÂxÁõŠÁú.//ãT{»I§Kþ—YޤÿƒÓx%Ø…š`Ø¡ËÐ•à…¬¯Qeˆüª7ÞSÉŠH?*_»vm~~~hhhhhˆyÄ,MÇ’rl‰Dâüùó{÷î]XXøÆ7¾1<<üÆ7¾”ËpUbµá4';oee¥\._ºt©X,nÚ´)÷»ßݹsç;ßùÎp8ì÷û¡qc‡P•ð]%½ÂÒ•²0•ê2fÐÞÝ/dV“£Ë>/X6Kl2š¢P(LOO#£2ýg–Yúê| KKÙ# Zw’R†œÅ–Ö«9=%œgØ 0ËØ`ûg³Ù'N;v¬®®.•J†ÑÝÝýØc555Ù»Ãþ2R7„·,“Åò«šw6l˜¦ýц¯˜Éaí˜&/æ4GÚЦôZ’a–qbü`áZºØÞ8–—¾åJ¹9Žx<¾´´´nݺ·¾õ­£££—.]ÊårœòWlù¦à$µ@o2…®2ÉMËËËsss—/_nllܱcG&“éèèðz½ù|>"'Vþо1ÿÚR5"Aù|~||üäÉ“•J¥£££­­íرcçÏŸ÷ûýëׯ…Bòõ²”Yg9•jM:¹ ÉÚ0 ˼ ó×ívK)U ¥Ù×yöÆÍªk]…·^…vúôi¥T(ºÓYµˆôÕuuuŽŽ¾ë]ïzÇ;Þñ©O}êcûØÛßþöûî»ïN×òo·.êsnnN)åõz•R.—ëàÁƒ—/_~±)ó~ò“Ÿx<@*¥|ðÁ?û³?Û¿ÿn¶W’]o&¾þõ¯?vìØ'>ñ‰ßû½ß»¥XMFyÇ PÑòòr$YYY …BN§“x2ê-?‘ ”åØ¿æ•–ãG¥|N¹ÁUá2„ž”.$‡±…M?NP%$%Œ³ *!£?*B£êÊ•+?þø‘#GZZZÞúÖ·nÞ¼5ÊâÂ!"K8˜ìY4>‰9ð„eHMo\Ù »‡V¹~æÁŒgÙÈ“““W®\)  nYX~?w^àƒ,ûQö©½Yø'/œh‡·äý¥Ëd¯©eúh‚Ç‘¸Óv¤l€¯¢×ƒ·Tµ’fcô\¯¹0é”)N‡G …k×®=ýôÓÅb1 ­_¿ÞžVU•éç€m)¥vìØáóùÚÚÚNœ8qáÂ…b±hAOûY__ït:5S‰l,^366vúôéÍ›7ïÙ³gbbâ‡?üáÊÊJss3"ˆ™¾ÓÒ5–Uξˆ]¯%ޝl؇} [IûPü¹ð–Äì #Í Ö¡F¸"²C(ÛÜT&Òêv»±,È©-Ç•½A,É‚e\oêÑP—ååå™™™ááẺºíÛ·‡ÃáK—.>}zÇŽŸÎ°ÑЮ7ä-©5;×Þ25Ê2­0>Ëår}}=4¤,}gÿ/i°,ÛW-û¬ljKEìf˜èžfã Z:ý‹Å …ÂæÍ›{{{5Mkhhƒ•Çx“o 9B5oÙ$ð JÔg³Ù¥¥¥ááa1XÁ€IDAT¼ÛÚÚÞ¨iZ©TÊd2†a¸Ýn·ÛÍ7‘½yeaj®Û†™822Çׯ_ßÛÛëp8<O$)‹àGsailldw3l“/_‚ʶ˜£µqþ¡išLgÌ4….òXˆ´ö>"žÅ„ab¬0û«üæÚ*¼u»-‹MOO+¥z{{ïtY^ëö‘^`¢º‡zhttÔçó)¥€ßŒŒ¬Â[/ßn]Ôç£>úÿøSSSýýý‹‹‹J©óçÏ¿XxK).^¼866Ö×ׇïtƒ½Âì3ñÆäM´×H2ÊîTß©âa›Å@'|Áwš#?ŠN>¨=Ü2b_EA©ˆôê$AÔÔPæ£Åñ@ÙŒjívytißÓóƒÄݤ+.¨««Ëf³'OžüÎw¾sñâÅ·¼å-»wïöûý€«È?’RGÜyK7@Fq¬BD&‹ÅááácÇŽy<žÝ»wwuuÑo\\\ƒ zcA!I‘")JT‰,Û)öÚqgã$.IÇ{“M6Ù¬“ÍÆëxã4gãlŠcËk[²#Ù’,™E{ ½—Áô>ƒ™÷ûãûyçwæ=¢ Iœ?ø™÷î»÷ÜûîùÞïùžÆÆFƒÁ099ù“ŸüÄb±ôõõÕÕÕe2™ÙÙÙB¡€m@`ttôàÁƒ±X,Úl¶¶¶6Y–—––H¨K(5"§¦¦òù|cc#A@T+hOÚÄ“p ~OÇ)TBs|-V‹4øšCù¤ôÕ×WŸy³K¥Òôôô‘#G|>ß¾}û\.—Ýn·X,P ¢JÆž·–¼tzª Êõ£&q.Õ+Ô‚8< âÞÂñY–‘ÁŠD.´$)D-!¦-:“†n§Rã¢æñÿjƒ@þEÁ€îÉü+2^³\./,,¤ÓéÞÞ^ÇÓÜÜŒ$A1>[ñ31=c±Ø¹sçÖ­[‡T l6‹ÄR-™TEü¤èŽ”­ñ™‘‘‘d2ùîw¿»µµµ¥¥enn.‹q:îäØ:EÉK…Èâ©r{rBÞ-’$Aþ|O™0’ÔQÁg|øøÃ’–VbŸ{©Ê'…Rji˜²"~§-¨šä ô{I’ÒÃÿUU%MBo ±V9à¢Â_0jX‡ÌS&“™ŸŸÅb[¶lÙ¿?&òÒÒOÈZ5à§kB PÖ—´°cF €&z@%‰EC¯b'Q×q)%:â¿¡( ð‚cèÝÆ÷âë@@84L¯QÕãhQ ¹2ÅUµóÏÀÕ9#?÷ °Qó ˜©¥¥¥··×áp€†L—âçO|«PÖHÒÉ„`:ƒ:.‘H=z´¿¿Ó¦MÉdÒf³¡ðèÊÊŠÙl†â{Y)[Yf%øãðÍ MUZ@¨$N6›]\\”eÙçóÙíöx<ŽÊÈuuu6›ï@p;Ú¢¨z»¬Ç٩éo Te@ó«‰ÕŒÃ©+C,)µMeMv3QÝo­Á[·Û.^¼ˆït[Þ¾öŠ‘þþïÿ>óß\¯PÝoÿöoýë_‡ÃBˆ………ªªª;wÞég}+Ø­ËúüÇüdž††¿û»¿;tè¸W±XìÕ]Êëõ®©­½R{Ù™xðàÁ‹/îÚµë–6caa>F¶VŒò6áƒÁï÷KŠ‚5E5|ƒÅ%0°¦ØO¬V!q£¬ä%FÐ1Ál~˜© –hs,*÷|ÔxÕvïe ï)˜GH¶²²2<<üÄO\ºt©¯¯ïïxGoo¯Óé „:èéT;Wz]¥7íË9fÁ÷ BÙb®¬¬„B¡³gφÃá;w¶´´X,\$•J;wîìÙ³V«õž{î©««3›ÍÑhôÅ_œœœ|ç;ßÙÜÜŒTÄt: Q­††¿ßo6›ggg‰„Óéܹsç–-[ü~ÿøø8 °ææf¯× õ±L&333ÓÐаiÓ&hx«Æ9‰‚¡üåÕ8)ªœ,Žˆ©>Éo¤5þòŸ›ña£b£?33ó­o}kllì‘G‘$Éår¡NRWÆå7å*E¼˜#«SZG:Fÿ¨¥ð'­–ËF}ÈPÕÉšœMnòÑëõ>ŸOb¼¨%r¥$?q»x©®¹*:@#¬è Ð]UcJ3Q§”Ѻ“ê‰Q„Vu•ߪ*{h{L çIJz]©T¨ÑÓÓSWW—ËåPϧ¾¾^õ°Z” l>XØvÒÇèì„d¿W]²t¬dŸP¸#å̪Þtæ¤o¢/žÏçF#Vþî• /p”® òoÑ'UÀëõ¼”ÞÑreŽ*Ï?• ”Äd2•ËåùùùñññR©‰D¶lÙÒÜܬSê«ÈìPJ5¬|õ SÕ›v …BattôôéÓSSSñx|`` ½½ýî»ïîììDŸÛívJä¤÷_Õé=.iLTîð/ "ùäw¿ûÝ3gÎȲüÄOÜ<H^«×v}»uYŸ.—ëþàÀ*òÉ'ûûûÛÚÚ^Ñ®^½:66–Édžþyí_%IÚ¹s'’_;vìX:ž˜˜Xõvf³yÏž=¯×½nÒ^ëÆb±3gÎÜ`&¶µµµµµ9Ž[Í\\\|ì±ÇP»M;Ç…¯‹ÐÛÁä›[¹ýFûKÊõã[C¾)idº‚öÜqÕ¡Wå †˜hO¤UWýÌ7v”½ˆß£x•J½øâ‹.\èîî^¿~=‚ŠÙÙÙÉÉÉR©ÔÚÚZWWg0ÆÆÆŽ?^,ï¾ûî½{÷z½Þd2yòäÉ¡¡!¿ßßÑÑáñxªªªr¹ÜåË—S©ÔC=ÔÜÜŒ”Þ礮} (ÃV§)) ¿Äj ޏ>ª¢Ê9Õº}X…(åóù^xáøñã©Tê‡?üáÀÀÀ;ßùÎÖÖVâj›*˜„“¢P(ÀUTJ[ðíx<TYQa¼ÍªN•Œ*˜Åb¹vÐM¯×[­V^‘·G5C_v Ò¶?”*·ˆ& Q„ÎÎÎö÷÷@ àt:%IBEˆT*Å5¶µØ ð—ùùyè+år¹|>âĉÅÅŇ~ ¼ZJº“*Ä•NŠ^¯O&“SSSv»= •J¥¦¦&t¯ Ñz¯¬ÉRÑbR¡PhhhèòåË ®Ú¸qcoooGG¸BD¾S¹jn0´`œª{µWжYhðþaÕ•UŸT! Zm UÄ.4°&L{KŠ<“ÑhÄ2…ëöÞ½{ƒÁ ’ÄùWø-$%YUõú Ežˆ~:E7P¥äȇ’ó‰xUSÁ U­gÒ™ P-@' Í’3« @þ_œIHŒ È}’‹=©|˜–Õ›KõIÕë^õÜ¯È …B¹\öz½>ŸïÚµkù|~ýúõ›7oîèè z¨‘Bk8ŸDÚËr·áÏŽLÀp8ŒmmmS,—Ë>Ÿ÷“ dL~µòõ«yj; í1›Í UUUccc²,'“ɦ¦¦={ö¬_¿^¯˜$IÑhtvvö±MMMi¿{éÒ¥}ìc GŽ¡_~á _Ðét I¥RõWExúé§ùP>òÈ#<òˆâsŸûÜëØì·¹Ýº¬ÏßÿýßÿÜç>÷¥/}é7~ã7’ɤÏçÛ¾}û+ºÂ7¾ñüà©Têcûتøâ¿øîw¿ûõêŠ?üÃ?\XXxúé§Oœ8¡ý«N§;yòäí$‘½j×¹ñL|à¾üå/߆G8{öì_þå_ !êëë±çSÍñ_ø…_øÓ?ýÓÛÒok£DI£ž.iΊ¯!sd‡'ìâ Ú«à-ùúrÜTÁ¹ÒR©”XM®˜ÿ¦¬ÔOlllìíí=uêÔ‰'R©Ô½÷ÞÛÛÛx‚ƪð–`©v??E¦\.Ûl¶ÎÎÎû½½+¦ŸO§ÓñxÜétÖÖÖ‚j±XÜn7U¢,—ËÐ2Ã|×¼vÉÒ`0477¿ë]ïšžžÖétmmm­­­`¥ay …B§OŸ~æ™g¦§§‰<(IR&“I§Óétzß¾}===‹nLÖ´úÉ×É6lõàÖö?Ÿ&¨·CG%ä3ôfÖ±×nkðÖmµ••aÙ¼yónË[Í^Qá3šaÇv+êÜÉ7®µV¯ífìµd}ÞØþò/ÿ2N=zôùçŸÿÛ¿ýÛ_ÿõ_¿ÓÏú¦±×îº …BØo¨Š“GŽ9{öìW¾ò•;Ý·—ÑYâ?Fx%–J%¨‡ðý–N§ã{>l¼HžÇBœÇ!ر­¬”URíw¯Ê²œJ¥"‘ˆÇã,Žý´Óé$E$3¶E$Š0vttTWW777?~üêÕ«?þñÃáð<°aÃ(RáY@D°oT6H­†ÎçiYVDʃ _UUõÀ´µµ!ÙP–åååå—^z)™L8p`Ó¦MF£1—Ë]¹rexx¸µµuݺuv»Is‘Hd~~~ãÆ÷ß ’µ´´´uëÖ]»v¹\®T*uþüù .ø|¾ûï¿ݺuH‰F£’$mݺµ¹¹'ð„2ˆÕÂ.†$‚Œ¶7ÄjÙmäÄóBÄB#ŽÀãzì˜ÇfäHðÒµÑét===ííí™LÆl6Ã7Àå•Ѧ WÃáðÜÜ\¹\®««óx<sºEÔ`¡! P4'TM(Îr¢¾âà ìùï.bF·E–eJ„z ')ðOT¢ ‚Arnàn XiQô’øšŠõ&+¸6Α‘‘k×®Ùl6«ÕFò“ŸÔÔÔÔÕÕƒõò­xšL¦l6+I’×ëݽ{wWWW2™ŒÇ㇣¡¡¢æø®Ž•í#ו"J$y#„p8uuuàqØ$ ¼+Ê §9Â;_5è\õRèðD"188Ç)§o¥ÓéÙÙY€­$ó‡ïrzš\™è'+ ³*„H¬q”ŠþJ\?ÁBzº¹(3›ÍZ,šûœÚÃï«…u¨£Èµø")*/¡Ðî07é5*’RöÄf³mݺi}H©Öét˜¹|Áx©¼—8¹B­[YYÁš?==ñÒëõv»}rrrÿþý---XùÑ]Й* p*¬œ’$=D ¾\YaV®dEI•ÚáeVPO®d~‰Õjê.Y®·6jG‡¾Nä#ÞB¹R˜¯\YaƒóËhiÂú@Âa„Å O€|¡…¶ã4:z–¢_’Ãõ y(Å€¥#{<žuëÖa=Á5i\uuå½Aƒ¢)’’Ëìt:7mÚÔÖÖÃc †\.—H$úûû><55…-4?ŠÇã×®]«¯¯ß´iMyžÓºêàò¬Ì2«hAVVäÞ´¯Kü/~OÛ9Ú&¿xó,¶WgkðÖmµ«W¯b;µiÓ¦;Ý–·š½¢Âg:îŸþ韺»»oE»W”®õ6©×öÚíÕe}¾¬ÕÖÖ~ÿûß¿Ó÷¦´×Ëu?.„x£Uœ|ÿûßÿÙÏ~6ŸÏ«˜žkvKMu̾êgTûEâòCQ쟈~ÏO‹·ù¾S.ҥʱy!D¹\^^^ž˜˜hii‚ Ð4Ê#SÝEK7 !t¯›šš†††Îž={âĉD"ñ®w½«££Ãn·¯J¦à±>@»IF"8œ%ž6šKKKGM¥Rؽ{·ÝnGü°²²244488èv»7oÞ\]]-IÒØØØ‘#GR©Tkk«Ïçš–ËåR©TcccWWׯËåò‰'._¾\WW÷ÐCÕ×ׯåååóçÏ'‰Ÿú©Ÿêëës:P¶N§Ón·¨‡yD­B.(†Wñ­$Æããx‡öY` €'j†¨T®‘”"V/‹·ÊŒhF7Åb1‰èt:¯×[,Ãá0@L’6çW Âˆ±XlppÐjµöööâ“Ä ¡N Ò ýôÓ­­­û÷ï¼2??ðàÁÙÙÙxàî»ï®®®&@:M$(ƒX,üã èõú@ `«\.OLL”Ëåx ¶¶Öl6_¸páøñã²,oß¾½«« rZ‰DbnnÎh4®_¿Þáp¤R)p6ý~¿ßï7™LªBæª^¢_"&D(ý ±OôÔ´'ôD0ÐÉ9QGUØ%P !OÒèß ç 1D¼^ïÀÀÀððp6›››Û³gO{{;çíÔPç …ÂÉ“'#‘È]wÝåp8,K.—S1Âô&)º9AÀ7ˆ0¹‡Æü’®Ÿ3Â1퟈H¥ý"õ¿¶ß¸‹Þ`¦ë4UùÞ¼£P0—Ë---uwwïØ±Ãï÷OOO»Ý®µy~±` éüü|ÿÈÈH6›½ûÁ qˆ86&!pž# #Ò%†iqq‘R&«ªªë´uëÖÆÆFªè3«v—\i‡¯¬¬LLL?~<‘HH’ …B¡ ·ªK‡‡‡Ÿ|òI«ÕšÍfeY¾ûî»÷ìÙ³*[‹›h¯¦m›Xm TÍÇU*º M@BWoCQ‰ i±nN‹Ñ^8{ŒQYÉØ%'§¯k_7r¥¤#­`étzhhˆ Z»Ú<<<¼sçN«Õº²²ŒwÞ—Íf8 —Ëe4I£pÕ“«zñ”C,,R%ò•—7±$Ê=Aõ'¬ùù|^RØgô{<¼"‘HÌÏÏ/..f³Y“ÉT]]&øºjo êŒH¡PˆD"ãããKKK g¢°occ£N§óx<ÝÝÝCCCGŽiiiñù|ÝÝݵµµ`‘cøt«ió_¯y÷ª8ªªV…Ãa ’$¡># Âf³Ùë]&µJ×RR„Õ¸˜šÊ[¸ëòÿ®:|äHBÑêºÞÂ^®¬rël Þº­Fe_ {keeezz/ÚWñuR3}“š\™‰+‹F£G.w*Ë镦k8qbçÎG޹³Í~¥vãUI^+ùºZù5H®ÞRËf³w|ÆÝRkkk›œœ\Þº±xÍšÝj“Y‰:m ££`Úßø‚ü¿\”G(Ùˆü3…BûlP¢, Õ!â¢]eEÌ^Å•| ˜F£Éd²ÛíPÏœ9óÄOd³Ùûî»ÕWù¹VeIÒ˜"—Ë ö÷÷ÏÎ΃Al=ûûûÃáðž={¶oßîr¹ß"ÕjmjjòûýKKKç΋F£+++6›ÍívG"‘ÙÙÙååe‹Å2;;›N§›ššêêêœNg&“™››K§Ó;vì€ Ö.“ÉÇ'''!©¾²²âóù<©\oè—¯4ɉñ0ŒzF˺RuŽ÷±TÍ•HÒ»1¼¥ @+غuëÌÌÌÙ³ggggׯ_¿k×®êêj’vâWÃŽÿÒ¥KÏ<óŒÁ`ˆÇã555Û¶m«««ã]œÃ[Ä)+%Ì´¡#ÿ™Â¨ñ\¤Fª~¢B`€Yy]9Ä`Z|Y{kÕï_ÛRa¸Àw½­<$OOOwuuAîÍh4öôô477ƒÔ©n~Ü"•J µ··#/¨… hõàÓœ#æ²,G"‘gžyæàÁƒápžPUUe³Ù&&& Á‡»ðœM8{ãJ¸7@.$·V]$Ífs{{;j±ám Íf³v@eDšªµ?—Y¥éújYªçâÈ`¹\6™L”Ò+XnÚ &£`ó] ±ñç~NrLÀËJ‚•¹°°€ k—Ë…¢œÈÌ%!mm«d…k *˜8ÓÓÓétZ§Qp^“N§‘šGÅZzæÌ™h4šÍfu:ÏçÛ¶m[ww÷ª‚Ϊu©¬¨ j‡ŒãŪyw=Œòzv½‰ÉÏ´3Nû–¤oɲŒUšÖ‚û1Y®]»öâ‹/^»v $Ìfs èèèØ»w/J7¬ŠÆrG- ³³³Ï>ûìÅ‹Óét.—ÃxY­Ök×®8p ³³³¦¦æ‘Géèèe¹¾¾> º\..uLÄ“·\·ZÁÕÁÝ•œ¼P(aZZZÊçóz½Þd2ƒÁÆÆFžÛ»jo—Ëåt:L&iuRµMWY©Fµ?¡ H“BåKZ£Ìt{ãÐϸ&/³{+l Þº­xËápP™’Ø- ŸþþïÿþNwÆkjüªíÇ»YqäÈ‘]»vÝø"ïyÏ{^ÑMüñW×Úû·û·û·›ùäÍ4û`¿ú«¿ú«¿ú«wºo8»EöSŸúÔ§>õ)Õ/ÿçÿüŸwú‰_ÙŒ»žAè÷`Úªÿþïÿ~½£ŽçšÝjãÈØÏ‘r ˜5BÙTÔÀg¸Ö¯¬0ó¯G}"d + Ï«ò°$%ù ìzB(ªªª¨lÇYè\TD‘¤K¹²L¸¬P< ƒÕjmkk{øá‡Áåyú駃Á`OO²0(îåч¢øV^¯×;£Ñ¸¸¸øÂ /ÌÌÌø|>»Ý~ß}÷566: „è·íÛ·g2™\.§×ëkkkëëë­Vë‘#G®\¹b4Ýn·ÙlÞ¸qcmm-Ôd%Iòx<ûöíëèè -¬©©Ù»wïØØR¥|>ªkI4|K­Ý@SÿK•ÂÿÚ1åll¬µ;i è3BoèìPQ¨,©ªR´‚_À!È1›ÍP.[XX°Z­ëÖ­«««Ãí8AŒÚÇŸþùh4Z__?==}öìÙÅÅÅ÷½ï}n·wÇS蘖õ¹·Ä¸f$OÆÞÛ¤÷D7ñJÈEáŸ4õ´®@È#‡º#r,ŒOdš¼DÁоCËšRŒÜíñWð¹(z_YY1™L+++ÈÍAÅÃl6‡7mÚ€•€r6/è^ƒÁívïÚµ L:£Ñ8??¢"®€LdYQhBh\è:¤yT*•r¹ÜñãÇŸ{î¹ùùyî?ÉdòÅ_¬¯¯ÿ™Ÿù,)œo")òO‚AB²rÐË]bÆ`0øàƒ"óÊ•+Ï=÷ˆ|ñ1 ëÖ­©TJ!„Íf£ëÓÉ!þB÷ƒTãK“‹ÒèTˆ ¤¸*J«.|XW©QÍ©R¸©kQKdF²ãWæ­UAäüZü%ŸÏ …©©©#GŽLMM¡B®Õju»ÝÝÝÝÛ¶m XRHfˆZˆ÷‹P€l°®@ÈL׌5´}r$I‰DâìÙ³G%¡.4`ff&“ÉlÛ¶DD[¦ç¢• -áèo »'Óqõ*¹®y2¤‘ªt¾“Û“+óyU?pÏÇ élbâïÍ™™™çž{z‘TcyyyqqÑáp¸\.€P8¡YŸX1 …B8þÉO~rúôiä%ÐÎårf³Ùív777777×ÖÖʲŒÃ{x&†_!·¤g¾àÓ’…cÁ,+e”鹈:55õüóÏŸ>}:‘HPNŸN§›™™™ššª®®^•ºE]g6›}>¶@(ÊIÍX¡Ž9òzÌl6ë4Ò‡´]áÀ=¡ÏTí„çYÓÎJ°4Fq+m Þº­†äÄÍ›7ßL$¬Z[Ÿxâ‰?ýÓ?}úé§ëëëñ›cÇŽ=òÈ#©TêÓŸþôÿú_ÿ F½^ï .û™Ï|Fñ…/|áNwÆ«´G}ôñ?ðð_þøÇ?F0p“õ(Fã7¿ùÍŸû¹Ÿ»™ß|åDˆ>Ò_¶ \__ß<ðæ‹ŽŽŽ¯~õ«;vìPý^›˜)„xßûÞ÷v(ùÙÏ~öUNìëëû›¿ù›}ûöñ_¾A*'ªc_E©Á«W¯vttŒŒŒÜñäÄC‡Ýÿýétš*'Bh``  j?ÿ{¿÷{ª˜mÍ^»I ‚TGÜäJã¿§¯c,4E¦D%#˜þJOâxß)Òá-aLD+kªòɶßÍãOv»½»»;›Í...ŽŽŽžŸ?{öìøøø]wݵuëÖùùùïÿûW¯^ ‡Ã Çøª$¢Ê¬Xôä-TaœÕHJÀ“îRÑ7Rr¬VÕ í±?‡Á;à”+•Ñ´s_õ3= u¾ §S=õÊÊŠËåjii™žžþÁ~àp8l6›ÏçC¬¥BUŽÞ„PdàIéfjjÊãñX­V‰å“ðÌ/±]](R©ÔàààÒÒ¡HA_½z5•JÑJÅmUþ)¸jÊær¹²ÙìÊÊJ:6 ÞÂ$jllܵkWss³×ëùH(Á'G:ø©ëV•ÎQù€j^ÐòÑT-Œª§#M¾]‹~OA»ÄŠxÐ⦼äÿWu£b±8??ÿ“Ÿü¤¿¿¼*,G333Q;pàè$OÙŽR—ªäÀUx àÔr¹|íÚµ^xÙ*Ô¼D"‘Ëåìv{KKKMM %‚½¤8*ÁA ‡œz©\Y/w2æ‡qõ`!Õiô"©Ã᪂-r¥Ï¢IÍd2ÁˆË†‹„B¡#GŽ;v,‘Hcà]©Tìëës¹\²RS–e ƒÄ¶CàüüüÐÐP,ÓŽ{&“¹víNn ƒÅbÁ+Œr¡xŠ7Ú@Í£4jÕlÂï …B:¦£2ä>K’T,Ž?~ìØ±h4Ê'H©TJ&“…B!‹ÑFÕ™¸UUU544tttx<žb±˜J¥ìv;JÜ å,SàWÅôPrå£Ì4ùNIR$êø´ ®½É(kôÛg_¯Jxknnî#ùÈáÇ ÛBìÞ½ûïþîï~é—~é/þâ/êêê>õ©O}ä#ùÊW¾ò½ï}ïÑG½Þ¥nz]lddnÛï¬Ùl6¢7¿Óµä×W¸Vòmno¥Rƒ²,ÿÖoýÖÞ½{WŶÞÔv3'+wêŽÚð†ô³xLÂu^µ"’„—• èøÕw£3FU ië}'â –ÊšJ…‚iðÀ[-_/rãÿå×DkÝnwOOÏÈÈÈÔÔÔ±cÇZZZ@!á²â2úJÍ&J«¡îjoo‡º9 où|>‡Ã¡BøÀ[¡²nØ£744Øív„m6› UtN[UU ©o‰÷d0êêêˆSƒ M;â«Â[1!b”ªW©?éœväÔÏe¿q P;|ZøFŸÓÅ9¨„G)w€e(>þ›Íf ÃÎ;ÛÚÚl6[ èÀý™Ú©KUÂðZã!.¾Ë‹iR<¬J_" Šß‘œÌÎð…ÞB´Ã“¶x³yƒUõé¡øÔ¾ñB€&o ¸ÿþû‡††©ÔÚÚêp8d£U@‚xQÄ Ó}:‰Èš¤`^ÃQ^ ƒÆ²f±X²ÙìÙ³gS©T,óûý---ÕÕÕÁ`jí£‘Ò ‘§‰ëœ ôIoXl·àK7©¸ÿ:Ú¼uûljj ?ôôô¼Òïþÿñ?$IúÌg>ÓÑÑñ'ò'ÄÏzÿûßÿ_þË™››ûìg?û¿ñËËË¥R)‹ÝàR·ÞúÉO~òµ¯}í³Ÿýìm»ã5›Íö;¿ó;<òÈ­ ÜÍØ+*ø¨µµos{Ë””eù _øÂ7¿ùÍS§NÝé¶Ü’§»ý×ki*>´ñ"x‹§PÑW¨‚8åòÜ%Ú~ñNX×a¨ (Ú¬sf*€W±f±XH¹Æb±€¸T®¬«á8;Qt¡iF£ÑëõR·S¤í;ø­Ñî*ÍÆtcðEeœGpc—–+"$%±¬ŠÊL½‹Ÿ·ËÊ ïÉUqI‰Ñš¸C¢£(Z ºx*Z,ÏÌÌ|Dµ¯`0ØÝÝíóù„¨ÓÇ„{ŒãžÚ€‡{;áeÔYaZqxK墒F?¨z‰÷"R°µ*rÁQñrðå Dת|„4ß‚‹p+ƒÁÐÜÜÜÛÛ{åÊ•ÁÁÁÑÑÑ@ €Ã|¡_°+XCÉt<þþEýFÐ6Ç8±Çæ•?­T¥P‚X’1"Ú2v±eVŽp%Iâ$F ª^'v kT{U+1ÙuM@užAÃÑ(ú0i£HLðKë««þ-ë'–J%«Õêóù ©ÔŽáxÉd2 I’455ÕÙÙ¹mÛ6«Õ ˆ¤¬Çp––Œàs„~æˆ'³«ò…F‹°spÄ–>C‚tš,+ÚÏÔ*cNËo·ªPz ÏZRµŸO%üër¹ˆ@!”t0ú WÓé >†Šcù|žˆ]ù|åê€êÒ“}C ¯Ðï%F_"* ‡Q:¤´2mî-)Ýp¤@Rä0m)½ÿ"¤D‡cÑp¹\===>Ÿ¦­¬è’bŸt²¢Š]®T¹‚±Ž‡‹ 1å|¢P(`•19…Íå••€8ÇJ09ÂÝÐ-DG¢©JÒø´tŒÀ‹8>é"‘—ÁBÊçé+Åb±ÅÅÅU±øÌÌÌL[[›Éd"Â_Óét:ÆsaFã„ ‘H$“I~/zd`ÜÓÓÓèÛL&3===33ÃS_yòùüÁƒ‡‡‡®E£QhÏ“D4ÝÌf3–h«ÕJéÒX^øØ“å…ð{RÃtŠ˜º¬hŸ,Â}€^Ù¸,¹.£`µZ¡GMw«Õй†ëã+xd³Ùd2 ˆ‚qù|~Õ7‚$I™LæÜ¹s—.]* ù|ž‹TŽŒŒ˜ÍæúúúÚÚÚT*ÅÓîø -7@2^( ?I¥R€ð †à) åTƒ6´|…ÃáÁÁÁ¹¹9œ[P_ѽèЈ–yµ“!>é0[-‹Óét»ÝµµµBˆx<>;; +•J‹¥¾¾Þn·Ã+Èÿ9LÌ¡[Õµp6_(Èi‰Æ#`¦ãNVÎQn ±oÝ>C]^ñªÊ&rYŸƒò?‘lÍìì¬Ñh|ÙØ[ULø]»vmذáeï.ËòÜÜj'½Ò–ô£}øá‡ÛÚÚ´jMkö±×žW866ær¹âñø›·Žž¼Vðñ5Û J ¾)ìÔ©S¿õ[¿uùòåO~ò“¿ð ¿p§›óV6ÄØZ­Öêêj’¨ h1 Á@(œ"ÎäbLus’¢TÊçó‚4¢Áá@â7<ÌS!&*⃨„äD% @;QU|B‘µ1§ÍfÛ°aƒÇãY\\Ø´i“Óé”*”èa…Lòˆ”’Px“øŽÛMo–*åU£@I`nDœ2>LªAçûfÁ¶Ô„«ˆø“bïUSäTwÁC©Æ…¾‚F¡°ð'ô€êyIÃEªò'"<‚ é9¹\îÚµk'Nœ€4,Ë‹¥»»{çΠILQÈjµ¶¶¶ž>}ú™gž©©©©¯¯ïééñz½UP艥딒B£v¿*G¬ò ¸"º>ï º×ø½DÌ>»u ß|@¹”z©Zø¼ •‘!§©Ò `˜Q%—o0ðK¸AQ„Òêõz𶈠ùü2“-ãp’Ê')Ì#õnz|í|Pc___uu5­XÙøÔŠB¹jŽDÅW!YA±Ñ]z½Þn·»\.¤z¡ââ‹:ENµ~’‡ª‚.ü„1#¢±PB+€™L†8ž*Ê™Íf pBPΑ|>)1„ñ@‘ЫÉd¸‰Ùl2‚‹€ƒÏFPut:],#Dƒ€EY–s¹@šYƒÁårÙíö¥¥¥éééÙÙÙë½ÔVVV.]º¦ amð¨ïášÈÅWŠÅâôô´ÌÒ<‰T˜N§;FL^Y–“É$¾´F‹R<×ét¡PhqqQ¥ÇD¾j6›7lذ~ýztú„Ö|"ñ ò=äYçr9P“Þ*+zö4ïøR,)bp‚ùÀq³X,´&cMC&;ÞÔ:éв•CCCýýý…BÁjµ=\õE€Yl2™ S%*O•àHõõõ÷Ýw_<?yòäâ⢖ŽßhooðÁÛÚÚ$IÂMѶl6›J¥ÈU0|À¹òù<œ™&Äæu:ÝØØØüüüÄÄ„•Ãg‡N§[\\Ôe7b4áKÑhÔáp PŒÝnGabÇ#„ˆD"f³ùâÅ‹¹\ÎáplÞ¼¹··ßâØ1ßÒÐöƒïŽèœ>,ÄÌ„d–K¹ùTvUñ¾×ÑÖà­Ûg˜^¯n÷²&­v>,„3Vûû|à*ÁõØïÿþïßÎgß¹sçëxµýèG«ŸØ©Ü¤Ý¢Ê‰Ÿþô§?ýéOßüeûûûÿ÷ÿþ߯cç¼^vƒ‚/;šo–¯¯]o¾F»÷Þ{µ¿|ƒTNÔ>ò J ^ÏÞ8•ï»ï>üð7ó7ó7sã»Ýî;®îÿæ5:·ÙlÈŽ¡ßãÕq¢ÊÓh§Å“þøA¢®R¥ˆvZ*°C ”¨6j¼µ×û/?º\õIùU艨„!øS£ñЮª¯¯ŸD"PW‘5ÚOüÄ•Œù–™j†``“\É¥Ò>øªEQÍõm«‚bZxK•صê!¼`'Ût;mS¨Öÿ˜ö[ÚX•,¦Â/´%Ƕpß|>?22òýïÿÌ™3Ùl–´§¦¦æææ}ôѶ¶6ä»áën·ûþûﯮ®ŽÇãN§sýúõuuu€(­CuG¡°Ví=þ°Ä° #OÕr>)`åJ‘#@Ĥ l&Ò[!< ¿Ti÷ð˪@Ȭʟ…‘är9>@x!À‹ß](ae8JL¦ .Ù.3m¡0‰d&¾†hœ3I’@´I&“H×â4OI¡À¨†.˜ÉdHzI;×À×hmmÝ·oª¹ñ¥ùJB¡q©æe<©‚sI’r¹Ð8’)¿˜0;ÒâÓ™(4î|΢a€à%Iˆ“Éd’É$µŸøP¦L&y{R£+³º~àaàòù<`¦²¢W d$‘H!L&ÈG‘HD¯×ƒÎ5›Í‡Ããñ &,Š<Â[Ìf3!)Ñh”Òîhv ³Ù,˜VGŒF#0¯¥¥¥ÅÅE`ªUEV„–¼^¯Íf3›Í@²à«…B!OOO›Íæööv¨¿ã+ù|CÓÔÔät:QÄM²X,€Qˆú‡OŸ>‡µkWUUÕúõë÷ïßïv»‰ÄñãÇgff„f‡÷s8;wîìèè€òýpìžÊ«æ/²97ŽUªªª€o–+3ñU†A ,³Ù\.—³Ù,PWY¡jr‚6] ì-›Í699™J¥6n܈¢‡¼^0_÷K¥üJµª äÂúŒ"*PUãK,˧¯¯¯»»; ËOm6›‘–()rW:¥|3z/™L‚É.Þ år~¸êrM˜šÝn‡Ã„QÊ•µ&õz½ßï_·n]4M&“õõõ<ð^8ÆÃÐét.--Á‘œèt:‰" ¿BWóš*£´«¼HõNCÖÚÉŠ2ÿb”U‹Õ­°5xëöà­¦¦¦›üôØc !®^½ÚÒÒ¢MNüÔ§>%IÒ¿øEü÷oÿöo¿þõ¯Ÿ8qâàÁƒøÐ‡>ôÕ¯~uÕ|éK_ú­ßú­{ï½÷¹çžƒëÇãñ÷½ï}ögv×]wÝÌ#är¹{î¹çܹsBˆ|ä#ÿøÿøÚ»ñ\9±±±ñ?ý§ÿô;¿ó;7ù,·´râ¿ÿû¿ÿå_þå>ðßüÍßBÌÌÌ444h?Ç¡¨B¿¹qÁÇU+'þÙŸýÙ¿þë¿B·ëÍe¯KÁÇ·RåÄ›t¡!hܸÔàªöF«œ(„¨­­=wîÜË>ÂZåÄ×n8ÇvY%í,*u$M ñ tZQ©“­[­° '\¬ª,Cã·Ó6@ûí¥x,D³êÕ8zRV´`Êå²Ýnƒz½>.//S~‡ÊUǼ¼g;ÞçÛSÞo׃º´à"^Ð×(5ƒ÷‰*)†£*ªD'>^«^œ?2t´~EV®”xçÍæoC_x¤Ç‘¡[8(‰¨õÈ‘#§OŸŽÅb:¦ô¼´´tæÌ Wq}“ÉÔÞÞÞØØ<ÂívWUUår9®%±Ä4¡y„Bk"—öq¸ ǃøpëXDþ8‚d*rPÊÐá<}€Tl”Éd2±X,Cà™@1|˜+0‘L&ˆŠÃ[t;¬$”‰˜ z[€EÞ"0Ä ›ÍÄñ-Ù@+“¢b©T:sæÌèè¨ßïG•:*³@ÓL ç(2G8—H$8§_/•J@àÑG­¯¯'XDV˜Dxv¤n…Ãát:M9V0€;²,[,–L&CG«‰D©Tš˜˜ˆD"ÅbñرcHÂÐëõét:“É X:¹“œ N Ø(pHhZSTÀ[HÂ…>"ô‚tµÝnÏårhÄì…‚ÖI’ü.›ÍâFxFƒÁ`2™hÈ „·ˆ$‰óçÏ'“É2Ó‰«ªª²Ûí===ëÖ­„Gɰ ­a²@( –YüFÏ#‡r™Ñhììì^^^ŽÇãÚEÞápôööîÙ³ÇårQ®=pœl6{áÂ…P(äp8öï߸ð^Œ×ÒÒÒþýûƒÁ Î vgYÆ’e9‹-//G£Qþ®×ëëêêöíÛ×ÞÞnµZ#‘â ‰‘C9¾ ÓéÀãò‚ ÈÝ“޳Ãáà$Ašò”jd‡(ŠxRäþ—Yá ‰©øñ®¦×w>ŸÇQfœê±g2"ºbM  ΦöÕ)^îµ®õ|¬ÿª2ÄœE«ÚeÝ`ÇõúÚÚýö^~7oqkii9tèª:µ¢\.:tHÑÞÞ¾nݺŸû¹ŸûÞ÷¾÷Øc}ðƒ¤ÏPíR˜Á`€¶=Hd×Ë7¼xñâoÿöo˲üþ÷¿Ÿ¶PÛ·o. ¸émiiégögmUUU½÷½ï½Ó#ð6²R©ôK¿ôK 7¿ÿýï_XXø£?ú£'Ÿ|RûIl4©²ì<¯P~½S× >r»y·Q™ü–(5¨Óé¾ýío¿©áo* a4*´ˆÿFE–¡=:mž¸¡cI¼+IMƒßŸ4Þ @£Šç© <þ×Þ…€™¥zY€vÃt5‰Q“bÀ3Z,‡Ãp4‘H`-±‘~¢+kQμà ÷‡svø£5 1-%÷i¯£ê=-ÀÄ/¨bKÑ/Åu2íTi¡eEωN|¸y_©ôkTÏH¾G sΚ`ð–`ZÈ“““—.]îÀOÝ«ªª@åH§ÓÈ@!, œ$UÁ‡Ð‘ìqAžœ¨ò(zL ˆe¥PÓé„L’PH@‚U[Ã]€çO”•œqü ÄÎÄ¿ôÒK¸ }…Áãñ!¥$ü5™L^¼x1 µ¶¶B»¯<Uõ¦±Ëjµªà-ô|ww÷½÷ÞÛØØÉ3Rg¼…ˆV«5 ÿ7Êf³z½~ãÆ«ª1`OÎg“É„j¶„Ÿ¢À}÷Ý×ÙÙIÔªL&£}ÅÐÓ•F Z±X …B###ÃÃà Fmذ¡³³³±±Q(d+þž ÿ%‡çÐVqåà8=|IRÎ·è“ø+ !û:&c/”RȇÃb±¸\®h4J£Œ={ö´´´Œ]ï%Wljj2›ÍãããªÝ^¾===÷ßSSîÄ2B0"=x*•}ñÅ/^¼$+ÉðððC=´qãFYÉ€&tIµsÀ¹\.•Jieªð.¨®®Þ¼ys__-ev»Ýív“˜–Ìhðcн^/f1¦ŸO§Ó©+.äÉÿûØcÙíö~ô£«ÞëK_ú¦Vkk+~súôéááa!ÄáÇÓé´Íf»ASK¥Òƒ>xñâE!„ÇãyòÉ'WͱZ³[d:Îï÷§ÓiY–ù—ùرcò'rƒÏÿøÇ?v8oð‚¯±¶ãªöÏÿüÏÚ_¾m >¾R·Éo•Rƒï}ï{wïÞ}§[ñ¶°›9¾“”œ”re1ÊYàÛb™åª’ ‡~(˜‘«…‡ñ´›§ëè”x\íäâ•”¯¤¤káú&“ ¨mˆ©å¢2 Ç96¾e4 dshE—ñKº¶ „¨D‹è¼ŠÒͨoÑŸÄàP)’RQf%À$E¦G•B½A{_Rrž(*ø—Tçûl.aø˜¤”‡çm–4©©\´˜ôÂ)ÍHÁ°R™0’›AWP :<—Ëá)x=Y–³Ù,˜²,'‰þþþ™™m`€®ˆD" Ë”Ñt\”à­•••D"Áeé$E_¶ëD6 óáeYÎår€œHh }(Œ q£$¥, AN‰D‚Ú¿²²yl€› × O²Ù,®ƒú€ø€¤¤ánBTV*ÍIŠ0¼ˆÍb`v;ðàù|žë^ªÖÁbi.ßH$òù¼Õj5`‹ØívŒ ´Áh4Z,³ÙŒ41øk.—ŸššêééY¿~½ÙlŽÇãÔWâ,?`«G~‚8sãÆ.—K§ÓY­V›ÍV[[‹‹@^m±Xü~¿×ë•ed"½^_SSC`œ$IÉdòüùó uuu6lp¹\øi¨ãçùùùƒz½Þûî»/ðPü,ŠçijSN"u#­Ÿø$¸o²¢4')Å+€>¨V9Zg$EìÖd~PVF€Y*L¤ÌTê‰Äèèh"‘À9†›ÏçA™Ä¼ å5´íܹsO=õT>Ÿƒ¹\nÇŽ‹%NÛívQY®WTžmH’Ú ¤Í !Ün÷Ö­[ï¹çž¶¶6ògÂï$…˜–ÏçáWœ{Ÿ‡×Q¬?|™Â³' £Ñèt:wìØQ*•¦¦¦òù|mmí–-[:::‘qÕô—X$3™Ìµk×: …€§èõúÁÁÁéééxòäôb"€ ï#.Έçå~.3A1pðƒBXøè«Ðm,øhv¡P¶ ]çr¹<ÏÜÜ&ÁAs¹\»wïÞ¾}{"‘Xõ¼f0jkkkjjL&Ó‚ÂétnÞ¼Ùív¥³³³¹¹H©|â¿tEKÁÒÒÒóÏ?úôi(»QŸŸ9së|kk+y&Í)U«ÐZx-æô²óù|wÝu×öíÛNçÌÌ –_¤ÄâÈŸÖyx#!8'H'+‚}œÏ{ž¿óùüââ¢Åbñx<ôuZøáùÚüp9¼Pˆí‹Å^vøZl Þº}Ô鯍Ð+²R©ô»¿û»Bˆõë×âŸBüÓ?ýÓ_üÅ_¨4U¾Þ»_þò—¿ýío?ûì³×Ó¹?þ<~ Ž d/———7oÞlµZoܶB¡€Üo!Ä·¿ýí5lë6›$I?üáÿüÏÿ<›Íöôô$“ÉG}ôŸw:[·nÅÏ/^t:---wú!þ{íµ¯gx¥‘½Í >¾R·o­Rƒ×KÈ]³×Ñø.SKŸ!»~‡¤á=ñ£]nZM-Ü@{P™Õ>ãÄ~NŽÝ<ÂlÁ«ù†OµSW5Uu}mÏп± ›O¥RàÈ OGu†½,Ð~}Dd†`,œÞ %ë6¸TêN;‚„IJÕE€;™çì9‘Ðu?ÚA t ÈHS¸‹¼êC„ûÈŠN-rߨì#v,€±«FªÑÊÊJ8ŽÅbF£Ñçó܆¸—”e%AIŽ BÛívY©š‰Db±XUU¤‹‹Åb, %ãS§Nᜀ.…ñ£££/¼ðB0Äx!@B/!ûŒ5äép@Ï 6 Á[x\.G5ÅÐTYa·áj]=ƒÿR؃èQ¥NSKf&„#€|ð IDœ:„âñøððp2™´Z­[·nõx<¬"‰ÑžWÀs¼Å1ÒA—Ú#ø ˜&óóóñx¼¦¦Æáp 2ˆ!&x xAÚ[øk,;wîœÁ`xðÁ[ZZôz}&“¡)ƒD-€'†š¬-µ··}Ï{Þãt:©—\)±Ü[I¡s¹ ¼?*Á†+§R©x<‡ûúú|ðA~9ñd0<þ|MMMwwwuuµÄtÁ¨Íüx€/}ø=ZB’ü²,[­Vø'p@x zž¯·4Mßôz}"‘ŠRá„"”&)T\>Ê«2™Ïç‘n©cY·4G ÑG"áüb±˜L&Ož<¹´´TUU511ÑßßßÕÕ…)Ì—_¸OË)&ÝÆ·nÝšËåfggËår[[Û¶mÛ|>|†Ä¿#"ÉJŽ*9pY‘Û'˜dÂTS†zzLµµµ;wît¹\‘H¤T*y½^¯×K™Œ@:HKûêÔétÇçó †d2yöìÙ£GNMMq)º|>üøñB¡ðÈ#Ô××sß U,zÑÈJ¹ þö$jØp€†»_c^«ör¥2 >I@<^|&“Éëõ>úè£.— K·Åbikkóù| n·[W)ÿD½êv»[[[-KUU Z­Ö»îº«­­ ÚmF£È‘ŠÇ¤cõFÉ·S©Ô¹sçúûûé`€vÉdòÂ… ‡Ãét¢RJĨö30£ÑØÐÐPWW—Ífs¹œÙlv¹\V«ÕétúýþÆÆF(¸A¸KV Ë|"ãø£–J¥–––êëë­V+‰$ŠëûS-HÞ`Õö†PrYŒ#ŠO’?à¾u¶oÝ>C2àÍÃ[ÒMœoƇ‡qòpSé—ÿë¿þ«âž{îyÙ‹kCýK—.ÝxV¨ìÀ¯¡ÛV±5iùWdßùÎw„mmm7øÌ+¢A]OZþæ=öu±Çü&åæ­X,þʯüʯüʯ¼ŠïޢǿSÒò7ã6ü‘?øÁòœè›·7Ž´ü#C…6›Íf³ÁÍà®`)òyøŠŽÕY ‡ÃßýîwÏž=[WW÷ž÷¼'åJRtš9B­‚†9€KÀe†Â ЫÙl¶¦¦&›Íú|>»Ýx ²ÖwôŸ{x`RˆðI‡ˆbZÂS0S°?_¬¦¦&“ÉÔÖÖ‹E»ÝŽ^E¢üüA*wù*ô<`5¾úpA¾ÔÖÉáÑÿÀ¤àðB‹ÅB&OöÔ±ºZœC†‡™™Y\\ôx< ä<ü»\£ZE#‚\*•fgg¯]»655‡Ýnw0lkkkkkCMˆ­¬Ñ~Â5¡×žJ¥àoªY&Ër8N&“¦T-õ˜æèmŒ/_,™¯Ï¥òz½wß}·,ËétÀ7´Êårá€^»èÌx<žJ¥æÚ™Ëå ×‰ÏD£Ññññ`0 1@ªŽ`z—|é¶X,X=°&«Z+ØvKWYÒ‡¯ü´¢ª´ºn­Á[·Ïöuó€åÇþ‰'žxßûÞg2™¾ûÝïþÔOýÔ >ùßþÛBP’QÿW¿úÕÏþó7®Êéõz£Ñ¨âÈ‘#*eë›·ø‡ø‹¿ø‹‘‘‘×1ò_“–¥öíoûÌ™3ŸûÜçVýëüü|]]ÝÙ³g‰½µ´´ÔÕÕ5;;»êБ–ohhÐÖc>tèÐk§Y577øÃ~×»ÞõZ33™L(jnn~Ý|Uiùééi¬¾î·ãvc·ìxvÏž=¼É©Çí#-/„ììì¼É¯IËßj+³ hÒj.úÂ{ú0Wêá,•ØIb ÆÉ×U*:ág‚uT5Q)lO›x"R©Ô(´Æ£J ®Œ1’°Q©x éŒjº“v/þK)ŠT·›²íÀÅ@R¸i8¤E± 5##4Å©T*NC_‰’y¡‘tw𪉠0ˆ£(‘hV4\BJÃE¥àâàp&Ô²²²rñâEP®ššš:::ÀÚÀ“B÷ ÷B› S£»§Óé“'O’•PBnƒÁÐÛÛë÷û år9ƒÁpâĉx<®MdY6™L{öìéèè5±1xSH ‹x m¡Ì;Y–ñŒ€äðuüHù}(GX’äoÐW”HBa 5—"’×ÖAD t²X,B¶IVT¨iNI —Wp¹\~¿¸ŒßïGbQ“p/VBð±Ì”éxÀLÈŽP4ÑùTÂoèAN…×¥š’Ãó5‡JP"NGßèvüvFy@‹Åf³A[é¥ñx\R¸9Ô Âýb‚€7nQVà¶Cµš@ \ %DãÑ$‰å©P9¾0ª8’$¥R©Ó§OŸ={ÖåruvvÖÖÖb^»\.ŸÏ<Iìs˜ŒÖÆ|>?88xôèÑ‘‘*Ph2™ZZZ~øáÎÎNYÑ™âUx“ð•b± ûUƒ Ê“̦žžžP(”Ëåjkkïºë.”}Ô’Y´H“$IF£ÑápÔÕÕŽt»ÝtZÀ•f:ÍÈ0¹\.ðOiraõ&,øÆA&–)šƒ´¶ã5AϲêÓh4nܸqÓ¦M¸ÑÄÄÄää¤6&Eã“Éd8Îf³˜)Råñ »”+Å1i¥ÒUêmÑú¯bû~G¤6©ò ¯6Y–³Ù,ÊS Ù¹\¯Ò§GA ™U‰Õ¾v%I²Ûí[¶lÙ·o_]]¬$£3 Ý Ú,UÉ@?àƒwq>ŸŸŸŸŸ%ÝOÕ}©K9©v#å@ €d/$ÃVWW#ùÓF£1‘HÌÏχÃáñññéééb±8??æÌ™ºº:p¡á˜Íf‡††P9eNŸ>ËåvîÜÙÛÛ«r6:G”+Ç´ØâìD…œªžž‹?-ÎD¹ÅžD5¾·ÈÖ6è·Ï:;;M&H³¯ÅdYþë¿þëOúÓ555ßúÖ·^6ï¹²ôßÞÞÞ›¡ ­[·îôéÓbµy¡PàLÔU-›Íž?þg~æg†††{ì±}èC·²k×ìFöØc½"BY hllU•à¼S¶°°077Çóú¦Z­ÖרáeµZo¶u=ƒäç­¶›qY–kkkŸxâ‰Wm½Ñìæ±­5» ¦ÓzãFû0Ò둘ä¼ÊJÕ9ú íwUÛk,DeV—“€lË.3årÚûr5(:é-+²÷ª˜ÇÔlŠçIDizzúðáÃSSS´ç؄̈§¤R)ÄÉ”@AqvçØÓ¶ávó$äšÑ2³²RÌ »Už'ÂóàdY&nm#TI‡Ö å‘á@! jÞ"!½^Oä 8¤0M,*â@IJ&âFìã9®=¤Â‰&‰–S E÷…ÿX­V€­Do‘*eé9'…‡v„P“ÌE¶\> “¤$Óáë¿PH€t‹dY¶Ùl‹¢Z4_8íVb5Rù4¤år9t…Ùl&}:"á'<`²’8¬Ê,Ã4Ñzš`øyE"‘XZZš™™‹>P__ÿŽw¼Ãår‘  ÂÀ¦§§ü㎎"q™Ë冇‡½^oCCƒËåâKŸ`GÜ1çuÐZ§ÓÙ××’ \Ž:Ðb±ìر$¾šššÎÎNpñãDWŽì“«˜Íf@“*z^Ff³™ÃÇôAÏcÑãʆX- =2Ñ…t•µ,p÷p8¼´´F©*õ 1U‘‹Í—n¾@ ÐÙÙév»WVV¢ÑèÕ«W‰9÷|ŒËàà pê ‘Äsq&r¢ÙÂ')¢ÿ1jÄ> _•º<Ö<`µÇ¹>F#‘ÈÌÌ NqÀ‡šžž6›Í“““P1£Dו••¥¥%œ1ÑÆÝ CSSÓÎ;ƒÁ V¼t:½°°ÇóùüÒÒRuu5(ºår9“ɤR©p8Œ²¸/–(RûÔÔÔÒÒŸ¡|B•J%”5(•JÑhttt”\É yM¯×g³Ù±±1N‹ÅVVVfff®\¹b·Û!˜Édæçç³Ùl"‘@"äììì3Ï<ƒ|alQ0‚y„ …ÉÉÉr¹ A1îur¥z­‚i2лXµ8ð9rH"ŸbI§Õ,~e›ÂWhkðÖí3£Ñ¸uëÖ×o‘ÒÍÃ?ü•¯|åfŠ|Á½Î;wéÒ¥]»vmذáfnÔ××x‹ <“}þóŸÿð‡?\__ƒ¯ÿÕ_ýÕüÁ!îºë®¯~õ«wÝu×-îà5[Å"‘ÈÉ“'wíÚõоÕÖÖ699ù·PèÍRÛñ­a7é6º×VjÍëRsÍÞbF¾ÐT’FœI⸲F5–ÇcÎÑ^cRüóMI,+Gf,'"YˆÊ:&²+*¹:¦ÏJŸ!½¡ØhËÏÆ)R*—Ë¡P )4Ë Š[ð-®Â.I´~ð×X,†“rë{KJ2õ<FÓâ‘•úñ PáŽÐÐÁ~ƒx@Tî½P(˜Íf»ÝŽÎÄï)ºžEçºh$°KIQÂB ‘šÄÑ4U¹Y9·çP B膆¼êëëý~?2!D&“¡78S’$a÷ —Z^^‡ÃÚ¸E‹ÅÐ'xOÕÖÖº\®………«˜.˲ÇãÙ¾}{KK‹ÅbÑ3ãÑ,÷|Q™$™´w„æË¡C‡"‘ˆN§kjjÚ°aCOOÓéö„0ƒ Êi"jO™•JäiG2KÑŠÀ Ñjè—Œ 5OÖРpwªxàt:ñ:#TM,3ˆiÜ… Òíð¯TYc‘]0-Z.íD±Ÿ¹öë•JsøºÉd¢DòC$œbÖ¢ÊÙCÄLÄû²‚n²Bv#ï¢È"”$ˆ†oA_–åd2IØÅœS¬¸\. ŸôÔ²‚éóäbh“ã•>l³Ùîºë.³Ù<== M.—[YY¨”4R„zËJ>W2™¼råÊÈÈÔå¸cd³Ùááá«W¯vuurJNP…P`¸x<Ž•A°J©4¦:nëÖ­ðŠ’qI ƒÏçÃq&¦F‰U|‰yÁ@€YHóÄDšw„±ÒAIhe³Y€ï¡Phqq1ŸÏ‡Ãáp8ìr¹ˆ ´¼¼~ü8ª‚ =™Lá"mAê[ô†Åb–•Ôä4_'óùüòòòäääòòr<×étv»Ýn·S‰`¦¸—N§C•ÕL&‡Q˜eRq”•N§£Ñ(¾R*•–––°Z­Vø6)ñSî† ¶nÝÚÞÞÎ×Þf¾_âGn²R»F®L2åø&»MÂÏp*RãºÕ;ÿ5xë¶ÚÎ;Oœ8ñª¿>22ò+¿ò+ããã?þø{ßûÞ›d÷ †/|á 8ò=|øðÍ€¿ù›¿ù/ÿò/¥Ri||œÿ>•J:uêÿðoüuP+{{{?ðô÷÷ÿ‡ÿð^zé¥#b¯ÝpS þØžâ“„6pê‚=ô?üÃ?<ûì³(^ƒï¢?qì©Óé\.—B¯×‡ÃáB¡pøða‡ÃþÄ©#2 „’×pKíUÛ·¿ýíûï¿ÿ•&RAýáN·½Â^xáÔÏ~#×v|ËØMºÍÏÿüÏ¿–RƒMMM·zYX³7…­ú:Ó) %2TÕ´–¿ƒâjûàÆoLøÑo„æ0S(Ñ/m µ—¥ûRþmÓEe¬ÎŸT{vJ˜Ì@ ££ â™±±1¤'˜ÍæÖÖÖuëÖ#PUUFÇÆÆ¦¦¦ båõzwîܹnÝ:›Í–Éd><00P(¬VëÝwß½uëVh”PJ£Ì•9™‹äl(aŠ~OõÂÅÇ…ˆFˆOA A„Ôùr“œ-bTT}¼%W²oøœA ¥DÔµ EL¥¾pë¹¹¹ÙÙÙ±±±¹¹¹r¹ÜÜܼ{÷îššII>*‹ÓÓÓà(qÃóù<,ê §Ó C¡Poo/âÿx<®×ë·lÙ²k×.àŒ\ÊDå´<ˆ’X…PÕÔ$)N?÷ÜsœššBGMNN^¾|ylll×®]]]]*U)Š6)ü#TeVi§­q÷æô.Ç€Çÿ*”P“Ï,JæB®÷NŒ šFcÄ'‚twtêC<WÅPEbe¦¬ÏA1¡TúX‘þV‘ï„¢œ¥â)!AÕõx<Ñh_JÂö„Aòv˜Mìiâpðg锤ZY©P„d 8 -!7£Žå8;†£­­­¶¶6ŸÏ§R©h4šËåR©ÔK/½”Éd ‚$+Õ*R< Ägzzÿ•à‹$IÑhtff¦¯¯t<¢G¡ÙKáL¥R333œ£DCép86nÜèp8J¥úä£J¡P`¹¸TäC‡ K¥RÓÓÓ‘HiÈ+++ Ð`<5|C–Ïçãñx2™’eùüùóÑhUùÀcŠÇãËËËåryaa¡¬(ßQÿ:$ÌÜB¡ðÒK/]ºt‰û°ê%…eÊd2¹Ýn`‚€™Ìfs8ŽF£…B!‘H€¨ ÜËjµ¶µµz)v’\†˜¼/šìèt:-)êïx’†JV$öeYFö¥$I™LÆb±8N™ Õã!N "ȯ¼b@Š$Á5I’–––Âáp0Ü´i‘=u:ßﯫ«s¹\` cLËårKKË–-[Àú„{ONN¾øâ‹Ðz“* & †`0¸{÷îÚÚÚh4zôèQ*˦2½^ßÞÞ~àÀ`0a¸sçÎõööÞsÏ=f³9‘H,//£Î£×ëE™ÈË—/÷÷÷·µµíß¿!j&“AŸ'‰ñññÇOOOcÖ{½^¿ßo6›:!™LŽŒŒLLL¤R©ªªª–––|°§§'¯“¥Ð›—²8KK»?¡+¨Ø^ª~d‚Ñ7™L·Z_e Þº­¶k×®ø‡À‰Ä+úb±Xü¾ðÿþßÿûä'?ùK¿ôK׫‹±ª‡ùÌ3ÏHJ"v»=•J]½zõôéÓÇGšC¹\noo¯¯¯"¶vð PÆNtUÉê[ÄKxÒ“JJ%{¡$Ò·1â‰Kˆ¾¥Ø›÷í³)-ŽØs:E„ûÿ/¢œþC÷ž >S,³Ùìèèè¡C‡®\¹­Y–Ýn÷âââ£>ÚØØˆ<”L&F¹KpCèH8€Œêêꆆ†}ûöÙl6óûý@€Z+*åix°*¶KðSYQ"?vìØSO=5??OáåÊÊ DÐL&S{{;PHÙPȃów¸—R<­ðy‡ÀµP(ÐÙ!é²`$Ú‘zW+„ Ñ(âÜø¦üQ Òƒ¥QR2¹´y,µyOüD*Alœ ì õ  ´.35e¤pÌ2ä@-//§Óéx<îõzi–a3Ie"%V"hAz¥\ü‹ì$¡” !‚ƒ’ˆØs¹ò0Òé4¥Èƒ p6ñecäTAŽJžIuI’‰Ä¹sç ˆ”+€pE€èÉP(422r=å`ij³³‹% …Ãa$©‹Eh-Q*t6›O&“’"ŠÏ{lvv6f28–)ʘ†úÀJªÒ¨yÁ|áþÿ)—Ë‹‹‹:nyy™0S €;w:´Î`Бàf_6› ‡ÃÅb‘ò…áÝÕÕµcÇ$ëq0Í^\\ᣪ Ä8¦,<އâ5®.•J ôbm‘•Š˜>£££GŽÉçówß}wssó‹/¾‡zè¡ÞÞ^d¾cL J‹D"6lxàO‚Ìf³ÃáX\\DblWWWww7UiˆD"*U뻵´´´µµÅãñ©©©K—.©UŒN]]ÝîÝ»»»»Q¨¤¶¶ÖjµƒA¤´CK.RH©¾zõªÉdòûý(͉eD’$01étºÚÚÚíÛ·7559N§Ó‰“!èî‹Åk×®ƺººÆÆF:í@¯bÖó…ZÇŠ· žÅ?Cë§`¤uÎê(?u ­Iq+m Þº­ö裚L¦žžž—ýðª/€~ô£ýèG_Å­éj_ûÚ×¾öµ¯Ýü:¤ãPuñfìýïÿûßÿþשóþ»^åÄWaxå!ðï L%ÿt½«½+'¾øâ‹/Û]Zñ©ÚÚÚë}øŽTN¼u™’¿÷{¿÷{¿÷{·®å¯Ñ^V\ïÙ͸Íý÷ßGÚöF°7iåÄ[:I_‹­ ¦¬j6sµñòKñ=ŒÓ4äJÑ+j‰*æ(™Žh/Ú›pQv–™–Ð@‚•ëB¾ ¨ÕÕÕõõõ^¯ÐÌØØØââ¢Á`Ø»wïƒ>¸~ýzhHI’d6›«««Ýnwuuu:>wî\&“¹xñbss³ÃáD@!D±XDax’ÊÒ³Zc‚ I•Ì2“!§Î!Å\NÅâß’Xå,©RòŸãe\¼Q7Ç/xGñ^å˜#> ávI‘z)—Ë`4€ÏÞÄüã£G&“IÔ²Ùì /¼àñxÞõ®wõÄ®‹­[·nÆ ããã¥RiãÆ¤½ƒžAKêëëN§Çã ƒn··ÃõQû‹˜§f³¹¦¦01†2“É$“I4@…mQ·@Ò¾T*áìDÜètºêêê½{÷îØ±¢iB»ÝŽ1 ¨o`·Û‘!=I’ðò¢Š´k¼(ɹ\.LÉööö;wVWWÃs(‹¿¦¦Æf³uƒ˜ËxÒVŠŽÜ$%c K¾ð=•®RQbThÕWø K§T­ÁÌMnù^­Á[·Õl6Û/ÿò/?ýôÓ7oi7»¯î¦ÿüÏÿ|êÔ©/ùËŸþô§ÿñÿñøñã›6mzEWeyvvÖåraîݤE"‘ù—ùÌg>óúö᪕…Ùl55 ÿ·´´„êáp5Sãñ8’–qÊ”Ëå0ÁP#“É`Ÿ„³,:¤ñ!”­<]`g€½‹P’¥«ru3†óÕ[*ËÍfé¼bUã•eYþ¾ðÇüǧNºž“Üþʉcccííí·‚½ÕÜÜü›¿ù›¿û»¿{+ZþÚmÕʉ·Á^ÖmÞæ¶V9ñVbE„vª®†t.òÁ±³'òl¹RŠ›Âl—…²¥,Î'!!캤J5_¾¥+)õ ùP0‘"4d´É£x¦‚Þx„¸'í8P R,‹‹‹]]]=ôІ hÇ\VĤ=Ϻuë|ðÁÅÅÅ‘‘‘………#GŽÆååel U (+jAÚ_Ò(èe..“ÌÅ8ã%éXu9ÕcR÷’¶=‡º€@WP“tJ:™%‘q E•àJ466"ÐÅØUUU$ÊÀààà™3gÀÌ ? …B×®]‹F£>ŸÞp9¹’T…Ω««kmmÕ+Åþˆ£2Žø=‚Õ••L&wob¸2²«8O4¡ŠÅâ¥K—®]»ÆÖhÈdYž››óûý²’¾‡T¢Éž'C- HƒBä¡KñÓxàV±X ‘9>ô>†±xj4C¡pŸþþþl6{ñâEì‚?Áˆ¸aµZ}>Œ*²,Cæ™âdlí(ð&A7¯×‹ÅFGG{{{ …B<ÇãŠ""‰N§Ã>@Ág” wùòå|>ÿý￾¾;ð Ú’ “¤ä#Ï p³¡òÊÊJ<åT*UT a6 '*GÊd2‹‹‹X…pGp£R©XE‡"Þ¤ñ¨dˆ!333ßò¤?¬]Ðö&n&ñtðª5i±XÀs‰F£ ·”Ëå­[·vtt |ULË,‹a[Î'‘¬hämÞ¼y÷îÝ.—K’$¿ßOã()úzÜëš››Ÿ~úiƒÁðîw¿À%.ÈÓ åÊì*š_|á¥%Kª,ÓÉé«/ÎÎÎ...nÚ´içÎ:¦å”ÍfáÕMMM@hžêtºL&355566VWW·aÃǃåëÛùóçkkk›šš²P™BI!…µ”e9 :(b 0‡)OY´p6@ç4»«Ri1§×™Ýnïìì¼ï¾ûêêꀸñW±#C¡ÐÌÌ –M·Û]SSã÷ûÑøªª*·ÛÕ ¬”$.³‚ ³éy;¢j')Zf”LCiŒ4¾€~Ün·ÕjEŠŸÑht»Ý¡P¹±p]¬Ä#áK"ÖÉLÊ7BB1DltJ=>‰e“Ÿ]úƒÞÀ]L&è{¸2žÂl6×ÖÖîܹðn!Ög"‘ÀÐL)+Ò¯)—Ÿ tJC‚¿¡ž¬V+!þØóØívŸÏg³ÙÊå2&>½ÇiiRUÌÀ-èDŠ{ðÊ,}¾¬dO3KTžÛ¡ÿ© s©²Øô-²µ úí¶üãï|ç;ÿóþÏ7‚¼j` †Þ—¿üåoûÛÏ>ûì+ŶЀ†††Wú-¯×{ß}÷½NÝöòf±X,  ýWg*€,£âl"‘ÀQR2™„Ê ¸åÙl‡6`ØÆb±ÆÆÆ›V!Ä­Î=F·Üä'©jÁ׿þõWá$köV²5lkÍî¬%“I°´+*N,‚Á ÓéT<ócjï€øð|—¯S*Öñc ÁÎ'ùÝ‘$ˆE›ß—4HsGª¡PµÿïNCƒ!:Eê“Ñh„PBÜÅÅÅ¡¡!£Ñ¸k×®uëÖAp„˜)´Ou:[¶lXXXH&“§OŸnhh¨©©Áe-Kgg'°½R·›ËB¡7Hÿ›P'I©ÅÆ?I‡ºzV¶;ZB£ÛÚ’ºå8àé(… B€MaÏ>£*Â…ž7™LH|CdB‡êT1Àøø8âsÕ@”J%l±FüÀ‹íàÖ&“iË–-RéYP·+‘Hà+ø+G<©†=$º¶Øl6»ÝŽÈrÔ³³³@Ox!$Ä]ºt ƒÐlÁúÁ~0??OÇõЬAÚ ¡„èI’ dèA£ÙD‚V+‰(Ë2Ј  ŽðЉÍfmP§ÓE£ÑR©411ñEô Gá“ÝnGƒ‘Ççp8€t¨‚æ´$IÈÍ!É!! Ÿ÷Á£QùKòÿ¸5‹êi³³³uuu3« I Œ·%l Ë¢åd2™N§C¡ÐÃ?ÜÖÖ4òp1À&€Æ; †T©øW±X\ZZzî¹çB¡Pwww{{»Ëå¢Ñ¼è*‹=ÿüó+++»víòûýèdˆÀ1›ð88s%@SÅçÂ\ÀB‡²­¡PÈçómÞ¼yãÆTÉTb©Ä´ ¦ÓéÓ§OCø\Eòûý[¶l¡ührcª&)¼×r8…BK"á´>\oÉå(ŸÏåry½^N€å'U:M ’·£õœ'rr}:tèÏxÂEÉçÉaðWét••=TïhQÉkfµZ!ʼaÃÔAjakkkMM Ž °4QÅ¢³˜‡Äš†Ðñ÷,VÅ2ø¼E½g6›ÝnwssóÕ«W£Ñ(|Çcò×¥Äu¬p° ß$2o W—Y‰ú/%¨pÆ!Ë[dkðÖí¶ŽŽŽöööçž{îᇾ=w4 O=õT8>wîœÏ绫My{#ÛkÈÞ¼véÒ¥ÿøÿãåË—?ùÉO¾^‰Ÿk¶fköF3¾a}#¥5iøl66âªý·ÐÀRá¢6¶’tî­c&³1NŸ‹" -"”ÓrÎç“L¹2i‘Ó T4mÚLÓùp>Ÿ‡€‹`L%½^ê¾¾¾M›6¡7ªÃËJA+dzqãÆ—^z)•Jår¹ÉÉÉÍ›7ïß¿nngø[·n%¹z\œäŸ…‚UÉJýGðq~///Çb1ðÕ%Ef'Ò¤þƒë ‘¥rZB"4À‚H4Tìá:¶õ”G o!Ll£ñ§b±877‡Ø#›Íæóùééé¡¡!óóó—/_æ gsD£QðØ‘c;.3uaôFuuµÁ`¸rå Õ½›ûÂ… ‹‹‹?üáÛÚÚô¬,=«ªª‚„J4 …BZFŠŠÁ`€z÷òò2jc,ÈiÑiD_u¦Ë² …N:…¢ ƒÀd¥ r‰™Å9†È|þEL"x5W›N§ÓUUUh88‰D:;;‘Ÿ…™E¸¼^©•F­%Ø…Ü „2ú F'‹ÍÌÌx½^ÔünÂ!ÁxŽz½ àƤ© ï»ï¾uëÖIŠ9÷ä2+w .Ü ž¬ª5¡Â„&§q!Þ“N©×IË>áe´˜~ä÷Õ)^±fì®gånõz½ÓéÄCÑMï˜Ä8³ü)Ч>§äGþ¾“*y¬¨¦¥*›ËÑg «ªªš››zè!Ôs´X,Èô$ZïFôÒÅ‹Ÿyæ™ÉÉIÌ>!D<GQÈx<þÐC­Zh ™Ífž}öÙ™™êpƒÁ`µZÀ¾}ûvî܉³šªíФ0æÌf3ÖdEAç¼ã]CtNrB΄ձªŽ™L¦T*¡€‰Äx©ôNY•md6›ëëëQˆ l)ð·nݺ}ûv$Q¶éââb&“immžŽÝ‡Xð%U2~YQUÍG¤úÒk×áÄ4£Ñh·ÛƒÁ ÍfÃ)©¹Ñ†‡3L¹ûqÿ—Z´ŠÉo`§2Ê80À|)+¥EÖà­· }éK_úå_þåûî»ïö§ëêêúЇ>ôùÏþ (|¾foûð‡?,Ëòž={¾ð…/Ü鶬ٚ­ÙÛÝìv»NI'TÑÏŽƒ®²þ áVü°Z0ÅqlÙù¶Œ8ó0~ðHª¨D¤B ‹kòcmžÉË’ðý´ŠbÃÏÒ©2“Ž‚‹Åh4šH$Ê•2äBŸÏ÷ðÃ;ŽššR°-–º à `O>•Ëååååk×®õôôôôôXK¥RÉd2›Íêõzžx«ˆIf\^^; tÁ|>Ÿ^¯ÁÙív£b:tsÑ6D¤ô¤8¯&å&Ü‚VBàÄ›B\HB¨¬­ãªIÅb|·d2 ¨èâÅ‹©T ÀÄÜÜœJ¸Š["‘8uêT C hV«µ®®Îd2A·9111::ŠF£òD5´ÑÑQ$ß!KÈ ˜btttxx˜k?aˆGooogg'¨7ðT§T Ã@ŒŽŽ¾ð $¡-XJÄôz½è(t5Q·‡ÂoðÈÀ•ˆú„Ç_!e%1õ+‚;¡bƒä8x¾Õj…¤6„y¸)¢;½^‡ççç7lØ€'¥F’{H•¢uzVϟE4‚P"ÍçóQl! $ J™)îˬÂ)g îv p:À˜ˆÝFÙUä9$6Dø5¥RÉív¸Äš¤'î!-&“ ­å$ À|@4Ëâ¾àÐaOz ð‚2é[\^ƒÈ"“:ýf~~~~~~Ïž=µµµÒj%>…»–ûÜÚÚºaÃÈ“¹Ý¦®®.§Ó©Wäó© |%ç˜&_CTÁ6™$UÔÕY= )|ñ÷‚`À‘æ(›•¿ ö"8œ D!e„o‘WSþ.NIåô¤ÄÝC†l¹\öù|HB } Ãup;-™zf³Ù ƒßï_¿~½Ãá@ƒm6›¬”·£Ì}ØÊÊÊøøøñãÇGGG9 PïÂÂÂààà¶mÛTÜ©’þ‰Dæææèô‹I2™L¥R\kL;vü}„„M B Ñ[˜£ù|>‹Ã…%‚–šÎVVVÐ'’’DIiƒª®À CCCömÛðšÃºgµZALóz½€º }¶#±Ÿ°œbБ9„— ÍfÇ‹Ñ.ˆž‘6*àá]‘dšž‚éȲœÍfÓé4Šè˜h€ŽgàtËreiޝÑÑ)µDd…LMýF™­*öõä+Juz¶oÝ[·nÝ?øÁ?þã?þó?ÿóÛp»ÞÞÞ[-^¾fov“e¹¶¶ö‰'ž¸¥B`k¶fkö¦0¢h†—ý.}ñU7'{Ø ’ü„PvüÈ`Â/£Ñ(QIâa èÊLÀ{2U áä)E[j3ÉJ"JÙJèÂw«AFýÃùbüôž€½/48¬VZôçv€IDAT+èK‹‹‹¡P(F"‘åååÉÉIW”m„ëCsœ‹éééP(TVô¼ÎŸ?¿¸¸ˆ5L&hSUUU‡ƒ#}tÂ\.—S©T"‘ˆF£(ˆ O=11qñâESƒöb0HË’ | p¢N “Éäóùp < RÒÏH’”J¥‡èÂår, ˆP‚U4£P(ŒŽŽÎÎÎ !@OOÄ}ÆÇÇÑ·`«Q؃ïnܸ±¶¶Öëõ"-hݺuÕÕÕ€š Àã„r¨Ž˜ê…^( ï|ç;€Q1ĺÈ»víZ,ƒ;ñ—J¥t:ÝÆý~¿ÍfËçóˆôJÝIÄ?…BÁétž9sƒNzÆÿ¶lÙòŽw¼£½½¨×SÒ\Îf³E"}e¹¢)h Mš•ð7+Ð &€€êeEôöhÄø1—)þ§Ÿr A4È5qȵ°‘ƒá+è44ú_BÉ#ënJi}Z¹ ÏøFF@ý))iJœ¼À£M@T*‡èf  Z,ªÈ3Réé¨Oªªª@p£„J\“ÚhŠÎ…çi\ZÙ;¡ t|M¦x•bÝB¡044T*• Ë!ÙDÂú9ý`zOO϶mÛ(ܵX,`u©˜ BƒË%Œ(xÙllÇU_^‚a£’’E¹Û4L*Žê:´h£¯°cÈÐíBhóQו•OcŠÄKDÏjžêÕ§r¹œÉd®\¹‚ª»*ßÀ³D"‘h4ŠrØ2G÷bÖBò8ÏeÙív×ÕÕDEœ8^¿•<ŠÔÖ2™L¹\N§Ó»ùˆU Y¼ â§âŒxFà’\‚Ð ÇÎÍ4 |>Š!"½Wa³Ù|>_.—^wV6N×ÐЀw%ôÔðÎÅqV$<›Ò‘¢Ž3¬œ¨ 966í³B¡066vìØ1Ê ÅCaçÍÍ|>?<<|øðá®®®-[¶øý~ÕY ÄRJéÕ/w›vDü‹4Ad%‘–/¡4õÐlzMKŠ\׫ÞÞŒ­Á[wÆ>þñ?òÈ#'OžÄ~ ;NZ ›ššÂáðk‰ ÞÚö:VN\3²ùùùTKä¶V9ñvÚªœ¸f7¶êêê7cåÄ[d«òö_‹ñØR6ñ’R©433ãñxÀËPâÅ ø†N8ùѺÌ*«vuü"<Ö’5ªó0Ú+Ó†Oux.V Þ¹¤Ê ºl"‘H&“À C*•:þü‘#G JHž4Â)§ èú çÃBá»A× $Ò‰§‰Šý„R|t² ŽFÝ‚Ÿ[@iøB¸\.ä£Ñ1¸ÙlFÚõ9AÎ*ßMOO×××oÛ¶- J’´aÆh4zâÄ lÀÀ ë~øáŽŽ‹Å‚øÂ4ÍÍÍÏ¢A¼ ìÚ‹Åb,›žž. ===n·IÚ+¹\.™LÆb1â ñÑÙM§ÓAèh#¨Ix|b|8#‡Dô1µ‡zhݺuø®´†º]z½> år9ÇþB!1(xû ð•ÀÊ#¾Š)ÉM¯×CD陈ˆ9;;‡#‘H<·Z­ÍÍÍÍÍͤn^R*–Òx©@a> Ãòòr$1M¬F™,·kÕ‰ ?D$L_Q­ô_ZR¨·ùõÊÀ½%¥€†¤@…ȤF0ê ýODu-´kˆP`,dÚ®ú™e¿ªþÊûî‹6G£Ñk×®9N¯×+±êdŒ“eÙh4‚Ò­%À‹T”‰ž‹g`‘v¡dçr¹H${Ž?òN£ñÒ)ŠB|5–9!m­A’v"–VI©=Jõ98ÈA4ˆÇA)Nçóyªn BV>ŸÇã@áñ°ø.y&¸±€6P+„Ü’RÜ“€9,A¸`&“I$TŽ“ŒFVW)²F“…tiбƒG<55ÆPyµ‚!…B!£ˆ¤ÌR/ ³.#˲ÙlnllliiÀ‡<_½^¿¼¼ gÀJN@*Ÿ Åbÿ8´0 sss‘HäÒ¥KétoIpÐr¹\,[\\Ìf³ãããýýý~¿•£gB^yppÿ:ކ†·Û Úòòòììl™‘• €ù[^^ŽF£øS$Cvrr²¶¶Z~8 ƱÓääd4ŸŸÿÞ÷¾‡DEP½„R)8 är¹k×®}ç;ßAâ!>€2dŒŒ„Ãa¼ú ÓÄ‹ž ËòÌÌ Tà-Y£í@ÿÊ×Q±à~NÓGVHñBQF£Mx2ÀSÚȉ[ikðÖ1I’¾ño˜L¦—^zIQ.—ÛÚÚþëý¯ûØÇ$Išœœ¼Ó \³·‹¡râOýÔO=ýôÓwº-«ÛÛ¹râš­Ù›ÅÊL‹ôµ#Ý’¢üJÚº«îºt:ßï¡Oè„Åà„B LN ±¥¹ñ\TT´Ñ§€šJ~Y£R¯½ˆvãÈÃHÎÔ@ËÙHJ.Á`Ð`0ÌÏÏONN¢–9ޝM&“ËåBŸpžÁÁA앱MojjÚ¸qc>Ÿ_ZZòù|¨É…Ãmô(KÓÓÓ—/_ŽD"ĨªªZ¿~ý¦M›<1 t=??‹Å‰„$Iµµµ½½½[¶lª®¬kÐN$¾—˜8nqøŒ‘eÉãñà+ð€¶€O„M6m¦©·‘ºU.—s¹\__ßèèh$±Z­.— ¢¿N§³­­íüù󤹋ñr¹\{÷îݰaŠ‹a˜ 0²îK®BY]h?:Ð’Óé~$1ŽO©TŠÇãˆôÈI;0ü!” ÷¤¬WDú $’eÙn·wttH’„Êz}}}»wïÞ¼y3féÁ‘³ñÄ+L¢™™â¸\®úúz‡àvƒAÔP#õeBÇ´úDZ GT¸ ÏååešSøk:~ñÅ< …PÛšä™öíÛ¢ÝH0ü…c44CAÖÈçó zÈ«åÍQŽ œ®Æ/k4‘Å ™Ëi×Q‰jQ*®L(ò8jL\3B–µk¿µvÍä ‹j4Œ²†ü²|ÙQ-z„’Óƒð•Âvóóó÷Þ{/J¡ðmécx‚·J¥)Áë”:k´„ÆÉAü¡dv´€ŸÓé4Jv !@–¾B«1‡±dEJ åáò¦’ <ˆb±DZ‚a»¼¼\ÅLRRS%I* H|‚¡vÄôô4Ü©©)*ºG¹ÃXèL'„˜ššMLVÊùiãL&RêÕ«W!xâe7£CÀÇã gÏž….3VZ4Éd2—Ë—ÇÑE4–W;Ê­£ÑèóÏ?á €¾ø …P($„Èåróóó@ß(»mjjÊf³©R®äPãóétzii ÕWGFFpüóÔSO!óŽtPLï£ .LMM!­›¼-G‡çr¹l6;11‡‘9øx‰ñ GJfî3Ï<óâ‹/Òœ* KKK™LæÐ¡C£££€üpCB„ýL&îÕÉ“'1ð*”Rª$IàöÆãñ‰‰ Í´ÙlD‰×Ñ}ù†„Ÿê¡'qìÑÛÛ‹±–4ʤ¢òXQ5¸«îîøÏœ«®S”ïéô‹ö`ðC‰Õb¾E¶oÝ1óx<‚yØÌÌ̯ÿú¯?ÿüó=öhÉk¶f·Í~ögöN7aÍÖlÍÞÄVÖˆC½F“˜Þ3U‡ù^¯” @%%¦ÅÅÅñññêêêööv®,ÃD´1¹6†D,$„PÁ[œîÄ£b Ëu'm/QÜÈëÓ˲‡!~är¹ìv»ÉdBÒ\:þÎw¾3==]]]ýÈ#ÔÔÔ`[ä»[ì¤Óét2™ÂMÍfó®]»š››O:•ÉdL&“ÍfÛ±c‡ÛíBÂíår9>÷Üs\†Ìívoß¾ýþûïß°aeâ’Éd$ÉårÈñù|~¿m¦¨€'Žá»¤\ŽLŸ\.711133»Ý6“Õjݰa2Ú€¿pTªL>¥! ËºÝîÞÞÞ£G"bGp«Óéìv{uuu___UUðNgGGÇ<¥:L–L&óù<ø5´£d"‚iR]]Í+pé”B]UUU¨–x=çÇ'  ŠLu™MŠTVmmí»ßýn¿ßü¦¦&›Íf±X¸DºŠÏ"XÐR.————Ï;7>>ʆ?¯[·î=ïyDÙù­¹ìåÖ]o*©`¡:ˆ-IÒ:{öìO<155²¾‹ÅR©”ÛíÞµk2¼x~]–Ãäår¹®®[nÞÂ2ÓK¦[h€!Y‘‡Ïd2¦¿jçuY©ƒ&*2Î!Þ‘ÍfIK‹üsŸWúI>Oø—ÖmÄjœ/¡èÁåäJS5UªÔ1äœ8´piiÉáp Ê ÀqŒL°cd·QB^³`Ì;‚Bd…‡µê:‰W¹ÀƒX¤õYf\3êUI©–¨º8)ú¤ÍfÄì¹l6;??ú’ÛíÐV—$izzúÂ… ^¯7 =Ö €&‘H$•J=þøã^¯w‡ˆ!Öo}ë[ä<”§†D9,bÈwÆ;11!)\câQrïE÷NOOG£Q,M*Ì‚>œžžŽÅb`*¡'±ÖQMOZˆr¹tµÞEo.”˜àü;r-–¤Óiø0PN^“¸àÀâ%ÎÉqø–^¯ôƒî‚¶€,Ë‹y…˜e #Êçóµ··ƒNÅÁqP)ËåòÜÜ\.—óù|---xg™L&œ²4´Ùl7n ƒDÇãSZt.—s»Ýv»½¤Ι° /¼Ô¦¦&`¾¤ƒiµZ«ªª‰Ä±cǦ¦¦6lØpÏ=÷@õÏn·gF£gÏž=tèP<—$É`0ÿ¹ ¸±N§Ól6'‰óçϧÓ鯯Æ}ûöuwwû|>Úf¨^ œâ§Z$Æí ¿Æ ”F:çгzärtByëâVÚ¼u‡íðáÃÐg=}úô“O>ùï|'—Ë=ùä“kHkv{Ìf³¹Ýî;vÜ醬ٚ­Ù›Ø^;ª%3’í¨ˆir½›b£¦Ê¼Êv qW$YXX[„ßK0’¢VUÎ?CJøÔ 8"†OÑ®Né M:¤êñµ¸€™ÀÀ9²Ûí^¯w```qq1ŸÏƒ*ÕÒÒUZ‰1ÿñhÉd SBˆªªªººººººK—.]ºt)•J…B¡B¡°aƺº:¤Òq@’$DS©T (‰ÍfÛ·oß;ßùÎúúz‹Å"±¼0!„Ãᨮ®FtDZ<ˆÓp+”´z| Õ–*—˳³³Ï=÷Ü…  …žˆÕj}×»ÞõÎw¾%çTQ7OyàgѤÖÚl4 är9(âßu×] ÷Üs,Ëf³ë­V+"(º,²oÀìà¾DžC¼!„¯ÍÍÍwE%?KÇ*µqW¤~ç‹òÎ(Â$tƒú`Ÿßï§ô=ˆ1a9"Æ}˜füÙï÷¯[·nyy5ˆ øéÁÄ&±z£re…8ŽÑðgäSC0ø#ŸÏ„Js^xazz1! gff^zé¥ 6øý~Ò0Âõy¡OÕtÃ3¶··#õU( #ÊD&12þÔ9¢T2Àè2Søâ)ZÈѲ@Ij¢êàHЬ’¤(ˆbEòU¤LæÑÒ†J&ÀN°¢¡¡6 Ö ´I- G¸-A|UÁãñ¸Ç㩪ª‚z7ÍG„¯È;ã0—d2955USSCÎsI@D¡OŠœQ†¢X,F"‘±±±l6{öìÙÅÅEYÑ}'>ÄÞ$Ù†æá—@OÈ{Qä @< :•Ñ\\\\ZZZXXðz½€EÒé4hq.—ëêÕ«€EhÆ™Íæ•••……xN*•B>#Ë›, øžø½Ñh„®b6›EÉŽ¡¡¡‰‰‰žžž¶¶6 Q”‹M¥cq˜1<<<88ØÞÞÞÛÛ‹õ‡Î'ÌF£333ƒƒƒ^¯wÇŽm´âE Á†(ØüüüáÇgff¤ÊôO –Ñhܺu+åbs ƒ€¤X,vâĉÁÁÁ–––‡z\-Z%IÂ’«S*ÃÊ•e=‰â4??ÿüóÏ_ºtiÓ¦M( |àÀ¥©TUUµ´´ôÔSOE£Ñ‡~xëÖ­úÓëÚËåŽ?~øðá|pÇŽ|$$úàÁƒËËËëÖ­û¹Ÿû¹††^B”x0 ™LÆn·;vlÛ¶mû÷ïW•#D²X,ž>}zyy¹¡¡á§ú§QxìlâÉ¢e4Ý´iÓ½÷Þëp8Àc…ì#P­ùùù .TUUµ··ß}÷ÝMMMÈa,³Zœóóóccc™L wHT1ù»‰NèO%Vo‡oè%¸L&ƒSÊ„%XY(Ÿ@âV-@ñºÛ¼u‡mß¾}øáãÿøç?ÿùÏ|æ3_ùÊWþèþèsŸûÜnÚš½-ÌétF£Ñ;ÝŠ5[³5{cÙ+…«ô¯¹2/µÍ C`ÁôÚi?'*ÏŠu¬$¢ÇãÙ¼y³ÏçC‘5ÁR´`o F› Œà }ŒpÁ’¶d%s‡ÊÀñ¤“vQyJŸÑʇá<\(‚ÜØ "K&“²,ÇãñX,Õ$ÏsEZD¹\ž™™™œœDtg0º»» ÃÈÈ‚R!ÄôôôÙ³gAJÂõ±Ïžžžž››Ãup¾mÛ¶––’'¢\.ShGçð«–U™i?é”ræˆF»ÎÎÎ.//C‹ Œɫ܃"¾u&±$ĨÄÂr‡}¹Ó鬮®v»ÝÕÕÕ>Ÿ‰¬èjá“äF£J.*âŒN©wŽ„£øŠ‡B‰un·ŠìäiäV«µ½½Zcè[|…c[0¢Š ¯Ð3ˆÉÿñC™U¯#$×/ õõõСGÝ€H$®ÊÜÜœ¤H#ÓÅÑ ¢;OÞŽ ÄØq'GŠ“J$.‹š‡žšš&°ƒwr±Xرc2tR!ìv;€š²" ¿õx55•N§øÃ"ä¦yŠö“<6áMF£1‹e2™þþþññqðmÒ !ÐWñxsÇh4Z­Öt:ß“`_.—Óét€½@<HDè–JˆU‘9®@žLyÄT$?éÀl…Ø:P•D"qñâE—ËÕÛÛ ©¬¥¥¥ãÇ—J¥Í›7wtt ž#VQ4xÊåË—9 8š-üpppðСC]]]>ú(DëiAfqzzzpprWmmm+++Û¶mëîî&|.Dé½€·ÇÄÄDKKË®]»@âÇ-Ùx<>:::11áóùvîÜér¹t¬¼9-8år¹±±qvvBT´¤ã1 ¯mmm¼R½¯Ñ€d2F'&&êë뻺º¤õ½ZfÊ•„|‘J«««¨©©ikk»|ù²¢»»»µµÿ”l0 õÞØØè÷ûN'V oa‚{½^›ÍÖÚÚZ[[ ýAÌ;§ÓÙÒÒ‚“0­ˆš„‹P¹$I…B¡­­íêÕ«>ŸÞ&BChÍår@Àáp¸Ý”­D*=½#ŒFcSSÓåË—2â üêp8 B`·Ûïºë®íÛ·×ÔÔ‚$V°ÏÀh#ð_çõ.xóצ˜ŽCøˆJTš„Ò0a±röEJ²×ëÅŒ£­Ú+Ýa¾R[ƒ·Þ@æóùþõ_ÿõ}ï{ß{ßûÞ}ûö½ãï¸Ó-Z³5[³5[³·½ÒÇë²SAlµ#Uñ2Q© ¡ÂƒÊLXZh@.‹ÅR[[«’·Xõšœ«%WŠÑ%Ó í,³êŠ¢ò`SR¤£!zB×/WdäðŒ7¾Ì ЀBvt:Ëåòx<ÀžB¡P6›u:´áƼP(LLL?~|aaÛÊÆÆÆ;wR‰qüò"„‹IоûâââÈÈH*•BˆÒÔÔÔÝÝ ‰.G¬}í1/}€Wì"h ¡ sètºööööövHÕètºÚÚÚ;v€_&)ET¡ó‰¨Ÿ JÃe‘긴´Fkjjd¥ö¢Ýn—Xæ ´¡7¸‹BÑ ·à¥å80Jg×ÈÔž£3ALÓº·^¯ïîîÞ²e‹ÝnÇCQ_ƒ†¬z½BNBaP0Br‰ÜD$Gú«ÕjM¥Rz½Þëõvuu!{0Êùóç—––J¥Òää$8B©Š+«ÂK&“@*û€~B‰*È6ŠÅbÐwGûÇÇÇ!šsúôi0…LJ‚˜v’ʲ¼¸¸ø£ý(‘HƒA’ÑÁPR“ÏJj@ccc©T«©©‘$ %D¡%w¢A!#à­@µêرcÉdòСCÉd’dæ)\$R ©h¼…ªpã\.777—L&Ÿ}öÙóçÏ«R‘¥ &#Õqƒ6åDÓó’ÏCÖJÕœ¼‰© ì(ùÊÊÊØØX*•ÂSS¸K$0rŸ¤\K¢ÿ`q‘Äï÷û|>â’Obˆm6›J\Ò€  %d³Ù }´……“ÉTWWg·Û].WQ±ªª*À[˜#ËËËGÙ¶m[__e( ”!€ð.úH:ˆDr¡9ųü€‘\+IÒÜÜÜÂÂBMMÍîÝ»á{'Nœ$iãÆ<òHCCƒ¬$ÓÑ™à­|>êÔ©`0¸~ýz¯×‹i˜Ífãñ8ø8uuu@m± …•év»=ÏÉ“'ûûûñ{‡ÃA)oÀƒü••š‰XÓ‚ œhkÄAŽD"pr·ÛM5(øùÄJà¡O2%)µ\¯×#ÃÚ¸q£Õjå¬Fz;À¬V+j €§c5øèxD9½¦p'ÇV(Ý’rñ ¤hµZyeR”ÏЀʭ`ŒñÔëõ‹ŒB¢ÇÂ7b ¤SzªtIœm£Æóƒ+ÞE™Tb,ò÷£Çã©®®öûýxbe&“ÉÁÁÁK—.  ǃ2»¸V  À¸øHG‹Æ”2ë¯÷ç#ÈO,8ÔUUU…ÙšN§³Ù,^Ux:U”ËoW¼G|%¶o½áì‘GyòÉ'?üáŸ66v×]w—”Ëå.\¸ðâ‹/^½zzÀf³yË–-»ví}`ïÞ½Åbq`` ‹utttwwÛívl=å …ùùùÅÅEÀ+Á`5±Ûæˆm¾)UAÕ{¢2¸BüCX²ÕtŠœ0‘ü~¿×ë%Ù)ð €\n€©Že¦Âc±X@2Båp8‡s¹RÃÉ,,,ÌÌÌÔÖÖ:«ÕŠÄCÜYQeF"‘™™™åååÒ-‚%‰D"'Á!ùÕ«W/^¼¸´´4==MËÐ$«ÕZ*•N:•H$0¬û)—Ën·{óæÍårùÔ©Sñx<›Í...‚]U*•âñ8¢kò–L&“L&WVV~øÃ^¾|’ÃV¬WV”ÔÀ ú!ÅQ 5CŽA\YYjßïoll$>M\.7<<<22BlÁÒjºººÖ¯_J”žFÐBäÌ–Ëå`0ˆðL§Ó ,,,`Áħd0ܵk×úõ롎  Áív“$6HU¨;i³ÙàÒ±XlddÄl6÷õõÕÔÔ‹E‡Ã‘ÉdÀpAÙ;P xL®S4¹f!gsÏž=»wï&‹ ž(Žçþøæù矅B»víÚ¼y3éÔàvB‰u‰~‚ÔQàJ:.‘H,//÷¡ZSSS‹‹‹MMM÷Üs*ê¦I—Ë円†‰Dgggcc£Ìôžéó¸/h¼Ïˬ ÷žÆKyÁxd„¯Ä5#òW>ŸGÝpmˆJüäW‚µDÒï«Ý” ~ å&„ëáFø—`)™ÒËŠú!-:(-øBIˢ⠘à6†Ãá“'OÎÍÍõôô´¶¶ÊŠ">Í8 |’ÁÒ“%%)ozzzdd¤££ ã†â––ävMLLŒ‡Ãa»ÝÞÝÝÝÒÒ‚”XKÂWl6LÂúIôÆ'¦ê¨FTâ\tYŒˆÉdêêêz×»Þ…Ùm0ÀÆ"jù?¿1’S¡¢«b[4Ü¥ƒ·¨Œ U•¥ÜX¡°KJed<ž‚ ?|I¬Æô'¢A*"˜[RøÑ”J>Œ4^aÌf³œ¾ÍÇ“‹—À#à MJ¥Ráp8™LBð1Ÿ;wîìÙ³³³³$Y´”\/PT¥#B]ñ â3Õq­}Õèsþ¦¤!Î å°¸]”ÓuíŽO\f4‡·ÎÖà­7¨ýìÏþìñãÇÿéŸþé#ùÈnËš­Ù4dzmÛ¶êêê;Ý5[³5»…V.—)Ÿåæ¿%+Ù^D(3õe¡ S¼”ÄrX°!C:•¬)F¨ˆL™•†¤SYŠúÉàúˆ{…"ÍE.TÂê<´ HƒŸ<‡B!¤}QÖtŽQ¼ººzïÞ½‰DâܹsÓÓÓ'Nœ@)Ét: …¢Ñ(à<ƒÁ°~ýúÝ»wCB¸ªªjãÆgÇŽ‘HÄår¹Ýnìæª ‘dffjDØÍ#ˆÅb ­€ß ˆ4¤ùhâaÑÉdl’C,+ r€BV(By²ãÇG£Qâ€`€²Ù,1(< A51 €äv¡P˜- ?øÁŽ;Œ#ŸÏ/--]¼xá%š!”ȇ+áä¼X,~ç;ßimmlR*ÇSÑ+ÔŒ…B˜xJ)°E<2Y8B—×årÕÕÕ2øÀçóU§ÓéhÉ,jiiéäÉ“‰D¢¦¦¦··W®"N6"M%g ¼!ZB³Ã]üq‡ÃñÓ?ýÓuuuà° Ý#›H$"‘ÈÐÐwp‘ŠÅbssóÃ? ²!KèXlQ'c›¬gxx8ŸÏR(FD!€2H›¢SeÀ4µ5›ÍN§a@*•‚VzMMÍúõëëêê …ÂÀÀ~i·ÛN' ¡„Ǽ⤗ÒétWWWGGG¹\èƒR÷ÈÕ¢°jppðܹs}}}¤ÀŒí\ZZ‚”ø¾}ûî]ˆ»( ED)8§r Ÿ‘HdxxxçÎ<ðF„`„a ´tB®Lx (qK¥’ÝnïééÙ¼y34Ýòù<žAòÜÜÜÜÜœ ¦A†E2CDe ΜÏç‘© ƒÁ \¥­­ÍëõÆãqS•Ëe§Ó¹ÿþ]»v555Ñôá V4kp;Â;Îad‰Ä“•€‘‘V=ž‚‡è HÑC݆à-ž'K]Jl<&…µø/a TÏŽŠÌª%r, ¬“,Hð‹¦ƒŠCÿ¥HÍÓ®¢|æª Õj¦¯¬û!+UU+'oþk³Ù²Ù,°~eŒ&~4mnn.+õpi@é^ª¬C,e&F.*½UïÞ0œ7€JÆÁÕ³p.*¾rñâÅóçϧÓé­[·®_¿âV*8CféÒT¯Cª,õ )Âÿ333¡P H0loo¯¯¯ƒª‚i³Ù:;;7mÚ.í®!Ò'$ ¢K(3‚BÀ­$¥h¹~I8 ½2ˆ]Ë} ¼H”UU!¡2«'@~®ZðÈ’$y½Þ­[·úý~*=Áá!Bäu•zŽôWI¡¼á‚tY¬Ã¾Ybeƒ’ b!§˜È†hµ‰„ÀðhŒ³Ùl˜ûXù©‹dVi.µJ’’ÓÏ‚´œ‡Ö$EF"‘Ç †H$‚7ßí ñjkär@РN¸¼¼ µAz³`–Yí¾ ‘5s¾kâ» êÕö†¿ÐéOXci¹Ðò»_w[ƒ·Þ¸f0þú¯ÿúN·bÍÖlÍÖlÍÖì–›Ýn_¿~=¤åå›.¬£¢\ñ9í®(þ!:½`2:ðÊ1&G¬øTÿåËŸO¥RÛ·oß´i“Ãá N p1{ ˜Ae™ï§u:ä!+FµeYž™™A®ßúúú<ògffvìØñÀ Ø >^(Z[[ÑðXx¼bdddqqª&³³³Ð¢âÈî‚ô½^ïp8P†Œ*Üá—Èt¹\HÛÁj×®]{÷î…ÂQZTè­ª „ÔÀÁH2LyÓ”,+ò[BAM&“×ëD"SSSàˆÑ2BÜœWd‡ƒo¹®R™¸x 9AC( 4ÚøÊF« ð;”Æ£ž¯rô¯ á’[ŠVWÁ0G¡ ‰iâÐçUËfUU䄸À™P‚Þùùùp8LÜ"RWµš H«Q~´Ë¸ ¹B˜Íæêêjn®ºÚ’8??ŸH$¦§§«««·oßÞÐРå:ÑÏtÚÃ/AîS‰‚—*IR8·Ûí1òz½(êF‘³ér¹Ö¯_ßÜÜL0ý„XW­V«Ëå*³z¾XÉ%¦ޝX,8•jà‰£4ØT*…œ8ŽtÇr(“÷?±Æp)‡ÃÑÓÓƒLd€Ph?Ñ UÀ¤ÔÄäÝ …b±¨Äñx|eeåòå˹\Îëõr´x<Ž“•P(„£ \œX½¨G>Azâ,§ÓiÈ_‹Eœá­J¯lœ:À‰D<Ç<‘H¨œ–ÊM¤Óéh4 Ze4¥ϲBE‡Ã—/_>~üx*•Âu(/eEÜ*Ò¡Q4 …BV«µX,Ž!·1‰œ?¾T*577777sQ¶U·:ªAÖpÛ‰Q.)Ç ô¼ªÖªjò.q+m ÞZ³5[³5[³5{[ØMbFw¤an·Ûb±ð‚ƒ7c|3ÍÕ…y¢¢jgÆÓ …²o£hPTF)ÚÛñûª¾Î×9_RrChcÇ›¤«,ÄNûøL&³¼¼Œ¯ À®½µµuëÖ­H÷C „ctJ°²¢Km4¡?%„Àé.UeBFƒN‘=–$)_»v-‹•ËeÇÓÓÓF¯]»éñšššÔÖÖRF¥("ê#%Ê€CËq»B¡ 9\”—!”\§ˆÝ¤ÓéÇŸ9s¦··wóæÍD§"õhJû’Yöwâ:ñÜÏb±h6›}>_"‘0›ÍÈ+•JõõõÕÕÕ---ÕÕÕF£‘´WhÑHɲœËå‡Édòù|v»bªE÷¢¤TTÑâõ³| ¥V—¬ä¿Ð¡: ÄÛ¢d"Q)Ó&„0™Lànâ FYV4e'QY.ŒW™•f'´‰œ³B¡Ððð°ÝnG "PàÖ‹‹‹à†¬:M"‘ÂiúÍM<»$Iv»= Æãq}Ä·oßÞÛÛ‹0Òf³! çÿB ›U°‹\Y“”¬T*¹\.L Î> °ËÕaD¶ï‹/¾877'„p:…Baaa!:ÐLòW oAœøtZ´E…š …¦Á%½(zDªŠÙ©PÞ™L&¿ßoµZ‰2¦Â ¤ÊR*|AÕH,r¾*Þ`ñ$ U› ìàâÅ‹årœ>BâTa°Ä’ÊuJ…DN£ãOÇN­O*X>Ý |‚·@‡B477766ê=GÕ‹ƒ@ \€TðF pŸ@p CœrÒ1¯1e¬VëÕ«WP9Wþš¬¤Šg2™ÅÅÅx<ެsd—Ó Ô0+ÙlÄ1‡Ã®Ži)BI ÂsssKKK:nyyyrrÒápðôOê" %!PÜÕ%–'Hß„d•Ì(ZÔÒ†kâÅT(úûû¯^½‡‹Åâ÷¾÷=à€8¢ÀAÎÜÜÜèèh¹\þ÷ÿwǃMÂfb.—›ŸŸÏd2ßúÖ·PÂ…D÷K¥ÒÕ«WÓéôØØØ³Ï>ë÷û©ýxç¦ÓiR\^^îïïO&“§OŸŽD"N§“œ+X«Édr|||bb" ÅãqœZ åt-ŸÏG"‘H$¤ŒœjU¬¸^8¦s‚H$²´´$N ¤»:tåÊ•íÛ·?úè£(Ö)U&‡òI«ˆJ´ ÝH”@ížPØd\ØžŽŽÄ­´5xkÍÖlÍÖlÍÖìmaòM³¢n¿„Ÿ9>%˜¸¬ö[Ø"ó*`<ªÁF‡œtMmÈ÷ÓØb=¡ý™ ò ô„6÷Ä¢â|¢²"a£2Q)rA[Úéæóy€MB¯×‹2pV«µ¯¯¯½½‘8)ˆƒc‚°dª)ƒƒ$oH%·¬TéN¥R|ê©§2™L__ߣ>:77—H$fggóù¼ßïߺukSSøGˆ‚¸60ᔂ/qwÊå‘e¡·qN¢ND§ÂψÓ“ ‘Ü€“­(ƒORô­…’ubñ D1™L»æºo|¬%Æ%]EîTCIEÙt:ªbÓϳÕÐ焸% d½Y­V‰%HŠP 1J,‚åóy‚ƒKšúëڙƒpr<’—ÉäX,633ÓÜÜìt: Ðá¬%¢¢¨@ÒÆ–©ôo3Å? ˜ÌÏÏSfSUU•Ýnw¹\‹eëÖ­÷Þ{/±0tŠÈ”Ì2˜„‚rœ&^!€?JPÕUÊÍ$„©„yqôèÑýèGâ”eÙd2‘çpD›nJÁ9yy#>ƒm¡Œ'o–+uŽ4ŠÊ òRÀ[òy>"²’Ì[SS³qãF¸™P¢S¤¡Ñ·d%¿˜"IÑB@{›„–Yr¢ŽåH"_«1 ¨z ¤p‹®]»600ÐÛÛk³ÙˆlÈEâ…Bp£¢l:EƒŸ¢eB‡#÷B€ËIG:EþŸ&¦ª÷ÐB’T–!d¹X,†Ãa¡p耆W=œÉdòùüòòòìì, Y †\.qC]eMUZÐèÝA=ƒÁH$/^¼h±XÜnw0ôù|²’µ Cä›/..†Ãahr/6™L(ΈÏg³Ù™™™L&311ñ½ï}/ØívP´€ûÀu¹T:^^^–ey`` ™LY0wôTÃ鉀yÑÊ )ü;*J£oä/tJ©ÃÓIJŠ.ÈË‘H„ ———ù›=Fpnn.•JA²ë eñãL%‘HƒXbØr¹ )ÀÙÙYœ¾Š*¤E„+“É 0ëììl8L(™Ëä¸èQøEµÓ{„ o¾rBβŒõ·X,X¥Qd~~çI(ªè÷û'''ÍfsSSSKKKCC•YŒõ¬BµhMP-M´SZYY ‡Ã n·»±±G#4ÍÉ=†É•â ·ÎÖà­5[³5[³5[³5»“¦Ýñ¨bHqlNbÕ©y-)¹FBnÇ’ø(ZƒqÁ˜ B‰:T±º`úAàðFù:õ¶ËŠê**‘H C–eÇò@@]êc_N)l´'æÀmš"• ±‘JjkkÁ«Ú²eKKK‹Ûí¾|ù2$Ò!k³ÙPªŒˆZÔxž$(„H§Ó###555$ ´«Ì4­(³†( ƒ¹B±XŒ÷?¢}Ny ª¬ä”‘“ñÀJ«jG€—"ŸÏ#I½¨›Ü€<¨8©üPb¼Y‘k¡]>Ñðìôa€¹h1¼´OD÷¢Ç¡'Å•E#fæ]J•é´iGt¤C‚‡e±XñÌÎή¬¬tvv:N e°°Ÿ‚±WšššœN'¨p„Ê¡P„é¥ ª`t@­²X,¨øæñxb$0‚qChÇ€ø¼JZ"¿5! „ª¬ St²:4==Mrõ–OÌçó@u û&bÁ[„n xæ •T¶ú“¦÷ "ßBk—j1‘— ¡8ǧhtªªªš››­V«Ïç#| îàœàWÕhR¥Bøa´È>à4+¢Èñ8––MB|€piiéĉ…B¡©© OÔ 4³0m¡$•J¥J¥ÒÂÂÂÔÔiF„u>Žº—Äæˆx u¨Ÿi…DLŽ5mbb‚Ö3gÎLNN?¼³Z­ÄcEË!PUì;ßùŽÍf#yµx<ò©€Ó¡ï=Y!c–„r¸;­QDãÍÎÎ.--i¿'…8döáÔaqq1‹¡ÍTDE(4< N(€¢ ÉGˆ ¹ ]>!{œUðú} YññEWpAš†V£Ñ¸°°püøñÅÅE—Ëe³Ùæçç¥JéwZë°:ŽÍ›7oÞ¼Y’¤|>ïp8ü±Õét###Ï<óLKK˾}ûìv; T? …B‡žmmmÝ·o*·‹E“É|¡ Ø`H=÷Üs333ëׯïëës8¢òxL¯×G"‘ÚHܘ9ˆ¶X,ÕÕÕ@  :§Ó‰bظ)IR*•ª««;þ|8®¯¯_¿~}0œ››[^^®®®~øá‡7mÚd·ÛQ®„Þ¤e–³Ì:/*Y±ÙlöòåË/¼ð®]»êëëy6.m9è…HK.íTƒõºÛ¼µfk¶fk¶fk¶fwÞ$ ¯ê&MWY#IÒ²R·Nbl)ˆ&*sj(þ§P“§ÎáœVÇ Š©.(4‰?ª?••Âj‰Ct*+J%àÃá0¤„¤H­n(© 'ü¼\: fô,@‘@X ²˜Á`€Ð•Õj­¯¯×ëõ555Û·o„VH(êììDðú …è‚IÆbŸþù‡~Øï÷súa +žE:zÀét4 Q_8È™A„,Ð$¦„¨Œˆ<Ò¦Ê*ôGTf¡¢º1Îøg¸ó @ÅÇò ü…ÃUÀz´GÙe ŠxH “ þUñR(ÔZþð"ÐL¨D ©„êC~©š¶ ïmß¾ÝårQN € L„a4ôˆ|(ó®\.#Ù£$‘ð#bÙhBsй4•2 H‚¢,-t®Óé’Éä‰'†††@Y¢KÑ]R©T&“BP–\Œê^êYÑ¿'E¸¡n@Ô·ªõ‡4‰àºx|<­wîÜÿÇÞ›ÇGu^wãϽ#;I£]HI€`6lƒƒmìØ©íl¿¼ÎÒÄYë¦iê6I›¤}ÆMl§YÚ4u/É'qÇI¼/Á̾I€íû:û®¹¿?¾ï=ï™çŽ„cìdÎ|†Ñ{Ÿý>çû|Ï÷8p`öìÙ×]wi“ã’€0ºáèèèË/¿|âĉ Üxã<òŽÓ“Q*âKg¤BÀèÍÎ-¥qŽñúOAAA___ww÷ÄÄÄ‚ ÊÊÊ6oÞ‡i¾H·¦iŽÔ4­¢¢EEEEˆUijÂá°Çã™5kVss³Ýn,^µ¿¿ÿСCMMMË—/÷x<˜M………P~Äù ¼ãP(´fÍš+¯¼’¯Æñx|tt´··wxxbX9w43zÎM“ÉT]]½téÒyóæy½^¼£¡< ²mlN‰DQQQYYY"‘())œ=>>>99i±X*++ËÊÊ„ŽÞšXÚGÂÚh7Ejhï _Œ:ÎÙ³gWVVÒ†6ü¶Ô)T`LUq1-oå-oyË[Þò–··—Ñ–ñ¬P#œ…)… CÒknâ¬Î" IOÕÇi‘M@›ê)Üý,$çÎ#>¥ Œ²Å©L‡˜,RtGDv ¯( ò+V«Õáp[,–d2ÙÐаbÅ xõð…áL’£Îq@!„Ùlxã7z{{iS+KŽÓ¯8¼E7q»Ý«V­B:3ò@”)ÄhɧâhÚÓ=q¾M™©¯U]°ŒÃ[š!® Þuaa!¼åL¶”5•„‚§(«£oQ]ˆˆA¿¡tžO?‘Ð7pš€DÐÀ£À.80FJ ]üÜd2! E<Ÿ;wn}}=²¢('Hp«JKK‡B’–B,\¸pþüù<íxtœL&ÃáðÄÄD,#ì@Xoo/Âm¨RV«| EQàbK  F#ÊŒð”vrrrtttbb)5M‹D"Ha:D£Ñ3gδµµÁï’Ú %‡Ò3°K0›+ œÂüÍèYÒˆLÔÚÚÚÛÛÛÒÒâr¹¨l¡PH0„TèÀP$£¨d2)tºY"‘8zôh,ëééyá…JKK¹®°´à48gá‘[‹`+ #B©(‚p i‰÷€Ï¤gä7Ç¢„ÛbYCôÖîÝ» ¯„[Žu¬§§gttùRɵk‘˜"Él6WUU9<…f°cˆ¢H'D£1¡´”Ü€&d!~ŽZ „B¡žžžÆÆÆ 6@x C÷Á¨Ãp¢XÎD"qâĉ±±±âââ믿¾´´”PiZd°¤Ó‹@üää$ GGGC¡P ˜˜˜Ãà¹S áŒäÔ©Sét²‰f³Ùëõz½Þt:Ý×ׇ¨Õ¦¦& öÒ)ç®-++;sæLIIIcc#µ˜Æ²[Jð?pÊy±ÐahÁÎ~0¢T=‚p524¶Ìfsii)¢í:;;1æsî’ÉdÿÈȈÅb±Ùl§²²ÌbŸÏg6›‘]H%Ò Ò“^¯·±±±¤¤„„U&kHu7jdµZ1`:::º»»‡††Ý9]F·BN̺º:dϬªªª««óz½]I€N§hÍÄ[Àn·#ðää¤ÃádºÊ`ä‹l ‘˜ÑšN–Þ‰ÒŽµ[°`AMMÓé¤ûH¯-¡–ÒS]}ïœ$VÏÃòðVÞò–·¼å-oy{YNgÆyò ‘D—Ácá'‡bZR˜ÆŒCeÊ8äÌÂ÷GAIˆs6¦¢teXf(ÚÿQ,©Ï4CÄ"/ð0" ö¢+‘-KDUÐôÈ,Eê$¼ ûuJ !B¡PKKËäää¼y󆇇=zðàÁšš„up ¤ÃóP(´gÏžãÇù|>N¤"Su'©‹ñ_»Ý¾|ùr´Á"îäž!Ý»L¸9E6 !pÌNÌ;üäÞè€ÚÑY4+­Œ›î:ɽQ+I±·»Î“FÁ@4ZT6«i‚›b±Øðððèè(ÅÓ©º.œ|âé ØöE‚gè÷û AßŽåæƒæ |x›L4]Ъ  `áÂ…f³jÇ4N ÈwËápD£ÑX,væÌ™H$²}ûöp8 þ@ pòäÉT*õÚk¯¹\®²²2xGü¨¯¦i$KaDäwa›L¦±±±@ àv»kjj:;;{{{Ÿyæ™ööv@'S#W¶···½½52ÆÎd2™]»vA‡!i‘HÒià©è²Óà¸>Fz‡I=ïÞàààöíÛ{zz4–WðÍnr,'õ¬s<\NÑ“l":hÝéÓ§KÓŠ0DðàL&` JFè« ÞGurr°¢(è/B´U]w(˜Ífƒ¤Íí!ôÏårÊv’ßïF£‡cÉ’%‰DâäÉ“~¿?N;Ž9sæÔ×׬˜JB»Ý@Ü«L&ÓÞÞþüóÏÏŸ?Æ `ÜQ|7ÁFÔ5„@QYºÕ¡%QÉæð‚WxÅWÌš5kÙ²eóçϼK™.ÞÒt+'ÚÑñ6› ë'²‚Ò{xRè‚€ËÊÊêëë‰^ úûû{zzÆÆÆ]„Ž@ržú&RXXèv»=¢··—ÈŒÈJP,¡` 1é¼^¯Åb!~“Dê¡å‹ªš+ÆŸŸºJ‡ÇKª‘t±Êr°bFÔÔÔüÅ_üEgg'µ ¦¶fà«‚š &rWW×hP¥R©‘‘‘‘‘‘¾¾¾’’ä3Á€¸Aiiiuu5æ5fáþa,A½kß¾}Á`0•Juww÷÷÷cØSP¼QUë‰Ýn///¯¬¬¬ªªš3gNee%Ʀñé¥:E˜2^j€ÅhL,Q;¥—)Zž§„GÓÈäï#šVÄĦÅdÈ:­°Àd‚qÑw½{ñ,oå-oyË[Þò–··£I{b¡ ÆeÉx½`[OÚÀa_Å<91‡öÙ%Aœ¡Ã <ʉüFÐþé4žv‡ª."ÎYN<Ї)º€®Ê²+âþTS.l¡°ˆBl[Óé´ÍfÃ_  .Á—Ø€ru Ä2ÀNûõÞÞÞ^x!\sÍ5×\sÕj=räÈ–-[Òéôúõë+**ˆž£êJÞp³wïÞýüóÏkš¶aÆêêj(Í£À$:CþþJ©X­Vˆƒ£¿¿’„¥9:FÂÉŠ.ÅbÒs·ã_ ¡PˆÈ}@S"‘ˆF£pø ‹D,L8N¥R~¿``Q“ “z¡Äd4@gg§Çã+N#VÓ´X,†}__ßàà`<‡BÐÁŒ8Æ"›]:Ëï÷oß¾Ä:0•PG¡;ä&“ ø ³Û‹]ý‘M4z…HCðhÔf·ÛG$ééé'Ȥ Ûã_‹Årøðáê»x<ŽÐ0NG£Q›ÍŸL&³cÇŽÖÖV”3ûý~MÓÚÛÛüñ¢¢"ÊW‚˜SÏ@c6›‹‹‹ÒUšöööÖÖÖ®®.Ž–,Y‚2€£!„ÅIèé8…œ ¸ÊA¦æN£Ëf³…B!@絋ÅbÀ¹€}IyôF©Óé4›Ísçέ­­€K“âÖ0ïÇ,À‘Ž#‰™LfïÞ½»wïv:ëÖ­kjj8B¥®š£èÌ2¡ó¿hîЃ(õ„¦§òzèÁ¬8V²Cü(ÏMj•e⛘˜ÀÀ[µjħ†‡‡M&SCCÃu×]WSSC%áaq„U£аÝn/))ÁZ ',}œub< ¡pu„…Ö@”.„ºù0…ÇÊ•+/^\\\ …8ZÏɽÇjÀ_^f³:tT*ÍèåÂ˦²|¾X‡ö ëœ3gN<cccÁ`ppp°§§Ð Qç°‹Å‚Áàðð0áD{ö쀦•Íf+--õx<ÑhÙr‰ÚFoaE—÷›b‘HäàÁƒÈ޽°Lv6j%ÔÔÔTWWUVVVWWCÓáp‘²I 6ѬP ·ÎE¥Â‚…?EïM¾8öÄ7t.È9zôÊ£% ‹>åˆ$mÞPr:@’BÚ/’åá­¼åm¦†ÌmÛ¶Ýxã—º,yË[Þòö'n¯‡>c«Dní§9F:~W ±´‡ÌOÃý5CˆG&W¢4ðB%UÚýKü#rº$GH°à2!rPýýðŠ+ºf6•Š¶ÎØûû?¡|‚iP8vÒа‡rÇéÓ§[[[?ô¡ÝvÛm%%%[¶lyî¹ç:::æÍ›×ÜÜ\ZZêt:‡¢(HÅõúë¯ïرcxxxãÆË—/è†csìk‘È’*E›]D{‘¾8áGˆŠ:EŽD|°eGÉÍàÔ¤ z6Á‹;‹8qbxx8‘H´´´8NŸÏ799¹}ûöÑÑу"…”bˆ`%„‡Ã‘H$ŸoÙ²e˜J“““{÷î-((X¼xñ‚ h §›Éd‚ž4ø&ðñ/œ'žxÉÝPÇ={ö .\xÕUWÁ„üh`r»±X,~¿ßjµ¾òÊ+¿4]] €È† 6nÜHF‘2™ŒÝn'mucì0×¨ÈØØX___uuuqq1E+z Zp’iGÛå´—‘‘‘ýû÷-_¾ÄÜî+Ǩ<|(,Í'ÎÐ_s®À˜’p¡5]Á f±X(SZNÑ2UUUªª:Î@ 0::*„(--]µjÕüùó ’"ÚŒ+'1G0h)˜Ž3˜Œð–´®*Ö'Eä)L›/Vˆü"èPa²€S½¼þÓte: ]Êùâã g¿bF»ÝnÄ·;yòä©S§†‡‡)·#j,r™W‡¢MS÷ã­ÇÇ”¨îZvÐ4×tBsAz—QyãLa¡—|$ð!ALd 9´I&“©­­mjjn5::Šé6000::ÊC&ù O5„Ãá¶¶6LL¬–Ñh4 !ìWèœ5KŽEIc‰ƒÑ/SiK¡¹œNgMMMCCCMMMmmmII  .ì§à_¢W‹lhŒpy¡CÕBeô¤“X± £P>/!­FhRÚùHkBN–1ÈMR Õ\:o®åá­¼åm¦öÀ|ñ‹_üò—¿œ‡·ò–·¼åíRwÒ$œè¬?T³SדT ñ€2Íi‚·8”h ¨¨(NcG«eú™X^9騖ð/~}àjÜ…µ6Še˜(/’»“’ˆÈ>zÍd+”ã‡P( ƒ§Nš˜˜hkk«¨¨¨¨¨°Ùl‡†Ž²ÛíîîîÞ³gÏÑ£G·oß^\\ìñx 1 x«³³â>‘H䨱c(a8ðÌAî æ¼Bq‘À ].—¦i઀¬mf!,(‘D p%zˆ“x ćP(ØÁáÇ;:: Ú;66‰DŽ?ŽÔ锉LÉæ¹à‰Á`0‹uvv‚äB®!ø-Ââ ‹5kEω“Âï÷Ã/êééÇsj=Vjh fÒ“Ê£/ÀÓéììloo/--]²d $´„ˆszª2E§""èF0Y1¢KÀýÆrYI à ;ËÚÚÚþð‡?$“ÉÛn»mÉ’% ý‘çt:mi:™é½ìv{0De@´uëÖ+®¸â–[n,¢(ÊZZZ<Ï•W^ÙÜÜlb¹Þ0åISðŠIφ‰Òöõõ!Læo0D'z<ž’’¯×‹ÑN·¢¬¥¥¥W^yeooïñãÇH‚˜N§-ZtõÕWÏ;—³WâñxAAÃá@ЫÈöÆ)ð˜Mš¦£át:ìÆ™ä9Ó}(Ü 7Á, pZL^ô)\qxK¾(Á"†ÎÙ1ªžH„Uä1×\d e9Ed‹²ó%K×p³Ùü~ÿÑ£G‡‡‡UUEŠ7Œ.MÓ(Ѫ¨1Â9Aêþø’"²…Á÷žêÁ¯áŒ*%[ƒOaŒRy“ôƒrBrt†øÉÇT¦f‹^IhÐOÐÁ‡Ï竪ªª¯¯_±b‚à‚Á`"‘˜˜˜èííAú]^ i@™ˆš$È[dcOR?bÕ%œHª5]œ³üübú†cFdˆ(¹ô=ÒPèL^¡»„V«ÕãñTTTÌš5 ¥˜˜?}út{{;4û¥ŽÁ¦d ,ׯ0FÜ1Š766æ÷ûËËËéŽ+dRÞ–Àd2¹Ýn„"wGyy9B†‘€Þ&4Àxü¾4¢h¡°8\Lj«ÕJ ¸ÊòÆN²œ*ÄÑ3v"Wi㣚CÉS `š¼\V’:WÉòðVÞò6SÛ»wo*•ºüòË/uAò–·¼åíÏÔÁ.“aØ:KF$þKð|9I ‚nH§Ð’§A8œ@¢Ã–‹7 &,B8iŽ/ªéªÌäpòò+Š‚”CÇ?pà€ßï'u n@çAˆ ¨ ¤ODz:¼"tÌ >Ë™3gü~?eIƒcN§ÿð‡?ÀÕJ…-~(ÐCª1@p„€Ðe4]iˆw±–H¼°°Ðëõ*ЉDàèÆãq6"¡"@Bè%S5Qxû`úX,–p8 ÎѾ}ûÒétuuõâÅ‹}>_2™|xîܹóæÍ#5bøTÑhE§NÚ²eKqqñúõëËËË)ÚŽ<¡R4( 'à¤Ã‡ÿŸÿó.»ì²[n¹Åívs!„Ùl¶Ûí˜)”µ­-t%Rïæ^µä¾:…ö˜L¦mÛ¶ƒÁ 477@6\Õ[ÑÃB!¼p ºÕãñ/ðù|ä•UVVB³Ùn·#ó—`Ž"¹‹*Ë!OLQ”h4ÚÒÒÒÙÙ‰ÂcÐJ3Ÿ)S’ÉdSSÓûÞ÷¾W^yåÔ©S€oGccãõ×_¿`Á~‘›ìd4Sv.Tbr)Ù^étÚår!âÕápðâqb)EµŠTÿ8ç|"‚V)É §2I^(\è„€ã;¤«­èQ~S-ª<’N0÷•P9É•%”¶··WQ”–––T*åt:—.]ŠH^ ¶œÅfbÉÝŒO\ŽEƒ BތӠ0¼)è‚«F\Ò˜ ƒu&gÛòÁFG&X)Ðlšœòä}‡µq…hF«Õ:kÖ,@?@*ÁëêêêééF 6§_Ùl¶²²2v¤’®±C#Iûo£,ȦDe²szHåçßLêYyÓIȬÔû–¶£ØCEÏÆ€²   ¨¨ ^KJJâñx]]ÝÊ•+C¡Ðøø¸ß˜ðûýBÒSø)—Éd²ÙlÀ–$Ÿyà?Õš‹ •””Æ­ªªr:.— ©Qlœ ¨,ó£Ð…ÏrµÏL‚é€w–Ëå2™Láp© b±X8„š¾Ê¼ðâCŽVŽ)+†l0ÓCÆš~4È$²ù\ÏòðVÞò6SÛ·oŸ"oå-oyËÛ%4œ=’…t>ý%Éiómí±È9#MJ(ÀnˆÀÂÝ6i'ǃ]ð‚¤aÈ×âÒTtÜJš#tâúe( ‚ƒÜöñx|ß¾}›7oöD9'YoeCûTÐÄ»O¸èªªâœ? ¡0‹¥¬¬ >H@`» éˆ±Bªöä“à®^œ[Ž*Š‚>ŠaAG™¢Xøi.—ËétBµšJh¯× ÞŠÊD‹\ -Ç;;;Ïœ9“J¥V®\yýõ×ÃíÑ4mxxxåÊ•7ÝtÐ .èF@2™ôx<--- ,X¿~=°M,1"”³Ñn·;_~ùåóçÏG©ñ¡€£ªªÛí>xðà²eË6nÜXRR RÍVŽWtâ=Ò^ANNNÆb1(O•——{<B¦'‰¾Q×ãðªx[ -iºú'à34Å Å ²¬XäØ`0ÓØ¦8SÜ eÀ(5=F!ŸôDšã„PF+((ããã»ví TYêJ”Cã͸&(ŠR\\¼råÊÒÒÒÞÞ^̸¢¢¢òòòòòrDÃÑ$UÏž&A!F?ÃRAbLt1Œ‹(QÁ+hÙ1×B'1‘GJè -8ªž6T*}æË#éRiº†=Ë(-³‰V-®ŸMEça½Éy61JÖ­°ÓN$‘ˆ´tZ–VÁ¸?ô=Ö.aÀYøÀÎ fÑ€W˜°—ôf|W™F8µ Ññ¨ñ5=Å$ï2<ˆ¨IÔ“zS€È¸ ­¸K“Çãñù|555óæÍóûýcccÃÃÃCCC~¿?¨ªZ___[[‹ÅŸ/ô2ÂP¤NÑô„Šžkc8Bg6ü2z ñW*É)R|Q~°ô'À:f¤¡rí6L+zá’ìmx¹ÝnŸÏ «««ƒÁ`(:}út[[Ûøø¸tp¥1Ú ~ìv;½pÑÑèA¼xöÚ ˜ÍæY³f577×ÕÕ•”””••á·là&“Ä 5ó1s5=œ8 M+üŒŒŒŒê;<<ÜÕÕá0,‰ƒƒƒ]]]±XlttôÕW_XµjU}}½¦i ¬è4[‘}°Abg|ÛCѦÔ8„a &B'˜º$ùº¨»Ä<¼•·¼ÍÈ¢ÑhkkkEEEuuõ¥.KÞò–·¼ý™¹ª!¿•ƘYäŠð`¡o¾‰äB¤˜t:=22‚¤ï`‘ƒl„T%Wè„нU–¿Lɦe •@a™¹É» ¨EÓ´@ €x±X À™×ëõù|^¯ •Õjõù|ð(Òè.%༢¢"—Ë…³quÀn0›ÍEEE555 S/G¡ª.Ò\^^îõz].—4Œäºwû×X,"Ç‘%!}*¿¡ÂTœ©¹*9§]`²z x‘2QRÌ£’ͺïoô˨‚{Bq¦Ô˜ø^ÍÎb9Í?¡?ƒƒƒpÿŒsÃUÍVÏ¡†º¨ŸÃáhhh˜5k–Ð7 cröˆA艖I9Ìø/ÁëÇá“‚`ßsJ‹`ô"ÁµÖ²UCpLzº7êGÞ8 R€ÁC¿ÒôàDZN©.|˜ôd¬ §8>b "»¢¢(>Ÿoùòån·[c3¤aob™òÆÑ4Ín·¯$ Ũ“M6–J>l$ï(¡s„ùx&¦-I})LT‘f§xšžÙ3Ã’ç ÆSup‚¶1ª X$ª²¢ë$RÏRËëGTM,àåå倄FGG;::R©ÔÂ… ‹‹‹¡fˆE=ˆ)ç&tšFGGGFF‰ÄÐÐЉ'À¸¤zI‚ô4¢N.ô€V¤­ yABRÐn„c¢•pÃP(ê1ñµGFF:;;Óét{{ûsÏ=çõz¡ô‡’Ûív·Û]RR’L&C¡*0/Êd 1A%[eŒw.éS§žxâ èÙ¶¥érûxºÉdŠÅb­­­ÅÑTooïèè(BAÑ&8þ¡¹@c’Ö.âÉ›Òf³áœ uI&“±X Y5‘2Ý„èohJQü§OŸL§ÓÅÅÅÕÕÕ95°øÜá`_Hi FÔâó…FÞwœ%ÊßkÕòðVÞò6iš611áñx:”Éd.¿üò@ ðøã¿ôÒKååå·ÞzëóÏ?_PPðµ¯}­¤¤äR6oyË[Þþô|¿œZv(„ñäÐ(A@ÄvÓ*Á“CÂÝnœ°Cã¬.ÁœºîMOOOii)íeqýøøøÀÀ@CCä´W¬XÑÐÐÇ)õ¡ÂøYª.¼EƒÜ‘¦|øŒãh»UUUutttuuy½ÞÙ³gkšÖßßït:gÍšçEœaë,ÑŽ¨‰xÀ \‚·¨yÉŸ!\‰ÜTÊ/§> Q~Œt㦙X0h"ø!‚%bÃ÷©T é KKKU=9:ø2c„õ °‰ øiÁ`ÚXÉd’ÃŽø¹Â„“qì/ÅæW9Ã2€V`±XHƒ†·­±A¤qËÐ9#vº‘E 2äÛK/tЇ’ÍjÁHã!{‹ÅívÂÛ¤ß"k´uxݹ%… ŽŽŽæä #PŒ|•)þð†B°Ð7Ѝf‡6+Œ®¢2}(Á\>B!5Fqâ,¹Ž„¾åRŸb ›N¥R¡PaGœÉH~&åH¥zQ;s– ±í¤‡òF f _]“,ÌèYSqÍD§ª««khh {ÆÁa DLÃ÷À);­$@ˆè$‹Æ‰$¨;¥û¤á‡QÄnz4î¬éÒ`ÔJ˜D”hã ÙQñ êa†úý~¿ß¯²Ls±X Ã,«,/$~Nl ¡ãkT‰ˆÙË™7€.£7ÑÀÀ¤>¬êÒx˜à@o †ˆ3†¾¾¾T*ÕÕÕõØcÑ!½¼ˆ:Ê!ÌnÄ÷©ª !{ÇÙ‹´6Úl6`7h8944Dà^+$¶FOœ8‡’ªª§¼¼¼¶¶VqæÌ™ññqjCT“ÆÊ\RR¢è'aÄü‘L0L§Ó€–ÌatÅãq,N§÷G@;7а¿t:=<<Œ6êDòvX) ‡Rx¿ÜI¤'ër¹0æ1þ'''Ãápqqqmmm4Çãn·ÛëõŽã«ÕZ\\\UU5{ölè|©ªZWWçõz9ÃŽ¿h°a­–"pùjIÍh\EùiA“–õ"«Ëçá­¼åmJëéé¹÷Þ{+++ûúúŽ=*„èëë»ï¾û>õ©OmݺõÇ?þq*•ºãŽ;î¼óÎŠŠŠ¯|å+—º¼yË[Þòö§oð"ñdtà ´â\BaFŒÇ5tF\BÑ’@©d²S_K–Ð.ü•ïç¸üŠÑi§¶Úªª’PùE<4Cd{›Ä¾ ÕEUÕY³f­\¹²¯¯ï•W^X•Ùl¾úê«´­ 1YØûR-x phÃ@*“óPt½sb)z†xòÐ(ЉËN)z8U„WAã§À¥ÂÂB·Ûít:Fµ€%‰­[·¶··××××ÔÔ8§Ó‰ô|ŠÎ¶…B]]]ñxüEQ’É$yt€WÈI†ú;ixiŒCÎ)¤PzGãHÙgé!ÇÛáp@Ã…ÇTŠ©.¡Ã"D%ã`Á1ŠNºá. ‰¸+Šâñx¼^ooo/µ3>"øLˆr%f! z:Èq€·$0nš5AÕS1H˜2™ÙlF²B-;úXBôÑIÁ§¼G80!áwÒ”§o¤.p1©sižJ…ç“H˦¤¡ëÑ\™ìò‘}õÿÈG>òùÏþèÑ£MMM—ºZyË[Þòö'eäTIû*…Ñã釻Á´ !OŒ2ºâééÀëãêF †È–Ôú]L>.ƒIỾ¾_ú|¾úúúÝ»wC†£³³shh‚è…:‚Ÿ¨Ÿ’/‰ûÛðèOðÙ2L Éårmذ! ½ñÆÛ·ow8k×®õù|„G ^À¤8x' 6 žªtbœ1¤RBãà_J…èšX,¦êBÚ(›¦ô$°€>àє֊:þ0XÇGòD‹Åâp8ÀßöF;::‚Áà¶mÛ&&&}¾à?'“IÔîèÑ£åååÐCá#Å' ¿ß¯iÔ¾¨ãü‚n剫$0v˜Çã!Ô’ÚíOX’`†ªkœñ!šÓW¡N!䎼/´ ÏÈö'F  G¾(d‰“Ú@… Ðïv»‡‡‡ óÒ²ôh,ñÙ—²¨¨6i­Èd2v»½¢¢‚+ÉIãó»Aøu&Š$˜0 yþšÎß¡…¸ˆñÏ„Ìf˜f?_îØå#™ÂÖøjP)‰ áuSû€ú°8¡Ó¦O&“‘H$cfѺ‡1ÝÐGè& U£&ÜÀ«@"M—ÁÂõDD•L&Pªx<~ìØ±ññqEÏ凉ÂT©ëI˜‰@7„ŒŒhš Áú¡ÒJ«ê) U=ù) +3t0GQal“D44žI}_Ñ5þ¤ÀpŽP`}(---//Wt*™×ë: ˆ§§§'744PvL\CYQaµA+¡ûHjŠë£aú¨ÅŸ8 P†ZŒ$Òh½Åðe(Ú²eËîÝ»o¾ùf),5E  ýLB0®(+ð÷/ÝŠÚPÕ•øÊÊÊøT¢?ˆHFäiͰHy\ãr¹„޲I§J4NHØ‹V šûœeFS˜Àt¬xœ5IÚ‚4iB› ÚR³@YL4”™A“ž¥Â{<G"0… ŠD"~¿?ÛívSb=!/Öþä«+=‹ÖX#™~EÛiC…^ÿœ> 5ζ¼ ËÃ[yûs1MÓ¾ò•¯üêW¿¯««s:ýýýHÏô¹Ï}îî»ïÆ[‡ìÆoüò—¿ 0~Ïž=Bp¸„B,[¶ìæ›onhhØ´iÓ¥®_Þò–·¼ýI?`§M•ÊLµlš‡Ÿ8dÀ·Å¤7OÀ¾û-rTˆÄ ´)Ç5J6)ƒ~H8‘M›2þpþs‡ÃóäÂÂÂÆÆF¯×‰D„½½½íí횦!0„|KC•â¤ä‹R Ñ8hlŽáê”””ÜxãóæÍ ƒ>Ÿ¯¡¡-ñ3^¡«„ù)ôW ‹ æ#“ôȸ£Hú»pèÊL&"…¹QÛ £þ‚·„Aˆ\m„@@pàÑÔË£ZÃuïì줤–œ/¦éúAÑhÔëõ"ÆÔ*8Ÿh1«ÕšJ¥vïÞ­išÛí¦Órú9ùL&o‡»ªAÅÙd2E"‘X,Æ5¼]Ëd2!P…@E·âÓ„<=´ôˆXG@ŠÒ•Ñ…“‘@jÓ`1w())ñx<&=Ÿ zâôt©PP•â2&>E´ Σ!šz AIˆÿ"6 ó²Ë.«©©ÁÈDj‚™ðÐ o"´ÓŠ£ÒÈ!€;ƒD’R4&IP¸È†®È÷ãzdh( , ?GFTºå‰Åb'NœRUõ¥—^ª©©Aìn‡#‘8D¸ùè);¢@8Âd$•ªO®2Dziü` ¡Õ’Ž€,#‚h‚Óé,**¢äq|%G> ¡Ç*„Dw³X, çàA Àˆl$‘’„nª¬išÍfÃ:CwæðÀ•H £¦g÷#Ü–Àô¢çxX%'¥rÿ_dC«………~¿÷îÝ™Lfùòåuuu`0¡¾¸­Ê¢¼éÆ_4j.)44 à0ú’à0ž+À m N"®D”ºÃá˜={vmm­Óé¤#zyÑI ~zAˆ‰ª§;à?¡YÀ|Ò›… $ “pñ;ޤÐáIÝáA=¿$‘Ý9Å÷<á• ‘¼8|OëI:†¡H…Ç„ŠÇã`/ªº#‡21ª 2¦ûcˆ‚ö:º˜ a\2ežºü™ªç È0>š­X[$ ‹¿ùØÙ!þE"ø@£퓇·ò–Ûð®Ú¶mÛ7Þx©ËòΰX,¶cÇŽÏ~ö³ÿ÷.(ìĉ¿úÕ¯~øÃ>öØc/¿üòŠ+èOkÖ¬Y³f"ßÿý>ŸÏl6www;ή®®úúú¢¢¢{î¹çR×,oyËÛÿ³t:ýÒK/ÝtÓM—º y;ãb‘ $Á8åA0 ,¾-3:"Û+ãü~7ÁÎ3…¾Ã#¸JÉfÄŸ¨fëMp|Gƒ¦™¥}jjjª««ûûûAR8vìØÒ¥KçÌ™ƒ| ñÇÑI²’-ðLgõ`î@å$#*?·X,sæÌ©¨¨d„®2z ù ð4±lJäÕð!Æœ¦kESÏrJˆÔAôDþø äÒpÈ×Ðîœâ;€ìPÒtE—@ mèya¤1 _—«ã ƒ|’¦sj„EÊ÷ä@¹ ƒ%%%™L&’Ô7!,Ü5âG÷à%Ay]è¨%NìC¡ÛíVu=5Ü RÔQ‘ØñV(¦ ‚2“““ˆÊ!Lü M @$éëëƒä?”ÑÒétWWWKKKcccCC+‘‹x( F£Q°o¿ .( `%;vÌãñ%p € ¢×!-™LZ­Öêêê'Næ=~âóùš››-K0$æn‹Å€ë„:¢Ö€ù|@”:™LF£Q"=axTAÙÍ@¾ ÂEà ¥n†Î\ñŠ–‚‚‚‚ÒpOK o8ÎÉÉÉ`0Ʀ+Ä;Np[brrA[´tHðÐ"´)Ö£‚h^Ô²C i£òlAcFQ”ÑÑQäq«¯¯¯ªª‚Ò6b¹R†8`FB™téz“žy€nÎys(-ñ\GËAàq¬&n2™(6– $ ’ÈÊñG%;å"_ƘÉÖàçë?JÂá0òÒA @¥³zéÐ")˜þ=•Àÿ–£º’Þ¹*‹ÃÕô„§v»ÝjµB1P@ ãëOèbgÍózIñFË0Ý}éÕÃ_è Ëæ)=]xIü]ÃRø[’8_|T«zl»´»ìÈM Á–Žâh€)zØ/9eÌápÞ"¾)ÄaôÒÑ­&&›ˆ7q%MõUY`iÎÝ ÷$$pgiÅÇ<ï QþÔ R\¼ÅÅ·<¼õNµxà‹_üâ—¿üå<¼5C³Ûí;wî4~ßÔÔt÷Ýwýë_¿ûî»7nÜøÜsÏ­[·NºæÔ©Sétº©©iÓ¦Mo¼ñFqq±bùòå—ºNyË[ÞdÛ¾}û{ÞóžòòòK]–¼§ådHå4Ú Šl A™BÜ'röfH:Fe Ý!§’iÙ½ä¾òMžqß/ hˆT*…EYªªZRR²|ùò'NÀÃlmmݲeË 7Ü€ƒß)8Eè{úx<>>> !AE±´¿ó ~šÉdr¹\À¿Œ 9c«Mˆ ¢áb¸gÜûRtê ßõ*£‹ªÐɶš­ö¢èÁä­áVpÅ)šO0¦ ß‚ÞFà}`góp¶iFšÈæýqhU2`"`N æÑ`3™L¡Phß¾}ÃÃÃ¥¥¥pNH ~ *ðY A¶F‘L&'&&b±Ø™3g†‡‡_yåŸÏ—N§'&&ü~?[‰D‚´· h ]rþ }€`sAAA8F$Z<Ž„™ñßîîîT*õ›ßü2p^¯7•JÅb1¿ß?<<¼wïÞ’’Šß¤¸hÐ#íííP&úùÏŽãC·Ûí÷ûÛÚÚ‚ÁàÓO?}àÀ(Í !FFF¸A67hî™ÅP´ÛíñxÜáp–Û¬“¢¢"P‡(ˆðÍH$B` eZ0™LPBé£@ a#nºØ@¨2sòœ1Ô)fPcZB #Šbs²èlHŸ*(¡P(‰{< #£ ”Lm™ƒÌEÑŽ|ª‚B)êHŒ\c9IU¦¬DK•9£;Sh-qš={vss3ô’h:HÈ8X(0EÉaÈèÒûX ˆD)A?BW04¦±°q !…XdX. **ÇMüÂeÆÿÊá6…EÛbB(ôRC9‘—ððáógÏ®ªªÂd§EŒÀ8¾òp`é 8CCËxÖbÄbrO`V 'ZùKE¢E^É>RâÈ—¦+**†©©Ö^靯wkΛaA”ÄjµÒ)5©ÞÙR›BßrÐÅÒ€¯Û4ìAÔâ!½&“ @³¢‹Ä“êß±cÇÖ­[÷â‹/ !8Ï+oyËÛÛÄðâ%²C¢hbv' "[¡"tsL ‚½P$‚Ø&&&NŸ>]QQQUUEî:‡h©.¤ÀÍ I ‘ t¼6à°tOŠÔ#% jXHwÁñæ3Be©*øH£ÙG+¹¢G„qÿYÉ>- Àmá Ý󧵚PH*0ñs9îÃ)±²á–>*C,ƒ,`”#«”zGQ”P(tðàÁúúúÆÆF!Äøøø¡C‡2™LccãÚµkkkk±RQžþÆ‘820Ò‰×X4a„€dt ~¡ãV¼xÒàWô°>,,Ô¶œ€LfÄCùåÍ Ö¦áJ=EÂU ƒ,µ)rÎÃI5¸¦sŠi|J#GÂÅŒ8`ÀG?IUÞÄ䋉ÊšT}â<ÒkWj®Œž7Seòj´øP;Ђç¶Tx“žA‚f“ÐJ…)*by/--5é %ðÊÙ‡|!£ô@“©M„.·ŸÑþ4F¨¼H–‡·Þ‘F[[[+**ª««/uYÞî–J¥þöoÿö o†‡‡ï¿ÿþ_ÿú×9¯Gà¡dªª:t( Ι3Gñàƒ>òÈ#}}}û÷ïw:UUUHÏ‘·¼åímbO>ùä®]» —·wœ)S“¶ø!3}C”lQ:Þ$]‰PCî ts¸Ch¼ÒXéÈ—žÎcë°‹5Æ Ãñ²ÆB“èæ………Ë—/ß¿ÿÑ£G!~‡8088Ï¿¥“[ÞA€ŸÅÐÖÓl6'“I«ÃÕЮAîE%-jl¸JÀq¥-ÒñWOÍH~)6Äx BäT=µÌÄ’¸ }óMACÓ«&ºàÙívŸÏ—ÉdÀSö …¨>ÞÝÝ ŽønqÚ°aæM›@§"ú€Ð#¼ÐÂpЉ4$ÈuAü~MMMCCŠÎW<Q+UÏ•‰Tˆ;$¥0z\@!3Ôþ‡£¤¤Äï÷755UUU¡â]]]###n·{õêÕóæÍ#¢¢³lHÞ4"Ð¥Ó~MÓfÍše±XŠŠŠ***QìK“…Ó%ø„Å $$TB%šÿ—Ø";‚XË6 NSvâ€Süœ÷ÄÉm&€N²’õL¹©.ô¦èÊMZv´Gÿñˆx<±³ÒÒR(õL³ÀJ šÂ˜Rc*Ù  œk8µêÈÑað™…¤Ãá©j¼SPãLBñ‘#=Ñè·ÿD- A9KN1¿Z¶¼ºÊbÛ÷ÜG/8pÀçóÍž=Ûn·ÃË8tèP__ß’%KV®\Y^^®is s1ÖWÉVÔ’Æž0ˆœ+¼ÂkG)9펦0µ¹ÊÂÙLL–‘#JÒ{SjF^B¡c:ÒLBà]FãPÍš“ 4ã8צ¦¿4aŠ.è¦êaƒÚB]J6”,²ƒø(¹‡‘L8Ÿ9{“ÃXxkгh‘‘ *®è}~éþÒoù2ÈÏÿ(Ñ I. = Ø8n/’åá­w’iš611áñx€è_~ùå@àñÇ饗ÊËËo½õÖ矾  àk_ûZIIÉ¥.ì[ÑÓ’ýÛ¿ýǶ`6›í\ï ’<>»Ýî¥K—>|ÿ5™LÍÍÍþð‡?õ©OÑ5yË[Þ.¡Ýpà ÷w·k×®‹ýÍÛÅ0îHâAmÉ‚oÅ8rÄ÷‘BwŒ3,}˜ÐóvK»gn%²õìùùŽï¶‰$B>*gh, <¢t:m·ÛçÌ™sÍ5×Äb±S§N!ËR(jkkSYÀˆŠ"ô£Q¾Ý‡‚ít ÞîF°„“ÐJ‡P®°}ŒL d7‡Ãɤx<‘ª¸Ó ‚ ¤p¬º¡$n¸ÓN%ý^=‘¶è(˜ú¥EíÎã Ѩ/Qü€[ûSôX3”È hDB§ð£èŒT*…¤R©h4Jçð¤T…¡EQ4õûý±X, §R)»Ý¾páÂòòr` Ü#…§¸¤  $,ô29ðŠ®(,„(--E¸¢¦§0G´&BQt4‚G5&„ÔÈç Iògb±˜¢(±XìèÑ£§OŸž;wn}}=¥Øã Ú ºŒüaE§;©ªZZZZTTDB?¸o`ªé|"¡Ã˜Ë¼s®ôßœî–ä'S;PŽET„f_4$7•/9™qw]0)EÆßh Kúîær¹æÍ›‰D+œ³¥¸ËJþ§‘a$]¬ê*x’rùT¢‹$rÛ™ñŠp¤@ѹ*F  —WYÍÎ(  ÃTf\ðù2ÙJLÂ1(:¾É‹ÂIGeùBqqqMMMooïÑ£G}>ߦM›ªªª™¸k×®ýû÷oݺ5\ýõ¼G4Ù—ÉË—F‹Â0/>æ9y*“KržºÙúˆO$uõo:I+ÊØ9“šš¿¥Ù*½©MÙÉFÂï&Ø{VLpM…ñèLÊVü¿ÒŽBɦþуø¤ã×Ó"@]`u´£ ?i:mŠGø &Цä‚êðvv¹\ØÐéšô8©ø8Q x(^XŠ®ãÉgAž½•·ÿk===÷Þ{oeee__ßÑ£G…}}}÷Ýwß§>õ©­[·þøÇ?N¥RwÜqÇwÞYQQñ•¯|åR—÷âÚ ƒ …>ú¨ñËüãrO!Äüã¡¡!›Í :ôì³ÏþÓ?ýÓ?ÿó?ÿÓ?ýÓ×¾ö5Ú2æ-ooÓÞùéV‡††KQUU¶BÎ+úÓŸnذáñÇ¿ýöÛ/u©óöfß)JÊ *)ºJ+t¾ %{¬J¤9s³KOçŸi;Ëy‚©±Ò 6?ÃÄf”(]DZ1Â[¸•Ýn_¹re:v¹\mmm¤¬¤i¶bÑ£4y‚-;‚!P€qËË˯»îº¾¾¾íÛ·ïÛ·oÙ²eõõõ™L¦¦¦Æív»Ýî­[·:t¨²²âe|’* Žäi¦ì<'Òg*³Ä?ÒPÓ#ûh­#XÉæ?òeŠ?HË–¥ÙxJÎÕ@*¤±ù¯øÐU²±QÑ­2LX]c¤?‘k;Á±Ñ©VE?oì°Šz‡Jä\~f€õSÓµùh? „ þv6v"¿66ˆý' Rú­ÈFEU=„ªª%%%ЈÅbô"6Na4ÿ½Êå'tÆ=ŽÚŠØ‹do)¼566†7ú[ùÐ?{衇î»ï>§Ó™H$>øÁ !îºë®|ä#BבýÈG>òùÏþèÑ£MMM—º°ÑÎ)ØpóæÍƒƒƒü›ÂÂÂ|pÆ ç}OتU«èó{ßû^àbÿò/ÿòÍo~ów¿ûÝ«¯¾úç@ ËÛ;ËÞ¡éVãñøSO=õðÃïÙ³' ò?áe|ã7Þ~ûí6là°²ÇãùýïóÍ7ðƒä\¼½#Ìxæ‰íÝää$d³thŒ[!X&>~ ˆ ômB÷gL&BØ DãJöù3íùŽ™öÊ”À›Î'ù‰%®‘vx|¯Ïa/¢lƒ(--½êª«êëë÷íÛ·cÇŽÎÎN¼÷-Ë’%KæÏŸO©Ž–J¥Åa,Ô‹ ¦lnxäßéã>¼Ô‚!#„yq¯ÞØtA›u©ASs×@:‹äWðD ùÙ'ötRMDŒd¤ám¢¨PÉ‹ŠòP|°Ç5R›(º(¹´ã'‘Åb ˆB$^ŠdAÇe²¥‚É­L)tWGB E©ªªºúê«!ÄÆ}!1GQ<(0F‹Õj%ÆÂâò]6…ûÿÜ̓J}:†²ûäädooï‹/¾ØÞÞ~ÅW,[¶ÌápppJ°ÈÁÈw”I€|0”ÂóTf  ³¦’o©1&¼È½¤ÑÂg./µª¦+%£îO‡y!X&AUWܧ¦À“‚°h¹à0–Æx1䘨èQcÔæF€þ+áòJ6å*£'jp»Ý42s AÊ4„4Æ+!€XrhÅÔ°/§fˆ$(JɆäY)݇Ê)t¤@ÓJO—À51-H!=‹G½ñ…"ç*GðfM”Ž1D6dƒßÿÂøihh¨¯¯/((ؾ}{[[[uu5b‹‹‹W¬X‘H$¶mÛvðàÁ¦¦¦ºº:*›É-—w„LЫdÌø/ Ãq ‘ŒsU×ê’€'©©ùûQÓOè|ç?Q˜F-¡\Ö˜VŸz¦÷Ä l¤N«,ƒÆr/€ ‹?‘x=ˆxÐôúVtœoc+D¼¿’MDwð*ô8ù9“„ŽI#\è¤cV"ï ©×Óû—/’RW€¿ÌõøŒÓt­z<ïq¾«! üeNÑ¥Ë$*îŰ·nÓ?99ù|à;ßùN>ßÜùÙ7Þøå/I¬÷ìÙ#„‡KqàÀ!IJeËn¾ù憆†M›6]ªBj3 <¿û ýô§?ݼyóæÍ›¥ëÏœ9sß}÷ÝrË-Ú{ýõ×ô£©LW¸¾¾þ†n¾ï¾û„·Þzkeeå<0Í=ß÷¾÷ͤx¿üå/ÿîïþî–[nY¹råáÇ‘îçOÃÞ¬žýs³·U»½ãÒ­¦Óéÿøÿ¸ûî»Ãá°Ïç»òÊ+×­[·xñb—Ëår¹4Mëïïæ™g>ûÙφÃáÏþóŸýìgéçMMMëׯߺuëµ×^{©«’· 2h‚@ÒZ§Ü}Ù³‚Qhwb€€GJÛÓœŽ™bÐÅP²C hJ;Qi¯"aƒ(mã+ñ 8þÀyÅÅÅ.—«¦¦fñâÅ8áìììZ±b²ŒÓV’ï_éδ åŽ '¡¡ˆÑC%—¨¸†À|ÉÑ‘‰Ãw· ª°¨4j+¢ÀH½@,I£²#ã(6§-h:ņbF´ìŒ`„‰T¹`‰Ü—HyTr´˜`þ$ù]]DŒã&ü†ävŠì W)´ ®fà *** ¹ e+d =‘q#oŠ0AãÈ'ñ z"!8¡P(‹…Ãa³Ù¼uëÖãÇ[­ÖÅ‹CQ‹""ù”¡L^èG•Iƒ:€ö4›Íccc$lÌ|4&&t $Ã"…U¦A.IÒ ’üO‘]KÑžR]h²dôÔ\ÓŠÊÆ{PdÃÄ„â«qôf˜ð0x³¼y%|—T— î«c˜e˜Ä5ÝŸ|`Z énSáGFÇ[dcI÷>.¡`‚Q«”ìt–˜Ô¤ Ï9€¼‘¥Éb¼3U6g«J×伌nNÙÎÐ šh4=5n"#Äää¤ÇãY²dI,­®®ÆÀ(++[¹re0v ôBÔØQ™4’éžô'zrzr2™pªdS©<’D-,t’& ±GÅÆIAü¤”/‘´ãȰ¬Ôƒ ö:X¬Äß,ëëïÿÈ'>)„xòW¿,.*—o¼õƒüàÀÆ™·sµ5kÖ@&9ßÿý¼èîîv:]]]õõõEEE÷ÜsÏ%,á9÷Ç}¢ÑèþýûwîÜiü‰ËåÚ¿ÿÂ… 9¼500ÐÝÝ-„¸ùæ›#‘ˆÝn·X,######¸`ñâÅÅÅÅû÷ïýõ×§ºçøø¸oM_Í•+Wžö‡?üávÇ›hoVÏþ¹ÙÛ­ÝÞYéV;öÞ÷¾·»»û“ŸüäÇ>ö±U«VMµ­üÄ'>!„xæ™g¾ð…/<û쳯a×\sͱcÇòðÖ;Ô¸K@ØeŽÓ²ù ! ˆ;EVXð·Á# ÃôGè>*Ëb.r‰ ã†ØÉeôTñ CÜ(Swz¥Ê’눂áððJât:/¿üòêêêÅ‹=z4 !p‰ÇòŠÓ©2¥ã{îœ9ÜÕ—b—2Lô‡·(g"‘àÏŃ(1“Ð]ÄL¶“ÔSÍñ©†‡äJI%w£ER}Ž·Ô/‚ù]Æk¸ìqÆ T•³1¹»ÅÑ¿4Þè³äÇò+)E 6¢E—É ]MÕô'EE ¥ú !Âáp,kiiÙ³gO8^·nÝ‚ ˆeFô7ÁÐ’"¢>’œTÇn·C­ D0Î0’ÚÖÄòHJƒ™Wp&C‹—Va–œwà>-5;ÅAî@åÔÎÆÆ[Œ»¬9ƒŒ„ÁÉ4N‰56•{I|1-;ÚËØ˜Æ2HÅæ—åĤ+#ø¥yDd(p‰8 ü4Cš·<‡9Œ˜ñ·6â~Æ(`Ýv8ˆöÕ4­¼¼|õêÕüãÏœ9SVVöMaaaEEÅÚµk‡‡‡[[[׬YSZZš1®óÞá}­NpªegGá¯6©—1Ѽ^¯×땨ÓÒ ÑØ¿|8ñ…ˆ~Èã=µìx@ž%P°‰oÌ™(¦~ƒPÁr¢`9ç‹Ðå81´ ¡Ñ›šVoé&´:+¹··÷¹çžëéé¹ùæ››ššhKÇ5J4¢{tBšPB„‹RëQ\³ÂPocŸò¦¦ÌŪžd@è×ã£s:öÿ9¨èYˆ_|Öðä™Û–­¯¿|‹à­={ö¨ª:kÖ¬™³Ñ€ÇãykŠ÷βS§N¥Ó馦¦M›6½ñÆÈô·|ùòKX¤óî;ûÌ™3çŸøÄïÿ{þ¿•ìýïÿÈÈÈÝwß==Ìô‹_üB¢ÕLuÏVÓårmÛ¶mÞ¼yÿó?ÿó¹Ï}î­ìˆ7ÝÞ¬žýs³éÛ- =zôŠ+®¸Øì\nï¬t«;wî¼é¦›n»í¶o}ë[3ùÉ{Þóžë¯¿>;vŒ¾Ô4-/„÷5¾O%þ‘ÿik%¶¥eÇ‘*m…ÎvÒ“¤.ø†R:ç§+~…Q²‰Òy5ÿL ý‰vºˆSC(eeeåÒ¥K#‘¨.p“83 Å   º‰´…͹ã7ÙHQ[0WSÑqCÄ)dX^?œóŠ‹\ÉãÏol nFZè𖢟ÏONME¸›~LÒø…šÈˆRñF†C‹£`FÞnô/UŠü¨œ>ª¢SZx ›TB£ûš³²Jö;÷Æù "/¨°°0ž9sæàÁƒHÉ·zõêÊÊJR‘ü=MÌ01.L®é¬ ðÑúúúE!`Wä‚·hÿ|+à­P(ô“ŸüäG?úÑ#äí’˜’MšàADÖ ¿Òæ §ß 2Iwã;x®ó…KðÐEö®ZB²´l¶Ž¢‡ ^¿©DCàF5Èåà6…üçØOkz ž¦i · ­a"‘ÀÚB¡èæ*‹¤3X‘K—Wd{›`¡Ý8h¥êJó·EIuÐv_dS ”`[Sù!FQ0ljÿ "ècccV«ÕëõŠl?Pä:ØÏé‰)u"ð*‹_‰Í=)õp”ĈÁÑŸŒæ‹š-E …$Ä& ~ „ ò§s.!¿y!3™ÌÄÄÄsÏ=700Ç›››çÏŸoµZS©äùE.‡™ð2 ¨!˜Ãeª¬¬ŒF£POB ŠgªY)r²RI]©à-ãø7ºŽÆ;s€–•…ÜÒüRfoQŸJåœf ¯ÇtÉÙÑ‘¼ð¼vFØ='%¦À‰Œ€fNüKú“„¼Hç ü‡”,¢¯¯ïÌ™3Ë–-«©©Á€‘úBzÖôÅžfÀL…¡;‘¤Ä>•Ã4¡5w éñ’åñxöìÙÓ××WZZŠõ/©ºººÖÖÖ@ ašåÆ¢bÍ™ŠXÄ»€ súÒH|¦1¦(JUU¢§½FD‰îÀAzÍñëéÑÔ›>“c¥±Ê{Ö²°®eŸQi: Ç£Ñèàà`www&“)++kjjª®®F `'Þ“¤¼)tök4ííí}饗Þx㠿߯ªêÿøÇ¶¶¶Ë/¿Üív>|¸´´ô]ïzW]]f8÷â'CFôP°S ~¦°0^Íp¼Awæ¸!pUçK×óô#ØÛ€´ëp80Î¥†%f–š-ÆÛ™ŽÊ.ܺº»;:;?û©OÞJ&“?}ìç[·o+à­ú§ª­­ýÙÏ~611ñ‡?üÁd2-X°àë_ÿzsssÎëüñO}êSBˆÏ|æ3ÀnòÆmîܹ³fÍzúé§›››?÷¹Ï}ë[ß2›Í—½‰DfžpzãèT÷±Z­]]]uuuo¢Cþä“OVWWOsÏD"1“â‘ÝyçwÜqÇ›U¼Kbš¦S•óF6}»uƒõfÙ;4ݪÇã9yòäy ¨]]]'NœˆÇãôÍsÏ=÷å/ùRW(oj$E೚-ÌLRâ´ßÂ.Ÿ¼ãñ8Â=ÈóÄ&•T…ÈÒÒÖt!Ä<"öJeɆT=#Laq4T l At¹˜GBÀX| N»y89‚%Q²Z­t6Kç¥J6K…ö¾ØÂòÔ]”—X¼‘9㉘qÂ@$I§ÓÈH÷Á¦Ÿ"†¸\GaèÂz$%§Á Ñ>Ü3BZ $ v›ÈÞa“n=55µ¿ÂMx¢ÇqðŽðMUëåw#_U@o& xP”CÖ* ^¤áM| ¡6§JN/î‰SwIS‰¼G<‚± ÉÓ&Åz>Dív»ÝnO$“““^¯·¹¹¢Ãá|'‘•I ¢é ìR>8HI$‰x<‰Dp¨iµZ‰ƒqKÃLJ6QNd{õ9Ñ¥œ8 ÿ¯Â¸Ÿ˜¼˜æ40¤ÄaB’$Ì)ÌT¨«MAÄ!+‚•Ìf3•$òqЊʌðBí%W}‡ø Uס!^Nœ<` |&Šì €9atxQi3,ç†0èL«,s¡Ý„CCC¯½öÚÐÐÐüùó‰²7¨zü5%»úÑ•ÓSzJEÏÐB©è5 \؈ ¢A2L»æ&­-„¶cñÇémø¨£‰×Þtœ}/¼Ÿ·½òêÖºÚÚú9³ñßG~ú³?<óÌGþ×‡Þ xë _øÒ]Y­ÖÆÆFŸÏ÷ÔSO9räÞ{ï5^<00pçwâóK/½ôú믯[·næÏú⿨(Ê÷¿ÿý· ^—ÊTU=tèP0œ3gŽâÁüÉO~2Õ‘Î[`ïyÏ{&&&ø79³žÕ’ÉdÿLîS\\ŒÌ7Ñ\.×ô ¸¿ú«¿;§jžŸ”x2™³N°$Ä0‹e2’@Í9r¤m†q HïÙ ±W_ÛvÝÆwÑÉÄg?yÇ{o½å­€·æÍ›'„øÞ÷¾788øÌ3Ï˜Íæ¿ù›¿yã7r.(?øÁü~¿ÂjµÞvÛmßùÎwÎ ÞÂröTêœL{³³§ù|>ŸÏ‡Ï.—ëb¤f›a™¿þõ¯Bˆ~ðƒóæÍûÅ/~‡yr4nÿøÇ9dðÜsÏýò—¿ …BS]Çw466‚Üñ½ï}ïW¿ú•ñš |ñ‹_üîw¿ûÇ?þÑáp ‡ºT¼‚‚‚o|ãœöuÞ=î÷û«ªªb±ïëOúÓÿøÿxñ¤èr–ö™gžùŸÿùòâ¤*+Šò¹Ï}néÒ¥©Hï\Ûµk׿þë¿fXŽi$ßzë­7ÞxcÎeí¬ÃFÓ´yóæuvvÒ77ÝtÓ×¾öµ•+W¯G¤[Íiç4ƒ~ÿûßõ«_=qâþ›N§gÏžý¿ÿ÷ÿþö·¿}Ë-·\Èóö64Éù!“¶¼ ËKÈ#‰oů$Ÿª¤¦Ÿ'+z¤$v¢Š@æçÞT0 ¨$=¾QÑ²Íøt.`ÁÿÄˬ²|Ó€2Æ› ô#ô¤éÒ€Ôƒ7Å¡+Ú壚„J¿F 1SY.'ŽqðP nÒøž^ú‰¢ÚO•qz“Ê)ÝÁèò"qÿ’HR ¼Åb1Ê6€BС,W¼a5¦½ÅÛœweNÏ6“Q”3e4†JdCç\'‹ÿÉb±¸\.üÉår-[¶lÖ¬Y8¨'"†’K·%Rd+òhš–N§=Oii)Ÿ§$ƒ©G"¢ñV"[3`š4Ì$¡^NjrMe"&ÓF2ˆ'Ô#¡~Ò”ª MX ¡^Î2ˆiUX*•:uêT2™¬¯¯·Ùl¼g©;ˆúš1¤zäe Ùj¬”ôtiUáP¯Ú,w›¢SVGFFºººZ[[3™Lwww{{;@–ÎÎÎÖÖV“É4{öl—Ë566688h³Ù½^/1‰Î:÷9|s©œÊ¯”Öäö±Ûí‡cOü½ÃNíJ¥’ɤÙl.,,L¥RÁÁÄá>Ô¯âñ¸¢(Õœ¦v¡¬f¦eë¸ ];_:]£¢³c±¥wÌÙ’Ò6¾%`%çãŒ:C}šÉN-B±ùãèÊt: vÙ²e .,///((°X,………±Xl`` ««ëÈ‘#[·nõûý7ÝtÓ¬Y³ÐY"ÞRUÕjµ†Ãá“'Ovuu-[¶ìª«®íéé©­­Ý¸qãÒ¥KÖ°«ˆZ(¦Æ¡xi¥ñ©JZ9‡1 bÚיȆ81rR©ÒÝä{9÷6Riß,lëÔéÓ½}}ïÚ°¾`ß|ñóg½u™ïºë®»îºëÅ_|ßûÞ÷ë_ÿzÖ¬YÆk2™ÌÏþs!Deeå+¯¼R]]]VV611Q¤'z<«·ùíc5{ÚEºùÌo‹¼ººú¶Ûnóûý‡Ó.x¬Çô¦ª*híï}ï{N§t¡iÛívEQ¦ÒjkµZÏz=R!\.WÎËຸ\.$7ùð‡?l¬¦Èv.¤S¼^ï°«ëîî~íµ×~øá{ï½÷¡‡zâ‰'®¹æš ìY£MUZ›Íf³Ù,Ëg?ûÙœU~uÿ”Ìl6;N!ÄßüÍßäl·©l&ÃFQ”mÛ¶©ªj·Û£Ñè¾}ûž|òÉ'Ÿ|ò™gžùÜç>÷ƒü@JMûöO·zÞMÁÍf³µ··Ó 6mÚd³Ù2†DZo·\–y»“<+–«„?)é×¶Ë'ÀËLó,B©p†·ð å1îMiÓ¯eŸ‹Òý§×øÖÜøWú—ç“´3D.¿W*žñ¡Âc©Lі׋^…h^žSÉØ2¼ýÈ]FW[76# “:Ž£ˆÝxvÓ˜FLÕþÆbü!zˆ ºj,PÏQô,Wªž@qIT£IÍÎK(  /˜žã¿RYN:É•’”à¦úŒ¿"ϽÍf3›Í„ò5ã9@¦Ô¶………‘HÄl6û|¾ùóçƒdçŸ÷Q9Iõ† 6¶CÎé# K„qé Â“ÓÚ¿aš¼RøaN¶¦/z™·’4ÓºñFþ+4W2™ó»ßýÎårM• áüZ/§Q˜XQQÑ’%K¾ð…/ìÞ½ûÓŸþôu×]÷³ŸýìöÛo?ïF–öM_Úk¯½vß¾}]]]ÓW9o’­X±âãÿøoûÛ™·Û9 ›šš|(**ª®®¾å–[þû¿ÿûÞ{ï½ÿþû÷îÝ»uëÖœ±ŠoÃt«Þd7ÜpÆ ^~ùe!D]]ÝOïð_¤={¶ÝnÏd2À’èn4ƒ4)ŽÅbxºÕR²!Z H`޼Ê9Ù(„JP„)uºÄh“€M—KÃLäðVN‡–)r )Mäâc*ÙažP(3›Íã£%‹j ¸ª¿¿ÿ•W^Éd2óæÍ!ˆJj^®Æ§d+òð•Vª§hI#‡NP$’ D§óÉ…¤ ÅLNNÚíö†††®®®Ó§O—••­Zµª¶¶¶««kË–-¡PÈív;Žªª*§ÓY]]=22âv»5Mp,Ob#Òš ²ÑLmZ,›4¶©¦Qˆ1ôz½>Ÿt”4Æü¥Q‹€`Èaj„Ãáh4ªªê5×\ÓÜÜl·ÛiÑÆ A‰2ÊDÒ#tC:$ÀZЉµ…òjz LR1CÉéž6› s÷—¢s6ñ6„’z8.))!˜O0ₚ(•D\’ `aÀexÇ©Lï*[†¥¦åƒ\¢Üääd"‘‡ÃcccŠ¢”——#øZÁGˆ^¯×ét*ŠÒÖÖÖÔÔTRRÂSôÒC1ìv{mmmee¥¢(îZ½zµÛíæïVºž‚m±Rñ× u 5#réðQYYi¹”ï©é=N×óòÓ¤ŸàÝD[#:{PõÔŠKBáçxn*•›ÑHV=o{õµm·Ýòô߉‰‰/íë×m|׿üÓ?^\xkÛ¶m££££££{÷î}òÉ''&&ÞýîwOCèîîBÜqÇäœX,–mÛ¶]rxëäÉ“³fÍr8çô«‹šuîBn®Mž“Ï”w!v­7U¿\qÅû÷ïÿèG?úñ|Μ93ÑlÊy+)a_¾¯ß&6óŽÈÙ­N§óž{îùð‡?¼iÓ¦~ô£O>ù¤ñ‡oqºÕH$Ò×ׇ°ô‹Ô’½ð û÷ïÇãW\qEη@~´ÿ‰YÎ@ò?ùá­"Nƒ>¯´“£½#Á"Fö‡Ê]a·§e«üÇ€¼¦ SXŸ&è€H•)Á C ÇS¸Ï©é‰H/ßxvMn °{æN2A„^Ã?KÔ048!|CÑ^àÐÑa//G($Ï„zmˆ}0O)5oÆœCBr_9¨!ùðÜO˜Þ¹Õ'EB¸8¬&¥,äŠdGû~ò:ÈyBÄb1ô)õ—`¾¯8Æ™"ᕼÓiÀ¯ä³CË&¿Pð)ôæÌ™ãp8à ò #yŸ#Dü_|sÞ6á/*Sá¾YF—ØçÈÒÌ’¾”ȼ sš ‹câx‡xx_hº}È{¨äÂF ;æ~²–‹áE.k"‘H&“ðù|MMMwBô(µb|||Ë–-Á`pÆ ÕÕÕÜæ½ 5—Ô’š¢(])-¼SUYÑv!4ÔÇÆÆ††††‡‡#‘ˆÍfs»Ý³fͪ¯¯Ç B°çää¤ÇãÙ°ad1N:•J¥ÇÚµkW­ZUQQa±X îA¤?ãÓ9úÀç¬È†õ¥ñÃÍÀE" Ùl®¬¬t»ÝEEEjv0ç?ª,%‚»ººâñx<×4Íëõ._¾|Ñ¢E………N§Ó8° ²—z÷M(ÕãÌ_RÐ;‹ÊŒ˜ÉVÄÇm³sðטL¦h4ê÷ûwïÞÝÒÒ²páÂh4zìØ±ÂÂBé,Kqq1Ž7ø¢gÒ{G›‚˘ÉÎWÀ5ïèØ†/ûšNÆÔ4-;vlÏž=­­­Ñh´   ººzݺuK—.-))QX<Îl6×ÕÕ½ë]ï:vìLj9|ÿ­[·.NWWW !Ö­[4–¶œ‰ 8 7äh#U¿ËhkÁW'šYÒ‹NÝø[@ð&$XT¸`oIl$h…W¹;ç$Rt@všä¹Ú–­¯ Œ\³þjú¦§·7™L~ཷ¹\®‹ omذWõÖ[o}üñǧA Pù¿þ뿦ÿö÷÷wuuÍü‰çoŒŒ”––NÍ-·Üò‰O|â\3‹½Yù‡Ï;¥Ýôá9?üðE*óŸƒ=ôÐCÆ/gØzÓ÷‹Ùlþå/yã7~ô£=yòäôbóSÝJZwò}}VöÙg÷ïßßÚÚª(J]]ÝòåË—.]º|ùò™(ÊÍÐfØÓ À¤¾žªÙ§‘^’jÁ—>iE:tèÐöíÛÇÆÆb±®1›ÍÕÕÕ×\sÍ¢E‹Àó:uêTkkkEEÅŠ+l6ÛÁƒ[ZZ4M[½zõºuëJJJ2™L4-,,,**Âã$âdÎ676µÔRá'öJwp¹\_ÏøDü0N÷ôôìܹ³«««··×l6Èia9%þ§ïQ»M?ÁF‹9¸œ!H£ ï,UÎÃkKš¼´nó;ƒ•#„H$;wîܹsgyyymmíÖ­[OZSSS^^n±XÞõ®wù|>±I£Æ¦†ÕØH.z8qQ ço„@ñ_%‰h4úÆolÞ¼¹££/GEQ&&&††††††6nÜèv»±ñ©m³ÙæÏŸ_TT‡ùª%5;2<·°°Ðçó$ œ´Æ‹”¼x¨ÆQzãÕ\QùÆá*½ÚŒ ¡–*Îûšn(½Å¤~WUÕf³ ›šš†®;ò7ˆ¸0ûÁýhaó‚2àÔÕÖZ­ÖüðG·¼ç¦7!–Ó¨)«ªª~ô£ýîw¿›^Ê×étšÍf ÎêèèH¥Rããã3"dùΩ .„à×4A„s­þÈÈÿoaaá£>ºaÆónO²O~ò“£££çzóT*uçw~ìcƒ‡,ôðº`Ë–-ÆŒooV™ÿä-™LèÑ¿°¶ÞYûf2™~øaöŸß­¶lÙ²cÇŽ»îºK¡iZ¾¯§±ÁÁÁ¿üË¿¬¨¨øË¿üËGy$ÛíöÑÑÑgŸ}öÝï~÷›+Ä>88Èÿk숎ŸÏwÿý÷ûÛß6>BUÕC‡µ··ã¯>ø` X¿~ýEj½t:3…ÓôvÓM7I«ý›8&/Þjœ·Kk8¥Maˆ/ˆÅbàó‹lÊ•Ð÷™ìêt¦çTâ»çœŽý$“-_¥é+)†î@ž?w5ñ 7oiS$aœÊ)•¼:þÙ~)/[FÑçõ→›Íf‹Å‚aÄÞâMMmHr!Ri‰»Dõ¥61¢EÜÈû’\YTùr9‘)%GzÄ4.+B‰D‚‡ð*zìžÝn·ÙlV«•£o………V«ðôŒÁ`’ÐÞMÌHí3\+˜kA@êT.1/-¿!uDAAÁ‚ V¯^ 0ø6TTÂ%ÉèÎtHä7ò¢ò@Zî‹JžOÎw¹ 9É»£ÉÅ+¨dÇNR+‰l|„W0g»ñ_I¿Þ¦oÆ¢Ò|oYPPÐÔÔ‡Ÿzê©}ûö!ݓɉDŽ9²gÏž… ®]»£‹SØÇLãÄòµ.§åŒÐ_”hMÜ»woggçøø8’-‚oooß»wïÈÈ´êzzzFGG=ÏÈÈÈ^}õÕ¡¡¡¹sç^sÍ5eeeV«As………‹…²I`LNÕÂÓØ4ÝDË”0 Jü51ÕÑžˆݼyó¶mÛNŸ>tR(°ÙlFZRF$‚Æ›.'œ1½izŒ$°3´F"‘x<‡#‘=…Æ0G«øˆ±â~¿¿µµµ¥¥eîܹ·ÞzkEEEOOÏøø8@ÉÊÊÊT*R›‚âÇo˜Órö‘ÆbÀ'''ãºÅb±X,Çy>1›PæP(ÔÒÒ²yóæãLJÃazJ2™~ã7Μ9ƒ5J¨©n·Ûåri:oËÈ<À5ä,œ îÛ·ïùçŸüñÇó›ßlß¾½­­- ¢x”.VÑÃ¥WðôSRŠÒP‘P­œwЮ©V†‚‚§Ói·Û鸂h€TZz ­®|јù|Ìi¡Pè]²¼ÇóowÿïX¸««ëöÛoWåýïÿwÞ‰‰*„X»v-ò–·¼å-oy{'ÚìÙ³;::.ÒÍ—¬\MŸ_}é|‡×wí6þdÝš+ðap ÿÐáÃù—7^sͦíÙ}Ị·Æ´l&‡u¤+%¤IŠÂPU5 ¦R)›ÍF±?´A$m#œ½‘&‘–­ª‹M§¢«r[QXXÁ]Š#ãbR@” Ã÷y„M]çBÕu²iSHæ´ñLI ÅmQ0¤^BD £éL®ù͸P`Ü“NŒ‰tF"b ‡HK0\Àä-u<Ç£!ÿ/ˆñ^ÆCáá) ¢x<³ÙŒÊä½¹t¯Q €M¼[© ðWBˆ¦÷âà#'PÑiwšhfôdg„¼( +Ôb˜H$СȜר°°ûT¢Ô¡‰D‚œOEQÐ×€© äËa`Ü8¹.Š.Äãw„îHk ë!â¡`®¢3'''÷ìÙóúë¯ßvÛm555‡?Q³Õ¾4†&›Í扉 ¤Ô„›M¾ÊS“Ü-Á =è+Ñ}ȽT²£±¨åi^àäˆd2IçâoŽ]Y‰àZ^*yÆb’“VƒéÁ Œžc‘ꢪj2™„<¢(ˆÝãqdÉÑh4oÛ¶í¥—^B€^mmmuuµÃá(,,looß½{÷äää?øÁ¥K—ò…Ÿqs Õ²ÃÓŒë0ÿ¬2¹tî¾J ˆf<ˆ)‹µ¶¶þô§? ƒ|ÒaŽÝzë­+V¬˜œœÜ½{÷–-[fÍšµpáB!DWW×äääÊ•+çÍ›‡µ?¡Å ƒÝÊ;Tl¼7¥°2ÞeÔ¡¸úAô+jIʦ%‰ñqˆî‹Çã[·n}ê©§ü~?ž[UUuûí·/^¼XɆ°ãñ8­K´ê’† -Â…)9á)X(°Ð!²··w||Œ«ÕZYY9oÞ¼ššzHÁÉÎZ6e•P ü›H$zzz¶nÝj6›¯¼òJ§ÓùÚk¯mÙ²¥ªªêºë®[²dI,‹D">ŸÏëõB{K3ЙBé¡-tB½q´€&zö^ CçòãããÏ?ÿü /¼0„2L¯Ón·¿ë]ïúÀ>àv»…$KÛ ,Ñ¡P@½°h*ÑÛ ‹6ZàÔ©S¯¼òJ{{{$û hæÜ¹s—/_ÞØØXTTˆ–p4)<Ÿ&/IÑc S¿‘ ݇Ρæk,ÚGzåIÇ<¦ÛH«+½ø(Ó*Kùsè…HoÁ¤ëÓéôgÿæoéÆîôöâ‹/äÜåþ¿*Ìä.çg~¿çί¿þz"‘ lK±k×®©@ÇÑÑQÄkš–H$æÌ™#„øÆ7¾¡ÍؾûÝïVVVnÚ´iÁ‚f³yçÎgý‰ÃáX¹råô×Ô××ßsÏ=3/-ˆcccûöí9×ßNo›6mzÿûßN7Eè¯d¯¾ú*]óÔSO©ª:Ím;;;‘ƒ[SSÓ׿þõ ¯T$BlÙ²eškþçþ§¤¤dæ÷üïÿþï²²² .µù4àøå÷¿ÿý4òáø¿ÿû¿¥/+++§ï—Z2™¬ªªšá­°îüêW¿š¦´ßþö·gÏž}®Åxû[qqqGGÇT½ï¾ûE¹òÊ+ÛÛÛÏïþÏ>û¬˜úôÉhµµµßøÆ7¦êˆ¾¾¾œyfÏc„H–L&÷ìÙó»ßýîÅ_œaeW®\¹yóæ³^öÍo~³¡¡á\˳`Á‚¯~õ«iͼÀÕøk_ûÚW¾òMÓ( ôÃþðÅ{{æM2¾ß5²oø7*3Mwi@–Á&OÓÝ~¾ÖtГ¡à)IVRÄ  Af”¨ˆGIÐ÷Øg+z„ K…ÑUD¶V®Ât|h»Iîþ:†Òo‘³JÕQc'óä†Q©xƒkŒo¥ä’ÕÀ9].×¢E‹Ö­[WPPÿù‰'žøÍo~óË_þò¥—^êïïF£]]]´ž(†è!iÉ•ø¤Z.BœÂ˜e´\pn&'žp¿È¸6¤1/ÍåX,†£‹¥©©iýúõW^yå‚ ššš®¿þúM›6ÕÕÕØ%¶ ‡0ŸE»ñ|R?òw½Ä‘¡’:&X¦>eöUu™íP(4>>@’Ò4 5Å)‚Óé,..Æ.((˜={vEE_Ö “^C&“)•JŽŽööö  žD"ÁË,²:Ô±X¬»»ûÀ---###~¿pp°½½ýèÑ£›7o~üñÇ_yå•ÁÁÁL¶¸Â¸QÆÆ¡ãñxWW×®]»l6ÛÚµkKJJFFFŽ?ÞÐÐpã7677;Ž¢¢¢ššÇ£èÀ4J¯Á‘üøŠjÄA¼p£Ñh4 …B~¿||||||bbG#šNY¥IM…D"===¡PHXŸXÒq¾ àhšªªn·¹nù± -€´$bvvvnÙ²åĉBˆÚÚÚÕ«W_uÕU ªªîÝ»÷±ÇûÅ/~±ÿþp8‹Å2,; _öùË£ªíÉd2‘H [(Ô´*ft yz—Q Õ\a¶|ŽÐ–Fzã+Lv€6'|µÄý1†…®GOT.ò9ë[—9q&æóùÊÊÊ‚Á ÇãùÞ÷¾‡³ñitå¿øÅ/*Šòý),,¬­­}ñÅ·lÙ²qãÆx`&:Ü{÷îݵk×L®øàƒÆðœ‹Zæ?ys¹\ç¤Ø}ôèQcHcÎ~9«=ðÀì}Ö[kiÿäí׿þõ?þã?Þu×]÷ß¿úæe÷8«Ùíö©:â–[nÁ–”ì¼GYooï—¾ô¥gžyØ.¬¤¤äoÿöoïºë®œ¹ß2»xëO~e{G‡i¤‘vÙ§î"Û™Ú2ÓiSˆ˜h>?݇°!r¼ù59™ü”ÆQ‰!²¥F¤Gó›ðpõé@•RI¿Í )Sha¨L}CÉVžÊYT©›xOñV™Ú‘t}Æ æCþÆ4O!Îa7R y9ù¿ÜOjdĉCʤ›kšW„Wjªæ Ð!ÄDèÂ[’%µ†qäó6Ô²ƒ¤(ÙÆ[@9›ŠÔ§þs8+V¬p8”üŽÕºÑg¼*¹°9©§”l ©¨ j#¦^Œ"·Y ¥2"/BŸþÜÓ¦ÆÌ9h¥eJÑ¥»äa;t !2ÒoùgøØ………ÅÅÅ6l˜5kÖéÓ§?>::ê÷û!ôc6›£Ñè¶mÛFFF.¿üòúúz—ËeÒ´‰™YÎþÊy€]^fšû”C‚¥E’À¾t:]RR  ÍfCÅÝðì~°„RÛ¦R)Ô׸‡MÎÁ#=ã|4›Í‰DÂï÷÷õõuuuõõõ¥Ói¯×;wîÜùóç#Œ·mnnÖ4íðáÃÑhÔëõ®X±*æt7ž ;v¬­­Íï÷§Ó颢¢ùóç/Z´¨¬¬Œ´ç2L8¨Ö¥d2‰È»¦¦¦Å‹[­VH‚@444tøðá-[¶D£Ñk¯½ÃI8;’ñé“N§92>>~Ýu×UTT ¿þúëBˆ 6\vÙe‡àŽÕj5KoË?L3þhŒ›‡ÃáÞÞÞ¶¶¶þþ~䦜;wîÊ•+SÃO„þò ƒ###êñå‘¿ÓAF{†B¡‰‰ ;º\.«Õ Á5é…"5ZÕëõ®ZµjÅŠ>Ÿ¯¨¨Èf³¡‘ÚÛÛ;;;»ºº†††b±ØÊ•+I|PZ®Eö:Œö§q‘Ji _^9;ÂøçôLi¡¦w:ñv©ÌŠ~ha±X€ÕÒ÷vð–bíÚµû÷ﯮ®þæ7¿)„¸á†¦I¿Fÿ¦°°ð²Ë.B !¼^ïÙ›  à²Ë.û»¿û»]»v]ìæ¾„F/^|øðaœ¬_¿þÞ{ï½âŠ+.u¹þÜ @;-¸Ó÷‹6uÊK!D<÷x<áp8ßÅܦo4Éþë¿þëÎ;ïü÷ÿ÷7ñžhÑhtýúõ›7o>k·Î°T©TjÍš57ÞxãÃ?ŸÇã0¥ÃáPìE§ÓÙØØ8>>ÞÖÖvøðá]»v#”˜6vO %‰rjº6­R—qùió“Ó#r&ï25;C¨´U Ú¯±ƒ„™¿}ÎÏÞŽðÖ3Ï<óÇ?þ2÷Ýwß4cæüæç?ÿ¹ÓéüÌg>sÖ'*ŠòÙÏ~ö‡?üáã?~ûí·_금ÖÐÐðâ‹/vttÔÕÕ•””\êâäíÿÙ±cÇB¡Ðôý2}â<˜Óé€áÂsãÇíÓ f%;T¨è'¤â‚vÀ—'’§JwãhÖ¥t:ív».\8<<|úôéÕ«W/]ºYùº»»Oœ8ÑßßèСêêê9sæLSÁœÃ)§ßÎW0U_Cd±" F"‘òòòšš(œ®Ä# yÝ‹ŠŠ–/_>gÎÐ^صuëÖÓ§O#÷ŸÏç[¿~ýêÕ« (ÉYr4ÄŒè´@cÌãj˜ñ6ç¦v@ÉOœ8±sçNJq·¾¾¾D"áóùÖ¬Yƒäxwø|>¡‡œDJ®iÚèèèÎ;÷î݇¡Ó‡ŠŒŒŒìÞ½»ªªjþüù‹…D ©Ø\f÷çS…G$5 Ña]]®á!Šª!Ço§ÓyÕUWe2Ç£iZCCCYY™×ëm‡Ê&i?q4…EAŠ\/©µ¹%‰Ó§OoÙ²¥½½ð±Äãñ#GŽ—””¸ÝnÂhè¶Se @•––^vÙev» ûÆo<ù䓼¨ÝÝÝ}}}ªª®]»Öf³iì0L ]×4 íƒîF &CÚn·744ìÞ½{Ïž=EEE–åFø»Âbäiˆ*3Ú©þj4LRÌh)“½ñ^Vt ¯`!ðçñ:'{;Â[ý×Ïÿò/ÿ*ÖTfL’̃>øÛßþö¥—^Z´hÑLj³Ù~ÿûßß|óÍüàgÎÔ}'Z><çíi^¯w–b*•úÛ¿ýÛx€¾Aâ¼_ÿúׯ‹ó] ;§F»„÷œ¡MÓ­çQª©V9¯×ûàƒÞtÓMßýîwóðVÞÞËé!œëÎfšƒ>À !¸Ä§Ð•ž]æC°¨ mé;.ƒó@ÚºTTì2I`ž{tª®¥ãÞž+Ñ8“_ªaU¸9‰ÔrR0P¥…› !aþ\^kRÆQôÔï( éÖs%©§x­9$mÁ©Ý4Ù„¿’Œ7w™ƒÓYP˜:~‹Æ§”pB¨âw“°0žRdTqÞVF„BÓ4ľišX“Æ>SX¨`àn‹ºÐ£%À”·-—·ŸÛÂsá¬JH’­sÏÕ‚Œãí–Édp–L#PvAߑڜžÈ5ÔrR©A¸Œ‘Ð &ü”šîIÈ äxkÆ FGFFB¡²+x½Þ’’˜c,³Ûí4Óé4&”–Í áZû4xH Ô‰‘èz4çâ”CJÚÀµ®$ÀÔ˜4ƒg‡Ê÷¢ñõF£½½½×_ýÚµk‹ŠŠZÕØØ¸téÒƒîß¿¿­­íꫯN§Ó¤E HÅ’&u.ƒÒ—¸2‘HÄb±Ã‡·´´tuu!„Óé\¶lÙ¦M›jF b ¨ÔívWUUAcKQ$õëíí}þùçÛÚÚ()s,{õÕW«ªªêêêˆBˆ@EŽòÕÂšŠµ: ˜E.ØbKßc5ò†*ƒÁƒ ItT$nq® è\r¨1rHšÆ?ôÚ€fâMŠ‘€%1£'Æá=%tˆ–Dè5FW§1|_eéiHóEŒÎù+æbØ¥rf¸µýçþçþç>ëeßýîw¥o~ò“Ÿ!Ö­[7ÃòÜqÇø`ÄËȾþõ¯ýë_¿H5=?;›ÿêW¿ºðÛ/¸çž{î¹çž7¥Rïz×»ÞôŠÏäú™ ,ý‰Ä­À ãä¦t: Tnrr²··wÏž=‡ÚØÔÔ´qãÆyóæÙív‚J)S•m*ìOdIƒÝ\çH ú¯’P)ÝŒ©úH𯯤Ð*xÈããão¼ñ†Ûí¾üòË«ªªL&“ÕjF£©Tª¤¤¤´´ÔívŸ9s&”••åù9Ë#­ÆQ'-tgΜټys__¼hEQB¡P&“™;w.ˆ @C0´¬VkCCCii©Åb©­­-***..¶ÙluÃÃÃ[·n¶E­199944ÔÒÒRQQAç|R£ðÂBgd›žÛÙoîØ–B"”’ºººººº2¹´óÁê§t\CG‘Hd||h~GGX«V:›˜˜ R ò«bT@k|||<‘Hr»ÝÈ L÷!ÜápÌ™3¥N4ö²4xKû‡Ã€™,‹ÃáÔBÂL<X:¤‘"¨¤Ÿ>}º¥¥ett4‘Hx<žúúz„¢…-K$‰F££££áp8çÐ¥c'צ±a³ÙŠŠŠˆy¤ééKJJ®ºêªk¯½¶¼¼àÎÈÈHgg'E¤¹L&‡‡‡€ÃáÀÈÇOž<ÙÛÛÛÛÛ …ÜnwYYb‡Íf3=‰ «­­]¾|yOOOww÷üùó)¡Âbó¥†0¼xcòæ†×½ÚTƒ.§’lÔx7ã")rÁ|1®fÃÞ:ídc öÿñ¸1¨ÚÙ øÿæÐ¡CwÝuåÉž‰y½ÞG}TÓ´Ç{ìûßÿ~ÎkÎ;sâ¹þd†vÖ,~F»öÚk?ô¡M 2'NsA>sâ4 sâôy匙÷îÝ+„šê'étZÚ‚ÀŒ‰óî»ï¾ÚÚÚ¶ ÖÇçž{nškÞ¹™?>MžÐi2'þìg?kllÄÅeeeûöíãaGœGæÄï|ç;Sýµ¹¹ù«_ýê4?¯©©™I©fRÁ³Ú[9ñ\5C»ÀÕØ˜9‘XÆy{‹Mc(Œ`1wt߇÷ÄøO&wM×s§—#<ÙŸt©¨ÒÓéJ¥å2úØšŽ™¦šÁÊYGü—iål\`Ô옇¢+%í!é·t w-¤¦“š7ç¥jª¹ñ®Ó²h4@Øá~Èô¸¯‹ªËîNÕ¤0æx­OóÜœ%¢:µœóTåQ¦¶©äŸŒÓs†+sN£€DRtâOWÅjµf2™½{÷>üðÃ?þxUUÕ¼yóJJJT=ÿƒ|FãÐ¥…Æ*ðï¥+Š‚€/T|NMõ©e¦š×SMjã 5öZltttÇŽ@`ݺu³fÍâÃÏn·ÛíöŠŠŠåË—/\¸Âfùš¾îSu¯ ¨[~¿ÿðáÃÝÝÝ€ɳÃÃÃñx0ÅbÈÕØØxÓM7]{íµkÖ¬Y°`Amm­ÛíB€tÓ××wòäIÄFѳÀë9uêÔøøx(ŠÇãñx<  tPU•¤©f2ör¶|Îê+Š222=¦}ûöíÝ»wÏž=ÃÃÃ|¾Ó}„‘H¤¯¯ì"õc"‘/½ôÒÃ?üàƒþä'?Ùºu+ü ã4ŸœœìééÙ¼yó‹/¾øÊ+¯ìرãÔ©S¨i,kkk{ê©§~øá‡~ø¡‡zôÑGŸþùþþ~é-€ ¾ÉÉIä7$é´iÖÞ À’Édww÷Ë/¿ü‹_üâá‡~ä‘Gž}öÙ–––ññq¡ó%уÒÚelUô,nøê«¯¾ð ۶mÛ½{÷+¯¼òÜsÏú›ßüfË–-»vízùå—÷»ß=÷ÜsÇG6Þ’¸!²èz<žË.»¬±±97I”}ª%šBPI‡K2ú9ÈY";Ý'h5;;/—>4>ݸˆ\/;iâÌ0,ú¼ímˆ÷ÜsÏ}ñ‹_D÷477C~zC—óo–,Yb$sÍÐ4M“¢ò–·Kn/¾øâðð0ÿæÂçý‰Y(:zôèW\A.îwÜq®ÙÏâ×ÙÙùö숑‘‘™”êFV¾CÍ8®òöv0ÚÒæ’+IIî÷d´ìh;¾_$}VŠw u Á$H¸×ÇOÑhËk ~™ÊR³¥ß”Ür&ált¡ùOŒUÎ0uv:íÏ0õzMÏ·% àÚô½hNAâ7É©ºetœè2c¬–Ô¤Æh#©=ù˜¦;¦©ËåB†uDÊÌÄ%–<jH®-S£g-€ÂôÂxô%¡¨S•6gGШ–L™:·#}&6DΙ(Xéü)";1(¿àèÑ£O>ùäÉ“'6mÚ´`Á‚‚‚³ÙlµZAQ‰ÇãàÈP°-ü¼ ¼j #O =L¼òí%Biö¤^P²i} Ë'h¼U&;9/Íe Ñ®®®±±±U«V566‚è¨IEQl6›Y—-[æv»¡‹$¹ÁÆ*§•–¿ónÍd2‘HääÉ“gΜ(Ì‹Ç:(‘VÝÝÝ™L& @$> " ”Ÿh4züøñh4jÔëAÐâ+¯¼•nÐs òMÓ¬VëoûÛ|ä#¡ŸþWx8pàèÑ£kÖ¬™F½h&vòäÉ|š¹¼½Ý ;T$:öùµ\É7nܸwïÞï|ç;ÿðÿ€oR©ÔêÕ«_ýõ™7Ú¿ýÛ¿qè†í Œ„Bf’ãr[µjUuuõ>ð÷¼ç=.—ëÂÛg;g­éY+8}#ÿšq\åm†FÎäÅ8 3úÿ*\Wt2â È#¢CHÁ6mBLg¢ ‘H³ñΗa©Öx©ŒQÆ’µÛȱ!¸F(¯pÃñññd2YZZŠ#VÔ‚d8èž‘@£ñÂg˜Â7o(þW^ZO"XqôM0ù­œe +Ø1ÝVÕ3 ’.] dÐÑo¥­¼Ôþ¼¨ˆT2¢c"[cHUUdû’ Þ8TAêÊŒ.¯KS¤ªËGÝMÉ>L9N’Ìç°‚ºåu縌4e¨ú\¹ Á2´Š#dš#‚¦’ëÂ?+쟋h+’{#% aÀù$•""é›P(ôꫯ¶¶¶^uÕUï~÷»çÏŸOêZ˜D©Tj||Üãñð2¶–)h‘»¡irTÁºFÉÆ¦°äŽ’Ég„4ØŒ¬r2ŽpºÀd2Åb1“Étùå—755izCŒ:¸K€Y Íf³š]ÖZ·•ì“|F (Šb·ÛìFÈÝøøxww÷èèhKKKww7zÏBî¹L&ÓÖÖ666VTT„õ9 †ÃáD"ñâ‹/VUU™Íf¤ö\5999<<Ü××G¢HJvÂp| Š7>>‰D´lþˆÉdû‹¿ø‹Y³fÉ…7 G¥Ø[4 ¤ÕLUÕêêê믿~tt4µ´´œ9s†BؤÉRTTäõz5M ƒ@î$ “Étå•W644D"‘X,vàÀcÇŽQ$#u‡¢(V«uÅŠ .,**1'&&¶lÙÒÚÚJµÃ¼ƒûöí«¨¨¸îºë2,èKè#.¢§;Fp3“Éœ8qâ…^èííE¡úñx¼§§§¥¥eáÂ…›I,2”›…j- EEQzzzöìÙã÷ûy% Äú£üÉd2 ñ–ä¦( nD8b‚Øív„L¢Y0üR©ÔÉ“'1P-ËÑ£GE™˜˜H¥Rååå>Ÿª[üæ|1O§ÓÃÃÃV«µ°°0 uww÷ööòŸ Y‚Á`ggçÈÈHUUIeQÔ-.8}ÅÅÅét:‘HÄãq¼­H*TcšîŠá$IÉbå#Ð%frr2 Åb1ŸÏÇ%JéõÊû… ï&‚Œù ÉÅy‚S²\ {[À[‰Dâýï¿ßïB<öØc7ÝtÓœ9söïß¿zõêéXXXøïÿþï[·níîî>sæÌÖ­[׬YsÞÅxî¹ç¾üå/_êÆÈ[ÞdSe`` Ÿqªä€9.\øÛßþv†6::úàƒ¿ÿøÇ?.}³cÇ“Ét!±wïÞ®®®ýû÷úÓŸ^·nÝÇ?þñ _îÏ:<ÆÆÆfXÁ·>/äÛÖ.öáÒŸ°as‘Èç9ý=¾Çú¶Œ@"ÚlI'‘Hdll IÙ=ÆÄïÃ…ŠéVäÞHø}OäF‘1$T¢Ÿpü#k¸Õj˜˜Ø»wo2™\½z5¢¤‰•CeSõ$J\)IÂSÈqU¦àðŠ§€¢3¼€  ·$ßRâ>hLG*íï©Ì¤n‹?~Ès*ÙºW¼m&LfDà-ÃaÈÙPrw‚7wöð¥Ô>€)iDñjRñöáè÷%¤ŽÎ¹@Q±©5$F/[*• O<ñDIIɺuë¼^¯Ð}0Pˆ\@GS³³t ã¡CîiXÌÇ'ÍVî2ѤୠÔãÊ+¯üÀ>0{öl |JNLLlÛ¶­®®nÑ¢Eò¨ Ô2jvþJ ’à-T¼lÆ^Ð 41Án!êâcIšP ÙŽ+weÑG6›­±±QÓ4·ÛMCNÂà[ ¤sœBcÊ8Z¶TY$ …B'Ožlmm“™ÝæÌ™S__ìr‰DiÝn7´«çÏŸ¿dÉ’d2‰d‚ªªÎ;wõêÕ%%%Éd2•J ïܹ³¾¾¾©© Q¥„hÇãñt:=11ÑÖÖ¶ÿ~Ђh<8ަ¦¦åË—{< •Û·o?|ø°„Ò¦ÓéS§Nõ÷÷WVV’¼ºtì{ÌÅ‚²›ÉdBì$…£’‡Õ5“ɸÝn§ÓY[[›H$ pÖÝÝMLOÞ›³gÏÞ´iS}}½¦iàR­’ͨB”––BaÊï÷9r„Fu¢Ùlnnn¾êª«jkkO£Ý¢Ñèðð0Š!ÁBˆh4:00à÷û#E 2ŽH^b—ô!‚ðõ!º©TÊï÷#t‘ª Tb ÐHÇ3„‰Œ¥h4ê÷û©¹ *++çÌ™ÓÒÒBõ¥^öx<×\sÍ’%KÒét0ŒÇãÑhthhh```rr²ººÚjµŽŒŒôõõUWW/Y²µ6›Í wE"³Ù\\\l2™ÊË˃Áàèè(MzËåZ·nݪU«°Î8ŽÉÉÉ7Þx#çÞˆR ÀhL§ÓápÉ%I¶@ž‡+|+%a¦4€¥t>´lÑOBÊ4=y+½ãøkŽ–bÎy”„ pF"%‘ Ʊ-Q/öûmo=øàƒBüã?þãûßÿ~!ÄÆ_yå•™À[µµµ/¾øâ–-[6nÜøÀ\¼u÷Ýw#Ø;o—ТÑèéÓ§GFFFGGGFF° õöö bÎÏÜFGGív;^üø‡Wv»Ýd2¹\.Ìêûî»ïg?ûYYY™¢(N§× {H¼ÃÃÃÑhô•W^ÁÐxÍEm– χ811qòäÉãÇ·¶¶lr.\R3J#G3XF°—2JE «’Ú–ÿuªåßÓ¤C$æˆTG)©(¯ŽÑë꥗^F°[:îïïïè訬¬Ü´iSSSSaa¡×ë-***++³ÛígΜjnn^½zõøøøÑ£G‡††TU]´hÞª±XLUU»Ý~øðáÚÚÚ¥K—aýB”»Ý~úôéD"¡èRèÅÅÅË—/_ºtiMM æH$±Z­ÔËT)Ĩ‚†ÃÁÅßÁ¸~‰y²Á‘A•78Ög 'pâ*++m6n…¥¶Ûí—_~yss³Åb¡ôyÕ|¹FOA‰•µZ­”»“÷”Édª®®^¾|ymm-Bê èŽ;ŽŽ"[¥TÚ SO‡¾@$L4›Ín·»´´ì* Μ¯0¡ó€€?ööö"°ÔÚ‚ìŒy ¯@ Ð×××ßߟÉdªªªjjjÊÊÊ, žT*‡¥•‡Æ-Šæ–êóùÌf3°M€Ú‹&B‡âH#ƒAh ž8q¢ººzÙ²e¼ý …ÇÇ_ýõ±±1B$Ñ&V«uÖ¬Yk×®]°`͵ööö±±±œ³;‰`™"^g*•ŠD"'Nœ˜˜˜Ð4ÍëõÖÖÖVUU‘‡ÙM¯B¢q‰iñ< –Þ .— Ø(Që•´h¶%!YÒõÒMK6b|©½éööÊœxï½÷Þ{ï½ô߯}íkçt·Ç{ì±Ç;òÜqÇ”sâ4–3èì-0£ŸÆ¿çÎ9öÍv»½¸¸X)¤=ÉÇÓ›ÓEWtÝtþDÉäS_‰Ú†oàçP@ŸaÁf³¹Ýî¹sç !(ã?Q¹PŽŒLã®KÎKŽ~’J¥z{{ÛÚÚž~úéñññÑÑÑÝ»wƒ¬QUUŽ=šÉdn¼ñÆE‹‘#u–±:FØ—ÿD›Bw,ç0àÎ’ôDMÓÂáp$Y³fMcc£Ûí&ü”a;êééijjòù|6›Mê Ü  ®’¥J#Ddƒ˜9ÛAráŒÓиBr ‹ÿ;Íp•f ašNüÊœÎ$•P=[^!Ääädwww{{;Ç/TU ‡Ã‡®©©)..ÙÄétVVV e2™@ E0EQ|>_uu5°ˆ¹Ýn¯×Kb[<øŽ>C•¼  Àb±¸\®†††Å‹×ÖÖëÇ•‰D‚)¼²@™‰m”³_`ª_ÙÓÓF…V«µ¼¼|îܹH«…$Œ¼ 9Š­iNÐa !B¡Éd*++[¸páÊ•+KKKµì8t*áÀn|#Ê šX( ‡ÃsæÌY·nÝÒ¥Kj—Ñób €7ÕäRôÄp8ÜÚÚŠ¬£ˆP.))Y¾|ù²eËŠŠŠxV ZUøpE«âå•sUW¨Ÿ¢K˜ !¢Ñè©S§öîÝÛÚÚŠ`Rdzpá 6à‡Y‡ì'EQl6”¼„N?:Ö6kÖ¬ºº:XŠ¢TVV._¾|öìÙv»—°3›ÍXÞï^¯KŨ¢»é”4f ËËË׬Y3gΠ`ôV2ò‚ù˜DH8F8NÚ&&&vïÞ ï}³ÙìóùæÎ{õÕWÏŸ?Ÿ^¬¸ jÅÔf\‚¤/qÔG+ž„zK?ä› >0¤2HãDÍ¥ú§ oñZýÇüå;¶páÂL&óŸÿùŸ?üáÛÛÛ…‹åÝï~÷=÷ÜÓÜÜl¼Ï#<²gÏž|ðïÿþïüãïÚµkÑ¢E3/FWW׉'þ¿ÿïÿûþ÷¿ÿ‰O|bš+î¸ãŽÂmdÊÙdùÎÛn¸á—ËõÄOÌü'×]w]IIÉã?>Í5O?ýôm·Ý6•ž+ZlÙ²eH„ñ¦[2™Är3)ŠRTT4666óÛâ=*ÞªP£ýû÷/_¾|ª¿~ä#Y·nÝ_ýÕ_Ñ7ûöí[¹råÐÐPά|bBvÿý÷ÿèG?êêê2þ©³³sñâÅF–Ð7¾ñù—y šåBlhhè²Ë.“dÝ…¯¾úêT²î+W®¼âŠ+~øÃæü«ÏçÛ¿ÿìÙ³é›þçþíoûúë¯OâwæÌ™ÆÆÆ'Nœ•½õÚk¯¡` ø¥R©•+W¾ÿýï¿á†êëëq°sìØ±ýû÷oÛ¶íĉccc÷ÝwßTO .¼õÖ[ÿíßþmªÇÍd¹ûî»üñ]»vMSÁÒÒR‰áeläU«V}ûÛßÞ¸qãô»çž{~úÓŸ"ÂqæÖÜÜ|Ûm·MSÓ ± \¿þõ¯§Óé{ï½÷òË/ß¿¿ÈgNœÖÞ,L|š=ÿ‡3¦º'õÀa Cul^IôŠc¤³4Je9¹…!ü&ÉçäŸ)2Kc=8ކkG0¹ P¢!½ € ¼©9ÀAåQ³“ˆ‹lÇÕèøàoûÛ—^ziæØV*•ú¾ðàƒÒ|¾ÔÍ·ÿ»”ÔÔÔ€/šL&ƒÁ` ¨¬¬œ;wîÒ¥Kq¤P__N· ƒÁ`¡ÎHD‚ô®ºƒÁH$‚‘u”i(@ç’§Юéôrä»?111 ¶u G['‰¸ÝîúúúË.»ìÑG]ºté¥.ÚÙí‘G‘Í‹”²ðÂ#@aëׯÇÂ_}õÕ;v€a¾téÒ÷½ï}ï{ßûn»í6üµ®®î"7áÙ+è÷ûgžùçcù̉çmo¼“vH*SUWuùmú¬d“z° ÇÖf±­BH\äº$x 뿦G¯Ð õà)Ï8 ~ ž‹Å({”äýÚ€/‘Ñ3X!4^°óvémkŒÇ„/žE®D=#d  ®W²“âqÈ 5ÂãRЋŸ%ž7ú\‚W9"„MÎ. 7µ@kCð›\zçRórÈ·%ˆPè²Y‚áe|„÷(²µºø5 }-…’QaÐ_(@$I§Ó@‚€&à)\y„à3’`#×o4ž‚F \x.þ‹¾ öºwÚá­¥R)ÐýhpNNNÆb±cÇŽmß¾]UÕ«¯¾úÊ+¯ ‡ÃO<ñ„ßﯨ¨hnnž?¾ÍfK$Ц:Ä 6UtU ÇÉ ¤ªLÒŽÌ8’*3ÆÕÒ•&“©¤¤ÄårÁ_ÅtÆŒÓî¨Õju:===Û·o¯©©ñz½ð$!‘Ç•8E‚×EÍNÇI0¥ÂbÉc”¤sh>J`+‚qsB‘ÄŠ5DFÐËVrêÔ©ñññÞÞÞh4ÚÜܼtéR‡ÃAè ©JÁ° ÆÔ³Ùlv»#Ú[ŠIà,fŠÕj …øA!D"‘øUWWwÝu×ÕÔÔ`DázÒ¿C\!@.Ô`±XÂáðÄÄ„Óé¼öÚkgÍšåp8p _´1ªQBª¢Ž%%%¥¥¥¶¦(J*•Bh*áú:~üø–-[FGGé]L&ãñøÖ­[Nçå—_€Òì’p­-XÐêëëW¬Xû+ŠbµZÉ W VxÂň_iy…©Œƒ{XWWרØh6››ššl6‚…6›-Ú€ºä„TU---Åíðððþýû¹ü9 6<<|èСU«V¹ÝnMç“%ñL±|¡ Þ¢ÖÀ==Ï¢E‹5UUc±Ø‘#GÚÛÛ‘÷ft8>yòäÕW_6ÁÐ¥9…{º\®Y³f­[·®ªª 1.Æúi³ÙÊËË«ªªŠŠŠPNÀ €¢‘ M§Ó6› "hÓ–¢— ­öÇãñ8Žw¿ûÝ‹%‘H8޲²2‡ÃaµZ1®02±ª“ø`‡"(LyyyYYæ»ßï?rääb´ìÃH›uttÔÖÖr¨aì„£ÒJoE'‘Ñê‚!ì”Þ>t=Ÿ2=ý.ÃúÙÊOøî‚$êH•ŒV‰{ž«Ðйڥ‡·Nž<)„øû¿ÿ{!Äo~ó›_ÿúתª¾÷½ï€:ÒæÍ›ãñøÇ>ö±“'O²%+,,|öÙgÇÆÆ8àóùfþпú«¿zä‘GðYÓ4È'I¦±ôa—º‘þ\lÉ’%Š¢,X°`Ñ¢Eø·¾¾þõ‰ßŸ5úO²X,&bF˜Œƒ='½­¬¦¦æü£ÃáÀÁ¬Âï÷?úè£gMNú6±âââ@ ðÊYQQ3+äO›×í믿¾k×®¯|å+ÅÅÅkÖ¬ù_ÿë]ìCŒ™Ûæ…¤5sVö;Èò™/­)çB¸3‚,I„D%Œâ,\ŠCT˜ عòv’OŸ¥Iã¹¥ªªN§“‚eÈ­…¿DTÚ‰!üæ‚VRsñŠð¬ä܆+UYc„ÂJÈs“us¶}&ý`r„4Õ…C4Éǵ$»¥»Ñ¶>gºqESjŒŠÂ»ÒØ¡ô ¼P¸OR} ÐSàA =8ˆüÞÂÔõBw™¤¡Â+«dó‰¨ä‹”̉%ñ?gbÇ –¼téÒøÃeee¿ûÝï‚ÁàÒ¥Koºé¦•+Wâ Ìl6{½^àÜWäxÆÆgå$ÖI—):’4Œc^Æ;¸yÔÔ±Að{áÂ…ýýý{öìY°`ÁºuëÈ‚6!à’ÆLÎAn¬ãTR˜È}Î9¢1N„Ô8SÍú©ÊÇGaaa<ÇàŠ¡dóùù¿p<(u:‰ “:Œl(J1hoIƒ©ˆlj=…_ 9Û„¼(5+ ’šš~EL¥©~¿áBøŒÎ’Mɉfü2¡Ó|¤ƒeÁN•9ZqÖ5/Ú–ŽÙù °Ëd2‰D¤oÏRôÀ@B"!‰ ðR‘v€_ÌKÈÁV^l®L0.õ2¡œƒƒƒ­­­V«õÊ+¯,..>|øðk¯½6oÞ¼Ûn» Ò×p§QŒT*5ÕÌ2ûs´EÍNÉ+E¾0 zt 1æxÝ9ŽCL@b{Áwåñ¿6›mîܹ—_~ùÏþó?þñ%%%sæÌ +œv·Û È€Üo…©ãÅÝxWJS› >¥ð á Çpéþ’IËŸ°ŠŽDƒU‹Åºººž}öÙŽŽ@ ¸ •J½þú맪ª ¥—-“É´´´<õÔSýýýäµö÷÷#* Žú4§¡ -šL&€¡4ËÊÊ0¢âñ¸Óét8ÈwÙÐÐP[[ ¡®‰‰ 0é(þZB¢û`‹F20M¬Ïõèíí Š¢”––.Z´¨¤¤ÄçóY­V«Õ ö¦s4Ä&­Ûéteã#–Ê iÚØØØÄÄ„ËåB¤¤Ô´˜5‹Åb±XŒf7Ú„‡LÒ0ÙÓTiZAY%™L"ËÞÄÄD("2)Lâ×@inpp0Úl¶‰‰ G€ã‚ –-[æt:{zz%À8µÓéôÀÀ@4¥wp.ÂPÐw@¸ÆÆÆ‚Á ?¶fÔØØèñxºººNŸ>íp8ìv{$éïïïîî6¾æq``j˜ˆ¤Á¨«©©ñx<ååå`±„Ãa¢c;´v8ŽÇãccc½½½à-j,¶.‹…B!´Õ‚ à,BA|‹/}) ÷÷÷û|>·Û â!'LÞ‚rüTñ‰¸¾£££³³Ó?‘H´´´ôõõIOèz‘Hd÷îÝ£££€¥€m¹\.<€ E$qTý~¿ßïD"‘H„TÞ0àkkk7mÚ´hÑ" }úöÛoGhÏŠ+  ½víÚÇüšk®yþùç¥ß.Y²ä»ßýîysâÛÄ$׎¡šAüFN_á ó°)+I„ÊÒ´µ$ Âxò)tÜïí(ÙiÅ®"!cEÄn6—µÙàí& ;ã-´•´¥$xÛqÒ 3:üÆB £CÚL¶6N£ºOÕïFWŸ|6¸^€$$\̈+M3œèAô.}Î*Ãw<~üx___$)--]²dIyy9|jd…Ñ@ó¿ÉQ¡œà¦È–KÓXÄâ4Í¥åâ@á·ÇŽkmm½ì²Ëêêê:::žxâ‰D"±iÓ¦ 8MÓRPˆhΑ¬Âë8G×s=—œó%çd:N$‘P¨ ̓~'Ö(9`Chš …z{{ívûòåËW¬XqäÈ‘;vd2$Ñu§6ê¬KýnÄà,`'M%ÞõÒP¤GÐ¥)#²a,-ŒæB‹ïܹóÌ™3š)FOŒF£À5HÍ=“ÉLLLìÚµ«§§‡|rtGGGÇ¡C‡ªªªTUÍ™Y^Q‹ÅÒÜÜ\\\L%jI¯×  Åb …Bccc›7oîììlhh¸âŠ+jkkãñxooo(òûýáp€?KP%™LžðûýH$H­îõzËËËc±X H§ÓçŠ+®X´h´€5ŒÇb1“É422’J¥¼^¯¦‡ ¸‹Å><::j|•à¿ííí[¶lihhÈd2Á`0Rf=ZÁÌf3J…F ±X ¡‚GI1Ôét` Á[åÄ(Eo 8p`ll ° €-Ù„®\ ö:ò—VB!D4mkk‰¯¥¥eª—f2™Ü·o–ÇãX0…;pú&&&Ðn±›ÉdB¡PKKËÉ“'ñ.PôXËx<‡s¾àÆÆÆ^z饖––‚‚¿ßßÕÕ…!çvww=zaž„Œß ƒÐÈG³øÆtŽF£@yý€FóTÓåÕŒIS€ ¥q 6›m``Àçóqqzš2 M®ØÝÝ-ÍŒñññ—_~3L@UUç)ÙlúíäääÀÀÀðð0Þ,¨¸«¤ÑI$n¼¯‰×&tí0ÊPr«ÕÊ7|%á{MÏA‰1 17 Ðç/&aÀÁ•ìó-LpÍÀüzÓíí’9‘¾éèèøÙÏ~–óÊþþþé7%ça]]]«V­:ëeG=?'çM/ðÞ;• ¼íE­ÔŸ¼]ì̉×]wô 2Ú¯L&“3É÷6±suç‘9q&˜yæÄéMÊã¹xñâi.~³2'žõ²+¯¼ò¬7™aæÄ#GŽœÇB‘Ïœ˜7˜qûËwêô_IÒ›oè¹27w³¥;“Þ6åÜ­âÄ xûØ4c³ÈA%M(Qr‰R+†ãPÚ4+LLZÓe﹦iQÑ¡=i|%àž´ÇÍdg'ä` mb6›¡Y JEÔ”¾ž"ñ†$ Leù ‹MS²E÷I.]aG»&KŒ¾€ä©€I’"ܨ/$dA*κù2 \Cþ*¼JDpFìj„ÞÞÞ?üáÛ¶mN¥R‡ùÑÖ¯_燘DB?ÜVt¥6¸¸´ÑçÃFË%Ç›Ñeãp%àZãxæ‰Z~>99988¶B$5™Lëׯ_¸p!aˆ]Õô<˜R«\B8Q˜©2‘~\ _Ñ¥ëÈi$|ŠOI.‹N€/Piš¤áp‹Åü~¿¦iáp|Ÿ²²²‘‘‘9sæ8NŒŒD£Q.˜òÞŠÇã“f³™H`‡)}7ª Í} -#ÚˆçñœÙ§éI »CUnNHªIX ˆK€9àâ¢Yø À0æ #Õ‰‰ xûŠ¢à¡mmm§N2Ž·T*ÕßßÇAžBûиE³ÔÕÕ-Z´î:D2™ èKñx|dd¤¬¬LÓ´ŽŽŽÝ»wŸ‹Åb###mmm8ÅÞAŸŒžâX¦if³×4-‰ å>¢ƒÐã äPô¢ÍfCØZ*•‚¶:² ¢—áë9ŸÏ§èLôæèè(ô‚Ÿk’ ¿úê«ÿ?{×už‰ãçö‚Þ÷Ýh ± à¾/"EJ”H-v¬X–åd’”³T’™Lªfjf⩚Œ§âš$“Iª2W2±f2ò&k±%ÊZ(RÅHľonô¾o@÷ý}xþ÷ý4HY²E“¶û|`5Ý·Ï=Û=ïsžçy±€(•ÊL&ƒQ(‹‡Íù|>›Í¢£É )ŽÃü®ÿX £Ñ(ÒVЊ„÷5999??ï‚‹ÇC KÜE6›%/'Qâ‘QbD(òè̓Ç`Ó\.GOO˜Ùã3˜×2™¬P(ÑCã£kjjR©aXK———¡ûÃ2LÄèU(Z­V¯×câ Aðì&½'cL¥R---AZK'-³¼S§(ŠZ­¶¡¡Áét÷L¥R€z‰/†\ŸDì²Z­õõõÈÂaµZN§Çã©­­6'—ÒõVœ7ÐÓ–éŠ<@‰IMû<¸q’çcõÃøeó^7ù}Ÿ€IDAT# ÷?sâ7¿ùÍ¿ø‹¿˜ŸŸá/ÿò/¿õ­oŒŒ`ÕØ¹sç?üÃ?@·øþÃø«¿ú«ùùùúúú{Z7¯×;??_ñæÇähûE) ~¿k Ö¦ÚÚZ·Û]__ßÜÜl— ‘xïXîiæÄ_…²6sâk¯½öÌ3ψ¢¨ÓéVVVŽ9ò[¿õ['Nœ€Cû4™ÿÕ¿úWßþö·+Ncôz½^¯Çs]&“566vtt Íúõë1¹ðòo|ã[ßúÖäää'ÿÊO—9qxxøc®ùÉ3'~¶å3Ìœ£Ã;–xŸÇÀöù|étZ­Vët:£ÑX[[;33c³Ù¨.à¿Ð¯P;#Ž¥™¤d$O+ÞÁ‡&>ð^ xˆ¤RÔõä3Å8&á³ÀO ó¢FÀéâ|ÄÈÆÑŒœ~¿¿··7 UL%´J¥2—ËMOOôÑG€ùOb$“Éññq“É4??áA÷NëØââ"ˆQ¦X,¹ill,“Éœ={Ön·+•JŸÏçóù»à3°óûýår9‘H qg¹\Öjµù|~ii &A±X ËÉÉIÀ²årÙï÷û|>àYù|Þ`0ƒÁr¹ìv»aS…éŒA•Ëåü~$Ñjµ6›­©© Ö¨ÈèÇ$öÖÕ«W¯^½J˜ (å ÀðعsçÎ;m6Áߤ;¦S(~¿ÿ•W^±Ùl<òˆÙlY ŽÈŒ7 ¶ Cn@† a ‡Ãsssï½÷Þ† ¶oßj ´r¹   ¡Hù|¾§§çúõë»wïÞ±c€0Ü#J6›õûý·oߦhŽŽÁ´´´ìܹ±Œêà}>44ÔØØ¸ÿþ¦¦&ˆB ëééA~I„ U‘›;ùR©Ô×ׇág2™l6[mm­ËåÒétĆK¥RW¯^õù|6l€¡>P*<”©»q8 …bjjêƒ>Ëå>úhkk+ X`C7±Ð ï ŠÈD"qýúuFsàÀ8Ržø¨Ñh¢Ñ(~±¯¯/—Ë=õÔSn·›žª ~’Éz6•J]ºtéúõëûöíÛ¼y³Ùlƺ„ e)"=ÇÇÆÆÞxã@ Àß4akjjœN§ÛíÖëõ6›­¡¡þ!¡PÉÐFFFFGG!À¬¯¯ÇÞ9"Ö­[W__oµZ±¼ÔÔÔèõzx‡ñGSw "h5Æ}ñ^c"§ý¤]=‰‰S‘L hau. v/Ëý'>ÿüóÿé?ý§>øàá‡þ×ÿú_ÿûßÿ“?ù“¿ýÛ¿…HxttøÊÊŠÅbÁº§¥‚çòK“>lmüY-BillT«Õ8?gŒ½óÎ;—.]* û÷ïÿßø§žzê“_jÓ¦MxLær9Ƙ×ë]¿~ýæÍ›ÛÚÚÚÚÚEû~ßnµü–_Ö5³Zî{ù˜ó½;žV@W(<ÍŠ"R~cWñ• Ò‘V踘Ç8èña S‰ D;{¶gY[è}:Ó^{/´kÄÉ0ã /ˆÃûÂT=< FŸT(z½^¡Pd³ÙB¡F/^¼˜J¥pÈ\__—qÜEgáŽl)4¸¸ÚeænJà‘’0Äb±×_½··wÏž=O<ñ„Á` åÿ£l5…M\íÑN½ÿ"&i¢‚©G ݺ>/ƒU(ápøwÞ¹xñ"âI¢Ø‹Åùùù÷Þ{¯­­­¶¶€Ù#”e’ÉãFÈ”4ŸÏG£QA5/N FƒxX&“Ùl6>eÄÊÊ %™LfbbbÛ¶mHØçp8PÆX(’ËåÈLê÷ûçççÁ~B¡Å(q¶ v»=‡Ãa­V +(ÔM­Vk4âvAú„Q:@(Ü2"sÀ.|ºC¼&Œ¥ššD¡Dóñûýv¡¦¾¾¾¶¶"8@`°þäðŠe'_ºt -œJ¥æçç‰B_wh÷Þ{O¥R-..Êd2äR$š n|ll cb1´ª‡ÕjµX,^¯7Nû|¾R©ät:]. :Ïœ9“N§÷ìÙÓÚÚ W­VÃ#Ød2¹ÝîD"ñþûïçr¹#GŽ JattôÔ©S™L¦££c÷î݃áÆCCCGݶm' W( …à$·ÛeJ¥RÑÂ^*•âñøÀÀ@…y VÚööö½{÷677#;äZˆŸšW©TÂÀ`¥R­è ú.Þ€Ÿ¼dY©T"©ŸV«5›Í---Àh?•q¾à‚$[^^^XXP©Tõõõ­­­ úLßÅb …âüùóXµhõP(N§óðáûví"º¨R©L$ÈÂi·Û»ººÀÈÃÜGÊñññuëÖ¹Ýn¬WDt¢lzœn·{ݺu³³³Hõ Õju:F£¡TžÄØv¹uëÖ;w®ÅVD) !c¬P(ÔÔÔܺu+“ɸ\®––þ©eÜf³¡ÎüCíï÷ûëëëwíÚ…Gý»¿û»ÿôOÿô‡ø‡mmm Ë–Ëåwß}÷ùçŸÿ“è}’òñüÇü ”£­Z~¡Ë–-[¾öµ¯ýË¿üËââ"c,“É$“IÆØûï¿åÊ•ßû½ßkllü„ ÷ïþîï:ÎÖÖÖ¶¶6§Óy¿ï¬Z~UJuͬ–û[îűվïüûŸj…-…šñx¸éæxûpRÞ¡àÅ8t€¾ÂדG xQ¨Kp^^mÆû¹”WûÜóì-q = ` ¾˜ÏçOŸ>}ëÖ-èAjjj¼^ï¶mÛ> UE•ø“[ÚÙ‹œ+SE4²v+L( 0xñ ôôô '‰õë×ó¹–ˆhFH-£Á©ý©Ñè+ü*ØmôaÖ$“ÉX,–N§Ífsss³F£õ ¨‘Ëåúûûßÿ}2‘H”sss}}}ÍÍÍZ­ŽEÀ}*$eΗŠïñŠVØj¬ SgÆY™@iE¾r"'á>%H‰ám6›ÙlÏ O1ˆWãP7òŒ£À&—ËÁëÚh4"ú•Éd©TŠ1¾ dD4ƒöJ§Ó±X,ŸÏkµZàt‰Dˆ~j#p[”J¥V«…©¢hÆØÒÒR:¶ÙlZ­+—Ëp\–Éd&“É,-- ¤R©›7oêõú¦¦&­V›L&Óé´Ýn‡@O.—FF3;;;::Z(HFŸN§3™L[éõú .ŒŽŽjµZ¯×+Šb2™D³×ÕÕ‘è !%”ª°£Âq#Mm˜@l)€ž%"hb¬‘LDà2™,‰LOO›Íæúúz¬EHÕ§P(€X­eM–Ëe«Õzøðáææf€€¨^"‘`œ‹Õ©·nݪP(`^öØcQB&ñ5(dbƒaiiéí·ßN&“H36 ëׯ/Kyå4ÍÊÊJmm­Ýnß°aƒËå¥P( CCCƒL&Ãy½^¹\NàN±Xlhhرc‡ÛíÞ°aƒÁ`E çúõë±2c^`£ÄG ÍKÈ£LÊWÀ“Y ¾‰üùŸÿùÏ¡2¿û»¿û…/|á(G[µüB¹\þµ¯}ík_ûÚäääK/½ô/ÿò/ð#„¦1†TtŸ¤˜L¦ßüÍß¼ß7T-Ÿq™˜˜ø›¿ù›×_½««kß¾}>úhGGÇý®ÔªR]3«åÞ•µ{¯;R´ºW8þ³õ«•_(6!$kg>ö ‹ø€„Á‹ø½#/rÄoÉV'ä±'š1 ¹\æØ1‹œß;–W»\‹\RHV#„…R§ýà?$#dÆX<Ÿ››S*•'Nœ°ÙlˆyDN} r‰ðx$QäòÇ œÇ[}hLzÀD" …nÞ¼yíÚµ™™+DQ„þ…Úœð,8Î@ B‰ó˜± ‘)§Š(9˜d2 $TH¨'ã[·nÍÍÍ…B¡\.WWW·{÷î¶¶6­V‹øÖáYsñâÅ@ @ðªJ&›Íöööz½Þ¦¦¦P(gk„ĤTBH†‘@)äѳÀ8H¥£(Ü Ñ———“É$Âu¨“ˆ!ˆû­83Ïår8íEQ£ÑX,ôT]]]©TB†2l†t_ø­ Æ6@¨r¹“ÎWJ\ZçŠëÊà§.¼%“É^zé¥ßÿýßïèèøÆ7¾qòäIÇ#B{{û­[·þôOÿôµ×^{ÿý÷‘ô³*CCC_úÒ—^z饵±â/V޶jùå(­­­ögögög333¯¾úê‹/¾822SßÚý Z°Õž˜˜˜˜˜¸}ûvoooÿÔÔÔݼ·îv‘ÙÙYPâ#‘ˆÏç›››C&àP(”H$Àªûù°¢|2ÆAÐëõ§££ãáIU×Ìjù¹:$Q*¢:Ч“[BŽˆ¾ÄŸ“ ’¯9ãÜÙñ[ÄV@tAp…ˆt¢Kñ±pfNû<²Š'ŒŒ`&""1n‰m"‘¡(Z#® DkU¤W§£Û'ÒÐâââ|044Äg½s$öõõíØ±›fl©±K&R¢)ŠI¸$“RÅÃ}C&“óB¹œ2™L$™™™˜™™ñûýÉd’·ø™½zõj}}½Ñh$ûät:‰D taz½6Ø?§R)à5¼‹6UÉd2“É ,A¸‹á”H$Ð/¥R)ÏÌÌ€1'=b‚´*'þ››»qãÆâââÒÒR,ãy1ÄÓ@ƒ,•Jôû³••N'%¹Ã‡‘H®P(Àº[”œÂÐÚÀc`Ó J´Z­x”x<&cÀ¹¢Ñ¨(ŠF£‘F&¦ "4 z#á” ÎK:ƒ@`×®]›6m‚ Õ ý òQ!¸Z0¸AÝ}!rÖÃ$J†V«ÃR˜³ˆZõ¬Œ(TŦ¦&ØEmÙ²Åf³AɈ.(•Jsss×®]K&“d~´qãF0tYOà’¦aT8N\aݺuKKK½½½¥R©¥¥e÷îÝV«¢BàY@B BŰ!¦ãr¤–%'8Ü?1‰ÙAZÎ2gÂ-Š¢Ó鬭­“tee«ÌžœN' ܯ é’:::<èr¹(»PN›Í6;;KC+ÉdÚ½{wss3ªmx¬XßøÏ£ñ“`F5a=øM„d2‰DK™”°4”žhRØñ$VܵL&F ŽÝ=h°ñpŸ›L&‹ÅÒÚÚºk×.A€Øº\.øma~aæB![7xÇ?˜hª²Õ&’¼:£}½¼¼ ÂN<ÇÒ)X~‚& "ÐÇèÁW•‘ {öì´G\<ª-à•699 T$ÌGsÓëõ‚ äóy Ã2™,›ÍÎÍÍ:uÊd2=þøãàj‡G6ãÈ>xn’«Ì‰?KÁ™ØÈÈÈÈÈÈøÃOÞ8?ñcŸaæÄ_ÊÂgNüæ7¿YÍœxïŠp÷„ ¢”uŽI;K$ƒcŒ!]ò{MBµ°›dͧŸâBÒ~š "¢ !~ÃI)dGØÏ!ˆ"^1ž°7…­ ™s1)ˆÅN”,‡±e§“Þr¹LNOL’ ¸ I„r¹™=áܾÄ:Þ§ãhšnÞ¼yåÊdƒª8’-•JçÎÃy2Ð¥d2 x„°$Ø‚°t0ì­a… úRMMM,ƒGI*•"zýº\.Ÿššz饗ȜeY*«!ðÏ œ ЗÔj52—‰’˘J|:9êhÒñ!`%+ô®®.»ÝNp ¤+óóógΜ¯HùBíf08pìØ1›Í&JÚ@à’eɾ¦¦†%ð,ô"ÔI¥R‹‹‹Æãñ@ÝîzH Dvðh ð# …ù£§@Ù@ i·ÛK¥Rss3Ä,dâ†(KæDè>Â(\·ÙlÉdì$àòEQ"a…0£Å @7°oDQ$íf%“bÒ‚0o¹\á+¬ÖŠoll,@D%£oݺõï|gllL”Ükjj`9Ð:—ůcÆ1ÆÔjµÅbA_@i¥ÓéŽT…’x jEW#è×ÁÝ1¤¦& #®,JÒZ ­\.‡qHaª(ùåóy@WW‡cïÞ½HÏÅÏ2ƒÁ€Ó)ø!yŸÑhlkkÛ½{7À>Œ.¬lMHÌ“Oya2VÂm1Áóù< ¶´´ ¢Á`@ë1 à`\´ ¬:ú9&4ôZ©TZ,HY©øÛ¤Zݱæ(555õõõëׯ8E?µi:Æ?§£! ±“HÆ%¬æÓŠ%a2ŸÎí€éŒ”Ï硲äǧŒKxB|4šz¸AÃøbYÊq‰ùe4¡í%,½L7ó»p8Lv~X¬ðC¨3–w:P!`±Xœžžž™™iooDZªPBI­è»Èý{¿÷{¿þ뿾}ûvŒ7n|ï{ßûÎw¾Ó××WWWw_šèÁ,Õ̉?cY›9±Z~bù‰™×.¯8¶BŽäµemæÄŸ¸@ã9¤Ñh`Qñs.‹‹‹CCC·oß¾víÚÍ›7gffpò’ÂÝÚD§Ó¹Ýî7îÙ³™wîQæÄ_…²6sbu߯‚}'–†B¡>úèêÕ«[¶ly衇6¸LÚZ•9÷%‚u˜dâ‹=.ˆiEЀ(ŠÈ×Fá%cçóy² Çq(ÜÐ:Ñz‚M-1³°™Á×ùh»jlac‰Déptž)PhkȃVŒ1°¥T**Oìq‹Å"" ŸˆYƒÀ2‹ƒÀ¦¢d2™×_½¯¯O.—Çb1Ü5l¸yâÅxdªBG:&˜‚=jŠ_¤hòä ƒv:žžž. F£qË–-°Ö&u Éèjjj,‹N§¢NÍË/¿<44ÄÃÂj9g™óÃÚ¾}û³Ï>‹Ÿ¦L­V···G"‘ÙÙÙ»íNׯ_ÿä“OB³¦×ë³Ù,©‡H®]¼¡5@·Û ï×NA>¹¼¼ þ¯c¹&N¯¬¬Àù‘´Žš€-Í© eФë&HÒWQ²H€ËþK§Ó_øÐ7Kð’ÙãÙD”+bl¡PÐE$JÀÇQ€±¢Ñèøøøôô4Ô‹­­­F£‘ˆ ===~øáÀÀ@,óx<Å¡[aùüÚk¯ 0Í+‹ÃÃûwïöz½ðüZËh 4S¡PØl6ü¬²Pg˜IåóyòãµxkYŒc:ð+ãòK ‘yjfš@3; 鉦¤L&;tèPWW¢zĽ¤)¦ÇB¡P(öíÛ·cÇ ™¬AF$ò(9ÁÑ0C=‰=DèÕôôôµk×0þS©T8VX^]¿WÑb±\âN…'LÆF¤•æA7Ɖ¸é¯üʰƒ 1Ü,qÄhe£å€Ž¸Ú9‹ :``k²^Ðòh[tÒh©G@$êÖÚ›â§0 $²·ç;(°-™$ñ&@5¤œJ¥²®®®­­mzzšhGr.$ÅX0ßc555?þøøø¸N§Ã“¬l6›L&iÄÈTäY¢eÑ]ÐÁ­Q‹ :$á$@™øqtƃÇÁf®Éd¢‘ öY:UÂxã!WÑð¼C¢ Þ¶Ÿî¿N¬XLQç j'ÀMž ˆÕkãÊÊJ¡PˆÇãñx^-¢•H$‚­´Þ6mÚ´{÷nrC®}Ë8ÃPsy8¬b5£g)3I¥HíOÛ¡µ¿øÙ–BœˆQ+NÉð&=Ñh?Û¢×ë_yå•—^zéOÿôOÿæoþ†ÿ“Óéü/ÿå¿Tý¹«¥Z~!ŠB¡p8¹\N«Õ>ùä“ï¿ÿþ§‚`šššæææpr ‚ºÝnw»Ý§©©©©©Én·ÛíöÏVýÉK]]]]]O›Z\\ìëëƒóíÛ·çççÒ$ z‚¦Óéñññññq0¼c‹¥¾¾¾³³ó¡‡úüç?ÿsHD[-Õr/ öIKKKW®\9uêÔÅ‹•JeWWö‚ËËËHHgËT°«Æî ¶/0WFD'“Éâñx$Ãq‘˜dÉä Û\l: åÁI'Rq¤O1ö²Y‘Û.„`£ ’ó~æÙtLÜ4™LáÏ@8 ¨Ü(TWÞ¡×ëñÓ,¥ÓéT*500à÷ûA%¨Ø¶*Ú³gOww·Ñhl)ƘF£8)n(ÊÂÎ ±Doo/ÒŸ±ÕD†µ§¸fÊ’»ùáÇüq“É–X,6??ÿÃþðæÍ›‡ã©§žjnnFREÄüv‘”\ØâŽŽ+?@¦ìõ¼°´\.766º\.X5á²dÍÞÚÚ s«µ{t½^¿k×®––´ Éa] *ŠŒ³øETV–<§F£ÙlFmÉh†h†ŒËöH\!&è\È"Ο¢€ˆL‘ø3y’´ÀuˆÌée2(x°C¢IAô&‘ø€á¸l2™Êår2™DŒN§yã”SÞõa& ¼öÚkH;€JZ­ÖcÇŽ8qÂáp …™™™ÿ÷ÿþßÜ܆yÜPÿ^»v­¿¿Ÿ†±(e½}ûö{ï½÷ÄOPB …˜·^"Çh°êòùüüü|cc#ªJ2*p·€­¦\ ‚€¤ƒƒƒ@ —ËY­VÇÓÜÜÜÔÔT¡\Æ…yñC:, ­V k0šq“Q°°À㬾¾yú(”%Õ$¹baÖ̉`™K(H.AH§Ó°”E@žJ¥È*»T*aP‰œ_U>ŸO$*•*—Ëu‚BvBø$Üú@ +q©ñ*šš'þðX6­òü8Šÿñ-ÊœKÙè*–zÀ‘HdI²tö¥ƒþ¸‚müãÍl6›J¥r¹¬30_x€^\c³Àt:‡" ÓIÜ"<ãh`€ ¦Z­…ñÏ#®îØØØ… ð@¤çÈÜÜòuZ,‹Å4˜P›6mÂY2Æ^¡P€B<•J% ,ÑôH¢f\^^ŽD"‰D‚N˜ø•kB¡P€-]<Ÿšš‚‹ȼ}Òd$vP­@ 0111>>¾²²òÒK/uww;Ž S0ü(Dô‰D" /òùÒ8'fŸ ™LÆçó…Ãáááa³ÙLvuüxËf³Ùlkx4˜˜XZZšŸŸÏårä¾§R©‰ޏ@¼ÂTBjÎåóyŸÏ·°°ÀËår—/_ž˜˜¸†AHÜdQnܸZ¶ú˜çŽ­»a[ká-B'ù£&qçùµŽ?-¸GåA·¾ñoü·ÿößòùüïÿþïó›ß¤FìöÁ[(Ï>ûì³Ï>ÛßßõêÕx<®Õj»ººzè!ù½ÏÒX-ÕR-?{Ù¼y³Õj}úé§üñöövÆØÎ;?Õ¢1==}¿oâÓ^O>ù$þ»¼¼ S]”´*¢(†Ãáï}ï{ßýîw'&&²ÙlCCC$A»X,F‘¶ V6›Íår6Ê!“6aD´$­ (ìãá š"ƒÁ@’(e³ÙÑÑѱ±1ˆÉówÑÕÕuôèQ¯× Q]Œ-XDQkP†r uˆ¥Î郤 `÷à¿àa‘˜ ¨É†I5È&“éí·ß¦ÌwüîSÅîîî“'Oz½^™”´‹IA¯òÆÄƒíeóùü… |`›K!(NûïhµZ½^ßÖÖÖØØX*•NŸ>],‘XÍl6ëõz¹\n6›-ËðððÀÀŒ‡m60ØTñ{nìâ(9=¼·Ê’·.ÏéÐjµÆápx½Þúúúd2yñâEÊuˆ»€ 9ž,µµµf³™â."¸ÝîC‡íÚµË`0Àm ÝW,‘l«ÕêõzwïÞÝØØ,´ jäꪋ«Ó 8XXX¨««kiiq¹\”- ”+™ø=‚þb\”ˆ(Žú±bºñX8_Èáîˆ]BÚRDe$–†…ŽV(z½ž†á5ŒìÀÝ(KÖݘSèÙ………×^{íòå˼þ(N¿õÖ[hOÆX2™¡ à©ùPùx<Þ×ׇQÊ·-…‘‘‘‡zˆMÐPÀ\hHg³YxÉÃ÷ ™Î`ÖŽ–ÈHs¿Ì¥z ÉB- _œ™™yóÍ7?üðCˆ=iµÚ;v|ñ‹_D<&ÁHϧ×ë™äM^W(.—Ël6”ÉVc£¤¼& !ñ1ì¡{ÅJ‚ª,9µáy.UÅ*M60ˈï‹Åàè/“É|>-bD¹%\ ï  A?Aê:ÐjDÉ‘pyyY£Ñ€¦ÄlIŠ2Í‹EYÀ„óŽÖù\.‰D–———––2™ ¤¬­„³¦¦O `šVèý`08;;‹šÃ;Ð!…÷˜J…ñ#<#Ðä?%‹ÅãñL&óÒK/9NL=ê&Ò8^*•òù|oo/Èq8€ê ”¥X,6==J¥ÎŸ?ï÷ûctBõ$Ân-‹e³Ù©©)¿ß/H´\Tcee%N_¹repp 14Ñø©TJ¡P8Ît:}ûöít:}îܹñññb±¨Ñh@4 ˜­¹\niiidd$NG£Q§Ó)_9‘ÆjHz»´´T(N:ÕÓÓƒ2éCñçRÄ”,JE„Ë—/ߺu gHŒ6b%)•J!o½õ†V*z(c1Äç‹Åb4 …Bçλyó¦Ñh¤ä‚ÄlEVÌb7÷»ßu:*• Å¡5Arù-8ZÀ|Ïçó8:Âeãñ8–‹Å?222::Êo¬f€c+HZ?º¨æ"—¹¨/Ÿ”Ëå&“©¹¹¹µµµ¹¹ ÎÏÏ/,,ÌBt'HÎøQÀ 2™¬¹¹‡ V«uÇŽÝÝÝP®1IØžÍfÏ;÷ꫯÎÎÎ"ž‘Ëå===Ç?räàÂkØ›^¶ÚÞhttôÃ?ŸŸGKÖ××ïß¿ûöí€MùàœqÚ7BoEο‰´`ŒC™É¸‡PH¼O¹üÐ×ÔDŽàŠ1‰Â“õ¨ŒS#â_Œ°„,#ç 7nܾ}“"Ïr¹¼´´tíÚµææf­Vët:[[[£Ñèòò²Édêèè4PcrrrjjŠ\ù뀼CI b#² ˆ9@1´`\Œ ²÷æÇ<TÞÙšI¡ ^'‰7ß|óí·ßFrIŠs¹ÜÍ›7wïÞÝÝÝwhhAw u¤(åì£é€Å„Ly*Ñ @5’ËåÈ¢ƒÁF¯_¿îóùöíÛg4AÉd2€½xÒå ã8! caµù|ü&E¼xà¥R)Í n²¸¸è÷ûËå2Œóƒ½Â¤lt³³³ð}áBH`ebb¢T*ÕÖÖbÜ þºÍââ"X–XëHŠ›(|‹Ð^Ò¶cH …P(›? ³”û8/€­ g¡y ðW$ÛDì%:h¯è3™ Y=‚€V.—¡!M&“ÓÓÓÔ4ý!'Ìår~¿¢BB¨y¤ƒÒ€%„ lWƹ˜Á´¬±\.‡¬²4HÊ«ý° í_\\Ä<¢'2:…yhñO:Bcé‹2)G$`_¿ß…‚\$ceÏ/ÌŒÉT*µ°° ‚ÅbA‘r¯qƒÑhµ•IF‡@Nù%4ph´AƒÇ¢ÙlÂ…DhTK8› ›6mêììT«Õ™LS§˜)D"ưÄD“Ëåáp¸§§'‘HÈd²¶¶¶ýû÷CSÏK&“555V«–óàã‚Déå©jk·^˜_D.?²¸Æ ¾E ±9%½w倷`Oeff/FGG×­['[m¸X-ÕR-Õ‚²¼¼üæ›o¾üòË—/_^XXà¨Âáðý®Ýý,‹åàÁƒ¤wÀÀÀÀÀÀ’KNNNâA ^7vW8ý®–jy‹(ŠgÏž}á…FGG———»»»ÿàþ ­­-™L ’gvÒP#b—Œ#b¤HÃBA‘9o-Dñ'ê“ÚKXl‹b•d2966V.—N§V«M$===+++Ï<óLwwwSS“Åb‰F£SSS}}}7oÞœŸŸÿñ¬T*wíÚe6›)ç#ñYH´Â¤€»jÞ´…qÇ­e)ñS.—›œœœŸŸÏd2ƒÁb±x½ÞÚÚZrù¥´_²ÕYº@›bRÎ)4Ž» Þ={¶oßN ÚèÆ+¤R¢äÏVK®¨×xÈF«ÕÚíöööv¯×ër¹<Omm-%ÂK§ÓÈÀ³­ [Dõ„¦UÀ@üŽ‘2N"ö€ˆ ÁëõvttlÙ²¥©©Éd2Ac‚$epùEÔÍ:B À( £Ñøä“OvvvÂøI¯×[,™dâè-—Ë]¹råÕW_œœ$èÜ ÌlÚ´©¾¾ž¼¨EIÐÄß2ãô‘HäúõëÃÃÃ555‡ÖjµÁ`Ðçó½ûî».\xüñÇ!c¤]L5àSÆTp‹xd“‡0¦¡øœT<ý*“É’‘c ÒüU«ÕŠœõµ°º0Λú—¯ÄŒCCC8ž©R2Æfff2™ŒÛí¶ÙlGQ¨»»Tn‚ê&&&À?¢/ò•0Æá‰¸#bEår¹‘‘‘h4 â pgøåÇb±\.§Ñh~r\A)-SÓ¯ _¾|9ò9XQ1d//F­VƒÙ‡¡oB²Q22´ºÍìì,r¡"Ò†úŒ!’8Åãñ‘‘‘T*uñâÅÑÑQÊŒéóùòùüøøøÌÌŒËå …BÓÓÓñxÀ AZ˜P€?ˆW‚Œ¨ù|þƒ>j€ßüAá:t¯>ŸïêÕ«øc 0c XÒÂÂÂÒÒR(Êd2V«zLd%êe(Âl]\\ÄmBÊ ì©Qù´ªz½üJ¹\ŽÕO§Ó_Æd±XÈ gÙlç@—0†"ÀK¸^ooïÊÊJgggCCƒZ­6™L2É9«¢ÇÉ7Šw¡"H©B¡tOÅGy¤®®®T*!,ù…cuK§ÓCCCccc»víÚ°az„î…d¿7oÞìííݰaÖ-[ÅÃ Ï QJxйœÍfgff._¾ÜÑѱoß>fb™žž>}ú4RmZ,ÆŽŽÊå2R—øýþ[·n\Y¡P˜Íf»ÝÇD«T*¯×ÛÚÚŠ±´¸¸ƒEØêñ“º „/ÌîÙÙÙëׯ'“Éx½ÞÙÙÙK—.Éd²Ã‡·´´`®)•JpÊ€ãA_(`M»²²rüøq“É„‡% èçÄÄÄ|ËåŽ9b·Ûq,å2ãløñ¨Çã.\¸qãÆŽ;:Á£ QtyÄc# áѹk×®¶¶6¸yb¨d2’ùÓS[LAæççGFFb±˜V«íèèØµk²ˆÒSiiåÁPx&ñ:ùU‘†+ Zþ0‰¬ãuÅ ü&p|Xqµ3×½+¼… ³Ù|üøq¼~å•Wøð¬Zª¥Zªeyyùµ×^{å•W®^½êóù*ˆ2™ Læ{m[ø W\.—Ëå"/Qggg®_¿Þßßï\«¥Z>ò°°ðæ›oŽ-//766~á _ؽ{·Ýn'Þ¡T° ™ŸŸ¿~ýúàààÊÊŠËåÚ´iScc#7töH™øH&¤ƒtFxŸÎNéM2ÏÆ¹:¨=ííí{öìY·nÈbˆ6oÞ<66ÖÛÛ{áÂ…S§Ni4šíÛ·c÷LR2Ò ÑÆ×d«‰<üޏ}ûöÅ‹¯^½Ý™Íæ}ûö=þøãuuuð¡+W0w0`× ÍL=êêê:tèÐ!·ÛMße\²'Ò¡bt¼Ì8«²dÌŒ¿ÖÔÔ4448p`Ó¦MV«Õl6ÉB«Õâô»X,ú|>xh'ÉÕˆI}Ä…?äàÁ/еZíŽ?ÞØØh·Û¡ZãOdqˆm@ âógñï°KojjjiiAæ 2Ù‘%_½zuvv¶$%§'9X©Tšœœœžžv¹\¸ Á[l^¦Õj÷ïß¿cǤ´Ã¯$“ÉóçÏ¿õÖ[ßÿþ÷HòþA¢”6‹?Š'P’`‚Õhh‰«¥góà‚Бp†I>kë•¥<‚$èCÀ`‚×è ñ$—Ëɤ Œ¤´7::zóæMt}EhäÂ… ¢(Z­V·Û½uëÖT*åõzñ+ápøòåË`ý¬-±áp8 " ElâI,‹ÅbÉãããÁ`!âìììää$ÆUMMÍÊÊ ñ4)£œB¡ˆÅb‹‹‹Ñh“T¬V+à°t:ýꫯÎÌÌ€÷ÁV‡…Bá£>šŸŸ÷z½:.‹Åd2955¥R©†‡‡ÑM¿ …Âääd6›››ûሼX,bÑCfU"Oaå!_jÊ#I˨4J¥Ÿ ƒ°Be´å¯0åryrrèmSS“Ëå’Ëåét:‹9X/1Æ’É$Ü Õu8à¿ðNóù|>‰ˆ¢h6›[ZZ C,S©T¡P( ÉårƒÁP[[ <ÎívïØ±Ãn·Í“¤ß¨üââb(‚[ŸN§C"b Úl¶………îîî§žzЇo07±€^D w-ùè•J¥D" c'Nœ¨««pÛmÑ‚IÒB‹É}OàR+ ­Ün·(Šõõõ6›­T*Y­VªhµA/ß!oÛ¶­³³ó—Têè¸T*U,—––öîÝ‹Ï5Qò%ÄŠ—Éd4Íèè¨Ûíîè言0 Ãèè¨×ë=xð ð}j¨ååå™™`U´žÀ-wÿþý¡Phjj*•Ji4šÝ»wïØ±»÷`0øæ›o&“Ixêñg*t‚`7åp8‰ÄØØØºuëÚÛÛAèïï/‹ Pã!Kx"Ú–N\Ðõ¥Riݺu`ÉQšNg/—Ë'''C¡Pgg'ÈÎàÖa]¥s) Øf³yhh@*R£ð 4»G—¡AðpÄÈ$ÿ ]Às$¨DŽÏ1—ËÔh4^¯×ív£b¼¨“v;´¶ Ž?ª8½£g=ø? îø¤`kŒºý[^¬Ïª<ÁÌ®]»6nܘÍfó7ó+_ù ’NLL|ó›ßìíí½ßµ«–j©–û\VVVþãügΜ]›Q«ÕZ­Öl6«R©~øáC‡íᨒ ÷»Öt®ù'Ož¼ßu©–_Ñ"~b¿-:‡ÌçógÏž½qãF±X4_üâOž<‰£Tl‹±W£ œ(ŠçÏŸÿþ÷¿?77aËÆŸ{î¹C‡hCjþ€ ;˜Äa¡lPŒ³ä@­ ÃÞ½{±q„ù‘Õjå%H´G”Éd[¶lòÞ{ï}øá‡.—K§Ó‰’Šf·ÑFœjBÖ9øŒ$¹\>55õÒK/]»v |%È_®Ñhž~úiª ÀòÈà顇jmmÇã…B¡¡¡¡½½Ýl6ÃŒ§ÿ ²âe ¼¹ i¨L&“ ¬µµµ³³óÀ--- L!ˆ%×ðððèèèÔÔÔíÛ·qÔ¿´´”H$êêê(Dvs&ùWðˆL0ÄsÍ$Èåòææf¸4"Ú'u 9²x‚Ú-CŒ zî@²JÄ. àëÄ’Ëd2SSSÎðñ-†\&“ …BDD䯳¨ðëdRÊBÇC1ªV«Ý³gO(z÷Ýw_xá…|>¿cÇXí1h‚‰f€]pôð™t: _!8²!ôß8& …ŒÅ@ ‡~XWW‡§€ ”¢t:ÆQ*•áp¸P(h4šx<D@€hg>y(“@dž€ñ LÂ*Â[‰Ä[o½599ér¹VVV Ó‰D"à»Ay ¡¢" ›¾ŽI·´´ôꫯ¶¶¶ÂHK£Ñ( “ɤV«ÇÇÇoݺ·l¤!_æÂ… ‹‹‹ a¿ Ý ˜ÒPÐÓJ§Ó555F¹\žH$ÆÇÇ+H|ü`ÆÔV(©T*>+•JƒÁn·£þp/ÂæÖÜÜ\WW§ÓéŠÅ"¨+ p1É” €ìÕ«W§¦¦ž|òIÀg0K¶Ùl{÷î­­­õù|@`Ë–-{÷îE÷1.Ë¿ ‚ÐØØ¨V«ÇÆÆŽ;ær¹H0ŽY¸d||üÂ… Ñh´±±±³³¶ñ‚”© ˆ2ÎÎÎÂI 5B˜J¥fffp8×ÖÖÖÝÝ â㘆Dæ-—Ë&“©¡¡¬.`vLJ Yzss³ÝnÏçó¸5‚Bĉ»JÀ þóù¼ÍfEˆ<à?RJÒi -¼ y2)O(Æ Z²2Æi eœ©9Á=x‚h4à§ äÒt#$‹èÌGƒ9+púnÌz耡·)^î þ/†1²¦0Æh)›˜˜xýõ×çæægP£A\.—ÝnÇÉ`G,}àv ‚àt:ïÅ?¡.dŒY­V§Ó922‚FÓjµ 0>ÃÜć± ‘Õ À;½^o4AêÄ"I¤'Œj:AOú'HY/yèø§PÙÛl6ÇZ"Fç~H -{PüÇu8k¡•Ë)IÉÏh4¢ý-Ê%·PŒyÌtfèkUiþò r‚\y&)OÄ.¯NŒp·­ß_”¢äWÂZ¾¦¦æÅ_|ä‘GæææplòþûïÿçÿüŸÿçÿüŸ€ºª¥ZªåW¹ÌÍÍýå_þ%ÿŽZ­¤¥V«9òÐC8p ³³ó^ó]«¥ZªåçVø¶ƒ·nÝ:uê”ßïW*•G=yòd}}=v{t–Ë8;Ø@ pþüyÄØÿݺu 4‡C‡ᨖß4“³/2ÖFÁ*v„ØõR€íšZ­†«ù=SÖ9:ö„†B§Ó™L¦Ç{ tŒ·Þz dB+ðEÄöPñØo¨D.¶¹\îÒ¥Kƒƒƒ8ÈåY‰Dâüùó7nܰabr—§;öšPÛ™L¦}ûöµ´´’¶Ý´“&Ë-BÑbhð“P\¤Œ_ûµ_ëèè0ÈDíƒuttôý÷ßÇ9?‚yAfggûúúàûŽè1  ‹Åùùù7ß|3‰Øl6Ä«dÚ‚x ¿°I­Vß¼yöèè(6ýÀ#B¡[ˆZU*U0œœœŒD" ×0‰rEÿŽD"z½~qqØ_¹\ŽF£W®\Éår›6mBsE"~HÓk`~¿?‰Øívðqñð$›Í" Úòò2„NØŠÅb*•΂ë„ÃáÙÙÙ|>?66öâ‹/~ôÑGïÀ  •N§’…0¨ŠÁ`ؾ}»ÇãÉår7nܸ|ùr$'¡#t…Ð ’¯üìì¬ßïW(—/_¶ÙlÀAÁ-“ɤÕj ÄJíh4šöövâÓ«…Æ!ë+‚éõÌÌÌ¥K—L2 S¡öööÎÎÎ7z<` Z­:>¨{fff†‡‡ûúú|>_ÿ ×_¿~}WW†™^¯‡Ììðëêêìv{(bŒ¡³ày¤ÓéZ[[n¼\.£_ôz}MMM$9þüâââÚÅmyyÙëõ>ùä“&“I£Ñär¹ï}ï{—.]¢ÉËX©TnÛ¶í™gžA C+—J¥.]ºÔÔÔ´cǤÔõfyyyvvv`` ¶¶öСCv»]­VóÙ¨I±Vd2™™™™h4êõzëêêÐæoÚ´‰1f³Ù‘èõz—ËeµZÉžŒÒzŠ«ªd2Yccc0³ ‹ݾ^¯Çãç΂F¡ÉËËË‹Åf³¹\.\ª¦¦)äˆÜFc€ Y£õœ° ãÅæh Žð» È'¥‚„"r~C²Õ¹bñ1¬Û¸à3€dcGLa—ŽþK\]B¢Ñ§¸Züùõ„§2ñ©B…ÕYTa‚l¨)øƒ ž’C@,P¸G*hô #ù|~zzzaaÀ7Oél6›1œ°:ÑC]F·@gEôZ”Ä}@€¯ý§V«Pg³ÙÆÆF0óùîܹ¾¾>´c£Oñ†L² ”ÏçøÃZ,ÀR —¡5ð-d­Bª²×_ß…S¿p8Ç“ÉäË/¿ÜÞÞŽ@.ß¾}{ee¥··wß¾}mmmr¹¼¿¿ö(L’¿Ñ8Çëééé K0o*—Ë~¿>S|&8Äöƒ¡¹¹0nƒ]ÐÑÑ‘L&ççç@{{;ä3À¿À˜ʉØ[¥R\^^FæGH½LŠë?“mppð?øÓéüÊW¾¸á(Ødõ…ëƒ7”Ïç3™ p7€Ë¼wZ˜ÄP"—° xå† ¢Ñ( "Rz":ݳgÏSO=ÕÖÖ¦V«Y—Ëeð`ý£T*­V+DXp2âW&“uwwÿÆoü†ÇãA(ˆ¥ ¦¦fiiixx8™LÂ$nxxX£Ñìß¿¿\.¿ûî»2™lß¾}_þò—‘/™Lj40;€vŒŒôöö® kQ”J¥Ýn¯­­E‹íÚµ«··—´“´¬1ÆŒF#h•™Lƒ–1–L&'&&¾Ã2T¦R©šš§Óév»a«þ4<IØÏQfFB… ¤à’m@ÉÄþ`œÚŽär€ÃÐãN§“dׄž¨Õj›ÍÖÞÞ~ûöm$?…Е øµZ½nݺúúz ìÀâáEH~BDòŒƒ·hÆa²cפ;àû¨Œ$oÁ N.ß§4hå\ 9¶ú…Mxìlí‘Ø…nl´Þw{†bdOè•lu2J²ññGÂü_Áð%õ °#—ËáI5‡±XŒrAm $¾™™påàx…q%rÙ¨=ùf—­öéÇ@ÅjFÈŽJ¥2 L:Z^^Îd2 aÅ›ŽjxT‘²ÍȹÄÄô|‡'[­Ý“­6 ä Ѱ’är9¬œÝJ9‚Ê“7é[¢¤æã—|ÍNé;é3x|ãú2ÎN”€'þaDºr|y–}Œ‡q+FÍ~Pñá-„Õüñ{Qx‹1æt:ÿ×ÿú_÷»ÕR-Õò`•ÆÆÆÆÆF‡Ãñè£"Fų°Zª¥Z~é áG+++£££/^ŒF£2™¬««kÆ 8>¥ÍœÈ µ¹qãF2™Ü½{÷óÏ?¿qãFµZm4}>ßÜÜœßï'Sú-l!År:jµúÆóóó‡FN+ÆmˆIpD{÷|>ô|L:¸|áØA"òEÑårõôô|øá‡jµÚápÐvV&“A¨…ãVˆzð]Ððo¹\Îf³Ñh´··ÁîØz¹\nhhÈf³¡A°q‡é>. ÞÙÂÂHLo¾ùfGG¹ÏÂy7•Édà=̤Îä ·(É=Ún;årùƒ>°Ùlä P@„H$ …Ðòü‰1Q¨¥`º¸ b=­V [J*_(’É$hÐ:Á'!ÇÔÔTOOO}}ý† pÈ[ø,f2™,¾û±cÇŽ!ñ*ŒèYoÞ¼)—Ë[ZZÖ¯_'à@  …ÂÆ7mÚät:A˜žž&ûáŠZÅîîî={ö´´´@Fäp8Ð’ñx|vv6‘HðçähƒÁpðàA«ÕŠô‘Åb‘Hˆ }>ß;ï¼³´´ôè£nÞ¼Ùf³!òÁd¡Ø‰Ø1Œ1t7¸i---ŒSÅß„:¢\.[­Öööö¶¶6«ÕŠœƒà) –˜,H7i6›!Þ:•°HŠ{ù ×¼¥R©šššÐ˜ÔÕÕmß¾ýäÉ“ ƒ×@óS¼îêêêàÊGj,·Û½aÆ#GŽ ä‰J¥2‰¼ýöÛ‘Hdûöí±X mÕÕÕe2™úûûA»Ã„:wîÜÈÈHKKËÓO?m6›é¾>&ŠÃnDàéÐTÂÇ EKKË–-[0ò!ÄfŒ!‹+°-Þ¼)>[³2*2IF‘9d’”TŽúN&%µX^^N$X"@0$•.9Q¨OFæð¶Ÿ™™±X,ûÈžŸdbF£±¡¡A§ÓQօаcÔ9ú ­VÛÕÕ‹Åæçç!€%;<¢üÐ-ð?LýêëëùUX|×w*k?Pñl­¨ðóŸXè‡'©;Ùê4üª‚¡U¡­æ±<¢Úݱzw¼MÜ€SVjà†‚ är9àJôuú°\.Ì ¸¾ŠP&Ê¥l¤ýäO¶øJÛ¨BgÇ?w0¤1˜ñEÄèp‚çÍ¡)p8‘ÍfÑëèÈŠ˜Ú&“ .(ü¨à›QøÝ8¼ÚE³’ü­•¥ì¥hd&YÒæË8SBò5ÃõS©T:&»:ì°\4d0¸»Oá.p<[Cî[ûþ ¨O¼wå‚·ª¥Zª¥ZîX(›jµTKµü~«Äï½o÷õõA¹f³ÙöìÙOì“°µ%2?p™H$277'BWW¬yc‡ƒ’ÍÕ××óùËÁ~×\ZZºtéR"‘(—ËÛ·oGÔ  j…+2™,•JA®‰D@AH‰x7‚ 8.e2ð•NŸ>=>>NNd›L&a¯Ööý°¼u88ˆ^YYñù|“““±XŒÎ±¯¥f\YY!Q:Æ~[^ '‚”bê’ñññ\.‡Ì\öáðMd2™pùä“V«•@Á`ðå—_nooÿò—¿Œôdˆâ(â%´'ÅðàŽmÛ¶mçÎ6›Ø[WýÙKÞª–j©–j©–j©–¢ˆoŸ?ÒÏd2ׯ_"c·Û[ZZ°™Óh4Øžf³Y’ïe2™p8|íÚµ‰‰ H3™ DCÓÓÓétúŸÿùŸßyçÒjáà·X,Æãq¤oE1 ---1ƾýío¿ñÆØJÒ®ÕC„&E5t;´“¶ÙlØeP*•6›M§ÓƒAÐéÆx<~óæMÔœÏ.$JöO{öìinnÆö4•JÿèG?µ„Âr&Qf³ùðáÃ]]]f³Vb€!aûލïûßÿ¾Ýn?yò¤×ëå³AqãÃf>à…O \§í/œ€6nÜxàÀ2Ê8mNSS¤‹°©‚#o ˆÅbõõõàÁ´¸\.{<žáááñññM›6µ··;d@S©TØâÒBÓá5@:¯× !ŒÙlç #4B£••“É´¼¼¬ÕjkkkU–¥\rÅb±±±±©©ivv1N  1„Ó¨ùZ¢‡Éd:yò䯡+—Ë0`*—Ë@````m<€&“ÉD"áõzÑàD%@öF„sÁ`8b$‚h 1)Ë$Ï’ ö Ì­è×ù¤º¢ä³Û#ô5!xžDƺãöíÛÇŽCüIa¤À™³Q‘(%t£Ñ¢T*:ôØc™L&Àǃa-oàMA¬ÈÉ»ÈHÙ±cÇöíÛ·aðÛÚáÁêhÕÔÔtèС±±±M›6ÍÌÌŒ£>˜5àM@ŠO¥RÃK ûñýÈ3N'¢n|Ô˜l6‹Ôè¯öööãÇwtt%؀ኃ?H¹†S“VÀ%ühK4‘H-7ÆL<š·¥\.‡B!Ü8‘ãÐÑòm6›^¯Œ‹Å‡‡B!Tvæ`Š9ÎÚÚÚx<>::zëÖ­d2yøða³ÙL`´LÊ;A(?Yw ‚ïpƒÁËåS©”(Šà°€5IwG<>­!%Ó ˆâ|\м“(˜gR”NcŒUøŽA ‰'H,ƒ¥¾…5D&yÀ®Äûñ³;9á #™LÆãqäèĭɸ¼„M`€aBŽÃ ¿&ä+ ¥Ói ï4œ0¶y~¾KBûb±ˆ&>–Ô'CDØÄ ®_¿&Ú0àËf³¥R 9VVV‚Á`6›õz½G¯×§R)L™`0…õ¥K—ººº€‡‚¢È'~)‹ÑhtnnnlllddZÈp8 Æ.y)¢=1I)I6H ‹ÅÞzë­`0ØØØH÷U,=Íf“Éd‹E¯×ÓŠŠöÌd2˜2Îk2NOLL$‰ùùy›Í–Édt:ú #QrŠDÌÌÌ€ŠØßߟN§Óé4W`:ãÄ ýP(„Ѹ–––‚Á \.O&“§OŸ ¾F‡‚ѬÕj‹Å¢Ýn?vìØæÍ›iE"Æk™3þ§Ý» ÅE\Fƹt¡É«F))‹ï]©Â[ÕR-ÕR-ÕR-Õòì´È"J­V'“I¿ßÍTNØæ¦Óép8|åÊ•óçÏÏÌÌ`—‰³ÓD"‘J¥Êåò¥K—®\¹‚€®yýúõÂn—œH ÈéõúÆÆF ¤×­[‡ÄX`1À ‰Õ@’öÊjµ>öØc7n„«º ¥Nƒä§©©Éãñ`3ªÕj±#ŸEå+.AÜîÝ»‰wc·ÛÏŸ? ±Èe0b²wïÞ£GÖÖÖé$±$í/zY­Ö3gÎ455mܸL7‚xqœÀ¥‹b’E1cŒ¸$´ç擯;‹Å‚ó«‚QSSãv»›››ÕjuKKËöíÛ;::ÞxãóçÏkµZØEkµZÂÑ@¾ v¼O ?ÀŒc7@“Éd€]VºAì¿ D£QÂ&xÁ°¤††ä³ç³dbLR–C´8_­­­.—+•J¥R)¸=úè£ èb‚Ø@n‚¹; i^ÔÔÔ qÂf¶:ðÀÊåòººº}ûöA7W^€¨I·Bá:~t†ÏOI¼(KÙx– …ë"g¿B9ãx¥*q DI~HpÛãu"‘(•JV«]P,ëêêöîÝÛÔÔDä)BÓpS¼Å _+´ 8}Ï<óLmm-ܬ+Ȥ¯Ä°|þùçÓé´R©ŸÏ"yýõׇ††‘Ð-À§Ÿz´ÒßÄãñ‰‰ B—pDõápÇ ˜,ÀÔ.]º´°°€$ü|W*•€6°nóÆ@Œ1‹ÅràÀ†††7nLOOà C¦u$mâ"žÏ烇ø/Ì©Tª··7 ŽŒŒ@¶ ï6BZy !Å„æ z±XŒ ø Ó£9x ]ä è žÓs‡ZÊòùüââb©TúÁ~>,¯8 Gfù°ÞÉdòÃ?ÄXÅSŒpŒ±X,vëÖ­`0ˆT€k±Bb1G:œè€IŠ£”™™™¹¹9ŒI½^á‹Å‚Á`.—;}ú´ÛíÆÍtH7Àùùùp8,Š"¡–J¥¤bIÉ ¡vD¢ä>úk)M(LʼÙqõêÕÙÙYP}±àY@ÿRò P AˆD"SSS…Babbb~~î{$ìÅÖét2ÆÂá0cÌétâ@^ét:‹e³Yâ@a¡‹ÅbårùÇ?þñG}DÌ>,P ‰–µ¼¼L‹§N2›Í™‚d>È,a¿Á?/Êå2ˆ´hs˜ `}&ú•R©4›Í¢("+—F£©xj“8àl5woí MbÎÓùñÌ;â#£îå² oUKµTKµTKµTËVøSDQ#‘´ Œ1*iµZ0¡t:ÇãÙ´iSmm-Ü òù|4˜˜ÈårN§Ón·ÛívN×ÓÓÇ7mÚ„Se³ÙŒ08“2páŒzttôG?ú‘\.öÙgwìØƒ$Að-Ú·E£Ñ¾¾¾µN(e.½—Á`hllDÒú²d×åñxÚÛÛÁKÂS§Ó!ÆW¢â‚ T„Ãaœ ‚€Ý*¢tÚt*ŠÝ»w?þøãÍÍÍ”€IÆùà"®&»"ð’êP”ìZøÄálµéÙŠ‘„@¼×»Á`0›Í œ›‰ ågT(¿ök¿–Íf=²×…­?P rE‡ŽÏ0…‚eRÔ‡C°„›EðÆ[$ÞÁÝÉ¥\ì&“ill H(ã¶ìM¢Ù 9;jнƒ±râĉîîn™”W®O”Uñ? Í­=ß&&o¡Í‹\Ð#6›Íh4‚UÄ$£4ª¿Z­†5L2™T©Tdðìcð,ã½oø)¹VÅ«œ'³"¬°šøu ‡*P<„ ¥R) ~÷»ßU«ÕÏ=÷H¦­­­¹¹™2$0ŽðBWãÃ-^‚§P(Ün·V«µX,˜‰¼Á ›t ˜æ¦X,êõz ¨„@©@rI½^èС;wBäHõ‚²¢Q™æææ­[·‚÷‡)£Õj½^ïÆÛÚÚôz=üÚ€”aÊÀ™‹ ]Æ%8C·ºB¡€?W,·”I&YeÉâ(<‚  …D"tÆétjµÚååå©©©x<^ĪD*¾ß1Ô³Ù¬R©Ìf³ƒƒƒóóów[ñy: À뉉‰X,võêU£ÑhµZ=ËåÒjµÓÓÓù|ÞëõÒø§EMát:Íf3® 4‡1‡c±ú7Cð;66Çßyçx–a(BôP6›½uëÖää$YŒ“í¿Àbž‚œE‚8"ÓÁáanZ+hõ£U‹. z/‰7q§à1Æ6lØ`4q؃,•J£©T*—Ë, š8Q£Ñè‚LòFê5­P(„Ãáb±8000==M’@€/ù|¨ –&²3+—Ë€)M*€6°žc>ŸO|EΗ _‡‡#ž5xú`‰fŒ·ÅXeO\–qŠc~@Ò­Ñ›Ùlvii Ït<\€'Òðÿ<=0N'“I™äÇ_(7™zŸÏG¸?“({wò8/ 7bÆ% ­Vk2™xOz¬ð„È«T*¿ß?22¢ÑhvíÚÕÚÚ ‰=Ú0™LŠ¢hµZAêÄÑæÆO±XœžžžššNª×ë;::´Z-z?—˹\®Í›7oذ©3t:ÀDâyX´¤àú„n¯E¸x™-=îøa¶wí~é³-Ux«Zª¥Zª¥Zª¥Z ‚Ý<€€•Àž\”,“qºŽHû¹ææfÚ¹‚a122òÿð“““ûöíC¦¶‘‘‘ÁÁÁuëÖýæoþfgg'Ä2´#†Ž(eŽ«««»víZ,s»Ýõõõf³¹¼ÚœˆbŸÔ¯Äeò ¤#—ËMLL ///_¿~\•x<ÞÓÓ³p±2ÌÎÎþøÇ?F¤VÂ`»‡˜t~¿?ÞqaÇ 0ªèú™¡PH”|¯ƒÒÔÔ”ÍfÂR(²Ù,TZ@ X,¯¬¬à#‘Hd XªN§*DiC- hVx LNNÎÎÎ:Žîîn—Ë!iuiZñ2CuÔD™L¦¿¿qqqïÞ½`Þj!F§ 9»Ó‡q0%f%ïv–N§a¸öÈ#€5L¸6úÚï÷›Íæúúzü”qçÎÛ¼yóÞ½{U* R4@®H$ríÚµùùù­[·¶¶¶bqƸJ&“H3¢T*ÁªÁ ÕjEj­V‹&Qc±ØÅ‹ãñøþýûÛÚÚð Âñ–;2A÷ù|8 joogŒÅb±d2i6›×¯_oµZ¶‚7::Z^‹£¼Zø¿OQ(ûöíÃs+?Œ·h  Iaå†Ñ;55uöìYhŠ×>é0ShÙ/KŒ#7ÑvÅd29NŒ«›7o®¬¬¬_¿þèÑ£N§ôIà}XE.=âÔÔzù¡‡jjj*‹Ùl,-ìy°û#®4Içóù¹¹9£Ñ¸k×®C‡étºt:½¸¸¹%Ü È%“¨ßüS˜ÖíŠç#ãÎÌÖ"\k·Šç)ɱiâãEUœX-ÕR-ÕR-ÕR-¿ Eü4~¢"ç›CùÈ› œ‚ <àV0 ¡Àþ{ëÖ­ Œ1‡Ã±°°ðÑGi4š_ÿõ_ß±c‡ÅbáÒÁ Âù'c g­‡C£Ñ@»§V«³T{Š¢t€çÈTD ’(¥ú%swh1>#›$¶f¿˜Ëå°áF¬R©À&kooïêê*‹ÉdåÖ¯_z¶žá•%?iÀa ¢À¾„^?HQ1ÕŽd)U9é´Ä3wjkk- B_þv¨>år‘ÞúƒÜph ž{µ£ÑhD”B¦€Æx” ðNøs¹Mò lkèlÄ!$¡àIÜ ÔôJИOAÆZ_Qà :Í·õ¥[`ß BÅ*N¿¡:t8ÒH˜†ß‚÷… œÜ¯(uc>ŸO§ÓW¯^}ûí·çççWVV¬Vk.—•£§§çæÍ›»víÚ½{7¤^¢dJMs öá0rÏRš2aN¡}]P 5¢ä"ăž#cZ­v÷îÝ€}‰366vþüù––ƘF£AÞ@ênDn˜M¨4Á¶4¥l6 Ãuh‹"‘¥wÉd 4Q%úwxx8ÃëÊï÷÷÷÷ƒ-ñ¬…0„€®]ô4M¡P¼C=''''''—––––––¡õ …ØR ¯‚~ … Ôétccc€0H·E¹P£Ñ(°WR¤"ÄzXTãñ8ä]}}}&“‰È8„ÓÑ:€¬ Xlo’ê ˜dã‹% ‚ç…% 70 Ay¤„w´ÓœeŒzCuH&“k¡^&¯˜ 7n„™ @H¾ \¹rå‘Gill4™L pòÒßßbï‰'€=t"¬IÂÈ/ËD ’Éd˜øz½~ß¾}6›ÇéYƒ§ÌÚç…ÀYn1ÉÛ¨\.«Õꆆ†h4j6›!šÃz‚âp8Ö­[P ÓÜd2Éd2d9ðx—×µ¦¦æöíÛ˜òü‘ q$ L¤}BÑ'1bÃá0)ÖÜ—Ëåh4Šæ…¹ÞD_€h ôëñxà²o0ð+ø0æ8ÒÃðf†ˆÉ…!a±X¶mÛÖÖÖ†9¾~ýz$üÅ„åG5­uü,+s:q±üñM(Ʋh"SkTìX0Gh‹…71Vï]©Â[ÕR-ÕR-ÕR-Õò`:Ö&æ,d®LÌ’Â1ÎAÉétnݺõÌ™3CCC2™lrr2~ñ‹_Ü̆‰c !%U1Àó…­‰ÒÁàÜ ÅìŠÐÚt üþ^T6ˆg@¯ ”‚·ÚÚÚãÇïܹm…¡‚O’BðöñAðáØÕ«W_ýõ¹¹9«ÕzäÈ‘úúú………¾¾¾………h4zùòåÑÑÑ›7oîÛ·Ïãñ0ÆÀLDýÑïápøÒ¥K¡Pheeåå—_¶Ûí‚uB7EC o°ÜñûýgÏžšš" ƒ4b¼Ý$·…BðV<Ÿ››Ëd2b1Æjjj 34°‡K:MPü ˜“Édóú|¾@ €ac³ÙÊå2Ô¾pJ"âa8–Édà\èt:Fc2™FGGá;>00099‰î€©3æ&°$bwF"d13 \f2™Ó§O_¹rì$°`4ÍÔÔp[r¨J‚N„E40nødEÅ4GúE¤1U©TN§Óétï×ÔÔ‹ErYòù|ÓÓÓX½^/|ú0DQ+LD"qóæM¯×{âÄ 0ˆÝFà/ð˜j%“I nXO@9ÁûÀ/‚Á 0Tƒ¢Áò,<ÀÄw{RÈd2½^¿aÆ-[¶À!‘VÆ¥†BÔØØrC¢¯Z­V´-¸r<±…—ZÓáÄZ¢"f1Æ zS€èº¨F/¿lÒS£‚C¿E9Iew*”n 2F;2ÿRw@tOTH;cèkÀôÄIƒÈIù b6™LF£Ñd2éõzAòÔgŒ™L&‡Ã!pÉ% qÆ)éqe=d€¡Phaa! F"‘t:';)^éÁ'HùPhI¤ÝÒÒÒÞÞ’5O䤜ä¿É³\ÛÚÚŽ9röT*…¦ €Œ?ÎÁÈ'KXºÐÛ²”cw~~^­V d5ÁCE¥RA‡;??ŸËå¬V+ ðÑæ8? ³çb† OXPkqÀú´S¢'8M[—‘Gø êYþcü ¥Ãŵø/}˜L¡P@’‡{WªðVµTKµTKµTKµÜŸB'Õwób(¯ö0ïG£ØçÑac¡P8…ü›T*ÕÄÄÄää¤Ùl~â‰'NžŸŽÓÖÖVWWG!e¿mÛ6›Í4–gìf³YµZl'„”ñ‡tƒ˜P˜ä FX“L €LQ&ʉ…Ôï÷ûý~(a‡‡‡oܸ‘ÍfùtÃÌ)þ6Ë«ýõHcŽ…Âét666ºÝî¶¶¶ÆÆFR2ŽN…Æ?o}°}ûö®®. ò……ŸÏ‡a™Éd¢Ñ(T®dÑHO@kiw4P———±>ƒAa•LJ‰‹8~€I[º2O©/Ìd2 ’°Z”„ÃØЩA„üH“­vf¤ó°Š,pæqÂj#-Æ™]Ò×y¯†Š "Šb>Ÿ÷ù|ì^–*¼U-ÕR-ÕR-ÕR-÷§ˆ«Í˜è}~;Kd"&±r@ÐÀF¶bëO˜ B8Ä{&“é™gžyúé§Ng*•Êçó:4“°Êò†XˆŽIc¥RÉl6Æáááþþþ½{÷Ò¡¨L&ÃÙ5<¿*îN&“µ´´€#½¶³ØnªÂCiˆùQ±Š†²Z­=ôP…äD ¥Ri³Ùj¤Bû{:ÚÅ.¹b/$AÒé´ é²4¦"ì¡lb(äCLD ÐpÀ8€Êâââ­[·€€ °¤ø16 ²PÁ9 õõõ%‰k×®¥Ói£ÑX,)Š©©©H$Fÿå_þåƒ>0™LpxŽƒ‹ â•IÆIF£1‘HLNNF"‘‰‰ òCn5ˆÔÐéù|>‘Hø|¾X,öâ‹/º\.râ@Ò´7ÞxãâÅ‹°ûÁƒØ pnøÚ©S§c555 n· š ðŸ sssH”æñx¶mÛ …æçç¡Pƒr- ¦R©‰‰‰d2 D‰"d2YSSSCCüt0JÉóK¡P´¶¶šL&€†µµµ}qwȋŮ]» vº38I©Õê\.·nݺ7ß|³µµõ‰'ž°Z­V*Æ?Ïã[YYøèÂ… CCCO>ùä®]»HhƒyAÛx („Æa>Ÿ·Z­§OŸ~ê©§> rEÝ`ÕÑô'*ÍkÌ­V;99yôèÑ­[·"=_©TBSd³YT˜š ¥®ËårÀ¡b±XMMM¡Pðx<ÍÍÍÈnéõz:d6›É+è'€˜£Ñh"‘¨­­5X²ˆ•ï@ßššš!˜Ã+Kùyuž &“©±±±¾¾44ð†Àµq:---­­­‡ƒVâ¥2);$È>^¯·©©idd¤½½Ýd2AEZT~á…û­ åV¬fübN”U&edÃZ„Tn R‚7ì8›ÍNLLÀ.NÃÅ’H‚§[ «eÎù Ê©8® 'Vÿu-é|L^–ìØÊ\vv§èÉ|©xºñ«:[yñ¢BO4ÆIóÖª-Z/ ½õÖ[###›7oöx<‹¹Ñ)&“¨ŸdTt½I’ê2gˆeL&“©T Ï2X›*S+3n‡<*êϸcºkt¨F£±Ùluuu‡Ãår©Õj³Ùl·ÛñDF'R“µð[-rÄŠ'¬ËåÚ²e p7…B‘J¥ †%Y(ŠD"‰D‚œI»Íß_sB|wVG/èÀ $G>™ *†U‘FÁXè#ƒÁæc <$«IIøêÑ,$rXŒ#gñMä,:äo–GZï¶#’ –÷{WªðVµTKµTKµTKµÜ¡ˆw±ýl X]ñ>m’ø­¶žì)½¨ä0’Ífoß¾ýꫯÎÏÏ—ËedzgÏžuëÖi4šL&ƒ†ÂkÈG|в”LÅÍ›7?ýôÓÉdØ òú¡’:ÆR´_$;›ÍöÄOìÚµ v³LÊ»„Óo°ÉÑw ;^è éÍf;räÈáÇA–!ÎK8†0R•SàGÑ&> þˆoø.”#¨ÃÀÀ@ X\\ìéé°…@Cj(„šÔHòHœ, ]ø/Ü@2™L:ƒSSS===‰*E2™ŒF£hT>—Ë¡FFFàà³¼¼L £h4Šhjii RNG\3:î&üQ§ÓÁ‘ E"‘°Z­àÐájããã 4ˆM`0:::\.…Ñ"‘ÈÅ‹“ÉäæÍ›»ºº~4›ÍŽŽŽ^¸p-LÁ›\.i î*µµµ°\A<¾ tmè‹x<^,7lذÿ~&‰.×E£Q8C¿ùæ›/^ä‘_ô¸J¥jiiyê©§@z9Û,ÌhN‡{ñ PæFd2¯¼òJMMÍ–-[¡o¸Ev¶7^¹r¥»»»³³Ód2Á†œ<˜‰BÅ8ŠL&355ÕÐÐPWW ÛÚ)OQ9v£/ZZZL&“×ëÅÐÉj#bëðá·LJâIq{MMMsssSSøh|:3 ½¸*¼T*¡%‰jʦ†ÍfƒñH[˜|vTd @".så²Á¯är9™$ƒ%ñ:‰wÀÚ@•0­jjjà|Ϥ¤–èeÀÔ¢ä§F ¥‚%½ž(y`S“æóyÜ&ïņn‚ …h›Œ1,Ñ2)%ÀV"«b…$B+8°år¹¹¹K@çT*•L&)ƒA¸¶aÖ`E¢‘CDŠÕ×ÒN -žÅîDªÀ¶hå ‰PHË\ÁOÁ™?ª?þIG`ÿIþhJÐ𓥂ņµ:‹Aò™Ë円†¦§§¡johhðz½‹%—Ëa„¢Ô—<ÀD3’žVT´žRŽ”•••ññq&¥zœ›› …BÀÍéQ»VñÝDKTŒ"•Je0ÀN2›Í‹ÅápਠÄRÞ‰ŸR%BFMÝGý"[í0Å8ä‹\ É´ `™(ŠMMM˜J8zI§Ó0{M§ÓÙl6Nãu&“!%&¿ «%{ô_šŒÔÎx28[ñ™­‡¨$ÇXo±ìc19š< ¶ŠÂV#¶øn-[M׺Û¦…ç>!ï÷¨Tá­j©–j©–j©–j¹?¥B“XqHîW ¼@Ì“Éd`ݶ(eaƒYrooïw¿ûÝsçÎ!tG>{ðeÈ»[aHc°Åõ ûE$MÇiíµk×pʪT*C¡Ð¹sç²Ù,bBÈúB¡haßÐÐðÌ3Ïìß¿Ÿ·ƒAF³™™™H$P@¯××××›L&»ÝŽ@Y·nݾ}ûÒéôàà`¹\"ÎH±XL§ÓÑh4‹ äóù>ú( QB›'¦\.ÿ{lÐÉœ;]…B‹ÅR©Ôµkצ¦¦`ŸM:G&~€°IE†œÄ¸xtœŒfggÝn·ÍfC‚ŸÏ×ÕÕ!Ë'Ÿ*•jß¾}ÈPf6›!Á«8G–ËåœNçøøx0Ü´i쟟’À ÑRh²P踴´„P¨‚T‰B:–——ÁEÎè:îᇟŸŸçìÀÇV@Á£› Œ1¢(® À‚Ä"ƒªµ!“Â?·¢}0­(@â©‚DžbRØŒj€¿I¡Ñh„ääuè ˆñ|^&“ùýþ>ø ‘HìÚµk×®]¨6c "Sü:bo™LV(ü~?ˆ¢Èd ~™L²ËaŒ!Q#­x"gÛ?¬x<6¨œËÿÈ$îÀhtp| ÎÆï¦R)ðhІ„gQ“­@¯ÁlG&è/b^$ 8ÄcÓ„ú7E 8ARF£z¤ãý’P+A2O¤3 ²Ùlèbàæ LB³ LzU8g™L&j+W ƒWˆå—@1 *4êô@âŠsŒÃÅèØ€>ÏëéxÜD£Ñx<ÉDW¹¥¥Ìe%œšq‚DƘ×ëu::Í3khÒ}§Æ ?  0 Cí ×9œÊ ÿ,¦»ÃLAƒcÑ&Á;:/éëë»qãF)ß×DcÆ`–jH!þÁ`«¯Á³Æ*D+-5D’sétùõœZL¸i<ö„qH«¾N3mºnœÜÉVlii ·‰D@2‹!ˆ_©ˆ»u•Ç|QhÑ9¢:Áâ´R÷A¥Œ^¸ctž‡'qy蜮O£šÖ *Âj=cŨhs™”‹™F8“’`¶Þ»R…·ª¥Zª¥Zª¥Zªåã íW>æï“”OþÝ ÉdB¨VÅÒÒDgÀJ …Œ±±Ë|÷Ýw¯_¿Ží¸(Š>Ÿï;ßùÎÍ›7‹Åb(B†ý4ü¿¡Èƒ{Ä,--ù|¾b±øýïÿwÞÉçó±X¬P(¼ôÒKgΜ¸I&“e³Y¿ßŸÍfI%‚F£ijjjnn.•JSSSºÒéô­[·‘þGËFãöíÛ>¼nÝ:¤~7™Luuu»víÊf³MMM° O$ƒƒƒðcBõH$ ‰„R© ‡ÃÓÓÓjµ:›Í–¥„è€$cj5&E­Ä¤P«Õããã===­­­‡2´3`$—ÒÕ“ >ÐþÀŸq*¼†‰u¹\N¥R£££‹…Â×T*h íÃVK9˜ìY,–¶¶¶††äêBvªþþþÙÙY—Ë…4ê0„–Ii¼H‰IiË0h5Í–-[ôz=È;Ðt€Ž·´´Ä:ªCMM Âf óÀÍçñxàQM†âZ­¶¹¹¹££cqqŠQºšN§HGnVL oÐ’¤«­­µZ­Åb¨@„9â·–––àÄDU%â!Fx0ÁÈc }J|¨2Öç…èN 'NœxõÕWÃá0nœZWxJlA>t_Ë ¹/Hi%Pü¼veàù#Ä8àghEª6ÕqÆÉ‚ "!-¯®xÅbqppð½÷ÞŽÜÑÑDLJꇋƒ_™L&GFF^ýõT*uðàÁ'Ÿ|’äø&1§îv§ˆ<áBÝÒÒRAÒQJÝD” ¸È š°„©0Ê8й¢yy¢´® …jM™d©ïÐÐÐíÛ·kjjR©†%qŽx"qp*`^VÑÔw!D0ÁÈW©ThÂÖ+,//ƒd§T*ëêê°;Œ1ˆ‹ÉáÂ8+%è¦ çk…‰)HI$0t èáó?¨T*—ËO}>ó £¨APYJ3BBTZQñ'·Û-HÜ:t.&;©É€@o‹Àhþ .Š"\êhÀRd¼À_d’G^º…"V 6PW‘ˆÏw|îócO8nÈk·ÛÝn·Ùl6™L@Ì‘„,ø‰LÚX™äžY¶PSó¾oäHÅCB‚¤•£³ãXñçŽû|‹`ÖÖVü(Ž0Da‰cž™™˜yQvW:~M.BŠ©J8¬Âh„^D"Éd÷H2sd¥Ìf³V«•ŽÍ­n•offæ½÷Þ›˜˜à½3d2Y:æ‚$t---Û·o/‹f³yýúõ8‡P©TÂ+ 2\ó[ßú–Ýnÿâ¿ØØØX–Òÿá2 É¸¼K¼S’J¥ºuëV<ß±cÇÃ? “&ò !} ±è”›Rž±5†»À¿dRB@E†1FÞáØ‹ß¼yóÆ0•¯ètì†éXpÌòò²ÅbaŒaN6äŒ#£Ø"ý¶Ô ¨…$Sªááá›7oÆb1Ù#ÆX0„Ö„)€qÐR:&¹Ï”Ëe£ÑxìØ1Fsþüy€°L ]ø›ºŠ«ñ¼ …Ba0 ƒÏç„<‹ n ñREÈ0ÏZ\\lnn$nðVü~,Û&“©¥¥,ˆ˜øXQ¡Plݺuff&B(J (½‹Å\.—J¥xކŒó™–­q8§yñ.æAâ´ŠÄ„¢)C^KÍV c~«dewÉhÁ$–ÄžÐî!ö6›Í^¯×d2…Ãá’”Sòܹs===íÛ·o§c/“É€2&Þ]˜Ùf8–Ëå¹\ŽÜ y”§€¿P(#æQNA’…–Ëåp8Œ4¬‘'âpø|>ÊHk2™ÀFñù|###³³³8?p:‘HÈéÚÆg«É­5$¢XºB±Eõ$¦]/°zðŽ„0òTEÈœÉÖnÀX0‰z„rzRX€Œ ü:À|´5QRÄ“Ò §#HÓ©)‘éÞ©ÇE)á]©T¢l¹tA^Q‹ÇI¼¦ž&?0ûöïßá <Â+H¦r+++Á`0À Š5‡HDZXl|||ll ËÌÌŒÝnǹüìÞªhÕµð}kkkcccmmm]]òÓ_)C+ŒáÈŽId"Ê‹u˜@+º56 iŽÃ$²*ÿ PKUŒ˜” pí©^›©B­Ä&$9GD€³µµµÆÁ`Ðï÷—¥Œ+ø‰b±899ùÆohµZK`G_ƒ9$ñ|Q[A’É$ìãñø©S§®\¹"Š"(c”K#G©T¶´´|îsŸÛ´i¿ZVÜ&{­Å¶hRðHhŪÎ7¿¢â9š»—¥ oUKµTKµTKµTË]‹ÈQÖêÖOW°‹Òét.—‹N¤)‰86¸µµµÝÝÝ2™ìÒ¥Kccc@ˆvìØÑÜܬV«gggß{ï½H$räÈ‘cÇŽÁc Ù‰¢‚½ cL&“…Ãáï}ï{gΜéêêú¾ Ñhÿ<ýôÓÂÆX¥R%‰@ pâĉ={ö5 L£I\ƒ$è€Bø,—Ëàû@!“ɼ^o<×jµ0K&Ê¥é¡_àëTWW×ÔÔär¹Ð\-‰¢P {n9W÷"øÏ "5 ÀŒ(* r¹;—¤l÷40XþE\! ,±µEõŠ$‰ .`¯ÖXËmA0QEµZmµZ•J%ü‰CQÁ!EÂ42+)•J Ù¥Ói˜p#ýâÜÜE€±.@hÓÈÒKÅ¥¥¥d2‰FCý‘[pýúõN§³­­íÚµk###@@§Ó![¢Z­ÖétƒIM€†np‚v*Âj' þO|L½-ÞDÜ»°°ðÞ{ï]»v}O`È€IDAT- !è²Ûí;wî|üñÇ- "LRt¢2F£ñÀáp˜I ×€K"æ$é+­ Ä¡¨ TÔŸÑþ˜éOÑ—¸&k'[zñßb;dÂmaBGߍaëÖ­¸ÈæÍ›‘—•2 Ž$ÄnèY ³)q(ÂZQ‘/¢‚ã P(Òét$I§Óf³™ÿå, ¤‹êŠøh5¡˜/ÈòÉœ»5,@ÿ¥¥%¤³L&“ ###ÓÓÓ³³³ÈºL™Lgðëe’ÇÑhJVPØÄÕY.)Þ$?>¬ü¼.fe)Ú‡8GdE X,ý~:^\\ÄBwÕ ßï¿ví¯œÂŒ+ €ÉVVVëÀŽÎHpkÀ†b±%Ä ¯Ë#N~TPhùÖS*•€É€âá‚d¡HíOtãB¡€îÆó‚”ª¤X\;}^~ùe›Í†ÉˆE’-hÉEêCP·nß¾‡ žhŒ1 Èh4ºÖ¼|í”dŒe³Yàþp„’f”„¢Î±X ?A$b ê„„QÐëËqœu¡éhˆ¢ Þ¢œ°8 `”^tÅÏš8ËãšXi ‚Ç(K†N§Ã1þJ‡sè/,­Éd’ rÒÏ¢¶èeûÐ)TCâ$2ÆB¡P,£4®£Ñh, ˜ÈN§Ì8þ´Räh•—áqíbÅy‚[qþYP±>Çf ì^–*¼U-ÕR-ÕR-ÕR-w-t¢~·"®–œ|†E”œkcmmmF£1ÂeÛYìMFãÑ£GÛÛÛGGGEQt:Ï?ÿüáÇt:}æÌ™úúú}ûöY­VQÀY˜t¨‹cyÊ–¨P(L&ÓÞ½{ûúúz{{-‹J¥êéé©­­% !Q‡ÛÛÛs¹œÍf3 ÄÁf´—B¡0>>޸н£\.O¥R‰DbyyÎîZ­è m¦ÛƒÁÅÅE§ÓéõzµZ-‘•@µ@PDœ   @{Ø›Bx‚&›Í­À1>u(ÑCxÉãhô¢” ŽÿÞG¤¡T*S©a:ËËË>ŸoaaFþä)ü.ùXÁ¾-¸hËÖ$2Ct‡“m„LÀ5¢Ñèüü<¢2AR¹ÎÍ͑ڎ­>jFt€“bHQRd”J¥±±±ññq‡ÃAc†ˆJ¥rëÖ­ ~¿ÿ•W^Aì Ÿ&BÜ0*Øê£rK¾FÜ+^ˆ¸‹| ¨Âhy´vmm-x|ø¡¥¥¥×^{íÃ?D:üßïŸ5>ú(U äI³ƒôdX;‘pF«ÕªÕj@̸q~ÎR Æw ´¥˜/ºÄ­$ *Ü,ü#¢£Zá×¼¡`<ƒ¤ HVñ<ñ‡u\j>°)iM«àò  0—9"Š¢V«…78ÙȧB!|÷àÁƒHWwðàA¸&£a{q±F£¡š Pìg²ÕIN™Ä^Ak#`ÆD4€ÞÁÁ:†`;›ÍqŒ à2WÉ *œ9sæÂ… HYHéáøuïÐh"®víAá× ºê H£–et7ah@ðÚ˜„÷‘ àíÞ!QzèÁßzë­þþ~¥ñ-TV†¥Ré•W^¡Ì8™ ºÆ9á8ÔGü’ÈÃW„ÕÖrŒc¶{—k”Æ—0Y"ë‘H~‹J£@6fU‹JjbÌÑ0€ÏpläYQ4ãp¿˜‰  L¡ÌÅX´±ÞÒÃZ”2{Ð1 Íh|ô%ÆØµk×°”‰«½ºhù¥Å m‚=Yxsz­V Û;Œˆ‰ø  “.vVN 6t #ô8AKÄQ"Ò.ùdáy<Ì;œiF¨æEQÄþ63dTv¨ˆ¸¶7[!ŸÅb*•ª¶¶ækçá ™Lf|||ff£Ôápx<¹\’ɤB¡p¹\ÝÝÝëׯ÷xîšXñ?TSSCiÈðèÚ(‹’1þ‹èŠééé7nÌÎÎ*•J«ÕšÉd&''ñ?t`-{ˆà94ÈŸâC”`0øöÛo«ÕêÍ›7#”‚$³T*áü¶úûûcf³ØÅÒWz€Á( =‹ø–Òk–Ëe:x^LY2iÖëõGŽéèè„”Ïç¯\¹rùòåx<ÎëP@Wéïïß¿?x|ÔŒ` / ÄÏa —Ëå`0(ã2$RÏbðˆ!Æ`DˆÁ˜à¯ÏÇH¸¦(ùd1Æ2™ÌÜÜÜŽ;¨bˆlÁs!© È¹tSÿ–%l(1™dAÍËnË’Ý;i–¢ÅãqQc±)CñaÆXKKËïüÎï@«…qEôüü¼ÕjÅv…ÏŒ&Hâ/”X,†Ls¢DÐc½ˆæµ‚[ >~¿¿¶¶Y/U/.."õÁää¤Ýn‡m<€pÓ*)P2„‘‘K÷Æ8DŒ†ßï6AvEHG¨+q±Ú¼LLÌ Ïh-wÆrDÔQ¼ƒ­T*…ng‡j™K Š b*•ŠÒ”J¥P(´´´ÌÙ$§wCµ …×ëu¹\.—ËápàADZNQ0Šø$³wCjȇ Ð0Z¦,e¨T«Õ†&2ÚcÌD+¶LʇKCˆ’ У‡ÀAÈWÁ¶£xí ÂQŽþJSÐhPñxüòåËsss{÷îݵk—J¥ÂŸ€%“ÉÉÉÉÙÙYXÁàFÑoá|‡VÅrÍg2A0N¢7ñ”v‰LÁÅb±¦¦Æd2Y­V«Õj³ÙÞbâ/H?Z Ð_„ò|R¬±˜Ôxzb 4¦Dû"Ê aA€Ü ’tÃ|¸e^ìOHqYrv'=2ž_xÆ)Šd2Ç!ÂX–Ïçqƒ`®e2ƒÁH$b±˜Íf{øá‡;;;Õj5².‚ÐÐÐÐÜÜ †&Ú¤‚/\QÄÕ¬ÒÙ¡Uœ¢­½¿ *Ë`0Èîeypá­D"QíqËsÏ=wðàÁ¿þ뿾ß¹sÙ·oßw¾óÏ}îs÷»"w-Ï>ûìÑ£Gÿûÿï÷»"hùßÿûÿÝßý ‰Ë©S§žþù{}úQ-Õ‚rGZ¯&£àðÞýºL&kjjjmmE–ÀùùùÅÅEDŒ3‚Áàûï¿êëë>\__Šôb]]].—k|||aa¡¹¹z …®¬¬À¬Š˜˜üÆoü†ËåºuëV©TÚ¶mÛ‘#GGEÎ&¼†z…Nh‰rB?$pÆ4|‹áxœT68§Œ0£\.×××722ÇGGG‰D]]6Ù dñÆÀâj [ÑÁIí°å¥¡àu㡇 rœ…³luþu’ö n€~¨kp6^!ØDQ*•.—Ë`0ð?Ú* d®äÙm0ÃTëÅ_@T •_:†¿;®¦V«üùˆï”ššš††ž™E•R©ÔÓÓ“àööv‡Ã_!;Ü#Ø|¸kau!<ˆ'1Æ´Z­Åb¡ëˆ«óUájø«(ÙÄ µ•JåŽ;{ì1»ÝD#—ËŒŒD">!(gnn.“ÉØl6²¥oÁÙ]ó ð©T D0iˆu1¨d\ÊyêÄê0¸Éf³‘HÑ,~ˆÿ<¹˜‰¢øì9Qà¿>==ív»Q.´,Yt}’0/Ð+nݺ566622²~ýz`Ä|4,oÒQ¥h4šJ¥DQ …B333}c±˜Ïçkii‡”q“ €ÆÆÆd2Y]]]6›…}\ùy"O¹\l4??o0c€'‰D<ÁSE$>ƒÛ÷èè¨J¥:}ú´Óé$NM ˆÇã@ \.ÿà?Ðét€„0Ý ¬¤Å7¢Ñ(¡½<ØÇÏn´ÉÄÄ„V«E{â:ñx2^H8ižbÈѸnŽ5J¯×C üÚ`0P´u[”ÒÃéàU’r¹´Âk%±”ápb›››ƒÕÔæÍ›÷ïßo³Ù¨2øâôôt(2Ï<ó Vx’¯2NŒÉûèS+ˆÞ—s¹/Ëœ9ϲ$èP¶:BÅš@«l°ö Ræ ¨Á€ˆ¢…g‚†)1!ªoÑÏaP(ÔÚÚÚÖÖ†SšY+++étº¦¦¸|g ס)‰u‰–ëµ[ˆµß%h/¼" ø›4~p²äGI¢xaµ$–¯/1¦³3ª£'¬l6 d s¹(bUq›ø:ñ´¨kL.B9 ƒÝnÇçñ '`8/L¾†††’ÉdmmíöíÛáÉàõziÖëõú’”Z±BhÉ~ŒUñ×ßé «SUòØþŠùŽ »—å…·¾õ­oý»÷ïnÞ¼éõzïw]ªå§)8úùüÖ­[·¾þõ¯¿òÊ+Ÿü+xŽÞŸ¦ùdåçÙ€¿ˆ…X⿚åÁÀÕòK_hk~ï€-*ØÒÙl¶ 6 —™ßï¿qãÆŽ;4 Î/]ºtíÚµ•••C‡uvv‚ÆO‡êµµµmmmÃÃÃ===7nDD@“““gΜYXXèîî>tèÍf£ýh¹\†ñĉ*•Êjµòá“è!HÞ‡ý® ™ïȸdÞdWem£­[·®®® vÆð:!{ ¹\M ­­­&“‰÷œšžž>sæLgggcc#NŒqwŒ“¡¶Ä*KÖˈÀM«©©!káîàTøÃÛŠ@…vù€?@¸ š ²jiiéêêŠD"8Ž®¸2œõºÐþ7 ˜M `P(óóó¯¼òʵk×è(Àòò2¢…ÎÎ΋/Vx¦PlÚ´ lbZ‰:Ø7oÞ\ZZêêê:|øp{{»V«E.EÜ ØÇb±-CYí(ô%CP<–““Ÿµ}¨e4ÍÁƒ?ÿùÏ»\.4‹L& ‡Ã>Ÿ'àð¢T ×t:H$$“I­VK òG1êÄõë׳Ùl<Ÿ˜˜@R0çEáጲäñÜßߟH$ÆÆÆÂår9t=Zx‘/(ýŸ^¯O§Óýýýñx¼§§' "Z8òÀÌ…BSjOÂq@¼Êf³ßþö·Ýn·N§3™L°æQ©Tf³¨ IäP€>‰DbttÛd2yóæMhl^}õÕææf¢ï‘E7@ÛéééÛ·oƒ7 Î ì« @DÁØóûý@€1ö /455 ŒF£Ñh©îàŒI$ ¼}û6RÎ1ÆàHÉaúÆC¦WÌqAÒ¾á§.^¼ˆ!½6šEÊBN‹Å ÃöíÛׯ_Oðc \-QJ‚I41qôÉ8)!ݘV”Ù>Ð xŒ rêtz4T`14•¨ Í ÃápKKKmm-V~&=år¹©©éøñã°'®0Ð2gìU±1N ´°5aT+¶P@¡¤³ ú¼ŒËº–ÜÊVƒ\Ô¶PebºÑºÁoÑV”€?ÿX;…éIG¨8Y´L² -lMy&4¢+ e•8ÔlµI“°š)ÌׇI„;ʃ'‚ 3J0ÊVíàc|A5ˆ–UÔ‹’°—ÞÄ”çiY|A#èYI%ÐMØy¢”?—ÿQ¹\n0°˜jÉ÷>è«t²b·Ûa'JWÀ<’­IËÃO¹#û e-¼E])—ËáDÇ?Û­("¼õ½ï}ï«_ý*cì÷~ï÷Þyçû]jyÐKÿ~ô£Û·o#DµTKµTKµÜëB  Ÿîní^öŽEXí\¾aû݋ÅR©ÔÕ«Wy䤌F£W¯^]ZZ²Ûí{öì©­­EðŒí¬R©4 õõõŒ±k×®=öØcf³è0—Û·oÿà?˜šš²Ûí™LæñLJ²ž6÷°eEÄ%JÉü‰:Ôd‚dT¡Îc\® r^ÆíÛ·766’yÐÑá²z½þøñã‡#nß¾ÝívU.—ÇÆÆÆÆÆ:;;•J¥ÙlîèèX·n‚aü ±´cxÒZ Á<öÁtwü/Ïb °! cœ0ÆÈ•_Aè[SSãñxvíÚ544„R¼ý–L&óz½ 2™  D4@3±ïO¥RànIÍòòr,;{öìÕ«Wi/ ÿ¦ÓihOo´µµµµµE£Ñ2g‘N¿n0ȱA; ³³³ñx¡4M@ §§öx<.— Î÷ Øèt:ˆ¿d’”IÂO@!4fФR) J°TC8 –漫kjj6nÜèp8€F£éìì_SSCð_™KŽI# 8ùê‘L:wÁíJ&9’_ä4Ô‚äµGVh<~Äã‰Ä™¢³%¥iIÇ´â›.HxnüG¤i~ƒ$®Î†Á8›EQÊŸK 0¿Ï¡×2I_IÏ¿#m,‰EÉ sÝ 28šf=]ŸGT׼ђN†ž‚Ä_&ÄçòÛB+¶@XÄôzý§Ü3~ºòÀÁ[~¿ÿÿðñúÝwß½xñâþýûïw¥ªå œ:uª oUKµTKµüÒ” IÅõë×·¶¶NOOçr9ŸÏ·¸¸ˆý·Ï盜œ\YYÙ½{wgg§Éd¢tà„n8£Ñ8;;;33ÓÞÞŽ=¨‹‹‹áp8›ÍÎÍÍ}ï{ß«¯¯ßµkÌYp:…FÅhãŽ7+‚"ÚË–¥Qø <ݧ§§×­[§ÑhH‰¦µµuÏž=àCñ½¯ÓéÖ¯_Ô“Éd’8>‘H$ ‹Å¡¡!ÆXKK (u¢(jµÚH$ÒÛÛûþûï#VçI¾%)×Ù³gs¹ðÁb±X__ëÖ-\ŸÇžÆÆÆ^xáÀD†B ;<<‹Åx4k<ãÃ`0 òsss555½½½J¥œ0¤ø{  È? ?üðÃD"ñÃþÐápø|>„—pÈZYY …B‹‹‹ðN§ÓjµêÚÅÅÅóçÏ;…B‘Éd¦§§}>D+ÔãS fÿétŒ¤¥¥¥—º¾££ÃëõF‰ÄøøøÔÔ”V«Ý¼y³ÕjD"àPP†F àÇ`0Øl6ÆØØØØo¼áñxzè!à#ÆÐ||KA~&“ÁÇ>üðÞžžººº'žxÂl6›L&˜û b¤C‘˜L&Ëd2ápØï÷¿óÎ; O<ñÄÁƒ©Í)rø Ñ%BD›ÈÓj6›_yå•B¡ÐÔÔtäÈ‘·ß~Ûï÷Ûl¶§Ÿ~º©©I&¹8²1 ¢(BPüÒK/íÝ»÷©§žB4.pÙÙÐh¢(bÎÍÍÕ××?úè£p}_oyy™h4 £@ {‡cppÐãñx½^½^O i©Tr8ƒÁb±ÀК`/êV™”^Fe—CVÍööö¦¦&·Ûír¹`âV(Z[[ÕjµÙl83)A²â1šD¼å Al;~XòÎ_8»Â#ø‹ßñ!‚ ´<Öv–"dG4øg¿Šò¼$~¦ˆ\jH@~|+Ñe+|Í*êOùmÉ~‹4“'óˆ>O„S~¼±;¡o¢äØÅã¶LÂ’ðu™L¦Ñhôz½^¯Ç8§«°:?)!G/Ó3ˆï,xÒ‹Š\teþ¾0ß)O1u%²Â$Ôd1e*Px‘£àñýÂ8þ[ƒš1锂ú¨‚LÃUåUÞ: ¢È4€àѵð“#žGÓŠzt~ N.µ9ÿ™µ(ªL² ¤!&/)îù©Zþ²Õ¾oår´ß_¹Ì‰÷w‡-ŽZ­þüç?ÿ×ýן Þú·ÿöß ‚ð·û·÷û>ªåç]¾õ­oýÙŸýÙý®EµTKµT˯D¡„Ð{Á/üQá§ú9l•êêê¶mÛvíÚ5dÇQ¥RÍÌÌ„B!A:::\.— ‰¿Ì'Ã]]]---W®\™™™ÉçóÈㆠ¢ÑhÛ¢T*ŒŒ¼÷Þ{.—«¥¥…t•AèÂ'´‚@L"Qr€¦H —2ËËË@ ŸÏ»\®={ö<þøã­­­ØÐk4´eÉ ›qûi£Ñð‹Â†P(‡±OŦšœœŒÅb—¢ós|•EH.—G£Ñt:pÀ‰Œq1Ñ=Ъ€H¥ ù|žÖeÉ1W¡PÌÍÍ…B¡+W®( ½^_,µZ­Óé„ nÖh4& >0( ###ø]ÈÇ€@&–Íf{zzû #€…Ãarþ9kD8ÅbñÆ¢(º\.³Ù à¡C‡`ZD#™€H!Ç$›sAôz}mm­Íf+‹ápX“ °àµœÍf£Ñ(Å ~¿¿§§'—ËE"¤Äh—N§ƒgN§K¥RH޹²²Ò××g±XÒé4Àƒm¬ ?§V«G[[äcv»Ýf³i4šl6k4ÕjõÄÄÏgaO©T>üðÃ?þ¸Çã?{ö,7~Ò ‚°aÆÇ;NÔ$™Lž?> z½ÞgžyÆårÅb1²»"Rã¢ABx5͹sçš››ai¸,xÔò¨!ã̲Ùìàà`SSÓÁƒa“‡Uˆ.¯E4ï€Ìáp8ÎÛ·oG£Ñ;v€o&"ñQ.OI@ÖK¤¤(‹‡cýúõ.\X\\Ôh4HòÀG¹À‹Åb]]N§ƒ^Õd2á^ðCÀõ€£) °ÛЈÉšGÊ'‚Z­F~Ux¥‘©“àRíU„ñŒƒuœÂð«««3›Íõõõmmmàr¥¨X,"#OÔZ;T*¢\aµŠ„>­lmT̽2Xûµßå«„>ÀÁ¤²<ÝFXSè}þG+°~~6ÍJ.å=d«+koï&AóÏJ4;Ù“UÈú*‘å9¯I$…#[MÅ­èŠÏ c=ž„øT‘GŒbœ±–Ó´vYôaž_.-¸„4‹éI·vTT7üˆåë¿ãûZX ƒ'2¼æÁ&TÃ<]‘og~øaêñŸ8®Èe°!vEr<¯©´¼“ÿê­§w,e)“CY2æÖ(š N¥›%ª2¶FÁ`pzzšÝËò`Á[årùÛßþ6cÌívŸ={Öãñ8ÎX,úî')”óø*¢(.,,„Ãaðïwu~9 \!‘¹Zª¥ZªåŽ¥ºV…ß^¯e…Ü­”W{¾~ÂBô übÛ¶mµµµ¡Pª%Ð &&&R©ÜŽ(ÕfÚk:< |>ì´™t,ßÝÝ}âĉ7ß|svvÒ³L&CYh#HU‰1Ÿ¹¡ˆ Þ¢ÓQÆØòò²Ïç‹Åbuuu_ýêW5ÏçK¥RgݺuV«Õ`0€¥R( +Ëd2‰D"™LhEU¢¤³‹F£×¯_&EB|•J¥ÆÆÆ(» eÉd¡D jµzlll||<•J +•Êd2 ± X0¬iÊçó$©@ƒ¤& MOOóIâ±³/‹óóó½½½f³¹¦¦Æb±”J%­VÇ‘v­µµÕëõR61 –f³ýK¨þE‡:N§Ói±Xt:¾b6›5ÍÀÀÀ7ð-ê2¢Š¨Tª;v;vÌjµR¦v8[å# Êç…žE~7 À˜fgg‡‡‡ÇÆÆ|>_"‘ ¼~Ž1¦T*·mÛvòäIœ‘H„®ñb:£Ñ¨ÑhÒéôÌÌÌøCA>÷¹Ï!•»B*„3&“É×_}ffæé§ŸÞ¹s'å>ãõ§©TªµµueeåÕW_%µ†V«íèè@‚QÀF‘H¤¼&‰$§Óép8€0jµZ¯×«V«­V+Ò–"¡aFAçr9¥Ri³ÙÀÄ}©Õjð(dª/¡ß¹8N@¡ò1!Ñâðú>êøßDñ3¯¨Åy;b»€›h 7˃• V¾Ú¤«‚ÈY)WßY ‰¢‹Å …V°Šv L.°±x> _ØšµX }·V«-|:`©‚äšD‘¹Ùl湟š\?q1çšš¢âü âi"¬¦ØÜí‡*ÐÛŠ?a(ªT*X¤1É´«¼:¿aEs}òûâ¯ÀÖ YJ²5\àˆĺµ·IË ß¡¢D˜ÂŒÀEø*UxüñŒ$Qr©#á'!#D@ƒð‚2g/J2·Š#® hrínᎭÄW[økø—NÔèú¤õþ˜­ÈOœåŽ!ü¨BHu懟L²Ùƒ’vÆ·/\Å;„oâ ƒ?$#œˆ¼ó %çÓÔòÙüóÄ%¯QkÇóÚÿŠ«yŽ<ÖVñ1žœ(J ŽgffΞ=+×èØ=+¼µ¸¸¸¸¸¨R©^ýudD²X,ï¾ûî—¾ô¥OxÂæœòâ‹/~ýë_Ÿ˜˜`Œ9ηÞzkûöí÷»R¿„EÅÇÞïŠTKµTËZª«1ÊÇD?EY»§ÿ˜‹*, …èúØR·µµ­_¿~rr2OMMK¥R…B‚,؃*BV»@ ‹•J¥Ë—/wvvîÛ·ÏjµÊd2œEoݺ5'‰p8<33óÁ„ÃaPºx ÅÀ‰D_/•J£££Á`ðÖ­[6›ì¥ Y^^îïïÅb‡£¦¦ÙÓ)þ_ZZòù|r¹<™L»råÊðððââ¢ÛíE1“ÉA,“²2œ‚²ŒI~T¥R¥R©³gÏ^ºt ‡á”t)‘Här9PÕÀsjyyÖ2)%<ê¦Ñh€¿€T‘„*À¿L&P°L&sùòåÉÉIÊžÆ8gýîîîÇÜn·ƒ@‡Ï´Ý'ì_AœÏ¤Ø˜S/½ôÒÐÐÐoÿöowuuÁÊ}Ä?~øáÔÔØ|ã­T*™L¦-[¶´¶¶êõz¹\D§Ó ô !b|PnMà,æ ¼^ïÎ;“ÉäÔÔTOOO__ßÒÒþJ¡—N§ëêêÚ°aÃZ/!>B#O¢úúúþþ~­VûÐCANE˜QòùüÈÈH4u8¸Q‘—€¼ÉÀkÛ·o²1ð³B¡Ø¸qãW¾ò•®®.A²ÙìÄÄD.—»Ûr‡qMô8GÞ ˆœž+D4LŠIv„hæqŒc¯mŠIìÊg0t:]mm-áDؤñÄ·~#€H®y_ñiLË’m9Æf+æ%‚¤ú`Š!Q#“ü‰*˜#X0 är¹^¯‡Ù“3 ¹ÄœËåR©ÔÄÄD"‘pFŸÄÀÆä%ƒjÌ”\.ë@Ô–¼xhPÑñq)?#Ð x³­­I‰&yZLߨ÷Ë’·àÚeüŽÈNÅ@â6^ŦâñÁ_e*~¢âók±0ȵмÿúŸe²»q[(ó ?¶ÅàŸh·@@:\9ÊÂ$E!“Ð[Â8è"<>Eà2¯ådïIädŒ|­¨YÞâç#ÞÁÈ“”n (­°†ºUÑ¡M±ÞÂ-`<ã×1‰pûX1HV‰µˆGÒùëßFü‰Øße4$øNVS·cx†–¥ *X‡±@ä$HÌA|’Dît–C—ÅýòÌMQb´‘†šfb«ƒÍ5“Αƒ6ŽÑh”1ær¹‘ÞÚÉßþÚ±JaH&°Up<©ËpNÏçƒÁ »±™Ý³ò`Á[sssŒ±ßùßÙ¹s'ÞQ©T}ôѧ‚·î÷MüÿËòòòŸüÉŸ|ó›ß¤w‚Áà_ýÕ_½ôÒK÷»j¿l“jhhèêÕ«»wï¾ßÕùùQ—––}>ŸÏçóûýf‹ÅH$‚l¾ø¤Ùl†¥¬´ZmsssSSScc#ç÷ûVª¥Zîa©®Æ÷®ÜñÀónÀyd|Â+3IA?d±XºººÎŸ?¿´´tþüy@´·ûàƒ&''M&S.——'‘HÀ†) ÍÌ̋ř™™¿ÿû¿ùå—F#‚Ép8ŒôdÅæææþéŸþ d"@Fû~Ú­f³Ù|>¼xÓk¯½væÌ„»Ä6‚Ût*•öñÑGy<œ"HH&“¥RÉl6Çb±¥¥¥x<>33W4­Ð8 SRcc#¾âñ¸L&s»ÝƒA‹ÅÒÖÖÖÒÒb4±Áå JÈ Ø[~¿ÿÖ­[›7oöx’ñáö¡vä ƒˆ`F£ËåŠF£€}>clëÖ­Çohh¨©©×>w|}°+ Ú B)p$”+K)íE‰0%p©ƒb^YYÁ Qu:rPü’u¡T*ƒÁL&C£ä}ø d %¡?ä©Wæl׉‚„×¹\.“É`"àú8@€é.F£V«u»Ýxœ [kôFLJÓ ¬}AE‚Õð'ª<ýxýš1“ÉÐáyÖ©TJEpKAH&“Àßñ¯(ŠàAc¸’ Ú?‘H`i-K–‘¸|-œ9¡© @/•JÓÓÓÁ`P¡Pøýþ³g϶¶¶&“I¸p ¬Þ©T +—Ë=zôèQ’6¯}¾ðÜ=z‹RBXô%ßdÒÑšÈé[c‰’é`ÖÔÔ¸Ýî;w.ß|7øi˃oa&üÑýýwqqqvvö“_á‚·þâ/þ‚¦P*8ÌÕò™Fãp8¦¦¦Nž<ßà ƒ @2™Dr"zŒw,‚Œ±O.ªýäeaaáܹsýýý—.]CMè¯dEÕBü)d³YÆžI8pÀŸär¹Åbñx<Û·oß»wï¶mÛ¶lÙ"û©²¡ýrèhVVVÚÛÛ46hµüt¥º£|ZæÔÇ”Ÿnj|ªoÝ‘ê¥T*[[[­Vk0œœœ(CÐÀìì¬ßïÇ‘¨LÉPîP(´¼¼ Ë-’WVV¦§§!ѲZ­n·[«Õ ‚€øŸRGa× Nª.ÒÜÜÜÀÀ@{{{ww7¶ïˆX`}m4l‰¢ØÝÝÝÜÜ #mpI …‚R©4™LŒ±b±˜Ëå ={òÉ'ù<뢤“Â"_,?úè#ŸÏרØxòäIØ¥ÃÆ[¯×ck^–,~cÐ*":Å)+¶¿‹¥X,vtt¸Ýn•J…]>*/“|—©oQ\>Q__ßÌÌ ¤Wü’%J¹\žŸŸF£ …Âårá9E‘ Å¥tL-— á`¯ˆœùãÀÐæææGy$ÌÏÏÓ¾aŒÕjݹs§×ëåå]<£ª\.G"‘L&ãñxÈ4_¡HLÆå”DP,ÛÛÛ=O*•Z\\ìïï¿qãF2™lkk«««ÃÓY¶:Éߪô[™L&•J544`ø­uµC,àïð^WNÐ5ðƒEÑãñ<÷ÜsmmmÁ`°P(X­Ö††4)™µUÌPòÒjµíííz½¾,%c…‰Fñ*ÍPÔ´´L"+1ÆHJSA²ày=Ô80"ìÄk´ ã¸<b\„l›aUF¤$½ÙDžÅVçú$À@¦EFƒ¼ ˆgdˆR–@&a €{âñx*•Bàǧ§§L)àñAÒ8ów¤à è ¿*ÞÌårËå²Édêîîæ ï“Hpa‚4¿hòR×È$jeh¨°þ¡§©”Éd°RñL#÷ÃHXm·O3}DÕܼ’f¿t”¤D‡„±‚PƒþZXXˆÅb@ •JQ·Êåò|>±Jèã2߉«…WQ¨–AŸÏ—Ëåêëëkjjp–@p9}À®ƒEä;T˜ÖÀDšcŒAÌ‹ãjü"ػĥœÍ@ŠKd"Â,)ïÀ¼Ï€ž c¨@pÅbX´'''1Ì(÷"ÚÊ_ô4ŒH!|9ŸÏçr9QrèG_SCñ'dÀüó®X,¢ApT@ŸfMRJ¾Ëè‚Ix(¿¬ÑÓ™bqŒ‘iDQ'ʹ\–ŒãçÒ(p\9ÆÑ0\ù&8nŒ ¨é Þ·òùŸ÷ù|KKK“““ iCõ¬V«Ýnw¹\h:á.bÌ;îÜh ò–ß%k6Op+K‰x¶\.××ן8qâŸþïÿû‰¿ûS— ÞÒëõ5556lÀ§§§———A¥û„å‚·^xá…µoþÖoýÖý®×/g3›Í‘HäŸÿùŸ¿úÕ¯þŒW[^^ïïï¿uë–ßïƒPÁ|òøg¶V«µ¶¶¶³³sóæÍ‹‹‹Ÿj»eËDŒ1•J …þïÿý¿çÎs8¿ýÛ¿½sçNFƒù Þ%ç)€¸ÂíÛ·üãïß¿ÿСC2.]i r¹>¿uëV£Ñˆ+€}@Ô}\?“É466b;äv»É&†Sø/ˆWƒA&“mܸq÷îÝ k!À DQÔõ¢¤_#6Åá2.»mdùÓoÚZÄ;Ö3ÆÀíÛ·a*ǬM¡P„B¡7ß|³¿¿_¯×?óÌ3;v쨀xxÈ÷K׌1ð¿)áÅ¢ÄÒjµ( o¿ýöÒÒÔQîÝ»÷À´³§_¡ @4AÐU…S’À>|D"hpN§ÕjÍfsKKKww÷‘#G²Ù¬ÍfCÊHú9Øü¥(JGÔŠý0±cøAÿ%~/s"Éf³¥R©®®®®®N¯×#É L²Ï‡üÔc’¨Öív·µµa“ô c,oˆv·……BP ‚† ãRàUPo˜D‡™Çãõõõ Ö!…byuá ;ÿ4H(}qap… ‹4¢h‰R„ßT Wâñøääd2™$÷hÄðÿ xRZè>šD‚ä·ÔŒ:šˆZ%) ?1Õj5›2.G*µ¨aŒ;/Á¯`–QרÕj Q„Í:OHú¯ƒÁ ßïÇÆ„ z¸ƒ,†0SEPAM&S[[›R©ïƒ™1ølÈêKÃR\­®(|ÌË¿yÇXXÆ%†¦)@›<@¬†ùé½+¼…þûýïŸ1ÖÒÒòɯ€GÂý¾ÿ_ ƒü•Jå?þã?>|ø~×ë—³Èåò©©)·ÛýÇüÇ?¼•N§ß|óÍï~÷»ƒƒƒsss§ Cmm­Óé|øá‡‘&Y¸ ? ©Ù‘)—J%ŸÏ7111???<<|ùòeŒÌ>øàßøFKKËc=öä“OîÛ·ïãÕ:ÓÓÓüÇüöÛo755=õÔS<òÈþýû?Œu·b·Ûív{WWWÅû+++===o¼ñÆ×¿þõ¯|å+_ùÊWþëý¯n·ûžwá}-+++_úÒ—^}õU§Óùíoû¹çžá¹çž[\\lll¼ßµ«–Ÿµ„B!þ¿¿²«ñLJ ?Kù̯yÇývV«èO±XœœœÌf³ÍÍÍ6› y×­[wüøq˜—cuM¥RðWÂùs2™Ôét8rÀ *öÁÉdTÝÝÝMMMÐ2Î#œà-Š]Q¥b±èr¹\.W]]Éd@1q þ?öÞ;<ªóLÏHS4MõÞ@cš)¦ÿâ;qK²»qŠ7Y'»ŸÇÎæËÆ‰“8‰÷J±Óì¬klã¸Æ-6Á`0˜"@€ Þ»4]£Ñœß÷užï™÷œMœÕó×0:sÎÛÏûÜïýÜOZZˆ`¤×‹¶$‚@r!„Ãá¦&â%]qä.´Ø»Ý^TTv `/ôw’Iüž`,N}"ÿÄMˆJ 2 i•Iÿ{"‰¢ì ƒï¡(J(:|øpcc£¢(K—.]°`5¬äûqÔƒ,995åºH4ª “‘‘ñ‰O|bÖ¬YÝÝݱX Œ¶ÂÂÂŒŒ ~CîT«ª†††ó"!>DP"7&¦I;E×Àý°Z­.—ËétÓ¥ñîpœcó K Ôš‘œ©å‰©¤°œzø?‡lŠTR´œƒ«W¯FN@T¨>ü´ÞÞ^®3Rà›)^Û  ÏÁ o©ËOhž= 58A£££#£‡f hE¬%ŒØh4Š(§`0ØÞÞŽ$†¨µ`Xg^P—ÄA’Üa÷îÝ€·q\PPÌS†%ÐÕ ]]]D|àе¾.ƒ®¡Þàžžz{{‡‡‡GFF:är¹D<(Éñk"â¹\5Leب2Ð šø¸°3j"US¹FÖ j+b¡k°¡´€Ûø¼CÿH$BÙ!‰x‹ŸP`¾ÄÅø•Ââš'RÇ! RVYYYIII #9<xf)¼´¨¨ˆ¢Yù: ªj(²Z­‡ƒGQÄöbÀfDJv¨,¸Z ÖBÿ µˆiÁT/ü9Fb,;ÐNJð Q86­²a‚“(WÕ(xtòÁO)hv)´$*‰â_z©hIQ ¡£YLì6þ6çk=TajqÄÌ¥ÁOT&•°’àUE#PÊÑx¯qþ2UýBÕ'VA`ðaœõ3iIišhN‹<]ÒÑ2ôG†ŽMhšÄ{ÍÎÎ.++BN‚¢(x÷A ì-ʨC«zjjj^^ˆlò4M,†–(Æ…·TM“^a´Jé]Æÿ•Îй}}}uuuBÔkòlRà­{î¹çcûØ8‘Yã¿>ýôÓO?ýôà»ßýîdÔëmttô _øÂ¾ð… ]sµÓtcª««zè¡ó_*½¤…¡}úÓŸ>å5ª†††êêê¶oß>QE ƒ‡>|øðƒ>8Îe‡úÙÏ~Fÿmllüïÿþïÿþïÿž¼64´ßÿþ÷¿ÿýïÏóCOÓÎÚ£gaíéé¹ùæ›o¾ùfü ûÅi“RœÒÖ¯_¡ë=vv«ñücúü«_ýê?øÁ…®Ç›>ÐiBl2°-¡¹Äˆ  cF8¥%%%‡G”¡PhÆŒeeeß¿ÿ²eËpT—ÞjµÂéÀ„@x¡`.Äb±ÞÞÞ;w655¹ÝîK/½ªó´ÝÇsõ` ?}ÅI5Â:è2:ì¬* "­ˆ‹DA„à‡ï Ëp b<&BUUÇ“™™ <‚sT-@’zŸ @I È£¤¤¤ììlNQè" 9ñ8)bjÕ _Â9,m=û~‡ÃG(99:DYYY88Q4*÷jbZ0#ž…›PLÜ ru¨Aà¹E£ÑÔÔÔªªªY³fQˆà`OÔp-àŒÕÕÕÁ7,:š"Æ„Ï XÁ£A,‚£.´sVE ã+ø3€ ÈùäՇتªHk@…ð[…Ãa¯×;00.)Ê󧳂ҠžN Å.)Zà9¢999ëׯ_³fËå"™#YÈÆPTT4¦å=Pµ#Š^$êêÕÑÑèË`0H+†.Ž÷Aë@8RZZFN$ééééîîv¹\wBÏbqâ„Ýn§±j2™ 9ß××q@yêêêÚÚÚ’’’>üðCUUsssGòÒXLÂá0Š„˜2„¤õù|ðÛ)ä–œpRDÂØC ðabs™ E#4Q3&1ÌDÿû,‹Á9G:HÌn§Ó‰ÿ !ð'šD`âPX¥ÂÂúøå÷û 3"=88è÷û»Q'„@ÁÀš$æ‘F•x1/Z„Ñ•hd@QnI뤉%ÑÃÒ˜RÄ#ÑĸT4¾-f"Ÿ­¦cà¡išã>RÄ7)€Ž` Ü„–GÀF´€ðd&‚á¿c,Q¯Ð S¼H‡“èåómƒªEðI(šÌ%¡uBÓ×§nÅbNïPª ¸u’¤µš0\z­Á™CTœ„%„Àh‘ÞìB,'™ãx1½+‰,F› ЦŸÓ Œ2£ÑœN'°zM` à}J0½ú±rpPÚÐ õ;µ¯8m¤nRYæk: $íßxŸ y=66ÖÛÛ‹¼É³‰‡·vìØQ]]}ÿý÷:t(Ñ5ã¬ÊËË«««SSSxàoûÛBˆºº:œŽýüç?ðÁçÍ›×ÒÒR__¿uëÖË.»ì,j1! ¶Eéïïÿõ¯ýØc566žË­.knn¾ä’KN'¼náÂ…«W¯þÅ/~qJõøãßyç”÷»|‰¬!™Õj}ê©§6lØpï½÷þîw¿+//ÿ÷ÿ÷Ï|æ3¤¥2IvË-·¬X±âË_þ²" ½ÿþûÏ?ÿü³Ï>ëõz7mÚô›ßü†èšóçÏß°aÃ>=…óÐŒã˜ßïw:çx“‰MZ÷óŸÿü¿øEkkëYü6##cß¾}¥¥¥üËË.»ì¦›núú׿.„‡ÃßûÞ÷~úÓŸ~ýë_ÿùÏ>ÑÍ9¶yóæ›o¾™§';?¶dÉ’ýèGW\q…þOØ¿“‘ß«qcccIIÉY¼Vï½÷Þh4úÀ,Z´hß¾}Bˆ;ï¼s¢[÷|XÒG*‰á"Þp8EEE.— 1ッƒëÖ­;qâD{{û{ï½WPPàp8 à©‚­ „€ ¸¢(@ «« Û2`¼óÎ;o¼ñFOOφ ªªªRSS)üƃ:¹Ï¬² € ’´´A¤DChRªZj!娚P7¾ìéé!E…:q¿Ž·A¼Â—É#™`ø&%ºÂ†>-- yßU¦+VE{Y“&€%˜<’!’꼟‹Åìv{~~>鬯[·®¬¬lÖ¬YsæÌáRÖüWü¬›„‡áûï°¡§ør“TUEl)yA”¬J0m&8„ƒƒƒV«õðáÃÛ¶mûØÇ>†œ€*°Šx)hê`|äÊRbℬ"* †4Ñ[„îGJ:f³yhh¨¿¿Ÿø/Š¢P¸Z@¸Š Å€ïC8Ú,EȃÚívŠÍ!O¬„`0H׬Y³ìv;P’’’%K–,\¸PѨ1D¬HJJêíí …BÃÃÃ{öìñù|===[DˆƃÓé¤ÉÚÚÚ`0xüøñ_|±¼¼1b˜ Á` åƒIÞZGGlj'(¦ªq'ÃápRR(9‡joo§yÇ=||¹}ûöƒâ&ÞYYY€ð\âjÅ4µ,L^ò„Ñ#;vìØµk@ Ý`Ì8ÎH$ÒÛÛK4@ó„ XE´¬Z^¯·»» eÀááa³ÙÜßßï÷ûÄá¯%%%ÀúÑ¿¸¦ "@äú†Â44þÀæp¹\Ä«"!mi˜­htý xôáº`ü`€Ê€×Ð ‰yXŸè~"$‰1RkB‹Ñú@˜`Sǧužc‚+k£Ã ¡åŽ^@&–7ð ¾²Mq»0"J …]‰y¦’óxO,ï@ÞѶ¥ô‰/)^u^0šž$ 80ÁQ$Ü0M*=P£# û#øŒJ%¡R©#ûȱ9þÆáoº!çšqä‘W‹ïPº Á‚ƒSYÔI6ÁðV øú׿þâ‹/*g{–»|ùò}ûöü×ý—bãÆã`[ÿöoÿ¦( ÇPÌfsqqñ›o¾¹eË–+®¸âá‡>SxkblÝ{ï½S¹º|>_MMͲeËLçE­üꫯþŸÿùŸÓ¹²µµuóæÍ<ðÀ׿þõóS6n)))6lذaÃC=ôàƒ>üðÃ---úhä Žm !ÎÛºø“Ö=ñÄ'Nœ¶µuëÖ/}éKuuu ,¸8y ›M`ÿNêPIOOOOO¿Ð­uáí¬ßÎçÙ°£H@þ'‘ ½^oFFÆÆûûûŸyæ™gŸ}vhhhݺuK–,ñx<`ŽŒù|>ø¨Á`ðµ×^ëï­­'Ožìèè‡ÃN§sÅŠEEEÈ’&íÞ¸!Øö_B„ ÌîêPùA9Á{bÁޏù–•ƒ@e±WœÐ$„|¹ âÙdô2©$ª­( Dˆ²àè˜Ü!ÄÐÐ8`+)P´ÜvÇ jî¤ CVRRR^^Žcg³Ù¼hÑ"[ æPaFŒ%ŠTQ„æç z+‰ œàªÃ€£lòF"‘HCCCrrrii)mÊÑ2„Å ÝŽ;öÔSOÅb1ÀÃBŒ¸â„¡á‡±Ä¡CT.‰('È`…¸!…@úûû·mÛÖÒÒ²gÏž”””œœ`¦áp¡µŠ¢€¼ƒü'hoo'y 0“¥¦¦ºÝîšššÖÖV›ÍVWW—ššJÀ¥rjmmmiiIOO_´h‘ÛíFÖÑüüü¬¬,EQ|>ßÀÀ@OOðÎŽ9200 ªê믿þÁx½^Jm–šš >ð¦`0¸gÏžÎÎNœ+tww#>‘´c(¾&33à j÷V8%bI@²?‘†4þ”––éq\)4w«§§gß¾}@`Ú´i6›Íçó{¢¯¯H¨+JJJBîé¼¼<ŽN§3-- ™7UU¥ÏÄÞâzÿ`K8qâÏþ3+@u¹\%%%Ó¦MËÎÎNMMu8PÄ$wIÕr8’G x Š]¸?Â÷l6›ÇãA°÷½1q8øÂÃc9ÐÉ^ÎΣH+îöS‘h¶âqDHAßžÈ 5t¥‰„Ò9@LCÁ Ÿx—KVÓš,4™$©øú C‹–\Ž; œ’`º?ýJÄGÅJ° )1&:&;Ò÷ÔÂú"ýŠ mšò‘þ):‘ž+=.¦…ÒfXEÃÇÕø(rÓà—ÞBC$õuç/&º•! Æ'5‹¾„ü†J|:o±žž‹Å’ššªhÔÔŒtŸð—X~4}h<ðqNÅæ‘˜úêH%'D€5E³TXûò›s‚§æImKÅ t xÞú?Îî‘W i<šÄþ¢Ñ¨ßï÷ù|?y6ÁðÖ=÷Üsë­·õ–/_þꫯþíoÃaÑεø7f³yÞ¼yBE: ‰¢‰M°uru©ªÚÖÖÖ××WYY‰MÒ8vòäÉòòòɃr¨0|à^qÅ{öìùéOúïÿþï“ô\n·ÜrËc=fø'ʈ‡ÿVUUuvvž‡"ov»ý»ßý.©„Ñ0“lçcb›èøñ㣣£wÝuסC‡¶lÙ2kÖ¬‡~øöÛo¿°EÉ0B:::.tAþŸM`ÿž‡ü†ç2’§ì<›ª)=Iê' "„ˆD"È;–““síµ×†B¡wÞy§­­íÅ_¬©©Y¼xqaa!±fŽ;ù›êêêcÇŽñ›ÍvÉ%—L›6 ‡ÂŽÙõt$Á6âDñ€°ªÉ‹xwQÕ‘)D‚{ “k…"²ÇãáÂ%œ¥( "§nƒ ï¸J‡êø-œOÜN iiIm®jIÇEÈÈÈ@±%÷•6îpÚ=JQŠd@— ~M‰á@º\ßv“¸¯ßï§ÌtàõàšÎÎN`+ÍÍÍDü^`B%''÷ôô¼ûPhÑ¢EŠijSĵéëëkoo¯®®Þ·o_QQÑž={“4Ái@{€ x…6ñûýð´¥hd.Ø:´³Óét:Š¢ÖB#ø  ž822ÒÙÙé÷û·mÛvøða§@jÇëõ"_3Z¾··7‹½õÖ[1–¦÷TµôšV«µ§§Çï÷=zôÙgŸEÆzðárx<ämkkKIIiooïèèp8™™™†´÷Hà…0X§ÓY\\¼nݺ˜–BtddÄår!NrcèÁ@ ðþûïCà¿««‹à‰ÜÜÜuëÖMŸ>s àñn4wB¡P}}}ccc^^Þ'?ùIÈ<«LHhœDŒ• (J0,((BÌ;12¸¥°Pb‰Håq|< *RRT #mòè9›‘‘áóùöîÝk±X¦M›6{ö쬬,EÓoÉÕDDàbàv q°X,ˆ1$O›³M&â§hÒ‘;& DáOÀwTÆëÔÃ+pƒ8 ¬™O|½¯Ž§c!¢q˜‰°Ú8¿FeìT2—H¯ f2Å ½‰x 1~O hã?ñȈ¡cÏ×XéOÞÒ‡ ò+ á-^w} ò R˜þ¹R«Šx¨N0"•þí&•Yeh"|¡7ÿ‰ô,Æhˆmq Jz(ñïhÞV|ê3ÑgU“{ïëëƒH"¿Fª2g[«Z¬:_môÝ*5»¶ÉŸ¢íHœ\Bx)LЀb3E<ÂEÅ01±-Õ(ݰÏtãÿgbo…"èŸ4¤#‘ˆÏç…TèÝüLm"á­þþþ'Ÿ|™ÝÎÚ–/_þÕ¯~Ÿ¿ûÝï«Jd<·‚ôÍ“O>ét:¿øÅ/ži~ó›ß远À[›«ëL£xÞ}÷Ý'žxâÿþßÿ;e0,ŒÙl&Ír5q,êdXSS“4*ôñ$Âç7} &Û>};—`±ŽŽ=`!Îj"ðb8Ή$ÍÏϿ뮻ü~?4}&¡ÏɤRZZ ÎÂÏêØÖÖöÈ#è¿?‹þݱc‡¡ÊÛ®™“ö8e“j\4—6^`µÀ3éïï÷z½yyy%%%ÿüÏÿ¼`Á‚^xáСCuuuÇ牙 Œý¨ÙlÎËËËÉÉ))))..6™LUUUP”§X9¾ÅŒEE®šª)\ # ’45¸«¦jbLˆ^$—RćT+ª££CQ”p8 x®,´„@ƒã=<<Œ¼]$ÿŒdv(?"Mð¾C­¹ëˆm:ø>hÊæ®jRA8nmiiÉÊÊ"2¾…ÅöHYkk+â¹àØS'ªª:44tôèQ«Õê÷û½^¯ßïÂf’Ý¡\“”ð5ÏKQ[III?þxNNŽËåBiÍf³Ëå‚àô›,ËàààñãÇ{{{«««MñʾˆÏŠD"¢öù|È®ØÒÒÒÓÓ£(ÊÈȘVPêìîîîïïÆDZAE´Aº`ÀDÀ‚& bÐ233y@<yÐÀ;|ÿý÷‘ômll¬««+??¿²²rΜ9Åmmppðõ×_D"7Üp‚Ë(Ú *?±X, ™Íæ}ûöíÛ·¯¸¸xùòåYYY)))èDÙ:ÔÝÝ=cÆŒ 6€{Eh&®ÏÉÉAI2 ODîNEQ|>ŸÝn'¡å˜–Û~÷îÝÛ·oG/£HðP©#ý#rh¹‰BtNŠÌn@3ýà¡Ì 𗨔¸ƒÕj]±b…®¬ÉdâüGB'%Ôí€Ü¬Ànм¹*ŸÃáà¸ISÖËÌ̼þúë/¿ür páGÈ,ЇÁTQÕ4žÐ›<ê%i "…ÀÖiÙáòá(yãN‘>yÔ”¬Pè±cñ%Ô€f:]ÃAvú_39AÚyü @a˜Ý“žÈã M´Hÿh…±ŠøÝbLÏQa j"ŠÐ=?€×Q¢ððæâÿ•~+ý•f(ñ©ëôß(ºsÉ]j<ÃrrL“p@i§¼§”©ÆÓô¤F†‡`çFúvæWÒ¿ú;ˆxüN´ÒE":#‘P3Áð&ú‡ÔA&Å6C*?ÁâÄCÃv8Bç)¤š¦É™ÑûWÄÁø ÞöDƒœ¦³ª…óSí(vXŒë¿KGwåÄ1^@ľD]¬VkQQBÅdÚDÂ[>úèu×]wŽ€ÜO<ëׯÿÖ·¾5þÅz×û³ßþö·›7o~ë­·ªªªÎ´ýýýÒ '*ÁÖÄæê:»(ž;î¸ã–[nùóŸÿ|ÓM7MH1ftttÏž=ø¼eË–C‡ÚYØž={øÀ0̈÷³ŸýìtÄΖð÷¿ÿ=$3.¬{°Øï~÷»sŸSúbøýþ (‹‹‹'ºý&Æô#ä…^xíµ×.†¬Ž¿ùÍo&jÍüâ¿8444!·2´¯|å+s„ì”I†íœFÚYˆF£)))ˆ:BPà!^yå•%%%~øammíÑ£G;::µJUUÊ=>Ñí·ß^UUß8))Éï÷k @v®ð±Š:QȽ^oSSSGGGkkkZZ¶¤Øw’æQGGGSS“Ëåêíí%š3ôihh8räHGGGVVVnn.‡{{{-KzzúÈÈDmëëë÷ïßF_~ùåÒÒRÄ?":ÓH£Uo8·”=ãä ZG@ iÜ`« 0‹0EK¢„@¼¢¢"Àî•BQjjjzzzgg§ÙlF®7” …„C ì ÊGèS¤q4™L@èg ñçΛžžž——‡”çB‹WEæxÁâªp«ººº]»vç‚®05»¢å¬¨¨øÄ'>1oÞ<<È Ôâ‘.<¯®®.!„ËåBè(*¡nÉÛüA™(Mšî2÷B¡›&„€˜ŽÉdêíímllÄ91zª«« þÌâÅ‹ËËË çóùêëë-ËŠ+Œ;f@— Cn±Xjkk,X°bÅŠôôt‰îa6›!#µeË–œœœ‚‚‚ììlŸ’Ç÷ñAo@±Š„æ šÍæšššwß}wxx8¦Éœá¡8ØGà'º˜BÛ¸o)ù·{n·›ô•QL!4D&¦¥6# -¦‰ÄQÎ+ZU8ýêA*¡' ‹]"‡Vïªs¡(ŠÝnw»Ý@B £p!)0Ðívã¿<úŒ¤jâßð}¨g‰RŠß†B!³¨Àü3¡WôÅÀ$¥ŒÔtôAßS”¯–ZžæsH‚«A™˜Ð•a@Ÿ$ ÈçšÊ⩉ŽG·"ð—²(ˆx×]º'¯,3bæþ…‰åú”†+QbMñ IE< CB-¯hÔ<,°˜×´\R@„¯Ì(Lz¢Ïw£bS» ÐJ#ò"žË›…âé¤Fæ°MŽo*, ¥ºÆ”)Žs–"u þ¥0U—Ë…çòžR4¡7©úªìø`—þ'+.[†]¼ýöÏé¯Yûñ+|¸ë£ò &œEh.¾‡.UGGÇC=ôꫯú|¾7þÓ?ýB«¼^/€€ ÃÃÃííí~¿?===‰  ! /¿ür@EŠ¢X­VJY )ôŽ:/Âëß»XÊ›ŽDf>Ÿ¯´´áðÆM€fll¬³³³®®ÎjµB…*¢.èð.ûý~¨°ƒÊAd AàŒŒŒ¤¥¥M›6-++KUÕH$’šš Z ".ñÃX,f±XœN'¢Él6[ PUÕf³A 7ǾŸÄzLLúDÀ¹„–7ʤ¥lWU;Z«Õ Y%ʉE$äqW5 XRR¥™Ã=!D…Z##‰Äb±ôôtè©£A@†"\ –8­¡¢(~¿¿§§çøñã;wî}ú5×\“‘‘A÷ %€ß¡»É)ÅbÁ`ðé§ŸþË_þ‚Q$ùEÅÅÅßýîwóóóI5†8#Â(ŽIhT[[›ÉdÊÏÏ'F飑Q/À3$ewî^»ƒOˆ8Výs%lEÑ’Ê!ž3F´…Ù¢Öö4S’:No|L„žžUd1MÛl6ûý~brQÿôù|¼‰p[.¯C-/qNq¦7ŽfÒ)ÿæ‹Ô/‚ù€A¢ …NŠH‰7N‡:ÜAaJزÀ8)€Žwº> ‘j¤hqšÐGã-Ì|Îy!N"Ѿ¤D—‰x¢ÀP(444)î˜NQ‘O Þ¢8_ K’†5Ž¢ ãT€Ç›ô“BhòLœHïhÒÀ—\á‘WßVÑ(ü{ fÃ’öø@Uu44/AE”mœaeÆ›EêAÎ Ã5„ŸxÝ Ž'—ò ]( ™øNȾ>”•¢PQ Ìú/¡ÏÒÄD‘(…­„ؽ@g‡‚tB#õ‘ˆgó釫)^qŒšŽšÛ$«ÕŠpxPw[ZZúûûÝn7’YÿüWÿ/ZN¿ÑßÞ|ó Ã].Ù„±·¶lÙÒØØ¸xñâÓ¹X5b»ýõ¯ýä'?‰·ãUW]õòË/Ÿò>+úþ÷¿Oßøày.!·ŽŽŽ èsPžÎ0#ûÞ÷¾÷Ì3Ï|ðÁç2 XVVVOOÏYÔKŸ9ñ¾ûîÛ¼yóáÇ¥ѽ{÷¾õÖ[<P?B~ò“Ÿà°è<—DŸ9ñž{îyå•W¶mÛvÖI ÉfÏž}Ýu×}ó›ßœŒ5Ópƒ~ú#YŸ9‘‚è§ì<¶J‡£°°0---477¿òÊ+Gmll …Bt\Iž-íú»»É·imm}æ™g j¤ª*W¡%àB!NØ&"¶ˆdw°9Æú000í­ÚÚÚcÇŽI~šˆwZöïß/m¹ocªítÉ`¾§ÄötõêÕW]uUFFP3È÷cÒïF;ZJ„¨v´Lñ~—0MUÎÆ{“pF)Hó”E%Dijcè‰übÎ,Øæ&''"ÿåãCh„™À™â.¥ÐvPä‘rê‰sÓ_ÎàŸ°*I°†À/5>É£ªéŽ~ )^!~N!!Dø‡Ÿe1NóSpBîFŽŒŒ8 …û1wî\äã¦BBÕ l;ÂÝT-@ŒGWÑã(C%þ%/”è|¸  §²´÷"Þ… 3ùùóçÛl¶­[·:t¨§§‡\2!´“'O655!‡ ßïŸ?~zz:ÏB 0m“Éd·Û†4ÈhÔ°tÈO.÷‹„‘—hø00„ápØçóA•†ò-Hªo"=¶ÅBAxä hXH½Ƨ>s‡ÿVšQñ %…tI3]š¶RÓ)Fñbôté¹±xýi©j‰Vª9‡ ƒjœ®0H8ÎQp¬…ZãmBØ„TU…xBzzúdkO¼µk×®Ù³gŸÝoGFFn¸á¨®<ñÄW]uUYYÙ¾}û–.]:þAÆÞ¿MMÍe—]†-ËD™: ¶&/ XUUUMM øÆË–-ûò—¿¼iÓ¦ñÒÓÓsÝu×íß¿_‘œœ<Ü¥ûï¿ÿÎ;ïä…ùùÏNØÌ‰†¹Õø$”=ÅÅÅ”oæÌ™ßÿþ÷¯¾úê%K–LTÝÏÝ KxÛm·]èr !DZZÑÚOs˜é­¿¿ÿ'‚~€uuuM,¼5<<ü /ÜtÓM¿úÕ¯222„¯½öÚöíÛÏ%ìD™~„¤¤¤|ç;ß¹Ðå’íÜ×Ì;vlß¾]úr¢ÖLŠa9Í‘|žS¾N™Þ$‡ ÿ5›Í‡# •Bdgg/[¶,++ Ò*\˜»UŸÏ×ÛÛ …rss?øàƒGy¤­­-''çšk®Yµj('BÓôä{kË7Ä7Ü8F§OŸy)ˆIñZH.A$ SÀÝLÕ28ÖC?Ç&Rh„(ö”/çqµ Ú‹óW¼0Bsž‰Êcèp1/‚`(‘§\FÛbSt&À‹n:˜ÐÈ) “ö ÍÌYú/à'ŒxˆÛâ#$×ýÅo)#â=9XFñ˜(†Óé„—Ê"5€—QÛ’;Èú7Dsñ蛘–6%$"º5--í’K.)((¸ì²Ëkkk†††@£±766¶oß¾æææÒÒÒ… ^rÉ%………n·›ÇC9ޱ±±´´4@½f‘„üGFFìv; 5îüÄâ“Ä“ž(ÚµÙliiišâƒnXXX‚¡~„£Ùõ@!y¡ÜÓ“"‰†IHŠF'ází|p"B%9diT ×òÖàÿr ôOô)žÈQ9ÁðiÅPYô.e½ö]L GX$§4‹egg{< Gã+Ÿ¶úP²q&Þtâ¬Á°ã#Íd2ŒŒñD„,õ¯¸s៖b$s¤˜KÂõøÝ(ÁñqhŒù(IAqÏÝR:¢P5ÆŠÐ8µSª—¾ƒxјT“Wê&©Y¨l4å¥Ûb$¡%ýZ-4M%"ó1,!›†k»OŠD" }}}YYYÔS ‹x$…¼),Ë §âÍEÑŽâT–h¸ÒÑ•Y•²qðˆÂcLãŸFo ‰®‹ikÒGðÖã#–†«Ða‹ü¿<°]°]q£¤ž•RUÒ¥°hJ»AÛ$þWžtU‚Ò8rGå§£>0ð ƒ uÓ@•"Ê'Ü&ÞŠÅb»wï¾îºëÎîç¿ýío«««…ßúÖ·€¹\qÅï¾ûîéÀ[>øàÖ­[[ZZêëë·nÝ:Qúå“—`k¢²€•••½ýöÛˆâÙµk×®]»þã?þcœrŽmذáСCBÇóâ‹/®^½zBJ"„ø—ù—O}êS¼0“—9ñÑGÕ9NøØ“O>ÙØØøê«¯?üpóæÍ>Ÿï¢ÊœhX‹$s¢Ëå:~üøé3CƒÒdg4ôlÂ3'?ôÐCRˆè׿þõ‹¹£!OæD² Y3<¨ÿr¢ÖÌÎÎÎ3É»pMÙY˜!IpÚ:Ž´´4ä•ýŠtd±oƒ³ù’››‹|m)))yyy©©©ØÀ‘ ç–6åúRÚ㚘Âtqqñ¼yóššš€§ð]¬/ôK>­¢(tˆª0… EQP ì­UFÆÁ¾YçPM§Ó9mÚ´¹s禤¤ð³b5ž%dÒ%ç,yªR}aà+Ñ)7UÁd$œ,9r܉U´èr ¸ áBÛ%Spµ'}Pï‰Vãn„n(Zä€H\žŒÓÖý¡(E¡ NSJxÈ@Q]‹;®J|Ø×"*ŒÆÒÒÒüüüùóçoذáäÉ“µµµµµµMMM@€œÞh4ÚÝÝÝÛÛ{øðá×_}úôéóæÍ[°`AYY™ÐP&''€uH™¨_„à¬Âô³zÐî£ Ó “`nn.¡Æ|¤9޹sçBÇÍG“hîS»IãS?¥ë%B¤x/(L3‹WÊpjH®©@˜˜Ì“á2Â/6ü“álFp¡„íJŸ §YF B”°ô'^0iÑàóŽÊ#\\ëǰj4=¥Æá%‘Úß°a©GøJ˜¨õóÏ)¢Y__Ü‘AUUHŒë\?Bô6B¼©ñb’xmÒ=%ôD?øõ…IÔ•*£ùè˯}ðÀ¿ONN.+++**R4é@j>Ço }E¨+õƒ|ü7—`‹°4< '¦ˆWaÚa%–‰ƒSR_Œ¿{çz¾RIßH+ oþÖ£ÿJšbdÉç&Ÿnüô"à÷gòåNº!æ;hÑÈìv»'ÛÃxëĉ^¯÷ìr&ûï¿_±dÉRÑZ·nÝøÃo¼±  `€Ùl...~óÍ7·lÙrÅW<üðÃço©ªú /ìܹ“¾™¨è˜‰Ív¦Q<‘H¤­­ Ÿ7oÞ<Ø–bttT*ÌäeN”âÔ’““o½õÖÍ›7'º>þÇüÇEž9Q_‹$s¢ªªç,&-ôÉÉÉ¿þõ¯Ïh"èØddN¤À;î¸ãøñã•••÷ÝwßÄ>âìL?B.žÌ‰BUU'*)¡?±k晎äóœòuʸI›*U£Š2÷‘ R áÜUhñ###^¯7 9N¿ßfâ>èL¾„ÐÎE‰’#âÉGÂÈ·s»ÝW^yeZZZmm­¢(ÈÀÊ 8J( ñ†]uuuuwwÛl¶ÔÔTºÆd2¹Ýn䃦ìBÐû].WNN(6V«ÕåržÃ1©t¶Ìwö|5–N•9ì¢_]¥kT##Nå¼IàŽ‰%ü’vä"þeÁ‹‡H8ˆÖ1*Ò&^Rû–ô}ˆ‘Ü-~º á'’00 QNIEË­)9’ Ä¿!9vÊõ®h*ˈ®u8n·;++kñâÅ]]]G=xð`mmmww7pFÊHÕÞÞÞÑѱgÏžòòò¥K—VUUAŒ?''Çl6§¦¦ƒAð¡ÑC‡"Ž;+.ÕÌWc)ß"ovC¹EQl6Û¬Y³vìØÑÞÞÎç¬Ùlž={öÂ… ‰:aÒåS“:ô”ÃŒ»Í"Þ÷“€~Ä×#> g꟫÷3ùê" à5¥j–pœ»ÑÏc,€ä'«Œf¢oIUgúÅaœòèKË!žŸ‘îÐ.Ä cbzä¼ ’. Åk›XžA}Ss8Fß_B‡ÐøÄDC$¬áhÁÇåra*U.–4ã a=‹$‘$ü4€õ½#Ýÿ”x2Òúb+Ú‰Eff¦TkÁ€ðÅ甃JÿÆÑ£ÛãUèf™ÐaÁª‘äÇ'´D - 2_À•ø¬©Òƒ™~úã{Î KÔÈœâG—q4™sÍH÷M‰‡¥žh*édž~L&j4©³¤I-„ˆF£¡PÛ°ÔÔÔÔÔÔ³VH?M›˜Ì‰[·n]»ví·¾õ-ÒóS™§lʦlʦìÔ¦2'Nª©Z v“DÂB à×ëýå/ }À7Þ{ï½ût»ý~¿ÏçÑû3Ï<óûßÿÞçó}ö³Ÿ½ùæ›§M›†]šÕjF£`x‘÷E[pü‰¶tüdGýàa ! *‚ÂÓÁ/m‘‘DjIÁqBîyÊ>Ƴ/ᇠ©Ñ˜…Ýn…B<å÷Ì%G޾äwFTÊ@±E†.=ÿ‰Þu” ô)ç„ÒÅÔ˜¼â¼›ðhô…T/ F#M@þs¬óŠ¢´¶¶fff"-  ¾„ ¹Á‰¥%%è:Å5ë—bU‹]Å"É)®hs QºU™^F.¡çò1 ²“ >T(s":Ç­ð'ä Õv”ëSb¤7 71iéùôå‘–n©‘M8R0\˜ ýFY#¥a‰¶¥—€JŒÃT0Zåèbì(×0ZŒzGJ1)um™T툂b ñÊæ ;^‚únÂ}PŒ˜.»+Í2}#SIøàÁ›«³³³»»;¤¤¤äçç[­Öýìt‡ Ïœ81q7Í …B§y=ÍoذAqÝuס5o¼ñFýõ6›íÕW_Õoþð‡?|ñ‹_TUõßø†Ó鬩©QÏÙ Å¿ÿýïgq+!DÿÞ½{{{{Ͻ`Ü>þñFf²œ?üpyy9ÊgdMMMGÿ½¡>Ñ 7Ü0±µ†E"‘/|á Ò³xx°dË–-{衇ð9 Ý}÷Ýx ?ÿüó“Q¼ñíæ›oþÍo~s:%ÌÌÌüæ7¿yþKÈíG?ú‘az‡3šÿùŸÿYQQ¡ï²M›6þM XffæÙÕ+==½±±‘sï½÷Μ9óÊ+¯Bdee=õÔS˜#7ÝtSSSÓyoxÙô#$‘×4Ù¶xñâwÞy‡óíoÛ0@ò,ÖÌÊÊÊ{î¹g’ÖLÃ7Ñø…ôz½;vìÀå;ßùÎÝwß­ª*3NeNävúm~Ê;Hßëw½Š&øJ:ÖÀG¸n±¢ R¨Úv |ø–––½{÷B„kÑ¢E!O€³ ø.MÚJ¤‰±±1»Ý¼Él6{<žÌÌ̬¬¬¬¬¬ŒŒŒÔÔTä $~ˆÍkJJ 4¿SRR@fØ-9Y,·ÛíñxÜn7dã-‹Ëår»ÝIII”~HÑ r"l‚šTÑ]ÓŒò呟/¹¸ÜðeŒeõ’\A”M¿Ùˆ1ã2"úÁ 4/¸ÛØØ˜×ëmjj Bォñp1¡ôÞ£$}" ?UÛ¯Ãu$n|$´’ÅbA§ðPYró¸'@Ô’f‹§àA¤º Ì^"ôø].—ÇãBtçw~ùË_^¶lYZZšŸÀkll¬¥¥eëÖ­<òÈÏþó§žzê­·Þ:yòäðð0Sj4!)¡ÛíV5H0•\µ˜&Ÿ¯ê0Miªâsffæu×]÷•¯|å‹_üâ§?ýéÏ|æ3_þò—o¼ñÆ9sæÇ%5¸ï ªZ@Ãõ„F”ÔÂÒxãC”šˆ#J1§hôêe³ªrª[*CESÏ‘œp¾ÜIUÓßY ÿF¿êRiivNj[šBjÐ"Àq=š8¢$—¦jº1¡ޏo«Õ Î,aÍTBú,5ÿ“ªa¸"”ZƘ f¡N¡+©T ;¼Vô=ŽEä\i5£»á¨ƒ¯–@Æõ¬ØDïJE;<àu×8Æ2ýIC‹V9IŒÉ°¼Ñxe¥!$~C©Sìv;±€•x “|Þ>Ò¬¤7;F’t²è­À¥h\¾zH݉D8Å—•E‹ƒy„,Ìô’iÉÄóžD"ø2–8òš/R¯Ç{œ÷&Ÿú…B?è-£ÄËäóé …öÓM1¾9°žhQ¢Þ¡IÁït: ³²²TU•"±&Ü&&8‡ØgKUWW'„øæ7¿)„xî¹çž}öY“Étýõ×wvvÚíö¤¤¤wÞy'ßvÛmuuuYYYü·`ãÿö·¿Ý¼yó[o½UUUuîu‘&ÉYRq›¨„bz“VÉS–3 UWW_{íµÇŽ{òÉ'o½õÖ ,Ìø™'Öî¿ÿ~½üV"à_LeN<7“¦ÃÙ‹õ÷÷ë»ìŒôÂÏCæÄááá7Þxãâ”–¿È3'NÆš©ªjkkë9föÇNg$OIË_pSâU«ø÷‘HÄëõâTÓãñP@Ú^ãDÔëõââ`0ØÚÚúÔSOíÙ³'_rÉ%áB`3JîR*Œ<"ú’{Œ]#ùlBãnàz‚è ?!< ïti“­2‰+¼ sît:IŠ‹ÎfA%ƒø:pw,iË‹Òr7Gëú]µjäŠëÏÞÑæˆ"”¢½TMÔ™ZUh¾y2t“˜&Ë­ª*"O-Paì'n¥Y©r4º¤‰Ì3óŽ4éu ÄÇ¿c²s&=”cÐÒ=yEˆtfÒRââu r§M©ºð^*±œv:E‹~NÙýí̘MsûŒ ›ÍÆ—A"˜óü¿($u'&óºÓ«ovš>&-3 _øocñôpýÒCTÕÓPW4Ö¡´€ðÿW'!Jïk…1ׇåà Ëår¹\ 9N6¼5‘ì-¯×{¿õz½III‹/B<úè£ÉÉÉ[¶lyþùço¿ýö‚‚‚7Þxã½÷ÞËÍͼçž{¤ßšÍæ×^{íõ×_ß¿ÿòåË'¤.RDh4½ï¾ûöíÛ7!7Ÿ@«ªª·ö4ËùÐC­X±"//oÇŽ_ÿú×÷îÝ;…¹ÿþû©0«W¯Þ¶m‚ɰ3•–GÖ¹+®¸bíÚµŠ¢<üðÃ\Xíb0ÃNvXòi2.á3zöóŸÿü™ÞäÜ¥åõlÂs_BZþ™gžÉÈȇÃßúÖ·®¹æšM›6™.iyý^áEbÙÙÙg´Òžxâ‰ŠŠŠâââ… –””LÔò{¦#Y¿Kž²ó`ú“Iɰûôù|ÝÝÝ£££v»½¤¤T&¾·C ãÀÀ@uuõ‹/¾ø“Ÿüäž{îyõÕW‡‡‡ËËË7lØPXX H‰7zç `KmÖ Œ3§øÞQeò7‚å2i9›ðôD:Ö0~Ot îÄ, ÐÉm&#eô‘‘ì¡õ¥Œ±bøh©ƒ¤CZa$† —¸¾¾ë¿ÿÒ{\J<õÉ/ç„ €3gÎLKK#rþžt"M'ü†µ:?Mï°ÑÏá£ë­V+(N§Óáp€½¥wÑ Ÿ¨ÄËþDÑ!_*ã5pFUrrrZZZiiéÊ•+?ûÙÏþÛ¿ýÛm·Ý¶hÑ¢ÌÌL)”idddhh¨¶¶ö…^øùÏþ«_ýêõ×_¯©©ikk ‡ÃÉÉÉ~¿Ѓä·O˜ëÔ7š4UE±Ûí©©©YYYéééN§ÀÞqÒ·]Ü5L ¢l£Ì — ¸áëŒþA†I¢ Nù_£b[†àÕñX†þ熷MÔ5üz°…Ž8ÉEóÞéÐÐ ž*ZjK!CŸÏ×ÓÓ8˜‹Å¨ˆˆodÃPt@úâéG‚á¨B ¥©”¥ñtzmœGã²P(D¸†žDË!-ûø’£Kt®€‘?~ïH؈_ˆ §‰)4¸ˆ_ŸùyM  ŸqR3êon¸ÖqÖ˜¾¡ W?ÜŸ’óŠøðvEQFGG! Ô)f×ÉoÈ •úÄë›oôE%X™[hÖÐkW‰Ô“–hNã•zŠ l^1Š¢P,üé Z}§+ñ€T( …Bú¦F/n}sIcåÄìàß¾ïÐPÉÉÉ`:cT`5˜Œskn–9QAÊågd™™™äÙÒÒâ÷ûKJJxH¿¢½½½²²òî»ïþÿøg£šÍæ_ÿú×'Ož$fS,›5kÖW¾ò•ý×=?€W øÙÏ~öÈ#Ô×× -sâ9ö¬´øžL?À&£TEÏ¡ûîw¿;±O9;Óáqr)œKKKÛ¸qãé¯EãX,›(•z½uvvžÑHž’–?ŸÆ˜.W”te8>räHssóèèhAAÁôéÓív;'8Äb±äää#GŽ<öØc{öìéììôûýp‰ nºé¦Å‹;ðD‚-26¦ÜÒÒÒÖÖÖßß" üŠP(‡»ººª««sssËËËçÍ›—}äÈxÒDPメÔx…2i^˜t È?$W>*˜•ãøE’Å4--~% •‰ŽÑsùÈ¡”—êÓ¥é”:ŤS¬—Ƨ!x¤2øLï`ëû—·§H€b&˜EVãA4©`‰î£_•¾®®®¶¶6‹}ìcS5±?´$„ššš¶mÛÖÜÜœ‘‘±bÅŠ™3gb;m±X233M&“Õj¥É"7D'†Qf†+õŽ!ȰÊ×HÔ&º©¯¯¯««KIIÁ9€Œê"½Î°>Sr þHt7ŽŒH ƒÉ(æZj"ÁÈY"¶6l%l¼ | P¥ï2štÄnK!Ñ)V4¦E¼âT8–¦H$æ2@UN˜’  jiO÷SY¼žÐ!§‚Ér¡é(°§ Ò‚mÍYZp8›îÌ—/~=Õ=)))tvv $%%UVVz<‰£*=Ôð 7ˆ¢]Ik‚ôCýë&ŽÉljI'¿¥¨<##ƒ·­Óé“ioÁãjnn>‹ßΞ=ä/!Dff¦ÇãÁg0®Ãá°Íf[³fÍš5k¶nÝÚÓÓ“M¿?þÏ~ö³‰m¯×‹À§o4ÃÂë×FÁHÇÒdÔ—ŠÏYú/?„ñðú† ƒC‹p8 UõH$ÙA¨XÚl6UË6kÒeEণæ&Ø]ßV¨¢·¿¢Åþ«ª ©M^5þ\üPz®ÔS´±…#GŽìܹ³¥¥%'''%%Q½‰6ÁˆÒ ]ØIIIæPr~xÊÑ"â·^hRDŒRŠjaô¦ã#Ç*>ŸÏn·»\.À”Ñht²Ý«‰ÉœøÄOÜvÛmŠ¢ƒAš½S™§lʦlʦìÒ>¢™÷ïÚ)íJ'ÄNso}:wà·âJI”™; nÛ¶íþûï?pà@,»÷Þ{?ýéOgff‚(ÁýÞ‘‘‘'N=z4§§§ggg#‹œÓé$öSRRöÐ@¸«CÛ_(s žNY€IDAT##Œƒ'bBŒŒŒ„Ãa¤_Dˆ¤ä*Ø‘)öápÉ‘ ˆĉA1¦³ íöP( éT™ö»ˆØÌÁlcM’Ä‹1i¹ê€JpPC!/ø‹1‘xº’ËÆ#a"n‰DH:]|à>ÚPd;Ün7Z•ta 3‚$,RѤRð' 9AÀ…ѯ¤h,@HŠ4hD"«Õ*ÁËLΞN?§^ã'ï¢n‘¬›Ê„ÆTUÆÈìêê:tèÐÁƒ:„£GÞpQ’’’Ö®]ûµ¯} •Âtͨ P_‚o‰É0Ñn·'''CfD*žˆ˜KÎçó9žÒA‚u„K£‘ZŒÆ³‰¥>Æ!‡Š¤%Eï~†ûÇ›—pEÓ§S4ÉgÉÉÉ@`tt4''‡†7ý DDpJJ µo"QÚVJ A•ÂâÐß߸O«WÔÃ[ Óã ׿5l³Ùz{{›››óóóNgJJ îÚ¹úBˆêêê—^zÉívÏ;·²²²¨¨ˆKãI£S°úa¦ ‚"`YæÎ3ðâô@‰xk2ÉIôø”Ä*ì ¬”J•F¬Ïç‹D"Èœˆå‚Éñy‡Þ|q–4ü5‡B!<‘Rââu#i‡éWrã=‰DÐ2„S˜Œdû$î3|$£.ª¦2¦Û’$“`Љ´\Ó;.¦¥&ärWÄ0âJê‚­ãàøœÂL÷¡ÔºBâLñî YFÅ“ZÛB•@(ž¨AaúxåE¥·ÞzëO<˾ñox<)z2LÂJÍfó£>zv·’j:öñ{¦3*gÿOúÓsyn¢Ì‰‘HäË_þ²ÔË3fÌÀ_y²s7Ãg“9qttôSŸú”";;›2âÙl¶§Ÿ~ZqKKË£>zûí·Ïš5K"I9Ž‚‚‚ ¬_¿~Æ ×]wÝg?ûÙÛo¿ýk_ûÚÝšýÇüÇ¿øÅ[o½õ¦›nÚ¸qãúõëW­Z5kÖ,0èVŠ¢dff®\¹òßÿýߟ{î¹®®.} sssÿÏÿù?Rñ‚ÁàK/½ô¯ÿú¯UUUœB•œœœ=cÆŒ™3g.Y²déÒ¥Ÿ`¶téÒ%K–Ìœ9sÆŒYYYÜÛ1›Í3fÌøçþçǼ¿¿_zÜ~ô£’’}kŸQÒCdNœŒNÇ–ë,Ì0sâ¬Y³Î±“gú1üî»ïÚl¶óŸÕÑ0s¢”^ó¬×ÌÊÊJ)!ì¹,¿’ãj<•9q|SŒìÜo¥j>BSéëë{ÿý÷›šš"‘HYYÙŒ3 !à)8 „°ÙlUUU7Üpí·ÞºaÆŋ—••y<J_¨G¤b«ñ{núRú“ôYºRj Œ(BÑ`¾%–Ñ¡©Ì³…ÏFa¼.†FÛYÚ­JµƒÅâµ–ô5Â!⣪*tLÝx¢ê/ƀмUKž(±`Ô~w…ü$uÄøÍŽDEG‡ÑWGz(E”|NÁé2©„¼#páN£ˆ÷E±Z­'%%Åív—””\yå•_úÒ—îºë®M›6UUUq .´a]¸°cÙå cʨü1¦ßŸ¨…© T* )Ʋ¦êÃñô eXÞ; }©ñ¨„á0œ ü¸A [hz:†£E­ô=¯‹a5 ßkÃN¢Ýé«o:¨ê„B¡“'Ovuu_ŽiŠéô+øh]]]»ví²Ùl6lX»vmnn.—oã·5\]yK 6õLº•¾+݇$‚422‚ÅJj%UC("‘ˆÏç;~üøàà ªªHŽOÞpm7„`¸!‰—Ói UMãHcC2ƒŸT §[¢ûH½/á5†Pu(‰¾‘¥é&})Æ] ¿çÓÓËæWBKšhÒðŽÅ‹ßIf8À Ëà Ց @Þþ€¥@uÔ×ã3‰8pà½÷Þ ƒn·»¨¨¨¢¢Âív53l1Z½U µ…B@€ˆ«†Ãp-N°@Ü¢a ç©á(­¼¯Eü’•œœìv»‘I3Ætè&[hb‚)p¦¦¦æ’K.9£ßºÝîï}ï{_øÂª««=ÏÛo¿ý/ÿò/¿ûÝï¾ò•¯Ì˜1ãĉBˆX,öÖ[oÝ|óÍçA~(55Õëõâ•ÖTçÁªªªjjjÎ(à+==}íÚµ“Q˜û￟ËåÀæÌ™ƒ›€ÌðY+W®Ltý£>ú /HñÒÓÓo¼ñFýÅEEEŸÿüç¡9F;;;[ZZZZZ:::Z[[ÛÚÚ:::š››UUõù|±X qà¡P?7™Lx"é§Ãá@ÉE‹•––fggÿå/¹üòË¿ýíospêw¿û¾„&“I/ž’’rÍ5×\sÍ5øïÀÀ@cccccc}}ýáÇ»ººp’ï÷û;::06p¸êp8222ìvû¥—^ZUUU^^^VVVZZš››;~kë[ûü‡ìvúÿQ$ýƒéééCVG!Dvvv__ß9ŸÂÖ¬YóÎ;ïLÈ­¦ìÃTFÃINNúûßÿþÎ;ï šÍæ¥K—VTTðˆ®ODþÒrÑVº¹ª#é÷ñt:-ý 7ÚÚêó¾óŠH~ !ì/¦‰ž(ÐFeIL,ïŽßɧ Òî“oñ%4AÕ/ðˤJé7µ‚…_ñïy §äHè3Hž‡B!ЬôûéD^Ó)MÑ’d‰xnˆ´¹W5Q'îxÓŸ¤ ½Tx\)U–(î «…ßAºL0l‹2^âJŽŽ‚o5::š———‘‘QQQqùå—ïÛ·oË–-äØ$%%effJÚ[4Æ„D~, Ð\&^MUïº@’›ª0Ñ}.Íñð™þšâáíÈ šF²Ÿbœ#u"烢ÃB‡^©:˜Oê;=@ ¡*L×WœÏYÃ'¶’è<~üøòóó€óì¬Vk(:xðàÉ“'=ÏÐи«ÔDÒƒ$â‰ÞxŸu(6® ˜4ay¿pØðnE=®o:Ì—'NìÞ½»¸¸¸½½ÝétVTT€«çªðšJMMø½‰€¢’\”Ê¢ 7ɤÑ.¡-B‡7¿ŸGúG ÝrÄG ‡;¦á(t/ˆñÍHÒ׎'o‘î€ZD"¼ßõ¬`ïh©…ÕTºÆ0”XoD°ˆ1?UK´šH£ ‹¹ßï?yòä{ï½×ÑÑa³ÙZZZæÌ™x"ˆŠ x‹¯cúBVжIJ‚ÀØDC‚–vÃÁ†BB8Âjµ‚0Žf‘ÎÅ'Ü&æî%%%øpèС³øù×¾öµmÛ¶mÚ´é©§žÊÎÎ~饗ð}EE>ÿò—¿ìïïÿÞ÷¾7©ms8ßøÆ7®¼òÊó ’~.VVVööÛoŸ©æ7Q&Ö ³B¨[œ†zâ¹?ë?ÿó?]ÿØc=ôÐC(L8þÞ÷¾÷ÓŸþôë_ÿú8!Ͱää䢢¢¢¢¢ ÔßÙ½{wnn®¤]•¨„§œüК¤>…ùý~ý—g”ôpB̰Óï»ï¾ó\Œ eg=†Ïy<žššš É,±`Á‚'žxâü$©˜²„Ñë‚/»vízúé§?‹Å /^œ‘‘½|uòC°w¤XÂÓ ê?BçÌSb ð=4÷í)fœºÐŽÒÔBîe¢7&íι>1¶‰Pt2RÜ@»€!&‹þË Cšþ¶ÐÖQ™5#oéþ|—¬0¶ŽˆÅEñù|}}}ùùùDWÇ­¤À´³WÔ†zj€áH ±$â]YÑÃo¥Æã§z@Š@œ˜.£‚äKÓ•ðœ C“&£2# ­ää䬬¬ŒŒŒâââùóçïÙ³ ôƒƒƒ)))OpŽf ¿³IKâ ÷R‚¤Nñ~‘Þ¢bÓ÷Kä]1¦ªÎÝ9ÕÞ2ô]…ÞÂÜÓÊPHß›¼<¼…¥ñ@l„6S8›Hà'Ó”Qܦ0”“+æHÚ[Ü‚Äi㣣HÜÑÑÑQXXØÙÙyüøñœœœU«Vñ’ŒŒôôô;v, ìØ±Ãét.X° èq1–Hñ”F5∳ÔVмE×(:|º†3õÔxÈŒnëõz÷íÛ×ÑÑ‘••åóù;::Ö­[‡UŽFÿh*µ3‘ dáé¯XY_( nÂahiºÓ\|JÒÁ†~ œ1þ=…nFŸ>Â%ÝÜ°â‰Æ3Ìd2!Û˜†’Iqsã¼[…ÑZ!Í}z Ñ´•)––_é‰èˆÁÁÁíÛ·744¡«­­ÍËË›6mZzzú)›‘–eP+ø^°µiä üDNß•à )ÒJ¥oRŽp !À¾Çz{ʇž»M ¼åv»322úûûÏÞ2™LÏ>ûìwÜQYYùÃþ𪫮*((P¥¢¢âСCwÝu×_þò—-[¶€¶p $—óó¬s±3UJž<Óg3ä©ñ&6ÙøÏÒ›Ùl¾h3â]ü%”VɳHz8!v¦þfóMàZtñ,kÿvúÎÆ…5Ú‚?¡ŠúúúgŸ}¶ººªL‹-š1cαU‚…¢iCPÆ48ÆŠ.}¡Ð¼)x¡Ü½"F1R,‰ªZS B?Ÿ—l¾ÊFøù®(!Q´¨œÕ/mÄõ~ ¢S(6/3 @í£ÄspkÆŒ´]æÛ}jÃðúÿÒÞZagþ¸K†¢(JVVVjj*2Ôàï$¯^Å’D3Hõ`ŠÐ­“4Ò¨j‚á’\Ý™ß:BÂSMHï(rt[ª÷¥úªšÒöøË»„4É—)“É400ÐÖÖæñxŠ‹‹óóóÛÛÛ?>kÖ¬œœEñs‡Ã1kÖ,—ËÕÙÙÙÓÓ³wïÞâââÜÜ\>†MZ~UZ‡è„Ãa?³‰¯Ò"nP˜~“Ð!z¼Gè¯à-Æb±‘‘‘ööv¯×ëñx Oo ´jCCÃðððúõëçÌ™‹ÅvìØQ]]=gΜÜÜ\´ž.áµV™è ? 0%Ð×ÇT¥YF%‘,¼°ôZcŠ¢D£QŸÏ§ª*N}hÄ‚³¬S(,ɉ¢¥7åÒ7ÔiÒ(Ò±„!ä1>\ÅKfJœmµµµN§³°°oi âcCzÐø‘Ÿ®çÑŽ±X ñ­.—‹„·¤ r,¶”xA0 EéõÇÞÙÙÙÐМœ\UU•‘‘qàÀ÷ß?//oõêÕÈ-ÈHŠ §åˆT±¸~o"þÿjæë½‚9y–Lš_ª‘`(çü-§Ó è÷§“Èɳ ÏæÎ+Ζ½%4•gŸ}öÕW_-++ËÍÍ­¨¨X¿~}]]]QQÑÑ£G+++'µ!¦ì\ìþûï§SˆÕ«WoÛ¶ ñ}0$ ›(¤vügé­¸¸ø®»îºâŠ+Ö®]«(ÊÃ?¼sçδ´4¡Kî~þ /ÚqJxÁ èñùtZ{’ìL;ýÌ.æ2e-3Üw^„†}’ÅbIIIÁ¶µ··÷±ÇÛ¶m›ÏçBÌž=ûÊ+¯,++£ÔãØ¢ÅZ*Ð[á±N†BäXr£bб¿`»R½".Y3  M$%j¤P/R‚án”ÒQhˆ…öpЄׂ îÒ÷¤ÉEèÁx4wÅ¥ºóŸè»†Wp=C Gò(ÈôL(R«%7­²3¹Á"’|4ãØØØàà`gg'!;ˆ•B·èVhóX,F¢þ’ŸfXA>H¤Z’tòLxÙÕõz½Bˆáááêêê§žzêؾ};p`¾Pj—:BÒÕú Çäää´´´’’’Ë/¿ü«_ýê¿þë¿ÎŸ?ŸëÙKX5>sj"þ\éW"¥â¥%¤€78áeÀï±¢G;IÃÁÉ»FªCŠTâð´´Dðg¶L,^Ü]òÀ)‡ À’É;UMþ*¿)‘éá!iv¬“¢ zzz¼^ïÂ… ‹‹‹SSS³³³¡³)ý@ $//oùòå·ÝvÛŠ+Y­V°3¨}$蘀¤jÏ%Ì9ÙVPš©_«y9N¼2Ž?~ìØ1èˆ!‰ÿ öôù|µµµcccÓ§Ow»Ý‹%55Í Ø—½é×=é'BcüQ†ŠD>QÌH®NQ’¥S#¶2Í2þjà%$`šÏ‹D–è¡Ò£MF"YB·LñR à¥ÄÓ‡¥‘Àoe6›333³²²ÒÒÒ8ù”¯Û\RÿÞ×7Ò§¿R£éOªF¶ÙlHSÈÓbHK ÁIxPOOONNÎܹssssfèl@ÒGSÑ•¿¾¥©MÚjúŠ+Œq¦ïGÞGªQ‚Eý"/ŒO2Œy¤¼´Ùlv»=%%EŸûxÂmÂBçÏŸ¿uëÖîîîžžžìììñ/VNµ½îééAÎo!Ä7¿ùÍo~ó›“Ú ’MàOYÓ‹öægýÜ÷Þ{)"鳎;öå/Y/R~>í©§žúÊW¾r1—0‘KÏNàXVVV6©…œ<»à#dýúõú/'ªéjkkøÃNRÉϽ?þñéóC=ôƒü`’Š:©vqŽsýW122©±±ñþç^z饞žž¼¼¼ÊÊÊ+Väääொ9!­ÂGFFè¿BŠéà} ‰E”ô^Š`‡Õ&#Õ$a¤L¡ª*)m‘v=‹ÈSŠÆ”!•ót(*ÒüÑî“ó°ø7‹gü{Ã}ª!F@'ɤ¸¬o45>.Iú¯ô8}Qé¼Zeiù>žßŠ?;i³Ù ô%›ƒÇˆñ꓃ 5¥è§‰äsrÐAa”"É!=a塤™|»®;vìØ³gÃá v‚`ôq(Ò£#™!©Ýn7îÌ›}œ¹9ŽQ×Ðüâã“WPò¥ûHp ÜÅD)ù¤Ù§2`šnbèÄÒõœˆÇ©m çËiÖh|3ôäù_UÆÊ”*Bjáp¹Yèz.¤wÝ û žœœŒÔÈ ™––­üvpp0‰äææšÍfŸÏ×ÚÚêr¹fΜév»)Û&/<XÖ¤)Ãë¥G ¨‰Ê¯ÿ2÷ôô 8ÎåË—£¿l6Þ*Ó˜‡~“Ïç³Ùl‡ƒfëôéÓ‘M‹¿ ;7ÑŠdhÒj&ØË…w§ÃpÔOäOÄtÆÁÅàK€Î8åä“` >}C‡I‰ HÃ÷ˆ~ΊxÀWUë!fê2Ëœ˜”””››«(ÊÈÈH"¼[Z󩥺5ŠÿÄd2¥¤¤Pî#éýEwÖ faÝ9k•-((˜;wîèèhss³Åb)--u8ü%(ᆊ–ÌWÕ‰'p‰%ž>,UŠ·€Â¢ù¡‹ªA¥ãŒgÞ†*¬ÚêŠ\«œöKBi“g oáCMMÍW\1þņµŠD"ápØívó/NçÐÐÐd+q+**ºë®»¾ñoœû­”³U…8¥mܸÑår=ÿüóç­Y`;wî\¹re,ðíGÎî¼óηß~{Ñ¢E×_ýºuë.¹ä’I%Lz<ž­[·.]ºô—¿ü%h§=ðÀ¿ýíoÏå&ßûÞ÷žy智ºº ]›ÿg&“iÛ¶m<Á}÷Ý·yóæÓLüú¿ÙœNç÷¾÷=ž#âž{îyå•W>|î7Ÿ={öu×]§Ï¨0!vŽ«ñÊ•+ÇÆÆ>øàœ­ !,X0åœ2|9³Ù<<<¼oß¾Ç{lË–-@`áÂ…7ß|sqqq èïïOOOGQ$°Bw|Ï8źhE§ŽÄËÀÿË·‰œ™¿J7Ñ{\Y£Ã[ýq7‡ÛàKðãh§Hä‹®ØAž$Á# ƽééûX¼º`Râz¿Tj.©(öŠ#"ùQ*“¸æ[d€(¥:U“» ˆ ‰i‰ê%DJÅ…®ˆUqÊ%‚ב·õº*úvà~,ÕѦA7{öìéëëCþe‹ÅâñxÀlÂÍf³>µ–¾¿ôÐo1-ß<I|¼ÁŒBh(-†:ѯЕR\0]&µ9Àè;aävž¦á&˜„ò‡RGÀ=¦±dˆSëq+ Γà6C,Fê©D‹Ôk<Œ×Ä¢ÞÙE¼@»I™â‰DàŽvwwD£Ñœœ§Ó©hüÖžžžíÛ·Íž=Ûl6·´´E‹]rÉ% Iho&- \0ˆG0¤IP¨LzŒ0ý ƒãCCCmmmn·;;;Ûår¡R1&ÎÛŸf¢ªª”ËéÈóóóÙ¦_ ƒH8ˆTqÁâ£õ`´`è‰)^[ʰ`xÓŒ¨Å‹)ñÜ1ý@’Œ`2>¢¤ßê‡7WŽ3èÌ‹'½,„Ñ´Â{XÏ"¶Àûšzœƒ¿4¤—#¿.à¤Dêb24>Äã¼heB`Œuuu;v,999''gÞ¼yXðqÜbØe¼Yø–†ãYÅãëªÊ0SºÖgZ'ém5þr¡ï>H¤wŠ`Ó™âÍ'Ï& 6¢½þéÀ[zûáø_ÿõ_ápøŽ;îxøá‡i £ƒÏ'¼5eÿ{¬¼¼üõ×_?vìØ#<òË_þòî»ï6›ÍEEEUUUsçÎ-))ÉÏÏ/**ÊËËËÊÊ:£; uvvvww···wvv8pàÀÍÍÍ~¿hhè+_ùÊÿ÷WTTþVJÑ}Aìb(ÔMÙ”ý¯5ìÎGFFþþ÷¿?öØc~ø¡ªª«V­úÜç>7þü`0xüøñööv»Ýîñx\.\›ÍϤ-Nǽâ•+iÓÆ/Ó#tCÖÐq €;W”MËH¦‹g)L¯Zhðz%&Ž— ³!yøúÌï¢ò^•q„ÌÛÔ7¬dýñÞ ÿÝ”H~¯Ð€””“ÉDá~&-ØS-â¥â Îeû9ÜCPã™"ÞgSãÍD¼O‚3m‰NE>ÆþýûwíÚµ~ýúY³fQb±X‚Á 5W"Ç’÷ ž%á)˜,Bôáµö†hï îœã{âHí©ê"E¼ËËF%ä#İk8¤u€+PQ2É3¬²Ô8†HÔ5Ò—ÇФÙG?Dq5É—ÚÙ°¼•233ívû‘#GL&ä´FFFˆü˜’’âp8Nœ8FsssNçUW]•–––’’B\N=D%´é îª4k¤uF$À)ÍG©v¡PèÀ£££ééé‘H¤¯¯Îx.ÏWÀÊgGGÇ‘#GŸXRR‚&•h’¼„Ò£ÂÒãcÇ|"è{Mš,úE;‹Y,ZÓxÓñÕp:þUZÁ Å×:ê&> Ñ[}u¤‘¨a‘H¤¥¥ÔB=6~ ¶ŒÐ7Ò EúàBÐH Ë©ª*sH7Y“¨ðxõ'%%M›6mõêÕ;vìØ²eKEEÅâÅ‹+++].—Ð2èFÁ–q©: ~”Œ~ÒIã:”ÇÏêQ©y…n ëËL`Ðí¤¤$«Õ:Îò8!6a°ÑìÙ³Á¨¯©©9Óßnݺõ;ßù>ÿö·¿½ñÆ×®]+´ .W¹›²)›p›5kÖC=ôÐC566¾÷Þ{»wïþàƒÞ{ï½ááaº&99Ùív›L&«ÕjµZ“““¡ù £££ "†j0ÇSVV¶víÚeË–}ë[ßZ¹råO~ò“D…QUõÒK/5kÖ7¿ùÍÅ‹ŸÿÖøÉO~òꫯVWWŸÿ§OÙ”MÙ” ¿}ûö‡~øÃ?4™LŸúÔ§n½õVÈ«ªZRR2::ÚÛÛ[WW7mÚ´X,æt:Im Nt¸…€¢Ñ(² A«,Š”Œa#‘btäKÛJ•©ù¨ÈHFT…ýäi°¥!H t:x¨áT$®JCÅ£¢‚¥EXA{Dò"”AÕ±ÌHF¢{  PH´'ѦÌf3ÿ ÿÞ}‹…8xTÆ“~§Ð]ò) ßS ·]¬( É┃áAÈ ªøÄD­G‡öÄ‹¡=ªÃ•b¨\З—÷àØØXJJ Æ…x¨¶5::j·ÛñôÑÑQìø¡¨ÕÖÖöú믣.­­­yyy8ë•Ä¡x®.IÀÀ“NÔ¿©jÇÆÆˆí(â]qÞ\¨)?ŠçÎ!>à&¤ûÃgŠ ç0Æeš˜h7OÌM¢fØ6K☠µ*¢ÌHÚ㟒ª ޱ||jp&Ma*˜ßÎáfrei~%’IÒ{†t%Í>ø%èGÂ…F-ѧ’à w3«j}úd7Á”M¬¬¬¬¬¬ìsŸûþ;22ÒÖÖÖÚÚÚÒÒÒÜÜÜÜ܉DúûûÃá°ßïô’NMMʼnVjjªÕj-**ÊÉÉAbEE`xؽ÷Þ;~Ey饗¾öµ¯-[¶,//ïŸøÄÆW®\yJ=»s±X,vàÀ7ß|óÅ_<|øðµ×^ûÎ;ïè3OÙ”MÙ”KJJ …B|ðÁÑ£GGFFGzz:‚³@Ñ“¥¹¹Ùçó…B¡´´4¾9¦¤`úCEì•ÁèjCû8› ÚhJQH¸‰t‚*Ø^“âé°¿ÄfÝjµRÜ¢ã…oãxÒ£ T£ÓfIÊ€‹oªvj­(ÊÈÈH(Rbÿìh› ½3Ú‚ÓãÔxnˆ¾ð´·6Å+pÙívà/’N5,!ŒÆA—QÏ2iyîÆÆÆB¡TNÃsl}I[5RÀ‘œ½óÿ'”“‚¶âtvv¾ñÆÕÕÕv»½µµU±`Á‚k¯½¶¬¬Lº Buõµ Ž&¾›¢#,è=@òKE¼s+þëk¤ŸA ãeHXX,>åå)‘ qÚ“ßÜqÀ“\GìÓ Ë áh4/¤æ’j¨:|øÈ‘#ãü mÞ¼yô9--íãÿ8>oÞ¼yÕªU“Zÿ)›²DfµZ§M›6mÚ´óüÜÒÒÒW^y¥¡¡áüãsÏ=÷ûßÿ^áv»g̘1wîÜÒÒÒ¼¼¼¢¢¢ÜÜÜ3ŠšŒÅbHÚÐÑÑÑÝÝÝÒÒR]]}øðá¶¶¶H$2gΜM›6½öÚk999U—ÎÎΦ¦&Îe›²)›²);¥%%%Ùíök¯½öäÉ“ï½÷^__ß /¼000°qãÆÙ³g{<Ec…øýþÁÁA$N" 'J¤Ä3 `äS ì#ÑöÝðÐ’og¹“ÉOªi£ ¹ÙÚÚÚ½{÷z<žõë×CûütÜõDFð›Ðé=w mýõ²/tg:û…šU$9qâD]]Õj]¹rejj*5 Ý|ttÔï÷ãˆr¼Ñ MoQcƒÁdψÃ7ëœÉÂ[€?‹Æ€”2Oa³Ù@ê …B"äŒb2¦':ñ¡ÂGˆÉH¨OAîB0ÂᰪѣÀßþö·çŸ>##cýúõV«õoûÛûï¿¿råʲ²2I7€‹§˜g$´—Zƒ‹¸I0o=OôÐCQ­ÀpK&˜Þ áPšnÂÈ—  ¿Ò" ŸÑŠ.µ¡räÅI0%È'â]ý J4à‰à£Ý$—O=• ñðN4·Ê@Í.Õ‚r­ÒmÃápSSÓ»ï¾ëõzAžµZ­`ÉmÙ²åèÑ£>ŸOQ”3f¸Ýîüü|}ݹK ¤®Ä'¨¥òHM!ÝVZá£ÑhsssGGÇìÙ³×®]›ŸŸ Oœ8144444”™™)Ý„†‡ôjГ€hÍIÔ³RoêÿdxçD#ŠºL=C4ÚäŒ|ðDPŽÐõ….“&š4­hÿoˆñ_©ñØ–¢£tIDщÖ=jZ—ø@RŒ¢­ù|‘i¤ h@3šÀ Û GG´: …©„ŸP ~©´†s$$YÀÛ„³† ûN5¼xê.þ¯´!éO¿ˆÛ{:¨Ù¹ØDÂ[ ,xê©§@ccãK–,©ªª ƒ·ÝvÛ-·Ü’ŸŸ/„8yòäÃ?¼wïÞI­ÿ¤Ú§IÜuç Ä5¹Ìp7É-AñFFFT–(@è|3xD N„Ãá¡¡¡ÁÁÁ‘‘‘œœœŒŒ d§:†N¢’Sd7Ñ×è”Û¼}ÁDÖP£ÞÞÞýû÷gee}îsŸ[ºti$ijjjiiA#?B¡Cí@ôH4›±·ÞJ4Æ8"!€†ý(9QÜc7á4ehÜJ?×w+og=vC) Õx@“ ‰á'¤ËZ"Í ^Y¡¦oŸqÚÄÐ8ÇA0ç“îCcCš¹†Kyȼ]Ш7§êP9þ¯Íf ˜VÀå÷ìÙÓÚÚ 4Vh2‚)))+W®lmm=qâDoooWWWNNW¯ãí‹Oè&u±¢ñé¤i5NÛòÁ Ç>‰ ¤§§¯Y³¦¼¼\hxAjjªÍfaV`ú5œÂº Ç›!t¥Ÿú2+š´ß8ëƒÔãàm¡#N_úLù%‰J‚œƒ£h*xüý.4=8Áp%¡[¤ÆÑ÷…áb¢oRR ÔÿÕðÕÃ秤kÆï&ŽÅó£ý­¨SB¡PLSp“‹šÂl6ãõ‰D !j±Xp\'tð–0Z$†@Cˆhb<‚’OüD­*uD©–®áMM}­°” qÁ9998PT5èüFè©m‚Ù[øpòäÉ3‚·,ËO<±aÆ–––žž‹Å²eË–{ï½÷ç?ÿ9 ®¨Ý}÷ݺSö‘·¼¼¼o¼ñÆoÄc±XWWWsss[[[[[[sss(Âáy8Æ•§°°0##Ãl6geeY,„Læääçåå êÔÐÐÐÐÐpäÈ‘ƒÖÔÔœ8q"8Žh4‡¥Á¤FVNÙ”Ž}á _¸ÐE˜²33l¦+**RSSËËË_zé¥mÛ¶ÕÖ־𠙙™³gÏFžeäFLJJBFKø« ’ðL^Dÿl[† ;ìe)x„`® Å(!h¤‚×P‰õ„Ãáîîndãš?>$`°s¥ý7îSn|Oô~ÚÑLh.1§/‘¬>%í¼±,ã¬X02rŒ#‘ˆÕj‰F£»wïNOOŸ?¾Çã$Êp҃ƹç{kª/!'wÀoÉÏϧ¾AWnEÉ%¥Z(L4$ ;vl×®]‡ÂÑÌ™3¯¼òʹs禤¤bEH·’0DŒ(…ÅÂK ‰“¤¤$4¯IËtFø’/%¨¢ŒrííííííóæÍ«ªªòx<]]]&“iùòåùùù.— \3©aÑ€„’Û1/bs𶥑âÀØØ(9†ãœ¼2Ì,øf1-Ý$5>“ÜÛèè(¾Ð5ð~ÉCˆ%é(Qæ/"#Ð_MLH4ú©Œ³I` çQo ážšQÝI+î ÝUþ+Ž‚ážø ðIp§6HO4ÅgÇ“!á€T<‰%´€\£7r—£B">,”ƒˆ 244T__ïr¹“vŒ‡ÌÌÌeË–Ùív§ÓÙÜÜ<22âóùˆǧ˜Õx&S~¤ó €Y ‹Ý¦V‚dJ,^õ\ÑBðHû’©H<- ÂTÃx?JƒAÊú"5—àÔqÓbH³ŒóªTÆlÂòÛ××wèС#GŽ Øl¶òòò3f@åo È#Òé­GIdU*0ÉzƒA»ÝNñ¶R#K}A í.èÔa`ZÿŠÇ~†^jª}Ìc%ªï„Û¤À[---gúÛ 9räûßÿþW¾ò¿ßÙe—½üòË .œÔÊOÙ”}äÌd2åççŸgØ·££ãرc e8p ¡¡ÁëõÚíöX, iÅÅøQT\SYYy¡›mÊþ·ÛÿøÇ ]„);ãƒéééÿøÇ,Xðî»ïþᨮ®~â‰'>÷¹Ï]rÉ%ùùùv»±'@pUNNŽÛíNNNŽD"]]]ÐFÄλIò0…æR ]B%þ¥¢;·'íg¾]&œ [R¦4778p ¢¢\!³ÙŒ„JÜã…WFêÔŠŽP@Æc^ ºžo²%.}Éo¥w6È¥ŒD"ÝÝÝO?ýô‘#G®ºêªE‹9ïoKÖ—Y¿ñ•*hX6EK²wšTêñ%/0ù‘QGîÇÁƒŸ|òÉšš¿ßÎjkkkii¹æšk.¿ür›ÍFH×ÖI…Qüxi¹ç ôGUÕp8l±X òrÆsw‘œUçUv»=%%%‰ WVVVVV‚h6::ÊÓiNÁ\erá !ò‚FGGIë—®‘0 ~ÞËD£CAƒ|;V«Õápdgg«,ÒŠ32¸;Éó .Áà E¼…ˈÇa8¤‹oâP‘ª DBÖÖÖŽŽŽÞÞ^§Ó9oÞ¼ÜÜ\¡yËzf"7O*o|=² 5€ôsÙÐ…š¢|+ZÌ,ÁLÃÃÃûöíËÌÌ\´hÑÈÈH{{;­`±X »»ÞÞÞúúúp8œŸŸO’‚úzImÎ+Ëã§>ê›1Qøm;;;ÛÛÛ±ÚûýþÒÒÒÌÌLŒ “ &4šj$±Ûí‚åáb‰Æ˜X»Ïåà4µö)ÿ«_ä%l‹WYÂ8T¼ž†«Ô#ôYjM·’m¢a#ݙޭ´’¨Œ¡yÊ›èß,j:‡·ã/ëqœq浤)>SJ¢)#Í_~™ÏAl ŒRÄ+÷«ªÚÞÞþÞ{ïíØ±£§§³k×.Ç3gΜ«¯¾zöìÙ$Q‹×Ê”ŠÊïÉ?БŒÊ*Å©¶*Sµ“6üµ5þØ #:‹Oü<„õL$¼•——×ÙÙ -̳øù¯~õ«I­í”MÙ”¾577···§¤¤¨ªŠÃ|$u‚y½^~±ÕjµÙl8g(**š={ö¢E‹fÏž]YY9cÆŒ ]•SÛd/µS6eSvv0(++ëºë®3™L¿þõ¯wîÜ966öOÿôOË–-s¹\Ð4›Í`⨪Š<}ªªƒA‡ÃN°)ɵèÅJÈ"WaÑF0é0_UÕäääæææ×^{­©©) ççç—––ÂÙ }?0‹H$¢ÆÙѳôð„~?*ùü’‰x7›\îI‘˜}}}‘Hd×®]»wï:xð ‘(@IÿI÷”Ü~ÿD±„î®Ð2Wr0‚ß™ƒ&Š¢€…„ý4~>::º{÷îþ«ãÇoݺuþüù»ÅHPu ¤ôE•\ úcodd$ z½Þææf¯×k³Ù 233ŸB9[$(„à-§Óét:ÛÛÛ 4gΜòòr °Ì¸g¢&`Cðvãòp‚É?™Íf·Û ¯^‰SSù<Ô•xõ«ªÚÛÛûÎ;ïìܹ’ë^²dÉÒ¥K\I1’|¤ÖC-p™Õjåé2cZ¢CrAù äâCN?üÔxv=^ …B}}}CCC±X 2êD=@F!ºú‘o8+…ÎiF¨ …UJsYš ú±Ç¯×SÆxÁôŽ1/3R»ƒÁ–––cÇŽ¥§§———S28Š•Ck‡ÃáãÇ9r$‰¸\®ÌÌLÐÖô`_¢)3Î÷Ôƒ¼xzŸ¯ ‡£¬¬¬¥¥åÈ‘#½½½999ÙÙÙØ¾ªZ&rïcñ²ôøfhhh`` µµ5[­Öœœœüü|dN'>¯¾ÍEü B_xý")u ‡´$˜F5 ·g ¤‚ ä&Î3’†®ôŽ“*H8¦cˆãè++Ù8í ¿FBu¥‘ ýŠTŸÔ±oD¡J„¦¾7O§j‰^ͼäDdã¤ì`0¸wïÞwß}K j122Òßß¿{÷n›Í–———žžÎá8M•:…^ü%ŽG X§T6C¶µÐ¸·z9E¡½>Dü[^ßS|é¦w«`™rX›HxK1þüÎÎÎîîîI-ô”MÙ”kooÇë\Á-‹Å¡.¿ßo·Û+**æÏŸ_UUUYY9sæÌâââ ]ð3¶/}éKŸüä'/t)¦lʦÌÀàq9N»Ý~Í5×x½ÞGydÇŽ±XÌétΜ9„EQìv{$ …B`(Š×¾ÅLqùì¥]/d*¼*ŠB‘´¿äçöp_yå•7ß|sÚ´iÇß±cÇôéÓ¯¿þú¢¢":M…·,„°X,†š) ÖDµ¤Ëôs¢=:§ºp£ \³{÷î·ß~Ûår-^¼ØívoÙ²%--íÒK/¥ žDzzôJe1nt™Ð¹÷Òæ˜ruI½“È)¢¾ƒªšÅb‰F£'Nœ8tèèEBË`°¦¦¦h‚œu *íóùöïßÿæ›oÖÖÖúýþ¤¤¤ìììU«V]ýõyyyúSkòRÐ8eee«W¯Þ¶mÛk¯½¶jÕªiÓ¦eddàÄÊ,†Þˆ`î´ä{Hðµ9‘ Á4$ñ5%žˆ§7iÔ¡gEimm}ê©§>øàƒ`0ˆÝX,ÖÚÚzøða³Ù¼hÑ"¤á#Ï“Ã["^É&ž#åÔÃgŠÒ•ŒDB‘&‚›cÀSƒ(¡””—Ëìv;®ÇÐ’ÒMrWS‰[ÔOÀD˜MZ[ÆlBCú$Ì"¦Ù8LÒþ‹Åzzz>øàƒ¾¾¾Ë.»¬···¿¿¿©©) ½üòËf³yñâÅEEE€G³²² ›››ÛÛÛ+**¤v¿©Ç)!-2¼"ܦLÕ4†¬VëôéÓÓÓÓñ8·ÛM‚Œ| êsB~¿Û¶mðù|xSx<žY³f­\¹²¤¤ÐX"àÃGÍOyHó—Zìtà-^r=—ÊFK(Žäcõ”½ }àІt™¢‹_ÓÛ)ŸxÊ’HsGe§>Ô¹Ô ú›ð˜S}_¨F%r†52%Î>Ámll g qaéêêÚµk×àà mBhðƒÁººº¦¦¦””œÕqÐ AÓ‚Q˜éÌ€“æ(¼¬Lo+AoÒBD 4ËøêJiˆ '¤Š€V%ŒøÜâÆ· †·fÍšõæ›oò#²œ)g˜râ‚ØyS6eK—.ýë_ÿšššŠ#/¿ßŸ››;gΜ Ìœ9söìÙ3gÎDþ¯º\èR|$M1’û9;3Ì<=eÿÀvJ‡‡ô¤æHOO¿òÊ+;::6oÞüá‡>ú裷ÞzkvvöÌ™3=Ýn‡KL¢Zp†±ÃÃѨHLÇ5§& "â·ƒ‚¥íãè‰ï jÕÕÕ;wîœ={ö§?ýéüüüW_}µ¦¦¦»»;''¡=äx`¿+e˜ât°ÓÉæÿ’+ËwóöDÿåÕ$o_°@Kˆýû÷çææ~⟘3gÎÐÐÐ/~ñ‹ÞÞÞp8ìt:Ç9u'¤†;…館ñ!r‚3'ò—€h¨Z¼!ÝÓpÁ±‰Åb]]]V«5‰ìÝ»yNè2’9 …BLJò4îM_ÁbUôƒVï«Ã߯çƒ>xê©§š››QÙ±±±¦¦¦ÁÁA›ÍvÓM7¥¥¥á]ʈVÍÍͽá†V®\™œœ\TT„ðLÜ ‹>|ÒÐI“:Eă‰4Šl6[4%Q­P(„¦ J#á8\ëMe‘2&“ šýÛ·oß»w/pC’ñ¶Z­½½½o½õôhÈÿ‚Ç…î 78f˜ËÄ_à4*’²òI-ÀQQ>öø÷ªNy=%%¼uEýAQ‘T¶*L…ÇÐ×ÅS8„WÄ›æÿ’û*˜W¯Æ EjXŽ ÇŒ$´E@¨:1¾A’Æ­0B¦ø_Ë7G¹_¥±Ç$5²áÐ’@. ¶Vt!#“®‡D#)ˆ‹ø4£|€B²VBÇS×Ç4U&øÏK®Õ|¡&.Ša‘Á˜!Š·~ÔAø\0Í>i¹´í¤¥•0JºŒ¾i9ˆ­V+`GGG;;;;;;©õø’h2™†‡‡ €!âMÞwLª§VB®aܲ1²>>ðºK@ª ½°h°ÑQ„~ £  —O]™””422â÷ûD‘y’l‚á­ÒÒR!ÄGÞzå•WÎHÿ‚دýëÓÏ£1eSvvöÉO~òСCóçÏŸ9sfeeåôéÓ'{=š²œÝu×]·ÜrË„ÜêÙgŸÍÉɹК² c†Î6O‹…§*))ùÔ§>522ò—¿üåÝwßMKK»þúëgΜét:c±˜Ãá rÁr ælƼ+Î' GS˜¬;'Hr’€/T‘³]__ …V­Zuüìì윜—Ë…M2Þâ‡Øscχ¡ÆwUDj¢˜&}M'«¤CiÛ-˜c6 ( pɨeÚÛÛ»»»/¿üò9sæ é˜ËåJOOOIIñŽnŽý·`¢f”œ.Ÿ¶«áQ(ñÊ,„g¡7£Ñ(´«AÙ#“ÞmŽF£CCCï¾ûîîÝ»‘m`ppÇã¼Ìðˆ†††Þx㺺:¿ßⓟüäe—]æv»¹¤±!,"9Þ(Fmmí+¯¼ÒÜÜÌÉqªªz½Þ]»v-[¶lÞ¼yp{"wf³Ù<Ô‚¢Ñh(r8pÎÝn7À;ÏÜÕGÑr°Uï´àçúÂSRR «D„B9h(ò@ü;44tèÐ!¯×+ùEpo:;;ƒÁ é^ !,ËÀÀZ¾¿¿ßçó•——Ïš5Ën·c$+½‘€!ŽÆ ÝÉ éj‹x·_0¼‰Ô—U&Ö#ÍbîçsšVÏ|U!t˜CE4=E”GPJ } W¼ôƒ_bU( £—‚Œ¤ÕŒcf³¹¼¼<;;O­­­ýàƒ –,Y’•••‘‘!4BP4…”ûÀÀE!á¡P0¬”¢)4ñ‰@-IE1 )Ì–>eÒ’º*š ¢` qrÕxå5,/uuuÇŽ>Ë›+¶´´`&b‘ ¯ä°ˆÊôû-%•ç+€ƒÑ8V«Uêq‚“°0Ò˜áÊè„QSàn‘Hç|½BS`ÁAIh5¦–á /Š Ç[Ih¸ MÄ2リ ‰³‰§ uuuáp‚ój…ÆØ‚:-ì*‹…óÏsšÍfzËHaà/´h¨ñ0à$}”7æ)½ï8¶…Þ¤C<ûÔXñ=žÁŸAÂ4t:‹Ç3 [b áyB „Bey"Ô‘‘Z*1BˆlˆG`¡ì‡$LIõEÔ[(‚æð2˜`A܆V(òûýŠÆé#¨Ž¤ôj2™§Ëá¶ô+´^LKÙ‰°q‹Å’‘‘át:‡‡‡»ººü~¿ÊTê(ÿN ˆÝŒñáÍ'& °ÆÆFÓò X–aBˆááa5ãYN§3;;;‹uvvbObµZSRRpÒ&´Âg•x’¯~–ÑUFS5|˨,X0SÔÝn·{½^Z&Ï&ÞBb‘Œx¥)›²)›l{òÉ'Ÿ|òIúïêÕ«¿ýío_èBMÙ”MÙEdÜÁ†Òf³Íœ9óŠ+®Ø½{www7H¦.— †Ð±6hÇFŒ!ÚË ¶Ÿ7Qtݼxd8h…Ã=š¢¢"“ÉbÓ(ĉî7,%%¹öxh!w%$‹\8½»+Œà-òîDUo),öS$v<¤ZÀåøàƒª««›››‡††"‘HNNÎìÙ³W¬X¤ Ù$ª»¢··q†‹€ŒGGG÷ïßÿúë¯××× ðRUµ··÷ïÿ»ÕjõxgBŒ™¢‹P–b¬¤é&ø¥GɹñnË;H?Oa[„Ät*ãt«X¼ä¿4Ccñ‚eÂöâ´ ¡Q/‘©ôX`%Á`¹<Ooo¯Ïç³Z­'Ožlll,--Õ7_뾡/É ÆŠÁK²kRË!0CÁ ˜b2™ìv;²y ¦¥¥eddP‘8ĆUxœÏçB€h#â‘#hí9Žp8ì÷ûØ‚‰D222ÒÒÒPZAÓŠÆ- L|ð}(YÃ`å~"l…Ð+‚]J ‡ÃˆzCÛbý!¸„GÉá郣1©Ä‡›Q«JhÏùË)”„äŸP54E ÒZ$‹^:€·p ‘È(ø”c+üdHÑr}b|R2 Z]y¨E/¶,5~8îíí5øààÁƒÒê‚™L¦¬¬¬µk×Î;7ƒÁp8ÚÛÛC¡PAAAii©ÇãñûýõõõÉÕÕÕV«kxRRR[[ï”””gdddgg{<\“²1¬¥].4iµZ¹O”ÞX| éCc½†‘i6›ív;ðNžM0¼?¼œþQíÑGB|á _¸ÐùÈØÅÜbsÙ.þBž{ÁÖ¬Y3}út|þÅ/~‘žžþÔ>çÇ.òê_äÅ›²‹Ä%øgìÂÍf3N#çÌ™3gΜmÛ¶½ýöÛ+V¬€|žÊôP@!—@z!PErza釆EUU5‹™5kVmmí<OYYYvv¶ÛíÆYtZZApgx&p ›ÅУVtº°’qŠÞâ·2ĪJJJÒÓÓ8””4}úô²²2¨>©Œ›£/ Ž£{{{ûúúÌfszzzFF†Ãá  j¥ÓÙÚrÚ—ÃÁÁð'–’’’‰D pfÒ$ù¥.›6mÚÆ‘|àäÉ“¯¿þzCCCaaáW\±téR%>âf|KNN¶Ûí---‡ä†§c8bÃF(VàÓž8qâ‰'žØ³gO0TµX§¶¶6h„Í;—ßœKÿ¨F¤˜ñ-‰¼þúëüãûúú(&·¥¥åÀÇŽÛ´iÓ´iÓà1êÉ|üÀ!×ߟFÂ-ü¶´´ ©õ*HÍÍÍG޹ôÒK UáÎ*—ÕOTG='M 5ž ¥ åÑ×ZBiLJ·8 FŽ:é×p¨‹@+‚EüêÄq.^}ÝAZQ5J޾úRˆ®¡Aw ‡žµX,•••EEEt·‚‚‚ 6455E£ÑÊÊJàò”hè?4x3êY‡„UE-ˆ.¦048ϱXÌëõ¶¶¶ X,–ôôtDRC Îçóuuu9‡ÃM= ,…œ—øýþžžž¶¶6Á«yñÆÆÆvî܉ c´ ¢z‰¥h¡ˆ‹DE¾TÒ*„Ž£€qœÇð>JÒ ï/âña¯ÄgWdŒ4ÄòÓ•±XÌårA‰ kÈS8JÁ‡0ô;® mmmÃÃÃ¥¥¥©©©àv%%%Ùl¶áááýû÷ûýþ²²²iÓ¦!ë P¯ SFm–IIIH +„»9S]ð÷¤‚H´65/Áª@ š!Ô¬T-E2Ïà‰ŽÃ5X¢6…Ãa|‰ó‰£G¾ôÒK€écL¸]át:—-[¶víZ·Û‡1 ,‹Ãá€$R©¢^è 4)ÈÚ˜•{Á`pxx899ÙáptvvÖÖÖJCmâp8,X°víZ‡ÃĘ©¨¨¨¬¬ ‡ÃiiiÇd2ùýþ¬¬,´I[[ÛÐÐPJJÊŒ3.¹äEQ¦M›x«¸¸8==P ÂÂo¥C>~ ´àD·ˆ Uµ8P¾0®´Š¦AX˜ªª“1öî?6{ëïÿ»¢(SÞÚéÛÅÜbsÙ.þBž{Á …õõõÿüÏÿüÔ>çÇ.òê_äÅ›²‹Ê¸ß¥Æ«Ø–¯ªjYYÙ’%KöîÝÛÚÚzâĉ Î Ò )ƒrd³ÙbšB3Ýr)ªš¶ y›t ‰}]Òk¡¹ñäÞàuÕªU ,Àã<XÏ‘ç …Îäᔑ  <Ú¦sQK‰…½#N}Q0lî%Ñ..“!˜r¿ˆsKNN^²dIvvöÐÐËåJKK£’p1ZŸQËï÷ïܹó­·Þjkkóù|BˆÂÂÂ+V¬]»677—8áp˜‚섆XQ,•DÏÑËs‚Œé2HR·F~,š+===999„B!³Ù\YY¹iÓ¦Y³f%''÷÷÷¿ñÆo½õV(ª©©éèèÈÉÉÉÉÉAp‡ä–sÏJ¢Ï„B!„HBŒŽŽ:ÎyóæáÔš¤[8¿’_|qçÎ@‹¨‘Ãáð‰'Þ~ûí’’PQ ç‹ô¥/V `J»œà4QΈúD è„BÛ0AÀ« ‡ÃÛQÞRX(¢ a£££Hˆ«BNU¡CÁtÕÓÓC$,!∓IIIÐþÞD§§¶X,@^JJ 7Ž¥òÑt}ð+!@ŠÇÆÆ(‰ šï¾ªðõ‚îI#RèNnH„«»»»«««¸¸8;;´ÙX,†òô÷÷wvv¶´´¬]»váÂ…ô¢¡(T®§&â”ü Ë wè&¼#pDAE¢7/¿ÇB¡€$ô]LïUUSSS…¦}F/wZ 0̺ººÚÚڸƷH$ÒÛÛ›ššêñxB¡zïhÌmmmÕÕÕ ©©©‹/ž>}:˜Jïèq`u©ª:<ˆäaWE“œ Ý<|?¾çSãdŠ.{oýsÕx!mÞz"þd•ø#`1HÙây›˜Íæ²²2*3êä±±1¯×ûòË/¿õÖ[„†;v¬½½=‰ÜtÓMÔ\NXaÑa¼‚e0†ÜE'[&„À!¹Ýn_·nÝœ9s|>ßàà Õj7oÞôéÓo… h4j±Xc822‚,œ’—(õHÈgÐOs,**ªªª‚:5¢&±Ñ´„àÄãÇSòA©eB¡ÐÉ“'‡‡‡‘sŠ2TSŠ?EûC¢Eh©ð cà ±XlÏž=­­­\ Š !„—^zé²eË8œDþ*,B«Õêr¹ÇÐÐo|¨¬¬¼ôÒK ™êîî¦"Í8<7))) Ø M”••EuŒX¡²|gÔþÛßåÇVµäô$­ÆkÃîC˜$œ¡îi8¥6›-ƒÁ‘‘‘´´4BÒÁ†‚9 ž.´ÀiîÃ(Ú×Àá‡[( ƒ~¿ßï÷ã3)©©©Æ#à‹)”C]Ž2cbúƒoBeà™ÁðC¡i/àø 9ÆhmÔÅáp`}KIIAVâ}„ÃááááP(¤(ŠÍfÜÀóÜQß‘„¢Ífs»Ý´X!­z™²¿‘n78ÝÝÝ¡$ÎìªU« ðC¯×»eË–îîî¥K—N›6­­­mÛ¶m Ïß“ä–.½ôÒE‹eddô÷÷?ÿüóB‡ÅÇb±”””¥K—B¡Œà’½ŒyŠWUŸú' Ƀàc¡jØív,_xPJJ ?ÿ èŸ%`XBq\zQÒ€GÁÊÊÊ UUµÙl˜Œ1MqßX­ÖÔÔT, ”ƒÂ¤iäI˦t2$Xj3ѾÔsº–tóh4Šp9,³###‡æÒÛPh‡(ùÔJhɱ±±¶¶¶††ì ô„_äŽ÷z½ÜFbá¿ßßÙÙùÊ+¯ìÛ·X¹×ëMOOÏËË£=SЦ$ÁA€žN§“èl¹¹¹k׮ݰaCvv¶‰es&õ, í !ìv»ßï§|¯&MІ‘^ð×+ÇÙùÛ‡öK ËæA”ô²æo‡p8ìõz»ÓÐâ%Ñïè&Ü&ÞuöqìÇ?þñÿøGý÷555UUU¯×ÛÛÛÛÙÙéóù’““!ãñx(ïý ZÅP ÂÐ%ŸS½¾ Ë`0u4$¦h)Þ F8à0p1Nœ8M:»Ý‰D†††KKK‘ù7‰ <eÐe”T&â“’; H‹šL¢´´4«ÕÓTóúúú…H%°'dÈËËØD‰ü8鉘¸n IêPÇC KdHwså/Æ#ÐIÂ|¡8Ž(6¨wàCË(T˜h g§â¹”ý–H%Ð ‚aE"¶u´ÉdèìììììÔÃÜŠ¢¤¦¦VUU¡‚Š¢ ¸\®ááá™3gΞ=Ûív;v éhŠ¡f̘±téÒüüüP(D)GD< @ )Ý»Àëõ‚{åp8âeã:›x3¤ÄzzzÀA+((p¹\ á`ÍøÅzG‡—@àž†ð Ä9R`8œó”I1]ÕÈÂ&h4Í¥µT*§Ô&ôó^Žœh966ÖÞÞÞÞÞÚ Ãá(---**ÕŽîÀ³Äè êe[[[{{;oCi…Ç £h)ÿè>X.š››=ŠŽŽD"CCCùùù„'Jíc2™¬VkNNNQQѼyó/^<::ÚÑÑ1::ZRR2kÖ,ðþL,©eR|hjCL³ÙŒÕŒ·-Gy÷á>&£ü6"êÂøá7¤½Š`À%]ŒNèO»"ÀÆG&Ï&ÞReáÂ…“Zèó`sçÎýðÃ¥/1¦ÏHm```Íš5sæÌihhÀYèæÍ›?÷¹ÏÝsÏ=>øà9²©©iݺuÙÙÙ»víZ´hQRRÒ‰'î¸ãŽ«®ºjÿþýç?»â 7ÜðÄO!FGG;vÛm·ÝrË-‡ž 9úHÊ6±­'ÎpÈϲQÁÆé²?þñ§¼v:ñLÇÕù´‹| 'Z3Ï´x“ºfNÙ?†aÿ µÔÂÂÂ'NôôôôööN›6øPJ<7!zôhGGZ‰R¼ÃÓniiinnv»ÝüÙŠ’¾äñ¡†F»g¡C¸8 zàgÁ3ÅbV«Á’—_~y,kmm-**Z·n]NNޤ‘$4ÆD"ÜÃåÎáp¬]»öòË/OIIÚ"É?¡„‘H¤®®CþsrišššàÖ"ý¼`>4³áv*Š‚d@pàuCÛjµ"†·®®Î<…ûñ’õþðÃÑ_àÁ1ØAþ!ÔÖNœ8Uf©îIII]]]£a`` ®®N?DÉzzz^yå•3f´´´´¶¶B±ã à”ÃáèßEªÛ¤Àv8H( #™f³ù(„~¿ŸI(VÎd2áqBS%D"ODOÈKggg“^1€;À)ÀùJIIAˆ(¾QXj6•éj¹Ýn`y ™L¦þþ~pT©„ÑhôÀõõõÓ¦M»ì²Ë  C8…`L1ôšªs‘_J4"“NfNÕ4Â9…„/Dôîå¢GÌ„dq·ÃeRlúŽt²-JQQå‹„3Y(hL'ìE¨%Pc¬Ò=éžZfèVtâ´iÓV¯^]TT„Uhæ8+-¥PbR[[‹„)))………³gÏž?>a|=W4Roa,­­­o¾ùf}}=„­VëŒ3-Z4sæÌÔÔT4ãѼS¡Vñk˜ïdøã&;Îl‚á­®®®Ù³gC`þ#màÄþéŒÈßýîw­Vë[o½…Ód2mÚ´éàÁƒ¿þõ¯øÃZ,–þþ~—Ë566V]]€#EQš››fÏž³ Dv÷Ýw !vìØAbg3fÌxùå—‹‹‹÷»ßýèG?BœËýÏÔp\#„°Ùl‹/¾ë®»î¸ãŸÏ7ì’q:è‚—mb[Ïår]ðBNHë%ê2¿ß¿mÛ6ž?qR‹qv…¼ì"ÉšîL‹7©kæ”}TLwø> û?\ãñx²²²(0dÊ.‡ ¢xè&t|ñÍK$¯ÄçS#Šl‹fÒ”SqP‰¸¶îîî?ÿùÏï¼ó%í9|øp}}}ZZÚ¦M›ÒÓÓÁªÀ 9 ÁÄtˆÉÉšw!˜GA{}Á´Ã(N“ü„˜¦ñlbÆãËøÍÉG €M<0>pIèlŸößÍÍÍzIf ‰~¿¿£££¼¼Þ#úˆô’-Z„ޏ©ëÉÃÊÐÖœˆKšá¢¹&Mjd``r00Än·WVV‚Ø–˜&iŒƒè@ Ž}¥Ý9†G8nhhŽ 8$%%egg#“ãÉ“'¡@ä÷ûÃá0ÖFà#Ñh´··wëÖ­œ%y>ŸïOúSVVî`Á@Fâ¶ ì® hbH÷ÿÍápøýþááá@ éô+L=ž8q¢©©‰'Á„£E,¼h4Š 0ºƒÃáÀ¦% Z­V§Ó‰U@É8ÕÌäcÆétfee555!B“¦!ž•¥ôôô«®º*-- úV~¿êÎBãø ­šÐÏ{—œd`(J<+ ƒFœø ½½½»»»©©©´´tæÌ™[¶loôóŸÿ|^^p·P(dÒ$™ÇÆÆPBb„+ŠÂK”¹Ñ/===`©š°º¢(v»½¯¯à†®`Ä+½[ 9j¡Áµ´2PËðá§h‘z˜þtOŽoÒÊ#´\„ÔBˆ@ P €<µ9æ tr ˜~<ÈnÓPÆ:ô5p[ZôÆÆÆü~?×pñî:X6`Í l *îv»SSS322V®\™œœÜÐÐȲªªª¼¼œˆc¨_où¢ y{“Éäõz«««wïÞÝÕÕ%4fY{{û‰'ººº®½öZzûP1-n$GĪ««ëÍ7ßܳg¡PhÿþýíííW]uÕòåË)›!ïêY>T–USYð;Püš¤ÞHÃèŒÏç#zÖôÀª&uw,>ñ+t-Œ–wú!"+UUíèèxúé§ÛÚÚ¨¦Ñh´««ëý÷ß½æškìv;^X²¢qŽŠ`꩟WÑÛ3999''9vÁÏBa¨³ ¦M›600Á©’’ „2sèœài³Ùœ›››™™©h‘þ´FÑù ¡ÛÔ­¬‰ÄJlßááa¼úGGG½^/-×xÅ€è‡_¡²ÔÅ ÓD쬎°9•E‚K“‹¿©^Ð&“îŒ:êÉõ“d oíÛ·ï²Ë.;å¾€vúÞšªª?þøÝwß ?ì®»îÚ°a–×™3gÞu×]¿üå/Ífs[[ÛÝwßžzê)ì®^{íµ+®¸Âðæ^¯÷Å_üÁ~ ù»\®êêj‚g}ÿs·¶¶¶ÒÒR§Óy‘¸ß•²I%:8qœ²MHÁ^ýõ•+WJsäüã#g•êŸQñ&uÍœ²¢™4Ú‹²ƒ½Ô+€/Ða,?žŒ`.ÄN”X|JrR(§”çø¬wƈî¡( Û¶mûàƒÈÝ¢­|0lhh„ð¤pˆtCõÅÆ”ïÈi[¬0*§ið}36¯Š¦c­hÂÛp5±ã·Ùlh7¸| ‘f‡Ãa`O4Ïž!p–ãÇ×ÕÕI<8´0…ÞÞÞæææááa’ƒƒÝ6ÕšI#)š\´ÇãÁãà±Øíö±±±þþ~¡yP8]ƒ@ 999-- „—íÛ·wtt†ÀÀâÍfs8:ù¡PÉA‚|/ªL Ë]8EQ‚Á ºƒšÚív+š®V زeËîÝ»q“P(„ÛBx$2’ýRµÄj’#FÓÒÒ233333É-q8n·‚D uÀK„87êO8<üœœœ@ ÐÔÔôöÛo÷ôôp’Á…V«uÉ’%ëÖ­KMMÅbN§“8‰(0î _}õÕ;wÎ;×ï÷ |ö³Ÿ;w.W%én!„Ïç{÷Ýw_~ùe Î0Ü*--íúë¯_°`ÁáÇŸþyÈ~ó¹£h1Sééé¤}à‰ˆ9 Ø å)މœUboqT#-2Äå>ž¢(˜ª]B§Ó™——‡å¨²²2''ýˆöÁ³ˆ†Îï†âa¨›´4¯’ïÓiî“O¤*ÁÈo$N¯‹41 YŒtcÒE7Ó ˜rSð”ú)Oü2,& 1µ··÷õõ)Š’••5gΜ²²2¬$èGýÊâ/¯­­­¦¦ 7±^•——_rÉ%ÙÙÙØVÈo«édUÓ&ƒ*_0„X˜«%K–ØíöeË–iÉ ±bU$€FZÕ±2äææ}îêêúðûººè”#jpp<ÇŒŒ ª; ÎÅb244´cÇŽêêj¼thüÄb±žžžƒb.Â¥ $4„@ƒ°ªMu¡~$…W“`ßP(ä÷û1Ý€›@ùKháMüM@ ÏÓÀ7è8¼˜–äDeIE9tNÈÎÈÈÈÐÐÐßÿþ÷¶¶6â:ÑeÃÃÃuuuÍÍÍ‘H„tñé Îu°zSóbÄ¢´tЦ(JZZÚÂ… SSS^z£F‹F£YYYW]uUqqq8ÎÉÉ™9s&ÎKp+Á US¾We`` ««‹Ò†â°Ä‘QÕäÑ~¿çm@몪ª>Ÿ¯®®®¾¾Ký‰'ŠŠŠ,Kwwwgg'«.Ûl¶¢¢¢‚‚…)¾KŠzã —`@ý•„f -'¶[¨ â܉}ßüùó¥ï333׬YCÿ}ôÑG÷ïߟ——÷Õ¯~õÇ?þñ-·ÜÒÝÝ=::ZUUõ»ßý.‘«vèСÑÑÑ¥K—êÿTZZÊÿ{v÷? «¯¯ÿÃþ „ˆF£ÇŽ{úé§üqESà›¸Î¨ƒ®¾újš\ð²Mlë‰3rç¹lgT°D]¶iÓ¦M›6·bœ]!'»…/’Ɤ%Z3Ϩx“ºfNÙGÎfH»+r\þ eeÓÚT´‘){AÚsóÔÄFÚŽbðWl=Éç$r¹ˆ¸x6pÑhÔëõÖÔÔ Å˜HÁg ÝÝÝ£ïŒâJ€ào‹ŸêKþ6ß냘C)Ø!‚gõöö"š ×ÑHNN2›Í‡cttthhÈëõþ…b€Ä„ÃXIÝwëïïïëëSY@(ù¨à;ï¼³wï^pX€€Ã…ÔNHHO0H^~¿h…l@º; ‚¦!„êîîVU53391©—Q#kƒYöæ›o=z455Õï÷Cc;++ËjµÂCÖeœ$-ýÅb±Ùlˆ‰C/“ÞÅbIKKàTh‡;v?~|ÕªUK—.E}“““ív;©ÈïFUU¸IDf ƒ›7o~ýõ×IòŸûååå×]wÝ’%K\.Ú„KÁá,BÀÞëõbÈ;#è~~EEÅÑ£G‡††8”f³ÙÀºZ³fÍg>ó™ÂÂÂP(Dé½0§ˆe€‘6þü,Z´¨¿¿¿ºº:777''gèªl,s¹\åååÀí=QXXxÕUW]zé¥v»Ýn·CëJZ b`0XPPœœ<00ÐØØØØØ‡³³³sss³³³¡$8¨Ý¤boQ‰ áxº}ƒqËápx<еRSS)nHÕ”ûCç¹;-âÉJôÈŠ.¢G‚ø9"IQu">öGIÆÝ{Éx#ð/UMÊ]hˆÔ2œ ÄQ¼þþþwß}·¾¾ fSGGÇüùó—,Y‚_I$>SvÒØØøÞ{ï555ÑÑ‚ªªÁ`pùòåYYYU?rEÉÏχ:TϰÔżÎÌÌÄä¢A,W ÅúÀaÁQ’““óóó‘`ß¾}àm ‹Dô¢žžžööv rªÆ$Å’%EŽ ÕÔÔPr=Þ#JMM¥÷wå8ñ}„†–ò\ Ôe*KÊ»WbmBPúË`0½BÂÎh1áÐ^¬Tx³€ŽF£8/¡´- .bT+Їqj¥0=/pèZZZjkk9y™,‰tvv~øá‡iii‹e``€Þ(!_]Á3òù|^¯W0$ò{¨ZæM¿ß_]]MÁμ²Xî ãáÇ«««c±˜ÃáÀ!t0äx}4 ƒõõõ £££3gÎLOOWU/Ó`0844„2àž8Â+ä_ºÐö€’H(Š244ôöÛoïÙ³'))ipp`%­!n·{ýúõW]uU^^ž4Ä©L§ŠKP/ñx½Þ‘‘Ät£åiBþ>ÙnËDÂ[¡PhxxxÕªU“Zâóc÷Þ{/ÿÆívÞÂþõ‰'žØ³gÏìÙ³ÿå_þ%Ñ®¹¹YqÊ`™/}éKùùùBˆë®»îá‡þîw¿‹Ï•W^YWW—èWØ°æææÒ77nܵk>§§§744œËýÏÂŽ=úƒüŸ‡‡‡qhsF-v.´xñâq`ˆóY¶‰m½‹¡ÒzgÚe“TŒñíÜ 9yv‘áDkæoR×Ì)ûhÇJøÆ‹ Bhm Ûú±cÇæÌ™£jŠæØˆG"Ä4Ñ!*DpLš(,ù9&MûÆår!¨0‡ªªð‚àà[I|ÀF)Þ°‘ÅbG=tèüªU¤­­í¯ýkgg§ÅbÁ©,Ždqr WŠŽßù1©Édr:'55ullìäÉ“mmmF(&%''ñ;D:? >? ú†Â¸G8>räBèœ;W‹Å²lÙ²iÓ¦¹\.Šõ ‡Ãýýýp>cñ‚ßhðùóç/\¸0;;›HFh7œ'C íÏŽM$Aä5ÚðVRRk€¢(/¼ðÂððð¦M›¦OŸþ‘ÂÐn‘HäÕW_ݲe˺uëÖ¬Y“‘‘Æè`‹As¡††M9²¿ãJ¢ ’ÇH>§00$‚ÁàÚµk.\HÙÄHn_0Q3Ü þ Æjnn.‚Ýp毲°¯iÓ¦ÝxãË–-ƒ~0e~¿Ÿ\뤤¤¦¦¦Ý»w‡B¡ÒÒÒÜÜ\ôµÊôw@nÂPOOOÏÌÌ$>#ЀY+V¬Ø´iSaa¡¢e¸£:421€„F„D9Ž@ à÷ûN'ðP¡aÁ˜ ‹%///555//oÙ²e)))ó3f̘9s&~B$Éð8šÑÍÍÍï¼óNuuõÀÀ$Æòóó/»ì²5kÖ8NÄK àNøº£R¤ªž»Dœ& À±,-á#ýq*JLç>¥Áϱä‚Q`ËZÈ i³Ù xO< ¡æ&QÒôÕ¯ºœŠ¥G£$Zo¨ÑÑÑ}ûöôÅD|bÙ`0X]]™™™••EÜUýÈA¿gdd̘1âw7ŠƒÆÆÆ¬¬,ÄB$ Ë”ÐP$¢> £$õ&xYYYUU•Õjíéééèèàa¡‘|…áp¸··ø‚v|P‚B"…B¡¦¦&¤bê…eÁï÷;vÌívcÂÆŒ¦×S(r¹\t‡ÃxS5IÕÈÿ@C§´î(‚ÈýöíÛkjjpPÁ±l’ÇhÁŒ ¢=Ø"Vœ(`m¡ŽÆ Z0]sâù‚œ‘ ï¿ÿ~mm-^d,&Ž3v´š syppðå—_F±q1 {ÚÇZ‡×%%©4›Í©©©Xèè†@ €hëëëÃá°Çã ‡Ã]]]xÇõôôØíöY³f!Ö[0Êápx½ÞÎÎN,b8µÂ6†Œ©©©åååiiiHh›••åñx çPVVæv»õS&Ѳ`8ߥÆ´¼:‡¡P¨¯¯o`` x<žÒÒR,¶h+zëMžM$¼õÜsÏÝxãã·ËGÅæÌ™sàÀÃ?™ÍæÿüÏÿüÚ×¾ÖÓÓóË_þ²®®î¿ø…á•%%%BˆÎÎNé{ÐJ‘GYAxˆÇ‘þ›È@Ñjllœ9s&¾¹ûî»AÔï½÷žyæºòìîöÉO~òÏþ3>«ªú§?ýé _øBaaáé·Ø„tÐ/ÛÄ¶ÞÆ/x!'¤õδË&©ãÛ¹ròì"ɚ7©kæ”}ÔXKÄi‚8‹Ífëééyî¹çjjj …p  |l‹¢…ݱºL,6£ªªâ· ¿ €öÇäEÐi0|·Û ºîîîþþ~òm8Ó'õµµ&-ƒ$ŠT-„„”-‰HCͰ]Þ±cÇŽ;ü~¿äp¬_¿»[ÒÇ í@x O2رX¬±±ñ÷¿ÿ=6¤)))‹-Z¼x1tây4Ðàà`GGp\Œš5kÖ7Þ8sæLBIàpÌHeñž”˜  ¶õ¤ðºPÜJffæ¡C‡ººº-ZTTT„žRµÈ¤š››kjj.½ôÒªª*·ÛMÀ^œ\›"¶"~ CŽd€Ðh¤ð¥ª*À””””ÔÔTÇý<Âf³ùý~Âì(î•ñÅà„'''#3PÚX,6}úôO|âsçÎåZÝ6Q,§ªªõõõÏ=÷Üàà`FFFVVVff&é Ϙ1ÃétÊׄ¸¬¬¬ììlø6›méÒ¥—_~ynn.zÄn·ƒ1'4§šÓŽTU§óÅåreee¥¤¤ìS4)7r#ÁÚ³ÙlÓ§Oß°aT½1 (—e0”B̸!hèäÉ“¯½öâ=á¡E£ÑÚÚÚÖÖVEQÖ®]‹¾Z$ø2222<ñ¾&ÒÅïc7ØÔÔ$!,ÜP—Ë•žžŽ¾bX†ä¤ooo?räHJJÊœ9s¦OŸ®(JGGzÖåreggc™E: 9°Ò Ž›ÛívHà1.‚wCÙív¯×»uëÖƒ^wÝu………&“éèÑ£ªªŸ¯££ãøñ㊢ddd'Fb8¶Z­ùùùˆ˜ŽÅbÐŽ,**ÊËËN ô|æª:Â&?e‘š—/MúE`¨ÕÕÕ ¯Y³&33˜š!;I6‘ðÖŸÿüç§žzjR‹{1˜Åb©ªªzðÁŸ}öÙÇ<‘·–ŸŸïv»÷îÝ{õÕWóïwíÚµbÅŠ¿þõ¯ŸøÄ'κ8«Ü±cÇÆñÍÚµkñáàÁƒº‘„¢(Ÿÿüçï»ï¾¿ýíoùùù§ÙbSeÓ—pãÆ§?äþ÷´ÞERŒ e¡êŸÑèÔ5sÊ>ZÆwWüÚVâ~pp´]¬š„sfûÁtÀv¹²²²¸¸ØjµÂ † Šcp¡Ea òÐ4ª°õ…B Cøöâ>ŸÌ0köíÛ÷ꫯ‚WBÊ8ª¦‚|Ùe—Ýpà ååå_A‹ÑæžxäTÀs øÇ–––ÞÞ^Ä!JMçt:+++§OŸ‡Þ1Vü~?< ·Û Ä…„ïáv»¥îLööö#B€ü¥ªj8NMMMNN†Ì?hhv»}Þ¼yûØÇÐ΀cð,À…1&FÖÖÖÖß߯ªªÙl...F8èTh: ¿B ö ¾€P&XÌ)JÆ  -*/®ŒB‚~EÚgB§sL?A_âÇ ²ÁÓ]ñˆ!U“6'$Îét*Š2oÞ¼OúÓyyyà¯y<WDñ ÐPСëèè€o¦j‘5ååå7ÜpCII Ù?dýúõûØÇ¬V«ßï·Ùl‡ƒºÝ ñ,•iÇ´jPRÎÍÍ¥daÀòàX¢Ê˜w€HRSSAåÃøÂK¾"…Ðò„zB#J ÅØ»ï¾»oß>À|T­[·.]ºÔn·S”±Ð$œ(Vh d•ÐAÜ=£vV41)‰B2QZEQzzzpg¨á¤¤¤&«hÊ6¸Ÿš#˜ûèèhccc__ŸÐpv5ž_vòäÉŒŒ V555 [R©è¡½½½;wîD(. ›ÁÁÁ–––±±±£Gž5¶à´ÅŸ7oMN§tŸÏ‡ð„ôôôŠŠ PéP”"°u&èÀÍÍÍ%!˜›äóù:¨šNy, ‡Ã‡>tèPww·Ûí^¸páâÅ‹ á±’èèè€d52Ý? öõõq—ŒÂ<ùÉO~²´´´···­­-ûÿgï¿ãëºÊ¬q|Ÿ{ÕnUï½Ù–‹œ8î%NwL€Jf`f2Ì 0„yÃg ¼ÈL`€†—Ú@â§@’8ʼn·¸WÙê’ÕûíºWÒ½ç÷Çúõ}t®¤¸È±xÿá|uuÎ>»ý¬½Özrr–-[ùNÍ0,C3Ž íÞ½{ûöí½½½ ¢TWW¯]»öꫯ¦þÑ„ß!¼§Î1j¤ Äç2_a#¶ЉÃ‡Hû)šò¤ZÞÀR/ ÁãñÐÓ oÁºñALTHe *++óòòð_@* œL0ü°téÒ»îº r°¡¡!¯×KÖ Ò½ŽŽbf¬h³ÙjkkËËËa×Åæ•þt„eÙt 2àgœÃû|¾²²²üü|„=°“g²6IuAP T5¼à”ÑÚY‚2ÅÅÅ×\sÝnonn†„G:~òü¼<²-:::t]ÏËË$Š ˜üÑÙ¤ Üý%&&‚ª‰»ÃA67”0c$úÑ4tc$¼Y. &Ä„ü[ü Ôu}ddôä@Ø»w/žY2V*, `ªãŽŽäA³¾ Áô)³[š–e©¡6-×Å¢"ߢšŒp ¿öÚkh]xÒ½EÀ Œ ãÁ´Äb1ÇsðàA,Ý@½™q‹l @  …Ð ###öÂÜzbb–á<~¿?‹EHY7RûÁ¢°°k&qüÌ ¦Eƒjú¬¬¬††Çc’š¢$''×ÖÖ.^¼8!!aß¾}°p2}cÆét®\¹réÒ¥>0¿/25-¾»“9ÈɈj ¹Ýî+V0Ý ”@4”Rp333C¡xFäJw|‹ÈRÊ%Îby½^œ-Y²¤´´XNŒ”cℚdU ‰ÌÌ̪ªªŒŒ €øœ¼`(»\®+V¬_¿>++ 0s’à5Å/8N»Ýît:³²²ŠI šxŠ;Þ SBEÊHz¨„¤ÝÄLÔ4Íf³AÓ ‘þâÅ‹çÏŸá =)Ú„0Xxx§`•@+¡þ‘HÄårY,(áD•!sJ‰,–j²ÒPä\É •О齣‰\7Xg8w c±XwwwII ¸ºXd¤ýüy*³oy<ž'Ÿ|ò¿øÅy­ë;Yü~ÿ+¯¼búpΜ9%%%X;”R=öØÄÄÄÝwß=Ãu¾ýíoÿå/Y»víoûÛ«®ºÊëõ>ùä“?ùÉOî¹ç`®çR¾ýío?ýôÓkÖ¬ùéOzõÕW'''ùdcc#ÎÃc±ØñãÇ;::>úÑÂÔÏ222"5†²#“€Â*p à¨¨¨˜7ožÅHö°çêò:`É:uê±Ç;xð DCJ)MÓöíÛ×ÒÒ’˜˜¸jÕ*´é5‘é‰-ÏX~ßg Å+0R%5Á¼Œè”AjSq—„À“éÂâJè/b"2.’ð-<‹TÔbØLy®ß,III7Þxã5×\ÓÑÑÑ×××ÔÔäõz1Ú«««srrLÉã&&&œNgnn.,Ãt¡e#‹ç󴘥1„ÎÖiiiéééƒ 2T 7ótLUB0ºáÍÄY›,>JLL\½zuff¦Ï烞KÅYÀ(¥<Ï¡C‡'û|¾‘‘‘¤¤¤ŽŽedDMJJ²ÛíœËÀŒHý ‘ŠÒ*à ´æéîînmm¯««M×õÖÖÖßÿþ÷H‡‡D@£0ñ,@—˜éSÌàŒPÛívz"&·¶ÜÐVà ð–ÇãŸ(<÷ÜsàìH½*1ètÐå0‘ÒA"ȬdT¤‚ ­njj*#ÐÆR’ß7::ÚÒÒÒÔÔœ%!!aáÂ…UUU¨³E¤‡#= —ÚµkWkk«%.¤RÊáp¬_¿º]MÓNœ8±sçÎåË—ÏŸ?_²QHÛ„×ì{{{·mÏÔ€IDATÛÖÑѱvíÚ5kÖƒÁW_}Õãñ|ä#{Tæz4DïêêÚ¼ysZZÚí·ßÁÑ ùä“o¼ñFRRÒÈȼrH9$ó ÜŽÙ§¸)fD|’a0x½^ <¤ÆÃøñz½õõõˆßoÉYãt:±2€C,˜•Á0ƒï’ÕjóˆìKàSà° ×”!ÛÄ"000ÐÐÐàr¹jkk‹ŠŠ0Ô¡—ŒF£câyeŒ­ µ”„!$*D¼I32Òšd7‡q¯ÅÈq‰B“ÐišVPPpÅWÀ ˆd@àw¨ÊÈrÛÒÒòD‚Ð;ùùù ,€UÀ£ŒŒŒ¼¼<âõx¼ÆÇÇqetŸËåjmmííí-**ÊÌÌt»ÝH ƒÊR߯®®ÖuN[r’çˆEÒ´xêº^\\¼bÅŠ‚‚‚P(„É¿Øj¿~IDR$œ­išÛí^¹rå’%K d_`Ù‘øÆ9欜/|@2û¤l7ŠW¤âa¹•žžŽuÕD†•C…ü/®ü8±—oº1ÊUK4»›í¨7‹åääTWWŒŒtvvjš–½hÑ¢¥K—¦§§Ãd@0»†Ö‡˜ÊÈõ/-tòTFÅ‘m9wˆÆ„õ>Gþ„ü/%’T­¨Y¾FûCñ=::Ê„83Ð »6Y ÉÓeøÏòÔÍbäëį OºÍ3ÓišL7#ZMì2¾Ad¯ÄŠ× 0ne¤‹!¼È%÷¼–ÙôÞz×”_ÿú׿þõ¯§ûmbbâ®]»:ô /¬X±âm¯6þü;w¶´´œ8qÂétΟ?_Ês )GY»v­ìòïÿûo{ñ­[·ööö8p ##ãŠ+®€Ö ðs¿þé&m<÷{Û2Cï\ðº]™¡†¼’³ÒzgÚeç©3—s¯äù+ùžaÍ|衇δzçuͼ\.¡"7ôüÛJœ6ŒŒx½^MÓÊÊÊBa 5<<¼uëÖÜÜÜ~ô£ÅÅÅòô¾¤¤dÁ‚µµµ¿ùÍovìØÑÕÕµiÓ&¤ÝÌÍÍ¥lÔœiKK,8qkÈ=(è÷Ø|/]ºôŸøDuu5ö|€œtC0¨”JNNƾ¤¤)Ð! §Ùø&8G&s"„+.— Rl%'&&‘€\Ú‹t¶åË—sŸ ›ŠÓ*¥Ün7pqÖàk—ËUVV†ä†1#ËžØ « Ð'!!¡¥¥åСC@@FnÜ1 I3æ±±1`tæÃ£å?½Â^Hî¼%LF´‹¡÷ßènÆ0JÄ;°ƒf‰D`=£ *¾hˆD"­­­Šð,ÃoÁåq:¨\{`Ù~È,t½AHŒQ ÍW&4ÄÔ€Ó0³àëÁKÈçóA5111<<|äÈdzcÇŽ+®¸3D#J)ÐÍàg‡ƒÁ Ý ,Ba488èóù”Ruuuííí°°IKKCˆ(‘PtbHy688È’OUÊËË39.Kñ/gÑb—ëvITò"©ØERË?‹Õ;ßkæår‘—ø½„ êÞ„4ˆ`Í0Ë^$Ùµk—ÕjݰaCAAÃáÈçÕ‡cÉ’%Ø·íÚµkppðÑGu:üàsrrV¬XÑÔÔ´k×®„„„ë®»®¤¤îô~>Åý· „Ô1SUIIIaaajj*Ù^Øá!Šæ^¿²²råÊ•{÷îu¹\ëÖ­ƒ¿8ùø]`Lø£s¿H“]«Õº`Á‚´´4:…`špíEÍGGGO:…ä\Øå§¦¦Òß—wÄC]uÕU‹-JMMµ9éÀu‚ôö” ¢‰€sa¿Nœ@[[–kB%A¶þTÆq4{~¿§§§«« ­ 3ˆ­ ‘yRRÒàà ×ëEn/x!<Ààä-UBˆsÐA0q± Ájœê=Nœ8ÑÓÓ³{÷î<;xà•––æçç#’ÄÉ<€„Ù‹Ý»wÛl¶ŒŒ ä@G@€b(ø…*¡#@Á! ¾ áç3Ï<ƒ–ñûýx4ô¾RêÏþ󫯾ŠE•fH`8ü B•"€¤¤$rÂápBB̳èFDÓ7===0_µjUVVÐ%Ð#‘H hmmݶm[NNε×^ 3/°ÆÒ4·µµ ’®¢ Ø455õ£ýèòåË™gt3ÌY:š¡Â“±+@[Ľ¥$°0KJJr:J©`0ZqVVÖܹs;::uUWW»ÝîááaÀfffÍp+SB611Ö`q`.̈ÇàS72‚ò£Mv°NOOw8Às©¥Åo{zz¶mÛæõz!¯fàš‘‘±fÍÌPÉOäj¦M–&©¸LŽòßéÂTâGðÂ9¦iEEE‹/.//§s™fx©ÉyTÑkv»=)) Oýýý@ ))©¸¸¸¶¶vÞ¼yd¤£dRM†ÞL˜ …] ×)HÄ’eb*ƒ„hbbiIø5Í0ŒƒvoÁ‚«W¯³/‹¥¦¦"‹Ÿd³š.Ž ¤¤¤¸ÝnhN1¿òóó‘BÝçóÙl¶¬¬¬üü|"é&HòéøhòCeˆ…¥ó'"£H®Ÿ&bà„öÿ¸2“ò¿X9ùçrtñý"§¤>Yß-[†OIJJ”Y^^Žl³yyy@·uCeOØ Küƒà5ŠÃL,³\QµÉäDÎ,‚˸²»`•#É‘À¢2L¸hÙ ž,^1ÿƒAPŒù6njj"CYêÄÑÂ4F€– °ÌQ‹å|C~Ž6W$}*ò`üÑbp–ÄJÂC¶LK½^ïøø8ÀY( ÇÇÇ~¶LN5pš»Á³+³o¥§§øÃ~衇þú¯ÿú¼V÷b(7Üpþ}û.t-.¥r1·ØÅ\·‹¿’IÅ.’j\~üK±z—Ë¥XèŒæüY±­ ‡ÃGݺuë¢E‹ ÝÕŒfØ`Y­VŸÏ—””´téRŸÏ×ÝÝ]__ßÑÑñúë¯/Y²$!!¡  àÿñ?ò‘$&&"üÆTÆ ¦ÄXØÙcË:h5$ø`WŠ“Un ñ߉‰‰ÂÂÂÏ|æ36lÈÈÈ(..Ɔ;l]l°ÂdàeŒ,XpÍ5פ¥¥Ñp'‚ ®ðü ”Az¢­’$„Ã᪪ªë®»ü#:øŠŽŽŽæææÜÜ\MÓ@mà®;~°‡ð}»Ý>::ÚÖÖ†Vå&[’ц‡‡»ººh‡ÁÁEà›ÞÞÞÞÐÐÐÓÓóh(¹‚ÁàÐІh4zìØ±îîî‡zâ#Œ£Ðâ¦0A€ êº<’Ào"B0¥€ p¦¢Ñèïÿ{БÒÓÓ5M‹F£ÃÃÃ>Ÿ)Æè)cÊÑîr¹ššš4Móù|­­­€Q†‡‡u]w: ¥ÈsMÓÒÒÒxlŽÜ±X,%%‡ß|óÍŒŒŒÚÚZÀt4oii9pàÀÄÄÄÊ•+kjjrrr¢Ñ¨ÏçC 244´gÏž¢¢¢ùóçgddÞr8ˆÍð¤`ÒAÌ[TT´nݺ®®®¥K—ÖÖÖ‚CàØ¿ºººžžžÔÔÔÛn»-??Ÿ™9E"‘¦¦¦£Gfgg_wÝu˜×ÔÂ*>##cûö퀷¨ðBü¶nݺo¼„2‚gÄ«„ niš†hÍëõ*¥œNg^^¤£€`ÐÈIIIõõõÏ>ûlSSÓš5k6nܘ“““‘‘‘’’âõzÜ(xõÕW·nÝêr¹®¿þú›nº ·S‚ü‚é, ]½´÷öö†ÃáÂÂB—Ë%…¨Mé-ýÝ0ž¥ŠÅbnmm¿U ¬§¸¸xéÒ¥\¸äLÇ””ê6‚&&$åtØ )))6›mÁ‚óæÍ …B­­­n·»¢¢°ɶ${rEåÓaŒ¥¦¦B$îñx°zçææb”«ŸŠ³ š!\lйƒ+hF&8 oÉËbÚív,ò2”Ai4Ú½¼¼<Ø*åääŸRÈ&Å5³³³)ÄœÍÊÊZ´hØgø2öëÉ%T’ï”¶d¾eXVK"—  aœD£$  |_V_¤kapjï¿5 'ÙžÉâ‹UÒ´8R!.ɱ‚š×‰ßÔq,&’ÞRGÜ'‰ C?ÎL•hŸÇÌ€ò)x– …² ð |CÑV¨V{{{gg'RvbµÄ‹rÏž=GMMM=uê”3ÖRf>Áah§¥¥¥¥¥š­­­©©©Xè°‚¨ˆW$†ÐIÝL>š&´±V«‡ˆ´u3-D¬hŒ@óèè(“ [„oæÛ. 3—™“Κ8qÆ 7nüÀ>ð^Hžx¹\.—Ëår¹\üE×õÇ×××UUU-_¾ü|ûY^.jrFös¿Ži…àÁagg',ŠÒÒÒà(400°gϘÍ;·Û ^ŒÌaD@aåÊ•+W®ìèèðù|‡>qâD~~~,s¹\n·›ˆ2vs¯Œ­O iå‹È_ëêê >ŸÑ86£Ø‹£& kÐŒ6==:D0ÆóR“. öÊ@Ö6Êp„Á}ív{iii8>yò$ \|>_OO©U•¡¤èééy饗rrr`|süøñ%¤=¸r^^ÞàààÎ;ÁÂá3øDÁ`°££cxxøèÑ£Ð|%%%áDÄ «ÕŠ?AG ÍY}}=”ä]Q„Ãá×_>DÐë!$h|lšaQtüøqD#<.Fz¯ââbœ™ëºÞÑѺ322²²²P7t(/äÌ[ÇœnrkŽPŠ&c¼7ß|sïÞ½7Þxã’%KϤ¥¥Á n×®]×^{mqq1ðŒŠãÀ{Ú¶mÛoûÛ¹sç~þóŸÏÍÍç8Ô€âqR¥b: ‡ÃÃÃÃ'OžÜ³gÏòåË7nÜH‚LVV–ÕjmiièêêZ¾|9|¬ÑÂÿ@…+,,œ?>Z ^6TÆb±ÜÜ\Œ%`:iiisçÎÕu=+++33YDå`0‹Ùl6§Ó ã@`DèЉ¥¥¥¹¹¹N§d1Ò‹†B!7,Kjj*°r×®]»aÆÔÔT¿ß¦‚F:ÑЦ¹¹yË–-GŽ!¼µnݺuëÖ•••‘ó‚Q÷Ì3ÏìØ±Ãb±<óÌ37ÜpÕü~oo/®§¤cÇŽ=óÌ3###º®feeÍ™3‡À lÌh¿ßÿ§?ýiÏž=X7©ø|>—ËõáxõêÕ2ìÄ €ÅG©¸"aÊPLJï@aŠÖEö»ÝΔ/&0HM†–ÔdlK. 3ó¶X0 ËÊÊ*))‰Åb”Ùã25—@„sss322œNgZZš”•)Ó6¥‘hÇ0JNNÞ … –‘²8¼wˆ}‘o’Œà=¤iZJJ ¹€n˜šQ¶¤ËåZ¼xqff&0ŒâéÔ}‡ÃaÀÍúäÔ–úd¹®L”Éת …('DŽy<$4ä£I U2˜”‘¨ –A€J‰‰‰8‡ p‰å}GM®n0±´¬ê½Cn,לŽtvvBÇÞ"ÔÖšAlÄÀÃ}IŠÔ ÷zæµ@—á]|ôèQëëëpBCë+:ñÓ˜- îÞìÑn)))‡ðF Ñ }}}cccÇ—óŠãp8ìõzô£ôŠÖf&D¼2À˜æÎ>11ÑÓÓ³yóæ-[¶1ă°æÍ›wûí·_yå•XÒu¡ օ×f(£&ræšÞÚÊ8Cû€Pž^èL0¥O.g¼#<“2›Þ[wÜqÇC=ô¥/}é¼Öør¹hËààà®]»  û¸ÐÕ¹Äó=Òz—ËY—Ë#äLËÑ£GÿáþaçÎN§ÓápôõõÕÔÔüú׿^½zõ…®ÚårºEŸJš‡q0‹¿M p0(]R„‹1 âdÕhLŒ1›Í–ý| ¦¦Æï÷{½Þ’’d -ˆðµH ÚÑÑñè£;vŒ!ßÐÐЋ/¾n»í¶¬¬,{äT"Á"†:.‰D`«„ö¡OÆ øxÉJXL"‘H}}}{{;Ĺ¹¹.—‹vÎÊH^Aâ&dbÍUâa ¶bÆ-[¶lñâÅIIIðt£JNV\ñŒ'ÆðÔð>1y ™Vl^C£ÃahD’÷d"q¼!‚vU7h³¨³Iâ©Ð=Í„®jqâ2Bää„Ãaô }©”H"Áz¾Ä¤–ð€ ªªa,1'Çá”ö[)))sæÌ©®®fîZ¯×‹µÝãñ¸Ýnð•€ÞâÙñ‘Ä"œý Jxs¡eøâÃw ߆ìwhh(„Ãa˜!*Á‹MöMÇIý¶oß^\\Œµ )^p~¿¯EÐH1ÀíR&Oƒxq`I÷¹[n¹åÀÈIz¹œ×b:B?Ó?7a1ò,~kkëèèhvvv(zõÕW7oÞÜÔÔ–жmÛœN'@DÉÉɇ#99[p]×½^ïÈÈâÕh4úꫯîÚµ Âlý±éWÂ4Dúæ2¹5¶° bðù|Øööö‚¯„›b?=66æp8233ív;’a7Ö˜¦ià:Y­VpXØ8*©ç­·Þ]²d ‰Wn·ÛápH›*ÄäçùçŸß·oŸL0öÌÈÈX»víÕW_¶mmm}ê©§jjjÖ­[1Bšmco­6UÑ^{íµ@ vŒ™‚³† \ØGnÛ¶íñǧ#˜2làNçÚµko¹å–üüüÄÄD8+ÃqhDjØ,+,,Äq±2 'Ž«ÕZVVær¹JKKóòò`; ×”)Aô@’¯«/cˆEBvÿøNzz:l³l6[(Â(êééq¹\Z¼ ¢qŽj2)”aØŒf’M©÷aø§ çli L×ù¦¦&qŽ@ädLLLt»Ýð†Ó¼œ¨Ìàà`kkknn.|»%!“B¢/³T¿´‰>Ù³†¶ÊV«ÕápØ’(Œ¿ßïr¹8³Py`Ðö À¬¬¬¬ªª"7E(€#)) ÄF Ȉð·mÛvðàAÇ'ïÙ³gÙ²eYYY¨IBBBFFÆÊ•+#‘ˆÇã)//Gʼ‘‘t <ò࣑]ZZÚÔÔd·ÛW®\YXX¨„©6±iô 𔜜œÚÚÚôôteäXÌËË+))A@È>ÁDʬ8¼y)7’’’˜WA)…d………±X wQÀÒ…Ñ~E+%Â%Xo,cÈQ © Û)bˆ«5à .-- k`#ìt6F/‘æ×“ïP`L¾EBn&ý°IVŒF£½½½­­­@ »»Ûãñ466*#õÄÄÄÞ&]‘H¤­­­««Ëf³555effÒÿˆêxàÍÍÍÀ£‚€äÒÐÐ0<<Œ¥U¾q røðáH$ËÑÑÑ¿üå/XÛÑòàÆb} äŠg4Æ®‘&z’ƒÖc®@°D÷ïß___/Žô#ÃçÛÐÌáÇakèñxz{{Áßa#kš†l$x™Òôç8RƒvŠ„‹¬¤€ѹÊÀ_˜ÒW†ë.—‹œÜœœœ|€Á ‚Ζ°tÃò¯¥¥%;;{åÊ•8s„€¨÷¡òIII@€Œl ™¬-^4È„â*Ú6…===[¶lñz½wÜqGEE…RêСC>úèøøøâÅ‹7lØPQQár¹ø*§µݵÐnðŽŽŽ655½þúëMMMº®gffΟ?tttxx8))©´´tñ⟠vœqDiålBïËçÐ…èUîÖпÌD‰QpüÆ,—$¼e³ÙÜn÷›o¾yõÕWŸ×J_.[yóÍ7?ÿùÏoÚ´)''gÇŽápø‡?ü!^íï¦ržó=Òz—ËY—Ë#ä,Ê=÷Ü£”Ú±céÕÕÕþóŸKJJ~ùË_>ðÀJ©¡¡!XœINü­IÚ¬ ‰0/Á.0f:yòäܹsé­kºú”“ÅäÞ¢ ©¯|Æø'eû`‚tvv666Âu‹ô’20˜‚ä÷ûÓÓÓÇÇǯËå¢.,&±ÅŒ´˜¸ÂÄÄÄ©S§öîÝ«â<Ô5Mƒ`vþüùdg¤§§ßrË-•••ƒƒƒóæÍÃD‡ ð g âä9sæ|èCêîîNMM­¨¨ÈÎÎF‡JXÕƒC?ô³7ß|snn.ZK 3¬%ïá:ð É©°ÅýòkƒÊékÌ(d-E忌{QÐÀn˜ TM±žd aq‹D"===@†††ÈÿB›Ó:½À+Pð Dx“Íf#2N«:d``àäÉ“ããã###ýýýV«5''k2ÚH.ŽÓ‘×^{mïÞ½º®û|¾‰‰‰gŸ}<)ô3Šp âã?¼;69‹n,CÖˆœ8qkumôº¢¤ê<üÜÞÞ»%üw>Ÿ¯¾¾žNa&XdC¾(A”À1Ìã"a8L¬«« …B•••8@;SF ¥9ØC###¨««[¿~}MMRª®®î¥—^ŠiH˜²ÙlkÖ¬©ªªÒu¶ƒ°¤ÔEúW«‘ÓÊ;´0>Ä›Ñ:9w! ÞcÇŽmÙ²eéÒ¥x_ƒФ"ÝÝÝ~¿Þ¼yÀåñ¼€Øo¡ýé‡WØöíÛ*++o¹å·Û‡±”+Ê™‹Jbø¡Å*ãd…K™LsŒÇÁ*—~•››‡a  áÃUXXxã7®X±‚ÒNTƒa†än·C~ööö¶¶¶”””+¯¼rýúõØÃhš–••åv»éÿšÞâsq—bK gÌpô/--ÅÁ pCHŒå-¬F>Ü3Þ žI™MxK)µ|ùò‡~ø2¼õ^+?øÁ”RpL¸ãŽ;ìv;”ï²ržó=Òz—µug]Þ##d‹Ïç{úé§ï¿ÿ~b[(.—ëàÁƒÜÎ;÷Ë_þòO~ò“ÄÄÄÎÎÎ{î¹' >òÈ#Ð<÷Üs×_ý…~”K¸˜N€ÏñRñ1ð©S§úúú’““çÍ›———WSSsÅWe@G×piZ3’£! [?”€ëÖ­û›¿ù›ÊÊJÐ`x„ ‹Gß„{$jƒ=+€0¥TrrrOOOVVVUUUee%Ì•°•ÉL1*î‚Ý<‚L‹‘à‰±.@ì°•RD$› »L\44]×ÓÓÓçÌ™³hÑ¢úúúH$RXX¸xñâE‹ååå!¨Fx 6vÿôË`¾6âĶt#ñ™®ëº(¥Èf21•pËÚZ,–Å‹ßtÓMðR™3gNmm­Œpk«Èç¼@)Þ5C'€Ù4x ¡±:yšpê‘ð™$m±Ì0Œe„€DQdc >÷Üsýýý·Ýv>”Q„Õ1#Ecl²?4Ð"%âg Åׄ&MÀ-ZÄÌŒJ hð¨i†5Õ¾}ûŠ‹‹KJJÜn7•¹úTn)P (‰~Õz‰êZŒÔfJè¡h/ßQ¡ÆÑ.é]$:ÑêE3 ˜QMÓš››GFF¦\aÆÇÇ;::"‘,,K0´Ùl+W® ƒ˜q0\ô ƒ»#Á¥¦iUUUóæÍƒ×¦x1XF0žì  ®ëCCC$iÂs‡€©R ˆ!)xxŸi†IöÈÈ@žž›ÍˆÜívúýþh4 # 5̨›ü—° PjÄo.ÇùŠY I¶âÔFËÛo×®]€½,“=ì*›FŽô -õõõYôˆšÁdäAÐŽ–yë­·˜ÀÁb±ôõõÉ7³D£QpLpf€Ù‘ËåBÀ½Â¯ Ê(Ò($“<¨'.âõzöl  Éé}aaá¢E‹©+0óîXêõz?¾}ûöÂÂÂ[n¹hݤ¯ "_‰š|ÝjDo‚Õˆ/ wvv.\¸péÒ¥dZY kH“‚Øív·´´$&&–••åææB r®©„•RÈn1þ|¥ŸsMÀw|>ßøø8ŒAíÄt`Ö‰¹àt YüŠŠŠÀß°211‘••åt:{zz|@ ð”opœx¡&8;Á¹ <` J)€2˜éxË£I95ø6—mnœ9Q3\Þð¼AÈ73ÅëõîÞ½{ûöí6›í¦›n‚àÛ.†ò4…¯<`…è÷ÜÜÜŠŠŠ={ö$''Ï;·ªª Ü1<2F¸uѦ)j2~Íäú/L¯H—Ë…赌Œ ÝH3Jº±ü÷ü•Y†·®ºêªo|ãçµÆ—ËEX8 ”Þ¿ÿ~ðƒwkzóô˜ï…Ö»¬­;—ò^!³[Ž92>>¾bÅŠø_•••Éÿþö·¿=pà@~~þç?ÿùï~÷»Ÿþô§ûúúÆÇÇ.\øË_þò2¼uŽ%>F=ý¢ÇYº(‘Ý öx¥¥¥¥¥¥!,÷x<0*‚|„¹GGœÀ ۲ŋ$&&744ŒWTTa£Fë%2p3Ð¥c¯O b*~ê† ¬2ÌÝ¥úŒü) —vºM­V+‰BŒ@¤'w«+®X±"++ ‡Ò6› d"ÄcpÅ‚ý­ßï÷x<”˜áÊóL›`eì³‘Ó ¢K>,ãããÔûIHHp:sçÎÅI/88ˆ6ñÊ ØV”³/ Q=AL|+48©vŒèÈ!ŠM6Êe|"clù[nú%>¥‰Ã¨CDÔÓÓóÈ#ìÝ»÷ÓŸþtqq±ÄbLUE O7éC$ËtÇì¦ïh†/VVVVTT ZæÀÀЩ!¥R c ‰:t¨¹¹ù¯þê¯233!1³ŠDò&þ0MJ´0Cš ›PÚ'Y„™4¾¬D4E Oð1£©çõz=úâ‹/.Z´xGf½Íf ‡ÃغuëܹsAݵZ­###dŒb˜ùýþ+¯¼rݺu8ìH¨ £Ñhfff4Ý·oŸÝn¯¬¬$éƒ s0®ŒÑÈù¥ ɳêãS/J§Ó™ŸŸïr¹L¶eì#ZûIGXÐãñÔ×׃™KšÞ‰`æúCéèèhWW×±cÇêëëu]_½z5„r8e‘ƒŽ&Qm‚IŠFÀ! n ¶”fH¹ÉÅë ¯zºa‚൮J¤c˜g3øŒ¨­ië¢ {;¤ŽSþкnÛ¶m```ÕªUW^y%§*9°„òù’âQu¦š¦ÕÔÔ”””Hé+4­xÿòð +彦׺,xR´›<™ Îš ³HNg¶9îNúá%ÉÞÊËË;qâD à½\Þ ÊŽÇü¶Ûn»é¦›>÷¹Ï=ðÀï>üâ<=滾õ.këα¼ëGȬÇ£”ÊËËã'7ß|óîÝ»ñsFFFKK ~þ‡øPá>ô¡ýüç?ÿæ7¿‰-ËÆëëë/ôs\ÚEFÔçX˜·N‡~‘H¤¥¥T xc3HkooÿãÿØÛÛûÁ~píÚµP¦( …(·¾¾¾»»{bbÂåreggÃuè±Ç{ê©§¼^ï•W^ùÏÿüÏà!ŽBèΰP¢Ttà ÀnàÁÄS\’JˆÅÌÂ8Ý…ÃcNÔ_7ĉl¿ß‡A1C(ˆK±zØãbó,õ3`“ ô ¿%ÙŠ ”AåЄS¸5ÓxáñV1C%6Áà;TÒ ÿR?ìv{ffæ²eËàð…¬‘ä0xc„†‹“IÆ´X,ð?â^¢QJ)p:Ð"Ù˜hdغ^TÂÙŒ3ÎÅPYF\ð‘" Œ†”””¾¾¾§žzjëÖ­ëÖ­[µj•f 1Šì´¢´H16›mhhGßtÀºB;X ÓeÂFòñçÎ[]] \ žÙ¼i °Ùl>Ÿ†èè#dõÚ»wïsÏ=g·ÛaÃ_" NÏソ½½~¿?444œ8q¢§§'==idd„`„ÅbÐßßßÞÞ>00°}ûöŒŒ iÂ:6›mïÞ½€§Ÿzê)HoÈõ@={öx<žßýîw%%%”FâÙ‚!E  5'–-‘Jp.<Ï#<‚Ôl”/IV °!"°~¿ŸüÐãÇgdd„B!„‘š‘ÉÔn·OLLÀN")HƬV+\{ÒÒÒª««A™®ä 5Gö±}ðƒüáøÝï~÷øÀš5k.t½.Ç|×·Þ¥¥­Óu½³³spp°¦¦†þ¬¶¼ëGȬP´Z[[ç΋Oî¹çž¡¡!¥Ô¶mÛ}ôQ~ŽÚJ)ÈÁLÿ½\ÎºÌ üÊJ‚AJ©‰‰‰¾¾>p²²² É%;vìùçŸGV¾ŠŠŠ’’*•a§Šà¼¥¥å…^€‰UEEEqq±Ýnß·oß+¯¼ÒÛÛ«”:pà@}}ý‚ °ÃvQ¬ž2vŸ Jiš–œœœ–––ššŠ£fp.hñ« 7%5YzÉOȤ ±E–áJ)Sc/ÎÀ[3Ô(&†‘R Á­ôßÕ ïîY¡ÈÀ#‘qŽn¸oàúhÒ„„„œœÄíL“¤ cZ%R,)¥`’žžžŸŸO/|¿Ç&ÛÍÊGõÈ×@8¡ë:ŒZŽÊ?dJ]×=ß9 _ ”dÔȈU½Kââ -÷ …B ÅÅÅ ^¯wçί¾újbbâ¢E‹H¡ò@©$…!D__pœðG"‘áááp8‰DÀèèèÀÀ@4MOO‡¦† %˜¨m(òz½Ðœ2\c˜]ooïÞ½{‘Á9¹l6[{{ûþýûûúúŠŠŠöíÛ‡4^ 9‚[„祇·¦i§N=|øpss3Òx577€õBA»ü~¿¦i¿øÅ/­’É¥ë:˜&###Ï>û,Ç'f‚¢h4ê÷û‘),‰ pM UB 8Ž1å™®ëCCC­­­Q#›iºiš¶`Á°„@u÷'S‡¸gÏž—_~9§¥¥¥¤¤ôööêºît:?þñ—••pG #nê}4& FZ(úÃþpòäÉk¯½vÕªU/QˆÄüÀG݃Á`0Øßß_ZZŠ Ì+ ÕÖÖÖÖÖrʺòz½¥¥¥%%%Á`099JR²®ä:†vÀ³ y½^5¥»»{xx¸¬¬L ²ärM§!âì&J)Adm²ÜÉ4yù0ÏFN[ÓÊ) Z Nn ,&I˜hðl²f¦Õ˜(W`r…”aù'ýŒÐ†n·»¬¬ »Í•³¹8>%Öƒ?—ùÙþXLç4šàrš¦*ŽÄʧE䈋›f¨ØL\y5¼ ð>E¿€/)û‚y €1aÔñ^¬m(‚&Ýj$æÔ|ï8“ú˜L^ˆ|%\…ÖÃÒ788˜““£ ö®©}xAye²G•ÐJëiW³viñTÖéØOòÕé÷ûGGG333qb‹ÅÚÚÚ¶nÝzôèQ«ÕZRRRUU…dÒ©“SUŸ†ÒŽ1ï÷û‘Ð tvvVUUzãÊC[z9¿x€dzóš~Ö…€Š£ã x ’ñÊ~”MÄs;užËìÃ[J©C‡]†·ÞSåšk®iii)jçæææw_ø}žó]ßz—¶îá‡þÖ·¾ÕÔÔ¤”ÊÉÉyþùç¯ºêª ]©wÿ™õRUUeµZwìØqóÍ7ã“k¯½?>|øB×îr9³ýŒwvvvttŒçä䤦¦2‰8Ÿh4ÚÔÔÔÕÕ•ŸŸ/w`ØÌ%''wuu=õÔS-**ºá† TÈívƒ,STT„ÄçÃêÁŒI6ÅŠ!hÄVÜ Ä¨ñ{âžW7\lõÉšD8ǃ…äPÚä“òy5(†L¡‚)öC„ÿ`Ò‚¨bàõåa²tç~á˜2òëQ/Ãø_‚#“ÁI¡“2Ñì’Âv¶Z­Á`©£º»»ÑéÈÃ(÷î@šà 0 ÍÔ ú×0êCwÓÆ[)…½;ð…±±1ô²±âèèè¡C‡£mÛ¶ :Ž}ûö à ¸m¶8¤ƒÁ`SSÓØØØ¾}û,Kzzz$AM³ûýþ0 ›²+‰v‘¸é€„ôþ™êßóÏ?¯ V ©„„„þþþgžyÆét’9c#$m |)f½!¤¡0Óív+#Ô‡4 ºññqÀd™™™ .ÌÍÍEÍív;‚=$Û½{·Ûí^³f rb’ ‰ˆzxxøùçŸonn^¿~ýu×]±Í­€ÖBÏ2DìììÜ´iS]]Ý”“·²²òŽ;î(--8%`Êš Û¾};š.++«¿¿¤³ TVV2o Å0¬AD‡aÆ$h°û),,ÈÎÎr‡x^Ó¨¶Eøèá›iii Ÿ€âa·ÛÁY³Š l¦¦¦" …”4Úç,“-± ÁlllÄÔ3­K§§§§´´Tº§)Ûƒè1åºmZÏM@Òtë!±T¬ÉS~™cã-ÛÂ0P†¸€ÅÈS¡Œ¬‘ñ·&Ò5$%%9äÎS­Ã»#·SI`5“Õ&¹F¶žéXbºµÚ´àÇ×Ö„³È.– ŽÑ@g6’Ñ#ë 18ݰ0h‰Dh3' «¤¤¤ììlºû±æ¨¼ÿZZZ°žÆ[€€£É] äÇÆÆúúú|>Qc€¡uuuMMM ,àIŒÄbâG¶É=JÐV‰CN´øÀt#m[^^÷êîî†ãžËåZ°`HÖš‘zR¾ýeë±2º‘]ÇÑh´¿¿P–}ƒ™F¾¼ˆÉ0Þ4 M ä ψ ßž‰F7?o­‹$žç¯Ì2¼…—ëààày­ôår±•ù—yä‘G@ŽèííMHH˜ÒõæR/çé1ßõ­wIhëÆÇÇÿå_þåç?ÿ¹¬öý×ýñTJùýþ£G®\¹r¶ÄVgTÞõ#dÖKJJÊßþíßþèG?úüç?/%Š~¿ÿᇾе»Àåt¶)çõ¦gzßø­6Üy!A-((™?BÚ”Rª££ãèÑ£Ô;`û^ÌÀÀÀæÍ›ÿò—¿@ìsÍ5׬^½ÚápLLLTUUÝvÛmv»=ß|óÍóçÏ'Ô¢„6MMŽ:¸×D”Å쇺a¾ƒÝÑ“Zƒä ÉÞâÏØ/ÂŽr“4cn|£Ñ¨ÇãJîkéBÿ„@`dddtt+¦­-öиvÌcccCCCŒÏÁ¾a NRgõ‘H¤®®®¥¥¥¤¤$??ZQ¯×ËA´ƒ Ûl6@!Ø@OLLœ8q¢­­Íb±<ñÄyyyð!’cz·ãÇ·´´üñ|óÍ7€ßï‡ ˜núš}xK)EÁKÔÈ€IfŠfØ!MLL $$$ìÚµ (FJJJFFF¿Çã©««£„„&x¹\.·Ûív»}>´Kh:xƒ˜æ÷ûaÌâJeˆ¹d´ƒOÐæðGLNùÛØØX hjjŠÅb•••YYY]]]‹%--mùòåøɶ0B±ÀDFxßÁƒ_xá…’’’eË–mÙ²Åét~âŸÈÉÉ¡rñ;vìᇾꪫ>úÑfee…B!Òmp°_WWwüøñüüü÷¿ÿýYYY–ɹ,1˜Ož< ËêE‹™ðÍPû*¤±C333Ñ׌Á0`’’’/^ HB7œ†ðW‘H¤¿¿?++ ÕCw±MN I “÷œïD‚Ð,€›±È˜ÃâƒAŵBŸL\¥»TÉ.—Ëï÷ƒ¡Ý@dRRR"‘¤s˜ïÔV+A‡aÁsŒŒ Çs‹ð'0§u—i¹&›Æ—mSŸ&éç oRx—˜Ø"|¡Óö”ð–¸Upx9e0*bq©¨ËC÷‹€ƒ1>Y ²j†• ròz½1#ynü1-óú9NñäEô8ί\úø¤¼šň­`MÆPT—Èévò¾€Aí4 !Ùnȯ‚ÁIúª2X<ÙÙÙË–-°Ûí+V¬ÈÏÏÇÈ‘*9BXŸäääôôtt7ÆæQ[[ÛáÇ­V+„ÏôG‹Ç¶äáÏqYºékFŽ]®«„t§œ>Óõ«1œ0êxÜ‚7Eee%l¸°síbë™w²©£Ñèàà ÎÕ&&&222àÀ£)MïÙøŽVq6‹1a:åÀ@ÝІXÄøú–¯'œ$ê{þÊ,Ã[pLĦóR/úŧQºhKmmíÓO?ý§?ýiß¾}º®oÞ¼™š óT.H¾ÓÌ3<ï|ë½Ãå’ÐÖýÇü‡Ä¶P¨P»þúë÷îÝû½ï}ï«_ýê,Þô4ÇÉ¥2B.ª5óÛßþöÓO?½fÍšŸþô§W_}urròÁƒ¿øÅ/Ògä½YfØ×›*±û9‹ È0F)5::ÚÓÓ,£¸¸¢îËËË×®]ÛÑÑÑÛÛûâ‹/–––.]ºÔåré†laÏž=/½ôÒöíÛ}>XË—/ÏÎÎÆ]ÒÒÒ>ð€îÍÝØØ³"‚ÞB£ìw¡ùBTƒ­ùÈÈX*0KŠŽéÜI3I6² hà Å× C<‰ïCã044;HÆ@l ‡Ã~¿ßb± \!€R__?<<\RR‚ؾNðß …Br»´µµuttô÷÷'''çåå麎<÷Øý'&&B%âž+ BËIÓ%exœq;j`% !Óܶm¨X–È(‘¢ 4…lÿ¤¤$À%Ñhô…^@w@ïCY„R ^ïeqЂ”a𜨇”ê.—+-- í¦ëz0,((ï€ýB?& +é,®Œ<€ôòÇ‹O¡útÍàI»(5hÀ¯XªÓÄ À4)Öz-©ÉnVl@«óæÍƒŽÀ°²2ìϪªª²²²0ãòóóøâE#Y´\â¨q¶Ùl………%%%tÀ« Úêk¯½6-- õÄ"À\Àhi Ç•a.§¶ÌçÀà ¾ýcÂKŽ”+2 yà„Å ]ô‡41xí-_¾¼´´(•Ãá`Uåqìð.à¯ðÛ`0ØÙÙÙ××G~:žfš<AXÀëh¥΢”€º$Œ…v0¡cñ<ôÒà Ø=ò`Jf@ÔHe{¦ûÀ3*çÞš2íî¥U.NÒÅ\6nܸqãF¥Ôw¾óó}¯ ˜†ïtó,Ï;Ùzï|¹$´u¿ýíoã?üÌg>ƒÎöŒÆÉÅ?B.¶53''çàÁƒwÞyçÆ-Fæ—ûï¿ÿ£ýèÒ¥K/tk½‡Ê¹c[¦;†üe¹¹¹ˆÇÆÆ‚Á ¨Cåååéé郃ƒo½õÖðððúõëkjjìv{kkëo¼ÑÒÒ288HÂܹs³²²†‡‡i ÝÜØØØ‰'@ þÃÃàç@Zÿp©à€ƒ}'¬ˆZZZ{ì1øgãk°×76 ˆTá?‡¡õªDÉëõÃiû]edÙëîîv8•••`å ɽ®ë###0jâÛÓîîîñññcÇŽ!8‡`'öܦ“ÔÞÞ®” ›`ü"r‡ø|>à;H¦N{2êªð‡E™www÷ôôVVV:NèÚ€Fišf·Û±-Æ}(BÍÙl¶äääÖÖÖçž{.‹ÝxãåååiiiøÂ[èÍ]»víß¿ÿ“ŸüdMM $„ØÜCa„–× ›$àPcccýýýÕÕÕ2¡L[|ÊÐ@‡INN…BÇŽëêêB7­Y³æÖ[o.a¢n$ðRF8a³ÙúûûÓÒÒòóó|´b&¢b+]Ä5XbFBü w’:2‹effvttìÙ³gll¬¬¬lõêÕ©©©h=\!RF§Š ¦‡71"2„œXÌ ˜H²Æ¨ ŠK:3Ä’Aî ¹"Zƒ5TS½¬¹øÀëÆ `€•”””‘‘Ž'à`«‘ÅÏãñlÙ²å7ÞPJõôô8Ž+VæpÀ`C”Fëêêyä‘'N(¥ªªª>ó™ÏÌ™3‡(*#A(4–,9»%–¤ ÚUQTlQ¬–ÿJp^’’’òòò0fh¤­ *¨(Á©‰‰ Íj2§ƒ_ƒ×!×Õ¬¶i¨›><Ý/D€ élÞlLeØÀc¹6]M®[X»t¡ö¢}›Çãn‚ á²lؼ¼<,é€Ái R_`åCCCSð‡È-ÀÊ`U'‡5Ão‹u†k¸®äÜaâwuuŒŒTWW5448NäXPFÖNN:<)N(›U²D›ãƒÉWÌÈ\‰™hzqã\„Ë "Ô€À"‘HJJÊÕW_}ã7âM¤ vA[£ JHHp8(™lW‚ƒø×ï÷:¡-£RêСCûöí+((X¼x±2Ð46)nYYÇÆÆè‰ì8 ù *€õŸ4™oL ¾éðBgZCÀšÐ¶ã²ýýý'OžT8ž˜˜ØÝݼ^¯ÅÈs LŸNí85™˜˜@²TŒÛH$‚³´ÎÎΦ¦¦ÄÄÄ_|±¹¹Y)…,ÊÛñ²+,,ܸqã¢E‹¸ìh“É}œÎ|pTÄÏhe V|áo1–’’’0291 ™¬æ<•Y†·zzzÔ%ÎÞšY£t¹\ðr1§á»11ñÁ¼æškðß­[·9rdÕªU³r»wÙ8¹h§°°pëÖ­½½½ÈÈȸâŠ+@IÀ[_MÖѯ]»V¾°¿ÿýï_ØÊ¿›Š<ä?wúdV>Ÿobb"---'''999‰Ÿ–Õ”>!„ÎÈÈš ™ c±˜ßïÏÌÌÌÊÊJOOOII¼ÕÙÙÙÖÖ¶hÑ"À^6› 6ü¯¿þz47o^~~>H1¿p `màC?~|ÿþý+V¬p¹\¡PÈï÷gdd¤¥¥á›t½ÅŽ\×õžžž§Ÿ~:77÷¦›n*,,äÖÖjd7_Ñჽ{÷nß¾ý†n˜?>šœ#Db¤BàšS kØè§¤¤´´´:t(‰lܸFÎDâç'&&z<0×233q :ãk¡)pÌN CŽ<íCú‰î3¹dffnذ¡¸¸XæzÓ&ûÑëš¿¥Í0++‹>hŒí-Fz5 B?&XŸ#¤$HÄðŒtä/ëîî¶X,+V¬¨¨¨ÐD–OÉ.ÔDþ;·V«Qx°Òšü™߈§´±#Σäéh"a‰*N§î¡ÍšÐÌxbbÂëõêº^SS³~ýzFbx:¯ÑÓ}xx¸¹¹_ðz½K—. ‰-YD¶Í#GŽœ8q$‹úúúªªªéÐLü+¯¼ó]i¢Gq°a'×1‘×”a{Š·éÚ‡}D‘g6Ù¨¸“¦II×Û¾XaN(’ûÔä\ d!Êa†‰Œcçjš²V]e˜|õ÷÷#Ï#^¨½–`*¯ .t@~áºÁôù|n·›‚V@ðï³Y,ã'/놴,< ÛíÎÎΆò455Õáp•Ê#„Y˜çTŒ-vp½þþþñññþþ~¯×‹1C¹Ÿfø¾á‡‡††Nœ81226¬¨UUUsçÎíéé9uêÔÄÄDIIÉ5×\ãr¹Èâ¡]#Vù°ÿÐõ£õX(Ú¹z?¾wï^€¶ð lkkÛµk×ÈÈHYYY €‰ÞÎp¦SJ1SþÅ1O0lhh‡ÃÇòÉ'囈]CÚMÑ5Á` Üâñ3¶¸¡RŠgfXq†a944ô§?ý ,fLv´+˜IÐårÁÎßår“J@W|ÌÆÆÆžž¬-Á`t¹\‡#--Íét’Q›œ›Ò´bã¥7WoNReÈöñhºaLƧSÓœ7ð·ç¯Ì2¼ÕÖ֦Ğà’+‡þÙÏ~öË_þÒôy(Ú¿¿ÓéŒ×é“ç‚—Ùj®s1¤á›²zuuu?þñ§<999°(~Zïb+³¨­;MtêÔ©|2vK–,ù⿸hÑ¢ýû÷[,–ùóç»\®Y¡›Õ××_þò—SŽ“#GŽ,Z´hæ=ß;0BNÿ.íí탃ƒÓ=ÎÁƒ,XÀs›wòdÉËË{ßûÞ'?1Ó{¶œ;Àt¦·S6äõz±Ñ?ë cÿ …z{{#‘Hfffzz:-«O:ÕÐÐ0>>n³ÙÒÓÓ¡7A‰™Â‡ÓéLMM…-'''33ŽØ*ÃÆEpbû@ °{÷îÆÆÆ¹sçÞxãyyyˆéLL4G×õÇ{ìàÁƒ·ß~{uu56¦ úý~xŽÐAÞ. .(ªRB‚À§ß8ÉGªõ,Z´¨¤¤D§Ü‹eÇŽ‰‰‰7ß|ó‚ ˜·> F£Ñüã¹¹¹„·¤u…B6›íäÉ“K—.}ßûÞ—””äóùº»»].Wvv6Î¥iŒÂä}ÙÙÙÛ·oŸ3gμyó 4¡L7tè>¿ßŠ›CT€X‘¤êM`žùØUp'™˜˜@¾?fjÞ8¦2ìáÉE½‰h¤{7~@WZŒlŒ&¸ã× Wu0épHÆÐ+W®,--EµÂ铽Zb" ‚@¯×‹ˆ·Ž#_7¤:¼µfš!+c¡hR3D”«ˆÖ»ººŽ9‰D\.Wuu5ùY’fB äXEKz< Îp 7YA±J”êÀ À“ÔŽ`}†é |4XƒÑo†¥ƒFÙ ÚƒU¥Á„–€`^¤¦¦–””ôõõ*I à ˆ¦ÎˆÖˆq€‡‰¾1DÝ’’’rssq¬bµZGGG™OMâ‚Á X‡rUÂ"a/çU4]!fDÔ š|,bµZËËËa›gL‰ÿbÉÅ#¹ŒA2/®Åq倊L—¤tÑŠˆË5LÚi)‘«„ÕÈ‹ë8N—Ë‚ š1‰ìÚµËétVWWƒ¢‹9Γ,¿Š%à !ìP(äñxÚÛÛÓÒÒ\.×èè(¾äeddÄëõâL‚3—2U< ¬Ó£ÑèÈÈȱcÇrss±”!)VHHËq_.5`ï„Ãaœ‹Èµˆ<::Ú××766¶k×®ÆÆF,ìä¬Q…‡9ˆÏÆÇÇwìØQ__ï÷ûƒÁ Ž”222rss»ºº”R{÷î&…~RÉà¾$×FÐqP$kHwHbx§¿ôÒKuuuÁ`phhˆLäÇ·µµ‚0‘Ë‹n¤=‘ûMÓºººü~L$Æ…·Ãá@œb³8Μœ¾5’““¡ÎKMMF£©©©>Ÿ.«‘d“K™ßï?räÈÐÐPzzúªU«ÊËË1l0ûìv»ÓéDŰì ðìº@šsÙu9òæ›o*¥æÍ›·dɧÓéóù€È§§§»ÝîÂÂBTRNUÓŒF‹÷¾ÉT³MŠÖ *®ïx (¹œ’swžÊ,Ã[`³ËWò¥U>üá¡3•mÛ¶Ýxã6›­¹¹YnÍ/6=Î…-³Õ3_ç‚§á›®zŸûÜçvîÜÿ} žÚÚÚ×_ýh½‹³Ìжî<5ÑÿüÏÿ<òÈ#HC†7_kkëW¾ò~áÿ÷o½õÖYi‡/}éKo½õ–×ëÿÕ¶mÛ®¹æš={öаãyüs¹Ë~ô£ßÿþ÷Ó=Îõ×_ÿÐC½ÿýï‡ár™¡¼ÃØ–,CCCØWEµùC$iooILLt»Ý6› ÆÌK—.ýæ7¿ÙÔÔ4>>ÎÄÛ0®B ƒ YYYYYYTÀìœÄE n#Âñz½ÉÉÉCCC·ÝvÛÍ7ߌ­§2¶¹; 7,--íïﯩ©©®®Æ~”_PJY,–p8ìñxìv»Ûí–&S’ä‚] 7åØ2ÂhÌçó+¤eÌèèhWWxR€Š”ARC¶;§Ó‰?Ñ ûjÊ=”RøÒG"‰Ubbb~~>D[ûÉB<¥Ä,4þíI)€t)))N§<8J#9>> eÐ/ÚdC.†@¨7ë¤ÚÚCËóøš\ð5¨þP{é(C,2,H°Ò‡^“ຮ;ŽeË–AÁÄé&15^“ѦôRÂõYËãt\MÆê&¼€Ø¡úÂÈçíííݱcG{{{,+((@šQ<»LnÅ È+(ƒ!‚Ç„<ù5É\Ó +kޤƒ Q›Í.ž&lŒÑqx È€>Lia.¡6)ò¸%&&¦§§Cž©¶G˜&$þà"ùùù6lp»ÝgÑ¢EË–-KHH6: ŒÀî.\X__ßÖÖ–ššºnÝºŠŠ h`5‘òŒ°o^^1ÐéV?ÍP#ÂÅ “N‰¸”@ ÝUœœvJ…Š%š”¼E‰feeá´³ÕDi”k5j+«*»&þMÄ/®ÈÓ…˜‘Y•èÆçÈ ØXä[ r-yI­­­Ð›÷õõéºÞ×ׇ›››½^ïúõë KAó’f__ßÑ£GÛÚÚZZZócdBÚ¬ëz hhh|ýõ×‹ŠŠp¾ÒÛÛ‹ Ãsðرc~¿Û¶m'Nœ ’ȰŸt­ññq¯×‹‘¶yóf-P€I_*ÊÁÿIN(S5~š°§”RHîár¹0°(ÁzÆxÆä…ÒZMÓ|>_oo/@[§Ó922ÒÛÛËÎbjTeH×áû.p²„Ð;(¸)P]\ 2¿ßŸ–– …|>&x^^^~~~rr2)ox_€÷”ššŠÕƒºE¼’”R'Ožloo¯ªªZ½z5dl PyÐÀŸÕDÁÒÄó-ø»ãL…¦“\´9gƒÁà–-[vîܹxñâ[o½5//n³Ù@ù ùºÁ]˜O ÷O ŠK–,¹þúëÑbГ‚´¥i¬$ŒeZäq}4&Þ§S.³ü"¤eÒY›þê'Bs~éÂ[ÍÍ͇ç·(Ð(}ö³Ÿ5}ó¢Õã\2[­q:×¹€iøf®Þ¶mÛ37©éÏ™>õ…MÛw1”ó:ݾÿýïÛl¶'žxË×y-/¼ð¯~õ«¯~õ«>Ÿ¾í8ygV›³¸ËøC¸ ƒÁ™çò‚y±•w äâªåt:çÏŸWˆ)Û”R£££ˆ1 ,**¢÷¶Ífs»ÝW\q¡(Ø’ÒSV±Ì“’’@’Æ4Êp¦Én·§¥¥a#Kà’±±1ìA±#G,AS!ü9­:p L}™2($drᓦ¦¦ÔÔÔ¬¬,„8ódv'ì’Á °X,‡v¹\ØcD `þ„žÄšàúa|‹¸Âf³…ÃaÈj™+ÃuE)…½»&К¡†c€J_!ÔöI ÌR«‚+ÐxGÁ$bh"‡îh·ÛRRR`‚¨€ûu‹‘ÐP)• 5àeø2.…Û#gÞH†âšaóL²£ ð&ð 999h|‰\HxeP̤1³ÝnÏÌÌ$ˆC¤ _ N7Œ–QU9Z‚AJ)øñŽáõ¦”‚YCCÌ_jjj–ž£Ñ €6u ؈ÖeeeÕ××'''çææ¶···¶¶\&a¬+`sæÌ §‰¦™Wb[’Ø…pÚãñ fƒÿ>äPDµ¥÷3ˆxˆñ4Móx<2Ô×…ñ6*Œ€?!!aéÒ¥sçÎ8k·ÛC¡ÓéÌÍÍmii‰F£pkB;÷÷÷/\¸ðÎ;ïìëës¹\@Ÿ1Àß$5 OG?;Ò!-"&+&¡vMÓhs†›Â7 ÌÄ¡¡!DŤQà¡è”$q%Ä«@¾‹b"€ÄªëºÝnOOOG* ¥TaaáW\ê–®ë`qâp¦ nV«¢àñññ®®.hÙ×”ÑIÅ¢ äŽD"hjààX‹è…UKkSS“ÇãyñÅA…óûý###øsŒX å€4…Ãá;wÖ××§¤¤ ©ììì|üñÇqÖ-CCCGŽQ¤&Í$²C‡>|Xçhm ¸Èðð0 Ñ¿`ñü€(º¾¨¨Ë8Wrdù°X,¹¹¹Xó<áâP¦+tK‡> 2*¥ íóÍ7.\¸téÒÒÒRÒW¹ r²Ûl¶P(´gÏž_|qîܹk×®íííݵk×5×\³dÉ 2Úät¥òg¢üÒá ÿ’ƒtV8%Š4[ ­ÎÎν{÷._¾¼°°p×®]p<¬­­Ý°aCUUQ-94Mc>þŠk~UUÕO<±råÊ•+Wráå‘ aÍк’¦‡ÍÕ†ìÀÈä !¦¤ÕjMKK»á†***rss³²²°ºb`‰FÆ[¼Q™Hsyq>åææfgg÷÷÷k†%ÖX²ÆÐ5Øêè_UJ›åA[a¾`=—°)~…×þø°£p:)))xKb0S˜)ûÏS™ex “977÷¼Vú¼l¹ÐîëׯÿÎw¾³råÊø¯ÍœgÍTôw©èlÖ[ãt®s^ÓðÍÜS3Wo\.=3 ž3m½ÙMÛwGãYßúŒØE^}ôÑšššƒâ­p:ãäyü³»ËK/½”ššŠãÄçL/þ®_3/—Ó/¦ÞÁÁÁC‡ÁZuþüùÙÙÙ é0ÍBx‹ ’ \Ð&y;"ÃJ\Ó´`0Í#ÜIÈMp˜®ë êC<%Ù ò^”˜4eš¦2Åßï·Z­ØSQ*¢ éqkl…ÿò—¿ôõõÝtÓM±ð¬5zL%5Ù.Gò€ÈÀƒÕ#ËO‘˜˜è÷ûa…›––Çw„‘|Ä0²µ`Kûj .À©±œ¼i&0=1ñ_Èé@–——geeqxX&§QˆFÐPâ ¦b Éö"Æ””””™™yÓM7Í;7þ8jÊ+óCt+ƒvD t×’#_€,"0É–ŠE>/¦röE"X\ÌZ¼xñµ×^›™™ vütX=ÄWD‹dS[­V¯×‹€0))©««ë'?ùÉUW]µtéÒòòr@Ï>Ÿêó©©©ÀˆÁ2C"¨:@µœÇž‹!99¹¥¥¥¡¡4±ìI©ÃØæápøÔ©Sha´Ä­@@¢]ÐÚÈ” À§<OBBBGG\†c±X{{;\Äb±‘‘º°Õ‹D"ÌZ-æ#3Hj H*‘¥8Z7Èwð2G»ÁïÌëõöööŽŽŽž:u꥗^‚Ý€xf@üicFÁ×Ð5Ä£‡††ZZZÀ@™;wîÀÀL*ÚÚÚº»»©ö¢ YºªAUŠQáñx ÷kkkëïï'ŽE’D.n’ "Ñ.‹Å²eË““ìIXè*´¶¶òCDédùÁ' ìÔÎÎÎÑÑÑüüüâââ„„0|9|>¶i‘OHH¨¨¨¨¬¬¤ºoH{{{÷íÛ‡ƒ·Û ·#p¸Pþþþ7ÞxÃáplܸÇ34(TF~:.tuuuÏ<óLVVÖwܼ´r@ûƒ‹Däƒ UB«ÊµnÊUhll dYYÙâÅ‹ágo5’c~¡’XŽ\.Wyy9°øªªª¤¤¤æææ¢¢¢ÜÜ\.¹ìMé·¥Θ0Mã[†w²L^$€!´°f…B!·Û››ëñxêëë#‘HQQÑûÞ÷¾ªª*`‚’­‰”¸¦<ÁƒÁ Ífƒ|¤ÄÖM»¾%QNçX½½½cccùùù‘i‘ßd³X­Ö‚‚‚ôôt§ÓI& ßPR2Ì&Õ„¾O®WHk#¿Ì×®é]£Me¨ÿJ’5‘«M&{ʧcάu8íõ[¾2t#×䂜2›ðV?ý·õº˜‹ÃáøÊW¾²qãÆÒÒÒ¬¬¬é¾6sž5YÞ zœÙjÓ¹ÎùKÃ÷¶=u:ÕÛ¼ysqqñ̃çL[ïm£Y|ÆóWÎåÖ§?À.‰RYYùüóÏ·¶¶žæ8ygÿ¬ï’žž~ôèÑ™çŒ.þ^X3/—Ó/‘¬ŽÝÝݱX )©©©Ð<…¿ÒE>xl°df7¹”¦0¼)÷µÔva»™žžŽðÂ@ÄTñ1Cvv6Ò{“y!É5ÈßGÓe¹µ…|7 TáÀâ¦Ùï÷¿öÚkû÷ï_¹råœ9s ïÒ /Þ‰‰ PNÐ>R.„}'u€0l6Ìì%XÀ"ð2?Âjä¡W"¬âY· B¡n'crmLæM²éPØl6„ ¦Ñ‚zâçÔÔÔÅ‹ãxaϱM}Í‹ÌðΕÏ$iiiëÖ­[°`Amm-0GŽ@5 ¶¥Œí>~†­²š¬²kyÚš(ƒ?@h”‰˜Àç%^€@199Ùn·ƒúÖHOO‡=?êàv»yG /¤É€ÌBû-àª}}}ÆvvvŽwtttww¿ñÆsæÌY¼xñÂ… 333‘£0 õõõy<ž‘‘‘ôôt10LLLœ8q¢¿¿¿±±ñèÑ£q:×ÕÕµµµ¥¥¥mß¾½¬¬ Ñ)£hö„‡n\éóùŽ9211qüøñ‚‚ô‘Çã@lÔá¢ßïÇÏÊ >!*íìì§£§§‡›W^yåøñãJ)¸bcjð¹€`–!ö¦ 8§!hhàŒn£ñH###rÊ`šD"¿ß¯”êèèÂJ®Ÿ±\Ó°2}æ˜III+íñãÇ¡å7$ƒsDÂ5Y £Bóx<­­­CCCyyy•••YYYL§šP<)qOŒy€0ö=F.\BœÔz+ƒ…µîÀ¸öÚkkkkÉÕåúCF±ƒÃ‡?ûì³óæÍ»þúëÁ§{å•WWIpÍD3ILL,))Y¾|9|9Hp—æææ¦¦&d¦ƒ5& f¦iÝÝÝ'Ož´Z­sæÌÉÊÊâßJß.Ü}ll,###%%Åår¹Ýnb\{m6qyBH˜ãh*•Å+¡Õåí¸>Èõ–2:(Ú³5XŽ´~×”¼5}ñØ Wc65½üÈ9Â'rÓ gww÷±cǺ»»¡/**ÂsQq‚¥R> &2r0ù¯×땹ùÒ7½¡ÔdÔ‰ï5Ò²øD’`¥ ö.—t&”ÀMÛ1{}<Õd±¹<Ã`H3¤Ó(˜‰¦?.5jÆ"_ßÜ/™6úd†©ItUs“r–‡.o[s,³ oº¥”‚×é¥[ìvûÌÑÔ¶mÛdÊ-—g å=¢ÇùÚ×¾&•VgÝÑh´¯¯ïm¯s>ÒðNOýä'?1¥²z.—ëŒBqÈþg¾ì¬¤í»€£ñoýú믟Ît»´JFFÆiÚÆýÛ¿ýÛé̯s/çÒÈ3?ŽÏç;©­Þ3kæÅPâñ‚ U‡·-z°X,###ÈÞͳA¥½Hh0ÄÈ_¨Ù[ÄT‘Gî5ÁÞÂvÓårG€ ¬©¬"û )ͰYµ³gy2°`tt”f:lî­¡¥’Ê)žEC@¤iZ$©¯¯ß¶m›Ýn_¹r%PÝÈO‡;"µÅĶäe]Øl6¸ ¡JÒµ'¾¿E;À[äq0²’Ï+OžQmRä€DW²ªò¨Ü´KFlŒ==¨1¦«¡2ÙÙÙYYYȱ%Ã]>età‹ÅO ùà,ØG8¶Ûí .d25)¥Ô'›ÊÇ_œmÔcll Q+5€1Ãt ¢¸ )CX­–|®‰‰‰`0 Àj/ŸÏç÷û{{{½^/T„ýýýýpçèïï‡C<¨(Yà#¦Ø©S§:;;‡‡‡Ÿ{î9LLTÉëõîÙ³çØ±cn·Ûív§¥¥9ޱ±±S§NuwwCp„GFï@ rõH|Ñ8p {ôÑGiœÏ(ZÒ-µJ §>ŸÉü~?dnÀÔ4¡/¡ƒžÊxX uˆË”á©Ov¡Åb±Ùl………€f’’’`c€!Œ4Z•K+:„²@°¨Í@î”RÈ988±0žÄ¯×»{÷îcÇŽ•••-_¾G¿„8Ó -Q§É±!cx‹Åâõz·oßÞÞÞ^[[{å•WBf¨ò¢@ 0>>T’WeµZ‘: –——Ï›7O.kì/"MJ@ºôDÓu}xx¸§§GÓ´µk×b¡"i§tïééINN...ÎÎΖ:²˜È‹ƒÛápX­ÖÌÌÌ´´´±±±E‹µ···µµ1O(×+¹D"‘ǃÁ’’ü9CX=Dc%žÈDu)))™™™h@ð=år'Ù‘¸šÓé†Ñ®Äh€`Êuk>šˆƒSÞð_>‘&èi\ 8T” ­±1g•RÐÊñî¦7 ŠŒ$ÜÉW-›xeqÊH}`±XÂápww70©h4Z]]½zõj¼¶¸h˜^ë&¾6j‚eSPÑay¸bz™†Ÿé\D×õÂÂB%”û¦ ÇjäÁ£‘•‰[SÛ(ÿJ¾¬MWÆb…ï¿ßæ`üçm?”Ï‹õP RžlX‚ªô¡G'BJ¬=Ó0HJJ:ß6VçÞšÎùâ/Û¶m ‡Ã ¯¼òJüo].׊+zè!õ Ëkkkÿîïþ®¸¸ø•W^Ñ4mùò嚦íÞ½û¡‡zøá‡Mñx<¯¼òJiiiuuõtÕÐ/aÎŽ;þð‡?Ì;÷Àñ­a³ÙÖ¬YÓÚÚÚÜÜCÝpßýû÷?ôÐCyyyØ ™ª—½xñâ={ö(¥80eÌÆúË244´yófxÇÆ_V)5gΜ’’’sOÛ·mÛ¶ßüæ7Ó=£Ûí^¾|ùY´ÞÛ–“'OvvvN×¼[·n]¾|9Îú¦+ ?üðtÓ SòëyòäÉÖÖÖ`08嬷X,+V¬˜­…xß¾}###š¦My¯ÄÄÄuëÖÉ@wçÎ3̯”””µkמ{­B¡ÐÎ;A'™rÍ›7/þOœ8ÑÚÚfhºñññ?ýéO3LíŠŠŠŠŠŠ;w†B¡é†ÊöíÛãŸôZ'/—)‹T(¨±6IC¹{)êŒ g ÆŠ$éð‡œÊ@µ°S—z“ªÒ ¸ m€ìhÓ¦M^¯÷CúÐUW]…pQ7¬^#‘È”™ãtᚬ”Â#pË(—A¯‘‡ºJ) —’““Ãá0Õù|¾gŸ}¶££¬sÎ3€ š>T•þtĺ$%i¯*%¢#|- Ñú—òRU§) •cD£QŸÏ‡÷)MX¤[.3 õy0®Œ8·F"3ÄÛÌÙ$u(HD•€~DHOß}eì¶îâi½$ƒF>,ÉÑÑQp÷ÆÆÆàe±XÜn7î Šé¨ƒ8‚àì<ÜjµîÙ³g||üÔ©SÌüƒ àä{0]BýA5BÏ*¥á`v\ ‰çm6[?œ)¥<ÏÃ?Œ œvÈúäÄü„B!L:¸P1ˆÂtAEDwûý~ð,d8­”jmmMMM…*ŸÃJt˜¤¤¤´´´… :Ðô0Dqñ±±±Ý»wëº^\\Œ ¤ð¶g0†þM0 &:åå—_îïï_³fÍŠ+(‹RCÂh 6ˆ! êééÙ´iS[[[rrrQQÑ©S§ÐD·ÜrËš5kÜn7&\ÍápK"¯„`%Ûï_¬ÔÖñû‹e```tt”ýŽv+,,ôx< eeeW^y%“¨ê‚¾ª 2WT4)ã|®BéééÍÍÍ}}}555………¼\ím6VØ›¬ëPÛl6dðÈÌ̤ØV®K¦Ð])AïÀ{‹ø§šp“3f¸à‰\¤¿ÅBa³Ùªªª>ò‘;v¬©©©«« ænè ]8aëº>444<<|ðàA¥TNNÎ’%Kªªª!ƒ'%%ت: ]¹ÌÌLÉ#Ó&“qpd†eVÙ˜HzÀ¦ Ì–ÝJœH=©Cxya$K¬ó…Û™7’ò£ ¦¿22±’8&‰Z„íøç°çøDãÈÅ2Ošqú‚*!e¤×ë°Z­.—káÂ…9991#A§¬-–wZ‰IóM6 žM*Éôɉ8ØAäÉÆD¶ž¨‘­lrÓ„ï<´¶D¥él$5³ýñ3³@(ã\¢ò½#×sa¸5ÞøPî|˜ÃÄjXìó ôRŒF£¡P( a·ƒw*É,=øœp¡¤z™Ìz™MxëСCJ)‡Ãô–—bùÊW¾âñxžx≗_~9þ·)))û÷ïß¼yóŸþô§`0XTT„-u øÑ~į}ï{ß«©©ùÜç>wêÔ©ø‹=zôsŸûܪU«6mÚ4e.-aÎ7¾ñÞÞÞ@ 0ekX­Ö·Þzë¹çžûÑ~4CkÜ{ï½7ÝtÓ¿øE¥Tvv6&©UçÏŸÿì³Ïâç³HÃ7]« ÍÜS ,xæ™g~ðƒ?~Üb±Lù˜ùùùÛ·oà”R?üá§tª©©yî¹çL;vì?ÿó?q¬2¦§¾õÖ[ÿû¿ÿûÜ»éË_þòÑ£G§{Æ”””àÀçŒZïmË£>ºiÓ¦éš÷®»îúñ,3ëÅ—™§¦$•³«çþð‡çŸ>|îsŸ›ò ÿó?ÿsË-·œ{/(¥þë¿þ«¾¾ÞjµNw¯—^z©²²’ÿ½÷Þ{{zz|>ß”o±XÞzë­sOÚßßúL·¦-^¼ø©§žŠÿÃM›6½øâ‹¡PhºÇùéOšýÍo~S)•——§”Š¿øu×]÷«_ýêÞ{ïmkk›n¨|ö³Ÿ5=饵N^<Ÿ\$eÊãDù[ù_8ƒ(c㫼ø™Û/ê•ù`ÓFÓîð4Ãòƒä™ ‰¼€Çï÷OLLŒŒŒœ8q¢¥¥%//oΜ9ؽYŒ¼éHèŠ 5)j2H‡m+ãX†‹¥Èc`@R Øv‘HäÍ7ßܳgOYYÙš5kÒÒÒ”¡$Øä_[!–ÒþChlˆ#‘ˆÃá`8Ê2LÊñv£R­íóùººº`†Ox ìÇ Ï …p àááa™ÁþylllxxØb±dff‹a¨õêï÷ûC¡Pggg}}}ww÷_þòÀ%e:³P(d5r1ë¼äÝ(CJCúÚëõ®HÆÞhÏ`0 1®ü~¿ÏçCÃÂÐ'999+++%%Rð±F£”‚x„X« ¢˜‰Ï>ûìîÝ»ÙÐÙÀBVÛ 3p5Ždô&±©É@)ãLügL”ÚØQý©ËåBÐŦ@ÆÀýû÷ D"‘¶¶6Hk§#ýé†ýSrrò¢E‹,X€lž¤½õÖ[›6mZ»víwÜì™ø>VpÉHHH¸óÎ;‘œ.ž×00+"ph뺻»‡‡‡¯¼òÊ•+W"xCÛÊ—Á”DOa!—…RÊáp”””@ŸhµZ ‘Ì*ÈŒó$!M¶êcÌO¢ £k©Ë¶é,¤˜KÒ¤„„h´6sèšôż£‰ÆÂ-ç¦3þKàÀÄxeC™Ös5Y gú+SQ“Y6x¢h4ŠñÌ.&$1>>><<Üßß___ßÒÒ$WÅT=I¶µ«{‹Åâr¹®¸âŠêêj ‘uLFÙ Ô‘¾£««k```Û¶mUUU0³ÇðfŽ ÍÄb±@ PPP`1|ÇtÁ¤6¹5i†fÜÔÎ?"ÀA }¸dGÀtG Œqå—äD@]|Rz¯ŒŒ"¨6Óõbx;N§Ó ÌŸh‚FJ€fʇ•ƒPi Î~$ŒBA½ÅbÉÍÍ]´h‘Ûíf²¢Kh|¾õøŠ×” \À”¤81%%…óW7Òþš±x‘VÚ˜aôÉ?W“·^¬!×p%à6bg")iÄSäÂÑ0,0Ngfff[[›Ãဿ¡f°’Éž£‡+?—µ¸£¾˜Èùˆu8ô÷÷ƒ,‰ã–L i•À9¯Ï·{òì³·,X`¹dó»íß¿¿¸¸øË_þòW¾ò•é¾óõ¯Ýb±üêW¿jii™áRÍÍÍv»]®JI~´Ù-¯½öZMMÍí·ßþío{ºï|ñ‹_\±bÅÕW_=sk;vÌápüá¸öÚkg±†3·jaaaCCƒišÅ×íøÃÍ7ßìr¹6oÞ<Ýž~úi›ÍöðÃ_ýõ§Y·õë×ÿéOZ¶lÙ¾}ûrrrfñ©MåÀ0áÏ¢õÞ¶Üwß}«V­úð‡?|·Fùú׿®iÚo~󛿿æóTÏo}ë[º®¿3™üñë®».??ÿ‘GÁ'GŽq»Ý0=‰/¯¾úê‚ n»í¶ÿøÿ8µ*++knnÖ4­µµ•Î\1”ÿøÿÐuý™gž9vìØ _{å•WæÎûÚk¯Í@Y}õÕWËÊÊLÐå$Œïî2¥xaº/swCeXzã: xÂa{\\çŠØQñ@‡Ã$ÑðÀ4ø5Œ. ôôôôööž:u*‹á|þÈ‘#yyy8N$wuuƒÁ¡¡!ÔVÆ<Õ$xd²_á¹+Ý7€_ POIInoo¯««”ó /ŒŽŽÍáÞ&ýýýûöíkooD"999¶ÑPØÖ“µdµZ›ššêëëKJJ<Ö³¡’Á`qQ0D"Ë“'Oö÷÷çççà ~0„ÒÊb±ÚƒG;qâ„ÏçX¶B$ñxMÓ¶lÙòÊ+¯Ðâ]’˘6B$ªˆµ¡0«éHÊðô £‹}FN§Ífƒ? ˜Ü§¦¦BÁªëzNNÀ2üW*€êaäD£Ñ–––C‡Í™3gþüù™ÈÍ04MËÈÈÀÞ’`¨Œ@8"@3ëð€TAƒöÔSO566^{íµŸúÔ§à(Í#àH”ºáí…®¤104¡ 999Û¶mÛ°aCiiéáÇ;ÖÓÓÓÓÓƒÞ‘ MNç±±±æææÞÞÞÝ»wUWW—••ò£ë:Rq¹ÝnbÍPi!NKII)))©¨¨û› OÖA3ÈÄ…J©ôôt´M¬ÿ±nÖÉ9×ÏüÙáp¸\.dåCº¸˜Akc³ÙH…Ü 2Â]™ð)m²„Ѝ½6ÙÁÚj”øU JÒW•PœM·´ ÕãÔLé [R‹Ëo0åZÍçÅãc„&0EòrZÉ‹30Æ~È~KW2¢ö‡êììôù|àñ…B!¸dt­&ógu#1f–Tধ§»ÝîE‹ùýþÎÎÎŽŽŽöööŽŽ$a4Eþº®ƒÎ922ÒÒÒ‚ÐÞÞ¾sçÎÊÊÊââb ö¤ ƒAp39žã»•ÕÆrAʪ© ´Éú8m²Œ.*Ò’,†‰ ‚B¡i°\uI”“cƒ'"x1áÜ‹*Éh’ÍÐï#Óô”!$)G—”øi†– S¥”ÝnŸ7o^NN¬¦¤ŸK.f ~+¿i52WÁ±Löe'6GdMÎ_©´µÿxùP<§‘¸3 [ oºA[–[‰ Jpœc;¬´8NÃøìèè8yòdii©R ‡:Ñh$_·Ûíp8 ].€H¹Xi⨀‹\1ƒpVäóùȔĀ*\¶¿‰A‰Ö32œ2kðV$9yò¤RjáÂ…çµÆ—P‹øbËvAÊþýû±1=ýÖxÛ¢Ÿž4ém[‘ÃYd<¼´ rß6%¨©œû˜Ü½{7Uf±ëÏG=/TÙ¶mÛþýû÷»ß]èŠ\øŠµ··+¥Þvͼtûúr1Sìÿótyº‹Íx@ðÖÁ‘¦ÏçC¬>>>>44„øœ)ñçpùA/Y{CA‚¹p8 ºÐèèè<À¤ò‡~à ^"''glllß¾}°NÏËËÃ1>…{Þbœ@"(À_@X á¢Õjíèè8qâÄÀÀÀž={4ƒ›¶}ûöºº:xm} ™®ë^¯W×õíÛ·Cí¢ ¸„(ŒN§<,¡@BQJÁÓ%½l¨CDS455õõõ‘³  U ¶¼š¡zŒ2<<¬ëúÐÐLÇa5¯ääääädlP[<¸Ëå³@Ó´`0ØÓÓsìØ±@ P[[»`Á—Ë…1'fšÚà"À.!¾Ãöš ƒ—v [vªð5fH—-===)))à˜ ,|iéÈc “dìažþù®®®øÃÈ_†ÐÅä?…p4"Ð tÃZ}pbbIýˆÖ&À oMOOïïï_´h,®AÜKKKÑCiôpÜ’D ÝêêêmÛ¶%&&VUU_ýõ£££ðÞêîîÆ’nò{F'†B¡®®.°ÕGFF===]]]þt]‡h Ni'Ç•.²³i"›Åb±8dÅ Hj|ð'\Žsúý~ôñ)Ä¥hPá$×ÉÙR¯¤„¶WÆšÐî”q> R¤¦ŒR×u •M%ˆfZo§ü_¦›”·‹ñâáxÜŸí¦&3´8Ú¨=‰`çµëy__ßÀÀ@ooo?sÕ•‡òµ¢JgÉå¡™7úô¥p8Œ•dáÂ…óçÏjkkkkkknn†Iœ„*Ø­˜Ñ}}}Ï<óŒÓéÌËË«¨¨(**B>M ÒlŽZTÙ8¦Æ¤°1g Îa£ ªÉVÄ(uƒ ï@*Ê탉†·Ò’h‚8&™>ÉX]€ßïìîî‚¡.Èq‚®aS)µ%F åPää÷û! ŒÅb™™™sçΆȒl(.Å$ wá’‚tšhI®¢œû|@¾Äù‚`³GEFQ\Ç#‰m8Ærm±Xðn AÞd )ÃkD×`0ˆí ¨‹à;ã"ÃÃÇ­««ëêêr:ÓWJ¥¤¤¤¦¦~ðƒ|ßûÞðQŽa‡ks9’8uBB‚Óé,**Bƒc‚}E(€ "0Áz Åš8‰ç£Ì¼UWW‡º.Z´è¼ÖøÒ*===[~´ URRRÚÚÚN¿5f.§/M:ÍV}òÉ' g¥ng±Ûíÿú¯ÿŠóÕYÌêx:%55µ®®n¶ºþüÕó‚”üã÷Ýw_$™AúžªØÛ®™—n__.S-Î'uºb¢<ÐÎ ‰uuu?þxCCNï!ßC̽;`‹ðB–RÄc]0Þ`8‹`' ¡Öøø8L—ÀÒÇE’““ñáÈÈHBB©S§FFFh3,¥Žt´‰ÉÎÉ‹Ð@)…Ì€+!ÔÇí@ÞÛårUWWC\f³ÙœNçèè("m -'Nœðz½™™™555ÙÙÙx@ÀU(xRZ=z´¿¿¿¦¦I»`~„¤é Ô0ìÁî<))éðáûvíºþúëçÎKýE%hIb‘Øgûýþßýîwº®à())IIIAͩЄ[–R éí'&&—M›¾¾¾ßþö·ÍÍÍùÈG–,Y’žž1£4úÁ­IôS†×Æ·ì¢ rä¸)CÍD˜)55:©…Ê ¸Ë—#‘O(ÊÌÌt¹\@A-Aø!½WtÃÁ*F8†‡¬$â%âw´˜òªQnn.28ÎöööææfM”áŧd(À@ à‚”ŒÍ—œœœžžžššš““3oÞ¼ÎÎÎ'N´µµuwwŽŒŒ€ÅFXŠ1- ®¡¡!Äóo¼ñFggçW\‘ŸŸŸ]PPàt:B 0ŒOe ?Jð#pX G­H$ï0ÚÀQhÆø Ã@40a„¯ ¦IšÄ(—‡$€˜( RŸ8åúFžÈ”_#±Žl¥"a‘g(JÖ„0·nÈŠÜJÇôçä•0Å›:k´9kÍHs¡ Vš2ø8¦s¬Éü>|²_xáfTRN[%ìÀSSS%È(Û!fÿÉ? …BX&ëBñ§vЉ‰‰999µµµƒƒƒýýýmmmȨ#<5¤Cµ‡‡‡a‹öhVVRˆ#¢Œš˜È‘Ê•H.Àè^±ðÒ_’OŠ[¨¢²XÂ1Ò»Ðçóy<há ×ØØˆ#ŠmÛ¶UVVjÂ2\rT´çøøxSS„ä---ýýýÁ`°»»»³³„b.n\r!ÊŽiC‰ï°›€ìp4² x*O|?ø|¾ÁÁA4ûðððÞ½{{zzäxC)z`M£8¶N§399¹¾¾¾§§gË–-¹¹¹ÉÉÉ £%cFfÇ$ÍŠh¸)™ùøW0–p–Ö’xàj ÁAer"ÉÄÄļ¼¼ÜÜ\·Û tzjL¯× žxFFFMMÍàà`,ƒÜÄÄDWWW___BBBQQQAAA~~~JJJii)‰íRŸ8åù¢6YcˆÉât:a†€,76›-‰‘‘‘ññq·ÛMO®¥Q‘û2ÞzvˬÁ[ô•¿°ðÖ—¾ô%MÓ~øÃ^À:ÈrúùÑÔ¹e.»$ʵÆt匤Io¾ùæi¦l;ÓŒ‡—b‘)AOGzöüóÏ÷÷÷ËOÎzLÎJ×OW|ðÁKwîäää777ÇgxoVl桲}ûöӜї˔eÊ@å‚i8_aþŠØÕdCCC^¯Ì¤„Ñ g"›Íf·Ûqf~ä-™™™v»Ýn·ƒ5ƒ˜? „ÆÛJìƒÇÇÇ›››Ÿxâ‰h4zçw.^¼XÓ´Ç“——Ê!)‹Åói—Ëuë­·Q5«ó›[yZ›3®ãi'ˆ]Üa+¥:;;ó›ß9rD¡eË–Ý~ûíÈሰì—_~¹££cΜ96l(,,ÄÞšŒ*Ü]&\¥¥¥óçÏ7eZdwH4õÈÈHsssyyy^^H‡Ú €IDATžI±Ë+àßññqä•›7oÞ•W^™žžŽö'¡R8˜.¥¤¤¤§§ó"p–™™™™™ÙÓÓ“——‡!A€Luù_2Τ¯­I˜&c¢_xk»ð;Lgöö¦yGE‰n8åSH@*??ÅŠyyyÌuˆqˆ{aˆ*áð‚;"âB¨&Ý|Ι PÀ·RJeåøø¸Ëå*//OKK:I(Tþ€˜ Á6›sŽÇãˆ:ÍÊÊJ¸ì÷öö¶´´>|Ô(¡ôÉz1B6P„444 ë].WIIIMMMfffgggOOOeeebbb à˜Åbðõ7õ>ííÈÕÊÎÎÖ e–2ÀʘawM`”"MÓ²³³ ‘È:},ÎŽ •µnøãè†ÊlºˆQçÄþˆ]òjôBÎEŽ©U/! ‚5ö21È4Á²¤¹wê“ýéåT":, ¥Lý, %œHð¨]v —;&xÕ„ù4FéðððÀÀ@4$Öôšà³D ¤›œ`‘¤!&ßD¾E¿ßo2Ú“º9©ªÃòòò`r„ü ÌÆ`:­!‡‡††4#ãawwwzz:N2Èä•‹•R*÷ôô MLL¼ð n·[×u"8kA«’±3Ò]Ë„h 48Aœ³]øfooï–-[h3/éiDmºMLLtww¿ð x÷½ôÒK{öìòÑÔâØ†da€M¬ULˆôùsÔHŒkZЭÀ¸”ÕÕÕÕ××ëFâš²IÏ)Ì}¬uè}Þ ¿Â‚ÜÐÐÐÔÔÄ5SªŽØ58¯Âuè¿“ÍfcÆ[tVBBNn²³³iÞ‡ãüÎYã¡v»ÝN§S3²%X­V Y˜æyÁL,888ØÓÓ“™™™ššŠáíõzó"¹mcccRRÒüùóKKKsrrx¾ Êdp&·[r¡þqÊ1³pÎKÓ´p8 Ÿ{ùö!]Ý:9íÃy*¼511ÑÑÑ‘——wÖJž9\ŠåLÅŒ(ú;˜>,6Mfëw²œ‘4騱côQðPŸ>;ø;\NGzväȤ"¾HZoº²oß¾‚‚‚ŽŽŽÓ¯çEÒ (ííí¼5eÅôÉÖ³ï|9~üø9Îè³[0¥M?¹€íð^+råt:322ƒõ÷÷Cf·Ûkkkÿïÿý¿@`bbZ<È|psL•ÂѨ‘ñ 1â ÆðäˆE£Ñòòòƒž:uª   //5§ÓY^^ž””¿pìY‘i>??l)Ib‘YÛ-FGSœÃˆ›oØL»Ýn<²Ç–••n •¬¤Æ`›{üøñ`0XVV–‘‘‘žžŽÍ1T)¥<ÏððpCCC8nlld°-w¨ @@ð_hýŽ9ÒÒÒrrr“0czÍëõz<n˜ÁÐçó-[¶ vEZ\†u^?&L©£’ÎFÓ™nüä^qÌW<%6„ŽòjºaҤŠˆ” è†K± †Ã©~YYÙG>ò¶°ÅÈì¦É¿ˆ\ÐßWM 3ÐÅ8'Žü‘ôát:ᇈˆðÜ”´2k$Á`À1*¨ÏápD£ÑŒŒŒùóç/Y²dll¬»»ûĉ ƒƒƒÃÃÃôˆàJ˦†J)U__¿cÇcÁ`pddÄçó‹d°ª'K!™ìD(Ýn·fH„taÒÇAΧâ_6°rÎhª )ƒX§Œ$k˜ V#u>وÃ4=\‡²)‚€°p‚,‹ß¡¨Æ:‘„ޏ€2|ÁqS< ³Q“¨Hø kÅt¨†Dlñ3‹>ÙÛ h2 Ç+£rX"KÃ]B@a‚ŸÑ(°®”‘­R™™™'jQpüGFFÊÊÊJKK‘‘Œ®‚˜›lXô’Whš¼^/V ˜á²`~ña“““].hÚtP†K&ýÔÀÕe—ÛâÉE\ðåù¦3^‚8ÈÑué2‰ ¥¥¥aw¹V5¦¹ÝnÏÊÊ*,,Äù¶"x9bpZ,–‚‚‚… jšF6~E5·´ð7­örôêSY£ê19¦Ñ`êṬFÎt¾ÇÑõÓùÍÍV™ex+77÷t²Ï7õ³Ÿýì\þüî»ï¾ûî»gå)ÎbË…¶mÛ¶jÕªóØFçPâêþûï¿ÿþûg¥5®»îº³¨Òïÿûßÿþ÷oûµZõ4ïû¶pà 7Ìü…öööÇÜôannîY<õ™–/ùË_þò—å'§Óh,ç2&Ï}ÊŸþN§žëׯ?•<ýò‡?üAþwʼ„,uuuȰy¾K| ÄWìk_ûÚ×¾öµ·ýÃø2gΜ³«Ã å^'eÝfvÓ¿\f±p… "tO £££]]]8tµX,©©© ø$$$ÐcHM¦Ä+#@²ˆ4XøŽOqþ?00€“X†ãããéééË–-;zôèÖ­[€544”——ãO°F†˜ éÌ$0 G›œ!‹aZ©bÓã’èÄ๲²²´´§Ál.«ÈBÅí{ÿÈÈÈþýû±qÇɪ4obH¦i¬Tõ©4MrWJ$"!!¡¾¾¾®®Žß™’d¡&{ÁÀöaC¼›¯2B‹(V#9 (¸­Áõ©Ø&LÇô¹ü$þWºð"QsQ“9_Ìu(-©I&΋Ð)))¹¹¹4™â¥áÅ&S¸¶KXÍÔò¦ÅáÔ=%%F6Ì® eDʈs0¶ñ¹Ífƒz7‹ÙívÊ{1 ñe¸}iš†è·¼¼|ÅŠ@T›ššŽ;VWWçñxP‰UÉÁ õwõõõÇŽ»úê«•ˆiÉ?’@$ù,ˆ¢‘àƒÙPg’•b†ÏÍt8C‘NwAð¯ ;v< ça)|_a1QðŒä‘½Š„n°á outYWW×øø8H@.FGG±ÚH<&e^9r[¢ÑèÈÈŒÆ;::@ê‘ÙBI€ ‡Ã£àÁå’…Þïîî…Bo¼ñÒÄb1ø¢§8ÆÔä@3GÌÈë'G±˜µÑh€D*L+€AX'¹Úçää$&&Âÿ+ û‚ø G—n-y½^Í  ¡éÆu8`]=z´¯¯þwriB?ÕÔÔ¸Ýn !+Ê@OPZ[[_yå¥Ôûßÿþ9sæàIÑ 06¢u#@t ¸„´-§èrbbbß¾}ŸÊeà]IIÉM7ÝTPP@ÄG$ÑÌ-ƒµbbbbÇŽ×^{íºuëècȡ¨IM© ð—yŽIL44T¹øÔÖÖb£»“ñ;Í`&’ó%±KÖSzùiÂ)/''Gª•‰“7ÊI~.Vf@ö¤ikF2rùÊÀí€WJf. C¥ug4zK+2’+#™ë‰?´Ûí©©©’6…3È´5ÃYO¾&È¢5³jòI\µäéæ”ÓéäÈ»(Cú}ÉÀ[GŽQJÕÖ֞ΗM[Í›7ûÛß~á… ñÉÎ;7nÜî¾ûîï~÷»hå‘‘‘·Õ7}õ«_UJ}ÿûß?ëyÛ̉J©xàm3'ª3±9‹ïÇkô”RûØÇÎkú°ööö+¯¼rxxX~ø¶™•R?ÿùÏÿïÿý¿&¥›©„B!‡Ã±uëÖ2'¾úê«7n”§¦3§áûùÏþïÿþï&5ÓYÜW)õ¶™Ãá°Íf{å•WfÈœøéOzÍš5ÿøÿÈOöíÛ·lÙ²¾¾¾óš9Q)UXXø¯ÿú¯_úÒ—øÉ•W^ùÈ#Ì@úÎw¾óàƒÊlzgQþýßÿýÑG­¯¯?ë+üçþçÌ™ïºë®ººº;vœæ333÷ïß/…™÷Þ{ï;“9Q)eÊœ ‹‹‹ëêêòòò¦üþ;9Å´þLY±åË—?ðÀr„ÿÛ¿ýÛÛfNlhh˜;wnCCà ™Õä·ætåÁ¼÷Þ{g^I¦,ç¸`~ãߘ˜˜øÎw¾³téÒýû÷+¥þùŸÿyvÚý/rrñ ( ØíöŒŒ ìÏN:544”››‹]!ìi±!r¯¤!:blþ q“±±R*))iíÚµuuu¯¼òÊÎ;7ôdÝÓ'ØåreggƒèAj1†‚D:¤_‰)ÔÜÜ#~£'ˆÓé¼þúë‹‹‹Iðay¢0²D"¹Uœ½Žiò¿üA"Œ+xº.ã¥é XN± Å“›iÍ`å½ÒD&&< p:ÊŽ8fâ›ÎôPRb)-`âa/]h¸”o¤¼Ñ¤®2áh¼éfÌœ(A ^0zùç4ÍÁx¦‹VüšZƒ?‰ðaµ¸7$VÆPÀ$™Õä·:…ä*qpzÏ e€ÈÖÁÈ!¶ ä(%%%;;»ªªjõêÕýýýmmm0•ïêêòz½´=æ”@74MCöLÒÍÀí5¹ÿDEimmõù|MMM¤Û˜£„J×õP(ðÃdæææ“'O"$yë­·ºººÐ&›7o.,,$ž‚ð[¶; pïE—k‡Ç„•Ýn‡Àð±Åb  øk¨RgLLL<òÈ#©©©@£¨m¤Œu hˆ€))®N§Óï÷#9ì+¯¼‚•)ÒÀb#¾¶bî5Ce¬ Èã3ãI“““Á'ÂÈ«bU‘r­$äáv»³²²RSSÝnwNNNaa!ÜýÑ›„¨X\‡œÝОy@u±Š„’¦Øžƒ ˆEŒ­¨‘ïU×uÈ®‡‡‡1ZºººÓ—JKKÛ°aCmm-*c™\t¡é³Ûíû÷ïOII¹âŠ+˜.Câ)¨92˜šÈ JE³ ØÒ]‰¼~è>ÍÈ6(×I‰Åàûh[@{™™™X¾¸P3åšZ›ÌµÄ#ðŒ p!¡®ùòañ²€èà‘i¥•8©R!ÆDMXÈPãu˜Ö–¢c¾X¹üÆïOä Ä:Lj¬™šAÓÖÄè&%dÔ\ñÙ£Çc†üœcM„‰‰äºj‡‹£Ä[ª;±VãÕczoÊQBùN”!î g4xƒ"Á –>›±b—Œ8ÙÕiÃ[²twwßu×]¯¿þ:±-¥ÔêÕ«ÿßÿûõWõ½ï}¯  àK_úÒ]wÝõ»ßýîÏþó-·Ü2ÃÕdö“ww9»ôaMMMç{T¿ÒÔÔ„µû"—Ë]å¢ÕĽwŠ®ë_üâ×­[7¶u¹b³U.ç[DÁiü¬¼¦dÊœûe§ ×5A®©©©ÉÉÉñù|o½õÖÎ;srròóóy”ÍÄîÜb±„B!e$%”nD1‘Ê(U(b ÄKa]\\|×]w-_¾¼±±177wÉ’%pj‡r‡[7‡Ã±|ùò²²2æ›ã~Nfj“mkƒ£‘q”2Øâ¸\®¹sç–••!½7þVºˆjB!m•-“-ÏHUÌgB¦DŸc†ß9aš oÄw+ÿ]Ân·|Ô…`D—Ë¥”B·_@¬…€© Ýn7úW ,”¦ÃgeHAÕdî›=f8Oc͆ÄC¥öçÕìGê^-"Cœ2Ìì-"TZô¹Ç®Æd &ÏÕ¥"si^Ãg!æ¥!¤Dà‡x49Zp²„烀ƒ•œX ûv"Aããã½½½‘HäÈ‘#˜˜ ÈàÖXcÀ{B^­´´4Ä]ì €>V«5;;;33³¨¨èСC'Ož …B2 •!åèèèSO=µk×.]×Ác¢ƒ>ôMVÆ&%%¡ª¿ùÍo ¡ˆD*¼á4A‹Ó Ÿ~àtÔ¿Œ Y­V(ÅN:ÕÝÝ  ãX4‘|Ñè†s9s€‚l€ ù4"ÏÊÊîƒJºÝî`0˜——›|Àgè&Ð%ÊÊÊLbLÝ —ùý~(œ’š‘2•°E,ëëëõù|W_}5làtÃK›XF è37`B«úýþ]»vµµµ]{íµYYYT+ËÞ¤nK üˆý¨ëz °Û퇶X,¥¥¥ÕÕÕ¶@l!X¬ë:9\\ôPLvlLbZÁ°p@âÝAªƒ!hx5ƒ‰CÀ‹4"ÌñŒŒŒ¬¬¬ÊÊÊU«V:uêСC ^¯W)UPP••e)8$;UNÿ„@.Ç\"äLç»OâeM8*¢m=g1Až8z„ xçZD„ãÁn·cYfËC¦D¾Q¹ŽqüKpÄ"<Ñ4C#L%ØO6–8;árBBò·($ªeÂÂä!ÅÈ¿‰·9Ì+äš#‰Rö+×[l‰‚i†}»>Y쯉#.¢l<0À¨F¢Ö011'-"i þ+û X°<¹ÁøŒD"äpá8¯ñ$@ ö++IK>ù˜°VÄ;6vd#òAÐTâR999dxAÈÆ¿²nVø-¨Fh(0bJKK!IC“LA+MLLdgg+W[ ;e¸¤í¤¬á"sV€¨244Z±c a Å4!¡’u8¦DÈ^rÝÃ)))'Ož„€@$&‚‰’œœÜÓÓƒX)LC?Z,–´´4 Øt2-冷(‘RæqËÉÉY½zuuuµÝnÏÍÍâƒÅŠQ=¤„í¸DŽ”vHò‘Uœ¢ .}Ù,ÂøOæ”ÔŸˆ+ á'¨’¤§§WVVvvvB­9wîÜââb¾¸[âì™p)¦Ðî…%ǪÄkÈÐÁ¿ðAãMå‹ ßIIIavyqMprÙÑCÔ ¾˜˜L.ßtJMÃOB&ÄÊô°ºÈ{`ª­6Y‹Àl-\FLã}6Mœë˜® ?¾Gð3Iʦoª¸#S;˜z™cC¾åu$B'ÿP^«x‹ÜQL¹s“›(I¡Åoq ¦&઒˜ÞjµJWM ,ʪªóYfÞjooÇgá+¿{÷nÇóꫯ¾úê«þóŸñyRRÒºuëþøÇ?z<ž·ÞzëñÇojjz[¦ 64çµÉ.†òÅ/~t9–ÓLö¹Ï}îÓŸþôc=vÇw\è‡8ûr^Óð½GJ0ܶm[<ŸårygÊØØØ¾ð…_ýêW<òÈÂ… /tu.Šc¹tskÎnánF?g‰â…zÕZ,–¢¢¢ÚÚÚÇÇb±ãÇŸ8q¢°°p’>ͤôs'‡+H‘ l MØm .âa&¸£££<#ÅÁµfTË 155Õår]’-&a éÞ@Œ•¿(6©©©Y°`¬¾°[•!+‘¸ËØØXQQÑÇ>ö±“'OŽŒŒ€z€«QΉOÉÎn·#$#±ýY(0ñP„›Z 8L /gèP@'”°Ñò-€<÷@¯ð5øà*R0‡Ôh.ÝÈc1ëQ+¶ñ#Ì>&%WÊÐ)ȱMjjjUUU0ìììT†¼ÍfKKK‹I9Á…q»Ý$Z\c‹ÅëõÒ•Y$àŒš¦@3ccc>Ÿ¯¿¿¿¿¿?11ñª«®Z¸p¡Ëå2ì‘ÁÓ‘…Ïç{ì±ÇÞ|óÍ|ä#K—.•+€ôÅ‹‡ b†Kç;àžH$âõzsss#‘ˆ4‰Ã³`^ÀƒF1¡ä¬)CÁF7D€¡Ñ8PàjBnFÅ.b¤;™x|løÄs•þË:Èe“ò4°xxA]Xâs¿ßßÕÕ• ·5y/ô¦¹nx–%''K_Þ:‘™"4Ms¹\47”îHjro™¬($"3ìê¦ìÙ).‰¤«hBD&mõMk¸nБ„ÑŸ Àezzú‚ xœ„ùL8ŒÛ¯ºê* ã))±S¾ÁY="bX3GGG1›ªM+.ã#ÓÅ oÉ–¤}›|ÕšÞ³3ï´iŠümü{SKÔ_dGǦ1…4 §)¿#/¾©ÉH“ôI^ÙñÈ¥@M…ß©É;‡©iBEHæ 1JÌ=å`–ÕÓ&c”ÊÈ|JšÚ/;Ïåßš€¼sÙ|žN™x fLØréß644ðç­[·Ê_UVV⇮®.¤´|Û«a1=pàÀÑ£GW­ZušfÆ—\ill¬©©9zôèYhôþþïÿ~Æ Ë—/¿ÐÏq¹\˜¢¿ë¤g—V¼êª«Ž;öÏÿüÏŸüä'/tuþ¿²{÷î»îºë"¬Ø¹—³ËKûî+dÂ_芼MѧbWá¿`£,_¾|ëÖ­g```ÿþýË–-ƒ®‡a ½®‘ùb¢ÌHJ›,À¾ ñ'ÝyðWÈð0M;6ý@>ñçí€3°)”Û;b^ø„e„=«b?¹ƒú28þXE²3„IeeeÀP€­€öb1lt@ö¬Àb±@íÅ|[°ûA#¥‚ Á]Þñ n·¤*)©P†w/ê™’’RWWWWW'} Ã°ï‚Á ØCÅ0ÂÌÔÑÑá÷ûŸ}öÙíÛ·óûýÀ\Lëa»ágÞT/°‡\.Wqq1r$%%ÁÁA`%hÛP(3òÓ%$$àà=’ÍAí…€ÄÿàL!ô…YŪ ¢ ‹@ê¤t]‡P…ÒBâAV«ßøøx0œ˜˜p:™™™ˆ4FGGiªzâ¿IIIN§SÒîˆt 2$#ä„…©c¯ôôtø=Q¼ƒ‹SCTQ=¸–dÓ}Ó wpÉÀRJùý~²êÀ‡ l0"‡øç,=˨-ErÏÂÂBäxX¶düZ¤ Ó²IÒ:Sƒëa¹ë† 7]èã”`”ð:hIÜT‰X:6•?ãX>›HÆð“2ˆÿã–C—i‰õ¤¤¤“Þ%YB¼Kfffaa!}úd[ñ)|©™bã£2˜ª!˜&Äua¨Œ ’¶H†Ò 7˜)h—Ø¢wyà +gš piBŒFLM®‹šHÖI0T j2ê§ëºÃáX²d &D!%faªn-ë^ÌÈB+­¯øø6›­¼¼Ün·›ÐY+JM˜2µ™ZÃH‚.‘cU>—Ig“ßÑ'³žåoã?G‰ŠTªœY&€IT_9â—*Ùƒ¼œÄŒÆË‚S¼fB7å·ƒœÕ$[ŒÃOÅÁ…rYN ñËé¿$n+ãTƒ+-yÁxqË©§nŒxÊfJdpÖ‹f"¡\»aãá½oþU~ñ‹_üã?þcAALQ>|ÅW(¥¾óïÜsÏ=ÓµÝår¹\.—Ëår¹\Z%--mddä<]|ñ²üùµ-/à¦ÈرkwüŸ¬YõÿGëz{º>ü×ý™øï\»aã¡=»ãÏ®Äcd³ør7±ÊßÀÀ@ ðxßÜï‚N¢ëz0ïÉãý~?€*Êsp¨(±hGàÀïèè(%Ȧ”T$ÃN`+¸x( ƒàL1ƒö¬0SJE£Ñþþ~¸5#ò …B@C¤ë€›¤¤$»Ý7w¬À â×è6Å h¨'ýtRRR\.°ü-ž -Cú‡Ãc|‚nÊ0rƽè#-ƒÕÈÏ0íða2‚¨À‚Dªä²³³Öüƒ$&&¢Â¨<\RSSñ ÌÔ &Z ¿^%n·† IxpœQÇŒ7Tqà ç­Íy`sTZ&+¾5Ã… .9G£é¦à¥Ñ#D(a,dbyôÑG¥Hœë<²„•——ãå¨MÖÅcJ»1T/ >|øå—_þÔ§>U^^Nƒ0^\¾Ê‰ éÂÍÝdžVh. •JøFb@¤Ë™6'²wxХŠ‚t~A7õ©ÎŸ¤Ž’]Æ—Ñ”@Ç_Ę,h^¹È4ä"Ãñ@:›û>¹´¼5µÛDQµÉºB9ÌØø2Ì, ó9,qzF¬êx†B!‹Åâp8l6›Åðñ”#ßb˜uŽýýþ¿Mñݙˋ/¾ðå/Ï”pvØ[ ;–––žæ÷åüokkûìg?ûæ›oΟ?ÿ±Ç“­;ï¼sÓ¦MJ©úúú²²²xqâ—¾ô%MÓ~øÃò“Ÿüä'<òÈîÝ»·nÝzýõ×ßyç=ôÐ=Ë%‘9ñm³øMWÂáðš5k8 ”ºë®»~ùË_žÑŸ_ð̉>øà7¾ñÓ¬ðå̉,ÈœøOÿôO”ž½-=çræÄóQ,XPWW—ŸŸàÀÓaÏÍVæÄ§žzê¿ÿû¿?ñ‰O|þóŸWJuvvÉ/à5sÅ.Ý̉gº+¥ü~ÿÑ£GW®\i±Xâ3'¢/Ñ2+8Ôy=©2…@ò /%%%çååmܸ±¾¾þàÁƒmmm?ûÙÏÚÛÛ ‡‡‡€ZR•Rjppp``i?ø ˆ¦x¼ˆÄï÷‡Ãá`0a£SÆT´Må†.Ë£££LäGà€Ò!«HÚK îÈQU„dÐ")#áœP°%%íŸ;oh“´´4ì¹#‘ˆ4¯¡0›W02”R؆êBÆ%ib‡!ÜŽc„KddHª‘ÓédÊB­¹`tl‘à£Øüc§‚it¼© ç”|Ñ0[bXñÇò¼Âi2DK¤§§K®í·„ƒâdŠO3ÜQ«Ò&³!ØM2Æ#G­çóù€Q*ƒ7Ĩp¤)Þˆ<;àYtRÓ„ÞŠq¦ŠS6Å&gxä]ض¨ § ³Œiš4:GÍpFƒöMŸìV® *Ü…RPâi š0nÇ—-q ÔÔäX°i$)))‘äÊx)±é"ñ+ê À ù Ň¾èVv¬9…‡Ê€c¨ri×´É<ïCY}²XI×'å„Õ&Ó@Ôd1—>™…?—˜»šìÍ”àr¹(Š”ÄSÛÆb±¡¡¡¡¡¡ŠŠ ·Û_+Ù’ ¹ë¤êZ}2†¸­ ³í#ß2l@ýV®!œr±LÖþsxÒ _°¨È‚"_všHêJ%føªi¶Iã€3ÊV’ ÕjÍÊʪ­­íêê rÞ)¥òòòV­Z™-°{5ßJ¢“|p—zÓ&Ó…ä¤`­$Î29g„D‡ÙžÚ“”1]0¯å³›^.8²ÚjÓfƒƒJ>)C÷J ÌnÊ„<ð7à—1Jõ©„œì>‰’Hˆ¥ÀÔ<Ò…?õÔü²´²uƒÞnzœP(’ Ïö‘\0É™ÅY ~àÑ‚$¬©·K¯|îevà-4º)X:ÍRVVöÚk¯a (?Åb¯½öšRª²²²ªªêÃþðŸÿüçM›6}êSŸâwhòÇ’˜˜{ûôôt¥TZZÚym¾K«ô÷÷èC¶•pûí·_è].ïhioo¿85qïµ¢iÚO<ñN*C£Ñè_ýÕ_ƒÁ;w~üãïíí½÷Þ{Ÿ~úiÓ×,Ë;\±‹¹\ýõ{÷îýÞ÷¾÷Õ¯~õB×å=WfÆ:õ¬X±â3ŸùL(:yòä‰'ÚÛÛ!\BØ© Ëb”RHVM¯XA[3Ü£ë‘AzB™\›ldjR߯ øM~ˆ„¡£55n5ÃÊ€“­ /B’|Y܈ª„½d}LH'šiš˜fº©qø9"OŒ@Þˆøšœ>ñpž©wtAñ‹oÀxP€ Âá_y ùúdc|¯È‚1F:y}Óz¿¬Éÿ¾mï«ÉxeüHÓ'3àLÃFMVÃi“pñÝ—”” gNëlê bÈö€õÍœ¡¤¦¦.[¶l||üСC8ØHMM-))Y¶lYmm-Žmð:CMÔäwÁ”Õ W‘=+¿9óϼ”Ÿò¦Óp¢‡ñð–©,FÆR%/‡Ë:ðmEðK^-¾_ä E7 jÝ0¦Ô'Mˆãßi2µ°|Ãr’êÓŸãÊ© ˆM¾S¦\iZITËô~䊆SšòÈF ²Â§3ãν̼…¡Ûí>ë+ÄK²·nÝ ©ã]wÝe±XÕWÉ$ͦO6mÚät:ÿþïÿþü·á¥Q¢Ñè7ÞxäÈ¥TzzúÓO?½~ýú ]©Ëå+ápøÇ?þ±®ëk×®ýþ÷¿¡«óž.¥¥¥«W¯~'ï Ìb?ó™Ïìܹó[ßúVü×î¸ãŽw¸bs™a—p¹œï¢McB¡”†L×õÔÔÔo¼±¿¿ÿá‡nkkóù|ÉÉÉË–-»êª«²²²òòò`Q•e/2Á%TJ)ŠAà²D4**œãÀO’ÕLÁ˜™HîΩآªÈ´¡—M€DºaÄ£ ˜@š§hFvvV ß„"RFÜzò,Ñ ´t¶fˆÈH›‰MvöA„x†$ uæ~ÝäÕBÑbÌ0A“Ûåø¾Æ™ˆ•´ÄKó Έ_˜â@nÇ¢b”i˜{SÌ/}²à•ŽÊK”‰=!º-†'™BE}²ï•2B&‹‘–Q7¬|c˜<ÞÙS€)ÂWb(Ê𛧇Í"ù¦y7etªM8ÇGVÚPs˜‘©É 5}2Çô¦–—mbÛÚ4.ñеZ‡ƒöÿr™ Ûaº˜œ#ÜTIÖœãJo¢dÆ?¸ÇÉRq±n|„¯&Gþ¦ÖˆŸ×¦q.Ãòøž55‘e²‡£ ¿›²dcš‚pMÓrssA‚#;¿ Mfë°VÑhtppJa«Õj·Û³³³e_›ÚDMS¦ìýøi¥O†}å¦4å¢&ƒ5¦Å_þF‡‡‡kkkg°*3ý•ÅÈÅÔ†€µdN)¥’’’òóóo¾ù檪ª–––±±1§ÓY\\\TT54 ×(K\>S³p:KnŽŠã›E~mº9hú²iFÈ¿å2®„æÔ4/äÒu=++Ë´¦ÉËN)Y5]Y›Æ]^ Q¤2’LLLdffê†Ò4Š”˜¿ÚdØÎ„‚É…BôäéÆsüÀæß¢¯ù.3¡{¦®ç»^‰Õ |Xf.°Å“m²ªTÎí<ƒ\³o*…C˜Y)ÑhôÿüŸÿ£”ª®®þ¾ ”úõ¯ý½ï}Ï”/i¹å'ããã>øàO<±eË–³ÈüÕÛÛûõ¯ý¾ûîs:èH<¦*¥l6[[[[ÿßýÝßá ©©©J©¤¤$‡Ã¡Œ´G¸ÚæÍ›­V+€?œ£¡Pó´´4ì·\.×l5Ýtell Im”RO<ñÄ{ ÛŠÅb^¯W)…xÅ+¥<\*¶mÛÖßß?Ýwt]?zô¨Åb¹ýöÛù¼‰äy0Œ5%??óæÍñçry' “f¼cEÓ´¿üå/<ðÀèèhmm­ßï¿å–[â¿öw÷wgzåŽŽŽ¶¶¶o¼1==kƒq€¥SìÍ7ßloo·ÛíàË€Ò‚/`½ØÊÖ­[9²jÕª ]‘÷b1í„ä– Þð¤p»ÝwÜqG$yúé§[[[5M[´hÑwÜQPP`·ÛÝpKÊý7O#±)”Ùë”RÉÉÉÐ|Ùív½0Ðâî#ë Ü{DD RuȸW ’ÿJø‹nH$tC†Ã8‡Ê;ÍÈPf1l§uƒ-"’dcªÉÁ€Œtqά-E‚)¦ ©!IO‰D”ˆ?jš"‹Hd&m¤õÉ>G&UŠl Kœ34›p$víø-ê“””„š3™ .ˆNšÀ§xe)±$-‚7•a­¤Œ±¯Ùúdú†Db†ã¸iü£†d?!òÔŒ´e5!DЉì ê†\ ¿BvKÍP¶ÊúÄæ Ô4–LH ;ÿECÅDH ¢€uЉ˜_´Rq¨‡pŒn˜|M¹PÈÂ80ža`fffff&M‚¦ Ye;LŸkj º¥2XrºÀ^%ú£ Ù:”‰Jñt M·PÂ<^JÆäL?%$G}ZËøy$'—©}âñ£"Õø5Ü4¶y¶r#È¿òûøoZZ,ϔȱ`1<‰ä’¢ ¸p†zÊOäBdúT(0‡qüªß>rºé“j±Xlxx¸¾¾¾ººZf•=nÒ óÜ‚ÃÏ(ð X=RRR–-[6gμ•°HB>f±Xü~?À2°$-HÅ|m*J𠦉ŸeS¾Y”Îâ›nʱħS ˜¾ 6²É^=O]]RyÈC‚骤G2|AO9ïT–ÊŸÇÇÇ{{{AF6)Ù§D¸â¼ Z5ýþÛÞÞ>å×~ó›ß¼í¥>ö±Ñ­Ï¨ËÏz|Ì`uv÷½ÿþûï¿ÿþY©ðu×]7ë~:ß¿ï¾ûNçR„§+7ÜpÃÌ_xä‘GþéŸþÉôannî=ÑY—žžžüüü3ú“YY†Îý"o{…3ºEyyùyzÒÓ)uuugt¯ºººÿüÏÿœ­»?ùä“J©ŠŠŠø_Îì›r„¿òÊ+oû‡û·{:Õ;–9»ž:÷þýîw¿ËŸúÓŸžÎ¢w¹œK™rk·Û¡ƒóTFFÆ'?ùÉ‚‚‚ßÿþ÷Çß»wï† à­”Bn5Xÿ˜ŒlHÃAŽ+ë†+ÜÛ;ìøMÛ_&ÃBð „§5™¼âÐÁô8.@0$õà¯tÕ|||1þVÆo ;IÍš>ù¬8Þ}ûZÚ!)¥Pn—å#p+ k'%ì“ñIMàëC#´•Œ´ã{‚ï@JIk^öˆ69mœÅ°ûµZ­èzSÄÂV•#ü•šÌCa$/oAœK×u0M,“M¦ùƒ¤é™uùÈ´i³>S²ñM-Œ§c%åI•nXãC :>>Ž\JÇ@B‹á«± dSX ÕªšŒ³°s9œLª@âô‚A ÑÂàÚ@ˆvY¼ û‰OaŽS+—ÞcÄI‘èÎ’!‚ËRÎbþ›œ×Á?_žeJ$D²KŠv5MÃ"Ó%P<8§9HmôA‡« Ýn÷x<¤ÝYEâEÌM‹a??%â@jžiÎ*ÏqD™–2ݰôÆ\¶–v¦;rHÌ å˜Bn®ŸÊЌ˫±ž …Nù[S(.»,þ;&)íe­´8ÚŽœér’b¸Æ “8ŒmjÖ˜ ÑÄ„¿g.W i§˜][[ ¹©a1‰p#‚\Xu¥ÛAÊøŒh\.Æ$ê ‹ÀX,†dº°Æ“òsçÑbd„@¢UÞÈ´øƒø È 3BŽÓáïeZ69MK.[•+¿š ™¤ú8«©©´§MV°òŪ‹¼‡|³³&±É^xr¢I¼‰¿MHH(++#6Ä´Èx¹“®Hx€"È£ü|Ê…W:gÅÈ4Ñç«D7Îð·j²µœÅpÄ7%äÑ ?Á@¥Ó%ÍFã¯Æí~@#œ¿2;y03§ÏÛ}Æòøã+¥’““_xá…™¿yï½÷Þ{ï½ò“C‡}å+_aœE9¯Í}Ž-òaÆÛo¿ý,žîç?ÿyEE…<’=£ÒÖÖ§ÕøKNNÎÌ̬¨¨¨©©Y¸páüùó+++óòòl6[iié¼yóRRRî¹çž|ð™gžÙ·o_WW—é:HP°uëÖ*ð‹_ü"++댞÷¢êÁO}êS?ûÙÏLÖÕÕ]wœQIOO_²dÉý‰ æ/þrúÏ•‘‘ÑÚÚ*? íííï@/èºÞÛÛ ^ôi–S§NùýþY¬ÀæÍ›ï¹çž³ûÛeË–½òÊ+ò“»ï¾ûîhËä$M§YÎh„Ä—¯ýëh´«®º Õ¸¤­å/õˆkll,%%¥  à#ùÈý÷ßÿ7ó7±XìÀȨâ,0Ôi£œ¦xi:‹(^VÅEbJ¦ JMöÄ5d²CÜ"metÁˆ/úÛÞÎð·S~ºy¤ ZüÁ¬©M8®€ç…“&Êo[(¥¯ ±†ØdËùs„³qf­¢æ‚»öøîž¹1§k^xÍð«éZX3pUeºòÒPI õ"Œ¦Î5]ÿLÛM3S7áJX€!½ëf1 ûõE"‘@ €ô &NŠ (äÐ2•H$ròäIÇ`B×u Eñ ¯šjÌŸÑhj ‘?” ÀYôdüe€/š¡„BÝ\./6‹‰ £$Ó2¢ ž©©Í§ì ¹HÊîŽu¦6WSMðé†(ûNø©¬§§`’M$ÿ+‡?4A±,›LŠªÓïÓø±1eô$Y“ñƒg†VŸe ÖÖÖæääL ýk“¦Ó½qâ6«7圕Ֆó‘þ€Õäíˆ)3ç Í+Ûÿô×ç)¯_UeÌ# Qô¸œîvN§3///33Ówjr­Rt5Í2¿PL9/LK–©&Úôèçtû–)/b¢?C-ˆ×%©U¦>2µÞtã?~ºÉ8114ÓJ)¬«ðÇ4?Ý£¡záp«âù+³ÃÞª®®v»ÝmKÑuýÇ?þñÝwß››ûÇ?þñmtô›`Y¼xq<™ëŒJaa¡ßïWJÁùU×u( •R82%ŠÏ¬¢< IȼqUá$mVZûìÊèèèÁƒo»í¶“'OnÚ´éÎ;ïœÝëc«444ÿ«öövg=öØcdú|¾`0˜‘‘QPPPVVVQQ‘™™©”:zôhiiiiié̲óÓ,Ÿüä'ešÂø¢i$¥èeò牂ËW2PvØ7’öÉ1°9\êLKMMÍìöÅtåLeVû·{Ï=÷¼3u»°Åápœ]ßE9S¦^qqñìV`Ó¦M³ˆIÝzë­o¾ù¦RÊçóE£ÑÑÑQ¾Sc±d‰Ø©ËtÚšä”!ïÂ~‚ЧéÊ;ÖS2sâ;sÇËå4 bc䢆+)) g*ï{ßû`¹…öØT‰½f¸²)0Å0j ’˜È½Åóó)-Ty5ËdG[Ó×4aÑ"+@VWüe•0Ÿæñ¬©’*ÎKhÊršA>¹o[L ʼnñîQ§s©)/Îv3­-gQL!ÿ%Ô(…¥Œ=¦kX‰ ð›ñq}©ØV²&bº–3§ý4üR†Œ”ל˜˜0™£ÉF˜ÒÖý4{‡ü )‡©1 œYñoN+â#&¨EÎMËd§yÓ£ÈCšá”ãjJ{õ醊 ¡Óéóûýt‹3}ÙbdL³1,*<11ÑÚÚÚßߟ•••™™ MŒ6YÛKÇ ;ÈÄ¿ð•kñaTÚdætá· ¯™yHp)S“Ñ SN7/L×Qb‘®‚Ð]òõL“7^77óè•·“‹¿\`•&ËO¤lPvqüŒžòFÊëáìn ‚ø…)ÏZäã0–T&¦T“ÝÐãŸ]®T¨ rYÈÛi†šGÓÍú3ª8!lúÜy3¼€¦ì&5y¥•^TJÌPÝðco‡)©ã‹‰jnpiMScʤÄâ#«*å~›ŽÅ¥"™ò1Ñe±i#ðüvrƒ¡âR|*±$Êá¿þ 7=¦|X¼D0H vŸ²’Sn™fÞçŸ{™µÌ‰+V¬9—‹Œ}á _øÕ¯~µaÆßýîw§“½ »«=ztÕªUsæÌ9÷gillDH†]×=RŠNL¡P@Â9š:ã œ Ï&@9J)$F£@à ›&&&@|+((˜•üèG?ú·û7¥ÔÒ¥Kz衚šš¥K—ÎÊ•óòò`¬@uC( ƒrìâçx™gWWWWWW}}=2Ž+¥¾ýíoó›ßŒF£YYYÅÅÅ¥¥¥ååå………………ÅÅÅ@O¿¸ÝîÜÜܾ¾>MÓ`pg´ÄÄD—ËõÿcïK£ãºªtÏ-©æ*U•æÑ’,Ëò,Ïóœgp „„NÃz5ah^7Ýа4Gó€ši=Þ£†MšâÄ!$6v'¶cÇólË–¬y*©ªTó ªû~|ïî·ëÜ’,;vì@^rÕ­{ϰϹgçÛß6 .—Ë`0 Ý•¢(ØR@ØÅh4"0öª®¹q#ø6‹Ùl¾Zɧ’’’ÒÒÒ‘‘‘›]÷+—kKÛú'X|>ßÁƒ¯£žÔºuë<8É´„bÁÄò ˜ññqÓôD£Ñ`0˜J¥°Š7Çï˜V>sâM,“xԒˇì„ðíÇÊ•+)î°-’ÅS`o©Ù2´jv°˜Þ£àÙø‘ÊôÅ%ÌHÚqò‚èBøläáHgïWl…Ðy,× ÷Hwb‚/¯•šKñGÿsUKÆ$4žÑ$x ý \†tÍøeDC9Ô¤VëÇ]Úè]&TŒâx@ÂÄø@ëo%&À%sÒ#;Ò·¼-R'óŽ%M}L¬Ç ©MaÑ“‰äÛ\Ñ–ôxé+Q\Œ`/¬‚h\`aÐéë3*V«uÖ¬Yô¬9Ù[Ò ¹[›Óž¥' –ØÊl6'“IlÃÉ$šG–ðÈ!D*•:}ú´ÝnïîîŽD"ëׯolläO§x ä§hÑFú9ÅÇ‚[~NxKš9­N²©+ô˜…´Öé2¾¨ªÙ,8•­›Âh4þË¿üËk¯½ÖÝÝÝÞÞþÚk¯½}ÏÇjµBDìÖT;¾æP¦µµõÏÿüÏOœ8ñþ÷¿ïÞ½555oÿÎ###ÃÃÃ^¯wD+CCC}}}CCC^¯×ï÷G"äŸRX/?Nƒ¤tF`J8îìì|ã7‡ÅbH(ø8õ288x³ûþ–(G-//¿Ú_y½Þ›]ñ|¹žå7¿ùÍæÍ›)gÖ;PEÁZú®[Qß&/o¿H¸ 6aä#؇À œ4¨ªJÊVÒ¾PèHU¤ú!m¦9»Dh,‰œN‘L&¥hÚ긩eÑô¹èÎ\¢+‹’FØœ”‘“†³z.ÛaÐÄÅý‘*ÌÏÕɱL$›®$@ŠXW&‹Æ;G¿‰,lÜE“H×»=úFð‚=´~ßœsð‡Á` ¿‹Â%x*+=X#¹’÷(t>†ÔXÉM" !Ý“’ÊÃb Á¹7yh<§!~FS‹'å8¢ † )š¢.“Â[€ÖQМ¢LÀ+ŒÉõõˆ’!Å{žl^?.˜˜”Z””ãrø/p:Ø$ÇÃM”4}èCª³Åb!Õ*0M îDZÈJ.š•Èö$E ] 2m5ò‡‘>%‡ÃáH$âñxÊÊÊèæˆUÄ, :;ÎÚÚZÇÓ×××ÖÖVSScµZ‰Ïd' ` Fp(MdKkqû$Ä-Ÿš†¾‚P×ì£!àË…scÖ|–ñ' 熪2L–¯z DC¶Ø“4ƒ ÙBl¤|$²_1Ü’UcH ©2Á ò¦e™f¥:ÉäÊ–+tpY/ÏCBó]ÑTäC(”ìUiUÏhâtÂw û-4 Jo ´>P襚­[oÐô%c±%!=j éÖqÔOäÚ_ñÃÞ·ú˜÷^N#+¢·-½—¹ •È» ±Àê„_у¸¼47i5ƒÍп9'žHÃå‘ß™€*’$ÓoZx>hÁvBSø20¹½œØœ`mW X;‚mBèåB«4NMT¦MÆ»EªÏ»ÞZ¿~ýW¿úU¿ßµ>L*•ú—ù—_þò—ó7óßþÛƒ¾Ý‹Ñhœ6mÚË/¿üÊ+¯ÜvÛm?üáóY®&*ï}ï{?ýéOñ‹_„Úý™3gÀ5{ûÅjµÖÕÕMB5>>NÈ—×ëuk``ÀçóE£Q¼;UU¥‰$„À.áf÷ß»¾\­¢|¾üQ–§žzjòpÝ|¡’Ïœx+ xR˜¢ŠÂH4´ æÔ§L&CŽ4÷ȵVU{ñ‰6Übº…ѦŸªJg§ããã}}}ÕÕÕUUUävJŠÂhBó‰ÄÀÀ@:®®®v¹\Jv‘~HÅ‘/îb K)µnò!Pr½pµ4jŠŽã£êxÒÕ\”ÉçÙ€”ÈÞ—Ãᨧíð”—ÿ³Rt•È…åq7‰S$øSÈQ!x‡‹õ.=ù©T ‡|Ý“ŽÜ “E'Pǧ¤™Å?äã¢NIã+‘Îô.(ÿ›êS ©3õ²4ïô–ÉMBooBnìr¹Ìf3W ‘Ë3Á`bðqƒQý¬aMv»G³9pqb` 744„B¡@ `³Ù(7”éÉ!”zŒªGwVY$µÞPõH4ïs¬Ÿªªê…Ø¥uX?“¯$|áÊù󜖓s•(ñ *ÊY>Où Æ­ˆ)4@×Â%M¦²¨NÒvª¡„>H¯BnNÒ")­`Ürü’ÐŽ"ñÈbêx‡ˆ:XLý‰×î$Ú2Ò⯷@Þá9WQ=4#Ù¤>6YÑÇ|ˆ¥_I+}’3‚RŸú g™dùâ¿B§Ó”~p$@zü¼£$;á±Ûü}—³ó'i»dZªŽI Ž*€¹p8<:: (ßjµê—EG{×À[›7onllúè£^ãén¿øÅ/~ñ‹_ܨ®ºõÊU- (?üðÃ?üÎ?wŠeŠá¸7®ï@É™91_Þá’3sâŸHyã7yä‘kþùsƒÞ²åí¯ù̉ïX¡­›^уˆ'’cI×ÀÍà¬%ðh8Í‹ ó­9݇ï_õ›TÁÑ;áƒÁl6{½Þ;v¼ôÒKÝÝÝÍÍÍ=ôÐâÅ‹­V«þÐRo–H–ănxëDö®T†íœv½Bçä_±ð©Z>5©&¼2zHèö²züEÿ7w9r²!¸µ À0/~*nÈNwHÔðV¸ ¡oZΚÓOÔì¬ö9Ádà3L_ê \ òTuéÀ„RXQ–ÀsR‡¨9…÷6Á¦j6‰2§³}E£R&8·Ÿè>|ZIv.’¼ÉêIW †ÚÚÚ¢¢"$—Ôwï|J5w&4ÔŸsŒ¥  ÀårY­V(¹Cúo:v¹\Éd²»»ûðáÃ'NœØ²e ”›[ß&â'ÉJõÕ r–Åbq:ˆ· _I§¤¨á=—F_jÂq1ýÍ¥uF3šdµ¡¶ó?D¶|›`!ϼÓ0 ˆ)£j éðŠ10™|%Ëã«Á$«\Î~›:H1ÉröƒþþŠÆ'ÅjÃ98ú:¤±›ÍFS/'T4,5IÍs¶w¢†ç¼Æ ¥óÃÁÀT‚"E¶T'š$u~©§µ‘g<àŠ ÒÐHë Ý£´Ò¿ï¤;(Ú‰ŽÊŽý¤Þ _qƒŸè5ÊQ¾àçHýƒþ4ìy§ñׄ´x×À[ƒá“ŸüäÓO?=xKZ˜¦hîúòÓŸþô­·ÞúÑ~ôÙÏ~öÇ?þñ›o¾9oÞ¼Ú_·H¹óÎ;Nç3ÏßÍî€wkùà?¸fÍš<}ææ–’’’#GŽ444ÜìŠÜ„‹Å|}meùòåßøÆ7n»í¶›ÝŽ«.WÜúO^þñÿq||üñÇ_ºté‘#GÄ»9sâÔýŠw¬&UƒG+(:Æmã¤_áJ€ôlÓ‘÷€"ì¸H0®(ÙÁ,’ð ] 5(ÁâYÆÇÇãñøï~÷»ÿøÿèïïÏd2###§¸¸xúôé8ØÔ£r3ÂjµÖÔÔèSêÝ$Ée%WMê[¾ žÊð&ÃÉÇ>[¯HÂwq|kÇ/“´Nô®~N$k’ª’’´ô­’4‘uòÒùõ’³Ç»sX}®ä‚·¤ãhé޹H–I( °6’‡ãN ä&Á îLn<ÿ‘®º9N±!„‹Áß㱯„˜GNîPul ÉÞrŽ”Þ$èAu©Þ®rrÈÈ9'%gÏs öxúÑΚ5ëÛßþ¶Ëåº.•»bdø£ýè7¿ùÍŽ;þD°­k.ÅÅÅ›6mºÙµÈ—|É—›VÞ¶•/e’ å­Yøù§ä–€A9U]„y¡Š¦ýAÎ$)1ñ½fÎH«œ8…x~¯pGGÇîÝ»‡‡‡±?wîÜàà`]]Åb‘6yB·Ñ/((p8¤y!=;$ô‰Þ ác­wçè†%Ù‚![ö›ÿDò7&Bs¤Âyd915;§ÿ6§[BýÆšó\¸âŒTôþž:·ˆ|Î`’Éý“ÜZÁDLøM¸àGT¥Bµ¢Æbt$¡k©«©äeqöE»(šHõ˜Âd¼¦_Ã}z´ä°ñnÔ׊‡;Ià‚d`tø„’©¨,‚Œ¨šÔ^šÚÒ¢Û@f!n'üÎô[£¼ÿóüy‹&EÆf0¬V+Ú -5;tN?qŒFcsssccãŠ+Ìfs</))‰F£*S¡"ï”kÙH“h¢¢f“ïr¢öø 9:Hic‘“9¢‡øR#Òr×ZšBßðÏé¾Xå„*$€#çl’ÌUè iÁçó7V0ýõ°…ÈQéGJ_IiÉÙ•èû_j¬ÔºŒ.;°tg a!œ.F?@õÌd2὆½%‡W¤ªò±ÓO¡;r˜ÈŒù.½òxÃõè™ezèMêL¾0ŠlˆG2c=dÿå6Ƨ¡ª¥käŠ`ü†³ªªŠ“9œÖH÷ámç¬ÒLveâ2QŸ+ÙÜX)p5NG£Q»ÝnµZùAdËóS6¯ÉÛgoM¾è]Ox«´´ô‘GyòÉ'ÿöoÿö:Þv’b4÷»ßŽŽ=z´¤¤äy軺,Y²äfW!_ò%_ò%_òåÿ—É·)j6ƒƒÎc;-çêZB ¯ ƒVJGÿ¾+îIr×-õ-÷®ËÔÆ«Dè '|¡ÆÞÞÞ¡¡! o1 ¥¥¥.—‹4¿)ˆ£9ôƒ&¦.íM¥¾’°9ÞWÄ ¢²ä3Ж]’ ’!ˆø Á"›4GKh”ÈÞ“_ j›¢(f³Ùd2Qó–eE¢  ÿ%I‚ä¨t+î“ ŒÏå® ï î €ô§·@ @Ó÷-õ$ÿ/UR„1á$é³%ï—úŸÐò0§&yà*ßC=u”d2 kF£Ñh”´í©¯8?‚°½ŸÌ=().Fd‡ŒñyÇlé½kîÁNÄTâCIp¿ F“”øè 3‘ßMe:bv»£Bs/‰wI#¥GB%F˜Íf:‘z›@@t]aa¡Åb±ÛíÉd¢òø„P¡Ñá3H‹ð?Èç 60%~≶H&“&÷.r¹î¼ÕäÍR2ª«ýPd{×ú®#ËçÀ¢´îåBâ}"²²ê‡Ir,ò›K[zKã­Ptaò9ßh|±’¦;xùɽžEž+Áðþ”V-‚eñ Ëhú’4äÚƒöV]]¢IzåÞ’†’˜¤ô’CN¤i®èPBý²³·;ëRµ’=¨ìlCÍýædC:*ËùPn$„æÐ4Ì08nZ´Ÿ10EQþtô<¨ Á¨£]œ>·=‘ÃOt~”%]L(›¢CQéÅG¹hјÂùÌ¢)3‰4Ûu,×9Ö׿þõ7>ðÀµµµï@íçÌ™ó¡}è‰'žxg:+_ò%_ò%_ò%_®K‘¶P9¿Õ³Z!®£©TŠþæ±ÇQY=ŠO$ׂ¶ÝzlHôÖ2‘&ÿ9]¬¯žþ¿T îÖÞÁ¯äBZ‚¥ÚÌd‹OÃ3”¢dSZ¤¯è‰<èRßü‰dÈx߈JŸïîîöx<>uR”™? —ʈEÒ¸\ñV9W!qø‘&‹¾øÝÐ.®$]6IÒšC’¦‰äòû˜L¦d2™J¥ˆ(J_ñ) Ä‹˜Ê2©><À‡iN:†ô‡¾˜Å%4h ‰8Á/….—«´´ÔjµäÊYC>Ði­ z‰DÂëõ&‰úúzàÅ £ìM4UÆj”+bzcà#(u…~¥R²ñG‘JPèLÉ2õulYÎùsZa¤·¡dÿüþ“ GN«Æa(-‹eùäK W´ü’ét:‰ø|¾P(„¥Ûn·;ž To„S©˜Êà­‰6Ò·ÔQMI@š ý6§†”:)°ÎÍR袜ëÏ$EÕ2'ä$åðU´”ŽúuÓJ‚)9š,X¾TÉ2õ†*Ínœ¼ë’1ÐMhõ@ÞêÒÒR!„ÓéTÙñÁî|}“&21oP¹Îð–ÃáøÞ÷¾÷裾øâ‹7´Þ(­­­ßþö·ßåK¾äK¾äK¾äËu/Ç‘¶‰9um9[Da²Ùªª‚”H$ ¡2Ñ‘½·#¹ñœ¨}+ráAüsª ß·Í™3çƒü Ûí>wî\,s»ÝË–-s»Ý¼Éª–¢§ó@6©Š.°Kd£]&¦ßÊ«Ù×$Âï÷ŽŽ–––“W¯2ʉÈö]ô¨¢+ Îðt–Bªƒ¾ÇÔlXÊÀ~MÐH­Öï¼¥æH=C´#b¾(¹"n$Õ62ž©†˜·Bïd*Ù ý\FY¯$ŇƒðD¢4âïP(͈ çdÇäìIòõjG“¸¬Ò$¹|ÅIÆ „Yèç8ïO½)JâŒ!ŽN‚ÆÅ‡cL9³XêÑg©WÉn9V%±™h ^UYèîD½š³—ø åÁ†³PÈ#¨QRR‚¼Dî˜dr©š¶Q*•‚Ë}êÔ©ƒ—––Ö'š­~K&Ám¾È‹\ëÕDUšˆú„râ-§–÷P²(²1%éLèpÞ"þÊiçj6«¿¡~1ÙÒÝbâB` ¬zèP?.@BGFFªuß¾}GމD"6› ¯ƒ3f8N®tÁWoýÈJÝÅéK“ó$+‰„•LôD £AämåÍ™}9A™œv¨¯ðD…Vb”cŽÍ6“ɘÍf鶘V8Ï3hYqE.¡Fþ‡TþZ‘”øtã˜ÓàéÕ†šÍf³Ù,‘a±†ð…WbÀ MLÜÈrá-!ÄÚµk.\¸gÏǃOR©Q¾—,Y¢\ éÌ—©”›Õùá{;%Ÿ9ñV(Ê™ßfÉgNDùñünÌœ8´ñ<‘JN/}¢mº #5†ËëPœ¨±óŽÇãú›ãâd2‰Ól¢ñ-#%[ D¿å•\ EQG"‘X»víüùó…………µµµÈÞ(tHwc&铉zIÕâ°¨ªîT\ÉEÐïŒiߟN§½^ïoûÛX,öÐCa/Ç~ óÔ».|-¹aÀAAÿók8$¡7úPpHp‰þé|·-¹£ ìÒ»št 9BJ6´*´ =m”Ü!º'÷$9Áugxõ¯d"§GÑêM…œ ‰ŸØÒÒO&‹ñ07ýü¥ À+!Hï…ê}¼I¼Aî’‘çÉëÏ¡%É$&Y1H߯†4èÒ‘ FsÊt™Éd@9¤Ëˆ·Åsê­ˆâd¡' œž¡™s¾KŸH —dTàB1§ð«‰Äèèhgg§×ëUUÕãñTVVz<ÌS—Ë•Édb±≬BeÄÀD"ÑÖÖ¶k×®T*5wî\‰Ã'—EG‚£:óNÈh:P9Íž·Z2TUËø©·F>‘ùƒ$o©> £Þä´gii•nžóÍË:þºQtGRó'êýe4§p´€1ðgs®Xÿ©¼õÖ[G˜={ö† ÊËËÁÓI§Ó !ò†ëmXäšûª†pIæ4E%&ªö$Á›(·2dç²äÏÕ‹z.çkHºÉDÖH·âÒò$¡%²Ù[ª–¸@j²ªewÁ±Îv{ÎZ]üâƒÎ)Zx¥5XÐCB)O"Ãa¥%…¾˜ëß\mf®o¹þð–âë_ÿº #…ßÿþ÷ûÛß~éK_úøÇ?®(ÊáÇoh“ò%_ò%_ò%_òE_°µ}'(R©T"‘€CN6 ^äü9w‡¦þPE“0èôÑs‹ÅvuØz’84ÿ¹’‹0•ëB€þ€ÝgIIIqq1H‚„9ðìSÉÑUUYEãÀK¤ÐKˆHö $˜b6›9ת(}þh¢# -TSQ”X,¶gÏž={ö¬\¹²°°0 )Šb6›‘Ìô»ÝN­Î‰ãÐXó6¯öÇp“h{­ª*"ü‚ˆ¥y‚cÀã2Ð]h þ–KE ¨/úßrD‰›"ÜÁ&Ñ44Ÿâ–â@ ¹ax(É”àz # Ãò •ÀÝR©T<§ìV«5ÓÅ‹Åëõ*Šâr¹(*…+4Ix™Åb‘€^¨KyhŸ°zOÇq $“àä/ ¯äÁ)–9$Q-úâ[õsœ9‰m‡jP÷rU2¡shipU]œ)µ Y°1²jý$‘H!¸²›ÔÛ–Î :\Ô3h,Y‹4¥y V }.¾ ÁqD"çÎ;räÈÈȈИv»½±±qΜ9ÒòápØf³¡'E¶º™ä¸R¼[ww÷Þ½{ƒÁàœ9sfÍš‹ÅŠŠŠTMžÜl6§R)ê(ÐUÀåÌd‹òù›J¥xd7¡9ÿ´ŽÑÚHvAî@««„/pFdèøø¸ÕjÅM°éGMeü;EKêÊY¥|âèBªC†eƹÞwxÀЏ¹òñ÷u2]€¹ƒ?Ðù´Êqd<™LÆb±3gμôÒKF£ñž{îY±b…ÕjÅòc‡ÃÉdÒn·C*Ž£rŠ. ·ù “)äÂ…ùoùÈ*Œ~5‰ áÈžE7$ûák‘Âè™Xu…–-Qº? ­04»ém¥o _9‰À…¯ Ó'ƒÁ€W¹ª #ÒÑ‚ª)’´¨ÂhÅ´ÊQ¢Oª6O·‚µ”¿Ç¾J!Þ¼>œˆ‡­IµÓyttt||¼¼¼œªÙM»ÝŽªJ<µë^n¼…âp8h÷öö~ò“ŸÜµk×SO==Ë|É—|É—|É—|y' í,ß1„kxx¸¿¿úôépQ¸¯Ò«-a%9¯1èRRÁ9$í¡Íf³Ë傟À}Z Ý’\ ‘½ÛFÔqÈ“¤’#áܱçÍç÷p äMžˆ „ˆD"v»Ýh4bOÉaZâ1؃F£ÑT*uàÀW^y%•Jy<ž¾¾¾¾¾¾T*µfÍ—Ëuüøñt:½xñâ‚‚äwã ×éœY’¦ìl\L|äŽa‚§Ÿ{ðdH „2ïgiÈH@Ûq¡›ÒIþ˜2Á¾>fn(É6K,‚8N²j N䂨‚ W Þ;pü<“ɃÁÞÞ^“Éd±X$W°x[xôàŽØålJ wVµèºRr>õÞ¦ãU•.†ûD”},3o)ǹȕÕ3¤ß ³€œÿ Sk¦o1 ŒF#Ð+º?2ôƒËÿ&{àf9‘UHH¨¾íÒ¢‰D¨1’N§}>ŸªªÍÍÍ .,**Â'}}}íííÁ`páÂ…¥¥¥«ªj±X¥¥€M>ƒÆÇÇÃápGGÇÑ£G‡††°þ\ºt©¬¬ ž ¦!2W*¹x4J6Ê,MR4`#ý %_èi´` B5—~«œ é‘$¢ÑŸhYЯ«|féí_?‚zKæE/5•sæêï&]¬fŽM.Ø—/_þÃþPTT´yóæE‹y<°;E£ÑãÇwwwß~ûíè"irI+¯˜C­ïùœÕ–ºNßɦ2¯õÕ£wņS>ÉëFU20)÷IÆ—×D@è9n -$hLZC$KÓ×D:™ÐCj¶Æ–^$‹pEQ°€þ&Å૪Jû=Z ív;7ì)òõ®¹Ü@xKñÚk¯ŒŒ :thÛ¶m¿ýíoãñø¶mÛræ¦É—|É—|É—|É—Wrú„7´¸\.¨Jøw²p§D'8¥ªªÆb1\Ã÷yŠÆ˜à{Pþ_x³ƒÁjµÒæ¼/¾¹”9%Wæ I¶ÝŠ–8Oèi“*ØÆ44l=‰M†;§Óé`0(„€ËJ?ÿ¨  àرcÛ¶m ƒK—.­¬¬¼ªéUox|_Á«7Ñ:™³>ªêº÷½Ù];Ù†¾Ò[)ç£õïÞ:²Šœ¯0žÕ&£ÓéÄßÄ òs£%·¨ÜXxkýúõøãŸøÄO<ñ¹Ï}îÉ'Ÿüò—¿üøã¿3ÍË—|É—|É—|É”w Þ¢ÍfC\Ã~Ð$çœä­!>Nú¹ÊBÏxø’`»s~Cì‰OAXyj¶äŠ`9ODU–{ˆ>Ä!’¯.ý!!Ñh´°°ü)0 < „™¶£M¥R===»víòûý÷Þ{ïÆE ÅÅÅ ,¨¨¨èëëkhhhjjr¹\Š¢ b+Æ‘£M¿¡ç*:ÙZR¶ÖçG'>—F€ž¨Ç QÏœ4¢œ†$9*"—[¢÷o%†xg\IJr;9¶¥wºÐ¢p8|ðàÁ]»v8q" ÁŠ‹‹gΜ¹xñâÅ‹CéÑ+6›­¹¹¹  Àn·“¨·^•ñJ84 7oB ôÒr|\ô¾\4%BAaa¡Íf“n+²=^}÷ân9éOpa¡#þð¹CÏåAO"„LJ)“±”L޼¨ èÒÍ3—²5¶'Y ”ìø,^m½Gʃ3Zö4^gð†‡ÃáP($„‡ÃŠ¢8Ž¢¢"„›L&€G@ù+++ Ož<ÙÙÙiµZ‹ŠŠ@›Â³°b€i`êàDÎ;g2™–.]ZWWg0NŸ>}ôèQÐ ‚ÁàÅ‹W­ZUUU%Á=zì@?…ÃáðÀÀÀØØØ‚ ø:C6Lg*ËúJsæÌåË—cÁúƒ‰ÃW0>8pFS‰D>tÉòsbX-#¯­dlÄGžüË©£@?…©Tjxxxß¾}ápø¡‡Z°`Aaa!,k8€P ƒ‡š5kVCCÞPzK¿œr„NôÊ[$-ÈôUN>>n6›ù À:Iwq"ùT¶mo³ÜXx‹—’’’ÿ÷衇|ðÁõë×ß}÷ÝïØ£ó%_ò%_ò%_òåÁ¶Ph …ÿNrT~µMàGé4X:´¤h)’DÁ¦d¶HñˆWª¦”Œ8>È÷H[pžÞŽßÕRÆá-ª-Åõèqº>§ûG¿2褑áöÓÞ4\ºt©ªªª®®Ž´i³Ÿ‚ß3“É€é°{÷îóçϯ\¹rõêÕV«õøñã—.]Ú°aÃúõë‹‹‹ívûÌ™3™!I<ÅûH½GA@¼ *SË"Ee”¡åB,¡dKPí¡E•©Ÿ³ƒðníä 8‘ (‘]=š3Ñ$"Ý_ÙJºæü\'CÈ@ejn………ÑhôèÑ£¿ýíoFãûÞ÷¾šš›Í?ÿìÙ³O?ýôÎ;?ð¬[·úYããã ›Åà~Ù˜žÿÂ¥p¤o9_FÑD…D¶g’ÉÖ̶ÛíäYá†$QÌ× w“n•ÓM¥êq‚ß‚õŽ+"ç>(LáK? 4\cNê7ƒÁàñxødÒ4ã¨ßô-Ò›_» t‹Uˆt—$üKa´âo¦Óé±±±ãÇŸ9s¦«« jƒuuu«V­jnn6›Íƒ'’°ÑÅ‹÷ôôx½^ _ª”—N§p‰ tÂÓ§O¿õÖ[Bˆ¥K—._¾|||üÂ… ]]]‡cÁ‚.—Ëb±,Y²ÄívC]ˆ£“†ì|BçØã+§Ó)„*7Qä¦4UÁ½š¦2 >=b«Ÿ¡BÃ5:;;wîÜ944´páB«ÕšH$ÞâÇüç†\:’UQ³3o¨LŸ¯É´æ/„µÑ›„šåV20…!¡@LÀwëìì¼xñâæÍ›W¬XÁ#Á&Qo4\÷÷÷Ÿ={¶¶¶VZCˆû¬èe¾+ O2Ù¹P„ãè˜DÖãVÂÔD.l‹AIf£·"EǦT²ùq¼Kù êyvÒØé_"jö±ÐDÕ£?ô1¡ú!Y…S¬·|ÚºäÄõmá«7rl~b±&02ˆ$ò7x{eòÍä;o¡Üu×]Û¶mûèG?zðàÁÚÚÚwøéù’/ù’/ù’/²åzaLS)´‹$1ùarÎÝž´‰¤+'ŠÑºÓEòB…!„JB‚¬´¥ÃÁ8?ÀŒÇã‘H¤¡¡Áf³Ñ^Û5B4¸·LýÌ ´w”v·y&Ô8à†Px‘^çºä‹º\®ÚÚZ§ÓÉQÜ!‘HÀG…ŒçB|çÙgŸ}õÕW›ššî»ï¾ÒÒÒ¶¶¶;w-Z´¨¨¨®/õ'—§Åž•(‚É] &ì¢÷aCÓÃ&·Š.ãBõÒ©5Q3ð7‡·¨Uèqº'¹\sŠ ÷ð==UžÛ*÷`¥HU E‚ýp¿[E#zD£ÑÓ§O¿ÿýﯭ­­¨¨@ öp8l0"‘È©S§öíÛ÷üóÏ»\®¥K—Ò±¹¢(ˆºåf/²QnoÜq¥c|”'õ¡„’é*ÙªüÜ™tB?Ïé„ æèJÓ. 2#7þ[=ïOú›\/¡©ƒñYOSzF—öŽCrØâËUŸ¥e-ç’%u˜H#TÑBP%(×Y0*“Ñh …BûöíÛ»wïèè(ª‹ÅHvõõõf³™Dú¡Ó~VYYY0D·z1¡¤¦Óéx<~àÀ½{÷&“ÉÖÖÖ¥K—f2™Ó§O:tH±fÍšyóæ9³Ùl±Xª««¡Ã%²eƒô­ ïZ0=D›Íf±X(ù¬;È0iv¾´¶›Ífn¥œ>ÉaxæÁ`pÏž=gΜY³fM]]]8öûý‡ÃårQ¼³D¾S³Õ—$p‡ÃIúš«ÙÁ•oIWòaH8‘>ôOa…:¬`óù|¾'N”——/]ºpj†iS¢¡¸¯jáS§N577766R0,_ UÁM ¹Þ}“ /‚1£ãÉò .rUüoþž’¶CRe$e1¾")ŒG¦GÄr€¾J|¹^ÊüD•L Ÿ`Pº97 ^xÂŽ‘MÔç<*µR")}¨¶(Ò»’¹©Ù s®ËT©¼Óð–âŽ;îøÁ~ðè£"¸÷¯@¾äK¾äK¾äËŸ`ÉdkëÞÐrEHëíÜYÿ î#ñ 4pA3H.¹RBÂð¯ÓéÄauÎpþDE¨f –SçsÇXràIŒïn‰DAAÕjU5‰hÞÞœÛe8$•••´õ”úð)ª3’©uvv †5kÖTVVB:'‰ÜvÛmåååF£Ñ- ¬w/éBšD®( Á¼,ú-þEä…Ð1ÊjÇã€ÈÙ¦ûç¯æ:ç=,r‰…©Œ:ǯ,g%†>yœÞ ɱÌéip÷2ÃRÂñA¼'=êêê*++«ªªÛÇ Ngaa¡Ûí...nnnþÅ/~qæÌ™™3g–••MDÊéÆPÛ¥³ôœ×ó'ß´sG Ÿ`@©“'rÀrVw5ÿ!÷`%C’³œR´ /Î᫇ô_ΔäÙa¿|æ‚?EroRÿè§o¦"™L"-‹qà‚Ä葚†… $¯®®®ýû÷{½^n·ãããeee v âbU0~˜%Ý+F<WU5ìß¿?¯]»vùò寿þúñãÇ­Vëºuë–-[Ó-,,ÄÈ2™ÑÊs•´ºò¯ šÖ! Õ‹ \\©gô¯ý P?F,†o¼ñÆÙ³g…ÃÃÃ{÷î ‡Ã^¯·¶¶võêÕ~¿ßëõ–——Ï;—²²êßJ’É‘ñ€D–sqæ )-zØŠªCfsÖGè U5¢ ‘ÈÆ‘ð«.(†?>>n±Xq^¾|ùðáÃ¥¥¥åååxýñàqzîD‹áDCÆë,M=~óÉŽœEaÁ­&H§ês^rRTŒ.-JúW$ÿœžÈµöŠ\o[ú›•É–åâEd%ìñ†R\<Ç­¤“üŠ´2Ù9F“)¤¬d2 H.aÚm¤»Ú±›zI¥R7ÞBüÙŸýÙ›o¾ùoÿöoûØÇnJò%_ò%_ò%_þÔ ?EœÊñÒ$ÛÇ+ú¨“û±×ð܉œ:1±Ož'ß™ÁÎépúDF¦M›LGNl‹vŠ”E‘»Ç¼çéWzoŸ»@´mU4‘íùOÈ ääáŠp‡¾‡ÙlÆ <’s»Ý555^¯7‰„Ãᢢ¢ ,_¾|Á‚¸>çãxÛ3,[™’}‚­wü¤B”äoS¼¿ Õ'OäOè°(ûu釒Ã@×S•r‚ü¿IA8¸ƒw5Á˜‰D‚ò¾WVVÜ$ÿÁl6‡B!UYohhX¿~ýË/¿|ùò墢"ÊË®Gôð9EÜÇ–ð£I†l’i+u;à-t»ޚȘsÞYâDät úÑ3y[&áñÑL¡Ï3ÙB`“¸¯Ü6& ½™dE¥Õ#‘H€@Ö•Éd***r»Ýø\BrU†¹±¥££Ãçó‘wÊgP0$è3ì-!D$1Ä$…C-€Ã 2n·Û‹‹‹ÓétWW×… ÊÊÊ6nÜ8þüÂÂÂX,a8ü*'| êø ¼EÒ*­ds'²ÕI¬W%Ÿþ˜}ÃÃûwï>wî\yyyuuuqq±Åbéíí½xñbÿèèh0ôz½óçÏohh ÞŠ˜ø( Å,+Ù¸¼’ fñ@Úœ7Ô/MÒ÷¹Ïݬ§çK¾äK¾äK¾ü©Ú)SžrîB¦òó©?âš@+ºXEi¨wJ‰)ÃCá„ØE§Ù ¥R)¶¤½¦žF‘Ñ©´ò*MÞQ9=ø oå^+¡Ñ „8¶%ºúš2¤¤Ca ¥¥¥wÝuWKKKuuµÇãQUuíÚµª¦@¯óæ•×£BBÃ5,à5çí¥qst5¡r´3Vu‘,tg ›ÊhIš8zEõ¤+¥Nã›{ú„ZAŽ(±&òiè¹CÇæz—Œ?(•Jù|¾¾¾¾öövŸÏ'„¨©©™1cFuuµÁ`@Ü"ÆÉH Æ4{öì½{÷öõõ555«:l‹¡ÿ’œ…ùH½-²ýaÞQzó“|9ÞdýÒMøHé-œÏ£œ‰š.M4ã&q€¥¯(B“æŽ4%S‘:MºsNœ"§ ­ªj8>räÈáÇ/]º„\„ .ܼy³ÝnŸ¤9ª„B!¤t<þ<×ä? ‡ÃÀ­ j—H$Âáð¥K—úúúL&“Édª¬¬ôx™Lö÷÷—••ÝsÏ=sçÎUUµ³³óÂ… H²ÑÒÒ’L&/^¼ØÐЀ²¼bœ¨"8-tÈûÁý‘ šè§m Æ)åÍàö¦G¸rv5aÁV«uõêÕåå媪Æb1Š4lÅ@Gy<žiӦ͙3§¦¦æàÁƒ'Ožlmm-))fÊÑ7ý”¼ôh:s¤†›GÎÑ—°¡œ“TBsþDº¡È^Éõ?—À,=|¦ßQHÐÒùMzÚ&ÑrÍf³ªª Xanf´ü¼¼¥ñ±“ú_ùh4ÊC,y'X¾){Ïõ-=ôЫ¯¾zÓà-£Ñøýïÿf==_ò%_ò%_òåO­«3Eì)Ã$`IÀHŸO*רÒߊâ22º$S´Ù⇨ú ˜2ªvÖJ’Uª–ÑæŒ¢Æ€2¨LŒ ß^&„ U¾ùžÈo'® õ-÷¸ß¢f+UCåJd ¸- Ahg³aº…6²¿ÀáB£f̘ÑÐÐPXXh2™ÆÇǹ/Í+`Њ¢(è¡%VS˜´4¡Ð'ápø…^ضm󯯵ýìÙ³>ŸïÞ{ï…n Ÿ%&&b{zz^ýõX,688ØÛÛ«°<}Tÿ‚‚‚¾¾¾;w–••af!eÞÐÐÐðð0`eeåÊ•+›šš$)=Ô®òwÞ¹nÝ:«ÕZZZ Ñ.ÁB­- uÁ…|ŠåôÉõ–,! |Òhr^‰T(­*I\ !’F yBX,àrŒ¬`ç|y4›Íü4¨¬¬Ìív«ªúÆoôõõy<¬´ºæ|:Y¾à 3išÐÅÜNHï EÏ_3ä‘v±\ÐëC°X9UcÅRW5 ¦•ÉÖ|¤VP¤-mKhÏÉïCåùp“º>DH>m3(g­Äš¤·*—50LÉt±!fÏçs8¥¥¥ÒV’„*LÉù›Ô¥ˆe&+²Z­H– ™NÞŸh>ø§7Tã¿øÅ‹/¾(nŠöV¾äK¾äK¾äK¾Ü”¢^ u ÞöÜ„ƒÜìäh?;ÕoCÉKW´\u&Î=7~J:ÊØ©ºcÉË%©’^¢§óJNÔÏ“4?”¾âYùT&*,˜dò{OAA‹$ÜC —K~g½F2]Û= )…1ï¤ß4a~ÉҤ‡’3 hL Úý óLž$ïU ,ÓAªªJš;BÛúªE@â¹@óš;ðR¢Ñ(\Á±±±íÛ·¿üò˱XŒb3“ÉäÁƒÓéôg>󙦦& ‰‹—J¥¢Ñ¨Íf3™LóçÏWÅår)Œ.AÇã„KRå“É䨨ØÐÐÐÈÈH,³Z­sçÎmii)..v8ðK9UŽA'j>‰=«L°LbëH®”ʨ“ª2A¬–TxT—„ÐMÍK³U2r5›Í!ag¼bú"²@• ©š‚8Á[ªªîÝ»wûöí@€×!N¿òÊ+À›x^3‚H`F£qhh¨«« Þ¬ÔÃR{ÛÛÛÒét4 jvÐn:8vìôà«éYPPP\\\RR‚ë±"åäNòq§>‘zþj‹»™ä†]ÌÇ%‘Hœ9sæøÃððpmm­Ûí‡ÃÇß±c‡ªª›6mZ°`F °Çb(W‰tt¤è¸B’±© :×·´œ·â… d5okò…G´Kz~Æñ%Úív/X°`ppðĉMMMEEE4#r®½¼¤75Už· Á& Ý„cš´xòÿÒ¬:8[ÑÂÏ…¶Fa­¦ûÓ2Hô[þV’xÊŠåè›LYhQ‡|ZÄNÚ“¢ÂOx2½:[mhÚâˆô—™LbŽÒê'²iB—²“–àÑ8ã‡aÜ 'Ã^—òÃþðÿ ß }L¾äK¾äK¾äK¾Ü"åjÎÈ!¡³¸›Žpqǘ·KÕ¨úx"•£à†QöÀL¶ßÏqb""=¿§`‰Ò ºtu’“À?äàˆþ¸†3Vøç„Ð`$¹©uÂ(3ô- ®AKQ§g»è ^Þ™ô¡ÑhL&“@Á &“Éáp€¨E˜¯'ž$Aº9ï*T[‰ÐÁÇ—û!†\ÉÎ&ˆœð ¹(ˆûH¥RHz¡ãÙ(Z°¤¢ÉPÓ›7Ášs%>‘`I]KòKQÛ|@‘èït©í|Ð9Dᇕxp"³ŒF£ÅbAÂâX,†ìxáÆb±x¥IM@ÿ –ƒTÿ#n#Ѩ¥—¸¸åÿËeÞˆ»çK¾äK¾äK¾äË-[¦‚m –?úA×w_2ÑV{ò+õRØÚr¯€þËù,ô#h÷I2‚íï)…6ÀŠ\>-!)XÂΛx.ÜU@¿Ñá­Ð9x’¤E-ñ'ÒãÀÈÈH__à™3g677#½NM]Àï=Ûl6Pu¢Ñ¨×ëíééI&“Çl6ãèXdk ‰ldËÁF3ö÷÷ƒÁ’’’ÊÊÊt:‰D.^¼øÆoÆÅ‹oذaÆŒ$ê1Œè(øÕú¶  ¥ÜÉG%…7HI0{Éö”l ÷…¦“]XXˆÞÃAz2™ìèèxöÙg80:: øiÿþýsæÌù‹¿ø‹•+Wbßÿæ›o¾ð ©TÊjµÆãñóçÏG£ÑŒNiµ=xð Ë媭­-,,ôù|»wï>tèP0¤ {½^ƒÁPYY9þ|«Õ œ‚‡ùi4m6>1›Í‡Ãf³¹\®3fÌš5kÛ¶m'Nœ0 555ÅÅÅÒh1Pê">.œ;ÀI•EÎJˆ¤Ðè S±ôøÝœÊWj;š‰D2ZŠ4³x‚,éQ¸1L‚T™êëë7nÜXYY‰z¦R)¿ß‹Åô6Og·ÛÑ-¤ñ”ÉdÂáðÅ‹;644FE)))iiiY¸pa]]&E,Ó‡iK«1}|I!XDdó³0Ñ€öf¦@@Õåh1¡'ÔÃd2Í›7Ïf³ †ÚÚZÐKËËË+++ñŽ€ìA¢|=¤ûÓÛ‰w9&Nß–€ ª3—S– ,•=BÑzàõD´DŒi&[(O=J-‚§Óë€PKÎ$Â1‰„&¥j'+étš'rmiiÙ¿gggss³ªª€9 á”ä¨È˜±€Çb1à>è (9âéèvUUãñx"‘@¼.A9Dý‡A“>ÄÁÏøøx2™Ät©ÇãqŒplljQK G"Q³ÙŒ£#Á˜\hT,K$ª½h`‚YŒ~À²C‰qÍf3r ‚Î,ß ?Á~‚ð"Þ†&“Éh4nS%‘HƒÁX,†Þ†rºõ±Ûí‹#n·Ûm6›Ñht»ÝV«µ  a‰xJˬÈÖìŽáL€IDATÙ04á§(”ÖóLvîcØ6õ?1‹Å,yx+_òåÝ]†‡‡ËËËov-ò勪ªÑhôõ×_¿ë®»nv]òå¿L‚Gä,äZØl¶ÚÚZÚ ÝÄ¢?º—ô›È7à±H´qäÎ’„žèÃh'©çˆìÃl=i»Œ§HgÎJ6ó…Øû|#ÈÊO;©u8Åb¯¼òÊÎ;{{{C¡ÜÎiÓ¦Ý{ï½·ß~{QQA\éC‹}sAAA xýõ×ýÖ[o=z´­­mëÖ­Ë—//))AW˜L&ˆÔ*q¼C_©2ø¥hû”S?¸"›LÁ}¡ áƒhxKa4ûûû·mÛ¶{÷îH$B£FOœ8QZZZ___UU¥(ŠÕju»Ý~¿tt4‰F’dpÚÚÚ"‘Hqqq0ìïï‡F’ätttœ9s¦¹¹šÐD" vyÎE0Awßáp¬[·®¡¡aÇŽ/¾øâöíÛzè!P„D6b¨Ÿ‰’EI'ÿô•$IÃg¿ª#‰¨¹h›*ãþH+‰Ê°B®>á„€“GšH$€O‘r % €¹*Š2>>ŽlƒP‘êFžÞTF Àd¿téÒ®]»öïß»UWWÏš5kË–-Ó§OW4. ¡Ò$D¨D,óûý.— î"æ>Á”¸€¦^EEÅÂ… 3™L{{{:ž3gμyó***aDèw´]ž/­Bˆƒ¾öÚk@€:Üï÷÷õõûî»az›¡ãªªÒ#p+ô .Õ 0—©¢kà«£†”¥Qèù+€¸¢Ô]f³¹©© °u*•â; !„ÓéÌhÙߨ[€ÿââ´Ò¢D@j:äŠ`®k nêú#¤ÊGiÉà-ÍM=<]ÑóPSŠ­N$@aСPˆT !Î%„èîînkkC³ËåÔ5::ºoß¾T*e·Ûq+UU¡Æ …Âá0qa-ccc€_{‹qG‚G“ %Šº ¦n @m´Z­èLÌG0…I©]Lj“x[t$Fˆ$ޏÀ§ä%ÄCŒ@=Ô°¨¨ÈétBñ ”Édìv»Ûív¹\8=J$X‡Q´VŠÇ£é¯Q V8¼…°Y²Ìh«Õêt:ùÆ1ï‡ë!*?š–YÉðø¾EdcÇú·-l!Š”tM@²fžôS¼½29@–‡·òåV/yÿ’‹ÅjkkwíÚµ~ýú›]—|¹–òÃþð3ŸùÌç?ÿù¼yçË;S®È•ÐlˆoPeøS&zúE#|ËŽ¯¸6ü[bד—¢jq"DS³yO¼&z·Ÿ£Q™\¹«øoõJ+B§L/=Ëh4îÛ·ï·¿ýmOOú¦Ó鎎Ž_ÿú×N§síÚµ&r j·)N¿ùæ›Ï<óL?u ×ë1™Lï}ï{áKK­à´œ…¤Oìv;Qà€VTT”——/Y²äܹs¯¼òÊý×oذžI2™Ì©'Y9¹UIÍ*ÄY=H6 ž={vË–-Üñ†ã¿µE—RJ,2Q8•••ï}ï{c±Øë¯¿>kÖ¬õë×—Ddƒ¹JvUÎŒû3É,æ´4|V“l˜³¸as„Ke²túš«Z¾3¸y`Nù‹p7,ñx¼¯¯ïÈ‘#mmmCCC€˜—.]z÷ÝwϘ1ÐLNýráÒétww÷SO=µwï^ bttôÒ¥Kñxü¡‡ª©©A£œN'2•ú°œ8Û&“ ^®Óé$Bê÷¸©©éŽ;î€ç‹Å,‹ªñ˨’ˆ.ˆÇã±X ͤF¡9À¡`?Bˆ±±±D"qøðááááúúz§ÓÙÙÙÙ××766f2™ŠŠŠÂá0h’Á­±‘ÀÂk±Xp[ž&‰¼È FGGC¡P"‘jooBL›6­¦¦æôéÓ>ŸÏf³µ´´477—••!g_2™´Ùl‚!2¸s,‹D"ªªZ­Vp¬bRÔžÐdæÉÔ1)Š‚£«Õ öU¦X(œT€Uq Á£Uí0ŒsEIЊ€'0C)ï°` X Óé¤Ã\K @œŒŸ‹àÀmðûý]]]­­­HÖNEdKiðööö¾þúëÃÃô¥â‰DÎ;·zõj„fp¼6ÓÄ‘”Ñ’£§R)³Ù ÷¦ÌMŠ¢¸\®+V444<ÿüó»wï.,,\²dIqq1ºNÏÜ‘:“#)R3söy&;#Á[œ*Â-A0„.S(òûý‰DÂ`0#¤EQ”¢¢¢X,vòäIxÈ’‰ÆH$222"„ÀãÜn7D—@é2è¤ôÑW‹/¾ýöÛ=ªªP!¡tn~Äb {"™LŽŽŽööövvv1,***---///--¥St8œàÜ{ï½—/_Þ¾}ûôéÓëëëyÐ®ÈæOå,†lávÊJ6¶…"iýpSŠY#ëâÍLJDÍ@nöÜO30]dØ*ŒhE¢%“É®®®_ýêW÷G‚ÂG}tæÌ™àÄѪ¢2Ê',y``à™gžyã7$é·D"qàÀÚÚÚ­[·Úl¶L&q4¾ÚЗ••­X±¢¬¬ ˆš‡Ï;WXX8þ|¬|t "@3¸“ð?U-ØÖáp˜L&¨ò„ØáiÓ¦‘ ¡¢éutttvv’Up°)÷ôô´¶¶BH?©[$["ú+™L¹D¹Öø;Ñh”Ø4dó¼ -øU,fDë’Âôï±®566¦(ŠÃá œ¹˜àØfã>„ Qø¸‘ ‘hª¦Gf ‰%pŽ©ª*à“ÉDêÔ@T’òèáq¸Øn·#”Ç d„‚8ƒÑ/,,L$_-,,$éC`ý.—‹w)‘ív;PTUU/_¾¼k׮ŋ¯Y³¦¬¬ !ççÏŸBÌ;·¸¸X²^NüA†B¡ ËÅ™Ñr× ·Ño„oŒÇã'Ož„ì blÇÆÆ‚Á`yyùwÞ9þ|B‹h9¥72ÏU*44 vN5ç©{需c‚1A¾Cog–`;ZcÑOJ(†ãï<ÔoL:ô¢B/ezŠÅbÁªEÜ= Š~îêêêééY°`ÁܹsqsE#·*ìÌo¢ ™_fi‹õÿ¡%–€ÍG%ÑïL†¢<¼•/·zÉûÿW,Û·oÿÌg>s³kqÕEÍóò´4yóæ%o·Z¡íŽaâ¼f×ñYøcê»r• ÞRuòÃÒ^È <”€v–S\ªÊToø®Nª-Î8 #ØŽûx.ÅjÐ% à ûûû/_¾ §‹7m …‹œ§£œÌ‚t{ÝÝÝÝÝÝR‡ã†ƒƒƒÕÕÕ€Û¤-©¢SêQµX§`0HÍ÷x|¸±±£ HOT# íÛ·ïÕW_%¾>ƒattôĉ6lª´EÀ…Ü{‡Ã±bÅŠ )F+’Éd[[[uuµ¤O‡‰&4²)a !, ¹µMZ ‘MÜ´ŒFãŒ3–.]j6›?…F¸éîîŽÅbV«¸*µþ"‘€ž‘Ðâ |²ƒ!ÆH£êO0eB¡õ›"‰”¿TUÅbhÐtÄE6W—À t‚¹îï ¥0„æQÌ2z¨4d6 þà+@EˆS´¼ xO˜ì œ={öرcV«uÓ¦MÕÕÕx%ĸ)šò*Ñ% +ºWUU0†Ðƒ¦É5ùŒ£O€Â Ìm7h‚èœíÈGœf7!zƒáÔ©SÓ§OÇ*‘J¥p°Œ@"o–²™bÖÐF‚·xö=Rž¢3,V±XÌápPϘÍf@·………80À`!|¯è7‚™T-̰ž®jÁÚ´+ >þ/ŒÇ‡3"M:X1Ra®ÔÚÀ€y–gX82BšxÜ+nKÀœôÓ–Óãyc‘‡dæÌ™/^%XŠ.•‘+Ã"3ºä¼žô9‡íè´€^èjÌq›ÍfµZ¹¡Þˆ’‡·òåV/yÿÿŠåÕW_}óÍ7W­Zu³+ru%ÏË‹F£gÏž­¬¬¬©©¹Ùu¹…JÞ0n\¹†³œD˜ëò\=X6 1„ßJ:-Ä6Žb^¤½£’ R8Á™3¥JÒ0|‰&ÂŽÓU¦ì«fUqÁ )¦#Žƒet eÏ0=…?pì|ùòå`0ÈCÞˆkFoB›Q•¨ßÈ/ŠF£—.]:zôè¥K—œR\\ŸOÑÐÐPTTTTT422RYY tÕ«¯¯/--íîîž1c\Axnˆ*xÊ“ûD`ŠÐaš€Ÿo/Ùf+ÜuIí¥'Rþ>Ι"tàþ&¼f¼_á2$8™ðÍKLgppðøñã&²Iü6NŸ>}zݺu€<°rÂá0¼åÎÎÎS§N!øT°Td¥½½½ÝÝÝEEE©T  ƒÓ鬮®BX­ÖåË—¿ï}ï3›ÍÑh”d’‚ÁàÀÀÀüùó±€¼=P!D$5@Àét¢·!sBUÃáðÈÈH2™´X,¨9VB—˵téR‡Ã¶Ã/…bÔàà`WWwž¥5üüùón·Ûãñ‹¹‰Á"‘4³!ÏÄÇh4&‰H$ Ö Ä£¾AA¤Ŭî¥p‹Åb±Xðäá àΰ¢hüä`˜Ö¡-Üžñ! ìx<Y:BްŒSlôªâJóDÉI$‡£¯¯Ïáp,]ºöƒ‰O|^¼DHŒÓŸ£Æ@1H× Œ<šßVÿ.¦ A¼…‘;0DŒŽÐtÊ0F±X,‚̈yj6›¡BHa8¹1™Là© !0ʘԤ*Å+Tƒ©j*¼+h%©Æ„Çá]F%ÞRú9슖}çPïÑö@zoª,lVÕÈüÄ‹Bòq1§eÑ (KF•N§kJ¤2ñ/UK€#M4 &,V¡eÎá»ÂÈl6Û‚ jkkÓZjiÜ?’ݚƷFR·Ð•l¶)@ Þ(²mºÝî²²²‰¢°¯WÉÃ[ùrK—¼ÿ?•²råÊ¿û»¿{óÍ7ß¾úN–?Y^žªªP‡=~üx&“YºtéØØØ¯~õ«;vTTTÜwß}¿ÿýï ¿ô¥/•––ÞìÊÞ„ò'kï@™ ~t‹— Ë…¢0!v‘M’š¨ôð}È/þ–ê@Ñ ¦m‘)øŸü$–:caÇÏŸ¥o ÿ6çÒ¦œ‚Î&¹˜ è*p$Zv´EEEóçÏ/..–8SÒ£‰¾ÑÙÙùâ‹/}úâÅ‹ª¦ðB?ïèèèîîž>}z&“©¨¨Ã@ñx¼²²rîܹ-FbM0ïpg¢ ÷"‘åq#(ûð‹âñ80#À@\G\Á³² Mì™FPh€—AKO Pž?nEˆ& ÐèD"‡I[FÎÇ%Qž5\Œ¿ßzë­ÎÎN¡ã¢´··ïÙ³§¥¥•ôàÒ©ñz½¸¦RÃßCCC»wï¾|úôéÑÑÑÊÊÊU«V]¾|ùСC™LÆjµíòù|°@ÉõõõV«5‹Í˜1£´´ôüùóàúµµµah íV ïáw¹\$Ùc6›‡‡‡x¢gmF;::&Ar‘ì= .éaÃh¢)šT6–AH&§¸~EÒ« ÁsÉ«'À–,nQ$ÊŽ{òsà)JvÖBZ]!V¸‡1ZgD6߇ÃÀÓ©z”ÕŽ¯f¢B !ÎaIT5ÁHŽTÔ ø•˜&x"fJ:ŽF£]]]]]]ñxÜívÏ›7¯¤¤ô(g*•:vìØñãLJ††0³(ë‰aY@ç‡Ãáîîî®®®ÞÞÞx<ÞÐÐÐÒÒWÎÀ´ #SU“äø+˜z •¡ÜþüÙ³gÛÛÛý~¿Ãᨯ¯_²dÉ’%K»Ê* kƒ$£££ü˜šˆ<½½½}}}uuuÅÅÅz—7lmm>}:™!†ÿ¿páÂ5kÖ¨Z/` @™¶8‡v8›6m¦h1,@àØ±c%ý#EQ¢ÑèØØ®·Z­¡Pˆp¨T*åp8fΜÙÛÛK^"P‚4œ|›Í¶ò¦‘|K À¿(i¦ßï‡ú'“ÉD"py=éçˆ>£h)EËUšL&Wv'Uòûý~¿ßét–”” …¿ßïóùÂá0 ‹¸ÄÔ::>> ÁVãÃJ–àõzó›ßÀOõIÑÂÇÈÁSC?}Ôj0<XQQ¡hÜXBÏ ŸÁz… ;H§Ã™Ä}qês4 8g*Q…¨,;› *¡ÕMéIÑÑcõ«œ‘¶‘AÓÕÂ'hA-\rN"ï`D@$¤¸oÁTêè´†€-=Û‹½‰”lRsÎeŸ/¼|Å¿téÒo¼qöìÙ±±1,þ›6mZ°`©°wuu½üòË`MµSà‘J¥¼^ïÞ½{÷íÛ744„Š8p ¢¢býúõk×®…b¼ÔìÄŠ&ö/¼ÈÁn‘}DoêŒ;­0WµÛÑOóœo=~ød–R¢QzlNÂdñ/0/’NC×á` ¶u‰“ÓIzH(O@ A¢—R}`œ˜2`nrë2hÑʼԓ“•ñý 5ò$p‘¿6› RžRŽ”QòðV¾Ür%ïÿ_m±ÛíÛ¶mÛºuëC=t£ã™¯Wy·óòü~ÿ /¼ð«_ýª··7 Ùíöúúú-[¶lÙ²eÖ¬Y“üð'?ùÉ7¿ùM‡Ã‘H$zè!!ÄßÿýßðƒB`¹ÿà?øéOúÔ©S“ßçµ¼Û ã/|rm8—´Ë¹^HÙ$€ *Lh‰¾’3Øx%9Ö£êh>RÔ ¨[üs¾å_Q|wœè>ªNŠü 1äRoU™ÌT ÃôéÓ‘ÕžzLj‚ÔH/A Gâø(ŠRUUµdɈòðÈD}+P¥óçσÎ#X¢I8íÑh4‹Á#⽇g4?‘HTUU ƒÁ’’ *R²¥—$çz’à60öîÝ»sçÎ3gÎ îÉn·CúúàÁƒ+V¬¸ûî»)JBÕ¤¦yw%‰þþ~ø‚EaÀ¡ …Bííí‹-²Z­Ð…‘xF£qéÒ¥÷Þ{¯ÓéÔü @d9ð½áÉS‹ ‘4*SZZúž÷¼gݺuÜ¥O§ÓÁ`phhÐ G儦ª666æõz⇖ÙÎÎÎöööþþ~›ÍVUU…nDM @ÞÛÛ;<ùdÿêÕ«—,Y‚X?ŒouuµÉdòûý^¯×h4>ðÀ ¢)C1Å.-‹Õj]µj•ÝnGK- °Q 0´(ÁP‹‹‹«««;::½£±fÍšââbZ4ølB À©S§:;;¡FWRRÒØØ8{ölP 9*A’ö´îaô©[b „ÃaQ•—————ÊWšqBƒ L÷M°#>Ö¢¢è3Þ™8*ÇÃÓ¤w„‘9N₾ÃÍL¤ˆcKð‡´¤·•ôâíÂü‘L&Ïœ9óûßÿ¾³³“ §ñññ‹/F£Qr!V4¨Z02l(¦@ °oß¾;v`²¹¯¯o×®]EEE+V¬@ÃùKŠ·”ÿËK†¥4¥·½ñi ”ÚÎßzúwºTÁÌø5œÈ?D¦N¯ãGVªŽ…Ÿ`QÇã8½àÈ+,}%%%„Üa\Hy À(`â‚‚—Ëe±XHóë- -‹Åž&Ö=‹Åâr¹š››ëëë)Ñ$'ñc¼LvjTi 73¢r“⎈Âá0Þ¿ét!ŠüØìF”w‡'œ/R%ïÿ_C™5kÖ† ^{íµÛo¿ýf×e²¢¾ûyyÇÿÚ×¾öòË/×××/[¶¬µµ5ž9sæÄ‰/½ô’bõêÕßþö·W®\™óçwÝu×ç?ÿyœ¾õÖ[B`¸Bˆ£G !-Z„Íî–-[nv[ß¹òG`ïŠÂqkF¦ôÛ ëR&B¸ø.jtt4“É@ ™œ ¡I<ÀÍ€öî7JÚ MÌ[¿ÕÙ¢N‚ñ›M­‰:”8fØ[cóŠJâµ%õ*\!øÉØnf45Y´{M¸Ø;RôÉdš={öý÷ß?}út0¡ `,XöºŒ& N)ó ~{ÏÁd2UUUÝqÇsçÎ5›ÍpJÑÿÐ.QX$e»páB?ŦѶ›ø`08>>Žèžp8lµZqÕjÅ 3y†ããã@  ‘¬ ¢ÉJKK9ð‡Ö§j/ðà·Ÿ>}úùçŸïêêB477744 ñ\(:pàÀK/½ä÷ûW­ZU]]ô„oEÐuoooOOwh¹YŽû|>¿ßžCb0ü~?ÆnÆŒ·ß~{ii)Ò®eX¢.¸"^¯7‘H |Q“h„ ÂuD°›Á`X¸páܹs/\¸ÐÑÑQXX¸zõêU«VÁŸ„µc;vltt=#Ql`iÇ7 ¥¥¥ zÁ뀟F»»»GGG8PRR’a©áÍvvv"n±²²X*zÂÆ04¸‡öèL³ÙìñxÀ´ÂˆƒF‡ó|Úl6§Ó œÒHM òÞ4¯!MÇQÄ+ÍGÀF£&‚šMÍÃįnÐ4ÈR‡Ñ‰D"çÎB 9´ hýúõ÷ß¿Ýnç@Œªª"‚…øýþK—.>}š`ŽDTTT¼ÿýïß°a~k³ÙN:UYYYRRB€5$$„(,,ôx<^¯·¬¬ ü»ÑRãp8 pC|ñÉh’Xl¡—ð\ Z-ÿ_IL&“ÛíFN!Äèè(¨gÆ ‹/¦¼ ‚%ÙÀ¿~¿ÿµ×^;|ø0€ÜðôéÓÁ`pãÆ¨ùó<›: œ”à¿ÙÕÕ…¥Iáñx.\8mÚ4ðõˆêÅßz«eÈV³¢µ‹„i¬ÑW”t¦?n¨HhÁ £­qÁ8þò%í?êa,}Òá‡AK«GÃÊ Z~O~@"¢ÇA ?Êhi.FFF^}õÕ®®. ¾I&“'Ož¬©©‡În·744°.((¨®®FÖW hEeb±XOOh¼ ËÁ‚‡F£Ñþþ~ÔŸêH‘’œç‹ÅÐ6Å¢oSÕçóñ„°+â{ÒË.Ó;ý1Ü«Ðs'H”Ò  ƒg, …B@£`QЀC qO,GøKN•°”ѾE0j0º ï.— ¯'Z (Q£Éd"ö%Ð|È¢©Ù‡a*5CO–••ƒÁÒÒR§Ó Æ.*ŒË¸@$¯–oG°t+JÛ¤x}úV†·þ8xy/¼ðÂôéÓ;::ÊÊʤ¯.\¸ðË_þò;ßùÎêÕ«¿ô¥/}å+_1èijW­Z…$ñxü‰'ž())1™LÝÝ݇£««kúôéçþÏÿy³[ùŽ–?ÃÈ*×öLþ*9´PJ&“¡PèüùóÝÝÝ«V­ª¯¯ç»:lOáT Í?$z?Q¸O…m¨%VãǘØ_’' Ï4¤H"„Àf{Dú!ªvüØÂUÀ9{¿1cFUUÕÀÀÀÐÐÃá˜5kÖªU«æÏŸo±X¢Ñ(z nBŽÈm-Uu«¾¾~Á‚ÝÝÝ'OžL&“3f̸ãŽ;æÌ™ÿ=Œn¤ð:E“AÛïóù.^¼ …rŸªªP`q:ÑhlÀƒT-ñYQQÒ8?~¼­­mttTáóùð\ˆcccJ‡ËåB¬| b#  ^úèèh8w:ƒNW__ŸÐB/KJJ.^¼ØÖÖf2™***ŒF#¨@ðOEœöèè(T·”lõ\r½º»»‰Ä‰'E™7ožÍf»té𠆆dÀk@ŠD"pK’Éäèèh 8pà(‡h;äŽwvv ”–– ‡ÃQ]]m4ÇÆÆvïÞ-„¯ 7]]]HÚ%!¶0{‡ÃQZZ z‹Ûíž9s&Ú‹Á²Z­ííí.\˜5kà-’ÆíرãÈ‘#‹/¾ãŽ;P[“É¢Œ ~á’ðÍ0Ö`îœ;wnttÔb±”––Î;·¶¶Öjµâ>Äpð—sâHžðkž÷Ÿƒx‹hh¨#(‘zÇn·Ã3!‚Ö¸gd ‚Åx’¿WSSÓÚÚ ;”ïMtŽÞNkÉ ©iN§sÓ¦M .B­Ã1³¸ûþ3±EâzOœm„žÁ4ùa†Åbq»Ý€ù8"­ädüåååË–-[¼x±Éd¼«ªjMMMmm-)[óù¢jDÈ7Þx¦ÎQ³@ pèСêêê d´ôµ4Ü„OÁz!.މyáÂUU7n܈ˆì‘‘‘óçÏïܹ³´´tÉ’% ,€Á^,ø0šf)ti^à"4¤ K½šÍ"Ù))P=ÍÒ5rÆ^B‹f ‡Ã@R°´rž ¥áCŸQá2~xFãFÒé|øèWœ#†·I8îììÊd'èÀããッƒ!UTTÜyç###À¦kkk J#Ji4mkkà’R¼ÿ}>¢8‹wÁšxEfXÜÇjµÆãñË—/Í=räHggg:öûý¯¾újGGx €WðnB+ðÞäd=ÎÒÂ;.C/Ÿ*ãr¹ÖÐÉá’^ã·Ôض®HÌGEQ öˆ‰Y^^Ž¥F‚=éî“¡Åb©¬¬DÖH'òPt´?§D"Rá¤Î@P¯µµµ©© ˆ˜$Æé%Î'5‡A-;Í Ú\a瀮Ëå† —™\™¯cÉÃ[ùrË•¼ÿm…ίnÙòÇÁËûò—¿<ÑW---_ùÊW>ûÙÏ>öØc_ûÚ×:::žzꩉ¶•/^„*ð–-[ŸoxxØétD"`%È–uòäI£ÑØÚÚêt:+++I•-‚kd±X|>ß /¼6lØ0kÖ,À\Þ…<†ÀÚ:¤ªêÌ™3ívûØØù'ða"‘ˆ×ë}õÕW/^¼(mÇáíTUU-_¾¼¦¦îŸÃáX±bEcc£ÂjµÂÍ@$ Ä³ÙŒÕŽ“Ó馴b”6NÕ"L¸Á=hllljji‚Ètn–“Çã¹téRooïàà ÑÉåp8K–,Ù¼yssssYYx[°s8–‹¥±±qÕªUÈR‡ð"Ô yÐÏœ93k֬ŋ£0$ˆXêR¸…V«5‘HŒŽŽ^¼xñܹsçÏŸF˜ÌÅ‹>|×]w-\¸”L.“„6’‡ÏIO¢V\Æà𠚎øèèèK/½tèС@ ©âââÅ‹oÞ¼yÚ´iÀm%  „µ3™L}}ýwÞ9wî\x°„ˆI4 w}}½Ãá…Bs_UÕòòòÖÖV0û€M@ˆ žKŒ Ø$å€à4`P®ñÄcëà¢Rq £°°<,Òþço 8£Ïc±d¥¥¥pþÑuâ(3¿ßöìY=´bpppÞ¼y”ÓMdÓO(Ž?Áe‹-ª¬¬t¹\ñxæ×ÚÚÚÕÕµgÏžçŸÞëõ®\¹²¼¼œŸ2D¥jšÜœ/£j’í‰DÝ ðN>2,5§Ðà-œgଂÛ!±½@Ø!©  Àçó!Ž»··#NãCCä#Ì)‚-Üc‚€s„çv(½UñîS4]0 Eýýý‡'ZÿæM§ÓÈf ã01wî\dÚUºZ` ƒA|} Ê0+½R©ÔåË—wîÜIÖÇÑh ÞPx)P­ G2™† tww¿ß/„;xðàÙ³g9 ‹ GZOè‹ú«4u8–<×f³aá¥3¡e$Àš ReKD:Hü x½`ª‘Rÿ£±d~€·ªæÓ göF‰NÆ"I9i# —“F‘ ¹¡¡Áét"X[Š/,s´Â‚4énô_¡Ñ`Ñ!|  ¡éˆW°ÐN p÷vÊD;F|ž‡·òå–(ªªöööŽŒŒÌž=›"róþÿU• .Lw‹”?^^N[奨¨è»ßýî–-[xà¯ýë_úÒ—rÞ/¿’’’Ó§O¯Y³æå—_B,Y²äf·ï&”?ÃxWu‚Àwø¹ú}‰ž& ²£É‹Ã¦!]'NœøùÏþÊ+¯Àãú_ÿëÁǨ¬¬,++K&“ƒƒƒÁ`.%Ô|>4ŒÁ–ÅbÈUè' Ñ ¡”ëîé¿R>;Ú­BQUUURR’L&ƒÁ`,Ã1o(Æm7¸6N§Óf³…B!èC!â5!jžH$R©Ôàà ËåBÆÇÇ»»»¡“]XXF“É$) ÑF||Ž„„&UUÑ:7UUUUVV`ã+´œ÷Цý\\\Œ½²ªªV«ÕãñPTcqq1º¼ î\ †²²²E‹Íœ9ÓjµF"«ÕŠ€ lèÑÛ—wûí·'“I¤€¤ÃMô‹?‘ªûR“ȆEøgŒ€ý(L$+“LChª×ÛÛë÷û¥@'™Q= Í$vIÑ!ò:N;N‡ÃQ!bý8ŽªªªY³fuvvîÚµktttãÆ|Ÿ¦hZ¦Õ pÚ T˜¡T‚‘71p þ Õç”Vx¿À¬ïëëëëë+((øõ¯-´`sE§ÑáÆOT¬LvƆ´–ú“šÆÈMšìy0‰r/HÓGe1¼^¯÷…^@ÜVcààx f+Þn*SLGWH7¤Ùáóù<ˆþñ;¨ãáµår¹D6¥—á >22¢(ŠÓéœ;wîÙ³g@·ææft5æ ¢áÈØHÜçBàtŠ`JÀåx(NV°~’ÍÐׇ҄‚øÑ´ÂWׯ”\)PHí‘jE ‹ $´Ž#¿¸'OÊIôj ‰ÿ”î†ô¾ô,ÊÏaÉD¶ŒñÔøÚB‘¡¤©OÀ¡áQÛØÒ ,S ûý~ÉH®¡äÜÍ¢š‡·òåæ—_üâÿüÏÿ|éÒ%!Dyyùïÿ{8ùyÿ’ÒÕÕuþüù9sæÐ'/¾øâç?ÿùô¸ª««¯Yð€—7‘­êËwÞù /Àhs–æææÚÚÚíÛ·Ï™3çŸøÄ׿þu“É´xñb¨½`wUSSs«QlnDù#0ŒwKÑo|ßÉGã)š4mªK¸N›*¨J¿òÊ+ÿú¯ÿzúôéE‹Í›7SðMÊËË‹‹‹áx“lÝn·ÙlØG£Qœ·ÃŸ±Z­‚¹åBøð8'DFÕD%ˆ]Eq+B OÀ6Á va[ W“¶ì-Ï}&“Aœ`QQ\5:·'9 ðGÎ;÷ïÿþï÷Ýwß²eËö…¢F£Qi`¯ÐWh‚;î`ïŽt‡&“iáÂ…p†ñ[xPØ[×Àþ­ÀÆh\A°~ÚÚÚ"‘ˆ’­Mæñxî½÷ÞM›6b¨šä*ãtÎ Þ/¤ÃB´§Ó9gΜšš B0\¨uòc2™î»ï¾ŠŠ Œ)®¡n$}(b{"$"¬½„s¥R)!ÐA§â6›méÒ¥k×®GrQMMMx(öô VÁ ÈšVFKâÏ œtÜ*t>PÅŠŠŠºº:—˼ÏÀòÊã·Š«‚z")¤Ûí@DréÒ¥6l(//‡6Öï~÷»çž{®§§ŒŒ‚‚‚Ý»woÞ¼yëÖ­Š– Ìn·#Ò @a¡ù` ‚€Ð]˜;uuu¸,Z­VDD†Ãá .lß¾ýÍ7ß5 îäf@ó…ÈAª&„VÃaÛÃüêîîþÃþà•¯0cccX»vmmm-Â)™øð*›šš>þñc’ Ìœ9³©©‰øÈwU4µ ‚‡¨«MŒ/_`'!f£2Òé´ÏçëëëCòMŠi"ìFÕDÜñ/ˆ<0 ²:,€EvLAf‰Dbxxñ¿‚y¡ª&U>:: …, X“X*UM÷- ŒŒ ® “óé0÷Ñ3¡P¨³³íСCmmmXcé ‚Z ôÁ2B )x4ಡ&`шq'q1Á˜2ÜJQ7¬´˜Ëçƒb ²žÐXcTIÔ8; v áEæÓîînÇÓÐÐþhzœÿ(½p-ŽÕƒÄÞÀÀa@Š&{YP^^^WWW\\ ¢Sqq1`&,$ç„% ï£ÑÑÑ×^{­££ƒøk‚¡ÅÅÅ+W®\¶l’`†ÚívÄœ’À–N¿ÂMNœ8qáÂ…D"Q^^¾xñbŸÏ ËËËßóž÷Ô×׃Ç‹ŠŠ¨ªGÌe% *QjB Í!<ˆL‹ <Ù%µ¤· %+¤Ó ‚e$$$—B›é EhšOŠXŸñj b#êCù7é+²FÊ`ˆ544t/¯èµÈtPÎÉ¢ðt$mK„–Á“fk"‘ƒØаâ½L_$AêÞºáÌÃ[ùr3K*•úÛ¿ýÛþð‡ôÉðððO<‰üÿ›]ë›\R©ÔßüÍßüèG?R51c”ÿñ?þ€ùëU|>ß3Ï<óì³Ï>|ØçóáCEQ***î¸ãŽ÷¿ÿýwß}÷µ­PïF^Þä¶š³lÞ¼yóæÍ}k0Ž?ŽÓr!Ä׿þõÅ‹?öØc÷Ýw<!„Édjiiyøá‡?ð455Ýì>¸áåÝhï®òöÑR:ß»¾Eò< ÛâðmæÀ½:vìØÏ~ö³£G®\¹òŸøÄ‚ %P+Âá0ª…&–AL`ª&šN[IÚªRM¸~gI`ÿ ç@ x@‘H¤¿¿qX‡£¢¢ˆ›` Ç€WðpøáÑY1cÏ %©ââ⊊ Ž[PLœ8$ÝB[gÂS(¬Ïb±”——; wg‘N§qsÚ1S0ÒÏ«¤¤Äb±€x‚¸Èññq—˵iÓ¦õë×ÛívˆO¡ó3š">8e£££mmmÑh´Ó¦M«ªª"Me<Çèè¨Ïç+..ƒ‰GUànF£±ªªŠÐ+:"Fˆ5£3000<<Çíèñxàä›Íf®"\VVf³ÙJJJ.\‹ÅFFF Ü9sÖ¬YSSS$Ëb±×ÖÖ"8…’P7©w‘Ç_ è1àâ’ô z˜ôÔUMZW‚ùDßÛÈn·Ïœ9ó®»îr8Èüèt:éô>“ÉŒŒŒ¼ñÆÿõ_ÿ500@0•Jµ··§Óéúúz¤äS5©5b¢Q~.’–ƒ­RX"MøEè°?`±ð´ívû¼yóÊËËm6Ûo¼±gÏÈÕcÚò5=IÂ4”Zþ0®áÎ'0‹“'ObÃyIh”×ëííí­¬¬„qÂòy¢,>µµµ¨’Ãá€C+€k L¶œ"‚ƒÁ |x‚™¸¼A(‘H¦’H$À+Á\FÊc,Ý T¬° Œo$™6ma7<8†»»»»¿¿?¸Ýn ¡ä!U‡¯‹6bZy½^·Û …€ I »I¢›$Àë!ѱ E•ÏÚ{ÐÄç{j ýÄH¡‡3ÙÙESÒ$†v#tøDh> áP$JÄU‹–#U£*Óž¦  aМ¼xa‚€ ™ˆåKbuQ ¡Ño‰·:pQQÈ¿×cç8aÉÃ[ùr‹z¥Ð-”·Þzëøñã/¼ðÂï~÷;髞žž§žzê‘Gáþ¿ªªÿôOÿô™Ï|æ@|gŠ]”³\¾|ùCúо}ûðßT*UWWwäÈ‘+V¼ï}﻾ÏÚºuë›o¾Y^^¾råʵk×–””!z{{=ú»ßýî?þã?øÃ^C¼Ø­ÆË›¼—žþù¡¡¡‰lõç?ÿù_üÅ_HÛ»)v~II zU±lÙ2¿ß¿`Á‚}èC­­­ œ>}zß¾}=öØc=ö¡}è[ßúÖwÞÀ[Í0þøŠú6&Þèƒ>Dv¾'ý•—.]zê©§Ž=Z]]ýÀ,_¾Üív1‡ÓŽÈ_…ü¶×ë…øKQQ"’¸Ð,ÍSÚÏÑY+!bj¶¸ ÑI°Å‡¢ô_öìÙdÁjµ644Üyçk×®E„£¢Å BÐýMq‰R1rÏ!<ä‰åÜ4SÝ(¼‘öÊÐæŒÇg6› £¢°¬ó"›À5D¸«àt:=Ommí¢E‹0@‘H¤®®nåÊ•X刵Aþ†bxxx×®]‡{5œ>}ú}÷Ýeè Kg†äª )½»ê:±E™ÐÜ` ñxüäÉ“Ï>ûì… 0^f³.þð‡§OŸNî(é4 †U«V=øàƒÐC˜ç[o½e³Ù¶lÙ‚¬ŽpPI™XÑRòqO)Ã2ÕJ¥RÁ`îeû¢±#`—Çm Æ q!'2 µµµ .T¥¹¹™³lÈØÚÚÚž}öYân¬†p×ÎÎÎE‹¡HüNh$2WòQ šH³ªåƒÃ€¢VÄ_kÞZQVVvçw¶··Ÿ:ujñâÅÕÕÕ;F‘V𣨱BÃPP=4‰ä(’522ráÂ)' Äìü~?èŠÀ‰È[VU5öôôÄãq«ÕJ8ÄÔ!„(9’£yGѯw!*çóù<žE"Ðøýýý{÷î…PºËåJެ‘™LÆëõ‚“•J¥†††Îž= <ØÑÑ‹ÅH. r$9yòd"‘ðù|ˆS¦n!§&zæÌ¿ßÿÌ3ÏTVVR §y H$===‡# RÞ ²GCé÷û-‘%×B ÝÒ)bé#á|ŸÏ‡x4Iߥ®®nùòå2€ž0p²<˜N§±ð‚*E…¨”Tø òW Á4^°:iè}F …Ð‚ŠŠŠÐ½”"ƒF v®j™=‰—ÖRÑK—.uwwG£Ñ¡¡!¯×‹s %ðVH ; PiÇCiLxC\.׺uë/^Œ›ci"„HQžØg¸Ø^´bÀÞœNçìÙ³A³ÂþV°ÄÁüØ äôéÓ/¿üòÈÈHSS“Ëåš9s&‚÷£!†µr»Ý'_ºt©££CQ”±±±ŠŠŠ… Z­VR FE%&Çy*ŒlÈ÷$Jv¾ŠgÄZJ1¤¤7O äïk‚\é<‰jˆéF/A´H¬ ªd§"!ª8o g‡-Ð ßNG»¾PtêòdQúý›ÐÎpCŒ8² H“ñº—<¼•/׳L=të­·ÞzòÉ'Ia‡—ÑÑÑüàwÜq²K”””Lý¶·~y›méììûlMMMNŠV8þùÏþõ¯ýÅ_|þùçÇ÷GYn)Ãø£,S·Ô+E/ò-ûu,f ¯Ñ_‡_zé¥W_}5N?øàƒëׯGD‡6DvÚ5!D:>yòäo~ó›ööv£ÑØÜܼiÓ¦E‹ÁÂÞ]0jPº¥ý%ü:·ç]J˜E{{û/~ñ‹7ß|3 âCˆ‹‡B!§Ó¹pᢢ"®—„FQ,’ÂR¡s®"™L‚…‘Ö²ƒ«L§†ð./Â=+Bâ8%øb|ƒËDú›þ‰ÝnŸ={vuuõ²eËEY½zµÐäÕ)ãÝ=<66¶ÿþ;w¢V………ñxüرcµµµ$ŒB»Ý^VV¦hÜ‚ZPòµx·ðî…žWWW×öíÛ>LÉdrll,ÖÔÔ¼ÿýïçù¼TU…³]WW™˜’’’¡¡¡Ý»woÛ¶­²²ráÂ…‡Ø^ ¢:p¥gÊ¥…W*œ «ÕZYYév»)(UhwEàŽ‚Ô‡‚È„ñDFH‰;UMú—# D"qæÌqºþH¥R~¿²qœ ‚ 2˜ÖØØz&‡B!ŠÛ…ë‡ÇÆÆ0@Hv g, ‚¨€ƒæfMMÍ›o¾¹sçÎââbèæÀ>)†|0Д‚ÁàÈÈÈØØ\tØT{ /þ¿|ùrww·¢“¸Zh^[[Û¹sçàFâqIC9xð`2™ìïïõÕWq äŠ.\¸€0[0ªà¿(l¿†‡‡»»»ƒÁàsÏ=æÂØØØØØ2”¼^¯Ñh* ±Tµ4`O@¤ß l¨diÒsÇÇÇKJJìv;Ù„FOFÍé´ƒBà©»ÀB444´µµ™Íæ .444,Z´Èb± }¡Ûú é¿ét: VVVb®Jb0Š‹‹[[[—-[†“ „˜a.ó¾"$í%Ý1D×ÕÕÕa)0›Í .\´hQEEÏÝAðõzIT:;;1…ûûûçÏŸ™‚EF«À }>,Õƒ ñˆiý‹ŒÇrr˜IÚ?íñ÷©Âηø ©ói4¹l<–;Îo:˜nElÔÖ@U…fâMŽ»$càÎèr ð†ä|éKIoy¬W<×$°¾%‰@ Ô^ÜÈ’‡·òåú”ÉC·B¡Ð©S§V®\I«Ø§?ý馦¦ûî»ßÄh4þèG?úèG?:ÅÛæ¼ó-[®!ºM_6mÚtÛm·íܹSQ__ÿÌ3Ï,[¶ì=kÞ¼yóæÍ›èÛ–––'Ÿ|ò‰'žxðÁ-Zô»ßýnþüùS¼³—÷£ýèßÿýߥõ÷Ù)öÒÏ~ö³Ï~ö³´-CÑÛêÛìüõë×Oô•Ãáøë¿þëG}ô[ßúÖ{Þóž_|qÆ 7¨Onn™Ša¼ý2>>~þüùS§N…B¡Â™3g.X°àúöÞ²EÕ…çˆ\@Õ$Е’ÍºæGOtͱ3œëîØ±clllÙ²e›7o.//Ç $6Íã ÓQƒÁÐÞÞþä“OîÞ½ÎÀE™3g¢¥ˆuBN>±ÙlÒ>E Í›gûò7ÞxãÀ¡PˆÐüª££ãرc---vs„ÐÒQ‚3‰ƒ_ø¥t¶,„°Z­§`ªü1  $1“ÉV„´A[g(¿rM}U“›,ß„øA¸Á.¶¥¥¥¤¤„¸iBóðˆ6¸9:JUÕ¡¡¡£GRÞ.¸+B®¯[·®¸¸˜B6L&Smm-‹p :€tÃÝ9‚–è$\Õ| C(:räÈñãljgDØÐØØØÞ½{çÍ›‡áÀ!3:P#7………‘HÂí¥¥¥È/†; @1§`”æHÀ7íè¡7H; jQ0¨¢ùÒét(B@¥Œ–“ü Î.—X ¤Á€Ai´£ööv’¦H§ÓCCC~¿ßápQ…ÍG"‘žžžd2900pæÌ0P H2]oooooo?´–\.Wmm-¾Erĵ M¾=•J €U‡NgEE…ßï§-EQ¢Ñ(RŠp3Âh4Z­Ö²²2ô€ª‘‘‘ÑÑQ¢ ñ· ¼ë'N @$£¿®øãÇ···ÃC á´R= ¨À2ˆú–RUµ§§§¤¤„ðGH,—•••––â422 …Ün÷¢E‹ÊËËqPJ“Éäèè(&¸Õj½páÂþýû-Ë‚ ÊÊÊÀÛ*++ÃF£1îØ±cpppÆ MMM\a£W“É$ƒ>üðÃ}sˆSFçÏŸ¿víÚòòòD"ár¹O-‰¤Y Bþ.K$N§“óSJSPPP__F_æï2%›•C_a1!íBBÏiÅàà÷üE6™…€?:;šê?f Ò†ÐJÎgâ¥ÖL¹³³o»Ý!ÙF04eôïVzà)n·Ûf³ÕÔÔ´´´@SÏápÌ›7¯¦¦Æh4Z,,¶R|¥`qj¤ZH“±í­­­wÞy§üG ø-?B•9¼Åß¼ ªÉ€Hvô9¯xAãþÅÅÅ^¯7N#:õÁô¡æKc*vnŠ\˜Žš‹ÎÌ͉ "N$§·]/à Kâ4m †±…Ç¡ý¡±JLÛ2TNsæÁìöGŒT¡Á RÿèûMhA»„<’Åb¹H=<<œÉd*++Äæo\ÉÃ[ùrE8Øêk_û÷çQp¢.„¸í¶Û:ô­o}ësŸû}{îÜ9°±ËÙ°aÃã?.åþ›ü¶Ýùj+ÿΔ+¶eŠå¥—^:räH<_¹r%×ÞºîÏšJ•——ïÚµëŽ;îxðÁ/\¸0õ›S\^Øx ¿`ê#{ÍõŸz/=ztÞ¼yGÄVßNçO¥«Fã¿øÅ%K–|èC:þ<%غÊuœ\<`ÓétÞˆ9{×]wíÚµ‹¢(ÊÂ… }ôÑ~ðƒ<…Ö_Éd§¬’Hæô!ßëK¸©`[ÒWü¿ü0§W ²8,ÁvNôíÈÈÈïÿû¶¶6»Ý~ß}÷Í™3{zRü¥h jSU5 íÚµëÍ7ßœ={öÃ?¼`Á‚`0xôèÑöööúúzŠC…-Ådq¢h/„Œ`_h6›‰ÄØØ˜Ýn9qâ¼]Øà¶·· á'Éd²££®²ÝnÇ §Ð@p4¢Ñ(Iq!+"rB½BÇûW„Ç‚Ý-0&l© X¶>ò²PÿH$Ò××Ç=~@i›.²Ý?ô-—ŒVPCdut8”\„,ôº4ã¨ÿüùóèi”…===§OŸ.++“L&LŠð€À_UU•FèsªžWB®Åétb\Ο?OáTt¾çz½Þ±±1@$Êëv»+++!<|MUÕûï¿É’%3f̘>}ºÐ‚¡Âáp0,**O$“Ét4÷ùáÓRê8çÈØKhÞ#ê4d`` ªª Š–•’ß©ª ™Pa!Ô¸èdŸÏ×ÓÓÓÑÑ!ÍG2¿Â¶¶¶çž{Îb±ø|>ø'™L&"óÉ‘#G.^¼(„ðC$‘ü9îÙÛÛ{þüùt:]YYét:]. h A5 ÍððpWWWcc#Ôúm6‚g=‹ÅÞ|óͶ¶6̲Lè¿ ƒç=÷ܦó¹sç^~ùe¸RÄSš£8mÚ´ 6ÔÖÖ -¤  àÙgŸ=pà@MMÍm·Ýæv»‹ŠŠ¢Ñ¨ÏçK¥R \‹‡‚é`3è1ĆB¡ÿóþÏüùóï»ï>ð‘ÔâÈ‘#—/_^½zucc#+¿ßÿÔSOÕÕÕmݺ•ôkMkxx8c(›ššÚÚÚ Ãm·ÝVUU…˜YÈ{¡Oâñxooo<_°`.:]TUUF‹ŠŠœN',“\hÒÞB¨‹ xE‰óx¹ˆ™±ªe©s8«W¯v:ÃÃÃD[´hÑ‚  ¦'¥ìvUK&Àß)Š¢ a1" •#ñ~—Ëåv»I‰ßAB1“¦’‚ Z¨8¸±\ ’‚èdX<Á øDÑ‚±HBžˆ-*FÂaŠ{«h‚wx©a!moo?tèÓé¤5þ|L|‘¿0hÒuêTee%9¥ä #âCQ\\\\\œH$Ž?žJ¥^xá…êêjá¯"k{:@L(Ÿ›B£Ñˆ4‚F£Á‰ªª"™ÍfÊd2­­­sæÌq»Ý¥¥¥f³yllLUÕöööíÛ·ãXV“É´fÍšÕ«W———ÛívL1ð¹€´ž;wîÉ'Ÿliiyä‘Gêêê0× Lë,¶³gÏJ£FöÜÜܼjÕ*X~ØÜÜ|îܹӧOƒÎ 0buuõý÷ß¿víZ SÄ›4 š[uu5äÕ6mÚäp8àmP(TWWÇùðÕ9BD#>kÖ¬¦¦¦šš@&“)···>|xîܹ”$ò*PzPÞFýy€Éd******Âj -à@ õJØ]SXXXRR‚ÔÑh4 Bih5g€ÒoÇÇDzRx5­¥ÜÕâ6sæÌ;î¸ÃårÁaÆ`–Iﺧ!—ä¡0 ˜¼[øõF£±¤¤° ñ›ðˉ|‘µä”™Ï¹jöAkk¸¦  Àëõf49vbx â'°ž€l’Žòx<555gÏž5›ÍÐ$!<ÕŸ„¥HŠêIñq @"/0T)¹¸§ñÒp ·£Ñ(]@6ŸN§#‘Èðð0à éX¨Ç8“P4ž `p þnmm-++ …BeeeÍñP𯱆¤ÓiZ”••µ¶¶ÖÕÕáP¡¼¼‰8C'{ …ÒCa$ø¥nÄoéxS€²"w˜s èJJ³Fy xF“bLk ñv³Z­˜_@£„Édoô9°-œÃQÇò5ðº*x$}e2™fΜùàƒΟ?_aq—ün´@‡†3h:_dê½»ÓZ[êù`0866fµZ±õâ‚ô7¨äá­|¹r¹b°ÕOúÓ¡¡!þ„nmܸÿ}å•WNž<™S3»±‰=ùm'¿ó+ÿΔ_þò—WlËõ*ƒƒƒýýý×ü¬kè1«ÕzµÔ°+>åŠ#ûöëµ½4¹­¢¼ð ”†æŠ·½6ã¼u°­4¹nôœ?>¤miiyï{ßû•¯|åСC_øÂþöoÿvÛ¶mÛ¶mƒ(ÆY¡cCNZ‘,•‘ oqÔ»öœûÉ«á^.‡´¤Ý’þ&ÄäÂñ&¶Y^¯×ëõªª âLee%‰UCnº³ä\ ‰ñ{ÞóžÖÖVATU ‡Ã€“cÎ…¹aKg·Û/\¸PPP²v«MŠ ‡êäƒ!_;QK$ø­ ”çpH¨¥Ø€øˆ¤cŠ¢P˜~ÞÕÕÕÕÕåóùJJJ <є°eÄF*¼z×TÕr ;8wîrºƒzƒø,Ä€(š zž „[‘*bIΞ= ¥g<H †a‹…¢6†‡‡OŸ>Mzáúrúôi«Õ ò b÷Nž666–——×ÖÖ[³ýãõzŸ}öÙÞÞ^=B9ï}ï{›šš0wè)ÔÆ-[¶,Z´Ú[v»= ’4>§VQ¡¡´´Ôáp€ˆGÈ…Ýn/cÖ¬YóçÏŸ>}:‹´Û‰ï†A‘ šGÁ`‘˜„¶8ÎÚÚÚS§N,ƒÉk2™ÊËËï»ï¾ 6@6T2û’FdœÄØ¡]Euà“o¬jY±¼j O$×Fh@ªéˆÅÀ \„þÃ'ç8‰7 æýJ¼ξŒÅb~¿_0YbÅ ÉB—އB¡Œ–.@Ñ›„†¸a¹W”¿;JJJàÀSX+PˉÀòËù–Q¥¬¬¬¡¡›O"³ˆlŽ0ð;â[ñŸë¹`Ü–£ž‘öÿϽ(Ÿt+â—Á´@¨áñãd´x#p¹1"éÌš5+¦Óép8Œ5„Î9Ìf3x=RП}#„’¸™cccÒa¤c •I‘a(ÙÁéŠßL&ý~?Þ#ýýýáp«4õ3pjpéC4/&Ú¢d2·Û 6ýèè(^v}}}  ùýþ®®.`Ð===o¼ñFuu5Ú‹iîõz f¥ã¬*øæ#‹Är ä6L”(  nÛÃÏÉøéæø/iÒƒiÄÁDÃ|±Z­`¶Ò O ·Up6Þ}ÈÞ€yÚ©ªé-bzúý~œ ‡m6›Ûí®««CŽZÚÆHè0Q2…FìÊdK£ò‰£/*Së§Ö¼eÄ,yxëÖ-êµÆû\óõ¥¯¯ï©§žÚµk—Ë#„hooâ‰'î¿ÿ~!ÄþçÒ.D1}úô;ï¼sxxø›ßü¦Á`øó?ÿóÚÚÚ5kÖðŸïÙ³ç•W^ …Bßüæ7õÏ5›ÍŸúÔ§^yåÒn”n+„°ÛíŸúÔ§œN§tg*ÿöoÿ6:::Qå¿ÿýïêSŸšèz}{r÷îÝ?ÿùϱÖè»HQ”‡z¨¡¡a*·jkkÛ¶m›âç?ÿùÂ… [[[…………ûØÇ ÝÐÓÓó½ï}húg !–,Yrûí·ç¼ù/~ñ‹þþþ‰zì;ßùÎ'?ùÉœ0ÖÕvÔ7¿ù͉žòÍo~³¼¼ü£ýè$#;É'¿óªU« q5>>þío[0µ©—ª««?ô¡á·O=õtasÚªÑhüÄ'>­ùo¼ñ“Ÿü„ØËúÛÞÿýÍÍÍBˆîîî_ýêW“Tu¢aºŽ³ûí”S§Nýþ÷¿Ÿ¤þ›7o¾"ÇP_~ò“Ÿø|¾·3g¯X&éÀeË–½òÊ+»víúÀ>°bŊÇ;Λӿ7¬P`…D@¹ªó´© DγÁœ×HO'?[L QØwú|> ÍÍÍP †Ã ?lÂjµ’|‰³gÏž?ì'ƒ¦~ùòåS§Níß¿¿ººš4†à–ðÍÙ áÑ¥P(d³Ù(e×®÷Ò¥K@€¶³¼¤ÓéÁÁÁ—_~ùøñãð´æ­.¸Í–Ô‰à-‹Åb±XÚÛÛAº™6mZ4ÅÁ/öÄì† Öá..,úe2™¡¡¡Ó§O{<£Ñ‡ûûûÁ!¢”gÿO$`[3´ òÇâñøÅ‹ÇÆÆjjjL&ÓÀÀEhœJ¥RP w»Ýòù|¤?%õ•Á`ðù|gÏž­¬¬Än{ppÒEàš¡&±XìäÉ“L¥³ÙC¡y¥…Úbࢠ0¢…‹,Ðë8`çr¹Ö¯__[[‹àVüØhYY¥!£éÀWlC¶5!2Å@´,– ð‚a@Üò“Éd €f9u(dIhl,Þç˜wt‘Ñ`0€èv»N'ýª   ¸¸8­e}¥+ŠðÊY`ZJ.©‚‚xi¢Ñ@H4+ÊKù@„NxK‚ºøçè"0ÐŽ?Ï0iEÁRÎ !HÑH æ2qa†††"‘HÿÐÐf(½¹†áÑBKQŠœ­ííí€Å»ºº …¾Âë#'‘¿ˆU-±IwµµµM›6 ˜ˆÐ"”‰õCÜ%Zÿ¥8> VøchhÈçó †Ã‡'“IºQ}<Ýnðù| ‹a¾àåKÀ´Ëå~Ò±Ì@µ?räÈ™3g¼exxøÕW_å xPgF“3ƒ-ñÝFÞ?¼dXÚAÁB …–ÈÂ'-C.^ €¥8ê„UŽB­q íKdϘ…pìVx`©ªÅÃÒMÓçØB`ŠD"JL\\\\XXˆˆx=u‘Ï¡%#&^|Î)Ï'&­WÆ¡ øt ´‰·W&Ú¯þ?¾öÛ¼{¾Ü rÍ9×7¢'#Dÿ•Óé<|øðâÅ‹=4V·n݉D09qÀŽ+×­[i^úúúz{{“Éä‘#Gô7WåCúPww·¢¥¥¥¦¦F[£Ñø—ù—“Ì3gÎôööNTù7ß|óÃþð$ëØ“=== MÔE+W®œ"¼…@4á׿þuwwwuuµâ¼ …Μ9#„ؼy³ªªúgNo?¾­­m¢;pàÀ#<¢‡·®¡£&1ª#GŽ}øÃžä”l¢'ªªzäÈ‘}ûöMtg‡Ãx !NBˆÅ‹CYSê¥ÎÎN‚·.\¸Ï3§­ !>ðÀûûû{zz&èE‹Þ‚¼ñ$s˜n…[”ÑÑÑÉë_UUu ðÖçìG>òÒU¹†2•¼ýöÛÛÚÚÖ¯_ÿ¾÷½o÷îÝ7šAýîéá-ºf@ЦòDi"ëE»I®á‚íqR„£‡CQ!DUUÕܹs=¾0töìÙ×^{-Ûívä#Åë@ pòäÉ¡¡!HŧR©ÑÑQèaõ÷÷CBˆ„·€ @–{hhÛS‡Ã÷ŒÔÁH,Õs¹\•••>ŸîV&;yŸÍfknnF¤ |0_°×t»Ý AŒùË, "ì(„AQH®Ìœ9SJQPP€+©W3™ Še˜>±I+h Ï竬¬ljj‚Dzuu5öÜÄÚ ­-w !E|\à÷ûwìØQ__?cÆŒ@ P^^N™ ­€¿ €’ߑπÊLŸ>ýƒü ¤š„ða¬VëªU«.\ÄÇ`0øý~¨¼cà$¢ÅbY¿~ýÆ, EÿîîîÁÁA¿ßOÜC…Éè,Y²dëÖ­ ø zixx¸¯¯oÍš5ÍÍÍðÉ©ƒkh‹ÒÒÒgŸ}vÖ¬YóæÍ+//Çx-ˆÂd(ª§w%%%sçÎmllû€Îº¹]XXXVV¶yófȴᆅ…… ÂPÜ!¸ÄˆÐ F³³LÕ„Š 1·Û "IAAÁìÙ³ï¾ûîÖÖV"›€EHu£I¹kà Réâó‚ËàU’aPÜ+ñ§Z[[1ë¹KLD$`¬zx ­&•7b!PC«ÕºnÝ:dª!¶œOJ¤ÖRýãJº††7ŒÇã”vÓu¦Rý¹ T GKKËŒ3€Îø|¾Ë—/;vììÙ³ˆU$vè*M×<£%¹#Óân'GÄ cϹ´”X´Ä‘ææ 1MÈ{ÇW‡$‘‚ì´›©T*ìß¿ÿâÅ‹sçÎݰa C•‰‘ø=] _ʰÄSÃbÅÛë²X,Ó§Oomm!4­¥åaÝDK!ªVxüM‡d„QE©€'  á`͈l> ~­w4#‘BÞˆ+„H1PŒAÞ¼té’Ï烲v”iŽN8ˆn™ÖÒ€âq¡P„ÖóçÏ{½^EQ0)„&€%²¹l‚Ѩ‰½ SDˆ(’Õò¨4LPs–1ÝŸV*\ˆí‹ÙíóùNœ8’)–}³Ù A®Ê“@ré06¼³pCdç¤ ¿ßJâ> &“I§ÓÙØØXRR‚ñ`*´Gˆ Ί@%ÆN§ë°¢‰LIk úõ¤HRN©Ãb‚o£é‘bæ)YÄ넱2©{éðLe4yi÷]3éCš°(ú ¦ ÷/·(þÒ”öf´‡á²÷ô­¢ÅxÒ«¾€õñŠÄ~» ‡Ã£Êr’¢N@êÄç·.¼õ„›]‹›P®90çF$liiùÁ~ðÛßþ–¨Ïwÿý÷oÛ¶í¹çž›z3yä‘ÁÁÁï~÷»O?ýôD×<úè£ßüæ7?øÁ~ñ‹_¼†žüîw¿{ß}÷I$áÝÛ‚‰ÊG>ò‘ÞÞÞ'Ÿ|òªº(gY¾|9õØç?ÿùù—ùïÿý¿ík_#=ì9sæ|ç;ß™;wîüã)BfT¾öµ¯}øÃ––°ëž"PñôÓOs1µq¹âEùÆ7¾qEsB˜L¦§Ÿ~ÚjµþÃ?üÃC=4ùC¿úÕ¯îÝ»·®®î?þã?&¿òá‡züñǯ8ÐsçÎýþ÷¿?•ª¾Í®¾AeãÆ.—ëÙgŸbý§X¾÷½ï½ï}ﻆ9{ÅrUX\\¼ÿþ%K–üô§?ý«¿ú«w¦Kß±29¶5ùWúû¼ýÂwÏ•F°8òÍ ›ÚÐÐ Bh›x›ÍöÐC­[·ŽöRŠ¢8Ÿ{öìÙµk×Ýwß=wî\¨ƒg2™žž(XÛívÇC.œAÓpU¥··÷‡?üayyùÖ­[+++±gåZ!äWÄb1“Éöb{{;ê¢E‡cåÊ•?üp}}=í\iOŒ#z…¥ÌS˜”QHÆÇÇm6[OOφ ªªªMˆ}bíì &#F ù´-m9vüÅÅÅ8·°Ùlègò…ø èñ#’˜Éd2‹¥¹¹ÙãñÀ™¯¨¨Àæ."œEQÂá0t‚d­?öýªìY[[ûðÃÏ™3ã ÏårUWWOŸ>RAdƈÐ1dË¡’ÀþR/Áw"£"ʉÁ`¨««»ãŽ;***€j4É0<Ž L?®DkÄ܉Åb\{˜Ð"ºîÍ2 æ‘`A À K’¥²Tñ¼íÀ"1_ˆŽÄ©(f³™=7nܸqc( 6›mÞ¼yUUUTÂ;Pm8ÿôPƒ&ă~±‚ª-²Ñ–ºº:à­À³¨zBƒ À°º|܉‘Ak1ŒÊËËSóuq¬••• ÂÆßâ¿Äû žán\+¸£œH$|>1³âñ8Bíh¡VÀ5…~œ`’…˜ccc===gΜ9|øp?¸¥ÀljÂL¡ñ¼ˆ¾G¡^D«AUó‘Nõw¤±!:ªvt2o4žªÙlÆêŠ%?'% 9ápøÂ… §N ‡Ã³gÏ.))Q˜â5n¬´žÀ\±Œ`ÕÖr ,ŠÞJð–›››×¯_ßÔÔûA¨ÊT±ÑvB¯HP²D8Q/v…Å«ø§‘HdddDx ¨nK²Œh ‰$Ÿ(ˆ/ÃtمƘC=‘‘“ÄÅÑ `Á)y.LkiAAÏçs8À%‹ŠŠ(è›Þ€‚š 2L&“ííímmmH9ŠÏù«ã§ôÂÊC¥ÀÜÁiE4ÜÞ½{ÏŸ?¿`Á‚-[¶8N–"îR8ºAXASâ#D#Kku*•yùå—÷íÛWTT´|ùr—˶æìÙ³ï¼óNf¥œ0ˆþΰ,º|%Qö@"úú}a œE… hªò¨C¡;&¤E¶ L¹  Àï÷ë‘#šP´^¾|aä…W€ :Ü'ÍòóLò+©è0ŽÁéû“ö Š&ß–Ñòã,ÂHízí»Æ)”›o¥R©ø‡øÞ÷¾—óÛŸþô§ŸûÜçNœ81mÚ´›UÛU®9çÝuL2È â,H bòœq·ZéèèX³fÍ«¯¾:•„wSïÉ[¤<ñÄ¥¥¥_üâŸzê©Ï}îsûØÇ$És(ÑPº©”Ë—/·¶¶‚T|Å{;E[Û+>媞ÁN¼®®êÎï|ñù|SŸY· M"ªåºwuGGÇÚµk_yå•ë{Û«íÀ¢¢¢Ÿüä'ÿøÇÿøà­[­ð-#}"Ëe´ÄRØ‘«ZV&EËv¯} è°ÙlP]‰D"³fÍ:wî\cccmm-À¯T*xÛGah3—Ö’‚ §ÓYZZêñx‹ï¹‰â„P“ÉTYYYZZÚÝÝ]VV†GÇb±âââ¥K—Þ{ï½pï)PˆšÃOG!VBÊ´÷wÀç’ûWœ/ä]S,0&êU@?ØÝÒ=)jŒ¤© š¡Rˆ"9ኢPä Ýn는’é_:ý.((°Ûí&“ Áh„1 Ó§O_·nÝœ9sŠ'‚Ô€ãnêhù|>Ð[(U%•T*±þß¹.;‡'ûinn¾÷Þ{W¬Xç’óÏ Bì $|“"Ô vÖßߟJ¥™‰DD®=) .âÐÐDès"ËM-¸­­­¹¹™ô•‰côpg›Í†º‘kA$><ÈápN›6 ˜¯¬h±i™ì¼Šèø*\9[¯(–´øXTUUÍš5‹„Àiñ""¨Äáx°-ô ºÂf³mÚ´©¼¼œB“P—ËKãÜC {DŸPŽQ Œ?‹Á3'L ðððpII‰ÇãA_a GÉdÀꢟ€¿ƒµ"ºÝn´+‰œ={vÏž=o½õlá„ÈÁšJ¥ˆ5–ÖR€…ÿFŸÏ ËËË…–d`hÄq«ª(Aï.¸ýÑhÁÎà—yÁ•iVПn|>—H"ÀÍ ék6Ò`öööâââööv·ÛMô(Â#ÐK@±€cj€üÎÍÀf³9N$ ”d˜g6‹!à­&%š)T¸<Ós ¦Ž…‰e±Â}å °>&Z cÀŠE9Ø9šƒ÷T8ÁmÖ¬YK—.EòG¬B˜ÌŠg¡b€Ï°\§R©}ûöíÞ½{Ù²eëÖ­ƒZM7K¡ßdHض¡<×ë9sæ{ßû^°¡0Rd%™ ™ÏЇ  /^ ŠqF“^™L¦¨¨á‡ôb¢ˆiš88˜Ú–d°Å8VTT¸\.›Íæ÷ûKJJjkk- ôì„ ECŽŽóÓÖªÇhø…CWô+ŽJ蘤=7>> ‰¾D4[5;VÑe¯æ“túèË/¿|³jx³ÊOúSý‡SÉywÅ^Ñ ')û÷ïWåŠ9ãnÁÒÚÚúË_þr* ï¨\ó¼óåóŸÿü=÷Üó×ý×_üâ¿ô¥/M›6­µµÓG}ôôéÓ‹-zñůêž---/¼ðÂTzìít”Édúö·¿½bÅŠ«2ª)>ñÌ™3cccï s}ë­·Òéô íêZ®jrM¥´¶¶þçþçõ½í5tàÆ/\¸pû+_t…Ü-ýi'÷ɱ?é/üLÚ†hùÎÆÇÇÇÆÆ|>çpÁ# ‡Ã}}}---ˆP«®®v:M”ŠŽß‰êBÂäpKHPCe ;´ñEA¨—Ûí~ï{ß;kÖ¬p8<::Z^^>wî\x¶Ò/w¨Ð ¢ÿðBÁ€ ‰¬Obr­#߃3•x¯Bf‹$i%Þ U•~"²ö´¼õˆí,:nRK&„À™ccãÚµk«ªª’ɤ×ë5™L ˜è/î¯j ,ð…Èr„Ú£?·Z­p Ås8.—Ëét®^½ÚívCyÚ´i+V¬hlläÁG˜D4…ú²ÂXuª&:322räÈ‘;w†B¡h4:<<ìp8àü æ, -ÔŽ[5Ülrx£P¹Uˆ‰}`»ýâGë0u:………ÅÅÅ0$EQœN'p%ú„ø´ n„z(a†WQQa±X ´O¿…úUCCúÖl6ƒåg·Ûó6¹ 0²7‚DF„šÏi2™–/_¾bÅ ¸¨<ðe„2qÙu¢:✆S~EALY:Fø0…Fú|¾¡¡¡éÓ§ƒlgˆ ¡{`x¡‹‡y½^ä@€[k2™À«¯¾úÊ+¯P10¤„ÃÃÃòp+ðü~?ÂÐâñ8îFÏŸ?‰DU¡žôûýo½õÖØØØþýû‡††ŠŠŠT–úz;?~!x Ú ˆ £LÜ:Œ¦v_____ŸÑh}úúõë5Œhµ-ULL §E&£©8‚„lÖüùó±i…×ÁîˆJ7VÑÒ}Ðì‡Ã^¯·»»»¡¡aÙ²e@‰~Ez…„´“ŽHXååå&“iÆŒUUU@‚±¥eVÂÊ ƒ Øý@$DÔ–‚š‰B¥_^p猖j€Þ;šì,QÀ¤°Y:œG’N¸‰‹J€Q&“AŽTdNlllt:h)Hµ€½ÊÊÊèìgppðâÅ‹áp¸¸¸¸¡¡¡®®NÕúÜ>Çå镤2}þšNggÑ¡«ÔÏœ&¼¥jÒõ###.q“‘‘‘þþþyóæ™Qh­£‘å’ÀÑo¥å—¯–½/¤vf¦²b`ª*£xKáä‹Mh  ªåU Ã†Wn¼õüóÏŸóEQ¾ûÝïÞ”v½ýrîܹkÎy7000ù¯9i¶ov÷\c™JÂ;*™Læí¤|çËܹs_{íµ‹/>û쳯¾újoo/ÞÖ---_ùÊW/^|ƒzì—¿üåÔSæ,v»ýj¥£¦øDǃ|É·~q»ÝS‰!½âì¾Yåª&×ͺí™3gÞ]“úO­ÐMÿ•ä÷öõõ‘Âá/ ÓŽu¹\8観wƒÁÈéÔ©SÓ¦Móûý‡nhh¨®®¦;+LPƒ¼;J_V UM¤ƒXKuÁI(--u»Ý3gÎ\´hP3œüí%¯@°3RòŽ¢à8lГ¡,N‚å°W³ãòTM¦‡($¸ŒHVÈKÁ¹:‡·;§¥ßÂ#B=‘þ}€‚Á“")LJd{8ð9çÌ™SRRBG÷ø!ŽâIã n"qà‚Âýƒ«@n’åP¥¨¨¨¼¼œs…À0òx<ååå·Ýv‚›\R C¢'`ì“¡nèÒh4zñâÅöööÞÞÞŽŽŽË—/ŒŒÀýFÒzøØð¹oÀ{üäa¤Ä•ä<@Ö‚>Üq%¿BÕtë‹\³X,ôã±x&“$„€Mâ·V«îºÊ’^‘ÇÅѱŒ¦´…>‡åÀz¡7xKa‘,«ß¸qcII RCŒ!8€k ‘—¶DžsAAA$!™!¾t¨ªZZZºvíZ›Í©4$•J9sæìÙ³€¶ív;ð#ˆÚƒÝBz à@«ÂÂBŸÏwþüyŸÏwüøqH\ÇãñK—.¥R)ÇãóùFGGM&`ä D“f2™ÞÞÞþþ~£ÑøôÓO,s¹\P¶.c¦8»‹/þêW¿B+({£ÙlFzJ Ò‘HÄï÷îÙ³‡Ïß S° Š¢\ºtéòåË@a0Ëxœ,¥‚íìì„(!VWb8ÒŒƒf9èŽÍf34‚Æz’L&kjj°ª8Î’’˜™Ïç ‡ÃsæÌ©­­%ð]h¸’Á`€j¯"‘ÈþýûÃáð{ÞóžÚÚZÀR8. Û7oºëܹsgÏž•˜ƒ´ÈOŸ>ðiu¡-¤¾Üþ«hÑß&“ šîHý‰D‹JóvEÌ\BiìA _zF@(P6ŽdÑQ ‰*®©‡3£Ñèr¹°^!ÌMèüÜH¢!쑘z0]˜·ð……VZaˆÈI‹<º±«Ô.‘`ªj´b:š¢:!‰ìÛ·ïå—_†Áí·ß¾xñbZEÁŒÀ›±~Á`ðµ×^Û·o_,s»Ý«W¯¾ûî»Á“âK7‹l6ayJ|j~\Iü5¡Å„N’6¿ª§ÇT"} <.—KÉæ”qΗTO¾m gä¼3~ŽE{~HV!&f½Ð.ˆ!X‚–жAÂUÉZè- „À‹, êõ¯o¹ ðÖþð‡O}êS̹—ýÞ÷¾:«Åbù³?û³o}ë[Wo‘bÜ-RÔ«IsvüøñÇ{Œ „UUU+V¬8pàÀ„[¶lA¦B}ùä'?Éý¤–••}õ«_<]ÎÒÞÞþOÿôOBˆ/ùËz)4EQ>ö±Æ—^zippðãÿ¸þƒáoþæofÏž-}¾mÛ¶gžyÆï÷çü•ÙlþÆ7¾±mÛ6¯×ûÜsÏuuué¯q8?þø$)W{ì±¾¾¾;vÀ¢¤b±Xüq‰ ?÷¹Ïñ+õdssóU…v¢üú׿~þùç½^oÎÆ*Šò×ý×óçÏŸÊ­Ž;ö¯ÿú¯Ò‡………=öؾð…/|á mmmÿøÿxöìÙÑÑÑ'Ÿ|òÉ'Ÿ”.^»v-‰¦KåñÇ¿xñâÐÐPÎzƯ}ík0ƒçž{î?øE†KغúøÇ?ÇŸ|òÉœ"âÿüÏÿ¬ÿüïÿþï9•@šU«V}øÃF‚¿ÿû¿Ï9Ýn¿ýö÷¿ÿýBˆT*õéO:•Jýä'?Ù½{·þÊÚÚÚ/ùËøû‰'žhkkëë뛨[¾úÕ¯‚Ô½}ûö_ÿú×ccc9¯B|ìc[ºt©¢­­í+_ùŠâ‹_übÎô||˜¦2»§¸î]ÕŠ4IyóÍ7ðƒ`(s^pß}÷Ýu×]W{Ûú§êïïß±c2”K%眽b9vìØäëêwÞùgög7®¯n©¢¾ ï *´Q“vu´Ÿš·–L&ÏŸ?ßÕÕ…ìãL¾"aƒ¡¨¨hxxK:LbtttxxxddäÂ… ápø×¿þõâÅ‹Óé4¬ññq¯×‹ˆ<Ò®B«yÄ1šùòË/>|°2š_ ¥  É+4&' Q#:êøñã`ê¢'4ÈÕb±”––&“ÉÞÞ^EQ SÅA|ê ÉdBÚ¸ªªª²²²¢¢"JrGKÍ©S§pÂãñ,\¸°ºº:•J Á̓Áàþð‡ÂÂÂûî»ÏívÃðéâ¹$ªML¯×{ðàÁyóæÕÔÔ ƒá0ΰ(¹Ýn,z£££ÑhtùòåàÔ… pÆ Wc®½½}ÆŒ ÒOˆ:¤ª*¦ˆc@¥·L&“êéé)++C(š¦jùÄ.¡Ñ´„Yxä~ÇãCCC4ùúLËMF,h=D 6æ Íf£•–¦³¢­ ¦ÄGØÍ/:3À’.´€J=Ê ÕÐ Ò ,,,¬ªªæ(4X‡ï9ùÑ‚Cb†å(4hb|B€ä£¡]ø/®¤·ázôÐq`ÐÕÕuéÒ%Ä{á0ƒÞŒwÄ»Ãï÷Ÿ9sîžßï¿téR0„að€}Ár(Z>Z¥ŽâH ß«ðƒébzwK¯E‹­H DøÎw¾sÍš5ˆL¤¼äN¥Æ0X0n·{zz:‹-..>ûì³üàï¹ç$8晚»ˆ¦á’ýU~kZú/t ¹o¶·Tii)”à¹k$1GÞ?“ýjll,•Jµ´´’SJÁI†,»GF¨ óT–ZÆ’•1M“1,¦Evóx<€öÌl %h)øÀýVJñÜ^: ¤/IÒAiiiMM Ò™³­™ã=Á´„láÃßsÏ=µµµØ*p›Îæ¤É“'óJd3@ †A|аh:ôµ¯}mttTú0¨RDÛá'H×È !ƤЇq8ããã“““ ¾%“I¼‰cN§3‘HÀp»Ý¸ŒåDwU–îÞ%‘H€.äõz‰C™”­–J¥ÆÇÇ–L& [*+䀃+n¸]ÃÃó³³û÷ïC­¥ÁÁÁÙÙYBNÊ PÊd2G޹téXáp8ÂÃjÉVë‡<Þ ĉPôÀúúz² ú688ˆþ•ô‰‰‰‰‰ ¸”³³³¡P¨¿¿0 {uu54¹µcôɲ²²p8üÒK/†qï½÷®]»”½d2 r¨Ãán #ùZ€IDAT¢¡ÁÖÉd2(C2™œ=þü+¯¼âr¹xàÎÎN4±išýýýÏ<óŒßïߺuksssSSS4}ì±Çßö¶·|7-=æ’’à€hžžžo}ë[†a<ôÐC.—+Ø\4=sæŒRŠ’Xõõõ%–AjýüùóeeeÛ¶mCcÏÔH.à*¥ü~sssss3Öhkz¶¨$‚¬¯¯÷ù|€90‘bƒT$ÒÏ)¨«²E»1¯mÚB¨” ,E"‘îînTÊ’£ó0‡µö\‚„q9}0M³¢¢”R œT*ÕÐÐ@)ÜìC°’Yr,^@[Ðaø.¤’oeXôaT’šÊ³•†fäÒéîÇy‰6åÊŠ’7Ñ•M"^XXAIí¨eXû〠cÂdž_LJ2rœ8:!šC1 ¥f¬4òur¾£|/Ù ™lé+< €>)L˜ù£Ñ( WI¿@·ƒ˜1"â£9è°Tö•RÐ_Çs©id‹9"P”ãH·iqý¸¨a{ÃË” ²ÛPŒ* ³Êþ ‘PP¶±Ä"Ë‘Mõr»Ý>ŸAµ+ì×f¯¼5;;û§ú§ÿöoÿö?ÿçÿ|ä‘Gr^3:::::êt:¿ÿýïƒïSYYùôÓO¿ç=ïYáS–áò¼žvmiÎ6nÜøÛ¿ýÛ_ûÚ×>ùÉOÂõ]¹}âŸøüç?ÿž÷¼çÃþðu|‘ÖÖÖ?ù“?ùâ¿ø'ò'Ë'îÛ·/ åŒ6Íg>øà… ººº–ùÕ;ÞñŽ?ýÓ?}à®-sâG?úѯ|å+{÷î]yÁ¼^ï'>ñ‰OúÓùÈG|ðÁëUoyË[NŸ>=::úªª(§mÚ´iù›¬Zµêÿø¿ô¥/ýÙŸýÙ«Íœø{¿÷{ßúÖ·V¯^}Õr>ðÀ.\¸|ùr¾ìËÛ'?ùÉG}ô]ïz×oþæo®üWõWõ…/|ámo{ÛýÑ廿w÷w{챿ú«¿Z^P¿¤¤ä“Ÿüä?ýÓ?½÷½ï½jæÄßùßùö·¿ÝÜÜ|ÕjyÓ›ÞtéÒ¥óçÏ_õÊööö?ú£?Za3½öÑ}Ý/îØ±ãƒüàã?þÚ»´´~ô£_þò—!'½î¹iÓ¦|ä#_ÿú×?õ©Oå$ÊÝ躺¥ÌîBÜúfZt}Hüb Çé‰ñ_l|y’ÌCTÓ4C¡Poo/4S~ó7sݺuÈåÇ"ž=bGN@€Åðð°iš•••»wïîéé9vìXgggmm-¢Hœ(‰R5ÖÈ#ËÔ]”„WJ1=9Y ü Ϻ@Á¨F¹#—§â ) ¶Ø–Ê vF:f¼›<É‚€í;W;#lÄ´$À4oMîñ¦ˆn#Ë›{j`38ˆ$…L&ƒÌeTŽ<â#(°ßïÇ;Þ±mÛ6’pg§Ó™L&gff&&&æææü~,#Š—±’—-žrêÔ©îîîúúú––¿ßßÛÛûãÿxllŒm$¾GGG»»»ËËË‘Ž AmЙî•h†ã>}úäÉ“UUUŒóBM Cû†ÃáÞÞÞááá±±1Èrã&¡P”4ðz€Ë$‰¡¡¡³gÏNMM!q$õe’Éd,‹Åb(mWWW*•zê©§=¡RÓ&&²d%‰ ,¡ƒ9r>@^ ———#ü ô e|••••••ÕÕÕÏÌÌ9r„D]CäIؼyóÛßþv"¿Ã«%“É—^zéK_úÒš5kÞþö·766¢³áÀa@…˜EÔ0Œ#GŽ|ûÛß~÷»ß½nÝ:â¡Ê D´#[ ŸÏ7<< ‘ò·¼å-±X .œi KƒÔ9(d±cãA€7lØ066æv»ßþö·WUU‘t87nܼysEEEmm-FRjݺuH +‡'NîãdŽbYYYCC :‡Es³òA‡9tèÐÅ‹[ZZZ[[ƒÁ`MM ÓÑ.ìxDŠ ‘3e@aà“G£Q ã’ÿ‚ZûÉO~röìÙ†††;ï¼³£££¢¢blllrr’o${鱫lô“ùôô4ãå¯äßh X98à Ú'¤:rÀ¨4MuE1Ý[:ûöíCãj’LÒÒ`G¶’ ÃÊ@*{„Ö7IÛQJ¤ ‚ª¬¢ŒÏ˹°Ê¥S.4²ä¦ˆVæçdo±íø_®edî¨eÕíèî»ï.++Õ€€|eY0*«««·nÝŠØ7¿ß¿yóæÊÊJ4Ÿötíµ AiФäÄ™ëVÂF|ùòe€,²O‚K%A/ûéßøÆþýûA“gœf<Ÿ™™A|:ü+¯¼B„EzbÔÍìjxx8‹Ù¸†[)+Ø L«¹¹¹‰‰ dQÔnë÷û<$._¾|úôé’’’­[·nÛ¶­¼¼‚¶K«aÍš5wÝuWII‰d‰²’Œ ™Úÿöæ3³UíQ™„±ð!Ò›‚~®n¤ÝXxkïÞ½òÞö¶·}ãßXBOý½ßû=þwtt4§îR>{à­•­üÛ¿ý›ý‡·B𳂬`¿„V˜‘Vhápø–MRy]Œd–œ~­lØKTWWÃG™™™™™ÃP GGGOx½^x_CCCO?ýôÅ‹!›ráÂ…ÿøÇØ’BU„ÃÒœÂ^ŸÐ œá……b̓^É‘#GNž<™N§'&&êêê¶oßÞØØèõz–ˆÈA¤•ìîîÞ±c¶Á—(8èKn·8`QQщ'~ò“ŸlÞ¼yÓ¦Mè'TG,LYYY4ýö·¿=00°gÏž·¾õ­‹ H|-t€ hë£G^¸pÁçó½ùÍoÞºu+jÏét"½ÝøøøáÇÇ®]»ÚÛÛQ6Ò·]XX8yò$è<ÒïEß@Ò´{î¹Ça¥C;€×ŠÈÄ’’{<]ÆÊ@"þû E<>øG=~ÀŠòòrpÁ”ÈÿE¦›²®‘pAW5fZ© p~oŠx"¾æ™™™sçÎõöö"Tt*`IxÑ<}~~õèÙét2ÀSY[[Û¥K—.ЧcP'“IäêYZZêééyæ™g6lص(vqXIô@"%Åw8KÏÏÏCÒÿM&“½½½ýýý€ YKèl5 ÄP…€ Luuµ:Uv4!~¼”Ê£cl¸×ë­©©Á‹°À@ü3™LWW×Ï~ö³îînB ž?>‰¼éMoÒˆ6\•2–ìÛóvF¤¹X¹5€À5à}äe,¹9ûØg­³1º7~+㬠KJÌaiçK"-º¥iI.A6³õÂåËR ^by¡4ϪFWê$ɰ,›)Ð%wKºŽ‚õ¸s&“‰F£N§svv–¨ †rËbàÌÍÍ!ßâ’•¶…ИR!<Õ@ ƒ£Šu «¡s¬;äúásp‘°²,,,D"TæÉ“'/]ºÄÆe *I‘à1¢Â$†zÃl\þ„å×ê5€WV–P¦MÌ8ª©©Y´ŒR 4%â¥,û**û|>(ÉQÌ>ÌîÄS·8,‘ÍënŒü¸±ð_µ¡¡ácû’—¹ûÑuëÖá¿}}}€BWþD;z}måA+Z€w!KWÁ V°›h…i…öž÷¼gffF~ò‹WWF.Ž×óé×ðìݱƒ…Ãá©©)²“ÀÓùÊW¾réÒ%ìàà 2¶ª‘HD)‹Åžx≖–p.å¡,¹\éK(KJ#•J!¯1|ÎP(Ç'''`B—Ëuž¥¥¥®®.ªá`÷Ó]ˆOUTT`K wìW3 uUè“§R©ÁÁÁX,ÖÝÝ é+)Š uBÀ¹pê«”***ŠÅb”9Ñ@ÂZ\\œ››Þ'3èÁ·…B@Fé)™L¢x¨"eùÌøøÏ{!‡¤”‚·€Æb±T*åv»”‡cdÔÜ$„q! ‚ú§££Ãï÷c']ZZ éÞÞÞÛo¿}ãÆ@aÀåñù|xe”ܺT*533óƒü  ½ç=ïY³f `*y¡lô‘²ðå—_þÎw¾sß}÷=òÈ#>Ÿˆç÷¾÷=Ó4ï¾ûî]»vÕÖÖNOOÖ|øá‡W¯^ÍÛ2YÁ’• Á4Mx5ˆ83MóâÅ‹ 5]¾|9 VWW# rqqqݺu¨Ë—/WVVîÚµ«®®˜Îü™¬ çít×?¾}ûö­[·âA†,©”‚,—ßïïïﯩ©]HÓÕÂsÐ' VQQÑÖÖV]] G£€õFYtbO¦\ …BCCCäô©lÈÂÂ"+ÝJ,¤,¤)¬DhŒ×ë…Êžd‹HÅ7íe1œ §Ói 0„µù3çã”-8_aZ ÇÐÞkddäòåËû÷ïïéé)++ƒ2†™Bed'ÍT# •ÑÇ…μiÓ&Ó4?>44©-$x¦Éþýû9ÒÚÚÚÐÐÐÞÞÙ,),(©=d¨Ù—§ÓÙÖÖÖÞÞ~ñâE¼ ù8óóóããã---€cx+¢‘kc-³raQ þCçL+rÖétnÚ´©¹¹Y¾;ª“ÃÙ³g{{{yÒ€»°°pìØ±5kÖà‡€˜ŒBYˆZC ÍÁy§ç» Eâ¹â¶ n%€<þœ²JìùT|#ÂkRJ %ÇàB%€ †Ž€ƒÌZ –‘ÛËoM+Õ&TÞ&''çææý~?¥3Ùj’¦{Ç_Jü@ÁB%[* uww#šøå—_öz½€M§¦¦^~ùå@ €Pw¥T<ÑØår™VPžf¦Ev&ò•J¥Âá0–?eÉWÉ&»¨‘·¨,!ÁV)燎ða¼ <ýœV‡•ZØT€)ɹ/2-.!I^ÚPE÷6  (ò~×ÔÔ –ížÉN LC„*K|[#‡•DUŽ\^,guÖÛ5lWnög†?n ¼500°{÷nÃ0ÞùÎwþîïþ.«{÷îÝ/½ôÒ2?ÔÔ»‘ˆíU=Éþ^ûö·¿ýío{ùk>ô¡}èCZá=sJM¯Ä~ë·~ë·~ë·nÄkvvv^õškë²WýÕÇ>ö±}ìc×\ò³gÏ~úÓŸ~µ¿º†¤o×åe¯£­ZµêÚ~øâ‹/þû¿ÿûëðFüà¯óÇüÇüǼü5ÕÕÕ+¼Û»ßýîw¿ûÝ+¼ø±Ç»îÕ²òfºŽ£ûÕÎH×åMWnçÎCÌëk¯VЖ¯®ÚÚÚúúú®{!o´e²óãüéؾÇb±¾¾>0¡pØÞÐÐð¿ñ£££Ø¥¥Óé^xáÀ^¯÷ž{îioo÷ù|‹‹‹û÷ïO&“ïxÇ;ÚÛÛA•2¬¬Õ #q+†SÙ™™™“'O>÷ÜswÜqÇ}÷ÝçñxFGG9ÒÞÞ^WWWSSC4 ¥|ík_Û´iÓ›Þô¦òòr `!Ï}$A¦3lIéÿÀ5¸ƒ° üÊ!²qG£ÑgŸ}6‘HÜsÏ=õõõ+¿6Óˆ2€W/ §ÁtK”RTÃCq^[[kF}}ým·ÝF×NYÇÅØûâ<™<Ü~^Œ9N$ø“~8£í)"æ"‘H|ùË_v¹\?ü0FØmó®Dè''''''·nÝÊ#i8زeËÆ!6„›ÀE=)©õ“'O.,,ttt¬]»¶´´ŽC¤å%·ŽÉ­hP@àöÛo‡:Rss3X3ðI„Œ0BZhÊ%‘Ä€x¥  ØýáxèСM›6mܸ±¶¶¶¥¥¥ªª zFáp˜Q“bàö([¹Ýn¯× ²žRŠ@$ÀVtdP–Ö5ŽßeP ýRɉtBàkÌ©çp8ü~EEÅää$ÆŽø…Œ±ù!<ÒW¤Ò N5FðeH›kn¤Ä›à¸Â¯Ã+3•[œCƒ¸–;K(óßIÏ-“¼Òþ: ×¥R)Ƚa8ÐÄ{öì¹sç¼^ommmccceeeUUUmm-DÉþHj{B™ÛÚÚÞüæ7WVVž={vnnõ è”[‡H!i‰±bÁS“¢K*›UDcšÒq™ËåÚºuë½÷Þ hžå,1>>~éÒ%NÊÌ­†aŒŒŒtwwƒAà8cPÚˆIM)ÙŽ+áªÐQ¥ÒwF"†|V@Ù!QðžRS333óóó³³³sssèxŠ\ß1ˆØ9MK׉µçñxæçç§§§ÓéôÐÐÐ… 4Y(ñ`qU’A²¸ÇÁF<‡¨ß‹/¾xöìÙ%‘Ë• !-–k(Ç,uʱ"\{ 8{ö,1Ä„ØcuÃì*'Iç3ÊUÎÌç±øà€¢äºÉ€s#(ªû“aŠOxUVV±y`¾åå嘓Q¥ÀÄ’'EÙР²3k8¾6äTƯ¸î HèÀ8AÏÄ ¥YíœâºÀy½^B‡†•–AÃUe¿å=%aðÆÙ „·B¡ÐáÇ•RoyË[d²—^z) 9LñóóóëÖ­ëëëûßÿû¯®úÌg>óÿð[¶lìééÙ¿ÿ®]»´k, ”úú׿þë¿þëàç¯$9cCCÃØØ˜öáóÏ?o?Ø7 cff¦¯¯¯µµuO{÷îÝý×ýÀð“ƒÞ{h~µ>ýéO__iy¥TWW×Úµk»ºº–‘–ÿØÇ>öÄO\¸páUÝù3ŸùÌg?ûÙ¡¡¡e®éèèøð‡?|mÒòJ©-[¶<ôÐCù\åp8\YY™ÉNß(ý©§žºŽÒòJ©üã_þò—Óz£íÂ… 7nìëë{µÒòJ©7¼á «W¯Î˦Ùg?ûÙüǾê•÷ßÿïüÎï¼ãïVTT|îsŸ{UÒòJ©¦¦¦~ô£ËHË¿üòË»víšžž^^Zæv»¿ò•¯\UZ^)µoß¾æææ¯~õ«W½òsŸûÜ'?ùÉÑÑÑ«^yþüùM›6­°™V>ºí³ŠZñŒôªìÉ'Ÿ|ä‘G®;hóæÍ?üðõU¬?pàÀž={"‘ÈU¥åwïÞ½qãÆO}êSË×ÕŸÿùŸ_[Õ›nÒ76o%.íÜO3ì–Š‹‹}>üÃd2yåÊ•™™Ä*:ŽÆÆÆÆÆF¸[ñxüÈ‘#ÉdÒãñ¼ï}ï{ÛÛÞVUU…¥¶¶¶£G®]»eØl0O“„W¸´jÕªÞÞÞ’’hèÌÍ͵µµíÝ»·¶¶÷Tw JÅÅÅÏ>ûì† ¶lÙÀ …;;;ö²Ú'÷ÜTk’q@¦iz<žÖÖÖt:][[ GÐ婼l¯\p÷‰FÒÍ YŽX h$ÁC '‰b£J'Â3|Ä[©l_ˆ@0D`)âƒT†@›idF#BAOÏU–W,ÕŽÜn7ie¦iVWW×××gDQ©wŽ4m ŠÅbx5DA–‚Az²ÇñãþÜnw0„ª±¥¥Oä!?ÅkXÆ•š …‡ Ç1(©I²&ggg:tôèQ<´µµµ¥¥åܹs‡cÇŽHö‡køk+M?€9âà;ÆÐï÷ÑcÛe²³@’õ@<u.ƒËèé!#°×ëœÉ“Âíq^r˜Vx $.BëD£Q¼8‹*ï ' CÐ3¤‰n€b›"èFÃYpˆÊJj&Idr^åÉß:¯¬¬L&“ƒƒƒhâÁÁÁ¾¾¾ . "ŠM€ˆTÞ‡1_vx #‹ù×Âá0ðJe±6`•••Á`pÕªUÉdrzzzrr²¯¯offfzzzff¸Ì’Hå nl(ºrå š>´¶¶nذñÝk‹F£~¿ÉÊ*ÀRDnmm­ªªêèè8}úô… ˜¾“p³F‘«A®Œ¥EMÀZó´3BÜápBr¹\^¯7•J{Æ·k×.`7(-ƒË ÖÓÓƒ€J­íÐè("‘`¢j\L” Uêñx‚Á`0ôx<„ÚAS; UÇ/^¼‹ÅíN¢|:2•JE£Q`:†NìïïÇãèïïA‰t3K̈’a¼?&pÓ4C¡Ðììl*•‚PŽCX¥rnçœÆ~ȃ³™N§C¡PÆÊnŒiŸ@- ƒe?'ö„£L8AÃ¥R©þþþ®®.‡ÃÑÜÜ\YYyáÂ…d2 wíÚ *’W€Ê‡Ÿ tŽB–Jä:©JâGLMKFYfòœ‰“šƒ«-O€Ï+_õ”äGüÍø}Ü ë&Fzja¤ÊН$dsdç<5³¹¥˜Žð CdvÆÔJ]09*%²†ßVVVbZæ•4^‰´¢f,Pû¡Âu·[kƒjjj"‘HEEÅg>óœ/£+ÿ‡ø‡†a|ö³Ÿå'%%%---?ùÉOž{î¹ûî»ïÑGµÃ[×fccc¶µ|ÐJUUN– V°‚ì¦[aFZ¹ýÂו&pë›iéžx½Þ`0jxx~ ÃŠRÖ¶oddäë_ÿú‘#Gn¿ýöûï¿? b^TTTSSõ¥5kÖ [œa©œªÀŽ›Nü7´··ïß¿xx¸ººzdddÏž=@!6¤çðô’R Èp[ ˆ§Ü+‘²¤å•”Tî/§§§Al!…í,ãIé¢D®!¦x˜Ì(x_pŒ,ƽ5*_F—¿ƒÝ?%‚_æçç"÷¸ðPÿØUC’?•JÕÖÖºÝnÔ$?¥ý‡ÃXh~)‹`X*ÝÊ 7Ã9<zôèÐÐP$´Ä9¿b†M4%‡:yIÔ d|¥âXN”œ`¨Ûínooommݶm[<Ÿ˜˜˜œœïêêÓ(]„MÓœššššš:uê”Ûí†Ê¾Rª³³8fÆÊÅfX91Ð ^¯÷öÛo÷ûýçäÉ“áp˜x=ÚŽÄÜantª1!G£QøÏÔï—ÇûeÐZSS³wïÞH$2::êr¹6lØÐÙÙiXÚasÑêyzzúÊ•+„~ä̃Î?<<Œ¼"###@$‰©©©P(455‰D¨1ÍD +àGˆ¥åÊ„ªSSS‡ÆäÃÇI|„u¢Ag+**š™™ÁØgî<¿ß¶còç<<@Û!#D ؼy³ÇãÀ0v0R•Ý8‰9lFªc$ùÙÏ~vèС={öìÙ³SÇ#%«$¢gŠ ò2Ìœ$”ßÛÛëóùî¼óζ¶¶H$ÒÓÓvÞš5kp g” °‘²Ð¼ƒj%x‡ÚC$ ™­’FáEeÉQá_† Ê1-0[íî°Ôñ ž`%¥‘ÕÂgGSÑ’pæaÎS¼;g3eá㜩8“ñg˜¶²èr² 俲Uvög‡È ²a5Sä'5-•4mF½vkÁ[J©Ý»w?~¼±±ñïþîï”R>øà2aq .ËOJJJ¶lÙ¢” ú¦×Å0¡sã‚ÔõwÝu×Í®°‚¬`+XÁVdòèïÖ4í|ž;Ê-­_¿>$“É¡¡!xeŒÁõ¡Pè™gž9zô¨Óé|àšššÀ² å¦3gÎlܸû{Â[*›'‚]]ii©ßïã߇ϟ??::ºaÆ 6ø|>¸dRxUîΣÑ(œ.:®EEEÔäA(]³K…`î•é¤ÓirXx"P„x$C‰],1ì€ñC»Eå%œyy&L'ÒpY¥F,vÞø~‚Rª´´´®®®²²’>mÆÊ'a)zø1cí‘GÐØØˆ´t+úR‚†høÔˆ©®®†x6Þˆà‹<âÆ»#^ÕãñTVVú|>¸X€T¸k‡ÚÚ±cÇÆÇÇ;::à".†Ðž¼3þ›J¥Ö¯_ÿþ÷¿ÿСC]]]###ðá•”&/ ïß¿ÿðáÃÕÕÕ«W¯nooojjBÁŠŠ Ú0™—ßï÷z½è`CçççB´\.ÿ0lA( 'ÉXÉþPçPo!ë ¸ ½`»h¶%3¥œsÓÆÞBóùýþÛn»­¬¬ ÝUY\Ó4ÁÊŠŠ{ÂéÅÎÝORÆãq=P@Oèi“«‚}>ÕÊg*ñ¶ ¤JñPØžý q@tXñ¼Úy«V­ª©©¡`Ó‚eEEEH2ÀÎ5¢™™¾o<·Ï¢\`²`f¿Ïårutt¬[·îÊ•+gÏžE–®ì0d …r¶ÃáøÁ~páÂ…ŽŽŽªª*ǃΖJ¥Ð ‹ÇãõõõH…iÆåË—!²œ²ël²Ñ=’Éd<¿téÒøøø ÛBˆ2,--MOO÷õõA P]¯×;<<‰DÀTů(|Žî4<<,¹*ìhÜx<Þßß_UU‹ÅL+̶¸¸xvvöÌ™3€ŒYÕHrZZZzÛm·uvvVTT€B%Ê'''Ïœ9388¸fÍš»ï¾3YBÓÑS8‰ÉXÓéôK/½tòäÉûï¿¿££¹GÜn7ÔÍ•R:ä’ÄGcq)))I$˜=}úôôôôúõëyä¹–‘¢¥1€äËš¶°5ÌÍÍÍ¥¥¥555H‘!G6Éðo(‡:!Ö#·Û ΰ‚Ž].æ= –£Ì\Ѹ2ªìða•ÙqM‘ÀГ¹ž*A %$'Ñ:žh>'Oíɺ‰žÏrbzä ž±Ô!™sS ðˆ“¤Œä X-ÑáŒPµãŽB[ôsnÌø7ã’•«ZN†ò­f27>»Ñ­oýð‡?|æ™g‰DIIÉò ,Ü'Ù?ùÿø¯×ûßÿû¿¾Å{î¹çÜn÷u ð)XÁ V°‚ìõ1îŸnvAt“¹¦MT:BkÖ¬illÆáy<G–:e9ÛÃÃÃÏ=÷Üôôô®]»î¾ûî@ @¢Sqqqmmíºuëžyæ™®®®êêjh|È-Y™ûЬ ƒ^¯wÛ¶m555£££™L²ß Až 7aqôÍ(ù"Ž\yß•ÍsåQÙŽ8GrócßA*±=¥3†Ý3ˆcð$áAy±LsÈO–±ÒÒR¸¸DÇòƒþššš _ÍÊ‘—‘’$À¤6À ¨üñ¦¥Øef§yb§Â[ƒÁºº:D¬APÂiqˆ è([YYY0t»Ý,/cšæØØØ¥K—Ž;vúôéÑÑQ@i 8²äßpG}>ß½÷ÞÛÑÑ166vòäÉþþ~|@Z‘Ê;Êr`¦¦¦&&&^zé%·Ûíóù¸Aš°ÞÞÞÙÙÙP(Ø } ‰Œ•••Aû¢¤¤Äï÷Ó3”ú)ò0 ȈiÅ¥ÆãqTvéPD2vÀ Q%ÏBv]8¨---@@*Îò£øÎää$¹,†i±¥è-Ó›¢Œ½aeÓäÍ8)²¥€)8ÎX,F!ÊP/cÉi“‚AOK˜ “KLOOcJ‘úG`=ÈQV__¿víÚÅÅÅññq ñxœÈ,ú2f\ºt)OMM>}jw($t @Å’žjÆÒçÁ Ä"LVñx<+¥¼^/x—JðÑðÖ¼ ?33377wúôiº¦§¤7²€89??ßÕÕ5>>ÎxOvNV~‹ðad…¾ÒÌÌL8F'dC£9³{EQËÊÊêêê”EÍs:¼æ’fÐââb¿}!(**jll|衇ÚÛÛN'ÓAàn·ûòåËÞ’ó'b3Á±0…ŒºišÐöž˜˜hnnÞ°aèWDaX<¬/€æj×kkk;wî‚F)8år¹€þ`m®$¢Õx"æT ‘”Ø*‚ž)d2òN x‹±ÏT¤²¯,FÑ,CР¸6±fpO°ù@H4 Ñö[å4SHõ¯ÜìË«ö­ö:rµ¯øò GÞÓ°ñµ%%ã%í¦D>|"²Vø"+ì6ñÊ™Sƒ8í•– jsV¸<Ø`£ÈÛ¾ÚVxUv+Â[¿÷{¿‡¿ÿê¯þ T¬|FιüdaaáóŸÿüã?þôÓOoÚ´éú¯¢¢bóæÍ7»’ V°_ ƒ0N¡ovY V°_“û­½½Èiö­ž}§H®»vöýµµµ­­­'OžDž#ÊÓÂ?F£‡îî<„ºè!@ÔãöÛoùå—/]º´iÓ&ˆGð)‘HäÀãããëÖ­Ûºu+øØI#ˆL:WJ)ì8%Ú‚“v¸gÇʾå«içäšÏ ÷¯P5¢ä¼™s]þJƒà–Ã'ȹ®DÎ>HbC†MõFåÚñóˆx™³Y ˆ…¶ÂœÖè2WWQQ$±Ù!åÄãqøiLg&_ ´ü¶íÖŽYZ„©VTT Ì0Œùùù™™™ÉÉÉS§N9r¤»»;òDZË!µ ¼²š²nz={öìÅ‹§¦¦@†¢ŒŽ <Ì L À¢| ˆD"KKKÈÎY]] I,¿ß¿qãF¯×˹¼Y 4:¶êÎ+³Ð¥™™47%Þ@6‰D"àjkkQB@h TŽŽ‚ibŸ<Ïý÷߉1€Y¨ÛÒÒÒX,6::ŠÀ½±±±þþ~êÑñ£[޲°°0111??1{ ’%e¨#„ŸáqCCC‹‹‹333]]] ’ÂÁãÙÍ4M@QKVvW0¤–––pq8>}ú´²b]9XHöd·O¥R¯¼ò D¾G<ÇãøCÞR rEEEÓÓÓ¿}á…˜RÊx›"’TÓ4!ÌT^^žH$ umš&¸W ‹‹‹±XŒQN§Ò!£©D¥i-ˆÌ°ˆŸ­¨¨p»Ý‹‹‹G޹pá–-[Ö¬Yã÷û¡ÜÇøV9ðAÈošæ¹s熆†öíÛçñx$œŠ¤†aÌÎÎNMMuttLMM}ó›ß\¿~ýÆ îNK:! 1„+J2 ªº²²òŽ;îØºu+ŠG&Ô0„áó­nbÄ JÊ€… • a"°L¶àC(»á+ä™%L,ñz²idÙ4àP—¼’`1 æ™då éùT6ôI-K)$¯-å†OÄÙÈfýptHLͰ²¯ÈÕ ‘ε*çÜ“—å¼F.sZãæü‰¡®z–A. ²Nø!;-)3;ÐOöm Óö$évUÙ"E–q7bˆMmÓ¢lû‡·ï[X *'üb²·V¸«þË¿üË¿üË¿¼êeÿøÿ¨}‚¼owß}÷ò?|ï{ßûÞ÷¾W)µr™•åá¶kxÇœúå…̉ÒntæÄœ(dN¼¾oôì³ÏÚ?,dNT7&sbÎYåõ½qÛ››9ñ¥—^úÿïÿ]õ2¿ßÿñüºòF› àºÑÛ‹×hÜ·ÉsH‡ÃáñxšššÊÊÊ’É$`º©ÅÅÅÃÃÃÏ>ûìÔÔÔúõë·nÝê÷û¹Çbü]EEEEEÅ¥K—fggyºŽ¯Ž9ò¯ÿú¯CCC[¶lùßø;wîÆ(cšf*•<ÁØ%™Ñ! Î-©æ-ÈøDîÚµ}³¶edó!l‡ ,wí¦HLN’Eg¨ìk˜ÒC¢1*{‡*‹$·àl)ÈŸ‘h ²çÃb,..‚Ê&“ 7¤ù@´Ø0 Âp•ßùùyÈú–X»¶×ç= 2y}ú«_ýê§?ýée6î×–9qpp°µµõÌ™3+ao- ÓnÍ̉9ýÕמ9±©©irrÒ´½iËWÔ«Êœ˜ÏÓÎ÷ˆBæD»ÝR™¡š!?1 ã­o}ë÷¾÷½|?)dNÌ—9q%3Ò«²_à̉_üâ—¿ìç7s¢aIÙ· ·‚ñQ‰l;JІáõz·lÙ C¡ÐÙ³g¡³‡vii šÍ‹‹‹dÂ:öˆñxÜívÃ+hjjzùå—»ººV­Zåp8èó@*8N¿òÊ+‰DÂçóÝu×]ÜÿQ´À\ëT*E@l°!B¡î ÎÛÂk2Ev9<ˆè‹¶“úY𯨢•B°Ê‚Ò¤;ÇËz–âÜ2hñY`pA F¶q:^¶t:ØL%tšMÓ¤ {...Bµ‡!3ÐVGñà»2– é䆆†FGGƒÁ îb€?F#ÐCÉ…xJIII8&‘HˆF£+wÏ´åîÑ0ŒéééS§N½òÊ+ÓÓÓ.—khhhdd$‰ áøF(ùÌÌÌÌÌLee%ð¨D±VÎ>¥T4…Ü8À ·Û 1©D"ž ‡U«V555mÛ¶mffæôéÓ/¿üòðð0:FÆÊI§ÿ…ÿ ”J$‰D¢¿¿ÿرc¥¥¥•••­­­ÍÍÍøI8>~üxqqñã?Žtxp’ï`“ŒðI ¢ˆzƒKŸH$þýßÿ@ ¸xè$`Ø9ŽïÿûÒY2„®i ã@¾H®„Küì³Ï`ƒ*+XîPù(30_•½$FƒÌw‘HdffÆçóÅb1‚›‡ü8]³³³ô¥1:Їkkk[ZZ¨‡¥‘Y0Ÿx½^ÌBx(à6Þ¦R©_|ñ‰'žˆÇã^¯·­­íî»ïÞ±cG ëˆd:H_—0ÍØØX(‚b`GGGOOOCCÃÞð¾©]°EVˆa8ùÃmN§Œ:$î&¡ÞÒÒÒêêj¤æèìì\XX‡èáðððØØÚ] ®%nF£ÑèÀÀÀ‘#Gpàp8|>3j 5дŒ•¾ ‘HŒoݺÂÏå‘ Ÿ…ÆÂ¸fZTM%H©¤øEX ^2™t¹\ óNLL dxûöíuuu õñ½V‚K¦@ÍiL x jÖ*C56bå"^ÃÃ)šµÄ7*++#²ÃÇýAº”5ÌAÇn€Ög—#òçòŒ„wËXi ð.ãìLëH†óV"oͼ(˜Û¡ÅÆÀD8-¦,TÚÔ±Ï*¢ ~BB(*žË‰”²ôP¦•ýOa!qCÑVªDDãØ€L[©±…#RÐÃKj” q=ŽÐÀ~E>²^0àšI*AêÅÁŒ²Ô1™)®ªª*//¯¬¬$ñMRæå.Å„2  ÄW•eç‘XZ“ÉäÝß »…6èO>ùäþᢎ6lØpU¼IYÛ2ùÉÖ­[íd®Z4={öì]wÝå¸õtI~lddäF?¢ººÌjÌe7zðìF›Ëåâê¼97»P+XÁn¸™Ùœv‚5à 444466öööŽŒŒ l…‰Ä©S§B¡Ðââb(š››khhÀ.аò¸›¦™J¥@þ:xðà–-[jjj¨¾TQQÁýkww÷ /¼ÐÞÞŽTJ2 L ‡}<•›#‘ޝÁ&`tLF¤:âá-Jµ%¨Op6È£Á>l|’ Dâ~ ƒiÅw0ˆL ¥v@$>Ÿ/céÑòempÖá†<(†«Î°'”!™L^¹rÅãñÔ××ã]X6,ÊÊò|°ÍM§ÓH|éõzÈ ô‰WB½´dÈêîî>~üx[[[yy9— Ãèîîžššºté¤X˜N8³L"rjjêØ±c—/_Îd2«V­"Œ"JpZàeE"‘ÞÞÞsçÎÁ«—o¤1ÔP±—.]zú駃Á 5@ŸŒöbœ,Ð¥¹¹¹t:íõz‹ŠŠ¬‹ÅÐÄ(oêïg„`I§Ó9;;KŠŽVF¨›-P×ØØØ±cÇHÐÀ·gÏž ôB/ Œ¾=:çììlWW—ÏçÛ´iS}}= Ã%W••ƾGŒé¹ ôCëa2PK¨H‰ä}…%m .*îÀæÎX2ö¨@ŒKæÝ3…<9&p†+¢„ ú$ L&“‘HT8ž£$ ¾;5ò›Lš'×JfÉÀ'«„8 ü+y #[žLAL<×årá‡x:3›ùŽg9„þÑ{IlÄ„Ÿ`ÊBåCÒ.‹1m1Wgh/|„t\eeÅ,WSSsÇwÜwß}@Øeì¡ÜqÉÁ¢õs.ÓÚô¥,|å±ë'æ¤wÝ»Uà­ÞÞÞ÷¿ÿý¦iº\®Çüýï?ö^Ëÿ ®ï‰'Ξ=»k×®•Ð-c÷ÝwßÑ£GÿþïÿþOþäOnv}ÜL«©©™œœ¼î·mnn†B„´ëË€˜˜˜êîîîîî¾råÊ•+Wž~úékàÁìu0Ó4±%Z†PsôèÑžžžesss>úèÆovÙ V°‚½¦±è¹mjhhظqãÑ£GGGG{zzà/,,œ?þàÁƒÑhT)ÕÛÛûÜsÏE"‘ÊÊJcb;F=:33søðáŽŽŽŽŽ’Gfgg!? Xá…^€D1“å¡`‘HDeç„7ŽöÀÀÀ… Š‹‹Ÿþùææf$€#“–L&A)’_)Kv]‰óp8ü€ø#‘ȉ'JKKAâPB*ô‡%˰¹”‰«P™ Apsß××ß>!A1øBØ4ö¢#´ˆ2ÛD‚ÂáðáÇǪU«?}Ã,` Z„B¡ÁÁÁÊÊÊššlëáB( e€+?avv¶¯¯ ¸Q/–––†‡‡GGGŸ|òÉ—_~;uY p-)fZñ;333‰DÏhVhr' À[|A0ûP* 7(lâQ èBp–@dJ8pÊ Ã`øjuu5˜eHgZ™a>ŸÏív£½æççÝn7ä“À–ZµjUEEÅÐÐê$•JÏÎΆÃáÙÙYø~2fÇ´ddÂq¸Co{ÛÛ:;;Á¢¢Ü;}!ü–2üü×ý× 6¼ûÝïîèèÅëõ©Àîñ}ï{_CCƒd Ãke?ïéé9sæÌâââîÝ»;;;ñhFݲưÉG1Ágšæ3Ï<ãr¹6nÜØÞÞ®”‚Ä„‘äzÛMMM---æÂ ”¦…§ÁÀïs:èiµµµvCuÉÑD€ZòèuPë'ÿÂ0 ¿ßÿÐC-..UVL™Ä¤d¬„-Ðs0"È㕈€Wë7²$*kÌ’@†%NîTZZŠjÙ¶mô¹0´åða@ bZÐÊ™±Д‰œN'YE8<@­Êòk>6Ç» Ñ'/ï€×“¥¨¨*{˜4¤¦ï–±t‘´úÄ[{½^ådį1 <^¯Á[9-‚††%À‡LކF2m‚âD(¹$Àù Ì~J€¤pPP¨Ž¬ÉÓ1­€A€Y›ÀMÃÔÈÄ"™ñT_¦aÅDGj‚ìœ×H©EÉ%p~°°°j-•àx(∱Êd¬ X\ˆšá­c±0)¶/&ä—ÈX²_¬`^¤†x«,ò U21€Ê‡•‹•^- ŒµØãñ€‹ES)…ÿÈ.--ERD"â)証9† ¶1$-òd.466Ê©FvN;4,ApIŽV9Yü"‡KvN%˜\7áº%à­t:ýÎw¾3 )¥{챇~xÕªUÇ¿óÎ;—ÿaIIÉ?üÃ?ìß¿pp°§§gÿþý»víºæbˆ!°‰‰ ùß®®®µk×¾öÛjŸ|æ3Ÿùìg?»ü¯†††þú¯ÿúïÿþï™ër˜~¿¿¢¢¢¼¼¼ªªª¦¦Gååål¼ï¾ûy䑲²²={öÜ ­‚½F‹ÅbññçþçØð¡ùü~ee%ÈðUUUhe¿ßôç~¿ÿë_ÿz!iiÁ ösjW]dµ +Þ »Cp.–––ÊÊÊ:;;½^ïÐÐÐàà \…X,vøðá®®. YO<ñÄÏ~ö3ǃ}­²Î ÀùìììW¾òÐg°wD1 ~ç;ßÁæR‰Ívót,¹Ÿóù|^¯bÌ™LæÉ'Ÿ„’·ÃR¹¦ÓÈØ WD©V–C\Œó[HÁ[ŽÅb¥¥¥ «#ëÍú»@Ö÷(¥à"RDôŸÚÚZì€Q?¨säË#³ /K"zòøcaa!‹ÍÍÍe2™³gÏJÉFèÀ¿bÆÇÇ¡‰DÀÎ`mPÔ¬¤¤J©þþ~ Eõõõ^¯0”°ÇæÍ›ÛÛÛF±¥àö 755mÚ´ iKKK]]]}}}»víª¨¨€ŸSTTÔÝÝ}þüùH$‚·f” NøN'²TUU544ƒÁúúz¼`YYâhÜn7€-" ks8H^\\ y8Ô’i¥í4 ^ŠX }EÓ4·mÛFA+ôÑÑÑÞÞÞñññ™™¨•ó… ä):nµaÆÛo¿½±±Ñ1†ˆB%ß Ž€¹ªª*„q­Y³èmTUUrX(ŒÎŒàóù<O$)--e¯ÄSK´eaaÁëõz<toL $àÈ.gX‚Ó £££¨@èšÀEÿÑx ¸ v›ƒÊ ŠÄ ˜VDÓŠ‡Bå8D ´ ã¹0Š Þ±Äk K•FC”d÷ƒkŠæ@ÏÎÎÆb1$ª[áÔªù®’”a¿^––QÉ訨CÔUeeåúõëï¸ãŽ©©©3gÎq‹6“-ÍàDCˆ[›V¾KÌ0¤‹Ö‡ž |90lÕ\#±• ô"µœ²à ¥TIIIMM ‚I)iÏðg3[щY–_>ÈívoÞ¼9 j`%ï@ CFPjcSå!p–x|,›ššÂ|"1ýLvÚV o1œV)°&•Ja H¥R333ˆÎd2˜“1 ˆsp9D6=È›ûŸžžîé陟Ÿ?räÈÔÔ;6R4f„æ~Š.¢I(ã± + ‡O½½½k}}}ñx|||Ü0Œ©©©§Ÿ~Úçó…ÃaÈqb‰áÄ<@n2^‡áì9EEEÀ×”ýS¯“`òG†J‡¥ÔF@ÓårÌ…c‰ŠŠ °_ßm†Çã!j¦ÔŽf%.¯D&V¤ÄÒ … hX*i˜©äiÏðstì 0»z“½‹ÝU;ÎQÙÉLÁÐTAvX2v¼•½KçìØ×Ýn xëóŸÿüÉ“'•RþçþÎw¾S)uß}÷ýìg?[ ¼ÕÒÒò“Ÿüä¹çž»ï¾û}ôÑ×o=÷ÜsgΜy-w¸,™L²]á¿£À–¸5àvÒsf½µ›išssssssL¥‰DB¡þ‰D¦¦¦Ù7C+ÇÅË߃Ðç2†m¢!´î0/ %Ê©þEµãÇ¿üòË?ýéO±wƒµµµ8¦Óì5Æ~"8#=†«bo*¹ ؾ#Ñò–L&‡‡‡gfff-ƒ$ÊèèèÄÄÄôôôÜÜ\$YaßVJ½üòËû÷￉Òò¯•÷ØÀE7555õõõ---Á`°ºººººº¦¦¦¦¦æ—9Í¥ö[ÓÌì %hÊ '1 £¾¾¾ªªjlllppÑJ)`â333Ø2nß¾}íÚµ.— „œ™#ÛðððÅ‹c±˜ÃáØ¸q£ßï/++ƒ0y"‘H§Ó/¿ürOOËåºãŽ; Ïž¿Žp@qq14¿ßïñx¿ño,..>øàƒÈ(m/’ªad‘,ÆPÂ[|üØ6ߦ%n"ÃÉv‘ߢ8¬&‚#kzøôúpðŽŸ–D4xüA±j‡¥W g#•J¸cÇ;Ãa`2/<ï³³³‹‹‹½½½¿ú«¿ºsçN8(ó~ðƒ¹¹¹7½éM·Ývöñì3‹‹‹CCCÇŽkhh D´iš/¾øâñãÇßøÆ7677ŒŒŒŒŒœ;w®»»{vvVˆI·–:MÁ`pãÆ6lX½zµÏçCNzòžàD¡KÀU#êJ¦Į̈ðea¿Â-…Mhe¸ûx†xë`0ØÚÚºsçND#ŽŽŽ \¼xqppÛ<²'”RN§óî»ïöûý !¡”@.Òš¨H…äX@ÈXù Øâè{rPs8ÏÏÏ;NÈ09N¯×KÅ!Ò·q¼K·24¥¥¥`¨™"ªÄ‘8ðÙà1NOO ÍÍÍÑ[&µMS>"cû|>$þ#(€Á‹W@Ï—ÑĨ Ä e,Õ'ÀîGÑ–!<›¸DýàÜ¢†A~a@;‡€FI£xF¦Ó¯Ät$šãr{€œPçðc1/y½ÞŠŠŠÆÆÆ™™™ÑÑÑ©©)ä:bk ]²ÐdÒµÆÛ¡]€:¡“Ki*®¤Þ8ŽòòràSŒÈr ·eg+..®¬¬$5B`†ÐŒ2©²’`¢’>æt:W¯^½}ûvŸÏG¢ŠÔ`„ ò&ØšR`‹‡¸ŒüY%6ðkb±Øääd?žKo¤!tcú™l=x^, ###ÉdòرcèÌÙÂL4Ê‘¹²Û ]PçóóóȳyöìÙ¾¾>e‘¦1«kxó!°£¢Ñ©¤Ž†p»Ý­­­†aà aÇŽ¸˜Qcc#är¹pº#M”gøžw¸”àWœ¬ð:†à£™Lƒ¯CÚ5(®d:³Â1áÈÂ𞨙Ùú›Jg„œ¿Ëå XÙ«yFb <¶8–K¼2Å8Ü4¬_žÄh-§ûžMNõ”Ce‚ùe¿áu·[+sâ'?ùI©(¼Â|y¼Ûc=¶rÿS2'¾[IàçÊ«QÚuéâD©í‡—DÎo™3'*¥°ã¿Žo”3sâò–¯M¿ò•¯|å+_Yþ·ÍÍÍ+|ʫʜxÍ4ÍBæÄ×h ®_Uõÿ;sâëo¯ý˜Nr"°=M§Ó(»ººgffšššœNç½÷ÞûÒK/ ÍÏÏ755½ímoÛ½{7#§à Á¯8sæÌg>ó™sçε··¿ÿýï_µjð&Ä Jnll, ¾ë]ïÚ¼y³a‰†`§HÕ º¦àÈ€j ŸþùÅÅÅÛo¿}Ó¦M€èÂm[OýÇ“g¤¢ƒ/MyrÙ¦|¸æ{8Žh4 ¨ŽI AÆ¡ˆ ü%@º|¬( ‚Èp¹ÙÅO’É$(È®#ŠßÆãñþþ~˜···ƒÁ††à‰>Ÿ¯¥¥¥­­Ü­·P-»¢¢¢®®.•J­^½: *áü755á,@6#uttàC1¨‰‰‰—^z Ò]]]¡PˆÜ"%hq†a…©®®njjZ»víÎ;W­Zÿ“  ;|0¦-ƒWÆ–’9e $ÜTÔ€Çeˆè:]Zh}'”âAmmmk׮ݽ{÷ØØXOOϹsçFGG7€µ·zõjp4HdPœÇh»ŒHÝEÉRlR‡×‡p2ú'½/V°¸ˆ*[Ic¸_Ã$Éöééie±–Úùb¨”“a\(3ÐUúüd#²’ñCtéÖÖÖ}ûöÕÖÖ¢ª0:¬\ĒЩ:JH…ĉ\/ ª ¿R‚ad')SÙY2A" P6”œMÙà-ådd'•#˜K‚˜²P ^ƠǰԲˆ¤£JÝnw}}}0ܺuk*•íêê]\\ÄdÈ(]ÓRâ¸@;²E8ó ½#Ä íìÎ¥n·óžÊf¶R$QY€)¡+<Úãñ0êxº¥rÈ'ŠÅbüÆðI§ÓèÒÍÍÍ;vìðûýHµøAÀ=ÐiOêìÙ³ˆ‘GTrÆÒ‡vYUU…PtÜ„àšoiiivv:t½½½ä@²ÏÂÂ5aSb¸¸x}8{+#,. "¡0ψ™VÀʼnNâb(N^¸p¡««kÛ¶m[·nå1‰ñk„P1ܰàõFá1ÿ`´r*F £ç`ù ƒx  dÉ£ä¨Á¹ ¸Ã8:Â"…Å()r㣅%+rƃ3 'gTÁ— €~+aYIŠ|iÛb¾Ì["ß‹i Ù«%4,ïÆyFYr@†ÈÆÈѧM œ!•HTÓP"à²Àø!!röN°räÞèCÖ›Ÿ9ñŸþ韠(îܹ7f2™Ï}îsÿüÏÿÜÛÛ«”r:o~ó›?þñoذÁ~Ÿ/}éK¯¼òÊç?ÿù~ô£_øÂ^zé¥M›6]õé·ræÄ×b7È}Åš‹Å®û£G X^ç )RP!Á3ŒÒÁâñ¸äQ¤¥¥e`` çÍsfNü%·úúz„Õ¬ðú•ô󜙻ººº»»©«5111999== …@0Fƒ*¥ Mã°„-?õ©O!¿jN{U±´ R¯äʆ††±±±Så×¹¨¯[æÄŸ#;xðàßøÆVàm·Ývâĉå¯ù¹Îœøz‚ì*[»áµ?;3$Ý[»víÁƒů]»ĦM›8L&'''¶mÛz6±ohh¨­­=þ<â;À5M³¼¼|~~Q]J©;­­ î‡Cäù"3ÅaI«0H Š->Ÿ/Nód[sž„"íY3ô„—––P~¿ß;‡ÃáD"– ÉMÊBè¨ãCPÒd€ƒ!¨1à}`Iš3ÏÏÝn·²öʬs†“È-a><×ét¶···´´ÌÍÍ%“IJÞ’Œ699955õÒK/Aµ§®®nzz Gˆ§@ieª\yòŒ"Áû¢Z .kll¬¬¬¤ò½ìfh©¦¦&¼#ÜËS§NýèG?º|ùòÑ£G•ŦáΞ vÈš·zõê7¶µµÁyÖê'gŸ§‘3bfG0)áx6ÅŸç³hàìOgûJ]°ºººÍ›7ßqǃƒƒgΜŸŸŸß½{w[[›Tn’<‰Ü±ÃÀ _´ \?‡0 ¨lù!ŽDtÆ*Ë+Ó=r+/—ACìätze^‚X,6======::zöìYÇã÷ûén)·¥lâ߀•“Édkkk0$É‘˜‹”fC%#&zŒOÆ#Ën¦a“5ƒ§3 L6Ê Jæ |ÇgffjjjH†’_ëH,ƒ•$™OÄd¨,N ç%"zü¡ÃJrÇsX*Ý(?Ø÷«W¯^µjZÇív»Ýn x¢¦ï  \²–¤.!ö„ÊkT¶úõìììÜÜ6J)DŸ0:˜$&5†L ‘Hdnnnff†ë°¡t:=:::>>ް\Þ¢„B¡ññq·Û][[‹ˆ’qœNg2™¼|ù2º 0`ʨùÚÚÚd2ÙÓÓ344D4ƒ¨²²ò ox˜Å8`¾€8¦ Ÿ¢Æ´ØØ’’’d2yâĉC‡mܸqïÞ½UUU$ìÈg1T#@Nñxœ×(K5HYUU•išûöíCñTv¤ï~²+Ì®+‘¢¶g`±••àžÌ&~%Ïdu¡Ì8%Â’JN%îƒÍ!#Ž <ñéÜ#Ÿ¢Ai²N44g…ûûeòþlV ÆÉ4‘öŸÈ×QùC‰ÚÛN¾ˆ¬gÌo¬%‰s¡¶Ù”TöüÅ„·¤=ùä“J©·¿ýíÀ¶ÞûÞ÷~ë[ßâ·étú‰'žxê©§¾óï<òÈ#Úo¹~þóŸüñÇŸ~úé•`[ËØ/@æD¿ßó+)É~†íN ¿‡|Æååå@ ªª*@ùH‹G[É£KJJ²Áó¨d2‰$©UUUõõõMMM«W¯®¯¯¿j4–Ãkã…ìltttdd¤··÷Ò¥K/^¼|ùr__ߨØX&“©¨¨À!9v‰Dⵤ èìì\ %0•Jÿ ‡Ã¡P(‰,O¬Ã=[ZZçk-¢e«««[[[W¯^½~ýúM›6mܸqå$¯«R~ v+Û®]»¾ð…/ŒŒŒŒMLL@››`éŒ%“ÉíÛ·ßìòÞ@ãŽäu¹¸7ÒVø[•žƒÏá´¶¶z½Þ¹¹9D®a“ºjÕªúúú™™™H$räÈ‘]»vÁ÷3¬Ä‚{ÆÖ9+¨4”N§ãñøÉ“'{zzZZZöíÛWUUåv»é–À(§¥¬#PeÑsHҬ;öÐà«¥²÷—¼ŠR( á0êŠn¹ÆôQÖ¦~AÒ¯H@¤V¯‘­@"’ÜÜ;¬ÔõÄy›››ßþö·¯Y³æÔ©S£££P¦WÉM&“ýýý‡²SòYä"}$¼îX,ïWrÙ Ã(++Cú'3›¥”‚Ø0RNMM8qAˆ Ÿ¥>BQQ²Ñ544¬[·®£££½½.TÀ@²@=K„QM©DºòJ‰oªü‡vßIV—&ò¶ ‰¢Gª”B,öÚµkQ“^¯ ,ùÜ4ÊÛš–Î’0öC8trF5lÒEKú‡7¡=ä°Å'ÊZe>J@ÅãqÀKVî‚P( ‚ÞÞÞ+W®`’O$Ȏʼ)òe²ƒRQ<ŸÏǬ1$û!ILiÄoÀbXIzÎÚãäa K_Œ@f‚Œ 333ccc¼•sda[®,u0©ómX)20=Rn‰¼!ìÆq ®+Ê€áò𾱦Ӈû#ŸÃââb$ë‹9Ó4IÑ’QØ ###ñxÜï÷———;¬àåââbÔû!(™ØòAV\݌ȘH$²Çé³±±±+W®°*@ÏŒF£3M:¿xS‡Ã1777::jš¦Ëåjnn^»v-˜G™L„,¯× ¦!ȰèêX8€Ó…Ã᪪*d–j± ”›f2™áááp8<44¤AÏJ©`0ØÙÙÙÚÚ ¢hD記$Ge/ú+Ç…Ëå‚L^[[[SS渆Å}ãºiXêé¨O¨òNG¨"L5\•O‚Qw#®dd«¼qlJ¡+ÆÈãzö4¦hT6ê"ú‰i¥GäâE|\cT£\”M¡›ÎÚ šuñMiZy$ؤMnÈ““¿<Þà2ÁþL¶#g`yOmÑN­–· ‹+gZ–¡¯rap„eIdãažìráS7Òn>¼uùòe¥ÔG?úQ¥Ô·¿ýío}ë[‡ãïxÇØØXYYYQQѳÏ>›J¥>ð\¾|¤tZIIÉ~ô£™™™'N×X’Ÿ÷̉mmm8L(//¯\a|]lóæÍñx¼¡¡¡©© 1#³®ªyY°[Ç ÃhjjjjjzÃÞ ?Çã½6«««»Ñåq¹\uuu¯êA[¶lY\\ìèèX³fÍjËš››~a낽F+**úÀ>ó«x<Žt<Ó–½ùÍo¾Ùå½öº¡Z×ë¡™lÙe1ÀÀòûýÓÓÓÑhøQiiiGGÇúõëûûûçææN:uìØ±ÚÚZÈ»Rx5C Ú0Œp8<<<‰D° ...ö÷÷8p N?ôÐC­­­¤ê0è@‰ÌAJ¤]“g§¥¥¥8a‚AÇÔ†¥LÁ2wöØz<úBJ)øHÜèshX‚†ˆ1D€$A‡Í‘˜‹ä>àE$ŒhdËZ#ã!­²œ‡%åçшˆÂ¡«¬„¢ÑÆÅÅEðÇqŸ¥¥% VÀ° 0n¤*ËXYGq iQÂ(˜:˜@2A2™ —t:¬‚(Ç>kÆívSù;‹ÍÌÌ(¥^xá…S§NUVVjªËÊ¢]ñ‰Çã„)Íl¾ ë„á“Ô)l.Ц,I 8ä B sçaóz½KKKH>kXÚ)>Pó¼ÏÂÂBOOO:öûýõõõ@UÐpÊÞ¢”J$Ks ÝXž±Ã˜öâóÅ G}}}gg'§V?¡¢fgg‹‹‹ÛÚÚ¶mÛVQQjg$Møá‡njjšŸŸ÷ù|èL]gZªá æ%$™*%¨²¤´Äãqà;È- 1u;Ü ™-JƒQ¾Ã™kÀŽM ±0}Œ Èè6@ Á¸$I¿eO6¬è<<Åï÷´¸Êæÿ²-”â&.†.ÊÏ%L†!ËhV` 2K¬œ´]„C(^©lš$ ˜¦“`±Ü( ¸—P²Äñsç@C¤àº,±- ej0ǸÄ×$ãUbm¬ ‰©ñ¡K;\qdËösgÆ F7…¦g<,ú’u͋ګµ›oE"‘¢¢¢;w*¥þíßþ­¸¸øÙgŸÝ³gÏ¿øÅÇÿû¿ÿûáÇõWu||üý¯ÿõÅ/~QþvÆ ¿ñ¿ñéOúŽ…í–óÜL³T*EÉꉉ‰ÁÁÁ‘‘‘ññqê¦Çb1²g_gƒ†ßM±3gÎܬGìõ1dzyóæ•DæÞt[‰ö|Á óx<§­­ífäõ3î_ŸÇ½ªi[Æœœ—D"1??ïñx‚Á Æ'''£Ñh p8@à-oyK"‘8xðàÌÌÌc=fÆÎ;™*WÊ">}zÓ¦M‡#‘Hôõõýð‡?•QØ8—§Ú¹´¬zMhVFv0M¤Ûb>_I½:3~dpQ$‰îà#jÃ’744ÔÔÔìܹØñØØØøøøàà ÔÍÒ'ª®®Îï÷£D䆞1€&C¡?R |ÁãñV€ÒÍüü<8}gΜ9wî\WWW86ʼnð"r`µ¶¶nÛ¶í¶Ûn«««C(+ãV KèÄŒ‡%^îIÆ’=¦‘!(9¦¥}F rek“©'=1vNê+Ûù†Mù›õO–žÿ¬àYð]QŸx/p‘˜–0YHÂB #ð %G„Wqq1²WTTHN‡L‹–J¥FFF‰Ä•+W€QÓG‰¨[¥À²t:íp8ÆÇÇ?>999??ÿŸÿùŸPŠF£À­¤P /‹þpôèÑééiæeÃ+ðJ†;DN$ôCÄ/BF£ðÙ át:-¥BèŸÃá€D†a‰pQ‰‚ÅìlhSÝ©¬„JȪZ***BªP¯×«”ŠÇã•èf33&ˆCp©®®6³4à( ‘;vQ(0’_0cÀæææÖÜ4M†Ô¡&q,ã`§P „ãÙR©Ô·¾õ­þþ~¿ßÿý÷WTTPÕ›ÍMt£¿¿ÿ‡?üá½÷Þ{×]w‘¾dXY,ɇÅÅ€Ëd2###¦iÞqÇëׯçZC* ¤µJJJn¿ývžv”––X,V__v ™ƒPÅŒ(„H +ÂIB8ôpв´´F/^¼ˆ0y%@"%âš!óOÄÖÌ/i¤Áè’t¤ÊEÙ¸ˆðu8ù‰ü¹mQôq:ȬJÝ(¹¾ËYË^f‡¬­žWjäâŒPƒÒöZ /&šëŽ\Ý6‰¸eòhÚŸË%ƒ%ÌX)8 KÜ äPS.órã!·"†ÅäâO$e˜‹)ɼ_hk•}à$±3¹ÜcÓ…ø0­x+fY溕;‡L¶6_!sƒun>¼…¬U¨²îîî÷¾÷½{öìQJíØ±ã_þå_”R»wïþÆ7¾±oß¾ÿøÇÚo·nÝúÿø×«$+Éœx×]w1´Þ¾”¬`+XÁ V°g@ 謬¬®®6 # !ƒ|ËÝ»w×ÔÔƒÁgŸ}¶§§ç³ŸýìÃ?¼wïÞ5kÖTUUa{‡¨%è¼òÊ+ét: NOOwww'‰»îºë=ïyÏÚµkåé·4ìäRÈCl~ñ&·Û-1F¢á¹“Æðoå¡«FhRÙÛ\šô@ì]ò2yμ’sTíÜXÞ!'»mæÔÔÔ¬[·Î4ÍH$244tæÌ™3gÎÚ@¢+d‹—ñ‘ÑL&Òòù|`Í ¡ùtü100|±Z}}}“““‘H^åŠ7 ;ûªU«vîÜÙÙÙÙÜÜ\YY‰û žTÙÖè'Ã×E€Œ:ÊOþ*¼ÄL&˜#c©ÂËŠÅ‹h<;ÆC$FÀ"Iézö¶p¸˃˜/<ä&1 kÀ HFÚúôKKK===¬¯¯g‚EȳvwwŒŒ{ºpá€eåÿBu¥ÓéD"166655•L&üñS§N¹\.¤BSB޵777‡ì{J)¤ä†ï JYˆ-A=£ü£¸¸8•J=ûì³ zɰDàJ e¡c8NÈô ÞP! =ÉX^^žÉdªªª@S'¸˜H“!âtP†ÒÒÒŠŠ d\•:‡ét™a].è`˜RÐ4f¶rS¿ñs:0èyÊ¡­l~µ)¢Æ$¶Î°#08.B ±™¨jB¢%LÔœ9Ö$P›N§=O&“™ššêééÙ²e‹ÇãA¿=–íŽÀ‘ÊÊJ¾#´Ëx.Šsûýþ––@¥¬P´ŠŠŠ:;;ƒÁ òo^¼x±££Aʈ]E§Õ‚I•Â’³¢ö­6¯ªlϱ–ƒƒƒ’k#ï(6'˜•mÑ. ´Z__¿}ûöšššŒ%—.)Ìl2Â2·¥y<0Ž)‡o¿·üG \åYÝì7‘P5»ê­Vrÿþʾ˜j|+%èÞ¬@ ‰D" ƒÁ•—ÈW9Ïk¨¥Ê&y1S„iš˜4°z¦R)òÙ¹0åÄ9ºÑX\ždEåë9‘ÇWÕ(×l·JæD~Ò××÷Õ¯~5ç•£££+ÙŠ­Ü®!s"OîásZÎg{=íúvª‚å´kÈœX°k¶×3sâ/­2'¾ž&woD¸Õƒÿ†P<Hò‘|dýúõßûÞ÷.^¼øÄO¼øâ‹ÍÍÍ­­­åååñx4\?33sàÀ—ËUYYYSSó†7¼aß¾}Ô‘Ì'‘ „P4ü"zKéwFfåôy”µ+Õ´“O­<ò'ˇp™¹2ÙÒÚ9-§Fú†çÉ!æeZ\6·ÛÖ¬Y³k×®®®®žžžòòò}ûöÁ…«£,oŠ7¤]jh!QÙ?œ™™9}út__œaætã©2oÏ­²²rïÞ½Û¶m«¯¯§”rÆÒ3f”™i îPJA¿ MŒBÆb1¨Ž*‹›ÃX6À"† Ãî$]_Opª ¶T*ÅœL&ƒ¬Ž¨[ÄôtïÑÈÎc%ÛDªX,Fe8TÉd’ÊMHÈF#‘d³²¼mA<|!Ð ŠŠŠ Ê Ü±W¨aèº:Η_~ùèÑ£(ô}|>ßìì,È_ìBEEE:È”ìc ¶"â){,(WŒ‹A©v ¦®®nûöíõõõè9’vDDý òR`U`†I$¾¤Âh <È”Ì T íë÷ûœ+Ȱy„uˆš)‹ã@nêÜÜ(™SUµ™J&TŠGHHúÀŒöâT ±-ˆ^Ižï/§HSñ¿†s–Ì&CVó†ö Š«J©P(ô“Ÿüä•W^ikkCq ÍCD!üy¶…6VÚ8*è¹\®ÚÚZß” ³CTJù|¾ãÇÿìg?K¥R6l¸ýöÛðîÌòÁ×Ñ–­|«˜<-ÐÚ/.."—­ Ý ]WƒEÌl¯!ò‚nìp8*++7mÚ„îÍì+¼^R´4öM>ÃrŒzÆÔ­õ%–2öP+¤dñäÙƒVívôÐnÚªj…,µ2Ó–r9œU¶¾UÆR“s]>`._iímJÂ8?ÔNeäF39cÕ3B‡Ë“üî†ìóù¸¶0Ì|Øœ‘­€öjÑÆ×h7?sâ£>úþÏÿrÞ§>õ©/}éK—.]Bìܹó_ÿõ_·øgögŸþô§‡††ššš^ãÓ¯-s¢R*„ÃaËø|¾ÊÊÊ@ PSSÓÐÐ)¨³ÃV¢lu}3'ìÕZ!sâëc93'ìYaVyìç7s¢² QÓ®/ºÌì5lqdÙdV>æ¥‚ê ¶ûˆ­©©yÓ›Þ´eË–£G:tÉÆÇÇ>@©åt¹\wÞyçÎ;7lØPSSS__Mc¤7h É!Ðà]K˜ ðV4F£ˆmA~@;af“•@„I¥RJlO±§”vˆTërßÌ€)p‚¸ñ•þ‰Ü^Ãϧ²8 @÷%oå}PfòGd7úä:áÝ»wïÝ»×4M·Ûl†Ô‡–’q‘Hdll,#ƒ-KxÑÝÝ݈Net¤™„ž> ª¹Éº»»{zz™Q&’¯Éd2‹Ah „4A:ŽD" K,--EáQ¨1Prp[DÀQµÔ0B KKKx j­„ˆÔ*ôU†òVx}”Ùae§’x«aÉœq»Ýˆ;cP˜Ã’x'›dC„†ÔCKKK¡P¨¨¨¤˜ñññ‰‰ VêëëœN'ô† Ã8pà(eeeÈŠtÌ£3²/I„Te3_rI€¿ÀÖt:~¿RÖ¥¥¥•••^¯·¬¬¬ªª :t.—«ªª êB@¯¤¨Ã–øLº…_‰ˆQ‰¦i’ >)ÃHñ£}%õ‰1Îöù Ẳ÷Ê1Ëž#=FòA8¥Ðk•~;±3NRFPY /65°€åŠ®+I7†’’H& Ù7, êÊÁ\œîš–øòž Φ-4/#RËüâ#4 žÖÓH“,..ŽD".\ðĉ}}}õõõeeeápxõêÕJˆ0æ[ÂrÒ‹ø‡)BæÑó“ÉdÆŠ—‘‰¸ÐÛ|ëi>ÐDâd±!B3+TÔC>bŠ[˜"‹(´%Bÿ$iÚNP4Óà"2ʶµ0r1†ì½-ó^ö‚ió†Ê†µE3c ˜’v:UUU•÷´š*[÷ÓcÚ¾ŽcFÒ.ç2£±Õ¡Ø_ÎnÃãíìm%M 0g5Þ »ùô÷½ï}ññüóÏÿʯüÊÿøÿã›ßüæüÁ|ö³Ÿ-..^¿~ýåË—oáÌ­¾¾þ&:Ž+XÁ V°‚ý<7ªÈ¨ëhòØÜÈ–‡°oÅò=W–ž…o•Reee%%%‘H$ MOO‡Ãa@Ôß²eKKK bĵ°°ÐÛÛûÌ3Ï †~åW~eçΈy™EȦ´Ý*«YÞÁóGÂxĿ֙˜˜@Æ+¨MAßÄ0 F®!(ªPS^\\ŒF£  Ùq¹\Ð`ŽF£eee³ÁOÈ—AU0„T nÀžP†aàXÎ4Íd2ÉP0Vਓ]‚3^¢$Œ³#2‚{&“É¥¥%xòÉdÎÔR`ð_¼ ÛíFžµùùùh4 „+™LRÆ[ꚣ®ÐdKKKO>ùduuuEE…²¼¯'NÌÌÌñ„qjúÁÛQújaaáØ±cøg×€up:]VVæõz%ÔHWÄ!$ÉÙ½‰ê–>!U®MÓ¤ú88Ò@XàN Ò 팦÷ÐÞ¨ºº=ý€ÕÓ’ÉdQQQee%ãÈÈö°*‚òˆÂ“gøÅÅÅåååT7, úÃüü¼×ëu»Ýh)Ô*Ј’Édqqqww÷Å‹ûûûMÓ/ Õ599IØTYµ‘-ÞÌ©@Òˆ¤S x¨¤¤¤¼¼< ¢SµµµµµµÕÕÕq#G‰°éÔ€Æ4ž/1\»Çë¥ã*j =`¦ÒÁÎXjÖ¡­yï†Å{BýÓÛg]¡0±BÞYÎêf¶Ø¿Ê†dêF¹VJ!Ì–Råʾ˜]Ëîx眽í¨zF¨ðÃBŸÏ 1 Åçææ¨­fšf*•=zô¨ßï_µjp®x< …07fD¯X†ŒPSb&J =cfC:ÎññqtZÓ4§¦¦¦¦¦€2744ˆ×Ì 9»‡aÅÞš””ÖùM›àû¶ìä*û "“GÈɰ‰¯‚¥¬ó- ’ïËý cà }òõµŽÍ—2-òzž€ö8ÿ°<œúØÍ4ÜÇŽcrDËI]…™ÕÂ&3¬ãÖö?Øàx€Û*Ì ’\&¹]òÜÈ>Cj=SûZÇ3mq”7În>¼U^^þ7ó7úЇNž>þä“Oö÷÷†áõz+++±—…ïáñxðŽØkxÂ=C¡ÐSO=uöìÙ’’g@Þ!êÇò“ã†H=ß5www'“ɹ¹9—Ë…ã}ǯIˆd2™x<‡Ãá0Ô[3Bбr8\õ@º²¦OÁ­'ÜlÜA2Ë2™ "U º>-qCü¹4 ņQ<&…¹ ¾7 3ÙÐ>ŸO‰Óc÷ÊòÈÛʳ ‡\f¢ÎäÊjÿ•‘ŸA#¿2éRÞÁápÔÔÔ<ðÀçâÅ‹˜dÐ!ÑÕ‘s`rròìÙ³H2==TŽìD{Ê‚”€Š0{ƒl Ý7{•*+‰ÔÄ4¿ÌöõË&;‰Ôóf…k½—ƒÁ`0ˆYW6hqqq{{û¶mÛxúòªLÖ¿ìö&cRÙOd9å[k]ÎÈ|· ¨l(ÞJ^D»sθ °"¡Où"ü;ç;æ{ùâ„éÙêi¼•ÖOÐȃkÅÐ>·¿TÎI€—‘Ì•±’¢ÈiM¢„öɧö6Í×^¦à¿+K€Rõn„Ý|xK)õû¿ÿûøµ_ûµ¯}ík555ßûÞ÷ðygg'þþçþç™™™¿ù›¿¹Ù%-XÁ V°‚ìçÕ$Åv4jooqMs\s^ ò¤ÓŒ€à|¡FÅ–-,,Äb1°E´g‘©aXšß¼þÌ™3CCCø/Ð"*À³ÀSB5Â1zFÔ€e(ç„qg·Ûíõz¡@%znnÞŠ1fåà Kל[U —È:ôx<¸À#|`…nÊmø|>êdÙÚFÀDxT RÐ Š!‚o%œ¡”¢º³)ôA¨?ot¿Œ%{  Á€Ô¢RVü0µt: |Íår-..†B¡æææ'žx¢N@@šššV¯^½yóæÊÊJ@›bÎ{Æ‘±w¡Ùq^éNÀ+ „Žr52²Ce‹F‰cˆ¥“ a EE%,--!v²¤¤–0k<å‘’ˆÅ@@ŸW%TVÄ¨Ý ×< R'èêP=c¥¹TÙNŒÂíÊæ0ó­™; îÙ/àžÊŠ”¬©©iiiÉd2^¯·¶¶¶¶¶Yöð\¶F¢ šÃ&®Í$9g bæs½ø­¿duI·0§;-+ÄŒ6~N!ÿ|ç Œ!ÒÐ4‡PÓgm’S‡½µ2,3 +Ë3ÏÊ”¯êŒlY}­‡h<^¶´´ÔÔÔô–·¼eëÖ­333}}}£££`×ÓDuÍÏχB!üög?ûÙäädsssSSò]bhP›OgÀH$RWW' qd!9ÎŽŽŽ={öœ?~xx8“`ÅøAe)y-S{L„ŠA”¯Â ë¸ÂáptttÜ{ï½û÷˜ ª´´´®®îÞ{ï…ái²k%µ0ŸÙ¢o9;§ü¯iE@ËÔ~(kOöðœÀ?ÉùtͧÝ-§)Ûtd8 ’L¾²vÏ•`m¼ž›6–²æyyÃ|ï’³3peÇQ‡}êÖîÆ‡²N¸[Àú…E«¹²ÐRíY¬œ|S%§8NzËÏŒ¦äe$Aß8»%à-‡Ãñ­o} B°ŸøÄ'~øáÆÆFÃ0:;;Ïœ9óGôGÿùŸÿùÜsÏ›]Ò‚¬`+XÁ~^M†ÉPR´¢¢âúJ‰™"Á¶¶CÊéMåôB•Ø`I ÷a$s¹ýöÛ·mÛ6:::==½°°@—.h/(Øäää×¾öµ—_~Ñ<òÈý÷ß N¸LˆÀâI£a/`ãøäàÂ@t¨M*•úâ¿822òë¿þëëׯ‡˜‘ܤ‚΃¸¶d2988XQQQYYif‡ÿV¾3ÆÊóX‚$ý|ÄK¯á¾V a NËa%E*))¡Œ”BçÖ!T¼ØÞpCrˆdL¥aµµµÄk2–¬;džM+ì"•J9NÄß—AÕ˜ÊÊÊ={öx<žË—/WWW····¶¶z½^Ã0 E)qÓR„1¬ 'nµ!…2Øse²öèò5ÉK(½8þ Ò»dìÕôéq9²e•Ð߀*²$Ì7ÇB<ˆ^."OéÕ´ÄH=C ·I‘ïvC#C×Q¢`xÙââb¯×[TTäv»+**ÊËË«ªª*++=øƒ¶"J‰:pjØa€¢ Á7Ìþ èPŠÁ³RbFF;²ä¼L:Šš_gw)9ñç¹ZçÉ7¿ÉN"Ç:—à‘|–öCùéÓו¡aü¡Ì‡˜óe—ñW yç¬.ù_#›?bÿ–÷Ôâ¿äË¢•ËËË7mÚT\\‹ÅfggÃáðéÓ§/\¸‰D@º”ÐÛÄÄÄää¤Ë媮®nhhhiiihh¨¬¬¬¨¨ÀdrΙššjnn¦i$Îápx½Þ{ï½wûöíçÏŸ?uêÔÈÈž‹±iZ^,.k눜ú´ ·h†Ïç»÷Þ{}>ßùóçGGG‘Å¢¹¹yûöíHG ,[ËÅiGRr‚9á-‰æ° qàÚ¤5·†Ñä{){‘4pŠ3ž¼F›ùLÈ9M»&yˆ† •3l1•98ÂC.÷hvî[ÎW°—ß>Håëh¯fGá°ŸÁ@H,a9SpæÃ©íÆ 0ç  ‘S ¬m…÷¿6»U2'Ò~û·[ûäÂ… J© 6\÷b\CæÄën…̉7Ý–é»^VÈœøzZaVy¬ªªêç4s"wØ‘#ýÍ-RÎ-xÆÒnWV|¼ …Ãáððð0TŸS©TII t“$.@Ae|ØØØxðàÁãdžár¹n»í¶;vx<*ÔÆe Ednôµú„Ë ù¡ÅÅŲ²²mÛ¶µ¶¶®ZµÊï÷Óÿ§Œ+“ë†1<<‡|>•R “°‚æ0Õ 5¦È?HE­ŒÐ—X!]#ùRÔ£1,8OžÓRŽ„œ#%4˜¥ƒj Õ `ë‘Jó{‰M¹Ì0ŒT*Eæš²!D|n0Ü·oß}÷Ý777WRRÄ„J:JHb³§áÝÑ—X‡¦Ð<’Þ›@¢$è$ &Õ  Ö£?ˆQÁG:z“蕲bñ¼ÉGrp!0“5)4ÀaR/Èöb›ªl®_GÂs†aR6΂ÝV¦É^Äîš#ピ€$ØñÈN•¨¢ü¹™Ÿ¢"]q#›xbd³½Töá§\;ñ-T¡Uˆ,³œRÌ\çö9÷7³ÃÄ2"ç,ÆšÓé ƒMMM›6mìééAÒ JnVІááá‘‘‘“'OúýþšššÆÆÆæææææfLèÆA$b©ˆ¥-E0ïwÞ¹qãÆsçÎ]ºt©»»;šÙ9r¾•hXÒþvÃe,•wôðÍ›7¯[·.§Óé’’ŸÏM.ô Û+[ ¬a ¤u€|‚ÅÜÙL‘W»¡pY¦hý™_-s½VÛÊš‹8ä°`œµo5­1m©•§8ò2#&ˆ»>6mIirò‚a|D¾“‰ŽÉáÆyL#–Ê…›}=™{*œÏ1Ú]‰…IÃIY'òÑÚ*‹”ßÊ£AS(ë«i7?s¢ÝÇÆÆG0¬¨¨H&“×÷éל9ñº[!ÇÙ͵BæÄ×Ç ™_O+Ì*¯ƒýüfN”{‡ì_õÎ+T¢a”0Š¿rÓ¢ Ð"ÓÊe†‹¥» ïÅÙâJJJ***Cøýþòòr"dl]X !¹•ä>>¼ñ{ï½W)…”^JxÚĈ!í2I@Ø©SEˆË`Xa‰¨%n£•RÔ•Ç»0Ÿ#ëS ÆÄGìGÊT„±ƒ*[Ò(Ÿ¯íÅé¾fDmÏÒRJs¨ˆ É`”È>D.1a&\/—èŒa‰v)Á¢ÒЖŒÊò ˆøhbO†%IFHÙûßö–’îïf ¢ae¤ÿŒÎãt:!Ç”šø¡׿éÓhcXÁ•ðºÉ¨"K‹ÿÍo~ówÜÜ‘K16ÞápqÀ‚ ºåœ:$p ”B&+¯ƒRe„ôµìö²«h½š# 1¤ %k^:ù¦-[×ÎQvìFò@å§Íx¦•—P ÓËùŽ/m˜kî´Ý)å+°ãQKNåwÐìζÊF"¦‘Ë›dDzG„Š«\XåŸ÷M,|®µk×ÞvÛm}}}### v(ÊV[\\œššºtéRyy9¢\ÛÚÚ …æææ8µ2‚61e.//ß¹sgGGÇÙ³g<ˆàGŽ>m̪l”Ç JÙ!ecí–¥p°lA f9,ñob\è9le‰HZÈžì r«€ÂcÁÍ©V¦l([¾¾”¯wñVvGe¯øi4Éå{ YKòˆ©Cá8@d½6^'oŠ2­SC6·,¹V$‡Pú“ï¨u.Úº)Ç‘6xÙue—Àºô·¸¸Q`>²û,’´6À펓‘Í9Ò.Ьˆ-æ«1é!Kq+Í×âl£MJ¨+„FrV!´‡ˆ$õjLÖ-ð°;í²ö·X¦¹éŸÓË5,RX>‘fDŽ6•í©._VjŠpò|Oä˜8…lY ͽjSWWçóù:;;—––B¡ÐàààÀÀÀÔÔT8ŽÇãh"ápxvvöÊ•+'Ož @ ¦¦&#Ñm$AôUÎ2Ó0 ¤u:SSS@g*š¤]Îö²c¯Zß˹"ËÑ‘s,ä{.>Gæ Ç“‘TÙ˜‘k±²8žØ¨–éœËtf ÒÒž®uo­«œbþ eí•,«QvÝœ÷çÎÎ9ÙÊoù×ßhýAÎÌ9ްW¾µ›eæa›R†Õk£^ÆT:l’j9[VîÜ`ڲ’•CíV>ñ‰OüÝßý]*•úÈG>ò裲˜èf°`+XÁ V°Ÿo“'Ò·¦™•Æ-Cpð! `ˆÀ?”ô4 uÉ îÂÂÂÉ“'_yå•D"‘ÉdZ[[].W,Cþ,¸+5ψTAÔg•6²­¸¸ØårÂP6ž N2Ïx5C3‡È®¥²½î)µ ú–ĶìwÆ9<à-m—¼|­dãnßp"Â1ßOä#dÃñVÒcWyMe'_c-1æCÈ-“æcŠ£rÄÍGÈZåvõF=TŒaÌH¢r9o²bYKÄFb™Ór‚ž²Y“¼¿FôP–³ªy³,!”ôvH”ÐêM `AÎáp`lÚfNxË~[ÙrÖ@>xkùz3-DBlöûËeŸç –€‹ô‡Õ²®ö¹)¢qÁe“¡¸je–Û²7¥œ@ƒ–Ô€IDATì%‘ãK^`»œ¡LŒÕežÇÕÄÎ ‹r+l ø°—GBNÈ9PUUÕÚÚzçwÎÎÎNOO ÌÍÍÍÍÍ¥R)%ЊH$‡ûúú€$†qèСp8ŒÐE$s ¿Õ®ŸN§‹ŠŠ*++«««Y¶eú—#Wˆ¨¼,_W‚ §Õ’‘V3E¡\HíAZWqd “ó+W¿;¤.Q¹PeЮ|FþìÊá-ÓÊ<›N§eæ2ÝÌ>ÛÛÏ~´ÇÙ?{=Ë»qf[á‹/_'òévðŽx¦ï¦u üÍS4üZÉäÅdºž¶¯5v$ÎȦ})öGQœ¼ö*ZÆn ØhÿþýûØÇð÷ç?ÿùw¿ûÝûöíS–ˆÀU»lÁ V°‚¬`»ªÝú±Ørg÷º•uß‚,Ы–WrC&á ÃH¥R.\øÞ÷¾wùò奥¥êêê5kÖ@\ä/‰à‰@“³ØÜÔbߟóJm{J^t•M’Y:r‹)½n‚q*[+7Ÿð…´ŒìSâœþ ñ5yýY97Üv[¾¬¼•ÖèŒD3M“zíü„5)«H ÓC´kÌÈsÌ®9ÕJCØšÊ $¢ÁèH‰Z*àiX8©¬+†¦* ÐjR–JÖ›@äôxYŒœT†=æì®Z¤ Œ8/s8(+RP#¶L+%éu‹‹‹Ðõ7DX¨½·óuòMYZ…ç»Æþ^( EŽò=BösÀ𥥥²æ”I–茬j ÝfD6CʾTJ¥Óéœ7Ì9îø•d“b£ O»‹ž³ƒÙñ¾«N 0†‰™‚7j(5Ô‘nH jŸØ+dˆ®DÓ`REÊ‚¶¶¶-[¶ÌÍÍMNNž?þÒ¥K sÇÁ ÈF)uæÌ™žžä=hmmmjj*//Gvf<  -œ¤%uˆ¬‚9+PŽMÙŸíÓ]NØ‹¯Oø@Þ0g+ð2 u¦M m…ýAe/T°Ò2 /cùVœŽœ£ØgröäŒâñxkk+UDó½TÎlíæZ«i×Û;§V«¦uÐbd3@WXKrưc[š$–œ-í3¿i‰Áis¸w//ŽYî—dåØ×ikÁ V°‚¬`{¶Ì)è ²Wõ, ªÈy =äP(455åõzï¼óÎææf¿ß/w·ØoaF‡††.^¼xàÀ'NÌÎΚ¦Y[[{×]w½õ­omkkÕÜÛÅb1§Ó)p4oV–Pû/= ChOà[°º K1ŸËع{–·•O—ÇÂvw—Rñfö1¸D^äí&7ÇÊvÌ®m÷eñrv6eE:P­I˘¶Ãyz¦ƒ?”™˜$ï&§¥²ÝSƒ«<ÇË*Û‡‘Õ%Ñœ—±`étzvv6Ðo®ŠýMÃhG:·ƒ ,w†ŽÄª“l Y¤Œóg>ßX#Ù ,¾*›ÀëáÅBÊÙÙ”pÑ¥ënˆøÇœÍ^|f²ùòõdû|¢²Ñ1šÝƒÕØXšî²Ö£rÖ[ÆÊô‡7š©”ŠÇãÑh´´´AUóóó¤pÊwaçd1˜^–Gû•C$Zew͉Ö-c@Q¶@›îrÂJL˜ùú¤ì ÚÏí`ýéÊ6Æ—áÕ–––ºÝîŠŠŠ–––­[·Ž?~|bbbii)G"¸ÜDöQáÓÓÓ³³³]]]~¿?@“¾²²²¦¦Æëõš¦éóù˜Ös™AĪÈ9Oj ©¼I&‚9Ù4¡#r!×íß|uhÿÛŽá.SÿZe²S ä¬ííì²ö7çF^!\__‰1“ó!gÁò5“¶ÌÉ^mæ"âåü¡Voùf ûzdy,¬ËÌ0ZQ—©gViÎv´Ï´ÚD'²´u“1æ\G¤Ò¥]À´p~£‚yƒì–€·î¸ãŽM›6%‰|àïÿû”RÝÝÝ>úè±cÇnvé V°‚¬`ûE0éBÜ첬ÈìÑØÍÇb±³gÏNLL¬ZµjóæÍåååFvÎDpLG8îêêzê©§^z饱±1—ËÕÒÒR__ÿý÷ïÚµ«®®Û,—ˬdaaäŽeü–|.ŸšáWÌÓ'Ýmߜϥ‘p€Ü§ªlW‡Á_¸RF qO©mÍ¥'l (Mî›sî§¥¿do&ûfÚgÂÚþÞLh•,¿ÕÜi•«?ç{ ù²Ž\ªºò)ZaˆVh g(úm,ëééñx<äj)¥¨J–a±ó ÁP¹ØÙi°dýcP¬±ÿVƒYesç«y%œg&^”/.q"ÞY‚†ª";¶Ö+” Ó%Ö.`í±3k‹Z«Ñ#5l1P†`~ñ9'ÃŒÈz©ô|ΧìlqÄ•R‹‹‹ýýý£££õõõ§¹¹Y“·¿/߬½|N;bwªåWvÌBö[Ù¬9«NM´š7²ñwûÝ–÷À—©ó|&ûžÊ“úSY<ˆ .--«ªªªB äèèèÅ‹'''sÁ÷æm—––@醨¢ßïollÂåp8ÀηFh5l_{ýk}iù¥Gë½ËÏ¥òÊ|-n·åë_+onZ ›¶Øå{ÓâϪìG+‰ýV$´ˆ—ý!ßCíõ£}b_krövšýÜ(çãìí«}Å™Io0Jø[Û*ø©rÍ™9gØ4:í뻼†kнZø7IàeäC±3Y\\DŽT{v‚ën·¼UZZúØcÝÿýƒƒƒ“““¥¥¥Ï=÷Üÿ÷ÿýŸùÌgu¬`+XÁ V°×h9wZ·‚åÜŒj;l¹›˜˜8|øp<ß»wokk+àY¼vØ.—«¶¶vÏž= õõõ«V­jmm­­­-))ÁþB÷5g7–¹ýu삽Js¶~Nÿß°÷CDΜ9%?w,+Òod‡¡I 9ù.z3M“ªpJ©ºº:LþÍÍÍ6l‡Ãsss======“““˜–qÎÁÂ,..ÆãñX,666æp8\.Wsss{{»$É.ßUrF²J\ì­œH“$ÑÈ\j{àÙ‰Jì} ßCµ.!öíß2¨ÖþU¾Žªu­ÒH ’±{¦%ó§Ý0ç´ Í'ögÙ(×JíÝíU$ûžv“œ• Ǧ†(-Óì£X[òryŽy¥#—?G–™ÝESZ0EX1@aœâçš`1 ”šSîð:Ú-o)¥¶mÛvþüù¿ýÛ¿ýÝßýÝX,¶k×®ïÿûÛ·o¿Ùå*XÁ V°‚ìĸ/‘2I·¦IOOn›–––’ÉäåË—/\¸P[[»cÇŽ`0ˆ„îø!Þ‹X€Ûížuï½÷BW **¦Ò… P8Z4E>5%ÄtÌlý ò°”v’9¶Pry‘&éox’.+52L GJ\MOOg2ŸÏ¿ïE¬k8Ж^ºt™T¶ÚŽ)„º¤Ÿcf³6L‹ ™'mO¯9ÕÒµ›c‰.I]!†.›àù?.“xŠtbe3"@Un²ñ¦ˆó’0“æ3Ð’X 6GNøŒwN /ZY¾·RÊívã>Pø²(6ȃ¸bpd,£Ïø8zzÔtSÂ+cuiPß]e{_öî§DÈ$åüÙéµ:”O— ðN5pâYL-gdë+¥(7Ʀ—“†p2nK¦ÈJ© Í00'§“¯¹¸è¢Tc®=V&âŒp™ËåÚ¾}»i¼`1H8ÀÈÏ”c¦Yùß’’’T*e/­½¹Y>žL&ÇÇÇ'''gff°ˆ¤ÓiÒ-)õÇÙu•Rˆ™å#d%3 ~ydvÓ@CYŸò•¥Ä’ýžÚ8Ubz笎rš–|¤„Yñ EÙìP‘,­\b´¯rþÄ~„E²7²É­†%#ȧżk@Ïäx—ù=´9gÇS¹–9íJíoB®ò¤„HkX¾ TÍS6>”4Ö¤¨!qÊš[øîriÈ7ð&؆mû¶¤_Ùãâ9qq_”L&–’&… Õ´[ÞRJÕÔÔüË¿üËÍ.EÁ V°‚¬`¿˜vÕmå-e<Ž6,~¶J===û÷ï…Bo|ã;::à9 !P€€R¦¥¥¥.— š8Üb4q´Ø¥Œ-ËwϦ8-§#ͳqn^%"#[Aâ8Ükê9*›Z?Í4Íþþþ¡¡¡M›6µ¶¶–––ÂõR"š@‚>*[Ws‡Š,“hZÎͽæŠkÊOŒl¦’i‰ISÂVºÍ¼­#[¦WºÜóßî­IÇÈ>¸&¼¥„kÁ:—•j>gÚq·üƒ ŒÊ•½ŽÌ ‰ÞÒ·ê<îæõzš(}Ù!`q£\‹æÞ؜ɦ‡³*µÞM+5¤Êž+$Þggm°!€Í!)á'\#…Ÿ5L¯£)ÁkCƒÃœ~Z>*“¼•ìÒÁSÙ>­ö.ø[“ý¶÷Þ€%»(ªn~~>vwwŸ?> Þwß}@€•/Aºœ$]ò2bdÏ'üG õ\LãˆÙ¨´l Ù4¦Ðó’Õb.KS£eÜeNœ…5/é™åÀÏ/Âß^ZZŠD"©Tª¼¼¼¼¼\Yºò2 h(¯%‹’¸\®öööU«Ve2™………x<‡§§§§¦¦úûûÇÆÆb±ú0Ö¯×KM:•M5Ep–Ê…éØçÏk0Càïö¯ì°‹®å¬Âæ¶C6²æÌj('‡ƒ¼­6–íeÖð{¨c&[SŸß²Moiz9+J+‡Œ}à³>%}i™Þ®òÃ[Z¹€ZÉäµw|¥¡]F¶è¤‘o˜s¶ç´`ZaÎùP-euãŒHëaX‡1\ÊÙ½©ƒ«‹h_¤aI&“sss‘HD)å÷ûËÊÊò\w»…à­‚¬`+XÁ vãìç Þ‚Á¡dûÂÂÂÑ£G>¼aÆÿò_þK}}½æ¼ÙMºOL<‡M$ó b›èt:ñ Ïä5¿Î´¸o¦ 8È›ýèX+‰DCèÎÉk–ñ1°íF¢(·ÛMA‰3a A_ˎ€£•\åßõJý#%ÀG¾¾ôào“áB¸PÒÄX«Úî\‚ äHøÆÞ4Z Ë—bù!Ǧ²eq—qç¤û¡DewV¥‹.÷î¬y»–²tÐH4(°´´”J¥”RN§³´´TóÁ´‚i~i ¥‘5¯lÈ‘Ãá Ú«Ä!¼cY é+AH4,‘ðËŒ‹äHþÅ2Oç»8l"2Ú´7±Ý÷³ÈÏI ZÊ´ãàßw#OÍ0ŒÙÙÙ©©©d2é÷û=O2™$ßGv%(rÊ 2+HɇoN§aåßÄMàp.ÿCí&Z‡YY‰±ç‹rÕŒÀÜ2w3M³¤¤$ õôôôõõ9Ž;ï¼³¢¢"'Ö)çCy~`‡W$WÔëõ644 ¨*‹ œ={¶¿¿?‹%“IÃ0ª««IÆÌW«Ę̈¯Ö a‡BʃaµQ¼òGhw–ßjy~ u7ç„lï6†€sïÈs=µräDvx±ýMó-Ä’W¥ò/ 9Ÿ›³¡%ÎÓÎ Úòg ‰ÃB µ7âer–0ò¦r¬ÉsŽh‡•ß9ާR©ŽŽ‡•”–3›i±_“É$ÄÂÆÎU AÁHÊYQQaFee%£Ò~)2'¬`+XÁ V°m˃/+ù¹öÉ :‚“Þ”Œ¶‹ÇãG}æ™gêëë?øÁnÞ¼™P…dÚçÜÉBG:l<®ä±­Êß“~&½ Jnk1nDr"/*Û¸êá°üʴ”JKKW¯^ÝÐÐà÷û™Y\ ̾ù–ÿ‹í5C´4xËîô’žÀzËéQ°Þ¤éºc áQ6lK뜄 ì>v>¯Cz­òzMW>4§§ÓÉçíó´_Ö6»Š²¼¬gäŠC˜[__ßÄÄÄ–-[êêêòÕ°‘ÄÐÞUØdÔ2Eö%"CÉôÑgʆdÁd\¡²Âð7¸BV(¸&K¥y¤!?hŸì¢,BtÒìƒn™‘efÇ0Ú¿•m§õÉ||:¶5véT*µ´´ÔÔÔÔÙÙ L·œî«Ðd&;@¾wQV K÷Òa˱ÌlcÇ}ì®ûò?·"• ªÊ+íMfZT8èøÔJˆÏ‰DqqqSSSYY™Çã1³ƒ Uöx±w‡Ð¼ã”ˆ5Ï€S·Û]UUÕÞÞ>===00påÊ•T*ÕÖÖ†ØÆœˆÊ^År¶—½öŒìc9^´®k |Yå·ƒÔZMj÷ÔPžœÍ„_™U«á|pžÖµ–ß< 3k*“Ú /§‘eX‡fW¶¹]X¹È7TžÕ!gõbó _AÂ[ü•=°TV¯,·+²ÑµßÚ‹ªló¤6eÁN877>; Ûè<ŒÏÎÎVVVVVVB RYITJJJ@&“I§Ó`tâ>7ZxKà­‚¬`+XÁ~I,'‹äÖ4nñÁa)**ŠF£ÇÿÒ—¾455õáxçÎH_E)(xB^‚&ØÆñ’¡[tã%¡FÙ(*Ûw5,À‹KO’Oáýµ qΛ˻Ù}:Ò n)¥@ù1³…Z%BgXÔ!{»Kb”,†t*´í»t“ìΛ¬†|†¸-‰‘ñ˸CÒY5²Ã—T._Zo›±òfljZù—q;íxŸÊÆ=íV6gŒµ¡½‘l£ââb·Û]SS333sìØ± 6455QÍîJi½Es†ñ¾³³³ ååå^¯×î‹"†W ÙØ=+íÝÍì²3À#EŸ”1§†a,,,„B!vƒåq JjêÔùšILÍeÕšXö=#{+'Û(g¤AÓMs›MÓ\XX ‡Ãµµµ>Ÿ,Ó4µ´‰Ê"m)¨Å°¤r²]ädRRR‚˨¨,8Róð¯jö#'¼%{ ÊžÇì£&Ÿã­²§”|5ÌË2™L$1MÓçó!B?wXyHU¼IÞG{ ÜxôaÒMK~hii©¼¼¼²²²¥¥eÛ¶métÚëõ’*»òеW‚”áz¤µåœˆdˆ·}¿ÕK{¨ltN¶ZøÙ¯„·òõ–å»–ÊŽ=W6tËw&[Og²3ØÊ—¯žå»Ë¹K[‰T®µI.ٲɴµw‘H1G4Bì½"'C“jhæËYíÚÀŠ"ÇMþÄ´¨ì5F¸Ïç[»v­!`oaG‘Š‹‹ËÊÊÒéôÌÌÌÄÄD:®ªªr¹\xÒÒRÇ]TÌNLÿjä§g^/+À[+XÁ V°‚ý²˜qMa ¯C©äyFD{‹‹‹¡PèðáÃ_üâ{zzÞýîwïÝ»'‡N§3™Lâ´² ¼”`~ö’ΞÍÁš‘t‡£5²%®É•Å6-wo†Ð¼Èy2Ï—UÙ»p÷gXÌ‚ÒÒRy† †sT¾© FSÙ»¼²CHbB$KB?¤–°«`wkZ±™Ê0É*eQc$A‰Œž|ˆƒ!Ä­Ð.ÔF%YLÀ$ß”>_éÏfgggffªªª»–ô2ÙÂð*Û?Ïg+5˜!‚†ø:¨ ü ¸©TJJ€#îÉçóÝqÇçÎ;uêT<oii)++Cô‡DY~ð³$¢ýt:=>>þüóχÃáíÛ·ïØ±ÃívS NXŠ‘#«ÂÈ΄Eb Z\f.#(v…ƉDÿÙ³g•R[·nmnn¦R•a‰Ö˶cÁÒé´Ëå’y8¾d[P™^"†*CdÓ—––"=ž›Ó3—¬ºœ¾(dÃâ³àþétÚ°8qN§3‰ >ûì³UUU===¥¥¥xk;`Š{Lq¹\ÊRõZ\\;ŒZõ€èi J˜V9pþÉ)¤µÞ-碜°‘DC8Ip×° mË츀Ú3—V>.“ÉŒ_¹r¥®®®½½ D*•‘“ydfK¡«q4%tÍð[ÇŠ ‹ÍºµkœÑdü² ¬ÜVÜ"©©²oŠ`=eñ@qg r:b£`ÑqXzðÊ6i³lbç‘+ÖCLKKQ DÒÞ+” ÃbshQùÇY!¬IÖ€\.ÁÃå£3Ù)negãOP`CHViR€l_þ–£\ÝìK¹)N2øP4 @g. hYîUd‚N9ÊLÓL§ÓétÚï÷cb1…®%ª%“QA6·:œ(” ØÊU½…·-++㤊îG¥yn'JJJ‚Á ÓéŒÇã¦i–––ºÝn\\RR‚eXcEEEg%#ñš­o¬`+XÁ V°[Ȥ““J¥fggüãùË_ŽD"o{ÛÛ~í×~- jÞ)öÇØÂÊÜ[Êæ£â+GÅhû'ö3U€JØ1ÛFæ"vÀûðœÎÀ ½/î¿íc0ÊÑI#ÞiéŽæ|k z3mÇþöêbœ£aŽáâ•Hlh¡æiäl{…(Ë¥;”Éd^|ñÅÑÑѽ{÷nÛ¶ X À •Kéûƒ4R[YƒsšV“üÄáp8NzžŒ·BÙ*++·lÙ¢”:qâÄÌÌÌÖ­[Ýn·ËåÆA°IªŒÓÃýgffΟ?ŸN§€Ïç3 c~~žt?Ü:Y¦•GLkˆœoAhØÌE “¿J&“¦iF£ÑË—/ ŽŽ.--ÕÖÖ666Ê–•?BM€ZG2tí€ö^µ©lØZ%íƒôÕô•%4NOMM=ùä“§Nz衇&&&:F?ð¬^½Ú°…²”•ƒ¨Fˆ×öÒüvéçÛ§¬«†?ç¬%þ‘%—Ugïíùúü«5ÓÆ*UJŒŒüä'?™™™…*`P—––òY²"Yg¾Æ]9òÅfZ+´ãkZU°x¿ƒ&7AùŒ•ÍJ| åi4Æœ…7˜›³“Ù \~+aAV»¦ ¥²çaÉ«Za+KGë`¦88ÑzŽì{‘)E‚J9Ë™³ºÌei¿òTK&;32{”ýæF6/›‚hoãzÁÃ+ÛN–Ÿ7‘óUÌìü¶Zó)Ä-swj=Ÿu+«tùÞ¥¬Ã$p~KJJ|>;hgZlž‚\ÛTp V€· V°‚¬`+Ø-dôá3™LWW×7¿ùͧžzª¢¢â÷ÿ÷xàÄ$Ú·†J¤·ßçœDaäv'Pn45ÀÅL.ûv Ô-¹ç–·ÒQ­Ë%r—¯Å2H7@^¯=T"5šË§q daäòqZè «;i•-"¾L[çl,e;—n•ö¹iAi¦iâh}qqqlllvvvÆ [·n­¯¯—|™œnyF¤&äe91,Í©[æ5wE¶;S(¨¬¬Ìétº\.ø$»vír¹\Ï?ÿ|EEÅúõëéNÐUѵJèûúúº»»[ZZî¹çzV’Ê!»„Z™×ÁŸ8¤%½ê¯¦§§_~ùeŸÏ·gÏ„±!z%'¼¥=¨´´4‰”••% ŸÏ§Õ*jCåâß-S~eÊ";\3¶¥²G7À¡¡¡sçÎmÚ´éÎ;ï ƒ“““ßÿþ÷çææT.7›*xp€‰ÄÌÌ @O¿ß¯rͪ“©5ÖŒ6ÿ\•Ó…½2—Aáåœ&ŸE8`…Ì~OÉæ[ZZ ‡Ã?þñ{zzÖ­[W\\|ùòåÉÉÉ7¿ùÍ­­­F¶qÞ*Ö‰iš^¯WÖž²è*F.žQÎR‘<è°¥ÍY'Fv,›VÏÂ\¶p碢¢ÒÒRÀîhbFxi…×:^¾1•±%IÜ+щO0ÃhIrT‚ͤ­ *Ï ¶wÙ%ÈÓ§²“H(=ÉÇI0Ek”œëK¾²©ìiA-«DvÕû›¦9??v”Ó‚Îìë‚ì<8ƵW啦UíÈ“·Q{¢¦ iïBr5ÔT€¯Ée”\uSð¯I{-3í ­o¬`+XÁ öKard®àóµúè£Ï<óÌš5k>ò‘ìÝ»}Å=.ƒ ¥Ø“>þW ²ÊM[Η¶­W|ƒ4‹öP)Æñi^¢Œn0³Òí.m÷IäWò[î;y|jX!‘ÒȦ`ÈjU*}TY¼•t_1Ž ðDa8²ójn^¾"}f­ùz‹FÇÆÆb±XkkkeeåÒÒ’ÓéTJ”‘Ç0ŒyÔªB+¼iÅo²<àaɆÐÚÅ΃P"S!¶þ¥¥¥ r öÀIÙ°aÂßï7¬tx<0'"ƒÛR$>™LöööþøÇ?nhhؾ}»a¶Ø’hˆ¬­ÙÛ(çP²ûH²óÄãñ_|1 Ü …Î^Îù‡¸0þt:=;;kÆÄÄDGGcÙèöKøCó¸ìCIþ­=š!9*1×F¥ RÓ ¼3fýÃ#@X»çž{”Rµµµ¨©mÇ; -ðIqqq:îëë;vìX(Ú³gÏÖ­[H¾cZfÏéîæl¯e&½~žsêÏ¥çœ$Âû礻f2™ùùù+W®ôôôÜ{ï½Û·o÷x<ÝÝÝ'Nœ…BÍÍÍvèÇZöøëœ=0çÔd·ÊÙO8åšÙ‘kÚ³L¡žL&1~ãñ¸RÊãñ””””””D£ÑP(ÔÖÖ–ˆ§MæÚ{I4Š8cΡ!™?gÏ‘â$¦IJi]KÃIQ›³[j›ùÖ,˜ÔÊ”ýŠs‹FЖw+Åòƒ‚•IE6sYʪ6œÁ–5mI*¸Q!*$û•¼§Cä$‘kÕÞvÚ¨1ÊeeʶÎ×íí3‰!8Ú„A±Ö£TZžCØ77È ðVÁ V°‚¬`¿Æa{tÞ-eØH-,,œ8qâèÑ£ÉdrãÆëׯw¹\8‡‡ÿ‡Ÿ>ì®”µ!ƒ3#å™±µ"“ß°Äž4g@î½2¶dFJèd™B Ã~laµXB]š ¾%}Ã,-ÂIÜÍkn¶!bÓ4E*#›[$Ë)·Ô”î²÷ Y<;¼%qy®+õwø8ø¨h¦œBæ,¡™-"&Ãg˜w‰è¹5•R©Tj``àâÅ‹ëׯ/++ã5Ò]!œOP„"ƒ˜™My“Ÿ(K •€ƒ;xÈß Æ’®õt´³T*Àkaa¡££ÃårÉvda4ý|266öï|§¯¯oÕªU333N§³ªª U$ƒirÈБ[XX Ê0+¤ ˜1ce' þ1{{*•:qâÄsÏ=wÿý÷g2™©©)¿ß N¶{‘¿¢B@Õ¬©©A¥²PH‡%ŒŸ'“I°ÞLÓœŸŸ/))™ŸŸGö@%Ø+è<˜57EB‹h:;ðQÑoS©º·}Ê¢^b‘¦§§Ngmm­ÓéDX·n]0dÿ‘!¥rDÄãqdزeËüü|ee%ä{ì°‚òÐë$|ãÈNÊ©‘Pä,§uY!ƒ†¢ ­Ê!ƒÚCðàÂÂÅB?tøå<#§kb²ÑhôôéÓÁ`pÇŽÕÕÕétÂÕF6JÖ_²Ö„॔!>±ót4@A ìÛTm½úL:’„ äYáèTSSSccccccÓÓÓG­­­]½zuyyyEE«r%2³9hh"W:­çSc‘åaisB†H…‘N§‰„Ûífp¨Àbqq±¤yrŒ¨ì4²ÊŠõ–©`•¶ÌlÞ'p–ÜÈW„t@YY†!÷†%\ ²QlÞ„ë²¶1Sÿ¶W¦l9í wQµPYÛååå|–ìD£´ý€ÖöÅ—ŸcÄáq¬1r¢Ùsø+l-ä9ÓL"M­‘­Ô¦M)¤Ó²ØheCânœà­‚¬`+XÁ~)ì2=I»¶_]Ûƒ°ûÙ¸qã=÷ÜóÜsÏ9rdÕªUûöí ÐZÆ–Ñ~¢¨òDùÉý±ô£4‘àT¾·–n>ȽÜÚÊ=ôU+ÓÈæsÃbÉ5÷R:f6}€¦vòøu@(¤n±öv2 ½¬Y‡Ü¸›â+!Ìdo# A“¨‡Êæ&\Õ©ˆD"‡ŽD"6l‡Ã£££Á`Ðçói„>û£µ[i•)k’p1—Œ%Õ¯ÝSTKC3ÙUàEP\IŠŸ?¾¾¾¾©©‰OÉlbšfIIÉÄÄÄ÷¿ÿý3g΃ÁÑÑÑ‹/VWW?ôÐCÁ`0çX°wfùúR½Xv!­Qhôj”RÃÃÃ/¼ðÂÄÄD<?tèP<ß½{÷êÕ«oÚa² pÿXHÔ ~.Lz\RóÅ>¨sb4Ë ­‡ ]žCÇ&¦)É ±X ß™ŠÇ㥥¥[·n-//§Pd,˜˜˜8{ölCC‚jÓé4Èz¬møkcGº»Ú+,óvvÜJë0Ý•¿•ӯʞñæççys0QE‰DBeSWdaìs²ÃᘟŸŸššº|ù2‰  444ƒÁ……¨ .S$íC•žÈ^!«Ñ^{5jM MÑüyÎ07 ‡+W®:t¨¿¿?“ïãõzׯ_¿wïÞ 6ȃÃ0€Þ*K›‰µ$ÛQ¢~ö–•8¾\A´oïÊÂ80YUTTpêÓ 9-så•$Ùe–#iÈÞgäT†O$H‰õTþÖ>:´Ú“d„¡ª!—¦-ŽöŽ!MlZyŠ@ ìkºÖ?í¶œcVΓ2Q£}­Ä•\”íÀކk=Gm€Ø_D]mz¹V€· V°‚¬`û¥0;äÖ4ìÏJKK·lÙRUUÕÖÖöøãÿßÿû»»»ßúÖ·nÞ¼4ÊñJ¶…‘M ¡ ‰¬¹ï—fZ„))bß\Ê“gºÇ02ÈTöy»æfË bΑÈôc%À”â1³)üÐ~œN§áJÑ9çmsÂJäuÊØò.IÑ_‡Hb¢„ü–¥’ÜÙ|ö W6T^&¿J§ÓgÏž=pà@kkëàà`iié‘#Gn»í¶={ö°°<¼3”ogZ§è|;J Sß Eqq13ònìp>Iá‹›"J ¢›Êĸwww&“ T[Ï7j Ãèëë;|øðš5k~øáºººÃ‡9rlFÌåìíDˆ¤ß 4Ç´™ÖoiöZXX8~üø©S§ÀØØØsÏ=777÷ë¿þëL˜ÅZe©dß0…ÎoNÓ­”*--ՄɈ—±¨„â³P€†ÅVÈéú»Äaåf•ðr„ñAä²Åb±©©)ˆC577{<t\/‡'²<ÿüó/^ìëë»óÎ;q}EE…Ä —qóÁ[²ÕrŽ,ÃFÝRÙP‚¼§‘}B`Ÿ+Ø¯ŠŠŠ‰D*•Êd2±X ¸ÔåXÏ9»vgF69ÎÒÒRíG"—˵gÏžúúzP„ì3Œiƒù䄦E‘Ë” ŠVÛZÈž!X]„Tì0‡|#9ÓÍÎÎîß¿ÿܹsd¡xÉdòôéÓeee---.—KÆl¢w‘^‡þ¬ñq´¡¤Ä\­¡Nö9A"õöI†ü\¤}GRë¤hià†׈eÚÝ »3{•²Éø/øz©TÊ4M-åÐÐ^GVˆœ µ:áÎ ä™PΊ’Ê€Žl±3äEu¹\J•SK¨ÍöZ{Éó3Í@ EŸ±¯°f6z»ü+(‹–%ÛW–Aƒ 9oËMË2•sã¬o¬`+XÁ öKaئätf^­]õ8.p³cœNqqqGGÇoÿöowtt|ýë_ê©§’ɤÛí¾í¶Û‹¤¬`%{*7CD™É›ÛEXd™íž¼[7mª„æ.”؉ʈ 3›¦²éZ9Q{}ËÓv‡ö=«žìo„‹Åb åååN§“Q$öM¶}kK¼Œ…̈Ìô26ÁÈÁCEñ}íP#vÿš³$ÿ+½PC0LÓœŸŸŸ˜˜8pàÀâââÎ;·mÛ¶¸¸øôÓOŸ;wîöÛo—饤oÀ’kõiZ¡j²ö2V"-ÐI†‡‡W­Z¥(™‚„p¹\òn¸QJ: ÅÅÅ{÷îõûý>ŸÏ~/ ÂL—.]r8o}ë[wíÚµ´´499ùÓŸþ4ã a“õ™YÕØ@ÌA)Yÿ|@—ÍÎÎ?~¼¼¼ü]ïz×wÜ111qòäÉÁÁÁH$RRRâp8ÊÊÊä •ð«"k„Ô™bcå ¬†°—)râzfà#´ÁE,n0|oJíȪ¬07§Ó™ªsh&ÉL4 (LGGǹsç^yå•`0ØÔÔT]] î’iš©Tª¬¬,™L‚‚GFFžxâ‰P(¤”úéO …Ö®]{×]w!פL­¨„ÃldÇ -ƒd-ó¹Ý4wÚÌÏ“wfäéÂÂÂÜÜÜ¥K—z{{‰ Úööö7âÌ÷PþÍîêr¹P‡çÏŸojjjiiQJmÞ¼¹¦¦†yåìÐÏ'´™W2A§z•‹A Ëj=Ê^ÏöSV¿–HÙØØX4Âoélšf<‡V—Ëåòx<c5²Y™ZáµeÂþí2%—ñ€™L†iåOÐ vqzNªw–-®Mõ¸R°Z8­†Àr†§N&[Y_[d—Y y™d3IÌIXÓ~ð”“ú[II šÉ‰nìÃ"trhpPÙ´ÿ–Ç[~I•½‘°O¤¦¹ÌõH“,P–>€i;5QÙ®U½<¨}½¬o¬`+XÁ öKaˆ¹*2u½,'p°ã¾g°N§sß¾}MMMßüæ7<øÿñ©TjóæÍÈÂ&U™atuT.OLnõrÁI¡ ÚP6—ÏÒ”·Èز­Óí‘ ›ôNµŸðA²¨RGåñUtÉpå·J©T*5>>ÞÕÕ•L&wìØÑÚÚ*Ýò›$.@÷•ÏÒ^ÇQ{Rj„›lI›’Ð’ºQ*ˆ0ˆ2#tšT¶2zôè¥K—öìÙ ‘‘Mîã©£”*¶Œ^†üñÒåCU;ÎÖÖV^ϸ¼œcmaaattÔårAȱ0eee` É+¥ÛIiy;’åIåØÜì«ZåÈ2;;;66ÖÚÚº~ýúÒÒRèU•——ûýþ²²2 \²Îið‰¸I· ŸËø L¶z7ùÐ{«¥R©ÙÙÙÊÊJÃ0œN';9«š¤<Ü*™L.--•••á} ×:„2º²‚ÂÈ&£ªšiÅŽáÛÍ›7›¦ét:@YY™i¥ƒ-.•Jõôô´µµîÉd2¥¥¥N§³¨¨ÈëõVTTô÷÷Ÿ9s¦´´4 r†Q‚](;ˆ„²ù$N!ÝK ¿¸ª«ÉŠÒ¢)µ ä[XX…B?ùÉONœ8Ç9™œ?~vvv÷îÝååå9K¢=Ú*KÁ`pïÞ½ÇŸšš ƒµµµ`™V­ÄF%¨²]zt$¤ÀO4¤ÞÌ>Æ(ñ;è»á·€-ää)á 3Ù<•Øx8„Þ<ËÀ¢¡JÈiŒ*¼&©Ù77çñx|>ŸÓét»Ý¦irb…S™ž‡Bû„ðw0¼çž{CMŽ^QQ‘Çã1 cll¬ººÚëõÆu¹\õõõûöíkooïííýÁ~F¸#†"g9¼…-•É•ùNȲü ú½+‚œú Á+¡ÜXWWב#G€l”;vìXkk+^ÿª AF¤Z+**êììliiAÜzYY2òhS}Š žµ´´F1<å´¯¡$†TË–M$ñxá"÷@0ÁÐa-Ù‹!ÿFnP%0DÙRC!T/¼Ž:tèüùóÓÓÓét=ðܹs›7o¾ï¾ûêëëeªùú|P>‘J#;ºSþÄ>èäÒ#ï ÄJ§±´X*tíeei%ýJ[ǵ¶Àƒ¤@¾²ÖJIqBÓhoAtÛ´„ê5¸ŠRâЋs”6j"*Ç‹²®´д´ØåfI"éhkR±ä$ ˜ zí€kq ©jè蜕6lI sºŒ•À+‡‰6ØU66§ÄœLa߉]uà¿v+À[+XÁ V°‚ýRØuÜ[Ùì;âðÚ·2r?„=Ykkëý¯ÿ5N?ùä“ßûÞ÷ªªª\.4&®°“…Ô¼hyM¾ È“eÆÞT Eªœ%”)íòÉ‘ðAô`µ'*kC¯‰iØÒÒÒÜÜ\ww·ÃáX»vmee%Ùã 4D¾v‘…qˆ|R*Û7Ö^>~úôéêêê5kÖqÐè`Ò;²ÿ\Æ.se¾žlZ'ó†`-ñ'@çç燆†|>_4mkkÛ¸q£×ë•©¯”%ÎbF"‘¸pá•+WÂáð‚ÏçÛºukMMMuuuii)ó J1øœþê3 VUUÅb±p8\ZZ:<<ÜÚÚºeË–¢¢¢t:-“¬)‰@Ö‰½›ih—|: Ä(„ü¹\®ÙÙÙ£G~øÃ–>Û,ªD"ÎÏÏÏÏÏcäú|>Sh÷ [*‹ßÏ>Ðï-**r»ÝL‰O2Vf=¼È¶mÛ¼^o2™ÄÃÃæi>øàƒ=ôËå ‡ÃeeeÄΔ˜l%³Ÿ(Ûä&kÌ>´e‡Ô  Ô—è¹iñG E‡q8‘HäìÙ³ÉdRë6‡czzzrr²££ƒµ·òyBæà^%“IeaÅÅŲS¶Ã 9XL‹C§…­io->ÙÃÓé4´ÿ{{{çææ Ãðz½«V­Ú¼ys[[Jbžù })ß`w8 8M!´=11ñüóÏ¿òÊ+€a™LfrròôéÓíííMMMrR2³$x½ì ù,ß³ÃËb+Ûʘóçù>'ÉŽˆ°ÊNñ) ¦i–i}€`²a¸òJû[k5&¯×–W9²– Ö*DV ï,Ë£ÝÖ8ifŸ:(Á4ätš!³ß8,É3Ó’ª”â¤rå¶giÊuËN.W¹Ñ^v½VÕÕæ¼U°‚¬`+Ø/…Ù=ö×hÜÙuŒ×¬jX+yÞõ®w ½øâ‹uuuà›ÈF¯ê²ù0ÓâïØ©þ¦åSb«-w{<Å%mÇÌ>ОŸŸw¹\2‡zΪV´!ã¸ÅÌX’ç0l¡™L&‰?~öØcÃÃøUqqñ¡C‡n»í¶‡~¸¾¾QWËëÚ¨®®Þ±cÇéÓ§/]º±¼‡~¸¹¹YYA”äÚ¨lZsõùtéJIÐӎʲe2·ÛýÎw¾óøñ㨠e1>€SƒÅÇÓé4hY.—‹1A@ø¹ÊãêkFš!ÇúþFÎ5ô·@ ¾ššš*..Þ±cfƒt:½víÚššþÜ´¨7+!c¾ÒªÂ>¦$ŒÅ±@È‚aàoF‚–Àphƒ9K•N§£ÑhÎ>¿Ëd2‰Dbfff||Ñë~¿¿¦¦FY܇Т“Ï^ –_II fFæj!Š’­#Ûtii) 8pàØ±c$¦†188822ò–·¼ä2Ìä+YmÁMV¹@Ã0ÊËË׬Yãv»I;Íd2CCC§OŸN&“à ÊëÃáðÀÀÀwÜÁ©Rå‚íL‹h,•õeWÑzQΖ’Žr±0=Ð~ó|õ /–‹š„P5ôG l¯Ã€GÃ0@yãB)Ãs"V¦8u`Ÿ1ó£À\ÙåÍlÂJ4–O'`Çm‚¦1áÈÑÊUXPË›§R)r¬ÈÉeብ¥¥Ø ¥R)àø„´Š‹‹+**äá§ÙÊH  P%Q#û¤Æz&þ(Yº×kºüT\€·~ÁmÓ¦Máp¸®®®¶¶6 b7V]]?‚Á`0”ûŒëhñx|dd¤³³óf×AÁ V°‚å°“'OÞvÛm7»¯·ù95¯ÅÌ\ «þdùë 'ˆbqqñüü|{{û»Þõ®ÞÞÞï}ï{ëÖ­»í¶Ûe¸Õħø\ •“»7Ã1§,b”iAÈû(ËóAÐ_<‡(III‰Çãñz½tesê°¸066–N§[ZZìοV'Ò榔•w0M3:tèܹsÛ¶mO¥RuuuдÖXcx”ÓE1²ƒ=ÕÊŽ»µ±t iþ³iEÉþ uÜjii©µµõ8qâD8Fœ„À¹ínkkÓØL9{ˆìBè Ï=÷ÜÏ~ö³L&“J¥’ÉdGGÇ>ðÇÃh;Cðb¤k¤Õ ÅÅL[ø},h^M*•Z\\„’´,sQQÑÂÂÂ]wÝ8¯¦¦¦¢¢Bã†ð´®òÑ£G¿ñotwwãÃ0úûûGFFÇ»Þõ.0\´˜_Ùù5¯†RDÅÅÅ÷ßÿ† Š‹‹Ö®]‹ûC‡Ëîj¿­ÊƒjïbŸ4Èâííí¡¬ÿt: ·3‹!ÁB2™ìhÉ4M§Ó‰w1-êï élœ´ée~~~aa!‹%‰ÑÑÑÁÁÁ¹¹9à­ ­­­åååðÉS©Teee(Âãfgg««« 說,˜oÒ–Õ%;˜6¬´žfd³·äì'*y[ÔÓ…iIeK'– !êÓ%È)TÎÃÚÑpN‡cnnîØ±cÇŽÁ¢ ·mÛ¶sçN¿ßÏ0amЭs:„´8Õð-Œ\RA²ÂÓéô•+WΜ9ƒnÌŸ§Óé®®®'NƒAÀ 2,Ý~OÎH.— LR#;–\)åv»W­ZµjÕ*šax¦R)huß4Dˆ=  …¢Ñ¨ÏçÃH¤j!y£¦¥†ÎæÈN´¢M‰¬7ûüÔC6Ÿ]W‘‹¬Ã¦¾¯¬XoÙÊR\Å3 ÁÝZ¯ ’ÅöµOÌuȳ1¤£‘åDü5§C…"™¬Êæ&Ùª²Þh+¯.þ0lfZgfØÕ$“ÉT*…—Å8Ãà°":†WˆÇãÑhQØeeeœÀm·Cجi…ÓNMMÍÍÍ•––ºÝn¿ß¿yóæ5kÖȤ+†¬™4ƒ•@-ß á_v6Ù2I9¯¯ÝºðV8F”~Á^‹?^)5<<Œ4.eee+ßs:N¥R±XÌçóššš¦¦&`^üª¯¯÷ù|×ðèù—ùÊW¾ráÂ…›]+XÁ ¦ÛÉ“'wìØ155nvY^?“{îë²Éx-q@“³Hòy&¼}ûö·¼å-_üâô£ÕÕÕ­ZµJ‹þƒ·  xK‹œMN°Fs¤3B›N¬¤ÃÃÃgΜ¹téÒää¤išÁ`pÍš5wÝuWKK òÙsƒhXbÔAƒø·×ëò²¸¸èt:•RÐUqX:Ö2öPÛ|Cn‰Ô-zJpÀŠ‹‹ãñø… öïßïr¹¦¦¦z{{ãñøÃ?¼zõj¥½>òƒ”µå8Q ø Äàd¨+Mê[9¬[òÝMÓ„²lÓ’Gac)¥àÅA9ËÈæIi-Mî|p×®]‘J A_’n=¬’…!Gfxxø™gžñù|»víÚ°aÃéÓ§_xá…7¼á ëׯ7Msaa¡´´qI+dDz•”Nƒ7âr¹ØˆÒU“ž®)**e£´´”Ž«ô —––T”©ë@¥—MædçÏŸïïï§«É)b~~þðáÃ÷ÝwovÔ‰pÞˆŽ)K,yqq±¶¶¶²²üšX,‰D(‡î ÷Z /_\†ÉAJø‰È,#hè‹ÒDñèµrRJÑŸ¤Ø ôñ/^“z^Ò‘3- )i¨·Û‹ÅÒéô©S§>|ñâÅññq––––|à»wïÆh_¬¤¤¤¶¶Öãñ=zÔívWTT¬_¿ø8z>ÀJT$“b<¢)väVgÏ”N¾a!VfÍsŒ#ú¸j£¤¤$NKž n‚!–sÎw»Ý••• %ðÿ³÷æáqåÙø{fÑì«f¤Ñ.Y²,ïK¼$vÛqI I $le)¥PÊrÑö¢Ð…¶@[h†ÐäûH€gÁ q;ÆñÛñ&[Ö¾ï³ï3’fÎïû:ÏõèŒìx‘c'Õû‡/Yš9ç=ïy·ç~ïû~¨žÄ 0¥P@É'N¼ð HŠÇGGGóùüÖ­[1ùT#+ìZ®-Å¡ÕBÒXú †®C³=­±X¬µµ5‹‘È‹ÃR04$»P²pu¼ð×0L&Á[ôPZ­¶¼¼|õêÕ6›-™L †L&399ÇÇÇÇùLËIFF{{{KJJèFp”ƒb¸˜ÅbÑëõ„‰€<ÈÓ¤bPàÉþ8Ò‘ËåR©fà\@iyK¢©bùã8­ª¸` ¼å‰‰ \cx Íc0ââø7›Í¢‰’š—% «Õʽa‡¿šL&ƒÁ€0™LX;pÌihÂw@¨Ä_áhIp'šhbb"“É`ÙBëqðNfô´©©)`UÉdÏNK< :ZI9ê—L&±:`$ s>> ï64,F%ÁLÅÅÅ‹¥±±Q£doÐ(c„>I¼ð䌶"fH¯Âe–ì’Ï™—°Y¼ôrÂ[¿üå/ÿæoþæÔ©SHþ:W®¼ ‰õŒŠF£Ñh´»»ÛAžm=›Í&“I‡Ã166v©w$·Î¹2W.²Äb±îîî+V\ëŠ\T‘eyÿþý7n¼Öy÷—¶¶6—ËÂlʸt­îm-|ç1[¼È_^øëòLä/Ð_‰oÞ¼ù•W^Ù»wïÊ•+].—ÝnËGSáh…‡ê*BÄü;T—’™`bb¢¥¥eÇŽGD"«:t¨··÷SŸú2ÙåYr"®ˆ!Ø‹’ÊñÍŸŠ×@§ôªdnH¤j7ìw#‘È›o¾ ô§¾¾¾¯¯ïw¿ûÝèèhUU•N§CÉá-ÉñÁÂ6DQ©{ø‡[¢pwaQp¼ÏËää$ŒðüñÊÐÏ8m¦)Œ!Q¹b&˜`–çøýÔÔ’”=øàƒÈɘJ¥vîÜÙÝݽpáB “üšªv &åX-Þp%fÇ»ŠÊSA…ât;‚DMAŠ255F‘?Ñjµ @}¢Ñèàà Š¤CH&“ãããȧ9#˜HÀðVü[¨ ›˜˜hkkëééimmE”^YYYWW·lÙ2»ÝZʃIþñ.W8U„>~gû‚gÈvšß‹BP”ÉÚ¯Ð5†ßލLB“ÉåZooïsÏ=wöìYò»Á(ëîî~þùçÝn·¬h»t:ÝÚµk=ˆ‡N§€©`Ó4çHL$ÍT8[MÁ ¡©çÈ5 üˆ* «cZ0û„Ýò+SS¨z5úŒÏç+))áø#:-‡ì)ã_IáïLMM=z®ðü¥§Ó鎎ŽU«V¡åe–7ß%–œÁ`q”}²`h Ýx—2i:îíííïï/œð›P(.$>Làt¯ÔzÄ¢¢"«ÕÚÖÖF£›ú³N§+--œœJ¥RxŠ\.766ÖÝÝ­šê©žSSSýýýÏ?ÿ|qq1 íl6›N§ƒ€ŸˆþFpÖSÕ¡–,E‰_éµzNø¡Ì@cñî8“É=$娉P-ƒÁ–%nAX¦¦¦@5†ÇÇÆÆâñ8æ@›Í‹ÅGÚív³ÙŒ«áu b1 %&âV(+a´!p[!p+iºõÍy–I–Æ_=i)7™L˜åœ‚< šÉdÊf³ƒS"!AðR¤ ?®"tÕ`0˜ÍfÄÚ¨g*•‚‘¢Á`°X,´f³Y¾öáât šEù4+ØÆC5¶¸óYQ5cðîz¾=Õì–ëÞúíoûçþçBˆ¿ø‹¿xùå—¯uuÞÙksqq1Ïìý-Óø‡±*¼Èøø8Ü®õÓÌ•wyyä‘Gþû¿ÿ»½½ýZWä¢Ê6oÞÇÍfóµ®Ë»¼|úÓŸ^³fÍüãk]‘w|™]lëÊ+ƒfÄS ¡iæóùòòòE‹mß¾ýĉkÖ¬±Ùl< QíÃøyTPøIo‰éPŽªz²"@Ú±cÇþýûEàù|>¿þúë«V­r:ˆò,Q£˜îï‹À,*iº©gaœ¯Â¼ntYZô'''7lذ|ùr˜^cW òÜ=\¥ºãŒw/ÜÑÊÓõ>²rǃÁ NytØ!(—Q~ !:ÑI`Ž@K§Ó™L&T†8âü¸ ÝTRHIÁ`Ð`0444èõúx<‰DªªªJJJ¸‚k@ ^a;¨:9Á| ©"LްĪàFT3ö^Šå&''ÇÇÇ{{{:::L&Ó‚ ¸PVø±X,œï]OMM!+œ*`£ pú‡ø#ONNž;wîw¿û]GGˆˆrËËËï¿ÿþ›o¾Yš)+âù.HŠNÞÚòypØÇ±Fáh>ó}Sù뫆!åÇDëI’”ÍfßxãÖÖV¼bjX¼Ç®®®þþ~ÄŸôt°öç½ÕÀÝ)R•_|™Ñ²Ta¶j<ª‚I<&w&¢á 1ø(à°;~CX‰ê•¡†…kM.—³ÙlMMM^¯—ã…ó¯-¯äØØØÀÀÀŒ‡ ccc===Ä w´,¡ k€€S©"xÑ,‘N§©V q;$œŒŒŒøý~ù<ài$yíµ×Ž;†×úAhJähƒqZ,Ê”ªÑh†‡‡¡##VT>ŸO§Ó‘H„ß—woƒÁàr¹ C2™DoA¶JH)¹í£V«M¥R¦¢¢¢¾¾´ôp‰iÀm6€Žˆ F ‘*™L‚.„p¬Ðìdj´™dQ°yÊ#£(\œˆ™ÙlV¯×J$£££ûöí{óÍ75MYYÙš5k><<<\RR²mÛ¶ŠŠ Âtl@08‚r°&‚„!³”,yÅ' ?ㄱ©é…:-(]|r@bÅAž «Õ —Éd€x ]Ýh4âFÄ[¤·1²Þãì-üR0ö1f °ºr¹¿âšx.t|ž¦¸¿a˜ð•½p>/œfUË¥(Xš¥™Ô¾çÛSÍn¹îà­‘‘‘/|á øyçÎذaõ®Ô;¸x½Þ¿ú«¿ºãŽ;ü~¿ßïGZë±±±ñññ@ `·Ûív»ÕjÅB›W|7úcBùíoûéOúZ?Í\y—ì®u-.¶Ð¡úµ®È»¿Ð&u®ÌJ9rô6iº«ljBÑþ@a±|ùò]»v={vxx¸´´G!ÉÓmAxà'1µ£`G‹3V2?Ý„"a„@ÇŽ;uêT6›Umæ´Zm,Êf³ ªÈ²Œ-5ŽÖ3™ ö÷ô\\=ʃL1_@°à“¿S´™UaYïïïÏår¥¥¥@ÐÒétSSSCC žI.8§-ìŸïíímkk³X,óçÏ×h4§OŸöxgŽéd¤b4—/_^ZZzîܹ×_½¦¦&ßS~ѱ?§Bä§çD§ÓìÜôœ†¸ ¤ªœJ|w›Ë庺ºâñ8íé%– ÷Åψûûûûúú`h …ÊÊÊV¯^]]]m4q~K0¯-]?hXR¶|펊Çß„B!ìtqp¥×ë×­[WVVF{Vðk`k”œbÄ–âð¢<=õ»êeIÌ——°EY±ö@ ;Î+V Î9%¹ lÊO÷ ‚Ú‚Ôy‚óÐQ199yúôéçŸþäÉ“®èt:·Û½dÉ’|°¡¡—â}€n*³œqô~…¸‚V«=qâDQQQ*•ª­­]¸p!Ø ¼[Ò„’²®^„FÄBš,ÞåðRQæ™WtaÌ ŸÏ'‰W^yåµ×^# ŸÏûýþ×^{mttô#ùHmm-Å~…À©¡¡¡¤¤„ucÞ9¨‡¨‰Lе´¡ò#ÑÚÁl6§R©®®®\.g6›ñâÐ&f³Ùëõ†Ãáááa`L©T öØ”;RfH\Á¿ÉdÒjµíííGæ?K’‡‡††àôd4+**ˆ³I0ŸÏ2@û€·*+±aáp“²+€³yäÈ‘9ˆ .8mÞ¼yݺu¼àX0•l6{úôé¡¡¡ÊÊÊ»îº+Nªªª-[¶X,|Od:ôx<~îܹ>ã°€WײeËÌf3zH:N§Ó@äùtJƒ±¨¨ÈçóAG@7& 9\œÀÁp4;†Ož©ÑÉå™Î¢hA$‹“ÅTË.MnD_¢5½ã Ì_€>àFñi„Ö6ͧšlé%S!žVz šgH¿,+t`Žã:ÔH`Hx1½ Å´äуHŠ¡¤44*³<ÅyæÁÇÇŽ4=½²Äl ‰Œ‰¡ÁÅÅ|â图٠¤aivè÷Ô’|BË"]Pœÿl¶Êõoåóù'žxBQVV¶{÷îŠŠŠ’’’p8ìr¹.ò 8.¸ÖÏñN*’$•””\ØÔæ”õò\™+se®¼[KžÙl_ó¢ ­Ï÷ñHŠ· þät:½^ï™3gŽ?þž÷¼–.t,¯aÉ UWã©»TÒˆâY«Õ’æ² .â†3}ÛÛÉŠ:L1Μ9ó»ßý®­­ Bì¡ß|óÍûî»ï†n Ce¡ì :‘™‹¶´—Åþ˜h‚±º¨éÜn÷ÐÐPOO¾ëv»½^/yàIù¡í¬Š´"˜o7B/~BË#Þæ‚Q–aî ê €îˆDT ˆ4x=):ÂÁšimm}üñÇ‘ÝL(䯱±±H$ât:|ðA˜Úð*ÑÏÔ¤ôŒ„r.[¶ ÉïÆÇÇkkk«ªª¬V+¹}Sg£ S; Á(DÉ+.3©_ñ÷‹æRyTãÊØñR=ñFZZZ>ÌI.Š÷õõõôô”––:N­Jt9Fãv»7nÜ*€"&Ÿ }:SÁ˜™îîY}ña.I(fË–-s:D0L§ÓÀ&ÐbpBçE’$£ÑHþÐ|üè‰D¢Ñ¨Åbq»Ý*ig.—ÃÅ£Ñ(^Ð^2ŠJV8ø«Åb±%L$ð«EÝt:¤Úl6²ð‡ùôéÓ²ÑSó‰H§Ó;vlppö[áp8“ÉPìG5¡·OÚF­(á£Õj¥Ù€ÂN2¹ÃÛá`a| ɲœJ¥€$¢)&&&¡8umHÁ<®c4‘.Öh4F"‘@ °dÉ’ `òj†ˆl6›H$`JTèjn6›9|‰Ñý”,ËGŽ¡9–æjtÚÛo¿}ñâÅ0',…×J˜#þ¥'***} ×çn-–cöÀ+°Ùl•••hB¯ðƒÇãY±bŲeËŒF#¹ƒsh›¯8P‘„ú¯²²=Îñ¡ñ(ކþFìB‚·æÍ›wóÍ7ƒ;F·Š{Tá"‹j%^ëÄÄD*• ‡Ã½½½0¥r8H2VUU˧ ¬àÚ‚t´Ô„5«”«IÓ-ü8ØÇÁV¾TÒÄ&Õ–†™ îFà:Gù2ÇA:œÖDxÞ”êÈJþPYaÉ ñ8þI¡õ‰égK´1àXeàmKÉ…·*Ve ±C5ÕïUˆ9¯6ÿ MÑtMANÕY/×¼5<<<< Ú¾Pñt[¿ ÊH %GVØXBUÇÑR{+‘H9r¤¥¥Ee$ ¤æØ±c·Ür‹Ýn‡W±˜nB)ºˆÀE1 "Ø~ðƒ¤<‚°ÌT’Bõ¢)›ÍšÍf ,Ä€ 7IzøG$‘S p!'ªv>Ÿ7™Lù|¾§§'™LöpI’‰Dooï²eˈçXø²4ÍÊ•+$I3õç Ýää$im6›Á`H$ÀMð¾‰ÄÈÈHGGÇŒ>ÖÒÒrðàAPlÀ ‡Ã:®¬¬L7H:&Dþ: FÑnxv«ÕÇC¡ÀDZ±±d2i2™Š‹‹Ÿ!4H¥RSSSÈ€ƒtšäD 5*4êÓéôÈÈ!_„…z+..†&9š,ËØØ˜|~e‡Ã±råʦ¦&«ÕŠy€ö&“ ]ô"r,"/tL&ÓÒÒrôèQƒÁpÛm·9N  ³ÐP¼¨‘rØÑ`$ï|Â’0éä 6UTC‰åÅã:>}z{{3™ÌòåË—.]Š‹àÌ8ÙR›ÐÄÎ'XzUUUG%ć}v»½¶¶ ¦ óE"‘îîîx<îp8`lW/3NÍŒ‹žššr:&“Éjµ:ŽH$‹Å´Z­ÃáX¾|ùêÕ«Ýn7– £ÑÈŸhÆifu£Ñèóùhôñqìs‚^¯w¹\:nÁ‚eee˜sœNç‚ |>ŸÌrŒ¨ÎBTu@;ãÆ<£ÓéÀÉ“';6>>>дêêê;ï¼sÁ‚¼p_nÄL¦o+2SÿÉG\ªæR}€Æ25^1F.ïZ3²Õ„‚¸Í¸ WC&úçn´,++¡¢ªeW0:×-òE‡vâü¥°m 3âs¿ˆªñoQƒ¨À)¾h¦gªå5áæª.ªú RZß¹˜ñj—ë ÞBB ¸ã7ƒaß¾}—o]뇘+se®Ì•¹2W®Ç¢þ¼ýEf<ÚÛIÓ­£¨ªðDµ½®©©! vœˆA÷-D¯x• #.Ú#±:Ä;@(gÐVØn·cÛ'M›ÍfxÞG"‘£G?~<™Lò¾bjjêÌ™3ýýý]h•üâ$K¡’Ã[´SĶž"1’b:ƒX¢²²Òãñ¤R)Ü…ÒÕ %å)(áp¸¯¯¯²²Rb Jð_„©v P m£’íÄb1„ý8œ'PUV[°.•f‡ÃaµZÁÐÑét‘H!+˜YèÀäòCâAä•Ïd2±X ª®ÑÑÑÉÉI·Û]VVæõzÑÁ ‘ŒD"cccÍÍÍ2T]Q(܈ó‰áÂc!ȲƒÁàÀÀ@(B:ùp8œU °!°Ÿ ƒÓéÔëõxƒxSSS©T*•J$Íßš=ìÚµ !'šÝnǽ¦Éçóä? ’ GTeYniißz ÝOÔÐÐí$— ¿“Wt¯³G²6ÐU\.—F£‰ÇãÍÍÍ£££<š¥Î/Ëò¦M›,XÉ.ž|òÉ––Õ[À¤±xñâ~ðƒ^¯—Rr`‚lƒ(y˜5”¢Ž&:ƒÁÐÚÚªÓéšššÊÊÊ4¬& •¥ Ð’èKðA*• ƒ©TÊn·»Ýn 6d±$“~ŒJtZb“aþ))))++C;òN“e HÃ_®`®X€eùãã­X±bÑ¢EBˆ¢¢¢X,VTTor`š'OžÜ³gÈ››6mòz½4Aq¦ÛŒk"_,$I²X,‡cÍš5MMM‘HdppÐl6—–––••HÅEŠTÁËŒVC ^qe‹ÅBøfá‚%I§ÓÛl6èÑCŒF#5º)Ÿ¥g\|ñ1«Õ SyY–3™Lww÷Ñ£G{{{y „B¡T*e³Ù@øÕ0oAÞ>ªá S‰m²ÂŸ¢Ã^ Ùa*(„–BŽÅ!0L8¶u>¢™ªaywŒdÇ TS( Ñrykðvàû :1*üÓŒ[~5Žg©ºg`q´‘ÏQ*!?ZC…Bpã _Ä ßuá ¢ Йœjó¹hFøìRË…¯p}Á[x%õWEÿîëë»ø+ÌÁ[se®Ì•¹2WæÊŒå|G¬og‘§oÓq®Š“¯ª!‡Qø¶Éjµ †`0˜N§ â)Úð‘¢D°MÕ!Ï,±é‹dºAúp(h'‡¿‚KRXg$w·Ûí’$Åb±2Çáǧpu«®®ö$Ë2àŒÑÑÑT*¥×ëN§Ëår:ˆè•kTÄœ„ñåÙ‰‰ ¨‡!@qÞ >@¨Àäé )‚ÉŒ™ÐU¿¢Œ]–‚è𮆜- ½ñƧOŸƒ€rŠ‹‹—-[ÖÔÔd·ÛIm‡Š9NY–ãñ8ð ²+æZ’|>êÔ©––•V”^G*•zã7(Ðn>¿‡’PÂx4ÂH!„^¯Ç‘àaå( T‚x<ÇQ=$°v8™LŸC£$yD_‚Í,xISqîܹöövà€€® s¹\eeeK—.­¬¬”eÙï÷‡ÃáÁÁAUÐE4@F‹Åúûû(9‡ÃÁ­pŠŠŠFFFúûû‘Z‘’‹Ùívh©øUUU SFä€QHLJiEP4Öl6ÛM7Ý´hÑ"Ø3á If„8»Ýn4­V+®œW¼i$E¨…+'“I¿ßßÖÖ&O§BàŽ=ô×ëE³@æºÆ5·uÃ@Æ(C/2x;ÉdòìÙ³\ÑÃqðÚÚÚU«VQ¾6FãõzáìAH¾UTTT^^¾~ýú²²2À)³†8‘0S|¯žâU¡€è-Àù³åM£Ñd2˜†††b±˜Ùl.))™?~yy9¯0Ý !ÚÛÛ_ýõÑÑÑùóçoÞ¼¹´´”Ds4jXŠBUP&''‹ŠŠ¼^/^–Áñ $Mò!â;M2ô˜Cˆ©‡ë—””¸\.$@´X,K–,Y¹r¥ÓéÍÍãñðlw±X¬¥¥eddD£ÑŒŽŽ¶´´¬Y³†&ô%Õx‘Šf?¡P¨¬V«Ç㩬¬¬©©ill¤¥K!Saáú%3¦ŒF1ËO·´£Ÿi-£Šß;ŽÒÒÒââb S”ý ‡ê„F3“Ä`0x<óù|2™ìêêæíþ<99ÙÓÓ3::Z\\,)69?º=¡ÇÏ+~è!_0T—ŸZ»[Ô”Ö&’S7“YòSÞ˜t\‘cù^ù'm#(“XF —3Ѧøî‚òœWÅþ*‰ªL$@MuŒÄŸŽøË˜–±v !ÌÍ3w3IQ2ÊÓó«ÒsqŸÞ…F±)T¡«üÕ̸SÁ¸¼Ñhꦃ˜"_v}Á[ÈÙÔÔ„ÿöôôLNN†B¡‹¿Â¼5WæÊ\™+se®ÌXTÉwÞþ ¨Q±û1R÷Ò'gĶøod%-‚\q® ÁR°ƒSp1}7F™ãUçÉœx¡ejDéºig 6‘ƒ¡®®î=ïy$$€i8”FMàyll îï’$…Ãá'Nœ:uª££#Ü¥±±qÑ¢E%%%H(N%6â¨-\„P10h ¡DTxL(¿²Ù,[”V »[ð’°¡â!öÙÙl 9øìB  ‡ÃØ7#T€A•V«…«½Ëåëëëëêê"ª‘,Ë###ÝÝÝ0‡B#§R)4uqqq$ñûýf³è bJúL¤¿¿? òSeDï&“©»»;“Épƒ³L&ƒ·8IEÄ㌈Î@6I§Óø>o4¡zƒÌ×1™LÈK…߃ℷæñx€éLLL$ BµuÃ^ ?ûýþ–––žžL¢Û'‰¢¢¢²²²ÊÊJ!Dmmm< <Ñ…Êv»}ÅŠÕÕÕÅÅÅ:®¡¡¡¢¢bÆ &“‰`Sj1@0`™Íf|²¿¿ÿÿüŸÿ388øÞ÷¾wýúõv»à2Þ¨+‘H$ >}Z0F!7ÜpÃkÀµÍf3MþjTŽõX^i“padjVÊuo•••Ñ[òÉ'…óæÍ»ø+`?t­Ÿc®Ì•¹2WæÊ\¹îŠêÐòZÕAd³>_•$Vè—åóyu’$ƒÁ£Göõõ!îEö(l—ÑétºD"Aì)eE(‡È“èBdÚM.Î,€Ó0ðˆ©©©®®®t:m·Ûúúúü~¿F£ñù|6l˜?>öôÈRÏy[ü1Óéô›o¾)„¨««{óÍ7[[[c±ÅH~¿ÿôéÓ‡£¤¤¤¢¢ÂívÛív!ª*„D•L&¢Åãq`Ø%“S5b$ÄW„’ lÓžžò¨ÆÏ "ñm:Ó^?À [jétúرc¡P‡Ælh4šT*å÷ûÝn7 ™LÆl6ÃÒ[’¤††ЈaÂÍZ¯«'N€#¦:×h4 .¼óÎ;«ªª(˜Ï3×[¼ntÞ÷('TQfê Þ¨—µ a""Âãà"_TTDùþðŒèf œHŠ84—Ë îÞ½O¡r«Aú0¨Òpk¤t|ã7K%”Ñh\¶lÙÖ­[KJJ€ÖÕÖÖšÍæ•+Wžë(ÿüómmmn·û½ï}ïêÕ«yç‘™ÙœÄÄ>Á`phhhFœž‚?š¬$ID¤ 1…6›ÍjµâEÀ4 B ƒDI(œ©"‘–:¦ˆÚÚÚüã‹¥«« VâÕÕÕUUUÄûã]”~PÑpL§>¦Š?GGGá˜F}ƒà›P(tàÀÝ»wª›Ïçc±ØÁƒ3™Ì}÷Ýçóù1‰D"CCCB˜©uuu! ¸$FÕä팂¦“$Éf³³Iž®_áïo*Ÿ)Þ°ôŒY“Éäóù`VUWWÆ3¨ŽOdY¶X,óæÍI§Ógùòåf³™{Pñ.+äb­’¹Ïf³ÑÑ]ˆ·?oÎA6é©©@ 044455uöìYI’ÊÊÊ©ÞpBƒ•‹Î B¡PssóØØXww7.Ëaµ¼b݈Ÿ‰Dww7+ à0¦··7 Ž;w.ÏøZ±²ò‘|D¼¼×¤ÜyçWûý×ý×ý×Wx‘Ï~ö³Ÿýìg/ã‹×6ŽzwÔð]P^}õÕ‹ÿð;ëØl¶k]uyf•·¿=zô¿þë¿fý²¥¥¥—÷E‡Ãñ¿ÿ÷ÿ¾Æré…öL×j”©6ú2³*”QðPV0½} ʆ‡‡?~ôèQp1ÈæY«ÕÂvt›B#XY–M&“ËåBÀÃq ™éeè7ÄÂ1þÔÔT‡g Š[[[Óét}}}eee8µJ8Ýêt:ŸÏg·ÛS©T[[ÛÁƒ¡/,¯9ÞÝäädiiéâÅ‹N§Íf#Y q@†L0¹mˆq€CuœðÖF©ÖiWMš&º…د#H˜qw‹‹Ä $ ŠÏïx<ÞÚÚ‰D¤é†eh7»Ý~÷ÝwWWW#6èn·{ß¾}ÿ÷ÿþßÆÆÆüãÅÅÅàh J”®³³3‹;wN•|æM7ß|óúõë!ÒTu!ž‹žWµ'- …=]8k†Èy%s<êÆaD:„ÇÕ{@ßGqÎää$ Р8ïš]£Ñ„‹¹-Kyy9A‡BóXSS³yóf‡Ã‘WRæ! â¢~ÏsxQR?‚ÑU¸É‰\™F·Û­Ñh*** à]­V»páÂ-[¶,Y²=0Z/‰ìرcÏž=‚'&&jjjjjjœ’;<’F .[!jŒ¯`*,ôÊdGGlj'@:¶X,õõõK—.]¶lÑ©—¼pœ~ˆxÀl6‹·P]]t«ç›Ù8°(Îx©FŠê3ÔsTÏ+Ÿ?çÆl•Ù‡·8pâĉï}ï{à$ÏX.°HÌ›7ïĉ‡ã_þå_þþïÿ^ÑÖÖÖØØx‘wÿ÷ÿ÷ý×Eþæ®®®½{÷ÞtÓMªÏ o«â7¿ùÍC=¤Óéü~ÿÀ¸«WÖ¯_ÿÿýÿß{Þóž«w‹²²²o~ó›_üâ¯ä"ÅÅÅßÿþ÷ÿüÏÿü’¾õ½ï}ï±Çëìì¼zO7cyüñÇ¿óïà¾%%%/½ôÒ 7Ü0ã'£Ñ¨ËåºÚcl®Ü~ûíŸÿüçï»ï¾·üä?ÿó?ÿâ¿@êúë¿üéOÚ¼ys<Ç q”óÍ*¹\îùçŸÿ×ý×Ç/]ºô=ïyϱcÇvîÜùŽt¯]»vÍš5?ûÙÏfñšG]»víØØXII‰êO“““###~¿ßjµú|>‡Ã¡úÀ׿þõ Û×¹JÓÝŒkú["h|¤úðŒ[%ú™|¦@AxSZZzçw.^¼8NF8^ƒuâ÷û÷îÝûúë¯Ã‰Ùf³>ÀnO£Ñ444lݺµ¬¬ŒÜ©€ $“Ét: „‚h)”jÒÉ?~|ïÞ½MMM+V¬°Z­ ì!4ÝnGú¶©©)ŸÏ7>>®ò«Òëõµµµ÷Þ{ïŠ+ìv{<‡}xa¸nµZ×®]»uëV„…’¢`BL…Ï€GC°EnäzNǹ”³6Ê<º#ksï¨jÎß®ŸÉd¢Ñh8FT\\\VVF\‚„àa#®z@„îß!xÀ-*++­V«Ûí†cEh ìòaxDžH«ÕÂìé†n€ŽoY£XË£ÝdÅ…o¿Q÷#K{ÂJ ‰5™LB W¸8¸Nè$y–AN"‘hkkC¶Ûí•••uuu‹E0Ã,xŠËÄBa‚ ³!º d‘ ‡ÃEEEóçÏ_·n]cc#e@ÿÇ"n·VA ¸Š2‡ EÆ+I’ÉdBÌLZô"jŒµmÛ¶ÕÕÕŽŽŽÁ~Õ ò "aY–C¡PWW xïŽ×ÕÕ Å­†:‰ÄLpaÆD"¡šCð§ÊÊJ¼êä/‡‡‡_yå•Ç züøñãÇò“ŸlllÄÈ*”àÑ(µ¸¸h y*e2´6ÆíÀJT™¥é62¥â"; ¿>²páÂ’’~ÒMLL ƒA0€¨ç óG"‘žžžåË—ÌÊår.—릛nšœœóz½Ë–-ã¢9^8щÆæFH±€Ÿrsk€™L&™L‚ãC4"yÑ„“ŸnÝ=99‰„ ét:r;'LVÜóˆîˆaX^^îv»M&“ßïAˆ¼ ]Œ,+´>®¼B¤Óé±±±`0¸{÷n·Û „ct!ÂËИÔc9K/7bâ‚Òú†^¯G` gZhЩp0ÐÙÙ911äãH3=—õ"F Ož<©×ë/^ŒÕÍb±X,LV¥¥¥èá‡"<—S ̪ªªÚ²eKMM ¬$Ñ—èqx‹†'®èÁµJžŒD@`ô¦ŸB[‘}$V[š6c±Øþýû<ˆ\Àuuuûöíëééñz½øÀÊËË%I …BñxÜh4"C.-è ,ØM¯`"ÈM Fabää2!%ÖÈçó™L€~ÆT)„°X,È­I@? l(¯m6f]ž*GMP¾z£c!RdÅœ+»PäÞ´”Ðr­"ωŒ³+HãÞÁî ¸¸çsÔÚªS7Íyò'žow§:záó𻽕L&¿üå/?ûì³o¹¯=_Y¿~ý›o¾YQQñÝï~Wqçw^ÛúÊW¾"IÒ~ô#ú^¯¯®®~ùå—÷ìÙ³uëÖ‡~¸Þš+oAÒ™o¼Q3“Íál•ÉÉÉ/ùË?ü0ýf||ü?øÁSO=u­`®Ì•kY¦¦¦|ðÁgžy¦¤¤ä‰'žx衇$Iz衇†‡‡kjj®uí®—röìÙ‡~ø¥—^êëëã0×ëݸqãg?ûÙ÷¼ç=—½´]'…BSy¶%ŠäuBÈÂŒãˆ×U)ìÞ°1Rù;YÀ'&&zzzÒé´×ë­¨¨¨¯¯'Ú6|$ž9sæÐ¡C&“Éëõ®X±båÊ•6›-‘Hôöö¶µµFÇW¬XQ[[‹3l6 ñNWW×üùó—.] Ùˆ`€g‚´··oذÌ °Š(M›N§Ëf³ÀzZ[[Qy²ç¨ªªúЇ>tã7E%gó½—ËE lU‡††zzz@&“±Z­•••MMMð×t%XüL|.z:Ê&¡ ~&7 Ëð-¦'·’i𫳳óðáý½½¡PH£Ñ”––®Zµjýúõp†Bè­y¨žŽÜ»$‘p\.‡ð@’$üKÉ ©GqûFÑb—˵nݺ͛7û|>ÃxFz"Ó£ÉLÑF µ'Ú¬OT ,5²†%#›p¸Êî۷綾^'Úüùó?ö±-\¸6^|¼¼HUàD†>Ç»–––Þxã ÝÝÝF£±®®®ªª } ž_&™L’ô¿b®Æ¥{’bw ?“>^ Ñ( Õ™?~]]Ý¢E‹R©ây¡9;}£¢¢¢³³¿Ç$ ŽþÈáÐFJŠ 9ÍN§sÞ¼yðæ£—h0‰ÄñãÇwîÜ e"=~<oii9qâÄ‚ î"Ì6›ÍN§“Ïcô3jUUUÝñÔì |ŒòTRÇ É+‚XŒ)ÈZ‰D a d±7<<Œoc% Š×\.Ç y£D¬@öRDÎÈVYYY¹qãÆ@ œ4 ¨¥g'Ì—_ü5§ä{…y(òx<`!ye4M&“¡PPX‡D2B¯¤ Ÿ&t0xð`UUÕÆÓéôË/¿ r%üø©Î2cïbX…Ãá]»v ¼÷½ïmjjBoG%UÔlÌ3ccc:î¶ÛnCnGêWBñâ4›Í~¿¿¹¹YÅx•r«Õzã7®Y³ µ©×qG6¼$Åt\Àväp$-ÙB‘¯Æãñ®®.8¬-\¸Ég}> óùóçWUU:u ¬Õêêj—Ë »»»Š‹‹×®]ëv»Á¾Ä`‡ Lj©ªüÌŒôD¡•4¿ôhÄAÃoxK̇´¢GÄC4ñ±ˆ¨\RŒáiŽÊÉ ½tHJC!î$íL„BL6f³&§Èü€ó!t˜üô„¯‰·:¹”¦ÛÉK¼?ª*ý2ϲ?‹«YfÞúÆ7¾ññ¼ªªê²¯°~ýú?üá»ví‚Mã÷¿ÿý |Jü7z½~Ù²eB°±øj4+¥³³Nl³{ÙÙ½‹,˃ƒƒ@`áÂ…Wµž¾;)À…[·n=zôèøÃ¿ù›¿¹z·þÞ÷¾Ç±-šŽ/£är9¿ß?<úÌ3Ï<øàƒ?ýéO‘ËiÇŽ¯¿þú•ÌÕïÐBc !†††¾ð…/üᨭ­Ý°aÃW¿úU§Ó :Àððð‘#Gþô§?mß¾½©©é‰'ž8ôQ®Þ †bWri),3®k*LA(~¨àYÃóBõaIIgÙ’’XSäšt: wíÚuæÌ™E‹½ï}ïÛ¸q£Ãá@¬lhÇŽ¯½öÚöíÛ»»»ï¿ÿþ•+W"T8wîÜïÿû–––yóæ¹\®¥K—ââ…`³Ùl6¬ñ Y£&ö‹Ø_âÎårÅãñL&ãóùn¹å–›o¾hŽFq‹ NìÀ³¨¨Èh4ÊŠÅ{4=tèÐþýûÛÛÛ‰ü•=϶mÛ¶lÙÂq²ª,x“Y(z‰S£–JREdÀÅ¡€¼uôèÑ={ö´··Ó9óèèh.—»ûî»áÂËòt;$þ~}>¸0Ba`åXÖKÕ‡)¨#g(Äcwß}w]]bé²²²ùóçÃOˆ3Ô©(ClÌ‘Y• ‹·'ýžâ1ª’Ì’a¦Ôâ°gÏžgŸ}vtt”Z[«Õ?~¼¬¬ÌçóQXNÆ@çP°-‡s¿ÛíÆ4™L‹-Bô b<®Ù!ôð0 ³—'5"Ypv¨ âÊ<Þ/Üp @%¸YQ I#Þ‹ÛíÞºuk:w»Ý7ß|smm-ï?«>®'%¦ &"$âŠ|bbP,ì±9K199ÙÙÙ 0p‚Rp+T$¸ØlܸÑétrþÏgŠžÈ !’?HŠä0‰$ A$S")¨ßï×lM”sçÎ!9 ×ëõù|¸n'„Èd2£££íííªNHo9—Ëuww¿üòË”)­[är¹ööv­’N”¾ˆÕ“Ð[‚“H8&Ërww7DßÀFñ^‰œ›0u@‹¾!„N h ôpÍX,–ÉdZ[[AqÂã€iEºE Qrtoü‹4Ô]‰…f™zrD$“ÉÓ§O:thëÖ­0UDF­V›J¥Âáp,óz½GÅÜDß# ÆU'Nœ¨­­]²dI0t»ÝÕÕÕ ¾ðùDRÜÊÑN§Óï÷{½^è0ísI,}K«ÕÚíö’’I’\.‹éc‡£¶¶–ûÊs2^¯GnJ¼#ZÔäéÞí’bA¨Ñh@‹¦™0§äÖLO @בY–^š$§¦¦NŸ>½{÷îD"QZZªÕj׬YÃÏ$à"7¾[*•:|øð+¯¼‹Å€<–””`ò!ÍláÆCžîèGÿªl%eÅç.¯ØSJ0`ˆ&ÊÔAПUG ´[àZ]ÞÚ|ùã HÕ(ü}˜~ÀÍår‰DReZ‹ VÕN`Æv#°O.07äõ'w¹€ý}õÊlÂ[Á`ð‰'žèîî¾’‹¬_¿þ¯þê¯ðó·¾õ-`Uç+4ûþæ‰'ž°Z­ñ1»íµ{÷îÇüÿñg÷²³x•4oÆã¾«WøÝ- I>¯6 QÑÛÛûóŸÿ¼ð÷Ÿüä'/ãj?ýéOŸ~úéO}êS%%%;vìØµk×¢E‹>þñþóŸ/+Í•¹r=—Ç{ìÇ?þñ—¿üe!D&“ùö·¿ýÃþ±5Y€IDATðË_þòÕF꯷Â'(šöîÝû‘|dóæÍ'Ož<ߊ#ËòîÝ»¿ÿýïßrË-—êy]•«7cŸ7<<¬ÕjËÊÊ.[¼I£@ J¥JKK 7Cäy”H$B¡Á`¨­­…äPbžØd;vìõ×__´hу>¸jÕ*Y±2BØl6ðeŠ‹‹Ÿzê©}ûöõSQQ‘ÉdΞ=ÛÝÝ=111888::ºpáB®äå;T“Éd·Û¯Òï)¾ÅÎF!6›í}ï{ߊ+ Iq¹\ÅÅÅ*0gò«ŠÝn7›Í’’úðÍ7ß|î¹çúúúh£‰Äs{ö쩯¯‡˜…<1"ï ªhŠÚŸƒ8øÛt‘¢¢"h4:;;_~ùeðn;Ô ‡ÃÇŽ[¹rå¼yó€Â\ âš6›mÉ’%äF¾3àniÈÔ™p ƒÁ`±XV®\ÙÐÐ@&»ˆf{ó­¶P¢®”äçùœµÄïË)`…¨I«ˆ5C-399Ù××·k×®±±1BèO'Nœ¸õÖ[*`|ÌÆ•+Wz<„R8Ÿ—eˆn #m`.;Gü¸ ¦Fþ\BœöD #º¡káëD¦ÃëH$¨Ta3ÝÅ: ™ V­ZUVV§¤¤l/µ‘ü Þ †àÑÀðÂõu:Ýüùóo¾ùf½^)'‘H$‰}ûö577¦¬jÞŽŽè°ð°}}}àÙÉÓ©¦ˆº×­[!30D\0•J;w. z<§ÓIiLaOŽ[@H¢4‰à²ÀÊ91)2$–Ümjj ’Ìñññ]»v-¢< &¦w¾‡þÐÚÚj41–µJ3…$Q¼ÿ›L&Œ2iñ\€•  ƒN§³´´dÌÉ0áŽÅb¥¥¥n·CÒçó¡ÀoH5ŽÈ®ëäÉ“gÏž½ñÆ—.] ˜g*8]y–ì戇!CþDw¤“åÙT9pƒ‘>55eµZ«ªªzzzêêê|>ÌÈÑP\O’j äî'',¡PoˆmG8¥Y@ãÓ…e Õ¦4¦b:•˜Ÿ¬`2™JKKQƒˆé„½^ïóùl6ÜÊé-£>µµµëÖ­óz½‚áÈ|Èh˜j͇»»»C¡z¬Íf+//Ÿ7o2iòáOÏ.ÊœW²´··tïÑÑQ¡°«ðÖ@D T§Ó ¤¾¯¯/‹É² ”|bbô:’¤p&W-@Ä— ÕÈøC{\{ËOnhÒVMz™¢óZDè=ò[ðB¯€£rœÅ¬Â¤xOFóx<‚¡%|6ã?Ó,l"ú“jѤÏð¯yžež½Ú ×lÂ[>úè½÷Þ{…‘ÿã?Žn»í¶¯ýëþp¡k Øø<òÈÓO?½sçÎ%K–Ìn{}îsŸûØÇ>öä“O>øàƒ³{å+¿ËŒÒ<•uåÕ+…wO&“Ô}÷ìÙsúôé«*ýÑ~’9½^ÿÈ#lÞ¼ùR/µcÇŽ|0™LÞwß}pþë¿þëo~ó›ÿüÏÿü÷ÿ÷=öØË/¿ ?ˆ¹2WÞ¥··ØÖÞ½{ÿò/ÿ²­­mÅŠ™‚ãÝQ '¨p8Œ>üÈ#ÜsÏ=øº$I·ÝvÛm·Ýö«_ýêèÑ£×úi.¿púl]“ïo â8Ÿ2ñ|_Tý’Ô.‹'Æ*j ¶ÝHòFm6[ee%Q´½ƒÎè…^°X,Û¶m[¶l™Á` ½žPœívûÖ­[ý~ÿsÏ=wðàÁúúú{î¹^Hn·nîÛ;·äõ1Hä§:)å rÑh,--õù|P¯LLLp;žó–ÒN×f³á)´Þ|óÍ‘‘Èd¦êëëëêꪫ«£àœeªš£œÁ·ãô'ÚF“[­`Û}ø ïÛ·o``€LRø³  TWW“;5ïª~ˆD~Èè¤aÙá‡Ãá|>ˆšóo˜Qä@ÏÕBJ|†1ôÖDÞGªYàf‚\ïf³™<†ˆ"D®(ªn355Ë-Ž J,ƒã>·|¢‰{cÁ3{ÅŠtñt¤Ï× BY2‰®‚!søÂ€Ó„Ïà"’$´ #õ®|>?>>>>>‹Å†††h2‹QID§ããã’$T>‘Hàj 1bO²D˜Ò †h4:88˜H$Âá0 éL€Pé‘’$õ÷÷ÃŒ‰0´Çã$ÎB:N$Ùl¶­­ öRa¿$I###Ï<óŒÛíN¥RBˆd2ü~?vð°ÌÖ×ׇB¡þþ~¸ê€y466ãvI’vìØáp8 ‰Þ Ù€Åd2922‚p4Ò©÷šÍ榦& ?.— ³ a‚çÎëéé)++kjjü —Êf³àx‚'È»4>`³Ù6mÚ´páB›ÍJ)Hv|.ÂÃr¹L+Bq[£SÀ‘ÇçóUUUa'jú?rn¸Ýnô:p¬„¢Ó”fr¯Ÿ˜˜ˆD"íííK–,Y´h‘¬Ð0AUÃʼnŸBÁŒs)p%JiÔ ˆ0¦nzXÓº‚‘",šŠÑ½a£N }Ž}!—0Y8’qZ)ï„ÄhM Ðü.0ï0t;œ¡×ëAò¢»kƒÁø§§®®.‰€ZˆI@–e‹Å2þüššš¼’¨D…€ðŠáÐellìСCÇŽÃxÇ2áp8Ö¯_¿yófÁðDÏË'^,ŽaM…¦&x ñ>0e¬¿²,{<“É411a6›_ehr¸ÀÞƒÖµó-Á*^o.n•K0äŽ.¢ú°T@ÖÓ‘)‰Ñå8ߊ~C]+~UtcdÎ¥ŽÍÁ2º]áè+\¬Ñsøy~Os—†ÙƒÿZfÆâj–Yƒ·òùüÃ?<#}fÆ&~Ëϼúê«éyüoÿöoªß<öØcBˆ 6\ø‹—9ñ׿þõC=4+ívg³r—L&s 3'&‰« Ð^ LNN~úÓŸþô§?}á] †Û·o/ük{{û¼yó®ÕC½CË\æÄ·³Ì8«¨ZõäÉ“×$ŸÆe—ë-s¢Óé|'fN¤hvGmUËÊÊ$&qº¼‚+x<`œ©Á È8pVÏŸÄ3âO'Nœðûý[·n…±.ùjР˲Édª¨¨ØºuëñãÇ[ZZöìÙ³páÂåË—¯^½:™Lööö655-^¼A í/eÅ÷‡Ì‰èTè‰F£{‹d8*!P_ ÛD¯×kÏÚ±±±ÎÎN˜Ýr¥-®ÇÆÆjŠhJˆùÞ`‡Ì¸]„kpTðb9܈ò*ªÖï÷wtt€C “¶à`Ó ÔGôˆ‹S&)„ýàA@R·eËà‰9 …– íÞÁmÂ7âV"}ày)}d>ŸlÆç6^$aã¯"JÙžÍf“Éd4 ƒ°B ÂÚ GK$@½#þL$p’ÈŽ£Š D"³ÙœÉdR©T__T„â,ÔÐb±,^¼X’¤¡¡!¼0†ZZZNž< - ùae2Ø#äH&“GxTRRb6›Ñ‘€Î Àú*SCêííÍf³O?ýtyy9À,ìØ©WOLL´¶¶f2™ßþö·>ŸO’$˜!»(¢hxâHŠ=ø)À©A$®„± 8¸>OQ"+—ËÃoÒÊI,$$‡Ô ãè„gÜᨙT¥dXÆÅÔ…Õ“˜b! 5ãñþÌS1¨0;Þ‘ /˱Q>:v¤:s ކ•ªs^a¹ð&vÖà­={öôôô¬Y³æb><ヽøâ‹÷Üszí]wÝõüóÏ¿åuÀ>øÎw¾C¿9uêÔ¯~õ«üà8=¾ẨÏ>ûì}÷ÝçóùŽ= ÃÔË.Èœxw©®®PýÒívÿã?þã¥fNT)3™Ì¿ýÛ¿]8sâŒw///º’&ºøò¥/}éÀ»víúÙÏ~öØc!ûÞåeN¬¬¬Dµï¿ÿþ§Ÿ~š~¿qãÆýû÷ !>ùÉOB+SΗ9±0—ß3Ï<“Ëåz{{¯u•g.ª /Z´èÉ'Ÿ …B×N4ã¬"IR___"‘¨©©÷áú/|ÒëõøÀ~÷»ß]öÕfœ „3fN|ËòÎÍœH¡~áÎìò ­æ¤³¸Â¢aî?‚m£ù)‚*ÊëõŠ›Ìa×¥×ëœNç²e˨ƒ) 3Ÿ2”õù|­­­]]]GŽ©­­­¨¨¸ï¾û¦¦¦ –án’ÄG#l‘D‰#V|ûh2™Ün7Μ$ñM$§¢¢"r–e™²§kµÚººº+V€€&Ër4ý„jÅ·¹ƒƒƒÝÝÝf³Ùåri+q«ÕšL&!’nˆ+ÐY}:N&“ì %¢Ífs8Dä— ±t:>uêÔèè(µ$5¬¬äÉ:{ö¬Ç㩬¬$äP(„T’K—.knn–$iÙ²eëׯ/-- …BÑhï 6=€&{{{ÓétOOÇã“‹J¤–Ï纺ºí^@I£R©Œ {„¤ ®ˆã‰k*•˜Íf‰D<O¥Rñx< R¸ªªªââbƒÁàõz!“¬d«DŸ>ëäÉ“D³ÓE™LæàÁƒ’$¹Ýî@ 0<<ÜÑÑ‘H$\.×Ö­[Ãáp{{;^Á`hmmF£ƒ!‹Åãq¼Ó¾¾¾‘‘‘;wZ,»ÝÅ–Á`ˆÇã‘H ½^ŸN§[[[¡.D³Ùl€¥è—H C÷ÉÉI“ɇ¦T*…öA@F6<#4wàqƒÁÞÞ^ôj“Éd±Xàˆ§×ëM&>‰ÖCW‡A›¬°QOJjf0R©nM¾Œ9r¤¾¾î×è`q*E‹Å’ÏçOž<ùÄO€YØ—-7nÜxÿý÷;ÎÉÉIÜ+¿òÊ+‘HdãÆ7Þx#t<ë—Ñi4šÑÑQ—Ë…;¢V„ëñ -›ÍbŒ‹óÐ.²Ù¬Ùl†5>¦ K“‡þFi×(sˆPD»IO¨RìI’´`Á‚õë×ÛívšU(mù(Ñ$Ì¿H+™q?…à=»L “oJf*„èîî©©©áó$I9ZÄ*| PYÉÏH æèè‚þÄ'F2£3Ø¢!Ï_(«lGÆ´<*†œ°_ø*¦zò¶§„žœ˜ƒwGNñ{Ä­’â>7Œ Bé@ˆÜ¾ÆÆÆ:::Ün·êHh/ÀPÔ¡¬¬ÌápÔ××ßzë­fll ÓNEEµ!o®'ß}¿ßòäIˆaQOjê±±±ºº:€žd¤i48ñÃN>‹¹\.ä(à wâh |]®±±Ñãñ ɆÝnç‹#ÚEPÓÑœ/Ïf‰YlÏbåÊ•åååÄÅb±³gÏBWx*IRww÷+¯¼BŽ`BñâÍårãããáp8›Í‚6…w‡Fãž>‚mO᳃ý´ ü+I¡ómmeYîîîN&“ÈÛîC,óûý6›-•J™L&d20M°…>0Ú·o_[[BY„¦À8€ ɲüÒK/8qÂår™ÍæD"®B\!Y–“É$ØäX<h&z5R¹C*ºp8<00@L<&À¬\.çp8Ö®] # wðD[ bi¦gB¤ ÚëõVVV‚ˆ˜ÊétýõÖ[Fc___6›Í °€Uáí †ööö“'O.Z´IÜ'[,¼q!¨FÈÿ399yûí·Ñ®:¥Äô@‘Ïçm6›Ùlž˜˜¿ÿýïGGG?ò‘466FJ¿ˆØÿøÇ©©©‡z¨©©‰ðhŒ2^ð f³I0‹"žØ1øa‚^¯…BóçÏ_¾|9™y£&D¢Á]JJJðÝåË—¿òÊ+~¿íO8²^¯_°`Á{ßûÞêêjÌ %o]mm­Ãáp8à%ÉÓU6|´"ÃÑht¹\ò0“ fá#…ù΢Cð9¡5ÛŒ¶Ù¨9º4  à#Z­Öãñ¬\¹²¶¶–€Íô„„}Ð@ça¬¨~ƒ9–8’ñxàiQQÑÐÐбcÇ*++)aˆ*ž‘C( „æú.&¡€Œ…Á#ÍÞªoÞE(PŽ(À×ðÃää$¦Aª¹ìÅãqꢪùKñÄèÄ "Ðß…`8Œô`0 3•>Ã3“P*O¤¡ÄŒM,ü€VEa" R­Óé¤1ˆeB¥úäç=8/Éd2½½½dû@ý–<ב ³‡¨{ã©%Ir:HÚL&Á‡Åbù|>NcA{ƒÁH$ú›F£q:²,G"ô¹½#SkÈ U™§5€”LÖHj Ì‘I*%e'ŸáeŦŠÌ¿°ª â ‡ÃÈ3;55©;ØÊxé²Â·" 0˜›±X î ¸©¤˜åqÄ$UÉõßh4ºÝîâââBbš ûã"*:Gö Ëùð2ú“j¼eÖà­Ã‡/Z´èò¾›Íf?øÁÂOññǿ뮻êêêÞ|óÍuëÖ]ø‹xëÇonn¾é¦›¯äÞ2»ßøøø½÷Þ{üøq!„N§ûà?8[­7+wùÞ÷¾÷Å/~ á7ÞøùÏþ¸TxkÆäƒ—w÷žž‚·ÞžÌ‰£££³’9ñî»ï>~üøOúÓ'Ÿ|òÎ;ï¼çž{–-[ÖÒÒRVVöw÷w_øÂæ¬å¯¼Ì˜Ë¯··÷R•Âװ‡B\!…óí/pÉÙûZWg†2ã,t…Ì Â ª¾¾þ ¼5»[ ÕÉçÛV$…™?88899Y^^n4GFF~ûÛßž;w½º<œK“_/'˜ x£aß ‡rÈÐl6Ám ðÄb1FSUUU^^ަC ˆ ¢ª@ °wïÞááa¯×;þ|—ËUZZ*Ë2x/(`CF»ÝÎ¥që )ˆ.`œtðàÁ'Ÿ|’ØjBÙ¯#Ø«ªªºÿþû+**Ps“$ŠA´™J¥víÚõÜsÏ•¡Ë=÷Üs÷Ýw{<I’ D‹Åbãããv»½¬¬Ì`0TTT€SVTT„ ㈣ðù¢¢"¸6n܈χÃa­V Þi*•²Z­¥¥¥---F£ñ¶Ûn³Z­0¸¡ðOf&Pô ¤²Ùlqq±Ïç“e¹®®®´´ïP~¯ ï·¾¾Þf³… ‘0>/)ÅÂYEb^Èk‘_’Ä´E(óæÍóù|H!Çß —AG–Ëm\ 5Ao6›-ZôÞ÷¾·²²RVHd ìÀ¾Öœ¨šDäÄc¢ÁI …dD¬@>f5  ‡Â,M÷è!(\…8ÃEøv—nØB«ÕÖ×׿ï}ïCOe˜5,¨'Ého@¾o„›nèeÑ(Òn·×ÕÕÂ888øê«¯ƒÁM›6q­·<Ýã¯pB£ÎƒjPnVê<ŒŸqÉ ©Èžœ,Fô=‚!ÄtÒ ]©H%¦\ðêëë*MŠªKSŸIß”r¨¤HÆðuÌÀ2à ×ÛÛë÷û5ÍÐÐ8Y4HóE;‰tvv‚( £ Ã0•Jõ÷÷ƒÁ±±±‘‘ðCéAb±ÒDú Þ4@ÚΜ9£:J¤är¹þþþS§Na¶!.o.@ÒèËÈ̳dŒŒŒäóùD"qúôi‡Ã‰DdY>pàñéÈ׋Î0Òe¦FÇ! qfô &ˆ|¢nKψ{ÑÐÆN$FID1{`H¥RU“¸»bZ¡¸8ð¾d2 àØápÀÓ ›Í¦R)NÒ§Äè¢ÈÔýõ‚ 6nÜX[[[8¢9¼uáÑ$ÎS 1,XvU7©Tjvà­|>ÿÆoÜ{ï½—÷õGy'ó_ÿú׿lݺu÷îÝoýë¿þëÞ½{ûûû»ººöîÝ{%æånë\.wûí·Ÿ>}Zár¹ž}öÙM›6ÍJëÍÖ]>ûÙÏÞÿýæ>|øðáÃû·{©™}ôÑÂ_òuèâïþ6gNB¨¬åQ./s"!½^ÿÅ/~Q¯×ïÚµëСC‹-º>á€wb™1—ßM7Ýô¶©Yg¥Â‚Ñ€¯óR(=vìØÎ;/Òâðí,3ÎBHî~Ù¥p‚zGpîf½@ƒŸåÙ \½%¶5ã_gÜNñTÿ¯¤¸‡d³Ù¾¾¾‰‰ »Ý®×ëm6Û²eËH81 lM¨È²œÉd°©ß Ò'i‚Ù¡ÑhHyòe§H õA¸Ç…â®EGÜx „È&†1 ³ÙlµZ!í±Ûíµµµ7n¬®®N§Óà7[­V$##qG(‚<ØjµÚÊÊÊmÛ¶-X°±¶³ÝÝÝ¿þõ¯9=–áõz=ò RfÂb(œÆ/<%À F£qÑ¢EÑh”ï7ð-§Ó¹iÓ¦;JLY–Ái ‡Ã’$-X°`Æ 8ÌÇeñÈ…wÄe‹ŠŠž}öÙ}ûöÝwß}Ë–-C“’ ‹"ºh4:44”N§?ð!–,YG! KdF”œuÄIª¢®Ð©8ÂK‘šé9ÑTš8²Ü&P˜>Ùl¶¦¦Æh4l„„—ÖæÍ›Ñßè ÒBÒ‹IÝà |ÝÛb±”——ƒ,Á‹¤d­Ó½±Âáp}}=ºqñxÐBƒ‘í…©æóy·ÛŠ© "Œ@È Ÿ2¤cN0åm$PX(°,ÙŸ©’Bà“:â;̼ǒ^†^¼Y´žÙl^»v­^¯÷ûýápxñâÅwÞyç‚ €áÕ"Ý”P@©oŽ MWá‘ "Ì‚s¬$EtÆÃ`þWT07Q{¸Ò¢t¨S)—'ËGÒëõ’EõœBC"ÁŽˆ´Â‘/iº^‰Ï'4#‘ü¡ïùýþ½{÷¶··ßrË-ååå…“¿ÄX¨yæ·Mˆ 7¾ ¥ê!3®/ª¥dÆå‰Þ&ÿ&&&¢Ñh8A—Êd2~¿¿½½½¾¾t<º§›á+©T <¦‘‘‘Ó§OƒÁt:m·Ûív;I‘ ¤$¨¤‡††`£ö /À/*ÆÝšphcÁñÙ¾};×K’‰>fœâD"188ˆ…C4\T:ê ™“ú0^1€0ÕRNS.`¦Ó§OCN˜H$ȉ,¯˜?R¢[TÏh4Æb1Ò#ÃIK²CX,–P(”ËåÀþýû9ÀJ}XÃöÑÜE.uDŒâh8 ð¶ómärEIQµsØ”.•W’<òÑAŸÇh¢‡ÙlæiRµZ-öp$_Bü݉ZzXì(ÐIp ¥zdà§ä]¾-Î'( ©ŠlűlÝøí8SŒÏ]ªWý|µÏDxàÙ·:::b±ØåQZ’Éä÷¾÷=!ÄÚµkÉEëÖ[oý§ú§øÃ8Ù;ßwõz}uuõË/¿¼gÏž­[·>üðÃWo]8»²ƒãç§Ÿ~új`[Wx—ÉÉÉBiÞ¥fNTáî:îg?ûÙßÿýß_ÆÝßæÌ‰¢`¯‰Ê_aæÄÿøÇBY–ç2'ÎnÑëõ”ËïsŸû\{{ûÂ… o½õVÊz½^a$lhh€3Ô;¢|øÃVIAzè¡ááášššk]5u)œ…*++UâK-…T!…þB» ºWxµOò/»p ¾3ÓóÖ e‹Åúúú´Zmqq±N§+..¾÷Þ{‰ï@ 6©Ø.nBØ N¼üòËO<ñD86™LÛ¶mÛºukII ®ÈŒx:„ iµÚd2ù /477oݺuÕªUä1¯Qò"Q€ôÆo<õÔSÛ¶m[¿~=¼{PH°\Àét¶··¯Y³¦ººš¢5< kôz}*• ÇZ„ë#ðù|÷ÜsÏ–-[ Ÿ"™!”ä‡Â_¢ßïƒõõõ¥œ/PäÇì%ŸyÙefc„ ú¦›nºù曽^/rƒàyWii)á#B‘GÑ‘;Ä€Àòr¹œÕj7oÞéÓ§‘¼Œ ª3º‡Á`p¹\À ÚÚÚjjj<b ®O‘$ éù i!{5D•Pˆ nórN§ÓÑh4™Lª,ÉÉ6ˆ5¨?:Álƒ¡C‰DB¡N§[µjÕ=÷ÜSYY‰o %H yPôঢáCz[¡x гµF1#ªOÂMð1 l¸‘²ÂQW݃'&#% Ù‡v&3›nôù|VkUUUø.|”䔀 \ŸÌË5¬d³Y¿ßñÂ-çq5êÉ T"ØC?©¬¬„Çd°f³¹´´”<ž % |°5‰JÆ'%ÂÐzä“QVÒü©&Yñ®’ $Æ€®Àg·NA-ºQUq£,Ë€P…¢t1èÆ²bÙwS¢¤¢òôän> áÓ2¸?™"…Ãá#G޼ùæ›ëÖ­Cç@%¾@S’n÷ˆA¯×#Ÿª´Tb™éDKÕ,9%‰ª¬¸V¡¯¡ï¢«àA‚÷ôôŒŽŽvvvâ¸"•J%“IŠôöö¶¶¶BñWüÑó!¢É$‘HÀF°»»{``õI$¡PˆÃ+ÌÒ¤¡„‹ëõúD"gV ;:Váè',´|>¤v4cJ¡ÑA'L#˜`<' /‰¢W£CJ’ Ïœ9ÓÓÓC]‘z]6nÜXWWûW sÕÛ¡{ꊤ²,ãËï÷>|xÿþý‹åÖ[oµZ­¯¾új___uuõ¦M›ÈX–\ˆÄ-)^þ¸šÑhx%Š Ø¼’»™˜×Pv“\9: eL¦— F3¦/‚­i!F"KÌ{x:Ø_Úl60‘%æK ¦£ºXo©´@ä €!«Q÷¢MLLÀ~âMd}÷VRô’òt†#æ(â‚Q˪Žm‡öTsïô ª3ËY/?þø‹/¾8;ðÖÈȈ‚FÎ[–ŸêÈ‘#*§†††KºÚã?~I±ñegNܺu무›¸`æÄY¹ËfNœššúÜç>'Þ™™QyÔÿå5œËœ8[eÆÌ‰ª¶=wîÄb×-ENU1`[ï”̉Ï<óŒb||ü£ýèG?úQüòÉ'Ÿ¼Ö•}ë255ÕÛÛû_ÿõ_s™¯¼Ì–ñ–˜qªº{<Ì@‘™g 6[¹\B?³Ù ›Á`€Ý8 ®–J¥§¦¦JKKq@Jg´Á‚£‡N§+//7™L±XÌd2A‡‹€¢2úø¢ÓéR©TYYY<_°`Aee¥fzòuntâñxàv5íbɺ¿¡“B•[¿¬˜ÅàäÙív›L&Çãr¹¦¦¦ÀV+++»å–[V¯^m³ÙHO¤Ñhâñ¸ßï'sbº ®™ÍfÃá0q«ÞŽ<“lŠŸu#‡Kè%I‚Ëï–-[ª««‰:D7EPA’OUDM± ™IKŠ|CÃR¼8(œÚÀ©©©-[¶ÔÕÕQžGz †ãñøîÝ»@qq±Ûí¤…¢²²ŒQÎA ÎB!a¯ØápP4E¤Uëét:Äï{ßû,XF{zz´Zí²eËjjjðy–”€¨ š‚|ðü²¡€ÊIÅG©:ØUðÛ"°Fuqßðaˆdsä@/)ô.T; ž={öÈ‘#Ñh(UG"A–$Iˆê…BB$FcÃM(p1°TÿNNN’êö‚šR¾Bn …Ž˜Öáp@ÁÊ©:ô_.Š;uKªŠcBLù £í8•üæ9B£ÑÀ6þŽ;î˜7oëø}É4`+‡Ñ)SÍuTgze‚Ñ:ÐP²BâÃ-ðÖ8ÆÍ©ø\A°o½T*Þ *súôé×_]«ÕÞpà v»+Ÿ@Oàn…)Y¦YTolY¿ßÏŸš€â–¢h ª´{¸ î†,€ˆU1½Ã¨ô%ôÌ|>?>>Ž”£@¸Ð]ñ`¦###±X §˜yp)`Gk{< £ÑèõzÝn7¸<ApYÔ @CGGGKKKIIÉÍ7ßìñxHáŽgÉ+ùéय¯oÇŽ ï}ï{ÉïŒW^É955uèС×^{mÍš5Ë—/íŽt‚Tyš~ÑŒtø„. ¯¿¿ŸÜß…‚UÙíö5kÖ¬\¹Òf³uA@já*Ãqpôv¸ âÑ É,**ª¨¨p¹\.—kll¬¡¡aݺu {ÒšB§ X¤è‚y–˜¹h- ]¨‡ÐóÒ«¨„j€ñ Ž•`à£PN`ž¥"²åË-ZšÑ°‘àÇ ‚Q‰¾Ê‰–ºå¦«Ë‰zI€&Tíðz#!äŒKž¹1¨–~þr ÷…ÿñ—W¯à{và-Øfq!î… o¯;î¸c×®]÷Þ{ïöíÛóùüG>ò‘B#p£Ñøûßÿþî»ïVýþ—¿üå‘#Gy䑯}ík¿øÅ/:´dÉ’·¼ûù2'^ŒýùÏþóþð‡³òzΗ9ñòî2+™'''ÿò/ÿR%***úÙÏ~výgNÜ¿ÿÊ•+U•àÎg-?—9ñí)3fNœššÚ¶mÛÿøG¯×ûãÿ|¢åË—‡B¡3Ü]¥¿¿Ÿ'üÓŸþ´yóæx<eÄuRΗ9±PYùå/ùßÿý߯u}g(3ÎB —}Í dNAö당N0þõ¯ýÍœˆÈë³ò3î„PxE4ûÎÎα±1§Ó ×*ÊùE;ûl6{òäÉgžy&ŸÏßÿý‹/¶ÙlØyS̃}°N§~ã7b±ØÔÔTII ,¨ÛÚÚúúú4Í¢E‹ªªªþ 'â`Û*³œî1fØÖË,÷íDñ_‹Å.  3î ±K1ëÖ­[³f òRåóùšš8‘!Jäb.8Ÿ¯m Rœ‘QÝC'8%®¬¬´X,7ÝtÓÚµk…xÅÅÅóׇ¦@Z=ò=LøFÛz²)¡ =,à–@ü‰åDB ŸÏ‡þPSSƒØ˜B2Ükjj –.з;v GñÜ£máÂ…Ÿýìg½^/Çz$…ÓTØ&8êëëðÐÃòÈpÜn·Ï竪ªª©© "õ^2øÅÁg!–5‘*&!½‚Czû\VF<<¦Óéäh,†òLE(>;€–Å5u:]"‘hooO&“ÈH ÷·<Ëq‡gÉd2ÝÝݲ, øýþ ø|>HÐyf{|¾ú@‰ ¡.O¨§QüÁx"4‡‚gxöÓŒ'oBb3t]¼kŒz>™ÐWÀàÈf³”X™D´ ¹¡qÙ)J“É´yóæ•+W !Àa ‡Ã‰D<Às€ïÁýéëëÔ ’N§ƒƒ[2™ìé陜œŒD"Á`ÍŽ&"~+½Yb½e2Jê§j © ñQDéäÀï÷ÃŒd«Ã‡G"‘âââh4ÚÞÞŽÈŸ8SD–Ás¡ó›L&˜µsžZ[[[&“9wî\4E  À&¨V¨<‰ŽÑ3 ¬É+©ñÏ3ã'Ì4]À«V}H ‰D¼^oCCƒÉd‚ÿw[[[2™t»ÝË—/¯««3™LñxÜd2A_&„à>†0ø;uêÔÞ½{«««oºé¦ñññ½{÷z½Þ­[·â0Ü"Þ=€³ »vuuUWW¯\¹ÒívÓ9 å.äs8àBÌÃP+ÞMë+hq&ÑØØÈ‰{ô/&UÜ‘šˆè¢ù|>†àµÁË¥Íf[¼xñ’%KàGàÑŒk õ"¬˜‘H$“ÉØívÌTœRŠë yY"ÃL0ôù|õõõD+¦VB›Ð)ÀV W ­ÑA7¢Åˆ¦#·UÀ7 "¼LŒ|Ñä309cª–cú¹PûLTåüts7Õ:¥â ÓµåßÄŸøˆæ{-Ít×yþ ªýô…¹Â+ˆ«Yàï4;{\¨<àÜy©¥­­Mñµ¯}Mñ»ßýî©§žÒh4÷ÝwßÈȈÙlÖjµ¯¾új&“ùÄ'>ÑÖÖæõzùwm?òÈ#O?ýôÎ;/Ûº@¹°ýy:>qâÄ>ðÖÖÖ'žxâãÿø¬4Ý,ÞeV2'~ï{ß›Ñøæ2îÎ3'¾=ett´°ò—a-?—9ñm(>úèÿøÇwµ¼`ÉáÎ~ÝÂp3–B)èÿú_ÿëZWjæ2ã,t…ˆÌ2'Þÿýãããßýîw?ûÙÏ^˜ƒÜÜÜ|÷ÝwÝÿý׺‘.³@gñ6ì0ÎW8"M'IJBtþÁ‚[°’ÉdGGG<šƒdCtAY¡ý?~|×®]Ùl¶©©iþüù´í#-ÈÉdrÏž=‡J&“EEE+W®¬¨¨ˆD"Ï>ûì¡C‡4Íí·ßþ¡}¨¾¾ž˜ð©Õ(þ;d¶B¾<À)¸ˆvË0ª§hGDŒH#(IÙuó¦J¨ UHcccSS °ðKRI *ŸÏc÷O-LmKô+ˆ,$f¤Â[¾p«Êá-­V 4Ðëõ.X°Q¢N§Ëd2ç>žH$ iÓA(Þ+È4½Þ¢gATo0À0ÞÍU0šé>,¢€Æ‚à$L­4®C¡P (++s¹\¹\¶tPÒ»†›˜PpÆþþþt: «&«Õ û¼t:æÛl„d \qÂ#ºÓèèèððpUUUQQä9¨j"‘ƒP$q"|ß§¦¦ÆÇÇ÷ŒŠ0ž+ŒÜîîîP(488888èp8ÀƒÌ kbb"‘H Y C"‘8{ö,ø8ÀMŠŠŠ@U#Ýk*•êîî& ½M½^ßÔÔTQQÑ××'„H¥R¹\ndd$Mϸ]OOO:úãÿ;j¨G§¦¦ €kiiý$‘H`˜á¥Üˆ²"”›m‰?§R0ç/ò' ¸›^¯?yò$ªêt:‹ŠŠNž<‰\œ” rÚÆMoÕ@wJ§Ó±X o“ÌÈa…& À¸H°Ë»:¾KB6üLèƒ ììì|þùçW¯^½nÝ:³ÙœJ¥6×jµÞpà ·Þz«ÛíÆÒ´3!wßC³Cg·ÛìvûÁƒãñøÐИ°èö$+&aÅH§,”&E0¶ a vJ¯©:– Ìq4>KÓ%ö*^- Ó¨‘Q›Í"óÈÈH$±X,UUU‹-òù|tâÂߎj•§… ‰477Ÿ>}:‹Á¥±´´”Z€2–~J‘ÉdŽ?þÊ+¯€»uëÖ­[·b¬åY&Z …è64r ^5ò¹½…l•xâ ú.¡„üØ€FRmh•D7a§F&Šþ4£³6]“f0>u²ÉG1Ž[TyNT[²wk“1 vè¢Â¹è—ô3G¯F1™LÉdr6Ù[±Xì2¾‹IjÍš5BˆG}T§Ó½úê«›6múïÿþïƒ>öØc¼ÿþûGGG¿ñoü÷ÿ7ÿ®^¯ß±cG0<~ü8"ä+)nëÿøÇ€ŠV¯^ý«_ýjáÂ…«W¯ž•Ö›­»ðÔ`›6mú—ù—o¼ñRá­Ë¶–/¼ûîÝ»ßfxk¶¬åU™?ùÉO®Y³fß¾}s™g±¼ã¬åE;;rÅθ*\‡å+_ùÊž={š››…wÞyçý÷ßÿ?ÇZ¾p‚Òjµ€·^|ñÅÏ|æ3_ùÊW¾ùÍo¾ÿýïÏ{Þ³zõj—ËÆÔÔTww÷áÇŸyæ™cÇŽ}ô£ýÇüÇÿüÏÿ¼Öt™Ý•oAÞþ2#¶%X„ÌiB¡íÐç±ÕŽD"ÝÝÝÙl¶¤¤Äf³ê$+v*B$IJ$£££p‹W)° Á9ÂK~8,): lÁ-‹Ûí¶X,´áBÐá6ß.çóy¨¥ aMlè=OII 夣B2 •ANôK“R¨ž€i=á¦N@)¤'Á=*J5>8A#m¬Uâ/IIË剂yo ’¾†ç2™LkÖ¬™?>ôD)µ··ïÚµ ù©5H-„h‘}²ªªŠ“ødÅÅŸAý =!s\“Þ †ÙÞã—%%%xоxFƒ%¯¤–M ÍH ÕG£¤Ÿ›œœŒÅbÞºG&>a$XËårHß)„ÇsÁH X9Žt:LJ‡‡!ØBgxƒ‹¥ººÚh4ƒÁ@ ÐÕÕeµZÑÿÑÀaAfC‚·È¯yóÍ7Ïœ9311 …œN'ž#7‰ˆxF³t:}êÔ)òùâ&IÚ mKY;3™L<£££nÜn7jူLŒ§ÃgxTH.ØIÄxå Gšr¹|*1MÁüKVDñBá÷¡M\Fë‘Ròuˆ÷kµZ‘È_ª—.1#âvƒÁ7Þx£µµU‡‹‹‹½^/”Ý”§‚|+ƒÓÏç@kkëúõëÉ€Ÿ8k‚ˆÐÂÄ;õ<8f!Õò'1MŸÄŠVÉàI/ˆÛÛÑ/©æ´À©bh¾" &ÖÎ+–ùxŽHæYMÚprÕ„@7¢òqèSºèíóR¸—#BŸFI^)fB0U‡%³^>ó™Ï|ÿûߟµÌ‰BòD¿¤‚}f¨ÎÎÎ|ä#ðS¿á†~úÓŸ !Ö¯_ÿÛßþvË–-/½ô’껋-úøÇ?þƒüà|É2.©\ØþªË—/衇N:õ¡}hÿþý³Ò€³r¤ëéé—êåU`F ØŒt¶·¼ûîÝ»g·qÞ²¨öĨüeXË !ÿó?ÿóG?úÑøøøðð°Á`øÐ‡>„ÍÇÛüPïÖRèÔ¾bÅŠ­[·þêW¿ºÖU›¹LMM=øàƒÜ}ß¾}O>ùäÈÈÈ;"_{{{ss3—‚¾S¬åõzý•[ËNPGÅŸ,X°oß¾?þñ?ùÉOžzê©ßüæ7…_///ÿüç?ÿ‡?üámÏ(O» ÇnÄt‚½¬XwÓ®¨¨¨hdddppP–å… b’“ \€k,Z´¨¦¦&Ž¡Qr#ÍI¥R§Nzá…ººº èÛ¼yscc£Á`p8 ƒƒƒ&“iéÒ¥n·[žîŸ‚í)(*0Ÿ"!4‚Òt:]iiiyy9öú\އ7öÓ°U¶Z­ØË’Nf~CB»Ý^QQÉ ¥çÓ²,à²"B BVí”°Í-**Z³fMee%1§€Žq½#‰i‘$%/$Ô( ¢íB- ²‚С™î'BjjlÄa¨‡£Ñ($0”ó‹@ˆ‰è<Ñh៬F4 \ '¹\îÀv»Šò\ýˆxÅ÷÷.—ë½ï}ï­·Þj6›ñìc@ËF€¸±¿¿?ô÷÷—••¢àÐLQQÁ@HV\\\TT”H$³ ˜œ¤²`µ´´´¶¶–——#þ„Žä™€Tb±X[[ÛÀÀÀÙ³geY.--EÀe@‹É ,<ÂãdYîèèB¼ð ÅÅÅF£Ý “ɀ·£µµu``à©§ž*++3HÁèüÚ)c)€K¡àhÜCã†>€Hù544,ä&''#ƒæ311áóù`7CœL&@QQQ¿ÝnW-:€ƒA/JÄ iº7qÖ4 @%‹Å‚@á7¦…x<^VVÖÐÐV ”Pét5~ÚÞÞ …·mÛ¼$AÄÛ„F¤¡‡ÖN§Ó}}}àmܸÑjµRøËåHÊzæÌ™ÿ÷ÿþ_uuõ‡>ô!«ÕJVPÄC¡þI ú!æ4Ì®0 "Ö*:ÈŒªeE¯×÷÷÷÷ôô@,i0V®\yÓM7AêK´\ÛqV MôÒ³Ùl¿N§óù|555”æ•`b¼,p¦(~–¦ëàx\­™.æg …G,¨6(WXª2™L[[[KK‹Ýn_¾|yII qºs³'zF H¸>å%œ˜˜ëèèðx;ðœhÀ¡½Ô²hÑ"¿„0IÅÏK–,éêêB¶ËÍ›7oÞ¼yïÞ½ãããÐó£,_¾üßþíßfå„6›mÆ çûë¶mÛ¾øÅ/~ãßxà„gÏžEš‰Ù-Wx·Û-øÀÀ@ X¸pá¥V€sn¼ñÆÏþó<ðÀÅÀ[…wûã¨òòr¶ !êëë?ýéOêSŸºÂkrTþm~œww©®®þêW¿zúôé={ö,X°à;ßùζmÛ^|ñÅk]¯ó–G}ô™gžájÊC‡ !*++¯uÕ.ªJA_ýu$«ºÞJá,ô“ŸüäÊ/«š ø¹±F£¹ë®»îºë.ÈÃÏ;‡ Èjµú|>ä°»Ö­2;%?{ÖòW©h˜/ý’ŽX…²îêê ƒ:®¦¦òèSÀÚ “ÏÆÆÆÍ›7ž:ujÿþý·ÜrKII öétyÊ·oß~àÀd_¼xñÖ­[aƒÌvãëׯÇ/i …@ PWWºfè¿„L•——;8ã`ŸJ.<ä~F Á ”â Ö#£Ñ·À„µÉ,i·¬°¥’Éd¡÷®ÓØØ¸qãFDˆ¥<ÇŠ²Ú» Lĺ0XŸ6‚Ň`¬àA-599€Ùl¦H›LˆsA•¯jxxøìÙ³Èl¨ ɵFGG_ýuœü#9£Ñh„åäÖŒsXùÂ#œ>}Úï÷777oß¾Ýápy0ÆRBT—­©©©®®ƒ===Ц‚–Àbsd³Ùîînl˜ %„r ñMMh„p8|êÔ)Ì]Ì‘ÞS111쟈ëNž<944‡}>š(™LâÃÀ£Ñ(¸H@`×®]Gõx8j=Œ,¼) ä’’’µk×"GulÁÄŒZ–3wÔŽ„Ãaâ 1Mý„)T£¤ÇåA5¶UËŠZR8=J,'#á°À#›››³Ùìš5kšššÐ&|!“ΣɚR  OMÐs‚Á`__ŸÓé,))™7o^UU’ëÅb1¤ V% àO¡Z:m6N_8}•?&€TäÅäË-»ôDª¯ó¶‚'=æFj=MØ™ÿ—w?þ§ÒÒÒ¥K—bª®®öz½¨<¥,ˆ¸Ðãñ¬Zµ*›ÍŽŒŒ”••­]»Öb± c?“à-ôtüçBлò©ÚKó,ÿ ¬HãU#Ž¿~®ÃÏ®¨³ñqÁ¿Nó¡P2uzÈ{¬ªãåY‚ ÞþãÏÈ{” $u$¶(Ä—×0Q¼ªOò+ˆÙ(¾ÎlÂ[###@£Þòó˜bŽ=úÿñô{•qÒeg¹š±\FæÄøÃþð‡g±3æ8›Ý»\væÄÇ>|øÏþìÏÄåfN×. ^WW×7¿ùÍo~ó›×m ÿG•3'RikkûÖ·¾EŽf×óyòÉ'UÙ¯C:Ïùò±V~Vx¯Wµ`B;vl.sâ•:¼øQv¾óÛË+…ßU]Ÿo¹Ûç f: ³äD"3&DM²,'“ɱ±1¸YC655UYYYRRÒÞÞ¾}ûöD"±téRº@ ££cß¾}ÍÍ͉DammíÔÔÔÈÈ‚d³Ù|ã7¢Å@WÑjµ‘H$•J!¢V«ííííééÑétd&E­Ý)»»»Aiñx*„(4•Ja?@Òªááa"ÁÑy²N§«««Óh4½½½Ø°ƒ Ì—x<®n V Ï¡Dëíí±^ÚÑh””}h^à¥ÓiÐöíÛá182™L2™DDM¦×Ø»ëõú–––¾¾¾?üáo¼ñvöäMÎ߉DàuWW n@ÃáAˆP4€EEEf³™0—©©©X,Ößßüe``IîA¦Ãƒ f2·Û]WWçr¹@ðù|¤ƒƒ(d1Ð[Àî!kê©©)€ ¡PéwɨdFZ$#O¥R@IÀí‚Òcvñ,@4H"‡‚šòsQDäóù<vÚè3v»Ýn·£‰HáB¬.¼‘ŽŽŽ7ß|S£Ñ¬\¹²¶¶ÞØL€}wïÞÝÛÛû¡}¨¦¦ÏBvKF£Ú+!D2™4V«™ÝdfU ð¨$ÂTÇÃáðøøøÖ­[W­Z…·‰šS§N™ÍæU«VÙívY±Äž˜˜ðz½$ƒžŽ†-A6ˆŠ‰yîܹÁÁÁ††ÇCÕäð*ÒM†œJì U&5j+ÕäI-Ó:X_iXÚVík˜! vzá/ÝW£˜÷Që¡yIkµZ—.]ŠS@Žhä•ô…æî$+.u¤ÞåѾ^¯w¹\h ÒS,+5¿×ùÂ`Žˆé(‡Tÿ…X5‰œ:ujhhÈãñ¬X±ù@ «V:ªÍº0z#Bò$‚ÈëÉdÆÇÇGGGÛÛÛN'²à Võ°K»xËåri¦Ûœç§“S’§gQÁ%b:‡#5Þ²X,°çQ½jOWCÙl¶[n¹ÐsUUUEEÝ7Ç Ö,½^_WWg·ÛS©Ò¡jYžGzpŽ©èHÒô¤ôE¬ÔTÿB‹.ÝOµÃá)/¤é'I9×É3.º P™±%–AX(lAæR‹~Iv]#”‰éØSá¨QQ´Tã—z ;:]$²Bhïê•Ù·ɲ|îÜ9n/\øSÅb±êêêíÛ·ßzë­©TjÆ 7ß|ó~ô#N÷‰O|âŽ;îøØÇ>&„øÚ×¾öØcùýþ+ÇΗ9ñ-¿ …}ôÑ‹¤2]L™1ÇÙeßerròË_þ22bò‡ýáxI™ /r1™gü¢Õj…äÅd¥¼Âò¥/}éÀo¾ù&þ»ÿþ7Ž«Òðr¾Ì‰;v쀵ü}÷Ý÷Ì3Ï!dYþæ7¿ùÏÿüÏBˆÆÆÆ—_~¹®®î*=È»¯œ/s"iý~ô£A.·nݺÉÉÉãÇ_ë*ÏPn¹å–}ûö ¦¦lhhèìì|§dNĬ˥ ¯½öâüë­Ì8™\aæÄ¯)„ãŒà‹,_ÿúׯÏäƒoYË—h¼Å·b³‚>ÓìP*ò((‰ŒŒŒLNNVTT@§655 …vîÜùꫯ‚Õåt:pŒŒ€[tîܹ±±1ø!LNNÂë'‰ä• ñBˆ£GŽÙívh©4 H^ÀûýþX,f0˜lhh¨§§gll¬¿¿ßf³ê‚§ ³^ 6cccÑh4‹9N«ÕJv?ĬNÑÓÓ»¢––ä:@Ä MÇÇÇûúúzzzæÍ›g0’É$ˆB8„Ï+YÀ‰Ößß@´¨¨Ǩ[GGÇØØ˜P"ä\.‹ÅÂá0ìZ6àq`!‹Ä¬:&&&ÆÇÇAJ ‡ÃðN"zb~4 X’$…ÃadÙkii!I…,Ë`!Á¨ð `¯™Édb±ŒÀÑx"EEEíííË—/_¾|9!òtkdÀ^àL¡bZ­ä¬ßýîwp'¬­­df±Xl6ÂÚ®®®'Ÿ|Òçó=ðÀ>Ÿ*3À|BˆD"Áe`ÖH—Ïç#‘H.—ëëëÛ¹sç† –/_>99Iže²,g2߈ÿÒßßÿÛßþ¶¬¬lÛ¶m áÀ ƒ¯ ØC6›-—˽ñÆK–,ñxŸG·$¼Ïñ^¯ÿà?ØÔÔÕ$HQ½ùæ›Q1Œ ²®CÝЫÉÓ âUb÷ ßZ,Y‘Õèt:"$êõúòòòÒÒRÇÃi;èf~¿ÿæ›o–£.›d¶M"GÁðòŽÁ·Ð“Gqq1D¸ôWIqªÂûň \ Ô@ZdˆC•ijÙlf³®çf*œ'É,I°8;Vü5©"j =bñh„‚ò5£gJ`ÌÁ/Ê §ÂJÈÊ .//_¾|¹Õj…J—OòÅÚœtvDÏÁô† ‡ØÀZB KŠ÷¼FñöæÆÛ…l£ ,:…“§³·òùüððp2™looÏårUUUD0Ó)T& å $)€¹F£±ººzéÒ¥ãããHX¾|9~#IÒ·¿ýíGy$ µ··ç;ßyì±ÇÞžy·–B­ßŽ;†††®¸ª¥PMYQQñ™Ï|æZ×ëb U¾©©éá‡þ³?û³ËH*úö”'“+LŒ;ã5o¾ùæË¶)|‡äS¿ÔoˆGY.oÃ|±oíñßáááþþþÉÉÉ @vÍWooïÐÐx£Ñ(Bî\.WSSƒø™k^Š‹‹ív;m×(ç`.—‹D"’âNB¼„ßÙlvxx8‹¹ÝnìªC¡Ðäääøøx0”eÙn·;À:™ÎðPÏ\.oãĹÀ‘õàà ¤0‰„Â3"Ð**8û$‰D"A!Ôn\<øˆæp8Μ9ƒä†8õAP‰D¡¹\îðáÃýýý$‘“™MϺuëÖ®]‹p5¶{÷îžžž­[·.Y²Än·ƒÁ“Íf³Ùlˆ(HGyôèÑ3gÎÜvÛmóçÏ‹˜Jétº¨¨Èår!Œ!j’Á`سgÏ‘#G>ô¡-]º”™÷1TrçÎ@àöÛo_»v-p$1£s{~|«X,ær¹n¹å–5kÖ8Ná ï9ÎöövƒÁPYYép8Ð`NI’ !IÕ †PÀ~Èd2uuu-Y²¤®®Ž4‰@((Éб\.çt:ÿô§?y½Þ¦¦&·ÛM¼ ª9ýý³´´´¸¸xÑ¢E”^ “É”––b,@L:22b0Š‹‹çÍ›W^^Nhá{¡Ù¿F£ñz½^Éì%Ï ¹… ú !B/†y@Æ:ÜlŽBA´Œ¤p— ššòù|z½¾»»;“É`@ƒç=~üøÔÔÔ¼yó;h”´¨$V42÷f&•±`«\.b.žËåÌf3¦&D°`1p&Æ i©0Ò%FOCˆ›L&C¡¥zäƒN(À½òu­Ѽ€#å‚‚:C?ô×BqÍÓNO¬‰B‰IœH5‘™ ‹&¡(ÇùJ¦@—¨ªª¢±Ì#8UN7N`¡–‹3AïÂbŸˆ-ÆjCŠoY†÷mŠº¹b‹>Ol5™)åñ_Ø5J’„³±%K–˜ \±$Cæ( ljÈZžlõ¶mÛæ÷ûƒÁà™3gzzz¢Ñ(ºõUƒ„Â!íïï‡ã¡Ïçóz½åååh¾VÉ)„ÀĉDp€þ<-N˜ÉdFFF‡aØÒ+Î+9F¨ÑR©ff­’#E燞ždž•”\ ˜$!ÙÆxB¾ÕšÀt/"˜›ÖˆîînГÛÚÚR©ÔÐÐP:nkkƒÕE‘µ_^IZBWˆÇãp$¤…X«$ºÌ6ç^X÷ >òŽS"¡Ø„aæá¸ÜÑÓÐ\؇à.P+Ó5qJŽ! ¿Ç´ÿPBÓж€íà8‰A')ü\·áæ)+´e,6›­ªªjÉ’%óæÍ)›3¹È¡’Ö/B»#ì’DÁ’$%‰¡¡!«ÕŠ´­¨¥IápØU-<ðÀìÀ[dN|úôéËøú—¾ô¥}ûö=ðÀ¿þõ¯KJJž{î9ü¾±±?ÿä'? ƒßþö·¯v‹¼e¹á†®Û»Ì˜nìý¯ÿUVVv…ùÖ·¾uÔ¾Hy¯6 qÆRTTtøðáË€·¨ðþ\TT´hÑ¢ýû÷¿ýò®,3fNüò—¿|Ýb.O<ñDOOÏþð‡d2yäÈ‘§Ÿ~ú•9ñ«_ýj"‘¨©©áüùë³Ì8™ «Ìî5¿ûÝï¾ íuUò—å½EÁçÛVäéj Š1Pÿ¾¾¾ñññ|>_QQCÂ|>ïr¹xàÍ›7“Ë»PN5¡û"+‰±Áj¡3mÚ\Šù,œ‰^´}ûöcÇŽÝsÏ=7ß|s.—{饗‰ÁjuuõÆkkkAÊJæÇ‰‰‰––­V»|ùr˜€T$xL·Û}ðàÁ|àK—.…pB&ŽàØöÕW_}ñÅo¿ýöM›6!cyÐršR^IŸ´ÿþt:½qãÆ[n¹‡ùØjG£Ql²ÑP¡PˆHЪ7"Ër:öx_EE2Â[½³³³¹¹9•JUTTðv&s@ôÑ"‘ÈÁƒ»ººHŠÇSH •R(–aqPy££Ñh8ŽD"ÍÍÍ„QãSã’@=0ÙÃK°T€Y¢à½£‰‘¬Ø®®.Z_8(,M§~KŒ¥…K¡¤Ž°-ÊX"”” ×£q2A+¸˜îíÅG"šä™ˆN˜‘Á`ÿ ¨,ËÅÅŇíO¤0Àg_Óì„„*tx‰ŠO¡Œ$Þ9–Št``@¯×c5'N½—KìH­Ç%®~Ñp6àõz锣íy&@¾ªåñÇñÅgÞ²ÛíÅÅÅÁ`ðòà-FóÔSO}îsŸ[¸pá?ýÓ?Ýu×]‡§OŸþêW¿º}ûö={ö€â1WÎWfLzx©y/û"þâ…³R^½ryXÉÏþsˆ·oßþꫯÞvÛmBˆ\.wæÌ!Dcc#¹DÍ•Ë.3fN¼žvjjêoÿöoyæÄ–––çž{.¼#2'¾ƒÌÑge*{®ùN,—±· IÅìx{ªJû!‚·`¼•J¥$IBÌ]—Íf«¯¯÷ù|ĪÀ¡¥F£Fò :<çð lsiFú|>cyl÷ÁÀª­­---sŠ‹AÎ;—H$ª««.\XSSãp8Ün·Óé„^fOšéɆˆ„pÈ`0Ô××Ï›7¶bÜ”„žl$ºÂv™ŸNç•,ã¸r:Îårv»&5µG0¾ÁÁÁááa• =þ C«`0'rréÖëõÈÍ÷Á2¶HŠ4‘’ð¾HE& ` Ø Õ¼Ÿ¸‹ ÝH%ÇÀœšš"Þ¹Q £Š=H,‹ÅÎ;çp8àYN RÕ‘ †|…âC¢œÁoÄë ®L&C&q*ÄŠz%è]…ë!0ƒÙ<ø’$…Ãa½^FÏž=ÛÜÜ|æÌ™P(”Ëå.S(<)þÒyµ9`*XÄ¢2dÓq P0SKñ€ç-çœB­†ŠCº ˆ4Ñs2™Ì¹sç^xáY–W¯^ „!tB‡Á¨ÊDIý¿M08©€w*jÞ©¦äŸäØMn’’;©šHšžC–3Ñ sòÅíÃTs‹FÉü(+=3Ú? ÆrâFö|ç¼"·Ûíëׯ_ºtiyy9ÌïT7հ܈¸2„é¾4êyd[@lïI|M$;ü „‹8&ô6à7Ôù :á÷’÷1ú Ñp8LíÂ:ˆÁIŸžWr†P: jRÀ‘²,ïÝ»÷Ô©S”¯™„H‚))R_zRÌoÄþ£þ‰\±cccgΜÁrVTT„ô¯Á`Ðï÷cõ¡c¸ôä‰k*•ŠF£Ðø™1ŸÏ£·B§a™À-ˆÓ¸gãAI0HŽÆam…¨Üb±ð|—DXJ˜W’‡$“ÉÖÖÖ£GjµÚ5kÖTTTœ~üøOúÓ'Ÿ|òÎ;ïüä'?¹fÍš}ûö•••ýÝßýݾð…ëÐMüW¸Öïú—ˉ™Ô”===ÅÅÅõõõ׺jï¶2+SÙE^ a`p¾"+)óÞ¡…ŸÈ]üö‚¶5<ðà*l¥¯pOJ3åÓQ…yØ ž;w.N›L¦ââb2§À–‘lƒT Ʀ•bËB6`q;¶bäÌ­'vf™L&;N˜1ÁÉ›„E¨a__ßààà±cÇ`]]]MzÀ’’FƒS\þR²Éår~¿ßb±€k&)V¸ô¾°Öjµ°'‡¬@šn‘gµ!6ÃW¸0*z½^̽²,wttóµL<'¶ã(BAÛnHù…4¤Z­ˆšZRÌõ¹v ÛëKI¾ì$3¤§Põ."‚QÊBT’t%òt_aâ÷Ôßß?88¸yófºQO êN§‹Åb###HãÅÇ…²ÇÊ39Ü¡¯Â`Ëd2Á›‰>h"™Âjµ‚â!±"¦3 QÕH$‚PM‘H$ÆÆÆººº"‘Hooossóøø8 4Ft~MBd¤Ëm ƒBeA¨b¯€`àŒü­xgV yßQ%½h~/B©ˆzYYYi6›ñáööögŸ}¶««ëÞ{ïmllä°‚`IÐËÂp½pÂQ1z0Žªªªªtv„Ç¡³‘Ù<E>ˤ¡ƒÁi•j2¤ù‡:I^IJÈû8AÔëd–…>I‡ª„dñ9S£ØêŠ/p O'@唜T RgLMMÅãq¬›ªù"¡¯T€ ê±ºßïO¥RétúôéÓ^¯ÔNÀøà!R¥Q£ Å/ YDx¤ÍÏ3øj¥QÅ ÆxjX8x4EºXb‹ÆE:¥ Ù‘BA‹"«ÕZQQ¶ŽÁ`p8dHG§ðBÔ‹D"ÈžgÙð÷m)4€Y>Ÿ¯¬¬Ìår!, QšiAO [¶l©¨¨ tx4X$…­C,›ÍrÃ/t°sçÎ?~|õêÕ«V­ÂŠ€!LsˆPòl¢kZûñnÀçvüÄ̳gÏêtº%K–TTTƒÁ¡¡¡òòòêêjþêØÓÓ †9òC~&AI>Æ9OŠg-ä`1PQ¾"óA ¤Q0tR«¤ñEÝÀÌB iIÅ»&m# Ÿ…Ât£ã¥œ’núÄÆÆÆ\.˜2“ÉàØÃápÐL…µ[µ©#@Š'jà3µ= Ñcù«šgT½ô* Q³o-_¾|ïÞ½cccãããoéÔû–»êññqd)B|ík_ûÚ×¾v5šà22'Îz9_޳+,úÓŸ®œ*uÙ™•»_^Qu­­[·^êW Ë/ùË_þò—øùßø).çÊÅ— gNlmmýüç?ÿùÏþZWó­Ë;"ùàŒ³ÊÕ;*¹ªåjL&³rM«ÕúNÌœˆƒÇ|ÉÎ[ e·w…ŠÅ ïrhWD8N×Ož<ÙÝÝ=11áv»jb“—W ÂeEê8€N¿iFÕ&š†¤¨ÆÈ†F£XÀÒ»[Ø®ÞÂίªªª¼¼ñ7ÍœÔ××wòäI6›máÂ…K—.-++3›Í8ËB÷¡Øô~z8ˆƒsT„|pé‚ 7¼S@ ˆµÁÇ yý ÓÄããÄçóAʇ`†²•ñB¿ATCÚ :çGV/E<žTõ¡бXLÃühÏ×)ÎÄ#ONN’ ƒ^«ê. $E;&˜² &/‚E>ø…(---Ùl¶²²Yö(<¦Ÿ)òDÿ§CoIñ:ÁŸbTŽ8 ~æ‚A åéY±$fxDµ…»MQ( ˜t:J¥2™ÌÐÐÐøøøÐÐPkkëéÓ§Ãáp*•ÂH!¢Uá75”¤H«8-1“ÉÀÈ /·ÖL÷§¾Šë“;¾¬d4Ì«˜÷CŽ„b"3 PP$ê²"Ò0ëôL& _zé¥3gÎ466®[·Ž(¨ò:Î`0^¤'U…¸#,“É@eÉ{8ÿ†¡ˆ3Þ7„D²ÔëðÉx<Žî-¦;.š49‘H; –@ à÷û…ÃÃÃv»ˆN„AONN¦R©X,†„Bñ&Ë)†ÙÄ0’etT\\((ÍÿTd–Ñ•cm˜Í(C%nÞ p(z4 %2ùæºH´ÍEl'“Iä—8yò$4ÂŒ ºa"" h,¸µšÌGáY4áã!\¤2üãÿÇívû¦M›-Zâ® `‚¼í%–füSz¦¦¦Nž<ùÜsÏ•——¿ÿýfr‹€'H}†^ ê ÊÐÐP(O$òtT@ó! ™h4ÚÝÝ‹Å|>_ee%¨U‹îNZ­¶¬¬, ™ÍæÆÆF—Ë…çß7rèYR8Î%%%§´´Ôjµb¬‘~\EÑU½qÁȪø0¦q²Z§Qž—V«EîHÜ‹23̸-¡cša©'© õZ‹ ‘ …Zå_K’ù„ +‚ÌTƒWfv{4Å‘d’Ò Ò‚Bó=>Z’6'|¾¢â`«P£Ñ®àfY–-‹ËåÂì'˜éž`lJ»óõˆÆ?K££ÉÉIh½ËËË%…2Éw üÕó[\b2™’ÉälÂ[ø¡¹¹ù-1…Ÿ Ju,áT¬Vk$™ÝU4\¿øÅ/þä'?‘$©»»ûš$³Ûí_ÿú×çà’Y)”91—Ë-]ºôܹsÿñÿñ¥/}é_¨®®¾Ú@ò\)..þÌg>óƒüàZWäŠJaæÄë3ùàŒ³Š45f®!ZZZ>þñŸ8qbÙ²e_úÒ—¶nÝJV’T2™ÌéÓ§þóŸ?÷Üs7ÝtÓÏ~ö³‡zè:„5/¦ÐÑý•\D¾ÄÄ‹—Qx L[F„î@ùæ€Vú ñ!IØø‹³c(<“Y†{lÓ‰%!Øa/wŽ ((›Í655™L¦ÖÖÖÎÎN¿ß …7Òƒär¹P(‡…]]]GŽAÆ«ºººÊÊÊââbHiãXSSS\\Œ7öñ´3¦˜_§ÓY,–’’HNà)Î=Ôzˆ-…©TJ¯×;¤“Ǿ™ÒA ec†cÞÂw+Ûl6çS»Ñ—œû9;Œ÷~Ì‹”‚\,÷Â23±F¡q™ƒ¬˜Cq6måáÉ"¦g=—¦3ùÎ> ¶´´À¡™îHOM X„.˜g¾ÑD$Ì!ý”è“¢.ñPé ñF @C_BœŒ{Qœ755ÕÛÛÛÕÕ …`í÷ûÃá°Ì|Ê…‚ò ¹½2ŒÊÀ•Wœ¤é„Ñp+**2™Lœû a¦Nhm<# 7‰²O“š øq‚!’ÔÂp Š|ÐGFFÆÆÆL&Ó믿Ž} ¤—@€:0\£Ñ˜ÏçC¡ÐÄÄÄðððøø¸Åb!>3)À DÂÛŒF£¹ /)))...++ÃQ Ž '¤ ž3®Ëô\¤Ý¦%£3›ÄrDÐä£"`Êò^>ùóy[0½\à°˜í …oü»ªã®›ÃJ-M/búy ǤøZÀ'(êWª†¢Ûñ+ÚÃ!ÁŒ[2jùi_ãTu¦ƒF&ÊÎ0¢Ñ¨$ID £½«Ää·ªW¬QrÝÐ&Š×¯§Ta$¡öz½`Г9=ÏGÄ[òê…$ŸùÌg¾ÿýïÏl´bÅ üp1ðVaù§ú§ï~÷»™LæsŸûÜÃ?Lm“‡wh ö¹òö—P(T__‰Dn¿ýö c[se®\RyÇ©)çÊÅ”E‹>|ø‰'žøÑ~„<˜v»ÝãñµL$±X Ö­7Þxã³Ï>»iÓ¦k]å+*8ç{¦Ký:r÷À¹ö Ù[ª"ÐpÄôƒ>lÃá0¢2¯×ër¹(ì ˜_pî ¿‡·Tw¡ˆ+Åð'D”!Áç›o¾ W®\¹víÚP(ÔÕÕuôèÑžž¤BCÊÅKÇãñxgg'$ŠÅÅÅ .DÒ+œKÐpH0()ôº ||ÃJÈ·Ô²"DÞ1D›äFA—B£ÑX­VÕÕ4JV,£ÑØÐÐPZZÊU“ź…Ÿ ÞâàGÙóô…b:ÆßNÈóù<Ž?‰‡a‰E;BëÐOdÆ®â—å´#kµÚÆÆÆ TTT¸I„° p4$EÒBo„„‰D‚âjÕn?aGõu^¤éVPƒ›Îùéõzd¨ŒÇã©Tª««ëÀ}}}Ùl6 qÈ }Àb±@ä¨Óé¼^ïš5kð‘bT²Lƒ^ ;0&''Ãá0”eñx),Óé4 ¡’ %²X,ÐÅÀ ˜òßfâƒó šˆ$ÆpçÉf³mûÈd2ð/;xð`4}á…„mmmÉd¹)ó›ß ;ªÄp€z{{aM‘(+ÎÍá‚ ¢µ`0ØÚÚª×ëÇÆÆ¼^¯Ïç£ Äãqä,ƒ¦X–e£Ñ855uàÀÀg`wâq€X}@ÌÙßß …vïÞÝÖÖ¤‰#w¼ûE"‘\.xš\x¢Ñ( ®P(„‡E3¢eÀvA>ä$u»ÝûÐr 8ë<ÁùªsAs…÷‹”4Ped…©–D=°õ’MyÅ­I5EŸ",•&!D<œ˜˜X»v-‡–‹ö…¢™¢êqb§|e£‹ó“ ›è°s ÉdZ¼x±Ñh\¾|97]=>B¿¡¸¸&MÝ‚™RÝHŽšWŒÉ$濆¾„áv»çÍ›'Ër(êëëÇãØ´D""k °@ךššÂq ¦,,=ñx¼¶¶6Nº¯Ì¸ÐsÌB08›SÊ*¦f\ñUoú 5A®ôPТòÃ’ \™¯,…F“˜Ì¤ÖªjÆêÍx/Ú`ð­fH:Xš±ÂªqÆÆ—fBf1î8rȲp˜h týçëÏTj1‰a…’$Ùl¶%K–ÀˆNöD¦ãë ï—ºù¼@œ±Ìl´hÑ"°â›››/õ»{÷îýæ7¿‰Ÿy䑸Ã[¶l û$º¹2WÞ² ÁòÖãñ¼òÊ+׺:så]Užxâ $»yG$œ+_ôzý§>õ©O}êS---Ü¿oo¯ßïÏår%%%7ÜpÃm·Ývë­·ÖÖÖ^ëšÎBZD\.+›ÍþéOŠÇãkÖ¬©««»¼“'¾W“ Ì_TƒRÒCÄ·ˆ ¹÷iˆ„²k'€@ukPi”K2cÙÈ ßžoÍq Ê 4555<<üòË/wttD£ÑmÛ¶UWWWTT,_¾|dd‘óÐÐÐÀÀÀÈÈìTG¾Èœ500pøðaÀ…&“ ÎæÏŸ¿qãÆùóçç¿LM™N§ý~?0‹Üôìu…b4¦Ïç%êeSRmñ¹bN(ì38×ÕÕ­ZµÊjµ"Råý'‘Hã ¯8þêlJ¥RHò,M¸êp¤ŒÐ">èjä€KK)`¼)8ÂE±«¤dp»Ý[¶l)))!¿Š®9“FÂHßF€#‚F`:ˆA‚Cݨ@Çï Ð °Bý$%e•†ùd‡Ãád2 …’É$jØIßS©TGGGssóÈÈzúÅ6@?ÍfsMMÍŠ+ª««Õ#M$c€Zè]`”PRˆ°£FZ´H$’Íf8PRRb2™À)Ë+Ì Ú>|8ìÚµ«§§G–åX,–N§a<‚,›ÍBmÇe‚ùï@ +I2Í#C"ª’¢ sß¾}¨­Édª¨¨Ðjµ~¿xx˜F:6ài@oñx|ll °Ñh´Ûí6›;Ñ€ãf6›á^QQ111122’H$ÐŒÉdmM+*Ý `šŠŠŠòòròâ™@òzýõ×s¹Üm·ÝÖØØH$BˆÔÐét~¿?‘H¤&Ïï¾¾¾ßÿþ÷’$}ðƒSŒæêt: + þú׿…BwÜqGMM º1ì™@Øá³"Z à& ÅtÙ©*zç?ÐüLÚ:ÒÒ’ŒHaa*x‹(TÂÄaP•Éd@ý£Á%3þŽFIA\?šÊTVh2ËæÆ?CÊ8Ší…b¾¦Óén¹å–ÆÆÆºº:¨#Q[¾²vÀ§eZ†ð8jå |Ðåé„eî«Å‘8Á­h(Çãr¹0¥ {÷÷÷÷÷÷Çb±h4šH$€«òi 3{("Â_8xµù\ªBdˆÍ‡sð—%Eã,˜ô/Ç3‚PüO¡y’2„Ð À­ÖfÜÕb[|!(\žè^…T»Zõ a5U¯à5Q5‘©®ãüO36  z(ôvÐéêyæ’g¢"òa¢z@üS+TÀH¬i0.©ç|·¾¤"_ÿ5kð–Á`hjj:sæ ²Ë]RiiiáÿíííÅmmm ³{>¾©•qð°Á¥8„¶\ Pй7…X„ŒPOÛ2ÚÔ …¦D7E Î™JBá•@1™L•••­­­}}}‰Dì«ÕºpáÂE‹Ánf``àìÙ³mmmpK순}ð\À¹øÆzdd¤««kÞ¼yååå%%%>Ÿ¯¸¸ „Ñhtll Ñ :ð/y“² ñŒÙl†nH(ÁÂSÀ”!ŸfÚàbÛZYY¹nݺyóæi”üâpôûýøn6›…J(v!BI(+.`k,K2™äÎhÔ7òŠ?‘¤x*ᯈɇ††FFFª\ x¯P(455‰D‚Á eÇ/AV"pgbb‚\_ñt ží"ÙÛÛÛÑÑQRRÒ×׸ ìx§R©ææf€ då&+iÂЇ††Ž?>44Ô×ׇ€áê@:9%¿Ass³ßï7™Lííív»}rr2ƒÁH$ÒÞÞî÷ûzðto‚™þ¢•ª««×®][UU%Ë2¥ñññŽŽt?B0%IšššJ§Ó€·„Bé‚ñ9Ò~E£ÑááaPÆvïÞíóùœN'š‚òcBZ …„étzddD–e &4Bn‰Î ô–XfÄú!Hl—Ë ˜‚%‹=ùä“CCCxX“É´nݺ;î¸Ãår~¢W: úÛ¶oߎœª@L&SYYYmm­ÛíFǰX,p¸3™L‡ ·ß~ûºuëÐl6›ÑhDŸŸœœÄÇÀÙ ìÁt»ÝÜ_OL·d˜˜¸ãŽ;ÊÊÊÐ&@ôÈj-o0ÆÆÆ¢Ñ(|BÑ¢5L&Syy9<ãðÖœN'&É|>Fs:(+1ZÑÔÜcªUI’È׌ð)r˜Re*H‚®VŠã (Z%‘¥4#˜Þ™ž] “?F%:*É*…â@DpPVˆŸt#q{)iºü*ÏLèx=5Óé´Z­¸;ò5Nš^TkæUbò¶¢ûÒe ¼Ó0°¼bÀOÈjåt:cÆb1˜b‡B¡@  c±‰^  '¶oF¶¢a‰k¹ Y0ýF77Šâh‘˜N‰ÒLw g'P‰NJè5á arrð®,˘0eÆ“U/ü$RÍ©ø×y}òJâ~)®jÔØGªÎTxo§Ö£U‰`åŸGúÞ±©‰f„êf½Ì¦èoùòågΜ9{ö,?Ž»˜²lÙ2úÙét¾ç=ïÁÏO?ýôƯêóÏ•wM¡…ó•W^™Ël8WæÊ\™+……öRà¥_ X,–M›6år¹yóæ!;ßéß[^Šb'1»‡ù’s*°{K’dµZ±§\ïÉdÞ4€xpBNøî©í׉FXLžeVS¹ÀÁOéïïÖà÷ûFã’%KNŸ>FGFF [Ä}YUWW—••­Y³fpp°³³³¿¿||Øö‚t–®:ªíïï@`1ìº<OIIÉÀÀ@gggqqqggg<'kp!D<§Fx"4¹sçúúúœN'‰ÚÀ† ƒ!I’ü~WW©ÒÐø Ñ/^¼xÁ‚‰D"Nã[ðºŽÇã@àĉ‰DâÈ‘# ª - 9¬Ë² zÚääd"‘êééI$N§Ón·séï 0Ï¢\ï‹RÐ}ûöŽŽÚív:çP ˆŽÅb;vì°ÛíäæÎ±]b( Œlï ªÓé¬V+lañÝt:=00ÐÓÓ|§´´žë`'ÁÀ«¢¢Âd2የ?¿L&ÓßßßÜÜ,Ëòï~÷;·Û»Àþ)™LBü L-ŸÏ§Óép8ì÷ûÓéôo~óûb±X"‘ ¥ :Â.¹C,Ë^»»»{{{‘iŽd³“““±X,™Lj4¯×k±X`Ø\TTär¹r¹\,gµZ µÛí@ÀårÝ~ûíK–,q»Ýp‘-øP{÷î¸ë®»Š‹‹‰g‘ô ~Ð(ÆÒ‚% —…D³à¹€ÎhµÚp8¼ÿþt›úúú»ï¾{þüùN§Yn9©*I’èXþ„>Óßß!læÌf3ÚäìÙ³h·áááÒÒÒ¢¢"‚‡­M&sqú˜ ¹PaH8¬‚„0âŽZ–ò’§L¥trDú£ÈŸ¢kª=#§íÐe )*ü÷xeÖc]ßÖ)λá'‚h£g¤S¯×Ë!UÝHW(TŽón”Ñ(Fþ€ÀÌw3·Û]__d¡P( F£Q@]~¿?‹aX™L&·Ûõ‘ê R¢¡æªá)1}½^oµZ‹‹‹ÁMãÇT‚åÄ)wý•p™V^^.„èìì|øá‡;vUŸ®¼ËÊßþíßÞzë­×ºse®Ì•¹r=Î`ºŒRTT´|ùrÄrW²;á{þKq~¾™ÆÞ(N“#ŸÏîÛ·oppô¤`G4Hˆ•F1è%!†¤Ø! R#X q@ü]ìàà`WWT`v»}bb"Ž¿üòË>Ÿ^ bg‰}-Ô¥¥¥>Ÿ/www÷ôôVƒÏô¤RT! av}}}‘¶×ëÍd2ðŽF£.—Ëh4"/ž$I”òŒ étºÑÑÑH$ÒÝÝíóù‡þƒ¬lšÑÑÑþþ~°º YÂvÙd2…ÃáÇ'“I< ŽgÓ€fG$ŸW¨áUêt:›Í&IR,Ëf³Ñh4 E"‘p8 ‘‘PŸ¹ZØ ¤ øPž®®®@ <1Ožå2 ÑhGúLJ ²HüE %kÇAâáÙöD| ç¯ÉÉɱ±1´y>ŸGšªl6;:: º÷iæFK6U@Žˆ¤FI '&&R©T ÀhDÄãñ“'Oj˜£¿jt²Z­>Ÿ¯´´(§Ó $.I qhhè7ÞÐétwÞyç¼yóÖL§ÓÀì<FâœÎÎÎsçÎUUUÝrË-UUUìE ±0ºçÍ›g³Ùª««ÑÈ‘ˆ u™½0âN &k"x‹À#Ðð-‡Ã±qãÆ†† ^ ±ÄL¤†üô¤‡ø7‡Ãai£Sv|þùçKKKËËË¡a„Q#Xôtà€ÃÃÃ.—+ ¥R) (Ò½Òó†B¡ááa·Û­b6škÆI›þ* Äk24 Ð(fÒ4Í8Kðw>– ÿäùæù ܨ_C¼+„þ¤ÓéúmÆãYQ²KLQxá•HÅUáË­DÜÉKLçÉç)b:$Ägun‹“[õ£B¡A5á H¼Q1Z%¦SÒðºÑ\F£Ñáp”••áîét:‰tuuµµµ'“ÉòòòùóçcÅ HA͘Sò¨rU  3¾‚<¼‚± U`‡JÊùtœÝ#Ë2lÂHùbi<l”J¥ Ý#8óC2~òA‡d ­qbễ¿®[äšbz›¸VºöhCÜÓÏ£ÂI[(X…ñZ± P ÊÎYs8ùjç;€t4ÞÉœò°Ç•á¦Óêêj$v §æÀ– þæ¬1qÁƒÌÂJ¾,CŒË.³ÌÞ—o=þøã·ß~;6‹ŠŠöìÙóÿðÿþïÿ¨k®Ì•‹)æžžo®Ì•¹2W®^c1~¾ŒÝ´í¾Ô ÐÖ¿p÷Ã(”fÐÖŠäxñxF84þröìY°“RS!>Á®NAçœt; ?8äÔjµ°)ÁæAEÚðͧ··ÇãI¥R}}}½½½Øh"ÐÕ(ù …ð¡Ðjµ¥¥¥`c•——WVVú|¾D"1::FÃáp0„10"ð‰ò,“˜;ƒƒƒh$C¬ªªòx<È=¸MDa-˜ãããz½ä/ÄáÀààèd6›êtºsçÎy<žE‹as ®Éd™9> ö–ÛíN§Ó0%´Ùl‹/F’{@6ÅšpSSSÑh´¦¦fÕªUN§SÃÌw$æ:!°€2hoooll\³fMEE3‹a[¯×ëq»3gÎ<ÿüóÛ¶mCr@"âEå$‘öñÉÐEo ¼xàg={öÙgŸ]¸pá–-[ ÿÒëõ6›M«Õ¦Óé§žzj||üöÛo¯¯¯‡í‘F±Ê@£Õj‡‡‡~øá‰‰‰øÃÈþ†ˆHÇ¡K=räÔmÚ¡n*ÓJNg0\.WyyySSÓŠ+ s°‹6'‹%Šѯ,K$±X,SSS«W¯öù|hp€&‹Åçó!~#²•,Ën·Püð_Lù%I‚£<‰)v¥öçpï”SöpÔ“¹6Ѝ|&©««[±bŒÉѪÙlVž®íBÓ´X,¤þÃ3r®‡`p e7ƒâÌ/´?d’hIô.ül6›Ïœ9c³ÙFGG+**.@:¾Švëéé Q X„Ïá .¨¦StÔ€yÅŽz»Éd‚mYá¤Í£}ÞÓuä™[3Nþ…ÖŒ¿—§çôàŸÉ+&t´âp”A£Ñ466¢Wªã‰ £™nçw¾uêQºªñeæg„å@o FR1YT(O˜b± üžÒ à…R yÑ0}=A'ümòW@g<˜9}>Ÿ×ëmjj …B^¯·¬¬ g\ÝIc„Ÿ´D}’eÊ\¿ß?;:~ÐL7ïÏ3ÿ~LìÐAkYšKêx`•bi–$ ÆО;vÌáp OLLô÷÷=z”^â9RÍiîÅŠ´ ÖbØbªÆ„æ¨MÄ.Žú‘°W(6…H® ;B½^ó-œ]aêÀ–B¹;wƒV«M&“hUÊ'Ë%ºÀ¶°šð™PR8h4¬h" ©Î .ÇX\\¼nÝ:¯×‹Ã©×ñߨୠïUóï„oÂuUà­þþþKýîŠ+Ξ=ûï|ç _øB"‘¸é¦›žþùU«V½=­0WÞ¥¸¸øZWa®Ì•¹2W®ßBÇ€âʼÞrÃ?)¦ÇlR‹oÐéOb¦ð!76»±X ܰõohhøÄ'>ÑÖÖ–Ëå<OuuµÍfþ ÓZÑVO(>ô`à¯ØÕᤔb¼l6ÛßßÿüóÏg2™x`þüù&“)‰¤R)ð¶ ê"(Çžˆ\.N ßÐ8K$©T* wuuõõõÁV^H²¢‰éDQQÑŠ+|ðAŸÏG…7 H’F{챑‘‘|à .„Z a à-Ô~LápxåÊ•wß}7‚p˜Ð›L&DØ‘# AÝÝÝ ½^ï>ðªª*äN"ëh` ¨¿"‘Hìß¿¿¯¯oõêÕwÝu…¤—!X`ˆF\.˜5ïÿû×®] VRîr¹8ÐÔÔ´víZ—ËEª­’ɱkSèè‡G2hU¿Ìét.[¶lÅŠV«•<Èy½Þ†††THÿIDAT7¢zÙlŸAD¡Óé@Ýr:EEEK—.-//GþAh<ÛÛÛ?ÞÓÓ‡ÉlŽX´ã˜Íf§ÓYRRR[ûÿ·÷¥±q]çÙçÌpÈál\†;)‰ÚW˲ËV¤Vv]'NQ6\8i.±¤@ƒ¢F~¸«ƒ¢E.ŒÂ)bŽa8ikuSu¼%ñÚÚ’k±j£6n¢È!93œ!9äœïǃûàsîPŒDJúâ9?rxçÞ³¼çÜó>çyŸ·»££cåÊ•]]]dÔ$%ål€btî»ï>ãIò³ª€ÂÆb<âÅ…BÉÍA …l-èB8W²)ziá+ʱãLç®…ƒÊ)ðàðÈ„…B¡uëÖµ··ÜQ‚b<¡eLU«VÝ{ï½ðÆ¡N„áB¦41ãã”Åô)‹©TJ{ZÚlE6›@»ÀåD'c801ÇÇÇ-ùå±É´§ÀÅ®`ˆm·åJÅU—s ]—H$³Rù)0šR•ï‡îJn ™qS¾w°¾ÎOHб¤Žä«««ÛÛÛqh뉞H €×[ñθ!©y’ƒcÝÆC¬!à‰ÍËÁ•œ,ÞÄx,TF‹³ª¬^¡P8sæÌôôôððð‘#G—ÊÐxÂ[¸3âñoΩQWWGȸè%<%.¬” H{,0Ð|pè¢=AjÛQoppLL<"ñÜ3Hóæ²ŒC cL,3ÆŒŽŽBÒþرcÀ}b±˜òˆ¢¼»ˆÔ$Ž&-5ÁÚE8Â8P[[[(ZZZ¦¦¦öîÝôR¢—xs¥Ö:ÔAy(*j‚Ɉó!v;|nI°›9ê¾=zôyÁZ°PC^Á™#RΉDðf …|c¬ €bI„Ø^[¤t)OÓ­¶¶mÄCi\l«««ÁæÃy†œ¼r†·fº»µ+Wt)ëЂz—´,&¼ÕÒÒÒÞÞ>88xáÂ…+ûúw¿ûÝkÓìJùµ,×» •R)•R)7n¹Ê½e°ÜÐÂrÏ²Ž¯¥S$ëàÿó¿RfžF,ëììÄ^<•Je22_!tlÁ-á®ÞLìE'\wKGHºèÔù^¾|ùÉ“'><ç¥fŸmnnÆ6‡ÀÚÓ½’ÍÔž¼½ íÄýqP ÔÓÝݽuëVȇ§R©þþ~Èf1ƒ V¬Xqûí·'“É€§Ey-ÄŒ´ÖЪ©©éèè ß×D"ã‰ûPóõ ǽ8É2Zkl¬µÖP‰D"íííÉdãè^9éÃé%cˆOÉø)º£ì‚Gt䤘 y=$E‘¬¤=²=CåSÃE”+£Yá\!Ùl %P?¥Ôäää>üå/9‹á¹ú ‡‚Rßð¦FGG‘óÔ©SGŽ9þüÈÈÝÙu4dlL$‰D¢¾¾~ݺu›7oN&“õõõ6aÊK(¶ '©ÃEû”À b'c±˜dBá_TÏ‘Š6°¨L&“Íf•R`¥éÒ"åÁ ,IårS£E¨ œ,J(òÀ—Àü‚¯«DvÅH$²zõjJJIØ® ÜeË–Ýÿýøn.—;þ<⛘ ™¹\±ÃH'¹'ÒP¥º‰E’v„qœ™™Éd2²-°Æ––© È@h° ­5°QÙ™Œ°†¤Á´]ŠyaÊðZBE҃şs"')EÓH²ÃR&C¼%~ĹÏI-cÐXU9¹°²¥v,)èLD¥‡eæ SJ 3^\ðƒØR ª8x²MÚcÁà'ž…xjâ œ&°)ÏOÈ•~ì4ö©¸™LOùùÏޝÓÈåšI¤•0 >G@:“`íÂôG–‰úúzŽ2ð_+Ä2d ͪª*,âÕ _Á ÷j(Q`̬H$‚[aà°Xáý‚Æ*/[hÐËyBÉ*NÜ_Ìd2àC„v;&fUUU2™DÊ ÒÇ€€!³Å~ x)9 8Ž<ÆÀLg'#”8ŸÏ†áÁÐ ¼+±V#X²P(àø Bѱ4Õ××£{3ÎñÒZCu‹çp4’ªª*&‹ÕFAÃøZ0.ßqø…„nÙ“øœ w¹êj&Ï ë.Âü?—ì¾ä–ï€\‹ o)¥ ì*¥R®eùö·¿ýñÇ_ïZTJ¥TJ¥Ü¸¥xéQôÂ8_r³ÅM’{ÔﻲKå{UU•ÜQBWÁhÒyæFû<ìGee,§B{Üáá5I$ŸùÌgÞ}÷Ý‘‘‘–––ÆÆÆ5kÖHù‰”É~“ž'N§­Ž’xD4mnnÆ}×®]çÎ;þüÑ£GÏœ93:: %¯Ï}îs[¶l¡‚>6½¥EîÈúúúp8ÇQU„pÒõ’GÜpà‰ËXÅjÎeä>¥””û)‹ˆ‘ìïï牷uÏ€Ðf†ó†cgn¾1‚²'-£H‡B…&:±Öž›À„öhnÌe&Ñ_>rêQ†ù ÿýßÿ½­­mÅŠt ¬ºÁ-Áˆœ;wî'?ùÉôôôàààÐЈc֦Р©³³,­¦¦&à¼ègxàÒ zyµ’V!ÑO ¤àÜ”° žÀtÿËwAÀC[ZZç«J1 köͳ¼‡ò#\¾|ùÚµkåi‡rj£±ÈuxtfffÙ²e|‚r¹\&“ÉårÐnIüJˆñt©J’P8Ð’®B÷aMø³ºººµµ•§41i´EOc‹À¥ò<ÆP(499‰8P"Ñ2 øb»À龜ΠËÙA< ˜ÁD€P¤€p …Bø ,J’ì€8£’\%à`S ŽiŒÇò3^£áÀ$W…üMBrižžFªPL^^Á`£ÏâÊK¨”¢$¿…Ã’Ÿ¥=öböx‹à8!™¸HOJ$üEàª\¬EU.õ“pÑFÏÄãq¼ ÿ‘—„è¶b±Ç¤†[UWWƒZˆëA,âXx|¤ƒp#K(:wîܱcÇV¯^½zõjÜÓzãd©<¢Ý‚/Œð|Ùu(1@Ay<ÆÅA¾V¬eD.°d`‘dH¡ [`çÊ£š’AI&IgXðRÀP?¥”ÌA[‚5‹EhX?^,cca¥FD ãw™çG‹Øm¹ ÒÞqŽ ø•o½RåËË}S[k²{ë2Þ¹€>Õ’•\.·ÈðÖ† ^}õUˆVJ¥\ËòÈ#<òÈ#×»•R)7bùú׿~½«P)7D±0—kð8_,In­¬]”¤¸þp0lll„Ä5Õ.¸;ä–W: ô[”Çw°˜¼LVÀxxJ"Á‡Ù¶m›ÖúÍ7ߨÐÐPña¤êÌÌÌðððàà`Q(°HÖxa---]]]Ë—/oiiI&“ pAÁ˜™™a¢4B´^éiÐØ¾ø¢Ì1Zî|ž c0Ô²aÙ人:ÙáÖI¾vù•ãDÉ©*Y rþ†B¡¶¶¶ÑÑÑÏ|æ3 pÚå5î¢dùÀd€¢¶‹ÇãíííÒq¾ä <€’è äBò‚Ïgff@„Ap1’]‚&Âáp}}=P @*À’˜ñw+‹·—¤µI§Ó™L¦¯¯ð Á4ð\6›Ý¿?â­€ÓaÉbÄVMM ÂÁŒG7C ­ÄŒýÄ%sÛÞÊd2”D4"q­dÎÒö¤~ÑÖŸÃDóæ‡\B‰kÄ„Ü?‰$ DµG£QÌ2|Ò"Õè mDÞ ’¹,?+çÅ” —lQŒï€ ²us"}°5»ù‚Ã+ÏzâC‚>Àø€%ñDRB’zPyÖ“¤Å)áBTUUMLLpáÂëáϹ\ø;r Æ•¹ x.%h ”ºCóÉfÇâø‡/híAØÒ<Ðì´¢H­+×~ÿB‡°'ñòQËú®\©Š^ÂJž¢!*¯T‹¡¬%ì™L&à—bËC=´ÈðVww·RªoUJ¥TJ¥Ü8åûßÿþõ®B¥Ü…»´%Ý[ ÈíW L¢+îÉLi\‰õuºèÁ`°½½=‹AÉT¦ÖÖVœ{së, ë¾p’åf[†t­±ïoll¼ãŽ;V¯^=55IoÀ4h¦ Ì‘^™Äòti4PÀËëÄM-|fíÉÄ"z”“ŽŽŽÛo¿=“É466BîV‚!B>EC¤¤)þÃn´ zò?YY¹™†KËå䆞¾ÄÑÒét*•:sæÌéÓ§‡‡‡‘÷ª««+‘HXºàÖ¸ÀT2:®– „вÖ:þöoÿ6¤I¬Î—à)l‹Òßî®| þ…cg¸Áoüä“Oþû¿ÿûøñãÑh˜š*=¯f ¤ÓD{œµêêêZ[[—-[¶~ýúîîîx<Ç•R ˜‚k*ìH$"ÁJk*•ûþÛÈ—ÝË‹‹¥âA‘â}$J¥­vrY9ÈIÆÅÐáˆx%NLY¤{¿{÷†-[¶é`Ø©5¸è|0‰”ç="<“‘VàeÌy‰Ã8µÖJ$ ‘þ£”kCZ,³ã …t:=00pñâÅS§N8qbjjJ{„Á`08>>~öìÙ¹¹9Äüf³Ùl6‹›`r1bÐ×B¡páÂ…K—.MMM½õÖ[§OŸF9|E)EbÔàààìììáÃ‡ÇÆÆ¦¦¦&&&À+!‘* "ôŒãˆ•‡KI4ZkšÌÉ.’ ÄA““Éd8v ÷× Ø¶2Ä¢T¤„ë‰P/Âß‘qg62‚á¨Æ#ÉÀZä”3…†5qj´s,ªÌw*@@7ÄôaN I ½‰(™Ò‚®wŒÞCÆØL)¿%ï,ÃÄ :ÛÈf³èç\.§=¢™ t28”§“e<¡üIóFAn ô OÔZƒ×>ÝH¥TSSÓŠ+&''‡††Âáðœ—uNkM¼F‚ÆÂÉäSRD™Ù(]|Ðšà–ƒH€ŒŸûí·Uƒ^4999::а8)ì-qgÉfŠD"ˆ#'¨ªª ’gÈs ñ#LR$Ö ‡Ã°å%ÖÐ^vT ^ãœwÒ&NÁ <% Ô€š£ÿ/1kyr€¥„&ãE:ó2Ú’D[ÐuÔö–Ó\V¨œñžè7â>Ä ­UH®\¨Ž„ ÎNÜŸ¨¡s凗øÃÄÜ|| p¹³–ë€PM2"^Rf]”Ê÷²98v §?vl-ƒÒäŒÊc1˵—\³b±˜Ïç!ކn”fo,–ê²IüΈ0C,ÈâMÕ¨ÅQ¬$hyìAîáHZšvâ²ñ,0ì°˜P½Îxªa|ïðÅAÖ!û„“B{çUœ2Y„ÜöÈ.bࡉ2•8ŠSB3˼”qäÔ°þ”T/9øuëíl!\A‘ùD´ü}N$3µ^î‹[PÉÏ~ö³ï¿ÿþ"Ã[mmmJ©úúúE¯t¥TÊÕ”ýèG?úÑøçž={þê¯þêzWªR*¥R*嚨áºk‹^\ÌEî¶)‚îºzþ·¡¡¡»»»§§gffæøñã'Ož\¶l¶øÜMâæôÁ€1Áq’RÍXc˜3‚É%É_0ú†à‚`DØ·¡t qg¦X"™KÝ 7¤t.o«Ä¹qQ¨8ËRN þ Ånø6‚/ð+„P1:NåaHg>44tèС‘‘‘ÑÑÑÇCÑjjjrr"/´‘Χd¨Y® ñT Dàhȧ_G€<dodëÐ-§èžáóK—.Åãqn\™A&‡®ÑôôôÀÀÀÀÀ@2™å•WŽ9 …víÚµnݺÚÚÚt:=55EÐCø¿!·|ùòÍ›7oÞ¼¹»»»¡¡ÕíëëËçóñx¼«« 4â;Èás¡]¨?¸02@/ŸÏcÄÓé4ÐÆh4ÚÔÔÔÐÐ0;;›J¥jkk!oL>לWðÄÜ!wrròСCccc===ï¼óò d³YÒ1˜š@ QÆ‹“¢777 ‡+úèÿG£Q¥T6›M¥R¨ÌÜÜDµÈ×ÛÛ;22äD6R“dHT²‡¸tÈik„&ÐÌÆÆÆx<p !‡@Áp«††T–V[[ÛÒÒ’H$&&&R©Ôääduu5aP´°`KK ¸0‘H^«W¯&ãqváp˜JÛZD!)¥†‡‡s¹Üš5kš››±H%i$ÁL§Óããã[·nÝ´i¸W æeOÅL—r…|ký¤£+/3 LþIbŽ"oqt,"±W‰ð‘¢ŽÕÀź”ª)á!å¡\«µ`tÊׄ9d€¦V6ÌebÖJxõ\åä+I¾øŒ—åИ¼Ú%EÖT)¦(b«‰æq‚¢½¨[ãDŸqù%tÈ{ªÒ@]Sš9”É0F~ޝ€4§cˆdLyÙ3¾¯x_»]•‘ò²Ox ¨¢=X$/FMò-#;„Éc3ù ⭒ب= ª|×+qþÄ҇å°Î)Éóå`Ñ,ÑÿÆalÉ{Òø¥-D±jk„€] TÑLNËÌ8’,ß麔j­–¦:tH-:{ ꆆ†%ªt¥\Myî¹ç”R?üð§êÑ(wÞyçš5kðûSO=u•9¯{s*¥R·TLúSÒ8væ†ìúV§—ØO[Þˆ)åã(oC ›šš¶oß¾ÿþééé±±±?þxÛ¶m8/…g޽Ij2ôCyY#¨⑞¶ôu-äËb,Œ†Ä"%ˆ]ÒE”‡ü¬ŒdøÌ,Ü2Ù<{†xòÓÓÓacH#*<66Ößß_]]=66— Ù$U)k,“ÉôööÎÌÌœ={ö½÷ÞëèèÀé1N°™—}rriGGGÁFQJ!øˆãË}s 4…šÓßߟN§™«Þ-xh0°577wúôé‹/¾ûî»H ÆìZ¤d* ™Uꜣsè:Ñ€Ž[4íëëƒ{ÈP*Þsxxxß¾}ÇŽËf³CCC§N:xð ÐÒ .À– …’`†ÃáÑÑQ<9‘oñâÅ‹ccc¸8™L®Y³fíÚµ‰D÷Éçó'Nœ¸xñbUUÕÆšÁ¤9c&&&FFFÆÆÆ¦§§!SÍ”555uuuôòùæ„"ô:pð ²ÂE"‘€§ÏÅAf~lnnŽÇãàÓY&—Ëåâñ8@=AžlÙ²eD˜oŽH1f:£©?E¾- çää$}iåy¹«W¯vfe]PÂÿO&“±X Í8áÐ¥4F,w’µä.›–coDO” –HO˜«eÑË,A°{If‘¾´¼Q~¡sº”Q¢„—.ÛbUõ ^XX€wH¦0&Ö+žOð‹òÆÎ¤„¨–rNY,Ðʪ¶‘wÆ9µ’=¯J³d„Tb9 Áz–0M¸à³z4T¶«(d"ÒíÖÀ¹6À¹–¦E|ùnÊÉB ÅQì|Ë`ÜpíJþ×Â}hÕJàY³ÕDÙ@i²Ÿ­Mˆ4¤rvÎàÓ¹÷‘ßõÝðÈÿJ$W6Çø»–ÛRJÕÖÖNNN.2¼…ó‡ {ëÆ,o¾ù¦Öúºøo×ñÑ(]]]]]]J©Ó§OþÉŸüÉÿ×Í©”JYÜR1éOIH±mãÈ%\q1eè`¾÷—[=ålÐ-·Dnª°7EèÙM7Ý„|s€·îºë®ššj*Ãk‚³¥y§À9¡hŽÔ È’Þ‚åÄZ›Hn yþ)Ó¨½CPê:Êx’OÊ‹“†À(ÝCWƒ"§”ŠD"HÊU¡XÀ¶+“´ÅTh¦TjS¸¶¶ñh2ÖØxüÌG™Œ99„âJ®¥ò‚1.˜¶X1¨0%+Oçõ×^´,&/FŠzá¬÷}´Ф¼yQD¾»æªæE¸Ü‹•ØŒJe%\Ë”Ÿ[ìÞ9 0¹°¯:‹w¹òÈ#<ñÄ‹ o1 ~‰*])ó—ƒf2þÙÞÞÞÝÝM›ãÁÎüåäÉ“/^´>¬ªªºãŽ;®øé |ôÕ—ù+oŒyôÑGÿéŸþÉU+\Šž¬”ùË[Úõ-³³³Gýä“Oª««·nݺ~ýúë]£ßÞVJÝrË-ÑhôF3饰ʤV¥ï‹Û^kW}ÙË”Ÿ"’u¥µKVÞn¯³³óæ›oþðá.ÿóŸÿ¼³³³³³³··Ø=pÅ8 î€:V`pð ™Þ,ôt¸ù晳.•›!AÄ\ƒ:pdP€OáøðpŠxy8Æ xÑZ§R)~þ-~ž6“ˆ$ëÉj#ƒŸ„knnnpp!u}ôü%²бRèp:æA·ì>K‰¶ñò &@ZwÈNSà²á¡P2óñ¢ÐÓžüF¼X,&‰ÖÖV¤{«¯¯‡£NÏÖ‚“G ½Á¤rZëêêêx<^,!„ÔÖÖÖÙÙ‡ÇÆÆ,2 wÍ-8:: ¤²X,vuumÙ²¥³³³¡¡ 숼‡étºP(€@jffhŒQ Èår€-ÆÇÇ'&&öïßßÓÓSWWwçwvuuÕÕÕ1YZ eQΟQZÄkyGxzzÂÏàoý H!‡ ¼Üµmjj €d¿Œ1¹\îæ›onhhÈF'''é±`*ad!\Èsˆ-co²J( ²b›ÜU…‰V@I OzÛx±{›Ž†3bg³³³ápÀ()²µÖ¬•*S0ËdV,&h%Õ‰Ãââ¢Ðà z‰çL™h2†©¤°´ bA°"š Õ544tvvâ €õ—ƒäÖ)Xîq 4hÑ:«/-Ž+B)‰_±t»´Ð_sq Ë··¼k2Dd­æ÷Ÿ}ïÕ;°QQ…ůX±ö¦”Õ«K£ ÙLL^ëý¨T-ã»U)Ìaõ³ì k |›oad¾½á Ǹ0Ürëv#;öº4ŽU9gZŒ¿³î ÿ¼,D¢Eôœ*M­Cö/“È,»×ÚœH‹U~È”Ûc²W9^Ö‘^9{³ÆÈšV.â&jVÍåmÉa·–YÉóO‹Žòü/Ÿh­lÖP.zùÎw¾ÓÕÕµÈðÖÄÄ„RjÛ¶mKTéJ™¿|ãߨ»w¯üdýúõ/¾ø"F„ Vç/O<ñÄ~ðëÃd2922rÅO_࣯¾Ì_ùW^y¥®®î¶Ûn»6=Y)ó—+¶´ëX>ùä“?øƒ?8xð`kkk:Îçó¿ÿû¿ÿüóÏKJÿY|{-Ú²eËfÒKa•I­”šœœ¤ôÏ’ÂyÖ.Ü·H låì¥ß¥…FTmÛ¶í¶Ûn{ë­·ÆÇÇ?øàƒp8|óÍ7üñLJšœœ¾)0#€P_€˜w4øUUU•Ï犑¡ê0Æ ¾@(S"‘€þN±XL¥R„À¦I§Ó*’ò·ìP(܇î=­. ¢V¨¶ѨdT]]FµÖétÚÃT÷ ˆ!ï(H`µ€3;;ûÞ{ï½ñƨ›VØŠi•xG‡ò@555±X¬¹¹¹¹¹¹½½½±±ªÿ`í’êWàI›±,pI:®¯¯¯©© SSSƒ(„ži­ÇÆÆÀßÛF#‘0/„€¯)¥.^¼˜J¥ZZZpsä›c~Ié™>H¥R333ÿû¿ÿ jR<ÿüç?ï½÷Ö××Kÿ‡¤$b©ÔeGè(|<©J.y:Zë­[·ž;w..[¶ q|@|Ti°­ë røæD²yº‘Ø¢Œä|¹Ž(ï‰ ‰€ºp}4]·nQTðì˜Br—àÖÖÖRŸ.à%È“~½MFì³\&Â:ì4å%ÁD0ŒÐÈ—îS†/ÔÉÒ²!üÄN€žšt†%Ô›PVÉ <¹|éÒð= üáà\˜¤ä”)'FIÎ_b¸ØE ðôD"e7àìrÆOM ÷±‘(•ĶJ9xˆèƒû/ê4aYËçóh5?)gÝP.§œ>Pù ÔߊÁ7¥´ ©®hW‹4nIôŽÄ¸Â[5wÑ:SJG 8šñ$ê*ïÐø¦o·ñTRôTØp+ßÕÛE=È1tÑíp®yœcI (™¾ÚÉdâ è˜R‘›…ÖAcR¥@Ñ7NC K²^Ðr’šÒ@Z#B;Mitg¹bÞ(jØxz²Úá•cÍŠ5¥¡…ü%àé0 ØB«M)¦,ŸÎ„’’jªK¡pk $ò%­Z9j_rÒ-Ý~;|ó›ß\|xKk}ë­·.Q¥+å²å÷~ï÷~øÃ*¥ …BOOÏþá~õ«_=|ø°RŠ›¶Ë–›nºiß¾}‹øô…?úêË<•ÿÁ~°ðà£EéÉJ™¿\±¥]—’J¥î¼óÎÍ›7÷öö®\¹²X,þÇüÇÿñÿõ_ÿõ“O>y½kwùâÛÛæn@“^ Û¨LêkS¤£î{`xeEžI®Y³æ¾ûî‡ë7Þ8{öìÚµko¾ùæb±866‡»»»›››s¹ÜÄÄ+ J13Á¦h4 ¾‰$V2&1˜1ŸTUU577·´´È½>´™e&5à>À€@ð$¤*PñZÜ‘v„§3…¼jPF(Ð8EÑòz{{-9wÈØÉREÆoj/F Î<à*Dá%“Éúúú––`[ñx D> ¡<²$ÙUrˆU)¼…;D"ÈaW —˜Gñ8ÄñõõõÍÍÍmذaÆ õõõŒ ´|Âb±ú^2™TžëN²9½ hr2™¬««£ðöíÛïºë®ÆÆF¹zpøÐdÜ™\0•T"0Á~hkkkmmUJQÄZ{ŠÅrÔ¬?u™“|ËËÒ^rÃùg¥ w’cdDÌ©…Hj!Å­½¬gR]Nެo¹î´»n¸p€ëÊ+­ñ­­r( Ö¿t©D޼§…:q8ˆÔX¯_o\v¬‹,0~Gú“¾÷×ZÇãñŽŽP½¬^‚•æóù‰‰‰ºº:Ù·¾£`Õyž d­$r_.]ºd©›ë_Q”‡ËT¹>Qâ´nt«*ÃÙÈä¼fâ&stŸ(ï)Í~‹¤ï¼àÄ\à‹uá`õž…h”ûÓa×8þ¹ì‰ï·Ö¸¸xïõò§…0–+.zÈ_¤jž‹ìXýfyÐ\y8Aî³Ìž7BÌwJÁɲŒ–(9HŽ.zbå:DxH¸Y.q¿’9]—²ÈðÖÐÐЦM› 0_)×¥`}QJ…ÃáÛn»íÑGýÆ7¾‘ÉdâñøÂé /òb=ýZ2#ÊU>›Í¾óÎ;2â5èÉJ™¿\±¥]—òøã×ÔÔ¼öÚkÐÐ =ôÐÁƒÿå_þå;ßùNuuõèèh<Ÿ››Û¿?bß´ÖçÎëííÝ´iÜ•ëXæéíФ—Â6*“úÚ”r¤VYøWî´´qãÆûï¿vvöÈ‘#ÙlöÔ©SmmmŸûÜ纺º …BMMM{{{CCÂ¡éø‰ìtò^FE¥rOl¼F£ ¸In:qLŠP5)¯DFyËÿÄÉ­T!¡{ …¨ÿ¥¼ÓNíEXàëä¿ö‚Ó~íL™2^Šw´—gž…T,";ÊS ƒˆDÒÔÙÙÙØØØÖÖÖÜÜœL&!¥„H1ðŒ˜Ë \-†pK³°K18)NÄkð_‚Ê£êÐóÏår£££™Lfll¬¶¶6“Éœ:uª§§çý÷ßÿÝßýÝÝ»w×××k/nˆl8È?I["S†6)‰uÊKô†Š¡ž­­­{öìiiiQ¥€‚Á•Ú;lgIW”Ó"ˆƒ_Ù!–Ê7¡É±“•w§¡œMeUžF1¼¥…$™lµœ×–'fyò4NåðÑ´HÇ?™TT•ÂÖwÝ?•Àä9rì¬/27Pš$Aö¹Ë™"øâ.†“£I4»u[UfÙ”Ü Ù Ö¶®®ŒNKÿK"DÒüÜnÔ¥¸žìOý”µ’_g}F·µµ³^áö°ïË™Óüwót$$Ê”ÑhüM >ǹ…ïYØ–¤‰Y“Ô…n}›À‰9?Ê`©û/°|ÍÌ‚~ä‡r|!«GB™ïŒ¶Ú%!¡rã§KªÓ/øV¸œÑÎS\x«ÜŠÄõÄú¯ŒkæâÌW /æD“]䂞º4¸O†¾ZMvQH-ŽC~Õ¹@$Ë î¶úó*®¥ÈÞúå/¹sçÎ%­q¥üJ¥¯¯¯»»’ÿ×ÞãÓo×ñ§?ýéîÝ»L\M[Ô ‰TÊRcÌ /¼ðØcY&ôè£ÞsÏ=iY¿~ý£>úôÓO‡B¡¾¾¾Ç{lrrò_ÿõ_!zò?ÿó?wß}÷õn‡ùtšô§pRK¯òF(ZkÆ/(gÇ#•2¸/ä©;¡¡áÇ?þñ¾}ûFGG9²eË–µk×®Zµ œ)䪃²5Dµ©¡¼3gT  ÁÑ¢ÏF4„ð–å‡0<Š•ñÄàQaÙÛl#5¢ðKžÔœÁ²VFDiYÀ #åÌÍÍ%“É®®®óçÏ3„")–°‹Öº¹¹¹«« 1çÎK§ÓÅb±¶¶¶»»»©©)‹µ··¯[·nùòå ƒ¬¡Ò“¤¤‘Æ…º±o-ˆ¿GÐÞ"0§=%¥”° nÕÒÒ²bÅŠºººB¡°mÛ¶—^zéÕW_}ã76nÜAUUÜQÜð–Öt<S@®¹&ImŽ[o½uãÆl”+ ƒþ?yòd>ŸïêêjjjBŸhû¬Rjvv¶§§çßþíß^xáíÁê ôßR©ÔóÏ?/?ùâ¿ØØØxÅO_ø£¯¾”«üC=ôÐC]㞬”ùË[Úµ/™Lææ›o¶>ojjºóÎ;ùçsÏ=÷ñÇ···ÿÙŸýÙO<ñÕ¯~õâÅ‹…BaË–-ßÿþ÷¯/¼åövuuõW¾òuCšôRØFeR#ŒK-ýƒÇ•ø³ÜΛ§B¡Öwü¸ŒIbÌ ¾‡wìØF“Éä{ï½7<<üÞ{ïmÞ¼yÕªUñxéÛ9NæOjÍD31ñ¢ôêžü3 ƒT)§¼ -Ü \Êñ(Œ§i-ñ:6äÅh´•J¥g„Žq7< .:ÿEv²ûmÚ´innîôéÓ™L»Þ¡¡¡T*522}wèvÕÕÕÝu×]Û·oO&“333###{÷î=räÈÈÈH>ŸGR¿D"‘Ëå¢ÑhGGG,#è¦KÅ•j­‘Î%CIôJÚ 9z”j‚^Änð ™™™žžžÞÞÞÕ«W¯_¿žËB0\¹råÎ;÷îÝ{êÔ©¾¾¾ŽŽ)ÃÄ=:‚}µäv_ztà !ø´½½}Ïž=3’MxŠø555étú'?ùIÿƒ>¸sçNxÅàè¹Ê&rîàOAˆæ¸á¥rZÑ,©KÅï…;é})á+ázYϲð\~X…ÿ¥ »l àùò)r$‘L|Ù-Lß鲨d6XöŒñXfJ¨ÝK²$&5²ˆÖÕÕñ´hy¹ªÔñC}JOFcq¬ÀLÞP2ãXg¶î²‹3ÍRÖ“BdD®0¤dúâ>Æ“¤4x±4«¬JˆˆÉšû"Œ²u¨-÷x<¾nÝ:$ˆPâœÃЙI11 ûúúð'ßþð‡~øá¦M›¾þõ¯—K 888ø·û·ò“Ûn»m!Že¹§/üÑW_®¸òKÑ“•2Y¬ÁºåܹsJ©ËþéŸþiGG‡RêøÞ÷¾÷øãc¯ö…/|áøñã×· no' À[7 I/…mT&5ÉE¿³¼§Ä¶æßÄX”rÎ!å. ›Eœ“©©)à›7oŽF£+W®Ü·oßÅ‹s¹\ÑQ€¦ªª >¶‡½ò`S{¬+êÁÚs“q 7£FÀGóU9›l«+|ú‘BqxxXk ýry¤¯K#‰\‚ÒÜܼk×®[o½•.Ä¥K—^}õÕýû÷cV­ZµmÛ¶®®®›nº <£l6ÛÝÝL&o¹å–£G¾óÎ;“““mmm·ß~{ss3¢Š´'¥¬Ê„NJʼnàðƒ_ÙuYl²¥yߨ“”1?räÈ›o¾¹iÓ¦5kÖÄb1Ò(àéµµµµ´´ õöönÛ¶-‰X>•ÊXÌi ÒªªªR©”R*‰lܸqÅŠ`òZ¶ÁˆW h`© ¥ƒŒ +–&« øI1žf)ùìUk‚ÈÔŸ/ôÒBù».e6Í3µ‹¥ræ$OÉ~“X›Õ(bRtí´o”½§=å;éÔùVIÎnå‡×Kk4¥ô:åÅ̆B¡l6›Íf‰DQ¤Spo¥<7žn°ñR1b¸qRt=q–ÁËV×E"  ”{²Ì3R¾´|we“«–„aÀn‹ä µƒÎS7ã‰ÁkO^Âòé#æ¯d…-e:Yy_¡+=”' ¯³¯¢½½<Î5 F—3K"&ÖèÈ0OI¨ 8™ì,D`ž©ÁŸÒ„äØIˆgþ"‡Ø]s¬‡*φ©fáwÖ‚#ÁV®ºR sßvù¹5 V_¹ã2OòzÌV©‰a"[ Õ…JÙ‰%É`áÔ#0d—»P[}kµHšœkÚazr&ÒåáD¹~ö%Ýû^¹Ýàâ–Å„·~üãéK_ZŠ}s¥,¼Üwß}/¾ø"~7Æ<ÿüó?üpWW×½÷Þ …¾ýíoÿùŸÿùðððÓO?}üøñ§žzÊ÷&›7o>pàÀ">}á¾úrÅ•_Šž¬”ùËb Ö5(+V¬PJ ZŸ‹ÅááaÐC”RÍÍÍøžõçõ-óôö hÒKa•I} Í|Zî_ØB1žN•†Gi¡OšË A(^!q[WW×ý÷ß¿cÇŽ3gά_¿žqÖƒB­ÙÚºÉóØru¶6©VgÊcÙp^lÝÊòy¬§ÔÔÔ`ß<33“H$â `Œ,e²@«™û˜fž6º]kÝÐÐpß}÷íÚµ ùì5"ú‘H$•J-_¾¼³³s×®]ø—å™XubêVáS†ÉY`D@‘û0>>þæ›o¾õÖ[ííí;wî„®ÿÌÌ ÷ôZëÆÆÆÖÖVc òK’¡D%­¡Ñ¥Eº:ÉdrçÎUUU{öìijjª©©a6CŽèhZ]]݃>8>>¾nݺh4Jí3é–¸†!ÝB%8PVõ”Ÿ g¼°S€¹C±|'«2–¡ºä«Z„ÙòsùÈ&\V÷Š­#XàÛ?î•2PQb"ºTíN*%aõ}¯¦¦¦­­À1ie. CG(-¨ÀÈÜ1«>Ê#þÈÄhVx!.Ë>•aÙ•ïZ$Bùá îƒ$"&ê²ÖˆÅG §÷'307Ø@¹\Š~ÊQ7+×!re¶ZçÛ®i§Ò"×"åÈÞÓ¥DëþªôÕã"×åpkˆY=ÙF¹2+ç§Äzå®ÏîRã Õ•[3c±^Uì.w¹à­¤HÓ‚,/;,Kv¿%;¿­Z#ŽÉ>44411ÑÖÖº®äŠšRê±l-„ˆ‹\üçÙéR|Ј]_srÐ÷†˜\Zœ4hO}’#.)i²Â û²Cã»-¹lÃ¥,f,Æ‹/¾øGôGKZÝJù•ŠÖúk_ûZggço¼¡”ª®®Þ²eË“O>ù½ï}O)õ /\³§_ãG/i[Ô5ïÉJ¹JGGG"‘øè£¬Ï?øàƒööö·ß~ûzWðªÊ§Ð¤?Í“zQ6ÖÆ‹„îéâ<7!à‹5È&o(YQ…B!—˯ikkÛ¾}{{{»…;PˆÝÝZ¿+¿í—l¬ÜI[ý ü@wWͶXDþ) -_¾|ݺuµµµŒø…B [c Û·ì½€—WH#§Ž?~þüycÌæÍ›×¬Yƒ ÒR‚Á`.—8sæLmmí<ðÀ¬\¹2¢·‰!jq#iPò‰²cµ¥R©3gΤR);ðrMšáWè OMM}ðÁ?ýéO‹Åâ¾ð…ŽŽÔ$ãzâ¤èÀîînd©Q-\ ]<²þă¶oßþ•¯|eÆ ðíp<#Ø`0ØÐаcÇŽ»ï¾»½½Ý°OÌœWd€Œ…1•ƒ-,ÛÓZCÈË0,Ó5«zˆ³"›Ø929€ rY¾Ÿrëé³^qûA—R$²`ÍtY19×8É¡Q˜Mx.mÕ×¥¬ò Ì[&3µ¬õAª­) OÚ!ó?ðzk‘6 ÏÂx'X4(¿{Ù5]„ERÆZŽzw‰v— ù»Ì¥à.¿ŒÍäÜŸ™™Ëf³¦”tæ[¬Õ[~è.ÔÊ?dŒ¹µ8àE÷Ä555̲*ÍOyÄ–rο|Š) u·L] ŒÉžò¡r˜äY .ç²Õ@÷-fMä@)Yغ^†EóÕ ü­ED›öcu)±xˤçs—¹ôY««´1«oåøº÷çW …ÂäääÙ³gß~ûíW^y¥§§'—Ëa­F^n=UyÇI{á3Ô—Âʸ¡”Æ£hÃ"¡¥)Õèåj!üaµÈÙŽšš|}|||ß¾}ããã‰Db÷îÝÍÍÍôâ‚Á „ÛGFF …B2™ìîîŽÇãÜd£’Å2Y™¤w!ÿ¤‡?>>þ‹_üâðáÃ÷ÜsÏwÞÉHIaÀxÑFc{{{ñ‹_d³ÙÏþók×®EL"q P?fgg¡¦‹ÅÖ¬Y>-ßr`ø/ËgCäèF£Ñh‰„º” ”ÁyÂL’¿cY—D+,Úã¤9¡D¸jjj¨¸4?T¤cHúÃrPŸÅZC¬¡×å¡+ÞÇ\,ÏÊ” ž²êl¹|üÓ÷¹/ÀFK¤Ik …#帔r Ñ¥DEN=ãePšU[WÌj~Ù¨RÒœ¡Fr¢YVª=ˆ6(Õ óµpwØW¥K®ç‘!Îu¶åW¤%<Š\ÑÉb<ñA,z´=æ÷ýiý.WN·¶r8\ÛˆØ@ÙÕÖ}lÉù‚_(€È™kµK•‰4ät`ò½(eËj[†$— ¹°ø®0ÖÅV}Ü;»fa†ZK «jUqßVÖr!Ç]>—úö! Àò”œ5¾P‹;#ä;trrrtttddäСC}ôRåAnmmmkk›šš©ªªêì쬩©±fœ…LICµFS®·Zƒq—R*xî®Ïְ݉ÊåÅšA²ª”é®Öt—5S .g¨ï=—¢,¼5>>þÒK/=óÌ3KZ×JYHúÙÏ~†ßÓéô3ÏéHXšV¸a.— ‡ÃØSæóy¥¢W¸E£BŠ Ã=é?0RÌ:EDå‘oH~hrïî»·“¿s[o]©µFø˜Üs+OB` ú¡…l‹t)¥k¤WKy»X:3d0¡K>|ìØ1¥ÔÖ­[7mÚ„‡j­gggÓéôùóç/]º‹ÅV¯^L&1¬E!ÎMn‰;¸l¦örɋũ©©ãÇ¿ûTj×®]FH™(C!Ô@7˜žžN¥R?ûÙÏNž<¹sçÎ[o½µ¶¶6 dM”?8;;;>>žJ¥º»»åIŒ@jI$Å×}¢aH$ÅX¤P(LOOƒËcyÚ®“ Ílè'ùwÒÿ‘ ÓUUU–t—UC:B€üνà‰°*‚Áâ¸[¢¬‰ERÈž$ºäVO{¡ Ê䣫Dªåy°Æ­ð‚}ˆÐb‰A¨RxŽŠ?‡´Òm–zOr,[Èž‘ðn‚¤Éà$Z^œDÜÜ)#g‡*E¢BbÏ]…,µœg p)åËç¢$I4®t”eвªÖXXø†L•úóøýl„:{MMMKK‹ö"ªÜ~“IÀ¡ÇZÍ·ì“p5Ñ%²#oÅ|ˆX fÉ–÷TâÕ@{+–*…Ën'âÙµ€—5UV•|îË›)ã¨I#Ô"\N)…œU%UŠ—É©íÎt©¾Çó T•veY¾„üLi˜ªu‚ÝR‘ÿ•&ï€w¨òöòõÇw¡Ôdjjêܹsï¿ÿþ¹sçfgg›ššÎŸ?èСP(tÛm·íرchhhïÞ½ápøw~çwÝŒ;X07Ŕʽ[ ž©‡]#”}e!Sº”µêÎnö?k¨ýmrc1˜–Ѻ³L9 —ï6@þ²è[P·,¼õøãÿÝßýÝRCq•²òöÛo3Nª¶¶vëÖ­¯¿þúÊ•+•RÈŠòÖ[o}ë[ßúçþç‡~øš=ý<ú׬'+å,ÝÝÝï½÷Þ×¾öµ;¦¦‘o~ó›?þøõ®Ú‚Jooï=÷Üc}øÔSOýÅ_üŧĤ+“z‰ Áfggàæ»ÇR~}rCF%c¹¢³$O}1étºX,ÖÖÖf2™|>OÉg€ARY‰n<î@r Á£ébÉ|^ò<“*ÛÅ}¹»óV¥{PË¢ócõw–ôHmX.¥ÜìJe1ß”¼ œÃÃÃÈd2+W®Ü³gO"‘ïãÒ¥K§OŸ-‹Ë–-[³fMCCƒñ‹†pלּ½åÐ*Ï“³1<<¼wïÞK—.­^½zÕªU„3øEd”¯®®ª¥¼0¥?þøÝwßmmm½çž{ššš¦¦¦b±\SS ‚t¶eËD&²»®2¼°\.§µ‡ÃpŸòùüôô´1¦®®®¹¹H‡Û?²È!G“Þ—„#€T×10 p@ïˆpYi@}–Zx“ue™dâÈÙíÎÙd‹J6¿ã`ý×êÃyŠïeĹLiì’òð ÎwÙj ¥²šc<®™I?G󴸓VÅØo ùuk e5äY#èÛáVm}¯1¥´·Ÿ­ð`bq³^*œ/·@ÀOÐGš“¬ÿbùÆrV¢J@½}Ñ[ ^.ªtÁ—JF¾­˜gµ·ž‚û‡ÃaIຂv)+#/1në•p‚(}_XÖå}%ÿ…·ˆ´–ñ»Ë »JlÔx|¥Ôôôô±cÇŽ=Z[[{÷Ýw¯Zµª¦¦†¨‡ÄG §§§{{{ÿë¿þkjjêž{î¼bêÈÈG÷÷÷'“É›nº‰`«!9Wì4ÎÌÌd2™t:­µŽD"555ù|>“ÉLNNÖ××3Ä2à'²f9êîåH·¼¡áááéééÎÎN`|ÅR™y†qÖ”²&;Ë1¥\ M6"’…Õ“­³Z¤„_Z,MÞgÍw A´|9=}‹/œtÙ‘â|±,–@†©Ê¬Qcs´§e!+Ý<æÕ¥Ä%Îq‰¶ËõA> Æ,]S1Nh9!ŒùWÝy>ñ]u‡´?U~°µKŸ¼-ð0YÔH|„ ¾U.N*öj¼bë»òæè|ÔÙ"yap=Y¡ÙF­›ûšî< —ö˜† I,0]ŒÒÇÝeÓº¸\8_Ê¥–æÔæ4Dßâuì‹ÅȺÏåå´-÷hãAÀ+ÐEZÖÁ:9ã‚R[[ÛØØX__ŠÝ»w¯]»öÀZëÎÎÎõë×·´´466®X±âüùóuuuÌ¡9ÉÉ.åùû>²öBÒ$nUÝ—œÎÜy±Ä%-¬jžA——™R(ÜAåSº¾âñËâÀ[ÿ÷ÿ—ù—Ï<óÌÕÌÉJYêÒÑÑÑÔÔôꫯ655}z]iN¥,n ƒk×®]»víõ®Èb–ŠIJz P^ïvQn®ÊHYï0\†Z PÂÐZ“¹3;;›Ïç³ÙluuuCCâ •ðíy†IAh÷pž¿CY™„ÙW”Ñ¥l#«XÞ¯/Ã÷ÑüuÀŸÅb1 UWWó ”J[ÛS$ƒËçó”fW¥J¸yOOÏ믿>>>Ž(¿@ páÂ…KŒGè¼3´º ±Ì>7^~1:øÖôôtOOÏû￟ÍfwìØ±yófn©”ÂÁxmm-Ñ+¥ÔôôôÉ“'_~ùå³gÏþæoþæ-·Ü¿rà ídŒ]¼xqûöí6l_Àrœð-pÄŒg¼È##ÔLèžÁC ƒMMMÑh—UWW×××wtt Š  …B¡P[[˼qp,³·fˆW  …cÇŽÍÎÎ644D"øu’ähE¡Ò™Aà-\AðRÕÂpË5blc9BùÃ[\KkÖ[ØP¹j”Ãb$² ?—FÖôä•hêÖKx‹òv.’¢½¸* Z²AF®QN‹Á¹Õ6eÁX öu»Îºg¹åÅý.òZÀèó cîºç†…ú†Àó‚|>?33‡#‘ˆËKµgœâû¹oW¸®¸ï¬>±šÐccL:ƒÈ‘­<äK†zY­VdSƯI´¢ªª*‰¸KP‰Ø7+œÖ…*ŒwH …¬¡Ûp_cVN1•³ð&_Û“K2`ZAЗ­×"Ìúö³lå#¹v)g½*7ÐXæææ&&&N:ÕÛÛÛÐа}ûöeË– þò—¿4ÆÜrË-«V­jll ƒ+V¬Ø°aCmm-Òûn±0a(A’C]ã¤Ið¸Ë”RÀäpXò>/?2ž”Ö N”ý/ïà Ø•Û@–»¡uÙüÄÏE,ÿ Jñ÷ØÓ–o%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/ScoreLayout.png0000644000000000000000000000013213135434036017705 xustar0030 mtime=1500919838.103315139 30 atime=1500919915.429981806 30 ctime=1500919913.373315139 denemo-2.2.0/docs/images/ScoreLayout.png0000644000175000017500000023115513135434036021565 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRªˆ‘ôD´gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>€IDATxÚìÝu\SÝðgÅ6j„ !¨ Hˆ ¢Š`c#ÖÏîîÂîîîîÖWÅN,°;À¦a¬î½¿?®Î¹bÀtÏ÷Ãû~¶sÏ=ç9çÎ=»±;ÆÅ‹e2) „Béó§OGõ÷÷×c›·ããÛµmûìÙ3ý†ª¯fÙ•+W&™~ƒC!„þ.L&“$Iý6HQ”~ÛÔc³l33³Ü\¡~ƒC!„þ.L&“¤(=6Èb±(ŠÒo›zl–M’$¥ïàB¡¿ “ɤôº§Nçiý¶©ÇfÙ˜ûB!&“I’úLˆ?ŽÒë9Éê«YLÿ!„VÃÞ¿^ÛÔc³lŠ¢ðB!§÷Kÿ¾Ÿ¤ÿ=ÿõpéæ~„BHï—þ}?J¯ï$›g³, ‚Ð^Ȧ(ðB!Ãöç/ý ¨§iÑéØSk–ÅbU¯Èb1ïß¿Ÿ–šJZZYU¬X‘ ȸkWåŸØxè!‰D‹/ùï¿ã©©iÖÖÖþþ~sçÎýýöèÑóòåË2™, `éÒ%VVVrÔ$I^ºt)44ôOvŠPñ¤ÿ/þbï_ÛνÖf ©”¢(ƒéë[éîÝ;©©©VVV¾¾•€¢‰TÊ`0èšlJß%"ô7š5kö¶mÛÖ¬YS¿~½uëÖO™2eéÒ¥"‘èw÷»v횈ˆz¯^½:|ø0A"QîŸü@~ýúõîÝ{¼yóZ&Ã{!C§÷½¦nßÐ[¸pâÓ!C†€–µ´7+#ˆãÇGFF2™ÌJ•*¿|ñµ\9 Iòøñã|>ÍbÑ5ÙEáÁ„Ž;&7n,‹ªV©bggÇfs€Êý]Ëó}®0çOY"‘¬]³x<~vVæŸì¡â†Á`èý‹?®ÑË£ÍòîåU µ¬¥½Y&ƒ)‹9Éb±<<=e2AGŽ‘ˆÅ&ÆÆòñà?Bfffïß¿_¸pa÷îݼ¼½®^½JÿÓ¸sçμyóe2YFFF³fÍz÷î>\¸pÑ·oߤR©µµÕ Aƒüüü–.]vöìÙ'Ož\»vµ[·îgïÞ=—/_^±beFFFVVf@@õ±cÇh9¼¯ô/ñöíÛ+V¬ …‰‰‰®®®S¦Lñòòlß¾ÃÍ›7}||Ö¬Y}áÂ…3fzyynÛ¶MST›6m:|øÈ£Gž=K‰D3f̸qã&EQ±±§ tùʰ³³€ Î;::õv@¨Èèÿ‹L&äÙ¦Ú ZÖʳY AZzz\\}^Íf_¹rE,YZX(®ÅÄì >œÁ`Ì;7*ªÍÍ›7I’ÈÎÎzòäi»ví===Ž9bcc³`Á©Töøñ“¨¨6ööö'Ož<{ö¬““s‡?~<`@ÿÜÜ\’$û÷’’Âf³oݺݭ[÷Q£F^¸páäÉS§Nš4i²üÄ[ž† ’””tøðáíÛ·ß»woÑ¢EL&kíÚ5</88ØÙ¹t“&MÁ®]»5EÕ¹sg¡PHQ”™™9Ç›:uê«W¯˜L¦‰‰éªU+]\\àÓ§OŸ>}òððd2™E½*?öþõ‰ùãzšÐ]ëR˜¯fI’tqq©Q£}RO&“Õ¨QÃÅÅE©›¤H]ßúw5lP¿lÙC“'O‰o߾âE‹5l°víZ™L6pà ’$ (#dVVVëÖ®•J¥C† a0@”›Û£{·½{÷nÚ´yþ¼¹ô‡éˆD¢÷ïÞÍœ5‹¢¨Ö­£ä½\ºt‰Çåiü•_?‹Ÿ=s†Ã1ÊÌÌ|ñü$%%q¹\’……ÕÙ¿ÿðáÃΜ9Êårs²³×æÝþ/÷žfefõ@¨(}OÿzÝ6Òíæüj+hY+ÏfK”(áïïÀ âÊ•+L&ÓßßÿæÍ›ß¾}“WcS:ïŽ ô¯ÊÈÈðððعsÇҥ˖.]ºdÉ’¦M#_¾| ‰¸ª_U‹-æ¼|õ ìííÅb1`gï/_¾äq馌ŒŒD¢\çÒÎ_¾|€§OŸZXXÈ;ÒrºM©üþƒóçÏ755kÑ¢$Éd2)€F?þß7<4rä™LFõ*¯¨TÛ§4wÒ~é_³æ-T < ¥Aúý)vgÄáÀÎ;ªù—(Q‚Ãáõv@¨È0™L6›­i©Ò×óh®.®Z¤wÓóÛfž-ko–$ÉM›6€¹¹9}¡±••UzFú† ë ”c)Ö/þ1R¾}c±Yhv*®”••eggײe‹Áƒ‡$)寯ž^¹rå«W¯ììJFDÔëß¿?ŸÏ¿½dÉÒÔÔT&“imm=|øð€€€ñãÇoÞ¼Y"‘4lØpÀ€..eàÉ“'óç/¸wï›ÍöððˆŠŠjÕªUNN¶¼ßÆ›<þ\]]I’”H$ÉÉɇ®PÁûÀƒÓ¦M³µµ2dðøñRRR"##çÎ×®]ëÓ§ïýû÷9ŽD"¦›ºsçŽjTÙÙY #FŒLMM­X±bçÎzôèÉd2ûöí;`@ÿ½{÷._¾‚ÉdV¬XqêÔ)fffE½*ÙYY÷ïß§ôzÌÜÜÌÞÞ>1ñ™~CͳYúŠ?¥Ïª…Œo_¿²1ý#`lbÂf³EI$bñ{þp8F\¾Ï¶T*‹DôGo.O_ÆOQ¤(WD2ŸÏåò@*•ŠD¹$A‹Åâñå7Ü–HÄR‰D±_S3sz)IÒçäL&3';K&“qŒŒø|cŠ$E"ߨ˜Á`ˆD¹b‘èСC÷ï?˜7~Vf†âµj£‹mlbÂ`0‚ˆEÆ&¦ ‰D¢\##.—Ç‚å …øU d˜rrrŸ/ æøíô‹<öþSs$önQ‰~/{7÷þ'>Ÿ+Âó+áüüV<.÷þ‘ª<ÒJ¶ÄN`¤iéµë7üjÔ’ÿ†ÔŽjßaËö2YÞ¹„$É‹—Ô©ß0(¬n~ƒ¦ûýòå ¼OJZ³~ƒ0Wý{‡D*ݱ{OÛÿu  hÔ¤g¿þ—¯^ûÃS¬ó¦}ŠÀN`”š­ñ<’$89p؈fQÑ­Úu:rôå«W Ƈ·íÜ•+ý¦aÞNH¨ÙìÛ·”Â7¥÷¡ñx<‘Öß½wâÔiQþ׸E«]»Í[´øÝû÷ia¦BÓºjË׬ßРió3çÎrµÌݯü¯qó–=úößwðý Ì?¶ÑŸ&&Òÿ†óöÝ;-5£UúÓ½»|m]¦77?]!eÚþçˆ ƒ4ååq‚`ÊÄñ ÈÍÆ'ÜY¹f탇çΜ¡}­‡ïؽ§g·®¼¼ 3€÷IÉkÖohÙ¬™1Ÿ¯ºtLÌ„[ññÑQ­=ÜÝ…Báå«×†Œ9lð ¶Q­ÿÈô Ú§Lyl“ÌÉŒÔ|œ>{Nü»‘¶iÕ"'GxýæÍé³çöèòµyÓÈ|…‘œüaÛÎ] ""¸FFùZQGIIýöoÿ`h<.ï“蓦À¶îعsÏÞj~U»þ¯£¹¹ù—¯_Ïœ;ßwÐCÕ¬¡Z¿œ‹ËÔ ãÍÌL55˜g…L£jù–í;9:°oŸ:¡!…œs-óC÷;|È ™9H¤’mؼE*•¶iÕ²0#Õ]ŽP8~òTߊ>­š7Û³ÿ´YsV/[¢©òÔ ãéÏ_¾Ü²}ÇÈaCÌLLé݃Ô}+è8½Ÿ¿|þ}óƒþRÚRû·l©£EÞïÔ~•+ÛÚÚÒÃj×®U£Æ á#NœŠmP/BËZÙÙ9вY3kk«ß4¶7oß^¼|yÎŒéuBCè’Æ L™1sÝÆMÑ­[á Š,Œ¾eKœ,•Oôœ»pñúÍ[ógÍt+çJ—„Õ]ºrÕÆ-[ëÖ©mjjª{ôwº( (ê·|¹ë{ûÔïj¿0Cãr¹Â\¡Ú¥—¯^Û¹goÿÞ½ÿ½4nPùê5ó-vvrrv*¥´Š™™Y•Ê•èÁªí.Ï ˜F¥ò=ûìÚ»¯oÏuà ?áZæ‡î×ÇÛ»„µ5]R½Z58|ôXTË…©î^¿~“•Ý©C{;Š¢fÎ'ÌÍåóÔß•ŽGyÅ ,-,¾—褎[!Ó+ăÿH™¶ƒÿ©Ùb{ .Cøµ¨fÀZ5j:rT^²ÿÐáæQÑ5Bë´ïÔåÒ•«táÀ¡Ã ^“H¿µ †T*]¶rUÓÖQ5BëÔmØhÐðÏ_¼d0q7nøÕ¨õåëWz-úijjª¼_¥v¥¥§@™ÒΊ…­Z4¯$‘Hä%ûlÖºMÐ:Ñ;>{N^¾eûŽ&-ZÑg4bÏœU àñÓ§ÝûôíÔ­‡–ê2W4µc?tähõàМœyµ¶ÿëI’Wãâx\.¥¥È•¶£¦y“¯ûîýûcÇ5‹ŠîÚ»ÏÉØÓªmjZWuz ’Ðåœ,2(ÚÒZ¶¤d®û ¬ððñcú•ºgßþ¹ Ö­S{êÄñåʹ=æêµ8èÛ«'LŸ2iéÂù°|õš»÷D6j4sê”}ú$%%ÓI+OJí(r/WÎÜÜ|ì„Iç/^”ŸYôöô?v ïÇ'÷=ûöÏž¿ $¨Ö´I½<=ÆN˜x;>¶ïÚ½tÅÊ:¡!S&Œw/ç6vÂÄ·nÉ[ž6sVÅ úõé¥e€ºS;öàZ5 ‚ˆ»q“®ó>)éù‹áuëh,¿S$WRÀKÍ‘¿úòõë›·ok(•—´µ3ÖËÃä…ßK’dvNN̤)"‘¨Oî}ztOIM1gI’ÚFÀðÁƒ&K¯rðÈÑMÛ¶T2 ™Ò¥ç,Xxçî=ySÓfÍñ¯ZµŸÞb±xúì93çÌ Ч·D"¿d ©B€ª-Ûw9v<¬v舡ƒÿ×¾ÝÇŸ&N›îWµ A’ñ wè:É>¼yû¶f` ö¨Ôv§:4U|_˜+T*üüåËû¤¤°Ú¡ªõ™ FhpÐí„y_KV¬ôpwÿ_»¶ò®OœŠ]¿yKêƒû÷ãñ¸s-¢Ëåè³ç/¨Tѧï^¹¹¹³,Ð2'Z¦ñg§±§×lØØ¡mtd£†ò¥Gÿ;±jÝúšCö/íìq¹\‡£¸TûˆÔN‚¦m­ÄÔÔ¤s‡öë6n3áù‹—cGŽ u ¹ÒvÔ4o?cž·ÀÍÕupÿ~.eÊ,]¹êúÍ[ŠmjZWÓôâé¤DÛÁÿŒ‰}‰‚|§¤­X,ÎÎÉáóx«×¯ïÓ£{çÿu€ºuêH$’Õë7Ô¬èéQü«T±¶¶±X<¨_ßè§äóá£Ç¦¦¥åÙ—R;ŠLMM—-Z0wÁÂá£Ç²Ùlòî•|}«ùùU¯æÏb±€ ˆ5ë7Dµl1tÐ@«úòÕëÿNžò­è³aóæè¨ÖtyDݰo©)ë6l ð÷§[nÚ¤ItëV “É4 P÷éR;v“YÁÛëòÕ«áauàìù  ²¯o̤ÉZËïýÜdîÛYÔ¯G?ù666”棲 ß#ùqXòÍ›·™™Ó&M¤ZÛÛÙ<}Z*•ºº”€ Þ^–EÉd²½û4nРk§ÿ@­iéé»öí«èSn*²qÃð:u@FÈ–,_9¨__ú$ý433ÓÌÌLK<Š$bq§í7l@?5359w>ÀÝ­Ü­Ûñ5«ÀÕ¸ëfff^å,^¢%*ÕñR¥44µ3L_~eÌÿåç3>þŽj×r*U*3++77—î«n:Ô€„»wéW﮽ûկ׭Óÿ f`õ S¦¦¦¦Qõ3T  jåÊ-›7£WY¼|EFf¦¹™™Ú9IOO×4tù…K—¶ïÚÃ`0è=uzA;wïiÕ²Y3¨Q½ºT*ݹgï¼™ÓUg¸boµƒU;?ò~Åb1½$Réã'OöáÎ'OUèËy¼==7­]sòèáÉb<ÜÝ/_¹:pè°æQmž=/_½NKO¯þó«+—,<°ÿ‡ÓÓ3"ê†ÉË#ê†=IL”?­æçG?Ð}€Zh{HPЕkqtSç.\¬üùËí˜97[¬r蕤€Ífi>´ ¿>¥ìíìx\îšõnÞ¾#ºº”í׫'‹Å¢~¾QSE}úü93+«Vêò’Z/_¾’7åãåM—Ó–VðöR|*Us X)žŸzvëÚ¨A}’$SSÓ<|táÒe HÒ¿jÕÛwî$IQTܛիùýöM{TªãUy¬׈+‹TB¦wæ4Ï/AôC:qÊ—|þü%%5µVòú5ªW…ÄMQ@?¨Z¹]A ¹5͉æiغcWßž="7Ú{àà‹Wô´Poß½ËÌʪàåûC•J•^½~M„ê 3™Ì|ÌÏ~û ܦc§6;uìÚ}æÜùå\ÊvíÔQi£h‘ê$h}þbçž½[wìš6i‚£ƒÃ‚%Ëd2Ù…K—š·i+•J)mT_¿lG-óF× ®YS¾ZHP­7oÞÒÿ$) ´®«~zñ«•H‰¶½ÿ,¡¤„yA~æ÷Ë—/<ÏÄÄ$3#:uï¡TAõ:”ø;w6lÞrÿþ@Pº´³‰±>cЦD‰úááõÃÃàibb̤)c'LÜ·s{FF(˜Àóç/ÀÊÒR^nme›››ý£Ú÷ð´ P÷Ëâ4=$(hÙÊU>´³³{üäI¿^=é/üh ¬ÀJ˜ó²ER¥O-VV–ðñã§’?.í”Û´m{JJ*(\„LQ$P$ifa>eÂø½ÌY°ˆ ˆŠ*tù_§R¥äèú)©©`ff&ïT ˆÄâììlº&“ÅTl™Åd*u¤-]®ö¢èGOžì?xøé³gf¦¦Ž|>nÁ¿jÕm;w=yšhcSâÅË—íÚ´Î3*Õñ’$©)$E6''7G©}9Ûû¤$»’¶ª«¼OJ211æñxtû<O±ëo))`nþK¨tòP馦¦ª1kšMÓH—wïÒ©vH°T*½¿xÙŠy3§³Ùì̬,9.F)~¡P¨:Ú¦HíüÈû5l}S ƒacSÂÚÊ è³ Ñj‘ê$hÙÖÆ ï?é{ìÓ£»gùòà 1vÜêõRSSJ•bþxMª¥úªPÚŽZ殩¸q-,,$RiŽ0‡¯–uÕ½yrؼú)Ñ–þ3srK˜ó´\!O/R¸°í»·nùTðf2™tÚ˜>y’½]IÅ |>_qÝ”ÔÔþƒ‡6ª_æá)ss¸výúÙóä-ËdddÐ~^E§6¸{ï^÷>ývmÝRÎÕE^èéáѳ[×1ã'äææÚÚÚ@zz†S©ïW¿OJÊÈȰ)QÒÒÒååiii\.×ÌÌL©»<˜ç\i»«KY§R¥.]¹jcc#üýª&%%ë=QyN‘\ s^¶PDýzHÓ¦D û+qq¾}Ë?|üxäØqoOOP8¶™™™ ÃG&‘Hž$&îÞ»ê¬Ù«—.¡¨_Ž…Z , =#CþÙ"==ÝÈȈÏç+ÕÔþTNSyzFÆ”³BjÕZ½t1ý™ìν{q7nRUÊÑÁÎ®ä­øxKKK3SSoOOúh¼.Q)ŽWS׊¸\njzªR…Ö֥Ϟ¿àW¥²R}‚ .\º\Ù·’jûôÿéWKzzúÏP32”ªišº´ôtMs¢}zý«V¥(ŠÍf÷ëÝkÜÄÉ;÷îëÝÆÊÂ÷ïW¢Ä/g—ŒŒŒTgXÓ©y¿®..tÊW,,؈äÿÏóHKNþ@„GywŠ¢ìízví²dÅJèß»—–Í­ö©T¢eÞè Š7-=Çãñù|º…<×UÞŒ¬ @Hƃÿ"‰ÌˆIsó}Ãÿ·n]¼|¥Uófàà`/²²³+ùúÒÏž¿8uæ,›ýËÇŽ·oßI$’ömÛÐïhpçî÷ø˜L ¯á€+×òqÓ·råØlö¾”Êq7nܹ{oå’ŧsÇKV¬d2Y>¼Î]¸x;áΪeKUÇ®ãåΜ=gfþóêc¾±_•ÊšÆQ·nhpж;™Lf®]èî4V¶LM¥eŠ•07ÊÌ[³~ÙèuBCnÅ'Ìœ;¿FõêåÝE¹¹·ž=ѲYÓ*•*±X¬u77¬_/ñÙó×oÞI‘%mm¥éÂ¥Ëk‡ ss>êîVŽÃá0 ¸•o_ÒÎËÓƒÉd6mÜhÇî= íœëÍÛñž<™0fôÏ#ºä/‡Ù•Žºk::}-î:}‡Æãñ¼==¸\îÚ ›"êÖ!Iòνû?€‡רàW¥ÊÑÿN0Œ–Íš’$©%*{;µã¥¯ÒWšúi,¶L&“Édô5¹êÕü[4\·isü;Õ«U373ûšòíâ¥+oß¿Ч—£ƒƒ¦ a2™-šFnÙ±“Édº»•»pçãÇOôRy}M3ého¯iNŒùŠ«(M¯by›–-nÇ',]¹jÎôi-š5ݰeë·”—²eß¼}{è豞]»Ð5•fXÓËOÓü¨ö«v©î#’O‚–m­ØEI[[·råÖmÚœmddtàÈ++K»’%7mÙVÁÓËÆ¦„¦©¾P•ÆÂd25ÍE‘ ãjÜu&“YÎÕõjÜõç/^LŠKÿ0ýBÕ2çj§W*•A¿ ZÒ¦P¬ã‰ÿ˜I“é§”£c¿>½Ûµ‰’/mÝF*“íÝ`ÛŽ¥J•;jDÓ&•Z°°°X8gö’+&L™faaѤaƒ][7wìÚýüÅKuëN;fåÚµ¦L­X}⸱{ôT\·‚—WÕÊ•gÍoll|þÔ ¥–ÿ×¾[¹r»öìY¼|EVV–¹™™O… +/ªæÿýÚ½m£ ‚Ø»ÿÀžýûK;;Ïš6•^ô¿íe„lÿ¡Ã»öî-íì4kÚTÿªUÔ_—ÊÍ_üËÍÂìíìŽ: eì•|+ &ƒá_µê÷i¬¤­­¦‰Ò>Er6æ¼ì\©•‰òž†xúì¹ —¯ÜŠg89•ê׫gp­šÐ«[×=û,_½¦REŸÞ=ºŸ<•¢(.—;|È ­;v-[µ†ÇåVðöêÐ6š¢(W—²^ë7máóxëV.€& Èd²³ç/œˆ=í`g7¸_/O¥$ÐþTŽ~¶yûŽ_U¢Ä²…óG¼}÷žå«×š™™†Ôª5{úÔq'ß¼PÍÝ­œ™©)ƒÁ »Ö••¥¥ÚñªšZ\.W,óTnÓ¦UKOò'NÅnÛ¹K˜›knnVÁË«OÏîN¥JiŸõ"Dbñ©ÓgΜ¿P3°zTËËV­f±Ùj÷þW455Õ4'!Aµ´L¯b9›ÍîÛ³Çø)SwîÙÛ±][™L{æì±ÿN”,Y²{çN¡ÁAtMÕÎ×ühÚÜJKu‘bƒš¶µR/Ãظuë®}ûÙ,V`@µèÖ­r„ÂQ1ã—­^=qìMçÔT#W-iX/Bí¼Q0ŒÑÇ­Û´éäé36%J ìÛÇÃÝýîýò4­«izy\^nnn¾nÕ…þmŒ”õ·NxñA,ƒúžE¡¡‹îø?Ÿ Æù»;:yã±47»¼ƒEQøO3Þ͵\÷.~wGo“ÞZ,fzûáµWoÞØ”(aöã =öìÙ-Ûwn]¿¶¸ÝÑRÇÖûü Eï’Þ•v.mkc[ø¦Ð¿AãÞ¿0WdkeQÜÞG ÍÛwïž=1lð ?°!¬Íø¯ÓSóõ•ÅÀÇOŸÞ¾{ß¡mô8‡Ã‰Df&zûîõâe+ü«V‘lK¸s¯LéÒšv”‹Šî3¬÷ùAŠØ6žþGŠ´¤±¥™>¿}‡òkû®ÝçÎ_(åèèW¥Já[Ë“¥™q¢”(V™ãw;{úf|‚­gùò`àG,ë±£Ú!Áû266¶·+yÿÁ£»÷ï÷êÖµXmÁ|ͰÞç)â°8˜þ‘"é_$ʘòóÓÒ³-Û¶MŸ?H=½E*F4žûß{¥S³z\£|ñý¥Ä馃§jx•.ê@þYR©ô݇w®¥]‹:b çç·’J¥I“‚ku ¨¸P¿÷/‘Ê8L s¿Aáq8LR*#ج?q°Á±X,™LF’$^R£ÎÏoÅb±$R ý¥Á¢Ž êÓ¿07×ÂŒÿ …_,‘°xû¡”7›#‘JŒ8F…oꟄóó[qŒrE¹&Æ&…o ýÔ§ÿ\Q®…)^÷gp,L%R úü6FFFb±˜ÍÒõ¦†çç·âp8B¡Ó?¢i8ø/ 0ý©qzZ:^{õû°Yl©]_™/8?¿›Å‰EE*.;÷îT» ªEü74Eí9°§¨£@!ôÛ1vîÝÝ*º¨Ã@!„Пƒ—€"„BÓ?B!dp0ý#„B'ôß³o_ÿ€ÅËWèÒÖ»÷I+׬ sé§Wãâ|ý>ùò›B'Irî‚…ÁaáÕƒC ÓŽŽaçw8¿{øº!„R¢-ýKI¹obl{úŒ.m½Oz¿jí:ù¯Jx{z®X²ÈÒÂâ7…þàÑ£m;wµm5o֌´£¶&¿{8z¤ãˆB,mé?öô&“9tÐÀ¤ää‡å·i ‹šFF¿ë^ÙÙÙкe‹Z5jü™úÝÃA!„þméÿDll­M5äóù'=°{ß¾ÆÍ[V«Ôªm»S§OÓ…}€°ú }ý@åè÷Æ-[ëG6õ«Q«yTôÉØï«ÈëtïÓ·Z­à–ÑíîÜ€ÄçÏûV·Vºý yûîjxJÝåÙË£Ç;÷èÙ®S]Úùðácמ½«Õ jѦíí„¥áèžb‰dñ²åšµ¨V3($¼^ÿÁCŸ?ßèPÕÀšôgZëví'N–çÔ)>ý–’¢iD!„œÆôŸüáÃý5hÀårƒkÕŠ=}F~+®]{÷Íœ3/48hÆÔ)Þžž£Æ¿u;ú÷é ³¦M]±d‘Rk[wì\¼lyÝÚµ§OžXÞÝmÔ¸˜ë7oÊ—Ž0qܘaÎÈq1999½ú ÈåŽ5jܨ‘_¿~6j´j„ªÝiïeò´¾>>ûõɳ;abÍÆæ G¯X_Çð´X¶rÕö»š6i<{ÆôAýú¾OJî7hHHPA×®_§ë¼{Ÿôìù‹zuëj”ZZ6B!šnú 'cO›šš†@½ð°S§Oß½w¿r%_‚ V­]ݺÕð!ƒ nÚ/^½>vâ„¿_U/Oð÷«ZÂÚZ±)©Tºnã¦vm¢èUê…‡KIY³nCõjÕè A5ktëÜ ‚?yÊÍÛñiiiëW­puqgg§}J¥Rç—{Ñ+u—g/Í›F¶m¥:Rµa·lÞŒ‰¢¨˜I“ÓÓÓ勞¿x¡KxZˆEâÁú·‹nC?µ° 1ŠÉ`úTð¾xùJDݺpæÜ9  JåJc&LÔ2(µ4m„Bˆ¦qïÿÄ©S!µj2B(Ì­Z¹2ŸÏ§ò¿xõ*--­~D¸¼æšåK‡ ¤¥äÒÓÓë)¬R?<üñÓ§ò§A5¿Ÿ¼·¶¶G>Ÿ?s—/çääx{zN76Ïäšg/ÕüuŸyHVV– #ù"g'ç„§hì¨í¢ÛPõíÛ·Ûñ Çþ; $E†_¹z$I8{þBÚ¡Ÿ>Ö>(„B¨Ô§ÿ—¯^=ñòøÉ“!¡!¡!áõrssOŸ=G’dFzX+ìVš˜˜˜››iéãÛ·°²´”—X[[çææÊÏs[üz9½••åúU+ŒùÆÃG­U§nï_¾z•çHòìÅÄ$¿se¡ù ÿ‚…§èvBBïk„ÖîеۺM›ä?­P;$8=#ãþƒŸ¿|yôøqDݺy !„*õÿOœŠår¹+–,b1YtÉÝû÷-]v;>ÁƦ¤¥¥;•*E/z÷>)##ç‚·¦>J”°€Ô´4ù*)©©\.×ÔÔTÓ*Þ^^K̋Šwï­\½¦ß !'Ö>’ôR`O.%5µï€A6˜=}šÀÜ®ÆÅ9w\Ê–uv*uñò›%A5¿ªï“’t”âé „BH;õ{ÿ'cOתQïJ•Ê•|é¿6­Z:}º”££ÀÜ<öÌÏ/Lš:mËöíZúptp˜›ŸúqÉ:œŒõöòÔTÿibbxÃÆ999\.70 Zû¶m>~ú”››ÇMlòÛK,<¹7oߊ%’ŽíÚÒ¹âîÈ—†_¼|å̹óa¡¡,KË ˜L¤¥¥Ñå—¯^ÓûHBý«Ôìý?|ôè}RR¿Þ½ ùÕª9a쨑ݻt^¸t0•*VŒ»~=áîÝÕË—‹Å€K—¯8;;ùU©"_—Ãátéô¿ÅË–3Y¬Š¼Ïž¿p;>aíŠåšbrvr–H$£bÆ7kÒ$;'gýƾ>>|>_ûHòÛ‹œ¦°õ^왳ŠgFŒùÆþU«ðùüé³ç´iÕ’ È+×®Ñß›ˆOH¨^;$xëöL&³g÷®ÚåR¶ ‹Åš9g^û¶ÑwïÝK|ö¬À#B!dhÔ¤ÿ§bŒŒ‚ƒj)•‡Õ®}éò•ë7ovlßNF{öïß³w_éÒÎsfLð÷oo¿*UfÌ™kbl|ñL¬âº;vÉdûÚ¹{Oigç93¦ûûUÕ“±1Ѽ¹ó/Ž™4™Ïçøû4P—Áä«9-a>¼y )>µ··;yäðâùs/]3iŠ¥…EdãF{vlëÐ¹ë¹ ë…‡WöõµLf5??íƒ*ik;)fÜŠÕkb&M®8i|Ìÿºv/؈BÆÎ½;£[Eu觨v||*Œ“¿{ „BºÃ_ü+^Þ¾{—øüy½ºu‹:„Bÿ2vá›@ú²m箳çÏ—rtô«Š'ìBýF˜þ‹‘Í[·͘:™ÉÄ£2!„~#LÿÅÈéÿŽu!„ îe"„BççÞ?I’‰Ï“?&ë~›bŽÏç;Ú;–w/Ïd¨ÿ”óo Ù@†Y`ÿäüä9(„Òîçÿž$>€r.åØì䌀L&{öò‹Éòp÷P[áß² ³ÀþÉùÉsP!¤ÝÏ÷»¤ä¤ÚÁµI’‹ÅE•~0™L7·›ñ75Uø7†l Ã,°r~òBi÷3ýK¤ƒA(ü²íߎ “AQ”¦ ÿÆ d˜öOÎOžƒB!í”vþKo( ù/éjõ·Ù@†Y`ÿäüè8(„Òägúg0Eý]o‚yÓ:šgÈ2Ìû'çço‹!T¬ü²÷ÿW¾ jÅ òØIú7†l Ã,°r~òBiñ¯ïýPš÷’þ¥!È0 쟜 „ êOÿ¥íòŸ² ³ÀþÉùÑ>(„ÒN!ý4\\7BÓú—Šôçä““?Äž=ݺŸÏ×TGÛnŸæ!߸ukĘqŠ%VVV~U*÷íÙÓÊÊRSƒ$E-_µúTìi‰T{ìH!GGǰç›yV.Ø0€$É#Çÿw2öÍÛ·»´³së-j‡ç7Z]¶Åïþo𥗇ÍvttlP/¢u‹æÚo cð…œ4Ìÿ¡ÓiïáÜÙôƒ§‰ÏV¯[?eBŒ™™]R´ûLI’7nÙÙ¨ÇS]ú}8Úí£¯¬ž8n¬……H’zÿþý¦mÛ¿¥Ì\8g¶¦?~²wÿn;y{y~fäWwkoª0À S¦Þ¼ߺEó.;dçä\ºreâÔi_¾ôŒjÕRÛ¢<Ë—_8w¶…… 3©Ç—P˜›p÷îº >zwÁÂÕë7Ô¯afjZà° ÏÌ̬jåÊš"×cHùz„ÕªX}ب1±gφש£½GÝÏ)`ŒÝÙ „P±¢ÓÞ¿üŽ(II’ò’c'N.^¶üО]&&&tI·Þ}323SRR6¬^9ñÒgÏŸÛÚØü¯C»ˆ°0yƒGŽß³ïÀ×oßœJu騱F`uxùêÕšõŸ<}JåíéÙ¿wïR¥µÔúÀló6ÑpþÔ Õȵ¿ÿjÛ-¦HŠT¼ ŸÏg0¾·©6$:ž¦­ÛÐñܼ}{Ô¸ñ+—.^±zT"]¹tqþÆN|üôiÊÌYOìí÷ïç[ÑGÃܽoýˆp—2e¤R©¼0:ªõÇOŸwíÝ·}ç®=Û·Ú”(ôXöïÚaei©6ZµÛbמ½‡ŽKMMuppø_ûvuBCäMmݰnÞ¢ÅOž&ÚÛ•2`‡ÃY´lÙ›·ïìJ–Ø·_Õ*7nÝ5n<@íz ”"§»ÐôÂø}/‚ ªV®\£zõãÿ¬[»¶Æ×'E¯ý½Ù|½€õ2(„Òîçï…0àû› vðãMV+0 ˆ›·ãé§IÉɯ^¿®[;FŽ‹©àå9~Ìèr®.3çÌK¸s—®sðÈÑ¥+VÕ©:~ÌhW×ñ“§\¿y3''gøè±b±xøÁÃNIM8mš–úô¢žÝºÀäñ1 æÌÒ­Ú‡ ¢\‘P( …999Ï^¼Øµw_XíÚ\.WSHJñÐ'•ç-\ìãíÝ»G÷Œ¦ÏžPmÔ°¡"‘hêL}óËׯ/_½ ©U‹Þ÷•+ik;oÖŒJ?>gÐ…ôX@S´ªÛbïþk6l ?vŒ[¹rSgκ ojü䩵jŽ>L,–L˜2uâ´iõÂÃÇŒ.•JģØ#EQ æÌ’ÿ•vv.çêªý…¡ß—R Aþ~UŸ$&Òó¦) ùŠùzëkP!¤]þ®ü§O6*V̽<=¯ß¼T .]¹*07¯äë»{ßþàZµúöêIQTHP­~ƒ‡lÛ¹«’oE™L¶yÛ¶î]:·jM/’J¥›·íèÓ³{zFÆ’Áœ ”£ãácÇè]Rµõ«ùù€›«+øx{[ZZ¨=ØNåuÔWÓé‘vìÖ]±ÐÁÞ~øàAR©TSHJñÐ4iÔ°yd’$%I¾ÆN¯Ù¸Q»6QtœÓfÍNÏȘ›ëe˜Ÿ>›J‹(Š’H$ô|þL?6ýËׯÕF«4v™L¶}÷žÖ-š÷íÙƒ¢¨Ðà Ô´Ô­;vU©T‰n*ºu«õ"(Š’Éd3æÌ×wdDÝ0ùÓŒŒLÅ[e__:¶§b¿|ýº~Õ -[Aï/Õ¥%¬­ÄbqvNËUF—ÿu WÔ§ê¤ékP!¤ÂÞ?C—½€_w†H’¬XýúÍ[ôžÐ•«×‚ƒj1™  •J¥2™L*•F„…=IL¤(êÍÛ·™¾>23³²²²322üý^¼|é`oÏãñ,YzùêµÌÌL—²e†Äb±4Õ'‚¢(‚$€ ú©úˆu¸æKÓHgL™´bñ"úoÌÈá9BáÂ%Kµ„¤@¥Š¥R)Aù;½z5¿ªô4𙙀¦‘`˜@QÀb±tÛÖߟ:9:ªViì>~ÌÈÈ ¦ƒ—H$uBBž=.oªb… ô"À*VðV|*#dŠADrò‡e+W <°¤­­ö†~_êKZ WÌ× XƒB!íòù½u4Õ¨°fý†GŸØÚÚ<}ö¬[—N2© ÌÍÍäÕ,--E"QvvvVv6ô8X©a#gÉ‚y›·n›2c&A•+ùöîÞ½LigMõ…B¡‰‰ äuUÐÝ>ºeW—ÖÖtGy÷ŒôŒµ7…†„h I9Š.׈~šß±Ó«›ššÒ«Ó^¨ ¸`Ã,Q¢|øðÑÞÎNiÑêõ¾}KQ EQæææZ¢•×OMM33Sy¿ú5@×”ÿb =.“©4L¥I’œ5o~HpPí‚ òxaèõe ºôË×o<.—Ïçk #7WD¯˜¯°…BÚétå¿¥wÃRŽŽ¥®ß¼ieeennîãí}çî=HIM-ikK×IIIár¹ÆÆÆÖVV0a옒%mÛ422r)SfúäI2™ìþÇë7m7qÒ¶ë5Õçr¹ò “þµ™Þé”?utpJ¥|WSHjã‘?ÍïØé¥J,ý«¦­³“ÓÅËWªT®¤Xž”œ¼ïÀAúCyw™™ôS’$µD+¯O7$5-íçk 5ËåÊÓ˜¦YR‘¼|×Þ}YÙÙƒú÷“ÉdZ&Sñ…¡¯—êœÇ'$xyyR¥)Œ´´4zÅ|½€õ8(„Ò.ŸÿAÍÁP‚ j^¿yëʵkÁ5kÂ3¦.^¦+$yæüw·rE•´µ˜›§§§»—+Gÿ=}š{æì«7o¢;vJKK#¢b… -›7ûòõknn®¦úL&SS<º!Õ6du-³X,°¶²Ö’ÒZ¿>ÍïØµ·Vøa’$ÙºEóS§O߸u[±pã–­L&³NH¤§gÐå7nÝ¢{þò¥.Ñ–´µ573»pé²¼åó/–ww“_¡q\ò§ åÏ_¾Ü³ÿÀäñã?*æñÂø/ƒ„;w¯]¿Ñ¤aC-aÐ/È3NÝ^!Bi—¿Ÿü¡4 ­°gß~&ƒÑ±][ùÒ±±L³¼›Û¥+W>z4gú4Š¢˜LfÇöíV¬YûùËWw7ׯ^ïÙ·èÀ¥%RéÌyó#„Bá®}û¼½¼èýiµõé.˜L&ÄݼåhoïSÁ[SÀÚG¤¶Î‘þ҂ײsr4…¤4?JäwìJ«kšü ³~Døµë7&L™T«‚——077îÆ'Oÿ×¾]5?‹µlÕªæ‘M=~úòÕ+ºMÑ*m &“Ù®MÔêõ †‡»ûµ¸ë÷î?_ß®e\*O¢¨ÙóÔ¨üácRr2¹_•*Z^ú}ܽÿÀÜÜ D"ñƒGþ;yªvHp­AhÚ¦òàµWP4= !„´Èç•ÿ û*ŠååÝÍÍÍ™ †··|á” 1[·ïŸî]m´j·‡Ãáp8ôÉugIþ”ÉdÊËU/|ËÉÉÑòÂÐïË@±„þzžReÕ0”•¯°^…BÚýò“?$Ij¿U-ý~¤ZžüáÃËW¯zwïF¯NRșڔ b±X,ëØ¸¦ú4M]ÈÛÔ²TË5“••¥ûÔ6¢ûØui­ÃÔ>½‰D"‘¨Ž]S$ªÛ¢³$JæPêZÇÈõ5?Zæ\{J+æë¬—A!„vzøÁßÃÇŽÇݸaooçåéñý-)Ÿ7<ÿ}´ð—þÒ«Á³ÀþÉùùëF+zHÿ5âpÆŽ¡ø9(6é_K éû¾Á³ÀþÉùùcFùÞ¿’Ý[7€H$’§ÿ*•+;ù_vvv‘¿=åqÔ· C.n d˜öOÎüG†ÂÿP°7Áììl¥©TªËÓ? átÈÅ ³ÀþÉùùëF+z8ø_œå¹Û÷o Ù@†Y`ÿäüàÞ?B¨0òwÛŸ¿Nï÷òw1aØ?9?]À¡bågúg2™òŸ)+ê¨ôƒÁ`$Á5âjªðo Ù@†Y`ÿäüä9(„Òîgú·²´JMK˜ èÛ¹˜–÷м½ÊW)Àº,+#+ÃÞÞ^S½ YS`ù ¸À#ý3Ã,À “M×-dVþÝóSø;ò*ÞíX_ƒB!í~¦ÿ²eÊÀ‡t¼j¾IœÒSÅÿç¹¢Òƒ<×e?|òë%V–V.e]45X˜!ësûËâ¸Ó0ÕŽWË(ò;iÚhlGq>”ê+”ƒºfô5?ù}hÙèÚWÑòÐqP!¤ÝÏ›þ"„BÈ@èóh0B!„þ ˜þB!ƒƒé!„28˜þB!ƒƒé!„28˜þB!ƒƒé!„28˜þB!ƒƒé!„28˜þB!ƒÃ€3_Ôa „BèÏÁ½„BÈà`úG!„ ¦„BÈà`úG!„ ¦„BÈà`úG!„ ¦„BÈà`úG!„ ŽÒ¿L"»´óܼvÓdž ™XoÔŠ^ _yPÔãRïiÜãaþ}3¾¤kZ”•’ùgþíý×SkŽ‹…bM%ZBE!„ ‰­ôœ‘"e>Ï1©¦.—Iºó)+ŽRñÖ±ëžßzZÊÃY”#z|åÁú!+› k]»¨G§ÌÉӹǒþ&¦zi­0ÿ–ô5víñ-ƒ¸Æ\µ%ú !„R¤œþ™ÏsË{y8˜Û«VMÎøøìÉS¢ú/éÿË›O/Þï<§§OíJt‰ãê»§n;½î¿ZmB FQð&¦^ziêw\¡"„BJ”Ó?ˆIÅÜñÒùàïû²ŽûgâÇJÕ³Ó²ÀÆÙV±°FË ¤b©ψ.¹ºïÒÅíg3¾¤Û8ÛÔíÚ RxUºüü–ÓW÷]Ìü–Y¢”Mx÷•#üàiÜãµ— Þ<êðÂ}2‰lðæQpmÿå‹ÛϤN/Y¦d½^½ƒ+*E²´Û¾ü@?Ø1qÓÛ¯­KÙ´íR¹Ü÷ ´ýì¥çrÒ³Ý.͆µVŠ!„ËãÜÿõqÚ+8¸9››l‹ÙðàÂ]‰HB:y•ŽŠéð3÷ï½xpÎnï`ŸöS;;y–Þ6nËÛÏàÒŽsÇ—ò©]©ÝäNîŽÛÆmxvó©¼å=Ó¶—ñqiد)Ý¡y{|ê´›ÜÉ®œãÆ«Ÿ\}¨‰{€çë;/(Š€7÷^Àë»/èE¯î¾0³2wpsT¬aÛ™SkŽû„úFOüׄwxþ^ù"]ºÓqàšÚiÐ':LëÚcIM%жŽ]ïàÙz\{±P´uÜúï[çà•£‹T¬S9zÒÿ¸ÆÜmã7€(G´ºß‰HÒrTtËQm3¿flµæ·¿ŽBýUØ…\ŸgÊï¹´ÿÁy{6XÃb³=œ\*•só/ïàÉd1€$ÈØµÇk¶i:¤T¬SùÓ«ñ'n–õu9³ñd­6¡ty¥ðªY)™§×ýç^̓n9 iZmB€§Ö¯ß«qÎõÀ·nB"‹]ûŸgÍ Š‘¸xÄ®=þùÕG;W‡7÷_•ó/ÿâVbæ× sÁ«;/ܪy(—Idç6ÅVoV³Å¨hºÍå=¼¾ûR÷îò¸övJy:@9?w3ksºAÕEž5½Ã:×£çs×ä-9éÙ|3ãØµÿÕŒ i:´Tª[uUßÅ™_3>¾HÎNË­‹=”p¶‰;p…ÊXœÂnk„Bÿ õ)áú¸‹—ÎÓgÏÖVÖÝ»õR[ÙÉ«ôÀ #2¿f¼LxþêÎóÇ—\ØvÆÊÁºË¼^n¥>½ú–])¢ª¼~¯å)‚Lù’“þKy¥ðªGí—?u«Vž~ðéÕÇœôìr~ååWÅ{ÔôÞ;};I’L&S^hçâÀ3á½LxnçêðæÁë6ã;¼½ÿêÕ½‚+¾ò.°EbÌ)Éß„™9~ªÓO F•úÕèô¯½»ü \×vtáñãÃýá€$ÈÔ)_ÓéÓ%4ߺUžßJ´q²5✻;¸]˜k7'ÏÒNãJÿÆWB¡¿úô_= °z@ Ìž;cÔˆ±º4dn#¨\ϯr=?Hzú~Ç„ÛÆm¹g‚0=Ìöhy&<øð< Ì,ÍäåfÖI®D”û£Ÿ~›‘‹»ÌQêQ"óLùcC†ÈK*„T|™ðÜ­š‡0#ǵŠ[iŸ²¯ï¾4³2'eDù꞊ëf§e€y‰ŸQ™—èÒîÏo;Ú™ª| ãk:˜Yý2`jeÖwÕÓëþÛ2z-)#ݪ•ÒŠ>€BÑ {@øõÝ—+z-¶c¬«ƒ¼°”‡Sx÷†ÛÆm Eæ6ÈN˶.eC/ýöþ«0#Ǭ„²Ò²äåÙ©™.G55šÛZ@û©],í¬Ë9<#è¿v˜¼äÃó¤ÓëN¼¹ÿªdY;ž)ߥ²Û£K÷M-ÍìÊ9(Q§“}æ·LyïY)ºt—ëÖNщ?+UaÓ²èN^¥».è#K_ß}qjõñuƒ–Ǧ—NBýò8 -¿ì_{7G&›umß%¥òwߘÛ¸ÆÀS©M+{+ Óø7ö~ê¶.ÝåcີS`ÖŽ%L&ò°àþÙHN|?¥áXQŽˆÃå¸xµ­ö)U’+ÑK§!„þ *{ÿ\fRÆÇR‚ïÇŠéS´¤ŒÀUþ¸À3á5èÓäèâéŸÓ*„úšY™çf ŸÆ=¹sòV»)€Åa‡u©wléAƒQ¦¢Kâõ'¯ï¾ìµ| ‹Ã®Ó)âø²CLÓ¹B™‡çlÞ{Å ÕYvÝn Ïß›ñ9ÍÉ«trâû³›NµÛNµf '[K{«×w_4­ ¥}Ê2˜Œ7^ÕëÕHµÍÐuéÞ]ª”{pîî·÷_óÕ.×Ò}yàãËJ8ÛºVqS[¢‹Ã®ÛµÁ‘Eû™,féŠe_zðõݰq¶•I¤Ûb6Tk(ÊÝx²Œ‹ßrÒ³ß?yW®ª;Û/D!ƒ¦œHwþó'OŸ«|¿€¾ëŸ±jqh‡ºöå/ï>lé¡Ü,¡±¹qé e{.àæÿýÚ½öa$A^ÛéêÞK6¥m;ÎèF/ íX—×^¹²û‚³mÇÝÊù¹«2¸mBF\Û{é⎳֎6­F·­YCmM÷χ®–õu#žQ)OçÏ’äß’WT»c¸T$¹~èêÃ×ܪ•ï0½ëòž òÕ]ž×ÒŽ³w×*nûçìæs§œ™«¶$OAmkKD’+{.\?t¥r=ÿú½›ì˜°ÉX`Úe^ï#‹÷وÏuó/ßdP ºþû'ïä·=ø/&„B ÆÎ½;K´Ê{_CIOÞY:X›Lè§W÷]:¼`ßì«‹‹ÛÍB7ø‹±-cןÛtJþôÉ•‡¥<œ0÷#„Êžþ‹UoVóÔšcÆæÆ6Î%Ÿ^üäêÃè‰ÿ+ê Bý0ýÿÅB;Ö% òú¡«_3,JZ6ÐÜ¿qõ¢ !„Ð_Ïý#„BÏý#„BÓ?B!dp0ý#„BÓ?B!dp0ý#„BÓ?B!dpØPªu!„úspï!„28˜þB!ƒƒé!„28˜þB!ƒƒé!„28˜þB!ƒƒé!„28˜þB!ƒƒé!„28˜þB!ƒƒé!„28˜þB!ƒƒé!„28˜þB!ƒSðô5.Î×? fí0‰D¢´èÝû$_ÿ_ÿ€o))E=@mÞ½OZ¹f­P˜[Ô „B[þ(%å[âó§b±Xµ—Ë-ïîime­º(;;ûòÕ«aµk+žŒ-êqéä}ÒûUk×µnÙÂØ˜_Ô± „BÎÏôŸøü©·—À\ Z)##ýÑ“G5ª×T]äQ¾ü‰S±JéÿÔé3åË?ML,êÑ!„BHŸÿÅb±ÚÜ…X,R»¨A½ˆK—¯ä…ò’W¯_¿xù²A½yÉÆ-[ëG6õ«Q«yTôÉØÓ0dĨ¨öå(Š oØxÊô™°wÿ&-ZV«Õ¾ã…K—áÇY†wïßwëÕ§ZÍ æQmn'$Üð°M‡ÿù× jÚ**îú ySšVÿüåK÷>}«Õ nÝ.áÎ]ºr߃ ¬~C_ÿ€¢Þ!„ПSØKÿBƒƒLæ¹óä%'Nź”-ëVΕ~ºuÇÎÅË–×­]{úä‰åÝÝF‹¹~ófxXÄgÏ>~úD×yððÑ—¯_5¬¿kï¾Y󿇇…M›<É­œë#/_½F×<|dpP­‰1csE¢¡#F 5ºqƒú“bÆŠ%âq'Ñu´¬>rlL`@ÀÄqcr„9#ÇÅÐ…ýûô€YÓ¦®X²¨¨7B!ôç° ¹>ŸÏ úïÔ©&Ò%'cO7iØ€~,•J×mÜÔ®MÔð!ƒ ^xø·””5ë6,]´ÀÈÈèÂ¥Ëm£ZÀ™sçìíì*V¨0täè~½zvíÜ "ê†I$ÒUk×õíÕ:¶kÛ¼i$ÈbÂä©S'NˆlÜHþ4=#ÃÔÄdåšµšVªY£[çN@äøÉSÒÓÓ-,,¼<=À߯j kë|Ž!„ú‹)§ÿë7â.^:¯Xbmeݽ[/-M4¨WoèÈQiii–––Ož&¾{ÿ¾~½ˆ÷IIüáCzzz½ˆpyåúááó-616 ¸pñþÏž¿Ð ~½W¯_§§§ûûùÉ/ůU3pÊô™$A€¿_UºNÕJOe2ÙËW¯´¬T³Æ÷áX[€Œ ŠzæB¡"£œþ«VÌW5«Ÿ:s6ºu«“±±^žÎNNtúÿö-¬,-å•­­­sss³³³ÃÃêLš6=;;;ùǤääÆ ê§¤¤@‡.]•Úæ €Ãá(*=€ŒŒL-«[XXõT#„BÅEaþ‡Ã©[§ö‰S±Ñ­[:s¦mT”|Q‰Öš–æTª]’’šÊårMMMCƒƒ Æ•kq/_¿.ïææêâÂb±`æÔ)övvŠígfeꆭ­MaVG!„ ‡~îú× ^Ľû÷OÆžþôés½ðºòrG¹ù©ØÓò’“±±Þ^ž`ffàïþâÅ3gÏ5jØ€®l!degU®äKÿ%>~êôi6[§Ï(…\!„2?S#—ËÍÈH,T+ed¤s¹<-­øW­jme5cöߊíJ–”—s8œ.þ·xÙr&‹U±‚÷ÙónÇ'¬]±œ^Vgúì92™Œþ– ‡ÃéÑ­ëœù ?þâíåù4ñÙúM›'Œ£ãH °:}¼áÒå+ÎÎN~Uªõ¶@!„þŸé¿¼»ç£'5Üõçáî¡¥&“^wÇ®Ýõ®ò£uîØA&“í?xhçî=¥ç̘.¿j¯vhÈ”3ýªV±µ±¡K:´–Éd»÷îÛºcg)GǘѣšE6¹§ã`ò»º··_•*3æÌ516¾xæï¸S!B!TxŒ{wF·Š.ê0B!ôçà/þ!„BÓ?B!dp0ý#„BÓ?B!dp0ý#„BÓ?B!dp0ý#„BÓ?B!dpòw?|’$Ÿ'&LÎÍÍ-êÈ‘6|>ßÑÞ±¼{y&?á!„R–¿ôŸø<Bj†àïès2™ìÙËgÏž?Ó~·f„B†)Y<)9©vpm’$Õþ4*>˜L¦›‹ÛÍø›EB¡â(é_"•0 ‚ Š:l”‚ LEQEB¡â¨ Çð1© £¨C@!T|å/ý3 Š¢0ýÿp+!„Ò ß{ÿ˜þÿ  „R÷þÿe@!¤¦ÿEaöG!¤^þî Ãü8þ¯„uú´¹@ øgæîÎïÙ>}¢Š:Z3''J$RZÄxù’Ž¿xF®'wæLÈÎÖTpï!„zÛû§/5—¬_OY[$ãùsÎܹÆ?f>\ÔÃT-#3“}ê”´IÅEœýûå©b|œƒùêwÖ,q—.”±±êÒø†B¨(å;ý“$©6)Ò…âÀ@ÒÁá{å°0ŠÇã 99jST¢£%}}öï—4n¬¸ÈèàAÒ×—yïïô¯4ÝËB¡|üÿ±÷¯öP3$Iü “ÉSSø±ŠÑ† æU«ZØÛ›‡„pNœ (Š}挥•óåK³&M,ìíÍ«Wg]¹ÂºuË<4ÔÒÞÞ¼Z5ö¹sòö¹‹ |}-íìÌ9û÷SeÒ±£yHÈÏHRàímoÚ±#Ñ xÙ2Fn®Y§N¦;Ë¢£EË–1Äb“>}¾çà+Œ§L!š6­YCúø˜öèÁ¾phÞœõàãý{ºëömæÇ²èhµ}©VL&çØ±Ÿ xÿ~ÒÃCêázé7cÔ²z÷îdX˜xéRFv¶i÷ît}É„ Þ¸Qtð &~„Bù¢·sÿt¡ Z5ÅB²L™œE‹(‰ÄxÎILŒpà@Š¢˜‘‘& ΜÜÑ£@Ú¿¿¨}{Š¢@&ãõé#^µJÔ¦ü)¤¤P¦¦Æ‹IûôÉ™:•¢(f³f¦_¾ÏŸŸ½kŸË5:y2·[7à;F99‰+W¶ìØQµ/qX˜j´'kØ»¿(*Š.ç:$Ž&I(±¸ðýê:F33-SDÔ«—;x0EQ@¼Þ½))¤••´bE#Q` acC‘¤¦-‚B©ÒÛÁ:Ùänß.œõô)#%E\£†,=ÈȦ¥IëÖe?x¢À@©T*“ɤÖÖªO2óí[FJЏY3º\"‘Hš7gݽ+åñduêý8¶ot오U+Æ“'jû¢d2Õh)Š·hÁ¹t‰ñíEQ¬{÷˜/_Šš5£—ê¥_Ǩ}ŠÄaaßë[YÈdEÑ¿¼@ŸgѸEðB!uôü½‘aoÿ½rÕªðíoútIóæ`n¦T;;KžŒUŸRÅúü¤––ò~ †P’ÈHã!#ƒõîóÍqëÖÌOŸ4õE™›+•Q% 561á>,ìÒ…wèQ©’¤tiî«WÀÔS¿:1=]Ëê2 ¥úò´lÜûG!¤‰Þ®ü§Ñ;£ò§RWWžXL_öŸ»nYª”beêÛ7PI`ªOÉ’%¾|¡œœ¾—~þ |>enžnÌ`pÏc?{FT¨ .WŽ ¾/>_5lŠ¢&SÖ´)ïàÁœÎ¹‡‹{ô H×O¿º‘°³Ó²ºÒœcúG!THz>÷¿f’Í™eeE¤¤|Þ¿aûÅ Yx¸â*J»¶òÿËœœ(KKî¡Câ*Uèú܃e•*‘$I™šÊBB¸'O²?–´oOå䤶/Ò×~Í ò¢æÍÍZ´à<ÈLJÊŒ” —~ó1Æ|®®z$@u‹àÑ„Bjéí'Ôf#’Ç*3S4|¸iL $%I}}9š.[–=¾¦\¨ô”`±DƒOžL1™’Ê•y'Np®^Í:tˆ®)nÒÄdÄJs›5û^Ys_j£Í 0µµ53†”,)@ýê4Æ|®N±X`++[V¨i‹ „Bªô|î_i©´lYàÆÆf R)Ý:“իɲe…óç ££ÎŒS•ݧC&ãoÚd²aáêš³aƒ0 €"È­WÏdèPY­Zâ%è³»wWí‹’É4E+4kÆ]½Zؼ9©p ½^úÍÇ󹺤R%YÍšæcÆP¦¦Ÿ>Ô°=þÄk!„Ð_‡±sïÎèVÑ:Ö¾ríŠ{9w©TªºˆÅbñx<¡P¨˜¨ †±±±D"‘J¥‡Íf3™L’$éëØ•VÑþ”Ãáp8úâzuÅ.‚‰Dò~UûÒ­‘‘‡Ã¡ãTZZÈ~ó;FÝWg0\.—ÅbQ% U·—˽ÿð~Ð:EýC!Tìäsï$I’ê¾eNg,Õò¬¬,úX,‹ÅZVÑþTuuÕ.t©¬¶q‘H¤˜Å—²ßBŽQ{}µY_±2 „Bêàþþ³p3!„ÒÓÿ? ·B!Môü½T|àÁ„Bšäó‹ Àôÿ·ÀÍ„BH<øÿϽ„Bšèí¶?¨¸ÁÍ„BH“ü¥&“IßÒSK1Ç`0’àq‹:„BÅQþÒ¿•¥UjZªÀLÀdæï—‚‡‚}ùc\ÔþÂПéX,VFV†ý__D!„å/ý—-S>|ü ö?…Ä`0t\¤øTËZëQµPKwî `(É×?À×?à[JJQO‚6ïÞ'­\³V(ÌU»”‚Ú?ùð?ù¢ÚŽâ"=¢›•ÿU ¬Ù¬u›ÍÛ¶“$ù[gI©ßJÕª‡Õo8eúÌÌÌ,=¶¯÷éÒ¾qBèÆÎWí””o‰ÏŸŠÅbÕE\.·¼»§µ•µê¢ìììËW¯†Õ®­Xx26¶¨Ç®“÷IïW­]׺e cc¾êÒKÑ?yºlåªYÓ¦š››É—z{z®X²ÈÒÂ"ÏvôkÆ”I Kâ-]&•J»wéü'ûM|ölëöiéé çÎþÝýØŸÜ(!T¬ä/ý'>êíå#0¨.ÊÈHôäQê5Uy”/âT¬Rú?uúŒGùòO‹z ¥f` âS¿ª%¬~²°°PªðgøU­ZÒÖ–~\'4¶ïÚõÒ¿R¿fffó-K$\#£?? !„´ÈßÁ±X¬˜û/^:/,XˆÅ"µk5¨qéò•¡P^òêõë/_6¨!/Ù¸ekýȦ~5j5Š>{†ŒÕ¾£¼EQá O™>öî?ФEËj5ƒ¢Úw¼pé2ü88üîýûn½úT«Ô<ªÍí„„û¶éð?ÿšAM[EÅ]¿!oJÓꟿ|éÞ§oµZÁ-£Û%ܹKWî;p0„ÕoHÏÏÅCÖÚÛQ Ÿ?ï;ppPXÝZuêö4äí»wÛÆ•+UJMM sÅÉâeË5kQ­fPHx½þƒ‡$>N×Ùº}G½Æ‘Õj6üv|‚âIµ±éÂÒB×â®ûú{öñÓ'ºÎƒ‡¾|ýÚ¨aý]{÷Íš7?<,lÚäInå\‡Œyùê5ºÎàá#ƒƒjMŒ›+ 1jبÑÔŸ3V,›8‰®£eõ‘cc&Ž“#Ì9.†.ìß§7Ìš6U~œ¿`´´£6¤œœœ^ýäŠrÇ5nÔȯ_¿5º`]'%'óx<>Ÿ·låªí;w5mÒxöŒéƒúõ}Ÿ”ÜoÐØwðÐüÅKêÖ©=mÒccãÑã'hMSG"‘H(Ì sÓÓÓoÞº½jíú¦Mq`ò´¾>>ûõÑÞ¦¦å‚6zÌÇOŸÖ,_Æa³u™"-Ý©n”]{÷Íœ3/48hÆÔ)Þžž£Æ¿u;¾0Û!„Чüü/>Ÿôß©SM5¤KNÆžnÒ°ýX*•®Û¸©]›¨áC@½ððo))kÖmXºh‘‘Ñ…K—ÛFµ€3çÎÙÛÙU¬PaèÈÑýzõìÚ¹DÔ “H¤«Ö®ëÛ«tl×¶yÓHÄ„ÉS§NœÙ¸‘üizF†©‰ÉÊ5k5­T³F·Î€ Èñ“§¤§§[XXxyz€ÊQýÐÔŽL&SÒˆ!ƒÒÒÒÖ¯ZáêâÎÎNû”J¥'Ͼè4 ‰8áîÝ ›6×­S›Á`ˆEâÁú·‹nCW³° 1êë×o«×®‹Žj=b舨[·gßþ_¿~Õ[PÍjûlÙZñ©ƒ½ýˆ!ƒïÞ¿Í›F¶m•g›j#LMM£ŸR3iò“'O7®]ccSâî½{yN‘öî”6 A«Ö®‹nÝŠ~)Ö­SûÅ«×ÇNœð÷«ª¿ !T,$ý_¿'?ì?{î °¶²îÞ­—–UÔ«7t䨴´4KKË'Oß½_¿^Äû¤$Hþð!==½^D¸¼rýððy‹›\¸x‰NÿgÏ_hP¿Þ«×¯ÓÓÓýýüäWkת8eúL’ @þ6M¿›+=•Éd/_½Ò²º<«Y[[€Œ þÀÐR)GG>Ÿ?síÚúU©âíéé=ÎSÇ6•Òp`@5:µ5(ŠJIIyóöݱÿN@Rrò—¯_ë+ÌDݰ·ni‰$I&SÍq£…sg[ZXI‘Ÿ<]¾jõ¬yóé–ªùk/ݦÚIêû×fÏ[pîÂ…  g§Ràìäœçåk/^½JKKSœŠ5Ë—ÄïýÒB‰‚¤ÿêÕ`öÜ£FŒÕe•šÕO9ݺÕÉØX/Og'':ýû–V––òÊÖÖÖ¹¹¹ÙÙÙáau&M›žüáCRrrãõSRR C—®Jí s… ´g¬º£œ‘‘©euúªõ?LSH<oýª«×m>z¬L& ¨æ?bÈ`z77Oò4Ì`€½½½ür¼Û ë6nºwÿ¾@ (Sº´‰±1|ùú¬­¬ç?é MMMUûõöò’÷Uµre¡P¸nã¦ð°:`bb¢K›j#”»ÿàAÏîÝÖ¬[ýæÍêÕªYYYæ9EùBFz†âðÃF¡ÌŸ8ø§nÚ'NÅF·nuêÌ™¶QQòE%JX@jZšS©RtIJj*—Ë555 b0W®Å½|ýº¼››«‹ ‹Å€™S§ØÛÙ)¶Ÿ™•©K¶¶6…YýwÐÇóöòZ²`žX,N¸{oåê5ý 9yô°.m*¦a¹”ÔÔ¾5jØ`öôiss¸wæÜyú»š)©©òùOMKÍ36]Â(çê"‘HrsùV½–65E(¯3Î,_Ÿkq×çÌ_¸wÇ6‹•çåk66% --]>ïÞ'eddøTðÖßG¡b¡P—þ…×Ö½rƒz÷îß?{úÓ§ÏõÂëÊËææ§b^b}26ÖÛËÌÌÌüýÏ_¼xæì¹F Е-‚¬ì¬Ê•|é¿ÄçÏO>Ífëô9¦«ÿšBzñòexÃÆ999\.70 Zû¶m>~ú¤”JóåÍÛ·b‰¤c»¶tf€ø„;àèè`!œ<õó6 §ÏžÓËt={þÂB PÚÉÖÒ¦¦åìíì ÆèáÃ^½~½{ï¾§‰‰yNQ¾†PÊÑQ`n{挼dÒÔi[¶oÿݯ„úóò—ö¸\nFFº@`A?¥OÐ22Ò¹\m;…þU«Z[Y͘=Ç·bE»’%åå§K§ÿ-^¶œÉbU¬à}öü…Ûñ kW,§—†‡Õ™>{ŽL&£¿%Èápztë:gþÂÏŸ¿x{y>M|¶~Óæ cÇèV§7\º|ÅÙÙɯJ•O´¦v4…äìä,‘HFÅŒoÖ¤IvNÎú}}|ø|>ddf>|ôˆžR#¿RïZ¶,ŸÏŸ>{N›V- ‚¼rí}Mûýºwí2Ñb‹å[ÑçÂ¥+ïÞ½ƒ‘ßéºOŸ@¡(*ñÙó ›·tíô?Ý7¦ã?CøTðnÒ¨áŠ5k÷lߪiŠtÜâJ…ÃátïÒyáÒeÀ`TªX1îúõ„»wW/_ZàŽBÅVþÒywÏGOj¸ëÏÃÝC˺L&3"¼îŽ]»/­¢uîØA&“í?xhçî=¥ç̘.¿j¯vhÈ”3ýªV±µ±¡K:´–Éd»÷îÛºcg)GǘѣšE6¹§ÓW °º··_•*3æÌ516¾x¦àw*ÔÒŽÚ`Ѽ¹ó/Ž™4™Ïçøû4®ÿüù ú ë±Çªä×ÄÂÂbñü¹‹—.™4ÅÒÂ"²q£=;¶uèÜõÜ…‹³¦M‰D»öìÝèpƒzýz÷;a’‡£%6µÆN˜D?`0övv];ý¯g·®×oÞÔehþ‡Ü þýΞ;¿~ã&MS¤Kwj7JÇöíd±gÿþ={÷•.íßÑÞ±¼{y&?Á#„ ¢Pé?ñy"„Ô a³ ÕB(_d2Ù³—Ïž=æáîQÔ± „þJ…JÛIÉIµƒk“$)‹‹z &“éæâv3þfQ‚ú[*ýK¤ƒADQ!ÃBƒÉ (ª¨Aý­ôpÐ߃úà FQ‡€ú»*ý3 Š¢0ý#TðŸB¨ »÷é¡"Á ðB¨àpï¡¿…GB…é¡¿EaöG\áÒ?0@Ã¥Áu#4­uéLlQZâïÜÙ»ÿÀ£'O…99–U+UnU¦té:~âT·^}bÆŒ ÎsÒ`⸱ˆ% wï®Z·^*“vhÛV©²gùò çζ°h™´¤É·llÔˆÇã«®uìo$¿ö^¯çÇŸìÝ [çNÞ^žÚ›ýþïî¯ÿ—„*2…Mÿ$Iª}ŸªZ¹2ý€¾+@Å >ò$’$‹zÔ…rþâ¥-ÛwŒ64²q#zø £EÓ¦ó-ž>{niçÒeJ;kYž®Š*È÷ªkÖcßCí££•*›™™U­\YÓ$«m¹vý|àÓ4(ýžüÊæ@d£†–––yþ3ù'g!ôÇê†áò½UÄII’ò’·n…FÔ’˜8`è°ÞýR%‹W¯[ß¶SçˆÆ‘M[GŠÿâåKŠ¢èš_¾~2bT½&‘]zö¾÷àEQ/^¾96¦I‹V[´5.æýû$yåW¯_÷<4¼Q“ö»ž:sF1¤»÷´éð¿ð†;uïyöüºPmS´ÃÇŽµïÜ5¢qd÷>}¯^‹“—oÚº-48¨Qƒú‰D&“!“ɤRé ~}íJÚîØ½[Käò=6’ú9!R©ÔÇË+-=](*MÎõ›7ƒëF|ùúUKƒôñüæm¢C#êÓ%òÊJåt­Hiéß¾ÝI’Ü´u[ËèvõšDŽóåËWø‘þ5M¸’CG޶ëÔ%¢qd×^½Ï]¸¨iÆš¶n\7‚ÒMQ¿ „þV…KÿÀÐñŠ‚ŸOé+æ-\ìãíÝ»GwŠ¢ÖoÚ¼ÿÐáÆ L™Ó§G?Š™ ¯9eÆÌjþ~£† ËÍÍ:cVNNÎðÑcÅbñð!ƒ‡œ’š:qÚ4yå‘ãb*xyŽ3ºœ«ËÌ9óîÜ¥;Ý»ÿÀš CC‚ÇãV®ÜÔ™³n'$hjŠ¢¨ƒGŽ.]±ªNíÐñcF»º¸ŽŸ<åúÍ›E}þüåí»w êEÈd2Õ‘Ö ¿q붦È™_%}øÀãq¹\®ÒäÐOáÇejìÙ­+L³`Î÷÷ò æÌ²Ôo‹ßÙµ"¥¥õv§(j÷¾}›¶n 7j”‰‰ñÒ+å/l-.wðÈÑÅËWÕª9qÜÏòSgκs÷žöÃÄú}~û•ÿô.§b5º¤I£†Í#›$I’¤D*íÛ«GóÈH’$ †¹¹ÙØ “ÒÒÒèš5ªWo×&Š¢(‚ ¦Ïž“p÷^zFÆ’Áœ ”£ãácǤR)]9¸V­¾½zRT«ßà!Ûvîªä[Q&“mß½§u‹æ}{ö (*48(5-uëŽ]Ý:ÿOmS°yÛ¶î]:·jM7%•J7oÛQÍÏïÓçÏàèà vÔÎNNB¡Pmäéssz‘H$ … ‘J<|´c×nú¢¥É¹yûö÷ÙÓÜ ›«+øx{[ZZÐGŒÍÌL+ûúª·ÿ]+RZúWow©Tºs÷ÞÈÆèG’dHP­C‡Ýð~akšp9‚ ¶lÛÞ¢YS:’ š5_¿ysúÜ9ߊ>ZfLû¿>ü€*ŒßŸþ)úÿ 韨T±"ý† Cô§(J"‘¤¥¥½OJ>qê4?Ö¨æW•®innŽö<oÁ’¥-›5óõ©àR¶ÌðÁƒ¤R)]9,4TÞlDXØŠ5k)ŠúðñcFFFhp°|Qe«V;9:ªmêå«W™¾>23³èúþ~s.’ÿºI¨£§ ‚P9Aòiø_·Š+úW­Ú¯WOùRùä(ÌžÆ ’‚$äáiÚ" kEJKÿêíþáãÇ̬¬ˆ°:‰„^^§Ž<ý癉_¿y›ž‘Q;äg$ æÎ¦ i™1í(¼ô!T¿ÿ{ÿªWHQp¹Fò’Ûñ ;öìyü䉹™¹S©R&&ÆðýÝSSÓïG­I ÌÍÍ—,˜·yë¶)3fQ¹’oïîÝË”v¦+›››É›µ´´‰DÙÙÙ©©i`ff*_da!‰D,KmSYÙÙÐgà`¥¡…B[[xûþ½½½êXß½ojjjbb¢6òï“@Q0cÊ$ =‡%KÚZ[YI¥RùÒŸ“ócöòlP§Â¸k¥¥óvOOÏ@ Ð‹…®Ó•ssye“Éær•×ÍÏ儸÷*Œßuå¿Õw4yIZzú˜ #¦LofjJQÔ›·.^¾"¯¯ÔI’.eÊLŸ{:ÀßOiŒAÄž9[½š¿ü°­R䊓àR¶l kky¹Ò/&+M—¦©øõ˜Š®çƒÿpת þÛnêÛ·…^RuŸvkK+HKK—¯þáãÇÌÌ,òîyΘ–‰Ões#„Z¿ëÊ…+”Žþ«+IJJ–H$­Z4ã°Ù¹¹¹"‘èν{ß+(­ ¼xñ2ºc§´´4‚ *V¨Ð²y³/_¿æææÒK/\¼L×%IòÌù înå(Š*ikknfváÒeyKç/^,ïîöìÅ µM•´µ˜›§§§»—+Gÿ=}š{æ,“É$I²Ëÿ:^‹;|ì¸â˜H’\±zíÇOŸÚG·¡4D®øeíŸßçÔO—üi^ *_ѧy[ü¹®µ¬ø·mw[@pöüyySç.\ÔuÚ)Êή¤¹™ÙÅË?#™¿xɾƒ‡ò˜1Ý6(BÀoÿÉJåxæ’ïœx<ÞÂ%Ë5¨O’ä­øøûÀ½MMMkÒÿ/åè(‘JgΛ& wíÛçíåÅýqõDl,“Å,ïævéÊՇ͙>¢(&“Ù®MÔêõ †‡»ûµ¸ë÷î?X0g–¦¦ cûv+Ö¬ýüå«»›ë‹W¯÷ìÛ?t຋šÕÿ×¾ÝòU«oÞºU«f ¹àË×/gΞõæÍø1£ä»­J‘ÿ|ÓVX¤aº”V- Ò7ì‹»yËÑÞÞ§‚7dff>{ñÂ×LJÃáhiüwt­Hié_½Ý™LftëV«×­g0™>ÞÞWãâ’?~σ¦ —c0Úµ]¹f-àåá‘pçÎÃGçÍœ¡´!Tÿ±äù/ !„ ¦È.ý“—˜™šÎ˜2iõºõó-6˜×«>¨_ßÞÅ]¿Q7¬ŽbMzE##Όɗ¯^3oÑb[µråÞݻ˛Ÿ2!fëöGŽ·±)1zİJ¾髨Z6o&#ˆ#Ç9v¼”£ã¤˜±ÞžžA¨m š5i,“É9zàða{û¡ƒD„…Éd2ÉdÿkßÎ×Çgïƒë7næ æ‚*•+5ÂÑÁ®£4Fê—:å Ñ2]J×ß©m°¼›[¥Š—­\eÌçïÞ¶ž½x3iÊÖ ëäù5m ½w­Hiéß¾Ý[5o&‰ŽýwâÔé3U*Uš0vÌÀ¡Ãé 5M¸¢æ‘M‚8täè±ÿNБøTðVºÄOûR÷¯+¿ÿdBè;ÆÎ½;£[Elå+×®¸—s—_̬‹ÅâñxB¡Pþަ¶ÄÈȈ¾‹*} G’¤L&S¬)_‘Édr8zç’ ‰DBQÔ»÷ÆMš¼}ã{{;‹E’¤T*¥ß¸i‡ÃáÐ×+ȱX,Õ¦äõÙl6}À_©)ÅéÏ@ô-tägý•ƨøTuøZ¦KqÈšd0\.—ÅbQE£OS ë_^[¿.ý¶;ÝЋtܦЫ³Ùlú£úŠÊs)ár¹÷Þ¯ZG§«!ô«Âþäýn-uè7Êü–äääÐËåÕè\«ÜE€Œ©æ!šX,VºÌMm×Úëë²¢êRŧ[QiÈJÕ”†¬©‹?еÅ¥ÿÀvWZ¤ã6Õ¥å|µ#¯¬cM„Rõýàïo¸;ú êv7´ñ"„ôëJÿ`iAnw2BHþÐ÷þÿ€*•+;ù_vvv1‰ý»Ýñà?B¨0 ÷Å?Ÿô/•Ju?oŠþ»Ý‹É¿;„Ð_ê_;øÀ½„PaüöÛþ „~üw‡*ŒB¥&“ùãÇÜð¡?‡Á`$Á5âu ¡¿U¡Ò¿•¥UjZªÀL@ß>)ùóŸŠþíÏaºîßž`±XYöööEBèoU¨ô_¶LYøðñÃ_wí}§9½¯X˜¥ÅgÈ:ÖÔR­ÎòGÚ–ª,жT¥¦®-ëc¬,­\ʺè{žB†¢°ÿ]]\]]\‹z!„Êz4)9™Çã¹”)Û©Cûà Zò ïÞ'?q¢S‡ÆÆü<[#Irþ¢ÅGÿ'‘J¯_º ¶!„ú<ý§¤|K|þT,«.âr¹åÝ=­­¬•ÊW,YD?xüä鲕«fM›jnn¦ÇÁŒ;îæ­Ûí¢Ûxz”ÏÉ^ºreÀÐa#‡ m݆®ð>éýªµëZ·l¡KúðèѶ»z÷èîSÁ[S B!ô7*xúO|þÔÛËG`.P]”‘‘þèÉ£Õk*•× T|êïWµ„µ5èÉë7oÎ_¼´`ά°Úµé’ÈÆ&N¶fÝúvm¢ p£Ùììlhݲ…¾xéòRøúøŒ6D©w„B¨x*v—þ0±fÀ ãÆ s…£Æ§ wíÝ7kÞüð°°i“'¹•s2bäå«×”V,ïæ&073þÜ… "Ñ÷Þ^^“bÆÑ¹ú÷é ³¦M•Ÿ†X¶rÕö»š6i<{ÆôAýú¾OJî7h°¦ÊŠ%999½ú ÈåŽ5jܨ‘_¿~6jtQOB!¤“?zéŸ.Z6oÖ­s' (*fÒäôôtSSÓ•kÖöëÕ³kçNQ7L"‘®Z».¨f ÅMMMW.]åææõl!„By+øÞ?—ËÍÈH,Ted¤s¹¼|·¨‡ÃéÑ­ëœù ?þâíåù4ñÙúM›'Œ£TÍÄĤ_ŸÞ /ùôùsÐk+«Ìì¬kq×ÿ;yjÆ”ÉtúÀK—¯8;;ùU©âZ¶,ŸÏŸ>{N›V- ‚¼ríÚ­ÛñŸP/<\{TÎNΉdTÌøfMšdçä¬ß¸Ñ×LJÏÏûnB!„P‘+xú/ïîùèÉC wýãy¸{è1Êm£e2Ùî½û¶îØYÊÑ1fô¨f‘MT«uêÐÞ½\¹í»w/\º,++ËÜܼb… «–- ð÷§+øx{ûU©2cÎ\cã‹gb-,,ÏŸ»xéò˜IS,-,"7Ú³c[‡Î]Ï]¸˜gú76æ/š7wþâÅ1“&óù¼ÿ¡ƒêqÈ!„ÐïÃØ¹wgt«è¢!„BÎ_pî!„Bú…é!„28˜þB!ƒƒé!„28˜þB!ƒƒé!„28˜þB!ƒƒé!„28¹ëI’‰Ï“?&ã-îBJø|¾£½cy÷òLî] T|$ý'>O€š!J?ºƒB2™ìÙËgÏž?Óï¿BúUü”œT;¸6I’joø2dL&ÓÍÅífüÍ¢!¤MAÒ¿D*a0Auð¡b‡ “AQTQ‚Ò¦àGïñŸ7BHƒÁ(êBy+Húg0EaúG©‡ï {ÜûÇôÒ„Aᄊ;ÜûGé…G*Þ0ý#„ÏGK†€IDATôŒ¢0û#TÜ(ýðÒ¿‚2bTü;í££{uïZÔ±À[·FŒwhÏn++K¥E$I9~ü¿“±oÞ¾åpØ¥[·hQ;$øÅ–œü!öìÙèÖ­ø|¾êR©TzèÈÑÿNÅ~øø‘Çå–vvŽŽj]£z€Ž«+–¢–¯Z}*ö´D*=vDm ÊÌÿs¸÷ÿG¥¦¦Ý¹wÏØØøüÅ‹=»u)êp~^¤­º5'L™zóv|ëÍ»tì“séÊ•‰S§}ùÒ3ªUË?[Ò‡ä[¶F6jÄãñT—Nœ:-á–-Ê»» …Â+×âFÇŒзw«æÍuY]ÉãÇOöî?Эs'o/Oz*TK޾¿9àœ!T¼0ý“$‰ï‰pþâE&“Ù¿w¯9 >~úÔ³|ù¢‡ÞˆªæbÏœ½w}íÊåîåÊ‘$É`0êG„Ï]°põú õëE˜™šþù ½{ÿþʵ¸S&ת)oæÜy[¶íhÑ´©ÒÏty¡æs ²QCKKK’$Õ– Ýá›BÅ_AnÊ-ßûGùuöü…À€jáauø<Þù‹—äå7nÝ ¨ÿêõë~ƒ‡†7jÒ¾s×SgÎ么vøØ±ö»F4ŽìÞ§ïÕkqòU¾|ý:dĨzM"»ôì}ïÁº2I’›¶nkÝ®^“È‘cc¾|ù ?Ò¿¢Ýûö×w)SF*•!“É$ItT몕+ïÚ»n\1¼”ÔTúÁ“ÄÄC‡õî?PéiB1f4oQ_)¼´ôtp°·S /²q£à Zb±XÓêb±xõºõm;uŽhÙ´uÔ¨˜ñ/^¾T¬Ü´u›àºšJP~õ›BHV«¨V¼*äk×o^;:8Êd²¢þ/óñÓ§UëÖwïÒ¹Liç7oßÞ¸u«e³fß}ütúܹ«×¯W÷÷oÕ¢yFFƶ»*V¨`gWRË"8tôØòU«#7jÑ42;;gÝÆåÝݘ æésçž$&Ô ¿qóÖ…‹—Z·h»÷í[¿isƒˆˆ¨–-“?|ØðŒ ¢ZµT-ik›ßP¹\nü;“ÇÇD6nhW²¤b$æffÇNœ¸oeiYÒÖ–Åb@ kë š5ä»þª«¯Ý°ñà‘£Q-[´lÖÔÇÛ;îúÿNÅjêKKï(O,ëã§eJ—)ê@Bá¹ÿ?çüÅK¦&&Õ«ùSU;$øìù =ªàí ?®“ ®U«o¯žE…Õê7xȶ»*ùVÔ²H&“mÞ¶­{—Îm£ZÓ‹¤Réæm;ºü¯Ô¨^½]›(Š¢‚˜>{NzF†1Ÿ¿s÷ÞÈÆèG’dHP­C‡ÝðPik~úüllJ(mbŠ¢$ }$\¾ E}?ÙÛ¤QÃæ‘MH’¼yû¶âS‰D’¯Pææn®®àãímii¡tøÇãÍŸ=kÑÒe¦Lc³Ùn®®*xW©ä[µreú£¨®.‘JûöêÑ<2’>_`nn6v¤´´4 ÕÊZzGyÂ7„Š?Lÿι jV‹%PÁË›Çã¿tÙÛË è¹ •J¥t到°kÖʧYí¢7oßfddúúTÈÌÌ¢øûÍ]¸ˆþ9†j~UéUÌÍÍ€ ˆ?ffeE„Õ‘H$týð:uTÓ? ‹ÅR»‰é²ŸéÿçS€J+Ò*=Ío¨E$ I¨ýu ײeW-]’’šz÷Þ½»÷î߸ysïþvv%'Çĸº”ÕÕ‡ èO‚IKK{Ÿ”|âÔi )Jm_Ú{GÚQxéBŦÿ?äÍÛw¯^¿yõúM왳òÂKW®ôíÙƒÁ`ÐÙÒÜÜL>«–––"‘(;;[Ë¢¬ìlè3p°R_¹¹"055ýž¡Éï;èéé š²•KÿJ”(>|´·³Sjyõú ß¾¥ü²Ê‹é\®‘b¹üi~C•7¨é•FA¦&&Áµj…3™Ì/_Nž>súì9ëW­P L¾úíø„{ö<~òÄÜÌÜ©T)cm}iíi‡“†Pñ‡Wþÿ!.]âr¹ófÎ`²¾_nùðÑ£•kÖݽw¿’oEº$%5µ¤­í÷Ç))\.רØXË"k++˜0vLÉ’¶Š}¥¥¥€Ò6¢(Šþrÿ·o) M¥‚J’³µ±qvrºxùJ•Ê•›MJNÞwà oEÅU223Aáí^©)ùÓü†ª©ÁïS÷øñðÑcW-]\¦tiù‘yg'§Î;Lž>C(Ê¿ë/_=-=}Ì„‰aaS&Œ735¥(êÆÍ[/_ÑÞ¦ÿ‚ÁIC¨øÃ+ÿÿó/øû{”ww/WŽþkT¿>‡Ãùž€€ /Ó•I’}š{æì÷óßò¾áû@ 8{þ¼|ɹ ©ù£‹Ö-šŸ:}úÆ­ÛŠ…·le2™uBB ==ƒ.¿qëÖ÷€RÛ)-¿¡ª¶ ÈµlY6›}쿊…A<|ô¨„µ5ÇS]=))Y"‘´jÑŒÃfçææŠD¢;÷îiëKsïH'xô¡â òçOH|öüÃÇ];ýOñD2›Íö¯Zåʵk}{õ 'óDl,“Å,ïævéÊՇ͙>M>Ïj1™ÌŽíÛ­X³öó—¯în®/^½Þ³oÿШgå)ù‘yº~tëV«×­g0™>ÞÞWãâ’?~u[³~Døµë7&L™T«‚——077îÆ'Oÿ×¾]5?‹µlÕªæ‘M=~úòÕ+øõR€_;ýþ ¿¡ÒÑ@ÜÍ[Žöö>¼ÃãñxÝ;wZ±fí—¯_«XZXdgçÄß¹sþ⥘Ñ#å=*®îììÄãñ.YÖ¨A}’$oÅÇßðî=x\«&¥r¨ŸÂƒÿ…€“†Pñ‡çþÿ„ —/s8¿ªJ“V«Fk×o$ܽGçª)b¶nßyäØq›£G «ä[‘ z µ‹ Y“Æ2™ìБ£v°·:h@DXØÍÛñ þê<ªUóf"‘èØ'N>S¥R¥ cÇ :\ukÊd²)bŽþwâĩظë7€Á([¦ÌØ‘#ꄆÈd²‘C‡¬ß¼eÞÂÅþ~UGÚoðyj;¥ÛÌo¨åÝÜ*U¬¸lå*c>÷¶-ŠáQÕ¢YS—²ûÚ°iKvNŽ©©©—§Ç¼Y3|¼½é¯¤*­nfj:cʤÕëÖÏ_´Ø\`^¯nø ~}{wýFPͪѪ– üÁiC¨xcìÜ»3ºUt¾Ö¹ríŠ{9wù…è(OFFFG(*å6›ÍårE"Ñíø„q“&o߸ÁÞÞŽÅb‘$)•Jé4vçî=M‹h‡Íf3™Lù"‹ÅãñäÝ)=åp8èúŠ‹”Ð-Óߤ§(JÞ/›Í622‚ ¤R)ŸÏ …L&SK§•Á`p¹\ú B¡P5<‹Åáp˜L&ýy”nS~|Euu‹eddDG&“Ñc'IR,«F«6~¤#.—{ÿáý:¡uŠ:„FüÉ’$ñËк‰D"‘Hµ\"‘ÐßÁ#) d„L5ÏiYD‹Åb±ø—UHRñÙÒS¥úZ>Æ©¶¬6-++ ~|ÐÔiÁBÕ4d-](RZ]µ~NNަEy6Ž´À7„Š?<ø_~ø÷.I£o ÷ɳŽ^"Ñ»D•¯Uô2-ÅjêÀ?Ê£‚ºey×ѰJÁ:Ò+K+—².zn!¤W<øïêâêêâZÔÁ#„B¨ ðè=B!dp0ý#„BÓ?B!dp0ý#„BÓ?B!dp0ý#„BÓ?B!dp0ý#„BÓ?B!dp0ý#„BÓ?B!dp0ý#„B§ ?ù£É'O8|øÉÓD‚ ìíJ†uh×¶„µõ†D"Ù³ÿÀá£G“’“y<žK™²:´ª%¯ðî}Òñ':uè`lÌϳ5’$ç/Z|ôø©ôú¥ jKôÛ£’¬‹BåIoéâÔiGŽlÔ°u‹æL&ëÉÓ§ûxôhÛÎ]½{t÷©à­©D¿=*)̺!„Pžô“þOŸ=wäØñÅóæÊwÃÃê4oÕ¾ÃòÕ«§Mšø[ÇðúÍ›ó/-˜3+¬vmº$²q£‰S§­Y·¾]›¨üú{vv6´nÙB~èB©Dï="„B’~Îý¯X½:²QCÅCßàTªÔÚË#5€«qq¾þ?îÜ£g»N]è ·l­ÙÔ¯F­æQÑ'cOÓ…tÍÏ_¾(>ý–’B?xñòe§n=ük5iÑòØ'è:©iiPÚÙY±÷¨–-j‡†ˆÅbúi߃ ¬~C_ÿºD,‘,^¶¼Q³Õj…„×ë?xHâóçš*+•è·GÕÉQ]!„Ò#=ìýüôéÕë7#† ‘—ˆ%BF€KY (Š.ŸÕ ¯Û.:êdì™q'ÙÚØTó÷+ïæ&073¾o¯ž5ªWçñxàíååíå%_±ŸÞËV®š5mª¹¹]²låªÝ{övïÚÅ­\¹´´´ÍÛ¶÷4øÌÇÕVV*Ñ{J“£º.B!¤GzHÿŸ>}'§Rò’ÁÃG\‹».zöäôƒæM#Û¶‰©Tºnã¦vm¢† õÂÿ¥¤¬Y·!Ïô_'4„^%¢nÝNÝz¬Ù°¡š¿Ÿ©©éÊ¥‹gÍ›?dÄ(6›íéQ¾r¥Jþ~,‹^ÑËÓüýªÊç‹EâÁú·ûqªÞÂB0dĨÔÔ4++KÕÊJ%úíQirÔ®‹Bé‘Ò?A “Éä%ÃÊìÚîÞ¿¿hé2yy@5úAò‡éééõ"Âå‹ê‡‡Ï[´8ϾÔ¯G?`0Ö_¸ä{ãÞ^^[7¬ÿúõÛí„„ø;w.]¾²eÛvG‡…óæ”wsSÛÔØQ#€¢¨”””7oßûï$©ã¨õÞ£|rB¡ßM鿤­-¼|õºl™2t‰«‹ ýàé³gŠ5MLLèß¾¥€•¥¥|‘µµunn.}…ÖVVòÇ6%lèULMM¿—Ø”hP/¢A½xò4qì„ £ÇÅܳ[mS·ÖmÜtïþ}@P¦ticãŒ]=Ê'!„úÝôpéŸS©RöövÇOœP]týÆ µ«”(a ?. £¥¤¦r¹\y"—KOOW|š’šúóqJ —Ë511¹s÷^å€À/_*Öôô(ß«{÷W¯ßä…ª¤¤¦ö0ÈÞÎîäÑ#'^µtI‹fMuòŸï!„Ò#ý\ùß©C‡s.ž9w^±ðò•«.]V[ßÑÁA`n~êÇÕþp26ÖÛ˘L¤ýødpùê5Åå_ (êøÉ“ž ÃÝ­‡ÍÞ³ï€R/>´±)¡v·þÍÛ·b‰¤c»¶ssº$>áŽîãýó="„Bz¤ŸïýG·n•pçΈ1c7lP30ÐÈÈèv|üÃGºuî´~ÓfÕú§K§ÿ-^¶œÉbU¬à}öü…Ûñ kW,—²eX,ÖÌ9óÚ·¾{ï^⯧>Âf³}¼½N>{çî½K€‰‰I¿>½,^òéóç:¡!ÖVV™ÙY×â®ÿwòÔŒ)“éé+ò.]¾âììäW¥ŠkÙ²|>úì9mZµ$òʵk·nÇ@|BB½ðpÈ‹~{T=æ¡´î{5 „2úIÿ cöôiûÚwðЩØÓ\·jåʛ֮.çêºuÇNµ«tîØA&“í?xhçî=¥ç̘îïWJÚÚNŠ·bõš˜I“kNó¿®ÝåkÍ›5sÝÆM»öì-ik;eâøšty§íÝ˕۾{÷¥˲²²ÌÍÍ+V¨°jÙ’ÿï×Óùx{ûU©2cÎ\cã‹gb-,,ÏŸ»xéò˜IS,-,"7Ú³c[‡Î]Ï]¸¨Kú×o‘)5®´î{5 „2Œ{wF·Š.ê0òv5.®ïÀÁ±ÇÒW"„B¨ÀðÿB!ƒƒé!„28˜þB!ƒ£·üýÝjÞ»u£ðí „B÷þB!ƒSð½ÿ?æ«þ™3g:uê´zõêÆÛÛÛ«­C’dâóÄäɹ¹¹…ŸÏw´w,ï^žÉÀÏ7!„²?tðÿñãÇ}úô©W¯^ãÆµTK|ž!5CØìB&“Éž½|öìù3w?3@„Bè/ò'Òÿ“'OÚµkÇápfÍš¥½fRrRíàÚ$IŠÅâÂôÈd2Ý\ÜnÆßÔ^M_ YA¡ÀoOÿ/^ìÕ«WffæŠ+lóºcD*a0A²S‚ LEQÚ«éë`ƒAÁ#+!ôøi/55uÊ”){öì€6mÚ4kÖLÇóLÛyb0ºTÓ×Áƒ¢ã‘„BÅ™žÓ?A)))<8yòäèƒê•*Uš1c†.«3 Š¢ ŸþthC_ ŠŽGVBgzKÿ¡¡¡Ï~ýu>š··÷Ö­[ù|¾Žíè+ý3(€>6¬ „*Îô–þÕæþjÕªmÙ²ÅüÇ/ÜçIŸ{ÿT^GôÛÁ C¡¿Üo<÷ß¡C‡)S¦ðx<ÝWÑc>¦¨<³ÿ÷j˜þóK÷#+!„Š'=w‹Ãá899µiÓæÌ™“¯Ü `À”¬èó—/õš4<|¤b¡X,ŽîØéÝzH$ÕU ?{ÿ(_t™[„BÅ™ž÷þ¥Ré7`÷îÝX]ÓÞ¿­Í€¾}fÏ›âTlýˆpºpÝÆMŸ>^¿j›ÍVZå{#ye(<ø_0ºÌ-B¡â¬xݹ…Á`$©º»I’dãõý«V]±zMZZEQ‰ÏžïÙ sÇe˔Ѳ“šGw6P%‘HöìÛß¹G¯ˆÆ‘‘-[2ìjÜuÅ IIÉ6o …ºì.$¹dÅÊFÍZ„7j¢©D•X,®ß¤é—/_Õ.½~ófPXxýÈfª?’’’ƒÂƒÂÂSRRÃÎ?îý#„Ð_¯Ø¥M)çÿíÝw\ÇðÙ=à¥P¤[@,Q±¢RŒŠ]±coÑØ++T,ˆˆb‹ÑØ“øbE°" Ø *F#`,4;®ìîûcõ<¯ ×~ßÇ'ïnvvç·sçýnfˉD¢…sç…Âñ "‘(:f‹‡»ûˆ¡ár¿.¨ù @Is?­Zxà ÇË/úaÊdkkë…‘KÿöÛ×›—»ïàÏ\.O|ùøñ“ã'4 ÔÊåŠJd>z¬ŒËE ¾ Ðgà—••ݸ™&µ()%E¼Œç~ºÃ!û€NÓ®»ÝaHÙl¼õ´É“¢c¶ðÊy¯^¿Þ·Ce‚WÑÜ—É©òß¼¹v#5j劀NI’Ä0,48hmôƃ‡÷ïÓGêÊ7ub(ã–!„Âz~ommM’¤ÜI»ö$¦\¹úö¿ÿâ“éB/OϤädÿŽ$]JIñòô|öü¹:ß*¡:¶  &éÌèŸw~ÒÂ×÷ÚÔQÇ97¨¯|œZéæ ‹ŠBŽõ„B!A"‘H „õêà߉ÏçÓuæ-Z‚ê7$¼Kp(]ÂçówíI::"¸WXŸAƒD.}‘-Y¹Ï !݃•HruuéÓ»WÏ¡!JÁžu ¼q3­Lâīׯ_þó*¨k úòÕáÓ§‡GŒ î6~ÊÔë7R)ŠJËÈèúþÇYó„ô3qò½Ä…ôZôÓü…‡4ýfPyº”þ)Š*..ÎÉÍEe={¦|Ú_ jñdƒ77 ó•Qk¯^¿^^^NzyxÌŸ=ËÄÄ„~:qÜX„Њ¥‘›7¬£K÷8yê^=z¬\9e„·oÿ[¹LQeÙI!Ý»28°sR:{jçç‡cØÕk×Å…IÉ)®. ]6DQˆúýÏ¿¶ÇÅw ì²tÑBw7÷¥+VÞLO§OzXµ¶m›Ö æÌáñx«¢Öх⥞Bâ}¢e“ÿªNÅKØÍ+/Ÿ5cz̶í’.u﨨¦:YJQsgÓúu[¶Ç.[¹ÚÈÈÈÓÝÝÇÇ»U‹æßµlÉb±è:žîî¡fÞÞÖÖVôì½@(œ:iB¿°0úx……ùâeË ­¬¬d+Ë–H‰D!únÄŠ:„þvcbbÜ©c‡¤”” n]éòäËWBƒƒHŠD …‡1t𠊢:ûw …3jB¨C»vÆ ¦(Š ˆ5ë7K6Go_nëð tÖ¥¹ãiiéç/&Í›=«GpÐíÌ̸„„¾¾¶¶6r+W%ý#„Ü]]ã·oË/(¸{ïÞÝ{÷ÓÒÓŸü­^½º+"#ÝÝ\BI"„’ÿdÀ¬é?P% ßääž9w!DOPÈV–-‘· ŸwD~úÿ²´k—ÎKW¬***²´´|þ";'7·K€NnBèÕ«×ÅÅŸš7óùô©„^˯Mëè˜-t£m[' BæHæÛ†’ÖÕ™Y Í´.ý+Êv¥¥e1±;Zøú†tï& gL›:jÜ„˜ØØUË–ÊÝ”:³ÿJš#‚ ³Úµ:uê€ãø‹ììkÖ®Y¿!1>Žn}›oÝÎ<|ìØã'O,Ì-Ô¯_»v­¯d*Ë)‘·Êê|YÚºU+SSÓ”«WÃzöL¹r¥‘—W½ºusrrBŸJJBSfÌ”Z•Ç+G™™™}Îô¤¼á>£Ð[Ú•þ‘âl·cWBiIÉÜY?Òãæff“ÇÛ¼mû¹‹IÁ_æ½¥¶£²-E“ ?ž»pqüö­. Šgæ4ˆ9bÅš(.—+þ#q´…EE‹–ýÜ­ÛÊeKÍÍÌ(ŠJKϸ|õšäîÈîš:‡Ò•סuñ÷O¾|¥÷÷ß§\¹Ú¿oqÌvv¶¡e‹Õ­[Gr­ÂÂB„ô¾;Ü/þô Aú=¥§þ¥¦¥_JI=r„½]B’dhp·÷®=‰>~”zšÚwý“âîêjddtúï3’…A<|ôÈÎÖ–Ãá|Zø²4''W  ìß×ØÈˆÇã•——ß¹wïk…o+Ë/‘³JëH, ìðèñ“äËWÞøÐ¹SGñÒºuêXZXyyxÐOŸf¿˜ôù †o7…ã8B¨¨¨˜.KËÈPÝ:ݤ]£EÃñíü._8'ècÕ4‘H´mS4Žã<OîUAªÜjg|Ä踄Ýï?|hßÎÏÚʪ´´ìö;É—¯D.œO×§“ejz†“ƒC3ogç'f[lÏ¡$Ifܾ}ÿÁC„н:u¤d&Ò)5&ÿ¿Ô‘?Ú–\êãÝÔÚÚ:6~ý@¼YŽ>,.a÷»÷¼<Ý_¼üçØ‰“³gL—Ú2ý_çõY,Vl||¿°Þ?Í~ùÁèô”–þFÊ# KJJø|¾T9—Ë---%BîZª›S0ú'I²ß>×E!„íÝpÅšµ»÷ry¼ë¢ü;v¤ë4òôláë»3~ÕÚuE™›™E­\^Î/ß´ekâõããR?ß’!é´l‰‚) 5–’$à_RRØ9àËõŸ—öíÝkü˜ˆËW¯®Û¸ùFêÍÙ?NîÞMfË!dcm=ö¬ùc¶~Ìÿ8ölE­#¿ù º ;rüHøÀðJ¬ùöí[É§ŽŽŽôƒ¼¼<ú)ý@.¹å7Ro¸º¸Jñ+Íf?zò¨k—®Jê\»qÍËÃKQs,ËØØÇqú[ý-D|¢>†al6›ÅbQÅåréú&&&ô=E"‘P(äp8$Iòù|‹Åápèo\ªDnJêH-511166OH.566622ÂqœÞ‘H$µ®ø)½ !‚ „B¡©©©ÜÖÙlöý‡÷•÷-m¦u“ÿjNÚ«¤ÎvÄ“ r—ÒÉRÉêtÖWR¿¬¬LÑ"•WYGjiyyyyy¹Ü¥|>ŸÏç+YWü” @ ./))QÔ´º/­¤ué_ÉuÿR¡ÉMï·Ž]§]éaˆ©ô¯ÎF ýWtè:íJÿ æc5GÿL}Û0(0ùºN»Ò?bnd©ÖF˜›l0(Ðc ë´+ýã8.¾ó|U¶ƒaAl¶Êj0] 0ú]§]éßÆÚ¦ °ÀÒÜ’¾©ŽÉ{ÔH•K²X¬â’bE—*_¨=ºN»Ò¿«‹+B(ïmžäeiô•ôôõ÷âšø[&.±±¶qsuSÞS“ EÍ™ÚL»Ò?Žãînîînî5ÓœòÉ©ùõ‚Áo!’›böËú3+´–v¥ÿ&w²¡¢Äó r eTb›’O«²e aûò@v]L¢Ú·%RÔ™Y Í :ý×ðd %´ë'P ýÒ?`p ýÒ?`p ýÒ?`p ýÇ oûC’dÖó¬Ü·¹<¯fZ455urpjäÕÇäñb6$mkh¦ÞðÒ s :ýg=ÏBuîØÙȨ†úA$=Ë~öìù³Æ^k $mkh¦ÞðÒ s :ýçäæ’$Éçók¦EÇ=Ý<Óo§×LHÚÖÐ6L½à¥@çtú†Ñ¿ù[3‚ÀpLÉOð1’¶5´ SoxéÐ9þi5ù™¥æ¯ó1’v6´MÕßðÒ s ý<¯P…T5È`H*›Ã0&GlêìÐ*L½à¥@çô蟲Ôðè_ùÇ$³!©lŽVÃÍmÃÈè^zt‹Aþé¡OM"IQHÉ%³!i[sîÜ… ÍÛøÝÊÌ”*?rôXó6~ÿ¾É‘»ÖõÔÔæmüÞ½_!1õ€—cУ„ýá¥é(4’ö€®ÈÏÿ˜õü©ÜsæÙlv#¯&¶6¶’…ýýMMMÏ_Hjݪ•dùÅääÆ97¨/·ï&Mâ¶m±¶²ª¦½€7†É Ó¿x裤ΖØ÷îÝÝÆf³™jQÉIt·9=“õü©wÓf––²‹Š‹‹=yÔ¡]GÉB‡Ø9àâ¥K çÍÁñÏoEEE™wîNŸ2YQ+VVVÛ·¯¦]`ê `h/=zÀ°'ÿÑçíŠÜ¹{ï¯ÿý]«V­‹É)LÍ#¤t6^UH:Ýœžáóù’¹ÿò•dñcKK+>¿\v•ïCBò ngÞ—¤\¹J’dpPw„оƒ?‡†õiÝ¡S¿ÁágÏ_ +HMþ=q¢W¿m;ú:ìÜ… âí?ù[ïþÚvô<|dÊ•«jîƒodH/=zÀ°Ó¿ªŸi“ÇÛ½þÑãÇŒ|D’$I©7×ËæôÛÍ´T•uÚ·ó³´°8+‘¶“RR¼›4©ïäôóá#[cwt \³â§F^ž –DÞL—¾‹Î¯ÇO¬Ý°±K€Ôª•ÞMš,X²4ãÖmº|ÝÆMAݺ­^±ÜÓÃ}Ö¼ùW¯ßP'fEo€wï߇†õ5od!ŸÏ:*bôø‰^ztLþS”â™ÏâOŸöëwÿþÄÜéñÊ·£þdì‹ìlw÷hŽ¢¨ÄýB! Ç'Œ#žµ®DsÀÈÈ(¨[פä”% æã8Îåòn¦¥O›fÔH—† å¾ÊøÒ Ó ;ý«ºçIËæÍgÌ™ûîýû®]º0Ø®’FÕ¼ Ë¡#GÞ½{øè± cÇÔ@sLí^jç×¾_{„Ðúè¨ó«¬ßªE‹:ööç/$µkÛö⥔f>ÞõnÝÎDÙX[‹«ÙÚÚòx¼ÒÒRqIqQ1]..¡¿ü=ÍÊB3Vª!.—kff¦<%o‚ Î3r츸]»Ì³ÅÃÝ}ÄÐp%¯¯¡½ôè4ƒNÿSvÕŸÏß•˜øúßW.[jaa^3£å!Ñþwöì¯ÇO „Ž;îäèØ#$¸Z›“\Z¡Ê@.ÇC‚ƒþ:ý¿y³g^»~}ÊÄ !;;[„PAaaƒúŸ/ÿË/(`³Ù’ùÛÞÞ!TXX$®óâââ:uìBkW­t¨WO²!‡£:¥oëi“'EÇlá•ó^½~½;nä~ô†¡Ÿú‡Ÿö¼~SÌ‹ì—C ìÔ¡==Aʈª„$ £ÖGoÚ²$IºZtÌ– ›c„Bau4'»‘*î~ë¨fÍïCBŠŠ‹·îˆãòxô9ÿNŽŽ–çÎ=%ðìùóÞM›H®UßÉÉÒÂâüÅ‹â’å«Vüå'GG+KË’Ò’–-šÓYÏŸŸ»pAßðUþ Iòûо¾×n¤Ž>̹A}xéÐ=úWrâ[Ê•+W¯_߸6*'/O$1Ø(U… ñq>xà€~“˜A—쎋e±ŒX,–¢UªÒÜ×-H—«Ø‚ÉÅy5yôä¡‚»þq{5V²nà]{ƒƒº‰K"FމD'?uä豆Î΢ִiýÔZ#‡ı“'?Ѱ¡ó†¨5~mÚ „F ‰DGŸøùð‘úNN‘ ô ë­æ^(MãvóÊËg͘³mû…¤KÝ»*ÙŽ^@etúW2ôÉÉË[ß·ÏŒ9óšû6óòôÌ{ûvÝÆM×Fi0$A’¿Î^Å_jWÞœH$Z³>º¤¤D\²(r™™YíÈ… Ô™XÖ{¶6¶ÚuªÜºS'Mœ:i¢d †aÆŽ‘=—³cûö÷2ÒÄuÆŽ5vô(Ù FŒ1rDEÃPþHKÏ81iÞìY=‚ƒngfÆ%$´ðõµµµ©þ®T;Ã>öÿåª'YŽõD"ÂÍÅå‡É“yzFG­)((,//Wyð[-JoçÎyâúÕÚ‹Åš>u2_ðutËåñ¦NšDk¨Ds@Û(y”””ÆÄîháëÒ½›P(œ1m*A1±±ðÒ  ;ý+¾ç›‹+_Àwww+))¡%‰<=<è»0ý+R¥ÓUš³¶²ÚíîæŠrsuÙ¶y£½m¥›ÚFÉ`Ç®„Ò’’¹³~‰DE™›™M?.=ãÖ¹‹IðÒ  ýË1jDâþÝ»”••á8ëÞý-|›1u‹ÜÊ…$w ÕÝI’†fþðBhþœÙ8¦zrBÓ¯*¨Eo€Ô´ôK))£Gް·³¿Bƒƒ|¼½wíIüðñ#¼ôè:C?‚«èc«v­Z“Æ=þÛïeeeŸJJüÚ´éÌÈ%”ª)RÕ9!ÇÅ÷t£ªv*¾Êæ(Šòòô>ÄÅÙYù¹ßê4´Ü7@‡v~—/œB‰óLE"ѶMÑ8Žóx<ÙUà¥@·túWrÞEQ‡>ÇŠËåž>sVòs°*”§[u®Äc±X—ÎþM?.++S™¼«ØBH$EŒ!ª¸w@Û(zˆD"ÉŠñx}VÒåJ>IY,VqI±ƒƒCåBoYî-We µ­9 mÔy¨óêÃK€Î1èôïêâŠÊ{›'÷ü> Ã$ÿK?\*¹HÎRôµ’XhcmãæêVÑ0 ²%âBÃéæÄ%ZÕÐ6rßô«‰ã¸ì«/þ– ûf€—ÝbÐéÇqw7ww7wM¢±´°@M‚7Ë ð0Lþƒé08þƒé08þƒé08þƒé08þƒé08þƒé08þƒéÿ³ë©©ÍÛø‰ÿ¾kß±ï !ýB’¤xé»÷ïoW :òë aÃÛwî:nÒ”+W¯IVø÷MÎ΄Ý\.O­‘$½9& [P»€.ŠJ˜mQJUÖPcŒ4€v‰Z¹ÜÊÊ !Äç ngfnÙ+ ljðnÒ$nÛk++Æ[œ¿xIzÆ­aáCš4nTVƽríÚôÙsæÏ™=<|]áMΛøÝ{ è_«–©Ê­=xôèБ_'OßÌÇ[Q ³-J©Êºj ¤ÿo´þuêлvéŒúå×_lj°²²êؾ=ãÍýóêUòå+›7¬ëH—„õêùÓªÕ {‡ ŒaXE7XZZŠ4 ¿­­ÜÆ[ ‹`ò_™–-Zr¹<Éɾ@°5vGϾýÛvôïòÃÌYYÏŸ#‰ã§LmÛ)`@ø°Ì;wÅ›Úwðçа>­;tê78üìù taAa!B¨¡³³d£ƒôìÒ™ÏçÓO§Î˜‰êú}ó6~t‰¢äV–*a¶Ez—=~1aâ°Ñcä® @ AúW&'7—Ãᘚr$ cwÆÿrä×>½{­Zóã´©orr§ý8S¼tþâÈö~~?-YTÆ-›¿d ]øóá#[cwt \³â§F^ž –DÞLOG5òô´´°X¹ôRJJyy9]Ù»iÓå‘K8œÏþ0e2BhÝêUqÛ¶¨ @¶²T ã-"„V¬ŽjÞ¬ÙŒiSä® @ Áäÿ7ÊËËéÓÖ~æÝ»{÷èÞ5PjJœ_Ο9ý‡a_Ž”[YYΚ·   ~ê߱øˆÑ!‚ —®XYTTT»ví=ûö2x¡  ùù {ö¶kÛÖÌÌlçö­ë6nš5o‘‘Q“ÆZ¶háצu{??‹Eo°i“Æ¡6­¿Ïç+ ÀÆÆZ¶²T ³-ÒOûõ :d°¢uh!Hÿß0Hòi{¿¶ófÏ’ª³xÁ<„EQùùù¯^ÿ{úï³!’"é¥þ;ÐlmmB"‚ÈÍË+** o!4(hã–­ôcï¦MÞ›øáÃÇ[™™·ïܹrõÚÁC¿89:ÆlÜÐÈÓSnÊP‰ñýÚ¶Ñôë b ý#&z½µ•5BÃø4@I·23÷ìÛïþ}KKK—† kת%¹ÔJæê€óB6ÖÖâ[[[WZZjffF—ØÛÛõ îŒzò4kñ²e —Dþ~ì¨Ü • &[¬]»vͽB˜Çþ¿áÝ´iËÍ[¶hÞ¢ys¹¹?¿ `êôêÕ;ûןgÿü#~û¶þ}û(ߦ-úrÎx#l6ÛÌÌìÎÝ{-ýÚ¿ÈΖ¬ß¤q£IãÇ¿üçU—ËH’j¾EZÒżzýš/Œ6ÔÒ‚.¹yGù*NŽŽ–羜í:{þ¼wÓ&!/Oc#£c'~“ZåÁÇöövr‡õ•@RÍ·@ Á䟻ºššš®Y¿aÈÀA^»q#ãÖm„ÐíÌLñL¾ccã1£GmݳX¾>ÞIÉ)·ngîŽÛª]»ö´)“7oÝöß»w]»t¶µ±ùTZr#õæßgÏE­\A¯NŸ‘wåê5gç­[µR@HPÊø™mQv—¥ÖÕôË@>ýWŒ••ÕÖMÑ<./rùÊ-ÛcŽ>Ô ~ýK)—•¬1rÄ´É“.&]Z´ô§ç/²7D­iÓú;zÑèÃã·o#)2f{ìsçEoÞRRR»>*jæíݺU«¨ Ñsæ/¬t’ªµE©uh'ìÈñ#áÃ+±æÛ·o%Ÿ:::Òòòòè§ô¹4½ã€á‚Ñ?`p ýÒ?`p ýÒ?`p úº©‹*DÑÅ $If=ÏÊ}›Ëãñª›©©©“ƒS#¯F8_Ñ0Ì ÓuÈzž…êܱ³‘Q•úV$=Ë~öìù³Æ^5½Oô ¤†åäæ’$Éçó«²Ç=Ý<Óo§+¯ÆÔdƒA™€ôÏ0P€aAUÜAŽQ¥¼S“ fVrFµP™¶UÂ0LjLM65gV@Aúg†aEU=ý#„Û`j²Á ¨9³z Ò?ó˜Jÿ¥Öbb²Á ¨9³z Ò?Øý#D©š`¶90lþÆ`>¦(•Ùÿs5Hÿ¥þÌ è%Hÿ‘‘qñâÅÌÌÌׯ_¿yóFn aHÞlüûF›Ð¤Q£˜èõâB@0züD“=;wËn FÿÕG­ïV § ý«åÒ¥Kk×®}ôè‘ÊšŠòq{ûéS§¬ß¸é̹ó¡ÁAtáž}ûÿ{÷.1>ÎÈÈHj•ÏQ•¡ ýWŽš3+ ¯ ý« ‰–,YòóÏ?«YÃ0’$eó1EQ½z„^JN‰Û•àצµ••Õ³ç/Žüm̨‘®..ró·:I]ÑdBH(žúó¯¿ÏÏ{û–Ãf7tv<¨C;?q…ÜܼóIIლššªlˆ¤¨ñ»Î¿  ÏŸþSn‰”‚‚Âè-[nßÎ4a³¿ ™4n,‹Å’¬–‘1oÑ’Úµkÿyâ˜ÔäGnnÞÐÑ¡SÇŽÚØX3ðBÊv/䀃ô¯ŒH$š0a¹sç¤Ê­¢d8.‰Î3rì¸ñ æÎŽŽÙâáî>bh8I’r7¥Î°^Is?­Zy÷Þàýyyq¹Ük7RF.>uòÀ~ýè 9y¹ûþÖ³'‡ÃQÙ?9~ò·q£½›6¡›“-‘²zÝúW¯_Ï›=ëc~þž}ûkת5jø0©àBeee7n¦tê(¹()%E²ªø:ÊïXÈþé_™µk×Êæ~—?ÿüSÑ*R6occ=mò¤è˜-¼rޫׯwÇí¨bnS4Ùðï›7×n¤F­\Щ#I’†…­ÞxðÐáþ}úH]ù¦N eÜ2„PXÏï­­­éï+²%’ oefþ´dq÷®!.—{òÔ©‘Æʶëåé™”œìß±ƒä¢K))^žžÏž?¯¦Cp¸`ààžç ¥§§ÇÇÇKb¶eË;;;Ek‰‡ãr‘$ù}hH _ßk7RG æÜ >¥”Ê 5WXT„rt¨' ‚‰D ¬WÏÿN|>Ÿ®3oÑ„P¿!á]‚Cé>Ÿ¿kOâÐÑÁ½Âú ¼ ré‹ìlÉÊ} 謨Dқ܄§‡‡H$‰D^žžEEÅeeeßì…BA]oÜL+ãrÅå¯^¿~ùÏ« ®èËHýÓ§‡GŒ î6~ÊÔë7R)ŠJËÈèúþÇYó„ô3qò½Ä…ôZôÓü‚‚Jw/è+HÿòQµbÅ Ù 1dȶmÛ*YQyú§(ª¸¸8'7!”õì=pW–þUžú‡ä7çáæfaa¾2jíÕë×ËËËéB/ù³g™˜˜ÐO'Ž‹Z±4ró†utIâþ'OýÑ«G•Ë"§L˜ðöí "—)ª,[òMîî{wí¬[Çž~úüÅ 6›Íápdp;??î^»..LJNquièÒ°!BˆBÔïþµ=.¾k`—¥‹º»¹/]±òfz:}ÒÃʨµmÛ´^0gÇ[µŽ.D_¾4H=…Äb0ù/_ZZÚ;w¤ qŸ9s¦òUžŠ—°›W^>kÆô˜mÛ/$]¢çÆåR'K)jŽÃálZ¿nËöØe+Wyº»ûøx·jÑü»–-Åçßyº»#„šy{[[[ѳ÷¡pê¤ ýÂÂèãæ‹—-/,,´²²’­,[òMl¶«‹ ýý&ãvæ‘cÇ»ÍÝAD!„LLŒ;uì”’Ô­+]ž|ùJhpI‘!¡PxàСñc"†DQTgÿNB¡ðÀ¡ÃcF@uh×nØÁE±fý†¢âb$qν}¹ýßÒ¿|rOõïÒ¥‹’“þhŠÆÓÒÒ3Î_Lš7{Và Û™™q -|}mmmäV®JúG¹»ºÆoß–_Pp÷Þ½»÷î§¥§?ù[½zuWDFº»¹"„’D$!þÉ€YÓ (J ¾ÉÉ=sîBˆž ­,["… .·{ï¾ÓŸièì‘“›Û%À?'7!ôêÕëââOÍ›ù|úTB¯åצut̺Ѷ­¿ …! sºE$™þ¿l_~ú‡/é_¡P˜””$[>bÄ•ë*ÉÇ¥¥e1±;Zøú†tï& gL›:jÜ„˜ØØUË–ÊÝ”:³ÿJš#‚ ³Úµ:uê€ãø‹ììkÖ®Y¿!1>Žn}›oÝÎ<|ìØã'O,Ì-Ô¯_»v­¯d*Ë)ùÖË^ý´jõïÞuïÚuÎÓ¥k~ÙBëV­LMMS®^ ëÙ3åÊ•F^^õêÖÍÉÉE}*)AM™1Sjã<^9BÈÌÌìs¦'å ÷)ý€|þåHOOÿôé“T!‡ÃéÒ¥‹:«+ʈ;v%”–”Ìõ£H$B™›™M?nó¶íç.&™÷–ڎʶM6<|üxîÂÅñÛ·º4l(ž™wnÐ bäˆk¢¸\®øZq´…EE‹–ýÜ­ÛÊeKÍÍÌ(ŠJKϸ|õšäîÈ}ûßs.…Ë/êÚ¥³P(Tr}#B¨‹¿òå+½¿ÿ>åÊÕþ}ûˆ+ÛÙÙ"„–-^T·nɵ BÒûþíp¿øÓ'éäSÿäHMM•-ìØ±£:×Ç+:õ/5-ýRJÊè‘#ìíìè’$Cƒƒ|¼½wíIüðñ£üÓÓÔ¾ëŸwWW##£ÓŸ‘,$âá£Gv¶¶ŸOÁ“Ì–•““+öïkldÄãñÊËËïÜ»÷µÂ·•å—H8~ò÷’ÒÒ9?ÎèÔ‘ÏçË?ÉQb =~’|ùÊû:wê(^Z·NK ‹¢¢"/úïéÓ¬ó“>ŸÁðí¦pGÓeiJ"„Ù€!ƒÑ¿·nÝ’-Tsè¯h8Þ¡ßå ç}¬š&‰¶mŠÆqœÇãÉ¡ª3H•[Ã጗°ûý‡íÛùY[Y•––ݾs'ùò•È…óéút²LMÏprphæãíìÜ€ÃáÄl‹íÙ#”$Ɍ۷ï?xˆº÷àa@§Ž”ÌD:¥tò?óî]ÃLMMo¦§‹ [øúIFŽ¢(DQ”wSkkëØø]ôñfY8>rø°¸„ÝïÞðòtñòŸc'NΞ1]r]ñ¦œÔg±X±ññýÂz?zü4ûåK£Ò¿÷ïß—-ìСƒ:ëb#IRv¢›$IÉÄ/ÆårmJÑlù7Í)8öOQTÿ¾}ÜÜ\Oüvjïþƒ¥eefffM›4Þ¸.ª™·7}ô¡‘§g _ߨñµLM:hnfµrù®=‰›¶lµ°´éôã´©“gü˜z3Í¿cÙÓ蔜X‡*(( )j銕’…‡÷ï³¶¶’òë(Š ð?yêÀÎôŽ‹—öíÝK$úó¯ßþøÃÑÁaöÓƒ»uK¿uÉœågcm=ö¬Ä7ÆlmÓú»ù³gO›9Ká·(ø0`Ø‘ãG†WbÍ·oßJ>utt¤äååÑOér988hzÇåì­°°ÐÛÛ[ªÐÄÄäÅ‹’#WE»p#õ†«‹«ÜL_Ql6ûÑ“G]»tURçÚk^^Ššc±XÆÆÆ8ŽÓßè¯ âõ1 c³Ù,‹¢(ú[‹Å211¡ï (‰„B!‡Ã!I’Ïç³X,‡ÃårÅ©T¶DR­Zµ¤î-ˆ’ª,µcccñ‰äRccc###Çé]‰DR늟һ€"B(šššÊÍfßx_y߀ƒÑ¿´þùG¶ÐÓÓS2÷+ÁàOð©³E“ 4ESbRs²õËÊÊ-R¾ñÒÒR•;(µ…òòòòòr¹Kù|>ŸÏW²®ø)A@\^RR¢¨iµ^ÐSþ¥ýû￲…²óŠ(¿î¿Bª2ù”ƒ8HÿÒ^½z%[Ø Au×ÇSé_@ú¯è4€ƒô/MnúŸÙ ƒùXÍÑ?Sß6 Lþ ¤i¯_¿–-´··W ûW]‰¹Éƒ=0pþ¥åççËÖ­[WÍÕqßy¾*a`FÛ„­²ÌcWŒþÒ¿´ââbÙÂzõ꩹ºµMAa¥¹%}S)’÷¨‘*—*d±XÅ%Åê\! é¿ ÇÒ¿´¢¢"ÙBsss5WwuqEå½Í“¼,¾ž¾þ^\BKÀ$Ð%6Ö6n®nÊ›cj²Á ¨9³z Òÿ7¸\®ìµìô-eÔÜŽãînîînî5°òÉ©ùõ‚Áo!’›böËú3+ ¯ ýCîÌíÚµ5—Br'*Jöö|’…²*±MɧUÙ2†0„}y ».&QíÛ)ê̬€ƒôÿ úgd¥¨?ó_ójx²€~€üý†ÜÿÚ<ú*Òÿ7äþþž™™™¦ã˜éÿr/WóÇ~]éÿâ¸ô¤Àà@úÿ†ÜëËÕ¿èÐ þ¿QRR"[hbb¢é¸&Aú œÓ®ÛH’Ìzž•û6—ÇãÕL‹¦¦¦NN¼á˜üïŽÌ†¤mÍé ¦úÍpz =éÿ¥¥¥š¡b²žg!„:wì\cW'ŠD¢gÙÏž=ÖØ«q „¤mÍé ¦úÍpz =éÿ:÷»y9¹9$IòùüšiÇqO7ÏôÛé5’¶5§7˜ê7Ãé1ô ¤Ý& 0 £ó·fᘒïĬ¤mÍé ¦úÍpz =é_Ô䇯š¿ÎÇTHÚٜިz¿Z 7àlWÃ/Š¢ª I ›ÓŒô›AõúFÿº{Õðè_ùç=³!i[szƒ©~3œ@ÏÀè_·aFÕ,’$…”|â3’¶5W9ç.\hÞÆïVf¦Tù‘£Çš·ñû÷MŽÜµ®§¦6oã÷îý{m~çTSªŒþuý)¬é(4RÍ÷@~þǬçOåž3Ïf³y5±µ±•,ììïojjzþBRëV­$Ë/&'7nÔȹA}¹­x7i·m‹µ••Þô@{@ú×mâ1œ’:[bwÜ»w?>v›ÍfªE%ƒ=uBÒÝæhYÏŸz7mfia)»¨¸¸èÑ“GÚu”,äp8.^º´pÞÿ<åVTT”yçîô)“µbeeÕ±}{Fö«úúMÍh˜ü×mú|W‘;wïýõ¿¿kÕªu19…©r„”ÎÆ« I§›£ñù|ÉÜùJ²ø±¥¥Ÿ_.»Ê÷!!ù·3ïˆKR®\%I28¨;BhßÁŸCÃú´îЩßàð³ç/Ф&ÿž8ѫ߀¶ývîÂñvŽŸü­wÿm;ú>2åÊU¦Þ9Ìö@Û@ú×m*à¦edL?nsôúG3òYO’$¥Þp\/›“ëfZªÊ:íÛùYZXœ•HÛI))ÞMšÔwrúùð‘­±;º®YñS#/ÏK"o¦KßEç×ã'ÖnØØ%À?jÕJï&M,Yšqë6]¾n㦠nÝV¯Xîéá>kÞü«×oTåóîýûа¾³æ-,äóùCGEŒ?Q 0ÒcƒÉݦr ·øÓ§ýúÝ¿ÿ1wz¼òí¨?«ü";ÛÃݽš£(*qÿPÈÂñ cLj§ß+Ñ\¥uëš”œ²dÁ|ǹ\ÞÍ´ôi“' …Â=ûö2x¡  ùù {ö¶kÛV¼.Añ»÷„H×éÞ5ðÅËNŸ9Ó²Eó »§Mš86b4B(¸{7@¿{Ç*ãQÔouìí˜2yæÍgÎ ¢ ÷ìÛÿß»w‰ñqFFF²«TSª¤݆!ìóðK;[[##£„½ûBºw«¡ô¯*$W¾dùŠÄqµk×®îæ‚8täWúqĨ‘&ÆÆ•nNÒÍ´Tñ´ÿúè(„­íøq“Õïrâ÷Sé·nµkÛöÚë ¤{÷ܼ¼¢¢¢/‰!´qËVÉ_¼|YXX*Q'aÇv‚ ³_¾,**jÓº5—ûùg{:ul¿rÍZ’$•ÅQÒoEõêšœrygÂn¿6­­¬¬ž¿È>þÛïcFtiØPnç@ú@Aú×mŸO¼R¬eóæ3æÌ}÷þ}×.]lWI£*C¢:räÝ»÷‡›0vL 4ÇÔÞIjç×¾_{„Ðúè¨ó«¬ßªE‹:ööç/$µkÛö⥔f>ÞõnÝÎDÙX[‹«ÙÚÚòx<É_Ÿ*.*¦ËÅ%ôw¦§YY¡cÆJ5ÄårÍÌÌ”£¤ß‚X8wÎȱãâví^0wvtÌw÷CÕt |@ç@ú×q˜²Ë·ø|þ®ÄÄ×ÿþ»rÙR óšý+‰ö¿³g=~!täØq'GÇ!ÁÕÚœäÒ UfŽã!ÁAþß¼Ù3¯]¿>eâ„-B¨ °°AýÏ—ÿå°ÙlÉümoo‡*,,×ù÷MNqqq:ö¡µ«V:Ô«'Ù‡ÃQÒ~³±±ž6yRtÌ^9ïÕë×»ãv@î@ÏÀ©ºM|ï6¹ÖoŠy‘ýrÈ :´§gzQ•„BaÔúèM[¶‘$IW‹ŽÙ²asŒP(¬Žæd7RŽ“«s@ š5¿ )*.Þº#ŽËãÑçü;9:ZZXœ;ÿõ”À³çÏ{7m"¹V}''K ‹ó/ŠK–¯Z}ð—_œ­,-KJKZ¶hNÿe=~îÂu~ÃWy¿‘$ù}hH _ßk7RG æÜ >³=Ð8ýë6%'¾¥\¹rõúõk£ròòD"ƒRU¸Çñ¡áƒè7ù‡tÉî¸XˈÅb)Z¥*Í}Ý‚ÄcÕ•Ue46›]\\diiE?¥Њ‹‹Øl…ƒï¦M;7hpôø‰æÍšÕ­S!dllu2_ðu˜Îåñ¦NšDk¨DszCI¿•””ÆÄîháëÒ½›P(œ1m*A1±±ÞcèHÿºMÉ=ïÜ\\ù¾»»[II …(‘HäéáAß¶…ì_©*þ«Òœµ•Õ–èhw7W„›«Ë¶Íííl+ÝœÞPÒo;v%”–”Ìõ£H$¢(ÊÜÌlòøqé·Î]L2ä@Ï@ú×mJ>Ä#FHÜ [`—²²2gÝ»ÿ …o3¦n‘[¹än¡º›#IÃÐÌ~@ÍŸ3ÇTONhúU­ Šú-5-ýRJÊè‘#ìíìÄäãí½kO⇠¶ÇÐ3pì_ç)úü­]«Ö¤qcÿö{YYÙ§’¿6mz„3r ¥j®WuÎFÇqñÍé¨ªŠ¯²9Š¢¼<=†‡qqvV~»:Íé ¹ýÖ¡ßå çPâôL‘H´mS4Žã<OvÃé1ô ¤ݦä.Š¢8}²—Ë=}æ¬äzU(O·ê\‰Çb±.ý›~\VV¦2yW±9„H$Š9B Tqïô†¢~‰D’7ãñxŠ6e =€žô¯Û”ßñ¾´´ôøo¿wö÷wsu)ãr™úŒV5²WëžÿrsLõ5‡’{^E›Óê÷›JÒcèHÿºMùØ÷¯¿ÏœøýÔ»÷ïçÏžED ¥µñO›Ó ö›ôzÒ¿nSþ!îÜ ¾›«Ë._½fnfÆ`ú¯úl¼Ž6§7˜Mÿ†ÐcèHÿ:OÉ'o§ØlÎù¤Kîn®ýû„1uë_•ŸõÌ&mkNoÔÌl@;Aú×mÊÇpB¡°u«–~mZ“$ÉÔyHËfãaò¿r`òé_ÇaHù \B¡ÁÄOSq휪t»9½Á\¿J _ ýë6ÆÇ¾êЪá8Œþ+Fÿ8Hÿ:OÛÒ?ã!i[szÒ?† Ò¿nÃqœþżûÆ0Œ ¶ »fBÒ¶æôSýf8=€žô¯Ûl¬m ,Í-é»ç*!õ)¯èCŸ.W’X,VqI±ƒƒCåBoYî½ce µ­9½¡N¿©Ói†ÓcèHÿºÍÕÅ!”÷6Oîù}†Iþ—~ ¹Tr‘œ¥èk$±ÐÆÚÆÍÕ­¢!adKÄ…8†Ó͉K´ª9½!·ßèNÀq\¶ÓÄßdûÐ@z =é_·á8îîæîîæ®é@4’ö€N€~ÀÀÁþÒ?`p ýÒ?`p ýÒ?`p ýÒ¿jµjÕÒt“ ý«Æb±4À$Hÿ€Áô¯LþÐ3þU32‚_F W ±}£´´TÓ!T I’Yϳrßæòx‘Hô,ûÙ³çÏ{5Öt, 3TÓæÌš“›H’$ŸÏ×t,:ÇqO7ÏôÛéš4F{›FÈBÇ0LÓq)$ 0 #BÓè‚ 0£(JÓ€Æ@úÿ—Ë•-´´´Ôt\*@&«mþ>5Òÿ7JJJd ­­­5—B†Qé¿Â Ã† Òÿ7>}ú$[hee¥é¸”ô_ ƒéÿrÓ¿6OþÃè¿Ò(˜0Hÿß›þaò_ÿPd€Aƒôÿ>ÈÚØØh:.…0„!§þ …ÂSþõ÷¹óyoßrØì†ÎÎáƒuhç'®››w>))|Ð@unl@RÔŽø]çÎ_…çOÿ)·DRIIéžýûÓÒ3ò êÖ± <ÈøÛK(Ó22æ-ZR»ví?O366–\”››7ttBèÔ±£66Õòõ ò?ÀAúÿêÓ§OrOýÓæcÿJFÿ?­Zy÷Þàýyyq¹Ük7RF.>uòÀ~ýè 9y¹ûþÖ³'‡ÃQÙÐãÇOŽŸüm\Ähï¦MèædK$­^·îÑã'£†«_ßéù‹ìƒ¿þø1æôiRÁ#„ÊÊÊnÜL èÔQrQRJŠø1ãsŸ{ ²?À€Aúÿ*77W¶Ð‚Ífk:4…0 #IR6AþûæÍµ©Q+WtêH’$†a¡ÁAk£7RW¾©“_˸e¡°žß[[[Ó÷F”-ûø1?5-}yä’n](Šêؾ=›ÍÞ{ààôiSp‰¦év½<=“’“ý;vÜÂ¥”/OÏgÏŸWÓ¡ 8\0ppÏó¯òòòd ÝÝÝ5—2âÑ¿”¢"„£C=¡PH„H$a½zøwâóùty‹– „ú ïJ—ðùü]{‡ŽŽîÖgÐà‘K_dgKVî3hH@÷`E%beܲíÚ5óñ‰Dtëv¶¶åååå<žd5züÔ5ðÆÍ´2.W\þêõë—ÿ¼ ꈾŒÔÿ8}zxÄØà^aã§L½~#•¢¨´ŒŒ.Á¡ï?|˜5oAHï°1'ß{ð@\H¯E?Í/( Ðô«éÿ«ÿýW¶ÐÕÕUÓq)ƒ!ùéßÃÍÍÂÂ|eÔګׯ———Ó…^ógÏ211¡ŸN7!´biäæ ëè’ÄýNžú£W+—EN™0áíÛÿD.STY¶D̹AƒõkVÙX[ …Âü‚‚»÷ï9v¼mëï8Žlnçç‡cØÕk×Å…IÉ)®. ]6DQˆúýÏ¿¶ÇÅw ì²tÑBw7÷¥+VÞLO§OzXµ¶m›Ö æÌáñx«¢ÖÑ…èË—©§ø@ &ÿ¿zòä‰l¡§§§¦ãRFѱ‡³iýº-Ûc—­\mddäéîîããݪEóïZ¶d±XŸwÍÝ!ÔÌÛÛÚÚŠž½…S'MèF/°°0_¼lyaa¡•••leÙ1Š¢Bèâ¥ä ›cBuìí7­_+'=ü711îÔ±CRJJP·®tyòå+¡ÁA$E"„„BáC‡Æ‰:xEQý; …‡5!Ô¡]»aCSEÄšõŠŠ‹‘ÄèíËíø0p0úÿêñãDz…Ú>úW0ùOQ”»«küöm§Ž\8¿‘—gZzú¢¥??áEöKºA’!‚$‚ KfMÿ¡oïÞàÇ·3ïœ9w!D*¨,["«½_Û­›¢§MžXVV¶56Nî œ¢¨®]:gÞ¹[TTDQÔ³ç/rrs»øÓK_½z]\ü©y3ŸOŸJJJJ‹‹?ùµiý";›þ™ƒ¶­¿ …"‘ÈÂÂ!DÊn_þÌ?|0ýF’äÓ§OeËutô"‚ ³Úµ:uê€ãø‹ììkÖ®Y¿!1>!„(éÁñ­Û™‡{ü䉅¹Eƒúõk×®õµ‚Le9%2ÌÍÍ}š6õõñ!I2!qßÜ™3¾ùùÄ/[hݪ•©©iÊÕ«a={¦\¹ÒÈË«^ݺ99¹¡O%%¡)3fJm™Ç+G™™™}è“ò†ûŒþ@>HÿŸeeeÉþÞO­Zµ<<<4š2ŠÎüøøñÜ…‹ã·ouiØP<3ïÜ AÄÈ+ÖDq¹\ñµþâìXXT´hÙOÁݺ­\¶ÔÜÌŒ¢¨´ôŒËW¯I¦OÙT*7¹¾üçŸM[·/[´°nÝ:!‚ êÖ©KÇ333“ªL¯ÞÅß?ùò•Þߟråjÿ¾}Ä1ÛÙÙ"„–-^DoJ¬°°!$½ïÔ7!ú„ ý€<0ùÿYrr²laëÖ­¥nG£mMþ»»ºþûŒd!A=²³µý| úfr<''W  ìß×ØÈˆÇã•——ß¹wïk$3“Žέ[ZZ>ñâþÇâ’{X[YÕ®]›R°…ÀÎ?I¾|åý‡;u/­[§Ž¥…EQQ‘—‡ý÷ôiÖù‹IŸÏ`øvS8Ž#„ŠŠŠé²´Œ EÂì?ÀÀÁèÿ3¹é¿K—.šŽK5¹£[‡3>bt\Âî÷>´oçgmeUZZvûÎäËW"ΧëÓÉ25=ÃÉÁ¡™·³s‡³-¶gP’$3nß¾ÿà!BèÞƒ‡:R2é”â©ukk¿6mâwïÉ/(¨W·î£ÇÿúûÌS&ËÎ „( QåãÝÔÚÚ:6~ý@¼YŽ>,.a÷»÷¼<Ý_¼üçØ‰“³gL—\W¼)çõY,Vl||¿°Þ?Í~ùÁèäÑ?B}úô)==]ªð^½zi:4þI’ìß·ÏÆuQa{÷\±fí®Ä½\oãº(ÿŽé:<=[øúÆîŒ_µvEQæffQ+——óË7mÙšxà€C=‡Äø8GG‡Ô›iÓ¿>#Ck’$͛өc‡?Oÿ/fûö§Ïž/\Òûû²pñH’ ð/)) ì@Oé‹—öíÝkü˜ˆËW¯®Û¸ùFêÍÙ?NîÞM¦u„²±¶ž?{ÖÇü‚1[?æœ?{¶¢‚ßü4ìÈñ#áÃ+±æÛ·o%Ÿ:::Òè›ç8::ʽ‹ÍÁÁAÓ;þÍ.ìܹsÕªURKýýý=ªå»píÆ5//¡P(w)‹Å266Æqœþ–@’$} z)†al6›ÅbQEŸ÷Àb±LLLè{ŠD"¡PÈápH’äóù,‹Ãáp¹\ñ¸Y¶D†a&&&ô=EQôùù²áInÁÄÄÄØØX л#¹ÔØØØÈÈÇqzD"‘Ôºâ§ô. „‚ …¦¦¦r#d³Ù÷ÞïÚ¥«¦_@Ð ˜üG$IþüóϲåS¦LÑthªa#IRê²{É]SôÍ€&u¶£lý²²2E‹TnœÇã)^j åååååår—òù|>Ÿ¯d]ñS‚ è[Ðäþˆ]¿Ê}: Ò?:~üø«W¯¤ Ûµk§þá+z `à =ý¿ÿ~ùòåR…ÆÆÆ²Ç´¤ÿÊN8ƒNÿ%%%“&M*..–*Ÿ7ož···¦£S‹¢ëþr0ù0pþ|¾´]Bÿþý§M›V©íi† ýWôÀÀtúðàlaHH&ñ›ôZ&ÿ+FÿgÐ×ý>|ØÆÆFªpÞ¼y/_¾Ôth@JÑôëšdÐé? ààÁƒâ»ßÓ>}ú4nÜ8å—´iÇe~樀"H‚mÂÖô«cÐé!ÔªU«Y³fIfeeɽ€²±¶)(*ßɧú¨™YIæDŒ"I²°¨PKnÜaÐÇþi'N¨Ä6%ŸVeËÂöå캘DµoK¤ØXÛ¸¹ºUºÇ@×AúG&&&£G^³fdáÇ<8uêTMG§Žãînîîn.1ôÉÚ!CdØ÷äÉ“šŽ ¨þBÈÎή]»vR…OžùŸ“›H’$ŸÏ¯™q÷tóL¿^3!i[szƒ©~3œ@Ï@úÿ Çq ‹ÂÂBÉÂüü|’$q\K'6B†a5ð‹bA`8Fÿln „¤mÍé ¦úÍpz =éÿ–––R韢¨ÂÂB[[[M‡¦LM~øªùë|L…¤Íéª÷›¡õzCKµšbaa![XTT¤é¸”©áEQHUƒ †¤…Íé FúÍ z }£ÿoÈMÿîîZú‹ºôØ«†GÿÊ?ï™ IÛšÓLõ›áôzFÿß°²²’-ÌÏÏ×t\ aFÕ,’$…”|â3’¶5W9ç.\hÞÆïVf¦Tù‘£Çš·ñû÷ü«K®§¦6oã÷îý{m~çTSªŒþ¿!wô_RR¢é¸”¡?…5…&CªùÈÏÿ˜õü©ÜsæÙlv#¯&¶6ßœ,ÒÙßßÔÔôü…¤ÖßÞXúbrrãFœÔ—ÛŠw“&qÛ¶XËûJª£ýÐþ¿all,[Èår5—Bâ1œ’:[bwÜ»w?>v›ÍfªE%ƒ=uBÒÝæhYÏŸz7mfia)»¨¸¸èÑ“GÚu”,äp8.^º´pÞñU$EEE™wîNŸ2YQ+VVVÛ·gd¿ª¯ßÔì1€¶ÉÿoȽÀO«Ó?ú|W‘;wïýõ¿¿kÕªu19…©r„”ÎÆ« I§›£ñù|ÉÜùJ²ø±¥¥Ÿ_.»Ê÷!!ù·3ïˆKR®\%I28¨;BhßÁŸCÃú´îЩßàð³ç/Ф&ÿž8ѫ߀¶ývîÂñvŽŸü­wÿm;ú>2åÊU¦Þ9Ìö@Û@úÿFíÚµe ¦ãRHåÜ´ŒŒÉãÇmŽ^ÿèñcF>ëI’¤ÔŽëesrÝLKUY§};?K ‹³i;)%Å»I“úNN?>²5vG÷ÀÀ5+~jäå¹`IäÍté»èüzüÄÚ »øG­Zéݤɂ%K3nݦË×mÜÔ­ÛêË==ÜgÍ›õúª¼sÞ½ÖwÖ¼’…|>計Ñã' Fz  q0ù¯ZYY™¦CPHånñ§Oûõ»ÿbîôxåÛQVùEv¶‡—TT½9Š¢÷…,Ÿ0vŒò›81ÕKRŒŒŒ‚ºuMJNY²`>Žã\.ïfZú´É“„Báž}û‡ : !dkc;~Ü$Eõ{„†œøýTú­[íÚ¶½vãº@ éÞ=7/¯¨¨(äK¢E…mܲUrÅ/_†JÔIر Èì—/‹ŠŠÚ´nÍå~~‹vêØ~åšµêܧRQ¿QÕ«GhrÊå »ýÚ´¶²²zþ"ûøo¿5Ò¥aC¹é]éÿæææ²…"‘HÓq)ôùÄ+ÅZ6o>cÎÜwïßwíÒ…Áv•4ª2$Ú¡#GÞ½{øè± cÇÔ@sLí¤v~íÛùµG­ŽZ0o±Êú­Z´¨coþBR»¶m/^JiæãíàPïÖíL„µµ¸š­­-Ç+--—Óåâú;ÓÓ¬,„Ј1c¥âr¹fffʃQÒoA,œ;gäØqq»v/˜;;:f‹‡»ûˆ¡áJº¾ s ý«¦ÍÇþ¦ìò->Ÿ¿+1ñõ¿ÿ®\¶Ô¼fFÿÊC¢ýïìÙ_Ÿ@9vÜÉѱGHpµ6'¹´B•™…ãxHpÐ_§ÿ7oöÌkׯO™8!dgg‹*(,lPÿóåùl6[2ÛÛÛ!„ ‹Äuþ}“S\\\§Ž=Bhíª•õêI6ÄápTG£´ßll¬§Mž³…WÎ{õúõî¸ûÐ3pêŸjåååUßH5ß»M®õ›b^d¿2h`§íé™^FT%$¡Pµ>zÓ–m$IÒÕ¢c¶lØ# «£9ÙTqïäê¨fÍïCBŠŠ‹·îˆãòxô9ÿNŽŽ–çÎ=%ðìùóÞM›H®UßÉÉÒÂâüÅ‹â’å«Vüå'GG+KË’Ò’–-šÓYÏŸŸ»pAßðUÞo$I~ÒÂ×÷ÚÔQÇ97¨Ïl4FÿºMɉo)W®\½~}ãÚ¨œ¼õO|ù–,G‡z"áæâòÃäI<=££Ö–——«<ø­¥·áSç<qýjmŽÅbMŸ:™/ø:LçòxS'M¢5T¢9½¡¤ßJJJcbw´ðõ éÞM(Θ6• ȘØXï1ô ¤ÕäÎñj %÷¼ssqå øîîn%%%¢D"‘§‡}Û²¥Bªtú¯JsÖVV[¢£ÝÝ\Bn®.Û6o´·³­tszCI¿íØ•PZR2wÖ"‘ˆ¢(s3³ÉãÇ¥gÜ:w1É{ =é_·)ù5"qÿn]ÊÊÊpœuïþƒ¾Í˜ºEnåB’»…ênŽ$I C3ø!4ÎlS=9¡éWµ&(ê·Ô´ôK))£Gް·³w`hp·÷®=‰>~4Ø@ÏÀ±§èó·v­Z“Æ=þÛïeeeŸJJüÚ´éÌÈ%”ª¹^Õ9!ÇÅ7§£ªv*¾Êæ(Šòòô>ÄÅÙYùIìê4§7äö[‡v~—/œB‰Ó3E"ѶMÑ8Žóx<ÙU §ÇÐ'þu›’¸(Šâp8ôÉb\.÷ô™³’èU¡<ݪs%‹ÅºtöoúqYY™Êä]ÅæB"‘(bäuNã0ᬢ~‰D’7Srëké1ô ¤ݦüŽ÷¥¥¥Çû½³¿¿›«K—ËÔg´ª‘½Z÷ü—›cª¯9¤ö9’ÉÔï7• ¤ÇÐ3þu›ò±ï_Ÿ9ñû©wïßÏŸ=‹ ˆJÿjÿâŸ.6§7ì7é1ô ¤ݦüCܹA}7W—!\¾zÍÜÌŒÁô_õÙxmNo0›þ ¡ÇÐ3þuž’OÞN:°ÙœóI—ÜÝ\û÷ cêÖ¿*?ë™MÚ֜ި™Ù €v‚ô¯Û”á„BaëV-ýÚ´&I’©óþ–ÍÆÃäåÀä?Ò¿ŽÃò¸„B!ƒ‰Ÿ¦âÚ9U!évszƒ¹~3”@¿@ú×mŒ}Õ¡UÃqýWŒþ0pþuž¶¥ÆCÒ¶æô¤ ¤݆ã8ý‹y5öŒaAlvÍ„¤mÍé ¦úÍpz =é_·ÙXÛXš[ÒwÏUBêS^ч>]®$%°X¬â’b‡Ê…$Þ²Ü{ÇÊj[szC~S§Ó §ÇÐ3þu›«‹+B(ïmžÜóû0 “ü/ý@r©ä"9KÑ× Hb¡µ›«[ECÂ$È–ˆ q §›—hUszCn¿Ñ€ã¸l§‰¿%Èö¡ôzÒ¿nÃqÜÝÍÝÝÍ]Óh,$-ìý€ƒü ¤Àà@ú ¤Àà@ú ¤Àà@ú ¤Àà@ú ¤Àà@ú ¤ÀàÀOþè6’$³žgå¾ÍåñxšŽEg˜šš:985òj„cðõ`  ý붬çY¡Î;ÁK©.‘Hô,ûÙ³çÏ{5Öt, 3t[NnN`@ I’|>_Ó±è Ç=Ý<Óo§k:ÐHÿºM `F„¦Ñ%A`8FQ”¦ô¯ “U†aš4 Ò¿nÃ0Œ¢(Hÿ0lþu¤ÿJÀ(˜4Hÿº Fÿ•FÁ À€Aú×mþ+‡¢ û Üöä:wõ<†0ôeþ_Š@ 8vâdÄ„IÁ½Â š>kÎõÔ›’rrr÷8Èår)5$¹-ngϾýƒzöVT¢HÆíÛþÝ‚òó ¤Êo¦§ûw ë+¤åääúw ’»#Œþ†MDz]u355Õt£dôÿÓªÕ™wï п‘——˽v#uaäÒéS'ì×®“—»ïàÏa={r8• =~üäøÉ߯EŒönÚ„nN¶D.·as ýXª}~YYÙ›i:J.JJI?f|nãsAö0Hÿº Ã0’$eä¿oÞ\»‘µrE@§Ž$Ib´6zãÁC‡û÷é#uå›:ùµŒ[† ëù½µµ5I’rKäÚµ'ñÓ§$ïEú©—§gRr²Ç’‹.¥¤xyz>{þ¼šmÀဃÉÝ&ýK),*B9:Ô …AˆD"@Ö«g€'>ŸO×™·h B¨ßð.Á¡t ŸÏßµ'qèèˆà^a} ^¹ôEv¶då>ƒ†tVT"ëÞƒŸ;?aì$ï=þêxãfZ™Ä1ˆW¯_¿üçUP×@ñZœ>=Ìš· ¤wؘ‰“ï=x .¤×¢Ÿæ(<| éW4Òÿ7toòÉOÿnnæ+£Ö^½~½¼¼œ.ôòð˜?{–‰‰ ýt⸱¡K#7oXG—$î?pòÔ½zôX¹,rÊ„ oßþ· r™¢Ê²%RÊùüèÍ[ÆŒYßÑ!DÉ;E!ÔÎÏǰ«×®‹ “’S\]º4lH¯õûŸm‹ïØe颅înîKW¬¼™žNŸô°2jmÛ6­Ì™ÃãñVE­£ Ñ—/ RO!ñ€LþÃØØX¶PÉ̶Æ):öÏáp6­_·e{첕«ŒŒ<ÝÝ}|¼[µhþ]Ë–,‹®ãéîŽjæímmmEï£@(œ:iB¿°0úx……ùâeË ­¬¬d+Ë–HÙ{à`­ZµèŸqû6’;ù(„‰‰q§Ž’RR‚ºu¥Ë“/_ ")!$ :4~LÄÐÁƒ(ŠêìßI(8tx̨¡íÚ 2˜¢(‚ Ö¬ßPT\,Ù½}¹ýßÒ¿j¥¥¥šA!%§þ¹»ºÆoß–_Pp÷Þ½»÷î§¥§?ù[½zuWDFº»¹"„’D$!þÉ€YÓ (J ¾ÉÉ=sîBˆ¤(Š¢d+Ë–Hzšõì¿NïŠÝN’$¼cÿŸË»vé¼tŪ¢¢"KKËç/²srs»øçäæ!„^½z]\ü©y3ú„_›ÖÑ1[èFÛ¶þN("„,,ÌBtá×ô¯ ]þ ¤ÿoèÜÝà•¤‚ ‚0«]; S§.8Ž¿ÈÎ^±fíšõããúœ%W¿u;óð±cŸ<±0·hP¿~íÚµ¾V©,§DÂÆ-[û÷ ³·³åry!T^^ÎåòLM%®2ø²…Ö­Z™šš¦\½Ö³gÊ•+¼¼êÕ­›““‹úTR‚š2c¦Ôöy¼r„™™ÙçLOÊîS0úù ýÃÌÌLÓ!TŒ¢3ÿ>~â˜íìlBË/ª[·ŽäZ………!é}ÿv¸_üé‚ôò@úÿ†ÞŒþÝ]]ŒŒNÿ}fÚäIâB‚ >zdgkËáp¾žyÿeõœœ\@0°_c##‡ºs‚Te$¾mŽ‚ô¿ckŒøñã'OwÄïZ»j¥……¹deÉ-v˜»hqòå+ï?|èÜ©£¸ÅºuêXZX‰¯ üóôÿþÍÉi×¶dëteÇBEEŶ66¡´Œ E~Ý#0Hþ¿aaa![XRR¢é¸”QtêßøˆÑq »ßøÐ¾Ÿµ•UiiÙí;w’/_‰\8Ÿ®O'ËÔô '‡f>ÞÎÎ 8N̶؞=BI’̸}ûþƒ‡¡{têHÉL¤SJ'ÿé?wà§„›«‹µÕ7' ŠÐSåãÝÔÚÚ:6~ý@¼YŽ>,.a÷»÷¼<Ý_¼üçØ‰“³gL—\W¼)çõY,Vl||¿°Þ?Í~ùÁèä ÿ¾ann.[¨Íé_Ñuÿ$IöïÛgãº(„°½û®X³vWâ^.·q]”ÇŽtFžž-|}cwƯZ»Ž¢(s3³¨•ËËùå›¶lMælŒÙú1ÿãüÙ³Eˆüæ/À aGŽ ^‰5ß¾}+ùÔÑÑ‘~——G?¥Èåàà é—³ tð­[·–*´²²züø±vîµ×¼<¼è³ße±X,cccÇéo $IÒw¢—bÆf³Y,EQ\.—®obbB‰DB¡Ãá$ÉçóY,‡Ã¡ @¼q©EÕ”*711166ôîH.566622ÂqœÞ‘H$µ®ø)½ !‚ „B¡©©©ÜÙlöý‡÷»véªé4&ÿ¿!wò_«/üCI’ŠîL@'K%«ÓY_Iý²²2E‹Tn\eM©òòòòòòr¹Kù|>ŸÏW²®ø)A@\®hæF›ïå5Òÿ7ÌÌÌè!¦d¡H$*//Wçwqjüàoå@ ¤iæææÅÅÅR…¥¥¥þõ tÀÀAú—faa!›þóóóíìì4šŠ®ûÊÁä?ÀÀAú—fiiùæÍ©ÂwïÞ5jÔHӡɃ!Hÿ•=0pþ¥988<|øPªPö-“ÿ•£€ƒô/­~ýú²…ïÞ½Ót\ Aú¯è1€ƒô/M·Ò?Žã⟹Ót,:Ã0‚$Ø&lMé_šÜôŸ­é¸ä³±¶)(,°4·¤ïà[}ÔüzÁà·o~€Ñ/7,«¸¤XKnÜé_šÜôÿôéSMÇ%Ÿ«‹+B(ïmžšwà‘Kî‰ eTb›’O«²e aûò@v]L¢Ú·%Rl¬mÜ\Ý*Ýc ë ýKkРláû÷ïóóómmm54ÇÝÝÜÝÝÜ«¾)†~òGš™™™lù“'O4À HÿrøøøÈÞ¾}[ÓqÌ`8ý·oß~Þ¼yšÞ¯*ñöö–-¼r劦ã˜Ápú …¯_¿þå—_B‹/–ú•6]!û›¿¡[·nIý> £ªqòÿþýÆ Sô‹«Ú¬C‡²ç¢ …«W¯j:4€Œ¥ÙÂÔÔÔhz7+ÆÞÞ¾iÓ¦²åÇŽÓthKÿW®\ÉËË{õêUjjêÞ½{û÷ïOÿBîƒFU^^®é=­˜È^¼x1??_Ó¡UÅð俉‰IÆ CCCcccSSS‡ †ÊÌÌ\¼x±¦÷´b T«V-©B¡PxàÀM‡Tväø‘ðá•XSÍÁ;{öì?þXRRFjÉýV•ïBtttLLŒT¡••UZZš¹¹¹–ìI’Yϳrßæòx¼šiÑÔÔÔÉÁ©‘W#“ÿݑٴ­9½ÁT¿N gª=ý#„nß¾nbb’œœ\§N¤#éŸÇãõèÑãÙ³gRåC† Ù¼y³£££¦ÃG¡'YOBnFF5tG‘Hô,û g5öj\!i[szƒ©~3œ@ÏÔDÎøî»ï<8|øð… îÝ»WÓ»¬.SSÓÝ»w0àãÇ’åG}ûöíåË—5 Båäæ’$Yc×Xâ8îéæ™~;½fBÒ¶æôSýf8=€ž©¡ùºöíÛïÙ³çÂ… §OŸÖô.W€§§ço¿ýÖ°aC©rí¹@(À0Œ ª¦AR¤’Ÿàc6$mkNo0Õo†Óc虚;\×µk×E‹-]ºT·îàáá‘””4~üxúBíÄHæSS ‡¤Íé è1 Vž­3eÊ”F­[·NÓ{]1µjÕZ¹rå­[·V¬XѵkWmûÝ¿þ¦( ©jÁ´°9½ÁH¿T Ojô1 Û¼ys×®]uè 1› &L˜0!TZZªép>£ïNX“ß0 SþyÏlHÚÖœÞ`ªß §ÇÐ35}­Ž££ãÂ… 5½×U%÷5Ã0¦æ½ÕD’$¢’O|fCÒ¶æ*çÜ… ÍÛøÝÊÌ”*?rôXó6~ÿ¾É‘»ÖõÔÔæmüÞ½¯Íïœjê1@u«ÑÑ?môèÑšÞk½B k: M†Tó=Ÿÿ1ëùS¹ç̳ÙìF^Mlm¾9BÔÙßßÔÔôü…¤Ö­ZI–_LNnܨ‘sƒúr[ñnÒ$nÛk++½é7€öÐ@ú—ý5Piâ1\ ·¨d°ÇlHÚÖ-ëùSï¦Í,-,e=zò¨C»Ž’…'°sÀÅK—ΛƒãŸ§ÜŠŠŠ2ïÜ>e²¢V¬¬¬:¶oÏÈ~U_¿©Ùcm7êÒmú|W‘OŸJ._½úÇéÿ­Û¸éȱãåååUŸïEHél¼ªtº9ŸÏ—Ìý—¯$‹[ZZñùr~áâûü‚‚Û™wÄ%)W®’$Ô!´ïàÏ¡a}ZwèÔopøÙóè R“ÿGOœèÕo@ÛŽþ‡;wá‚x;ÇOþÖ»ÿ€¶ý™rEÝ¥d°ßÔé1€¶ô¯Û”Á}òôé‹ììÎþþ}{÷šóãŒÔ›iSœUVVöîýûØø]\.¯Ÿõ$IRê Ç¡mÍÉu3-Ueöíü,-,ÎJ¤í¤”ï&Mê;9ý|øÈÖØÝ׬ø©‘—ç‚%‘7Ó¥ï¢óëñk7lìàµj¥w“& –,͸u›._·qSP·n«W,÷ôpŸ5oþÕë7ªòÎy÷þ}hXßYóHòùü¡£"FŸ(é1€ÆAú×mʓ߶;>~üÇéÓ"‘ÇñááCž¿x‘¸7ïíÛK))…E…•N“•IÒó/j¦9’$wïÝ·cWBüî=êÜè¦:^)##£ n]“’SH’Dq¹¼›iéÁAÝ…Báž}û‡ bh¸’noèHÿ:SvùÖŠ¥‘÷ŽãCÃÐoò3è’Ýq±,–‹ÅR´JUšûº‰Çª+«ê6›]\\diiE?¥Њ‹‹Øl…iÅ!š1%IDATƒï¦M;7hpôø‰æÍšÕ­S!dllõ¡ÒÍé Eý–š–~)%eôÈövvâ òñöÞµ'ñÃÇÛcè8ö¯ó}þ:9:6¨_¿Š·÷QÔ¢ò¹^Õ9!ÇÅ7§£ªv*¾Êæ(Šòòô>ÄÅÙYùIìê4§7äö[‡v~—/œB‰Ó3E"ѶMÑ8Žóx<ÙU §ÇÐ'þu›’¸¤Î°còt«ÎÙˆ,ëÒÙ¿éÇeee*“w›C‰D¢ˆ‘#Ôù2d ÃYEý&‰$o8(ÆãñmÊ@z =é_·©yƒ}f©Ù«’ÜS}Í!„Ô¼ÖÑ@2ƒïé1ô ¤Ý¦æØ—YjŒ×Ëæôƒýf =€žSÿt}ëÖ¦r6^›Ó ö›ôzFÿ:OÛ&ÿIÛšÓ0ù€!ƒô¯Û`ò&ÿ+&ÿ0pþu¦Ñ¿Škç˜I»šÓÌõ›¡ôúÒ¿nƒÑ?Œþ+Fÿ8Hÿ:OÛÒ?ã!i[szÒ?† Ò¿nÃqœ¾·O}cFÛ„]3!i[szƒ©~3œ@Ï@ú×m6Ö6…–æ–ôÝs•ú”Wô¡O—+I ,«¸¤ØÁÁ¡r!‰·,÷Þ±²…ÚÖœÞP§ßÔé4Ãé1ô ¤ÝæêâŠÊ{›'y‡v1úÚnñ¥.õ—`_H/E_+ ‰…6Ö6n®n “ [".Ä1œnN\¢UÍé ¹ýFwŽã²&þ– Û‡ÒcèìÈñ#áÃ+±æÛ·o+ݪ–Œô`€J€»þÒ?`p úØ?Là0L0ú NåGÿ0ttŒþƒé08þƒé08þƒé08þƒé08þƒé08þƒé08þƒé08þƒé08þƒSùô=5µy¿wïßË-ÿ˜ŸÏH|UÜšò eË+½A@‡Àè08þƒS½éÿøÉßz÷ж£ÿàá#S®\—ó‚­±;zöíß¶£ç fÎÊzþœ^DQTüî=ÝzôlÛ)`ꌙÿ½{§rƒô„ü£Ç#&L6zŒl/ÿy1ab›Žþß÷éwòÔ)Ù ûþÖ§u‡Ný‡Ÿ=ArÑÑ'zõж£ÿÀ¡ÃÎ]øfŸÏ;qr¿ÁáEÅÅÕÚ³ªšþËË˹\žäŸ/ ýzü囂ºu[½b¹§‡û¬yó¯^¿A/ŠÝÿË‘_ûôîµ>jÍÓ¦¾ÉÉöã,zÑC¿ìLØÝ­K—U?-­]»Ö†M1â¶”l!´buTófÍfL›"äüÅ‹}š6]½|Y#/¯•kÖ^¾zUréχlÝÑ=0pÍŠŸyy.Xy3=]ÜâÚ »øG­Zéݤɂ%K3nݦ1gᢷÿý—°#ÖÊÒRÓ¯#PFU\?lÀ ¹å"‘hgÂîi“&Ž îÞM ÆïÞãß±Bˆ_Ο9ý‡aáCèÊVV–³æ-(((43«½wÿ}û.^0!ܽû˜‰“îܽ§rƒ¡~}†,7˜ïCBæÎšIopô¸ »÷î›2q½H(îÙ·ØÁt…  ùù {ö¶kÛ– ˆøÝ{ ¤uïøâå?§ÏœEQ¹|Å“'O÷íN°··Óô‹TLUÓLôzk+kÉ’nÚº-ûåË¢¢¢6­[s¹<º¼SÇö+׬%IÇq:»S•ŸŸÿêõ¿§ÿ>‹")2'7¯øÓ§Þ=¿§WÁ0¬gh(þ•l~ê×¶¢ {„†|Ýà÷¡›b¶RE—äæå…‰+‡mܲ!ôâåËÂÂÂP‰E ;¶_¹v}aäÒõ7_JIéìïïÜ ¾_< rªšþ½›6­[§Žd —ÇEB3Vª>—Ë533»•™¹gßþ{÷ï[ZZº4lX»V-ziAaBÈÎÎV\ßÎîóØZÉéµk×V¤­ø±½=_ (++£Ÿ~ü˜²±þú ÆÖÖ–Çã•––ÓOÅ‹j×®maaŽºÿàÁÄñãö$ÞLOo×¶mu½8@õ¨júW¤N{„ÐÚU+êÕ“,çp8ùS§ÿØóûë׬¶´°@]OM½x)!dog‡úø1¿AýÏ£êü/Wü+Ù Ê`ò $7X«–©™™ý”þªQPXøµBA›Í633£gõ ‹Ä‹þ}“óàá#„Ц ëš7kv#õæ†M1Çb±XÕ÷ Œ«®3ÿ­,-KJKZ¶hNÿe=~îÂ##£W¯_ó‚‘Æҹ!t;óýÀÑÁÁÊÊêô™3âíœ9w^åU#>™Ÿ¢¨¿þ÷wófÍ$ã´´°8'q¶ÿÙóç½›6AÕwr²´°8ñ¢xÑòU«ú!äP¯†a çÎyùÏ?GŸ¨î `Vuþ'Œ»aSÌ»wï½›6yšõ,qÿe‹!„Ü]]MMM׬ß0dà‚ ¯Ý¸AŸN;33$(hôˆá[cw±XßµjyñRÊ¿oިܠr†Ñßšy7={þÂý‡÷îŠç•óÄ›3zÔÖØ8‹åë㔜rëvæî¸ô¢ñc"b¶Ç" káë›zófæÝ»£†;pèzÝf>Þ½{~—°ûûÐ+++;€úª+ý#„F ‰DGŸøùð‘úNN‘ ô ë²²²Úº)zëö‘ËWZ[Y…õêyìð¡c/¥\ Š9¢¼¼üä©?~ÿã϶mÛ¬_³zÌÄIÊ7¨†a;¶lY½ný¯ÇŽ;:8¬_³ªUË×SSÅ"FމD'?uä豆Î΢ִiý½häða"‚8vòä±ã'6tÞµ¦víZâôúñ‡iI—’·Çí\ªÆ@K`GŽ ®é0Psি€ÁôHÿ€ÁôHÿ€Á©Ø…$If=ÏÊ}›Ëãñ49¨Q¦¦¦NN¼á˜ü¯Œš}oh*<­m·Ò˜ ¸ú"0¢bþ=Éz‚òpóPç^{@ŸˆD¢gÙÏX8«±Wc¹4ûÞÐTxZÛn¥1põE`DÅþ…çäæ’$Éçó59¨Q8Ž{ºy¦ßNWTA³ï M…§µíVSW_„FT,ý „ ÂÐtØ ¦á˜ø‡’eiö½¡©ð´¶ÝJc*àê‹ÀˆÊÌïÁ?i„a˜:Õ4õÞÐTxZÞn¥U=àêŽPEKÿ†Qéß@)}Ù5ÿÞÐTxZÙn¥10|N Å*<ú‡ôo°0JÅxN³ï M…§µíVSW_„€ªƒÑ?¨Jñ€NÞš O Û­4f®ŽŒ€ôÔEQÊ>Ì5þÞÐTx ¶KŸp‡aŽ«¾V^y»•Æ`GUS„FT0ý# )8-H(žúó¯¿ÏÏ{û–Ãf7tv<¨C;?Mï ºº+Ztåâù´ŒŒy‹–œŒ7¡I£F1ÑëÅ…`ôø‰&&&{vî066®™Œ`lôÿÓªÕ™wï п‘——˽v#uaäÒéS'ì×OÓû¨ñ‡ÚÓ¬g»ö$®\innN—PEêYYYR•“—»ïàÏa={r8$q†³òxºÚOK[YY"„H’zóæÍþC¿|Ì_³a=ªARñ«éóë^©a.½ïË#[ZZJ–[YZ)©¢»ÝÒ‚¢¨\:ì^=96³áIùïÝ»“§þðmæЩSµv‹‘Hôõ1!R¾ŠÊv+MQÀuìí§O²~ã¦3ç·Ñ…{öíÿïÝ»Äø8###©Uª/B#*œþI’”ýhø÷Í›k7R£V®èÔ‘$I ÃBƒƒÖFo}tâ ïZ¶¤Ð°¾>Íăr’$ÍÍÍ¿kÙRjßéÇâÿªü¼Fùúøˆ' Ú¶þÎÄÄ$:f Ç«P&fJE'xU~¿‘ûÞ¯ØÌÇÇÞÎNª\I}„’ng0<)ñ»I’ÜwðçvmÛÊÑVS»êôŒúíVš¢€)ŠêÕ#ôRrJÜ®¿6­­¬¬ž=qìäocFtuqQþ:´PÅnÇ-H),*B9:Ô …AˆD"@Ö«g€'>ŸŸ–‘Ñ%8ôý‡teúi~Aýàå?ÿL›9;¨gïácÏ]¼(YGÉ¢'YYÓgÏ™üà ºðÓ§‡GŒ î6~ÊÔë7RéÂÙÙóGöî?°Wÿ –D¾y“£¨¢(â Š¤B$I~-¡¨›éé݃é] ç±û ï*ßPŸ?±åG"®FR_7+‰LMM1 )YQI?(oŽÏçïÚ“8ttDp¯°>ƒ/ˆ\ú";›^$¿’>‘«¢ï ñ*’]J£Ó EQ$IîÿùPÿðaÁ½Âæ/Ž|÷þ=BH~·þ6SáI:xè—äË—B/ÿyµiË6úÕWGÛ•ÝHÛ­4%‹D¢…sç…Âñ "‘(:f‹‡»ûˆ¡áâ×±f"0¢‚éÉÿhðps³°0_µöêõëåååt¡—‡ÇüÙ³LLL裉èË'šø)ý`þ’HŸ¦M–.Zèáî¶vÃÆÌ;wÅu”,Ú³µ™·÷ä ã)ŠúýÏ¿¶ÇÅw ì²tÑBw7÷¥+VÞLO/++›»p1ŸÏŸ;kæÜ™3ó ~Z½Zn¡Ü,êÛ_É]˜8n,BhÅÒÈÍÖ}­OQŠ"‘Ül9¯œËår¹Ü²²²g/^üzüD·À@6›­hE%ý ¼¹ÄýNžú£W+—EN™0áíÛÿD.£IůfŸ¨üWôÞøºïåå\.OòO(ÒKž8¹ÿçC]üý#ί]»Öö¸xºK%¬Èv;ƒáÑý°~ãæ½¯röÂ…ù‹#óóó•¯XÅvån§¢õ¤<`ëi“']¸tiùê5¯^¿^<^ÍG`3Çþ9Φõë¶l]¶rµ‘‘‘§»»w«Í¿kÙ’ÅbÑ#_ñŠ_Ÿ" !ЩÓÔI)ŠêìßiÚÌY‡ŽüÚ¢¹¯ÊE½{~ß/¬7I’àÀ¡CãÇD <ˆ®) :vìñ“'æ êׯ]»–¢ø-,,T÷Éç>¨Ò0Wrߍ(ª¨¸!dii!¹’ÍInVùÀ´*áÑ9^òô{‚ ÊËË‘*Lþ¥êhçè!—°›W^>kÆô˜mÛ/$]êÞ5°†#0‚™3ÿ>~¸‹?}B ùuëÔùü8?ŸÍfתUKå"ñÖlmlBË/ª[·ŽdH&&&n..kV,‰D÷>LÜ`ÉOËíK”[(»§r?•ä!Š¢EÂf³Å5¥¯NŽŽB¡Ð”ÃV´¢’~PÒ\Aaá¢e?wë¶rÙRs33Š¢ÒÒ3._½&7~Š¢Ôï“J¼7Ä Üéùø1_rQ5¤ÿÊ_Å:ê´»eû¡H˜ýò¥¸äȱãIÉ)õê^•Ø*AyÀiéç/&Í›=«GpÐíÌ̸„„¾¾¶¶65!€Ìœùïîêjddtúï3’…A<|ôÈÎÖ–zÓåi}L¹|•.'IòbrŠ—§¥Æ"ñÉQuëÔ±´°(**òòð ÿž>Í:1éå«Wá#Gáëã3 _ß÷>-p9|X\Âîwï?xyº¿xùϱ'gϘ^ßÉI ®Ý¸)¸[7.—ûë‰ÞM›z¸»ËJŽÎ‘‚ëø%¥oÈššžáäàÐÌÇ[¼HQ$â J†M3a› „JËÊ­¨¤”4çìÜ€ÃáÄl‹íÙ#”$Ɍ۷ï?xˆº÷àa@§ŽRñËí(©>‘섊¾7Ä+Þ»_|'%±Ö­Zá8>dà€„Ä½,÷ñnzíÆÍܼ<$“òé°o¦¥;::øúø(j¥á)Úˆ:õi×»I“Ý;w,^úÓƒGè’®]º,š7‡¢(%×Õ‰­r¼cWBiIÉÜY?Ò‡HÌÍÌ&·yÛös“‚»u­ÉUÇ̱Š¢ú÷íãææzâ·S{÷,-+333kÚ¤ñÆuQͼ½ ‚˜?{Vâƒc¶¶iýÝüÙ³§Íœ%ÞÌÊe‘?ÿräÏÓÿ³··[8oN‹æ¾âSÞ”,’ £oï^"‘èÔŸýöÇŽ³œÜ­›H$ŠZñÓŽ] ·låpØßµl9yüxccÙB™Ÿôö¥ yz¶ðõÝ_ËÔô衃’‹E¢h³Ž¡›éé#††Ë]QI?(Ùqs3³¨•ËwíIÜ´e«…¥EH÷ §M<ãÇÔ›iþ;HůNŸHôN…ßèKX¿)FvÑ™?~G ì×—Ïçÿõ÷™³ç/´lÙbÙâE3æÌ•JÿŸÃŽßE‡Í`x²¡*zªxµ*µK„±‘ѪåËÆMž’Ÿ_дIãEóæHž…P‰v+MQÀ7Ó3.¥¤L;ÆÞÎŽþRBQThpÐù¤K»ö$¶lî+ubGõE`väø‘ðájÖ¾vãš—‡—ø,t),ËØØÇqú„$Iú.@!###„AB¡ÐÔÔ”ËåfÞ¹»dùŠ_öíup¨Çb±èúô§Þ»÷-b±X‡ËåJ~Bá8.U“އnW P%·Pj/d·/Yˆa›Íf±XEq¹\©úr#Q´Y ÃjÕª%„B¡Ü•ôƒ’§›311¡¯›‰DB¡Ãá$Éçó¥âWÔQ²¯/›Í¾ÿð~×.rÆyÊßô¾Ë]«¬¬Œ~`bbB_jHïÝW8Ž+êvÓtçÞ½%?­ =j@¿¾*ÿQ0Ò.ýf8wñâ–í;vl¯ïäTÅv+MQÀô‹H¿W%Ë9ŽãôÑ¢š‰Àˆ ÿäI’Š&$én¹‹äÕS%%%!’¢B"B$ûi®l‘¼Vø|>ŸÏW§¦’ Õ_K2*©Er#QÒ.Ý wAq?T´9q¢•Š_>WS²TÉ{CíKcO×§¿,* ›©ð$Ñ÷|üüXÕ6l—Ö=00ãÖíúNNUo·Ò¬èETò¢TS„Fhô•Ü-_½éë?mêå1hÅþV9<僚b·Ó'¬ÙÙÚVýØE»eáÜ9ŠnlP¡v+áüh+¦„ªK¹àD{úAyÚþ«ŽãNŽôA5/ÔT·TÓf™MÿÚð¾ÈÅÌuÿ•Óªe‹Kgÿ.--•Ý ’EE«úAÅ,7£ï †§æà[ãÝR]“ÿÌ “ÿh³ ^ø‡©;$R‡P(TtHXÉ"ƒ¢Uý âugô½¡Cáii»•Æ\ÀÚð ˆæ'ÿ®P9ÌÕì{CSáig»•Æ`À0ú@›1sÛ`¹¯Žþ…§µíVeË0ú@ïU,ýã8þågîà¶aÁ0Œ ¶ [Q;74žÖ¶[iL\}Q±ôocmSPX`inIß"FkUñ“K³_n”\¡Á¨X,VqI±ƒƒƒ¢ zoTèæzâ{ÿUkxR·û•]*7­m·Ò”¬èµ³ú"0¢béßÕÅ!”÷6¯ÎG£/¾ªP©•[¨b$rËk * aôÿI—|}‚É]M~ýo)acmãæê¦h©Ê÷½ãâÿÊí(©¥²]‡!éÿU1<ÉÅÍIJfÁ/•>¢ÍíVšÜ€éÀèz~’Dœ˜„jÀˆŠÝôz@«çðP ýÒ?`p ýÒ?`p ýÒ?`p ý§bwý#I2ëyVîÛ\§éÈ Ž©©©“ƒS#¯F8&ÿK›f_M…§µíê(¦ºK_û½Q±»þ=Éz‚òpó02ªðO‚*‰DϲŸ±pVc¯Ær+höÕÑTxZÛ®Žbª»ôµÐûž“›H’$ŸÏ×täÇqO7ÏôÛéŠ*höÕÑTxZÛ®Žbª»ôµÐKÿ¡Ã0ú÷@A #Ã1%?|§ÙWGSáim»:Š©îÒ×þ@oTf~þIk„š?¨©WGSáiy»:ªêÝ¥ßý€¨XúÇ0Lуš ´ã5ÿêh*<­lWG1Ù]úØ?è þ!ýkF©QiöÕÑTxZÛ®Žbª»ôµÐ0ú×1”â!•6¼:š O ÛÕQÌv—þõzÒ¿.¡(e§u4ƒíÒ§¼a†ãª¯VWÞ®ŽbðeÒËþ@oT0ý# )8-H(žúó¯¿ÏÏ{û–Ãf7tv<¨C;¿Û’$ÿüßÿþ>{þÕëׯÆF õïØ9 Æ¨ʆ¹Š_´ŒŒy‹–È–·oç·~õ*Eõ?öë‹ììy‹–œüõ°½]NnÞ…¤¤ðAƒLM9̆'k{ÜΦLVÿô1FÚ=vâdlü.úñ–è ­Z¶¨J»:JQw½ÿðaÔ¸ M5Љ^/.£ÇO411Ù³s‡±±±!ôzƒ±ÑÿO«VgÞ½7x@ÿF^^\.÷ÚÔ…‘K§O<°_¿šÙ“e+W¥ßº=¨¿1#G”–•]¹ví§U«ß¿Ÿ8xà€š  º}îùJ sé<º:Uk·H‰D_"嫨lWG)ê®:ööÓ§NY¿qÓ™sçCƒƒèÂ=ûöÿ÷î]b|œ‘‘‘Ô*úÚ?è §’$e?þ}óæÚÔ¨•+:u$IðÐà µÑ:Ü¿OŸ¸èüŤë©7wïÜáåá! zs̮Ľ¡!Áæff5Ù§ÕGyBRôêˆWlæãcog'U®¤>BÈÜÜü»–-¥6«(ŒJ‡'%~w"I’ûþÜ®m[¹cÊjjWžQ¿]¥¨»(ŠêÕ#ôRrJÜ®¿6­­¬¬ž=qìäocFtuqQþ.h¡ŠÝŽ[<2RXT„rt¨' ‚‰D ¬WÏÿN|>_\íÔŸ =&¸WØØI“/¥\—9zlȈQAß÷=~bRr ]˜–‘Ñ%8ôIVÖôÙs&ÿ0ƒ.üãôéácƒ{…Ÿ2õúTñŽž8äæâ"@øàAßµlùòŸT¶ò&'çǹó‚{…?áî½û?™0uZPÏÞ#ǎϸu[\íå?ÿL›9;¨gïácÏ]¼(Ùr7þ";{þâÈÞýöê?`Á’È7orÄõåîˆÜ]–UÑWG¼ I’Ä·èzŠ¢H’Üÿó¡þáÂ{…Í_ùîý{„EQ7ÓÓº¿ÿð¢(úðA¿Áá]‚C)Å*ž¤ƒ‡~I¾|!ôòŸW›¶l#BµªÞ®ìFªØ®ŽRÒ]"‘háÜ9B¡pG|‚H$ŠŽÙâáî>bh¸ø]dý€Þ¨ð±¹ÿ¤=ÜÜ,,ÌWF­9¢Íwß±Ùl„—‡ÇüÙ³„B!]ÿÔ_§·Çí~\4oŽME›S¿]¹ 6u)ï.ëi“'EÇlá•ó^½~½;n‡aöz€™cÿgÓúu[¶Ç.[¹ÚÈÈÈÓÝÝÇÇ»U‹æßµlÉb±BA<ôKÿ¾}¦Nœ@Q”ÇŽÿ¼zuáÒ%ï¦M~9zlPÿ~ty—ÿ‚‚ŸÿÚªE ú°aïžß÷ ëM’¤@ 8pèÐø1C¢(ª³'¡PxàÐá¶­[ÿ÷îBÈÞÞNvô&B"‘Hy+áƒö ¦Ç7Q¢—Lܽ›øiqñ'ºZ@§NS'M¤[Ÿ6sÖ¡#¿¶hî«hãã"Fo›9ùA„P}'§?NŸ …!E;"µËRßf³ÜÊÓÿȱã¥ÊÇGŒ:d°P(Ÿ>•Ð5ýÚ´ŽŽÙB¢(„‹ÅRôq£²_z‘¥¥BÈ×Ç[ò©ˆÑÕºué"ÞBp·nq »)ŠR´ñNNgó¶íúömÞÌÇÍÕeîÌ…BaöË—ŠvDj—eQ•=Ç.ŒZ¹ÜÊÒJ²œþΔ›÷öSIIp÷nô·%„PP×®²éŸ¾(Ž>jÀlx´y³fâ8ž–‘1wábºdè Ã‡†‹¿Æ)RÅv¥zIüX­ô¯w Newçäæ"„²ž=“û-P¿û½ÁXú§³‚YíÚ:u ÀqüEvöŠ5k׬ßWRZ‚¢O §ë³p܈Í.((DIN&[YY–———––ÒIÍ6¡•”–"„¦Ì˜)Õ.—˵³³Cåå½u¨WOjé®Ä½® Ö«[Wy+âß&¡Hú).ù”¢(ºš……¹x ÖÖÖôí‹ÅÚ¶y㟭ŒZKDËÍ'ïÒÐYÉŽHí²¬*sÝÝÜìlm¥6HQTQqBÈÒÒBrï$›“ܬò¡aUÂOÕH¾©ÊËË‘*LþegªÒ®ŽRÙ]q »yåå³fLÙ¶ýBÒ¥î] ªÐÌœùÿðñã¹ ÇoßêÒ°¡x@àÜ AÄÈ+ÖDq¹\[k„PaaQÝ:uè¥yoß~úTbcc*(,—ç²ÙìÚµkÓOÅŸD¶66¡e‹Õ­[G²iº²sƒ—¯^“ºP;'7÷Äo¿Ñ´Ic5[QôôËZ_·ŸÏf³kÕª¥hjÕªåæâ²fÅr‘HtÿáÃÄý–ü´üоD%;"·uI*óœòSÜ Üé>~Ì—Ü;T é¿rgàW±Ž:ínÙ¾C(f¿|).9rìxRrŠC½z#††W%6£¼»ÒÒ3Î_Lš7{Và Û™™q -|}mm埙¡—ý€Þ`æÌwWW##£ÓŸ‘,$âá£Gv¶¶§^½ºææ—¯^/Ý´uÛ‰ßOÕ­SÇÂÜ<åÊ×òäË—yy’$ùyÞðKyÝ:u,-,ŠŠŠ¼<<è¿§O³Î_LÂqœ$ÉAýû»p!-ã–x;ô•c8Žwöï¤~+ Ÿ" !”rùªxã“S¼<=èÀänüÙ‹á#Gáëã3 _ß÷>ðx<%;"ݺ\jÜÝVþzHá¶ëØÛ[ZZ^LN—\J¹Œd}åÑU:<ÙP•Ìx»AÝ»>xøèå?¯ÄkÝ»ÿàMNn`çΕnWG)é®’’Ò˜Ø-|}Cºw …3¦M%2&6Ö ú½ÁÌOþp8œñ£ãv¿ÿð¡};?k+«ÒÒ²Ûwî$_¾¹p>EQ†6tgÂn ¡¦gÞ¹óðÑãk£p6dð®Ä½†5öòº‘zóÞý›7¬“H6ŸÇ8Ž>,.a÷»÷¼<Ý_¼üçØ‰“³gL§—†ݸ™¶låªÎþ|š6åòx©iiOžf>¬Ž½=EQj¶"™ádŸž9gá<=¯\»þðÑ£ kVS¥hê;9 „µ7wëÆår=q»iSzˆ¯hG¤‚‘Ûù•xuÄ+Þ»ßÜÜ\jQëV­p2p@Bâ^Žûx7½vãfn^’Iùô}po¦¥;::øúø0ž¢¨SŸ‘v½›4Ù½sÇâ¥?=xôˆ.éڥˢys(ŠRrx[Øt‘¢îÚ±+¡´¤dî¬é4æff“ÇÛ¼mû¹‹IÁݺNÿ ˜9öOQTÿ¾}ÜÜ\Oüvjïþƒ¥eefffM›4Þ¸.ª™·7ýaÑ/¬7A§þüëôßgê;9-\ÜÌÇ› ˆýúŠâÏÿýïÏÓÿ£Ë½›4Ÿ'Ù\ßÞ½D"Ñ©?ÿúí?fÿ8=¸[7zã"‘hå²È¿þ>sæÜùÔ›iÃ\]\ϟ׵Kgú4:5[Qü!„V.‹üù—#žþŸ½½ÝÂysZ4÷¥çÒmŸ¯f¹Ü­)ÚB¥—Jµ¢è)IQ!!’›ö*´ •«/® d©’WGå–BRçØÓõ ‚\QÑîW1eÌÎÖ¶êÇþ+Ú- çÎQtcƒ µ«£þÁ_€¶‚ô_ßwåhüÕa$<Çè#8j^(¨©nÑøû¡:0›þõ¯ÐÌ\÷¯÷Zµlqéìߥ¥¥šÝw³Üš~u˜ OÍÁ·Æ»E/'·ì.½ìôF/üÃÔé¡P¨Î¹cÕMEÏkúÕÑTxZÚ®Žb®»ô³Ð0ù¯KTs5ûêh*<ílWG1Ø]zÙ?è fnûj#÷ÕÑ¿ð´¶]§þ`*–þq§ËÂ?욇aAl¶¢ š}u4žÖ¶«£˜ê.}íôFÅÒ¿µMAa¥¹%}+›VÑÏ£jÍ‚ro}X­»Ïb±ŠKŠU¨Ð«S¡›ë‰ïýW­áIÝîWv©Ü´¶]¥¼»½d{I_û½Q±ôïêâŠÊ{›Çàypô%^ÊË=®J+R%Jš¨h‹Â&ñX¶T¢ªl5%l¬mÜ\Ý-UùêÐ;"þ¯Ü>‘Z*Û’þ_ÓlQÜœd¡dúRés ÚܮޒÛ]t·Ð7ôü¦C$z “ Çý€Þ¨ØM 40‡Í‚ôHÿ€ÁôHÿ€ÁôHÿ€ÁôHÿ€ÁôHÿ€Áù?ô…(gV,%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/undo.png0000644000000000000000000000013213135434036016401 xustar0030 mtime=1500919838.116648472 30 atime=1500919915.469981805 30 ctime=1500919913.383315139 denemo-2.2.0/docs/images/undo.png0000644000175000017500000000150013135434036020246 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR$s?LagAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<óPLTEïïïîîîíííìììêêêçççéééèèèÞÞÞãããïåºÓÓÓÚÚÚâââëëëïçÁîÖ€fff¿¿¿äääïä¶Õ·]²•DàààѰQ|||À¯sÀ HÕÕÕååå˜kÑ” à·LÙÃtwwwÙÙÙÜÜÜdÕ±“?ØØØß·JÌ·mÍÍÍááá×××»»»ooo¸‚ Ù§.ÊÊÊÆÆÆÈÈÈtttÑÑÑÔÔÔÒÒÒצ,DzjÝÝÝÔ±P£’V\\\æææ›››âËy¤¤¤ßßßÉ´k~J®œ\–†OÇÇÇÐÐПŸŸËËËÏÏÏÖÖÖÿÿÿ4цbKGDPãnL¼ pHYs  šœIDAT8ËÍÓWS„0`’p`b 6@;XV]˪ػÿÿßHß<9ãyþ&÷Þ™Ãøï!„ôÊ%}ƬSf¶cu©Ê 0t=K¶Ž¬Ì”0=ã[’´šYUfn ×+*0PM±dsÝb„aYýf«E5H†ˆâ:kjI¨HO±Ù¨-µa ¨n'o§TåuQ¼»‡ýT;YYއ8:V¹œm '§gˆK”hï«U‚ñù.¯Ú^ª•c§×7·ú%xáßáãGÑ‚ª>‰OÏåŽÙÚB%^^ñöžòŽÂù|~%¾ÙU*YLòo×]-&T„Yöu˜J!dßoøãü*E3. çtEXtCommentCreated with The GIMPïd%n%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/ExternalsPref.png0000644000000000000000000000013213135434036020216 xustar0030 mtime=1500919838.093315139 30 atime=1500919915.469981805 30 ctime=1500919913.339981805 denemo-2.2.0/docs/images/ExternalsPref.png0000644000175000017500000012122113135434036022066 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR¹üÓægAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>€IDATxÚìÝwXÓÚð“–¶”Õ²TDPE–ƒ)âFÜ{oW¯[ÜþÜ{ï½÷Þzõêu'âqo‘-P:óû#ZkiC ê÷óðð´iròž“¤}{r’Ráá7¯ß ífbb¢T*hš&ðÇ£(Š¢8I†‘wEo¥\ibb¢PÈ :*(,hš¦i¥@ àZ[[5jÔˆ™RÐQ@¡cD177OOO+èH@‡äääÕ«×ìÛ·oÆŒé!!!ü‰Œ!J¥² ÃøÍýõW¯sçÎøs¹F©©©¬S'Ø'L˜Ð±c§5ª;99s¹FJ¥¢ «¢ÛÀÿý÷x`` EQJ¥ÂÒÒ*,lp™2e :.ÈÔ‚óû÷ “I :€ßœ‹K™ðððÒ¥KŸ={¶gÏžwïÞár¹ì‹(•Ê€€€ƒ•*U’ЦU*•ª ë‘}iš>}úô AƒvîÜáêêZÐq@^qÓ¯@ÓøÃþ~ì!„i¦ÄÃÝM&“I$™óæÎ ¨|þÜùº!u.XHh:æQL÷î=Zµj}ðÀABÓýûHNN©U«V“&M• ùÃ5_ÍvñU+WU®¸xÑâλT¨P±_¿~„¦S’“ÃÂÂþ7ú:t¼võ*›Ö‚„¦×®]Û®]»^õêоCN+˜)ɨTåïÞ½ç͛ϡ8–u¶6T ¬²dÉ’:V¬Xiú´é»wínÛ¶]ùò,XÀ,òâùóÞ½z<¸[h·'±±¿•ñ‡¿ßñZ°`~¯^½iºð~Yø=”)SöâÅ‹FFFK—.½råJDDDzzš‹K™æÍ›+•JŸîÝ»5lØhÑ¢…b±epppTÔMš¦Ë”)îââ¢P(êÕ«—õÕlß¾}{Ù²eŽ=:eÊÔŒ?ÞÁÁaذ¡*TìÔ©SXØ`…BÑ¢EKÍããã+W'&&ê|5ÛÅK–,immݾ}‡É“§$$$œ={vëÖ-J¥òÂ…óVVÖr¹\ׂâòåË·k×®oß>3fLW©T†_'EÓ_.ª¢išËår¹ÜäädCø:g³··71Ö¯_oÉ’%...iiŸ7n¼jÕ*##Þû÷ïïÞ½\G.—ùùùÝ¿_"Éäóy½~7_Æ6r¹œ‚Žà÷ÇôÐ4­T*3ÒÓ ­î·ÏT©”iŸS !111"Ñ×ásê—%i"ÍÌÔ÷j¶‹«”*.çË™LöùsšB.çóxÌ YKNMIÞºeË‘þY±bÅ?ÿݵs‡º õê7`üwâ¸îJÒ„©×ë7Ê—/OÍùwIe,³q(êëc¥—Cáp8J…’Âårr9ó2EQ!¸ }¯@38þð‡¿öÇøüùsjjJzzšR¥TOdf°±µµ··_¾|ybbBxø¥çÏŸ)¿v§gûª!30æÏŸ÷éSZzúÕk×u.øôÙ³´k×vöìÙoÞ¼153S×âĉã—/_¾|ù²™¹…Î Ò„¨húÌÙs[¶n5j”B¡400gÓ|lemU¶lÙ .ЄDDFzxxX[[ø†Æþ~¿?n½zõ<=<Œ² y1~„û÷|øðA$•°·g&®[·>"""55ÕÃÃÝÌÔ”¢¨òå½V­^½lÙ²¤¤äº!u7¬ßyåJbbb¥JMML´^ݼy3ûâ[·l½|ùr|||­Z5/Z|ãæÍŒŒŒaÆ>}zîܹ§N*ãââééAÓ´Ö‚*¥rùŠ•§OŸ¾páÂÿF.[¶¬Tš©®‹L*eþ4+88lÈ“'O?~|ðà­[·=}útÆôéÞ>Þ$Kù: ®íåé©s¶:u‚§Nû$##£b…òÓgÌ|òä‰P(¬PÞËßÏùŠÎ_¸}{æÌÖÖ62P _P ÌïÞ­[A‡ðû311å r¹Lš)UßR]`l,šÈd²LI3|ÁÈÈÈÄÄ”âpär¹$#] 06 Õ3h½ÊØgfËdééiÆB¡±±P&“fJ$&¦f\.W¥RI33™K¦µ¤(ÊÄÔŒ¦iŠ¢¤™¹<û{À›ššñø|¦jE©Ttf¦D©ørCCËHOg™)_š™™™)111åñùI†43“Ëå …&*š¦(J"ÉPá†1ùZ°`~7ä  ‡!„`èaDÆ €^F„Bá‚IÐ Y°A®l+ä Àƨ €ŸA°};ïÜ9Âå¦-]Jøülçç¼x!ضóî¢fMiÛ¶¾nTFçí[Z(T•(ÁLáÞ»'\´HY¦ŒdÔ¨‚ŽîwðkµgÖý¡`Ë1ä bZXcŽÊÆF^£†¼n]Bý2?è÷kí';ÈþÂùó9/_BøÍšÉ6dŸ™JL…„P‰‰„J&+´¹‚Qd¤yÛ¶Š  Ô#G˜)œù*ðž•/~­ö̺?`9DL kM4^½Z^­ZÚ¶m´™ÙÏnÄ\ùµöÈä ¿?£7˜DÂ?x0Û\ÁèÞ=*1Qåè˜1c†ÒÁ¡ ÃÏEÅŠŸ÷ì¡Åâ‚ä7ö̵DÊrå2¦L!„¹ÜèáCã•+y—.™˜¶qcA×à n½zõ*V¬XÐaÀd¼l™ÑÍ›JwwΧOœ—/¥}ûe~³9¯_JO§T*…3JO7Þ¸Q°i/2’‰TÅ‹BLÃÂûö)==iKK*!ÁlÐ þ‘# __ÚÜœóö­éСüÿ•Õ¯O8ºGÆPIIÆk× ¶lá…‡cc•£#3{ïžé˜1ÜÇy‘‘‚­[ù..Wåäô]œaaœ×¯)‰Äèöm· î³gÆëÖQ))ŠªU )Ÿóᕜ,\¶Œwá-35bð.]2Þ¸‘¿¿ÑƒªÒ¥isó¬Á+$1Q¸|9ÿÄ BˆÊÙ™ð ñªU¼‹i¡P½ÆoñlÚ$ؽ›ü¸Ñ£G*{{Z$ìÙ#\¸ÊÈPzz~Ùd«V¯ZE«œu®”ûð!•ž.\´ˆp¹*}[Gs½ÂÕ«›7óÏŸç$$/æÆÄ(‚‚4 díËÓ˜EPf{ê[o¶«Îcä:éÜ:Y÷öf×K9î½,‘v›<.Ø»Wåì,?^åä¤rqQÊ5lÛftÿ¾¬Q#ºHöFÎvOÖ¹`Nw]–š~«E‰ÒN²Ývð‹¢,˜Ú­ Ã€F¥{zr>~ü|ø°éßs>|H[¿^Ö¼9ËVÖÖêDz-ÒÖ­#„pââÌ5â>{¦~I2nœdÈóx'O¦/Y"íÔ‰wîœyëÖ„´M›dMšð6ëÑCáç—zâ„Îqž?·hܘóá÷2GŒŒMá9cž¥ÛV2t¨dìX–8™¥©ÿþkHù´±1•ùõ7 9œÏÈ«U#„˜,ضM½mb’zá‚òûLå[|>‘ÉÔ*ݾ­~úy×.yHó˜ûü¹Ep0•’ò­ uß>*5Õ¼S'¥§gÊ… „¢TZ–+G%&¦„‡+ÝÜØWš1yræ€ú¶Î—š½ycÑ çÝ;ÍrÔ}ìZöåiPPê‘#š/é\/ËŽ‘usç"rômû-K³+ªTÑ’¾r ß{‰žƒH_›¨ÿ[‡ lÚ$9’éÕgi%ö=Yß‚9ÚuÙkÊR øà:ˆßïòeÎÇ*{{yP¬Y3BHÖó£Z˜Ïc¥»ûç={$aaÌD“Ñ£¹Ïž)ÓÖ®•ŒAx<áôéFwîÈkÕ"„0o1Üû÷ ŸO(Š{÷.!„{ç!D^»¶¾™ŽÉùðAQ¾|ÚêÕ’!C‡#œ7YJMéå•¶zuf¿~„áÂ…Ü{÷ØãÌQùTf¦¼V­´ ~~D¥lÙBáÆÄ¶m£‚Œ3Ò¶lQøûS‚Õ«õ¶—L&kÔ(mãF…¿?Ó²¦MÕO{ö¨gΞM¥¤ÈkÔHÛ¸1mãFyµjD*5Þ°AQ³&-rïÝc>ÎyTb¢²lÙ¬‰‚æJé‹Ë5bÙ:êmÇy÷Néêš¶r¥$,,Oƒæ¾_o¶«ÎcäY±l}ûƒ¾f×R¶û•!{—…è£ðó#„p=2°‘uîÉÙ/hØ®kÈq ¿=ŒWøÍñ÷ï'„ÈZ·&%kÑÂxõjÞ©STZ˰)E… „ÚÒRÌL¡RRøGÒbñçÝ»iSSB%•/YÂß¿ŸéuäÞ¾M1º_Y®õù³Ñ½{„£»w !L2‘Ï;wŽ¥mßÎô‹rââÛ· È(_þËL\îç­[U²Ö­9qqü}ûû÷g|í¨ÏgN˧…´ h Âã™uéB}üÈT–BÛØÈš7W-ª*QB°aƒº¿=+•­mÚºu„Ï'FFf]º¨ŠK[³†ðxÌS¦Ì/«37—W¯ž¾`ªT)B‘Jy—.qââhccyÍšüãÇyÿý'íÞÿÏ?„&±Ó‡67ÿ¼?-°oEùòTr2ÿ¿ÿ‡óyûvUéÒ„·‚]»r·;i®7ÛUç1rÝ»þ­£oÐ×ìú*ž_¸wR •¥¥º²†´’¾=Yß‚òêÕ Üu :ŽLLÔÿáw…\á·&—3®pJ‘7hÀ?~œÿßÒnÝxGBØÏ)ÕŸm,[‡‰!*•ÒÅ…I!ò5r+h®7ÛUç1r†y‡ßZ)0PÚ«W޶{³ë¬”! Ù»ò‚’J !D(4°•tîÉl 2¹‚»®AÇQ±b„•]¾Ô 'ä ¿3ÞÙ³Tr2!Ä(:ZsºààÁå Ì;•šÊ;yò»éii„yÍš‚íÛîÝã>~,íÐH¥üǹr>}’5iB¸\Ýe*„ÚØøÛ$SSBaÞ% ÑzõË·õIÙlc6¤|¡0ë‚´P˜úßÂyóøÿücee¼|ùç˜náÜ£i³.]øÇBh±Xé䤲³3Šˆ`^”׫G8£K—x/r>~Tºº*Ë•c+Mã³}ë|ùÔÑüÎÇþýO©4p½Ù®:‘34_¢MM3sºuX›]g¥ aÈÞ•Ì'±²dI[Içžœ›­“«šÒÅ‹ä ¿;ä ¿3Á„YÛ¶™¡¡Ìnl¬iXïÜ9*%… næ]@U¢DÚ×ÓöܧO""˜óšL®Àß»—ÈåJOO"—B;vý' Ôer_¼ 2óå†9;«ùŽÃ}þœ’J™o9Üû÷É×o0†ÇÌ^¾NœçÏ×®•W­š>w.÷þ}áüùü#GŒW¯NË[®À½Ÿü8-¥mÝ*¯R…Pÿøq³¯Z*…¯¯Ñµk&ÿûÉîDŽ¶ŽªHBçÙ3J"a>Q¸ê(åëÓs³|íÎõªóeñÔcǾÅhc“Ó­ÃÞì¹–ë½Ë ï^Bˆ‚ùöŸÛFÎãÖ1¼¦´@@[Z~l¯c[”DÂû÷_BHf×®ŠÊ•™?i§N´ ‘ÉøoÁÙRº¸¨9oÞݾ­ðöV99 Ö­ìÚÅ\«&¯QƒPÔ—w7wwæ*ÏÂ:°Qéì¬rt¤RSMfÌ 2÷þ}Áš5äûô‚úüY8}:‘ÉŒ¢£×­Ó] J•ëòõ1^½Z8c•šªôðP2#ò|=æK-*]] Eq<Ιó5V%!DÖ aNdw"G[GY¶¬ªX1*-M8q"%•rïß7þ~L>ÓaÃåÄÅqÞ¿gZ)_V/‹«w]EåÊ̶Èfë|¿?dÛìzéÙ¯¾,š‡½‹çÕ+³=¸Ož(]\duê䥑ó¸urTÓ¤'O¤=zä±îP˜!WømñNœ 22TE‹*¾Måp˜Ï¤l¯†øEeLžL(ÊdÌ+±»»Ñ;J//y£F„ÚÚZáåʼnW+F[[Ó66ªâÅ9ññš£ t—9q"!ÄxéR+Qõêœøx…··ÖWjãåË­,‚ƒ©ÄDE¥Jš¯2Ã3®]{zšöí›»ò³R•*¥ðõå>}jéâbeo/\°€P”4'§ltRzzª8>ˆË•³*^\T­3’Ü(2R°w/!DÞ Á—9]]•®®ùµu‡ÃŒÉ7^¿ÞÒÑQT½:¯miI%%‰==Å^^š××åuÕ?`q–­£sȶٳÊf¿RGž«½K'£7,K—¶,]ÚÒÁA\©ÿØ1ÚÂ"}Íbd”§FÎãÖ1¸¦¼‹-K—6/¬7x…|\á·Å\!oÜXë>H²Æ !¼‹©„ÃK“5mš¶e‹¢|yÂ媊•vîüyÏžoCÇk×&„(=<¾<­PðKÖ¼yÚÆJOOÂáÐ66ÒÐÐÏûö}y$„¢*YRáãC8ÚÂBÚ¶íç={4_UøøH;u¢ML¨ÄDçS²-_7ŠJÛ´IÖ¢…ÊÚšæñ>>i[¶ÈëÖÍãæ ‚ÏûöÉë×§E"š¢Uª|Þ·O^£mb zW–)ÃÜÂ!G †liÇŽéK–( !´X¬ÕM››Þ¾]Q±"md¤tq‘ –«ÎÿÅõoûC¶ÍžU¶ûÕ—Ès·wé¤TR©©Tj*%‘¨lmemÚ¤ž=ËDylä¼!/-™Çw6Cv†Ü…÷ƒÞrÂ^§TüÔã4wÇ£@ 0ôšI¹\®T*|ÁϬ &,<ñ@Ž$Kˆƒå/Üõ’ –¼dIAñ+„Bò-ÿ—VÈ[²P…W¨‚)X†æ ’ a!:»\ØâIHWØ‹ùÅOe/æ'¤ÿnßP2¡I†$£ £øò–,Táª` Á¹BF†P(,èh¿ÉÌÌ,Tñ@Ž$e(Š[ò©?IqK~Rr…< …™™™Åï ·d¡ ¯PS€rЯ`,(DW·I2%Bcä ¿ªÄt…èÏ:d'$¢_!o„ÆBI&NääƒBÞ’…*¼BL24WH$ÆÆºs… —Âë7m~÷Þ}­é‡«ß´ù»÷ïoDEÕoÚ<>>!ãÎÌÌÔC¥R=~bаÍÛ¶oݱóБ£/]¾üòÇ`š.))Içtõ_ƒf-:„v_¼|EZZZ¶¥å}C作Ä4Y1‘ÞsW®øV©šõ/lÄH–2_¿y»fý†ŒŒŸqT3Æ}údø"ÅDüÄ´l†úŽ?¡~Óæ·l5¤ÀwïßoÛ¹K’óo<š{ŽÖßOhº¼ÔÈØØXç7|÷Þý ›·Èåòv­[iÖÝ£ÕÀ½Hk¥j"‘ˆeÁ\¿]¨œ+dd÷*áóù•ýýÂ#¯ôéõ—úÂÍÔÔÔ{tíÔ‘¦isssïJÕÛ#_dHôÆC9{þ•k×çÏšYÆÅ™™\«æÒ•«6nÙZ§v-3³_æÊ~æ*šÐZ5e¦{yxØX[3S*ûû›˜˜¬Û¸I*“ñy<¶Òh:"4>MVÜ€>ÞÞElmó¿M Nq1?>Mæ`©ûäËÅËáŠêÚuÙªÕ1—-S†½4}ûF¶˜m§.¡¼§§¥XüeÊ»‘!²­‘@ Èdd}•YÐÙ©ô…K—ªTÐ|éBøeg§ÒOŸ=§Iþ¿}; òéÈúiôµ¤ZN÷FÝ-“Û6×»¡ifC;¿x)0à» }1ü²³“ÓÓgÏè¯È×-Â<öÔx· ¬ìëã=iÚŒ³.Ôª^]]²Î-ÈÒV:߇ !‡ÿ9Ú¶UKͺr´¸e]©Vû°o‘\P(J•’gÄ£õ¨Q­jrrò{÷ÔS®\»®R©ªV ¤iúFTT£­>ÅÇ3/ý{â¿¿úõoѶýÀ¡Ã®\»FÓôðÿ™:k6óê½ûµh5Ñæéµ7µhõôÙsÍÕ) •JÅÏþC‡kÕ¨îâì¤9±Uófå½¼^¼|Å<Ýwà`÷Þ}šµi×wÐà —Â™‰L¨oß½5n|‹¶íû |÷Þý‡11ƒ†oÞ¶ýßFÝŠ6d¦4©L¶qËÖž}úµhÛ¾Ch·‰Ó¦?{þ\³Aþ7~b‹vú rïþf•Jµ}×î.=þjѮÄ)Ó>}Š×Üã5enanNQ”zjÖvf–úø1nÔØñ-Ú¶ï;(ìî½û,¡N›5gàÐaêòU*Uמ½–¬X©µAYZòqlìˆ1cÃFŒÒŒ3)M^\œÍÀFfÇË:=êV´_Pµë7o2OÏž¿P¹zÍ'OŸQ5hèpBHý&Í|«TUÏàÐámÛÕ¬Ý1´ûÅðËÌÄÈ«W}«T}øèÑ_}ûuíÙ‹y÷éSŸƒ‚j·ëÜ5úöfN™\¾låªf­ÛÕ¬]§aã°á#bŸ>ÕŠ0öéÓAC‡×®ß V½ƒ‡xýæÞáb~Rš\ßN{áb¸·wíš5ŒÂ/k6£º©™§‰II4M3]Ž»÷lÔ¢•ºÛ‚…Ö^tâä©f­Û¦¥§«§ôÚ¥g¯F-Z½xùrøÿÆ4oÛþ¯~ýÏœ?¯¹”Î=íÙóç¦Lk×¥kÛÎ]'Nöæí[öùõÕHψ§R© …ΊT¯ZõÚõê‰/_½~ùêUõªU™jj6&KxGŸø«oÿmÛ÷r1ü[ê; 4äâgiöƒKç^ÁR/[2w{£¾7.CÞ+r¾¡ƒ®]¿‘®±¡_½f6tV~ o?§iÚ§R%_ïÿNžf™Ç¶Êº”[¹rÉ))‰D³î:÷í¬{š¾÷çlWªµ²îfZh½?ë<ð-[®¹Fƒr‰D"4ªô«X¾¼¹™ÙÅK—ÕS"®\uqv.bk«R}í S©T*Õ?ÿ_µn}P`àAJ::N›5çڛ˗¿ÿà¡R©T©T÷>$„Üø™ÿÞýb±¨¤£ƒæê2$,ñÄ}úôâåË*ZÓ‹)2iÜ·r®*•êà‘6mÛà?dà€R%KÎY°ðVômu¨ÓfÍñóñзT*>{ÎÌ9ójT¯6°o™L>ÉCæaÖ¸eûŽ#Gת9bhX×Nß¿ÿ0qÚtõZfÏ_P±¼×€>K$’Ù 0‹ì?txÇî=•ü÷ïgll¼fÃFuÓibJH2322222’SR¢oßÙ¹gop­š\.W_;3KÍ[¼Ø»b…þ}þÎÌÌœ½`!K¨U*<{þâc\3Ï£˜Ç ‰‰5«UÓÜ ì-¹dÅÊreËvíØA3øÄtYQQöãd¥RiF†DóO¡PøxWjÒ°ÁÌ9ód2YzFƼ…‹ºuéÌôõû»7!dúäIKÎgJسÿÀœ ëÔ®=yÂø2.ÎÃGÿ/<"R]þÔ³Ê{zèû7óôã'Vö÷7zd†$ã&0W¬^³s÷ž¦͘:e`ß>¯ß¼4t˜féééý…I2%£‡=|اOŸFüoŒ¾'¦Ëtî´ï?|xôøqÍêUŒŒü||Â/G0‡ƒfSk=íÜ¡=!dxØàIcǰo }´ W©T¾>ÞJ•êfÔ-æéÛwï^¼|YµJ !d”ie]\Âô/åè¸`ñÒèÛwXŽè´ôôq“¦dfföíõWß^%$&Θ3e~}5ÊJh,Ìd謈¿¯Åá\¾rE=ýÂ¥K%J”tp`ª©®o6á­]çïë3tð 'ç9 ݾs—ý€Ò,9‡!$âÊ[·r®·nßf6¨\.goÉ:µk7nP_kó}Η,žý¯(µhÛ^kÊÀ¾}ºuí6h`ë7mÝ–ššjjjÒ³[(óª[9WBˆ¯7Ó5§P(V¯[ß·×_ݺv!„„×–ÉäkÖo`>ù!Í›6iצ5S/&øî]»B”JÕ¤iÓ“““Åb±4S:¨¿ömÛ0‹ˆDÃGILü6ÔôÉÓ§IIIk–/u*]šâèè°ÿà!¹\ÎÓu¨¨HðòÝg»åÅðË&&&¾>>4M^ºñàÑ#÷råÔÇŽæ¡ÄìÎN¥ !žî–b1MÓ,{µ¾ÎÚç)‰Ê–q¹~ã&sÖÿrässóòžžGŽ ð÷cJ ¬?~ð𡟯ÏêÕ©£µêLi&K\¡ iºwÏ„•J•œœòöÝ»ó/B”*³ŸJ™E˜| …âÃÇiiiµªWSV½Zî\&„Ñlj,Ì !*š~úìùŽ]»×®ß8¨_}í¬Tª4×ËŒôQè•ÏçW,_þêµ ëÕ#„D\½úµ—ïK Ù¶¤ÖÞÆH“*l-²¿`rÞ¬–bKÍ)vvÅ!" ‹¡ƒM™1S¥R­]¹œ¯g¨Î³çÏ“““}}|ÔWFU©WÈúX纲G_[1ú ÓœX±¼WÐ.Z›Ikß~õúuÖ=ífTÔüÅKu¾?g]©úÍ_­ˆm‘—¯_ëÜͲõýYçŸã\!##ƒ9gÃ2O9WW++«ðˆH/ˆ+×ʺ¸X[[1‹Ð´Š¢¢UÌ7ò‘cÇi-+•J==ÜïÝ¿ïåáñ9-ͽœkÙ2.÷>²°°P*•¼<µV)Í4šê‹ÇÊÊ’òþý‡¢EŠh½´iÛö’¶¶6„sssu "‘(S*MKKcBåp9š‘s9ß=ýrò†}•J¥RÝøpÿÁÃ?673³/^\(4f^bæ133ÓZ$)9™|?œ•É<诽@»‹ŠâìTÚÚêË¥n®®ûîÛû/}í,‘dè\/K¨þËW¯IKKû÷éãǸêUƒT_ãWѪ„ÄDö–466κ™Ò2å6ÙŸƒpws˺uëÏ_¼D,²ðòðзxJJ*!$ô¯^Ywfæ‰Éwß´®¹`ܼukÃæ-wîÞ‰D%MM´¿XXYY®Y¾tí†M£ÆŽW(þ~¾Ãbú²²±0NË”gm×oÞ¼|õêå«W.…«'^¾rµGhWuSgÝdš !,ÛÂÄĤ}×nê’ìÚ¡¹ií]~>>Ûvîzø(ÆÖÖæÉÓ§Ûµa^µ°øV²X,fJÖ·§ñxFS&Œß{àÀœ‹”JeyOÏî];;”(¡oþŒŒ ñh—lÄK—¤ë<T´ªby/ccÁ¥ˆˆuë^ ¿ììTºXÑ"ï?¼'ÇŠV™››é /%5•"²°P—o,BØ(ý­ä»÷ïçègil®¬{…¹ØBg½ oÉÜí,o\†¼W˜˜˜žúLAÅò^B¡ðRDdƒº!—._vv*]´H‘wïß“ìÎAh–Ÿ Ë<ìmÅÔnÔ°!愊¢lmm˜÷dÍ÷ɬG«Î=iïÏYWªùæ¯öâÕK}%h•–õýY߯fX® É(bS„½_Xùü…‹Ý»tŽŠ¾Õ®U+­^š¦­Ä–„°ýml¾ÀÉçóË{yí;pðQLL {{¡Pè^®Üõ›Q" G‘H¤µj©Tj%¶Ò­Mñâvá‘‘Ê{iN÷þý‘£Ç:·oWÖÅ…’œ’¢þ(JNNæóùB¡P+»Ô÷Ôy’’“§Ì˜U£jÕÕK3W^ܺ};òªî!Q̱HDILJR–”œDte»:³`‡%äryff¦¾vNOOÏi¨¾>ÞEݼýæíÛR%KØÛk.n)Ø’šÒ22m,Œ)ý¿uƼ¤9„PËÖ;¹λwï=Ö¼iK)bK™>y’]±bšË …B­9õ=MLJ6´aƒú3§NYXB"®\9sî¼æœEy¸»/š7G*•Þº}gÕšµƒ†?vè€Î°m,ŒÓ2t|;¹x9‚Ïç=RýÛª1c·îØy÷þ}­fLMMU?Õz‰}[L›4AkçÑ·•°/^¬XÑë7oZZZš›™y¸¹Ý¹w)Mc·LæóùÆÆÆ,G´³SéÑÇÉd²‡11»÷îŸ:köê¥KXæ7äû!D $&'ê;¸\neÿK—#ꇄ\Ž¼Ò ^]‡Ó'œ5<æz””TuM?|øø9í³T.y–1üàÒÜ+tÖËð–ÌÝÞ˜í—!ï9ßÐ~—.GÔ©sùÊ•uµ7´!ý ·ïÜ)[Æ%ë¾ax[Ñ_¯ËÐüØÖy|i­ºö´Ç±OˆþO–¬ /%°l]¾VùmÌd¨fÕª~NKÛ¶sWf¦4°r€Æ+_ªakkcnf–žž^®lYæïÅ‹——#"9N/Ïä””3ç/”+[–¦i7W×—¯^ݼ]¡¼WÖeJ3ÙãiÒ Á¹ oÞº¥ž¢R©¶ïÚÍáp*øÛÚÚ˜™™]ŽˆT¿éìTZ3Ôï#ÿ¾×—ÐÙÏC“·ïÞÉåòÆ ë3'Ãhš~ððÑ×9u¯ÅÖÆÆÜÜ\sxð¥Ë‘߮ݤš^¾zenf& õ·3WçzYB5 ½<=®Ý¸yõÓ ­µA nɯÛN¦äs‰‰ ÷?õêõë5ëÖ:¤[×.‹—-Ïz£*†}ñâb‘èsÚçŠÊ31±±'OŸ6ü‡}_¾z%•É:µoÇ$ „¨[ÑZóÄ<~\¿I³ôôt@PÙ߯cû¶ï?|P÷'k1ðø\’)SjµÉåˆÈJ*¸—+§Þ^õêóx¼ËW(ŠCIIIaæ¼y+ZcønÇcÝ´ºdæøÒ³ë~áçí}#êÖ•«×üý|Õ§¿–¬R©.†_v*UŠ¢oO{ùêU¯þ222x<^yOφõëÅÇ'dff²¼°Ä£‰Ïç3½Áú‡ª1cÃ#"âª|yRûe¶gÏŸë ¯ˆ­­™™Ùå+WÔå._½æðÑ 8 !äíÛœòú„eƒêÛ+ôÕ+'-™›½‘õË÷Š„÷mCW Œyü8<"2>^½¡³ÏÔnß½{ýfTHíZ,ódŒ¾w9]¯~·oëÜÓŽ=ÆúÉbÈJY>¿t~N}'Ëÿ]AÙ¿o*•J¹\nÄ5Rew3R%KÚ+vü䩲..–b±zþ/]1*‡Ãiټن-[ãœJ—~ñò塎öîÑ]¥R-RÄÖÆæQLLpÍ*•ÊÅÅ™¢¨Ç±±m[µÐZ¯J¥R(ìñÔ®Yãúͨ™sçW©\¹œkÙL‰äzTÔãØ'­š7c.ÙoָюÝ{(Š*ãâ|íÆÍûNøßèo½FßwÔdés£³GE«ìíìÁÚ ›êÖ©­R©nݾsÿÁCBȽ˜›e-Ãá4mØ`ûî=ǽœëÕë7>|ø@t݃YäÞýææfÌðâå˃GŽ4oÒ„¥õÕŽ%Ô*•*ûù­Û´I¡PV ¬üÝ‚*‡Ã1°%ÕR%R ƒnr3*JüõºµÀ€€)Ógz{W ®-•ÉŽ?±pé²)Æ“¯?=z)ü²££ƒO¥J<¯g÷nó.Ž‹ûäîV.æqì†Í[XnT••S©RB¡pæÜym[µT*U—##oÜŒ"„Dݺ¥¾E‡C ™Lö¿ ›5nœ–ž¾qóæòžž,¿TbcÁO•H­¹ß†kŸ_ÞÓãÊõëÍ›4ær¹ë6nnX¿^ÌãØç/^ª÷EB®GÝ´+ZÌÝ­˶Ќ֮«æëíýÏ¿Ç)ŠjÕ¼™zSž9wžÃá¸8;G^½ú(&fÌÈá,{ZÑ"Eä2ùÂ¥ËkÕ¨–!‘<ü3N–¢ï€¢U#1q …B¡PëÕÜ!U*•[9W‘…Åڛʖq±²´Ôì VÏÆ^‹¦M¶íÜEhÚµl™Ûwï=Œ‰a¾a³PÌûâÅsqÈëk– ZÜ®˜Î½B_½tî:[2w{#Ë—!ï9ÙÐßÞ{Ý\]Ek7l,[¦Ì× ýåó^ç9ˆ{÷ï›››B¤RÙƒGNŸ=PÙßÿëa;¡3­Oïñ¥Ò}´fÝÓ7lðϱõ}²h«~óÏJg ZèŒ\ëÀ×n’‰Db,`»BSP`å}Uðל_3…iX¯®B¡8yúÌÑ-Zô¯n¡5¿Žˆñòô8{þBš¦ù<žSéR/_½f¾i®B*•²Ü…ImxØ SgΞ¿~ýæMЇýÿî]½ê—ñYM6P(gÎ?~òTñbÅÂôsw+§•miEþí)¡³Ÿ‡¦ÍÌÌF Û¾{ÏòÕkÍÍÍjT­:{úÔ±'_»q³FµªúJhÒ¨¡T&;sîüÙó¼<Ü÷ï;qÚŒoyà÷Mºtå*æ)EQ6ÖÖÍ7nÑ´ 3§Îv޾s7§¡øûz{¯Ù°ÑÃÍM=:ý»€ kIµ4‰ÜÖ€Á „q“¦dø¿Ãï?x°gÇ6Bˆ€Ï9l蠡Ú5nìã]ÉÓÝݧR¥Yóæ›š˜œýï8!¤SûvÌ`òm;w•°·3rD³& Y5C,/œ;{ɲ¦L³‹›4j¸sëæÐž½Î]¸Ø¤QCfá‚9³,Y2aÊT¡ÐØß×7là–2m-ŒÓ$r+ÓoÙRxd$ÏȨRÅŠZ åïë{óVô›wïþîÙcÏþËW¯©XÞ«O¯žã'OeZÕÙ©´{¹rë7m¯[¹œe¯ÖŒ¾mT¶Œ‹¹™EQš›rÈ üsâÔik+˾½ÿªàåŲ§B†¼uÇ®e«Ö žî;´g™ŸþÒ—«]#T*ռŻfE(Š ð?~òT•Ê•³ì®_}á5ª_O©Tž:sö¿ÓgìŠ ÐÏÓÝ]ß—ÆE!ff¦¹8äYDßµ²´Ô¹W°ÔËÀ–ÌõÞ¨ÿë[MsºêÚÐßÞ{)Š ¬pü¿“L§‚Ö«Y/]¹š)ÄÈȨXÑ"í[·jX¿žzíšó Ë”õÕ¬ûvÖ=ÍØXøÏ±õ}²h«~ó×ô¿ÃõífZè,\ëÀ×*œZ°`~hh7¢_ܧ¸—¯^:–p$…CÊç”ä”ä’%Jt 1ï’yB³úîHÁ8qõ\’æZ\\ÐdcÔ¸ñeœ]þêJ¹}çîÌyóW,Z`ee•ç‚óÁË7/Å"±È\”÷¢þp…¼% Ux…*˜GóÀ×T´hÑìû2$F¼ìO@ü4™™™úzÕ ð“HeÅŠY6þެͅϓ ùÞûþÇ—¯^wîО‰Sõ¥»’.$aóx¼ÌÌLsSó¼õ‡+ä-Y¨Â+TÁü Z¾ƒr—gà9ˆŸ@® xÙŸƒ€ÂI&WZš›ä½œ_”¥¹IŒ\Y˜÷Þ'O]»UÄÖÖÍÕUëÔ[! ›ÇåIåÒBÌ/­·d¡ ¯Pó#d=ðµ+dd˜›šž6’Édf&f…'È…B.2+Œ¿ùsˆÌ„ …¼0ï½GOüÇ32êÛû/¢¾úË€K&÷9ýs! æ—VÈ[²P…W¨‚ùtøß3(W°Y’îGBˆT&ÍöÆPPhÉdR‘ÙŸÛ¯ 23‘ɤ…yï]¿ðÄ9"“ËÄð †ØÌD&—ÿÁ+yÇçó¥R©×Ð[p‚>…¼% Ux…*˜Ÿ/›jgJ3¸F…çK¼\!/Tñ@Ž(är±¥¸ £(`"3“ä¤dìÃyaÄ5’î!¢¿ŠBÞ’…*¼BLT_ýèäÙ“úfJJI2¨°Ÿ¥°Å† ®U« C(`>+í9°'!éSAòËû”€6Ì…¼% Ux…*˜ŸÆÉÉé»~…ö­ÛtH•Jóöý[}?2ô;öß±‚¡à™šštl„B¡½½kY×=û÷“òWLlLRr’­•-ùC{³ P£i:îSœz(:r…ðæíG{Gsss­_-( hš666ŽOˆgž"W(2¹L$ …úÕƒP8Ñ4MúSâ—ñø^[0(@¡EQ—ËU?E¿B ¾*è@tÓüB¿h£E~…À$kèW€BKsô=ú ²ø|½°_;W¸YÁ/@ýçÔ¼M»ÍÛ¶gû ¯^¿Y¹fmF†D³œqq9ZÊpúÊWO70€Yu|B‚¾¨o#(Š¢®^¿T+øS||ÖÔOǬ:1)éç¯ •lÎA̘2I,B¤RÙͨ¨EK—Éåò¿ºwcù€|ýæõªµëÚ´jib"4üc5wK±ðps[±d‘¥Xœ¯ŸþùŒÒÓ¯PÎÕuÁœY…y¢kÙ2£ÆŽ»ríZ®«Z£z5¥Rqå óôÕë7cŸÔ«Lé;p°—§Ç´I\œ]ÆNœtíú C9f\`@ÀıÿKÏH9v3qó¶í+׬ ®YsêÄñ¦¦&sæ/Ìf|?^"_¿Êÿ ZPR©¼vý:3×Ûwïž<}V§V-BH؈‘žîîÇþÏÅÙiÊô™7oÝbæÙµwߊÕkjÕ¨>qìÿʸ¸L˜2õÆÍ(uã'Oñ÷óý߈á’Œñ“§2‹ìؽgÝÆM5ªWÿ¿Q¦&&‹–.'„PðÇSlé>‘™™ÉŒ7”ɤQÑÑ6m®S»EQÒLiØÀÛ·cf‹ECFŒJLL²²²tw+Gñóõ±±¶V—ÓªEóžÝB !4M›4999YüýÉx­¥ärùº›:¶k;|H!¤^HH|Bšu*ûûç.W°±¶öòô¸p)¼n:„ÓgÏŠE¢¿m;wÕ®YƒYKÝ:uB{öZ³aƒ¿Ÿo¶T ªÂÔH©TŸ<%99ÙÄÄdæͭš73jSZ÷Þߊ¾Í–+h$k,¬­­<ÜÝÂ#"™ßq>wþ‚ÈÂÂ×Çg×Þ}5ªV< ?!$¸V­ÞýlܼÕ×Û[.—oÞº­m«VÌKuj×NHHܰy‹Ÿ¯S`•Ê•C;w"„(UÊ©3f%§¤˜š˜lÙ¾£Y“Æ#†„1¥õ8èö»¹kmøm0_2ºs…¦­Úh> ð1t!„ù8¤i:!!áÅËWGÿ=AQÑz/‘¨T…y`eeIQ(•쑽}÷.99¹^Ýõ”ú!!ó-ÎKmkV¯¾eÛv•JÅápΜ;_»VM澕 ê×ûÒÕ¨aý…K–€ºFÖÖVLÞ¼}—’šÚ¤QÃo¥Õ¯Ÿm®ð]ʦ¾åAõ  í»wÓ4ÍápÎ_¼T³zu###BH½ºu¨¯óÔ¯WwÙŠ•E½ÿð!9%%$¸¶ºäàÚ‹—-WȼdmeMQ©TïÞ¿OMMmT¿þ·ÒBBnß¹«•QÀŸ†¢¨lÆ6.œ;ÛRlI¡(bgg§çx#*jÝÆM·ï܉D¥J–451a_“8‡Cúãã!V––ê)ÖÖÖ‰$--ÍÌÌ,wµ­U£ú’å+îܽkggwÿÁƒ}û¨TJBˆµ••z[-,è«QbR"!ÄÆæ[oŠMöÀ0Õ«U]±fíÝû÷íŠ{ðèQŸ^)U*Bˆ•¥fðÖ’ÌÌ´ôô„„DBˆåwÁ[1/} ^”%ø$¦ŽÁ[øãeÂÃÝ]¨%$&ö8¸Qó§OYXB.GFž>{.#c>¨“’J”P¯T ä:Q „8•.íèPâÂ¥p[‘HäïëÃŒ?HHLü¶–„@`jjš‹lml!ññ 𥲍o×Aòeƒö§Ò¥J؇_Ž´µ±YXøúx_»qƒ’””äPžY<11I ˜} >99ùÛKIIÀÜÌL£dêÛ)Š >!1A½HBbÁu<*w¿ñâåK©LÖ¥c&Q „ÜŒº•¿‘Ù/.²°øOãÚ‡'Oz¸»å±ØÕ«_¸~úì¹àš5Õ?œ¥¾À¦éc'N¸•+GQT.(ng'‹ÿv%ÅñÿNV9ú®VµjxDÄÙ jÖ¨®þä™3êàOœ­{ï¿Yæ7ð:F…ò^"‘ˆCQ¾>ß2°YÓ¦lܲuÏþElm'ŽXùËÝ)ºtì P(>²{ß~G‡S&g›·uéØ!33óБÿsÔß×gú䉽û 006ø}ý¤¢,˜ÚròìÉö­Ût\?JÛŽ½¼<™Lârdd¿Aa'ý“uLÆÏ^©B%>Ÿoàü»vóôô3r!$âÊÕAC‡ý{è@‘ þJ¥2âJD\|\ÝÚuÿˆß™|ùêULll½:u :/4/ZÍÖ«W¯?y\» £€?TÎAü¢¶íÜuæÜ¹ööš}øKë:;vï>{þ‚½}q_ooÍK®S€)—ã~Q›·nãóù3¦NÖ¬vÁ2üc~ëö<>oÚ¤‰…'xøC¨‡Öýþ¹Â©jM ¼}ýj†dx¿Â‰g >êJD‚\Þ_ò Î@á–ý}á‡2¼_ À¡_Ø _¡p8š¦Ñ¯…–T&ðÌcä ÀÊÒêéó§®e\AAÇùÌð;rl™¿\±k†o‘1gNgÎߊçè&¹ ‰¦é'ÏžØÙÙ½yÿ† W(¥K•~þâùõ›×åryAÇò»ùù½5¹^cîü»£~D•ó¥ÌŸ¼éPS*Ú÷©3¸º9¸Á•Û .3âÌI±?ˆ•¥•Si§ëQ× r…Áápœœœ :€ìal#°A¿ÂoH¥RÅÄÆ¼}ÿV"‘t,ðë …övö®e]™§È~C1±1IÉI¶V¶cz çhšŽû§"ƒ\á7ôæíG{GsssüŠäMÓÆÆÆñ ñÌSä ¿!™\&‰„Báo?j~š¦iBJüÄ<Å÷ÎßÈ5Š¢¸\®ú)ú~CÔWüªð;“À†"ýu„<ú~CøKÈ#ÍÑñèWø !K€|ðõÂ{í~…Ë‘‘ý…eèàA.ÎNý…<öÏ“§O™E‹ÉvE+׬-V´h‘"¶Ù.òêõ›cLJvîlb"ü -À¾:­v (ÊÚʪFµjaXX˜ÿ„ðò‚"ÚãT4½tùŠã'OÊeò3'þ½ríÚБ£íÝ]ÄÖÖÀ2µJ(è*ÀEQÙƒ˜1e’X,ÖœRºT)¡pÅ’E–ßOÏÖù‹—V-]üàÑ£lç|ýæõªµëÚ´jùsrCV§n©TóøñÖí;’’“ÎýÂË‹¬ý <ܽoÏn¡înn„r®® æÌÊѦÔ*~úú¾>>:;‚s´–7oßšš˜XZZtusI³j׬ann>Ñb©L&àó :46YÇ+¤g¤BZ4kjmeE±‹rT¦V ð{£8¹ºârdd¿€qqZÓ÷î?Фe+ÿ jm;u9ñ’æKçÎ_¨]«¦ÎBþêÛÏ¿jõVí;FÝŠf^búüƒë7¬àÀ^8SÈýºõêÝ1´;K™,áé\;K±ˆyEsíÌK·l­ß´™o•ª-Ú¶?qò!$´g¯!#F2¯FÝŠ®à0vâ$æé¥ðËüb?މí7(¬Zpªµëô<äå«W9ª¸Þ œ¥_aȈQ„Æ-ZÖ¨E¹ríZ`ZqŸ>1>zÔgÀ ÷ef>xøH›Žk„ÔëÚ³×¥Ë:K`lÛ¹«EÛöÕëÔíÚíÔ™³„¨èè*5k߸õe¸p±ZpÈ“§Ï ßÍ 0 (Ц¿t,èÎ23332$ê?©L¦¯¬]{÷Íš7?$8xÚäIe\œ‡Œ©þt!„œ9¾vÍY—9f\`@ÀıÿKÏH9v3q@ß>„YÓ¦®X²ÈÂ'O›QÁËkPÿ¾,e²”uu,휜|íúUk×7kÒ˜Ïçi­}뎋—-¯S«ÖôÉ]Ë–5vÜ•k×*øGÝŠf:úömBÈ­èÛL±QÑÑÖVVöÅ‹ÿÝ $S2vÔ¨±£F~úôiبѹ¨¸Ž üí _ôù«'!dÊ„ñ‹æÎ¡(Šù uõƒ™sçyyzôëÝ‹¢¨ý‡-X²4¸V͉cǸ8;7>òêU%PÔ®½ûV¬^S«Fõ‰cÿWÆÅe”©7nFùTªÔ¨Aý¹ ) ‰D²péÒ.;”qq¦àW£þXÑ}¢i«6šOkÕ¨¾hÞܬ³)Š•kÖöÿ»wn¡„ºu‚e2ùªµëªU!„$&&I¥ÒâvvY¬T¥g·PBˆR©?yJrr²X,vw+Gñóõ±±¶Î¶pBH‹fM;´kK¹©³L333–´VgH;·³1$,úÎ͵Ëåòu7ul×vø0BH½ø„„5ë6 êßwÕÚuOŸ=sqv޾s×ßÏ÷ÚõŸ>ÅÛÚÚDÝŠ®ìïÿäéÓ¤¤¤õ«V8;9Bö8(—Ë)Š2°âzsdQÎÕ•âã]I焦µiÕ’ióu6õîÙ£k§Ž„àZ5e2ùº›«T®¬U‚\.ß¼u[ÛV­èO©S»vBBâ†Í[ü|}õëÛ®KèæmÛ?N351íÚ•À¯†ù2ÉÐ+,œ;ÛRümH$Ò9ÛÓgÏ’““ý|}32¾üöqÕ À)ÓgªT*‡sþâÅZÕ«ë\Pý±gmmEQ(•9*œyàïÇ^&{x†´”ºT´êÁÃGËW­ž5o~ýº!škûî]rrr½º!ê¥ê‡„Ì[´ØËÓÓÔÔôFÔ-gçÛwïN?îö»·nGר^ýþÇ­[¶ptp …3çÎëÒ±ƒ¯··‡››ÇX7BHÌãÇ9ª¸Ž œ%%$_G0|™¨Ð@Q„?_fúó/“SR|½+eff2ËU ˜9gMÓZ%¼ÿð!9%%$¸¶z-!Áµ/[NQ”H$2pÀ´™³T4½jé~áÛ:Q•ÍØFwwC®‡LII%„tîÞCkzFF†™™ÙÙóçÃй Ø€ø,…3LMMÙËdÏ–ÒlŸJ•222ÖmÜ\[síññ „+ñ›ÖÖÖ‰D"‘øûúÜŒŠªìï—’’âë]©¼—gTôm+++…BX9ÀÊÊrýª«×m>zŒB¡ð÷1$ÌÙÉ)§ÏŠÊáýÔ¦~N%„¨.|[µD¢5%!!‘bù]­­$™™iééf¦¦uj×Z¸d©H$òôpÏQ$PHdÂ@EŠØBfNbW¬˜ætccãôŒŒwï?¸8;ÿˆÂZ Z\œd2™äûNkBHbR’C‰Ì”„ÄD@`ffV9 `ͺõÑwî:•.mffæS©Òù‹—¬,-˸83'><ÜÝ—,˜'•J£¢o¯\½¦ÿà!'þ9œ÷°©,×A|íM ¾¾DÈ—a ê!„¹ÝÂÔ‰Šý.Sk•ÀÔ:99Ù¡„=3ObR’@ 073#„ìØ½›Ãá¼{ÿþè¿Ç›6n”»Ö€Då×ïAØ/.‰>§}®T±óûß©SFFF—#"Ô'ò½ðŸV‚–DZOÄ"‘VŸ„}ñâ" ‹ÿNžRO9qò¤‡»!¤J倄ÄÄCGŽTªPžâ]©âãØØðËÌõŠbbB6NOOþ:´{ÿáƒD"É{Ø9íWP+ng'Y|Nû\±|yæ/öÉÓÓgÎf]uq;; ‹SgΨ§œ<}Æ­œ+!äõ›7kÖo>dphçNKV¬LJNÎ]0P°òç÷ x<^¯ž=æÌ_øñcœ‡»Û£˜Çë7mž0æ„3çÎwlß.G¥1?yñR¸££ƒ¯·7Káy/ëêt–pãæMæÔMÓ1c7lÞ’u¤ÇëÚuñ²å.·¼§Ç™sçoÜŒZ»b9!ÄÑÁÁήحèÛ-›5#„Tðòâp8·ïÞíûwoBˆ£ƒ£L&5n|ó&MÒÒÓ×oÜXÁËK(BòXq¢94yÊ\øðµÿ@ë:õÌ|>¿ghè‚ÅKãââÝÝ\cÇnÚºmÌÈßæ$ßæ íÜiÙÊU\.×ÓÃýÜ…‹Q·¢™+J¦ÍšíS©bÚµe2Ù¿'þ[²|Ťqcó²›Àϧ9°/¯¿Õ¹C{…B±{ï¾­;v–°·7zTó¦Märù£˜Çå==sT”—‡‡¯·÷Œ9sMML.œ>©¯ð¼‡§ouY™0‰y@Q”]±b=B»öîÙãʵkZ³uëÒY¡Pì?xhçî=%ç̘îçëüpàÐáŠÊBŒÝÝÊÅ<Žõ®T‘bb"\4oîüÅ‹ÇMš,øù <(Û° ‘õ:Ãuh×V¡Tî=p`Ç®]ööö£G ×w¡KÇ …âàá#»÷íwtp˜1e²¯·÷¾ƒ‡î?x¸{ÛBŸÏ14,løÈ&úTª”»x À|ý$¡,˜ÚròìÉö­Ût\Â#Â+U¨„  ×”JeÄ•ˆ¸ø¸ºµëâw&CšÅäQ^ÏA@!”õ:€Ñ¯€~…ß²È;õÐ7ô+ü†Ð¯y”o÷W€B IäM¾Ý· 'ô+@>B¿°A¿ÂoˆÃáÐ4~È5©L*à ˜ÇÈ~CV–VOŸ?u-ã* :È\ßvBNÞòΙïHe¦é'ÏžØÙÙ½yÿ† Wø-•.Uúù‹ç×o^—Ëå˯í§õÍänE?s©_H¾W0ïbûæÑw÷—3¬~9¸%•«¥ (-",¸íieiåTÚézÔu‚\á·ÄápœœrÿƒàjÛlЯ'*•*&6æíû·‰¤ cÈB¡ÐÞÎÞµ¬+ó¹BžÄÄÆ$%'ÙZÙŒ˜€ßMÓqŸâÔÃ_+äÉ›·oíÍÍÍ5cà—FÓ´±±q|B<ó¹BžÈä2‘H$ ˱Çðg¢iš&ô§ÄOÌS|Î+$ ð›¡(ŠË媟¢_!O¨¯ :€ü„ß™6¡è¯ãöѯ'øEGø-iŽÙG¿Bž K€ßÖ×Ûh÷+\ŽŒì7(ì䱊)R°þwêÔÈ1ãÖ¯^éëí­9}çî=³æÍÿçÀþ×o^x¨Áxø QÔ·s…·_¡FµjB¡ðä©3ZÓOŸ;WÎÕÕÑ¡„‡›ÛŠ%‹,Åâ Yü¶ôõ+ÆÆÆµjT?}öìèÃÔgM’““£nEìÛ‡"‹ƒ 6HŒW€ßÅ1à:ˆË‘‘ü^½~Ýóï¾þAÕZ´mw#*êÎÝ{í:wõ ªÖ¬uÛÈ+W™9¥2ÙâeË5oéT­FH½aCbbc™—¶nßQ¯qSÿªÕ~ãfT¿€ø„楽û4iÙÊ?¨ZÛN]Î_¼¤3††õê%$&ÞŒº¥žrþâ%•JU7¤Ž:Âqqú íÙkȈ‘Ì«Q·¢+øŒ8‰yz)ür¿€˜ÇõEÂ~ÿÁƒn½zw í®·)ue iÛ©sÍz]{öºt9Bó¥m;wµh×¾zººv;uæ¬æK;wïiÞ¦]ͺõGŽ{+úv`Z ‰‰?}ß „9AvDØð‘Íš4nÙ¼éÒ•«†Ž%ºvêhee¹t媱'ýï8!dÙÊU»÷ìý«G÷2..III›·mï?xÈéî;xhþâ%Ú·«PÞëÜ…‹£ÇOP»kï¾¹ †vîTÎÕõÂ¥KCFŒ\²`~µ *Zk¬ ²°8qꔟ¯3åÌùónn%ìíµæÔY`åÿ]{öÒ4MQTôíÛ„[Ñ·™ù£¢£­­¬Ê–)ÃÉäi3+VÐÛ”YÆ+ì;xhÑÒeÚ·+[¦LxDÄèqãçÍšY¥r!dçž½+V¯iߦµ‡»ÛÅð˦L‹Eþ¾¾„Cÿ]ºrU»Ö­¼<=.†_ž0u*ùzó†‚Þ[àO¤ù”M®Ð¥c‡ÍšBJå„ÉS§NœÐ´q#õÓä”±H$Í”† б};f±X4dĨOŸâW¯]×¾m›C‡Bê֩ӻ߀OŸ>B ÅÊ5kûÿÝ»G·PBHÝ:Á2™|ÕÚuYs##£àÚgÎ;j$‡ÃÉÈ\¹z­Ÿ¿µfÓWàˆ!ƒW­]÷ôÙ3gçè;wýý|¯]¿ñéS¼­­MÔ­èÊþþJ¥’=’Íšvh×–½)ÕiÉÚ {÷èÞµs'BHp­š2™|ÝÆMU*ÈåòM[·µmÕrð€þ„:µk'$&nܼÕß×W©T®ß¸©uËaB‚kÕ8dX||BAï'ð碈Á÷bR¡·±¶ÎúT¡PBÆŒѱ};š¦ãããoÜŒ:úï BÈ›·oã>}ª_7D]TÝ:Á̃§Ïž%''ûùúfdH˜¿ªAbbT*UÖÔ¯—””tíÆ BHxÄe™LV¯N­yôèîæfjjz#ê!äöݻڷ·nGKe²ûVÈ6’¿lšò{/^¾LIIñõñ‘H2™¿*cciš~ÿáCJJJH`õÌ!µk?zü˜¢¨÷>~Н«ñRp­šY ø™ ÛÈãñXž2nDE­Û¸éö;"‘¨TÉ’¦&&„¸Oq„k++õlÖÖÖ̃””TBHçî=´ÊÉÈÈ033Óšè]±b[Û“§ÎTö÷?}ö¼—§‡]1­yô(“Éü}}nFEUö÷KIIñõ®TÞË3*ú¶•••B¡¬ðìÙs}‘0LMM³Í²FÒãï>Y LHH$„h^µaee%‘HÒÒÒ>Å"„XYZj¾D eø9ˆl%$&ö8¸Qó§OYXB.GFž>{ÎÚÊšyÕ¡D fÎĤ/#õб%„Ìœ:Å®ØwŸúÆÆÆYËçp8õê†üsô؈¡aá—/÷íÝ+ë<,VX³n}ô»N¥K›™™ùTªtþâ%+KË2.Î6ÖÖiii†GÂÒ”êe"™2a¼VB¡ÐÆÆš’œ’¢n¤äd@`nnÎdTIÉÉê—’S’ Æ+@Á¡òñ÷ ^¼|)•ɺtìÀ$ „æ²{ûâb‘èÄ'Õsª‡ýÛ/.‰>§}®T±óûß©SFFº—†õê%§¤,^¾"C"a®€ÐÂR`•Ê ‰‰‡Ž©T¡{N»Ö­”JUxDÄõ7 !wîÞý«G÷ù‹s¹Ü å½Î_ õê5!„¢(׫g9ó~üçáîö(æñúM›'ŒùŸ¾U¸»•stpؽw_//·hd)ÐÑÁÁήحèÛ-›5#„Tðòâp8·ïÞíûwoö §ùíŸÏç÷ìÞmÁâ¥qqŸÜÝÊÅ<ŽÝ´uÛ˜‘#(Šâóù];wZ¶r‡Ëõòp?wábÔ­è•K3/õèºhé2.—[ÞËóbxÄë×o!ý P 4"¯¹‚X,^<îâ¥ËÇMšb)7mÜhÏŽm»õ8{þ¬iS333wíÙ»ÿÐáõêöïÓ{Ì„I|Ò¹C{…B±{ï¾­;v–°·7zTó¦MXÖÒ ^ÝÕëÖ× Ö7K®X¡Þ•ÔKeffîÙ·ÿÐ?Gë…ÔéÓ«ç„)Óxwo俯ŸoÔ‚óCC»BNž=Ù¾uû|\чŠ·‹DÌÓÝûöÍ]°èúåK¿ÓwåðˆðJ*ñùü<–óðQŒ]1u[í=p`Áâ¥çÏþNm¿¥Rq%".>®níº?ð÷ FŽ»aÓfõÓKá—Ýʹþf~š—ŸæÅÿÆOؼu›úéåˆÈr®e³¶€_ÔìånÙ¼ÙÊ5k-,,J::F\¹rérÄ”‰ã º¾ùŒÊ§ßƒhѬéêuë-,,"¯^ ˆœ4~,r((ù9^E·.•JåC‡ã>}*V´hØÀÍ7.èºç³üú8ïÚ©£R©z´ïÀÁ§Nm\½ÚήØÌÃÍmÅ’E–bqÞ‹š1e’øûr¬,­ _ûë7¯W­]צUË|˾ïW(çêº`ά|©)À¡¯_áÔ™³GŽ[<nõªU™)!Áµ[4kÚ¶Sçå«WO›4ñ‡F%‹ƒó¥(_ŸœvNäãÚ³Ò¯`)2?N^ÀÏGqô_±bõꦪ†C‰kW,oÚ¨!ärdd¿€ûtëÕ»chwBˆT&[¼ly£æ-ýƒªÕ©7 lHLl¬zÎ'OŸ†öìåT­IËVGÿ=®Yì»wï{ôîãT­e»7¢¢Ô‹|Œ‹cfؽo_ã­üƒªµîÐñ¿S§!1±±ý…U ®Sµvþƒ‡¼|õ*õ§izÕÚuÁ ùW­ÞoP؇™éškgÎb×oXÁïÛ'úÆ-[ë7mæ[¥j‹¶íOœ<¥¹”fƒènôï?ò¯\»X£VܧOê†֬[¿S·Ñwîh-+•JûÜ1´[Jjjì“§CFŽªÛ¸iH£&CGŽ~õúz¶ý‡·îЩFH½ÎÝ{ž>{Ž"“ÉV¬^ÓºCÇ!õ4m>lÔèØ'OÕköüyïþª×©Û¦cçã'Oj®ñàá#m:v®R¯kÏ^—.Gäïþ…EQ4­ëÄûž=1bÈõ©L¦T( !N¥!êÅ&O›X9 °r!dÙÊU»÷ìý«G÷2..III›·mï?xÈé2sö8¸^HŽíÛž8yzìÄIElmýý|™—ÆL˜Øºe‹–Í›-[µjÔØñgŽÓ f×Þ}³æÎëÜ¡}Å .…‡;žÏLž>£t©’cG¢izãæ-ÃFÞ·s‡ÎJffffd|÷+M|>ÏÈȈ²yÛö•kÖ¶kÝÚÇ»âé³çæÌ_˜uñ}û,[¹jÖ´©æÌ”­;v.^¶¼s‡ö^žç.\5vœX,ªìAt7ú÷ã˜2§(Šy0~ò” ÀÀ&®Z·nüä©GìSÏ R©ÆNœôñcÜÚËxFFƒ† /åè8r蚦·îØ1fÂÄí›6Bö<8Ñ’ömZ—÷òº9aÊT++ËËWö<ؽkg'§äääí»v 5Z]x؈‘ujÕj׺Õé³ç¦LŸYÄÖÖ×Û›)jÑÒåÚ·+[¦LxDÄèqãçÍšQ¥rå‚ÝkàgÒüŠû]®ðáÃGBˆƒC õ”°á#""¯¨Ÿž9ñ/ó E³¦ÚµeK3¥atlߎy*‹†Œ•˜˜Ä<­]³Æð!a„ºuê„öìµfÃu®ÐªEóžÝB !4M›4999Y½"¥R¹jíºömZ3ËÖ©]ëɳ狖.KJJZ¿j…³“!ÄÑÑa߃r¹œÇãe­dÓVm´¦ î߯G·P™L¶aÓæVÍ›5‚‰ª{ï¿oEßÖšÙÝ­!ÄÏׇÑ)—Ë×mÜÔ±][&žz!!ñ kÖmPç š ¢¯ÑÕ™VVU*Wí܉¢T)§Î˜•œ’ÂL§izÊô™b¯^¾ÔÆÆæÎÝ{ÉÉÉ#/r*]ŠâP¢ÄÁ#Gär9‡ÃY·qsëÍèO©U£ú³ç/Nœ<Åçóôù»mëVLi£ÇOJú²ijT­ÆÌ\«Vï~6nÞêëí­P(ÖmØÔ»g®:B‚kÕ”Éäë6nF®ðGa¾U2¾Ë”*%!D¡P¨§ œÚ£!$úÎEK—©§øû©3º4M'$$¼xùêè¿'!*Zżڠ~½/k¥¨F ë/\ò­jAU˜VV–„…R©~éɳgIIIõ놨§¬Y¾ôS||û.¡3çÎëÒ±ƒ¯··‡››ÇX7}•\8w¶¥ØRsJñâv„7oߥ¤¦6iÔð[TõëgÍ´¼}÷.99¹žF<õCBæ-Z¬³At7ºÖ}ÕÃ(ŠȼdmeMQ©TÌô…K–ž¿x©ZP‡%!Ž%„ÆÆó/îж­wÅ în嘜&öÉ“äää:Áêò—-œ¯R©ÌÍÍ¿lšÄÄW¯^3çqè¯k¯W·ŽzTDýzu—­XIQÔó/“SR|½+eff2EU ˜9gMÓøÕ+€?EQºÇ62ƒŸ>{^ºT)f ó žòèñcÍ9MMMÕoDE­Û¸éö;"‘¨TÉ’¦&&šsZ[}»úÀÖÆV"‘¤¥¥1OÅú¯HIN!„Xk\¥ijjjjjº~ÕŠÕë6 =F¡Pøû¦ŽP‹‡»»Î±‰I‰„›o%ÛØØdÛdññ „+Ëoɇµµµf]4Do£ë'‹tN¿{ï~Ïn¡ë7m¾v㦿¯¥¥åŠ%‹7lÞ{þ‚æ‡=!äRøåó/é,ëÅË—R™¬KÇL¢@¹uKsõõ4M;q­\9C>rJØÛ‹,,Nž>­ž2iê´1&„4lœžž.ü;uh÷þÉD’mišŠÛÙ‰Åâ£Ç¿]‘qü¿“Ù.e_¼¸ÈÂ⿯u!„œ8yÒÃÝ-Ûu6ºáŠ-JQÔ°°ÁÏ_¼Øwà`ÌãØF-Z1-àçÛ¾M›?J23í‹ÛYXXhnµi³f͘3W&“ul×Öâë¦Ñ:ÕròÌõ¦9qòT¹²e)Š*ng'Y|Nû\±|yæ/öÉÓÓgÎ2ÃBàÏ¡÷^LíÛ´ŽºukÄÿÆ4nØ (0Ïç߸yóÀá#LOxÖ‚œK— …ÓgÏi׺•R© ˆ¸~ã&!äfTóûàá#FFF^îÿ:s+úöŠ%‹ ‰ÇãýÕ½ÛÂ¥ËEU,_>òÊ•¨èè…sçLš:mÔ¸ñÍ›4IKO_¿qc//¡P÷½’nܼ™õGP` Ç íÜiñ²åF\®w¥ÓgÏ¿zý:ëâÌoq^¼îèèàëíÍãñº‡v]¼l9‡Ë-ïéqæÜù7£Ö®Xž£Fg¹BýÒ—§ä»é^ê×_³~ÃöMe2ÙøÉSš4j”žž¾qËV/OO¡Ò½k—¥+VRUÞËëʵkÑ·ïLŸƒû÷cfèÔ¾R©ÜðÐÞK::̘2¹NíZb‘xéÊU“¦Í‹D6رic·^Ÿ¿x©qƒ„YÓ¦lܲuÏþElm'Ž£¾à³C»¶ ¥rï;ví²··=b8³)àÏòõS‹Z°`~hh7BÈɳ'Û·nŸ«È—wøm„G„WªP‰Ïçt „qåê ¡Ãþ=t 6 è¢T*#®DÄÅÇÕ­]WÁý$šªüB0`í'Ѻ¢ ƒùSሠÍñ èWøIð© ¿Ý¿‘¿‚™±„@ Y¿BP``Ôü"èÅvøQ E’`½÷m„§Põ+ý Àý ? ‡Ã¡iý ðKʤ¾€yŒ\á'±²´zúü©kW@Pб@þËËM9r±?(ÔZ2äŽá[$GÛî[€Õ‡¬hš~òì‰Ý›÷or…Ÿ¦t©ÒÏ_<¿~óº\./èX~C?¿Ã&×küù þ¢~P}ó¥XlýAû†u×8gwº£r» aeæ[¨…`ƒ[YZ9•vºu Wøi8޳“³³“sA3ÛlЯP¨©Tª˜Ø˜·ïßJ$’‚ŽþB¡ÐÞÎÞµ¬+ó¹B¡“”œdkeK0F~š¦ã>Å©Ê W(ÔÞ¼}ãhïhnn®ù?MÓÆÆÆñ ñÌSä …šL.‰DB¡ðO …MÓ4¡?%~bžâÛja‡D~2Š¢¸\®ú)ú 5ê«‚þ,øI`CŠþ:®ý …~ „æ˜zô+jÈ À|½\_»_árdd¿Aaê§<Ï¡D‰fMwîÐÞÈ(›N•J5ÑâŽý+“˯\<Ÿ£x˜õž<öOÑ"E^½~sìøñÐÎML„Yç”Éd{ö8üÏ?oÞ¾566v*U:´K§êU«þÐæÒj###‡%Z4kÚ¥cö«µê¢YMCÖKÝãÖoÚüìù‹s.Ú»»ˆ­í­»Në7m.bkÛ¤QÃlç¼ríÚБ£ *NÈŠÊîÄŒ)“Äb1!$#CrãæÍe+WݾswáÜÙìåÞ½ÛÎ]}zýååé‘—ø^¿y½jíº6­ZêÌFŽ{íúŽíÛ¹•sMOϸ>pȰ‘ÆtjßþG7œºY¤RÙͨ¨EK—Éåò¿ºwËu]²¥¯_áÒåˆömZŸ»páGWYŸK—#e·?À¯M_¿Ã×ÇGýÅ7$¸vµªA†;q¢Qýú,e¦¥¥BÚ´jicmýƒÂ~þ⏠Ì™\«3¥iãF§N[³nCÇví~t½f³Ô®Yƒ²}×.ö\!tŽWxû‰ÐÒRL¾^(ñCkÕ×,sTœOø…Pœ^QµJ•jUƒ<¬ž²wÿ&-[ùUkÛ©Ëù‹—˜‰L/}pý†ü!R™lñ²åš·ôªV#¤Þ€°!1±±„Ë‘‘ü>ÆÅ1K1OãÔ…k•£)1)‰RÒÑQsbÛV-kÕ¬!•J™§:×;dĨ¶º¨¡i:¤aã)Ógê«‹!*U¬˜˜˜”‘!ÑWS}uy÷î}Þ}üƒªµl×áFTÛ¦Òõùz1<¼fµjÌã÷>ô4¸FH½Nݺߊ¾­žgÛÎ]-Ú¶¯^§nÇÐn§Îœe&^¹v-°F­×oÞôV#¤^‡®ÝnEß¾÷àAè_½«×©Û®K׫×o¨K8xøH›Žk„ÔëÚ³×¥ËY`J{øèQŸƒzüÝ—ûäé‘£ê6nÒ¨ÉБ£_½~£^Dgœ2™lÅê5­;t¬R¯AÓæÃFŽ}òTgܧO†֬[¿S·ÑwîèœhøÆ€¡(Ц¿t,:¶±JåÊwïßgÛµw߬yóC‚ƒ§MžTÆÅyȈ‘ÌgÉ€¾}!³¦M]±d!dÙÊUÛwîjÖ¤ñìÓ÷ï÷úÍÛþƒ‡².­r4¹–)#²°=nüÙóç333™‰îî“Æ566fžê\oHpí˜ÇßøÀÌs÷Þý¸OŸ5¬¯¯.†`L…Æ,5ÕY—1&U œ0vL†$cÔØñl›êÛ¾¹péRêÕ˜ßAŸ·mÝŠ™ÇÂÂbô¸ñII_ö*•+3‹(UÊ©3f%§¤èœ(‰ ܇ÀpÌ74†¡¹õõ¬óÓgÏ’““ý|}™OMBHÕ À)ÓgªT*­EÆŒA¡i:!!áÅËWGÿ=AQÑ*ר‡»ûÖ ë?}Š¿uóÖ­‹—·lÛn_¼øÂys\˔ѷ^¡PpþÂE&W8sî|ƒúõž=®¯.:¯nhÚªæÓÀÿC‡ä¢¦ê\ÄÊÊ’¢P*Yš]+¹»Q½jUŠ¢EB‚™W­¬¬!*•êý‡É))!ÁµÕK…×^¼l¹z_ooæ%kkë¬O•Jåó/“SR|½+©{nªÌœ3¦i‡£€Ÿ¯³¸£C ¡±ñüÅ‹;´më]±‚»[9&OÒ'EQ#‡ùÒn‰‰¯^½þïÔ)ÂŒ¤ù~k+kBˆR¥Ì:‘)'{dEQT6c³úgllljjš’’Jéܽ‡Ö ZSnDE­Û¸éö;"‘¨TÉ’¦&&ùX[[›õê6¨W—òðQ̘ FwpÏn–õ†מ4mzZZÚÛwïÞ¼}Û¸Aý„„D}u133˺҅sg[Š- !EìììÔãsZS}½º7Õ÷Î_¼4 O¢´¿U3•Òxhmm%ÉÌLKOgžòx<ÍùµžBR?§B˜!ß5‹Dbfjª€©©)óÀÒÒrÅ’Å6o3~‚B©ôóõ Ðß©ti}qB¢¢£7mÝvçî=‘È¢¤££‰ð»vÓ¹ˆÎ‰ïrsâÊÕ«å½<)Š*RÄ–2sê»bÅ4gP`$$&ö8¸Qó§OYXB.GFž>{.kÉÉÉɆ‡~+úv¿ûìݱÍÅÙY=Ñ­œëßý5jì¸ôŒŒÌÌL}ë­Y½EQá‘OŸ?w-SÆÙɉ9m‘m]Ô<ÜݳÞÁðšæzS©7XFFƇ]œÈ—ïÞ_4|{JQ66ÖL«:”°g–JLJæffúÑzÊÜaêÄ E‹~WY¡±±D"Ñ!ÄÃÝmþìYR©4úÎÝ5ë×1êÈþ½úVš””ãVÎÕð•·³‰,>§}®X¾<óûäéé3gŒŒXˆyÛ¨E«ôôt@àçÛ¾M›?J¾žÅÈêå«W2™¬c»¶_ÛMó:(pÙÜ‹éÆÍ›L?¹D’yóÖ­}Ö­S§n:„׫g9ó~üçáîö(æñúM›'ŒùŸV Î¥K …Âé³ç´kÝJ©T…GD\¿q“r3*ªb… \.wæœy:´¾};æñc­e™¯û/…;::øz{k¾djjÚ¿oŸ‹—|øø±vÍÖVV©iŸ#"¯ü{â¿S&³¯·^HHHpíé³ç( æä…uaǾF–ºHó«óù‹Û·iýå‹5ùî¾ê¯Ý|>?´s§e+Wq¹\O÷s.FÝŠ^±dEQúÉZBÏÐЋ—ÆÅÅ»»¹Æ<ŽÝ´uÛ˜‘#(Šb ÀÑÑA&“Ÿ<¥I£Fééé·lõòô4 õ­ÔÉ©´PhþAÕZ¶ëp#**GBvïÛ׸E+ÿ j­;tüïÔ)õô[¶ÖoÚÌ·JÕmÛŸ8yJ³5^½~Ýóï¾þAÕZ´mw#*êÎÝ{í:wõ ªÖ¬uÛÈ+W ™‡½‰ÔçVþêÛÏ¿jõVí;F݊ζÁ5ÅÄÆöV-¸NÕÚuúòòÕ«l›EgÛjbi¡fOÖ5²7ÈýºõêÝ1´{ÖeµÎF©OͰソ¹—k$46áóùFYðù|¡± —›Ÿ¿8Õwà`/Oi“&¸8»Œ8éÚõÌôÍÛ¶¯\³6¸fͩǛššÌ™¿P½È²•«¶ïÜÕ¬IãÙ3¦îßïõ›·ýa^з!dÖ´©+–,b¦ìÚ»oÖ¼ù!ÁÁÓ&O*ãârì¸l\-==ýïþ%™’±£F5òÓ§OÃFζYt¶­{ƒè 5Ûx²®‘½A&O›QÁËkPÿ¾ÙFkàÞ ð;Ññ©Ïçñ|c#³•¦é!UIDAT#žÎ|c>GòOíš5† #„Ô­S'´g¯56øûùÊd² ›6·jÞ|̨ÌKÝ{ÿ}+ú6³ˆ4S6p@Çö혧b±hȈQ‰‰IVV–înå!~¾>6ÖÖ„…B±rÍÚþ÷îÑ-”R·N°L&_µv]µ *Zah-ÈhÕ¢yÏn¡„š¦ÇMšœœœlfffHJ¥rÕÚuíÛ´fªV§v­'Ïž=~¼b…òë6nêØ®-3½^HH|Bšu*ûû3 v騡E³¦„…R9aòÔ©'4mÜHý49%ÅyÄ"‘¾&bžV ªÂÔK©TŸ<%99ÙÄÄ„¥ÁÕbŸFР~=æEQÖ¿wÿ!äÍÛw)©©M5üöRýúêEÆŒѱ};š¦ãããoÜŒ:úï BˆŠVe-üé³gÉÉÉ~¾¾æ¯jPࣘ•J•m`„u`eeIQ(•øäÙ³¤¤¤úuCÔSÖ,_:lðà·ïÞ%''×Ó˜^?$äÁ£Gê§~¾>ÌæƒJë©B¡0pö&R×ËÚÚŠ©{ƒ«9:8 …™sç]¸t)==ÝÃÍmâØ1</×íœmƒd Õx²®ˆ½Aüý Ù²Ò¹÷üftô+ðx|>_ ¯_Ïäo®`me¥~lkc+‘HÒÒÒ“ !66ß¾ØÙØØ¨߈ŠZ·qÓí;wD"Q©’%MMLôž’’Jéܽ‡ÖôŒŒ 33³lcÓü ›£S’S!Ö_LMMM !cc !V––ߪomÍTùkã×ì:?ö ™‡½‰²Ö‹½ÁÕ¬¬,ׯZ±z݆á£Ç(Š¿CœœrÝÎññ ì ’5TCâÉiƒ0['tìZ¿]¹‚_ é” xFå €òùóç¢EŠhNOMýL1˜§ ‰‰%J|yœ LMMmml!ññ š/©çï7pp£† fOŸ&²° „\ŽŒ<}öœÎб%„Ìœ:Å®X1ÍéÆÆÆ¹k/ ´µµ!„$%%«ãõúMJJ óaœ˜”ô­^‰‰ ?]rÔD_ÖßàZ<ÜÝ—,˜'•J£¢o¯\½¦ÿà!'þ9œëvÎ{ƒèŒ'ï ¢Orr²VÉY÷Þ\ P˜é8Áçñx<Ggàx×2eø|þ±ÿiNT©Tÿû·t©Rêõ¸wš¦8áV®EQÅíìÄbñÑãß–ÿï$óàÅË—R™¬KÇÌ›>!äfÔ-}1Ø/.‰>§}®T±óûß©Sú2¡lX` {{‘…ÅÉÓ§ÕS&M¶eûvûâÅEÿüvMĉ“'=ÜÝòu›æ¬‰, ®éQLLHÃÆééé 0À¿S‡vï?|H$¹nç<6ˆ¾xòÞ j—’”ôedƒÖ8V{oî·@¡¤ã­\ 0¦i½§™iZ%ô¥ÜÜÜ|@ß> /yñâEjÕD"ÑǸ¸£ÿþû(æñ²E Ô³<|ÄÈÈÈËÃý¿SgnEßfŸóx¼ÐÎ/[nÄåúxW:}öü«×¯™ùK— …ÓgÏi׺•R© ˆ`®/¸U/$„¹'ÄÅKᎎ¾ÞÞ<¯WÏsæ/üø1ÎÃÝíQÌãõ›6Oó¿¬Ñj-¨¯RÈãñþêÞmáÒe„¢*–/yåJTtôêåKy<^÷Ю‹—-çp¹å==Μ;ãfÔÚËów£²4‘¾ïë, ®ÉÑÁQ&“7¾y“&iééë7n¬àå% !,ÍÂÒ¶yl}ñh­1G ¢µ¬SéR\.wæœy:´¾};æñcÍ™u¹‚­M±÷qïŠ-‘õK¡B¡x÷ÎÖ¦˜AeÚ¹SIGÇ»vÏ[´8==ÝÊÒÒ»R¥ñÿíZ¶¬zžy³f®Û¸iמ½E‹™2q|P` 3½[—Ι™™û>xøˆ¿¿ßìéÓº÷þ›"‹ÏŸ»xéòq“¦XŠÅM7Ú³c[çn=Ξ¿P/$ÄËÃÃ×Û{Æœ¹¦&&NŸ$„tîÐ^¡PìÞ»oëŽ%ìíÇÕ¼i“¬¡f]P ìÒ©£B©Ü³ÿž½ûJ–tœ3cz€ŸS/…B±ÿà¡»÷”ttœ3cºzpb~ai"æŠ ô5¸&á¢ysç/^æÈåÈÈ~ƒÂNûGk@@ᇽþ»öíª[»®Ž~##ž½£½cAG¿I l+›üüe‡œ ¼}ýjA·@n`ï€?ú€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`ƒ\Ø W6È€ r`c¤ùd×¾].ßr…ºµët0Pèà°A®l+ä ÀÆ(ïE@R©T¯ß¾þ”ðI*•t,…ˆ@ °µ¶u(áÀ¡´¿£Åtbi1ä ¿¶×o_óx¼ZÕjá-ý…Bñ(öÑë7¯K:”Ôz -¦K‹¡™~mqŸâjרMÓ4¾%kâp8®.®W#²¾„Ó‰¥Å+üÚJ‡Ã‘ÉdHá¢T*)¥ó%´˜N,-†\àw@ÓtA‡P¸PÅ>ZL K‹!WøµQEÓ4>ùtÐÓ$h1½ô4 r€_ÞOûäÛwþÁªC7*¡iš&4¡ !u|'t«^Ðm ESú¾+ç´ÅhšŽ}“øIç«¶6EœK—Ͷ'£ðÓ×bÈ~m?í[²B©ZvàúÔÞÁ¦Æ%M)TDE“Ô ÅÌ ÇLJV+èfÐ×:º¦å°Åhš~úü±±±qZõ³~’Ò4ýàÑý'Ïb~tAg‹!Wøµýè\á黤ÒÅÄ¥R©!"Sã ѯd*Jª R%\Ѧ 鹦ë#-FÓôÓç±ÆÆÆn®îééi …\k###7W‡ï?yöعt™_:]Ð×b¸o#À¯"ùÚ©žï.D¿ì7ÿE}ÍhZE¹ŠÈ´\IËt¦LÎùúÑ«åFTÔ¨qã·l]»~Öí:L›5ûù‹š3\¹v­ZpHܧOš—®XY#¤Þ‰“§ò¬~ݦ#ñÓtÞúhš~ñêŸÏg…gk×=<¥FéÒ|G©P0éRéýÉSM;÷í[ÎÕóþû±O¹8¹êì]˜0eêµ7Û´lѽKç´ôô‹áá§N‹‹ëݶu«üÝv:«¬ÕÔ9j1ä ¿6ŠPÌwÙ|,S"ULÞtIª C»Ô¾ð ú'MˆŠ¦”*"S’Ïé™|JîQªÉò tþâÅ-ÛwŒ6´iãFLlEµlÞlÞ¢Å3çÌ-]ªdIGGõRêíí»voݱsøÁ ë×S*•y¯…¾61°Å^¼|ÊðÝËy¦§§=_·þÉÄI¾VV|ŠR)•ô×Η[ŽË}4y !´SŸ>nžÑwn=Œ¹çæê©UÚÉÓg.G^Y»ryY•JEQTýº!s,\½~CýzuÍÍÌòqóékŠl3$}¯"Wøµå{¿Â»øÏ£×œwsq¨ãï*àq !µÃ¶©_²ð!„Ë¥BüÊŒîR;>%dùŒÙ¸ekjÕ5¨¯u¿£ÁýûÝŒºµ}×îÿ®žÈ¿ÿÐáµ6ê߯i£F …"_*¢¯Y l±øÄOujÕOOO{¾aÃãñ*™›óQ*̹ “n¨T<Šr&$vÒ¥RUºOïòžÚ[®¬‡Vi»÷í¯_7Ä©T)¹üÛˆ‡ömÛ¼ÿðñÙóçåÊ–Ý´uÛùK—…Bãr®®½ºwsvrºvãÆ¨±ã÷lß:sμ·+6°yÏ/‰ÈáŽîÙ >!¡„}ñÎ:¨;lŽ;¶gßOññŽ%ºwéR%°2Ó[@“ìs3 Wøµåo®õøÃ´­õ«Urs*û>­B)ÑòÑm8ĈKñ¹DÀã Œ8BÏÌD@Q$!%C©Tq8”æÚ?ÆÅ½|õº_ïÞ:?òë…ÔÙ{à úk.óÿèñãËV®êݳG«æÍò+QÈ—£(¢PÈï† õ±±áQ”R¡`þ’,(•*•ŠV©ø4]Z¡ˆ;Î.´‹¹™…L.×*üS|üÓgÏþîÙCëÄJÑ"EæÍš¡T*W¬^s蟣¡;9;•NNNÙ±{ϨqönßÊ ­˜2cfP``“F ׬ß0uƬ=Û·Býst銕m[·*ïéyuêÌYb‘¨b…ò‡þ9ºbõšíÚ–uq ˆ?yÊô)“¸.ÉõµÈ~qT¾Ý_aïùGû.P¥råŽíÚ2£#§Ïž“œ’bfjºeÛö–Í›õëÝ‹¦éjAAÏ_¼8uö¬‡»ÛæmÛþêÞ­CÛ64MרVU.—oÞ¶£{×Îç þXùÕ¯0}[äó8I‡¦5Ó¤ªŸ$&|Šâp˜  QÑ´RE8­ GÉôfSF\ŽT®ò¹Y×®R)YBR*ê˜×oÞ2jø°ç/^lݱ3ÀϯŒ‹s~µŒÞñ ·MÓ*MQ*•̧8Q_@¡N¾ö.0õR)•r™L»pš&„p¹\}+2p“7$%%½~óöø§!ª¯1úûú0g.,,Ì™`ž¿x™œ’R«Fuõsg+Š/_¦¤¤VðòLMýÌLðó»p3þ¹ÀŠ"ù“+ÈJB!r%-SªŒ”Z¦LIWP„6âÐBeÌ£Œyæ­¢ ‡ x>;i®½ˆ-!äå«WvÅŠe]ËËW¯ÍÌÌLMMÕ‹ Ð?¤v-…Rye΂…+/̯ŸŠÖ{„Á-FÓ*¥JAQ*_.% (õՖߺ”Jæä‚B©T(YÏAØØØBÞ½{ŸµMV¯ßPºdÉbE‹îسçÁÇæ%J˜šš|Ÿ&„˜™™}9_£úrÖæÿíÝ{\Õð3³o‡Àî ˆ±"éyU¼4%E­ûI;@!ëe¥¨q%?ø ¬ÐK‰×Ò²°¬{S3­¼>P Vô‚©eæ#A„DAYvçÌÌýctî¸Ë.‹¬W–ûû~üð™=çÌ™™ß~>ÎoÎÌži¹Ý‚rqvæ7$"I±LÖrû6Bè•)F[ÑéÚ•¹üz‚°Íï V&Ù^xæË=GÇŠîçîpñú;zJ&Br !—˜D˜D˜d1‰hÑ ã –¸8*6îÔñn]©ôð}¬ßþƒ‡"ÃÃ6AÓôC…QáÂÛöQáÜ­‡´Ô%¯¥,þä³Ï““m–eÍÍÛhMÄ0Æ ÃИ斅³ó¹?ºp÷1¦16½¡R*ûùø—<*,ÿýêÕ»¾ž<á…¼ücbc3V,wêÕ‹eYíñò¢â¾£½eYÖ½·B¨©é¦Z¥â këêš›[ÜÝÜB+–½©V«„jjjBVæ íE æbûF˜™ éÌ9(erØ®×5ü1¨¯“ˆ$bCúÄ©‡¨#©žôW…ø©|•|ûA!òvÂ0Ì‹³f–üXúÍ·ß•oü`óµúú„éÓøB„MÓܲ¿Ÿß´¸É_íÜuöÜ9[QW"f0P Ã`¡£(£1÷|ƒ2 DMc cÊ@uÅ0Ì”I÷<¨-?!,ÜZ°$ÉþÁ`ˆ›4A"ëtº¶¶¶ŠS§\æÿ÷xî~ìÓGíìäTT\Ì×äæ½·ãëÝj•ÊÅÙùæÍ›Àý;{öÜC…"‘è¾~:1W»gáùÎ Ø'÷•gÒ?*¹qÓwh˜?âÔu;ŒÚêí$÷rwšø´t —émî¡Ñщ ñù›>8^~bØÐ!..Îõ×þíÒ¥ô´¿z{yqçWöþýÓ483áXiÙ;ëóòóÖK%’‡k"FQŠ¢‚ðËκ¸:ËG¯—™Y݀йÜ+-• EzƒÞt\!ôܘÑ?–iWddÆ {zp@@«NWªÕž9{.1!>*2B.—¯oÃó~Ža˜ò“'«NW#„N®îÕË!ÄÏ¢Íÿ%bfüŒ¿¸™E(`РWTT×üônö[$IÎJˆßøáæúë ûû¿ðÛ?wì\¼àõ{+v0·¹°@®öÍæó+x{ôÊO•µ­lïá[cŸD}—mvbÁv·‹1NLˆ új×®-[?iÕé\\œŸ [¶4ÕËÓ“ŸgÉ(Wऽ±äµE‹·l›ûÒìG1w7ò“Ú°'Ô3fÐ4s9k®MjÒŒK”©‹<â&)Š#G ýü˜vŽ1ÎX‘¾÷û}ûö(-Ó"‚Ðøú.ûkêÈgb0Æoe¬ú`ËG¹Ësvq~vÔè…¯ÎyÁÂÒ2í¨Ø‘±‚Q†‰ãÇÑ4½{ÏÞo¿ß××Û{Uú² Á4MO7c¼{ÏÞ]ß|ãåé¹xáëcbcŸ8‰ºSëÖå&%½ø¾[Í™šþ…3üØò[÷U—k¨k¸¹;c© ‰ärykk«ðF’¤B¡ (Êh§ “ɪª«BƒC,b,Ëþtæ4Í2O†=ÕÜ|«nûuoåø´ÝM¸=¦º,—»/Zà1}š£ƒcqÉ2©n·Ã0---¶:–.FlÐÀÀªêÊK…?î15Žfè «³¸Œ !Ä"D’¤ûÂWݦN–ÉdGŽ–ËÃžŽ±pù®×ëõz½5¡¸sç· ,7jf®7Óò¿ ˃\ì› ïApW´ü_Œq€—|áó~MMM Ã$)‹¹Ñ.Kà¤RéÝGçºsaéTÄ‚C**O—üå7ÉiüX–½ïM’"‘X,‘9rX&SÄ ²áý n1ÈÀ¾Ùj~„q?„I’>JþýO$Ir£|‘HD’d÷<;šýDg"†1öëï_Yu²¨øhtÔ™LÎ0 Ã2,ò,CÓ4ƸðP¡X,‰x*cl«É!ºUÄìø ÛͯÀu%•J%‰L&ãž0à±,ËÝw I’[àRÔ/£Í¨[±ÖÖVN§ÓéÔJ¯ŸÏŸýâ‹íÜo¹¹Y†¥šeX¥‡20,èÖ­[ƒA¡P888<êC·qÄ WûfÃ\Ç%ÞYè¶Y‚åݳ>b …BzOHPEQÜÝîœÊÝ”‘H$\v¥P( ……‰œ»?W€ÊvïŽêaÌ>½Ø™ˆ‘$éèèèèèhåFíú‹€qè± Wh—…˜@ÄÚã Ð3‘$É¿EðQïK7B…)©Ätò$ˆXû,D r°o®.®7{»ô67ÏAuxBµÉW؉­žÓl¾Ý¬R©L« bí²1ÈÀ¾yöñdYöÚõkü´}ÀtžAa‰5³4v¶kú$¸—‚eAÝ}ÍÚëÌÕÅÕËÓËt"ˆXg#¹Ø7Œq_ï¾¾ùZ~êÐCœÿŸüÓ4ÝîDÑ1sÌE r°{ƒ¡ëoOø¿딇r«=ä °rX¹,\–@®KÄ!Ä2]í=”!ôiAÁ£Þ tSĉ'õ>z&FS__Ï-+-3m04:Š[P«Õ§*+FŒŒå«BÂ#O•k…gÏ—›“ãæÖ»Ýmíܽ;w}Þ¦ ï 6ZknrrtdĽÝ(¿ …ë9ñ¥9³“GÄ 7ímùêŒéSâ¸?ÿrþ´7÷ìüŠo0%>áE)‘ááµ2Ödk|›•Ï}ÜZ°íjmmzÚRËUš63qù›K MãÃKK_ÞÜÜÒ×Û{ÙÒÔ5kß®­­svvÊḬ̂¼–eæÂÛáþ´( ë½ãËí*¥’ûØÐПPtp?ßøtuMVÎÚ|VÐaWÀ†ày€}˜7'9-}yuMM[[[KKËá£Es^™ÏU}üiÁšœ·s²2MÏd/%%½›[]S£Óé*«ªÖ¾»Ž¯Jž´öÝÜÒ2mk«îÒåËY9kùªéSâ2³sªkjôzý/çÍÊΙ0~_[\rL*•™žÿfL›úqA¶¼Ü`0”?^ðùçñÓ¦vXÕ¡Áª¨%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/denemomain.png0000644000000000000000000000013213135434036017550 xustar0030 mtime=1500919838.113315139 30 atime=1500919915.486648472 30 ctime=1500919913.336648472 denemo-2.2.0/docs/images/denemomain.png0000644000175000017500000102065713135434036021434 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRÅ}rsBIT|dˆ pHYsgŸÒRtEXtSoftwarewww.inkscape.org›î< IDATxœìÝy˜Õ}èýoõ¾÷쫤Y´ï H $0fŒÑMìØæÚ‰—¼N^Ç÷&÷æÍÇN± 6Œís1;ˆ] ²@ëh›Ñì£Ù—Þ—Zî=Óš­G#i!ý>Ï3ÏÓÓU]ç×U§NWÕ¯Î)0B!„B!„B!„â X^üã?þã4†!„B!„B!„B!>m¢‘0Ñh„ûîÿ ý= C:< !„B!„B!„Bˆñëéî »«ƒ9óŸèé4x@ &`2™P“ɤTª¦a†®c2›1™L˜%õ^ÿßp>Ÿ¯×=ä½ûîÿ‡j›9t¬yR¾¬B!„B!„B!À‚ÊRT”òíoýåt‡rΨ¯;F}Ý1€¡I§¡R‰£dRÅj³bµZñge¡iªªÒÖÖF"‘ ™Lât:q88¬V+š¦¡i†®Ÿ4˜CµÍ„U3¹%õý„B!„B!„B!F«‡j¥Ìdɘt2ŒT¦x"ÉbÆfRðge‘H$ˆÇã„Ãa"Ñ(‘H„¬¬,Lf3§«Õ$Ñu}Po'EQF-çбfrK*È‘¤“B!„B!„B!&QwK- ÓÆ9kŒ¤“ަituv`±Z±X,”–Τ¯¯®®.ÞyçEAœ.Wª·“ÓÉ‚ ±ÙlØl6’‰8³³ÙŒÅb!Óc£,6;·w’¾¢B!ÄäÛüÀß§_ßp÷?Oc$Ÿ.¯_ÇÆë×ðøËïñøËïMsDBˆ³Ñ¹ØVœ‹ßI!„âÓÀb³Owg·Þz‡ŠŠrÊËËÒW.ðÄ“O³|ù2–/[š±“Œ‘tx†“ßïÇbM ¯§ë:ªª’L&±Z­xÜn<>¿?ý¹D"‘~‹FSÏz2™ðy½ÆèÃí隊šLŒ:M!„âlSVRÀ¬’r³|:ÖÈ¡cC¦+f4‹ Ýêΰ„sÓe.Áé°ãrØÙôæöq}F×´ÿÄ(f’ÎüIŠPœ †×³å *Y¾ r\Ÿ}tÓ›“›Ãn£´ —’Â\J r1™L˜Í&’I•DR%™TÙ¼uǤÆp®šê¶âK·\•~=YõFÚ?!„Bˆé¡kêt‡0ªídÇŽg´ŒoëîqÍ×ÜÜBSs3›_~…¹sç0oî\6l¸rH2)‘HH$yñÅ—xï½÷ ‡ÃÄc1Ö®]“qÙãJ:Ym6,V+º®¡ª‰D‹ÅBVV………ääæ‹ÅˆF£$qÀÀÀ ¦{C¹].Œ ]tMCMÄǵ2„B!¦[I^/›ÇÜòRÔDœý‡ª‡ÎÐׄáÌGuŽñøÌsÐÅËæ‘›å#'ËË3¯¼3®Ïèú‰‹®J<}M¨fßd…(ÎÃëÙâÙ3Ò½ENæ×O½<©±YVfç²zé<.X<›Õ‚Õj!ŽÄE¢lz]z³œŽ©n+שɪ7Òþ !„BL!7ÿœEvìØÉ}÷ÿ⌖1Þ¤SSs3;vìä¥Í¯°xÑB›X¿þ àÄ£’‰$¡Pˆgž}€½ûö‹ÇPUõô’N‰D‚P(Š‚]Ó±ëÑXŒD"ªªØlv,V+f³™D"‘N:eeeaÉDê¹N}}}ôöö¢i‹‰¬¬‘Ñ2¼žB!>-,3•å3X»b!/oyÖcûqkGÎg³c>OŽoR=ÛÖ®XÈÑê>üÃÔ:ñbx Çü¬ÅjñžŠÑdªgÖxOzžßÿþ÷<þøã—áðÏÀð•NJŒßûÚíÌ,ÊcFQ.ÿüï?ãxs#Ç›)›UÊâÅ‹Y¼x1ÎP=x 0Ü“ùj:Û gwÕ¤Ôiÿ„B!¦Ç§ux=“É„ËåÂåt’—Ÿ‡ÇãÆãv“——Ϫ*¨×rÞzë6¿ü /m~€U9Pu€ ë¯dýú+صëc^yõ5^yu ]]ÝéÏ~ôÑùè£?rÕ†õäç瓟Ÿ7bù“Nš¦“H&QèÏl)ÅH$â$“ L&Ã0P5D"A<'‹‘…‚aè躎A*Gèìê"//{Ô²ÔDœX88®"„B1Ö,›OIž·ÓÎömïЈ¡Z†£·aÃ/]Æ¢%Ë(ÈÍ¢/¦/æ¾G7ÑÑÝG{W/pâî¡›7\Ìüʙ̯˜Aa^6áhŒp$Æ‹o}˜¾opñ7û¯é×ÿñ›gY:¯‚¥óÊÉËöEè …yä©WÉÉò’ã÷rÓ†‹±Y­Ø¬Ž5ç£=‡Ø±çGêšÓËQ…¹å¥Ì)+áÖ«?ƒ×íÄãrÒÑÝ×C/¾õ€½×K ó(-ÌÅí´ÓÚÒÈömï ZÜèšrÝkX4§ŒE³gQ\C0%ŠðÄËïRV”;bÇÂÁôº¹öòÕ,œ=‹•3)ÎÏIõ‰ÆØôæ®mâ𱦌ëæßyš¥óSëf<ÛáLÊk;Ì)+IocËIO DO_ûÝDWo®ÞÀÕ‰±|éÖ«ÓC…=ºéM}þ!Ó«¾üýôë…³gqÁ’¹\°x.•³ŠSIEaß‘Zªª¨ª®çûޤç?:486€Ÿÿî–Ì+gñÜ2ò²ýünÓ›é¡Í2Ö3ÓÈ ÷ÑœEׇ¢( Ñ~—)Îeó˰YS§XG÷LH³¶æ²¯ËÂþ­U(oïÅ‚ -‘DcèùÏåk–±xn‹æ”1³8UÕHª*nz“£uÍ´¿Ž'–ÓÙS¹ßåçøÉËöóõ;®#Ûï%ÛïÁb6ÓÞÕK[WÏlÙFK{-m]C†c¯¨¨`Æ Ü~çŸâv9p;4´´œq;;¼N¼ôÒKé׃÷‘ñ8Û?€GëÓóžé¾ûáîƒ|øIo¸—ÓËa§±µƒTóñ£ÓÚþ !„BŒæluí ·ßF$! ÓÚÖžzÝŸc ‡Ã„B!Ú;:N{ùW^y9†aàp8xú™çÒï?ýÌs¼ÿþvzøöí?€®§ò<, ë.»”Ë.û ‹-̸üŒI'³ÙŒÝfK/̤˜úŸç¤¢ª©?°Z­Øív’É$öþg=%ÕT/'C×Ñ4 MS‰E£$“£•h2›?µÙE!„Bœ_Êgãr:GcôtwÓm˜ìž!óÒÚÑCãÖíÌ›™O~~\²b»VÓÝÓ ;yY^ò²}¬Y¾ Öö>Üþ>ÙÙÙdgg³fÙ|6 f45vŽO‘ßAëñš››)/Ê¢¨¨˜¢¢"6\¼’XÜŽßçÃï÷³vù6 Š®r´¹{Ä2J²]´µ§¥¥eÌí0eµz›¨®®fF¾ŸÂÂ" ‹Š¸tÕBö:F_0fÛ„Ô‰áL&ó‰×É0Öh†ƨóZ£v8|¬[½”²ÒB ó²ùÃŽ„BA¡ š¡€ÙÆ¢Šv8 & ˜,§U‡ÇïµÑÜÜD}CV-ƒ5éx3Õ3,#“Nc[LÄ:Îg"©b6™°Zàºë®£+” 3˜ -#  …IXÀl¶£˜S1æfyÉËòrùše8íVÔd’W¶¼Žª&Ñ’IrÝ.Zl`A³̶qÅ2wÙšSÞS¹ß•Ï,aÕÂJ ó²ikkã𡃴µ¶ ` °¨¢-§½£,Ž!uÅãñPXXÈk[·“ës‘ëw³xñ€3ngÔ4ñøËï ^ï÷¿ÿ}úõà}d,9>9~ÏYÙþ®©“yBö]ÝB‘ßÁ–w> Ëã Ëã`ÅŠ•,š3‹lŸgZÛ?!„BˆÑ˜Ìæ“Ï46l¸’d2A2™$ “L&I&“„Ãa‰ÔëP8L2ý:D]m=µuuãZ¾¢(TT–³+©ª:H{G'ýI¬`(­¤ò;ý7ú¸\©ãÖ®¿Ž%‹±dÉâ1—?fÒÉÖŸt2™Ì(Š’N6 $žP¬ 6›-x²Z-èºNÒPû3aªªFQÕä¨e™Ì–Q‡B!„8Û”Í(ÂítŽDéîêOŠ{dÒiWU »Ÿ¿¼aý£¾¯iÑh”H$2¤Tk[ïðî)%*+*¨(/筷ߪƒé¤S(J=vi§3uÜzë-7QZZBIIɘËϸvãñ8}ÔœÙbÁl6£‰DUMbµÙP5`(D8!‹‹Åðx<¨ý½›‰dæME”N†×B!ÄÙn`ØŸµKçRWßÀöc˜¬¨º 5©™÷ÑG%œÐ 'tÞŠW¹˜QZ‚Ï¢BW 1ÿl*Šr¸öÒTO˜Cû÷°iÓ&úb:Ö±·šˆ“ q;X̩Ѻۚ ÆuâÎ"v6«ü±iÊ«ÀíD³ûÑlþÓªCƒ‡L¾“¾JP ”H(c=SõßëÎ;ïäÎ;ïÌøÝ®úò÷'|¿çz‚5Kf³fñlfÏ®d×˂ٳØpñ t]GÓtî}äIŽ5µq¬© €Ù¥yÜ|åjvíü/¿ü2í=h6/š5ûž|“Á” £'54ëÈöf´XNg{Lå~g24ÜNªªôÒÝÖLÜYDCÔ±f•]÷þªÿ{GHxMCêÊž={úÛ6•C›½üMÿ´ÉhgTg>Igþ‰7NrþZY²ä¬mÿèªA=ƒöøöxþùç †uBA5CŸK5ÙíŸB!Ä©:Û‡×ËÄl6ãñxðx< }Flggï¼ó¥( Š¢ð­¿º›'ž|šãÇ[éîé2ÓéÄépðü³OPRR<Ú¢FȘt2™LX­V0@1)Cz:©ªŠ¦iDÂa ­­ ¿ßßïÇl6£i†aL&I$$ ”1‚áõ„Bq¶s;íxœv‘pˆ¦Æ› “Í1â8&¢šÝ(.7ŠÕžˆþÄ•¡£›»Ã§¿›ºªªÄb1LÎt‹ƒ¤‘êaµZq»Ý˜õ8ŠÉ‰i´²,—ÅbK —×/™LFQ\…˜Ìvˉ‹’Š¢ &“‚ÅfÇëva³Y¸ñƉ«:ñ¤†Å•Íâyx½^ìf-ýqæøÉòûpØm456EPl.,6;‡¯Û™Ž%£¸r0Y('1! ƒ'>ë`þüÔùh“Չɚú6› ¯×‹Y‹¡X£¯›ql‡ ++Ãv‹³íÄPa©í0±ub0k´S2<ì]eÌcïcó=‡ë(-Ȧ´ ‡k®¹†HÒ ’ÐéÄhí袭£›öVSj¨8ËéÕ¡áÃë ^›#µ’Ƭgƒ—±oß>öïß?æúp(‰ ÝïÇÙˆ°ïH=Ýݽ̨:ˆ×ãÆëq³|ùrL&f³‰U‹çOÄihn« »ÃŽÛ•ªg‰D¢?ÉÆdqöï³ ŠÅŒbs€É6¢gW¦XNg{Lå~×ÞdÏá:Ö,™ÍìÙ³1™L\ÖÇU"q•=UG ÷é8|;ŸhÛ Àâ@±œˆa2ÚY8õsÖ³ºýƒ3nÿGßEýÛc”:: íŸB!D&gûðzS!  yò©gؽ{ÑXlÄýÙþ ¶óæÍcÞ¼y#æ³Ùl©gfX7ãÝQÖXÛah,Y˜Í6”AÃ9((X'†¬Ëhf52ê:ÎÄd¶ Xmì9\‹ÙÅyY\sÍ5†aÔ4¶²ûP-»ÕÒJ¦‡Š;:4üdïÄzÌÆl¶¦ß«ž ^Æþýû‡ …6â{¸ß ³+¡«§—½ã䛃”PRTÀ‚ °ÛíX,V-šCCSKêMV»—3OjÌöäÌÀd¶¦ž—@júh§Æ™b9í1•û]Go=‡k¹pQ•••Ì›7]×é „èî ÑÑ¡­«—, ½0p¢mËNíkÃÛ¶ ngáÄ~1^gsûÀ¶ÿ÷G4EÉÎu{LWû'„B‘ÉÙ>¼ÞTƒ47·ðÄ“OFSçÃ$U•¤ª²£?étÓM7œ4ñ”qíjºNRUÓ'—ºn c‹ÇI$’ýE£QÜ>Ÿœìl’I•x"A,£³£ƒp8Œax=ì¶Ñex=!„Bœí g—°zI%½ TíßKÜ[†‘Ô0´‘Ç1ªª’ŒÅøˆ!Ä 5„R /@Gw/¥…y8²²²hŒÅp;œ¶ÔaZ8&€GGH*§QV,ó @C©uõôáq;ñ¸œüùŸÿyzœè‘”tük–T’ëwÓRµ/ª= ÕæGééíåxG7奅¸Ýn ¨Ž&€Ôs>ó‹óqXL#Jˆ…ƒºzú(ÊÏaÓ¦MlÚ´‰®®® ßBA溙²&³N\õåïcv¤žÉ4ÌÀñ¼ÉdêB¢á .§—cd/:ñü–wÙüêXŒ8sóQTTÄŸýÙŸ1£ ‡ «ñÅ¿ú ³ Ãd=­:”y=Å€wÚUÏF[F4gÑ(å¦ôáÀýnhœƒ5ª^šêÂP[ÍÇÕÿÎM×\ÉM×\‰ÓéÀª†¡§˜a§¯/@GW/Eù9ég %AQ3~‡ñÄr:Ûc*÷»}UAöUaË+›Éu[ÉqYX¹rË—/gÙ²e|ïÏ®ç™WÞá™êCèV÷)·méï4Qílÿ~1^Ÿ†öïLÚÿSþ­™ÂßD!„Bˆ“ù´¯7Q~÷ØãlÛöïm{U=qÞa±X(,(   ŸOvïI¿ÿô3Ï¥_oX%ë×_É4òX6½œLL&†a i` ©š¦¡ë©qij²²(.*“‰‚ü|lv;‰D’x,N8& j6«ǃ-CÒI†×B!ÄÙ.Û¤æ–V¡0(&Ì(& edÿƒÁÇ7ǃÔJ}áµÍí”æ‘——ÇÂ… é:¢´(ŸÅ©g‡twwSWW& &³uÔc¦ñ”•ÉÀg×µP^Z€ÇådåʕԷvÑp¼ ·ÃŽÛig~Å j›Û¨knO/³¬¤Í-­ ˜P,6Ì&“•ž`„#u-”—R\\̪U«hÛÝŠ «—- ¤0oÔx{‚×µP”ŸCqq1+W®dÛ'GÐ…‚l¹Ù>ò²|¼óÑ>‹ ‹õôÖÍT•5ÙuBQ²ÓÃ79 „£ø=.ü~?³fÍ¢As3«$ŸYÅù#æˆsÝ‹èê»›5†%ª@_êb±®k¨ªŠ%Â0û1lžÓªC'[Oƪg§Zç'c¿pÕÅËéê Òݤ­»7uî¤iääât¥ž©ÖÚÚJ(DÁÀb³Ó=¬þ]pÁ´~܈n¤žÍ´xÎ,Žwôp¼³gD cÅr:Ûc*÷»²â|ÊJò9R] ºJ®ÒÚ— 2–:éUUÔ(–dÝsÊÛy`úénïx"‰ÅlÆl6áñxˆÙœÃÊÛxýºôëÇ_~oÈ´OCûw&íÿéþÖdŠe"…B!NæT†×ÛñÑNvìØyÆe®]»šµkVŸñrÎD$!Žðî{Û¨¯oHçy¬V+V«…®¿Ž¢ÂBŠŠ I$´wtÒÑqâÆÆªªƒx<©óš ®ÌØã)cÒÉb±à°§àÉ$Éd’@(ŒšT§ÓIQa!ÅEE8Ýn‰Ô³››šèíí¥··—@_Ÿ?Õª¸¸8B!ħIn–Y%,œ=‹ÇŸ|ŠÆæV4³Ãd=ù‡ÇpèX#=}¼6N·—õë×S¶8D¶ßGv–—]{ö±ïöï݃nu£›'o¡ç^ÿ€Å•%,ª,eݺutctãè(FÿPjœö°Žq¼—Ü, gÏbßþì;p ØÓëåð±&:ºzÉrY°Û¬[·Žœ™mÄ“qUÃëL]ÌÍÁšÚ»z1ë ¬f+ëÖ­£pÎòþaŸûcÒUÐ5Œ?1œÓ©˜Ê²NæLê„nu£[Ý#–y¤¹—-ïíä³—,§röl¾ð…/p¤=†ÅlÂjÎ|wZia3 sA10[lØ­V3mÝÔ×ÕÒPW‹9D³¦ž#tªuh<\;N‡}Ìzvª&s¿[Ñ Â‘(‘hŒ¾p Ý0Ð ƒ\¿¿ÇÅ‘cõ¼üâ‹«oLǰ¦Ž®Ìz‡ÍÂE]„¯dªf ê©!ΓñíÇCè&Æ8ã9í1•û‚ÏãJÕ±¢““ÉŒßeÇéöÐÖÙͶ÷Þ¥áØÌÉ úi—rúÛ{ÇžC”æ2£0—7Wì$nz3½ì/ÝrUúõÓÏ<‹fq¥÷ÁOKû“³ïžŽ³é7Q!„bÀŽ;¹ïþ_œñr¾Í_N{Òi@,#™L¢ë:……,Z´Å‹ò…ÛÿÇ‹×ë!''‡íä£vr ê ªÒÞÑÉGí¤¢¢œœœl²³³G,Œg:™S=“”ÔvºnL&ÓCs¸œNœN'v‡‹ÅB$! qüx @€@ €ÕlÁaOu‹Oõtý Z×´ó¾K›B!Î^~·¯ËËi§±¾ŽÞ@Ýdóøeðñ®k#¦«‰8­í´ut²{V.³ËfPYVʲey„£qB‘¯¾þGVqäða4g!ºú(eާ¬“ÅyàÈ1¢¡^º;Zù“k¯ ¤¤¯×ŠB{w/í]½lzåM:Z1Bíø+çàrÚ‰FB4Öס›lèhýåµwÆiïìbÇÇ~Î)gÁì2n\_A0%Šðì–÷(-Èɰnâ´¶wRì5±hn9 ç”sÓ•  ÿNªýGë8tô‡ŽÃµ£Ûý¨¶‘wYo;LMYSY'«on%²zayyyTVTPÖÞEUuUÕõãÞÆ‘šz>úè#âš‚n²¢&â´µÇikï¤Ès¢þ]ù’šFRÕxôù׉{ÑÃÝèVÚ(‰ÅÑb9í1•û]GW7G,&î¸f-y¹¹äæä jݽZ;ºøàƒèîíÃèŸÿT·óÀôÓÝÞŸTUcè:y~Ïçýú©—G/¬¯ ÙêLbÚ¿Ómÿ3í»gËo¢B!ÄÉèÚÈã‘óËåÂår±fÍjŒ ©©™Â‚.Z»†ë¯»–¢¢Âô¼ë×_@(J':::èèè ¶¶EQFM:)€©±Þ{º;èîJu—êé飻»Úº:úúúèíë# ö?ßIGQì66› Ý0R›ŠDˆÅãØl6lV+óæÎ%77—œœ¼^/~¿Ÿoho§õ·|™Âò”ÍŸØ5(„B1A¾|ó•Ì-+anY1ºñNtgš#YCæSÍÐ×”úÇ?ÃW:tzãŽôkcæÚAS ˆ!D w‚¡®Ù6†Í Þ¢ *ëäŸ%Ò…’¥bR=¯Ææ»ÃæáËwÜÀuë.à¹gŸå¹gŸ!™=,ŽÔßp‰0$Â(¡ÖÔwÓÕÔ|v/†ÍƒÒ]“1^’QHFP‚ÇûïîïsÚl³ Ã[Ô_®ýŒ×Íd–5Ùuâ¤âA”X/D{SÛÕd“Ã[ŒíhÏÈ8Õ¨1”ÀqЩ?EIÅa²bdÍJ½6ëu4Ž:„Ãb=dX+T°|~ù¸êÙ˜ÛuT¿ß(‘.ˆtA2†ºè©Þ(Š œÙàðaØ}©m0Xºþµö׿dês†Ý 67ô'ÆKÚ)n¡±Lò~ëE‰÷Ç–¥+XÝàðc8ü©ï}²åœtúiìS‰0$B(}Í©mih#¾ß¸¶ÃYÚþnû?dß=ƒßš)mÿ„B!i¯?L[Ý!ÞÞôÛéeˆûîàŒ{UU9pÒy Ã`ÏÞ}ìÙ³—/Þq;‹ó(C<øþýÿRÏv&ðÛßúË!óÖ×£¾î_ýúwÆx¦“¢`6›q»\¨ªŠ¦iX­ÖtA ©ÞP‹Ã0p9¨>&“ »ÝŽÝf£°°—Ë…ÝnÏ8¾€®©£>LT!„âl0£0ÅÐhniE7 T4CáÇ/ŠÅ™zî„¡ØGL˜` ™f€®€ÉŽbÏÃ`à"µa¶b›À²NþY0ƒÉ‰b3ƒEô¶ C±¡¤†]š[Zé SëÅP@ÓÀå¸N7@±ö?=õg²ôf;^MÌ(¶¬Ÿ0™Sëhx¹g²n&³¬É®'£&Š= ¬júÙ2°zQúO †Ä©ë`˜Pl¾ÔE_C”ÔgMf ÝCMmß!N^‡†ÄŸa=z6f掫ž¹]G5ñûÝÀwW¬^09ú—9ð§ô'윆T”aÇ¥ëŸÿDýS ³°‚fã«{Ãc:¥í1$–IÞï SjØ0$0[1LöTÝ4ÿɶó„îSí–#75oÿPsC¾ßx¶ÃÙÚþfû?îí1•¿‰B!„§@×Ô“Ï4 Ö®]Í·ùË“Ïx†E¡¨°eù2,KÆÜÍÀûÖ_ @4cé’Å,YºxÌå‘tJ ár¹Ð4 C×qº\©‰ýÛ…*€b2¡( ·‡ÃÝnÇãñ`6›eÉF^†×B!ÄÙlFa.ÝÝÝ4·t éšª®Àðã“]D1}¬iŠìŠ>‘e쳘ÁìLýF'tª®®& ¢éFjè:é¸Î¶¬Ñ'lÝ`›”÷Sñ k@/„3Ý“UÖéÄr*ubù$O=õ---C¦Ùl6rss§)21ÕÂáp:Ùx*>Ÿo":5‰D‚ÞÞÞSþ\AAÁ$D3=Ž?Ϋ¯¾JGG«V­âꫯžî>U ࣣã´>›——‡É4ýcuww£ªê)}Æãñàr¹&)"!Ä©¤“B!„B!>u:;;yî¹çxâ‰'سgOÆùŠ‹‹Qe #ÓéÞ{ïåg?ûÙ)®¤¤„]»va³Ù&!ªñûáÈÏþóSþ\KK v»}"šZo½õwÝu@ ýÞµ×^Ëý×a±ÈeÌñèëëcáÂ…§õÙû￟7NpD§æøñã\pÁÄãñSúÜßýÝßñ·û·“•âTLêZ!„B!„bâñ8/¼ð7ndñâÅüà?3ᩤ“'ÓÒÒÂc=6­1tuuñë_ÿzZc˜N½½½Ü}÷ÝCN¯¾úêi%Å©ûÿø4M›Ö~úÓŸžrÂIqv‘¤“B!„B!ÎjŸ|ò ó7ÃÂ… ùêW¿Êk¯½6î¡—JJJ&9:q®øÙÏ~F2™œ¶òxà"‘È´•?Ý>øà:;;GöüóÏOq4ç§ÚÚZž}öÙi+¿­­ßýîwÓV¾bbH¿T!„B!„Bœuº»»yúé§yì±Ç¨ªª:íåHÒéüróÍ73wîÜQ§}÷»ß3YÙÔÔÄïÿ{¾ô¥/MVxõôôðË_þrÌy>ûÙÏrÓM7:ÍjµNFXS* fœ6¼÷“ÈÌåre¢qóæÍlÙ²eÌÏß{ï½ÜvÛmÓòl§ûî»oÌ^NŠ¢pÿý÷:méÒ¥“–âIÒI!„B!„g]×Ùºu+=ö¯¾ú*‰D⌗)I§óËòåËY¾|ù¨Ó¾÷½ï´‡ÜO~ò6nÜ8åÏzà‡ÃcγhÑ"î¼óÎ)Šhê­Y³³Ù<êðn—\rÉ4Dôéd³Ù2Ö“úúú“&ª««yî¹ç¸í¶Û&#¼Œ:::ø¯ÿú¯“Îw.ïBœ+dx=!„B!„BL«††~ô£±bÅ n¿ýv^xá… I8”••MÈrÄù¡¡¡'Ÿ|rJËìíí=i/§óAee%ßûÞ÷F¼ŸŸŸÏ?þã?N}@ç±{ï½]×§´Ìû￟X,6¥e !&‡ôtB!„B!Ä”‹ÇãlÞ¼™Ç{ŒmÛ¶aƤ”SQQ1)Ë箟üä'|ñ‹_Äl6OIy=ôИCËO¾ÿýï³hÑ"žy溺ºXºt)ßûÞ÷ÈËË›îÐÎ+GŽáÅ_ä–[n™’ò:;;ùõ¯=%e !&ß9™tz{ë»hš†¦ìŽkRL˜L&Ö\xí´wtpÉE‘H$H$ìÙ·™3f2kæŒiˆüì¤iº®óÖÖ­PXP@IqñˆùÚÛ;èéí¥·¯µ«/œ°òãñ8ñxœýUUÌœ1ƒ™3&wÛ†¢(S^¶®ŽÚºzÉÌw*–ÍœEÙ¬YX­–QÇ¢ÖuÃÐÙúÞ6*ÊË©¬(' Ù lÃóAuM ñD‚D<ÁÊ£!qðÐa ÃÀÀ`fié¨ëLœžÆ¦fšš›¨,¯Àíqãq»§;¤óªþ¼óî{hšŠÚ?‡Bê»»ÝnòórÉËË#7'gR烡Á`ή®ôïäT‡Ã„Ú[Z(**¤¸¨hJÊ=›hš†¦i¼ýî»ø}~²ü>.X0꼇í?NéåòË.Ãj±Lù°9纱ŽÁ¬ûÌ¥ë!µMëêë©«o`ÕWLR¤ã7¸MÍtÜ1]Î×ó—-o¼AyYåee8ìöÓ›š› …Ã„Ca.Xµò”– …hmk§­½Ï\|ñD…,F±wï^{ì1ž}öYz{{'µ,EQ(//ŸÔ2ħWVVÖ¨u°¶¶–gžy†;î¸cÒc<ôÐC'é|rã7rã7Nwç…±êÛ=÷ÜÃÍ7ß<%ç—<ðÑht\q !Î~çä™ö[[·’L&GíŠo1[0›ÍÌŸ7—£55ì?P•N:C!Þßþ!—^ÂysÒ6º®“H$Øòú,[º„eK–Œštjko§®¾žÚºú O:õ|ðáøÌÅMjòÇ0Œ!I§©*÷\W[WÏ[[·Ž9>õºK/%?/—Ë5ê…(ÃÐQU7ß~‡«Ö_IeE9}ÀýøÄ¼©;$χ ïGkjS¼3'¡:º®ãózG]gâô457±ý;p9]Q8íI§ÁmØùâwß%žH¤6«( ù,\0Ÿ…Š’N:MÖï|0¤åøq>²¥K¦0é¡­½wïfÕŠçmÒ)³åõ7(›9“Y3gfL::r¤ÿ8¥Ž5^N§$&ØXÇà.\¹*ão=€ªjT×Ô²õ½÷Κ¤¤Ú–LÇÓå|=Ùòú\±nE……“Nmmí´¶µrÒ) Q}¬†={÷IÒi’ÔÖÖòµ¯}={öLY™ÅÅÅØG©+B|ó›ßäÇ?þñ¨Óî½÷^n»í¶IïíôðÃÓ××7®˜„˜h7nä±Ç#Œ˜vðàA6oÞ<é Àîînyä‘ôÿ³fÍâÒK/åñÇŸÔr…“çœ<ÓÞ ŠÕ¬âÂU«(öÀPŤ ( .§“¢‚â±ÔE*UU‰Åb:|„óæMGØg-]O]ìß³w5ÇjyãÍ·ùÍÃbv‡p_ @Ëñã­©žÐò­V+.§“¹³g““3¡Ëîwÿžß>öx}ó‹˜Íæ)+÷\×ÞÑÁþUüÅ¿ Ÿ×‹×ë1O^n.>Ÿ7ã½aèºÆ¾Xºd1ÀˆýxÀÕ×ßÈŸm¼“?Ûxç” ‡0]æTVòêëoðêk¯ó§w~‹Å2â;?»éÖ¬¾5^q‰ÓÓÕÕÍ‘£Õ\¸jYYþégHf2™Î‹äÓþªƒ¬Z±‚Ë/½”™3f¤o»>ù„mlç¡G~Í£ü’D"A<Ÿ”ßùX,FOO/õ ”Íš9¡Ë³Üþ›#jëê©8OïàÖt¤ª²oÿjëêp»ÝüÉ­£òü / $ l6ÛG{îë|ÀX¿õº®ÑÖÞÆ¾&+ÌS2ø˜âlû =_Ï_öìÝǼ¹sI&“£Nïêꦹ¥…º††S^v,£µµC‡œi˜"ƒ§žzjJN C뉱}õ«_åᇦ»»{Ä´ššž{î9n¿ýöI+? ñàƒ¦ÿ/((àK_ú’$Ä”ñù||ýë_çž{îuú=÷Üà 7Ü0©ç–<ðÀ›”¿ûÝïNùo…bb“I'§ÃINNÎÈ»•ÔŠ6› ŸÏGaaḖ ƒ‚AÜ.n—›ÜÜó+a6›ñ¸ÝäççñÉž=Ì,ÁŒ¥'ý\RUéëë#Çq88Š‹Š‡Ã„Âaü>ß$V2™DUU‚¡V‹›ÍFaáÐ^ºžê¹ÑØÔ„®ë†AÙ¬YD"Q¢Ñ(EE…ãŠa@[{;¡P€ææ;‡cD¹4›š›Iª*ªªR˜ŸŸ^æàØzzz°ÙlØìvúO|m6~¿Ÿ,¿“Ét[äÓ'''‡¬þï>œÓåÄl6§×I2™¤/ `J0¹\®!Ÿ¾Ô'€@ Hss 3gÎ8§/¼çæäà÷ùð¸Ý465“““MNv6Ñh”h4F"‘ÀåtRZR2fÛ—© …B„Barrr0›M˜Íf"‘±XœX<6¤çcww7f³9Õ^x¯wÌý+ŽŽ„q8Øm¶óâîn³ÙŒÍfÃårÑÙÙ…Ëuâ7#‹‹Ç±X,écŠÁt]'ˆÆb¸].˜>ŸlÿþýlÙ²…k¯½vRÊîííÒË©´´”;ï¼S’NB|Ê»I'§“œìl òGÇñûü(ÊÉ ÃHl¶´ÐÜÒBA~>ùyyç]ÒÉd2áñ¸ÉÏËã“Ý{°X,ãK:%“tuuÓÐØH  ;+‹¬¬,ЋЅôµµc·Ùp8餓ªªD"ÚÛ;ÈÍÉ!'ÇEaAnÏФ“ªª«­EÓt4M£¸¨ˆ¾@]]ÝC“NcÄ0 ­­=ugEB©¨¨×;¢ÜTú†Fb±ÑX›ÕJvVÖ¤“ªª´wtàí¿88pǤÇ㦼¬ Ÿ×{þ%²³‡$EÆ’H$èì좱© ƒâ¢"І ƒd³Ù†ìÇõ à  ÐÔÜœ®£çê…÷œœü~n·‹Æ¦&,ó ¤SŒ®înâñ8.—‹’âb4Mµí« …ÂomÅãñ`³Ù0›Í„#úúúèíí’têêîN]سÚλ‹b™öûÔ…N+3gÌH÷>ŠD"$’©gq$“*ííí´µ·3»²rÈ0}š–Þ´½½ƒ‚Ò[†=mkoOµQn÷ˆ6l†>¯÷œ­ûƒ9N²‡ýæÐÐØ„gÏ^ÚÚÛûÛý‘ oM×I&“Ô«M?˯¢¼Š‹RI§h”ÎÎNòr‡ÿ™H$‡Ãôöõ {|`¿;xèPú·fxÒéde™WÓèé饱©‰Þ¾>JKJPPÆN:E´·w•åÇçó7I'»ÍŽË餣³3=\+¤z„õööb±˜û“C‡uÓõTB£±©™žÞ (ÈÏštJ& †Bôôô››Kk[­­mé¤Sêf”–ôÅlÓBy䞟I§“ƒ6ø·ÀÀÀçõK:¿„Ô¶H=ªX÷Üs_ùÊW¦¬LI:‰“¹ë®»øùÏ>êócŽ=Ê /¼À­·Þ:áå†Ãa~ñ‹_¤ÿÏËËã+_ùʘÃÔ 1²³³¹ë®»øéO:êôû·›´¤Óƒ>H0Lÿÿï|GF$âpÎ&N¦±©™÷·ÈûÛ·óÈþ"ã|ïnÛÆÖ÷¶‘H¤îh^´pŸìÞMͱZ>ËÍ,Z¸€Ežp.Zsá…Üþù[ùÊ׿‰ax½ÞŒÃy ôöùæ_}›¼¼\òrs™QZʾ¨©­åó7ßDOo/==½dge±rÅrV.O=“fïþìøh'v‡Êòr*ÊËùñ=÷rÓ ×sÓõבL&yeËk¼¼e 3JKq»Ü¸\.^ؼ9Õû"ã‰ßýv\1,œ?Ÿóçs¤ºšÎîn `_UÁPˆD"Î=?½/]®®ë¼öÆ›lyý œ.g*!–ÍßýýÿâÂU«¸`ÕJÖ_qyú‚üþý^|>/>¯—•+VðÆ[oã÷ûñû}ü¿ÿÏ_OÕ¦ûÔè=ð¿úvú"qqq1ÛÞßNËñãCæ¾wuws¤ºhëè`_UkV_xÎ36»¢‚«×¯çí­[YÅå”—•PßÐÀÇ»w³î²K©(/Çb±PWß0jÛ÷Oÿò£Œí\k[Ç[[¹ô’‹™;{6sfÏæ¹M/°¿ªŠýªxî‰Çq:8þåßîaíê Ysá…Ÿ_Ï— ‡#´wtŒØï­¦¾¡]Ÿìæ3_Ìg.¾ˆOöìaßþýìÝ¿§ÃIqqÅEE<³isfÏfNe%_úoé ôÑÑÑÉ?Ìõ×~Žë?÷9 u×}gW?ð!n¼îZn¸îÚm˜Õf¥¤¸ø¼Kn…ÂôõõÑÕÝÇãÆfùüUUyqó˼ðÒfÌŸ‡ÏçÃçõò“Ÿÿ<õ<¨ùóS=WâqkW¯fMÿ3 ?Ù³—÷·ogveeª‚ÝÎþUT×ãµ×ß`ÕÊìúäjëëYŬZ±‚U+–«Ì[oº)}ƒÃ_ÿí÷q»]¸\.Š‹ŠxûvŽVWsÏ~”î…1Ø3Ïo¢¶®ŽÚº:þý_~x^°•—•±jå Þy÷]V_xyy¹ÔÕ׳{Ï^®X·ŽýªÒö ¬ãï}ÿX­V,V sgÏæ;vRsì߸ëkT”—SQ^F[[[ú˜Ðl¶PR\œnãÞ…Âäç瑟—Çÿ÷Ãaá‚,\0ŸÛ2 ÷w>í·~ YÿäÓÏ^åTÚAMÓØÒ?äl~~^ºWÐ_|ç;|öª«øì† ”—Í×>8Ú1ENN6Ûÿ°ƒíØÁ#ÿù‹t¯ªñÔ¡öŽÞzg+o½³•¥%©›iŠŠFžìØupŒâÔŒu¬“霮µ­•šcµüŸ'žÀj±b±X†´ïŸ»új–/[Êò¥K§á}zÝtÓMüð‡?äþáÐu}ÒËûÍo~Ë/¾ˆÕjÅf³¥o@ø³ÙlXú{ÂŽõÞðÏŒµœñ,Ož+xöðz½|ãßà_ÿõ_G~Ï=÷pË-·Lø9å¯~õ«!ÃúÝ}÷Ý8γ&餪*ÉdçyxÍhR½¯µsöøúî»ïæá‡&‰Œ˜¶wï^^{í5®¹æš -3ðÐC¥ÿ/**âOÿôO'´Œ‰F?UûB2™DQù­Ó札y/¿ú*›^|†\rñE\rÑZ*ËO~·Ó'{öp¤º†–ã­ÜpݵÜpíçP…P(D0⮿¸›;ïøóçÎ=çŸ3Àáp••Å7îúU‡qÏO~ÆC?¿oÔy‰Ñh”«Ö_9äd¬ºæÕ55üñã™?w.¬XÉÜw?9ÙÙ¬\¾]ש««ãÝmÛøé=ÿ†¦i¨ª6dÙo¾ý­ííäççó¿þÇÒï?·é<ȪƒãŽ!7'—óS…"‘Üõ1wýù—éíí£gØNïoßN]}=ª¦òãÿÿŸÒï_´f5ïn{Ÿ‡ù미<ý~k[ë.ý ·þV²û{Ÿ¬¾`ïn{Ÿw·m;ÝÍð©u÷·¿3bŸ„T¥w|w|ÃG²ÿ@ee³ØpÅéõYs¬–šcǸïÿ̸üE R þóá_²jÅŠóâ™N•ðèã¿§¢¼œ5†q»ÝÔ74ðÞûðÝ¿úË!½úH(ÕÎ]°r%«W­b×Ç»q»ÜÌ™=›=ûö¡( ‹.`÷Þ}RTXHGg'‡eK—LñZ8{ ßïSÉõþé_~ļ¹sÒóEcqzzûxðw÷¥‡½é†ëyá¥Í<ùô3ÜzóM§tÂ9¼ ;ד­ƒíüxGªâq{Ò9Bvv6óæÎáÂU«R=ó=   2£¤„«Ö_É—þÛÆôûùù´?Ϊƒ,_º”‹×®åo~ð Y}á$“IêêëÙþ‡|ãk_¥åx+-ÇE¹þÚÏqÛ­·àp8ÒÃs}ù®¯£JëºvÒ2o½é&ŽÕÕQsì.·‹«6¬çêõë8|ô(‡á»v¥.–û|T:DwOo½ýŸ½jwý¿§{~œ/ÊÊfqùe—r÷wþšüü|.\µ EQ¨¯oàÝmïóãþ'Báp:éÔÐØHWWª¦rÍÕWqÝçR'Ñ´wtðOÿòcnÿü­T”§ù@¦æûͯðx÷¹«¯æÅ—_æ7¿}”[opÔx IDATJ=xù|ø=‚ÌÇàCn~¿õ¯¿ù;vþ‘;wžrÙomÝJcs3.·‹ÿý?ÿGúý¢¢B’ÿ—½ûŽªJÿþ¹Ókf’ÌLBHz/R)â"bY@VVYP¥,‚ºúÓ­îî— Ø+¶µ! ˆeQzSAAzMH¡¤Ï$™>÷Þß“’Ìd&™ôçýZ÷•¹çÞ3g†Ûæ<÷<ÇíÆÏ‡#6&:¤cPèž"ûRD¢ëÿ޹yyÈÉÍ yª´Zq­ ¯¬ZéX£ö}a}÷®ÕÛØ‘mÜô%6}õµ`Çqþ‡9€Ðîu|¿é‚)3[p÷Ôߜߘÿ0X–E—´4hiZX~øa$&&⡇‚ÃáhÒ÷’Éd°Z­ðxiQRZ ±HБ‡œj“‡Ò ôeefˆÅbÄ×Êåo4!“Éàp8àr¹ýiaT*”Je§!$ † ilo&OúMÀ÷x;¢úöî pØ(3›Ñ9!Z­Ö¿ŽV«©‘Æ\'•É w ·Ûܼ<úJ—Ë…øø8h4ÂÏ6›%¥¥užçä 9bbbpíÚ5”——{'.w:g2!Îdµ‚} :uÈÔ‘ÕÕ>îEUOÕ>ݨU* H$ÿ÷¥Q«¡Ñ¨¡Ñhüsøúé¢tHNJ„!6֜ع³7gL´7 €S*½sÏ$%&âø‰“p8p:8úë1° žç!—Ë¡×é —Ëát:QT\ŒŠ ï½Ñh€R©ôß´›Œ&hµÿkß±¥ÕV¥u*‡Ñh¨÷=À^ulÆÇÅA£¾~aˆ‰22àv¹áp:àp8QPX‡Ó³Ù Žã:ìmR‰*¥Z·7Õ¥B.‡Ëí†D"F­†¬ZG™ÝnGY™ÙûW;GªT*Fÿ\P.—Û[¿Têï”ðÕSý^Ñ{þogöÕk×Àqœ?ýbG¹W vÎ0Œÿ\ìZx¯#Zmþ+ßýaíû´îàªæ† 帕Ýáo’Hü×ß1Zû¾°¾{×pÛØ^õèÞ}zõìÌ8wþXŽõ߇r¯ãûMŒÑ`€Fx~×h4þó;Â7eÊlÚ´ ÷Þ{o“Îñ´sç΀sMm¾à“/åû;RË‚¼ê[fµzGn –µ”PG) |õÕW-ÖÎpèt:ÌŸ?/¼ð‚`ùÊ•+qûí·Gì¡®÷ßÅÅÅþ×<òH³>0têÔ)¬[·[·nÅÙ³gë\×ív£¸¸ÅÅÅ8sæ >ûì30 ƒ &`Á‚¸é¦›êܾ./¿ü2V®\òúÛ·oÇÀë\'++ ǹ·~Ï?ÿ¼ÿuII V¯^ÿüç?‚±Šªù³²²°víZF,_¾÷ß›ÿüØcaÍš5‚9r;vìÀ„ "ò^xóÍ7ý¯F#fÏž‘º¢´´ÿþ÷¿ñé§Ÿ½'p»Ý¸ví®]»†'Nà믽Àôë×O?ý4&Nœöûîܹ3¬Ñ]µSÔæää 33ëׯ¼.˜Íf˜Ífœ9sï½÷ºté‚gŸ}¶AAôþýûÃé ­â¹çžÃâÅ‹ë]/ÜãõÊ•+-˜$¡i·=éݺbâ„ñèÚ¥Kå¾IÜ/fe×[GII)¬V«ÿ‰æÚ–eár¹`³Ù:LG‚O·®]• ¹\ާN’kEö}Oî'vîŒËW®àBVróòüó ôîÕjµw®&·Û «ÍŠ2³¥eep¹]ÞÉÒ£¢àaYX­A§(­ju*xsúkÂjC8¿ÛKËÊ„ƒNär9ì\.×õ SUÇsõ§|hwăɓ~ãÏ_ï¸|8eèÝ«¢ª4šó”x¸dR)dR©?蔓›ç ×år!>..è#»ÝŽ’’Ò:Ïs ¹1ÑѸZ=èäp ** ݺvÅùóüëwŠœï¢#©}Ü‹D"ˆÅbïœêëU :ù¨ÕjhÔh4jX,å ¡Ñ颜”„Î üûz´>±±1ˆ‰ñžc¶S(ˆ­ê?øóϰ”—Ãb±àè¯Ç¼s}½çv. r™Ìt**BQq <, £Á…B©Ôt2B«ÑúÿM}Ǧ¯ÝR^ޤ¤ÄzßlUÇfíÎìØØXÄÆzÓÆåæå#7/0›Í¸*“A©TvÜ “T eUÐÉíq£°°QQZ¸\.H$¨ÕêéPJËÊ{jµ7e¯Ýá€Óéò8”J¥P)•þ9×€š÷Šßÿ¸Õ]½v ,ËúS”t”{źîÁ}‚]ë S§øwÞ—””B©Tj` å …ÃÞ°}¨®ûÂúî]Ãmc{Õ³GwüöÎ;`¨:V÷í–­È©…„v¯ãûMŒÑàM×Xûü®Ñ¨Áó<,–rtNHˆà'ì8†Š-[¶`ÆŒÈÊÊŠxýƒ¡Þ€pýØkK©“D$°Õ6ßmí÷Û#<‚7ß|S0ÐpòäI|ûí·˜¾ùö;ôéÕ úöÅ€~ý°nýÄxÓë¸a;wnêÚª…zÜsÀ>í]ÎB$övBò\`€Ú×AF¼âŒ&ôíÝÝ3‚§FrøÈìûáGìûþÜÿ‡YÈèÖ &“Ç ó§ÍòwÓMp:سï{\¹z ]ÒRñ››o®QŸÇ㜛Âíö€aÈåòß“a¼×:Žãj<¤à{²Ùjµù;HãâL˜ˆ—^zI°<333"A§?ü………þ×=ôPHÁÑHøú믃œ¤R)¦Nо}û"99IIIþÔW§NÂþýû±cÇÿC¶>ß|ó Ž;†uëÖ!½ŽT¥­ÝÅ‹1uêTäçç7hûõë×C¡PÝÚŠ… âý÷ßÑrèÐ!ìÞ½cÇŽmÔ{X­V¼þúëþ×¾Ô~ÍÍåraÁ‚øâ‹/ÊÄb1F…É“'£[·n00›ÍÈÏÏÇž={°eË–€´xûöíäI“ðé§Ÿ†5z§!öïß™3g ¦ ŪU«…… F¸e„xµÛ S$˜LF””–¢¤´,ËB«Õ@*•Âf³Ãn·ãÀOÑ·OoÄÄt¬Î¹Lhµþ´h¿;—ëúEÉf³£´´I‰‰HKKEFz:ô:JKËjL– ]ÒR‘—ŸìK9(¯¨@§NñHKI úÞ&£f‹¹yyþÎ8†ap)7f‹ÅßÉNBa2q)7ùù—Á²lUÇ ƒK9¹p8ÐétJ¥z”Gc©Õ*˜ŒFd]º„ø¸8p‘H„²23ò/7ìæ¯£HMIÁå«W«RJ)Ø9]êù¡­V©a2ñý?Ö{žKìÜv»'NžDRR¢££¡ÕjÀqÌf Ün7n™0QQÍ󃩭³Z­(,*„Õjõ§#)*.†¥¼‡zΛšÉá„Ó鬠*¯¨Àå+WZ°õíCii)¤ ’‘‘žµZZÒÒRØj¥THMIÁÙs瓃òò d¤wCrRbu®zóßÛlP«T°Zm°Ú¬þ‘6z—r.…ôžêªô\ç/\@rR’ÿ\XPXˆËW®Àn³ƒ‰ ‰ Qk Ë!‘ˆ1rø (,,Âñ“'1Å:Ùû4~;ì8˜Ôädüzü8róò 5k‘Þµ Rî)Ô*5LF#NŸ9‹ô®]Á²,Äb1Ìf3ÊÌèt:¨Tª:箨~¯¨Õj ‰!‹PRRŠüüËÈ¿|]ÒR›îöQB×zߨç¬ìl”•]ÊÔ\åÔÏј}¨¶úî]Ãm# ï^'˜Â¢Bÿü&jµ6› V› ‡b±úvðtK‹ŠŠÂ‡~ˆwÞyÏ=÷\Ä®éRkÔ%!õY°`Þ~ûmÁôZÇŽÃwß}‡I“&5¸~§Ó‰—_¾>/¶V«ÅÃ?Üàú"å¾ûîòeË‚ÎMsóÍ7cÑ¢EÈÏÏÇóÏ?uëÖÕ(ÏÍÍÅÌ™3±uëÖ€»u¹í¶ÛƒÃ™™™ÈÉÉ ë3øÄÅÅ ÎK´k×.lذAp—Ë…{ï½×p’Éd;v,†ŽøøxH$ãèѣؾ}{Ðþ¤?þÓ§OÇèÑ<µñññ¸ï¾ûðî»ï –gff6:è´fÍšßá‚ š=x^QQY³faŸÀ|ë ÀK/½„>}„窾çž{P^^Žüãxï½÷j<$h±X0uêT¼÷Þ{!+úõë'¸¿®]»ßÿ½à6ÅÅŘ5k–?à¤V«ñ›ßü @\Õ½uQQ~úé'ìÚµ+èhîýë_˜2e ÒÒÒêm'¼øâ‹Açõë×c÷îÝ!m/$ØñºlÙ²&Ÿó‘4- :ÕÁd4âìÙs()© :UM‚Æs<¬V+~îëÿêFïCµÕwïnIx÷:Á¢Ìw~W«aµÙPTT »Ý‰X ]TÇÌ|ÑæÍ›‡¡C‡âhp‡suí}¤‰<ƒÁ€x¯½öš`yfff£‚Nü1®]»æ=oÞ¼OK÷ÄOàÉ'Ÿ iÝÄÄD¼ñÆ>|8–.]Z£,;;sçÎ5L¿~ýЯ_àù÷Ýwßmð9 ** 3gÞY,– A§W^yçÏŸÜqÇÈÌÌ„Á œÎ¶²²ùË_ðþûï –ÿíoömÛÔöÖbñâÅøè£8pà¾ÿþ{Üxã ªÛf³ÕåäaØÜæÏŸ/p=z4>ÿüózç ŠŠŠÂŠ+лwo<þøã5ON§óæÍÃÞ½{ë ètîÜYp=|øpРӳÏ>‹²²20 ƒyóæáÙgŸ Ú=úè£(,,ÄÿøG|÷ÝwåN§+V¬Ào¼Qg}f̘°ìøñã :;^Ÿ~úi :µqtªCŒ X+­à8G~ý¿ü éݺ¢¸¤Å%%øãÂ…NÑÝÓ¦vîÙSãGuRb"´Z-–,Ù—.açîݨ¬¬„B¡€B¡ÀÑcÇ¡×é¡×éп__œ<}0xà$%&ÖÙq=î¦1àÁãʵk˜·à1(•J( ¨T*X+­þv„Û¹L†(­ÿø÷ÿ¡w¯^èݳg÷8 ?ìvxèaèt:袢pþâEŒ3K=鯷]yè±àÃvG‰Ñ£F"5%ÇÇ®={ñíÖ­X·q#LF#ÄUOô{Ÿæ¯ûÔ¥Õâ§C‡“›‹§ŸXîŸ/¡½Ój4HKIÁÐÁƒpþÂE ±èÕ³GÛbcaˆÅ#GÔ{ž~Ã0˜-üù0ú÷íãï`8 ?Ìf ÊÌfèõú&ÿœí…V«Eç„<ùÿžƒF­†Z­Â©ÓgpÃСX¸à(•JÈd2DGGC*•bÛŽØûýÐhÔIe <9_ý6zÔ(Œ52¬'ì;šÇã»mÛðÃþpTÍÉçr¹ ×ëqùÊU\¾r¥Æ5"ÎdDL´ééHMI ætOOÇχÁÞ}ß#)±3ŠKJPT\‚Ç/DJr2d2YHïùë±ãˆ‹3á¦Ñ7bçî=عk¾øòkÄ™ŒÞùgÊËñÒÊL”””¢¸ÖÄë©))>ld2V¿ü*&N›ÇkίµÅéõzę⒔ »Ã½^“ɰ^||<ºuUc@¿¾øéà!lúêk$'%¡´¬ %¥¥øëÿ{&£±Î÷ª~¯øÀC 6&11Ñ8sîFÜpfÝûû¦ú˜­Ö×›7cæMAËŸ~b™àµ^­VC­RA*‘ ´¬ ŠªúzÎЫïn½åLºe"l6{HÇ 7¨kªqO1cÚ´éãããר}¨¶úî]«·Q.—C.ïXAå†ç^'˜Î øéÐÏ8pðâLF£¨¨ <‚®]ÒÚÜ<@­Ý€°{÷îˆ¤Û õémBª{ì±Çðî»ï vxúFºÜ\+Ír(\.^|ñEÿkµZGy¤Qmm¬iÓ¦…pªnöìÙÈÍÍ­ñy`ï޽ػw/ÆŒ©&6¹ììliáÂ…øË_þRçú+W®ÇqøðÃÊùå\¸pݺuغmèܹ3~ÿûßãƒ>,_±bEƒƒNï¿ÿ~9ˆ~øáfŸûôÍ7ßÄÖ­[–§¤¤àÓO?­7àT]°cÁf³á‘GÁÿþ÷¿ˆÎo·wï^|õÕW€Õ«WcÖ¬Yu®o2™ðá‡bÆŒسgO@ù7ß|ƒ•+WB]mÞZB"¡]fθ]»¤Õ™"!:Z¾½{ù'çV(ˆÖëq×íSнûõ ß:uŠÇAƒœ”„Ý»C.—ãxp<‡¤ÄDè:@)±X…˜õû™èß·o@¹¯3ÿöÛ&CĈü¯å 9ôÐá·wÜ©T‰Ä;y²\.‡B¡€.* éݺúÓQôìžÜyLFc”EJ…ÑÑzLºe"ºU¥G°Ùl0ÄÄbЀþ¨èÚ‰R©¹yyþ9—ÂmCFz:n¿m24j5’½“½W_HL쌑ÇÃ`0@\5?Qß>½Ñ%-Õß± ËÓîº={ÔìôÒjÑ¿oßfËÙÜôéÕ 3gÜ]gšŒä¤$¤$'A§ÓA$aâøñ°”—£¼¢ ¹j•·ãhÐÀþ``íãØçöÛ®§”ò=åÜQ¤¥¦¸ ýûöEO€S°ï,”ó\œÉ„Q#†#Îd‚.*Ê#6jĈª4pï)”ŒôtÜ>Ù; Æ×!Xû¸—ÉåˆðÛ;ïðžçª(ärèu:Œ>,Ë‚ãXtÏÈ@Jr2RS¼£2|çÓ;n› §Ë—Ë ­VµJµJ…¾}z#£ZÞôêç0£ÑÐ!‚­¿›> ]ÒR'“¯Nè:¯×é0 _?( (•JH«®%:……(,,¬q@ÕÃk]»tALôõk´>]»·þæØ«ŽŽãÀ±XŽCJr²¿ŽPÞS¯ÓA!W€aŒ»iŒ÷\X^©TR•ÖUµJ†a R©0~ìM5F5ÆÇÇaЀHINn÷©Ý¤  Tâ¾™÷ oŸëó´tíÒ·Üì‡%½[WÿrßõH£Ñø#‡÷§È“Édþ§MF#TU?¾¢õz èßO0°î»WT(‹ÅHÄèÞ=©ÉÉîᤙ3î˲i7ªë’–&x­—ˆ%HÄ0°Û°W]SÂ92 ƒÔ”Œ»i òòó«æüaÐÀÈèÖ j• 2©,¤cP®ð^ãªßSÄÆÄ oïÞˆª5ª%”}H§Óa@ÿ~#bjßÖwïZ» ¹<à÷K{7gÖ}èÕ³ÔAÒðd¤{çéJO¯ÙÙʽŽïX®u¬ëu:$&&")1n·«jä‹®]ҭ֛Z¤ÒíQЉ4„ÉdÂþð¼ýöÛ‚å™™™ :}òÉ'¸Rm”îܹsÃJEמxâ‰o»lÙ2|þùç¸zõjå«V­jSA§-[¶&Mš„?ÿùÏ!o÷ÜsÏaãÆ‚sêlÚ´ Ë–-‹X[ÂâÅ‹ñÉ'ŸÀív”ýðÃøñÇ1räȰêt8xå•Wü¯u:æÏŸß趆ãäÉ“øë_ÿ*Xö¯ý«Aiþ–/_Ž 6 //¯ÆòC‡áí·ßŽhpÙpzôÑGë 8ùH$üóŸÿÄ7ÞXcDàí_ݺu+~d~ZBŠAU Ïó(+-BiI@©Ò@¡lÞHssâ«&fY2YýO{'v¡Òj…B¡€R¡èpéjÊårù;áô:ÄU ¥¥¥þ44õ¥ãâyn·b±wÂàüËWpþÂ\¸xC‚HäɲÿÀOàyÛvìDþåËÈËÏÇÓO,÷ŸŸ´ $IÀh>Žã`³Ù`³Ù½O¶Wu4ÖVã¦VCCO+ÕË×A^f6C!W@¡C.—Ãn÷ÎõÁq8ŽGÞå|úù0>Œþí¯A¿ß`õ…óž*•ªÆ~àt:áp:ár¹üå‘|ZŽÀͰ;þó_8)Ñïõ•+WG5\½zƒ®±nuëׯǸq¡&w»Ý2dˆÎ ¥R‰£G %è|dK–,Á³Ï>òûÖöè£bíÚµ€=zà‡~hp]ð׿þµÆU>§OŸiª›o¾GŽ X¾}ûv 8°Au¾ùæ›xæ™gËär9öïßÀÌ„æ IDAT”:¦yRýû¬nòäÉøè£ÔΦöïÿ™™™þ×O=õ–/_.¸î¢E‹ðÉ'Ÿ–3&¬TŠ@à¿ÁòåËñÔSO ®»téRÁ‘d ÃÔ)®Ù³g Ž¢8p ¶oßÞàzß~ûmüéO Xž””„_~ù%ìþÂeË–Má‡C‡…=:iÒ¤I8tèPÀòE‹…p­îé§ŸÆ[o½°ü¹çžÃâÅ‹T'à}h¤¼¼<`y°s6i9{%ì¶J@Î¥,ä\ÊÂó·Ï‘N¡`&¬Î_`‚††Ï7÷Sí';Ãy¢‡a˜?î]..\¼ˆí;w¡{F:$ Äb ~9z½zö]jüÿÎÕ‚2™ð…¡¹‡ÿvD¾‘#Á;Ž}O?“@uûè<×2$ ´ ´uœSD"4M½ç¡s©›ïx¨ V*•P*•(/¯@yy9ÿr—¯\˲0AGP«/œ÷¬Í›B‹n¬›’ï>¡1×vµZ :{†¯¾k½O¨çAŸºæØ ç¬}O¬Ã ûP}µ?G°ó McîuD"1$ ŒÀhv¾t{K—.ÅÆCÞ.&&†N¤Á:uê„ûî»ï¾û®`yfffXA§µk×úNpÿý÷·Èþ9|øpÿßcÇŽmt}#GŽ :íÛ·Ó¦MktýÍå®»î ;à£F :>}:Íjqüã±víZÁQì{÷îÅÁƒ1lذêr:5öFƒ‡~8bm EVV6oÞ,X6gΜFÕ=mÚ4<÷Üs#Ãòòò°uëÖFÍWÛƒ>Ø {™‘#G N:‰fR Ë mR—´TL½ëNüýÏÏâôÙs8zì8:„ßßó;Üyû”7!¤m需Œôt 0 ¥›BêÁr,\nÜn7ÆŽüùÏ*e'!„td¾ù €Nññ-ÝœM«ÕâwÞÁK/½ràµ{÷îMÜ*ÒÞ-Z´(èü¨?ýôöíÛR=«W¯ö¿–ËåX¸0ø|ÇMiÖ¬Yxíµ×ðÚk¯áî»ïnt}‰AR 7vUskhj±>}ú.¿téRé†ÛŠ´´4LŸ>=hùŠ+B®ë£>BAAÿõƒ>ØìsB¿þúëà8.`¹X,ÆwÜѨºccc1tèPÁ²`sc5TC÷×¾S¦ÀÅ‹ÓBQЉ´Y*¥±±±2h †„†õÎ ¥ké¦BHŒF’kÌÇDZ'"Ñ6dÒÒÒær!„Ò~©U*d¤§#6¶eç]!^÷Ýwvî܉޽{×»nó›ŽÄÄDÌœ93hy¨îëÖ­CNNŽÿõìÙ³•z®5‰Žž×îòåËÍÜ’†‰D žƒ*Øè(žççzj‹üñ #½wíڅÇ×[‡ÓéÄ‹/¾è­R©°`Á‚ˆµ1Tß~û­àò¾}ûFäwÞàÁƒ—ÿý÷ B&''7x¾Â`û«P;B‹‚N¤ÍR*•ˆ‰Áà1tð` :ÉIIÐé¨CÒº $%%"£Ö$ç¤õQ(ˆÖë1tÈ`tIKETÕdó„BÚ?•J£Á€Œônˆ #58iZضmæÎ[çz4Ò‰DÂ’%K‚Ο÷ã?Ö;¢‡eY¬ZµÊÿZ.—cÑ¢EmcK Œ0›ÍÍÜ’†KMMmp*kN4ÍY{éÈïÚµk#kªÏÌ'Ÿ|‚«W¯ú_Ï;±Aæñl*ÙÙÙ¸víš`ÙÈ‘##òýû÷\n·Û#–®1TtîÜYpy{ÙWIëBA'B!„B!„´r¹+V¬ÀG}4=H$¤¤¤`ÆŒAËëëp_¿~=²³³ý¯ï½÷^têÔ)bík ¥¥¥ÈÉÉÁÉ“'qüøñ ÿ9sF°Ž²²²fnuÃ¥72û„*È|º•••ª·5yüñǃ¦ß¶mŽ=t[·Û—^zÉÿZ¡Pà±Ç‹xë³ÿþ eݺEæaи¸¸ e¡Œ Ecö×`ûªÛí†Óélp½„~\ƒB!„B!¤›ùD°ìÓO?E~~¾ÿõœ9s`0š¤u©+0–šš‘÷¨kôÖ±cÇ"òIØÐ}„4!„B!„Ò&uîÜ_}õV¬XU«Vã8èõú:Ÿ8'$iii˜6mÖ­['X¾bÅ lذ!`ùÆqñâEÿë™3g"11±ÉÚžçñÉ'Ÿ`Íš58~üxK7§EK*™L¡–´n?þ8¾úê+ð<PöÝwßáØ±cèׯ_å§Æ\N-™^²´´4hÙ;ï¼ôø‡Íf ZVPPÐèúÆí¯e_%­!„B!„Òf‰ÅbüéO˜1cðÐC!99¹¥›DÚ™¥K—býúõ‚£WvïÞŸþC† ñ/«=ÊI"‘`É’%ÍÒÖúœ:u K–,‰Xº¯¶®±£?‚¥koz÷î[o½›7o,_¹r%þóŸÿÔXöùçŸ#77×ÿzÖ¬Y-ö@@])¿ýöÛ&ÿ’’’ˆÔC£•H[AA'B!„B!„´y£Fž={°k×®–n igÒÓÓq×]waãÆ‚å™™™øüóÏý¯¿üòKœ;wÎÿúî»ïFJJJ“·³>Àï~÷» ó ‰Åb >C† A—.] V«ëìä¶X,-2?iË—/tÚ¼y3Nž<‰Þ½{ðŽrZ½zµ¿\&“µhzɺF:5‡âââˆÔÓQ‚œ¤í«7èdµZ›£„B!„B!¢P(pë­·R_T;5˜ÍfƒÇã iÛ à‹/¾L/¶}ûvüøãèß¿?xžGff¦¿L,ãá‡yŸ¬+E—Ëåjð¾}òäILŸ>v»= ŒaÌž= ,@|||Èu .ç8®QÇ`°ùìv{ƒë 6Ï”ÛínT[…ö qmmJn·»Æëpö©®]»b„ رcG@Ïóø÷¿ÿ7ß|°~ýzdggûËg̘Nò{Õngu ù^NgвäädH¥Ò°ë GTTTXíöùs¨‹Õj ù\X]°v6ÕqÎ9›4½ºÒ=Öt öô!„B!„B!mUeeeÈóœ$$$`âĉغu«`ù /¼€×_[·nÅÙ³gýË'Ož £ÑrÿZ]µn·»Aýt,ËbÙ²e‚'‘H„•+WbÒ¤IÂë ÖVžç՟Ȳ¬àr»ÝÞàzƒúúÔ k}ªµƒo.—+¬vΟ?_0èxÓÔ=ziiix饗üË% æÌ™ÖûÔXhÈ÷ªÕjƒ–½úê«èÖ­[Øu†+œv æ8Î&Ù¯*++ë ôÓí¤¹©ZFhòMB!„B!„ÒÖÕNMe2™Âš#å™gžÁ¶mÛŸÂß½{7®]»†5kÖø—‰D"<óÌ3aõ­)Š ejµºAýtŸ}öNž<)X¶dÉÌž=;ì:੾Äbq£úƒ:‰‰‰ip½Á‚*•ªQm‹Å‚ËÓÖ¦T»“X£Ñ„Õθ¸8Œ?;wî (ãy|ðn¹åäääø—ßsÏ=8p`XíT*•u¶!\&“)h™B¡huÿV*•Jp¹V«m’¶ÆÅÅ5h¾¨`í w¿ª-X0+Üs6i9¢–n!„B!„B!­]Ÿ>}ü#‚„Ìž='Nœð¿¾óÎ;‘žžÞM«Ó¦M›—kµZ,Z´¨™[CÚºåË—-Û´iþþ÷¿û_K$üñlŽfÕ):::hYkLƒØÖ­ ·Û ‡ÃÁÖ–@A'B!„B!„BBPW‡{^^žÿo†aðøã7G“êd·Û±wï^Á²o¼±Î´c„6lÆŒ#XÆq._¾ì=}út¤¦¦6SË‚ëÒ¥KвÒÒÒflIÇИ Qyyy[BZ !„B!„B Aÿþý1qâÄz×›2e zöìÙ -ªÛ•+Wæññ0`@3·†´u_}Äb1–.]Ú ­©ß¨Q£‚–UŸƒ„'XÄ`s¨…"77·ÁÛ’Öƒ‚N„B!„B!„„(”÷Ö0Ê ®]»´¬®”c¡šÛŠt #GŽÄÈ‘#ë\ç·¿ý-ºvíÚL-ªÛ€‚Î?túôéfnMûl¤dIIIƒë »Î_|………‘hiã¦OŸÞÒMÙŒ3°iÓ&lÙ²¥Ær·Û§Ÿ~k×®mð¨¤W_}¿üòKe÷Þ{/RRRÜÞÖŽaŒ;›7o({íµ×pß}÷A¡P„TדO>‰óçÏÃ`0 ¢¢¢ÎùèHëGéõ!„B!„Bi§æÏŸ´ãwóæÍX»vmXõmÞ¼9`D!mÅ«¯¾*˜vrûöíxòÉ'Tç—_~‰çŸ¾Æ²„„<óÌ3 ª¯-™1c†àòÜÜ\Ì™3V«µÎí­V+/^Œ÷ßð÷¿ÿr¹<âí$Í‹‚N„B!„B!„´S xôÑGƒ–?öØcXºt)Ìfsõ¸\.¼øâ‹˜3g8Ž£ŽaÒ&ÅÄÄà½÷ÞƒF£ ({÷Ýw1þüçòxB!„B!„BZ£¬¬,L˜0A°¬¼¼¼Æë¨¨(Áõ¾øâ 0 âm«îÀ˜9sfÀržçQQQ!¸\. ôŒ1Ÿ~úiïDz,æÌ™#˜ËÇ`0`Ö¬YèÞ½;ºw”TVV"77{öìÁgŸ}†üü|@tt4^{í5üþ÷¿¨‡ahµÚ€åµ¿×Õ«Wãå—_XÏjµ‚eÙ€åjµb±¸Æ²””ìÞ½»Æ² & ++«Æ2§Ó)˜®Kè;4h6lذ}=¶¯¬¬ÇqË5 D¢šÏú/Y²‹/X·)ÌŸ?Û¶m X^û{¶OMš4 o¼ñF“¶îºë.üúë¯Ë‡?@Q[°ãöË/¿D¿~ýB~ï'Nàž{îÁÕ«WÊbbb0gÎÜvÛm‚ç‚ììllݺkÖ¬ Ø×är9ÞyçÜvÛm!µ£K—.ày¾Æ²`Ÿ_¡P@&“ÕX6}útdffÖXvúôiLž<9`ûÚç@¡ïôå—_Æí·ß^oû`ÇŽ!‹ GÀr“Ʉ͛7#-- iii‚mjçØ±cý£¤HósØ+a·Ur.e!çR˜¿˜æt"„B!„B!í˲A;Vk ¶žPÀ#ÒÂi§O°ÀIeee½ÛŠÅb¬Y³=ô¾þúkÁuŠ‹‹±zõêzë2 ذaL&“`9Ïó‚Ÿ­úHÀÛ±Îw ”¦K(@WYYr½Bßi°ï3œ¶ ÕÑœsÔX­ÖÚlŸª/%Z¤„ÚÎê‚­_{ÿªOŸ>}°uëVÜÿýøùçŸk”•––bÕªUXµjär9L&¢££a·ÛQTTtT`||<Þ~ûmŒ5*ävX,–×u8›Í°^¸ç¡uÝnwÈÛO˜0Ë—/~  8¥¦¦bÆ HMM »Íµ¯’ðPz=B!„B!„BÚ9¹\Ž>ø+V¬€N§ {{‘H„9sæàÀèÓ§O´æ•€-[¶àƒ>@zzºà:N§yyy8vìΟ?/p’ËåX¸p!<VÀ©=yê©§ð¯ý *•*¬íFŒo¿ý¶Þ€i[h¤!„B!„BibbbðÄO4ªŽ„„„µ&¸¤¤¤F·Ó'%%%¬õç΋{î¹ü1Ö¯_ãÇ×9ª!-- “&MÂŒ3j¤/S«Õa}†ÚßëèÑ£RÐ…+:::`Ù¼yóPRRÒà:;wî°L,7úß«9ƒÓ¦M +Õ\mlMpøÃpóÍ7G¤®N:5xÛÛo¿“'OÆöíÛ±mÛ6lÛ¶ÍŸJ2N‡â®»îÂwÞ4í_}ž|òÉ€ôzáèÛ·oÀ²¸¸¸Fï¯={ö {›ùóçcêÔ©xå•Wð¿ÿýÙÙÙA×0a–,Y‚‘#G”-^¼8ä‘]ºt »¤éÑœN„B!„B!„tPv»ÇGQQÊÊÊàv»a0`0vP‹ö 77(..FQQ8ŽƒN§ƒ^¯Gjj*ÒÒÒZº‰­^NNÎ;³ÙŒòòrÄÅÅ!55©©©Ðh(îдº9XŽ˲ÈËÏÍn…Íf…ÇãË™Ë׈ðò<‘H‘H¥B™L™TmTÔ*5TJuµ'#|Û1ÍùqH²8 aqâ“_ÿ$"$"îêõ8¢• WÄ·tó”——ˆ‘P´ô>tèðAè¢tˆÒF!>>ü'…JJŠQ\RŒ³çΠ{FtÏœl•4­–Þ‡!„B!m‡R©Ä°aÃZº„´*ÉÉÉHNNnéf´i)))´î Z,èäp8`³Y¡T*¡Ñh KjšPmXaµ8’H$†ˆaÀ0"¸ÜNX­Å°Vä!V/‚Xä„Xäï¹ ˆ´`DQ€$<äàAo­Y™¹GpÒ¿ëäVEb\*Ê]ŨpápîtVõE¢ª7àXµðà!•H!•HchæOáåñx •J[ä½;Š3gÏâÌÙs¨a²ÔHQÈåèÙ£;zöè±XܤïÕRûÇãËzP\\›Õ ‹ÅŒNÂæÍqÊËËqõêˆ\.ÊËË<̼©Øí6ض†kó<ï¿&ñ¼ïÿ¼ç‰X±D“!®)›¶æÜ‡8ŽËq0›K«–0ÐEé Kt¬¸Ý.Øl6Øì6X­•IeÉä0ŒþPZŽãàp:àt:`³Û •H ‘H¥Õ5¸½N—Vk%¬V«÷¥*¥ …² >!„B!„BHä´XÐÉétÀl)ƒ!Ö€h} ôúè:;fxžÇqp{<`Y,ëÁ•«—a« :E)ˆ$IÊÁÚ#é FÒÇŒŽ‚N­Ïó(3—ÀápÀî°”Ÿ¶Ä1ËÿpûèY`+,(./ÂÏY[P¡qWk!‘Hüõð<•R•B…èèX0Lóxs»Ý4º ‰9{_|õ®^+h¶÷ÔEi1õ®;‘Þ­[“ZjbYŠŠ !“É “J1lèp”••aÓ¦M!ÖÁB¥V‚axDEéàt:a)·´¾ “Æ’Òb”WXê]—ã8Þs ÇñðÆåyr¹r¹¢Õšsb9n· …Eþs®B®€\Ž+.— f‹Å%E(,,€F£…F­^ ‰DÒê‚N,ËÂn·ÁRîm³R¡¬úO©TÚ° “ÓÒ²R@,#6Ö†a(èD!„B!„V¯Å‚N•Ö ^Ű!Ãáa=pºœà8Öß‘Çqxøþ®J»Ç"‘±±Ý‹¶ `-pYÁãÈ‚»" JÓ_à®ÜWéP,àÅ]À‹»ÀÍ n©+(çr6r.gaËîM`9– º®J¡B¯ôþè•ÞýzjÆV6o°©eæD颔”]T4Ä"‘¿ã’a9„½ÅWÐÍ4LT%<±WðÃÙcjš„Á7 &&Ú_Ër(¯° ¼ÂŒ³çOÃkDlŒ¡E‚O¤iÃl1ÃjµbÞý÷Âh4Â`0¢O¯>¯sçÎâʵ+¸rõ ¾Ýº V« 9¹yÈHïñ÷ª‹ÕjEaa!***`³Ù P( ÑhØØØˆ½ÅbAAaF‰ÊÊJTTV"+û" ±lÙ²ë™~÷4<ý§§ P*a±”ãÚµ«HJLŠX;#Áét¢¼Â‚‰ãomT=§ÎœÄ©Ó'€ðç×l7JK‹q­ð*õ§Ó §Ó Yç× q¦ÐÓ3º\.¸\NìûaÒ»e`È ¡Ëå(,,@AaNž:†„NÑ©Sा-)7ÿ´Ú(tꔀÁ‡ú¿ƒ=ûv¢S|gÄÇ'@­R‡Uç‘_AjJF¸fK) qêÔ Œ9¦‰>!„B!„BHd´XЉç¼%†a®™øëOûNþ4F<ðÞ'ŠÁW‚g`¸ ó× Fx¶Œ$RõHHÕÞ ç:FÊ@,’eRÁC ª–úØ5”š‹p!û :wWí³UŸ¼ïッJ»'ÏÿŠ.ÉÝ “Ê!“µíÑ4fK)XÖµJ ]”2©¼jD †#bR{ùÂG,ËÂíve=UßwD‚TêMkä´;áö¸Q\R£ÁÔ쟯©múêk8].¸\®fy?‰D ‰X‚©wÝ †aZl´ÅbÇñÐjµ¸>âÄ;Ò"'7¹y¹pØ!ÕåK''“ÉáK2P(HJLBRRÀTA§Ëz`¶Ô?2¦1Ün7¾ÿþ{9r‡ÆùóçQVVt}µZÔÔT :#GŽÄøñãÝà÷¶Ùlˆ‹ƒZ­Fll,²/]‚Ëå«"&x<XÌØm¶µ'’X–Åš5k°sçN0 ƒ¡Ã†`ôM#ýelÕC¨výñ{|×'À;Ò‰‡w=½.<Çy¯K˲p¹\ÉdþãÑî°Ãí}¿q¹\()-Fii ºgô€Ñh‚\®Ï³P*•0Ä›—ƒ˜èÈYësêÔ)œ9s¦Þõòòs Óé¡×GC.“#..£FBZjW¸Ýn\¾’Ô”4ˆEâG~¹\Þ´r¹ …<ÏÃfï8ºrå 8Ö6pçw6ùhNB!„B!„´_-tâ8·£Žç¹ëxƒK<8 ©F0Šóý+ˆ™ ˆ˜r°,‰z¤šIª†A$I€T= yóç50¢_Á‰ÏÒþ€¬?I|K}t¿â’Bœ½p7Œ¼§N§£ê;€¿ã³ê‰D°Ù¬(),ƶï7û縨‹70À =¥¢´ÑÐiõÍñ±Bvåj>ôúhèõz( €÷v´‰Å"0ŒŒˆ˜ƒç9ÿ6ÕÇ+y÷!oºEŽç½¿‘ˆB®€^¯GqI1.·« “Ûí†ÛíÆº  ÓEA¯‹‚Á`„Z­ûiúúØí6Øl6\¹våå°”Wà¦Ñ£¡V« VGö½Bu)'n·&£Á`E8rôì?°Ñz=***QYY‰NâÿP5"Á µZ QÕ;¥R‰#F@¥VB$öîqË!&Z‡ÃìK—0lHäGMæääà•W^Á¦M›ê 2ÕfµZqòäIœûì³°F†ãv»±cÇìØ±]»vÅSO=…©S§†¶­Ç;Ò ðÎÅ#•ɇؘX|õõ& â=¿úÎ=ü1žx≀z · N§vGËŽtúôÓOkœ|þtëÖ­ÃíwL‡õàܹsð;ü£M«æqò]À"55Õ?GÇÓH'¼Þ+_ŠÜú°, §Ë‰œœlôèÞ Ý3z@*•ÂårÂårB"‘ÂérÁRnVÕ&æË³ÛíX¹r%V¯~ƒ:ÿÛü%Àjµ&¤ “ï¡›j  ¸?_~ùeZO!„B!„Ò8-˜^¯jtP-•ÑõÉÚ}UU¡ÿv"”s[ùôiŸ@,KƒX–øŒ #±÷ N€wÂ^º ö²=°]~ª®›ü3Ö‡ãxx<***`·Úá¶ïp6ÛË WÈ!“ËÚ­3ǃåY€gÀsÞï”®j”Çò`=¾Þ±7ß8I iÍ÷áBÀqD"1ä2².]ô‘P-˜oz½’’"ÁíÍæ2d_ÊBy…ÙŸ¢ñzšF©)]À€ è mëÌ ®\¹ŠN:A£QûG :]Xm•ø×ÿý ‡#äs‹r¹2™ "‘ ¥ …Ë–.ƒÃiÏðàXJ…†˜\ÊÉñNlÓÄŸTØù  Ka4Äú;ûÅJÊ,p8½#NŽ9ê_?ØßR©±±±Ðj£0xÈ  ±ˆ…T*…X,†H$BeE€ãXÄDëa)¯Äµáý1\,ËâùçŸÇo¼4E¢\.ÇØ±cÑ£G˜L&FÄÆÆÂb± °°………ÈÊÊÂŽ;PQÕÖê.^¼ˆyóæáã?ÆêÕ«‘’’Rg›¼ó•ÃírB"‘@"–`ÐÀÁøåè/¸xò©Tæï4—H„/!"†AiI!<¬Ç;W×|£S„ìß¿?hÙ®]»pëm“àt91nüMð§ô?ªkSUЩz*X`=,\ÎæIqÙZùFVçñ°Þ`]5‹NçõQa•••È»œ‹’Ò"̘vd2¤R*+Ë!‰!‘HqåÊedeg!+û"n4¥Mà½÷ÞÃ’%‹Ñ©STJn»õœ9{{öí˜ÇVsƒï—ׯ]¾}/T/¼ðB»»öB!„B!¤mh¹ Ïû;"½ô^O+W}Ú3p‚a$€DíF±,5¯Õx'ïüN¼nûpœ"iËr¼óZñ‡Ã—ÓåO7èqq`Ý<ìVWÅb»wä…XäûÒª:Dªa>Þo‘*)Dbb ãÅÑ ;Ÿüÿ¦Œ70äM#$‡X,ö¦×coPJ®Ü^*•B£Ö@­VûNn·N§.—Ç;÷ Ï¡¾amÃá€ÙbJ©ðwú{G‹9Qf.ƒÍfƒB¡€.* W¯^ƒF£V« øÛ‡çy°ìõÑ.— <ÇÃj³ÂíqC,çyˆÅ"(r”™Íp8ì-òÙÀl6ÃhŒF­‡HäÍ'–ˆƒ=»#:ZÒ¿¹D"\.‡\®@\œ J•bÿÈ&oÝUõ«5j”™Ëa±”7ú3X,Ì;»ví,Ÿ0aî¾ûnÜvÛmP©êŸƒÎåraß¾}ذaþûßÿt6ïÙ³ãÆÃ믿ŽI“&­G"C!WÀét‚ñ¥T©Ô”Tää^‚Ñ`‚Ñhªó;ö,Ì ‘ƒ±ÞÏДêJ¦T*½çNžGVVvÕRð?ø€çü—&žã ÖC¯÷Žõ?|¤Sµ ÜõeçÞÇ{ ›7oØþÿø[Uj>oŠU‘H —۷ˬ¬‹`D"tëš¹\‰¸ùn[.\ˆ?üá‚e#FŒ¨J'Ìjµáµ×^Çßþö7¸\NH¥2˜Lq€ìKYˆ5Àk D«>Ê»zŠáP\¼x7n¬sÙ³gcÉ’%‚e …ð5—B!„B!$-tâ8Î×£W³C¥úH§jxðÞ “H F¬ƒÛvÄpâ9€ 6é5ð€ûÿì½w|Õ½÷ÿž²}¥•V«nI¶ånlÀ@Bq:8´K Ð.Üßï^.)ùdžx≜ugžyfRÃ×u¶5^À¾.Œ¡¦ÄýiÒ4ŠS‘~é{ç59íõå³·ªª“Éœe©Åñü4460cÆ,êëgbÙMñÆåJæîÊ…”ëÁ± <ò+nºé&\®BœÎBÊËÊ).*æ…ŸÃ0 œùE'ÝÈO{*:-_¾|·×daa!µµµ£êO @ `O˜TÑIKOR¥£tŒ\Ñ8iù)5Á#YQ­ÓQ-Çé™HoQÿ{Ö>°Ëv‰”Ø ÜÿáþWIDšP ÎÂTp&ûCÜaèhz‚Þ®¾L2u€oœoœGù’aBÒGÿ5rCŠsõÕ7à,2a`J冨ÿ„—ô$¥$Ë©ÜV (*R¦M¾‰¶h,i¦¨rrâW×RùŽ‚„¡¤Ø¦kœÅPo_[·m£ÔS‚ÍjAÓ4U&Š hoïÈD3å{Ÿ¶[¸p!UU•TVU2{ö¬Ly2¯JŒX4Š®kX­ÜÅElkldúôɳjÜÙÞÁœ93™9³žP8Dýô™LŸ6EÉ'ž±àä“OæÆoä¿øE–Ø}Úé§rüñÇãó{Ñt%_?1#&$¿[)Ó6ŸÈÌI$ìõÒ‘ºi’öz£{öZ,Ö”¥žŒ¢¨´îl¡±©†Æ¾qÊX­ÖÊè›`0Ƚ÷ÞËücü˜Í'ç{>ë7|Áo½ÎÉ_?«Õ:,¢wð·oÐ:V×v>›ššxá…Æéˆ@ @ vÏäÚë É™‘»Qò¯¤ÝUÚðȆ!Ù1p +¦ÔrtŒ¡“Ÿ©è&`1Œ†EµT#©n itÑãM:Y}4ÍW2bŒaBKh$£ŸÐTUE5eúI$ íŸÑ>»ÚëEøc Öµ¿"«(²‰iÅ ðFrOÀb=´…6±>¸ YR©±B<¢èÆéÁëõR]YŠ¢&…EU°;ìX¬Ž;þk£ŒôIn[X袠ÀIAAAÊ^.á¢:`dìë,’Œj2áóù‰F¢»í¼ÐuÀÀ]]ø¼^lV;‡s˜è”~Æ|¶¹Ö® -]A:œè&'•¸$èŽK¼õª›º©öØøÊ‚9i«ÐÞ¾“ÖÖVœÎ‚Lާ½¹¢vìØÁ7¿ùÍœ‚Ó¹çžË<°Ç"V>TUåÎ;ï$òØc «ÿÑ~Ä”)S8÷Üs³Êív¥¥e455‡ CȲŠ,+˜Lf¦O›Ž®ë4·ì ¢¢’pž¼a M£»§‡ÂÂBìv[&Ôdòƒü€ÓN;¿ýíoT×T!Ëé™dª¦¦íHHHI{A$@’ät3Ün÷`¤SÊ^oý†/°Ù¬Øl¶äoš‘äŒÜµX¬8ìNvÇùøcäX4²kdަå¡âñ8’$%­Qãq%™™3f!Ë2>¿Î®ú½ýX-Iª²² UQG›÷{ì1®½öZ*++ÑuX,ŠÙl¦²¢ ƒmÛ¶RZVFYiy–°–•Ûr"î½÷^y'@ `R™<щl;žaÂÓ.Ó“ ;†dG–U IÂ04ÐCƒ3‚)ÁÉ0’¢zC Úê0T7û‰èDÒÚl×¼š–œ\’t•D"F$uŸV¨²%“g$בձ™Èkót ŠNZÔÏ;M¿Á¤X0Éd |‘®œÛâ=´¿äã¾g±(̲Gy)RÔŽ·¥„¼4§“׋ÃaÏLöÊŠŒÃjAUU¾vܱÀîmófåŽàÐu-9¯È(Š‚jJæÚòù|D¢“':išÆ@`€ÎÎ.º»ºp8œ›|NÛ¾þÞZ¶wÅiêŒ1eæW(qâvà°(t÷ÐÝ7À?ÖŠÇÃc‹QY¼³IÅlJö×ÖÞFkk+®Â"AËË=¹ª"‘]tQΦ“N:‰‡~x̧¡üìg?Ãï÷óÜsÏ «»á†˜9s& ,È”9ìv;‘H„P(B0Âj±`2›A’˜6uMMìhnäðþ’7·—–HŠNØlvL&Ó˜ÛÞpøá‡søá‡°aã¬ß˜´ ”HF2555%E×´è$IÉŸIÎü¼H$#2=¥ÉeÓ«ë3ýkqäüþFzR–eâñÛÞekäN8r)vS!6S!¯þýq¼½9·ï“Ð%/ß>õZ6Ð2°ž¿|ú+¦H_a G §¢4{½ÀÀ;Û;˜9³žx"N<gÁ¼CSy°vŸgdohinÅd2¡ª*^ŸP(D"‘@U'þb==½lÞ¼•ÎÎ ©žR5lòyCCë·uò÷%8Ý•L;¼’ãçRâq;$œV_Ø/\Æ.7Ÿ—_?÷<ù.G\ÃWž@[[›6mÁU袧§g¯DÌÿøÿ`óæÍÃÊ÷ßÿ¸GI’¸ûî»y÷ÝwéêÊo#‘×\s o¿ývV^I’8ᄯ³­a+ï¯YÍ)KNÂ@"‘ˆS3¥¿ßOgG;«Þ~+oDÅ@p€¦íMœyƹû(°+š¦KÙâɲ„¢(,]º9%Æ*Š2D˜•‡Y쥯ƒt?Gq4UUUTVVæÝç ü=»&7ÅÕ˜£ëF{½A‘)0 ±qÝݹH’LKk M446rÆ7ÎÀjµaµZyï¯ïàñ”2{öÎ<ãlzz{èééæã?dúôz¦O«÷ãËÅ®Ðíÿçv®»öºœmì1.½ôª*«p:ôöõ`³Ùq: ¸ðÂáó/>ã•×þħ•±ÚËD? ézæ5÷Þ{o2º9Å­·ÞÊu×å“@ @ Áx1i¢“®ëh©É‘Ôºr ÉœÔ*@eHÚ~T‘ÀƒÉu&QßDºÿ_루&'ŠÉÍYB<ô7Â}¯Óµ¥$3†d¢pæ*$¹p"sD’u:yòˆPUZ‰»pôc¶Z†¯ ×:Æþ*: K2‰x‚„'¡ÇÙ\M‘ÃC‘ÉÃÅ_ûÿiîÙÄŽž/³¶=fáRê<ó¨óÌcSø zµ6B †n!®Å '˜L&$I>àD§d[œÏ¿XO($ R^V1®¢Ó‡~ˆÕ2˜wÄ ¹²ˆÅc ƒÄbqEÁáp ª*¿úåc<òËG19<¸§Mñ´£¨ÿÊ¡èññ~~÷ÔsE(*Šà´Ûèï3ÑßkÂ3ãk(ŠO Û¿l¦¨,ÖnŽ=lŠªO$2ûÛSÞ}÷]~ûÛßæ¬»ùæ›)//ß×Ó1"N§“ïÿû\ýõÃê6mÚÄ]wÝÅwÜ‘Uîv—0[U©¨¨dÕ;a挙̬ŸÃQHii) ,àãü#¯mž,+|}É)ûM„S.†ŠNHÉȦUoý%#.ÉŠœ N?íôÁȧTØm–èÑïëÃdQ”ä‚ Ã0R¹æ»J(r¹‰Å¢hZb„Qýs’^D’ŽîÒÓŸSÏÞ¿­þ+.— §3÷‚EQùó+/3}Z=Çu EEÅ™º†Æm”••3{ÖÂádä]eE%/þñ\®¢I²Ÿçžs¿xà¾ürÓ°¶¡P˜;¾ÿ}þó¶Û8lÑᨚF8Âï÷áñ”QYYI4áõ7^ã ù ˜?A&R7+§Ó¿e­­­<óÌ3™ÏóæÍãßøÆ˜¯@ @ ÁhÙOr:%IO˜§óh¤>¤ÿHåÚ02†iŠSÁ¦– é½Èrr¢P1Û‘Í`rH´õíÄYXƒ³°6)8I#(<LæäØ’‚ºûsç4ÊEiq9Vs¶}àhsAL4Cs:% ¬š›RæÐ¹ó#¢E ¢®0Nõs°ÀOöĢͥ1uÑKÐÙßB?}Þ cs°E©Hi¿<ö± ··àÀÁ`X,Š$ËÈã$:õôôf‰NLò9M$4¢Ñ°ek`Òæ-¡,]z µ„ˆ¥Ž°¥˜x4L4ÐE4ÐÅÂC8N6³ 9áAI”òîºV†ÕƒÅQLGO7õ7÷7³}û ˜'‘ŠìIÞ·»?‰D‚ÿüÏÿÌY7eʾ÷½ïÙ9‰ /¼ÇœO?ýtXÝÃ?Ìw¿û]ª««³Ê­ ¸Š(--#³½y…….|>]]L­›ÆŽ¦9÷gµZ³¬ÂöGtÝÈŠÔ’€úõIÁIJæô’¤dÞ³¡‘·Rò7KÊî§¥¥…P0ˆßïÏD©†Nm]mÆ>6)ÄxÏ£´Ð”|ŸGŒ!y kkêˆæ±å”e™ÃN$aûŽ&*++QÕdde‘«ˆX,ÆÎ­Øívú½ýx½^Š‹Ý“|e?k}>/—_q9ÿvëÿ—³õê¿}@a¡ YQ2b§¢¨twwÑÕÕIgg'3êgfr…¥-ßü;~ÿý÷Šâÿöoÿ6n‹@ @ FbÒD'Ø5§S’Œž4ÄXOÚÅdO2&tÓTՃ☬7!#™IQ '½ÑFÌæ¯`vûQ”©‰:ÃÈÒÖ²„hënu—V‹ƒÒâìȉýUtÙUt²én<Æl¾Øù‘X˜ˆîÃæ2Sn™KµsNÖ¶6—LØè"k¡³¿_O_w˜êèT,J†œŒ¶8PE§´Å\08ÀÀÀÑXt\#E'ˤžÏô¾šF$Å0`ËÖF>Y·D"Á¡ béÒSèÖÜ4ö¨4ô¨Ä¢!‚¾Nº·±ð «UÂj5aVL”ÙK)³×óê_Þ@.0 kRtjÝÎæ–Mx›ýCróÄ2,£Íéôì³Ïæ´Õ¸ä’K²líÆI’¸üòËsF;E£Qî¾ûnî»ï¾¬rKJdôxÊðú¼tíØÁ왳ðù|ttvòÕ#F’r硲 (÷S CGKYÂ¥ïšúúé©ûHFU”Ìû¡m2Œ!ýh-ÍÍøý~úúûSÂ’NMmM¦­¦iè»ÉËóÏÈ èddÞëCD§ššZ¶mÛ’Wt’$‰E‹cݺOÙ¼y‡|(6¨ªŠ+%:µîl¥fJ ÝÝ]4·4STTŒÍf›À£¯ÏËÂ…1eÊZ[[‡Õü^zéOÜvÛÙ`í¶FÌnbº„n.&èÈXª 誊ÕbAÞUÏ3Þ+Vä­?÷ÜsÇðììžÓN;[o½5çÄÿóÏ?ÏøCŠŠŠ†Õ-\p0;w¶Òº³…?¯|•h4J4ÅÐ5¼>oÎ}FLóûý´µµÑÞÞŽÕj¥²²’ÊÊÊ â†Úë9ì8ìûÔÏG~…òò2ÊÊJ“Ïv#ÕÛÛKWG7¡`„Ï>ýC“qSRR2éöƒ±XŒžžzzzèîîNFár¹¨¨¨u$‘ž:VÃ0Ðt„– ¡i ΂BæÍ;ˆ²öóæÍgÞÜùqøWhmmaûö&Þ|ëuÜÅnŠ‹Ý,>ú˜It’åì‡ë–m[ð”xø·»•›oþלۺ»»éîî&ãñx2¯|“M8¦±±‘ööv\.‡êêêýv¼@ @ ìOL¾½žDRTJ¯&O…üd¬ö†ˆ1YQÒàbódvÀ†0d’dCßO­åÒ䛡hšAŸ·‡î¾Nº{;ðúúGe“§(*ª¢â(R1Y$$EF5«44oaåÛ/Pà,Àé(äùGŒË1Ã0Ð ÝÐéëïÃëõâõziéj¢+G ÖMDñƣĢ=ÈvâF˜¸£¯ËO¨Ç ÚkCÞYI¯YÓ"å2e¥¥(ŠrÀÚë¥'OhÀ«+ßÊÔ/]z žÒ<-þhzÍHÙ.¥N…"™qZÜXJ°©ƒ“í[·mEVT^ó/)áNÅl6‘H$óµèš‘Ãd×%ÇϦ-[Ù¼u+¡HEQ°ÛlX,,V 6« E6¡ë:ñX´8ñD”¸ÅfqÐb$ô8-ý0)VL²…˜$–“ˆG‘¢aôDI’‰¦r8¥Ÿ=Sëê˜9£~TQeýë_óF9-\¸úú‰ÍESXXÈ’%Kxíµ×†ÕE"ž}öY®¾òJ M£ï¯%ÚÙI´« Ã0ðû}Dý>̆ŽZW‡}j[·m! æÜ—ïÓOi¼ç æÍÃVW‡mêT “‰U«Vñ»ßýŽ÷Þ{aÛI’ÄW¿úUÎ;ï<Î:ë,Ü)«±=åµ×^#‰ŒØfûŽ&¶ooâž{—sðÁ“ŒÒ!ù7d¢L’oõ]„ÚTaÐÐØ€¢(´·µFhÞ±ƒV¯áƒÕkX»v-‘H~K¹C=”%K–.Ý IDATpâ‰'røá‡OˆÚºuëxóÍ7yë­·øôÓOóÞDz,3uêTæÍ›Ç!‡Â׿þu,X³­a™üMF*ÊiݧŸÑ×ã¥q[Qº:»òŒé3ž|ò EE‘üþV¯þ€¿¾÷WjkëˆFcÄb1"áær+3gÎÂjµ¢(“¬Å´ºiº˜5c6Ë—ßCKK˰6}}ý<ýôïøÎw.£££ŽŽæÍOUeÕ°¨­, âÔoe®ïª³³3+g\}}ý„ Ú»ÒÓÓÃ[o½Åo¼Á;3ó^‡äý¾`ÁN<ñD–,Y‘G‰¢({µÏ÷ߟîîîQµUU•3ÏýôSšššFÕçŒ3X¸pá¨Ç @ Áž2y¢Cìõ$)c¡7TlÊ-8IHÞ@¶§úMMÈfLûºý‘|÷ºa %4z½=ììl¦¹­‘æ–¦Ý&Š£hð«Ue…†›iرI’¨,¯¦²¼jòE'ÝÈLPöõõÑÒÒBss3­;wb !1…ˆÑJ4À `s¦VÐÞÒ‹Ñ_ˆÞW€uG%½hô±=ª È ……aà@†K$Í\߯¾öVæúøÎ¿\Àœ¹³™=wìx˜&ªeÛ,Y'U…3©,˜Û6˜Ë絕¯òñ?ÖòúÁd6ãtØpح躮$$-c-7YçõÄã#‹±yËBáNì6f‹«%™KH–T ]' ƒ– žˆÓ#XÍv"qƒxüÑ^z‚-hFM£ÊfÜN»‡Ížéÿ˜cŽ%ÑÙÕEWw/‰¸F B–ebñ±X«Å‚IU3÷ØD‘~TTTpܱÇP;¥šÇŸüÊ=%TWWâ÷PU‡Ã΢¹õüãËšv´!™m4l ©!À?¶~Hµ»†*w áXˆp,Èó+?!w91"]8ä\Nx@g֌̜1ƒƒæÏ§ªªŠªªªÝF:iš–WÜR‘5ÏHû]»v-kücž}–ê)S˜îrá>ñDUÍØnÙ¸‘ÀÛïxãMŠo¾kn{½ÚÚZ–ÌŸOÓÆüø•WxÆ›»ÝH„B!n¿ývžþyž|òIjjjö¸ÑP3¥–½éVv dÊâÁ‡îcö¬¹Ìš5‡öΙß$I’PU•wßy—‡~±ïÇi³Ù²,ýveݺuœy晜zê©<ôÐC¸\®}?8 ··—o¼‘×_}Äv‡Ã0FÌÔÖÖÆã?Îã?΢E‹¸úê«Y¶lYÆ.×0HÚëM¢ çd‰DˆF£¼òÚŸøÆ7Nå…çÿ@ssó°v½½½ü×ýW]u5ËÎ;·»$gYözº–zeÿ–uwwóä“Of>O›6óÎ;o,kÔ¬\¹’[o½•ÎÎμm, &“)oäÓ¦M›¸ð 9î¸ãøÕ¯~…Çã¯áfðù|\tÑE|ôÑG{´]SS^x!+V¬˜´s.@ ÁþÊ$ÚëeGJä™?ËÃm÷’Y†1$¿{².[cÁï÷Ѻ³™úú¤E—œZÁš‰Ð2V“ÙŒÕfÆf5 dV=¶*´¥í·zتbBULôöôSæ©bjõ`tËd‘Yo„Ãaœ'N—³Ù’ùþÓy’$gò~Arb3\=KÄ0 b±(Á ÁàÀ°dö Ó¦Ö±äøãùÓ«¯O$Ðt»Í†ÕjÅbIÙËYÍ( ) r2ÃSP"+È’‚/Ü! $úp+•ÈR2BÌ–Š2™L8v¢ÑÑX,•+yO<þ8¦O:)«é%IÂb±PPP@II š®a±Zp»‹éìì"‘H Ë25n67÷aèq$l¨è’7ÞÞÁôªÓ«ct÷Ðѧ£G'³‘ÐM IX½XtŠí&Zwê8ÔL™BMM .— «ÕºÛ(§M›6ÑÓÓ“·~þüùc}jFE}}=&“‰x<>¬N×uÖnÙÂ.ŽšB^/;Ð5-ZZV†ÞÛK @íïGéëϹŸÏGÓöíü¸½—‡1Š,óÕ£ŽbΜ9TTTH$èèè`íÚµ¬_¿>g_ëÖ­ãì³ÏæÏþ3UUUcs"† I’,.aH{¶ÁYP€»¤„ªª* IÃëõâóù$‰ÿðGžùݳ9ûýú×—pÉ¥ßâ„ã§fJ-w-ÿ/fÏš‹"©¬\¹’§žz ¿ßŸµÝÊ•+9ýôÓyþù穨¨Öïž°cǾýíoÓØØ8¬ÎãñpþùçsÎ9ç0sæL ’6›Ñh”Í›7óñÇóôÓOóùçŸçìû“O>áÎ;ïdÙ²e©¨¯´Üè#r÷†ýuAWw'>¯—… ¦²²Š[o½•›nº)gÛ5|Èm·ý'¶!‚ÿ®$£î²íLwý-ûÅ/~‘e#yóÍ7£ªÿϺÇ{ŒÛn»-çwsê©§²lÙ2/^ŒÇãIæÇàË/¿äõ×_ç·¿ýí°¨Ä÷Þ{¥K—ò /0uêÔqw?gŸ}vÞgÏîH$\{íµÌœ9SD @ @0„ItC´ Ú%S¶è”Œ‚´ß“‡´² }ˆ5†‘Ñ£4MËØ$íÄãqBÁ ‡ÌZ€ÉbÂl1Ç00†OÉ¿4]O®n6tB¡ä9ÓµlÉ)-Þ¥OÄЈ¯!£KºDÀæ YÕuرã°»!é¤%ðz½8ì \˜Íf¢Ñ(Ñh”þ¾~ìvv»b×`’õÞÞBá¡P—Ë•Ìçc±‹Åô÷÷ÇIh‰ýv’ro$‰Ù³fQYQÁÎ;iko§­½ƒúéSQdE‘),,Àl1a±šˆ$‚(ª‚MwŒz±¨öäËdÃé¢c dc G N,3’$1¥ª’ŽÎ.³fÎÄépàt:9ûÌ3(r¹&ÍÂÉjµfD§@ €–ˆc2©´µµ³ví'Hôù#h]¨ IA’¬þ$Àö–66• *V:{ èìƒp|U»Iç ’¡/¡áP‡ÃNm]Ó¦MCUÕQMê~òÉ'yëÜn7åååcyJFªªÌ˜1ƒ/¿ü2gý— œUYIo/ru5Ê¢EÈ}«WÓ÷ÁÌ9ë,ü~?z(ÄôÚ©¬Õrß[FM oTUñò_$÷+I\X_ϵ×_Ïœo}+ç66làöÛoçý÷ßV·}ûvÎ:ë,V®\9ªè‡wÞyg˜ÅÝÇÌÕW_³½, ¹–sè‰v‡w‰;)zÉŽÔ½pÏÏïåxqXûêêj~ü“ÿË!ÌôõXÌVb±V«•#û G}47Üpÿú¯ÿ:, iãÆœzꩼúê«{-´mÚ´‰+¯¼2§Íà²e˸뮻rFSY,.\ÈÂ… ¹âŠ+x饗¸å–[ð«ë -®%#n¼ù{,\p/<$Óî–[náwÞ¶ýW|—¹óçRZZŠÇãÁ¤š0©&T“ŠÓYHÓöF¶75Q\\ÂôiÓ÷ê|Œ7UUYtèaÄbQÎ:û ~ö³ŸÑÞÞ>¬m¿—wß}y׿Ÿu]O.šI½×t M¼¦{zzøõ¯ù\SSÃ\£§ñå§?ý)Ë—/V^^^ÎÃ?ÌqÇ7¬ÎétrÄGpÄGpýõ×sÛm·ñüóÏgµijjbéÒ¥¼úê«£Ê÷ë_ÿzX·H$ÂQG•w›;î¸##8qÞyçqÊ)§P[[Kqq1>ŸíÛ·ó—¿ü…§žzŠ`px;MÓ¸ùæ›YµjÕ¨~/¼ðBN>ùäa}~øá»Ýv$~ðƒpë­·f•ýñäÎ;ïܧ~@ @ Ø&/ ·aä´½ËA ål#eÊ Œ¤x•Y œ¬Ùßr:ÙmvJŠ=hš‰8º” ÀÈ #{E·$IȲ‚¤ÈY«Ó§0]&%ÝxØõ̆£BÁ0f“ §£â¢Ü–>É`þH$J,'‘HH$ðzûéïï§¡±·»w±cÈõÒÔÔH?}ý}̨ŸAQQ1EEEÄbq"‘hR ÓWà(X,œN'‡z²$ÑÕÕ…»¸(•b2™°˜¬XT ²¤$åLC§g ÍHÐcØÍ…xà DûÙÑ7€I6ãqLÁ¤ªH$ÅÑ"W!>¯É0˜U?²²2ÊJKqŽ*Úg¼ † 0ðãíïçóÏ?£­½§³€þ…B“Œ?EV- ˜(p¹Ñe•þ †"![qYÐ[˜»ª1gŠ• ½lkú’hÈúØŸ°Ù­ÔOŸÉd"0àÇðqÝ÷®åŽÿóýœízð!.ÿîåX,–œõ™(íÔ¿•vtZ±báp8óùæ›oÆd2íAí†_|1§àäñxx饗˜5kÖnû(..æá‡Æn·ó?ÿó?YuÝÝÝ\y啼ùæ›»ûËÊʆ• =?»²zõjžyæN9åî¿ÿ~JKK‡G}}=K–,á{ßû—\rIÎgûgŸ}Æ»ï¾Ë‰'ž8â!)¸9ά²±°£t»Ý¸Ýîae@ @ L“ª@re´–ÐHÆâ ·|éè) 6=• <½âWÓƒ¯”•Zruð ¥ZÒzmÿ™¤*óT±`îá|þÅFzzû0Y͘6,6«³Å†ÙjÅl³`uذÙíØmÌv;›«Í‘yY¬ƒŸmv'v›«ÝŽÙaÃ:äe±Ùðöؼ±³¿q>sfN޵׮¤#‰>Ÿ/+ñx_? \tá%TUV³eë^þóË™×ë×ã**æôÓÎdã—_ÒÝÓÙ6âóùˆÇcd¤SÚ^næÌ™¸Š\Äâ1êë§cµZéííCU‰Á`X$A<¢‘ˆÔJ¥m%æ©8åRfÍ S¿Í15Sa›M0D× Âá(^¯Ÿ¹óæP\RL,稯~5ù:ê(ŠŠŠ°Ùl“&:á#Óиƒ¿®þ;Àáp„D\#‰àTƒÔ¹”›:°i]$zør[+›¶w±¥Å˶ö64uóéÆÐõ¬(ÖQÍVêë§sâñÇbFÃHĉ~wŒ$pŒ‡EÜž0’eÛÎHÅ00Ûlëé¡ïo#Öѹ €@(„f2a)-Å()AI ½»òúªUø,’Ä}S§rÓ‰‘nFB–eî¸ãÎ?ÿüœõ¯¾úê0qf"ˆÅb™È)I–yóÍU9ÅI’øíoC}ý ÌfKòe2£¤lTcÑØ°,EQX±bÓ¦MÖßûï¿Ï#<²Çã½ñÆÙ¹sç°ò“N:‰þð‡{Üß‚ rŠ iÒ9 Ã@Ó5‰xòó(Ÿ½Ng—\ü-ì6;+W¾FsË"‘…….6lüœ~o/v»•­Û¶ÐÛ7\HÛˆEcTTTÒܺƒp$ŒÓYÀ±ÇCqqî{¤££ƒ§žz*oikØt¤“®%_}}}<öØc™¶UUU\|ñÅcz<»cûöíÜrË-9ëxàQ Ni$Iâç?ÿyN‹ºÏ>ûŒ»ï¾{¯Ç™ ]×3QAK—.å·¿ýí0ÁiWª««yî¹ç(..ÎYÿÜsÏé@ @ øgfò"RƒšÓ¹wRùšÒ“ÜF2ªÉÖfx§zŽ<“‰Ãî ¬´Ÿ×‹­Û„j»3½Òy¨_`* 2ƒ0(ªº”I6NJ˜3\!m`ÐÕÖOx ‚ÍbÇ]\‚Õš{µùDc YÁF³VûÚmv<žRìvµµu˜L¦aÖ9%n7²,gÛ ’\5FØœN@&â& …à÷ûðz½üù•?£( Š2ºÛÛV{D&Gš¿q _¬ÿ‚€ßOOw7¿ŸX4Ь(¨ªš‰ö™ldYFUU$ ‚$ "‘}}ýhº–\ñŸº,a•˜aÃÀNB÷ŒÚHíÈŠJ," ¡‡ºˆè~ØV á´™q: ¨¬('ðóÙ§k9úè£G=¾æææ¼u»®rŸhGÞº®XŒp˜ò’ŒÆF:ž{EU‘ÛÛ)¯¨À?0€îvãL gr*P>.*.faa!ápÛŒ¨£\yÏ=÷ðî»ïÒÕÕ5¬îßÿýß9ù䓱ÛóçÃk4MËä4Ã0ø¿wþ8g^¬eË–qÔÑGebp%$Œ!âlV?C°X,üô§?墋.V—Λ4[A€gŸ}–W^yeX¹¢(üä'?Ùëû÷¼óÎcÅŠ|öÙgYåÁ`MÓ1[,tvuàóûðü¨&‰„F0ñšƒ¤¨‹Åp8œÔÖÔ±iófÊËË©(¯Àáp‡éë룰°Y– …B™hËÉ¿‡ŽDhÝÙ‚¢(Ä¢1¢±(Ûwlgé©Ksæü¸ï¾ûøÖ·¾…ÙlΔÅb1âñ8‹…H4BwwÒâ4‘H`2™ƒ<øàƒYVo7ÝtSVÁõ×_O V~Ê)§pÊ)§ìq²,s×]w±téÒau÷Þ{/]tјåwŠF£lݺ•ªª*}ôÑŒ(¼;JKK¹úê«ùÙÏ~6¬îõ×_Ïþwª@ @ ÿ‹ÙD§Œ©Üâ€H©ÿÐCRœÙµmv>¤tõþd¯gv‡Y‘ñy½˜Ìq¦L­Ìg…œš°”äd+‰ÁüV`HZ¦?C“RÑ`ƒö;i{£´­ÚÎm(² «ÅNq‘“É´_LŽ k4ME¾%±ÛxJ<Ømvjkꨬ¨$Í’•Ѭ„ëZBKö—²²:ÐD§¡ß["ž  1ðã÷ùðö÷óò+/§¢,F7 Y²xzò:“$Zþòm;Ûðû}twwã÷û‰F#ȲŒ’&ûºAÑ ÀëíG’e4]#000|ŒªñD˜¸j#¨Ø@V!†D)ØÉ€e a›EeÆÔjÊKK’¢Ó€ŸuŸ®òÛîJwwwÞºÉFÚÂ0h ¨-)¡³©‰Ž>ÂV\Œ»¨ˆ’òr¼~?TUá˜5 Ã0PòØëH7Õ×c–¤¤ètðÁ˜F):Ùl6nºé&n¿ýöau===¼øâ‹\rÉ%£êk,HFñ$£L^ý ¶nÙš³ÝÜö™÷R¶)l²Ÿ"oO>ùd¦M›FSSSVy4å駟榛nÚí8u]çÞ{ïÍYwÞyç*7N>$Iâ;ßù7ß|sVy2BRÇl¶ÐÙÙA(" ¢ª*š–ìvûˆ÷N2‡_ §£€š)u¼õöÄ¢1TEÅ]즯·öö6 E'³Ù¦“G}}½ôöõRæ)Ãf³¡iÚ¨W³ŽÉÜ2ªbbé‰g³qózÖ~ø¼·v\÷[XPÌÁ-báA‹2ça2E§P(”™¨”PŸÏGdˆ¨‹Çðæ[¯ÓÓÓMwO÷°H§ô„c]]E®A £H4‚ÏçCÓ´Œíbww7‡cB£#ÆMÓˆÅbDÂ᤽œÏG 0@"®!Ëkmµ«·ó/÷‘Ž&ŒÅ¢„‚A¬þp-¾þ~"á‰x}[°ÉB’$œN'ªªòààóù2ß÷ÞG>G?ýý}¼ñÚ+ø{;Ø´i§œt­­­´´´òÞ»ï0mút¦M›¾ÛÞv½V‡²»¨ñfw¢×–¦&ê>˜©S§2{Îâá0Pˆ€×Ëö;(X´ˆ‚£ŽÀVY™·ŸeuuÙl´uv²³£ƒ¢K/%PXˆÒ×7ª\#—^z)wÞyg–ífš'žxbBE§¡öz¿úåc9Û,^¼˜E‡.V®0ø»3´Ÿ\\pÁ9'´Ÿ|òIn¸á†ÝF)­\¹’mÛ¶åí{_9óÌ3¹õÖ[3Ç`FF ©,«dÕªUIÛT]gÎìy8ƒA\.׈9yb±@ ¡zÐÜ…ô{ûYóÁ‡¼òÊ+Rà,àÈ#¿J³€P(„ÉdÂjµæÍ‰4Ñü|Ôü=½]¨ŠŠ¢¨L­ŽÃáàœsÎá‰'žÈ¹Ý}÷ÝÇ%—\‚Éd"‹‡ ƒ”—UÒÕÕÅæ-›H$4JܦÕMçÑGÍÊ­uã7Nø9xðÁs–Ïš5‹£Rφ½å¢‹.&:<ýôÓÜvÛmcv¬n·›sÏ=w·›5k%%%9ó¥mܸQˆN@ @ 0I¢S8N®Œ6™ihh ¥µ‹Ù‚aì•d þ™«|XË ]"‘ ¡%pØ`$WcOv”F: ½ªªÔÖÔàt0ðë~]®b¦ÖM§¬´ UU'}uxÚN–eúúûзmMÙë NÆZ-Š\. QUuX²í´Ààv»³Ô'Ñh”Í›7Ñ×ׇ"+™•ñƒß%tutF‰E£´îlC‘eä\"k®¨/I’-·ßG"§·»›h4If6'óÒìQ’$¡ª*‹…ššJJJ2Ï”}_$&Ž`5›hin¡¥¥™¦í;ðù|ÄâñQ÷¶‹ÌÇdG:íNôR>šöÎNŸEÓÐ$‰ˆ¢UU¤SNAš=ÉjÅd2¡˜LyûùŠaÐÜßßå"VY‰QRvû¨íÝìv;_ûÚ×xë­·†Õ­[·Ž 60þÄä§+(( uçNVüò¡¼sçÍåÍ·^r‹ þN¥ï/—«‹Åšw?Ç|NÑ©¹¹™÷ߟãŽ;nÄqþò—¿Ì;þÅ‹¸íhp¹\Ìž=›7É{Ñår¡( v»³Ù”±´­ª¬Æátàt8SV˜ùï›Í†ÇãÉXËY­VJKK ‡CD¢¬V6«•ŠŠ ¬+Vkò5Ù I†R[SCeEþ@uò· WQ‹…K/½”—^z‰þþþaÛµ¶¶òÌ3Ïp饗¢ª*6› Y–™2¥†bw1eÁrt]Çé,@~ÿûßg¶õx<\vÙew@SSo¾ùfκSO=uŸûÏw÷õõ±råJÎ>ûì}ÞÀi§6¢šI’˜9sfNÑ©µµu,†&@ ÁYLN¸ IDAT?=.:†A(ÂȈNÛ2vÁ¡c¿öÚkùéOšsÛû/¾UU±ÛíXS¢n<'‹`6›Y±bEV¥ë¯¿~Äëik9æ˜}¾—Ë…ÏçV·fÍš1Ž<òȽ޶¶¶–?üpX¹ß?¾ ˆ@ @ øgaÂE§tdŠÙl¦¨¨˜3fŽëþE¡  §Ó9ébK:Ò)}ŠŠŠ¨««ËLh²,g^éç“9ag·Ûñx<$³€¤°ø¬åÝ÷Þã<+¨÷‹Å‚ÅbáЃÏ§Çã9`¬õÒÇTQQÁùßü&Ç,^Lsss&?Ö¾^çéIsY–),,¤°°)S¦dVàïHRÒ–1-$ŽeÞ.·Ûͼùó¹îúøã‹Àf³a³Ù8áÄ%£›ÅbÉí4Ôk2ƒ#Ö|Î9~ûÛÄb±dô\,†ÙlÆd2áp82ééçY.jjk9ôå—‘e³ÙŒÙlÆ‘œöäš7o^Þºµk×rÅWŒº¯}á›ç]€a¼þjîç“Ùlæ®ÿ^¾[qewb‰Åb¡¾¾žM›6 «[»vdÖ>úhX4hšÙ³g¸ížpå•Wrå•Wf•¥¡‚‚‚½î7ýÜþgÅápdEÜîÊÕW_ÍÃ?œ3ÚiÇŽ<÷Üs\|ñÅ™gÛ®ç2dYô•””pùå—ÝŒ’\bKš#Ž8bŸû—$‰yóæåŒ(ÜÝ=°'Ì™3g¯·­¨¨ÈY.D'@ @ ’LнžÙl¦¸¸˜¢¢¢Ý7&[dJz,cµê|oö?ÙØívìv;¥¥¥™²»þ|Gôχ$Ib·Û©««cÑ¢d.™±_Ò“ŸŠ¢d§ýáúÉÅX+¡qñ¿ì]Þ «ÕºßŠN»ÛZ¤ßf̘AMMÍ>õ‘î'ÿøÇ?ö¹ÿÑ"Iº®ó÷¿ÿ=g}]]ݘ &%%%9Ë?ùä“sñ­^½:oŸ³fÍ“± ö§Ó9b´Ó=÷ÜÃ\W¸|ôÑGñz½™Ï×]wݤ,¤øàƒr–{<ž}‡’ïذaÑhtLºº½Þ6_tY(Úë>@ @ 8˜´°…´ø2Q¯ý‰>þýõ<ˆ˜L¦ ‰JG®™ÍæL4NZЋ—ÍfÃjµb6›÷›§† ª»²»H#ßkh$Ñi_£UÒä²ÃÜJKKóÚb655{”èPvîÜ™÷»›:uê˜íÇívç,ïïï§½½=ïv[¶lÉ[·/삱ãÊ+¯ÌØüîJSS/¼ðBκ`0ÈÃ?œù\TT4aQ~C y¯Á±¼ò‰N±XŒmÛ¶É>öEXÿgŽÈ@ `"˜”H§4Bˆ¤ó 7C#‘&+rN›ººº¼“££‰tÏkh¤ýWWWÉ>Æ*âÀårå{ à äÄk†F™ìÊêÕ«9äCÆd?½½½yëzzz¨ªªÊY7ÒøÆòûì=………\uÕUÜ}÷Ý9ë—/_Î7¿ùÍa÷þc=–•ûñšk®ÙçhĽ!—5`šõë×Ù=0Òµ<Òý1ZL&f³y¯·ß—m@ @ øßÀ¤ŠNÁÈXEyþyiÕ[[Ûn·Ïkh¤h™ÚÚÚ1ÙÇH¹mö”|‘Nœœž(Ñiè¤ÿ®„B¡ ±Öi # J>»k®¹†‡~8§øÛÐÐÀ‹/¾È²eË2e¡Pˆ+Vd>rõÕWOÈXwe$1(‰ÐÒÒ2îcèééÙç>TUüÓW @ ‚ñDxf Á³pá¼u7nœÀ‘ gÓ¦Myë=ôÐ ÉèI0ñù|6Ž‘D‰b¤ ÷‘©ÉˆŠ䦨¨ˆ+¯¼2oýòå˳l#ýë_g}ïW]uÕ¤-léûß4@ @ ##–{ Á³hÑ¢¼uéÜ<•••8¢$ñxœ†††¼õ‡~øŽft†‘·n"s´¯úúzŽ=öØqÃH׌¢(yë&2÷•`÷\{íµ<òÈ#9£ã¶lÙŸþô'Î9ç"‘>ø`¦ÎétrÍ5×LäP³é¨©©aÉ’%ã>†±Ì%@ `|¢“@ Œ1sæÌÁãñäLÙ¸q㤈N Äãñœuf³™£Ž:jLö3’P´§äÊç”f¢¬õŠ‹‹óÖ-\¸åË—OØXrQ\\ÌÎ;sÖM„õŸ`ô”””pùå—ó‹_ü"gýòåË9ûì³yòÉ'éîîΔ_qÅ#^‡ãÍHû®¯¯Ÿô{@ @ Áþ°×‚1F–eN;í´¼õëÖ­›ÀÑ òÙgŸå­ûÚ×¾6f¶]ápxLú‘E§¢¢¢1ÛÏîiÂ}¤1N#‹\ùƒ“Ëõ×_Ÿ7÷Ù—_~ÉóÏ?Ï<)³Ûí\wÝu5¼œìï÷€ ›H$2ÙC@ ÁÿR„è$ãÀ¹çž›·îå—_žÀ‘Œn¿çœsΘí'ŒI?†aàõzsÖ)Š2¡¹Šö÷ w·Û·Îï÷OàH£ÁãñpÙe—å­¿ùæ›éììÌ|þîw¿KIIÉŒ,?#]cûÃ=p ’/2u4ˆû^ @ “…`8æ˜c˜7o^κõë׳eË– ×ëåí·ßÎYWZZ:¦¢“Ïç“~ÚÚÚò®ÖŸ5k’$É~FCuuu^á©££cÂÆ‘ùóçç­kllœÀ‘FË 7Ü€ÅbÉYF3ï­V+×_ýD +/v»=oN¥¡™`Ïé9¶/ÑJù{@ @ Æ!: Á81’Ö‹/¾8#W_}•X,–³îª«®Ê;ù½7444Œ{?‡vؘìc´H’”7çÕöíÛ³D‚É`ñâÅyë¶mÛ6#Œ–òòr¾õ­oí¶Ý·¿ýmJKK'`D»'ßuÖÛÛ›•J0z”ÿÇÞ‡GUÝÿÏž™É$“Ìd²“’€,U¥ö[µýUý–V‹RkÕ¶*‚Kí×VëÒŠ¸UEEPYYe_”=¬ !;™¬“Ù÷ùý1ÉHÈ$d%¼_Ï“ç{gÎùÌÝïýÜsŽHÔìñ·#I§Î:µ“NDD]äî»ïÆu×]tÞÒ¥K¯Ø˜^¯ï¿ÿ~Ðy111øÝï~שõwÊ8B-Au¥“N€¿õZ0gΜéÔº<ˆü1ðwòäÉ??lØ0„„„wêÔ©N‹K¯×£¨¨¨Ñµß¼yó •J›/“Éðè£^ÁˆZÖÜ>à²Ûh[9r¤Ñ>pìØ±N-ÿj¢R©‚N¯¨¨hw™§OŸn÷w‰ˆˆˆˆˆˆ:‚I'"¢."‰ð÷¿ÿ=è¼²²2üûßÿ¾"q|öÙgÍ>°?> E§×yàÀ—±qãÆfç;¶Ãå·ÕäÉ“›í kûöíVϱcÇ0eÊL:5ð÷Î;ï´ø©TŠñãÇ·gÏžNi‰e·Û1|øpdggþîºë®—Û›ÅÅÅáÞ{ïmvþ}÷݇˜˜˜+QËÆ‰DtÞŽ;:­žââbLš4©Ñ>ðÊ+¯tZùW›°°° ÓKJJÚU^QQ ;Q»1éDDÔ…F…9sæ÷Æotùx@f³/¼ðBÐyÓ¦MÃÏþó.©÷믿îÐ÷kjj°ÿþ óÆŒƒ”””•ßiii˜2eJÐyÙ]âºuëšL›1cÆe¿×\wŽ6› »víêp\7n„Åbi4í–[niõ÷›KV¸\®Åu­›7o^Ðe#•J1oÞ¼nˆ¨y:®ÙDãÊ•+áóù:¥ž`ûÀÌ™3;¥ì«QRRRÐéím­ÔÑã/QG0éDDÔÅ,X´›=«ÕŠyóæuÙCwŸÏ‡'žx"èX+}úôéÒ–Vk×®…Ñhl÷÷/^ ÇtÞý÷ßßîr;ê‘G :ýرcÒý—ÃáÀG}ÔhšF£i¶ÓÅFììì ó–.]ÚáØV®\ÙdÚm·ÝÖêï+•Ê Ó/·äååaÈ!þ6lØÐêz¯v‰‰‰A“¿÷Üsâãã»!¢–Í;7h‹¿âââNiíäñxštªP(0uêÔ—}µ0`@Ðé»wïnsYN§ÿýï;Q»1éDDÔÅd2–.]Џ¸¸&ó6oÞŒ9sæ4›`éˆ'žx_|ñE“éjµŸ}öÔju§×Ù ®®ÿøÇ?ÚõÝšš,^¼8輤¤$LŸ>½#¡uȨQ£š׿™gžépùï¼óªªªM{ôÑG!“ÉZõý'žx"èôÕ«Wwhl§¢¢"lÚ´©Ñ´‘#Gbøðá­.£¹.ÄêêêZü^AAŠ‹‹ýEFF¶ºÞkÁßÿþw>|¸Ñß‹/¾ØÝa•••…[o½5è¼çž{^¯·Cå/]ºçÏŸo4mΜ9]z¼ênÍ%öìÙƒ .´©¬wß}—c­Q·bÒ‰ˆè HHHÀÊ•+¡ÑhšÌ[½z5~øaØl¶N©Ëétâ©§ž ú¶»\.ÇÒ¥K‘™™Ù)u#úO-ï½÷^›[>x<üæ7¿Éd :ÿ_ÿú¤Ri‡c숷ß~M¦ï޽˖-kw¹Gm2XLL þ÷ÿ·ÕeL:¿þõ¯›Lohõæt:Û—ÃáÀ¯ýë&ãBýéOjS9}ûö :½¶¶¶Åï]ú]  ==½Mu_íär9úôéÓèO.—wwXÍzõÕWÛdúñãDZhÑ¢v—{îܹ&ÉÛððpÌ;·Ýe^ n¾ùæ Ç5§Ó‰—^z©Õålܸ1Ðê 7ÜÐiñµ“NDDWH¿~ý°iÓ&ôï߿ɼ/¿ü£Fêp·a{÷îÅøñã›tOø_ëׯïò‡‘wÝubbbàr¹pß}÷µ:ñd·Û1wî\|ÿý÷AçßsÏ=7n\'FÚ>ñññxë­·‚Î{ì±Ç‚ŽGs9'OžÄÝwßÝ()$ ±hÑ"„„„´©¬—^z YYYM¦ïÝ»=öX›ÇÝyúé§qôèÑFÓfÏž‰'¶©œAƒ¾gÏž¿·bÅŠFÿ¿îºëz\K§kF£ÁâÅ‹ æ‹=÷ÜsíJ¾ž?³fÍj2nØo¼4ÉÛ“DDD`Ò¤IAç}öÙgøóŸÿ »ÝÞì÷Ýn7^ýuüú׿†ÛíÆèÑ£»l¼>""""""¢ËwwDD½IRR¾ûî;<ôÐCX»vm£yÅÅŸ÷Þ{1iÒ$üìg?Ô)S~Ù2ív;¶nÝŠ•+Wâ›o¾ šT¸á†ðñÇC«Õ¶9f‡Ã³gÏ6™^ZZôóøÏþƒÙ³gÃb±`Ö¬YøùÏ޹sçM¸¹\.lÙ²Ï?ÿ<Μ9´Ìììlüíoksì]eÚ´iX¸p!,XÐhy»ÝnÜÿý˜3gþú׿B¡P´XŽÛíÆÇŒ Àjµ6š÷ä“O⦛njsl!!!X²d fÏž‚‚‚Fó–/_ŽÒÒR¼ýöÛA»{¼XNNžyæìܹ³Ñô¤¤$¼òÊ+mŽkÈ!HLLDqqq£éÇŽCnnnЖPëׯÇM›5kV›ënæ¶{Mº;qâDÐ.ÓÓÓ»¼Å’ÕjŹsç‚NoNee%Ž?Þdzhh(RRRZUïèÑ£ñÚk¯áñÇoÔ=¨Ïçã>Š~ø ,¸ì1ÌëõâóÏ?ÇÓO?ݤ«Åßþö·˜9sæec©ªªjÒ Ý¥-ó.®/Øoïׯ_“uXRRÒ¤%^sÝÝUWW7)W*•"##ã²ñþ„õwß}´{Â÷Þ{ß~û-n¿ývŒ1QQQ€²²2:tß|ó ÊÊÊu¾öÚkØ»woÐzjjj‚þþÔÔÔfÇ]#""""""j àHP[S‰šjÿ€órE(Bä¡ÝQåóùðÆoàÕW_möá°D"Á7ÞˆÌÌLèt:èt:DFFÂh4B¯×£²²çÎÃöíÛ›íšO,ãÁÄÂ… !‘HÚë‰'Ú”ü˜3g^~ùe,\¸o¾ùf£yiiiÈÈÈ@TTœN'ÊËËqìØ1TWW7[Þ Aƒðõ×_·*ל;vMVÜtÓMøê«¯Ú]îªU«0wîÜ ¸µZ-¦OŸŽ©S§"99QQQH$0 ÈËËÃÞ½{±|ùòÀÃâ‹ýå/is÷u—ª¬¬ÄÿüÏÿàÈ‘#MæÉårÜzë­¸ãŽ;šš N³ÙŒüü|œ;wÀ—_~ÙäxZZ¾úê+ÄÇÇ·+¦7ß| .l2]£Ñà…^@vv64 òòò°qãF¼õÖ[Z­‡º"ÇóóóÛ4fU0ëׯLj#:)¢àöîÝÛìKm5jÔ¨&ÉðËÙ´ixà Ç1µZ[n¹Ó¦M lg2™ ƒçϟǾ}ûðùçŸ7IŽÀÃ?ŒçŸà²1¼ýöÛxöÙgÛ÷¥vîÜÙ$)þÐC¯µbbbpâĉVþ©§ž ÚJµµD"Þzë-üüç?Ç’%Kð‡?ü¡Õßýꫯڕä&"""""¢ÞËn3Ãf5 òQXæÌcK'"¢î ð‡?ü÷Ýw^ýu|øá‡M.— Û·oÇöíÛÛ\¾P(ÄÏ~ö3<ùä“HNNî¤¨Ûæ¹çžCll,ž}öY¸Ýnþ1[‚µÊhδiÓðÖ[ou(áÔ•î¼óN$$$à‰'ž@NNN£yUUUøä“OðÉ'Ÿ´º<­V‹—^z ³gÏîplQQQX³f ž}öY|úé§u6› +V¬hÒu]K¦NŠ7ß|³]­å<üðÃX½z5>Ühzuu5~øá¿+‘Hðᇲ5ÆUææ›oÆ·ß~‹Çl4Ï`0`ùòåX¾|y«Ë ÇüùóƒŽMÖÓ½ð ÐëõX³fM›¿+“ÉðÁ`Ú´i]QëqL'"¢n¤Õjñâ‹/âàÁƒøÝï~è6©½t:î½÷^ìÞ½o¿ýv·%œÌ™3«V­Bfff›¾…?üŸ~úéU?žËˆ#ðý÷ßcñâÅ­îšìRøýïtJ©B¡À«¯¾Š={öàöÛooU«‘K¥§§ãwÞÁ²eË:”pü-ï¾üòËfǯiNll,V­Z…Ñ£Gw¨~êÄÆ±dÉ’Vw'w)•J…|è• 'Àß5Þ|€'Ÿ|¡¡­ïm`ذaøú믙p""""""¢«»×#"ºŠx½^ìÛ·{÷îÅ?ü€3gΠ´´´Qc ÂÃáÑh””„qãÆaâĉ0`@§ÇdµZ›´LiI\\\ÐäËáDZlÙ2|ÿý÷(//oÔ—P(„V«Å¸qãpÇw`âĉJ¥?ÐuÝë]ÊçóáØ±cظq#6oÞŒÜÜÜ&ãÔþV ×]wŒñãÇãæ›oîÔßÛœªª*lÞ¼›6mÂþýûQYYÙ¨àoQ4`À 6 3fÌÀM7ÝÔ®dÕåìÙ³K–,ÁþýûQXXØd~hh(²³³1kÖ,Ü}÷Ý]>6Ò¥ìv{“–;m5hÐ ¨TªNŠ(8£ÑtŒžö ÃÀ;\Ή'°iÓ&lÞ¼§OŸ†Á`h2ÖœT*EVV† ‚±cÇbÚ´i iW}eee8þ|‡bÎÎÎn2[nn.***Ú]¦T*mwÕÕÕX¶l¶nÝŠýû÷7j +‰‡ࡇ˜1cš|_¯×#//¯Õõ]wÝuWm‹R""""""º:5×½“NDDW9—Ë…ªª*Øl68¨Õjh4š+’¤èJ&“ z½r¹ÑÑÑ‹»®Ç×+•t ¦aýÕÕÕ!44ááá í’DN[ù|> TUUA,C­V#<<Bá•mm2™PWW³Ù ©T •JFsÅã ®áv»Q]]ÚÚZ(•J„‡‡C¥R]ûÀµÀëõ¢®®ƒÐî1úˆˆˆˆˆˆˆ: Çt""ºFI$ÄÆÆvwN¥Ruy+«AÃú»ס@ @DDD·waØ[¶…ÞJ,#::ÑÑÑÝÊ5I(^û)Qkðb""êñ.íÚ«[Zu&ˆˆ¨Ç«®®:=,,ì GBDDDDDDDDÔs±{=""ºfœ:u ‹žžµZݪïUTTÙi±õvléDDD׌¹sçbêÔ©˜:u*¾øâ‹V¯¹¤SJJJg…FDDDDDDDDÔë1éDDDפœœœVöäÉ“A§7®³Â!""""""""êõ˜t""¢kÒþýûáõz/û¹¢¢"lÙ²¥Éô„„ 8°+B#""""""""ꕘt""¢kR^^–,YrÙϽÿþûA“SúÓŸ º"4"¢¯¤¤Ó¦MÑ#Gº;""""""ºŠ0éDDD׬^x»víjvþ«¯¾Š·ß~»Éô¡C‡â¿øEW†FDÔ£íÛ·‡Æ”)S0þ|Øl¶î‰ˆˆˆˆˆˆ®âˆ¨½jkkqÇw`öìÙ3f úõë»ÝŽ£GbûöíØ¶m[“ï$$$`éÒ¥‹y $"j¯Ù³gcÀ€xôÑGñŸÿüß~û-þõ¯aìØ±Ýu#>q#"¢k†H$j2ÍçóaÅŠX±bÅe¿Ÿ>ú:®+Â#"êU²²²ðÝwßañâÅx饗pÇwà¾ûîÃóÏ?ðððˆˆˆˆº»×#"¢kÆgŸ}†'Ÿ|QQQmú^DDžzê)¬[· ]Qï# ñÐCa÷îÝ7n>ýôSŒ5 ëÖ­ëîЈˆˆˆˆˆ¨øÿ›âµ5•¨©®È¡‘‡vglDDDAy½^üðÃØ´i>ŒœœÔÖÖÂãñT*¢££1|øpÜxã¸ýöÛ¡T*»9j"¢žoÙ²exöÙga00sæL¼òÊ+l]JDDDDDÔÙmfجf@aA> òñÀœyÝ—t*(,DAa!V¯û‹f³Z­}û¢_ßtLž8¡Ë꾟ϟϡ°s‚Y­VX¬V|´äSTVU¡²² B¡Ñ:tº(üú—÷!$$!2Y«Ë4¨3±|Å—=êÜxà kGuö²#"""¢kKEEžzê)¬^½jµÏ?ÿ<î½÷Þˆˆˆˆˆ:QsI§nÉ œÍÍűã98ðãAded`äðá˜2y®ëŸ—Û…BþùÔ ÝŽ?Ž%Ë> $P:*ÿüylÞº !!!ÈèÛS&O¤ ã‘’œø€mÛ·ã|AA›Ê …H$ÐDFB"ïpŒ¥³—][t:þûßÿâ“O>L&ã>ŠY³f¡ ×»DDDDDDtíé–¤Ó™³¹8–ãO:efôó'&M€¬,¸]nüxðòÏŸGmm÷$ŽÏÁ'K—ÁëõvJyùç °yëV„ÈdÈè×S&MÄÄñã’œ ŸÏ‡­ßoGAAa›Ê‰DˆÅˆŒˆ€\~õ$:{Ùѵiƌػw/~ùË_bÇŽ3f Þ~ûí@W¨DDDDDDÔóˆ¯den·ï¼ÿ¦Nž„Ÿ{™ù±±1ˆÁÁƒðÕê5˜~ËT¤¦$Ãj³Á`0 ¶¶åz=ÊËõ¸eÊÍü]ºøñ L&Œ&deA«Ñ@£‰lT¿ÕfCqq ŠŠ‹a4¡VC­VchöÀgŽÏ^¯|>ì?ðâ‘@­ªçbÕÕÕ(»p…xïíÿ@ ÊŠÖé0qü8üî‘Ga³Ù`±X ‰P[[‹šÚZÄÆÆ¢¨¨…EE U"9) I}ú@,C*•B(bÐÀˆˆPªªªát9át:ár¹>Sý IDATQQQ}EÒRSèhúV« V«f‹^¯Çsrˆˆ 4°ÉïhÍ2nnÙ±«="""¢Þ)<<¯¿þ:fÏž?üáxöÙg±jÕ*¼ùæ›èß¿w‡GDDDDDDìŠ&Ìf3 uF( „‡‡C«Õ6ùŒZ­FjJ2¦ß2}ÓÒ‹çòóqúÌ(•þq¦7þ±¡Šp¾ b±b±ÛwîDŸÄDô铈þ™™®ÞÖ~».— n·2©…ÅÅ8}ö, 9´Z-´ ªkj`µÙ••PG¨áóùPXT„¢âë F&“A*•B*•bߥ…N«Exxxà7Ìœ1é©©J¥0šLÈËÏÇÉS§ ÇÇ‹Óg΢¶Ö€² å;úFØX-VìܽC D„Zr½e. ìÂ…BìÞ»‰‰‰è“˜€ÁÂl6£¢²?:H‚‰„Bœ3à8}1ºŸ’T­YÆš]vDDDDÔ»3»víÂË/¿ŒE‹aâĉ˜7oþøÇ?BÖ†qM‰ˆˆˆˆˆèêvE› ÔÔŸŸ(­Z­Z¦Ég"Ôj¤$'cúÔ)è›îO:™Ífœ.©)ÉÈÊÈ€L*ÃÉS§±lùçðù|p¹\°Ûí8yê4<RSR••‰ðð0X¬VìØµ…EE€èh”J%  ¾¾•޾¢¢UõK°Èår 蟅[§OÇö;±vÝ·XúùX±ê+|·i3öî?€17Þˆ”ädH$X,–ÀoÐj4Èì×jµ…ÅÅX½nÀáp ÎhÄÎÝ»QX\ ¸P^ŽÃGbÃÆM CB|<²23Š3gÏbÙòÏát:a0ÖáBy96l܄⒄‡…!+3ñqq ŲåŸãðÑ£p:­^Æ>Ÿ¯É²  $Öˆˆˆˆ¨w ÁÂ… ±qãFdddàŸÿü'ÆtwhDDDDDDÔI®hK'—Ë‹Õ ¥R©DÚ¦ï:&L?¡¡¡U*qøèQT×ÔÂd2ãæIu[·zÝ:lÙ¶ ^¯n·‡©)É>߬Y‹mßo‡Ãé ô£o³Û‘œ”„©7OFHH, Ì >_ñ%232àp:q¡¼¼UË8زkhmEDDDDÔ`È!زe Þzë-üãÿÀŒ3ðÀ`þüùþ˜ˆˆˆˆˆˆèšuE“Nb±!!!0›Ìp:Í~Îçóá\þùú1— …ZÆŸ ©w67z½6› ÿ÷êkÊ8_P—Ë…êêj(•JDDD`ÔÈ‘(-+ÃÒ埣¨¸806Ô€þYÍvW]SÓ¦z‚Ý(GFF 22 žy>Ÿ^¯'N¹ü|äËÇÃóæá¶[gà¶3ü¿U.‡V£ADDD  ™L‘H¯·åîꢴZôÏÌ $°‚(&:11Ñ(..ÉdàOÅÆÄ>ÛLL4¼^/Š‹KZýÛ@§Óµà¿/xì±Ç0sæLÌ›7ï¿ÿ>6lØ€×^{ “&Mêîðˆˆˆˆˆˆ¨®hÒI©T@C]Lf3ìB.éÃÝjµÂjµbæM>l(†À?†“H$jôY¡P…\Md$úge5š‹þ™YËå°Ûí0šLؼu”J” ^7±11¨Œ¯‚­~¢`´º±¸éâ,+»“Ù ³ÅŒaÙÙ¸£u:H$Dët8ž“¯×‡ ååˆÖéüc1i5Õ I­àÓ}@}ë#¯×4Ùæõú»Ë[ÿÛ‰ˆˆˆˆÚ*==k׮Ň~ˆçŸwß}7î¾ûn¼ôÒKˆŒŒìîðˆˆˆˆˆˆ¨®lÒI¡@T”µÌ ìv{Ó¤“͆ªêjlظ ju é$ ›$ 9"##Ð?33h!!!¨3¡¯¨Àæ­[‘=x0† „ Ö`@m­;wïn6f@Ðêz.JËÊpA¯Ç…òr ËÎnÔ=]t}Ë •_¯×‹² ?%ÚÛ-]ËI'o}ÙþiÍ'¼mþíDDDDDí!ðàƒâ–[nÁã?Ž/¾ø[·nÅË/¿Œ;ï¼³»Ã#"""""¢6h_sšv ElL FŽââüëÍÃyÑC.— ‡ÁGŸ.Ÿ±c’œÔb‹Ÿëô‡H$ÂÙÜ<ÄÅÆ ©O"ÒÓRáñx°{ï^¼úúH$0ê››‡Q7ŒÄÄ ãqëôiHêÓ¹yy-ƬÓEµºž`±ÆÅÅ¢¼¼ë¾]’ÒRë»¶§Ó “ÙŒââ$÷éÓÎ%û“ŠÊ ?‘ƒŠŠ X,ÀÉS§QT\‚ÚÚZ$%&"<Ìßeáñ9È?€Êª*œ¯×Š¸ØØËÑj4ˆ‰AŸÄD|³vB•J„†*qúl.`ð €°°0$&$`ï8–“·Û §Ó‰ÊÊJØìv”ë+P®×C¯¯@t´"‘2™ ;víFT”º¨(DGG_¶ž`ÂT*$%õÁÐì!X·~T*ÂÂT‹Ä0[,°X­HOKEbBb¢£áp::´l¥R)ÂTªú®ýc4{£FŽÄ #FÂÃÂàKH@Qq Ün7ªªª`6›‚@©\¯Gt´b‘2©;víÂØÑ£‘Ñ·/b¢u—­'•J…ä¤$8¼÷á¦RA¥RA&•ÁPWC]n›1}­CQqq‡–­L&ƒJ¥Â¦­ÛªTB©Tàä©Ó9|8F ¿b±"‘0[IiŠKJ­‹ $yø!ôIL€X,nõ2npé²KLˆgÒ‰ˆˆˆˆÚD£ÑàwÞÁ]wÝ…ÇO<ñV­Z…7ÞxiiiÝ—ÇãÁƒ>ˆ7ß|aaaÝÑÕJÀøßØ«­©DMu%@®Eˆ<´Ë(»p«‹ÑQ:¨T¡ m{½0[,0[,HIN†L*…ô’¤•Éd‚¡®µ’û $D™L†Ü¼<( ( ¨Õê@<ååzDëtÐé¢o3¶¦žæØl6ÔÔÖ¢¦¦B‘áaa ƒJ¥jóïõù|ðù|°ZmJ¥J%Ø´e+JJKQ\R‚'ûƒÌ*ƒñ±±äŸ?sùç±wÿ~Œun¼áäøb¡¡P«Õí^Æ--;""""¢¶2›Íxþùçñá‡B*•âÉ'ŸÄܹs!_ù÷çžyæ,Z´ .Äܹs¯xýDDDDDDW »Í ›Õ (,ÈGaA>˜3¯û“NÔy.N:Íÿë_šýÜÅI§qcÇbÜØ1W0J""""¢¶Û¿?æÍ›‡ÜÜ\ 8o¾ù& tÅêÿì³Ï‰¦„„"""""¢k»×#""""¢C$aîܹصkÆŒƒ?þ£FÂúõë;­ŽGy¤Ù„ÀÖNDDDDDD—bÒ‰ˆˆˆˆˆ®Y)))øúë¯ñÆoÀf³á¾ûîÃ<€ÊÊÊ•ûÖ[oaÕªU-~fݺu(**êP=DDDDDD= “NDDDDDtÍ»ï¾û°wï^̘1ß|ó F…åË—·«¬Ý»wã…^¸ìç<Þ}÷ÝvÕADDDDDÔ1éDDDDDD=Btt4>ùä|ôÑGH$øýïÙ³g·©5Ryy9|ðAx<žV}þÓO?…ÉdjoÈDDDDDD= “NDDDDDԣ̜9{÷îÅ=÷܃mÛ¶aôèÑX¼x1¼^o‹ßs¹\mîšÏd2áÓO?íhÈDDDDDD=“NDDDDDÔã¨ÕêÀ¸L:ýë_qË-·àôéÓÍ~gþüùØ¿›ëz÷Ýw[Ý2Šˆˆˆˆˆ¨'cÒ‰ˆˆˆˆˆz¬qãÆa×®]xøá‡qäÈL˜0ÿ÷ÿ§ÓÙès«V­j÷øLEEEX·n]g„KDDDDDtMcÒ‰ˆˆˆˆˆz4¹\Ž^x6l@zz:^yåL˜0?þø#àÌ™3˜7o^‡êX´hQg„JDDDDDtMcÒ‰ˆˆˆˆˆz…¡C‡bëÖ­øË_þ‚üü|L›6 O<ñ~ùË_Âjµv¨ìàèÑ£)ѵ‰I'"""""ê5$ þô§?aûöí¸þúëñá‡âܹsRö{ï½×)å]«˜t"""""¢^§_¿~˜>}z§–¹jÕ*TWWwj™DDDDDD×&ˆˆˆˆˆ¨×Ù½{7^|ñÅN-Óáp`É’%Z&ѵ„I'"""""êUôz=|ðA¸ÝîN/û¿ÿý/<O§—KDDDDDt-`Ò‰ˆˆˆˆˆz ·Ûûï¿•••]R~II 6lØÐ%e]í˜t"""""¢^cÁ‚Ø¿—ÖñÞ{ïuiùDDDDDDW+&ˆˆˆˆˆ¨Wذa-ZÔåõìܹgΜéòzˆˆˆˆˆˆ®6L:QWVV†GyäŠÕ÷Á\±ºˆˆˆˆˆˆ®L:Qæñx0gÎÔÔÔ\±:W®\ §ÓyÅê#"""""º0éDDDDDD=Ú?þñìÝ»÷ŠÖi0°uëÖ+Z'QwcÒ‰ˆˆˆˆˆz¬]»váÕW_í–ºW®\Ù-õu&ˆˆˆˆˆ¨Gr:˜?>¼^o·Ô¿~ýzX­Ön©›ˆˆˆˆˆ¨;ˆ»;"""""¢® •J±uëVÔÔÔàÔ©S8uêNž<ø·ÉdêÒúm6Ö¯_»îº«Kë!"""""ºZ0éDDDDDD=Zdd$FÑ£G7š^RR‚“'OâäÉ“8}ú4Nž<‰ÜÜ\8ÎN«{ãÆL:Q¯Á¤õJ HHHÀ”)SÓÜn7Î;‡“'OâÌ™3ÈÍÍEnn.òòòàp8Ú\Gyyyg†LDDDDDtUcÒ‰ˆˆˆˆˆ¨žX,FFF222M÷z½(**Bnn.Ξ=HF={555Í–W[[ÛÕ!]5˜t""""""º ¡Pˆääd$''ãæ›on4¯ºººI"*77eee>|x7ELDDDDDtå1éDDDDDDÔ£F¨Q£M÷ù|ÝÑ•'ìˆˆˆˆz"&œˆˆˆˆˆ¨·aÒ‰ˆˆˆˆˆˆˆˆˆˆˆˆ:¬Gv¯WYU…#ÇŽáÈÑc8yê4^7CÂAƒ ïî0{%“É„mÛw`ëöí{ã蟕‰¬ÌÌ&Ÿ;s6§ÏžÅ¶íÛ1nìXŒ;‘ÝñÕÇçóÁçóA(dÎøbmÝï½^oà3mµqóäæåáln^\øJJJQ\R‚uë7`â„ñ˜8~T¡¡—-çǃ‡PX\ŒÂ¢"„‡…aè!È2¸ÉçN>ƒS§OÃíqc@ÿþ•uÙ²‹KJsò$rNœÄý¡Í¿‘Úæû;p&7gÎæB¯¯€B¡€B¡ÀÌéÓš’‚Ô”d€Ùl†ÉlÆ'K—aÌ£0ú’n˜ZãÒíO&•B*•vîºx<¸Ý<õÌ3˜ìÙ»7Œ´ÔT¤¥¤tcÄ×¶Ââlnîe?;tÈdŒ ›6aô¨pã 7\›gµZa±ZñÑ’OQYU…ÊÊ*…BDëtÐé¢ðë_Þ‡„ÈdWí±³#ç,ê^»R[¢ °«×} ‹Å³Ù­V‹Œ¾}ѯo:&OœølEE9ŠCGŽâ/Oþ©[âm8—.xñ%Lžè?—öv.— N§[¿ßŽ-ßû~ñ?ˆ‹E\ll£ÏÏ9‚ÂBœ/(Ä£¿¨Íõ\©{º‚T*…D"Áç_~ »Ã»ÝÞè3 ¹Ñ:¢uQ¸kÖ‰D]ÏeMmÙö=6oݛݘ&‰†°°0Ü}×P©T{K£Ñˆ:£ËW|Ù-×X¯Ã«õšéZçv»±qËlܼ/-x.°ÿv®3"º’zdÒéÏÏ<‹„øx$ÄÇãŸ/¿¯× ׋Ï>_­Û¶cåW_ã­×^íî0{%—Û åå8žs••€@ôÆýÔ™3øzõ””–¢_ß¾p:ÝíÕiɲÏðñ§K±qíj…B^´×kë~óŒ™øå=¿À/ïùD"Q›êZüþ7v,ø¿B¨R‰c99øâË•˜ÿ׿ :Z‡P¥²UålÛ±éi©˜^º 7ŒŽY·ÍDzj j ¼öæ[¸~ØP\?t(&Oœ·Û »ÝŽÓgÎ"³_¿vÕyéö×[>Ÿ^¯GÇ€¬,x<^þ5—Ë…??ó,Ôáá ÃÍ'öÚåÔYú¦¥B«‰ÄØo L[ðâK€{ñ?ÐDF°+•þ¤kß´4DFDvK¼Û¼u¾Y»7ŒQ#G +#.·9'NâxÎ <»ðyLŸ:Ó¦N¹j9gQÇðÚ•Zkͺoqôøq9vó~ÿ"#üÇÅóØ»ÿÞyï}¼Œbw8pA¯Ç©3gº-æ†séñ'0ðºÝÇÕÄëõÂíö ìB9Ž;½¾w̼·Ï¼!!!ÏÕ(»p¹çòÚUÏ•º§Û¶cF¿#®¿'N 1jäH¤&'>c¨3àð‘£Ø°iLf3†egchöN…粦ô8~âæþî·S© R©`µÙPRR‚â’üî‘y¸íÖ¸mÆt袢 ‘H Ë»íëâuxµ^3]ë¼^/ÊËõ8zì8ÜnÄbo§•ÍuFDWRJ:¹\.¸Ýn u8`†…Boý[D7ŒŽ£Ç£ªº .— B¡"‘^¯uF#ŒF#ìvTªP„©T½¨¥BÛH%¥¥p¹Ýp»ÝˆŽŠò¿[ñÙðÛP[ ±D‰D‚òr="##bŒ&L&Œ&” ” %4šî s% ê—»B¡€ËåBUU5´ZM`¾¡®N§b±R©¢‹Þ²jÍz°X,0[, ƒX,†Xìß̶“Ùì_öJ%JËÊàp8áp: ÓFA®CQÿ¦¼×ë…×ëEmm­¿‰%¥¥‡È!—‡ Z§ƒÉd‚Éd†Ñd„J¥ \(^ìâu Åz¤R)¤2ŠŠŠ ‰ ‰Ô§Oàm"}EÌf3 ´´ aáa ƒÍfƒÑh‚Ñd„‡ù§_|cÔSµu¿·Ùl°Õ¿Ýg4šPZZ†ÄÄÿzðùP\\ ·ÛÇ µZ UhhàX`±Xa±Zàr»át:aw8P®×Ãh4ÂåvÃîpÀjµÂl6ãBy9 ú$$4Ú¶c¯× …Âÿfa¨R ›ÝŽâ’R¤§¥~_MM-Lf3œN'âãâªTÂëõÖ·Ín‡R¡@¨R µZøžT*EXX¢££-¯Öï€Ö«\.\.JJK›ý­=™ÇãAIi~$$j5”ŠŸ’ê Œ""ÔÐh"¡ÓFù§‹E‹DˆŽŽ$áÝn7lv;ì6BärFM&DFD T©„R©DYÙ8œ8ÄÇÅA*“AvI+¾–ö‘`l6L& †: 2QZ- <^/R’“¡T({..·ÿxÖܱÓívŽáááP‡‡£ºº¡¡J„††6ú¡*êêêPWWh‰xñùøéº±åóŽÿšøéœ­ƒÃá€Ýá€.**£ÿg‡Ýn‡NÕi×¥½ýXtìÚµAk¶]—Ûºº:F8ŽÀõmlLL“ò¬Vk³×~†:” %”Jÿ1ÒÍi€Ré¿v¹Ý°Ûl°Ûí+0›Í0›-®EZ{Kñôt^¯>Ÿ?:ŒP¥ÇCRŸ>‡„@.—#11†º:¸Ýnœ>{aaaÐ ¬Vkýþh†X, c.nmÒšë¿–ÖgÃú/.)øà©P(šü&î÷þñØD"¢¢´0šL8|ô(FyÙïµf=5wO':í¸|ñý†@ L—ןϣuº@yááa0šL°ÙíþØêÏ;@ëŸ_´t v.KLLðßÏ÷òí¬Add$Ôõû½Ëí‚JŠøø8äÀápàXN&O˜‘H©TÚ諳Žã-Ý'[‡ju8T*ÿ5“¾¢!2d2Y£ã¾ÍfƒÃé„Óé„.**èöÄsJÛY­VXm6(ä H$â@K¨†û“Ù @¡@Ðh›ˆÖEµû× µU:“»ÝnX­V D¨ÕÈ2¸Ñ…úÈÃQY]…CGŽÀétúo E"x<ÔÖP\RC]âãâ € IÒÉëõ¢°¨v»6» R‰juà ëñzár¹PQY …B¹\޼sçŽ4DFDÀçóùOÐee(-+ƒ.* QZm¯K: ë/àr9\.*«ª߸ õ7î"H$’FoAµf=˜-èõI¥ \°6l•ÐEEA¡P ¤´,pÑ#ÌB M£dÛíFEe%är9BBBpêôDFøÖø“Nf”–•¡¤¬ñqq@\\£¤Ó¥ë@‹õ¨êOì§Ïœõ' ¤$&$Þ~Óë+`±X€úÄ[‚S©`±ZqA_Ž’’R„BôILüþž®­û½ÑhBMm-àóÁd2ú—cB<<õëá\þy8þ‡ž)ÉÉ@lÌOÿ¬TTTÂårÁátÂn·£¼\:£.— v»V« &³gÎæú, Ðiµ¶Å†íØëõBYŸtR*°Ûl(.)itƒP]S³Ù ‡ÃèÖÃëõ?H*.)E­¡ÖßETTT“¤SxX8‚ƾZ{¼kͱÊårÁbµ¶ø[{2·»!ét¯þýoÐjµÐjüDz†åyý°¡8}æl«Þbö'Ô›?&ÛþLf3.\(GÙ… ½n߯ív#/?›·nCŸ„x¤§¥5z@ÔÒ2®ªªòw‹(W4J:9NX,êêç‚Þ¸Í_ürGƒ†cm„Z ­FΟñw×äöÛBJ:™MþãoDDJË. ¤´é©©@´.ð"ˆÑdúéE QÒérûH0V«&³ƒÙC7Jú(S’‘’œ„ÿ.Y·Ë¸6 vìt»Ý¨©©AQq1œN’úôB.Ç…òrÄÆÄ’N ¿Q$£¼\¢"„Ö/ƒ‹ÏçÀO×-w®i.>g©Õá¨3QWgl”tr:0šŒ¨­5@§‹ê´ëÒÞ~¬:ví ´~Ûu¹\¨®öogF£j5ÔjuФSK×~N§ÓÍ«C éäõú§ë+*ê¯=”p¹\0™Í¨­­…F£A¹^òr}àZ¤µ±÷ækQŸÏß2æÇC‡0uò$Lwú$&æ7d2¾Z½©AºzµX­Ðë+PZV™LŠä¤$„©TM’N—»þki}6¬ÿsùçýqÇؘÄÙ¹ßB[x¯F IDAT¡B¡QZ-ŒF#i}Òér멹{:v\¾ø~ãâ¤SÃK$ çì6»7o $Úòü¢¥c@°sYBB<\N'¬6[¯ÞÎDFD4z)$>.°{ï>Òéø%I§‹®±:ë8ÞÒ}b°u¨Ò",, B¡z}ÂÛ&!ü/dZ`2›ë÷¥¦ÛÏ)mgµÙPUU­Æÿ2UCÒ©á¾¥\¯‡H(„P(l´M$&Ä·û× µU:“7$‘”¡¡8xä(ªkkq×·û»×©Sì¶3pÛŒü'_ǃǞx*ÐLlL víكܼ<üóå—¡F„Zï6mƆ› WÈ]Èüù™ù¸~èP š‰ãÇÁb6£Ö`À?þõzýC!† ͆¦þ!äó{N§ÿ̓þY™8|äÎåŸÇwÜŽþY™è¤«ŽžlüM7Ál6cÛöíÈÊÌLÿ~ÇNˆÅbŒ¿é&|öÅŠÀt¯×Ûªõþ<öìÛH@dö‘s,çöø²Yý›þ·=¢¢´ˆÒj±ð¥¿!+3Y™˜=ëX¬VÔÕÕaÁKƒV£&Rƒý³°yëVäœ<‰¤>IÐj4Ðj4p8ؾs ±bé§~°/]çš­ç弊°0k©ì!Cp67…EE8xøF…Ñ£nÀÙ¼<ô8qê"ÕjTVVÕߤmÆ…r=.”—cÖm3ýÝ|¹Ýøhɧ˜uûm˜uÛL(är”—ëQZV†ìÁƒítóĉ¨ª®ÆÖï¿Ç„q7~ߎ]»7¡PØ$ Ä1ú¦¥aßþp.?¿ýß‘’ìˆZ\RŠ]{öbמ=xÑ7ž-ïntZs¬*)-Åú›°þ»¸åæÉÍþÖžìÈÑ£0Ðj4ÈÌÈú™IÆ·j|„í;wâû;[<&]¼ýå˃ÕjÁßÿù*²22™Ñ¯×íûs{ï\~£c§×ë…ÇãÁ£ÿ)pnˆÒFaÿ? \¯‡ÁP‡ÙwÎÂìYw ¢²[¶}-Û¾GB|œÿanL 6mÙ Îçn·«×®Ã7kÖ¶xÞ©®©irΠŇáÇC‡ðö¯b/)-ÃÞý°wÿ~,þ÷›r]Êc}cm½vZw|ox0ü»¹B«õ_[&ÄÇãø‰8wþ<î¼ý¶úc}†?1k4âÑÇŸhöÚÏ`¨ƒÁ`ÀÛヒÓnÁŒ[nà˜]U]¿³3§OíӧA¯×b‰Äˆ‹EllL«coM<=ý|T^®÷?€ÕhÐ'11è5ÿú,¹É5Ãá@шW^ûW`Ü µëwB®†:<O>þX ÅÊãOýå²×Í­O‹Å‚µß®Çšo×#%9 ‹»ö ìÂ…F1q¿o쑇~‡oÖ¬Å×kÖbâ„ñû¿Kµe=]zO'‘J‹—þï•N;.»ßhI]EÅ%Hê“u¸¿;ï–ÎZ} (×W ÷’sY\\,¾Û¼ßmÚÌí¬7Oœˆ=ûöa÷Þ}‚_cuô8ÞšûÄr½åz}£u=ûöcϾýÈÊÌ€¼þ¥þ߯ñ/]þÄb1DbV~ýuÐí‰ç”¶+--ÑcÇ`41røpŒ~=€Ÿî[„Baý8¦•¶‰ô´´6?#ð·<qQ›õ¨£BÛ`S'OtϲnÃwPÖè‡(­Z­j5j ÔÔÔ@"• 5%™ýZÿ€B‰² `±Xê»e1ÀëóbòÄ ‡ø›ÿ:8].¬ïZ©ÑdBÿÌLôÏÊBßôt„…©P®×Ãd6#-%i©)ÐEE!6&é©i8rô("Ôjdedôª1'’“ú çÄI7š^XT„ô´´À Qƒ¢ââV­‡µ©))8rô¨ÿaøo  ‹Š0lhv Kª)“&ù»Q(!Q]Sƒ#Gâ®;n‡Ïçàs(!>#®†Ø˜¸=þîsBBBœ”„¬Œ~p{<ðx<(*.ÕjƒËýSW~¯sÍÖc¶XЯo:†Œ”äh5ÄÅÅâȱc°Zýo›õÏÊDAa!†À‡ÊÊ*DiµHOMŰ¡Ùp»ÝˆŠŠBDDÜ.—¿‹—|ÐÖý>J«Eÿ¬LÄÆÄ`è!p»Ý CjJ ÆŽ ™L ™L}Ed2*+«™ý ‰ƒìÁƒ  UáBy9D"Qý›Èþ®!† Íït:a¶X0æÆQP«ÕˆPGÀív@£ó¹ÓéD˜JuÙóN°sV[ÇþèÈu)õµõÚµµÇww}—Ñ cý¤$'#,Ì~V*•¨¬¬ ´œ1›ÍÐë+Z¼öóz=mú]‡F“ ³gÍBdd$4‘‘­ŽÝlº|<=ý|ät¹`µZ¡T*!‘¶m°w× ·Ë…›ÆŒA„Úÿ²£Óé€^_}E%ÿCæ¶\ÿ[Ÿgsó`¶X V‡î[CCU(*.FdDô˜¸ß7‚ÄÄD\?t(öìÛ!ƒAÙ´¥O[ÖÓ¥÷t*U(**+;õ¸ì~ð'÷8PߥŸÃá@Yy9ô˜,Vk‹ŸëÈq¼¦¶µµµ-Þ'*ò ×#¢ÀõHjJ ÊËËQXTˆÉçó¡°¨±±1ˆ‹En3ÛÏ)m§V‡#9) k¾ýõã{<žÀ}Ë„q7Áb±4Ù&.Õšg‰R‰„너ڬGú]ž2yŽçäàXNÖ­ßi}?ö#†_¬ÌLˆDâ@Ò)¿ ‰©©)7v,J¥eeþ&ÈuÆ:êêàõz1yÂOcrH¥lß¹ {÷ío‡ÑhB\\&އ˜èh”ëý-L&3âqó$ÿ€æf³&“_¬\‰ÌŒ x½Þ^5 fRŸ>È9y EEðù| –‚Bÿ{rR¤S+ÖC„:©ÉÉøzõÔÕÕø)éTPXˆq7˜LæÀº€h«×­Ã–mÛàõzúdÓéBbB锌±£o ”ÝÐmYà o6ú“N±2här9Žåä@$!&&Ô'ê×TVUC—Ë0šŒ(.)Áä ã!“Éø/ÔÏAiYÙÿgï¾£$»îBß+ç\Õ9§I&'eɲ±­`É ¶¯‡1ð€wáxGx„G¸î.6È–e˶¬àQY¶¤É±ÓLçÜ]Ý•SWxTW©sWO§ê>ûÃb-«¦ªÏNgŸ}Î>û·ç…ÿìë笠¨ˆê̤Óì9P]U•=ÊJK¯žà÷ÿûŸ,9áäÔßÅbQb3±œúªÑ±1’©N§cżîfÁPï…-ºS#££¸§¦W퓎ôä©B¡Àl6QTTDñØ õõ’<÷çêéë# 'H¦’Äfbóþ=—2þÜOÿtzÒiöš”Y íñxääñcé8û33’móë•H&‰ÅÒW•Êô¾…µ55éý‰"‘ìõÒ/dÂ§ŽŽåtŽÌ C•¡P(¨¯­Ãn³óÕ§ž¢§·—¡á z=¥¥%”–”PTX6ëÒ“NÝ==èõzêëê¸÷îôÂ`0 ËO:ÍÌ8}òd6£N—þ»s¯çÑhtvÒiåëÎR׬l¢­g\*úúùÖ:v͵ÇãD£Qjª«hin¢¥© ƒÞ€^§çüÅ‹ƒé¶“ ›³ÒØ/™XÛ¦ãÑhŸÏÏ÷Ý‹ÑhÄh0péÊ•œÒîVMÏn¿eB zÔ*õê?˜#9;ÏéÓhµéýPÔjo¾õ×oÞÀëõÒ?0óøo©ú|êéo …°X,Üï{/KÚm6LF#¯¼þzö3qÞϧÕj©(/'‹ño=‹Ãf£¥©qÑ÷ÖRO ï鯯ÇßÐ~y©û HO:M̆]ÍðùüéÕ( GÆív¯zrîv;e¥¥À{ײ¿†ˆv¶ NGŠtß¿’õôãÓÓÓ«Þ'68Ì“©ÃžÞ¾l˜¶šª*ÆÆÆéíKO:eÆÒ½}}X­ŒFòíI\SÖÎj±RU)£¯¿׻辥¦ªŠÛÝÝ‹ÚÄ­ÛÝóþN.ÏÒ×%µ¨AÖlWM:eÔ×ÕR_WË?F"‘`br’ñ‰ ^:ó2ß{áþöïÿžþ‡¿§§·—ή[´67§8ÌÚS_Ïžúz._¹Ê¥+WP«Õ´67Ï;Îþ}û¸xù Ó@X,=0r:¸\Ù¿évOÑÙu‹p8ÌëgÏrcö"cfö…Ûí¦`Άž»Ãn§Ð墤¨ˆë7n¢ÑhÐhÒ1a­˼ÍMnw÷äT6[:Fu(b|r‚žÞ^¦¦§ „‚””G‡Ã„Ãaþô/þrÞßêéí§ï&žH¿%j³Z1 h4é›H¥BF­Îîá‘ù<™J2évÓ?0°l/u§ÃÝnÇ6ÇY©P Ñhf7'^º KKŠ±Ù¬üÇ×¾ÎWŸzŠo|ë[>x0»˱Dè‡Ý*×ó>Âh.›ÍF}]v»¯>õµÙ½2¼\¾r5*Gæ•×^§··Ÿÿò/¥—±qß=wc·Ù°Í'vÌfsö·…TUT°·¡7ßúa:¤£ÃN Àn·ÑÚÒÌ¿þûW²çÀÜ>Ëårát:™öxðúü‹oJ2ýÐJýÝ›m\¿y3§¾êè‘ÃLMO¯˜×ÝN«Õ’L& øË~'•J1=íajzšêªJ’KœÌ]·[µO2 ÙUU¥Å%=|˜o}û;’?÷JŠ‹iijâÓŸú$ß{ñE¾÷‹üçן¦©ñMäTÆFƒ“1½iîͶ6B¡0ÁPˆH4Êþ}{yø¡yéÌËœ;A²m~½2›—g®§Þ³I§Õ"›³×Eæs¹\N2•¼£sd.»=½OÂïþÖˆ¹ÑÖÆíînnÝîæç¿üåÙ5ZôÛLx»C--½×w R©øú3ßœ÷}½N‡Óá˜×2ûæ^Ï7꺓‹õŒKE_?ßZÇ®ki»6›“Ç34<ÌWŸúýÙ=ìß—]_RR‚ÅbYqì—L¥²{²äB¯×ãt8ærM»Ífåè‘Ã’‹*•Êô¾5þ±XlÙï¥R)nw÷ÌîÕeÒØ.— ‹å½1¡F£A.WL¦ë|zÚÃíîžœÇKÕgwO.ÇŽ™—¦’â¢lZ2Äy¿X]m uµ5œyõUnuwóµo<3oß.X[=eöúËpOml¿¼ÜýÀ¾={hijš··˜ÏïãsçyçÜ9Þy÷ÁPˆ`0¸bz€uõ¢åÆï÷#—ɰZ,+~o=ýøÀàЪ÷‰«inj¤£«‹P8DOo/áHú™KII1Z­6û fµg#âš’‹ÅŒÅ’~®áóù¸Ù֯Ĥ;{ßb³YqØí‹ÚÄB¹<#Èô¢NAX«]5éä÷ûñûŒŒR\TLIqr¹£Á€L&ãôÉhÔj#££d2Yú&nÎsÀÌÒîX,"M.—g?[(s(—§W7@ú­ZùÜ7Peé7vv;ååÙo:­Žý{÷¢“àòq«ÅBUU%½}}³7îé o~€œë!³GCuU2ÒoLº§ËåÔ×Õ!—ËÑëô8ìvöïÛ7ïï>t:áH$g­d«ÔùRÇ‘ËåäþÞršJ¥Â —óÄc‰F‰Æ¢ÈÑÝÓCGW?¢Ãd4a2Wÿc;ÔZÏ{™L¾hÒidt”öŽNÚ;:)p91SQ^†R©$>g&žÛ›vƒžæ¦F,f^¿Ùl¾ôò+ìmh`ÙMqSK>P´Y­ÔÖTÓÓÛ‹?  P5{>Èd²yçÀR“i{‹[’ VíïffÛa.}•\¡ ¹±½N·l^KŠ‹s*·ªÀ墣³ ×K$E©P,ÚôØívs}v2ïçæ Kþ\û¤¹[¥Ra0è%}îÏårº8°or¹œªŠ î>}škׯc2™(-)ɹŒN'ÕUUôõ÷ Ó«Ùêjj0 ’oóÛåNΑŒáá‘lšy3S.—SXž4*,(àÚõë$“)FFG±Y?ä’Éd‹úÝ̼K}w©W mÔug®D"A*µxŒ´žq©èë[ëØ5—¶‰Dðùý¼üêk³áô45 ¸¨ˆ‰ÒIÂápöwj• †ûÿH$ºdÚ“©ôe eVßIÚe22‰E =.¯ @$E;ge ¤Cò†B!^3ÿ½ð>*•J‘Zð™¸Þ-ïԉ㠌rýæMlV+Ñ9“Œk­§yŸ#ÛÐ~y¥û FƒÕb™÷of³‰±ñqÜSSŒŒŽfÃ|¯”`]}€hg¹#žH`_"4Ú\ëéÇU*åª÷‰*•rÅÕ,2™ ›ÕšG‡BaBá0õuuÆœŸˆkÊÚTWU!“¥ÃüŽŽMdï[`é6±P.ÏÒ‘=Vwˆ:a)»jÒ)KDZýϯ=Þ/àž»1Ïn m4±Y­ŒOpíÆ B¡0j•š—‹®[·(/+ˆfehx˜p(L<‘ ¨°Þþ~úúH$Èdrär½}ýD"Ìfs:V$¤õ²97Fƒ‘ÂÂR¤(+)áøÑ#¨Tªô>á0^³Ù¼î}Av¢ÊÊ ´Z-ÿþÿ‰Z£F£Öðcï¥%%‹¾›k=dnܼï>yí7ñùý>ÔÊÃ>Àøä$SÓÓ¤Hqüèrr…·{ŠÁÁ!d2ƒD"Ad¶N×j¹:–=Nf²l-<^/n·›ªÊJÌfS:þöè.]âʵkÔ×ÖR[S½«k=ïãK<È»~ã]·èºu›ï¿ƒAÑ` ‰2>»g.úúú‘U••”••‚üÓ¿ü ‰Ù}¿âñ8ƒ~^‰Œêê* öW…ÅlÆb¶ðÀ½÷fæsÏšêj‰ …ÇÃôl?¢×ëQ«‡vÉ<Y©¿C&˹¯jïè€UòºÛokª«èìêÂ`0ðúg©©©¦¶º…B‘} ýòk¯Ó?0@ÿÀÀ²çxaaAN}ÒÜßz¼úúú%}îÏUàr²vÒiOC•••´µwÐÑÙÉää$ÕUU¸ÝîU˸¡¾NÇ·Ÿ{Žh4J4ãôÉœ>y‚¾¾>@Úm~»ÜÉ9’áóû¹xù2/]¦¾®:½wRaAN‡ƒD"F£!•L …M:  ].zúú(..ΆTó̆#YxÌ\¯åë¹îÈår‰Ñèü‰…þ¼^ߢï¯g\*úúÅÖ2v͵íŽÓÓÛKGg'G¦©±‘ÂÝ=½t÷ôp£­-û7=/“+öÿ³³ÙL4÷•×ë£``Q:3˜ï$í“““LJ|,j³Z1èõ †‡Gxý³¼ïÁ²û¯%“Inw§ë±½£cö!á{D«õF£¢ÂBÞxó9ÿ–ªÏâ¢"Á ·nßÎN<Éår¦¦¦œ÷]q½[ÞÃ=ÄÞú!££c¼ùÖ‰ÅÞë‡×ZOs† í—WºßÐjµ³{TΟšöxCô P^VFIIñŠéÖÕˆv¶¼D"ÏçÃç÷sæ•W)*,à¾{î^ñ7ëéÇ­Vëª÷‰•••TUV¬˜†êª*¼ï>^{ãÍÙ½–c|ñ¿|6½R&Z¶=‰kÊ»ïž{èèìäµ³oâóù³÷-°t›X(—gz½ƒA/êD„5[ýUÌD£Vc2éìêbxdŸoþw4# áõú°Z,8ìv\Nçì>)žì|||‚k×opýæM‚Á .‰x‚ÁAâñ÷Þ"ííë#‰`1›Ó1—yK-Ó‘»ÝS$ LF#v› Ýlh¦¾ý6CÃÃ9½»ÛX-*+Êé觯¿ŸÞ¾>ª**–\>žk=dÊ13»§·—á‘” %U••¸\Èe2Üî)LF#‹»ÍF2™¤p€¾ývú&qõ±\oôq&&&¹q³‹—/ã÷(,( ¥¹‰†úzÊJK™öL¾Ã‰³b­ç½V³xÏ·{ •JEYY) õu”Ά®qOMÍ{»x57ÚÚ¸zý:/_¦° €ÚšZš›(+-E­V1í™Î>ì©(/[ô{«ÅBeeãã q»»›êª*l³a§æž¯—x<ý¶²Ç륷¯‹ÙŒ~™·ýõzêý](ʹ¯ºqsõ¼îvF£§ÓIiI ?zç]³ogâj_¾z•H$BeEEúÁÒ'ç>iÎC©‰ÉIn´IûÜ_N&ÌUKsÑhŒ³?xkvãÜÕËØf³QUYAOoCÃ#ŒOL T*)/+m~ÝÉ9’a2 tvuáóù潕žH$ˆÆbx½>d2–{ôéÐWé˜ùïõ™~Xò¼^Íz®;ryú!v$·ÚjhxŸß¿ê±×2.í~±µŽ]si»‘H·{в²Rª«ªh¨¯Ãb±L%qOMÍû›“«Žý"Ñr¹ŒH$:;fN·¿ßÏÐðpNùÌ5í“n·äÇ¢jµ£ÑHiI ^Ÿ½ó.‰D"Û_$ FFG¹|õ*•ØfW°çÊ 7PàrÝÑø/Ãår‹Åèîé9bÚ3ÍíîžyßçýòLF#åee4ØÏ•«WÏþÛzêÉ`0lh¿¼ÒýÆrr9J¥’™™t:íªéYo ÚÙòâñ8SÓzûú¹~ã2™ŒæÆÅûˆ­&×~Üh0®zŸ˜ËK˜6›•êªJzz{dxd„ªÊJJKJVlOâšrçª*+H=½}óî[r•Ë3‚mm¢NA¸#»j¥“ÉdÂd2ñùÏ}†‹—.ós¿øeJKJP*Ò›böö÷³§¡ž÷¿ï!ZšÓô¦R)^}ý ^}í ¾õíïRXàJÇÕ÷ùøë?ÿ3 z=z½žH$B8âs_üY, ³™®Û·¹ÿž»ù•_ü…Óåt8p:Üuê$—®\á›ßþõuµLºÝLºÝüò—¾´¦ Ãn¢ÕjÑjµT–W§ÃÉ,·¯ÕÁÖ–5ÕCC}=7ÚÚ8|°•ò²2´Z-{‚$“I>÷ÅŸÃa·c·Ûhïìääñã|ú'>µî|9L&Ó¢:Ö}ZÙdâÿäOiinâÈáCüÚoü7οŽáM ¿?€ßïçóŸù̼Mbw£;9ïÌ&ïœ;G_??ñã?ΙW^å­½M$!‹‹Å°Z­ 04<Ì•«×(*,¤°pù}×N?Î+¯½ÆË¯¾–ݤ3EŠáá>ððûxàÞûø‡ú'öíÝC˵è÷jµµZÍÑǘššÆ=5Åþ}{³ÿ>÷xçÝs<ûïRQ^ÎÔtú»¿÷[¿¹äß…ô€´²¢<§þ.—¾êä‰ã¼øý3¼tæåeó*'ã`K ¿ÿÇÌWŸzŠ¿ý‡ º² Ÿß×磺²’CrïÝw-û7î¤O*/-ãäñãüÆoÿŽdÏýÕ|üÉ'xñÌËŒOLðæ[o!—˹ëÔÉËØl2a6™°Û¬8v;U••¨ÕjÑæ·Ñz®Û¥%%Ü{ÏÝòs¿øeÌ³× ZƒÇëÅãõòè‡>È¡ÖVZš›m°\]Ä&µ` IDAT•~³÷•×_çÌ+¯òÍg¿ƒÝfC¥R¡R©æ½ì²'OœàÅ3gr¾î̽fýê/}«Å‚J¥â—~íÿš½v¨0ê «n4k—Šv¿ØZÆ®¹¶Ýò²2L&¿ôk¿NOo/¯¾þ:@ {¬ËW¯aµX±Z,èõ:Nž8Î/ýê¯/ÛÿgöšR©TœyåUÎþà-ŒFj•:ž/¹¦½¬¬ ³Ù¼bz¤r=ú•_üoüà¼ñæ›|ü'?Þ»Ébe`hhö[øÙ/|Í+]VRTTHQQ!­ÍMkÿe¼ïôÊ«á‘>ûÅŸÒ¤r9r¹­F“ çýÊìßǾ½{xõ7æM ­µžæÞÓÝ}ú4wŸ>µaýòJ÷ËÑϾdñÔÓß ¦ºšŠòòÓ“±–>`îµì§~âSœyåU¾ÿò+¢_ü…÷ÊT&“e÷!þµ_ù%*+*í!–‹\ûñ\ïa~~üÉ'I&ß Ùê°Ûg_ô‚ââ" \.´Z-EZ-E……˶'qMYÞ?þÉ%??yü'ŽãÃü1 \ØmVêë³÷-¹Ê¥î3«'E‚°V»jÒ)cOCFƒšêêì^9r¹œC[),(˜·É¯L&ãþ{ïÁëóáóùfãÙ¦¿oÐë³!ÑÊÊJ9uâN§…BB¡ ©ñ5ÕUÙÁœvvƒì<ö(ûö4,JבC‡¨(/gïž=h4j’ÉÉT’ò²2,fÓ¢ïïF:ŽC[í_õðC.¹_Ó'?þ1êÓq€!·z˜kßžxìQ \®yozqäÐ!´Z- …¥RÁž= TUTdôZ,ž|ü1öí}ïÁQQ!‡Z[‘Éeó6[Ü·w/O>žˆ©gã¸/¬s çã¨5̰¨=5Ô×óȇ>ˆÑ` ¬´«ÕÊ?–ýw™\6{©@¯×£RíÊÓ|‘µœ÷|胨U*Ôj5v›ƒ­Í út\ke:fµÅbal|œññq¬ mº^?õ‰s`ß¾lÿÐÔx€Oñqv;‡Z[³öÊÒA’9väõµµéößÚJQQÑŠy¹ÿÞ{ ‡ÃK¾íž9ÜSS¸§¦P«ÕÙ7˜ \.ô³a:m6+MöÏÛ¨8×þ.—¾Êl6ÓÚÒœ`.Ì«Tž …­ÞÿÐCx¼^¼>/j•šd2I*•¢¼¬ŒÊŠŠì¦ÌuâñG>Ìž9çu.}RƧ>ñqêjkpØí’>÷år9*•ŠÏ|ú'i¤Cf®Ó:­›ÍÊ~_6®¼Åb¡µ¥Ë‚ ͵¶‚ŒEoý?ùøcÔÔTg÷à[Ë9²Ón‡†>öÄÙ±FæAa*•¢¹±‘¢¢ôõ|aß›™a&ãPk ÑhzbH§ÓeÿÎÄäd¶í-—ÇLæ^Ï­ ­ÍÍè´Úœ®;s¯Y*•Š}{÷¢P(ð‚h4é œN"Ñh64ðFŒKE»_ÿØ5—¶«Ñj°bá#>‚J¥D©T¡×éÐh4éPXf3õuµéÛºt›Y©ÿW*ÓcäG?ôA¢±±Ø &“1nv¿¨†Ù ÂmV+­-ÍXgWUÏ•SÚÕjÌf³¤¯GZ­†=õõh5úúQÈß»W1›ÍXÌf4ju6ÜQ¶ÏX°Jn¹Ïsÿ-SŸr¹œÚšä29³áô´ ½ƒAÏ¡ƒ90»ç‹ÔÏûÌØîPk+š{seÈårùБώ£çÊ¥ž`þ=ËåD.—oH¿¼ÒýÆÇŸ|‚ÊŠŠE÷EV«…**ùÄGŸdïÞ=¨TªÓ“±–>`îµÌjµr°¥%ÛWJ­edî#î%Ù3°²¢bÞ¸b©1ÖzûqÈý>qn:ìvšÈÞûf|ä±G³!GçZ®=‰kÊ| …‚ƒ--éðÈˬŠ-+-¥¬´4ý³‹ÞçÞ·,×&îäAfŸ:)׉ wFÆl•J¥˜žš`Ê^6«ÓÑêvnLÎx<ÎÌÌ ·nw#“§4U”•¡Ñh–œù÷ú|xg7µÛìØm¶ì$Á\##£„#‘05UUÙ·\s  ƒŒŽ§ßx³Z1wn9o—õÖCÆøø8`@0HuUšÙ•&inë>N0Jÿ½Ñ1 ((pF™žžfjz…R™ åw'e²“­å¼Ÿ˜ hj<}˼§¯«Å‚ÅlÁb135{Óèr:³o¯–†x<ÎíîîløÄºššlÌþѱ±ôê¬už÷@¿?À”g›ÕŠÍj÷@,™L23“.¹ƒJÈ­¿Ë¥¯Z.¯™ ?©ñÒo{OL`40è ¯<Á¸ÐZû¤H$"Îý5Ê¥Œ¿ðóÿÇåØÑ#ó&­E›ÏMfO³P(œ]…³QÖs݇ÃLMO355\!ŸÝ;ÏŒÉôÞ‹? ûÎÌ57dó&“ɳ/|íÏððCò¾Xs^b±Ñh4§ëÎÂkVf²£½£s΃©µ¿-úú­“KÛõûýx¼^¦=*Ë+ÐjÓuÛuëVv5r¦MäÒÿÏÌ̤ß$Ÿtc6›ÓíÌb^˜´ I»¸Í7<2’í? ]˜LÆy“ówjµñßjR©T64h4Åépàp8=ØçýúäROKÝÓÉd²uõË}¿¹?¿È¥Xx-ˬ í,ww:ÆÊuü´Ú}âÜ:Ü¿o/ñxºÞo.g©ö$®)ëóÝï=Ïw¾÷=¾ôó?·ä˶s­ç¨A– ‡Ò÷Ë}½Ýôõvó¹ŸùòîtAAÈÕàà]·oÓuë?|ûmä{äÃkÚwCØ}¦=¦§=üÆoÿÇŽæè‘Ãh4Z._¹Êå+Wxò#SS]MMuÕv'UAAŸÏÏçãù—^b`pÁAþåþqß"¶XnÒILI ‚ ‚ y‰d"»ñû÷ÝGuU•¸qÐiµ`³òÀ}÷¢×ë™t»:–¦ÆFjª«±Ù‡³AA„ÍJ%I$Ó÷-U••Ô×Õ‰ûAòŽ˜tAAòÒN鉧î½wQ|zAš2¡Ìî¿÷zûúééë#RTTDuU•Xá$‚ ‚ l©d*E"‘¾o©¯­eOÃâ½;A¶›¯'‚ ‚ ‚ ‚ ‚ ‚ äl¹ðzbwFAAAAAAaÝĤ“ ‚ ‚ ‚ ‚ ‚ ‚°nbÒIAAAAAAX71é$‚ ‚ ‚ ‚ ‚ ‚ ¬›˜tAAAAAAÖML: ‚ ‚ ‚ ‚ ‚ ‚ ë¦\í ccc[‘AAAAAA!Ï.ûo«N:Æ MŒ ‚ ‚ ‚ ‚ ‚ ‚°û¬:é¤×ë …B„Ãa|>Éd’d2¹iÛ”J%FƒÃá@&“J¥D¹n…eœáv»‰F£D£Qâñø6¦0ÿÉårär9f³N‡^¯m4eêJ´ùÕI¡oBEÿ´»I¡ /EªùÞÍD_µ6R>D[™Oêå!åsa)R.©Ÿ ËY ‚ßVtÊLŽLNN244D<ßµùÍ Õj1›Í˜L&ìv;2™L”ëZªŒ&&&ðûýø|>"‘È6¦0ÿ)•J”J%¥¥¥8Nt:€h£y(SW¢Í¯N }ƒò(ú§ÝM mx)RÍ÷n&úªµ‘ò9 ÚÊ|R/)Ÿ K‘ryHý\XÎrÏÔA„ü&Rž\šžš`Ê=€NoD«3ÒÞÞÎÌÌ 333œ–"åòú¹°œ…mB¬rAØVtŠF£¨ÕjÉmX¸R©r¹µZM$ÉNØE£QR©”(× °°Œ3Ôj5€(ߤR) ]f©T*[Ž¢æŸL]‰6¿:)ô RÉ#ˆþi·’B^ŠT󽛉¾jm¤|ˆ¶2ŸÔËCÊçÂR¤\R?–³Ü35A!¿­:ééN>sÖn¥²åº1–*GQ¶k'Êqçu•)”“òÒɧIµn¥šïÝNÔkî¤^VRÏÿBR.)ç})R/©ç)RÏ¿ ÂN”Ó¤ˆN~3ˆÉ¼Í%ÊöÎÌ-7ÑFwQW¹‘B9íÖ<ŠþI:¤Z·RÍ÷n#úª;'µ²me>Qï‘rÞ—"µòç‚ ‚°Ó‰•NÛL”ëæe»1D9r#…r’BA:ù”"©Ö­Tó½Û‰zÍÔËJêù_HÊå!å¼/Eêå!õü ‚ ;Xé$‚ ‚ ‚ ‚ ‚ ‚ ¬›Xé´D™ ùháR~A„|!ú'AvÑW ¹me>Q‚&ÎAa§+¶™(×Í#ÊvcˆrÜ9D]åF å$…<‚tò)ER­[©æ{·õš;©—•Ôó¿”ËCÊy_ŠÔËCêùAv±Òi›‰rÝ<¢l7†(ÇCÔUn¤PNRÈ#H'ŸR$Õº•j¾w;Q¯¹“zYI=ÿ I¹<¤œ÷¥H½<¤žAaçÉy¥ÓfŠF£D£Q¼>ßšk00 ¨Õêìg©TŠH4J4Áç¼÷]½FƒV«A©Üþ¬‹ƒ´$  Å6§deb)¿°Ù:»ºˆÆbÄb1<¸ÝÉvÑ? ‚°ˆ¾JÈ•h+ó‰ò„4q.‚ ;]^„׋D£ø|>ú×üÛ¢ÂÔ**•*ûY*•"ãñzÉ~îr:±XÌ(ò¼yð/›'ßÊ63é$—Ë·9%k“oå(,o§ÔUGg@ À¡ÖÖ-?þN)§õBA:ù”"©Ö­Tó½Û‰zÍÔËJêù_HÊå!å¼/Eêå!õü ‚ ;OބדÉäüöïý>Éd2ûp~5u55<úáñè‡?D*•âvw·»»ù_ÿúoDc1¢Ñ(?úáp˜P(ÄKg^F¥R¡T*yð¾û8ØÚBkK3N‡cSó¶’|ùñ¡P(òfõS>§o`÷Ôݽ½Èò7é”:»º(/+§B¯G&“åü»Ì„S4ÝÄÔ ÂöXé ‚ ‚ ‚ ‚ Â’+T*jµšŸüäóêkoðª×K0Zöû6››ÕÆc|NÀ·¾ý]nwßæÖínöîià`kK6t“L&#ñÚgyýìY:»ºèíëC­RqøÐA\N'.צåq)ùü¶J×í[¼òÚëÜs÷]Äãq</‰D™L¶ãÂÃm§Î®[h4 \LºÝ c2™0›LËþ.3áÙ†I'?ZØ bÞI¸;¡šöxðx¼X-f´Zmvœ’ò9m‚°›ì„¾JÈ¢­Ì'ÊCÒĹ ‚ ìty±§Sæï776ÒÙu ½^¿ò¤“ÕFMu.§“T*E2™¤½£¯×›ýŽ\žÞ·)g?Û»g×oÜÌþwlv#û¾þ~Ô*.§sSò¶’|@x}~‡øÙ/|žÁAúI$(мMóBùN™LF"‘ 211 ÀàÐ0¥%%˜ŒÆœþÆvçc»/än'ÖÕv¤y'–ÓZI!Ÿùôx<ôôöQYQŽÍfC«Õnw’²ò9m åcÝn©æ{·õš;©—•Ôó¿”ËCÊy_ŠÔËCêùAvž¼™t‚ôDщcG).*âw~ÿ–üŽF£áÔ‰ã|ô#™7¡433C"™Ìþ·Ç㥷·o^º \NÌ&#j•ŠØÌLöóh4F<ž?ç°Z,TWUQQ^ÎÔÔ4‘H €N«Íë‡TsmgÙz}>¼^//y™o?÷‘H$»’®´¤“ɸbúR)˜öxÃçó£T*Q(œ>yb«²0'-ùÙF…Åvb]‰~wsH!Ÿùlïèä¥3/óàý÷ÑP_‡ÕbÙî$eåsÚÊÇºÝ RÍ÷n'ê5wR/+©ç!)—‡”󾩗‡Ôó/‚ ì<9‡×Û ©T ‹ÅBu•œÂÂB‚`pÞwZš›(-)A«ÕÌû¼¡¾ŽÞ¾~ü~?~›··¯X,–ݯ)‘HH&ÉäF!—#W(¨¬(Çb1oEçÉçƒN§Ån·‘L&Óû:õô V«‘‹}¯r‹ÅC8ìvJKK(+-¥§·³É„Z­ZõoÈår”J%µ5ÕtݺM×­[4ÔÕ¢×ë1 ›–v±”_„|µSú'™L¶¦}ü¶R>§Mv‹ÒW ÛO´•ùDyBš8A„.¯V:Az…Ãn§° €1X<éÔÔDii †äœ•Mõuuøýzûúðx½„B!¢±Xz²D.'“L&³y‘+¨”J*ÊËÑiµâû9tZv›D2ÉÔô·»»³å˜¯i^h;ӋͱÛm?z„{ï¾›ÿüúÓÙUN«¥O.—£P*©©®æÆÍ6®\½Æ=wÆår¡×ë·"@þ¶Qa±XW¢ßÝRÈ#äi>esþŸ§m|NÛf’j¾w;Q¯¹“zYI=ÿ I¹<¤œ÷¥H½<¤žAaçÉ»I§xG2™Äh4`0øÄÇ> @"‘˜÷»Oê“liáøÑ#<õg‡Ã‚A~ã·~‡= õ4Ô×sîÂzûúH$:ØÊ‰cG9~ô(v›-§I)QkÔ˜L&žúúÓôôö¢ÑhPŠUN9++-¡¼¬”¶övl62™,;I:w²t%F£•JI<Çh4PVVJ_ÿjµz[öÛ*Éd’d2ÉSO?MsSÍ‹¾3<2ÂÐð0ƒ—Ó™-\~;W,#‹ñÚëo›™!‹ÑÜØHA+q3Ž+HÇß~­FƒF£áÀþ}Ûœ 32:ÊðÈ%ÅÅmsŠa}ÜSS¸ÝS\ºr¹\Ž\&ãûîE§Ó혰‚0W*•âÒ•+éH‰[Z²ášA„åuvÝ¢¯¿Ÿ¾þ~>ñ±¢Q«Q«ÕÛ,AAØQržtÚj‹…Ò’ö44ÐÖÞžýß2`©©¡D"Ë天±…R‰×ëÅãõ¢Õh±ZÌ$“Iêjk©(/çıcÔÖÖPRT„Åb“MK‚ŒÓÞÑÑ``O}ýv'iGI&“ÙðE '4ãñxú–\¾òI‘mìép}Aìy¾ñûFexx„K—¯àrº–œÀ™öxèíëçîÓ§ÐÍ)\~›ǹÙÞΛmÄb±ìƒ˜×ϾImM5µ554Ô×møq…´ÝÞë¦'"S´µ·³§¡žòò²íNÒ†2 ñÒ™—‘Éd¬Þ§IEjÉÿ™ò9mÛ¨­½Á!‡†ÐëõÂá0Ͻð"ÍhjlÜõí;™Lr»§‡îžÞÿÐCË~/ ‡yãoŸ™a&ç£yœX,F,[ô¹B¡@©ÌÛÛ]k||œñ‰ FFG™˜˜dbbŸÏGmM µ55Ûûð‡P(ÙïäòÛŒ™™ÚÚ;øÎsßãè‘ØL&LF#¯Ÿ=‹Çë!‘HP_W»áÇÝLÛÝæs57™»5¼^2™$Op³­ò²2\.©W9n„ÍΣÑhÄ`0påê5 HHlË>AyÝæg_ÈË4æsÚfmeÚn¶µÓyë]·xø¡ ƒLNNòÆ›?@£Vs`ÿþ-kßÛU'‰D‚[·nsæÕWyøÁ—ý^(ÆívóÍg¿M8&óáû`@ °èsF#VÖ°õõ:>1Áõ7 ƒttvÒÞÑɴǃB¡ ¦ºzKÓ²VùÜ/m©ç!)—‡”ó¾”­,Þ¾>ººnq£­ Õì}ûv×Çv_AÖ*§I§í=Çimn¦éÀ¦¦¦¸ç®SÜ}ú±XlÙßÌÌÌ033€A¯§¶¦šúºÚ샂Ì~NÉd¿ß¿%ùXI¾†ô{ú™orîÂEÎ]¸À}û¸ëÔ)>øcØÒ¦!ÊÖëõòîùó\½~gž}»ÝFÝ*oš¦æüßèØ)R°§¡!Û†7ËÂMK·ªGGÇåü…Kœ»paÉôÀ{!8‰*•*ûK—¯¬úÛ¹Þ=ŸÏGqQ¿ùë¿–ý~yY7ÚÚxéå—ùàÞ¿áÇÝLùÐæs144„ÏïÇëóíÚI§[·»éìêâô©S”••’Üâ—¶ª\:H4ãõ³oòàý÷múñ¶«Z‹¹/ä[ó9m mEÚ2ãÆù÷¯ðñ'Ÿà—¿ô ˜L¦lÿÀ>È´ÇC(Æh4lzz`ûúñgž}–ó.ráâ%|~ÿ²¡„,f3Fƒ¡áa\N'UUU˜Íf »}Ñç°s®Mi;û*¿ßÏ;ïžãéo~‹ÿñw‹Óé@¯×S_W‡ÓéÌûúÈ÷ôm´p]û·¯|•ý÷¯ðoÿü?±X,XfÏíͰÊc«äcÞç¶€Šòò-;öV”ǵë×¹zí:ß}þyâñ8¤Rüé_ü%Á`@ ½_³{j ÷ÔÇ娑#;rxSÒ"ÎAa§Ë»=æR(( þè÷~—x@2™\µ}º§¦¡··}{÷ððƒ¦¿[l+ÊÑçóñÆ~À‹ß?Ãý÷ÞÃïüæå3_øâ’ì‹—/#“ÁáƒI&“D£Q¢Ñ(ó÷ÿ°êoçjnl¤qÿ~Éáp8ûy_?ÑH«Å:ï÷uÜÍ´]ÇÆbŒŽ1::Ê¥+WÓáM=^¦=Óé0s‰$f³»Í†Ífepxˆ™™b±™];éÔÓÛËkoœåWùËÆ-ÏçVïø±£\¹z•×ÏžåûîÝ’cΕO×Ð¥åóC‚|NÛÖÖí?þí_c2™P«ÕD"nwwsëv7öï§´´£Ñ°eéÙê: …BC!¾þof¯…ýýý¸\®%÷gxd„d2IiI [[H&“ŒŽ-ù¹¶•õú£wÞehd…RIyy95ÕÕ|â£ÍÞmÇXr-ò¹_Ú ù˜ÿLšæ†ßêcKQ>æ}··­N‡ÝaÇïPXP@AA5ÕÕœ¿p‘ËW¯"—Ë)+-¥¼´Œ{î:MaAÁ®¤R)¾þÌ3³Q‚¢üä§>‰J©D©Tæþ¹J…J„ÔAfå¼Òi;dŽ;33#n\7Y0âvwo¿{§ÃA]m-uµ5L{<¨”*LFãv'1ïe&är9Fƒ‘¢¢BØÏþ½{Ù·w/—¯^2{½¬ÜžmV+ÉD•R‰ÃîÀá°oK読ò÷ß!sè`+åee+î[584LËEyYzœÁAnÝîÎé·siµšl 008ÈÀà 7nÞ¤¼¬ŒcGlÊqw‹H4šÞ3b|‚öÎN¼^/^Ÿ‘Ñ1"‘Ñh”p$L*™.ãP8Œ×çetLG$%•ÚÝ}z8fjz“шjoïîÓ§h¨¯§¡¾ŽX,–Óˤ;×ç£`ó/e?»ÙÖ†ÍfÃfµæü¹J¥×A!K¬}ÝFù›÷«_ûƒƒèt:þâOÿx6ôUŒï~ï{8Nœ?öþ‡1  [³¯ÁzmEÙ†ÂaB¡N‡ƒë7nrõúu~âÇ?F£I¯|I¥˜‰Í …8:;‰‘J¥Ònûü~{úmÔ9är9V‹›Õº¦°’a+ãGg6n·XÌ4Ô×sש“„ÃaBsÂÝ-LO0$•L¡Ójùîó/àv»±XÌÜs×é»ÐÜ;|°•–æ&¾ð¹ÏòÌ·¾ÍðÈ¿÷GÌßüÅŸmøq7ÓVw`pˆÁAþäÏÿ"ÛOÜ)ÛSV›}LÇC"‘@¯ÓmÛèV•k¦“É$‘håìCüͲñ퇇Gæoÿññûýø|Ëï 984ôÞÈ Å⺸q³ —.sáÒ%zàþôWL:E"Ú;:xó­R[]ƒÍjÅjµlzÚòÉV¤-sŒd2IUe%åå;z„7Þü¯Ÿ}“o>ûmš ñÀþMOËÂ4m… /¡Õi9vôƒƒCôôö镼.×Ò{ÿ  ñιóFЋШS_O*•Zöó̾Yÿü/ÿŠV«E£ÑðúÙ7)+-¥¬´„/|î³´wvÒÞÑ™ kXR\ŒR™îKμòjöصš–æfZš›èºu‹šêjª«ªøË¿ùN8Á©ãÇ9qüXúš óÿüÏésÇbáå×^çÈ¡ƒ>tãGnzÙnG_•S½üêk˜ŒFŒF#O?óMöïÛÇþ}{}ÿÝóçy÷ÜyºnÝÆáH¯ªgtt”‘ÑQùÐ9|è ‡Üô´ÏµýR*•âü…‹´µ·s³½?ùÃ?Ø’cÎýßÛ9†axx„gž}–‡x {Z˜¾ÍLãV–GfBöwþà94û’`Ý {înµÍn ±XŒ×Ξåµ7ÎòùÏ~»Í†Ýf[SÚv[x½ñ‰‰ìµÐfµQS]Í÷_~·{ ¥Rɽ÷ÜL&# nzZ¶ò\0ôÌ ›X\T„uöšëçFÃÖ‡Aò—˜tÅd2qôðañ8í´µw02:Š×ëcd6NÓ45\(±åLMM108„ÓáóVn¤R)êjk±ÛÓƒ÷¹K‰D‚X,F,#_úíS) ØB¡““núúûI¥Rôõ÷gP¥R)®]¿Á~ýéôMo R¤((pa0蘜t32:ÂÈè(_}êkËþÖ ×£×ëç{dt¹\Ž\.Çép œ}³½¥©ŸßÇÄĉD‚P8L8Þ°ãîd¯—öÎÎ_¸ÈÌÌ̺ޜ–Ëd(wiÌïL? …sæ‡ÝMa@ý~?~€+×®qåê5ü~?Ñhf“͜Њ^¯×ÇÔô46›•£‡ÑÖÞ‘]m3ïØZ–£‡3<2B("Í{{txxdÃÒ&E3ñxv5ؾ½{ÉdÈårô:V‹…ÂñxœDr÷­ÉLûü>ô=»¿ÏŸ}“Ûëõ‰,~á% áóù™öx(-)Ád2­øùÌÌ í´wtŽD(-)¡¶¶†ç^x‘ÉÉIR©/]æf{;míézÓÓ<ùøc 2μò*zNÇG?ò8£cc\½v ¹\ΤÛ\.G£Ö V©P©TD¢Qn¶µsýæM´Z-e¥¥Ô×ÕòÂ÷ÏÐÛ×O4Û’I§íà°Ûi¨¯#‘Hàt:¨­©¥¹©‡Ý±ä÷ z.oýèmTjf³‰Ó'OpîÂÆ&&èè좪²b‹s±=†‡GÒ{SŽqýæMd€Ã±t¹í6™kÝå«WŸ˜`|b‡Ã±k†­$ÓïËÑÙy‹áál¥¨°¢¢"4j5ê]|­Ìä]†Œçžâ¢"JŠ‹hmiÙõy_Nh6<¶R©D§Ób1›qO¹I‘Ân·!ßEãܹô:r‡œ'Œx"A"ž ¾®.ý"­F“óçVËÒ¡yAiÚáõ„Í7<2ÂÁ–Z[ZˆÇãtttòÜó/0íñÌ~#Eo_? …‚ºÚZ1é4Ë=5E×­[œ<~lÞ¾™ó¥®¶&{Ó–ys,óV]4#.ûà>ŸVÂm–P(Ìää$½}}ôöõg?ÏäýÚ´wvÒÒÜ”žtJ¥(p¹0èõ¤R)&''¡¯¿?ûû%ët.9é¤T*Q*”¸œNär9J™Œæ¦Æìw<'055½aÇÝÉ<¼~öÍuoD.—Ë7uEÌvJßij+Âmä*™J!_bo¢Ìï04<Ì•«×xåµ×H®±?6›LÙ‡ø¯¾þ~¦¦§q:Ô×ÕrþÂÅ%'ëfff¨(/çh].]"  …çM:­;mêô¾v¹ÔY®ßÛIfff§ëÖí줓L&C7;éTàríÚ=E3!{½>¥%%8ìv¦¦¦³ab=^ï’«¬ƒÁ >¿ééiZ››1Ù•ÀK}žžtêà¹^¤ºª‡ÃNKS@ †ôÂ¥KÜhkãÆÍ¶ìqN?–M#€N§Ãa·óÓŸþIþí+_å¥3/³oß^ÜSS„ÃaÔj5*•¥RI$áf{;Ï=ÿ÷Ýseee´¶´‹Åèí룻·—_þÒ/lMAo1‡=½r>‘Hàt89°M$‰%¯Ùƒ—ËÅøÄf³‰X,Æ©'ŸàÂ¥ËttvrøÐÖ®rÚé½=Óýéå«W¹ÝÓÃeV‡í6©T ŸßÏððÏ¿øÓSÓÓ|쉠ÓKcÒ)smëìêbhx˜`0ÈÁ––td“iWO¼ÌÍÿw¿÷<ÕUUTWUR[S³ëó¾œp8‚{j …BN§Ãl6áv»!•Yºð^·Ðëõ žxü1b±ÑhŒúºÚìK*¹~.¹ ‚ så4é$…‡ßÛ%_Ê5‰RZRÂ=§OñŸ_šP8ÌÉÇÙ»§úº:êkkùõßü-ÆÇ'øÖw¾ÃgêÓÛäUmEÙÊd2 >Ÿ¡¡aÚÚ;8wá"%ÅÅ”át8²çÏÜþ©ìï·*­wj3ÓvÏ]§yðþûP©TÙÏ"Ñ(‘H„÷øQ>ûSŸæóŸý Á`ó/rþÂE>öäh5釥¿ý›ÿuÞÞ@Ëýv©xÛ£ccô Ð×?Àÿ½ßÍæóêµëøý~\N'†‘‘Q.\º´aÇÝL›ÝŽÞ9wžþÁÁuO8™L&´ šÙòÜj›}L£ÑˆR¥"‘H033“]Q·•¶ª\Ãá Ã`0lË ¯Í<ÖÀÐ ïœ;ÏÀÐ`Γ:2™Œ–¦&š›ij<@(bzzš?ùó¿ q6LÛCÜŸ½YoijZöoeú}{÷Ð×?@_?¿ý{À]§Nrש“üèÝwו6¯×ËÐð0ßøæ·¨­­¡¶¦†ò²22SKÃ#£ôôöÒÝÓýwß…ËéÄétæt¬°Ùí(óλçxæÙoó‡ß‡J¥B¥Tâóùiëè൳gù£ßý¿±X,»¦Mg\¿q“+×®ño_ùê’ÿÞ×߇ÇãY”–w/œghx€cGPZRB*•Zöóÿõoÿ›öŽN‡†øøGŸàf{/¼t†–¦&î:u’Ó§Nòçõ×Ù}ÆtZ-Z­³ÉÄõ7¹vãUU•>x·ß}—Þ¾>"³bw:ÅÃ=ˆÉhÌ®8þ³¿ü+ºnÝbjzšî¿›ÕŠ×çcÒíΆˆÞ×H¿åv»I$ØlVêj‰D"Ë~|b‚mmÈd2µ¶òÑ'>‚F«!™J i¨¯ÇºÅí¶.´æù‹¹r5½ZôvOûö¥™ÿ÷ÏÿŸì*ðœÐÉ[e³óŸÉ;ÀÿþÊd'šžxü1Z[š³Çñx<»¯ò¼4mñsÍ>–\.çoþòÏcdt”¿ý»¿çú›üÕÿ÷wé½{êêø‰O~N‡n‹_ºÜмðïçñGáâå+¼{îï¼{ŽÏ|á‹Ëæ}ašvS[p»ÝtvuQYQB¡`tlŒöÎ.jª«Ø»g϶¾ˆ²Ù¡&ЋвÏ'æ¾|²ÖÏADx=a–Óá@¯×#“ÉH$¸œ̦j´ºôÓpøÐAþ@`›S›|>#££Üîéá[ßù.ccãøÌfMúͰÕ‡¯™L–Þ E©Àl2c6›¶"ùy!™L.z“<f÷ ŠÇãD£Q’É$±XŒP8ŒN«Í®™™™!gv/÷ۥ꡾®ŸßOwO/Ï=ÿBú£JE[{;ÈdÜ}×ib33zܬ¬´”îîT*UöAD®´Z-..¡ph6¼äÚþÆNb4(*,dzڃޠǰ‹V¼ÍåžšB©PìÊMƒ hnl$ãóù÷ëF£›Õ‚ÕjeOC•ååTVTL&³oÊ>üЃÈd2</ƒƒÙ•~Ã##Ëßb¶`µ˜ñx½¸ÝSƒA¸ÿ>*ÊÊP«ÕëN›Z­ÆbNï§F¹zí:.]†T  P*ÑhÔT”—SXP€n—…ZÒëõ8vÊËJyîùÒoùêuŒŽ8ÔÚŠÍjE=gµÚnà÷§÷“ôüÌùܼ»tù —®\ÁŽDH$óV¤NLL †(.*D¯×Ç—ý|phˆ`0€J¥B­RS]YIyYf“‰²Òt:§Ožàf[; ¹"½¢/æÒå+ôõ÷3>1Á]§NÑx`?MÐÝӃϟ޷¬¶¦»Í ½æ&“I†GGðÈd2v;ñxœññ ýÂCqqѦ—ñv φ…R(è´é°P+ñû ŒPR\ŒÝfC¯×384„×ë ]“óþ.;If|öÊk¯39éÆðø£PVZJyY) …bÑËb»ÅܼCúþ®ºªŠ{ãGPàr¡P(Ò¡E%´Z!‹¡Õ¨q9<þè#é½­FF üÜîîæ¹ç_ ¥¹iÅEvªLÈw—ÓÉ¡ÖVŠ‹Š8ñ’$ò¾”d*½ÊÖ=5EGWÿ?{÷g}çþ=½jŠų́w[’-[.°iÆ`|C I —8d–$'›M6‡œ»»IN6gÙ_8›»¹7ùå¦,f! p±!K·Èr·ä¢Þ5#ÍŒ¦·û‡™N?ÍÍu³ùb—œé”T©4¦7ݸÙF#‡†P]U™T ©l2í˜ÏçCWW7Öß°m.¢ýÂ…d77% btdãã㨫®†^¯C8†ÅdfîÌù_Y<árA«ÕB"ãíßÿ+jkPWW‹¼ÞM>£iÓŠ–ÆSt þÔFðÊÜÇ?ÿV®¨ƒ×ëE$ANvVÖÕÅÌŽ™ø˜íµs©ª¨€T"A~^†‡G„Ù(………(-)AYéä…ÙÜœ¥]ïrÖP¿R©‹§Ïž…Ãá€Ýá€kâʬ®Hdòâ¢\…\ŽœœldeeA—•…ªÊJäåæ"//o¼ùFG­µZ“Ý¥¸ˆD"(..ÂM7nƉS§PQ^†Šòòd7+.Ž·ž€\!Ç–+AÚxKäñ©ÈlFa~>Š,ܰf º{z&SˆøýJ$B Ú`0@¯ÓA¯×¡²¢ … ¹Á`P¨×´ýÖ[1jµÂjµárGçd 'ÊËÊ!‘ˆ!Ǧšœp¹044Œ‰ rr²¡ÕhPR\Œêê*á.ó ë×]WÛ¢ûê¦04<ŒááØÆÆ"z½yy¹ÈÏËCnnnÚ}T)•X·öäàrG"‘0ü~T**+Êa*4A§Ó¥MŸ£ýøãÁ÷ —ËP]Y‰{îÞó¸L&ÃåŽØÆÆ0>nǨՆ‚ü<á9§Ïž…ÕfƒB.‡L&C0„ÓéœsyWw~?dR)*ÊË®œg'g‡kµZ( ”cpphò‚^nô:$ Ìf3rrrP\T£Ñ£Á€ß¾´ƒƒƒP(¸mÛ­0 ˆ„Ã1wW÷öõ!@­V#7'çηáìùóP*•¨_¹7mÞ”Ðñžþ÷xšLù| ùÈÉΆî*A'—Ë…þœ?߆m·Þ‚’’bÈd2¼½ÿ÷DAA>î¾óδ :EÉdrH¤’)Y&/6û¼ÞÉôË ª;™ŒmE&›¼9n2½Úä²è÷qŸ×‹«%Sw “1~¿2™ ÙFV56@&“Áíñ`hx/]‚V«E‘Å’¶$Zô·X¶Ñ…B޼¼\\¼|9#ú>›Š²rÜvë­h»p¹99P(”øÜg?ƒ"‹sbÇ!ûÂ\3¹»œˆˆ`M§¤K•q­«­A$ÁÀà êjkÐÛÛ‡žÞ^ÔVWc`pV› M” ²²²R¦ÝWï6ºÜnH¥Rdxø¡…T0Ú+µ ®¶þ&—J¥ÈÉÉFEy9N> ¥Bœœœ”º“*ÑŸµT"T"Á㟠^¯áp&S!²³Wýr;Ûk¯¦ºª õ+W¢£³~~ÿd>ê©iâ±Þx‰÷geÐëqÚ&46ÔC¡P §·=½½ G„šjµYZ-´Z-jjªQd6Ãb6cã†f!¥Øo¾…ètMs”mÌFUe%Nœ<‰œìì´LOÝ==(++EYiIÚ}–R©2™ +WÔaõªF¸ÝnL¸\˜p¹ Ë¡V«¡V© R©„‹6~¿_¨e3U8F^n. pà½÷184„ŽÎNÜ»s'äWDS ãð‘£8~âîºã6䣤¸X˜Q‰D R©®»m“ýläçC*•B"ùëØè>=5ÅR"%"ÅTyYjª«QYQ.¤g«®ªê\$#UL<û‰DpøèQlÞ´kšVÏ8W‰D"¨ÕjXm6x½^Œ#?ï¯7Á ŒÀãÛjµ" B$͹< é‹,–+éßl8täÖ65!/7=½½èëÀÀà ÊÊJ±iC3ÖݰV¸$ÛbOo/|> ÊËÊ še¼B¡0¤)dRÙäìB»]]P((.*ÂÚ¦¦´;VEy<^ØlcBö‚«­wÂå‚Óé„Ýá@qQ´WRž8uJ¥¦ÂBÔÖT'TJ%ü~?ŠŠ,ˆ ‚žÞ^¬¨«cËS[ô õØ•;îÉœãj• µúªã;Ûk¯f2Å›…1Z£ï¯õ.WÑTKj©|úa¡®•X,Ž©OýÝB¡\.W’[ŸX³ EEüîµ×Pd1 JÓE 0¤FCýJ¬nlLJ`"ž¢Û±×ë…×ë…H$‚F­†V£ŽÃBÞ+À¹õæ­8täÇd0˜‘ÆH ÛhDeE96o܈ð´ÙÀ䢥h[´]™(ð#ðÇÔ$ˆŽEº]Ü9tä(>‚ã'N@£™ÜVnÙºExüw¯¿Ž¿oR>ž8u V› _z|tYYÈÊÊB~^|WjjÔäää ° `ÎåO}ë›øèÐ!|ôñ!<öÅ/¡¤¸ÅÅEøê_Î —;;14<™ÒðÝ?À»<€ÿý‹_ õDï¾ëÎ+EÊ}èéíÅÊuXYWñ51ÿñ©oãð‘£8tä(ž{áEØívx½^<÷«_Þt½3;Z‹dMÓêygÌo=Á!À¡ÃGpôØ_ –ˆ±iã¬[»ëÖ®IÛYÛQ«ê±¶i5¾ôø=ök9Žc--xdÏ㨫©AmMõŒ”ébUC=àÿûéÿƒþþôõ÷ãg¿ø%>aÐã†5kæì{ºC£¢ýKÇÚ¼DDD‰ÆôzI–*ã …`4‘››‹ómm°Û·ÛýAÓêU“?J¯\dNu‰¨G45èÁ_ëýH¥ÒY/$ÎÕÆH$‚‰‰hÐÉ2Û:Û(¿¶,ô‚nªKT;£iò¢|~?†††084„'O DZññ+©yBÐe鄺§3&MX¢%d‘É#Bóºuðûý°;ÈÍM\ÚÌx÷ÑëóÁnw`ÃúuB ·dXŽ©n‚Á ,f3ÊJK…ôfÓß7š lêsѶT’n){*^m)-)FUe¶Ýr³0 nêL¸†úz¬ij¾¿DÓ2z<á˜÷]w w»Ýna¶Ò\ËMWj$FÓGFßÓívcbÂ…‘ÑQ¸ÜnôzXÌfäåå"/7/ýN¸û^,A©TbUc¾¸çóÂÌ<·Û=k? ®Ôa“É&‹¿GgâºÝîç®DŠ÷6àr»aƒÙdB–öê©°áöL¦‰¾mÛ• “xòû}4T²$jŒnŸŸ³Ù©T Sa!N>“§O§íw”h¿C¡”J%Ôj5îÝy·0ëé·/½ŸÏ;ËX"és|Ž«Þ~ç().FIq1îß}t:tYY Ÿdíñç`0ˆ¶ ðö;ÀM›7cUC=š¯Ô‹œ¯ïѦ¥Ë¶0]*ÞL•JßUˆˆˆbÞ “R©0yWs:¥J¤h.z¥R™°¢´×"úC¾ª²2&]Ö¹óç¡×G$F@xÁ”Láóùàp8ðÒ½‚ómm8w¾ F£•åå¨(/_Ð{L¸\FAA>JKŠQ[]w˜Òòf·Ûqúì9œ>sï¼û.ü LåeÐë¡×ëãØÂÔ`6 OŰ×*?/…BÐ}9܈J滈‡µ?!4ž IDATÍ'dš+Õi4UãÕ8ÎE-¿ÚvÞzò$Þ=xÇ[OàáÀ§xJ¥J¥ÍëÖá…½/ã…—ö"77*•¡P6›íªí›oéæù_Âøøä wßu'Ünòóò°zU㜵EÃáÉãõ_ZŽ#'' õõðz“S‡2•LÝn걦i5¤RéœÛv:‰ß =²³ø÷ÿõoBZËtÍJñ‹Ÿþ¿BÐ;hÏ„´Ð‰÷Ýsn½ùf¬\Q'š2¡ïDDDóF@ Âá0¬V+òóóçOF1¢é.\. ƒÄR÷n•ómm“sv"ÀŠºZÈdrèõzب”J¨Tªd71%tu÷àrg'.]¾ŒÚÚZ¨Tj”–” ¦ªjÞ‹éÑYQ6Û\n7ÆÇÇqã¦M(²X’~ñ–é™èjì'¾ÿ>‡088ÿ•Bï‹!‰2â\’ìý9^¢¦¹.lÆs½³ýˆ–³Ù„õënÀðð0FFGqàý÷¡×é ×é`w8à÷ûÑP¿›7nD‘Å’ìæ.Z"ŽUR©~¿ãv;.]î€N¯Ã-[·\õ¸Ü×ׇžÞ^ø|>x¼¸ÝnŒŽZ¡V« V«ãÒÎåfjÚ½DH¥óZô¼îóùæì$Î ö="‘Fƒ2éäìÈLJ«&‰ T)!‘Hà÷û]›˜â+•Ž DDD×bÞ “^¯¿òƒdÙÙÙ NF“‚Á &&&`µZ‘——tRó Ŷ¶+騮ª„\.›¼`·O~9Ö‡Tï±íêîFGg'.^ºŒ¢¢"¨Õ*hÔŨ®ªf·ÍÇj³A"™ äîÞµ HàÜ…JÅm”f—ˆÏÊáp §·¯í{SHÑt-&ƒNÉ©Ÿ’®©@¹ÞT9.¤J;héeêg›)ý6›LÐh48~¼£V+¼÷òóò—›‹±ñq¨U*4¬\‰Í7$<¸ñh¿T*…?àÇøø8.]¾Œ†ú•h¨_yՋƽý}8|ô(¼>¼/Ü 7FFG‘››“27•%û³žšv/’Ùÿèºçìÿ•¶éô=J$Á`Ð#§ÜÌ®Dô]¥TB£V/¾ï³Ô’Œ·d’-ÓûODDËϼA§††ŒŒŒ`xx­­­B 6Z¥R ƒÁ€üü|Ô××/8‘ v‡v»?ùéÿ–E J«Õjx<^h5©ÙödhZÕFââbìùÜ£8qòZOž\Зvƒ^½NµZƒÁƒ^Ÿr?tˆ¦ëêîÆ[¿oíÿýuÇòòòP[S½D-#"¢åÄh0 ';ÿ÷3?–MÖ C, ¦…Ö4ËDŸ}øSJ¥H$Âï³ù~§m¹é&l»å|ïŸþQ˜±êr¹„±'šÍ㟠_ýÛ'`·ÛÓ2¥nªþ6O„ÅîûS· ½RGÑÒš7èäñx T*a6›ÑØØ™L–Òu‰RÇãÇ3™¾Âãñ…–£R鎥B‘Þ•J‰’âb¡ÈbF[ûœooÇ=;î‚D"I©6_M¼Û©Óé +€HÈÍÉÁºµk´Þèv`6™Rþ¢Êrù¼)þŸÕ‘cÇÐÓÛ{Ý?Ϋ«*qÛ¶[qÇmÛÓ~¦S²dBÌég&ÊÔÏ6SúM½p™îâñ¹ºÝîE¿ÆçóÁçóabbbÉÛ³T2e˜K*ößív_Óö¶Rq<%ûÎm!y2½ÿDD´üÌ=²Z­BQÉììlžì)ZˆÔjµB¥RA£Ñ¤lÎt‰D ¥R„{îÞ`2(rñÒ%„B!”–3µâ4‘HF£•¥J‰ìÖ¨‰D"‰Di‘2†2G‘Å‚ŽŽNÈd²EjW*•ÈÏËC~^¶~â&T”—A*‘ħ¡DDDDDDDDD” :TW3ÒbE"¡&–Z­†H$JÙ “T*H$ÅÎ;ÐÛׇÞÞ>\¸x E JŠ‹!¹r˜A’I‘HFƒA¨q͉½ÐY 8ÑrSd±À`0@&•.>è¤P ¤¸õ+Wâž»ww¹§[Š""""""""¢L6oЩ§§ÕÕÕ¨®®†L&C$aí™EÉd())ÙlÆþýû!—Ë‘›› õ‚Ѷ˜ Pd6C¼aƒ·;ÙEu¯E"ÆV¥RA­V ã³ÜÆh6SÇ-Õ¶QººxV¥%%øÂcÿ'>÷Èg±ï­·ÑÛÛ‡žÞ^  õêÔj5²´ZhµZÔTWÁb1Ãb6cÃúõÂñ$šN2YÛV&lÓéÚGŸ2G¦~¶™ÚïtÃcյ˴±â¶‹ãñW™Ü÷ÙdÚxp_ "¢ånÞ Sô"úrªå“J¢iÔ¢E~—Ã]ýápXh÷ÔÓLáp˜))cD_‰«P^V §sngò8C*“A.“A.—Ãh0@«Õ@«ÕÂçó ÇOˆˆˆˆˆˆˆˆˆÒÓ¼A§hª0®ÝÕ‚N©8¦é0[HÜØ¦âg¸”Ò½é$ÞŸU(š<ž‰Åhl¨‡D"þLmCôO0f¦Ò ÙLئ3¡@æô3eêg›©ýNwü\.ÓÇ*Óû?]&G&÷}6™>™Þ""Z~æ :R"ѵá"JÑ€’ÛíNvSˆˆˆˆˆˆˆˆˆ(ňò$MâƒãJ©hzþh"¢TÁã-›LLï?-? :ÑucM§$c0/~8¶Kƒã¸|ð³Z˜L§Lè#9ýÌD™úÙfj¿Ó?×…Ëô±ÊôþO—Éã‘É}ŸM¦G¦÷Ÿˆˆ–ŸÒÍÄÄ<^/¼^/ЋВÝ"""""""""""¢e-cÓë9ÇØøŠ,–d7‡ˆˆˆˆˆˆˆˆˆˆˆhYK© So_ììvÇ¢_»º±r¹2™lAÏïêéÆÅK—páâ%lÚ°aÑë[ ‘H$í‚y©„c{m¦Ž·Ñå…ŸÕÂdÂ8¥ky|Ê™úÙfj¿Ó U×.ÓÆŠÛJ,ŽÇ_erßg“iãÁ}ˆˆ–»”J¯'‰ÐÙÙ…Ö“' -¬†”J¥„J©Âºµk ‹¾.ˆ&ÿ+]ck¯T:9ô¡P‰$)mH'áp‘HDW`rlE"Ñ¢¶‹L …`Æ8rM=Üæ&Æ)úðø”Î2ež.Sûîx¬Z¸L߸­ÄÊäñÈô}aºLLÞæ2u›È„m€ˆ(¤ÔL'@„Ž®.|ÿO zE¶Ñˆl£Réã‰D‹j§H$Zôk–ŠT*…H$B0Ìè/K%‰  Æ|1›þoš_0„H$ÆÛhêâ6¿0™0N™ÐG€Ç§t–)Ûðt™ÚïtÇcÕÂeú>Àm%V&G¦ï Óeúxdò¾0—©ÛƒNDDËCJ,fnÜ´ jµÿù›çôšÍ›6b玻\{“t*--…ÛíF[[jjj •J3úKÄõðù|°Z­°Z­(--–·µµ!''999P(Ilaê …Bƒhoo‡F£Æ‘Ûhê‰~VÜæç— Ç†Lè#Oé-¶áÙdj¿ÓU‹“Éû·•X™>™¼/Ì&“Ç#Ó÷…¹Lß& C²›DDD °àôz‰Ì„B!4Ö¯DÃÊxëíýp»Ýp¹Ýs>û­·`ÃúõXYW'LA^¨"Wú•œ SCCFFF0<<ŒÖÖVƒAƒÁ„·#(•J äç磾¾^X~æÌŒ£§§^¯7‰-L}R©R©eeeÈÏÏG^^pMAÑÏŠÛüü2áØ }äñ)½eÂ6<›Líw:ã±jq2yà¶+ÓÇ#“÷…Ùdòxdú¾0—éÛD48GDD©-%ç'‹D"lX¿í/ ýÂÅ‹ÅbˆÅb4¯[³É„pxaõŸRI(‚J¥BAAÔj5"‘ȲìG*H$P(Ëå1ÁÇ‚‚Fø|¾E%3X,†H$BVV”J¥0^ÜFSOô³â6?¿L86dBy|Jo™° Ï&SûÎx¬ZœLÞ¸­ÄÊôñÈä}a6™<™¾/Ìeú6‘iý'"Z®R*½0p€æõëàr»ç :I$4¯[…BqM'©ýIÆL§`0µZ ½^ââb¡¾-^8F(B(‚{Ê̸‚‚H$H$æýGt6£ßïG jªqM=ÑÏŠÛüü2áØ }äñ)½eÂ6<›Líw:ã±jq2yà¶+ÓÇ#“÷…Ùdòxdú¾0—¹¶ ""Jm)•^/º.¸eëx<Xm6œ–’éõ€Éôs³›7nÀ©Ó§L¤´Z ,3êW.(à‡áóûá÷ù0ár w…øý~ÓtZ6Q¢¥\z½¨`0‹Ù„¬,-~þË_ ë×h4(²XP¿rå‚Òê…Ãax=8œN  Ó‘}~¿#73ˆˆˆˆˆˆˆˆˆˆˆˆÒIÊÎt½^ƒÁ€{wÞómí8ßÖ†¯|ùË(.²@„É y³±;8söNŸ=‹wÿx^¯¯¥%%ÈÉÉFNv6úû•¥…V«Md—W›~FDDDDDDDDDDD´Ü,¸¦S2„ÃaˆD"ܰ¦ "¥%ÅÐjµ³¶ÉçóÁç÷cß[oc`pƒC¨(/‡A¯‡Á Gyy9Ä"Db:»ºŽD •&'îöôÓO'e½ñðå/ŸŸŸä–0™Q.Àï÷/éûÊåò9KÙôzS×»þ†`*4¡iõ*XÌf„ÃáYÛÓ×ߎÎNxï}”•–`UcšV­‚^—N‡ÁÁ!ôôõ¢·«¶±1”£~ÅŠ¤ôí_ÿõ_"‘J¥2áë¿Vápáp@@Xö™Ï|PZZš¬fÑ@>ŸoIßwY@"‘ ²¢µ5ÕðxotÔŠómíШÕhZ½·m»ÙF#\.&&&ðñáÃ8×Ö†sçÛ ‰ ËÊBmMuÒú&‰`YB¡%"""""""""""ŠZpz½d"‘ü~ÿ¼SÀÊÊJ¡ÍÒ¢`§ÏœÅåËèêéÆè¨#££Éd(+-Å­7oÅc>µZ µJ…`0˜ žÄR(P(°ÙlIYÿµ8vìŽ=Š'žx"ÙM!""""""""""¢’œ‚Fq¢Q«!‹±ýÖ[®©0f  ‘m„Á ‡Ñ`€Z¥‚T"A8Nv³‰ˆˆˆˆˆˆˆˆˆˆˆ*Gñ…‚‰Ä‹ÅÐjÔH$H$‹~Ïô :i4ÈÊÊÂö[oÁðȆ‡GPì/‚V«…V£AiI1D"D"<"‘ƒNDDDDDDDDDDD”q|>?\n7&\.ø|>H¥RH$ȤR(òø’™^o¡¢iòD"²Fäæä@$ éÝn7€ÔîËÔ ˜X,NbKˆˆˆˆˆˆˆˆˆˆˆ(Ýøý~ø|>tv÷ÌXÝÝ0èõ0èõÈÊÒ.ê½\Ói9‰Î`ŠD"BÐ)º<Õ½øâ‹Bì‘G–wtt`hhCCCèèè6 ‰D2Y›J­†ÅbÁ`€ÑhDEE¤R)¤Ò´šÌFDDDDDDDDDDD×ÁïÀue’ÎœÏ L>'.A'`yl¦Znízñ҇gNž<‰'Nà½÷ÞƒÓé„Óé„\.Gnn.rrrÐÜÜŒòòr”——Ãl6C©T2èDDDDDDDDDDDD € ×ÕƒN@.×¢ß;mƒNéàâŋطoÞxã ¼ÿþûÐëõÐëõ¸û×ë¡Óé`µZaµZñÞ{ïá•W^Áèè(¤R)JJJPRR‚;w¢ººÕÕÕX±bE²»EDDDDDDDDDDDI áõzç}N´¤Ñb,8½ƒN‰3<<Œ¬Y³2™ R©Ï=÷ÑØØxÕZO˜˜˜Àïÿ{\¸píííøÞ÷¾ŸÏŸÏ‡‚‚X,X,ÔÕÕA©TB¡P ¹¹•••¨¨¨H`O‰ˆˆˆˆˆˆˆˆˆˆ(±æù\kLˆ¹×RÏçƒÓéDII êëëQ__U«V¡  "‘誯•ËåÐjµhjjBqq1šššÐÔԛ͛͆‘‘D"„B!œ>}¡P¡PyyyÈÎÎNP‰ˆˆˆˆˆˆˆˆˆˆ(Ý0蔂ü~?œN'Š‹‹±}ûvìÞ½yyy z­\.‡\.GSS“°, §§===xï½÷ÐÛÛ‹žžœ={N§‡ëÖ­ã,'"""""""""""ºf¬é”‚ŠŠŠ““ƒýû÷Ï;³i!d2***PQQ­[·Æ<öÌ3Ïà™gž¹îu066›Í†ÊÊÊd7…ˆˆ(m]ºt ÙÙÙ0Én M3oÐI*|J0þN‹‡‡!•J¯Z)J*•B¡P,IÀ‰ˆˆˆâÇãñµ/:—Ë·ÛÍ Ñ ƒ‡ÃèííEoo/FFFÐÐÐÀ Q ZTÐI"‘ĽAé( A»…$  EZFDDD×Ãív#‰ ãü#B¡‚Á >õ©O%»iDDDi! Âív# ¡­­ ü1|>ŒF#’Ý<""""šfÞ Sii)Ün7ÚÚÚPSS©TÊàÓ"ø|>X­VX­V”––Â`0$»IDDDtÆÇÇ1>>.ÔCŒ¦!Þ½{7î»ï¾d6ˆˆ(mtvvâÇ?þ1~üãǤüöÙgQXX˜Ä–ÅW$Ûí†F£IvSˆˆˆmÞ S~~>ÆÇǃƒƒqoP:ŠD"Ðh4ÈÏχR©Lvsˆˆˆè:MLL```@lÝK­V ³Ùœ¬f¥•8ÎËÍf3²²²’Ð"¢øóù|hhhÀÅ‹a±XP[[‹ººº˜?EEE,É@DD)kÞ Svv6d2”J%ü~"Ú”v$ $ ²³³‡c.NÑò300€–––˜sº\.‡ÙlƪU«’Ø2""¢ôÑÒÒ‚á|ým½jÕ*Ρ´‰DpñâE@__úúúpðàÁ˜çh4ÔÖÖÎHÕÔÔðfg""JºyƒN@R©YYYÈÉÉL&ê<Ñü<<Ün7D"ïF!""ZæœN§0Ó)J&“!++ ¹¹¹IjQzÀÄÄ„ðo‰D™L†ÜÜ\þ®¦´¥T*¡Ñhàr¹æ|ŽËåBKK ZZZb–‹Åb”–– A¨•+W¢±±õõõÐjµñn:€ÚÛÛ°iÓ&ÎÒY¤p8Œ‘‘ôôô@­V#77—£ˆˆˆ–¹èL§©ššš`2™ ‹“Ô*""¢ôéUXXˆââbžk)í™Íf\¸paѯ ‡Ãèèè@GGöïß/,‰D(++Ccc#ÐØØˆÆÆFÔÔÔ@&“-eÓ‰ˆˆæ:9 @"‘ ‰  %¢miA"‘@¯×#‰ ³³“y§‰ˆˆÒÀÄÄÄŒZ—¬/ADD´´cj:±v"eŠ{î¹Ï<óÌ’½_$‚Qo¼ñ†°\&“¡®®.&ÕÐЀÒÒRÎ&$"¢k6oÐÉn·#??‹E¸›( ƽaéB,C¯×C£ÑàäÉ“œåDDD”&&&f¤×3™L :-¡ééõ²²²`2™’Ø"¢Äx衇–4è4—@ €S§NáÔ©S1Ë÷ìÙƒ_üâq_?¥§yƒN>ŸÀdqìp8÷¥›H$±X ¹\¯×{]»@ ¿ßS§NÁívÃívC&“Áh4Âh4¢²²’5£ˆˆˆâ¬¿¿3f:­[·Žw_-§Ó §Ó9ë¬âuëÖ%©UD‰ÓÜÜŒŠŠ \¾|9áë.//Ç~ô£„¯—ˆˆÒǼA'`2pÂZN×îzÆnll 6› ü1¬V+¬V+„:[b±*• J¥&“ z½z½•••ÈÎÎFvv6gW-¡˜T?Qf³™š‰ˆˆ–Àl3ŠÉ™N¼Áƒ2ÅC=„þð‡ ]§T*Å‹/¾½^ŸÐõQzYPÐ ¸¾À ];›Í†K—.áùçŸòïYŸ«ÓéP\\ŒââbÜ~ûí¨ªªBUUƒNDDDKhzªŸ(¦×#""ZN§sΠÓëQ¦øÔ§>•ð Ó~ðlذ!¡ë$"¢ôÙN)ÈãñÀårá¾ûîC[[Ο?ÊÊJ444àÀÍ7ß N‡¬¬,a6ÔñãÇÑÝÝ®®.|ûÛßF(B(BYYªªªPYY‰­[·¢¨¨‹Éî*ѲÓÒÒs!L.— E˜gKq …`·Ûa·Ûƒƒ!æ¹Äàà 4 òóó‘ŸŸ™Lÿ¥˜´´´Ä,Óh40™L¨««›ñüH$‚p8ŒîînaYYYY̹Öï÷Ãï÷£µµU8w744@"‘õ«‰RɪU«ÐÔÔ„ÖÖÖ„¬ïöÛoÇ7¿ùÍ„¬‹ˆˆÒg:¥ þþ~´··#++ ·Ýv¾öµ¯á _øÄbñU¿ ïÞ½[ø»ÛíFgg':;;ñÎ;ïàòåËøàƒðóŸÿÀäç©T*…À-Ìô Saa!JJJbÎÑ|ðŽ9‚#GŽàõ×_G(ê:Foùõ¯-š~ô£ Á¨óçÏC«ÕB£Ñà7Þ@nn.rrrÞO""¢d™-è´f͘Ífá|½áò'?ù‰p³f´&5X,Üwß}صkZ[[ññÇã£>BYYFGG1::Š‚‚<üðÃxøá‡Q[[›Ð>-ÄW¾òìÙ³'îë)((Ào~óÖ'"¢%Á™N)H¡P@¯×ã _øÐÐбX¼¨“¿L&C^^d2Äb1ÆÆÆ066†îîn¡(ëøø8|>ü~?ÊËËa4ãØ+""¢Ôe·ÛÑÕÕ…®®.tww#Àï÷C©TB¡P ªª f³‹eFM§h}‰þþ~\¾|hkkTWWãÎ;ïÄ… páÂá‚Øoû[Èd2Èd2|å+_F£V«ÅÑ£GÑÞÞŽ¶¶6¼ýöÛØ´iƒNDD”æ:ßêõz¡&ñúõë…ZÆS™ÍfD"ô÷÷ãÀ…ÕjEuu5ôz=ÊÊÊðöÛo## ÁétâèÑ£˜˜˜€Z­Fuu5n¸á ¿¿}}}Ø·oΜ9ƒ·ß~›A'JIŸþô§ñ­o} V«5në‹ÅxþùçQPP·uQfáL§¤P( Óéðøã_óÝÍÑ S^^ª««…å6› ýýýèïïÇùóçáñxàv»Q^^ƒÁ°”Ý ""Z6ÆÇÇqâÄ üÏÿü>üðC¸\.¸\.èõzèõzÜqÇhnnFVVÖŒšNÑú}}}øóŸÿŒ`||ÍÍÍhnn†ÅbH$Bgg§tòù|øío‹ŠŠ TTTà‡?ü¡ન¨ÀK/½„cÇŽáí·ßFnn.6nܘÄÑ!""ZsoKJJ„”ðµµµtŠÖrêëëÃo~óx½^x½^<ùä“(++C À»ï¾‹@ €P(‡ÃcÇŽ¡¥¥Û·oÇý÷ßûï¿z½^¨—ü /àôéÓÇ׿þõd ÑU)•JìÙ³O?ýtÜÖñÝï~Û·oÛûQæÉè™N]]èèìBiI1ŒF#Œ)tÉËËCNNN\î´ŠÞ=ÖÐЀÛo¿}Éߟˆˆh9éííEOO~øaÜrË-¸ùæ›ñ/ÿò/B­‡¡¡! á—¿ü%ž~úiœ>}:&àçÎC__^yålÛ¶ Ÿýìgñè£ÆÌPÎÍÍ…T*Å+¯¼", ƒØ±c¾öµ¯A§Óaï޽ػw/^{í5á9GŽÁ¶mÛâ?DDDq4ßùöäÉ“8~ü8ZZZ°bÅ ¡þÒT¿ûÝïðꫯ"‰à?øV¯^Õ«WÇœo<ˆ³gÏâìÙ³€p8Œp8ŒŸþô§0 Ðétؽ{7Ο?óçÏ:::Ðßߟ¸Á Z¤'žx?úÑâRaçÎøÎw¾³äïKDD™mÁ3â)zǯÝáXôk5 ´ ärù¢_;:jE[û¨Õ*Èåò” :Qb\¼xï¿ÿ>î¹ç¬]»MMMÐh4‹ÅH$0Éd¸÷Þ{QZZŠ¢¢¢˜À0Pª¬¬Ä­·ÞŠªª*TUUÍH‰ëõza·Ûc– èõz œ;w.æX”\.gqs""Zöæ;ß ÿ E­X±ååå(//GSS fœoív;¼^¯ðo¥R ¥R ƒÁ§Ó)düž#‘H®ézQ¢”––âž{1i)TVVâ¹çžc'""Zr)‘^ÏëóÁáp »¶Éz IDAT§wѯ-,ȇüJ=„ŵZÑÖÞŽ"‹Fƒ!-gsÑÜ.]º„wÞyßýîwQYY‰ÊÊÊ˜Ç  ŠŠŠPTT“É4kЩ®®O>ù¤pÇöt^¯ããã1Ë¢'ƒÁ€§©d2$Éõ–ˆˆ(9æ;ßFϳ0<< ¿ß?#èTWW‡mÛ¶aÛ¶mÐh4³®'Z·8J©T çÛYϵ‰äš®'%Ò“O>¹¤A'•J…W_}•eˆˆ(.R&½žH$ÆÿõÝï E?¢ª¢÷î¼÷î¼ûÚÚ'DbDâÉ»:t¢DƒˆD"‡ÃÉn Ñ¢H$ˆÅbκ ´288ˆÖÖVlÙ²RéÕ¿¡££cÆòO|âøû¿ÿû9/€ù|>ôõõáĉ1Ë×®]+Ô§8yò$†††f¼vóæÍ(..^hwˆˆˆRÒbη3nÔ€§žz Z­vÖóm(B0ĉ'b®'˜L&ÔÕÕ†††pòäɯ-..ÆŠ+Û%¢„Ú¶mV®\9#{­~ö³ŸaõêÕKò^DDDÓ¥Dz=…\QVV56 `pFÁйlÞ´ÅÅE×¾âȬ%Š+—Ë%¤”œÎívÃãñõBD"ŒF# ÅUS>LO!‘("‘"‘ …"aë‡`0ˆ@ ¤ø˜ïÇðRðûý…BW @Êår!Ø3—p8ŒH$÷ÙZ­*•*¡ÛQ¼©T*äääàĉ°X,°X,ˆD"Bas«Õ ›Í†“'OΚêG,#Ϩ;1Õàà ÇŒ›jL&´Z-€Éýkêq>šæä¦›nBIIÉRu—ˆˆ()æ;ß^¸pA¨£øá‡¢»»[xmô÷†ßïG0œõýN'ìv;B¡PÌͤZ­V¸ÁC&“ çÝ©ï]RR‚›nº)½&ZZO>ù$žxâ‰ë~Ÿ/ùËxôÑG— EDDD³K‰™N2™ r¹Ÿ}øS8øÞŸpÐn‡ËížóùF£Fƒ»îÙ •J%´q±"ÑPS@fsÀÄÄ„ðl6l6> »Ý»Ý>#è”››‹œœlݺuÖÔÞ½{…c<ð@Âúò /ûï®]»¶Þ«‰Î"‹Å‹ÊM}êÔ)œ:u µµµÂ‘ñôÞ{ïappƒƒƒs>G.— wtnذz½:.æ9íííhooÇÎ;ãÚÞH$±XÌ ¥•µk×âñÇÇo~óèt:deeA, ß}¢Ç”P(„îîn´µµÅ¼^*•âìÙ³xñÅñ­o}kÖu=z}}}3‚NkÖ¬.„mÚ´ CCCèèè€ÝnGii)ÊÊÊðàƒ"+++>'""Jùηѱ"‘ÚÚÚàt:…×Fo {ñÅqã7âÆoœñþýýý8{öì¬7x¬Y³À䌦M›6¡ªª ^¯>Ÿ[·nÅwÞ‰»îº+¾@´}ôQ<õÔS³Î\¨œœüÃ?üÃ¶Šˆˆh¦”¨é}ÿU h¿pjµúêA'ƒåeÈËͽ¾4e‘É?“_t™^’Ãf³áÂ… xá…àr¹„€ÓTf³f³k×®€A§?üáB%‘A§ýû÷C­VC¥R¥DÐiêV‹šùsñâEìß¿999P( :=zgΜÁ™3g®ú¼ììldggÃl6ÀŒ ÓåË—ñî»ïÆ=èD”ŽV¬Xììl<ñÄÂÖ2™ yyyÈËËCEE***ðàƒB,£³³3fF¶D"Áùóç166†o~ó›³»{{{áp8f,7™LB@©±±mmm8sæ ºººpà 7`Ë–-Â~ODD´œÍw¾Ý¾};êëë±råJ¼úê«…BÂï¢hÐéw¿û²³³±yóæç[‡ÃÞÞ™5¢§Ît*((€^¯GUUìv;ÆÇDZ{÷n466ò|KË‚F£Á¿øE<ýôÓ×ôzN›Í†mÛ¶áàÁƒœMODDq“2A'`òË䯿õ0â¿÷ýYŸ£P(°yãÜ¿{÷œSë¯ g:Qâ=ÿüó8tè:„††lß¾«W¯FYY¼^/<>øàœ9s'NœÀ—¾ô%Üÿý¸ÿþû¡V«“Ý|ÔÔÔ@©T¦Lj½'N µµ?ùÉO°gÏìÙ³çªi §ÊÉÉAMM ôz=ŒFcœ[:ÓSO=¹\.´7:³¢££çÎùsçðo|>ø |ðAáQ¬Ft PPP€?ÿùÏW}ÞÄÄĬEÍüqtww£»»/¿ü2P__óœÃ‡Ïz!líÚµÂ~¬×ë…ãQºYÈùÖï÷ çÚ©¿Í×®]‹ 6àÏþ3Nž<‰—_~=ôPÌkûúúpøðáïi2™„÷  öïß¿D½"J¼'Ÿ|Ï<óÌ¢¯‡E·ÝÝÝøÂ¾€­[·âàÁƒ(//SK‰ˆ(“-8½^"D"èõz”—‰QPP×Ä&\®˜ç¬^Õ‹Ù ¥òú/rOíãM”H>Ÿv»GŽÃá€ÅbÁ½÷Þ “É„ÂÂB ƒAƒAlܸ::---èééÁéÓ§ÑÜÜœìn`ëÖ­ «o¥¥¥Bú¢¢ë¨wÊÊÊ P(„ÔuÑY[yyyÈÉÉÉd¾}û022‚¶¶6”——3åQõ÷÷ÃápÌøNd2™ ÑhPTT„ÖÖVäääÌ:õõõÅÌtŠ˜³²²'""JwN§V«uƹ6:[ióæÍÉdhmmtr8èëë›ñ:­VËïÌ”VŠ‹‹qÿý÷㥗^ZÔë¾ÿýïcÛ¶m&¿‹~îsŸÃ–-[pðàATWWÇ£©DD”ÁRj¦ôzädg£ ?CÀÌ Sc#,3 ÅÝÙ?5ðÄÈ%†×ë…ÝnÇáÇa6›… “X,†X,Žy®Éd‚^¯‡^¯ÇŸþô'ôööâÔ©S)tÚ²eK²›°dJKKQZZšÔõGSNg2™PZZŠ×^{ £££hkkƒN§ã]iD Ôßß§Ó9ã»Baa!ŠŠŠ ‘Hðì³ÏÎ8“éõ¦Ö¦ˆÖj›^Ìœˆˆ(“9Nô÷÷Ï8×fee¡°°¥¥¥8qâŽ?>ãµ³¥×‹œx¾¥tóõ¯}QA§]»váÛßþ¶ðïÏ|æ3Ëåøô§?­[·âÀX±bE<šJDD*å‚NÑÙßøÚWðú¾7ñÚ¾7‡¡Õj ÑhðÐ÷ÀŒ¡ÓÛ:08ˆþA:|¶±1Ølc°A$A$Áb1Oæq¶ÛcŠ…%ÂÉ“'±ÿ~D"|âŸÀC=tÕÙBuuu¨©©Á¯~õ+Œáã?^p ¦‰‰ LLLàµ×^ƒÃá€Ýn‡X,Y»ví‚F3¹MuàÀÈd2Èd2466¢µµUø·aÃ477£¥¥‰b±Âk<©T ©TŠ5kÖàìÙ³8sæ Ξ=+¤µ¸ýöÛ…ZU³ñûýhkkC[[Z[[…¼í ¨­­EMMMLŠÁ ½½ííí€3gÎ`ïÞ½X¹r%Ìf³Ë}.€L&CAAòóóèèè€R©f¢ý×ýFFF022N‡ÊÊJTVVbݺu úL+//O¸CÓãñ`ll '.ë"¢Ùµ´´ÄÔrŠª¯¯‡Ñh„ÑhÄßþíßâ–[ns»Ýp¹\èèèˆyÉdâ¥DDDÓ  ¥¥eÆò¼¼<Ô××£¢¢mmm8räHÌã###èëë›q¾]»ví¼¿ˆ–£ææflÞ¼}ôѼϭ®®Æ³Ï>;£Ú<™L†‡z7ß|3þøÇ?Æü¦'""º)›K¯×Ãb6£¶¦çΟþ.ÂÔ¹I±œN'œ8|ô¬V+F­6ôöõÂ㙬ãñz!‘èë‡×ç…×뛵èw²”——#3–æÆÇÇÑÕÕ…üü|Fètºy_#‹…;’šŽÉjµâäÉ“8yò$ÚÛÛ…@P$ÝnG0D(ªU«°zõê˜ÀÓ™3g„to½½½¸xñ".]º‹Å·Û `²N‰L&ƒ\.ù‚zöìYH¥RÈd2ôõõaxxÃÃÉD°Ûíp»ÝxóÍ7ÑÔÔ„¦¦&”•• ¯ …Bƒxýõ×ÑÛÛ‹žžƒA!`üñÇ£«« §OŸÆîÝ»…õ÷õõahhV«`³ÙpéÒ%äååA¯×Ï;V}}}8zô(4 V¯^-FFFpöìY¨T*\¾| …—.]B(‚H$Bgg'¬V+Î;‡ÜÜ\  †}> åt:1<< `òŽÍÂÂÂYïØ …Bp¹\p¹\H$P«ÕÐh4)uŒ#Z®ìv;¼^ïŒåF£Z­J¥Á`0f¶ÃáÀàààŒ×deeñ"Ñ4ÑäÓ©T*F(•JˆD¢µl¦§±2™LœåDiëë_ÿú¼A'µZW_}uÎßÃ÷Ýwþû¿ÿŸüä'qË-·àÝwßÅš5kâÑ\""Ê0©tÒé`±˜Q[S}%èdAó•YsžœèëïÇkoìƒÓé„cJ*›é¦)M•k²eeeœu•ìv;:;;a6›‘=ožñhÐàÓŸþô¢ÖcµZqôèQ¼öÚkJ¥ÈÏÏG~~>‚Á †††044„ .ªªªb‚N§OŸ†Z­†Z­Æàà ð|…BtR*•P*•xôÑG…מ={2™ R©£££‡Ã‡Ã(--Åøø8úûûÑÒÒ¿ß½^t ƒðù|xíµ×`³Ù`³ÙPWW'Ξ=+Ô¸ºí¶Û Õj!—ËÑÛÛ‹ÁÁAŒŽŽ˜ :]¼x º¸ÛÛۋÇÃ`0 ??«W¯tr»Ýp»Ýƒ0 Ðëõèììœ j{<غu+ÊËË—<è45G½V«EAAÁœA'‡Ã!|NyyyP©TH$KÚ¢Ld·Ûáóùf,^S(³¦§úþZ›‚ˆˆˆþ*š‚|:¥R £Ñ…B±X<#è4=m”Édb='J[»wïFYY:;;ç|ίýëyg/íØ±o¼ñvíÚ…[o½ï¼óNJ¤ò'"¢åmAA§dA‚Á šV­Bc}=l6¶Ü´Ÿ¸q3ü~ÿ¬Ï?ú—¿ààûÂÁ÷ÞGx‘mµXÌÈÊÊJ‰@Ï7¾ñd7âÌårÁn·ÃjµbëÖ­ÈÎÎŽÛºž}öYôööB©TbïÞ½Ðh4BJºááa á±ÇC[[>øà|ò“ŸŒy}gg'†‡‡±uëVÜwß}Ø´iòòò´î®®.ô÷÷ã3Ÿù 6n܈ 6˜ü1éñxðÉO~Ø·o_L:ªC‡áOú:;;q÷ÝwcÇŽ1w[µ¶¶â­·ÞÂ[o½…§Ÿ~wÜqn¿ýv<õÔShmmEkk+~ò“Ÿ`×®]سgÏ‚g…Íçƒ>ÀªU«°víZ|ík_–áå—_ÆÞ½{±oß>ÜqÇ1A´…Ú»w¯ÎÂá0B¡:;;…÷Þ{/¶lÙ‚-[¶ÄÌ^ ðx<øÏÿüO””” ¸¸¯¼òŠ´ûùÏ.‰èÚÌ5cÐh4btt¨­­Enn®ðX__><ã5&“ k×®[[‰ˆˆ–£èMfÓEg:;wP[[óøáÇg½Éƒéõ(I$|õ«_ÅßýÝßÍúøw¾ó<øàƒ z¯Ûn» o¿ý6vî܉Ûn» û÷ïÇæÍ›—²¹DD”aR®¦ÓT‰‰?øî? ³ærøÈQôöö-8à$‰°º±«аr¥0#‘B¡ü~?~þóŸ't½×£««ëªwÒÐüÆÇÇ…MfÉ‚"³¹ûî»!‹!‹g‹rrr„9^¯ããã3^/‹!‘HðÏÿüÏJ¥‹š1#‘H —Ëñ7ó71ÁŽę̀ºº:„B!ánÆ`0ˆ@ €sçÎaÿþýؽ{7n¼ñÆÓû›ššàr¹ “ÉðÊ+¯ ²²7ÝtSL}§xËåhnnŽ™ÑL^p.**B]]Ýœ3!âW¿úÕœ‰ÅbˆD"!¥ˆÏç›DŠD"xì±Ç„[&“ Ï=÷>üðC¼þúëhhh@CCÃ5µˆ‹Å2k*ÔÓ§Oã£>‡~ˆGy«V­ëííÅ¡C‡f¼†A'""¢™²²²`±Xf,ÆéÓ§ñoÿöo0™Lxä‘Gb?tèМA§¥Î@@”JöìÙƒú§š1ÓïÞ{ïÅ÷¿ÿýE½×Í7ߌwÞy;vìÀwÜ7ß|[·n]ÊæQYðL§dˆ®7Ìjlh@0‚ÃéÄÀ•ú ÓÛ­Õja0èa4P[]’’b”—$­†R(¼ùæ› _÷µŸ58A §P(„àM ¶ƒx(..îƒÇãÒVŒÍûY*  H¥ÒE×R(ÐétJ¥‹Å3‹Å1}÷xŸN§3îA'N•J5ël!‘H4kã‘Gê`M`·Û1>>.ÜÝép8PSS#Üå)‹!“É ‘H„ÏI¥RA.—C*•Æ:‰èÚTUUá/ùËŒå?ûÙÏ„scsssÌÅ2‡Ãþþþ˜ç«Tª+ßGxŒˆˆhªììlTUUÍX~ôèQ“©ÃW®\9#õWÌE÷èÍYƒ …"¾&J"N‡={öàßÿýß…eõõõxþù篩®ï7Þˆwß}wÜqvìØ×_Û·o_Ê&Q†Hé™NQ@`Þç46ÔÃétbhhƒCC³¶W«Ñ ØR„²²Rܳã.è¯Ô…‰Ö§I´èìª}ûö%eý” …B\,$ z=Š‹‹…ô˜ÃØØº»»ÑÓÓƒîî^©T 3kjÐi6ÓÓgx<Øl6¸Ýn„B!x½^ôõõͺÿ Áív A'‡Ã‚‚‚E·q1æ :]Ë—ú©>ûÙÏB­VC¥RÅ,w»ÝBнïÿûB©T*$ d2YLàK¥R Nˆ®_UUÕ¬éPúÓŸÂb±Àl6£¹¹Y8^F"8N¡[”J¥BVVÖœ‰ˆˆ2Õ\A§cÇŽáØ±cX¿~=ŒFcLÐ)‰ ¯¯/&Û€T*…J¥â¹–2ÂW¿úUüÇüB¡þöî<¾úÌøG#itK–,˶,Û±ÄGìÎE²!÷9Ø)ZZ lû+=hwé¶»”îö K Ë«ÝRèA)¥ÀBËŽÄ!„$IÈa;±c'¾-Ë–uk4’~ q|ɶNûyóÊ‹d4Ç3:f¤yæy¾ƒ¯¼òʤÆ2[²d öíÛ‡7bÛ¶mx饗píµ×Æ0bB!ÓÁ”à#Ó`À ;þ7n'<Ün7\n7X–…R©„R¡€B¡@0D0„ßïG8NZ‰L_FøÓØØˆ9sæD½ìã?ŽÖÖV´¶¶â¿øŸ¾¯GRSS#´}²Z­P«ÕP«Õ())ÉdÂUW]…S§N¸üHUJÑH$ËåQÏàñx„$S}}=š››Gm?XYY‰ìììIWEC.—'eL$¥R‰ŠŠ TTTàøñ㨯¯ÇáÇQTT„êêê“m>Ÿ>Ÿ~¿Z­–îò$d’*++±yóf<ùä“B²ùúë¯Ç¶mÛ°uëÖAÇ«ºº:ôööB*•¢¢¢Á`<ÏcæÌ™0›ÍIÜB!$5™L&˜L&|ùË_ÆñãÇqìØ10 ƒòòr”——ã7¿ùPÍ===°Z­J¥ÈÈÈ€J¥‚ßï‡Á`ˆë¸¹„¤’¢¢"\wÝuxå•WðüóÏ£¤¤dÒ묮®Æþýû±~ýzìØ±/¼ð®»îºDK!dº˜2I§P($T„B!H$¨T*ˆŒH$TNDZé%«¥^Ä]wÝ•´mÇ}¡?­V‹üü|tuu¡¯¯.— jµzÌåêëëa·ÛÑßß?bÕ áâfMM ¬V+”J%nºé&hµZh4 (•J¨TªXïÚ„E’T‘}ª®®FVVL&Ó¨ËN›÷ J¥Úï5ÎÝåãKåçç; !d|"Õ…b±‰ ,ÀìÙ³‡Ü`4±aÃdeeA¥R ßOôzý qŸ!„2ضmÛPUU…U«VA&“!''¹¹¹P(ƒZQ+ FüË¿ü ¤R)X–ÏóP(ãºùt÷Ío~+W®Œi+¼ªª*¼óÎ;X·nn¼ñF<ûì³Ø¹sgÌÖO!djK‹özш$’D"‘ð¥3ÒZŒçù¨Úô% %¦7N‡üü|áNøh’Nápõõõày<ÏC.—ØÒ-’¨©©^¯‡^¯ÇM7ÝN—²m&$É Öƒ ,À¬Y³0kÖ¬$G–:”Jå ¤Óh-óúûû…Ç-Kʾ“Ù³gcöìÙ¨®®˲ÂÕÃÉÌÌÄúõë±aÆAÓC¡Ð¤ÛqB!SÙ¶mÛàt:áp8 R© —ˇM"EZSç;ß4=r €ébÅŠX±bEÌ×[^^Ž`íÚµ¸å–[Àqn½õÖ˜o‡BÈÔUÒ)ݾ´EP©láÂ…É$Ѽyó‘‘·ß~DSSyä0 3ìÅÈúúzÔÕÕ¡»»(//õ¢e?º»»ÁqÊÊʰjÕ* šÇáp ¿¿?æû6Qz½Z­&“ *• ï¼ó¤Ré°I§C‡áСChhhÀ¶mÛ°mÛ¶$Dœ8‘ ‰Ã‡£··,ËB¯×Ãb±Œ¸ÌîÝ»át:Q]] $0ZB¦¾¼¼¼1ç©íg"ÚB!é.ÒŽ|4#«‹ñV !fÍš%$žn¿ývp‡;î¸#ÙaBIqS¦½!éD©T"33óçχÛíFKK ^ýuäææ"77™™™BEÓÅ‹qúôiœ>}r¹‹ÕÕÕ£®_&“A£Ñ@$ÁápàÒ¥Kƒ‰D`}}}¨««C}}=€ªŽã±ë#‰D‹ÅÈÉÉAUUšššpöìYFTVV ?Ïœ9ƒÚÚZœ9s3fÌòc4ò3 çùQÇ„J%§OŸ†L&r'Ïó°Ûí°Ûí°Z­ÈÈÈ€ÅbÙlÔ^$‚ã8´µµ!//ÚxB!„B™°ââb¼ûî»X»v-¾ô¥/ã8Ü}÷ÝÉ‹BH ›’•N„¤:…BÌÌLÜyç8yò$Nœ8?þñÂFW&"I‡o¼ÕÕÕcVÊ©T*°,‹E‹ÁãñàÝwß˲‹Å‹Å°Ùlðûýà8F£ýýý8zô(Ž9‚üüüQ+hâ%’Tš?>L&}ôQœ8qgÏž”t:{ö,<8ŽÃÖ­[a6›…u( ¡ÕÕÉ“'ñôÓOcÁ‚°X,QU&$Ó3Ï<†a ‹MŒGçóù0kÖ,Ì;óæÍ”t …Bƒ8wîœð^™?¾0è2!„B!„2Q8pàÖ­[‡{î¹~¿÷Þ{o²Ã"„’¢¦Ì˜N„¤£Å‹C&“A&“áw¿û:::†­8ÊÌÌ„Á`À–-[™™ •J5êz% $ .\ˆcÇŽáÌ™3xê©§„¤ÏóX´h.\ˆ††Øl6477ãÈ‘#”¤S„ÙlFNNJKKQ__S§Ná£>Ô"#2ÖSuuõ ér¹\H:ÕÖÖ¢¾¾^x>S=étâĉa§3 ­V ­V‹eË–¡²²RHÂEDªºÎ;‡žžX­V|ñ‹_úÜB!„B!“‘——'$ž¾þõ¯ƒã8|ûÛßNvX„BR@H*õõZÑk³J5ä 5vïÞ¢¢"%3Î)¡¦¦F„Ü`0$;’$mmmp¹\p¹\ƒ¦ûý~ttt ££]]]` तF£F£qB½ÉûúúÐ×ׇ³gÏB,ƒa,Y²D·»»­­­hmmEii)ŒF#233£^w¤I§Ó;¶±Øívôõõ¡¶¶Vˆ½¬¬ Bri8ÇŽƒÃá€Ãá@EE…´Ïçƒ×ëÃ0ËåÉd±Þ¸iooG{{;4͸^¿ñÊÊÊ‚N§‹ËkM!„B!$õY­Vlذ'OžÄý×á{ßû^²C"„2 ¯× ¯× §Ó9hz·ÕŠ®nkT먚S1dšF£Ïë‚×3pûbó\l¾€/ÞõuÓ‰T!‘H‘‘‰D½^/$s ”Jå„ÃTºÌž=[X§\.‡D2ðñW©TÈÍÍ…J¥‚ÑhWeLdÞx Ô+—Ë¡×ëQZZ*Äž‘‘1dÜ£+™ÍfdffÂï÷#333ª}’H$P(ÂØRéD£ÑÀl6C&“Qe!„B!„¸ÉÊÊBMM 6n܈ïÿûðûýøá˜ì°!„¤j¯GHŠ‹ÅcVðLD¤¢I¯×û¸J¥OYwŸ/­ÚM¥’`0žçU—B!„B!„’Žt:Þzë-lÙ²?ûÙÏà÷ûñè£&;,B!)€k†ŒŒ „B!Øl6ð±M ‘ñhL&æÌ™#´Ú#„B!„B!$Ý) ¼òÊ+¸ñÆñûßÿÇá©§ž‚X,Nvh„B’`̤“×ë…\.‡ÙlFUU¤R)K4^¯^¯^¯"‘ˆ*ÅÒ Çq¨««C]]>÷¹ÏMz}&“ F£Á`pÐôßüæ7èééAOOOTëY¸p!æÎ‹¹sçN:¦TpðàAB!„B!d€D"Á3Ï<©TŠ?ýéO¸þúëñÒK/A&“%;4B! 2fÒ©¥¥³fͬY³ •J‡á÷ûÛ” •JQPP³ÙŒ={ö€eYÆd‡E¢P__úúz<ñÄøÂ¾€ûï¿?nÛ9|øð¨ó¨T*¨T*|÷»ß…ÍfƒÍfïýkÔ××ãõ×_Çç?ÿù¸Äk.\€V«…F£Iv(„B!„B‰±XŒ§žz 2™ ¿ýío±}ûv¼üòËP(ÉBHŒ™tŠŒ;#‹©µÞ„ÃaˆD"ˆÅbð7Þx .Dyy9f̘óíƒAØív´¶¶Ž8V«Eii)JKKa0 “É Óé “É„ ©Èg“Æ #„B!„BH²1 ƒ'žx,Ëâÿ÷qíµ×b÷îÝP©TÉBHœ™tây%&ƒ’NéÇétâÔ©Sxå•Wpà 7 ¼¼………1ßN$éÔÒÒ2â<åååX·n t:‚Á tr¹\…B4Ö!„B!„BR†H$¯~õ+°,‹G}›6mž={¨û !„Lqc&€jJ–L%ëÒG8F8Æ®]»`³ÙÀ²,zè!Èåò¸lïäÉ“hkk¶e¥R©„B¡ÀO~ò( !±X ±XŒåË—£¡¡ 8zô(, òòòâ'!„B!„BÈD<òÈ#Édx衇°aüñÆÈÈÈHvX„Bâ$ê¤!ÓAss3.\¸€ææf”””`Ù²eËå‹ÅqÙ^gg'\.×é à°°¥¥¥P(H†~TÍf3ººº/^„Z­¦¤!„B!„BRÎOúSÈd2üð‡?ĺuëðöÛoÃ`0$;,B!qUÒ  Ä™úΞ=‹Ý»wc÷îÝÐh4X½z5>÷¹ÏA&“Åu›V«uÈôŠŠ ,_¾Ë—/±Êª¬¬LhËwäÈ¡ ßTi³×ÔԻݻݎÒÒRh4*Á'„B!„BÒÔƒ>™L†ï}ï{X³f öîÝ‹¬¬¬d‡E!$Æ(éDȧΞ=‹cÇŽáàÁƒ¸ùæ›Q^^ŽÙ³gÇu›½½½ðù|C¦—••¡  ™™™#.«Õj…„X[[‚Áà”I:E*Κ››…*.J:B!„B!éëßþíß “Éðío«W¯Æ¾}û“““ì°!„ÄéD¦½ÎÎNtttàóŸÿ<¤R)²²²ðØcA©TÆ}ÛMMM¿  n¾ùæa[ê]N§Ó UP^¯¨««CUUU\cŽ¥È±åÈ‘#8wîìv»ð|<úè£Â|åååËå0›ÍÉ •B!„B!1pß}÷eY|ýë_ǪU«°oß>X,–d‡E!$F¦Å˜NN§N— YF#†‰Ûø<$ýôõõáƒ>ÀÁƒÁqÊÊÊ0wî\(•JH¥Ò¸m7 ! ! Jèfff"??‰"‘hÔu\9Ûí¶U_ª‰ìû™3g`³ÙÐÓÓƒsçΡ­­ @Á`0Ù!B!„B!$޾öµ¯A&“áž{îÁªU«PSSƒÂÂÂd‡E!$¦E{=‡Ó‰öŽè´ZH¥Ò)Ó~ŒL^__>üðC<óÌ3à8%%%زeKÜ«œB¡xžTåF£³gÏŽ*1*‹½—=º»»ck¬…ÃaƒAœ9sçϟǹsçÐÓÓ“ì°!„B!„’@wÝuX–Å—¾ô%¬\¹555())IvX„B&)%’N§‡—ZZǽlN¶ Ù&T*Õˆó4_¼ˆ#f–£¤¸x2á’) ··6› ›6m‚ÝnG__n»í6ìØ±;vìˆûö<Ï i‰³gÏÆæÍ›£Z‡H$TéÔÛÛ‹ÆÆÆ˜Æ N§S› ¨Èr»Ýøãÿõ:®ÜW2uÔÖÖâ…^À /¼Žã`0 ×ë¶ý¢¢"ÔÕÕ¡®®ùùùB‹ËDX¹r%®¾újüèG?Âí·ßŽÛn»-!Û%„tòÞ{ïáàÁƒxøá‡…s„N§KvXqWXXˆ¦¦&455eYèt:hµÚd‡w*• ÕÕÕX°`ž{î9Üpà ¸þúë“!„8ú¾–eqûí· Oñ_›BH|¥L{=‘H„ý  G½=ƒ^… æÃ’—Õú?>qr¹ ù X–lÈ$Mµ´´àÃ?ÄG}»ÝÐëõ¸öÚk1kÖ¬„Ä …†´‘ËÎΆV«ú½Éóü uøý~8ΘÆ9‡‡555èëëC__߸×IX,h4š8DI’ÍçóÁápÀf³! ÂçóMè½2QZ­ýýýðx<èèè€T*s<µX)--…ÛíÆ… ºÏ„’NÜn7º»»áõzÑÛÛ ¯× ›Í–ì°âN¥R¡··v»b±.—kZT†k4äåå Üxéúûû“!„صkX–Å®]»„1ž***’!„ J‰J§"Ô¼s`Ø‹ñ#™Y\ Kž‰dŒøDD8~âòó-à8.®ãõÔvéÒ%¼óÎ;øË_þ‚¾¾>èõzdddàÚk¯…L&KH ‘öz—ËÎΆN§‹:étåxPÇÁápÄ4ÎÉp8hmmÅßþö7a§ñR(0 ÈËË›w÷NG>ŸN§3iÒ, úûû… ¼Dêî!„Œáò¤“×ëMv8 “““›Í6íÎ:3gΤ¤!„LC7Þx#X–ÅÎ;±zõj¼ýöÛ˜7o^²Ã"„2)‘tÒ¨ÕÐj4¸õ–›qâä)œ8y2ªå¾ý­oÀ˜™9v|Ÿ>ÖÙÕ…—_} ‡¼=ød2YÂ’ $¹¼^/<ˆƒâg?û‚Á ‚Á ¤R)vî܉;î¸#¡I ±X<$¹T]]ÜÜܨ×áp8à÷û…{½Þ¨¶‰Ð×ׇ . I®EëᇆÑhDæ§ŸqB!„B!„L]Û·oÇË/¿Œë¯¿k×®Å[o½…… &;,B!ãu{½x&"ë¾í–›¡ËÑÖÖë(w½¡¸h*ÊʇǬ úßö­[Ðmµ¢»ÛŠ/åÿaõÊ«±êê«Q^VËÝ!)" âÌ™38sæ î¿ÿ~Øív¡^ÄÃ?Œ¥K—béÒ¥ M"‘ Ixk,›+ïþ¼²Ý^ªc‹yyyزe Ž=Š>úÎOÇx+-¥Ï%!„B!„2\sÍ5xíµ×pÝu×aݺuxã7pÕUW%;,B!ã˜+¢$‰`É3céâÅØ½gϰóH$ä[ò°dÑ"„B¡¨’a‘Y/\?çççP{æ <^/ÞÞWc¦J¥*•*–»C„çytuu ã}òÉ'hiiAkk+ìv;|>Ÿ°ŒÙlF^^–.] ‹Å’ð˜E"ÑqcÆ3ž€!û$‰À0LÌbŒ‘H4èïápX3góæÍ0 ÈÌÌDNN}þ¦)³ÙŒ’’Ì;N§¥¥¥ M8bïÞ½èììÄš5k™™ £Ñ˜°mS«WB]II 6oÞŒgŸ}V8G%;¬¸ËÏÏLJ~‰DFƒ3fL‹ý–ËåÈÈÈHv„B’lýúõøûßÿŽ­[·bãÆøûßÿŽ+V$;,B!QJ‰özI§<,Y¼hĤ“X,F¾Å"$ÆcÑÂj( (är°2ïð!Ž|ð!Ö­Y…¬¬,(•ÊXìI0žçáõzáv»qþüy\¸p.\À‹/¾‡Ã1l/ø¼¼<,Z´(áN Ã@,š¦ÑhÆÕ¯/¥“NW&œ"$  ¶oߥR)|îÔjuÂc$Ég6›1sæLTUU¡½½›6mÂöíÛ¶}‘H„ÎÎN–»1&žç…?©†eYˆÅâ!•8©Àáp ­­mBËæåå!//;vì@yyù ê›X8|ø0:„@ ¬{¬Ê£ÆÆFá½üóŸÿ|\ÕJ|ð<<€¤“T*ÅC=4‰½ˆÇ ¯×‹––èõzèõz466B&“A&“á§?g]]êêÎÂï÷Ãï÷y<ùâŸxO±þì ¼öu°Ûíxíµ×ÐÒÒÓõåÀðûýxíµ×ðÑG!'''!Ûíéé.¬½÷Þ{)óÙ%ñ‡½ëÏ*ÒÚ5§ýó-‰ ‰ …ݸ2œ9s/¾ø"jkk“JBœ8q°Ùlðz½Óf¿[[[ÑÚÚ ‡Ã}ûöÁï÷';$’F"c>O…ãþ•"ç€È߉aá|:Öu‚È÷žç!‰„k ‘é‘ïB‘1Åb1$ Äb1¾ño$bwHšY¼x1öíÛ‡ 6àºë®Ã‹/¾ˆ­[·&;,B!£H©öz‘í„B!,[ºÝÝÝ8þñ‰O“NR¨T*Ì©¨€q·Ö‹¬;üéÿyž‡F£N§ƒÏçÏó ÛGðù|ƒÚ£¥ F#$žRÓéœTÒiÉ’%رc‡pá&–:„ÿþïÿ†ÇãÖ?Vå’Ûí0ðž|øá‡£ÞV8–ˆlóÂ… ã>Âá+¾<—g]ݹAñ|<~̤VÒ) J: ˆ|nbùù‰ŒÉ …ÐÒÒ‚7ß|3f뎆Ïç’N‰L¸‡B!áG÷¡C‡pìØ±„l—$G䨯qœ0-•Z¢NU‘ tS!QÃ0 †Ïó){sP¼9s Óf<<ŽãÀq†Ammí´ÙïÈÅjŸÏ‡šš:t(Ù!‘4IjƒÁ´?î_.²‘DN<~ÏŽF"‘çÓ±Æ!…B„ ÀeYH¥Rá{Pä»Pä¦I–e…)éDF²`Á¼óÎ;X·n®¿þz<÷Üs¸þúë“!„¤\¥SDA~>–,^„P8Œ—_} K-ÆÚÕ«ùZ5Úåß¶övØz{a³õ‚ã8´µ·£¯¯oÈ|þO+œŒ™™ Ï©··èèèHèv£QVVƒÁƒÁìP&-r÷Ô/~ñ ,Y²K–,‰Û¶Ün7< PPP€{ï½wÔeþô§?ÁétÂétâÞ{ï…T*3Q¹ûóÀƒ¦›L&dee¥Ì?­­A´´ðp¹>K?þ$9$9**n4¿ÕzVëIð¼<ïCuõèÏ]¢°lRi2YC²CI ‘ UUU1[çñãÇqüøqôôô`ÅŠ  öå—_ÆË/¿Œ/}éKÂg7:::ÐÑÑŸþô§Øºu+vîÜ™í’ä¸té.]º„Ç{,Ù¡L+sæÌÕjEwww²C™´e˖᪫®Â#<‚;wN»cÆç>÷9,Y²+V¬@uuu²ÃIˆ÷Þ{ï½÷ŒF#ª««§Í~766¢±±/¿ü2¶lÙ‚-[¶$;$’F~ûÛß ï¡©$ò[ï“O>IÊöï»ï>9r‡Ư~õ+ñÊùóçQSSƒ}ûö! ã·–••aÿþýØ¿?€Ïën·r¹|\ã“驲²ÀÚµkqÓM7á™gžÁM7Ý”ì°!„ #ê1- !'; ÌÇÇ'N¢° …ù#ÆâõzÑÒÚ†Ö¶6œ­¯‡Çã×ëE0„ãÓ‹ú•^ôõÙaíéAéìYÈœ 2Tuu5/^Œ%K– ///®ÛŠ´Æ©Ñét˜3gΨË Š‹‹¡P(F—) Áív£¡¡fÐcf³%%%cn3Qd²ýýŸ%Ο×@*UB*UÂl.48Ü Ž»„@Àƒ@@:äñdaY2…‚{æi@"‘@"‘Äô}ÖÓÓƒææføý~X,–„¿‡9±X ‹Å‚’’Ìž=;!ÛU©TÂ]ëYYY)óÙ%ñ!•J'T¥M&G¥RÁn·';Œ˜Ðjµ°X,¦ï1C§Ó¡  `Úì{ss34 ôÚïp8 Ç©TŠœœœi³ß$6 ÚÛÛ“FÌI¥Ra|»dÈÏÏ^eee0ä÷hÏóÈÈÈþ­R©¢¢"|üñÇñ–Lieeex÷Ýw±víZÜzë­à8·Ýv[²Ã"„r…”k¯wùörsr“P(„‚ü|ä™ÍƒÆB¸Ü¾wàÌÙ³8s¶mííƒâ”s³R #Úëµ´¶âô'Ÿ`úµÐ¨ÕII®‘Écr¹r¹………ËåP(¨©©ÁªU«pß}÷%dŒ–ËÇc’ÉdÐét¨ø´äH*** •Jáñx••…ÌÌLÆçohhÇq°ÙlP«Õƒ+--ÅÕW_=æ6'¿ŸƒRùÙEVµZ –Õ€eÕÈÍ-4·ß .—'Ç10-ðùìðûíÐhò + ‘È'•ËÕ§³ € :]tº¢Qç—ËËP©ú'¼ÍHû¸@ Ç3èï—÷5X¸pá„·YŸÓé¶ãõzÁó¼Ð®&r¬‹T-I$¨Õj(•J(•JÈå#?Ï‘j¼X¾Ïššš ×ëát:‘———ð÷°ÉdÃ0ÈËËCIII¶i3‰!u>»$‚Á 0I¥R9eZ’]žtš®ÇŒHÒiºìû‰' V«¡×ë§Õ~{<Øl6!é4]ö›Ä†^¯õ&¾t%•JÞår‹Z­ÀgI'N7켇z½^ø·Z­†ÉdÂŒ3M'd¢fΜ)T<}á _€ßïÇwÞ™ì°!„\&e“NÀgc¬]½<Ï#Œ8ï‘>@[[;Z‡ï'rWË\t‡Ãp¹Ý°õö¢ ?ÐØ$½ˆD"( ddd`Á‚ÐëõÈÈÈ@MM ÔjuBN5„è‰ít:G¼[,¢©© ÝÝÝCÆsЬ+777.q&ǹàt¶¢¿¿ R©r9b’tr:ÛÐÑñÜîN®3é ‘“ÇãAOO<Ün7zzzõ5˜lÒÉï÷Ãf³ Ûéííúªû|>al™Ëû§çææÂh4 I\B!„B!$ OwÝu8ŽÃW¾ò•d‡E!äSQ·×KFÒ)²Íhî .ÈχËå’N‘5ÿaÙUXºd1–.^AVV²²²pÕUW%lû7ñ² Û!ÑÈÏÏǰnÝ:|õ«_…ßïÇ7¿ùÍd‡E!ã¨tJuK/F¾Å‚¹••ðsœp÷~ñŒBäæä@qÅû,ËBÌ0 ¦z$Y ƒPUb·Ûáõz‡¯§§p»ÝÃVü•””Àfã’y¶o"DZ\?þøãÈÉÉAQQQB¿G0 #Œ_LH*1›Íxçw°~ýz|ë[ßÇqø×ý×d‡E!ÓÞJ:-‚×çƒ×ë…Óé‚F£F£†\&~¤_Þ>¥;EI ¸¼çx__ŸPur%«ÕгgÏ[å $Òí>§v{#ìöFtupeEåÄÓÁ/îËjÁ²J:S8FWW—Ð’N„ĆZ­†Z­†ÑhDvv6L&%äÔ©SP«Õ˜9s&-Z„+V$;¤ I§JnBI–+“N³gÏÆ¬Y³’VÌDnb™9sfB¿G¼÷Þ{”t")+;;û÷ïdž pÿý÷Ãï÷ã?þã?’!„Lk)=¦Óx¸Ýî±}är¨”Êq›8œß?ìü©¾?‘±¬\.—ÐŽ\.œN'xž‡F£Z­†D2erˆÓ†ÅbªÎ;7ì¢îîn|ôÑGxýõׇ<&‹!‹±yófÈd²D„_|¾^Ç9ÁqN¼ÿþâ¶½þþf°¬,«ŽÛ6ÆC©T Ÿ_£Ñ8èï§N©S§b¶-–e¡Ñh››+l'332™ ,ËB.— íG’ôN8=zÇÁÿé1³··½½½(**‚^¯O»¤&!„B!„éÁh4¢¦¦7nÄ<¿ßý(~×!„Œ.ê1ÒA$ÎP(”´q¨bÍëõÂáp ±±Z­uuu¾EÆ`‰DP(ŸVxi——–e©ïrЉDBRÀápÀëõ‚çùA Ä>ø---ƒ*õ"233‘••™L–rIÇ@À¯×K—Ž~štÿøIïod² H$©›T˼yó •J!•J¡T*!•J…Ïg¬ïÌÎÎh4šAÛŒ$(†Ž,ËB­VC*•¢¢¢]]]èêêÔæ±§§2™Œ’N„´tôèQ444Àf³áðáÃèììÄñãÇ£ZV£Ñ`þüùX°`Aœ£$„BF×ÞÞŽöövØl6Ô××Ãétâ±Ç‹jY…B¥R‰[o½5ÎQ’\z½{÷îÅ5×\ƒÿøÇðûýxøá‡“!„LKS¦Ò)"]⌖×ëEoo/Μ9#T¼þúëP©TP©TÉdp¹\p¹\Ðjµ0›Í0›ÍÐjµÐh4”tlXè€ IDATJ‘¤S{{;¼^/À¤SWWxž²¬Á`À¬Y³R²Ê‰ç}ðzí¸xqü~û„’N€"™L±X>öì)jîܹ#>뤓Éd‚ÉdŠjÞHRJ­VC£Ñ@, ÉÏ«ÕJ 'BHÚ:zô(ÑÓÓƒC‡áرcÂXŠc1›Íøâ¿HI'B!I×ÞÞŽ£G¢§§‡MMMøä“O¢ZÖh4"33“’NdZÐétxë­·°eËüüç?‡ßïÇc=&ÜxI!$1¦\Òiªzûí·QPP€‚‚<ôÐCB«¬Ëõõõ w@=õÔSp:p:Ðh4(..FQQÖ­[—¤= #ÉÊÊBEEN:…îînœ9s .DCCΟ?“'O»œJ¥Â‚ °mÛ¶Gþþv´´œ@Ó„–Ÿ3çvhµÐh R¦MÞTƲ, …ÄvDOO,K##„‰³Ûíp»Ýà8½½½ãZ–çyô÷÷Ç)2B!$z>Ÿv»Çã8ˆú¼æv»ÝTFÈT§V«±gÏlß¾¿üå/ÁqüqJ<BHEÝ^’Nɵ|ùr,_¾Ë–-qžH%Ôœ9s°aÃaú¾}ûàv»ÑÕÕ•ˆPÉ8eeeaΜ9Æo:}ú4L&Þyç¼ñÆ#.wë­·¢´´&Q¡ÆœD¢€D¢ÀŒÐßß»ýxÞƒ@Àƒ¢¢ÍÉoÚQ«Õ¸qÇ ÛÚ‘B!„BIEJ¥»wïÆŽ;ðÄO€ã8üîw¿Ã0ÉB¦…Ô†ŒˆeÙ Ÿ% XS˜R©DVV†ËåBgg':„æææa/ö+ ( Ìž=ƒ! OŽH40®ÉT ¹Ü…€ŒŒ™à8Ž‹w÷‘ß߇ã"œÎÈåÈå¨T9 Û~ª ‡Ã…Bƒ¦I¥R:~B!„BI+r¹¯¼ò n¼ñF<õÔSà8O?ýtÌ[ÜBŠ’NiB*•NøÄHI§Ô›‹a¸Ýnttt µµýýýÃŽã¤P( ×ë1kÖ¬´,g #Enîh4yP«ó ‰áp\„HÄ@$JÜ{Õï·ÃḈ¶¶CÈȘ‰ŒŒ™Ó>éte¢s2ÇB!„B!$YX–ÅK/½„[n¹Ï>û,8ŽÃ³Ï> ©TšìÐ!dJ£1I2±X ±XŒòòrtwwãÂ… #ÎË0 –,Y‚7¦|"Q©Ì@ffŒÆJal¦“'‡X,˪a6Ü*2ö‡Cèèøv{üþ1::;¢³ó(  B$b=}Œïïï‡Íf4-77j5©EIO÷ß?t:ººº°k×.¬X±+V¬HvX„BȸDÎ_Ï>û,ªªªPUU…ûï¿?Ùa’¤R)ž{î9Ü~ûíøË_þŽãðÿ÷CÆI'„;c&$’YxžþNÆ' ! QÅÑ4©ñù|Q/£ÕjÑ××7¤½ÙåJKK‘ ¥R9®u'‡ …ÙÙ‹!“é “é …   ŽŸç9á±P(4äññØž »»>_üþ>Øíp¹:ø‡<Ï‘ù¯Ü®X€XÌ öÆZ K¼¶5šP(„ÞÞ^´¶¶Š'##R©Tˆ)r<‹åû/2nÔÀëHø{;RQà÷û¶}ŸÏ'<¯ÉØo’¡P<σçyzÍ$ ƒçŽåéú¼Ó1ƒiýŽWä;ÂtÛo¿ß/|n§ë{LNä»]äs3•ÞC‘ß™‰þÁqœð¼F¶+“ÉÆœ€ï•Ó I$‰D‚gžy,Ëâü#þñÿýë_!—Ë“!„LIãJ:Q‹¥‰‰\`¢¤ÓÔ©Œ\ ðz½Q/«ÑhÀ²ì°ã8EÌœ9999P*•ãZwrH —둽X˜ ! ò#$x„BÃ'¥Æ# B$âpèî>þþfô÷7Áïïe<Ï “tâÁ0H$ñIñ >Ó$"ÉuzÍ'rá>’XN×çŽHÚy"Y"7eD.ÖN—ý¾2é4]ö›ÄN²¾Û%Bäwf¢?~¿_øI:T%rù¼ƒGû­KH¼1 ƒ?üá`YO>ù$¶nÝŠW_}J¥2Ù¡BÈ”#.–÷õZÑk³J5ä 5Ο?Ç·ÛÙ³gC"‘Pòiü~?l6l6²²²™™ ƒÁ¯×‹ÎÎNtttŒº|ww7ºººpèÐ!,Z´‹-BKK z{{a³Ù ¡Õj¡Ñh0sæL¡UÛå:„þþ~ØívìÚµk̘ËÊÊ`0`0&µïñð‡?ü¿ÿýïñÞ{ï šþÍo~ßøÆ7PPP€óçÏãܹsغu+~ðƒàHHl>ø |ðAjEI!„B!„DI.—C&“Án·';2 „Ãa|ík_ï~õ+¬\¹¯¿þ:µ”'„Li^¯^¯N§sÐôn«]ÝÖ¨ÖQ5§bÈ4FŸ×¯Ç¸Ø|›/à‹w}}ìJ'“É$œø;;;£ ‚ ‡¡R©`2™&\ºëv»Q__‡Ãþþ~0 #ü±Z­°Z­¸páX–˲ÈÍÍ…J¥‚J¥ÚV‘ø‹ÅBEˆ^¯GFF®¾úêQ— …Bèèè@GGLjë5›Í0›ÍP©Tñ=.ìöúûCðû?Kµ¶ÃH!K½hÐü.W;ÜîöO«°XFî"xÞ‹ÞÞºO~ãOú±¬ry&ŠLH¥ƒŸc±8±8‰Ä6ÂÒ“IJ_nöìÙqÙÖp¼^/|>¬ÖÏN2 à ##CÚªŠD"0 ƒÜÜܘÅÐÚÚŠ¶¶6¸Ýn¡¨¨(fëŽFmm-jkk±téRddd@¯×'d»‡‡555˜7oæÍ›7¡u´µµ¡­­ íííQ-£P( T*±qãF At¬¦¦r¹r¹ÕÕÕÉgZ¨¯¯Ç¹sçPTT“ɓɔì&$ÇŒtöôÓO ç‹Å’ìp¢©© MMMP©TÈËË›6ûÝÓӛ͆ÚÚZ”——£¢bèÜT7Ùó3Ã0t£ç$D¾Û­X±Z­Z­6Ù!ÅÌk¯½&|_­¬¬LØv»»»ÑÐЀ††Ü|óÍF®t²Z­hhhÀùóç Œ››› “É$¬ƒd‰Døå/ ™L†_üâظq#Þxã)u¬ „d3éd0 •J!—Ë“Òòi*ˆT „B¡ U´´´ C,Ãd2 %±X ¿ß¿ßÞÞ^ð<@ €ÆÆF'Ó––(•Ê´JX¤#±X ™LŽã`2™PZZ:f•Õ±cÇpúôiœ>}zĤÓòåË1gÎTVV¦UÙ÷ùó44ð°Û?KxÖÔtA*UeUXºô»ƒæom=ˆ¶¶ƒà877Ö®ýî•«–ÃqÇ%œ?wÒI§+‚N7ZmÁˆI'™,™Œ‡Bq*êõŽGmm-NŸ>=hÚ-·Ü—m]©§§èìì„^¯‡H$00v˜ÉdBvvö¤“D"D"ÁòåËcÇþýû±ÿ~´··cûöíØ¾}{ÌÖÇçÏŸÇõ×_ÒÒR”––&d»ÍÍÍhjjBMM V¯^{ï½7êe»»»aµZñÌ3ÏLø¢Ôš5këÖ­›ÐòdbZZZ`4‘™™‰ï|ç;ÉgZøóŸÿ »ÝŽuëÖ Uãéh2ÇŒ©àé§ŸFUU¶oß.¿¦ºW_}¯¾ú*Ìf3Ö¬Y3möûôéÓ8uêZZZ°yófÜqÇÉ)j±:?'ü&œ©$òÝn×®](**ÂŒ3’RÌ|ðÁÂ÷Õ{î¹'aÛ=zô(^|ñE444àþûï0pwópNœ8çŸ^H:cùòåX´h‘°BRÁÏþsÈd2üä'?Áúõëñæ›o&ìDB™êÆL:H$h4dffB*•¹IF)_óx<‰DÂ…ÝñèëëCEE*++G½£ÉívÃívãã?FOO¬V+Z[[Q\\ŒÌÌÌÉì C¤¸ëK­V£¸¸xÔejjjàõzÁóüˆ ¥•+W¢¤¤dÌu¥Ÿ/‡ƒƒDòYÒI©T‚eÕ`Y5ŒÆƒæw¹ÎÁn×@*ãÂC‰HäÏ÷@¡ann Ö #cæˆóÈåÈå¨TÝã^4ÚÚÚ†¼ö999qÙÖ•úúúÀó<Ün7”J¥p|ªªªñ®ÐÈ9 –ïdzgÏB«ÕÂn·Ãd2%ü½n0À0 L&,K¶ù¸oz½~\Ûõz½¸xñ"þþ÷¿ƒã¸qÝ9/Eª—ÓíØ’î”J%4 222è¹O£Ñ–ea0`6›ÓöyŸÌ1cªP«ÕÈÉÉ™6ûn2™ T*¡Õj§Õ~÷öö¢½½‰™™™iµß±:?—––¦Õ~§šÈw»œœäççO©ç2ò;Ó`0$t¿ÚÛÛ…$S$‰§Ó醷»»{Ðï…B!œƒGJT’,?þñ!“Éðƒük×®ÅÛo¿ £Ñ˜ì°!$í™=:wî–-[FãÕŒS(‚ÕjªŒFã„N`Ë–-Cuuõ˜%ô‘ ¨M›6M4d’mmmhmmÅ+¯¼2â<‘qµ6lØÀÈ’G&Ë€V;€ çŠÙzE"jµ*U.fÌØ€îîèîþ.Wärè §©*’~÷ÝwM/((@aaá´iß“®žxâ ìÞ½»wïžÔ9yß¾}€ÿ÷Uh„BÈ´Ëós~~>V®\Ãè!„Œä€L&Ãw¿û]¬Y³{÷îEvvv²Ã"„´6fÒÉáp ##ÙÙًŇɈmJ‹ÅÐét‡Ãhnn¦;{<šššpìØ±Qçóûýp8ƒƒª¨¦*&ÀRƒB¡É´òƒa$`) ÖB.×C.7@©4 iŸ7ÝX­Vttt _ 77ÙÙÙÈÊÊJRdd,‘1.vïÞsçÎMz}t !„2yt~&„ôwÿý÷ƒeYÜwß}X½z5öíÛ³Ùœì°!$m™têïï‡ÉdB^^žpÑ›çù¸6U0 N•J…S§NQ™.’Nï¿ÿþ¨óùý~ð<žç§EKKµ:juÞ$×òYëJ†‘B"‘£¨h3¤R%$PÒÉjE{{;.^¼8hzNNL&£R˜ÍfC]]vïÞ `ò¥è¢!„2yñ8?Ó9šBï[ßúd2¾öµ¯aÕªU¨©©A~~~²Ã"„´4æ•l¿ß` wp(cnr¥p8 †aÀ²,|>%즱ÈÇGy]]]p¹†¶“Éd`Y¹¹¹°Ùl°Ùl8vìòóó§Ä—nXV–]ÅŸJ•±˜E0ÈA§+‚N7û÷ #D"‡BAc™½Õ»»»qèСAÓ#-?—,Y’¤ÈH4l6žþyüò—¿ŒÙ…¨™3§_kIB!$–âu~6 1Y!„ñùêW¿ –eq÷ÝwcåÊ•¨©©AQQQ²Ã"„´UùÝm59ôܨ¯¯tuuÁívy\$!??%%%`¡P6› ---#Òšn ×A,–A,fc¶N‰D¹Ü€¬¬*Èd`YuÌÖ=Utuu¡££ƒ¦ äää /o²fär---B’¯©© ~¿~¿Á` … …•••ðz½Q·«=vì.^¼Ç³8çÌ™³u%S´Ï·ÅbA~~þ´¨%„Tíñº««+mnvŒ×ù9ÛÓù–2]|ùË_†L&ÃwÜ!T<Ñ {„2>Q¤Ä !“syÒi$ùùùX¶l¬V+l6€xS¡Ê ÖÅ|‰‰r¹>æëž*ºººÐÞÞŽ–––AÓõz=rssQXX˜¤È¦¦––ÔÖÖ¢¶¶555p8p8ðûý0 0 ¸ù曑••õE¥£GââÅ‹Ã&¬'ª¢¢"fëJ¦hŸïeË–!''‡.‚BH’D{¼ŽTþ§ƒxŸM&SÌÖ+t¾%„L'·ß~;X–Åm·Ý†U«Vaß¾}(++KvX„’6¨Ò‰8s8èïïÇÓO?=ê|7ÜpæÏŸyóæ¡··ííí‰D8zô( ¦ÍØN$v:;;ÑÑÑ?üpÐôŒŒ ddd`íÚµ‰D‰D#¬DëܹsسgöìÙƒ7ß|sÄùÚÛÛÑÞÞŽïÿû0 Ðë£K–¾ð £&¬Ç#//f³›6mŠÉú’a"Ïwnn.rssqàÀ°,›64 !$Mäx­Óé Õj¤þñ:?§Êw3:ßB¦³›o¾R©·Ür‹xª¬¬LvX„’¨Ò)ÅFèõzÓö4‡ñþûïã­·ÞÇqÃÎSçŸþéŸÀ0 €¶g‹³gÏF}}=Z[[qêÔ)TWW'2|’ÆŽ?Žööv´µµ š^XXˆ’’¡#™œO>ùµµµ¸óÎ;Áq܈Ÿóáôöö¢··7ªyǵÕjÜtÓMøò—¿œ–¯ÿdžïH‹ÉGy«V­ÂÊ•+ã)!„Lo“9^÷÷÷£¿¿:N_8UMÕó3o !dÀ 7Ü€—^z ;wîÄêÕ«±wï^ÌŸ??ÙaBHÊ‹êm¤Ò‰þLîÏDˆD"ˆÅb°,›?@Èø466¢µµUh•w%©TŠ3fàþᆼ¾Z­‹À@µTkkkÜãn‚A€ ==µp8.ÂïïKvH“æt:ÑÑÑööv8aº\.‡N§CII CÊÜA›ÎŽ;†½{÷⥗^ÇqQÏ4“­8‹ÅJ¥Øµk–.] £ÑÃè#VÏwSSúúÒÿ³N!©*VÇkžçSvl'¯×‹ÞÞÞ)y~¦ó-!„ ¶mÛ6¼üòËp»ÝX»v->úè£d‡D!)*R\¤õ%œÒSCCÚÚÚÐÓÓ3ì㑤Óòåˇ$´Z-òòòPÒ)^B!ç‚ÕzMd²ôÊår [á$“É„¤µÔ‹cÇŽaß¾}ؽ{wÜÏ‘“½èÆ0ŒpQkÆŒ)qQk¼bõ|_¸p.‚BHÅêxI§©x~¦ó-!„ µyóf¼þúëØ¶mÖ¯_={ö`ùòåÉ‹BRÖ´Ó©­½míí(/-…LF}¥Iâ<÷Üsðz½#>~çw¢¤¤dØÁ‚- 4 ž~úi¡ZêŸÿùŸ)Y0 ^¯ çÏûMMo¡©é-adfV 3³:]qÌ·û›ßü&fó/Z´ .ññööv=ztÈôH«š'Ÿ|r\±@UUªªª ÑhƽìTT__ºº:ÜsÏ=&S†D"óÆ©T:á [ùùùعs'vî܉«®ºjBëH¦X?ß¡P(­¿ÓBHªJÆù1YÚÚÚpúôéI%ÆRíüLç[BÝÚµkñÆoàÚk¯Å¦M›°{÷n¬Zµ*ÙaBHJŠºÒ)žü~?ü~?ú/k-•JµJ5j"Én·£ùâE°,‹œlr²³'.!c ‡Ãƒày@`Èãjµjµ%%%Ð뇯¬‰T¦h4„B!áŽJ¥R …Bï]˜2<+|¾^ø|}°ÛÑßß$$€0Jâ‘èy½^ÔÖÖbÏž=bSß°«Õjäää ¸x䪙L™LµZ —Ë·ÛÞÞ^ˆD"ú7O7ìöFØíèê:àÊÊMº“DÏãñà“O>Á«¯¾³óâܹs£J:…Ãa¨’N"‘¹¹¹˜;w.î¾ûî´MVÇãù¦‹`„{ñ8^Ï™3YYY1YW¼H$áO4I§T=?Óù–B¢·lÙ2ìÝ»7nĶmÛð׿þ×\sM²Ã"„”’2íõD"ÿþà…‹õјY\Œí[·`ûÖ-£Æ' ÜUö«ÇÇœŠ Ì)/Çnû'ˆÅbˆÅâXí™æÂá0B¡†ßïG__ß°ïK‰D‚ââb¬^½.\s½%%%hllDWW^{í5”••¡¬¬,»S--tuÐߟ¸¤Žßß¿ßÇÇ  55ß‹jY™Ì‰ÄŠžžæ+¦óÉP(:'×@,±Ñ××÷ÿÙ»óø6ê;ü/]£[–äû¾ãà›„ä&„aI„¶--ÛݲtÛGéãÛÒþZh·-lKmÝå† )°Ip 9HI 9‰“ØÆŽ|’eɺ‘ôûÃÌÔŽ/Ù–-É~?yäA"fÞ#ç33ïÏçýAw÷è±X,–ˆn-j4át:ù+á»áêîî†ÍfƒËå‚ÑhŒèºÃÁÍÉ`4ÑÞÞ¥R9ê²üãqâÄ ˜L¦ˆmÅŠÐh4cî·@ @UUòóóáp8ÐÜÜ ƒÁ€îîn0Ì@ÙØ¬¬,äåå!77·ß~;t:t:_Z1EëóžN.— v» ÃD-†¹¦··>Ÿ}}}èììŒÛϽ­­?ÿ[,–¸Ý©p8èîîž3ûn4ár¹`³Ùb~¿gãùz,ííí0€{î¹÷Þ{/þô§?Åmû<Û¾?îÚ®»»r¹|VÝóû|>8ôõõÍègÛÙÙ »Ýhnn€QKowttÀ6¨Š W±cð:‰w .ÄáDZ~ýzÜ~ûíøóŸÿŒ[o½5ÚaBḦ‰òzR†@­FeE9:»ºÑÕÕÖû–-]‚ììñËpÏýç! á‹FÔìÛ‡‚ü|äçCCó”ðù|…Bèëë5Y+ ÐÔÔ•J5îz/^¼‹Å‚¾¾>8pgΜ‰‰I†Çc6ÐׄÇ3sI§@À–õ¢³Ó0á÷vuõC.7À`ú^±8‘(‰¤gÒq]½Î©p:c®¯§§‡)v»ƒ Ã@(B(Ž8oÔd 477Ãn·cÿþýüìL9uê|>öïßS§NùûõÙgŸ¡­­-¢Ûß³g´Z-´Zí¨Ë˜Íf˜Ífø|>X,Øl6ƒAøý~>iæóù`4a·Û!“É⾇q´>ïéÔÜÜŒžž( <ýôÓQ‰a®ùüóÏa6›qüøq477ãøñãÑiR, ¬V+àäÉ“QŽ&:êëë±wï^\¸p!ڡ̈úúz477Ãl6Ãn·Çô~ÏÆóõXz{{ù6ù³Ï>ƒ×ëÅ矷íólûþ¸k»½{÷B«ÕŽZÎ<™ÍfÔ××óÇßLéììÄÅ‹Ï=÷€Ê#éêêâ—€ÖÖV×@ƒ_'$ÞUWWã£>ºuëpçwâÍ7ßÄwÞí°!$&ÄÄH'‰D†apï=wãð‘£8Üßç=õu:-tZnûÊ-üû˜ñ…B@(/-…\.‡\&ÃÙsçqÅÐ mÂ|õÎÃ0Ž1/!áJOO‡X,vLråëÖ­ãÜÆétò½ûúúø2} øâ‹/  •J!ù²´drr2Ôj5T*Õ¨=ÎfšFâ„BnC@4½7CV§V§W&‘hIT«¡W©®ÕB(|ù -ó  ÑÞÌUTTLþÍÄÍ0¹Ýnx<=zÐÒÒÖû¸¹™ ü³Ï>›ô„áƒI$”——£¼¼z½>¬÷ ”ˆe°lÙ²)o?^DóóÏàã­¿¿ŸOŒG*•"992™,"qBâƒÅbAKK š››ÃnŸD"Äb1Š‹‹§½êÄTÅòùzº1 •J…Õ«WG;”I‹Åïo²ílJJ <OÌÿÎBf‡²²2=zk×®ÅÝwßW_}Û¶m‹vX„u11§·þÊòr4|Ñ…B1vÒI«CA~’“’ø’fc®@!0 ƒêÊJ,¸¶zá¿pÅÐŒû7mܵJfŒy¡÷@8##ƒŸi0FøçþgˆÅâ1Ë<˜L&´¶¶¢µµuuu°X,°X,FJ h4( ( ”••!==ÿ Üp··ÃïpLëvšFŒF„jk'üÞâôt§§ãÚÜ\HÄbˆGøNb1"¾˜Áž„±Œ+¯ÉÄÇ‘#GpäÈtvvbãÆ“.K`µZa±Xø‘RM:Ýxã(++Ciié¨Ëþ×ýü~Øe`G#‘Hpíµ×âî»ïFaaá¸ËðÁ())AII |ðÁ)m;žDëóÇàã­¨®h~ IDAT¥¥%ì‡a\©¥²²2<ôÐC‰…Œí7Þ@gg'–-[†… báÂ…ÑiR¸²]{÷îÅ’%KæÜñó‡?ü%%%¸õÖ[±fÍšh‡3aƒGE( »}‹Å`eeeX·nÖ­[7ÍQN^,Ÿ¯§C}}=êëëñÉ'Ÿ`Ù²eqß6Çâ÷7Ùv699ýýýƒ¸õÖ[‘ŸŸ¼¼¼)ÅK¢uMÈU9¸té¿ÝÑ:;ž={»víâG5åääðm0·Bf“’’>ñ´cÇø|>ÜÿýÑ‹B¢*f’NÀÀÃô%‹!=- ?ýÅc#.#•J±lÉõ¸s˰,æšbíÍÿŧ§Na^q1úÎwÐÜÒCs3žþ㟰nÍj¬‹ñÞi\âá{ßûRRR’’‚_þò—Ñ‹|I,C&“!--mÄŸßwß}€k®¹fÄŸ{<œ9s§OŸÆ‡~`èïB¡²¼×ëåçŽêèèà__±bª««Q]]”””)íÓT¸D"8ƒAøÕóžÞP6¿Øç3˜œa “H°ª¬ ­&ZL&˜,(*Â-×]7æúb1X±v¯7Ò¡Ç%‰DÂÏK)—/_†F£ÕjEJJʤÖýÖ[oaï޽ػw/LtrN:…‚‚‚1·/‹§ô@†øþûïóó;„ƒëE­×ë#úÙǺh}Þã™Êñf·ÛÑÕÕ‰D2§¾ËhJJJÃ0ÐëõÈÈÈósÏÌÌ„L&ƒL&‹¹@@n· Óéæäñ£R©––Wû~ñâEÔÖÖâ›ßü&|>ß„Êaq×zƒ ¦÷;VÏ×ÓÅétÂb±@(Ί¶9Ö¾¿©´³/^ä;I¥¥¥!;;;Á¢uMØÙÙÉ'™¸$^BBˆËF¾Ã%Èår¾ Ž•ª„DZQQþú׿bíÚµøú׿ŸÏ‡o}ë[Ñ‹B¢&ìòz3! !!!ùyB¤¦¦ÂépÀátY¦ª²™ÉF®<òzþ¿pÁ„M&¼³{74$h4p»=ðûý…B‘Ü¥ˆ²Z­0 |¹C*[¸¤ÓH¯s¥QF²,?— 7_Ïd¿ßÖÖV°,ˉ¥’{3I$B( 27Z¥:¥ù))pz«jÐO‡®®.tvvâwÞA]]Ý”jÛ›L&8¯js®–ŸŸîînôôL|ޝ„„TTT ¢¢yyy£Þ¨“¿ãÎ]ÞI$}§ãóŽÔñæñxÆœ<Þjµò›“““!‹!¡ÑØ3Ân·Ãï÷Ãï÷G;2 œ>}ü1>ùäø|¾I?Ô·Ùl“:Î$jãWIa2"ùýEª¯J(‚Óé„Óé˲P*•P*•ÔÖB¦$//O<=øàƒðz½øîw¿í°!$*bj¤h¨×#5%=Àð¤SE23Ê—M´îôu ®EÓš®\Á;ÿ·+o¸+oX·Û ¿Ÿù$ŽÅb¡¤S ‹Å#N¦Ê%£FK:x<ìß¿6›mÌ‘áhiiAGGÄb1***æl2¡@‰H„ùùH×éæm Ñf69ŸÖt …BèëëƒÅbA__L&X–ånr£ˆ’““¡×ë¡×ë¡Õjc:m8}ú4Þ~ûmSk«ŒFã¸I§¼¼Æ·©$"ùýEª/é áp8`4áv»‘šš †a¨­%„LYVVŽ=ŠuëÖᡇ‚ÏçÃ÷¿ÿýh‡E!3.æ’N,Ë‚eY|ÿ_¿‹=ïÕ`÷{5ƒP©zݵõN˜`OÁØ7oÚÈ÷b:zìcüí³Ïð›ßý©É)ü|N±šÈ1øüóϱÿþh‡BFÁ•:¸Zqq1ÊËËÁ0̰Ÿ±,‹Ã‡ãÀhkk‹X,ÜïÑc=†¥K—bÉ’%XµjUÄÖK ä&%ášÌLd&&"S¯Ç+}©D¥L†…10€Ãá@SSššš`2™F]Ž;¯9~Ä[jj* QPP¥R9#ñÆ‹={öà­·ÞÂÎ;#rîV«Õ#&Žûío‹_|f³yÌï’#‰PUU…ÊÊJ<ùä“ü(6ž•+Wâܹs°Ùla%¦óóŽäñ¦P(””4ä5¯×‹wß}ï¼óÞyçþu†aø¹\膕øP__ºº:~Þ“©ž3RSScþ€ÚÇø–””»Ý¡P8n`z¾¿H¶³‰‰‰HNNÆ‚ †t¾ãÊÕßyçèîîFWW€ÒJ¥¯¾ú* cz>1BHìKOOÇG}„o¼?øÁàõzñÿþßÿ‹vX„2£ÂN:Í´„„dfd dÞ<\®«ãÿ.—B]Ww÷—å«<†‚hkï€ÃáD ˲ðù|ÈÊÌD0DjJ Ž}üÉ”'M,ËÂf³Án·ãĉhllœÀbëMIIsn0`à!ÆÊ•+Á0 öïß³Ù ³Ù »Ý‘H±X ­VËT«®®F~~>òóó¡P( Çl³“är9’’’›› N•Ï{:Ž7n^šÁŽ=ŠÏ>û —/_òz @cc#‚Á î¼óN$$$@«ÕF$BHä¹ÝnÔÖÖbß¾}"Ó¡---mÄŽM±„ÚÇø&‹‘ •J‡Ã1£ßßt´³YYYP«ÕCîÏêêêpâÄ twwÃn·ó¯s[Þ~ûmÜtÓMÈÈÈà+BÈd¤¤¤àÈ‘#X¿~=~üãÃëõâç?ÿy´Ã"„³WQ  233P2¯øË¤S&/\c&žB¡:»º¾,_eÀh4Ááp Àϲù|ÈÊÌ@Zj ®­ªÂ¡#!ÄÜœN~¿‹8tè%b˜H$±$ƒV«µÔÄt'‚Á ÚÛÛÑÙÙ‰;î¸z½~Ö%”2”2Rc°þ?WÚ£¡¡^¯gÂëàÎ]V«åååS*2[°, —Ë…½{÷ÂårEl„jrrò¸=ɱbÅ TWW£¯¯_|ñœN'†T*Ezz:ŠŠŠPTT„;v )) ‰‰‰‰q®á’N^¯óçÏÊç=Ç›J¥Bjjê×>úè#œ:u —.]ò:—tjllDss3òòò(éDH s¹\¸xñ"öîݱö)^’NÔ>Æ/‘H„ììlÌ›76›mF¿¿éhg5 233‡ýÞÔÕÕa÷îÝü'ŽÏçƒÏçÃÛo¿ŒŒ ¾B%!S‘˜˜ˆC‡aãÆøÅ/~¯×‹_ÿú×Ñ‹BfDXWQј?ˆeYTWV¢¢¬ }}}XyÃ2¬X¾lÔò:õ _àãã'ðññãhïèy¥!_î‹Ïçƒ@ €D"Æ5%%Ðh4p8PE¹tÅsÏ=£Ñˆžž¾ÜZ¬–ü#CI$’a ÂÂBäææ"33sÈë>Ÿ^¯{öì1‘¨R©0oÞ<Ì›7×_=Ôj5T*^zé%455¡±±Û·oGrr2’’’pìØ1477£¹¹yXÍÿ@ €@ €_ÿúר¼y3n¾ùæqKˆ‘È0èêê6O—N§ƒN§Cee%d2d2€y^<Î;«ÕÊÏù20rs çtZZÚ°±êøñ㨭­Emm-> ›ÍÆÏKÁõ”½ûî»Ñßß?¡„ú©S§pìØ±°Ê÷LÄÖ­[G{m0µZ µZgŸ}6¢Û'#ãæÅ‹Öç=Ç[ii)¶nÝ:䵿üå/£Î…Â]ÔÔÔ`Æ 4çÉ—Â=ÇÔÖÖNxP2½ÚÚÚÐÖÖ†;wÂ`0À`0Œúý-]ºK—.vÈa{þùçñ׿þ5¢çŒpÛ§h£ö1¾I¥Rh4üêW¿šÑíÎT;kµZÑÐЀcÇŽú>‹Å‚††|üñÇ())AIIIÄbËHçÄööv°,‹¢¢"”——£¼¼Á`žGt:<ˆ›nº ¿ùÍoàõzñûßÿ>ÚaBÈ´‹¹9‰D‰DøåÏÿ?°,;æº?{ìq¸Ýn¸Üîa?S©TP)•Ðhê9sûÂýßívC(@¥TFýîܹs°Ûí°ÙlQƒLœH$V^¯¼¼)))ÖmiiÁ_|1lä‹^¯‡N§Ã£>:bmôêêj8N466¢©© ™™™¨ªªBUU\.\.þð‡? »»ÝÝÝCÞÛÓÓƒ³g϶lÙ‰]&ã°X,¸råÊ×ÊÊÊ““ƒœœœaËK¥R$$$`ãÆhmmEKKËQMMMJ¥1tjhhÀ¾}û°oß¾1ç ëììDgg'~ò“Ÿ@©TB¡P`Á‚a=¾xñ"víÚ±˜333‘‘‘7ÎùQdd¸Ho‹-ÂÊ•+±qãÆ!¯3 ‘H4æ{% „BaÄb‰G“9Çp%’|>_L–Sž+¸r]=ôßf4ƒ¿¿ôôt¤§§Ï`¤S³k×®QÈEí™ fª‹Å‰D …c^o …BH$’qÛ䩚È9‘ë` ŒÏÈÈk®KBHlÐh4Ø¿?n¹å<õÔSðù|xöÙg©m'„ÌjatŠn»~¿Ü‘`pHÒI  3#…ù(,(ö·Û ·Çƒ¤¤$Èò¨'œ`Á‚ü¨†«q= b!N2²«/F+gçt:a4‡¼&“ÉPTT„ŠŠŠQk£såUL&Ó‰~%  Ö¬YƒË—/ãòåËhiiò~“É„K—.á¶Ûn£¹f˲Ë©©©a•ÈQ*•HKK’tòz½1[bÓh4Âd2ᥗ^B]]šššÂ~/wÓlµZÃ*Aèv»a±X&ë` ବ «W¯¦ß 2¢Ho\Gš-[¶àšk®v¬•——ƒeYtvv{¯@ €P(Dii)’““§K<šÊ9†K4µ¶¶yJfÆÅ‹qöìYœ;wMMM*+ìp8†•Še‹eÄëø‰¢ö‰Ì3ÕÎ2 ƒ””””” ›?‘£Ñh’’‚ÜÜ\$LcéY–…ÅbAkkë´ÅG‰<•J…÷ß·ÝvþøÇ?Âëõâ…^˜óÊ!³WLtâøýþq—Q«ÕÃN™‘×^‹eK®¶n·} ’’¡+b"™³`Áøýþ÷ùøñã|É={Fz 0VÒéê^°\Òiõêգλ48aa4át:ù¹È$ $ V¯^ †aàt:GL:Ùl6ˆD"z€1ÍFK:…SÞP¥R ›#ÌãñÄlÒÉd2¡¶¶Ï?ÿ<_?\Ü9Ïb±„•tòx<›a”——cË–-ôû@F©ã »eË$%%˜t)á ôºžëI§©œc‚Á ‚Á %¢¨¶¶ûöíÃÞ½{áp8&ô^»Ý»Ý>M‘E^___DF PûD抙jg¹¤Ó¼yóÆL:¥¦¦"''gX‹HšÊ9‘»f¦¤!ñG¡Pà½÷ÞÃwÜÿùŸÿÏçÃK/½4í#+ !$fÍ̘zúiØl6ôÛúÁ²¨TJ¨¾,ÙÄ=мº¤Š^¯Cb¢e¥×€eÙ˜x˜»páÂQÖÙÙ‰'NÄDrŒ  … ‡ôTmÂ÷‘F:}õ«_EIIɘÄ«Õj¤¦¦¢  MMMèééAss3òóóùe„B!–/_Ž¥K—¢»»}}}0›ÍFÊx½^\¼x1®æФ…9‰‰ŠÅHP(¦u[#͇ÇTÃ0Ã’N±ZÃý…^@MM jjj¦ŸÙl†Ëåw9nÔÇTpIÚššäååÑ9dT‘8Þ ¶oߎíÛ·cþüù#.óðã´´¥¥¥øÏÿüOƒA$%%aÓ¦MØ´i,X0¥8âU¤Î1KX“ðœ>}§OŸÆƒ>`nÌS* §”$¢ö‰Ì53ÕÎÀ­·ÞŠuëÖÁëõ¢±±‘/i—œœŒääd¼üòËÈÌÌ «*ÁdDêœØ××Gs§d2vïÞ¯~õ«xíµ×àóùðúë¯Xé†BâÙ¬9«ù|^(ärC!H$„B!x½^¾‡ëÕ¸‹<–eé¢Lwœ ¾i’J¥#öZáTƒeeeA­V»•J…ÔÔT455ÁétÂd2 I:q„B!–.]ŠóçÏ£¯¯oÈMMWW×´ÝLźt­ àôx3Í#Äb1¤RéDŠÏçƒX,÷¢’›8x0™LS£½½½0›Í¨©©ACCÔ×'‹Ãzè Õj‘ŸŸóçÏOj; ¨¨¨@EEòòò¦µ| ‰S9Þ¤R)d2¶mÛ†åË—#//oÔe…B!Š‹‹! ‘ÀwHKKCQQŠ‹‹§°ñ)Òç˜pGørêëëùù{{{át:ù¿'$$@«Õâž{î™r\³U}}=Ž?Ž?üÀÔN Ãð¿S±,??ÝÝÝ“š×‰Ú'2ÍT; $u•J%î½÷^FF°, ­V N‡ÌḬ̀îÇ&#’çD@@##‰c ÃàÏþ3¶mÛ†·Þz >Ÿo½õÖ°N§„Ï⢼^8¼^/„B!är9ÿPßëõŽù¾‘þ2¡P@`HR€a˜“#w™™™P*•ãnG©T"55àr¹†˜þ^^rÉ’%èëëÃçŸ>äç]]]sr”¤ëtH×éfd["‘hĤ“@ +étuy©TSI'³ÙŒºº:ÔÔÔ˜z;1‘¤S^^Þ¤“N‹/ÆÖ­[©9×TŽ7™LFƒ¯}íkÈÊÊBVVÖ¨Ë ñeVN'²²²æì|.‘>Çpe ÇõÑõõõèíí…ÉdB]]Ý¿çææ"''‡’Nc¨««Ã‰'¦ôz}X7‰‰‰˜7o€Ò cM¦žòòrX­V|üñÇüë(**w[ñ*;) *™ ª(÷†Öëõ(**ÂgŸ}Æ¿öùçŸ#''999c¾·§§gØœ\………ÃŽ›h1›Íxë­·ðì³ÏF¬}ذa Ç]nýúõX°`Ž?—˧Ó9î{D"ªªªPYY‰'Ÿ| …bÔ¹Ól¢ÇWZkÇŽذa6lØ€ÄÄÄ m“{°®×ë§z\›ŽsÌòåË‘=îrÜœQ·ÝvÛ¨Ë477ó¥kÉPn·.— <ð\.Wľ¿­[·bÓ¦M¸á†"²¾éòÛßþ/¾ø"Ìf3L&Ó¸ËSûDæºh´³ÀÀýØLŒœœŽsbNNª««#!$šD"^{í50 ƒ—_~·Þz+vïÞMׄY!vºÌç|>Ç!у"‘hXùƒÞÞ^ø|¾!#`Â*»f6›a·Ûár¹`2™ ‰påÊ•Q—·Z­‰DC¶ÕÓÓƒ¶¶¶1ß7U»ºÀNprÜHÈÓëÁˆÅ`Äb´N¢§ñ`‘‘Ý“˜œ›8ðåòZZZàr¹`6›¡Óé†Ür‹F£&“ .— b±˜_Æáp »»{Jû4Ü1Êõög¦péõzx<žqKîæýæ›oF{{;ÚÛÛÑÑÑÁÏßÇýªT*¨Õj¨Õj!''¹¹¹èîî†X,Ž«òÜù¥¯¯oZocÕjåÏwÑÚïpŽ7†aÀ0 222 ×ë¡×ëQYY ¥R‰îînô÷÷G%öxöé§ŸFínέ™<.ÛÚÚøó¿Åb‰ÙsAGG:::àr¹†ØŠH~Ó©¿¿ÙÙÙ¸ùæ›qòäIØl6þ<&‰  gUû4Wµ··Ãh4" Ί¶9š×³½Žs¢\.‡^¯ŸÑ荒³v»À@Ç £–"ììì„Ífãÿív»Ñ××7d„B¡/¾ø"†Á /¼€Í›7ã½÷Þ « !„IJY5Ò‰hêïïG[[Û^­?þøˆåÌf3úúúÐÖÖÆ¿öØc˜ ºšßï˲hhh@ss3¤R阽­œNçù0º»»Q__Lt7ÃÆ:`NýþiÛF8Žœ<9¥÷‡„X'Q†“;w¶µµñI§††¾DV«5éÄõ´À'ÜnwÔËlqÇsoo/º»»Ãe®sçΡ©© ï¿ÿ~XË»\.øÃ<¾‚Á ººº`±Xpîܹ©„F£>Ÿííí“*ٯΜ9×¾ùùÏÕXÂ=Þ¸Òlç΋Ëc-V\¸p!ê瘱ps†Îäqi³Ùø‡x}ô,ËŒm{"zzz`4#úÝ‘ýþ¦÷°<ñÞ>ÍU‹V«^¯‡Šû¶9®3fk;;çÄ®®.œ;wnFÛ £ÑˆÆÆFÀ¯ýkeOGb2™øeàÊ•+p»Ý¸páÂ× !ž{î9H¥R<óÌ3Ø´iÞÿýi›cŽBf¬™Ó‰hóx<èëë2WÓo¼öûwîÜ9ém_¾|yÂï¹téÒ¤·G¢c¬RгÁ¡C‡"²n.?¯×Ë'd/\¸‘uG“ÅbÁ`À™3g¢JT¼úê«ÑaD^¯—?æ¨ÜZl‹Ô9ø{R!ZÇåùóç'=¯]¼Šä÷-Ü5âlkŸæº3gÎÌŠ¶9V¯3¨Î`0À`0Dmû½oíêêBWW×4ECÈì ðôÓOC*•âÉ'ŸÄúõë±ÿ~$$$D;4B™*¯GH„0 µZë®»Ž/ŸòðÃ#++ ™™™#¾çÑGE__úúú——‡uëÖaíÚµaÍíôøãÃd2Áh4â7¿ù F¼ áFÏÜwß}ükeeeX¹r%V®\9ù‡«­ ®ÖV°q^B! ƒ‹Q÷åÍîdq7Ì.\@__߸7͉‰‰Ðëõ¨¨¨ˆ©‰Ó¹òz÷Þ{/ü~ÿ”Ë„(•JÜwß}¸ï¾ûP\\¡(gŸn¸¥¥¥(--ÅÃ?ípfÌ/~ñ ˜L&˜L¦)%æIüÉÎÎŽÊ9f´y´Äb1t:t: V«¡R©pñâÅIÅÕÔÔ„ƒâÃ?ÄáÇÃzN§ƒV«…Á`À#<‚GydRÛžn¿ÿýïñ»ßý."½ú© ±êÒ¥K¸té~ðƒàᇎû¶y®^gÌ„H†D"ÁáÇùû„ɰX,èëëÃ#<2¡äUaa!ÿ^®¼žF£qÙS§Náµ×^Ãk¯½XµjV­Z…%K–à7Þ˜PÇLBæš'žx ÃàW¿úÖ­[‡Ìéy^ !ñ‹’N„D˜Ãá€B¡€B¡@gg'GrÉ’%¨­­åëý···ãÒ¥KX´hѸÛÑétp8‰D`YB¡pÄí°, –e‡”íÓëõP«ÕÓ:AeP*EP*;ÅdM´±_&Y˜IŒöäÊ´¶¶Ân·Ãápð¥XÆ+£èõzaµZÑÐÐÀÏý““ÃOž-Ü\á$FÇÂ%f·oߎåË—#33“&LƒP(„H$‚D"™SŸWZR$Í©ý&ˆê9†û}»í¶Û T*¡T*‘œœÌ·íßýîw ôHèqi4a4ñÊ+¯ ¡¡aB=ÕÝn7ÿw±X³¿ÔF¹@*•‚a‚YÑ6ÏÕ댙‰s¢D"AUU®½öZþ|8™ï©¶¶çÎÃùóça0`µZÃ~¯ÅbáÛ!™L£Æ •J‡Üë…BH$’a¯BFöË_þR©?ûÙϰfÍ·mÛ†¼¼¼QG’"‘b±xZoc 7²n´ó™½¢yŽá~×þáþ)))HIIAII Ÿùîw¿ËÇ7ÑãÒn·£©© /¿üò¹ûÂÁÍo œ‹cõwB"‘L¹sµ$ÖI¥RH$˜mó\½Î˜ ‘8'J$TWWcÛ¶mS:655áÈ‘#Ø»w/Ç„ÞÛ××Çÿ;FF;V†Xü÷GMܱuõë„Ñýô§?…T*Å~ô#¬^½‡BZZZ´Ã•  IDAT"„°Ûâs'fÊ;Å›@ –e!“Éè"k¸rå ôz=N:…””äçç#;;{زEEE‰D˜?>žzê)|ñÅhhh@?/^ŒE‹A¥R¸””¾6¶ÉduÈ57ºf°²²2¤¤¤LqOÉXX–E}}=êêêÐÛÛË¿ž€ÔÔT¤¤¤ ##ƒ/•!‰øRR]]]èééAww7, Ìf3Ìf3, æÏŸ’’…Â)÷šœŠ5kÖðû7QÙÙÙØºu+¶nÝŠ%K–LCt„xÍsŒH$Ã0¸ûî»'üÞ±¼ð ¨©©AMMͬîÌ•——‡5kÖ`Ïž=“z?µ„Ùd*çÄ„„h4ìÚµ YYYÈÊÊšT §OŸÆéÓ§ñàƒ ńċGyR©ßûÞ÷°jÕ*>|˜:âBâÆ¸­V‹`0³ÙŒ”””¨?èŒ7,ËÂétÂétB«ÕRϱ9 xh ÑÖÖ†¿ýíoüMÂÕ=Ýt:`ÅŠhooG{{;Z[[ÝÝݸ馛 “Ɇ;*• Ì—£ˆœN稽¥º»»ü½tFff&Ôju„ö˜Œ„K¹\.=be2ÊÊÊ R© R© —ËùïD(ò#ˆ’’’ •J¡×ëqáÂ~Ô“Ëå‚ÅbAww74ͨuÔgÂúõëmmmaÕ¨ …HMMEjj*¶nÝŠªªªIß8Bf¿ÙtŽ©¯¯ÔÔÔ ¡¡aÊëKMM…R©œòz¦Kaa!Ö¯_ƒÂçóÁï÷¹<7j,V¿?B™ŠÉž+++QZZв²2deeMúº¿¾¾ÇLJ~`j '¥R9ä”2ý~øa0 ƒù—ÁÊ•+qäÈäääD;,B׸I§„„¸\.ôööB¯×óEIxX–…Ãá€ÙlFrr2%æ–e€Ÿk©½½n·wÜq€áI'­V ­V‹+VàäÉ“èééAkk+zzzpþüy,]ºtÄ„¥R©’tífpÒ‰+m™™É—!ÓãꤓL&ƒF£Aiié¨ó2q¥Ä¸„S0ä'êœt’Éd …QO:µµµáøñãa=HOOGee%¾ýíoC¡PМ„Qͦs 7Z«¦¦ÀÔ{˜§¤¤ÄtÒ©   øùÏa?`ÕïB¦b²çÄêêjlذ6l@bb⤷_WW‡'NDd”­J¥BJJ ÝG2þóï@*•â[ßúV®\‰Ã‡£   ÚaBȘÆM:•——Ãd2Áh4âܹs`Y–¨NÆ'“É Õj‘’’‚²²2¾Ô™ÝD"¤R)ŠŠŠ`2™P__çŸðàƒŽ˜pX²d ªªª°cǼòÊ+èììDGG‚Áàˆ7ƒ:õööòÉÁX–ECCöíÛ` §ÝüùóéAÎ hll„×ëåÿ••…ÒÒÒ°çcâjë/[¶ —.]ÂÅ‹ ÔSw:ÉdÈÈȘ–ØÃ1oÞ<üøÇ?ÆC=„_ýêW|iÈŽŽH¥RH¥Räå塨¨EEEرc’’’¦tÓL™;fÃ9ÆívÃårá¹rF .Œêù<‰‰‰HLLĹsçpìØ1;v ùË_`·Ûa³Ù Ñhø7›6mBUU*++cîû#„H˜ì9±¤¤dJÛܹ\®ˆ´A¨®®¦)‰‚o|ã`ÿøÿÈ'žæÍ›í°!dTã^-¸ÝnþáfEE?‰< Ûíæ/øÜn÷”'Æ&ñåG?ú8€ýû÷ãý÷߃A,Z´‹-v,ÈårÈårüÛ¿ýÛ¸ëÖh4üé$ ±lÙ2äææÒHÅÂ%‡8\Òi¢®N:qe÷¯›BHì1}à§Ñh‘‘ÂÂBèõúˆ­—BÈìé6(##¹¹¹(,,ŒØ: !“³e˼ûî»°ÙlX³f Μ9í!d˜qŸ>·µµ¡¸¸ÅÅÅH$…BCæ)!c“H$ÈÉÉAFFöíÛ†a””í°È âÊýæ7¿<þøã°Z­¨­­ÅC=„k®¹×\s 6oÞ<¡QOR©”ŸÈãñÀãñÀëõâ7Þ@]]êêê ‹±|ùr,[¶Œ†]Ï0½^‡Ã»Ýhoo‡ÍfæM›Â*³ … qâÄ ~À@ FµZMórBHŒ³X,hjjŠÈºT*îºë.<ðÀÔé€Bȸ"Õ1 †aðꫯ"))‰Ú BbÄ-·Ü‚½{÷âöÛoǺuëðÁàúë¯vX„Â7é ”Š¢‘N …ø‘ WF!s‹R©lذÍÍÍhnn†Á`@gg'ü~?t:ôz=ÒÓÓùRŒ2™lÄõ >ž>ÿüs¸\.ÔÕÕÁjµB.—cÅŠ˜?>²³³gl?É€ÄÄD>aÄrºté”J%T*Ôj5D"~ ƒ°Ùlp8|Òjp¢_.—#11‘’N„¦Z •ÙºmÛ6\ýõÔq‰BHئÚI$TWW£ººIII4M!1fÆ øË_þ‚¯|å+X¿~=Þÿ}Üpà Ñ‹B„‘tâÊ:QÒiò(éD€¿'Ö¯_óçσa444 «« hllDNNrrr°`Á$''C(B*•»a…Bðûýüñd·ÛqáÂ\¼x6› r¹r¹k×®Err2’““g|çºÄÄD8þß^¯^¯/^Djj*RRR ‹ùÞƒÜwêóù`4a4ÑÓÓ›Í6d½ …z½ž’N„ãÂÕ:¡P‰D‚mÛ¶!//’N„B‰6H"‘ ªª Û¶m£ö‡µfÍ|ðÁ¸ùæ›±iÓ&¼÷Þ{X³fM´Ã"„ñ“NÀßË<‘É¡dL*•bñâÅX¼x1n¼ñF\¼xµµµ8yò$êêêpùòeìß¿Ÿ_žK<1 ƒ`0–eá÷û‡Ìóãv»ùÒ|[¶lAyy9ÊËË©7Z•””@ Àëõ¢««‹ÝjµÂjµ¢¾¾~ÂëÌÈÈ@^^æÍ›7å›HBf£C‡áí·ßÆÛo¿ÿýßÿEAA ¢™£òòò°fÍìÙ³gRïÏÎÎÆÖ­[±uëV,Y²$ÂÑBÈäQ{û¦Ò%$$@£Ñ`×®]ÈÊÊBVVÖ4DH‰”n¸À¦M›°yófìÞ½6lˆvX„9.줉¾òòrÜsÏ=…BP*•üÈ¿t:æÍ›N‡´´4ô÷÷Ãf³¡§§^¯—Ÿ«) ÁçóñïcZ­–ÿ9˲˜?>***PRR‚”””°ç†"ÓC @¯×£¸¸^¯n·n·{RëR(Ëå(..Fbb"%œ…P(˲p¹\¨©©ÁÆ‘——GóI ƒ…Bèíí…Óé„Óé û½………X¿~=<a½W("55©©©Øºu+ªªªèa!$æP{û·A>Ÿ~¿Ì幑Q•••(--EYY²²² Ñhf(bBÈT,Y²‡† pë­·âwÞÁæÍ›£!d +éPâ)p£WHl<"Ðëõ¢¿¿—.] ë½z½•••°ÙlÃ’Nn·›ŸëG(B(B$A¥RÁ`0À`0Àáp@£Ñ ´´b±ýýýèïïŸÎÝ—»£îÎN°x@‹""Z%ý … —Ë‘’’2dŽ&–eùk¡Pˆ?¿r7{‰b±b±jµšŸÿI&“ÁétÂårEz7ÃÆÅî±M"ƒ;§Æ9õÙ÷ööÂb±Àáp„µß\bW¡Pàµ×^ƒËå‚P(¤yíÈ„°, @€ßýîw|玫“N@,ËŽy\rïn¹åÀéÓ§a·Ûáp8àv»ùö\¡P@¥RA¥R!??ÙÙÙÈÉÉÁ†  ‘H`³ÙæÔï=!ñ ©© ƒ³¢mžèuµ·±opÔÙÙ‰®®.tuuñ3$ ÿ'-- Z­:Ë—/Gaa! ù{Ó‰2 °X,ü¿ŒF#𛛇¼N‰¬ë®»‡ÆúõëqÇw`çÎØ²eK´Ã"„ÌQ”t"$BB¡Àãñ ¿¿/^œÔºt:]XËõôôÀãñÀn·£««kR%Û¦‹×d‚×dB`’£{bEP$B@(DÛ8½Ç"‰ —Ë!‰àt:ùù›\.‚Á Ÿ¬ä’Š …"‘"‘ `B¡ííí‘Ú­IãâR«ÕÑeNáÎ)===“>¯Ä£ÞÞ^ô÷÷Ãn·‡½ß‰‰‰‰¨¯¯Ç¥K— Õj±hÑ¢iŽ”Ì&\Gÿøÿà; \]f: Âï÷‡u\®]»À@yÕ®®.ƒAx<ˆÅbH$~´sZZV®\ µZ µZ ƒÁ0-ûG™ºÖÖV´··#ÌŠ¶y2×ÔÞÆ‡µk×âòå˸|ù2úûûù Ã@©TB¡Pàšk®Ann.rss‘‘‘Sjƒ ¬V+ÿo§Ó‰žžža¯B"¯ªª }ôÖ­[‡¯~õ«xýõ×q×]wE;,BÈDs:EIRR4 rss£Ê0 …‚J³M˲ðx<€ŽŽtwwãÛßþö´nÓï÷Ãï÷# ¢®®¯¾úê´noÂfI²zvìEdQ‰¿™e³ÙÐÝÝÓ§Ocß¾}ÑgƸÝnþ$Üói0ä;œñtß}÷ÁëõâßøF´Ã"„Ì!s¢¼žÍnCGG'Ôj5¤R"Qô/‚¹Udö‰D`†O:•––Nûèšš¼÷Þ{èêêÂW¾òÜsÏ=Óº=BHt¼ñÆ(--EEEÅœzÈmµZa4ÑÓÓö~sÁžzê)~î´ïÿûü|d„Œ%ܤ“T*…J¥šS¿„¿»pá.\¸€}ûöaÕªUq.˜Ìuµ·d4­­­ðù||Ò)//«V­ »%„DFaa!þú׿bíÚµxààóùðOÿôOÑ‹2GÄDÒÉf·Ãf³¡µmâ󕤥¦ 5%J¥rÔeZZ[qâäßðááøaù2ܰl„TŠÌÁ`,ËB,SBBÁßçF»ýöÛqöìYœ9sü1 PPPíð!„YÚ[B‰}¹¹¹8zô(Ö­[‡ï|ç;ðù|ø×ý×h‡E™b¦¼ž@ À‘£G †ÂÞž^§Ãu×V#+33¬õ76]Ã0pØX±|_;˜xÅÍu" iŽB$;;MMM€ööv$%%E9"ÒÒÒàõzáñx””…B…BÁÿ]©TâÍ7ߌv˜„3¨½%„Ø–••Å—Ú{øá‡áõzñÃþ0ÚaBf¹˜é4@€Ã2!éxŠ •™±X|6lÀOúSx½^<þøãÑ‹2K…]^o:“NܺwÜs7ä2:::`êíuù‚ü|äç¡tþ|~¤Ç˜ëÿò¿_~åe(/+à |r†R¡@~^òór#¹[„à™gžASS_r‚ãóùÀ§Ÿ~ ­V‹'Ÿ|’OF…#ÀçóÁãñ 11‰$âñBH¼JKKƒJ¥´´´ ¿¿?ÊB!³µ·„?qèÐ!lܸ¿üå/áõzñÄOD;,BÈ,$Œvƒ defàúE‹F]F,#;+‹.D07áðPY^½N·Ûý>„ÍnGyYš[Z`µZ#µ„ðÉЦ¦&X,–1—õx<°Z­¸téL&SØÛðù||)J‰Dv²ŠBæ¹\Îõz½`Y6ÊB!³µ·„_´Z->üðC,_¾O>ù$zè¡h‡D™…ÂN:q£¦óÏ@Ò)‹-5‘H„ì¬,>éÎz9åeÐëtp¹\øàÀ‡°Ûì(/+…¡¥–~ë´ï™;B¡šššÐ××7沑J: …1•C&„¨’ÉdüP¯×ö|‘„B µ·„4 öïßÕ«Wã™gžÁƒ>HÏ- !ÖSê™H8q#Crsr°fÕJTVT 55uX,_Û¾ ‹-DB‚fÉžçÛÿ·§ +–/Ç“¿þwèõz<ÿßÿ…\‰XLI'1\黉8vìZZZÂ^¾»»‡ššÊ—µ „Øl6x½^”˜'„B¦ µ·„Ÿ”J%Þÿ}¬_¿Ï?ÿ<¾ño„UMŠBÂsW„Á`@Ë–\ì¬LÃ0P©”(/+ErRÒ„’8Ü¢ÅE…p¹]8ùé§8sö$ V,_»Ý¯wb BÆ2™D£ÓéœP¢jð žF£Ã0Ú!„Ìf&“ N§ V«éI!„Ljo !$~Éår¼÷Þ{ؼy3^zé%ìØ±ƒF¬B""¦Êëq£X–ÅÒë#'+kPÒI¥R‰²ÒR$''‡]Zoðƒÿ¢ÂB¸\nœøÛ§8}ö,‰+–/ƒÝn‡×륑N$b¸cy"ü~ØËN:©ÕjH¥Ò mBf3“É—ËP©TtŽ$„B¦µ·„ߤR)Þ}÷]Ü~ûíxóÍ7qÏ=÷LèÙ!„ŒDíF““Å‹" a÷Þ÷°xá"¬]½ ‚/>™Î7ÿñ~ÈårÈe2:rŸ_¨ÅïŸyéiiP*‘ ŸÌq`BÉF•J5¡žçÏŸGOO`þüùHJJšpœ„2[íÞ½uuu€êêj¤¥¥E9"B!dö¡ö–BâÃ0øóŸÿŒíÛ·c×®]ðù|صk^%„LZXI§hŒÒ ƒHKMÅu×Vãì¹óÈÍÉFnNö¨±„B!X­VX¬V4]1ÀãñÀãõB  ££í`Y~Ÿ"¡9ÙÙHdffàÄÉOá÷³3¼‡d¶›hÒ)++ fÜå¸QTp8‰D4§!„|‰eYøý~œ={]]]€¢¢"èõú(GF!„ÌÔÞBÈì"‹ñæ›o‚a¼þúë¸ýöÛñî»ïB&“E;4BH {¤ÓL'žB¡ÒÓÒ–šŠ`0ˆœìldfdŒZ[ôøÉ“hºbÀƒaXÒI( Lh eYx½^dfd ==¡PŸ:¡PH%ðHĈD¢°Jì1 †apóÍ7#77wÜåûúú`6›ÑÜÜŒ„„ ##ƒ&í%„ ¸téNœ8†a ×ë±víZhµÚh‡Ff µZ µZVGB™­¨½%„ÙG$á•W^Ã0xñÅñ•¯|{öìBAÕ¡!³I'üCôµ«Wó=©FsüäßÐtå ›® û™D"D,†X,æ“K,ËòóE©”J0 %HÄpåõÂÁ0 ”J%*++ÃêAbµZÑÜÜ ¯× •J…œœˆD¢©†L!³‚Á`À¡C‡àõz¡T*¡×ë‘““ö9™ñpI'µZíP!$j¨½%„ÙI(â¿ÿû¿Á0 ž{î9Ü|óͨ©©¡ê:„ »¼^42Ü6¹‰IÇâñxÀ²ÃKäU”—ãúÅ‹pý¢…‹ÅCÖëp:át:‘–– ¥JII'1"‘ Ãð‰ÒP(„„„€ßï‡P(„@ ÀâÅ‹Q]]ªª*þçcq»Ý8sæ jjj pÍ5×ছnšÖ}!„x±gÏìܹ;wî,[¶ ·Ür =#ÕÑÑí!$ª¨½%„ÙM àOú†ÁÓO?7bß¾}4ÒŸ¶°G:ź×®Aш£ ~¿ Ã@Ê0ÈÎÎFzZ*t_ó¿:±$PQ^†”¤äh„Mf)n¤SQQÌf3úúúø¤èºuë P( —Ë‘™™‰´´4Èåò°Ö{êÔ)´´´Àív£¨¨éééT‚9àÎ;ïDff&233£JL²Ûí°Ûíx÷Ýwqùòe@RR ±`Á‚(GG!d¶Ñëõ(**Âý÷ßêêêh‡3c¨½%„¹åø¤R)žxâ ÜxãØ¿?t:]´Ã"„ÄY“tZ·f lv;l6\.7Ô*T*%4 ü~?ü~ÿ°‘P\?¬Š²²¨æ"³—@ @aa!B¡Ð°¤“^¯ŸTCýÙgŸ¡µµn·………ÈÈÈk„!$¾ÝyçËåa'¨ç»ÝŽŽŽ¼óÎ;üÓÄÄDàÚk¯rt„Bf½^¹\Žûï¿iiiÑgÆP{K!sÏoû[H¥R<þøãX·n>üðC$&&F;,BHŒ‹é9&Âf³A(B§ÕB¯ÓñI¤þþþQߣP( T* Äþ>’øóÍo~‡‚P(DCCàg?û–-[†¥K—†usƲ,Ξ=‹3gÎàÈ‘#P©THKKÃ׿þuH$’éÞBH (--v1ëÌ™3xýõ×ñÚk¯Áétò¯?ñÄ())áKëB!‘ÂuÑëõÑeÆP{K!s×c=©TŠG}kÖ¬ÁÁƒ‘’’í°!1,ì9âA0äËš…3·L¼ì‰?b±|´¿¿ðz½p:ÐétÐétÐjµ‹Å‹ÅðxÒÒÒèó–BˆRÆŽ ±XŒÑ£GËKí¹¹¹i»[„Z‚’N„hH$’Ï÷D!¤bÅÅÅÈËËúuë››‹ÜÜ\Î2-[¶Ä§Ÿ~ -ôB©ûÊ’N»wï¦Ï[B!J1bÄb1†OOOœ:u |ð¶»E©hN'B!„ÔJ«W¯Fqq1Š‹‹+\fþüùðôôD÷îÝk°g„BHýÿþû5oSyôyK!„ÏàÁƒ!‹1dÈôìÙ'OžÄ‡~¨ínB´L¨h·y©Ê¾€’ÊÉd2”””@GGB¡Â—œB!x;*´¢Ò¢ÖÖÖhÕªºwï''§î!„RTö;•>o !„(2pà@ìß¿999èÕ«âââ´Ý%Bˆ–©”tb†njÜ(éD!„¨N(ÒI0B!¤šQÒ‰BHU 0QQQ(,,DïÞ½qåÊmw‰¢E 3 NNN())ÁÇQXXHÉ'o………HNNÆÃ‡áäässóšø¿B!õ–««+ÆŽ‹íÛ·W8ŠB!UCŸ·„BTѧODGG£¤¤}ûöÅùóçµÝ%Bˆ–(œÓÉÆÆ™™™€äääjïP}Ä0 ŒŒŒ`cc}}}mw‡B©“„B! wwwˆÅbmw‰B©wèó–BˆºzôèãÇ£ÿþèß¿?> ///mw‹RÃ&4h]]]èëëC*•ÖDŸê‘H‘H„ @&“amw‰B©sš4i‚¦M›"44ÆÆÆtŒB©ôyK!¤*ºv튓'O¢_¿~ðõõÅЯ_?mw‹Rƒ&Š‹‹¡££XZZBWWW>ÏQ¬  ÈÏÏGqq1•& „BÔàèèˆnݺ¡aÆÚî !„%äååáÂ… —ëܹ3ÌÌÌj GDôyK4I"‘ >>111¼·jÕ ŽŽŽ5Ü+BHuëÔ©NŸ>¾}û" üñüýýµÝ-BH Q˜=ŠGqq1Š‹‹Ñ¹sg¥£"™L†7oÞ )) †††°²²‚•••¶»E!„Ô)¶¶¶èÛ·/&Ož¬í®BQRbb"ú÷ï¯p¹k×®¡C‡5Ð#¢}ÞM»yó&nÞ¼‰íÛ·ó>¾fÍ|õÕW5Ü+BHMhÛ¶-bccÑ»wo 4{öìÁgŸ}¦ínBj€Â¤Svv6ÌÍÍakk ‘H†aPZZZ}«D"ÌÌÌÀ0 ž={mw‰B©s<==ѬY3*ñCj½sçÎUxb­<¡Pˆ_~ù¥F¾2 ƒ°°0dgg+\ÖÎÎK—.­ö>BjŸúðyûìÙ3Lš4 .\@“&M°lÙ2*ëD!Zâáá³gÏÂËË C‡ÅÎ;ñùçŸk»[„j¦0锕•4jÔB¡PRRRí«/„B!ÌÌÌ`dd„Û·oÓ('B!D Ý»w‡³³s> FÞñññرc‡ÒË7oÞ3f̨ƽµÿ~¬Y³F©e]]])éD4ÂÖÖ?üð+vàÀ\»vMK="ŠÔõÏÛ’’øùùáîÝ»€;wîÀßßqqqðððÐrïÞO...pvvF=‡¿þúKÛ]"„Ô°V­Záܹsðòòˆ# •J1jÔ(mw‹R&ŠŠŠb±2™¬Ú;Tß0 ¡P±XŒÂÂBJØÕcR©999€—/_¢  @Ë="„ºO__;v,tuuµÝB4î§Ÿ~Bhh(ŒŒŒªm Ã`áÂ…ÕÖ>!±´´ä$UŸ>}JI§Z¨¾|ÞÞ¾}[žp*S\\Œ½{÷RÒ©†¼~ýZþ»x{!®®®.f̘ˆˆJ:òžjÞ¼9Î;‡^½za̘1J¥Öv·!ÕDaÒ xûC•ærR½vï‡wÿÏ ÃP’–B4ÀÊÊ 666ÐÕÕ•¸&¤6ùäV,>>¼Ë§¥¥aýúõ˜:ujµõéСC¸uëïcýúõêU«X±º:¢¾úòy+‰TŠ“êG¿ !eš5k†óçÏ£W¯^?~<ŠŠŠhN7Bê)¥’N%NQFÙqB_¬ !D3¬­­Ñ¢E èè(ý•…­233ƒ™™+V\\\é:+V¬À¤I“`hhX-}ªl”“‰‰ Z´hQ-Û%„ÔõåóÖÝÝíÛ·G\\œ<¦¯¯#Fh±Wï—òçŽh^pBÈ»å#žBCC!•J1eÊmw‹¢aJ]ÂT6Ò‰nU»B!D5Íš5CïÞ½µÝ BªUjj*6mÚT-m9r7nܨ–¶ !õG}ù¼ …8räF WWWxyyáÔ©SpssÓv×!„üŸFáܹshÕª¾ùæÎü„ºF:B!¤Ö²±±»»»¶»AˆFYZZB"‘°bË–-CHHôõõ5º­ Tº]Bê×ç­­­-¶oß®ínB©„Ξ=‹>}ú`Ö¬Y(**¼yó´Ý-Bˆ†ÐH'éD!„ÔZººº022Òv7Ñ(¾"ÉÉÉØ¼y³F·sìØ1üóÏ?ÞNÞìëë«Ñö !õ}ÞB©iÖÖÖˆE»ví0þ|Ìœ9SÛ]"„hˆÒ3„j;aSn„BQX,®¶ynÑ–ñãÇÃÖÖ–_¶lŠŠŠ4¶wG9Íž="‘HcmBêú¼%„¢ 4ÀéÓ§ññÇcéÒ¥4¿!õ„Råõ(iB!„š–™™©í.R- 0uêT|ûí·¬øË—/‰'Vy'OžÄÕ«WÎÎÎ>|8Î;Wåv !õ}ÞBÑ&333œ8q>>>Xµj¤R)Ö¬Y@ í®BÔ¤ôœN5!;;…EEj]áikc‘HDWpB!„Z/$$?þø#Þ¼yÊ/]º_|ñÄbq•Úw”Ó¬Y³jü;rII ÒÒÒžžsssX[[CWW·Fû M‰YYYÈÏχ‘‘ÌÌÌРAƒjßn~~>RRR •Jamm ‹:Â&77/^¼€¡¡!¬¬¬jl4Naa!RSS‘——+++XZZB(TºPHUXXˆ””ÀÊÊ 4Ðêóf©©©HOO‡……,--kí{É›7o––sssXYYU{?‹‹‹‘œœŒüü|ØÛÛÃÄĤZ·§ R©‰‰‰‰D°´´„™™Yl·6ÿ©©©HKK“Uýž •J‘ššŠœœXZZÂÒҒΧ­211ALL üüü°nÝ:aÓ¦MZ?ö!êQ:éT#²²³ßÞ²²U^×ÂÜb±˜ÞŒ!„BH­ghhˆo¾ù3fÌ`Å“’’°}ûvŒ?^í¶cccqñâE@“&M0räÈ*õU%%%ˆŽŽFtt4bbbðüùsÎï{{{ôéÓ>>>ðóóƒÒí¯[·ÅÅÅ•.3räÈJ;—/_Ƶk×*mÃÓÓ}ô‘Òý*“‘‘ßÿ‡Â7 ‘H8ËXZZ¢M›6èÒ¥  €Ž;Vù·KFFöïߨ¨(œ={YYY¬ÇuttвeKx{{cÀ€èÑ£G•¶WSîß¿~øÇg%fÜÝÝáë닯¿þVVVÛfFF<ˆèèhÄÆÆ"==õ¸H$‚««+|||0`ÀôêÕK©vÿýw¤¦¦*Ý###ó>&•J±~ýz¥Úñó󃳳³ÂårssqðàADEEáÔ©S>ï¾}û¢ÿþðööV:‘©lË÷5==[¶lÁÎ;ñäÉÖE©M›6E›6m0aÂôíÛ/^D\\\¥Û°´´Äÿþ÷¿ ¿~ý:.\¸Pi†††øòË/Y±#GŽ`ùòå¸~ý:òòòäq===tëÖ C† Á˜1c ££™ë}Ÿ<ˆ#GŽàäÉ“HKKc=.‰àì쌾}û¢_¿~èß¿¿Òïß2™ «W¯V¸\ÿþýáææ&¿Ÿ™™‰ˆˆüúë¯xüø1 å 4iÒÆ€¶/•JqøðaDEEáĉHNNf=. áää„>}ú _¿~ðõõ­µ ^RáèÑ£8p ¶nÝ ©TŠmÛ¶QB”:ŠÀ0 äKR™Çñ÷˜Çñ÷˜—/‰DÂìØ±ƒ¹zõ*“‘‘Qí·{÷ÿc-ý‘i×¹+ãѾ£R·}¼™ÀÁC™ôôôécUn;vì`®\¹ÂH$†¨gÛ¶mL·nݘ²ý¶ìöõ×_3‰‰‰ Ã0L||–¹rå óÅ_ÈÛuqqa¼½½†a˜­[·r¶»fÍùºëÖ­Sêÿ/‰˜9sæT¹¯¥¥¥Ì¶mÛ{{{•Žƒ>ø€9räˆRÛJ¥Jµ¹{÷nù:[¶laŒŒŒ”ZoêÔ© ûÉ4mÚT¥çèââÂìÛ·Oí×–ª(,,d|}}ÌСC™ââbmw‰:-??Ÿ‘H$̳gÏX·kÿüÃDVêV~ÝgÏž1‰„yù"QžO:}"ŠÙ¶ùS«Ê뙚˜ÀÑÁîàú›J­Ó¸±Ú¸»†©óå#!„BÈûÁØØ_ý5æÌ™ÃŠ'&&bçÎ7nœÊmž?^>w“££#F­‰®ò*,,ÄÈ‘#ñǰâúúúð÷÷‡‡‡¬­­!‘HðàÁ8p999€/^`̘1øí·ß°ÿþ+™¤IEEE4hŽ9Š;;;£W¯^hÔ¨ìììššŠ'Ož ..÷îÝ“/Wv5ÿÊ•+ñìÙ3899)µÝäädøøøàæMöï%ÀÅÅzzzHNNÆÙ³gqñâEùHË—/£[·nX²d fΜYÅW@³ŠŠŠðùçŸãÀJ-Ÿ““ƒaÆA `ðàÁjmóùóçðññaý_ÀÚÚpvv†©©)’““ñ÷ßãĉ(--üý÷ßèÞ½;¾ýö[,[¶¬NýÍÌÌD@@Ο?ÏŠÛÚÚ" nnn022Brr2.]º„³gÏÊGþûï¿ðööÆ”)S°bÅ =o†a0mÚ4¬X±B#íU§'Ož OŸ>HHHPjù‡â“O>Áµk×”>Îß•›› Ÿ Gb™ššÂÞÞyyyHNNFqq1^½z…=z`Æ j}–hÃüùó1oÞ<¥–---Å¢E‹PXXˆåË—«µ½œœâÔ©S¬¸µµ5ТE #%%W®\All,¤R)àîÝ»ðõõÅĉ±fÍVÜ™3g/^¬‘¶ŠŠŠ0lØ0ìß¿Ÿ777‡¿¿?>øà˜™™!55ÿüóNœ8!Qõøñc <Æ ï¿þJ£žHÒÓÓÃþýû1dÈìÝ»R©{÷î¥ý:D©¤Ã05R^ÏØØíÛµE£Föxðà!¤ÅÅ•–ÑhÖ´):wêˆ>^^¬¾B!„R„††â§Ÿ~BFF+¾dÉŒ5Jå’LóçÏ—ÿ=cÆŒ*ÏùP‘ÌÌLøúúâÒ¥K¬øÈ‘#±jÕ*Þ2wëׯÇܹsñóÏ?Ë¿³ÇÆÆ¢k×®ˆ‰‰ƒƒC…ÛÛ¹s'JJJä÷×®]ËÙ¶"C‡…‡‡‡üþ… ”.UÆ'$$„•p²²²ÂöíÛáããÃ{’aìÞ½3gÎÄ‹/8)ãéÓ§èÓ§ž>}*‰Åb,]ºaaa¼Û½ÿ>Ƈ«W¯Êc³fÍBzzºÚ'k«ÃÔ©Så §Ö­[# Mš4Aaa!îÞ½‹¸¸8ܸqƒµŽL&äI“àååKKK•¶wëÖ-ôï߯_¿–Çôôô°hÑ"„……ñžØzþü9¾øâ œûì3üñǼÇ'!¤ö©Us:1 kkX—M›Ÿ¯ éÔìÁÚÊJ¥/”„B!„Ô¦¦¦Ç÷ßÏŠ?}ú»víRi¤Ò¥K— àíI»±cÇj²«,£Fâ$}¾ûî;VÒ«<###¬\¹-Z´`ÍYuïÞ= 4.\¨ð ÖAƒ±î>|X夓‡‡+é¤Êü8å]¾|Û·o—ß×ÕÕÅáÇѹsç ×1bºté‚víÚ!33S¥m €u2[GGûöíC@@@…ëµjÕ §OŸ†···|®/àm²¤cÇŽ R©ÕáÆX¿~=ÌḬ̀aÃ|þùç¼Ë-_¾3fÌ`xNKKæM›0kÖ,¥·—‘‘VÂI$áÈ‘#èÝ»w…ë9::âøñã>|8+ùóÇÀÑÑ‘w”Ž···üïV­Zq’NwïÞ…¿¿ÿÛß¿ èêêbèСòû7n”ÿNïÑ£‡Â¹àJKKÄJ8ÀÖ­[1f̘ ×kÚ´)Ž;†O?ý”uÂ{ÇŽèС+iö. 8»}û6g¹—/_Êÿ“'OÆ‚ 8£g̘-[¶pæT€6mÚp+#GŽTéA‹-8s}óÍ7œ¤ÓŠ+ððáC´oß{öì‹‹ §­üü|Œ=š3 ôèÑ£¸uëo¨"3gÎä$œLMMqüøqÞD‹¡¡!‚‚‚0pà@„„„ ""ÇgÍ‹¼M4¾»/iSff&-Z¡PˆyóæaÆŒ¼ŸGŰaÃýÿç—Édøá‡pèÐ!¥·'“ÉðùçŸs’ØëÖ­CHHH…ë5n܇Æ!Cð×_Éã{÷îE»víðí·ßò®'8ÇÁ£G8Ë¥¦¦bÁ‚€ &`É’%°°°`-3}útìÚµ«ÒùÉÊŒ7Ž“pZ¸p!gtõ»lmm SSSlݺU‰‰Á÷ß~øAáv Ñ$ìÞ½b±¿ýöpàÀ•æ%„h‡Òc€ËF;U÷M @("tb:Vpu–ŽŽôôôðÕ„ hß¶-JJJÀ0 ¢cŽã«¯§ xâ$|9ñ«ÿ›*¿ÿêÿßVüü E©±çF!„BHy“'Oæ-/·dÉ•Nš–¬Þž˜ª®+Aùå>|˜ëÝ»·Òe‘¾üòKŒ9’ûûï¿1{ölMu±Ú•¿B½mÛ¶•&œÞÕ¬Y3ÖÉ>^Éó›?>rrr0þ|üòË/–Û F¯^½ª´­ªÈÍÍÅâÅ‹áááS§Nñ&œ€·ÇÛ¾}ûеkWÎcªì«W®\Áºuë8ñßÿ]áÈ]]]lÚ´ ½{÷F||<•ÞnMûù矑’’‚5kÖ`îܹ^|0`ÀÖœ2ÇŽƒD"Qz{?üðNŸ>ÍŠ <¸Ò„S‘H„íÛ·ÃÞÞžŸ3gçýYU‹/FFFf̘ 6pNeFŒTÚÖÆñ矲b^^^•&œÞµnÝ:Î{ܲeËT¾ØƒM‰Døõ×_1nÜ8?~¾¾¾ÈËËÓv·! (•tªÉ„IY‚¦i'84²‡­­-g[´ñp‡¾¾ttDòxAA222‘ž‘IF:Ò32ÞÞÒÓå7‰$’ô··ììlü_½ZB!„B´ÁÜÜ“'OæÄ=zÄMQ™«W¯âĉ;;;k´e2228'­ÊsÚ,^¼˜“[¹r%ž>> eD"Ö®]«r™Öš&‘HЫW/Lœ8Qá²}úôá$|Š‹‹qåÊ¥¶•œœÌ9vE"‘J¥FMLL8£“‹ŠŠ°hÑ"¥Ûà“––†Ž;*5ŸSeÇANNf̘Á‰¯\¹R龈ÅbN?d2™Ò—¢iB¡[¶lAHHbccÑ¿ù<¡„Ú©Öt*»5qr‚C£F°-w%ØÙÚ¢»;ôôô ‰äë"##ééooeÉ%ÎMòö–“ƒ‚‚éD!„B´*<<&&&œø¢E‹žÄØ£œ¦M›¦RBCëׯGnn.+Ö­[7•“.øì³ÏX±ÒÒRüôÓOUîcMxùò%ë~ù9šÑÑÑQé5ã{]Fʤ߈–mÛ¶qJoÕ4 KS•çääÄ-@ž€Q„/ɬr©ž   ÎÉï'Ož°ÊnU´^ùù§âââpýúu•¶ÿn¢jܸq 'Wÿå—_Xó¢oËVò]äY™#Fpæu‰ŒŒä”¡SÕ’%K”J\bÕªUXµjú÷ï_¥mªÃÓÓSéùƒ‚‚‚8 Ÿ»wï*5‚õáÇ8{ö,'>uêT¥¶]ÆÍÍM«‰:eñ%IøTTPÙãÍš5J¥¬˜¿¿?•.AcL IDATZ¿ÌСC9%1÷ïß””•Ú)oñâÅÎ õ.???ùqàïïÏzlëÖ­ÈÊÊbÅ>ùäVyYeøûûÃÊÊŠ;}ú4oi@Bj‚@ ÀúõëŽ . oß¾œ}R{ÔÚ¤SQQ:¶o‡oÂB! å_@mmmЩc „ÒÒRÈd2ù:>ý¼±î—UX²`>¼zöä}æææhâä„_·lÆŒo¿A€Ÿ/%!„BˆV5hÐ_}õ'þðáCDFFVºn\\Ž;°±±Q8¯‹º†ÁÚµk9qµÚ+¢ ¶oß^'®\-Ÿì9þ¼Ê‰§cÇŽáõë×xýú57n\áriii¼û€2eõÊsvvæ”KKKSzbúêâééÉIÄT†ïäiùry|îß¿Ï)«¨· øùùqâ«W¯®t====ÞäŸ*£$‰|¾ ¡PÈ;ÏÑ»ŠŠŠ8#åõö!KKK´k׎+((P»D ðv®,¾D"ggg„‡‡#<<\éä&)Qö.KKKNb²  oÞ¼Q¸î¶mÛ8± à“O>Qzûejüm•±°°@Ï Îßðá;þ•)XZZŠM›6qâꦦ¦œý¯¸¸»wïV¹­2¶¶¶J¿NNNòã üQ¾Ïiuž£®®.§? Ãà×_U¹-B4iÕªU˜>}:®^½ ///¤§§k»K„J'´AOOfffpkÞVÿ÷#¤S‡hdo¾k  ôõaaa sTpu§P €H$‚¹™ŒŒ*\ŽB!„š4eÊqâŠF;½;ÊéÛo¿å\}­)÷îÝCrr2'îéé©V{=zôàÄ ëÄœ|ðë~vv6†ÊU333ØÙÙÁÎÎ"‘¨ÂåÎ;‡ââbVLGG:uR­Óÿ§}ûöœØ… ÔjKS”« _‚ªü<>| 't¨`.aEøöá«W¯*œkbüøñœQ={öìQúŠí_ý…ÿW&¾ÿþprrªtù¿ÿþ›7™«L9C>|¯Wù¹¢TÑ­[7•Êsj“ª‰® pbÊì«åKxo÷·ÊÞ+*¢î{EMiß¾½J%Õ=þoܸÁ;÷Sm9ºté¢Öÿ÷] xúô)'®Éç¨íÏ B`éÒ¥øî»ïpýúuôêÕ iiiÚî!¤œZtÒ×ׇ™©)Üš»Ê¿Xtlßì+\ÞÂÜææÐ7àO& „BˆD"˜™™ÂØØ¸ÚJB!„¢ +++Þ9-îß¿_aÉ®›7o"**ªÒõ5…ï$(´hÑB­ölmmajjʉ«2牶xyyqb—.]B‹-°hÑ"•’OŠð½î...j'›5kƉ]½zU­¶4¥|OMžÈoÞ¼¹R嬸¸ººrb%%%¸|ùr¥ë¹¸¸ OŸ>¬X~~>vîÜ©p› ðFkðÍUß1Õ AÎ(e5mÚ”«Ê>¤jyNmRu_åK(JJâæÍ›œ¸ºïµ®®®µú¼‡»»»JË«{ü󆆆pvvViûejãqPÑç´ª¯q¾çxýúuN©NB´aþüùX¼x1nݺ…=zT¹¼%!D³”úv]Ó¥õÊn¥¥¥())Að˜Ñ ðC÷n]ñI×.hìàÀ*«÷îòÅÅÅ …°µ±Á­[Á½ukx|ðÁÛ›»;Z¶pƒ‹s3””” ¤¤¥¥¥T^B!„Ô TZ¸p!ï÷ÉwG9U4RJSnܸÁ‰YYYÁÂÂBí6ù ªÎm£ ááá¼'*sss1wî\8::¢wïÞØ¾}{•¯¾å{=Ô=I ÖÖÖœØÍ›7µú{E•Òz-¯ÌÜg|ûpóæÍUÚö»*ú?(³O˜0Û¸q£ÂõÞSÅÉÉI©yøúS¾Ì¢*øö¡§OŸ"33S­öÊÏS[éé驜ìåÛWÍéôàÁμC€úÿ3¡PX¥÷éêÆ—DªŒºÇM¼—–•LU‡&޾çhoo¯öE |Ï1??|¯ûÅ‹ÕõÀWÂM*•"==]å䦨š,-?§–²4½›™™ñƕهýýýѨQ#Ö ²û÷ïãܹs•–¬|wî§/¿üR©QZ|‰Ï{÷U4ª$99Y­×³:“嚤Ή{uöÕŒŒ Þ¸ªÉ™wUWÙUM¨©ãŸï8xòä‰ÚÇA~~>o<99 6T¹=M|ÏQ"‘¨ý‹ŠŠxãÉÉÉ*ú#¤º|ûí·ÐÓÓCXX<== GGGmw‹÷žRI'mÒ)Ťl?†AII ïò4êˆh[Ù(=Bê@ ¿B©>Ó¦MÆ äs¶”Y¸p!+éôîè§ððp˜˜˜Tk¿ø&j®êI2¾õëJ]þN:áÖ­[3f Ž9Rár¥¥¥8þ<Ο?©S§ÂÇÇ&L@¿~ý”Jð½îYYYJÏÿ£¬´´4­%T™ÏE]%%%ÈÎÎæÄÕ= ¼ýndhhÈ9ù¬Ì>,‰Œyóæ±â7n¬0éôêÕ+>| ««‹qãÆ)ÕO¾}(//>Tj}e½yóF­“Û5ñÿׄšêgEÇvUöU±X¬öºÕ­¦^W¾ã ??¿ZŽuhâuà{ŽEEEµæ9R]BCC!‹‚îÝ»ãÌ™3¼å! !5§NŒtÞþXS4 ½LÙh¦òîR”%”)@Hm"‰  )éD!ÕÌÎÎÁÁÁX³f +þï¿ÿâðáÃð÷÷ǽ{÷äó<™››còäÉÕÞ/¾JU'DOOËÉÉ©R›5ÉÊÊ QQQøçŸ°zõjìÛ··,V™ÒÒRDEE!** nnnسgÂy<øF•ð·UšNbÕ6JàÛU¡§§Çi[Ù}ø‹/¾À¢E‹Xó£ìß¿©©©°±±á,¿uëVù²°µµUj;|Ç®žž^•G*–§Ì¼:D±êÚWßw|ÇX,ÖxéAmVÕáÛ¶ŽŽŽÆ/(P¦!5müøñÐÓÓøqãн{wÄÆÆòνH©uã’"Bê‘””dff"33“÷jË2zzz‹Å000¨p™‚‚@$A__Ÿ~ˆjemm 33³ KÉBÑœéÓ§cóæÍœÒ6 ,€¿¿?k”SXXX¼7óm£¢“£Êâ;qU›ç©H‡ðÛo¿á§Ÿ~Bdd$þøã\ºt©Ò‹Œ>|ˆÎ;ãçŸæß§Œ™™çu ÂŽ;4Öÿ÷±±1„B!ç¢Í}¸Q£FðóóÃä1©TŠˆˆÌœ9“µlii)¶lÙ"¿¢tùŽÝž={âØ±cJ·AjNE£V«²¯jû"âÚ€/Qß¹sgœ={¶æ;SMøŽõ-ZàÎ;Zè !5oôèÑ‹Å9r$<==qúôi´lÙRÛÝ"ä½DI'B´ 33 ˆ‰‰©p‘H˜››ÃÖÖ¶¶¶hݺ5k”ÉãÇqçÎÁÍÍMíZÍ„B©]5j„±cDzæoÞN¾bÅ üñÇÞžD «‘>ñÍ'RÕ+ºùFFðM\® UOªV6"I]666 Ehh(^¿~ÈÈHlß¾·oßæ]¾¨¨!!!hÞ¼9zõêÅ»Lƒ œœÌŠÑˆÕ …B˜››sÊOUe.--å”ÁTÛ‡CBBXI'ؼy3¦OŸÎ*¿…/^Z¶lYé¼Oåñ%Áhª½*ºˆ *ÿ³ŠææyŸð}†Õ·ãà}xŽ„(2lØ0ˆÅb 6 =zôÀ©S§àîî®ínòÞ©3åõ©O222€Ý»w+\ÖÖÖmÚ´‡‡ZµjòÄÓãÇqìØ1XZZBOO’N„BH=2sæLDDDp’#S§N•ÿZc#ƒøJyUu^¾¹oÔ™€P½<\u—@jذ!ÂÃÃŽëׯcÓ¦MضmoÉð &àÎ;¼£Ömmmqÿþ}V¬²Ñò¤b¶¶¶œ¤SUöáŠænReîÝ»7\\\ðøñcyìÙ³gˆ‰‰<¶qãFùß•ŒãÃwìÖ¥2–’–©©©j·YÕ}õÁûpð•å¬oÏ‘e 4ººº¬R»ÏŸ?—e%0µ¥¢ÏéªÎéôòåKùsLLL¬R[„Ô¤þýû#** R©}úôÁ¥K—´Ý%BÞ4Ò‰F:-«(éÔ¢E xxx`ðàÁèÒ¥ š4i‚7n ))IþÃØÒÒ®®®hÚ´)ïÏÜÜ\<{ö qqqˆEll,Μ9ƒ7n 11‘·¬LÙ|SIIIÈÈÈ@II nݺ…+W®àÔ©S¸páîÝ»WéUÍEEExñâþý÷_œ>}§OŸFll,îß¿””Þ²2„BájÒ¤ ï¨CCC|óÍ75Ú'''´nÝš/¡ª“'OrbÖÖÖ¼#Êã ÊH§ââb\¾|Yéå˯ۣGôèÑCå2g`ee…àà`N¼¢Q3ݺuƒ©©)+Æ0 Ξ=«ò¶ËÄÄÄ iÓ¦òÛ÷߯v[uIß¾}9IÜ’’œ9sF­öøöa¾m(bii‰   VL&“aóæÍ(**ÂöíÛåñ•ûùᇢQ£Fœ¸ºÏâââФIù>ªv[„«OŸ>œØùóçÕ* zñâEMt©ÎkÙ²%š6mʉWå8¸{÷.œœœäÇß{{M²±±áMzWå9¾xñ‚õË¿WRÛõîÝÑÑÑÉdðöö®Ò÷'Bˆò”é¤í„M}¸¢±X 333ØØØ ¨¨EEEò¤SNN^¿~””Þ ï&Ê?±±±¸~ý:ž?λNÙ|SIIIÈÌÌDqq1nݺ…Ë—/Ë“NwïÞU˜tzùò%nÞ¼‰S§NÉ·{ïÞ=¤¦¦RÒ‰BQÁ¬Y³ ‰X± çý¨N|‰®Ã‡«ÕÖ¡C‡8±É“'ó–Î+ÏÅÅ…«¨<ŸS§N!33Séåß%“ÉpîÜ9œ;w»ví‚L&S¹ ¾ä™™ï²FFF¼å×"##UÞn™-[¶°îöÙgj·U—ØÛÛãóÏ?çÄùöEEŠŠŠÉ«› æK&EDD`Ïž=ò¹£Ú·o¯ò(*àíÈ™ððpN|ß¾}ªwôÿlÞ¼™uÿ}Ù‡jʨQ£8ï…………ˆŠŠR¹­ªüŸë¾ã³*¯Om|/Õôsܾ};ë÷{`` Úm¢-žžž8~ü8D"|||x/!„h•×#¤ÈÎÎÆË—/! !‹ahhøû￱zõjDDD°æz’H$ˆG`` æÌ™ƒßÿHKKCJJ """0gÎ >©©©¬äÓýû÷ñçŸ⯿þ²eË0aÂ?~OŸ>…P(ÄÙ³g±víZL˜0gΜÁ³gÏXýLJJÂ!C0cÆ lÚ´ ¯_¿ÆóçÏñäÉ,[¶ S§NÅèÑ£‘››Ë™B!\ÎÎÎØ°a¦OŸ.¿M:U+}>|8§¤o||¼Ê'BoݺÅ9aollŒ‰'*µ¾‡‡'vôèQ¥F0 ƒyóæ)µEòòòÔ*ÍÄWžÈÙÙ¹ÂåÃÃá§§ÇŠýù矼sb)’””„#GŽÈﻹ¹ÁËËKåvêªiÓ¦A °b¿ýöRSSUjgãÆÈÊÊbźv튮]»ªÕ¯Î;söëääd„……Éï«3Ê©Ìøñã9•N:Åú ¡¬ÌÌLìÙ³G~ßÎÎŽNDk˜­­-ȉÿðÃ*]Ðzùòeœ;wN“]«ÓÆŽ˹`ãÂ… j|ÍÍÍÅo¿ý&¿oii‰!C†T¹U„fÍš±b÷ïßW+a)•J!¿ohhˆ1cÆT¹„hC—.]pêÔ)èëëÃÏÏÑÑÑÚî!õ%Ñ2†a “ÉPZZʺ"''—.]B||<ÒÓÓáàà333…%;’““qëÖ-èèèÀÝÝC† Á€àëë ???øûû£Y³f(,,ÄóçÏ9?˜·µ©KKKѰaC|öÙgðññ——‚‚‚àáá===ÄÇÇ˯¼Þž@¹pኋ‹áââ 8Ÿ~ú) ///ØÚÚB"‘ ..Ní‰Ç !„÷Mpp0–.]*¿ÙÚÚj¥b±›7o朴Ÿ5kòóó•j£´´_ý5çÄéÏ?ÿŒ (ÕÆG}Ä™Ï*??»víR¸îwß}‡k×®ñ–YRÇâÅ‹U^çÂ… ¬ûºººðõõ­py{{{,]º”+**ÂäÉ“U:]XXˆAƒ¡¤¤Dûþûï9#éê³>øÓ¦McÅòóó1sæL¥ÛHNNÆ’%KX1lÚ´©J}ãK*eggÌÍÍ1tèPµÛ611ÁÚµkY1™L†¯¾úJ¥ù~JKK1tèPäææÊc3g΄Ú}#ü–.]*¿Ø°ÌíÛ·±|ùr¥ÖÏÍÍU:‘ÿ¾000ÀÆ9ñÐÐPÞ9+"“É0|øpdddÈcS§Nå-ýZÓD"¶nÝ ¡}ºoÊ”)*Ï8~üxÖE“&MÒÚ÷B4¡C‡8}ú4Œñé§ŸâàÁƒÚî!õ•×£òzDË”I:=|øPžt277Wxb %%ÿþû/tttäóB½›tòó󃳳3 ˜˜È›tJLL„L&CÆ ˆÀËË ƒ ’'>|Èš?!11çÏŸ‡T*…‹‹ üüü0pà@â³Ï>C¯^½`ggGI'B!¤ëß¿?¾þúkVìîÝ»1b„ÂQÌ Ã`Ê”)œù%† ‚qãÆ)Ý]]]Þ2i'Nä$ʤ§§#88‹-‚““'ñ ®Ý»wcëÖ­J/¿mÛ6NIÂ/¿ü•®VìèÑ£ Uê·Fqq1ÆŒƒk×®Écä}ë»… ¢cÇŽ¬Ø¶mÛðÓO?)\7''œ‘Q«V­â-›¨ŠáÇWxÒzäÈ‘œ„:í5Š»rå FÅJDVD&“!,, Ç—ǺwïŽI“&U©_„_³fͰ`ÁN|æÌ™Ø°aC¥ë&''Ã××·nÝ‚§§'š7o^]ݬs9óñݸqŸþ¹R X™L†iÓ¦±ÞÇ;uê„)S¦h¼¯êêÙ³''‘þøñc 8Jµ±dÉüúë¯òû-[¶|oæÿ#õÛG}„3gÎÀÜÜAAAT‚”j¢p†S}}}o¯Š+_Ò(§´´%%%Ð××WyRYRÿ:u §Nªt 4mÚ³gφ±±±Â6]]]¡¯¯€€4jÔˆSBÀÍÍM~upff¦|ލw‰ÅbtìØ‘3y¹……ТE deeɯKIIÁ£G‡aÆ¡sçÎpwwg­Û·o_#''ÑÑѰ¶¶FçÎ9WKB!uUvv6V®\ÉŠ•?9½xñbÖ\"‘sçÎÕh?¢££Yɸyó&g¹{÷îqJ͵iÓŸ~úi¥íÿøãÈÉÉaÍgqàÀtìØkÖ¬Á'Ÿ|ÂYçöíÛ˜2e NŸ>ÍŠûûûcÛ¶mŠžÇôéÓ±cÇÖ•Û2™ ³gÏÆêÕ«áááÖ­[C&“áÑ£G8}ú4¤R)Ö®]‹ôôtN›Çg]Œ£££ƒ9sæ(ìKpp0>Œyóæ¡mÛ¶¼Ë$$$`õêÕX·n+ÞªU+Î(&>{öìAPPNœ8!¯[·ׯ_Ç?þˆnݺq®ng‘‘‘˜={6«_›6m°}ûv…Û­ªåË—³Ê^¿~³Ì–-[pôèQùýÀÀ@V©¹ .°ö›ÿþûÓÆ™3gXóŽ8::bìØ±¼}ÒÕÕETTüýýñ÷ßËãß~û-®]»†Å‹sæ “Éd8vìBCC‘ÀzlÑ¢E¼ón©ÊÄÄÇç‰Qþ$¹º6n܈‚‚ÖI¶={öàîÝ»X¾|9z÷îÍ{[TTfΜ‰{÷îÉcÎÎÎØ³gO¥Ä••Û.ÃWê-22·nÝbŬ¬¬ðÕW_)õœNž<‰K—.±båç}óæ ç½îÝýìÕ«WœyªÊ ÉËËã´1}útÖ(¯mÛ¶áùóçòû|ï»›6mBÆ å÷½¼¼xß3·£SîÞ½Ë:ù/“É0qâDüõ×_;v,:wî {{{äååáéÓ§8pàÖ¯_ÌÌL˜››cçÎèׯoû5!==]^Ö”ïõˆŽŽfUÏèØ±#+Áž€;vÈïóÖ‰gýo„B!¾ûî» ûôË/¿ //UïÀhÓ¦ –/_oooÞs7111˜1ckurrBddd¥ó–ß/øÊùýõ×_ˆgÅÌÌÌ8y(kþüùÈÎÎÆš5k䱨ØX´nÝË–-ƒŸŸï9¾óçÏcúôé¸zõª^¼x/^àþýûÉd¬uºté‚Ç+uQðöûÙÑ£G† 6ÈG8]½zžžž°³³C»víаaCâÑ£Gxôè'ÁÖ¯_?DFFÂÔÔT©íVÅòåËñæÍ›J—y7y ¼Mf”O:):®Îœ9ÃA×¥K— “NÀÛ“¨gΜÁرc±wï^y|ß¾}Ø·o:v옚š"99qqqxñâ« ###lܸQ£'ªBBB8I'OOO´lÙR#íëëëcïÞ½puuÅÒ¥KåÇÎ;wЯ_?XZZ¢cÇŽhذ!JKKåûPùÿa—.]pàÀØØØTº½M›6ñ&Þɉ5oÞ\¥¤“¢’soÞ¼áìCïîg/_¾T¸åççs–™}ú4'‰ÿ.+++üùçŸptt¬´?šVþý<==éé龾ǎñcÇä÷'MšÄJ:=}úTáÿæÑ£G¬eD"Q¥I'±XŒ;wÂÕÕ ,ôûï¿ÿàëë têÔ 6Ã0xôè?~ÌyßïС:ÄJ"òQf¿Ø¿?öïßÏŠ5nÜXí¤“H$ÂêÕ«áêꊩS§Ê/MHH@PPLLLðñÇÃÞÞ"‘?ÆãÇ9ÕHZµj…¨¨(Î|8fΜ‰C‡É“H$¬@y˜3g‚ƒƒébÔ" ±mÛ6øúú"44T©å]»vÅï¿ÿ.O8•/ÁYÿ;¾ßеÕܹs1dÈÌš5 ýõ—<ž‘‘˜˜˜ ×kذ!fÍš…Z?'^hh(0wî\ìÚµK~ñCNNçÂŒwYYYá›o¾Á”)S ‹kª»„Ô(WWWœ?½zõÂ_|©Tª±‘Å„¼ïžÁþàƒðæÍ¤¦¦âßÿEII‰RõžÉ[úúú077‡ Z·n-/µGê±X cccdee¡aÆœÒrqrrB÷îÝÑ£Gõ%!! X¾|9òóó‘——;;;4hÐøøãqýúõJOª–ƒ,,,”ïÛfff–ãÔÓÓ“Ä*))Qº¦4!„R”žPEuœü GPPZëªzÝÙÙ‘‘‘X±b¢££ƒ'Ož 55éééòïÂNNNèÓ§|||4:¿ˆŸŸúöí‹ßÿ111ˆ‹‹ƒD"AQQœœœÐ¬Y3 4ÿûßÿX#ƽ½½þ¯*úßèêê"00(,,ĹsçpéÒ%Ü»w÷ï߇D"Ann.¤R)Œabb777´k×ÞÞÞèÑ£G•ÿïíڵéS§ðèÑ#DGGãĉHLLDjj*222`hhSSS4oÞíÛ·Ç€ðÉ'ŸÔøÉàƒ²æúbYYYHMMEJJŠü·æ»·°°04jÔ7FãÆÑºukùÈ9X[[+,ý^ö}S={öÄ?ÿüƒ[·náèÑ£ˆÅË—/‘’’‚¼¼Ejj*$ ôõõajj ´oßÞÞÞèÝ»·Jûî–-[xË¡)¢ÊüU&LP+™üîè±-Z¨üÞ €3ZpíÚµ¼óåVFÙ$ðññALL þøãܹs/_¾D~~¾üBÅvíÚaôèѬ‘‚X%.ÕŽU•Uè(Ó®];´mÛVédw£FX÷Ûµk§òÿF•÷¹æÍ›ãÏ?ÿDRR’ü8xòä RRRälj‰ œÑ¾}{ôíÛ}ûöU)Ù¤Î~@c-;::bÇŽøñÇå#Ëâãã‘ššŠ´´4ˆÅb˜˜˜ I“&hß¾=¼¼¼0`À¥ª¬R×5mÚçÏŸGÏž=©TŠÉ“'k»[„Ôy Ï(@__öööpww‡®®.ÍK¤‚‚‚y ±‚‚‚:uÕ©›²³³qìØ1ìÚµ Íš5ÃàÁƒáååÅ)«°yófÞšúê233“)NMM­°\K~~¾¼<‡žž^”u!„BjŠžžžF/$Q—««+\]]kt›7Æøñã52·ªôôô0fÌŒ3Féulmmakk[åmëëëÃÛÛÞÞÞUnK®®® CXX˜V¶_^VV’’’ä·²ÑJe·ÔÔTXYYÁÑÑQžTjժ뾹¹¹VúÞ¦M´iÓ³fÍÒÊöË”•g¬)NNN Ñøˆ*àm º5k֬ʥ¿LLL4òÞýÑGU¹ÊèëëcàÀ8p Jë•OüYYYi²[•²°°@³fÍÔ~}ÍÍÍkäsµ:?ê{¿P–ÊŸ•„¼7n,ñ†¢¢"L:UÛÝ"¤NS˜=’H$())Aqq14hÀ–M*Ç0 òòò ‘H```###•®Ú"DUYYY(((@ii)Z·nÆs®dËÎΖ×tÖ+++A$!!!–––œe†AFF`jj ###V tB!„R{²Hå“J/_¾„‘‘7nÌJ"µmÛV~ßÆÆ†.Â#¤åæærFÙØÛÛk©7„R;ÙÛÛãܹsðòò´iÓPTTęד¢<¥’NÅÅÅ(..®ñ«%ë†aäsbB PÒ‰T+e’NYYYO:YZZÂÈÈB¡OŸ>åÌQð'hž3B!„í+--Å«W¯xG'•ÝgFžH*K,õìÙS~¿Q£FTƒZæþýûœ‹‡»u릥ÞBHíekk‹³gÏ¢OŸ>˜;w.ŠŠŠ°páBmw‹:Iá/‚¤¤$yy]]]0 £ñ“Õõ™®®.aoocÇŽA,×èPvòþ±··‡©©)„B!.^¼±XŒ&Mš@OOHOOÇ÷ß´´4oK-hâ˜666†»»;üýý±ÿ~äåå!)) AAA(--Eii)Ö­[‡‡"11Ó§OGëÖ­«¼]B!„R9†aðæÍ› KÞ=þ¹¹¹°··g%•Ú¶m‹€€ù}¡NHÍZºt)®^½ üöÛojµÁ7RÏž=«Ú5B©—¬¬¬‹¾}ûbÑ¢E(**²eË´Ý-Bê…I§ÒÒR€H$¢Òzj`"‘%%%Édÿ½ûŽo«0÷Çÿ9GÒÑ´lyÈ{Çβã g8ì %” IYm¶·”_áþn[z{¿Ðûº”¶PøÂm)”^Ê(vH€ â, ‰gÙ‰c;v¼Oíq¤s¾8V,Û²-YÏûõò+–tÆ#EËç9Ïó„;$2Î)•J¤¥¥aΜ9¨­­ÅPWWŽã¼³Å&Mšä­0:{ö¬7¡\TT4¬}§¤¤ ¨¨'Nœ€ÙlÆñãÇaµZ!DQÄÅ‹!‘HŸŸiÓ¦…t3!„BÈDa4û¬Nê9G©gÛ»ììl,]ºÔ{9\s”!};vì>ùäÀÏ~ö3Ì›7oPë‹¢ˆ7ÞxÃ纜œ,Z´(h1BÈx£Óé°wï^¬]»O?ý4žþùp‡EȘ2`ÒÉår ¤ÓpPÒ‰Œ¤žI§—_~uuu8tè8Žƒ Á;Õn·ãìÙ³Þ Æ`$°}ûv\¾|ååå())ðm6??yyy˜6mõó'„B€ÝnGCCCŸI¥¦¦&¨T*Ÿ–w©©©˜5k–÷2ÍQ"dì{ã7tzå•WP^^îsÝ/~ñ °,ÌÐ!d܉ŒŒÄž={°nÝ:¼ð p:xñÅéû! ¨á¶(Š”,JÖ‘ëåää 11ëÖ­ÖvÖ¬Yƒ%K–€eYŸÙH³gÏÆìÙ³±|ùr´µµ¡µµ2™ ÉÉÉHNNFTT, , Ž=ŠØØXÄÄÄÖ¯_õë×÷»ßµk×bíÚµ½®—J¥J¥xöÙgÑÖÖ†¶¶6\¼x,Ë‚a@«ÕB«Õë~B!„Œ=ç(]_TWW‡††‚àÓò.55K—.¥9J„L0/¾ø"-Z„Í›7´üþýûñè£ú\·xñbÜwß}!ˆŽBÆFƒ]»vaãÆx饗àp8ð÷¿ÿ÷„ à¤!dô‘J¥P*•Þjºëét:Èårèt:°, ­VëMNq˜Ã­·ÞŠüãp:xýõ×ýƒ#„|+ào”x"dôñTõE§ÓA§Óù½M&“A&“aòäÉ!‰Í“ÈŠ Éö !„BÂÉh4ú­Nò7GÉӿ޿(B†Ãétâ¿ÿû¿ñÇ?þ .Djj*RRR “ÉÐÖÖ†sçÎáèÑ£p:>ë-Z´|ðôz}˜"'„±K¡P`Û¶m¸ýöÛñÖ[oÁétâí·ß¦$>!ý ¤!„B!„ôà™£ä¯:©®®®×%ORÉ3G)55ñññÔ÷Ÿ2,ÿõ_ÿ…ÔÔT¼ýöÛhkkó^ït:qàÀ×OIIÁÏþs<üðÃÉd!Œ”BÆ7¹\Ž?ü›7oÆû￞çñî»ïz»B|ÑL'B!„BÈ„Ñß%Ï HIIñi{Gs”!#-//Ï?ÿ<ž}öY”––âСC())ÁÅ‹QUUƒÁà³¼F£AFF–,Y‚+V`Æ ”l"„ ‘Édغu+î¾ûnlݺ·Þz+>úè##Aˆ4Ó‰ Dˆ¢èÓÛÛ†a¼óú;C—çy¸Ýn¸ÝnïL¨þ–E<σçyÈd2H$êƒK!„ jmmõ[tý%Ou’gŽÒÍ7ßì½Ls”!£‰D"Aaa! }®‹N§Z­–L„bR©o½õ8ŽÃo¼7â“O>¡ïŽ„\‡Úë2ˆ¢—Ë‹ÅÒç2ž¤‘\.˲ýnÏét‚çy8N(Š—EN§V«J¥r¹œ’N„B ˜¿9J=/û›£”••…%K–x/Ó%BÈxÁ²,"""Â!„L(,Ëâÿøär9^yå¬[·Ÿ~ú)Ôju¸C#dÔUI§†ÆFŒF ÆA¯[ŸŽãèÌ2êéõzÄÆÆÂívû\ÿòË/£­­Í§WwæÌ™ƒ3f`ÆŒïûÂ… ¨¬¬Ä]wÝ5ಉz½z½O<ñ²³³‘í³Ì“O>‰/¿ü_~ù%Ž?ޏ¸8ÄÅÅõ¹Íööv<÷Üsxî¹çð£ý«W¯ÆêÕ«ŽŸ„—T*¥$!!„é9GÉ_b©±±J¥Ò§å§J‰æ(B!„‘²,^~ùep‡¿üå/X½z5>ÿüshµÚp‡FȨ0ªÚë1 ƒÚÚË8uæ ÜîÀfH)• (JΞ5`•!£D"Ã0Þç«ÍfƒÍfCMM ¬V+¬VkŸë², ‰D–eQYY‰ÄÄDð<ïmm7©Tê?’’‚ääd¤¦¦ú,ãiÁ×ÑуÁƒÁ€÷Þ{Ë–-ƒJ¥BZZZ¯ûâÙ¶L&ë7ñ+“ɼ÷›eYï:dl`Y–Þg !C&†¡„Àuý%I%s”–,Yâ½Ls”!„BÈhÁ0 þüç?ƒã8<÷ÜsXµjvïÞMUõ„`”U: j._ƾÁó|@kDëtˆÖé •>†a¨ õ®?po2™`2™PSS3àº=;•••˜:uªw>R zVª$''cþüù(**òYF¸ÝnTTT ¤¤õõõx÷Ýw¡R©0uêTŸj§ž÷Å“Ðê/–žû÷$Ð(éD!ãß•+W°yóf¼øâ‹˜2eJ¸Ã!!ÐÚÚÚoÛ;£Ñˆ¤¤$Ÿ¶wž9Jžë=‰†B!„ÑâÙgŸ…\.Çïÿ{¬X±{öìALLL¸Ã"$¬FUÒ)9)‹ŠŠ R©ðÚo´Î¢ذn-š;EÆ¦ŠŠ >|¸ßeÔj5Ôj5{ì1´··£½½ýë_QQQÏ>û ÷Þ{ï ÷›ššŠ¢¢"Üyç}.SUU…ªª*¬]»¥¥¥€n¸aÐû"¤?žŠ:§Ó‰èèhDGG‡;¤ ¡g¢[§ÓÑÙX#¤ªª 2™ R©ÉÉÉágDìß¿[¶lAKK JKK)é4yæ(õ•Tº~ŽRjjªÏ¥ÔÔTètºaÅpâÄ ïgDdddî!„B!Ã÷ÔSOA.—ã·¿ý-–-[†½{÷B¯×‡;,BÂ&àöz#‘Ðq»ÝÈŸ> yÓ¦â³ÏwÂjµÂÒO«±•Ë—aþܹ˜6eJ¯ù8„ŒN§µµµ8räHŸË$''cÅŠX±b¢££‘™™ ·Û·Þz MMMhnnÆ]wÝ–eƒÞ²(99Ù›°Z­Ï›"d0¾úê+|öÙg¨««Ã–-[°eË–p‡4!üæ7¿ñþ~Ûm·aÓ¦MaŒfâøùÏŽøøxèõz<õÔSá'¤DQÄ“O>‰'žxÂû=íÔ©Sؼys˜##=9Ÿ$Òõ‰%Ï%Ou’'‰4sæLï员£TXXèýŒX¿~}H÷E!„BÈ`=ñÄËåøõ¯¥K—¢¸¸‰‰‰á‹°•MцÁü¹sq±ª+«zÝîié5¯°I‰‰„Àæ?2Ú\¹r&“ÉoÒÔÓFoåÊ•ÈÉÉR©o;»ÔÔTtvv¢³³MMMˆŒŒ úÀB»ÝŽÎÎN€J¥¢³4!$Ün< Ün@‡CË, H¥ $@"aÀqß^KÚÚÚp×]wa÷îÝ>×{ªfÉÈp»Ýhnnî³å]Ï9J=“Jž ¥´´4$%%Q+\B!„BðØcA.—ãßþíß°dÉìÛ·)))á‹7ªÚëðž%9on!,VkŸI'‰D‚y……Ëå”t"cVKK ŒF#\.W¯Ûd2”J%V¬X¥R …B û5"‘Hšš ‡Ã¦¦&455eÙ 'l6›7é¤V«ÔíBÈD#Š€Û ð¼ˆ®.<ßý»É$x“KJ%Žc “1ˆˆèþ^$‘„¶Š$˜¾þúkÜqÇhllìu%‚Ë3GéúDR_s”<J7n¤9J„B!„„À£> ŽãððÃcñâÅØ¿?ÒÓÓÃ!#jTµ×óì –-Y ›Í†öŽœ9{Ög™‚ü|Ìž5‘‘Z¿±m}ÿ47· ©¹Ù{›ˆîåaÑ‚HHˆ‘ûCHN:…–––^×K¥R,^¼+W®ìsBaa!¬V+ªªªpèÐ!,Z´hPóAÌf3®\¹‚ª*ßÄ® p»Ý¨ªªÂ¾}ûP\\ŒÌÌL¬Y³÷ߟÛ{íµ× Ñh Ñhú\ÆjµâøñãÇH!cÓ)ÂáQZêDK‹--nÔÔ¸ÑÕ% «KÀáÃH¥6H¥|ýuk@Ûä¸îЧ´4)t:QQ,&O–!)I‚ÄD rrd` ÄÝÍ$Š"žyæüú׿ö{2Ð]ÕÐÐ@gû ç%³”®\¹‚˜˜Ÿ–w™™™A£D!„B¼‡zr¹?úѰxñbìÛ·ÙÙÙá‹3*ÛëÝí@’“’°pÁ|œ=w@÷Á Fää$äMŸÖg2Ìh4¢­½Í×拸¶ŒØ}›Ëíÿ@!#­³³6›­×õS¦LAZZbccû\W«ÕB.—ššš`0 ‚·ýÞ@ªªª°k×.\ºtÉçzA Š":::ÐÐГɄïÿû˜;w.ÔjuŸÛ;rä8ŽÇq}.ÃóíDE…‚Ab¢Z-ƒˆÙÙRDE±ˆŒdG´%_gg'î½÷^ìØ±cÀeKKK'|ÒÉáp ¡¡ÁouÒõs”z¶½é9J„B!„¡yàÀq~ðƒxO“'OwX„ŒˆQ×^ÏÃår!9)üí_õî_­V#%9Ó§Më³­žáº¤SOF“ ¼Ë5â÷‡:::`·Û{]ïI:ÅÄÄô¹nϤScc#ŒF#Ün÷ ’NžÄS_T*”J%î½÷^DEEõ›t:|øp@û%„ñÄhPSãFe%/¿´£½]@[› oò'#C‚ÈH ƒ¨(11,bb$X³F™ŒT Èåݳ°Û»M.—£Q„Å"ÂbÐÔÔÐêÞ§ 6›«U„VË")I‚¤$ F‰ôt)4fÄZò;v ÿò/ÿ‚Ë—/´ü©S§°qãÆG>ž9Jþª“<—{ÎQò$•zV(%''Ó%B!„BƸ{ï½Çáž{îÁ’%KP\\ŒéÓ§‡;,BBnÔV:@dd$¢¢¢pó†õ¸Pq**ð³Ÿü©)É`ô•6’H$`YÿZ˜k?„Œ555àyÞ{Y©TB©TâÎ;ï„TÚÿË322Ò;çÉf³¡¹¹.\@~~~@ûž?>æÏŸ¢¢"Ÿë=„•••8räŽ9‚uëÖáÁă>¥Réw{§N‚^¯ïwîS{{;žyæ<óÌ3ÅH!£‰ n·ˆÏ?·áâE**xœ>í„ZÍ@¥b0{6‡ùó9Ädz˜~ø}÷Ìf3~ðƒàý÷ßôºçÏŸöþCÅd2õYÔsŽRÏ–w™™™X¼x±÷2ÍQ"„B!„ôtÛm·áƒ>Àí·ßŽåË—c÷îÝ(,, wX„„̨m¯×s¿sçÌAbB"fÌ@rR’wæLOMÍÍøêðüò+8¸Ýn¿Û«¸X‰K5µP)•¸íÖï 7'g$î!>xž‡Óéô93œeYLž<K—.…$€AR©Ô'ÁÓÞÞŽŠŠ ,_¾< "##‘’’â7é䑘˜ˆ©S§âÃ?Duu5JKKûL:yNý%†¡¤!dLho¼sšêê\(+ãátŠày))ètDG³HO—@¥b|ª“F Ç1à8 3S ûscÎÀd`4Ѝ©q¡½]@k«Ÿ|bED‹ˆ……RS¥HK“@«|f¬¢¢›6mrÅREEÅ f‹¿9J=“J}ÍQ*((ð^¦9J„B!„¡¸ùæ›ñÉ'ŸàÖ[oÅÊ•+±k×.,X° Üa£>ét·ËËÎÊÄäÜØl6¿Ë¸ÝìvL&S¿Ûây<ÏCðN'Ív"a!œN§Ïu,Ë"&&“&M x;=|Ùl6ttt-Fˆˆˆ@RRÀétøú"„ñ@¶6/òøæŽuÀå‘-EV–k×*¼ ŸÑ†ãpmfTw2ª­M@k«€íÛm(/ï®ÖjmucÑ"9"#åƒN:}ôÑG¸ï¾û†õy`·ÛQ[[‹¬¬¬!oãz=ç(ùk{W__—ËåM(y~/^Ls”!„B!#bÍš5øôÓOqóÍ7㦛nÂgŸ}†o¼1Üat·× grFE8Î^é{ÊHOÆuk0gö¬î£E×Öáù½GâL!•J‘™‘AI'.— ‡Ãçº3f 5µ»}d l6›O¥”ÉdBcccPã”J¥Þ¹Qá~ „PëèÐÞîÆïoDk«€«WÝÈÉ‘âÆ9|ç;JÈd½g4v±±,bcYLá­Þzë-+^Ý‚çŸ7á¾ûÔ˜9“CA¹¼ï ·ÛÿøÿÀþð‡ ÄuþüùA%zÎQò—T2 ½æ(Ð%B!„BȨ²bÅ ìܹëׯǚ5k°cÇŽ€»2VŒ±C'}S)•ˆ×ë»Ø‹<ɦoíN@]ûeYDj#Â)!ÝÏ¿ë[è%&&œpЫ$Ïó°ÛíA‹è®2”ËåÞý þg¥BÈXwú4ª*••fø(• ”JK—ÊQ[ëFM o¿mÅ¥K,4'æÍ“`}’NÇŽÃw¿û]Ô××5–矯¿þz¯9Jž$’gŽRjj*hŽ!„B!d\)**ÂÞ½{qÓM7á–[nÁûï¿7†;,B‚bLÌt „Ûíö©ú d4“J¥Þ "¬¬¬A©]WWç“r¹\A hµZh4DGGãüùó(++ÃÃ?ŒÈÈHhµÚ î‹BFšÁ `ÿ~;öï·ãøq'fÌáûßWcåJùÀ+a Ó]É•™)Áœ92””ð8~܉{îià 7(°h‘7*ñ·¿ý ?üp¯v°Á‰;vÐ%B!„BÈ„UXXˆ}ûöaÕªU¸í¶Û°uëVlÚ´)Üa2lÏt"„Ã0^7D«Õz«ŠÑÕÕåÓNa°ô~Š‹‹Ã´iÓðÄO`êÔ©˜6mÚ€ûaY¿üå/½3"##½ ³¥K—"##K—.…^¯‡Z­îw[*• +W®„J¥Âܹs‘““À=%„àr8DØí">úÈŠš:;,[&GZšééã¦< ƒÌÌîVª ˜LŠ‹ xùåŸà³Ï^Ù~›šš‘‘²íB!„BÈX0sæLìß¿+W®ÄwÜ7ß|wÞyg¸Ã"dXÆM¥!c‰¿™N½ªŸúÓÙÙ9¤¤S\\üñ€öáigô‹_üÂïíK—. ,ØkT*V­Z…U«V j=B &»]„Á àíðtm»ûn¢¢XDFN¬6nr9Q¬Â‰ïáÌ™Z\¾\…¶¶ÓÅàW7õÔÙÙ‰+W® >>>¤û!„B!„Ñ.//ÀŠ+p×]wÁétâž{î wX„ % ‰D–e½IQ¡V«{U?õ§´´mmmÞË2™ J¥2è±BÈxR^ÎcçNvî´!%E‚ 8ÌŸÏA­žXɦëEFFaÞ¼tœ?ÿiÈNçÏŸ§¤!„B!„˜2e <ˆåË—ãûßÿ>œN'î¿ÿþp‡EÈÜ^’NÁe³Ù`·Û}*UF‹ˆˆp7¨Vop80€òòr\¸p;wîìw‹Å û5–˜˜ð¾DQô®ëÁ0 †ÁŽ;yhˆb÷Ïø ^û!žD©çß`ày<ÏC8p=ôPжMúÖó=dûöíãþˬ(‚X­X–ÃtWù|üñÈÆaµš½'lÝú÷‘Ýy?xÞ›Í:¢û\¿~ý *| ùàƒ°}ûvšF!£˜Ëå‚Óéô^>pà¾úê+üîw¿ƒÓéôÞ&“É “ÉÀqär9är9jkkÃ5!„Œ“&M¡C‡°|ùr<øàƒp8øéOî°´‰5¸`±ÙlèêêBWWW¸Cé…ah4J: ƒT*Çqظqc¿Ë•””ÀápÀápàÆoôÛvïzƒF£•••>׫Õjh4LŸ>}ØñƒÁ À`àtŽídD"@"!‘´‡;”QeY°,Ôꄆ†466Âb± 33™™™AÛ6éÛ—_~éý=-- éééaŒ&´Ìfn46º‘”Ä@§cÍ"Ç­=¹\¹\iÓfŽ|}Ø¿ÿóO:¥¥¥aÞ¼y#ºO2v½ñÆHNNFff&RRRÂ!„>Ô××£¶¶555º[¬kµZäå塪ª ÕÕÕ·Û Nt&„222¼O=ôœN'yä‘p‡EÈ PÒ)Ll6:;;ÑÜÜîPzÑjµ”p&©T …B 6ô»\gg'L&L&Ö¬Y™L6`‹½††444x«ª<ôz=âââÜçHihp£¾Þ³Yw(ÃÂqnÈdnÈåUáeTH$H$ÈÏÏÚ6Ož<‰“'O¢­­ ³fÍ 7Ü´m“¾]ºtÉû{aa!æÏŸÆhB«¥Å’'ŒF²²¤×~$` ^HTV–#""Ë–­ùú=ÿû¿Ï¡««cÄö)“ÉFÍgýú(~õ«_…;,BF3Ȉ]]]èììDYY, , †ÁìÙ³1kÖ¬p‡2™ jµ·ß~{¿ËÕÖÖâòå˸|ù2V¬X­V‹ˆˆˆ>—w»ÝرcÎ;׫߬Y³0kÖ,Üzë­A¹ÃU^Σ¬Ì‰ŽŽ±tR(x(<ÔêãáeTð$FW¬X´mªT* Èd2ÌŸ?À× ŽmÛ¶y_¸p!6mÚÆhBÃh쮸üáÛ¡Ó±¸ñF<¢ÃAì9(üOÄÄè£Çš5·…'ˆ>ÜvÛ}ø·»GŽì‘ýuttÐë JZZn¸á¬_¿>Ü¡BéÇq¨¯¯÷^Öh4HHHÀ²eËP[[‹ýûGæ{!„Œu‰‰‰8xð V¬XÇ{ ‡?þx¸Ã"$ &>ÉÉÉHOOi¼dhÞ|óÍÛ×Ù³gQRRвv»v»põêU0׎Æçåå!%%)))*QNÆ—§ž2 ±Ñ ³YÀ¯ ¹œ+œ¤¤4üò—¿ÇÏ~öìÜù!¶m{ ÇÔ–ËÕÕÕ”t"„B!„~èt:ìÝ»k׮ųÏ> §Ó‰^xÁ{‡ÑfÀ¤“^¯GWW ¥¥%äG¢(B­VC¯×ë ‚o¾ùçÏŸÇùóçqêÔ)\¹reÀ¶< ÀaL›6 qqq#éèí}NtuuÁf³ù]®­­ ---°X,ày¾×íÙÙÙˆŽŽi¬düE ÃxP.— YYYá‹AioÐÖæFU• ÑÑ æÍã —3 óe†N¥Òà¶ÛîÅm·Ý‹£GkñϾ…£G·Âdªö¶/]º„ !„B!d|ÓjµØ½{76lØ€?ÿùÏp8xùå—)ñDF¥“NÑÑÑÉdP(½Z@‘Àxæ¦DGGC„A!ì™åt:!“É “ÉÀÛ’KpŽãF¼"Ás?¶oßx饗PSSƒššš€ž+ÑÑÑÈÏÏG~~>¾ûÝïNÈ*ôôtDGGC*•¢ªª iii½–±X,8}ú4¾úê«^UN,Ë‚a¬^½šZëbž×.ÇqP©TÞË*• W®\Á•+W‚¶/‰D¹\FãݧR©ôÎnò´Le<ÏÃápÀét¢©©É;÷éÊ•+0hhh€N§ƒR©× s2~X,"ŽsàÐ!;¤R 7Wйs9ªp ¢ 2”ô+ÔÕý;þ÷ ±ñtu} ƒ¡mHÛ£¤!„B!„F£ÑàóÏ?Ç-·Ü‚W^yN§¯¾ú*u©!£Î€I'žç!•J˜˜Èd2ïAK20›Í›Í«Õ žç½•=<ÏÃb±@­Vû$L&\."""Â6/JlÛ¶ °k×®A­o¼wÜqòòòBÞ¨§Õj¡T*!•J½3x®g±XÐØØˆòòò^·1 ‰D‚I“&A.—DÈdd2Ôj5T*bcc}~?sæLГNÇ!&&Æ»Ÿ˜˜Èårp…Bá}²Ùl0™L0hkë>`ì©Nô¼wuvv%Ș`±¸tɅÇX½Z´4)bbèËw°%&JËâÝw 0yr.| rù!œ>ý¶oßî÷³¬/”t"„B!„À©T*ìØ±›6mÂ믿§Ó‰7ÞxƒŽ×“QeÀgãÅ‹Áóûì3¼öÚkƒZ/22‘‘‘(..öþ>Q1 ƒØØXäææâìÙ³èèè€ÍfƒR©ô.ó /àÊ•+~gcåää`Ê”)Ðjµ#6¤»ï¾»ÏÛ¸ —`xªáyIHH@FF***páÂtttx—9þ}úH‡LÆ!Ï{UjjªOÒÉS¥IÈhf2 0E\ºä‚^ÏbæLŽN# !¡{PVR’¾úÊüülÞ¼›7oFGG>üðC¼óÎ;8xð Ï÷úúzðø[¶lÁ|€Ûn» ï¿ÿ>uB"£Â€I'ƒÁ½^äädoû6—ËòÀÆ –e µZ3gÎ ªÊ©§êêjð<–eqÿý÷{[eõÔÙÙ‰¦¦&455¡¤¤&“ &“ ÈÊÊBfffP“N§NÂñãǵ˲˜1c¶lÙ2¡+œzR«Õˆ‹‹ƒ(н’N•••hiiñ»žL&Cbb"%HPH$DEEeYœ>}Ú{=%ÈX`4ŠhltáÒ%©©rÌœ)ÍR ½„„îï…=“N?þq÷É5 ÓÝF÷À<€¦¦&¼ûî»xçw|¾;¸ÝnÔÕÕ!;;;,÷B!„BÆ*™L†­[·âž{îÁÛo¿ï|ç;øøãé$v&<-½8Žó{†*éŸ(Š`YÇÁn·9a·páB,\¸EEE}.ã©fš>}:V­Zå½¾¸¸‹%(scìv;ìv;yäX,–A¯ÿË_þË—/Ÿ°3œü‰‹‹ó&Ž®^½Š³gÏB¯×ãÀýÎÉúÞ÷¾‡É“'¹zŽëi4¨T*ŸëœN'U·’QM£Gøè#+æÏçPP Ô)ÔËz$Ý}· »wÛ±{·»vÙ“#CNŽïÿARRyä<òÈ#¨®®Æ;#wÞyååå¸té%!„B!d$ Þ|óMp‡×^{ 6lÀöíÛ{ß!d$Ô|FEšå4 Áxü8ŽóVš –T*òº×kjj‰'`±XUý P(‰Å‹#===(±Œžöz,ËÂl6£¥¥_ý5jkkýìW*•ˆŽŽFnn.¢££Ã1¯DQìurL& Úû!¡P_ïFK‹íí¦O—!.Žž¯#M¥bÇ"3SŠÒR'š›ÝèïkOvv6~ó›ß ¬¬ §NBjjêÈK!„B!ã ˲xõÕWñàƒ¢¸¸k×®õ;ªƒ‘ð©À”t /™L‰D2¤uƒ™tjnnFIIÉ «œär¹7é$•Òè=©ÕjÈår°, ‹Å‚ææf444À`0ø­ŒS*•ÐétÈÉÉCý£Hù›Ù7œ÷BFB}½ëZÒÉiÓ¤ˆˆ ¤ÓHS©èõddHpò¤“&É Š¨ÅaAAAè$„B!„qŽa¼ôÒKà8þóŸqÓM7açÎ4Þ„„E@Gÿ©Ò‰ÝsŽ9‚^xaÐëaÍš54ÌΉD‰D‚©S§âêÕ«¸téRŸË²,‹yóæá¦›n¢êtƒííí>×%&&B£Ñ„)"Böê«fÈdÀüù)A.¹¹R¤¤Hð補9ãDl,‹+¨8!„B!„Œ†að?ÿó?ËåøÓŸþ„•+WbÏž=ÐétáL0TéDvðàAœ;wMMMƒZ/** .ÄøÃE6úxÚ”uvv¼Nrrò€m ¿óï //±±±ƒÚv8<,VëØž'.¸Ýø¥¥¥á…BH*++qþüyïå®®.ÔÔÔà­·ÞÂÙ³gÃ!„L,O>ù$är9üq,]ºÅÅňwXd‚ J§1È`0 ££íííp»ÝÐjµˆˆˆðöè Õü•²²2´¶¶z½‰”tò¼Nìv;ìvû ’N¨ªª êöÈè4šþŸG:–êêjìØ±cD÷I0æN×ki¾ù&ÜQ Þ©Sc0èA ãJ$ØÊËËÇüû!„L4èììDMMM¸C!„ çÿüŸÿ¹\Ž_ýêWX²d öíÛ‡¤¤¤p‡E&€q_éT|à¢uшÖéž–îp†ìÊ•+ؾ};>þøc@||<ôz=8ŽCcc#ŒF#þú׿B¥RA©TböìÙÐëõÐëõp:p»ÝÃŽaïÞ½èèèôz6l@nnî°÷?0 Q¡Ñh V«ñÏþ³ßåÝn7Nž<‰“'O¢¡¡Áï22™ sçÎEaa!âââBvH\¾ìÂåË.c»½ǹÁq.(!Ù~ee%.^¼èsÝúõëC²/<ö<Q*•"##éééP(|g²H¥RH$Ìš5Ëïöpüøq;v %%%Å P( —Ë‘““ƒ•+WbÅŠC¿CÑh„ÑhÄ_þò455Ü5""0{öl,^¼‹/e˜Aår‰(.¶cï^;n¸CR’dÄç9Y,&˜ÍFüóŸ/áêÕf\½Øã®R©ž> iiÙ¸óÎBåÈEàÄ %%N,XÀ!7W†Ü\Y¸Ã"£ÀPß«bbbÊÊJ,_¾Ë—/ÇüùóC-!„¡:|ø08€ýû÷’’’””„ï}ï{ؽ{7víÚæ !dbùå/ Žãðè£zO©©c÷9®tiF£v‡cH=ãõzH$H$DëthjnƉ“'±ù_þ2™ 7ö~tvv"%%)))ÐëõP«ÕP«ÕH$p\{œrrr¼ B†aÐÑÑÎÎNÔ××C¥RA­VißžíwttÀf³¼ž§ Wff&¢¢¢†´ï±ŠeYÈd2deeõ»Ü‰'`³Ùàr¹ R©ü.³páBLŸ>yyy}.3¹Ý<ìväò±t’ËyÈå.(•†l¿­­­×ÿkBBBHöåoßn·V«*•ÊÛšsòäÉÐëõˆ‡Têû1á™étýsûêÕ«hmmÅÎ;QWW7¨Ùo.— @÷{MDDÄ€¯ò­²²2œ?gΜASSL&SÀëzzíÛíö1÷¸×Ô¸ ‘ØÀ²vÌœ©ATƒ¨(vÄö_YYŽªªó¨¨8‡«W›a±þ¸ó<»Ý›Í‚ÔÔÌF><ŒF€R©@V–bà•ȸ6œ÷*«Õêý]£Ñ !!aL½_BÈDséÒ%Ÿc2™ *• IIIÞ“ž!„Œ¬Gyr¹=ô/^Œ}ûö!3s|þ=JF‡QÛ^Ï`4vÿŒƒ^WŽãÀ²,¢u:œ8YŠ={‹qóúõP«UÉFm®­O˜6mòòò——×çr‹‹¥¥¥hkkCkk+••…˜˜¡ ôv80ƒ®rbY‰™™™ÉÆ^¢o8X–õ{`þzûöí0é´xñbdgg¹,v;£Ñ ©tl'  µzðóÌÑØØ¶¤Sgg'\.,‹7éÄ0 òóó¡Õj¡Õj{­#“Éü>·m6._¾ŒÏ?ÿN§Ógxð@\.\.´Zí˜{®‡ÓñãÇQ^^ŽÏ?ÿf³yPëzNê°Ùlc.éÔÐ`‡TjËÚ0s¦r9ƒ‘ìàzöl ª«/ààÁ]°Z÷¸ó<‡Ã«uü&ŒFl6ÇŽ9¡P¨‘•5´“^Èø1œ÷*›Íæ=鉒N„2úÅÇÇC£Ñx/Ëd2(•JJ:BH˜ýë¿þ+8ŽÃ~ô#oâ)'''Üa‘qjÔ¶×cûÂÇŸlÏó­­Ó!Z§Ãß_zÑÛæ,=- I‰‰ˆ‹ÅÿÿØcX·f5Ö®^ˆ_‚Æ‚¢¢"Ìž=»ß„oÔêÕ«ƒ¶ïÆÆFŸÖ[JIIAzz:”J$~½ÆÆF444à“O>és™èèhDGGcÕªU#™< éC‡ù\Ÿ––†ôôt¤¤¤ j{ûÛßðé§ŸâÓO?ÖgE{{»Ïí=¹Ýn¸ÝnÔ××{br¹|ÈûëNœ8'NàÇ?þ1€áÒÒÒÒçA`OB°¡¡QQQˆŒŒ'=ê€Ý.bÊ""˜ÛoYY)Î;‰ÇÀÐw“É€ÆÆ¾×µÙ,°Ù¬°Z-HLL˲`˜‘«ä®äd ÔjÛ¶ÙÐÔäFc£ÉÉ#ÛþŒÁ|¯ D{{;xžÏóÔ2„B!„ëÜÿýà8?øÁ°dÉcêԩዌC£¶äG´”ÌÈÏÉ“¥­“šš‚‚ü|ð¶˜s¹Ý°Ùí0›Íèê2 ªúŽ/ÁŠeKCýøb6›qåÊ•A¯§R© ×ëCÑØfµZQSSƒ'Nô»œ§ÂÌívƒa°ìØ9àHF¯ÖÖV477÷j—˜˜ˆøøøAÍ kkkC{{;>ýôÓ^s©‚éÈ‘#¨®®Æ¥K—ÐÞÞ¥R •J…¥K—"==ééé!Û÷hTQQÇã‹/¾ºƒ¸ÅÅŸ|ù2êêêÐÙÙémÓºjÕ*¤¤¤ 999$û DS“ ÄÅÜûbMÍE”–Á×_Þãîo]Qqùr5êêªQZzN§<ïDLL<22&!##“'÷âÉh¡PQQ,8ŽÅ"RÒi‚©÷*³ÙŒòòrœ?ååån·“&M”)S0eÊ–L!„BÈ5÷Üs8ŽÃÝwߥK—bï޽ȿv<`µ•N…sf#99 .TÀyí¬Å¾def¢hþ<¬º6€Þó×GŽàü… ¸rõ*\n7œN'Ün÷ˆßŸ±ìêÕ«8{öì ×‹‹‹£l¹ûöíCii)N:Õë6‰D©T F»ÝŽŽŽÔ××#**jÂ͘kQ IDATÅ"Áåi½yòäItuuÁ`èžQ¥R© R©0gÎhµÚ€[^Øl6=ôUWÝÕ^<þþ÷gQ^~ çÏŸöã.•J{UêEØsðc¤~A€>.3òò R©À ÐÎ'+3ÉIɈ‹õþa+Š"Ž~s 5µµ°X­sRSR0gö¬¿?c9Ée±XpõêàçÙ¨T*ÄÆÆ† ¢±Éó<8rä._¾ìwæT*Çqˆ‰‰B¡€ËåôÀmBüñ¼Ž/_¾ìM8ß¾N“““ÕcÝjµ¢¬¬ Û·oÚû›L&ó9 ØÖÖ†ŠŠ ìÙ³•••ÞAÏóØ¿?Ž;†sçÎeÿ£Ëå‚ÕjÅöíÛQQQ´Çýú¤Sss3JKKñå—_¢¶¶n·@w‹C§Ó‰]»váøñ㨮®ÊþÃåaµŠèê ‘ŒL¥“ËÅÃn·aß¾OQSs1({wÒIás]iéQœ>} g· Þý86TV–aïÞí¸zµVëØù<ˆeávwW¦‘‰#TïU}ùøãqôèQŸ„Ð]Ù{ìØ1¼ûî»p:„±=c’B!„`Ú´i>úè#˜Íf,_¾ÇŽ wHd ¸½^8’&ž¡ö?ûן`ÿÁCØð`¯e¤R)$ úñ!—Ëár¹]]tvua×{½dþýY™ˆÖéèÏA0 ¸|ùò ×‹Å”)SBÑØ´}ûvÀ™3güÞÎ0 .\ˆ%K– µµÇG{{;>Œ… Òl2dgΜACCêëë}®ÏÎÎFVV233½Í—_~‡Bkkk°ÂDbb¢O⫼¼}ôQ¿ëœ;w<ÏãÎ;ï Z£UII ¾üòË >æ@÷,¯ÈÈHïå²²2¼ûî»}./Š"Î;‡wß}wÄgε¶ ¸|ÙQt:ÙÙ¡ï|îÜI””|…ŽŽ¶ mS§‹EVÖdŸë>ÿüC´¶6û]Þóe÷îm(*Z†¸¸Ä ÅJ99RÔÖºqöl`³9Éøª÷ªëÙívØl6oû>  Ž=:äÏ;B!„BÆ« 6à“O>Á­·ÞŠU«VaçÎX¸pa¸Ã"ã@@§‡«JÇS’™‘Ž”ä$ÄÇÇ÷Z&^¯GÁŒ|(rH¥ßž©­P(­ÓaQQÒRS ñP«Õcºê(<³…K©TB§Ó… ¢±Åóø>}§OŸîs¹iÓ¦!33IIIÞª†aÐÔÔ£ÑH‰R2hf³---hhhð©nR(ˆŠŠBff&¢¢¢À0Ì ·]VV6¤ H8ŽƒZ­†J¥‚¬GU« >ï=•±Akk+ÊÊÊ‚¶=OkňˆpÜ·­Ï©Î W¯ÍÖ]å¤Õ²P(ŒD§¬ŽŽVTUÚöärT* ´ZßÏÇžÕM}Å—M´Z ˜Í"C¡“aö{UDD„ßrƒyë]!„B •Õ«WãÓO?…ÛíÆêÕ«qÐOÑ!ƒ5jÛëõüÉHOGJr2âõú^q%ÄÇ£ ?r¹‰Ä»ŽR©€N…EE š’ê]V­V{ìP{½À 5é¤P((é„îÇÏ`0 ˜tš:u*²²²˜˜ˆäädhµZ ¤2³ÙŒææfÔ××û¼†{&†ú-++ ÚYì2™ÌoÒIEok·¾L¤¤ÓÕ«Wƒz W©TB©TB£Ñø$€ÀN6 ÇçšÝ.¢³S@D…‚úîzèèhEeeyжÇqòkI'ß9}‚0ð¼ÉîçúØù>¡Õ2×’NÜn‘’ND°ß«´Z-’’’üÞèûP I]B!„B&ªåË—cçÎ`ëÖ­ÃÞ½{ÃãFu{=‡Ãy…s0er.¾ÿà½Iœøx=æÏ›‹Mß¹¥×IÏ嵫oBLt4âñÅÞbL›:Ӧޖo±±±ÐétÈÊÊêuPp$ð<£Ñ8¤ŠµZ ½ŸDáD"Š"Ž=Š={öøátÿÇÆÆâ®»î{íjtt4RRR››‹ŠŠ 444àÌ™3˜={öH†Oư“'O¢©© >×§§§#;;ÙÙÙÞçÛPTWW÷ùœ FƒÉ“'#77·Wr{Ê”)¸å–[úmõ6eÊlܸqØqŒA™£Äq8ŽCQQ€o[ÙzäææbãÆý~ÉœQ1X‰,ËbË–-n·»WÒI¯×#??‹-B}}= ‚w¿sçÎÅœ9s&Ôëb¸ÿo2™ 3gÎÄÌ™3û|_JNNƼyóPXXˆ¦¦&477CE°, †apã7bΜ9a™Ùçi¯§V³¹ó0†÷\º÷©Sg`êÔ™hh¨ÄO_À¹so€ÍfAGGªª¾­¬’JeHMÍ@JJ&’’R¡ÑDöZw´R©ÈdÝÕNF£•jd…$ü†ûšéù1þ|ÄÆÆö¹ì¦M›päȸ\.47;M«ÕbÆŒ(((€\.‡T:fþì!„B!$,,X€ââbÜtÓM¸õÖ[ñÞ{ïá–[n wXd 3§›* Djµ˜œ›ƒ˜˜À¼ÂB¤$ûo·a2›ÐÔÔŒ·ß}‡¾úÕ—jPzú jjkÑÞÑ1’¡ Ã0`Y2™ÌïAªP3›Íp8CN:…£:k4©ªªBcc#ÚÚü ÷$.\Øë ¾V«õÎ0ð$ˆ'áÔØØ“Éä½^.—#222¨I§áð¼¯mÙ²³fÍ‚B¡èµŒ^¯G^^.\ˆôôtŸÄ,Ã0ÞÄȬY³†ËX1ÜDÐýžSPP€-[¶@.—û=1À“tš3g’““½ûôœ±dɆ%éäi¯§Vw'3Fà ÿù.•Ê0eJ6l¸2–íýy^X¸yys0iÒÔëÖ•"##7ܰ‰‰©ˆˆÐ+–‘¤T2ðtÌ48ÔÞl"Æ{UÏψ@’NsçÎEBB‚ÏõZ­³gÏÆw¿û]onB!„BHÿæÌ™ƒ}ûöA«ÕâöÛoÇûï¿îÈÐ)£a&‘§]Þß¿_9‚¯ÇâÆE áv»ýÎühhhı’tuuaöÌ™˜5³Ó§M…ÕjE}Cr²³Gú.ŒI׸TLL ”Je"<\¶nÝ ›ÍÖçr÷ß?²³³ý¶!LIIADDÞxã oµÔO~ò“aÈ!#ïå—_Úò………˜3gNŸ·755¡¤¤¤×õƒƒ¯¼òÊ b€üü|äçç#""Â{ݲeËPQQ . z{©©©¸ýöÛqûí·cÁ‚0›Í8wî\ŸËÿñ„Õj…ÅbAee%¢££¡Óé?è}eX¶l>ùä“A¯ ­V‹÷Þ{)))HIIÁßþö7¿ËzÞ¿^zé%˜Íf˜L&ÔÔÔ 66111Þ?ÂÁáa4 ˜6M ¥rdÞ ““30þïôºZh4Züßÿû6’‘ŒÿÇÞGÇUß÷ÿξißwɲåMÞÞmllc³°˜Ò„BKKBOzšÐ~Ûðk ISÒ”Ó,‡5qb  Æ`ÞÁKx‘dK²dmc-3š‘4š}ýý!æâA’µ,Éú<Îñ_ß{ç3wfîù¼îçýyþù_ö»®J¥f󿻨¼ù.Z[ŸÆnïÁn·1}ú,4-Mß`v¢“Ë{G;%%Ééì ’‘!B§©`4ç*è{Laa!O<ñ?úѨªªÂï÷ãóù˜7oJ¥R„M‚ ‚ ‚0L .äСClذ{ッ×ËöíÛÇ»YÂ$2)ætºœZ­fㆠÜzóÍWìÌŸY4ƒôô4Þ}i©©Ì**⺅ ¥ûhÌE2\ºt©OÉ«¡HMMÅ`0ŒA‹&­VKbbâ€å«222ÈÈÈ`ãÆî#..ޏ¸8233±ÛíX­VjkkINN&i’”‡®]Ï<ó /¼ð‹³Ù<èú …‚… ²`Á~ñ‹_ ×ë‡Lëõzôz=©©©£iö¤¶qãFJJJøä“O¤îJÂåð¾õ­o±iÓ&6mÚ4ìÀ(&&†˜˜233GÓô¨ñùB8!´ZJåÕ V­Ú@qñ"N:ŽËåÄår^qýðqß²å>V¯ÞȪU7‘0¼svffÎhš<¡(•2t:NgŸo¼[#\ #=WæËçÎ;Úæ ‚ ‚ ‚søða6lØÀŽ;ðz½|ûÛßïf “ÄG:M¡Pˆ@ 0h›4Z- r97lÀ ×Qyþ<%×-F_&g*ñz½ýŽ$ÌT.c"“ÉP*•¨Õj|ýô°Éår)**¢³³sÐý%%%áõzñù|ÔÔÔ››;)ÞÃÝÝ>Ngp¼›2*Á @ÀO(dñ>ú{Œ”ËåÂn¸-.—+ªàv»q8Ò{[¥R!—Ë™?>÷Þ{/‡¦³³“®®.ìv; ……BA\\ $$$0gÎ (((Àãñp»ÝÀ—e<}>‡cHŸ‹©Èãñ —˹÷Þ{ihh ±±‘úúz¼^/^¯µZ-•Ì+(( %%…ÔÔTÖ®]KNN'âØ^~ó…ÝnŸÇÝfsâr9ðzu8 l¶±¿Îx½när9·ß~—.5réR#Fc#>ŸŸÏ‹J¥F­Ö VkÈÎÎ#11…¤¤T–,¹ôô,¼^6[—´?¿ß‡×ëÅãqG,¿V¹Ý‚AÝÝ>:;UtvªÆ»IÂé¹j kÄå¼^ï¤9_ ‚ LU‡#â{f Àï÷ÓÓÓƒÇãÇ– ‚ Ã5kÖ,>ÌúõëùÎw¾ƒ×ëåá‡ïf “À¤é XRïrZ½NÇÆ ë)¯¨àlEň“©n4¡ÓT°9<ïÉ@¡“R©V蔘˜ˆÕjÅçóQ]]L&#&&f,šU6›»Ý‡Ó9qÎ#øñû}ƒ#tr»ÝW Ün÷˜…NÐûþU*•Èår,X@aa!444 q:Ò|niiiŸŸÏÖ­[ILL$11±OG¢†N.—óÍo~“ÒÒRNž<‰ÅbÁn·ã÷ûÑjµÒÉ%K–0{ölfÏžMaa!Ðû:^~ì/ï ˜,ǽ§Ç‰ÓéÄëõàt*èî¾:SSÊdr6o¾›òò2ÊËKéì´ât:ðûýh4Zbbâ0b™?1……³(,œEnî4<7Ï—ÇÝçóáóyðxÜtwOüc>Zn·—`ÐKW—‡®.:M#9W t¸œA&>»Ýñ{$ âóùèéégA&¡éÓ§säÈÖ­[Ç#<‚×ëåïÿþïÇ»YÂwͦÁ``0ÈÂùó˜_<—{¾ñõñnÒ¤ät:£Þ}- ÏÖÐÐ@CCÀëíß¿Dû?pàÀ[&\+Æã=0ÜÇôûý8Nººº¤¹šž{î¹!m{ðàAüña·Q€®®.ººzGÎ\iެþ¼ýöÛcѤ1óé§ãÝ‚/Ùl]Òˆ¥ *‡µí®]ßcm²z÷Ýñn0QŒö\5ÙÎW‚ S]cc#9rd¼›"‚ ŒP~~>GŽaýúõ<öØcx<~ðƒŒw³„ ìš Â†RŠOX0Ññ›ªåõd2™™™ýN\­Ñhذar¹¹|à;ôÝÝÝtwwÓÑÑÛí–æ0 Ï[ ÑhP©T¨T*RSS‰%&&†ØØØ±{‚Ãà³ÙðÛl&ùÝl!¹œ \ŽUŒ”Þ»¹¹¹ýþ{gg'RI¥¡P©T(•JÒÒÒ¤;Þ…¡s¹\¸Ýn>Lww·Ô™;­V @^^3fÌ ¨¨h,›çÎù8ÞÇœ9JbbdÄÆ^‘Ný `úì³#ôôtÓÓÓ=¤íÔj5II©$%¥²xñê1nåø3rs•¤¥ÉIK›zß „^#=W  &“‰Y³f1kÖ,¦M›6Æ­AFêâÅ‹TWWSSS@BBñññ,]º”ÊÊJÎ;7Î-AF"''Gšãé‡?ü!‡ÿøÇãÝ,a‚š”åõ†#HóßLÖç0žF:©Õê):deeIs\...€G}´ßPêrf³™¦¦&ššš¨ªª¢³³S*%žp;..½^^¯§¸¸˜ÌÌLéÏDàºt —Ñˆï ¥à&ƒ€RI@¡àÂ$Ï¢%\^oåÊ•ýþ{}}=‡& 9tR*•èt:òóó¹ùæ›Ù²eK4›|Íëêê’J666;t***âÖ[oåÖ[oËfFÅo8±ÙœÜt“ެ,™™ã:…G8 ´´4 9tR©Ôddd3cÆ\vìxtŒ[9þNœðrü¸—•+µÌ›§bÞøà ò½«×ë#Ö÷x77ìÝû:¼ËGíÁéŒ<î>ø <ðÀ€â‡“© ¥R%Íût-«ªò TºÉÏ70mššÂB:ME£9W™L&L&111dddLŠó• ÂT•žžŽÁ`þ®R©ÐétdeeM˜ª‚ ÂÈ¥¥¥qðàA6mÚÄOúS<O?ýôx7K˜`®ùòz“Íf“æ:{ö,6› ›Í†Óé$D” ôz½TUUa6›©®®fõêÕ¤¤¤’’µöŒt¤S¸ÜT­Ñßr¥R9`é*¿ßO `ß¾}444P__Œ<,mjjÂï÷ÓÒÒÂÍ7ß<¡Jî ½åçÂ!Køs Þ°V¡P ×ëÑétèt:ǹŃ+++ãØ±c|üñÇx½^#,Eèr¹ ¹ÃA–ÕjE«Õ¢Óé¦ôûºµµ•––Þxã ªªªF5)³Ýnpûp¸ÝÕÕ…N§C¯×Gt"\mr9¨Õ2ü~¯þ %&S+fsûöý…úú|¾¾Ç-!!‚‚î¿ÿ~Ξ=ËÙ³gû¬ãñ¸¯82ª§§ǃ×ë!))¥²7쌂Á~?¨T2®PUV¸FEó\u%áïL&“Iºy+==}ÐrÆ‚ ‚ ‚ _rr2}ô7ß|3Ï<ó ‡gŸ}v¼›%L Sb¤Ód”vïÞÍ… ¨­­¥§§G ,òóóQ«Õ¨Õj|>===ØívΟ?/øàöìÙ3êëóWC§ðþvïÞMcc#MMMtuuIå<7nÜHaaḌ4ÐhdÄÆÊ°Ù‚x}:sçÎ¥¸¸XŒŒAA„(KHHàƒ>à¶ÛnãW¿ú^¯—çž{nÊ BúwÍÏé4Y<Àétât:/K¶Íœ9“ØØXbbbp8´¶¶ÒÚÚŠÙl–BÁS§N P(¢:tÔ‚Z­ž´weTøµúªäädf̘Ño ©¯¯çСCtwm>¡‡ÆëõJóåãÃëõÒÞÞN]]f³yÀõÂá“×ë•æð²ÛíLŸ>˜˜˜ :Y,ªªªØ³g0úëÄ@ÛïÛ·'NpâÄ ‚Á ´;6oÞLQQÑ”úRSUUÅñãÇÇ´7 òÖ[oqæÌΜ9C(’BQ™LÆM7Ý4.¸Jeopár…ðû¯î÷’‹«9uêħËeff²bÅ ²²²ú„NÐ÷ýø©©©`ÿþ·Ø·ï/Òr•JÍŠëX±bݤ |¾Ng­VÆûZ0å]sô^‹Ž=Ê®]»¨¬¬”–gff²mÛ6t:AAa ÄÅűoß>n¿ývþ÷ÿÇÃïÿ{Qm@åõ&ŠŠŠ >ÿüs:::¤eóæÍcíÚµ¬Y³¦Ï|>aàÓO?•:cÏœ9Cyy9+V¬BªÑðûýRG¸pe†¸¸¸>ËóóóY»vm¿Û„;HjkkǤM@€ãÇóé§Ÿ’MRRIIIcòXB_áðoÏž=x<Ün÷°÷ÑÞÞŽÍfãüùó|ík_›0¥‚, ¯¾ú*ÿó?ÿµÎDƒÁ¬…K“ýò—¿ŒX/´ÿïÿþ/ÍÍÍ477óÈ#D¥ Y¸$ãC=„ÓéŒÚq‰‰A­VKÿôÓO9~ü8/¿ürÄzá÷óÓO?M}}=ÝÝÝ|ýë_J†*!AδiJ|8Wç+ŒÛíÂívñ“Ÿü .×Ðû-·ÜÂŽ;رc¯¼ò ùË_øË_zÃ$­VK||äÈØÿùŸÿ²²)-ý8b¹ÏçåèÑý=ºŸyó®';;Ÿìì¼è<¹1f6q:{W^ž’øøñ?w co¬ÎUÙ±c‡4êåZ[[y饗xõÕW¹xñ"F3¦mAA„©Æ`0°wï^¶lÙ /¼€×ë套^šr°„H"tšB¡V«•‹/Hw’¯ZµŠ‚‚‚+Žn˜6môôôP^^N(" rñâEòòòF:ù|¾ÏÏ2ÕÈåò>¯URR }¨p9Åêêꈠ1L­V“œœLrr2999RiÅÓ§OcµZ±Z­,X°@*w.ÕÕÕÕ§b84>^œø¯‡ÃAOOOŸ2•:­VKzzºTBzC^¿ßO[[n·[ ©Â%çL&±±±b.£²²2¥Q™Ñ~X,jjj®¸ÍPÖ¹V´´´PWW‡ÓéŒê¼(ñññ±‹… .\q›¡¬3´Zññrìö^ïÕéd2µÒÔt—ˉßßÿœcý±Z­œcbbú„"túRKK ¥¥¥Q=æÐ:]^t(ÇÔjµŽËq×h.®ÎcšL­TT”ár /`µX,œ»v트¹X˜: .ï %)F&à÷ûÑjµý&¼/^Äd2I#rssÉÏÏ'11qHûŸ1cÙÙÙìÚµKZV]]Mvvvtž€0$ …¢ÏgdÞ¼yývp466ráÂ…>aDRR‰‰‰<ùä“èõzt:]Ä¿/Z´‡ÃAmm-uuudgg³páB.\(Íö«_ýж¶6ÚÚÚ"¶moo—æýÚ¶m[4ž²0ˆÎÎNicXqq1yyyäåõ© Ñhˆçæ›o¦©©‰ÆÆFÎ;'ý{]]†ŒŒŒ1oû`^{í5ÚÛÛ£²/ƒÁ€Á` %%%¢”hAîW)Š)󦲲’×^{-jûKNî =233#FÅÊåòAïFÊ:c!!AN~¾’––ÝÝA|¾*ÕØµµçxï½7†½Ï磭­ «Õʽ÷ÞË]wÝÅŽ;p»=´µuÒÖf˜£L¥R#—_ù†¥R5!ÊkUSS€`23cþ: G´ÏUÙÙÙdeeqòäɈå2™LªW¾AN­V‹nAAaŒ©Õj^ýuî»ï>^ýu¾öµ¯ñÆoˆLa ´ç"!!`0ˆÅbóûŒ€ßïÇn·c±XHHHˆ¸›<¬§§'¢üˆ^¯'55uÈ¡R©Ðét?¼½^¯(‹w•…;/—””Ô'8‚Þ0&“)b™V«eÆŒÜxãèõú~;t322ˆ‰‰A&“a6›#î"V©TèõzÖ­[Ç¢E‹ÈÏï{7¼ÙlæÜ¹sƒA1zñ*ðûý}‚Åôôô!•½4 }Â¥¯–éO¸\®QïG­V“’’BaaaŸÏOZZóæÍ»âöiiiÌŸ?Ôí˜ \.£ÞO8¨ËÍÍ%77wØÇ]&“ éµ z½Œ´42¸\!¬Ö±?¹Ýnº»‡ÜÃs`ƒAÚÛÛ)++c÷îÝ,^¼˜yóæ0cF>ß—×ê™3‹INîÿÚßÛ¹®`ÆŒ9$%¥Œêù\MVk¹ÒÓEgÿT­sô^#Š‹‹û½YF©T¢Óé˜1cÆ€óUjµZÈÍÍíwÞMAAA¢K©Tòç?ÿ™íÛ·óî»ïrçwF¥ÿH˜\½M9>>§ÓIGGIII(•Ê>TÂÀ.RSS <ôwƒÁ0¬Ð)<'Ìåwzz<:ƒá„N_%ryèÔß6X˜L&‡4ׇJ¥B¥Rqã7¢V«q8466Flo6›±Ùl …ø,±B§¡ÜáÓg”Ûíž0¡“ÕjÊ\áÐiÚ´i}æäjè4áÇxp»ÝX­—_ªp蔓“#-»ü\0Ôã^\\<ê¶ —Á “Fúô†NAÒÓÇväÇãQèž»/H¡S{{;/½ô11q(•J¼^juïkRT4“©¥ß}Édrär9Ó§Ï&)iè߯›ÕD¯—“–6yFg £­sô^#æÍ›Ç¶mÛø§ú§ˆ ÿ1cµµµX,–>ÛkµZâããÉÉÉtä¬ ‚ ‚ Ñ¡P(xå•WP«Õ¼øâ‹lÞ¼™wÞyƒÁ0ÞM®’AC§yóæa6›1™Lœ>}Zš[Dšð–áºp©½ËÅÆÆRTT$•ý˜;w.³fÍòc¸\.œNgDÈ'†.^e¡Pˆ`0Q¾¥  €„„„>ëö7Òéî»ïfÖ¬Yý®Kzz:………ÔÕÕÑÞÞNCCÓ¦M“Ö‘Ëå¬ZµŠ+VH¥Â1ÇCee%¢LÛµ,<ÇÚåÂ#Õ£V«ûtM¤j—¬‰pHºgÏ*++©¨¨è:QTTÄ/ùK<ÈÁƒ±ÛíÒ¶O>ù$«W¯fõêÕ£}:“B¸”Ôhèõz¶oßÎöíÛùÝï~×ï:‹-bÑ¢E466òñÇsìØ1\.—4ÿØÏ~ö3/^ÌâÅ‹GÕ–‘Ðédèt2¦MSâóAe¥9sƶÌßH»ßï—>'^¯£ÑˆÉdâÑGeóæÍlÛv;çÏñûµø|^vìø;¦OŸÃôésعó7_Œ’ ˜˜Ìš5›¸á†M_7Ï0úB¡Þ?UU>V¬Ð°dÉÔ()ôŠÆ¹êòkDAAA¿£·Ã^xávïÞÍ[o½Åûï¿/-_¸p![·neëÖ­¥[AAA{r¹œçŸµZÍoû[n¹åöîÝ;!æ)ÆÞ =5Ꭶ¬¬,æÏŸJ¥—y&+—Ë%…B.—«ßl%%%”””Œø1êêꨨ¨ˆXV\\<¬ÑRÂè¼^oÄ(¥ØØØ~ÿ`0Ø'|\¶lÙÿôôt,X@]]f³™ÊÊʈРz;| ?þ8{÷îåÝwß+>ÿüs®»î::1FC\\\D™!»ÝŽF£4öz½# ¡wäi£%Çúu먮®¦ªªjØÛææær×]wq×]w±|ùrìv{ŸsØåüq¾÷½ï iii!66¶ß‘`׺‚‚Ö­[ÇîÝ»‡½m||¢ÇAA!:d2¿ùÍoÐh4ü÷ÿ77näý÷ß¿â ÷µaÐÛ- ‹…ŽŽŽ~ïÚ®, áp8èèèÀb±D½†¥Éd¢¡¡ÊÊJàËÉݧOŸ>`}{alƒA|>_IJ&®ÏCp9N7¤Nt½^Orr20ø¼ ñññ¤¥¥‘——±ü«%…±¡Óéú|ÛÛÛ#æâˆÝnïS‚1))i„N7ndÖ¬YC-—ËÉÌÌdÑ¢E<òÈ#¬_¿>¢¼Û`Âw·ƒ·©8!üôéÓÙ¸q#ƒaHçŠð1[´h›7oæ‘G!''gXóšÈår …4'áhG/DKNŽ¥RFGG'ÄXV“ͲƪUÐéôÃ:/Ÿ×)àƒAºººhnnæÐ¡C˜Í­¤¥Å ºðû=ø|> Z­ŽØØøI8Øl!.] ''.NNlìÄxßWÇHÏU£¹F„iµZt:ÝæNAAáêøÕ¯~ÅøC>ýôS6lصrÜÂÄ5¤Ð©££C „á …BÒœX‹§ÓÕý›L&êëë#B'…BÁôéÓILLŒêc W†:}5<ÐétCA Óé"B§+¨ãââHKK#777b¹Íf‹Ê|<• :ÙíöA·u8´µµE,KLLp¾¯«mãÆÌž={È%‹d2™Ô¡øðÃ*tÒét&ü¸š Ù¸q#z½µzðreá°bÑ¢EÜ~ûí<üðÃã&'ÚqÏÉQ T‚ÙÀã á÷Ý÷“ÜÜB)tR*‡:…B¡ˆ¹ÂºººhjjâàÁƒ˜ÍmRèxðù¼ÈåáÐ)nÒN6[£1@\œŒØØÞ?ÂÔ1ÒsÕh®aZ­½^/jÅ ‚ ‚ ÂóÌ3Ïðãÿ˜Ï?ÿœuëÖa6›Ç»I´‡»¹¹YšWC¥R …ĉaP©Täåå‘••Å{gZ­&%%eTû …BÔÔÔP]]ÍË/¿,ubAo©¾%K–ˆQNã §§‡–––ˆpöÀ(Š>µµµµôôôÐÑÑ!-Û³gjµzКpÉÆŽŽ<ÍÍ͸¾ÉdB­VG<ÖÙ³gQ«ÕcOŸ>Ñh¤££ƒŠŠ >üðÃqzv“ïýkÊËË)//çÓO?•J¸êõzbbb0 ,Y²„ÂÂB ¥Ðù«ÇýòPóìٳà £Æ[ ^¯›`ÐÅ‹/ªÉÎV•5¶£ßž|òYjj*¨©©àÌ™“¸Ý.\.':½>½>†9s0cÆœ>Ûz½^©cýòÿ?zô(mmmœ|>ÕÕÕØl6‡4_Y0Äjµâóù°X,84M¿åF#—.]ÂáppìØ1.]º4Ïlòp:˜L&©T£Ïç# âñx¤CÊËË1”——ßï~êëë¥ÿŸè‚A¸xÑG[›Ÿ“'TUɉ‹ÛÏ…ÛíÂb1a±˜p:øý>B¡ ^¯—PÈŽ×륶öû µZÇœ9…¼ôÒNºººèêêf’eN„BÐÒ ¥%ȉ .\“œ<õÊa Ã?W t¸\}}= ¦¦æ*= Aa¸š››#¾W†oÎÜ·oµµµãØ2Aa"xòÉ'Ñh4<ñĬ]»–=ÞÍ¢lÐÐ)ÜI*B§‘‹Vèäp80›ÍìÛ·«Õ*•U w@/Z´H„NãÈívÓÝÝMWW—´lçÎCÞ~×®]#~ìóçÏ{›± œ„±QWW7ÞM’ðyÎãñ`±X(//Ò¶F£‘£GŽYÛ®eáÑt€t܇j2N_ÕÚ:¾ïõzðz{{W—«µ£Ï:—‡L_ý«ÕŠÝnçÓO?eéÒ¥,\8sçNrñâÅIó™ˆÈ…þŒö\5™ÏW‚ SQOO< ‚ À~ô#4 ßÿþ÷Y³f  ??¼›%DÑê„B¡Q…%SÝhºp)µçŸžÆÆF#þ=--¥K—²téR®»îºÑ6U…ðµk×J%õ¾ÿýï“““3`bÿä“OJbAA6l`ýúõCš7å©§žÂl6c2™xú駉ïwDC¸có–³fÍÖ¬Y3ò'<gs3Φ&ü==cöWC@©Ä¯TR5ʲ¢áN¶òòr¬Vë mÉÉÉ$%%1þ|©¼ÞD T*Q*•¬]»¶ß¯««ãÃ?äƒ>àÀCÚ§^¯G¯×³`Áî¾ûnî¾ûîh6ùš×ÙÙ‰Õjå‰'žV‡lxÞ¿µkײe˶lÙ2–ÍŒ:‹%HGG€¿ù+kÖh¸á5WoDMww'ÝÝüüç?ÆhlÀhlpÝð@è='ßsÏ=<øàƒ_ªÃ7¨ÈårÞ{ï=Í46šÐé‘Ëû–i¨~ÿ{>x½ðë_‹R¿Â—Fz®ÊÈÈ ==3gÎðo|ƒo|ãlÚ´iŒ[+‚ ŒÔÞ½{yóÍ7yóÍ7˜6mÓ¦Mã?ø;wîÖ™‚ µë{ßûjµšG}”5kÖpðàA Ç»YB” 9t®¾ .`4inn¦±±‘îîn ·4Wjj*©©©”””““Cffæ8·V€ÞÏŠÝn—:Ñ[ZZHNNF§Óõ»þòåË©¨¨Àf³ÑÓÓƒÑhäܹs,Y²dÐÇJLLÄn·K£èäry¿ã÷ûñûýeû’’’ˆ°]ÑÔhj4ø'ùpþ/Bõ΃áÀ¾©©‰žžìv;]]]x<žAË(z<ººº¨©©!&&†ØØXòòòËåãZ^O©T¢R©ú¼wL&&“‰—_~™ššša݉îóùp:Øl6À˜¾/¯5œ>}š3gÎP__1Òr0n·èíöûý“î¸'%ÑjCdeyðûÔ×+˜5ëÊ¥¹¢åÂ…JΟ?KUÕYŒÆl¶+÷˜˜RRRHII¡±±‘ÖÖVÊËËÉÈȤ­ÍL{{jµ¹\.O‡¿?ˆJ¥ù¢ çÄžÉç áóA[›—ü|%ùù}ÏÂÔ5šsUx~Cè­¼ V«Å{KaS«Õ¿uÂ7Öh4šA ‚ SËßüÍß Ñhx衇¤O3gÎïf Q0ä <]@€ææfŒF# ­­¶¶6‚Á ÉÉÉÌ™3‡E‹‘‘‘AFF³fÍ÷Nh¡Wxþž¦¦&²²²0 ”––’À¬Y³ˆ‹‹ë³Ím·ÝFzz:ñññ?~œ3gÎ`4‘Ëådee‘Z­î÷ñrrr¤2ÝÝÝ$%%õ;‚Óé”B©°Y³f‘‘‘1èÜ £Ôj ªÕøhÿd¡üb¤ÓpC§`0ˆÙlÆl6SUU…ÓéÄår¡Õj‰‰‰!==ØØXiN'™L&•Ý T‡ƒêêjt:z½ŸÏ'Îã5·“J¥B©TF¼wÊÊÊ8vìü1»wï–F× Uxn¨ööv<O¿ïK»ÝŽÝnÇb±HÇc*O6ÙÚÚJKK Ï<ó UUUTWWKs€ •Ëåzëî;Î~{¸Jgg'z½ƒÁ@ZZZTžÃhiµ”·ß¤¶ÖÏÇûX¿^ƒZ ÍØ|6L¦VÌæ6~ÿûÿ¤¾¾†‹kðù>îáQŠßûÞ÷HKK#--G}”³gÏÒÕÕÅúõ°Xº¸p¡™¸¸´/æoSb±˜¾ø|ËÐé0bÑh®N 6Rííš›¸ÝfÌÐsûí:´Ú‰” c/çªðù¾ ¾z¾ _w𛛥ò•yyy¨T*T*UÔž ‚0¸¯†Nr¹¹\ŽZ­F©ß A„HõW…Z­æÁdíÚµ|ôÑGÌ;w¼›%Œ’&˜@ @cc#Ÿ|ò 'Ož”–«T*ÒÒÒ˜9s&wÞy'jµzÀ0B_$&& …hii¡££ƒîîî~C§¤¤$f̘B¡àøñãRÙµcÇŽ±téRRSS| ƒÔ‘ž »?^¯7â.a€ÔÔT Ã(Ÿ©p%Á`ŽŽª««#Jéi4’““IKK#++ µZJ¥B¡Pàóùðz½´¶¶ÒÞÞN Jlº\.ª««‘Éd$''O¨°¹¬¬Œ>úˆ={öŒêZát:|ÛívÚÚÚ¨©©‘JNåЩ¥¥…²²2þïÿþÝ5Ún·Ø ¶ëêêHKK#55u„Na%%jÚÚ\ºÀf 'g¬ªQšÍmTT|ξ}?î†ØØXzè!´Z-Z­…BÉd¢³³¥RÁ` ))‰„„ T*5*•³¹—ËËå 55¥R…Á36O*J,– ÕÕ>âãådd(((JBtÏUWðz½ÔÕÕI72$''G|WA„k…ßï§¢¢‚¶¶6:;;q»Ý¤¤¤H79¥§§£×ëG´oÇCee%‹…ÎÎNd2™´ß´´4’’’&ÌïPA®÷ß?jµšíÛ·sã7òÁ°páÂñn–0 bN§ "  ù×ýWÚÛÛioo ==ôôt{ì1bbbDP0 x<l6f³™ôôtŽ?NMM Ï<ó @Ÿy9Â5®õz='Nœàĉ;vŒ“'O¢V«ù÷ÿwHHHˆØ.==˜˜ÞNH“ÉDNNN¿íikk£ªª ør”ÊÒ¥KE'Ì;}ú4­­­tttO\\7ß|ó€‘B¡@«ÕÇÌ™3 ƒ¼÷Þ{ôôô`³ÙèèèàâÅ‹¸\.²²²ÈÊʺÚO+Buu5UUU<òÈ#Àè;óóó#ÞçákÏŽ;(//§¼¼¤ãž››Ëw¿û]¾óïPZZJjj*)))üõ_ÿ5'OžääÉ“üþ÷¿gÞ¼ù,Y2Ó§Û8pà]ØÃéÓŸJû‘Ëå,Z´ŒE‹–ñÄÿõç fsÊJxø·K`Æ “d *a Eû\5þ|JJJX¶lYÄòS§Nñç?ÿ™?ýéO\ºtIZ#ÍWw×]wúñA®E@€®®.º»»éîîÆáp`0ˆ%..ŽäädQo‚ðûý¼þúë¼øâ‹?~¼Ï¥—“Éd\ýõÜrË-ÜrË-,_¾üН£ÍfãùçŸç7Þ ´´ÏJäÇÅű~ýziß—ÏQ*‚0wß}7*•Šo~ó›¬_¿žýû÷sýõ×w³„ºfçt ßåx©¥•¤¤D’'DçØ@ÚÛÛikk£½½‡ÃÀÌ™3)**¢¨¨ˆ˜˜L"á9jÒÒÒ…BX,ÊÊÊœ¯)''‡ë¯¿žäädNž<‰ÓéÄétøù»üîÝFˆƒA, µµµ@ï>‰„„¤¨<·h9sƇÍ"%EÁôé*’’Äõe*«sUVVIII}îÜ~óÍ79}ú4===˽^/çÎ`óæÍ¢Ôž ½U9Þzë->ûì3ÊÊÊ8{öìµZMaa¡Ô/qÝu×±|ùrf̘q[-¥F…Œ«Õñ.: õ³^/77—žžŒF#ÐöƒÁqåät:©¬¬äí·ßŽÚõáòÑ{Ð;HYYYŸNaUUUäåå‘––6%B'¿ßÓéäí·ß¾b =\_=îMMM;v¬Ï§°Ó§OO¸Ð);[Á²e^zÉN{{³9ÅÐɇÛíâÀ=¸\C?î=ô444°k×.©³æ ¬¬ ¹\NYY‹/F§ÓráÂYššjik3Fì§7tj¦µµ™††Z fLÀÐÉ‹ÏÉÉr¦OW"¾²Lmcu®ºRèd6›ût–y½^*++¹páÿõ_ÿ%Jí ‚0¥}øá‡üæ7¿áwÞÖÜz^¯—ªª*©rFXrr2Ë–-cíÚµlÚ´‰… Š>‹1òÜsÏñ½ï}oÀ9sccc™6m­­­˜Íæ~×éêêê³,ðÀ°sçÎ;!!””ššš|ßôws  ÂhlÞ¼™·ß~›­[·²iÓ&öîÝ;%ú|®56t2^ºD·ÍFw÷ÐÜÂùó8rìcŽ;ÆÇÇOpÃêUܰj%Ë/¦¥µ•K-­lºiôzdº»»9sæ o¿ý6€4_ÉÃ?,¾¸MRá èÿñÙ¿?ûöícïÞ½@o´dÉ–,YÒçõÕétèt:þáþaÐLj‹‹CóÅÄ%…Nñ=ê IDAT¯½ö´´´’’²eËØ¼ysž¡0˜žžžˆó¦V«íS"q(âãã¥×zË7z½ÞaOÄm¿ýío9räÈ€?lF⮻¨Hú{}}=¸â6/^äÃ?ä?øAÔÚ1Q•––rôèѨsè{Ü8tèз©¯¯—²²de)¸ùf&S€_tòÿ\ΨŠŠÏ)-=†ÕÚ1¬íöíÛqè… ¸páf³™Ù³góÝï~—ßþö·444P^^N~~&55Wž·é“O P(ÈÏŸwþ¹Oúï¶mz¶nÕ‹²zÂU;W9ìv»4š©?áëeii)EEEâÎ|A¦œ––{ì1Þxã¨î×b±°wï^öîÝËOüðC 7t²Ùl455±`Á€¨‡NÔ××SQQ!…+W®$55U”Ö»Jär9¡PHz]¢:Éd2 ŸwžUVVFí.ö¸¸8²²²˜>}zD˜6”`C©TN™ÐÉd2Eµ#7\¢ñ«Ç=Ü‘{%CYg<,_®¡±ÑËâÜ9r¹**¡Ó… ¤øª¶¶6)têÏñ㟲iÓMÜpà ¨Õj²³³IMZè¤R©Q(Æÿ ‚×âÔ©Þ—ëÖi¿D§¾ýsÕ`×™L6è÷z•JuÅ ÔA®5û÷ïgëÖ­ýŽv),,ä§?ý)Û¶mC§Ó iÍÍͼøâ‹üçþççþ.›Í&¬¹œËåB«ÕŽÉcNd¿ûÝï°X,}–ÿíßþm¿ÓåÖ¯_Ï}÷ÝÇŸþô§~ÿýßÿýßû]þÿñ}§¯zê©§xíµ×hii¹âz‚ Ѱzõj>øàn¹åî¼óNþïÿþÛo¿}¼›% Á„ ²³2Yµbz½ž—^ùöY¹b9·ßv+ðÅh¡™³h6^¢±±‰®®n›š¸ëkÛ¸qÍ *tújçm]]v»£GŽxŸ³fÍ¢¸¸˜¹sçF£‰Â(ÄÆÆ+ÝIôÔSOÑÕÕEEE=ösæÌaΜ9lÞ¼yX£ž4Ôâv»q»Ýx<vîÜ)ÕÝV*•¬ZµŠ•+WŠ÷ÂU–””„Ýn—:‘F#6›[n¹™L6èH¥p`uüøñˆŽhNGllì Ž•ººº¨”ø‹‰‰áž{îᡇê¤-Z´ˆÄÄDþð‡?Dxa2™Œ’’¶oß>êvLγ4jµµZÍ+¯¼Ð縗”” ×ëy÷ÝwûÝ^©Trýõ×óío{Ôm‰¶äd97ê((Pòÿþ_]]Ad²sçŽ< ëîéâ×ß½{7»wïî³\¥R£R©Ù¸ñ>t:5eeõh4 œ;×Ì¡C§IK›NCCÿ?ÞU*J¥Š;ÄÄä?—h… ´Ôˉ^´ÚÞóØßÿ}jµ-ôŠÖ¹ ®|ŸËî¾ûn***¨¨¨è³}ZZ©©©,_¾\„N‚ LõõõlÛ¶­ßÀéÛßþ6Ï=÷ܰKäææòÏÿüÏ|÷»ßåÛßþ6û÷ïVs…üîw¿ë³L©Tòï|gHÛßrË-ý†NMMM¼÷Þ{}–/X°€åË—º_ƒÁÀš5kصk×Ú!‚0ZË–-ã£>bãÆ|ík_ãÕW_eÛ¶mãÝ,aC.¯wµCš@ Àüâ¹Ì›;‡w÷¾‡ÓéÄát¸þMë×±lÉæÎžM `ù²¥\_rjµŠ¤¤$’ùèà!¦ž–6¡B§¦¦&iTôMoooõ~ÓÓÓG½!zÒÒÒøùÏΙ3g8}ú4{ö졬¬ŒÒÒRÞ|óMòòòÈËË£¤¤„ÔÔTRSS‰ïP„B!\.—4¦µµ•;wòç?ÿ›Í†N§#11‘'žxBÚpuÍœ9“ÆÆF)0êî»›×_ôôtÒÒÒÈÌÌ”:ÍB¡>Ÿ¯×Ë¥K—0™L´··÷¹“099™üüüAï@k£-ñ§R©P©TìÙ³‡‚‚òóóû¬“ŸŸO~~>¯¼ò äàÁƒÔÕÕO||3C¹F„ýæ7¿aß¾}ìÛ·W_}•`0H ছnâ¶ÛnãÖ[o´T« µäïþîïpöÓw²cÇžþùQ}‡ÏÊÊâí·ßfË–-ìÛ·o4Í®Àd2Q]]ÝgyII‰T­`0Ë–-cíÚµ¯ù‘#Gú]ÿÎ;ïrûn¾ùfêëë&ìoA®-%%%>þŠëÏŸ?ŸØØXæÏŸOGG:NÇÂ… §T÷„„¦M›Æ™3g†½­F£A«Õrß}÷Ió» æúë¯'99™’’¬V+111 æÌ™CJJÊžÁÕµzµ†'Àd ðñÇ^¦OW2}º’ávˆM '§€ªª³ÃnƒZ­A£ÑpûíßäúëW’/uÈËdJtºÞÏqoÙL%ÙÙy( d2^¯ŸÏKjj¹¹…äåûñ£Éáát†8{Ö‡Z-cÅ ˜ÃIè×hÎU0ük„V«¥¸¸­VËôéÓ ƒAŠŠŠúÌ%‚p­;tè{÷îí³<))‰gŸ}6*óÂj4vîÜɬY³ú-ÿ&ŒÞñãÇû]>œ‹gΜɡC‡ú,ÿä“Oú]8¿«|ðA|ðÁ!¯/‚ ,àСClذíÛ·ãõzùÖ·¾5ÞÍ0aËëÁ—wc,]²‡Ó9`è¤P(Xºx1F r9 ¹œ5«WKô …|B†N—X®} …‚ììl²³³ILL¤²²’ŠŠ .]ºDGGf³™ÚÚ/ßër¹FƒZ­& â÷ûñù|ïŸÏ'udΞ=›yóæ1oÞ¼q&¦²ääd, 111}B'·Û=¢háÐ)999*?G£  Ç3¢Ð)..Ž¥K—r×]w]ñîõ°pç#€×ëꦒ„„ FÔ‘«Õj‰‹‹cÇŽäää““3è6%%%”””½s#†ÃïÉbÕ* &S€Ó§½;æE¡‘Ÿ¯@¡Þg'..ììü…N†˜˜8¶n½ŸŒŒl22²pIC9:]ä×°¬¬<²²ò()YA0ØB«Tc„†ÓÂd p挕+5,_®&%EÌá$ô5šs ÿ¡Ñh(..¦¸¸˜;`0H0œóÎ ‚ Œµ7Þx£ßå÷ßTCøääd~úÓŸò·û·QÛ§ð¥ÖÖÖ~—‡«§ŒÆ@s1Ecß‚ cmîܹ>|˜õë×óàƒâõz‡\vT¸º&ly½ðã¬[»—Ë…ÅjålyyÄ: çϧäºEÄÇÇE´3ü_§ÓIWw7]]]äçæ7áB§—_~y¼› Œ“ÂÂB ¹ãŽ;èììÄh4ÒÜÜLyy¹TŽÍb±à÷ûééé‘&Í6 dffÒÕÕEWWn·›­[·r×]wMÉIV'"™LFQQ………9r«ÕŠÕjѾ’““INNæ†nuY»hyæ™gxá…°X,sÒ D¡P°páB,XÀ/~ñ ôzýˆæ¥šÊ%’6nÜHII Ÿ|òIoÉY‡ãŠë‡ß+ßúÖ·Ø´i›6m"9ydói4šm7ž´ZwÜ¡çÆµ|ç;>þØKy¹ÇA&ƒ¡~ŒV­Ú@qñ"N:.•¼»’ðqß²å>V¯ÞȪU7‘0ür˜r¹¹|b„|µµ~Žõrô¨‡¯]ÏêÕZV¯ž|ï áêé¹*׈ÞQƒSóÆA ßy%n½õÖ¨?Öý÷ßÏ?üÃ?àv»£¾ï©n ßц:;;Çlß‚ WÃÌ™39räëׯ硇Âãñˆ› &  _^zKNege±rù2Ê¿˜$8 c ;;‹yÅs¯Œ¹Ýnºº»ILLòÂUðù|œ;wnÈÛ¸\.l6>ŸÄÄDôz=‰‰‰¤§§K¥bÂå$ 111x½^ÚÛÛ±Ûí´´´PSSƒR91>Ö®K—pµ´à ³©ÑlF­T¢V*IŽ•–‚AÁ 2zG,:/D(D¸ØÞŽ^£Á ÑÅ^…‚€BA“×;ìmÃç%¥R‰^¯' ÒÓÓƒßï—F¬]~î’ÉdÈd2T*J¥¥RIll,:…BÑh”Ö/áv©ÕjRSSY¿~=eeeRI@—Ë%½Gõz=111ÄÄÄ0mÚ4rssÉËË£¾¾^š¯C:§Ó‰Ëåbýúõ´´´ÐÚÚJkk«4ò1|LU*$$$˜˜HQQr¹œúúú¨Ì8™x¤àÉívâv»X¾|&S+fs+&S~¿@ÀÿÅgB…J¥æÿgïÎã›*óöñ_'{š¶Yº¥tÊVŠÛ hÁ  ®€€â:ãúUGGÅgt”Ç…çÑaÆgEG†"P‘]QBËÒJiK÷4iöä÷Gmj·¤mš¤½Þ¯W_6ɹÏù$Ô´9×¹?wtt"#5ˆŒÔ %%‚ àìÙTW‡æën·»a·ß~kEuµ *• Zm%8z48~×Pðéî{GõŒÁ`@iii»¹\.Ÿ>›zëÊ+¯Ä7ß|ã¹]YY‰°°°VkVÛl6F”””txPkvʸPW-g½ñë5ƒ[h4š¨¯¤¥¥yf<=òÈ#°Ùløýïè²èAÝ^¯…Ãá@bB<""±üýÿõÔ¢R©”˜ˆ‘#FxÚêµÇb± ¾¾ …"èf:Qÿãr¹`³ÙŸŸß­ñÞ¶>¨¬¬„ÅbAcc#ÊËËÛ]l4P¬UU°VUÁi6·ûøÎ£G®T"\¡ÀÐøxÏý6‡6‡"A€T"´‹«•Ýh~úæðaÄDF":"ɽ¸ÞŒK,†S$BiÖ]‹ÅžàÈd2Áív{Öîjiüßuaaaž+µÕj5d2D"Ξ=Û[O«ÛZꊈˆ@ll,rssQ__òòr¸\.X,H$H¥RhµZèõzèõzäää ""žEg©{rssqìØ1;v 0›Íp:ÉdP©T ÃðáÃ1xð` <سØð@~Ý32œ¨¯·áôi+6m##£y}§®2í 7EE8uJ‰ÆF¬V3,–æöwJ¥ JeÒÓ3‘˜ØÜ"/6¶ù}íìÙÐ}Ý›šš×qúúk3¢£ÅˆŽA«UÁhºùë_ß«ø;‚ˆ¨g:û¬pîܹ.gžvGLLL«Û•••‹Å­‚–Щ¸¸õõõ½^CäÏsV<FDýÅàÁƒ=3žžxâ X­V,X° ÐeÑ/Bæ2UµZ Fƒ¦_‚Âã((,Ä£=„ä¤Dh>ñÜ‘úú”œ>Ë.¹Ú ¹z#::‘‘‘^õªïkaaa¼º´‡, l6xà¿Çn·Ãn·Ãår¡  +V¬ðëñ|Öδ®_f2Ùl¶æ+™%’V3wN'$b±'„ñ†í—×Áét"L©ìÕÙ@ü³¼­Ž^ßÈÈHÏ÷uuu¨««Ã±cǰmÛ¶¾*mÀ¹pF€Õj…ÕjåëÝ·p¹€'\غU€ Í]»÷^!K¡R5¿î6› 6› ?ü°£÷ 0—Ë ‡p8Ü‹”– JvÖ£&ò ß«ˆˆü«³u¢Ÿ|òI¿tİÿê¼5kÖ@"‘ÀvA—ˆêêjÔ××ã7Þ€Ífó|Žhù½ “É —ËQQQÑëõQÿ–˜˜ˆ;vàšk®ÁÂ… aµZ±hÑ¢@—EðaM§@s¹\͆€æVdƒ%#<<¼ËúÌ3êêë¡Q«ƒf]Š–?ø‚±ç¼T* ʺ‚D"\.‡ÅbALL ôz=æÌ™ã×c;v 0 ÈÎÎÆ˜1cüz¼ž²Y­((,Daa!222 ×ë¯×·Z\åÌ™38sæ RFdd$"½l!`³ÙPPP€‚‚¤§¥!>!Á3ȨåO…Š 'Nœ°ãäI4’’ÄHJC& üZiÁ ±Ñ…ÆF7öì±A­ V‹0q¢ À? ˆˆˆ‚WII Þ{ï½v»öÚkqÉ%—ôIuuuøî»ïðí·ßRRR‘‘œœ8N8NÍçBZÚrK$<õÔS}R_WÊËËqþüyÔÕÕÁd2!""Z­Z­‰‰‰A±¾.ý½^íÛ·cÒ¤IxñÅaµZñÊ+¯º¬/$Úë]XÃ¥_Œx}<²Çd!1!.—«ËÚŒF*+Ï#:: "‘((ž 9îÄbq«ÐiĈ~ŸÖùå—_bݺu¨ªªÂ 7Üà÷«§8µF»ÝŽgžyñññˆ¿ µüðÃøá‡0~üx$&&z9Nìܹ»ví‚ÉdÂÕW_ÜÜ\Èd2<" Q55.9bÑ#vìØaAb¢‰‰b\u• J¥…b`žHp»cÇ(*r ¸ØÜ\`Ô(F–bÂ^­EDDDqôèÑC§èèè>k9tæÌØl¶V¡Ó„ °páB@EE¶û0uúóÏ?÷ºËĉ¡×ë½ÞwSS¶mÛ†¼¼<8pùùù¶Ôét¸âŠ+““ƒ;ÍgY_?[·nmsÿ±cÇÚÝþСCøôÓO{tÌŽžß¶mÛºlq«Ñh0qâÄŸˆÈbbb°mÛ6L™2¯¾ú*¬V+Þ|óÍ@—5 …Tè4ŸØOOKŰ¡C`î`­˜_s8°Z­žÙEÁò\ˆzÊívÃårA$…ÄW'Nœ@UUìv;222zuæ¡X,FTTÒÒÒðŸÿü£F‚ÕjeèDD­DE‰0v¬ééRäå™qâ„vŒ% ¡“ÛÝü•ŸoGAÇŽÙ1¾ —]&Ão~#gØDDD B»ç;þùÏâÁ ŠÎ‡Âܹs½ÞþÎ;ïôzÛ7bêÔ©nc³Ù°nÝ:|øá‡Ø¼y3¬V«×û¯­­Åúõë±~ýz<ÿüó˜3gž{î9 6Ìë}\èèÑ£>½Ÿ|ò >ùä“n«+O<ñD—Ûdggã§Ÿ~òËñ‰ˆzJ§Óá›o¾ÁÔ©S±dÉØl6¼ýöÛ!q¾´?òj±·Û4_®_Ö‚ijjòj{“ÉAÂÃUp¹\ž™Qø"êm.— ‡ÃÓš XµÔ¹aØL&\|ñňŒŒìõv—©©©ÈÍÍ…ÍfCaa!6mÚÔ«û'¢þ!2R@R’ŒÀÈ‘2üéOxÿý&lÚdio9º~«®Î…Í›­X¼¸›6Yœ,ÁË/kðøã‘7ŽQ¨Ðh4†‡÷Þ{o§ë> Û¶mC||l‡R)B|¼z½ryóvýMm­ uu.ìßoGuµ .pË-a:TŠ!C¼kaCDDDÁ媫®BAAA»8p×\s V¯^íS ºþäìÙ³¨­­m÷1N‡'Ÿ|W_}5RSS¡×ë!ìv;ŠŠŠ°{÷n¬\¹²M;¼¦¦&ÜsÏ=8rä[9ˆˆlÚ´ 3fÌÀòåËa³ÙðþûïõyÓþh„N@¼^ßé*DþT__ââbäååh^àU"‘@,ãòË/Gvv6´Zm·B'—˻݅BÔožƒeee= Zf –••Án·Ãf³µ d2d2t:Ìf3Nœ8ÑKÏ€ˆú#™Lð„,uuNìÞmÅ?Ú`µcÇJ& 2R„^ž”pnwó §S§øúk "#EˆŒá–[ ш Vïï"""êØ½÷Þ‹üã>¾sçN 6 O=õžxâ „‡‡÷auÍ&L˜ÐîÚA©©©ín_PPàu‡Œ¸¸¸nÕ´páB<÷Üsˆˆˆhó˜T*ŰaÃ0lØ0ÜsÏ=øþûï1þ|œ:uªÕvK–,AFF|ðA¯;nܸv_‹×^{­Ýõ¹,XàÙË•û¾þ÷ÆoDaaa›}¯]»¶Ë6 …¢ë'EDT*¾úê+ÜtÓMøàƒ<³SÅbq K0BnM'_……)®‚ ~*9õ½eË–áÔ©Smþ µÙl€¯¿þ{÷î…F£Á›o¾é £¼át:a³Ù`±XåõâªPQQáéýƒ#Fx5Î`0Àívã›o¾Aqq1Š‹‹Q[[‹ŒŒ dddt¸ˆéˆ#PXXˆÒÒRœS«ÕX·nFŽ ‹Åâ¹ßáp`ñâÅøè£z³L""ê&¹\Ž5kÖ`Μ9ø÷¿ÿ ›Í†Ï?ÿ¼[ݦÈ7^÷OiimŠ_.— N§3àuÐÀáv»át:qêÔ©{F·¸0tªªªòú¿‚¹½žÑhDEE…'pò6tÚ¾};Ö¯_£G¢¼¼ÜӞϛЩå•••0™L½ò<ˆ¨S(hµ"LŸ®Ä”)JLœ¨€N'Âٳ͡ÓwßÙðóÏvX­n8¡ñ{Ýdr£ªÊ‰;­ØµË†;­P«E¸è"fÍ ÃØ±2$$ˆÄ¿BˆˆˆÈ#FŒÀ?ÿùOŸ.J,((ÀË/¿Œ¬¬,¤¦¦âÑGE^^¬V«+ ¼x ÛŸ£ÓÒÒðÈ#´¹ÿ“O>ÁéÓ§{Zõ™L†Ï>û ·ÝvÖ­[‡›nº©Õäý¾½Q ´´¾óÅ®]» V«½¾²¬¢¢F£@sïê@ôãöFcc#jjjP^^ޱcÇz½¾Úùóç¡T*¡Óé››‹ôôt¤§§£¨¨¨¨¨èplJJ Ž= 8qâbcc{å¹ÑÀ À! "Á”)J8n¬]kÆ¡C6üø£ 7Z0hÉÉbŒ/Cl¬11"äjƒÁ³g8{Ö­[­0Ühhp!'G)S”¸è"†g;""¢þlÞ¼yP©T˜3gŽÏ'ÖJJJðÎ;ïàwÞJ¥ÂäÉ“1cÆ ÜtÓMýª{„R©Ä´iÓz´Ù³gcÉ’%­îs:ذazè¡훈ˆzD"ÁÇ ©TŠ•+WbúôéX·nWÅS÷xÝ^¡‘÷Zf×ùÂ×9gÏž…Á`$&&¶»èi0¨­­õ´vˆˆˆðzØ;ï¼ÇÇðáÃ[]¥WTTÔåØ [ð]ÎùJ,Äb³g‡aæÌ0¸\À×_›QXhGA‹7",L€R) ;[ ½^ ½^ŒÌL ¤Rÿ®ÕØè†ÁàB~¾.”—;‘Ÿoÿ带NU`øðæ)#Ãë댈ˆˆ¨¸ñÆñÓO?áÀÎ;»µ“É„µk×bíÚµxðÁ1yòdÌ;³fÍòús]0¹âŠ+ð¯ý @óZÃ*•ªGû»øâ‹!“ÉÚ\pºeˆNDDAF,ãÃ?„\.Çûï¿iӦ᫯¾ Ú‹øCÏ@ù‰ >…µ2™Ì§•••ž0%:::hÓy‹Å‡ÃÀ·ç¨Ñh T*»Õî@.—{ŽsaB"¢ž@$† ‘B«aÈ)23¥0\hll^;©¨È‰’'Nœp ,L@X˜F™ ÉDDHH$Í·E¢æ}^¸¦’Ýî†Ë¸\€Íæþå 0]°ZݰZº:L&7ššÜhll^»2<\„É“•ÐjEÐjE:TŠ˜t:öÎ#""ˆ233±}ûv|üñÇøïÿþoäççw{_v»6lÀ† ðÌ3ÏàñÇÇC=„ÈÈÈ^¬Ø¿Zºgô±XŒ˜˜”••µº÷îݽv ""ê="‘ÿøÇ? “Éðî»ïâÚk¯ÅÆCêwY¨`èDäB7z,ù:UTTxfFõçЩ§¯%C'"ê-‚кõTTÈpò¤'OÚ±s§UUNœ?ï„Û ¨Õ"DF HI‘ "B„ðpññ"(• ááPÍÇp»¦&7ÀápÃhl³ŒÆæ™L-³›ŠŠœ°XܰXÜÐéDHL” !AŒI“HNnný'•A¿?""" (ApÇwàöÛodž ðÎ;ïà›o¾ñ|FëŽòòr,\¸o½õÞ~ûmÌž=»+-‘‘‘mB'_Öj&"¢¾%þçþ2™ o¿ý6&Mš„¼¼Ýkûî‹‹-‰ˆ¨ç^zé%Èår<ÿüó˜0a¶lÙ‚„„„@—òº Œ¦¦&bèСH$<ë«ÕŠššÔÔÔ`ðàÁÐh4.‰ú€X,†L&ó\åv»¡V«4/ÀÚÒþí²Ë.Cvv6ÆŒãy¼3f³Àúõë!†ŽiÓ¦ùõ¹ô”N§ƒR©FØl6¿³±±Ñs½^ððp¿“ˆÈ" T P*°e4™L†É“'còäÉøë_ÿм¼<¬X±ëÖ­ƒÅbérüG}„ñãÇ÷A¥=cµZñúë¯cÉ’%hhht9DD`üã!—ËñôÓOc„ غu+’““]VHë2tŠE}}=€æ~½ä;·Û •J…ØØX¯f²Pèk™é”‘‘ššÔÖÖz®tºæšk¥R‰ÄÄDèõzO(Ó•}ûöáôéÓ0›ÍÈÈÈ@|||Й …J¥aaa0 °Z­ÝÚÕj…ÍfCii)Ìfs§Û^x­VËÿˆˆˆˆ| ‘Hû eee­ÆkµZŒ?±±±P©T~{nDDDDDDAtt4V­Z…œœ<ôÐCnWZZÚ‡Uy§¤¤×]wŒFc›Ç$ žþy<ûì³Éd>í—ËOõ/<ðd2~ûÛßzÖxÊÌÌ tY!§Ëôèøñã°Ûí°Ûí¸üòË9KÇG.— UUU(--EXX¢££Ĭ •J2ˆ?ÉårLš4 W]u/^ øù矱iÓ&lÚ´ —_~9ÒÒÒ––†ÔÔT( Èår444 ²²•••X»v-êëëQWW­V‹É“'cÒ¤I^·ä z½ÙÙÙØ²e ªªªpôèQ\qÅŽyýõ×Àóž£T*¡Óé…Çã£>òyíQ(P«ÕÈÌÌdÐKDDDDDÔK|ðA|úé§Ø±cG»———÷qE]{øá‡Û œAÀ‡~ˆyóæ *"" F÷Üsd2îºë.Oð4jÔ¨@—Rº 4 âââ ‹áv»át:û¢¶~A,C­VÃív£¤¤.©OˆD"žèÿ…X,†\.Gnn.€æ?j«««Q]]ÒÒRF”––âðáËÅH$°Z­00™L¨¯¯‡X,F\\&NœˆÌÌÌû9ŠŒŒDrr2är9ŒF#Μ9Óeè÷¬µk×.|üñÇ^½ét:¤§§sv!Q/[¶lY‡môL&SWÓ¹½{÷bãÆí>6þ|NDDÔÆí·ß™L†yóæáê«¯ÆæÍ›‘è²BF—¡SCCbcc‘˜˜‘H ¹íyG$A­VC¥RáðáÃb–ÀÐéB-kz]}õÕ€šš ¡¡¥¥¥^µˆ‹‹Cll,¦L™•JríâZþÉd08}ú´WãÂÂÂPYY‰íÛ·ãøñã>366iiiü9$""""¢¡¬¬ MMM‰D‰DHIIñÛç¡Ñ£GC£Ñ ¾¾¾Íc‹Å/Çì®5kÖtøØÂ… û°"" %³fÍ‚L&ÃìÙ³‘››‹¼¼<\zé¥.+$t:Y­V€L&ƒËåò{AýÛí†H$‚L&ƒÅb0]KÀ@ÿ§¥×óm·Ý»Ý›Í†Ý»w£¼¼åå娨¨€ÍfƒÍfCDDÔj5Ôj5&L˜½^½^²JKðvíµ×¢°°{÷î…Éd‚L&kÓ†155 ())ÁÊ•+;m¡×™¬¬,\ýõ½Q>QÐ{øá‡±nÝ:Ïí3gÎ 99ÙoÇ:t(öîÝë·ý÷–¯¿þºÝû“““1|øð>®†ˆˆBÉ7Þˆÿüç?¸õÖ[1iÒ$lܸѫîM]—¡Ðœp-§î å×Îétv+läL§Îµ‘éééˆEzz:ŒF#œN'œN'd2™g}§øøx„‡‡÷‹×sèС¨®®† (..Fll,bcc=ïÞ½o¼ñ¾üòË·ñ9r$ÂÂÂzZ2QH*//÷kè4dÈvC§°°°vg@JGÝE8‘7®»î:|ùå—¸ñÆqíµ×⫯¾BNNN Ë j^…N@h'Ô}N§³[ÿö :×2ó'---Ð¥ô©!C† °°PTT©T N‡/¾øýë_±gÏž^9ŽD"Áˆ#:Ñ€uúôi\vÙe~ÛGmô”J¥ßŽé+»ÝÞa÷ FÓ+û'"¢þoÒ¤Iذa¦OŸŽiÓ¦aݺu¸æšk]VÐâL'ê”ÙlîÖQááál¯GmDGGcܸqP«Õøøã!“ɰcǯֵòÅСCqÉ%—ôê>‰ˆˆˆˆˆBÉ–-[0kÖ,¿í¿¢¢¢Ýû{#Ìé-b±"‘¨ÝNÝmå~¡ªªªˆBÄ °iÓ&\wÝu˜>}:Ö¬YƒiÓ¦º¬ $òvÖà‰_Ýÿ E6›­[mÎÄb1g:Q»$ ¶mÛ†µk×båÊ•½8Í­õäry¯ï—ˆˆˆˆˆ(TlܸÑoks766bß¾}í>–ššêóþ~½Öo ›Íæó¾.$‰ÝîcGíѾ+++ƒª ùßøñã±yóf( ÜtÓM­ÖR¤ÿãUèè°¦¿|…"‡ÃÑ­?Re2Äb±*¢Pµk×.Ü|óÍ6l–-[Öãaon"""""èΜ9ƒÕ«WûeßkÖ¬Õjmsxx8}Þ_DDD»÷wê,[¶ )))ž¯ÔÔT˜ÍæVÛt‚•——£®®ÎçZ[äååu{,…®Ë.» [·nEDDfΜ‰ÿûß.)èp¦C§NÙív†NÔmv»«V­Â%—\‚œœ¬]»ÖoWÚ](33ÓïÇ """"" v‹-‚ÑhìÕ}655á…^h÷±™3gB$òúT“Gddd»÷744t:.??§OŸö|Æ6kJM™2¥Ãñ~ø¡ÏµÍçÈÞzë­n%"¢Ð7vìXlÛ¶ Z­sæÌÁªU«]RPé·3ŒF#**+±aS aµZáv»ár¹àt::y©ªª &“ÉçqZ­6¨¥¾gµZqå•WâöÛoÇþýûûôØ ˆˆˆˆˆˆ€“'ObæÌ™p8½²?»ÝŽ»ï¾»Ý6é:O<ñD·öÛQ·ŠÚÚÚNÇ·º=bĈ6ÛÜtÓMŽî¹çpüøq/*líwÞÁO?ýäó8""ê?FíÛ·#66óçÏÇ|è’‚†ï—Ÿø™Õj…Á`@éÙ³>ÕÖÕyZv.-Å·»¿Ç®ïvãÇýôJNŸö|‘wL&S·Ú …‡‡wØ“™¹\޵k×â7¿ùMŸW 6¬OIDDDDD¬òòò››‹¢¢¢íçìÙ³˜1c>ÿüóvýõסÑhºµï±cǶ{ÿŽ;:SVV†íÛ··º/77·Ý}ßrË-íîÃl6cþüù¨®®öºÖµk×âøƒ×ÛQÿ5|øplݺ‚ à‘GéõÙÅ¡Jâí†}5SÇòKèt¦ô¬Ïcõq±I¥J¥8s¦ß~·û@“¹ n·ÉI‰¿Ìvr#5%¥÷‹ï‡ŒF#ìv»ÏãT*d2™*¢P;vàw¿û>úè£>9æ AƒÖ'Ç"""""" »víBVVî»ï>Üÿý9r¤×c °bÅ ,]º´ÃN(¯¾ú*î»ï>œ9s¦[õÝzë­xõÕWÛÜÿùçŸãÙgŸmsQ«ÛíÆ‹/¾Øê"Y‘H„Ù³g·»ÿ×^{ [¶li·]ßÞ½{1lØ0¼öÚk¸ï¾û B»û¨©©ÁâÅ‹ñ—¿ün·jµ"‘¨Ýu¡Ž;ƒÁÐ꾄„ÄÆÆznFœÞzë-äååµÚvΜ9¶éËÈÈÀºuëpíµ×¶¼ÔÖÖâw¿û–,Y‚‹.º™™™ÈÌÌ„Ëå¹sç°sçNlÞ¼ÙºiµZ|ýõ×¸ë®»Ú ¦OŸÞæ¾W^yÏ=÷œçö¾}ûpõÕWwýâüâí·ßÆÛo¿Ýáãž®K–,Ák¯½æõ¾;kA˜’’Ò¦!5«©©Á¢E‹œœŒ… ºœ áõL§¾"—É DD kô(œ+¯@yy¹W㮸|’““<·1î21Ìf3Ô‘‘P«#±ac"#" ç œ.988În…jµ …•Q¨zê©§0räHÌ;·ËÅ`{¢£DDDDDDýÙ'Ÿ|‚M›6aõêÕøòË/;mñsêÔ)œ:u _|ñE·wÅWà½÷ÞÃèÑ£»½ ½ÿþû¸øâ‹a6›[ÝÿÝwßáÚk¯ítìСCñ·¿ý­Ómrrr——‡¹sçâܹsínSPP€‚‚‚N÷“––†5kÖ`̘1nGDDýßóÏ?ÚÚZ¼ûî»ì¼t ›é$•J!“ÉpÇÜ9غm¶64ÀÔÔÔáöZ­Z7Θ¥R 046B$ Õhp×·ÃérÁåtáÄÉ"ÄÄÄ@*•r¦S êêê|^lTúK{ø¸8H$A—iú•ÓéôLíollDYYY€+ >Ó¦MÃ?ü€n¸'NœðË1jkk±bÅ H$H$ˆÅâv¿ïém±XÜaÛ"""""¢¾&—Ëqã7âÆo„ÙlF^^¶lÙ‚;vàÈ‘#½rD.—cúôé¸óÎ;1cÆŒ6Ÿ‰ŒF#¬V«çvCCJKK½Ú÷ðáñcÇÜzë­^€I“&aåÊ•^­'•““ƒC‡aÁ‚X¹r¥OkX+ ,X° .äE¶DD„ƒbùòå˜8qb‡í]ª [Ó©åXY£Fáø‰“ ë}z«5™àƒ>èp«_ûõºHÙÙÙØ¶m›OµwfРAžïï½÷^Lœ8±WöË+÷‰ˆÚ÷ØcA,]º4Ð¥  €æ“¹ã.»ñz=½ôr»ÛÈår\1î7˜yóÍ­fä¼¼ø5TWW£ªº&“ Î_Ö†ºxìXÄëõ ¼PYY‰C‡ù<.** III]oØ]8#Ðårù1eÊ8p3gÎÄ?þØ£}õ‡+ Að¬FÍú: Txg³Ù¼ÚW(ÿkiIŒX Â:¶¤$"""""" -¯¾ú*ÊÊÊðÞ{ïA«Õºœ Ô¡Sˉ¶?<þ(þ¿/×cí—ëár¹®‚J¥Âm³f@›+áŸ}ú)TTV¢¼¢±1±øaÏ^|¿gd¿œÄ åv}¥¢¢ôy\BBB¦—ÓÀ4hÐ ìÚµ =ö–/_Þíýô‡Ð‰Ú‹Å‹ÅËå]o<´´ï öÙl=½mµZ›[äv±m(·¤´X Â:""""""¢`uêÔ),Y²ÙÙÙøÝï~èr‚VH|ºW«ÕHLHÀ°¡Cq¬ Àó½ ½øÈáp@©P .6&S¤R ¢£›§Š3pêšÕjEmm-ÊÊÊ|9`×t¢ž‘ËåøûßÿŽË/¿?ü0Ìf³Ïû5j”*# ."‘2™,Ðe ·Û°­/e·Ûa±X¼Ú>”µ„ÌÁˆ"¬ãl8"""""¢àñä“OÂjµbÙ²eü¼Ö‰Ð"#‘˜˜€aC‡ü:%â²K.€vƒ'‡Ã¥R •J…üªcJ¥ˆŽŠbàä%‹Å‚ºº:œ={Ö籑‘‘HLLôCU4PÜ}÷ÝÈÎÎÆ­·ÞŠ¢¢"ŸÆr¦ÑÀ#gÚg IDATÉüJKøì³Ùz:Ö›uáŽÐnIyáÏw°b8¶X,ô?  PyyyX·næÍ›‡+¯¼2Ðå5¯ÎиÝî€~`w8ÈÎÊÂè‘#Q[[‹œ+¯ÀU㯀ÍfëpŒÓé„Óé㋱cÆ„ôI‡¾ôõ×_ãøñã°Ûí>KHH@zz:OüSeggcÿþý˜?>Ö¯_ïÕ±XŒ#Fø¹2"¢à×2[ˆš¹Ýî˜ÍÖÓÚìv»'ˆëlì¯ÛR‡š` ÄÖ ‚è""""¢~Ïn·ãñLJJ¥Â믿èr‚^P¯ét¡–(¯üé¿àp8`µZ½—ôbcb9lhÀŸC¨Ø´iNž<éó¸iÓ¦aÈ!üðK½B£Ñ`ݺuxõÕW±hÑ¢.×mIOO‡B¡è£êˆˆ(T‚©T é/k{õÕm«ÕêUm¡üA$m ˆ°Ž-NˆˆˆˆÈ–.]ŠÂÂB¼úê«ìòå¯g:ZK v»Ý«EÃ].\n·'aÒµ–ßùùù¨ªªòy|vv6ôz½*£JüñÄe—]†yóæ¡ºººÃm9ÃŽˆˆÈ;-'èåry K .—+àY_„uV«&“©Ëí½ù¬¬AÚ@,PaõLEE^zé%¤§§ãÉ'Ÿ t9!!df:µð¶å›Ëå‚Ãé„ÿ œ‚å9+‡Ã‹Å‚üüüN[v„¡ùËäÉ“±ÿ~Ìš5 {÷îmw›Q£FõqUDDDÔˆD"Èd2Èd²@—ZZRãìµÞ ïZZRz³¯PvášhÁˆâ6/F%"""_-\¸ƒ+W®ä…{^ê·—>¹\.8ìvÜw×]PGF2pòÂþýûñÝwßÁh4ú4n̘1ÀÔȯ „o¿ýÏ>û,þò—¿´ùš3ˆˆˆˆzŽ-)ÛòWàLáœÃáðj]8‡ÃÒŸ­E"Q¯bÿûß‘ššè§DDDD~´gϬX±S§NÅŒ3]NÈè·¡SË‹šW-zÁf³áôéÓøá‡|{Í5×ø¡"¢¶¤R)Þ|óM\sÍ5¸ë®»ZµdèDDDDDþв¾0¯lmær¹‚röZoßîj]8o×™&""¢Ðäv»ñè£B"‘à­·Þ t9!%äÚëy«åƒB¡h^ß)„{“÷«ÕŠ’’|ÿý÷>ÍÍÍõCED›6m<ˆ;î¸Û¶mƒB¡@zzz Ë"""""ê÷D"D"gÃQ¿ö¯ý ?þø#žzê) 6,Ð儯B'·Ûr¡SK½ ›¼óôÓOcÿþý¨¨¨ðzÌÈ‘#1räH\ýõ~¬Œ¨} øæ›oðç?ÿëׯ‡X,tIDDDDDDDDDâðì³ÏB¯×cÑ¢E.'äôÛözäššÔÖÖbÿþý8wîœ×ãt:ÆŒƒ©S§ú±:¢Î‰D",Z´<ð@ K!""""""""¢~àOúΟ?>ø.'äôÛ™NÔµ“'ObçÎØ¹s'öïßïÕ¿±\.‡B¡Àc=†ñãÇcüøñ}P)Qçâââ]…¸cÇŽaÙ²e7nî¼óÎ@—’úíšNÔµ“'Ob×®]øì³Ï¼þ÷U(ˆŒŒÄí·ßN¥Réç*‰ˆˆˆˆˆˆˆˆˆˆüïñLJÓéÄÒ¥K!B Ë Il¯7ÀØívìÙ³?üðþøÇ?ÂétÂétz56++ óæÍüyóœœìçJ‰ˆˆˆˆˆˆˆˆˆˆúÆÚµk±yófÜ{クôÒK]NÈbè4À¼÷Þ{8~ü8Ž?§ÓéÕ '½^¸¸8Üwß}3f ÔjuTJDDDDDDDDDDä‹O>ù$Ôj5/^èrBÛë 0ï½÷ªªªPUUåõ˜¸¸8Œ3÷Ýw¤R)¤R©+$""""""""""ê;o¾ù&Š‹‹ñ—¿ü±±±.'¤u:) ÍIŸ\.÷{Aý‘Óé„Ãá€B¡€DØÉeIII°Z­>…N 8sæ L&T*C'""""""""""êJKK±xñb >>úh Ë y]& .— 555ˆ…H$‚H$ê‹Úú‡Ã“É“ÉFã ñeþüù())AII Ö¬Y³Ù ‹ÅÒé˜úúz”””àÿøÆŽ‹±cÇB¯×÷QÅýËåâÌA I‚ x¾ˆˆˆˆˆˆˆˆˆúƒ§Ÿ~MMMxûí·>i¤?èòT«ÕhjjBuu5t:$ O8úÀápÀh4¢¦¦111î¸ãœ={¥¥¥Øºu+x:Õ××cùòå˜3gâãã:õ@Kèär¹] ‘OÄb1D"Q¿°cǬ^½7ß|3&Ožèrú….C§Q£F¡ªª çÏŸÇÁƒáp8àp8ú¢¶~A¡P@£Ñ 66#GŽô´Ú ¤¤¤$$%%aÿþýøè£°bÅ ìß¿¿Ëq§OŸÆ;#ÿýßÿÅîÝ»¡Óé Óéú âþ¥²²Òä †·“ËåÉdP*•nc6›a6›!‹¡P(Ø“ü*&&jµjµ:Ð¥õˆÓéÄc=…B%K–ºœ~£ËÐÉl6C¡P !!£G†T*å3´„MMM0›ÍAÕšJ«Õâ·¿ý-æÎ‹‹/¾ƒ ŽiixË-·àÞ{ïÅ=÷ÜÃÐÝP\\ŒŸ~ú ‹-êrÛ¸¸8Œ3YYY˜={v«Ÿ¡M›6aÍš5ˆŠŠÂÔ©S1uêT—NDDDDDDDDDòþþ÷¿ãðáÃxá…ššèrú.Ó£šš8Øívèt:®Eã#·Û “É„šš(•J¨T*„……º,©T •J…믿ûöíþ}û¼wþüy:tyyy˜={¶Ÿ«ìßââ⇘˜˜V÷ÛívØl6œ={eee0ÈÈÈ@BBJ¥QQQÐjµÎˆ""""""""""¢f555xá…œœŒ… ºœ~Å«ÐÉn·Ãn·cÈ!}QS¿âv»=kb………A„  ¤R)®»î:444x:UVVâСC¡SÅÅÅ!++ #FŒhuˬ²µk×¢¬¬ ùùù9r$Að„NaaaˆŠŠ‚Z­øzaDDDDDDDDDD¡à…^@mm-Þ}÷Ý :_ßt:•––bÈ!2d¤R)Ün7¬Vk_ÔÖ/H¥R 4 ظq#d2¢££]V3fÌ@cc#°aÃ¯Æ ;v¬?Kì·ôz=²³³1qâÄv¿é¦›°zõj¬^½Ÿ~ú)är9ÆŽ ‘H„œœäääômÁDDDDDDDDDD!êàÁƒX¾|9&L˜À ~Ðeèät:b±˜­õºÁívCˆÅb8¸\®@—Ô¡Áƒc„ ^‡N@óóûæ›o0tò™L†ÈÈHÄÅÅ¡¨¨V«V«J¥F£‹ÅP©TP©T­ÆFTWW£ººƒ Ôj5¢¢¢ÝfL}}=êêê ‘HŽˆˆäç磩© &“ r¹:Z­Ö3ãê׬V+ªªªP]]ššÏqõz½ç¸b±Ø¯QÇ{ì1ÀÒ¥K\IÿÔeèäp80tê‰P RRR ‘tù#áÑòó°yófÀÓO?í—º:™LµZØØX;v V«‹J¥(//‡T*E\\\»¡SII PZZ A  „ÌÌLÏ:cª««Cqq1 âãã¡P(pèÐ!TUU¡ªª ‘‘‘HOOGzzz§¡SYYŽ=ŠãÇC$AŒ3™™™Ðjµ ˆˆˆˆˆˆˆˆˆ¨O}òÉ'صkyädeeºœ~É«„ÁívuXìB%¬KLLDbb"®¸â ”––¢´´Ô«q-¡ÓÉ“'¡Óé ÓéüYæ€d0PVV‘H™Læé3ºgϬ]»S§NÅÔ©S4¯ÅVSSƒ»ï¾"‘"‘£F‚Ëå‚ËåÂæÍ›!—Ë!“ÉðñÇ·š%uôèQ|õÕWP*•hjjBSS4 Ôj5¶oߎ7Âl6ã7Þ@jj*RRRý»ú駘9s&233ýX]ÿsêÔ)¸Ýn¶ºÿÂЩ±±n·óæÍÈ#ºlMg·ÛÑÔÔ„©S§bܸq7nœgv\rÉ%Xµj~þùgB.—·i•wöìYŒ1S¦LÁøñã=÷?ááᨪªÂáÇ‘”” ùJà‹/¾@ZZrss‘››‹ØØXÏØììläåå!//Ÿ|ò ¦OŸÎЉˆˆˆˆˆˆèûÛßðòË/{½ýªU«››ëÇŠˆˆB_QQ–,Y‚ììlÜÿý.§_cèDmdff"&&‚ øôï~äÈäääø±²þ©¨¨EEEn£Õj¡ÑhpÕUW!<<¼Ë}FEEaÈ!>|8[N-·Üg±X>¾ÝýÆÇÇcìØ±Ø»w/jkkQUUÕ&œ""""""¢öt¡“¡±ƒgJÏú>ááªöF*•ª[ëì466¢¢¢Â‘·`6›át:1räH$''C­V·ÚÆ`0ôúB£ÑÑÑP©T‹Å(..FTTT›mÜn·gVdd$T*”Je¯ÖADDDDD4Œ7Û¶mëÖØØØX466¶¹ÿ¶ÛnÃ|àóþŽ9‚K/½´[µõ¶… Â`0à£>òt^"ÿ º™NÍlݾ.— N§Ó«iiHJL€D"iUëUãÇ#.6aaap8¨©©E|¼p{j 4*•ª[ë2F”——û¡"ò–7¡SCCC¯‡NQQQP©T‰D(**BFFF›mÚ ZfG‘ïAèöç*AÚ½_$ukŸ<¡GDDÁbÏž=øðÃqíµ×â†nt9JÐ…NáሌˆÀísçàà¡Ã8xèWãžzò÷ˆþef…ÛíFm]jkk‘¬C32pÇœ9(;W­FF——aÖ@åËšDª¯¯Gqq±*"o%$$ 22"‘ß~û-d2RRR —ËQ÷Ëÿ/¾ø"ª««4ÏNë*<<£GÆ 7Ü€5kÖÀd2¡´´³fÍ‚Óé„ÓéÄßþö7âôéÓX°`FŽÙããýÿìÝy\”åú?ðÏì3 Ã2À°ƒ îÉÅ%w%m±ìk¥+=•m¦¹ôM-ËÊ5ë(¶Xç|Z‘¨åZ¹” jˆ»(*" (¢00¬3Ãì¿?<3?ÇY˜†åz¿^ózÉ}?Ïý\3C4Ï\÷}Ý„B!„Bˆ‘Á`ÀÛo¿ 6›5kÖx:œÇáòz-•t2^gʤç àóqûömHÿûå¸51;#¦s'tOH€Á`€^¯degã·={q%ï*zõì^=z øÖ-ôíÓ£GŒ N‰D.•=kŽ4Ä9b±ƒ†——¾ýö[9rü1¸\.ôz=ôz=¦OŸŽÂÂBà§Ÿ~Â… ••…Ù³g7éÚ)))HJJ‚T*Eqq1¾þúk|óÍ7îý·Í`0ЫW/Lž<ÿó?ÿcsV!„B!„B!„¸bÆ 8yò$æÌ™ƒøøxO‡Óá8¼Ò©¥1 D„‡¡r2~ݳÇê1l6‘áè—”½^o–HêáC‡BÀ ,4ÞÞÞP*•à°Ù‹ý[êi´YL&l6^^^Ðh4Ðh4g}úÀÇÇ>>>MzÞ„B!„B!„ò Å‹£¬¬ 6l ï =¤Õ•×»ÿšÑQQˆéܽ{õBYy9ÊÊÊÌŽyáùÉèÕ³|}}Ì’N—._AEe%**+ñÜÄÿAUu5ªªªQ[[‹ð°0hµÚ}.mYHH¤R) …Sç#88‰¤™"#Àçóín˜«}B¡B¡°Ù6Ò D`` ÍÕR„B!„B!„â.yyyX»v-ú÷ï^xÁÓátX­¶¼S"i`Jœ>{ååå0 àr¹àr9èÙ£;‚-bYÙ'PUUYub:uB¥L™¬ ;u‚Ÿ¯Ÿ'žJ›åííêêj§Ï“ËåP«ÕÍ!„B!„Òqcúô馟ccc=9.—‹Þ½{ãÂ… îUá „BZÊÌ™3¡Õj±víZÚÚÃZmy=ã5õz=ôï‡òòrœ=wþ¿I'„B!ztï¥õ²²³QS[‹ššÄwéroÕSE%†<<ÞB¡GžK[% Áår>O.—;\’B!„B!މ‰‰Áºuë<†U#GŽ4%Œ{B!ÍmÇŽØ¿?¦M›†äädO‡Ó¡µê•NFQ‘‘è—œ½Á€»v£_R2F  c®òÁÒÊ¥Ÿ¢ °× áç燺úz¨5j„…†˜YÄ1ÇéójjjÐÐÐÐ B!„B!¤½)--Åž={pùòe”——£¼¼UUUð÷÷‡D"D"AÏž=1vìX„„„´x|Ø»w/rrrLñUVVÂ×××_BBÆŽ‹¨¨¨Ï]nܸS§Náܹs(**Buu5ª««Áb±àïï±XŒøøxôîÝ}úôiÓÏ•Ò~444`öìÙðõõŲeË<N‡çðžNž¤×댿õ}çÎç :*ÑQ‘6ã …ˆŠŒ‚ÈåRH‚‚LÉ&O?—¶†Åb¹´±¡¡öÎj…t:t:4 88ŽÃï¯N§ƒ^¯‡Z­vø\ƒÁ…B&“ ‹åÒª9B!„B!í“B¡À—_~‰M›6áüùóÃ`0˜˜ˆÉ“'ãÍ7ßÇk¶ø4 þõ¯á‡~ÀÉ“'žÄܳgO<óÌ3˜5kD"Q³Åç.jµ6lÀúõë‘íÔ¹qqq;v,ƇQ£FÍnóÛ !í̪U«pýúu|ñÅH$ž§ÃkÕåõî¿vhHB‚ƒ¡×ë‰ð°0èt:«Ç ø|ÃÃŽÍ[FP` âãi…“ x<žKh¥“mB¡l6 Å¯ŸŸk׮᯿þÂàÁƒ1hÐ øúú:tnQQ®_¿Ž %%ýû÷·ûG\­VC£Ñ`õêÕˆˆˆ@DDžxâ w=âÞÞÞ”8$„B!„4™N§Ãúõëñᇢ´´Ô©s Μ9ƒ3gÎ -- K–,Áäɓݺw‡Á`ÀÖ­[±`Á:}~nn.rssñå—_â£>Â+¯¼Òj“1GÅôéÓqåÊ—Î/((ÀÚµk±víZcÊ”)˜6mºuëææH !ĺ’’,[¶ ݺuÃŒ3<AI:“ÉŒ6 Z­Öî~A÷—Ð+º~b1:EEyü9´EÇôÚ;£¡¡ÁfR°£ …y}Î;‡K—.!==b±#GŽD`` Cç^¹rHOO‡P(DJJŠÝs•J% ÒÓÓ‘””„¿ýío˜6mš»ž ñ6› ‹åé0!„B!mX]]&L˜€?ÿüÓjHHÆŒƒ¨¨(B*•¢¸¸û÷ïGyy¹Ù±ÅÅÅøûßÿŽ_~ùééén™Ü©R©ðâ‹/bóæÍVûÅb1RSSÑ©S'C&“áÖ­[øã?PRRbvlyy9Þxã lÞ¼;v쀟Ÿ_“ãs§ôôt¼øâ‹V¿ŸèÔ©ް°00 \»v ×®]Ã¥K—PYYiqNYYV­Z… 6@*•¶ÄS „Ì; …kÖ¬iµ þŽÆáòzžNد¯P(:^§ÓA«Õ¢^.ƒÉ€ˆV:¹€Íf»”t¢•N¶¹²G–»Ü¿rÃá@ ÀËËËás±³ÙlðùüFÏ5þwËd2Áf³¾!„B!„öçÎ;;v,rrr,úbcc±fÍ<òÈ#V'»iµZüöÛo˜9s&Š‹‹Íú¶oߎQ£Fa×®]p9¾êêj<ùä“ÈÌÌ´è ÅêÕ«ñä“OZ­¡×ëqðàAÌš5 —.]2ëËÌÌÄàÁƒ±gÏDFFºŸ;ýöÛoxá…,¾+>|8æÍ›‡ÔÔT›ß©Õj|óÍ7X²d %—!uäÈlÞ¼O>ù$FíépÈ9ŸMh#ôz=ôz=ú%'!,4ÔãI³¶ŠË庴²A«ÕR’B!„B!€ÚÚZ 2ÄjÂé©§žÂùóçñè£Úü‚ÍfcüøñÈÉÉÁ¸qã,ú³²²0räH—'ÀªÕjŒ3ÆjÂiذa¸pážyæ›%Ç™L&F…S§NaÊ”)ý—.]ÂÃ? ™LæR|îT__¦-âê IDAT×^{Íâ{›ÔÔTìß¿cÇŽµ;™ËåbæÌ™(,,Djjjs‡K!Vét:̘1|>_|ñ…§Ã!÷i·I'ƒÁN‡~ICx%\Åáp\J:i4J:B!„B!ðòË/£  À¢}РAØ´i¼½½Ç××[·nEß¾}-úrrr0sæL—â›7oN:eÑÞ½{wìØ±ÃáÒôÿùÏ0jÔ(‹¾ââbL:Õ¥øÜéÛo¿µ(ˆ­[·:UšJ$áÇDxx¸»C$„F}ûí·¸páæÎ‹Î;{:r‡“NÆ{måÁåráíí À@xyyy<žŽ–ôª««ƒJ¥òt„B!„Bñ°uëÖaëÖ­í^^^øùçŸÁãñœÏËËËf‚ä»ï¾³¹“-;vì@ZZšE;“ÉÄÏ?ÿ ___§Æc³ÙÈÈÈ€Eß®]»°zõj§Æs·-[¶X´õïß"‘Èé±±~ýzw„E!“Édøàƒ‰ùóç{:ò‡’Nm1abLôËìB!„B!„–¥V«±páB«}o¼ñBBB\766/¾ø¢Õ¾¹sçB£Ñ84Ž^¯Çœ9s¬öMš4 ݺus)¾€€¼ýöÛVû-Z„êêj—Æm*•J…“'OZ´[[9æ¨#F@(6%,BqÊûï¿™L†Ï>ûŒöo…ÚíJ§û“NžŽ¡#®t"„B!„B9}ú´Õ}Œ˜L¦Íd£æÍ›gµ½¤¤ééé±mÛ695¾£fÍšeu5V]]¾ùæ›&íª»wïZm—J¥.Éb±œœìòù„⌜œ|÷Ýw:t(ž}öYO‡C¬p¸P+%M!Fçϟdž ìÎHÓh4Ï,#„B!„Òþ ;vÌj_rr²Ë«œŒâããÑ­[7\¹rÅ¢oåÊ•xñÅÁ`0쎱jÕ*«íQQQèÓ§O“â À!CpðàA‹¾5kÖàwÞŸÏoÒ5œ¥P(¬¶[[ý䌷ÞzËôz9º?!„¸Â¸ŠÔZYTÒ:8”t¢•:ÄYµµµ´§S;–••…¬¬,O‡A!„B!¤«­­EUU•Õ¾G}Ô-×xâ‰'¬&®\¹‚óçÏÛ-wýúuœ8qÂj߸qãÜŸµ¤SYY<è¶ë8*&&, :άýܹsظq£Í’…yúé§ñôÓO»#DB±)##GŽÁo¼Þ½{{:bƒÃ+!Ä()) IIIH$61®t²5kŒB!„BHûf+áýúõsË5ú÷ïo³/33ÓnÒ)33ÓfŸ»âKII±{ý–N:ñx<ÄÆÆ"??ߢoÆŒ`0˜2eJ£+Ä!¤¥ÉårÌ›7øä“O<±ƒ’N¤YÐʸö-)) ¯½özôèaó¥R …BAI'B!„Bé ì%âããÝr„„›}™™™˜5k–ÍþÇ»4®3ì=O{×oNÆ ³štª««Ã‹/¾ˆï¾û‹/ÆðáÃÁd:¼ßÓá())Á‰'PTTdó‘H‘H„¸¸¸ŒŒB!„BH{æîïFìW__ïT{cã¹Â•øZJBBΜ9ƒÌÌL|õÕWؾ}»S[l”””à½÷ÞÃòå˱bÅ ¼òÊ+n+H!iiiÈËËÃ’%KáépˆƒM:‰Åbp8ðù|¨Õê–ˆ©Ýa±X`±X‹ÅÐëõ´ô˜´ ÇÇíÛ·ÁãñlÓµkWÄÇÇcÖ¬Y-!„B!„öL©T¶Øx¾¾¾VÛ}||\ÏöƳGK:t(†ŠÒÒR¬_¿ÈÍÍuøüêêjLŸ>¿þú+222àååÕŒÑB:‚²²2|üñLj‰‰Áœ9s<qB£I'F6› ‘H„€€p8Ó>O¤qJ¥J¥ … ƒf|VáÖ­[¸uë–Ýcjkk)IJ!„B!ĭܽºÇÞxb±Øj»¿¿? †Õ{Þ–Œ/ À­×jª°°0,\¸ .ÄåË—‘‘‘Í›7#??ß¡ówïÞ§Ÿ~{öìiæH !íÝ{gÚÚZüðÃv'͓֧ÑìQ~~>4 4  @_@;I¯×C*•âÖ­[ðòòB`` =é yä<òÈ#X½zµÓç6 Æ ÃG}äÐñ^^^ðòò¢¿„B!„BÌÈår·Žg+©Ãd2mî­Íb±àëëkÚR¢9ã³7ž­¤Xkн{w|üñÇøøãqâÄ lܸ¨ªª²{ÞÞ½{ñÃ?`Ê”)-)!¤½9yò$6n܈ÔÔT<ñÄž‡8‰Ùصµµàñxˆˆˆ‹Å‚Á`€N§£‡ƒ㇘ˆˆÔÖÖB¥RµÄûJ!„B!„âQÇjûÝ»wÚ7È¥R ™Lfµ/44Ônµ™ððp«íZ­Ö­ûš—””Xmçñx­n¥“-ýû÷Ç×_;wî ##111vŸ={¶Í÷…Bì1 ˜1cØl¶Kç‰ç5štª©©—ËExx8˜Ì{‡kµZz8ø`2™ðõõExx8%!„B!„ÒaØZe¤ÑhPTTä–käççÛ¬°ñðÃÛ=×^ÿÕ«W›—Qyy¹Í•A)))6s­ÇóÏ>‹ÜÜ\,\¸Ðæ8pà@ GGi6lØ€“'Oâí·ßFBB‚§Ã!.h´¼ž1IÂår¡×ë›= öÆ`0€Éd‚Ë墡¡Á4“G©T¢¡¡ ŽÐ’H$—Ë—Ëõt(mŠZ­F]]àòåËÈËËÃo¿ýæá¨<‰ñßG{`øïƒg ÒÞt„B!„´}Æ{ØýòË/.•}ÓjµP«Õ¦Ÿí­téÓ§x<x<nܸáôõ //Ïfß°aÃìž;lØ0¬[·Îæ¸C‡u)¦DZwý¶J àÓO?…H$Â{ï½gõ˜+W®´pT„¶®¶¶óçÏGpp0-Zäépˆ‹M:÷'´/‹ë¬½vJ¥ÕÕÕVk{ƒÁ€··7%œÄ`0Àb± ×ë!àíí=zx:,Ñë½ Ó ¡Õ¶íä‹¥‹e‹UééPZ&“ &“‰àà`O‡B!„Bi¢M›6A£ÑX´‡‡‡7ºJÈ©TŠ‚‚\»v àï «Çj40Œ&çtôèQ›}Ç·{®½¤Ò±cÇ0}út—ãº[<‘tªªªBNNŽéçääd…B—Ç{÷Ýw±uëVœ9sÆ¢ïòåË.Ké˜/^Œ²²2¬_¿>>>ž‡¸È¡¤`=qB\§T*QUU…;wîx: >>>”pr“ɋłF£@ €X,FRR’§Ãò&MXž¥I¸\8x¼O‡Ò*°X,°X,ôêÕËÓ¡B!„BšhëÖ­V“Naaaxì±ÇœïÚµkP«Õ¦¤Shh(t:Õòr:J¥²ÉI§_ýÕjûÀѵkW»ç†„„`ܸqøý÷ß-ú~ÿýwÓ^ÝM±{÷n«í±±±2dH“ÆvÅ™3g0zôhÓÏÀˆ#\Á``èСV“N´§!ÄyyyX»v-ú÷ï_|ÑÓá& •N„¸‰q¥…BaðàÁÇåææâÖ­[¸yó&rss¡T*¡P( T*ÁårÁáp ‰àããtëÖ !!! it£ÎÖ¤¡! ‘ËÛV}êñùðù…§<J«ÀápÀf³1räHO‡B!„Bi¢—_~J¥Ò¢=** 'Ntz¼ììl\¿~Ýôspp0zô茌Œ&ÅiË™3gP\\lµïÝwßuhŒyóæYM:Éd2>|¸I÷>%%%8qâ„Õ¾9sæ˜öN÷¤ÂÂÂ&% K—.VÛ©B!Ä3g΄V«EZZmëÐÆÑJ'BšY}}=êêêLu¢Ï;‡èèhDGGcêÔ©€X,ŸÏ‡B¡€B¡@NN®^½Š«W¯";;Û4V||<ºuë†nݺaàÀžzJÄI2™ UUUÉd(,,4û·B¡€\.7;ÞÖL8GÈårÈår\ºt 2™ •••¸qãêëëQ__ÚÚZèõzèõzxyyA$A$¡GˆEll,ÂÃÛú” !„B!ЫW/>|wïÞuûØË–-³Ú'žx¡1† †äädœ:e9ÑpÙ²eMJ:­X±Âê÷iAAAx饗\×þøã¼òÊ+M£ Àze¶4q–âY;wîÄþýû1uêTôë×ÏÓá&¢•N„4#©TŠüü|\»vÍ´×èÑ£а°0„††š6Ne±Xàóù`±Xˆ‹‹ƒ¯¯/bbbð矢ªª UUU¨¬¬D^^*++¡×ë†ððpðx<?SbÏŽ; T*Me5ÿV(f›ìºÃÕ«WqöìY”——›®S]] µZ µZ Ngú›®V«QWWµZ+W® ¬¬ yyyHJJBHHBCCif !„B!¤I˜L&fÏžmså‘«ß7={Û¶m³z½¯¾úÊ©{™/¿üƒ¶(5xàÀ:t¨Ñ½¡¬)..Æ¿þõ/«}«W¯†@ pzÌæðûï¿£¬¬¬I«’Ξ=kµ}„ .Ié8T*fÏž ›“ HÛB+iFååå¸pá233M‰¡Q£F!((Çóx<ðx<ÄÅÅ!&&:………îmöYQQŠŠ äååA§Ó¡_¿~ ¤¤S+·}ûö»ÖÕ«W±sçN‡ŽU©TP©T¨««CEE…馌Éd¢oß¾nrýrB!„B0`zôèK—.Yô©Õj§ïie2&Nœhõ»ªùóç;½:©_¿~Xºt)æÍ›gÑ7yòdœ:u §T*1a¨T*‹¾©S§bòäÉNÅלär9æÌ™ƒüÑ¥óÿúë/üõ×_퉉‰èÓ§OSÃ#„t«V­BQQ>ÿüs*ËÙNÐJ'BšJ¥Bmm--ZdÚgÅŠîmTê&“ &“‰™3gâÈ‘#8räNžßêu¹\Žúúz¤¥¥¡²²•••èÚµ+RRRпH$÷k7Îüü|¬]»6l@}}½EÿŠ+””äðµ !×¼yó P(°fÍÓ÷Þ¤í£òz­œ^¯‡F£\.‡P(4K:ÕÕÕA«ÕB$ÍfSÒ©Q(P©TÐétÇ€\N:÷>ØcýúõP©T¦¤“±<Ú¡C‡Àápk5锲²2S›ñßÕÕÕ”tjÆ“¿¿?âââ ‹!‹nM:q¹\…BtîÜ‹ÅèÔ©¼½½! áããcZEWSSƒ»wïâÎ;¸~ý:˜’NÕÕÕ¨®®ÆÍ›7EI'B!„BÚ¨ºº:‡Kp•””XMœtëÖÍ]aY¨¬¬Äk¯½†·ß~ýû÷GTT‚‚‚ •JqóæMœ8qÂæž¸Ó§OÇW_}Õäòà\.?ýô"##ñÙgŸ™õÕ××cîܹøßÿý_$''£S§N L&í[· ¥RiuܧŸ~?þø#ø|¾Cq\»vÍ©÷,;;Ûês±Æ^)ü¼Œ}ûöáûï¿Ç¾}û¬–õ{——FŒ‰'âùçŸwiõUTTT“ß3{eªºté‚+V`É’%8vìöïß}ûöáüùófß-5F `üøñxá…ðÈ#4Û{Ai¾ûî;äää`áÂ…ˆ‰‰ñt8ÄÍÚôJ'ƒÁ€r©RiT*K"‘´Ëújµ¾¾¾ˆEbb¢YRÁ¨¡¡uuu¨««Cii)T*Ôj5®_¿ŽòòrSÉ-Ò< t:YÛíÛ·qãÆ ¨Õj³¤“±ìÙèÑ£áð*’„„ܼyEEE(,,4ë+++ƒT*Åõë׈€€÷>LŽ7»wï†B¡€R©D@@âãã‘à†gNÚ‡ƒ®]»"$$Û·o7µ—••A.—{02B!„BHSDGGãðáÞÃ&‹©TŠcÇŽ!77ååå(//GUUüýý!‘H ‘HгgO <¸E¿÷IMMEjj*t:Nœ8sçΙ⫬¬„¯¯¯)¾„„ :Ôá2z¶<÷Üsxî¹çÜô lc³Ù6l† †¥K—B¡P //—.]BAAª««Q[[‹ºº:ðù|x{{ÃÇÇ]»vEß¾}ѳgO»åú!Ä™L†÷ßX°`§Ã!Í Mïéd0P^.Eîå˨©­EŸ^½ ö÷›ÝþpEFF¢GHII±y ŸÏŸÏGPPY†øÀËåV7w$îc0,f•——[gÜ+§°°ÞÞÞ0`€ÃI'6› ???„‡‡[$ôz=ôz=JKKÁãñLI§ˆˆøùùáĉÉdÐh4FBBú÷ïïâ³%푱dçý4S3Ý!„B!ÄÇÇðáÃ=ŠU, ÄÀ=J³ñòòBbbb“· „{Þÿ}Èd2|ýõ×ðòòòt8¤´é¤Ó±¬ã8”y‡þ[_7ïêU\ÍÏÇ ÏOöpdî' ]žÉÃçó¡R©Üy^¯·XéÔ˜C‡A¡P ¾¾£Gvè‰D‚^½záÈ‘#VûOŸ> g*{`ÜÿkéÒ¥NÅF:­VkZ‘gäïïßäYz„Biª««1kÖ,—Ï7N¦òóó3•‰‰Abb"¸\®#%„B!­ENN¾ûî; 2Äb_zÒ~8\^¯5ò ÁårÀ`0`0Àår!òöötX¤så¿™L†k×®9œtð÷÷·ÙÿþQ„8£®®R©Ô¬M"‘@(z("B!„´V …7ntû¸|>ÉÉÉ4hyä·íCC!„B<ïí·ß¤¥¥y8ÒœÚôJ'¡Ph6 ŽÇåÂÛÛ»UÆJÚ?W÷>«¬¬tê<>Ÿo7éT]]MI'âã~p÷ ¢¤!„BZLCCŽ=Š£GbùòåèÓ§fÍš…I“&Ѿ!„B!mXFFŽ9‚7Þx}úôñt8¤µé¤S×.qx5t*&=3uuõ D``Ôjµ§C#Äa555¨¯¯wxÏ-ƒÁ@`³ß¸Ñ§§÷ðR©jÑÐP …¢å6xmz½:Có¼žÖþ^yâ½S«Õ8yò$þøã³ö!C† ((ț͛ÍFUUU‹ÇH!„ÖƒÃáàĉfmׯ_·ºñýÏ?ÿl±‡©R©DUUª««!•J‘£GZ¬ºÎÉÉÁÔ©Sñî»ïbåÊ•?~¼ûŸ !ÄmêêêÌÊûk4(•J‹vB!‹B¡À¼yó ‹ñÉ'Ÿx:ÒÌN:µFƒ"ooð¸<ðù<§÷Ôi‹jkk¡P( T*Mey<Äb1˜L& †§C$N0 Ðétøå—_:^£Ñ@«ÕÚìW©T¸xñ¢Ç?Ðkµ"hµ>Ðh˜£©Øl=Øl=8œ;Í2þåË—-Úý]p'N‡ÂÂBÈår³öÌÌLxyy™V;1™L0™Ldgg·xŒ„BiÝ***¬¶ïß¿ßîJ}èÒ¥ ºté‚òòrœ:u —.]2›ø(•J1uêTôéÓ#GŽty¿[BHó*--Å… L?#33………¸xñ¢##„âIK—.EII ¾þúkˆÅbO‡CšY›N:éõzSÂ…Á`@¯×wˆ¤SMM d2*++¡Óéàãã‘H___‹Åòp„—++õz=€{3@Ý¡¡¡.\0û OÚwý.¸Cff¦§C „BH÷Ýwß¹m¬œœäää¸m}úàÕW_õt8¤8”tru¯š–Ð’LPVV†]»vaûöí€àà`H$p¹\ܾ}µµµøæ›oàåå@€ÄÄDH$H$¨Õêó:yƒÁ“É4%‘åïïL:Õ¡ã ôz=>úè#«ý\.C‡Å!CœŠÃÝ4 Ôê (•m; ÊåêÀåjÁç_m–ñ:„ƒšµµä2ã[·náæÍ›Ø»w¯©Ïç£ÿþèׯ|||ÌŽg³Ù`±XèÛ·¯Ûc9qâ<ˆƒýŨ° IDATZ”ù#¤=ÉÍÍEnn.<ˆÇ?þ¸§C"„·(..ÆË/¿lѾać‡;=žÁ`À÷ßüÑ¢/::«W¯†···K±BšÇ•+W°gÏìÙ³˜˜ˆ¾}û¢gϞطoŸÙ}!„ŽaöìÙP©THKK£ÅD›ÞÓ©#)** Aƒ0pà@ôìÙÓæqr¹r¹çÎCaa!²³³QRR‚˜˜tîܹ#îxX,¸\.œ:¯W¯^2dzè!‡ŽW«ÕvKçùøø ::ÚáñšKCC$"!—·íÒ'|¾|¾B¡í}´šâÊ•+m-õÞíÛ·9998yò$˜Ês.X°¡¡¡ ±8‡Ãá€ÍfcäÈ‘nG¥R™Ê Ž5ÊíãÒZðù|444àäÉ“HHH ßwBH»a­l0 8]ºtqiÌÑ£GcĈ˜6mšY{qq1V¯^ýû÷ƒËåº46!Äý¼½½ÍªnˆÅbÄÅÅ!))‰ÊëBH´ÿ~ìܹÏ=÷œÇ'È“–ãðJ'âY‘‘‘ …D"±{œñ†+..¡¡¡P(¨­­5­¦!Í‹Étnÿ¢øøxtîÜŸ£V«-öݹŸH$¢ob—L&CUUN:…Û·o›ÚÃÂÂŽÐÐPš5L!„VcêÔ©8{ö,¾üòK³öÌÌLÌ;iiiŠŒB!„Ø¢Ñh0sæL…B|öÙgž‡´ ZéÔFDDD8”tâp8àp8ˆm¡ÈˆƒÁƒÁpꜮ]»¢sçÎN•Ñh4v“NÞÞÞ”t"vUUU¡  À´ÂÉø÷=,, IIIVW8B!„xÒ矎ãÇãÌ™3fíëÖ­ÃÌ™3éþ‡B!¤•Y»v-òòòðé§Ÿ:5áž´}'!Ž AHHx<¤R)¤R©©ì^DDâããѵkWŒ=Ú鱫««ínÄc¶ªM.—£¾¾iii¨¬¬Dee%ºv튔”ôïß¿ÑD&i_öìÙƒÓ§OãÔ©Sf“ žyæôéÓ½{÷ö`t„B!Öq¹\|üñÇxôÑGÍÚ5 -Z„ôôt·\G§ÓA*•B&“Á××AAAÐ¥ÓéPRR•J…€€ˆÅb§'º¹B«ÕB*•¢ªª þþþ ‡ã¹²Ù*• ÅÅÅH$ðóósiŒšš”––šÞ×–z>ÕÕÕ(//›Í†D"¡Š„B:„²²2,^¼111˜;w®§Ã!-Œ’N„46› >Ÿ‡~ …r¹Z­À½=—èÒØr¹R©Ôfpp0„B¡éç’’äå塬¬ J¥Z­eeeÈËËÚÀ¾ƒ0&O:…ÒÒRS»X,†¿¿?úôéƒàà`FH!„bߨ±cѵkWäç盵oÚ´ .D÷îÝ]÷àÁƒØ¹s'~ûí7\¿~z½Þ¬_"‘`Ĉ3f &L˜___‡ÇÞ¶mnÞ¼i÷˜nݺ!55Õô³B¡À¿þõ/¬[·………Ðh4¦¾€€Œ9¯½ö†îpÑëõØ·ovïÞßÿ7oÞ4› Ä`0Š‘#G"55O>ù¤Ù=Gc~úé'”——Û=¦oß¾:t¨éçšš¬^½ßÿ=nܸaz_Äb1zöì‰wÞyãÇ·›„;þ</^ŒcÇŽ¡¢¢ÂÔÎãñ0|øpL›6 'Ntøy8"'';vìÀï¿ÿŽóçÏC­V›õ …B 8ãÆÃSO=…èèh·^ŸBi æÏŸÚÚZ|ÿý÷àñxž‡´0*¯GH3`³ÙàñxͲAž\.·{Ãöàì¹’’dgg£¬¬ÌÔfüwuu5%:ˆÊÊJ\½z§N2k÷÷÷Gll,­p"„BH«Ç`0ðæ›obæÌ™fíƒÛ¶ms:étüøqÌ™3Ç·{\yy9222‘‘¹sçbáÂ…xóÍ7ú嫯¾ÂÁƒí3eÊSÒéðáÃxöÙgm~Þ¯¬¬Ä–-[°eËL˜0?þø#A£qØsàÀÌ;çÏŸ·yŒÁ`@ii)~øáüðà Á‡~ˆ—_~lvã_+|öÙgvÇ€™3gš’N;vìÀÔ©SQ]]mqœL&Ñ#GpäÈ<ôÐCؼy3ºvíjvŒZ­ÆË/¿ŒüÑêw*• {÷îÅÞ½{1|øplÛ¶ÍåTF×®]Ã{gmÛ¶Ù=N.—ã?þÀüwß}¯¿þ:>øà—'%B!­ÍÉ“'±aÃŒ3ãÇ÷t8ÄJ: J:Ò èõz”””˜ö⹛͛ÍFß¾}Áb±Lí2™ ÇWVV¢¦¦¦Yã%­ÃöíÛqîÜ9œ;wάýá‡Æ Aƒ0pà@EF!„â[å©÷íÛ‡÷ßßáq/^Œ>úȬÇã!55ýû÷G`` ªªªpùòeüúë¯Édî}¶ž3g6mÚ„={ö¸5Q°}ûvLš4 *•Ê¡ã·mÛ†qãÆáÀ`2™N_Ï`0àwÞÁš5kÌÚ½¼¼0nÜ8üíoƒX,†L&Ã… ðÛo¿¡¶¶p÷î]¼þúëØ¼y3vîÜ §¯oKzz:^zé%S¥{Ο?Ñ£GãØ±cˆŒŒ(•JL˜0{÷îuèz‡¨Q£pìØ1ðù|—bÞ¸q#^yå³UiЯ_?Œ5 áááÐh4¸yó&víÚeº?Óh4HKKÃO?ý„;wÒçrB!mžÁ`ÀŒ3Àf³->cŽƒÊëÒ†”––¢ªªÊꨯ¯/Áb±Ìn:Äb±YI5àÞͤH$jö˜‰ç÷;wîîÞ½kj÷ññˆÈÈÈÙ€B!Äàï着*³öììlÔÔÔ4ZúÎ`0àõ×_Ç·ß~kÖžššŠÿûßV7¹nhhÀ§Ÿ~ŠeË–™J¼>}ƒÆ¡C‡józï¿ÿ>^yåÓÏ·nÝ»ï¾kqÜ¥K—ðì³ÏB£Ñ 88شߦP(D~~>.^¼ˆ?þøÃbÒØáÇñõ×_ã­·Þ²û¼¤Õj1eÊddd˜µ?ýôÓøæ›odqN}}=.\ˆ´´4³ë6 0ÛWöAÿüç?ÍV-]ºtÉj’ðäÉ“xá… ×눔”¤¤¤@,ãâÅ‹8~ü¸ÅŠ©›7oâñÇ7µ¿ð ¦„SLL  €””Èårœ?™™™¸sçŽÙgΜÁ’%KðÉ'ŸØ|¶|òÉ'X´h‘Y[·nݰqãF$''[ÿùçŸã—_~Á믿n*›^QQ‘#G"==&Lp:B!¤µØ¸q#Nž<‰Ù³g#!!ÁÓá¡•N­œ——i¿øóÏ?‘ŸŸ††³vƒ.]º %%Ål•téÒãÆÃîÝ»¡P( T*€øøxúãßŽåææš999¦öððpôìÙ½zõ Aƒ<!!„Bˆó  €ßÿݬ]«Õ"++ cÇŽµ{þgŸ}f‘pš0a6oÞl³LŸÏǧŸ~ŠÈÈH¼öÚk¦ö«W¯â…^ÀþýûmNâypߥ‹/Z$ Þ|óMh4üãÿÀêÕ«ÍÊe]»v ãÇÇ•+WÌÚ—/_Ž7ÞxéÕNï¿ÿ¾EÂiêÔ©ø¿ÿû?›ÏÅÛÛkÖ¬AHH,X`j?wî¦OŸŽ-[¶Ø¼Þ°aÃÌ~¶– Òétxíµ× ×ë1iÒ$lذ\.×ìƒÁ€E‹áÓO?5kÏÉÉÁ`0ðóÏ?ƒÉdâ‹/¾°(ÅÜ[­öì³ÏâÏ?ÿ4kÿüóÏñî»ï:51oÓ¦M §‡zÇŽ³»çÕÓO?ÄÄDôë×Ï´×TCCžþyœ8q‚J_Bi“jkkñÞ{ï!88~ø¡§Ã!äð§Rc≮?\aL:õîÝ!!!.AÚË—/›m€kÄ`0 ‘H¬Ö±ˆˆ@JJ $ |||Àf³Œ„„ôïß¿%Â&››‹‹/š%œ ,, =zôÀ AƒÀ`0h•!„BÚœ¸¸8«í®ìPvv6.\hÖŽ 68´/ÑôéÓñÌ3ϘµýùçŸøòË/=מ={ö 33¯¾ú*þýï[M8÷&“9rÄb/©Û·o7ºoÔýöíÛ‡•+WšµÅÇÇcݺu}6œ?>FeÖ¶uëV¤§§;ƒ5›6m¹sç0{öl¤§§[$œ€{÷=Ÿ|ò‰Ùê1£5kÖ`æÌ™`³Ùزe‹Õ„ˆÅbìÝ»±±±fíJ¥;vìp8Þ‚‚LŸ>ݬÍËË ;vì°›p2êܹ3~øá³¶††<óÌ3ËåÇA!„´ü1ÊÊʰlÙ2·–Þ%mó…ŸI‹b2™àp8 …àp8¹>})íy•••¸zõ*®\¹b*Áp¿¡C‡¢gÏžVK{…BcéÒ¥X·n¶nÝŠ%K–àñLJD"i‰ðI ÊÍÍŦM›žžŽ .˜ÚÃÃÑœœŒ `èС}±B!„ÒÙ*ãfmrÖýfΜi±OÐâÅ‹ZÙ²råJ‹EŸ|ò ÔjµÃc<¨²²aaaøç?ÿÙè±VWseff:t-ƒÁ€·ß~ÛbRäòåË­&ylùì³Ï,Ú>üðÃ&UH1¾Ë—/oôôþgF»wïÆåË—ñä“Oâé§Ÿ¶{>‹ÅÂ?þñ‹öÇ;ïüùóQWWgÖöÖ[o!::Úá1yäŒ9Ò¬íêÕ«f% !„¶ //iiièׯ^zé%O‡C<Œ¾u$vñx<‹rm¤e ܾ}¹¹¹}L&L&½zõ¢R+¶iÓ&›}/^têxci<[ÊÊʬŽiÜôyóæÍN¯pŠG||¼C36 !„Bš›+I§cÇŽáäÉ“ãLž<Ù©kGGGcĈf¥Ù¤R)~ùåLš4É©±î÷Ö[oÁËËË¡cŸ{î9‹9÷O6²g÷îÝÈÏÏ7k‹ŠŠÂã?îX ÿõÐC!11gÏž5µbÿþýHMMuj¬û½úê«M¶LLLDBBòòò,úÝßêïÿ»Y™@Ul)((À¶mÛ,Úg̘áÐù÷›5k8`Ö–––†Ù³g[¬j#„BZ«Y³fA«ÕbíÚµ´€8žt¢=:&.—KI'3 (--ÅéÓ§-ú˜L&X,zöìéÔ MÒ²~úé'·?yòd»I§òòr«I§ºº:ÔÕÕYÔîwÄøñãAI'B!„´ ~~~VÛ+++mžc­Þ˜1c œ¾~jjªÅ~@ëׯoRÒ©±•9÷³¶ßOqq±CçZ{}ôQ—îùÆŒc–tî½®&˜L¦E¹:{¢££-’NÝ»wÇСC:?22ÆÔvýúu‡Îýꫯ ×ëÍÚz÷‡Î¿ßÈ‘#áåå…Baj»{÷.¶lÙ‚)S¦8=!„ÒÒvî܉}ûöᥗ^B¿~ý<i-¯ÇçóÜ«-ìé=‘ÚêC«Õ¢¡¡|>ŸJZ§íܹYYY¸víšE_bb"^~ùe„††Ú¬ýN!„BH{¢R©¬¶ï]d0,V’ÀàÁƒ]º~RR’E[VVt:Kãùûû£k×®`ÑV__ßèy*• GµhwõuHNN¶h³6¾£BBBœÚÇ888Ø¢-11Ñ©k>X-âÁry¶<˜tàp²ëAÀê^»Ö®A!„´6*• ³gφ–/_îépH+ÑhÄÏÏz½•••H$¦r^Ä1Z­r¹r¹~~~6o„Z+*¯ç½^­VëÐÍŸ- P©T¸páÊÊÊ,úCBBŒ&]§¹¨Tµhh¨†BÑò{‘¹“^¯N§…ÁÐ:^cµZm÷ýnÊ~öÆT(¨¯¯›Í‡ÃAUU•Û¯S__oŠ¿9Æ'¤µ¨««ƒR©„N§ƒB¡ ßwBH»a,çû šš·þ­+--µÚîíímõ:yyyVKïuîÜÙ¥¸¬%}är9²²²Ð³gO»çZ{âããŠÃZÉšÚÚÚFÇ8~ü8,Ú;uêä¶×¡´´¹¹¹·{®µäŽD"q*___«193F@@nß¾múY£Ñ ¼¼Ün‰?™L†K—.Y´GEE¹ü{eÑvøðá6ù¡®®Î,1¬Ñh T*-Ú !„´«V­BQQ>ÿüs«BHÇÔhÒÉ×× …‹Å`³ÙT—Ñ ÆÄCee%‚‚‚Ú\Ò‰ËåÒê,'ËPº#éTSSƒêêjäääX”n`J8µæ¤“J%„RÙ¶“N:Z­z}ëx=‘tÒh4Ëå¦Õšl6›’N„4%!í•­¤“# gܽ{×j»@ °z¬¬,«Ç‹Åb—â²5)ïøñã&[¬½F¶’eöx{{›}&Ôét%Ä`0àëëëÒë`+1“••…Q£FÙ=×ZÒÉÙ„‘µÉ°~~~Na­¼bee¥Ý½”²²²¬n?ìòï¹µ^7oÞÄõë×m–“l­jkkÍ’KZ­Ö”tjŽ{B!žSRR‚eË–!!!Á¥} IûÅ`î}Y^%“BV)¼¼ÁxƒÇãA*•¢¼¼7nÜ€V«…V«õdÌm ŸÏ‡ŸŸüüüУGèt:Ó‡®»wïâÎ;žÑBBBÄb1Äb1–/_Ž8½´ÿ±ÇÃäÉ“›T×Üšõë×ã?ÿùŽ;fÖþÎ;ï`Ö¬YˆŠŠÂµkןŸÇ{ }ô>üðC·Æ`ËâÅ‹±xñbÚÿŒB!„BqŸÏÇCuuµ§C!„â„I“&!##ûöíØ1c<±A©Tš&€Ü¯\*EY¹Ô¡1zõènÑ&‰Ð ¬‡Rqo"Tñ"ß(´Wg6¾ÒI¥R! !!!HJJƒÁ •NNÐëõÐét¦ÙÌm@ pi¥“q?«Ž„Ãá@ @¡P ""áááxùå—C­VC¥RáóÏ?G]]ÅLÈàà` 4´ZN¢5 b2Èd‚y߯¼m‘ŽÍ†ŽÅÂ5𕦕Ntû؇®]»°k×.º}|BZ‹Ó§OãôéÓØµkžþy<ÿüóž‰BÜ¢  ©©©í@§NÜvÇ{ W®\±hß½{7ºw·¼!þâ‹/ðÕW_¹íú¶L›6 .´{ÌÕ«W1nÜ8³¶§žz «V­rêZ4+Á-‹qêÔ)»ç,Z´éééN]dzgÏÆ›o¾i÷˜'N`òäÉfm/½ô>øà‡¯“––†5kÖ˜µ­_¿C† qxŒÉ“'ãĉfm—/_¶»Ò)==‹-²hß¿?bcc¾öývî܉ٳg[´oÞ¼Ùêb­Ù¹sç°eËlÙ²L÷¯IIIøù矱uëVGH!ÄŽ=ŠŒŒ Œ?žNÄ‚CÙ½^F½^O ''“/ÖÊ£Ù¢V«¡V«qíÚ5Ô××›ö„Òëõ0 àr¹àóùàóùˆˆˆ€ŸŸüýý›eï%‹åÒ^:®Ã%€ÿ__Éd‚ÍfÃÛÛÛás•J%nß¾‚‚‹z×cÆŒAçÎh÷F¨51™ðe±ÀjãÉ-› › oª?¦=üýýÝ>¶··7¸\.4Ëø„´"‘, ^^^ôûNi7|||l¶»ëo\.G~~¾E{PPhõ~ÕÖ½XPP[b2b±X>Ok¯—Ëuúõyðy2™ÌFÇÐétVÇ têÚqäu‰Dm|>ß©×ÁZézooo§Æ°V"Ðßßߥ{­   —ÏÅb±ÕvƒÑæ>'øøø˜½~l6"‘ÈôYŸBHÛ¦Óé0cÆ ðx<|ñÅž‡´B%Œ+u4m|ÅB[aܳåìÙ³(//GYYÊËËM¥ù¼½½M%ûRRRŸfK:¹’hÔétN%ÚÚW’Njµ·o߯ñãÇ-V8 ˆÅbŒ3Æ”plí|X,ø2™m>é¤c³¡e³ámg3ᎄÃá€ÍfSÒ‰& ¤!¤½²•tòõõuÛߺ³gÏZMž¤¦¦Úüâ^"‘Xm¿yóf‹®vWÒéÁ‰Ž$'¬%Ùø|>ÊË˺¶;XK:ñx<§^kû19›t²VÕÃÏÏÏîï…µý—4ib–­‰ž‘‘‘mîs‚H$2K:+‚<ØN!¤íúî»ï““ƒ… "&&ÆÓáVÈùºi¤YíÝ»gΜÁéÓ§mî%“É “ÉÜ»é‰D‰DX¸p!|}}ÝZvÃḔÌR*•´÷—ƒär9êëëñÁ ¾¾Þ¢¾æ Aƒ0`À¤¤¤Ð‡ô6̸ê1++ ÅÅÅ(..FAAT*üÿZæqqqˆŽŽFtt´iÆ.­2%„BÍòpÖÊúÙJFÕ××·‰É\îbíuP*•Ðëõ.U·è¨lý>Éår—Ǭ¯¯·ÚîîÕx„BHSÉd2|ðÁˆˆˆÀüùó=i¥(éÔJÔÕÕ¡¾¾§NBii©i•1¡&“ &“ …BêêjTWWC©TB­V£®®‡BÏž=ѳgO·%'¸\.Ý€4#©TŠ‚‚S)EcI=‹…„„ü?öî;®©sÿø'‹@HÂÞZDAõŠŠRµŠ]V­ÝZµ÷ª×Öª­£jµC­í¯Újµµ»ŽÛjmÕÚ«jl«8PP†ìFØ„ìßÞœk #@ Œïûõò%çÉ9Ïùž 9ßçù>žˆŠŠ‚¯¯o›ÖÖ"]ƒ\.gM7nÜ@uu5jjj —Ë¡Ñh˜ÑºJ¥Z­………Éd(,,D}}=üýýáçç@`å+!„B±žÒÒRì߿ߤÝÓÓ3fÌhò8FÛkkk-^Z®+kjÆ—L&ëòëÅv%M½ž¤RóânLyy¹I‹Åjò\„Bˆµ¬_¿8pàìíí­é¢è.vQWW‰DÂ,þjXI$ÁËË dÊZI¥RäååA©TB¡P@©TB©TâìÙ³°µµEÿþý-–tjëL'b©TФ¤$ÄÅÅÍpb³ÙðññÁСCeʼn%Èår¤¥¥!>>Mî§Õj¡T*Q__‚‚w^#QQQpuu¥¤!„Bzµ;w­{j°~ýúfß'EFF6Úž™™Ù«JÂŒ5ªÑöÌÌL 6¬“£é¾"""ÀãñL–HKKÃÃ?ܦ>333MÚBCC[U®BéhIIIøüóÏ1nÜ8<ýôÓÖ‡ta”tê"Ë$›`õêÕðóóCŸ>}Lö×h4Ðh4ظq#JKKQZZŠÊÊJ\½zr¹óæÍ³H\nnnmÊZWVVB¡PX$†ž(;;ÙÙÙøä“O Ó阙m...pqqÁ²eËàààÐd]|Ò=~N×­[™Lf²V—9ÒÓÓQRR‚S§NaÛ¶màr¹”&„BH¯sõêUlٲŤ=00óçÏoöXCÙâ¼¼<£öäädLž<¹Í1I¥R£’j>>>àuáu@‡ ÔÔÔµ'%%µ+éTZZjôÙ¯OŸ>=úýª@ ÀðáÃñ÷ßµ§¤¤´¹Ï´´4“¶èèè6÷G!„t„—_~°cÇ+GBº:J:u†Ry†7ÿööö …ðóók2éÀf³Áår1jÔ(\½zeeeÐëõ¨­­Eaa¡Åb …°±±iõqr¹ÜdäWog(¡våÊ&édH6q8„††ÂÏÏþþþppp õ›z€ŠŠ ”––B&“Ê5$CBBÀçóÁçó¡×ë™Y‹©©©¨­­e’T†5Ÿnß¾ www*³A!„^¥¦¦O>ù$T*•Q;‡ÃÁ®]»ÌJô<ôÐCøôÓOÚþøã,_¾¼M1ét:Œ1‚Id H¥Ò.tb³Ù˜2e  0!!!0`“t`”tJMMEZZ222˜ößÿ£F¢¤!„Bzªª*LŸ>ÙÙÙ&}òÉ'ˆ‰‰1«ŸW^yŸþ93è ¸“$¨ªª‚““S«ã:uê”ÑÌ©)S¦t‹RÈË—/7I:ýüóÏP*•môväÈ&á=öXžådðïÿ›7o†\.gÚ qíÚ5DDD´ª¯ØØXf€¢Á AƒÌ~mB!M.—cÅŠpvvƦM›¬éØÖ€ÜIÐÜýfÕÑÑþþþf+kŽ#5 IDAT  ™Q*• uuuFeúÚÃÞÞ¾]3,Gw¦P(PUU…'NàĉÈÊÊBUUÀ××ÇÇÃ?ŒÂÝÝN=HMM òóóÚú÷ïððpf&‘HØØØ@$ÁÕÕcÇŽExx8úõëgtl~~¾I9B!„ž*;;£FÂùóçM[µj.\hv_ýû÷ÇŒ3ŒÚÔj5¶mÛÖ¦ØvíÚe´ýÒK/µ©ŸÎ6bÄŒ?Þ¨­¶¶Öd˜¹î>ŽÅbáÅ_lW|Ý…‹‹ þõ¯™´oݺµUýèt:¼ÿþû&í«V­¢Ï…„BºŒwß}………ظq#œ­é(éÔÜ»þ‘H$‚···ÙÇs¹\fT‹Å‹Å‚^¯·HÂÇpS¼µe"t:êëëQQQÑîº#Ãóÿí·ßbË–-xõÕWQPP€‚‚aæÌ™xçw°víZL™2…f®ôP2™ ‰Ä¨mÚ´i0`@‹Ç†„„`úôéFm‰Ä¢3 !„Bº¢êêj¼ùæ›GzzºÑc\.›7oÆ{ï½×ê~·mÛfr£dëÖ­¸}ûv«úÙµk~ýõWf;::&Lhu<Öòé§ŸšT³xûí·QTTÔª~6n܈ .0ÛÓ§OGxx¸Ebì6lØ€¾}ûµ8€7ß|“ÙvssÃÎ;;$Þ®ÊÁÁÀرc¡ÑhÜù|>cÆ \¸pÁ¤jÁ½Î;gôZwwwìÛ·f9Bé2^}õU444`çν¢„.± J:uÁÁÁ ‚Z­ØÙÙÁÖÖÖ¬cµZ-˜5clll  -ú&ÕÆÆ MI§úúz‹ÅÑÈd2444@.—ÃÙÙNNN7n`äÈ‘VŽŽt½^o´np'éÄf·<É”Çã™ü1¿·/B!ÄšÊËËQUU…þýû[;b2™ |ðQ›T*mtß;wšÌ0’Ëå(//Gyy9Š‹‹qãÆ æóн±páB¬]»–)+ÞV=ö¾üòK,Z´ˆIäææ",, o¿ý6æÎ “ã222°víZ:tˆi³±±ÁþóŸf“ qqq8{ö,³]VVf²Ï7ðÖ[o1Û>>>˜?>³­R©°yóf£cîý^__oÔ,\¸^^^Æ5oÞ0zîrssMúØ´i¸ÜÿÝ*™9s&BCC½®ÈÈHüøãxî¹ç˜—¥¥¥ˆˆˆÀ{g¹s皬õUQQíÛ·ã½÷Þc^ƒàíícÇŽÁÓÓ³ÑsB!íÔ©S8zô(žzê)æ¾&!æ ¤Spïlsèt:èt:|ùå—ÈÌÌdÊóõë×Ïâ% „B!¼¼¼LÊ„µ¤ªª 9998p Eã銪ªªPWW¥R àp8àñxxã7àããÓªr‰¤ç‰Dðòò2Zש¼¼B¡°Ññw“Ëå&7¼¼¼Z<ŽBéh»víÂ[o½…Í›7SÒ©—’Édxûí·ÍÚ·­3`°lÙ2¼ð }ô¯ý þþþxöÙgQ^^àÎZœË–-ÃÊ•+1räHøùùA("77ÈËË3äêêŠ~øÁd}¤{?¾Åç))) IIIÌöˆ#Œ’NJ¥²Å>är¹É>S§Nm2é+V¬@`` ^xáffYyy9,X€—_~£F‚¯¯/ìììÌÌLäççͼ÷ööÆÑ£G1bĈfã;qâ¶oßÞì>—.]Â¥K—˜í˜˜£¤Ó¡C‡ðý÷ß7ÛÇwß}g´mkkk”tÚºu+JJJšíãwÞ1Ú0`@“I'àNùìóçÏcÆŒ(((pçç㥗^š5k0fÌøøø@£Ñ ??.\€J¥2ê#""G5k¶!„ÒÔj5–-[@Ðê5 ¡¤S§Õj¡Óé ­V F™L™L†ºº:dff2ë&ùùù!00ÁÁÁÏç·iD¡\.or´cOó믿Õ› …pqqD"‘##ÖäàࣤSZZúöíÛâ©Tj2òÒß߿ё·„B:Ï…  ÑhŒF§w5‘‘‘°±±Åû>uê^y夤¤@«gÂÒ‡ÀÀ@Œ=QQQ3fŒÅ?×ÜmÒ¤IÈÊÊÂûï¿mÛ¶1³TÔjµÑ:E÷²³³Ãܹs±iÓ¦±öŒ3wÞy»víbÑ)•Jœ;w®ÉãD",X€7ß|“>ï>|8ÒÓÓñÑGá½÷Þc’xµµµ8~üx“Çùøø`ãÆ˜3gŽYÕ!„βsçN¤¦¦bãÆðõõµv8¤›¡¤S§Óé R©žž¥R ¥R‰¢¢"”••¡´´Ô¨Ö¹ŸŸ‚‚‚:$éÔ–õõõ½&éôË/¿-@, áééI3œz9øùùµ¥¥¥A(š,:|¯òòr¤¦¦µùùùÁÑÑÑÒaBi… . ¡¡ Ö¥I¡¡¡ …M:effbùòåøå—_ŒÚ«ªª,vÒ½¸ººâ?þhóñ\.ŽŽŽptt„““S›ª?´—X,ƦM›ðÚk¯á÷ßDZcÇpãÆ ”••1eðÄb1<==1lØ0DEEaæÌ™­÷üóÏcìØ±­Žën MÏõ}÷ÝgÖ~...øðñ~ýzœ:u ÇŽÃÍ›7QVV©T 6› ±X  6 ãÆÃôéÓ[õ=[¼x1{ì±VÅoRï7ÞhõæFÛGŽakæ2·r‡V¯^%K–àÌ™3ˆÅµkט×—Ë…»»;<==1zôh<ôÐC3fŒYë½B!©´´o¿ý6°bÅ k‡Cº!J:uq …µµµøòË/›ÜgÈ!¦Ñu©º»ÔÔT1Û•••ÈÌÌ„­­m«KöB±Ž5kÖ ¶¶{÷î…múÌCºJ:uql6`±XîÌ ÒétÐjµþW¼°°#FŒÀˆ#,ú ÁÍÍ !!!­>N*•öš¤pçCƒaÔ\ii)JKKÛô…ô|†ÑŽ·nÝ2kCIÍ 6tpd]ǤI“¬!bÇŽرc‡µÃ m”[Wgíµ`Á‚N;Wll,bcc;í|„Bº—k×®áÚµkÖƒBˆ™._¾Œ={ö`òäɘ6mšµÃ!Ý%º8ˆD"̘1Àb± T*Q__¹\ŽäädÔÕÕ¡®®¹¹¹°±±ACCƒEoØÚÛÛÃÃãÕÇÕÕÕ¡´´l6»Çרf³ÙàñxP©Tppp€ƒƒþñX;,«±g±`Ïbõßähw¥c³¡g³QÞÎëP©TL©Ìªªª×À0”š î°u9ÚÂð³ìïïoñ¾³²²’’‚””¼öÚk¢°°………HIIAxx8ÂÃíi…O?þ}mlàocƒ]h“ZWª«q¹º/¼ðìíí!ÚÔWQQΜ9ƒâââ÷íÛ·/žzê©6‡BHÏ#‘H””„7n¸ówÂßß¾¾¾HNN¦™„Ò…éõz¼üòËàr¹Ø¾}»µÃ!Ý%º8ÃÍfCÒ ¸S²«¢¢J¥())L&CNN JKK-žtrwwoõqõõõP*•P«Õàñx=>éÄápÀår™¤SŸ>}ðøã[;,«qçpàÎfƒ£RY;”vÑr¹Ðp¹Hkeí÷{’ÆÙp-%œœœÐ·o_ÄÄÄ@(B(¶ëü–ÂårÁårmñ¾O:…C‡QÒ‰ôx/^ÄÅ‹!•J1yòd¼ð Ö‰´Âw»w#L(D´Pˆ™^^Ö‡QØÐ€O&éäææ77·VõQ\\Œ·ß~?þø£ÙeTœœèw6!„Æ•+WðŸÿü‡I:ùûû#::‘‘‘øî»ï(éD!]ØÞ½{qéÒ%¼úê«mªzEˆ%º!6›ÍÜHxë­·pöìYœ9s7oÞdê¢ß¼yîîîmJÝËÓÓîîî …Ìl s¨Õj¨ÕjÄÅÅ¡_¿~ jw,]¡"›Í—Ëí2‰ks8pèAI'aøU«ÕP©Tøì³Ï——‡ÜÜ\³oâåää ''çÎcF.Z´<Ϫ‹ óx>>P©T­N:effR‰ô:YYY8sæ rss™v¡Pˆ€€#,, < …r¹7oÞDjj*T*jjjP]]êêjœ9sl6àré×7!„¶“H$X¾|9¾ÿþûvõ£P(,!„B!ÄÒÓÓ±cÇŒ1sçεv8¤ »–]ÀéÓ§¡×ë¡×ëáìì ooox{{›}¼ƒƒƒÉŒ‡òòr‹<4iΜ9ƒœœœV÷Ûo¿! “'OfX„ôt‡ÂÍ›7‘••ðòò‚——Ö­[‡Óè,%±X OOOŒ?Z­7ndÊffeeA  ¦¦aaa ëìË"„ÒÍi4ìØ±o½õd2Y»û£™N„B!„toK—.…F£ÁÎ;éÞ-±J:uÉÉÉP©TP«Õððð›ÍnUÒI¯×C§ÓµuÄ/ˆàà`\¿~½ÕÇUVV¢¨¨ÙÙÙ4ã‰ôyyy¨©©a¶½¼¼‡cÖϧ!)ÄÄD”””ª««‘——??¿Ž œBH‡—^zɨ$s{544X¬/B!„BHçúå—_pòäIÌ;#GŽ´v8¤‡ ¤SŸŸÊÊJTVVÂÁÁŽŽŽ4hÙ‹lÊår“’w"‘6663** ÉÉÉððð@ii©ÙÇUTTàòåË‹ÅX»v­Ec"¤«JIIR©d¶ýýýmö:L, ÑÑѨ¬¬Dbb"@*•B&“!88¸Câ&„Òó”––båÊ•øÏþcñ¾õz= ììì,Þ7i;½^µZ µZ •JÅ p»ûÿ–ÚÚ{̆ aí§‚B!„4A©Tâ•W^X,Æ{ï½gípHBI§.ÀÁÁ)MR[[‹úúz(•J³“N …•••FmöööO:¹¹¹ÁÝݽÕI'àκ ‡®¬¾¾Þh"ŸÏ‡H$ju?"‘ÈèwJ¥‚F£Z­¶Hœ„Bz.­V‹]»vaýúõF³o-­§'´Z­Õ7w·i4“Øt:SõÀP®ÛðþƒÍfƒËå‚Íf3¥}ïþgØÇÀ0[¯×ý¯ÓéŒÎ£Óé Õj¡Õj™¯ }±X,æ|÷M!„B!íöÁ ;;[·n…‡‡‡µÃ!=%º€áÇãêÕ«H$ÐëõHKKÃÏ?ÿŒÙ³g·x¬F£AJJ Nž>˜DÍ݉ÃÿŒ7%p IÀtÒ»gÞÎaHܾ¾û_c‰Ãÿwc±XíN¼X*™cn^B!„BÚcÕªU¨¯¯ÇG}DƒˆˆÅQÒ© @rr2lll˜¤Syy9RSS '''“ jµuuu8þÛ¶m³v8¤‡¢¤Sáàà7n QTT„††fa^©TÊ”Q(Ì #‹±X ±XŒñãÇ#88¸Sf@ 0H$8þ|«ŽÍÈÈÀ‰'ðÈ#@$A$™}¬H$‚···ÉÂÄ...4¢•t)AAAH$ÈÉÉaO “É““™L†üü|&‘ Ü™Á¨V«QZZŠòòrÔÕÕõéáá>}ú 00NNNz=„Bº &àìÙ³v>¹\Þiç"„B!„´Ý_|ëׯcíÚµ&÷W ±ºKßEGcÇŽEBB***ÐÐÐÀ,.,•J=ŽÅbÁÁÁ¾¾¾ˆ‰‰ŸÏŸÏïðxƒƒƒ!‘HPSSÓê¤Sff&rss!‘HàííMI'Ò#"''îîîFI§ÚÚZÔÖÖ"''§Õ}zxxÀ××Tž’BH“¶nÝŠO>ù{öìa0u$…BÑáç „B!„´Oee%Ö­[___¬]»ÖÚáŒîÒw1#GŽÄðáñpáB\¼xR©R©Ì/"‘NNNpttĈ#ààà±XÜ鱎?÷ß?“äzã7 År{111xì±Ç0uêTL:•Yè¹9/^ÄöíÛÚ„B!RRR°}ûvDEEÁÑÑ‘™9Fˆµ°X,ÜÿýˆŠŠÂÇŒ¼¼<äææ¶©¯€€ôíÛ/¾ø"¸\.%œ!„4‹ËåbóæÍx饗°xñbüõ×_z>šéD!„BH×·~ýzTTT`ÿþý°···v8¤£¤SÄápÀáp0nÜ8k‡Ò"‹…uëÖ¸“0‹Ell,233[<¶²²»wïÆîÝ»1iÒ$Ìž=³gÏnu uuuL²ôôt¦}ðàÁP«Õ¸téR§¬3 ×ë™ÑÄõõõJ¥¸páB‡Ÿ·«rd³áÈfƒ­Ñ4úø·'NÀY,†³XŒÈÐP¦½A©„B©›Í†­ ø66ÍžG¯×C¯×㋟†Ÿ§'ü<<jÁéÁ:Z6ju›ûˆŒŒDXXêëëqëÖ-Èd2ÔÖÖ¢ªª Z­šÿ>G\.NNN‹Å‰D4hìííaoo+W®Xê²ÚÌðû©²²Òâ}_»v ùùù€üÑâýÒU¤¥¥!-- 555¸ví½Þ»yCrX,\ÒhÀc³­£\¥ÂíúzÀ©S§ààà,]ºC‡Åwß}‡ššš9÷ùóç[µÆ'!„ž+##èªCii)’““¡V«ÛTíBˆe$%%áóÏ?ÇØ±cñÌ3ÏX;ÒÃQÒÉJ\\\Àáp¬Š ‘HÔ¦}AAAˆ‰‰Aß¾}qîÜ9A"‘@"‘´xl]]T*U[ÂmRii)âãã!•J¡R©àïï???‹žãn|>:µµµ¸zõj‡¯«³e±`Ëb¥Óµët:èõzä—–¢J&Ciu5ê”Jæq¥J¥J.‡—ˬwÔ$½zå55PªÕ(­¬D‰!!bAz : µ÷\Gk©T*¨ÕjTTT@©TB­VƒÃá€Åb1¿X,Øl6Ôj5d2T*ÒÒÒÀãñ`ÓBò­³bÌËËkq_Ã÷Z¯×3_¦³!Ùl6X,JKKQTTøí·ß,ˆ)S¦tÄef=zqqq8þ<®]»fô˜áèÓO?ððp :2™ ÇDZcÇ0jÔ(¤¦¦"%%¥CÊ÷bI†y7nDqq1Š‹‹çp8 Å Aƒ0oÞ<¨T*(•J¼üòËpvv†³³3ªªª°hÑ",Z´ÈJWAÚÂßÇ52jd2È->>L ®Ö(++Crr28€°°0 <¸K–7ìÉ®\¹‚‚‚¨T* >ÞÞÞë›ÇãÁÇǸzõ*…BaTZˆt …BÔÔT¤¥¥á×_Enn®É x___Üwß}ÆÄ‰áéé ///(•Jfm«[·nuØz#„X‚Z­†F£ÁO?ý„ôôtܾ}ÅÅÅ̺‚ ‹!‹ñè£"  ‚F£V«ELL QPPЦYÅÄúž5 І(¬J“œ[üûçëë‹O?ý¯½ö6n܈}ûö1k ¶–¥ËõB!„B,ãÝwßEAA>ù丸¸X;ÒKPÒ‰t8GGG&ñ4|øp£ÇÔj5SŠÎœY_"‘ÞÞÞmJ:•––¢´´€^¯ÇÀ)éÔÉ._¾Œüü|(•J >Àb}s¹\øøø <<[·nEtt4är9%:\.Gbb"~úé'ÄÆÆ6ºÆ‡~áááFét:…B?~Üèæ=!]F£\.Çþýû‘‘‘ÑhY<±X ÌŸ?^^^ðôô4z<&&±±±¸zõ*|||:+tbAÏΚ­VÛ¥-ÎÎÎf'5ûö틯¿þkÖ¬Á† °ÿþV_›®ëB!„B,/''[·nÅàÁƒ±páBk‡CzJ:«âñxàñxf'æÏŸùóçµÕÔÔ ®®2™ YYYÌÀ_ýµµµ& [Ÿ8q¹¹¹8zô(:ÔäšÄr ëú|úé§ðööƃ>WWW‹ŸgÈ!ðõõŦM›péÒ%|ñÅX³fÅÏCîP*•P*•ˆŽŽfÊfÞÍÆÆãÇÇøñã±råJf1á{‰ÅbôéÓµµµ-–xº~ý:òóó‘ŸŸã¾û££E¯{ÕÖÖâ믿Æ×_[·n=f(-»aÃŒ3£Gn²„kŸ>}`gg‡úúúfÏWPP€üü|\¾|b±"‘=öX“kÁ‘Îfí:D¿~ý°oß>¬_¿ï¼ó¾ûî;³g>uå!„B!½Õ«¯¾Š††ìرƒ>G’NEI'ÒíÙÚÚ‚ÅbÏçƒÃáÀÅÅýû÷G¿~ýPXXˆ¢¢"ÄÅÅ¡®®Ž™EQ^^Ž´´4üþûïèׯúõëgå«èÙÊËË!•J!“ÉàèèØ¦vz½‘‘Á”©º·;;;¸¸¸ÀÛÛ2™ W®\±Hü¤qYYYHIIT*5º. ðÔSO!44aaaM&œ ¸¸‰‰‰prrÂÀ1pà@“}òòòŸŸýû÷£¦¦555àóùL™¾ùóçC(B(vØõ’ÞíÔ©SHJJ‚T*5jwuuÅ AƒЍ¨(ôéÓ§Ù ‰‰‰¨®®†³³3ž{î¹FKËþôÓO¸}û6nß¾ ‰DÂ,°-‘HˆˆØÛÛ[ü €þýûcÏž=xã7°yófìÛ·¯Å4Ó‰B!„®å÷ßÇÑ£GñÔSO!::ÚÚá^†’N¤ÛãóùàóùîÜüëß¿?àᇆT*…T*E\\³þÆï¿ÿŽÊÊJ”——cÆ ˜:u*}ôQ 4Èš—Ñ£edd௿þ‚L&ƒ¿¿?zè!³ŽS(¨¨¨@bb"JJJPRR‚ÄÄD¸»»ÃÝݽѤ“"##‘““ƒ3gΠ¸¸B¡Ð¬òÄ|ÕÕÕ8sæ öíÛg4ÃiðàÁ:t(†ŠgŸ}öööÍ&‚âããqâÄ ?~ƒÆŒ3ðøãíSVV†cÇŽáðáÃ8{ö,“€þ7[¢££1nÜ8 _)éíÐÐЀÿû¿ÿƒD"a^ïðððÀܹs†°°0xxx4ÙO~~>òòòðõ×_C(bÈ!X´hó÷ ó7ë­·ÞbJÂÞíìÙ³˜2e ¦L™‚Y³fuÌò_øê«¯°~ýz¼ûî»Ø½{7T*U£ûÒL'ÒZ¹¹¹¸yó&ÊÊʘÙÒ:NNNprr‚——ÂÂÂЯ_?•K!„ÒJK—.…@ À–-[¬é…(éDz4777¸¹¹!$$—/_FBBþøãwFåþý÷ßðõõE`` %:PUU233ðóó3ë8¹\ŽŠŠ œ>}7nÜÀ7P\\ŒáÇcذaMççç‰D‚ššH$x{{SÒɪ««‘““ƒÄÄD£ö°°0<ôÐCxä‘GÌš‰K—.!11 ,€§§'œœœŒö)--ÅÍ›7MNÀÿÖ…ûõ×_áééII'bq ¨®®Fbb¢ÑëÏÃÃaaaX°`lllZ\?'//ñññHLLİañXl´Oyy9RSS‘””Ôh¸yó&8%H§ñ÷÷ÇgŸ}†uëÖá½÷ÞÃW_}¥Ri´%ˆ9þøãÄÆÆâرcHMM5ë;;; 4ÑÑш‰‰ÁرcakkÛÁ‘B!„to;wîDjj*6n܈>}úX;Ò QÒ‰ô , ÿøÇ?ðü'Nİÿ~deeá—_~ÁÉ“'1|øpft%±¬ììlœ9sÞÞÞðññ¯¯o‹Ç,^¼555¨®®¦\U@@@‹ë÷Œ9………îÜà=z4¼¼¼Úyänß~û-nܸ­V ‡ƒ˜˜Lž<K—.mñXµZ'NàĉصkÓþøã#((Èdÿ„„š$œîvåÊ<ôÐCL<„XJRRâââ ÕjÁf³ÁápðÁ 22#GŽlöXÃzvË–-ÃåË—qùòeÀÀMfô@aa!.^¼ØlŸ………Ëåm¿ BÚÈ××ü1Ö®]‹÷ß_|ñ *¯GšwöìY¬Y³ ­>V¡PàÊ•+¸rå >øàØÙÙa„ ˜={6¦M›f4[”B!„Ü©óöÛo# +V¬°v8¤—¢¤éuÜÜÜ0fÌØÙÙáã?†B¡€\.ÇáÇ1zôhŒ5ªÉàIë) Èd2TUUÁÏÏÏìuHjjj Óé ‰0dÈxyyÁÛÛ …¢ÙõR€;3 ç‘H$Édí¾b,-- àp8xòÉ'1räHDFF6{ŒJ¥‚R©Ä?ü€+W®àêÕ«î¬ËÆçóÐhÒW ´8‹„ÏçƒËåÒÏ.±8Àƒ  Aƒ Ÿf“Éd¸uënݺ…Ë—/C"‘¸3ÛÓÓÓ&Çp¹\ØÙÙ5Û/ǃ@ hûÒNÞÞÞØ¾};Ö¬Yƒ-[¶à³Ï>£™N¤Qùùù˜?>N:eòØ€0}útôë×^^^puu…\.gfR_¹rçÎCQQ‘Ñq …±±±ˆ…££#ž~úi,[¶ ÁÁÁuY„B!]Úš5kPSSƒ={öÐ qb5”t"½Ž««+¢¢¢Ž#GŽ@"‘ ªª ‡†ƒƒFŽI7®-H.—£¶¶•••>|¸ÙI§êêjˆD"…BDEE!""HLLDvv6²³³›<ÖÝÝ’NÌtb³Ùxâ‰'‚4{ŒR©„L&ÃÞ½{™õm€; #4ú³×š¤SK IBZËtb³Ù ÅÌ™3[œáÜI:%$$àСCÌ ' ù¤Ç£¤é6<<<°uëV¼öÚkHOO·v8¤‹¹rå }ôQ”””µOŸ>6l@hhh‹}èt:üþûïØ¼y3âââL¯®®ÆgŸ}ooo¬_¿Þb±B!„tW—/_ÆîÝ»1iÒ$L›6ÍÚá^Œ’N¤W²··‡½½=Μ9ƒ}ûöaß¾}¸téìììP\\Œ7ß|ÓÚ!öÅÅŨ««8;;·xCÕ`óæÍ3f F .÷¿ªî]C¨1wŸ';;UUUmˆœ4F«ÕB«Õ"11>ø ¦L™‚éÓ§·xܱcÇpôèQüôÓO(//7zìþûïÇÔ©S¾Ïw›4irrrpýúu¤¥¥5ºÏ²eËZœiEHk^ëEEEHLLÄG}Ä”imNFF2220gÎÈår“Rxo¾ù&ÂÃÃ}½<}ûöÅÖ­[¡P(˜Òew9r$fΜپ‹#Ä‚ ëgbpôèQ<÷ÜsF¿ÿ\]]ñõ×_cêÔ©f÷Ãf³™ò½Ÿþ9/^L³ê!„Bš ×ëñòË/ƒÃáà£>²v8¤—£¤éÕø|>""" ×둟ŸòòrÄÅÅ¡¸¸B¡"‘ÈÚ!v{õõõP©Tî,ÝTbá^ …mšufggÇÌŒQ(Ðh4­îƒ4N©TB¡P@¯×ÃÓÓáááMî«V«‘••…¬¬,8p©©©&7àˆ°°°fûáñx:t(fÍš…ï¿ÿÕÕÕ¨©©ŸÏ‡§§'<== ‹]'!†×zCCôz=ÂÃÛ\N«ÕB§ÓáÔ©SHNNÆÍ›7!—Ë¡V«™} 7æÃÃÃáééÙh?|>b±Ï?ÿ<ÒÓÓqûöm”””ÀÆÆ|>‘‘‘7nœY3!ÄâããñÄO½÷‰D8q↠֦>Y,þýïC$aöìÙÍ®ñH!„Ò[Ô¿òÊ+ ±v8¤—£¤éÕ I§|ùå—L%‰DoooJ:Y@]]QÒ©¥2iîîîíJ:’[ …ÂèÆ/i•J…ÚÚZ³’N*• ©©©8uê¾ûî»F÷1$†Úd?†¤Sß¾}‘œœŒ¼¼Ÿ>ŸçŸ§OŸ†F£Amm-D"D"¦M›†¡C‡bРA½VB±„²²2<ýôÓF '6›Ÿ~ú©Í §»=÷ÜsHHHÀŽ;ÚÝ!„BHOR[[‹Õ«WÃÝݪ7‘.’N¤×³µµ…­­-bccñÕW_áË/¿Äœ9s°páB,X°|>ßÚ!vk:Ž‘Êf³;e͇Ã$ î>?i?;;;æ{(“É ‘HЯ_?£} åÅ^~ùeTUU™”7d³Ù1bFŒ?ü§Å×…££#ñý÷ß[ö‚i‚áµn(Õ)‘Hàìì ggg£ýŽ;†ãÇãØ±c&kͱX,°X,¼øâ‹ˆ‰‰ALLŒY¿ÃÃÃŽ•+WZî‚!¤ét:<ûì³H$FísæÌÁĉ-vžwß}GŽAaa¡Åú$„Béî6n܈’’|ýõ×ppp°v8„PÒ‰ƒ>}ú`Á‚x衇0vìX>|‰ï¾û®µCëÖÜÝÝaoo¨¬¬ltK»û<ŽŽŽ°µµíðsö†™&L@bb"fÍš…-[¶0ëÏ|üñÇÈÎÎnôæ{@@ðî»ïÂÇÇÞÞÞVº BZfx­‡„„`„ ˜5k&OžŒI“&¡²² HHHÀéÓ§Ž3$•&L˜€x'NĈ#¬q „Òi¾ÿþ{œ9sƨM(bóæÍ=@ À’%K°jÕ*‹öK!„Ò]¥§§ã£>ˆ#0oÞóæÍ3Yãò^Ï?ÿèÓ§O“Ç¡¶¶зo_8::Zôz!„BÈÙåñññ&í&LèÐÙ"ÿüç?ñÏþ³Ù}âââð÷ß7»ÏSO=ÕìãEEEøù矛ÝǜźOœ8’’’f÷‰ŒŒp§\áêÕ«ñþûï·Øo}}=rss}ìüùóøç?ÿ‰¬¬¬ûîÌþ9räŽ9.—‹‡~ .ă>hÖñgÏžÅòåËqýúõ÷U«Õøã?ðÇ`Ë–-Ø´iæÌ™cÖyŽ?Þâ`6CâS¯×cåÊ•øàƒZì·®®®Éç”BéJ>øàdeeaË–-4Øšt9”t"¤ !!!ðööÆÛo¿ŒŒ J:µƒ““‡ÚÚZÔÕÕ™tÊËËÃ7ß|ƒüü|äççø|~³I§ÂÂBJ:B!„t°?ÿü*•ʤ}РAVˆ¦ûÓétxî¹çðý÷ß·«Ÿ_~ùO<ñ„Ñ÷ÆËË óçÏÇ!Càããäåå!++‹)Íc ÑhðóÏ?#33³UI§?ü+V¬€^¯gÚ„B!žzê)<öØcðóóÇCQQNŸ>½{÷¢´´À÷ïsçÎE\\>ÿüsp¹–¹U¡ÕjñÌ3ÏàÇ´H„BHWPTT„Í›7#88K—.µv8„˜ ¤!M0¬ïôÃ?àäÉ“øå—_°iÓ&k‡Õ-aÒ¤IØ»w/ ð矕iÌ3Ï<½^Ï|h‰DðòòÂàÁƒ[L"ýý÷ߨ¬¬„››F6›m±k!„B!wœ={¶ÑöÐÐÐNŽÄÔo¿ýf”tùä“OZý^~êÔ©(..f¶SRR0qâÄVÇ’žžnTÚîÈ‘#ÎÔúä“O˜„ÓàÁƒ1wî\Œ3îî¬ÄåË—ñÖ[o5;k*//Ï>û¬Ñµ/]º[¶lÇ3ÚwÀ€€_|'OžÄüùóQPPÐêë€U«V™”";v,¾ýö[“õ¢ˆI“&aݺuX¼x1öíÛÇ<öÍ7ß@"‘à×_m6ñ”™™iôœþøãX°`É~;wîdNC‡Åœ9s0zôh¸»»£¢¢‚yN É/B!¤;X¹r%êëë±}ûv“¿ï„t”t"¤˜4i¬J·åêêŠØÙÙ¡²²·nÝj1é...prr°aÃàåå///TUUA¡P@¡P˜ì¯R© T*‘ŸŸDDDP‰B!¤ƒ$$$4ÚnHfX“³³³Ñ¶H$ju¶¶¶FåjÊÊÊÚ‹X,6ÚnlÆaa!öíÛ6›í۷㥗^2zÛ·o_DDDà±ÇCHHª««=×úõëQ__ÏlOœ8Û¶mk±ÜaLL Ž9‚¨¨((•ÊÖ\~øá“„Sxx8Nž<Ùì:M"‘{÷î…F£Áþýû™ö'N`ݺuÍ®OaÎsšŸŸ={ö€ÍfcÇŽX´h‘És:lØ0æ9mi(B!¤+ˆÇðè£bÊ”)Ö‡FQÒ‰ €J뵃‡‡\]]…úúz>|«V­‡Ã1Áèáá!C†ÀÅÅ^^^ðööFDD\\\àââ‚#GŽ ;;ÙÙÙ&çÉÏÏGff& ‰'žx¢C× „BéÍšZSÇÉÉ©“#éþ¾øâ ¨Õjlß¾/¿ür“ûyzzbÅŠX·nÉc 8zô¨QÛÔ©SÍ~?<|øp¼þúëxã7ÌŽ;??óçÏ7jãr¹8xð`³ §»}õÕW8þ<ŠŠŠ˜¶÷ß“&MjÓÌ2ƒÏ?ÿjµü1^zé¥&÷óòòÂ+¯¼‚·Þz«Íç"„B:ƒN§Ã’%KÀçó±mÛ6k‡CH“h !¤Ã±Ùlðx†™e­¥ÕjqõêU|õÕWxæ™g0zôhøúúZ$nB!„bª¢¢Â¤ÇãÁÆÆÆ Ñt+W®4k¿1cÆ 11€ñ¬²ÆÖzJIIÁC=dv ááá N§kñ=yYYöìÙcÒ>oÞ<³Ïg0kÖ,,[¶Ìh-ª„„œ?ÑÑÑ­îÏ`ÕªUfí7vìXæ9½·4#!„ÒTVVbݺuðññi÷À B:%!F,#88ãÇG||<ÜÝÝa‘E‘ŸŸ…BÉ“'ÓˆB!„¤V«]cS X!šîO,còäÉfíkccƒ¡C‡š´ûøø˜´íÚµ .4{M+;;;¤¤¤˜µïwß}‡††£6ggg“Aeæ‰D¸ÿþûqêÔ)£ö¯¾úªÍI'GGG<ðÀfíËçó}N !„®â7Þ@EEöïßßèZ†„t%T^ÒiÄb1 À$rrrŒF3¶Gbb" —Ë)éD!„ÒÁx<ø|¾Iû½IbK ÄêׯŸÉ,³œœ<òÈ#HOOoWß9wîœIÛ°aÃÀápÚÔ_cɪÆÎa®aÆ™¬K!„tGIIIøì³Ï…gžyÆÚáÒ"J:B:Udd$–-[†!C†@*•bÿþý­:ÞÞÞÞÞÞ0`€;õÞµZ-öîÝ ///lß¾îîî4êƒB!¤ƒ¹ººš´)•Jh4+DÓ½…††¶».—‹'žx¤=..ƒÆ‚ ½^ßîséõz\¸pÁ¤Ýð½-[ª°°999mêÏÏ)!„Ò,Y²z½;wî´v(„˜…’N„NÇf³1{ölÄÄÄ`ذa­:¶ÿþIjÒ¤‰Ývgû»\y½¦xÒ¢E‹´qãF9’£`Qm°×@¥2 ’¤¡C‡ºt}‹-ìÎ7bÄ÷ @™8 ÒÓÓU»víJ®¦z+¯{a5hÐ@«V­Ò#<¢¸¸8»cbcc5yòdMž>^«W¯Öc=VêoJÇÅÅ©{÷îúüóÏŽ µÛž••år­Ž®utŒ#W²1cÆ(77WÓ§Owë—:O t”Ypp°ºtébÓ¾yófTSv‹¥Lãsss+¨’Šçíí­>}úè³Ï>ÓÙ³gµlÙ2Ý{ï½òññ±;¾  @O?ý´Ã£ëÔ©c·ÝÐ)33Ón{XX˜ËsP­Y³FK–,Ñ AƒÔ³gOO—”¡À%=ö˜MÛ*숽sçÎiÕªUÅþüùçŸ.Í•ššZ¦ñî*U‰···  ï¿ÿ^ñññ?~¼üüülÆåååiÔ¨Qvç¨_¿¾L&“Mû©S§\®ëÌ™3vÛ›4iâòœT7f³Y£GV@@€Þ{ï=O—¸„Ð à’¡C‡ªU«V6í‹-ªõ¦Nª¿üå/Åþ8tØ H’““Ë´öñãÇË4¾: Ó믿®˜˜]wÝu6ýëÖ­“Ùl¶i÷õõUçÎmÚ<èr-övU…„„(**Êå9¨n¦OŸ®èå—_VãÆ=]àB'€KŒF£Þxã ›öÏ?ÿ¼Üw™ÍfÍ›7¯XÛ5×\ãÔ±3AAA6me öìÙS¦ñÕI³fÍôí·ßÊßß¿X{AAÃ#özôèaÓæÎk´wï^›¶[n¹…ûXjŒÄÄD½þúëjÖ¬™^|ñEO—¸ŒÐ à²|P]»v-Övúôi½óÎ;åºÎ'Ÿ|¢'Nk{î¹çœº¶víÚ6m‰‰‰eZõêÕe_Ù¾ûî;  ½úê«e¾¾E‹vw/ÅÇÇÛÿàƒÚ´?~\(óÚ‹Åîë;hР2Ï@uõÊ+¯(--Mÿïÿý?»GßÕ¡ÀeƒA‹/Vƒ е¿÷Þ{:|øp¹¬¯ &k‹ŠŠÒO<áÔõmÚ´±isttœ=¿ÿþ{¹=—ÊðǸt]Ó¦MmÚÂÃÃíŽíСƒúöíkÓ¾xñâ2¯»~ýz›g 6Ô!CÊ<ÕÑï¿ÿ®/¾øB·ß~»î½÷^O—¸…Ð à–† ê»ï¾“¯¯oQ[NNŽúöí«Ó§O»5w^^žzè!¥¤¤µy{{ëã?vúèµ–-[ÚwîÜ9­_¿¾Ôk­V«ÆŽ[¶¢=lçÎNj—ºüˆ»€€µhÑÂáøW_}Uƒ¡XÛ´iÓ”™™Y¦u_ýu›¶±cÇÊÇǧLóPY­V=ûì³2úàƒ<]à6B'€Ûn¾ùfÍœ9S^^ÿ÷cfll¬úôéãò.¡””ÝqÇÚ²eK±ö?üP7ß|³ÓóFõïßߦýí·ß.5 yþùçµaÃõêÕËéõ<-))IãÆ+Ó5±±±ŠŽŽ.Öv×]w) Àá5Ý»w·9â099YcÆŒqzÝÏ>ûL›7o.ÖÖ»wo=óÌ3NϨ9²²²tðàA§ÿ\úK+UÕܹsµmÛ6=óÌ3jݺµ§ËÜFè(Ç׊+ŠÝCiÿþýŠŠŠÒo¼¡œœ§æ±X,š;w®Ú´i£_~ù¥Xßøñã>VïR#FŒ°i[·nnºé&mÛ¶MyyyEíV«U[·nÕwÜ¡©S§*22R“&M*óšž4yòdÍŸ?ß©±iiiêß¿±ÝQ~~~zã7J½öí·ßV§NŠµÍœ9SãÇWaaa‰×~ÿý÷6áRýúõ5oÞ¼bá%mÚ´I­[·vúϬY³<]r‰222ôòË/+<<\'Nôt9@¹ðöt€+G¿~ý´}ûvÝ{j‰‰‘tሼ &hòäÉúË_þ¢êꫯVDD„êÕ«§œœ¥¤¤hß¾}Ú¶m›¾þúk›cùL&“>ûì3 :Ô¥ºþò—¿¨_¿~ZµjU±ö}ûö馛n’···®¹æèĉJJJ’tá(¿O>ùD!!!6s®^½ÚfÔœ9sÔ¤I“¢'Mš¤µk×}|qÞKÍœ9Ó¦.IÚ°aCYžb1V«UC‡Õ´iÓôꫯªS§NŠŒŒ,:Ïb±èĉš3gŽ>þøc%&&]k4õÉ'Ÿ¨U«V¥®ãë뫟þY<ð€Ö¬YSÔ~ñy;Výû÷—·÷ÿ½ý°uëVMŸ>]_ýu±¹®¹æ­\¹R‘‘‘%®9qâÄb¯Í¥µ_ôÉ'ŸhÅŠÅÚŒFc±ÿà ‹Åî¿åÁ`0( @ÁÁÁ2?Êßo¼¡³gÏjÖ¬YªU«–§ËÊ¡ \µlÙR{öìÑìÙ³5iÒ$:uJÒ…#q/^¬Å‹—i¾»ï¾[ï¾û®®¹æ·êš={¶úöíksï"I2›Í:pà@±6-Z´HwÝu—ÍÑs’” „„„bmÙÙÙÅ>މ‰ÑÆK¬ëøñã:~ü¸³OîV­ZéÆoÔŽ;ŠµïØ±£è†ä&“I7Vnn®Îœ9#‹Åb3OXX˜>ûì3Ý}÷ÝN¯¢üQ¯¼òЦM›¦‚‚IÒ¯¿þª{î¹G¾¾¾Šˆˆ¯¯¯âããm^#Iºçž{4kÖ,Õ­[·ÔõœyM;¦cÇŽkc÷€ª ..NW_}u…®a4U»vmEFFªK—.ºùæ›Õ»wïb¿Ï;tè¦M›¦o¼ÑîŽl ºâ;.@¹óööÖÈ‘#uäÈ}ôÑGºí¶ÛäãããôõuêÔÑ“O>©mÛ¶iéÒ¥nN’¡_~ùE£F’Éd*qlïÞ½µqãFÝu×]n¯[Úµk§ßÿ]»víÒ˜1cÔ¶m[›1yyy:zô¨N:e8EFF꥗^Ò¡C‡Ê8]äíí­wß}WÐàÁƒåïï_Ô—ŸŸ¯¸¸89r¤Xàd4uë­·jÓ¦MZ²d‰S t‹EÉÉÉÚ»w¯fÍš¥#F¨yóæ0`@±]©ÕQ§N´råJ›?C† ñtieöÜsÏÉl6kúôéE;‘+A’Uº°õ>5%I)ɶwúÉÏ?È“µ]ÑBCC=]Tªôôt­Y³F111JLLTbb¢RRRäçç§Õ©SGQQQºá†U¦ª¬µzõjýúë¯JLLTff¦6l¨fÍšéöÛo×M7ÝTakW–S§NiçÎÚ¿¿Ž9¢ôôteffJ’‚‚‚ª¨¨(uêÔI;w.×@¹¹¹Z¿~½¶lÙ¢³gÏ*11Qf³Yááá WÇŽÕ§O~6Pã;v¬Âw:•¦_¿~úüóÏK=δ:™0a‚Ý{¾óÎ;;v¬**ÙòåË5pà@ >\_~ù¥§ËÁ,''G999ÊÈÈ(Öž˜”¤„DçŽúlß¶M[pp°rs2•“}á{˸ØcŠ‹=¦#G:y ßX5Kff¦Ãcfÿñ(77צ½k×®zâ‰'Jœ·  @©©©JLLÔ¯¿þª;vwjOhh¨æÍ›§;ï¼³lO ŠªN¡S^^žÚ¶m«ÄÄD>|X 4(óûöíÓ<`ÓÞ²eK-[¶¬<Ê,òÝwßéÕW_µi0`€Þ}÷Ýr] åÏ¡÷t€J¤¿ýíovûž}öY»¡SóæÍ^ãHJJŠ>øàM:Uiiivûï»ï>ýøãêÝ»w™æ†{Þÿ}ýùçŸz÷Ýw] œ¤ ;Š:dÓ^»ÄÓÒÒì®uà 7”ûZ¸2pO'¸‚„††jâĉڱc‡ÝûüIvÜÜ}÷ÝÚ»wo%WWsÅÇÇë­·ÞR«V­4zôhO—TB'¸µhÑBëׯWÆ íögffêé§Ÿ®äªj®±cÇ*++KS§N­Ð{WžDèW¨°°0Í;×aÿ/¿ü¢o¿ý¶+ª™6oÞ¬ hÀ€êׯŸ§Ë* ¡\Áz÷î­.]º8ìÿðÃ+±šš§°°P£F’ÉdÒ”)S<]P¡à ÷è£:ìÛ²e‹’““+±ššeæÌ™Ú½{·žþy]}õÕž.¨P„Np…ëÕ«—Ã>‹Å¢Ÿ~ú©òŠ©ARSS5nÜ85lØP¯¾úª§Ë*œ·§ T¬V­Z) @ÙÙÙvûccc+· âµ×^Srr²¾úê+zº Â±Ó j€:uê8ìKJJr{þÜÜ\åçç»=Ou”——'³ÙlÓ¦Ûo¿]ƒö@UW¶üü|xºŒb²²²TXXèé2<ŠNP„„„(>>Þn_JJŠSsX­VíÚµK¿üò‹öíÛ§}ûö)66V©©©ÊËË“$¨víÚjÔ¨‘n¾ùfuëÖM½{÷.1ôªNvíÚ¥~øAëׯW||¼”––&ƒÁ ÐÐP………©aÆêÙ³§î¼óN7Îåµ²²²”‘‘Q¬ÍÑý·Ìf³Îž=ëôÜõë×—Á`(úøüùóÊÍÍ-6&--Íîµ¹¹¹N¯e4æt]öÄÄÄè‡~К5ktêÔ)%$$(55UÒ…05<<\ 4P÷îÝÕ·o_uíÚUÞÞ=zTË—/×ü¡Ý»wëÌ™3:þ¼,‹ ƒjÕª¥ððpµmÛVQQQºá†të­·*((¨Âjª* ÈÌÌtØW«V-‡}………Z³f¾þúk­ZµJ %®“­ììl>}Z¿ýö›¦Nª€€ >\Ï=÷œZ¶léòsð”ÂÂBÍš5Ko¾ù¦Nžûì3·ëIMMÕƒ>¨þýû—8•$??_k×®ÕsÏ=§† ê¾ûîÓ–-[Ü®­ªa§\áâââJÜéÔ¨Q#»íü±Îœ9c·/,,LC‡Õ5×\£¦M›*22RJHHÐŽ;ôÓO?içÎÅ®±X,ú׿þ¥M›6iÑ¢Eòöö–ÙlVAAË111vës5 »Ô—_~©ÇÜîýš®½öZÝÿýêÔ©“5j¤‚‚ÅÇÇë·ß~Ó’%KtäÈ‘bãOž<©‡zHÔøñãÝ®íJõßÿþW<òˆrrrlúš5k¦ûï¿_7Ýt“7n,«ÕªøøxýñÇZºt©öíÛWl|bb¢FŽ©½{÷jÚ´iÅŽtVrr²n¿ývíÞ½Û¦/""Býë_uÍ5×(22R‘‘‘E;œŽ9¢µk×Ú½®  @K–,Qpp°n¹å–2×T•:@UPP ””·B³Ù¬7:\Ã`0hÏž=zå•Wl®µwOooo5oÞ\Ú±c‡¶nÝêpízõêéüùó6¡ÍªU«Rî¯×¥âââܺþßÿþ·^}õU›öÐÐP½ÿþû>|¸Ýëî¿ÿ~½ýöÛúòË/õ /ØÜ/k„ JHHÐŒ3J­aàÀ6`ll¬^ýu›± 6Ô›o¾Yêœ]~¡§žzJwÞyg±¶_~ùE³g϶¹¶k×®zâ‰'œZ'00ÐéšfΜ©§žzJ‹Å¦Öÿûßzúé§ååe{€Û½÷Þ«I“&é»ï¾Ó³Ï>«Ó§OëŸ>}º5þü2ÝëÉjµêþûï· Žj×®­O?ýT÷ÝwŸÝùn½õÖ¢ë-Z¤qãÆ¹´c«:2H²Jž|jJ’R’“$IþAòó¿òojå)¡¡¡ž.¨v¬V«K¡‹»»iÊ㱤¾óçÏW›#çüýýe2™äãã#ooï¢ÇKÿûÒG£Ñ¨C‡ÙÝ1uã7êú믷{³‹/¶{/¢×^{Mo¼ñ†KÏqöìÙúûßÿnÓ^·n]mܸQmÛ¶ujž¨W¯^JLL´é›1c†žzê©2×¶cÇuêÔɦ½]»vÚ»wo™ç+‰£×aðàÁúꫯÊu­åË—kàÀ6íZ³fnºé&§æ9yò¤zôè¡ØØX›¾ &hâĉN×dïùûúújõêÕêÕ«—Óóäåå©[·nÚ±cG±öaÆiΜ9NÏSV999ÊÉÉQFFF±öĤ$%$&95Gû¶mlÚ‚ƒƒ•›“©œì »'ãb).ö˜FŒÍN'àJaµZ«]ØRÖÇËw@TF£Ñ©ÄßßßnûºuëìáÖ¢E õéÓ§ÔyKê;yò¤ž{î9‡µOœ8Qƒ¶{}«V­töìÙ¢±_|ñ…þö·¿•ùõÉÏÏWÏž=µmÛ¶bíþù§Ö­[§ààà2ÏyÑþýûí¶_¾“ÇYШQ£lÚ ƒ–,Yâtà$I­[·ÖòåËuÓM7©°°°Xß‹/¾¨Ûo¿]-[¶t©Î+I||¼}ôQ»}sçÎu:p’¤ÆkõêÕêСƒrss‹õ½õÖ[ºóÎ;Õ¹sg§æzÿý÷mÚüñ2N’d2™ôÍ7ߨcÇŽvw^IP#Ø dªcèRÒãåojWF£Ñ©+þþþ )ÓNWwǔ磷··K÷йTHHˆÍnIêܹ³Sǰ9’••Uâì×]w^{í5»G–I*ö¼š4iâRà$]ØòÁ¨K—.Åvt¥¦¦ê£>ÒK/½äÒ¼åÍl6ëá‡Vvv¶Mßßþö7uïÞ½ÌsvîÜY#GŽÔ'Ÿ|R¬=;;[#FŒÐæÍ›]®÷Jñ׿þUÉÉÉ6íýû÷×}÷ÝWæùZ¶l©±cÇÚìt3›Í>|¸öïßïðsþ¢ƒÚ 4»téRæz$©yóæ?~¼ÆŒãÒõÕ¡TXXX­Ãgj¨ªŒ³ÁI```•]JÏHNNÖ Aƒc·ß××W}ôQ©o¾_äÊ›ÿ—êÔ©“¢¢¢´gÏžbí_ýu• -Z¤èèh›v///M˜0Áåy_yå}úé§6G(nÙ²E¿ÿþ»ÝãòjŠŸþY6l°ÛgïÞUÎzþùç5yòd›ÝNÔÊ•+Õ¿ÿ¯¿üóô¢k¯½ÖåšzôèáòµÕ¡@) «eèR–±U9q&èpÈx:lqæ(of³YóçÏׄ tâÄ »c¼¼¼œ:¶ì¡‡Rjjª$iøðán×Ö«W/›7ó£££uîÜ9Õ«WÏíùÝõî»ïÚmïÛ·¯š4iâò¼W]u•z÷î­µk×Úô}ôÑGúâ‹/\ž»º›}Z‘‘‘ž.PY,–*¶”w —ÿfzUál°a2™ªtèRÒÜ@M—àpÈEJMMUbb¢~ýõW­[·N ÇûúújÆŒz衇J]Ê”)e-¹DW]u•M›ÕjÕ¦M›ÜÞI実þY»wï¶Û÷ðû=ÿ€ì†N .Ô”)ST»vm·×¨nöìÙ£5kÖØísæó³4´:­ZµJqqq%‰Žv®]»Vƒv©-_¾¼è(M{_ÕÿrWcgÏžÕ‚ 4oÞ<5nÜXË–-ótI€Ë8 dªKØâÌcU d ƒÓˆŸŸ_• [œy4ž~™T‚µk×Ú *\¥yóæ)**ªÜæ,‹ÐÐP»í'Ož¬äJlý÷¿ÿuØwë­·º=¿£{åææjË–-¥î¼¹•ôžvE¾æ………Z·n}ôQ‡×¶iÓÆnû_|¡Áƒë¶Ûns©&W¯«.ª™œœ-]ºTóæÍÓO?ý$‹Å"I¥nƒ€ªÈb±\¡KI5Tå@Æ™`Ãßß¿J†.2P6í۷רQ£4|øpùúúz¬G»GRRR*¹[›6m²ÛÞ´iS5nÜØíù¯¿þzyyyÙ=Îtûöí52trôšëúë¯w{þæÍ›«N:EGD^jûöí.…NV«U÷Þ{¯&Nœ¨gŸ}–]¹—áÕ¨¬V«6nܨyóæiñâÅJOO·Ó¨Q#T "¹œT•°Å™±U‘Á`p:ð()ñtèRÒ# \ù‚ƒƒÕ¥KÝ|óͺýöÛÕ½{÷ [+77WiiiJOOWvvv‰¿páèSöBÊ”ššª}ûöÙíkÕªU¹¬a2™T§N%''Ûômß¾½\Ö¨NÌf³¶nÝj·¯E‹ʲjРÃЩ$êÖ­›6oÞlÓ—‘‘¡1cÆèóÏ?׳Ï>«Aƒ©N:åRouGèT…:tHóæÍÓüùóWâØ† VRU@Õp¥„.%=VE^^^N>>> ¨ra‹3åõåá¶ÛnÓ¸qãJg0¤ÐÐPÕ­[W!!!RÏÅcÉÖ¬Y£]»vi×®]:wîœÛóæåå•Cu®Û½{·ÝHÒ…Ý2å¥^½zvC§;w–ÛÕÅ¡C‡”••e·¯¼_s{öîÝ«üüüwþ͘1C;v,:qìr111zòÉ'5zôh 0@ýë_Õ§Oùûû—KíÕ¡S“œœ¬… jîܹúí·ßœ¾ŽN¸Tu[œY£*ºÈ”l˜L&VÙÐ¥¤G*WýúõÕ«W/O—¡ôôt½ýöÛš3gŽNŸ>íérÊ]IÁÙÖ­[õ·¿ý­B×INNVAA|||Êeê ¤×|ÿþýåöš?~Ün»ÅbѹsçéðÚ¨¨(?^&L(q¼¼<-^¼X‹/V@@€úô飻ï¾[wÝu—ÃÐëJEèTjõêÕš={¶–-[¦üüü2ÏAèà«ÕZáÁˆ§ŸªÈ8l˜L&U¹°Å™dÀ•èÛo¿ÕèÑ£uæÌO—Raìí>ºh÷îÝÚ½{w…×pîÜ9EDDTø:UEI¯ùÁƒuðàÁ ¯!))©ÄÐI’Ư֭[ë±Ç³{ë›ËeggkéÒ¥Zºt©ŒF£zôè¡GyD<ð@8‚ÐɃŽ;¦/¾øB_~ù¥N:åÖ\„N <\ dªcØâl ŽŽEð4£ÑèTàáççW¥C—’ ƒ§_f”ѻᆱ±cÇ:ìÖm·Ý¦Î;+""¢è—‡Ù°aƒ¦M›V¥º%%%ÅÓ%ԸЩª¼æÎxðÁÕ±cGýóŸÿÔŠ+Åx9‹Å¢õë×kýúõ=z´FŒ¡_|QMš4q§ì*Щ’åææjÙ²eZ´h‘6lØPâMõœU§N–Cu $V«µJ‡.å1Gudüýý«dØâÌ# ªš?üÐaଷß~[Ç/Ó{“Îìñ„’NŸ Shhh…ד“SákT%%½æuêÔQxxx…×PPPàôØ«¯¾ZË–-Sll¬>þøc}þùç%îÖº\NNŽf̘¡Ù³gkâĉ3fŒŒF£+eWi„N•d÷îÝš?¾¾ûî»rÿ‹õꫯ.×ùp…3Lu]Jztö7™*›Ñht*Øð÷÷WHHH• ]JZ“@¨\±±±z饗ìöÕ¯__›7oV‹-*¹ªŠSÒ±g£FÒk¯½V‰ÕÔ %½æC† ÑôéÓ+±ç5mÚTï¼óŽ^ýu-_¾\ .Ô?þ¨ÜÜ\§®ÏÉÉÑK/½¤-[¶háÂ…ò÷÷¯àŠ+¡SJIIÑ·ß~«ùóç+&&¦ÂÖ¹’þr€+Uaaaµ[œy¬ªŒ³AI```• [œ­ÊÛ¿þõ/eggÛí[´hÑ÷ždݺuöeff×ë¿W IDATVb%5GuÍýüüôàƒêÁTFF†–-[¦¯¿þZ«W¯vê>»Ë–-ÓèÑ£5sæÌJ¨¶ò:•³ÂÂB­_¿^_}õ•V®\YâÁòr¥ý æ),,¼"B—êÈ8x˜L¦*¶8ó(›‹·±çŽ;îP=*¹¢ŠWÒñy•XIÍq%½æÁÁÁ2dˆ† ¢„„}õÕWš3gŽ¢££K¼nÖ¬Y6l˜ºuëVI•V<Þ‰)g÷Þ{¯6oÞ\©k:W6‹ÅR­ÃgËãþvÁÙÀÃd2UéÐ¥¤9¸Üºu딕•e·ïž{î©äj*GIﱦ¤¤Tb%5GóæÍe0ì¾/T_óúõëëùçŸ×óÏ?¯-[¶èé§ŸÖž={쎵Z­zòÉ'µoß¾J®²âðnS9²X,:xð`¥¯K脚¬´@¦º„.%=VÅ@Æ`08„øùùU¹°Å™Ç+ñFŽ8ãÏ?ÿtØwã7Vb%•§eË–ŠˆˆÐ™3glú*òÖ)5Yhh¨Ú·oow7ЕòšßrË-Ú¹s§Þ{ï=½üòËvÇìß¿_III «äê*¡S92š2eІZ©ë:Á‹ÅR­Ãg֮ʌ3Á†¿¿• ]JZ›@€+—½à墒ŽDsFU|/碞={jáÂ…6íTAA÷Ô­½zõ²:%$$\1AŒÑhÔK/½¤S§NéÃ?´;&&&F={ö¬äÊ*¡S9»óÎ;5xð`-X° RÖ Rýúõ+e­+My&ž]JS §g™ªx¤ ¨Îòòòö¹ûžSU>6íöÛo·:hçÎêÚµk¹¬³víZõïß¿XÛ˜1côÖ[o•ËüÕÉí·ß®>øÀnßÖ­[5pàÀrY'::Z;w.Ö6lØ0Íœ9Óá5«W¯ÖÖ­[%]xþ…^p«†÷Þ{O³fÍRnn®MßàØÔ©Se2™ôÅ_TøZµË©ª‡-åQCUäåååTàáëë«ÀÀÀ*¶8óèåååé—%wØ£Ö­[»7*«x£FÒû￯¬¬¬bígÏžÕôéÓ5fÌ·æÿðÕššZ¬mìØ±ez=ƒƒƒí¶;:-X° èÈ8IºõÖ[]Zëüùó¥®5cÆŒb¯c:uìŽ1b„Þxã %%%kÏÎÎÖ[o½¥wÞy§ÔµJ2gΛv£G–¿¿™æùñÇÝìÝ¿J’ÚµkçÖ¼U ¡S»û¡C‡Ú|Ñ”‡)S¦èñÇwé/y¸\£Fe÷ òÍ›7ë“O>Ñ?þñ2Íi±Xôâ‹/–W‰&,,LÓ§O׈#lú&Mš¤Áƒ+""Â¥¹÷íÛ§×_½X[£F4räÈ2ÍS¿~}(;;»X{VV–Ìf³¼½¿íâĉb—vû–fÍšÙm/-àJII± î­ Ù³gkÀ€6}Ó¦MÓˆ#ÔªU«×säĉ6÷bª]»¶KááŒ34jÔ(—w»%$$èÔ©S6í×]wZ¶léÒœU[G*A§N´iÓ&uëÖ­ÜçnÕª€rõòË/;ì{ñÅuäȧç²Z­zî¹ç´yóæò(­Â=úè£û¬KsVU„N•$<<\ßÿ½^xá…r=&®´$Êêá‡V—.]ìöeeeéÆoÔ| ‹ÅRâ<‰‰‰4h>üðCI’ŸŸ_¹×Z>ùäuìØÑ¦}ÿþýêÞ½»¶mÛæô\?ýô“n¹åÅÆÆká…tçwºT_ß¾}í¶/]ºÔá5—ß»Éd2•z_#///»còóóµråJ»×X,›#ñš5k¦öíÛ—¸Ö;ï¼c÷¸¿¸¸8uïÞ]?ÿüs‰×_jëÖ­ºùæ›mŽs>|¸†îô<—{ÿý÷5jÔ(eff:}Mnn®F¥åË—ÛôÝvÛmzôÑG]®§*2H²JÒæÔ”$¥$_8Î? H~þöo÷lذAO>ù¤ÛÇíùûû+++‹N@5§:Øíst\™ιe˵mÛ¶\ê»Ü™3gtóÍ7Û„%—ºþúë5hÐ ]{íµjݺµ4h sçÎiÿþýZ¹r¥æÎ[t \§N4dÈ»;Z|}}mî±Rì8¸ŸþY<ð€Íµ¹¹¹ÊË˳i÷ó󳻋hÇŽNý2VV– ¤üѦÏËËK<òˆzè!ÝqÇ6aZjjª6nܨO>ùD«W¯¶¹þ‰'žÐG}äò…'N¨yóæ6¡ŸŸŸŸ>úè# 6LF£Q’tîÜ93FsçÎ-6ö™gžÑôéÓK]kåÊ•vñððp-X°@½{÷.zúÏ?ÿÔßÿþwmܸ±ØØ™3g:Üés©üü|=úè£Z°`Ýþûî»O<òˆúõë§  âùEzzº¶lÙ¢™3gjÙ²e*,,,ÖÿàƒjþüùN÷üóÏkÊ”)vû4h Ç{L÷߿ڶm+Ÿbý999Š‹‹Ó¼yó4sæL;wÎfŽöíÛkÍš5ª_¿¾Sõ¸"''G999ÊÈÈ(Öž˜”¤„Dçò‰ömÛØ´+7'S9Ù·¸ØcŠ‹=¦#G:yJnn®yämÚ´Éå9Úµk§½{÷–cU*ʱcÇtõÕW—ëœÑÑÑ¥î qÇÑ£G5pà@8pÀ­yºuë¦+VhéÒ¥Nï4 )Æ9 ?ÊêСCNßCÇb±èùçŸ×Œ3îê2ªW¯žêׯ/«Õª””>}ZV«Õf¬Æ¯qãÆ¹õ$i„ zã7ìöùúúªE‹JMMÕ™3glú[¶l©íÛ·;}Ìܽ÷ÞëpU`` š5k¦øøx¥¦¦Úô÷íÛW+V¬( ÁJcµZõúë¯ëßÿþ· ìŽñòòRݺuÕ A ¥¦¦*>>Þ&hº8öŸÿü§&Ož\¦oÖ¬Yzî¹çlîMu9___EDD¨V­Z*,,ÔéÓ§•’’Râ5={öÔ÷߯ÐÐP§ëq…'B'Ž×óÈÈH­[·N¯¼òŠË;•8Z@EjÑ¢…vìØ¡‘#G:\ªV­Zš6mš6lØ  ¨°bFM›6MÑÑѺçž{쎱X,JHHPtttÑ}“ìN}ûöUttt¹N’ôÚk¯é‰'ž°Û—ŸŸ¯˜˜»Óõ×_¯U«V•é¾F_|ñ…î¸ã»}YYYÚ·oŸÝÀé®»îÒ7ß|S¦ÏƒÁ ‰'êСC2dˆÝ ¨°°PIIIÚ»w¯¢££uòäI»Ó-·Ü¢ßÿ]ï½÷^™w•=öØc:sæŒ>ýôSuéÒÅáûøùùùŠ‹‹Stt´öíÛWbà¡/¿üRëׯ¯ðÀÉSØéä!—~B­\¹RÇ/óq{/¾ø¢&Ož\Þ¥¨©©©š6mZ¹ÎùÔSO)<<¼\çt$..N|ð–/_®#GŽ8çåå¥.]ºhÀ€1bD±ãÃöìÙ£%K–8µžŸŸŸ^~ùå¢=ªùóç»þþgÔ¨Qª[·®K×FGGkéÒ¥Z±b…~ÿýw»áÒE>>>j×®ú÷ï¯aÆéšk®qµä­^½ZS§NÕÚµkî ’¤k¯½VO=õ”FŽi÷ØÁÒX,-X°@~øa‰ÏÝ`0¨k×®=z´zè¡2¯s¹C‡iÉ’%Z±b…¶nÝZâ}ÄŒF£Ú´i£¾}ûjذaåº 011QkÖ¬ÑO?ý¤;wêðáÃ%¾Þ5lØPÝ»w×!CÔ¯_?y{{—[M¥áx½äòóÌ™3:t¨Ö®]ëô³gϾân2 êKJJRtt´’““•’’"…‡‡+<<\-Z´p9Ô©N’““§ÄÄD%&&*33S!!!ª]»¶"##Õ®];§ïTrssõÇèĉÊÈÈP~~¾‚ƒƒU¯^=uìØQ 4(·µÒÒÒ´sçN={Vééé²Z­ Qƒ tà 7”iUY×=~üxÑkž––Vôš7hÐ@íÚµ³¹7XE1›Í:räˆNž<©´´4¥§§+''G Vhh¨Ú·o¯°°°J©ÇB§ÄÞÖ¹ÂÂB½óÎ;?~¼Ìfs©slݺU]»v­ˆò@5Æ=j8///½òÊ+úå—_Ô´iÓRÇ·nݺâ‹p¡SÔµkWíÞ½[ƒ r8&22RµjժĪ#tª¢jÕª¥o¾ùF³fÍR@@€M?»œ@UBèTÅýýï׎;U¬½MÛs<…Щhݺµ~ûí7=óÌ3ÅÚª B§jÂd2iúôéZºt©BCC @•âíéP6wß}·öìÙ£O—P„ЩjÔ¨‘§K(†ãõà6B'¸Ð n#t€Ûà6B'¸Ð n#t€Ûà6B'¸Ð n#t€Ûà6B'¸Ð n#t€Ûà6B'¸Ð n#t€Ûà6B'¸Ð n#t€Ûà6B'¸Ð n#t€Ûà6B'¸Ð n#t€Ûà6B'¸Ð n#t€Ûà6B'¸Ð n#t€Ûà6B'¸Ð n#t€Ûà6B'¸Ð n#t€Ûà6B'¸Ð n#t€Ûà6B'¸Ð  Æ0È`0”<ÂPú{j///y{{—:Ƨ”1ö”ý ”‹ÂœYrsU˜›ëéRÀÆl4Jv‚#?“IµkÕRÒ¹s¯õ3™Pæ5 <Ä’“£‚óçUšêéRÀÆZ§ŽT»¶M»¯¯­J*áZ_:U‰«Véì÷ßëÌwßyºp…iüÒKjrD ê×WAýúN…Nq'N((0HAA2½åímtz-‹Å¢ÂÂB­Ý°AõÃÃU?<\‘ÅÆdee)++[ÇãâÔ(2R F–ñIV«Uƒ¡Ìו§ììlIÒîèheee+;;[ƒA Ôu¢äm4ÊÛûÿþ tµîÔÔT¥¤ž×‘£GÕ¬i5kÚT'OÅ+9%E)))êÝ«§ŒF£ŒÆâÿ¯òóóuþ|šÎ§W~~¨°°0‡kY,Y,­Û¸QµBj©v­µ¾öZ»c>¢Ôóçu>í¼zvï.oïbÏ·&»ôëÈd2•:>6.NÇcã”—ŸWÔfA¾¾>òññUëk[)Àß_þþþåVczzº“’”˜”¤›»v-j¿ôóÔјÊpñs16.N’œþ¶gë¶í2ÿo¾^=ºWD¹SXh•ÕZ¨ ›~‘$Ývk/ååå)//OûbbÔ¸Q#5nÔÈÃUWPP c±±:«¨ví¬à  bc“þ÷óFšºtºÑí5óóóu<6VÇãâÔ¤qcÕ«WOaõêÙŒ;—œ¬ää‹UÓ«®R“&Mäïç§“§âu*þ”š7m¦À @jíú ²^ø9Xºð=¼Á`PHHˆÂÃê),,ÌæyÙ›çr—þ Ñ@‘:rôhÑ÷v™™™:›¨„ÄÝrÓME×U…Ÿ• ²ðxÈ¡#G”_P`H\./?_ùyyZøíb]×!J×GuP``€¼½m¿vÄb±(//_sæ}¥Æªq£FúÇÈÇååå%/¯ '­¦¥§ëôé3Z¹zµzõèáRè4÷«êо½:Dµ÷Ø7Ôÿýa…¤ ?øû+ @V«U ‰‰ÊÊÊÖ™³gtm«Vjݪ•¤ áÔžè½6d°$•©î}1´yË¯Šˆh °zõd•´hñw Rpp¬—/,,Taa¡/YZôƽ¯¯¯rss”“›«>·Ý¦ÐÐPÕ µY«ÀlV^n®æÎ_ °zõVOã^¶:-]¾¼è®¿^5>t²÷u^z@²/&F?ü¸JmÛ´–Éd’ŸÉ$Y¥Ü¼<ååçéÝ»ÕñºëÔñºëP>ÁSvNŽÎœ=«#Gÿ,(]úõåhLE3›ÍÚà€öÇP~~¾$9ý9|©ü‚äçkþÂ…E_íÛ¶•€¿Ê1Àó¤ÂB‹Ìf‹|³H҅Щ  @Ù99:xè°üýü @•“››§ìÒò?êæ®]tã 7¨Ó ‹ýrT‡)—Ð)''G;þØ¥+W©MëkÕ£Û- ëÖÍfÜÁC‡µeëVíÙ»WéÓGuëÖ•¿ŸŸ9¢µ6èî»îR£ÈHjÁ7‹Ô A}E4h àà ßsZ­J?xP>>>òññч’ïÿþ[’Ýy.wéÏ€~~~ª]«V±ïíRÏŸ×îèhmÿý÷b¡SUøY* ÷t€*.?/OéÚº}»bãâ”›—+³ÅR¦9¬V« u6!AÖ¯Û¶Ël6ýÖ—$™Íåæå)9%E999.Õ:÷«Ú]lÞÊöóºuúyÝ:ù™LjÕòõ¹­·z÷ê©fM›Êjµj݆Š+½wŸæ~µÀ¥šÏœ9£ü¡ë;tPÆ‘òõñÑŽ?þÕjÕõ:È×ǧX¨XXX(³Ù¬å+~Ôî=Ñ:—œ,ka¡ŽÇÆiæ_tøÈQ¥¤¤Ø]ËjµÊRX¨„ÄDÅžˆSÌÁƒë:pðâNœPbbÒ…]nÖË㯚ÇÞב3²²²•˜”¤«›5SÛk¯Õõ:¨CT{]Õ¸‘´ê§5:pðPÑ»òàãí­ À@…Ö©S¬ýÒ¯/Gc*šÙlÖÁƒ‡´|Å:—œ\¦ÏáKäç+3+KÇŽÇêÄÉS:}æŒÎ%'+'Ûµ¿{ª*«õÂ×lBb¢$Éh4ÊÇÛ[¡uê”ëî8€òRXX¨ŒŒLMHЯ۶ëĉ2›ÍÅÆäæå)#3CÉN|ßç Ka¡233•˜¨˜ƒ•t.Ùî¸sÉÉ:pð“”‘™)Ëÿ~.ÎÉÉQrrŠrsse¶\¨5!1Q&_“Z4o®ë;tPTûöjÛºµdµêð‘#úáÇ•ÊÊÊR~AAÑüöæ¹Ü¥?^Õ¸±Š}og6›•™™©s—=‡ªð³2T–šýkÏPŽùö;Š?}Zññ§•™•¥¼¼|‡c9"oooF5¹ê*»c|||Ô ~¸®jÜX³çÌU§oP§n(±†‹»¶nÿM¹¹¹ÊÉÍQû¶mU§vmÕ®][Ò…oè%«UñññÚþÛïêÚ¥sÑopý¶c§222”ž‘¡¶­[«^ݺª[·äÉ))JNN–ÉdRíZµT«V­Ççää(;;»(Púì£2 E5ÔWï^=õä¨g•““£¬¬,ýyì¸$«UÛû]5T£† •›—§“'OéÄÉ“JOO/z®¯¿®h½}ûcúŒ²srt>-M9¹¹:s欲sr”‘™©óii2›Í2E»ÉNŸ9£¸'¦;në­~}î$Õ±ã±úï?ÈËè¥kZ´pø<}}}¬ÐÐ::pðÂêÕS½zu%IçÓÒtþüyùù™d6›‹~»Èjµ*þô™ ŸS§OK’ÃÿÙ99¥¾Ò…ã ³²³µmûo^kƒAÝnê*???ùùù)33«¨®vmÛ]—••¥Ôó畚z^íÛµUÙ¬‚‚?~\ò÷÷×î=ÑjqõÕjqõÿoï¾£ÛºîÑ{Ø;i[¢ªe5K¶,·‰[âÈ)N<ÉdÒ'9›M²»³{vÎîÙ³IfƙͦÎÏLf&g²É‰SìÅ’í¸ÉêÅ’lIE±¤Ø@‚$@ Hbÿ@;A‘²ää÷ùËðî»xº÷ýÞïwkfµ½ÀãÁãvsÛ­·,x^ÀÒ®£ùÔÖÔLë§ ë×päØq"cÎ74°ë®tuwÓÙÕM0¤° €‡êªª%õ™Ùl¦¼¬›mþëkòàÔ+¬IDATãÆ ”––å¶ÉJ$‹¶a||Î_h`Çöm¨Uéß­×`Ëæ;r}<6–¾¦Ã‘0“““$““\hhÀépàp8rßÀÀÀ ±xŒX,F<ž ?è©­©¡¨°Â‚iûÏç|Zj?E":»ºéìê"EŠâ¢"Š §íW«Õ¢T*Y¿n‡ýšö3>>NgWúÚŒÅâTVTPYQNsKkzŸEÓ÷)„B±T*•FCýêUtuwóoÿþS¾üÅ/,ú¾|Æ¢óïS…V«Åír166Æ¥¦Ë¬^u[îïí„Ãaôz&“ m&;i!N§#7ŸÈÚ¶e3ÇOžä؉“üìÏrç¶mܹm뢟³ç€£½^?ml7ÓræÊÙ9R(" âr¹ð÷õá÷÷åæ’Bq3’ “BÜÄvÝuWnúógŸE³@‰´Æ¦&tZZvÞ @iI Û¶læ•×^§¤¸˜êª*Ü.לۦR)ZÛ¼´¶µáïëË”!PóÚ¨©®¦¦ºšêªÊôa™§Ü™ÌT*EÇ•+t\éÄ×ÞZ^GéàáÃT”—SQQNý’ž°„†Ñëu™×¦©TŠT*•WŒŒŽÒx©‰KMMèu:&3u¿Ûÿ"ëÖ¬aíÚ5 Œàõùhóz§FFGñúÚiimcÝÚ5Äb1ÆÆÆ8vâ­V‹B¡`|||ζ·¶µÑxéÉÉdºÜà5ß³–rå+]q’h4šÎ<Òhxåµ× ‡Ã„#ŒFM—›9¡î»‡Ý†ÝnÏ«ÏFFFiik£¥µšêª9¯¯ááaÚ¼>Ú¼¾Üšp©T*¯6DÆÆhõzi¼ÔDIIqîXš.7 †èéõs÷Îs·ÇãaÕä$ûôIõRÏá¡`¯¯ÚÚš\™Ï·Îœ¡®®6·M8¦?àôÙ³¹²J©¤-b¢© PT(ùûúèéí¥§·¥R‰B¡@©PpôøqÊËË©(/cú«Aª|Χ|û)»fÞ¾_J—qŒÅ0[Ì i¸Ø8í¸Ç'&‹Œqøè16®_‡c ßGöÚ|é•WŸ`bbNO¸±‘ËÍÍt÷ô°uóf : !„bÅlÛ²93æô¦Ë—ó–BÎw,º˜ªÊJR©í3‚NWrïõ÷-ë¸vµÕÕ;q’ðŒ9ÓBfεZ-½aÚØn¦åÌ•³s¤6¯—¦Ë—1™ÒkPIy>!ÄÍN‚NBqÛu×ÎÜ?¿wo®Öô\/5å2Dîß½{ÞíJKJغy3Ïüó¿P]UÅÀàà‚A§6¯—ß¿ú£—Ó‰Óáàµ7°yÓ0 …‚êªJÆ2é‹Ð—H·wtpèÈQÂáOúF³zÕ*‘ÈÂA§/5ár¹°Ûl‹>—}2N“ :¢~Õ*´M.`¥P(xÿ#äÞ“ :¥€¾@€ââ¢\ÐÉíváv¹(+-¥ãÊÚ|>Š‹‹X ¸].†‚Á\À¡?À ×cÐ뙜œ$‰Ð099IjJi;“шB¡`ÇöíX­ÖÜë±XŒÑpV·è_v›ªÊJ|íí¹€¤3Ú;:¨ª¬$Ng]Luððab±8±XŒúÕ龟ù}dK1æÓ###\¸x‘—~ÿ =ø‰D‚x"Áá£ÇP©ÕÜvÛ­ ãõùxëÌ>ýgŸÌµed$t:uú4Ÿýó?K—[ ‡9züD&h äŽM·Í¦·=Èòát:©_½j‘ Sþ×Q¾’ÉÉô$0tRóûW_C£Ñ Ö¨¹¥¶67A¯­©ªªtÐ)Ÿ>¡¹¥•#ÇŽñ©O<5çõ5<Èïöïç'ÿþSö|àý¹¬„™îÞ¹cÞßsQ©T¨T*þïÓ ÀÏŸ}–ç÷î¥û™^LF#¥¥%”–”ðÄããpØqØí|xÏãô™³|îÏ?ÅÄÄÑh”î»— ë×ånRg³½NŸ=‹ËébÕm·ñøû#26Æ;ç/ðéO~"=¹R«ùÙ³¿dó¦ÛùÈ{f­Ùb0Ò¯9¡»§‡¦æËüÝw¿ŸÉlHòßÿÞ´`Ô|*++¸çî»øòW¿ŽÇãaó¦M( ::®pððžþÖ7G"\¸x¿ßÏh8LO¯ŸÇy˜Ç~hÞïcbb‚‰‰‰¼úàÜù $“IV¯º/|ö3¹öÕÖÔP^ZJôÖ9êêîá‰>΀¢ÂBü}}¼}îܬ¶‡ÃaFGÃ|îK_æãO~”Ûn¹%¯`ǵzæÇ?F«Õ¢Õh™œœd0³žÑ­·Ôa³Zsußß÷à<òÐûô|ãožæ#O졺ªòšúl®ëË×ÞRyõx¯t¦K²åÓ€p$‚¿¯}÷; é² [îØÄÁÃG8xøð¼ýàr^-Ãxêôi€%ŸÃ-­môôö2<2Âæ;6å^Çãt÷ôðιóܾqCîõ`h˜<±‡ïù z½žH$B8á3_ø ’É$5ÕÕDÇ'††ùÇÿ÷CÔj5jµš<ö({_ØÇ/ýö<þ†‚A†††ò:Ÿòí§Ë--4\l¤²²‚ûwïæ¾Ý÷än²üðžY°?òÝ×磥µ Ç3m?—š.s©©‰_=÷ü¢ûB!„X »ÝÎÎ;(,,ä;ßûïäa{äáYÛ-u,º{ý/ÿžƒGŽò¥/|>7o9xøÜw/÷Þ³‹_üê×Ë:.£Á€Ëå¤? ²„9ËÌ9àèh˜‘ÑÑß³œ¹rvmÞ‘‘Qºº{øÙOþ³ÙŒÙdºöƒBˆw„âT]m-ƒƒx}>.6^b"61k›`0„J¥šµ.‰ÇãA«Õ2>>N,G¥Rκá?84D8&‘Hpôøñ̫電½~?““éÒdZ­6Wo%doŠïÞµ‹‘ÑFFFsë+% ö¿ü2ׯcÃúõX-–iïU«Õ(•JÊËÊŽs¡á"Ã#Ã\¹ÒɕήLÖRj޽.Ùl¦¨°Gz9~œµõõÓÊÐÍE£Vc4°˜Í$â úô:±xµZyFóìÓu‰D‚öŽŽÌ÷‘žØÌü>”J%ƒ!¯>(-)ÁßßO(4Ìþ—_Æb6c1[ð¸]ØlVŒFã’ûÅh4b2ÓY,¤×õ™«í±L³l–I4ͽçz¨(/Çh0`4I¥RÄãUÄbqêêjˆÇâé,“ÂBÌæ«Àl9ÅññqÆ'&ˆÅâyõY04¼äöEÇÇ Cyµ2çP&32»^Z­F¡PÊóÏþ.,õöúÚA«ÑpúìÙÜëZ†‘‘¼ííÓ‚N·³Ùœk§F«ÅLúJ¥RŒŒŒéLBÛ»ŽÌ&f³ ³ÙÌÈÈÁ`(ïó)ß~Ž …(-)Á2å7Åb1SR\œW_泟ìu\\T4í;6›LJI=!„B\N§ƒ:jÑëu ƒ\l¼4k›¥ŒEµÚ…« LF#³™þ@µJ+?§Ïd-W"™$‹¡×ëQ_Ç׿“ï\9ÏŒÝ5Œ™9R>kY !Ä&A'!„ø#UW[ƒ×çC§ÓÑÐØˆÍfÃ6#Ca(œ;èäv£Ó鈎‹ÅÐjµ³ƒNƒCD"âñ8GŽŸö·^¿Ÿd2ÉØØ …bEƒNN§€Ý»îÎ•Š»xém^/­m^ö¿ô*•’ꪪYA'FƒB¡ ¬´”îžZ½^®tvæk]S¿:ïò‹1›Lôz}è}\niárs GŽÇjµ.tÒh0d‚NñDœþþV«…X,†Z­N/¬;¥O£Ñ(ƒƒCÄãqÚ;:ˆD"Ó>oê÷a2™ÐëõyõAII1.^$ ±ÿ¥—Ó¥ŠŠØ½ënlVë¬L¯| L&Sn2¹XÛ“™ ãØØØu:Y-,3 …ƒ>rë-u¼sþ<ïœ;Ÿžd›®¶Ád2a4‰Ž31‘j\>ƒtàc(Ì« ™¸f2j²T*J¥rZIÈ…L :-åöú|ŒŒŒ¢ÑhxëÌÕ “F£É”]ôMÛÞãvc™tÒj4h5Ìf©TŠáátÐÉ8%è4õøÍ&3f³‰ááB¡PÞçS¾ý”¾ÉdM}ý´ß‹Ùœwö]^ûÉÊJJ°L9×Mf…yíG!„b©œN‡.tjhl¤¢¼|Ú6K‹.t2 ˜M¦tЩ?€N§C§Ó¦ƒN:¦:%“I&&&ÐëtÓÆŽï–|çʉ©A§L¿!Ä{„b…¥R)Μ}›Î®n:»ºhik%Og‘¨”X-éµ8º»{p;ç^KéÝrçöm¬]SÏ_|嫬_»–uk×Lû»Z­&‹O$f½7[·[¥R¢TÎ.§R©p»\¤R)>¼gÏœûw8+V­§§—îžΞ;À?û *•Šõkײ~íZü}}$Iμýe¥¥Ó?£·_óíÿÃí6°qÃzžzò£C!‚Á‡]V{ý~z{ýèô: <µîgR*•y·!»ýµ\{gß~µZJ­bÍêÕK:‡S©¯¿ù&·ÖÕqÿ½»).ºZÞl2q©©‰CGŽðõ¯ü&3Ç‘H$rÿ=U"‘$•J¡ÌÓää$‰9~«Ò¯'Qª”(U _ Sϧ^¿?¯~Ê®'—ˆÇ™œ¼zNONN’œ£=sÉg? ( â‰Ä´ï85™šóZB!„XIÿù«ÿ‘}/½Ì³¿þ ú±'§••[êXt1U••ì¾gB¯×¡Óé¸÷ž»©Ê£<_>zý~.4\¤®®§söøþzËw®<2:J,Ï7…â½B‚NB±BN>Í©·Nsò­Ótuw/°åÕ¿EÆ"s®gt-Ú;:rOÆ—–”äõžti/3O}ô#œ¿ÐÀOösjjªs_[_Ïñ“§8~ò$ŸýÔ§P«Óë&½yè0ÁPˆŠòòy33Ö®©çð‘£4·´RR\„F£A£Ñp¹¹…§Nqâä)žùÑæm[hx˜P(„F£Éd˜XæÝ2¥¬JŠùæß> ¤³/¬Vk.ó ‹1‹ÑÙÙEue%U³>chhˆ––VîܾÛ·³cû6iim]¸3ó0:¦§·—ÃGñàý÷ñÀ}÷æ>ßßׇËåÂb±äp¸ç®¼ðâ‹>v³É̃÷ÝËî»g ‡ƒÁ^_;ÕU•8ìöYw…BÝn£ª²_{{æ7ÜΠíéáµ7L :mÛ²…òòr4™ºöZ­«ÅÂko˜tšˆM°mË4 f“ µZ½¢ç“Ãá ¶ºNKK[±}û°˜-é> V¬d‹Ýn£ºª½^O›7ÝÿF£‘¾þ~FGGQ*•+öƒB!Ä\<™‡m¬V :ÝÕÌ›•‹f×o²Ûl€…B1«„x>š[ZHÄ8&''3뎢ѨÙyçvBEyy.h¤V©Ðiµ:r$Sbp-W:»H$ ‡Ñëõèõú\°Åß×wmA'§›ÍJ<çÒåËœohÀír344ÄàÐùõ¯Í*ù·ìBº6«èxtþ “ј :•ÑÞÑÁñ“'¹¥®`Ö÷a³ZI••åÕee¥446ÒÚæÍ­ó”"EÍF Õ•UX­ J¥’—_y5ý¤¢VƒÙh"‹/zŒÆL sfÛÓA‚A¾þ•¯P8cͱw›ÙlÆl6STX@Wwo9KEy9CÁ ƒCCüïÿñWx<yõYhxxÎýL½¾>ú¡Mû­YJ–£¶¦†6¯x"ÎïöïÈû†Bx}>ª*+q8æ:9ìvª*+ðú|”—•a6›±X,tu÷ÐÙÕMa'túÊ—¿DEyY.¨£Óé°X,¼úÆÌ&&“‘ÆKMlÛ²…­[6£V«sý´’ç“ÃnÇfµ¢Õjimkãísç(ðxP)•éR3+TBÔa·c·ÙÐëõx}>ο€ÓáÈ=+A'!„B\oîLfûÔkVz,ªV«Q«Õج6‰ñDüš²œš[Z¹Øx 7N*+-eÓÆ lݲ·ûÝ+w¿’se!„¸Ù) ýˆm*•"8`h0€ÁhFo¸~ r !ÄŠlúûÞ}ûóÚ>;Ø}òÃbó¦Mܱi饴n„Þ^?Ññq¢ãQjªªÐh4³žàï‡#„ÃaÖ­]“;Öþþ~‘áH„êª*tZíu¯IF  ¢T)±Y­Ø¬ÖYµÈØ‘H¿¿Â‚ <„ÃaBÃÃC!*Ë+ruÄ[Z[1Ó½kYw'+•J ¥??KßL¶Ûç]ÿh%E"‘ôñö÷Ìû}ŒŽŽæÕ‰D‚D"A›×›¾é­TRWSƒ2sÃ2kÛ$“4]nÎ,¬£²¢|VÛ–ÒölŸYÌ7×X%3:f(Äa·ãÈdzMµXŸMNN'ˆÇã˜ÍW'×S¯¯úÕ«H$Ò%B¦n“o–+•Jákï¸nç°×ç£ÍëãøÉ“ì¼s;;¶oÇÛÞž&›ÍÓ®ÁW_ƒ®îô:zùõ¯¥× …(-.ÎLgZéó)•JåÊ‚NLLdÖsM e׋æ°ùÊþV…ÃáÜg)J¢Ñ(Ñh”_þæ9þäûyðþû®ù„7Þ¾}û¸õÖ[¹õÖ[otS„âš¼cÑ›ÅRÆv7Ó\Y!VÊx4Lt,=Gíh÷ÒÑîå3_øªd: !ÄrdÖÙ8uú áp˜p$2+ÛI«Õ¢Ñh¨¬(Çépâr:ؼiÅÅE7¨ÕKg±˜ÑôXæÜSõ3™L&4 &“qÚV“É„F«Åd2¡ÓjQ­Ð“ÿ É®¥QkP(¹`ÇLZL& 0™L(ém­™Ì½^‡J•þçÒåtæ² –C¡P 7èq(ìXÌ&ôzý²?3_Ù L¶„Ø|ßG¾}]4¸ÀãEºôÅÌŒ …BJ¥¢° •Z…Zumém×ëõènÂɘV«Åb1£Ö¨çý^ë3…BZ­š•µ2õúJs^‡ù´a¹ E®†ÿ»q+•J4 ÚLVã|4 ‹Fƒ^¯Ÿ·¼ÝJŸO …ƒ^Ân'‘Lb4æÌæÊî;ß…´³’É$±Xœ×¼IIq1¥%ŨÕ:»ºèêꦮ¶‡Ã±¬cB!„X®wc,z³XÊØîfš+ !Äõ&A'!„X&ǃ^¯§¨°>ÒOÏÏ,°—\š¨_µŠºÚZêjk¨­©¹ͽfæ<2LF#¦92L&×¾äëµQ«ÕX2åõ’  Lm·6ót™Íj¶­Óé\±öôz sd_\o¹ã]¤ö$wïÜq£›(„B!„BHÐI!V’J¥B§Óát8P(•( 4¤È !Ä™ŒFð¸Q«Õ¸\ gz1ÔIDATxÚí]y\Gÿžl’pð@PÁ*¨Ôz+\jT|4»;óï<ßÝ™ÙÝy8B ƒ%S¦üvìXú­[š4,X|àP6†*¹üó¾}Ûuê´dófk{È‚……€QîŠD³–/?}ø°´¤ÄÚ²`a!pÐèþ°~ý:kûÂ…E1cÆLòwu7iÓ¦:|âèèhm÷XXÏŸåþ|üxÏ=LhóÒåËÆòä‰i]5¡Y¥RùêÕ«üW¯ââfx€M›6Ž7ÞÁÁÇñª*¹i]ga+À8‚ Lià „¦µiZ³<¯iÓ¦5Ú°a}\Ü  0ðc{{{•JeZ§YØÐIfBƒ\.BhZ›æ0kggçîîà­_¿.&&ÇÕ¦õ˜…ÍðíÎ@¢‘›Ûúõëx'''¹\fZYØ0 #Ìpg0­M3™åñù‚0ù½Œ…ÍÃ0hÒËmuÆÔw3™¨1°-¨î&™òL¨éϘøì2“YÀ6$0 ƒÐ w“Ú4ŸY@6¶=°0ùººsožn’ÉÍöÎÀ‚„ÉÐÕýSŸ]Ír¹\Žãwj5°íჇåÐaáýôúã¿¿›Y.—Ûµk7.»{÷niÍ›u®õêµk×lj«W.Ó´‡šn’ 9°bbb.\¸!ôöö...¶··ïÑ£Çܹs4h`1‚¸xñbŸ>}¬M†i`ú©Õ÷¸3Ð]øiÍâ*„ÃÁÚ·¼sçvIII½zõÚ·@ˆ+U*‡£Ï2Í0077vìØÑ¯_¿œœÜÌÌL•JµcÇŽÄÄD©Tºm[ªÅšvfffLLìóçÏÔêÃ#K“ß0ãæ@µ^EoÎÑä¢7«ÆñÓ§OGEEaøqÎÓ§>-[‚8}ú´H$äq¹ú,׌lïÞÈÉ5E•ü?ŸÞ´iSff¦@ ¬²ÈD¥R¹}Ûv€P(ª(/³6ï ‡cò©Õš‘®›­üZéî¤ÉEoã`J…"===**ŠËå~ÔºµZ­Æq<==]©P8ØÛÓX¶Õn’& jW(7ær¹¨.))[¤RiyyY—.]ããÔ«Wïäɓǎý”™™¹zõª´´´¼¼üÈÈ .äóùú²nܸ‘’²E&“=~üØÇÇ'))©M›ÖS§Mϸt иqcÀùóçÞ¼y“˜˜T\\,š5k¶}û6kS7˜~jÑ҂2M.ƒf]\œK%’«W¯¢,Ç»té’BQåêâBïŒÍÏ&á8^PP’’¢V«P].]ºôå—1‡êÞ½GQQQ×®]•JåæÍ›¶lÙŠ^ý={öܤI“¶nÝúü½›?N_áŒ3D"ûŒŒŒ›7o4hÆ ;vìØºuK¿~ýsss_¿~<éܹSqqÉÇÍÉÉIMM¶o×®wŸ¾ÇŽ›«/‹\.;óçŸ|¾]YYÙÓ'òòò\VI^DÊˤ.—WYY¹råÊ/¿˜pêd:dz¡Îguc0©ÃvƽDD™€&—A³ 4èÔ©Ç/]ºÔ­[7 Ã:uꔕ•õ†¶=ÔÜ8¶Úž?ž‘‘1~üøo¦NuoâÞ¦Mªó£G\\\È”¨7ˆ®(<¯¬LêÞ¤‰››Û‹/øv|š,wïÝ[»v­££Stt4€  Ã4C~¯_¿nΜ¹)))GMJJlݦÂfšÀÐzðhÝÇþ‰Æ šö18€4h°îNš\ôf¹\î'Ÿt€CDzzzIIqQQOòIÇ?þ÷;ÍÔ*ê~A`‹„Ba—.?5 Çñ={ör1 @èçë 8þ|y™´L*AåeÒZ—j —ÉdMš4áp0š,3fÌÌÍ}¶oïÞèè!šÙÑÿ*• ùóòÿþïÔÉô5k¾{óæÍ¼yó9Žõ)2ú@ëû£<{hÒÄjFºu²iÐ2½YµW«Õ*•*==½²¢¢aƒ†•ééé*•J­V«Õ836g@çå„ ã0P©RîßÿƒD"9{öìöí;ž¿x1oÞ¼±cÇ* '±“¾, 6¼víÚóçÏG>:3óÚ«W¯ž|”••õäéÓ ^Awïf§¦nÛµk···÷ºuëêׯ¯T*­Í“±P)•………˜~4¨ß@÷£…H$ttt,--­“Mƒ–éÍr¹\'''gggGGGr§½½=ÚÉçóõ™-..æ¬[·v옱<÷ý µ0ìÑ”¨Z­®’ËpçóùB‘=‡ÃQ*•Ur—ËŠìÉ—R”J…J©ì?`À³gÏ_¿~ãjƒ*UäYK™À·³‰ì!ATUU‰ìí9ŽJ¥”UVÚÙ B!ÇÕr™ÌÞÞãb¨ÃŠ\²6IÆ¢²²òÞ½{Ž)¯‰ŽNŽn ææ>3­«f2û׃¿jÞM¶×d•Z{T*•J£g‚ãxeE¹¾ìå‡ôeQ)•ªš£’¾½Þ+• ¥RAnVê¸dC@—U¬éϘøÔ2“Yðïxèf<’’¾ÍËËŒ;6>~z^ÆÀápx<ž‰—K?f`”Y`Ó¯c¼',Z±"Y T*•\ViŽ×âm"‘H,+Š÷7E3ÏYk&³à_ðº®Ëdr™Í<¶$\]]óóóíìì8&šZ48›Ä(³€ýÒ‰úõëWUU½yóF ðx¼÷o6ÙM&·ËÂæ@„———³³ó³gÏdäÍÓôÍ‹…íB­V;::vèÐÁÚŽXw²³?¸1 zà8nCGL {ðÌ‚…ù€^á/ó_™vf…@ hX¿¡—§`f*ÞÆ5†—ù/ù|~ß ¾æ¡ÈP«ÕžŸ¯Y ›AÀZÏ8ÕsÖöŠÎ]J÷˜ìó[9og“¬íNÝPðúõì  åâøÁ}z«T*Ý“Þæ*¥ #`+Ý$`³¤Ût7éÈO?——WÄÏÓ«gñ—µºI€Á¯‘é3Ø ª=·Íô­ÛwЪיYYäÎÀvíþeßëÙÀÔ*é(°åÆ€Àd†iP\RBDBâ·š;ؽ³ž««µ]3 ˜>fèØ¡Ã…?~—ÉdÌtÏ `ÍëŒe˜¿Ÿ<¡»®žíÆBj  A0sB€ •Jem/ÞËò3¦AE… ¯°o<ȸ0½›dë°é×1>Ô3Øì,8ók^Ôcf,´Ÿ@ÛbÖ&€nÁ,ÃL†v7‰ •™@>g`f,j?g°ÍYp›@õU‡e˜Á¨ug¶?‘ÏXh>Agf&jÝ0 #ß”¶¶cÿ*p8•ZeÇ·cf,ÈÔ\œ]Þ”¼quvµägÝÆŸæ8t_7G9NYE™››Àò Sq3e1I–¹phƈpoì!|]ø}Ocª2ŒÙùÂaÆX¦ß4`pÈ_µ65RP¤×S‚‹³K÷&¨dZ†¯ Ih7&»1½sцãU¬8ú‘@1Õ «ÕžžÞͼM%óH «ô¬Þ-Áq­7l†X}Æ:£ 2F<AOrž°R&‡¦X Ë03ÁŠ•X¬X óÁŠ•X¬X óÁŠ•X¬X óÁŠ•X¬X óÁŠ•X¬X óÁŠ•X¬X óÁŠ•X¬X óaKÅØ:Èo Y† òèê%éÕ²ïVD•BÑ/rPaQ‘¾8Žë;´sÏÞS¿ü !|S\<QBè§úß­©jµºNvLP[¬D ™YYA!a……Eu7l,òòòwîÙ‹¾â×…BÑ?r1ncí}€)..Ñ=T\\2?aqا#† ýoê6Êh¾›eÀp±’÷Ñ(¹|5sݪB« mT³ªÿÎкU«õß­rqq6ùy¯òwíÝA³XüC‡+õ°ýÖÞäÜŽ®'ËV®zþâÅœ™3ÞïØµÛÁÞ^3šïl™Œ ¿fÎwX©;ÒÎ_Ì(xýP :e2ÙÂ%K? Œ›:eûÎ݉˒·~¿I3Á«‚{‘ÈÉÉ m,YÚ·/ R&;vüĘџiÇT€µÅJ´Ž:99}òñÇ–!Ÿ²z¶ëjÍTNêzRRRzãÖ­% ãCƒûd2Ù±ãÇÉh¾e û 4sî ï©QrùÊÕ^A= ‚`ˆÐª‚>†¯]¿>oaÂáö={þýX±z̓G›¸7‰›:¥]@@Nnî¶´]=‚ú·nýͤIžž(oúéÓ‡þTôæMS/Ï cÆtïÖuãÆ¼… [6oLIݦRª¶lÞ8gÁBÀ‘£ç~ÿU›íæÞÎÎÎ/óòNÿúµ<¤,šÞšR©Ü½oÿùŒŒââ‘HøQ«V±Æû´h¼Ò­âgïNžþ¥¢²¢}Ûv½ƒzªSöe~À·eËšhúJ$ÒÊÊÊû¼§eÍÐh L@¿°ÐÏFŽèÓ» êd“EEEš$.^¾Ü£[W¡¦Ð„PShÃ;¦¢[Ãä ÆèGRòŠÎ:Λ5K.—›¼²²²röüx…B1{FÜ츸⒒%Ë–¡Œ?§ŸÜœ²5¸oŸ„ó}Zø$$&efe‘׬ߨÖßRl „pâ—_­[½’‚íÐÐÑ#GôÕa[_ÑôÖÒvï9vüÄÀ’/ú:6¶ àõ¼E‹I¯´j‡²:zt÷¾ý½ƒ‚Λçà`¿9e êD¾¥ÏÎÔ-ÜÖDó©@  …ïoj´ K|M„BAý&‚P(ÐzLû>%‰T©T6lÐBÈ¡ H+V‚úªVwZ»wí:zä!ŽãËW­¾u'["•nŠ›ÖÔË àéáqâÔ)´¤Úžýûc&ŒÿlÄpaï ž*•jÏþ;vDv"#>‰–-óõñ´õ÷wuuÑ]ÅLÛ9ÏžQMoM©RMþ*vHTAG,vŠ_¼´´´”²v©Ô^$:xèHÔÀˆ¸©S‚èÔsêÌYwïÝ×åJ(4¯‰æõ›·>‚úKïoX¸›ôèñßSg΢õ_ûëäÕ嫙у‘é"´Q]Žþkêþ€O¥JµbÍÚð™LöãÑ£þmÚ Ëÿ˜ÏG§lÛþOa‘Ÿ¯ÏÓÜg‡›9m*Yi€Ö㸚uÝÃݽm€¿>'µré+šÆZÓ¦^B¡pý¦ï#ô'âúÍ›wïÝdß»ïèè [;!†a£†KÝ‘ÆÁ°¶þþ—¯^Í/xE÷[wî`ŽH$ÒŠ&%ou²¬¹ÓjÏ|}|Ö¬LV(&i jµ:'÷™_Ë–dzF m9€Ö<›vvüäÄ%ÿMݶfÃF¡PðÉÇOЉA GT«ÕÇÓOþtâDw÷™Ó§†‡„¨ÕjÝ¡p+_ßÀví¾ß²Õ^$:´/¥{º¹ìøÔEÓXsrtLNZšº#mí†bgq¿Ð°éS&Oš6ýjæµÐ`ÝÚ¡ÍaCWUUúå×ßÿø³C`àâøÓfÎÖ媤¤„€0!1IsçÝ»(y«“åZaZ·nmÇÎZù¶b” —Ë …uÒʼnDr¹œÜ´··g‚І@ ¸{ÿ.ŸÏ§d˜¬&†ašõÕÜÏçóÑõ-â@úÏçóy<†aHÂM’êòÆáp—Ë…¢7\Œd›ËåêMoËåÚÙÙ!ÚÕjµJ¥ …A¨ÕjÊÚ¡M>ŸÏçóAeÜõESoÆ[&c”}ûCÅJÞA£¤²²Rs“!Bôb%d5q׬¯¾ýšP(º_TSò¦¯ ÐçÒkºYÈ PÖŽ²"”…ꋦ>ÞŒ· X±‹Ë2ÌdÔ3°RfdÅJZ³I¬z€ùÀŠ•0¬X‰…Y±Æ£ösVJÃl`ÅJ˜V¬ÄB Yef,jÝX) 3+a>X±V¬Ä¼YLR„e.¬X ­}V¬ä]‹cÅJŒ…UzVï–°b%ÌtF¬X‰%ÀŠ•0¬X‰…ÀŠ•0¬X‰…ÀŠ•0¬X‰…ÀŠ•0¬X‰…ÀŠ•0¬X‰ÁŠ•0¬X‰eÀŠ•0¬X‰ÁŠ•0¬X‰Y±ÆZ]¬äeµì…mVËv™#—hÅJ-nM˜—áa5k¶ZmîüWù»öî“É«5`4µ$ŒÏ…Ä>œÅbËûo ª?èÌZç\´¸5a^#ƒk1L+µ—2Ò ”Ì’bïS;FÉÁé³ óÖ5¸Öª¯yï ×®_ïÞ¿°¨(nÎÜðQ&Nʾ{ª–½1ªOxÒ›‚‚×ÓgÍ ˆûÕíìl]ƒZ¹2³²z…†¡‚òòóãfÏ ˆ{;;û¯c'>0jÌ1×oÜ$œ8yêóñÂ#"c¾žrùj¦.?L»3<ÉÉ™¿(rè°ÑÃæ-Lx™—§Ë-„P¡TnKÛ9zÜ„ðˆÈAÃGÎ_”ð$'Ö„õÑãÇSgÎúê›i”y5AžsäYam´äöëׯ±{c&æx»¸àõë?Μ}øøïn]ºô ÍÌÊ:wñâðèh€@ ¸yûvb¢¨Ÿ6nÔèUAÁgÎÞ¾“Ü·_Xèµë×Ï]È14ZË V.døÐh©TúÇ™³·îd‡÷  ¾výƞ͸|yHTdXH߬7Î_Ì1l(àøÉSÿÝš=xPEEÅŽ]»[ùùy4ib¦«—Ë}õú€ÀL ¿d2Ù×Óâ¾?¾{×.ײ²Î]¸¡Å-`[ÚÎã'Ò‡:dp[ÿ6W2¯ýúûïã£íÿÝ!0pPdD#77ݼš@Á=Ä^$ˆœ:wêèåéiõ¯;PŒ^¼6ï7ÐÈf÷®]j´$ˆå«VK¥R±XìÛÒÐ6ÀßÕÅ…ìBD Œ@)!„ËV®B)5 Ræ"5|Ø€~áB5Ž'¯úná¼¹á¡!ä¦D*u°·ß³ÿ‡Ø ãG½•ùPïÙÿC玟˜‰hH+Vbä>{&‘H6­ý®ZˆÄÓãÄÉSJ¥R‹[€J©úzbìAQÈóñ ÚŒŒøt0)‰¢“W—’''§Û·gN¿j~öi¾‰?dSKKBãBô$Z‘[7¥““#™RÓ e.Òù¶þ(»³X¬»‰ãøó/¤Ri»¶mßÊ|tîøÝº 8Ž›é*iÅJ¬OÏ!’AíÛ¶má]#DR›[ÀŒi”â#Õ'q`{ I¼º$ 0„-÷€e{«%¡3Ò*—&¥–÷šûÉ߆if×Ú„–—#™éZe2™ƒƒƒ¹ˆ†ÌZDL,vÚ¼nÍ®½û“’W"!’¯ccš5mªËíõ›7>òàáC''§¦^^ö5â#ììì´jD_Gæ0 ë˜åÄJtµ$ô5š”ZÞS6ÝýZ›õë×È|¸iË|˜©úб BØÜÛ;9 ‘ü•¶k÷Â%‰ûvîÐ"­T"‰OXúV|äz-ñÝèØpc°ŒX‰&š×{­ßô)µ’Qæ¢ÏŽ67jä,K¤?ß–èïáãÇœ9ƒî!æc€Q³IOsrFþgl‰ÿ°èÁÿÊår-Òòòó•*Õ°!â#w²ÕµL“aèXÈ=󾨩:‹hõÑ3¯e5iâÞ. €&¥¦Aƒ¹(³“ÿr8œ1ŸNIÝþÏ?…~¾-srŸª‘ù0ßUê+± мVµ‰\~èÈ‘ !’Ûf^^hh1p@‚€¤øÈÝ{÷µ¢£•W—Íôeee?}Ú¾m[´^¼ÕA:f‰4å9Z-{±5É^Ù æ¢o B$óñó‰ôŸN¤7qwŸ9mjxhˆ¹'=5€ì–'.ýojê[!’Ø݈8"ñ‘íik6lr‹û‡‡M›2yò´¸+™×Âj‹èÆE«D­püýô颥IûvîhP¿¾µÉ¨óŠ•h‰GhnjÉ^Ф¬å®ž\ô¢º< ¤Ì‡™@/Vb-)Db¤øˆn\´Š»†%Hšñ”hÌ ‰•h‰Ghmj²FŸR”¹èE+è5,Ì z±kÁH!#ÅG(óê’@2ðJ4æfý`_á6/±,ÀٳIc&Í‚ÿËY± *˜É@­Ù$V=À|`ÅJÏþöKEE3`ÅJ,ÈŠ• R©5HÐBíç Lšÿ—+a>X± d•e˜±¨ug`¥4ÌV¬„ù`ÅJX±óf1I–¹p°b%´öY±’w-Ž+1Vé!X½[Š•0ÓM°b%–+VÂ|°b%+VÂ|°b%+VÂ|°b%+VÂ|°b%+VÂ|°b%+VÂ|°b%–+VÂ|°b%+VÂ|°b%dÅJhu±“©`—LSXh5Ÿíˆ•haçž½§~ùµ®¹´Ø¶.ùFÔˆ•ØöASã}Ò˜ Õ¬ÚæáòÕ«kW®¬«ÏZl[‘|#AÆ0A¬ä=k MIcnmŽáWö"{±Ø©®>k±m]òëä3°¢Œ‰§N}>þ‹ðQ1_O¾|å*Ô³˜1g^¿È¨ 'eß«–8!b÷¾ýCGî57~Qaa ê~hÊa F­ÚIaÔò’$t™'qéÊÕ^A=‚xŠdM¢‡ Œ:oᢗ/ótíа­µÉL™’jW­Þ~N?¹9ekpß> æû´ðIHLÊÌÊB=ì¤ä;uœ7k–\.ÿ6y%JèèÑÝûö÷ Z8ožƒƒýæ”-”'úG~­Ö­^éâìLÖÓZD—6JæÉ£—¯ôèÖ­²²röüx…B1{FÜ츸⒒%˖隢g[sS+%C@Þ"¬ù ´Z­Þ³Ì„ñŸ½•QíÙ`ÂØÿºwíZ#q‚/_µZ"•Ú‹D‰7u A½ƒzN9ëî½ûºÎ;99’rèêd• FŠ•ýÌwîØ ‘H”JEà îýõ—D*Ý7­ZÖÄÃãÄ©S*•JëuC¶µ65SZ›ƒ· ±æúù‹RiYû¶o¥C:uünýô…¤–Ä Žã¯ ÊÊËÃC‚É—|‚ƒ)ƒæ&úiÝÆÀ´4 ó†]ɼֳ{w‚ ¼<4±-¶­K¾‘ø€ÄJ¬«”?0±-¶.S‚Pû9ÃfÁÿM`ÅJ˜V¬ÄB Yef,jÝX) 3+a>X±V¬Ä¼YLR„e.¬X ­}V¬ä]‹cÅJŒ…§ù­V¬„™Îh‚+±X±æƒ+±X±æƒ+±X±æƒ+±X±æƒ+±X±æƒ+± X±æƒ+± X±æƒ+± X±æƒ+± Í.Iÿá)V¢T*=6>ö«ðQQC‡O1ëòÕLò¨I¤(òòòwîÙ‹>ײß?j0ú]+WPH˜A¥«Ô]¬„žszÐ kø$ÿz…†>rõÚõeeåïV;dpé²å”ûß34:FŠ•,ùvÙ­;Ù#†F·òó“Éd—®\¿(aêäIÆ &’¢È{•¿kᄄˆ¡P¨uÙ¯¬¬¼’y­WÏš‡Îœ?_«e3Õ¬ÖñÎ@Ïù;“Iò¹da¼‹‹3@©PþýôéÁÃG$Ré²¥‹ß¡‚Èà™sçCƒûvïÚUk?x¿ÐXF脌 +ù¿—//]¹šœ”Ø«g‚ 8Nÿð°ß­Ù»ÿ@ô A(ÀÀtCC]#hŸ¯ï™sç‚zt×7>|`Ô á#æ-Jxš“ƒéÊphIi Íâ’]Ÿ!­Ò‡.Œ_^Ò çô¥ÓIòI@¯Z­vrtDãG}\QV_Óàì¸éååå)Û¶kí§çóe^ÞôÙsÂF‹‰½“}÷¯c'O ‹ˆóEÌõ7I#ÏÿïÅÔ™³Â""?;þdm9Jh¼¥‡ÆÐ²E ±Ø))yEÆåËUUUh§_Ë–sgΰ³³#M,_µº[—ÎófͬªªúvEµªÈ‘c?mÛ¹«Oï^ ñ |[¶üvÅÊ·nAXÝ{^³~c[ÿI±1‰_~HLX´nõJJ»vé‚q8—.“;Ïœ;ßÜ»™w³fèt7Òvï9vüÄÀ’/ú:6¶ àõ¼E‹!„”2äë¾Õgpͦ®ÏôJZþÓ0ünœÓ”NO&ò§J^%“Éd2™D*½uûÎî}û#ôçñxú¸Ò­¾–Á† LŒùòô¯¿Ýº}§VÅ9€†Ï„Äo{vï6ö,…B¹8éÛ%Ë–õ [0g¶J¥Jþn i$qYr›>JX0ßÏ·åÚ ¯Ô Ÿô‘@ï-MŒý7ÐB¡píª•6¿8iÇóõñ ðïØþ“?Fk£Æ50©Š@—­\%‘Jìí8txxôÉc!„}z•”–ì;ðc‡À@”%2âÓ!Q‘hm)_@[WW­e¶Pb;;~ÏÝÏœ?ŒöŸ»p±x €J¥¢ÑÝPªT“¿Š…ºb±Sü⥥¥¥y¯^QÊphÞ—ß mÔöY©TÒ”H} 6úhƒœÓëŒÐIÖhÌ—1š;Ý7žüÕD¡>®tC¦e ˆ!ƒ¢Îœ;¿fãÆ´-)€”¯¢ásÔðaú…CÕjuòêïNžBnJ¥e(YXhr¯wPÏ)q3öÿøc×.iH ñö½ºIBŸæÍ·nÞtüÈ¡Eóç¶òó½–•µ aÉØ˜Ø§9¹dp‘ªˆZ­vrr5ª"R©´O¯^h¿R© îÝ»¦íÚ¡n„'NàhS·ÑBƒûô¾uûŽD"þýäi^~~Ÿ^Aèèóçou7ÊË+¤Ò².:>ÍÉAÖfLýfpd¤R©,**ºyëö¯¿ÿ $e82._)++C2<>Ôšó!cYËgM¥Ý)/Û ÓÃÙY h௹©ÆÕ(YHŸ>h¿J¥  ÉÉ}F- 4Þ¸9XD õ,zõìÙ§W/ Þæä$._±|Õê´­)h½4]U‘’’R€““#iÓÅŹªªª¢¢eìÞG3Nª9Ô±C‘Ht>##*"âüÅ‹­üü7j”——(+/úu7nܼuàðáŠÄ^žžöÈ ¥ é?·êˆÖö™^éƒâªSG±zÎ ”N?è„àÓ¢¹î¯ëÖ2™lïfN›š}÷%W!Ó „нqãqcþ³s÷žÞAA€JÃJ‹OÆÑ®Œ ÂÈaCÏ]¸¸v㦘 ãÐî&éãSßfÍ™S¢¡MS,‰hH0†Êún’Oóæ<OK&ÇñûýÕ ~}¡P¨O™¢‘››ØÉéüÅ òȹ ZùùA¡^A£g¡q¨oï^=xxîÂÅ¢¢Þ={Git7òòò•Jå°èÁ|O.—WUUÝÎÎF)e8J%@"‘¢Â¯]¿^CU-iJÔw 6¾›ds¥Ó‹ƒP}š“ë,—–Jôqed€ „AÌ›5ãe^ÞÐêùÔ» àü… ÒøÿΜ hÓš :ÞIµ ºõ„BaÌøq)Û¶uëÚÅÕÅ¥¢¢òæíÛç.\\4.™…RUdôÈ©i;9ÎG~~W®ffß½GÎohf!)»šuÝÃݽm€¿v“­Ià߯ÕÕõû­©èiŠ«_w£iS/¡P¸~Ó÷úqýæÍ»÷î²ïÝïÒ¹“® ‡oK.—ûýÖ­C¢"ÿzð('7W“ÒgzÊ«fÐôœÓ—NC&Éç»÷f$„ ÷YîÁÃG>5’†+GG­QíñnÖlä°¡4õò4†Oò_ÝM‡s>#ãb­|}/dd<|ôxÚÕô$èºdÌ+FÔ¢Eó£?ß¹{oEe¥££c›Ö­Y™ÜÖß_­VÓ(S 2Xãé§O§Ÿ:íéá±tQ¼ëÖäøF³¸V¾¾íÚ}¿e«½HthÿÞÚÔjä}{;~¢oï^¨ÿ@¥ÔÝ@3èÉIKSw¤­Ý°Qì,î6}ÊäIÓ¦_ͼÔ£»® ‡““ãÜ™3Òöì]³~c§ŽŸÌ9sJÜ ÒSMŸõ•¨nãŸ@䜾t2IÆV¯[OzÕÈÍíóQ#ÑœŒ>®BC‚žË¥.38Žù|tÆå+yùùõ\]áSÿ&àp8«“—­Ý°)ýÔéÆ-Ž_ð‘Ÿо>t]2†ÅJH¹ Q´Ä>êt£*‚$¤†®\‡Ã\.BHŽCÈ¢5ÛÙÙñù|¥R‰\Õ2 š¥áÊÈ@7#¹ ŸúÎ"2™¾ ñ'˜A¶Ñönó‚ìû² 3µÇ ˜”†%k^Ôcf,jÍ&}8ê–LJ&Vb‹ø€ÄJ¬ ø‰•Ø"j?g`¥4ÌV¬„ù`ÅJ,’U–aÆ¢Ö•Ò0X±æƒ+aÅJÌ›Å$EXæÂÁŠ•ÐÚgÅJÞµ8V¬ÄXX¥‡`õn +VÂLg4AÆèÿÍf£KÙ~%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/PolyphonyPalette.png0000644000000000000000000000013213135434036020754 xustar0030 mtime=1500919838.099981806 30 atime=1500919915.639981806 30 ctime=1500919913.363315139 denemo-2.2.0/docs/images/PolyphonyPalette.png0000644000175000017500000006315513135434036022637 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRß³G#šgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>e=IDATxÚí]w\ÔHžl§DÀNG;]ÐSÁÞ={÷,§ž½×³œí<{/go(úYi*ÍôÑ;ŠJGÚî&™ïÁ°l ,°ºyŽŸ·™¼óÎ3Ï;™L&“ƒ 0` fàHmoÛ¶µ¾)1`À€Fã×_ç0jì¼sç—¶mÝtuuë› €)ï/_¹ÒµKú|ððáØ1c’’’TKU…nE"QzzzZzzÙØyçΣGÑÑÑ&¢´´Dµ¼0`À z`aI’ªtÈbAUëSµn9N“&MÌÌÌÊzgWmmm±X¬ZÆ 0`P ^O…Ùl6„På÷ÛTî–ÇãqÛ¶m0a"Aથˀ5‹ÅÒ´±3…²±³žž^II±jé2`À€A Áb±ÈZ;«Ög-¹-ëI’d–Ö1`À@ÝÀb± J¤eSª;׆۲ޙéš0` †`±X$©ÊÞéÛ„Š{¼ÚpËôÎ 0P_°X,kaì¬RŸµä¶¼wf:h ¨T~W°l‚¸vf6jå® Ó53`À@ ¡ò»‚eSªîñ*uËf³ATšHêIÀtÐ *âÓ§O{÷î;söì›Ä×ÕÈþ_jêžÝ{.\¼øÏÛ7õ]ß+êþ® @wE»îܾU=·l6»cÇNl6+!!!7'%·iÓ† ȨGåvÐ3ª””z ˆ=~úðá„°y󿥥¥|>¿[·n¿ü2æÁý¡Ã†ÿ÷ß]½Â¯U-tذáÕÎ΀¨u5;Ó iÝb1„ÃXÎÎ.ÏŸ?ËÉÉ166vvv@HˆÄb Ãds}ëU}“ZÍfß¹s»{÷ÉÉÉQQQA;vlñâÅŸ?Þ¾}›¢Sshè}”¥z…FFFÔ$; ÆÎ,å–¾I½½–ˆ&½[œ BBB‚‚‚X,–‹‹kò»w-[µ$¢¥%à°Ù²¹$æ™Ñóªé” 4ð-["""ø|~iII¥Yª×AA«V­¤¦¦òx|šÑ@¡cÇŽÝüüV¯ZHKKãñøŠÔ¿ªÌ_­ý•õÎ*]ê±T×= àÂÅ‹6lÀ0–ìÙBxààÁÂÂÂÅ‹ÓßÉP²D)TJ€Á‹…n£É…Üï ¶lÑ’Æ!äVÕg¥žéÝ’$yô耾¾>ºˆ466ÎËÏ;|øÀÒÂ’M·¢Ž„üÀ7nÜÇ}ûö;vŒ··7µ«³óÉ“'ÿüóÏ >}Y,–±±ñŋ۴i3þüÔÔTÀرc7nüÏç÷êÝëzHÈ€D"‘TïÛ³gÏììl-[¶Œ1¢´´tÛöíiii€ñãÇoÝúÇœ9s©©©6løå—érK\½z5Ê2qâÄ-[6£,ÿý÷ßúõëgÌø@C€Á4vÆ0…}“Üuoô@Ä4½s5|*㶉U€¤Aà ¥+TB¸mÛÖQ?âpØ€Á ]]‡ Àq\(,Å+~¨ŒÃáðZè™%ÉÒ’R‚Àµ´´y|> ´´T(,½rùJ|BÂüñµ Ÿ÷ø©gJJʧOŸÇ0„P$,‰D@‹/ÄbqqQ¡¶¶—Ç …ÂÒÒ¹%Jd•e ¸¨H,]¹rU–ƒEEE/^¼ é«]=]S“÷ïSTKµ6ÜJ¼g0½óŽ¢ÂBš½8Žã2Ï[—”£æôíׯKç.¡aaçÏ‹Dr{ÆÂ¯ÒÙKKK$?"\\\Š‹èKT”E ~<°X,¹WýÕÆ·)wwµá–yÏ¥`cc|íÚ¦MÍ™~¥ZËš5kÐìǨQ£-ZdnÞ¨Ž 0øa‡ÃQqï\Ù„ú¸-›Ù1|8ÇS-]?´ut8nIq‘Ô·Ûµ´µùü²é‹’â"•¿9·R ~`$'' …šû¡ ÐÒÒÑÖÎÎÎV-ÏÚp˼ߙ²(.*’›^R\\R\Ÿ VD€Á ##£´´4‡©hQY¥k6ÔÇ-óm ¨/4hPZZš••Åçó9NÍûèïhf£ÌŸÏ¯™ 0P=H’´²²200HII)®“K4õŠO 0` Zà8®««Û¶mÛú&R×`æ0` î B edÀ€uDÙØ™„à¿´ÿ2³3U»x¥ªàóù& L¬,­€zðQ0Êh˜ˆk2PôËÖ;{ûúp¹\[k[•ßʬp“ôãuà£>`”Ñ40×d è—õέ}½|Ñ;ë‘z䣘GB¡Pø¨e4 LÄ5(úeóÎ8³Ùìz?I’$$Õ‡ú€QFÓÀD\“¢_~­¤&¤P«ÍÕ„ú€QFÓÀD\“aX…™,uh˜ÄGZÔú€QFÓÀD\“Áo½3†aêp~Æ0 0uá£>`”Ñ40×d è«ßÌÄ0€©õ£Œ¦‰¸&ƒß>: ª÷?ÕeMS>ŠûøÉŽ]Õe‰ß‹2 T&âš }µ;«-I¼NL~ìåß=3+KnzNnnU3j8ª6vîÚ¹³––VXx¤sëÖ’éáØX[[Z4®y3B¾‹ñB=Ì;×™2=ŠŽñìÚErϽаzP€KŠ‹Kž>~èÈÑW¯_¯Y±¼ÒÜiiéGOœ êÕK (J©*™:¨þwt,Èe®|ºÍ¶Í ôõ¿¯jÖ**Ì;+Ó8ŽG—Îá‘‘¿LŒÞÓÈÏÏOxñròøq*y¢¡$Ÿz—¯Ž‹«;e ØX[ß óèÒYrOhx¸µõ?IIu mœœ6l€<»véܱ㼅‹îÜ»ßÍ×Gy +MQ’LTÿ;:di+ŸÐÓÓkëâB’äwTÍÚFyï 0e[[7ŸÛwïÅ'¼pqnƒREÇ$éåé¡Je•æSgxüôYLlìô)“A}Ì;×±2È7_ŸƒGŽkki¡ôÿþû>åôɓþIJ‚B¯…Ü8wñRfVV+Ë1?ìܱ# öñ“…K—íÙ¹}÷¾"±xÏÎíç/]¾xùJ~~¾[Û¶û÷3á…Ó§ŒŒr=ÈåCåÈ ÂÍÕ¥sÇŽ!7ÿççãÏœ¿põÚõ윋Æ1Ì×Ë ¥ÿ¶x  ÿÐa€ûÿ»!7…† „ðø©¿¯ß¸YXXèܦµg×®Tý&â*u\H±¥Òcââ.]~öäñ ›·¼N|cѸñì_¦·vr¤ÒM6LNI9pèHâÛ7G{ûéS&YZX ?gÎ_¸zýzNNncsóQ#†ûxyb?–ë“&Ë÷‚oO£|;?W Wg}=½Ðˆ*%òÑ#{[[SI³ØÇ}{ôÌÎÉQÒ­$ªÄ§VA’äÛ’NŸ;¿~Ó–m;ÿ¼xåê‚%ËvïÛÿ>%…j…u‰ºS@@§Xùð!•|/4¼YӦ͛6EÕ¿|íÏ={}½½–-ZزE‹å«ÖDÇÆBÑó[¶ïtrrœ2qüµ7÷8èíé¹tÑíu7S­"rùH¥áÞÎ-ñí[4æ:éòÃG¼==–/^dݪÕÚ Ÿ<}†,'X¹tÉW”BÃäì…‹ÇNžòôèºdá]{öÖYôÕçXPž0M:ZаfÃÆîî çÍ).)^½a•(**š·p±P$œ;kÖ¼Ù³²³³W®]‡<”Å×ÃcÙ¢Ö­Z®Ùðûã§Oi|Òdù^P>vV¶;g±|¼<Ã<œ9m*‹Å*))}òôÙø1£aų%’¬ú9Õ÷ãQb±øú›—ƒƒÓÒ3$Óãž<‰{ò¤>™Õ¡2<·k—Î÷ÃÂüüPJXDDÿ²7[âø±S§&Œ3lð ¡—GW±?~êtwwdØ«g¿ @±X¼nã¦ýúNŸ2 Bèåá1gþ‚ììle‹ú£üInå{t_ï¼¼¼gññ˜¸X‘HäíáAí-..).. E€ÒÒR´Y\\¢¼ÿªòQ9R>|?eꮽû¤ºæ ±XuO¬•¡¯·×ÓgÏóòò „ÿ$½KMKóöô@{?|ø˜Ÿ_àÜÚ© àëׯ…ùùÜÛ½KN&¸´i#‹ÓÒ3²²²}<=Åb1Žã"‘ÈÛÓ9ÿð‘Æƒ|>rRÀHÏÈÈÏÏ÷–(Å×Ë‹š'H|›‘›BÃ$=#£àë×?_‘H„ã¸X,ö÷õu9v®×c¡„éÓíÛ¹¡0éëëp‚  ,-,ÁÖF>|XPPТY³y³gq8œŒOŸòóó½½*Ä÷­ÄÍYŸôY¾ Tí® ‚ƒIÆá\<Šv°·kÐÀ˜Ê8` e9rìxê÷kÊž2`Õø¨………ó/¥Yýƒ`gkSôêL™oGK»¶mµ´´Â"#ƒzõ ‹ˆ°µ±idf–šš(øú0uæl©¬ÅÅÅ(;ŸÏƒ¢a²¾¾Å­»€~-,TäAGGG.©ŠÉÌðùZZZh}›žž®d)¥¥¥………:::r²WL¡a’——000 ò‚:¹+@= Õ¤¬€-•¨«« %îÜPéB}}½?·n9rüäêõ¿áêâi²|bBêi”ªÞyðõòÊ/(8tìxIi©G×.’»l¬[ÙX·²²²´lÑmÚX·RÞy5ø¨Ö­Z*’ŒËåöìÞýÈþ½M›4©{nu§ŒÄª1/ÏW¯CÃ#¾dfz¡X0355Ð×ÏË˳iÕ ý½yóööÝ{,K2{£Ffúú¡áå·‘#"¢½tó¡ðôÙóGÑ1={BÍLMõõôÂ""©½¡áá¶6Öè •“½b Sƒ{¡¡TÖûaá²dj+ßÕ]ÁæM›òx¼{aá’‰Aܾ{¯i“&ÚÚÚ°â™Ê\Ó¼KN2rTnn.AmœöïûùË—’’’Fffúzza­H2¾r}Ògù.PÍ'¹[4ofiaq-䆓ƒƒ‘¡¡dF´æ °¢| ”ògŒjðQ!Œ ìß|=äQttzFFqq‰@ 0iØÅb¿OyéÌß:::b±¸ªõª9êR™oM@ŒŒŒví݇~P¥³Y¬ŸG ß½ÿÀç/™6Ö-ß½O9wá"º¤ÌŽaØÈáÃvïÛÏÂ0{;»èظ´ôt€¥Øƒ\>Ï^ YÅÒRá‹W¯nüï–—g×΂`±XÇ Þwè0†av66¢¢ã^lÝô;ÊˆÖæGÅÆY˜›£µVR)4LX,ÖÐA÷<„±X­FE¥e¤ƒ:;WO£hkkO;f÷¾ýÿþûoÇöíõôô2³²î‡…%¿Où}íjª'•ìC¥6-[à8¾aË~~Å%%gÏŸwrp@WcÆ Þè0ÆbÙÙX?Dñý¶ÞF®O Ãe©o”Byï ”žy@ IÒÏÇûØÉS*^æL©ŒÕÛÓ«Bm-­‘ÆŽ9Ã0êØ8ñ÷é÷)ïy<žH$ª/bõ¢ „ÐÇËóâå+¾^^RE÷ ìMÄå«Á—®^mln>wÖÌ€n~²OW÷ ì- /]¹zóö?o¯qcF­û}—ËUÞ¦­ÛЇcÑØ|Ò¸±ýúQÆû÷à "8$$øzˆ¥…ÅÊ¥KœÐIÔÎÆÆ¥M›]{öjki;uBn “Aýû …Âk!7nݹÛÖÅeÅâÅ3æÌ­åë÷X¨á}ûXYZž¿xiÿá#ÅÅņmZ·ž?çW+KKe4|>oݪ•íÛ·eû€ïæê:uÒD´kPÿ~A\ ¹Q_GzŸÕÈ¢>€bÂmÛ¶º¹·s°s¨R¿Ãår¹\.º‘-»—Ífóùü’’’ª6,>Ÿÿ2žÃæT• Ey—üþyB‡ÿfeg‰D"]]+K‹œÜÜðÈ7¯^®{Ju¯ŒTøx<‡Ã¡b-¹—Ëår8tC7Çe³'%'[6¶066Â0 Çñ+×®ïÝ øâyT–\rùH… ­ L”t%‰¨ãÃ0>ŸÆËÅÅÅrSè™P»‚‹Å m[#®B°Ùl.—‹´…’$)‹ÑÅ´Tà6Y,•Îb±x<šÝ"IR$Q:˯"ŸhSQ“Pðùüê¿}_$Ñ´Ç•|C`Å)Áº”Çñÿ»’žñIj×ã§OËéÕêR©ð …B¡P(w¯Üf •}æ-;u?zÚŒ‰³¶¶¦ª@ßä:TE® „R/<’M¡g"µ«¨¨¨¶¤¯H²¾Ž…š€&XR»¨M´ä%¡èíTÊ46©MeZ—z¢úóεʩ^ø|ü÷ßµ¿o”í—%Î皦LÍØ«ç‘ã't´µ-7~úüyìãÇóçþú}U¡^ðýFœAÍQaÞYM^ABq¨K>EEEKV¬ÊÍË£7³µ±®÷Þ¹Ž•Q úróYÙÙ¦&&“'Œ÷õòªÞ¥•Fáû8ƒšCMÇÎè~k]òy•˜Xi×l``0kú´úíë^•ÇñÁú2˜Åb¡kØïôb³ŽñýFœAÍ¥¾\¥>¨c>6ÖÖ†††y :h.—ëçí=nÌ(mm•¼%õ;RFUø~§ÿêßiÄÔåcg5¹zBÝ_ó1Ð×?°{×õ7£bb2>}¢Ö87oÖÌÕÅÙ£s'¡PX¿7|ëEõ&âš ’$«¿f£–@q¨K>B>7tÐÀ‘ƲX,êZ=Mƒãxõ>qô(àÁD\“«ñöý:àT/| „RëÆÔ õ¥ ƒúqMF…»‚jrõÄ\Í)£Œ¦‰¸&ƒ™ÙøžÀ(£i`"®É€Ô;ê0`À€Z¡lìÌb±Ð‚„ú=Ec&ÆÅ<.OMø¨e4 LÄ5(úe½³¡aVN–‘zwI¥PôŽGzûJ›†a…¦¦¦€*ñ©*¥QóÃ@ÒƒJªºQF%¨a}ëñÝ„êC|WßmÐiŠ®÷qjAaAYïlÞÈBøéË'šçk©O¸Ò|ÑUr—"3Œú”}ÑRÒÆÐÀ°±yc4ÑFϧÒêѧ(ùEZz?Š~+ôö­ÖÒ`rl¤ *ej®¤’Õÿæo]Ñ4E•SÂ*†JNbEk:•q©¯ˆ+#T½RouwPÕÐD¿¬wÆqÜÒ²YÓfÊTCù³J5Î?A ‡Ê”çS{dêÝsÝ(£þu×’²PψƒïGÏï…§\QÖ;“$™”œ”™Y¿ ~ù|¾I+K+:ðQ0Êh˜ˆk2PôËÞ¾ïíëÃårm­m9NÍ]W8Ž¿Izƒ‹q€:ðQ0Êh˜ˆk2PôËzg‡Ö޾^¾ècõÈ Ý÷xóH(ªõ£Œ¦‰¸&E¿ì.0Nàl6»ÞÃO’$ Iõá£>`”Ñ40×d è«Ý³‚Ô­5á£>`”Ñ40×d`Va&KZËoL«õ£Œ¦‰¸&ƒ˜z}Ã0 ÀÔ…ú€QFÓÀD\“¢¯~3C ¶Õ„ú€QFÓÀD\“A¬ì® š,t§^h«&|”Dìã';výU«E|§Ê0¨6˜ˆk2PôÕn쬶|hð:1ñÜÅK3§O«›â¾#e¨LÄ5ê5ï ÐIªŸª1¯mÿß§2 ª&âš éor×{ @q@5áS%Ô*ÛïZÕqMоzË8|oã%ߪÊ0¨6˜ˆk2PÄY’Û•æ¹æåßýyB‚Tú¥+W½ü»§¦¥£M‘X|àð‘‘cÇôúyÜ„³ç/ ×‡W•_}K¤¦¨¡2±q½ü»gffÉMÏÉÉ­ïúÕ´jÔ_·Ÿzž0ñô¹óJ¾{3-=ýÈñ’ß_—M©*•è©ÎÇœù ½ü»ï?tXãšèY H§¨å«-ª6vîÚ¹³––VXx¤sëÖ’éáØX[[Z4F¶íØñðÑè‘#,-¿~óöÀ‘£¹yy“'ŒW†òð=ŽêbÞY%Ê`Vžþ€KŠ‹Kž>~èÈÑW¯_¯Y±¼ÒÜiiéGOœ êÕK (J©*P=ÕÿXÈÉÉ}¯­­1qÜØJík¤gÕ!Uœ­Í¶Í ÔSL)T˜wV¦p8.Ã##™:™úRC~~~‹—“ÇC¯È/(¸yû΢ù¿õðï!ìÚ¹³€Ï?uúÌÄqc•|y4„PI>j…:èU£ DÿÈ8å¥Ô¶Vµ¦´qrjذJðìÚ¥sÇŽó.ºsï~7_eÝTñÓ?4dj¢§ú ¡,ë—)“7mÝ–øæ­­òU«Kž¨8==½¶..ßËÎ%f6°²¦P)ºùøä俯'¼ REÇ$éåé6?þ¢¯§çho‡ã8Ab±ØÒ¢¸¤¤¸¸XÿUåS«ˆ{òtמ½JÒ®m2*TF[0&î±O÷Ÿ¾dfþ:AÀ>ã&OIxñBÖ™ý—š6{Þüî}ÆLœôÞ§ûOÙ994äV b±ØÍÕ¥sÇŽ!7ÿGÙœ>w~èÏ£ý{Ž™8ù^X•þÛâ%€þC‡ùtÿIQ ’$ž89p؈},YúùËðí,Xï¯%Ü ëØ¾}7_- 4<%RíGrÅQ®žrá|ë …û>fl÷À>} Y¸tù»äd¹á‹ŽóòïN»ríÚˆ1ãºö?yêý°ðúÖR |fCé󳫋³¾ž^hD„s›²ÉÈGìmmMMLPvëV!W.‰D"´I’ä•k×l¬­µ´´”ñlÔd¼ðæíÛ‹W®N›<‰â–ô.ùéóç)>feg‰D"m¦M¬²sr@ÍlÔXÊ{g¹éè g͆ß;wìÔ«×þC‡WoØxîäq)?Èlùê5={tïØ{ÿ¡ÃËW¯åóyC 462Þèð†-\øû$àêµë»÷6xµõƒG–¯Z³vÕŠîîÈÖí;Û»·kßÎíÚ›{Ô¿k'‡ˆ×mÜLU\‘eªF„{;·=û$‰aØ…ËW>2x@G‡ˆ×nØh §ßÖÕ0iü¸ý‡¯\ºDOOyM¡aröÂÅc'Oõëäêì¾kÏ^Pã±³J"^KøôéóëÄÄÕË—±ÙìÎ:†FDL?ÃÊ¯ËøKlÊê©(Ê·®CÇŽ_½v}ôÈ-[4ÏÍÍ;}îüÂe+Ps•*N’ÉÕk×ÿܳwð€þmZ;=ŠŠYûûFCç6õ-j9 5³QéG®(°X,/ÏðgN›Êb±JJJŸ<}6~Ìhªõ$I}Ä$É-Ûv¼yûv÷ÎU£¦GQ M,_¿qórppZz†”MÜ“'uË©ŽÊéܱ㈡C „A¬Û¸)¿ À@__Ölè ?u€â8¾~Óæ™Óætó£6 ¾jkk;ujÂØ1Âzyt‹ñã§NS}k`¯žý‚Åbñº›ôë;}Ê$¡—‡Çœù ²³³8ŽÓ{¨  …¢âbŸÿ÷Ùsƒú÷›6y„ÐÛÓ#'7çÄé3¨w¶nÙÐÆÉÉÈÈMÓI¥Ð0‹ÅgÎêÝë׿$éåÑuÆœ¹ /^~G¯*B#"tut:¶wøxyÞ {õúµ“£#MY=i”h]úúzb±xÚä‰ý‚‚ÐÙ×À@ñò•yyy†††²E âø©¿û÷íƒÊõèÒ%åÇ»¡¡jÕ;ƒê­¨óõñ¾z=äY||[—˜¸X‘Häíá!7ï_{÷=ˆŠúkûö¦VVJ¾ ªÓD åÇkÖÊöË’`±Xu4v®±2PÁ|¨D:´oç&‹úúz‚ „%%¥Römœœ™> “£ä&Nà>~ÌÏ/pníTPðeìàÞnó¶íA .mÚˆÅâ´ôŒ¬¬lOO”àíéùøé3!©ÏTCÚ©^ €ôŒŒüü|o‰R|½¼víÝ˦DHðmbí•J¡a’ž‘Qðõk€Ÿ/ú Àß×7áÅKŒÕãXÅý°°Î: …"€“ƒ£@ ˆttpЂ䦔ž4áP²uAñ „P$åææþ—švóÖ)¯8ŠIʇyùù>^åånݼÇqµVõ® ‚ƒIÆá\<Šv°·kÐÀX6oZzú•k×W-[Ò´‰UÕVÔAõºš›¿xiNn%ë¢ìlmê‚­J”òg6¨tôCWW·ìè"Ëí ¤Ì_³€±0I3ìÛYŠÊõµ°0uæl)ÅÅŨ >Ÿ!DÃd}}=ŠZwAïAGGG™ª}ÉÌðùZZZh}›žž®d)¥¥¥………:::r²WL¡a’——000 ò‚šÍl¨,âµ€ÿ}Ÿòá}ʇÛwïQ‰L›4QZFÉÍŠ»hÂ,+m]ÂÇOžþ}îÜëÄD}=}+KKmEÅQ›_ ¿ ôõ©rÙ,‡ÏW7‘Ëg6ªÔ|¼½nݾ3y¸˜ØØ±£~–;.ÎÈøp°³«R× !D—rêÓ"+íš æÌœQcgU(Ããó……… Œ%ÓQ×ÃãrѦԭmTè_;¶•Û|•%#»‰JY¾x‘™™©dq|>_2‹‘¡! ;'ÇÌÔTRvzruÕçÉÓ§öBcc#ä™*%;'—ÏçëèèPYä]U”¥Ð0Až³²²Ë=gçÔ0Xjx,P‹ˆàóù[6¬g±Ë._^¾zµgÿÁçñ R¢åHUúM¹±ÝÌÉÍ]´|E€ŸßêåËôtu!„1±qá‘äGm602äææQå¦gd|µ³µ©o]Ë©5ÔùYIøzyå:v¼¤´Ô£k¹6.Îm.=æã«„jð©= )Èår{vï~dÿÞ¦MšÔ ™š+Ó¼Y3.—{/4L2‘$ÉÛwï5mb¥­­ %ׂA(¹iÓªõGc&¹ifjj ¯Ÿ——Ge|óæíí»÷X,–d–FÌ ôõ©ûþˆȇ•{¨"!„OŸ=س'„ÐÌÔT_O/,"’ÚnkcNEr²WL¡abjbb``p/4”Êz?,\–L½D¼6ÑÁÝÝÎÖ†’¢W\.7<òÆÂyyùÈ2&.N¢”ÖSa8”k]©©i"‘h`ÿ¾\§¤¤¤´´ôY|¼¢â¨ÍFÌôõôÂ#ËËýcÇÎ —¯Ô·¨Ò¨æ“Ü-š7³´°¸rÃÉÁÁÈÐPnƯ_¿&%';·n]¥o Cõ›k;²oðõGÑÑéÅÅ%À¤aÃÍ›·uuñêÚEGGG,WãaȪBUÊhkiM;f÷þÿþ÷_‡öîúzzYYÙ÷BÃ’ß¿ÿ}íjÈ a…'ÔQ¡’Õ¤1“Üd±X?¾{ÿÏ_2m¬[¾{ŸrîÂEt©!éð‘ÇíÞ·Ÿ…aövvѱqiéé¹=OxæÊKK…/^½ºñ¿[>^ž];wBóÔÇ Þwè0†av66¢¢ã^lÝô;ʈf±£bã,ÌÍ[;9ʦÐ0a±XC ÜwðÆbµvt|•–‘j>vV³cáí?IéãF’lÇÝ­íƒG† Äf³wíÝÛ/(ðÕë7ÉïßS:Èê©(J¶®&M¬Á¶»zýÔƒ$ɸ'OÐØø/=»v‘*Žò‰Ûžý vvOŸ={ùêõ– ëÕJäòÞ™ª°’ IÒÏÇûØÉSh™³\›¤ää%+Vý}숱‘Q•8AÑLK}ëSm-­‘ÆŽ9Ã0êPA]AÔ] Ú†ª”è××ÊÊòü¥Ë).)140pnÓú·¹¿6±´¬ÓLßÀÞA\¾|éêÕÆææsgÍ èæ'ûtußÀÞB¡ðÒ•«7oßñóö7fÔºß7q¹\å= lÚZ6ýÂáp,›O7¶_Ÿ Êx`ÿ~8A‡„_±´°X¹t‰“ƒªµK›6»öìÕÖÒ:wê„Ü&ƒú÷ …×Bnܺs·­‹ËŠÅ‹gÌ™«W9Â##¹\®{;7©ô®]:?ŠŽùøï¿ æÎ9tôØ–m;ÜÛµ›?gÎôÙ¿"Y=i¡ ôõô6¬Yµ÷ÀÁ?¶ïÐ7ÐïÞÍö/ӧ̘ãÙµ‹lqú÷ "âJðµë7n¢rÛ´vªƒ1–ò€bÂmÛ¶º¹·s°s¨RGÃår¹\®H$Rt°Ùl>Ÿ_RRR¥¶Åçóã_ÆsØœªò©¡ï’ß?OHøðñ_´YWG×ÊÒ"'77<òÁÍ«—ë†F]*Ãf³¹\.\@I’‹ÅèþTàÅ‘ÞLj“Ëår8tn‹Å¨ÍHÙ$%'[6¶066Â0 Çñ+×®ïÝ øâyTœ\²•¢¦³©Èâ8NÝš—u%‰¨cÃ0>Ÿ4)..–›Bτڅ„Umÿµq‚Çãq8Ùªq8' 1 ãr¹²:Tª'å[Õ’Q¬qh]¯Tq4mR²¨ ø|~õß¾/‰è[ Rªªœ`ÅÉ¢Ú–Çñÿ»’žñIj×ã§OË)©T« Mt¤v)²¤7“Ú”ÛZ¤l6lÚÒ¹SÇñ£G¡Í˜Ø8kkkª¦•¶7 t“Sä B(õ‚Ùz&R»ŠŠŠªy|Ôóñz¡PH=Ó ±XL%ψ”Êë©|ë’ :ÕïK§L›TTÞ¹V9ÕŸÿþ»ö÷²ý²$ê`!³*S/ìÕóÈñ:ÚÚ?}þ<öñãùsý!kª$~øˆ3 A…yg5y9Å¡¶ù-Y±*7/ÞÌÖÆZd©Keê ý‚ ‚¹ù¿¬ìlS“ÉÆûzyUãòë‡Áq4PÓ±3šŸªm>¯+íš fMŸ¦²Ô¥2õÇè?|È`‹…óUç Ï:Àq4€R_®RÔkkCCÃ<4—Ëõóö7f”޶¶’Ï ÿ0ÊÔ#Ô|*°^ðcGœ ÊÇÎjrõ„ºÂ:àc ¯`÷®ë7nFÅÄd|úD-dnÞ¬™«‹³GçN:::B¡P}îäÖ™2 ÔLÄ5$IVÍF-âPÛ| „|oè #‡ e±XÔõ#ZÅŒãx}_GÝ”a &`"®É€’oU“PÆ¡Nø@­ RCÔ¥2 ÔLÄ5î ªÉÕs5§Œ2š&âš žÙøîÀ(£i`"®É€åßdÀ€ꄲ±3‹Åúöù€úÑ<8K}ý(ÿô®Œì¿l¨ÿ@Ù-%m ›7Fmô|*­}Š\þUõ£è·Boßj-ýˆ&ÇF ªR¦æJ*i ¤Â5ç@ÓUN «*9‰­é`”Ñ40×d èW¸Vª÷It©ûõÎG}À(£i`"®É@ÑW»·ï£©©õ£Œ¦‰¸&µ{Ï1tÞP>êFMqM1õ;05ã£>`”Ñ40×`¨]_¿|âž<ŠŽž9}Z}‹¡vÊ0¨K0×d”¿£=_ep/4ÔÃÏÿY|¼Tú…K—=üüÿKMC›¥Bᘉ“rrr+µùêõ¼…‹¡b €ŠøÔ ^'&ž¿t¹¾JW„*ëáçOýùtÿiĘq§Ïž#¢J~RSÓ;^\\¬È€ ˆËÁÁ§ýâß+°gß~Sgκ®*P-¾|ɬҮªBR(©?UUD¨äX+ËŸ»÷xu ¸yûví‘¿&¿+¸|ÙÃÏ?õ[ס ÛÚÀìyó=üü÷8TÎ+=F”¨tìܵsg--­Ð°çÖ­%Ó#>´±¶¶´hŒ²?yªƒ»»‘‘a¥ö–!€÷ÃÂ|¼¼äž. ÚŒê·tY25TÍ`®X²ØÐÐ Šž>¾÷à!1.9l˜ò~RÓÓŽ?Ô«—@ k°|õšØÇOõï7öç‘…EE¬X³öË—Iƒ¨¹ÔJYìmm·mÞhhhPóÀmÛ¼ýxóöŸ}­^¾TOOOQ¹µU ²ŠáÅäñãPh‹‹‹/^¾rôà~’$•±ïtðÈoOOE´høÔ%Ôªw5VeiãädbÒ¥téÜ `Ø…KWF ª*}nß½÷0*úÀž¿lZµ"Iðþ›·nÛwèpîzºº*Ano¥§§çæêª’fãæêŠ~ Ww¶qjmll„Rêò‘• RŠ:söÄß§çý:»gîµúEc.‡ãѵKxDäŒiSYßÎùùñ /&}ë d¡Â Ò 4<œÅbý2eò¦­Û^¿ycok[KÕ¤°|fãÛùYþ¾¾9¹¹ñ /¨”GÑ1$Izyz ÍÿݾӬY3S%íÛµuýôùK‹—4£z>uJI¤|ø°lÕYã¹ åäæÖ·j+ƒ–g‘$¾A,·vpÈÍË+.. …û6zL@ï >ƒ/Xºì]r2„0&.Î; GâÛ·3æÌòËLáo‹–ú êÐC¶”³.öðoѬ™X,FωDCrsu}Ÿ’‚lNŸ=7dä(ÿž½GO˜t/4 %¢‚þKM5ï·€ÞA£'L|ŸðêuâÄiÓý{þüûqÆœ¹þ½‡síÆMä!:6Ö³[À—ÌLäêKf毿-è4vÒ”øå­ñêõë#ÆŒ è4aê´‡¢äjEII ÉrѦϞ³tå*dÿâ…w@õ7£Í¨˜ï€Iï’Õ±Ž#.w „ð¥˙9}ZP¯ž8ŽW*ˆÜ]HÞ÷))ÓgÏñï8b̸[wïÊ-º›¯oNnîs‰É‡ÑQ$Iz{z(’ˆ "Ú¼|møè±½ƒÆMž"9?&—Ø»ääù‹—öØ»ÿ€K–þ÷_ª"Mî…†uêÐÞßÏî©túª©êQ•÷ή.Îúzz÷ÃË¥‰xøÐÞÖÖÌÔm>ˆŠjëê‚NwÊØ³ÙlçÖN¢ä•ò©HõÎB¡pÝÆÍB‘PÖ²  `ý¦ÍU½­¥*#{ÊIMOø|>ÿÐÑc¯\íýÓO«—/:qbFƧK—CX6é¹eÛŽÖŽŽS&N€N?°jÙÒ­›~—òö%33ùý{¯®]©Æ€`fjºå÷õέ[CÏ_¼´ÿðo/Ïe‹Y·jµfÃïŸ>¥ Z¶jM×ÎΛ+Š–¯^³bíÚîþþ‹~›'‹×oÞBÕbÕÚõvvË-´±nõÇö¢¢)àÛM”Õë7´wo·`îÜ’’’5ë˨^¾öçî½¾>ÞË-lÙ¢å²U«£cc+MB¶îí^¼|…*øêÕkÀ‹W¯Ð®/_µlÑ\Që>â’q¿~ãæ®½û&7 oªk¦DÑ.$ïü%Kì—-Zتe‹ ›¶<}ö\¶Ü¶.ÎúúzaÝ߃‡ìlmÍLMé›"|9øÚŽ¿v{tí²bÉ"{[»5~ö<^±¢¢¢y  …Ây¿Îž7{vvNΊµk媑ž‘ñ*1ÑßÏÍfwîÔ14<œj®ôUSÉ1R¥¨UþMn Ã|¼<Ã<œ9m*‹Å*))}òôÙø1£Ñµ‰X,~õ:±o` dc¢±G°±¶~-·8¨6ß!¦J/--]ûû¦wÉÉ Íþ>sVÊìKffRròæ­ÛçÌšQ«ï©©¡2hUZZZ\\ ‰Å/^¾úûÌY4Å$‹§MžØ/(MGèëë-^¾277å ìÕ³_P I’$IZ·l híèhdd(u}úéóg€‰IC)zBô 2Žã§ÎžÔ¿ß´I!„Þž9¹9'þ>ÓÖÅ4tÐÀŸº@q_¿ió’ióºùQ›ùùÈÌ¿›ß´É“ „^]§Ïþõä™3;´G» ,.vîØqøÁB‚ ÖmÜ”—Ÿ¯£­}ìäÉ cÇ <å‹ÅÇNþݾ];zÑ$oëêrøØñ”›7kúòu¢›«ë“gϲ²²40Nxù²[[±X¬¨ŽuqÉ*ܹ{ïðñ,&‰¨÷Dã8®Hš]È¡g×®BpúŒ‹s©¢1 óöôŒˆ|0£¬+(‰{òtâØ1"‘ˆ¾ ˆ?yªß>ÈÆ£K—”îÜ¿ïè`/—ØÔIòòówΞÙÄÊ `iaqõúu±X,{H††Gèêètlï!ôñò¼öòÕ+'GGJ+EUSÉ1R¥è+µ¢Î×Çûêõgññm]\bâbE"‘·‡2ÎøôI(šššH楱G035ýøï¿4½sýÞ¤†$IÞ ?~êïôŒ À§ÏŸ=&7Ë­»wß%'9¢sǵôÞ*ƒrŒ?Q2ÑÝÍmúäIÂ_gü‚úÐÜÜÜÿRÓnÞº ¿•ãÒ¦X,FY’$!gÖB›ÍVD/=##??ßÛÓ“òæëåµkï>ªBmœœÐ.}@'GÉMœÀ‘™Ÿ·7å!ÀÏo×Þ}$I¢]”«öíܾ¾€ ˆ?æç8·v*(øŠòvpo·yÛv‚ }vDÂgYl­­u´µ^¼hÖ´É«ÄÄ…óæ¼|ýúÅ«W:´ûöŸ ^½hêXÇ—¬Â¡£Çü67åÃÇŸîàînݪ%€Fš]rC°{ÿ¹ ý|¼ƒ¯‡<{ßÖÕ%&.N,{yxTÚ „)>æåçûx•ÛlݼÇqEÄ›› ‚­;ÿз¯sk§͛͛=K,˲ºÖ¹SG¡Pprp¡‘Ž”VŠª¦šc¤*Ñ/¿+HÓììL6 xàêìüàQ´ƒ½]ƒÆÈ8// £­-™—ÆAGG[$êèèÈi‘°>u‚ 6oÛŽfÄ”±ONIYµn}¿>AS&Œ¯ >5UBÀúÕ+ †™™™606F-øñ“§Ÿ;÷:1Q_OßÊÒRGGû[‰ÀçóÊKT|_®aÆ€ôô óF¤ví;t¸yÓ¦ÌÌzzºT^CCƒÒÒÒÂÂBäcae§Fm²$7)>úúz”###‘HTTTDC?tuu¥ò~-,L9[Š[qq±l;¤©¬««KÂË—.ÎÎNŽöö/_¿640À ¢­«ËÇÿ*ª£ÂRj)âU˜=ã__ÇEEoÚºu÷Ží‡Fš]rC ¨‚Žöö& †G>puq~ð(ÊÁÞ¾AãÔ„4úf!üZø` ¯OÙ°Y,Ÿ¯ˆËݹu˱'W¯ß@„«‹ó” š5m"eöáã¿ïS>¼Oùpûî=*1âÁƒi“&bF_5•#UŠ~ùØ™þ>©·×­Ûw&O;vÔÏRÃu‚ÎKo/;$‘ä„>ìTk6 „ï’ß?‹Oùð1+;K$éêè6±²ÌÎÉAš,]¸`ÌÏ#wüµ;îñ“J½ùxyN7Ö¼Q#êªr¶5W¦Eóæ 4 ¢ºçæå-Z¾"ÀÏoõòezºº˜ظðÈT)²‘’;S“&VVá‘ÚººH¦§¦¥]¸tyÂØ1öv€œÜ\3SS´+;'—ÏçSGµ”[ÙÍo¹rÊ=dgkiiIz@?¤T‚606,_¼ÈÌÌT’ŸÏ§×SІ›«ëñS¿NLlÖ´©@ hÓÚéaT”¡¾~‹æÍ ôõÑê¹u¬jÔTx,thïŽ&4ý6wú¬_<5nô(AhvÉ ŸÏ×®8D£ªàëíu³¬+ˆC]DåÁ22äææQ6é_ãñx-š5[·j%Žã /_:zlÉŠ•'’âÁçó·lXÏb—]-½|õjÏþƒÏ㨙¹UËÉÍUÉ1R¥è+û¬ ¯—×¹ ;^RZêѵ e‰.9 ¿Bh¦Œ=Â×ÂB'·½ÖÍÌŽã×oÜ  IKÏÚ÷ä ÅD(š™šnZ·öÏÝ{.] nÙ¢ùÔI¥ì7ý±íKf攉†  ‹kïM5Ù€HíJMM‰Dû÷år8%%%€gññߊ¬8_ðÍÇB8¨¿m;ÿìÜ©cûvnTâ‘ã'X,–—GׯÆúzza‘v66hohx¸­5I’Rnn D«  „·ïÝsr°¯àAA^3SS}ý¼¼<.QéÁ×CþMME3›4¢IUÖÍÅeÇ®¿þw箓£I’NŽÇOýÍåòÜÝÚ’$ifjª¨ŽuqÉ*8Ž<´jÙrÈ g/\ìܱc«–- B§•LÙX·RÄÐÇËëlÅ®€F"JðFÌôõôÂ##mm¬‘Í;v-œ7G.±€n~+V¯=°{—¶¶v'§ýú®^·¡¤¤DjÅqhxDww;[*¥©•ÕÁ#ÇÂ#8·iMS5U#Uо²oAjѼ™¥…ŵNF††”e#33÷ùKf«–-•±GøòåK++¹íµŒFmÞüðñãêõÒ3>ÑØ°¾]S£uTÓ&OÊøô '©¥õ}=½vnmõïWÛª¡2ß&Óå¬ÁlÒÄJ lÛ¹«×O=H’Œ{ò$áÅK@ü‹—ºº:R¹ÐmTlœ…¹yk'G)W=üEÇ,_½ÆË£«“ƒCqIITLLâ›·£F Gk.‡¼ïÐa ÃìllEEÇ'¼ îkKDý+»‰aXXd$‹Í²µ¶ŒL|óvû–MòmÊÌYQÑ1Ýü|¥rÙZ[»´i³kÏ^m-­³'K¹Âq|õò¥×nܼyëvTt À°æÍš-žÿ›¯·šðЯ/NÁ!!Á×C,-,V.]ìhoOÝk’<>l Ã6­_ûÇöÁ×C™™-_¼ÈÎÆFö® \W}{ã8~%øÚ¥«W››Ï™5#ÀÏæ[×rEƒºµu ¹ù?{;[!›Í¶±¶N~ÿÞÁÞ™)ªcGœ¦ çÍûeö¯GOœœ6y’"Ai…ܬ^¾ôÄ©ÓÁ×CLL.üm®‹sE¤ºoò®@™fÐ/( ˆ+Á׮߸‰lZ;9¡ˆØúU+þÚ·ËößÍÕuÊ„ R¢…EFr¹\÷vnRé];w~óôy<êUåVM…ÇHB!ܶmk»öî¶Ö¶ô¦<ËåŠD")³›·nß¾{zøµR{LJ·fù2êšE|>?áeúZmLàÆ>~¼rízzƒÍë×ZZXTP ÃPud«)÷Ö°ÊQCeØl¶@ @ÏþËÝËãñÐjÇÅb±@ IÇq©\†ñù|´0-Γ—Ëåp8ÔÛ/Åb±dÈår¹\.ºÕAí’¢§h“Åb ‚’’>ŸÏb±äz@6Š\!nRy«*ŸÏçp8%%%¨»,KR ¹u¬ãˆÓTÅbiii¡‰8Aäîzö<~ÉÊU§Ž67oÄf³•© —ËåñxR]2Í€jHR­H.16›ÍårQ‹>g.5Ô#ÉF“ÃáðùüÒÒÒÇOžÒTMµÇˆ2Ñ/ŸÙ@+õh¬KKKKKKeÓ}½½=––ž.u§^‘}Ü“§¦& ílmäžl)•ò©¬[µ244ÌËË“»—Ëåvóñ7f”޶¶lér Ë­cm †Ê ¦¦üÞ¢¢"ôC6W¥ N(ÒÌóÈÝ+E@Ñ&zÄ ÛÈÚÈuEÏMIÑÐÌ# U*…¦têGµ¹U Iòëׯ•R•)8+ßïÈõ£L3PÄM™¼²PÔ#‰D"4ꢯšj‘JA’¤ Þ Êårû÷ísãÖíq£~VÆþæ­Û#†Qt²¥ækifÃ@_ÿàž¿®ß¸ù(::ãÓ§ââ@`Ò°aófÍ\]œ=»tÖÑÑ …µú ‚ê¡¶•a nPÓˆ«b¹˜šBª•\ï\©—ÁúÏþm~^^>ZÂAƒ·ÿ$aÖ©CšÞ¹†|*eËçñ†8rØPê46Aï…©j[êuޏRúÁª!,›wîбc«&Õ›`¦­­­hNShäñx‰oµZ5áóC‚QFÓ žçp8ZZZ………êÐ…ýÀUãñxÊ>Baaa¡2–8ŽÓ·3ømg½¿ATÝÀ(£iPψ‹ÅâZzÞªÞ¡VU“Xï¬oB(»û¡6|ÔŒ2š&⚌ò»‚@f[ÔŠú€QFÓÀD\“Q>vf±Xh•Bý6 Ãĸ˜Çå© õ£Œ¦‰¸&E¿¬w640ÌÊÉ220Rô*E)È6ú¦#ùL-=§‚ÂSSS@•øT •Ò¨ùa 塿ëF• †•­¯>Hn¹õØ!~GßmÐiŠ®÷qjAaAYïlÞÈBøéË'š[vÔk‹Ñ¹o1–Ü¥È £þ ì CÃÆæÑ¥=ŸJ«GŸ¢ä[˜éý(ú­ÐÛ·ZS߀ vÈÚHAUÊÔ\I% TøžkzW4MQå”°Š¡’“XÑšÎCe\ê+âÊUA¯Ô[]ÆT5ô@Ñ/ëq·´°lÖ´™2ÕPþ¬Róz <ŸÚ#SïžëFõ¯»&”…zF|?z~/<å‚ ˆ²Þ™$ɤä¤ÌìÌÚ~Ñ=ø|¾I+K+:ðQ0Êh˜ˆk2PôËžFñöõA/[©Õ/ãU Çß$½ÁÅ8@ø¨e4 R·³±c"®9@Ñ/ëZ;úzùBkãÅCÊÝ÷xóH(ªõ£Œ¦A2âÝ|º©ó-Aµò™ œÀY,V½¤˜†ÆÂÔ‡ú€QFÓ ñïz •A5@B²ÂµR½·©ûõÎG}À(£i`"Î@oU1 šñQ0Êh˜ˆk6ÔîIn bÔ75Ôú€QFÓ@Eœ&ªáØ€©õ£Œ¦‰¸£j½sfVÖ‰S§GÞ AƒšØÐB Ó"å€QFÓ@E0óΉ²e:èùBXL6„Î[¸¸¨¨H2½T(3qRNN®\›—¯^Ï[¸¸RçT§¤áëáçÿåK¦"’©©i‡GŸP&¯"›{¡a~þÏâ㥌/\¾ìá矚šV=ªU‚’ÊP>Ý1fÜé³ç‚¨RAR¢É‚ ˆËÁÁ§ýâß+°gß~Sgκ®’:Ò‹¦Z=ij¡Ú‚$}fgç(Ÿ…Š8”×5GEǸwñX²b¥ÜôììšÃþ¿ÔÔý‡Wë3@$I^¸|eô„IžÝüýzô?eêÝû¡ôY¥/_2k»;Û³ÿ€{ŒŒOTÊÝû÷Ý»xìük·¤Y÷À>ÓfÍ®IAuP#á·ÞùÛˆŒ$IN3&åãÇÅ+V¢OÞ"?yªƒ»»‘‘¡\G{àý°0eüÊ#DYP3qŠ ìmm·mÞhhh!LMO;rüDqq‰ì®*ùïÒ¹“–@!eñࡵµ…EãJ™ÔÊ+³bÉâm›7nÛ¼qÝÊ:´ß{ðЩ3gªT–”h²X¾zÍî}ÜÝÚ®Zºdö/¿406^±fíÙój^MH_êI_‹JÛ˜jë%’—› y»}÷^ă²é¶œÿRS>Bs¦ÁÂ¥ËvþõWûvnkW®˜;{VcãEË–Ÿ:MׯT.¦"´uuÄ¿|A¥ÄÄÆbb㨔´ôôœœ7Wךdoo÷ç¶? TÔå”Ïle¿¿ §§kh`ðôÙóu7/_¼ðâââ‹—¯=¸Ÿz>BÖ¦_PÐÁ#G¼==•9cÐó•}™QOOÏÍÕU*;ú-w—2þ¹ŽG×.á‘3¦Me};Ìòó â^L?Nу!ʧ<”T¦““‰IC”Ò¥s'€a.]1thµK”Âí»÷FEØó—M«V$IbÖ#ÀóÖmûîÑ=@OWW%Õ”_êI_‹JÛ˜jëEŸEQÄ!€€–-Zü¾e«‹³³®ŽŽdº2U£‚7oÝŽxððÈ}ö¶¶(oÏÝ7lÚ¼kï¾Þ=ÒÓÓ“_(»P¡žrÑÆÉ‰Ãá¼xñ2ÀÏ¥Ä>~bgkóöŸ¤ììcc#À‹—¯m]\jBF_O¯ƒ»»j[ˆ,ª6v†¾OIÉÎÉ„†‡‡†‡CÿwûN³fÍLMLhlÚµuýôùK‹—J–BÃ-3‚ÆÄÅyôø’™ùëo º4%þÅ atl¬g·€/™™Âß-ô2Ô; ‡Ô.¡P¸ïà¡a£Çôê3hð‚¥ËÞ%'Kú—B7_ßœÜÜç“££H’ôöô€ž>{nÈÈQþ={ž0é^hÙU‚dqÂ+Á׆Ð;hÜä)’SW¯_1f\@ï  S§=|UCeHHß ‹[;8äæå+ª/’1ñíÛsæNùe¦¬hR8{ábÿÍš‰Åbô\‘H4tð 7W×÷))ÈF®¨ ÿRSgÍû- wÐè ŸÇ'¼z8qÚtÿ^?›÷ø U‹ÿ~œ1g®¯Àa£Æ\»qSJOE¡W^OúZ Ÿ>Íœû[@ï 1'?O òÒÔNRF’$ž89`èðîAó/EWÁÈø]ròüÅKûìÝÀ‚%Kÿû/µZ€óæ|ýúuÇ®¿¤Òѯã§þî3hpWßnC}ûî=ÊbÖÜß=ûôëàáE%^¼ruÀÐá~þ?/5§pòô™^=zØZ[A}+yäðaînnïÞ¿W\h¥¨è˜^Ÿ¿|A–h3+;ýø÷¿ÿ¦Ì˜éáç?d䨧Ϟ¿xùêçqºúvˆŠjëê‚NïŠlØl¶sk§QQ•¡ i4»zý†öîíÌ[RR²fýïT:²™4~`Õ²¥[7Iï:tôØÅ+W{ÿôÓêåK§Nœ˜‘ñiÁÒå’þ¥ÐÖÅY__/LbrãÁÃGv¶¶f¦¦ç/^Úøˆ·—ç²Å‹¬[µZ³á÷ÇOŸJw9øÚŽ¿v{tí²bÉ"{[»5~ö<¥ÿ¹{¯¯÷²E [¶h¹lÕêèØØ*#‰Ôôt€ÏçóÕ‘ܲmGkGÇ)'ÈŠ&‰/™™Éïß{uíJ…ÁÌÔtËïë[·†Ò«±lÕš®;-œ7W(-_½fÅÚµÝýýý6O,¯ß¼…ªÅªµëìì–-ZhcÝêí;EEKê©(ôJê©L-ë6nêÔ¡ý‚¹sJKK×l(óO_;IÏ^¸pôÄI/% èèhÿ¹{:ëÍ[¸X(Îûuö¼Ù³³srV¬]Kqšá•y£FÓ&M ¾òøéS©]§Ïß½o¿¯—תeKm¬[-[µ:îñ´kÚ¤‰€u«VîÜZv¨^¸|yëŽÝ|}W-[ÚªeËK–=ŠŽ–rø%3ó]r²—'¬8`lln¾sëWggúBQe*x¤61 °`É2Ï.]–.\  ,]¶hùòž=º/[¼P$¯Z·Ù,]¹ªc÷% æ—”,[¹ZV¶..IïÞ•––bŸ<ÖÕÕuoçæ`o÷¼|ýÚÉÑáБcgÏ_ìÕsýêUÓ§NIKOŸ3Ådæ-mœœ¦O™¬°ÐŠÌ岺|mçî=¾>Þ+—.ÖÖÖZ±f- ¨¨h朹ÂRáÂysÌ››••½hÙ EÁ­Âw ‚˜¿xéÛ¤$€©‰ÉÂysI’‹Å¯^'ö DyåÚ ì6ÖÖ£¢¡W[ô|Ê/ÜtîØqøÁB‚ ÖmÜ”—Ÿ/yegݲ% µ££‘‘!I’’»Dbñ´Éû¡ [}}½ÅËWæææ*º0Ä0ÌÛÓ3"òÁŒiSY,VIIIÜ“§ÇމD§ÎžÔ¿ß´I!„Þž9¹9'þ>ÓÖÅ…r…ãøñ“§ú÷íƒl<ºtIùðáÎýûŽöÇNžœ0v̰Áƒ „^]Åbñ±“·o×®ÚÊ”––Dbñ‹—¯þ>sM(Ñ×7°WÏ~Ah4$%šdŸ>˜˜4”"!D—ã8N¯ÆÐAê€4Y¿ió’ióºùQ›ùùÈÌ¿›ß´É“&ÓgÿzòÌ™ŽÚWzmmeô¬´ÈPï^È?„píï‘úÚQ2 …ÂÓgÏõî5{Æt’$½<ºÎ˜3];&§¤äåçïœ=³‰•ÀÒÂâêõëb±Xö%G•DBI’ƒô¿sïþ†M[N9,ðQºX$>vâäAgý2BØÍ×';;çð±ãíÜÚlll.Îm#ñ>:yÂøQ#†Cý|¼E"ñÁ#Ç:uè Y`zFÀÌÌL– z÷´XŒË-tôÈeÕ‘šÞ¡>Ê!`øÁ½z¢€®Z·~ÅÒÅ=»w‡8±jÝúüü<@—NF!$HbÕÚõ¹yy†’LÚº8=qâuâWç¸ÇOÝ\]Üݯ^»ŽâûOÒ»Ñ#Gäåå͘6uð€þB à ôõæ/^š““‹˜ôéÝkЀþÂè˜X¹…J1—5ÐÓÕ=tìØàýgÿ2Bèçã3}ö¯™YYÉïSróòöü¹£YÓ¦+K‹KWƒE"1—+çWU;³X¬ÖNŽÈ~Ôˆá<B˜ñé“P(455¡±¡&ŠÆð²CZ>à[€ };7±XŒã¸¾¾€ É+;‚$I|[·P¾ë׿ô ‰D™™™Ož>»y뀬h#?ï¼ü|4手‹Å^éùùùÞžžˆ†H$òõòú')I²¸”óòó}¼Êm¶nÞ8}Êä?æç8·v*(øúõka~~A÷vï’“­²PF™Qã'öî?°wÿý‡ [±f­­ÍôÉ“*­¯K›6è_žh@`³ÙŠTªF''´ËÀ@ÐÆÉQr'pdæçíÒÅbq€Ÿ_òû’$+ ½’zVZ )ÿzzºÈ¥µ£dLÏÈ(øú5ÀÏW$¡Zøûú"òV`ëÎ?#>*((hѼټٳ‘¡‹¸Ä0bÉÂù_23÷8@¥§gdäåçûùx£)Ç»ùú¼yûö[fõìèêá}JJ^~~[—¢¢¢¯_¿vêØþŸ¤$9 .—£8úéò ­xZ•S®.Î(£‘¡!ÀÕ¹Â&Ž€N:”% D\Šƒ““#›Í~ñò%A’Ož=uwsƒ¶o×.+;û]rò›·ÿˆÅbç6¿ÍùuPÿ~8ŽgffÆ=yrã·P›GLÜÚº¢RЦœB+2—5HÏÈÈÌÌêæçKIáçíNÆZÁæ­Û#<üúµÐÆÚzñüß89Ñ’wË[¥bŒ3:åãÇGQÑÍš5EÆyyùmm*¯¬ ‚ŽŽ¶H$*,,ÔùvûB.P}éøT~òôïsç^'&êëé[YZêèhË?½KÀÑÞÞ¤aÃðÈ®.ÎE9ØÛ7h`œšÐÓÓ¥ì JKK )W_ ¿ ôõ)6‹Åáó¿¦Îœ-UPqq±¬JJ*³~õJCCtT›™™606‹Å•Ö—Ïç•ûT¬@Æ ééæIíÚwèpó¦M™™Ñ«±0ÉxaßÞï#>}}=ʃ‘‘‘H$***ª4ôJêYi-ËõŸ““K_;JFt\HÔÂ9Ñ××ß¹u˱'W¯ß@„«‹ó” š5mBs,€ÊдI“q£G8|¤›¯JÉÊΠ~ ÁØØ¸¤´´°¨HW¦i|-ŒŸ2UZ·’Ic3SS@ZZºEãÆR–îÙÛ¢y³Æææò -,ª´ êêuyR›è,.•( Ÿoog÷âõë’’òó ÜÛ¹ìuttâž<p¹\'‡ÇOŸ;yêÅËWúúM›XikWÐD[[[r³ÒBe ²²äèšÁž?w:ztÉŠ•A´sk;kú´æÍšÉýÔZ³ãøÒ… ¦ÍœùÀ¦U+* Êó*²‘“Ò!j˜2++r×fH$U(„0'7wÑò~~«—/ÓÓÕ…ÆÄÆ…G>P”…JôõöºyûÎä ãbbãÆŽú™$It#8'7µ]@vN.ŸÏ§ºa#c@nne“ž‘QPðõË/233•,ˆÏçË-]eZ4oÞðÛs@BôÊöܼ¼ªÖW®¦&&M¬¬Â# ¥KRÓÒ.\ºHÁŠ'`“† kV,—ÖÇ“,·‘™YÓ&M¢.©©§Ïž›:ibkGG¹…êêêÈräååIÒü!©¿Ô¿r7%áæêrõzÈãÇOLLL¬,-!„†¹¹ºÄÄÅéhë8ØÙ}-,üõ·=üׯZ©§§!ŒŽ‰EëèK‘-T‘:ggçPRäää JÙX·Ú¼a½X,~žðbÿÁCs,¼tæ´ÜèWí®àÓçÏ9êäèp%øÚÛ¤$!:i~¥±AøZXÈãñttt*-¥>à[7$ú{Eé lRSÓD"ÑÀþ}¹NIIIiié³øxùn+ÂÇË«  àбã%¥¥]»@ÍLMõõôÂ"")›Ððp[kê²@ب‘™¾ž^xd¹Í;v^¸|ÅÌÔÔ@_?//ϦU+ô÷æÍÛÛwï¡7FVO™òèÒ BXÕú*V€$ÉAýûݺs'&î±dâ‘ã'X,–—GWeÔ_JÅð……GRÎoß»çä`_Áƒ‚¼JêYi-hü+Y;Sƒ{¡¡”åý°pd”œ<ôçѹ¹¹A´qrЯï—ÌÌ’ù«Ëi#^#†aKÌÿøïÇOž4jd¦¯¯÷þ}ÊàÎýûöv¶’y©Ì520ÐÏÏÏw´·GoÞþsëÎ]©ù’$‡xã·EGK&î=pˆÅbùxy6jÔHn¡ä·‹Æäææ¡½¢c¾Ñjq â6W ʳ)‡«³s^^ÞÕë!înm©C ½{»çñ /^¸º8ü÷_‘H4tÐ @€&©ž<NÃD^¡Tº|sssýÛ÷Ê×ÉÜü“”Ôgààü‚ ÃÚº84àóç/Š¢_…· ½NL\´le³jíúlidfÆãñ>ÉlÕ²¥"4ŽøòåK+«Jß_FƒæÞWÙÙIö‡ÔI @Ñ;Ë£bã,ÌÍ[;9R»š4±ÛvîêõS’$㞌ŠJËHGN,-,Dbñ†-øùŸ¹pÁÑÁAÑÕq l¬[ 2ääéÓ‡3jÄð¿öîc±Xöö<{¿kûVdÉf³£¢­,-]œÛpØìq£Fmßõ×ç/_ìlmÿIJ:yúÌÂyse‹êÕëÁèK–úzû8·v*..Ž|øèåë×ãF²hÜB(·ÐÒÒ²on5mÚ„ÍfoݱsðÀþ /_%½KV¦^U…“£›ÍNKO?v4•èîæ& …B¡‹³s‹fÍ´‚ÍÛ¶õ "I"*&îÙóç€gñ º5^°Àa³ÇŽúyÇ®ÝlÛÉÑáaTTjj ‰••H,Zµv]Ï=ŠŠ‹Nœ:ÝÚÉQ Èw‚þ§ÌÛ2>}F»wn·07ˆÀqÃ0'G‡’’:wì È¥¼MJruqV²Ñð‘{ÖR”nkmíҦͮ={µµ´ÎžŸ¿iÃúÝ{÷­Û¸ÉÀ@¿Wsf?yJäÇ?uï.[ ýxH«ýú•– Ï_¼t-$Ä¿›ß¤ñãV®]§¯§·iݺ»w¯û}£@ poçöËÔ)Šœ—}¹ª]{w[k[tt)BqIÉø)Óòóó/=­%°ÙltK÷æ­Û·ïÞÛ¶y# ŽãÃÇŒ[³|™­5 ŸÏOx™€>'—›ÍÅÅÅ, ý€ßnÁ˦cÆçóÑZqq1e!d³Ù<-&EwÕº»*éV\.—Çã‰D"Iz\.—Ëå¢é{t­$I –Ýìær8t°Q6T:‹Å’Ì[eä2W¾¾R¢)Õ5#)Úʨ¡h…¯¤¤„ÏçKiRiè%u®TOšZÐSU¦v’:¥dÛãr¹è}x[nȨˆ;·–3¬a±XÝò•ª†a(Íf³X,ÔäÐL—”€úαl[B–H7)cY?’TY,›ÍFêÁårÅb1†a’u‘ªÚÄqœÆF6²”R‰¨¾ !Åý®”‰$aæoÿI²°hldhˆ*{ñò•»÷ܽqÙP']ÔCʹ|f-¯Š¡%¬Z¶dáÒå÷ÃÂ{|;U|½½=––žnÞ¨‘"›¸'OMMÚÙÚP)Š@qPÄ5tÔ¬%;)Eé’ý e#õ¡¨¨ìÎ2ýY ])“(U„\šôj+£(»òõUÔ)+ÉY5mRá“íU+ }•ô¤±¤§ªLíäZÒ´=¹ ¢,wì†n-Èæ’üªÍ™Iöãg4ÆU²”Ý+IUŠ6¥d¢” µIcSií¤e³S{•a"i¦È`åÚu]:O4m>ŠŽ±µ¶$©Ì—ç „ì•+WFGGYXZÑwB“† »têø÷™s¾Þ^Ô#Ll6› É×oÞ¸:·Qdsðȱþ}ƒd0É‚ÍfÉüÂáp*å£i`”Ñ4P751­¹7u œ Nž>Ãba9¹yç/^¾6qüØ–-Z(™ÅbUm½3ŽãÍÍwü±¹´´TrÎeð€þ³›Ÿ——o` /kóöŸ$ Ã:uè ÌÉeQ’FQFÓ ñúæÂ Ê2pAÁ×C²²²LMM§O™ÜÃß_ùq¤Öl(¹Þ@D‰Ìka1 Ûÿ×.jÒMÊÆÞÎvݪ%ʽL]Í)ÏGsÀ(£iŒ8ó «ïÂC‡Œ1œš‚W~îT¯wV䨰°PÑ^Ç•§¿­ñdú )0Êh¨ˆ×7Õýäx¥¨Â[êewBÔ†ú€QFÓ@E-{¨o: ê$IªÝ7¹i–j8e4 LÄ5e½3‹ÅB#ðúm†‰q1ËS>êFMƒdÄ™±³B$•õΆ†Y9YFFJ6¹OVj_i‡‚aXAa©©) J|ª„JiÔ¼ã“zШæœëF• †õ­¯³ýÃ`uɈ§¦§Z˜[ [êª:pêw`¡Lߥ<ÃÚ«KÆçŒÿFômTAzí%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/PaletteMenu.png0000644000000000000000000000013213135434036017657 xustar0030 mtime=1500919838.099981806 30 atime=1500919915.659981806 30 ctime=1500919913.359981805 denemo-2.2.0/docs/images/PaletteMenu.png0000644000175000017500000010536713135434036021544 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRÒ¹:Sµ¯gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYs  šœ€IDATxÚìÝwXTGÀáR‹¨±›D"б!‚½Å†k4vM¢Ø{/QTÔ¨±ÄÞM°wc{b‰%¢&šŠÔ…ýþ@ös¥-.ÅrÞçÙÇeîܹg殜[f/z*•J…BäL/¿7PµjUnܸA:uhÓ¦ cÇŽU/3f ³gÏ.ì1âE*€"……Bñ&“D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡ƒI¤'OŸÆÁÙ5Ëב_hµ~Dd¤ú}ø£GÜ »ÏŠU«‰‹‹×ªôõtéGa·!Ä›LOO/Ë×78sæŒÆwH…xäÆfM›‚B¡ÈP^̪˜ÖmØÙذ|Éb¬ž·v?Œ•«×бC{LMM ²;BˆWÝ3`²{ ƒ¯«M¤Nµkó~É’:µ¡P(pws+Ȱ…Bˆ,½v÷HU*+W¯Á³Y \êÕgаü®^þò¥ÑAÃFàéÓgW¶˜”„ÿ²Z´m‹» ¼¼2b$×oÞÔ¨wûÎ]z}Ögwš·iÇî={2´µs÷÷´jßw:uëÁ‘cÇ {h…BäƒM¤ ÄÅÅgx)•Ju ›6³bÕj<6dú䉘™™2oá¢,Û2ðsæÌ˜Îò%‹uŠoÙŠ•lÞº6­Z2wÖL†DØý >R£Þèqã¨nkËŒ)“¨úñÇL›9›£ÇÿŸ(·íÜÅœ ñòôdÆÔ)T©\‰‘£Fsüä©‚n!„ @/í¶îÐ1ÓòáƒѧWO’’’X»~Ú¶eœß(š6iBïþ8áb¦ëÚÚTÀÙ©6Å­­uŠ/1!‘C‡àÛ¥³ºL¡°dä(?¢¢¢Õeͽ½ùjäu|=û~ÆêµëhàáR©dÅªÕ П>½z>¯ãIRR2+W¯aÐ€Ï rÈ…Bä³M¤‹æÏÅJa•¡¼L™ÒÜðÇOžÐªEsõ2===Zøød™HóRzòV©TDFFr÷ï{üük ©ªTu½f>Þšñ5÷aá"T*·nß&&&g''™ÄõÜݘ6s6©)©ZF#„âMP ‰ÔÎÖ6ÛÉFQÑQ/®yfY¼xñ‰ï\h(kÖ­çâ¥KXZZòAÅŠ˜™šf¨g]Ls–q‰â%HLJâÙ³g<~ü€î½ûdº¸ø¸é‹Bˆ‚Q ‰4'%ž'̈ˆHÊ—+§.ŒŒÌ÷mGFE1hèpZ4oÆÜ™3°´°Ò&78t8CÝ—ã355ÁÜÜœ’%K0{ú4J—*•a;Ož>)øB‘o^«Y»eJ—F¡Pðó¾}åû‚‚ó}Ûwÿþ›Ä¤$zøvU'Q€ÐóêïW¿W©Tüô˯8ØÛP¶L––<}J­šê×õ›7 Ú¿ƒ×êØE!„Ž ô·ú¹LÈàîæ†¡¡!=»wÃYúúÔv¬ÅCG¸–e›úúú;~‚ Êãäè˜m ÁbañžF™©‰)ε111aæÜytþ¤))©œ8uŠßÏ…й¹9zzzê„hogK`ð~.]¹ÂÚoV`hhÈg}û0oá"ÂÃagkõë7øvý&“/— ¡§§—c3gÎpæÌ™ÂU­h"7iJ–Ë.þþ½zt'!!Ý{öòÃÞqqqfîÌôî? ÓõìíìprtdÖ¼ù˜™šrô@ög¯ -ÎPVºt)Ü‹ÿÂùø/ `”iX)´nÙ‚[6ѽW9Jë–-ÐÓÓ#`ñbf̙˶;)Sº4sgNDZVMu{Ý»vA©T²}ç.6nÙJ¹²e™0ƶ­[qòôé‚r!^;òd#ñ¶ÑSe÷©BˆÿËùTRGÙ%Ò1cÆ0{öìÂ!^¤‚×ì©Bñ¦‘D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡y^¢@É“ÄÛFÎH…J¥Reùúøã¨S§Ž<|A¼1$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„ äÉF'OŸfаY.÷¨çβE_ç¸þÁÀ_¹~テ ø—Ÿx¿dIî…Ýç—}ûèÙ½;¦¦&Y¶áàìšcœÿ-Ïúš]|/×â]"O6o›}Dà¬iSP(Ê‹YÓº ;–/YŒÕóvÂrõ:vhŸm"]¾d±úý^cÙŠ•Ì™1 ‹÷òµÏ™Å÷r„x—¨Tª,—Í™3‡±cÇ2fÌy²‘xch"uª][ç30…B»›[®×Ëlg§Ú·¶.È!ЩB!^?¯Ý=R•JÅÊÕkðlÖ—zõ4lÿ†‡«—Ÿ<}gWÂ=P_2öôi®Õå[m¬ûn#>­ÛàT·í:u!0xÿ+ÕÉ*¾ûþþ¯[·èÙ÷3œÝ=hÕ¾?ÿº¯°w…B-èiBBqqñÊ‹5ÄÀ -” ›6³bÕj:ò µkràÐaæ-\”e›C~ž§—i7nÙŠÿ²ºwí‚}u;=†ßø (–ÔqqɱΫÆ7pèp¼½šàÛ¥Á?y %K”ÀÅÙ© w‘Bˆ\*ÐDÚºCÇLˇDŸ^=IJJbíú thÛ–q~£hÚ¤ ½ûàü…‹™®kkS ț˴ÉÉɬY·ßÎøjä¼½¼ˆˆŒdÕšµÔqqɱNßÞ=_)¾Æ ¨ÛkÚ¤ =û~ƪµk%‘ !Äk®@é¢ùs±RXe(/S¦4÷<äñ“'´jÑ\½LOO>>Y&Ò¼ôàáCbbbðnê¥QîãåÅ‚ÅþZ×yÍ|¼5ûÜ܇EK–å{Ÿ…Bè¦@©­m¶“¢¢£(^\óÌ­xñâ_DD$Ŭ4“½µµ5ñññÄÆÆjUçUXÓœ¹\¢x u{æææÒ!„¹÷ZM6*ñaffV }Bñj^«DZ¦ti ?ïÓœ±º/(¸@¶_¶L,-,zin`p0v¶6Z×y/ÎúU©TüˆMµjZ}y]!Dá)ÐK»çBB2} ¤}ÏÓÐОݻá¿,}}j;ÖâÀ¡#Ü Ë²M}}}Ž?A… åqrt|åø éÝóSü—PD_ŸÕí8xøçBBY½<@«:IÉI¯ß{ÄÀÀ{;[‚öäü…‹‘Bñz*ÐD:nÒ”,—¥?ž¯Wî$$$°{Ï^~Øû#..ÎÌ9ƒÞýdºž½NŽŽÌš73SSŽÐíìµWî(•Jvÿ°‡­ÛwP±BæÍš‰³Sm­êœ<}ú•â[0g6kÖ­gÛŽ¼_²$Ó&O”‡6!Ä@O•ÝóºD¾“çîŠ7H¾ßgGŠ7Œ ^³{¤B!Ä›F©B¡I¤B!„ t²‘ÈÈÝÍ-OþªBˆÂ!g¤B!„$‘ !„:D*„Bè@©âµqûöm…xH"B¼6îÝ»§ñ¯oI¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡ƒK¤©©©ìصßž½©S¿!žMèÙ÷3‚,ì1à^Ø}V¬ZM\\|a‡¢SÌ'OŸÆÁÙ•ðGò}ûéÛzñUÛͶ;³aÓfRSSsÕNnbÎj½‰ûQñæ+°?£öÕ˜qœ:s†®;ѯw/bcc9|ô£ÆŽ#<|8=ºùÚ „Ýcåê5tìÐSS“B‹ãMŒyÖ´)( “ eñÒe$''Ó¯w¯íûë2&BˆwK$ÒŸÝÇ‘cÇØ¸î[ìllÔå­[¶`ú¬Ù,^@›V­°°x¯°ÇCä’SíÚ¼_²¤úçÆ °yÛ¶|K¤Bñ:)K»6m¢UófI4]¯O{àâìÄ_·n©ËÖ}·ŸÖmpª[vº¼_½,ýRà_·nѳïg8»{Ъ}~þu»÷ì¡¶›;±±±ÛéèÛÉÓgdß a#ðôiŽƒ³«Æ²ìbÉLbRþËhѶ=.î4ðòfȈ‘\¿yS#þðGè7p.õêÓ¡‹/¡ç/äj»ÙÅüðá?ôéÿ9.î´ïÜ•s¡¡ËwîþžVí;àâîA§n=8rìx†ñ½úÇôú¬?¾={çzתY“¨¨hâââsÌd_v}ÏnLrjS!^U¾'ÒðG¸qó/š4nœéòòåʱb‰?޵j°qËVü—ФQ#fNLÕ«à7~gΞÕXoàÐáØW·cÆ”IT®T™ñ“§pö÷s4ðð %%…SgΨëÞ »Ï›áݤI¦1 ø9sfLgù’ÅêrmcyѲ+Ù¼umZµd <ˆ°û<|¤F½Ñã&àæêÊäñcy÷ŒÑã'äj»YÅ 0nÒdÜëº1iü8ââãð?Q½lÛÎ]ÌY°/OOfLB•Ê•9j4ÇOžÒhcêŒY8ØÛ3lðÀ\ïóû`llŒ‰‰±Öã‘›ø²ê{VåÚöY!^E¾_Ú}øðÊ”)cÝäädÖ¬[oçN|5rÞ^^DDF²jÍZ길¨ë6nØ@]§i“´‰K«Ö®eÍŠåØW·ãèñ4}ž8:„ÂÒWçL·kkS g§Ú·¶Îu,/JLHdÄÐ!øvé¬.S(,9ʨ¨hu™‡{]úöê @JJ*§N#&&333­¶›YÌé:´k«n[¥R1aÊTbbb077gÅªÕ П>Ï—7mâIRR2+W¯Áý®ºvmZÓµs§÷YBB‚zrORR"¡.°výš4n„žžžÖã T*µŠ/«¾gV®m›BñªòýŒT¥R`hX4Ǻ>$&&ï¦^å>^^üqíšFY3oõ{===Z4÷áÊÕ?hX¿>'NžRÏ=xø5D___ë¸sË‹Æù·KgT*œ åç_HUý&ë‹¿À­­‹ LIyåí¾èŶ‹³R·}ëömbbbpvr"..^ýªçîÆµë×5fÚfuÐñ²Ö:âÖ !n ÒÀË›‘£ü°µ©Æ¨/Fæj<€\ŧ­ühS!^”ïg¤¥J½Àýû÷©P¾\¦uú/¡r¥([º Ŭ¬4–[[[¯qßÓºX1:%Š—P×iÔ >K–séòeJ—.ÍÕ?þP_öÓVDDdޱ˜››gXï\h(kÖ­çâ¥KXZZòAÅŠ˜™šf¨—>Ó5¯¶«MÛ? {ï>™.‹‹S¿733ÓjœÍŸ‹•"-V==(]º´Æä#mÇCÛørê{A´)„/Ê÷DZ¦ti>¨X‘ ¨ëV'Ãò¿ïÝã»M›>xööDEGS¾Üÿ“ndTFFF¿ð"£¢4ëDFbdd„™™™›S¡|9Ž?A‰âű´´ÄÅ©v®â.^ÜZëX^\6hèpZ4oÆÜ™3°´°Ò&ð8t8ß¶«­’%K0{ú4J—*•a¹±±q®Û´³µÕHœºŒG~Ä—m !Ä‹ dÖnß®üøó/&w¨T*–,§H‘"4ñô¤l™2XZXôÒ ÕÀà`ìlm^*Û¯ÑÎ/ØT«†žž ê×çèñ8tφ¹»¬ ä*–twÿþ›Ä¤$zøvU' €ÐóùºÝÜ´­°´äiìSjÕtP¿®ß¼IÐþýäíqUnÇ#?â+è> !Þ=ò[¤C»¶9~œa_|‰·WjÕtàÙ³8Ž=ÆÅË—éß·ú²oâ¿,€"úúÔ¨nÇÁÃG8Êêåmþ°÷G °·³%hÿAÎ_¸¨1S³Qƒúlܼ…"EŠÐ¿_ŸlãKO²ÇŽŸ B…ò89:bhh¨u,é*}ø!&&&Ìœ;Οt %%•§Nñû¹BBCs<£Ôv»™ÅœCCC>ëÛ‡y þ;[®]¿Á·ë70iÜØ<ßï¹mã˪ïYíÇ‚ì³âÝS ‰TOOÿóÙ±k7{þ™CGŽ¢§§GåJ•˜1e2­Z4W×íÕ£;J¥’Ý?ìaëöT¬Py³fâüÒ¥Ùsf³fÝz¶íØÉû%K2mòDÜÝÜÔËk98 °´D¯H\œœ²ÏÞÎ'GGfÍ›™©)Gç*–t …ÿ…óñ_À„)Ó°R(hݲ;¶l¢{¯>:r”Ö-[ä8^Úl7«˜sÒ½k”J%Ûwîbã–­”+[– cühÛºUžï÷Wmâ˪ïY•dŸ…ï=Uú´Ú7ÄÉÓ§4lÁ¿ü”å½¹t|»co_‰cÇvØB¼ ôò{>>>Q§NNŸ>]Øý"'*x‹ÿúËß÷îqýæÍ, „Bä…·r¦Å¦­Û8xø0åÊ–Å©vÎ÷…BˆWõV&Ò 7Q´hQfMŸJ‘"oíI·Bˆ×À—HÝÝܸøûoÙÖÙÿëÏ…¦Bˆw„œ® !„:D*„Bè@©B¡I¤Bˆ×ÆG}¤ñ¯oI¤Bˆ×F… 4þâM ‰T!„Ð$R!„B’H…BH"B!t ‰T!„Ð$R!„B’H…BH"B!tP ‰ôäéÓ88»j¼œêÖ£]§.¬ß¸ ¥R™çÛ ôHã}^¸vŸ«VŸ/må¯.ýÉ«±Èj òrl„âMR g¤³¦Maù’Å,_²˜ÙÓ§áâT›e+V2jìø|Ùž Ë—,ÆJ¡È“öÂrõââã ¥­¼îO^Æ—c#„o’ý{¤Nµkó~ɒꟽ<ãQÏ!#¾à—À@Zøøäéö înnÙÅ|õ¶õG!Þ…~´^ݺxÔsçûö™_‚L/‹ˆŒT¿ÿëÖ-zöý gwZµïÀÏ¿îËÐvfmmßµ‹–í:àâîÁ']} Ú¿€Ä¤$ü—Тm{\Ü=hàåÍ#¹~ó¦zÝAÃFàéÓgWmíÜý=­Ú§µÛ©[Ž;žm¿³këáÃèÓÿs\Ü=hß¹+çBC3íÏõ›74lžM¨×¸ ƒ‡äï{÷²Ýîí;wéõYœÝ=hÞ¦»÷ìÉv¼^ûìâή?ë¾ÛˆOë6êËùÁû3Ýf¿ƒp©WŸ]| =!ï>dB‘ =‘Ô­S‡ËW¯¢R©´^gàÐáØW·cÆ”IT®T™ñ“§pö÷sÙ®³mç.fÏ[@ÃúÌš> ;üÆOä÷s!,[±’Í[·Ñ¦UKæÎšÉðÁƒ»ÿ€ÁÃGª×2ðsæÌ˜Îò%‹5Ú³`!^žžÌ˜:…*•+1rÔhŽŸ<•e,Yµ0nÒdÜëº1iü8ââãð?1ÃúÏž=cÀà¡Ä'Ä3ÞÏñ~£ùï¿ÿøÒoL¶c0zÜ8ªÛÚ2cÊ$ª~ü1ÓfÎæèñ쓾6qgU¾qËVü—ФQ#fNLÕ«à7~gΞ})® ¸¹º2yüXžÅ=côø ZÇ$„…©@/ífåý’%ILL$66Vëu7lÀW#GдIzöýŒUk×ÒûÓ™ÖOIIaåê5téø‰z½&ñ×í;ü¼oFE1t¾]:«×Q(,9ʨ¨hгÂÖ¦ÎNµ)nm €R©dÅªÕ П>½z>Ç“¤¤dV®^ƒ‡{ÝLãɬ­tÚµ¥ïó¶T*¦L%&&F£ÎÍ¿þ"::šoW.§Òó?9U¡Byv}ÿÉÉÉfºÝæÞÞÆmõÚu4ððÐjܳŠ;³òäädÖ¬[oçNêmz{yɪ5k©ãâ¢^ßý®ºÏ))©Lœ:˜˜…x?X!´ñZ$R===µÑÌÇ[cýÍ}X´dY–õÿº}›èèh|šzi”¯ XJJJ*ïi‰+22’»ßãç_HU¥fÙî­Û·‰‰‰ÁÙÉIcÆj=w7¦ÍœMjj*EŠäîÄÿÅä[¬˜Ê”:ÊWÀÄÄ„ÙóÐ÷+NŽŽØÙØ`7Þ&×ã¶p‘®®hëÁÇÄÄÄàýÒ˜ûxy±`±–}¶¶.–iŸ…âuôZ$ÒðG066ÆÌÌLëu¬‹Óø¹DñÄÇÇgyVû8æqÚz/ý¥oó\h(kÖ­çâ¥KXZZòAÅŠ˜™šæÇãÇOèÞ»O¦Ëãââ077ÏÕxhsV¬˜ß®\Î7kÖòÕ˜q(•J\]œ5r„ú UÛqKLJâÙ³g¹ŠQi÷U‹YYiÆ`ma_É™§âMõZ$Ò3¿ýF ûêYž‘¾|Y 2*ŠòåÊýÿçÈHŒŒŒ²LÆ%J ::Fc½{a÷¹}ç£ÇŽ£EófÌ9K m"ÌC‡³½dÉÌž>Ò¥JeXnllœoãfgkË’¯˜˜Hè…‹¬øfƒ‡$ð§½Y®“Ù¸™ššd™ì3{m/žvЭ¹Í¨(ŒŒŒr}€!„¯£BŸltæìYŽ;NÇöíÒ*¢@tt´ºNf“v^œù©R©ø%0›jÕ²LÆåÊ–ÅÒ‚à4ʧLŸÁ´™³HLJ¢‡oWu =ŸcüeË”AaiÉÓØ§Ôªé ~]¿y“ ýû10ÈŸc•kׯãÕ¼%Ïž=ÃÈÈ7WºuíÌ?ÿþK||ÖExyÜ~úåWìís5öÚ*[¦ –½°Í´‚±³µyÅV…âõR g¤çBBÔ—ðâã9ž]ßÿ@Ó&MhÚ¤ }øúúúÌž·€n]»páâE®ß¸‘¡­öþˆöv¶í?Èù 3Ì~}‘¡¡!ýz÷bÑÒe §GÍ58}æ ¡.0wæt&OŸÉ̹óèüIRRR9q꿟  $4o//ôõÓͱã'¨P¡Ì[¸ˆððGØÙÚpíú ¾]¿IãÆfOfmåF…òHJJÂoÂDÚ¶jEì³g|»nöö˜˜˜dºŽžžž:¹ÛÛÙ¼ŸKW®°ö›•Z}Vqg56½{~Šÿ²ŠèëS£ºá\H(«—äó§M¼®´™ 1gÎæÌ™£Q6fÌfÏž]Øá ‘A&Òq“¦¨ßR¾\Y†üœn]»¨Ëß/Y’)Ƴü›UL˜2w77¦LœÀ§}úi´µ`ÎlÖ¬[϶;y¿dI¦Mžˆ»›'OŸÎrû=ºù¢LIaÇîÝìØ¹‹Š+0oÖLš6ñD¡Pà¿4€ S¦a¥Pкe vlÙD÷^}8tä(Þ^^ØÛÙáäèȬyó135åè`ºwí‚R©dûÎ]lܲ•reË2aŒm[·Ê2–¬ÚÒ–©© ‹Ìg¡¿?¦LÅÄÄWgg¾>,ËuôôôX¼˜sæ²mÇNÊ”.ÍÜ™Óq¬USë±Ï*î¬Ê{õèŽR©d÷{غ}+¤¹³Sí‚øÈ‰×PvÛ||| b̘1XZZ2vìØ\´,DáÐSåÇtÍ|tòôi Að/?i<%I‘ï´ŸVÿвK¤rF*^C*x î‘ !„o2I¤B!„$‘ !„:x-¾Gšînn\üý·ÂC!„äŒT!„Љ$R!„B’H…B¼q÷H…o6mŸl$Ä›BÎH…J¥ReùòöNû3òðñ&‘D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:('<}šAÃFd(/nm«‹ _ Jqkë‹<‘ššÊÂÅþüô˯$%'sæØ‘Â)Óñ700 |¹r´kÓš¾])R$çcªôv‚ù‰÷K–ÔjÛ÷Âîó˾}ôìÞSS“ËÅÛOžl$Þ6úˆÀYÓ¦ P(HMUñ÷½{¬Y·žÿ"þcõò€Â‹­ÛàT·í:u!0x?#GùÑ©[º*• ¯æ-™6sv¶ñd%ýª§Osœ]5b¿úÇôú¬?¾={ç›®}ÖV­š5‰ŠŠ&..žÄ¤$ü—Тm{\Ü=hàåÍ#¹~óf–ëç4>™Gvå¯2æBQ˜ 4‘&$$O\\<Ïž=ãÚõë|·i3Þ^M011aÛÎ]ÌY°/OOfLB•Ê•9j4ÇOžR·1â«ÑÔ÷¨Çä ãˆOHà‹Q~|é7†–Í|˜2a‰I‰ŒŸ$&&ï¦^qøxy±`±?f¦¦¸¹ºräè1u"=xøÍ|¼¹}çNöñ¤¦j5ÓõE®.Îê÷9Åö¢Üô9;™ȸ¹º0ê‹´3Îq~£€´ËÛ‘‘‘Üýû?ÿ@ª*Uc½[·oçùøäG›B‘ß 4‘ÚÙÚjLv©UÓ˜˜V~ƒ·WZBéÞ»O¦ëÆÅÇ`hh˜aYfe‘³²Ò(·¶¶&>>žØØX¼<3eÆLbccyðð!÷< e3"#£²'.ssó\õßÌÌ,W±e׿¬úœdôô téÒûã\h(kÖ­çâ¥KXZZòAÅŠ˜™šfÚÖãÇOò||ò£M!„ÈošH3óáIJJRÏØ=}¥K•ÊPïÉÓ'¹n»xñ´3µ¨èhÊ—+§.ŒŠÂÈÈsssÖ÷@OO§NsëΪV©B¥>B__?ÛxŒuê·6±åµ—d^Å ¡ÃiѼsgÎÀÒÂH›ðtàÐá õK–,‘çã“m !D~+ôDjhvfõþû%QXZò4ö)Íkz«—oÛ¹‹»wïâQÏ=×m—-SK ‚‚÷ã`o¯. ÆÎÖ€÷Þ{Wgg=Ê›Ѷu+õºÙÅS«¦ƒNýÖ&¶‚t÷ï¿ILJ¢‡oWu =Ÿeüy=>ù=æB‘ =‘¦Ÿe<{Çg}û0oá"ÂÃagkõë7øvý&{µ/eÒ»ç§ø/  ˆ¾>5ªÛqððÎ…„j<Â˳13çÎC©TÒÌ»©zݼŽçUb+(•>üfÎGçO:’’ʉS§øý\!¡¡gÉÚŽOú™ý±ã'¨P¡þK˜0eV ­[¶`Ç–MtïÕ‡CGŽªg çf|ìíìprtdÖ¼ù˜™šrô@p¶åù=æ¢ðÉ“ÄÛFO•ݧZ!þ/çSIe—HÇŒÃìÙ³ { „x‘ ^ƒ' !„o2I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:(ô2!Þ-òd#ñ¶‘D*„(Pò ñ¶‘K»B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡ƒM¤¿Ñoà ÜyR§~CÚuêÌâ¥ËˆˆŒÌu[÷Âî³bÕjâââ³­—””Ħ­ÛèèÛ · iäíCß9vâ„Îý9yú4ή„?z”§qç¶]mÇBy1^¯2.…aÙŠ•88»òðŸ4ʃÀÁÙ•EK–fX§±w3ú’'}LoãU>ÿBˆ×G%ÒÉÓg0~òÊ–.ͤqc˜>y4àû={éÞ»ÿüóo®Ú »ÆÊÕkˆ‹Ë¶ÞèqãY¾òxx0cÊdFŠ••‚¡#¿dó¶m:õÉÎÆ†åKc¥PäiܹmWÛ±ÐF~Ž×릶£#/]Ö(?ýÛÙ´Ïü¦QþàáC"£¢pr¬õJû^ñv*Gî?xˆþÿ…ó©_¯žºÜ˳1íÚ´¦S·î|ó 3¦LÎÓíÞ¹{—ÃGñõ¼9x6j¤.oݲ“§Ï`Õšµøvî¬Õ³?3£P(pwsËóñʯv {¼^7µj```ÀÅK—hæÝT]þÛÙß±©V•k×o…u±b\º|€Úµ m !^?rFºü›ohÝ¢¹FMW¾\9V/ u‹å;wO«öpq÷ S·9v\cù a#ðôiŽƒ³k¦ÛŠŽ b… –uêОF ˜˜¨Q¾}×.Z¶KÛî']} Ú¿øÿe¸«üA¯ÏúãÛ³·Æå½ô÷ݺEϾŸáìîA«öøù×}¹Ž;³vÃ=¢ßÀA¸Ô«O‡.¾„ž¿ U›ë¾ÛˆOë68Õ­G»N] ÞŸå~ÊËñxøðúôÿwÚwîʹÐP­öqzŸï……ÑwÀ@\Ü=hש3çBC¹tù »г»m>é”á¬1§ÏÍ‹Œ©nkËÅËÿ?# »Ÿ2tÐ@ôôô8sö¬zÙ¥+W0*Z{;»\ï#•JÅÊÕkðlÖ—zõ4lÿ†‡gˆ)«ýÕ³ïgŒ5Z]/ôüœ]?yŠºìø‰“88»rýÆ „'ßé?ÿþËí;wñöòÒ(OLJ"..ž¸¸x>úð#ªÛÙ©f½mç.æ,Xˆ—§'3¦N¡JåJŒ5šã'O©×2ðsæÌ˜Îò%‹3ÝvÕ*U°´°`Ì„‰:r„„„õ2;[[¦L±±±ºlÛÎ]Ìž·€†õ=˜5}v66øŸÈïçBÔu¦Î˜…ƒ½=ÃÌt›‡Ǿº3¦L¢r¥ÊŒŸ<…³¿ŸËUÜ™=nn®®L?–gqÏ=~BŽmnܲÿe4iÔˆ™S'Sõã*øŸ ‘òs¼ÆMšŒ{]7&G\|~ã'j¬›Ó>ñÕhê{Ôcò„qÄ'$ðÅ(?¾ôCËf>L™0ŽÄ¤DD¢M›/«íX‹ë7nªûúÛÙß177ÇÍÕ;[D}éòì«W§hÑ¢¹ÞG6mfŪÕx6lÈôÉ133eÞÂEëg·¿ê¸ºzþ‚úÿÈ…‹8á¢zýÐ °.VŒ«TÑús%„Ȫ|zþ‚ª†“‹ê^X˜FùçC‡©j8¹h¼þ‹ˆP%''«ê7iªúvÝzú_§òíÙ[ýó‰S§ÔëdçÊÕ«ªî½û¨j8¹¨ëÔUuëÕ[µ`±¿êøÉ“*¥R©®§T*U ¼¼U³çÍ×Xß·goÕ¤iÓÕÛÛ²m{†þ W¿Ÿ5wžzyjjªªGᆰ¾ŸÌUÜ™µ»zí:õò½?ý¬ªáä¢ŠŽŽÎ²Í¤¤$Uý&MUs,Ôh»ïçU½?¯ãåÙ¬E†˜üùuÌ9íãôþ|¿g¯zÙžŸ~RÕprQíýéç eÑ11Zn^vêôU 'Õï!!*•J¥úÒoŒjø—_©T*•jÙÊoT}š«T*•*!1QUÛÍ]°ò›\ï£ÄÄD•Gã&ª©3fi|6zöûL½ßrÚ_ç/¤ý?ºù×_*•J¥:òKU¿ƒT5œ\Tý§R©TªOûôS0I•—¼ä¥ñR©T*U¾Ÿ‘¦¤¦ T*5Ê¿1œõ«W±~õ*F ¢.¿uû61118;9©ÏXãââ©çîÆµë×IMMÍÕöílmÙ¸ö[üú 3¦L¦ZÕª;~‚ÁÃGÒªý'\¿y€¿nß&::Ÿ¦šgΫ–òåðáêŸ]]œ³Ý^3oõ{===Z4÷áÊÕ?tG÷ºê÷ÖÖi÷ì”))YÖðð!111x¿Ô//þ¸v-ŸÇkX†˜‹³RÇœã>NIÛÇÎNµÕ뷶βL©T¾ò禦C ôõõ¹xé2©©©ü~.W꺺ÁÍ¿nñçµk$''ãô|‚RnöÑýyüä ­Z4×üløøh½¿ì«WÇÌÌŒs¡ç¸xù2ݺtÁÈȈó/˜”ÄÕ?ÿÄ­Ž+Bˆ‚•ï“Þ/Y€[·ïðá¨Ë+}ô‘úýµîé<~ü€î½ûdÚ^\\æææ¹Ž£D‰â4ónªžTòçµëŒ›4‰1ã'ðÃŽí<Žy €õó_ÎéÌÌ̲ýùeéSÔÛ-^‚øøxbcc_)îtŠ\ΈHûJE1++Íø¬­µŠG—ñ²°x/Û˜sÜÇÏgfX–Y™Vmfñ¹111ÁÎÖ†‹—.síú b?¦Îóƒ¥öiÉëÌo¿©·íPÃ>×û(*: €âÅ5ǪxñâZï¯øøx\œjJg?~Œ“c-jØW'ôÂEŠ+†R©”D*D!È÷DZ¾\9J—.Å/ûöѤq£Lë¤ÿ¢(Y²³§O£t©Rê¾x.'ç/\¤Ï€ÏÙ¹e•+UÒXfS­*úõÃoüžÅÅQ¢DÚ/µèèÊ—+§®w/ì>?Öz›‘QQëGFFbdd”cÎké¿´£¢£5㉊ÂÈÈ(Ó¤’WãuùÊÕlcËi?yú$×ýÕåsãT»6?ìý‘3gÏR²D õŸ¾¾>ε9õÛo˜›™agk‹‘‘Q®c+ñëÛ‡y þ;[®]¿Á·ë70iÜXu›úúú;~‚ ÊgzïÊÌÌŒÁ?çkÿ%üNㆠ°.VŒ'±O9uú ¿1kÚTõvûõîÅ¢¥Ë@Oš5jpúÌB/\à›€¥îñf函?b``€½-AûrþÂE™´ÚÄ[™µihhHâ¿,€"úúÔ¨nÇÁÃG8Êêå™¶“Wãõi7_6d“LµÝǹ¡K›5Ð××'ìþ}>ÿ¬ŸÆ²ºu\™=/‘ÄÄÄWÞW†††ôìÞ ÿeèëSÛ±á^X˜FœöW…òå)]ºç/\¤}›68ØÛS¤H.^¾ÌÀý_ù3$„xu’Hõôô˜;s»ØÃ®ö¼#c#jתÅúÕßP¹R%6nÙª®ß½k”J%Ûwîbã–­”+[– cühÛº•ºŽ½NŽŽÌš73SSŽÎtÛ=»wããʕټ};‹–.ãéÓ§XXXP£zuV.[‚«óÿÏ@ztóE™’Žݻٱs+V`Þ¬™¸:;sòôi­úº`ÎlÖ¬[϶;y¿dI¦Mž¨ñÅ}mãάÚìÕ£;J¥’Ý?ìaëöT¬ÖŸ'ìäÇx™™™f›HsÚÇÚŽunÚÌŽ©© ¶6Õ¸|åªFÿ -y•)]šðGp¨Qã•÷Q¯ÝIHH`÷ž½ü°÷G\\œ™;s½ûШ“Óþrsuåû={©ùüŒÔØØ[›j\¿qÇZ5_9>!Ä«ÓS©ž1MèääéÓ 6‚à_~RO°â-óv<ÒJˆ¼£ùë/B!„N$‘ !„:D*„Bè@î‘ !´%÷H…Ð$÷H…B]I"B!t ‰T!„Ð$R!„B’H…BH"B!t ‰T!„Ð$R!„B’H…BH"B!t ‰T!„Ð$R!„B’H…BH"MJJbÓÖmtôí†[ƒ†4òö¡ï€;q¢°ûŸ¯±<}gWÂ=Òz{a÷Y±j5qqñÙÖKMMeþ׋¨ïéEú {¼ËW³Â°lÅJœ]yøÏ?åÁààìÊ¢%K3¬ÓØ»ý É“>¦·YØC!Ä;¯@éèqãY¾òxx0cÊdFŠ••‚¡#¿dó¶m…:ù› Ë—,ÆJ¡Ðz°ûa¬\½†¸ø¸lë]¾z•M[·Ñµs'Ì™U¨c˜îuÞÏy­¶£#/]Ö(?ýÛÙ´Ïü¦QþàáC"£¢pr¬õJŸ !ÄkL•Ïnß¹£ªáä¢:pèP†e“¦MWÕ÷ôR¥¦¦æwoLl'NRÕprQý‘'õ J^ez¿þ /ì.e+>>^åX§®jö¼ùåÍZ·UuîÞCåà쪊ˆŒT—ÿ¤ªáä¢:š'Û/¤ý¼ä%/—J¥R©òýŒ4*:€Š*dXÖ©C{5l@bb¢º,1) ÿe´hÛwxy3dÄH®ß¼ÉÈQ~têÖã弚·dÚÌÙìÜý=­ÚwÀÅ݃NÝzpäØñ<‹ `û®]´l—Öþ']} Ú¿øÿ¥¶«üA¯ÏúãÛ³·Æ%¼ô÷ݺEϾŸáìîA«öøù×}í6OŸæ88»f{fõ2‹!ݺï6âÓº NuëÑ®Sƒ÷«—¥¯w/,Œ¾ââîA»N9Ê¥ËWèÜýSœÝ=hóI§ gZù1–þCŸþŸãâîAûÎ]9ª±nVûY—¾äæ³cllLu[[.^þÿiØýûºøzþ‚Æg|åê5x6kK½ú 6‚ÃÃ3Ä”Õ>îÙ÷3FŽ­®zþήŒŸL™0ŽÄ¤D_¾ù9–ã&Mƽ®“Æ#.>¿ñ5ÖÍi?ç¶/¹ýìÔv¬Åõ7Õ}ýíì›ãæêŠ­F¢¾tù öÕ«S´hÑLÛ=nn®®L?–gqÏ=~‚zÙ†M›Y±j5ž 2}òDÌÌL™·p‘ÆúÙíã:®.„ž¿€J¥àÂÅ‹œ¿pQ½~è… X+ÆÇUª „È¥WºÀ“KW®^UuïÝGUÃÉEåX§®ª[¯Þª‹ýUÇOžT)•Jº3çÌSmÞºM£ìàáêN.ª{aa*§ºõT[¶ïP/[¸Ø_åݲµ*))IU¿ISÕ·ëÖk¬ûÕ˜q*ßž½uŽM©Tªxyg¸”çÛ³·jÒ´éêKm[¶mW/{ñ2eúûYsç©—§¦¦ªzôî«êûùÀ ë¼Ê¥ÝÌbH—¹ j¬ß÷óªÞŸ ÐXïû={ÕË÷üô“ª†“‹jïO?g(‹Ž‰É·±ôlÖBUÃÉEµzí:uù?ÿ’¶ÝèhUrrr¶ûùUú’S›Y9uúŒª†“‹ê÷•J¥R}é7F5ü˯T*•Jµlå7ªÆ>ÍU*•J•˜¨ªíæ® XùM–Ÿ‹û»÷§ŸÕýMLLTy4n¢š:c–Æç¦g¿ÏÔû?§}|þÂU 'ÕÍ¿þR©T*ÕБ_ªú ¤ªáä¢zôè?•J¥R}Ú§Ÿjì„Iªöe4yÉëu{©Tª¸´ ig$×~Ë_aÆ”ÉT«Z•cÇO0xøHZµÿ„ë7oªëŽó…o—ΨT*"""8ÊÏ¿`bb‚›«+GŽS×?xøÍ|¼¹}ç1118;9¯~ÕswãÚõ뤦¦êÛ_·oOS/õW,åËáÃÕ?»º8g;Í|¼ÕïõôôhÑ܇+WÿÈÓñ~1†ƒ÷KqûxyñǵkeÎNµÕï‹[[gY¦T*óq,‡àá^W]^¬˜UÚvSR¸uûvöû9%5×}ɱÍ,>;5j ¯¯ÏÅK—IMMå÷s!¸º¸P×Õ•ˆˆnþu‹?¯]#99§ç”2ób­­‹©û{ÿÁC?yB«Í5?7>>ZïcûêÕ133ã\èy.^¾L·.]022âüÅ $&%qõÏ?q«“õ­!DÖ rc%J§™wSšy7àÏk×7icÆOà‡Û8Êšuë¹xé–––|P±"f¦¦ê6¼<3eÆLbccyðð!÷< e3"#£èÞ»O¦ÛŽ‹‹ÃÜÜü•c{óëç¿€Ó™™™eûóˬ‹ÓÜnñÄÇÇ›m|¹ñb i_(fe¥‡µµz»é 3´•YYNtK ‹÷Pd1£õñã'@6ûùùlçÜô%Ç6³øì˜˜˜`gkÃÅK—¹vý1SçùAL û´äuæ·ßÔÛv¨aŸå˜eÕߨè´ÏuñâšcU¼xqõûœöq||<.Nµ ¥Ž‹3?ÆÉ±5ì«zá"ÅŠC©TJ"âå{"=á"}|ÎÎ-›¨\©’Æ2›jUЯ~ã'ð,.Ž„„ N‹æÍ˜;s–@Ú’‡а¾zzzœ8uš[wîPµJ*}ôúúúÌž>Ò¥JeˆãÅûs¯[‰i¿¸¢£c(_®œºÞ½°û<~üXëñˆŒŠÒX?22##£ð«Jÿ­¹Ý¨(ŒŒŒò,yçÕX^¾r5Ûí”,YÈz??yú$×±çÔffŸtNµkóÃÞ9sö,%K”àÃ>@__çÚŽœúí7ÌḬ́³µÅÈÈ(×±•xž0#""3|nÒi³ë¸º²jÍ·\¸t™>üsssjתőcÇ)feE•Ê•ÔgéBˆÜÉ÷K»W©Œ¡;v}ŸéòËW®P¢D ÌLM¹û÷ß$&%Ñ÷«:‰„<¿$ðÞ{ïáêìÌá£G9pð-š7 l™2(,-yû”Z5Ô¯ë7o´?:ÅV®lY,-,>p@£Î”é3ønóf­ÇãÅÙ²*•Š_±©V ==½|ÿ²eÊ`iaAÐ ÛM‹#;[›<ÛNžå¦ìÇòUö³6côªm:;:Í÷{öf¸¬ïV§!¡ç ½p'ÇZ¯4®eJ—F¡Pðó>ÍÙÝû‚‚5âÏi×­ãJdT{~ü‘Z5p¬U“7orâä)Ü\ålTˆW•ïg¤fff ø9_û/áßðp7l€u±b<‰}Ê©Ógø50ˆYÓ¦PéÃ111aæÜytþ¤))©œ8uJ=“3$4o//¼<3sî<”J¥úò¡¡¡!Ÿõíü…‹„­ ×®ßàÛõ˜4n¬Î±Ò¯w/-]zzÔ¬QƒÓgÎzáß,Íò¾áË~Øû#ØÛÙ´ÿ ç/\Ô˜u›~f}ìø *T(Ÿí}5mÒ»ç§ø/  ˆ¾>5ªÛqððÎ…„²zy@¡ìçìÆòÓn¾lÈ&™¾Ê~ÖfŒ^µÍšèëëvÿ>ŸÖOcYÝ:®Ìž—Hbbâ+ïGCCCzvï†ÿ² ôõ©íX‹‡Žp/,,Wû¸Bùò”.]Šó.Ò¾Mìí)R¤/_fà€þyöYâ]S ÷H{vïÆÇ•+³yûv-]ÆÓ§O±°° Fõê¬\¶Wç´#y…BÿÂùø/ `”iX)´nÙ‚[6ѽW9Š·—6`Ú¬Ù8Õv¤d‰êítïÚ¥RÉö»Ø¸e+åÊ–eÂ?Ú¶n¥sl=ºù¢LIaÇîÝìØ¹‹Š+0oÖL\9yú´Vc±`ÎlÖ¬[϶;y¿dI¦Mžˆ»››z¹½NŽŽÌš73SSŽÖªÝìôêÑ¥RÉîö°uû*VH‹ûÅÉ7¹Ÿ³K33ÓliNûYÛý›6³cjj‚­M5._¹ªÑ?HK^eJ—&üÑ#jÔÐiÿ%$$°{Ï^~Øû#..ÎÌ9ƒÞýhÔÉi»¹ºòýž½Ô|~FjllŒ­M5®ß¸‰c­šºí|!Þaz*Õó/—‰|uòôi Að/?ñ~É’…ޝ"î?ñæRüõ!„B'’H…BH"B!t ÷H…Ú’{¤Bh’{¤B!„®$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„ò=‘ž<}gWÜy’”””i{a÷qpvÅÁÙ•ˆÈÈ„{a÷Y±j5qqñ:·•””Ħ­ÛèèÛ · iäíCß9vâD¾n7?ÚB‘³;#åøÉ“™. .ÔA»ÆÊÕkˆ‹Ó¹­ÑãÆ³|å74ðð`ƔɌ:++CG~ÉæmÛòm»ùÑžBˆœX"­Vµ*û‚2O˜AûP­jÕ ݹ{—ÃG1}Ê$† üÏFhݲ æÌ¦mëV¬Z³ùó¯Bñv)°DÚÌ»)ÇŽŸàYœæÙÒí;wøëÖ-šy7Õ(_÷ÝF|Z·Á©n=ÚuêB`ð~FŽò£S·uU*^Í[2mælvîþžVí;àâîA§n=8rìx¶± 6OŸæ88»jGf¢¢£¨X¡B†e:´§QÃ$&&æ¸ÝĤ$ü—Тm{\Ü=hàåÍ#¹~ó&ðÿËåWÿøƒ^ŸõÇ·gïû!„"X"mXß½"E8tøˆFù¾ `>úðCªT®¤.Û¸e+þËhÒ¨3§N¦êÇUð?3gÏâåÙ˜ë7nðÏ¿ÿªë_¾r•GÿýG‹æ>lÛ¹‹9 âåéÉŒ©S¨R¹#GæøÉSYÆ6dàçÌ™1åKkGfªV©‚¥…c&LäБ#$$$¨—ÙÙÚ2eÂxŒsÜî²+Ù¼umZµd <ˆ°û<|¤Æö¦Î˜…ƒ½=Ã̶=!„ùÇ  6dbbBÃúüD«ÍÕåÁûiÕ¼™úçäädÖ¬[oçN|5rÞ^^DDF²jÍZ–.þš¢E‹räØqºvêÀC‡(]ª5ªWç‹Ñc< ?}zõ iO’’’Y¹z îu3ÍÖ¦ÎNµ)nm­Uu\\2´cnnΊ¥þÌY°‘£ü000À¦ZUjÕ¬‰«³n®®èëëg»]€Ä„DF ‚o—Îê2…Â’‘£üˆŠŠV—µkÓš®;åØžBˆüS _iæíÍog'úù%Ð?¯]ç^X>/\Ö}ðð!111x7õÒX×ÇË‹?®]ÃÌÔ7WWŽ=¦^vððšùxsûÎbbbpvr"..^ýªçîÆµë×IMMÕ:ÖœâÈŠ­-×~Ë_aÆ”ÉT«Z•cÇO0xøHZµÿD}y6;ãüFáÛ¥3*•ŠˆˆÎ…„ò󯤪þßWç‚Ü}B!2Q`g¤înu055%èÀAºtü„Àà`lmªQ¡|yÂîß ""íë/Ŭ¬4Öµ¶¶&>>žØØX¼<3eÆLbccyðð!÷< e3"#£èÞ»O¦Û‹‹ÃÜÜ\«Xµ‰#»¶J”(N3ï¦ê{¿^»Î¸I“3~?ìØží¶Ï…†²fÝz.^º„¥¥%T¬ˆ™©i†zfff³ã„Bd©@©¡¡!M7b_P0]:~BÐtíÔI£Nñâi—$£¢£)_®œº<2* ###ÌÍÍÓî·êéqâÔinݹCÕ*U¨ôÑGê˦³§O£t©R¶ÿâýÉœhÇËÎ_¸HŸŸ³sË&*Wª¤±Ì¦ZUôë‡ßø <‹‹Ë41¦·?hèpZ4oÆÜ™3°´°Ò&8t¸ w—B-ø“šy7åâ¥KïçßÃñöj¢±¼l™2XZXôÒìØÀà`ìlmxï½÷puvæðÑ£8xˆÏï±–-S…¥%OcŸR«¦ƒúuýæM‚öïÇÀ@ûãmâxÙÇU*ch`ÀŽ]ßgºüò•+”(Q"Ë$ p÷ï¿ILJ¢‡oWu =_лJ!„ ôŒÀ¹vm¬‹cÖÜy8Ô¨A©÷ß×XnhhHâ¿,€"úúÔ¨nÇÁÃG8Êêåêz^ž™9wJ¥R}ùÔÐÐÏúöaÞÂE„‡?ÂÎÖ†k×oðíú L76˘ÒÏd?A… åqrtÔ:Ž™™™1xàç|í¿„ÃÃiܰÖÅŠñ$ö)§NŸá×À fM›šív+}ø!&&&Ìœ;Οt %%•§Nñû¹BBC³¼¤œY{B!òW'Ò"EŠÐÔ« [¶mÇ祉<ézõèŽR©d÷{غ}+T`Þ¬™8;ÕV×iÔ°ÓfÍÆ©¶#%K”P—wïÚ¥RÉö»Ø¸e+åÊ–eÂ?Ú¶n•eLövv89:2kÞ|ÌLM9z Xë8^Ö³{7>®\™ÍÛ·³hé2ž>}Š……5ªWgå²%¸:;g»]…BÿÂùø/ `”iX)´nÙ‚[6ѽW9Jë–-rÕ!„ùGO%ÚBhG¯°â5£ùë/B!„N$‘ !„:D*„Bè@©B¡I¤B!„ üë/Bˆ7–Ìð"rF*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„ò=‘ž<}gWÜy’”””i{a÷qpvÅÁÙ•ˆÈÈ„{a÷Y±j5qqñyÖ߬^CF~¡sÛ…1FB!2W`g¤±±±?y2ÓeÁÁ…:a÷ÃX¹z qñqyÖæ¬iSX¾dq†×à µ¯B¼ÍÒ6Ã=ÊvyDddŽu_®/DV 쯿T«Z•}AÁx6j”aYÐþT«Z•kׯöxä§Úµy¿dÉÂC‘;–/YŒ•BQØ¡ˆ7\‘6ónʱã'x§yÖwûÎþºu‹fÞM5Ê×}·ŸÖmpª[vº¼€‘£üèÔ­‡F]•J…Wó–L›9€»¿§Uû¸¸{Щ[Ž;žmlƒ†ÀÓ§9ήZÅ¡‹„û „K½útèâKèù }Z¹z žÍZàR¯>ƒ†àßðð‚Ú]B¼õ înn-Z´°Co¸K¤ ë{ W¤‡Ñ(ßÌG~H•Ê•Ôe·lÅYM5bæÔÉTý¸ ~ã'pæìY¼<sýÆ þù÷_uýËW®òè¿ÿhÑ܇m;w1gÁB¼<=™1u U*Wbä¨Ñ?y*ËØ† ü€93¦³|Éb­âÈIBBqqñ^J¥R]gô¸ ¸¹º2yüXžÅ=côø êe6mfŪÕx6lÈôÉ133eÞÂEµ»„xë½|iWÛƒ×ܨ‹·_]Ú511¡a}~ ¢U‹æêòÀàý´jÞLýsrr2kÖ­Ç·s'¾9o//""#Yµf-KMÑ¢E9rì8];uàÀ¡C”.UŠÕ«óÅè1 П>½zд‰'IIɬ\½÷º™ÆfkS g§Ú·¶Ö*Ž:..Ùö·u‡Ž™–<ˆªU?Àý.}ŸÇ™’’Êĩӈ‰‰ÁÔÔ”µë7Сm[ÆùzÞ&ôî?€ó.Ô.â•~ û²ÄĤ,×I?xíüÉ'Ôv¬ÉC‡3¼nÛ¹‹ù_/¢g÷nT«Z•£Ç3rÔh–|½0Ëß/âíW`‰ ™·7_Œö#::+++þ¼v{aaøx7%ìþ}<|HLL ÞM½4ÖõñòbÁbÌLMqsuåÈÑcêDzððšùxsûÎbbbpvrÒøOTÏÝi3g“ššJ‘"Ú„çGNÍŸ‹•Â*Cy™2¥ùëÖ-ÿxÖÖÅP¦¤pÿÁC?y¢qÀ¡§§G I¤Bh!«Ù¬$%%åxðªT*Y±ju®ÔÅÛ¯@©»[LMM :p.?!08[›jT(_^H#"ÒfdzÒLBÖÖÖÄÇÇ‹—gc¦Ì˜Ill,>äþƒ´læCddÝ{÷Étûqqq˜››k«6qd×–­m–“Ò©"‹IQÑiý(^ÜZ£¼xñâù¸w„x{du {ùÊú/ÉP®ÍÁë­Û·óì@]¼] 4‘Ò¤q#öÓ¥ã'8@×N4ê¤'¨èhÊ—+§.ŒŠÂÈÈssó´û­zzœ8uš[wîPµJ*}ôúúúÌž>Ò¥Jeؾ±±±Ö±jG~)ñëÛ‡y þ;[®]¿Á·ë70iÜØ,cJ?“=vü*”ÇÉÑQë8²r.$$ËK·9144¤g÷nø/ À@_ŸÚ޵8pè÷ zw ñNÐæà5/ÔÅÛ¥Ài‘"EhêÕ„-Û¶ãóÒDžt½ztG©T²û‡=lݾƒŠ*0oÖLœj«ë4jØ€i³fãTÛ‘’%J¨Ë»wí‚R©dûÎ]lܲ•reË2aŒŸú¬53övv89:2kÞ|ÌLM9z Xë8²2nÒ”,—½ø›¬ôêÑ„„vïÙË{ÄÅÅ™¹3gл¿<Iˆ¼¦ÍÁ뫨‹·ŸžJ¥RvB‘Nž>Í a#þå§L/?ø+×oÜШ›ššÊÊÕkؽg/OŸ<ÁÅÅ™>Ÿ~Jïþ8ø«ú«që7nbûÎ]DDFR®lYzøv¥}Û6…ÝuQˆ$‘ !„:¹ÚB!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡ƒþ7 ;!Ä;à—ávBä 9#B!t ‰T!„Ð$R!„B’H…BH"B!t ‰T!„Ð$R!„B±‘Úֶ͘l–Ë¿óŒ)?>Èqýî«oóQ #¦µ-KÏoo«¤ŒÂFÕ,ø>$šøäÔ,ÛȬ^z»émeµÝ¬–¿J¿•©*þ}œLЕÇì9MªVýUâÈj\´/!„Ú)Ð3ÒAÿ2iσ ¯g"´nãæ£&íyÀãøJ[Å×ÕcÃ컢m½ì¶•ýžóë?œ»ûŒÞõJÐÑ©X¾uVý}•qâMpòôiœ]qoäIRRR¦uî…ÝÇÁÙgW""#µn3üÑ£<3«6Ó—k_AÅœ{a÷Y±j5qqñ¯uœù©@ÎHÓ]¾÷Jgv/zŸBÈßÏ $Þ¼ÚÖËý>}+€Ö5­Øþ{TôEˆwEll,ÇOžÄ³Q£ ˃ƒ ;¼|ggcÃò%‹±R( d{a÷ÃX¹z ;´ÇÔÔ¤°»_( 4‘jCèêjM3{KÌô¹ü ŽSŪ—¿|™3ýÒé¦Ï> «GfWï} CFù”æãRÆü“ÌŠÃá\~Ÿa[7¢w½âT-eŒzüùO<«ŽýǃèÌ~³óÇÃxÚÖ²Âİ)©*ºÕ±¦^•÷(fn@BR*×ÃØp2‚;‰™®ßÜ^A;G+Š¿gÀý¨$6‰ä·Ûÿ§¬ú›Ý8äÔ¦9Yâ[‘‹aq¬=þZܵÈÕªVe_Pp¦‰4hÿªU­Êµë× w ò‘B¡ÀÝÍ­°Ãx§èõ=#Ã"˜dò2(¢§®Ó¾¶ÝêXsúV,‹öÿK|R*ý”̲ÍïN§]žø“öeaпÜLdbË28`–c³*צM!rr),ŽöŽV hX=Ý›{%ͼ›rìø žÅÅi”ß¾s‡¿nÝ¢™wSuYbRþËhѶ=.î4ðòfȈ‘\¿y3Ó¶éÓÿsÚuêBÌãÇìÜý=­ÚwÀÅ݃NÝzpäØñ<íϺï6âÓº NuëÑ®Sƒ÷«—¥_½úÇôú¬?¾={g¸dš~)ûåWnÚôˆ~áR¯>ºøzþ‚ºÎ a#ðôi®ÑnnÇöMV g¤«>ý Óòõ'#Øy. C}=::#ðÊc–Nû¿ñ”¹ËcW&óK…§±] ‹':.ëËÆÙÕ ºò˜Ï/±êéÁMKaa¢¯QçƒâFXšè3öp8G¦>ŒI¦YuK ôõP¦d}ü~`h ‡]::ãä_OQFz¬;ñ?^ˆQ¯ó$>… -Ë 0ՌàˆÝ\­Ùt:’çÒb>qó)†úzøºZóûÝgÙö7³rmÛ"'ßÿ}=Z9(øæÈ£?3mX߃«VsèðZµh®.ßÌG~H•Ê•ÔeËV¬dûŽôëÓ›*•+͆M›<|$~ýY£Ý””¾3–þý—ï¾]ƒÂÒ’m;w1ÿëEôìÞjU«rôøqFŽÍ’¯âá^7Û82½¯˜˜øÿ+\·lÅYÝ»vÁ¾º‡Ãoü K길¨ëM1 ·:®¸Õq%%EsNÇò%‹5~žÿõbŠæªýÑã&P¿ž;íZ·b銕Œ?A=>C~β+™3c:ï½Òؾé 4‘Îøù!O2™¸þ$H;K{ÏXŸC>Q/SG®=Í2‘æ…EL\Z|úzšÇÓc’HHNåó†%Ùs>šË÷㹞ÀÍð„ÛÏìâü½8Vý@}РX™PÖª(«YCÍÊ‹*àÑ“dq°/kB'klJó4!…ûÑÉÄ'eþÕ”÷ŒÓÆèëÎ2]nR´Ïs÷µ–ühSˆÂÔÌÛ›/Fû••^»Î½°0|¼›vÿ¾ºÞ8¿Q@Z¢ŒŒŒäîß÷øù×@RUÿÿÌÏ]ð5‡Ž¡‡Ê—àÖíÛÄÄÄàìä¤qfYÏÝi3g“ššJ‘"Yß=[4.V « å—¯\a¡ÿ<|HLL ÞM½4–ûxy±`±¿F™«‹sŽcòàáCæ-üšñ~~|P±"wÿþ[ëö_<(°¶Nû¶2%ûߛڎíÛ൚lõül°˜™ÿog~à?ü÷4c›‰É¹?uÌ6Å»Iа$­üt1†Ÿ øl4»[LMM :p.?!08[›jT(_^#‘ž eͺõ\¼t KKK>¨X3SÓ í]º|™þýú²jÍ·œ9{–:..<~œvå¬{ï>™Æ‡¹¹9Y±³µåý’çÄŧÝÛˆHûúK1+ÍdkmmM||<±±ÿŸhf–ý\†ÔÔTÆMšB“Æiùü¬<7í+^a°¶cû6x­iø“džÄ§Ð¨šWþÿ¯AU‹ÂJ%Œ˜Üº,Ÿo¼K\R*çïÅñžq4~ÍJclX„„W|¸A9«¢Õ×cÏùhu¨^6óKÙÿ>IæiB fFú¹þT]ÞÒAA9«¢㦭ühS¼›úz”P'Ѹ?šÎÐÐ&±/(˜.?!èÀºvê¤Q'2*ŠAC‡Ó¢y3æÎœ¥EÚ§OsàÐaº çÍÁÁÞžS§Ï0oá"vnÙDÉ’%˜=}¥K•ʃ±±±N}(^<í2iTt4å˕ӈÛÈÈ(Û$ý²µ¾ãɓnjó[’/í¿,7cû6(ÐDj_Î4Ë˨!?C™¢bwh4½Ý‹“’ªâʃxêV6§Œ¥a–m¦¨Òþ«º|dÆÃè$.?ˆ×©^VÆ$SÔ@Ñ>¥ÙÿÇcL‹¡“³5×þIxå$ p/*íÞë F%ùåÒcЧ̨QÎôù˜™h\VU¦¨Øz6Šþ JPÜÜ€›¨T˜ŽNV,;ôÿ/6gÕßÌʵmSˆœÔ(oÊ÷¡Ñ…úõ—tͼ›2`ðPƒ÷óï¿áx{5ÑXþ÷ß“˜”Dß®ê_ô!¡ç3´UºT)ôôôóÕ—ôèÓ—í;wѱC{––<}JóšÞêºÛvîâîݻԪé SüeË”ÁÒ‚ àý8ØÛ«Ëƒƒ±³µÑºkׯ³î»lX³J#¹çUû™¹›‹±}h"ýÊ»T–Ëҿϸ;$ c=¼«[Ò´º%ïÅ17ðæ}R>Óõnü›Àåñ jX’øäTº|sK§zY‰ONeúOéëQ‚/š–"!YÅŰ8¾=ñŸNcò$>…é?=¤—{q¾hZŠÇñ)üó C6ÿÍ¢.p«dÎ?žh¬³÷|4E E´ï}þó8™€Ã¾ú8ÇþfU®M›BädØ–¿ ;5çÚµ±.VŒYsçáP£¥Þ_cùG~ˆ‰‰ 3çΣó'HIIåÄ©Sü~.€ÐÐ geöÕíhÕ¢9ËW­¦¹7Ÿõíü…‹„­ ×®ßàÛõ˜4n¬ÎñÒ»ç§ø/  ˆ¾>5ªÛqððÎ…„²zy€ÖíŒ8‰õêþè‘ÆS„ÜÝÜò¤}}ý´[oÇŽŸ B…ò89:RéÆöMV ‰4äïgY>(áe*l:ɦ3šÇJ_?äo¥F[qI©ŒÙ–c»™ÕË,®Ë^ÞÖÕ‡ñ|±ý^ž÷ûBX#¶el·ßú;úŸnwH4»C²žù–Õ¸d7^9µ)Ä›¤H‘"4õj–mÛñyiB ¤Ý÷ó_8ÿ¥L˜2 +…‚Ö-[°cË&º÷êá#GiݲE†õ†ÌÁC‡Yº|ÇE©T²}ç.6nÙJ¹²e™0ƶ­[åIzõèŽR©d÷{غ}+T`Þ¬™8;ÕÖºÛwîrûÎ]~ Ô(¿øûoyÒ¾½NŽŽÌš73SSŽ~å±}Sé5_|½°¯À!Þ¿ ÿ¸°C"_ȓ˅BH"B!t ‰T!„Ð$R!„B’H…BH"B!t ‰T!„Ð$R!„Bz‘‘‘ùò@†bÅŠvß„Bˆ|'g¤B!„$‘ !„:0 íoñ !DA‘ç{‹·Šœ‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„xkœ<}gWÂ=ÊvyDdd¾´Ÿ×î…ÝgŪÕÄÅÅçË8¼êòÜnÿUûñ¦D*„Z²³±aù’ÅX)²½°ûa¬\½†¸ø¸7ªŸ/¯_Xý((…€B¼) înn…ÆkßÏweœÒÉ©âµî»ø´nƒSÝz´ëÔ…Ààýêeé—'¯þñ½>ëoÏÞ.Y:8»fúÊMûáÑoà \êÕ§C_BÏ_P×4lž>Í5ÚMLJÂY-Ú¶ÇÅ݃^Þ 1’ë7oæÉ¸¼[úû{aaô0wÚuê̹ÐP.]¾BçîŸâìîA›O:qúÌoÖÏ®o 9#B¼u2½—˜˜¤~¿qËVü—нkì«Ûqøè1üÆO@¡°¤Ž‹‹ºÞÔ³p«ãŠ[WRRR4Ú[¾d±ÆÏó¿^LQCÃ\µ?zÜê×s§]ëV,]±’Ñã'pàן2ðs–­Xɜӱ°xO½Î²+Ù¾c'ýúô¦JåÊDGG³aÓf©^7¯øj4mZµ¤}ÛÖ,]±’/FùaddħÝ|)VÌŠ¥+V2~òí˰nVýx[H"B¼uZwè˜íòäädÖ¬[oçN|5rÞ^^DDF²jÍZD×®Mkºvî¤i½èÅË—{~ü‰ðGálýnC®Ú÷p¯Kß^=HIIeâÔiÄÄÄ P(°µ©€³SmŠ[[«×ILHdÄÐ!øvé¬.S(,9ʨ¨è|Ó¾]iצ5Ê”&MÎôÉ“hݲ…FYÌãÇÖͪo I¤Bˆ·Î¢ùs±RXe(¿|å ý—ðàáCbbbðnꥱÜÇË‹‹ý5Ê\]œsÜÞƒ‡™·ðkÆûùñAÅŠÜýûo­Û÷p¯«~omöç'•/ù¾lœß(T*‘‘‘Üýû?ÿ@ª*5_ÆÔÙ©¶ú}z2̬L©TæËö_g’H…o;[[Þ/Y2Cyú¬Ñˆˆ´¯¿³ÒL¶ÖÖÖÄÇÇ«.333Ëv[©©©Œ›4…&Ó²y³\·¯x…™±çBCY³n=/]ÂÒÒ’*VÄÌÔ4_ÇÔðù%ëœÊÞE2ÙHñÎ)^<íì)*Zó2hdTFFF˜››kÝÖÚ ßñäÉcõYb^·ÿ²È¨( NéR¥üéGÜËÊ¥Khß¶Maë;K©âS¶L,-,za-@`p0v¶6Z·síúuÖ}·‘ù³gallœçígæîß“˜”Dß®XZX¨ËCBÏæ¾ÓäÒ®âchhHâ¿,€"úúÔ¨nÇÁÃG8ÊêåZ·3vâ$Ô«Gø£GOrwsË“öõõõ8vü*”ÇÉÑ‘J~ˆ‰‰ 3çΣó'HIIåÄ©Sü~.€ÐP­ÏxƒÌ0‹ÖÔÄSS“<ïÌúñ6‘D*„x'õêÑ¥RÉîö°uû*V¨À¼Y35&Ðääö»Ü¾s—_5Ê/þþ[ž´oog‡“£#³æÍÇÌÔ”£‚Q(ø/œÿÒ&L™†•BAë–-رeÝ{õáБ£ê™´9Y°hq†²Ò¥K1qì˜<ëÌúñ6Ñ‹|ÅgNæ¤X±b…Ý7!ÄëIUØ‘—ä©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤Bˆ·ÆÉÓ§qpv%üÑ£l—GDFê¼ ]ÚÐ6^ñfD*„Bè@©B¡I¤BˆwÒ‹—Uû „K½útèâKèù ê:*•Š•«×àÙ¬.õê3hØþ ÏÐÖºï6âÓº NuëÑ®Sƒ÷g¨³}×.Z¶ë€‹»Ÿtõ%hÆ:‰‰‰ôéÿ9í:u!æñãÂ"¡%I¤BˆwÚèqpsueòø±<‹{ÆèñÔË6lÚÌŠU«ñlØé“'bffʼ…‹4Ö߸e+þËhÒ¨3§N¦êÇUð?3gϪëlÛ¹‹Ùóа¾³¦OÃÎÆ¿ñùý\ˆºNJJ _ŽË?ÿþ˪€e(,- {h„– ;!„(LîuéÛ«'))©Lœ:˜˜LMMY»~Ú¶eœß(š6iBïþ8á"ÉÉɬY·ßÎøjä¼½¼ˆˆŒdÕšµÔqq!%%…•«×Ð¥ã'ê:M7â¯Ûwøy_ væ;aÊTþüóëV¯¢D‰â…=,"äŒTñNóp¯«~om] eJ ÷<äñ“'´jÑ\½\OO>>êŸ<|HLL ÞM½4Úôñòâk×øëöm¢££ñy©Îª€¥|9|s|ͯAØÙÚR¡|¹Â‘K’H…ï4…B‘iyTtÅ‹[k”/þÿ³Åˆˆ´¯À³²Ò¨cmmM||<±±±<Žy¬.{‘™™ïpéòeú÷ëËÑãÇ5. ‹7ƒ$R!Ä[ÃÈÈ€§OŸfºüÉ“´rãçõ²SâyÂLO–é"_øþhz’ŠŽÖ¬…‘‘æææêË´ÑÑ1uî…Ýçò•«,œ7‡Aý?£ºó."%%¥°‡Rä‚$R!Ä[£j•*-Z”_ƒ2,KMMå§_~åÃ>ÀÜÜ<Ƕʔ.B¡àç}û4Ê÷«ß—-SK ‚^š¥Œ­ åÊ–ÅÒ‚à4êL™>ƒï6m t©Rèéé1æ«/¹}çÛwî*졹 “„o÷Þ{!?çkÿ%ܽ{—XZZþè?ÿú+×®ß`Ù⯵jËÐОݻá¿,}}j;ÖâÀ¡#Ü Ó¨Ó»ç§ø/  ˆ¾>5ªÛqððÎ…„²zy€ºN¿Þ½X´tèéQ³F NŸ9Cè… |ÚÍ— Ï“)€}u;ZµhÎòU«iîãåegñz‘D*„x«ôìÞŠ*°eÛv,öçÙ³g³²Â±V-&ŽCÕ?Öº­^=º“Àî={ùa︸83wæ z÷ QG©T²û‡=lݾƒŠ*0oÖLœj«ëôèæ‹2%…»w³cç.*VL«cffª‘H†ÌÁC‡Yº|Ç-ìáZЋ̃çEf¦X±b…Ý7!ÄëIUØ‘—ä©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤Bˆ·ÆÉÓ§qpv%üÑ£l—GDFæX÷åúy¡ÿ !88»â°<ÛØµíÇ‹/§ºõhש ë7nB©TؘêÚn^ma2(ì„¢0ØÙذ|Éb¬ŠÙ^Dd$¿‡„`fjJðþ éêKÐþŒuéÓÿsÚuêBÌãÇZ‰¶cû¦’D*„(hzÏ_ù&!!¸¸ø ¯ÄĤ,×Ù°i3+V­Æ³aC¦Ožˆ™™)ó.Ò¨³mç.æ,Xˆ—§'3¦N¡JåJŒ5šã'Oeσ‡¹tù -š5ÃÈȈúõê¼ÿ*•*_ú_·N._½ªnã–­ø/  I£FÌœ:™ªWÁoüΜ=«Ñ·Ùóа¾³¦OÃÎÆ¿ñùý\ˆºNJJ _ŽË?ÿþ˪€e(,-µmÆöM&—v…oÖ:æª~RRk×o CÛ¶Œó@Ó&MèÝç/\@©T²bÕjèOŸ^=Ÿ×ñ$))™•«×àá^7Ëöƒ÷cnnNƒúx{y´?.^¢VM‡<ïÿû%K’˜˜Hll,ÆÆÆ¬Y·ßÎøjäˆçÛ÷""2’UkÖRÇÅ…””V®^C—ŽŸ¨ë4i܈¿nßáç}@ÚYå„)SùóÏk¬[½Š%Šk5&ÚŒí›N©â­³hþ\¬VÊ/_¹ÂBÿ%Êï?xÈã'OhÕ¢¹ºLOO>>ê_ö·nß&&&g''âââÕõê¹»1mælRSS)R$ó‹|û‚‚hP¯)Êâ”ñÔ®U ‚öïÏ—Dª§§§þ÷ÁÇÄÄÄàÝÔK£Ž— ûð×íÛDGGãóRUK9vâ$c&Ld9tä <<¨P¾œÖc¢Íؾé$‘ !Þ:v¶¶“pÒÅÅÇeZ?*: €âÅ­5Ê‹/®~ÿøñº÷î“iqqq˜››g(¿uû67ÿºÅÍ¿nñK` Æ²ý1úË/²LÀ¯*üÑ#Œ133ãÚõ³Ò<°°¶¶&>>žØØXÇ¥VMõëúÍ›íßAæç%Áû©W·.NŽŽëuþäŠ-šéÌX]œ9{–#ÇŽÓ±};uÜ–½4K708;[Ê•-‹¥…Á4gO™>ƒï6m t©Rèéé1æ«/¹}çÛwîÒjL´Û7œ‘ !Þy†††ôìÞ ÿeèëSÛ±á^X˜FÏúöaÞÂE„‡?ÂÎÖ†k×oðíú L76Óv¯\½JØýû þ|@†e¦¦&ÔquáÀá#ŒóýJqŸ Q?!>>óçÙõý4mÒ„¦Mš¨ãîÝóSü—PD_ŸÕí8xøçBBY½<@]§_ï^,Zº ôô¨Y£§Ïœ!ôÂ>íæË†çÉÀ¾º­Z4gùªÕ4÷ñÎqL´Û7$R!„zõèNBB»÷ì函?âââÌÜ™3èÝÿÿI°{×.(•J¶ïÜÅÆ-[)W¶,ÆøÑ¶u«LÛÜLÑ¢E©ïQ/Óåžqìø ¯¡äƸISÔï )_®,C~N·®]2ôM©T²û‡=lݾƒŠ*0oÖLœj«ëôèæ‹2%…»w³cç.*VL«cffª‘H†ÌÁC‡Yº|ÇÍqL´Û7™^~]§.V¬Xa÷MñzËŸ/Q QÀä©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤B!„$‘ !„:D*„Bè@©B¡I¤Bˆ·ÆÉÓ§qpv%üÑ£l—GDFæX÷åúy¡ÿ !88»â°<ÛØµíÇ‹¯Únî´íØ™ ›6“ššš'ã•™{a÷Y±j5qqñZ•¿ ò«áÈ#GxXØýB¼&læÌ)ì4ØÙذ|Éb¬ŠÙ^Dd$¿‡„`fjJðþ ¡¶cM:̼…‹4êlÛ¹‹ù_/¢g÷nT«Z•£Ç3rÔh–|½÷ºY¶ýàáC.]¾ÂüÙ³022¢~½zï?À—Ç¡§§—§}¿ÿàÆÆÆ˜˜óõ’¥lß±“~}zS¥re¢££Ù°i3ƒ‡äÀ¯?gXW›þ ø9ËV¬dÎŒéXX¼§^7«òìÚt¬éÀ€ÁCùðƒŠŒ÷óC¥R±nÃw|é7†][·äñ§"ÿä[" ÏäHNñî*V¬Xm«u‡Ž¹ªŸ””ÄÚõèж-ãüFдIz÷Àù P*•¬XµšÁúÓ§WÏçuú€ ʳëûHNNÆÐÐ0/?ù&ß©B–Eóçb¥°ÊP~ùÊú/ÉP~ÿÁC?yB«ÍÕezzz´ðñQ'Ò[·oƒ³““ÆÙn=w7¦ÍœMjj*EŠd~·l_P êÕ#E™Bœ2žÚµjabbBÐþý:%ÒÌÜ\]õÅHõAJ¥"22’»ßãç_Ó&¦ª4göêÒ¿¬äÔf¹²e111aöüôð튓£#v66Ø·yå1) ’H…o;[[I8éââã2­@ñâÖåÅ‹W¿üø Ý{÷É´¸¸8ÌÍÍ3”ߺ}››Ýâæ_·øå¥o2ì?xˆÑ_~‘ë•îÅ==(]º´F¿Ï…†²fÝz.^º„¥¥%T¬ˆ™©i¦m½jÿ²“S›ÆÆÆ|»r9߬YËWcÆ¡T*quqfÔÈê3Ô7A%ÒèèîݿϳgÏP©T…Ýo!D³±y}Ï2J:r”Ö-[h¬£MÿìíìprtdÖ¼ù˜™šrô@p¶å9µ¹xÁ|úû3aÊTLLŒquvæ‹áà pÏëN/2ž!ù²¿þrñòbcc »¯BˆBÔ¯Oï—‹d²„x+È“*¼pó^!„x›H"µ²R`[­æææyþ!„¢0Ø×_¬¬XY) »¿B!Dž’‡Ö !„:D*„Bè ß.í¾ÿþû…Ý7!„"ßÉ©B¡I¤B!„$‘ !„:Dú8ʲ•ßvBñV’DúøóÚuvÿ°'ËåQÑÑŒŸ2ŸÖmiÓ±3+W¯!%%E«¶Ïž;G#ïfLŸ='ÛåQÑÑZµ÷àáCÖoÜD||¼VõóRrr2»~ØCßÏѼm{ÚuîʈQ£9ýÛoy§J¥"`å7´þ¤Íڴ˱üeOccñXŽo¯Þø´nç}?cóÖm(•ÊLë§ïƒ–í?!999ËqoäÝ,WûJ‘Fþ°·`ÖÜùܽw‘C‡Åú›033£‡oW­Û8tä(žQ·Ž«N±xP–ë={öŒ3gÏâáîžaÙ¡#G t¬…x›H"}ÇEEGrþ<ãýFÓ¤q#ââãù~ÏÞ\%Ò?ø€EK—â`_33³ÂîV®Ý ãäéÓL›4A#Ñx{5aÞ׋ønËVÚ·m“'¸|öì­[¶ ˜•UŽå/ŠˆˆäÌÙ³L3ÏFiûËý.FFF|·y à Ì2Æ*•+qðð‘Léá£Ç¨R¹7ÿºUH{@ˆ7—\Ú}ÇÝ¿ÿ€ªWQ—U­R…˜Ç‰‹‹þi𿈈,Û1t0OŸÆ²bõšl··mÇNºôèIÓ­èõÙ€ gB~ã'С‹/¼›i,ûñ—_èÞ»/Þ­ÚðÙ Áœ:}&Ûmiwº˜˜Ç”+[6òÖ-[P¯®III9Æ™””Īo×âÛ«7Þ­ÚжSgÆLœÄ­Û·s\7»¾§{Gìkh”—,Q‚„„²þ“…6äôog‰{érôß÷îqçî]7l˜«ñÖ¦¯·n߯oüDZwè˜ã>âM%‰ôW¹ÒG¬\º„Ò¥J©Ënݾ‘QQõ%˪U>fîÌé(,-³l§t©RôëÝ‹_örþÂÅLëìüþV­]GýzîŒ=ŠÊ•>búì9„œ?¯®Ó·WO&ŒñcîÌéêò=?þÄÒå+iX߃±£¾â£>dâÔiüvö÷,cÒ&ît•>ú÷Þ{særüä)Õ˪}ü1£FŽÀÈÈ(Ç8¿]ÿ»÷ì¥YÓ¦L7†Ïz÷æáÃð›0)Çu³*QÅ å™=}*Å‹[£T*‰ŠŽæâ¥Ëlßµ 'GÇl/3»»ÕAOO'Oi”<|„Š*ðчäj¼sêk\\_GBB#†Éqñ¦’K»ï8SSS³ÑßÏ…°mçN7h¨¾Dhii‹“SŽmuhÛ†ÃG2ñbÖ}³R#ñ(““Ù¼míÛ¶aЀþ4jPŸ¨¨h¾Û¼•Úµjðq•ÊԪ頾¼©T*Y¿i½?íoçN4¬ïARr2ë7mÆÕÅ9Óx´ÀÌÌŒy³f°tù &M›ŽU*WÂÞ®:޵jâäX }}}uýÌâHLJd@ß>´oÛF]faaÁ¤iÓ‰‰‰A¡Pd¹nVåY9pè0s~ ¤‘Λ9#ÛúÆÆÆ¸»ÕáÀáÃ4mâ©.?|ô^žÿ¿¯´ïœúzÿÁCb?fÑü¹|P±¢VûAˆ7‘œ‘ í¾èâ¥Ëð›0‘Rï—b`ÿ~¹nCOOÑ_Œ$â¿Ö¬[¯±ìŸÃyüø Ô×(oÔ >7nÞ̶ݻßãñã'Ôrp >>^ýruvâ¯[·HMMÍ“1¨öñÇ,^Ä®-›óÕ—T©T™Ó¿ýƘ éѧŸÆ%ˬŒ2˜ömÛ R©ˆŒŠâÂ¥Kì?x€TUÞþë:.Î|=wŸÖØgÏøfUŽëx6lHèù Ä®R…reËòðŸr5Þ9õU¡P°hþ\6nÞ”3iÙ¼ùíäéÓ ¦·¡¡!åË•£M«–tïÚ%ÛñÉ{a÷ùeß>zviÁÎ0QÿACøí÷ßéÓ«g†YÛéãüËOüuë–úýû%Kj5v”/WŽvmZÓ÷+EŠä|îõâ63ÛNnÆòuãœH"} ¨T*nþõ¡ç/pûî]"""ILJÄÜÌœŠÊg;ÙæŸþeÄW£IJNÒ˜ ª ßÎ8züó¾^Dÿ>½°.V €è˜Ê”.­®ƒ‘QÑlañâÖL3š’%2þÇ|ñò«º|å*#FfÍŠ>üàeU*WæÓnݘ>{qññ˜fq2::šÑã'àåÙ˜IcÇðÞ{ïi“žŽ8¡sŒvÿzÞ׋™:q<¥^øÃeÊ”&%%…ø„Þ37Ïr}ê׫ÇÁ#GhÛº‡£]›Öšãm]<ÇñÖ¶¯Õ>þ˜™S§˜˜DAš5m Šçmqqñœ aÙŠ•\¼t™EóçæÉ6Ârõ:vh_h¿ä#"#ù=$3SS‚÷ÈöëO¯2v‰‰I„„†²xé2’““é×»W¾ô#«±|ÆX’Hß`J¥’þ…ï÷þȃ‡3­söܹlÛØ¶sOccóÕ—y’D!í—õè/F2hø6mÛ@éRïóÞ{ïqøè1ìllÔu9JÕ*gÛ^éR¥°°° 6öžìÔå{~ü‰{a÷±¯n‡®*}ô!ìýùF œaùŸ×®amme»ÿ€¤¤$:¶o§N,—._É“q°´°äÆÍ›\¼t™R^ÿO¤/_A¡P`®Å™¹gÆ|5v‡ŽåÑÿe¸Ü^ºÔû9Ž·6}½ù×-ÆMžÌ†Õ«05ÍŸ³ò¬8Õ®­q6äåÙzî ñ¿ÒÂǧ@ãÉ/ÁûP¤H¾>Œé³çpåêUªÛéöÿáå±K¿ì¿yÛ¶|K¤o:I¤o¨;wï2qêô,è˲º$s.4”"zz¼÷Þ{’®cÍšðøñ®ß¼A- µÚ^իЩC{¶íÜ€¡!¾:²jí:Š)‚mµª?yŠ —.±pîlõzézNŸùreËâPÃzøveÙÊoø/"‚ªWáæ_·Ø²}_–e ¹‰ÛÔÔ”>=?eåê5ü÷ßÔ«[++±±Ï( h »IDATøý\fÜèQÙÆY±BŒY¼4€6­Z’’ÊÙßÏqþbÚ,æ‹—.gHZ¹U¼¸5.NN¬ü†¨èhJ—zŸËW®²ç§Ÿüù­¾çZÓ¡V ‹—`gkCÉ%4–æ8ÞÚôµŽ‹3IIÉLŸ=—fÞ^´mÝ:ÇØòS½ºuñ¨çÎ÷?ìÕH¤;wÏw›7þˆ>ø€AúÓ°¾×oÞÄi—¯^A¥{{F9’Š*¨/ƒzú4Oëóï¿©/knÙ°Žù‹“””Ì– ëX÷ÝF¶ïÚEDD$åË•c@¿¾ø4õb÷ž=Ìš;Ÿ£ûƒ0ájBGßnØÚØ0uâ„,û´/8˜zuÝhÕ¢9 û¸ÿ€Î‰43µjÖdÓÖmÄÅÅ£o ÏÊU« >pÿþûSSìíl:xU«TÉtýìÆÈt,³+×e¿å™lôŠ}ÆWcÆiDAó{¢/ŠŒŠ"U¥büä)øŸ¨ñzòü^Ùõ›7ð?Q=AE[½zôÐø^f玟Чç§=~‚™sçsûÎ]&K-u›ªUq¨aÿ²&Mÿÿ,ÔOÚµ¥o¯ž<|„é³çrìÄIFB3ï¦Yn?·qwþ¤ógÍ$5UÅ7ß~Ë„)ÓXù ±Ïb™?k¦úžiVqZZZ0sÊdâ♳`!«¾]Ëûï—dÍŠÊ”.͉S§´Š#'ãýFQ¯n]¾ß»—y_/æ?¯1yüXÚ·Ñ.Q)R„† êóôéSIF/Êi¼µé«‰‰ 3&Oâñ“ÇÌž¿0Oú®«ºuêpùêUTÏ'~mÛ¹‹9 âåéÉŒ©S¨R¹#GæøÉS<{öŒƒ‡ŸÏx??Æûæ¿ÿþãK¿1 ø9sfLgù’ÅÛ™:cöö <€[¶â¿,€&1sêdª~\¿ñ8sö, < B…òìúþ’““±µI{Œ£³SmŠ[[kl§]›Öt}þÕ¡äädÖ¬[oçN|5rÞ^^DDF²jÍZÖ®Z‰}u;Ž?AÓç‰óÀ¡C(,-³üj@`ð~ÌÍÍiðü,ÌÛË“ ýû¹pñµj:𪈋K{hGRR"¡.°výš4n„žž‰ ‰Œ:ß.Õë(–ŒåGT”æï%¥R™í{¸×Èr,3+ϩ͜ö›¶WÕrCéèãÊ•QXZæx¦eh`€gãFôíÙS=aGˆwYú¥o===nݾMLL ÎNNêÄPÏÝi3gS®lYLLL˜==|»âäèˆ vãmrÜ΋ ðÁÇÄÄÄàÝÔK£Ž— ûа~}¾Û´™ÔÔTŠ)ÂÁÃGhܨ¡Æw—_¶/(ˆõê‘¢L!NOíZµ011!hÿ~ifO¡rsuaÔioãüÒnq¨T*"##¹û÷=~þ5€T•æWÑrãôþæF~î·ÿµwö1Q×qq îwÀøn<ºþ’Aâ¡|€˜Ö–<Ì ¥'Ë9ÓJŒ‘#  (%a³pšeÍ™p‡<‡@Ü¡.\.7„ Î.ØÙúƒ8=áxR4ì÷Ú~ÛíûýîîsïÏŸß÷óûü>ßé"ÒYˆ‹‹3…û8~âGêêèììdÀ`@游0žþ~~,_ºQt|ÐæJHügèêîFìíí¹~ýOâ×%޹V ?ͧ`ÿ¼³-£ÑHpP ïn~Ë´Ó±ÄíUèW¯öŒj²áììŒÁ` ¯¯°Ðróòi9wWWWZÏŸ7¥5Ç¢ãâEÚÚ;hkïàDI‰ÙœöT9[ßÞ2å5ÂîÌtœ”öZY«««YñQ“^Ïþ¢œmiAEæyyao¡˜l"Ìž O†™ôÛt‘é,å''âãHˆ{ЦHHÌêXä³+++æÎ.²úøÃf-2Gµ·7¹Ÿìbppý™³ì+øŒ ›6Srü‡IÿæH6¨÷Ú5<=MYyŨõ“ÑxªÜ/¿M©ØHBBâA}c#•Õ5<ÿìðY¯înn(E‘}7Xìçkº.´µQªÕÒÞÑÁS«"èïïG.—óDpq±1t^¹2¥shÝÝÜ)ÕhÍÆK4ÔÞ·Ò¡!!TÕÔRV^ÁŠ'ÇOë–h´,[²„3Ûc¢£±µµ¥T«e&øýÒ%‡†Xób¬)ˆèôÍc®ŸHãé4Ǹ_~› ÒŽTBBâ¡£I§350þB×ÜÌÑïŽñôÊ•¦‚^}9‘Œ¬Ýtuu£ö^À¯~£ðÀ—lO~•§Š¡¡!’RÞgud$}ýýáëãƒB¡0ºêšZT*OüÇ.R³±±a]ÂKäìÍCfmÍ¢…jNUTÒ¤Óóy~ži]Xh¿.F&“ñÚ+‰ÿÛ/­­üqù2Ö¿>jÎÎNÁãÁA”UT’œ´õžëúèüù( ÒÒ3ˆ‰~Ž›7ÿ¦¶®ŽŸ›tèôz³TíD`I˱ÆïÖo3H%$$:’·§š>·tgã뉻£b<>öŒF#‡¿9ÊÁâCx¸»“²-‰ÕQ‘dïÊ$+'‡”ÔP(‚Ùòï»´>j5þþìÌÈÄÞÎŽª2E{Ö®‰Çh4òí±ï9tø^*;Ó¼-}»Ø×¥(b%“{ØÂÉR ¶¶¶„,_6æüа0ªkj©ol¼çº*•Jr²2ÉÙ“GJ꜔J¢"Â9Rüñk)¯¬"*"|J§¥¥ñ»ñÛLð²ÈÑ”ª›tEXtCommentCreated with GIMPW%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/playbackcontrols.png0000644000000000000000000000013213135434036021006 xustar0030 mtime=1500919838.116648472 30 atime=1500919915.683315139 30 ctime=1500919913.363315139 denemo-2.2.0/docs/images/playbackcontrols.png0000644000175000017500000012627313135434036022672 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRZé›MÄ sBITÛáOàtEXtSoftwaregnome-screenshotï¿> IDATxœìÝuxGð9"'$HŒ‹á§H!$¸»kzq·"Z(ÅIñ¸4®Ä]ˆÛ~l¹Þ—\.w!IßßÃóY™wfgvnçVŽ€Â0ìcV*BHG×@·VS]†Š{IüÒ9€/†C€ÿ(þ£Èþ.//ÿ"ù€гgOÑtãáø2èÆàf9À ‡ÿQ0üGÁpðÕøU ¼ ‰‹ý©¬¬lJ£=J[K Ÿsøø‰!Ý\åŠZSSsâÌÙ¥‹ö407Ç0Y¬ƒGŽÌcnfÖâÊ©iéAŸdç䚉ñ$??ûþ­Ì€Ûi€¶ÕÂÕ¡¬ì‘Ñ1¤Ïjjj¯þþ‡ÿ‚…EÅÅø Q1±…EEòFe²X¡á tE²üÿx\^hxDMmm‹kÞ¼õ×Êuë ‹‹†x rà\RRºvÓæÛ÷î·2·ïÝÿýæŸrm¢ØN´­®!„”””vnÝ"ú³¸¤dñŠUW®ý¾kÛ)[u6é™™.]ž?ÏÞœ¯E3;~ö¯Æ nÍEªŒÌL‹Ýyt¨–‡C˜÷±³ÍÍËmº(%-íUüëÚº:=]]OOÍ$1)¹®¾~ØÁ¢uÂ"" ô ´´4B†…„…'&%©ªªúz{Y[YIIJ´(ûcNHX›Í±±±åëÛ(EEÅ II.œ ÿÿ”~»ö»‘‘ÑÜÙ³Äg.˜ç÷jòÄ øœ¼üü°ðšÚZš‰ÉØQ#555ñù¡á¶½m8Îó—Á\o€“ã„PLl\Ii)—ËýûÉÓÑ#G„GFõµ³«­«{öòe ÿ\m-­æ|qr¿JA(––•ij4>­züdÕº IÉl6;84lÁ²åYÙ‹Š‹¿ýáG:¯SQQ±ÿ‡Ÿ>ÕÔàžŸö×_ïM§3ž<^ZZ6wÖ¬F«Ý¾wßoì˜ëÖ"„ø|þœù £cc§MžtäÄɘ¸¸Q#|B/CÃ444¹»á£‚Oµ5—ÏŸÕÐÐàp¸[vìÕ|b±Øßí݃¯ö"8äØÁ_ìlm[Lðeµ|uˆÍf¯ß¼ÿ·{ßþ´ôŒ¥ Œ3ºÑjGü¼jùr|šÇãb±Ø.ÎNá‘‘øüàÐP/O2ùŸ1ØŒ©S544BJJÔ€¹sJËÊ>æä6—B(þÍ[&“)ºá­—µÕæõëtuuBùùë6oÕ×Óm:B±Øl„¦¦†”b¦¥gTTTÌ›3¿‚¤¥¥9e„ˆ¨(Ñ ÞžžøX!ÔËÊŠÍ–ü¼—§­­, ¾¬ÆW‡‚‚‚DÓ~~~!UUÕ?¯]ÅçHD‰ ‰Ä‡AA©éé…EÅEÅEŸï5|øáã'˜,VYYyNnÞ¦uëD›X˜›‹¦­¬,Beåå¶½mšKª¤´TMMM4&A=ª®®!tüô™þýú%%'§¦¥õëÛ·QÞt´µBµµuM³ý1'G ô¶±)-+#f¦4Ñ"ss3‡û©¦¦‡ŽBÈ@_ObÁ驯OHIP4G|o:>ÌÁI¸YN|1Bˆ@ ¨««IO‘Éd.^±ŠD"M™8aâøñ½¬­¶îÚ/:xðácÇcãârróLi´>v¶¢­ø|þ¿Ó<>BHUEEJRÊÊÊB¡PbfÏœ±0`ÞŠ5ë;qþÔ Ñ(œ¾¾¾žÞ‡ÄÄ>Þ6ܲc—í÷{¿¡R©† Ѷx–D™$ezÎJ´Z‹ ¢&»Ю]ûU %¥¤VTVþ°ïWÓ¦:;9jhh0™L|‘ººš«‹KXDäËÐ0ü "±­RDÓ II!SSš”¤h&Æ,« °P´Õ†­ÛnÞ¾ràL 6®[›_PpëÎÝFÙ#£Fø¾ ).)ŸÿæÍ§šwWW„ÍÄ!”’š&Zš’–¦ª¢¢¯'ÓE¡¦Ú?þÍ›_5ìÙsÌÈ!›^Ö}ìlOŸ¿P]]JJN¹ÿ(hÌèQMŸDjJ 4Ùš@îß’Èζ÷ÐÁ;¾ÙkJ£ÕÕÕÙÚö6dðãgOMŒ¦M™<ÔÃL&÷íc×èý×Ó§NY³~£ššZN£™¬Y±¼Å¤¶oÞ´kß¾I_ÍTWW¯¯«›;{–£½ƒxš æùGDF=qêç￟¯¬¬|è§:xhÛ®Ý$ Ã0¡PhӫמíÛ”””ðu6¯_·m÷73æøkjjÖÖÕ¹º XÐbÙ {ö¼þ×ÂeËO9Üh‘b :!„aØÇ¬T„Ž®aPP´¤¤¥•—W˜›™Z[Y1™Ìø7ozYYÓh&t:cú×_¯]¹rìèQ6)--KÏÌÔÐPwrpà§¹¤B,+!)‰Çãõ²²622”7“…EE9¹yB¡Ð”FëemÕh)ÇKHJª««£™Ðl{ÛÈ’ ŸÏóV  4D"µ>A@;ÁÇ;5Õe¡ˆ°—m9jέ;w.ývíîÍ?TUUÛ6e]£áPÛÜ,ל²òòõ›·–WTø=ÆB€N¥}‡C:ÚÚ³¾šÞ£‡ÎÐÁƒÛ5È«}‡CJJJ“&ÀOë:£¶yÑ6t9® …ÂŒŒŒââb6›Ýæñ”••MLLlmm‰D"‚@¨“êHݲPâº}»"¨”. ªtNâ-óKçÈD›åzõêÅd2=<<ÔÔÔÚ<ƒÁˆUUUµ³³KOO‡@uæ@©[J\·/`W•Ò¥AõÎI¼e~é¼ÉZ~³\aaáøñã©T*—ËmóðT*uРA?¶³³ƒ@uò@©[J\·/`W•Ò¥AõÎI¼e~é¼™Hq8*•* Û#†aT*¿– êä:R·,”¸n_À®*¥Kƒê“xË]‚ä7˵k‡‚a‚@¨«êHݲPâº}»"¨”. ªtNâ-t~’‡CV‹A .¨#uËB‰ëö슠Rº4¨>€b`8 ꌺe¡ÄuûvEP)]T@10‚@uFݲPâº}»"¨”. ª A :£nY(qݾ€]TJ—ÕPL ‡ò ò¢£#UTU=644’+¼ìÞ½ûþÃ;g§œ]ä !o ²²ÒÈè ™â2ÀÕÔÔ¬ýµÒÆÄEÏžõuqQQTLä´)_É^ö@Þ¯[³á؉#ÎNä !o ØW1î®îÆÆ&7oÝú½è¸¸‚Â"E³þÓ$ž`ƒÎIñ«C99ãâcü)jIiÑËàQ#FË[ý²¯ïì4` û .—«ØNËÈÓÓûù‹ç~ãýŒhþ¿]»‚a˜ìßÖ·(!ù—Ëi:ŸJUrì/ÇW¡-¢ÓLMÌRÒMŒLu´{Èž²¼ª##ßšzxôŸ9SI_ŸSYY™îîî|åŠî°amuT«R__«ªª®@K%H{·º¦:s­XÞÈ$ҾݻD‰Ä«¿ÿqâô™ ‰NŽm—;”™Íb±Z³©5DPVV@ ””–~=/ðòÕk»¶mý<¯µÕzé·«úzz×.]$“Ɇ‘H¤>>k6lŒ‰âá!=ƒ­‰.¾KCŸ?år¹|>_±¤Ö +¥õ©(…“ê°Ã§´X@ú=B[S€NNÁáPnnŽøYiÐßA>^¾FFÆò~zÉÞżŠKHüàèàääè,Wy™øxùý$~nв´´j“@\.Ç{ø„BLˆ#@ˆŒ“«Ã•ee#C=]ý¼‚œôÌsSKeeÙÓ—1·ªê}` Ã¼yd¡_\Ì((àWW÷04Ô?þ}`à°¸8ªž^›BÕêE ~áë;R–Ðb qíÝê$m#müüüàаÚÚ:š‰ñØÑ£455¥/b0™aá¾>Þ1±q IIjjj£|}¤ß™Ór=ÿ`±X⺹ @•–•9:Ø#„*«ªž>QYYidd4fä„P( ‹ˆLMO'ŽööCÿ{Ò/qýèØ¸â’.—ôøÉ¨‘#(dÉi;kTÀ::ýûõËÉÍO ŸNIM‹‹¯««ÓÕÕõñò2¥™$$%Õ×7 2X´fhxDOƒ¾}ìÄcÛÙÚ …BçŸ/n89tw£Ó¢(wK£rIY'ûãǰp›Ý»W¯Q#|I$R£]ú6:šfbb ¯¯ß\ƒ ·³éÍárž½xÉãñ89‰×:O¥èhk#„0L–”¤¦ªêëíemõo‡Ð4)Ñ¢F»¡¾®.,*NLJrà,ñ6<é‡OsA¥WDrjjXD$Bh¤·ŠŠJ^~Áð¡CðER‰Z®>©ýž”̤gd‡† ‚ÎÎC<‰Š\Y]E¥PÆK31~š”’¢£­=aü8=]]|[Åv #)r³\£oèñ³RSS3'ïÄæV(++½{ÿö£ ……øœÄ¤„uk6$&%àæäýyë‡A÷ËʤÝP!c‰ÄñxŸWU¥îì¬åá¡îäDû–Èdö´±Éúþû¶ Ô­Nb33 ¹Z‚ì%×Þ­®¹m%.ŠŠ‰Y¸lETL,ƒÉ¸uçnà’¥eååÒÕÖÖ8rô»>yö\MmmhXø¢å+ß¼{§pÆÚ°P…E!ss3 ÃÒÒÓ-yÌd±î?|°hIfV–P(ܱgï#G?}ª).)Ù½ÿÛó/áÛJ\ð¤ääòŠÊªêOѱ±|™[`{Çã—”hki‰VÀ'ýýxåºõI))\/$,|ÁÒe™YÙ%%¥û¿ÿAtÿUyyùþ~¬©­mÅÂÜ<*&&"*Zt«-Ç;~èà¸1£ñ?›Û-âykn ÂCÖ¬Xõ!1±®®þøé3¶nvé¾ï~ˆ‹¯/¥AžÿõÒ·nmßý ƒÉÌ/,ܹwßûÞ±«R†:vêô©sçjkëBÃ#¯X+%)|‘ÄÝ+ÊC^~þš SÓÒ{öìÙbA°ÿ?|¤•RŸ>[½~czzFEEņ-ÛN=wùê5|‘”F¢@ÈR}RV“Òªcââvïû–Íáäæåïüfïý‡ð"9qòÈñ“B¡04"bùšµ»öî¿÷à!‘@¸÷ðáÚ›ñO[Åvè$êë¤ükqsº¹¯}ü˜ýêuì‚ÀE µ¤¤ðÁ£¾>#i4Ó×oâ“ìœ?ˆ¦¥‡o.Pì«_o_=®^»2ÐÝÃÚª—ø³Cs²_ÅÇÎýz^aQATLäÔÉÓ[,§”‰çV4íêâæåéýàáýI&›ø^ºò«@ °¶î¥p ‡Ã…l.›Ía“Éd%ª’U™@ r8¹žWf0B¡ÅaÕÔ×())÷ëkÏd2_¿{E3151¢µU OQQýfÌ ?}ªjeÅÏË# $¬­UÖÔd}ø ig—){¡¾x«+,,ˆ‰‹jÅÒÂÊÈȸQK ‰ff-_úè<­Nö y<Þ‰Óg½†ÿ~ß7¡:=pÑ’‹W~Û¾y“”Eø¶yùù^¿ª¡®ÎçóW¯ßxêì¹_Ïœ&m•7Y1,8,쟄XYyù½‡fNŸÖ×ÎŽÏçÿxàË矾û–H$ry¼•kÖ:vbûæqññ'ÆÜ?ñÒã§ÏÍÄ0LâúgŽ]³rEm]=‹Åüùûï¾eN­0„þû„üO:ñôù‹â’’@ÿ¹b©a†Ý¹ÿ`ʤ‰Û6mÄŸú˜:svL\ÜŒéÓ;7Ò×!¦©©9xÐÀF9Y¹lÉúÍ[wïÛ¯­­íâìäâììæ2@÷óWÝRv‹(º”u˜LæácǧO²iý:¡P˜“›;'pALÜ«F»D"Ã0é­Ž@ „GFÝúýš¶–‘H\·iKdTô”‰¨QéäÞ¤}*¥¤´!T[[wëú5555ü˜:yöœ›« ™L–˜T/k«æv/ž‰¼üü [¶ 2xÛ¦M»iY¤> ¹ ¨ùŠ`²Xg/ü:gÖÌÕ+–c––‘±`É2K éDÞ*ø·.d«¾¦«IÏÌÇœœ[ׯijj‰Ä56EFÇLôO *«ª®_¾H"‘òò fÏ ø—ΟÅ0lÈàÁ›·ï()-£™+°Ó.>hsÏ^¾<}î¼ÄvµxÁüÙ3ä{èÌä»:TßPÿüÅÓAQ(T„ÐÓgOlzõ6¥™q¹\ñ«7®äH17·NgsØ*ʪ EEGfgg9:8­X¶ÊÑÁ);;+*:rAà"55u2‰D$›KD–@r+šær¹¦43›^½Ÿ>{‚¢P¨ƒzþâiká8®@À )Q•ˆ"‡Ãmq[¹1 P€"“HLCCCc”ïèÌÌ´ªê–ßs c FA’®.ª®æ¾~-øðAž.LMÅòòˆL&…Lf´>P‡µº×oã§LšJ¡P‹‹ nß½ãã5”fÆb±Lif>^#nß½S\\@&“njޚaÞê$m‹IÜ05=½¼¢bþ¼¹ ƒÁ`ˆÄ¯¦N‰ˆŠ–¾ÏÌì™3HD"ƒÁàr¹ çäæåÌÉ•?cŠ Ã0>ŸÿóÁÃø¿_¹xå72™4~ìX>ŸŸýñcAaaà<‹Å`0ø<ޜٳ223 &BèÍÛwµµµ ca`À£»·1 knýúúz‹…aB Ãð/:¬€ÃX,ö†-Ûð{ö›ž™±fÅò1£FŠ'Žaع“Ç׬XN§Ó™Læ§OŸ‡ÃQVRrwsˆŠÂW 5·iþ ôõoßøýÈ_FúúdegÿrøÈLÿ€ï>Àf³¥ïQt)ë¼~û–Ádú=»¡¡Á`íÞ¾­§~£]ŠÂ0„ÉÐêFùú*+)1™L:Þ«—5›ÃQdÇvÊJA}=k&@S¥eeÙ99Í%…a˜ÄÝk` ÊËËß°e›þ¶M›Øl–IJH9|¤Åš¯ˆø×oè ÆÜÙ³èt:ƒÁ°47wsui±‘È]2W_sýžôV=zÄH …‚ÍÚÊŠÍaãA}¼<9“É4Ð×CáË`0˜L¦‘aO„¾sØi ó˜=ã«õkV7ýRoÕòesç´¸9]‡|·¼kijùùM|úì±n=ÍlîœÀÓgOèèô°éÕÛÍÕý؉#n®î!ñiÅøxùÞpoÆô™4šÙ’EËNŸ=!Ä„6½zgegFF…¯X¶šB¡< z8Áo’ÂQpÍå<5-%9%iŲÕ¡¢¢‚à`?¿‰­Œ…ð«CøXˆJU"‰¢ÛôÛ ~VRQVUWÓ¨««{ù _‡ž†mõŒ²š™§°P¹GBUÊË#D £D55nuµš™Ü?¡ÓT‡µ:‡SRZRßPÿðу±cÆ›™™¿yû:)9Ѿ¿ƒ«‹ÛÈ£þüëO¿q~LKYI¹•…êàV'»ŠŠJ z¨Ã0SÃá|ª©‘²ŸcJ3Á>ßdJ£!„**+¬­,;2ÿT %&Ot°ö«”¦ÇTee¥­Ä¤BwoMM BèØ©ÓŽöß¾{ׯo‰‘rø„æ‚â$VDyE¹ŽŽ6•JÅK!Ìh¦UUÕHj#éøãKz«ÖÓÓÅþÖ úçä˜J¥âxë¥R(ââ§Ð ì4Ðyp8œ©“&"„Ž?!j«–/›õÕô6?g_–|7Ë  sË1£Æý~ã÷¯gmJ3_±lÕ±G…¡ƒƒ£›«;‡Ãa³ÙöÿNKß\ Í´i”‚‚‚ìYkW¯£R©…EùÜøcÂø‰ÆF&²œÙK¦‹çV4˜˜Ú(–…¹%þäbpø!$>RRRƇCr}—ÐâÊL“@ (+)ëhõàó…A?ì¡£ë7n’P ”ëí|ÒxyU¥¤˜ØÛó""¨d2‰HÄ»{²¡ayY™··ì…úâ­nôÈ1/‚ŸÓèãÇM4¥™r¹Ü¤äÄuk6=~ØÁÞÑÜÌb¢ßäðˆ0.7vôXYÊÕyZä­„¯¯”””0 ãp8JJJø—ƒRá鈷a¼H$²Âß)¼amm­hšJ¡|5uÊ®½ûKJKI$BhÍÊjªªÿ,& "¨¯§· `Þì™3¢¢cÞ¼}wýæÍ{?u¢¹õ{è‹)þýŸbÛHøyä ¸M>’1 1ŒÅ+W“I¤¯¦M1}Z[Û57á=º#„bã^ååç››™õ²²j4).)9qæìÊ¥KLi4¼£ÐPW_¹liYyE\|üêˤìôù’Ž”uTTT…ÿ?øitV!¾[0 k±Õ5}ëW÷¨”æŽ)UUU)IIܽ|!è?wÑüÀEËW9qòÌñ£äfÞÿÑÜᣭ¥Õ\ÐÏ;ABEHd—';ÑÇ{3é¤]; ‰ýžôVÝ4åF=þ?~Uli•þO6m½ =°ÙlüF|D„…Z<Í]ŽÜ/Dâñx–ãÇù]½zuž¿¿©©ÅÚÕë>(Ä„v¶ÿ|áÄf³[ÙV$F9wáìÚÕë¨T¥Â¼«×®Mš4Ù¢å3ʼnçŸNÏH Þ¸aS›ÇBq8` gD"‰$‰øÏý~íquHR"O IDAT‰ª¬£¥UZV:fô8 Müv—6Œb»gOˆ‹‹NšîîÄÜ\*Ç! ÚÚÕ UÕÕ¾»w·ÉE¨Žiuzzúó‰D‹…×µè‰5<FFÆ ðoI[yy­ƒ[ì𷥦§;;:âsRRÓTUUõõô Fs‹ðç’’SD‹’’“E©}AB¡PUU!$ÍÍLB$±-¾419ùÍÛwƒº¿Š=wö,_o¯Ñ#GÏ™1Ç?95µ¹õñ{$¾P’á„)%-­²²òæµßLŒñ /t:_¤¤¤4ÈÝ-2::3+{꤉M¯Éhkk¿{ÿ!.>¿>_, êêj!)»E”ˆ”uh&ÆL«°°ÈÔôŸô7oßéæ2`ÆôiË"¥AvªÇvª”¤ä‡þý?OãÇMJRwoïÞ6!gGG&“¹}ó¦€E‹oß½7K†ÇÄ)A¥051©oh(.)116Æç¤gfàêø’¥U+@±:‡#z¦k꤉0ê–y³—˵²´ž0aÒÅË— r©T¥6={þ4#3Cú†"²jeýÚTªRAAîÅË—&L˜deiÍå¶ð¼Œ%—õìùSü¬TöX²R¢RÏ?}æì‰“§?qøÈ±‡Žü|øè/ÊT%Y²'{ ƒñ!áý©Ó'zÍš9‡JUb2™²?ç c ¾ªê 7ƒƒ òò˜††kk†–VnIIFn®ÇÍ›|UÕ¶ Ô­ŽÇã544ÔÕÕ‰êÚÑÁiùÒ•ŽNâ+Ô××K]'lu7®¯oˆŠ‰ÿ——_`iaÑ¿_ß³.VUWc–”œrÿᣉãÇ …B)‹ðÌܽÿ 9%ðü‚‚ —¯¸¹¸ÉŸ/Å %qCü–ÚºZš‰‰Cÿþ'Ïœ+-+ãñxEEÅ?8TV^Îáp~»þû“gÏ9ƒÁxÿ!dldÜÜú¢ò*öÇ­¬5é⋵µ´B¹yyl6›ËåÞ¾w//?ŸËåa& ½½<£bb+*+}¼½š¦ ¦ª:j„ïÕßo<Œ¿%‚Éd=ú;"*jòĉ†IÙ-¢ÌIYÇÙÑ‘fbrâÌYƒaØ‹à÷ öýûcÿ¿KEIµØêäÚ?R÷k§«„Ðí{÷RÒÒ0 ËË/¸pùÊðaCõõô¤$%y÷öë‡â ø†™Íž9ãÚ›¥eewB£™¢ÃGJP¬ùŠpuu162:~ú ƒÉ …‚þÎÊþH Lj#Q¨d«¾fú½ZµxÊŸÿj®Ñjø´b; tBl6{ò¿Éüð^QFt þî‡Ã±¶²žgöœë\·ée#WxéE¡ÑhEEE~½0}ÚWÖVÖr]N‘½]†G†Ïš1‹B¡äçç*«Å@þ Ew'‹ …âw)´>)Í´¬¬tõÊu<Oô”³¤Â0LÅÅetbbêÞ½I¡¡ôü|ussoïÑ{÷òTT亲ÑIZ¸WñqÉ)IýûÙÛ÷Wä';O«“(/?ïwߋϙõÕôó¶oÙ¼q˶Ùó555ëêê¹»/ À0ŒÏç7·ßÜ×Û{ÓöÊÊÊt:ÝÈÈpÓúu­¹†¦@¡0±WDŒ ½ûõé³w÷Îõ›·Î¿PGGçÓ§OýúöÙ°f5•J4Áïðñ¯ü†b0™Ë—,6¥™ðù|‰ëãéöìy=$tÉÊUGü¢¢Òö¿èÕš {ÛØx ¶ó›}¦4“Úºú>v¶ÞžÃƒž<10П2qÂ@77 ™Ü¿?mma“Ç0 Û¸vUéàÑcŽURRâp8d29Ðß’ßx6›-}·à)HYG ìÙ¹}ËöÓfÏQWW«¯«_Яo>Ÿ/¾K°ÏIIou¢sS|òÿþl‡}«ð†ŠUÊ×3g®Û´EMMN§›™š®[µR HOªéîŇCøùŸÏŸï?7$4ìø©3øËú¡¹Ãç›;¤ýœ@“ŠÀ°ÝÛ·mÞ±sÚ¬¯••” {ö7ftNn®ôF¢XÈR ¨ù~OZfšœÚ~þûÿ&ú!„0„I¯©fwè”à¢P÷¦È¯â¸\®Mï©S§>{ÆÎ:ƒ©¦ªÖ†9keÒĉ>œ9c¦Mo¹ž~‘ ›ÍþTS“žžzåêÕöˆ%ט§5–-]Åãñ˜Lf{w¯<O¡ô;rÄ‘L&‰B¡Ïç3™L¬îòê˜V'’œ’„?;¤ØpHvíÝêš:zàÊçEX,‹Å240¸}ó„„ÄO55ææf6ÖÖt:_AÊ"„ÐD¿q‹ÎOLJRW×pvtàr¹Í=ßN/˜¿zÅòšÏ¯vÀi¨«¿ŽŽär¹t:]SCãÆÕ+‰ÉÉUUÕ4;ÛÞ |>ˆõsgÏú˜“K¡ûØÙi¨«ã?F)q}ü€ ôŸëè`ÏãñEÏ´t€UË–n\»¦QÅ=}x¿÷ò‡ýûÒ32JJK--,¬,-étÆ›woÍLMB\.—@$Ž5ªéXHdËÆõ+—/MIMc2™= ¬¬,)d²è:›Û-¢èRÖAõ²²zpûÖ» \.×ζwR‚6WB¡ÐÌ”öà¯?ß¼{¯¬¬äâì¼gÿw¢_וÒHÚ‰”~¯¹Ì4*ÚªeKÉdr}}½ø|‰ô&&ŠN§ãý¶™)íMLT]]ôšê ­€SðêŽÃáô¶±7wÞßO‚¸\îWÓgÈۑɲ>eú´é/ýºpÁ¢Þ6¶ ÇŸ7·[ÄϤ¥ì:ÇçóñÄÅ÷¶ø.ý‚’Ú »7­}yužJáóùx»UUQÁ)ñ(R’’¸{E‡^F‰ƒ·)A›«ˆêêOsæ/ؽ}«—†aùqññ+—-Å>ßÙ\#QL‹Õ'¥ß“¥U#„DµÐh¾øÕRh§:^«†C!‡cjj¶aÝ&„ƒÁ÷ÞÙÏ€ílûüðÝO E±WÈ^¢ž†Öo&L&³]Ç]­ô_Ô1­!dßßÁÍÕÍf+öAÕu[†aÍ]ž’¼èó-%RÞ˜¬@Ú$¦$Ïç7ךÛ­|ýI\¶ÅápÊ+*¶ìØUQY¹00€L"IÏ@‹U)ËLùZ‘Ø.mZJƒl[°Rš«ˆ¦I‰ÿÙN»KJP‰ôõõýçþxàÐÓç/ÈdJrjª•¥åHoñ+“m˜ÕÖW_{ì7yw ã)~³œÇk« RàT|"òùü(h¥Žiu¿.m]½Õijj,[¼HOW÷KgHÓCGgÞÜ9úzºÝÜDw¾/«{WŠP(\0oÔßwØlöWÓ¦¸»ºJ¿˜¯µW‡Z A Ô…5GEEeöŒ¯ðÚ*Í/^¨öÖñ¤P(ãF …p[Ns RÚƒÁÐ×Ó?f4@húÀRÛêö ÀpA Ôhóo|¿x¡Ú[Ǧ«ƒƒv-P)íÇãuÌï§uûNÐN$ÿît{puA ÔuËB‰ëö슠Rº4¨>€b`8 ꌺe¡ÄuûvEP)]T@1p³à?JÂÕ!eee6›Ý~?µÎáp”••!‚@]"PGê–…×í ØA¥tiP} sµLÐ%B{÷î­ùT‰RQUÏÌÌ´¶¶.((ÐÒÒ"‘HmÃádffëêê  PgÔ‘ºe¡ÄuûvEP)]TèœÄ[æ—Î ,33³wïÞl!”Ÿ—C@aö1+!¤£k4mÚ´”””¼¼<6›Ýæá•••-,,úõëÇáp””” ‚@9PGê–…×í ØA¥tiP} so™_:/@²   ??¿šê2„PDØK Ã!???UUU*•J$¶ý“EB¡ËåŠ~oA Ô™u¤nY(qݾ€]TJ—Õ:§F-tB†C’ß,Çd2;¦!ê„BaFFFqq1|ï¨0eee[[[OV:¬=|)ݾ€]TJ—ÕPŒäá@\ff&‹Å?~¼ššÚ—ÎKWÅ`0bcc333íìì¾t^þÃ!ZVXX8~üx*•Êår¿t^º**•:hРÇÃp ‡h‡Ã¡R©B¡ðKg¤ Ã0ŒJ¥Â݆èT`8$«¢¢b6‡ÓËÚJ|¦P(ÌËÏ/+¯0Ð×·¶²$¢E†edeUUU›™ÒÌLM;<¿ Áï·ìCÐ=Hü8'¥ÿ‡ZÔšC ÀpHV'Ï375?8ËÊË¿ùöû̬,uu5:aÛÛf÷öm&ÆÆ!>Ÿ¿ó›}¯ß¾UQQa2™~ãÆn\»æËå´8•àš~ˆ“ÒÿÃG²Pø@10j›ÍÎÊþõ*þµ¹©™ø¢£'OÕÖÖþöëy3SÓ‚ÂÂm»÷ìýîû §O!„~½|%95õÜÉ6½¬ƒCþûégG{û>Þ_¨  Àp€ÿ8)â¤ôÿðÑ€­?ÄP ¼ž¿1q¯víÛÿ"8„(v#BˆÃáÆ¿~3kÆtü*­™©iÀœ9Ùs***0 {òüÅä ~6½¬B¾Þ^œ?{öe  -4÷q NJÿ H×ÊC …ÁÕ¡øxyúxy"„æ.ŸÏd2üÆuà"šC"‘B ¥¨¸¸¾¾ÞÉÁA´ÈÉÁáæ­¿:*Ë ]ÀÕ!þãšû8'¥ÿ‡¤kå!€Â`8¤  kV‹þlhhøãÏ[ýûõÕÑÑÉÉËCè‹–èë3Y,ƒ¿ZÓuÁpТŠÊJÔLÿ/e|4 #8Ž@{€áP ?sá…BùñÛ}!‡‹¢R©¢””¨!— Çj×Ã!@‹¤ôÿðÑ@ëÁqÚ ‡Z¥¨¸øÀ‘ciéé“'N˜ï?WEE}>2y<žh5.‡¢R¨Í¥ ÒÿÃG­Çh0R\JZÚ–»œ¯_úÕÀÀ@4_OW!TUU-z~UUµ²²²ššê—É(h puÐ")ý?|4Ðzpöo–S†a?þrÐsØÐïöî !„Li&êêÉ©©¢9)©©}ìl Í¿)t~h _ºh_Rúøh õà8í†C JMO/.)ÑíÑãï'OÅÿq8\"‘8fÔÈû‚*«ªB‰ÉÉqñ¯Çó¥³  ]=~²ÿ‡9Ž”þ>P˜,‡ ƒ›åTPPˆº~ãf£ùƒ*)QçÏóÏÈÌò_°ÈÈа  `ÜØ1¾Þ^_ — íÀ• @sÒ22BÃ#6¬Y£¤¤$¥ÿ‡#ã!€b! Ã>f¥"„tt ƒ‚‚üüü¾t®º Ã’SR+*+--Ì­,-¿tv@«Mœ8ñKç¢;xøð!ô0 Û“Òÿ·ò£¡²²2??¿¢¢B(6]J$õõõ---õôôZLê¯;wÓ22|½½†xxˆÏ?|üÄn®òæ­õž¿ Ž‹o:ßÿëÙ–7Ï­Äœ¿ÿðèñã% öì)>?!1éAPÐâó ¥' :!8Å­„wjªËBa/%\º{ÿøM™â¼==‡ ܾì.‚}ÿ~_:àKºpéJIiɤ ~â?‡?8ÄðW,Y¢¯ßòY‹\*+«nþu;+;›Î ö46dðè‘#ˆDùn‹åñx×þ¸‘“›·yýZUUUÑ´––V›dNP@÷&¥ÿoÍGCUUUNNÎ!C455›[§¾¾>::š@ èêêJIŠËå^¹þ;“ɬª®n4ŠŠ‰535ý"ZfvvTL¬ç°¡æKy,D<·sN£™„GDZ[ZΙ=K|þ£Ç“’uA“í$*«ªþ¼}'+û#N74ì9t°ÇèÿöííÑ=¾}ÿ>,ÝVw v›:RAA›››ššŸÏon55577·„„éᘸ8&“9~ì˜ÇOŸUTT4z!Ф¢¢²së–6LP_OÏÑÁ!8,\¼·áñx±q¯ÆÝUž¿ÏÊÎ^³q³¾þoU•œ¼¼#ÇO‡„øñ{¼íÑ=—”DDÇtÎámKÂphòÄ “'NÀ§ç/YfiaÞ¶}]‘B#‚¾ž^L\›ÍVRRÍ ‹ŒÔ×ÓÕ’lfv6‹Å–+î•«×ôõô®_¾H"‘0 #‰#¼½×lÜ7Øcìi–”–öï×wÉÂ\.W|º­†CÝã€VZZ:tèPñ_\‘HMM­¢¢Bú:/‚ClzYÏ÷Ÿûøé³à°ðÙ3¾j´Bxd”ŽŽ¶Cÿþ¡:="2ÊÒ¢o;„PmmmtlÜ w7]]Ý”´´Wñ¯këêôtu}<=i4“ĤäºúzñIÂ"" ô ìl{‡ED¦¥§ˆDGûþ.IµèÙ‹—ýúö¡™˜à&%§°Ùl7WY¶éëóËá#¹yy¢;î^¿yËd±|¼¼Byùù!aá5µµ4“±£F6½ò&%thx„mo›ªªêðÈH*•:~Ìã—!¡É)©ÚÚZÇ J+«ªž>QYUelh8z乊ùêuÝ=Ο:!ú(>tè¶]»cã^á}; 5y•‚Ä£Z–NÉd††GŒðñŽŽKLJRSSéëcan.J¹¹^©¦¦&&îUÿ~}ÍÍÌÚ¤Øt 7W—ȨèØWñ^ÇásAdt̸ѣnþu5ÿAWRZÊårÿ~òtôÈd2Y–OÓ¢â;[[@ úòØÙÉq »ƒÉD5M³é© Bèõ›·ù55µwï?ÐÐPM{ öêõ…Ïfé'(t0 ä\Ÿ,©¯¯óvÉ‚ùºººöýú½ m:ŠŒŽ.*.>{â8Bèõ›·svr<üóO¡È蘣'NÞ»u3èñ“CÇŽ;ØÛ÷4Ð »~ãæ©£GŠŠ‹ž8y÷Ï›êêj¡ŠŠŠý?ü´o÷®ßìKHJèæÊfsîÜ»?ë«é‹Ì—½ìGOžZ»r…èúâEeU•ŒÃ!ÏaCž<¾0ПeddØÇÎ6:6ö›o¿7¥ÑÌÍLoݾsëöÓÇöüÿkeRBŸûõ¢©)­²²ÊÁ¾Tl\Г'ŽöÕŸ>õ²¶º÷ðQphØo¿ž'‘Hé·íèÑCÇÆÚúÞ£ ?nýuè§lzõ’½ø…ÅE½mz‰­6ÐÍÕuÀ€ú†‰ë7íBeß¾ÿ‡ …ƒ¶Iš‰É)¶½m8Îó—Á\o€“£è³Ní@ç!÷‹¶Ó32/}L§Óï= X¼4+;!tî׋GNœ<|üÏ X¾víî}ßÞ}ðPˆ ï=|´vÓ@PS[{ðè±ï~úùÔÙsÕŸ>…„…/^±êíû÷xÊѱ±‹–¯ŒŒŽihh¸uûÎü%ËÊ?¿UT\rðè±w>´aÉ‹b¿±C"‘¼==Ã""D3ß¾Ïår¹»ãÉ=y*%5M´ôÙË—·ïÝÇ0,1%¥¼¢¢ªúSL\ÇKKOŸ¿xé‹à‹uÿQPÀ⥙YYM#Z˜›EÅÄDDE |Ç;~èà¸1£›¦ùèïÇ«ÖmHJIáñx!aá –-ÏÌÎÆ0,5=½´´¬¶¶6&.îý‡|::6nÓ¶ûTSS\\²gÿwç/]VlŸà<‡ ¥R©!aá¢9â'(Íu"GOžJNù÷ǧ/^üuï>-K_„šïÊèÌ2>B…FD …B_o„—ç°œÜÜü‚‚Fë tsËÊÊn ÓB‰IIÚZZ©iiø`ì}BBŸ>}455oß»ï7v̱ƒ¿ìزùâÙÓ:::ѱ±Ã† ÆЉ‹ÃÓy¦¡¡abl¿÷®ovîøñÛ}³gÎ “˜7‹õÓÁCâÿ¢bb[·ÏªªêàAE½ ŸÏyçãåÅãñŽŸ>;t°Çų§÷îÚyéÜY%e¥‹W~“+ñÊÊÊó§NlX³úÇýûèt—Ç=}ìÈÆµk6¯_W\RRZV†aØ99Ø_>wvÏŽí¿]8gJ39tì¸\QÌLMãâ_GÅÄŠWî¿3jdÓ•%v¡‘ÑѧÏÇWÀÇ·¿^¹‚ÿsøØq …ró¯Û¶nKHL,-+ß³ÿ» ÇOZŸæ¹_/ÞøóÖŽ={ëòòówíÝ÷ÁC|8µ‡|W‡DGõ¾Ý»Èd2›ÍÞ¸mû¡cÇñ/*++ÏŸ:I¥Rsró.[Žw ÁÝÕuÏþoKËÊð{`róò/;«¥¥Éáp·ìØyò̹KçÎðù|¼WÚ³c;‘H¬««_¾víÅ+¿íز!diañó÷ßZÀ÷  òö¾uçn&‹¥ª¢‚ŠˆŒ:؃LùçÐ#ø{ˆD"þçÚ•+êêêY,æÏßÇd2:xØe€óOß}K$¹<ÞÊ5ë?yæøÑF±V.[º~óÖ=û¿ÕÖÖvqvrqvvs Z*ž&‹Åºûàá”I·mÚ( 1 ›:svlÜ+këÅ æ×74þåg Ã9ZXT´nõÊ™sçA™4a‚èEbW £û"cc)]–,W‡Z½ àìÔCG!ä9lØÉÓg_„„. _ÇÝÕ!ô!!aØ!“fNŸvþÒåÔôt‡þýß'$NŸ2!tôÀÏ**ªøú<€‹ÅÖÐÐpqv Œ5Â!êãåI¥PBÉ©©Žö eQ`@£pÿÂ0:!>ƒËå¶Xäôñ ‹ˆLÏȰ³µ}ûþÎðõòLKϨ¨¨øqÿ>¼×ÕÒÒœ2aÂÅßäëm†J¥RBæf¦!_//üTÿ“ÍædÌ)(,ܾe™LF)++Ïújúžýß544hhhÈeéÂ[wîÞ½o¿¶¶¶‹³³Ë'w‰‡5×…ts o Ó5ÔÕÅÇ·d2ßr¹¼ËW¯M™8qÍÊ塜ܼåkÖ*++·&MüÂ~xdÔå çt{ô@mÙ¹+<2j꤉Ní@g"ßÕ!ü¨öŸóµøQ‘™ÕÐЀdèðD¦O™¬¥¥‰RR¢Ì“—ŸŸ“›‹÷JóæÌï•"¢¢ðMÔÕÕÜ]];ϳžà?Há+!Žöö***1±q†ñùüȘoOO„aHìÁ¡ÿßÃ0ŒÅba˜Ã0ƒ‘•]PX8ÏŸÅb1 >7gö¬ŒÌÌúúúF ôõoßøýÈ_FúúdegÿrøÈLÿ€ï>Àf³¥) Ï<¾fÅr:Îd2?}úD 8†al6[(" c0L&Ÿær¸¡7oßÕÖÖ2Œ…îÞVxŸàFúø””–¦gd „ 4×ÈHÆ”æº2:-Y®á×?›SZV–’šVTT¼nó–u›·ìÿáG2…ÒäZ––¦íÛ÷êêê =‡³07ÿ˜—Ÿ_[[ë1Ð!D$íûþ‡EËWN™9«úÓ'|[¯áÃ_¿}Çd±rrórróFùúÒh&sfϺöljÓglܶý¯;wyDTTU¿Û»GüŸ—gë÷›»›«¦¦&~I*<2ÒÒÂÂÒÂÿ–ÖÌ”&ZÍÜÜŒÃá~ª©‘=e|ÀÐÜŸ¡â’„пœ¿dþïÌ…_BŸjjebfjzíÒ¯?ìßë5|XFVæ/‡ŽÌ˜;ïûŸáp8Öl® oBøø–Ë奦§#„Þ'$z t}õJ(. œ‡§ceiáí9¼•iâ›{{zâc!„P/++6›Oéè<ä»:$:ªEßgs¸ôù¨n±SÀYXüû°••%B¨´¬œÁ`4×+õ€úAW†a˜·çððÈH_o¯wï?ðx$$ª««èë[YZ2™ÌÅ+V‘H¤)'L?¾—µÕÖ]»ñ ‡|øØñظ¸œÜxpûÞ}55µu«VНÖÜO àã[‡þöøøöypȇ„DM ||û2$Ô@__M¬W·´°ˆ}ßš4+)O¾áP›Õâ] >M"ë•è0˜¢/UÇC›¶íh Ó#¢£‡B$ñİÏ׈D‰ãaþâû5+W¨‰NˆH ö4Ð_³¸¤äÄ™³+—.1¥Ñðñ’†ºúÊeKËÊ+ââãW¯X&ž&“É\¼r5™DújÚÔÓ§õ±µ]³qSÓТi@° `Þì™3¢¢cÞ¼}wýæÍ{?uBá³Ô-NPè`Ò¯üàðÛ_›[ú2$ÔÑÑaAÀ<ÑœšššÈè˜à°FÃ!î—¯^{ê`ß!4ÀÑ1èñcªô1)%µ¢²òòù³¢÷!1™L|B]]ÍÕÅ%,"23ûã„qcB™Y¯^¿ž;{Ö˜Q#ÇŒ™_P¸xiRrÊ@w7ÅÊž›Ÿ§­­-û¶¡‘¾>‚þ¾ríz}}=þÊüí)©iœðuRÒÒTUTô›üˆmkB›™š!„TTTD?@—˜œüöÝûF¿G'EQqññÓgV/_fJûg@bdd¸rÙҊʪØWñ†CRºPéã[eåX.ïÿîK½ÃPá4ñ• rþðO¾6*~TãÿˆDâû ***²'’”’"šNHJB™šÐD½’hQs½Rg  ‹ŠŠ^½zõìÙ³û÷ïß¿ÿÙ³g¯^½***jñ¦mðd߯Ÿ†ºzDTTTLŒ—g£3ñڜܼ¦›ã·x‘HÄ>v¶ø?+þ–!„¶¶ö»÷ÄÓ¿X$ ðW<‰KIK«¬¬ð¿Ÿ<Íþø»^„¿ ŽfbâпÿÉ3çJËÊx<^QQñO••—ãß‹¨©ªŽá{õ÷Ï_³X, ØLÖƒ ¿#¢¢&OœØ(Mm--„Pn^›Íær¹·ïÝËËÏçryÿ¬†aÿfÃ0„8\îo×òì9‡Ãa0¯â_#„ŒŒØ'âºî µë@ …$IÊXˆD" …Bb3ßÇ¿ ¥P(Çm4ßÇÓ³¶¶öí»÷¹»¹bæhß!¤¦¦ÖÛÆ†B¡ prBÙÙö:ØcÇ7{/:sö›wï† üøÙÓ;÷î#„†zxÉdûþøK«ìÇ}ðè±É3fNž1óØÉS æÉõzå9³fÆ½ŠŸ1ǦÀý‡¦Lš(ÏžûÇH¡Pˆó‚Û¼~]>cŽÿ”³ÖlÜÔ·]Ów<´>ôÎm[x<Þ¬y3æøÏ \ £­½få Ù7×PW÷öô¼úûÏ_ãÞ°X¬‚¢cbüÆm´²”.Túøvˆ‡‡Ž¶ö/‡àO¥>~ýúM+Ó”Nú©œkŽ$÷ïíܶeÛ®=³æôÐÑ©þô©­­\G5BÈsØÐõ[¶ª(+7Ðé†={nX½Ÿ¿yýºm»¿™1Ç_SS³¶®ÎÕe€¨Wª­­ °ïßÏUì5Yð”””’’OOOCCCü}¦ø=<***666vvv¥¥¥‘‘‘ÕÕÕýúõƒ_“"ÞžÃïÜ»?zä"‘(>*ôŸûóÁÃ_Ì'“Éšš3§OËÉËÃ^ûãÆ’•«üeïî¶l;!~ÜõëÛgãÚ5B`¶iÝZ%ªÒÁ£Ç9ª¤¤ÄápÈdr ¿ÿ$¿ñø·¢4O9ä5|ØÎoö™ÒLjëêûØÙz{zò¤§¾Ä{'‡Iü?¿…–Ád._²ØÌ”&Ë­;Òôñ¹úûNPšë DæÌšyäÄÉsüÉІºú”I åŠÛú® qðabbRQQaddÔ£G‰›cÆb±***Œ%¦°bé’K—4?~ì˜ñcÇàÓwoþ!š¿eÃú-Ö‹þ›%@øö›=)iiååæf¦ÖVVL&3þÍ›^VÖ!¡# £GŒ­¿yýºÓ¦åä“É[›^ߊ¶jÙÒUË–J̹߸±œ2³²54ÔííEwm‰çV|Z¢ùóüçÏóŸciaqýÒ¯ IIuuu4šmo›¦I5!tóÚ¿oå&‘H¡Ïþ}3µ™©©èO#CÃKçÎ$¥¤|úTcldhgk+=ŸMmX»ZI‰úó¡Ã?<$êÛgÏš9URwÝ\ŠoŸ<{.>¾ÍÉÍÅÇ·JJÔ-7ìÿáÇ)3f)«¨‰ÿ9_ß{ø¨5iJ×Ü©œkŽG@aö1+!¤£käçç'}@ ØQ]\R2wþ³'Žëèh§¤¦©©©:98à/€Âñx¼¦½R瑜œ\SS3jÔ(ü+:‰ëàßÌ=þ\GG§ÿþœCÐN‚‚‚ÆŒ#ïVššš|>¿ŸžL&khhp¹\ƒ!ú³¾¾žL&ª©IKO×ÐÐpvtD‰D:Ž¢P(ï>$ðx<'{2™¬¢¢’”œRYUeJ3±íÝ›N§7½ØB TTT˜,VrJ*“Éìi``eeI¥PX,¾‚xšššši%%%V––– óõÛ7f¦¦úúªªª¢lˆ¦UUUKJKsró(r;;u55Ñ ‚d÷ôéÓ{$[WPRZ*ñEv we4Õt:ýÍ›7†††Í]üA …²²2777µÖ½é¤•nݹsé·kwoþÑšÇ A#µuuiéé,[_OÏÒ¢é]Ð" ŸM5Ðé1LèäàÐè÷¯;ì ε@ÀÇ;5Õe¡ˆ°—Š ‡&u¡N‹JJJ’’’&Ož,ñžqøžø"kl)yyyŽŽŽ ;W'“Éñ+ŠBo6ì jøUB/Ë›6YîFTâ÷¿_/®µl±ó†·ssskìùssóèèè– µ ‡Ó¥K}~Fñìb<§ôújr‘Ôì'w!ô&)//Ç}-Ô|úïÚ©¼iáï¿nÞuh³F<ÜM&‚[l6»±×Ž3׬ã~¯2¥R™””„G•þžÓ z}5¹ƒPÝò!b±÷µPó5a×îMA<§£ør¹¼±êÉår‚ ,,,žG<¨EÔÔÔ”——ë“Ï¡ZÏíG½¾šÖA<§`z}á¾j>ýwíTÞ´áзÿ¹fo@jyMËÛ{x»êêjõG$飪ªŠ¢¨„„„– µ .—ë¡ÇÓâRyN?2èõÕäB <§z Ü×BÍׄ]»7m84¸—ë{½[ü~‹AAA%%%­ZµÒÿ¨0A%%%íÛ·8p`˃ZEQ555ú¦Åˆñœ~dÐë«É„™™Ùs ¡×‹™™îk¡æÓ×NåMÉåòÆž Ó‡……EZZš££#›­o‹ÉåògÏžuêÔ©´´´ÅãA½,ÏéG½¾šÓA<×Àz½ØÚÚâ¾z)ð§^lmm%INNI’4MS:Ñ4MDNNŽT*µµµ}Ù±£–A£–ð²ÿŒµ<ì jøUB/ ‡ôB’d×®]322rssY,AõííÁb±òóó322ºuë†3jBè͆B-¿JèeyÓ&Ë=?%%%éééJ¥ÒÆÆ†Çã)•JæøA’$‹Å’J¥¹¹¹YYYvvvxûf„z`P‹À¯z)p8Ôîîîñññ=‹Å&&&FFF€™áªP(ÄbqUUUEEEvv¶­­­››ÛËŽµ$œè…Ò;„Z~•Ћ‡Ã¡F ÂÃÃÃÜÜ~òÔ¢¯–Ç?xÿ¬`Í·ß\¾¢5[}öî?pìï+׬­¬ªzœýõÚoÏœ¿ ‘G"‘ÄÄÆ:„$ÿ¿™™Ù¥³§Uc¡ðÈÈOç̽QUUuâÔé³fê®%>áaaQQIiÙíˆH…B±gÿþÓçÏ/Xº,êN´\.×Q B!„BèµÓðÙ!è߯Ïêu߉Äb¡@Áaa¾½zj½íAqqÉÁÃGÆŒ=oîÈÌzŸß¨˜BoÝ>øÛ^óV­`Ùª¯CoÝþà½Ñê år¹Ö;7¨Èåòm»öôöó]³rI’•sæÏ?pè•Ë–ê¨eάOKËJÅbÉ÷k×0ÙnmݸÁÅÙ¹ÁB!„B¯½n´ÝÝÓ“ÏçGDFÁ?3åTç4DÞ¹CQÔ'Ó§2oÚµÐO{NôëÇŒR ƒ““D¢y%X"cc#…$?J),,œ:isÉÄÄx̨Qa·oë_ c`ÿ~.ÎÎúˆB!„z½hž P»‰ÜÈ‘#™,«¯¿_phèàbbcår¹OÏž©iiu‹ËöÌÊÒÒÀÀ@•Ò®mÛÈ; LÓ`ei¡;ƒ™©)”—WÔ]”‘™©T*;uì˜ÿìAmìU‹ÛH¥²Ò²²VffúÔ°þçJ'ªRêÜ‚!„B!ôJQ s@ëd9õÅ*ýûõ]ñõšêêš°[¾½zòx\­Eóù|™\¦ž"—ËA6pÎÊÊÒÒÒÂ"îÁƒÁh,Z¶òkçÖ~ÃårišV*•lví:*ä P(zÖ¢‘­Á¡ž¦C!„B½"4N`è5$OwwCÃ[·nGDê˜ÿfogWRRš—Ÿ¯Jy˜”Ô´@u bèàA7ƒ‚4žb}ï^iYYOoo&HLJV-MLN –zª«Å D!„B½\ú‡H’ì×ÛÿÀÁC …¢Wõeó÷õ535ݰù×ÊÊJš¦¯Þ½{¯…BýÉ'´2kµø«wîÞ£(J¡PDß»·aókëáC@Çí]]œwíûy8RÂÃÄs†ªÏƒ”JeÝÄæˆB!„zéug9Æ€~ýÎ\4 ?—«}¦ðxÜe‹}ûãOcÆMà $IL™ôñÙ ["Ôÿàóù›Öÿ´~ã¦å_¯f±X4MSÕ±C‡5+–«ny·tá‚å«¿7iб±qyE…ww¯O§Ok°dkëc¡'?™=gû¯›55­@„B!„Ы‰š¦3Ò’ÀÌÜ&   À”—— BÕEUÕÕqñhšòpsSP©F¶‘óôifÖcŠ¢ìí;´wÒX*—Ëã***ìíì;uÔ§@…B}/F©Túùôb±XÍ/!„B!ôŠ`Æ;e%Ï ,äf#Îé`jjªþÖÈа¿_ƒÙZ„ƒ½½ƒ½}}K9Ž·—W£ d³Ù~>½Z°@„B!„ЫIßk‡B!„Bè ƒÃ!„B!„Ð[ ‡C!„B¡·‡B!„Bo)!„B!„ÞR8B!„B½¥p8„B!„zKáp!„B!ô–jø1¬×oFEG×MïÛÛ¿ß¾:>¸mçîÞ^¾½ê}¤éK·aó¯ƒôïîéùœÊß¼m»¿¯o¯ÞÍ/êy‡ŠB!„Ð[¨á³C©éé·#"YuDŸˆŠz’ó´…â|.Ân‡çæå=¿òoGD抎þåǼ»{ÀþCÜ úlæ š¦úe“‡[·u«¿f³Ù‰dñò›¶nÛ³}›ê³:òÔWõœYŸ––•ŠÅ’ï×®QU.—7seB!„B ýn´MÓÕÕ5ÿ”J%³p@¿~ÌÎ7tpr’H$ªÏ êß_5%¬½Ú¢-¿üüÅœ9Ìk¹\N¨.’€ýû©ÆBзwo.— Žm˜2™“6Ì[‰Dšü(¥°°pê¤I$I€‰‰ñ˜Q£ÂnßV• #BFô½‘H4yâ„Ú<í–.\ š†WÛR “’är9|:}Úñ#@zF擜œ)“>f³ÙÀçó'|46%5­ªªJõYyô©Z]óW!„B!ÄÐrv( @õzäÈ‘  5ÎQ¨³²´hì"’$/$=z”ó4÷iîS¥’R_jýÏ2 >Ÿ¯ã-ä?{FD{UŠ£c©TVZVÖÊÌLw„Œ¼ü|Õ(Þ6T#½½Ý¤‰ŽüuìïS§;»ºøôèñΰa††Ì ß~Ú°‘Ÿ€T&€Ò²rÕguäÑ§êæ¯¬úß!„B!ÄÐ>YŽé‰ ë=Ťu‘H$úìó/X,֘ѣFÑ¡½ÓW_¯Ö³@­¸\.MÓJ¥’9÷ ¹ …žòù|Š¢tç€O§O;æý¨;ÑqùëØ™óìÙÅb‘ð¿Of „ê™Õ‡%:òèYµJÓV¶QP„B!„ÞHuO4nàÑ"“ ‹Š~üvíG~àéándd$‰šS ½$&%«R““…¥E'…ÔJ°‹ÅOrrT)‹¾Z~üä)õ<)©i‡þeld4|èåKoÿuÓ³‚‚„‡‰mÚ€@ ðpscþ‘$/TŸÕ‘GŸª[veB!„B ½†C ¹üvD¤Æ¿Øøø¦Uild…@Óô©³ç²Ÿä0ä4MÇí]]œwíû­¤¤&ž»0|ØPýÔÓÝÓÓ¶uë­;w1³ë±qñ®Îÿ¹!›D"9xøÈ•k×™· ‰I`ccíØÆ¡‹«ëνûŠ‹KàYAÁÏ7çåç«VGÝU«.ÐjÁ•E!„B1ôº³œH,^½î[ÄöNNûwïlB•.Îzûù®üf­ƒ½}EE…³s§>þ~—¯]µ³mýá˜÷›P ,]¸`f.}Ó IDATùêoÆMšbll\^QáÝÝëÓéÓôÿ8‹ÅZ±tÉ×ëÖ½÷ÑxCCÃÊŠŠÉ'¸»uSÏãîÖíÝáÃ6nÙúÛÁƒPS#š9mªc›6°jù²å_¯™0uZ+3³’ÒRWgçys?ר¢¾<:ª¶±¶>zò“Ùs¶ÿº¹W!„B!Ä €¦éŒ´$03·a¦Ó½€KM““ Û8´wr‰DÑ÷îupj¯zkÈåòø„„ŠŠ {;{çNõùHyy¹@ äñ¸Ì[±XŸ —Ë;8µoÝÚFëG²Ÿäd?Éf³9Î;¨ßÿM©T&$&–––Ù¶¶qqÖþœy´V­P(¢ïÅ(•J?Ÿ^UUUê¡6aeB!„zË©;e%Ï ,äæK!„B!„ЋTw8ôn¥€B!„B¯!„B!„ÞR8B!„B½¥p8„B!„zKi¿Ñ6EQ)))¹¹¹‰ä„j|>ßÎÎÎÙÙ™$ñ¨z]ag„Ð+ûô†Ñ>JMM‹Å#FŒ000xÁ!„ZDMMMdddjjª‹‹ËËŽ¡&ÂΡWö/è £}8”““3bÄ.—+“É^p@¡Áår}||._¾ŒÝz}ag„Ð+ûô†Ñ>’J¥\.—¢¨ B¨¥Ð4ÍårqŠz­ag„Ð+ûô†Ñ>ì~zÝÑ4ý²C@¨¹°3Bè„ý z“Ô; !„ÐK‡B¡ç ‡C!„^]Ø!„z®p8„BèÕ…B¡ç ‡C!ôú¡i¨ª" hëe‡òœag„Bè¹Âázijjˆà`VV)•BÇŽÔ°a >¿vQJ ™–Fº¸P:h¿ŠZ&ƒÐP¶DC†üû©©Z‡ðpVYÑ»·ÒÔ¿Ï'<\¸hQ}KE›7Ëýý@¸zµhíZxãGÿ%•òNžä&$°•J`± KåĉÒ3$Žff…îÜát쨴²¢ÊˉÄD¶‡‡ÂÀà5Ûz±3B¯š—Øy@UÊoo¥M½ß¥®\a³Ù0|¸¢±KzÛ´ðp¨¨¨è؉“©ééÕÕ5­m¬ûøû:DõÐâ-ÛwôìáíçãS÷ƒë7nu*99eðÀ½ýýš°FÕîÝ¿ºlѦ•¬§¿nííïëÓ³§žù¯^¿u'ºnúÔÉ“œÚµmliúÐÑDM¶{7÷çŸyee„*ÅÎŽºpAÄt!6ðNžd8 iß^Y÷³%%Äðá©©$‹¹¹U²\\¨.]´dnlÕ:L™"(.&23«ë~;RRÈFÅ çQæë¡ºš•ž®ìØ‘j×®îBZ(d^°>„·lG¹ €üè#£ÄDVÛ¶ÔŒss:7—¼z•»b…ðÌî©SU††ÿiGX£G9SeeE]ºÄ7Ï 5µìµ{œ)vFðªvFÐŒv~1ް΋±~=oûv.lÜ(ùì³zŸÇ•œÌúøcA×®Ô°aòÆ.EèmӒáԴô/.²±¶>t¨P˜–‘±qËÖAþ‰$в±±ñí¥¥äа[]\hONŸ;ÿ×ß'&MÏæpNœ:-•É&Oœ µF™Lvðð‘šQqI‰¿Ÿoc®[µ†¼¼ü°Û·—.\д’Ož>£#x•[ᎎmzõзÁÓ22n…‡Ð_#$ š¦õ)MÏÀTt4QÓìÜÉ[µŠÏãÁ'ŸÐnntq1ñÛoDn.¹f ÿèш‹c€§'­u;ܽ›—šJöéCOóùÔŽÂÇ9;vH:wnø(WƒU×'7—,.&Ú´ssªnT;vðôAOϣ̤äG—¯¤gfaogûÞÈ‘nݺ63qq ›Ã651©¬¬”H$VVV®\¿~÷^ óš ¡@àâìd@—. HJbÙØPææ ü2$§¤ Ðßß·ÞŸÓ?ÏÌÊR½åóùÎ: 2˜Çã1)W¯ß>tˆŽZ,¡ÎŠcgôŠvFÍiçãM꼓{÷Öþrff²iZZ_N&’îݵƒt/EèmӒáßÿ8liaqä÷l6›¦i‹5xàÀy‹GDF2+AZK¾~U&“) ÈËËë֥ˬOfÊåòÔôt±X\_0·#"kjDïuþbÀ³‚ëzv8tS¯ZAhXºƒÿO5õ4‹öÜ@„Âu«¿ÖH—ÉdEéSšÞÕÒÕD'•ë×óàØ1åðá2Š¢‚èÜ™7q"+9™EÓtU‘žN‚ƒƒ<&†T(WW¥‘Qm´"Æ€¯¾Røùɪ«!6– ®® “Ñuç 5ªjб˜`±€Ï¯­N,&( „B:6–^^Tj*äæ²LLh77%s ´¦†PÍ‘ˆ`³¦!6–eoO98P de‘……¤•Õ±£æi(Š‚ÄD–HDtê¤43£ë–©{½ôtüÄɽ~ïÚ¥³¿¯L&»7ÉÒ¹³ÿ7vÌûÍÉÿõºuÆ 3zôC‡EbѪ¯–i”“š–Õ··?Ð4<ÍÍ»zãæ±'7®ÿÑÆÚºV¬~©éé·#"ûõé­‘Ndc2MÈÙ`³À™sçwîÙkkgëïã# ³gïØ³÷ÜÅ€m›~122ÒÌ|†{ç{Ú4éòåbõt€Þ¹³úî]ÓãÇyk׊˜í‡ñð!ËÆ†²°  )‰Õ­›®#Ð2™ìПGE"QqI‰ŽáPl||fÖco/O iúinîÕë7®^»¾së¯Ì9˜ØXÝáKЀÀ+Ú5§_Œ7¦óRY»–/“¡!TWCjªfÛJ¥À®©6m(¦ÏòðPªòè^ŠÐÛ¬%‡COss]œ)Š’JkWxy¸÷êÙ£ººF½´G))Á!J¥ÒËÓÓß·öú­ðp{;;+KË»÷b?yRV^~æÜy—›—'“É._:d0§ÎÓAÎ:}:}Úù‹Á!Ç}¤Z”ž‘*–H:uè0tð Ö?‡R릫ªf2Ü‹‹ˆŒ¢hÚϧ3G|QqñÕë7ŠŠŠZ·n=|È`333 uéØI*“^»qS.—{yx0‡Ã#£4‚OLJŽŠŽ®¨¨077Ø¿¿ƒ½]ݧ(*$ìVÒ£G$A¸wëVÏQFÄb±¶Eÿ)Mkêñx<++K·®] ªº:ìÖívmÛvvu€²òòˆÈ¨^={X˜›«7‘޵¶O]IIdU¾¾b‰¤ö4½•øù :v¤išŽgÓ4sQ„aa! ¦¦ôÑ£Õ¾¾Š‚ÒÕµvÊÊÈ‘œÏ>£~û­vêÏ Aü}û”cÇÖÎ()!ÒÒXŽŽTëÖ”þU_¼È>Ý`ôhÙ¡C5 —ƒ““‰BAää”ÇdzàæMòÜ9cæƒ:(OŸ®‹ cõ,-é1c ]\”eeDA¹~½ÄÉI±t©0;»vWÏÝ]yüxµµum`œE‹„99$p8°fxȹF™ªõj²G©©¿ý~pÆÔ)S'}¬JÜ´uÛžßö÷ñ÷«»÷¦g~Š¢²g·wr€ÌÇYõíF¨žää,^¾bÝ?íÚúkÝÁFËZ‡"Í̬;§>Íò(5uçÞ}£FŽørÎlÕTFfæÂ¥_mܲmÝêUùÿøƒÏáÀŠZ¾ø,8P™I2,U(àçŸpý:‡Å‚~@|<»];å?Æ—uè e\%‰F¼3üòÕk………õÎÇ6êë~3(ø‡Ÿ7DEßõóéUßGšSvF¯lgÔœv†zz( quq®¨¨¸vãæ¸?Œ4p@DdT|B‚ÁÐAÛ::†Þºeffööt^Œ»wÙçÎqŒŒà›o”K–°ÒÒHõv>|˜·v­ ¼¼ö•™Vìá¡`òè^ŠÐ[NË¡8ÝxmoGD„ÝW*•LŠ\.ß¶iã»Ã‡1o "*jõºï$RiÖãìU߬=wá"³hÝ÷?FEߥi:199?ÿYyYyxdäݘû…EÅ%¥á‘‘ ¹\£ºŠŠŠ;wï¾3tˆ¡¡¡‡»[`P°jQ`pȬϿˆ{ð ¢¢rۮ݋¾Z΄¤5]U5MÓÇNœ\´ly|ÂÂÂÂÕë¾; jŠäG¦:ëF` H,>wáâ´Og¥¦¥Ñ4½oÿï8±bõ75"QvNΪµëNŸ;OÓtÂÇêÁ_¼tyî‚… ‰‰2¹<($tæÿf§¦¥«š…yAQÔÊ5kùuKiiYn^Þêo¿Ûwà÷ºí¬û¤ZT_ê…„ÝÚµg“ÿ_~ݲÿÐ!æí­ðˆM[¶r9õ¿ŽŽëkŸºŒkŽ}}…ë×ócbXJ%ݽ»<(H¶{·”¦ifàQQ¦¦Ä¬Y”£#”—;wòiš.( zõ¢ U+x÷]º[7ÂÛ›++x÷]ÚÏïßfùë/Þ»ïݹÃnTÕpÀÛ›¨]©dR"!:w¦¹\Š™ZP] :УFÑB!¤§³V®–•‘10…žõ×_\¦ŠˆÖ„ †OŸ’ƒуÓr9¬Y#ˆe×·^¥úFÿqähëÖ­5fËÌœ:…ÇãEFÝ©û  O~¥R™ýä‰L&kÛ¦R©ÌzœÝ®m[ZεƒÃ—sf?JI‰{ð ÁÌ:pBBøÛ¶ÌËß½¨.ýzaôl–Ý{sj×vÞçsXjwƒhïä4iâ„̬,ã DG³½¼––ÚWÓÃCñÁ2f.EAh('4”“‘Á" å\»Æ­¨ D""4”SR¢}üy#0¨c‡ö3¦L€ÀPý×·G÷îPTT¤ÿGUB6{ìŒ^LgÔœvÖÆžßöŸ9waþ’eQÑw‹Š‹ùuË÷?ý¼cÏÞ²òòàÐOç̽wÿþ­ðÈ·ªób|ýµ–-Sz{Ë '‡Hj?ø÷ßÜ „D¿~tïÞ4ˆDÀfƒ««¬Á¥MÖä¯Ý¼ágš¦×ýð“X,úù‡ïëžè»EQÔÀý)ŠÔ¿ÿÆ-[gg;¶i#‰6oÝ6öƒ1K. (*3+kÒô™Qw<ÝÝ´¦«ª..)9xøÈø±.^0Ÿ¢¨ÇÙÙS?ùL 0_ûŸ~ÙÔÝËsý÷ß‘$)“ËçÎ[°iëöÝÛ¶zëö‰£GLMLH’\°dÙ­ÛácFš7÷óòŠJUð§ÏóÞèåKSEÓôã'FDEuhï¤ÖÞô“œœ¨èè[63×}î;ðûå«×>1]óO ‰ÖoܤžèïëÛûßc]4MÓõÕ¨ØÕë7¾ýñ§Êª*#CÚ™š&&%Ëår6›ÿàA×®]ŒŒhšV5Q}êhŸºÛ‰““bÞþX©Cl,ÜÜè3g”ÔÌ™¤D›7+gÏ–Ñ4½`ÿ·ßH’¦i‰„øßÿ •J8|XùÑGrðñáÅÇVV Q¦j½šF"‘ÄÄÆNô±Æd$33³KgO7-zFægŸÏe^¿÷ÑxæÅò¯W÷íݻü||8Nl\¼§»»Ö ‚mÛø‡ÕM/‰QÝMŽ,*’Ì›G˜xzååâ+¬÷yÓ³YÊËË<|8îçu§‡ûáø±j$‘r98:*5ïÞýÏo¸‹‹ÒÉIÉåÂõë•Ïž‘]º˜®Y#úðCÙœ ŒŽ©Öz^*++£ïÅÌš9ÃÜܼ[—.7ƒ‚ÕÏoèvï~ A]:wV¥d?ÉIÏHoïäÔÖѱi%¨ÃÎè•팚Óκ ˆ¿íÚÑÙÕ5==ggÿýça#CC…BñåÂÅ;÷ìòñÇ߯y{:/8{–{÷.ËÑfÏWV*„«+UTD.]*€£G•cÆÈàý÷y×®®®4›­(,Ôµ5Aˇ¬,-O;zç¨¨;ÑÑÁ!$Iè×oñü/U×È<„ÃáˆD"hïäŸð€þ÷tÐ4-‘H(Š𮩩š¦è^k îéímh`@ÓtßÞþ›·m ™1uÊݘ˜‘hÊÇ«ªªÀ¶uëÕ+–[[YÖ—®ª:êN4EQŸÌ˜Îd°±¶:xЭðš¦Ó32žää¬]½Š9dKĤ‰–½º²²†Äçñ˜•êСýÝ{14M‹Åbõà÷îØÆår«««@,!•JÕ™¦iÉ€{1÷;89q8œO¦O›3ë3¦ Í¿NÉrÌÁ9õÒê«Q=0fú~\||o?¿ø&M\»FFE¥¥ÄüˆNpp‹U;&Y·N.“UÉdšÊ`»¹Q4M+Š{÷hpwW0 {ïÜÜI\ËÔþ3h°jfÌÓ­›ŒiL¦oóôTæäÅÅŸÛ¶I$’&ÀP"UHª˜ø7lP˜™UUVRë×,[F$'Ë7o¦ÒÓYÿM€»»’¦éë×¹¹¹äÀôèÑÕÕÕrX¹’•“C:;+NŸæh]¯¦)(,”Ëå¶­[·`~§vmÏøûðÑ£9¹¹«–-‹ŠŽþíà¡»wq¸zMg³ÙÖVV……õe ll”NNZ¨M®“½ÿ>PÖÖŠ=xÇk‰Åbc0îÃÚµÕ'so?¿ÞÚ¦ Õ—SÏfÉÍË€öj+XQQYQY¡zkaa!ToE"â¿«pÿ>kÊCõ”Õ«E ÔxYе«’yÍãÑíÚÕ{í³C?hàè߯϶»³Ÿüz÷ÝÚ®ÄË‹}íÛË‹¢iZ÷ÒºÛ3Bo¡z‡CM@Q”X,îîéÑ«‡7›ÍÎöìï“§þúû„¡Á¼¹s˜<æj]ÐÄËž=+x˜˜dcm½péWL ›Í ™1uʳ‚CCCCCCæ×P©T4P©TÆÄÆjMW•YPXhcmÍf±˜•Je[GÇ[áÿ¬Ö~÷ƒêP®L&€²ò f¥þýå­gÆŽX,>w1 )9ùinîÓ§¹JmÙìíífN›zèÈŸÇOžêìâÒ«‡÷ðaC µÝW(nøñõ™L&—ÿçv™úÔ( »¸ºÆÅ?èÖµëãì'}ýý/_½öàáC##ò²ò^={衎öÑèQRRX±±œ6m½{KçÏç,Y©¬díØÁúî;29™uÿ>ÛÅE™‘A‡‡ˆùã0ÓÜÝk¯…eÞº¹Õ®,Óý¸¹)àÌÞŠµ{‡¥¥‹;šIÒ11e99¤îªmlè²2¢m[ÚØ¸ö€™ª®„. @óx"fQn.NN´F eeÄãÇ„¡!tï^CQ”LF¬\I?ΖËÿý®tí*€+Wø0r¤Bõ·6LD’¤\®P/³ùÄ köîÍÉO’¤‰‰qn^žsÇŽ&&Æ……NíÚš˜ë‹ÅR*ëá&7®Á;Ë©®>¦Œˆââz2ÑÕÕš»°ê_|Ý™™-Yÿœz6‹X,õ;È:{öÏcÇUoW¯X>°?Õ[33 rsÿs*©GÅ… UÌëÒRbúôÿ ˜!s:()‰íì¬Ôñˆ¦›AA^žÌ.f¿>}vìÚs#(øÓéÓêYuJ&«Ýb Îxw÷b®(kïÔÎÝ­øùô:uöœÖáîš;#x!QsÚYw–ê â`oGÿ3—ÏÁÞªkjÞžÎK(¤÷íã?yBÀùóäùóÿ~Ó32XpãF’«º’œ<<” .EA žÊÍËÛ¾{ÏÜÿÍr°·g~MŒ çÎþß³‚¨èè/?Ÿ]_É¥|Í !âaCU?aÁÁ‰IÉR*ÕI™«<ëKWU!¤µ7gûOš¦™Éýóæ~nðÏ3O€’ ™ãyu¼H$úlî—lë£?7öCWgçy‹—¨gc_)•ʙӦN?îvxĽ˜û?~öÂÅ};· U•ªr0Õ´¢i¨©©Ñ]#ü3GÜקוk×ÝÝܬ¬,ÍÍ[yw÷Š‹````mmÕÆÁA½¹tD¨£}4ZæÔ)Á–-ü $¾¾UJ¥R"‘$±p!ï—_Œ$Èøx‚¦ÁÓ“V(T}sÆFJÓ´R $‹;Ëiš‹‰”’χ¤4M?}ʱ°`bš›ƒ©)€£#…´>U€—Íleeäƒ$‡..²€88(U›Çµk\=š‰@=†æ×Ñ4-€Ÿ~9·±Ï>SúøÐÆÆÐ§»cGšÏ—Ó4ÍôdŽŽr¦•ŠŠÈ={8¦¦ô§ŸRêeÖ÷‡ÖŸ™©)”—WÔ]”‘™©T*;uìØØüEÅÅ2™,#+«G÷î¹yyÉR,Z™çæåY[Yi½Ot]¥ee¦¦ <ËEOd~>Uϼ,PøýÚ5z–£æúrêÙ,Ì© °ÀÕÅ™I;fÌA™×3fÍÖ(¶U+ÚÞžº{—#B!­Jô÷¯ýšñ¯¦¦fÖÜ/7mݶá‡ïAmŒÇçó«k´ÿLé.AvFðJvFÍiçÃP½fþW?q$‘H€Åb½=WI ñë¯Bøßÿ(Õƒs爄"=EÓ4sŸ;»Ú®D¡€ÀÀÚ¡WƒK!Ô‚g‡LMMïÇÆEEG3GnàŸãF¥44lùÇþw÷ôœ9mª*¥¢²28448,Ìß×G$çärðÈŸ555|>?,<|Ïö­övvÐ̬ÇUUU®Îš¹j@H¥¬Œ ÉlÍ!ÄK¡g³´kÛV „GF©dbbÌŒ‘ )mìGŽ”íÙÃ?x7w®¤îÒ+Wþ}ˆÓ'ŸHGŒ­^màê*ÿøc©LFÌŸo0y²Ôß_ng§¥ä›AÁÀAU;ô¦&&¡·n'&'wqump• |}z]¿¨‘^TTäÔV˃tõ/¡i°3Ò¡;£æ´³þ=#áa¢ê"ćÀÁÞÎÚÊò-é¼6n4¬¬$úô¡7n©¢‰ ìôt03“’H¦‘6n4ÈÏ'˜;%4¸!-xg9¡pèàA‡»~3¹ÒT$Ÿ¸vûöû£G3y4KV{§¾€9¤JWݲF%5--ûIÎÁÅjø<ž·—WHh˜{·növvÛwï©©©¡iúF`Pl||·®]=Ýݵ¦«ªöóéÕª•Ù¦-Û**+)Šºtçî]f¡½[×®;vïÍöL.—?}š»þ—MÏ ˜½–ÿ§¶ŽªàMML ëñc‰D"“ÉN=û8;[&“k¬»T&ûãÏ£W®]—J¥555w¢ï€mk[Õ×ýb–5X£ªUÛ´±½±hn IDAT07¿ááæFÓt×ÎåryTô]Ÿž=ëþ¡ê‹PGûh„7x°"#Y~~­¾øÂèË/úô1[¿Þ@(„}ûJ¥B5»€ÉÏ\TÚ½;Íżõô¤˜·‰‰Ëé „4M‹ÅâŠŠŠŠŠŠ»w)pq©aÞVUUéSµXLÀñ㬅&˜ìÛ'PÕÅÌj¸u‹5i’ñܹF#GšJ$ðÍ7ÊvíÄ10ñ3w/¥iZ&#`Ëú»ïÈwÞ1Ü¿ŸÅÅt\‹¦é¾})øæÁW_ŽgräßÔ/–i”ÙÌÖBÄÐÁƒn1—¬¨Dß»WZVVw¼­Oþëü~í7<÷âé“'!bç–_ΜÒg,DQÔÞýLLŒ{ûù5˜¹AœóçiO2gNó‹j>=›…Íf2$($45-M£„ã'µÜÜ>ÿ\bdD¯_/HHМôËÞ±ƒ¯zÛ·¯ü½÷äeeİaòqãdÌlœñã¥ãÆÉüýµL¿¼ìîî6sÚÔéS&3ÿ˜{<…è¹Ö¹¹y–ÿ¹€^¡PÄÄÆ½?jd“KPiì6‘ú—_#ø쌚ÓÎ ‡¡ö)8sîüÃÄ$š¦³Ÿ<ùíà¡ݻ۶ný–t^iiä¡C|‚€”‰D"ÕfÖ®ÒÒš¦{÷¦`åJÁ¢E†|`²y³:wfî”ÐÀÒæÐóÛЫ¯Å&ËÑ4½xþ<—·qËÖ_~ÝÂãñ¤R)›Íž>eÊ{#G0g·kói?•_Ûëh¤ÛX[ÿ­KgW…B¡5]U5A«W,_õÍÚ±' ’$?1ýïS§hšV(kW¯Z¸ô«É3>133+--íÒÙuѼ/iµG·ê­*øí›7õïÛgÕ7ëìíÊ+*]]œôëp劕•å˜Ñ£TëëÞ­Û{£FnÞ¶ýÀ¡? F$š3ë3{;]´FÚtêØQG­êçãsáÒ¥.;Ó4Íår]]œÓÒ3ܺvQ«¢v­ê‹°¡öù—··xï^ÞâŬ¬,VVëŸDzÛ6E§N• Í <˜ÙðÏ=vT·zcÞº¹Õ¾mÕŠ€øxR à/Yòï´œøx¶¹9´nýŸKQ¬zÒ$ù±cÜ'OÈ  8pr¢33 wwÅÓ§dI adUUpã8X±‚š;·Z*UhÄÀôˆªø—.U.YÂ>s† Àµ²¢¦oÞ$nÞd}ñ›¦åóæ‰ ïß'€«+½oŸ¢U+Q«VZ׫9&Oœºø« ç}Ù£»EQ÷ãâ6lÞbcm=|Èà¦åOÏÌl×¶I’™³Ùlæ8«Vr¹ìvD$Ð4]ZZzõÆÍ´ôôu«W©®·®‹{ý:©íF Jwwéøñª·„XÌß½»ú?híóîr9Sµ:a}w´k>=›å“éS£ïÝûêë5sf}Ú×ߟÇãå?{öç_ÇïÝ¿Ïçóëæ·³£vì¨ùäÃáÃ?ûLúÎ;2ª´”¼|™³kôhÙ™3ÿ6fJ K©湫‰‰lèÒEû™ÆÔ´´'99÷²333ópw  ûbÎÿêÞû®¢¢RÕ¤ …âÞýûQÑÑ ¾üB=ÏÕë7úõéí顽‘õ)A;£W³3jN;ëî¡ê~jЀKV¬äóùÕÕÕ­[Û,Y¸€y²êÛÐy}÷‘BãÇS®®Õ Å¿Q1á²2¢¤„X¶LlžNüù§Úµ£³²f躗"„€¹¨‘¦éŒ´$03· ` 6¬Ñe„P(¬‰“’E"‘µ••“S;›­ºš©©©D"QýJ …B6›Íܬ†é˜t’$™;êp8œØøx¹\áÞ­«ªW …<¯¼¼\ã‹Çã0§X,Öý¸x™LæâÜ©•™›Í®›®^5‡Ã¡hú~lEQÝ==x<S$) <|X\\bogçâ܉©Hc¥‡ÃaVJ=xccãG))yùùíÚ¶uj×®ººæÞý˜6–ê%äåçgdfq8lW#Cú[ …\.—‰ª.Ui†††õըѪ<¯¢¢‚éêŒY,–zójüu´FX_ûÔÇã„02’,,$„BèÖnÓF.‰˜îÍÄÄ„Åb©‚@$1í# ù|¾ê-—Ë7ÊÍ%:w–ÛÚþ{¡KA)ŸO˜˜”5ªj‹%“ß¹ÃR(ÀÏOinN±X¬šš¹\njjJÓtB™œLðxàãC™˜ˆ™׈A#~>ŸŸ›k@XXОžJGÈc³ioïJ‚!ݹÃ)( i…DR£P(ê[¯&¸víÚÈ‘µGèóóŸ­ß¸éÁÇ,‹¦iŠ¢:vè°fÅr{{íçsÌÿó¦Ílkñ‚ù/]¾xùò¾;´–³uç®s.ªÞ W—©“?f¡XçÚ5£?ÖºdcÆTïßF| ûàvLŒdæLe·nZ3ïØ³÷ôÙsuÓÛ;9íß½³næAçOþ]_ÕzæÔ³Y ¤´tæ_£ïÝ#‚ÍfËåro/¯¥ çoؼåÝáÃÔo¥ ÆY¼X˜™ùï "cczùrñ¬Y’aÃŒß}W¶`Žã}ñ…AFF™©)½j•ðÒ%n\œö_Œ]{÷»pæø1 N—®\ݸe놾ïáÝ]=}ñò÷cãToY,–­í˜Ñ£Þ5’ù•X¼|Å€~ýD¢š>ø@ë3v,A]@@vF¯lgÔœvÖÑC©êYAÁÔO>;°g—µµõƒ„CC#Ow7™LÆüÀ¾ —¡¡!—Ë•Éd ³Ùlccc(++#‚Ë5 g—•]ºÐ.. ‹ÅœcVPÇÒæPï_z0ƒ‘#G–•<€°›õ‡†Ú´:H’d±XAP¥q÷gÝŸªïÜ+—Ë÷wª³{A„B¡P?R7]£j‚ 8æ,¶–« 9³jÌÏ_ƒÔƒg³Ù$I2ó¤™Z”ÿ½š–Áb±˜‹;5"o56ªU5šHG„z¶óW`ŠÕÚúS_GU¢j÷½±U«þúZ¿¾×ƒÆ§˜ÃºÌ!Lš¦Õo¨µÑt—©¿ëׯktW9OŸff=¦(ÊÁÞ¾¾[ë™ÿab’©‰‰½½]ö“±XäâìÜœP‹IP”ÜÏOóþÓ/[c›%/??=#ƒ¦¡½S;fNT*c±ÈúîHAÓÃNNfÉdD›6ʾ}<s{‚Í>Ÿ€‡Y±˜çÜ߾͑JaÐ ¹ÖÒZ\l\|[Ç6fff-RZ@@vF¯xgÔ´vÖ3Œg…Ó>ýl×¶-Û·g³ÙªR=«x“:/ÝT›“Ö¨t/m²ºý B¯…ºÃ¡–|î£i_6Q¿åŽþhšÖÚiÕMלŠFÓ:jllG¨^”ú°ŽZ …žÝ[ƒtÔØ¨VÕh"êÙ>õýuš@ãöâ  ¨»jÝýúV\k õ}ªnùZãÑ]fs8ØÛ«.}nfþ®]jŸ›©cšÜó£ðÕò8 WAc›Å¶ukG<ñxÜú2A€··ÂÛ[sS44ü÷G»kW%óÄ!èÝû „õMk2쌴zu:£&ïaëÆ?×ÿ´È_óµî¼tk°kk©°z#Õ{+„B¡—ÈØØhögŸZ˜k¿ÍBµˆ–?;„BµìŒÞf`â¸$ ^÷z~p8„BèÕ…ÑÛŒ¦éæ_ñBºád9„B!„Ð[ Ï!„zuag„Bè¹ÂáB¡WvF!„ž+œ,‡B!„zKi?;Äçó% Ç{ÁÑ „ZT*åóù/; „š;#„^MØ¿ 7‰öᣣcJJJ§N°Bè5%•JSSS_v 5vF½‚°Aoíá®]»&&&ÆÅÅI$’B¨Eðùü¶mÛvéÒEǃízÅag„Ð+ûô†Ñ>:{ö¬‡‡ÇÈ‘#…Bá !Ô"D"QffæÙ³gññ…èõE’$vF½j°Ao-á‘#G2/$ Cèõekkkkkû²£@¨¹°3BèUƒý z­¨¿Õ2¢(*%%%77»Ô²ø|¾³³3I’¸™¡7Ì Û¼Õ+jñÂB¡·–áPjjªX,1b„Á‹½Ájjj"##SSS]\\p3Co˜¶y«WÔâ…#„Bo-᜜œ#Fp¹\™LöâBo0.—ëããsùòeÜÌÐæ…mÞêµxá!„ÐÛFËpH*•r¹\¼<µ8š¦¹\.3}73ô†ya›·zE!„j&íw–ÃTôœÐ4­z›zü°Í[½"„B5‡öáöµèÀÍ ½ÁpóF!„^ 8B/ nfè †›7B!ôZÀázip3Co0ܼB¡×‡ÐKƒ›zƒáæB½p8„^ÜÌÐ 7o„BèµÐôáÐŽ;bbbÆŽ;bĈ–Žª)BBBΜ9³mÛ6øâ‹/ÆŽÛ¿ÿf–yíÚ5‚ JJJ®_¿^wéèѣnjÓ´HZ*BƉ'®\¹¢zk``СC‡É“'[XX4¡º¥K—4høðá-›MÛ_,**:vâdjzzuuMkë>þþÇ!IRϯ߸iðÀÞ^^údÞ²}GÏÞ~>>MˆS·ëQª·|ßÁÞ~Äðᦦ&LÊÆ_·öö÷õéÙ³EªûûÔ©ää”Áôö÷SOoÙZtxNë[ZV¶mǮٳ>µ±¶nf„"‘hæ_§OÜÖѱ™E1p8„B½´ïDÒ ‹Åëׯ?sæÌöíÛÌübdee]¼x‘y}áÂ…¬¬¬æ—¹ÿ~‡\ºt‰W›ÍnT$»víÚ´iSËFÈHHH¸xñ¢*°âââ 6xyy¥§§ëC««W¯¦¥¥µTlué¿™Õ•’šöñô™wcb|{õzÔÈV­ZmܲuñW+”¥g ¡a·òòò™×'N>ò×1™Ã£¢žäR©ôàá#!!ÇOžÒXÔ‚µèöœÖW$†„TUU7?B¹\R^^ÑÌrµyK‹ŠæÏöð¸dnìá‘0¾´¨¨±!„B¨9šxvèòåËUUU3gΟ¿nõ×µo "/?ÿã©Ó>òõò¯þIk¸j}ÜŽˆ¬©½?zÔù‹Ï ¬­¬Ôi©Zt{ÞëÛüUP•ÐR­Ñ`9%·nÅNŸîàëÛuüxž¥¥´¨¨(>>´gOÏC‡Ìûôi‘B!Ô &‡Nž<éáá±jÕªƒž>}zÞ¼yLzUUÕ¹sçÆŽ{åÊ•ˆˆccãqãÆ¹¸¸è^ÄÈËËû믿òòòÚ¶m;qâDKKK8{ö¬‡‡‡D"9~ü¸L&ëӧϻᆱúHXXØÕ«W)ŠRÍìb"¿zõjûöííìì,!::úüùó0vìXCCÃG5ŠYtýúõáÇ+•Jæ­X,ÖÑ FråÊ•¬¬,©TzøðáñãLJ††6?B¿—z„666={öLJJÒ—ËMHH8sæŒH$rss?~<›Íf ¼ÿþéÓ§•Jeß¾}ßyçÝ&¥Ryþüù˜˜‚ üüüÔãס ûOss]œ)Š’J¥LŠ—‡{¯ž=ª«kBÂÂÌÌÌܺv€ªêê°[·ÛµmÛÙÕÊÊË#"£zõìaan~+<ÜÞÎÎÊÒ2<2*7/O&“\¾2tÈ`›ž‘*–H:uè0tð ‹ÅTñ(%%08D©TzyzúûjNœ«[ÎãììÀàòò {;Ûw† 566Öºöðß?Y+3³®]ºdf=Ö8ÉIÉQÑÑæææû÷w°·‹OH¨¬¬ê£6ó-84ÌÚÊŠY_ 7ƒœ;uútú´óƒC&ŽûH3”j¬/ò ÐP—ޤ2éµ7år¹—‡‡¿ß¿ƒÏ‡II!a·`ÈÀàqö“¾½ý_Ìúš™šMSÁ!ñ Bá ýÛ;9©²Õ-JµHãÏÍTMC퉗œ§¹º{y6yžîÍ[V\;}ºÛÔ©lŠRäæÖfÌæ´ÉµkצN*‰’’’&Mš´ÿ~&Š¢&Mš4þü‚‚‚ÌÌÌiÓ¦}ûí·:šKÏÍL«¶ŽŽ·#"Ân‡+•J&E.—oÛ´ñÝáÃn…GîÚSÛnwïÅüòë–ý‡1oo…GlÚ²•ËáÐ4½îû£¢ïÒ4ððaAaQqIixd¤B. ™õùqTTTnÛµ{ÑWË™‘pDTÔêußI¤Ò¬ÇÙ«¾Y{îÂE4ʹñÉìÏoGDÖˆjNœ>3}ÖÿžÔ×ê)r¹<7/ÏÔÄD•yqñÒå¹ &$&Êäò Ð™ÿ›š–ž——ÿí?ª&‰|ûãOeååu+ª¨¨¸s÷î;C‡z¸»k„¡z­#ò}ûÿëĉ«¿©‰²srV­]wúÜyfÑå«×¾\¸øÑ£”ÂÂÂEË–ïܳ÷àá#/n}€­;wíÜ»·¼¼"84ì³Ï¿ˆÔQ³¨¾?7³ôqvö¼EÿoïL¢:²=^·wºš–Ud³ ‹²5ˆFe3:Ô§ ¢¨'fP£: &13qÔDc\ã›™$Äø4êˆÆ YUÀ PEÙL‘Eè}»õ>”v:½A.qê÷évß{OýOÓPu«nUjUu“““¡/æéez×nÜè6f U­Vµµqƒ‚xcÆpÅ×®Q¤R'oïÚ?î}A ƒÁ`úC_F‡Ž;F’d\\I’³fÍJII©©©1b„ö‚šššëׯóù|¥R»nݺ‚‚3§‚HNNž0aÂÁƒ©Tª\.Ÿ2eJJJʹsç‚8~üxyy¹½½=…B™1cƉ'–,YÒÜÜüé§Ÿ&''oݺ•$Éššš±cÇr8¤œ ~xcÊ‚X,þàƒV®\¹iÓ&áµk×&L˜àããƒîR*•AAA$IBÅbñ²eËôê!99Ù××·—J6mÚÔÖÖ&‹øá™LÖ…z¨Õꢢ"tÜÕÕ•••U__¿víZ32Z[[SRR–.]ºmÛ6’$+++ÃÂÂΜ9¸uëVyyù Aƒ(JllìÉ“'/^ !4¦¯¾úêìÙ³'OžŒŠŠ|ôÑGYYYëׯï1ùúФ[öÎÛ«×üõ½?²µµ ¶³³Œ;æ£O6u‹DÖ\nÅ­[|[Ûʪj•JE£ÑÊ+*üýý­­­!„€ (Bøî²äÇ]Ý2™ôïolooßúÅö?Κ™¶zI’uõõó’_*.Ü««;ôí7666 åÝ”´Â‹—¦Çþfí];ÝÝÝ;¾Ú9aÂÇ~‰ÅIKÞþúŸÿÊX“¦ï;úFy9ú(KNŸ=÷˃I æëT „9v|æŒééi©(g%̽T\<ûq[¾Ø~©¸ø˜h@NnžÍØðцUš[PH’dtT$I’1‘‘ÿøü‹†ÆFw÷߯ªT*3Ê ‚È/,:ôÝ7¶<…BY•¶¶°èâÌéÓ¤2Ùî}ûçÍIX‘üaõíÛ‹ß~g¨§§¡ŒgäïƒæfÀãÇ]‡¾ý†Ãá¨Õê«S¿Ü½'TB£ÑŒšæ%J¥¦Â hhlLY›>îõ±éii …¼·©i€ùôî(*ò›=[|ú4[ P74³lldee6¯½ÖXXˆ;< ƒÁ<úÒ:räHtt´­­-„pÚ´iiiiGŽÉÈÈÐ^°bÅ &“)‘H‚X·nÝÔ©S«ªª¸\®©S$IÖÖÖ8p@.—‚X½zõœ9s:::³gÏær¹R©0räÈ .@Ïž=«ÑhÖ¯_/‰žžžñññ§N‚oLY8þ|WWWjjªX,øùùEGG777£»òóó###µ3åPH¯P«—Jd2º^"‘ ˆB=$ÉŒ3´?ùä“ÄÄD¥RiJFNNŽH$JMMEʽ¼¼öìÙƒæï%$$XYY!=þþþ—.]‚Þ¼yÓh˜º»» #33óÃ?D_š§ >G‡ÃßWråê¥ââ’ÒÒœÜ< …‘ºr…08PV^>nìØòŠŠù‰s¿Üµ»ªºf¤¿ßõ²²¹ññ$I>-÷IU@ø¤*J¯^•H¥ 碪p<ø½Œt'GÀä‰oÐétT^AùÍ =Ùºv*««¶¶nùû&e*…?kæ®}ûÓÓR —Éä)kÓµ_ Ä7ù/˜ô†^Èö|¹Á` @i…BÁb2ÃB…EE££9yy“&ÆhÔ%'77L(är8 ã^ߺ}GNnÞ¢·è¢ª¦Æ¼òI11,&Õða^W®^ƒ–^¹*–HæÏƒä õð†´µµ‰ì³ñ”8' ôWåO‹._•r·®n„··QSÂ+×®†ÛÚš hhhüç7ß:::¤§¥ÉåææÇöˆùô–451íìÄííÊövZ[Áb‘ðÁ „tMÒÔ„»C ƒÁ<Œw‡ÌÐÔÔTRRâîî>}útô ƒÁÐëy{{ç³_¼½½hMS§Ð­Å‹kßÖ@ î¶¶6ÀàÁƒµí<íÁýû÷ÝÜÜ ²¦Ñh|||N:eT³) ŽŽŽVVVZ Æ knnFgú駸¸8­kkëC‡陕ËåÆ"%¦èƒB=lllîÞ½‹Ži4‡ÃQ(ÚlŒÒÔÔÄãñø|>*Q£Ñ$$$  ‹‹‹¶5¦=hllÆÂÄãñÒÓÓ7oÞ¼cÇ¡P8qâÄÄÄDgQ ô’$e2YHPàèP!FkniùáÿgýpˆËá¬\žìçãSV^1Òß¿¡±iÂ믟:}¦âÖ-kkngçãÑa¡f̶<|Èår¹\®¶*Þˆ‰FUaoo§S$„;­­‚оm!tsuU(ƒø|½‹9NöÑ#è˜J¥Z±XFC&“ÉŽÈ®ª®þù—_~þù I"Ë1‘‘Ÿþc‹T&{øðὺútƒ(@KËÃ[•UÎNN«× å FËÉÓïõF¹½½Ý¯ýɧ[òù¶ºÉïîêÖÖÖn´rž¿n®C´UÜ\]=áímÔ0îÎÎNÀ;¿ 5²¬¼âÚõë~¾>F8îîŠû÷Yƒmm ¡  „t‚ p8ÊövÎo†ï0 ƒÁÿþåÁƒ»v/[ú¶›«+ª k.wÙ;K[¶—–® ß>ú§3gFrtt°³$ .+¯àp8NNŽînnºžêU…•›´¤*L¹Ãd2!„ …‚Éd>±£TЛNz× Ÿ–Hj4JƒŽ„@"‘üyÙ •7köã|FŒx75 •5ftàrq šü6L ÐÕÈÉË#bÊäIÚ_«½½}NnneUµvÑ4VÖ£r£)J¥ÒTJ•nŠªT*SUô,üE¡1duÑÙl¶SFíÖhI æ/Y”´ä/˶íør×öÏÑÊ"}Ã|z;FF¶UV9RUPÀ Ñ¨ ê­Ñœ¶´8FEáÑ! ƒÁ`žÿ³?räHDD„îXP{{ûñãÇ=* Ñ7ÅÅÅãŸ.[\\ ðòò2s 5§ètzhè“Gø—/_ÎËË Ž ÐF IDAT4%C 477744xzz¢oJJJ,rÄËË«³³³®®Nðtª7n ƒÒÒÒÐÐPmïÂ<ýWÒ…F±´ý$Äbqmm-¦ÄÅÅEGG›º½f&À¹sçRRRâããçÎ{÷îÝÀÀÀÒÒÒ˜˜‹ôôˆ­­íõeÅ¥¥nOvGƒE$©ár9€ð°Ð½_¸—@’dp`À±ÿœ`2¯cØUÐÅuˆ‹T&»ÿg7·'–×dd††ôj«V]ÐÂeU55Aè›Êªj6›í`oo4:=†¬²ºúÑ£G¿ù×Ôw‹ŸL¶d2™áa¡…/Þ©½;kÆt£æäæ†-^ø–ö›®îîÜüüÜ‚½5è,Uþä®!CºE¢_<â₾©¹sÛŒ;ÏÈß›·*ÑŠ‚€›·nÜ\]͘2îáýAR©4cMÚÂ%>üãÑ9«ð #ÞÿBHÐ ›°0J}=C¥RP(„­m»HÔÖÞóÞ{³?ƒÁ`0˜ž°le¹²²²;wîÄÇÇËtàr¹ÇŽS«Õ¨¹³gÏž’’á;wþö·¿EEE :ÔÌ)//¯ðððÌÌ̦¦&•JUWW·|ùòÆÆF—=ž ý8eÊ''§U«Vutt$yèСóçÏk¯4z‹ÞÇèèhôôt‘HD’ä***Ð#ðÓ§OO›6M÷¥RyÊ€¢¢"K• *ê¿BCÌDÍ”ŒñãÇ ‚ŒŒŒîîná¡C‡ às}4&™LöÙgŸeee) ‰D’›› ðôô4#Æ|š™‚ÃfOšóïï¾?{>íó#•ÊŽgŸ,(*úŸéÓ!„îîövv…/Ž!ô÷õU©TÅ¥WÂÃÂ~SºÎ1a p2dÇ®ÝhG¦s9n”—|Ú†Foþ­GÈÎPOO?ßÝû¾nko‡Þ¼Uyì?'¦¿9•4Ü%¶§@§my<@}Cƒ\.W*•‡mhlT*UB’$£"#Š.]n}ô(:*ÒÐÂÚÚÆ¦ûoLŒÖýµ²˜Lapp^~Á¯Vö¨\_êSñBaˆËàÁÛ¿Ú%‘JI’<ž}²öî=‚0QGÏÆ_Àá£G+««!„ Mûþ÷ŸÆs°·7cÊx¸ýüjB8ÄeðÜ„Ùß|°¹¥ÅŒf“Žô"½Õlvø÷ßWää454H^^¯þÁƒÛõõcT³Ù½/ƒÁ`0L°l²ÜÑ£G™LæÔ©Su/Ðh4qqq.\@{éâââfÍšÅf³»ºº<<<¶mÛ¦ÝoÔÔ©Ìœ9S(:88´¶¶ …Â-[¶@v˜®0!…BÙ³gÏüùó}}}9…BÉÌÌܹs§ö]/ŒZìÝ»í}Äf³ÝÜÜæÍ›‡6êÉÍÍÍÌÌÔ½E$%%%éÕ†¿¿ÿùóç{¯ÄÝÝ}Û¶m‘‘‘'Nœè§B‹¢fFÆþýûããã}||x<^GGGFFÆèÑ£ZƒªÕj£a²²²Z´hQJJÊÆ"‘hÆ Æ 3? c^°©ëSW¾Ëd0ÿñù›·}Îd2 FKZ°`Fì›èU®±ááÿ9yÒÏ×BÈ`0|^Q{÷Þ(?² |Z´³“Ó·rß^¶üóÍŸ½Ÿ™±6#3nî<.—ÓÝÕ½8iá“WG šž†²uíd¬]“º6}î[I666]]]áaaJZ؇!†{{GNŸùÁ‡n®Cwuû¼6"*bBöO?9::Ìœ>mth(Fó÷÷ãÛÚ®£p!¿€A§¿®÷k‰Š,½zõÚÂà`­ µZÝ“rzxR…@ø^Fúšu™qsYL¦³“ÓÔ?L®«¯Îþ&&$¬J[ËápÄb±»›ÛªåË4yS†áFÝ¡'}µzÑ‚ùró¶ïÜ…–Úëæ…Z…„L®¨¨Ú°áfn®¸±‘ëáá5yÕ•šsˆÁ`0 æ9@ „÷j«|;çììlÀäÉ“^Íf³™LæãÇõþÓ3™L‡#‰îÝ»–ŸŸïêêzùòe7nÜ8µZ­ÑhšššLP(++«âââææf@,‰ „¶¶¶r¹½°²²¢ÓéhÕ2:®R© ÑV¡i å•Ñl7S4Z­f0ùùùl6;""bÑ¢EjµzçÎÕÕÕZÙl6‹Å2¬ µZm‘VPP R©ÆG’dŸîÝ»×h\лàF1%½(RTT$—˃‚‚œe2™ž6›M£Ñ§¦ÂÄápêëë+++ FHHŸÏ7³kí™3gbcc³³³M¥™‚`³Ù©´²ªZ*•:9: Cé4š¶8Tù]]](¯lll¨TªnÆBµÓ étúòr•J0ÒŸÁ`P©ÔëeåJ¥òµÃñùæ«B];t:Éb•—Wttvzx¸{{y‰ÅbÖq!ÓÍårknß~ÐÜ<ÔÓS0t¨X,¹zýš»››ƒ½½D*³`aÚª•ãÇZèñתR©t¤R©¦”›JQ’$5 ‹Åºzý‹Å zÿ£$©Y·vÍóñ—J¥òx<™LÖÑÙYYUųጩ}—ÏŒ)¦n¹\Îç󻻻т x<žF£A«Ïõ‹Òå3F£P($IªÕj©TÚËǨ ‹´a0 ƒdggÇÆÆv¶· òÎïMš4©oÖ›ššF}îܹQ£FÑh4ôœýw7sJ N'5 zSAt: R©tMQ(”ç“477ïß¿æÌ™Âû÷ï?~ãÆ ¨{c‘ã½TÂ`0J¥²Ÿ -ÒfFRŽzJjµÚèJ͆ •JEk-ôhçìÙ³¨½Øç4£P(T*i0ºJù{°*´Ú¡P(¨Ck‘£h­i4”ièøÈ±ãÿþ.ëÈÁ,ÚÓµþú‰¥ÊÛÚÚç-Zü^Æ_£##!„Í--N^¾ì¥£"û#£þR(ôWEï—kÊè_¸ÍÐÿô¶¨ gZƒÁ`0¯$zÝ¡¾ì;dí¤,½%ËÌŸÒ¢»I/‹3º–tÓ´...kÖ¬INNÎÊÊ¢Óé%%%¾¾¾ BKeô^‰öš~*´Tž)H¹¥þ½^­V[Úôïsš™I¡ÞÜ«û±ŸU1àvŒ¢ÛÄG™ö°µuíºõ­ý)i!J¨7I,Uîà`Ÿ´`þ¦Í[NŸ=G£ÑoUU †}#:ªŸ½‹>øk*% Mé~Ø0é1PAÁ`0 óLéû2²Fáóù6lkH’\¼ð­Ic®—•Ëåòø¸™aB¡îFÃÅKâ/ƒÁ`0˜W²¶¶^¹r¥Þ><=žzQH$www@@„F£1µ³Ð äåWØðãó>C§Ó§NžD’ä ïK${û7ÿ0¥¨¥oÚô’—ÇßÞƒÓƒÁ`0˜ß?YÎÔ³a3§^ *•ê%_ÄéåWØgp{±Ï@_žA’ç¢/•¿½§7ƒÁ`0¿ Œï;„Á`0 ƒÁ`0¯<<:„Áôœf˜WœÞ ƒÁü.ÀÝ!Ì §æ§7ƒÁ`0¿ ðd9 ƒÁ`0 ó_Š‘Ñ!‹%—Ë™LæóWƒyåQ(, à4üŠ<·ôÖ„Á`0 ¦Ÿéyxxܾ}{øðḩŠX Å;w<<<N3Ì+ÇsKoÝ‚0 ƒÁô#Ý!ÿÊÊʲ²2¹\þüa^aX,–§§§ŸŸŸB¡Ài†yÅxné­[ЀÇ`0 æ¿ !¼W[àÛ9gggS(”ÀÀ@@Àf³_´<Ì+…T*­««+++#I§æã¹¥·nAnƒÁ`0˜ÿbcc;Û[yçõ»C/XƒÁ`0 ƒÁ€IDATxÚìÝuXSëðw½Q¥„ %*%*’v+bw+\¯€¢bǵóÚW¯RˆŠ¨(*(Ò²åùýqtÎÅa \Ðß÷óìáÙÞsÎû~ß8Û»ƒTYY‰BmÙ² „1b$þ„TTTtàÀþÖ­[·m묣£S× îUTT¤§§ß¿Ÿ>lØpÒúõëFŒ©¥¥%‘ˆ1 «ëØP÷H$‰Dæóyûöí£¶nÝFKKK,ÕuT¨/0 Ã0 ƒÁprr"•——S©8¢e<„a—[QבT(--ݾ=öĉK—.ñ÷÷¯ëpÿ§Hb±¸²’_×að;;vÜõë×ÝÝÝ(jyyù´iÓüü|5Ùpúôé!!C¬¬¬MMM%q]WEµiÓ¦]¸pÑÃÃD"I$b}}ƒÐÐÍš5«ë¸5ƒ$„BA]‡ÀoÎÆ¦YRRRÓ¦M¯]»6f̘GR(âM$‰»»ûéÓgš4iŒ äR©´®ëQu1 »råÊôéÓ>Ô¢E‹ºŽ Pȉa<àÚ} „Tòííl…B!Ÿ_¹zÕjw÷v7®ßðøkí_òže5º_¿þ§OF6eÊÔÒÒ2Ÿ=zJÄ¢§OžÊ/­róm[·µkç±~Ýú¡C‡99µž}úÊoXXXØ®Çõë×›7o>yòä-[¶ðx\M*˜””djj‚ü¸wïÞÔ©Ó$«B`PüÉåKUWCx½îݽתU+„0‚È¿ L $XL"}}.¡RÈ!2™,KB E,á‹I$ !¸€G–H$¾ƒÃð¨µîóçÏååe\n…D*‘%â+›››oÞ¼¹¸¸())1'ç•äëáô*—j²ÎÝÝ}Íš5Ÿ>Up¹·ïÜU¹áËW¯N>5hÐÀ+V¼{÷N[GGV‹K—.&'''''ëèꩬ †î^»¾oÿ¾ððp±X¢a`®&ÿÜÀРyóæ B)©©ööö†††uÞÑð€Çoù Ìüã*µŠë±Õ5~fæ“>°ÙìFææxâλRRRÊËËííít´µI$R«VŽÛ¶oß´iSIIi€Àî]»SoÝ*..nÓ¦µ¶––ÂÒ¿ÿþ›xóýûö'''úøtZ¿ný½´47sæÌ+W®¬Zµ*>>¾™ƒƒ=†a J%’Í[¶^¹r%!!áϹs›7o.TÊê"ð‡|g„†½xñâùóç§OŸÚ¿ÿÀË—/—.YÒÖ¹-ÇCJù« Ì×·³£ƒƒÊÕüü|/^œý‚Çãµvjµdé²/^°X,§VŽn®n›·lI¸‘ð ãÁ²eK „r¡j ©¤¸¨®cà÷§¥¥Mg0D"¡ R ûIu“Ébi …ÂJ>¿|J¥jii“Èd‘HÄçq &“Å’­ °”Î`oޝ  ¹Ü &‹Åd²„BA%Ÿ¯¥­C¡P¤R© ²¿eZaC‰¤¥­ƒa‰DTòE¢ª^[[‡F§ãU#‘HR)VYÉ—ˆ¿ü „&ñ¸\‚Õðü••••|--mÎçó•• …ÅÒ’b‰DâóyR‰¤®»€ß©æ PŠà: ¨G…k†@€ŠHpÃ$Ô‚‰ˆÀ\D`®"0Wj]jãàAÚõëˆB©Ø¸ÑéU®O~ýšqà9/OÜ©“`àÀº_5G~ÿc±¤á)”ÇYëÖIš5㇇×ut¿ƒ_«=•ÇCÝæ£ÉN„·°Ü6d©‘‘¨cGQ@"ý2ÿÐï×'à§Á\á÷ÇZ³†üæ BˆÞ«—°kWâ•IÅÅlRq1Bˆ$ÖÛ¹55Uwà@±§gù?ÿà)äé§O‹ÝÝá=«FüZí©<ê0 w"¼…™Û·‹¼½+ÀttþëFü)¿Ö8? æ ¿9ê½{øD!D?}ºÊ¹õñcRq±ÔÒ’·t©Ä¢®ÃÿâÖ­?;†q8uÈoÚó§ýÐN$iÙ’·hB‰DÔ§O™[·Òµ§M«Ø³§®ëÀ7”p˜ þÖ˜›6QÓÒ$vväOŸÈoÞ&MB4Áú:Ó¦‘ß¾E4‰Ë%I¥bgg<Äå2÷ìaìÝKKMÅØl©™BH;4”qâ„ÄÁÓ×'éLŸNÿ籋 ¦«K~ÿ^û?è.ƒ‚Yõe1¤’掌}ûhIIˆÉ”ZZâé”ǵçÍ£<NKMeìßOOH@ŠÔÊê»8CCÉoß’ø|êƒäÄÎΔW¯˜;w’ÊÊÄ^^šäOþðTZÊÚ´‰–€q8xp´ÄDæž=ô“'©OžH›6Åtu•ƒÿ–Iq1kófú¥K!©µ5ýôiæ¶m´›71KVâ·xöîe=J¿x‘úì™ÔÜc³Çޱþú‹ÄãI¾tÙ¶mÌmÛ0&Sjm­²PÊÓ§$.—µn¢P¤66êzG¾\Öö팿ÿ¦ß¸A.*b­_OÉÊ{zÊgˆ7Ú——YYbOOùöTWn•EW3r•TöŽòx nvu!ä£áè%؉Û$'‡qü¸ÔÚš%µ²’ÚØˆ=z‘šH]›Èÿ[gÎdìÝËŸ3?ªOÐJÄ#Y݆?4t‰kJP ð›û ~g´ädòÇRss‘§§°W/„òùQøç±ÄÎîó±cüÐPïß/µ°öïO.( Ÿ8Á8y’÷õ@½rœ?š?ÆbUìÞéé!MgØ0ÒÇxeB˜‘‘°woiÆÒF»wËŽ·+“Wì܉ètD¥ê &51©ˆE4þÏóKqºº¢¸k×J›4A!€–˜H.(À˜LQ§Nô‹i—/ F¢Ÿ;‡Â'vê`ººŸOžÄ âÞ·jE*-¥_¾ŒÈäÏJ›6E‘?|`9òsÃI¾Ü*‹®f䪇úÞQ7Ô5»ºJ+ G—&™êëË*«I+©Éê6uè áÐÕh?ÒÒ’ý¿1˜+ü¾D"üƒ‡š ;x0þEIíâEယgCyö I$H*Õ;O!¿"çäHš7—š›S?F %3Sܪ‰Ç£Þ½‹¢<|ˆ±Ùâ¶mUç™0Lbe%;·*òòbO$±¶–}¶ôBˆ’•…¤R‰ >Q@‰:vü鹂|¹U]ÍÈqºƒk%Á¸q?Ô;ÄÍ®²RšÐdtUI @!KÃVR9’‰6Äç  ]ö#„ÔÔ´Fêê-˜+ü¶h×®‘JKBÔŒ ùtÆéÓ?4WÀß¹Håå´¸¸ïÒ+*B¢NR?¦<.< ô³g)OŸ’?}öè(ÕyŠÅ!ŒÉü–¤­Bø»$B K¿|k‘”­2fMòg±”7ÄX¬òË—Y«WÓÏ£¦§SÓÓ™›7>u ?,üó0LgØ0úÅ‹!ŒÃ‘XYIMM©))øBQ` "“©‰‰´›7É?JZ´´lI”›Ügqï|ùÔ‘ÿÎGüýO"ѰÜ*‹®fä8ùE˜¶våöa³«¬”&4]ÕK7Ö°•TŽäŸéŸª)ff†`®ðæ ¿-Æ©S!áÀ•#Fà)”ìlíÐPÚõ뤲2üRpMàïÒF*¾ž¶§¼|IMIÁÏkâsúñãH$’88 ‘!Ä8t©?!Ë“òú5 ñ/7øÙYùwJNI À¿åP23Ñ×o0šÇLœ¿JäœæŽ"//îªU”ÌLÖš5ôþanß^Q½¹%3“~ñ"ÆfWìß/jß‘Hô‹u¾~hIŒÄ..Ô;w´þüUuâ‡zGÚ Bˆüê‰ÏÇ?Q(OŸªÈåë?¦§(}íþé¢kdóòÿý£‘Ñöq³ÿ´Ÿ]‹éÇ#„Äø·ÿŸmäjöŽæ5Å L__ó}ü¢àÚÆß‰Ï§]¸€ª>\Ü®þ ‚!¡.÷\%‰ÔÒ’üîõÁqÛ¶R++ÆÎŒ#Gð{ÕD;"éË»›~•~ì"¼°Qbm-µ´$•—k-]Š„BJf}?½ }þÌZ² …ÔŒ æÎª3”J:u˜Û·³–.%•—Kìí%ø• Õþ=üKÆbIZ´@$åÉÖÊ•_c• „„]º ü”AU' ~¨w$Í›KMLH¬ H%3“ùý5ùøJv6¹ €œŸ·R]#›Ë†®¸];¼/ªèïÇC•Í®–šqõeÓjŒ.bäÜ\Ñ£)/^Hll„~~ÕiäjöÎÕ´äÅ ÁèÑÕ¬;¨ç`®ð{¢]ºDâñ¤ ŠÝÝ¿¥’ÉøgR•wC|‡Dâ-\ˆH$­yó ,,8vvÔ‡%ŽŽ¢nÝB˜¡¡ØÑ‘\X(51Á 1##©™¹°PþjÕy.X€bnÜh`aÁîÐ\X(nÛVá+5sóf =__Rq±¸Mù¥øå™Ô;w8Ú“&ý\þʤMšˆ]\(/_êÛØ˜›³Ö®E$’àGNÙ¨$qpZX?|à´li`fÆööƯ$§¦¦2ŽG‰ºtù²f‹’-jªw™Œ_“ÏܵKßÒ’Ý¡©°P!0L_ŸTRÂqpà8:Êß_WÝ¢kas‚ÞQ9ªlveUŒ+Yä?5ºT¢Þ»§ß´©~Ó¦úœ6mèÿþ‹ééqcc•Z­F®fïh\SÚÍ›úM›êÖ×x5æ ¿'üQ÷î ¿ƒ$ìÞ!D»y“ô#¿«!ìÙ³bß>q«VˆB‘6l(:ôó±cß.ïÜ!$±·ÿòÒÉ iðKØ»wÅž=D&cFF‚#>Ÿ8ñåý!„´qc±³3"“1==ÁÀŸ“_*vv ‚ii‘Š‹UžO©2ÕH¤Š½{…}úH 1Mìì\±oŸ(  šÝ1ŸOœal6F"‰Û·ÿ|ℨcGLK ¿è]Ò¬þ?tPA“Þ„„p7lX[#„0Gá4¦«ûùàAqëÖ•*±±áÏœYƒE×üæê{Gåx¨²Ù•U9®¾Dþs£K%‰„T^N*/'ñùRccá€å×®á;Q5¹š½£iME"Ryù]~Eð[L Þùüu‰„cgG.,,KM•4o^{åÈÿÚR]×ðË€k¨cäœÚÝ»äÂB‰­m­NàçÀ\€:ÆqqÁŸTŽS×±€ p½uLÒ²%¦£S9nœ`äȺŽT€ë@Ž+€Ì@æ s¹ˆüª¿¯ ’`ën”ßzS3ÿöG•ó±:¬{Y¥´ú™ü|Ý«Wº±¥§+´“RÝÈà¿ñ«Þ3¹özéƒ|‰Gsc¤.?¶UbÐ(uÂÏ£SIäjÿ[ER‰äzf³95´“¦ÿ@ÝúU+ü›ÉíãnÁdP™u ø!d Å­¹ñ™Ûoa®¿ Mç R©ôÅ«Å%ÅU®)‹1TÕw} ‰Å⪠Ť¥3Ï 3ô M1)k®V4¨6úéTéý§ÏU'"±¨šqˆEUÂjÆÀ 3LML­šX½zýJ“ÝçG©ÜGj†f;éOeŒýPε݆!±DŒaµu„²úÃLíýŸhI©T*‘jT&Å4 FÝø¡ð0 KªnX‰D‚I±ŸÈªÆG†kB*•J%5s&Z"•H¥UdÐ9i~âùËç<Ï®¥IãÔT Uó•åQ(2YíE—àß[™'_ž˜ÿeçWÕëó~ÖE®-~n„¨ôÓãMsÄ#S%@ð0ó¡@(`Ð?´ûT ‘¨?÷ÿ‘k•ZR'mˆ"“Ér½8ŸH"ÕL‡V³%iTZuJ¯r0ütx?™L¦PÔöï0êH$•òŸî§?·?ŠD"¤ùq…üùmZµÁ¤XÕÇ ¾J„µTaº®©¥A½»LhÎÒ€F×5ý¡áT¥ÚoÕdÕØêîý»¶mmk¶¾Äjë`Ãjæêã:iC©D*FµuH ®T§%’jõ¦&ƒáç«f`µÑV’ˆÿÓýôçöGƒ4¼gR$I$ñ_ÖŠ@)YèWk† ê–…>­”_×AüWð=­ž|CýEAÖ”zÞ’õ*¼zLÓh®Àãó´Xõèâ€"®ØœC¯ë(ÀÏ3çЋ¸¿Û76Z,-ŸW×QüÚ  kJ=oÉz^½ ¦nit‚Çã±X¬ºõ›ž¸½>ý?;m jœ™>ý~ÎÿÑ\ÅbUVVêéêÕu ¿0hÚRÏ[²^…W¯‚©[šW`2êÑ͉Å\±)»¾œ?Á”Í(þ:®Àb²ø•ÿ7']j´aM©ç-Y¯Â«WÁÔ-æ |>ŸÉT=WHHL êÙûÑãL…ô³çÿ êÙ;/?ÿ^zzPÏÞ……5ù‹OÅB6Ñ9©TzâÔéácÆyûúuì2z¤+×®×nCÖ‚”[·]Ú{«L—=\=½{ô\²|eùçÏUæVPPP#QU36½¸Bõ¥ˆø€Q~Ì_Ca^þ‡‡ðù•Õ¬&¾ éù3&“YYYEls£æõì½gß~M2ÌËÏ?pø¿ª<•©l[üñ4]uj¤® ñîè‚_­­'^µ’’’#’eXoqµªÆG£Ê–ùé6¯¢£QÕÑðŽ..)Aßï¡ ï'Ýûö?eÚñS§åoÚ$Ø£ ÚJ1ç>ýÆMžzâôüDùºk²·jØVjß¿=þäÛ…<ÍÎAðyÆFÆ*ïÂtsqf2™ ‰‰öv¶òéÉ)©ÖVMM6Ôb±ÏÒÕÕ©ò&N ñ„RYªÃ$Š|ndTêíÛƒú÷=bxEEEBbâÜȨ°iS‡ ®‘êƒE ¢8lBH(>ÏÎ>pøHiYéªeKk»\»–-7¬]ÃÑׯN&:L*,­¨kÑg«ømî³Ãfèé}wÜ­Ç&BïóÞ8|¤K`ƒQë²àJ¥R͇4“ÁüPù`ý’’Ò‡³X¬„ĤC‡T™áû÷yéÀ ÿX}ÏŸd¿|¹ïà¡93Ãtµuð”šÚCN•5R׆øÝó\ïÖ»žíäÝH¸ùµj˜•U;áåJ1©ìIÝ6 æj|4ªn™Ÿmsµa!.—{ûîÝöí¾ëèë ²u¤R©üªð~ÂçW>züøïŸ<}õg¸|Î*÷h‚¶Â«9+l[W!$ =ÎÜý÷>‘H4¨?ùºk²·j8Š •a³ ßöíBž¦×+0 •¿UB§ÓÛ¹¹&¥Þš8n¬ì‚òòòÇOž ‚a˜®®nÛ6­eýQ}…B3 /\ºœ˜´gÇv»–-ñ”î]»,]±rãÖm=ºwÓÓÕ­‘0êœK›6 4ÀŸwêà­££³nã&¡PH¯ÆhЇÃnßνúù˜qè…B }ÅsIø8q°·724T¹H%|†aµ÷‹:Õ)‹Á`ðø<‚õo&'‘I¤1#†oÚ¶=ëùóæÍšUÂð¿?Z_|g”åÐÊÁAŸÃ‘¯W]©²FêÚßÐÚªiBb¢ÂÈLHJ¶¶júòU†jþèKÀöíI6 æj|4ªn™Ÿmsµámuãf¢‡ûw}3)ÙÚÊêå«WØWèk(¿Ÿxz´sqn³ôZB‚O‡ˆp&h+¼šŽr9·ssC=w~`¿¾òu×doÕp)ªÐ>Ä=R!Zõ9±X,‘JhT¦FGo¯ÒÒÒ‡ËRnݹ+•J½Ú{`v/=½[Ÿ~Ÿ ñE.];yJŸÁÓþ˜yëÎ Ãfý9oñòøÒÇ™Oºõé·fÝüå{÷ºõé÷òUŽ|q%"3¤ÞþC‡»u ²·µ•O1l¨«³ó«W9øË}õèÛߣ£ÏÀ!Cã®\ÅSoßviïõöÝ» S¦µïÔy@ÈÐôŒŒÇ™O†Œݾ£O¿àÛwîj²ž›H$Ú´u[¯Ûwêì×µÛŒY³³_¼”•RðéÓÄiÓ=}| žñà!¾ BhÇî=A={yúøNÿc~œŸDBJUD!…TüŸD&ã/Ož9Ûg`pûN‡Œu3)Y¶Uþ‡ã'Omß©ó ¡ÃÒ32BýgÄ£ä‹ìÚ«Ï’+eñWÙ’Ož=;iòˆ1ãTv“‡^R!R9¢ä÷sy=îÞ·ÆÃ‡øË¤”Ôžý¾Êya~nè¨1Ýúô“­áÒåq_Û¬[wîâ‰ø€|ž={^DèìpÙøüsþ‚>ƒOžö8ó ¾¦@(ܳoÿ˜‰“û TÙ¾ƒ¿,.)QWß§N?±×€A“¦ÏHHLª¢ÐΗââ{õXÁåÊR¦„þ1l̸n}ú½~ófÖŸóz ;yÊÕ7ä·RÞ£1 {õ]³ÄÈ7‹ÊõÕÕHÃ6Duðòºs÷Ç“%¾É}û&7·ƒ—^MùÆ$ïüÅKc'Mé30xJhØÍ¤om¨2lù7w¥3rAÌ’W99òEÿ¥8ÆD]‡Œ ‚zÕêh”J¥6zlŸAƒç/Šùô©P¹Í5ŸUu´ç»÷¸rûïhO…ùºqŽa˜s›6.Îm/Ç]!XG“¶RÞʶeËÒ²2>Ÿ/_w•c[y¤!„>~,ˆê30xÒôÐG35,T¡ƒ”‡™B ï*wüu›6Ë—¨Ñ\Ï糘,©z­[µÒÕѹ™˜,KI¹uÛÆÚº±±TúõT*•JÏ]¸¸mç.O°éSÆ,_yç^ZëV­2Ÿ<•H$R©4óéS„PæÓ§øú3Ÿp8ìÆ–òÅs… Ùj/´üXPýâ…o§N éÌÍ7­[Û¦µBèà‘£·líÜ©ã¢ùQÍmšÍ›¿àöÝ»²5gÍýÓÛ³}ÔŸs+++gÍ7g^D× À¨y …¨E‹5_góöØCGõìÖmÙâEÓ&Mz÷îýô?fÊJù3jA;7·È¹á<ïϨùxâþC‡·ïÜåÓ±ctd„––Öêuë ú¥²RÀãóy|~iiÙÝ{i;vïéÙ­+FC;qrÕÚ¿ü:û,^ecc=kîŸÉ)©øVQ µ÷h97œÇãÏ›¿€ T¿Î²²³?|üˆ¯ó8óIÁ§O]ƒåc nɘeË[98L™4Aeü ÙÌb®Py8áC³²²’ËåÉ?D"‘½­o§Ž›·Å .»kwÿ>½ñá1tp0BhVèŒèÈyòƒ­}»v¡Ó¦6¶´X²bå{i²ü7lÞÚ²yóa!ÁøËkþjݪÕÔ‰ãy|ÞŠµkñö<ôÏù}}:Íþ#lxÈà¼üÑ1Käpr¹ÜÈèE•‚ÊIãÆM7¶¨¨hÙªÕêv“ÅãóT.ÊÿðáÙóç:xQ©TWgç¤ä|wßw^~«oÄ—úžþçÜÞ=ÜݦMmÒ¸ñʵÝÏx@°Û*d.•J]œÛJ¤Ò´ôûøË÷yy¯ß¼ñjïš¿(¦¹MèÔ)M,-׮ߘñà!Á]7Keå¤qc'\¼tåj‚õÕÕHÃ6Ä+âæâL"““oÝ’¥'$&Z4jÔØÂ¯¦¬¾U„·c§›‹ó3¦ÛXY¯\»îÁÃGê–e({"7`B‡ ÉÏÿ°0R|Œ­mÝÊqêÄ |>_6ÆD]‡ªõªíÑxòÌÙCGµsw›1e2“ɌݽG¡e~t|ªîhì[G§¤~ëè7-5jli¾?ï ü\^'§¬ìì/US³q[)ïAxë1 F¼·ªi#„V¯_ß¶µÓ”‰*++W¬ýK]¡|~%ï{"‘ˆ`˜)€¯¹aËÖ–Í›¬rÇ÷ôðŠ¿cW}‚Ëã2™LLý± 2™Ü¾]»ÔÛ·'ŒM&“+++3><ðË ÿ¹+ ‹Å‡<°_ïÞ¡öíÚ‰D¢ÃÇŽ1üð±ãorß6¶´xš•ÕÊÁááãÇEÅÅúú™OŸ:9:¢ï®|扛©ý·CùùB¦¦¦êV‰D»ÿþ;xà€?fLGøùíܽ×ÝÕ_!$8¸wî!‰D³dfTd÷®]d/ËÊÊ5X§ŒÍf ‚S&€gËfëÍš;¿ô!äÕÞcÔðaø`Z°8¦´´LK[kϾý}zõœ;k&BÈß·óØI“3½zâåb[°(¦´´ŒÃQªƒ½=FKHLÔ¿Bèê& ¶qrJ½}[ÖìÕ£Gð€þêâoÈf¼ÉûŒ©9Ò8qÚ …ôá!ƒûõé=rø°)¡a'NŸ©¨¨ÐÒb èÛûrd²)BÈÁÞNŸÃÁ0L"‘:zlÈ ýúôFyz´ E‡wnÓ_ßß·s·.A¡ôŒ „s›Öýz÷BI$Òõ›·”——ëêê ÂC‡à=‹ÒÕÕY¶jMii™,æœ×¯ËËË'Žoia255¹/‰Tþ/“Éäóù*§äfR²–––‹³3†až‰É)Ož=³kÙR¶ïÈïJøL_¡¾b±øøÉSÝ»t=b8>ºJJKœ8ÑÊÑA]û+óä°ÙÍ›Ùܽ—†ŸõON½¥««ÛÊÁáŸóÿº»¹â9{z´›9ÿèÉ“Žö‰DÝ]V^½ÀÒ¢BÈÔÄäR|¼H$"‘H*×wnÓZ¹UƬ² ñŠ0èt7ç„Ä$ü¨2B(19¥So…3Ã^¿~£.¼#ÇŽw ÄkêáîöæíÛë7oÚ¶l¡2ìA¾Ž×/9 ‚ïŒ>`JñœÛ´ÁG£D"Y¿yKYy¹¶––º!èPu£B]½j{4 …Â§ÏøùN3!óæG?yöL¾ÍE"ÑOÕa!ƒáæâœ”äÓ±ƒ,àÎ;(KPÞ ƒÊÐÀ@(r¹\mmmuë·^;@ÀçóBB‘èÉÓ§'NŸiïîŽä>ø”÷V‰D¢<Òðkk|}ñA‚aغM›ËÊËNšãÙNš®ôö8dpÓ&MT3=]]…ðLü:wîÞ%ß\ÕŽo¯ÐUÏø•|žçèàÕþò•+?vrt¼—ž.‰<Ûy|í<¼ÅЛÜÜòÏŸììñ–EµmÝzóöXk«¦Z,Öã'O,-ee=Ÿ:iâ³çÏŸ<}êêâòâå«@??…¢+bc=µ7Lâ+ÓéjÕ1/?¿´´,ÀÏW–àçû׆M²—®mÛ~L†!çï^âWÏj²þ‘aXQQñ›ÜÜ —.#„°¯s4Ïöø}„D"~ÿþ}yyy÷._ÞhH$R—À@‚¹ÂêåKõ9ú!)&}ú,kk쎕kÿZù2'§´´ÌÅÙ™÷µ==W¸vãFP`€üoZTÙ’n..cÆX‘™#V7W˜;ë¶Þw3 Œ1 ÓÑÖ3bÄÆ­Û¤Ré’… ¨Tªì=ɽ5¼ÉÍýüù³ƒ½½ìΈ¶mœ¶lß!‘Hð¿î ø_Ù‚ÍÖC‰Äb ÃÆ…’J¥¥¥¥ïóò¯'$"„$R‰lCSSü[TÏn]ì쬛62ag A‡ªêêUÛ£ñÃÇ>¼e¹uðöü2Wøº ñøÔ¸£¿ìwÞžžËW¯ùÒѯrò?|ðòlŸÿáú~® ü\eYU®£®­ð„IÓCå[·r=b˜B7)ŒíÜ·o•GZZzúšõeƒ¿?÷¡\èÜY3ÙzßÍ!7xóö­Êa¦þR~6 rÇÿá¹ÇÃÏÙ¬Ó²E ƒ¤”TG{û”[wšÛØà›`˜!$Ťø}s""¶öv33íí?WTصlѼ™MæÓgzzz‰ÄÉÑA¡èŠJ‘‘žÚs 6@½{ÿÞ¢Q#…EmÜdceefjо~Râ ù|~EEÅ—¡}×&4U³rMÖI»÷ßû>|Äf³7¶ÔÖúnZÊa+Á9}»bEùêyv¶¶ ¿^ÛØ¶uk·{ïßóçýY^VŽ1vœb?òù*Ë%Õ·³Ïâ¥Ë+**Þç翟×5ð»øí=-©­Mô[ŸFzÌŠJ‘TÍÕÎÖVV† ‹ð•Û·sß¹÷o=]fÖÖ²Íå""„ÊËU6ü|6BˆÉd~ŸBHGGGþ%žOæÓ§'NŸÉzþ\WW×ÌÔT‹ÅÂÉÖÑåè,ŠŠ8vòôʵë$‰£ƒýèáÔÞ×ABãò¹Êõ}ûîÝ›ÜÜ7¹¹ ‰I²Ää[·G.Ûwäw%ìË‘ÕoÏBEÅÅ!]]]Yþl6»R ¨¨¨ÐÒÒ >R–ó©#‡¾¶Øw9à\>òôY–±±Ñ‹—/C À—êé}Ë™Ãáà9«Û£i4ê¢ùQÇO›¥•ƒÃ¨áC-5R·>ÇÓÒÒR&m(k¥Ö­™LFbJJ—€€Ä¤dk«¦& äÈdz•­¦««£2¼²òr„[OO–?“Á@© ›ÏçáÊr~”™yòôÙgÏŸëê蘛™±XLù¢åÆØ—š4A‡ªº=•õªíÑXRZо¿¿?K¾Í‰Ç§Æýe¿kÝÊ‘Åb%¦¤v ðOLN¶¶jÚ°Aƒ¼ü|TÕ9ùÜ ‹Š ƒÁ X‡¸­ðÚ…Ï Ã©‰D"áïZR¹º+ï­*GÞʃDåh·¶jªüöø:÷ºrÃ_ÊÞ‘ú_žs>¯Qâã !Ov7nŽ64=ãþ ~ýŽê`fÀÑG…N"ÿqˆ¢Óé­Oœ:ý,+«‘¹9‹Å²kÙònZ:[OÏÒ‚Íf+WàUé1Õýh£¹™Y“Æ–ñW¯)ÜTó&÷íC‡§Mž„ŸÔ())•íE%%% CWWÏSv)ŸÊ—ÿC¸‰D*.)™úG·  eg±õôB)·n]½~C~M…MŒŒBEEE²ÀŠ‹‹å×”QÈgcm%‰*++ñ Ä’…Ѧ& å·Âߘ~(ÔNÞbH+RnÝ~•“Ó¼™µÕ÷iØ’*é1+x*gëU|8sî<…L.(øtõú _ŸN*·ÂÖ„N¢0ߢÓé kª{YRZºxéòÞ^LŸ¦£­ºÿàAêmŋڬ­¬þœ=S(>Íz~ôø‰˜å+·mT}• ƒÁ(.-V®ÔÍä:9wŽì?Xf=ÏÞèð£ÌL…ØÊËË‘šoKúlB¨´¬L6},--¥Óé, ð˜èù Í«®™›™˜4¼›–¦¯¯¯«£cokûðñc<7YÎ%¥¥t:ÉdìÑÖVMçΛ%ëèñ“‹—¯Ø¾qÁúš|ÿS׆² )J;7·Ää” ÿäÔ[]”³ýÚk*Âï.++—ÕôÇŸ+>« ›ËåÊç\RZºhéòŽ^^Û7®×ÑÑQ7`fo‰ÄªnT¨¬WmFüëGqI‰Ü)Q¨o•ÕùñŽvMLN ò÷K¾u«K€bGkr\áÁÇ͛Ù( ÍÛJå·•û—âÞªj¤=Ï~Ô¿/)7B•ïœ(g¢¼ã+ç_õµ<>O¶3ðnïñ¹¢âÀá#••vîrK¾TÃØØHWG‡Ëå¶lÞ¼~ý&9%•L&;9:”–•]½‘вys Ãl[´x“››v?é•£B)•B ‚´Dÿ8jHpð¹/$}½š/}ÓÖ­d2Ù¯³™™)[O/îÊÙÒËññv¶-«l‡òæM®P(2xûë¤ßÏ ÞÄÌÔ„Ãáü{é²,åR\¼æ%f¿xÉf³uttÌÌLÙlö犊ÖNNøãyö‹ËW®ªûŸ¶¡êê긹¸Ü¸yóêõ]ƒ‚®^Kj1ht ªJ”ÇRs¡/†ayùùÇNœ5|Xïž=ö5ï[G·÷Èzþ<)%µ°PÖÑUÏd…ÜTd¢´ãŸQ•Ç$‰H$¢R¨Òª~L£IãÆ¦&&ãâ›ÛØès8r‡¥!©TJ&“ûöîµ{ßþ¢"«¦M_¿ysæÜùñ£GI¥Ò† =ËÊòíÔQ*•ÚØX“H¤çÙÙûõQ(·œ/0Ò«â÷úöîu3))tÖì?ßÖNN<ïÆÍ›=;j$þ xä°¡¶l%“)Žv×n$ÜK¿¿mÓF ?á4dÕ´ ‹ÅZ¾jÍ€~}$irjê½´t„PÚýûøwe4mø ›·P(ç6­¯^OxûîAié÷96ÞåYϳ÷ü½oÔˆáx>ãF\ý׺‚‚;ۖϲžïÙ·?rnøO„àçç×ÙgÙÊUb‰$(À_9àj¶¤‘½œ/0¤|wõ >4gfê*ý†“£ãÖØ¶¶-Û¹¹ E­“þ>x?)‹À¸—–njjbײ%>Øöì;PXXdcm•óúÍéÎM3Zùx£Ê—†™›š2ŒØÝ{ý|¥Rìþƒø\!óÉüh¡T*mØ ¡H$úkÓfŸx|þé³g›ÛØÐhªOØQ)T±X,‹eߨB/^¾úðñã þ}å7¡Óé­ìoݽۻGw …²sÏß]ƒ³žgç¼~ƒ¾Õ$“H¡»éi¦ Mìl[’Éä^Ý»:zŒD"5³±¾s/-óéÓùÎ%Øm)˸´m{îÂE‰Ô¯w/ÙÑË«×oÉdkëÔÛ·ŸeeÍ›3‹`nØ H(úkãfŸŽÞ<>ÿôÙsÍ›ÙÐh4„ºw„BTƬ² eï0R©Ô¶e ¶žÞŽ={›7³1Ð×—?,[ ¼>={8|aX‹æÍÑÕUý9¢2…TF®°ã«hDˆÏç3D7AÈóôhwâô™vînòëËOaºˆÅâ¸+WÏ_¸Ø°añ#GtúzEŒ£ƒýµ Íll0 £ÓhVM›¼É}‹ ’/¢‚/2Ö«â?SH¤µ+W?uêŸó®'Ü$‘H6VV‹æGÉ®O>tˆX">yæì‘ãÇ,YìúõâÄšÂápþZ¹bÖ-óÅp8œ]»Ùÿ÷°Ñc¯'ÜìÑ­«º­† ©¬¬Øä¿C ¥Ãq²¿:::sþ=t䨿í;tut:uð^±dqdô¢;÷Ò:z¹eŸÁ Ï ±ÿðáMÛ¶3™ ;»¡ƒƒ vƒ!ä.=)5•F¥¶iÝZa+7—´ûïòò&Œ}ìä©ÍÛc[·rœ8nLÔÂÅx¨ÖVMíZ¶Üµ÷[}{tí"‹¯^¿q1.ÞÌÄ$têd;Û–Á¨»–°y3]‰„oŽ/ ›>õô?ç.Å_14П4~¬“£#¾@åš6cÿ¡#›¶Å2 ûoÍBð \# ÛP¾"$ÉÃÝíb\|ûví¾v¥l)úÚk uáu ”H$ñW¯]¾rÕÔÄ$têd;;uo\É笣£=',ôàÑc›·ïÐÕÕéèåµbÉ∠åŒRHDo‰ê:Ô@__å¨ ¨WmÆݺ „«×o\»‘àho7cʤ1K¾¿þèøTÕÑßvU‰äÑÎýâå8ü ‚ÂRåç²÷*•jÒ°Apÿ~]ƒe¥+¼ h Á¤¼Tyl+4&“uîß *‰r¶·nS.ñÏÙ³Ô 3…Tf®°ã+çO*"üYû‚OorßX6²DõCV^)¥änW×€péö¿¢…§®ù¼y÷†Ãæ°uÙÕϪV…GF5³¶;jBèÁÃGËV¯Ù²n­ÒµTuâWiÃú¯ž·d½ ¯^S{äw|y 6DUWàñyTZÕ' þ3|Ф þõïÁP—•SZ\FWm£Ñh•••ºÚõúWÆó?|x“ûvèà`¼_¤_Wbõ¤›~‰6ü%Ôó–¬WáÕ«`j‰Âޝ¬ê¹BÓðÄ@(’èëjU?Pèëje‰$õgtÕ6…& ês}/ÅÅßIKo`llÛ¢ÅwG2VO®ÿmø«¨ç-Y¯Â«WÁÔå_YUsOW[·þ´‘X,bë°ê: P3Ø:,±XTFWm£ÑhŸ¹Ÿës}Ï_ºL£R'‹dwip+ã©þ·á¯¢ž·d½ ¯^STìøJªž+° êÉáG„P(`ëÀq…ß[GK(ÔŸÑUÛhTš ~×wýªøYövûvÆÊ§Ô­ú߆¿ŠzÞ’õ*¼zLmPÞñ•ͤR©P$¤P(õd>%–Hid)ƒN«~V >`Ði4²T$–P)UÿÎÇo€B¡ˆÅbü‡Të:–_´aM©ç-Y¯Â«WÁÔ¢¹¿’O§Ñ‘úƒÿ1PÈÑ… +]–@(¤0ÕÏê—@£Ò„"!¾[ŸmXSêyKÖ«ðêU0u‚h®€ÿXý9ð" 9pâ÷ÂÑÑŠ„Ìÿ›cEt:] P)Uÿ¶:PÚ°¦Ôó–¬WáÕ«`êQÍ+•T µžT@‰E"Ž>§®£5‰­£UZRZÆXm£R¨¢ÿ§Ë9k´aM©ç-Y¯Â«WÁÔ‰/¿Åw-®®#ÑÈÀ¾áÄïðc§ŽÕuT è€ä+÷®ëª •J³²³Þç¿—ý»wðÐÖÖ®ë|Ãb±ÌMÍ[4oqìä—ïr¿ÒÙ—¬ì¬’Òccôÿ{¨]†|*?Šÿ+ÍÞ½gin©«««ðÿ¾PS0 c2™…E…²”_i®  Ùl6‹·MµÃ0 aŸŠ?ÉR~±/è0Qj‰D¢P(ò)¿ÒqÒWuð;Sø¨ýÅŽ+ ¶‘ “»à;®€”&;¨Y ÷üJÇ`–üGä~žà»ã É©©“§‡~[F¥Z4jÔ§WÏa!ƒô6E©TºfÝúsÿ^ŠD·nÞÀsŽû÷Ü‹—/ñ' 4øÑ°IHíõ Óÿ˜u/=}ØIãÆÖqã¿8©ªsKEs8„@ LKO_·q“H$;jäó(3óÀá#Çut°GÙÛÚnÙ°NŸÃ©fè*Ó‹Š‹Ó32´X¬k×oÀ\¨êŽ+à\œe_ú;wêˆ:xäÈÎ***Búõ524Dq8Oj†­îz…k×oÉäi“'­X³öé³gv¶¶ÿec¿ùïƒhÓºuqq ÇONMuruÏ|òdä¸ñ!#FáK÷ìÛÔ³—K{¯>ƒ/ÅÅ˶ÂÏeøuuruGáÛ~,(PÈüøÉS=úösóô8dØ›‰U„®æ¸Büµkîn]X,Ö•ë7dé·îÜñèèóôÙ³‰Ó¦ž0Iá%BH nÙÛðNþA={Ï Ÿ›ýò¥lÂOŸ¦„†u 2rtƃ‡²l=Ö{À NAsæEÜÏxàÑѧ¨¸_túì?‡ íä8|̸Ää•aÔM·#‘HòÿW³êû Þ½Ïd2Y,&þraÌRvîíÜBû^¿ióÐÁÁŽö×n†GDr8ìvnn¡©“&nÚºmyÌb==]u99~bÕÚ¿F Ò²E‹„ÄİÙs6¬]ãíÙ^m誮WÈËÏœùdÉÂh&“ééáqõÚõé“'ÉX¶rµ»›«›«‹T*•I"‘bwí>yêôˆaCm¬­KKK9úÇœðó§NâF-\ìéÑ®g·®ÛvîŠZ´èü©“¡3çÎoܺmPÿ~Žö7“’ç/^Œ¾þðÉÓgÖmÜ4$xPófÍ’RRæFF­^¾¬};w…0à MõœÂG•йBee%ÇG …‚ôŒŒÝ{ÿöëì#Û¬O¯žƒ D‰D¢{ö† 8+,!èï_XT»s7>W°³m‰ruqÆÏA(‹Å[cwL™0~ôÈ¡?_¡P´mÇN¢¹Â÷Ó\üÕkÚÚÚ^žíB~;]¹víá£ÇN­e+ôìÞm@¿¾¡[wîÈ¿D *S&NØ¿þ’ÍÖ ˆ*))Å_¶oç>bè„D"]¼lyYY™ŽŽÎ®={û÷í:m*BÈ×ÇgZØÌÂÂ"¼:;vï?zÔð¡CB¾>„BÑÎ={Û·sW¨çH¨ª¹BÏ~ä_z¸»Íþ#LöÒÝÍò>/¯´´40À_¶(ÈßõºõÆñòÕ«ÒÒRW|^‚òòôX´d™T*UwÏ…ÊßmŒ¿zÕ»}{©DÊçW¶mÝšÅb]½~½µS+Ù ®.Îò›È¿œ33 !„aXqqñ›Ü·/Ç#„dW~zµ÷À×444@I¤Òü?øùÊrðõét7-D"½~󦬬ÌÅٙϯĵ÷p_¶rµlr£Po‘H¤*®mükÕ }Ž>BˆDB¦¦¦ 77jkkãOðïÓúú²E†††|>¿¢¢BGG§Ê8ÊÊÊBCGVHçñxê6Wþ¬}•“óâå«/_]Šÿv©ÄÕë7¦O“M8d+¿LÏÈØ»ÿÀ£Çõôô[Zj±Xòk²Ùl…â>~R¨²|uFO˜¨\•aõVÕç ìíì4ùñ##C„PqI‰E£FxJQq1ƒÁÐd¢€jÐÀ!´lñ"Sùt&“Iº|â¯^c0ë׬¢¿ü—‹mÚºí~Æç¶²õå7”½,.) 9;(0 &z[O!”zûöõ„›òë+lhh`€*)-•U¹´¬_„WgÑü(…êÈþÙü' ¿Šªç 273cëé]Ž‹wrürqÀ¥¸8{;MïW473ã°ÙŸ+>wmˆ§9~âõë×mZ;i:B(îÊÕöíÚµmÝZ–ÒÌÆ&v×îø«W]œÛð&7W † ˆOB÷3hR司+­ð”«_o»035eëéUp+d—J?uúÍ›7òWN¿Ššù4mÔˆáë7m&S(­ì¯^¿q/-}Ç–Íšo>nÌè•kþúø±ÀÞÎöYÖó]{ÿž?ïOâ­ä¿g>yòîýû‰ãÆÊÏ!´µµÜ\]®ßL Ÿ5“ø¸‚U“&,kÅšµúö‘H¤)·nÝKKGÝÏÈÀ(oH§ÓG±nã& …ÒÊÑáfRÊÛ·ïBd2™N§5ríúŸìl[f=ÏÞ»ÿÀ¼9³•RõœÂ…ƒÕúßQ#‡ ‹Å'OŸ9|ôXcKË•K—¸º8k¾ùÐÁÁb±øèñûndn97¼wÏë+Üq9þ N÷Rºo§cǤä”;÷î—ÎápÖ¬X¶i˶蘥6»{×.ÿÞ3jÜ„7»wí¢n«ÁTVV;qò̹óþ~Ç™¿(†F¥â‹Äbññ“§=fnf6wÖ̞ݻU§y€:#wm#©¨¨!w-.¸p]ÇU…¤”¤6NmètzÆðôY–©© çëeÇOZ»~cÊkpÌÀoC"‘¤ÜJ)(,è€~±ÿ3‰êþóøÏ¨ùï? {™œ’Ú²Es˜(øUëÄLÝÿƒø/õéÕsûÎ]zzz–©·o'¥¤FGEÀ\Àï¤&¯WøÕ‡äáCB$Éé³ÿ|*,lØ Áô)“{tíZ×A5ìÇþDýQŽ+P(”±£FþèÝ~! µ¿Òõ õàrà÷Wc¿ÅTW¡×‡3Àÿ_ê¸þs¿Òq2™ŒaWj•@(`в—¿Ò\Á@ßàeÎËÍZ0Œêç~ò—éBþÿ}þ ¶ýPþhw×öúµª^óûÁ0ìÅ«¦¦¦ïòßá)¿Ò\¡i“¦9¯sî¦Ý‰DuËÿ©º=¨SýÒ«™Ó’©í¦¨Ùüë¶ßÿŸ‡âèý`Küðï·ùd^ÛÁ×9}«¦VwÓïâ/¥¹™L¶¶²¶¶²®ë@€ÿ#pm#ˆÀ\D`®"0W˜+€Ì@æ s©õ¹ÂøÉS\Ý×oÞRÍ|’SS\Ý?üG S§ðÊi¸~îÛw[cwðxüÿ ªŸî… kªCåó‘J¥«ÖþÕÁ׿]‡NµÚÕôßôÔÅßmäò¹wÒ“^¼~.•J‘É›&Í[{n¼Z˜ð´xÉ+W+qî…EEwÓÒ´µ´ââ¯Ì˜2¹®+ûÛzûîí¶;ô뫥ŪëX4 ÒÞÖvˆuúN5³•ÏçQfæÃG&Žëè`_×Õý¦€zNq®–q«²²²­m; …¢°H"‘¼/̹éNG‡F&¶éÂ󿧺ç…L&ÿ1cúâeËgf:Ø×ëwpð_âp8ž5›OEEBh@¿¾F††u]?ø}(žƒx—ÿ¦‘I33sSS3…‡ž¡ÉŽ4½ÎöúR ƒL¡1HUÿ§‹qq^í=ztëÊb±.Å_‘¥ãÇ_¼|9bÌ8WOï}û¿p±ÊE¡“§Ï8{xâ ¸!C,ŽQ.úè‰Ýûôsóôî?8är|¼,}ϾýA={¹´÷ê30øR\¼|¡¹oߎ™0ÉÍÓ»ÏÀA÷ÒÓ>z/ïá£Çݺta0¼¼ââ¯(üÑIÓf8:ØÇDÏ·±¶‰X}çî½*uìà-‘HRnÝÂ_æ¾}÷<ûE ŸŸBÑGŽŸX¶ru§ÞK/²·µ ˆº{/ !´ÿÐáõ›6ûùø,Y¸ Eófá‘·îÜ‘m:kNo¯‘óø••ÌŸ>·{— èÈy¡ bA´æëlÚºíàá#½zt_±tÉŒ)“ß¾{?eF˜¬”9ó"=ÜÝDüÉåqçDDâ‰8¸5v‡o§N‹Dikk­\óžÎår'L™Æ¯äG„‡G„ÏùôéÓÌð¹ÊM=uÒD„Ðò˜Å[6¬ÃSˆkZeæGŽŸX¾z¿¯oÌÂèf6Öa³ç$&§(´°ºÔ5¾r2ÄѪl1•ЍrÈ-ŒYêäè8}Ê$uµû¹æR|•q@ýRTTTTTtøøa Ã0 ;õï¡ÜÜÜ’ÒÒ{µþóÆù»¯KËJŸ¼þà¿àò¾/"= ^Ÿb7aÿÅ»9XUvîÙÛ¾SçJð+×®µrqK¿Ÿ/JJIiåâ¶tÅJü¥T*6j̘‰“áé>~:jô¼ù ð¥»öþÝÁ×_,Ë—+‹;ú.[¹J–2bÔüE‹…Ba¿€«×ÈÒÇLœ4jÜY¡§ÎœÅÓÏœ;×ÊÅíì¹óò/Ï_¼Xå:%¥¥†-Y¾òàá#²R®^¿ÞÊÅ­¨¨/eÇî=xúÙsç[¹¸•””ïÎ~ c–ʪIP<®@£Ñ ú«O‚siy£½Íbãsþ¹—?%6mH'›gXA™àÖŒ:¹4©rrñòåŽ^^±„Çã;·iÃb±äÏ „ºâOH$R·®A3Ÿh²¨S‡IÉ)R©!tõúÎ>.­xñêUIIIP€¿,%vóÆ™3f¼ÏË+-- ”Kò÷òì™ì¥«‹3þ?Û­ðR,k¸Î¼ðÙ!Áƒ0 +,,¼—–~þÂ%„“âkz{¶ÇŸ „ÄÉ»÷yeåå=ºuýVå  ü¹¥…%‹ÅZ¶juBb"—˵·µ]1F£·|•5%Îüå«W¥¥¥®..<xyz<ËÊ’J¾TAí R©ºÆ¯N´Ê-VåØS‡`\¹»¹×®‘¹ùO4W uEñÚFN§3**ù$IerŽ ¯‡erfîÛ'%<Á•›·§uncYe¾/_½Ê~ñ2ûÅË/]’%Æ_½6gædò— Š¡l‘±‘1ŸÏ—]ˆ@°È§c‡ ›·<|ôÈÔÔ4óÉüp®¼²Ò2„¡ÜÕmÚÚÚ¡çÙÙ!}}Yº¡¡¡|Î ŸÁ*?’5Yç^zúÎ={<|Èf³›4n¬­¥%¿”£tåqI1BÈÈè[ÀFFFøý]Û¶lß¹{ÖÜyb±ØÝÍuvX¨µ•qã©«©ŽŽŽ,Q]æeeå¡¡£F+dËãó¾´°ºxz¬±¥åÊ¥K\•NaT‡ÃY¿fÕú›#£és8=»w;vèÀБ£¯ÝHèÙ½›º­FZYYyòÌÙÓgÿqss]±$fÔø !--ÖºÕ«Ö¬_½Åbº»ºþ1cºòæŽöö.mÛ.]¹J[K+áJœ†5%È|èà`±X|ôø‰ý‡727œÞ»gù.P¹qã+)_ýÚîÁ“§®v?Ý\UöÔg$üÔxܵ¸àþÁ!±XôñS~iy öýo! „H$GO¿¡±)•ªÑiÉ©©“§‡Æý{®aƒš/’70d¨££CÔŸsÐp\9râH@ç¤|\J¥™›Zš›V}§Cz“››•=+,´®~¿ÞåW¹zýz#ssg8Ñ Ôº_o®ð÷þt:}éâ…²ßi@íQ¼^É]¯_Í@æ s¹ˆÀ\D`®"0W˜+€Ì@æ s¹ˆÔÖ\A(8|d@ÈŽ|ƒÆL˜t3)I“ “SS\Ý?(?©~T¹oßmÝÁãñk©Ö5K“Š×yê<µMñRsùÜ;éI/^?—J% ‹ÈdŠM“æÎ­=7^-LxZ¼d€•«G]¾sæEܹ{/$xmË\.ïfRÒ´°™sf† ®â¿YÚÛÚnÙ°NŸÃAµàí»·ÛvìЯ¯–«öÛ¶º4iŠ:¯Q ¶)ÎÒ2nUVV¶µmG¡PI$’÷…ù#7ÝéèЈÃÄ6]xþ÷T7•™æ¼~}=áæÚ•Ë}}|ð”žÝ»-X»swÈ A$‰ ‡ãéáQ×ÍR/@S¨ÏA¼ËÓȤ‰™™¹©©™ÂCÏÐdGš^g{})…A¦Ð$‘ºL‹KJB--åöëëÓ©£@ @_®¿xùrĘq®žÞ=úö;á"¾š†gd«4ÙÍ«C¿àôû²¥{öíêÙË¥½WŸÁ—ââeé“§‡"„|ƒº:¹ºËŸ<Õ£o?7OïC†Ý¸™ˆ'fegOžêíëçÕÙoÊŒ°7¹¹*ÃP.(lvøÀ!Ãd+`æßµû¢%ËÔ„W$óÉ“‘ãÆ‡Œ¥²Ž•UY#uÕ×°õ”ã¼—–ÞÚ­Ýí»wñ®\»îìáù<û…ºäKÉ}ûvÌ„InžÞ}º—žþðÑãAC‡»zz÷ê?0õÖmâ^@ „Âõ›6wëÝ×ÍÓ»£àÔа¬ìlu}¤0xð—…EE*Y]‰(Î(*‹©E§Ó©ß+ Ðƒ/ú¸š¾)<Éãeegõ³Q—i‹fÍØzzs#£®Ý¸QYY‰'ÚÛÙEGF0™LÙj“¦Ípt°‰žocm± úÎÝ{?ýœy‘îî "þäò¸s""ñÄý‡¯ß´ÙÏÇgÉÂ-š7 ˆ¼uç¾h꤉¡å1‹·lX‡§9~bùê5þ¾¾1 £›ÙX‡Íž“˜œÂår'L™Æ¯äG„‡G„ÏùôéÓÌð¹Ê¥«,Èß·sÖóçù>àë4 ¬‘Õõ»¬;ÈS<®@£Ñ ú«O‚siy£½Íbãsþ¹—?%6mH'›gXA™àÖŒ:¹4!Î×ÞÎnÿî]W.ü½ e‹7“¦ÌëÑ·¿ì2B¨KP þ„D"uëô8óÉF/{s744@‰%’÷yy¥¥¥þ²u‚üýŸ<{¦ró—¯^•––ºº¸ðx|üáåéñ,+«‘¹9‹ÅZ¶juBb"—˵·µ]1O~¢€RW¶––‡»û„›xâÕë7º¾ÊÉQYT*ÅWswsý‰Ê*¯óCÕWÎP]ƒH¥R¶žÞì°°]{ÿ>zâdtT$N×°\]œñ'ødBá¥X,&(!4/|vHð à 便Ÿ¿p !$Ť––ªúˆJ‰¬‘‰K @ñ½•F£Ó錊J>IR™œ#èëa™œ™;ÂßöÉGIOpåæíiAFÛXj˜»±±Q—À€.¡§Ï²æÍŸ?7"òô±£øRCƒokóùüŠŠŠŠž£t@aaBÈ@__–bhhˆç¬£££°rYY9Bhè¨Ñ éL&s×¶-Ûwîž5wžX,vwsŠÕ¤ ßÎÑ1K***Þçå½{ÿ¾{— ¢¢b•ñx<ü‰¶¶öOTVÙU_9Cu ÂãñtttýýV®ýKŸÃnåà y)̱^VYè½ôô{ö>xøÍf7iÜX[K _j` ¯ÜGđș¸DÍ«ÿ'”æ T:ƒÁh×BW›Ti¬MºòŒçck‘‘' ø—¯ßÞ33@ü9«ÊLïg<=aâñCl¬­e‰¶-[L;6<"’ûõ²¨¸Ø¢Q£/Ï‹Š †&™ÄŒŒ BÅ%%ßr..f0*?40F-[¼ÈÔÄD>ÉdÚÛÙmX»Z ¤g<غ=vÊŒ°KçÎjXP§Þ$))%õeNN‹fͬ­¬ð3/* ªÙîü¡êÿPƒ „þ>pB&¿ŸwæŸsøi…APhQqñäi3ºuí²bI [O!”œšzåÚu|å>Šš÷Ý% ¥¥¥?QM ÏAÐi4F§QÌô¹p5Y—ŽþyÄð*.߸}4ªg{ûFt¥ï…Êš7³¡Q©ÇNœRHôø±±±±ì«¡ì} Ãþ½tɶeKâÛ)5anfÆÖÓ»,wñÿ¥¸8{;[u+sØìÏŸÛ´vÂYÙÙ—ãã_¼|éßµ;—Ëe0înCÊÿðÏçkX®®®»«ëõ„„+W¯uëÚ…  *•è˜ymW_ó¡R©¹oßn‹Ý>kæ¨ÃÿÚ°±¤¤¤cVWèë7oBá°ÁøD!”–~ò,+K¹!BH›ºËÿ³î€ßƒâ›#ƒÁÄ0)Bȱ©ñ‘Èžýµ01~ZT|:º·cSc‘HÈ`TýÝK[[{ʤ‰k×oøðñcçN Ê+>§¤ÞºpéòÒE e«>û•Ju´·»õ~ÆuÒÿ6jÄðõ›6“)”VöW¯ß¸—–¾cËf|)þýþfb’¥¥…KÛ¶4mܘÑ+×üõñc½í³¬ç»öþ=ÞŸ––B¡0<2ªw\î®={œY,–æùûv^²b¥X,ÆÏ¿¨+¨úõU®ATš´žÊ81 ‹^¼ÄÙ¹m€Ÿ¯@è}þÂÅ5ë7ÄD/PàçºL]ãX7mÊb±–¬X9¨?‰Dš”’r÷^B(-=ÝÛÓK¹ìíl)ʲ•«‡ Îxð ëùó-€2Ź‚±‘I~AžYÃFT*Õµ¹ÉÙ…}Φ¼îïÛÔ„-‹ó òŒL4ÉwÄÐ!Íml=úׯMŸ?ÖÓÓkåà°mÓw×oñ­^¾lçž½GŽoØ Á¢Q5õ»C#‡ ‹Å'OŸ9|ôXcKË•K—È®§s´·wiÛvéÊUÚZZ WâBC‹Åâ£ÇOì?t¸‘¹yäÜðÞ={ „Ö­^µfýúÈè…,ÓÝÕõÓ¨ ŸN-]æâܶ±1ž¢® jR®ATšPç±'gfž~Ê/-/Á0LqU‰£§ßÐØ”J­ú4±äÔÔÉÓCãþ=×°Aƒºn¨päÄ‘€ÎHù¸•J37µ47ÕôNüÞàR€Ì@¤nnóôðxp÷võó@mƒã s¹ˆÀ\D`®"0W˜+€Ì@æ s¹ˆÀ\Dj}®0~òT'W÷õ›·È'&§¦:¹º,(=©ñroß½;ýYý]Ú{të½ðå«WUnE†Ñ …‡ âѱ“O`И “n&%ivîÛw[cwðx|u)µ×bò¤R骵uðõoסÓV°F"Tn‡ÿrsòÿÏ$—Ͻ“žôâõs©T¢°ˆL¦Ø4iîÜÚsãÕ„§ÅKX¹Zqˆs/,*º›–¦­¥eÆ”ÉÿY­6oÛ»k·§‡GèÔ)úúúùùùÿüûï ¡Ãc¢ølhok»eÃ:}GÓ’T™3/âÎÝ{!Áƒl[¶àry7“’¦…Íœ33lHpp•Û¾}÷vÛŽúõÕÒb©L©‘«ô(3óÀá#Çut°¯Ù jH¹þËÍÈSœ+¤eܪ¬¬lkÛŽB¡(,’H$ï óGnºÓÑ¡‡‰mºðüï©nĹÇÅ_!“É̘¾xÙòÇ™™öö¨öÅ]¹»k÷Ÿsfè/K4 ÿ’å+¢.²¶²jfc­n[‡ãéáQÒs^¿¾žpsíÊå¾>>xJÏîÝ,Ž‰Ý¹;dÐ ‰TÍÚU?BMTTT „ôëkdhøW@}£xâ]þ›F&MÌÌÌMMÍz†&;Òô:ÛëK) 2…Æ ‰ªÌýb\œW{ݺ²X¬KñWª\ϾýA={¹´÷ê30øR\½¸¤!ÔØÒR>q`¿¾>: YÊñ“§zôíçæé=pȰ7eé“§‡"„|ƒº:¹º«LQ>}3vÒd7¯ý‚CÒïgÈòÙðP`÷žn^fÌœu/-¯& ®.Œ­`^^þèñÝ<½û|/=¸D¼.™OžŒ7>dÄ(u(t‡ºNT¹yVvöäé¡Þ¾~^ý¦Ì{“›[åh€Sœ+P(TS‹N§S¿W.@¡_ôq5}S$x’ÇËÊÎëgCœõû¼¼‡wëÒ…Á`tðòŠ‹¿‚aÁúû^¿i³ŸÏ’… Z4oyëÎvîné÷3ð 3<@ÝÏx€¯Ÿž‘ah`мY3ùLò?|x•óºwÏÊùS(”žÝ»%§ÞÒ°iŽ?±låêN¼—.^doku÷^¾H"‘Ìœûgþ‡±›7qØlù­Z4kÆÖÓ›uíÆÊÊJ<ÑÞÎ.:2‚ÉdÊr^¾z¿¯oÌÂèf6Öa³ç$&§à‹¦NšˆZ³xˆuêRäÍ™éáî¾ âO.;'"Oe’ʺC™Âæ\.w”iüJ~DxxDøœOŸ>Í Ÿ«á0 x‚N£1èL …}æmBVQLß&^Í9y%•3ö<æcý¼@ô® {ø$mÍX/· ‰³¾¯££Ó±ƒ7B(Ðß÷r||ƃ‡mZ;©\Y$íܳ7dÐÀYa¡¡@ÿ¢¢Ø»§O™´mÇΗ¯^ÙX[g<|äæêrçî½OŸ Òïg´ssS8è—ŸjÚ¤‰ÊR¬š6ùüù3—Ë­²]$ɶ;ƒôÇãñëìóâUÎù‹—B†EF/|úôÙž±ÆÆF êèèlݸ~ùê5a³Ã©TªmËmZ·vwuñpwÇOëˆÅâ­±;¦L?zä„P€Ÿ¯P(Ú¶c§·g{„mK„«‹³ìà¿rŠÉGàç«yƒkR(q30ÐÿX%º»¹þDwhÂÒÂ’Åb-[µ:!1‘ËåÚÛÚ.ˆ˜ÐâqN§3**ù$IerŽ ¯‡erfîÛ'%<Á•›·§uncYe¾/_½Ê~ñ2ûÅË/}ûòõÚœ™É*nÔ,,,BèëËR ù|>ŸÏwsqNKOoçæZVVæÒ¶M+G‡ôŒb±Xy®`fjŠÊyýÚÒÂB¹”W99l==m-­*ã/+-Ãc¥hkkëéé"„>z4~ì˜Ø»nݹ#ûN¬ÌØØ¨K`@—À„ÐÓgYóæÏŸyúØÑ²²r„ÐÐQ£Öçñx:::?Ú¥" > „ ä[R󯨨Ð0 uTA‰²þ‰îЄþ®m[¶ïÜ=kî<±Xìîæ:;,?Æ JJǨtƒÑ®EmR¥±6éÊ3ž›­EFž¸‚Ç»|=eÏÌ€ÖMô4É÷âå8ƒ±kûÖ½;bñGè´©…EE÷ÒÒU®oddˆ¾^7‡+*.f0:::íÜÝÓÒïg<|dÕ´©ŽŽŽs›6÷3¤ßÏhfc­|„ÜÔÄĪiÓ3ÿœ“OÌÊÎÎ~ñR"‘œû÷‚ÊC¥¥¥ )øÉ…’’oé¹oß=zœ‰Z³rùäñãìíW®ùK"Q¼³ô~ƃ6î/^¾”O´mÙbÂØ±¯r^sy¼ ŒBË/’µ þ?Ù_ø,¡¨¸X–R\R¬¼Aƒç_eÕmøÓ%w‡Œr'ʳ·³Û°vuÒµ+[6¬çqySf„ÕHkÀÿŹF£ÑhtåÀLŸ W“uéèŸG<¯âòÛG£z¶·oD×ìÈí¥¸x¯öí]Ú¶mÓÚ  êߟN§«; anfÆÖÓ»,w)þ¥¸8{;[„PûvîEÅÅgþù§S+„PÛ6­Ÿgg'%§x¸«>1yÂøk7Žž8!K¹~#aè¨ÑÓÿ˜õîýû‘Æ!„Èd B¨äëç–ìÒB™Fææl=½¸+ßî݈^³ïÀA„©‰ ‰Dš;k櫜œ£ÇO(lؼ™ J=vâ”Bú£Çµµ´ÌÍÌ8löçŠÏ²–ÉÊξO¥*ãù9ÌÍ9lö¥Ëq²”ø«×~¨Á‰UYAuþt‰êºãÀá#ˆ°ežeeùwíÎår †‡»ÛÁƒò?|àóá—š@#ŠŸO ä!ǦÆG"{ö_tÖÂÄøiQñéèÞŽME"!ƒQõ×ßÇ™™oß½›2q‚|¢–«»Û•ë7æ…ÏQÞ„F£1|ý¦Íd ¥•ƒýÕë7î¥¥ïØ²!diaajjr?ãAß^½BNŽŽd2ùÁ£G“&ŒWYº¿oç‰ãÆ.]±*1)ÙÏ×—Ãfkkk³X¬¤”GûæÍlBVM›P(”e+Wœñàò—4m쨑mÜ„H¤Ö­Z¥Þº•ž‘1|HÈßâ+8:Ø÷èÖuK쎮AòÇÛµµµ§Lš¸vý†?vîÔÑÐÀ ¼âsJê­ —./]´ÏyܘÑ+×üõñc½í³¬ç»öþ=ÞŸøæøå7“,--\Ú¶U™BŒF£=jͺõ Å©•ã›I¹¹oB 48±*+H˜æ%*ÔZew,š³De'*lnia) Ã#£z÷èQÁåîÚ³ÇÉёłŸi(ÎŒLò òÌ6¢R©®ÍMÎ.ìs6åÅpߦ&l±Xœ_gldRe¦/ÇÑéôÞ^ é¾>>7“äo““7rØP±X|òô™ÃG5¶´\¹t‰«‹3¾ÈÃÝýÔ™³­Z!„˜L¦mˬçÙmÛ´VÀ¤ñã\Ú¶=pøðº›***ŒŒ¼Ú{tôö^³~ýœykV,oØ AtdÄ–í±‘Ñ ==<¢£"‡«É°!!b‰äØÉ“ÇŽŸhÜØråÒ%ÚÚZ²¹BhÆÔ)W¯]߸ekÔ×Oz܈¡CšÛØþ¬§§×ÊÁaÛ¦ î®_®Ý:8X,=~bÿ¡ÃÌÍ#ç†Ënòt´·wiÛvéÊUÚZZ WâT¦TièààÊÊÊ#ÇŽŸ DÐàά :š—¨\kåîÀ¯ÙTÙ‰ ›ki±Ö­^µfýúÈè…,ÓÝÕõ¯‹@***BÅ]‹ E?å—–—(ÿ‰Dâèé746¥RÕ È‹‹K^¾z¥á'â¯ëÉÓgff¦²~8zâεëî&'Â*ÐÜ‘G: åã T*ÍÜÔÒÜ´ê;~Eú¿ùD!4g^DçNe_“’m[¶€‰€ŸS3×Óz¥oï^[cwèéé5¶´L¹u+19eÑ‚¨º À¯ æ ¿¡‘ÆJ$’SgÎ|údÒ°aè´©½ºw¯ë üª`®ð"“ÉãF7zT]àw@®~øÁ\D`®"0W˜+€Ì@æ s¹ˆÀ\D`®"0W‘Úš+…‡ âѱ“O`И “n&%ɯûöÝÖØ<_åæÉ©©N®î Š Î8Mò¯qµ½9ðßPü?“\>÷NzÒ‹×Ï¥R‰Â"2™bÓ¤¹[[/m–v•ùΙqçî½àA¶-[p¹¼›IIÓÂfΙ6$8_áí»·ÛvìЯ¯–Kys{[Û-Öés8EçPeÕG@moü7ç i·*++ÛÚ¶£P( ‹$IAI^ZÆ­¾Ä™æ¼~}=áæÚ•Ë}}|ð”žÝ»-X»swÈ A$©Ê°8ާ‡ÇOתú§xâ]þ›F&MÌÌÌMMÍffæLš¼ËSe¦Å%%¡Æ––ò‰ûõõéÔQ à/'OEùuuruG_O d>y2rÜø£Î=q¢{Ÿ~nžÞý‡\ŽW™Ã€ÊËË=~¢›§wßAƒï¥§ËÒ÷ìÛÔ³—K{¯>ƒ/Å})N!Bu(„ªPüeaQ‘Êͳ²³'Oõöõóêì7eFØ›ÜÜ:Nq®@¡PYL-:NUB§ÓYL- …Ze¦-š5cëéÍŒºvãFee%žhogÁd2ñ—S'MD-Y¼eÃ:Ù† c–:9:NŸ2I>·#ÇO,[¹ºS屢ÙÛÚ†GDݽ—¦.Í@Í›¿À³½Çüˆy<>/<" OÜèðúM›ý||–,\Тy³ðˆÈ[wP9u¡ª¤°9—Ë0e¿’>çÓ§O3ÃçÖɘä)~ðÓi4I¥ÒT®Í 3é4Z•™êèèlݸ~ùê5a³Ã©TªmËmZ·vwuñpw—Ú°³m‰ruq624”mاWÏÁƒ"„’SSñ‰D²mÇÎàýg……"„ü:û¼x•sþâEWg•9hB¨_ŸÞcFŽ@a½°´´T[[{çž½!ƒâÅúûÅîÜÝÎÍM!Bå*¨ õ’ºVRØ<ûÅ‹’’’]Û¶X[Y!„,--Nœ:-‰h48P{ç 4Á Ó¨ª0t®I¾övvûwïúô©ð^zzÚýû7“ö8hnfö×ê•-š5S·•»›«BÊ‹W¯JJJ‚üe)±›7J$Ò ÀÛ³=þÄÀ@!$–HÞçå•––Êäï¿zÝz‚‰C½™”<72J“³´°d±XËV­2Ø¥m[{[[û[M6j•â9N§3¨TšÊÎÐp®€366ê97üì‰cGöïc0ès#" Ö×ÖV¼Ã¢¬´ !d(wä@[[[OO·Fà(ÝgQXX„2Ð×—¥òùüŠŠ uÖT¨ú»¶mÑbiÍš;Ï«³ßÄiÓ_¾z¥ySµDi®@¥3 ª ƒF­z®p?ãAw/_Ê'Ú¶l1aìØW9¯¹<žæñ!„JJJe)¹oß=zœYK¢¯—F⊊‹ †ŽŽN„ZZZJƒ½Ý†µ«“®]Ù²a=Ë›2#Ló†j‰â\N£Ñh4²4M“ëš7³¡Q©ÇNœRHôø±±±±¶––æñ527gëéÅ]¹"K‰^³ïàÁZ ÀÜÌŒ­§wù뽡Kqqöv PêÃGB%_'‰É)ê6–•åßµ;—Ëe0înCÊÿðχ_jPǯK`0˜¦öj “2LTmmí)“&®]¿áÃÇ;u440(¯øœ’zëÂ¥ËK-Ä×Á¯1¼™˜diiáÒ¶­º¬h4ÚØQ#ÿÚ¸ ‘H­[µJ½u+=#cûæÄ9h€ºâF¾~Óf2…ÒÊÁþêõ÷ÒÒwlÙ¬re…T†ºh~TtÌ’e+WœñàAÖóçê6·´° …á‘Q½{ô¨àrwíÙãäèÈbÁÏ4¨cŠsc#“ü‚<³†¨J—7ŠÅâü‚ñR\\­ÖçR\|× ÀŽÞÞÕÌÇÞÖvˆuúÎOlûöÝÛm;vè×WK‹UͬjÕ¦­Û>2ÞŸ=ºu­ëXÔ_Šs…´Œ[•••mmÛQ(…E‰¤ $/-ãV_M²nÙ¢ÅÅËq s…ËñWZ¶hñ,+«–êccm³l…s›6:::ÕɇÃáxzxÔHH5˜U Úµ÷ï»÷Ì ŸÝ·w¯ºŽ@½¦xâ]þ›F&MÌÌÌMMÍffæLš¼Ë£aÖ]n&&qyuë$ÛêÄé3kÖoðëì=_KKknÔ|‚ÜðES'MD-Y¼eÃ:…ö:¼~Óf?Ÿ% ´hÞ,<"òÖ;²¥šÔzμyvv1Ñó[4o¾hɲ„ÄÄŽÞÞ‰$åÖ-|…Ü·ïžg¿ôóS×D'ÏœY¹æ¯©“& ,KTÙjröEMš6ÃÑÁ>&z¾µMÄ‚hùÖ^³ÔÉÑqú”Iê²år¹¦LãWò#ÂÃ#Âç|úôifø\•‰š÷;€Ú£øÁO§Ñt&•JS¹6ƒÎ¤ÓhUçŠBˆÅbuêà}áòeÙéðKqñ=ºvÁŸ‹Åâ­±;¦L?zä„P€Ÿ¯P(Ú¶cçä ãBÞžíÇŒ’H¤Q •––j^¥A/ÇÇ/\²ôä‘CL&S–.¨„N›<Éá°Ãf‡;:ØÓéô7€ºríš©‰IÛÖ­ñH‰D²}ÇÎàfÿ† ðó?yê§OŸÔåV\\b` ogÛ!äêâldh(˜H$Ú¹goÈ ³ÂBBþþ…EE±;w·ssÃWP®5Gé*‡®øæ~~#ƌ۱{Ï=»ì“üüð*pØlw7W•óï…‹›¶m'“Éb±X–¨®/îUóÃG:wê(FìîÝn®.xn}zõ/ïÝû÷Ý»|;ññSBÈÐÀ@–bøõPºÜ!„ ôõåsãóù² 4©µ|0ÆFÆ¡Ëåútì°a󖇙ššf>y‚ŸQ)|ÖÌÞ=º „›‰I‘Ñ ìÿ›F£©í O9gü…0äk¡­ýå6uÙ2™Ì]Û¶lß¹{ÖÜyb±ØÝÍuvX¨µ••ÊÄê 5Bi®@¥3 *UõE ƒFý¹Fóëìsñr\ð€þ—¯\ú»àÎÜÌŒÃf®øÜ¦µþÈÊξ¯ršB!SBø¹ „ìHT*5:*òõ›7;÷ìA½yóF  Œ´#„ÒÒïãOtuuÝ]]¯'$\¹z­Û×Ë)pÌÍ9lö¥Ëß~"þê5âܘ›™±õô.½÷!t).ÎÞÎö‡ÚSvë†açþ½àäèˆ¿ìØ¡CBbÒ•k×};©=!ÏÉÑqXÈà½ûö?ÎÌ$î •9ˇñï¥K¶-[ÊNÜTÙÅ/^¾ôïÚËå2 w·!ƒåøp?ãr"ŸÏÿ¡ÆP?˜ &¦þ¤;†I &ú®ÎΆKW¬tjÕʤaCY:F7fôÊ5}üX`ogû,ëù®½ÏŸ÷§ÊLš6mB¡P–­\=dppƃYÏŸkR´½­íð!!{÷@Y5mÊb±–¬X9¨?‰Dš”Zˆ¦_çIDAT”’r÷^B(-==Ðßßß·ó’+Åb±üýœxcGZ³n=…BqjåxãfRnî[„~r]]nøêÍÄ$KK —¶mås5bøúM›ÉJ+û«×oÜKKß±e³æI"‘ðpG{»Kqñ?Þ½}¾È§c‡ý‘ÉäñcGk˜Û”I“"£=¸Ÿ /Tæ|úì?x—ã¯ÞÏx |ÇA[ZX …ÂðȨÞ=zTp¹»öìqrtlѼ¹r"‹Åú¡Á 6(W062É/È“¿H^F,çä™h”±¬29À߯¬¼\þ AÜÐÁÁÓ&Oºx9nnäü+×®GÎ ïݳ‡ÊL6hñ±  2zaþ‡ÑQšÞE9yÂxK „‡ÃY¿fŸÇŒ^´nã&3SÓc‡X4jtíFBȧSG‰Dââܶ±±rS&N¸?Q ƒAŸ2q~Ê/-/Á0LqU‰£§ßÐØTÝ•¿¥'OŸ™™™rØlüåÑ'V­]w79Qù{2ÔÑÑ!êÏšÿYùœ“SS'Oû÷\Ã êºÆjÑ‘G: åsT*ÍÜÔÒÜÔ²®#¬/æÌ‹èÜ©ã3¦ã/“’m[¶¨‡…7¹¹YÙÙøoü*9ø%hú#Œÿ·úöîµ5v‡žž^cKË”[·“S-ˆªë 8|äêõëÌÍ]œÛV?·ÿ&g¿ ˜+Taä°¡‰äÔ™³Ÿ>™4l:mj¯îÝë:(Eï?@§Ó—.^H&×ð?¯½œü*¯W@r×+À—E¹ˆÀ\D`®"0W˜+€Ì@æ s¹ˆÀ\D`®"µ5WpruW÷¨©"rß¾Û»ƒÇã«\šœšªP®oP×yó£ ‹Šª“muà!},(¨ñœ«§¯P(Tn¼Ñªl®jÖý'ÚD(8|d@ÈŽ|ƒÆL˜t3)©:*«æ¨½!uBñRsùÜ;éI/^?—J% ‹ÈdŠM“æÎ­=7^-LxZ¼d€•«G]¾[6¬ÃŸÒ«G÷K—̘2ùí»÷Sf„ዦNšˆZ³Xv¾CYee%Ççñø\.÷YVÖ¾ýýX,A‰šd«²¡9ó"=ÜÝDüÉåqçDDªÛJ"‘Ìœûgþ‡±›7qØl•Átôö–H$)·ná›ä¾}÷<ûE ŸŸBVêÚ‡ËåN˜2_ÉŸóéÓ§™ásUÓ©ƒ7‰L¾vý†,åâå8«¦M›ÙXã/÷:¼~Óf?Ÿ% ´hÞ,<"òÖ;þ¾³ž?Ïÿð_çÑãÌ‚OŸºu "è/„Мyóììb¢ç·hÞ|Ñ’e ‰ßÍ:E¦E³fl=½¹‘Q×nܨ¬¬Äííì¢##˜L¦lµyóx¶÷˜1Çç…GDTDeW*#ÇO,[¹ºS屢ÙÛÚ†GDݽ—¦®h@ý§x‚N£1èL …}æmBVQLß&^Í9y%•3ö<æcý¼@ô® {ø$mÍX/· «SpŸ^=ˆ‹Å[cwL™0~ôÈ¡?_¡P´mÇNoÏö!A¥ tÚÔàAøV;lvxqq‰¾mKTÕÙžýÈ¿ldn>Þ<â5ÉV¹É©©!oÏöcFŽ@I$Ò¨…‹JKKñ«%äa½ðéÓg{vÄ© æàÞÝŽö ‰I~~¡+×®qØlw7W…ÜÔµOîÛÜ’’’]Û¶X[Y!„,--Nœ:-‰h4šB,«Sï —/÷èÖO¹ߣkü¹H$Ú¹goÈ ³ÂBBþþ…EE±;wo\·–N§ß¸™8xà<;$x†a………÷ÒÒÏ_¸„’bR KùkÕŠ½;bñÇÂùQ\îŠÕ«‰Kü¹Zàdl††!±D¢¼ÉŠÕk/\ºloggiш¸ú:tHJNÁ£ºzýFgŸNÊ‘¨kK K‹µlÕê„ÄD.—kok» bžòD×%0ðö»%%%¡§Ï²rß¾ úzâ}^^iii`€¿lå ÿ'Ïžikiy¸»ßH¸‰'^½~£KP ‰D"î¯.Aø‰Ô­kÐóçÙ†i2 äÙÛÙíß½ëÊ…c¢´lÑâfbÒ”a=úö—?Ù!ë}¼#ÔUD]WÊ{ñêUIIIܶ±›7Μ1ýGG ü¢+Ðht:QQÉ'I*“s}=,“3sGøÛ>ù(©à ®Ü¼=-ȨsËŸ*ë;ÚÚÚø“²²r„ÐÐQ£Vàñx:::÷ÒÓwîÙûàáC6›Ý¤qcm-­*ÅÞÎNvmc›ÖN¥¥¥›·mô÷'(ñçjS>Š ìá£GãÇŽ‰Ý¹ëÖ;íÜܪïӱÆÍ[>zdjjšùä ~d[ºö10ÐßµmËö»gÍ'‹ÝÝ\g‡…âÇ”yz´ÓÒÒº|åjð€þ—ââìl[ZZX¼}÷!TXX„2Ð×—­lhhÈçó+**ü};GÇ,©¨¨xŸ—÷îýûî]‚âù²­ì¹±‘±@(är¹š 嘺àU<}–5oþü¹‘§U×QÙ•òÊJËðõåû½Æïë€zKi®@¥3Œv-tµI•ÆÚ¤+Ïx>¶yb¡€ùúí=3ÄŸkøÚø ŒBË/251‘Og2™EÅÅ“§Íèֵˊ%1l==„Prjê•k׺¬¦M …Bü&•%V™Ciii5ë»får'GÇ”Ô[+×üuüЂê[5mjiÑ(!1ÉØÈˆÍf»¹8+dEÜ>övvÖ®é¶n2#ìÒ¹³*C¢Ñh~}.^Ž Ðÿò•+ƒ”-222D—”X4j$+”Á`èèètêàM"‘’RR_æä´hÖÌÚʪÊþ**.þ–OQ‘–K6 hù—÷3Œž0ñø¡6ÖÖ²DÛ–-&Œ)…¦‚ŠTÙeÆÆF¡’’RÙ¶¹oß=zœY³ê-ÅstF£Ñi”3}.\MÖ¥£ñ¼ŠË7nêÙÞ¾]ÍqìŸfnfÆa³?W|nÓÚ deg_ާR©¯ß¼…ÃBã<¡´ôûÕ)‹F¥!„6l ®D D¦ „ðãó!å«í~”©‰ ‰Dš;k櫜œ£ÇOT!Ô±C‡„Ĥ+×®ûvRq‚ }žeeùwíÎår †‡»ÛÁƒò?|àóÕþ:P—À€^Š‹ÿðác ÿ·+(ÍÍÌØzz—¿Þ2€ºgog‹ÒÕÕuwu½žpåêµn]»ÇóuÛ/ù`vîß NŽŽš ùš7³¡Q©ÇNœRˆÿÑãÇÆÆÆ‡*R¥Fææl=½¸+Wd)Ñ‹c>R³ê-ÅOGƒ‰aR„cSã#‘=û/:kabü´¨øttoǦÆ"‘Á¨úË÷¡ÑhãÆŒ^¹æ¯ ìílŸe=ßµ÷ïùóþDY7mÊb±–¬X9¨?‰Dš”’‚_|ž–žèïvÞLL²´´piÛV“²ð/©\.O]‰!…l­š6¡P(ËV®288ãÁƒ¬çÏk¤ÖŽö=ºuÝ»£kP A0>;ì?xˆL&;Z9‚öñöô …á‘Q½{ô¨àrwíÙãäèHð«®ÎΆKW¬tjÕʤᷫVi4Ú¨Ã×oÚL¦PZ9Ø_½~ã^ZºìǬü};/Y±R,ãçâÁïVÅ?ûíí.ÅÅ?|üx÷ömüJ~•Ã@ž¶¶ö”I×®ßðáãÇÎ:”W|NI½uáÒ奋3‚Š(P4m쨑mÜ„H¤Ö­Z¥Þº•ž‘±h~TtÌ•ã'F&ÔgŠsc#“ü‚<³†¨Tªks“³ ûœMy1Üß·© [,çä™üTAD†‹ÅGŸØèp#sóȹá½{ö@q8œõkV­ß¸92z‘>‡Ó³{·c‡ 9úÚ„@G{{—¶m—®\¥­¥•pE£ßlÜØ!”˜8vÔH•%"„²mØ AtdÄ–í±‘Ñ ==<¢£"‡[#µž1uÊÕk×7nÙ5ïOuÁ´qrâ°Ù$2ÙÍÅE9âöY·zÕšõë#£²XLwW×?¯Å#“Éþ~‡Ž•¿‚7rØP±X|òô™ÃG5¶´\¹t‰ë׳!>:.ZºÌŹmccâxzvïF"‘6¯[³|Å‘cÇÍLMW,YܶMküþâa `ÄÐ!Íml=úׯMŸ?ÖÓÓkåà°mÓwWµ'VYÊCkرDrìäÉcÇO4nl¹ré’?_„Êñ#ê3RQQB(îZ\pÿ`„X,úø)¿´¼Dvú·UI$Žž~CcS*µ†OCC†:::Dý9·úYš;râH@ç¤|\J¥™›Zš›ÖÀ úÞäæfegã·õu‚Zý,@-9pøÈÕë×™›»8Ã9ouæ õ×ßûÐéô¥‹’ɵõ¯Ã€*Á\¡þŠ¿p¾®C|a˜+€Ì@æ s¹ˆÀ\D`®"0W˜+€Ì@æ R[ÿ;ÊÉÕ]Ý¢wo×u­«–œš:yzhÜ¿ç^¼|‰?iØ AíUPV\à rß¾û÷âÅC‡ji±Õu«ø¤8Wàò¹wÒ“^¼~.•J‘É›&ÍÝÚzi³´«Ìwˆuø“'OŸmÚºmyÌb==ݺ®lMª½ ¾}÷vÛŽúõÅç ö¶¶[6¬ÓçpêºÆþO)ÎÒ2nUVV¶µmG¡PI$’‚’¼´Œ[<|«Ì×ÓÃCþ¥«‹³‘¡a]W¶&ýgäp8 eÿ%ÅëÞå¿idÒÄÌÌÜÔÔLáaffÞȤɻü7Õ,295ÕÉÕýcAüË¢"üIæ“'#Ç1J¶ÚØI“ݼ:ô I¿Ÿ¡2Ã=ûöõìåÒÞ«ÏÀàKqñ ¥o. ×oÚÜ­w_7OïŽþSCò²³k¤eUFUå"„Ðäé¡!ß ®øiYEð'/^¾1fœ«§w¾ýÎ_¸ˆo’•=yz¨·¯ŸWg¿)3ÂÞäæÖH¤eþrμHw÷ryÜ9‘Êëï?txý¦Í~>>K.hѼYxDä­;wdK«Ü|ÓÖméÕ£ûŠ¥KfL™üöÝû)3ª_ ‚¨ˆFM4!´ðEñƒŸN£1èL*•¦rmI§ÑªÎµúôê9xÐ@„Prj*BÈÛ³ý˜‘#B‰4já¢ÒÒRŽÜ™{‘H´sÏÞAg……"„ýý ‹Šbwînçæ†¯@¼9BHP)65$xþ’Ãa‡Í/..©N¢R·h̨²Ííl["õ'5:wêˆoàç7b̸ØÝ»§NœPRR²kÛk++„¥¥Å‰S§E"­–{ Àÿ Åã 4Á Ó¨T•ƒN£Ñk5 w7Wù—Þžíñ'††!±ä»+.ßçå•––øËR‚üýŸ<{¦áæ¡yá³C‚aVXXx/-ýü…K!)&­N¢ª2à*u ÄŸH¤n]ƒg>±´°d±XËV­NHLär¹ö¶¶ "æÁD@MQ<®@£Ñét†ºã t:£¶ç ÚÚßÝdÁ!¼þ¿°°!d ¯/K144äóùšlŽº—ž¾sÏÞ²Ùì&kkiU¿ QUp• dÏŒù|>NÛµmËö»gÍ'‹ÝÝ\g‡…âÇ€êS:®@¥3 ª ƒF­á¹BiiéOokddˆ*.ùvÊàíÝwXIðÙMBB“¦€ €Š€ˆ UÄ(öz*6,§žzö‚' ØýOñìØî¼³b?OÅrö.E=°‚•"Éf÷ûc5Æ”%Ô¾¿‡çždgwæÝÙœûîìl’“›Ëårõôô4Ù<'7wâä© œ>qüôñc›[ׯOïŠïCT ˜^ÿëëœ.—+œœÖý}õ¹ëbŠ…Å•2å )æ :‡ÃÁÕàp8Ÿ¯€ã,„PÞ—óå•k×Ë]••¥¥¡Á¹G NÇÇ;;9j¸ùËW¯JÄâáCB è%÷+Þ§ QU0`„ì¹ Š¢Nž>íØ¼yJjjP·B¡Ëåúz{ ôîý{‘HTñò=.—G©¿[OQ$—Ë«`“v¶Y,Öò•ÑCC'%'§¤¦–»*‡3*tDÌú 8‹Õ²…óù/Þ½—»qƒ†›ÛÛÚòùü¥ÿ[9h@©”¼zýú»÷B÷4¿Ð/STêŠÄ±lsú›-._¹jccíáî®Pù‘cÇÙl¶‹³Ó™³ç“’7®[kcm#‹Ã""ûôìY$nß¹ÓÕÅ…ÏçWð04Åq3Óï2ß¡¼*Aï2ßš™6¨`“õÍÍ£"Â?dfFD-|÷þCTdDEj9|ؤŸÆŸ;á—ÈiOŸ­\¶ÔÓ£µ†ÛŬ^%*ED-ZûÛzK ‹{þ´nØðÂÅKÜG†¨J ØÅÙÙÃÝ}ÙÊU3ç¨xô1zÅòÿ _°0%5uÑ‚H?__]]þÚèUùùùQ cÖ¯wvrŠþßò ÆÈ`999¡ø ñƒ F„äCÖ»üÂ<Š¢WÅ0#ƒzõÍ,ÔÍ|U ~@uÚ·¯s§ÎHù›Í±²°±²°Ñv„¨à7©Àr0©Úw•ÈÏ×7ùÎ-mGà»ã `¹˜@®&+€ ä `¹˜@®&+€ ä `¹˜@®&+€IUå b±øÏ½û~2Ô·}‡Ž]‚ÇŒŸpùêUYéµ7\=½?dfVÝŽUCé¯7m-.Uçæê"§—gçäTJïUnmj5ÅߙЄ·®>}™J’R…"g5iÜÌ˽­€/(µÞ9óÂoß¹;dð ÇæBañå«W'OŸ9gæô¡ƒWÏŽUC¯36Çnû¡?]]~õoTÅ\á^ÒÍOŸ>¹;ú°X,…"©Tš™÷ö^ÒÍv¾Ì•¾xùòßK—]¹" cGzI¯Ý,^²uÛŽ!ƒaVÕ{¥õ€:CñÄëw¯6hliieaa©ðgiiÕ°Aã×ï^•Zin^B¨‘üÂýûuìD¶äíÛw£ÇýäåçßoPÈÝ„ÙòìîÕÛ£MÛ¾ŸŽ?‹ 3vúì9tiBb’«§wø‚(úí•«×\=½SRS«4ôeXþ¿GFŽ7$tBhâ”i¡€àn®žÞ²m÷ÇÅõèÛßËÏ@È3gÏ*Ü2ÛWÞ<%-mâ”iþm;Nš:ýUzzù*C=îÙ¯¿—ŸÿÀ¡Ã/^¾"[NQÔæØm]»{µm7qÊ´÷>”¯iub®Àb±ù<]¶>O—Åb—Z©CÓ¦†s#"/\¼øéÓ'z¡³“STD8Ç“­6oþ¿6¾óÃ狊ÃÂ#é…»÷ìY¿!°cÇ¥ 84kqóömo¯„Ä$Š¢BIÉɡĤdzý„¤$cãfM›Vi²M.Yæêâ2eÒ„ÐÏ~B­X²x㺵t龃qËWFwhç¿lñ"gGǰðÈ;wï©ë%…Í…BáøI“EŸDáaaáas²²²f†Í-Çe¨gßÁ¸Ñ«ƒ–,ŒjÚÄ~úì9W®]§‹~ÿó¯M[c:tX¼ R Ð]¹zMe}ÂÔvŠ'~‡«Ãc³9*׿êðt8œR+ÕÓÓÛô[ÌŠèÕÓg‡±ÙlÇæn­Zy{zøz{ËßÚè߷Ϙ‘¡!Š¢"¢æçç ‚m;w 4pÖôi¡.AAÙ99[·í˜2iÂæØmÏž?oboŸtÿ—§Çí;w³²²ÍÌL“|¼¼n+Tz>^^ô&}{÷ 4~íäØ!äéÑÚÔÄ!$•J7ÇnüÃzÛÀNŸ>ñ÷©ÓêzIaó´§Oóòò¶oÞhog‡²±±Ž;|D"‘p4èpyêêÁ0lÓÖØIãÇŠê K6Çnó÷k#‹wìú½Ÿ>óÂf#„:Ž7^–øÎ)Ž+p8:\®‡ÍVùÇåêp8:šÔëìä´{Çösÿœ\µ ¹ƒÃå+W'M޳߀”´4Ù:þ~mèÆÆõB„TúæíÛüüü.ƒdë=zòÄ¥E @p7!!”üàÁÐÁƒ¹\nbrR‰XüßãǾ>ÞU€ì­·—§º]~úüy^^^°Ü¶[7ü6sê „µ ŸÏ_¾*úÒ•+B¡ÐÙÑqAø¼²& õ<{þ(uõ"„†­°~qqqn^.BÈÔôk䦦¦em@]¥4®ÀÖár¹l5¸\.‡]z®˜”ìæíûôÙ3ù…ŽÍÆÿøãó/…ÅÅê6¤OWôÌDZNn.—ËÕÓÓóñö¾—˜tÿ­­žž^k7·Ä¤ä„Ĥ¦MìMåNÏU@©{mffŠÊËË—-IÏxýàáòëäçç3Ôàìä´î×è«Îm\S,,ž4uºò:\.!ôñãG…å……B<.W]=ææf¡å‹íŠÝ*ÿÇãñÌLMÑ—<éó^Ã7+øB1WÐáp8®‡ÃÑd¾B³¦M8lö¸Ã Ë<|hff&ÐÕU·¡•¥¥¡Á™/ „NÇÇ;;9"„Úøxçäæ=~Ü͵%BÈÝ­UjZÚÕk×}½½«'€R5´²240ˆ?wN¶$jñ’?÷îCå}I>ds •=II êÖC(r¹\_o¯¡!ƒÞ½/)~S“CÓ¦:::'OŸ‘_H’䉓ÿØ6n¬§§§®+KK#CÃEÝZ¹Ò)iigΞe³Ù–FFFŸ:%«ðÔ™xMvÀ÷@ñ—Ë£(RÝÚEr¹^¿qóŸÓg–-ZȰ!‡Ã:"fýœÅjÙÂùü¿ïÞKˆÝ¸!dcmmaÑ 1)¹_ïÞ!WÇ“<˜0~\õ Œž&yùÊUkww‡ó㨑k~[0¬UË–7nÞLHJZ4?2jÉÒå+£‡† NJN–¶Sask±XÙ§gÏ"¡pûή..|¾â×4éëëÿ<á§_cÖ½|ù²½¿¿¡¡á‡ÌÌ¿ÿùçIJêúµ¿"„ê;fôÊÕk>|Ètvr|’’º}×ïóçýBïuè°¡1ë7°Y¬Öînç.\LÏȨìO€ÚJ1W03mð.ó­eý†l¶bAï2ßš™6ФÞÐaC›5iò×þýk~[ÿñãGƒ–-Zl^¿ÎÛÓ“yÑÇqèÈѽû4²±Y¹l©§GkºÈ×ÛûðÑc­\["„x<ž“có”Ô4w·VÕ€ggw÷e+W tu/‹G :„J:tà`\£F6+—-í€Ú¸ekDÔB?_ߨȈ£T¹¹®.môªÕ11Q ù|ž·§ç 5ó"C‡ mdc³gßþèµ1B¡Ð¸^=w7·È_æ:4k†b¨gXÈ`‚ öŒÛ½goC+«ˆ¹a}zõ”íõ§OŸ=väØq//Ïÿ-]2jÜøŠ~¸Ô }g:þBüàƒB!ùõ.¿0þ2ƒoVÅ0#ƒzõÍ,ÔÍ|@±/n_çN‘ò¸›Í±²°±²°)O­¨sà7©Àr0\L WÈÀr0\L WvÅ«|ŸH’LIKyóîòœ*Åçó­,¬š9à\ïê¹ œRÒRòòóÌŒÍUñÊjÂÂBƒš\'EQ™Y™†5oÖ¼º{|— W”Óë7¯m¬lôõõq¼N]ÝòxÞ^Q‘á êןõ˼ôŒŒŠH@µùf¾‚Ÿ¯¯ü[OÖ¦&&UѪ‘‘‘B[Õ_CÕ© ± …Â=ûöØó'ývóÖØvmýÂfÎ@µ÷÷ï;pðŸ{÷EÌ ÓvW}×ŠŠŠB?ôïWEÿ—UÐÀþý7mÝÚ90aLi¾BNnî{÷¢"û"„ŠE¢ƒ‡ŒÚ±ëw?_ŸS&#„üýü†„ŽÚwhÎŒéå.ª:ôU»VêümÃZ„ÐäIÓJ¯‡@ ú”m¾ÂÎ?v÷êíѦm߃OÇŸÕ°!Dgw£ogÈFééOŸ= 3ÖÓÏ¿g¿þÿsJeÓÌ5¤gdŒ?ÁËÏ¿ïÀAwî?x8hØO?ÿÞÞ¸yKVÉÁC‡{öëïåç?pèð‹—¯”¿ÂÝúmvNŽr<òbû™ùㄉ^mÛõ<$!1IåʥƟ’–6qÊ4ÿ€À¶'Mþ*=ùHÿû¤­­mC++„°¸øþÇ]»t¡‹X,VP@§›·n—ÚÉšYæ^b›áXÈ(o~èèÑÖ¾~ôY–öá /QÙÊÝQn·L!ù}Tù¹¥‹þ{ôhäØqCBG1쬆ái^'óçm\\¾ý½üü„ 9sö,s‹¡¶m|ß¾{Ÿ˜”Ìð1S>ùÑýŽô[ÇæùùùÅÅÅÅ"ÑÃG‚dÂŽíÛݹ{!T¾"€aEÁÀ¨&eÈvïÙ³~C`ÇŽK.phÖ4,<âæíÛ¥Ñäoj(×ã2Ô£££ãæÚòÂ¥K ‡Xy¾‚CÓ¦;c·XYZÒoŸ>{Îårù|þë×oè¡lMÛÆÞ¾{G’dùŠ´=U ª|îØ²¬ @5Ðô™I‰D²mç®!ƒΚ> !Ô%((;'gë¶>^^êŠÆŒ •mî䨩¿©Ñ©C{zÛΡcÆnݱCvžÓ°†áCBúöî…"¤Òù /^0¿Wî²·ùzÁ¦­±“Æ=2!Ô90@,–lŽÝæï׆a×:„9yþ~mÆŒ EI¥däÂEùùùFJS˜ã¿s/!//oûæövv!ë¸ÃG$ ‡ÃQw°’ï?4`ý¶ðc!BÈ@ÿëïÖèëë“$)è3ìTùzF&íéS•ac¦îX”º¹¡K çKW®Òcãç.\02446®§²!…Ý!Be»ÇÕä#d¤ôeþ ŸÛ¾½{… ÈШ¿_ ÓuK©uÒ;¢üyÓ××ß»mðèh;u|úüÅß§N¹µrenÑÉÑñÒ•« ‡Sº´²A…[·ïìÞ³·s@'Ç顾Þ×Ï›¾ž>I’ÅÅ¢òéëëiò!¬Ã0¹¨>šæ oÞ¾ÍÏÏïÒ9H¶$8((zm s‘†ºÇ0¬{·à5ëÖ—u7<=ZÓ/èvÞñìùóüü|OÙ¬ø¶~¾‹–.'I²âñ3“ýËkbbŒ"”®æKßÒ‚Ïç/_=|Hˆ‡»»³££s¸#óÁ*))±°h ¿P~Ê4ýï{©“¨+Ø36Ö6*ÃNIMUw,äW·y‡víþøó/zåóÿ^ìÔ±ƒ]c[MúGíg@J–z‚P®ásëíåYJ£$©ix_Ö,½N)©òóöôùó¼¼¼`¹ã¸uÃoR)ÉÐ"} ,-,ž¿xÁpˆÕ]à ‹‹7lÞrøè±ÆMùyÒ×u°¯·->üdKÊWT5®Úc~û•aé“gTJëÖ¯)µN Ã`n#¨6šæ ÙÙ9!ãzõdKLLLD"QQQC‘†•›Ë^›™šÑÛêé•áºAá [ù‚»  !4lÔh…åÅÅÅŸ™‘D0Çol\oûæ[¶í˜5wAÞ^ž³§O£¯¡U¢Ÿ“4Ðÿ|5F(|üøYXÐK>~,Âq\PÚ/Ù0ôŒ&GG]Ø ÇB¾Zu›wlßn݆÷<°°°øïÑ£Ÿ'ü¤aÿ¨mWT\ê!PIåç–~+Ji´XñéŒR×,½NQ1Rõy+È/ l ]Õ“”æa` /‹·Ê“_ÚÓgsæ…¿}÷®s`@ØÌŸ«Ò7@_¦sÒŠŠ„8Žëòùå+*õèÔypT'MsSS„Pn^žuÆô’œÜ\.—«§§ÇP¤aå9¹¹_·ÍÉár¹²+‹¹¹BhùâE ¾¹ÚæñxšÇŸŸŸ_¹QiÎÙÉiݯÑ%%% IÉ›¶l4uúéǘ7‘ ÛX7ÄqüÅËWÍšÑK^¾zeeiÉf—rôËwdå{IeØ ÇB“½¶³µµ±nxéÊU3SSCCC/ÖöºvéîrÐäs«ùÎV|Mu;bffŠÊËË—E›žñº  @ƒ1ôeJ%Lé9ˆ7oßNœ:µ¤D¼h~¤üH†uC+Ç_¾JoÖ´é—2,-,8NùŠÊwÈ4§îLõò•«66Öîî •9vœÍf»8;9{>1)Yå“Ì5hÿØ1£W®^óáC¦³“ã“”Ôí»~Ÿ?ïæ]³³mÌb±–¯Œ28)99%5µ²â)k±XÙ§gÏ"¡pûή..|>!”ŸŸÿßãÇž­[ëèèÈÖ·²´är¹oß½wvr¢—ü8zÔäé3Výº¦µ»ûÉS§Þø0|hH©ÌÐ3òÔõCØêŽ…†{ݱ}»ÝíÁq|Ü£ÖTÞMÚÕœ&Ÿ[Í­Š5eëÿ8jäšßÖ# kÕ²å›7’’¶lø­ÔzÞ¿oÛ¸1s'(܆¿}ç.Žã††òÏËÐ?zdèôÙsÖ¬ûÍÝÍíÔ™323‡† ¢·-_QթЧ ÊT§&kÂïA€êT†+ª‘ÇqèÈѽû4²±Y¹l©lþ—Ê¢k7nȶuqvöpw_¶r•@W÷Ò¹x…š£W,ß¶s׾뛛/Z©ò‹Œ˜kÐİÁAì?·{ÏÞ†VVsÃúôêɼkõÍÍ£"Â7nÙµÐÏ×7*2bÄè++Íéêò×F¯ZµÏçy{zΘ:….úïñã‰S¦ÅŸ‡Ãqméòèñã €Nô¿6‹Ìߺ}ûþ¸CMìí6Ĭ‘ G3w2ÃA—Q×K a3 MöÚÍÕÕÈÐÃq/†5•wGe»òÔ2Ñäs«áÎVÊš ;2|èB*=pèЃqÙ¬\¶ÔÛÓ³Ô>z¤üD’<åç ²srH’œ1ç›gzOŸ8fblìçë³ |Þö]»â޵·³]½’þþ„PùŠ +€jƒåää „â/Ä0¸ú›¿vã†ò©TÜÞýNœügÏ»´HU8d˜‹K‹È_æV¼ªrø>·‰¤c—®ëVG»»µR·ÎÕëWÝ\ÝäǴꆼ¼¼zrSzkfR©ôúÍë:tªÖ®ß™}qû:wêŒàw&ëª^=º¿|õ*ãõkmR%^¥§§¤¥uaüúaPA×nÜlPßœ!Q@ðˆ?ßrÎê5œ@ 2xÐC‡g~·¯3þÜ»ïü¿ÿ6´²òh]µÓD¾sâ=Šyåç ê­ÏWÐÌWÕ >muÖØÑ£nÞº%ûMê:ã÷Ýfff-[¼þ­¬:÷ŸoeaåÐÌÇà: )È€¤¤¥äåç™›Õ±Õ-,,400¨ÉuR•™•‰aXófÍ«»wµä @ ^¿ymce£¯¯_Ç~ÓÇãÖä:)ŠâñxÙ9ÙÕÝ5€Ú r b‰ØÐÐÏç×±GóÅb±®®nM®“¢( QY¹YÕÝ5€Ú¬N]ÕZ¤î% µ†a,KÛQjWZ€}¡í@ªd¿jxu¯ÛU Æø¾`£êØœR@ƒq ðû„Z¬³ŽÍ'TøWhAÝËjV”Å7¹‚«§·º¿rT}íÆ WOï™™¡ôŒ×›¶Æ‹”‹ÊZUUÁ}¬êxäi=6ì댅¯róòæFDtíÞ­wß ›·$)+:ÿïÅÁÃC;ué:züO ‰Iò[•¯è;÷ eòÍ=ˆëÖÒ/=~²~ÓæKèWJ3¯36Çnû¡?]]>BÈÙÑq㺵õŒŒ´½û•©¦í£B<ò´¦j\aÑÒå/^½œ5mjNNÎößÿ£F Gݾ{/jÉÒþ}û¸·r=vÖ/ó~ß¶ÕÆÚºÜER@™|“+øùúÊ¿õôhmjbR­)´U÷Ôä}Ôzl˜Ò|…œÜÜ;÷îEE†w D‹D:!´c×ï~¾>3¦LFùûù µ?îМÓË]T¥û…ii¾ÂoÖ"„&OšVz…8Ü”MÙæ+ìücwp¯ÞmÚö8øtüY ‹B§LCw£ogÈÆÀéOŸ= 3ÖÓÏ¿g¿þÿsJ]ëÏ_¼9vœ§Ÿ·Þ}=J/¤køïÑ£‘cÇ ¥.˜Ð1c§ÏžC—&$&¹zz‡/ˆ¢ß^¹zÍÕÓ;%55%-mâ”iþm;Nš:ýUú×=xèpÏ~ý½üü~ñò•á1ïczFƘñ¼üüût7!áþƒ‡ƒ†ðôóï=`à›·4iHe+ÜM ßfçä(Ç#O!¶™™?N˜èÕ¶]ÿÁC“T®\jü ½§Lùä—ž‘rtp ß:6wÈÏÏ/...‰>z@/g±XÛ·»s÷B¨|EÃ0Š‚@”!WؽgoÌú ;.]¸À¡YÓ°ðˆ›·o—ZDûyÂO¡KËnsÈ›0yªK ç%Qó›Ø7 _uûÎ]•Ì™7¯…“Ó’¨ùÍš-ZºüÒ•¯§Ò…K–¹º¸L™4A]0>Þ^ ‰Iô?‘IÉɡĤdzÛ„¤$cc+KËñ“&‹>‰ÂÃÂÂÃædeeÍ ›K¯°ï`ÜŠèÕAKF5mb?}öœ+×®+‡Ç¼ÓfÍiçßvAÄ<ѧO3f‡Í ›Û£kpTļq‰,kah¨Ô.k<ßvl„¯·÷‚ð_„ÅÂ9á*×aŽ_(ªë=•”ç+84mº3v‹•¥%ýöé³ç\.—Ïç¿~ý†$IÛÆdkÚ6nôöÝ;’$ËW¤í©UåsÇ–eeЦÏLJ$’m;w 4pÖôi¡.AAÙ99[·íðñòRW4fT¨ls'ÇæHýMNÚÓÛv 3vëŽ^žÊ«uëÒE~µØ;ÛûûÓE}{÷ 4!Î)“&lŽÝöìùó&ööI÷xyzܾs7++ÛÌÌ4!1ÉÇËëé³gyyyÛ7o´·³CÙØXÇ>"‘H0 Û´5vÒøq£G†"„:ˆÅ’ͱÛüýÚ(„ǼÇ„ôíÝ !DH¥ó.^¼`~¯Ýeoó ôu 1t>Ã!cŽGž¿_›1#CBR)¹pQ~~¾‘ÒTæøïÜKPÙ{Ge‹˜Ò¥­@ *ܺ}g÷ž½:á8^ø±!¤¯÷uÞŒ¾ž>I’ÅÅ¢òéëëiô‰¯»0¹ l4ÍÞ¼}›ŸŸß¥slIpPPôÚæ" u îB¿À0¬{·à5ëÖk²Úê51²ó·—'sœ.-Z‚» ‰Mìí“ùªèáCB<ÜÝÃB)©©ùùùž² Úúù.Zºœ$É2=§îéÑš~AŸ¹Þñìùsu U¼‡™Éòc„!•–5~K •½§Žº \aqñ†Í[=Ö¸Q£)?Oúºöõ¶Åç9ü²%å+ª Wí1¿ýʰáÔÉ3*¥Îuë×”Z'†a0·P&šæ ÙÙ9!ãzõdKLLLD"QQQC‘†•›Ë^›™šÑÛêéé1¯V" …Bú­@ `ŽS$yy´¾—àãåYPPàáîÖÒ¥EBR²±±1A¾>ÞÆÆõ¶oÞ¸eÛŽYsçáíå9{ú4{;»‚‚B„аQ£‚)..VŽÂ¶ò7CCïafF<Á¿ºÞSW›Ê“_ÚÓgsæ…¿}÷®s`@ØÌt÷è „ä÷´¨Hˆã¸.Ÿ_¾¢Jé±Z îAÊJÓ\ÁÔÔ!”›—gݰ!½$'7—Ëåêéé1iXyNnî×msr¸\®ìÜϰš®._¹ †`|¼½·nÛžtÿ­­žž^k7·‹—¯׫״‰=}qììä´î×è’’’„¤äM[¶Nš:ýô‰cææf¡å‹Y4h ßÇ«Ü#ÁÐæ=œŸŸ_¹QiNeï©[SzâÍÛ·§N-)/š,7‚bÝÐ Çñ—¯Ò›5mJ/IÏȰ´°àp8å+ªê~Pw&ž6ef•Ö¹vÝj [\PVšŽ¢[YZœ‘{Àát|¼³“#s‘†d³ú)Š:yú´cóæ*ÿ9“_íÄÉ\]\ÊgïœÜܣǻ¹¶D¹»µJMK»zíº¯·7BèIJJP·B¡Ëåúz{ ôîý{‘Hdeiidhø±è£[+Wú/%-íÌÙ³lv%=6CC ;…ã,„P^^½\å¤Ëj ®÷Ô­¯||wïÙ[Xøqò‰BH ´pr:{þ<ý–$É /Ñ5ÊWìŽ hFÓ‡Ã:"fýœÅjÙÂùü¿ïÞKˆÝ¸¡H,Ë6§÷ò•«66Öîî •9vœÍf»8;9{>1)Yå¼} Ãè§‹³Óéø³÷>ܱes™â´±¶¶°h˜”ܯwo„«‹ ŽãÉL?!dcm#‹Ã""ûôìY$nß¹ÓÕÅ…Ïç#„ÆŽ½rõš2Ÿ¤¤nßõûüy¿(7ͼšô°º†vÊζ1‹ÅZ¾2zhÈà¤ää”ÔÔÊŠ§LzO…Ûð·ïÜÅqÜÐÐ@þùww‡3zdèôÙsÖ¬ûÍÝÍíÔ™323‡† ¢·-_QթЧ ÊT§&kÂïAʪ Ç#‡#âБ£{÷hdc³rÙRÙ7•E×nÜmëâììáî¾lå*®î¥sñ 5G¯X¾mç®}Ö77_´ Rå×a¶aíÚ%+þ·ïÀAK ‹ÿ-]ìîÖª¬qúz{>z¬•kK„Çsrlž’šF×£«Ë_½juLLDÔB>Ÿçíé9cêz«a!ƒ ‚Ø0n÷ž½ ­¬"æ†õéÕS¹]æ}ÔCCêvª¾¹yTDøÆ-[#¢úùúFEFŒýceÅ£9†ÞSIù9ˆìœ’$gÌùæIËÓ'Ž™ûùú,Ÿ·}×®¸#Gííl×F¯lheE¯P¾"à €2ÁrrrBñâ\ýÍ_»qcâ”iñ'OÔ77×vW€êsõúU7W7mRÉòòòêÉMA­™uJ¥Òë7¯wêЩZ»P í‹Û×¹Sg¿3 ´ñ€Z¤’'è  åç ê­ÏWÐÌW”ü«´ îe µ ü L´<®àçë›|çVÅëµ Œ+h±Îº×퀪ã @àl¥=+Ê æ+-€qíÖ eã `ã @ p§(ªî].׊q…q W‡[­ý¨å WZ`\ÏøÙ‹gM¸Üê8i)Oû×d *ûóA¡y< /dJJJ>}úTŽ`Ô5ýôùS ‹ŠWø~@®´À¶±í‹—/îÜ»#‘H*«NußòËÕ½®H +«9Lî «Ò3ÒU|YòµäÛ%*×3¶³µC 1È€à8nogoog¯í@”æ6€ Œ+€ïI’)i)oÞ½‰DÚŽåûÂçó­,¬š9à\«P;@®¾S)i)yùyfÆfuìš jrEefebÖ¼Yóêî@¹@®¾S¯ß¼¶±²Ñ×ׯc¿¥Äãñ krEñx¼ìœìêî@yA®¾Sb‰ØÐÐÏç×±¯y‹Åººº5¹NŠ¢(DeåfUw×Ê«N]QP&u/Q¨0 c±XÚŽP0®¾SØÚ¤Jö«†×Y÷º€º ÆÕ CUÇæ”P§Á¸øNÁo]j±Î:6Ÿ€:þß©º—%Ô20¬@íñM®àêé­î¯U_»qÃÕÓûCf&B(=ãõ¦­±ÅÅ"墲Võý ÷:;'GóM*ØÏ•N!å½ÓblØ× ßK$AÝ{feg+,?ÿïÅÁÃC;ué:züO ‰I/úÎÁ=j‘or…ëÖÒ?Oø !´bÉbÙ’ 6“ñ:csì¶bQ1ýÖÙÑq㺵õŒŒ´½ûuMMëg…xäi=6L͸Â_{÷+|û%K}¼½¢"ÃÔ¯?ë—yé)*P‹|3_ÁÏ×Wþ­§GkS“ªhÕÈÈH¡-Pjr?k=6Li¾Â†Í[.\¼ôöÝ;¤t‡~Ç®ßý|}fL™Œò÷ó:jÜ¡93¦—»¨J÷ ÓÒ|…ß6¬EMž4­ô q¸@mR¶ù ;ÿØÜ«·G›¶}>VÃ"„ÐÄ)ÓBÁÝèÛ²ñgúÅÓgÏBÇŒõôóïÙ¯ÿßÿœR×úó/GŽçéçß­wßCGÒ éþ{ôhäØqCBG© &tÌØé³çÐ¥ ‰I®žÞá ¢è·W®^sõôNIMMIK›8eš@`ÛN“¦N•þõ‡€:ܳ_/?ÿC‡_¼|E96:ŒôŒŒ1ã'xùù÷8ènBÂý áéçß{ÀÀ7o•ÚWEmŽÝе»WÛv§L{ÿáƒ|¥ÆPj?kCC*#W¸› ëD!å“Åö!3óÇ ½Ú¶ë?xHBbRùº—á*S>ùÙ6nܧg]ƒ–‹D=  ß²X¬ŽíÛݹ{¯ÜEÃ0Š‚j2ä »÷ìY¿!°cÇ¥ 84kqóöíR‹hò75”kž0yªK ç%Qó›Ø7 _uûÎ]•Ì™7¯…“Ó’¨ùÍš-ZºüÒ•¯§±…K–¹º¸L™4A]0>Þ^ ‰Iô?OIÉɡĤdzÛ„¤$cc+KËñ“&‹>‰ÂÃÂÂÃædeeÍ ›K¯°ï`ÜŠèÕAKF5mb?}öœ+×®«ŒpÚ¬9íüÛ.ˆ˜'úôiÆì°™as{t ŽŠ˜W".‘¥& }õûŸmÚСÃâ‘îÊÕkd5ks?kCC¥岯óíÁðõö^þ‹°X8'<¢Ý+ ÕA•”ç+tï$¤oï^!B*¿pñâó{õè.{›_P ÐÕU×b±xÇ®ßû÷é3/l6½£Æ§‚ 4Œ¹ŸK OO P×ÀácÃ<¿6cF†"„¤R2rá¢üü|#¥© Ìñß¹— òr8•-b_Ú~,DéëéË–èëé“$Y\,*_‘¾¾ž&íÖa‚\€ÚDÓ\áÍÛ·ùùù]:É–E¯a.ÒP×à.ô úw ^³n½&«­^#û·ÞÛË“9N—-ÁÝ„Ä&ööÉ,ŒŒH¾ÿ 19©}»vÿ=~< __k>Ÿ¿|Uôð!!îîÎŽŽÎᎡ”ÔÔüü|OÙdþ¶~¾‹–.'IRùqOÖô úԨ𖠆¾zýæmAaaÏîݾîcp0+<{þ\ó”CC?ÊÌdy‰‰1BˆJË¿¥……Ê#¨ó®Â…2BŸ"è%Ÿçðc+ª ;óÛ¯ N<£Rê\·~M©ubs¨E4Ͳ³sBÆõêÉ–˜˜˜ˆD¢¢¢"†" +716–½635£·ÕÓÓc^­D, …ô[@À§H$òòh}/!ÁÇ˳  ÀÃÝ­¥K‹„¤dccc‚ |}¼ëmß¼q˶³æÎ#ÂÛËsöôiövv…¡a£F+S\\¬¡Â%¬ò-C_åæå"„LM¿^›ššÒ/ʃRÃch¨âG™™‘D0ǯMó¶¾BH~O‹Š„8Žëòùå+ª”«Õോ¦¹}ËÍ˳nØ^’“›ËårõôôŠ4¬<'7÷ë¶99\.WvîgXMW—¯ÜC0>ÞÞ[·mOºÿÀÎÖVOO¯µ›ÛÅËWŒëÕkÚÄž¾0uvrZ÷ktIIIBRò¦-['M~úÄ1ss3„ÐòÅ‹,4oˆÇã•£»Â335EegçÈï#ý¢rc`ÀÐæG9??¿r£ÒœÊ#¨neLÍ÷6Ê–ËŠ¬Zá8þòUz³¦Mé%é–§|EUÝêÎÄӦ̬Ò:×®[­a++P»h:‚meiih`pFnÒþéøxg'Gæ" ÉfÔSuòôiÇæÍUþS"¿Ú‰“ÿ¸º¸”)Î6>Þ9¹¹Gwsm‰rwk•š–võÚu_oo„Г”” n=„B!—Ëõõö2èÝû÷"‘ÈÊÒÒÈÐðcÑG·V®ô_JZÚ™³gÙìò|=6Cx–FFFŸúúÈ©3ñ²­*1æðÔ5Ä9޳Byyyôru?«šº#¨n}ÍOW …“ÓÙóçé·$I^¸x‰ž¨Q¾"€dwdµ¦'‡3*tDÌú 8‹Õ²…óù/Þ½—»qC‘X"–mNÿíå+Wml¬=ÜÝ*?rì8›Ívqv:sö|bR²Ê9ó†Ñ'-g§Óñgï?|¸cËæ2ÅicmmaÑ 1)¹_ïÞ!WÇ“<˜0~BÈÆÚF,‡EDöéÙ³H(ܾs§«‹ ŸÏG3zåê5>d:;9>IIݾë÷ùó~)_w3wcè°¡1ë7°Y¬Öînç.\”}o‡ÃÑ0æ~Ö$|ôX+×–!çäØ<%5®GW—¿6zÕꘘˆ¨…|>ÏÛÓsÆÔ)ôVÃB±ÿ`Üî={ZYEÌ ëÓ«g¹{œ¹?}útèè±#ÇŽ{yyþoé’QãÆ—)æ~ÖCCê"¯on¾qËÖˆ¨…~¾¾Q‘#FÿXYñhŽáª¤ùs!?_Ÿáó¶ïÚw䨽íÚè• ­¬*R`X€Z£oŠÇ_ˆ<`põ7íÆ‰S¦ÅŸ•#uM?}þÔ¢âUªä à;eÛØöÅËwîÝ‘H$•U§º‹oùåê^W¤ ……•Õ&÷…Uééª ¾,ùZò핌ëÛÙÚ!@-¹øNá8nogoog¯í@ ¦ƒ¹`¹˜@®&+€ ä `¹˜@®&+€ ä `¹˜@®&+€ ä `¹˜@®&+€ ä `¹˜@®&+€ ä `¹˜@®&+€ ä `–½Ú·OÛÁ ÆÁrrr´j.¸&+€ ä `¹˜°+^m!I2ãMFVNVII‰¶c©A¸\®™‰™uCkS¼$†S‰¡Ç<µÚ«ŒWÇ¡©› ×~_ñ$í !!Y7R(‚S‰¡ÇŒ+@­–™•Ù©}'Š¢à*YŽãM®ßº®\=¦C!È V#¤Žãb±XÛÔ,R©Ã1•EÐc*1ô‚\ꊢ´BÍ‚aó Ðc ˜{ r¨Å0 £( Î|*¨éè1µÔw ä P»UÛ™/îâ£ÍGï$‰(Š¢…(„P ‡ýü‘í´Ý*`¦îZ¹¬=FQTÚ³”œÜ,•¥f¦æö¶ÍJɨùz r¨Åªí*™’ëßY<.@ÀãJ)Œ I¡ÂbbùŽS‘¡þÚîu½£jY{Œ¢¨g/Ry<^`Ç`å3)EQžü÷ôyJÝHš=€\j±ªÎž½Í³m`„ãI’!CïRRº˜ÄJT"ÅZYST ½÷O}T°Ç(Šzö"Çã9:8 …E!QXÍf;:8?NýïéóT{Û¦µ:]P×c¾·j5 aèË z¥»”ôjâê“ö% (’B‰ J"¥$õI,Á¿œzÜMH‹ˆìÑo@§àný…,Yñ¿/_ʯpóömÿ€ Ì¬,ù…¿mÜÔ>¨Ëéø³!¤òÔ§y‘$ùüå×DáÙ–-ÿ›ž¬g"ûûÇØôé¦ÍBa‘c3gWçÙ‹T’$ÕÕ&•J?>vâÏAÝ{vëÓw”©.^ª¢§àsWgf1¯¦®ÇŒ+@­VEã …vœLºøò“XJWŽ!DQI!‚DR$&%Q~ÁG¤ê™‚í»~ÿã¯=m|}~þi¼¡¡áû÷ïÿ9sfÌOÃÃætlßNù—¶>o¾m箃‡Ì53¸s=ŒQø)ªbã E½L®££C' Ïc·=[¸¨½­­ŽK ‚þ–”ü·p¢(û š;´øïñƒ´gOšØ9¨]˜¿hñí»÷~è×wÔðaEBáå«W,^’™9nà€þ•{ìTî²BW—©Çä P«a£¯e+±NQ ±pוÍ8kÍÙ'…IaR‰¥è£ð“&qnÜ).^¾üÇ_{ÂfÎèÕ£;†aýúôŽ^³|å*ÛÆÙØÈ¶’¶ÿÚ·÷ž½³¦OíÜE*•V|/Ôõ‰†=öòÕ3®ŽSóBaÑ‹mÛŸ.ˆò06ÖÁ0R*¥¾ pY¬æ,Ö“…‹¢ì~úÉÙ±EÒýÄÇ)Z(Ôîüµ7c7mhÖ¤ I’†wZõëš-Ûww鬯§W‰‡O]W”š!1”B®µX¥+¼Íþ8wëEÇ&Ö^\ !ÔiÚŸ²ÒékŽ#„X,,ȳéÜá² ŠÒ9fç»Ûûûwï¬ð}GS'M¼—ø×¾ý¿Ìž%[Hèè±Ø;§LšØ«{w‚ *eGÔu‹†=–›Ø1X(,z±cGjä|7}}BR‚ ïMtºA’ ³G(-j‘TJÚþ4®e ×ÃG6oæ¬PÛþ¸CÁƒì7–H¾Îx<ð‡wï?<ñ¢y³f»vÿyñÊ•œœ\>Ÿ×ÜÁa쨑övv·ïÞ <ð×îå+£=ylia9mò¤–->'"ÇNü}àÐá윜†V–ÃBBd6ÇOž<w8+;ÛÆºá¨áÃÛøúУ*=WP·ä P‹Un®ú~ÉîëÁþnŽv ÒÞ¹66Ü0w Gl¦ÃB\‹ËÆù\Žž.ÃPNA±TJâ8&ßú‡ÌÌWéÇSyÊïxððÙe.ýß¿OZ¿ió¸1£û÷é]Y‰B¥ô†!‚<˜6£µ©)äAü9YJI’¤HR‡¢l "%<Â"t¸¾žX"Q¨<+;ûÙóçãÇŒV¸±RßÜõÊ*ù™‰²²²RR#ë‚‚‚âbŸÏ£W8{îüŽ?vÓ_º\¹‰‚Ú>ѸǾLè¤8%%ú¶¿lÚ#+ÐØEQ!•JIR¢”+¼ÿð!dffª°œ¢(zèE,‘L?¶o¯^ôí ýyó£òòòèém||† HÏŽ\ú¿•ùzÁþÕ¯Oï‰ãÆRåïç÷âå˳.8;9þþçŸ?Ž2ðŠ¢Úû·•H$¿ÿ¹gÔˆaîAÀw«²Æ–þyãE¦(¤W‡¢òe–HWÃpœþ !’¢¤$Â1ŠÀ.¥G³16 /‘|–rë$)eI*%d1oÿý°Y3_¼|¹{Ï^oOϦMì+«gÔÎWиÇ(Š"I !$•Jé³8’=@!K¾Œ.ÐûEJ¥±X±rŠB±X,uNŸü37äååe¼~sêÌY„ù%F/Öô }:˜/_åtlßNvGã×Uÿ#âå«W…®.- ?Ò˽==V­YKÏÿ€\¾Sªœ\ALH…H„$RJ,%ÙRœK „†(6Nñ9ƒñ88ý‚")„#—ó>ç£M}CùÖÍMÍB¯ÒÓ-4PnåUz†žžž@ m2õçIA:Réõ7WþºfcÌšÊú©hµÏAhÜcEJI!$%ˆÏ`˜ìi˯C R)}sJ )¡|ÂÔÔ!ôöí;å>Ù²}‡m£F ê×ßsàÀ£Ç ô ¬6t¿ÄO!„ôôô>߯!?ßµùXô!dh` kˆ…ãl.÷cQBh”i ­ˆDŸ†¹<u†UÎs F´Ùsþñ¾ã{úÚ˜è¾Ì K$\âq0#pDàˆÀ)GRIIR—Í1ð7ºÕÎÕZ¾u33ÓÆlΜ=çíé©Ð„T*?wÞÇËSþ¶½—'}ëaîì™?O›±ëÏ¿Æ„Ž¨”ž¡(JÝ÷6jÒcA$)%¤ôkùo?–å ²Ñ…Ï;HR‚P¾anffcm}éÊUw·VòË_¿ywøHÿ>½c6lì°h~¤¾žEQ·nß¹t媬…h)Š2©gŒÊË˯onN/|ûî]aáGcc„Ðüy¿Ô¯o.ßP^^Ò0WPóURð]LP‹aj¾ ©B:5ŸÖßíðé+ï²rš7ÔgáX€kƒö.õýœê{77oÝÔÜÕÞÜ©±YkÓâOÄýgïWüy™¯Ãêác/_ I’#‡»zýƱ¿O*,߸%öý‡C’-DI¥RúuS{ûAú¿Rß>ô/•JG zíÆÍUkb6ĬÑápª®[4é1‰D,‘H0 ³_¾äåÂ%Ö%%\5›‹Êàñ,çÎÆpV‰¸Dy\!Ü9èúÍ[ó-nïß¶…“S±HtãÖ­ÇORF âãíÅãñÖ¬[ß½k0I’wîÝ»ÿà!B(ùÁC==BHö-Ú²ÿb6lHȦ­±BNÍ›'$&>üïQôòe8Ž:dãÖØ™YÍšÚ?}þâ@Ü¡S&Ù°”oãfèÈ «ôïW°2ÕÛ0-pÉî›'.ô h:¹\í ªl— ˆC‡´tq9xøð¶»ŠE"CC÷VnóÂf[ZXȾgI!W Í5óçé3vþ±{ÜèQÚí1cÓ;÷n¹¹º× ‘JÉô%K­EŸt”V£³ÙÓMôãóùÿ^§Ò7e8]ñù|>ŸÏðEÎ5Œ+@Uy¿UǨ½J.Ká8.†Öêã PgA® CŸ@©ã P7á8.ûAmÇRƒ`&!$:å/O‚S¡Çä P«eçf×3¬§î{*¨Ôj¥œqå+©¬yš…E…æææÊEÐc*1ô‚\j5‹E½Ï|/ûÚ¾rPþžAù%š|KcYëѤNŒþÑCLîµ\Ù7«©ªÌÈÐÈÒÂRù;ˆ ÇÊÚc¾ãj;Ù7WŠ*œ¯¶‘©Tªî‹¢¡ÇTbè1ÈÀ¤Jî֠΀\L WÈÀr0\L؈"+^ ê*öïü¡íPsawïÞÕv ¨¹þRÍjWŠC%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/print.png0000644000000000000000000000013213135434036016570 xustar0030 mtime=1500919838.116648472 30 atime=1500919915.736648472 30 ctime=1500919913.366648472 denemo-2.2.0/docs/images/print.png0000644000175000017500000000235613135434036020447 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR%W¡ôúgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<(PLTEïï¢ÇÇÇúúúüüüûûûøøø¯¯¯ùùùåååãããâââàààßßßÜÜÜÛÛÛ¶¶¶îîîkkkgggççç```   ÚÚÚááá···ìììýýýíííëëëéééèèè¿¿¿êêꊊŠjjjžžžöööªªªôôôÎÎέ­­®®®¾¾¾¦¦¦ÍÍÍØØØõõõÞÞÞÝÝÝÉÉɇ‡‡ˆˆˆÐÐÐnnnyyyÑÑÑ¡¡¡³³³šššÿÿÿÊÊʧ§§¥¥¥¤¤¤£££‡„|êè㉂SRL€}tª©¥ºµ«™™™óóóÃÁ½‹‹‰æåáùùøúúùùù÷÷öõ÷÷ôöõôòñîðïìåå䟟ŸßÞÙÃÃ䣡lkjõôóÕÕÕÓÓÓÔÔÓÔÔÔ©©©µµµÍÍ˵µ´ÜÚÓkkj™˜–‘‡»»»™˜•æäáðîìúùùùø÷ø÷öøø÷ôóñòñïVVU…„‚œ›™kjhXXX^\WROKJHEKJFKIFJHDIGCHFBGEAFD@QOKSQN{zwywq”“‘˜–”†„€nlfpmg\YUgd_[YTXVQ][VYVRSPLWTPYWR\YV[YVaa^ihawuo~{w—––“€~w}ztxwpqojnlgYWSca\hfaonhmlfrqkvtojiczzz‹ˆ€²¯¨¶³­¿½¶½»´°®¦«¨¢œ™‘ººº¥}ØÙbKGD?>c0u pHYs  šœ‹IDAT8Ëc`Q€‘ 0âRÅÄÌ lìL8Uqrqssóðòññ 2 áRÅ*,"*&.!)ÅË+Í$ƒK•,ƒœœŒŒ¼‚¢“2NU*ªjêŒ šZÌLbB¸T]ÎÂÚL¼r¸Téèré±ëéȳ0ÊãPedlllblÌg¬(eʤ­€#LYÌ„Í-,­¬Ím,l™˜ì„°)²grptrvrÒwa´±Qcre²“âÈÍÝAž®^ÞL>èʘìí}íÑ€/º*?ÿ€À ÀàР °ððˆH·¨ho¦tU±qñz ‚‰‚IÒÉ)‰©ié™YÙL9èªr3óòCY  ‹Š‹KJJJËʱ¨ª¨¬ª®©­«¯¯ohljnlimkïÀTÕÙÕÝÓÛ×?aâ„I“§L6}ÆÌY³1UÍ™;/{þ‚…³Í^´xÉÒeËW¬\µCÕ&,`í:4UrLë7lÜ›·lغeÛ¶mžžLÛ¶vº*9Þ˜4ƒ+‰QcòjÂ]™AtEXtCommentCreated with The GIMPïd%n%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/ChordSymbolsPalette.png0000644000000000000000000000013213135434036021363 xustar0030 mtime=1500919838.089981805 30 atime=1500919915.736648472 30 ctime=1500919913.326648472 denemo-2.2.0/docs/images/ChordSymbolsPalette.png0000644000175000017500000001625313135434036023243 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR2EFôý_gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>{IDATxÚíw|ÅûÇg÷j®§ç.  B³RC¢‚(ŠÂ°ð " ÒTT ЂЍt‘"?KHB¨Q@”Tš$¹´ëw{w{[~LX–»½Í] ùîûÅ ¸¹™gŸùÌ3egwoš¦@«¦¨¦(+&«¹½´¹ðñ›-ó÷ç5·Kÿë\ï–ùûõƒÁ`J¥Íí•€Àÿ.8Ž×vË‚üý·ßq‡L&kn—®[ ¡O ´P@þþ<½ÁÐÜžÔR;[ ç“-ቀ@‹Cè–-¡[ ´8„n) Ð⺥€@‹£qº%A¦šš+—/7¢gn·»²¢¢¬´ôæn‚0™L[åF¨B¸Ôt{µ¹Å×£ŒÓáp8>ˆÅb•Je·Û ‚hD·\.WuU@"‘~KÓ´Õbq¹\$IŠD"¹\ÛÀ#VaU!Üüõ ¬´Ôçó1"Ð4M„!11ØÕ¬Fqéf6îÿEP­3v·¬®®Æ\.]d¤*.EQ“Éär¹’’“™j”J¥2%åò¥KœßšÍf‡Ýá°ÛÍfsûe¸Uhô*’˜”‘˜”Sø§¬†»Ô·yáñª]JJýlRõï•+€¨èhFív»Ùd´iÛ6°g†×-].—ËéÔEFjµZ˜ÑÔ“‡N'Š¢ … ˆ‰D7ÙæB¥Rq®B iÜV 쇆é“Á¯[:h—IQ*•J¥’ùˆ¹\‡ÃëõŠD¢˜ØXxŸ­×ëµZ,$IÒˆPT)—Ë­V+†a¸×›Ü¦Mee%€Þ`ðù|V‹Åëõ"Â㊢AX­VN'•J“Û´TG&“ÅÅÇ»1Ìl6K¥Ò½Ã0‡Ýîv»ãããí‡×ã‹ÅÑ11n s8‚įűï6›L.—  R«#u:€ œþû¹äõzÍ&I’‚ˆ%’øøøÀ !ЬÖ.—+2* vKÇc³Z)šöá¸D"‰Ž‰ñ[Ùâ8^YQ!‘J5B¡p»Ý6«•¤(š¢ärydTTàXÖB·%à716pbGQ4*:öC³Éäq»1 ƒ_EEGsŽ³á ½>‰D<6A*µZ.—Ã6à8^a4ŠÅbCbbbb¢X,®0½^¯N§£) PUYI‘$@ŸÏg,/'IRo0$&%1+·@"£¢V‹ÅX^îñx`b||<‚ r¹\$)U*Eã6«Õív*++ÝFQŽãÆòr«ÕJ’$AÐO•Z+‰lV«Ãá濟KÕUU>Ÿ/)9966Ö}Mt†ÐEàßb±À³@Mu5Az½>>!ÞëõZÌf¿ÌN§C©R&$$À>YYQ™˜˜¨7\.—‰k¨n!Û*Ñh4QÑÑðÿì>ÉÙ„7[Ò4Í?Ôi´Z€\.Çþý®l6MÓ̺H«Ó9N»Ý{íl0A¯4í#›ÕJQTtLL‹R¥R)6Ì&“×ë­0ccc•*‚¢ …ÂétFFEa¦P( «zƒž%%'£(êr¹L55b±Xo0x<žêª*¿uœv¢cbŒåå†y¼^~ÿ!‚Pe1›µ:!1ÑÏáÐEà¬oàh˜”DÓ4EQ„øU¡ª²Ã08*v;Àh42ŸÇ‚h4§Ó ¯¡«o\‘ú|>›ÕjµZq¯W«Õêt:æ¤AÌ劉eR, s ¥JÅø&‹1 óx<ÐOx ”¢(¸FQ®KÅb1§ÿf“ F-Žã ¥ÒëñØl6»Ý÷EýVkÁŒŠÀ.UYY ×~Çï[±HäñxŸO­V{=‚ |>Ÿ×ë…'$IªT*ǽ×ãQ©TJ¥÷ù\N§Ëå"B­Rq®&nrãê"#îÌÉ ›¦°Ù@Ë4MÛl6ÀÚã‘Éd¨H%Ò²¢—¡i:^Ÿ¾}R™–ƒÓéôz< œ-—&¿Ë§ÅR^VaX‚^ßܾÜ÷ÅÉà×¢ZÏ$R©ÔétFq](¸µh=³eÃo‹h!´žÙR@ Õ tK‡Ð-ZB·hqÝR@ Å!tKGí‡Ãyµìjµ©:ðIÂБÉd±Ñ±ÉIÉ€ ·&‚ø­‰Ú›ïtÑQ‰$=5]æc l‚(ù»>Øpka!ˆßš¨í–8E ÌŸ¬­·-x3Ñác‡½^oí „… ~kBŒ Èþ¼_’@Q>¯PoH’DPÐ(ÖÂB¿5!†³%üÀ¼°½~ø=ŸÒ@ka!ˆßš¨=ý@>A×P{t£Z AüÖ ¼7¼-ö7AüVCcÏ–D°›AüVA#wKš¦-DFó ˆßj¨½Ë×?x¼ÞµëÖ{jâ½<øÄÄI›¶l%‚3'€4¿5ÈK3ffå úøÓuìÄÒÒ²õ_nÀ0Œ'%,Žgå ªªªn`þ²ó¿Å™n2™ëçvýE|’$¿ÛµkÊÔç öÀˆ‘Ͻðâþ‚†ëÀ¯O 8ŽoÙ¶}”g?8|øÃc¦½üÊ¡#GëpaU!X‘:= +2IŠZ¹zÍУ ,…MH³å¹+:üÔ'%Ζœ_»þs‹ÕúÌäI~Ùj-„0`›Í–“§N)Šü§'MdÒKËË>ßðÕð¡C™· ¦„³?ÉãL(yøËæåÜ;ðž>½z5ŠÍú¢øó.*þíø˜Q#'ŽÂér8xðÍE‹«ªž~dôÃMás0›o.Z|â÷S<<*=- ðƒ‡¼>gî´©ÏŽ9²)׆™gÏžÛº}Ǥ Oevî˜ÂæZ·EQœ•±Ùíû~úyÖÌWï<ˆ¦é¬¾}#äòß|;å?± Zà±É/,DQôùgŸyçýΖ”tJOç´ÃŸ °ÿJþ²íSRÞÏ]Õ­KæW[b³ÞÔ)þO¿ä:rôÓ5¥uìHQ‚ Cz÷ý>Y·~È}ƒ›ÂgN›ÿ^½zðð‘% ôï×—qcé»Ë7lüfÔC5ä %õ¨BÃ= åX.Ì>ôÈÈHx›G` ›ºgËŠŠJZÝ¥s'øÛž$I&%&bn7|¡@`%iš®s¶ÌË/èÝóîA9W­^“_x #- ¦¿:ë ÀȱòÜÇ™‚ãø_m,(*2™ÌòŒôô)'thßZø~÷ž-ÛwÔ˜LI‰†'{L­RŒ —.+9ޠ׿ôü»wëz£Ópùß+ –,)9ÿWLtô¸GÇ>xÿ=ûþ/÷ÃvnÙÄt¶IÏNMOK9ýe¿²3^zqúÌ×V¯ýtÆK/²Óišöz½œÞÿöÛkoÌýjýgËWäž+9¯OˆyÚ4‰D²âÃ/_ù7!>þ…©ÏÝyÇíÐØ®½{·lÛQ]SÓ&9iâøñ}z÷\Ô)þæmÛ‡ Ô¾];ö¯Ë>úÈcEåÅK— ÏÁ´Ú´eëÎÝ{Ìf³Á`xòñqd`-Ö¬Ê]ýÉZî[³*—¦é _³{ïN—³{×nÙYýƒÞbµ ú¶ÃŠ ˆ×ëýy~ ì6»Ýd2Õ-W¦dŽÂQ ØR á;‘ŠL˜ù¡1cý›ÂæÚ¹åµ¶ $-µãß§OH¨]“äw»v¥¥¦FDDf®ÓMÓåFã™sçåäˆD¢>½{åÂѦé§'ý°`îœ÷ßY,eÝ_nßùýƒ÷ß¿pÞœç¦L1+^›3~õݮݹ­Îê×÷Í7fuJÏX´tى߼õö;½{ÞýÚ+Ó=Ï¢¥Ë8Ý^°xI猌¹³^OKíøÞŠÜÃGŽöëÝ›$ÉâߎÃ<¥ee/]º÷ž{ËÆÆÆ<=yÒÞ}ÿwâäïìtõžÎ]°¨_ŸÞ¯ÏxÅëÅç-\ôæâÅ÷ 4ëÕ>Ÿoɻ˙J­ZýñÀ{Ìõz‡öæ.Xx´¸˜SX~ñ«ª«/\¼˜Ý¯£6$>.nù²%Ý»v…8µÚº}ÇÚõŸÈî?wö¬ÔŽ-]öÛ‰L-–Û53óÙ)“išÞ¼mÛ_mÌÎÊzãµ×”JŪÕk˜ gèØ¾½F£^¸diÑ¡CÌïô¦uì8súËR©4ˆìB”‹³)ùkNÅù=¬Gd†Øl®]·D‚Ný4M3¿®MQÔòrKΟ_½27Xf~k€üÂ*¥²×ÝwÑ4}Ovÿ¼ü‚ÓgÎtÉ̤vèèš™©ƒ3{` îóM}fÊÈáÃáêB£QÏž7ßb±¨Õê ¿5â¡©OO¡i:«oßK—/ÿœ·ŽsãÆ>]Z¼ìm«Í¦e½•…4`н9SŸyš¦éì¬~ÿ}éå›6}´âƒÎ:-.†Cþƒ‡´M÷n]Ùõ‚e)ŠùÐð¼ü‚å¹¹ëÖ¬–Éd0¦é`Þ Ž}ÿ}ƒiš&bÉ;ï¾1uæà{s˜6›]¡ˆørãÆÉ'<öÈè›Ïçûrã7wßyg¸âWTVÂÄï+š¦ázÐ¥@­” Å×›·Œ5 ; –Ùbþê›M·÷è‹ úÀÈáÃ(Šòz½ßnÞ:üÁ¡/Mû/EQÙYý¦Må?Oûù#—Ëß{{ÙŠUÎ[¸X,§vèÐ¥Kæí=ºßqÛm"‘H«ÕÊÞ£{÷ÍÛ¶×)W°¦ìÕón‚ 8kñø£ÎçüÂ<¡G¦N§ %°Ã›-Ù|ôñ'ùhÅŠ¶ÉÉÁòÔimAAŸÞ½¼^ÃÜ]:gÊåòüEð+’¢$E’$,ååiÏ6 Çñêêêã'NîûñgEÓ—._±Úl÷d÷÷ù|Aà8þþ»o?ÿÜ3€»ï¼&ªÕ*cŠå2È0æñù|ƒsr.\¼D’dßÞ½Žÿ §—ƒ‡÷g-ÉØeiš& âõÓkªkÖ}ñ%;=˜·0C·.]àAµZ  [—LöG‚$._¹b³Ù»wíb·;§Ífïy×ÿ\¸P…ºÅ4 ‰DÁ[pjUn4Úl¶ý¯ ;0;û¯¿ÿfŠôèÖÍçóÁœv‡cpÎ@Ç¡’ƒ\ÛÂRR>^µrçÖÍs^Ÿ™ž–z¬¸xÖÜ7Ÿœ<åŸ )Š ”E‘Pä Ö”E¯×Ãp#3ÄÀfs}ËçzË¡¬¼|çî= æ¾Ñ¶M2| ÷€MóY»|åß‹—._¼tù§_ò˜ÄN}z ‚ ðü; å·ã'¾Ù²åì¹sµ&9)I©TÀ § Õh˜œ"•Ë#*• &Ò×–M45“ ߫ӧWϵëÖŸ9{...¶ä¯¿&M|Ê¿R,÷ô Obý_fge1éÁ¼…a;† ¨ŸŸ§ðÜ /ùɈaXàKøÅ‰‰”—õoùdÝú”¶m££¢8µ2›-µZÅØÔé´ÇétÂZÈdRø•ÕjhµZ–’:ÀµC’$I’*¥²¿~ú÷GQôŸ ¼µô­·ßY÷ñê@ÙákuÊÅÓ”Ájár9ëáaX‘É8ÆØl®oùðïŒÆ @猌`}²V„o3°àÀ™L¶|éTT;QŸ>sfÍÚÏ~?õGîÝ#tÀB ¦X¬ÖYóÞœ“³pÞ\µJEÓô±â_ ‹Ò4°X¬ñqq°T¹Ñx®¤àç §&³™)h2™"""”J¥J¥JJ4-.ŽŠŠÒh4]339+Å rcG?œ_xà½Ü•“'NX,–`Þrzøv•y³gÅÇDZ(“É=á?.6¶MrraÑÁÛoëÁN/-+Û¶ã»É'Àcj 0[,×õ1[d2{Û9kjL,%Íõ:}öìŒ×g¼*·]Û¶Ìú­Mrò„ñO,xk †aI‰‰~²ŸüýT(rñ4eÐZ(”õð0"""ôÈ ÖÜ x· cÛ£{·›¿U«ÕüÙø­åèy×]éii;Â?C‡ ‘H$µ`v0¯›»!¥´´ ÇñÑ£FHÄb·ÛíñxNž:3$$ÄkÔê¢"¦è{¹+·nßqƒÁ@û× k RõS^^—Î(Š"I²OïÞG‹=xøpÿ¾}‹ú¤(êµW^¾ZZúͦ̀«Á½õ÷$ÈÇø¸8­FcµZ¹JJÎÿôKŠ¢áŠOQÔ˜Q#üùçc¿þÆNü|ÃW(ŠfgõãñA£V¸.l~aazZ*EQ~EâbcµZm^~>“sAa àRRÄbñžö±I’<}æLLt´\.ç=4¹xš2X-8C¢NÊÌPÛ0nUw8_¸Ð½kWžÇÞkÙu8ÿ×ßåFãžz’=ߊÅâ»î¸ýàáÃSŸ™Ÿå=Rük¢^ßµK&¸öt/“Ò¦M²\.ÿ`å‡CïBQÔ¯ÇÿñçiÀ©?O÷ï×÷‰q­Yû) @猌'Ož>svìè‡7mÝFÓ×/Oq޲‚¡"4=5µ°¨è\ÉùËßyúôì¹eÛvAÆ{Œæœ `ìÚµm;vôÃßnÙ hÜ[•JÉ.èçó7Š¢ã·zí§•UÕi©þ¹xi˶íÓ_˜FŸ´yöÛ† tøè±y egõëÒ¹3æv9vì\Éù'{µ´”Ó%EÇ}ä“uëÉHK;|äè©?þdöÙEP}tÌèO>[‡ h×ÌÌCGŽ”Ë—Ëå“'<µzí§UÕÕ½{õŒÔéœN×ñ“'ó Ìy}&§ì~ &OS«|m»Cô0¬È <ÎP¼Þ)üfKžnù×?ÿÌ™¿ðë/ÖGÕõF±`Ö ŠŠ$É]wÞá÷U¿>}=vâ÷S]3;÷èÖíÃ5+""6oÜHOMe§¨Uª% çòÙº÷Väj´šûîôâ§>û‹GŽËêÛgäða$Iîܵ{Ïû’çÏ™-“Ê6mÝÆnW®n ygÉâ÷V¬ÜµgoB|ü¼Ù³2ÒÒàê%#=M£Ñ ¹‚ 4H’äøÇÇ:\ZVÆãí½9Á ‚}1ìA‚ vîÚ½ãûï zýô§ ÎÉáy?$OS±pÞœÝ?ìÛ÷ãOGŽ’Ò®Ý왯íóùx|xxä‚$wíÝ»kÏ^(lf§N$IVôÈgÏû~üù—Û{ô˜7{Ö ÓgŽƒ£F<Ô¾}ʶ;×±Áér©TªÎ2–/[Ò53VÍOvßnüÈ×”œµøõø ®¨Ûð"3P(ÎP¼Þˆ4MçïÏˤé©éÁÞa ‰Dr¹Þ,L&ûãôð·d­I¥R‰DhA,Ëd2Çß‹ w ᛃñK‰DR©ÞiwÛär9ÜÀ7RÂЄ¯adûÌY˜èv»e2|·4ܬc2L›>#³SƳS&‡® |/5†a(ŠrzKc~a¥8} ]|F"ŒÁ:}H$p"XÆ>|K4Ì,fD"‘D"AQ6ÌÌ^F±eç÷ùˆ¢(SÖ‚'ªù= +2Âß›®/G)Šâÿõèà…±ÀiÍãñp¾`ÇqæG.ßãí—è|9Äëõúýâ;3g˜DÎp/+/¿pñⳓ'qŠLÆ%’$ƒyËã˜ßÇÀJÕCü:­ÕÃÎêûå 3üáä';¿oÌGFí`#W`-xܨ3àCÌÀ¯ø7þƒ]t7ßÝ*|¿gï‘cÇôú„Î2Zþ/Vµño-Ù›‚0®[†}íné[=2 ßíÚ-•HfÏ|•çšPˡՈkÉÞ„qÝ2àØÖXÖšÍ_} ðx<·D|´ño-Ù›‚Fî–ôµKg·zd@œNgs»­Fü[Kö¦ î[ÕâöL ‘¬ „… ~«¡‘ùŽ}µTˆŒ›Œ ~«¡¶[¢( ×ñ iNA|„O*‘6Š5°ÄoMÔvKVWc®‰ÔFÂ[ŠØøÝ.ÄN÷KAÄî´ÇÅÅ‚YkjÂŦ‹Ý`wê5-Aü°Ôhê‚x¸›?ÀÕvK}‚ž¦éŠª öuXx¿‚ Ì— ,` Š ð©€€N«3è °ÇúYk‚ýÐK`z½†³`öÃ=\­^°þE3ññ£©ÅQ+þoòS=¡©_ó…wtvð4ß8Šw¡öæ»î=n“J¥Ì=YlÂõI’„÷ë³Ö4ïj­å¬›Eü®É­åõ-šÂ½¼ñÞSÚ¸ÖÂBÿV§¶[ž‚φ ´þÌÙZ-e?)%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/VirtualKeyboard.png0000644000000000000000000000013213135434036020543 xustar0030 mtime=1500919838.113315139 30 atime=1500919915.739981805 30 ctime=1500919913.386648472 denemo-2.2.0/docs/images/VirtualKeyboard.png0000644000175000017500000020152713135434036022423 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR/µNÅFösBITÛáOàtEXtSoftwaregnome-screenshotï¿> IDATxœìwXGÀg¯Á½)Hï"]ÄN£Ÿ{‹ÆÞ{ÔMbcï]1–Ø{Å®(¢b‹‘Þ‹Ôëe¿?6¹œÜÇq‡ðþvvæ-SvßÃÒÓ’œ\Üqÿø!!”™™—ŸŸ¯M§wïÑóÇ´+—/“0ŒÎ`wì覫«Ëçqµh4 …beÕ!„rrqþô1Eú˜B±±±¡ëè|&“E§Ó½½¼ŒML***jkkp„3kkIÖ¾];ÉRÖ66j´ õ ÕÖÖ" #S¨lG ÐhZd2™Çã±ÙlCCC>/‰2³³…B¡½½•¸TnNŽzÍh%HGc<>CˆËãr9>ŸG"a¡Çã±9C„‰D!&“UV^.Y æÆ”C:ÓÓÕE‘Id‡Ãfs8ƒNgèè°X,ƒ^U]#¸\NŧO’¥`n @9¤£±ªêj„MKK„ãŸJ£ÕÔÖ2Y¬êêj]]]¡PÀãñù|P$’,scÊ!1ètG"„s8l‡ÃãrÓÓÓccc‡ B£Ñ˜,“Ŭ­­14З,scÊ!ñÇ…B‘á<G¨  @GW×ØÈˆÏp8œ²ÒRljšb`n @9êìpA&ã8.¸\_ÀÇq<´O=}} …RYU]\\’Ÿ—§««knn.Y æÆ”C:ÓÕÕE†W×|ª¬¢R(¦&&††4-­¼¼¼äää¼¼<*™bgggaa!Y æÆ”C:ãr¹™YYÙ99555B¡ðššŽ*/çp¹F††.ÎÎÎÎÎZZZ’¥`n @9¤£1*•jfjÊçñíÚ!Ga†!dcm­«£c`` ««K£Ñ¤JÁÜ€rHGc6666ÞÞqõÊk•ZÐVŽÆ”ÀýSzZRÓå´AHš6 M#=7fdb^o> 9€¹1MÑ€&h @“@4 I Ð$hˆÆ4 Dcš¢1MҸߩŒKHضswCg>„Ú´u{iyÙæuk·ïÚ“›³có¦¦ÚXgÏ_¸u÷^@¯ž3§M•:õ(êÉÑã'V,]âéá®´|±M3SMbDvó}»x¡—WÝô¼üü•¿ü:õ›I!AHu.$%'oܺ=( ÷ô)“ëž]»qSÚ‡ô[6…>ªÁ#¨¨¨X¼ü;¿Î¾‹çÏÓ Šó.1ióö’)$ÉØØ¨«Ÿßð°0--‘¨’:uÖœ €ÞS&MlІX´l¹³“Ó¹sT"íÄé3÷FR©”};wŠ+ALIIÉòW!„Æ= _?•hl"*°êDÍ×·¦tà‘ŽŸ:=ö¬n]ý¥N]¸tùÆ­Û?ÿø½³“SóR4.c³Ù¹yy6ÖÖ,,ÊS\ZRTTŒ*)-Í/(hª PQY•›—wöü…ž=º»»¹Ižª©­ÉÍËcsØM‘/ö¢‰ü{åÚùsfY˜›«P¬rÈn>mmízKñùüܼ¼šÚâPÒ)ï…«‹KuMuÄ­ÛS&M$“É’§*«ª"Gutu144Ôl„B¢ÞÔ¦±)‹bsعyyÖVV–:ˆS>¤§ÇÆÅGE?ݱe3‹¨d„æäæ~ª¨h¢†ÈË/024R•´O¹yy¡¯^ô–:û8:š8[]]£*MD%¶YÑìõ­)˜¸M0Y¬º§**+sóò8n³R4.#èÿUß cÇ4tvåŠåB¡° &5 Û²}ç¡}{(e‘ª¼(**~#ž9Pkå4€ìæ“‹¤ RÞ5 …xíFÄÛØ8ÿ.~’§ž>{.‰BƒƒQ˨1õÓ”ŠóUhŸIÆ‹™LæÏ¿¯‰‹¿u÷Îð¡C›lã—ŠŽŽNäã¨z¢±'Ѻº:µµLX%ƒ&Øf¥^ßà EõëÆLLLÚµk×ÐÙœÜÜ”ÔÔªªj•è=bxVvö©³çdgãryÙ9¹)©©eeå J–ò‚Åf§¤¦æåç7Q~ÝÊ …32Þ§¤VW7X'"‘(#3+ýc—+ÿqM%0™Ì÷)©Ù998ŽK’ݾâ«Ð>¡‡K¥GE?%aXpP`CêTÛ‹”Fn»ÔÔÔ¼Oi°Û¨â®Ÿð®Þ J Iþq6OÉ1Âçó?¤§gfeñx<%´+Nïž=^¾~Åf6w^RR’’šÖ«G©ÌŠ O6›ý>%U ˆSÔß?e X‘Qÿš½¾5±[ª ÅÛ´Ezà BÅSJ¡m»v—””løcTzl|üÖ»ˆy]†|»x¡ž®nSt… œ˜üþÔ™³Á¶6õ¿H:vâ之—8qèîæ¶ê‡ï,ÌÍ7nÝù8êøáCí%.?üü˻Ĥ³Ç:zLìÅésçÿ:yЏHyyzNþzÂ?ÿ²fõ/Ýü»Èúá§Ÿß¼EÍ[´ØÎÎ.|ïn©Ê¹}ïÞC‡‰ë ÃB‚ƒ—-^H§Ó‰³ë7mÉ/,\0wöo¬+*.Fééê.]´°Y—ƒà8~èÈÑ —¯wk+«É'Hf»P×»Æêrwsë`aýìù·‹Òhÿ¬ã©©©‰÷ññ662BuºSC½hÅ«RÓÒ.Ÿ;CÌ’>‹‰ùmízËކ ^¼r5üð‘ß~^Õ£[7¥+‡@n» >qü¸šššKW¯ÕèìäøÓß‹ßu®øqUUuµdݼ}gçÞ}‡öí±µ±izÅ6ƒÎ@q¹õ„; uã —.:zlû¦ î:‰3Ï]´¤ªºêÔÑ#†!„p?øçá‹W®ÎÚÛÙ­ú~…£ƒƒ\áâ ×oÞ ?|”Éd"„ètúÔo&1¼®‘û†_‹¸9gæô¦Ìí…ݽÿàù‹¡!!âĨ视öî}÷þq¢ìáùÛÚuŸ**çΜþãÏ«+«ªÎŸ:afjÚW9ÙȰ²;‘"£þ5{}“ÛsÔ€‚m*wÔ€lTççK¿JOûðáûU?›šš|·l©™‰éËׯ/_½–_¿×N©5CðKÏœ;ËŽ»¶n!î ’<ˆ|ô×ÉSþ]ü† B§k¿KL:~êôæí;¶mÜØ»×{÷£¢£ÇŒId®¬¬|ýæïÞ={êé鉽¸zýÆ¡#G»uõ6T ž½paݦÍ|>_$Ê–š0nlûví¯ß¼9}êG{©Êyüäɦ­Û¾]´P_O/êéÓk7"j™µÖüNdà ø¥ee?ýúûˆ°¡}}òòòwï?°aËÖ.}õôô”®4Ùùëø™ó¼<=G F&“/]½*µ\ìB]ï” oŸã§N¿|ý: W/"åéó¡PH¼¦DŸ×˜Œ^ÔÙ×çÍÛ·É))^¡Øø>ŸŸ•]^^nbb‚úûm,BÈ×Û[9;%‘Û.<ïÚ6‡=wæ ;[Û„ÄÄÓgÏ-ûáÇcáutt |>_R¦P$äóù"‘©¨bëåá£G!;[©tݸwÏžûÂ=~-ŽÆˆI‚q£G‰‡Ûã'O0„ÍŸ=ËÆÚ:þÝ»3çÎÎÊN¿÷àáö]{ºtîêÿU_%lckc3~ì˜ã§N_¸6d°ÔÙWoÞèèèü±úbêÅ×Û;3+ëÕë7!??==½ÇOþ‹Æ?‰‰Dûÿ÷9ŸÏ?z⤭íÚ_WcÏÏ×gÂ䩊ÈGyyxäææ!„ü|}ÿ›*@ÿ<ÑÓÕÕÙ¶i#ñ˜åëãÍf³ï=xø.1Iü5hIIɼٳˆçÔŽ..•UU{ÌÌÊöòôPºÆêm>„Ð鿎ÖÔÔž»pÑÆÚzËúµT*!Ôµ‹ßô9órrsëæ—áâ|Õ§ÏñS§>z,ŽÆ¢¢£©J@ï^u3ËèEÝüýÃyGDcñ ¶66Ù99q ¡!!"‘(!1ÑÛ˳¡…ÏEn»”–•­ûýWb®³¯¾žÞîý®\¿1qü8¹ÂUR±¡÷)©W®_'þæp¸ ï_¼zÅ Ó5L,,Ì]]œŸ<{>Îl"óƒÈG¡~}CÅÅkk™×®éÚ¥ ᬾþîý.^¹:cêÙÂBB¡0üð óõk~#æ5}½½&L™qëŽd4&ÅÆŽ©t…ˆ <{á"“É$n“ÄkÊ¥ ˆ3(8»ÜüOByûö!¾à³'ÝÆRoó99:böwl,_ 9<Œ¸²#„(Êð¡Cš¢N6VV–]\^¼zÅb³BµµÌ·±qþþ]ê¾Ý‹ìíÚ™™½‹#„dddŽ1œA§ÇÆ' „RÓ>°X¬]»ªÐrÙíbee)ùJtðÀ ãÅ«×*4@.1/_îÚ»Ÿø~øÈ‹W¯œ·lXOX+‰ìnXRRò>%•8|øè±³“£½¸¸­5Šξzó·"ÂSÒÒÊ?}Ô¿¿øC:¾rÅòED(Ð[%¡B($(ÏçG?{NŠ_SŠ3(8aÙ?J¦“0ìÓ'|O¥R—-^¼xùŠí{ö¬ýuµÔÙ’’’g/^ddf~ÌȨªª_¹ú†„Dܺýtôˆá%¥¥‰IÉÆŽ!‘þ‹Pó B6ÖV’­--”/ƒÂ¢"„Ô’â°Pâqmmm•¿””Ñ|Äê »ÏÞŽÙÙÙªÖ)¾ í³{ÿ§ÏŸ÷ }þâ_ ¿¦”Dn/êêßåνû'!1Q„ã}}¼<=ãâBD”Öôcbä¶‹½íg•F£Ñ,;t((,T•Š0zÄpñ4†aº::úúú e–ÑC‚þy8*:Ú­£ëû”Ô‚ÂBñ<dd†þu¶¤´Dá…!ëχ˜äÑËׯa;3³¯^YX¨`ͽ­Í£¨'ÿë÷Bèqt´¯··¾x·‡§®žãßUPÍw•kÖ+·þ5{}SN»âŒ9²OpTbøá#gÎ_@oÓ–0ê/Õ¯« ñÍsûvíœ%Ó¥®Jãéá>dàÀë7o>~-™~öÂÅCGŽjkiyyzº8;ìßÿéóçÏb^g½<=ÌLM‰hìQÔlj«ó– !*å³ñ/¹o¤lù2á8BˆúùÆ Ã0ÉOÄ›o¹I½dQ¨ŸYE£Jï“©Zúí ?ù8ª_hhTt´¶¶v¯Ýëf“Û‹ztíqëvü»Äø„wíÌÌ,ÌÍ;ûx¿xõª¬¬<.>ÁÆÚZ%7r¹íRwË--š áÇze¿„“…žžžx¿1ÙÈîÆíÛµsëèúäé³93gŸß§¾×”H^¤­­ííéùüÅ‹é‰:tt°×××?wñ"—ËíÞM•‹Æä’šö!ýc†¤>ÞÿüŽ #ÕÔü·U:Žã1/Ô÷Ä/…"Ý880ð{÷WTTH®ß'xŸ’š™•%>$œõë쫈pw77*…òàó!¶kïþË×®ßlbØ?רYÓ¦í=®’ Zm¬­ìíEE‰_SJžUbxªç*'…"Vvg“QÿŸ**4x}kÊÕUU4¶Mezš~5|âøq……E«ÿX››—Çb³_¾z½uÇÎvíÚõ쮲¥<¡Þ={ôê%¾ôX˜[Ðh´'OŸá8^PX¸fý†ôB@œÇÙÉÑÆÚúê :=80@J ¡¡á€þýÞÆÆ>öWUUuEEÅÎ={KJJB$Œ¤ˆ|âŽRwçC2™züDpP`½Æ,˜3»´´ô䙳'ÏœE9ØÛM›üÍžµ´µ‘okkƒZñãJûCûöJJ?ftiiéõ›·ˆ] B’[i4‰IɉIÉuÓC‚ûõ ]¾dIEeÕµˆ›×"n"„ètú¯?­üñgéo#dx×(´´´zö¼÷ða@ï^2~äJn/êÞÕïƒ&ÆÆâ7Î}}ž<}êïç§æxA½««k-[N2Œ_Vþ ¶êëñc_¼~~øÈŸGŽŠpÜÁÞ~Ѽyë6mWUÅ*‚‚äOP`Rrrp`€ø71cFŽx·`é2âP__Íê_LMM>wæŒòòOç/]:éŸYíÞ={Œ=ª®©}‚ƒîÞqëvÿ¯úJý:­„ýyì/2™ЫgݳJ ÏfºÊ5qÀÊíl Õ?‰DÒàõMÁnÙÜ4ªMez –ž–ääâŽãøÇÉ!#“¦®t®ªªŠ„’Ÿ‹)))yÏåñ¬,;øxy©çYXX”˜Èåq=:¹;ØÛ‰D¢¨è§,«OpxWèºHyŸð.#+ÓÔÄ´{Wÿ«7"ö ?uìñS¾rå'&%ø˜ÞÁ¢C7ÿ.u+'//Ÿ(ncm­¶:‘ Žãï“223étz7ÿ.R‹„¤\ô®9Œ©[céE"tÀ ÿõûjù’ÅñïÞefeéëéùûùI}ÏÈåò^½ySV^fanÞ¥sçº1hsW¬r»ñå«×vï?°sëfbG7)D"ÑÛØ¸œ¼<#Cî]ü¤¶»Td ¦}ø’–†ãÈÕÅYr”fQbxª¿Ê°HΆ®Í^ß”»z«EÚT‘Q2P}4ÖšàóùÓæÌíîï/ùIÿ·ßý“›{ñÌ) ´dˆëòŠ¥K4mˆ*™>g.›Í9uìHÝ_¼ UŽz@¨éMå •JíäÚñòÕk £›¿?‹ÍŠ|?{ÆtM›jâìù 3332³æÎš¡@sј¾]¼HO_ïü¥ËÇOFèóõUí -Ÿ£'Nòx¼àÀ€a° Y€7• ãxEe%†¡¡!L²)(,d02~¶õË‚Åbñù©= ¤•z@ýÀܘB`Vïw PâóŽVƒÁд ÐÒie£P?jÚo ¨ˆÆ4 Dcš¢1MRÏ*þââbõÛÐ6©'kß¾½úíh›À›JMÑ€&h @“@4 I S¡PÈb³q×´!´6äÿNå»Ä¤ÍÛwH¦H$cc£®~~Ãô´hDâö]{²ssvlÞÔk¦ÎšÐ{ʤ‰MÒ‹–-wvrZ8wŽâEXlö¥+W>z”“›‡ã8ƒNïìëóÍ×_;;96‡…J ’j@ƒÈÆØvn^žµ••e‡â”éé±qñQÑOwlÙLd%¥¥ùM´&'7÷SEE…4D^~‘a#~ù»¸¤dÙ÷?æ¸wê4aìÇ?ff>‹yñòÕëõüîçë««þ޽ríÆü9³,ÌÍ•(®’j@ƒÈƾ í3iÂxñ!“Éüù÷5±qñ·îÞ>thóئIpÿ}Ýú–/ëÿU_qz|»+W­ß¼õÌ_G©TjÓ?‹‰i¦é@Z>J®ÓÑÑ!ˆø„wõfàryÙ9¹)©©eeåJȯ©©yŸ’š——¯œp>Ÿÿ!==3+‹Çã)¡!ô,æEòû”Q#FH†b!o/ÏáC‡–——?‹y!N …32Þ§¤VWW7$P$edf¥Ìàr¹ŠÀf³ß§¤ ÅUð%¢èÜX]tBˆË­'Ü9vâ之—8qèîæ¶ê‡ï,ÌÍ/\º|èè±í›6¸wê$Îõ›I£G ¯k侃á×"nΙ9½Þ¹½Û÷î‘0l̨uO :ØÌÌÔÌÔDœóÀ¡ÃDD°ààe‹ÒétâìúM[ò ÌýÛ늊‹BzººK- DýðÓÏoÞÆ"„æ-Zlgg¾w÷ok×}ª¨œ;sú?¯®¬ª:ê„™©©l|Ñ(=|ô!dgk#•þ òÑ_'Oùwñ6d®ý.1éø©Ó›·ïضqCïž=÷…zü$Zå俦¤¦Ž=ŠÅBŸ<Á6ö,këøwïΜ;¿ì‡…444”-œ(~ïÁÃí»ötéÜyÔðaB‘èÜÅKû†›™šJ¹÷ÀÁ‹W®Î™9£¡×¬‰IÉ666&ÆÆuOY˜›>Llí¦­Û¾]´P_O/êéÓk7"j™µÖüNdà ø¥ee?ýúûˆ°¡}}òòòwï?°aËÖ.}õôô&ŒÛ¾]ûë7oNŸ:ÅÑÁ!Äç ***~úmµõàtutäªà‹FÑhì}Jê•ë׉¿9n»Ä¯^1èô°!ƒ¥r¾zóFGGçÕ¿Ðh4„¯·wfVÖ«×oBæ®.ÎOž=Ÿ?g6‘ùAä#„P¿¾¡ââµµÌk×tíÒ!ÔÙ×Ç@_÷þ¯\1uŠlá!¡P~øˆ……ùú5¿Q(„¯·×„)Ó"nÝ‘ŒÆÄ¡ØØQ#ëu–ÏçWWW»ut•]'8Ž:rLWWgÛ¦zºº!_o6›}ïÁÃw‰IžîD¶’’’y³gós]\*«ªö8˜™•íåéáåá‘››‡òóõuh«V§ IDATrügþ/7/oú”ÉÇS\_.ŠFc1/_Ƽ|)™âìä¸táBó:?1¾ò»’‡B¡ðSE%ÿßõOÁÿ<ü>%•ˆu>zììähog'ÎokcM„bƒ8ü×ñWoþ&¢1ÙÂSÒÒÊ?}š1e2Š!„ètúÊË«kjÄEˆP,( wC¡ú÷õ+…,§ròó G #â$‚‘ÃÂî=xøêÍÉPé‹Ïˆã ø ‰%a؈aaUÀJ=GDD„øïÁƒÿ™ú=b¸x Ã0]}}ý†„–””<{ñ"#3« °ðcFFUUµøóàÀƒŽŠŽvëèú>%µ °PŸ_w‹êêê°Ñc½<<&Œ‹¢~n0…BÁ0L(ŠSÈdrCZêE2¿ÇQêk2¾”_Å_/5µµ‡Žu°·Û¶qƒxBèm\œdž  }ÃSRSE=ñ÷ó#–ç‹)(,”<Äq<¿ °Y;E„"„ŠJJ$%ÄÆÇggç{=ºu èÕ !4xà€7o=|ô8ôóXPL@¯žÇNœ|øèñÿú}%u*æå+„P'·ŽÄbúJLQq1Žã&&õ,ÿW5¨@³¨øw*ËËËE"Q¯=ÄÑŽãi>Hæ  À0lçÞý’ë÷ Þ§¤ffe‰Ÿ>©¨¨ðë쫈pw77*…ò 2Rœ‚ãø®½û/_»N|³‰aÿø;kÚ4c#£½Ãkk™õ:6xƒN?xøˆTtÈf³Ož=‹aØW¡}ìílõõõD>‰Dâ wî?@y{zʯ,Pƒ 4‹Š£1 s öäé³Â¢"Ç ×¬ßþ1C(Ôü»”ÞÌÔ´“›[JjªŽŽN¯Ý¥$P©ÔßÖ®KJN®©©‰~ö|ÛÎ] :}dX˜"Âõôô ˜”¼?üÏÊÊÊŠŠŠ½ó²³ëÎoéêêÌŸ3»¢¢"üÈ‘z144\¼`~UUÕÜEK.\ºœ‘™•“û(êɬ óòò‡ä`oO&“ÇŒQT\¼nÓ–â’›}ûÞ½ó/ÙÛÙõìÞMÁ#ÂĆötU‰ Z2*~S©¥E[8oîÎ={'LžJ&“…Ba@¯ž³¦O ?|dô×Ã÷î!V ÷ LJN 6ªdÌÈoãâ,]Fêëë¯Yý‹©©‰‚ÂçΜQ^þéü¥Kç/]"$ôîÙcÜèQuMít÷þƒˆ[·ûÕ×ÝÍ­n†~}Cétúžýö…'R©ÔqcFϘ2™8?ftiiéõ›·ˆÝ×Bv¶¶k]­øZ1[[„ЊW:8ØÚ··n†¦« %ƒ¥§%9¹¸ã8þñC2BÈÈÄ<""¢‰K ‹¹<®G'w{;‘Hý”Åbõ "v¿|õÚîývnÝìåáQ·¸H$z—“—gdhص‹ŸŽŽN£„#„Ò>|HIKÃqäêâÜÑÅ¥)¾ˆD¢¤ä÷Ù¹¹<ÏÌÔÄËÃÓÀ@úcÒ¼¼|Â$kk/¯ÆÆI‰IÉ>¦w°èÐÍ¿KCyš¨€K³Dcr™>g.›Í9uìˆx ~€¶‰ŠßTÊåìù 3332³æÎš¡€º£±£'Nòx¼àÀ€aajV ÐQw4våÜ>_Pwé@ÛDÝуÁP³F€–ŒŠ÷Eýsc"‘(555??ŸÃá¨\¥¶¶¶¥¥¥««+‰DjVETÝú©Y]ëS¤AÕôQÍ´O¥h³Ž·J 5Û&õïpáääÄb±zôè!µ×—J`2™111 £cÇŽ)))ͧHƒª[Ÿ"5«k}Š4¨Zƒ>ª™¶ã©mÖñV ´fÛ¤þ¹±ÜÜÜAƒÑh4§r•4­{÷î·nÝêØ±c³*Ò êÖ§HÍêZŸ" ªÖ j¦íx*E›u¼U­Ù6©?ãr¹4Mò—ªUŽã4˜wmVETÝú©Y]ëS¤AÕôQÍ´O¥h³Ž·J 5Û& ~SÙÜ7uõ(Ò êÖ§HÍêZŸ" ªÖ j¦íx*E›u¼U­Ùi0“ì ÍŠÚiPuëS¤fu­O‘UkÐG5Óv<•¢Í:Þ*Öl#@4оu­O‘U·‹{ÛñTŠ6ëx«Z³Ñ(úÔµ>ETÝv.îmÇS)Ú¬ã­hÍ6Dc è P×úiPuÛ¹¸·O¥h³Ž·J 5Û°?€&¹1Pô¨k}Š4¨ºíŸA§c¦i[Z _nkB5ÑXvNÖóçOé F÷®=ÌÍ-eAc»Z.ž-Šv#usÄ%A ÕEE…OŸGS)Ôξ~ÖÖ6ͧ¨‰@4†ÔÛ)·oÓçÍr6làÛ( J¨Vo¼z#âÂ¥Ëß/ÿÖËã±e5ˆž¦}øðÛÚõR‰ ÝÂܼ_hhï^=UdZó¢„ã ‰‰·l“L!‘HÆÆFÝü»Œ6LKK‹HܺcgVNÎîm[Ucè¿ðx¼ÓçÎß¹w?¿ !¤¥¥åíé1qÂx_oo%4“aë7o)++ÛºqƒjÅ6ŠÞšßLŸ0mò7MÒó/uqq^<žü¬_þàUA4–‘ñ1æåóñã&äçå=‹y:bبFYÐØ®&ÂD\Äý¯8 ÇEJÆŠ«~ñ*¦k—®:Xž=¦G·ž‹ÿZfÔò©k±½‘ÄçcŸ>ýwÈã)]'-¹7ÖÔÔääær8Ü/ë1] k¹\^Nn®•¥¥­­8±²²2úÙóGQO† ¸âÛ%*µQš7oß^¾z}á¼9ææJ QÂq‡›“›kkccmeE¤°Ø¬Ò߯Æ=ŠŠÞ½m q /-+Ï/(Tm7 …KW|Ÿ˜èáÞiðÀ #''÷ö½{‹—­XùÝŠþ_õUDˆª “ªÿÒҲ¢"ÍvûÞšÙ99••UÍTEy&&& ×øàm"MÆ22>¾x3yÒ*•F¡iTZc[¥Ñ­Xg[ ÷?›MÓ¢éêêMž4å¯ÇpoÔ-°F-jSÇ++û°vmYT+7—ammä¼jÍÔTåŠFz£ê$|½Ç[}4F<Îlñ!†aEÅÅSfξqëÖ˜Q#l¬­Ud`=—<}þ|ÚäošRÕÊ”Åq„Ѐþý$'9ØlöòW¾~ówÄí;#†"„†0U_gî>x˜8vÔÈåK—„†a3§O8uÚνû‚h4š|)*2Lªþýy®énÿE´f³VQ£„kpð6‘&Ec™™â›_AaރȇýúöWóý¯)CEñ‚AA!÷îß—Ë+*.b±Ùf&¦¦¦&Ê)MLJF Êd2ʼntmí‘ÆüópJj𧇻dþúëüsÃdåü>ŸŸ™M¥P,;t|Rõ¯«£ƒa˜änøŠtc‘H”•# ­¬¬´ÿ}-¨4_Dkâ8N ^]]=k«z¯\áõ6‡X¸B64fð*⬌vd±ÙÙ99zºº2®T²»_]”Æ233^¾~!¾ùEÜŒèjnnA<Ü(NS\÷? ó}‚C#nFHÞqWð(WŸÏ ì‹&ÂE†0 ‹~ö¸QÞÉÍœò!I_×ÀÂÜR%‹de«ã••ÅMêõÍ7‘HŸÏÌÉ”—››ë 7ujï˜ÅgȾ”Þ¨žgƒæî l8D¸}ïÞC‡«««B$ ^¶x!NW0À°áÇ«©©¹tõÑdÎNŽ?ýð}d•‰Æp!„×)+ ) BˆÁ`§bãã·îØE¬s"aX`@À·‹êéê"„JJJ¶íÞóòÕk¢¬yûöß}»Ô×ç¿%P •ýá§Ÿß¼EÍ™¿ÐÎÎ.|ïnõ9Žðºeq'SÈ!ï¿—ÔâÊ9vâ之—ˆŸSD¹»¹­úá; só —.:zlû¦ î:‰EÍ]´¤ªºêÔÑ#u¯^ž¡´¾_õs;3³Õ«V¶33{óâì… ùùûwí$“É«ÿXû1#sáÜ9žEÅÅ»÷í_ýÇgþ:Fø"£ì´É“­­¬.^¹:ÎlGG%?NR-F"„ìíì¥Ó#ýuòTnÝÆŒÉ ÓãâãÃݲ}çÖëC‚ƒö…ŠzúL|ÿÎÉÍMIM4a|½½z]ºzmÍú £†ëdogG¤3èt{;‘HDÜAe×¹¤@¹9ï=x¸}מn]ý¿;V(8uzßÁp3S“ºõ_RZJÜS‘ÝX„ãååå?ÿúûØÑ£ºuõÏÉÉݼ}dž-[»töÕÓÓSM{4fjÍc¶lñ";;Û·±qÇNœ$¯¡¡¡láDñ†š#8ð³(v\]¼`þ˜‘#ˆHHA¤¯\{d·ãÕë79Ú«GqcF Âc'N¬Û¼™Ïç‹»¶âU eæÆ>~Lù:fÚ”T*­  ÷Úk¡}¾²²²~ýæU»x/Ooo/Ÿø„8ñß²kªe¾’´_üw?ÿà kׯ† ëÐÁzò¤)GŽý) ”VDÀår…"‘d(¦EÓÆ0—Û¸uÓŠd¶0·451ËÊÉHKomi«­M—[D9uŸž>u3¦öΆƒƒ + CHTY©­¯ÏŽ‹ÓïØ1;:Zq×ZloT¡„–Ó*RïÌŽãýKOWwÿ®4 Çqo/O6‹qûvBb¢§»»Ü „œ’ÒÒí›7ùûu‰D^úúz[¶ï¼rýÆ×ã”üFU9O‰7±qñá‚#â´ªªê7oߊD¢m7P©TÇÃÕÒÒ:|`¿®®ŽH$òõñ622Ü{ààý‡‘=»wKIM:hи1£…B¡[GWÇO9›_Pàìä„’Qvàÿúgeg#„|¼½ìí;³Ûlj"IÉÉW®]'RØλĤ¯^1ŒáaCþ•ùOOxý÷ߺºº›ÖýA¤{¸wúðñãó/q735íäÖñÉÓ§sgÎ D=ˆ|„êÿUßz ëìë³|Éâ}á‡Nž9{òÌYcãÎ>>~}{÷ìÁ`0ÄÙdÔ[ÿ¯úŠ “›S(†9biÙaë†õÄ+H_o¯cÇß¼}wëÆõRõ! !ŒèùŠtã¢â⥋Ž>L ØÛÚ~ª¨Ø¶sWfV¶ÔËV%šF‰"jkÍÚÚÚ]Û¶vöñ&¯þ–í;/^¹:}Êd„ á!ÍôïjÇ÷ ¿tåê’óGÁåþ÷Ÿ”ÛHÁ+Û‚†Ú±£«Ë±'ì7­ûC("„:ûx7žP®H÷“Ñj îþŠ7@uMõ½ûwºwëN¥ÒBwîÞvvr±¶²áñx ïâ—,ú6á]<Žã’׋\E2øÌÎÆ PDu½¾ðxsþ‚øß­»wKJKÝ;¹µoßN$1™ÌØøøÐà`JÌf³øB(éý{ƒA£RcããÓ>¤óù|×'8èä±#®..8ŽË.+ˆ’@ àóùjuG¡g1/víÛOü;täè‹W¯\]\öíÜald$©Çñß~þéÑÝÛDƒòù|&“YV^.àóq …¡!ÁÅÅ%É))D©ÈÇQ®..V––õªæóùƹ{ãú¦u :”¦E»¹aËÖQ&^¾vÈ#»Þ$ “›3%5­¼üÓÐAƒˆ³|>_$ýúóOCª[ÿâxE±nŒ#„¾ íÃápÇ331A …BeZä iM„½·§‡ÔàW‹ á²›CláÞ/]¹2jÄp‡#»Æd^¹öà2Ûñ]RRUuõð¡C9Q\(úßÿï~2hô›J}ƒÁƒ‡Þ¹{ËÄØÔÊÊfâ×SöØmddììäâߥëÎÝÛý»tEIþý%Ò/Éï““ÞÍ›³!”——ó0òáàÁõ¼Àn,\.—x·-Åh4-‰ÔàC€²0™L‘HÄæ²+ª+´´´Ý;y±X¬¿ã^[YZw0WÁºiItll¸¹¹ÚÆÆXYÊÊÂ0Œ„ãT #éèðÊËul½QV] 76GolÅÅ%!+++\âþaaÞ^|Jn;{É7Ë8Ž[[Yæ4»õ1iÂø¹³fŠkkkoݽ·c÷ÇW¯ZYPX(‰Þ¼}»ü‡•’¥H$REE%‰Dš?göŽ={§ÎšmogëáîÞ½k×.}‰•+²ËªÇ;L7V¼^Ã0=]]]]]6›MLHÂb±JJJŸ¿x‘™•UPXô1#£ªºšF¥gƒvï;ýì¹›«ëûÔÔü‚‚¥ Ô"†ËåbÖ½k×Þ={R(”ܼ¼ÛwïbXXîÝïÜ»÷òõ›[wîÞ¸yËÎÖvÓÚ5ÆÆÆrËâÿ¼n®O_e£Ã`H|'ˆãxMMM½òÏ_¼ô籿´µµ}¼¼Ü;¹öøÉ“'ÑO ÕÆFFîž<}:sê”ÈÇQd29$8¨^«x<Þ­»÷ìmm½½ÁA²=’1xB²í‘‰±1B¨°¨È½“›8±ðßY@Ô˜ŽZ—F¯#àñxöŽC†„>z$''“FÓZöíò»÷¥Ê.(FAE2 6]‚âEÒÓ?ܽw‡¸ùåäd>zdÈ0{GOÖº.ÅiÑhÃ÷í?°{Ͼ»voÛ¾sóÖí·íؤMÓRÄ<ű˜, ôµ´ M¨­ˆ›×“’ ³¶²Q|Š‚ê F÷3g>ÌÉÊb™›s™™©™™=Ξ0ªR½Qµ½±¡âõ¦ÛX[Ü)¹8æîƒ‡!o//E2Âß§¦¦ü(Îð,&æÓ§ŠÎ¾>Ê™ÚTOë+K&‘BBÀÔÄÄÊÒòaä£êêjÖ¿ÜÒÀýÈÈ„wï„ ¿pé2›Í®®®æñx#‡#“É¥ee8ŽË.+6^iË›£‰ëª(/ÿ$‰{÷Âq¼¶¶–Åbq8œ”Ô4I ½za¶çÀÁOý¿êK,Ù© †a~¾¾ÇƦ¥§KzúìŽãn®ñÆÔ›Üœn;R©Tâo‘H´gÿÁk7"ê©ÀìÆRuˆò ú¥´&B(ùýû̬,q 1xýýüp—+\‘æ ÖxÍž>ÍÄÄxÿ¡?kjkey-sð*⬌vtïäF&“ï?üÌZâ³¢„Üî'%£1ǹ\®£ƒã°¡ÃÃÊÎΤR©_ÿúö›r J:ÜÄnªœ% FEG3ŽJ¥fgg†:4lèpGGâ5¢JMž4}Ñ‚oëþûfÒ4EÌS\“ÉÔ¢i˜<öìڵ˽‚ºwëÉf±åú¢„:‘HD÷ó럀ûø¼KI‰¼q#)/Ø?!îç×ÐÕY E¸æzc»¢rª›»76TöúÍ›û†Ký«®®þzÜØÂ¢¢[·³X¬;÷ï_¸tÙÑÁx¢Åq\nBþÚ›ß%%UWW?‹y±c÷^6jØ0¥­UÎS\¼!ftuuBù……B¡pʤ‰……¿¯[Ÿ››Çb±^¾~½c÷óöí{õrvr¢R©g/^Š‹O`±XÅ%%Ûvî …Ä=[vY±ñUÕUšq\~Y„êÐÁ‚F£E>~L¬’É/(\»qó‡ôtPX]]MäÓ××÷ôðHIMÕÕÕ7t½_ÞýðÓÏç/^úž^TTü!=ýÜÅK[¶ï4625b®@½‰ßRÉÍI×Ö6tȻĤƒ®¨¨üTQ±?üPVvöàñ:õ/Y% vcéÊRêS3üËiM„•J]³~cRòûêêê§ÏŸïؽ—Á` Šã¸\ár›C]‘H¤¥ VTT>zL–×õ^Eœ•ÑŽzººCú;6öèñ•UUŸ**vïÛ_\R‚†+ÔQDÉýÆx<ž³³Ëˆ#÷Ø?éë¯k™,F‹ØHåp8œO))ÉÇŽ;f¬³³K£ö;‘Ke¥šð2™Ì¸øØïý¯ÿÀ  >L&SjÛbÕÂçóTªûöíÞ ‰D‰D€ÅbáÍðB zcsóôyLÝđÆ9¢¤´ôÒ•«‘ÓS IDAT£ˆD{ûÍë׊§ååf@…†„TVU~ûÝÄ¡ŽŽÎºß333m /ïˆÝ,ÿ:qjÿڧ¸¤äð±¿b^¾"ÎÚX[oøc ™L&“É«W­ü}Ýú+W§H6tð áC‡+d”Åqœø‰½ïWþdoo¿× ø©T eÅÒ%·nûfúL2™, ƒz/œ7w÷¾ý&OÝ·k‡µ••H$êœðî]ß` Ãð:.bœìÞõdž‡Ž“Lïèê²zÕ*}==âu›ìz“,(;'ŽãsgÎ(//¿xåêÅ+W‰ ÁÄ.V2ê_‘nü%ÒôÖœ8~Ü«7o–¬øŽ840Ðß²~ÑpŠ—Ñ’ZpïݳGÏîÝnÞ¹Û7´O§Ž÷Qd2™\\ÉÅUŠ«5rÔÕ«—«ª«¿žðµƒ½cc—s5ÖG¥‘«ÈÚʺ¨¨páü%<¯ªªª¹ÕyjkkÕ i¢7r‡ ¡Jt.“‰+»Ô¯%÷Æo¾ž0ûóeb*++¹\î’óÇÏåríll}¼½X,–xÍŠÜ !:]{Íê­ ‰‰32ôõô»wíJ¡›e*á©G§N¯ŸEs8œºO)ýú†*ª««9Τ ã‡ôæï·.ׯÊÊ×Ç›Åb7æ®]ü®]8_ZVf``ÐÉ­£™©©øgd—uuqþsÿ¾ÔiÌ-”¾n(QÐßÏïõ³h6›-¹º.[6¬#“É•••_…öñïâG4¨·§—­5dz0oÏd±Û™µ# ø'úì*{õŸÏwt°¿púdjZZúÇ &“©«§ÛÑÅÕÞζ¶¶VëÈ®7±ars†ýñëêôŒŒä÷ïquêèêìäD¬p—ªâ+<Â¹Ýø·Ÿ¢R©b×zõèñúYtMMMSt¶ðÖ|Åáp¦O™ü6..;'×ØÈ°{×ná„Ë8ŽË.£9î\¿ÊçóÅw.—»eÃz*•Z]]]w•³‚ƒW®=²ÛQ(lY¿î]bRzÆÇv¦fÝ»u={á"BÈÌôŸÛý¢Isc<ÏÆÆöÛ%Ë1 c2™ª] ^¯ºOŸ>5«Šº˜··øvé ‰Äd2Õ3ÑLÌ™½€ØaEm¢šÞØȽ¬3™L}ý¾!!† …ºñ·Ü ¡šš''7WWÇy<§)@ÐPƒr¹\ÉÀ—Ífkki…I~­Æãñ0 ëâ×™˜ …’¿À(»¬@ °·³uvr …êü&ƒÏç+ғŦr¹\#$0؉€HïÑ­±qy‰¸}§ƒ……«³³Üû@ ¨¬¬´ìÐÁÆÚš˜zueÔ›Ôׂ2r¢¿.´´°°µ¶&´‹3HÕ?…L–üJÙݸn¯ÖÈõ©·5ÅŠÜÝܼ<EjV×úiPµ}T3mÇS)Ú¬ã­hͶ –ž–ääâŽãøÇÉ!#󈈈‘#G&%%eee5}{ÙºhkkÛÙÙ¹»»s¹\--­æS¤AÕ­O‘šÕµ>ET­AÕLÛñTŠ6ëx«Z³mR46xð`ƒA£ÑH$Õt)‰$÷®m>ETÝú©Y]ëS¤AÕôQÍ´O¥h³Ž·J 5Û& ®âg±X*Ùì_.jS¤AÕ­O‘šÕµ>ET­AÕLÛñT ʼnD©©©ùùù0õ¢N´µµ---]]]‰±Úl7nkÀ^üm”´´46›=hÐ MÛÒ†`2™111iii;vÔ´-@K¢1€6Jnnî Aƒh4ÇÓ´-mÖ½{÷[·nA4ˆh  Âåri4šÊq Žã4 Þ’ÀÂ@€¶ l.ª Ú)`n¬µñæí[\„ûwñ«{*//?!1‘ÉdšššúûùéêJ¯)-+{Çd2ííì|¼½0 S‹Éh   %ÑX«Çñ{÷ùz{KEc8Žïܳ÷úÍ[â+/ƒÁøîÛ¥A½Åyî?ŒÜ²c§xùˆ§‡û†5¿3 µ€úh Zð¦²õð©¢b÷¾yyùuOݸuëZÄMo¯c‡ÞºzyÚßuŒ5ë7|ÌÈ 2dfemÚ¶ÝÚÊêÈÁý7.]œúͤw‰I»öíW¯Ðh¬5Àf³ÇNšBHKKKýv 6`n ZµNœ>sôø ;[ÛÍëÖvñë,yÊøŸ—’Ÿ}>YUU…224T§‘¨ˆÆ %ÑX›àæí;Gþ:>tР…óæP(ÒÎ`0Ú™™efeI&ffg#„ìlmÔf$´M kýà8þ×ÉSööKÎoèÇŽºuõ¸u;7/ÏÚÊŠHyú,†J¥vöñU£¥¨˜€–Dc­ŸœÜ¼Ò²2¶fý©S}|ˆÏ*G~çî½[¶ýúÓ*cc£ˆÛ·£Ÿ=9|XÝß² 5Ñš¢1>ŸÏãót:üÆ.ðÅQ4vìÄÉÈÇQ2Š}¿ü[bûP å“_P@üOü! N'¢1k+«ï—/Û¼}ûè¯'’H$‘HÔͿˬiS5`.-›ã§NßøB¡ؽ³î‡>Å%%Ëø!4aìØýû©Áwæü…;÷ï"„´´´¼<<&Žçãí¥´Ìk7".^¹ª£Ã8°{WÝC’”œ¼qëö €ÞÓ§L®{víÆMiÒwnÙdØðÞí»ödçæìؼIµ†j¦þhÌÈÐØ!$‰^½ych`ÐÑÕUœA>µk‘è?º{[*±g÷nuëÜÙÇûõßoY,–£ƒƒ§‡{óØ@ B‰¹±ÊªªœÜ<„PÌË—ARg£žDgkjkþ÷ÛØËׯ/˜3›Øp§±…Âo¿ÿá]b’G§NCdÐé9¹y·ïÝ[²â»W,ï×7T 9¹¹ÛwïqwsëÚÇq©C%Œ”«‹KuMuÄ­ÛS&M$“É’§*«ª"Gutu‘Š!„JJKë>i_õGcaC‡ LüÍf³áìì´~Íoj4 ÐFFFÄÅ  !0„!„tuuE=©=~­§«[S[«àëÂ’ÒÒgÏc¦MþF9cî?Œ|—˜4vÔÈeK …BÇI$ÒŒiS&M›¾kßþàÀÖX9¹y8ŽÏ™5£³Ç“:TÎΆ P(Á×nD¼óïâ'yêé³ç"‘(4øÿìÝw\çðç’–,ÙSˆ¸jˆˆbýIݫֺGµîQw­{ï½µµµî… A@T܈‚2do™!ûî÷Çi! ¬<ßO?–¼yï½ç.w¹'ï½w×]³sD_¦š>§2%55&6¶¨¨¸Òw…BQL\œüÓuò?|xó6&7/¯Òú%%%ocbÓÒÓ+}W*•&$&¾‰-.®|v!„T¢Öã®)èÞÍ3üñ“²²2ù·²³³ßÄÄxuóT¾åª"INIySXX¤xò¨7o`@¿ïy<ž@  …|>ŸËá 0 ´´4&6®ªYÂ÷É)ocbrsó*´JI’B¡°²—TAaáÛØØ´ôt‰D¢äbV$‹ª—O )÷Ñ„†ÝgDw¯nôK U=4+>Ð#PDdäÖ»èRAtóôœ;k†¾ž¬ß´%=3søA›¶m/-å€k‹«W,?|üÄ­€;ôVøo¯…óæÒMõé?pÔ#JJJ.\¾"‘H ©³Ó²E ílme³»pàðQz+d„w÷îófÍàr¹² #~ó¡ àÒ™Óºº8ð!„j—O÷îþ7n>|ôØÇ»»¬ðÞýAt÷ôô¿ñqtÄ‚ÅK‹Š‹íÝ-«sýæ­{÷Þ·ÇÞÎnѲåÏ^DÀÏ¿Ìppp «)8¸T¤Íf@bÒ{ ssY!EQý¿÷ëÔ±£YcÓJgqâÏSgÎ_t}×-–.ú•>¹fÃÆÐ°û0÷×E&ÆÆn®-å_îÚºyÛî=Ÿ<¥'´07ÿuîœ6­k²&][´°²´ {ðpîÌl6›.,))‰ˆŒôðhMß²Ú#`µ«T?4ƒŠŸª 5³±¸øø…K—›ššü:oNcÓÇOŸ^¼|%=#}ÿ®L&S,§¤¤ìÜ»æ´i¶¶6—._  3q²¹¹ÙÆ5«µ9Úû¾pǧ{wú6¤"‘èÊ5¾€?uÒD{ûWQQÿsfÞ¢Å'¤S«{÷6mÝîìÔdîÌúú¡÷ï_¹æ_Ê+ݰz•,$‘X,‹¿¢ËƒB¨ÖQªiÒ8:8ØÙچܻף»—ì­à{aíÚ´Ñýt-6EQ$IÒ'ÿž±XL÷3ÚÆÆæÂ¥ËÓ~žâìäDQT\ü»…K—›5n¼b鳯„‡ÿsî|zFú¾;Ê «¢yvéráò•Õë7 8ÀÛËËÑÁž.çr8Žö$IVœEàÝà“§þêÔ±ã°!ƒu¸Ü—‘‘‡Žß²}ç– ëà‡aÃ,-,Nþgü˜Ñ-š5Ó××—¹bÍڄĤSnåæ–•½{ßþkÖü}âx {zöðþ㯿?}êÙ¥ ]rÿa¸T*¥OS*s±D,þü‘*RR*‹I’”UPéЬø@_“åE©™? 0èuT´l°ùù¿OQ…›BÕ))íÙÃûÏ¿Oóx<:ÉÉÉ}³pÞ\P"ãG•µhÖ,99Ú´voâè(‘H;®­­}ôÀ~==]’$Ûx´622Ú{à ìàRNÛ6ógÏÚwèð©Óÿœ:ý‰±q[vmÛtíÜIGG§ÒY<{ñBOOoÓº5tŽèæÚ2>!áá£ÇtƒM²s²ÀÝÍͽ•EQ²—ö1±qýúö1l¨T*mѼEQþ'#3³©³sMVf¯=þøëï àY6¦Åbyví¢äPI*š«=Ð# RgÜXYYÙË—‘^ž]éOˆÖϯ/¼ŽŽ¦_j±XíÚ~¼q¨––V#ÃF.Meõ76ù,ÞÆÆšNÅh~ÿ룣£óèÉSHOÏÈÈÌôíÙS¾wtð€þðäÙ³—„ÁÀT !„T¢ö€'Š¢¼½º‰Åâ°‡éò{÷ïѵs'¹*Tesù·D"‘Ð=7‰D,óx¼ˆÈHŸîÝÙl-¡P(‹ù|¾_Ÿï úíÛJƒ‹Åú}ûÚÕMëÖ ì׭;s÷î†-[‡ŒuñÊÕŠ³ (jåòeÁ·oŠDô 1ÇËËÏ—|ꮓH$R) R©T,Ë¿Ôf³ÙZZ‘‘qñïÄb±H$êÑÝëÔ‰cÍ\\Ô^4ëæ..ž<)ãó ´”÷"âe‡íõõô”<*IùC³2z¤Aêô¥gdõ2òÕ¼E‹åËñáCý7[[›Áø,Õãr>;Ã]Ž£½½üK6›mme•‘™ ™YY ?†Lö23+[øBÕœ­MG‡Ð{÷{÷ì ¡÷ï·o×–î‘ROFf&I’Ï^¼˜¿h‰|9ƒÁ(((¬j*¡PHÄ·ß|Óµsg‹•š–vóvÀ©ÓÿìÙÀÜ̬ó·ËÕ/++ËÉÉ}øèQÒû÷™Y ‰‰EÅÅl-­jÃc0¿üôõñyøè‘X"¡OSjö¨ü¡Y™=Ò u¶!©T æffÎMœäË›8ÙÚÚ¨G…­Y[›Mè') ´>¯Àb±‚ #A!¤JÁ¶Ÿ&‘H$>ÞÞÇNþQTT, ß¼Y4žl”EÑcTù¹PK(êß·èÊô´æÍšºÈϰe‹æ66ÖC‰D7n8ÚÛ·vo%‰èÛOŽýiT[i³fuêøü,àìù GNœäp8îî®-[ Ð?äÞ½{a÷å{ò*‹¢(jЀþ¾ýöV@Àã§Ïnܺ}íú {ûMkW«¼?×£»×¾C‡ï†„úúø„†…q8œ.¾…šk2º6ôHu²1z³kÞÌeò„ñòå"‘Hís…t7˜ EQé™&ÆÆ@ÿKÿ>ÉÊΦ(ÊĤ¦;B!µuïÖíð±ã÷ÃòùƒQ±#ª¢œÜܪޢ.-[´øyâùr:ͪ˜|°X¬ý‡·õðhíÞJVH’¤@ hÚÔ™ ˆR^i¹IJJKœ8éìä´×ú"ƒÇOŸV6M(665?fô”‰„Báù‹—víÛæü…©“')ÙBU Û·móüEDfVÖÓç/ºuíB?ç &GÀªîX¡ŒÚ8Ð#Ô7fÖ¸±•¥eHXÝwE»ÿ0¼÷÷ýé+Õÿ.!Q¾µ‚‚ú¹Žöwƒe?¹àÖ@hݪUŦBÕ +K‹¦ÎN¡÷îß«â4%ƒ`Èß‹¢¨‡UÕZcSSkë »Á%%%üOï{÷îx7¸b}ƒÑ®M›çñïʽõàÁCŠ¢Z4k^®üÇ$IvëÚx<ŸÏ …1±qÊ,쫨¨>ýž»xI ”””ˆÅâÁ0™Ìš$=òzùôH$›¶n‹Å=>ÝôUù# ƒ`”””È^R^õª®Vmè‘jÞýuÔ#23³V¬Y›š–VÆç?~òtëŽf•¡WÞªuë_GE—””<ß¶s›Í¦*2™Ìaƒeeg¯Û´%;'§ŒÏ¿pöüGùÙøiŒ¯_?§v_+’$ÓÒÒ?~|ûöíË—/_¾|ùöíÛ?NKK“ß½B ÚÃÏé¿%IÏ=""#ß¼éáåE’d¹:öv¶yùùÿœ;'‹ ·íÚ““ ²ó˜E_\YT\DQ”T*;zTFfæÊµëSRÓxeeŸ<ݾk·…¹y·®]* †~¼ãÂeËÏœ¿÷î]VVvÜ»wÿœ;¿yûc#£!ƒ”›…••›Í¾BQKÏÈX»qSü»w©´¸¸ø³à?­ÙKgg--­ΈŒä••egçlÛµ[*•z´n­öj”×µsg.—ûòÕ+}=½o>Ý—_É# ØÚØäøpúì9‰DRXT´uç.Ýʨ=ªŠšcûôöÍÊÎ>uúŸ‡áSoë•Ë–q8õôòìZ\\2sÞ|ú¥ŽŽÎoKÙX[Ó/6477÷êõAÁ9ØÛ¯ý}…|)Þo¬R™™™¯^½200pttìÔ©“žž”––fdd$%%EGG»»»[ZZÖw˜¡ÿ*/Ï®ûf2™ô8§r~9òá£ÇGŽŸT!ôÕð÷÷ïÝ»·ªSéèèp8œÂÂBºsÁ`RUXXHðX,ƒ²²2@À`0´µµ=yš››keeÙ¾m[‰D¢§§WTTDc±XIï“cãâ,-,\[¶.—[XTôìù ¡PhgkëÑÚÏç+±Îb±tuucããß%$ðxeúzzÍ›¹8ØÛóx¼Jg¡­­]PXø2ò•@(ðpw·³µ‰D=æ••uú¦›Íf³ÙzzzÅÅÅtŽ%ÿ’ÍfK¥Ò/#sóò ´lÑ¢±©©zçdnß¾­ä¡–¦ÌP(=yö,/?ÏÒ¢}Û¶¹ØSSz¤X²1M¡³±sf×åL¿zQQQ¾¾¾ATuF’Éd’$`ddäææVÇ"„ê—zÙ˜ª‚ÐÒÒ¢¿ˆÊÝ,žÆb±èï"Ù» CKK ªš¤ªF‚ >Þ3LZñ]Yk²öe5Ùl6A"‘¨Ò¸J‡’»™™TÍÆÐ×M‰3úedd¤§§0€útÑx¥$ A½zõºr劉‰ ž²D¨¡©6ùÐÈ,„B¡‚ ô]XåK¤R©ª70ªØˆ‚w+¶¯8ByÕ.BjPs?ú’‘$ùêÕ+OOOú‡Tˆ®Ð¥K—ÈÈHÔBÕ½/¢oìÏcGjrûfTNzzºžžž‘‘‘òKMLLôôô222lªÁŠB¡ÚðEdcVx‚L£222ìííéû%*I$ÙÛÛc6†PCSg*BÕú"²±:vçQôšcyEeõHm™ù£»»»ª_²&&&Ož<ÉÉÉ©¥¨BuFKKËÕÕ\¡zôÕj5«!fckŽ˜¸ùÚ™×w µ¥7ŒÅb©:Œ¾Jò#ôJ¥oÞ¼Q&þ1TK¾úC­f5Äl â«ÿ‹Å †j—hˆÅb‚ LMMk)$„Páñx………õjØÀ¡Vƒb6¶jŠßoýã ¿Úg(uýα´´”Íf«4UII I’¯_¿®¥¨Bu†Íf{xx(S—¨–|õ‡ZÍjˆÙXÏŽ-ú÷h¯j×ÑÈÝ»wóóó•ÿž%"??ßÉÉ©GµB¨$Éãñ”¼o*Bµá«?ÔjVCÌÆè‡×ÖwµÈÔÔ4>>ÞÞÞ^ùÇbˆÅ⬬,—>Ôjl!„‚¯þP«Y 1ûêYYY½~ý:55ÕÉÉI*•*î!£ŸY™šš* ­¬¬ê,H„ЗÏT"ô%À.įƒÁpssKHHHOO—=¸­RAÐÏOHHhÕªv)#„BuûƾN½ø³[ IDAT¶¶¶ùùùïÞ½“J¥ÚÚÚôèßÁt“É …éééIIIÖÖÖxk"„ ìCèK€ÙØW«uëÖ‘‘‘111|>¿Q£Fúúú\.—I&‘Hø|~IIIQQQrr²•••»»{}Ç‹B5P˜}µ‚ððð011yýú5‡Ã122âp8L&¤R©@ øðáƒP(twwÇ^1„,ìCèK€ÙØWÎÖÖÖÚÚ:######''‡Ïç—Ë522jÖ¬™••ŽC!„êfc_?ƒaccƒ`¡r8ŽP(ÔÖÖ®ï@¡PÈápê; ôÁl !„({{ûØØXLÈê’P(Œ‹‹³··¯ï@г1„j ÜÜÜ¢££_¾|)ê;–„Ãá888¸ºº …ÂúŽ})*ÏÆüýýë8„BuŒÁ`xxxøùùéèèÔw, HYYYbbâ¥K—H’¬ïXЗ‚xíìâJQTBü02±¨ïB!„¼ž!„B¨>a6†B!TŸ0C!„ªO˜!„BÕ§†’I¥Ò2>Ÿ‚B¡/MõÙØŸŸ=aÒ„Ÿ§ …¢Šïæä䌞0iô„I7è’M[·/X²´ªÖÒÒÓGO˜z¯ÚÊ£'LÚ¹w_õ Qµ2>ÿÏ¿O4¹Wßïûä7pðò•«âß%Ô¤MÍÚ¾kÏì¿Öw!„ª7Õgc RÓÒ“Þ?zò¤â»!aa©ii©iiÅÅ%tIvnNFFfU­‰ÅâÔ´´’Òê+K¤ÒÔ´´Üܼê¢ Ù99“§M?vò==ý‘Ç>¬U+·á~™5ûyD„ÚÍ–ó<"bÙï«2³²Ô›<'77=#CSÁ „Bè?GÙ{ñëêêÞ õòìZ®<ä^˜žžni)OV²dÁ|©Tªd³*UV EQ«Ö­ÏÌÌ\4^ï^=e呯^/X²týæ­§O×ÒÒªùŒ²²²„‡ýiTÍ›B!„P¤ì¸±®;=~ú„ÏçËæääÄÄÆuéÔI¾ÐÄÄÄÌÌL¾„Ç㽉MNI©8l«båj‘$™˜ôþ]B¢âgJ<ôæmÌAƒäS1híÞj`¿~ùùùÂÉ ¥RiBbâÛ˜ØâââÎW†Ï翉•H$ÊÏ!„B ²}cÞ^^·ï>|ôÈÇÛ[VvŸ ˆn]»Þ¾(+ܶkwNNΆ5«€¢¨ÃÇŽŸ»x‰NJlmlÆŒ)߬|eÅÖoÚ’ž™9}ꔕkÖeeg€¾žÞœ™3¼½ºUZÿf@ƒ † Tñ­ýü76mlj"«yàðQ:Ib„w÷îófÍàr¹ÊÌwѲåÏ^DÀ´™³íݽríº…S'MX¼|EaQÑÙ¿þlljªx!„jÈ”ÍÆš:;ÙX[ß ½'Ÿß»×Ú½•a£Fò5³²³ÓÓ?„:vòÓgϹ·j5dà&“yáòåÍÛwTUY1±Dœ›—·ì÷Uƒú÷kÛÆ#--}÷þ¶lmß¶¾¾~ÅúQÑoìììLŒ+¾eia1dàúï{÷6mÝîìÔdîÌúú¡÷ï_¹æ_Ê+ݰz•2ó9b¸¹™ùÕë×'ŒëÔÄÄbIAAÁ²•«ílmýþ×GOW·ÚY „B¨!S6o¯nÿœ;ÏãñtuuáÓiÊ93¦WU¿¨¨øÌ¹óv¶¶[Ö¯¥Gh}Ӿ݄Ÿ§¥¤¦ªkNNδ)“‡Í]\ ‹Šö8˜ô>Ù½•[¹šb±¸¸¸¸EófФ(êð±zzºÛ6mÔ×Ó€6­ù|~@`Ðë¨èVn®ÕÎ×ÝÍ-55 ÚµiãìÔ„®Ÿš–6aì˜Q?ŒP~!„j°T¸ß˜·W7±Xöà!ýRvš²ªúÏ#"ÄÉàýeƒåY,ÖÀ~ß×$ÜïäY˜›€X"®X¾‹YM®™žž‘‘™éÛ³''ÑèOž=Sc¾4A Ð_ÕY „B¨aª$_ñ÷÷—ýíçç'ûÛÑÁÁÞÎ.8ôÞw¾½ $,¬MëÖTuƒz”UGùB{µcåp8•ž”¬HOOW‹Å*,*ªª‚@ ‚¾-…­­ü[ôË̬l5æûqîúú:ŸÆ„)9 ø|µ#„B¨á¨¼÷H> “çíÕíÏ¿O „·1±sgÍTÐ4}%Kë³Y°µØê† L&SùÊvvv ‰‰b±¸âm,Š‹‹ûîîæ6rÄpÐb}!‹Å"Bþ¾*Í·\}’¢”™T½ÎB!ôuSíÉHÞ^ݤRé½Cï…1 ÏÎTnlj éééò…™UÞV³<»tAÁ!ß üZ¶hNñ/wãÖ¬ìlŠ¢LL*þ¯†:˜B!„þÓTËÆìlm›8:‡†ÊNS*¨ìÞÊ ˆ«×oÊ^¿yK0U×߯¯—{ðè±rùŸÏ?õÏ?Aôòéáè`o``x7˜$IY…[w u«V £fB¡ÿ4•ŸÞëÛË—‘ocb»wóT\ÓÂܼ[×.¯^¿Þ±{OVvvn^ÞÞßÆÆªªj gMÿ¥¨¨hêÌÙç.\LLzŸœ’zoòôiiéýüú6qtd2™ÃÊÊÎ^·iKvNNŸ3 àìù Ž¿í¨äŒ‚€ªî骑Y „Bè+¦Â.hÞÝ½Žœ8Éd2=»(:MI›?{vAaÑÿëWü¯—Ëý}Ù’ÅËW¨©ê|{úp¹Ü=ûì;tXV¨¥¥5bØÐ‰cÇÐ/6477÷êõAÁÁt‰ƒ½ýÚßW(?VÌÞÞ,^Ò¤‰ãá}{+V¨ù,B!ô#ÞÅE;»¸R•ÿŒL,üýýk2¢¼¨¨XJJŒè—E½ŽŠNLJâr¹;´744TP¹6$ýæmrjªH$jljâîÖªâ Ö´´ôWQQB‘ÐÎÖÖÃÝ]Õ<)*úM|Â;+K«ŽÚWU§†³@!„Ð×JóÙB!„RžÊãÆB!„a6†B!TŸ0C!„ªO˜!„BÕ'ÌÆB!„êfc!„Bõ ³1„B¡ú„ÙB!„P}Âl !„B¨>a6†B!TŸ”zjøËW¯¶íÜ]Õ»sgÍðpw¯¶‘}‡ÇÄÆîÚºE…è¾<›¶nÏÍÏÛ¼nm]Îtû®=É©);6oÒl³õ²,!„*G©lŒÏ秦¥ÙÙÚZYZV|—Ãá(ÓH^^^Zz†jÑ}y²ss²²²ëx¦9¹¹éXuÏ#".]¹öËÏ“--, ž–!„Bå(•Ñz÷ê9rø°Ú å?aÉ‚ùR©´¾£PSVVöƒðð±?¢_þ§—!„új¨)‰$É÷É)$IÚÚXkkkW¬ •J“Þ'SegkS±‚P(ÊÊÎæóËLMLMMM*ŸÏŸœÒÔÙ‰ÅbɦJJ~Ïåpíílé’ü²³s76mljZ1€÷ÉÉ"‘ØÚÊÒÀÀ@¥¥01)’X,~ŸœÌb±¬­¬Ølvå+å“¢¢¬ìl}== ss&“Y±BJjjYY™¥…e£F•¦dMe¢ª¸,5Y3!„RƲ±õ›¶¤gfNŸ:eåšuYÙÙ ¯§7gæ o¯nòÕ^¾zµfæüü|ÐÓÓ;s¦|…ž:sþ‚@  _º¶h±tѯôi5X¹v݇‚©“&,^¾¢°¨èì_9v"=3søA›¶m/-åÑ“¬^±üðñ·îPßùöZ8o®l7>Z\\ ‚ðîÞ}Þ¬\.WɥضkwNNΆ5«é—W¯_?tô8Ç.—;nôOC ¬týääälÛ½çñ“§ôK só_çÎiãÑZV!"2rëŽ]ôIAtóôœ;k†¾ž^Ŧª­YiT‹–-ö"¦ÍœåààphïîrËRÃ5ƒB!õh,KĹyyË~_5¨¿¶m<ÒÒÒwï?°aËÖömÛèëëÓux<Þo«ÖŒ6ÔãuJJêžý6nÝÚ±C{¼|òÔ_Ú·ðý÷\.çuTôý½yûŽm7|œ…XRPP°låj;[[¿ÿõÑÓÕKÄ)));÷îŸ9mš­­Í¥ËW‚‚ÆLœlnn¶qÍjmŽöþƒ‡oÜñéÞ½}»¶rïÞ¦­ÛšÌ9Ã@_?ôþý+×üKy¥V¯Rr)²²³Ó?~  Ú¾kOû¶m‡  %É3ç/ì;x¨±©I÷n•$(+V¯MHLœ4~\ËÍsrs=¾bõšÓœÐÕÕ€¸øø…K—›ššü:oNcÓÇOŸ^¼|%=#}ÿ®åºÐª­YUT#G 773¿zýú„qcš8–[–š¯„B©G…lìôÙ³Wý¯W,ÿûäqƒ999Ó¦L¦;‡š»¸í=p0é}²{+7º¦H$úyÒ„ýúÑò?|8tôXJjjófÍàɳgºººkVüFŸYkÓºuÒû÷Ož>“ŸWjZÚ„±cFý0BVRRZºiñ¢íÛÀü9³‚CC%R鯵kŒŒ`Ú”É3çÍOJNnß®-EQ‡ÐÓÓݶi#Ý“ÔÆ£5ŸÏ zÝÊÍ•n°Ú¥ I¥ÒCGYZZ¬_½’>aÚ¦µûȱãýoܪ˜•””ÄÄÅõñõ•xwöüÅôŒ —¦MààÑcl6{ÏömtØíÛµ544vœ£­íÞª•KÓ¦ÿëÝûþÇ©4 HŠ-Ög‹Ìb±‚¿Ñƒ’³H$ ÍVö¢Â¡ƒ}Ó¡ý»Á/""®ßºuõúuG‡ÍëךÓs773snâ$?‰s§ryUµ5UŠVó5£ÆÖ‚B!šæïp¡ž’ÒÒÃÇŽ7qtضqƒ¬æÅË—œ…‰±1|ê’ÉÊΦ(ÊÄÄXÕÖŒŒ  +'G¾0"2299¥ÿ÷~ògoeìíì&ŽcÇ”ñùW¯ùQÑoö:RXXXPP°÷à¡÷ÉÉßùöªXÙ©‰£‹õ÷™³‘‘e|~Nnîžý¥R©»ÛÇ«Gý0"33kÅšµ©iie|þã'O·îØiffV10Å5GE'dôÅjoÍ „BH%*œ©ŒŠ~ý¦b¹·W7ßž>5ŒC[›=cÚÔ{öŽ3ŽÉdJ¥RÏ.'Oè象?Ž:´wO¹1æêùaØÐÜÜÜ«×oÓ%öök_¡Þp´©“&æç8{áÂÙ è’®;:¤bM]]Ý…óçnܺ}èAôéí;°?úeŸÞ¾YÙÙ§NÿóðÓ89ë•Ë–U|hµ5Deoo /iÒÄñð¾½µ·fB!¤<â]\´³‹+EQ ñoÀÈÄ‚¾>®^Æegff½ŠŠŠ„n-]›8:$v¿¬¬¬Gw/Åcª$--ž‹­­‡»»J GQQ±””Êß`".>>&.Ž¢ ™KÓæ.. ¦-))yùêu~~¾Aóf.Áž““óâe¤P$²±¶RXµ5«Š**úM|Â;+K«ŽÚW\–š¬„B©çËÊÆB!„š/e?B!„PÄÙB!„P}Âl !„B¨>a6†B!TŸ0C!„ªOUÞoŒ$ÉØØØôôt@P—)‰ÃáX[[7kÖ¬Ü#ÃB*Á=!„ê]•ÙX\\ŸÏïÛ·¯®®n]¤$×¼yóúŽ¡ÿ0ÜÓB¨ÞU™¥¦¦öíÛ—Íf‹D¢º HIl6ûÛo¿½qã~G#T¸§#„P½«2 …l6[þ1Ò_Š¢Ølö—yn¡ÿÜÓB¨Þ)zNåûM£(ª¾C@èk€{:BÕ/‹B!TŸõáOR„ÜÓB¨~a6†PC‡{:BÕ/ÌÆjèpOG¡ú…ãÆB!„êö!ÔÐណBõ ³1„ºzßÓÓÓ kkü¶A5\jž©d¤¥1ïß×l(¡èÆ Ö¢EœúŽ!„ꓚ}cÌÛ·™ññ’.]j!$„P¨¸¥­ýï ’| ²ÒÊʈ¸8f^Áဣ£ÔÚú‹¾ñiݨû¾±  –“éà@E £ÞûçB¨©™1 ü­-‰‘••â*qq”‰ pvî$íìDÖIdÿm¯^17oæ±ås]éÌ™‚#„QÉ$ññÌׯ™Ý»‹)‰®^eÛÙ‘íÛKê,æºQ÷;ò¶mÚË— íí¥õB}9ÔÌÆ¨Oj!$ J¥B‘ˆËá•ckaÂÚ éܪ CK‹þ?£¨ˆüR?…ÚCQTYY—Ëe(Ý)xègÙ2©,,ÈîÝÅTNÁzû–9}ºnPÖÁƒ¥Lfù©Ö>z”S@½{Çœ4Ioî\>fc5Gï_²ù~É_&!Tecÿ9e|þ…K—ƒ‚ƒSRÓ(ŠÒárÛ¶ñýãM45¡T*}mgkkldTRZš˜Ø¬iS.—[±Í/wìÙ+_ÂårmmlzõðîøMe§øÒ%`iìzùêÕ¶»«zwî¬îîªNõÇÑÃ5™Dù•I‰DW¯ß¼{7þ]I’ é‰ãw½zõóëËR¸¢®_g/^¬Ã`Ào¿•ýò‹@¾îõëì)St/]b7oÎ?Ÿ_nÂèhVãÆdãÆ$DE1ÀÕU Õ™û뢼üü¶m?5-ÍÎÖÖÊÒ²â»NåèOUÃI”_™ÿáïK–%&%YZZô÷ókÔÈ '7÷aø£ÝûÜ Ý´~­N ÄÂ…:°aCÙ„ ‚rïöí+:|FÒÛ³‡3uª@W÷ßMš¢ :š)ë {ó†Jdcocb#"# '7gò„ñUEE+**NMKkѼY#ƒF@UPPöàahØý)Æ6”®–˜¨Ì¾¦dkÕËŽLQ”DBi<¨Âàó9}ûŠê> „úÔ8“HˆÒRÊÐP£Q}"E›]mEŠ¢V­[Ÿ™™¹hþ¼Þ½zÊÊ#_½^°déúÍ[OŸ<®õéì^M&|—NMš@bR’‰‰I£F ëÓ»÷ð!ƒe/ 6lÙdei9fÔÕ.—ÆõîÕsäðau0•2“(¿2)Šú}ÍÚĤ¤Ñ?Ž3êGY"+œ&ܲcgàÝà½.˜3»Òi/\`gf2Ú·—TLÅh}úˆ¼¼ÄÙÙŒ¨(fÇŽJ¢ 5•YRB´l)•H¢£™ÚÚ”½½T*…Šç4eîÝÏ.Ã<¼ÿà¡oOÅ+&Œ#Ÿô'§¤Î˜;ïÄ©¿öﯭ]ýÆ_óÖïé<!Ÿ¤jÊþýìǹYY `0ÀÃãËúu‡BuIýî"3Sç·ßt/Ö;Ö°eKíS§4Sv¶ö©SzcÆ5mÊzóF™I„?zó6fÈ Aò´vo5°_¿üüüá42aBb¢‰‰‰a£Føþ½³S•ÍÈÈhÕoË--,NŸ=ËãñTšVŠb¤¥eek°N(¿2FE¿ñû_Ÿq£’ïSÔÖÖ^¼`¾¥¥Åí;%%%•N{íÆŒQt™êÅ‹%Ñ©´kghnnܾ}#Ø»—cnnlnn¨%––ÆÍ›UÕŽT*  µ¶²š6e2+˜iUìíl»uí" 323Ô˜\ã­ýø£¾··ÁºuÜgÏX¤&®@9S÷ÁÆ•+ZYYŒæÍ©¡C©¨­[«¹Ž!„¾bêâg„†’Ïž™EÚ½{ëΚ%iÚTòÍ7jB’¬çÏÙwîhÝ¹ÃŠŠ‚O³&B™_Ì71lÈ Šo èç׸±icS“šL(•JOüy Ÿ{–tt,ݳ‡26V2˜z¡ÆÊ¼vã‹Å?ú§Š­1ŒK–¤gddåÛIt4d™–2¦OAAZ³¦L˜˜PEEÄÞ½œN$ÞÞb.·Ê òÙó…EEú}oanÞ¼Y³/ Uï9„`` ¨ÛUƒ­U·‹1^½b¼zÅÚº•kbBùøˆzõ{{‹ ÕìÊzóF‹$að`jÖ,ò›o$W®§O3ùüòƒöB¨áP8åç'00 ø|`ªÆ=z´DÅlŒøð¬À&>|P;˜¨è7vvv&•e!–C¨á„E=ˆ€´´t33³çB¡¨´”'žGDtìÐÁVÙd  •›+Ľ{§83ôð¨´\Ò±cñ²—”–VÙêÕ êÝ»‘§§ÎÒ¥¼ýûUˆ¦Î©º2¥Riô›·Í›¹UÞ)ÕÌ¥i3—¦UÍ./ŸõêÄÚåjº»K{ôÀĉxù’ÉbÁï¿—±ÙpïžÖÞ½œ!C„cÇ*ê¹s÷.øúø€·—gLllð½{ûõS0I9EÝ»ÿà^X˜g—.ò›å³IIIïSRœš42p€’×üVÕšÚòó‰³gµÏžÕf2¡C±¯¯¸W/Q‹Õ_Ù oåJéêÕÄÔ©¢V­ø¥¥R‰„ Põ©_„jÔ7Fê鑟Î[ˆ­­µXIIJü (VT;0}çëùsPxòC™KßÅbqqqq‹æÍªŸµº²X¬};wäçç9jòøq>ÞÝ?yºhùo«Wü¦|¯˜ }\,,,T\MÔ§O¥åÒfŸ,éÖícyË–¤™ûÚ5ÙØé³g¯ú_¯Xþ÷Éã ®*¨tª{vÑ'UDÕ•YPP(‘H¬,,?/,ˆ~#_â`ogcm]nZ’±øãòxÖUq]ž 36–»?;0‘­ö|+ EÀbª¼,ªN˜”ô𦄤$6›m]ÝmZ+ÅøüfKU)=qB™;\Pru(ccFNQ\LUqZÊÄØ¤bÊŸîÿT•J§R¼ÞªDù•)>0&.nùÊUò%“Æ«x݃TQ‘•ÅÐ×ÿ7—Ò×§.•½LNf®YóÙÅ<‘œÌ:ôãU~Êdca …Bºc ÌÌÌZ6oþæíÛ¬ìl ssÚÛÚÉÎf’¤4%5íEÄË-;v.œ7Wv‰·W7016vmÑâÖ@Ù˜2­iVz:ãÄ Î‰mmªkWñ€¢¡C .tOÂB¦îpAdqè¾& IDATfÙ¬™âI¨-ÈåËÉo¿%nÝ"‚ƒA¹QçÕ†¡§§«ÅbUUA ¡­]þÌ”ª&&&±Ùlºÿ&1)ÉÞÎN½»TÐsÔÔ¨ yDI ÅáT•Š€oO5®©Tcªj'Q~eè@nnž|¡k‹Û7o¤ÿ...^±zmU3jÑBúè+,ŒÕ´é¿¹› ƒý{?…Ó”mÛ¸/^0y<‚¢àùsæ¨Qzð䉋ӦéÀÊ•|'§JÒ2újÊGOž¼ŠŠ¢KJy¥E‡ü8b¸‚U1zÔÈr7R9vò?ÿ>mgk;úÇ‘t‰ì†j:::EEŠzU•i­ôK99Q}úP¾¾Ð±£T™Ñž²noùB¨aÒÌÍEY/^€dP%cáåI¥R¾©©dôhÖøñZR)¸y“¸y“xÿ¾†ØÙÙ%$&ŠÅ⊿þ‹‹‹ûîîæ¶sëfµ'ümÕšÈׯD,8ü(++€þC‡Û¡Ãb…§*zÎMT»³ZDi)##Cìë«Ùf5NÕ•i```ffõæ@ ÝÍÀÀ@v»Úøw fçå%~ôˆuá‚öøñUùzòäß¡°ÈÉadf2€Í†œIB~>ajJåä0>žú,§  àEÄKÔ´tùr‚ ªÍÆ*õÈ¿þ9óäÙóŠùS^~ž…¹…¦Z«!mmðô¤¾ûŽìÓ‡rr’ŠÅârç•$•Bt4ËÕûÌB ”ú×TÊþ%Äb­ëשÎù]ºP•©äH¥R©T A°ºvÕòöÖÚ¾GܸÁ¸y“xø°Ü±NÉG¦xvé|âÏSAÁ!ßùö*÷Vøã'вEóšL8à{?Ï.÷<䨲E__±X¼yûŽÿ}×ÛÃÝݬqãjÃ+·D×oÞd±X:ª{ýi´‚‚€¢&h¶YScevëÒùü¥ËW¯_6xpÅw„‡+˜ÝèÑÂíÛ¹±ÎŸgRÉýE ˆ£Gÿí7]µª æÎÕ=yRûÂ…ss26–Ù¹s£qã‹UyÝ_PH(I’ãFÿTî’‘_fÏyó6&1é}GA–C?V$*Ÿ>ŠD¢Ô´tW¥¨ÔšŒªýRÖÖTŸ>TŸ>”··T[[Bg`EEªå§wíÄDæÕ«Z×®1srô¯^Uÿ:„úOÓÀíà9üAˆDÂ={ÄÕ¥bò(Š‹ÅeeeEEEEVV¼©S7oŠ32¤§O“£GƒÂq6õ÷ë«ÃåPŒ³oŸ¨±Oõ·­_j¬Ì¡ƒéèèÿã}ÃXy1qqgÎ_P0; rÁ>üú«®üIZn.ã‡ôéë.åEG3MM)ss> ssS”mÞ½Ë`0zt÷*WÞÃË ‚T¼ñØ­;‰¤E³ò?!BÃî³Ùì¡ÕuB+ÙšJ˜LèÒ…Z³Fúü¹$!A´}{™·w±DRTZZ* éŸXªEu‹=p a§N&gϲÀÔ´þŸ ‹BõEýqcôO[VLŒîþýâ‹Kmm)Õ¿‘i‰D"‘ðù|‚ ´z÷ÖòóÓb±˜Œ›7)CCe~¸Κþˆ-[§Îœ=jÄðvmÛ2™ÌĤ¤cü‘––Þÿ{¿&ŽŽ5œ09%…$ɣΠª6å= ”›÷qÀSqqñ‹—‘ùùù­Ý[Mž0¾ÚiUW ÆŽŽ'_Â9|˜âpx{÷V5 -üñãË]œ•¹k¼¦¨º2Í7^4îʵë§Ï™3°_¿.:™˜?x~îâE¯®žA!! &Ÿ=›Ï8{V{ð`}ooq¯^bkk’χgÏXgÎh“$=Z:q¢ž¬>EÁÛ·ÿ>‰ÎÆœGKMK‹‹oצq…{ptïæ¹ïà¡»!¡Ç­êR‰+×®Ó±@‘dJZÚóúúú? ÿìYFB¡ðÜÅK«–/ÓÓÓU°°J¶&Oñ.ö¿ÿI~þ™Ù³§T__*‰Äbqa¡š{:mÛ6Ý/aaÐÑ–-)SSøç‡CÇB ”šãÆ(æ³gzë׳$·o—˜™I5qEQ"‘H$ËÅEËÕU,*¾†ŒoO.—»gÿ}‡þ}.µ––ÖˆaC'ŽSó ék !1ÑÜÌLñA‘ö**J6¦[[[ÛÎÖfÄÐ!¾÷Sü”kóÓ„1rr>þEZÁÁ¬çÏ)=½’ó硺‹æ¢¢ßDEWòxo¯nu™©±2=»tÙ´vÍöÝ{þ9wþŸsçéB]]ÝIãÆ Ð?5=MÁ´ ìÛÇkÓFºq#78X+8øßµäå%Þ¸±¬iSé¦MÿfÉÉ hÕêcIt4KOrp¨r; ¼ >=ºW|ËÄĤU+·ÈW¯£ß¼usmYéäaÈ¿Ô×ÓëÖµËÄqceWb@ܾø6&æ×¹sª}üCµ­©jêT>I’b±¸¸X3ÙR@—ǃví¨‰É!C¤wïÂéÓL¯´ú)Bè+E¼‹‹vvq¥(*!þ ™XøûûÓïùV=œ›­sýº¨S'ªC>Ÿ¯Æy ðóó“/!I2úÍÛäÔT‘HÔØÔÄÝ­•âçH*?aBbâûädooˆˆŒ‹Åß´o¯ÁeQ3:šõò¥Ø×—TqøZýR{eRõ6&6éý{±XliaÑÆ£5›Í€2>ŸÉ`VûTG‘îÝÓŠg–•ææd—.bGÇ9VQÁ`€¾>ééŒkרžžbúágÏj%»ÛEÝ{E’dëV­”¼é«Jüýýìéµáüy“ýûY»v‰Ú¶-‰Dwîèž?Ï9p OÁ$÷t„úš¨™1 6›MŸa¬£H+ƒßÑÕPÝgcÚÚÚýû7Z¸°¤];>êa6†jàÔ7&•Jñ¹r}êø^_€¢ dóe0¨&MH¼ßB¨!ÓÌýÆBH=½{‹úö%•»4B}jt/~„ÐW î÷ôï¿—::Jèù …B¡PѳØB談}c¡º6iO(+wµ4B}ý°o ¡†®î÷ô2<1‰Br4p/~„B!¤6ìC¨¡Ã=!„êö!„BÕ'ìC¨¡Ã=!„êö!„BÕ'ìC¨¡Ã=!„êW•}cç ¿%£P(äp8õBÿm¸§#„P½«²oÌÞÞ>66ÖÅÅE[[».R’P(Œ‹‹³··¯ï@úoÃ=!„ê]•Ù˜››[ttôË—/A]¤$‡ãàààêêú…ÿ¬Gè ‡{:BÕ;â]\´³‹+EQ ñoÀÈÄÂßß †‡‡G“&Mtttê;ÈJ”••%&&¾|ù’ħ« T¸§#„P½«¼oÌÏÏþC |™¿˜ÀÊÊÊÊʪ¾£@èk€{:Bգʳ1’$cccÓÓÓ¿Ø/h„ãp8ÖÖÖÍš5c0¸=#¤)u¶g}Å»°ü¢Õw,èKQy6Ççóûöí«««[Ç!¤</<<<..®yóæ¸=#¤)u¶g}Å»°ü¢Õw,èKQy6–ššÚ·o_6›-‰ê8 „4‚Ífûí·7nÜhÞ¼9nÏiJíY_ñ.,¿hõ úRTž …B6›ÃfÑEQl6›>¯Û3BšRg{ÖW¼ Ë/B´*ïpñÕl÷¨Á’¿ÅcÆ ù&“iffæãã3eÊ.—[“–.]úüùó[·ni,\¥©÷U.‰þ>söVÀôŒ ÐÖÖnÝÊmÔÈÚ´n­R;ë7oÉËËÛºqƒJSí9pðíÛ˜½;·«4•Ú^EEmܲM¾„Á`uìÐ~ð€ÚÚÚtáÖ;ß§¤ìÞV[ûû¬y òòóÛµm3wægÛamÏWº\3£'LêÞÍsü˜Ñ5i¤*¿ÌšãâÒtÖ/Ó4Øæ—œüó¯éSîÔñ›ro9þªÿK»4mª¸‘zÜðPƒR£lìÙ³gaaa––öûï¿ëééi2´Z ‰âã㋊Šè¥KOOONNÖà·INNNppð‘#G‚ƒƒããã›5kæääT±š®®n¥3U^HHÈ¡C‡Ö¯_ooo_‘Ë”••ÅÇÇ»¸¸8;;Ó%¥¥¥¯^½ºwïÞ•+WnܸÁápǦ@VVVBBB½üÆUc¦R©t΂…¯¢¢Ü\[úý¯ŽŽNJJêÍ€€Yó,ùuAï^=•o*77/3+‹ŽáÙ‹/_1ígK ÅSåçHËÈP>rå[®”@ LIMµ·³³µ±¡KÊøeññï^D¼  Û½m väæå§gdÖÒ‡øæmÌ‹—/ ;'gÊ„ ::\Ù[µ:_ÅêrÍ$§¤ÕÒb¦ed˜˜˜h¶ñ/9ãñÊRRSù|~Åi‹ŠŠSRS…BQµÍÖㆇ”ecç΀\¾|Ùßßøðáš ­ÈŠþãØ±c$Ijp7»qㆯ¯/“ɤ_þôÓOóçϯXM$I¥R•ÂKMM½qãÆ’%Kj)òrF޹hÑ"ÙËÒÒÒ¡C‡ÿñÇ“&MR›bAüW²±Û¯¢¢†<Îl‰DALš0nÔ¸ñ;÷îëÞÍ“Íf+ÙÔïË—REÇsÿáÃñcFW}RTùÈ•o¹r}zûÊwÌðùüù‹—<}öÜÿæ­Aýû@ÔÚ1øNÐ]ðöò  ½÷à~ïžr)omηu¾fju1ë>ååů]›Z–šªckkêåÕtéR¶©©Æg¤Â´Ÿ†Tßl=nx¨!Q?“H$.\prrÚ°aÃåË—ÏŸ??lذJk$&&VÚQ¤L…øøø’’{{{“ŠïJ¥ÒØØX©Têìì,;•&S\\¯§§çââRné ‚(w‹g­•––ÆÅÅ5jÔ¨ª8¯_¿>zôhÙqW*•–••UZSÕðèáJ²–5y9å"g2™Ë–- ~øðáĉÇF …111l6»I“&²S9²¥“H$oß¾¥(ªiÓ¦?2Pø‰çå奦¦6jÔÈÎΎŪr.G/Ó¨è70°?'+är8ƒ 8xähLl\+7W%›ÒÓÕ-¿ºà³Õ%‹“’“µX,k+«rIEQR©4éý{Š[[Îç+S^¥-K¥Ò÷ÉÉ"‘ÈÚÊÊÀÀ ÚPI’”ÿè ‚˜4nÜÓgÏ_½ŽØï{êcTt¡P”•UÆç76155­d÷TžT* ±µ±™5}ZphhÐÝ_Ÿßþ|¾J.I’ï“SHRjcS~Õ•ñùÉ))úzz6ÖÖÊ„W—k†¢¨â’’ôôt==}[›J«¶qÅ[”JÁTªâ ùaa/dzíÔÉmøpíÆ…¹¹¹‘‘÷:vô8~ÜÄÓSƒ3RmZŠ‚ ;KJj*¯¬ÌʲQ#¹Í©Â†ô§£¯¯¯äƃPµÔÏÆîÞ½›——7uêTssó:„„„äææšÊýܱµµ7o^AAÁÁƒÅb1¸»»:t¨é§óôÕV€û÷ïÏž=;))  F¿~ý¶nÝjhhS§N}ÿþýºuëÆŸ’’†††[¶l8p =-I’kÖ¬Ù·oݸ³³óÂ… å—nîܹiiigΜQ¦µ;vlÚ´I(@çÎ,X0bĈ?þø£ç§Ÿï%%%=:yò¤|^¢`5*ÞðáÃCBBÀÇǧyóæÁÁÁš\^¥‘ÓOU@PmlpüøñU«V€®®îâÅ‹§N*ÿ™Nž<9++ 5j´uëVY¨Š?ñ´´´ùóçß¹s‡®igg·k×.Oå¾ÐÕø*×f³ !1ÉÜÌL¾þßûuêØÑ¬±éüEKbãâ.ž9M'…ÂÃW®]omeuüкòùK—=¶rùÒðÇOrrr6¬Y½hÙòg/"àç_f888Ú»®^¿~èèq:çãr¹ãFÿ4tÐ@øx¼€ˆÈÈ56åç瀞žÞÜ™3¼½ºUŒ¶Ò–o8|”þ áݽû¼Y3*M€‚Ê?z&‹ "‘ðßmãSž:sþ‚ìq{®-Z,]ô«¥…Ź ?±}Ó×–-eMM9»¨¸è¯ãǪºâé³ç………Ã224tmÙòÙ‹ôG_n¾Õ.ÚúM[Ò33§O²rͺ¬ìlÐ×Ó›#·êþ>söä©¿èGP»·j5æÇ‘‹–ÿ¶zÅo;´¯÷5CQäÃGÎ_ºL÷È::8,]¸À©IYýª—U¨j‹úøÇh÷9™Îœ âe$С]»œÜ\ú‹~ü˜1t?Ê/?O™ùË4 Ú¾k›kË][·lß¼©E³fû ¹wn¡´´tŪ5#‡ûãØ‘•¿-cÄÆ­Û*íp­ØrȽ{›¶n·07߸vÍÝ»¼jÝzU×C`Ð]ptp,_~7øä©¿Ú´n½}ó¦ƒ{vO41&.nËöàÝÝK,‡Þ «œ’šÛÓÛ[ÁE©ÁÁàëãC’dÏÞR©4ä^X¥5«]4’¢òóó—ÿ¾jðÀ;²æ÷ &sÖ­ô–vùêµÃÇŽwh×n÷ö­Û7o"X·y³X,VõzÙZZ3Á!×oÝž7kæþÝ;'—–ž>oÑ’ÂÂÂj§)Þ¢dö8xî⥩“' 2DµÅVÅ»µkm;ubJ$â¼<½6muê¤çáQúü9£¬Ì¼iÓwëÖÕÞ¬•¿pérX±tÉÞÛG vïþýy UO"‰®ú_¿~ëöœÓ÷ïÞ9yÂø÷É)ó-‘ï>GH=jöñx¼7ntîÜÙÚÚš$É~ýú-^¼øâÅ‹&L¯–žž~éÒ%’$;wîldd4wîÜ#GŽÌ™3G™ +W®äp8¡¡¡†††$IvëÖ­qãÆË—/?wî܈# 55uóæÍ?ÿü³D"iÙ²ennîüùóß¾}Û©S§üüü={ö4kÖìÚµkôX%Ÿ:ÄÆÆÊ~ÉN±ÑÁTÕZ»ví6lØÐ²eË3gÎÐ'›ºuëÖ²eKøüW×õë׿ÿþ{º]¸mÛ¶#GŽT\{Ïž=+,,T>¼víÚÅÆÆ@×®]]]]%‰f#¯ø¹?}úôðáÃtIYYYxxø;wôõõ'Nœ¨86@°jÕ*GGÇ .Ð5éò?ÿü³ÿþ 6lØ0aÂ:ÔÌÌÌ¥K—ÆÇÇ·iÓFñ'Þ»wïÿ³wŸqQÀ罃4)" ]D±€`k¢ùk,1jÔF“{±{Tì½ÐE¤H)Ҥõ}^LÜç<Žåúû~xq7·7ûÛÙ™ÝawvîÙ³g¸'Çãñ¼½½ ‚ؾ}û«W¯ÜÜÜ(êªàvI¤‡§Ç’‡ì?pâô™§ÏôðððêáÙ¿o „Pooï=¡û“ž»:;#„’’Slm¬s_å%%'ô÷çóùÏSRzxz2™L¢!D#ÂÑ¡[Þë×!w7[›æææý‡wîl¾e}0ÞAžînA“¿¼~óö__„›ÍþáûcFâr¹6]º¼}[±+do~AƒÀ}mL(g‡sðÈ?ÚZZ{wnWQQ!ÂÝ͵±¡ñÚ͛ɩ©8`‘E”öâÅÅËWpJcSSJjZüãÇãÆŒ~_†ÿ]oHxúTKKkãº58ÝŹûËœœ¸øGAt22êîä;oÎlœÕ½ð„а!ƒ[Û±qÝÝÜŒŒ ù|þßþ;÷„„GF=Š ½¯·âlZIié‹N7]eUÕÖ;_å½vtèvôø ;[›ëÖàÓm÷ )_"„Bt=QpÉÔÕÕíܺ¥‡‡;ŸÏwsqÑÕÕÙ¼mÇù‹—f͘Ž¢È!Äãñ¨kŽpϾýa/ýðý‚‰ãƒ¤øß¬eá´¦26ÖyÒ¤º[·4lm¹yy4„øïÞ©éè4&%é8:¾Ž‰¿aJÑ„ñEÍm»vïÝ@裺úºÿ2%ˆý‡Ž¨ªª Ý«¥¥Éçó==Üõõõö„î»{?|ØÁänÅ_,+/ß¶i£·W¼wtt´7oÛqñÊÕ©S:ú°iÐÁµzmŒ týúõ†††/¿ü’ÇãabbÒ»wïÇççç“Ë „ìííš››9NSSÓ´iÓtttîÝ»'Î555111AAAxÆÆÆéÓ§#„ȶ1iÒ¤¦¦&.—Ëf³ÍÍÍB\.— ˆèèh6›ýý÷ßs86›Íápš››Éûe‚A öKDæ_YY9{öl‡Ã!bÚ´i‚Y577‡‡‡6L07sssQB…ÇårñiƒËåâµË0r!ø£[·n-oõêÕwïÞõðð¸y󦩩)ulÏž=+))™1cÞ(‡C£Ñ>]VB=x¿3d/þ;pøHüãÇݺ…ìØn ¯/X¤Aüõûo·o’;º¾¾þmE—Ã!‚Çã ð/--{‘‘¿åЭ›Eçέ•vlÜæ¦¦/†Á‡}==WgçÔ/𳨂ëgÓZ]'CC„ÇKIK«®©ØÔÔ„#çñx#‡§j ,„µµ»« yT1l˜¦¦&¹i™ÑVB¡=¡ûÂ.^0!h{ 1[V}~¾ª¡!ª¨`'$ð’’xü/ˆ¼ñùóAþþ**,ò°3ê‹á¡´ôtB`·â×VV–^žB{çq©Ãw´|›òÆQQQ8åÝ»wA\¼xQðv[÷îÝñ (ŒF£ÙÙÙá!Am.——Ççó###ñä[$:^VV†_kjj Î!X¿ BÝ>¼„`O9µLk¹áÁX‚ãß ‚°ÆŠŒŒtww×ÕՌ᫯¾úùçŸ[®¨¾¾^Šðä¹H‹/þî»ïðk¦«««§§×ØØ(òQPAx‚« ¢_¿~4 ïhCCC‹%*¾ÒF½Ç Æßÿ½lÙ²¾}û:99õîÝ{èСþþþ,«ÍÍ‘Zss3FóéÕ«ß¾L&³ °ðæí;'NŸÙ½7ÔÄØ¸¯Oï¾>>W¯ßhjjJMMãóùîn®=<<’ž'#„ž'§ „|ZLt$iêlnN¦áîêB—®®.ƒÁhQ\mG^ZZ†²°°¬f¦&äG­ùjÊdrŒFÓÖÒÒÒÒ¹ëÊÊÊãâã_åå½).ÉÉÍ­®©Qy¿;øúî yçäàž™YôæÍ ¿§¨?÷#"B1$<}†Sjjk ‚ˆˆŠþrÒD)6M]]MMU•\†ÿþ^¦sçÊ\p(½dlmlð­y2ü—‹\XdnøÈH§Ó¿E>¦„oÞ¼Øò!Ǻº:Ô:‰ÂC-n/Ê$r‘ttt:uê$˜!9´KPËØðU΂!ÁƒƒÁ*%ò»mîñ¹sç6ìôéÓ÷ïß?qâÄÑ£GÏ;gbbÒÚ†ˆ Ul6ûÆí;6]º¸»¹²Ùl<Ü[_OoÆ×ÓzxxÌ_üÃ{÷ûôîåÓ«×ÅËW’SS“SSMLŒ {xzÄÆÅ•¿}›ô<ÙºK#CCr{‰÷Ñû›b\!Äb1%,.ªjÄω!ãƒ])Ï£( M ]ç)výÙóaþ£¦¦æáææÜÝ)hì˜Èèèè˜Xœ¹¾¾‹s÷èØØ9ßÌŒb0þZ[oÕ»wOž%jjj½1ÿ_´á‘‘S&N\¯˜›&Ttdáã2§Ó>ø:‹ÅD­ß¾WpÉ0™ ¡0TUTÉM Î¼ÍÅãñ‚ÿ^mh`0{Þü»C‚ÿþ«µíuË2ö÷›–ÖÙÕ•­Âd2ètŸbšš––”ˆß0¥¸˜„¿Ááp[‡ù|^WSSûþ7îîähaÑYÔ9EÄÞÁ—«% AÒ\»xñ"Ç[µjÕ÷ß/˜>`À€G¥§§“c½É‘æA999¦ÿQ,€O±={öüóÏ?—ijjj9¹CKøn]vv¶««+™(xYN|8ž×¯_÷îÝ›LÄ0‡o퉟§ ãÐfä­!¢Í ÷á ccc³²²f̘AýÝ6÷xss³……ÅŠ+þøã†††}ûö­X±b÷îÝÿý·¡Rc2™{÷èáááîöÿ;ˆÏç755ÙÛw¥Ñhx܉‡›« ‹•ô<ùyJj>Ÿïáæ†zú,1%-m¸±ÔÅh ¯‡Z\¬JJN~Ÿ8rd{â724D—&–”–a$jšAâìúÚººƒGÿéjg·wçv >ŸÏãñ%$f2x`Àö]{22³"£¢ûôî­©¡ÑÚ+"*šÏçÏ5sʇ—ÁfÍ—’–ö*/ÏÆÚZ&›†·¨ŠKJœ»;‘‰Åï¯BÈÝÍ"‡Ö‹äƒµTTTòù|¿þý‚¨««khhhjjÊÈÌÌÁ¯_?¶;t_eUÕ°!ƒñtÁ"…GDÒét¿þý…)ƒ „£¢·NœMkYtèý57çîN ãîýÊ¥§Øz…• BèEzú«¼<2åÁÇ••UÞ^^A´™¹85 9›;k¦¡¡ÁÞkëêÚÜ´Ö6¶Íbájhøœ>|ÿ~~^^ƒ©i³]½®î«7o2_½êsæ WCCV+ý]Š÷>O#CC‹Îï‡GÔÔÔ‡»÷Æ}‹QèX—ž™™“Cfƒ÷NOªÑ«­†€‰{cÙÙÙ‰‰‰ Ð?v•4zôh:~ñâEÁiâçÎ_UUuóæÍ¥K—ª©©Í;W°.¶¶Çûå—_òòòfÍš•][[{ïÞ½%K–XZZŽùÿ#R[VnüÚÌÌlܸqqqqË–-ËÏÏóæÍï¿ÿþìÙ3ÁeZ{-”¢¯¯?cÆŒ¨¨¨àààŠŠŠ²²²åË—ã_¸‡qëÖ­Ñ£G žð×oݺõ›(ÿþû¯táUTTÈ6r‘¨+ulZZZ3gÎŒÿóÏ?ËËËËÊÊðÄ%xR\‘9“)Ô{ÜÍÍMUUu×®]±±±µµµxî1.—Û¯_¿6ãlssD°-ÿí÷³çÃ^fg—””¾ÌÎþ÷|Øæm; ôõ'%‚Ïç÷éÝ«°°ˆÏç»:;ã­ðòôxŸ¯¥¥åèÐM ŒBª®©&B]Mmlàè”Ô´}UU½«¬ªÚ»ÿ@Þë×£FŒY\ÿ¥P_þË™ ˆ©S&—”lزµ¤´´¡¡áÖÝ»çÂ.ØÙÚâK#¢¾/Ö®Çë177SQQ ŒÄÃnŠÞ¯Ý°éev6—Ç«©©ÁËéè踺¸ddfjiiµºR‚(((ÌÈÊêéÕCKKSè#ß~ýètzDTŸÿ߸/17¢è´µ´G|š˜xäØñwÕÕ•UU»Bö––•!„h¨•F¡À’A±X¬¿ƒ7¤½H¯©©‰‹Û¾k††Æ¸1A´™y›5Šx¿t:ýÇ… «ªª9ÚÖvµ²©b” ŸÏW÷ò–œLxx¤dd„_½šVXÈô󖜬îåEÑA—tEÔ_ñÉ¥Aðx¼_O{S\¼z]pAAaCCã„„í»v›š˜øýwl>֭ݰ)%-­¦¦æÁÃøí»ö¨¨¨L;¶Ñ€w*/\¸€ÞO3&ô‘Aÿþý£££zõê… ª¨¨ÀS „tttNœ8aaaA^þ¥^`òäÉ………ÁÁÁ·o߯ ØÛÛŸ>}ºåh³–ø|þ®]»ÊËË=zôèQ„¦¦æ©S§ÆŽ+é&óùüµk×nß¾}ûöí!ggç?ÿüóçŸÆ3ܸq_pß2=((hÒ¤I…çè舚8qb÷îÝïÝ»'«ÈeB(¶Õ«W—””ìÝ»wïÞ½xÀÀ@üKêmfE±ÇY,Ö¾ýöÛñãÇãètúŒ3fÏžÝæ³Ò±ïjºkçšõ9*˜îèÐí•+u´µqèåÝ!ddhhjbòߌ žžá‘Q>½z‰¬¥Ö]º „–­øÍÆÆfïÎíóæÌ®¨¨8ñÒù‹ÿMÉæïç;i|¾Q"¡œ'*+/»x)<ò¿Gmlml6¯•Iq±˜Ì¥?þ°aËÖÿÍšÃ`0x<Þßþ çÏÛ²÷«éß„ìÜniaÁçóø'§¤ ð§øE¬ˆèh„ÐA[Rt´µ=ÜÝž%&½HÏLoϦñùüïç}WZVvêß³§þ=‹²³µ™7gö–;UÕZýñµ¿d¦}9åñ“'?,ý¿ÕÕÕÙ¼×7q2³FÑ¿oŸ¾>½¯ßº=xÐÀíßv‘8—ÅrÞ¶ÍɤÓé|>ŸËå644bcÈ ¥ee‡ŽþóðÑcœbei¹~Í߂м«~÷Ó/ÿKÑÔÔ\·ú¯NŒätŸZvVZ×nÎAä¼|Ò74½víBhèС"¿ ®®®®®^__/r–&“YSSÃår-,,¦Nòðáô´4}}ý!C†¨ªª’…6À«{ûömDDDcc£½½}ÿþýɇ˜´´´X,9×+BHEEEKK«¶¶Ÿøi4š––V|||ZZ𦦿ðáÃÕÔÔ´µµñå}„›Í&ÿnun8+§¹¹ù!CBBBV®\ùäÉCCÃÈÈÈ‘#G ¶F‹¥­­ÝZ¡³Ù캺:‰Âc2™©©©ÏŸ?·¶¶îÝ»·L"ï,ê7=pä­ÅO^cJJÊ“'O‚ðòòrwwÇã[ W˜6÷¸ŠŠ ›Íމ‰)..600èÙ³gçΩç]¼sçΨQ£®]»ÖZ}¦Æd2µ´´2³²²srëëëµ´µ»9ØXw©««#w7ƒÁÀÏÒ’Û¥¦¦¦¡¡÷2NÁ#—t:ÎóUÞëÌ—Yæ¦fÝqqeçæ¾HO'ÔÝÑÁ¾kWñ‹K(ZÁœBššš¥ee‰ÏŸ777[[uñpwkhhhm𓘻^[[›Á`¼{÷NUUõ]u5ÎÜÝÕ­‹•%›ÍŽ‹¯ohôñöVQa!„®ß¼µ3dïžÛº¶þ$¯˜‡uuu¼^œN½iâ4Š”Ô´ìÜc£N>½{9w~Oè¾Gu55¼"KÆÀÀ ©©‰N§?KJz_` ¯çÓ«7BùÏL›™SÔ(}}}‡#8¤][[›ÅbµV£(´³e)fE¸%ÖÕÕµüßFCCCMMÜpuuõêšš'OŸ557[YXxz¸744à6NîV„ÐcÆ>lÅ/K“SSsrsu´u|zõb2RüïDnš_Ÿ$‰{câí 6°X,üO>…‹¿F§ÓY,Fãñxâ\_Âd2ñ£‹xêÁðsXmŽÌe³Ùƒ Æjq8œ‰'¾|ù299™Ï竨¨H=ƒ¢øáá%q!È$òöü3G›` BˆËåJz §Øã4Åbáÿ°y<^›› “s“Éd0ø9¿šDäZ\B¡ åÌ`0˜L¦Ô͇¹§ð¬]!< nÈóýÐÔÔtìÐy\9nÓ8Îw y÷ì¹pÞwd£XöÛï…gŽÿ#«8Û_2ø¨ˆÃ:*¶™9’]jÍGÑ“ˆ8'Ü[8ï;ês–˜ 7Iÿ;•bÂõµ= ˆsÒ¥€§@lmÕâä ¢¢âããsèÐ!mm퀀€úúú‹/ÆÄĬ[·æÈŒ“kx‚KÊ*r©QÄÖZŠø(ö8AÒu|ÛSŸÛ³-"×.Ûâ¢ÎGN'c¬åž"÷ι _ååå¾zµhÁ|9 ݦ±X,W—ËW®j¨«{{õhhlŒŒŽILz¾pþw2Œ³ý%CqT¤Èœ$«Õ&…’÷ŠÄ?Ñ´yÎ@ RÎþúY!bÛ¶m¡¡¡[·nE®\¹ò»ï¾kO?L>ÞÈÁÇîø©Ól6{ðÀ€1£F*¦[ &‚ –ü°XWW7ìÒå“gþEéêêÎþfÆø±cÓ(:lÉ”HŽ×ÆRSSñ¯ÈI½@ÇÁãñÖ¬Y³iÓ¦òòrf``Àf³EþxsGóñF.[E5û”ܾz™Ëã©«©‰œ"U¹8Îüoçü¸ðûªªw4ÒÑÑQd£èÈ%#…OæÚ˜8ÂΜb2˜!ðé‘coLOO œD´Í:‚ êêêêêêðP ÁÑÁÜǹlÁTÁðœ½555ÊD²QÐét‚Pt£èÈ%#…Ϫ7¦¡®þ±œ³ÀGGŽw*Û¼ÿ1>üñ¶Ã7rð1ú(fTRJ£ø(Jˆô1ž³ÀÇBî£øè > ŸÕµ1ä§Õ¹ø€Àµ1ðY€ú €<Àµ1dzcà³õy€Þ2!úN¥šššÔ“ËÐA477«©©!¨ÏÈ”ÂZÖ'Ü„ÉM}m¬K—.™™™ÝºuÃ?DÀG§¹¹9++«K—.ê3²£°–õ 7aÁMÝsqqIKKKJJ‚ÛÁGJMMÍÚÚÚÙÙ¹¹¹ê3²¢°–õ 7aÁMSv, £ý«át:ÝÃÃÃÖÖVCCCÙ †††ÜÜܤ¤$>ŸõYQXËú„›°à¦);ÐQˆè);$€ÏÌ7 LÐP&è(ôÆ” zcʽ1e‚Þ€2Ao @™¤ïq8œ††‚ d ø@ÅP ×ÐØÅþ ƒ–ä #J$úw*)°Ùì3çÎß¾{ïMq1BHUUÅÕÅeê”ÉnnrO^ŽŸ:}÷~8‹Å Ù±CUUEèÓ²²²%¿®D}9yâC‡*#À<*Æåk×/\º¬¡¡±wçö–oÛô×ÚuŽ×oÞàÛÖŒé-X»acÖËì›7êééQä³q˶òŠ·›Ö­•n+䪡±1ìâ¥ûù…Ah¨«÷ðôøßÔ©ö]íÈe¶íÜýº û¦âd(i!‹éâ•+/_]¶ä'g''Áôé›¶m×ÒÒüså CCC®Q:GŸŒ¢X`Ù’Ÿ®ß¸¥ÈúÐfËêÈõS¹à8/&q#!ûddfîܲY®‘­Xõç7ÿû:`€ŸÌ3?söÜÛw|ûõ3ó¡"¢¢;¾ôÇ\]œe¾^qüµvdׯx<Þ’_W9v\WWgÆ×Óæ};{èàÁ/^¤ÿôËò;÷ïË)Jy¨¬ª*(,Ì}•ÿøqËO#cb kjj›œ[Ivmìîýð”Ô´q‹Ì#§Oýjî÷‹v…ìõ÷õUQþÿ£#ÓÔÔ ŒàÛ_(=2:FKK³®®^)QÉIII郇g|=M™‹S1$ àu~A³fL÷òôlù¶MÆ{{y©««ûûù]¾zíYb’wO/ÁbÄñùüAþþmfµbé’–9¥#bõºàâââåK~6d0™þ<9e銕Á›¶œþç‹Å’(OI ¹=2³^.]±’ÉdnÝlgk+ïÕ‰iÌèQcF¯GŒ ²·ïü÷_‚Ë(²>ˆÓ²\#ròYç%%ÃHGG£mÞ¶ã@Èn&Sâ{ƒ˜Ì[>[Ivm,%- !D­0CCÃÀQ#ëêê3³^ ¦s8œ—ÙÙ¯òòØlvˬx<^NnnzFfMMMk«kllLÏÈär¹dJ~AAFffuu«_‘Hÿ¾}%!Ä`0D¾m3ø˜q~ýû!„† ˆº)´@TL,Fó=œbÿ ¦P×mD¹dUæÆ¿HϘ$x E¹»¹Ž ¬¨¨xð0žâë"#”´¥ö2;gé¯+èt†È®˜tÍ\N¡¶Ô²> Y·b’8-K(ž†ÆÆŒÌÌ¢"Šl©­RjÌe»+%:ÎSF]2í [)E$Åa„Çãeçä¾ÌÎYy¤8³×××§gd¾ÎÏom¼šlëÃÄ qy¯_Ÿ<ó/õbRœñ¥Þ_øl%Yß÷‘ ‹ »XY ¦5ªgV–ÿŸxåúõý‡ŽÔ××#„ÔÕÕ¿ùß׃ƑŸÞ¼s'ôÀ!¼‘t-ÀßÿçÅ ÕÕÕñ§­]WYõnÞœY¿þþÇ»êê³'w22J|þ|Ëöø† FóóõýiñBm--‰â0`Àí»÷ââã‰Q1±4ͯÿÛwïµð†-[Ã#£Ž:`"p4\þûª”Ô´3ÇŽjkkS„¼qsQqñä A·nÃÿŸ9;9ýýÇuç.®—ÇYöóOdÎmæöý¼¹­YWRZŠÒÖÒúqÑB|÷}ùo¿?y–ˆš¿h±µµõþ=»ÊÊʶîÚýèqÎÙÔÄä—Ÿ~ôôp—®$Û¬-@=~âßóaäÝ+g'§•Ë135E­Y¿!*&!´ôו†.ÎÝßîܲ‰:ø†††Ô´´?~[³573‹y÷Ó¢…äµÛÚÚÚÄçÏ=<Ü ôõ)ö/^xëÎ]eeeë×üßR×mŠ}$Û2¿yçF›4!¨åGcGuêdÔÉHô½¿Ö"*ó6 Yj9¹¹?/ÿ•F§·ìеÛ¹° Žݶq½s÷îäÂóýP]S}òÈáòòr9…*’`}m+nIœC®`<§þ=ûω“øŸ7W×éS¿Zþûª¿ÿXÕÛ»'jë(Q´Ê–­xé¯+«kjpsƮ߼µcOÈÝ]¬¬äsÙ¶Lüã<õ®¡(а;xIzIJN^³~cEEBHKKó§E‹+¤gv#CÇœ»p÷Ì,-,¦OûJpuò¨cFJ}‘~òô??¡f%Άˆ<—µg‘g+Ézcý||._½¶fýÆ ãÆô`cmÓuuutuuÈÅîÜ»¿mçîž=zL7–Ççÿ{>,dßþNF†þ~~¡Èèè[¶uµ³ýiÑBmí¨ØØËW¯ÕÕ×­ÿ{5þ:‡Ã­ªªúí¯¿­,-GøBKS3ëåËe+722üåç;=JH¸pérÑ›¢½;wþ/)û®v;‡GE ¶Òˆèhw7W=]]2…"`¿þýnݹ3iüx¼ð»wïž<íß·¯¶¶6uØ.'??Çž½‹æÏ·´´¸xéÊû÷§ÏþÖÄÄxÚ¿UÕT÷î;pëÎÝAþþ=½z „ÚÌ­üíÛßþ\4&°‡§GaaÑ®½¡ë7oéÙÃS[[û«)“MŒM®\¿>ë›v¶6¡?þ^›“›;gæ7ÝËÊË÷:òÇßkN;ª©©)EI¶Y1Zp/<âŸ'½{z=Z]]-%5íØÉS›¶mߺa=B(hÌCóaaÓ¾œÒ;«®Ž®àÛ6ƒøè±««‹Æû£ÀàÇNžz”àÛ¯N‰{ÈãñðmÊ6+dIiiÑûÔu›zɶÌSÓ^XYY´üÈÌÔt¸±"¿E¡P™Ë6ZRŸ–ýÊf³÷lß*Ô£ˆ­ß¾!ûDFǽ1üo蔉h4šœBm`}m+n¹.q¹d<—®\=pøHï^ÞAc¹\Þ™sçÖmÜÄápø|-ÅQµÕ*[¶b—Ãápæñy_dE’Ìå±+Å<ÎSF]2awð"’è0R__¿jõš¯&MôðpÏÏ/ؽ7tÖ-½½{jhh ©Îì‡ÿ9vúì97W× ãÆ2Œ°K—6mûàá!yÔ¶ôÇÅsæ-ؼ}ûÎ-›i4šÐÔÒ²´s‘g+ÉzcÞ=½¾ÿnîáŽ8}æÄé3†=<=zöèÑ¿o¼?B<oÿ¡Ãff¦Áÿ…ïËzº»}5cæµ·üýü‚8pø¨––æÖpÏÑÓý±±ñνû)©iäã ……³fLŸöåüvß¡Ã***»·mÅW2zzõÐÓÓ;xäè½ð¡ë«’ àwæÜùúúz\4øòõ ¿' ØÛËK[[;2úÿ{c‘Ñ1|>İ¡â„][W·ñ×åx<Ó’GDEqy¼ k×àåçÏývÑÏK^½~ãmæVVV6î·ø:c·n磌÷„î{•÷ÚÍÕÅÍÅ¥  !äåéÙÕζ¶¶6#+ë‹¡C¿š<‰ÜÒ³ç/½yÓÍÞ^Šbl³b€zü䉦¦æš?VáëUžîî¯òò'<ÁvwrÄ·xÜÝ\ñ³cä[;›6ƒ‹ó{ßñB 8ðØÉS÷#"ÉÞXTL ‹ÉôíßOÌ ‰Q×mê}Ô×§· ËœÃáÔÔÔ89:HúEêZ$Q!K!/ïõšÓêjkùQV^.Ô£ŽÍ¡›}ôƒ¸ßÍÅ ß @ ‡Ãá"©ÎìO9\îøqcȧ˜Læ¸ÀÑäÂrmÚÓ¾œÒÅÊrÿá#BC%:# vï/Á³•4Ϩ©©ùõï«rAaá½ðˆχí ÙkjlÜ·~ÖÚÒÒBð+äãlø¡PÁfäÛâ’R2EK[›¼ÍTôæ Ÿ ’ž'ÿ¼üWÁoÑi´ÊÊ*)âdcmÝÅÊ*"*zøÐ!¡È˜Oww]]rF€6píÆÍ¨˜Ø‰AãÊÊËSÓ^|5yN'lUU:ýƒ±ºšºÈ8ÅÉMMM ßnhƒÁ˜óÍŒ½NŸý­µµ«³sŸ^={ôú2ŠŠÑrù²²²ññ¹¯òÞçäæVW׈óðN›Á?yöÌÎÖVðBhÈ »ö†ÆÆÅ 4(.>žÃåâÛ”bVHŒºnSï#Ù–¹––&‹ÉìÍijj¢Ñhªªª‚‰â7%9ÕK ‹í›6èéé-š?/xÓæ-ÛwüýÇ*1c à·ïࡨ˜'G‡ôŒÌ7ÅÅø:™œBŸl[±Hâ´¬¢âb„Õ‡•Ó²sç–YQ%¤k•Ä?˜ËoW¶yœg×´V2í[YE$éaDGG‡&DŠ3;¹hkm#økë.äk¹6m‹õóâÅ‹—,ݶ{÷Ú?ÿtCHíÜ_‚g+ ¶ŠÍf_¿uËÆÚZp>OK ‹oþ÷µ›«Ë’å+nݽ۷ާª¢*2>A „X–&“ɤÑh‚Ï¡Àé&ÆÆ]mí¿ÕÕÖNè¼(€~ÇO®©©ijnNÏÈüiñ"‰vsuédd„{cQÑAà/Û°ÅÉM¢!tÇõòîy7<âYbâõ[·®\¿ncm½)x­ÈÔĬBß:sîüÃGÔTUÝ\]»ÙÛ6,6.Žú1@1ƒyçׯ¯ÐWúÙ <2jè AQ11jjjýúø ±+$F]·ÛÜG2,s„••UNn.‡Ãiy²¬©©3q²›‹ËŽ-›$ŠPl£ÅÌýÏî6tð Ø¸¸˜q7ïÜÁo¶›‰±±“£CtìƒïæÌ¾Á`0øË/Tyô˜ QËâq¹!óƒÊÐrÊSê£D{Z%Öò©8‰æòÛ•ÔÇù6£.‰ÂîPE$Ña„¢òHqfÇϸ0Y|E…õA•kÓvuq=bÄ•ë×#£c$ÝR;÷—àÙJ‚ÞƒÁغßÓýåìêî®®4­¦¶!¤¯¯‡*)+\ ñùóׯóÇŒ…#š6­¤´” CCÑåk``€rtèöí¬™‚él6»=CøIüŽ?ý ®±¡N§ûöýàDÞfÀ4m ÿ€³aÞ¾­¸éæâbѹ³ÌÖG!t±²š=c:š1½¡±ñÊÕkû>}öÜ÷ïÇåˆOÌŠ!¨¶®îÀá#¶6Ö[7¬'ÿS–”Ôþàù|þÃøGÓ§MZ^OO¯gϧÏ‹KJž>óëßÿÃ'Q…¤®Ûâì#Y•9BÈ·_ߣÇO܈ĽA=FuwrJ—´É0ZŒÎøÿkH?-^”’öbwH¨§»»©‰‰8± ²oFffDT´·——à´½2U$-‰Z–>B¨¸¤ÄÝÍ•L,õß|kÚß*Ñûñ­QpD}œ§Lœ’?ìUDRFD’âÌÞÉÈ!TTT䨭™ˆpB\›ö·³¾y¿+d/yÿTÒ iÏþ:[I0nŒÁ`¸»¹>KLz™-ôÑÃG‚p°ï†rvrb1™÷ÂÃÉO ‚عgï…ËWh4šu{áä%¡[wï!„Ü]]‘(Æ:™›™EÆÄNÄ÷pØè1øüv²²´´µ±‰ˆŠ"/_ ~*NÀƒ‚8õïÙ—ÙÙx‘ÌÖmnÉ)©CG†]¼„ßj¨«Oš0žÁ`”–Jpì&‰Y1UTTðùü~}ú‡6‚ ²^¶:-™øÁ§¤¦uêÔɤÅtP¡!ƒr¹Ü[¶q8œï'}•¨BR×mê}$Û2G5RC]}ß¡ÃBÇ¯ÆÆÆgÎÐh4<Ñš ñk‘Ì£mIOWwÉ‹ƒ7m!BœØüý|i4ÚŽ={«ªª†¤°PeEÒV,QËruvf0w?¬œ÷""ÅOŠVI§Ñkz„A<Œ§º¦à6"ˆú8OuÉP‡ÝÁ‹HŠÃˆHRœÙÝ\]h4Ú•ë7¯ß¼E¾V@ÓÖÔÔüáû•UUÿž“nCÚ³¿„ÎV’âÿæë¯BK~]yæÜù—ÙÙ%¥¥/³³Ïœ=·~óV==½ AcBÚÚÚ#G|‘šöbïþƒïÞ½«ªªÚ³oÞë׸ëÍ`0&*)-]·qsiYYCcãÍ;wΞ³±¶îëÓ»µõNûrJqqÉkÖ646>zœ°eûcccНHd࿤¤çé™þ~¾B‰°}W;+KËKW¯j¨« æ Û°Û™~ŽO bgkÃb2Oý{6ñù󆯯²òòÝ{÷ñx<7)CâU ÁÌLÍTTT¢c—”ñ¦¸øïàõÙ9¹<.·¶Å…4!ÔÁÇÄÅù¶¸M‰õïÛW]]=)9Y[K«×ûÁ^UHêº(÷‘ÌË\OOoñ÷ ª««ç-úá\Ø…ÜWy¯ó "¢¢¿ý~aaaQ਑¶66-¿%f-’y´"õëÓgØÁÉ))øPØflŒŒº;9edfjjjö{‡N1¡ÊФ­Xœ–…ééé}1lè³Ä¤CGÿ©®®©ªªÚ±{OYYBˆNë8/N«lÅ!K ‹ŠÊÊÓgÏq¹ÜwÕÕ[vì$Ÿg’¢ä½+)ŽóÔQ— uؼˆ¤;Œ´$Å™ÝÔÄį¿ä””í»v—”––¿}»'t_zf&¹€bšvÿ¾}|ûõ#k¸8"Ô ¤Þ_Bg+ÉFù8wß¶qæíÛ÷<$˜nßµë¯KÆBóæÌ®¨¨<v6,ŒÜà)'à×_NšX^^~åúû8Eð©l‘¾6´¤´ôÄé3qïïÓ[Xtþë·ßÔÔÔ$Š¿5þý‡Á`ˆ<‘‹ð ÿ#ÇŽûð I¶a·3·.]¬BK]akks dϲ%?mزí§_–ãOé4ÚÆŽ(E`H¼Š!ÀÂùóvìÞóÕôo Çóí×÷ÛY3÷:U5Ñ#…¨ªª´Ù*…ZñÔ/'Ç'$ì?tøàá#|‚°µ±Y4þº›(Ö¢à6"ˆú8OuÉP„Ýñ‹HŠÃˆHRœÙ—üðCÕ»êË×®_¾v!¤®®þço+~ýý¿1õ kÚ‹¿Ÿÿ,) Oè-Άµ©÷—ÐÙŠ–•Öµ›3A9/_ „ô Mʼn>3ëenÞ«†ú---û®]mm¬[.“õòeFVA ‡nö‚7†±Â¢äÔÔfv³•¥¥‡››8ƒŸÊÊÊž%=of³-:›‹ù’"`L¶a·'·Ô´/s²ÍÍÌñÄܵµµIÉ):::ŽÝÌÍÌÚF]1„(..ÁEêÒÝÙÖÆšÏçGÅÄ644 ôÐÚ“;$‘Á77³c<<0€ú»"QìßêêŸ'ø3uݦØGò(s>ŸŸö"ýuA›Íîddèæâ*t¦%1k‘<¢mul.]Þµ7tÇ–MBÿ+2Ô–õARR´bŠ–%Ïóä”ܼWF†F>½¼/]½²oÿÉ£‡Å/6[¥P+nnf?~òämÅ[3SSñŸwSpE`Ô%CöGQDRFD’ôDIDJjZî«Wêêê½½{ Å”U¨7D¨ É÷W˳•”½1P¼YßÍkll:yôpË´?sgæwó|¼½ pþé—åùçOŸTb`q(hJh3gÏå¼z•û*oÞ·³¡+Ö‹ÅêîàxáÒe ÞÞÞ áQ‰ÏŸÏ=KÙ¡Ú½1ÀGàÈñl6ÛßÏ7hÌeÇÒAý´x‘¶ŽöÙ° ÇNžBéêêüoêW“'ŒWv\€¶ÁJÀG ¡¡ÃáJ7–å³BDÕ»w4„ôôôà"" ¸6øýH6h FkÏ¥øWÀ Ao @™ 7 LÐP&£ø;à¯í|ªDôÆLLLÀç îT(“èùÆ®]»¦à8>Opm @™D_5j”‚ãø<‰îÊpË—/–a†ŸŒV§ÒßßøðáíÌ=22òÖ­[íÌàÖjoÌÇÇgÙ²eíÌ èP€QüÊÔvo,<<¼¹¹¿.))‰‹‹{úôi}}½œø,´z§’4tèм¼¼”””Õ«W'$$˜˜˜477¿{÷®GÇ=ztÏž=i4šbøô´ÝCÍŸ??::zÕªU7oÞÔÓÓC•••ÅÆÆÞ¾};((ˆÃá 8°W¯^]ºt177ïÝ»·œcøtˆÕ«¬¬LMMµ°° SŒƒ‚‚‚‚‚BÉÉÉááá=Ú¹sg=Ο?/¯`>9bõÆNŸ>-Øâæææææ†Ú¾}{ll¬ÌBø ˆõL% ˜á@™ 7 LÐP&±Fñ“ÊÊÊŠŠŠÔÔÔlmmUUUåÀçC¬Þ—Ë Ù³gÏ‹/ttt8‡ÃñòòEbõÆ~ÿýwŠQböööööö³gÏ–]TŸ ÉFñKÁËËËÕÕµ¨¨HÞ+ú(hkkëèè(; t rﹺº:88<~ü¸®®§°X,sssMMMy¯ºc‚Þɽ7†­_¿>11ßîd³Ù\.7((hÙ²eâÿæÒƒlllÌÍÍE~Z\\¼lÙ²cÇŽÉ,b…PÜì¯ãÆ‹ŒŒŒŒŒ|ðàÁæÍ›/^¼xóæMñ¿¾gÏž¤¤¤–é|>?77788¸¦¦FvÁ(ˆ‚® ¢Ñh~~~ÎÎÎ)))#FŒàóùQQQ/_¾d2™½{÷vvvFñùü{÷îùûû_½zÕÒÒ’ÇãÕÖÖ¦¦¦ÚÙÙ988æ¶{÷î .p8œN:)~[Ú©íkc***²]+›Í.))ÑÖÖFýù矛7o®®®ÎËË›5kVtt4BˆËå®X±bÍš5ÇŽ{ûömjjj}}}NNÎëׯ…²Z´hQddäòåËe!€b´zmŒìâ >>>>¾ý+ {c•••x²~Ö£G5kÖtîÜ!tòäI—ŸŸŸ———ššêêêJ~wôèÑâóø‰î­_¿^V+°¶¶Æ/úöíûË/¿}Êçó7mÚtýúuKKË®]»êêê ~ª¯¯/«0:&ѽ±eË–Éj%%%S¿ÆÄÄ\¿~ýèÑ£¶¶¶¡7677ËjÕŸâf¸©¹¹YCCÃÒÒ!TYYK„rCP$%Ìp!¨_¿~ûöí›8q¢‰‰IEE…»»{DD„¿¿¿Ð’FFFû÷ïoll?~¼2" ZvVZ×nÎAä¼|Ò74EÈjÔw*Bl6;99™Ïç{xxÐéôÇÛÙÙ™˜˜-V[[›””dmm/¤}¤LMMñ³ ˜’¯!„TTTzöìI¾íÛ·¯ÈÅ´µµ}}}€‚(yÜÀgNîׯ´µµïÍÕÖÖîÞ½»ºº!4mÚ4yСhjj*; Põõõ÷ïßÏÏϧÑh]»võ÷÷WUUUvP:¹÷Æ455É.Ç›8qbll,~{íÚµŒŒ ###yÇ€²œ={– ˆÑ£Gs¹ÜÛ·oWVV~ùå—Ê @Ç¢Ð;•[¶l!»b¡ŠŠŠ+V(2©²²òõë×cÇŽíÒ¥‹ÝèÑ£333›šš”€ŽEq½±âââ¿þúK(ñðáÃ/_¾TX (Fó÷÷'ŸP¦Óé!>Ÿ¯Ô t8Šëmݺµ¡¡|ëïïâÄ ·iÓ&…Å€"éëë“3çÕ××ß¼yÓÉÉICCC©Aèpä>߯årÍÌÌÞ¾}‹ßNž<ùĉL&ÓÍÍ-;;»°°Pæk ƒ âñãÇ‘‘‘]ºt7nŒâ DAׯ¢¢¢È®¾*Æd2B&Lhll<~ü¸bÂ@Ájkk>üìÙ³   )S¦@W @K ꑃ÷õôôNŸ>»b!OOO„ÐÉ“'ŠDĉ'ÌÍÍçÎkoo¯ìptP š‹?11¿øóÏ?MMMÉtccc„PBBBII‰`:Ÿ€ÜÜÜŠŠŠ‘#G¾yó†L477ÇÃùLA½±ÒÒR„¡¡áœ9sÓÕÔÔð‹¨¨¨É“'+&£¬¬ŒËå>|X0ñ—_~ü)¨7V[[‹š0a‚Ðy¨±±¿HIIÞøÄôéÓ§OŸ>ÊŽ@G§ ;&xðòðáÃ…ÒËËËñ Á[9ŸÑ3\QVV&]އÞ¼y³,c€OÎòå˃ƒƒ• C}§²ªª*''Gºƒ‚‚  ”ø×_=yòäüùóBOø¯^½:!!!4|øð H´"Ï¡¤DÊÿÆÆoY¬4é¾+‘®]»:::*`EòC£Ñ‚Pv½õë×ÿúë¯P’Ÿ'rïãÊÐá(èN¥¡¡!BˆÁ`&655¥¤¤.ð¹QÐ(~333„P]]žž™Cþ‚²b"‘HffæÒ¥KñõŒ«W¯*;|‚tmÌÜÜ!T\\L¦qñâEüšÉdº¸¸(&ññùü˜<r%no,''çíÛ·EEEW¯^½yóæË—/%ƒ'"õê™UPP€_»»»kjjŠŸ›b\»v-77wÒ¤Ir]ËòåËåš?ÔÇ»G>ÞÈà3'no,++k×®]W®\±³³³´´LKKÛºuëŽ;®\¹’œœÜæ×ŒŒŒ322ðÛæææþù‡ütìØ±R„.W•••'Ož433“wl6lkþ@Rïùx#€ÏœãÆ|}}Œ_ã‹l6;77÷òåËnnnm~ÝÕÕ•ì·q z¦!Ô³gOƒÁçóqb```×®]ƒ88Nhh(“ÉúIMy¬7FDii)Ç355š<Œtüøñ½{÷¶–éS§ß^¾|™¼NÖÑ]´=z´œVD£Ñ䔳¬tüeK~Û+ï’üÜöÔÇö 5ôÆbbb.^¼hgg‡ÞÏUáààààà@^è¾þúë#FˆÌaß¾}×®]ûoÅLææÍ›qnÒ‘Ç\ü%%% ,ÐÖÖ USSɸ&Ý|cmÎÅßñgºWV„ŸØz0ǯKŸ-˜‹@M‚Þ˜ÁܹsÉ·</+++55ÕÓÓSœ¯'''ß¼y“|;sæÌötÅä$44”ÍfÏœ9“ìŠÈ•½1gggÁ· ÃÉÉÉÉÉIœï–””¬_¿žÇãá·ò»ñ'µ¸¸¸§OŸº¸¸øùù);|.1SSÓÚµkkkkñ[Ö1È8p€N§ ^ÿ7E²Å/r.þôôô±cÇ ¦œ={öìÙ³2_»üÀ\ü°ÞŽœ³bòí{ÐÉzc<N§SSð\ü'Nœø÷ßqÊâÅ‹ñ=JÒ½{÷vìØqäÈ###I#&Ù¨«ë74H÷Ý ìÆF©W->˜‹Ö‹Á\üŸ3˜‹@M‚;•øúV\\\›K²Ùlò<<<»bA$&&¦¥¥!„V¯^½qãÆ3gÎó_¹êÑ£G›ËÄÇÇÏž=ÛÞÞ^]]ÝÄÄ$00PŸ3 ®]¿~]Ì%ëëëBt:]ð··srr¶mÛöúõküöÕ«Wx`ÙÉ“'½½½çÌ™cff&~< ™™¹téR|½áx¦211‘âÓ’’’yóæ]ºt‰LijjÂ[‘‘A}…RëÚXCCÃùó磣£ÅÌ455¿:t¨¥¥%™¸lÙ2²+&$!!aÉ’%YYYb®Bø|~HHˆªªª²iWWWqKMMõòòìŠ j-í×FoìîÝ»‹/þꫯþùçñ‡¤dggã£FÂ/jjjÖ¯_ßÜÜLñ­šššU«V•••‰¹y»víZnnî¤I“”H»=c ¥¥¥C‡}óæMk hkkË4( ÌÂÂBhl%€ÏG½±ŠŠŠºº:CCCccc&SÜÛšø'†ìíí»té‚Sª««BªªªS§N 9uêƒÁ˜6mÚªU«<==ñbõõõ›6m’rSdª²²òäÉ“fffB‚~’V­ZU\\L±Ù«rRTTTXX¨ì((G¬)S¦L™2¿^²d‰˜S¶VUU!„\\\È”ÈÈH„††Fpp°­­-N´··ÏÏÏŸ>þàÁƒQQQ………:::½{÷–aæb***êÔ©“ŠŠ ™rùòe꯽jÐqt„º@&ä2û+NGuëÖ ¿­®®®¬¬DM›6ìŠ!„ÜÜÜÈb#FŒøßÿþ‡_ß¹sGQ‰/)))&&ÆÛÛÛÛÛ[Vy–””Œ7®OŸ>‡ÊÎÎnjj*++#ÇÈËj-ðÕ/ ‹-[¶~T[[ÛÚ·/^,÷È€„”^—È–\zczzz!ü–.æëë+¸˜««kII Ù?~<î«%''+qÚ$‡Êd2çÌ™#«<•;FþÈ‘#C† ±°°@á¹E„ð‰g``püøñíÛ·Ë56 )xÞ>=´ì¬´®Ýœ ‚Èyù!¤ohŠª¬¬lùO6¾S¹|ùò~ýúQäxãÆ–sñ´|ùòàà`eGèdÿËH_ý5›Í>tèÐÚµkÝÜÜp"îÉmݺÕÞÞ^páo¾ùfòäÉÇÇoËÊÊfÍš…:pà€©©)õŠä1IIÉ‚ ´µµCCCÕÔÔp"þM$éæëÚµë¶mÛöïßO±L^^ž<f1™L'”8þü1cÆ 4ˆÁ`ˆ™Ï'6'¾²ÖK=?Fspphó>ãܹs•R—@;Á\üjr¹SÙ»wo–““C¦|ñÅHÔhq[[[ÁGÉÈ››ÊšR!44”ÍfÏœ9“습Ÿ²ÆÈ“]1uuõñãÇŸ;w!´gÏž¡C‡R¾…Ši IDATtÅ`.þŽ ž·€O’ì¯!„ÌÌÌ|}}ïÞ½;vìXü£–¼wï^TT”ݸqãÈ%MMMñtXcc#BÈØØXSSSQ‹‹‹{úô©‹‹‹ŸŸŸ ³¥#¿cÇ®K––V÷îÝ?~\ZZ*NïæâïP"##oݺ%”ˆŸ†©gÏžOž|øpjjê?þ¨¥¥…êÔ©ÓË—/Éoá4|||äµÐéô¹sçÊ6ÛI“&=zT(ÑÀÀ`ÇŽÓ¦M“_o¬¨¨HGG‡F£‰ÓKMM6lXkÀ^ºtIð4 >>~Æ â/ÿäÉ„àWh4ôÆà£ ¯Þ˜™™Ù‚ vïÞmnnŽgBÒÒÒ  »víÚ›7oðü:u““a×®]SQQ3fŒœ¢¢†¯Ò-\¸Pä§xô’|Yhh¨½½ýñãÇóòòÔÕÕ]]]ÇŒ3gÎyßÕÑÑsI<?Ű0¿²ú7&ßò ~eeeuu5‡Ã¡Ó說ªZÚZzzz :!”žžîää„zù¶üV¹Ò‚ !yõÆBƒ *,, ž={öÈ‘#i4ƒÁ˜4i’à| šššïGÓ_ºtééÓ§sçÎ566n%Ë’ªªêŠ+V¬X¡ì@þSSS£¥¥…ç„Ã`.þŽ€Ëå8pàСC™™™:uÂWˆõ}ôí–Ù‰™Cúµt»Qv!‚  79öÆBÓ§O×ÓÓÛ¿ÿǧOŸNÎKRSSknnf³ÙçÎ;sæÌøñã•xâoí¢W{ž©¢ÄùÓñðµ€€€ØØØuëÖ-]º”üèsÞqf´ÏÉɹvíÚÆ׬Ys÷î]Á‡`Dªªª*((¨¨¨hlld±Xx’?#ùöÆBcÆŒ±±±9xðàÏ?ÿìèèèíííè訯¯¯¢¢R[[›——×ÜÜ"ôÆ6oÞ,Ý:ÜÜÜvìØsîܹ¦¦&ÁOi4Ú°aþøâ ]]]éòÇ*ª«uµ´˜¢æn`s8õMMúÊü¤”1òYYYDMœ8Qè#¡ßTÖsJD±G¸\®RžZ°´´Ô××GuïÞb±ÚÚÚG 5"RIII×®]å¹=?F£x–žÚþýû7nÜ(Ëà“sñH¢{cä,¬ò–ššêééÉápÚ™O¿~ýæÌ™3cÆ „ÐðáÃ[NÔ´aÃ†ØØX™Œý’”²æOÇ3½!„ètz@@ÀÔ©SgΜ)Å,óŸØœø¨­=Â`0rrrr™‹_|\.WüŸèiÍÝ»w³²²È˜HsçνwïÞ³gÏÚ¹.)(kŒ¼ºº:þöÂÂÂ{÷î}óÍ7â|KYsñ+r½Ô{ä÷ßWâS õõõüñjeÖ=<8Œ‚ººº\ OJîq8¡1LRعsç—_~)2rú ==½ÀÀÀ]»vµs]R #/¿õfggãçòÌÌÌÄY¾¤¤dܸq}úô9tèPvvvSSSYY9ª]~q*~½Ô{dÕªUòXi›¸\.ŸÏŸ>}ú«W¯Ö¬Y#²?Êår[ûº<£ GòíEFFúúúª©©YYY…††¶\ ¶¶¶?‚TSSsóæÍ#F¥?xð`æÌ™‚?R>räÈ .PœÏäDp~5’ÁñãÇ·oß.¿õš››‹¿pjjª———à†$<ª]vq)½Ô{„¼Ã«` 3gÎLJJŠ]¹r¥È0DîS‹åéééìì,ÿÈ…g¸¸qãF`` þíê‚‚‚yóæ™ššŽ;Vp™êêjñ§Œ)""‚ÇãõêÕ‹LÉËËsttÌÌÌÔÑÑœ„©W¯^555?îÛ·o{Ö()eÍÅ/>eÍů¬õvÌ=R\\Ìår“’’§¨¨ˆ¬H_žN¾U!T ßÖÖÖr8¦¢¢¢¥©¥££SQSƒjPJMG½‹§„ -9öÆ–/_Ž»b¤uëÖ õÆòóó;wîÜžµ$$$˜˜˜>vPQQÑ­[·Ã‡Ož<9((ˆLwpp`0 îuœ¹ø]\\D¦SÏÅÏ`0ä4%¯²ÖÛqöÉÙÙyðàÁ-¯•VÅWUÅW‰ü ˆ&ÔÔ„šÞ¢·dbjcÎX{c-ý¼xñB(%%%¥wXJJJ„žõòòjùL%BˆF£ééé Ι©xÊù=%%Edº²FµwäÑô –šš*”âïï¿~ýzНäçç'$$äææVWW«©©YZZ¦§§ ~Eäs€ÿkï¾ã£*ó=ŽÿÎÌdÒ&¤WLd]@Tšˆ‚tiÒT@P`ïå^QPöå®zm«€/YÝÕ,×rDÊ…¥„æED\¢q7 žI2}Îý#0†IIòDòyÿuæ´çwΔ|ç9OÎÍP#¦±˜˜¿žøøøªu]ß¼yóÂ… ¯¤«Õr‰+‡††–––^Is¿˜ª;¿wíÚµÞuTjož£é›‰^½zÕ§ª¿–ÊÊÊ~üñG“É4f̘¦ÿÀjÄQü}úôñ›óì³ÏV}¸~ýz›Í6tèÐ+i%&&¦¸øRGÉÇÆÆ^Is¿Œª1ò"’‘‘Qï:ªFµ7ÏÑôÍœÂ× ‘4b›5k–ˆDGGwéÒeåÊ•Uoyåt:Ÿ|òÉÇü œœ——w)k:«ÕzÍ5×\Is—E» S§Nµý,’ˆ<ýôÓMVRÞyçùóçwèÐ!(((22²oß¾ùË_rrr&Ož|U¶ûkôky-~‰#Y‡DD×õ#Y‡Žd*(((((ÐÈìÙ³ããã:ä7ßãñLž<¹S§N‡ã ›Ø½{·ˆdggûæ :´¼¼|É’%}úô‰ˆˆðÍÿúë¯Eä_ÿú×¶x¹f̘QÇù7999M\~¥x-ÀU©ljÈ믿n0ºwï>gΜûï¿¿mÛ¶ç믿~ñÅOœ8±k×.³Ù|…MôìÙ3<<|Ïž=•÷‘¬¬¬¤¤¤’’’¶mÛV½.¹wïÞ”””öíÛ_a‹—‹±êh(¼–àªÔ¸w5 ¯¿þúÆ322zôèl±Xî¹çžN:edd$''_y&“iÊ”)©©©¾9‡cذaéééYYY¾ˆ&"©©©—øë@ ‹±êh(¼–àªÔ¸}c•úõëׯ_?§ÓyúôiMÓZ·nm25d»³fÍêܹs~~~LLŒˆdff†‡‡û­“½oß¾ª¡­ÉL˜0aÉ’%~3£¢¢þö·¿1@ —…×\•š"U2›ÍmÚ´iŒ=·oß~Ú´i¯¾úê‚ D¤z‘ùóç?ñÄ Q@ÝšçßñkÄk ®JÚ‘¬CmÛߤëzöáL‰ŒN¿û©6¥¥¥ãÆ[µj•ߟ¥§žzê•W^ÉÍÍ:ujZZZ`` ª jt•¤1€_©ÆÅ€º‘ÆT"¨DP‰4 i @¥ówÕ4Mm-®ë~sLµ-@Ê>œÙ¶ýMÕ盪®!"'O抈Ñh4 º®»=¯Çc0MF£®ë^¯×·~ëÖq• ½™–þMã–P‹±ƒzΞõˆê*ê·kÇÖçûÿN¥×ë-¯°EEG¦¤\kµZ<˜_P‘œœ\QQîq»åâ+›iéß´ë>°ñJ¨CZú¶_E«óx<ùyååe­['Ÿ:ujûöíM  9zôh‡7X,—Óh6›LmÊÍËú·ž‘‘3ç]­4}%ªŽ«ùœO—+=}û€ý †Ÿÿ?Òáp¬ø,õÁ)“êïŸÆL&SJJJph¨Ûí*/¯îÒ¹sTttQQQY™U½¼¬Ì iñqqU·²—[ê`ÔËh4|òÚ“±QÏû`VŽo~ÇömÞxæá¼ÂâÉO,¨œ£Øk‹º±ú¶.] "ƒz²Aꩱ•Ê&ÜnÏä'ä•TÎŒ ÿøÕ'M&£¯õª•TNëºît¹KË*rNݶ续_eø¶Ö[vmÇÛ€ÇÕTµ @Dj×UÕ‘¬CÕg.\ôÖÂEoŽwÏüy/V²³gsg>2ûÀKJJêí·óOceee¢iFS€Ínw»Ýfs Ñht:6›-""Âåty½Þ£ÇŽy<žßüæßVôMlÝŽo§ß3xlïŽü”#ç߀c‡Ü!"ëÒV› ³FΜ«øFê|{fêÉ·6H=µ·¢OÔé¿×ï£YDs§\øŠXµõªÓ£GNj}ÍÈ‘#ÿøï†ÜÞuî{_8]îK,»a?ŽT}¸ñ¡ 4ƒ!&::&6&!>.&&öóÔ•Õ×IOß¾pÑ›"’ºrµˆÌŸ÷â?þ±ÿÑÙs EdÑâ·xã7ÔÑŠsº\šˆÃépØí.—Ó`ÐÜÓé´Ùí¢y½n]¤¼¼"¿  êVôMlÍæ/ïÞ§wïÞï,Y‘_."Úûæ6›}Ó¦M®ÀÈ¿¿õœTv#•[+»”¼æ¾»úÅD†ûúÌ×­['5õQUxïÐ>?0J×õ¢Ò²¯3~|çÓõvGÕzjûؾ}ûСC—¯Ùœg‰ · ¹½ë¦ôw X}«ªÓ…Á¿),ðfþÏ»Ë;rØàûî¸þ½µ{¤JWŸ9örkŸîŸ}øƒA{kÙº´­_iš6¼_»ïì•WX’¶u÷Úô¯[ÇGøÊv‡ë¾ÇæU‹ÑhøìgÂÃB§?ý—Ê] 8ðž $ÅGŸÍ+JݸkÃÎóÿ®¤iÚ˜A·t[|L乂âµé{Ò¶~åëÀ«í\ù= wN}JDFôï9nè‰qQ§s VüïÎK9@mÂøqùùygsÏåçåçœËË;———™ùcmëÐoü¸{*£XêÊÕGŽdÿpðÛí“ÉôÌ=Yw“êi,Ìb£Áh·Ûm6»Ýn  ­¨¨ .)µzÜn‡Ã^TXXu+¾ÆMÌ#²ù«ïÆ ê5¤_¯Õ{sÄ`9è¶“iÃÿn¨°9LIç¯sUíFº!Éòè½\q6[<ÎÊ6jÔ( ©\G×u¿n'ßÃV­ZÍ|j^îáŒ~ýúÍž=[w–½ýÅ—¢}kÖö!šš:hРq#|¸ùû‰£ ÚÊŸøÒXÕ­jœÞ°ïÈÈaƒôíýÉ›ôðKê1ðöǧŒ¶; ¼²ÿûƒ"¯1|Ä̉÷íÞ÷ôSOß=jø¬) nûÆ}Gödüx{·‡uMÚp W4c÷Žm#ZYö}ûüC;Ež‘>}ú<÷ç·ÄzfÖÌ¿Ÿ~¯Ákߺÿ¨ˆŒÐsÆø!k7íXþÉÒI÷ÝûÈäѺsížVP÷¹ò= Áç‰ÿ9kÒ]û¾?ôÜsωÛñèìÙ—r€ÛËó_ôM{<ž‚‚‚Êdv67÷ù^ª¾¾Á`˜?ïE¹Ð7–ñÝ÷•ó£££/|½Gîõ¶èŸÆJJKEÄèÕu·Û`6[ËÊÊ+*JKK-‹Çãv:].—ÛSåVÂ×8@…Ô ;F è9lèÔM/¸ƒ¢‡ÜÞÕëõ®]»Æá²UøVó½=?úè#k¹×Õê:]ûyéùñIåV¹pßA¿·såÃS7˜lyžàäõûOÏéys§Åï-u…$ToÅÏ™3g¶ïÉ1|ø†í{GÜqËÆ-;òóòkܪÆécÇí"¥—³›ÂëmnĈÿùàè³ysÿôü‰“§aÉ^-ddß[DdÅÒ÷Jí®ÛÞw߄у{¯Û´mÙÚôÛ»Ý8bø°µ;_vFöíÖADÒ¾Xí °Tîíƒ>È?Wâ MzûóôÝ»ß}gŸ[wy#†÷¹YD¾X±´Äîýtëw£FŽ1 ×êõ›ÜAQõž«ªÏ¨þÝE䃷啺B“ÞþlK[ºÕ}€š˜ÑhŒ‹‹‹»0\¾Æ4&"ƒaÖ£3ÓÓ·UÎ‰ŠŒübÕçII‰—ÒŠ ÖuñŠn·Ûìv»Óá8räHFFƨQ£ÌfsyEEyEyY™5"¼UÕ­ø4½b›{÷þÌ;ºwìÞ!E¢Û:>úÿvuî\ž1±‹Ñè[Í÷ö,,,4$u 4TÝIµ7¯æ7'(4ìú6­§ŒîÝ5ña¡Á•W9cbbL®2c-=[~V¦ïx{·/üÁhÔV­X&–ø·ªq:%1¶²rMw×¶rUÓ¦MÓ4í£?8qæœßÑ,"‰qÑ"òî»ïúVKLL p;WràŸ?uîp]çëâ²…õîvÓO9Ç8`ˆ=Máܹs†˜MAÅ]DÌÎ"=*9>&RDŠ‹‹q*¼F‰ p•˜¢¯­÷\U}c£ª·RïùÐ íÛ÷í£³çø¢˜ˆ-Zü–oPÝüÓ˜ËíÖuÝãñzEw:]ºÈéÓ§C-–¨ÈH—Ëm·Ûóóòt]¯¼ éÃ×8@‰Ï7ì¼£{ÇáCyBDä‹Õ«<æ0§Ã)§o‹úœìv{Õ=ø–êºn04Mlå֘ȋz¡þ0}lBLä‹/ÿ9cßÞ“!55UÓ4ñ8këÙòs8ûè—ß|ß÷Ö®ikÖØÃÛÕ\[MÓÃ{‘;vèšéRš›;wîóÏ?ÿûßÿÞ¾ðƒ/§UD ŠJb£¦NZpÑ€WÍ^n]¾n{ç× ¿sྞ 4¬I[í59<ç¨ÅÅű9ÅáŠMŒ‘³gÏŠÛa/·æ·Ž‰ˆˆ8a·Ç†‹H^^^å¢K:Wž…3y…mZÇûµRïùÐÜ|üÉòù//ð ëÔñ¦Ê‹•¾Aýõ²jw¸0u]w»Ý‡Óåvéº>hàÀ°V­L&SqIinî¹S'OZ,–„„„ª[ñ5PâèÙ¢Ì#Çn½õVÉügVVV–!þ¦ óE_–jìR*-«he IHH8p~ÎÉ܂䄘޽{ï?gü·ñwVݤò†¶Ò€„N[÷ž« ûóÒõ¯þõu©(”°ÄÀ°Èz÷5ªÁ·uùî‡ÌÏ>ûL³Ä]JsxiÑÒfO}nÎŒEKR·|{XDÖîøvÆø!Ó§OgÍW.ÝpÓo“Ç ¼õ¹E˃D=“}üTŸ>}’’O—îÚ¹S ¿Ö·óßýîw‹>ߦžt—ˆ¬Y³FLA¡aé{xpô€»ï¾{Ù¶ƒŒ,"7n¬\tYçjÝŽogMº«²1Μ4òRÎ'€KTï½*¤–ÛU\–ÌÌ_šûråHÊb·ÜÒí™g_ð ê—KdþiÌb±ˆ¦é¥ÖÂâ’“)&::<"ÂxòäÉÌÌÌ“'OMmÚ´IL¼è:(_ãU>ß°ëO³§ˆHÚêU^SˆÃ¥‹«†_~Ó®Ú4uì ÷Þ{O.üãäkïþؤsæÌ9s®`å߿ܫ‹o“—ßZ>ëþaóæÍ+,±~º~»H:ö\ÝùEA ” r~ŒZ{X»v­Ëí)-+?~êì_¿»cóz)ÄalUÛ†~öþýükÿýÒÿñØôûBW­ØüÍçëÓ Ï»wxÿ÷ç>&švðpNêš úÙCްùtýÎgg>p}Ûë>Zö©Ë+v1ûÚ½{÷Ÿ™˜”˜˜WX¼ø¶lÙâ Mò”[—¥mÖ+Šïì{ë°aÃr JÞ]º|ýºu®àx÷ež«5›w‰½øî¡ýÞ›÷ø©Ü‚UßÕ£cÛz@³rã7ÌztæÂEovîÔñ­7&$Ä‹HÕAý©+W8`ðàº~µH;’u¨mû›t]¯üÊììãGsrŽ?nµZ=¦ia‹W× ì‡%4´}»víÚµ KN>ß=6pìCúiôÃP[‘–Ÿ%"zL{ þ¹çI;±W.ü¿dÕéóÊrµ’Sâuý<ßaÕŠrÄmS –¨þTm‘M z«$­(§®=×T@‹ªO‹ˆh1˜$ X‰‘ИËݧØK´ü,ѽzDŠ„%ŠˆThÖ3â¶‹ˆ˜Ãô° ƒA[¾`N€É8mÚ´RC„´JºhoQ¿=¿•Ѭ‡%ŠÅwãk]JOkåùâqŠÑ¬[â%ìƒË=Weç´²³âvˆ)HKÔ ³k;@µùaçšmiKdW¿à®ôñ²‰÷ üyÌ®×ë­ì!›=k¦ïvl>ã1ß q|üÓØñãgŠŠŠNŸ>íözE×EDÓ4MÄ`4ZBCÃÃÃ-‹Ùl‘k®9?wàØ‡øJ¿Fš¦Ývó /=öКµëÞÿ}{D;½Êm;üZþv[C¥±äõz·mÛQµW¬¶4æ¥2%%1%%±K—ËøQޱƒz¦¥oûŵ€*_mY·ÿ»ï?]¾,¿Øz:{gýÛh~Æꩺ„ †º/Púø÷ 1ÔÖ7Vÿ=0Ðxü¯TV¼V=Á] ­Ê/Í]¹¬MÓ´æ|¤Ò¼Ÿi„òZÚñ6àÞ¤y—ÇÛökþåµ´ãmÀ½IC¿5jWÂ{ö T-¯î[iÐ7 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨dò{¬ëz£¶ç·MÓ»EU~ñq5Í9¹”&®¦g‡§ãJð¶­[“z[QøÔ4FÓ<¿ïÙz5ýg{öáÌ:Ö¤o @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"h¹<OyE…®ëª Т™TM­¼¢bÙ§+6nÚt4瘮ë¡!!·öìñÿö»×_¯º4-i @ËræÌÙ//oÇ®/UՠŢo @ ²fÝ:ƒÁðФª/š8~\|\\\\lÓW …#hA¾ûþÀoÚ´‰‰‰©¾¨uRÒäû'6}IÀ•J-…Óé,.)IJLP]\„4 ¥p8"b2qM@óBÐR„……×¶‚Íf³ÛíMYi @‹r]›6ÿ:|ØétV_T\RÒ«oÿ‡g?ÖôUháHcZúÛl¶›7W_´ëËÿ‘Î;6yQZ:Ò€d½÷††„¼±hñ‰“'«Î¯¨°½ÿáMÓî>\UmZ,Ò€$**òé?þ¡¨¨xòÔé/[~øHöOGs6mÙ2qʃǎŸpï½íÛµU]#€‡ÿ-вŒºkDhhÈ‚×þúÚóÍ4›ÍÓœ2kæÃ Ðb‘Æ´8û÷ïß·ï÷~ø)ç¨Óጋ‹½åæ›#""O ŠIDATT× …"h‰ ÃÍ]»Üܵ‹êB€qcJ‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J¤1•Hc*‘ÆT"¨DP‰4 i @%Ò€J&¿Çš¦5qMßbm¨¤:…•pª£’êšI%ͤ á=+"TR*©®‰+9’u¨Ž¥ô¨DP‰4 i @%ÿQü999*ʸj¹åu,¥o @%Ò€JþW*\ «µ,7/Ïn·ëº®º hšfQ] pÕ¢o h0V«5çøq›ÍFÃUC×u›Í–sü¸ÕZ¦ºàªELn^¾ê€Æ’›—§ºàªEŒÃáP]ÐXxy‡44˜ÀÀ@Õ%%ˆ—7ÐhHc@ƒ‰U]ÐXââxy…44˜°0K›””à`MÓT×4 MÓB‚ƒÛ\›fá*ÆÂ.€†fáF€ËB߀J¤1•ü¯TÖý«–hXô¨t¾o,ûpæ®[Õ–ÐOcmÛߤ¶€–é|Óu=ûp¦ˆDF'ˆHTT”Ê¢Z ƨDP‰4 i @%Ò€J¤1•Hc*‘ÆTú[‚ª’­1IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/SchemeWindow.png0000644000000000000000000000013213135434036020030 xustar0030 mtime=1500919838.103315139 30 atime=1500919915.789981805 30 ctime=1500919913.373315139 denemo-2.2.0/docs/images/SchemeWindow.png0000644000175000017500000005003413135434036021703 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRÐxkp?ÔsBITÛáOàtEXtSoftwaregnome-screenshotï¿> IDATxœìwxUÆßmÙôHè-ôªtˆt•*E)" êgG¥¨ ŠØ)"½Š€º…ŽtéÒ› $BBz²Ù2÷ûcØe²»3;»Ùl çÇ><³wï=÷Ì™»'wgîÌ«ÐérAA>ê¬ÌÌ¢ö â±@mÙZ¾bEúAQšxaØ0ÛBEòý{«V¯Ž‰‰iÒ¤©¿¿¿çÝ"¢sëæ_7mjÛ¦müíïîn!™¢¦lKD¡¢T*9ÎyÆüÛß͹«Ì ¡„KDá¢T*+„®[mžYO)ÆÅ>‚  n¿höðdkáœRp»Y!4Ã%¢pqûE³‡¿ýÝ»šU©TL&“ÃB1ÔŒq œKÈ#>!aÞÜy6n¼|ébQûâ ŸñÅ•+W—/[ZÔŽ<^xþ¢Y—®ÝÄ>úý·]®™U©T-[¶R©”gÏžM}ð€/ mذ¡ÉÄþëDÎÍJA¬á }ûö=wî<€5jdggûøøÔ¨QcäÈ—›4iRÔ®9@§Ó}ÿý¬íÛ·=xÖ¼y³o¾ùÆnÍ矜˜˜ÀÏ? +«{$ßU»$&&%&&zûøJ/…ä8nÿþý;v,¨»€ÂXV€®ÔVÒ¬É``Œ)ÊFbNŸ>õàÁƒÐÐÐFb0fÒ …ÂaïJV˜—ä+~ýõ×êÕ«8xðàÉ“'·oß^µjÕAƒž›5kVQ»æ€iÓ¾Z¸pá§Ÿ~vùò¥—^zé×_7y{{Û­yàÀ~~‹ ù®ÚeæÌ;wîtøÅ8räÈÈ‘£Ôjµt5B&ü ×/¥y**öâû1cºðźlÖh4nÛ¶?ÃÓ¸r¥Ê11p·mÛ6£Ñ(í š1F§Ü…åt{Nv–Z¥;æƒäääÙ³çtìÛ°Aý¢õM‚­[·=óÌ3ú<]Ó&M"##Õj ˜ýk<º¤PÃÆ)WmQ«Trs²%œ×ëõ \ÀÛÛ'+3Ã-n?Î( ·/ 3_Ýr`³VÍZ¶…­¤Í*J}^^\\\¯^½T*Uí:uŒF£ÉdŠ‹‹ÓçåùùúJX¶œGPò§èå–×£ø à<øyÆX\\œR¥bÀþž{~p§žnÛ®ÝûŒIyð€›6oö 5kÕÞ±s×ðGÄ4nÒ©s—¿OâØm²ë·ß^ñRÍZµ÷ìÝ;rÔ+Mš6{¦gÏsçÏÏš=»e«Ö±Ov²4?wþüK/ìÕ»O§ž:lØñ'lÝHOOŸ1cFž^_·^ÝC‡ñ£âïS§:pÐsݺ÷˜7p·mÛö∗xWOŸ9ãWí6wÙÕY³çôîÓ·f­ÚÉ))½ûôí?`àÆ_}¶ÿ€èšµ8Æâ¶lþâˆZµëlŽ‹ëÕ»w“¦Í>ýì3½ÁÀ€·Þ~çÀÁƒ"##kD×L¸s§ÈÇU‰~Á¼,Ì/•R @¢‚9Í9.tÊlppP^žîðáÃü¯µZ}øðá¼<]ppCg%\±¬LœÊ•+¸xñ¢F£9xðàË/7nìÞ½{wîܵk×®Ï>›¤P(z÷îýß÷8Ž«X±âðáÃ;uêtûöí¹sç©T*±&?þ¸ðàÁƒÇõÊÞ½{322.]ºÜ·o¿Y³f'''ÇÇÇÏ›7_¥RýóÏÅEEEíܹóÏ?ÿ¬X±ÒСÃþùç+'?øà…BñÍ7ß 8èØ±cgÊÊʼxñÒàÁCêÔ©1}útƒáÑ37ئM›Û·oÿðÃÜ‚»*ÖÜeWßzëÍÜÜ\ŽãÞ|ó­””µZ=dÈÐÌÌLÆX@@à¼yó:d2™vïÞóÚk¯U¨P~ÕªÕ«V­0þ¼jÕªHJJJJJª]»ŽR©,ÜQRª1Ïp݉Ҽ~K ¾k9…N™å8®Zµj­[·6ŒFcëÖ­«U«&Ý3£äøU ôrËËBþÂÜÜ\¥R¹|ù ÆØ€Ë—/£Óéöïßï­õ†y)tË–-;wê4yÒ$wîÜñòÒŠ5YÿË:þ\êñãǯ^½úÕW_¨P¡Â… ~úé' ^^Ú…  †Ñ£G+ÈÓåŽù²ÉdZºt™J©zøTî›7ojÚ´é™3g† ºmÛv0¶páB£ÑøöÛïp÷ÎÛo/_¾,44Ô’ÿ^}õÕÞ½zMšô™¥¯º*—]壺qãÆýû÷5mÌ%¶oÛÊ{µ`Á‚~}ûÍ›;À† ¼4^–à 3#=3#3™Š~h•Ø×ÄëÖ)®å¡b¯‡¹UF¡SfCÚ7o®P(L&ÓÞ½{M&“B¡hÞ¼yhX˜CgxÔŒ1ȸ¸F8…%Æ·nßP£F @‘œœ àÒ¥KÁÁÁjæÿ‰a4}|}p§T*%šð9+V¬˜••Ù»w¯qãÆiµÚ¶mÛXšß¸q@TTT^^"£Ê¸~ýºÆKk\¦OOO¯]»öš5«gÏž3{öìY³fõîÝëúõ낃ƒõú¼¦ÍšªTꜜláèÉÓç…††ºËU9ÁqÍU///.·RåJÂÇ=[¼R«ÕéQåÊ•)SæöíÛ/Mž>Ïö8AzYXŸ¾ýl 7ýºQ ¿œÀáR³Þ½ûØJ´’6«R©š6m(8Ž‹‹‹{ð åþýû½zõR*•M›6ûý·]r–â*YQÿ,U¯GGõaÉÊ•+ 4ˆãL5££ìÝ»73#=#=ef¤ÛihFNÎdR þd ·+UªàîÝ»œ‰c÷þKPµjUeþn‡ùÿ½öjPP`ff¦Vë àäÉ“ŒãÀ˜Éh0 …çªTsw¸Ê8Îd4 K„ۜɔ““S®\9…BiùÈÀ¡WÁ^–‹fb/ØCz‚ù·¿s6Z–6k4šŒF£Á`ˆ‹‹ËÎÊŠÈÎÊŠ‹‹3 F£Ñh4I8c9¥@3ÜÂ"##cîÜy›6m~é¥:tÈÉÎzå•Qq[¶Œ?~ü¸quêÔŽOHX½zÍÒ%‹%Œ¸ÐDÈË/øý÷ßçÌ™óé'9ŽûqáOæ7Þàòÿ ÏÉÉù7>!*²ì¾ýû³²²_yeˆB¡xþùçÿܽû½÷Þûè£ËDD;~<¶clõêÕ ÉU™ÍÝ⪌±Ÿ~Z”••õÑGñSj/Àš5kžhÑ<<<\£ÑÈ4EØE©TJ¬±³,ØR½šÔêC~*ê¬M‡–¥Ír·téüo»ÐÐдô´Å‹¨P¾Ë™4ª±cÆ*蚀;xöÙþW®\°eË–yóæ¯ZµÚÄq“&Mzíµ× }ž^{ýúõë×oÙ²511iàÀbb¾þæë}ûö›L¦Ë—/wíÚõ½÷Þ»zõjvvvNNN·nÝÄšìß¿ßd2]¸p¡{÷îo¿ýÎõë×ù9Úo¿ÿ~ôèÑœœœÜÜÜž½z¶nÝz×®]‹—,Y÷Ë/&“iæÌ™M›6ÍÍÍž¸zõêœ9sfÏ™sæÌÙ—^1fÌX£ÑX¾|¹Zµj;wníÚŸÿ:üWùò:wî<ç‡öíÛg2™.^¼Ø­[7ÞU¾¯®ÝºÄU±æzƒ^dù®Î˜9óÀ&“éŸþ‰®Y3$$dáÂ…»wï6z½¾y‹æ+W®JKKÛ½{÷Â…?ݺ}{ܸq/¼ðB^^žÉdRkÔ/^:vìØÕk×Úµoç¥Õzz0•" zý½{÷”ℇ…Û¾$ê+•JoÿÔÔT§l:´,mV¥Rùûû[ }}}ùBF#f6%%¥~½z|4É÷ï«ÕŽ3!ÿ€@ËÕüvŽãôy:¡‚‘J¥òöñµTÓëó z½··ÖÛ€Á ÏÉÎöõõÓxyÈÓétº\Ñ&Z- ƒÁ“åëç§Ñx±ÜÜ…RéííÆòòòtº\µZ­õöáýaŒÓåêl5>|ýüÔj5 `Œéõyy:_®Ñxi½½•J%cÌ`ÐçétZ­·ÙUCNvÖCWÍ}ÐU»Í]wÕÛ[«}èªN—Ë™L¼ó …"O§ëÛñæÍ[III&“Q¡P2Æôy:½¹;//-¿›&“17'‡ó¸Lvvö¹sç wÎêüüËDDܸqÓ6 Ïì…. 0€ßV3Æ”p݃œuò&“)Ûæ¦X.WxI'''9ÙÎ5ÉÎ5±¤!F£Ñèè6Üœìl»åƒÞŽY¨®Úm¹¹ºÜ|÷DäåéòòtùÛ!+ÓNz}ž^põŒ(üôÐÍ¿ýÝœ¸ ɬz–ñ82yò”„„;^xá…>ú022²¨=*µ( µZíæ„«RIŸÃ-VfܺyßPü—”èåååö¢˜ããëk9ᛓÍæSPs®_¿ž—çΟ Þ>>~¾¾)))n´Yxf;öÆëoðÛô<\â1%7''7‡äS=AHHÈ;w¼¼¼äíRò%¢¤£T*­RYqI¸Œ1þ¬¥Z‚ Jù3«šŸòŠ%\Žãâ¶nÛ¾ë·[·ok4ê*•*÷ï×7¶C{GóáÇ֮޷j%ñ‘¤c €t— ˆÒ?–8˜á~2ùóc'N x¶ß‹Ã†fggï?xèÓ)Ÿß»÷ÊÀþÏZr¢m[‰ìòКáQªQ+ à8Înfüí?>¼pÞ5kÔà8N¡PtïÚå›é3,ZܽkW¾‰Ýd-ñ‘–šüŒ›Ò.A%Ëí”–®-?¯_ߣk—jUª “ÉÄëK?7p@Ó&oÜ|(li·¡ð££ÇwìÚýÞýûb½X5¤TKDéÀ‰S ÷““¯ß¸ùêË/[i=•-Sæ»i_Æc'N@Æ ·vÍšÓ¿ž(s¶Këp ‚(Ø[‡«°Ÿ4“’þnõ3?uAæ)…€€€Æ‰µ°j€÷ÇÉý"‚(vX¯ÂuxÑL¥}B¹Ì„+3{ZªÑ — ˆÒ®önDD8€»wïFE–µúhÁ¢ÅU*W  ƒä•1ùÙÂu¸6‚ J" …Âf®Âþ*…ˆððJ+î=p IãayÂ;ë7þ:òÅáîO¸t§A¥Û<&ºJã¸ýúþöÇŸGŸ.Y¾B©Tvhßžå_`»Þ@ì#1Ä\$‚(©X=KâSÑî]»üuôè§S>oß¶M½ºursu‡½xùòð¡CÊD„Ç'ÄØwà ŸŸ¯¥‰·O»6­…çp322®\»Ö¨AF#á•UÎ¥´KDIG©TZ¥V©‹fF£qòÄ [·ïؾk×_GŽ*ŠªUª|4vÌ“; ¾É‚Ÿ ›”)Ѷu+a½ríÚ„Ï&¯Xü Â!¶+ׂ J¢çpy Ã3OõèÓ«'?åä8Ž¿ý@³&Möý¾Ëª>c,''‡ÿ(''‡1Ö¼iS˶„Lpk/Íp ‚(عh€ã8«»„äååÙ•;ã8Î`0Øm"üH¢šU‡u‚ J4ÅèñŒLpk/Íp ‚(éØ;‡+²×Ã<ºbFëp ‚(¥88‡ë1,§h†KDéÀÞfÅ#áÒ:\‚ JN<¼ÆÃ<ºh&¸ßŒ ¢4Q\T{‹Ü‚ ˆÂF­T*M&Š4å) ƒÑà¥ñ‚ùºÍp ‚(éäéóø´fAœü 9$(D©TÊ1a•—¦iË]gu EFVF™2e_»q­vÍÚZ­VŽ?„L òµ€Œ‹¶y©Çñ-E®~*§‚k<Ç”1vùêe>­YPGEF1Æ’î%F±––ù¦ØÛ vêXþÁΉÚà àrQå CTdÔÝÄ»ÇN“ðç1ÄíS~— –ôîõßk®9PRÂ.µ¬Sä“‚®u©µh§n 3ŸÖ„%j£ÑX¡|…*•«8<¢NýQrö/˜Édâï–ïá,ô¢@‡©Ô`Ikÿ9Ï—¨èõz¾´˜PÜü!‚(uêÖç7ÔÇÅ߉¿Ÿrßî—Ñjµa+TT*”d÷"ŒmQûBN Ž¿¯ÑhbÛŪÕê¢v¦Ta4/]½Ÿ_¹be ²{ƶ¨}!'Pß»ïÉO2³/á.”Je­µþ:ú ²{Æ– Š?;¶Æñj£É¨T*霩Û1™L åÃë~d÷"Œ-AúÄo<ü…KFÝŽí* ²» ,DÉ"#=ß(.ÏÃ-˜ƒJAv?K¢äÀÌÏŠ).ÏR(•(Ø£@(ÈîE[‚(æpæï>Íp ó=ud÷Cù–()PÂõBeL ²{±Ä– Š?ìQÂ…"×sŽ?>æÃmË[=ñÄW_L)TÿîܹûÛŸ>7 ¿S æ¸-Ûwýv71Ñ[«­\©Òs´nù„SFøß°fuDDx䳂Dp·mÛö¿Ýº}[£QW®Ti@¿~±Ú;åsý´‹ÕP(!!!mZ¶|mÔÈ€ùݹì€4”q‰’“3ÃåÏ‘}úñGÁÁAÂòà àž¬%ܽ³dùŠ^O?ííííTÃO§|þ÷é3ŸíW«fÍœœœƒ?aâ[¯¿Ö¿o_ùFêÔª5㛯‚ƒƒ¤wSÚɇQ•1Ãýdò”c'Nè×wİ¡YÙÙûütÊç÷î½2°ÿ³ò}vÙO ¬€>OåÚµ5ë~IKOÿü³Oäwç²bcKÅŸ|3\1‰¾°aýúV=Oþ:vª£ããþuxêäIíÛ¶á8N¡PtïÚåËo¾]¾ru¿Þ½å_c hÚ¸±|å!±jBeL1k¿ýñç¡ÃGÎû¡fŸ¿™>cÁ¢ÅÝ»u ðHº€³GÍv´nÕÒßßöܹyyy^^^’­ítçÆaCçgˆ„e¸*-“/[øÇ8S~8Ž;uæLl·'ÿ>Å×Üwà@ç§ž¹~ãclóÖ­C^|©ë3½FþïõCÜ·eðð]ŸéõÒ«¯íÞ»ïèñã»v¿wÿ>ÿ)ÿ6åÁÆÿK¶ï ç:víni.a™'5- @¹¨HƒÁ`2™ŒF£^¯ïõÌÓíÛµÍËËsÃÒõÅË—ßzïý×Þ|ûȱcí;w½wÿ>_~ãæÍ7Þ}¯ËÓ=‡¼øÒ®?þ°Ø±ë¤0 f¸¶ü¼~C÷®]ªU©"ôù¹š6n¼ö—õB¯¤ƒ——·à§Eϱë3½z8nÂÄkׯKøé0˜ÌÞ0þþ€â؉ò]Öü¼nÐк<õÌð‘¯ü¹g¯Ðνû÷G×­g¯¯¼væÜ9éØDñg÷Þ=üˆ•J¸ü€Öåêròc07jôT÷n3çÌÑëõÙ99³çÍúüsÕªVý5nËì¹óŸŒí8ñÃñÕ«UŸ8iò‘cÇxS¿Æmùþ‡¹íÚ¶ùôãëÔª=åËi§Ïœå½á+XžPÉ{åå—Lš8aú×Ó,ÍÅ,[¨Q­Z``Àä©_8tH§Óñ…5kÔûÞh///17N>ÃwýíŒïÔ«÷Ú¨‘Oø±O¨_·ÎÄÇר^í˯¿ýûÔiÞ”­“bé@,È÷îß¿~ãF‡¶mùù¯…²eÊ|;mjLÃB¯¤ƒ°hé² ›6?Ó£ÇäO&üoÔ¨ÄĤq>óSN0m@Zzúß§N/]±òéÝ-ϱ—sìlK~Ù°ñÇÅK:vh?ñ££kÔ˜òå´ÿm±3yê—-š7÷þû¹¹¹S¦:ˆ-A.^¾È[)I~†3ìå‘Vå#G¼øüÀÿ{eÔ°/¯þy]fV–¿ŸßÐçŸÓëõËV®ä?eŒuh×Ö`0,[¹ºE³f&“iùÊUýúô~ý•QŒ±vmÚܼuë÷?wCp‚‚ïŽ]½:€õê…„sg4Å, óööþî«i3gÏùdòçjµ:ºzõúõë5‰iÔ´qc•JÀ¾»wwlß@ϧŸêÛ«'ÇqÇNœxè €ömÛ¾þê+|¿o¼;zåšµ1°rÒN-Q rÒÿˆˆ·úˆ1¦×ëy›¯$ @o0¼þ꨾½zñç%>úä³ÔÔÔàà`ׂ)6¢"#_õ•³çÎÉáÎŽ]¿à L«À1îò•« /™1kö“;B˜pÅm î&&¦§§wlÿè(<١Üù ,jѬ)ÿQ``“ÉdJ¸D ¢Y“fæ„ ñ 茨^­ZxXXþ⇴mÝÊÏÏ78((ºzuÆXfV€ÿ½ý®•™œœœÌ¬LA–ŽTJ¥··_Z°G³¤|Û€„e???a ªÑßϯ}Û¶Û·W*•×®_ŸôÅ—_|õõ¢ùsíº¡Öjùî´Z/+OøÀÀKýN—••åççg夽ø™W)ˆ9<<ÀÝ»‰Q‘‘V-X´899Eè•tNœü{õºuÿ\¼X±B??ß‚ÓvÔ«S'''gùªÕÚ¶…¼cgý)ðàA*€€K…àà >ª|Mÿ‡1N4–ØDñÇ2€Õ …èt>…Ùýèçõ”JÕÝĤí;wuïÚ%,4À'}X¶l>Ý4­V 55­¬YRínbâÅK— ø:¥gd ÿ·Ë²-aYèùùþù`üGóg_¥reËoüJ+¾8lè¤/¦æääØuÃ2ѳúb[¶S<°ÔOIIÑjµ¾¾¾¶NÚ³Üif7Èe""*U¬¸ïÀÁ&c„å wî¬ßøk£† dáAjꇟ|ÚµS§ÉŸL ð÷gŒ=v|߃ ¦á0™L•+U4 º<ä;a4ø’ÐÐRSEõAªV«µ¤{«X‰&\ºÓŒ(!X~ÌI^4ƒà‡¢ wî¬X½æ7^òÜ …K–¦¥¥•-S&(00--­füëҥ˿ýñ§R©ŒŒ,°ïÀKó゚µaÓ&iié|ÉÑãÇu—¿k ËB—ªW­ªV«·nß!,4™Lç/\ óöö¶ëÆú_7Yï©å-€½ûÖç8î={kFן‡Uˆ_4ã8n@¿¾»~ÿýèñÂÂ%ËW(•ÊŽíÚÉ BB½^ß¿_Z››«ÓéN9SÀ`Šíàµë7‚ýýýe;»ìÝÿè(ìÙ·¯VÍhŽãD„xl ¢øc´R¯á OŸ=ÇŸJÒ´qã³çÄ4lغå-š5Ýõû?.^òÁ»ï 2xî ÿ»w¿ftõk7n®[¿á½·ßbŒ)Š¡ƒŸŸ÷ãBÔ­]ûïS§Î_øgüï=}ÆœùóûöêyáŸK×oܰ8ßL<|ìxù¨¨õë)•J1ËB¯¼½½G¾8|î ïݿߪå!ÁÁYYÙ'OÚ³oÿ„ñcÅÜøöË©yú<Œ=Üeóÿ7vüö›R¥¬½ÿà¡ó.|ýÅç|¹•“bQ¶ÝÒ½k—¿Žýdò”íÚÖ¯[7'7÷ðÑ£/]~aÈàÈȲB7$‚P©REooï³æ<Ý£;ÇqÇOž<{î<€3çηoÛÆµ`ÚÆpãæ5ë~òÜ Š*¨T*9ÇÎ6PJ¥rð  -V(µkÖüëð‘3gÏY0Ø;ß!™ IDATvBG9—(Aœ<õw“˜ÆsÑìëé3l?zóµW/_¹ºäÇù¼˜ùÛo¼>~ÂÄ.žìÓó£Ñ¸)nËÆÍ›ËEE½÷Î[];uâëôíÕÓd2mŠÛ²uûŽ åË6á£Ö-[X´lù·3¾oÞ¬éØ÷Þ{ãÝѼ3µ¢£c6œ3o¾¯ÏÏ+—°,p˜õëÓ»Zµªë7nZ¼tyVv¶¿¿Ý:µ¿6µA½zbn4¨_ïøÉ¿aÿLþdŠUkâ¶n‹ˆ?æý˜F ùŸØ¶NŠ!d£Ñ8ù“ [¶ïرë·ÃGŽB¡¨Z¥ÊGcÇ<Ù±ÃÑãæÅæ†bAð÷Ÿ:ù³?-únæ÷AÝ:wyç×_{ûÃG޶kÓÚµ`Ú…BQ¶L™!Ï â—7Œ}o´Ìcg[òlß>F“)nÛ¶¸­Ûø£P¯N“É$¼ø–ÿ@Pn%J0Ÿ:Ù¸Q ÅþƒûkEײœb¢R©ÄîÅäo4ÊÍÍeæëìÞÞÞ:Îd2i4µZ­T*9Ž3 ¯1ÿŸ}øÔj5Ã’Éd2 >>>999üTT«Õò—ïsrr„ÍíZ¶r[£Ñ(•Ï–ð•…§¡mÝàýç»¶ìNNNÎß§NüÙ¤UKGEEªT*«~í:)D«Õž=6¦aÌ…‹Ä‚lå1¯¤ƒ R©¼¼¼x F£Ñ`0x{{s———çr0m¿¨‹ßùÇNÌFßݶ8 v l®%¶b!%ˆb²eKU*El‡ŽàŸ‡ËqœÝe¤ü7AÌŠP0FX3//OL¹Ëö#+EôÌÌL˶m “°,ßm»v¬šXÞòO±4šŒvó©]'­Ì ·íYÌ%[¯$jÚ­œ-á§œ`:òLÄ„]ß$}'ˆbDl‡€£u¸„Ã…_ŽZ?lHAv;O¢a«’ëp K¸üÙíP0‰„e´:^‡û8Ó¤qÌîÛ³²²\‹åg/ÙíÐ)¢!˜áR.Ç`0HŸ–æÑ —‚ìn(˜D âQ•xx Q@ÍÂ(Èî†f¸D‰Â’péúC¡!Œ*Ù½P0‰Ä£®R©äרÒv/ …Â`4ðÏ¥ »al ¢øsñÂ~Cœü 9$(ÄêÑ|…Šü¼SÊÊf!%A…B‘‘•Q¦LžrFØáÆ– Š?ƒ_Áo¨£"£cI÷’ÄnÜr»êa¶…òEÆœ²,ýÖ}˨ùß jØ©/ÒCpPp¹¨rƒÁíA.Âbx]Š­üÞ ¢¨ÈÎzx[Úh4V(_¡Jå*.|9åS$?¥‹ü÷»ÉdâïÅò@=¿³E^Kl ¢øãðP²D ›{4‰Â€‚L„çÎÛA<æPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <„Zâ³c'NŒûx¢mùk£FV­RyÜÇ×­ZqóÖ-~#"<¼Ðœ$‚( H%\žÆ~$,©T±¢·÷W_L ,4Ç‚ JŽnL£Fvg¯-š5+‚ J-.žÃ=vâDl·÷““­Êã¶n:â¥nÏôõú›9Z`÷‚ JŽn^^^n®ÎòÒ‹?ŸiÓ–­³çÍïЮ݇cÇT­Ryâ¤ÉGŽw«·A%ǧ†½4Rø¶M«–Ÿö©m5£Ñ¸tÅÊÆ~n€ŽíÛ Æe+WµlÑÜ]¾A”h'Ü)ŸN |tÑ,PäBÙ­Û·ÓÓÓÇÄäæêø’'Z4ûnæ,Žã<ùhs‚ ˆb‹ã„[«fM9K¾23³¼þλVå¹¹¹~~~®9GQšpœpeàãqcËæ>Ñjµîê‚ ¢Dã¶„Y¶lP``VvVçú±|ɦ-[ÿý÷ßõ빫 ‚ ˆÛ®F£:øùæÿxÿ~ríZ5¯^»¾úçuï¿ó¶»ìA”tÜ–pôïÛÇh4nÞ²uý¯›¢"#G¿õfn]ÝhŸ ¢D£HII)j‚ J-Ë–-=ú=~›lAxJ¸A‚.A„‡ „Ká!(áAxJ¸A‚.A„‡ „Ká!(áAxJ¸A‚.A„‡ „Ká!(áAxJ¸A‚.A„‡ „Ká!Ü©øà؉ã>ž(, iÚ¤ñk£F††„¸·/9žlX»Úª_ƒÁ°yë¶»~KLJÒjµ•+UÔÿÙVO<áÐÔºU+ä¨.øl‹Ì½¸s÷îïîÔÿYŸ‚yM„5nn^îùKÿ{÷Ç™¬j(•ªJåªÔ¯ÝÄG+÷øÑØ1AAÇâïÜYµfmrJÊô¯¦¹Ño—™ôÅ—§NŸî×§wÍè99¹‡ýè“ÏÞ|íÕgûö)j×Dq‹Ïµ¢k~õÅ”à  éjwîÞ]¶rU¯gž¦„Knça½xå,ÇqMê´T©TV5L&Ó½Ô»¯œmÒ@î”*¦QCË4ê 4×zy͘=G§Óy{{»Ëo×ø7>þÐáÓ?™Ð®M¾¤[—Î_OŸ±|õš~}z+Š¢uÏ.îò9((°E³f…æ&AŽy˜pï¥$6¨Õ4<,B©´>«Ëqœ—ÖëÜå“.÷áççgÉ qÛ¶­[¿ñ~rr¥ŠF ÖºUKKµÍ[¶®Û°19%¥BùrCŸ>¶C{¾|íº_6mÙúàÁƒråʽ0dð“;ÀüyÞìïç.øÑ 7Ì›ý=clùªÕ[¶mÏÊÎjÔ a»¶ml=IKKP¡|yaa¯gžV(z½^«ÕÚõÄÏÏ@RÒŸOûúÒåË墢Þ}óF ˆíïÛŠÅ?};óû‹—.GE–ýÖ[fæœ9·nÿY¶ìÛ¯ÿ¯YÓ&RŸc;´· шáÃøS 7oÝ÷ñÄÅ æ}÷ýì+W¯–‰ˆxaèà®:ñvø3BÏ>7Àž];äa‚ d¡7n€›ñ×*•«æïﯴA¥R¦¤ä»Õ+×thîÎÝ»ìÞÓëé§5Ñh4 ·nÿûÓ’%6x²cÇMq[æÌ_ðLy&;+{ÑÒ¥µkÖäSɦ¸-³æÎëÞ¥sÿ¾}t¹y‹—-oØ ~Tdä/]ðÓ¢ݺöíÝ;;;{銕 ê×+Åwtéò•˜† ŸyºG¹¨¨Ÿ×oX´tY×ΞíÓçnbâÆM›M&“Õ¹H¿-ÛwœüûïÐÐȲeÔj5€ð°°6­ZòÛv= ;áŸSgÎÄvhß¹Sìñ'÷îß?°ÿ³|eÛ=R(ìÞsêô™Øí;Åv<~âäoþyà¯C½žzªSlÇ'ÿÞ{àà ñæV¹Õ5Ÿ6¨Ïqœ0DŒ±?vïðl¿´´´?vï9täH‹¦Mûöž¾jíÏ4ˆŠŒ V«O>3aü¸§{t/_®œ†A<Þœ9sºU«VüöÃo¬—F£õòV«5vh½¼½4ö?²Ë°—G ßFEE¾ÿÎÛF£qéÊ•#^6xÐ@Û·Ó KW®z¢Es“É´låª>={¾þê+Ú·m{óöíßÿÜÝ ^½Uk×öëÓ›/íÐþÁƒÔå«Ö4mܘ·üT÷nýz÷`0Vÿ¼î™Ýß}ó Þø;Œ9wþ‚•c~~~_Oý|öÜyŸLž¢V«£kToP¯~“Æ1Íš4æÏ¥ˆyà™݇<7¾üæÛôô ??_»{4â…¡ôëûT÷n¼Í¯¾›þÆ«ïwëÒÙò6##Ã××~ó'Z4w‹ÏÛ·†è؉B³m[·æëwlßî­Ñï¯X½¦qL#5£khÓÈÃ9 âqàaÂÕh¼´Z/Úþ¢­ÖK£ñ’otò'-gîÞYðÓ¢Ùsç÷ëÓ;==£q£F¹¹¹üGO4oöÝ÷³8Ž»uûvZz:®€ç»iSM—˜””žža9· ¶Cû¹?.´¼mÚ8†ß¸›˜”™™Ùµsgþ­B¡èüd¬mÂP»fÍfÎHII9}öÜÙsç=ºnƨÈÈ)ŸN¬^­š]O=öù´¯žhÑ‚/ `âL·nÿ+¶G7jƆ†hܨ¡ð­Ñ$ÕÜêÄŽ >›8îâ¥KÂYÑ9¶£%V]:=9ÿ§Ev«áF%\//­Ø ×ËKëT­]«¦å¢YƒúõÒÓ3/[ÎçÍ×ßyתrnnnFF&Ì™ˆÇ××Àõ7„[ÊCCCt:]vv¶°€´´4aa¡–ša¡¶m ëÛ±SlGW¯]û⫯§|9méÂízà€_w!$33SdtÔš|½Ô6?Ä›çúùùÐg»ÛBBذ°0>ªvû%Â]˜®ÚK«ÕªEg¸ZÚ‰„kE¥Š ¿DaÂø±e"ÊXçeZZz¹¨(¾ðÎÝ»™|ÒLMK³”§¦¦iµ^¶y¯™’òÀRóÁƒT[Oοð?Íû¡j•*–Âè5^2dÊ—ÓrrsízrñÒe»ûfw2³²…Dª¹å:XA|æ³°©©©b•ú@«õKÍA¸‹‡?]½4Fc{ÅŒG£Ñ8u× þLEDDx```VVvƒúõø×õ7öìÛ¯V«ËEEìÝ¿ßÒäëé3ù_Í{ö=*ß½w_­h;×î"#Ëþ¾{·¥äϽ{m«U¯VU­Vo޺ͪüâ¥Kaaa¾>>ö=Y¿Áî~EEFŠì‘õÒ:'›çû³ç¢Ïìûla÷Þ}ü1-ºFâ¹*Ž J¿ÛZ­7cœX%Æ8­Öõ%´Zo-€œœÜaƒŸŸ3ÁýääZ5£¯^»¾úçuï¿ó6µZ=ôùA .‚BQ¿nã'ÿ>wþü·_NU«Õƒøqñ¥RY·v­‡þ:}öìw_}ig7ÔêAýûÿ¸h±J¥jÔ þþƒ‡îܽk[Í××÷¥á/Ì_øÓýû÷Û¶nœ••}üÄÉ?öìùhì1O>Ûïg{9W­V‹í‘d6wÍço¿œj4%zß¶s—J­®S«Öž}ûÏ¿ðÕSørþBÜá#G+”/oYúF„[x˜pCC"ïÝ-W¶‚íY£Ñ˜xïnhH„Ë}T,_Àá#G†<ÿœÑhäWŒ–‹ŠýÖ›=ºuåë è×Ïdâ6oÙºyËÖ åËòчMÇ4 ¿ÑdÚ²}ǯ›ãørËÅ(+žÐ_§ÓmÛ±sûÎ]Mbb&~8þ÷ÇØVÔÿÙêU«nØ´yÁ¢EYYÙþþuëÔþfêMÌ—l=ñõõ±›pôïÛÇv¬ÖH`·¹[|nÒ8FÚI>^¹ví¦ÍqááãÞÏrODZµ5lðýœ||}7ÿò³Ì!BŠ””jµ*5=%+'“1f]C¡ð÷  3­ïú%J"Eþh‚x¬X¶léèÑïñÛç³&Z¶lD9ÛyŒ1“ɤ×ë=ê#AD©ãaÂeŒååå­+A¥z.A„‡póóp‰âO‹fÍè©4Q$Ð — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂC¸a•Bhh(€={öX•7lØ0,,¬àö ‚ J4Ã%‚ð”p ‚ <„Ü„ûã¢ÅKW¬”S³\¹ruêÔ±Uÿ%‚xÌ‘•“’~^¿áä©ÓkúùùEGGsÇëzY±óæ-Å7ß%egó ™T Ä,¸ÐP`P æ¤ü…2¹|X„Äš;kÖ!.î&á1JkØÝ/™ß§Œ”d$Ü /þ¼~Ãø ŸØM ¶Ô¨QC¡Pܾ}[ºZ³È²;ú?Q$š. óÿ Á[g¹L’1š;ן$\ø ¢P‘ùMñ€‘âƒU ³~˜{åê5™¶üüüBCCSSSu:tÍpŸîU«È4ëf*Z È| 9y…Ý‹·A‚ <ˆƒn¿Þ½Gx±G×.rlEEEøï¿ÿ,% ˜ô×ársçûÎø¾Çú ñ™|¹ðÌÀ™{÷{¬ß:û‡YsžZ¿ñJjª¥Âùää6«×xOŸýÓ¢þö¥3Çï?P}áO>3¾˜3÷é ÏÜ»¿ðìY¯ïf¤ ž3Ùhéò—wîÊçeM 9 j-l`ùÉó$à 4ØÛÕüçŸ ß:>@}`_~kÎ=€P x ¸bc³ Ð×¼}P/˜ßnÀi›ó!výdÀ$ à ôâó÷ò5PÐõ€µ²û²ðÒ%€—EŒÃæW¤ÄoÒ¹@ ÀhðZ:`ýeûv×ÓÒŸÚ°±gõêFŽÛuë_çZjÚÙû÷Öªe½ÇÌÖK‡Í<t~2çìUø°>ukÐøÈž·ÚO  Ìæwþ66»^pãà ù£@YÀVZÈ®ŸßŸ}%@ TaŸŒúËFÀóÀÎ÷Û0–¿b×€³À@ãòùx謚Ï{€ À÷À`-ð%pxÊÑî[1 hL5wñ60X4úÛ%{‹˜]ãaw¸›;ê <,r€~@`(ð üu”SÇ…xŠí—œ! g¾)¾Ù5ÂSx£Ñv¨t^^ò€Là`ÐгRd°c×®†ÍZ >Âî§Œ1ÆØcƒa·™»ÿý:kΨ¿ñ8ÆÚ®^ƒ¯¿MÌÊÚqã&¾þ6>#ã`B¾þöüýd¾ÎñĤ‘;wå|…7~ÿÃÒ¶ÕÊÕ±k¶4|ý÷?¾?y’™Ùxå ¾þö¿ìì–+W Û¶/œvähØì &sÈÆÀX¼yã sùRÆÀØ}‘ú‰ùßZZ-3·²˜=È;o®pœ±‘Œåå·É×9Çc¬'cO2Æî0ÆkÍØy~ê el”¹œc¬­ÙÕ<ÆÂ{GÐc,cíåõkEKƆ™·§1ÆX¶ˆq¡ÏvCÇc`,‚±7%-{‰±×û^P¸‘10öŸ¼ÃÄ×™e~«g,œ±/2ÖB²w±ˆÙ—»œÝtØÑOæò%Œ±¥ùß®”Q‡ÿ†9O‰ý’3¤™ìoŠ„o¶F¬pûh”*)Œ•aì3ÆÞa¬c:—ò3}úw–m·-ÞÒjµ„J<·2³èt/Ô«Ë¿UCêÔ±jâ§Ñ¼õçŸ[®_ÏÐë›E–]Ø­«—ê¡Ìø`s}0´nc‰¦þ?tîôv“& HÌÎÞ¿òŸ‹8ÆzU¯¾ýÆMŽ1¯^í]CíÂ5ËŸÖ²)õ[{­ÊØ´Šü€·€-@ÐÌüSHÈ@ ùÖaàÀ8耀mI{~Þf4 `ˆyû& 4œt©ß^Àv€¿Œºè Ä‹—Éà~þYêïÀ·æ‰½¿.ÑrùVÎaê$è"ˆ²Ì¯À)À$Þ»XÄlK„]În:ì(Ö¼iï­Avgã)±_r†´v¿)Ò¾IP£Ql¨„3€/¹À"@+Û¦·%\FÀh|4ê“u¹¢üý,%Âmž2¾¾{žè¯ñ°yKè¬9Ý~Ùp!9ÅòiY¿GËÊùûg –ó³ûâºý²!ðûY­V®þòÈ1˹ÞÑ5Rrsß½›™y<1Éú|‚L\W”hUØø€P pÁ¦Žˆö— Ð8 "‰Ï¶Ç{€(A‰e;Ñ쉅H Èv¾ßÞ@ pHŽŧÛknKй‰…@ ØtVÀ—6§ðä¦@óÆ@K Àü€,ñÞDØ…¸Ü‘U"³›×äÔq6žû%gH‹a÷ÀIû&ÛG£ÄP0j-e{(Àm ×d2P™'§ÊúøHÌʶ”$eçØ6lׯOêÛoîèÿl¦^ÿÔ†–þÔOÊÎöQ«µ^þËÉé¾~C¥À€Û¯¾rëÕQ»<;²áÃS)uÃÂj„o¹~cãÕ«a>>±•*ºk Js Hv™ùÏYèìþêA@{à phÿ[*ÿ}H”$åÿèžà£ÿ Èù~ë5€-ÀF ˆ•4nE²=ƒå÷%×€8 ;P ¸ Üv#Åv[å«€ù_¾"½uf§$Â.¤à„ÿœ§ô~ÉÒ…ç›·F‰¡à;@ÜËöP€Û.2ŸçòT ð÷ñYùÏ£Õk.^´juêÞ½ ódèõ>ju—*•ßiÚäߌŒlÿûk/]â7°êâÅ&eË* pùÁÑ8ºYÓPoo¾Âþ„Gk©{U¯¾õúõ —¯öŽvå|Bap ¨d>@àà_ Û¦ZWà?`1ÐÐ8 l™fÚ¥ nþ9ƳƼQÍY|-ÐÌÕ~{[ @_@-iœÿlÉ2Ûa‡j@(°NPò2ð  F¡æÂýâþ8¤*¤mͯ3ÀÏ€F¤÷ï$wÊŠ*âaRðŽ ÂeçãYE|¿déÂóMˆ{G£ÄP¹ |ÌÆcóÿ픇Û4Ít:^¯÷òòÒh4ƒ€—RùAófã÷P+•í+VØxåêµÔ4«VÑÁ!:“ið–m#ÔÏÈË›zôh«råüÌY{ѹó¥²ETԺ˗&ÜÙÑÿY¾¼nX˜ŸFóÆïþ¯q#Çvܼ¹çßxûâÕ®Õ;ºÆô'• ÅÄÖ.MúåÀ‡m+ tQ?Ѓ@0hXŸ_¢ÊÀAóŸ÷V€8 L’í˜ð0PíÀ5ÁGã€ñ€ xøØk^ãâB¿½é€˜èÈx@ ¼ ¼ ²Ydfñí#`, Z¿€5ÀËÀÀÿ°Ã|AŸKS?/`ð.4NÓ€â½ÿ.¹S¶ÆÅÂîp7ê¨ ÔüœŒ§Ä~ÉÒ2¿)¾ ’aÄí£ÑîPaÀH 0è ¬>–‰ï”=Ü9LKKôèèiÑü“Ö­6^¹:|ûÎ,½aMϧ­šø{i6õ霛;|ûŽñû4Œü¥wO˧¿ôêy41é…í;Nß»·¤Gw˽á>>›ûöÉ2è_ܾsܾý•OV=8xÓÕkÚ”/æãæã[©’÷.-€ÀÀ³òêû›€d`80hü"R“_ñÜà 4|€vÎø6øØ ²òOµÆS€õÀPàð³àÒŠ³ý¶ÂÌ¿à¤W~€áÀ¿À"ƒïS ÀPàð30Ø d/ã€ÊÀi :°É™hyøX 6ó€—Ä{ï$¹S¶H„]z7íÈeÂ]ЧØ~ÉÒ2¿)Ò¾94âöÑhw¨ÌŽ?¼ÙÀr`¯ä~Ù HIIq\KËópÃÃÃ4h˜˜xéÒ%ìy¸;oÞê±~Cük¯Tp¡y̲å-£¢æË»_ƒp‘ %0¿¨Ý ëÑ8cÆôÑ£ßã·Ý9ÃMIIÑétEû¨°+©©gîÝXÛ¥õ „L®g€EíA $FwfFÆØÍ›7Õju¹råÜhÖ)fž<9rçoÕ‚ƒ:V,6ëJ3‘@5 cQ{B%j4ºy*š””ôàÁƒÊ•+Õ$÷Ûc'îde®|ú)¥Âµç€2ø¸¬¤ç×Å€5ݶJÁ™3gWrD÷ªUؘ÷]h˜ð¿W Þ;á7>á— H‰%áAD©Àm3ÜØX·/c!‚(UÐ — ÂCPÂ%‚ð”p ‚ ŒåÚk+|ë”ÛB0öc~Œ•aìyÆă&}yÚ¶/éú›ÄU‰XñÛkØcÕ["èÂ6Œb2ec'kΘc5[+øÔÈXcŒíí‘Dˆþ`¬c>ŒUdlcÉŒUgì9É&&Æ>a,Š1oÆžfl¿ÍÚ‰Qg[Al3ñïËßÜö ¸°SB¬ŽŽ{¤´çv(6hÅvÓv¤í‘°)‰p•‚ÛT{‹’­@O Á|:†(æì4ßPÁS=cIW¢ÔSXª½Eƒ8(]½ÀJ”zJޤ+Qêq¿¦™§9LÆÐMú„=fKŒ¤+Qê)ù · p ¨\ÔnÅ“om‰‘t%J=%?áÊ» (>t7?­Â”¬Gµ¥ú»Oá!(áAxJ¸A‚.A„‡ „Ká!Š:Ậäêšô¦k"£îê] „þ³S¬DU O¦·0ܰB¾WVÒAíº»J?ÎÆ¤X àB ¨®Ll…6=)½éÞ3·€_ f§X‰ª™^™nXQ¬"Yrq6ø¥=ì%n逪ôkN>r·˜ÃËô9ÅÄÇ ~~Ü7Õ–b•)x)¦i+´Ye_[yW8©"l·wiUÄP•³sK¶¨ª-E"Ó+³a±ýÉou,ìW.‹¶ÊohW¤Yz—¥%™åË6’D±Ãà[áÞ\@Õj»>Ë—L¶‡»O)ˆI±Ê¼”ÐδÚ,ˆ²¯­¼«4rz—XuA ÕÉa»v༨ª…"‘镯µ°±:bûhë•Ë¢­2Š…Tz—åH2Ë©ã‰bϨ[Q@Õj‡>;…Ûž‡+-Å*­ïH;Óö¹™®IoJÈ»J<©ÓaïVCuMrØÖ޳¢ªV‰L¯®…ÅÊ «c±Idm½r8†Åžx+GíU,¤wYZ’y¥<Ùf‡{ç²D±tðÝ® lך˪Õv}^!¦Šj/˜«CÁKפy]knWÞµ 8XuV Õ5Éa1œUµP$2½¸%,VÇ¢ªlU`—E[å4 ©Ã]v(É,³Žg$Š=£ lEU«]óYw_4“bu(xéš4¯kÍíÊ»‡«Î>«×5Éa1œU-r™^ Ü«hÈWvY´UNC±ž1;iÁj—J2ˬã‰b¨Ûލ‚¨VÛí½¸;áÚ•b•#xéš4¯kÍíÊ»Z!¡"l‹Ë Á3hE1—é£Â"GØeÑV™ ÅBZØ#Á)'…P¢¸€0]È´&GcØ©Dáþ‹fv¥Xå^zFwÖÖI‹¼«%T‰Þ]Sö˜A[ûÅV¦WÚm·‡E¦*°Ë¢­2Š…´°G‚SN ©âV‰bg)`º(ˆµ‚$ ÷ÏpíJ±Ê@•ÖÎ´Õ uMzâò®J¨rzwM!X — ºWTµHdzQJÌˆí£•W.ˆøòÈT{“ª-Œ]vÊI×$Š]ƪÀ´&G2Y7¯R“b•©*¦i+´éšô¦´¼«|aÛ™ Áb×4mË]“. ¨ª-E"ӻǭJÌb«,Ѱ»¶^9Ãb>ÈT{µRù»l÷úþÙ²Íî•(–|+Ü;€ ¨Z-Ö\Žd²€é…¢Úëy)V¢¤àÂØ %f¢´PºT{‰Ò)1¥J¸DñƒWb~Ÿ”˜‰Ò=¼†(~3QJq_Âõ¤+Q²pvl3QJ¡S A‚N){öì±*ywìø3lj3Ah†Ká!(áAxJ¸…EÙ²eëÖ­«Ñ¸vw7A¥â”p U½Õ-²¸Bu 1yQ³äFFFF™2ejÔ¨Q@Ç ‚(5³„[x‚n‘ÅJZy«0ÿoÞÈÍͽwï^ddd` -q"(^ ·P±Èâö(€^‚ÔîíO•- T|&åÄÄD*ÐÓ%‚ÜœpmÕOyµ’tAFÀ˲uR!.¥)S‰Ó‚[dq…§¬ Öš* &Ðâa\ÓÒÒôz}DD„ZMËï‚pcµ«~Ú0»Ìu®gî²uR%¤4å(q q—,®˜A¥YöYùH¿–1–žž®T*ƒƒƒ… ˆÒûf^ç€ûÀ³T4°ž¶€0 Œ½šz ) V îö0ä“€I€ÑÀË#0X ¼MÂò»ge\LÞ¦IÀ ³¹þËÀ[’ûkeP„ÌÌ̈ˆˆ   äd'µ8‚(u¸o†+¦ðÚ Øn–ÿÜôêÈÓI•–Ò”#D*{eqÅÉËËàííísA”dÜ—pyõS` t.z)Àa 8 ¯i…EJ3ÀüÌ ä‘Jà^Y\qŒF#ZKÜü,»ê§uÀ fžŠÊÑI-ˆ”¦C<#† (•J&“ÉÍv ‚(¸o†+¡~Ú Ø lújÙ:©îæ´5î1TóÜV¯×»ß4A% ÷Íp%^{Ó%0Q²¦ËB¼.Pp1Tyò¢þþþ233 â,A¥÷%\`ð0ð:ߘ?j„Jóù±š-€À@À_Ò0sé@u`ð°ÓM ÀÀl &ð³àÊ›l½µ›Yjª[΃Q²që9ܶÀ{å* ÐPIÖ öÚŽÆä/±’~+Q®>>–QÓîGv½Í¿¿FFFnn®ƒªA<xäÖÞ+ÀóRÜlj²eËHHH(jG‚(þ-§3@5 c¡wU¬P*•åË—ÏÎξwï^QûBD± ðî·€Xù='‡§|ùòæÜ¹sŒ‘¸&A€'îãú{:>>>>>¾¨½ ¢ñ˜M; ‚ Šzl`ak½ÊŒ${ â1‡f¸A‚.A„‡ „Ká!dÃ}šúÝÌïOž:í­ÕvïÚeÔK#T*•ãfA„Y wêWßÜú÷öè·ÞLIIY¶jµŸŸß°Á϶gA¥ Ç ÷AjêÉS§>7¦Ë“OÈÉÍݸ9Ž.A„³8>‡Ÿ vÍšüÛÚµj¦¥¥åää®_A¥Ç 7ºzõùsfEE>ÔJ¼vý†——‰tA8‹ãS ¾¾¾µ¢£ùíã'N®Y÷K§Žxå‚ B>rï4ËÉÍýqÑ⸭Û*U¬øÚ+£ Õ'‚ ˆR‰¬„{ýÆÍ‰“&'&%uŠí8ú­7ýüü Û-‚ ˆÒ‡ã„{71qôرyyúÇíü¤S*4AÄ#ŸŠýyý†Ì̬÷Þ~‹²-ADAp<Ã=ù÷)¥RàìÄ KaãFxp‚ B&ŽnrJ Çq:IX¸aíêÐBóŠ ¢â8áîŒÛä?‚ J=´œ– ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCPÂ%‚ð”p ‚ <%\‚ A — ÂCü¿:äo=‹]‘p&˜`"\€‰p&˜`"\€‰p&˜`"\€‰p&˜`"\€‰p&˜`"\€‰p&˜`"\€‰p&˜`"\€‰p&˜`"\€‰p&˜`"\€‰p&˜`"\€‰p&˜`"\€‰p&˜`"\€‰p&˜`"\€‰p&˜é;®™¹TQIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/Lyrics.png0000644000000000000000000000013213135434036016701 xustar0030 mtime=1500919838.096648472 30 atime=1500919915.809981805 30 ctime=1500919913.343315139 denemo-2.2.0/docs/images/Lyrics.png0000644000175000017500000060107013135434036020556 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRV]:½ÖsBITÛáOàtEXtSoftwaregnome-screenshotï¿> IDATxœìÝuxÇßðïž%'qW!$Á!¸Eðb¥P T PÚhK…Rÿ•º·*HKݨ …"!.h1,Ä]/w—“•yÿØp="—äî …~?Oà¹Ý›™ÝÙçvvf–ª««„B!„BÝ.ê* 1þØŠ‡×]¹”c\/è¹$!„B!„BèæÁ&„B!„Bè?Adæ»#ÇbÓOžl»þþ¥÷ô zï£'GGE mÞ2~ìØÑ#GØ6q;¿ý®ªºú‰G×J¥RãÊf­öƒ7-˜ç€ððîFhšfkØ*ž®ëèXLš0>jÒ¤¶ëÏddÄ'$>ýÄ:°Qj3Îeî?xðá•+¼½¼L×gžÏÚ{àÀªúx{ßübáÉÈøëÐßO>ö¨ƒƒÃMÞµyÇŽÇ¥¦§íííüýgNŸæìäᱬâ444lùbë#­ôòô´2…|mZvß½½­ŒêËo¾-//Ÿ7{öÁƒL׳,ûî‡1 ³úáUîîVîÅÖÔä†Ök®Æ¿ïÞS__ÿðʦ+«ª«·}ùÕ=‹…ô ¾;E!„B7“¹^—®\INM¶AQ$&§”•—ó!“SÓJJKmž¸ÓgÏ9ûå7ßš®¤ t\BbUUµ𦹻~ß½çÇ_~µ>Ët|,Ú?‚eåå‰)©ügÓÔšæ¢[üýý“bǵZ¿ÿàÁóYÙ|»ÀÍ/^Yyy\B¢N¯¿‘[\bpùJ~RJªñ`544~÷ãO÷¯XYZVư¬â4kµq ‰*•Ú²T™âkSCc£õQ:}&.!qï­ÖŸÍ8w4öx\B¢Zmƒ[ÀšºcC7íbÍÕ8+;çäé3­VªT긄ÄÚºÚ´S„B!t3™ëR©ôÅg7´ûÕ¾ßwñm7”B!ß³wßÔ˜è°ÐPëc³&Í/]ÒjuÖÇc13ÇÂ<ÓÔšæ¢[<Ü݇ Ÿpï=KŒ+išNK?qÇŒé|ü=R,7šÅ%Ƴ³³3=jeåå«Ö<úÍ÷?¾ôœ%‡ò_ÎÍÍ-íÄI½^oggg\—˜èææÖ³ÓŽZ\wl¨Ç/ !„BA§MfdžÏòóóõôðhûUMmíßGŽÖÔÖúz{OŸ:ÅÅÅÅ⽌3¦¢²òý7mût‹HÔNjsòòNœ<Õ¨Tº»¹ÅDFúûû¥¦Ÿ‰„£FüÓ%595ÍÞÎnDÄpÓ4ç俯'&À”˜©Ô¾¨¸xâøñíF©iéåƒá¯COŸ:%+;Ç4ï…EEÇãýýüfN›êèèȯKH í¢×ë‹5Ðôð¡CÆkqQt*ã\fJz:ḱcF›®7æºU.Ú-O3¦NŽyï£ {ñkN>Ó¬ÕÆDEµÚ¿Øö4HHJvqq

>Þáa¡­vœI))ŸoÛÎ8uúÌ›>ùò›oøÅ¤”Ô>Ù,‹-ɼ‰ŽÊ¼¡±ñƒMŸ¼ñλŸmÝVW_<>aÕšGÏddð[múô³ìœ\c$=úÛîÝ`u‰µÅq\Ee¥£ƒc«õížx¥ee¯¿õ¶Z­áÃTWW¿öÖ;õ üâ§_lý|Ûöú††¸„ć×>–š–n&*þ«ãñ ¬}4#ó|CcÖϷ>ýÜóÇÓPT\üØÓësró,žb@$M7þx|¢qÍÙŒsƒaì¨Qü¢™Ê²õË/ÿØ»÷‰g6¤Ÿ8IÓ´m/#晩;Ð~ar7íbæ(ßPó !„Bõ¸NžjjµÚw>øÐtÍ„qã&ŒëðQ6!äí÷?:xЫ/¿$‰t:ÝÓÏ=ÿá'›·nÙlqî»gÉ÷?ý5ib€¿¿éW¿ïÞ3{æ ~â.†aî}peJZÚ”˜èŸwýv6ãÿ°.1)¦ÆÄ·jÖj¿Øñ廿¯yxäæ]xôɧøéÐÚ0¤oðꇪo¨×juolüŸihšÞüùÖ ãÆþï…çRÙ´zݺ¯¾ùö… Ïð’’¿Þ±ÍÍÕ6¼øRBRò]óæZVm,Z° Oï ÚÚº¯¿û~þܹ¯] W W?¾ÎÞÞ¾UàŽrÑE2™lܘÑÇãV._ äžHŸ7gNÛ î¼3.>A¥V;(ç³²œœróò†‰D™™áááÆçŸÖ0Sæ…E;·murrÔë ^xñÓ/¶íÜö…™.ÙV–°,{îüyþ³Z­9täHEEå}K–´ ÖàÎyoù45=}Ú”Ép,.ÞÁÁą‘ü-b}cÃ×Û·:88´äeë¶Q#GˆD¢ŽÎáæææ?ÙêQ‘_~õõf­V&•@\bâØÑ£øqV–£±Ç?ù཰ÐPBÈúç^°áeÄúºÓJ…yâ¦]@:Ú‘eåcªºººUY©T*þC×/ïÝ­h!„Bè¦é¬!jµÆôÏ`0˜ ~%ÿjqIÉý÷.å»LÛÛÛ/¹{áÅK—?"-³tñ"?_ß6m&„˜®ßôþ»®^ͦišÐju}z÷êÕ+>)‰_/•UU¡ýB:Šª¼¢B.—ï'`æôiJelþü‹degçæå èßßšü …ÂIãÇÅ%$L‰‰>“‘AÓô˜Q£.]¾ ]¨,^ׯÆÛü2bóºÓna@SSÓ͹€t÷JÕu>ÞÞ­ÊêJþÕUkÖ‚ÙãÒ*’›_ÑB!„‰ñÇŒŸ­Þ¬¡P¬\!“ËL×['< <|îœÙÛ¾Úi¼Einn^µæQ¡P8³fõ îóìK/ó_ÅDG}ùÍ·™™ÅÅ%®®.£®MßÅ4M›®á‡y›‰°#‰„²¬ñÙ,C3Æ€X>ÛB×ÙÛÛèëzg´Ê ­ˆD¢èIã“yheJZú¢»æ·ÌÌi0zäÈ£ÇG êáîîãí=|ØÐs™ç …§‡GŸÞ½m’H3eÎÓÏ|Rͳ61¥PÈ͇1sâM7î£O6§¥§_-( ð÷7N»&ç˜1Á2©ÔLTööö×þâ=‹­\öÀšÇŸøð“-Û?kÞÍ®‹ŠœôüKÿS«5ñ‰IcG²³“ðë»^YnÜe¤­nÕã‰ÑnaÞ´ ˆ;²‰®—.V4„B!ts¬xxñ³›@*•<˜_s>;ûÌÙ ã¢5V­x0%5í“Ï>ç³rr«kj¾Þ¾Õø8´¹¹™ÿàãí= <uuõå¾>>üšìÜ\ó›Xlê䘽þúæûšššŒïhÅÌi0vô¨¯¿ûþhlÜàA`ø!”ØIÆŒ²Mó²rrFD ç?gfe@€_ËXãü‘PPTèìì|Òs-Užx …|DDD|bÒ¥+ùsî˜yýV9Æá?·ä%ÀßLTþ~¾Z­¶¸¤$0 €_óԳυöë#†£(êé'Ö=òèc»þøséâEÖdgØ!r…">))95í™'ÿ¹ÖðSÖw¥²ÜÐËH+ÖvOŒv Üœ ˆW*›èúq1SÑB!„ÐÍg: ÞÆOfz ÿlÛöÚÚ:¨¬ªz÷ƒÊ+*l¹L*}â±GÏgeñ‹ŽPUU „ßwï)*.1>Á›u<>!÷Â…™Ó¦¶ŠgôÈ‘Þ^^Ÿ|úy³VKÙ»ÿ@~~>EQæ#„ëox!}ƒÃÃB?ß¾ƒíyVvΞýfLŸv#&¾bh:95­Õ_Ff&Œ;ÖÅÙù½>njj"„‰=uêtGñ´ÍE· èßßÇÇûç]¿…‡…úøx·ÆÌiÐ78ØÍÕ595uÈàÁ0dð šfNž:=fôHkRÕEìÙËOð^T\²cçׯáïKœROœàKæÀ¡¿ùAõFV–X§ÌŸxQ‘SÒÒkjj¦NŽ1Ýê÷?wçäå@QqñŽ_;ÆÛËËLTÆùúø|òÙçüíâ‘ØØŒs™á¡ýŒö î³`þßýøcEe¥5Ù‘Æõõ7 ÃŒùÏa îje±ùeÄâºÓщÑnaò½n¤Ó+Õ ÒõãÒQEC!„B="ÿr®ñÏÆ½àÅç6<÷Òÿ–<°ÌÕÅ¥®¾><4ôñµklù¸1££&MŒOL€°Ð~Æ}á•þþJ¥24´ßÄñãþÛÏ×gÁü;£##?Ûº}ÐÀ~¾¾­"‰DÏ®êåW_›·p‘½½—§×Ô)“‹ŠŠÍGèíåõsÂo+ÿoõ–?2í™'ŸxîåWÝ{¿££c£R9"bøCË—Ù*¿¦šµÚ—_}­ÕÊà>}¾üâ3;;Ɇ§Ÿzí­·ç/Zb/• Ôý÷.ݽoÛHLs!ë`\z§¦ÆÄ|÷ãOuàutP5jäˆC‡ 4äry¿«Æo¨È‰žÜð¬ÔÞ^¥V{{y=õØcüú{—,þx˧‹î½_$;(óçÍ-.)ῲI‰™gþÄ›0v¬H$êÖê]} ïšÿø“OËår•Zíïï÷øšÕFõü3ë_zõÕyw/V(MJå}÷,2èºç·+¸?1)yÓ–ÏÞ}óukr¹÷À_“££$‰éú®WÛ^F,®;B¡°ma.¾{aN^ÞM¸€˜?Ê—RWtñ¸tTÑB!„P£ø§Ohll”Jeƾ¦X–ÍÊÉ©¯oðõñæ§ø¾qròòªªª{÷éÓÜÜ|òôé¾}‚;zâħY,éõz†a223íìì#† }óÝ÷Y–yí/›‰a˜“§Ï°,;nÌh•Ješwš¦3³²”J¥¿Ÿh¿š_3Tjõ¹Ìó„pC6}»žé‘2Í…P(´mZ7ó4èTYyù}®Üºe³‹‹sNnž\.:x°é jyEÅ¥ËWC 2 CKÌTG'žZ­Y¸t麵kù çLUTT^¸tÉÁA1tð`Ó4›©Z­63+‹¦é¾}‚;êÄqCu½²ÜÌ󧣺ŸÐAaÞ´ H·.}6dþ¸tZÑB!„ÐÍÑPW ‰ñÇV<¼îÊ¥ãzË›n]5µµ‹î½ãK/FNœµµuËZõȪ•sgÍê餡ÅxgÒƒm4–ÙõÇ;¿ýþÏ_~’Éd‡F¨Gݺ !„Bè6ÓQ€íüûy¸»/]¼èÍwÞ=tø°H$>ŸÔkÆÔÖS Ô³*«ªž|æÙªêêû—Þƒ÷ÿ!„B!ëý›`ÕŠc¢"³sóôzݬ™ÓGqCûx£çèè¸bÙîîn=npqv^r÷BWW— ãÆõtZê’[±¢!„Bý§ü „B!„B·±ŽØø¥€!„B!„úwÂ&„B!„Bè?›B!„B¡ÿl@!„B!„þDUUU=„B!„BÙ†——WG_‰Ì|‡B!„B¡Û@!„B!„þ° !„B!„úOÀ&„B!„Bè?›B!„B¡ÿl@!„B!„þ¨ºººžNB!„POrssëé$ „B7ƒ¨§€B!Ôó!=„Bè†Ã&„B!€ü˹PZZB¡P B–åXV Š„BBÇqÆð~~žü‡Í[>Û{²GÒŒBu 6 „Býƒã8M³ÖÕÍ%0°—J¥ÊÉή­«svvÙK››5,ÃEQÆMöÄž ÓsIF!„º ›B!„þÁ²l]mF£öó (++‹‹‹P”T&+(( W(´Ao'‘ˆD×ýˆ²—;ôT‚BÈ&|þÌ^óÆm°d6 „BýC$Jår†¡5šf©T:dð`W7·††µZE€hÔjEyyzšn¥Ó¨z*Á!›;öí»@1ÐL“º¹°¬òxÚ¹c©·Ö¤!|.xš©ªm8–zö׃ Úي*9¡uíßi´S–=Ûö+¡PðÃÏz¸:?ñæÙ— ëö ÚôâêšúÆûÖ¿ÛŽ §{MÚPRZT[WÍ0,áë!D$Iíe ¹ƒƒ££‡›§@ à«e>ÂÛ@qcö™/Ù‹wöº·Ë°žNB!„¬¢V«¢„"±V§cF"± …ƒA«Õ:;;Ӛ㸂¢"–e{÷ö7n…½ºýÌ;W*•úúùÏž={êEÓÆ }}ÇnÍôtººgΜ9àââ²råC.˜î*ïØ›T;·i³×¼A•œ€®]Фõ¹$`tÛõûãO¯¸kÊãï\-»–xîœ6öïùSRiöš×©’“]Ü ºº×PT\àîæ1l¤@ 0]ϲ Í0ƒ¾¼¢,7{Op å`_ÆjÏ ìGý,– °iš{!¤ èrCcƒqÍÅkæL¼?©ì»mIOÍõzU$B!î.îÁÁ¡T{µëVÔ¬ÕæSà×ËÁÁ±£`úÂ¥¼êê*o/Ÿð°ööö6Ù;MÓ%eEµu5®Î®~¾R©´£M*evN–P(ìêâìj“½#„úO1Ð4 7èõ:MŠaYƒÁ Õéœâ8†h4͵׿V{ t[ª—ö®¯ãrwîÕÑÜìSO ݱ/ (Š¢¨™‘#çOïãáZS¯Üs,e_l:ÿ|”Hþþ—¿-íéæ\\^½ù»=9—‹ Ó­>úú¥³£Ý]œJ*k¾Üu¨o/ß¹“Ç*dÒ«%[¾Ûs©°ŒdÞä±s'õrw©®kÜ›¶çXªùî Z×þZ€-¿ÆFFNš4zØÖ¯¾¥eÞü?ý~ïâY‘î.NS—?÷Ïã}ª£\{ìß¿Úë °÷HÒ=3'Œ?~ë7¿Ôjœä㇅iµºÃ‡Óv.þ²q/Èwïoðõt[ýÊæË…e1c†¾°úž·¾øùxú¹~A~Ÿ¿úxYUݲ ïÙð(ÿ×t¯  ªºbÔˆ1:½ŽãXŽG8Žc€@ °“Øõõ¯íë©4hNiŽI=7j*ß’¹+’)4a“ä&žŒ=¿GOLWÊìe ï¸pøp›ì BÈÕÂËŽNŽ  EQõéÎò¾žC¯J¥\<1l´«« !„e¹Òò¢‹—óBCÂoV€Ëù‡ÑÔ¤¼rõòAíµZ­JJI¸cÆl;;»¬ìó9¹ç#†²ÉÞ‹K }}ý"†ljR&$6t¤\&o7dFæÙ¨‰ÑÊúìììñã&Ùdï!„þS  „:N«Õét:™T*“Ë›››e2©²IÅ2Œ^¯k¨¯7Ý g!t[2V탧®Ìž1%zÒøv&NþwLŠX³dæñ”SÏ?÷üü93»‘€Ñ:uŸaD·§6~0²ŸÏú'×­_>oõ+›ÁΡӭ†:¯ûß»ƒ]_zþÙ7ŸzðXÊ©56ìåñò‹Ï?»rþÚ×>‰|nô¨‡ïž¶ïpüO?|{ïâkï›+&†}i:Í…½CËïg­ÊCøÏᾊG_x«¹2_ʶÜa™>Þo›‹ÙkÞàóó ¤­ú°GRÏ͛ʦ¦ˆˆ±aGx/œ={–Éh¼êZª{M,ËŽãø¾îø …úƒœúçFN-”ôur¤nË5ÕŸ5½/ý(òüL`oíPy½^GÉ/¼dºR®Pøønúúí¶`ÄÑ‘wŽ·Ñ{zêêk}}}›TB¡H$ E"Ñõ( )€â8–c5Í*©LVU]i}@Mm­F£Yõà½ááýöØÅ­.]ºx:ãô¡#qEÅ%ýBúZ™–e[}0¥R«Ï›»@&“«ÕM"‘¸°¨ÐÏ×f-2ŽŽN•e®.nju“Bá8mêÌ¿î7f¢BÑú‘‹ñuÍ­~™!„B]$“J ˆN§Õét½þÊ•+sæÌ‘H$šæfM³F­V9;]7,{ t[2Ví@¨¯¯§c/wðñt€íÛ·Cúøøˆ "×@~±®®Nà; „ (Šbõ]Ùª¾¾Þ¸•1ɵH¬Þ^îàåîBÏAÍœ<<<Ä´RäÖ«Ý,ð=ö 4S]ßøÃ¯þñË÷”Üݘ¯úúzïp;¡¸Ý\·›‹¶ÁZiÔ2)gs'Ž8",Ü‚ý¼Ü’SR««k„>C„";ÓÍ;* ÅÕ4ÃôïßÌP{;É;ï¼³ñ•ÿ60´·¦ÏŸ?/tê-´Ç«®…ºÛÀ~@¾ „ŸùÅw½ IDATO †ÆŸ{ÿ(QDÃS©Ç€l MÚú=uW‘Ÿ´2¹ éT*ZK›®lÔ6889õõ£X–°á8B­g÷Çþi«&Žãì$öW ó[ÆPJp]'ÿ‚«MªF–åGI°A½úp¶¸-**öññ!„cYFÓ¬~ûÝ·ÛS*•ÀÙÅyýSë E8–swu-,*²¾ €a˜kZ7¨Tªø¤ØùsÈå-÷ÿååeÉ)I3g̶r§FAÁ'N¥E ááîÁ·Ìš9wϾ?'Mˆj51DZ×>`B!KÐ Ãé〠4(//—+®..4ÍètºÚšB?^À{ t[2Ví™ã§@||<¡D:ª®Aéíáº|ùòºë¦¡L/:@o•%[µ‰¤¦¾ÑÏËÝÙÙ¹D§óI ¦¦}GW!¾Ç>E˜‘¸2b¸n:]»¹n7í~ne×Á„‰#Μ6™Ë`÷Ÿ°ƒÞzƒé戲¡þü…«ûÝ=ËgNŸÊ»\°pÁgyFÆ9MëAÛÞ¨‹ºÙÀ°@€×þDM"»^ÚÚù$ „¦«i®Û#’ µ>¹,Í664hµzhª¡ë«ÕמüW´ IQ”«§ÂÑ]b0èÛDc!ŽãC3~~~b±˜ï `ÀËÃËÕÍ…¦iNW^QÎ0¬MnD ŠŠÜ\!±øjA~mMí°aC32Ιþ,Ë ‘HTW[W]S% 9Žsrr¸ZP`}Lz\7 ªJÕ—{×¼…r¹‚¿ÿ/+/;vìÈŒ³;ž5°»d2ÙȈÑi'’FãéáÅ·Ì›3ÿ÷?wÅDMqtt2†äXŽàljØjï!„þSDB!!„a½Þ@34!drLŒƒ££H$jT6UUU—•–* oooÓ­°B·%77_×9Q#§Œr.+÷×_¥žör‡}ñ§¾{ÚŠ+¶îM¥‰`@pÀ¼˜Ñ/oùÉt*ìV—‹·jµ{"ë¹ÑóçÏÿñxöÒySàСC ²3s2®/jsØvC3úíåMêfG…ÌÛÛ»BÜá *r¯=r/\ºté’Àk€½äº–Só’q¡(b`¿/vì‰"îÌ…5KfÀ™3§ÁÎÑ^a³ÿ n6ð·U„b¼¿âoÁ) ìíœ&êö5•<é¸ùÚ—:àTõë]½ïWÖß“±SW]o0 ¾ºyÛ¶-¶ýÉá9¡ö‘G“Èd6|{'Çq”@À0ŒP(¢€ÒúQs“ªI(Ð MÓt³¶™e›Üˆ^¾rÅÃÝeY¡HP× þžßô±Xü7í R5ÅÆ]8ÿ/ŠJËJŽÆ¹cúg'gëwjJ!WŒ5!)9~ì˜ñÞ^Þ|+À‚»ýòëOÓ¦Lwº¶;Žãø±*‹M!„,¡P(€¢H“ª¾Q)‰ÜÝÜœœ%vv¥¥¥¹¹¹¥¥¥b¡(((ÈÇÇÇt+ì€Ðígß¾}4Ã6©5Åe•}º=þÈV$Ó A£Úu ¶¾¢hĄ́/__•}¹ð·½IeŽÞ!иy«Ë‚ÎÒ­Z-þ¸çinœ:iôŒ3ªê”Û¿ýéÀþý´Ô‹éø*dþÕö[3úuÕ×^~çä;v@{o0Úu0qãã÷Àž?ÿàD2=M€îF¤œÎ|háT†a’âŽÑb‡£‰'^8U$9s†HÍduÊ‚¹€Àµ›jþîŸ À+'ð‰¥¡­ €0„è€h8Fiç8’£Ü­O.ÃrJ¥²eç„Xi£ªýYßœ<!Z­V ´ÀÇ (Ã0¥ªœ¯Î<);Fö¾Ç4ÀéšÝ'/þâ öˆòZ%hvclÔPXX8mJ$DZb;qßà—_y±m»†@ ˜ŒJ`XZ$Iì$ž2yrê)ëÓ`|øoìФjŠ;Âßÿ755ˆDâ’²’cǎΚ9[(&&Å_-¼Ú+°WÄð‘ÖtÐé´W ®TVUz¸{‡Ly<áØÄñ‘>Þ>*•ÒÁÁqñÝK~úù‡Óg9;;Ëq€ãX㈄B¨[ôz}AaaQq±J¥bY–¢(•JÅR_W§Óë]œû…„„„„´šj{ t;™½æ ªäDË%ÄRâÒ‡’»ŸØ'_¨J>û9¥ªF q œýííŒÛò—…V‹–mÕjñ·Äìß¡4µÀ@(!N"ï¶÷u­¶êô[Ó5fpôDÎÑØã”² 8ºíŒN_(šýàÓTí% ÜûÙKÛÙ‹™©iÒÍ^õ"Uy(JäÛѾA•ŸBDÞƒEâߎ:eI ( ZæÂ,éÍÐö"‰=aŠ›këÉÜfH†S)M …T;ó·wa8–6ÞÚQp:÷l»!§Œž,mËgÁü@šf~>ÿJôèn2ÿ¿N}eà udÙ̧Ò*ÍØ>†Z+ 6i(«¨ nÖ6ê?L(v¾Á5%Å¥R©´Q©dF$êÞ±nŤ*µêXìá… )І†Z±XRRZr4öØœ;æ8;»$$Æ………Ïsç…‹y'O¦O™<Íâý^¹z¹W`豋KŠ.^Ê6$"zÒä#ÇþŽœåãíSW_ëêâ¾dɽ?üøíœY󜜜9Ž,Çát€!„,#‹=ÜÝiƒñôä;;RE(är'''…B!‘HZm…½ºÝ¸öogeëš.…É$|ìµ­¦Êo=s¾E[µZ:‚£Éc¶Ž.ALÚßá·¦kÌ$€’sH'»µlÅu¼€ ÄR«mYt 00`ÀK®åº;P„"Eµ4P Dˆæ*‹ßW–î°“yInMeŸV_ª%¹cÈ1›$—a¸V¯·Ñ¿ýwÔ›¤Ùf·‚-½h†áè+šF¶tÒ†¤ »ùo' ž1)láíáfFI8;­^+‹mÒ@Óôù¬ìšêj/Oïn5¤§§;9:gõh–eù1ö|3PrJbh¿P¹L^[[-±³‹%ûì›3ÍÙÙò¯^™7w¾VÛìãíóçîß­i¨¬(Ÿ0n’VÛìêâšPV2lH„££Ó¨‘cþý×#­±lUu…»»ghhØß‡.^´ôŸØ€BÈ">>C†´÷ë¿wNµ'öøKB!d+– à›Ã)Pð·ÿ@9³Â¥®ýB\E@îé›xuØÈµ”ÈÉL´ÝJáÀ䥕ô›Î Ï÷Ðétád^ÜÉ•áuMAU£CçóߺŠO«¿¿Zt¥8¯~f9ƒX,±ÉÞ !/^®ªªœ¬nêVÀ… —œl2Ã0„a¾hü¸‰‡pqqõññU«ÕrO‡U=òõ7_9;;»¸¸ö :q2=À? %-¹wïàN#7ÃÝÃ#7/ÛÝÍ=;'ËÛÓ”ÊÆÔ´ä嬉Å꺩T–››}þ|æ‚ùwÃ?ÓÚf"F„B¨+líã­íéT „Bë^ò €¿ñçŒÃ( À……)×HqõD"ʼ¸}è( à†ª¥ï!D£Ñyôn÷f¯ªªJ¯38€˜£m6&œã8†aFŽA3CÔÿ>{½²!³y`£»]o¨Õ\Î-ekœú|è!ëååéi«^ Öh Z.—‹D¢ˆ¡£LÚA´ºÇ;ììâ 4è5›$€eYBÃ2ü9àèà8}úûÿÚ9)Ê×Ç·´¬ÈÏ/pù+v|¹má‚E#GŒJKO=rôïà>}Ç›`Í~ûõ Ͻ}òô _¿á•ÿ>pï’ûä2YYY‰L&+..:zìè»ñZz°8 B!„BµÖý^P!Åw øÁq|?cg;7 r†µå¬l¦wÔ=}¹ðBÊ™Øâ’ã[ëMyÙ€½XøØ‹Ë(Š>xäòEVµÐs,ǰ̕ü+)))¥ee«ôK?£Ì îßòóÊØ|?û‚¡‡ !888&*:(¨õMü3|e“Š#°æ± ÃlÚôѼ»æ¤ý®2´¼?ÓN¨ˆð›é*õ€ƒ‡þzâéĉ—‡ Çšf !Ö'ƒeBÃÐìµIœœgß1wÏÞ?¢"£}}| ó{õê³r媭Û>_²héôi3§O›iåN@&“>jÄðQШlüëàþ{—Þ'“É‹K årEIIɱcG.XäêêÚ’NŽ%X€BÈRN.ž/^,++Óét‡þ÷±··÷óó Ça^nX–¹¥Ëí–N¼ a9Ø\wç`) T{ZºP×n[ 6¯‘·Ø®}ߥžˆwtsà®Åìâ+úmÿ·ááÁ³Î í¨Ö=Þɵ—æ^l¸ö*‹qÇ2 ¡¸ÑcG]›ør1@=@”7€7Àø–/hÎÐö­ „(ä²Ò²*'… (éÓ+2:ZÉ”O»¯¬ér­¦ÄÀ6‹…\!—Ê`„‰ûª®©S©šZ£µ·³üÓ#ìhlüØ1c(—Ë)«° Ûj.Snnî÷-½ÿëo¿š6mš¯¯_NîyGG§ËW.Y¹S£+—/Ï›3ÿrþE…¡´´ôXìÑ{ßÛöþLzàt€!„,v«ÿ¾4}æå¶Ea™[ºÜnéÄÛ–ƒmu¯ 8ŽÇq&Óksï3 \;L6™2 ÿ oÞ&=þAÞEQ  @@ @@ )ŠBŠ%„–b9†Ÿã8ްÙgò]݃{‡B¬¼æ8ŽeÙ&e¿îîæ±jå#z}ËtjµÊxR6)›l5@(RU[S[YQVXP°êÿV)mƒ¹_#Kb?*+-ÉËÍU5)Eb±L&³r!¤¦¦Fáàx>ë\M]½TZ]]íááa,L†aU*õø±“öìÝ;9fr¿~gÏœñóó¯­­uvv‰º}šñ‘»¹{¤Hõõñ),(Œ‹7z|S“Š0œO§£ƒcNNV}C­T*k•N„B¨‹lò>Ý ÌËm ‹Â2·t¹ÝÒ‰·!,ëuãÞŒ¦i¿¬ìóƒ éâmÕå+—<Ý=Y–µþ.T$ψ¹ó÷½?§&œéÖ¶Ž.÷/¹‹§5wƒ555Ç …Bc/µF}äèßyr3R …Â^½zñŸ•J%˲ÇÕÔÔxxxX¼_˲:­61å”J¥fhVo2¦±”Ån"„3ôj•:%ýŒN«chÚÊý€Á`Ðh4>ž>ÇŽ£&,´¿F£qrr²³³ãh4šææf•JÅqÜÀðÁi©éðõñ=zLss³X,vrr²xï|äþ¾'ÒOÔÖUÛIìƒû0 «R©„B¡iä|:½<}ŽÅe¶_ßÐVéD!„ºèvú‰‰y¹-aQXæ–.·[:ñ6„å`½®6Bêêê2Å‘#‡üù–aˆqÞ?øç¦ Eyxxö®ªªòóó³f8:EQvvvãÇNòöô«¯¯ïÖ¶ÎÎÎ!!!vvvV> ®­­ Eý¥¼Ö  W` F£6t˜I:r¹Œÿ¬T6íÝ·G"–ÔÖÖZß`ooOQu.ƒÒOœ6Ÿ­¶ùbnŽD"±É;;»ÀÀ@ww÷Áƒ‡€\.oÕ³ÀÉÉÉÑÑÑËËK§Óõë×oìØ±"‘ÈÎÎÎÞÞ^"‘X™cä!!!z½ža˜Ž"7¦sРÁí¦!„ê¢Ûé'&æå¶„Ea™[ºÜnéÄÛ–ƒõºÚ@Q”««kXXxß¾!ÝÚP(ôôô´r::Š¢D"‘«««££cw»Ö ‘H$‰¬¼uwwg˜~„ӧϼ²qc§á‡ AQ”õïÆãgütóæââb–e;-LŽã¿¿¿¿¿¿õ€P(tpppphgô1…vvv7èy{×#ï4!„PWÜN?11/·%, ËÜÒåvK'Þ†°¬×‰$ À‚}Øä.T ˆÅ-¯ß³€õÃ=<<ø‡ùï þÀʨº‹¢(GGDZcÇ>¼‹'=EQ‰D*•âHx„B¨»n§Ÿ˜˜—Û…enér»¥oCXÖëÞ^¥ÖXíÍôï¬]Ô#‰/(,ŒKLüç´ óò.¼þÖ;Ï<ÿ"Çqf6ücÏÞŸ~ÝܧH,¶`¿¦RÒÓ‹KºWVí²¦!?þòëÿ=öxYYyÔ¤‰cG®¨¬xôɧvýþ‡•©2=¬]¼ªÿXþ¶6„B¡ÛéþS& ({{ûW_~©e‘¢Ê+*–>°üëï¾é¹gÛ†;ò·Á``Æ|´—®\Ñjµ¤ÇèFä…J¡P˜()-]ýغWÞxó‹Í›®½)š’ÊdÆ0FƒÁâW&w7/ hÁ]üç¥Ë–÷écLÃ0þÓS‡ÕÃÝ=5-]«ÓÙ›ô׈KHôpw¯©­µ,Ú›éßYº¨G"¡Ð´ ‚ï~üiËç_œË<ߪ?ˆ©òòòA<¼rMÓVžPEÙðÔ² ª /mÿjçÿ­zhŲX–¥(jíÿ=òöû|¾}ÇÄñã½¼<-NŒéaíâUýß›B!„®cѯUZ­Ö¸ìêâ2pÀ€«…|l±qñáa¡J¥òðÑc˸ÿLF†¿ŸŸ§‡OH é§7è=FÓôð¡CÇ )iéeååƒáÀÁCÓ¦N‹,ùÙv#òÂ3 àáî¾þÉu^x)#3sØ!íFb½îæÅ`0˜l „cz2³²ššTÇ3ˆKHT(äÕÕ5“c¢SÓÒ3³²ärù´É1A×Þ÷ 5µµ9ZSSããã3cêà8.>1)÷ÂE 4ˆ?vfÂ÷Ôa%#GD$%§¤¥Ÿˆš4‘_ɲlRJêÓ§ÿòÛoüãÕ¢¢Ø¸øÆF¥¿ŸïÌéÓSÓÓEBѨ‘#ŒQ%§¦ÚÙÙŒˆh7ƒüù\SW›”,‹gÍœéïç{ìx\VNŽ‹³óœYw¸»¹™)Ÿ[®:ä俥Ÿ<©T*ÝÜÜb¢¢üýø`¦U>$$¤‡ЦŽŒ••|7ø¶GáÔé3…ÅÅ îÙ™š~ÂôÚåìäÔÝŠ.^Œ‹gYvø°aãÇZ5(À‚røæ‡ü|}ï»gIss³qåC.?|ôXÚ‰óæÌæ×´=ùùõ]<'Ϥ¤tzUÿûèÑýûûûµœ$YÙ9:näˆó 0³•ùbï@!„ºŽý*ÛnHÓtYy¹³“¿¸uÇ—îÙ·ný†ô“§hš~õ·ÒOžâ¿ÚþåΟvízþåW4ÍÍE%%/n|õ={ !YÙÙUÕ5µuõ)ii M[ž”þ¦È4˲£FŒˆÅç2Ïw‰Å¬É‹i$|+¯¼¼âµ7ßR©ÔübUUÕko½]PXôþÇ›ÞxûÝO·nkhlŒ‹OxhõÚÓgÏòaò.\XþÐÃGcc›µÚ=ûö/{èáK—/s÷Âÿ6¾ÿñ¦úú†²òò—_{}ûW;Í„'=zXEBQtdd\B‚q噳ƒaÌèQ|œÉ©©+ÿoMrjš¦Y³ë?—?üHeUUNnÞï¼Ë0 ¿I“Jõêo—”v”Áí_îüx˧oþ”㸸ÄÄÕ¯{iãk»÷îPÔî}ûÖ=ý •™Ío¡ê°ÿ¯ƒkŸx2+'Ç@ÓÇãV<ò—._კVù³ÿ’ÄBŠKJ W¯@ÒÁQÈÉË«¨¨llhLIKÓéõ­®]Ý­šžþò«¯ëôú‚¢_Ù¸g_ëÑ(7´´Zí™3ggß1“¾¾äeRiÂÑà ïšÏ/¶{òó_uñœìÊU}ӖϲssiøûèÑßvïî4me¦ØÍÃ^!„B×!=beY“_T«59ZV^¾üþûZb£¨£±±;>ÿ´x¸F£ŠâGÅEQ IÉ»~üÞÙÉI <±~CRrÊü¹s_»¦QÙ¤Õ6¿ûæw!¾y!íÅLñööª®©1†Ñ67¿óÁ‡¦aÆ;¡k©ÚO˜Õ}‰1DNšøá'›SÓÓ§NŽ€Ø¸xGGÇñcÇ~¾m{aQѯ?|ç P0 óØ“O¶uÛ—_|o¿ÿaÄðaï¼ñº@ 0ÐôÚÇŸøð“-Ï?ótúÉ“ŸnúˆŸlûW;þ}ø¡—BÚ ÿÅæM=uX€‰‰Š|öÅ—5ÍÍ2©’’&Œ+ À@Ó[>ß5iÒ›¯¾*µzùCõÍ·÷/]úã/¿žÉȉIÉ@QÓ§LY³î‰v3HQTMmí_% ‹Šïy`Ë2;·o%„Œ7î™ç_(¯¨ôóõé¨|n­êðÇž½óçÍ}nýÓüÐú»ß“šžÞ7¸ÀuUžeÙo¼Õ##$6>¾%ŽTVUíÞ·ñÂýÆi÷(ìÜöE“JURZúÑ{ïjµZÓŒ¨Õê§Ÿ}¾ëßoþÕ«»~øÞÑÑQ <þÔú¤”Ô¹³gYËÊ¡ªºÚ@ÓÞ^^m/YMMMügºƒ“ÿùgÖC—/Ñ]¹ªS(1%€_ì,íoU\Rb¦ØÍÀ&„B¡ëXòS›­V÷Ô†çŒ+\]]_³zÆ´©ÆîèÓ¦NéhüÑÉ?”nùjòd{;;¾“jß¾Á§NŸá^ÂB4Í¿-›‡ô IDAT/íÆ,ŠX–5®'mz ›~k«›ˆ1{;»Q#G$&'O‰‰€ØøøiS&ÂÀ=‹ FCQÔÊ—=úÄSùW áŠKJ6¾ü"Ÿ#Š¢î½gÉs/½¬Ñ4Àé3gûöé#‹W._¶úáUMMMWòóÛ ßÔÔDé™Ã C ’J¥©ié“££X–MJM}öé§ÈÍ»PU]ýá»oó  wß5ÿ‹_¾øì†>½{'&§ð·q‰‰Ç/«(ï(ƒ©×ëÀÓæN™ÌÇéãíz½ÞLùÀ-U¶}ºY"‘¨ÕjÐjµEéõúêµI•ï‘ÄB†y÷ƒŒkhšöôô˜5s&Ã0…ššŽãÀ$µÆŒt´IGß|ú”©b±˜? Á}údf¿™×N …™ s/´ò?·þi>@ÏÉN¯êíeB:M@»[ Bè¸ØÍÀ&„B!ËåvÿÁ …R{{½^Ïßñ<ÜÝY–mw[ww7ã$yÄÒÙòl¨Ó¼´«®¾~”s„qQ&“½÷Ö›¦ MÓ6O­!“£¢ÞùàÃf­¶ªª*ÿjÁsÏ¬ç¿ ð÷kéÈ@H€¿?T×T3 _Óø*5¾5D¡¯XöÀ7ßÿðËo¿÷ =rÄŒéÓryEeU»á•7;·&!Ñ‘“’’&GGÍ8GÓô¨/]€ªª*Š¢¼½¼Œ!üýõz}Mmíô©S~úå×uk×(›š2Îe~ðÎ[•ÐA@"‘ð+ù^"›.R˜)¸¥ªƒV«Ý³ÿ@n^^iYYii{}jÍTù›F"§&Äkëêž}ñ¥g^xáǯwš? ¦Œéh“Ž*ÆÝÝÍäî—¸©/zwqv€ú††¶_å_-`Y¶_HßêêšvOþú†W°èœìÖ&& ]þþ~fŠÝ l@!„ºŽeO¨( ¸k?÷9–5´wÃܶ'êµm[ϘmºxóŸœw’—kwÈ¦ë ›ššÂÂB[ÖüÓQ[±á@;z¤¥Ÿ(,*êØ·OŸÒ²20}Š«Óé@(ñ+_»F.“µlO€x¸»¯XöÀ=‹%§¤ž>sö‡_~Ù½oÿö϶…ÂvÃ{yztð$ÐòŒtwÃèÈIëŸ{A¥V'¦¤L7^ ð‘ÙÙÙBôz½Ýµ÷è z`Y6&2ò‹í;223KJKÝÝ܆ šœ’ÚQMSÈÿÏ¿~Î$ `¦|àÖ©ÍÍÍ«Ö>& ï^p×¢… ÂCCz½ùÔöÈAoll4~–ˆÅwß5ÿ¥¯•WT˜? Ð^F:Ú¤£Š »¬ËÁÝÝÍÓÓóÜùóÆY0ž{éå°°Ð×^~ÉÌÉoìØßÅs²Ó«:?Ÿ_Ã7‰B:M@»[±,k¾Ø;‚Ó"„BÙ1ÑÓi±V·òÂqÜŽß8;;kùPÿ›ÌÎÎn̨‘I))±qñwLŸf|Z›•c “• þ~½@(„‡…ò4M§¤¥ïØù529:êÅç6|µõ‹ÊªªìÜÜŽÂÛ™¼¯§ 0ÀA¡HLNNNM‰Š4_~*ûÜ Œ!sród2™‡»»››ëà“SÒâ’fÍœÁ2Œ•ü7—O»Ú­9yy555¿ÿîÝwÍNQ«-ïçspÇß²,gÁQènE¸iù2ƒrÇôiGc—•W˜®?uæL}Cÿz3'¿ÍÓcÚ1äjA!ÿ¡Ó´»Õ¥Ë—-+vl@!„º±@g¶ŠÙt¡õ†&!áÚS ‹’sóB É©iÉ©iÉ©©{üõøSëÏdd¼ôÜsŠ2M€%{o?9ÖÆÖ6Žã¢£"“SÓªkjb¢£ŒÁþܳ7;'—RT\¼ãëoFFDøúøøûù 8ðÓ/¶UTVÒ4]ZZöÎûVVUéõúoøñÐá#z½^£Ñœ8y |}|; ÏO×#‡Õ¸˲ÑQ‘;¿ùŽ¡™ˆaCß÷é3p@ÿ­;¾ª­«#„deçìÙ·î¬;8ŽcYvê”ÉÇããsòò¦OB1“AhU2º¾ù¿¹:8;9@Aa¡N§3 ¿ïÞ]XTd0Ц;5¦GzÛ ùqÊFsGrý“gþsw+B;i°ê8X¸ñ}÷,qsuÝð‹'NfY–¦é“§O¸i³¯ÏÔÉ“ !½ƒ‚::ùI—/Ñ]¹ª;;;§¤§ó/ÅøëÐßWòóùr6Ÿ€Ž¶Ò »y8!„Bè:¦?7m¹á??ï(Ý¢ñóµßÞàíåõÃñ¸‡×>ºéý÷¤R©í“dц@¥Vo|£eœ¿L&пÿ[> 6õ7þ¶lïÝM’e1Œ9R, 8ÀÅÙÙ8jwrtôúç_°··W«Õ>>ÞëŸ|‚aØøò‹O>óì}®tqq©¯¯Ð?ü©Ç“H$óæÌþh󖯾ù4ÍÍ«^àïÇ0L»á{ô°þÓ3?zÒ¤?vï™>u ßW™†aŸßðÌÓž»ç厎ŽJ¥r̨Q+—/ã7™4aü¦-Ÿ2„n>ƒÆCßf‘OéâæÿêêÐ/$$jÒÄ_y5À߯QÙ9éÀ¡Cžžóçι–– {$ñ×…¾¾¾EíÞ»o@x¸Ù£¦GÿÜÑë¨"´<»¾îÒga^¬ÜöÓM½öÖÛ/¾²Q(B8Ž ë×ïõÿ£! Ø9ùE`üØî9Ù•«úòûî{÷Ö.{P$9:8,Z¸  °°Ót´ÕAƒÌ{Ǩºº: !„Bè¶áææFÉ¿œ )i§§OŸÞÝd2™]C{3Nñœu:?¶!Eµû•T*‹Åü¬Îb±8#3“¦™!ƒçßêŠÃ‡Ïž=ûÀ7"/2™ÌÞÞÞ¸Èÿ~Õjµü­²1ŒD"1„l1kòbäääIJl«¹ 4ÍÍKî_¶þ‰u‘'@eUÕ+W}µõs//¯óYY …ð!ƒ ÿ{Z Èd²óÙÙµµuþ~~a¡ýT*!D.——WTä_-‹Eáaa ?YzGᡇ«££#˲ü|ã"‘ÈÑÑÑ`0ðÂ/*•J°³·ÏÌ<ÿÿìw\ÇÀgãŽ*•^»H±€-–ØöÞ{MbLbÁÞkì-1v¤ ""UDzïp½ìïû»pÇÁÁå}?~üÌÎÎÌ{oæír3;¥¬¼ÜÒÒÂÞÖ¶¦¦ÿ¶ZWW—ÏçWWWÖg ˜?ëëë×ÔԛƩ¨¨èèèTVV )³·òÇAKK+9%%/?ßÚÊÊÆÚº¦†ñî}Œ…¹¹‘¡¡˜! Q^]]]MMMLy ÃôôôˆÖ—àÕ …hk1Cû ˆe×ÐРR©ÒìZ/Çz Ô&4üœöE(XYZÚX[3 ²·¬¢¢RŸóK铆5øV§ÓéeååÉ))ÚÚÚ½zô äõ,A ¹ê«vÉÀ,€!ÃW&ƒ!ù¸/±_á …œ*v‹8DŠ€Ëå:õìIdûöÕ¶4˜@Ê4¥)_ëŒxòì9†a}=úˆ~£æp¹tÍÃÝÿçЯ„ ‚êêêNvvööB¡è0#„jjjôtuÝ]]B|>Ÿl¾úÒ#5«¨<Oô+ è¥€Áèìè@¡Ph? Çñ²²2Ñë3PÌŸEñùüÿ ’.{+ª««--,¬­¬ˆêÂ0¬››@ b†(Dy&“)Zd9 ¶‚è`™˜!}IJ7ýµ [í ¤Ó®¡¡@ }"B|>¿>ç—Ò'¥y«³Ùlm-­>nnx­"%( !W}Õ.øò¾^'ÒÖàQ|’i[Z 9ÚRXT´qëö¢âây¾³©**ø·u¼ÄÿD®ÎŒÄ×l1ø|¾è ˆÓ£Vܬ8Ž×§s4*qÓ³·Âz=çÇq ¶Bå dhÄÆ>r¤)õ YÃÆ:?Ù¬R¾Õ%è A ¹d¨vþ[èëéÍš1ÝÈÐÀÝÕ•œ7Û®öâó «@³">ðòUPdt4y©¦¦fnföÝ0bÇK„Ð!ÿOb²ô”——œ8¹hþ¼öÆÆMÔ˜Éb8ì7{ÆtK ‹'&%?zü$-=Ã03S“ïGêѽ[Ù* …_Î['r´EUUuÄ0¡P(:oV]]}꤉l6›Ü°Õ¢LÍÚ’´ézkÓÊ˨‡¦#>ð9íKXD¤×€þÄeyyEPHè7ožð?bfjŠ Œ²07olo–Éb…„N›<¹éC<./($t̨‘ ܸuûÔ¹óݺvñôèÃårßÇ~Xµ~òŋ~7¶) ܹÿ€ÃáLŸ2Yú,²U A™~b‚-õU{Ó¬Úël[-ÊÔ¬-I›®·6­¼zh:u, ÓéÛ6m$/sóò,]~ñʵí›7ÖNÜjINM=sþœY3gMŸFF<âòÌÙþž}›2‘’šÊb±å¡#´ ï`jbÒÙÑákÆ×Ú·’’^¿y[QYih`0hà@33ÓñŸ*«ªú{ö%Ó‡†ëè´Cá8þ*8äc|¼††Æ`o/[ E‘·Ò¾¤¿ f³9öö¶>ƒ‹é““ïÜÛ©Cûö¢ñ—®\ëØ±ãŒ©SD#çΚù*8$*úõXâ¬N„223_‡”WT˜™š~ç3´]»vD|PH¨C'{‡óüe —ÇëÝ«§§‡B(2*:/?ŸËåþýäé°¡CB»8:VTV>{ùÒwæ ]ú  ­ L_™À¥ªB6Út½µiååÔCÓiøPJ¡P˜_PÐN[¼+ûèñ“å«×ÆÅb³ÙAÁs/ùœö%'7÷—ß~¯©ùgUQQÑ®ßö”};á艓ÇO.+/ ]¸lEdT´„¢ˆ[¯‚C-[÷±¼¢<àøÉu›·…ÿßk13+kźõ ‰Ib_õÙlvLlìpŸ¡b§nêééý}ÿ.ÙÿˆŠš¿dYXDduuõ­;wç,\\XTDÜ:uöÜõ›·¶îü©ªº:#3sûO»î=ü!ÿ©¨¸¸´¬<<2ŠÏçŸ<{öîÇ«7lŒ~ý†ÇãI(€¶Þö[”¨ ÙhÓõÖ¦•—#Pr¤ŽYàÃÇD¸¦†ñäùóüü‚S¦ˆ%»sÿÁ¨ï†¯[½ !Äçó§Ï™5aì÷‡ŽFFGû Œz¬­­ÝÇÍ•è —U”_8}R[[›ÃánܺíèÉSn®.T*µÎ¢ìíl™LæÁ#þcFZµl)B(íKúÂeË£^¿!ÈÌÊZ½a“‡›Û†µ«1 Õ­°¨ˆÇã™tì(á¯;Çó?~²__[·P(”Êʪ%«V»xiëÆ D‚°ð gNèë#„6nÛ>þû1KÎ/+/c±Ø»ÚI${øêÈ}Ž  ¤Ž!6›½fÃ&òROOoѼ¹#†Kæ·¯ººæñxB,[[[ÛÙ©WHX14Èk •ú”IãÇkkk#„ètÚìÓ×mÞò%ý«C'û:‹B½yÃd2ÉÉüv¶6Ö¬Ö××GeffýüëïF†µûÿ!›j×N[‚åIÉ)EEE¿ïú™˜) £ÓnÜèÑç.ý¿Çî=p ÑÿGÙÙØÄÄ~¨³œA^¤)€Öšš›Í¦ÓéŠVDv8Žšš[” ¨ ÙhÓõÖ¦•—#Pò…úèÑ#òbÔ¨Q! ›W.1**uuõ:sR(”?=JLNÎÎÉÍÉÍþ9=ÅkÀ€CþL«  0ýkÆúÕ«É,V––dØÆÆ!TPXèÐɾ¾¢òòó555É~8Bè»a>••U!ÿã'ºuíÿéSbRR×.]ÄtÓÓÕEUTTÖVûKzº@ èdoŸ_P€a˜…¹yËÒÒ‚Ãá–•—ëëé!„Œ %×A{##" ¡@2F´¶h…XZZ¦¤¤têÔ©þÊäp8©©©–––lQ" *d£M×[›V^Ž@=È*úÖó'Á0LKKSr6&“¹`ér•qcF9ÒÎÖfÓöÄ­~}û:âþ5ÃÜ̬³£™‹Ïçÿ?Ìã#„4ÔÕ%¥¦¦Vß¹¬S'Oš7{ÖÒ•« 8},€œh@`ldddhøáãÇ!ƒ¼Å2nܺÝÑÑáן~¤Ñh8Ž 2/¡©$Fix£Ñd ˆjU5­nݺ%$$|øðÍn“©©©YYYuíÚ•Ãá€-JT…l´ézkÓÊ˨¹Óð‰uŸXT\|áôIòÃ>“É$ZZš.ÎÎÁ¡a©i_Føîß¹œzõ$Âqññ!ss3 E™™š°X¬¬ìl ss"fí¦Í:!„\z;a¶nõªEËWܺ{oÚäI¢‚0 ó2øÎýûS'M451!ãß¼{WV^îæâ‚235E%$&õvêEÜMHJÒPW72”êãmä^ -‡ÃéÑ£‡‹‹ Eº­ ¡PÈår‰_S`‹ÒU!mºÞÚ´òrêAîÈXwí´µB……E!ÇïÜ™•Íãñˆ»^ûGDȨöεµ#›R ­}}}55µ¶ûû’B¡¨©©élQ *d£M×[›V^Ž@=Èg8:tê××cë?™›™UVV:8têïÙ÷ñ³§¦&'ŒÛÏÃJ¥véì(vVßãÇ­\³NSS³º¦ÆÌÌtåÒ% µeÃúí?ÿüýÄÉZZZU••3¦NéÙ½‡h™sgÍ ÷ 8¶÷×_DãÕÔÔîù}σ›·ïPQQÁq\(ÚÛÙíܲ™\:²aÍêÍ;~œ4}f»ví**+]œ{Ï÷Ý íÚ·¿r{Þâ%‡‰Ý’­@h°K—.ɼ@=!)©°°ÈÒÂÜÖÆ†Éd¾y÷ÎÎÆÖÌÌ´¦†ñôi«–-ûn˜X–üü‚äÔTmm­^=zˆ.௯(„‹ÅŠ‹çñxv6¶;vh¬’Ù99é_3„B¡¹™™­Ø]_YYifjæÐÉ^šù|þ›w1 ow•¦€b100ÀqüËçD„­½ø6à44i >nݽ{þÒ•{7þÐÐÐoÉr†€ÿ2.¨‚ÂÂ56Íœ6úÿÐz󀞮?èëëõëÛW¾%Ðä<@§Ó¿-çe48PþPBB¡0%%%77—ÍfË]€ššš©©©ƒƒ…BiVAŠ’«|‚ZXœò R”\Eج(¥Q¢(½mh”6 4H»té’“ÉôððÐÔÔ”»ƒ¥¡¡áè蘜œÜ|‚%Wùµ°8å¤(¹Š2°YQJ£DQzÛ"Ð(m™›Ã08ø/@Eegg9’F£q¹\¹  Ñh}úôyüø±££c³ R”\åÔÂâ”O¢ä*ÊÀfE)Eé l‹@£´i ù@2T„‡Ã¡ÑhB¡°9à8N£Ñˆ9xÍ*HQr•OP ‹S>AŠ’«(›¥4J¥7°-Ò¦æÉüs"@sw&ÉpKþ%n1¹Ê'¨…Å)Ÿ EÉU”ÍŠR%ŠÒØFiÓ@ó€þý{Ù¬´˜ EÉU>A-,Nù)J®¢ lV”Ò(Q”ÞÀ¶4J›šÄ€!ÔºÄ)Ÿ EÉUʾJi”(Jo`[¥MÍbÀj]â”O¢ä*å_¥4J¥7°-Ò¦æ1`µ.qÊ'HQr•ò‡¯R%ŠÒØFiÓ@ó€² dfeDD„©khx¸÷íСc£äµþ~WAA~XD¨*UÕ¹·‹¹¹Eó j"0€Àå$¨ ¡”F‰¢ô¶E QÚ4Ð| F£‡ÒÓ¿DFGL2-7''<2l¸‰’ר?ÆYxV2žL„­1k{̾QÙeõ:ÒÍÅÍÄÄôÆ­ë}ûxÚØØ6“ &C-ìŠÔGhçÏaÞøñ¼3•]¹-ïŠW¯ßàr¹sgÏjlÆC£^‡„†…ÿÿÃôôt;;: ñö¦P(òTNÈ`àóÀÀÈÈhòRM]ÍÜÌläðẺ:DÌÃGúyzôqsk¢nÅÅÅ×oÝNMK«©atìо¿§çpŸ¡ Ö¡¼¤#„ö88d·KïÞM/ªQ´žF)+/÷?z|ñÂùÚ·o¬Jb0™Ì}ûΚaei)!YÛz|ê¤Áækýï=/ÿü Ç¥ãË—´ÈèˆÙ3}55´¨Tš*MÊŒ¤<)Ó“00F.žKü«Æª›]¹l‹F§iiiÏžéñåKZ3 ’$ƒ8NqqüªUA½zým`Ô«WüªUœââæ„+©99ÔÀÀþ}ùÒØìmÂ?|ü+CÆæ¦)F}ÍÈ U¥©ÿ¨**IIÉ¿ü¶gÖmB¡P¾zÞºs÷Ê×eÈØÓ¾¤‡„‡“VTT^ºruêlßìœ"AXdDvN® %‹’’úyšïÜ·11îîcGÒ××?àwdݦ-‚†ê°‰ÒE«4$4,//_æ¢K+l&“\]]#ƒJbðx¼ÀààŠŠJÉÉZòñ‘/Ò7ùÞ“â'(˜žþ%úMÔ왾ªª´¼üœ—¯}† kì_ÍFÿ•ÅD‚† eü#-½Ü½Ÿ¿x>jä(“Žf³gú^ºrÇqé?À6((îÓ{.—S;žF£÷ìÖˆ¯[ JJýÔNKǤ£†a’SÊE\iXX¬¯¯¹‡G·É“éFFœââ⸸77§‹ ú÷—£ ¤(WÃ0™³·W¬ †a’Ý´@6ݨ**?ïØN^R(”Ë×þ8~âCÜÇ^={ÈO;”š–Æb±šR²´ÂÔÔÔH1 ËËÏŸ6Ë÷Âå+Û7oú×Ôf=鲑¡á•óç¨T*Žã***C Z¹v]dT”§‡‡d›"]´Jƒž?år¹|>_¶¢d¦6JÓR²„‹j±Ç§™hÐÀÖÿÞù"íÀׯ颮G?ä5¸cG“ÆþkâãøÁdÒÑt×àG?íz!„¬­mä"ˆËåx‚&Ä…†0 ‹n”u &®©©67µHHþhÒÁLOW_ú’eÇ-)‰õõí1kU(äçæ2²²ø¥¥ú:hëëÛ?:šfh(A\Q~®XWI323ƒ‚+**ÍLM¾æÓ®];É·LfpHèàAÞ‘QÑqññššš>ƒIžuܰ‚²V;‹Å½tuîÊ/(èÙ£;B¨¸¤äéóÅÅÅ;v>tˆžžBH(‡†%&'S0¬g÷îž}ÿßÑ­3}DTtn^—Ë}ôø‰ÏÐ!ªTjKˆ‹¨¯§×­k×ô¯bßBB ‰IÑoÞTVV òò273‹¯ªªîïÙ—LÚÞØ¸KgGQ9¹¹ŽB¡Ãùg³w¯žîn®55 RJÕ"f—„4i_¾¼ a±Ùìì|† VQQ«Ò˜ˆ3SSc##"}}ù*$ÄѾ‡Ëyöâ%ÇëÝ«—hÛÉ@ëi=]]„Ž ƒ‚ãâã554{{ÙÚüÿ…P»(ò–Xõ¢qôÏ«,;'÷c|¼so§:—H~|ê*¹!>%&‡†!„†òVWWÏÈÌÐÏ“¸%ÁId áæ“øÞåCª…b]‰N—¹¹ÇkpŠXgIÊôµ361»ôYx<ž¹¹ÑõÊËÏQU¥Ížéý&*=]ÒÜoéñx<„PaQ^vnÆ—ŒÔ켌Ââ| ä¬Lé!„:v0uqrãòØ)ŸY,¦4åË&îóîÝæ*|>¯¤DËÉIÇÃC«W¯š˜ “ÙÞÞþó¯¿ÊK]ÿ·7ÊœWú,ÍíŠõå­óVxdä¼ÅKÃ#£LÆ­»÷|.*(,”|«¢¢bÿa¿Ý¿ï=zòTyEEPpÈü%ËÞ½/³br4*+;!diiãxRr²ïü…/™,Öƒ?ÿš=aêçÏB¡pëΟöö+++ÏÍËÛ±ë—ÓçÎyëLãxü§O…EÅ%¥eQQ|©²9 äñx¹yyº::d"ð×ß—­^ŸÀåñ^‡Ì]´8õsZ^^þ®_#ç–îúí÷òŠ 1)V––á‘‘¡á€”âðÀˆáÈËúªÙ¹ð IDATET·úÒà8¼péò?VVVù?±vÓf@ V¥?ïþ-úÍ["½‡<}öü·nmÙñ#ƒÉÌÌÎÞöÓÏw<”¹b[W£ !täØñc§NUTT…„.Xº<"2JBQÄ­:«—Ô!#3såÚu‰IÉíÛ·oÐüß¡âñÓg+Ö¬KNN)**Z»q󱓧.\¾BÜ’à$24”+ ÿ%žðåKÚë·Qs}竪Òòò²þõpð ¡ffæoß½ù×£{Ïž=zÅ}ü@†%Ëkì_Y¼V¿«QÙ¥É(ª<vqvõèýðÏßþÞÄÄ|öLßóÏ [[;™p8PÈæ²Ù6•J¥Óètš†Q8N£¬k01›Íøeå%F†ÆÚ›$&}¢ÑèfV***ÒK‘R\Yxx×I“jž>Õ°±ágd` +*ÔÚµc}øÐÎÑ13,LzÓZ­+Ê+{ëqEé3òx¼€ã'½ øõçBÕ55¾óž»xiˆõny323o^½¬­¥ÅçóW¬Ywì䩳'ŽË¼8E6£„8üO B¼ °ðþŸMþaBGG>ŸÿûþƒÎ½öìþ…B¡py¼e+W<°eúè7oŽú"6Ÿ;}îüã§ÏæÏñÅq¼Îô'üýV.[ZQYÅb1÷þº[æå2äÂø±qqÄeM ãéó¹yy¾3gˆ”†ã8~÷ÁÃqßÙ¼~±Š{üä©‘ÑÑ“~˜pðˆdtôÐÁƒBAÁíÚµëÛÇ]L“e‹®Ù°iÇÏ»tuuz9;9¹:÷600 K¯¯ZHéÒ0™ÌCGü?nýšÕB¡0ýë×é¾s#£_‹U)Â0 Ãq\²×a~ëÚ] …²zýưðˆqcFËФuÎÒ<’—Ÿª¨¨¼uõЦ¦&ñL=yÊÕÅ™J¥ÖY”­M}ÕK(‘‘™¹vãæ~ž}7¯_Ïá°kÛ"áñõ Eõ7“Å:yæìô)“W,]‚ãxRJÊÜ…‹­­¬$;Ic›àÿm!]óÁðß¡YUÕUÏ_<íãÞGU•†zú쉽]'s3 .—û1>nõʵããp 7q<¾¾Œ2ä•Rn†p¹\s3 {»NOŸ=A©ªÒú¸÷yþâiSp8\€/Úÿ§ÓèŒÂápåeƒÁ …,« 8¿¤¼¸k—î¦&fïbßäæçH#¨QâYYtTZÊ}ûVðრ9Y˜˜ˆgdP˜LU*•‘•ÕtAàŠrwźòâufLLN.,*š3kƒÁ`0*ÊÄñãBÃ#$ß"”™:y’ …Â`0¸\î¼9³¿fd~IÿÚxÅd7 Çq>Ÿ¿÷À!âß¾C‡Ï]¼D¥ªŒüî;>ŸŸöåKVv¶ï¬™,‹Á`ðy¼éS§¤¤¦2L„л˜÷ cžïì¿îÝÁq¼¾ôUUU, Ç…ø·G¯Å D8Îb±×nÜLüÛ¹ë—äÔ”•K— ÷*Z8Žã§Žú¯\º¤¦¦†Éd–••aÆápÔèt7W—Ððp"q`p°ÏÁµõ762ºsýÚáýû†ô9-mߡÓgÎþuï~6›-¹ZHéÒ¼‰a0™3§M­®®f0&;îØ²¹½±‘X•"„páRxÏàÁjt:“ɬ©©±³³es8²Tl«l„д)“1 #Ÿ©ü‚‚´ôôúŠÂq¼Îê566Bedd®Ý¸ÙØØhóúõl6«N[$<>„âõ7Ä›·ïjŒS§ÔÔÔ0 kKKWç¤ÑM uó‘ï=ÿ X­ªÓNgÔ¨1OŸ=6Ð743³˜1Ý÷øÉ==}{»N®.nG»º¸!„DÃmŽú ILJø”¿tñ „PNNVà«ÀQ£Æ4]‡Ã¢ýN¡Pȶò‚Á`„b¬ª¢Âd1´µÛù öàÏ»tÝ@_ÚÅùÒ iaÁÉÎVÓ×ÇJJPF†aWÅ0Ц&·´TÓ¢ÑgÚ×\Qî®(=EEņ‘‹„q773ãp8eåån1æf¦ø·iÏæff¡¢â"[ë–ÔŸ¦ªD^–”–nÚ¶}ÃÖ­×.œÏ/(Dýô˯ä g\.!¤¥¥9wö¬‹W®Þ¸}§‹££»«Ëða>Zššõ¥/¯¨ÔÖÖnI£DÑÔÔ|tÿ.VQQQWSãp8µ_),ëÁ_“’rrssrrÿtªñÁ^^{d²X………_Ò¿nþ6ƒC¡PÈb±œz¹»ºP©Ôü‚‚›·ïüqó––¦æÊeK$T Y‚„4……ZZZZZZD?_  ƼßµKç: ‘ðø`VŸP‚:¢°¨POO—F£V 3ó’’R$ÑIø|€’ÑÀB@`ei=ÜgĵëצMfnf¹tñò#~B°Gž®.n‡Íf÷èþÿ°dyh'–>Êœ]šŒ¢Ê“áã‚CƒV­XM£Ñ²s2ÿ¸þÇè‘c¬,­‰•ü² " ~Šöÿét5b QÖ5˜˜ønFŒ5¨«ihijWVVþö°[—ÆFíå»yž±—WIB‚i÷î¼ÐP•ªB¡?©:{{KoZëuÅæ_“Ò®Xw®oÛƒ‰B§Óqçp8t:ˆáp9!@ áQލc¢¢BmŽÚ“LEE¦©ªN?nûO»òòó‰u1+—-ÕÔÐøç6†(ÅÈÐpîìYS'O ˆ|óþê÷ÿüëô±€úÒ·76ÂE>íʦ¤Ìy1 ¿õ–…·V?ǃÁX°lUEeâ„ñ“~˜ÐÙÁaåºõ„Dw7„PTôëŒÌLK ;±¾wn^^À‰“Ë-473#ºdÚZZË/*(,Š~ófÅÒŪ}ût/!ºº†ðß~±®²ØGݽ®öfûÊÑ(õ=SŠª³zùBÈwæŒùs|ç/Yv8àè ?j={XÖ÷øèêèÔ'ô[%ÔÑ**T—', Þf’¤Y_u¾÷@Y¡4˜‚ÇãYYY1êòåËÙÙ4}ÕŠÕ/_|ˆ‹­¬¬$~°Ùl2ÜæUžˆ‹}øbÕŠÕ4=;;ãòåË#GŒ²²j¸Ó% Ã0cÃŽúºÚÚ:ꚪTUâçlÓ …É`b¦FWÓ×5P¥ÒýýgB§Q#¾·0·”û©Z;wæ|øÀäpÔÝÜTõôÔ44¨íÚÑmlLfIi©ÃŽr‘®(_W”b‹ïÄäd2&!1ICCÃÈÐPÂ-â2þSy+þÓ'²4" 544BÐÒÂ!¤¢Béìè@üãñxQQYYgÎ_@8>ØÛkÛæçNž((,ü”˜X_z²/ª(êœ-JBRRqqñáý{'Ž×µsgÇkjÄ-:ÞÇÍ5,""0(xÄ0ŸÚßÞuuußÇ~ˆ~ó†Œ!&…--M„4Õ"!™© “ÅÊÎÎ!oزíÖ»õÛ ×µš©Qêz¦Ì$UgõÞ¼s!äÔ³'“Éܲa}fVÖ{÷¥1Jôñ‘ T榦UÕÕ¹yydLrj hµÏ(RÀårm¬mGþþÜ…óYY_i4úºµëŸ=š’š"9cí_?R¦ÿÆÿpjtöÆgLKûüìùÓuk×Óhô¬¬¯ç.œ=ú{k[.WÒZ}éÑi´S§Ÿ8pôøÿ€C‡ì?xxï!¿}j4º4êI/ˆÁ`Ðijz:‘Þëï9У'›Åæ4fY¬”âø}®_ÿ˜•‘ÁìÐckËÐÑùš——òõ«Ç| y R¤+þ™³KŸ¥¹]±ÎÌUUÕá‘Q¢ÿ22³¬­¬ºuírò̹’ÒRÇã?%<øó¯1#G…B ·eî=xø)!Çñ̬¬3.º:;›tìØx½d7ªÎŒ4UU„PEe…™©inÝŽž8•_PÀãñrrr÷ì?XPXÈáp.]½öäÙs‡Ã`0^¿y‹2éhR_zÒ^rÃü3o(#q[WG!ô5#ƒÍfs¹Ü;÷ïgdfr¹<Ç…B¡·×ÀðȨ¢ââAÞ^µKÐÔÐð2øòµëÏ_;2™¬‡þ ;f Žãª…TNB§ž=ÍLMNœd08Ž¿|×½[7üßUJÕ ×5ª~$Ök«k„Ðû÷’’pÏÈÌ:sáâ€þýŒ %UwõvíŠâ ø8Ž›štœ:yÒ•ë7ò ꬱHòñ‘ ¯¿!\\œM:vô?~‚Ád …‡þþœöÃ.ÑIdjéšïÛ{Àƒ†O àp8¶6¶cÇŒ;}æÌ‚ù ,,,§O~õ«övö’×  ÉyeÎ.}ư)“¦¨ªªff~=söÌ&ÚÚØJÿ‰¾AA³gÎ#W9Š" E'[6]ƒÁøû2ðùða#Dì›%}ù‡ã¸º³ó°ú)>(¨&3SËÒÒØÛ{ØO?ñÔÕõÉ\‘¤¹]±N223Úý«hÌ”‰?Ì=kËÆ ë6nž:Ë·]»v•••}ÜÜæùÎÆqœÏç×w‹È>ØÛ{ý–­jjj555;vX¿fuS&¡È`Ù411Á0ìþÃ?»vîüÓŽmk6lš1gžžž^YYY×.×®\A£Ñ¾=êÀ¹‹—B &sÉÂæf¦|>¿ÎôDùÚ·¿ú*há²å~û÷©««·ŒRfìdoï5 ÿ¶673­¨¬êìèà=pÀ£'OŒÆíîêªJ¥vëÖUOWWXkñ<ŽãëV­¤ÓèüŽì?ìG§Ó9•Jõ9óûQ#Ùl¶äj!JF ìܶeã–m¦N×ÒÒ¬ª¬šë;»k—Î|>_´JÂñoEIö:$:¯ûŸL-½@šŒ²5Ê´É“W¯ß¨©©YSScan¾zù2@ ¹¨ÚÕK ¯2>Ÿ?gæŒWAÁþÇN‡,ˆ™Pßãóã¶­„~+ VCàøŽ-›7lÝ6aÊ45:½Cûö#†KÿúU²“ÈÖÒ´ªë½JLÛŠÂåríí;?áøÉ3§O¯a0554›O3‚.XM"Ìb±XˆÕÜÙlvYyyrrâÅË—'Ošlo߉Xû*/ÕÏo æfæù+–­æñxä¾ÜÍÇ㫪v=|¸'•J¡P„B!ŸÏg2™x3LYWˆ+r–,QY·îŸ0‹…XmÞkã·ŸªªªX$‹Åb±XŒïÜø#.îcYy¹¥¥…½­mMM ‘@Â-„ИQ#Ì›ó1>^KKÛ©g.—[ßoÍÄ‚¹sV,]Rþm{Bm-­·a\.·¦¦¦¶öõË?~úTRRjfjêèЩººšÏço\»fÆÔ)_Ò¿ªªR;;:jki±X,„Pé‰n†ïÌ={tçñø-9oyùâEëV­3P”§>`³Ùl6û·]?'§¤äåç[[YÙX[×Ô0Þ½±07Gq¹\ŒBùÎǧvÿŸdãº5Ë–,JHLb2™íml¬U©TÖ·¡¾j!¥KHƒ²³±yxçÖûq\.×Ñ¡“¾žQ²h•Þºz…A\Q®‚H$t“ø|¾€Áèìè@¡PhÊúnò9\.FópwÇqœ˜CÞX­D‘!;“Éd2™µË)--%ÂD·§“ƒ½½P(¬¬ügûšš=]]wW„1ž%9=BˆËå:õìId³T†\ Nð!ûoÕÕÕ–ÖVVD3aÖÇÍØxÿɳç†õõèSŸÄÓM¡Pzvï†a˜P(äóx<‘1©úªE´÷(¡êx<ŸÏ' ­mÑ*¥P(ä )Ö_­Ýú¥õ4 ŸÏ'üVC]x¦D¥H(ªÎê%ÂÆ:,||$­¯!JK˦ϙ»c˦A^^8ŽgfeE¿y³lñ"üÛºúœD6l¾€6„•••««ëÍ›7ããã‰77· &p¹Ü·oß^ºt !„aتU«>žÁ`tïÞ}Ú´i&L¨³{þüùÐÐPјùóçŸ={V4fåÊ•ÿý÷—/_ˆKSSÓ1cÆ}ÚÎÎnîܹ'Nœ1cÆåË—k÷µôõõCBB222ˆË-[¶èêêæææ¾|ù’ˆY²d‰ŽŽŽ©©éÍ›7ôôôÖ¯_Ïb±>þ|óæM"··71 ÁvQüüü®]»F„sss£££ù|þòåËëk¦ŒŒ OOϼ¼xðàÁƒ[·nýõ׎mÐÉkjjbbbž>}J¤·µµÝ²e Ùd¯_¿f2™7nDÒy5No¬gJ …¬÷fE´[’“«|‚ZXœò R”\Eج(¥Q¢(½mh”6 Í'ÅO&ø¯óàÁ??¿-[¶¸»»=z!¤¯¯¿oß>___„ÐéÓ§‰åKzzzÝ»wŸœˆ!{¹u²råʼ¼<„Њ+<==§L™2pà@„PDDDDD„¿¿¿ÍÞ½{‰É ‹-š;wnÿþý/^¼ˆJLLœyòäsçΑ¥íß¿ÿÕ«W c̘1D yW¯622j¬gJ € V!Nù)J®¢ lV”Ò(Q”ÞÀ¶4J›F†æ“â'ü×yÿþ}pppJJŠ““ÓÎ;¯_¿ž››»aÃâSdß¾}UTT¨Tª‰‰ ‘žœÿO|-/))!öþðööž4iÒñãÇSSSO:õóÏ?7ø Nœ8±GDø÷ß'oÞ¼)--=|ø0¡€¡¡!•úÏçM›6Y[[ÛÚÚ’»îÏŸ?ßÅÅEOOÏÕÕ•ˆÉÎÎ&\.wÇŽDxÀ€DÀ‚°ÚôíÛ—\HOôëtttˆ!Bˆø‹ 8pà÷ßO\bÖ±cGÉÆÖÇÆ¨©©9uêT1ê$**Šèéé²i>|ø€b0;wî$b|||ˆ€1áãÇD§Zšd8Ž“'LŸ>N§#„ÜÜÜzöìÙ ]‡ü>?yòd"@. 044”RO™@´EV¬XAŒãôë×ÏÎÎŽˆ$ûí :9B¨}ûöäÇù5kÖx{{khhL›6ML(’«eóLiÛž(+»vízðàÁ½{÷ˆ~û”)Sˆ9üK–,ÉÏÏ/..vrr 3fLpp0q‹ØûÃØØØÞÞ!Äf³oß¾½lÙ²Î;»»»»¸¸48Ÿ™B¡üòË/DøÁƒqqq¡ýû÷Oš4ÉÆÆ†ˆÇ0LEE…“?òD2†ì³‘$$$»mÚ´ÉËËËËËkΜ9äÝú´Z±b¸víƒÁÈÍÍ%M~ðàAnn.“ɼrå Ù¿% »©…ܼ€ìJ>BÕÖÖ–|úô‰|ýú•=óØØXòðc²¬¢¢Bf$¤I–››[ZZJ\­LЩS§íŠ'wÀ!M Þ½{÷Õ«W'L˜ ¥ž2;€h‹tëÖ “å“‹ötrB1bµ?Bˆìá[ZZÑ&kЫeöÌ¡"„ÔÔÔØl61ZÓp8âÑÜ‚%Wùµ°8å¤(¹Š2°YQJ£DQzÛ"Ð(mh>P # àâÅ‹ÙÙÙNNN ,(**zýú5™Ã°7nŒ7.++‹ŒLII7n\||<ùŵ>Fíêêúöí[„ÐîÝ»÷ìÙsÿþýwïÞÕ™˜ìƒIˆ!)(( ÃcÇŽ%ûФÚõe?~¼‰‰I^^^UUÕ­[·¾~ýêî·A° IDAT¢&Μ9ciiill~ü811ñéÓ§Ïž=‹ŠŠ"¾N³ÙìçÏŸÛÙÙ‰viˆ:>>>‡&>Ìb¶{÷îaÆ!„îÞ½[UU5dÈò0‚¦ Zˆ‹‹Ëwß}G^2 Ñn˜ªªªK—.ݾ};BèøñãÙÙÙ</,, !tæÌ™:¬Y³FšÎ§dÛk§‘†Þ½{ÿôÓO›7o …¿ÿþ»ŽŽÎÔ©S}||¦M›FL¡ïÝ»7™¸¬¬Œ —””ggg)“‘ÌEãQCKDmÌÈÈ 'ê#„ž={F§Ó¥ÔS.ûó!‘‘bþ…4N.FƒM&Ù«eöÌ¡"„ºuë–ðáÃrË9¢¦¦feeÕµkW‡Ó¬‚%Wùµ°8å¤(¹Š2°YQJ£DQzÛ"Ð(mh>/¢çû¡ÕIll,Ñ5B1Ã0>ŸŸ˜˜HÄÓ¼KKKwìØamm=}úô & „¢££===…B¡BˆÜK!T^^®¢¢òòåKòK/BhèСýû÷ Ãqüùóçr±±C‡ä—Ø[·n‰v´¶oßþñãG ‚,X°k×..—ûîÝ;ssóqãÆ ‚•+W–––æååq8)wÅoÐvðññ A=yòÄÙÙ¹vwÔÌ̬oß¾‘‘‘¡ØØX///„PIIÉçÏŸBT*•h&i’éëëwëÖÓ š={6‘†˜w€âp8õéioooooO”výúõ‰'ñl6{Á‚[¶l8p 4zÊ…—/_å—••ÅÄÄ‘ÄJ~iœ\$xuS<³.]ºTZZÊb±\÷âù@Àb±J¿Ñ|‚%Wùµ°8å¤(¹Š2°YQJ£DQzÛ"Ð(m™›!„ãxZjBZjB3ëmƒªªª´´´)S¦½†uëÖ¥§§WVVÖNœ’’B&›3gNrròºuëÈ%Ö]ºtY±bÅ›7oB4íÊ•+ă™——§¡¡Ñ±cÇ’’Ç…B!9qzÆŒ>>>B¡PT¹ôÚÙÙYô“É$o!„8Àb±222ˆÁ„Ð’%Kªªª \\\ˆ˜dggš$''“Ó×—/_›˜˜¸råJmmí¸¸8ÉEtwB{÷î%b6lØ@öÓDSr8œøøxrzùòåË‹‹‹‰[uÚ^SS#:ÉüСCÕÕÕ•••är„PDD“ɬ­•Øxªª*N711qvv3fL`` ‘,==Xß©S§ŠŠ Qå÷ïßO–&M²gÏž1T*õÒ¥KñññÆ #¶ßGÙÚÚ^¼x1''§Î:|ûö-9Ù~Ë–-ÉÉÉAAA}ûöuqqa³ÙÒ(Ðí½khhܺu+!!aôèÑDŒ¯¯¯ôN^TTD I6YUU•è‰/_¾d0Òxu=SØ¥K—F…B …”””ÜÜ\øn&3jjj¦¦¦R.<@áà8þås"BÈÖ¾‹¢Õų}ûvò8tQÖ­[wàÀ±H¢KvèÐ!üÛZî1cÆ=ztÖ¬YD÷†8÷ÎÅÅ¥_¿~¡¡¡ÚÚÚÆÆÆñññ={ö|ÐÓÓëܹ3±dÏçß¹sÇÐÐpРA åàÁƒ'OžLNN&·—#eee©©©ÕÕÕÄ‘rR.¿ ÔÖÖvss#cBBBh4š‡‡G£¤×¶½)ÄÆÆ®_¿>((ˆØfÇq6›]TTDÜ=zôè²eËÈÄL&3))©²²²K—.¢ÇÚ‰Ñ`2>ŸŸ”””——×µkW33³Æê\QQ‘œœL¬ä"?à7J`³Ùä@|||§Nâããy<^¯^½jog(¥“7Hc½Z6Ϭà_¼xñbäÈ‘t:½Îac@0 ãp8?2dˆ¢u@*`Z-ëׯ?xð BèþýûžžžÝ»w÷÷÷Ÿ4i’¢õjÕ¼}ûÖÝÝÇñ€€€åË—“ñׯ_'V¶¿|ùrðàÁŠS°!6 º=aó¡X¯†Iªü ‡C£ÑÄV"B(Òh4XIMçÇDàåË—ãÇïÝ»wíÉÒ€5558Ž#„Þ¾}›œœÌç󫪪âââˆùä#GŽìß¿¿¢ul-ˆ.ò 7+Šõj…œœÜ´/éb‘8Ž'§¦†GFeÕúEúׯ‰IÉͬ4¾ÿ7¨C ›6m"f\;vÌÌÌìæÍ›r™þ­Üxyy?ÞÃÃãúõë;w¦Óé:::ýû÷ÏÈÈ8}úôýû÷›¾Ð@9X¸pa¯^½ÈË~øÁÜܼä*Ö«©-&I™8zꔥ¹…­ Ãçó·ýøóÛ˜uuu&“9jÄwëV­ËUV^¾nÓçÞ]:Ãò` UÝWZ C‡ÍËËËÈÈ066ÖÓÓS´:m ÃæÌ™3gΡPÈ`0 †®®ní•íÀž={vîÜ)Ó2]qÅz5 46›ý9íKHxøë7o-Í-Do½pñSbâ©£öv¶AÁ»÷ìíÙ½ûAÞdÇßw ¢²²Åµ€FC´èt:±}=ÐX(ж¶¶¶¶¶¢i¥èëë_ã[z5,h‘ѯ·ÿ¼ëEà+Ê¿‡pòüÅØÑ£ìílBƒ½½z;õzüílL‚[wïåæçÙX[·¨Æð ˜Ðy ä5!4Ýw®h|NnnUUU¯=Ș^=zܸu›¼üœ–váò•C{÷œ8s¦Å´™Y ”À€(*.F‘1ÆFFL‹Á`hjj²Ùì]¿ï™>e2l´`”!$º¯&NCq¸\MMMÿã'ôuõ¦O™¬0ý ‘À(%0 ˆ?Ç#c¸<Bˆ¦J ‹ˆ ‹ˆ8wâ8…Û.І䀡!B¨¤¤ÔâÛ1’%%¥jjjššŸ æÔÙsˆx¡P˜˜ô*8ä—;úzôQ˜Æ ˜J Ès3Sm-­O‰‰½z1 ‰‰0 5b¸sï^dʧÏêééN™øC';;) C ”À€ P(Ã}†>øëÑwÃ|Œ ?~úýæíÖBæffæffdÊ+\7Ð×wsqQœ²ÀsfÍLIýæUpÈŸý-ó>öy`à«àF„ì·ïÞ»zýF£$¦|þ**š8qSÊ2óòó»uí²pÞ\.—+–©êÀÈаgÁ!Ó§N!#y<^TôëÇa ³-‡T{—”<}þ¢¸¤Ä¤C‡aC‡èéé!„‚BB:Ù—””†„…Ñh´‘Ç›šš¼|ô)!QWWgÌÈL&3($tÈ ïˆ¨èññšššC²²´$KÎÈÌ|R^QafjúÏÐvíÚñååå‘ѯ»uíbiaÑf w\]œÃÂ#¢^¿ñПˆa‘#†ùܸ}!ôìÅË®]:›™šwã?%°ÙlWçȨè¼ü|.—û÷“§Ã†¡R©u¾sÄÈÉÍstp|>ŸˆqêÕÓÝÍ•Ád"„j—™”ôúÍÛŠÊJCƒAš™™"„Þ¾‹ÉÌÊ*/¯¸÷à¡¶¶öÐÿõÛwIÉÉ…Ò³{7O¦ÔÌÐÁƒö:ü5#ÃÚÊŠˆyû.†Éb òòBõ¿Iê«7$Ý{˜È%M•JOËf“SR|,zXSSsÿ¯G³,úœ–†:uöÜဣ‡üx|þ«Ð%«Víøù—{ÿâÂûþµjýF@P^QqÀïÈî={d›ô®¢¢â=p`ph(Ëårû¸¹Åú=–˜DÞ}öòåûpÿ˜PXTTRZÍãñ’’“ç,Xô"ð‹Åzð×£Ù ¥~þ\[¢•¥Exddhx„@ bx<žÿÁ#†«]æ_?^¾zm|BÇ{2wñ’Ô´4Ç““óó ***"££c?Äረèõ›·ð;RV^ž››·s×îÓç/ÈV'û÷£Ñh¯‚CȘ°ðŽ;tvtð$ñ;zìSÂÿ·kyúâÅíû÷‰°4ïaTÿkø¯ÑÀ,Çß°Wî?ïØN¥RÙlöºÍ[ñ?à*..>}ì(FKÿš1oñ.{üÈa ÃÜ\\vîú%¿ €˜ãú5#óü©“::í8îÆ­ÛŽž8uþÔ >Ÿïüd¿¾;·n¡P(••UKV­:wñÒÖBÖVV{ýÅ ¦@›ÂÛkÀ¦m;˜,–†º:B(4,¼__ªê?ï C¢{õQ(ârÕ²¥••U,sﯻ™L枇œ{;íÙý …BáòxËV®>äô„¿Ÿ˜¬e‹­Ù°iç®_tuuz9;9¹:÷&Éb±î=üsÜ÷c6¯_' q?yjTôk{[ÛsçTUWgçäÚ·Çñý‡ý²srV¯X6yƬ£~‡\z÷F>wþñÓg æøÊ\-}û¸¿ ™ç;!Äçó#_G?z4Ç“ð”’ßæ&&^ãÀŠf¤}IÏÊΞ9}•JE©©©M™øCJêçêêj„Ѐ~ýh4BÈÒÂ!4ØË‹èó—l6‡(ä‡qcutÚ!„ètÚìÓ323Ó¿~MJN)**š5}:ÑÐÑi7nôèÐðp"‹––¦›‹‹±±qóX €$dþâݳ{wuuõȨhÇù|~Xd¤÷ÀÇ‘ÈFÿ΂ã8Îb±p\ˆã8ƒÁøœ––•í;k&‹Åb0|oúÔ))©©UUUbŒî\¿vxÿ¾¡ƒ}NKÛwèð䙳Ý»ŸÍf‹•) Oõ_¹tIMM “É,++Ã0ŒÃáà8Îf³…B!ÂqƒÁd2‰0—ÃE½‹y_QQÁ`0æùÎþëÞ™ë„`è AyùùÉ))¡˜Ø55ŒÁ^%¿¥¤Á÷°ä×8ðŸ¢Y¹yy¡ß÷ ¿Ýq¸„PYyBHMMM4±Ø%‰•ÕÿÿÛØX#„ò  †aæfä-KK ‡[V^®‹T m‚ã¸÷À!aaƒ½½ÞÇ~àñxn.Î)©©Ò—_Pˆúé—_Éw—ËE•WTjkk‹¦ …,ËÙ©—»« •JÍ/(¸yûÎ7oiij®\¶D¬XbMAbRRNnnNN®@(” ƒ™™éÜÙ³.^¹zãö.ŽŽî®.ÇùhijJoEmÜ\]ÚµkìèàfmeemeõìÅËú^ƒÒ—Üà{XÂk\¬J¥§! BhѼ¹š¢ñÆ9ß›Ïã‹…UT(4 Çq@@|˜"o‘;{ (pY7Ã'†ÖoÞZ]Sѯ¯'…B! ÿÍ çñxb²pWQQA­\¶TSãÛ;CŒÒÞØH4en^^À‰“Ë-473#Æ´µ´–-^TPXýæÍŠ¥‹EËd2™ –­ ª¨Lœ0~Ò:;8¬\·¾¶h2,æÎž5uò¤ðˆÈw1ï¯Þ¸qÿÏ¿N ÐÐø×k°QP©TïýƒBÃÍŸ=iü8„l¯AÑ7ª4Èå5( X˜[ „ÔÕÕ{õèAÄ|üô)æ},y) ñ .ßÖèÆÅÇ#„ÌMÍXl6B(!1©·S/âVBR’†ºº‘aûU* óòòrss+**X,BH]]]WW×ÔÔÔÄÄDtå3üèÞµ«¶–Vhxxxdä– ÄFˆÝéÒ¿fèëéŠe'¦¯«¨P:;:1?}zó~öŒé¢Eéêê¾ýýæ¹Ù?ŸÐ‰Iÿcï¾ÃšHú€O%ô&H? MD+E‘;;bQõNQO¤(x–;{E øCl'b9TDQ,HQŠŠ‚ ]Z¤ýþØ{óæM#„ðîûyî¹'Ùlf¾3;ÙÙ&“¡¨È}»>ÿíÛššš‹çâôtu ƒÁhiiR„¢ââ¬çÙ>óæNpqþq¢ë¢/Þ^Þ ò ìGŒèZ]ü¯‰Æ_O¾yæÜù¦¦&l-l’Q~9ëíã§RUUîzB"?ãàŸ¡“ T#C‹!CŽFŸ¨­­C}­ªÚµwEee—ò¸|í:6õ§Ïe'Odzª¯¯g6ÀtÈàAÇNœ¬««Cåæå_»‘üÓnØ(Ö²òò­¿ÿ‘ý⥘Œ–ÊÊÊ¿þú«¬¬ÌÈÈhÒ¤I .\¸pá¤I“ŒŒŒÊÊÊþúë¯Ê.Ö}xãÞ± ÃÅÙéô™³t}ø0ŽO‘ªªêã§Oét:‹ÅºyëvÉû÷,Žç°‰ýõõô¬--#GW~ýJ£ÑÊË¿ìܳïkU6›™ìæ:áì…„»©÷ÚÚÚX,…Òv=ùfzFÆô©S¹ÒTUQA},-¥R©IW¯–~úÔÑAû{7ë¿a°X,„Ú;:âÎ_¸uçn{{{kkkÖ³ç!ÝþºbÔ ' sóþýu/ <¨„ðŸA6U•'YYX/@ò­Ûï?|ìÒÑ”ÈÏ8øgèä)„PXpPð¦ð¹ ©«©ÕÕ×4hõª•]ÊÃiÜØµAååäš[Zt´µ×ýò ¶}ÃÚÀàÍ^Þ ”••¿56Žn»ÔwöÑ·o¦[YZŒà˜â»Oa±XùùùNNN::: ƒÉdbïÊËË›™™ <¸²²òÑ£Guuu\Óðæâäxùêµ'ºâñxÎ+aß>»öh1‘HTVVšã9ëCi)öQsñ þ«~9¸w÷–Íaë‚6ú,^‚ýæX˜Y¿f5W,ë×À5²2²{Úsà ¬¬l{{;‘Hô]°`š‡{{{;gš‘ö9;Ž ‹øÍ@_ï[cÓÁƒ\œ“oÝÒî§5cÚTÞøm¬­§MñØøHÌ™8„P+…²Â™¡>ç­xñL?þì…x쌟A6ï¹s‰ôò^@$‘”gL›ú¹¬¬Kùvÿgü3àâââ<<<„ïÄ`0róóëëtûë 4HôÔ¿TTø,^uä°ššj~Á[²µ56y5†F£åäæ666êëéh&f!zC^^^CCƒ››‡c ˜ZŒ@ 0™Ì»w睊©YZZJ9BÄ“œœüÓO?uõ[ÊÊÊt:B¡ „ˆD¢’’RGGGkk+ûmSS‘H¬ohxûî’’Ò°¡CBx<¾¥¥!D"‘^¾Î¡Ñh6ÖVD"Q^^>7/¿¦¶Ö@_oÐÀ---¼7Õq8œ¼¼<¥­-/¿€B¡h÷ëgbòƒ ‰„ÇáJSYYùmaaEE…É?ü`lÜÚJyþ"ÛÐÀ Ÿ–™Lf‡Á~M&“+*+?|,%‘ˆCVTP R©]­“Û·owúëŠDû¬¨¬,*.QRRjeÅž8 KÄþà_BCCƒÅb½/.@™š™÷v8@O© @lì.€ïëò¾S¹¹¹Ó§Oçû¸/'ìæÿõë×­­­û÷ï/­_rrò?þØC‰ãñx"‘Èb±°¹9‘H$‡Íí‡"‰x<žýp 8ŽH$b=qØcÿ‚ÒÄÄæÀáp$ {-(e@ °¡ ‚ºù„»sçNÏýº$ ºüKˆs7é_ŽÉd¾yóÆÑÑ‘÷zƒ/7f̘ŒŒ mmm˜üË1™LöE>®NáÛ›À7MÎY,– 0Ø„wð=êÙ.eee¿E 555z4)ûòå‹¢¢¢šššèëjhh(**VTTèëëw¾7½M”¾-Àw§g»”̟ףYH_EE…‘‘Q§·9uttA€^ôÝøëiþöÓwk)RËqõO?X[[wõ6©††Æ³gϪ««{(*:E"‘,,,D釂§Fú?°€ª«W¯>|øðàÁƒ½üÛ}÷]ÛOßÕ°t3TÓ–ZŽ*òˆDbW§æ%ƒA/b0ð( ô`è-)©û{;„ï^ccã‘#G6mÚÄûQBB‚“É;v¬§§§ôcÀöÝw Núw,i4ZW'ö£Ñh8NSS³‡B S­­­ß¾}eOx ü­7~`ß#‹µråÊI“&ñ~TZZêïïÝ;Y»víÔ©S9ׇ eß}ÀÖåáÑÉEßZ¥–ãØŸ~hiiéê¿^ÍÍÍL&377·‡¢ S222666½øžHÿð:{ölCCƒ··7ïGaaa---Øë–––„„„E‹I7:ÿõÝw¸: ™6~„4Û»ÿ~]]ºººè7Çp8\]]©©éøñã{46„`2™­­­B–Ðcƒ¿#ýXz ÄwçÎ 6dggãp8®¯\¹‚RTT<~ü8‘H|8sæÌØØXCCCÞOŸ>}J¥Rñx|bbâ¤I“ Ÿ={VUU¥­ “Œ€n‰‰‰100èÅ.€ºººÃ‡/\¸pøðá½â{;]¦««K¥RËÊÊðx<‹Åb Åb±p8\YYY{{»®®noÇ€HX@zû0@Ï¢P(6l?~¼——ß}>þŒZµj6M€’’‹ÅJMM•j 8|÷OH·´´ÌÍÍ•““ÓÓÓc0‚VÀãñ¡¢¢âýû÷ÖÖÖð0-¾kÏŸ?ÿúõkcccnnnBBBYY™ƒƒÃíßÚÚŠÃáÖ®]‹½ýúõ+Bèýû÷R €>oÇŽ666îîî½ø.qÔÕÕ•””0 YYYÜ`Îþ IDAT¬#»ï‡Ãá°‹ÿööö/_¾|üøQOOVbÀ÷nôèÑt:ómrr2™L´¿‚‚‚‰‰É?ü€½Å.þ+**z:N¾ñññÍÍÍФ ºÄ4tèМœœwïÞµµµ©¨¨())ÉËËc³Ðéô¶¶¶æææÆÆÆOŸ>éêêZ[[÷v¼t<Ä€•Je_ÿ«¨¨¬Y³&,,LøI ìë„еk×B04ztˆ ‡ÃÙØØhhh`#ÔÔÔäääBˆÁ`P©Ôúúúöövkkk¸ÿ€€gÏža/6oÞ̾ùO$ †/r­ÑCA‚•óçÏ÷n#FŒè~"»víê~:ˆººÅÀÀ@OO¯¢¢¢¢¢¢ººº­­ !$//¯¦¦6hÐ ]]]ÿ¾Gð!Œ9þg0‚þá());v,6ÀªU«Ž;&##S^^®¥¥Åwÿàp¸ÀÀ@á4559;;·µµeee½}ûÖÉÉI]]=%%ÅÆÆFÜ2³³Á¹sçz+€ÊÊJ]]Ýìììn®`aa1eÊ”;wJ*°>ÅÒÒÒÝÝ:8úèè.<¯¯¯·úÁ?†œœ\{{»¬¬loò}koo—““ëí( —™˜˜P©ÔŠŠŠ²²²¨¨(„Ðܹs]ÿ#„^¾|ÉõÈ_û÷ïõê•’’Fspp°³³ËÈÈðððøôéöH&Aà5àR©Ô^]PïûF¥R ŒŒzû`@/ÃãñNNN/^œ3g“É”•• ²?‰D>¹¦  !ÔÜÜ|åÊ„¥¥%BèË—/¹¹¹ þ±à)Àÿ°´´ÌÏÏýú5•JííX¾WrrrÆÆÆííí½ ô2ww÷+V`+(oݺuРABv&‘H¢ ¢üå—_²²²úõë7uêT„P]]¶a€NBÉÉɽ ¯Àãñ666ByÂQ(”>\½zû“þµX,Ö›7o°C—uëÖ ßŸD"‰ò$ÿ¸qã>}ú„½®««KMMEYYY ï_€±ûMþ444X,Öûâ„©™yo‡ÓG¥§§;99!„bbbüüüØÛE½ €¹@·ðåÆìÞ¥K—Š2—JPPPHHˆˆ¯|øðÁÜÜ|À€QQQmmm"~Kt­­­Ø# O¹úî ëäääããÓ‹TTT „²³³»™Ž¹¹ùÆ%RdaaÔ»1|wm[   HØÇ,XÀb±¾}ûîÞ½ËaÅY‰D"‘òóóÏž=[XX(dÏŒŒ ggç©S§æää,_¾\ŒEXètú—/_²³³ ›››ywpvv¶¶¶ŽíjÊ]ÕÜÜ\PPÀ1Ѥ_X)ªûètzqqq^^NïíX€˜¤Ü¶¿‹†Ý)è’ÔÞÞîååõíÛ7„PddäÚµkÛÛÛ…_ÒcH$R\\Ü/¿ü²eË–¡C‡¾xñ‚ïnéééãÇÿüùóÎ;MLLöíÛWUUUQQ'Jx+V¬ÐÑÑÙ¿ÿõë×§OŸ®¬¬ìèè'Í?ë[[[###¨¬¬’õ<»W²èË(Êï¿ÿŽ0`ûšÊÕÕõÆåå埸–‘‘±··Çãñjjj!ìÿ¼ÌÍÍÏœ9}ëÖ-+++2™8 ðÅ9×ôO?ý„7n‹ÅjooŸ4iïþêêêYYY¼óT=ztÆŒQQQ†††Ïž=>©µ££#–ÚòåËEŸ ;99™L&#„ˆDâ“'O°YYYXR³fÍ¢Ñh¢§&UUU<Ïd2i4Ú‰'tttB¬ªª’lFÒ,,•JURRª®®–x¡š››BØcØØêzzzûöíÃvèê”ï\VD"1::º«1´¶¶*++çååu§h,X@\RkÛõõõJJJ­­­=}¶²Ý¼y+Úܹs±-mmm®®®XÑ<==ét:¶]ìÅøt ·±! ™ÿ©A„ƒÁÈx’é4n,{KΛ\lDæÕëœÈ¨è#ÇŽg¿|É™×n|=x˜^QYù±´4úTÌ‘ãQ33ùîwîBÿþý}æÍåÜè·p¬¬læÓÿ†ZúéÓ鸳ûþ¿¤ËMMMæò$óiEeeUuÕÍ[·étú½i••_ß¾+<yô[c£¯‚‚„І BQQQ·nÝBMœ8ÑÒÒÒÁÁaÀ€¡úúzooo*•Êõ]‰tÿþýK—.eggÛÙÙ ÉåÑ£Géééb„çîîþüùs2™ìäääçç·{÷îeË–3æÌ™3‰‰‰DbO•õíÛ7&“9sæÌ¡C‡úûûãñø;vdfföë×O²I³° ÍÍÍ^^^/ßǰ©TêÚµk±º:å;@••Å^;88¤¦¦úûûw5†ÿû¿ÿ#‘Hææb>4ÄÑ Þ×ÔÚöçÏŸ›››¥p¶²‰>ÆAìÅøT ‘D7zÌý´tçÿô­¾|õº££c”½ý•kç·eÇïK|bOø_¼”}*f€©‰–¦VøÖíúzºì¤8w$úTŒÝpÛì—¯l‡Ù|­ªºríú/+WÌœ6•s*•úâÕ«…Þóñøÿé³PSS»yõ2ûíãÌ̈m; ôõ “.'&]>vø v¿~BrÉÉÍ«®©a0˜O2'¸8G:å4nÜ›)jªªÞsçIðÂn™`CN:E RRRÜÜÜvîÜYVVµzõê’’’}ûö………q~×ÜÜ|âĉçÎët‘¿½{÷nݺ5<<\ŒÍÍÍ£££###¿~ýúõëWEEÅ€€eee1’êŽ;vÐh455µžL!å®\¹ràÀ’-T||üŽ;BBBp8\ssóúõëOž<¹råJ±ÓÇãñ'Nœ°°°ÐÓÓÓÖÖ%IÅÐÚÚ{øðáââbCCÃ1cÆÀJb“fÛ ÒÐÐè鳕 ç|œs©²º½ÿÞg§q›ÛFik#ËË#„¤§r°g÷–qª­­‹={nÆÔ©«W­@}øXºbõš®.ÍúðQFìÉh uu„PPئ‡2¸ºªª«i4šnÿþB¡Ñh‡E=*<4Ç766­X³&æL\hÐ!¹¬ð_ZßPßÖFݾåïBþºwÿÐÞ݃ ê4AÀECCCAAûC¼¤¤ÄÇÇÇÍÍ !dkk{ýúu·bÅŠæææ7¦¤¤puŒ3f̘1fñâÅ I“&‰×€!‘Hb§ÐMbß@ƒÔ ûÃ? :T²iR(”ƒþõë×FDD°wcÊw2™Ìw± ±c߉åõõõmllº”à$¶mff&µßŠèèh/// …rþüyÿQ£F!„،̚5kÚ´iØk±;àß0|Ø099¹'™O]Ç»`£Ö¯YÍwÏ̬,&“¹Äw!öÖäc'Ç̬g] ÂÅÉ »2G 01yñê5×mT*BHYYIH"oßVWWÿ±õ7ìIåS¦ÄÄý÷нÓ\0ã$J‚ñ›½%.....ŽïžOž<éÎý´'N`/¢£££££ÅN§·ü#§Q>|Cl\ikkw'ÁÙ³g÷b MMMÁÁÁÁÁÁØÛyóæÍ›7O¼¤ú¾üüüÝ»w÷vÝehh(ýLétúèÑ£¹6^¾|™D"u3ebrr2û‡‡ö‚@ 8ŽýàáC×ñ./^½¢Ñh#í틊‹y¿_ùõk?--ö–Œ»ÚÐO«“uÔTUBß¾5ò~ôþÃ1Ð̬òëWgh ÏþÈÈȰ½½£¾¡A]MM”\0ÚZZØ ! ²·pÖÀ¿烩‘‘‘;v쨨¨Àápk×®ý믿޼yƒ]>éëëÿõ×_C† AM˜0áÑ£GT*•ëʪSL&óøñã«V­bϰ|ùò¨¨(‰¨gaÿÝš·OùúõkÿþýŸ?>bÄɦÌb±Þ¾}+ÁA²²².\ðôô”r –––óçÏçMpôèQ1RQAAÁ‘#G.]º´hÑ"2™œ””ôîÝ»qãÆ-Y²dÁ‚]=û„ãæpãÆ•+WîÚµK‚¹HYNNŽÍçÏŸ¥ÿÄFcqÐÓÓ“à"â¸òçäìä²)¼¥¥5-ýÑ({YY¾ß—““ë upÅÚÕ p5¾~ZZZšš¯ß¼qïÂõQPè¦ÁƒíØ!##Ãb± {î:Žb/?Ûi.\»uš PuÿZ>>>¡¡¡÷ïߟ0aBXXصk×~ýõ×Ý»w‰ÄAƒa] ÃÂÂBŒ+<¿jÕªôQ8Nšƒ&z.‰Œ&è’”””Ù³gS(”¹sçîÛ·!6eÊ”ÔÔÔG%''_¼x‘@ `±½ÿÞÒÒRì¾ÃŒŒŒØ+w€®ê¹1v‡ ª ¨˜öèQÆ“L'GN_O¯®®¾¢²’½%¯ @Â1"„ÃáÜ\'¤Þ¿ÿ¥¢‚sû³ììú†û#°HBùÿ5!ÿí[²¼¼–¦H7ÿyIBÈÌ̬¸¸˜Éd4håÊ•ÝÉ¥¹¹{ÑÒÒ" èa±±±;v숯««+// UÿÏ/A€3<Ÿ””d``0dÈ`·[LMM333'Ož\PPpûöínNj•””„½HMMmlä3c} 6š`èСêêêÒ¹0ŽŽŽ&“É¡óçÏgffbÍ-Ÿ““³xñb±óbs8yòäÀ±ÿ÷è0 6\\\œÚ¿}û&/OfOÐÜÒò:ç ‹Å´±¶æœ¨€k7‰(+/ÿð±”Édèë05áú”F£åäæ666êëéh&J‚t:ýYö ƒ1z¤6¦› àû¢¡¡Áb±Þ „LÍzyÔqŸ•žžîää„Љ‰ñóóco‡»|ðá¿(`§TUU9ß*)*Žýbïna ¯o ¯/èS‰4ÂÖ¶K ‰ÄÑ#$˜ À¿Šðlj™LfMM¬¬lccã˜1cÊËË¥XßÔý=z4oÞ¼>U“Y &&æÂ… ÷ïß—``¼ÄX ïpvv^´hQWo×÷ÜÜòl’Z¸ÁÀÀàÂ… }gAI­0lذ͛7Ïœ9SRu‡˜]QUUE£Ñôõõñx<¶‚:ƒÁÀ&'ÝÔÑÑQSSÓÛQH^[[[}}}oGѧÕ××·ñ ^îTÏÍ-Ï&©…jjj::::ßï{SWWG¥R{;Š¿Ir)H˜LæÒ¥Kutt ÙÛñx<çâʤº€$%%%ÅÄÄ`¯:Äž¼¾¾^QQ±÷â]@¢>þÌù¶ºº{ñòåËáÇ÷FDþ]@’† Æ~=tèБ#Gb¯Ïœ93a„^ B0 ¬qãÆÙØØÔÕÕmÛ¶ÍÓÓSVV!tîܹÂÂÂË—/K3’ÌÌÌÂÂBö[ ©©ioo¯¡¡!Í0z•Jýøñã!Cx?:þ|aa!‘H”òî»víjjjRTT ‘f¾ çäååegg³ßŽ?ÞÐа›i&&&æååuttìܹ³›Iõ¨n¶ç®ž†\ÕÒÕZ‚§€$ÉÈÈ\¸p@ œ>}:>>þÒ¥KK–, ¿té’œœœ oµ¶¶J<2™\YY¹xñâãÇ«¨¨ÈËËß½{WWW—=UA‰ò©ŠŠJO¬œ-ıcǬ¬¬8—c`GhooÿþýûØØØnf¡¢¢òÓO?éêꊸ¿››Û›7o.\¸ÐÍ|Å0eÊ333éçû'//Ïb±üýýCBBH$’ŒŒL÷Ó´µµ­¨¨ˆŠŠê~RâÑÑÑùñÇÕÔÔ„ïÖÍöÜÕÓ«ZºZKÐ$ÌÜÜüÍ›7“&MºyóæÙ³g Í9@€íñãÇçÏŸŸ9s¦‡‡‡ÄÃ:tè/¿ü‚9räŒ3<==8àéé¹téÒ¯_¿J<;LGGÇñãÇ…ìðíÛ·†††Ê/__ß;wîÉdì-g„´¶¶î~òòò·nݽ `ذaÝÏW IIIC‡핬ÿÙLMM/^¬««kaaáíí­££Óý4 `ccÓýtĦ­­}ûöíNç1íf{îêiÈU-]­%>î¦Þ{úìïvDZcœ…¤uøèq»¶£DÏ^Êvï?0ÁÅy8¿~$bÿá#cFr°Ñý¤z:T€¥¤¤Üén·oßNMM}úô©““SσÃáØ¯±¿Ôsrr$r‰Â+&&FŒ•Û{”ºº:ç, ’ŠB¡ÈÉÉáñpO€ï Ÿ.€¢’’Œ'™NãÆrmÇá:9½Ÿ<}ª­Ý¯/w¤g<Çgdd„™3gFDDÈËËïܹSAAaÆ Ÿ>} Àlll nhh Óé¿þú+{nE¶½{÷¦¥¥)**]¿~ýÅ‹êêêëÖ­ËÌ̼y󦆆†½½ý‹/(ÊÅ‹y#½«Åä{PU/·= ù…á{J°©DGG?}ú”ÿt€òòòaƒÄK·/û3)‘³¸¯),*jk£b¯ûx¨’"d‚IùðáCrr2•JÍÈȸ|ùr\\œººº½½ý’%KBBBõôô¬­­.\ØØØxèС¬¬,„PXXXUUU—2 ¯¯¯ÏÈÈ8sæ BˆÉdº¸¸ÐéôY³f!„f̘qåÊ•%K–477¿|ù2&&ÆÐÐ0--míÚµ^^^nnn‰‰‰IIIK—.=z´µµ5‹Årww5jÔñãÇ_½z5zôè’’===Îׯ_áÂKKK[[[33³ùóçÛØØØØØDEE>}ZVV¶²²rïÞ½|#ÄÔÕÕ%$$$%%]¹reÙ²e¶¶¶¼Ë72ŒI“&………-_¾<;;ÛÁÁ!%%EMMN§Oœ8ÑÇÇgýúõ©©©£G.,,TSSãݨ©©9kÖ,EEŬ¬¬œœ—~ø¡Ó*e0®®®...±±±Ë–-óóó+,,䛩§§§(µÚ¥ÚM“&MJOO?yò¤¡¡áƒÜÜÜ ŒŒ¦OŸÎÛüÄËÅÃÃ#==ýüùó$‰ó †……ñ6????GGGáªÏâ{ÜwìØagggffæææ†ruu}üøñ‚ Ä(&߃"¨zmmmÅhÏB~a†l*sçÎ}øða—ŸÛyð0½¢²òciiô©˜#Ç£gfríPXT|ìÄÉ#Ç£žd>åÜžÿöí鸳û9{!¾¼ü {û½i••_ß¾+<yô[c#–þ›Ü¼#ÇŽGŸŠ)/ÿÂb±þºwÿÀáÈØ³çêêêØ_,ýôétÜÙ}‡ÿ_Ò妦&Q"Ìy“[S[Ë~[òþɘӇ¿u÷.ƒÁà-,“ɼŸöðhTô±'¹JZS[{.>aÿá#/ Í%dÞ¬Ÿd>­¨¬¬ª®ºyë6Nç UŒÂ …BùúõkKK‹³³siié‚ BØŸì²²²ZZZ¥¥¥¡æææ‚‚‚ƒmÚ´ »¨ }òäI^^B(%%%""‡Ã)++3Œ   2™mÚ²õÊõ?ÙŸf={¾u…BùðácØ–ß®ßHƶ'§Üú9p]Nn•J½÷ Í/`EqÉ{죨S§._¿¸!èiÖ3}*æÀ‘Èý‡ÐèôûÓW¬Y³ù·mW®ÿÉd1¯þycͯAØóãÌÌ¥+V=zü¤¹¹91éòbÿ€ªêêN#ܲãwö4÷Ó._õó«œ7 ߎ‹ZÂd29KÊb±Â"~Û{ðPm]]YYyøÖí'Oÿ=Iã»ÂBßeËïÞ»×ÒÒrõFò¢eË‹KJ¸*JÈ>|³ÎÉÍ«®©©«oÈx’I§Ó9C¯°cii¹téR__ßéÓ§³§øý÷ßKKK.\¸zõêææfìOA}}ýuëÖEDD <ØÞÞž@ t3k777ssó#GŽ466ÖÖÖ0€ý‘––¶b¢ŠŠ –5û5NGåää „¶oßîëëëíí=xð`¾O‰Î›7F£%%%ÅÇÕYÆ IDATÇïÝ»·´´4===..Î××WÄ 544°…•••Éd2FãÝGGGÇÖÖöÖ­[¡´´4ìv캺_¿~!§­­ŸŸÏw#¶@£©©)– gU] „V¯^­šÆ7}lÿNkUú´´´”””Bx<^GG§¨¨ h~Ý¡©©É{y›Ÿˆªotܽ¼¼TUUOœ8Q]]Ãáú÷ï/^1…Þê¯= ù…tJ¼©ðÐÖÖ¶sï>®^³f™ü`Œzø(#öd´†º:B((lÓÃG3§MÅöyÿñã™Qت ¿‡>ÌȘ6Å!”tõšÇ¤ŸÖ®AÑétïÅKgfš ø»¾þºwÿÐÞ݃ ÂÞÖÔÔœ8)##óácé’€´Žc‡àp8û#·n«üúU»_¿ÃǢƎ‚Çã›V¬Ys&.4h–‚1 eß¡ÃS§x¬Yµ!TòþƒÿªŸ3³²ÆŒÅÞ§¬¼üé³g{~ß1b¸-BèÔ™¸Ô{÷—ù-f±XìÙgcmõÛæMD"‘J¥®ÙwèpÔ‘Ãìï ÙGPÖ+ü—Ö7Ô·µQ·o ç •F£u³°ß—ÊÊJMMM±Ç»Š¢­­ÍÊÊÊ××7..‡Ãýõ×_Øö‚‚ggç   ´´´¸¸¸E‹MŸ>«#@[[»ºº!¤¯¯_VVÆ•2g±X¡œœ …2jÔ¨ÀÀÀÀÀ@Î=¹®IxçÕSVVFíÛ·ÝmÁ÷"VMMmúôé111jjjW¯^½víZLLL]]ݶmÛø–+B„P§žcüýý÷ìÙC¡PètúãDZǪ±ØZ[[±EàZZZtuuùnTWWG±/`š››EÉ»²¨©©Ázh4‰Dâ›>¶§µÚUýû÷ÇÖÐÕÕýòåK§ûójnnf±X8ŽÅbÕ××÷ïß_PóãK__ËW[[»úå‹ïXtÇÕüDlT}“ ã.++»|ùòãljDìοÅ~Px«W¼ö,ä†ïiØ¥¦""§‹ÕÒÒÊõûQy''ì‚!4ÀÄ„J¥²¿7ÁÙ™½j¢)ÇG÷ìúyÅ ì5FÃ!ÄôŽïìľþG9Ž‹T#C,MìLÆÞR©íoßVWW/ôöÆNiåS¦¤gd°S!æYö …â3oîßû˜šlXˆuºü·jpx„P^AÖ³ÔwÑÅsq¡’÷>—•-ðžO$Brrrsg{su!ûˆ’5§î /ÃþzaÏQÿôéS}}}‰$ÞÑÑÁþ?§´´´>Lž<‡Ã½zõêóçÏ---¡ŠŠŠàà`YYY„„ìB‚KUU‹Åb±X¼×ÿ!---lìê7°«2™5uêïÓ0™LöÅö‚÷ÿ'N”——g¯~óæÍð-æâÅ‹322ÌÍÍ Â’%KΟ??aÂöÅ0–vÙÏ!g$,‹ó-§×¯_Ÿ8qâáÇ!!!Û·og/Bæîªš‘‘úôéSEEżyóøn´··×ÔÔ¼}û6B¨©©éîÝ»­­­|‹Ãiâĉ$éÔ©S¡ŽŽŽiÓ¦Ñh4¾é‹X«]UYY‰nñ®ÿB +uvvvuuõÌ™35?¾ÊË˱„¬d)ä r5?!*)) ‹Sl,«££ƒ÷tëÎÖ+è¸#„jjj°ŸÑÏ6!…oõŠ×žýÂ:‚‚¢â:©¹Þ ¡¯¯OD%''³7a+²Ê“É\÷¢9õÓÒìêGx<þÏää‚wïÊÊ¿”)g0þçôÓÖÒâ|Ë5% ï 1•_¿âp8C}ö##ÃööŽú†u55áb**+ØWΡI?rôÒ××óž7÷\|Âÿ%]62x¤Ý¤TTTøRQúc÷^vŸb{G;B¨¾áû»Bö%ëî–ó˜ôY+W®¼qãBèåË—cÇŽ=pà@Àãñy **êĉ¡ .”––îÛ·oÈ!ØGÇ766ž7oÞÈ‘#UTTÖ­[­§§gee…š3gŽƒƒÃ‹/‚‚‚º:ÀÕÕuË–-ãÇWRR EÉËË/_¾\AA]¨¤¤¤˜˜˜ÊÊÊ€€__ßððp„К5kBCC###BÔÕÕuuu=þ¼¿¿ff&BHMM-::ZP¦zzz‹-B¹»»ëë볟8øóÏ?=J£Ñ|}}÷îÝ«¥¥Å¡™™Ù™3gÊÊÊV¬X±}ûö_ýµ­­-22ROOÏÝÝ3 --­òòrì¹z„ººúúõëCCCµ´´.]º´aÆÜÜÜäääcÇŽÙÙÙ!„øn<{öì‚ òòòjkk'Nœïéé™””$¤>MLLN:––V__¿{÷n‰Ä7SÑkµK´û´µµ/^¼˜pÿþý-[¶899UWWóm~k×®#ýÄÄD!‘«ù jT!!!eeeµµµ">Âåúõëû÷ﯬ¬¬©©qssÛ¾}»½½½épº|ùrtttssóÒ¥K±ÖË·]!„tuu===íììþ¾y,¸˜‚úMÐÓÓT½b´g ×/Œ#hggÇU]]ݳgÏØÕrÿþ}ÎZbß’çkÊ”)À®üE„ü8 ß(ʲ•?„S§Luw`j²qÓfäKFF†Åb1 ì;BˆN£#ާ;:MPNNN”^À¥¾‹àŠ@ `“«abccÙ7N¹Ô××ÛÚÚijjÒh´ÔÔÔ={ö`}®®®Ïž=+.. $“ÿþë—ïÆI“&•——üøÑÌÌŒJ¥;vŒý‘ .œ={vqq±‘‘6ªŸoú¢×ª”‰Ä3gμÿþСCXÃÔüÄKßËËËËË‹ý–}Ù÷„¹šŸ F•““ãéé)vÓ¦M›6mšxßdÖ¬YØrl|ÛæÐ¡Cœ[Dóæþä6ñ'·‰Ÿ>ö]¶<7/ßÐÀ!$//oóŸ5EÞäå½xùʆc‰!ûˆ’µd ð}Ñ”Êß9²²²œKÄaUc3É!„,--ÅNYEE»Ruttttt´³³ëß¿?ß1¢ ‘Hæææî†]ÿc EŒPtQQQìß¾}ã¬=¾AòÝ(''‡=‹Ñ¥[Íòòò¼ëù‰X3½‹F£ÑétÇ5]ßæ'YNNN‚šߪ»s玻»;û¾cŸ%è¸óvØuµ…ˆqPºÚžÅø…‘xSá·œN£e<ÉäúïUNŽxy(+)!„ªªªB,+éêµOŸËøN4*"³¦C:vâ$6Š)7/ÿÚäŸ~t}6ËáÆéöïèè1¬3âî½{¯^ç á˜!D¥RcÏž»uç.ö67¿!¤££mdh`1dÈÑèµµu¡¯UU»ö¬äü®}„gÍ»6a÷ zŨQ£’““?~ÒÛ±tWPP“ÉôððX¼xñôéÓ¯_¿žÐÛAõuIII—/_Fp®n.]j~ØsÊ«V­êù¸@/ãßÇCikÛüÛV®¦&&§Ž#ÁƒŽ=*4b‹¾~ccã AÇrç¶žnÿY3¦‹‘ BhÃÚÀàÍ^Þ ”••¿56Žn»Ôw‘è_'!~ÝôÛoÓfÏQTTljlô™7w¨µç>C­­&ÿôãÞƒ‡NÆÆ"„Z[)~‹"„‚ƒ‚7…Ï]¸H]M­®¾~È A«W­äÊBÐ>B²ÖÑÖNxxiIÀŠ#öK°° WìÚµk×®]½…dÇÇÇ÷vß®± RÖ¥æ‡Çãg̘ѣñ€>‡¤2t<ÿíÛªªj#CS …ò,;{€‰©¾¾žØ Òh´œÜÜÆÆF}=ýAÍDùÊ·oßäåɲ²2ØÛ¶¶¶œÜ\6ÀÄ´¾_ùô¹ìÓçOD"iÙÎyû Fn~~}}ƒnÁÿûø€(ûðÍšN§?Ë~Á`0Fthnnæ UŒÂ@D,ë}qBÈÔ¬¯?WÜ[ÒÓÓœœB111ز[l©³Þ‹ëßèÞ½{“'Onooïí@$,22òÔ©S¯_¿îí@ú.kk뀀€•+¹ï>þcÈÉÉ%''KÊÆžfhh¸sçÎùóç÷v  z  'X bñŸ)XÉd²³£c7$‘H#lm»ôl6yyù‘MSidh€-FÈ…@ ØðŒG}¾Y‰ÄÑ#ø†*FaN}}²¸Ô××ÿùçŸì·öööæææ×®]ûöíïEšÝÜÜtuuÅNÿüùó………D"1""¢»±ö°ï(ÔîÛµkWSS“¢¢¢Á퉉‰yyy;wî”flâ ŒJ¥~üø‘½JåwêË—/)))………¦¦¦ÎÎÎ\ÅinnŽ‹‹«¨¨˜0a„ ¸ÞJ3NQZNßÄÙl$Õ¶»¶G¡Pº4š€@ 0™ÌÀÀÀÅ‹3 lŠl…ÄÄÄŸþ¹ªª [½K8ºÛÛÛ¿ÿ^Ðòx½BÐ8ü>jÏqss{óæðåýlmm+**¢¢¢¤•ˆ¸;v옕•U7Jë]QQQcÆŒ!“Ɇ††³gÏÞ²e {vsæèèØÖÖ6bÄWWׂ‚ηEEEÒ U”–Ó7q6Iµmè½&))ÉÍÍÍÙÙYUU500°££C”o©¨¨øùùEFF"„JKK±õð&Nœhbbrøðá7jiiu)ŒŽŽŽãdzß8w º^ħ¾j6l˜………ð} `cc#xº„+0__ß;wîtºŒ|Ÿuùòå+VÄÇÇ{{{0ÀÝÝýþýû{÷î=pà¶ÃíÛ·sss×­[7jÔ¨ 6¼}û–óm§ëVJ–(-§oâl6’jÛÐzGNNޝ¯ï¹sçž={6mÚ´C‡mß¾]ô¯{{{Oœ8q×®]ïÞ½C}þü9??ñâÅbDÓÖÖ&Æ¥£‡Ä ®®.å‡á%+88ØÆÆfôèÑì-ýúõóòòÚ²eKuu5B¨´´TSS“@ ôïß÷îÝœoÅXÜžB¡`+‚nú{.&“YXXøåË*•Ú»ñ%''§§§7hÐ <ú,À÷Î,@ˆ§OŸ¶¶¶Î;÷Áƒ?üðB(;;[ô¯ãp¸ãÇ[ZZ®X±âþýû¡¡¡Û¶mÃáp¡ÚÚÚàààöööŽŽŽß~ûmðàÁÑÑÑOŸ>UQQ9xðà£GÎ;×ÔÔdkk»uëÖÝ»wËÊÊúúúª¨¨:tˆ3ÂÐÐÐêêê5kÖ,[¶ ÛØØØÜÐÐ@§Óýõב#G²÷?}útFF@˜9sfDD„¼¼üÎ;6lØðéÓ§ÀÀÀ€€„`.\¸páÂEEE°cÇ!áqU&o¨yyy{öìa0EEEŽŽŽüñÇæÍ›óòòÈdòÒ¥K·lÙÒÔÔ4{öìéÓ§ *Bˆ7*¾•,bñ…×!¯ºººÕ«WçççÛÚÚ*((°·ó–NŒ ½âèÑ£/^¼ P(/^;¾ÅOHHHMM•‘‘Y¸paXXW{¨­­Ý°a…BikkÛ¸qã˜1cºt Ø*++KJJxç··°°hmm}òäIQQQbbbSS“¯¯ïìÙ³óóó9ߺ»»‹’K~~~xx8™L®««³²²JJJrppˆçmxˆ_kD‚[Žˆø¦‰¼JJJ«V­B¥¤¤ÈËËw5q.Û¶mËÊÊ’‘‘ñöö1bÄæÍ›ëëë§OŸ¾téÒn¦ŒxÎß¿»ŠŠŠÚÚÚÜÝÝŨ)hmmÍÌÌ,**Âê€ïœY€'N4hµµ5‹Åº}û6B¨«÷EMMM·lÙ¼nÝ:*•:vìX„NŸ8q¢ÏúõëSSSG]XX8wî܇¦¦¦"„FŒA ÆŒãëë‹ ¯¯¯ÏÈÈ8sæ gâuuu IIIW®\Y¶l™­­íðáÃY,–»»û¨Q£Ž?þêÕ«Ñ£G—””èéý½Ðµ§§çË—/cbb ÓÒÒÖ®]ëåååææ–˜˜˜””´téÒÑ£G[[[ ¦±±ñСCYYY¡°°°ªª*!áu*BhúôéK–, illÔÓÓ³¶¶Þ±c‡™™™››BÈÕÕõñãÇ ,pttT(¾Qñ­d‹/¼¹°X¬Y³f)**feeåä丸¸`½E|K·páÂ.µŸÞâããSYY¹wïÞî$·øéééçÏŸ'‘H\íÁ`¸ººº¸¸ÄÆÆ.[¶ÌÏÏïÝ»w¢N/_¾D©««smÇÖPÏËËÛ´i?xð ÖhÝÝÝ9ߊ‚Á`Lš4),,lùòåÙÙÙ)))jjj|žššïFMMMA-G|3ÒÒÒš;wnvvö­[· ÆòåËçÍ›÷éÓ§îÿ-æââB§ÓgÍš…š1cÆ•+W–,YÒÍd¿ó÷ï[eee#GŽ”‘‘éè“dddFŽY^^Þý*@šàÌ„011y÷îÝ¡C‡öìÙóìÙ³I“&ýüóÏ]MdݺuVVVÄnM#„RRR^¿~=gÎôŸ>…¨¨(öðcyyùvšrKKKxx¸ººº——‡ËËËCÝ¿ÿñãÇ~~~!…˜˜öW”•• FPP™Lž:ujyyù¢E‹TTT<==B!AÁ477|øÐÏÏOVVÖÞÞžóÉsÞÒ‰X]½NEEÅØØ¸›‰ð-¾’’’‘‘QKKKDDW{¸uëVNNÎÊ•+BVVVóçÏïÒत¤„êà™¹Û¢¢¢ÒÍ¢!„ª««ËÊʆ †:t(¯¯¯···çÛðønÒrDÁ7M¬tFFF%%%îîî^^^Ÿ?–Ƚ4<úäÉì`¥¤¤DDD`Ï4uïùûw@{{»ŒŒ “ÉdõIL&SFF¦o>J €pfº{÷îo¿ý¶{÷î7n`7Æ»„D"aÜ›ššb[°ëÌ~ýú!„p8œ¶¶v~~>×·h4Z§)khh`w5•••Éd2ö•œœ„ÐöíÛ}}}½½½Ìûgº–––¬¬,úϵ¾¾>û5Nç͈Œ¾¾þºuë"""looO D¬¾¡"„~ÿý÷ÒÒÒ… ®^½º¹¹Jíå奪ªzâĉêêj׿á…â•Jî´ø¢Ô![aa!â8¸ `Ä·t’¥¤¤„Ãáp8œD.kE§ªªŠû555¾û)¾¦¦&o{À®- B«W¯ŽˆˆèÒàdee…ª­­åÚ^SSÃþ´›tttlmmoݺ…JKK“‘‘qttDßBZŽ(„ÿŒ<Õ§D¸¹¹™››9r¤±±±¶¶¶« Â{þÙŸõñÉX]Y'€¾Î,@ˆ‚‚‚ððð§OŸZYY>|ØÝݽ²²RSSSìqÝ:::¡ÖÖV„PKK‹®®.ö{Ų’’ίàñxìßÄœœ …2jÔ(„¢¢"oâÊÊÊ¡}ûöa¹ ~Wõ\×Q‚æÜá ¦  ÀÙÙ9(((---..nÑ¢EÓ§O'\áñ&Å7Ô¶¶6+++__߸¸8÷×_aÛeee—/_~üøq"‘ˆÝ^(¾Q ©äN‹/J²aO›³ÿ jnn^:Éb÷ÂHyâ¤N/Å…ŸïT¬+¡¦¦»j¥Ñh]:\IÍ™3'55µ½½ëîÁܹsÇÒÒr̘1¢$Ò)ÿ={öP(:þøñcl„߆Çw£ –#"!-!Ô¯_¿îÿç‚Ãá |||$•,ïù s€€ÞQSSãáᑟŸïâ⢮®>dÈ--­§OŸêë뻸¸ˆžöø1û±dwwwUUÕŒŒ „ЧOŸ***æÍ›‡Ò××ÿüù3v‘sõêU„Pkk+ö--­ºº:„Ð7°˜L&ûâ{t{;qâDyyùØØX죛7o²WAÃp~{ÁûAÁTTTËÊÊzxx$$$`Wh|Ô#g¨iii>|˜2™5uêTöFÑ› _¼ç›ô8³AV­ZõñãG„ûêEKK »é-â#oÞ¼Ù¸q#ögº³³óìÙ³7lØ ¥¥uéÒ¥ 6äææ&'';vÌÎÎ!4eÊ”}ûö1BIIÉËË !ÚÑÑ1oÞ|øùçŸCBBD™=QtòòòË—/WPP`ÿr6'''±Û6çù‹‹‹‹Ã¶b¿8}YRR’‡‡GoG@$''Ù}Ÿ††‹Åz_\€253ïípú¨ôôt'''„PLL öô8‡Ã‰ÝßM§Ó‰Äÿ¹#E§ÓI$Rmm­šššè#áù¢ÑhÅÅÅÆÆÆd2™3ÇââbCCCyyùúúz2™,''‡=ãÝØØX^^>xð`QòÅWRRêÎH`Þ`p8Lqqq¿~ý°qÈÎðîÝ»7yòäöööN³hoo/,,444TUUEQ©TözìÕÕÕd2™óOP¡ØñFÅ·’EÄ›]ddä©S§^¿~Í»3•Jýøñ£™™•Je0d2™D" )Ý?•µµu@@6¥ŸxÅokk+..622bÏnÀ÷¸S(OOÏ?ÿü“ó å«££KP"7Æåää’““]]]±Þ½   MMM–ššºgÏl®$ áñÝÈ·åˆOwZ8'CCÃ;wò.£ÈÆb±°þ¸U«VýñÇì'€º÷ü…§èYpf‚p]]àp8ì¯sMMÍî'N"‘°’\92{Í•‹ŠŠŠèS¾ñM¼«„ciiɵs—Âc“••µ¶¶f¿å¼Dä¼’Ç*{°7oTÝ©‡.}WNN«+ÎëL!¥û7¯øòòòœßBÄ;wÜÝÝ;½þGÉÈÈXXXˆ’u—DEEihh°}ûö3l¾1óÝÈ·åˆN"gº(œœœíììú÷ï/ÁëÄïüíü ø—Àí¯Zµªc õððÐÒÒjhh022JHHèÅxzÚ¨Q£’““;::þøãžÎ ž gÁ™¾#x<~ÆŒ½ƒ±±q|||ïÆ M»víÚµk—tò‚.zV¯ŸY_¾àôôàìˆ6_^Ž+-eŒ¹Ç$y IDATÛÓÑ$+%…˜@:w®­·¤­¢¢âÞ½{999FFF .|ýúõ€$;}7à‚M½Æžà€Óùóç ‰DbDDD—Òû‹@:òòò²³³ÙoÇohhØ‹ñüS 9¹º Ï~ÅŒpç)9YÈÒÑýÒ }Ò?SRS ?âþó‡Çã…ïßÛ5 ÖÖVÉþ“”’’2fÌ&“éïﯮ®îèè8sæÌââb fx;vÌÊÊŠB¡°·°Ÿå¶··ÿþ={ zщýE€ééÇéåååY,–¿¿HH‰D’‘‘éÑìzT_zÀ{r‰M¤.<ßéU„t¿´:µ´ààÂH‡ôÏ”ýûe¿~Åsž5Â÷ïÝúð/wøðauuõàà`l²nzò䉇‡Ç©S§-Z4pà@ooïøøø¦¦¦æææî'„ðõõ½sç{ù´ŽŽŽãÇc¯È5½ˆÄþ"@ÿ{zˆ©©éâÅ‹uuu-,,¼½½uttz4»ž#…ºê®“«;Dêè#ºYÔ–ܾ}ò£F©è訩«-X øæ Ÿu_étôø1©ºúö ÷ø1©µ×ÍÜJÓ¦©88(ñ~DÞ¼1ÒI‚¤¦`kŠ²ÏšN÷ïíðïõôéÓ5kÖŒ5êêÕ«#GŽÜµk×Ù³g»™&“Éüå—_LMMÇÏÞhaa1uêÔ–––n&„SWWŸ0aûmLLL[ŒFìMpD×ÇëŠëäêŽË¢€eeø3”>~$ØÛÓ׬iC—ŸO¸uK&5UæâÅf''çÎïÞ¦NUºr¥¹_?æÍ›2«W+5((ôVìÿpÄ/H!|y9%<œõ¿+vòò\£vOc#.9™äáAë|W@ºdeeñx|~~>BÈØØ!ôñãÇn¦YZZúòåËÙ³gc}âlÿÏޙǟ½ü¼³4íI)Z”ˆÒ‚B )Ë%%Bɵ/·tí\û¾•-[òK¶‹hYZ%mZiß›}{¼Ì3Ó4ÕT–óýÜëóvÞsžóœmfÎ9Ïy{®®®öóóc0L&sûöíFFF/^|ñâŸ>}úÖ­[åääöîÝ«  °aÆ¢¢¢Õ«Wûøø´G«°°°'Ožàñx[[Û³gϲÙìþùÇÚÚ{›‘‘qàÀ‡“““cmm½gÏ"‘ØžìBCC£¢¢dddæÍ›PYY¹jժŋïܹóõë×222sæÌ177ß¼ysmmí´iÓ¼½½[”yðàÁ˜˜EEÅ7Þ»w/))©{÷îk×®}õêÕÇÕÔÔFŒ‘””D¥RoܸرcÇþýûI$’———ŠŠÊ±cÇ09‰‰‰›6mâ©$y¡D&nÊÖ×VÒ\C`oüüüêêêØlöúõëGÕÎìBBBBBB ðx<‰Dn©g*‰&»wïn§@??¿ŒŒ yyyooo}}ýmÛ¶566Μ9sÚ´iÅ JLLTRRòññÁî5Œˆˆ““/_¸»brTTTŽ=õêÕÆÆÆ7ššš‚«ÆæŠI&“ùW›©®®Þ°aC+nøÑv 3?f=ˆx”—Ÿ ˆŽ¶ÖT—¡CŒEÆDQàí­XT„?uŠ2kƒž@˜9SÙ×W!%¥žÿÐJF0x0™‰ïÙ“«¦&¢ì"#ß¾Kž‘—“30À~Ü8Iô˜È¨g‰oÞ‡[mkm xùt¢£ƒ˜"·(A’Èsg{ôÑ×omÌêê‘ÐME¥±±‘N§khhˆÔ0¿ à߇Ù9¹L&£§¦æssg§‰‚¸•&™°0ÓÙYæáC™‡îîb"‹çæ­Û³³ÇÛÙŽ¶´l.εÐù|¿-deeôï?ÑÁžD"a!-¶B‹è’ƒ¢(›>{F "ÆÄàh4Yggfç«@ ˆx†^ZZJ§Ó«ªª¢££ÍÌÌ-ZÔN™™™™uuuð±cÇbl6ÛÁÁÁÓÓsݺuQQQVVVÙÙÙ®®®ÉÉÉ.\èÝ»wLLÌš5kÜÜÜÃÂÂÂÃý½½­¬¬ÚcŽîääwîܹ޽{GGG‡††:::fggëéé¦M›¶hÑ"ÿ††mmí¡C‡Î›7¯Íy\\\âââ®]»F$ÃÃÃoß¾½xñbSSÓ€€;;;6›=cÆ Àüqûöm ë|ݺu!!!ÆÆÆ¦¦¦&&&†††³gÏ611111 ¼xñ"‰D*++;xð Ë–-µµµ/^¼¸téOHMMMhh(¿Jfff’ä.2¡È¦ìÑ£G«ë«Ãh®!ÌÌÌPuvv¶´´!!aîܹÖÖÖÅ™5kÖ»wï=zÄáp–.]êááQTTÔâÚpw5kVlllTTÀÜÜÇ=ÚËË td5Š,æ¼yóùWÛàp8ööövvvø/‹êêÚe£,&e0ZTãFØÍå«×”|ù<Úr”¹éðÒÒ²Uë7„ß¹+²´ɼ{GX¶ŒÎ?ÿŒÍöö¦——ã=únÒž‘ïÙ“«®Ž23ñC†ˆ6DÏÉÍKx•ˆÇãñx<‚à>)=zòÔ"ŸeåÍôòœ¼¼/_á…@¯­”’"¦Í$‘ YdÁC ’Äü{ûöèØXÀ…KWÎ_©Þí»÷/[ž”’2lˆ±Íر22¤“A‹}ÿwîŽÍ&ݽËéÓ‡ºk@&<\| ˆÉd^º÷¿ð[b¢¥¤¥¥¤¥cÄápŸ¿|9vòÔêõy'[l…% ¾×“ÉÒ?)8sFfÈ•Y³cbð801iy€C Ò%hjjnÛ¶möìÙ555óçÏoÿÏhl»OŒOˆˆˆÔÔTwwwfX¨¬¬¬¯¯Ïáp6nÜ(//?eʔϟ?ÏŸ?_EEÅÕÕ|[Yh3JJJúúúl6{ÕªU‚Ìš5KNNîܹsØ[—>}úH$R= Û“–žž™LÞºuk÷îÝÝÜÜÉÈÈÀáp›6mzùòeFF ""bëÖ­Â?E‚ ÈâÅ‹ïÞ½K&“ëêêjkk¯_¿ÎårsssÇŒ£¡¡¡¢¢¢ÿý>“0d2yË–-ü*IX"‘ E6¥„;‡æðüùó„„„… LLL.\¸Ðž¼ššš233=š““ó÷ßcsH¤ži›5i-x<~Íš5wïÞÅž={¶k×®èèhá⨨¨èééååå9;;»¹¹·Í6DEE…wµœœ\ÿþýy¯:®EAIW‹œÝ»åÜÝ™ýú ®(((üõß öâ’’u~þÛwï9}ìˆÈS999þøm U$,>&—Ë-(,êk`È/,¹Çž•“s*èìdçË|ðø¯>åç¯Ùð×Á£Ç·o)™TW3-âöîÍ65%ÆÅ᪫¹BËö’ð21‘J¥:;MŒxü¤²²²9;€^o]þÂF=Þ½oâ›·V£FJ˜Wû%ð˜3G©¡88°Y¦¦lœˆÅœÖ±r¥BBŽËÅŒŒÐ!C‡bÐEt@ºE‹‹‹/^¼ˆ ˆ››ÛÊ•+kkkÛy÷ÛàÁƒeeeáEEEoß¾uuuÅ&óØOA455±“€=z`f}***Þ3›ÍnV<ùJJJ׳gÏœœ,üŸþ9~üø¼yódee›šš¤â ®®®¦¦PVV–——g±XGGÇAƒ8qbÿþýÕÕÕýúõ“\ ‡‡ÇÚµkÃÃÛšš<¸dÉ’¸¸¸¨¨(lkTÔÔÔ„UjsB1MùC!²!ÒÒÒ»ví"‰L&ÓÈÈHµ˜æÐÑÑY»víÖ­[×®];xðàíÛ· Ç‘z¦mÖ¤ ¸¹¹­_¿þìÙ³K—.E¤W¯^¡¡¡ ™âàñx;;;§««Ë/$222åÛ†Ÿ­­íÈ‘’þzçï«ZÂÅ”$UVVÖ½{÷°ç>}ú¸¹¹ ÇÁÖžtuu%:€¢(.6–ûîÐÐ@„4a‚ªUlCCöˆ­+.—”$óô)ñéSßaoA$Ù“¼|5¤W¯^ž³øΛû<&öUâëiS& ÄýšØ¿?GSS橞×LJþM)K|ú„×ÑáÆÆét¤¡¡R‘ØX¢½=«ÅOÈÞºº+–ùlݹ;5=}ø°a-ä§€Ãá—”0™LýÞ½9NAa‘§‡úÍç3Aç úè¯ô]†ã›Åö50˜ã1ëAÄ#&òéæMÃÍ Àœ6œ,s÷.ýûÓhĘ|f&>;›clL_º43K~úì¹a¿¾ æzF<~ò,&ÖÃm¦„´03TUUI¿µZêÒ¸ôt\z:áÐ!955tüx¦ƒËÎŽÙ­[7ç33‰\.˜1]µŠ;bûÞ=$4ÿ#»6@ ÈïÌŽ;¶mÛvêÔ)__ßaÆݼy3..PVV¦®®Þ¶óðššš¯^½b0üÇô ˜Çr …‚Ý^F&“µ´´°8?op¯ÍkjjVVVtttJJJš‹ÖÔÔ„ýˆBQ´¶¶ûqO£Ñ† âååuùòeAž>}*>¯^½z•——´µµ¿|ù"&¦‚(_V‚¬^½zõêÕºººž­ÜÒSUU6mÚ… TUUïܹs÷îÝ .ÔÔÔìܹSd|ìN1@ZZv™™â÷^Ÿ$GdB1MÙzöì‰íÁjkkþü¹ýE6„²²2àСC<úb–™´µµKKKbEff¦­­íÆcbb._¾<þüiÓ¦ 4A«2m3"5áí¶‰´téÒ3gÎl^Lq444DÎ>nß¾}÷îWËqEù—êÊÒÒÀùæ˜Ì LOOŒŒtrr8;;wëÖíÅ‹€¢¢¢ÒÒR—Ëåm¿cÂÿ6GEEv¼NÌü@¥R?~ x÷î]eeåôéÓ111ùùù“&MB$%%¥¸¸XüÍeee˜‡9ñóþâ (Êÿ§§§§¼¼|``à”)SÄHÉ‚ ^¼x1hÐ <¿hÑ¢k×®?ž·t‚åÂÛÿèÑ£GMM àþýûl6[ŒJâi.asMÙNÊË˱֔Êü¿9åää䂃ƒ±W>äMá„ùòå ¦’›öÒÒR???‰äââŠMSš ¹LÃÃñžÙ6Pe2™>>UUU¡¡¡ØçCsÅár¹Í-6–ÃÏÏÿ•@]tttŠ‹‹±ç;wî(Š˜|ÛYÍC`p àîîÎ+WDD„È8D"ñüùó’ºä**òú.K[›¡ @¢SÄ(JÈÈ‰Š’yú””ÄŽsIN&WTV²X,-É,"4 $]høð06æ`Ï$Ú§O+.¥#š••Í(CÛ{ð@ ÛŒ}ôÙ9¹õõõƒ\½á¯% Œ·³m­„#±²c%ÂŒ¿¹˜}ôï†ýïJHHÉ—/7&¾ys.øÒ…3§‰2ß-@~)-`'0xª««Ë ­È<|ˆÐhŒokT\¶¹9áí[\q1÷ÛÁsÚ4WS“maAºqƒæï/¬t\<—Ë?Î`k3öø©3EÅÅz|Bø)*.Ù½o?EAUUUfVÖºU+ûõýª¼$­ ^‚m8lÏá€ÄDbb"qÇymm®ƒÓÁ9v,KN®eQcÇRde•Y,ÿäø‡@ ÈÉæÍ›³²²®^½zçÎÐÐP77·­[·fffâp¸ö¸Ä0`@jjª··÷Ë—/MLLòòò¸\îùóç1£€=zܼysÆ ïß¿ðàÁéÓ§-,,ÂÃÃ/\¸PVVæãããååµeËÀªU«6mÚtòäIÀÑ£Gµ´´ìííÛS^MMÍ7n„††>þ|Û¶m666333}}}Q£F©¨¨¬]»6((H[[{Íš5mÎ(,,ìÒ¥K%%%Ë–-Ûµk×úõëi4ÚÉ“'µµµåää–.]ª  Ð†J¶··×ÖÖž?>ÀÙÙYGG‡gJðï¿ÿž:uŠÅbyyy >;[îÌ™¨(œ4œ@ò Ñéee% 㫨 22 ¦¦Y{*AÀ›\aÓ~ìØf&aÀNk{,çpšYé@Q2™"Æ3/ékÐgØÐ!«Q#ÃïÜ9ù/¡ÅȼÅ9 câp8å/¥¥ UT”+*+ ú諨®äÑht¿çÿð;w®…þweÅf¿q¶6©°»dž>%&&b!HC@QÒíÛ´Õ«ÿSíÛ—ª¤„TW‹T?êùsÓá&ÝUU6cÇž<øôy´·×üfÊÊe2¿æQPPPTP¸÷๙)æEB’V/Aº|ù‚»tIöÒ%Y 3†5msæLº˜> ·ý!ò¡¦¦öøñãúúúªªª£GböÒeee˜Íj›100xþü9FËËËÓÑÑfooÿæÍ›ÜÜÜÕ«WËËË\]]1·111¼gKKËö(Ã@ \ºtéÓ§OÇŽ㩤¡¡‘•••Ý»wïnݺvîÜ)ÛÒ/mñ¸¹¹ñ[c;–¼Ÿôuuu7¶ÅA‹‹300‰Ä„„MMMìÕ”)SÌ ,,,*++?þldd„ÇãÝù.~â©Ôæ²`7å…xå§OŸ>yòäÜÜ\%%%#ëm`ìØ±ñññ€ÜÜÜ `.ø›3×™iZZš««kÛzÝÔ©S§NÊÂ`0„5‘ÇŽãoháâÌ™3gΜ9m,\Wzzz¹¹¹¹¹¹½{÷–““óðð——ÇjIêÕ(¾˜Âƒ«mÌ›7oæÌ™m¹)+p Ÿ8»y3wÔ(äñc$:P©’¨Õ¢ªÝºêë„_}ÊÏçp8ý Âû÷çddà™L #t[_m-bh¨jiÉ~ð qþ|Å—/‰ `±##U@S04Tµ·gž9#8ñnŽÚººnÝTD¾’“—ßµmKs yShYYY2E´˜x mŽÜ\̪êj&“ù© ÀÂÌìKiéǬlõîj_JK554ø'üØ¢@EeÅ@£Xˆë8Œ‡=/X"â]\U1.URÂñ«‘ ç_ø/IYWOO8¼¬¼üCæGM Õ¾~“ˆÄçÑ1Í-èëéñ»'¤P(K–¯8tìøþÝ»€d­ ^‚RÙïÛurBÁÈ‘IÄ×*0=A„=ð‘H$þ¥2…‰µµµ……E¯^½ÚlžmÀgøÙ»£K***˜?ÅŽ£ó›RŠHQyžç cãï.JnáLŸ|  ­ é2ÂÃÃoݺðññÙ½{7æ¾ó±´´|ðà“ÉܳgO—(ùÁ~«/_¾¼«ù¹ù‰ªQÒxÿ",ñáCÔÊŠ6z4ÚÒ5³QG„0f ÑÎŽxä>'‰ˆÀ=z„¼| ¾— ‰/AíLJ߹ãá6S›Ïçç›wïjëêF˜› 'Y¸qê”ì¶mr£F±úôùo:J¡ ‡Ë"˜9“°¶f1ÈŸ"&°Üܘééx€»;ÃÊJÒ¹—Ë :AEEyŒ••„I„a³ÙI)©[üýZŽÚñÜûOJjšÿ–-÷oÝd0ÎÌ8uôˆ°ß0ÑÁáÞƒ3§ÿ!`…q㦠{? ™›7ÏZHbNŸNx÷Žtëõû%â½{(‰D_¶LXTÔóèaÆ.œ?RWWŸðòÙóI–_¾”öPÿµ­ ,Gkw൵Q''ÔÉ µ³ãHllÚßÐÐ ‡àÛPÊÏÇÿû/ñþ}|e¥Ò¿ÿÖ¶J@ )"pР«Ø·oß¾fœ+C~[p8ÜüÑÕZüôüDÕØj+Ù+W&“~ò¤ä×xPÅö0x--â²eÄ•+  .* yô÷ä h¿OYÏcb×ýå¿få 3S.—›œšºÿðÑžššDøhQWçîßO]¾\ÁÑQeÍš­-‹@>à÷ì‘ûô ¿hcðà¯ó«ìl<‡† Á|¼W"a±˜/^¾Â X[[ûøiTn^ÞöÍü7ÐðÃf±°øü((Èóß ø8ò©ÍØ1ÃMDß)(‰é’—ŸßG¿‡Ë/,$z½EŸSZä5ïÍ»wý½eÙoëÑ£I$RYyùµë7Þ%' ³áóò©©,®‰ sêTù¿ÿ–¹}›ú÷ßà› „F“=s†|ù2*dH–“›[\Râî:ƒ?PUUÕdØÐ踸?—-¾¤ ¡¡‘W‡l6û]rrâ›7«WüÉG|+H"¡Uàñ`Ô(Ôɉëä„ü߆?‹ÕFþÇevï–}ùòëÑuuéßø @ ˆäܹs'66öèÑ£]­üîHê ÛT$de)œ9ú}›¬«‹6ç‚®%Øl6›Í¦Ñh‚'L º¸ |J îÑ#´[7I¶Leeeíݳ÷à!¿¿7ãñxìv Ã~ý¶øû57÷vwg(*¢þþò›7ÿçVD+WÒþsRðí:6 #¯«ËUQ§™LÙ¼}ö,/'7ÐÈèðþ½C›?ôB¥Ñxñyô508æ ¶®îÁ£ÇTuÕrß¶Ièò úôäçèëõnΟ§‚‚±Cö:²gÿÁ½È!Àb±ÌMMO9´ÿ°à÷½ÌÍ›¦¨µpnÏžlKKBBáÍöÈ‘AH7n’’(ÇsDå‹zM$­ÇŒgc“œ’š”œban&𪰨ˆW‡x<^[KkÕrß)Γ°IZA¼ÄwéI“Ø>>x{{Ž’‡Éd²X¬úú6Ž,ŒÃ‡’“qñg“†Î IDATñ²yy0hª®nÜ S(Ð@º†ÐÐPOOO.—;f̘a'@~gË—/cO&Lh.’Òõë¤ÐPº•áÓ'dÿþ& ©{'D"‘Á`ˆ¹ôÉ“'...ü!%Ÿ?çr¹\]æ®dã‡Ãoßrrð Ò«×Ò’¥¦öݼ(#Ÿ•…wue^¼ 2`üøV;´“”Ô4}½Þíô+u2>dvSQÑÑÑ.*.¡Ñ¨Fˆ_ZV–÷銂¾}0 ǵÍ1áÕ+„ËeYYñ,:é¶ÂƒÄŒ,€¬¬,—Ëe±XÒòØ7q¢zj*ÞÌ õö溺rž?¡¡øÀ@Ñ7)`,ùÝPSSCQôSn& ¯áÏêW¬£‰‹‹Ã.±»páÂÂ… yáˆXGµ………C† Á.º×ÑÑùô铌°fH+yöìÙ¤I“ A/W?;'Ož<þ|jjjW+òã2tèP_ßfwª~vdee}266þ6¥«ÂB~+`ßæ¿KÑž.¬&¤Ítõ¸i™®®!ü²àp8›7n¸»»s¹\‰´iÓ&1ñ““““““[{øðá”””/_¾°X¬‘#GZXX”••¹¸¸p8Éuc³Ù_¾|y÷î]vvvSS“p[[Û¡C‡K.³m455eff¦§§s;Ì—oç¶ Õ~ØlvnnnFF¼¸î祓ûöOѱ[×r@ ¤M8;;oذ¡¨¨°cÇŽˆ‰L$eddZ”™™™ hjjº}û6ÀØØðåË—÷ïßK¢Rffæ²eËzöìyøðá{÷îM›6MYYÙÚÚúòåËù³žB¡œ22R’%€àààøøøÂÂÂÒÒÒ„„333áhqqqööö,kïÞ½ÁÁÁ6lðôôäp8OŸ>?~‹ê 4(((èäÉ“ååååå劊Š>>>"Ã;”Ý»w³X,]]]UUÕŽó§ÐÉ…õõõíß¿¿t uåÊ•]»vmÚ´ A¦¦¦uëÖ;wÎ××·Íòq8ÜÙ³g¬­­­©©Ù¢6›}åʕݻwûûû·S …|üøñÜÜÜÞ½{=º²²òéӧСFè̾½qãF55µŽ­|üø‘÷ÌÿቶÛ×8Àår³³³¿|ùòÃÎR ?)²²²ÚÚÚ Àáp°›A~1:­{ÿ2㈿ ]­ é@¨Tê?ÿüèׯÏź½½}HHÈôéÓ{öìI šKK$‰ŠŠzòäɤI“‚ƒƒE.Ìž=›D";w®¢¢býúõýõ—‚‚‹/$דH$êêêêêê¶²|RcРÎs<Ùi…íӧϰaä+377wÈ!b̰Ûàò]^^^d×IXXXnnnûntái6›]QQQVV¦¤¤¤¥¥¥¤¤Ô¡Ùñl:4ŒÎéÛ†††öY!ù‡6_v€\¾|¹_¿~T*ÕÒÒRAAAŠÚC  åÕ«WòòòFFFYYY°›A~%:­{ÿ2㈿ ]­ "¼@àò @”””8;;ËÈÈ0™Ì®ÖòK!##3jÔ¨ˆˆ###ØÍ ¿Ö½™qÄ_®ÖH~ÃT''§Ç;6..ŽÉdN›6íÑ£Gñ»wïþèÑ£#F„;v,))éÊ•++V¬ y÷îAs™ÚØØÄÅÅ–.](½Òt8Ø¢Iû­y(ÊËË{õêõöí[ssséJ–‘‘9pà€­­­´Ì°I$RHHˆ«««„ñ/]º´jÕªW¯^µóàF¿~ý¼¼¼Nœ:uª Ò$ß±\hh(€N§cŽå®®®íw,ÇƒßÆaÓ¦M˜ƒ¢¢âÒ¥K1Ÿv?)iii&&&ÅÅÅo1Äb±xg´µµ¥xÆ`0222ÐDê (*##ƒY,ÃnùÅè´îýËŒ#þ‚@ _˜ÌÌLÀ† ØüßÁÁ¡¬¬LAA¡¦¦&//¯¶¶vΜ9ïß¿pãO$ÉdrPPпÿþûäÉ1óÿøøxlþùÐÑÑ‘úù‚ÖÒ΃ØÛÚÚºÓ˃Nq,ÇC¤ÇD‰´sçNéæ÷£ãÎ8|=‹õ“þ „üøð¯pÃnùÅè´îýËŒ£_lË ˆsw8þ<ˆˆpttÜ»woIIÉÉ“'W®\™——wèС€€þ´D"ñùóçïÞ½ëÑ£‡˜\<¸cÇŽ-[¶thY i}}ÔÖÖvŽcy~:αëׯ‹ô˜øcÞŠõ›óu þ,ƒt°›A~a:­{Ãq@~pÔÔÔ0›Õ¼¼öüï¿ÿ´_æùóçuuuÓÓÓ>|H‚@ ´J“Ó§O:tHºb¼ÿþþýû<Ū««÷ïßojjš——'^ ‘<~ü877WZº ÃëmmH›“;ÛkáÛ¤$Ë‘#§MvéÞ½ûÁ£ÇÖýåÏár%”_ZZ†=‡…ߺz=TLä„ÄÄâ’Ï-ÊlQŽ0yŸòc_¼ ʱÿêë._½æ1ß«äó×ìâ_&”|þÒ*™ÍÁ`0‚¯\}s㦠՜sO•—J¥=‹‰ij"·_C‹õ,&¦¾¾¡rZÕ½UUïW­Š61y¨¦mbò~Õ*FUUGd$@ƇoÞ½lj"?‹‰©®®“°#:L§}½A .‡Ã…‡‡ëêê8ðÈ‘#™™™зoßW¯^Mš4)33óñãÇD"±=¹„‡‡cQQQ RÐ@~$µˆˆˆhjjZ¸papppII‰ŽŽNÇëÖ2‚`šWTT°X,6›Ýid2¹¤¤dàÀ‚(**^¼xQ ›Ín. ‘𤦦R()jÈŸ¼¼=‰¥Ñéýûõs´ÏsJœ•ý,:†Ãá˜>ÚRðP€°œÂ¢¢gÑ1õõ :ÚZN±›…K¾o²îªªÆƒç¢ßoð>d~L|󦡡AMMmœ­­®ŽvÚû÷Mcù¬ú£cã454°ò ðôÙóýû{{Í¿wÿÁ³è7AŸ·¼›Óüyl¬‘a“ñäi‹Å251mõß‚KFffL\<Àaœœœ\aQ±õá œ:¤¼ªÝºP”û,:&íý{yùñv¶} xÑ„Eñ^ 47–5 ¾îK—|þ’þþ½™éð61ß½™ÕÕ)^^CçÍ#p¹ì/_(ÅÅìššî={*9;§xyML”ùvЧIžè×PTUW?Ž|ZUUÕ«W¯‰öªªªü )TjLlÜøqv/_%¦½¯  à8~œ´ÎP@ _É¥³X¬ ,X°@*ùæççóž]\\¤"³Ó€7H¼ÒµüŽ7ÔÔÔDEEyxx¨ªªŽ=šß'gUUÕªU«–,YPUUuçΛ˜˜ñ¯PMJJ²´´ #“É.\5jTZZŠ¢Û¶m;~ü¸‡‡Gcccvv¶§§çÙ³g±$ÇŸ6mÚË—/KJJæÎ‹]k½Z¸páÓ§O±g1®]»æää”””TRR2mÚ´M›6íÝ»—W–ˆˆþ½ÁæD“ÄÄÄÏŸ?—••EDD°X,©hÈCXC&“YPP ¦¦&^[·nÙÙÙ%$$ÔÔÔøùùýñÇØöø“'OæÍ›G¥R333çÌ™sþüy1ÍÄårçÌ™³jÕªŠŠŠüüüùóçïØ±CLuñz›˜8Í¡¯§÷âå˸  a±XÇœ4qB|«Ó_ëíí»¤GŽž¿t û3>áå¡£ÇdˆDE·ïú'ñÍ[EßgdTTVU×Ô&¼zÅf±žEÇ,ñý35=½¡¡ñøé3kÿòÃV^&&nÞ¾“Î`lÝv÷ßû* Èyñòå"ß/_Q¨”°[·½–,-¯¨h®øCX,Ö—ÒÒn**¼ØÃý‡ËW¯yÿá“Åz»p©ONn^iiÙŽÝÿð à+**vü³§®¾^8£†††×oß:9:(**š úìy´€¼g1šŸ=ñzX˜ÿæ­*µ¨¤$`Ûö[wïa¯"?Y±f]VVveeåÚ~§ƒ‚¯\í¼òpìÔéSAAõõ ѱq‹}ÿLxùJŒ(ìUsͽ-,*Z¹v]æÇ,MMMᲈGÂî»k—®¥%žÍfUW+®bi©hbBNJÂQ©š††¹»wK+£fҢ ¿J(Š¢³²¼¼—<}öŒJ£Ýý÷þ|ï%9¹¹(_3Õ××8rtמ}'ƒêêë£cb½—-—œÜ&e È/ˆÈñ^^^^RRÂR]]­ªªÚ†Ž_ 1•&!QQQ222ÒÒG*HåF€'N 6L ÞÀÏ!CN:ÕN!?2$‰7iúÖººº!!!RQ©ýHdp÷î].—;cÆ .—;}úôµk×fee 0€!+++99YUU•Édº¸¸lÚ´)..NÌ+A|}}­­­oܸÇãétº““ÓÚµkŸ>}Š È½{÷ÒÒÒÔÕÕq8ÜÔ©Sïß¿ïíí]VV¶wï^__ßÇs¹Ü¬¬,+++LsùÏZµ9 d2yëÖ­«V­Ú³gŠ¢IIIÖÖÖÄR1™ÌôôôáÇs¹\EÉdòòåËêÁ××wРAj²gÏžêêj2™ü¿ÿýF£µ_CØlö‹/°ç†††ëׯlܸQŒ•••k×®]ºté‘#G¸\î‡FŒñäÉ@FFFZZZ÷îÝq8œ‹‹ËÇ.\ˆ¢¨Èf:}útddäDZ…Ì;v\¿~ýï¿ÿ–ä÷A‹qXî³d͆¿6oßÑ­[7³á&fÇ[˜™ª©©ÆXYîøgOcS“’¢bzF†j·n2?²X,–žnll¬¤¤„¢(@AQtårßú†Fºo÷®šššÃÇŽ»NÿcýšÕ\.7¿ `Ž×—‰¯Ÿòóî]UVVÆáp+×®Ox9Åå;«B~9'NÚZ[ïÞ¾ÐD&{y/¹pé²ÿ†õ‚e€Ãa§¤¥a’ɔǑO¿”–zÍõä«EÑ[wïý1uŠßúuXWœîîñ21ÑÍuÆ¡cÇ_&&:Œx£¬¬l5j¤p•FÇÅs¹Üqv¶\.w¼­íÁ£Ç ‹Šô¾[¹DQe±Xb4G$6þEXÈÕn**8nõúñ/þ˜2™J£ž;?g–û ße(Š~ÌÎ^¸Ä§¾¾°TÞÒ²2@}}Cص« l6{Åšu'ƒ,ÌÍ‚HQýúP©ÔæšPXT´v£ß˜ÑV~ë×3tI»¦â»w틃ÝÜÈ˰ ¸õõ²ÊÊ´ÔTe#£¢øxÉGGÆ ¼¢bïÁCü!MMdŠ.—»çÀ!3Óá{wíÄápLkùÊÕ‡Ž8süè· ÿ3ùßµ+JŠŠXÍŸ :æô/¹‹@Ú —Ë]²dÉ… «V­:zû<8NZ‡"j”””$wlü³€•è§(‡û)ô„üüD[r$²¸uëÖ¸qãºu놢èäÉ“q8Ü­[·°WXò+VH$ …Âf³7mÚ”•••™™)æÕû÷ïsssýüüèt:…Bár¹kÖ¬III©­­¸¹¹)**R©T2™fÀïïY¤ÌU̺uëÈd2…BþÂár1Éãmm÷åø ÊË+2>döÔÔ\³s¹³˜˜óæ¶Vsuuµÿ–®¾=TTV¨ªvãïü½ut««kDVNÇ•WWG›÷©¢«£¨ªª`h(Rh¦¹ëêêÇN6tHjZzRròàAED*(ôîÍ()‘íÞ©®……‚àP”ˆ 8fMBÇ0ÓîÕkÿ?»ùCró>Í]¸PV^ضs7o…›ÉdêêÝk ×|eUe_ƒ>­<ùé(..æÿ³²²ûY˜œœlffÖEJA:œ1cÆtµ 1^v ‘<?¶5n› Z>Ž ÈìÙ³y¿{öìyûöí·oßš››c ét:OæŒH$¶øjÏž=JJJØ+Ìp»h@Ø5Š¢ŠŠŠt:7'áIC¿ßãI–@  ¿ìg.Š¢\.÷åË—àOÕܳ­ÒDZ «ÕöÌápDÞ…#µ¢¢"‡Ãáù;ðÏÇ„õÁfþÂͤ¥¥µiÓ¦+VDDDÄÆÆ>|øÜ¹s111¼hÍÑÚ À/¥¥'Î._ºDWG« %EÅå>KË+*ß¼YÁõ±5òÑ“ÈaC‡jhôPSënnfšš–®   ©©Ñ[W—¿¤U!''ÏmMU4W‰„¢(ƒÁ ‘H_å0ž9 ?¸ßrär8L¡É0Š …²xù ?sÆt7× X¹n=–—åÈ€W‰¯1Ãþ~üúc<‹‰AÄi‚#o´ª««?‹Žþù‘ç8³‰hQs‘]'°˜,þ.Êb±š«¢Ž(/–¶· Á–¥äååňÙÜlà5×Ó{—÷²åGNœhŠ‹“!ð8¶BAèÙ³¢¼\ÃÎNòÑѶtTè3 «:ÞH_¹ÜWA^þë;àfƒu˜æj'À}"ÌðáÃyÏÆ 5ê«oÝK—.988t‘RŸО/h©(ÐÎ ,!Š–‡Ó­[·lllø÷ükjjîÝ»wçÎsss,$11‘·:’˜˜èÛ·¯˜WØ‚H$ò¼†¾zõ*&&ÆÄĤ95 ÊÊÊ õõõ±×¯_K\L€å[WW—ŸŸoðÍxJJ öðæÍ O´¶_“6h(’Öþò600 “ɹ¹¹˜9`ÆŒØY‘`î„› ðôéÓµk×Μ9ÓÃÃ#//ÏÄÄäÍ›7ãÇo•>-Ò­[·ä”ÔÄ7ot¿]B‰p¹EEÀ¨g/\|3|Ø0.—kj2ìî¿÷I$™Ñ––ÂÓc~t´µ¨4ZIÉg]ݯ’7øX˜™¶VCÌá|fVÖðað™ååå{¨«‹l›ìÃÇUUU7®^ÖÖÒÂÖkÈd öŠD"aŸ“›7}ê‘|m6|øÂùóx! ѱ±Ñqqw´V󯩴µ›š¾”–j³†ÊÊÉSœ*ïûŒØM€÷]1¢D6wÿþ†€áÆQ©Tÿ ëç{/¿}g–Ðí ÒbÀ–-ÏÍÌT»wW1WP Ãb1p8¤[·š¦¦êššñ›7wáÑX½Þº<7Ð談—ôŒŒwIÉó=çÄ|Ÿñ×a¾Õ¼6€@ !ÆŽkbbRSS³sçNWWWl¹ùêÕ«ÙÙÙ·nÝêjí ?©©©}út¥ÅÙÌ™3-%»‹ù)hÁ@jjjNNÎÌ™3ùO***ÚØØÜ½{—Ífc?ñƒ‚‚^¿~¢hNNÎÎ;íììúôé#æUß¾}GP\\Ìb±òóóÿüóÏ¢¢"3óü¦éNNNššš«W¯®­­år¹aaaQQQ¼˜"“ü9nÜ8===??¿¦¦&.—{ñâÅôôtl«óñãÇ“'OæOÂd2#„xñâEk5Áª¨ý #¦ÕšScìØ±þþþ(І……ÅÇÇóL¡„“7×L4mÿþýׯ_g0 %:: ¯¯/Fñݬ9äåíÇ_ ŒzF£ÑP¥Ri÷<Œ{ñbÚ”)(Šêõî­®¦ŸðÒdèPE b±X‰oÞŽ1â»Üùž±äáÆéhkŸ8H¡PP}úìyJZÚo³JTdâïK„É飯o|Ézì˜êêbD‰nîÁƒlEQm­^înWCo”•—‹Ñ¹Ù‚HнÙòò£BCÓŸ=+.,¤öìÉèÛ—¢¢RPZš]P`yã[^^Z‰IÜ\°Ž¶öPcã“g‚ÊÊËY,ÖçÏ_ö8T^Qñõ™/òí»÷2>d¢(ZT\|.ø’…™™V¯^mÒüâÈÈÈ„„„àñø‹/^¿~ýæÍ›‹-Ú²eËÍ›7eee;S“W¯^]âãêÕ«=ª©}„í†N§ó<2píڵ͛7oß¾½“UÚ·o_@@Àž={ZŒÙ¿ÿ®Ý„'‘H¼ÝÍ6ƒÇãq8œŒŒŒTTú1ÉÈÈàn‚ÚFXXØ–-[üüüÚ/ªC‘¼?‹¤µÃP ZZ[K-,ܹs‡D"Mš4‰?Ãá̘1£ªª*66K>cÆŒéÓ§÷ïß̘18îÈ‘#)%ý¾qÅh. ìUÈånö÷ËÎÉ1kötwGŸLš8;SÐ9åÅRÍvw_½~ãîÞË|I2¤Õ.çp8bDq8áæÆ–0±l6{Á\ÏÇO£³˜‚´Ø½¹\®œ™Ù„ôtÔÄä}VÖóû÷?|þL°¶žž.gf&Ò³cÛ2j>­p(Êë Û6°ÙlÏ‹<æ/˜ç½XM­ûÚ•+P¾vÄÆÛÙ­÷ßô‡»Ç"_·~ÍjÞ*g+•@ ¿>ƒ JOOwrrzøðá•+Wúõë÷îÝ;þÂP(©«!//_VV¶`Á‚3gΨ¨¨ÈÉÉEFFjiiñ¼vׯ_ïPù­åôéÓ˜ÿi^OÃ#F|úô »âº3qttLOO éä|» 99¹ÏŸ?[YYuµ"æÑlÉ’%þþþD"Q*릦¦¥¥¥íÕ¡´³?·v TKkk ¹|ù2`„ "_ËËË“H¤úúzßm$IAA¡©©éÓ§O#FŒˆÕÑÑyõꕊŠÊ˜1cØl6‡Ã)..nî‡ÃÉÉÉ%&&þŸ½ûk"Û~’ÐJh¡7±a‘*îUX±+ŠeQ¢€Š¬ `Y\ĵaGADŠ‚¥ˆH•.‚RÈûÇÜ7¿4B¨®çóøø$SÎùž2!s2s¦®®N[[ÛÀÀ9O–––îêêBî2àñxaaadbjaaa*•úêÕ+:nnn...ŽÄ@‡\ÉÏ-:N£ÑDDD^¾|I ,,,Ö­[G£ÑΞ=ûáÃä¤h©9QÓh´>E"$$”’’B¥RgΜÙÓÓ#p„.\àØ.È|fq ¹/55µ««kêÔ©JJJ,ñ!!!¤¤ÜšI\\üóçÏ………"""†††222È„=yòÄÎÎ.!![7ãƒÁ„draÑ2™¬¨  ­=JXHÍ©ü¶¶6¤_IIIáp8æË`0Ð[<„……sòò¨TÚÝÉ"""8î]n…BÑ?NVF†wU0cNGXXXTL,//¿¥µUSScìèÑìç9½6𵄄ÄÇââÚººQZZÚ£FutüÈz—­¡®N’—ÿA&/[½v§‡»Å,Óíôz´R©Tæâp8n‘së¢===t:]LL,ë]Ž˜˜¨áÔ©û‚{zè~Þ^CS^G$;;;[Z[ ‹ŠˆRÄ)zºèÜ<’biî®®.™ïß¿#ã• †H$Òétä±½üëS÷Fú³‹íéé¡ÑhÈÓ7<#X,–¥'#•‰t ,K ò šššÕTUuÆcù@þZ_¿fƒsTø9EEÅü÷ï%$$§NÑ£P(¼ï¸áQ¾îAƒMNNŽÁ`|*-Œ;q¸Ã¡RRR,,,QQQëׯG—³OÃâÝ»w999aùòåìk_¿~ýùóç¿ÿþ»µµ¹´p`uttHJJnÛ¶-,, Y²råʘ˜˜ºº:%%¥Ï@¡PæÎûêÕ«ÁHñüùóùóçóžšYKKKNNzÏ&K„‡¯¨¨ŒPyðññIHH(((@—œ9s&22y;Ä‘žžž››ÛæÍ›‡;®´´´ÆŒƒ\%-11±„„+++tÉ™3gvïÞ=ò¢ÁÞŸ™ihh>|xÅŠÜvïëaÈR-}ª¥^¦Dƾ==`üsÙ¼„„ļyó :_U:ÞÑÑ1uêTƒžžt6;–sæÑJ …‚Á`{שT*™LF×"S”#‰sK¡¾¾ÞÀÀ 22ráÂ… £¼¼üéÓ§ÁÁÁBBBȬf¼KÝ×H¨T*ò—’B¡ !{ëô!·0¨T*ƒ™9s&ƒAN?ØãaN™[3utt())!DÓé•?2ŒŽŽ,;Ew2ƒééé¡Q©T Ýy^#ú–}ZD,‹V…BAîdFª‚F£!ÉòS̘ӡÑhô?&èŒÇb±t:}¼MŠw“¡Y···kjhŒÒÒBRÃ`0ÓLL›Û=yŠÁ`¦›MãX“½­,ä9·.ÚÜܲrÝú=¾»æÌžÍ`0¾TVf¼y³ÅÍU€.*Xyi4rõ&735e0̹ðHŠcs3_Ê`0x XðƒŸîôçþäÂgF,8Žk • @Æ>Æ3~ìXŽÈHžÝЍˆRóȽ9‚‚ _ N?wî\ddä‰'Š‹‹‘™†˜=~ü8111##ùº2H˜§|š4i //o†¢¢¢xü42,dee™çl¨Éd²˜˜Ø¿ì‘éô¯×ûxCÏöY¦šç½ Ea:—ã3;Žãüü¥¢¢âååµyóæ˜˜aaáÌÌ̉'.]º”Á`ô5 þ#A·ég„} [Hä}-/Çí‘:ú”ŽÀÝŒGâg_æ·ý¬ŠO‡#æ)¤§Õ74xûínhlÜà´V‡¨S¯¾FN"É;­^uèØñÇOŸ ie=Ç’ù ¼Üº{RÌo¶™X ÙùðàeÄ«~þ™¾¡?#A¿¦žžžW¯^ÅÄÄ466jjj²o°ÿ~SSÓß~ûmÈB*,,Ä`0ÆÆÆÇŽ£Óé%%%æææ‡Bî9¿~ýúõë×%$$´µµq8ÜzMµoß¾£GŠŠŠ:99‰DyyùÌÌL‘•+WíÙ³§¥¥ÅÞދŦ¦¦âp¸E‹âñøÃ‡‹‹‹{yy}ùòÅÃÃÃÍÍ I°­­ÍÇǧµµ•F£íܹ}¼*$$$99YBBÂÛÛûîÝ»ÙÙÙ²²²žžžééé<““311ÉÎÎ&“É7nÜ`½8"##ÃÏϯ¡¡ÁÝÝÝÙÙ™[Õ„ææf]]ÝøøxSSÓ˜˜˜¦¦&Ÿîîn …²wï^Ç…ÍÍÍÛ¶m+,,400ç³V›šš¼¼¼Èdrggç®]»f̘Á1ýK—.ñY«C&..îÉ“'8nöìÙ.\ Ñh477pë~ˆMLLY³f¿¿?Úˆû÷ïçØý–,Y»SdìíîããSPP@ 6nܨ¥¥ôýû÷%K–ØÛÛ÷µ˜…[õAû3Oއáv•ˆˆˆŒŒŒþ>`CFF&((HYY¹O«†EOO¿¿¿££ãëׯüøáêê:wî\>¾#?Bh¸ÈÊȬYµ’$/gjl<Œ?,ôôô¬_»ÆÆjî»Ü¼®®®%‹š Æ­›#¤¼JJJÒÍy£¼œÜpAÐÏçãÇ7n ·´´ä6àÌX^^žÐÕÕ•ššzëÖ­«W¯ÊÊÊš˜˜lذÁ××·­­MUUUOOoÍš5mmmaaaÈóžüýýëëëû”Q@@@KKKjjê•+W===–––4mñâÅ€… þý÷ß6lhoo÷î]TT”††FrròöíÛmllââââãã7nÜ8}út===ƒakkkffvþüùœœœéÓ§—••!—a¢vìØqýúõÉ“'èëë;vÅŠúúúúúúááá—.]­«« á!¢¹¹9666>>þï¿ÿvvv600044d)NŸ7ož¿¿¿««kVV–©©éÇeddh4šµµõªU«vìØ‘˜˜8}úôââbö…òòò‹/–ÈÌÌÌËËC¦ ïµJétº•••¥¥åå˗ׯ__\\Ì1S~jµO ÚOóæÍKII¹xñ¢††FRRRll¬Mqq±¦¦¦½½={÷,;;»”””èèhaaaæFô÷÷gï~ëׯ777çÝ©F,Ží~àÀccã±cÇÚØØ¬¬¬^¿~½zõjŠÉ±Q¸U¯ý™Ç' ·Ãp»Ê²eË^¾|ÙËt€½’””tww———ïÓªáòãÇ Õ«WoÚ´iÖ¬YüÌÂ5”F~„@ûÜpòžÿéS‘[LJÑ?Hòò¶ÿýÃBû)ººÈÓ+<—‘SÞ^ Y÷ÞãÇ/w\B$ûŸ”`± úy?~ÜËËëÅ‹iiiÙLþúõkGGÇìÙ³+**V¯^ °³³C¾²‹ŠŠ’H$ä.Üööö¢¢¢ÐÐÐ’’’Ý»w#'Ãb±~~~iiiÈÂ> Ä`0RRRZZZt:ÝÛÛ›@ ,X° ººzíÚµD"ÑÁÁPTTxñâÅëׯ‘™ôõõÅÅÅÙ'2Ä`0ÎÎÎwîÜéèèhmmmii‰‰‰ééé)--9s¦‚‚‘HDeÍMGGG@@€¬¬¬££#ƒáx?sCCCUU2§ã”)S°XlKK‹‰‰ÉÇsss—.] @n7ç¸ðýû÷/_¾\¿~½¨¨¨‰‰ Ÿsã=zô(//¹û]WW¹›šcú|ÖêP’””ÔÒÒ¢Ñhîîî fÙ²ex<þâÅ‹€K÷8MMÍŽŽŽÀÀ@æFäØý’’’zíT#ÇvÇápÛ·o¿sçr:ýüùóàà`ÁŠÉ±Q¸U¯`ý™Ç' ·Ãp» ‘HÔÐЀ¸ýÈcÕ0¢R©Ì— @#?BÁoÿc0#çÇð!è¢#ª¼|²î=,ÇÑÈü<‡ è§@ nܸQ[[ëââ2ŒaLž>¾½½=$$ÄÅÅ%%%%11ÑÉɉÏú‘“““““HIIŽè•”” =zdbb’œœ,""‚\ÐŽœW+((0Œ¢¢baa!r¡2ËBä^ô{cÆŒ©««ë56äDH]]°mÛ6d!ÇL‘U½Öj_)++ýú ¢¢RSS#@ $IRR€Åb•””JJJ—îÇ‘šš’¯¢¢"RdŽäååÙ‘½ûÝ»wðÑ©F&níîèè¸sçÎ .¸ººb0ee娨XÐ÷bòhöê-..}ïÏ<>a¸†üw>õ÷F‚ ‚ âæÜ¹smmmbbbÈYŸêêêäååõi𺺺NNNW¯^Å`0Ïž=C–Íž=ÛÛÛ;99ùêÕ«k×®µ··ÇápÌûò¾;™Š——G&“ÍÌÌ<<<<<<ÔÕÕW­Zż%Ë9 û¼zRRR€ãÇ£3r<‰•‘‘±··ŠŠ’‘‘¹}ûö;w¢¢¢š››÷ïßÏO„ %B¹¸¸;vŒL&Óh´×¯_#—U#±ýøñy\GG‡ŠŠ Ç…²²²ô†Ï§ðÈÈÈ‘Q*•*,,Ì1}dû^kµ¯ø9¯ã yÎò쌖–eeenÝ£êêjô58Þ‹ŽÁ`XºŸjdâÖ¢®®®çÏŸB~ù ˜¼…½zëÏ<>a8†}ê*|êïÔ+´· w 4ð†¬{ÿkŽ£þÿÝ‚ è§C$yŸÿ#O®A¯ÿÊÈÈPSS³´´Ü‘¹NÙgƒÉÉÉ©¬¬DÚR[[ëãã#**jgg‹œHô ‰DB¹rÿþ}ä¬cÕªU!<<|Á‚èf===èÉò‚ýkkk<>-üÁƒ'Ožä˜éºuëRSS'NœˆÃá6lØ=wî\ôdÉ ýf‰9ƒÁü–Ynnî… ^¾|éë묯¯,·µµ•––NMM|ùò¥¶¶vùò嚘˜ÈËË?~üðýû÷§OŸòs‰™µµµ°°pdd$€B¡üþûïT*•cú|ÖêÐ#“ÉH©³²²-ZÄ­û ŒG#²t?*>>‰S` ƒB¡ ìÌ̽—[»ÜÜÜccc‘þFáX½‚õgnŸ0ÜZ[T,5Ë[ÔÔÔú{#ñv3è_lȺ7<Ž ú—Ù¼yóýû÷ïÞ½›9sæÉ“'q8‹KÂÃÃ/\¸¸~ýzEEÅñãÇ'L˜€¬244ÔÒÒZ¾|ù´iÓˆD¢§§gDD„ªªª®®.`éÒ¥Bàÿ IDAT¦¦¦ÙÙÙÞÞÞ,—ôÊÊÊ*((hΜ9’’’~~~<ïêê*..Ž*>>>**ª®®ÎÍÍÍÉÉ) àîîîççwæÌ@hh¨ŠŠŠ••Utt´‹‹Kzz:@FF&""‚[¦ªªªk×®ØÚÚª©©¡WÜ»wïìÙ³T*ÕÉÉ)$$„D"1G8vìØ+W®TUUmÚ´)88xçÎgΜQUUµµµe΂D"UWW#×ÕdeewìØáççG"‘nÞ¼éååõþýû„„„sçÎ8.üóÏ?W¯^]PPÐÔÔdmmãààÏ£>µµµ###ÝÜÜ’““[ZZŽ=*,,Ì1SþkµO ÚŠŠŠ7n܈}ñâEPP……ECCÇî·}ûvÒ‹‹ãш,ÝOSS“[§òõõ­ªªjjjâóªwïÞ=qâD]]]cc£Mpp°‰‰‰é0»uëVDDD{{ûÆ‘Þ˱_TTTŒ‘‘/Åä†Ûg‚ªª*·ê ?#X>ax´ ±±1{TÍÍÍoÞ¼A«åÅ‹̵„\8ÃÍo¿ý†¹zõ*` ÆY!ˆ]RR’]BBìfпÏuïÍq„d¸£€ Vrrr ãSi`ô؉ÃΕ’’baaˆŠŠB.µE —7l^MMM222}=÷î«îîîââb iii@WW—˜˜ú@ÙÒÒR·^óÐÖÖV]]­££ƒÅb‘’-[¶:tH€k T*µ´´TRR¹ðüùóùóç³< º¼¼\[[y]YY©¡¡ÁO„üWr~~þ®]»¼½½ååå©Tjbbâ±cÇ™ƒÔÒÒ",‘³,ìêêúüùóرc»ººèt:@@GFΜ9™››Ëž{gggii©¦¦&rW?ôGšÐÐЪªªOŸ>ÉÉÉ¡§g»_¯©ééé¹¹¹!“#öŠÁ`pë~ì @&“îÝ»'$4lw‹‹‰‰%$$ð¦áÖî yü‚c1y Qxôgf‡^±b…Ÿ0‚u„bbb]]]}ºA ‚øÔÝÝôQØÍ Ÿ!ëÞÿšã-AoòòòC‹¨¨(óÕÈú;yòdS&‰È™ª¹¹¹¹¹¹±±±²²²`çÿaaá‰{™BÏÿ¼Ïÿ™#ä_xx¸œœ:ýíÛ7æÚã$Ç…bbbȵ}ú©dzßÏgÍ /*•J£Ñ0 óL€K÷XܺǪ{ò䉭­í0žÿó‰[»³ŸN÷µ‡Ð(}íÏ| xWhjj7îçýZ LÝÝÝ%%%šššv3è_gȺ÷¿æ8b.AÐ/ÂÌÌ,!!B¡:th¸cé/ooo???;;;‰ÔÚÚª©©‰LºñëÖ-€››ÛùÞ‡LŸºrçù–-[?.h˜ &Ož\XX˜››‹ÌÅAELLLKKkÒ¤IÝÝݰ›Aÿ2CÖ½ÿ5ÇsA†;‚ !räÈ‘#GŽ wCKK+&&f¸£øÉ888888 Wî}ê~X,váÂ…ƒ4Bnß¾­¯¯ogg7’ï¢~Fd2¹¼¼üöíÛ===X,v3èßdȺ÷¿æ8b.ÈpÇAAô‹B§eêêêúV‚F8ô1­v3èßeȺ÷¿æ8b)AÀZZZîÝ»‡¾511™8qâ;w¾}û†,±±±éÏNtttqq±P```cd?Q¨ýwäÈ‘ïß¿KHHøúúrÛ&..®  €B¡>|x(cëK`È4rè#*~R555>,..=zôìÙ³YŠÓÞÞ~õêÕÚÚÚ¹sçÎ;—åíPÆÉOÏ™˜»Í@õmì@AAA‚!“É}z¬‡ëééñððX·nNGæÇ‹‹Ûºuk}}½Ïd¾ÊÝÄÄäÓ§OèCÅGnáÀPM~~þõë×ylc``P[[>dQñ‰%°sçÎéêê’Éäáª?ÂÃÃg̘A ÜÜÜ444–,YD§Ó‘µT*ÕÜܼ³³ÓÈÈÈÊʪ¨¨ˆùmIIÉP†ÊOÏ™˜»Í@õm8AA ›øøx›Ù³gKKK{xxP(~ö"‰ëׯGö^QQL†omm­­­}êÔ©]»v‘H¤>…A¡PΟ?¾7nûüóÈ%Ä­[·6mÚ³råÊ1cÆØÚÚ¾xñ"$$ääÉ“È?~ÿþ½§§§™™™——ׇ˜ßöúЊÅOÏ™˜»Í@õm8AA ¼¼<''§k×®½yóæ÷ß æ÷•+WZ[[9räãÇ€ÊÊÊÂÂÂuëÖ ITTTgg§;$YYÙ!¾~`ùøøèëëOŸ>]¢  àèèÔÐШ¨¨——ÇápÊÊÊG­­­e~+À“íÈd2œNh@Œô§>BAAÿV?~üX¶lYRRÒ¨Q£YYYüïŽÁ`Ο??yòäM›6½xñÂÏÏoÿþý ÐÔÔäããÓÝÝM¡PöîÝ«££‘‘‘A$CCC_½zuíÚµïß¿{{{ìÛ·ïèÑ£¢¢¢NNND"1,,Œ9B??¿††wwwgggda[[›Okk+FÛ¹sç´iÓÐí/]º”ššŠÃá-ZˆÇã>,..îååõåË777`®_¿~ýúu mmmwàÀá±T&{¨ÇŽ£Óé%%%æææ‡Ú³gOAA@ظq£––VPPÐ÷ïß—,YbooÏ­Pö¨8V2ŸÅç]‡ìš››·mÛVXXh`` ..Ž.g/7€ ‹³gÏfgg“Éä7nœÇâÇÆÆ&&&Šˆˆ¬Y³Æßߟ¥?455yyy‘ÉäÎÎÎ]»v͘1£O ª««+++[±bËòI“&ýøñ#--­¤¤$..îû÷ïNNNK–,),,d~kkkËO.………¡¹¹YWW7>>ÞÔÔ4&&†½ãN½pï9|â˜&rðJJJº¹¹!ÏP|øð!ïkâ,öïߟ™™)""²råJ##£={ö´´´ØÛÛoܸ±Ÿ)¶ã^AA kkëñãÇëéé1ŒÇúú»èèÑ£ƒ‚‚’““===»ººfΜ  ÑhÖÖÖ&L¸víš³³óôéÓ—-[ÖÝݘ˜022rrrú믿Ÿ+6nÜ8jÔ¨+W®0Ÿ`777ÇÆÆÆÇÇ{xx¸¸¸dgg †­­­„„Ä7üýý---kjjÐ]BtttVVVrr²ŽŽŽ££cXXX\\œ——צM›òóóÜ‚ikk {ðàÁ_ý…Åbëëëy„ÇŒc¨{{{èèègÏž…‡‡ÇÆÆ8p ¶¶ƒÁØØØŒ7ÎÊÊJQQqõêÕ< Å1*Ž•Ìgñy×! ƒ±xñâ¶¶¶ÌÌL77·K—.¡«ØK×§Î3ŒV­Z¥¢¢rçÎþ$±øvvv"""ÑÑÑìýN§[YYIKKÿõ×_ŠŠŠëׯïSC0{÷î@VV–e¹œœ   ÀÛÛ{Ù²e²²²W®\±µµeyËOt:}Þ¼y666×®]Û·o_HHȹsç<<<8v<Ž yô~pL°lÙ2!!¡G={ÖÕÕ599ùË—/}J™#ÿöööúúúÅ‹kjj.\¸PFFfÆ ýO™ýø…CAAÐðÐÖÖþøñcXXرcÇÞ¼y3oÞ¼­[·ö5OOO]]ÝÐÐPä§iÀÇsss—.] þS'‰èíÇx<~ܸq½¦ÜÑÑ ++ëèèˆÁ` /^¼xýúõúõëúúúâââQQQè.RRRZZZt:ÝÛÛ›@ ,X° ººzíÚµD"y>|QQ€[0íííEEE¡¡¡%%%»wï¶±±á³8† °³³C.¯%‘H8nûöíwîÜAÎäŸ?œ””Ä£P£âXÉ|Ÿw²xÿþýË—/ׯ_/**jbbÂ|å9{éø¬®aG$µ´´ú™ÇâKJJjjjvtt²ô‡GåååmÞ¼ ««»bÅŠ>53IIIûÌÈ"‘ØÏ¢ªªª¦N ˜2e ‹mii111áØñ8.äÑsøÁ1M¤tšššeee¶¶¶ŽŽŽ•••ÈÕý„ÅbýüüÒÒÒÆzøða`` rMS?±¿p‚ ‚ NOŸ>Ý»wïÑ£Gïß¿ü0Þ'ÂÂÂÈ—ûÑ£G#KóLƒQTT,,,dÙ‹J¥öš²œœò«¦””@@vÉËË;99­\¹RGG‡ýk:‰Dÿœ ©©©¡¯i4{Fh0jjjžžž:::&&&8ŽÏJà*ààÁƒkÖ¬Ù¶m[{{;r+µ£££´´ô… 0Œ²²2ïBqŒŠG%÷Z|~êU\\ ˜w̘1è*Ž¥XÒÒÒ ƒÁÈÈÈ xâ<ÈÈÈ`þÁ-kÅ———gïȹ¥ºº:`Û¶m}jfººº€¦¦&–åÈïäÈÚ~RRR200xôè 99YDDÄÜÜpéxòè9üàý1‚Ãá,--±X,RŸÂÆÆfâĉ§OŸnkkkjjêkÀܰ¿p.‚ ‚ hØdddèêêŸ:uÊÖÖ¶®®N^^^àûº•””?~üttt¨¨¨ «Ð'–•••1ï‚Åb‘§æåå‘Éd333€„„{âRRR€ãÇ#¹Ngõ,çQX,ç_ÝØƒ)**š={¶··wrròÕ«W×®]kooÃáXÂcOŠc¨ºººNNNW¯^Å`0Ïž=C–‹ŠŠºººž?^HHù˜w¡8FÅ£’{->?uˆB®6GÏoÛÛÛy—n`¡m4ÄÑõúŒLÞÅçxß;2”ÐØØˆœµR©Ô>5KRK—.MLLìîîF†{Ož<™±gwæÌ™ÈÈÈÜÜ\ö»ºº>þutt())Μnö++nÏ_A=qr®åléS‡&H‚ ‚ ‚ F}¸w3"êÒäIg˜M£P(ïrrÝwzmqsuXh?PÅß¾ÓÝݽrÙRþw)-+Û¶ÃKD²šcIÀãË+*Nž:óüEò±CXžJÊ"%õµÎøqƒ4 @A ‚ ‚ R[[ûüùó¼¼\põÚueeåUË—1/\¿fõ‹ä—é™ö ~{ž”d¾yû­­M^NnŽ……šš* -=£¶®ŽB¡Úêá™÷¾ ««ëyRòz·M¥eŸyï ›[ZSÓÒi4˜i¨«g¼y›š–ŽÌ]‰8vèÀm¬‘Q±Åù}oo¯øòewо¿ïÞC¶ :p0ãÍ@ë·o!¡aÁ‡œ hniy‘üÒyóÖìœÞ«Ü"d)ÿíAAôëÈÈÈpww733»}ûö´iÓŽ9òçŸö3Ížžž?þøcôèÑsæÌANš4iÁ‚ýLâMVVvADEEuvvc<lþðºb9¸úƒß_§ë¨TªŠ²2ïÍž=rTgüxƒ±ÓÇO_OwïžÝBBB]]];||‡ ?} ûŽÝ¼ÿîðpÐh´•ë6¼NO;fô&—-­-]ÁA ãбãÜR`æºaý.ÿ={öî“––6œ:ÕÐ@ßÄÐPNNÝàå«ÔË#ädeÞþ»_¾J]ôûöà?W|¹N$JuwS¼ýüÏœ¸qž÷*n2„φ ‚ úÕˆŠŠb±ØÂÂB€––àóçÏýL³¢¢âÝ»wK–,a™ÊÃÃB¡ ¯›šš|||º»»)ÊÞ½{utt.]º”ššŠÃá-ZˆÇã>,..îååõåË77·þD÷äÉ7{öì .Ðh´ƒš››#k Ž;F§ÓKJJÌÍÍ:$,,ÜŸìbccEDDÖ¬YãïïßÐÐàîîîìì¼ÿþÌÌL‘•+WíÙ³§¥¥ÅÞÞ~ãÆ½¦’œœ,!!áíí}÷îÝììlYYYOOÏôôôÈÉÉ™˜˜dgg“Éä7nöíÛwôèQQQQ'''"‘†¤“‘‘áç燆Ä¡8îÈÞ”}¯­AÄ­!µmmm>>>­­­4mçÎÓ¦Mëgvׯ_¿~ýº„„„¶¶6‡eo‚Ï”ŸH8ÐÏ}|| ÂÆµ´´‚‚‚¾ÿ¾dÉ{{{–âDDDdddHJJº¹¹!Ï5|øð!ç>{wEÒ!‰¡¡¡¯^½ºvíÚ÷ïß½½½ À U#·bvtt0\kjjòòòâ÷*€Î®.€””$ïÍæÌ¶Ð?Pö©¼²ªjõÊÈ5ðbbbË–8—”"×_…;²uÓ&d*•Š ³³‹%)Þ)0ÓPW¿v)òà¾ Ùæ³ŠKKŽ?é¸jÍ#G»»»‘ ,-,óÀmí®.Ö¼ í‰D)€¨¨ÈÚU++¾|)ÿçÇUüGAA±›:ujmmí©S§“’’ 7lØÐÏ4‹ŠŠòòò,ËgÍš…ü†F£Ñ¬­­'L˜píÚ5ggçéÓ§766:88„èè謬¬äädGGǰ°°¸¸8//¯M›6åçç÷'ªyóæáñø«W¯–——'%%mÞ¼ÙÆÆæË—/ÈZ{{{èèègÏž…‡‡÷ÿùçvvv"""ÑÑѱ±±ñññ...ÙÙÙþþþíííõõõ‹/ÖÔÔ\¸p¡ŒŒ Ÿu¾cÇŽššaaaƒÀÀÀ>hjjêëëoÚ´©ªªêرc«V­RQQ¹sç²}@@ÀÆGuåÊôü¿¹¹™%$>KÄqGŽMÙ÷ÚDÜÀ`0lmm%$$nܸáïïoiiYSSÓŸ¼ÚÚÚÂÂÂzôhSSÓ˜1cøOpùòåžžžñññííí!!!...)))‰‰‰NNN|¦ ''Ç’À;òhÊ…cCäå傃ƒ………)ŠŽŽŸc1ܨ©©yzzzzzNš4iïÞ½ìÛ x¦G"GGÇ;w^¸pÁÕÕƒÁ(++#×Ëp,‡³´´Äb±êêể”—————#¯õôôÎÃæ¾:¨ÕÈ^L~öúöíúhFuuõñãdzoƒŒ=©««ó;€Á`l¬æÆß¾½Üq‰ªŠ ºüMVVKk«‰‘Ëöê<¯¯§‡,É/(È~—£¯§—ù6«¡±ñò…pt^}ŽÏ6à‘ófD"1û]ÎëôŒeK˜—3 ñ>Ηø¾°ÐÈÐy÷þ=@]UÇ*zO?BAAíÛ·/((èìÙ³›7ož2eÊÍ›7SRRuuuòòò‚ݯ¨¨hmmžžÞÝÝÍüĨ¸¸¸±cÇ”””?~ü@ž^ÖÑÑ¡òÏ—[–ïñü?›@QQ¹BXMM­ªªŠÛfííí ƒÁ0Œ––äË}gg§®®®““ÓÕ«W1̳gÏx祬¬üõëW€ªª*ïËÅÅÅÙb0uuõU«VñS:”ŒŒŒ½½}TT”ŒŒÌíÛ·ïܹÕÜܼÿ~ŽÛc±XäYyyyÈ~ ‰>åˆâ¸#¦ì%%%ä7XUUÕêêêþ'ȱ!¤¤¤ÇGJx3©ªªÖÖÖxEEE³gÏöööNNN¾zõêÚµkíííYš O™ Œc$8®ŸÉŠŠŠºººž?^HHùžGq8Þÿïî¾ EW±Ô•™™€N§#k˘¦¥Ôjd/&?¢££ÿøãäõ¤I“8^_ƒ<º®±±±Ï\Yµ|™¬ŒìŽ]¾™o³zzzh4Ú›¬¬£'B•ÿkmŲ±¦†ú¤ ÎF\hjj|­¯?r¢¶® %) ¨¯ÿß}ñ·ï|©¬bVA*šG Ì$%$,-,þ¼ó4ñ9r“ggçÝû ¯ÓÒìæÏã¿t€[wî¾TV]¼tyªþäQ…ÜVõ!Úc ‚ ‚ v­­­àŸ‰‹‹‹†††jjj––¬Wžò ƒÁœ>}º««ëĉèÂüüü§OŸÎ›7`kk+--šš øòåKmmíòåË===èÏïÈ öÿ¹©¯¯g0 ƒÇù?€L&?~ü••ÕÐаhÑ"@rrryyùüùó1LNNNee%ï'ÔÕÕ!3Ìñ>ÿg.ƒÁ`~»jÕ*¾`‡²y[·n]jjêĉq8܆ ¢££ç΋ ¹ çQ‰ÔÜÜ ¸ÿ>FãoÜväÖ”ýôõëW¤5äüŸ[ðÖÖÖx<þòåËȪœ<¯^LLìøáC‡CŽûìÞƒÃáy¬ª¢¼x¡½’¢bìË›Ü6>y‚[ ,<Ýÿ9rüÄá㢢¢ÝÝÝBBBË—-å8í?³fn÷Þ…kïèPRTôüg…Ç*2„ÐÛ”AA¿ ={ö|üøñÚµk·oߎutt ,**Âb±ý™üøñ¹¹¹7nLKKÓ××/++ëé鉌ŒD¾²’H¤›7ozyy½ÿ>!!áܹsÆÆÆñññQQQuuunnnNNNwww??¿3gÎBCCUTT¬¬X÷êEEÅ7nÄÆÆ¾xñ"((ÈÂÂ`hh¨¥¥µ|ùòiÓ¦‰DOOψˆUUÕíÛ· œQ\\Ü•+Wªªª6mÚ¼sçÎÎÎÎ3gΨªªÚÚÚâñxWWWqqq*ÙÊÊJUUuíÚµ[[[555ôR‚{÷î={–J¥:99…„„H$++«   9sæHJJŽ;–GH—…½)«±AÂ;øèèh—ôôt€ŒŒLDDDÿs\ºt©©©ivv¶··7‡cn???,Ë1S__ߪªª¦¦&.Ó¸{÷î‰'êêêmll‚ƒƒ9FÒÿ¢TTTŒ‘Q'MMMöâ\¿~ýÚµkååå[·nõõõe™^DTT”ã©+€¥®¿ýöÛñãÇŒŒ$%%~~~ eùòå^<Š 8\,»àp8äG~´µµ###ÝÜÜ0ÈPGŸTUW—®èééQWS3Z›Ç–t:ý}aaKK«Š²’Îÿ½!¡ðÇúúM õÑÚÚd2ùMVÖíÑjjª4íMV6NŸ>͇ÃñHÅ·¶¶?vvv‘äåGiiIHp¸Þ†u—oßðx‚¨¨HMmíªuÂOŸ’‘‘.,ú .NÐ×ÓC.(ⱊwY Òk0A 999ƒñ©´0zìÄág„JIIANY£¢¢˜/OE.kïOÊß¾}kllTQQA¯—njj’‘‘éÿ7¨ÎÎβ²2555ö/ÇT*µ´´TKK‹ÐÇ[GZUUõéÓ'999溻»‹‹‹544¤¥¥]]]bbb<’zþüùüùóѧ_ñ¹ °eË–C‡ öólyy¹¶öÿN*++Ñ)Ó8jkk«®®ÖÑÑá§5Ïœ9™››Û§x†¾)¼¤¤$Ë-ëÜèéé¹¹¹mÞÌágQ´?”––*(( w¹³7{¦d2ÙÁÁáÞ½{È“Îú‰[$üKHHà1ÖÖÐÐ@ ˜Ï±ûZ‡<°×F+--ÕÐÐÀãñ---ALL ¹E¨OÕ¨¡¡qøðá+Vð {1Jgg§ m¬®¦†Î½Ç‡ãvcü¤ &M˜€¼&³ÿy,ªÐôi¦ü¤ÀBšH435í};æ]¤¥Y–(H ¬c*¼Wq‹¥ AAGÒÒÒ,ßÊØé'<¯««Ëq•°°ðĉC:ÜC¥Ri4ƒaŸOTTTéû$ïóÿþ°°°077766VVVøòlôüÀûü@$‘ùÏÐ7åÀàÑ·'OžÌ¼œ½ Ø3}ò䉭­í€œÿóˆd@°( `²×•ЄNZY>—µû4nÒ'x<¾s@AA$€øøø[·nÜÜܸw ˜™™%$$¼~ýÚ××w¸b€Fdn‚-[¶ w ?·Ÿ¨f¤çg'%%µ~íyy¹>­‚ ‚ ‚ ~888888ô¾Ý ;räÈ‘#G†; hdÁb± .î(~z?Q5Â!”X½‚óô¡•F8ÜáŒP)))€¨¨¨õë×£Ë1ÌðAõ s‚ ‚ ‚ú…ñÅÄÄ(**fee¡KNŸ>  C–ôôôtww3ÒÖÖ6uêT¶¶¶ŒŒ QQQee圜~ö}ðà@,[¶ YÒÙÙiee…ÄÁÁF£!Ëüø‘ŸŸßÓÓ#X¼µ··›šš¤¤¤>ÜÙÙÉ`0 0—RØ!3ÂK14 ™‹/o wx8AA ˜êêjWW×cÇŽ¢ ·nÝêêêÚÕÕåîî~ÿþ}À‚ ”••¿|ù"@'NœÈÉÉ©©©¡R©¦¦¦ÆÆÆuuuvvvt:½×}]\\Èd2`êÔ©È11±cÇŽ!¯ãããïÞ½‹¼ž={¶žžÞåË—ˆ°W§NÊÌÌ\°`Aqqñ®]»ÄÄÄ._¾\QQ!''7€¹ŒÂVSS“••U\\ÜÞÞξÁ/ÅÐ4:ô¯1x¾—¹›šþŠ¿UZö©££CIIqæt³ÿXYÌûU"¯\­­­ýÝÎnŠž.ór:~äø ¶ÉÅ™$/?\á £iD*•{ãsEÅww¾&¥¸í’ñæMNn~cS£Ë†õJŠŠÌ«òòßßMHp^¿NYI‰ã¾GOœœk9ÛðŸ?WèèÃÇ„‡ÊÊË1ŒšªÊïvvzº“ѵ'NžaffjlÄ#æªãQ]ü‹Ž½ÑÓÓ³få æ…^©ª®v^礠 Ðÿ,úäï;w ŠŠ8®²´°˜5cú ¶&î=rzÑÐøÅ?yª§Îž762035À³sr’_¦ìðpÀ4/]ý³¾¡Ácë<.$wv†œ ]¼Ð~Ò„ ˜»Œ7o0ÓÙÕ™’ú]ˆÁ`¤¥¥'Œ?g¶ÅùëÿèéÓ·YÙÈk CÀãuÆ·š3GTTÝæW;üGš´··_»v­¨¨Èßß_BBY¾}ûöˆˆÀîÝ»ûí·ÏŸ?·´´|ûöMSS³¯YÚÛÛÿþûoggçÉ“'§¦¦ÖÔÔ¼ÿ^__ŸÏD>|ø€¾fžÓ‹Á`ô5ÄÄÄ8pÀ×׃Á´··ïرãâÅ‹›7o¤»*†·°ýWTTtúôé›7o®]»–@ ÄÇÇüøqÖ¬Y6lX½zõùtêÕ7:ôóìÏkÿÒ²²5œßfeLÿi"ñä©3Þ~»Gæ‡Å۬줗)wX–¿ËÉ}öüEÒË”ŽŽŽa Œñ·ï\¿ñ×À¦Ùk#ò™é{÷oÜŒ×ÐÐb~Í{ƒ©ú/S^=‘IJêþÇùï XƘ¥¤¾®©­å£|ƒëFÜÍ-Û«jªg˜M32˜Z[[ç¾Ó+þötƒÔ´ôªêjÞ‰ðY]üËÉË{—›Ë¼äÔÙóW£¯OŸ6mèÏÿX,÷7YÙE>¢o±X ÌÖäݽ/ßÁ8Tûï_ð(°^Õ´ŒŒÊª^Õ¾ª©­My6°if½{÷4ñyä•«Ì ©jÒË”úúÞûö¿[Þ¹wŸD"}*ÿü2åzc0˜¢9ê³'@€¿þƒq°””–½NÏø'|xÛ¶mèòñãÇ«««òóókkkÓÒÒÊÊʦL™"@üñ‡†††‘‘Ñ‚ èÌV¢¢¢½î\žžŽ,ÌÏÏG^,^¼ø÷ßG^'''çåå­[·N€{E&“}}}étúŋLJü8°¹ŒÂöÓÇÃÃí­­?¾ÿþœœ++«W¯^999-]º½úc$—ðíÛ7//¯Ántèg7ž×9Éå?£åde/œ=~žšÏœé³{OzFæt³i”g°ÉÉÉ¥g¾éîîfþ”’"''÷SÌzX\RÒÙÙ5°iöÚˆ|fZ]S;AgüF§µ,¯¹!wv~­o056š¢§÷<ùåÊåËÐUT*5=#sþÿÃcÈó^|ܰˆ~,)¹xéòº5«™o?v*übä¬Óù>Ùæ§ºúãLxÄÝ„„Ý>»,-Ì) Þìüf¿à7äõ:·QZšþ»¼™7¼Öäݽ/ßÁ8TÄÏþ(˜:TG ñ;wïYϱÔ?¾O;ö³["ÚÚ£´’^¾Ä ±űq7/D]Ê{ÿ^_Oo(£âF\\œ9Âʪª>¾{:v9êG‘_YII úúÙ³gÌ«´µµ«ªª555ÆÆÆRR^7kÖ,ô‚æææÄÄD€®®îx>[[Û·o߆……ݸqÃÂÂbÕªU:::ׯ_Ÿ1c†³³3ó/lA¯}žORRRÝÝÝ‹-*)))**RQQ9pà€›››¬¬ìÀf4 ÛÜng@Þ"·3,Z´ŒìRÉäššš¹sç677j£C?»!è𼆪jªÇÃüUÒÔØÈÈÀà;Ó­eŸÊ_$'wuu;Úfî\‡,¯øòåEòËÖoßÔTUçÙX£ñÏ“’'êè|kk{’˜è´z•4‘ØØÔôøé³Æ¦&%¥ÿX[ÉÈÈP „¡¾~ZfFzfælóÿ ÑéôÔ´të¹sþ¾s—[`i™BB8£ÿ-wjZº˜¨¨‘¡ÇØ’^¦Œ7¶©©ùå«W"""¶ÿý¯ªªJ⋤‚Â"iiâÛùèý<d¾yû­­M^NnŽ……šš*àmVö—ªÊoß¾=xôXRR}=Û|VæÛ,ŽAf¾y;ÍÄ`=wÎÑ'?WTŒÒÒBV½ÍÊ&wvΙ=›cs Ûäå¿WUUQ ‘·ÜºÇîé骻zíº²²ò*¦Á Àú5«_$¿LÏÈDOz™±ÇÃ\u<ªK`ç.\¼}÷Ëù?{ùï Ú¾Ÿ5c:ºMrJŠIAgü¸©+Þ˜[³Ÿ‡ ÞÝ›9ߢ¢ä”W«9sðx±/••³fÌÜGÇÃå¨yž”1¯BnûÇb± åû÷ïeee,óTŸ8qâäÉ“|Nj]^^>qâÄ1cÆ„‡‡#“«ÿ,Ø+ â!!!¹AHH(-- YˆÜoX¼x1•JÞùLç–””4Üp6¦0 Þ† Ãóº ÀuÃú]þ{öìÝ'--m8uª¡¾‰¡!ú™L>vjÁovî[6Ê>•»lÙšž™ibdtê\øÌéf~¾X,¶­íû&w÷¨+Wý¼½Ÿ=rTgüxƒ±ÓÇO_OwïžÝBBB]]];||‡ ?}Jà¿@³-fíÙ»ŸÜÙIÀãIÿ½ûŽ‹Ú|þ{[†,‚ .Dp‚'ÕºW­Šg­Up­u£u –ZZ'¢ ‚¸PAYЍì=áŽËïØû]»ã¸ ú|?~Ú$—ä}òæMHÞ$ï{ïžk?gò!!Nçؤ€ñÑçþ|úì9ùüê^B"x{ Z²|%¯ØJJJþ¶WIIéí»ÜYó4ÒÉ—ûöÝøó–‚ÂBcãa¼¿›u耞®.¬Z·þnBâØQþ æÎ.¯(¯¯ÿüËOó>|Hzôhç¶­}ûô€Ãǎߺ7g¦0ß5ñ߉ì‰@ÌßFJ¶nÅ`0¦Î˜uÿáCk«.3¦}WQYù)??dËfÜó)?áÜ9ÓgÏå$NÏÊɱ·³55µþ.ýââïÎú~:¹ÚÉI£üüxíV9!ñ*fý]\¸æðÚU+Å’uEÅÅt:ݸcGç'‚×'³ŽOv çpÔ±3Æhhh°·ýÆ+ŒÛ¶FìÙû )É×{0ܺ¯¡¡abl,®bÖ*">ìøo­¾þ÷C‡Ç³pîHýæ‡eAÌÍY3p=÷áÀqÔð×âéN\%–…Ï9 €OÆòÚÞ? ¡Ô6\ðC5çÝ»c÷“Ï{W¬Y{71q”ßÈOD¬ )--‹úãÄÿ-€·ïrü¸DEE„Ë">ÌÍÌ'O:q:ÚÓ} ™©)k:ŸhÙ‹%¯óŸA>}ö¼·cOÖ¨h: IDATŸp/¯ü‚‚7ðäÙóÚÚºÁž-–¯bÆ+‡ÉÝ¢g]ýçÏ ©Éy~ä¥ÅÂ,Æ} éé¯ÿ¾xéçää(;Ãw·ôéÕóî¿…üö;^žJŠŠb Ip">ì)ÞRRêjk¿›2™µ·ëÚû¿Eó:[u8ðÒâéN\%–…Ï90ûmŸŒåµ½Â]©m¸à‡ê`OOÖûÞ]þÝÑ‚ÿÁz˜œÌd2g}?œnÙÙ‚õöxnÒ”‰LŒwíŽ$ØZàð´)Džsœ´ Fè®0òßö°ˆÃÇŽËËË>T¸•K.—8ÈËË751¹þ$Ñ ÄKó‹ÔãÇ¿ìô¹sç@çÎuuuµµµÙçQTT$ÿFðwïÞ=//¯¼¼¼ÐÐPKK˰°°¢¢¢üü|VHVêêêöîÝkcc£©©9lذÐÐP___Bä¦Äííí8PZZš““³`Á??¿„„„ÄÄÄéÓ§ã&ééé ,022 ¿xñâèÑ£555ÝÝÝ?Îþ¥XHhïƒ$]à[h¢\AAÁµ_?²#¥‚‚Âó/Æü}A]]}é‹ò ÔÕÕõØZ°6Į߼E¡PÈ×I:™744–WTèêè€á¿x“­õ†ìØÅÚ’†Æ(¯¨l^5% yyyw·þwîÞõöôäÙ3:îâ윙•……¼óäyîüßA?.®ª®~žúbÛÏ›ùÄ䓎Qþ›ú-ôËejj2uò¤§£ÏÆüeo×ÕÅÉiØ!TªºpyÂg'rÌ)''w)66ýÍ›?}üô‘×µT‹A&DDD€··7Ù ý¥K—èt:Ç ¿¢¢¢ ¸ëÖ­›2eв²ò¡C‡ŠŠŠV¬X±zõjuuõÄf•bHšjkk½½½“““555CCC—,Y¢¢¢Ò·oß²²²âè•VQQÑÌÌŒìW âêÕ«4mÒ¤Iaaa°nÝ:??¿[·n%$$ÄÆÆž9s†lA#>>>;;»G-­’'Iïýoä <Ï*€Ÿ>Eîû}ñ‚ù¬·;v4Z4^qIéÃäGKX¤¢¢ÂµêHII‰ ˆ¦¦&V;F : 9Jù÷Ì.//ófÍTSÿÏë[-Þ!óçéá¼~cmm]ü½×~Î¬Ž‚ùæ5Èóð±ãÏRSóò>èêê8÷í“øà(±ñß4ŠÛf?}ü˜ÑIÉž¿xqâtôù‹—Žìß×Ú÷ÜZ܉ì3Óh´9 ——ãïç?b„UËÕë7¤ªªjêË—ì+WPPä>ðν„y³gݘ4aì œx3>9,–¬3Ð××ïÐáù‹Þ^ƒ8~Zµv}×®¶[úO.‚f±F²±¶"{w0ÀÛkоƒ‡z÷êiblÌ' =Ýþá¿F>LJzû.×ÌÔÔ®«­xC#Ï o999ò©# Gãz< q8|Y9ûÊ%]bÙñ:’ã¹ÆÀ{¹FØF6\ðC•ëŽü–ŠŠJ#½‘}Yör%‰C©›¿ßÈGŽv³·0ZRkó¼ùI›ƒž®îØQ£~ÞRPXØÚ•³Ï#ÑÎÛw¹555v¶6\•ô…jNŸ1cFÓ××?zô(y“O¡Pš?ðWTT¤I?òŒ;våÊ•999½zõÚ¾}»(70Ht‘‘‘ÉÉÉþþþ022€¨¨¨ÜÜ\ŽoôÔH³3ÜûíÏ*--­'OŸÝ˜4)`<ût‚ ÔÕÔÀÔĸ¾¾>ïÃók&‚V¯qîÛ·O¯^–þºw¯/oÛ¦½~­¦ªªß¬úÇÜÌTUUY ½xõêÉÓg­ísˆC/GGu*5>!!ñÁÕ˖°¦“­[s ŒB¡t³³»›øî]î …"bl".ž‘™•œ’8yÒP_Ÿ¡¾>ïóò¾Ÿ3ïå«´~¼›kæªÅÈîeZzqIIÔÁý:‘SÈSFkƒTUSíjcÃѵÏ`¯‹±WŽ8Y]]Mö@6$Þb9áUÌȧ¾ÍsXUEU,YG¡P|½Çüý÷ä &ÆÆ¬é?.¯¨`ï?‚Ôâ×>mnÉ¢E©/^nÛ±sOxÿ0úöé/!3;Çoø0‰†$"‹·™©IMmíÇOŸXmד_FðתÃÕ˜(¼{ŸËñR+ÿW‰eÇëHD\369å1¯íåUNÚȆ·öPå à‰ˆœ³¬¬<¿ €ÕîÀ«ô/­!JîPš3sÆýým_«¢mmžs=is ?µ Ó­]9k =á0™Ì‡hiièϳEC’„.<ðî€CII‰9[k,¼DF¶Ü:ÃÁƒÙGïß¿?àßWfÚ‹¯µëÊK—.]ºt‰} ¾«Ï2hg…µtH­3…ojïKºGÉá¹K4¨ÔAœ:}ãÖmò›Éúúú‹—cï?x0rø0èÓ«—qÇŽ¿þ¶¼R¼qûö³ç©v¶¶ÖV]ìºÚî;xˆì†úå«´ —c‡ñm~šëdnÖÍÎî·KKË °¨hû®ðü‚Q7INÎc€Û‘¨c £ŸÓÿ¯-¬»ð l°—g\üÝô7o†ùúˆ›Ð‹“—ÔŸ?ŽúãÄ?×o_¦¥€‘‘ak²@€Èž¨¦†A1_xŸ÷ãñ);^A&>xè>Àcænöö;EŸûÓ®«mÇŽF `9áUÌxå°¸²'OÒÕÑ]¾:89å1“Éd0?Þ¾ÛÈÐp¨7ÇÌ-îq1ÆJU_µ|Ùë7'£ÏðÃÓcàý‡I%%%>ƒ½$’ˆ<|,ÞýœœŒ Ý»V_OÄÅ˱999-^uµx8°î~µµ´$'“£±ÿ\Ëyû®U%‰½ÀëÈ'cùl/¯ÛΆ·êPå ø,7WWmíáÕÕÕAܸ};%å1ù“ä%5UÕ¥‹xñò¥€Ñ’»£µyÎõ¤ÍAYI*++…Ø¡âý»F¢Ó­“µæÍñ߉ÿI4lý„´ìŲUyÎë¤ÍÎÔÔ„B¡œ¿xÉÑ¡G«V.‰¿kP[[·aóÏä°šªª]×®á;BºwdY ]x ®>|øàçç—šš:sæÌ_ý•ÊÖ, /ä‡iiiOž<éׯŸ­­-¯9îÝ»ÇëW$}¥¥¥ååå£F*..NOO766ÞºuëüùóuÙZtBR&µÎh4Zyyù˜1cÊËË¥¼÷eÕÙè«’! ù0ʪª×oÞÔ×ÖïС³…Gã=õõõ©/_Òét+Ë.äÓ]NO}ù²ªªÊÔÄÔÖÆºÙZÿ¯©©éeZZyy…qG£®¼Oôâ"x`¢ÇÖÚŠƣÇOšššú»ô“——Ÿ÷á}Þ{E[k+¿¢á³9M{ýº¨¨¸“¹YKKöèñc+Ë.ä7\qÉ`0ÒÒ_³wSǯÝQYY©ªªÆú†™W1ã•ÃbÌ:øðñãÛw¹L&ÓÌÔÔª‹%Ÿ9[Üãâ ¬µaÔÖÖŸ2eÉ¢Ed“ŠR ‰co HðÇWñ&ÓUTThhh`0ÏRS••Uúôê¹uûΦ&ÆÏ[þ¶Ÿ×áÀqÔädfekhP{ôàÿ6µtJ,|2–ÏáÏ5¶¶á‚ªÿ»PS[û<õA0{:8hjj²ÿ$µÈ+ZŽb)`ž·ö¤M|‡JîïüO;\ã×ÓÓ#"'+ºXÛK.¶víÞ½{Àq1M¡Pˆf~Ÿ?~áÂ…†††{÷îÈÖÞ$›7oŽŠŠ²´´ÌÍÍÍÏÏ¿ÿ~Ÿ>}¸Î9jÔ¨¾}ûnܸæÍ›·ÿ~a6IFÈ—wšgZ»VXXرcÇsçÎÙØØ˜™™éèè|­_:§¶¶VCCãÎ;žlÏä†N§R©TŽ?a¢«««£R©QQQ½zõ’ÚÞOOOß³gÏŸþ9}út55µ˜˜˜7oÞ 8pÖ¬YìµÎÎ΢WÔÕÕEEEEFFfee™››»¹¹ýùçŸûöík§´\€ú:œû믣ÇOœ?sZæ þISIié„©ßý´~ÇÀPZZ6}öœysfù!ëÐBmVBÀ*€OŸ>ýðß>}Z»v­¿¿«3nÛ¶íСC999ׯ_>|ø¢E‹öîÝÛ|¶'Ož>²Ž !„¾Noß¾ Z´h‘···ÜJJJÎÎÎrrr::: ÃÖá%»íÛ·‡„„TTTˆ.B¨}’ygrrr#GŽu3dß@èë×ÐÐpíÆM]]ýû›oåå¼}û*ýuCÃg3SSç¾}éq !ôMÁ·Áç-Ù…B¨u¾ÚNB,ÊÊÊ£üFtsûf¯ÒºXZŽ9b¸q®ýúáý?B‰¸Ú©þí·ßÆŒ³ÿ~ssóGñŸ9%%…L{h %%EÖ´Q2é@jjkk ..Nj)J­³‚ :wîÌd2Û`gBÃB!„P› ¨¨W]]ýøñc}}}Y‡ƒj£¤ÖÙ¸»»;633ó«éê«B!„P›`ooïããsâÄ •g&«ù!ôM±··?pàÀÞ½{YÌŸ?_ì@TTÔëׯétúWÓÕV „B¡6ÁÍÍÍÍÍMÀ™cbbÈ[·nUUUiiiI,.„P¥¨¨hfffff&¹$(нýWÕF V „B!áÉËËËö±XQQ‘¶¶¶ ÎWð,±9²›FÄ‹ÔúÌ“ ///Y‡€¢PTT$ëB!„P[×¹sçéÓ§€ššZ}}½ªª*9Á`È4.Ô&vìØ1%%¥oß¾²Ž¥ª­­¥R©²ŽB"êêê¨Tj\\Ü×]ÇñÕP044”u !„B¨­333;~ü8?~\[[{éÒ¥k×®UTT”u\µ_ëý?jw°S@„B!$…/ßVVVþôÓOƒ ª¬¬”mH!„ZEbcceB!„jë ?ë—5kÖ„„„ˆq…!„B%Þk¡¯{co?ÿüó† """–-[vàÀF…BHp_Þæòôô:t¨ˆëŠ¿víšÈ!!„B¡¶NMM-,,ÌÏÏoĈÞÞÞ²Ž!„P˾T¸¸¸¬^½ZÄuU!„BßOOÏ¿þúkÚ´i...íš!„X`s€!„BHxC‡ݱcÇüùó ‚u,Hf¨Tj×®];tè ë@ ())ÙÛÛÉ:$Î*€¸¸¸††r¸°°ðÁƒOž<©««“z`!„B¨}˜>}º––Ö©S§d’*•úúõk Y‚d@QQ1--ÍÎÎNÖ pVøúú–””üóÏ?®®®¦¦¦C† ÑÒÒrvvÞ¸qcJJ Öï"„B!v å÷ß÷î¬A!Ô…æ“.\xïÞ½7þóÏ?ÚÚÚP\\œ˜˜xýúõ±cÇÒét///ggçN:÷ë×Oê1#„B¡¶EKKkÆ ²Ž!„P ¸T”——¿zõÊÔÔ”5ÅÀÀ`ìØ±cÇŽ€/^ÄÅÅ%''GFFöîÝ;&&FzÁ"„B!„BHX\ª¢££Ùïÿ9888888ÀîÝ»%B!„B!„ćK Eúq „B!„BH¢°S@„B!„B蛀U!„B!„Ð7«B!„B¡o—æYŠ‹‹?}ú¤¢¢bii©¬¬,µ˜B!„B!$v\ª ƾ}û~ûí·ôôtMMM:N§Óûôéãíí=lØ0yyyéŠB!„B!Qp©ðñña2™ÁÁÁ£GîСäåå%%%ݾ};00°²²ràÀýúõKOO—z´!„B!„—*//¯ÈÈHö7ÿÍÍÍÍÍÍ'L˜YYYwïÞ}üøqii©‹‹‹ô"E!„B!„¸TlذϗÿÖÖÖÖÖÖ³gÏ–dT!„B!„3ì!„B!„ú&ˆTÐÐÐðøñã÷ïß³O,,,lhh-*„B!„B‰™HUçÎsrr=z4ûÄcÇŽ}øð®^½úîÝ;‘¢C!„B!„˜ˆTpòäI77·çÏŸ¿yó¦ù¯k×®½ÿ¾(ëG!„B!„¸_PTTtûöí;wZ[[Ÿ>}šã×ëׯWVV&%%={öŒ5eÆ ;vìÈÎÎ>^„B!„B …³  gÏžJJJ‚,maaáêê:qâÄèèhŽ_“““kjjÒÒÒ233 ((hâĉwïÞíÑ£¾€B!„BI¥¬¬LOOÏÅÅÅÃãUK?~¼K—. ())9zôè´iÓÞ¿÷î]ÈÊʲ²²êÙ³çŠ+333ííí]\\`ñâÅOžŠB!„ 77W]] rssóòò:wî,ë B}„ù U²²²ºwï"é„B!„Ú£€€€ëׯ_¹rå·ß~SRRª­­d©¿ÿþ{éÒ¥’Ž !„ÐWF‚@AA³³óÇ &&fܸqJH,>|ȵ³³óóó“a<!„ôðáçOŸ655ÙÚÚ$RÀ`0Ž;Æ8qâÍ›7§NÚ£G“'O–——K"Qáíí=þüÑ£GO›6­ÿþ±±±AÈ:.„BüÐét¦¦¦¶víÚàà`}}ý¿þúKÖA!$ ¶råJ//¯ÀÀÀ &ðš-//-ZD¾ð¢¡¡AÄ­[·¤(B¡öL"UwïÞe=„!Ÿÿ“3?¾¾¾þĉ’HTDjjj PSS#Gkkk«««eB!þ”””äää† "//¯  àááQPPPWW'ë¸HJJÊåË—Ož<¹zõê®]»îÚµËÉÉ)""‚Ï"uuu eÙ²eähaa!äääH#\„Ú’3gÎDFFÊ: „Ú‰ôÀjP[[;::šÕ9S¯^½àÔ©SK–,‘Dº¢ÈÏÏ/++ëÑ£9J¶&¥¢¢"Ó Bµ@OOXŸLËË˳"ÔÆõïߟÁ`°ÆÆÆ²Hp¥®®niiÙ¹sgr”¼ùÏÏÏ—hœµAׯ_ÏÊÊúñÇeBíŒDÞ`5òñÓO?±¦@JJ Ycݦ0Œ¿ÿþûÇÀd2»t颬¬,ë¸Bñchh¨­­MV=qÿþ}þwPµ¬û--­7Þ¹sGGG‡ÿ"êêê¬û¸páK.H„B_JYY™®®®xWêêêš””¤§§———Ç~–ššÚ³gO8sæÌĉÅ›¨ènݺõðáC}}ýÚÚZ ‰'jkkË:(„B-xÿþý™3gTUU›šš&MšD6«†à( A9YéÐÅÚ^jé:::¾xñÂÈÈ(''‡uɤ­­]SSƒÝ["„’‰|PSSãÇçxS__O¼|ù² Vx{{;99S©TCCC99Iu—€BHŒ:uê´téÒ>(++wìØ‘õõBm_‡@II‰ý’©ªª xµIœ=`Àò…ÊE‹íÛ·OIIéãǼj¾"""(ÊÒ¥KÅ=j'Ïž=;vìXY`bb²bÅ Vc¢˜1cFVVëÂ$Y IDATä¯ ù<òÎ;žžž²ŽµÌØØxõêÕ2ÿÔ=;;ÛÚÚúõë×]»vå?§D®“È÷ç‡Ê1½¤¤„h³_¬iiiiiiÉ: „B­£¬¬lee%ë(’KKËÏŸ?çççøðaÿþýÀÿÍ—§OŸbë!„X ¬¬¬¸¸X¸åCBBxµð?fÌ^KEEEEEE —"B!„Ð7KNNÎÃÃl Éd*++¯]»–ÏüŠŠŠøb#B!¨¨¨º/²ÖyÍš5!!!¬‰#FŒ¸zõj]]LJ~~~±±±0wîÜ5B!ÔLhhhpp0¯×§â£}='1bÄ‚ ÈÆ~þùg[[[>3cB!vùÀÄÄÙ'ÖÕÕÅÇdzπB!„Z… ˆ/^÷ÿƒ â?¿¢¢"ÙY&B!ª ?È,//744dM<{ölmm-9ìèè(‰tB!„¾‚¼˜pçÎŽ'.¼DFFŠjÇÆ'ëþ/((¨Åª+Áµ¯WxZeРA² jéÒ¥m¤ÕU;;»ç‘È‹aÖÖÖÍšÂd2ÃÂÂÈaEEEI¤+iññ°fÍ—×®É:„B}½n._¾Ìºá™={6×y8¬ZµŠü@F¢êêêÈw$ µßmTPPøë¯¿dÅÆÆÆááábYÕ÷ßïææ&–Uµ5d÷jwîÜ‘u ­Ð~ÑuìØq÷îÝ²Ž‚ÈÊʀׯ_·8'÷*€œœœÒÒÒOŸ>]¾|ùŸþÉÊÊ"Zóieß¾}àÅ‹¬)ÑÑÑéééä°···¶¶vkÿšššz{{·v)ñJJ‚íÛ¿ü»{W¶± „BèÛòîÝ»ï¾ûŽ yyù°°°7nry¦¨¨¨¨¨˜––öÇddd—4ƒÁøôéÓãÇ322È›žžž’k칦¦&==õ„$Èd¥°]âÅ`0²²²^½zÅ`0d ’*™Ÿص»GpÒ9ĸWdffîÙ³çÒ¥K]ºt133KKK ÿõ×_/]ºÄ~cÏ‹™™™……ŃÈQ¶fÍÖ¯ÂuúéÓ§? ± B!„P{×ÐÐ0a„ÊÊJØ»wï²e˹¥WTT<~üøâÅ‹úé'GGÇ'Ož´*Ýôôô …‡‡_¼xqôèÑšššîîîÇ—ÂÅw]]ÝÞ½{mll455‡ êëëÛªçR‚þ6Jg»Ä‹ÉdîÚµËÔÔÔÆÆ¦Göööïß¿—uPHd{`×ÁIóãÙÀÀYOÝ»wïoß¾½xñ¢ƒƒC‹ëõðð¸sç9¼iÓ&ÖÝ»›››¨Q#„B}K<øøñc˜9sæüùóÀÛÛûÆ]»vå¿ ¢¢"…B¹uëÖõëׇÕ§O½zõj@@F›4iùEçºuëüüünݺ•{æÌ²­Áøøøììì=zˆ´‘ÿU[[ëí휜¬©©ºdÉ•¾}û–••uèÐA\©H¥³]âE£Ñ¾ûî»óçϳ¦dee‘e’ÙžصÇGpR>Äx¶`llÌ1EII©k×® µ èãã“——÷æÍ›GEDD|ILNÏ!„B­B£Ñ¶mÛVVV¬K)ooïË—/üø‘ÿû¢JJJÎÎÎrrr:::@þW@sçÎ¥ÑhЫW/rŠŠŠÊÎ;Éᘘ˜‹/’Ãjjjâm˜-22299Ùßß?##cõêÕ***QQQ¹¹¹zzzbLEúÛ(í¶—¥E_ÕúõëÙoNd ’&ÙžØIíÀ\Û9ÄÈHÞ¼y#àü”²²²òòrŽþùçŸN:ÙÛÛ7_ ,,lùòå¬Ñ;w‡¯Y³&$$„}¶ŠŠ ƒõëן}jjjâ5Ï£G 44”ò_ººº ã§Ÿ~bï ""‚",ÈÈÈzq±¦|ù×l‹BÉXpp0È: Ô.‰íÂJ|Ø[o:t( 8 ˆ†††aÆ5Ÿ_WW799¹yËÏ¿ýöÛ˜1cöïßonnþèÑ£Vµ/«¦¦ < '&''“)Ž7ŽN§·j…­"''§­­M§Ó'Ù«çš5kš¯ú‡~`m†’’Ò“'OÏ.ØÚÚŠ²þŠJ‰°ƒÄß×øÍB|ùÇm‹BÉù>š¬£@íYr²3Ó²3Ó¤™®——˜››sÃQ’ÍÍÍàÒ¥KA°>ðññéÞ½{¿~ý¬¬¬È)VVVäõ(»ƒjii <¸¸¸XˆÓÒÒæÎ«©©©¨¨8cÆŒíÛ·;88¸¹¹;v¬©©Iˆ ŽÜ(ò¥Tccã­[·–••I"!)o£‚‚BŸ>}$´][·nÿ‚‚rÊÑ£GõôôX7$NNNpäÈ‘V­ÖÀÀ€U Я_?V…‚ˆÁ§ºº:---55uúôéX 2< °ÓÐа³³“ ?Ib£Gvtt$«Z?ÄD9¾x~د««;oÞ<ÖhSSSffæ«W¯Xßð·ÿ~Öè®]»z÷î-È‚Ò÷ä9 Wn›ƒd B!„ÐUWW€‡‡>|X^^þêÕ«¾¾¾¡¡¡>|Ø»wïþýûüñÇììì°°°uëÖ±/kooïããsâÄ !’¶··?pàÀÞ½{ ©Têüùó555Ų]‚8}ú´™™™ŽŽŽä^Öò6*++ :TÛuúôé­[·S(”šššåË—:tháÂ…"¦B¥RçÌ™3fÌCCC×&Þ`êêꢢ¢"##³²²ÌÍÍÝÜÜâãã---…Xj™ŸHúúúÞÞÞ³fÍ’ô ? bÆÆÆwïÞÍÎÎü%žUݺuc•——·³³³³³dÞ¾}Àjœ&00pñâÅ‚,(M pá=/eѼ@ffæìÙ³Ÿ}šVRRºr劅…«»H1ŒC‡¹¸¸èèèØØØ\¸pAÀkiuÜÇÃÄ…pý.41¿L·±„-+àÙ5ˆØ½ºñ]…¸±·ŒÐf[I@!„P[XWWëÖ­«««[±bùÅ¥­­mff&9[SSS·nÝääÄÿ€µ ÅÞÞÞÑÑQWWW毓ˆ1Ö;χ²±±!ÿ+Ü7ü]½zÕÉÉiÿþý>>>aaa[¶lyöì™··wBBÂ÷ß?qâDVGi4íåË—„8Þ;«­­<<ÜßßßÚÚZSSSAAACCÃÊÊjäÈ‘»víÊÍÍåµàáÇ=<<¨Tª‡‡ÇáÇ…!ÔÞ¤¦¦nذÁ×××ÌÌŒJ¥ªªªöíÛ·í¼-…jƒ´µµ7lØ0kÖ¬òòò:ܹs'%%åܹs`mmMvÀ\VV–’’òý÷ßË8V„$ÀÝÝ}ìØ±ŽŽŽsçΕ““ÛºuëÇ ÄžÐܹsi4°Z@WQQÙ¹s'9Ãz´ééééàà%z¢‘‘‘ÉÉÉþþþ«W¯VQQ9~ü8ƒÁ _@@Hìx6ØZ cêÔ©õõõäè’%Kf̘~~~{÷îMNNvuu1 %%¥cÇŽéèèlß¾ýæÍ›MMM;wîî%¹ÿW‡aƒ z/ÜÿNÃý?DEE;wŽ|»áàÁƒ}úôQVV¶µµýå—_RRRÈZI&“Ó»woVÎ „¾Y·oßvss#ïÿ»uëvóæÍ›7o2„J¥N›6-??_Ö"„Ú499¹˜˜333;;»ˆˆˆôôtò…ä.]º<|øpøðáééé×®]cuÞŽÐ×Djo_8p€ìžýäÉ“>$'²Þ;7nܨQ£ÈáøøøÔÔTò‘§ˆ¤ö™B$î=nûö퉉‰â !„BHÊì!„Ð7€ß[d£—ü—wvv€þýû³¦=z”£ÉÁ£G@^^^kÛ9d¶¶¶äð©S§È´.^¼È1[~ѱϗ&NÄš"ó­(ÉþGHÀú÷ÿ.‹‹‹9æ,**bÏ%555±j‡ÈÏÝÜܲ³³Ù§¿}ûvÀ€°{÷nYÅö5!»§•u¨]jÅ¥“´ð¸©©©°°°¢¢"77×ÄÄD:¹$e‚äC‹Þ¾}«££STT$–ÄB,=êèè¼}+¾Ë\¾„ë  Šˆˆ°éõÆÆÆ¼¼¼G¥§§WUUI4*q52_ZZª££“™™)ÆØÚqõpþüy{{{Ñ×#FÂõ žU¯_¿=zôƒù+õôéSrÀÇLJý}‚ nܸA~®æçç7iÒ¤-[¶´Ø†uuuä‹1 ,ð÷÷çøUEôu¿ 3™p<< `>ÄÞF“(ÉòsùòeŽ)죬EBߦððð3fÄÇÇwéÒ…œÒÔÔÑ£GÄÄDssóÙ³gË6Âoй"$[EEE?~999CCCmmm*•J¶^†¸jjjª¨¨K»Ôm “Éü*·KÒ>þ\SS#ÈœŠŠŠfffNNNvvvšššJ\Ÿ9QQQÁê³qÕØØXUUÕò|_5žUW®\|-Ÿ?yyùÝ»w³&>}úÔÁÁaÈ!dS™©©©gϞݸq£££ãÈ‘#srrZ+ƒÁ`2™Ó§O÷îÝ/¿üòÛo¿5ŸGG _½[ OÿO¼ÿæ®§‘vŠJ[›,w***¬áàààôôtö__¾|ùÿttöîÝ+žTBíSAAÁîÝ»¾´ÀzçÎÞ½{ÕÕÕihhœ8qB]]]¶~;òòò&Nœhii¹|ùò÷ïߟ9s¦¤¤„ìÑ&??ÿÊ•++W®ìÒ¥K@@û‹Ù,™™™îîîêêêîîØ’&“9{öl###33³¥K—²¦ËÉÉ‘½"„B‚àR@£ÑbbbîÝ»×ÚuÍš5‹ÕPß½{÷øêÕ+®s^¹rÅÅÅåÑ£G­Z?F›9sæóçÏ×­[Ç«’LQƃËQpíL JJ_¦•@ØApóÖÀƒ'­J™‹3fŒ;–ìz·¸¸ØÉÉiݺuoÞ¼illLMM]°`P(”Ñ£G?yò¤gÏž¢¦‡jçN:UWWwãÆ ___///ò}(Ÿ¸»»Ë:ºoEjjjïÞ½EiÌuöìÙ 4-!!ßÝ@ÒsäÈrø×_eµˆ\^^N¥ŠÐ¿1B¡oÌ:¼yófllìû÷ï…{dñâÅä@iii@@ÿ×ÒJKK‡ òìÙ3 ×_PPÀ`0ž?.àŸ:;Øýl\ §þ†ã1_Àh‚Ë·àò-°±„éã!`$PÕLÿ?´´´öíûëÝ»w111wïÞ}ýúõ¯¿þªªªj```gg·}ûöqãÆ±^úE}ã>$''§££ãíííêêУG–—Dâ³hÑ¢²²2Ö¨ƒƒû¯Ýºu ™5k9Z^^þÃ?°º^#={öŒë0B’–——Ç>Z\\lggOŸ>íÓ§Œ‚B!Ôþü§  ¬¬¬¶¶VOOÊËË[õ^Yß¾}»wïNïØ±£¸¸ÔÔÔV¯^````dd´iÓ¦^½zEFFÞ¸q*++§L™"`sݺuóööfÿÐ@@ºÚ°x,œ×ãáèÙÿ?ÿÏ| ëvÀ¶½0~8L€®BݪwîÜyåÊ•+W®fa„зäÉ‘ß>B"ã¸i¯­­UUUeŸ2räHöQVK7,½{÷f½%×»wo Ĉwìí 9::º¸¸ÃÇŽóññ‘QP!„ÚŸÿ|0iÒ¤#ÿjíãkOOOÖ0Ùb¿¦¦fbbâÆíììôôôœœœÒÓÓGŒqýúõ}ûö‘¯ñ?|ø°y[z\½zõJˆûy9î1àÎ9˜6Ôþ½ä«£ÁñðšcçÂ¥@ÇéBèëÅÑ8«¹>|ØÃÃJ¥zxx>|XA"ÄÕÀ{öìiffvìØ±û÷ï+++À‰'222æÏŸ/ëèBµ -Ï"²w@(..ÎÏÏ€-[¶°_‘ ˆ .\¸pAÜ¡!$* ò%J„BH8¢V8;;'&&@\\Ü AƒÈ‰...ÉÉÉ)))}ûöeŸÙÜÜ|ýúõsçÎ%Gß¿Ov““cii)b$¢£ÕCy%˜vä9Ch(^³BB¤B¨Ý£P(ÒÝéŒY„ðTÒ•””üùçŸ999;vœ4iRUUƒÁptt}Í'OžÌÈÈPPPØ´i“èk“КÏ;÷êÕ«ÆÆÆPi=ÆÙ·oßÇ&Mš$¿bÛ·o¯®®¦R©Á¬ËñöïÅ‹—.]ª««ëׯŸ¿¿ÿùóçÇ/ÛD9KHbµ—ƒHr§±çêÉ“'Åöø½Ùd²YšˆˆŽyzöìùæÍÖ(ëÛ]]]q…! 5U~÷ÿ!„Bí×éÓ§ûõë§©©¹páB{{ûqãÆ1BÀŽ™Zäì윓“%–µIhͽ{÷ÎÏÏß¿¿p‹Ÿ>}ºµ‹ôïß?::ZˆD„Hë«çëëûâÅ ²Ññ¯Ã_ýäëë;iÒ¤ÔÔÔ^½z±zX—Ï’ØGBDR&âé…±ä*û)ÅÙÙY›¥¥å‡X£µµµ`aa¡­­-–0B!„Ps±±±‡ ìÒ¥ËðáÃ/_¾L£ÑÈ‹1ÑÙØØ888ˆeU’[³•••Ð |466þþûï­]ªgÏž&&&ÒIë«×«W¯nݺÉ: qZ»ví¯¿þêìììèè¸iÓ¦Ù³g‹ëxŽèg Iì#á"éåôŸè¹ÊqJ±±±O€‡‡GNNNxx89*''wáÂ77·•+Wúûû³šr177'; %%%À¨Q£ÄB!„jŽÉdþðÃ666¬o6ÀÀÀ`ÕªU5552 ¬9räH}}ý×—’‚ Þ½{—žžÎš2gÎ*•*«oÙð,ñk~JO§€ÚÚÚ˜;w®••yK¯££¿cÇŽ={ödee‘]š››²–Ú³gªªêÒ¥KÅB!„j.%%åýû÷M&''“ÃHJJÒÐИ?þ¢E‹`ܸqOž<ÑÒÒÚ½{wBB‰'ª««W­ZÕ»wo(--]¹r%F«¯¯_½zµ››¹ž¤¤¤µk×/Y²dΜ9äĪªª5kÖTTT0Œ+V¸¸¸°bصkW||<•J]µjÕÅ‹Ÿ$BC¿ü‹—u4¡ödÂ7!$$³ ‡,9Ù™iÙ™iÒL×ËË ÌÍÍ9‚oI&¿]¾|9Ÿy*++gÏžmeeµpáÂèèhxôèÑäÉ“»uëFF»ÿ>üóÏ?A̓-]º” ˆÙ³gÛØØB¥RüñDz²²C‡ÀãÇ ‚`2™nnn+V¬ âéÓ§***?~d¥Ëd2{öìHDSS“¥¥åúõëÉŸŠŠŠø¬™N§÷ìÙs×®]AܼySGG§¸¸˜c»²²²   €ݳg––¹½¼¶®²²ÒÉɉÉd2™ÌàààY³f±dÉ’>}ú‘ùnnnZZZL&sÞ¼yŸ?擺€i‘ïÕfggsL¯®®ž?>•J]¼x± ÙÅg~þ;N:˜L¦‡‡Çˆ#>þœœœ¬¦¦FfšÐ±…„„ 0€æµíMMMîîîýû÷'g;þ|```SS“ØsãÍ›7¬î!ååå ôðáCB°‚ÍUII ¼~ýZˆ`9Kp Œ×>#®‘ÐeàÌ™3&&&BS]]½hÑ"%%¥-[¶0™ÌS§N)++çææl§‚GåznáUÞĘ«ÍO)âì/$$dÇŽK–,k¾zõêóçÏ'NœƒÁÛâÒÒÒâµu555ééé»wïÎÌÌ\¿~½¯¯¯€ëäÅÇÇÇÆÆ†B¡,\¸077÷Úµk|R‘††F§Njkk7mÚ$Hvñ™Ÿÿޓޗ/_Þ½{wæÌ™ÊÊÊÎÎÎýû÷'§‹%6^Û.''·víÚ°òmÓ¦MwîÜ{nØÚÚ&''¿|ùrÇŽîîîñññC† ùôé“([h‚œ%¸Æk‰WóƒHVåSCCÂÁ`,Y²„B¡Lš4IUU•¬?bÇ5<®ç®åíÕ«WÍUñ|À²lÙ²ž={.[¶¬_¿~®®®#FŒpuu522RUU-//ñâF³±±©®®>|øð¬Y³Ä›:B!„â@¾¬[PPÀš2~üx___CCÃ!C†œ9sFEE…œN>Š”““333ãX Ng “—ªä}úèÑ£åää‚€ÔÔTæêê*`UUU4&¯ŠMMMù¤B§ÅÂõËa>ÙÅuþwœ‡3™Lr”Õ.€±“7NÆÆÆŸ>}âš×m§P(K—.]ºt©™™Y`` à) N^^þÌ™3k×®e’666îîî Cô‚-AÎ\ãµÄˆëAT]] ²+Ÿ555AP(‚ ÊËËY]ݳp-0\Ï-òòòÍË›xsµù)Eôôôì„õüùs ¥°‘——Ÿ £F¢Óéä®ä‚䧰䨪ªjTTùÓ•+W"""8"œ1cFbb¢½½½¼¼ü¬Y³Nž<9xð`Ö~áµæ#Fhkk'&&Àû÷ïóóó'OžÌ?+ÈeÉ çµuùùùkÖ¬QVV9rdtt4y)¯¯¯_VV—/_nÕFEEÅíÛ·É»ý„„]]]>©‹’û6’Âd—(;NÒœ;tèpíÚ5¨®®¾qã« [~~>ùå3¯û^Ûjjjû÷ï÷÷÷ç“bLL ^k)((¼yó&((ˆµ‹«ªª^¾|9xð`! ¶è9Kp Œ×>#®‘lË'F#7ùñãÇÅÅÅcÇŽ…ÿž^¸†ÇõÜBâ(o|rUˆ"Çå”RVV&tÓÄ¿m/‘ͶèåË— ¢$‡Bí`uµmðU7HÊÎÎ4h··÷ÚµkÇ?oÞ¼sçÎÍ›7üõäÉ“VVVrrr‹-bµª•››kaaáèè8`À€ÈÈH°±±!ï Ž?®ªªêîîÞ½{÷«W¯ž={ÖÚÚæÏŸ_ZZJ¾ÃߣGØØX‚ þúë/===?????¿iÓ¦Õ××sÄÆ`0LLLÒÓÓ ‚hll455-,,$â¿æ›7oöìÙsëÖ­®®®û÷ïo¾ÕìÍÆÄÄØÛÛÀÌ™3ËËËymÝÍ›7œœÆŒAÄ£G””” äïïßÔÔ$`ž3™LssóÇ3æ—_~±··¿uëV‹y+HZ¼šlmvµvÇYXX´êÞƒ+ 3 ˆ«W¯êééM™2Å××—lubܸq\cdmìÍòßv‚ Ö­[·mÛ6Ö²\S´²²RVV&Ÿ ·JRRÒÀ#""<==W¬XìêêzîÜ9ò× 6W¢4Hâ–à¯}$|"áÊ€ˆÍ±sçNCCÃiÓ¦}÷Ýw&&&?ýôÑìôÂ5<®çŽòÆ+WÙ‹\ó/¶ÀÌÌŒ#`ŽSÊÙ³g¥ZðìÙ3eeeQ’C¡ö«jã¾…*F{ùòe]]A ƒlÈš:žžž^[[ÛÔÔTRRRWWǺ)¥Ñh©©©•••‚¤ÛØØ˜–––——Çk†œœÖðû÷ïY'ûšÉ-jŽ£G\·îó¿^¾|IvI@ª¬¬|õêƒÁ<6&“Iæp]]]ZZZccc‹© ˜¯*€ñÏ.^óóÙqRP__ŸžžN§Ókjj*++YÙ(DlìU¼°º6[¸paUUûOÍS¬««6lN<RCCyG§Ó3333228ŠGk÷!Ž*ÿ³×Àxí#Ññ?ˆ„(b©011![-%ïöyáë¹…Oyãš«Â9ŽSŠ˜›äýÛ„B!$eªªªÝ»w'‡åååYlñ¢  `ggGwèÐcU¦«¨¨H>"ã…ìè›Äj-_,kæƒëÖ)++“¬Œ"iiiiiiµjýÊÿØ»ó°&Žÿqà“p¹ä”KPÁ¬Šµ"EEEE¤ŠHµ"µJ­Ôhµ–*G)^‘Š"¬'(ŠŠHAî;\Iö÷Ç|›_>„ƒ¾_Ïf³;óÞÙÝ!;;;KÂ%L¥R»ɧl…ÈK@½-.QŠW\pAuyPEB±¹¸¸8;;;88èêêrvÕæšã_ý5{ölYÙ^_RÉËËã'êeeeqg„.¤Xòük ®ñÚG¢ãI¥”:;; ‰D233ã¿d—ð¸Ö-|Ž7®¥*Ü!×¥JçK333§L™¢  `hhÈõÝMMM\‡Ü©›8qbJJÊ;wðø2|àÖ®]Û'q~!99ùܹs¡ÀÀ@ü€½ˆ?Þø9±õHMMÅO „Þ¿ÿå—_êèèxzzr.ÓÐÐÐ¥mú‰èèèèèhA–$“ÉsçΕt< _ñòòòòòc‚‚oH|‡œØz„††²_m‚íÚµ«Ë2%%%zzzâÊ“É|øð¡ØßË Ð‰­ àÅ‹]æt™óìÙ3kkkqåKjjêÛ·o¥誩©ÉÁÁ¡¢¢BÚHœØÐÔÔ,//眣­­Íù‘ ˆk׮ᷞÀG(<<|ãÆÃ‡—v à(++§§§kiiI;¤¬¬¬ìÆ999FFF¾¾¾OŸ>533ƒþ›ÝÙ³g eee#""º|ÕÖÖööí[ö„¼ÄÆÆ¾zõJ^^~ëÖ­bAŒ«ôÖO?ýTZZ:zôhooo eÑ£üüü/^ÌŸ?ŸsfRRR^^^GGGTTç´ˆyIºHû`— "::º±±QYYYGë…ÖÔÔV6mÚ´iÓ¦I.# [/€É“'w™³eËÎ)))­­­3gÎWŽRtíÚµ¼¼<öÇÇß¼yOgggÿý÷ÑÑÑ/_¾ÄsX,Vbbb{{{LLÌ7¤. øë¯¿êëë³³³Ÿ>ž=íèèøúõëÓ§Ow_ì§Ÿ~²±±¡ÓéüS›0a«W¯~ûí7IÄ â*¢˜4iRBBBff¦(‰pÆ,„Çoܸ±ËÃÔcÆŒ)++Ãc«sN‹ž¤‹´ÇôE,+¹¹¹åææÆÅÅI.‹ÎÎNggçÖÖÖqãÆMŸ>} þZ[ÀºuëBŠŠŠ¶¶¶ÉÉÉ_|ñûÛŽŽŽo¿ý688XQQQ\9JÑ•+WæÎKúÏØ±c?ùä<=qâÄmÛ¶>}zôèÑ—.]Butt,^¼ØßßïÞ½]:J>÷ïßojjÊÏÏùòeccãâÅ‹ñWéééÛ·oÇÓGŽ™1cFiiéƒØÕ—+W®|ýõ×ì+W®¼}ûvssóÔ©Sñë”ø8ݽ{×ÝÝýäɓ˗/·°°Xºti|||cccSS“´C½ÖÑÑqìØ1öG ^ïnôóóû믿¨T*ÿGŒacc#¡DYEDvvv"vréso577'''_»vs¾™™™]÷iÓt‘òO_IJœ½½½¤|øôéSÎ-,kåÊ•²²²›6mWvÒµdÉ’âââêêj‚ ^¼xA&“KJJ*++•••oß¾gFFF~õÕWìU‹ŠŠ|||¤6@жnÝj``°råÊE‹ñZ¦ªªjóæÍiii'OžLNNîRÑ-Y²$33¿Å§°°077×ÏÏOÚA e,kݺu¦¦¦Ÿ|ò {¦µµµ‡‡Gss³Â9uêTkk« Kª««K¨³à1ˆ²ŠÔ‰óï¿ÿ¾~ýzUUU ]÷e‘Òétü¾ºþŒ¤kjjÊÈÈèêêîÙ³GAAAÚõš8»>>>,K¸-°¬X,–““ÓÆ ‚xüø±‚‚Bii)ŸdËÊÊBEEEÝ¿Z¿~ýرc9çìÞ½[YY9((ˆs3ëëë7oÞL¡Pø—þvÇŽ¦¦¦A˜˜˜Ü¸qƒÅbñ)(c"l^eÅ?~Î4'OžÌþèääD£Ñ Y,ÖêÕ«[[[¹îˆúúz‹Åb±ÂÂÂV®\É5fÁåææÎŸ?Ÿ ˆ'Ož „¶lÙÂùíÑ£Gi4Z÷iþð¯‹çÏŸã)×soòâÅ‹­­­ ‚ ÓéwîÜA]½z• ƒa``CăÈdrZZÚýû÷ùìå.Áp-O6®g:Ÿ]Ìb±\\\fÏžÝÖÖvÿþ}*•ŠÃæ*11QOOOòäeïÞ½œ)tVÀ£Q*pÉ‹íA6—ÔÔÔ†††·oß×ÔÔüøãC† {FÒµdÉ’ŒŒŒŒŒŒªª*OOO„¾¾¾ŠŠJÚÎ;÷ÝwßéëëK;R@÷áÃ<ÕHè^{ð‘Ãã4ñêÄ›ššúôéSüî4Ž+™LfHH•Jõðð(--]¾|9FóòòBÜÞ - cccƒ±~ýz‰äíí­¨¨ˆ@#„ÜÝÝñKU(Š––Vqq±p¹°ó222jnnŽˆˆPWW_¸p!‰DÊËË#“ÉáááwïÞÅ·»SSS#""„îË)`YeddܹsgÅŠ!;;;%%¥S§N‰²u]477oݺ•s3i4š±±1{^¥Á™H^^ž··÷íÛ·ñX½-¨î16âQV‚ÄÏÕŒ3,,,H$Òš5kŠ‹‹÷îÝËuG455:tèåË—[¶lqssë1eþNž<9}úô¢¢"eeeKKË“'OvvvŠ˜¦ º)×s!D£ÑØ-,,؉TVV¾ÿÞÞÞ!dkkK&“kkk¹¦Ï5 þåÉõL糋Ÿ={vëÖ­+VP(GGÇI“&‰½Üøè­ÐGcÀ%/þ&L^^ÞØØØÈÈh°³eÅ'~®˜L¦‘‘žÆ—»>䚸¾¾þ† """,--eddz ž¶¶¶´´´Û·oÿý÷ßÿý°aÃ>|øÐ7å»)ŸsœgaêèèŒ3æêÕ«¡ÌÌLyyyöÓ:îeþåÉçL纋 B¦¦¦xÑOØ^ámoÆ Ryö—üà¼>ïK–, ÁÍ„!•'N,[¶ìÀA´··ã¾ýö[„®®î¶mÛZZZ}}}?ÿüsGGÇâââÏ?ÿ7ð©FŽ9¢££óùçŸKs3‹.µ79mmí3fÜ»w¯½½³],))ÉÜÜ\GG!ÔÒÒ‚Gtjnnf_|v¹F%“º±TQQÑã2MMMAH$‚ jkkñx(­­­666~~~±±±$)==O ÿþû/ž(**277ç³$×džI$Rppppp°XÆrTUUBû÷ïÇŽx7£à,//çÕ @&“qssNNNŸ8q"BHYYY8ùغ'^PPàêê’™™»|ùrOOO®1 âܹsóæÍÃÏS#„ššš† vìØ1Ü1D\,R>ç8Bˆý¢¢"εöîÝK§Ó Æ;wØïVൗ»C£Ñº—'nà¦sÝÅêêꈣ+S_¾Ê„O´b’@ʳGøH–T/€Á¦M›‚À}`0OOÏwïÞ:tè—_~yùò%nVWPP ¢›£ýPBB¡C‡¦OŸŽúõ×_oݺµqãÆþùçСCì÷s­FBÙÙÙšššÒŠ|éR{Óh´ªªªÞÞR`Ð ‘HGmkk;pà{fnnîµk×fÍš5{öì!C†Ü¾}!ôîÝ»²²²Å‹#„ðC¼xa<Ñý¡Ñéô´´4„ÐÇ+++çÍ›‡ÊÌÌ|óæÍgŸ}F"‘ž>>T*5&&ÆÃÃCŒ¹ð*«3f(**²ß©~åÊ•ƒ —––~ïÉåË—ñå+¯ÍÄÄÃOð) ‹¥¤¤D¥R:¤©©¹hÑ"|ÁŒx”à1± ¯²ê1‹îêêênܸ¯r³²²ÔÕÕ׬YÃ5ñ²²²ÐÐP …âî›!ºÇ,ˆŽŽŽÝ»ws^A¨¨¨,^¼8##ß@ÿ»kºì&Á X¤¼Îq„¾¾~II ^÷Â… 迆’§OŸž8qâÖ­[aaa;wîd¿¶Ï.è ×òÄøœé¼ÒwttÔÔÔÄ•Fccãµk×ØÇ§$p†Á+Z!ŽÆ¾K^üû={ö\¸pAÚQ0h¡x8@ìõë×S§Nuwwß²e‹··÷Â… ك𥧧ÛÙÙEFFNœ8öÇàƒW¯^}ïÞ=„»»ûÝ»w—,Y‚²··OOO.’½{÷jkkûúú.[¶LOOïûï¿Çó+**ŒÍÍÍ—-[öÕW_mܸQEE÷™âƒÏp€¿ÿþ;î X]]_jcc“’’‚ؼy3åK‚—Õ¹sç444æÌ™3gÎ__ßÖÖV>ÉòðŸþ‘——Ÿ:uª‡‡“Éäµ™ß}÷¿Ý××·²²’OiÄÇÇã[Y_~ùå£GðùÖÖÖׯ_çUPÆ’’b```ddÔ«U¸–U{ãÅbžräBÈÂÂ">>þýû÷øÁL]]=22’ÿ.è ×òÄxéüÓOMMÕÐÐX²d‰››>³ðh‹Ý‰8 çýæÍ®Ñúúú r4J.yh€@Àßá@F§Ósss»_itttäçç·´´ôA x´m‹õêÕ«.‘´µµåää°ß3Åÿ"ãÓÀ ë¿Áÿ׬YÓÐÐ øŠ¢Ãå\RRÒã’|š‚¨¯¯ÏËËc0âðð/(!bèÕ*‚—§.M¸«¥¥%??¿££ƒOâmÿyöìYEE…p1KZ—&¢7áñ:Çñ`ÍÍÍL&³ªªª¥¥…Édæää|úé§¹¹¹=ŠŽŽÖÔÔì1 Î`x•'&Ä™Ž+((èììljjª¯¯çÜ¡œD#@ÂE+-¸Øa,!EEE………ñú644”ýxˆNÀ‡l@ŠŠŠ666ÝçËÉÉá[‘} ³³“Á`H¤îQR(|ãc¿‚Z¼\\\œtuu9û'÷q•3FÃc Jÿ‚"†^­"zY‘H$< •Jí’T÷ÄÙÃdŒ5Šs~ßµÐWyÊÊÊŽ9O³HŒ‰‰ÑÐИ:u*þX__Ïyb  ¯òd+Ä™®  €Cpä qé›zI\pÉC€BCCCCC¥Àà‘œœ|îÜ9„P```dd$O»Mœ81%%?°Ý÷¹ PP­ððpwww--­ºº:##£„„izš@¿àåå%ÞAÑ…-Ý(¨–±±q||¼´£Âƒ&€dffâá%…æêêúé§ŸŠ+@8ÐЃììl8I$4 ŸŒäµ| IDAT+++»qãFNNŽ‘‘‘¯¯ïÓ§OÍÌÌØ¯ûâÒÖÖööí[öóÕýYtttcc£²²2Ÿ°úQæÜ/IIIyyyQQQœÓ"†÷Ï?ÿ°?ÊÈȘ™™9rÈ!"¦ /gÏž-,,”••ˆˆ`Ï„ñ¥¢áª12jdoÿi}ª%íÀz–ššêääÄb±ÔÕÕçÍ›‡‡ÓâõÓO?ÙØØÐétiÒ377·ÜÜܸ¸8i"(QæÜ/cÆŒ)++‹‰‰é2-"EEÅššš/¾øbß¾}ÊÊÊL&óرc:::çÏŸduè{„àèèøúõëÓ§Os΄^Q› fú­io×"¢*­JñˆËÝ»wÝÝÝÓÓÓ§M›†²°°°³³³³³kjj’vhƒŸŸŸ­­-•J•v =³···¶¶~ûö­´”(sî333;;»äää.Ó"²±±9räÆœœð˜Ë—/óæMPPÐܹsI$Ÿu;::Ž;†ßx€à,,,F}÷î]ΙРàãÅb±Ö­[gjjúÉ'Ÿ°gZ[[{xx477K1°ÁJ]]7µô :Îb±ú,»«/÷ ûj¿ü²²²²½½ÿ*§Njmm•|hࣽ>^ÅÅÅ?^°`A—›ÁÁÁ¡êêêÐÐÐöööŽŽŽmÛ¶YZZþòË/·oß–‘‘™7o^DD„¢¢bTT”’’Ò¦M›Þ½{(\0IIIýõ—ŒŒŒ««ë‰' Æ®]»œñ·yyy{÷îe2™/_¾tvvÞ½{·œœœÐžpýúuyyy__ßÍ›7WVV®_¿~ÕªU;vì¸ÿ¾¼¼üÒ¥KÇ÷ÝwßÕÖÖzzzúûû Û?þøèÑ#:ž˜˜ˆŠ‹‹‹‹‹SVV611‘‘‘‰ŒŒ=‹üüü­[·R©Ôšš›äääñãÇÇÇÇw߈ÛÎEÕÔÔåçç3FIIIôz…ë^æµ³ð*¢Üe¿ô™ÚÚÚÌÌÌÀÀ@…ãÇgggÓh´C‡eee9s¦±±1$$d̘1Û·oß³g…Bñóó£Ñh‡–hT ¡¡¡uuu cãÆ&L ÍËË£R©þþþÆÆÆßÿ}ccã‚ <==»,)ö`p±¨¨¨®]»!”ššºoß>ɤü ^û q$KTvvvxx8ÎÕÔÔ"À/ %‘þ o Y¨™;áÞÛ–»-wáƒBˆ ˆ¢—ùE/óû2_|ãÝÐаK08ž¾qùòe„З_~ÉõÛÎÎN;;»}ûö‘žž®¦¦VYYÙÐаvíZ…íÛ··´´èëë¯X±¢¾¾þäÉ“¡œœá‚ill\»v­¼¼üŽ;X,V\\…B)..ÆßšššîÚµ‹ ˆúúz%%¥ØØØÄÔ——sÍ+00PYYyݺu555?ÿü3BèáÇL&ÓÙÙyÒ¤Ix±óçÏûøø°X,ᶨ‹úúúÍ›7S(<íààÀb±X,VXXØÊ•+O§¬¬ !TTTÔe>ƒÁ000ˆ‰‰!âÁƒd29--íþýû\÷#×™,ËÅÅeöìÙmmm÷ïß§R©ÖÖÖbÙvqÝ˼vA½ x÷îÝ“'Oî>Ÿs¿`G¥ÑhݧEÔÙÙ‰>|ø¼yó¦L™2dȈˆˆÎÎNÃâÅ‹qðt:ýÎ;¡«W¯âׯ_?vìXþ‰WUU!„ž?.J„,ËÉÉiãÆA<~üXAA¡´´”Á`ØÛÛ/\¸/sêÔ©+V0™ÌîKŠ’5WõõõþþþfffkÖ¬IHHÀ(ÊIš˜˜¨§§'t<‚×~½=’%g÷îÝÊÊÊAAAìáA€ÞI!¥òOÚaDQQ!Ä«¯xjjêÓ§O-Z„ÂݤcbbTUU™LfHH•Jõðð(--]¾|9FÃO8s{Þ+***ÆÆÆ cýúõ$ÉÛÛ[QQÿfE¹»»>!D¡P´´´Š‹‹…Ë…—‘‘QsssDD„ººúÂ… I$R^^™L¿{÷n^^.ˆˆþÏi ŽF£ã馦¦‚‚‚C‡½|ùrË–-nnn¢§_YYùþý{{{{„­­-™L®­­utt亹Î|öìÙ­[·V¬XA¡P'Mš$zT½Âu/óÚY!±̹_ú€››Û¹sç._¾œžžþçŸN™2¥®®ŽF£â-,,ú,NwîÜY±bBÈÎÎNIIéÔ©S222_ýõÅ‹+**B7nÜØ¹sçÍ›7»/)öxh4š‘‘QQQÑìÙ³.\XRRbii)Ñ“”?Ák¿ÞÉÕÜܼuëVvŽð @ï¸îÒ@l¬­­Bååå]æ¿{÷îÁƒEEE¡¡C‡"„H$’¶¶v~~>^@KK‹B¡ „h4BH__Ÿ=Í`0xe§ªªŠG¤Ñhõõõ\—ÑÒÒRQQA‘Éd—/_âù»ví:r䈯¯¯‚‚BSSŸGÜi4Zcc#BHYY™ÿækjjjhhàÀ¨T*¾IëææfeeuôèÑ={öTWW›™™ñOD8úúú6lˆˆˆØ°aƒµµõ¶mÛDOSGGg̘1W¯^uttÌÌÌ”——ÇQàË’.û?FÑe&~ÀÔôÿ†Á633ë~lHŸ½ÌugJ7`¡Ñh´qãÆEEEÍœ9óСC]¼u}/''!´sçN99¹ŽŽKKK|i½páÂ7ž8qbõêÕ$IWWß“ï¾dØ•€ªªjCCƒ «ÈÈÈL:•L&à9}s’ò"Hí×Û#Y¢4448s„&€—¶¶öŒ3îÝ»×ÞÞŽÔbIIIæææ:::¡––yyy„Pssó°aÃð]~î“Éõ-ä"¡©©‰ ‰DDmm­®®.B¨µµÕÆÆÆÏÏ/66–D"¥§§ ’KÙq}tœD"øøøô°p \]]CBB233ccc—/_îéé)###b²{÷î¥Óé ãÎ;zzz!®û‘ëLuuuÄÑ+¤ß Á/sÝYÒ Xt8~ö•0“ÉĸõL&ÊÉÉ¡Óé'N”P<ªªª¡ýû÷ãÃýwMK¡PV¯^}ìØ1YYY|çŸ×’=bׂ߷:t(î¯ÄÖ7')/=Ö~BÉÕ¥1øx‘H¤£G¶µµ8p€=377÷Úµk³fÍš={ö!Cnß¾z÷î]YYÙâÅ‹Bø v¼0žèþ?W øñT^]Bt:=-- !ôðáÃÊÊÊyóæ!„233ß¼yóÙgŸ‘H¤'Ož”””ðyaA}}=ÎåñãÇ|¶s+‚àüèããC¥Rcbb<<<ø¤ œ Aeee¡¡¡ ÅÝÝ=!!_P‰èéÓ§'Nœ¸uëVXXØÎ;íììð|®û‘ëLGGGMMM\þ×®]kii=0ñÙ˼v–¸fï—î»|•œœŒ³b“slÿß~ûMVVváÂ…!}}ý’’|!}á„{[´´´jjjB—/_ðJ[83fÌPTTd¿FþÊ•+ÄÓUUU S§Nå¿$ìÓ“O%À‰ÅbqíÎ#¹“´Çxz¬ý„8’û&`œ# ØôÐG< öúõë©S§º»»oÙ²ÅÛÛ{áÂ…ìAøÒÓÓíìì"##'NœˆÇ™ûã?ðƒÊ«W¯¾wïž‹‹ BÈÝÝýîÝ»ø½åöööéééÂE²wï^mmm__ßeË–ééé}ÿý÷x~EE…±±±¹¹ù²e˾úê«7ª¨¨8p€j|†üý÷ßÍÍÍBÕÕÕ~~~!›””¼ÀæÍ›ñh^btéҥѣG#„|}}“““æÎµ`Á‚ƒ ž¯áß¿;öcêêê‘‘‘ø«îû‘×ÌÔÔT %K–¸¹¹á:þ|‚ Ø}°EdllÌk»xíeþ;‹WÀÝñs¿TVV&''[YY!„V¬XËž®­­%ÂÌÌŒB¡à¾*½rêÔ©±cÇ"„TTTæÌ™ãêêjccóé§ŸÞ¼y/P\\llllkk;yòä#GŽ „,,,âãã ‚øçŸäåå§NêááÁd2¹¦/–á ‚8w†Æœ9sæÌ™ãëëÛÚÚÊþÊÛÛ{ÿþý‚,).gÏž533#“Ék×®í>Ü '©ˆÃ Xû q$³G‚E—¿&ŠŽTSSƒûŸ'***,,,44_*>xÕ&¨©»ôº”ê³ëknÕ âÂÜçüõ«„©¹UŸå;mÚ´ŒŒ CCÃwïÞqƒ"þk èK­­­EEEúúújjjœó;;;_½zellL¥R%þ}û:ôþýûׯ_khhpFÒÞÞ^XXhhh8dÈ„P[[›‚‚ÿÔŠŠŠÌÍÍËËËÙ}•{DÞk׮ݽ{·XnÎsÅ~ü«W¯†ÊyéÞ£òòòaƱŸÇrss¿ýöÛMMÍÎÎÎëׯïÝ»_"û‘ë̶¶¶·oßš››·µµ1™L*•*Êû{Eˆ½Œ8**êÊ•+YYY¢DH§Ó½¼¼þüóOYYñ?RÍ`0^½zehh¨¨¨X[[K¥Rp?󆆆ÒÒRKKK^O‹TWWkii=þè |T¨¨¨ti÷©¬¬¤R©œ÷äy-)Q¢œ¤¿ÿþû7ß|SZZ*±èþpGr߀±R—]W—]'í($HQQÑÆÆ¦û|999|#´tvv2 ‰Ô}|/ …‚oÕbú=íâââìììàà ««+¹ë„{ä…Q£F‰+͘˜ ÜO!T__ÏYb\÷#×™ #GŽDŒ§(vÂíå¾ ø¯¿þš={¶$®ÿB²²²xCBšššœ_Ñh4<à\àuÊwo¨êËÊ­ÏNRQôM}%hè««kTT”()L˜0A\Á bÉÉÉçÎCFFFâ!¬ûØÄ‰SRR:::b/Îððpwww--­ºº:###>^ÚQ fd2yîܹҎâc7 OÒþÞ0ð\¸p!88XÚQ`Dí ªªêââ"Ê€‚ W|||X,ÖäÉ“¥~ÛÀ"j/€ÆÆÆ[·nÕÖÖŠ%À_qqq@@~&ù믿Æo $›7onnnÆÓÍÍÍ0ÞÁAÀ€ÑÐÐpþüy„²²ò™3gŽ;vìØ1i³S§N566J; 08AÀ€‘ÝÖÖF&““’’|||ìííÿùçŸŠŠ iÇ›ææfÿÇK;08AÀ€QRR‚Z»ví¬Y³B***A\¿~]Úq  `Àhii!‘H_ý5þøáÄÐëׯ¥€š %%%“áÇãøâ¿¬¬LªA0  `ÀPRRb_ÿ#„.^¼ˆ6l˜ô"0ÈJ;ЉDüÛˆˆˆˆˆ G4€éêêJ;‰033“vÿ“«ÿ˜:uªk9Rì‘ >åhèw‚à:¿¨¨hòäÉx€µk×þôÓOòòò¥¥¥ZZZ\—?xð ‰D –`¬±jnnVQQ¹y󦫫«´cƒ4 &&&mmmeeeïß¿‰‰Ay{{óºþG=~üXôû] £¢¢¢¼¼\EEeذa***] Óé¯_¿5j”„î­555½ÿžÁ`Œ5ŠL–Ès¬RÙÆ>Ø.ñb0oß¾moo·´´”•…눈Ô+NîÄéo È 2™ìââ’˜˜¸hÑ"‹E¡PÂÃÃù,/'''///tv_~ù¥ŽŽÎ.]ºäé驪ªêììËb±Ø‹¹ººŽ=úôéÓBgÄUKKË?ü`aa¡ªª:kÖ¬¨¨(777^ý#„Ö÷ÛØ7Û%^,kß¾}úúú666VVVïÞ½“vP /H·à4Oœ~ª¦¦†ÁîÝ»B¡¡¡¢$ E!‚ Š^æ½ÌïË|?ùä„¡¡a—`p<¼?~œ}ã+::šÂ…wåÊ*•ŠòööÆsZ[[§OŸŽ³öòòb0x¾ƒƒBèÔ©SÂeÄUSSÓøñãBªªªQQQ­­­AŒ;¶ªªJŒ¹ôý6öÍv‰WKK˼yóº\DI;®A«©© !tóæMi"åJ€Ó@}úTèz„ÂXoÞ¼2dBHFFfÿþý†††‚ü¸Ü¼yóÖ­[óòòbcc_¼xÑÛóóóTUUåää¾øâ‹èèèÑ£G;99ýúë¯L&³·©õŠœœœœœœ••Bhذa‘‘‘"Ž`ÅKo£œœÜ¸qã$´]‘‘‘!òòr<ç—_~ÑÐÐ`*Â=°=tèP999|dŽ?>33S,Á§±±1???''GÒG õŸ&Bª•'UUÕ‘#GöA…ÀŸžž>8Çayòä »ìܹsx¦¤G…ø_æqùòåß~ûmÊ”)---ñññß~ûíøñãY,ÖÞ½{'Ož,##3dÈ~øáÍ›7Ë—/G••U\\\VVvçαcÇ ž¯••ÕñãÇøá‡>|øðAYY900PUUU¤Lgg'B(>>ÞÀÀ@MMMrÏGôñ6ÊËË{yy}úé§’Ø®øøøÈÈȰ°0‰ÔÔÔôÍ7ßüüóÏkÖ¬1eeåU«VÍ;WOOO[[[ÀÔÄLKKËéÓ§9òêÕ+CCC''§ÊÊÊôôtxpFÒ¤X pÒÔÔœ>}úÊ•+%]!èùóçìiÎz˜o(o/€úúz//¯‚‚üñüùó~~~A0 ww÷ß~û Ï¿xñ"D´´´ÔÃÃÝ&³qãF‚ ÚÛÛÝÝÝ=Ú?ûN`0Aý¾À‘#Gðü+Và9K—.=|øpYDFF3™ÌÔÔT„ÐÚµkż¤q-‡A@IIéÌ™3’H¹©©IKK‹ÿÓ---999½ýmbb²cÇŽ^­Â`0´´´ÚÛÛÅÒsûc{¦ _õè'LLL¶oß.í(zñd„pçZßs/€/^P(2™\XXˆ6lXuuumm-FC9::âÅÔÔÔ B¨  @__ĈxþŒ3®\¹‚¿BMŸ>]ê <ÒE§ÓwíÚ…233;|ø0ž9}úô¸¸¸yóæéèèÈÊòüE'//ïèèH&“ÕÔÔBø0(=|ø°ªªêóÏ?ýúuAAî,È9ò7•J=ztSRRRUUõÙgŸ•——ó Fp}?¼´Æ{ǯNhllì›ì@oÍž=ûÁƒ‡NLLtqqñññ±´´Œ‹‹srrZµjÕ²eËØ/¼è³sM¼€íï¿ÿ>pàÀ¥K—BCCwïÞJKK;}út—>iëÖ­SSSóôô^ñ÷ßÿñÇ“““?~Œÿª!„jjjüüü~ýõW•ùóçŸ8qBWWW´ è¼ÀGB̯åÔÐÐPTTÜöŸ°°0oooMMM^ËkjjVTT°?VTTÈÊÊBû4>rœ6?ýôS„Д)S‚hooŸ5kV÷åÕÕÕï߿߽Ãç?þ8wîܘ˜CCÃþù§oz™ŠE÷r$÷ @FFB¨¹¹Yì) ñ ÀëׯBùùây²FKK«°°°Fƒ—ÊxïÝshoo———ÏÊÊ=ñA£Ÿ<08ˆ¹ `Ô¨Q ãêÕ«øão¿ývúôi>ËÛÛÛ766^¿~!Ä`0’’’p_5ñF0p „6mÚ„Љ‰Á?´f̘1jÔ¨ñãÇ›™™!„jkk—.]ÚÖÖÖe]99¹ŒŒŒ?þøãáÇx„jœææf///[[Û€€2™yïÞ½¡C‡Š=£€€:޲··ÇsöîÝ‹§“““/]º„§]]]GÍÿJG@ìÇ ¿ýö[…¸¸8'''Ñ ;1 ¨¨øÕW_íß¿ÿâÅ‹AtvvnÛ¶Ïò4mõêÕÇŽ»xñbcc£‚‚ÂÎ;ÅÀ€† vqqA’½ë^[[»yóæêêêß~ûMOOoÒ¤IÍNDYYY÷îÝc9räœ9s¤Ý»wïñãÇL&sĈÓ¦Mƒ>e`à|举¾ÞÐÐðÂ… Ó¦M«®®vpp˜;wîž={dee§M›„;'»ºº644ûì3…+W® „fΜ)í §!C†|÷Ýw+W®|üø±¦¦æÍ›7—-[–””´dÉssó¢¢"„PMM̓víÚ%í`ôk|ýÞ… ð;l°¦¦¦ß~ûMrÙ‰®¶¶ÖÔÔÔâ?ºººÒŽ@X,Ö­[·ÜÝÝ­¬¬LLL<<<àAh0(}óÍ7£Göòò*//766ÎÊÊZ²d BÈÜÜüÕ«W,+88xĈkÖ¬‘v¤ú5I5ÔÖÖ&$$t™™žž^VV&¡EWWW‡º{÷nvv6»ó€þ¬¼¼¼½½ÝÜܼ©©©¡¡ÁÈÈhÖ¬YÒ ñ#“ÉÉÉÉ#GŽ}z`` §§§¯¯ï¤I“RRRß40ÈtvvÒét*•¦¥¥uîÜ9i€|1™Ì>ÔÕÕëééñ_x€¤zTRR2vìØêêj±„$JJJgΜ1‘ªªª±cǾÿžsfFFB¨¹¹YÄÄ»311Ù±cG¯Vyýú5B(??_,èèè>|XôtNŸ>½råJÑÓéŸêêêÆŽûöí[i"&&&Û·o=k׮͚5Kôt4‰4äåå566âi›o¾ùFFF!äääÔÑÑqóæMId*"*•:yòd*•Š?ÚÚÚ677³·@ÿ$//O&“gΜ)###++ëââR^^ÞÒÒ"í¸ˆŠŠŠÒÒR„™LÖÖÖ2dˆ²²2N—v\ýW{{û£G:;;¥ˆ˜uvv>zô¨½½]Ú 0>|(,,”v’Â`0=zÔÖÖ&í@úµÚÚÚÜÜ\iG!ei`¨¤¤´iÓ&|ý211AeffJ"S•••={öŒý&¥   ½ˆôLCCqtœÆq 5|X,–¿¿¿ŽŽŽApp0{>™Lf0R LrTUU‡ "í(ÄOEEeÀ½vJMMmÀÅ 8ÅH"/Ä=BK–,QSScϧÑh¡W¯^ÕÕÕqÎï Æ… † b``Àb±nß¾mjjJ¡P¤~ðÐÛ·o»¸¸qçÎ===v—.äääS§Náéǯ^½zäÈ‘¡ÚÚZeee©†&) ÒA"JJJܨ÷îÝp1ƒAB1’H@}}=BHEE¥Ë›™åååñD^^Þ”)S$‘µÐ 'Mšô믿jii577«¨¨,Z´HÚAè‰DúüóÏsrr˜L¦¬¬¬···´ƒ@üJJJ8?VVVâ&€Ç;VJAa Ģ3dà #‰4´¶¶"„œœœºÜEïèèÀÅÅÅý­ !4}út‡ÊÊJeeemmm2YRoL FFFFÁÁÁïß¿§P(ººº²²ùÓ€tÙÛÛ³§mmm'L˜€§ýõ×3fH)(п¨««ëèèô“+%eeå¡C‡ªªªJ;@Wù„«žîmÒì]µµµ’ÈWt4 ?­`¡P(fffÒŽ š2eŠ]MMÍŽ;¼¼¼ð]–3gÎÂ[0fkk[^^.í(þÏСC+**¤€ Y„PMMMee¥pë'%%!„¢¢¢¢¢¢º|•’’Âk­””Αlòòòqqq³gÏþå—_:::† ’–––‘‘qþüy½ z£F200v ²¡ºº:ö~½¥¤¤„š0a½{÷Ø3·mÛöðáÃäää.lß¾ýÁƒ¡O?ýtíÚµÂG tFü÷:q7 Þ"aee•››ûã?^¹r…ÉdNš4iÏž=ø¥ néééÒ€ÁC"à¿Fìwbmmmì·îÁŸ+€ÞRQQ E=~üøÉ“'×®][¼x±´ƒ0H¤ @WW!ÔÜÜÌù6׬¬¬¶¶6<=|øpIä;€¼|ùÒßßÿÑ£GcÇŽ=yò¤………´#ÀÀÀd2úé§“'O8p °°pĈ®XUUõǼ~ýZWW×ÛÛ»¡¡Á`ØÚÚŠÒÙ³g eee#""DOMB)'%%åååuttt|UB~úé§ÒÒÒÑ£GÛJDÝØØ¨¬¬&íXÄ&77÷Ï?ÿlii?~¼‡‡Çùóç½¼¼¤’(µ„$ö‘TN"ÉÕýá0>{ö¬D½6lBˆs<‚ .\¸€§eeeG%‰|ÿ¬¬,:ž••åïï/íp0`°X¬¬¬¬øøøªª*###׊?~¼ªªêš5k¬¬¬æÏŸ?{öì»wïŠ%$GGÇׯ_Ÿ>}Z,©I(å1cÆ”••ÅÄÄ·z|||oW™4iRBBBfffä5è¹¹¹åææÆÅÅI;±9wî܆ ÜÜܼ½½srrìíí×­['ÝD¬%$±„>‰D!b]Á‡´cÎ*ÅÑÑ‘{Àëׯ«««ÿý÷ßË—/_½zõÕ«W½z´ÒÜÜ!ôöí[öœ[·n½ÿOÛÚÚâzÅÏÏoË–-½]«ßzòä ×iþ^¼xáïï#///àX€)))>>>'Ožôññ155ýì³Ï._¾L§Ó›››Å’……ÅèѣŒ”äR633³³³nÝŽŽŽcÇŽõv-;;;==½¾Ékг···¶¶–vâ~øðaGGG[[Ûˆˆq½–Ä>î$‘(uR9Œ»T)Ü›^¾|yôèÑ?ÿüÓÔÔÔÀÀ ??ÿÀ‡þóÏ?sss{ÌFSSsèС/^¼ÀÛÛÛcccÙßzzz zMMMuuµ+öOcÆŒá: Àßþýû7mÚ”‘‘!àÝ9‹õÕW_YXXL:•=sèС!!!MMM sP9uêTkkëàË H Aoß¾-((`ÏYµj•²²²´F´…Zbë^¥ð `Ê”)Ó§OÇÓ¸ß~GGÇ›7o.]º$H[¬ »± ..Ž}õ>räH µ©HÅ»wïÎ;—™™ùüùóŠŠ :®¨¨¨­­miiéêêêååellÌuÅ“'O®Zµ ðóÏ?÷mÔiÊÉÉINN¾ÿþóçÏëêê˜L¦µµõáÇœœ¤`` R©‰‰‰eee‚,ÿàÁƒwïÞùøøtyñÏýû÷ñôñãdz³³UTTñk›æÏŸÿèÑ#vèС¬¬¬3gÎ466†„„à[ÕÕÕ›6m¢Óé­­­ß~û-»ËÎί¬¬\¿~ýªU«ð̆††ÐÐкº:ƒ±qãÆ &°cØ·o_ff¦²²rHHÈ¥K—=z¤®®¾aÆ{÷î]¹rECCƒ}‰kÊÕÕÕ¡¡¡íííÛ¶m³´´° ñöòÚº¸¸¸¸¸8eee …²gÏ …âççG£Ñ>,`.XGGǺuërrrÔÔÔ°…&H-xœq¼ö‘u?‰8ޤ¤¤¿þúKFFÆÕÕõĉ c×®]ÎÎÎ]ã•Q—ŠBAAë‘ãïïßEÄ ÷*¥¦¦æÕ«W—ÿך5k¢££/sãêêÊùqòäÉ¡ &ÿëæÍ›îîîïß¿/,,ôððpwwwwwŸ3g~¦@îîî«W¯n]Ix÷îÝÂ… Éd2BhôèÑ>lkk{ñâÅæÍ›q‰“Éd//¯ââbi èž>}ÊÙ¸>}úô´´´¦¦¦#GŽXXXH;ºÁ`÷îÝ!iG$|ä½Ì/z™ß—ù~òÉ'!CCÃ.Áôx$×××·µµ ˜ ~ ô›o¾áŸ ¿¿¿™™Ùš5kBÿüóÏâÅ‹­­­ ‚ ÓéwîÜA]½z• <•JÅ…&tl»wïžD—ŸŸ?cÆŒ.3¹Ö¢@P’t;ër¾ªÉËËËÍÍM[[{æÌ™‰‰‰ì1ñ­H2™l``Ð%‘ÎÎNö4þ‹— bÏ×ÐÐÐÐÐ@©ªªR©T¼ ¾²sçN99¹ŽŽKKË.'éâÅ‹7lØœœÜÔÔ´oß¾€€€¿ÿþûúõë~~~üSÆÏQãf‰¤­­ŸŸ/\qn¾¾þ† """6lØ`mm½mÛ6áÒĘL&û­ ø²ÿõë×|r MMÍ^×å{Üq} °°!djjŠ?š™™áÃXŒ±qÝv777++«£GîÙ³§ººÚÌÌìÏ?ÿWŽXFFFVVVDDĨQ£FµiÓ¦—/_Nœ81-- ßÌË-8Aj ®‡^±û>#>'‘Xöˆ–––ŠŠ BˆL&ëèè¼|ù’ó[^׊¢û‘ƒxÆRij ++ëÂ… 8Våˆ#FŒÁ¾¥éëëO˜0áÞ½{]R8~üxJJÊÿe#+»oß>ö– aΜ9zzz’k«¬AgÏ#Cä9³ç…•””ètúÿ_·²RKKëR«¬ÔÖÖf¤R©---â 0ÀìÛ·oÓ¦MNNN±±±œ5áÛ·o}}}oß¾}èСõë×K1ÂÁ!***,,ŒÒXJ`@Ü-GŽŽŽ™™™rrrx&þ9«££ÃùN¡C‡v¹Èd2ñDQQ{¦ššB¨ªª ·°“UVVîž»ªª*Bhÿþý:::xƒÁà\@MMÍÓÓóÔ©Sjjj.\¸xñâ©S§jjjvìØÁ^†kÊ8Á––yyy„Pss3~/µà¸n]AA««kHHHfffllìòåË===Éd2®[rrrètúĉÌ¢¡¡ý£ÿÔ××ç“;BHè¼Ø¸>.ßãŽëêêê!öÕ{\:c6l¾Š6lØ¿ÿþË5 ®ÛN"‘‚ƒƒƒƒƒ |||ÏQp222‰‰‰áááìSÒÂÂÂÙÙ™Á`ˆ~` AZ‚k`¼ö‘q=‰‘˜öHSSA$‰ ˆÚÚZ]]]Îoyíz®…ŒŒL—#ñ>ŒûL÷*…çƒêêê›7oööööööþú믃‚‚†ž——goo/HN¹¹¹W¯^e\±b…(×ÿõ(­ÙŒf£}ÇQU@«t)„Ë—/wY·$ñZð±9pàÀ_|‘™™É® ™LæÁƒmllnß¾mhhèïï/Ý?6ïÞ½;pà€‡‡‡¹¹¹ªªª¬¬¬ŠŠŠ™™™»»û¾}ûŠ‹‹¥ âD&“üñǦ¦¦Ý»w³ÛÈâãã»´—±X¬.WÚúúú%%%ø÷î… Ð¿¿g̘!''wòäI„PGGÇçŸÞÙÙ‰yÅ+Áþ8cÆ EEÅÓ§O㯮\¹rðàÁ.~ñÅ·oß¶²²’‘‘Y¹råÙ³g§M›Æn—á•òìÙ³‡ rûöm„лwïÊÊÊ/^Ì¿(ðºxÃym]YYYhh(…BqwwOHHÀZZZ555¡Ë—/÷êJ£®®îÆøj?++K]]÷ã•»(yqn#ž¤¸DÙq’æè訩©™––†jll¼víû$¶²²2üä3¯ë^ÛŽòññ¡R©111|rLNNÆáõ–¬¬ì‹/6lØÀÞÅ Ïž=›6mš¶è©%¸Æk‰דHŒÇ'NÇñ?|ø°²²rÞ¼yˆ£®à•׊u;rïÉpüô —*¥·ÃvÁu8ÀòòòÅ‹»ÿgÿþý¢c öáÛÚ‰ÄK„ÛRBwìÿÿw"N uŸ}zxx¸——×êÕ«“’’Ø?®Îž=kffF&“×®]ËU«¸¸ØØØØÖÖvòäÉGŽAYXXà«‚ØØXEEEggçQ£F¥¦¦þþûïæææ¡ÀÀÀêêj܇߯Æ&%%… ˆsçÎihhÌ™3gΜ9¾¾¾­­­]bc0zzzAtttèëëøðÅ?åôôt;;»ÈÈȉ'ÆÄÄtßjÎá“““­¬¬B+V¬¨­­åµuééésçΊŠZ°`ÁÁƒ ‚øçŸäåå§NêááÁd2,s‹ehhxòäɹsçîܹÓÊÊêúõë=–­ yñ°·Å%âŽë©©©K–,qssãNÌŸ?_èØ8‡ä¿íAlÞ¼y×®]ìu¹æhffF¡Pðmä^ÉÎΞ2eÊÁƒ]]]7nÜ6qâĤ¤$üm6W¢ ˆñ¯%xÆk‰Ÿ“H¸c€s8@‚ öîÝ«­­íëë»lÙ2==½ï¿ÿžèVWp͈kEu9rÞE$ôñÓ+]ª”ßÿ]üM­­­_}õûúΜ9¢‡.Æ&€÷eÄÎ#„Õ'ÿsñ¯;–p[J<Ì4‘·oßΛ7ÿˆDQ©ÔðððçÏŸ···?}ú¿Q†D"yzz¾yóF,a.„ÐO?ýôÿØ»ó°&®¯à'a Œ²‰¢€Š"ŠXP«‚{«âRµ?)U´bݵàÞ*‚KÝ[Ñj•Zw¬»­E}µ¸ à‚"ÊVQ ²†-dÞ?¦MS!„€~?OŸ>“Édî™;3˜¹¹÷Ü‹/Jg4hУG4Ý»£Æ&€°c>YQQQÒïÆÅÅIr‘±±ñƒ*í¡OŸ>’ úôé£úc yšXB¡ðÑ£GEEE ÈD¢ç-*///,,¬¨¨xýúuQQ‘ä¡T(ÆÆÆæææ*RnYYÙãÇ_¼xQÝ)))’åçÏŸ+²Oé=³GTU¥*‘yt%ÿxôè;%+777..N$)›X,fk¸¨¨èñãÇeee5–®`YÕ5ÔH~uU·½äÄU7Ýu­ØØØÔ*æâââøøøòòò‚‚‚ÜÜ\I5ÖxQU%ÝPö·_†afΜ)Ý|/³Ä¢¢¢!C†”——+«´´”}ð+//OLLLHH¨tyÔöL1ªh`Éÿ+!3°êÎQÝÉ¿‰”¸ª6XZZ²)HsrrªûTÕ‚ªþ¡så0ÕT‘Ò×OmUú“"/ rvìØ!éBÉãñJJJžF &ï1ÔÕ±»²±±9qâijgÏÂÃï]»öäÉ“­[·†„„èëë›››wèÐaݺucÆŒi°Ã@ÍöìÙ3þ|.—Û¬Y³öìÙÓËËËÉÉIÓq½_üýýÙ¾p,I_ –££cppðçŸξÌÉÉ™5kVdd¤ô6÷ïß—¹ ÐXèëëwêÔ‰]ÖÒÒ’$ÙªŽ¶¶v‡ØeSSÓJ»ªtÉ¡££ÃþªVv¢o–$[¾Jö,‡Ì£“Lµ ©(–@ µÚ?‡Ãak˜ÏçW RNÝ*Q–‚j[]•¶öìY=UÇVT¥*u9õrxxx¸»»»ºº¶hÑBÒ»»º/^¼8lØ0míZ?Réêê²#êµµµÙΕÔÓÑ)Bþ_ ™UwŽêNþMT÷Z*//‰DGþ¼uU ªú‡BΕCÕT‘Ò×OmUú“"»©ïx þŒ;vìØ±ªÚ›âWKƒ×Oµ3ÔVEEÅÆËÊÊØ—#FŒ8p ¹¹¹åææ²Ó!Ö‘¶¶öܹs;uêôÙgŸ‘X,þå—_dn)ÓïÐòð¢}Çþ}þ·iEËfÓ½ ô}žÿÞ;;vìNæÈÎr,ñèÑ#Ér³fÍvìØQiöööW¯^-((¸zõªÌ®› ™Êš.\¸ Ô¡CÉï*NNN</::ºîE˜™™±c'ØIh‰(--­Ò6ååôýOÔsù̧?n›RG[‹†ô£Ã;èÆIšéMÆMë 4>ÎÎÎ÷îÝ“$sÍÊÊruu]ºtéÓ§OËÊÊbcc¿øâ ú'™ëÝ»w52€*Õ5÷ÀË—/‰(**J2ó!;wnÆ Ò›…‡‡{{{×±,"ªÚërË–-Š|ðÇ;ôãÆº— ¤º†Õªª…BáÚµk×®]+½’a˜S§N:uJÕ¡4hééé—/_޵¶¶ööö~ð॥¥¦ã‚:ùùçŸØ]•Þ*))yöì™$%auÂÂÂ’’’tuuW¬X¡òTø‘Úúþûï_¾|Ù¹sç &ÔS5züøñÓ§OÇŒ#½òرcqqqeee!!!ÒËu,«¾«T §LëÖ­ËÏÏ744 Tán ÂÂÂÒÓÓ 0`ÀîY#êÚ  U«VDÔ¿É,€•&!ˆˆˆðôô|ýúu]f2žðêÕ«lY•æsb&=óßIþ,]™€`&Sò€¦Q½ÍïÒjœ :uÿFÕØ]¸p¡W¯^b±ØÏÏÏØØØÝÝ}ôèÑìŒzÐè:tH²ìææ–’’²oß¾ª›}ÿý÷NNNB¡°ê[Òzôè‘””ôÓO?ÕG uüH]|øá‡‡¾zõj]v"³¶nݺpáÂŠŠ é•...ééé¡¡¡•–ë^}Wiû¯c])hðàÁ>_þÛ·o_Û)l¡.©#ggç:vr©sm†‡‡§¦¦þþûïÒëíìì$ÃФ—ë^}W©üý×±®×µkWGÇÚÌô®€ß~ûíÑ£GóçÏïÙ³ç¢E‹j5kiÃôŸ·nÝZ¿~½H$ÒÖÖnÞ¼ùÛ·o“’’’’’"##¿ùæ›J3'I˜››³½.¹\®ŸŸŸd}JJÊæÍ›Ÿ?ξ|—N88 IDATöì›,ààÁƒ®®®Ó¦MkÑ¢E­b‹Å ÃlÞ¼933sòäÉ^^^U·i& ˜ótöí;FwÿIêt#†nÄPs3šô MMÍM«~à}$‹¿üò˶mÛöïß_²ÒÑÑqĈ……… ”³wïÞââbE¶466®§.ÍŠÇP—h\c>zôèœ9s6mÚ´sçÎ!C†¨00–:«T(òx¼ŒÊ¥¦¦šššjiiµhÑbýúõšGþm(,,ܲe‹H$êÝ»÷Ì™3ŒŒ†¹qãÆŽ;ž>}º{÷î9sæÈÜ…±ñß?»|øÒ¥KºººÞÞÞK—.ÍÊÊš3gδiÓV¯^}ûöm]]݉'~ðÁË—/ÏÉÉ5jÔÔ©S•(EñºÊËË xûö­H$Z¸pa=”(Žíu«§§çãã#¶nÝ*y+**jÉ’%’Ãüî»ïîÞ½+ 9"§6*í? ..Žˆ>øà---™•žž®` J„]]])Ueee_~ùelll³fÍ6oÞlkk[݉8xðàÁƒ mmmµ´´ôôôª‹YAaaaáááYYY¡¡¡/^¼Pío˵ªÒª÷8íÚµ+**J lÙ²%22òÀùùù‹/vqq!¢Ç¯X±‚Ïçggg;99…‡‡wïÞíPuÿ2ƒ©TŸAAA’eÞéòOqvvöìÙ³?~ìââb`` Âš\¿~ý±cÇòóó}||¼¼¼† ¦Dx ÊÁƒ);;;))éìÙ³Ó§O'"ssó“'Ož•òÕW_‘––Ö‘#GÎVÑ»wïž={²#óSSSÙuyyy'Nô¬Éøñã333¤Ç~dãÆÅÅŵÝ—ý–Ùö#Ómè¿9Øÿ<¼˜2EµÚ€2ÔÕ¹@iì•“œø89ñ±:Ëex·²²ªŒ:¯ä³gÏÑ_|!óÝòòrggç72 ѬY³¬¬¬¼¼<÷Í7ßùùùµjÕÊ××777wÏž=D«\0ùùùþþþººº«W¯‹ÅÔÓÓ“|ÃlÛ¶íÚµk†ÉÍÍ500 «q‡l:ƒŒŒ ™e͘1ÃÐÐðË/¿ÌÎÎfsNÇÄÄTTT¸»»øá‡ìf¿üòˤI“ؾ¨JP°®Äbq¯^½.\È0̽{÷x<ÞË—/åì6==ˆ’““«¾5gΜnݺI¯ 644œ={¶ôaæææ.]ºTOOO~m°ï®^½ºmÛ¶ ÃÄÇÇÛÚÚ^¾|Y,Ë©(cP"ìêêJ~üÒûìÝ»·äe¯^½ABB‚X,ž>}ºMqq±Ì‘››ëêê*‹Åbq``àçŸ.3fÅ=|øp̘1 ÃÜ¿Ÿˆ–-[&ýîöíÛAÕeù^¿~MDOžeÞérNñ£G®]»æëë«§§çææöᇪ¼Þê^ƒÂÖü¿Oû&&&ööö•¶ÓÒÒbçOÖÕÕ•¹#==="êÔ©“d ›Z“ÏçÛÚÚ²+ííí_¼x1~üxWW× .°íFOŸ>½sç{ÅÈ÷ÝwßÕêð*—†ö§¡ý)áOÚw”Â/°˜ˆ¨HHaáN=\Èg, éO:u' Ñ`SgeddTZÿüùóèèèääd"277'"‡Ó¼ys6Í3™™™±_ý3K»,'“tóæÍ³²²ØíÓÒÒdncfffddDD\.×ÂÂB’{íÚµÛ¶móööæñxÕ5[‘¥¥%û;¹™™™üÃ755511!¢&Mšðù|ö1lðàÁ;vܾ}ûúõëß¼ycgg''5ª±®bcc‰hÍš5:::eeeÕ=KK*°VLLLªfU2kƒõæÍ›éÓ§?|ø0::Z2x­*JÁjüˆœº’¿L’Ÿ0ÙÇݘ˜™;oÕªÕüùóW®\9þ|GGǯ¿þºÆàå())ùí·ß²³³¯_¿ND-[¶|úôééÓ§ÙV¡zUµJÙF(™÷¸4éÊ´°°pqqùõ×_ÝÜÜ®^½ª««+­£àY–_Ÿrît™§8!!ˆÚ¶mËncggWõš Õ6¼:jݺ5ûK¼¹¹yfff÷ÆÖü¿Ï»ÕÍxïÞ½ÒÒRW]ÎL†aˆHÒ2”———““CD“&M’<ÿQçÎÿøãvyèСB¡0,,Œˆ~ÿýwEšT¥½-…Ò’/éèÚwœRÿù§'êEÝ£oÐÔOÕ €†5oÞ|РA·nÝ*--eSYÇŽ³···°° ¢¢¢"ö§ Â–-[²TzFe1ª‘"_a †áp8 Ãäää° ¤‹‹‹œœ|||ÂÂÂ8NDD„œ=¼zõŠ]HNN®úû–4™Ã†9ÎܹsçÎÛºuëI“&Õpj¬«&MšÑ·ß~ËV8UߌÂV`FF†äDTÂårÙ/ç±±±B¡°gÏžDdhh¨HœrQëééEDDÌž=ÛÇÇ'66–ÍÿU]E)ƒâ‘SWµž——'™±¨¨ˆˆØ‹­êÎãããûöí»xñâ«W¯†……M™2eÔ¨Q2cVĉ'FÍ^#¢‚‚‚–-[îܹSµM V©œ{œˆ$²­~~~6l …"‘èÆ’çÄêÎr¥`AÕúÔÒÒ¢šît™§˜ÍL'y¯×©L”¯Žªk*U{%×ðÇúÕ«WÛ¶m#"OOÏêz°9ÿ$I%)ûôé#½™““Ó_ý%9%cÆŒa>|Ȩ}>Þ&†4ítãúyõÿ$–110¼W8ÎöíÛKJJ6mÚ$YùðáÃßÿ}È!Æ kÚ´)û[åóçÏÓÓÓ?ýôS"bñ²³ Uÿ¯4¡PøÛo¿QLLLVVÖèÑ£‰èêÕ«þùçСC9Îýû÷_¼xQ÷ ¤‚aé—“&Mâóù¡¡¡’_¼URJuu5hÐ }}}ÉœêçÏŸß¼y³rÅ™™™eggÑÙ³gÙÇ×ê“]|—Sb±ØÀÀ€ÏçoÙ²ÅÔÔtüøñì3USQŠÇ ÄGª««‹¨êíÛ·—/_fŸr###gΜ)sçééézzzžžž‡f›!ªÆ¬ˆ²²²àà`ÉÈh"222úôÓO¯\¹òàÁI…KNM¥Ó¤8«´º{œˆZµjõâÅ ö³'Ož¤JUBº\%ÂkPØšÿ7`%'OžüüóÏÙÆ`ggçJ9%¤4RÌûš•’’Ò¯_?OOÏeË–M˜0aܸq’$|ÎÎÎAAA={ödr?~œíþ9}úô[·nyxx‘§§çÍ›7ÿ÷¿ÿQ×®]#""”‹dÆ Í›7÷ööž|¸···üØrÒÞ¹sGWW·_¿~#FŒ¨¨¨¨î0—/_Îæo÷ööÎÊÊ’S‡b{øñÅwïÞe3ä;::^ºt©ºŠR0†sçεnÝÚÚÚºV‘YW5žM–t:@±XleeµgÏžO>ùdÍš5;vdH扈ˆˆpuuýä“OBBB¼¼¼6oÞ\5fE®‡×¯_³ LMM¿þúkvåĉÙ•-Z´8pà@xxxÇŽ‰È××7,,L²œ““SãÎI* âUZõg¥¦¦ÚØØtéÒ¥wïÞì¯ÂíÚµ;tèPZZ;p€ell$ÿT Ff}²ª»ÓåïÿÂ… &&&ÿûßÿÌÞYl¶Åªj›PúþóÏ?• ¯á`kž“““óôéSécbböìÙóêÕ+‡3räÈÉ“'W×`ݺuééé;v bÿŽÑÂ… 6oÞ\iDÐgŸ}6~üø?þ˜}™••õùçŸÑ?ü él£AÂbÊÉ¥V-4¼sØî¬šŽâ݈ª%°7iJR<µµï¨¶r påÊ++«çÏŸKCÿ ´T³âââäääV­Z5kÖLz}yyyRR’ ŸÏ¯ï6nܸeË–´´´””éHJKK¬¬¬š6mJD%%%5f‰fddd(þU“aöøûûKÿ>Yߨz622’L³]v @rr²dü³´¼¼¼—/_:88°=«ë‰üŠR"†Z}Dñº’rþüùÈÈH6þ/^X[[ …ÂÔÔT{{{É“Uw.éæœ””dnn.yVOU+èÍ›7fffOžÇ‹‹‹ûꫯ/^ljjZ^^~éÒ¥ 6° rHS]}²”¸ÓÙÍž={foo_RRRQQÁçóeNzôèÑ T—ç^Ê…×@°5_9÷]AAÁwß}ÇÎúÐ¥KŸ3 dffvìØ1%%EÒ0dÈ„„„S§N-\¸PzK[[[éê–Œ`3¾h_Ÿøúš@Côõõœœª®×ÑÑaŠTƒòòr‘HÄápª~ÕÓÓ“|Û$¢zúÚíáááîîîêêÚ¢E u>ÿ“êêY °¹ë•üŠR"†Z}¤îuÅápØ\€|>¿Ò®ªî\’&C::©«ª•¦xxÕÕ§¶¶v‡ØeSSSv!44ÔÄĤ_¿~ìËÜÜ\éS‘`ª«OÉ»JÜé< UÁÌJSÏ¢zÂÖüš222–/_ž™™Ùºuk???ɸùŠŠŠJKK#""FŶöïßÿÒ¥K×®]kÛ¶í'Ÿ|"ÙÒÂÂâÍ›7’—ÅÅÅDdnn^‰ q ?qâ͘1#((ˆÍ­­f={ö][»“ã …Â¿þúëÔ©Sì?‡ÃYºté7ß|óã?ÆÅÅÍ›7mŒ133cGd±ØùØEðž;v¬æE“oݺuëÖ­Ól *ê½eccsèÐ!MGÊûwF€ .¤§§;;;ûûû×êùŸˆ***üýýúé§Û·o³k ƒƒƒ'Ožœ””Ä&,!"¶¡Hò©sçÎéêêŽ9²ÎG5ø÷Qÿ?þ "é§ti@ÎŒ¯ xùòeppðÔ©S‡ Æáp´´´Æ7nÜ8É6lç":uêÔÝ»w§OŸ^)ý¨_zzúåË—ccc­­­½½½>>]ºtQÃôŠu×µkWGGÇgÏži:EÕ%`éóbggçìì^i¹Žœœœ:tè°páÂ^½z±9/¦L™òçŸΞ=û“O>a³ªW§¬¬lçÎìŒ÷Šk×®]çÎoÞ¼)½òï&ssó³gϪ¤˜Î;oݺ522222òøñã%%%Òïr8œ>úhÈ! yþ €÷„X,þòË/Û¶mÛ¿ÉJGGÇ#Fj0°w•±±1ÛÔ¢B¡ÇãÉÌ ,užÉÓ>;ùå;wJKKåÏ-·wï^Éxj€:Ò&"¥Ç#±×bTT”ü†+iªjkhDÿ# u„ª¨•ÔÔÔ{÷îyyyUºwæÎ[VVFDoÞ¼ `Çr~ýõ×?þøãõë×µ´´F½råJ}}ýƒE‹=þ|îܹ3fÌP.˜cÇŽ]¼xQKK«oß¾»wï‰Dk×®uwwgß‹‹Û°aCEEEbb¢»»{pp°ŽŽŽÒ~øðáK—.éêêz{{/]º4++kΜ9Ó¦M[½zõíÛ·uuu'NœøÁ,_¾<''gÔ¨QS§NUº,‰ï¾ûîîÝ»B¡ðÈ‘#DtðàÁƒÚÚÚjiiÕ½ˆÇ¯X±‚Ïçggg;99…‡‡wïÞýСCUÏ#É:¹D”={öìÇ»¸¸¨ên™g¹º“Å~¤îW:/j“““sõêÕ3fðx¼]»vEEE ‚-[¶DFF8p ??ñâÅ...ß|óÍúõëõôô|||ÁÖ­[ë5ª¼¼¼€€€·oߊD¢… öèÑ# ..ŽÏçO:ÕÆÆfÕªUùùù^^^£Fª´¥Êƒa«ÅÈÈhÆŒþþþDtáÂ…7ÖßMJDŠÿ‰SârÕ”¨¨¨%K–°ÁPvv6SìD Šlœšš:räȺБ¦CyØ›49ñqrâcu–ËþðneeU)uþÑ`›ùâ‹/d¾[^^îìì¼qãF†a"""š5k–•••——çïïÏãñ¾ù曢¢"??¿V­ZùúúæææîÙ³‡ˆbcc• &??ßßß_WWwõêÕb±øàÁƒzzz©©©ì»mÛ¶]»v-Ã0¹¹¹aaa5îMg‘‘!³¬3f~ùå—ÙÙÙ?üðÅÄÄTTT¸»»øá‡ìf¿üòˤI“Äb±rGTInnîÒ¥KõôôØeWWW±X,‹?ÿüsÅ÷Ãη•œœ\i½H$jݺuhh(Ã0ÑÑÑ\.÷·ß~»}û¶Ìó(s¥X,öðð6lXIIÉíÛ·ù|¾£££JŽ]A2Ïru'‹a˜ZÜ»wïªë¥Ï kûöí êr•——Q›6mFݧOŸ¦M›®\¹²¼¼œáÓO?eƒ …7nÜ ¢_ý•ýàœ9sºuë&ç¯_¿&¢'OžÔ%B±XÜ«W¯… 2 sïÞ=÷òåK‘HÔµk×qãÆ±ÛìÝ»×××·¢¢¢ê–u)Z¦ÜÜÜ©S§ÚÙÙÍœ9óðáÃìÖå&=r䈥¥¥ümÿWÛËU#‚ƒƒ gÏž- F­‚***Ð  áÐ××'"±X,óÝ .qâÄÙ³g#""Μ9Ó§OŸ·oß +++v}}ývíÚ©-iW®\¹qㆯ¯/9;;ìÝ»WKKkÞ¼y§NbÓÃ_¾|yÍš5ÿ÷ÿWuK•Ç#¬­­“““‡ 6nܸ/^888ÔëMJDŠÿ‰«íåª)………+V¬£î&---u–r8::QFFF¥õÏŸ?g¿é²S8s8œæÍ›?~ü˜ÝÀÌÌLOOˆØO­Zµ’,‹D¢êŠkÚ´)‡Ãáp8Íš5«n333###"âr¹’y¦Ö®]›ššêíí={öì‚‚‚êš-¤Kqqq‘ø¦¦¦&&&DÔ¤I>ŸÏþH;xðàŽ;nß¾=//ïÍ›7vvvòw¢œV­ZÍŸ?åÊ•nnn*ù’laaáââò믿ÑÕ«WuuuÙa2ϣ̕ DÔ¶m[v‡õtìrÈ9Ë2O–ÆVš@ øàƒBBB¢¢¢¶lÙRé]öèÔ/66–ˆÖ¬Yããã3qâDöÑzܸqM›6ݽ{wVV‡ÃiÑ¢Eu[ÖHr{*>¢––V¿~ý¸\nëÖ­Ù5j¸IùWÛËUSLLL¤ƒÑVá®=zôóÏ?'%% ‚qãÆ 2¤ÒÅÅÅò]€:5oÞ|РA·nÝ*--e¿ï²Ž;foooaaADEEEºººDTXXزeKvƒJ_÷ìé)™‚ŠùgÈCU Ãp8†arrrZ´hADÅÅÅNNN>>>aaa'""BN)ŒÔx ùñÈ:ÎápæÎ;wîÜÖ­[Oš4Iþ”ß·oßÅ‹_½z5,,lÊ”)£Fª{C€ŸŸß† „B¡H$ºqㆥ¥%É<2W“T¯5Ï !ÿ,Ë>¾¼¼üÍ›7ßÿ}TTT¥mŠŠŠÅ (ª¢édãp8Û·o/))Ù´i“dåÇÿý÷!C† 6¬iӦׯ_'¢çÏŸ§§§úé§DÄŽ`g7fªþ_&öñža˜ÜÜÜê¶ …¿ýöÅÄÄdee=šˆ®^½úçŸ:”ÃáÜ¿ÿÅ‹r&,ÈËËcK¹ÿ¾œc—> †a¤_Nš4‰Ï燆†Ž1BΔÀ–Â0Lzzz@@€žžž§§çáÇÙª:zðàÁîÝ»¯]»¸fÍgggv½Ìó(s¥›››©©)[ÿùùù¿ÿþ{QQQÝSœ³\ÝÉRUÀ’óRõe¥·ÂÃÃÙâ”À¦Ø”ÎíÿÓO?ikk7ŽˆZµjõâÅ öAúäÉ“D$933³ììl":{ö¬‚OÚÊ4h¾¾¾dùóçÏoÞ¼™]ž1cÆëׯ>ܯ_?ù[Ê—ŸŸÏÞž’†ùÄbq¥'XVýݤ¤ØŸ8%.W¨ŒÊÒΚ5Ëó¿æÍ›WiãÓ§OÖ¥8•£÷8 +%%¥_¿~žžžË–-›0a¸qã$Iø"""œƒ‚‚zöìÉæ™;~ü8;Pyúôé·nÝòðð "OOÏ›7o²ó–wíÚ5""B¹H6lØÐ¼ysooïÉ“'[ZZ®ZµŠ]Ÿ™™icccoo?iùVª IDATyòäY³f-\¸ÐÈÈhÓ¦Mò÷&'àÑ£Gííí‰hÆŒoÞ¼ñññ!"''§sçα,]º”Mô¥B§OŸîܹ3y{{‡‡‡»ºº~òÉ'!!!^^^›7oV|?Õ¥LKKc;ö³Œƒ‚‚Ø·ªžÇêV^¸pÁÄÄäÿûßàÁƒÙ:f̆a$}°ëÈÆÆ¦ºãªî,Ë?YÕ\Uué¥ÏKVVVxxxÇŽ‰È××7,,L²œ““Ã0Œžžž¤1Kq{÷îíÖ­ >¼oß¾NNNüñÿýßÿ±¤¦¦ÚØØtéÒ¥wïÞÛ¶m#¢víÚ:tˆa˜;wîèêêöë×oĈ2÷¯’t€ Ü8qÂÄÄdøðáÇ÷öö...–¼5a„o¿ýV‘-Uå矶³³ãr¹þþþUÓ *q“*’PÁ?qÊ]®j&3Nvv6ÛÿD9!!!OŸ>­Ô"ÅãñŽ?.½fÛ¶mºººJÏPØ>ç)IñDÔÖ¾£ÚÊ0`À•+W¬¬¬ž?. Õ¦‹¬ '''·jÕªÒ@ýòòò¤¤$5tçܸqã–-[ÒÒÒRRRLLL¤#)--MHH°²²b‡—””Ô8Â499ÙÞÞ>##CÒW¹F ð§Àßß?88X%?ÎËTZZÊ.$%%™››K?º×(##£eË–ÉÉÉ’1ð¬‡~õÕW‹/655-//¿téÒ† Ø'Cªæ<Ê\YRRòìÙ3{{û’’’ŠŠ >Ÿ_—ùkE‰³L rþüùÈÈȺD( ÇŽ{æÌmmU©f‰D¢¤¤$+++}}ýœœ>ŸÏãñØ.èyyy/_¾tpp¨n´È›7oÌÌÌž}šJT…Síïï¯é@Þkú&mTÖ|åééyýúu##£ÒÒRKKË &HOË)‰öïß?räH6ã(@%cÇŽe§ÝÖ uëÖ­[·N³1(ÍÆÆæÐ¡CšŽâ]Æår?ùäMGñ¾kÔ7iC ²&GGÇáÇGFFnÙ²¥ÒP†a¶mÛ¦¥¥Å&tõSå –iÓ¦q¹Ü¹sçŽ5ÊÝݽE‹b±8!!áðáï_¿^·n]=™€©ò™œÃáL:µGááá§Nbç½äóù}ûö]¾|¹ Ë€ZQýÏò:uêÔ©“H$b'011©nâ P›ú꙯­­]«ÙM ^ÕïàüÜÜܰ°°¸¸8çáá1ḟS¯%€LõÛ°fÍ}}ýùóççææ†††2 ãååU¯%€LõØ———°eË–¶mÛQZZZTTš4‚[»Ö××700øóÏ?‰ˆa˜””SSÓú+ä¨Ç^ºººË–-[µjÕÅ‹ uttV¯^]Å€õØ @$;vÌÆÆæ£>Ÿ_…€LõØ //¯Y³fìó?YZZŠD"¡PX%@uê± ÀÑÑ1==ýÁƒDÄ0Ìùóç[´hŒ€Qlmm}}}W¯^ݲeËÂÂB.—XÅ€õØ@D#FŒðððxöìdzµµÕÕÕ­×â :õ8€%œðü*±sçΉ'j:ŠÆ§Þ›TëÏ?ÿ|øð¡¦£h|êw ¨H$ÊÈȰ°°ÐÑÑQg¡™™™FFF-[¶422R[Ѭ‚‚‚´´4‘HÔ©S'.·^~ÁÒø1‚‚Ôp1¼ÛÐÐàp8M‡ðîhÑ¢…¦C¨vvvš¡Qz·o®:h:uSℾÛ×@ÐrÐà0ÿuèСæÍ›ÇÄÄHÖlß¾ˆx<ÞÖ­[Ù5b±¸´´”QóçÏóù|"š0a»¦¸¸xàÀl„cÇŽ‰Dìú¢¢¢‡ŠÅb–^PPн{w"jÒ¤IHHHqq1Ã0ݺu{ýúµ KÑì1jPã:õ\ Ðè,\¸°S§NšŽB¶†|‹¡  A{ùòåôéÓ7lØÐ­[7ÉÊY³fMŸ>½¤¤dΜ9gÏž%¢#F´hÑâùóçª*×ÏÏO(Q×®]Ù5<oÆ ìrxxøéÓ§Ùå¾}ûvîÜyß¾}ª*šˆ¶mÛvûöí#F$$$|õÕW<oß¾}©©©&&&*,E³ÇXD"Ñ«W¯bbb ªnиG=€âõ-†&€-((¨  àÀ………’õóæÍc–-[FDÏž=ËÉÉÉÍÍUyOž<‘,;88H–†QyY‡ :uê”……EAAŸŸŸ¯¯ïøñã멯Fޱ>ÄÇÇñÅ›6m:}úô¨Q£š4iâîî&‹5’Ô|1Èñ.ÜbÙÙÙuéELDªé” vDÄ0LrâãäÄÇê,·ÿþDdeeU)úï@ÉÔDôÙgŸI¿Õºukvý«W¯òòò’““UÞ¹sçØNòÚÚÚ7oÞdWÞ¾}›-q̘1åååìÊ¢¢¢ØØXÕvy555ŒŒ,//ß½{·……µk×.33S…E0š>F•«Õ¸††8ÆÆÆ÷ï߯ï‹õx7n1ôhÐ%ËÒoÙÚÚ² ¯^½jÒ¤IÛ¶mUXî°a⣣ýüüø|¾‡‡‡¯¯ïúõë§M›Ö«W¯ýû÷;vL[ûïÄÒ|>¿sçΪýIV$ùúúvéÒÅÏÏËåݺuËÜÜ\…E¦Qå×Ð(G¢¸¸ØÛÛ»¾/€½·';;ÛØØXéχ„„°Ý‡Ã0LJR<µµï¨¶r påÊ+++éü ó+#¼Ð  Á‘î´™ššÚ¿îÝ»§¤¤H¿emmMD\.·¬¬,??¿ê@€M›6mÞ¼¹¾»•Ö‡Ž;~õÕWšŽ¢‘Q|\Cãbaa!™ù¢hÈùÞßêðnÜbÚúw bmm}ùòe±XÌåþçÇ›¤¤$¶ûÀàÁƒuttºvíúøñãtéÒE²Í½{÷Э Á*((HKK‰D:uªtr•ÃŽkغuë‘#G<<<&MšäààpðàÁ^½zM›6mòäÉ*)å} ‰233322ŒŒŒZ¶liddTiƒ¾}ûFGGïÝ»×××W…åªü’Õz7n144U¿Y†……± ~~~DÔ¦M›ŒŒŒ¦M›Jo£££Ó(¾’¾WŠŠŠöíÛ·mÛ¶¤¤$++«^½zeeeEDD¨¤±¦cÇŽ»víÚ±cÇ_ýõ×_Θ1£I“&ußó{">>~ûöíÇŸ2e ŸÏúôiŸ>}>ÿüóú{À«×KTë¸ÅêÚФIºd€ÚJKKÛ¼y3 8päÈ‘DtæÌ™òòr]]]éÍÐÐÐ8ðöíÛMš4 ™3gÇûàƒ²³³MMMUUŠŽŽNëÖ­%F€‚.\¸àåå% 'L˜ðí·ßÑÒ¥K‡~éÒ¥ÈÈÈsçÎ9rDKK‹ˆ®^½šœœìääT÷BÕsI€j5ê[ éà}‡t€ðž@«0@ƒ#'“SEEÅÔ©S‰ÈÔÔôáÇòÓ>Í›7oÁ‚ªL$¥.ïj:@GGÇ   6\~~þ´iÓˆhæÌ™šŽ«AS[:@KKKöôññ‘¬,..–ܘááá*/—„ÒÔŸðÝ€&€F£°°pôèÑ{öìéСCdddýutt* ÍJIIéÝ»wEEÅ?üЮ];öÿ+W®Ôt\@D´k×.6ßûÏ?ÿ|ëÖ-våÇÙ…1cưƒnTèÎ;ÉÉÉý’ …=bFÓ@ÍÐÐ8¤¥¥õîÝûôéÓ¾¾¾wîÜqpp¨ñ#::::::?þé§ŸÔ$È'‰æÏŸß¥K???.—tëÖ-sssMÇDÿä{÷óóãóù¾¾¾ëׯŸ6mZ¯^½öïßìØ1mm'SOKK+//=zt¿$D"Ñ«W¯bbb ªnзoßÎ;ïÛ·O ÁÄÇdz} ÔPÜ»34¿üòËÌ™3›7oþÇôéÓGÁOéèèìÛ·/222555==ýÆݺu«×8A>===//¯?þ¸uëÖÍš5CꇆFýùÞµ´´‚‚‚ÊËËæ%¡‘)dª:oÂÍ›7W*þM Ú«W¯fÍšõêÕ«ÐÐÐ#FÔê;·ŽŽ‡Ã¹téÒÅ‹‡ºoß>4hœ¥¥e—.]4È£æ|ï;ª/ i­hdŠ™dΛàèèXO%¾Ã0#¼ï0#¼'  ÁQUæç-[¶Lž<™a˜Y³f5kÖ,%%EU{®oïêŒÐtŒÚfP¿ððpMGQ-L‘ æMP!4¼³ttt wíÚuæÌ™‹/ÚÚÚj:"h4Ô?EBu„Bá;0oB\ï,+W®äççÇÄĘ™™i:hLØ)¶nÝzäÈI“&988CÀ;«cÇŽƒ :pàÇÓt,Ðø¨Š™öíÛ÷äÉ“;oBã‚&€wV¯^½zõê¥é( qSó Uq8œ;oB£ƒ&Íxóæ •••ëëë³+AAA~ã"¢øøøuëÖi: Õ›|¸ãݺuëÞ½{íÛ·0`€¶6þu_’þ•™™iooïèèȾ422Òl< ˆ¨¨¨7n :”Çã?žˆ>úè#MС à_999=zôh×®¦E‰Åâk×®9ÒÁÁˆFŒ¯é (4üëíÛ·DtóæM.—kgggjjªéˆ ¥¥¥öööb±ØÚÚÚÚÚZÓA4Phø[qqqqqñ¥K—lmmóóó/]º4vìXö7%h°Þ¾}Ëãñ~ùå—§OŸ‘‰‰É¸qãІ šþÆ0ÌÀ]\\ø|>]¹råܹsíÛ·çp8š ªU^^. ù|þ’%K†9yòä‰'¦OŸ®é¸"L ø7>Ÿß»woöùŸˆºtéRXX˜ŸŸ¯Ù¨@>]]].—ûÑGiiiikk{xxdddi:.€†MKOOôè‘ä¥X,&"§¹ˆàý é%"’ôØÒÒÒ’~ ÒÐð7‘HtòäÉ´´4"‹Åׯ_oÛ¶­žžž¦ã€÷źuë4B£Ô¼yó¦M›^¿~ˆ†¹qㆥ¥¥¤KHC.€¿YYY}øá‡û÷ï733+,,422?~¼¦ƒ€p8œ‘#G9r$66¶¢¢B[[{„ š  BÀ¿èêêš••ehhؼys.]$kkë¹s禥¥éééµhÑB[ÿ´ȆïIÿ!¦£€ÚÑÓÓ³³³Ót ';;›a˜¬¬,å>?kÖ¬+W®¨6&5c&%)žˆÚÚwÔt,õE›ˆÞ¾}›’’¢Üç¯\¹¬ÒÀÞ/‡aMGѸ…„„¢A ˜EÞ*ðâÅ‹ß~ûíþýûoÞ¼‹Å†††æææíÛ·wssëܹ³jËÅ©,ãX,þñÇçÌ™SRR2wîÜŸþù§Ÿ~Z°`A“&MNŸ>½téÒ™3g>zôHUŨ_bb¢»»»»»{bb¢¦Ã¨•5¬[·îÌ™3³gÏnß¾½žžžAçΗ/_>iÒ$"JKK[ºté±cÇTU"€šM:522R(FFFN:UÓáÔŽì))) ´´ôÞ½{ÚÚÚvvvvvvr†ÉeeeÅÅÅ}ùå—Ý»w¯úîøñãŸ?É0ÌŒŒŒ† BDÑÑÑß}÷Ã0³fÍruuUÕ!Ô“û÷ïË\hd7$&&FEEYXXxxxˆÅâÇŸ9sF[[»M›6666•Fõëëë¿~ýÚÞÞ~ðàÁÕóùçŸß¾}»¬¬Œˆöïßß³gϦM›îر#''‡ˆvìØ¦Êè...üñ‡dY³ÁÔVµéûôé3pà@v¹S§NDTVVö矞>}ºR€µµ5Ã0ååå&L066öòòêׯ_¥½™˜˜ôìÙóÚµkD$ /]º4vìX €bž?~âĉ«W¯>yò$33S(êëë7oÞÜÁÁ¡oß¾cÇŽµ±±‘ùÁ={öL›6íîݻݺuûá‡Ô5@]U›  eË–•Öèêê:88hkWn5033#¢ÔÔÔ¢¢¢´´´M›6±ú•ôèÑC²CD³fÍ211166ž5k–Ò ¸/^Œ?ÞÖÖvÁ‚ÏŸ??räÈëׯ?~Òt(ð^âp8 Ãh:ŠÆ-$$$00PN5…BÉˬ¬,v,›ôšæÍ›K^òùü¢¢¢ú𨗗—·}ûöeË–É|÷ðáÓ&M‹Å½{÷F~%P\µMÆÆÆÓ§O—¼¬¨¨HLLŒ‹‹ëÚµk¥-Ÿ>}Ú³gOé¯\&L¨ºÃÜÜ\é+²ªÝ}H{ÒùËT.¢¯çk:¨7]»v½qã†äåÙ³g}}}¥7022ª´½š"ø/†afΜÉN¢\UjjªŸŸû«Ì¼yóFŒ¡«««Þ ±ª6€£££ôK--­:Œ9R2M€Ä›7olllÚ·o¯­­mnn>{öl¶k@%YYY’å6mÚQtt´Ï”)S¢££ëtJ)-££gè£I4Ü—N]¤r‘úCµÚ±cG³fÍ$/ããã¥7xôè‘d¹Y³f;vìP_pR~úé§·oßNœ8Qæ»K—.-,,d— >¬ÆÐ q“— @qÁÁÁò·¹ÿ¾d™]¹cÇŽœœv!,,L%‘(âe……Ó¡Sô6ï?ëÈ¥“Ú¢usvv¾wïÞ‚ N:%‹³²²\]]çÎ;yòd[[Û'Ož|ñÅDÄápF޹iÓ&¶Á@Í.^¼¸hÑ¢˜˜™Ãòòò~ùå"244ܹs§¶¶ö–-[¦L™¢ö0 QRM€"îܹÃ.èèèôêÕ«¶÷ññiÕªÕš5kêCäúñ(]Ф ©„ú<1˜¼ÇPWÇê? ï›'N<{ö,<<üÚµkOž<ÙºukHHˆ¾¾¾¹¹y‡Ö­[7fÌéYlÔéÚµk£GÞ·oŸ•••Ì ¢¢¢JJJ¸\î±cdž ’pçÎÌÌLé4Õ‘Ý`ii)TXÌÇSSSÙå¡C‡²ƒ-gÍšõÝwß1 3kÖ¬÷Íãñ”+½PHÇÏѾc”œúŸõíliòhòò¤&†Êí¥6mÚ,Z´hÑ¢Ešà_B¡påÊ•›6mš:uê¸qãªÛìÅ‹DäïïÏf 022bæÒ¥KÕ&»  sçΪ-æèÑ£ìÇóòòb—]]]÷ï߯ڂ*IN¥}Çèø9*ü74éêÒÐ~ä=†z¸ÔkáòDGGÿõ×_yyy=:|øpZZZ÷îÝ7oÞ,ç#EEEgÞ¼yìË¿þú‹ˆRRRÔ.4~êpùò凲˾¾¾ªí_ “XL—®ÓG)òIOeÓŠ&¦ #ȸiõP‹?üP$I¿­¥¥5þü>}úp8œ²²²ýû÷Ÿ={öÀ®®®6665¢âÈ‘#Gþ?{÷×ÔÕ>üIB„°÷FDD@DVÈO‹ZµnQ@Q«P**Ò­ 7® *Z+8ÑÖª8_‹¯»ŽŠBAE@=’0²îïÛ¦¼!‹ú|ÿ𓜻ž{îCÌ=9÷œAøøøkiiÉ1üæÐé0q4L OŸÃÁðëàóŠKaë>Ø‘£‡AÀdÔGÁqýààà›7oÀÍ›7ƒƒƒÿûßÿ*3„Bu~~~ ,  øá‡ºwïÞÊÊt:J¥¶²B¡OÊ?M¿ÿþ;xyy 2„,QWWŸ7o^ffæëׯoݺõÁ&€wïÞmß¾=++«k×®ÁÁÁ®®®r »MÜz@Ü*ø>’Ã)PX Á¹kpî8ÚCÀ$˜<X­Í¼#/þùg³¯B!„ ÍÃ,_¾|ùòå\탣)}|²©,kkke‡€ªû§ €œW¶oß¾S(”=z¼~ýº´´´•½qâĉ'N}ýõׯ “Çÿ b±øòåËW¯^-((ÐÕÕ 0`À·2ЃÅA°0.§ÁÁpçÑ_å/_Cô&X¿&}“Á©«Ìãm‡‡‡ä—…!„B*¯¥áãââ¾þúk°µµ}øð!9 `+"""¨Tê–-[dˆTˆP+x<Þ¡C‡vîÜ™ýOÇ0__߀€—&k×ÕÕ€®®nK»366ÎÉɹ}ûvXXX||üðáÃåÔ6\TTôàÁƒÀÀÀnݺnذœn -hTø|8¤$Àï'aö—ÀÔü«œW ‡S`øT˜¿]ðãBzûöí¶mÛÆ×­[7555mmm‡1cÆlÙ²¥•ð8àííÍb±¼½½8ðqGEuréééß}÷¯¯¯µµ5‹ÅÒÔÔlÒüŠBÍ:þ|DDùzäÈ‘¼ÿ ÉTmmí³gÏpâÔé|â©ËårGŒ±xñââââØØØšF5iÒ$“Æk¿xñâÎ; eðàÁÍ²ÒÖÖÖÂÂbçÎÞÞÞr}ØLMM-<<ÜÕÕ5((Äbñ™3g>v'Ýí!6 _„Õ`ר£Ð½Çº·yÜü¼¼©S§ÚÛÛóÍ7oß¾=~üxiiifffXXXaaá… "##»ví:yòä·oßJoÞ­[·´´4‡“––Ö­[·= „P'•žž>|øpww÷µk×^½zÕÉÉéôéÓ¥¥¥mù*ú”½yófÖ¬YAÐh´­[·^¹r¥-_gét:NÏÌÌüù石²²'꼄Bá»wï>|˜••Åáp¤W:t¨››Û¡C‡B­èD©ËápØlöÓ§OÉñ\cçÎ÷ïß7n\VVÖòåË›¿c?{öìúõë,XIÄ‚ ›]S__ÿáÇŠóÏØØ˜ÅbA£‡|òóóÛ·+Ì›·Ï@ÒN>$½ÚØ0”žžîááqòäIòÊíÛ·¯OŸ> £{÷îk×®}ðàÙ’"‹SRR<<<ÒÓÓÛ'Bèßä?ÿù——9ðŠ‹‹ËÕ«W¯^½úÿ÷,köìÙõõõÊ!¤º¦L™RUU»wïþúë¯ÚrKO§Ó>¼xñâU«VõêÕëÑ£GÜ}‚Ølö‚ ÌÌ̶mÛvöìÙñãÇëèè 2äðáʼQAècu–Ôåñx»wïvttÔÑÑ=ztll¬¯¯¯Âz%=ztݺu¿þú«™™‡ÃòòòìììsÿËÓÓS²³³óöíÛϵ ¥Þ!„BA9/3s^f 4|øp°±±i\(‰§±;w’åsæÌ!KfΜ¹cÇŽbݺuvvv"‘(55-ZÔ‘€cbbºuëÖ‘= táÂ&“ Ó¦M#Kêêê|||È”›4i’P($Ëy<^zzºX,V^°-"ØÎÏÏWv Hq:Kêr8œþýû€ŽŽNlll]]A}úô)--UÀÑKJJètúû÷ïÁ¾}ûÌÌÌ(ååå/^¼hü¿`qq1Ç+--½}ûvZZFûöÛoûôif½ßÿ}Û¶m+V¬Ø°aƒìÿ7ndìØ±–––äx¶7nÜ GµùöÛoÉÚ”‰Ú:¨¨+󯩥¥U[[+y[RRbllÜx…’’SSSÉ[&“Éãñd'B¨3Ú²eKdd¤——×áÇ»výgÒ7oÞÌž=ûÖ­[qqqaaaJŒð_ 666**ŠøTŸôCA¡P‚x•Í€®ÝœvÜ#F\¿~ÝÆÆ¦ñcƒ8Þ>B!ùiþASSS{{ûþýûGDDLžû쳟~úI$);º¶²´´$s)00PRHŽNJIIQbxm„½ZñïHTi%u]\\Ö­[GöA¨©©™7o,\¸P1G'çp9þü“'OÊËËÅbñ‡Gï1bùçÔ¸6•‚¬µíÛ·Ïš5+44TY‘ìÞ½[___ò6**ŠÍf7^áÙ³g’×úúú»wïV\p!•Äf³ãââÔÔþšŠõ÷ß÷ððˆˆˆàñxÚÚÚGŽQÌ *¡ÎèÂ… ðÙgŸy{{óùü/¾øbùòåoÞ¼!—r8œC‡õêÕë?þÞ–N§s¹Ü„„„ß~ûíòåËööö ý_-55ÕÓÓ3>>~äÈ‘[·n]³fÍŸþéããsóæÍÀÀÀ©S§ŠD"eÇØ& doꤤ¤»wï’…OŸ>%_|ùå—_|ñ…Ò‚Cö¯ITi%u³²²(‰öïßïèèHþ£Èzõêe``@¡Pþjx÷îÝäÉ“gΜIHõŸ”L¨ô®ì ;vìxóæÍ¦M›¦L™¢Änrîîî?ž8q"9BII‰§§gttô‹/ø|~zzú‚ €B¡Œ?þÑ£GîîîÊ !¤",,,’““y<Þ•+W|}}‡Nþ5räÈ;wî 2DÙ"„TùKCdd$ÄÇÇ_¼xFŽéêêÚ¿¨¨¨˜9s¦ôÀ¢t:ýúõë§NzøðaãÁž:¯ý­0!!!ä“¡’þž›7o&_§¤¤œ={ViÁ} ??¿„„„0™Looï9sælÚ´iÞ¼y^^^?ýôÓÉ“'%íרí0Q ³¤®X,^±bE¯^½BBB¨TêºuëîÞ½Ûd&>Eú«RLLLÄbqMMÍÛ·oíìì¯ANn¯®®®§§§ððþGEE…H$Ú¹s§†††r#;;»Ó§O¿yó&%%åÆÏŸ?ß±cGll¬¦¦¦‰‰I=6nÜøå—_6~â!ô);xð`XXXDD•JÕ××÷ññ8pàäÉ“{öì©ìÐBª®¦¦¼½½àÀ4-55Õ××7666??÷îÝñññK–,ÉÉÉÙºuktttãmGŽyäÈUøúÔAl6{×®]§N `2™)))/^¼øì³ÏæÎ;kÖ,¹NMݺçÏŸK^“]¬IÒ?­©,ggç„„„Ý»w¿ÿþýû÷,+44TGGGÙquJ˜¨ŠÔ)RWMMmúôéÆ ³¶¶Ö××Wú€/5ÐéôÞ½{ß¿?)))::Z–@ 8|ø0ôíÛW¹(666îîî䃪£K—.‘‘‘d«::ZWW7''çàÁƒ›7oþùçŸ‹ŠŠlmmׯ_ßìý?B!„’‡Æã9ïÚµËÌÌŒ9<<ÜÅÅE2ˆ·¥¥%›Í&_>œN§Ëp|o.—»k×®nݺ€ÍôéÓííí]\\dµÿ¢ÊCóùü¼¼¼?þøƒÍfWWW++ŒOM“ü=z4(7*LT$M]]ýÔ©SÊ::9#À‹/$%ÿó,JŸ>}<5}úô &¬_¿~×®]’YgB!„‚ùûûóx¼ëׯ@tt4Ç[ºt©P(€îÝ»“_ï@$¹¸¸ÈêIc.—;bĈŋÇÆÆfee=zT[[{ÿþý2ÙÿÇRå¡¿ÉNÈžžž=zôPµ‡ÿ­¤óóüùóNNN C¹a¢"Õ§†††=zô}ÔS gΜ€ØØØØØX™‡B},ìDþ}ôôô¾ûsç>~üØÈÈè÷ߟ5kÖÉ“'g̘ѭ[·œœ(//ðàÁúõëeuÐ;wÞ¿ܸq fffpèС‚‚‚Èê…ú{ÇŽÇ÷ööö÷÷wrrJNNöòòš7ožrGYCŠ×l~–––*70LT¤ú(åååÊ!„BHiTp,âGµ‹ÅãÇçr¹ÉÉÉæææ’ò­[·fggÿøã™™™÷ïß§Óé2‰ÍÕÕuÆŒQQQ …Ãá|óÍ7û÷ï_¸páž={d²ÿv’¡¿---ñÇÌO“Êæ§&*’`0ÉÉÉ“&MRÊѳ³³_¼xѽ{w²[¡B!„T•JMII±¶¶îÑ£ÇöíÛÙl¶H$€®]»Þ½{÷óÏ?g³Ù—.]’Õý?ÔÖÖFEE‰D¢ýû÷;::’ÿÆÄÄÈjÿ톙¨p~J`¢"•…½B!ô©SÁ^!„<`/„B!•ÓúÏ"‘èýû÷•••¹¹¹–––òDZ,gff>yò¤¼¼œœŒ@~lll’““åzˆOÁöíÛûöí«ì(D1ù¹wï^WWW9íü“•àìì¬ì(J13Ì;7((Hº\zF5eÿ‡B!„Ú¤¸¸X XYYQ©TSSS‰Dµµµò8…BqvV\‡„> æ'B톽B!„TX,633³¶¶—”S©Trv@„B¨-° !„BHÕ¥¤¤$&&’¯wìØñüùsòuEE‹ÅR^\!„:l@!„Ruyyyß–””/?~ܧOeD„B¨SÂ&„B!U×»woÉë^½z 0€|ýÓO?1BIA!„Ru666qqqvvv’l@!„RuŸ}ö™»»»µµõO?ýtûömƒGŽÉÊÊ Uvt!„Z£ÄÙ^ FXXù¿ g@!„RuêêêÉÉÉ~~~äóùzzz—.]º~ýú™3g444”B¡%%%y{{+;Š`B!„P'àììüôéÓ={ö\¸pA$ 4hÓ¦M†††ßó½{÷^¼xÑ좀€%þx…>M’p„ êêê'Nœ”8;;÷ë×O¡}B6nÜXSSÃb±¢¢¢>Íd¢q2;ÖÐÐpòäÉäÛ‡fdd¯'Nœ¨£££˜’’’²²²ÔÔÔbbb@!„ê,´µµW¬Xñ믿ž;w.**J&÷ÿÀd2KJJ‚‚‚víÚ¥£££¥¥UYYÔÐÐ “C e9zô¨²ChIÆÅÅijjÒh4 …¢©©¹mÛ¶   òòrMM͎쿳ԃrùúú>}ú499ù“ @&˜Lfyyù‚ ‚‚‚~þùçÆ‹–/_Þ8ÉR¿~ý^½zuèÐ!ò-6 „B}ÒÜÜÜ–,Y ˜8qâäÉ“¿þúë7nèêêÖÔÔ(;:Ô~|>ï޽ʎ¢M$I8xðà©S§²X, ©S§4ÂÂÂzöìÙîw¢zP®Þ½{»¸¸|ÊÈ„››[XXXïÞ½­¬¬’’’$å¹¹¹úúúðw’kii),$GGG777É[l@!„BXUZZº{÷nSSÓÑ£Gc@§–˜˜XWW§ì(”¯³ÔCmm­X,VvH6¨TêÌ™3?~Ìf³É’“'ON™2E¹Q‘p,„B!ôÓ§O?|øV¯^mbbRVV¶bÅŠ††>Ÿ¿zõj''§„„„{÷îikk‡††.Z´RSS;ØO»Y¼uëF›8qbLLŒ¦¦fll¬––VddäÛ·oÃÃÃCCC׬Ysÿþ}uuõ™3göíÛ÷»ï¾«¨¨?~|pp°lƒ9yòäåË—i4ÚСC÷íÛ' ׯ_?dÈriFFÆæÍ›E"ÑË—/‡ ²aÃ:žœœœœœÌb±ìííi4ÚºuëdRë~øá‡M›61ŒÀÀ@]]Ý;v´ç±cÇ®]»¦®®>{öìèèè’’’°°°yóæ@YYYdddmmm]]Ýòå˽¼¼ ººzÅŠ•••B¡péÒ¥’)*åL<]]ݸ¸¸›7o9r¤¦¦fÙ²e­œB³õÐqM.®††F³y¨¥¥ÕR`™™ùý÷ß“ýÆ{öì™’’Ò¿ÿ>³ð±—ÊËË—,Y’™™éáá¡ÈŸ¦%Z  Ùsi_@sÉ,ïLö÷÷߸qcRRÒúõëàâÅ‹¿üò‹d©Â>»»wïÞÊ•+¡¼¼œ@!„ú„A9/3s^f*ò¸Ã‡›&Áñ(ù©½½}ÿþý €,îîî[¶l!âêÕ«úúú%%%UUUÁÁÁ .>ž ˆP©ÔK—.Ý¿¿=u×ÈG]b‚ Äb±···ŸŸ_}}ýýû÷™L&YÃò“àìì,yÛJÍžKûÒ@:™å—ÉA///‚ ÜÝÝmllD"ÑóçÏgÏžM&ù¢E‹‚ùg×ܹsƒ‚‚ZZºa˵dÉ’òòr|!„BŒ=:--í«¯¾’”¤¦¦>yòdêÔ©0bĈ×ÕÕµµµÍÉÉñóó›2eJ^^ž“““<âÑÑѱ³³‰DË–-c2™ãÆ+((ÐÕÕ4i°Ùl*•ºråÊ;wîãl§¦¦ÆÄÄÈcmmm;;;¡PF¡P¦M›¦©©IÞcÀ˜1cºté ÃØØ877—Ãá°Ù츸¸—/_~ûí·¾¾¾2©¤ãmmm[[[.—c``0eÊ …’‘‘qñâÅôôô… @Ïž=g̘ׯ_¿}ûöœ9sÀÝÝ]KK+11Q†N˜0!­‘qãÆIéêêÚØØ¯555%‹Z:Ö˜ôÅm)[ ¬¤¤$??¿wïÞЫW/*•ZQQÑñY>êÀ³gÏnܸ1g΃ѯ_?rðEj%€fÏ¥}i ÌòÎdÒ¬Y³òòònÞ¼yâÄ òƒTBaŸ]\.÷ûï¿700À&„B!ô ððpÉ[ò)V P(¦¦¦™™™ä"6lØ0*•jmm-׌ èêꀕ••äµP(___ggç]»vUWW—••988È5mmm R©fff/_¾$Ëׯ_Ÿ››;{öì%K–p8±XleeãääÔ¯_¿öþ­§§G¡P(ŠžžžLâ—ŽS²ÈÈȈœcBGG‡Éd ò΄¼¾K–,!§KOO€µk×Μ9ÓÉÉI¶7-T*U­*µÅ»@ФDúdXcÍ^ÜVò°ÙÀÌÌÌ<<<.^¼iiiêêê’çJ:â£.1dee@×®]ÉuäúçÓ¬Vhå\$Ú˜ÒÉ,×L&x€éÓ§S©Ô#GŽ\¾|ÙÇǧÉjŠüìCCC²fp,„B!ô{{{ÉÛfffÀãñÔÕÕ€ËåZXX‹LLLäñü¿´&ßË¥ï )Jxxxxx¸µµµ¿¿¿\ƒáp8AP(‚ ***ÌÍÍ ®®®gÏž‡¦P(W¯^6›=tèÐeË–¥¥¥>|8 `üøñÛ@4z0¤ÑR©TrÃôôôÚÚZwwwé8%¤'G//--%oœN'g2ߺu+™ðwCŒÂˆD"òENNN“E-=ÇÞ¤ØÁZº¸-åaK…„„lÞ¼¹¶¶V(Þ¾}ÛÒÒ²ƒ5›Š­‡a``’»k‡ÓÁ>VK´~.›ÒÉ,×L®««#gT577÷ññ9r䈿¿¿ººz}}}ãÕùÙ,‹|½B!„>u|>_ò/…B¡Óéd¹ŸŸŸžžÞ­[·àíÛ·………Ó§O±X,ù6)WäãÖ’×Íþ þþþL&3>>¾q¿qy¨­­½té<|ø°¤¤dâĉ––öúõëÏ?ÿœB¡üùçŸyyy\.·°°pÅŠ c̘1ÇŽ#ï7>Vuu5ùsbuuu;6766.//€sçÎ …Âfã$×l\ÏAoGŽI§ÓÉaø|þ_|!FŽ©©©)™`üÂ… Û·o€””²fÚ­q¶Thee•——GÞª‘#«ñx¼VN¡Ùzèx¨-]Üfó°¥Àžö@¿~ýŒŒŒÈ ©©©¹r劤J£¥Z9—v¤t26¬ÙLY$ó“'O²³³É€gÍšÅçóɧ¤“\aŸ]k‡D!„Ч>íá÷íÛçááÚÚÚ£FºqãFã¥W¯^uww_·nÝÀɡ˒’’¨Tê¢E‹d2€VKÞ:uŠ|ÐwþüùwïÞõöö€1cÆÜ¹s‡|.½wïÞW¯^%WŽŽŽ&G“ŸÍ›7›ššÎž={Ö¬Y–––«V­"Ë‹‹‹íììºuë6kÖ¬¯¾újéÒ¥ät žžž&Lˆ==½²²’|[WWWÿ·gÏžË50’tAUUUB¡°¥8?¸ÛÚÚÚôôôªªªÆ…dJäååIJx<ÞèѣɡûåJ °Ùl.—+‰JKKy<žH$úàVë¡í¡¶Ô }qÛ‘‡ééé£Fº~ýúÓ§O=z´qãF##£¶lغv\br56›-8NUUŸÏïx$-‘nh)€VÎ¥}i ÌÒ™L(*™eþÙÕúŒáX!„B¨5t:ÝÙÙYÙQ4ÏÛÛ{È!žžžæææíëlßv@(R(éQ» †›››ä­†††äµ«««\£j®®.9t"©•8[¢©©Ùx’tJ\¾|ÙÏÏOMMî7jjj=zô _µq«ÆõÐñPÉñ)¡ÑÅmGÆÇÇ6Œ|[UU%]Ïí‹íc/1¹Y«ŠyÀ§´r.íKédnöÃM1ɬÈÏ®&° !„BuV<þ<ŸÏß°aƒ\”’’rúôi ]·n9°6"‘Ï/Z´HÙ|˜œBmG.[¶låÊ•cÆŒ166®¬¬´µµ=vì˜l£Bí °dVØg—4l@!„BÕÆ7nܨ€Mš4iÒ¤I 8PgD¥R'L˜ ì(ÚDN¡¶#íììŽ=*óHP),™öÙ% g@!„B!„> Ø !„Bè“vïÞ½/^4»( €B¡(8U¶qãÆšš‹'OžÌÈÈàóù±±±ÊíS‘‘‘ñðáCÉÛáÃ‡ÛØØ(1RRRRVV–ššZLLL“EõõõoÞ¼‘<¸Þ‡søðáÂÂÂ#FŒ1Bn‘~t`¨ƒÞ½{—ššš••ÕµkסC‡JW¸â/=ö@!„ú¤1™Ì’’’   ]»véèèhiiUVVÆÆÆ544(;:ÕâëëûôéÓäädò­‡‡Gaaa||¼r£ú¤hjjE§ÓÕÕÕ•@¿~ý^½z%™d¾±ü±gÏžµµµ­l.† RWW×·o_Ÿ—/_Ê-Ò LÕtºG'âãã½¼¼˜Lfhh¨ÍäÉ“W­Z%‰$+(åÒc/„B¡Oš›››££ãòåË 0qâD²pƌݻw¯©©iãˆâŸˆÞ½{»¸¸¼yó†|ëàààîîž’’¢Ü¨>)]»víÚµëêÕ«fΜ©ìpþâèèèæævçÎéE½zõb2™­l~éÒ¥gÏžEDD”””DFF*¦_C[S)|>ïÞ½3fÌPv muúôé ܾ}{РAààààééiooÏb±–.]J®£”K½B!„Ùç¿´´t÷îݦ¦¦£G®©©QvPunìÝ››kddD£ÑÌÍÍ7mÚ¤˜v·¶¦Rëêê”ÅGX±b…»»;yÿO211™2eʪU«JJJÈ¥\zì€B!„þqúôiòYëÕ«W›˜˜”••­X±¢¡¡Ïç¯^½ÚÉÉ)!!áÞ½{ÚÚÚ¡¡¡äÔY©©©ššš ˆmÍš5÷ïßWWWŸ9sfß¾}¿ûî»ŠŠŠñãÇËõ¸åååK–,ÉÌÌôððÐÒÒjiµêêê+VTVV …Â¥K—0’“““““Y,–½½=F[·n\CmɱcÇ®]»¦®®>{öìèèè’’’°°°yóæµy³Á«Èé4¦øÊÊÊ"##kkkëêê–/_îåå%YtïÞ½•+WJªwÏž==ª­­=~ü8¹‚tUoÚ´éäÉ“555“'OöóóëHl¼uëF›8qbLLŒ¦¦fll¬––VddäÛ·oÃÃÃCCC I`*xY›øá‡6mÚÄ`0uuuwìØÑìŸÏW‘¿Á¢¢¢œœé> ...<ïÎ;ãÇ—í¥oÅŠ+222˜Lfpp°”——!„BŸ0 "çefÎËLEwøðá`ccÓ$2E"[³··ïß¿?åÀÝÝ}Ë–-A\½zU__¿¤¤¤ªª*88ØÁÁaáÂ…äLæÏŸ?ïÈÑmll’““Û²¦H$2dÈ AƒÈ·gΜñ÷÷‹Å9ú‰Åbooo??¿úúúû÷ï3™LÉÒ]»véêê’«yyy-]º” ˆÇkhhTUUyzzŠÅb±X5wî\ùŹ}ûö¾}û¶´´¦¦&44”Åb-^¼¸¼¼|ÿþýððáÖ"'B:xEžNëlmmGŒÑl2<ÊÞ½{]]]› …Â^½z…‡‡ìèèH–oذÅb-Y²¤qõVUUEGG3 r–ªzóæÍ–––2‰¹ººzÑ¢E?üðÇ ±²²š3gNUUÕ == ˆÆ)ø²&$$8;;·cð°°>}úHÞJ±Ùlåþ 6vþüyøê«¯š”“F¬Y³†|+ÃK?wîÜ   f …ÂÞ½{O™2…|«åii%—.É©É!„Bu £GÞ²eKdd$‡Ã!KRSSŸÍ`0úõë7hР¢¢"éÕ®_¿~ûömòÞÏÝÝ]KK+11qΜ9l6;..îóÏ?ÿöÛoÉ»¥ÐÖÖ¶µµår¹111S¦L ÉÈÈèÓ§O³‘ÿý÷§IðÒ%Ê: ŇtñâÅôôôS§N@Ïž=­¬¬$‹¸\î÷ßߤzíìì$+´TÕ2 OGGÇÎÎN$-[¶ŒÁ`Œ7nß¾}ººº“&M f³Ùnnnººº’ÀTð²¶…®®n“¢—/_ªÎß ¶¶6ðùü&åd‰®®®b Ñh´¯¿þ:88¸¸¸ØÔÔT *ïÝ{µq£"ƒ@!„B*HCC#<<|Íš5ä[6› &&&@¡PLMM333ÉE4mذaT*Ua÷ÿ$___ggç]»vmÚ´©¬¬ÌÁÁAÞGÌÊÊ€®]»’ošmHOO€µk×Òét>ŸïääD¡P¬¬¬"""bbb"""\\\V¯^-ïh[gdddhh:::L&S ´9H¯j§Ólò>bFFi¿dÉ’Æ‹ ¥«·±–ªZæŒ ü}«I¶S¯…Ba“•Uð²¶]ã"²]FEþ{öì eeeMÊKKK%KiÊ”)K—.Ý·oßüùóq,„B!ô{{{òg4033GN½Æår-,,ÈE&&&Šyþ¿ …nmmíïïÿ±››šš’qYYYåçç·e‹Åä[I‰&ttt`ëÖ­d¥€P(d³ÙC‡]¶lYZZÚáÇÆO£Ñ>6ì.]ºäææ’¯­­­óòò>v¤f2h6rÞÑÑQ&§#C²ªá¶Ó××€ÒÒR²@ Ðétr‹Åj}Û–ªZæš´,P©­/§:433+..KKË‚‚‚î ¨T*Ažž^[[;pà@øß"¹þ ~,}}ý©S§^»v­¡¡lŽ!]¾|ÙÕÕµñøŠÁ`0æÏŸ¿wï^555œ!„BèSGöM%ÿ¥P(’[???==½[·nÀÛ·o §OŸb±øƒw;òãïïÏd2ãããÇ÷±Û“OöñþúõëgddtéÒ%¨©©¹rå Ç“,%Ÿ1&bäÈ‘ššš’™á/\¸°}ûöÂÂÂ+V0Œ1cÆ;vŒ¼Ei‡7oÞHëm÷ý?*ùš ÉÛf#éà‹ŠŠdr:DŸÏ'ÓUV5Üv#GޤÓéäsõ|>ÿ‹/¾ ío©z%-Wuãm;®ñÞ$14ù·q`rªÃ÷ïß“+“û066.//€sçΑM'M>ˆäú7ØÛ¶m£ÓéG$[—|ÆÊöÒ·.44´´´ôرcj`2($D1F!„R9††ÊŽ@™öïßÇÏÏÏŠŠ2d¹ÈØØøÔ©S‘‘‘Ïž=;þü?þèé陜œ|äȑׯ_õÕWQQQ––– XSSsþüùZZZ’¯Ñr¥­­ýóÏ?Ïš5+##£¬¬läÈ‘G4iRJJÊéÓ§8Nppð–-[’’’BBBîÞ½ úúú dëÉÔ©Sû÷ïÿèÑ£eË–)ë7ó“'OþôÓOùùù ,X»víÒ¥KëêêvïÞmiiéçç'¹dÃÆÁ“?&+÷tΞ=»mÛ¶¢¢¢ÒÒR___²H‘!ÙÛÛ8p 444--­¢¢bÓ¦Mt:½¥ê-((8{ö¬@  ܲe‹­­­tU§¤¤$&&…††._¾¼K—. ¯ñÞÉÂÂÂV®\¹{÷nˆ‹‹³°°¨­­Ý³g˜âë°}|||V­Z5|øpmmí•+WJ5[½Jü´°°HOO 3fŒ»»{NNNaaáÇÉd{éÛϤI“<==)ååå-ugB!„úØÙÙñ*› ]»9+ì¸#FŒ¸~ýºÍÛ·o%…d^âï©T@ ÈÎζ³³c2™òØ¿­­í† ¤gÏ’FY?‹-Ú°aƒ"Ы¯¯óæM·nÝêëëE"“Él¶‚¬+mmm²—xCCYžmbbBŽª 'qqqÉÉÉxð`+ë”””0™L !„Bµ†N§K~¶R.ooï!C†xzzš››+¸º††F=àCÏ{7©+É3À®®®r ¯ã¤¯²tð*x:Ê ISSÓÍÍ­}ÛªÎI/kKtuu?Øæ¢‚ƒêêê...Ê:zcd 6 „B¡ÎaàÀçÏŸçóù6lPv,!Ô)a’1‡[\ZZ__¯R=†B¡hhh˜kk+m$„BèßjãÆq*k„êœÉ‡ÃÉÍË«««û4ïÿ€ ˆºººÜ¼<‡«ìXB!„Bè`’¥âÒ2e‡ *ŠKK•B!„Bý|É’dÈM„UB¨SxôèQ³ž€P(|ûö­ššZLLŒ"CúñÇ ÜÜܦM›¦Èã"UÓJrNš4é×_ÍÊÊR|~"‘””¤š pïÞ½/^¯ÇŽkØhÒÙ‡fdd¯'Nœ¨à1M%°’%É›H«!„PgðóÏ?Ï™3çñãÇ|>?((h×®]"‘(111((ÈÊÊêÕ«W‡RpHƒ :vìXZZZGvrôèQ…ƒ”¦•ä,((èׯŸRòS®0oÛNe€Éd–——/X° ((èçŸn¼hùòåAAAqqqššš­Ìk(oØ€dÉÔØXÙ!¨ ¬ „B@MMMDDÄÎ;CBB wïÞsçνxñb—.] Ú=íYG¸»»[ZZvd|>ïÞ½²Š)K+ÉYSSãè訔ü”ÌÛ¢² àææÖ»wo++«¤¤$Iynn®¾¾> ~ü˜Íf“%'Ožœ2eŠr£"áXHÆ´µY8B!ÔY :ÔÁÁAº|òäÉL&“|}ïÞ½•+W–””„……Í›7,¬®®^±bEee¥P(\ºté€dŸÏ_¼xqzzº¾¾þöíÛííí[:hrrrrr2‹Å²··§Ñh cÓ¦M #00PWWwÇŽ² Œ$ɱcÇ®]»¦®®>{öìèèè&Õ¥:šT—ͽ{÷tuuãâânÞ¼yäÈ‘šššeË–yxx€ü¯rëÚ’œÐ\~Ê)ì-[¶¤¥¥±X¬eË–={öÑ£GwïÞ½pá‚¡¡ááÇËÊÊV¬XÑÐÐÀçóW¯^íää”pïÞ=mmíÐÐÐE‹@jjê™3g_…uëÖýðÃòÎ[å^ÍÒ$K×­[WVVY[[[WW·|ùr///ÉÊmI€¶\;™Ÿ…¿¿ÿÆ“’’Ö¯_/^üå—_$K׬Ysÿþ}uuõ™3göíÛ÷»ï¾«¨¨?~|pp°Ì#9xðà­[·h4Úĉcbb°B!„ЧkñâÅÍöÝbĈ†††fZ]]½cÇŽ .œ8q‚J¥ÿý÷ÁÁÁ]ºtùé§Ÿätÿßl$cÆŒQWWOJJ’®.Õ!]]Ó¦Mkhh¸víôíÛ700ðĉ%%% «Üº&'4—Ÿò û›o¾y÷îN÷ððˆ‰‰yþü¹­­­»»û‚ òóó7oÞ, GŽÙ£G#GŽÌ›7oРA¥¥¥Ó¦MSSS»xñâž={æÏŸŸ–––‘‘Ñä*€¼óVéW³í¤³T$ùøøèéé8qÂÔÔtΜ9’•Û˜¼vò8WWWww÷ääd±XüâÅ  ÉÒèèh‡S\\üå—_ÚÚÚN˜0A__îܹòˆdÒ¤IL&3))éáÇiiiØ€B!„ZÄår¿ÿþ{ƒ)S¦P(r8ëëׯ߾}›ü"îî¥•˜˜(ÛãŽ9ÒÑÑ‘B¡,\¸077÷Ò¥KÍ”Ãá°Ù츸¸—/_~ûí·¾¾¾² £YÍF¢­­mkkËårcbbšT—ê®.]]]r©¦¦¦£££de\厓ÎOù…M¡PæÍ›÷믿r¹ÜÊÊÊŠŠŠ£GŠÅâìììÁƒ›˜˜¤¦¦>yòdêÔ©0bĈ×ÕÕµµµÍÉÉñóó›2eJ^^ž¹¹¹Š$­ŽÛÒYzñâÅôôô… @Ïž=g̘!Y¹ ðÁk'§s™5kV^^ÞÍ›7Oœ8A&†•J]¹rå;wÈO‰ÔÔÔ˜˜9=L­££cgg'‰–-[Æd2ÕàÆò8B!„êì ÉI­ttt˜L¦@ €ôôtX»v-NçóùNNN²ýæ*‰lmmÉ×ä ê«W¯È·Mjeeáââ²zõj†Ñ’VNßÈÈHºº:ÈÔÔ”üYÞÊÊ*??¿#»ú`u5XÞWY&¤óS®aOŸ>="""%%…ÃálÙ²%$$ä¿ÿýïµk×€|꛼Ÿ¤P(¦¦¦™™™ä†4mذaT*ÕÚÚT*i;ÈÒÒ²°°ÌÌÌŠŠŠ:¾Cé,%o’ɪ[²dIã•Ûž­_;Ù"‚ ò ‘‘‘GŽa³ÙQQQb±¸ñj¾¾¾ÎÎλvíÚ´iSYYY³½È±±19}Ž€B!„ZÄjn€[r:ë­[·š™™‘%B¡P†­®®®­­%_óx<°²²"G€krP6›=tèÐeË–¥¥¥>|8 `üøñT*•üþžž^[[;pà@Æ­ž¾5ØÚÚR(lØC!„B Àçó%ÿJˆÅbÉÏVAHÞŽ9RSSóСCQQQpáÂ6›)«`*++ÿóŸÿˆD"vóæMƒ‘#GÖÔÔH´wïÞ+W®¼}ûö˜1cFEv066.//€sçÎy{{Ë**‰–N¿¥êR………ÒÕeee•——' ÕÔÔÈáÊÈf—–N3%%…Åb5Jaa7›œÐB~þßÿýŸ\“3((hÔ¨QË—/§ÑhsçÎ0a–-[ÈÛ(???==½[·n;öíÛ·………Ó§O'ãl|§ÚìU9ç­¼ÿfeHº~|||ètúV¯^ÍçóÇöìY:þ± Ðʵ“­'Oždggs¹\‹5kÖ¬+W®OHg²¿¿ÿÊ•+ãããß¼y#ó0k\W50 *•ŠM!„BŸ Í›7Ÿ:u Μ9SZZºqãF77·“'OþôÓOùùù ,X»víÒ¥KëêêvïÞmiiéçç—””r÷î]Ð××OHHU0A¨««/[¶lòäÉ}úô9zôèÉ“'õõõõõõ¥zëÖ-˜:ujÿþý=z´lÙ2æãã³jÕªáÇkkk¯\¹RVIØÚÚJGÒzuÉ<†ŽhR]cǎݺukß¾}µµµÉIËV®\Éçó§OŸÞìUŽŠŠÊÏÏ/++k¶‡ˆÌ5›œÐJ…Ë/9ÀÇÇÇÒÒ2 üüü¬¬¬$¿ßŸ:u*22òÙ³gçÏŸÿñÇ===“““9òúõ믾ú***ÊÒÒ’\¹ÉU ÷,¿¼m6ie{Ùj\?ݺu;pà@hhhZZZEEŦM›ètz; •k'C«V­Ú¾}{MM‹‹Ëž={&L˜`gg7|øðýû÷“‘?~¼   11ÑÜÜ\SSsþüùZZZ’~ ò’’’˜˜XTTH)//?þ¼««+FÃ&„B}‚zõêEÄ«l6tíæ¬°ãŽ1âúõë666oß¾•’ßÇÈþÀ*N dggkkk“½sÛÍÖÖvÆ ’!¾‚ÈË˳µµ­­­ÍÍÍíÖ­[ã/ÇMJö¶€ììlɰ^ÕÕÕNNNäÍ•<Èêôe%...99ùÁƒ­¬ÓRu …ÂììlMMÍŠŠ &“©¡¡A¥R¡¹Ó¬­­4iÒo¿ý¦¦¦ºÏËäêÄÇÇïÙ³çÙ³gMÊ_¿~MÎR yyy’ŸñÚÎήñÌ…µt@þy« I»oß¾;vHFIÖRýÔÕÕeggÛÚÚêêê~ð(-ië×N‘‚ ?í-Z´aÃòù…Ž‹ÅüàšýÝÒh4555l@!„ê~ùå—7nÄÅÅ)1:îì,û …BŽÈd2¥÷ßä äèVàêêÚx5]]ݶÜ't„œN_®Zª.55µ=z¯ŒŒ/’>ÍË—/ûùù©òý?ÈùêHî!áïá*?êÐ-]ÞvФm©~455É mÑÒ™¶~íÉÛÛ{È!žžžæææ¿ÿÿ(ýéRþ¦Èc#„B¡v8v옿¿¿X,Æ >4UÁÇC!„B‘››BÞ‰}ýõ×Òc¤!$?T*u„ ÊŽ¡NoãÆOž<Ù´i“üVj 6 „Bu&ÑÑÑ\.—|Íår;¦ÜxBu"Ø€B!ÔiTWWŸ9sX,Ö‘#GöîÝ»wï^e…B¨ÓPéa<B!„Pc÷îÝ«¯¯§R©'Ož=ztVVÖüQ\\ljjªìÐBuØ !„B¨ÓÈËË€E‹=´µµ ‚¸víš²ãB!Ô9(¢@ ‡SWWÇ`0ôþwŠ @PQY &ÆÆ8A[`MÊJn^^ii™¾ž®C×®Ëy<ûEx¸÷RüÈ!„Ðñx< …òõ×_“oß¿¯^½RÌÑŸ>}úêÕ+ !„:/E4p8ܧ uõaÞCß ¾+,|žõR›Å251Q@Íz››õ2{ЀþºŠŒ±}T³&‹Þ¿û–ËåR©T}ýîÝX,–âÃø(yyù?îÛ¯««³wG•úO_˜7oý|ô˜µ••g‡DÄÙsçÿïÍòŠ }}÷^n“'NÐVùšD!¤`ZZZööö]ºt!ß’7ÿ………Š9ú™3gŽ;†M!Ôy)âA3SÖÀçWTT6._\ææf ˆ¡Yõ yùùÊ:z;¨`M=yú¬¦¦†B¡ˆD¢’ÒÒ-ÿ³ IDAT»<àñxŠä£ôëÛ‡¡®^]]“ùüyãò{€×€þŠéDÊéã)§‹KJêê¥eeW®ýç‡õ±"‘Hñ‘ „ReZZZ’ûøõ×_ÀÂÂBa¡°c!„’9Eô Ñh&ÆÆEïß¾ohh@Ö74TVU€¹Ù_7®|€ËåÒÕÔX,–ä'nòˆF£ÕÔÔ…¢£­MÇL&“Á`49V³;‘VV^Î~‘¥úwªM¨`Mf¿z ¶66=º; E¢Ç>©¨¬|õ曫«¬Ï^–444úöñ¸}÷Þ»÷zº¸…••Ù9¯`Ѐd ‡ÃÉ÷N‹©eei!y. Ï‚`0orßR¨;‘HTôþ=—Ë351Ñ××kr¬fwÒ„P(¼xå*,øº·{¯÷ï‹£W­Î/(xš‘Ù»—›rìøå«×Äb1Ο;‡l,ø:ryUuµ›«ë“§Oííìü§O‹?XRZ  eÈ`¯Ðà¹ä‡Z+;iâ]aQCCƒ¾¾^o÷^`ffjߥ˳ÌÌŠŠ V B!ÒÒ÷“œœœÁƒ“C,Z´èÇTWW/((066nvýíÛ·S(”ððp™DµjÕª£G¾|ùR&{C!¤x šÀÈÐP]]] ”•—“%Eú®gç¼ÊÍË£R©f¦&º::uuõÿüSrIDiY™ššƒÁxœž^WW§¯§gnfJ¥Rß¾ûûá·ÖwÒ„¹™™Ï°¡>ÆjjjÈýäeJ¥j’ k+«.v¶ä-4p¸\îS ‚Ü\]tttx<^úÓgdIã§Nž>sñòºšZϾö]º”••oܺ½àÝ_U$‹Ÿ<}ª©©©o ¿uç®’ÒR'GÇýû©©©Ý¸yë¿·n“«µ¾“Æ ô¿ [òUè|@PQQñøÉ“Wo^€ž^Ó>!„>qöööõõõ………÷ï߀iÓ¦µtÿ?~üø±D˜P(|÷îÝdz²²8Žô µµµÏž=SµßÏ8›Í~úô)ù£ úu¢ÔU…tUP…B173€Â¢÷ÐÐÀ¯ªª¢P(榦B¡¼áÐϳw¯^ƒô·´0‹Å¹oßJ6·²´1ÔÛ¡«½@ ÐÔÐÐÏÓÝÍÍÁÞžF£U×Ô@[vòï R5©¡¡áêÜ£{·n@ěܷ9¯_€µ•bj£#h4Ú þýàö½{PU]õ2›B¡ ì߯®¾þâå+jjj«¿‹þzñWëV}ÿ™× ¡P˜zù²dóaC>Û¿g×—ã¿àñxF††«¾]¶háÄ/Æ1Œ×¹¹Ð–Hh³Xž}<\zôH½|eaxĦmqµµu]ìlÝzªôó!„J¥z{{?~|êÔ©b±˜Á`¬\¹²•õétººººÂÂC›Í^°`™™Ù¶mÛΞ=;~üx!C†>|¸ñÊСCÝÜÜÚÒÓXx<ÞîÝ»uttFëëë« ÷xH‘:KêªTº*èA°47›—_RZ*‰Þ—ah`À`0Ê+*D"ƒÁ¨¬¬äp¸tºš6K ˆÃãJ¶µ±¶¢R©šT*µ®¾þÞLŒ ºÚÿ5NuMÍwò¯¡‚5YV^þüE—Ç£P(NÝŒä[22ØkÐ¥«×ýù¤Ï'Ÿpqî¡§§—‘Énàóõõõ^d½ÌË/ÐÒÒ²µ¶¾ PPðN²íHŸjjjFjjjeåå«Ö®ïíÞ«§«Ëø±cȧ^½zýÁHÓÓÓµïÒ¥¬¬¬†ÃyWXT\\be©¸žBu ~~~ , ¿ÝþðÃÝ»woee:Þx¥¦¦Nž<¹¶¶vÚ´i[·n€èèè±cÇ^»víæÍ›çÏŸ?~ü¸ªM–Ìår}||îß¿¯££¦¡¡Ñ·oßòòr£NòEu\gI]UKWÅ5èêêj1™¼ÚÚ’ÒÒ÷ÅÅðwßu>Ÿ ä|ìBPòš¡®êêê=]\Ø/^TVU‘àiii¹»õÔÑÖnËNþ5Tª& ‚xþ"ëm~>èëéõèÞ]W·L¯Hr°·773+zÿþÑã?ÿ~ `p¸¨¬¬ú))¹ñú¼ÚZÉkrIó‚ý|äÅË—/^¾ s³%‹ÚÙØ´e'Ò¼öNW…oÀÿnB¡°¸¸¸¨¨H[[ÛÂÂB[[[Ù}œÚÚZèÝ»7Y¢¡¡±yófòmJJÊÙ³g'Nœiii999={öTb´¤;wÞ¿ܸq fffpèСÜÜ\CCCe‡¦º:{¢Jë,©«RéÊáp׿æÙ¯^½Í˯ª®¦R©f&&@>F®£­Ýãï6l¡HÈãÕ2M;­ ]m¯¸\nyEEII)Ç{–‘é5p@Ûwòï :5™õ2ûm~>ƒ¡îìädfj*§ó•ŸÁƒž:óË¥«Ws^½VSSëïÙ444ÀÎÖföŒäjuõõEEEºzº’ É1L¹<^;ÛØµ?¼{—Á~þðñã¢÷ñûc׬nËN$®\ûOò‰“ƒ˜7'h4Zow÷?>"GD!ô jËpÙ¿ÿþ;NoËÞvîÜÙáˆþCyÿ[-_¾|ùòåÒå_~ù¥âƒi‹ß~ûí·ß~k\‚}^>M"uU']zT s¨¬ª"ÂÈÐüOKGG‡B¡py}zóæÍ!WW×+W® „\\\,,,°•~úé§Ë—/FEEÙÛÛ»»»Ÿ9s†ïúÛßß!ÔÞÞŽ=ú!´xñbá?úûþýûK–,imm¥P( 'ND¥¥¥aÜ.Z´( €2X'QýêØ±cçÎ+Éÿ†† XIJJúùù-^¼x@bïîîÖÖÖ.++C]»vÍÓÓS„*[^^N^¾÷/í%$$†p~v"—|Þ $EWGGWG§×ÝäåÇr~¾(— „ÄÄÄLMzù2À ÔÚÚúÓO?!„FŽyòäIl¥ŸŸßÂ… 555 ¦ïd2YYY!„ýû)Á‹™?•‹0AC¢¦¨¨¨ªªjΜ9Ø"tÀ€Á«€þ§|DãÜgÏžš2e N§ÑhsæÌaÝ_EE%55•õAÐgÏžurrºpá‚®®nZZZ+=€¿ð©<úÁÏ?ÿ¬««;Щ`*`%!!4P±c·n½zõ _#B7V¹¹¹¡;w"„.\¸š1cÆû÷ïeeekkk êêê–-[–-õßGɈ‹‹ÇÄÄ466fdd¨1>>bbb<˜9sæÏ?ÿ\ZZzæÌ™ .lÞ¼¹  àĉŒï5551c†¯¯¯ïO™mii¹víÚ©S§Þ¼y£««;yòä”””|lØ'ñèo ¡§Dšªªª¬¬,ö¢  ÀÅÅeæÌ™¡/¿üòîÝ»$iÆ MMM»vízðàÓ)€É“'Ož<™H›››íììRSS~þùç-[¶HIIéëë››› $S|×ÑÑÑáîQ» h¨@dÁ…("ÍÄÄD[[[2dˆºº:¶~üP^^žžž†¯ommMII {ýú5ß…ŒJKK{÷î]_Bñöö>zôhì,|¥¥¥ÎÎÎééé/^Ü´i¶299ÙØØxòäÉ+V¬5j”££cGG¯ˆŒrtt íÓƒp322RSSûcgá“––ÆþÅ „ètúªU«FŽYWWW__qÿþý'Nð0°(!'''WW×Í›7c«º»»ƒ‚‚RSSÉdòÔ©Sð½ËÊÊ®_¿^VVf``°råJ „н{÷ ÛÛÛ}||V¬X!!!ïÏëÎÉÉÉ<¨©©ÑÒÒ¢R©FFFØ{'L˜ÐÖÖvóæMfccãààP__”‡eË–IKKs ‡Wúúúòòò_|ñÅ»w着ªB%%%ùùùÞÞÞŠŠŠ¡Ù³gýõ׉‰‰< ,2BH__¿©©éÇ!:îàà°fÍšòòòׯ_/Z´hÏž=Ø®iiifff¾¾¾ gÏž555}öìB(!!¡´´ôýû÷¡¡¡xÐlƒbÚùÒ¥K“&MJHHhiiñ÷÷3fLff&öö]»v;vlþüùuuu999ŽŽŽ§OŸ®¯¯÷aàáá±fÍš––‚px.2ÙËËKKKËÖÖvåÊ•!…;wîLž<Û¡§§§ªªJYY™§@áKˆ‹ÆÿHµµµ***‡ÒÑÑquu}õꕉ‰ITTÔÌ™3B~~~ÅÅÅt:ÝÔÔÔÐÐ0$$D\\¼¥¥ÅÎή««+==!äââÒÜÜÌt7§ w633›>ž1|++«M›6ýøãáÐÓ§O0¶gÑ!ürqgÏžýõ×_MLL$$$B¡¡¡¯_¿î§¸`é#QëSþùç@§BH8e–±R»7])66666–B¡P(2™œŸŸïîî>mÚ´îînâ7ÂqìSÇß„M°3CQ;žà˜F¥Áƒïƒ‰˜˜å‘‘‘)))øK2™Œúü¡©©)00°¾¾žïpŸý±«¿ëBhþ~@zzúž={:äéé‰o[·nÝÎ;œœ†>@ÉûÜÔÖÖbí!”‘‘ÑÜÜ<°é<Ci ?ŒíYt †ºæÉ›7o,--½¼¼ú;"GúN4ûÔ ×ÇJ111¹uëþÒÏÏÏÅÅåÁƒóçÏ'xÇ'ÁÖ»ÈO„6*‰¾kÄÝÝÝÝÝ[=zôèÑ£*"å³?v}BuAìïS‡200ððð`Üvøðက€ððp<«999ÕÕÕ†††«W¯VUUÅÖN˜0¡¼¼<88XJJê»ï¾344ôóó{ò䉺ºúºuë´´´øK_ccãíÛ·¿ýöÛ{÷î%$$(**º¸¸˜™™á;$''?x𠦦FKK‹J¥ñcFÚÚÚnÞ¼I£ÑllljkkœþýÁ†Û·oëêêZYYák‚ƒƒ544¦L™‚ª¯¯ =z4¶Cuuõ½{÷ìííµ´´âãã uttîÝ»WXXØÞÞîãã³bÅ ,ŒŒ ÿ®®.[[Û pJ$§Ý8ÕŽ(`[°øÖ²²²ëׯ—••¬\¹RCC£/quww¥¦¦’Éä©S§:880•¶„„D_bd Ÿi‡°°0qqñÙ³gãkBCCeddfΜÉ)^KKËššš›7oAvðöÌkj=þ<  ¥¥åË/¿\¾|9…B!Hd¯…ÏZ×¢Ü/„ ***//¯ººÚÇLJJ¥ÊÉÉ1í@Ðxí&0Ž0f„q!ÄØ§zm혤¤¤   „вeËääärss.\ˆm"hü›bbbîÝ»×ÓÓCüUÔpªDâч›Ì ä@‡ÃŽÃ¥¥¥¡7n°=P³ÇC`í˜| :üaªlllÈdr¯Mšû~Í_ Š8N6¶™øÌã‰0JaaaLóŽJBÃë§€~J§ÖÂe¹Ñéô€€b¦ar IDAT€„„ggç±cLJÀÍ|›1|¶¼ƒ³mꜶ<•OúXÂP[[ÛÜÜ,))yäÈ:¡ÐÐP …bff¶xñbMMMMMÍââblÓðáÃgΜijjºnÝ:]]]%%% ‹µkת¨¨Œ9²³³“8pNÞ¼yƒrttÔÔÔtttÔÓÓøð!¶õâÅ‹¡©S§º¸¸Œ5JRRòÙ³güE„gdÍš5zzznnn¶¶¶¡S§NùøøHHHÔ××cû”””H¤;wî0¾ÑÙÙy„ ز¿¿?BÈÆÆ{yáÂ2™üáÃ:®ªªzþüy:¾cÇmmm ¹sç677>|úôé:::ß}÷Ý´iÓBgÏže›>þûï¿oooOMMÅVΛ7¯×xñ«AÆŽË©ÄØîÖkíˆÖ‚E=þüÕ«Wû÷ïÇÊSVVvçÎ|?{kuIII4 !äååU\\̸Ccì5|„И1cÌḬ̀KsBóçÏ/++#Ž—J¥ZXXð—kîñ‘}¶ÙÁúcEEE566â×›››ûøøhiiqJdCCê­ð}ýb4>Ú Œ#ŒøGqs¨‰ˆˆhhhØ·oöÒÊÊ û 5Á¦ðððîîî#GŽ`|ñÅK—.ícQq%²}„–Ùžžžöööööv¦¨¨¨¤¤tîÜ9þž¼Í©c6ŒA‡?øPÅ}“æ¦_óQƒ¢Ó¼ŽûcN_f†Œ¸9ž ¼Q vT¦¾ è;¶Í€§rÛ¾}»ŠŠ úg”,**ÊÊÊÈ”Œ8ìà¼6õ~jW}¯ ! #„ÔÕÕBÕÕÕ¬›³²²ž>}Š***"‘H£FÂ7™šš¶µµUVVb/eeeßÈô’ILL þøÄ]»v1½dÝŸñ¦Í1cÆ`éA‰‰‰?~É’%æææêêê}‹í-:K–,ùë¯¿ššš²³³³³³—/_δÃ!C,,,=zôáǼ¼¼o¾ùÆÌÌ,666''§ººzîܹ¥A/—»õZ;^‹B°Ø¦{2êŠ+FÿcçΡªª*þRndd´wïÞ#GލªªÚÙÙýöÛoØAŠ×9é5|Ì·ß~ÚÕÕUYYçææÖk¼ººº¬á¼ÊøË>kvvæ>Í………ŠŠŠøq!äêêúÕW_qJ¤¢¢"7…ã²_ Zvã#þÆFÜjÞ¾}«®®®¬¬Œ¯166ÆŠšx“®®®¢¢"¾iôèщĕÈiÜNfÍÌÌ‚ÿöæÍ›ÆÆÆuëÖñAÇäcÐÁðÚ¶‡*.›47ýš}œ’ÍÍ1‡8^wãrê2PðFÕ÷Qi &º}ÿÐw}™fcXGÉââbLɈ“Ñkà§€¾”÷ú^B@Aéêê6,..nÙ²eL›gÏžmaaq÷î]))):ÞÙÙ‰Ÿâíèè@uvvò«••ÕË—/±eUUUYYYÆ—¬ûcq1.S(”ÆÆÆqãÆQ(”7®_¿ÞÜÜÜÞÞ¾ïq±}V§££ãºuë²³³---Y÷±··¿uë–­­í°aÃôõõmmmãâ┕•utt°ŽDŒËg„²ÝËÚáµ(‹mʱ¯¡Ž;¦  À¸ž©óð”r//¯­[·Þ¿?..îÈ‘#§OŸÆ.’ä)FlÃg ÍÙÙÙÃÃ#666//OSSsÖ¬Y¡¡¡Äñ²-AUÞƒøË>kvvæ>Ͳ²²l‹ ‘Ü>N°G­ÏA9c—ÒñÔN`aÄ÷8¨×Ö.&&†}ÑÃK’ ¨ 6ÉÊʶ··3ȾhêµÙVÇ@eVQQqÞ¼y¾¾¾¬››([}–AÓ—¶Ík“æ„¿}l“Íå1‡ þvãiô2<ý}•p¢ÛÇO}×—i6†u””——ǾÁæ~JÆ6mÄÉèµ ðSSNûþ¡€­¾×…PB$iùòåÞÞÞ»ví9r$¾-22²²²»¸{Zirr2~arr²¼¼¼¶¶6±ÊÈÈ0~bzÉ$11qæÌ™ØrBB–ž'Ož”––¾|ù?kÕØØØ÷¸ØRRRš9sfPPгgÏÖ®]ËvŸ¹sçzzzúùùM:!dccséÒ%iii!œüã²vR‚…](''‡=0!ôøñã‡â/1ܧ<##ãÁƒ«V­ZµjUnn®™™Ybb"¯1rÂ)|¦!\__âĉÁÁÁÙÙÙ+W®$“ÉüÅÛ—*ëêê—_¾|‰}IË_2X³#4677¿zõ ßÁÖÖvöìÙØ%s¬‰”““ã¦ðq‚=j}~íÆ‘^q3Žà¸9ÔÕ×׿yóÊqFF¾ q(j‚M†††………#FŒÀ6%%%ñšMáã²™ `f ð6Ïö@Í AÇ”““ãoÐéKÛæ©Ià¯?Q’Y.§.®ï£ÒNtðSžFóÄÄDl%ÛÚÚØ†ÀiJÖ÷d°ȧΊù#̸¸ñ÷TÞÃÃCSSÓÎÎ.""¢»»»££#22ÒÍÍMOOoåÊ•¡qãÆYZZîØ±»`)11ñܹs«W¯ΩÙS§N=yò!”——·gÏ###ì~솺žžooï¼¼¼þ;‹¿dÉ’»wï–––º¸¸°ÝaܸqC‡½s玵µ5BÈÚÚº££#""‚ ó36ǾØÚé “‰'nß¾½¼¼!T\\¼zõê·oßò`KKË®]»†½Äšžžú§´‰c¼té•Jmjjâ#|&ß~ûm@@@JJÊêÕ«û#§lá-JMM-,, {yùòeì!L½&ƒ ûLÙ;;»#Flܸ›ùúúÆÄÄXXXpJ$÷…eüÓíÂAиi'­­­LÂ8Ò«^Ç7­}Μ9zzzîîîMMMt:ýܹsÏŸ?'‘Hˆ°¨ 6988hhh¸¹¹aO„òõõŒŒì‡b0þ*Q°™%8x~øð!ôAAAkÖ¬¹ÿþ† ç5†u†@Ü1dÐá¾Ir7X½fVP3CFÜž‹ïQIðñ)€-N#,x*7ooïääd„Pnnîž={,X §§ÇÇ”Œ×c—qJ•ÀgÅ|µ6ü÷ÄKVV6::ZWW×ÞÞ^JJJFFfΜ9šššQQQ222Ø>>>>õõõ:::êêêS¦L±²²òòòN*/^<}útSSS‰„=žÝÂÂÂÑÑqÁ‚fffššš>trrºrå þÁrpp˜:uêðáÃÙî@"‘æÌ™C§Ó±óŠŠŠãÇ—””ÄϨ1ÑÓÓ‹ŠŠ3fŒ@ÚÖÖNùùùÑh4===‘#Gª««Ÿ>}šïЬ­­ÝÜÜÖ¬Y£¦¦¦¦¦æîîþã?ššš2–6AŒiii3Ná³î¹téR쑪ø7¢‚Í)+Æ<îÙ³çþýû:::Ç?{öìÆñÝøË>kvúŽB¡Ü¸q#++kÈ!«V­òððÀÆN¶‰ä²ðËáÓíÂAÐzm'¬-Ã8Ò«^Ç7­]BBâÚµkéé骪ª***—.]Z¾|¹´´4¶• ¨9m’––¾zõjff¦ººº’’ÒæÍ›÷ïßßÅ `üU¢`3KpðÌÉÉqúÇ·ß~›˜˜xæÌ™õë×#„ÔœfSøƒâ¥Ir7XÄ™ìÌÇýÔeÀñ7*‰^?pÂi„å÷å¶mÛ¶¯¿þZEEÅÌÌLRRòÔ©S!p3ßæ/}Á)UŸóG¤Ú0©¶¶;%‰yýúuvvvww·±±±¹¹9ÓÞ4-!!¡¦¦ÆÈÈh„ BH_AA¡¡azzº††FRR’¢¢â´iÓ°GËb’““KJJLLLÆŽÛØØinnŽ]è(X ZZZgΜquuå;êêjyyylŠÖÙÙÙÕÕ5þ| …Ò÷ ¿v¥««+11±²²ÒÀÀ@ OÅÏËËËÍÍ•?~¼––b)m‚©Tê•+WˆŸCÆ>—žSFLy,,,|ö왲²²µµ5ÓSšû˜}c{æ[sss||S9|ºýB8ßÍÆNzG˜úqkïîînkkëè舕‘‘±³³sqqéììÄ~k 5Á¦úúú¸¸¸žžžiÓ¦ á11‚Â_%r“Y.t<uð¹û‰'<==ß¿/"OOý!33óðáÃwîÜè„ ŒAž}ð¹ú\Ç‘²²2   Å‹#„ÊËËMLL~ùåìf Lƒöà S#ÀçJhö9 €/Ÿ?{ÅÅÅÓ§O/))Ù¿ÿ`ä"""®‡¼xñâøñã¹ßíÓB&“ñ;ˆ¡A˜}‚fŒýާfÌkGÝ€èèqdذa»wï^¶lÙÕ«W%$$?~lff¶jÕ*Ή¨u1ž¢35‚6ÙwB+C5¸ñyØEý*€úúú³gϺ¹¹1þx¸µ¶¶^¿~]SSÓÉÉ {Ò€OÅç=Ždee%%%µ¶¶Ïž=[ ·•Ð+˜€@ÀÀ 0 §àDZ€A®€°õß÷ Wƒœ8 ƒúÀ¦M›ÂÃÃû5 *•Ï´¾««kùòåT*µ¬¬¬_À“èèèµk×t*øÇ_…®_¿>""‚uWUUE¥RKJJøNXLL •J-..fZO¥R‹ŠŠøy0ã¦TÝÜÜ¢££ qBA£Ñ<==.\øáÇ~ŠâÔ©STîܹƒ„reÔO}!M¥RëêêúšDÑ&¤SÞÞÞGN\Ü {õêU¿Fxþüy¦õ=ºuëV```CCC¿&€'þùç@§‚üUhhhèëׯY—qMMMõõõ|'ÌÈÈ(((è?þ`ZñâÅ„„„áÇó27ÛûD§/sSª!!!‰Nt2Ž;{ö쯿þjbb"!!ÑOQˆ‰‰Qþ™’’‚¿$“ÉH(GQFýÔÇB­­­}M"€hÒ/ddd477 '.Q£¥¥ÞÚÚ*##ƒ¯¼}û¶––VEEÅ& Ͱaì­­ýýý÷îÝ‹¯¤ÑhááánnnØG©þ#ØÞ':}™›R­­­TñŠNÆqoÞ¼±´´ôòòê¿(ÜÝÝÝÝݱåÑ£G=úÖ­[ýèo„Ppp°††Æ”)SBõõõ!!!£G¶²²BUWWß»wÏÞÞ^KK+'''  ººÚÐÐpõêÕªªªXþþþ–––5557oÞÿI“&b[[ZZfÍšÅeFXû2§Ã£7npŠ” *û^ª¡øøxCCCì%§ƒ@?eœµúx¸‹ŠŠÊËË«®®öññ¡R©!!!ýTÈÜ`ítüU:n@ú8[ý×z?Q½ŽDø øðI##„þüóÏíÛ·c¯£¢¢Ö¬Yãáá½¼sçκuë$%%ïÞ½knn~çκºº'NŒ=¿5zçΧNš6mÚýû÷ÛÛÛÖ¬YS^^þúõëE‹íÙ³'!!¡´´ôýû÷¡¡¡ŒÑ§¥¥™™™ùúú644œ={ÖÔÔôÙ³g|g†N§³ÆŽm ?~|lllUUÕæÍ›íì캻»B½páBxxxCCC{{{rròÅ‹}|| ÌÍÍ9…œ””äãã=kÖ¬àà`„Pyy¹§§çÆ333ÃÂÂ’’’òòòø.|¡áT˶Š:yòäš5kâãã}}}_¼x¡¡¡q÷î]žâ­ªªzùòåŸþ™››;iÒ¤­[·vvvr߆æÏŸXíèè £R©½†€w®aÆñ\Xqê}L¸Ìch …ø°Ð+NUÙ÷ReÝ“ÓA ¿3ŽWŸ¶¶¶`w‡š3gÎØ±cÃÃÃÕÕÕ9íÖ÷Bî§NÇSz¸ß§ÿú8O„P°"‹x$*** …|ºÈ¡Ù³g#„bccBñññßÿ}{{{jj*¶rÞ¼y©©©ïÞ½óôôC 2ÄÝÝqžG¥R-,,BØm·IIIØ7–^^^¬ÏëÆ=þüÕ«Wû÷ïGÉÊÊîܹ3##ƒïg2sŠ=**ª±±ÿÆÞÜÜÜÇÇ»XÑÙÙ¿:qìØ±--- ÃòHPPœfgg'++‹}8ÇîÀo @©¨¨ØÙÙaËBüñ•JÅ¢f²hÑ")))„‰‰ –x,ËØKIIINá,]ºtèСxö±l†‡‡www9r[ÿÅ_,]º”—òÄmŒm…"„bccOž<‰-Óh4‰Äë}ÝÛ·oWQQAIKK8p ¨¨(++‹§6ìââRXX˜––†zôèQCCƒ³³s¯!à«_ñÑ{=,ôŠSUö½TYwãtèïŒãÕ'ð×RÈÄ8u:žÒÃý>ý×Çy"„‚YÄ#QKKË`(àÓEA 2ÄÂÂâÑ£GS§NÍËËûæ›o|}}cccUTTª««çΛ™™I"‘F…¿ÍÔÔ´­­­²²RSS!¤««‹­722Ú»wï‘#GŽ?neeeooïêꪤ¤Ä6nìIÝ+V¬ÀfÒ¡¶¶6„PUUöY 3sæLlyÇŽ³fÍb|yìØ1|ON±***âŸB®®®Ø~“07 ëîî&.(Ž¥L¡,\¸000pÙ²eÑÑÑ4mîܹOŸ>ÅwX²dÉúõë›ššŠ‹‹³³³/_¾Ì6¦oqY¿ÔåÛléêê***âkF-Ìß÷âqc›S„˜˜ØùóçSRRòóóóóó±KUybff†/3!T\\L§Óm3gÎUUU ‹àà`ìájAAAÄ!à‹÷‚K\vFFEEEć…^qªJžöTYãâtèµüû˜q¼ú~¸ã’@ ™§NÇSz¸ß§ÿú8O„P°"«×‘h0ðéúûiXööö·nݲµµ6l˜¾¾¾­­m\\œ²²²ŽŽÎ˜1còòòètzgg'þÕ4võ;~c?ã3·½¼¼¶nÝzÿþý¸¸¸#GŽœ>}:++‹mÜØäàØ±c Œë™fxVVV/_¾Ä–UUUeee_2…É6vYYYì¦_VlŸN0â‚bfÉ’%sçÎmhh š7ož´´4ãVGGÇuëÖ………eggãw2óŠS8l³)++ÛÞÞθ†¿»Í…m-c•Å6§ãÆ£P(7n\¿~½¹¹¹½½=¯‘bmžqY^^û²×6Œ_²dÉíÛ·;v÷î]ì¹½ö¶9â©Sp“).;##)))âÃB¯‘"UÉSbØ–*+NþÎ8^}ýq¸# ØB&ÆÍo.ôš¦d Hç†0 öÓ…ˆ²¿çRsçÎÍÏÏ÷óó›:u*BÈÆÆ&%%%22ûf{®rrr2þ¶äädyyymmm¦à222>¬¢¢²jÕªëׯ'&&'&&²»hPNNnÚ?ÄÄÄbbbäääw“‘‘õ555¦—ÜÄnhhØÜÜÌ’vðó IDATøkÒ¶¶¶¿þú+§B!HqA˜>}º’’RPPÓ]%%¥™3gb?r¾|ùrâ ðŽ¡¡aEEEaa!¾&))‰ï¨…†§6†yòäIiiiXXØöíÛmllTTTy—1Š„„„±±1—mçââRQQqðàÁÚÚZì–u^CÀpß)X1~;мä#Ü8EÊ©*û^ª¬8ú;ã8îXõk!ó§ô0¾q ú¸@2"„‚}P€(ûûÀ¸qã†zçÎkkk„µµuGGGDDöÉvܸq–––;vìÀ~Ç>11ñܹs«W¯fý6¦¥¥åÀ×®]Ã^bRÖÓÓCÿEaLLL&Nœ¸}ûöòòr„PqqñêÕ«ß¾}Ëwf8Ångg7bĈ7b“B__ߘ˜‚û« F\PÄÄÄ-ZäááÑÑÑÁöë©%K–ܽ{·´´ÔÅÅ…Ïü󎃃ƒ†††››[mm-N÷õõŒŒìKÔÂAÐÆ8Á.=ÅžÙÞÓÓãíí——Çë%ÞÞÞØ§¾ÜÜÜ={ö,X°@OO×6|èäätåÊüáaÜØ¶mÛ×_­¢¢bff&))yêÔ)l=¯mxÙ²eÝÝÝŒ_V ¶°bì}{öì¹ÿ¾ŽŽÎðáÃÏž=»qãF^“Á—‡N‘TeßK• ÁA ÿ2Τ_+Z…ÜßéÁ TTFú»G !---00ñ– ©¶¶–ËÇóÐh´„„„šš##£ &ì™———››+!!1~üxìÁû‘‘‘]]]óçϧP(Œ;wuu%&&VVVäÉ笱cš››ãããi4š¹¹9§¯ û5aÄ´´´Îœ9ƒ?ªP8áÔ××ÇÅÅõôôL›6§›§Z&œœ\RRbbb2vìØÆÆÆÈÈHsssì¢n.½}û6==]EEÅÚÚZBB_ß÷¦Ò¯©÷>{öLYYÙÚÚšé‡'¸ISh\"åT•)“êêjyyyüÑœý—q&ýZÑUÈL¯û0é{TF„<|ˆ¦^ áÐ!'á§ $6mºR_[‰Jˆ‹v]»{Š9†‡S _8qÂÓÓóýû÷LÏO¨p€þ§€þCp €Âù]@HŠ‹‹§OŸ^RR²ÿþ¾|nT8Œ"""8Ý€ý¨áøñãÙn½xñ"¶‰ >v€O¨Wáð *pÀÀkmm½~ýº¦¦¦““‰Dðp€þWý®i222ÿûßÿD'Ÿ%¢_±Àgƒ‚àb<`€«€ANƒœ8 p à0(À)`P€SÀ §€ANƒœ BhÓ¦+ ô/¸ À`>ÐI8 p àÀ¿DF]½qs Sô Ê@'@„dfe½ÎãºrÛ­eeåí4ÚȽ†sõÆÍªêê­Ý¥¥¥ñ•­mmÇ÷^äähfb"°ó¢æÃ‡Àà7…ÍÍÍšš_Oš8ËÎŽLæíPggç-ÿ€¢ââ[¶ÈÈHãËŠŠ ¬;—˜Ïõóæóãúîîîc'~ëêêÚ°vÚ!<%O˜ž=Ïb\£¥5t”‘ÓnÑ1±I))øK)))aÃæÌš©¤¨ÈG¤¿üö»íôiãÇãr}×`¿¶ó ?ó^¿¶>mòĉ} GPžffÆÅ'ìØº º´ŸffÖÖÖÍ´³e\É)û‘=œ=sF_¢ËÍ{þ ¢àí[‰4L[ËaÞ¼1_ŒfÚçÇZŠ8EIQ±±±±½½]]]S:àÓ"¨‘‹Ë9ÌÓÌÌû‘Û6m”——øë¯ôŒ§Øn$IFZz”±±¤¤þvÆýƒeœ}]¼rƒ~;uzòĉ–_Mà¯4ƒ\À­3/>|Ã͞ϞýýÈçú Æ•±ñ UUÕÄï ¾êÈ*9xSP°ÂmMzÆÓ _޳Ÿ5SIQñ÷Sg~Ø»N§óoè½°€ `]]]qq ã2Û‰K,=ãil|Â]–Gp=Ë|þðQLl|Bss3×ùO33<ú3ã_Øý¬»½)(|ü$Iìõõ 7ýþXîêVV^ÎG¤ ‰OÊ+*°eÆ*c\/@Ä5Øí¼££ãú-¿Øø„Àà^ÓÜOÊ+*ž$aË‚-íòŠŠü‚Æ5Ùš™Ù—¸n¹oÝVZ^6y¢Õ„/ÇUT¼ßòýÎà;¡L»í;t(6>!tåúÍË×®sJ'|rú2r1ârS^QŸÐN£!„òß)%u´™ép]æI“¬¬ÞWVþú»÷Å3§Ù~2,.)‰‰‹¯oh¦­=gæ „PRrJÅû÷÷#"gͰ£P(5>Dþõ°æÃ-MÍY3씕•Yƒ"H®´¼ÌÈp$ã(eùÕ„ _~ÙØÔÄ6Þœ¼¼Ô´ô†‡¨ªÚX[¦JÏxZRú®¡¡á~D¤¼¼¾l3Íšñ‚:‚c2ÞÜ<)5%95uÚÔ©ØšîîîĤä¶6†ÞÅÖ”ÛD"„zzzâç½zE"“Ç~1û õ0ÚÌÔd˜ößûd¿ÌiooÿjÂx„УØ8ÓQ£>~ŒŠŽ^µÜEIQ‘›b//¯¦­Í˜q.iki™Œ2.*.Â^²m l³€Êz‘­­­¥®¦ÆTeÙ/s°õa"„b㌠i4Ú_Ñ::;¿4Ëö÷5(¨vÎô®‡b GŽX½ÜåAdÔ£¸xç%ß`ë[[[cãìl¦?INy‘-++;ÃÖFoøpâM¶uJ\ ™Ï³ž¤¤Ð{z&ZY2&¯…^CÈÉÍKxŒ²³±‘––*y÷nÊäÉÄEJý>ºáë7tèPg*ãJ×Ëcââ“SRÌGuww¿+-íèèÐÓÕíîî.*.qqv¦ÓéýzÊ„‰¿‘‹7sbº::›6¬?ð£×ó/ÆËi7ÆÙ—Í4ëW¯óG| ÷HÖ97I|fàF€^ØL³¾x7(PSS“iSYyÅqï“Ïž?g}‰Dú~ë–Ò²rÿÛA¬[Ÿ$'·Áýñ“¤¦¦¦ÛÁ!«×®¯ª®Fee¿¬®©©­«OLJîêêzõúõª5ëþzô¨¹¹ùNXøÊ5ëÞ°»— 8]”´ôĤ䞞|å¯G½°ûŠ™â ±qëö¬ì—íííbã\×oxSPˆz™›û¾²ªáãÇĤä§ÏžãË´ÿ^±FPbL(â”)“&ÇÄ%àkže>ïèè˜ha½$(N‰¤Óé÷>ù¡¶¶´´Ìóð‘ËW¯!„¼Ïœ}™“‹GùðaÐ;ØòŸ»w·îü!%5­³³“Ëb/ÿ^k¨æÓÌÌ;¡±ñ ííÜžzïééy_Y© ¯€8´NY@ôú)%-µÊðõœÂÄ6]ô¹âx{¯çÁƦ¦â’’}ÿy÷k ¹¯A´s¦w566¦e¶sÖc÷ôôØÚLGM³žrêìù’wï¯p)*.¹zñ‚¢¢ÖñÃ^3ç/^½xžxACb[ >Ô^»éë´`Áf÷ ¡·EÅ6o‘’’b[lChmk;ÙgñB§ÿ­]ƒÊÍ{µqÛv‚ët¸Ìþëü7 ¦&&[wîZëºÚvú´^ÄTUWwvvj J°¾^èíÀ›~~¥åå?ü’–vùÚõ+çωKˆs |ø¹Ø†C0‡á…BÑPWçt–Ã4ûb‹§ $>çá>€Ï \À?99Y‹ îÔývém-­ãÞ§ð§î!„ò^½®®®^±löuœ¢¢‚Óüù ‰‰Lï-(|û®´tù²o±«Ô¤¤¤¨ß,~ÿ¦©©‰×d „tut|¯úütøà´©S^¿ÉÿåÄïK\Vxû…ÆòÈ„÷¯Ç6nØ€-wvv’ê¿»ËÆ'%%•”œ‚þ¹‚¿ ®àm!A pJ$™DF½ÌÍÅÎm·je€ï v1ÿ‡Í4kl,䲨;::”•”/t º~ùÒõËIdòO¿üÊ6ðöööm;waûÎ{õz›«ýìYœZYÀôÚº¦[[cVB# ¸¿x@_Ú9«è˜˜/Ç™«(+#„¬§L!“HÿûMøb'Gì($%%Vº,+.)y[TD°‰¸NÙHrjjOOÛª¿Ä@_oºõTN fBZzzKsóòo±õ¦&£¾47ï5ï½f„þØ1_ ÕÔœdeÉú?míí!y‚}Èd²¢¢ByE…±¡¡¢¢BUuµ¾ž¢¢‚ ïw»€ˆÈÈE0‡áž˜˜XwwOïûq­×™ >ç Zp@?¢P(ßoÛ²yÛŽðS¿þ[ù¾²’D"éêü{Öyøp]­£®¾^…ážsìq¯G9Ž_¸Kë !„êê˜~*†ûÄL´´œhi‰zÿ¾òÏ»wƒï„ÊÊÊnÝèδ'™L¾žûêUiYyYy™`G&&bbbS'OŠ·³™þ43³³³ÓÊÂ"ÿÍ„Py9Q pJä°aÚËœ©¾ø‡˜šŒ²úê«9³fÉÉÉ'CãŸ{ê¸,v ü›g„Ð0mío—|ã}æluM Óíy!™@ß›ÿä—Œ?>€SK‘•á# Äaâ­K]Mð¿³Ø—vΚþœÜ< uõ­;ÿ~`E\<&6Žñ©“zzÿÞáo` z_Y¥¯7œÓ&ì^¶uŠ8ÈûÊJu55YÙË\_O/9•ùÂK Û*ÞW*))ÉËÉáktt†ÕÖÕqÊ8—ÙÇo[•’’jnaþÉŒÌçYßïÙ‹-/Y¼h›+¾IYI !ÔÐð‘5Ò·o»»» k>|èèè(,*újüøòŠŠ¼W¯‡¨¨–WTh¨«szÔ%|¢2rÌa¸WW_¯¤$Èò{Éh°LTƒÍ`œØÑhϳ²2³²Šß½«¯oèêêTW1ÂàýûJÇefb²`þ¼‹W®š™šbk$$$ètzww7>«îêìB1Ý-&FF­ss•‘•a\ÏÇG¸²òòSçÎoÚ°¿ÚmèPM÷õëªk>$§¦1hmm]ó¿bbbN æ/˜;wäƒ]ûöó#O¦YOݳϳ¹¹%.áñDK ürÅÄć Näw«V.vrLIM{þâ…ïþÞ½wåÂ9¦H±2Ç‘þ&ù.vm--„Pss ë)‰ÄöqQRTŒœ˜“—‡ÿ\3cÝaËX­qÚD§Õ)Û‘’’êèì`\CpÃ$ÛÈd2Ó[ˆ3Žá&û˜šš=}¦·›šŒºvé¶Ìôü*u55µ!Cž¿xag3é]?ìÝ7j”±×ÁÇŽÿ–÷êUk[ÛÕ›¾×|oµ´´HII%}–‰¿äž¢¢âÓg™O’S¨ß,f\O§ÓeY>UfçäV×Ô\»tšzkk+¯1òdÜØ±²rrq'&%ïܶ_¯«£ƒ8”@jz§D¾Î“šžîâL=sÆì™3JÞ½[µf]öË„Pww7xQI±’’kb¸,öôŒ§×oÝúñ€'þµÀ»²22™¬©ÁÃï·qj uuu‘=dÍ‚¥ÅW|‡ÉÔºúíœItLìØ±c\W®À×Ô××?~’ô(&ÿ œ“ƒ=%!”•ÒÑF°©»§ñØ•†ik×ÖÖU¼ß<ÿ27—ÓÎlé Ónjn.+/Ç?<¿Îïý{!n²êêêzšùÜsÏn¦·KJJb½†‰Dšig|çŽó’o°ÓU˜´ŒŒºúz‹ BÇþ)óyÖOϰ 6×iÑYïß ôõ¸Ì2|rú>rqšÃp£§§ç¢ÏEE…¯'Mâ7lp ø\ ¢IÉ).«Ý‚Bþdýüãéz×Ò²²Ã?ÍxúŒx7ié­›6¾ÈÎÆ^Ža2ÊøÜ¥ËØÏÆf¿Ì Ÿ=k&þ³[Ø'Õáº:f&&g/^úð¡!TYUuìøoïßó‘ y9¹éÖÖ7ýþø+úv£r[[Ûݰð'IIóìçà»añ*ÈË#„ªªªBt:=øNhÉ»Ò~}f,™L¶þzò•k×»ºº,¿ú÷S.A $²½½ýÚM߈¨¿°@²srBššJŠŠI©©XÃ#" ß±M —ÅndhXT\â}úLk[B(ÿÍ?ÿ€¶6Ü|QãÔh´¶Y` ñ¤q˜BøQ7þÚ9£ü7oÞ•–ÚMÿÏ×ÔÊÊÊæcÇÄ&$à?fzûq‡’w¥—¯^g>ÿ=H¶›¸ïJ¸É'*+)ýòÛït:ý¯GÒÓ3x* ˯¾ÒÔÐ8yæ\k[N¿^XXH\ \f!ù×Cë)_3çø Rl¹8SU”UvìÚ“šžÑÓÓÓÕÕ•–‘ñËoÞš³gØaû¼}«¯§O&“ßS(¶·€Ï¯#+Ns¶:;;“’“’?Iºî¾uûÓÌÌÛ¶òôA¼N ƒÖ`¹  ¸¤äÀ¯^¯Å55Å}˜ cã¾m†ñÈÉ$+ËiS§`¿ŽÚ¹mëîý–,[®  Ððñã„ñ_â÷újjhøÇ¹­ßpú÷ßMBâ?WÐq*QÆF‰´Ÿ=ë¸÷ÉË×®!„ZZZ]W®®«»Œºô÷Óg–,[N——“srXð®´”mb¸)vEE…ý{v9zÌqñi™ÆÆF˯&°­bl[‚´´4Û,0½—±©ô&¯ ãíÚ\tL¬¸¸8~O&ÎÆÚúYæó§Ï2µ´†"„¬§|½í‡]ÒRRMÍÍšÛ7mÂ÷䴉ˮ„“””øaÇöÃ?uZB•’–&“IË—}{ç^÷EA¡Pv}¿}ÿ¡Ã‹—HIIj¨k̰³-)yGð–^³ÿÕ„ñuõõá‘­m­[xolRRR'~>úóñ»÷í£Óé===†#GzîÙÏ>ß4ÐG½}[¤7\»>cÜ\œpšÃ°jnnÙè0¶,#-m2jÔo¿ü8tþÓNºÊ]Oïe2Ÿ¾;£±±±¹¹Ùb±455iµZ©ã¸eee¥­­­¯¯O¤Îøø¸×òHû¡"îÌãÍ-Â×v8z} ®«IDATàMÛíÖûÍW‘‚ ÄÆÆ.(<\à(²Z­ç/\ìþ¡ÇdºUUYþLÙÓ‚ äæÕ×½¤Ó}½d0\½Òë|1ÿÒgº/t_Z­ÖG‹ ëë^–‹/w°Ùì;/uuu¯šLùy_© ÝæFí*w®íûøõÿÔÔÔœœœµµµÒÒÒ––©ãÜL& jooOLL”:‹ÿñ»æàÊÿŒ’¹â©ö‘=IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/ArticulationsPalette.png0000644000000000000000000000013213135434036021574 xustar0030 mtime=1500919838.089981805 30 atime=1500919915.919981805 30 ctime=1500919913.319981806 denemo-2.2.0/docs/images/ArticulationsPalette.png0000644000175000017500000001326313135434036023452 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRCC‰&ðägAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>ƒIDATxÚí{\WÚÇÏäB! À„€¢–­·°V«­¤Òª¨õ¾n/¨‹¢m×Vð EE)¶U+T¥«àm×Ö¥õõV×^ëë•¶¾ÛÚ~ºÛz«"BÀ$$LB’ÉÌyÿ80ÄË-œ¯~ø$gΜßsÎä9çÌ3gf!À`0¿sxÛ Ó`OÆ`º‚ÖI§ËO=l«0Œg“ưŸ ûóä¯O—Ë …Báããó°Ä`0î°Z­wïÞ­¾{÷™Ä$`ïÉ_Ÿ.WÅÇ‹D¢‡m!ƒáŠÅbù¿Ë—ŸILj9OV(Ø1˜ß"‘H®P6âuºüúŽÁ`~_(ŠÓå§ZÆd|nŒÁüAž‹¯Ba0]ìÉLW{2ÓÀžŒÁt°'c0]ìÉm@«Õ¨kj¼ØÑf³i4š[¿ýÖ9r˜nHwôdáí[·*oßærGg£ÉÄ~¶Ùh›Íæ…bMuuƒÁÐir˜ß) Ã0 Ã%±59º&jšÆÆF???79ÍjµºOTúâÝÍÜʈˆª;w(ŠrŸ­½ä0Ío7oºÚľ¶Â0Ìí[·AÁÁb±% ­FˆìÝ›Çs7îvÇ1™$É=zŒ$é&„P¯×ß—DAtU,‡ydÑj4ƒع1ºÝ˜Ì0LcccxxxUU•Édbuuõõõ&“Éj±DDFªÕj>ŸßØØš;`i``£Éd±XP§k±XtZ-€¡i‰Tj0Œ$‰2@µÙl„+•6˜Íf}}=!eµ …Â`™ÌÇǧ®¶Ö½\½NGÓ4€ÏãI{ôèA’$I’æÆÆÐÐІ†‹ÅÂçóe!!hý¼ÅbÑj44M! ÃÂÂvÛw5†_75x<^Pp0r]­Fcnl45Ÿj»A7“F£H$…¾~~B£ÑˆÒ¥R)d@­ZÍÐ4 ˆÐ°0¡PèÕ'*J*•²§+V«µ¦ºÚÇÇG.—óù|NF,³‚–É\M§ïÕÕÙl6¹\Ö+ õr@.jª«-‹¿¿?m³x|~€XìëëKQT½N‡öª«­¥(Jbúyd‹ÅAÁÁè³½³“m7t»1™$Iÿž=={ö4F’ °ÏÐK.RnCMz½B(–HÒÀ@È0„§.Óžp¥BÈ0Œ²<†µœD"A_%R)I’ƒ!$$¥ “…=zF¶4‚ †Ñiµ©Tþ°à ±Xl?ûùùqqcÐÝ<Ùf³YÌf‹Ù¬i>ý0›Í6›M hi‚ A¸¿Ÿ„²Z|4{Q›°Z,:Žàñüýý¹äo’k6YÛzÀw˜€…„†ÖÕÖêõz’$Ѿ“[ãƒÁd72™Lƒ‹3w¯Ù5Šu¡ékŸ¨(ÿ€”è~¯ÖW/™-Žù¨««£(*,,¬gÏž\vG³nv°E3j¡ÀC/LQTxxx°LFÓô½ººNkdŒ×؇¸Ø«*lÌ=ÝkL6’¤T*e¿ äý‰ö Ð1I’¾¾¾|>¿eG±Ød2iîÝ â f³ÙÏÏO( Š¢4ŸŸMӮ̀Ò4­×ëÆUWrb‰Äh4ôú`™  ×ë ‚`'Û®ÐÜ»çéïï¯ÓjžÜ¾ ã4åõµ"%{ Ã0¬£scÖ±µ¿¿?¾ Õ„º¦†¢(’$ÙÁ uu6Šª©©Ñiµ(½V­f,@,æóùúúzV[¯Ó¡ :Î××7$4”ÇãÕÕÕÝ««ch9ž40P šŒFƒÁ€R(ŠÒétZ†-BÄãñȆä±EÕÕÖº‘‰D½ärŠ¢îVUÝ­ª²Ùl½är‘HלíŽþÚl6N‰Dw«ªªîÜñññ‘5ŸQc}Ø—}Ì#MÏñ:]~jä¨Q» L·]­p{&:páüùî;éÂ`5œº«Ç+ÉMÙ¶ñ ¦ÀžŒÁt°'c0]ìÉLW{2ÓÀžŒÁt°'c0]ìÉLW eeHCYYUY§©³¸¸1àÁ‰D!Á!ÊÖÂZK«ËÐÒhö«5¥ÁAB¡06:¶ãVÛÛl¶ÿ^ý/º)ka-7Zbtç»>8‚²Rõm‹'[[RBº¾ƒ„Ѻ³ , ÖÂZ®´’“9.QÄÐ4}îâ9HÑ-Ýž¶ñx<«ÕÚ¡ªÀZXË£—' c lê['0Ú‚OŠÄZXë¡huIî{ê „°Ã[b-¬õhu9î“;¡ Øô g¬…µ\iaÚAÀ‡0&¬…µ­.@ç{2„°©ÁZXË…ÀçÉm`¿Æ‹-“¨ŽÄZ]X«¤¤$77÷A´ [7þöòå7—-v|êÈg’ÆOž²f}þMn/Á¬¼Sµ£t—ÉÔè>ÛÅŠŠa£ž®uö4R´I£Õr÷2«ÕúqÙ'³_IKxvìØ ©¯ýõÜù \´¸z1„@ÐÉcrSùÒÇwg­ÚÚÚ?çô¢^7nÜÈËËKJJjk#Øk×còßJJK÷ì}jÔÈů.’H$ÕÕÕŸ8ñç´¹kßÊINJt/Qy§rç®ÝS&Oòõu÷ˆòÇbc?x“D,veC›ñªÜÕß]þ¿Y3¦ˆ1MgÏŸsÙò%‹ÿ:kú4ï tf÷y2 †ñX¢V«ýòË/kkk!„J¥2%%…ãã×Y£¹k= ÝSëøñã/½ô’R©œ8qâäÉ“ãããÄ¥ÛZ¯7êõú#GŽ=z455µ}µN>]ºgïªeK_˜4‘Í0cÚÔ‚÷6®]Ÿß7ªOTŸ>\TÜWD,6Ìi¶¦‰gÇûíÖ­3gϽWÿÌèÑh—ñÏ?·®`Céî=3¦NAýc› tƒÝ캹ßu…ÕjÍËË‹‹‹[´hÑš5kÖ®]›žžWXXHÓt›æQµÚ‘6i2íO³GyöÅ9óþ÷ÜùÖëêëá k0MÓS&M|&a´ÙlFyP®ÌF~þÏæ¿úZZú‚ÖlÿÂÕ“)ŠzñÅ·lÙ‚úøøø ¡˜$ɵk×Î;—¢(.ljc¯aÏÕ«W¯^½êÅo¢­Z‡NOOÏÈÈ8räHGk=îµüüü–,YræÌ™~ø!???<<¼¸¸8%%%&&fáÂ…Ÿþ9Ç#åE½¶nݤR©•••ëׯ÷®^NÇœµúæo·RÇ=[ _<oÜs).U¸µÎOä¯]S´y#Àh4¾þf¦ÅjY‘•µ"+S£Ñ¬Ê]í°Ëþÿ,Ù½')!auöJÿžïme7}zèð¦Â¢1‰‰kÞʉîßoyvNk¢ûõ“ˆÅ¹yëΜ=‹^Ü xlÀ€ìåËÚô¢‚w7züñ×.p“Çîz2án”ÏÍÍ=yò¤L&{ýõ×ÇÉãñ*++=Z\\|ìØ±ÜÜÜüü|65•OpQ,_¾|×®]€yóæmذ{å½Ð D‚‚‚¸ä­£–B¡˜?þüù󫪪Ž?~äÈ‘O>ù¤¬¬,(((99yâĉcÆŒñx—÷zú 2xPpP„ðÚõëõõõË3 ûôî P*Ã9Ê®H…Z,–}ÿØÿÂĉYo.†ŽIL\ðÚëßÿpBHQÔÎ]»3þ2ï¥?φŽI|Æj¥JvïyrøöVùùùmÞøÞû[–g¿%bc¢ 8,^õÄÿhÿŽÖÔÖf£'ŒŸ>uŠûCÀ)âuñâÅ;v$%%³?w¡R©\´hÑìÙ³.\¸sçΔ””§Ÿ~šËÑâA¹~ý:rc@iiéüùó£Úò6iâââPþ¸¸8ï<ÙÖÖ­[KKKÝßÀãñ222,p×õzQ/…B‘žžžžž~íÚ5t[VVVVV¦T*÷ïßÿØc=¸„°°°pÀ€sçΛ7o†"ÇV¶zƒ´×Z:?…F‰ CÃûÏ<í¿6çaÐQˆPFøúú¾»ùýYÓ§©† ‰Ž^µl):OD»TÝ­644<Ÿ2–}1PJr2òä7oêõú¡C†dÓ[{ŸñDÁ»išv¸÷#&:ºôÃbF{ùßÿþ÷?\¸xéã–)äò‚õyÑýúµ¶¶µÙ€xÕPW/'b§0÷E¼\µ`AAÁðáÃ÷íÛ' [gH${÷î5kÖ¦M›žzê)ÏG ºÓ²ÇÁz¶•9Ò&-@```DDŸÏ—J¥Þx²[-@ ‰ØMöƒ!ŸÏGǃ 4õmßzÙïH÷­£òؤµ>|éÒ¥?üÏçC—,YR^^þý÷ß«Õêììì={ö´© n•‡õܺ}[éì ²·nW8}cž+¤RIqÑ–Ò=ûrÖäÙl¶?Æ«¿ºÈ>f¦«×¥lJpó»]HÀ¼Œ…e666:Ø!¤iZ*•<;&ilò‚ þû˯«×­[·î£½œšؽíÍEÃà0&;^¹råòåËçÎhk}}ýÊ•+V®\‰†h@PXX8jÔ¨+W® 8ÐÃÑ"¸ÆBû÷–†~ééé}ûöm³'sÖB 4ÈÇÇÇ‹é±G-4ÑåZT»Ö«¢¢âرc_|ñEee%jÕ¬¬¬ÔÔÔØØXr\´¬Vë¦M›FŽ9yòd”G ¬Y³fæÌ™‹åĉ»wïNKKãÞ†N{°°Ð¨>½?û׉‘#F8l¢iú_Ÿ1rÄpûÙß*¸L¶Ïý^A>EQß_ùqGIiæò•|Än•4­B.G)èe½B™,—û–¼W/{K~|øË/¿Œ~Zï¼óεk×P‹a˜¿ÌI;söܧ‡;¤où`[uMÍ+/þBH<€N§C[Ù([>ûù—_4m†Á` B5dðÌéSkÔêÆÆFØì8D†fΜ¹nݺ7ÞxÃ}¿ !lSd¨oß¾€ÃHÕ.ZS§Ne¯òu´–׸×2™L%%%GýùçŸAsÜ+55U¥Ry±Òc½H’,))INN~òÉ'2,Y²ääÉ“7oÞÔétXµjw-§æ¼üÒûE\¼T‘˜0Z*•Ô¨kO|þÅõ›7×¾•Ý;2Bاw$ŸÏß\øÁô©S~üé§«×®±»£ Ó…‹—ÂÃCŽŒˆ´Z­«×çî9£Éô÷ýûþáö!e@ðâŸfmûðo>ð gΞ¿SUÅnš›öÊ–¶©Õµbc®^»þ÷>^‘•é`°¯¯ï‚ô¿mÛ®®­ýÔ¨ ÀÀ#YñÍ·_*_ûVŽ}N7fs9F—ˆ×œ9sT*•}ú‚ Äb1„pöìÙöéC‡}å•W¸üP:s•|›´BBBÀ,ú}êuáÂ… 6 (ׄ ìW†tD½>ú裚ššâââÖ[Åbqvvö‚ hš¶ÙlÕÝhÑ4>wÎÐ!C|òÉö¿í0šLR©$~¨*7{eïÈHÇ ‘ÉV-[ºs×îüwÞñÄÙ+–§/|7`€jÈM…E~¾¾Ÿ:(ù¼ûv~Ñöíë7¼ãëÛcX|ük 3Æí?͘n6›û쳈W­[›ñú_Ѧi/L¦(êà¡Ãÿüô B._ž¹dÜs)­#š³¦Oëß·ïO?ݾc'I’ÇÅmÞ8tð`63„04$Ä©ÙöÆ8m.6½åé?‘Olt¬Ã»¹Û‘Htå§+è¡PX«ƒ´êêêd2Y»Ü!èQkýúõ&“éí·ßvUÂÒ¥K?þøãŒŒŒœœàVkðÀÁnÜž× hþ‰;Äíx< "¢•B¡# …BÔ,èjA€í;P9<½ÑíÂçóy<žÓÒØMh_W&ì ÍÁsö]ª¬–S³‘…nâ |>ÿ›ï¾!xßìšè8Øò±VÇi·×ÔÀ£–J¥züñÇÝT9++K*•ªT*Íb?F¹1ž¦iW—dœf°F§ÃŒ „­iä°;z×¼ÓÒ6ya°ý&Wf»¯¬“óäN»s Ú­ÈÃZ¿w­””àvÞ.“ÉV¬X¸ÅäY­­T£ÕyrÛ¯Oz§Šµ°–G­êJ8“;á>4ƒÂZX˽~ Gš'Ãæk†X k¹ÒêP•® ×;(Ú‹¦¨ÖÂZ®µ†ÁO®ç&ììgkr¹D†µ°>Un+-žÌãñP¼»ã‘ ÊFù}°Ör£…ÇdîX)«ÐÇfµ¶¬ Q(•õúú@I ûF´ï8]epµ‰ iˆX k¹Òj ÂåáB¡´NE=®šjG]-ãµnµº:À?àî;-c²¼—BXS[ãôz7{ÛC@Â>Ý~a÷Ø…1¤©B®@Gka-çZÕðêõ«×]¸ÂiäÌ©…^x_¥\|öPfSØ}¶Ûæ4›¨ÑîÞ¹óÿ:.Ékx%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/copy.png0000644000000000000000000000013213135434036016406 xustar0030 mtime=1500919838.113315139 30 atime=1500919915.929981805 30 ctime=1500919913.329981805 denemo-2.2.0/docs/images/copy.png0000644000175000017500000000106413135434036020260 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR$,BB„gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿ‡Ì¿ pHYs  šœIDAT8Ë­’1 Â0†ß9œ\DppqÐŒfî¼ö‚¥DDoСˆˆˆHEDŠðŒh4¶àà7üüòàüðo© µ$%%ðo†k¢„–nêL7)-yŒ5•Ïó ã“;IJ ýè˜>ÈIÅ‚*1_ÚxB'Aß, ":)Ö´€)™$Ûœ{päÂ0ßI—ª'dÒ°\ĪNÑY„Dud¤‹Õ ¹Žòx^êÉ‘Ô2¨;½Ke¥C<ŸŒG¢ã\—v›õz;;iMs::;öß…´T±¯ 4#%3@ˆ0bÑÒkÀòÁj›ÐÒkÀ“ìeºùIº·¬í{Ì6?žtEXtCommentCreated with The GIMPïd%n%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/CommandCenter.png0000644000000000000000000000013213135434036020153 xustar0030 mtime=1500919838.093315139 30 atime=1500919915.929981805 30 ctime=1500919913.329981805 denemo-2.2.0/docs/images/CommandCenter.png0000644000175000017500000035150113135434036022031 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRÖâN[>sBIT|dˆtEXtSoftwaregnome-screenshotï¿> IDATxœìÝwtÕÀñïnzƒT$A "]ª„P¤ >¤«X@D*φ ¨Xé ”  ôz%t!Òûn¶Ìû#dÍfSvIßçœ9ÏÌܹsë¼Ë¹*@A!„B!„Ba{E‘±5!„B!„B!¬qáÜ)jÖz$o`-Àµk×°³³C­V£( zƒ£Á€ÚÎ{;;EÁh4šEPÉôß3gÍfÕæýw"B!„B!„â_¦g»fŒ5ân'ã¶Ù±mÀ?kùŒF#YÙ9xûxQ­ÚCddduò$‰IIxzz„«³ ÙÙYôzT*•Y«6ï'¤iÛ; !„B!„Bño³jó–ûz`-ŸÅÀšÁ` )1¬¬L‚ˆ‰‰aëÖ­¨U*\\]¹té¡¡upwwG—«ÅÉÑ{{‹hpvó¸#B!„¸ŸEÌy€®Ã§Þå”!„BÜ¿6oÞÊSO…¡V«ÍökµZ–,]N¿—_´˜XE ¬ÙÛÛS­Z5\ÜÜÐëudeeãââBƒúõñöñ!%%…ÌÌ ²23Q«TøWªd±&+£³'„Bˆû“£}:>AX³G ¬ì‡Z­"5=‹‹Wã˜ðÅÏw;ywêê>r¼ë{üN–ߦyÓïÿn¹Æ+„Ba‹šµ±:ìùè¨bÍœ5‡™³fóì3½™6u²ip->þ:ÃGŒæø‰“¤¥¥9Ïb`-33T*ììÈÑhÐëõ8::aggGnn.999xzz¢ËÕa4¹tå ƒ‡4‹Gf¬ !„ÂZn.N|ôúË…¯WE®Æ'ðòõÔ|¨*ÝÛµÄÝÕ…‹Wã˜5Ñ—cÊt@ŸŽ3ì?ÝP…”ôLö9Í·‹#ÈÖhÍâþô‡åü§ÛSTòñäïØÌœ¿Š¨sWLñtnÓŒg:>A•JÞÄ^ObɺífåTÜï+[Êïé°ÇèÕ¾5Uü¼IHNcզݬټעüŠKkþq€µk×ÿÌ\³%þ¯¬æù.aøzU¤ý€q6´!„Bˆ<÷ì3$&&ý‰ ‰$&%q#! œ:uºÔóŸz*ŒgŸémT[¾â7Ο¿À‰“Qèo®-`ooÏ„÷ÞµTƒ"Ö<ÜݰSÛ¡ÑhÈÉÑ ÑhpuqÁÕÍììl\]]HKÏÀ ×£ÕjHIN¶ˆXf¬ !„ÂZaÍê°mË_(ªb_1°À”Š@eœîO5cȳX³q‹~Ç‹Ï÷aÄKÝqPrYyÆ,ÎÕ<óÁt­æÍûãßeÚ›¯°i÷†¿3‰zù1qÂxÞÔ‹S怣[™Î«P¡ÃÇMåú¹#„……1zôh”ÜL¾ù}'¨ìLq7 öáÍIŸñX­*¼õÆÞЃaÎ':¶nĨ»pàX'N½–‘£G›å©¸ßWÖ–_ç'›0¼ïÓlÙ}€ñãÆÓ«ÛÓŒzù9Ôz ëœ7‹³¸´v>ÕôÝ·nݺà(AÍmŠ¿NUwF¾÷Ùñp1äÊÌ7!„BÜ’¦M6ûÛ`0””dh‹¿~>œRìùjµšiSóâÈ\;rô˜é¸7_Ïü’ÇkZäùkiéé8:9aTôzŽŽddf’•Mzz:îîî zrsuètz F£EÄ2cM!„Öò¬7@•””„ÖµJ1¿#ž~¼¿/™GšÆÈâMGéÖµ+ŸjÁoÑ;{›ÂΟ?ŸŒ,#‘¹ÿ|dö×ïg“‘i`§6o°«ZP Jâ9´k”鼟—ÿ}N— "Ç2hÖèQ¾þ~:×ÊæqgêÙ¬Qx  ¨ IÐT¬A·6y?Ö~üf )éèܪòÍÒ¿x¬IcÓùÅý¾²¶üº>Ù€%ó¾']£cÉÖ“<ÿüstoÍÚ[Ð;yY•Ö‚Lß}Ëʰ=þ,#º Á(*5ÈoG!„B”;;;*UªD¥ë”4°yƒk£Fgóæ­$§¤˜ö{{yñûÊeT­Z¥Øs-Ö\]\P0¢ Ñä ÑhÈÕj9þO·á‡ÿޕГç.³|õ(ñQh=ªYÄ[Ôµ~^¹‘=Ûñý÷ßÿ¬ Zñ !„BÜ)uëÖaÔÈáÌœ5›úÖcÎì™T®ì`± Áò¿Ñ®íS„‡·5‹C(Š¢páÜ).\ø›K—/såï¿ÉÈÈÀ`0 R©ðpwǨ($'%¡Ñjqws£VH!!!xxxôϬµ¶=ûóhX;PB!„¸¯(FȈC• z  €ÚÜPüjç‚ôXTY‰`È;Gwðøç·ˆêê¾¼Vš´fß­ž‡6UÊeÐç€Ú¥BÕ¼¿o!n2o ÊŒ½ìQ<ª J¾`î–ËÈNB•w3 àèâQœ+ZŸÖÌë¨ÒbÀ¨³LÛ-Ä/„Bˆûˉí«Ù²jÞm½†-3ߊ›õ¦( ó,¤ïóÏâäädvÌh4šf®5œÑ£F˜Žíض‰CÆX¬ýýw)))ÄÆÆ¢7áæt8•J… PÛÙáîæFÅŠqwwÇÑ1ïþ¦ÈÛöìOHSó>¤¤¦0Ñb´Z-5,2ÎréÊžëÓÛl¿¢(°hÉRü|}iX¿>gΞ-6݇åè±ãdff¢ÑhHHLdê'Ó‹M/À¨7Æü05‚ƒMמ¿h&¼íS,[ùõëÕ#´v-þذ‘Q§ÈÊÊ&''›'ZµÂ¾À—F£á‹¯fÒ÷¹g©S»¶E^úê j× 1ÕáîÈHÞxgié鸹¹²eÛvV­]KØOàææÀ{?äÔ™3lÞº ÿJìܳ‡ß׬åÔé39z _Öÿù'[¶m§G×.Løp²MáU*U©u›ŸŽ¤”d,\ŒŸŸ×bcùuñ<<Sæ6_Rý{{{—ZG¶²¦_Kß¿µ¾oM›+ÈÖþUZß.)Íׯ_·hGû(÷¾Zx&®ÜCîÏ{Hµ ª\¹|‘Õk7ÈŒ5!„B!ŠS³VF¼6„7Þ~—‰“§àééI“F iÒ¨5iŒO¡+W­¦WîŒ{k,Æ›ßéýü ìÙ»—ŽíÛ³pÉR9ÂcMòfgìØ¹ T*:†‡3|Ìë4i܈O¦þµZM®NLjѯóùW³øfæŒ"ÓVÒõjÖæï«WÙ»?_Ïø‚¦0÷ÇŸøcÃF^}e@ÑeVBÙ)ŠBåÊþÜHH0}¯æãO?/6Ý?}÷ é\½v/þ7¾/÷/1½÷†‘Z¥6»¾Z­.´/ïÚ£G '5-œœl¦O›jñªÐõ7ÈÕé¨ìï_l~ÒÓÓMët:fÍù–6O>É´Éy ^¿ÌcüÛoÝL£Š„ÄD~ýùGììì¸|åo^è׃AÏOs¿EQZ·jÅÛãß#6.ÞæðUK­Ûütlß¹‹e àY±"jµš×ßz‡»vÓ«{7“’øyþž¦c_ƒÑhäò•+ô4—bû‡µm¾´úÿfæŒRëèv‘¾o{ß·¦Ídkÿ*­o—”æß–.6kGééé·¥¯T-Så’ç^»‡Ü–µ¿¯"99™!ƒZ»~ãßýð#/<÷!5k”×3gѺeKššöj Nǯ‹—péòeÆŽCÅŠJ?ÉJ ‰‰,]±’sç/™™IåÊþ<Þª%ÃÃmZ©¢<òy»:r„mÛw0öõ1%†;uú ¬çüÅ‹¨T*ªÒ£kWê?Zï¥ôßÃÚ2B!Ä¿[yüø®äçÇŠÅ Ùwà {öîeßþýlÞº µZÍSaaŒ3Ê´Ræw_ÏÄÑÑ‘ÌÌL ïuJ•J…V«¥ZP Á?ÌŽ]»M[wìà‰Ö­‰‰‹åï«W™4q‚éL•JÅ‹/ôeÜûIOOÇÃÃÃ"m%]OQìÔv\—t=€ÀÀöïÇ/ ~eÉòÔ ¥ùcMéÔ±î7_I²URr2Í<ófÝÄÅ_/5ݶ¤·¼yyzœ’Rl˜ /a0¨R“7P©TTö÷7W… À@´Z-É))xßü£)Lþ+MŽûò'l omYùúúä ^æ§·À_¿qƒÊþþØÛÙ™€ Õzˆ»÷[&Ö¶yk꿨v{¯xÐú¾­ýÓÖþU[Ò|;ûjYò(÷<÷Ú=äxôZL,uBkóê€þåïÏóÅÇÛ›¹³g™þ¥àÉÇgÜû‰Ü»V-[”ë5mq6:šœÍm¿Î™èh¾ÿég^é÷2ý^üٱϿšÉ·ßÿÀ­[á_éZåD!„÷…²ÎZ‰‰eÖ7ß2bè‚M?ö=ÜÝñÚPâ¯ß`ïþýŒþÙÙÙ 1 {;;žíÓ›çžéCÚµ=ö-SZÚ†…ñÍÜï9rìW¯]Ã×LJF ²ëæÊèÃqsuý'7_ò¯äg‘k®g0Ø¿/<ÿ»vïáà¡Ãüºd ¿¯YËÜÙ³p-x­ ­Ø²»tù2éé鄆Ö6­òVZºóeee•šÞ’`>;M§Ó™…QËô•^__*UªÄÑãÇióä–yƽ?‘ÐÐÚL™ø>NNN(Š‚V«5{>ÐææÍÉŸ©Wøšùÿk4*E¤Ë2¥…·¥¬ ®Z¸<\\\Ðææš=4Ã?3`Š:Ï–6oMýU^w‚ô}Ûú¾5qfkÿʧ¸¾]Zšó)ŠrÛújá}ry0î!ÿŠ5Ó ‰‰T­\™ŽÅ¬`’ÍÖí;oû»#÷rüÄ ÜÜÜhß®-Õz¨È¸<Ä•«“ššÊºõhÛ& ._¹Â–mÛIIM%0 €§;´7[ecóÖmÔ %5-›61àå—ð¬XÑ,î«1רRÓ¬Á4¬)M7&ýæTG[óiKøó.²eÛ64-!!5èЮvvvì‰ÜKl\¹¹¹¬[¿Žíñ···*Î#G±{ï^£‘–-š›¾|ó,¤J•*¼ôB_‹cû½Ì–mۉܻžÝ»™ö—Vþ[·ï v­“ؾs'ŽŽŽtéÔ‰€›«–œŒ:…§gEºwéŒÍáóE>;ýHMKÃ×LJ¶aaXå$?^­VËŸ›6“«ÓѸa‹¥}m-3!„B<<==9|ä({÷ï'(0д?ÿ_ãFîîy3)¢NŸ&!!% æPµ*ƒƒÁ@fæ?¯®øøxS¿^=víŽäÒåËtyº½ž‡ª`g§¦Nè?È>~ò$¦ÿK/ZšœÃêˆuìØµ‹žÝ»£(Šéq/]¾ŒF£!77—¿ÿÎå+WÈÍÕ™fd´oÇ–mÛˆ:}šŽíÃQ”¼Õ6ë׫Ç×ß|G\|<:Žk×bøäÓω¿~Ýôáé‚›5×Óææ2ï×…¬ßø'Z­–¬¬,öí?@Õ*U‹Ì3€.7—]{"on{X±ŽÑo¾Å¡#GxÜ8Ô7g8X“n¬J¯¢(xzz²{ï^ôz=Š¢°nýÎ_¸€BÙ …Ò›? ¤¨í¥úâãíÍ;ïM`߃ t:ûäó3©Z¥ íÛµCQ®^zÔåÛï$1) EQ8q2ŠUkÖÒ½KgS= ^õÏ IDATÕ¶ŠjsÀ-…·¶¬ŠlãâmÕ¢9ÞÞ^|>c&iééFþÚ¼…}Û?lióÖ¶ÛÒêÈ–MúþíéûÖ¶¹²ô¯Òúvii.ØŽnW_•{ȃy¹m3ÖnܸÁ'Ÿ}n±?£À,.EÉ[Á¡aýG™<ñ}ìííÑh4Œ7>ïÂY3‹ŒûÒå+üôÝ·T¬X­6—wÞ›À×ß|ÇOß}cñM³Wú½LJj*1±±|üßÉèt:fÎù–Ç[µäƒ÷Æ£V«IKKgؘ1üøË<Þ{çmÓ¹mÞÂWŸýÐ"–Å:h ïN˜X`¥ŠF4iÜfMš¹R…µù´&|vv6Ÿ5“îݺ2fÄp oöÚ#‰Ü·aC^%9%™œ S'}`Uœ‰‰y+vôêÞÝô®ÿÅK—6z ÎÎÎE–Áõ7Ðétf£Ï%±¥ü˜;ûk¹xé2ƒ^F®.—9_}‰J¥¢YÓ¦|0å¿ÄÅÇÛ>0 €¿¯¢ëÓLßAÓëõ¼øÊ vGFš}ÿoûÎ]üüýwøÜ\ªú ï³}ç.z÷è~Ke&„Bˆ{‡-âÅ?vÌhœølÆW|úå œœœÐjµØÛÛ3àå—éѵ †Z!!´yò &|8™ ÀRÓÒ©Z›§Âž$býz*Uò£W÷n<ùxkfÌúšF àçë‹Á`@¯×3iâÞxû]^ze^^^$''óHÝ:¼9zT‘ù°æzÏöîEn]ùbæ,~üeYÙÙ 2˜ À‹Ù#·*hFf&“¦N3ísuuᑺuùfÖW„Ô¨aúGk[Òmmù xé%¦þÿéÿ öööTððà¹gúpéòe‹‡IÈûö¯[¶2dÄHf|ú?\\\,òôõŒ/˜òÑÇLøpv7¿d4 ­U‹ÿNúÕÍøôz=ãßy›±ïŒã…~¨P¡iii´hÖŒAúªË_ó}¦=6‡·¶¬ ÇñODyûT*Çc‡“xæ…qqqA­Vóê+XºbE‘íÊ–6omý[SGåMú¾m}ß¶6gÎÚþUZßnðè£%¦¹p;º}µ¸v#÷ûûr³þ.œË›ŠçåS¹Ì‘~øßi<|Ølêb¾¬¬,Ž?ÎGS&áëãË#ùfÖW„Öªe ³s÷n>˜2•5+–ÑðPþóüs<Ó«'1±±¼ôÊ ÆŒn6ê𑣌7ž¾™M`Ëe|¿˜9‹˜ØX>ÿäcŽŸ8ɘ·ÞæÇo¿!øáê¦0ËWþÆóæ±aÍjž}ñ%oÕÊ4hU½^ÏC‡ØðæÚµÔj5mÛ„ñÖëcprrâÜù 6åÓšð‡Žeò´X±x¡iÀ`ýÆ?yøáê„֪Ŵéÿ3 ¬Yç¶;™9çV-[‚[;~òÙçDîÛÏêåK-ò&:ša£ÆðéÇÓL+Ô”ÄÚòïûr:„·c`ÿ~@Þèrx箌{k,Û‡ð÷Õ«ôußÏ™Íû“&Û¾f`RSSqqqÅÉ)ï#Ž999¼2ä5žx‚aC^5¥£ùcñÆè‘¦´Îýñ'9Êw_Ïdíº?l.3!„BÜ"""èØ±c™ãQ©T¸ºº’•MÔ©Ódggã_©ÁÁã`ooZÉ ÀÝÝ3gÏÇÃÕ«üðÃdffqðð!ªáçë‹J¥ÂÓÓ½^oöÖjµWWWŽŸ6.777³A5€§;v(2ÖÄO%??³"€‡«W'rßþ"ãÍ_å$µÐŠM]¸xñæ*'!6•Q3¾JšfkxµZÍšˆN9ÃÕk1\‹¹†Á`¹ÊIþRÄE±¦Ì ÷!„BÜ¥=,ߊ²ÎZÉ#33µZMƒGë¡R©0èu:t7hòeddðPµj<\½:ƒôôtT*-š53}ãFQ’““-®c0ÈÈÈ VÍšÔ Áh4’–Vüo4k¯—™™‰—§§iõz½^Ovvv±qfee‘•eýwxJKwff¦MéÕh4x¸»Ó¢Y3E±HKJ¡ÕùrssMrss‹¬óükU¬PÁTƒ¡ÈòÕëõ²²¨ZµZm:·¤4$%%YÄ“¿ÏÖð`]YoáºÍÍÍE¥RÑ´q# ï ”ìììÛ€-mÞšvkM•7éû¶÷}kâ,еý«´¾ ”˜æÂíèvôÕâÈ=äþ¾‡”Ë« ·ú#ÆÎ.o€gè ¸ºY®(TÜ€†^§/òïüøJâè舢佣noÿOöóã(ø/hªF1¯ÅÄ0sÎ7ŒöšÙõªT©Ìˆ×†r#!‘È}ûy}ä›óiMxggg‹ïº•ÄÚ8su¹ÇŠú¾Ü?çùáçëËÑãÇ oûT‘aÞyï}BCk3mÒ‡6•ÿí”Íàá#±³³£W÷ntïÒ…š5‚y÷ý‰aKjÖ”Ùíø‘/„Bs·ë²ÊóÇwI–þí¥(Ši5käæZþ6)ëõôzýmÿfmºoGz­-_kãUÅæz¸ÊÚ–ÊzžµmJ¯ÿ[¹~YHßÏck_*K¬¹VYÃNËî«r±Í½r¹«‹T ªäMlX¿¾iS«Õ9z¬Ø÷^ODE™ý}ìÄ ‚‹ n&0 o•¨S§ÍöG>«‹K±ÓS «X±"‡awäÞ"çtlϧ5᪒““ÃßW¯šûæ»ãX²|…Ez¬‹3€¤¤dbãâÌÎ-¼‚JA*•ŠáíØ´e‹iV\Aû$9%Å´jLy•Yˆ:Å„>š2‰gûô¦QÃxxx”8j^”[)3!„B!„BÜîêÀÚCÕ‚x¤Nf7—Äļ)‡ñׯ3ý³/,* Z¹jµiyÖ+_åûŸ~¦QÃÞ\š¶$!5kP'´6sæ~ošæxâd«ÖFЩc‹ÅŠãáîÎSaaÌ_¸ˆ?7m6½Sœ““ÃêµìÞ³‡®Ÿ¾¥|Z¾I£FT­R…¯fÏ1 ý¹y3GŽ£NÅòGw­‰³uË–xyzò¿/¾$==EQøsóf8XbY¼ôB_¼½¼ûîxö8˜7ES¯gÿÁƒüï‹Tö÷§ÓÍWù—U®_Ï[‰TQVü¾Š+_-q†^a·ZfB!„¸7”Ç b²É&Û¿g“¾/›l²•e+Êm[ÔZƽø÷? o¿þx{y‘”œLÚµ]¢aO<Î+‹³3™™Tö÷çÍQ£¬¾æÛo¼Î¸‰òÜ‹/S¡BRÓÒhÚ¤1¯èoSÚß3 ''G¦þŸ|ö¹ÙJ/ô}žÞ=ºßr>K oggÇø·ßâýÉ“éñì󸻻“ž–ÆK/ô¥AýG¼•/o_Π׆1ëË/JÓÉÉ‘wƾɔ>¦×s}qvqA­Vñò‹ÿá÷5k‹-ggg>ÿäc>ùìsƽ?Ñl•“š5ù`ü8œœœÊ½üË"´v-oÕ’÷>œDP` iiiÔ®]‹'Z·â¨Z…>½z–Ï­–™B!î ÅýˆBÜߤï !¬UæUA#""Êü )ƒÁÀ‰¨(’“S¨Z¥2¡f\”¿*è·³fâååIÔ©Ó¸¹¹Ò°~}mº¦N§ã؉¤¥¥HíZ!·œþÔ´4NŸ9CNŽ?__®^ww7‹pÖæÓ–ð999;qNGÍàT©òOýåÍ;„Á` U‹æØÙÙYgFf&GGQŒ4¬_Ÿ *X]W¯]ãâ¥ËF‚©Y£èÅ$ʳüË"êôi®_¿ÁCÕ‚¨Lvv6û¤fp «f@æ+K™ !„¢ìÊã7iQq¶k×®\ãBÜ]›7o¶jUPéûBˆ¢lÞ¼¹üW-vvv¦¥r­UÉÏJa¥¯ÚYš6n|ËçäY±¢iUÐ’ØšOk»¸¸Ð¢Y³"ÙÛÛÓª…yº¬‰ÓÃÝ'Z·²:š-æPœò,ÿ²x¤N©SÇô·««+mž|ÒæxÊRfB!„ø÷’Y+B<˜¤ï !¬õ¯XB!„âßH®…x0IßBXë®.^`« *0°?|}}îvR„B!„B!Äîžš±æáîÎËÿyán'C!„B<œÑh4f‹0 !î]Z­ggçRÃIßB¥¸{È=5°&„B!ÄòÐCqöìYjÕª%ØBÜã´Z-ÑÑÑ<ôÐC¥†•¾/„(¬¤{H¹ ¬y{{—G4B!„BükÔ«W¨¨(Ž=ŠF£¹ÛÉB”³³3Õ«Wç‘GA«Õ–Vú¾¢°‚÷øØ+fÇdÆšB!„EÐjµÔ¯_Ÿ¦M›¢VßSŸ&Bb4ÉÍÍ%;;»Ô°Ò÷……•t‘5!„B!Š‘mÕƒ¸âþ"}_a-~B!„B!„â”ûÀÚÞ½{8p Mš4¡iÓ¦¼ðÂ ìØ±£¼/sOØ´iC† ±éœk×®ñúë¯Fƒ èÑ£?ÿü3ƒÁ¦x^{í5Ö¯_oÓ9¶4h›6mº­×(è~h[Ÿ|ò “&M*SZ­–>ø€Þ½{“˜˜X> B!„B!„ÍÊu`íÿû-[¶$::šîݻӾ}{.\¸@XX3fÌ(ÏKÝΟ?Ïo¿ýfuøÃ‡ÊÆiß¾=ÄÏÏaÆѩS'ŒF£Õq­ZµŠ³gÏÞJ²‹5cÆ >þøcÓß+W®äüùóåzâÜ/mkÛ¶meŒœ={6Ÿ~ú)uêÔÁÑÑÑ¢^„B!„Bqg”Û7Ö8Àøñ㙓&MÂÛÛ›åË—³oß>Ôj5O>ù¤EšJË[Qñúùù›¯’WW7näôéÓܸqƒ~øWWW‹zqtt¼¥k !„B!„Â6å2Ý(++‹M›61`Àììì,Žûûû“––f6¨¶zõj6lÈï¿ÿNrr2Ÿþ9õêÕãÊ•+¦0ï¾û.Çgذaäææ²téRš7oN¯^½˜5kF£‘¯¿þš°°0ôz½ÍáæÎK«V­Ø±cYYY,^¼˜úõësäȳtLŸ>nݺ‘œœLTT={ödÖ¬Y¦0Ÿ~ú)íÚµcûöí\ºt‰Þ½{3wî\³r8wîƒfË–-E–chh(ëÖ­cÕªUßTûóÏ?0`€éïýû÷óÈ#°`ÁRSS™={6uëÖåðáÃEÆmMø%K–ФI¶nÝÊõë×=z4ááá vìØÁÕ«W‰‹‹cÕªUèt:ž{î9Ö­[gs–V–ÙÚ¶FŒÁîÝ»ÍÂüòË/|ùå—¦¿ß~ûmfΜI›6mX·n†=z0xð`bbb8{ö,}úôaüøñ6å­p¼Z­¶È<•¦¤ºÚ³g—.]"!!U«V±aËzB!„B!ÄQ.3Ö®\¹‚V«¥FV…×jµŒ=šž={²dÉìììHLL¤yóæ¼ÿþû,X°ÀöêÕ«>|gggNœ8AýúõÑh4DFF¢V«éÔ©½{÷æÒ¥K6‡ ᫯¾bðàÁ¦A0NGÍš5Y½z552¥cÅŠDEEQ¥J:uêÄŠ+5j111|ðÁŒ9Ò4@tâÄ š5k†›››)Žzõê±~ýú"g«LŸ>§Ÿ~š^½zQ©R%ÂÃà §cÇŽf3ìE¡ÿþ„……±råJÈÊÊ"<<œ¡C‡ràÀ³x­ ŸžžÎСC6l_ý57{­qãÆDDDðÙgŸOff&«V­*S–T–…ÙÚ¶¬õ믿²}ûvš5kÆ™3gX·n7n¤C‡L˜0… òñÇÛ”·‚ñÞ kêêúõëœ?žˆˆ^zé¥bëE!„·Îh4röìYbbbÐh4w;9Bˆ;ÀÙÙ™€€j×®]êgoä!Ľϖ>_œrXËÊÊ0{-®$ûöíãï¿ÿ&""Â4 É××—#FX TôéÓgggêÔ©À /¼`Êpþ¾ü4Ø~ëÖ­xxx˜®§ÕjQ©T߬zþùçMA 64}„>""ƒÁÀÔ©SMÇ}ôQžþyÓà€§§':u*¶\BCC‰ŽŽfãÆlذ¿þú‹E‹aggGß¾}™;w.®®®=z”3gÎ0þ|pssãí·ß¦OŸ>¯ŒZ~óæÍ¤§§›½nÙ°aC~øá³A½âØR§%•ea¶¶-kõíÛ×4ø•ß6öìÙCXXNNNL›6Íô 3[òV0Þ[akÝ !„âö‰ŽŽ&''‡.]º˜ýc©âþ•••Edd$ÑÑÑ„††–VîBÜûléóÅ)—µJ•*pãÆbÃ;v ½^O“&M¸té*•Ê"ÑuëÖ%''‡øøx*W® Pä ª¤›–­áíììøæ›oØ»w/ÑÑÑDGG›^-¨àwÄ »téÕªU£bÅŠfûëÕ«g6°f ºvíJ×®]¸xñ"³fÍbÆŒT¬X‘Ù³g›VâìׯŸÙë‘999@Þ·Ü ²&ü… ¨X±¢Ù€ÀÀ­J·-uZRYfkÛ²VµjÕLÿ]«V-Þ{ï=¦NÊgŸ}F‹-èܹ3ÄÓÓÓ¦¼Œ÷VØZ·B!„¸}®^½J—.]ptt$77÷n'Gq8::Ò¢E þøãR²å!Ľϖ>_œrX«V­lÛ¶_|±È0:u¢Y³f¬^½gggEA§Ó™f妛ÑúNTzz:5ÂÞÞž‘#GòÚk¯Ñ°aC:wîl¶¤)nnnENýµå[çÎcÔ¨Q|õÕWÔ®]Û´?88˜/¿ü’«W¯ÁìÙ³M.Ó§O§B… q¸²&¼›››ÅwÝlaKÚ2½ÒÖ¶U”¢þO®p¦M›Æë¯¿ÎºuëØ¶mS§NeÖ¬Y;vì¶å­(¶Ö­B!n­V‹££#F£ñn'Eq‡(Š‚£££U¯vÊ=Bˆ{Ÿ-}¾8å²xJ¥âå—_fáÂ…¦7mذøøxÓkù+nFFFš…‹ŒŒÄÃÀ€€òHV©vïÞÍÕ«WY»v-o¾ù&mÛ¶ÅÛÛ›ôôt›â !66– .˜íß³gÕqøúú²iÓ&Ö¬YSäqEQL-ù¯³º»»Ó¦MÓfggÇ–-[pww7;ךð!!!dffræÌ³sÛµkǧŸ~ZjúoWÚÚ¶‹‡'Ož,ñdÊ”)x{{3`À~ùåvíÚÅåË—Ùµk×m¯¶Ö­B!n/£Ñˆ¢(²É&Û´Ù2P&÷Ùd»÷·²Ž—ËÀä}ì½råÊ„‡‡³~ýz ¹¹¹lذAƒQ½zuú÷ï@£FhÞ¼9cÇŽ%66€]»v1gÎ^yå•2Ïú±–··7€ieG£ÑÈŒ38}ú´M³Ízôè¿¿?ƒ ")) EQX°`6l0 wöìYúöíËŸþi‡——Ï?ÿœ   ñòòbäÈ‘3ñ cРA <˜ñãÇ––Æÿû_Ó ®å™·Ó§OÓ«W/‹ýï¾û.Ÿ|ò‰Íu[¸^ .Æ!„Bˆ²)ëm!ÄýMîB (ŠÂ…s§ðò©lSôë×ÏlßÙ³g9qâƒÚµkÓ°aÃ"ÏÕjµìرƒ„„jÕªEÓ¦Mo)eÉ•+W¨S§ 4 == 6аaCÓk€ÖHIIaÛ¶mFÚ´isË+Y&$$°oß>233 ¤^½zxzzZ„ÓëõìÚµ‹øøx‚ƒƒK]Òšð™™™lß¾­VKÆ 6Óétlذ½^O·nÝHNNÆÃÃS˜Û]§Ö´­ .pøða¼¼¼ 3û.ZINŸ>Í©S§ptt¤I“&«¡ÞÉöjKÝ®{ûr/B!îóçÏ7-þT^"""èÓ§O¹Æ)„¸7¬\¹²Ô{ŠÜ#„¸XÓçó¥$ŰcÛ&s{Ö„B!„¸“n×ÀZïÞ½Ë5N!Ľá·ß~³j`MîBܬéóù ¬ÉÔ!„B!Š!¯y !J"÷!„ ¬ !„BQŒòxhþuñrssØÿî¼åqðða¶lÛÎ;o¾Q®ñ&$$°xÙr¢ÏŸ'33‹*•ýy¢uk:uhÇ#+ìvåÕ–¸£Nfͺuœ¿p• éÕ½ ê?Zîiú·³¦ÌþíÈr(كЄ>>´mÓ† À³0‡eOä^ŒŠB«ÍáæuKº¾5ñt-&†ÐÚµ1hµZÓþÆ мÙcdff¡( »#÷Knn.¬§CûpìíK½Þ–íÛ ©…6WËÆ¿6¡Óéhܰ!­[™?pY“×Ò®µyë6ê„Ö&--mb@¿—ñ¬XÑærüå×_ ¨Z•—^èKvv¶Ù±W_ÀÆ¿6¹o=ºýóqìÒê<¿’Ù¾sI.Dâ IDATŽtyúiª²iËVNDEáåéI·.ñõñ±9¼µeTžõQµí(_Bb"þü‹„„ªT©B§öáxyyÛÖn7¹GÍ–þ°á¯¿¨W·.ÿÄwâd†Çš6Àh4²mÇNN9ƒZ¥¢Á£ÒºUËbë½¼ûVYó˜Oúü½ßç‹bLš4i)É ¸¸ºÛAtt4 4¸ IB!„Â:ÇŽ£V­Zågttt¹Ä¹yë6ôz=:´/6ÌîÈHÞxgié鸹¹²eÛvV­]KØOàææ@ÄëyòÔj5...8xˆ_/¡E³fx{ç=h,Y¾‚¦ŠN¯`Ñ’eÄÅÇ“••MßgŸ)òÚÖÄ[ØÑcÇÙ»?Õ‚‚ ¨ŠJ¥ò~»wíBà‡1 ü±a#'¢N‘••MNN6O´jņ?ÿ*õzïMü¤”d,\ŒŸŸ×bcùuñ<<<¨S»¶Õyµ&oïN˜HNކ¯fÏ!)9™ŽíÃY±Î¦rÔh4|ñÕLú>÷¬)}9:80ôÕAÔ®‚Á`°ºÎß›ø!§ÎœaóÖmøûWbçž=ü¾f-§NŸáÈÑcøúø°þÏ?Ù²m;=ºva‡“m ¯R©¬*£òª[mGgΞeøè׉‹§B… ìØ¹‹å¿ýN“Æðöö.²­Ù—á!Ûšþ/÷ˆ¢ï¶ö‡QoŒ%8øaj›ÂÌ_´ˆ‡Þö)Eá½&ñÛê5øúø’šÂüE‹Ñjµ\¿~Ý¢Þ÷8Pî}+¿mÞj­­Céóÿî>ŸO““ À•ËY½vƒÌXB!„¢8åùzIqqét:fÍù–6O>É´É‘™É€W‡ðã/óÿö[¬\µš^=º3î­±o~‡¦÷ó/°gï^jÖ&1)‰Ÿç/àùgú0öõ1F._¹B¿Aƒqqq)öú¥Å[”¯ á·ßeâä)xzzÒ¤QCš4jÄcMãS`VÄèÃIMK'''›éÓ¦’““cÕõT*ÛwîbÙÂxV¬ˆZ­æõ·Þaç®ÝôêÞÍê¼Z•7•Š¿6oæû9_S·N®\ùÛær¼~ã¹:•ýý‹<®( ééé6×¹J¥"!1‘_þ;;;._ù?{wU¹?pü3ì‚ "")(™ ˆW1½n-Tâ¾/7ñZ i¦†–•þÊÒ{͵Ì6Ì—D%ƒÜ —L\P\qÅÙ†eæ÷1—e`Î ¤}߯׼^Í9gžçûl'ÏÃsιÌÐá#ÈËËå«UŸ¡Õjy¦S'¦Ïz›k×o}¼[ƒú•Ú¦ö#­VˇŸ,¢ÍÓ­ùhÞXXX“CðëSXôéRV.Y¬·¯UÆíarŽ(yŽ0v<¨T`¡²(r¬………nÛå+Wˆ;tˆe‹ÿCÛ§Ÿ`Õ—_±-*šÃ(Òî©©©2¶ÜÔ/WeÌç{Ƽ>2±&„B!D)Ìóô²o9yú47oÝbÑ‚IOOÀÒ‚ ÀÊ/V3óÍi|¾l 666¤¥åÿ¥<33•J…Z­F«Õwð†QA<|ø×zõèêß™_÷(5CéêãR·.~XËÁÃG8ÇÁC‡Ø¹{¼èçÇ´É“°µµýóB'ÿ­ lJóëÚ¹3v¶¶º[¬š4yŠÃG~3ª¬ŠóêâO£† IMMå@\œÑõ˜••KSêÕõ¥mðÒ ~º[¦\ê:ÐÅ¿³îwO¸ÖÐcÌñZ­¶RÛ£8¥ýè\R—¯\aîœ233ü ÿaC˜9{©©©>€¼h_« rŽ(ÿxÐÕB‰có*oia À‘ߎҤqc¬­­8‚ cÇüÙöÿk÷„S§*dlMÆüßwÌëc¶‰µ’’’˜0a~~~%öçææDNN .ÄÍÍÍ\Y›Ý¤I“èÖ­½{÷6|°¨r7oÞdòäÉ,X°€F•z\U´ëøñãéׯ=zôPt¼Z­fþüùÄÇdzjÕ*œ«<&¥FÅСCñ÷÷7kº†üUÇkEÕsa•UçÅó©Œ~*„'·n¥ R©p­WO·M«Õâîæ†Z­æî½{8Õ®Mff&[#9yêÉW¯’œ|•ùä¼½½±±±1˜¾)ŠÇd®<6nÜȹsçÊŽ!Êx5¶í•(^öʪóâùï§Bñ8Ëÿ‹xù>ZJßokk‹V«Õ­(ø¨³óW äå呞žÎ˜àIDlÙJ«–-™:ùu~ÞA³¦^º8«U«†:;[wk.?W2èË[IºÅ?ÉW¯2cö._¹Bvv6¤¦¦R£zu‚Çã¥^ îС"å/HKi~¿:¡x=SVcò*üÝ”ztv®ƒ‹‹ Çþø£Ôvž9{k~øAq›ë‹­`›F£¯^ô÷Û²Ž¯Ìö(O?²´Ì_±ôzðk̘6U÷™óöL>_¶”z.uK­¯òŒ[%äQþñ /œœÝö¼¼çñZ¼ì•UçÅó)ÞO…B”OÁ›ØNž>MëB/K8y {{{ê:;sèÈRRR[ó- ê×'//¼¼<ÒÒþwQéÖ ·oßæÚõëÔâ Ýöø„“¥æpê”Át‹sttäèïLj;t÷Bw¡¬DÐhò¨^ÝAïoMÉO%e55/SêQ«ÕÒ³[W~X·ž HƒúOÙø·ß¸{ïÏtì(kóò^è)Q™íQœ1ý¨QCw,--ðnö¿Åÿϑߎ2â•a•R_UåQ;G;૪ œ¿p§Úù«ÂÏžåàá#¼24€Î/¾@·.þŒ¸:Œ—‡½JüÉ¢±WÖØ’1/c¾0³^‘uîÜkkk"##‹lÏÍÍ%""‚Áƒ‹¾"!!9sæ0nÜ8.\È;w€ü(QQQ%Òˆˆà—_~ 99™yóæ1~üx>þøcnÞ¼©;.//°°0Þxã ¦M›ÆæÍ›KyË–-$%%qéÒ%V¯^­[Zù±Ó¦McòäÉlÙ²¥ÄoËŠ¡4ÇŽcæÌ™Lš4‰¯¿þšÜ?ß ñí·ßröìÙ"ÇÆÄÄ­ûþÃ?pþüy†Ò '))‰øøxÞzë-&Ož¬7SêÍPÞr ãµ×^cæÌ™?~¼Èþ 6ot,¥µYY}§,¥åÍ©S§¸uë«W¯æûï¿7)ýØØXæÌ™Ãøñãyÿý÷ILL,õØÒÊ`¨^ôõ™½{÷’œœ¬;Fi8pào¼ño¼ñGŽáôéÓüøãFÅ æ¯JÆ–±iš»¿¯s0ß8-¬p>Åûii“œ†úaYqìÛ·M›6•HsݺuÄÅÅ•«B˜›9þ ®RSs ¶Äçâ¥Ë<éáA Ÿæ|öŗܾs­Vˉø"¶l¥o¯žh4kÕàÂÅ‹dee‘͆M›¸xéÙÙ9hµZ:uh“Sm-^ƒÔT4 ÛwîâàáÃ¥–EIºÅ?öötõïLèÚøeÇNÝ£322Ùùûbbèß·o‘U«1”æ§7ÞBm¢¤¬ÆäU8?SêQ«ÕòÊÐê89ñÖÛ!<|„¼¼û,qqq\¸pÎ;óÆoðÎ;ï(ŽÌ?^•œGŒM³"ú[ñ:7×8-®p>ÅûiÁÃL SÒËŠãìÙ³ylÀåË— àÆ¥Æ)„Á\ÿX¿xésçÍ/ñÙ±k¹¹¹Ìzk:ééé Èà¿ÂoÍà-Z0*pZ­/OO^xþ9BÞ}Ñ^ã_Ã^å÷ãð¢ßóDþü3?nÞ‚J¥bά™œ;ŸÄà¡ÃèÿrË?_Åè @(å63%éÿF£aÚä×éÚ¹3 JßÁ/Ógпè÷¯—ùì‹Õ¾ú*ýz÷ÒïZ¯q‡36x"înnŠòû³ö‹Ö£V«Û¦¤¬JËögCëò1¥ >Ëÿ‡'žp%äݹôì?^ñö;sq®S‡O}‚êÏ>¥¤ÍK­‡Ût[Œ>Þ¨:*g{”§åææ2wN¹¹¹¼4Š¡#‚>z uê81õõIzûZFFF¥\dË9¢ä9ÂØñøÊ+ÄÆäß#‚8’­?mãåÁƒtõÛêÿ _ŸÞügÉRÆà¡Ãøtù &Œƒ»[ƒ"íþðáà [2æeÌ—åÏvÖ’t6É^í:®F%ÉðáÃiÛ¶-¾¾¾ <˜pëÖ-ÝÃäFÅÇyýõ×yî¹ç8rä¤]»v„……aiiÉíÛ·iß¾=:ubúôé´jÕŠ¨¨(ºuëÀêÕ« &99™çŸOOO6n܈µµ5éééøûû“››Ëš5kðöö&::š®]»ù/VX»v-/^Ô[†W^y…´´4"""ððð --„„êýùpÁ.]º Ñhعs'Z­–æÍ›—Ãá?gi KMMÅÝÝW_}•eË–ù+Sž~úi6mÚİaÃX¶lºßŒ=šäädÝê=777²²²Ø¶míÚµãôéÓe–U­VãååUj=¯Y³FoºÅ)MÇÃÃÔÔTxâÏå Ý»w'33“½{÷šToJò>wîžžžxyy‹““™™™tëÖäädΜ9ƒµµ5Lœ8‘7ß|SQ,†Ú¬_¿~%úNq®®®Ìœ9“)S¦(Êsüøñœ;wŽ;vè훆øøøðÌ3ϰjÕ* ÿµÎMš4!((ˆ¹sç–ˆ©xJÛH_ŸqvvÖ­ÆRÒ>|ˆ‡‡,Z´€¸¸8:uêDóæÍK¬.,PãÕÐØR’¦±moJ+\çæ§úoÛâýÔ”~XV›6mÂÕÕ•Õ«W3|øp>úè#.\Èõë×±.ô0V!„(jöÙDFFêþ-Z5jÔ(õÜ•™™Iff&–––ØÚÙqüøܽwFâùÔS¤¥¥éþÁ_½zuNŸ9õë×yÒÃÆO>IZZ:GŽþFCwwê:;cmmF«åèïÇÐh4´ií‹­­-¶¶¶¥>çXIºÅ©T*ìííIÏÈ áä)222¨çâBãÆObme¥{‹€µµ5¿?NNN.­þÑ‚š5kÌÏÑÑ‘¬¬,²²²téT«V kkkRSSué*«’²éËË”z°°°ÀÁÁkׯsö\Mþü?ù$éééEnwSÒæúbsrr"--M·rßÒÒ’ZµjñàAþü9>//Ïä:2¥=ÊÓ,,,°··çøxnß¾ƒ[ƒ4kêÅÇuõU¼¯•ç‘ÑÑÑÏ)rŽ(ýÊǃ­­-wïÝãô™3Ô¨Qß–-ü¾ZðÆÉ‚t’Î_ÀÚÚ ïfͨQ½:™™™%ÚÝÚÚÚìc«ø­ªÆ–± =óö˜/pïNþû÷íÙÁȱ“ÍûŒ5زe‹nÕYDDŸþ¹î˜ƒrùòe"##u¥svv&88˜Ù³g³fÍ|||X¿~½îDFŸ>}HNNæôéÓ„††êN>LŸ>AƒéðÀøùùakkËüùó~ÐСCué­Zµ"&&È¿Ø-+†»wïâääT$½èèhRSS ÑmóõõeõêÕÔ¯__q\º‰Œ‚NSZY•Ô³¾t‹3&!C†è.’ ÊXpñmJ½“÷Ô©Su¿¯V­ï¾û.þþþ?~œ¶mÛIWI,;wî4K›“gyíÞ½»ÈÛQÔj5*•Jñ3ÉŒi£²úL²úÃÏ?ÿÌýû÷™={¶n‡èܹ3ׯ_WVà?™{¼[ƶeeô7sSsPÚK‹ÃÉÉ 6lØ ›Xûþûï I5!D¥+ï_±ÝEHYrssÉKOÇ»YS,,,ÈËË+ñ»‡Ò¨aCžôðÐíW©Tth×N÷œœììlT*mŸn äÿq###Cï ccÒ-N«Õ’––†……­þÑ•J…F£!7'‡œb¯ÈÎÎÖ=S(;;[Q~ú^JU¼ JÊjj^¦Ô# Ë£VÍš´ÿg[ݶ”8VI›ë‹­øcrssuÛŒ=L¯#SÚ£8cúQ^^>Ä«Išzz¢ÑhJÔkñ¾fŽñkˆœ#ôŸ#@ùxÈÊÊ¢Fõêth×­V[ä…ÒÒÒ¨íè¨K'77Wsñv¯ˆ±Uó¿1¯Ù'Ö¬¬¬8p ááá 6Œ;v V«éÕ«¿ýö.\@¥RѬY³"¿mÞ¼9™™™Ü¸qƒÿûßüç?ÿá³Ï>ãöíÛìÙ³‡­[·êÞL7|øpÝÅ# ›Ù¬U«o¿ý6óæÍcáÂ…tèО={2räHÿ|%®îîî¥î3ÃÍ›7K\¨'%%Q«V­"‘#GŽT@Æ uÿíååUfY•Ô³««k‰t‹3&s×›’¼ øøø9¦åŸé¸xñb‰‰5%±˜«ÍŒÉ³¼,--Y¹r%qqq$&&’˜˜Xä–jsÄXÐFeõ™eõ‡óçÏãââBí?_+] iÓ¦FO¬™»ß[ƶeeô7sSsPÚËŠãå—_füøñ<|ø‹/râÄ ¾øâ‹Š [!ôªÌ¤kµZƒÏT-þh­V[â1ú¶¢$]}ʺ¨.¬xZ¦æWœ’ß™š—©1Aþ…¬’ƒ)ióÊP™í¡Ò~¬/SÛÌTrŽ0LÉx(ï1úÊX™cKƼqå1¯Ù'Ö ÿ‚¨W¯^Ü¿Ÿõë×Ó»woªU«¦Ûogg‡V›ÿ Ý« *,''‡¡C‡ÂîÝ»9uê®®®tëÖMw Ô‚ ¨Y³f‰¼ÝÝÝ™?>S¦Lá§Ÿ~bÏž=Ì›7¥K—rüøq½¿Ñ§¬%„ÆeÅPœƒƒƒâŽS@_*WYeURÏ¥¥[˜¹Ò1¥ÞŒÉ»x}|/¼rƘXLi³²˜R~c¤¦¦Òºuk¬¬¬˜8q"ãÇÇ××—ž={VHŒJ–ÙêúN‚Jž%gl>`|½—5¶ŒM³2ú›¹ÆiyÓËŠ£ÿþŒ7Ž­[·râÄ š6mJûöí+,n!„B!„0E…L¬½øâ‹8::²~ýz"""J¬2ðòòòß×¹sgÝöØØXjÔ¨Aƒ °°° cÇŽlذ'N0bÄ,,,ðööòïó~á…t¿ýõ×_Ù¾};Õ«WgÛ¶m„„„H`` 'OžÄÇLJ˜˜£&Jc(†ÂÛ xzz’––ÆéÓ§‹¬(éܹ3Ý»w(1Ë‹K©q9r¤Ì²*©g%Ì•Ž)õ¦$ïóçÏùoQ}饗tÇìÛ·È_eJ,†ÚlúôéŠÊ]žòcÿþý\¹r…øøø"«÷”,-¯¬ óòòâÞ½{œ={OOOÝö#GŽ˜-0­L†Æ–±iVF3×8-/sôCȾD×®]Y¿~=GeìØ±æU!©ªÛJ„9G!*dÙ‚¥¥%ƒ "$$„ììì“Y­[·¦}ûöL›6k×®ù“"+V¬ ((H·Šáßÿþ7aaaÄÅÅä_ vìØ‘©S§rõêU ÿV¿   Ο?Ozz:ï¾û._ýµ.¿‚·mzxx”³1·ËŠAžzê)&Nœ¨»À\³f »ví¢]»vÔ­[—­[·êâøâ‹/øã?ÊŒÃPY•Ö³!æJÇ”z3&ïÅ‹ ÀÉ“'™5k}ûöÕÛîJb1Ôf”öSÊ_<ýU«V {ˆga·3¼R£Ñ°xñbN:epylA¦ÆhŠ=zàááApp°î”+V¬àرc¨T*Eñ*aJ™ -cÓ¬Œþf®qZ^åé‡Å½üòËlÞ¼™+W®ðÊ+¯˜=V!„P¢åQaWZC† !%%…>}ú`ggWbÿêÕ«¹wïîî¸ðÜsÏÑ¡C‡"/2d<÷Üs4iÒD·}íÚµ¨Õj<<øàš7o®7V¢££iÙ²¥Þ }ÊŠA+++¾ýö[Ž?޳³3õêÕ#00üüü˜5k?ýôîîî4jÔˆåË—3qâÄ2cPRV%õ¬„¹Ò1¶ÞŒÉû7ÞàÙgŸÅÉÉ lmmY²d‰É±j30¾ï[þâé:tˆððp½íÚµ£ÿþôíÛ\]]Ù¾}; àË/¿äÓO?U”‡)md ¾þúk>L:uprrbÕªU¼úê«En7¯Æ–IÉØ26ÍÊèoæ§åaj?Ô§_¿~ØØØðüóÏÓ¨Q£ ŒZ!„B!L£´Z­–¤³'¨]ÇÕ¨"##uom3–Z­fß¾}¤¤¤àååUâóeÉÍÍ%&&†7nиqão'XY)»CÖP ú¤¥¥±wï^Ôj5¾¾¾4nÜX·/))‰£GR»vmüüü¿ýÎPYËSÏ‘Ž)õ¦4ïóçÏsøðaœœœðóóÃÆÆF·ÏÃÉ'òæ›oKYmfJß1¦üúÒàË/¿ÄÁÁAïobcc¹téÞÞÞ´jÕŠÔÔT¢¢¢ðõõÕÝ.h(SÚèÖ­[Ô¨Q£ÌI±ÂòòòÈÌÌ$;;›Ý»wcoo¿¿?¯¼ò 999üøãŠëD SÊdhl›¦¹ûÛÝ»wKÔ¹¹Æiaƶ-ßõ¹ÿ>õë×gÙ²e&¿4Dñ÷Jï޽͚fddd‘ÇL!þ>víÚeðœ"ç!JÆ|{wò_¢¸oÏFŽ\µkBT­V‹‹‹ ³fÍbêÔ©UŽÉ~ÿýwÞÿ}6mÚTÕ¡”[rr2îîî¬_¿žÁƒpõêU¼½½ùøã?~|G(ªÚ¢E‹xçw¸~ýºâÏ!þ¾*jbíÅ_4kšBˆGÃîÝ»M¬É9BˆÇƒ’1_ øÄZ…¼¼@ˆ¿’£G2aÂnß¾m–Õ;UÉ¢Ès¿ennnÌœ9“aÆñÕW_accï¿þŠUž¨B/^äÅ_äÒ¥KÌ™3G&Õ„B!„Y2±&{NNN 2„ŋӱcǪ§\ZµjUÕ!˜Õ‡~H@@ ##ƒÑ£GÓ½{wÅ·wŠÇ“‹‹ Ó§OÇÕÕ•Tu8Bˆ¿1;;;²²²°µµ­êP„•H­Vë}NxqrŽâñ tÌ—F®^ÅcÏÃÃ㑾ýóqתU«ÇnÂP”½½=¯½öZU‡!„4jÔˆ3gÎàåå%ÎBüM¨Õj½8IÎB<úŒ󥑉5!„B!ôhÑ¢ ;vŒ¬¬¬ªGQ ìììðððÀÇǵZ]æ±rŽâJng¼ IDATÑg̘/L¬ !„B¡‡Z­¦eË–´mÛ ‹ªGQ 4 ÙÙÙddd|8–––ŠÓ?~<ýúõ£G­iÊÛG*[ñ> vB!„BˆÇ…ÙV¬íÙ³‡;v˜+9“-^¼˜?üP÷}ãÆœ;w®Ò㈎Ž&<<œ•+WêÝ¿sçN¾ûî;ÂÃùÿ¾¢4M)KEÄQUŽ=JDDVVVz?†zîÜ9~üñGÝ÷âõY¼ïu÷î»ïòÄOðÛo¿)Ç AƒèÙ³'‘‘‘ôíÛ·ÊâÓW÷¦2G1g<Æø;µ“B!„B<*}b-!!°°0nݺ…§§'AAAÔ©S§È1ÇŽ#,,Œôôtž~úi^}õU¬¬òCeÛ¶m¤¤¤P¿~}ðòò`Ë–-$%%‘••ÅêÕ«>|8111xzzâîî®8†ððpÚ¶mKff&¡¡¡¨Õj^zé%úõë§;ææÍ›lݺ•N:Ѽys½eíܹ3[·n%22²Èíg¹¹¹DDDðÊ+¯°dÉÝö²Ê°wïÞ"eQ§)q$''óÍ7ßœœLãÆ1bõêÕS”ç·ß~K§NðôôÔ¥Czz:ݺuÓ[Oe×®]lÙ²FCŸ>}Jì/\Ÿúú<>u—˜˜H›6mJLöèу.]ºp÷îÝ"ÛË*‡>JŽ/m\ë«{›r•·, ÄÅÅ1lØ0ìììHMMeݺu¼ôÒKÄÇÇë§}ù¨·“B}:ƒ Ò݆¦4O¥<==¹vík×®eåÊ•„„„ðꫯ2qâÄ—Z­¶Ôäææù«(óòò˜7ožnß?þñ† Bdd¤Ññ=u׬Y3‰ŽŽ&**ŠíÛ·óý÷ßciiI@@«V­ÂÞÞ^q9Œ)÷Î;Ë׿,'(ë#=zô ((ˆÀÀ@222˜;w.¾¾¾zc޶UÚ'õvBˆÇÍ•+WèÕ«666dggWu8BÙØØÐ¡C¶mÛ&kB³«´‰µ . R©JœÈš7oNff&7nÜ ))‰Zµj¹89r$ÿ°ù•+WGbb"‰‰‰º esÅàêš+lág²•‡••$<<œaƱcÇÔj5½zõâ·ß~ÓgiiiRٔƩ$Ž‚7d>¼È-h™™™@þsåŒÉSŸ]»vѵkWÝ÷iÓ¦±`Áìíí3fŒî–¼•+WÒ¦M:uêÄ;#ŸŸ5jÔ0¸ZæÂ… 4lØZµjÙÞ¢E “&Ö—º³¶¶¦wïÞºÛdΟ?ÏÒ¥KY¼x1µjÕbùòåŠËQ@Éñ†Æµ¹Ë©¤üç?ÿáÉ'Ÿ¤N:̘1£ÔãÌѶÆôÉG¥„âï@­VccccÔ[™…=Z­¹¥[Q!*mbÍÎέVKNNŽnÅ ûë_NNäååéý}jj*­[·ÆÊÊŠ‰'2~üx|}}éÙ³§Yc(`Î{ï_~ùezõêÅýû÷Y¿~=½{÷¦Zµjºý©©©ôìÙÓ¤²§¡8 .¸,X ÷6»‚‰cë¦ð_x;tè@||¼î{ñWtìØ///4hÀ‚ ðòòÒMš(áàà ÷šjµÚ¨¸ {”ë®~ýúLš4‰O?ý”¦M›êŽmܸ1ÿýï¹rå ‘‘‘,_¾\q9 (9¾¬q­Oeô€={ö––ƽ{÷8pàÏ>û¬ÞãÌѶJúäÙ³g©vBˆ¿ ™Tâñ Õj«:!ÄcªÒ&Ö ÞnKçÎuÛccc©Q£ 4ÀÓÓ“´´4NŸ>]dUYçÎÑjµ\¹r…øøx|||tûRSSÍCExñÅqttdýúõDDDðÅ_Ù¿ÿþr—Íqx{{P½zu^xáÝö_ý•íÛ·ÙV–â+íâããqqqÀÞÞ¾Ìå×`åÊ•lܸ‘gžy†ˆˆ£D\pÛ`RRO=õT‘´Mõ(×݃رc[¶laúôé%~§Õju“-Æ–CÉñeëîÝ»—ˆ©2úHJJ £GæÿþïÿHHH ((ˆãÇ—x§Ò2¢¤O:;;?Rí$„r1.„Bˆ²˜õ•(wïÞ%""¢ÄçäÉ“´nÝšöíÛ3mÚ4®]»ä¿YsÅŠaaa¿¿?O=õ'NÔM*­Y³†]»véžgvéÒ% ÿ¯‡‹/æÔ©S%V"•v ¥’”:sæ üòË/µ´´dРA„„„]b%š“““â²•‡¡8¼½½éر#S§NåêÕ«\¼x‘   Ο?¯(ºuë²uëV]|ñÅüñÇeþ&++‹•+WÒªU+ºw£#¿ÿþ;Û·o§oß¾EÚ%;;[o‹ˆˆ`÷îÝ@þ›ëիǨQ£¸sçZ­–5kÖ”úfÍÂJë;rÝÕ®]›!C†ðþûïJzz:ÿÿ+VÁرcM*‡’ãË×íÚµÓ¥UÖ­Ïæî#cƌᩧžbÊ”),Z´ˆôôtÞ~ûí"yÄc޶UÒ'‡vBˆÇ‘V«•|äó˜|„¢"˜uÅÚ©S§0`@‰í3fÌà£>bõêÕôêÕ wwwêÔ©CJJ ]»veþüùùÁXYñí·ßÒ¿œ©]»6·oß&$$„éÓ§Kß¾}iÚ´))))üóŸÿdÀ€|ùå—4iÒ„É“'ãááÁ‚ hÙ²%û÷ï/‹¡”JII!<<œgŸ}¶Èó J3dÈV®\ÉСC±³³+²¯]»vôïßß`ÙÌ¡¬8Ö®]KÏž=ñððÀÕÕ•ëׯӮ];Ý› ™5k¯½öîîîØØØP»vm&NœÈéÓ§KýM||ÔÛÇZµjűcǨV­_}õ¸¸¸P½zu,,,˜3gŽîm‡úê;rÝ}öÙgT«V‘#Gˆ½½=ØØØ0sæÌ"o%5¶†Ž/k\ܾY¼î‹—Ü}dÒ¤IDEEqìØ1,,,pttdåÊ• 8Áƒóì³Ï–ˆ§¼m«´O>êí$„#¹B!DYT€V«Õ’tö$µë¸•@dd$ÇW|¼Z­fß¾}¤¤¤àååEÛ¶mK“––ÆÞ½{Q«ÕøúúÒ¸qcÝ¾ØØX.]º„··7­Zµ"55•¨¨(|}}ñòò"''‡¨¨(rsséÓ§wïÞ¥FEž‡¥$†ª`¨l·nÝ*Q–Š››KLL 7nÜ qãÆEV«(‘””ÄÑ£G©]»6~~~Ežg§Oñgޙ˽{÷سg†^x¡Ä³ºŠ×gñ¾ceeü¼ó_½îRRR8xð iii¸¹¹Ñ¢E Ë]%Ç—5® Õ}Eõ‘Òè‹§¼m †ûdGµ„¢*…††ýhC"##8p YÓBTüÑìç !ÄßϽ;7Ø·g#ÇN®ü‰5!„B!Ì­¢&ÖJ[-„xôlÚ´I&Ö„åV|bM–!„BQ sÜ úÝadgg3rDÕü1úÈÑ£ìÚ³—·¦¾¡èøÅK—ÑîŸméÔ¡ƒÙcIIIá‡uëIs†»÷——ÇÓ­[óLÇ¢·†¦Ü¾MÔ/ÛIIIá‰'ž {j×®]jù’¯^¥YÓ¦h4ÔjµnûÓ¾­hß¥¥£ÕjõÆdmee°ì»ö§êl5ÑÛw““ÃÓ¾¾<Ó©è$Ž’ú1”×ÎÝ{ðnÖ”½}Ã_űV-£ê>_þöÌÌÌ"[jצ…ç/\ÔýVIÛÏ«¬6*^ÏÕ«;è­÷ŠjgSb,ˆI!þJäVP!„B!JaÎÛÏÊ:&æÀF˜±¤g¤³nãŽÇ›7uÇlýiÁSÞàDBÙ99ìÚ³—‘ãÆ“xöœî˜Ö­gê[39~"ž›·n1ç½ØYjþ'âã¹y+…Ûwî²?6–ÜœÄÅ1ç½ÈR«¹pñ!ïÎ%bËVÝïN>Màè±lß¹“ŒÌL"¶leÄè±$ž=[j=5"æÀöÅì'//O·=''‡%‹Ò³{·RcRRöU«¿âûuë˜5ç]Ò32¸tå !sßccÄf£êGI^Ÿ}±š#¶0ùÍ·ˆ;t˜œœ£ë¾¬¾‘““ÃÕk×p¬UKqLÅÓ1ÔFÅëù÷c”¨÷ŠlgSbÌÍÉ‘[A…92Ý/„B!D)Ìy1^ZZ999,]ñ/<ÿ<óß{€‡iiŽË—ß|ˬéo°1b3úõeæ›ÓÐüùœªC†r .Ž&O5æö;|º†!ƒ1mÊd4 /]bø¨1T«VMoþ¯¿Æý©dff°`þ<ÝÊ©¤óçY÷ÝjÖ¬‰……¯O}“_÷ oï^hµZ>üdmžnÍGó>À‚윂_ŸÂ¢O—²rÉb½å ?–7¦Ï`Î{ïãèèH›Ö¾´iÝš¶yš:uꔓ¡²Cþ-”{aÝÚ58Öª………SÞ|‹_cö3 oÅõ£$/T*¶ïÜÉ+–ÑÜÛ›K—.]÷¿^-//—ß×mKKK'ê—í\½vÀW_A«Õ*‹éÏ &‘ µQñzÖjµ¼7ÿCÝ÷ŒŒŒ mgSb”[B…E2±&„B!D)Ìs_öí€'OŸææ­[,Zð!éééXZXð¯XùÅjf¾9 €Ï—-ÁÆÆ†´´4 ÿöA•J…Z­F«Õwð†QA<|ø×zõèêß™_÷ЛþDEþDMAÞÝü»`mmMFFO5nÌñ Õj9—”Äå+W˜;'D7§R©64€™³çššJ5JäåR·.~XËÁÃG8ÇÁC‡Ø¹{¼èçÇ´É“°µµÕ“¡²èÚ¹3v¶¶º¸›4yŠÃG~3ª~çÕÅŸF ’ššÊ¸8£ë­–ÌÌ,¦¾5³Èf'§Ú¼þÚºwíBvv¶â˜ò“TÖFùpEë¹ð÷ŠngScBˆ¿™XB!„¢ ݺ•‚J¥Âµ^=Ý6­V‹»›jµš»÷îáT»6™™™Dlää©S$_½JròUò4ÝonÞº…k½zXYZê&[òòòðhÔˆ_÷0*&gç:ÅnUÔ*®ß¸ ÀÜæcañ¿'Ëdggpïþ½.†ÌÌLÚ´ö¥ý?ÛbeeÅõ7_¿ïÃ×QÝÁ׃'èÇPÙ Ç­)´]kBý(Í«®³3yyyF¥­ƒƒ‘›6ê¾[ZZRÍεZ­{F™Ò˜ ˜ÚFæHCi;›#F!„ø+0ÛÄÚŽ;X½z5+V¬ÀÉÉÉ\ÉVªñãÇÓ¯_?zôè¡wÿœ9s¸|ù2Ë—/§zõêEö=|ø1cÆ0yòd:ñ–›ªǪU«8~ü8*• OOO&L˜ÀóÏ?_Õ¡•ê£>"++‹¹sçšœ†Z­fþüùÄÇdzjÕ*œÍ B!+æºíLKéÏx²µµE«Õ¢V«±µµÕmWgçOªäå呞žÎ˜àIXYZò¯Ayyð ¼›6åõioêâ¬V­êìì"K€nrÆPYô­|ÒwŒ¥¥%˦ƒ½ýÿvªÀBeA=—º%~{õÚ5–®üŒàqcqwsÓMžÔ¨^àñã¸qóq‡1éµñ%òËÈÈ0Xv]¥¼Siý“Wáïå©{• 4NÐAþgzè¿11iµ¦µ‘¾rUt;—7F!„ø«0ÛË Î;Gxx¸nÙµ‹/æÃ?4WåÁ™3gJÝ¿}ûvBCC )±O­VÎ¥K—*2D³ùøã騱#‰‰‰ôíÛ—.]º””„ŸŸ‹ë^Â_Áž={رcG¹ÒX¾|9Ÿ|ò ÞÞÞØØØüåú¡B!þ^ Þìxòôé"ÛNžÂÞÞžºÎÎ$œ:EJJ ÿýdÿ8oo´Z-iiÿ»=έAn߾͵ë׋¤ŸpÒ¬ñ6j耥¥ÞÍšê>999ì-29XÀÑÑ‘£¿#îС"Û V7i4yT¯î 7?%eWBIý˜šWy뾬‡ì›“)mdŽ4ŒigsÄ(„UúVÐ#GŽpðàÁª ÁhŽŽŽ,[¶ŒCÅþgñ(9|ø0³fÍâ½÷Þ#&&†wß}—?üC‡1vìX¦OŸþÈLšâìÙ³´oßžùóçS³fÍG² !„¢r”ç „ºšú˜±%>/]æIZø4ç³/¾äö;¾ 1ˆ-[éÛ«'ÇZµ¸pñ"YYYdgg³aÓ&.^ºDvvþ›;uh“Sm-^ƒÔT4 ÛwîâàáÃe–(òöF½eÏß‚V«Å­AZ¶hÁ²•ŸsýÆ rrrHN¾ÊGŸ,âÆÍ›º‡ëþ8ØÛÓÕ¿3¡kà—;u¡ÏÈÈdsäO싉¡ß¾zcRRö‚ßè«û‚íJêǘ¼ çgjÝk‹¥£ïcTLZãÚH_Û|¯èv65Æò|„¢"TØ3ÖÂÃÃiÛ¶-™™™„††¢V«y饗èׯ[¶l!))‰¬¬,V¯^Íðáñ±±!99™o¾ù†ääd7n̈#¨Wèy?üðíÛ·'%%…ÐÐPæÎË®]»ÊÌ«@ll,Û¶m#%%…úõ뀗——QåêÛ·/çÏŸgôèÑüöÛoX[[—z¬¡ü êèêÕ«lذ;;;F§§'k×®eÿþý¸¸¸0nÜ8êׯ¯û¡:ºyó&[·n¥S§N4oÞ¼D\ï½÷7Ö»òîý÷ß',,ŒÈÈH‚ƒƒùöÛoéÔ©žžžºcbbbHOO§[·n€þ6qrrbýúõ9Í_«ÕmS©TëGI=ëò*TGJÒ.KYûŠÉÈ6*ÞöÅ¿Wd;›cµjÕʬK!„¨l*@«ÕjI:›¿L¹vW£ˆŒŒdøðá|öÙgL˜0+W®àææ†‡‡]»veûöítîÜ™‹/²sçN–,Y¤I“xóÍ7 #77—¶mÛNBB]ºtÁÕÕ•Ö­[KZZÛ·oçé§ŸÀÍÍÁƒóùçŸS¯^=bbbxöÙgËÌ `ÕªUŒ7ŽçŸž† räÈ.\¸@ll,­[·ÀÕÕ•™3g2eʽeíСÍš5cæÌ™øúú2{ölfÏž ÀíÛ·©[·.?üðŠòóðð iÓ¦$''óÜsÏñóÏ?“ššŠŸŸׯ_Ç××— 6àääÄ©S§°²²âСCë(&&†çž{Ž¥K—2qâÄ"eHOO§N:Ì™3GïÄZqÕ«WgÙ²eê¶=šääd¢¢¢ô¶É¯¿þÊ„ Ø»w/=zô ##ƒ¨¨(¦OŸ®»åróæÍ <˜¦M›âííMLL ÿÜ·F•ÚÖ£G&--Mw¼>eÕÑæÍ›ùæ›oÈÈÈ }ûö899±k×®"ýÐÁAÿmB!„øë ¥wïÞfM322R÷‡Äò¨Q£F©ŒÍÌÌ$33KKKlíì8~üîÞ»G£F ñ|ê)ÒÒÒt Õ«Wçô™3\»~'=|Xê$‘J¥ÂÞÞžôŒ Nž"##ƒz..4nü$ÖVVº7Cê‹©fÍšËîèèX"îjÕªamm­‹[Iý(©g}y™R÷öööØÚÚrïÞ=½û ˜“’6*^϶¶¶E¾[YYUh;›cá+::Úìç !ÄßϽ;7Ø·gÔLs* IDAT#ÇN®Ø‰µÔÔTxâ‰'èÞ½;™™™ìÝ»€W^y…´´4"""Ðjµ4oÞOOO6n܈µµ5éééøûû“››Ëá?—Q»¹¹‘••ŶmÛh×®€¢¼|||xæ™gXµj9994iÒ„   ÝJ(¥kß|ó ï¿ÿ>ÿ÷ÿÇñãÇiÚ´i‰‰5%ùyxx`ooÏÑ£G±³³ãĉ´lÙ’nݺ±mÛ6,,,Ø´i$11‘&Mš(ª£û÷ïGóæÍiذa‘2œû,«V­bРA&å§ï¶ÃÒnE4¦ŽJãââÀ­[·J=æøñãäææÒ¦M›2Ó*¬p›xyyñöÛo3oÞ<.\H‡èÙ³'#GŽÄÑÑ‘ . R©hÖ¬Y‘4š7oNff&7nÜÀÕÕµDºJ(©#!„B!„Bs¨Ð‰5cî/˜Y°`5kÖ,±¿ðÄ™¾tËÊ+55•Ö­[ceeÅĉ?~<¾¾¾ôìÙSq|útìØ‘ &0cÆ :uêTáùSG¥iذ!nnnìÙ³‡aÆé=¦{÷î´k׎͛7ëݯï/JÅëþüùL™2…Ÿ~ú‰={ö0oÞ<–.]ÊñãDZ³³C«Õ’““Säy#éþkœ±ÏP0G !„B7 !„¢,:±fŒ‚[«W¯Î /¼ Ûþ믿²}ûö"ÛŒµÿ~®\¹B||<>>>ºí1-?üÍ›7yI@EågŽ:R©T¼úê«,^¼˜3fФI“"û£¢¢¸qãF‘[I‹¯´‹×­|ÓçÈ‘#lÛ¶ Ô=Û-&&F÷fÔØØX:wî¬û]ll,5jÔ AƒËQšŠìGB!„øû‘‰5!„B”ÅôWª˜IÁ¤··7;vdêÔ©\½z€‹/ÄùóçË•GÁí‘—.]@£Ñ°xñbN:UîûõkÔ¨ÁŠ+Ø·o_…ç§´ŽÎœ9C@@¿üò‹ÞtBBBpuuÅßߟŸþ™¼¼<²³³‰ŠŠbÔ¨Qxxx0bÄêÖ­ËÖ­[uíôÅ_ðÇ”gzz:ï¾û._ýµnÛþýûü6´nÝšöíÛ3mÚ4®]»ä¿ÉtÅŠ\¥v÷î]"""J|NždíÚµ¨Õj<<ýôÓr¥ß§Oþõ¯UJ~Jê(%%…ððpõ¦áààÀŽ;hذ!={öÄÎÎ{{{zôè««+ÑÑÑØÛÛ0kÖ,~úé'ÜÝÝiԨ˗//²:O???FŘ1c¨[·.uëÖ%88˜>ø€æÍ›°zõjîÝ»‡»»;...<÷ÜstèÐA÷‚ƒ²œ:uŠ”ø„††*®£ÂŠ÷C!„BˆZ­V>ò‘ÏcòBˆŠ ´Z­–¤³'¨]ÇÕ¨"##>|¸I™çääEnn.}úôÁÊÊŠÜÜ\bbb¸qã76ê†ÄÆÆréÒ%¼½½iÕª©©©DEEáëë«»=Ñœ**?sÖÑ™3g8qâyyy4mÚ__ßÇ$%%qôèQj×®ŸŸ_‘碕åÔ©SœùèCtëÚðÝ?âhð1lßú#òòó P(ñÁ²¥zçªÕjlØ´}{aé¢w! !“bÖܹøß?bÑ‚ùxù¥IÈ/(@jZV­\^¯ë¿:õem»›·oã‡o6ÃÎÎðöÂE8qú4ž5Ò 8* >†õk×ÀßÏðáê5ÚñÉår¬[¿£GÄÜÙ¯nܼ…é³ç ììÙ:ïå¬é¯èܯ¤ädƒÆFDDDDµk°ÄÚÃðÁ€KA©¥áRPzåääàÖ­[èÓ§ÎR¸šâÌ™3ppp¨µmÜ8†~÷­öõ–öotüxý­ùhíèˆAž„¹TŠ[ øl×>‚OV}Øì1‡†‡ÃÉ©u³$Ö„‚Š÷‘ÑÑx¬Ó£055Å+S&T-æz,²²²°jÅríûkŒ5 ÿûQ7¡u¿×Ø¿¿6©>ÞÞˆˆŠ¬wú÷Ó&Õª:wá"är9&ާ=æëãùoÌ«ó¿‹ûÕ®Akü`@Ôò1±F-ERRºwï ‹j—ïUeaaîÝ»ãêÕ«%¤R)Þ{gAC„Úè¶üô3ìíñÍÆ/ ‹µÇŸèÛ /AXøY½Z]ww7L?[·ýŠ;w¡C€?zuïŽáC‡ÂÒÒ¢ÖsÓ32 àéá®sÜËË*U òòóaO2ì~®ßÚ±æÙ”õ‰Ãén]¹ê¤¥§ÃÂÂöö:LJRëjr?÷–ˆˆˆˆþÑ ‰5~0 jù˜X£–"==}ûö…Z­6ø dÝSê~ÔU佨¸'O®öÜ^=º#üÜùj_kíè¥J…ÇûôÖ9rò$Z;¶F‡½s’SSо¯Î³zvï†n]º °¨HçxvNý}Ù99puvÆÐÁƒtfJ@TL Ξ;™ ­0 _?¸»ÿ3ÖªEò§Lš[›‹âWª«8cyeÊd?Ý"ù†ů­8}áth˜Þqw7xyzêS*•ØòÓV8ØÛcÄða€ˆ»;_:;;¨ùw©¯üý°é›o±úƒppp@Ddöì?€aC‡ôï§!ׯËýÆQ9¾®;ÃÕÅë7nÂÊ¥K`nnŽ¿ƒƒqùÊULž0¶66={Æ †H$ƒ‡póÖmtíÒ¹ÚþblDDDDÔ@‰µ‡ñƒу¦©k˜2i"½ÿ>Ö®ú‰¤I®K–úÎX«×l5ÅÅwô—””Ôëš@EhÑÒe舗_šTëk];âÄ©SÚÄZðñãпŸÎÀ{yzx`ë÷ßáüÅ‹8wá".\º„àãÇ! 1 ?¼=o.Äb1nܼ…¤äd¼»àmm_‰ã^xKW|€¢¢"XYYáóOVC*ýg ŸZ­†€B¡Ô¹î½Eò )Š_[qþúJLJÆ’å+ôŽû¦O›ªsì±Nâ©aC±öóõøvËÀ;rLü¼<=áìä„_OüŽi3gá‹Ï>…¹Tªsþü7æaá’÷1vÂ$X[[£@&C·®] .Ð_×õ elUÇ÷îü·±xùr<ý‹°´´D¡L†‰ãÇá±Nb¸ñÙ_bì„I015…•¥%Æ<=IÉÉ5ö×c#"""zØ5ØŒµ‡íƒу¦©k}‚‚˜„…K–bÕŠåL®‘žÆœ±&57ÇË–Ö7$=eeexå‡H$X´àm™E5½Öÿ‰'ðé†/ W(‘‘‰[·ðö¼yµ^ÇÄÄA={j7×IOÏÀ{÷bçî=°°°À¼9³‘š–Xµf­Î¬pU‰ —_+++…Bì;pÑׯ#9%)©)(+Ó¿w÷É7¤(~mÅùëc͇ÔÙæÇo¿Öy0ÿyûÜsHLJ„‰‰)üÚùjŸë“'N@€¿?ÊÊÊ 63Óë«m›6øùûïp5"2™ înîðkßN§Í›¯ÿ·Öxj»>lßú£Þ9³¦¿Rï8~ÿåg½~ªŽï‘Žðë?àjDÔj5|½}àââ ùÔpt鈸ø°²²Äc>ª—ЭÚ_]c#"""¢º5Hb x¸>=Œòó pâÔ)ƒÛ››K‘““‹…KÞǪË ­2“„n:cÍÕyß°ñ+ÜNLÄ×_¬×K×ôZßÞ½ñéú  Ç­Û ðpwG€¿_µ×LIMņM_ῳfÂÃýŸ#]\œ1{æ deç ìì9Ì›3"QÅ3sÆ´©0·Ð/*ßÚ±är9^}mD"ÆŒ…Ñ#FÀ×Çï,Ö¯ïvo‘|CŠâ×VT¿¡UWÌËÓ^žzÇMLLлWí»}›šš¢[—.÷SMׯcâ¨n|R©½zô¨¶½«‹ \]\êÕ_CŒˆˆˆèav߉µ‡íƒk¬Ñƒê~g¬••—A¡TÖݰÒݦ%%%(-+㮤¤Ã˜k ù;TW‘÷ÝûöáàáÃøtÍj´nÝZ§mm¯YZZ [×®9y q7nbÔSÃkŒÁÆÆ/]Æ™°pŒ{áy½×5 ,îîÌèéQ±4O*•"°S'm›k‘‘¸xé2;uÂÙó•-ßlF//m¹\^ë½0¤(>Uï¾kü`@ôpplÕ S&M4¸ýÎÝ{`mm/?[@ÀÄé©Ï¬µ{ww¾_uy¿rí6nþÏy渠=7=#³Æ×œœœ`.•¢¿Çññ'›' 8 Æ8¬,-ñd¿~øé—m°·³Ã}û@"‘@¡Pàï£Á8ŠÙ³f¨˜UÔ1 ¿þ¯\V­‘™‰Õk?E‡€µ• 33 m¼¼ Ñh°kÏ^$&%£K`ç㨫(þì7ê>= î;±ÆD†ûž±VV…BaPÛó/âÏ¿â«/7M£/㣋@ @yy9D"T*UíÅb1ÊËËuJÜºŠ¼_¹z eeeرsvìÜ¥s®·w¯­|)úöBß  ˜˜˜ C€?œªÌh«ê͹ÿ…Xl†Õë>ÅÇk×A,C¥RÁÄÄãǽˆgŸ­mûÞÂX¸x)ƽ4övvÈÍËC€Ÿ^¿»a¿_{ôí„Eï/ƒ‡»;d2üüÚãñ>½ñ×áCpsuÁscžÑ‹A$ÕZŸˆˆˆˆˆjÖ 5Ö–€KA©E©Ïï[SÍ»sGŽÿýðÖ¯]M/ߣ777deeÁÅÅöööµþk4( deeÁÕյξçÌœ93gÔÚ¦®"ïS&M¬×ì̪ÊË5 :hPmÍ¥RÌc^ú2b®_‡B¡„c«VhÛ¦ ,--tÚº8;ãû¯¿BDTòòòáêâ¬ÝÀ¨ø÷`åûKƒÌÌ,xyzÀÇÛr¹ç.\€¯wÅ®ÚÕɯ­(¾!Åù‰ˆˆˆˆVFƒ›ñÑ;g£;+Éêü`TÌ|©éƒA¥Ú>¸»»ÕƒB¡¨öƒÁýš´5›'zÂÍN×±J"‘¨ÞuƒˆîGj~ fþœ„­“jߘãÀ:th“Ä$ ‰P^^Þ 3Õ>Œ‘#G6XÔ|Š‹‹qáÂ8;;4 ­¼¼èÞ½;,,ôŸ)-Ío»váû·âíÛ`n®_O”ˆˆˆˆˆ\ù¹€“!G1uú܆Û¨¨[S¹+hmD"‘Nµêt @Ç€íßÍÍÍÑÿ‰'ê컶ݲˆfM5sL£ÑhÿUÇÎÎ={öDLL%Ú8 IDAT ÒÓÓký]puuE¯^½`eeµZÝ„‘ÖOFf&Þ˜ÿ2³²0é?ã™T#""""z4hbˆZ®¦Lt1©FµQ«Õ°¶¶F¿~ý`jjjP{¥RÙ¢“j`gk‹q/<{{;ôíÝ»¹Ã!""""¢&ÀÄZ=°Æµ4ü}£•Z­nñ‰²ú‹Åxz—+=Lf‹5"jñî]¢ù þ!¢ŸZ­Æ–Ÿ¶béŠ•É ›;=»÷íÃößw6wÕÊËÏÇŠV!++«¹Ciq.^¾ŒuŸ¯oî0ˆˆˆè!ÅÄÑC¢¹cL¬Ñž}û±ý÷ðôô„©iË›4ÿסÃ(,l؄ߟá»ôwV­¯˜ë×qòôØÚÚ6@Tÿ.©ii8y&´¹Ã ""¢‡k ¨!w@$""ú·IIMC€¿^™2¹Åmî V«‘˜„öíÚ5h¿ÁÇCP\\|ßýÄÅ߀—§'ÌÌjÞœˆˆˆˆš^Ëûº¸3¤ÆQSªÏï#g}Qs:á"““PPP€?€þý •J‘˜ˆc!'_Pw77 2ÖÖÖÚ󂇠ƒ¿? d2>zS&M„­Mµ×(((À‘àcHMKƒµµ5† w776—¯^ÅÙsç¡*)Á#ðd¿~ …¸yû6JKKáW%±VSûJååå8qê4®EFB"‘ oP/tìÐr¹ÇOœDl|<ìííqáÒ%tëÒÅ >Uªü}ô(nܼkŒ> ±ññz±UºqóŽ…„@©T¡]; 8"‘Hûz]÷øø‰“ðkß99¹8qêÌÌÌ0bØ0¸¹¹âè±ãˆŒŠ†­­ Fx õn_)*&gÏGL†VЯÜÝÝôâP©Tøûh0JÔjt | }‚‚t&W®âLx84ååêU÷nôDDDDI`Ù²eËŸ— š[6oD-ÔîkrŒzÌÖRQ݉šH‘² û¯àÙÇjŸù‡6mÚ4MP$!!íÛ·oî0ˆÈH Æ•k¸sç %zõ莋—/ãÍ Q “A*•àxÈ ìÝýŸx–€w/†\¡À†›››‹¡ƒÁ¢šÙnW¯E൹o@V(ƒD"AhX8þØ»£ž±X FƒÖ|‚ïü ––ÈÍËÃŽ»™•…¾½{ãLX8¢¢£1}ÚT¨³=Èår¼ùλ8zì8l¬­sý:¶íø; ¬¬ ?ÿº©ii°³³…½=üÚµ«³Ï¬¬,ÌyãM„;+++\ˆÀ¾?ÿBVV6>Ùþ~~:ã>r ½ui)LLDøcï>\¼|C „@ À™°°:ïñ»K–"úúu£c+œ Þýû‹KW®ÀηŽÅñ'ñô¨‘X´tY½Ú …Bøë –,_@‰XŒó/á—í;ЫG8ØÛkãÈËËÃÖmÛaoo”ÔTü²}¬­­à_1îí¿ïÄGk>Z]‚òr ~ýíwddfâÎ9Æ}¡áq‰ˆˆˆªP**V#$&ÜÂÞý‡8cˆˆˆßË/MB~ARÓÒ°jår¨ÕjlØ´}{aé¢w! !“bÖܹøß?bÑ‚ùÚsÃúµkô’J÷Z»~=†‚ÿΚ ˆŒŠÆüEï!-#ÖÖÖØºíW\‹ˆÄ–¯¿†‹‹3à»-?`ÛŽßðêÔ—¯³ ´®öööøt×())Áß~ kkk”••aÒ´WròÞž7ÏŒ…¸øXóá‰Døé—mµöigk‹•¯†……9¾øllml V«1ëõy¸yëüª|¹ —˱nýŒ5sg¿ böÚôÙsvö,ztëfð=ÎÎÎÆ7¿„™™nÝNÀ´™³P¢.Á¦õŸA  G·nXºb%Ò32êÝÞÝÍ ;wïÁÈáÃðÖ¼¹€ÒÒRLxy΄…¡¯6ާNcË·_k“m Þ[Œ§NãÙ§G#''[~ÚŠ1£GãõÙ³·n'`Öës!‘H þ]$"""jH¬±f [©…Š2””r9µ %¥Èe°3¯û?c‰D¥RÙìûG©TòCÑ¿LÌõXdeeᥠ´Ë ml¬1fÔ(œ<}Z§í€þýjMª)•J¤¤¤B¥R¡¤¤ðHÇ8¸w7üÛ·‡LVˆŸ~Ù†×gÏÒ&´ ¨gh4ÝM¬ù€Aícãâ|ü8Þž÷ºvY¥H$ÂkÓ§£ÿ㨨‹æãÝ"‘È >ÃÏžCtt ¿óŽv¹«©©)zõè‘Hï¶:ã>wá"är9&ާ=æëãùõƒƒC½îñ}ûjë·yyzöï¯-9PyL©TÕþóOVcάYÚë©Õj(J8žì×O›T_oo(•mÂΞEyy9¦MyIûºwÛ6x²ß """j.œ±f þí-°í\.þÓÃËA©E)ÊðËÙ\ôkgQg[///ÄÆÆ¢}ûö‹ÅM]ÃQ©Tˆ‹‹ƒ——Ws‡BD (=#žî:ǽ¼<¡R• /?övv'GÇZû’H$1|þ6d0LLLpòôi”••áÛï·à»-ÿìЩRU$}l¬­‘˜„ ã*TuµoåÐ ¿ìØO½Íúöþ§ؽ³à éó׿£cÇ:uÇ*ÛT·qAZz:,,,tQ0|èÀá#G ¾ÇÕ}yQÛõm/ ±ïÀD_¿Žä”T¤¤¦ ¬LÓ§ÖŽ­jì#=#­aa¡ûÜkÛ¦ ÂΞ«ñ<"""¢ÆÄÄšÆu·Áö 2|øg*òåÜý“šŸ¹ýÚ[`\7¨UÊZÛ>òÈ#ˆŠŠÂ•+W´ßü?($ Ú´iƒŽ;j?€уÏÌÌ eee01ùçíH©º´âKKµÇºgæ¾=o.Æ}¡aá8é֭߀¨˜¼óÖ›ˆ¾~¾>Þ˜=s†ÞyB™ÙÙ:ÔÕÞÒÒQÑÑz3Èî¥ÑhwㆠhpŸq7n Ó#è½SíÆ‰¤ÖÉës“\.Ç«¯ÍH$˜ѣ0zÄøúxãÅKôÚÖö³–H$(Q—èW«Õ /Q}0±f µJ‰I=í0íq'»ˆšKyy9JJJ —Ëël«R©Ð©S'tëÖíûý­Ï8‰èÁQ¹[gTt ºtÔЉ¹T ÇV5Ï\ªê—_·ã±NðHÇxá¹gñÂsÏbÅG«˜ âß@s©9;uÒžSZZŠþ½{õB\|<¬,-µK4ëjàîòzÝ8΄…áÛï·à« ë‘›—¹\Žv¾¾÷©*QAYå‹’˜ë±ˆ‹Ãл :Ý{è …B¤ädxzxh¿ùÎBôèÖ ];w®¸§ pïGDT4²²³±å›ÍhsÏìãúþ»îîæ†ÜÜ<¤¥§ÃÕÅE{<2:ºÁb%"""ª/&ÖêA.—óÃ==°øûKD-I;_øûaÓ7ßbõ+ààà€ˆÈ(ìÙÆÑÖê2Ķ¿!îÆMtð‡P(ÄÍ[·påZÆ>;àëビ§ÏàZd$:=òär9Ö¹ —¯^ÅøÇâÏC‡Ðîn}5CÚ€wÛ¶8¦Mj%$&âó/7b`ÿþJ¥ˆ‹¿¡Pˆ6^ž÷Ù¶M„†‡ãÖíÛðnÛqññXùñÇÐh4zKN kçÎpuqÁú›°r阛›ãïà`\¾r“'LhÐ{|?¬­¬™™YhãåFƒ]{ö"1)];ÜOŸ  ØÙÚbͧŸaŒŰ²²Â‘cÇpþüXÞ½QScbˆˆˆšÅü7æaá’÷1vÂ$X[[£@&C·®]ðÊ”ÉõêçÙgžÆÏ¿nǨç^€T"¬°£G<…_xð̨‘9ysßšV­ “¢—>_»æR)ââãѵKmuµ€Iÿó.bÊ«3`gk Ya!†ŒéÓ¦ Q^^ŽW_›ƒ?XaPŸS&NÀ bÚÌ×`ei‰²²2Œ}þ9üôË6øx{ë[$áÝùocñòåxú…aii‰B™ ÇÃcmÐ{|?üýÚ£oï ,z<ÜÝ!“Éàç×÷é¿‚›« žóLýˆÅfXðÖ›XñÑ*Œ;©B¡“&ü»÷ío‚‘éÐh4ÜŒ¯˜Foçà\ûDDDD D­VãjDd2ÜÝÜá×^f–!‘˜” ±Ø í|}õ ú—––âZD$d……puq©ó:†´—+¸rå*ÊÊËáëã ggóÃχ@ôîÕ À > qåÚ5B>Ö V––uŽ]¡PàjDÔj5|½}tvî߯¨˜dffÁËÓ>ÞÞËå8wá|½}ô6l¨MQq1®\½¦:iwe%"""j ù¹€“!G1uú\&Öˆˆˆˆˆˆˆˆˆ Q5±ö`U1'""""""""j!˜X#""""""""2kDDDDDDDDDF¸ï]Aí«&""zäååñYVEbbb½Ï±²²j„HˆˆˆˆˆZ6ÎX#""""""""2kDDDDDDDDDF¸ï¥ DDDôïVTTŒÌìl¨T*ˆÅb89:ÂÊʲ¹Ã"""""jvœ±FDDD5***BBR ÊËË¡P(”„¢¢â戈ˆˆ¨Ù1±FDDD5ÊÌΩáxv½ûR«ÕØòÓV,]±2Yáý†Ö¤òóó±â£UÈÌʪ±Í§¾ÀÙóš0*ÃÕ7¶ùgEDDDÔ”š,±–››‹È¨(\¸t Ñ11(,*jªK·8EEE¸€Ü¼¼æ…ˆˆê•Û Édz¯•””àvB“’tŽ'&%ávBÊËËkì×ÐgAs?3”Je½Ž×fϾýØþûNxzzÂÔ´y«Qìܽ¿lßap{¹Bã'NÖ:Sïth’SR"¼Wߨªþ¬ê{¿ˆˆˆˆþ®öŽ\ŽàcÇ‘š–¦s\  K` ztïÖØ!´8IÉ)8yú4éØ÷éÓÜáQ-._¹Š[·o£Wîè¨óZaQý}¦&&xeêËÚãGGII ¦N™ ±™Yµýú,hîg†F£©×ñÚ¤¤¦!À߯L™|¿aݷظ8(õO>,ªþ¬x¿ˆˆˆˆª×¨‰µòòrüyðrss!•JÑÎ×±Ù9¹HHLÄÅË—aii‰þ5³ó."19 øóà! èß¡ágÑÁß2=Š)“&ÂÖÆ ‰‰8rùpwsÃð!ƒamm­íëø‰“ðkß99¹8qêÌÌÌ0bØ0¸¹¹âè±ãˆŒŠ†­­ Fx z±„†…#-=%%%øóà! <&&&ˆŠ‰ÁÙsçQ “¡•ƒôëww7s5 Ž…œÀµˆ˜››cà“ýáãí]㸳srpèï#ÈÎÉ«³3†;;»Zï•¡ãW©Tøûh0JÔjt | }‚‚ ýqÔ[ÕŸ•D"®ö~Q#/ˆŒBnn.¬¬¬ðâóÏ¡OPºvé‚aC#¨gOÀÅK—ô¾õ.¾s©iiÈÉÉÕ{­´´jµ——´´t( ‰¼Ì¬,dfe¡´´ô¾Î¹7–ôŒ äääê½~o¿…EEHKOGñ;ÕÞ‹üü|¤¤¦";'Ǩoù‰ˆèÁ1uòK˜ñÊ4½Ùj†> m§T*‘–žŽÜÜ\½e§õyF5…Èèh¤gd¢@&ÃéÐ0¨T*lþî;ìÚ»óæ/@øÙsP«Õ8†WfÍÆ©3¡(**Âo;wáåé3uj›}ýÝÿðÙ_âÓ _@]ZŠc'NbÖܹX²|%þØ»åšrìÞ·sß^€²²2½X®FD"+;¹yù8†ÒÒRøë æÌ{W#"¡T*|<SgÎBü›:ç~ùÕflúúäåçãø‰“˜>û¿ ¯vÌ×cc1åÕø;8ÅÅÅØ½ÿ&¿:ñ7nÔxŸ ÿ¯;~â¥ËPXT„„ÄD,^¶ìÝgðÏ£¶Øªþ¬Î¿¨w¿ˆˆˆˆ¨B£~Ýx=6еs ¤R©Îk;àÒ•+P©TÈË˃ƒƒÔ¥¥8‚›·nkÛYZZbЀ'áâì ØþÛï(*.FëÖŽÈʪ(œ, øX'ÄÅÅk?4X˜›cÄSÃá`ooÔ9%%%8zì¸NݱXŒÇûôF;__X¼<=uÚÝ»\çÎ;8täˆöº ‰àîQKµmÇ(•*LúÏx˜™™ü,0´F£AhX8"¢¢´‰7+KKôï÷ÜÝ*fXòŒjJ/¿4 ùHMKê•˵ÇÃúµkàïçµZ ›6£oï ,]ô.„B!d²BÌš;ÿûáG,Z0_{^vv6¾Ùø%ÌÌÌpëv¦Íœ…u 6­ÿ =ºuÃÒ+‘ž‘¡½'•fMyùyP(”ø`ÙR5×F†·æÍP‘˜œðò4œ C;_í¹yùØòÍfXYYA¥*Á‚EïáËÍ_ë•¶Ðh4XõÉ:vzË—,†‰‰ ”J%ÞZø.֭߀Í_lлGõÿ‰S§±åÛ¯á`oXðÞbœ8uÏ>=ºÎŸ…!±UýY}¸zÎý""""¢ 6cM.—#/?жM½×MLLðòK“ðÊÔ—µË4Nœ<…›·nÃÌÌ ÞmÛÀÎÎÅÅÅøëÐaÈåróssóàß¾=Z;:¢¼¼—._Z­F‡ØÚØàŽ\Žó.}ÎÙó˜”KK ´oç W¨T* 9u•oj“’жÚùúB  2*))©Ðh48xøodeeC"‘ m›6°07¯öÛs""jÙ d2$%'ëüÉÈ̬¶mI‰%%%Ð? êóÌ8wþ®EFB$Á»m[8::¢¨¸<„ü»ÏÞJ5=£ZŠýûÁßÏs=YYYxiÂ…oQll¬1fÔ(œ<}Zç¼'úö…ÙÝ^ž€ýûC èS*UÅñù'«1gÖ,íßÕj5€^]±±Ï> +++€Xl†É' =#CçKA¸qó’’“1i´Ë&% ƽð“«{oaÈûš…Bì;pÑׯ#9%)©)(+ÓßÕµ——Îß½½Û€^’µrÓ¦UkÖj“d *©Hôååht•ê3þÖŽ­Œ¦Á±‘a½ò¬¡õÄ*k‡¸8;£ÕÝlB¡þþHÏÈÐ{Ãêêâ by&P±ËhårQÉÝcåšr£ÏyöéÑ())AaQRSS‘_ CAìî˜tûõ½§hqå’WF£ÙÇÛV––בHÐÎ×W¯]3è¾QË`gg[kcª’¤¥¥×zž¡ÏCÛUÖµ07GzF:róò ›ÁÁÁˆ‡v¶x¥šžQ-…àžÄŽ™™4 ÊÊÊtŠã—ª+fŠ7Vm/¹\ŽW_›‘H„1£GaôˆðõñÆ;‹—èµÕ«·z76ó*%/D¢Šq͘6ææzýT—«Ïøï½oõeLlDDDDT½FK¬YXZÊÊÊpçÎXXXèµ9|äÒ32ѽkWí1ssÝ7xwßð)UºK9*—zÔuÌØsââoàÜ… ½‰‹Íª=®ºså¤J––ú÷‚ˆˆZ6¿v¾è¨s,'7¿ïú£Öó }Ú®riã¹§CÃô®WRåyYÓ3ª%ª¬…ƒ.ÿ¹×Q110—JáØªq>QÑÈÊÎÆ–o6ëÌH«nvyDT:>¦ýûÕˆ€G•Yfžž*’™:i_‹ŒÄÅK—uŽUjªñU¯Ñj¬I%íÀê–ΨKK‘”œ…B;[[m”ÊÝ:+UÖ6135m¬PõÈd Gii)ü۷ǰ!ƒ1~ìX899Õ«³»fä Ý7æUÇHDDÿ^†> nw÷yØÊÁO©ý3|èõê‰.;7hüM©¯üý°é›o‘››  b‡ñ=û`ØÐ!u~V_•õë¬ï.ÉÌ̬˜=¯Ñh°s÷$&%kwV­´óÝˆŠ‰PQ¿îÛï· wP/8WyàåéŽØøõ7ÈÉ©KFf&V¯ýiéÕÏrlªñzþ:ˆ­Ò&„‰ˆˆˆV–X€W®]CVv¶Îkç/\Ô.eqvvÒ.;HÏÈ@aá?Esãâã­[;¢©TÖYsrr“ýû¡m›6šKQX¥f[]œZ·ܼu[ûƳ´´7nÞlØ€‰ˆ¨Å2ôY`h;GÇVÈ/(€T*«« \]]œ’‚°ð³zÏÛÍü7桨¸c'L˜±ãðú[o£C€?^™2¹A¯ãìä„ó/bÚÌYðòô@ßÞAXôþ2Lyuž}q<.\º„ÇûôÆ_‡a×î=Úóžv ^ã-Œ~îLyuLÍLñúk³ª½Æ{ @­VcÜK“1vÂ$L˜2v¶¶x}ökÍ>þúÆvïý’+ˆ‰Åñ'¡V7Îò\"""¢E£ÖXëà︸x¤gd`÷Þ}psu…¹¹99¹ÈÍ«(îÔ«'„B!lllàéá¤ädìÞ·ÞmÛ //iéé011A‡€€Æ U‡­­- ;;¡áá0™ þæ (î·dµ:înn°µ±AL†ßÿØ O¤§§ë$‰ˆèßÍÐg¡í¤R)Úùú".>{ö€wÛ6P(”¸@€¿&]ý¼ùúuþþû/?ëµiÛ¦ ~þþ;\ˆ€L&ƒ»›;üÚ·Ói³}ë:‰D8~ø Î1O½c÷špsuÕö7xÀ\‹ƒ••%;uÒÖCûcû6k¸8;ãû¯¿BDTòòòáêâ¬Ýµ&ÆŒ¦O›Zk¿õ­êÏJç~™™aþó0ÿyµ^“ˆˆˆèaÐè›<5l(N‡†!.>É))Úãb33ôêÙí|}µÇ<Ù‡ÿŒÌLDFEW´‹1ðÉþÚeMÁÆÚÝ»vÅ…K—põZEí©DW¤¥§#"2J'îš…B 2:ŒÂ¢"DEWŒÉÎÎùUŠKÑ¿“¡Ï‚ú<3žèÛJ•IIÉˆŽ¹ â¹Ú§wìí›hdÇÔÔݺt©»á}011Aï^=uŽu @Ç{¾È377Gÿ'žÐ;×ÅÅ..Î]G$Õ»fYSŒ¨_lÕÝ/""""47ãï¾w0ìb%{ßÀ+•Jdfe¡¤¤æææpjÝZgÇ«{eegC&+„ØÌ ..Î0mÂúj÷’"''b±Z;:ÂÔÔIÉÉ7W×㯪¼¼iééP(”°··ûW|è!"ú·ÈËË3øYf(…BF£3»ÙÐgA}ž¹yyÈÏχD,ckGˆÍf£‚ÄÄDíÿ¸ûEWuíØAûÿ­šð 0""""¢æ’Ÿ›8rS§Ïmük•$ ¼<= jÛÚÑ­›®¦ZMl¬­acm­sÌÐ1ÜK(jwú""¢?©TªwÌÐgA}žööü²†ˆˆˆˆ¨5êæDDDDDDDDDÿVL¬‰5"""""""""#0±FDDDDDDDDd&ÖˆˆˆˆˆˆˆˆˆŒÀÄ‘Lš;"""zxdçä`ÇÎ]ˆ¿qÅÅÅpvvBßÞA:h„BÿïûtÃ脞ݻ5b´oÃÆ¯Ð½[õìÙÜ¡‘î;±–——×q5>ËšFüxý­ùhíèˆAž„¹TŠ[ øl×>‚OV}@`P_§CÃàéáÑ ‰µ»÷@¥Ra¸¬Ïº„†‡ÃÉ©u£$Öz<ÍqˆˆˆˆZºûN¬MÚšÓqQ ±éq£ô»å§Ÿá`oo6~±øŸk<Ñ·/.^‚°ð³èÔ«Q®mˆØ¸8(Êf»~CkèñüÛîQCàRP"""jÉ©)hßÎW'©=»wC·.]PXT¤s<;'‡þ>‚윸:;cèàA°³³«±CÚ߸y ÇBB Tª@‡¦à IDATЮ† ‘H„аp¤¥§£¤¤<„¡ƒÁÄDÿmRTL Ξ;™ ­0 _?¸»»ÕSyy9BNžBÌõë…xìÑGÐ'(H¯]l\<‚CBPVV†®z Æ„ÄD 9ü‚¸»¹aøÁ°¶¶Ö¾|<üýQ “áðÑ£hïë[íxjÿá#GѱCÜÝþKDd”J%ºwëjðý!"""zØpó"""jž?w§CÃP^^®óÚ'«>İ!ƒµ¿‹)¯ÎÀßÁÁ(..Æîý0ùÕˆ¿q£Ú¾ i,äfÌžƒËW¯!¿ _lÚŒ·¾‹òòr\ˆDVv6róòq:4 ¥¥¥z×8ð×AÌ™÷&®FDB©T"øx¦Îœ…ø7«I£Ñà½÷—cíçë‘“›‹ää,]ñ¾ý~‹N»³çÎc銕Ëå¸uë6Þ[¶{÷о~&, ¯ÌšSgBQTT„ßvîÂËÓg"3+KÛfówßa×Þ½˜7ÂϞÅK—ôÆSÛø?ÿr#"£¢uâ:tä~ß½ º?DDDD#~ÕHDDDMbÆ´©xç½%X²|lmmѵsgtíˆ]»ÂÁÁAÛN£Ñ`Õ'ëØéQ,_²&&&P*•xká»X·~6±A§_CÚËår¬[¿£GÄÜÙ¯¨˜½6}ö„=‹YÓ_A^~ %>X¶´ÚøwîÞƒ‘Çá­ys¥¥¥˜ðò4œ C;_½öÉ))?wŸ|ô!ºuíøî‡q4ø^ú²¶ÝÍÛ·ñÃ7›µ³ëÞ^¸'NŸÆÓ£FB­VcæÍèÛ;K½ ¡P™¬³æÎÅÿ~ø‹Ì×ös$øÖ¯]??À‡«×hÇS×øëbÈý!"""zqÆ5 Olýþ;|´bú?ñ8bãã°fÝg;ñ%|¸z T*€Š„ORr2&Møv¹¡D"Á¸žGl\<Šª,5¤ý¹ !—Ë1qü8íy¾>Þ˜ÿÆ<¤^m>ÿd5æÌš¥ý»Z­†¨±î˜PPñ6+2:jµðÊ”ÉØ¾õGvû÷×Y²êãí ¥²¢Ï˜ë±ÈÊÊÂK&hwMµ±±Æ˜Q£pòôi~ôï§MªUÕã'""""}œ±FDDDMÆÄÄA={jwÁLOÏÀ{÷bçî=°°°À¼9³‘š–Xµf­6™ª’ŠÄ[^~NŸ†´OKO‡……ìíuÎ>tˆÁ± …Bì;pÑׯ#9%)©)(++¯±½»»&Œ‡­Û~ÅŽ»Ð!À½ºwÇð¡Caii¡m×Ú±U}¤gd@ ÀÓÃ]縗—'TªäåçÃþnRÎÉѱÆ~büDDDD¤‰5""¢&T”ŒÂÔd§%êÕ»—P(„£«¬Ý;ªUÍÅñ›@ €F£©öx}¤¤¦bæ¯ðßY3ááþO’ÈÅųgÎ@VvÂΞü9³!U$ÇfL› s s½¾ª&¢ i/‘Hj½ßu‘Ëåxõµ9‰D3zF_o¼³xI­ç½2e2žó ÂϞÕk×°uÛ¯øcï>üoó&˜›WÄ*Ö¼€ÀÌÌ eee:›”ª+jœÝ[묶~Œå5ˆˆˆˆ¨f–Xkei‚g»ÚÁÇQ ±Y…j„Ý,FpL!Êõߟ×hÎ'„ß*Æ…„;*ær‰¸"\I’7Ú5îåï,Á°GmáÝJ 4H+PãÏkˆLU4Éõ Ýìaf"À/á¹F÷a*àÅöðrã‹àL*Ê0B"¢–§('æÑøñƒqhëVóì¢J·Ss0ë£m(‚V­\› B}‰ …þóI*‘Ô«\¼tgÂÂ1î…çõ^×h4°¸›hòô𬸆TŠÀN´m®EFââ¥Ë:Ç mïîæ …B¤ädxzxhÛ¼ùÎBôèÖ­Ú˜î¬ìllùf3ÚxyiËå5¿wˆ‹ÇÙóç1qü8 2Æ FbR¦¼:‘QèÙ£{­× Ý¥3*:]:jGÅÄÀ\*…c«šg»éöSûø ¬L÷9|;1¶¶¶õODDDô°j”k>­Åøú¥6èêeËIwp$ª2EfpÂÊgÜQŸ/¹ƒ|,áfgÖ ñ=ÝÙc»ÿ³¢¯\mö5y¾«=Ö½è 7[S„ß*Æå$9œmL±úy<ÝÙ®îZˆNîRzèÏ ¨‘Ùâ¹®öHÎ+Ai™FïçBDôoS˜ƒ5¯?Og{”––ÖùÇÓÙσ¢´˜f‹¹¦å…­[×¼—•¥%žì×?ý²  ÖÖS(Ø»ÿ΄†bäSÃ^žè€_ƒœœŠ/p223±zí§HKO×ëÛö];w†«‹ ÖoܤM†ýŒËW®"àžºdU“K•¬­¬™™;qj4ìܽ‰IÉÚúiU)•Jlùi+þ[{,âîΛÎÎN†Ü6´óõA€¿6}ó-rs+Æ…=û`ØÐ!uάO]ã·µ±AèÙ³ÚöÂÍ[·k숈ˆˆ*4ÊŒµ‰½Z!ïN^ß–Ué?ÓÓÎÜ(Æò§ÝУ­%ÎÞ*nŒK¤]k1¤fÿäÇ}}Õ¬ripí$˜Ò§~Ïůgugzýw ¦õm…°ÅÈ*ªþ ú¿«­b3”ø)4€þÏ…ˆèß&;å6¼ÝZÕ˜ˆ©Ž·‹=ò2’àÚ©î¶ÁÊÊm<=‘• ¥J‰XŒÖ­aeiYï¾Þœû_ˆÅfX½îS|¼vÄb1T*LLL0~Ü‹xöéÑÚ¶ï-\€…‹—bÜK“aog‡Ü¼<øùáõ»;ZVUW{‘H„wç¿ÅË—ãé^„¥¥% e2L?uzàìä„_OüŽi3gá‹Ï>…¹Tªíß߯=úö¢÷—ÁÃÝ2™ ~~íñxŸÞøëð!¸¹ºà¹1ÏèÄôX§GñÔ°¡XûùzüŸ½;«²Lÿ8þ9öU6ÙqË5ÓÜ[DsÉr*­&›ñWZŽ9ÆL˘ý2ËFÓiêg›­cÎd‹£¶ŒZ:iáF¸k…‚ŠŠ( ‹(pàÎïòä‘E@Óïûõ:/=Ïs?×s=çü!^\÷}ðᇜ9SÂÃã¤Mdd½?·iO>Á3Ï¿À}ãÀÛۛ¢"úô¾ž?L_çuç?O]Ï?îþ±¼þÖÛÜ7îœðòôdÌ]wr4#£Öxç~>""""W+`µZ­¤¨ú ª¯pƒ<ðI^µc lKZ®‰—¿©þ[å9cÂÙ˜zŠØäS¶cžŽ ëêM€§ÙEÄî+¢°¤ê7¢‹'uà³]ù¬ü± ^ãÏjèBt'/\œHË)c}J1–J+ýÛ{r__?œVí)dݾSt u#³°œÜâ_ÖiãïÌ NÞ´r7r¼ œï’OQ\öË=uòâÀ‰2œå“Ñ@BF Ûê(þõÎ0Â|™üñájÓa[¹ù`|;>ڒǪ„B†Fy³/«ŒÌÂrÛ˜n¡n¸89ðCzÕ´ØèÎ^¤f—áãfdh”7‹·¤¸ÌÂM½èìŠÕ {—VËéBÏVSÜ¢ó¦i¾8: W'¦}žA]jû®®oãÁ}}ýhåfdù˜**¹£§¯Ý÷b¶\‚j§ˆÈ%ôêp`ù¬]cª0sÝïþÆu·ý¡™²ªîÝÑ. ¾Æë玮ú(,*b_J ¥¥eЮm[»ÅüϲX,$&%‘Ÿ_@hHp­;^6d|ii) ‰‰TTTpMû„„üòsÙlfÇ®ÝX,nУÑXíú¤}û8q"‡6‘thßž’’vìÚÅ5í;^óZxéG3H?šŽ££;^Ó¨]8+**HHL¤¨¨ˆð°p:wêxÁkjzžºž?3+‹ýâååÉu×^k·¦[mñDDDD®6'³ˆÛËÃ<Þ<kÇ ÊéÛ΃ª:ÓÎ-"=·ü˜ÝØNÁ®ÌNÁ3i¹&~s]+îíãËŒåÇHË1U‹]Ÿñƒ:yñôÈœ(#§¸‚Ƀ[3´«Ï~™A÷07=1:ØÞ“M©ÅL¿=„·œä¿‰U»Œ hïɳ£B8VPAF¾‰»{ûrwo_þ²4ÃÖMöÐMü^B¯Hw2JhííÄ=[ñþƾN(¬–·«“=#ÝY²ãdkÌ–Xøí{mïÒš÷6æØÖª T޶ÂÚÄ›‰?XÌm×¶¢°ÄÌç»ò™yGÝÃÝØ}ä .ŽÜÕË—/wç³hs^½Ÿíü¸ŸíÌ¿àw^“º¾«®!®{;áâXõ=›,Õ¾ÖDäJÔЩtWâÔ»V>>¶]Aëb4«­§v±ãÝÜÜЯ_ç¹a@Ýyu‹Š¢[T”í½»»;ƒ ªóš6‘´‰Œ¨sÌ…899ÑçúëtMMÏS×󇆄Ò x""""W»f)¬ý+>Ù£Ãxî7¡–Xø)£„ŸŽžawz ùgÎÙ½ ˜:"˜Äc¥ümu&æJ+®N̽;œ?ßÄKÚÅ­Ïxwgþ<4ˆÕ{ yocÕ:(í]˜ÿû6ôkçÉ?¿ÏÅ×݈›³/~Y-w'£?nÍÖ´Ó¼üM•Vðv3òúØH¼ÁŸyk³mcoêèÉ”OÒmÏôâè0nêèUca­µ—#NFY…M;Íó–.ÞüïìÏ.#Ü×™¾í:¬¯Ž ˜Ž­]xbx0MlÏS·ãâXµÐnû@Â}Yºã$æŸÛ¸Ê**ùrw>ƒ\ñrµŸbPŸñ×·ñÀÝÙeçtYÊ51?ö„]Q¯6ƒ] ôrdÉŽ|[gÙ©R «örã5öÓ\âöŸ¶‹y(ׄ«SÍ‹»:U}ÔçN¹l ›R‹mů³ý]Q¡n8«òøxKý«jñá†<Û¹q£¡ß­ˆÈÕÂb±4ø%"""""—§féX0WZÙqø ;WM[ öqâŽëZ1º—/%啼»!‡VU;qN½5Kå/מ-¼µr·/¾Ôg|ˆgL•ÕŠhß&Õ+ï o'¬À±ür»ãGO–ãìhÀ×Ý‘‚’ªØy Ødàìp­ÜkÿÈÛ¸`t0p0§þ­s×…;^PβùÜßÏŸ»¯÷%%»Œ]GÎðmRgL• z¶sã6FC¿[‘«EC;Ð,êX¹l5ya-´•3SòM¹+ø¥€“]TÁq¹z9ѯ'ïnÈ¡òç­8ÿŸGIyeµXyçwê3¾¬¢‡‹èë°X1F0Ÿs ÇŸ;ÀϩմVZmr‹+È;mæÚ076¤œªqÌ‹cÂØŸ]ÆìZ¦BžÍá\•çmgúñ–ãÊ(!«¨‚)CZãî\uï[ºxs]„»ÝšaFCÍk¡¥åšHÍ.ãƒñó¨ºG·P7FõhÅwɧ¸˜F®e;ó)(13÷îpú´õÀÁPÕ-Ö»O âÄ© b“«>›¢R ýÛyØŠk#»ûÐ. îš«£ÿàÏðn>¶c]C«Šh'NU4ù³y¹ØÁ³Ú+ÒϹÁßíYµ}/""WÌf F£±~E5£K¥‡‹iÅ‘fÓ,k¬½½þåæ@žÌ“#ÀTQ‰‹“f‹•ÏvåÛíšùÊš,fãÇÚQPbÁÏÑýÙe¼¿1·ÆØo©´òÚ·Ù<ÿ›P–LîÀé²J|ÜŒ,Û‘OâñRrN™ÔÇ‹wƵá©Ï3ªÝãÍØ̺+Œ'¶çT™7#?-áã-yõ¹”UTòìŽñ—áÁ̺+ K¥ƒÁ€ƒÒrL¼¼& “¹ªºõÙÎ|bn ⣉í0[ª –_'q^'Þ¹—òmR b ¸»8ðÉÖ<ŽþÜAÖ”ÏáçÌs¿ ­vü‹]ù|¸9¯ÁßíùßKi SHED~ÍB"I<Áõ]Ûáç燡Ž_&X­VJKKIJKÇ78âf)"""""õe¬V«•´Éøú7(ÀŸÔ^ñq3Ò9ØW'Nž6s䤉3¦êÅ£ƒ®¡nøºÉ>UqÁÝ(ë3ÞÍÉîáU»cÊ5‘]ôËFŽz·uÇÁ``Çá3x¹:PR^I¹ù—–-'£îanø¸9^XÁß!³&á¾Î´ pÁÁPµ‹ê¡\Sµ1!>NthíÊi“…½ÇJm»k^H„Ÿ3‘~Θ+­8aª¶‘Cs?Û¹òÝžÿ½X²ˆˆÈ¯@qndîäéûàízÁñyE¥¼²l;Ö°~x„_‚ «¼;ºîéšxyy]xˆˆˆˆÈ¯\ÁÉlâ6Æòð#7oaMDDDìçfP”‘D^V•ÖÚ;s „Dày-^a—0CÖDDDDDjs~a­Y¦‚ŠˆˆHͼ#ð ŒàÒõŸ]>¾X¾“ÉĸûǶt*"""""MB…5¹$R÷ï§´´ù–¹ÔTX‘f·eë62³²(//gõ7k¸uø09’žÎú›((,$<,ŒÛF ÇÛÛ»Ö8ë6l¤k—.±66– ü­||ÈÍËcÍ·ß‘›—Ghp0·†¯¯/6ÅѹSGòòN²éûïqvvfÔÈ‘„……»~{“’iÕʇ;GÝŽ¿¿¿í^µå¶eÛvôëÓÇ.·ø-[quq¡OïëëÌGDDDD®-€ˆˆˆ\ù÷’“›ËÉüâ·lÅl6³yëVþ0%†ï7o¡¸¸˜Ï¾ø’‡ù#'rrjóþÂ…|¹r%OL{šmÛwPQQAJj*&MæÛuë8}ú4Ë¿^ÅøI“9pð ÿXøO^ëm^›ÿf3ë7Å1åñÇy~Ö‹ügåWTZ+YþÕ×<þÔÓX,€:sÛ›”Äœ¿¿b P|ú4³çþ#G^0¹r¨cMDDDšÝ”Gþ@~A>¥¥eÌùëL***˜ÿîûÜtÃ@f>;ŠŠN1åñÇùç¢xöéiµÆúnÝzÞœ÷ ]:wÆjµòÔ3ÏҳǵÌzþ9)++cê3ÓyõÍù¼ÿÖ|rssYðÎÛ8;;sèð&þq åå¼ûæë úõéÃÌÙ/’•MPëÖuævÿoïeÉgŸóÃ?Ñ·Ooâ¾`Ø-Cx|ê´ æ#""""Wu¬‰ˆˆÈ%·/%•œœ7‡ªG||¼sÇÄÅÇ×yí-ƒ£éÒ¹3Óq4#ƒÆýGǪߺººrÿoï%uÿŠ‹‹tÓM8;;Ð&2€¡ƒc0쎕•™.˜[ûvíhÛ¦ ¿ÿÞ–ÓúM›8`¹¹yõÊGDDDD® êX‘K.+;ƒÁ@d„ýþ¨mÚDb2•“_P€_-k’Úþ~<3€—^™g+‚˜ÊMäUÅ­óÕt¬¾¹ 2˜Ïþ³œ¿<ögŠNâ§„=ümö¬zåãååUã}EDDDä×ç¢ k«ïÔyˆˆˆÈe"==½ÙïáììŒÕjÅb±Ø:»Ìæª?ÍæZ¯5œS°2«þ>yâø{¸WÛ:0 Yr»eÈ`.úˆ8z4??_úõéMü–-Mžˆˆˆˆ\¾4TDDD.¹ð°0’’÷ÙOÚ·w77êW€ŠŒˆÀÍÍž=zØ^üøSnnnÍ’[Hp0Ý¢¢Øô}<ë7nâÖáÃîrkú|DDDDäò¥Âšˆˆˆ\2gwÒìxM¢ºtæÝpòäI÷&±âëUŒ¼u„mí³ iA·¨(ÞùÇòòªâdŸ8ÁËó^#3+«Q9Ö7·¡· fýÆM$§¤pÛˆáÍ–ˆˆˆˆ\¾TX‘K"8(ˆ»w3ñS()-eÚ“OP|ú4÷{€1÷ÝÏcSŸ¢kTþ0a|ƒâÎxæi***¸ÿÁñÜ7îÆMxßV­x,æÑFçZŸÜ†DGc2™¸¶{wÂBC›5¹<«Õj%í@2¾þÁ àçç× i‰ˆˆHKiÌkõYßl6³c×n, 7 èÑh¤¢¢‚„ÄDŠŠŠ §s§ŽI‹ÅBbRùù„†Ûv ½“[sä#""""-¯àd6qcyø‘ǵ+¨ˆˆˆ\ŽŽŽÜ0 ¿Ý1'''ú\ýEÇ6ôìÑã¢ãœëbrkŽ|DDDDäò£ÂšˆˆÈ%”™™IJJ ™™™TVVÖ:Î`0A—.]nX7¹ˆˆˆˆˆ\ÍRX›1ciiiL™2…èèèjçÍf3=ôÌ›7ðððæHã‚¶mÛÆ‚ HHHÀ`0бcG¦L™Â AƒZ$ŸÆøûßÿNYYýë_Ãd21wî\öîÝË‚ ¨çNl""Ò0YYYìÙ³‡n¸ooï Ž/**â¹þÊæí;¨´XøiǶK¥ˆˆˆˆˆÔW³l^°víZ–-[Æ{ï½WãùuëÖñé§Ÿ²lÙ2 ›#… zå•W8p û÷ïçÎ;ïdøðᤥ¥Ío¼Ñ"95ÆÆ‰½¨ï¼óÿ÷ÿGTTÎÎμñƼôÒKM”¡ˆˆœ•ššJß¾}ñððÀl6_ðµàŸÿ"nó,f3þZÓTDDDDä²ÓlSACCCYµj%%%¸»»Ûûì³Ï %33³¹n_§;w2}útfÍšÅÌ™3íÎMž<™iÓ¦1fÌÚ´iÓ"ù]j ÿþÌ;€]»vqúôéÎJDäÊ“‘‘Á€¨¨¨¸àØWßœÏg_| €‡‡;¼÷ns§'""""" Ô,kC‡ÅÉɉU«VÙ7›Í¬X±‚{ï½×îxRRÏ?ÿ<“'OfÞ¼yœLnn.+V¬`Íš5ddd••ÅŠ+êÕU!""õg±Xj}™Ífþ>ïU–¯ü €V­ZñΛ¯àïßÂY‹ˆˆˆˆHMšuWÐûî»1cÆP\\Œ——P5 tÔ¨Q¶é¡&“‰Ç{ŒÑ£G³téRŒF#yyyôïߟçž{ŽiÓ¦ñòË/³nÝ:n½õV¾ü²ê·øãÆcРADGGóå—_âääÄ™3g6l“'OfçÎÕrJOOÇd2Ñ¡C‡&}ÖO?ý”M›6ѯ_?RRRX½z5k×®eĈ@Õ†‹/楗^ºà3òÉ'5Æm «ÕÊøñãëüŒNœ8ÁÁƒm]zÿó?ÿÃéÓ§Y±bÅÅ0""bçì/Šny;·¼•©?†ÕjeÞo²æÛïhåãÃÛ¯¿FPëÖ-–«ˆˆˆˆˆÔ­Ù:Ö† †‡‡_}Uõ›÷³Ó@ï»ï>Û˜íÛ·sôèQfΜië  &&†/¿ü’=zЭ[7>ÿüsÛ5K—.åŽ;îàØ±c¤¤¤ðüóÏãä䀇‡Ó¦Mc×®]äççWËéÌ™3ø7ñoÿï¿ÿ~[ñËÁ¡êcݲe‹­Ëlîܹ9r¤^Ï\[ÜÆøé§Ÿü‰ˆHó9ÛvöLÿ]³–×ç¿Íßç½j+ªy{{óö¯¬Îa‘ËX³Ö¹ûî»mÓAccc1™LvÓ@>ŒÁ` K—.v×víÚ•ÒÒR²³³ùýïÏŠ+0›Ídgg³qãF&NœÈÁƒxðÁéÞ½»í5mÚ4€×ZkýóoþsrrjÍ;!!Ý»weØ€ˆ IDAT7èY###mïÔ©Ï>û,sæÌÁßߟaÆñÚk¯Ùv@­Ï3×·1ó‰ˆHó9»–Úë¯üÝV\[õÍ7Į߀—§'o½þ*­1™LvK!\m^yíuvÿøc­çç¿ó[·o¯w¼‚‚fÿí%NÔñ3À嬩òmþ[lß¹«‰²¹º5ëTP¨š:jÔ( ùüóÏùÍo~ƒ›››í¼««+V«•ŠŠ [G`[4¿¢¢‚ßýîw̘1ƒ 6°oß>‚ƒƒ¹õÖ[mS_~ùe¼½½«Ý;""¢Ú±ÈÈHÂÃÃÙ¸q#ãÆ«1ç‘#GÒ¯_¿787·síR;kîܹ<ñĬ^½š72gÎÞzë-êõ̵Åm¨³q ùŒDD¤ùX,Ú¶iÃ민̓Oÿ/%%%xzxðækó ´ý›PYY‰Õjm±|[R\üfºtîDï^½øbù L&ãî À–mÛ jÍÀþý믤´” ›âøýر=Åöü\Îßš*ÿø-[‰Œˆ ß>M˜ˆˆˆÈÕ©Y;Ö† B«V­øüóÏ«M…ªî.€­[·Úߺu+^^^„……Ñ®];È_|ÁÒ¥K?~<DEEàééÉàÁƒm/£ÑÈúõëñôô¬–Á`à`ñâŶn®s­Y³†ììlFŽi;v~·ÀÞ½{ë|æ]»v1{ölüüü˜0a‹-">>ž#GŽ_¯gn*ùŒDD¤y™ÍfJKK  åÕ¿¿DDx8m"#ycÞÿHYY™­³Í`0´tº-æ«/>ãŽÛo·½OÝ¿Ÿ})©-˜Ñ/ÎÏårÊMDDDD.fïX3ÜsÏ=̘1ƒòòrn?çd€^½zÑ¿¦NÊÿû_BCC‰çÝwß塇²ulýþ÷¿gÆŒóñÇUE£ò—¿ü…Õ«WÆ‘#Gx衇0`@­9͘1ƒ¥K—2lØ0Þ{ï=FŒÅbaýúõLœ8‘¶mÛ2~üxùú믙0aŽŽŽ|ðÁìÙ³‡aÆÕÿÌ™3¼ð „††ò‡?üÀ¶³hÛ¶méÚµk½ž¹¾òóókÜh S§NtíÚµQŸÑÕ<õHD¤¹ *++1¶iža¡!|úá?(**¢´´Ô6ÞÅÅ…ÊÊÊ‹î^¾lú>_ßVôèÞ€âÓ§‰û>žvmÛÒ5ªji„ÂÂB6oÝÆ€~}ñ÷÷'aO"aa¡´ dËÖmdfeQ^^ÎêoÖpëð_þNÝ€u7b±Xèݳ'7 ¬ýß7¨ÚØgýÆMìILÄÝÝ¡CÓ¡}{ÛùµßÅÒ­káçü¢+qoeeeôíÓ»Z.žžžÕrsttäHz:ë7n¢ °ð°0n1Ü®{|æ8:wêˆÉdâÛØu”WTp}Ïë¸qàÀ‹Ê 7/5ß~Gn^¡ÁÁÜ:|¾¾¾µÆ¬-ׯ|o""""W“Kò“úرcÉÍÍåŽ;îÀÕÕµÚù… RPP@DD­[·ææ›ofÀ€Ì;×.FII 7ß|3×\síøâÅ‹1™L´mÛ–ˆˆ®¹æZ·nÍ[o½Uk>ÄÆÆÉí·ßŽ««+îîîÜvÛm³víZÛº7Ó§OgõêÕDDDЦMÞyçþô§?Õù¼ÑÑÑLœ8‘I“&H`` 111¼øâ‹tíÚµÞÏ\_ûöíc̘1Õ^g ýŒÚ¶mËÚµkéÑ£ÅÅÅ ÎGDDjFNNøùùáïï——•••TVVâåå…¿¿?þþþøùùáàà@NN¡¡¡-úEû~ófÞýÇÛû»v3ï7Y¸hÑ9c¶ðÚ›ómË$üuîߨ¶c ‰{ÉÉÍåd~ñ[¶Ú~´}ÇNfÎ~‘’’:ÌŒ¿Îbå׫êÌåí÷ÞçÝ, ¿ € ›âx$æÏlÙºÍvþ·ßaoR²Ý5k¾ûŽÏ—/¯1—~ü©Zn›·nåSbø~óŠ‹‹ùì‹/yè‘?Ú­ö…ÿdɲÏxvæ_9U\Ì‘ôtžûëlþ³ò«‹Ê?%5• “&óíºuœ>}šå_¯bü¤É¨¡S¨3ׯ|o""""W“féXÛµË~AÜèèèjëÃÜtÓMvÇöïßO\\¹¹¹têÔ‰>}ì×ý ¬qg´víÚ‘˜˜H||<ÙÙÙ´oß¾^»h¶oßž¸¸8RSSILLÄb±Ð¹sgzöìi7î‘GaèСüðÃøúú]íÇcÇŽU‹¿páB¦NJrr2ÎÎÎôîÝÛî?FÝ»w¿à3×÷|kÖ¬¹à˜ }Fï¿ÿ¾Ýø^xþýûc6›íÖыӥK¶mÛFEEE½ºÐ, ÙÙÙÜtÓM— »æÕ¿o_6lÜDñéÓxyz²'1‘V>>$ïÛ‡ÙlÆÑÑ‘ˆŠŠªqMÐ)üü‚|JK˘ó×™¶ãi‡³hÁû¶n¬§žy–MññÜuÇojÍ%¿°€¼——&S9O?;ƒ·ßÿýúöÁÑñÂ?Õ”KÉË%¶÷Ì÷}nºa 3ŸŽƒƒEE§˜òøãüsÑG<ûô4[¬MßÇóáÿÀßÏ€§g<Ǧïã¹û®;•¿Ñhä¥ÿ{•ž=®eÖóÏáèèHYYSŸ™Î«oÎçý·æÛźP®û½‰ˆˆˆ\éš}*h}¹¸¸0|øðF]ëèèÈàÁƒumçÎéܹsc:tè@‡;**ʶÆYM.晪!Ÿ‘““wÜqGó&$"r eÀ€$''“]禃ÐÐPn¼ñF‚‚‚.a–Í£ßÏ¿<ú)!›o¼‘Ÿö$2öÞ{Xð¯INI¡G÷îü˜°‡{ÇŒnPÜ¡ƒÛMqìо=‰Iu¯…zßÝwãå個‹3ãÿgSŸ™NÚ¡ÃtîÔ±OVݾ”Trrrxiö,[ÕÇÇ›1wÜÁ??²/¬ ‰Ž¶Õ®ißžÝ?þÔèü8š‘Áô§Ÿ² ]]]¹ÿ·÷2söœjèÊ5fòd é¿7‘+ÅeSX¹„††^S;ÊÇÇ›.]:³ûÇŸèÑýZŽfd=èf¾]·žŸöàíåEaa!û_¸ëü\­œKÛ6mìÞ·o߀ì'𤰖•Á` 2"Üîx›6‘˜Låäà÷s1°©ó?[¬}é•yv]‘¦rù… ÊÕRii–ïMDDDäJ¡Âšˆˆˆ\ýûöå»õëéÝ«'„s}¯žü”°OOOZÒ¾]»Å44bc‡ó7è1WT½w¯cùƒ³cêÃÙÙ«ÕŠÅb±›Zz6ƹ÷oêüËLeLžø0îîÕ®=¿WŸ\›ã{¹Rüú·‘_…ýûqìØq¾[·×Ví2yýuבœ²»v1 k¤6…Ĥ$»÷ ‰‰DœÓµe±XìÆN?RïøgwMJÞgwÜÝÜ hx—Ú¹êÊ?2"777zöèa{988ðãO ÕÖN­O®—Ë÷&"""r9RaMDDD.‰k:tÀßÏø-[¸®G®ëq-fvìÜÅ€þ}/ãü‚Wc|ñŸå$í«*$¥=Êÿú øçµìZùø°eûvÛ½V}³†´C‡/˜ËÙ÷¯é@T—μ»àNž< @âÞ$V|½Š‘·ŽÀ`04[þm"#èÅ;ÿX@^^Õ½³Oœàåy¯‘™•U-V}rmè÷¶ê¿ß0ûo/a2™.ê9EDDD~ TX‘KÂ`0Яo¬V+×ýÜùäááA§Žqrrâúóvæ>_pP;wïfâ§PRZÚè<î½{ =9•;ïù-&MÆÉÙ‰Çb;?îþ±lÛ¾ƒûÆ=ÀØƳ⫯sÞ.ççrþûiO>AñéÓÜ7îÆÜw?M}Š®Q]øÃ„ñλ¾ùÏxæi***¸ÿÁñÜ7îÆMxßV­x,æÑã](׆~oûRSÙ°)ŽŠLŸùµ2V«ÕJÚd|ýƒÀDDDä×/==½Áלݥ²)âææŽ‹‹3PµÞ׎]»±X,Ü0 ?F£±Ñ±³²²IÙ¿//Ozöèa·¾@fVûÄË˓뮽¶Úùós±Z­Õr«¨¨ !1‘¢¢"ÂÛdc„úæo±XHLJ"?¿€Ð`º\`ôæÌUDDDäJRp2€¸±<üÈã*¬‰ˆˆˆ½Ë¥°&""""r¹9¿°¦© """"""""" ÂšˆˆˆˆˆˆˆˆH#¨°&""""""""Ò*¬‰ˆˆˆˆˆˆˆˆ4‚ k""""""""" ÂšˆˆˆˆˆˆˆˆH#8¶t"""W“ÌÌLRSS9~ü8•••µŽspp 44”¨¨(BBB.a†"""""R_ÍZXÛ¶m , !!ƒÁ@ÇŽ™2e ƒ jÎÛ6©wÞy‡C‡ñꫯV;wìØ1žzê)žzê)úôéÓÙ‰ˆÈ¯IVV Üxã 2ä‚ãO:ÅæÍ›1 _‚ EDDDD¤!šm*è+¯¼ÂÀÙ¿?wÞy'Ç'--èèhÞxãæºm“Ûºu+«W¯®ñ\aa!Ë–-ãØ±c—8+ù5JMM¥oß¾xxx`6›/øòðð oß¾¤¦¦¶tê"""""RƒféXÛ¹s'Ó§OgÖ¬YÌœ9ÓîÜäÉ“™6mcÆŒ¡M›6Íq{‘ËRFF  ¢¢¢Þ×xxx™™ÙŒY‰ˆˆˆˆHc5KÇÚ¬Y³hß¾=3f̨vnöìÙ¸»»³jÕ*>úè#8`7&>>žµk×ÚÞ/Y²„C‡±}ûvbbbÈÍÍÅb±°téRž|òI¦NÊÊ•+«Ý+))‰çŸžÉ“'3oÞÊôéÓIJJº¨¸""re°Z­õêT;÷U^^^çZl"""""Òrš¼°væÌbcc™0aF£±Úù   ŠŠŠˆ‰‰ &&†Í›7ÛY´h¯¿þºíý´iÓ˜?>ƒfõêÕ”••q×]w1iÒ$Ž?Njj*÷ÜsÓ§O·]³råJzöìÉòåËÉÏÏçÕW_¥{÷§××d2]Ô³çää0iÒ$ÆÇ“O>IVVK—.¥W¯^ÄÆÆ^Tl¹2X,–½TT¹|5ùTÐôôtL&:thÒ¸Ÿ~ú)›6m¢_¿~¤¤¤°zõjÖ®]ˈ#˜1c‹/楗^Âd2ñØc1zôh–.]ŠÑh$//þýûóÜsÏñÉ'ŸÔ·©ìÝ»—ÄÄD(--åÖ[oå‰'ž`Ïž=884Û²v""ò+`6›4þJ)¬ùùùµt rÈÏÏoéDDDä*Ó,kþþþM÷þû﷿Χ¶lÙbë2›;w.GŽ`ûöí=z”™3gں戉‰áË/¿¬5nSyâ‰'ÀÍÍ^x¤¤$›ô>""òëÓÐŽ5‹ÅÒÒ)‹ˆˆˆˆH-š¼°Öºuk jZdmؽ{wƒâFFFÚþÞ©S'ž}öYæÌ™ƒ¿¿?Æ ãµ×^£°°€Ã‡c0èÒ¥‹]Œ®]»RZZJvvvq›J·nÝìÞ÷èÑÖ—ˆˆ\ݺÆZC;ÜDDDDDäÒiòÂZdd$ááálܸ±Ö1#GŽdöìÙµž///¯vìü)”sçÎ%++‹·ß~›ððpæÌ™C¯^½8uê®®®X­Öj»®{îñ MÍ4µþ§ælœó×’;?ÿ³ï›eVùiLÇšÕjmé´EDDDD¤M^X3 <ðÀ,^¼˜ƒV;¿fͲ³³9r¤íØù…«½{÷Öy]»v1{ölüüü˜0a‹-">>ž#GŽO§Nغu«Ýu[·nÅËË‹°°°z?Odd$GŽ©qÍŽ;wЦM»ãñññvïãââly‰ˆÈÕ­!Ýjƒ¡¥Ó‘Z4ËJú3fÌ 88˜aÆñÍ7ß`±X(//gÍš5Lœ8‘¶mÛ2~üxùúë¯mŵ>ø€={öÔÿÌ™3¼ð |øá‡¶cgwmÛ¶-½zõ¢ÿþL:•ÌÌL ªØõî»ïòÐC5h|GGGî¹çöîÝ‹Õj¥¬¬Œ/¿ü’gžy†n¸Á6Õó¬ùóçÛòÙ·oÓ§Oç–[nQaMDä*g0¨¬¬´uC_èe4©¬¬ÔÆ7"""""—©f™›èááAll,&LàöÛoÇÑѫՊÅbáúë¯gÉ’%¸»»0}út}ôQ"""pvvÆ××—?ýéO¤¤¤Ô?::š‰'2iÒ$¦OŸ@QQ/¾ø"]»v`áÂ…Œ5ŠˆˆüýýÉÍÍeĈÌ;·AÏÒ±cGV¬XÁĉ¹öÚkqvv¦¢¢«Õʈ#øøã«]sï½÷2dÈ<==)(( mÛ¶¼÷Þ{ º¯ˆˆ\yÂÂÂÈÉÉ!$$??¿:»Ñ¬V+¥¥¥äääz ³l9……EÏŒF#Q]:ãÛª§Ï”’šJVv6›¾ÿž[›èßó Iܛă>ô®iÂXsÅ‘–¥m*EDD.¡ÐÐЫfjg}L;ÀÀþý¸¶{wÛñŽÚóÙ—ÿáHúQ***ªu´:Å™3gðöòÆÓ³z÷Úé3g(**ÂÅÙû©·f³+àäèHn^ƒV>>X­•À/»·žnZ\\Lqñi<==ñöþ¥;¯Âl«Õ.7‹Åb[KÏÁÁ¡ê^5Ä­¬¬¤°¨“É„··7?/“!""""¿*¬5!^|ñÅí:*""rµ;»‘Á`?=ÖßߟȈÊ+Ê1™LvÅ«5k¿%7/Ïö¾[×(ÝtPUìÚ°q#i‡ÛÎ{zz2ì–!„W-yñïeŸQRRBDx8G32 ÀÁÁ99¬ß¸‰Ó¸uø0bׯçHúQ[¬Ð†Þ2O>úø*Ìf™ø°­÷ýæÍìKIeÈàhºtêÄW«VW‹{}ÏžlØ´‰SÅŶ¸]:ubÈàè‹ÿ@EDDDä’Ñ6cMÈ××—çž{²#""Ò”‚ƒ«6(ˆß²…ÿ®YKrJ Å?œFÝ6’1wÞYm]²Ü¼<ÚµmKÇk:`0HJÞDZãÇØ÷=i‡ãììLûvmñõõåôéÓüwÍZJJJl1¬V+G32pvvÆÇÇ›àà`<~^·- ÀŸ Ö­Y¿q#GÒâææF‡öíñòô$3+‹›âð|öqýýýXóÝwœ*.&$8˜íÛc4IÙ¿Ÿ”ýûý9ŠˆˆˆÈ¥§Ž5iQýûö¥°¨ˆÌÌ,Ò%ýhUw˜·7×\s ={TíÊ}®Þ×÷¢ßÏ› ì?p€‚‚BZùøpààA wÝñüý©¬¬ä«U«ÉÊÎ&y_ }z_o‹Ó¥sg¢o¾É¶™DII ¤×u×àïÏ’Ï~ÀÑÑ‘{ÇŒÆÓÓ“ÒÒR>ù÷2ŽÃd2ÕëùnÐß.®?%ìÁÓÓ“ÑwÞÀîäÇ"77.:]ôg*""""—† k"""Ò¢\]]¹ë7¿!7/ôô£d?FNN.E§N±û‡8|ä0÷Œ£ã/?¶thßÞöw777 ªíì”Ëà`üýppp ªK²²³É>qÂîÞÝ»u­u‡Ö̬,"ÂÃmsnnn 4ˆ²²2*ëØ|¢.ž888púôiV|õ5m"#ˆ §w¯^Š'""""-G…5i1¥ee¤=Š‹³ íÚ¶!0 €>½¯§¼¼œý²eÛ6òó HÝ€n]Ù ÜÅÅ¥ÆxeeU]dîçmàáQõ¾ì¼.37W·:sªmŒÐ©ã5õ|ºš¹¹¹qËàh¾ß¼…¬ìl²²³´jåÃð¡CmA¹üi5i1e¥¥lظ‰¸øx»ãÎÎÎtïÖÕVÄ***ªW¼³SFKKK펗–VÉœÏÛYµ:»YÂÙbÝYÉ))lÛ±£ÖœÊËËëÌÑd2À}÷ÜͨÛFÒ³G|||(,,bæMu^+""""—ÖDDD¤ÅøøøàääDII )©©vçÌf3Ù'rlãê£u`YÙÙœ:õËŽ›û¨:ß:°Þ¹µ¬{4#öžšÉdbë¶íüøSBÕ.¦ƒí8@EE™™YuÆ=š‘Á’Ï>gæ8"#"8 ?¿¹m$…õÎODDDDZž¦‚ŠˆˆH‹qppàºk¯e×?°aSÉûRðõõÅb1s<3‹’’<==ê=ýÒÇLJȈŽfd°ü«¯hß®-ùùdfeáèèHר¨:¯7ü\(;|ä´ $'7—/—¯ 22’cÇS^^NëÀ@¼½½håãCn^kcc  ãðá#¶)¤µÅõõõÅh4rìøq¾[·OO2~ÞÑôl1ODDDD~Ô±&"""-ªOïëØ¿?NNNœÈÉ!%5•Ó())!¨ukî5Ê6-³>n2˜à  JJJØ›”LfV...Œ6o/¯:¯ à`Ú!LcÄðaøûùQtê‰{÷RPP€¿ŸC‡ `à€þ8;;“}‚]»  °V­ZÕ7;ûƒnºGGG¦â§={8yò$ ]ïç‘–g¬V«•´Éøú7(€ŸŸ_3¤%"""-%==½Á×x] `UŸŸ, Ù'NPRR‚Ñ舿Ÿo½§€Ö$'7—¢¢S¸8;\ïâ܉'8U|?ßVøûûcµZÉ>q‚3gÎàåéI`` ÝN¢&“‰ì'°X,UÛ8¡¶¸¥eeäååQ^^Ž··7~V©’ŸŸßÒ)ˆˆˆÈ®àd6qcyø‘Ç5TDDD.F£‘°ÐÐ&‹×:0°QS+ƒ‚‚ ²½7 „×þ‹GÚDF68®›«+áá ÎODDDD.š *""""""""ÒêX¹„233IMMåøñãTVVÖ:ÎÁÁÐÐP¢¢¢ ¹„ŠˆˆˆˆH}5kamÛ¶m,X°€„„ ;vdÊ”) 4¨9oÛ¤>üðCÖ®]k{o0ðòò¢_¿~Œ777·ÌNDD~M²²²HHHàÆodÈÏ‹ß×åÔ©SlÞ¼ƒÁ@pSEDDDD¤e4ÛTÐW^y…²ÿ~î¼óN†NZZÑÑѼñÆÍuÛ&·{÷nV®\‰££#ŽŽŽ888pàÀ}ôQzôèÁ‘#GZ:Eù•HMM¥oß¾xxx`6›/øòðð oß¾¤¦¦¶tê"""""RƒféXÛ¹s'Ó§OgÖ¬YÌœ9ÓîÜäÉ“™6mcÆŒ¡M›6Íqû&çããçŸ~jw,%%…aÆ1vìX¶mÛ†Á`h¡ìDDä×"##ƒPQQQïk<<<ÈÌÌlƬDDDDD¤±š¥cmÖ¬Y´oßž3fT;7{ölÜÝÝYµj}ô°o7ýrÉ’%:tˆíÛ·Cnn.‹…¥K—òä“O2uêTV®\Yí^III<ÿüóLž<™yóæqòäI»ó5Å­¯.]ºðæ›o²cÇ6nÜX¯û~ñÅ|ÿý÷¶q,\¸mÛ¶ÙŽåää°páB233Y¶liiiìÝ»—§Ÿ~šÇ¼Æç‘_«ÕZ¯Nµs_åååu®Å&"""""-§É kgΜ!66– &`4« ¢¨¨ˆ˜˜bbbؼy³Ý˜E‹ñúë¯ÛÞO›6ùóç3xð`V¯^MYYwÝu“&Mâøñ㤦¦rÏ=÷0}útÛ5+W®¤gÏž,_¾œüü|^}õUºwïNzzz­qM&SƒžõÎ;ïÄÅÅ…õë××ë¾ÿùÏøË_þb»víZ&MšdW€\¾|9“'OÆÅÅ…ÿýßÿåå—_æŽ;î ??Ÿ¤¤$FÍ[o½Õ ´uëÖ@ÕZaµIHH`÷îÝ Šiû{§NxöÙg™3gþþþ 6Œ×^{ÂÂB>ŒÁ` K—.v1ºvíJii)ÙÙÙ5ÆmŒììlëu_³ÙL¿~ýX·nyyyìÛ·ßþö·tëÖ 6””DNN£F²]qQù‰ˆÈ奡k¬5´ÃMDDDDD.&/¬EFF^mAÿs9’Ù³g×z¾¼¼¼Ú±³]jgÍ;—¬¬,Þ~ûmÂÃÙ3g½zõâÔ©S¸ººbµZ«íºv6î¹ÇÏÛ‰‰‰äççÛ:ÞêsßÛo¿ØØXâââ§]»v :”7²~ýz"""èÑ£G“ä'""—Ÿ†®±f±X°Z­-¶ˆˆˆˆˆÔ É«6ƒx€Å‹sðàÁjç׬YCvv6#GŽ´;ÿ·ñ{÷î­ó»víböìÙøùù1aÂ-ZD||>žN:°uëV»ë¶nÝŠ——aaa}<‹ÅÂÓO?M@@£G¨×}GÅþýûY¼x1ƒ à–[naÛ¶m¬Y³Æ®[MDD®L éV3 -®ˆˆˆˆˆÔ¢YÚ¡f̘App0Æ ã›o¾Áb±P^^Κ5k˜8q"mÛ¶eüøñòõ×_ÛŠk|ð{öì©3þ™3gxá…øðÃmÇÎî,Ú¶m[zõêEÿþý™:u*™™™ÄÇÇóî»ïòÐC5¸ Ìd2±bÅ V¬XÁòåËy÷Ýw¹á†ˆeáÂ…¸»»Ôë¾½zõ"$$„åË— @tt4ååå|óÍ7*¬‰ˆ\Á •••ÆzÕŒF#•••ê^¹L5ùæÄÆÆ2aÂn¿ýv±Z­X,®¿þz–,Yb+FMŸ>G}”ˆˆœñõõåOú)))µÆŽŽfâĉLš4‰éÓ§PTTÄ‹/¾H×®]X¸p!£F"""rss1b„mƒƒ†(,,d̘1¶÷^^^ôïߟõë×sóÍ7Û½Ð} ·Ývÿú׿lk>>>ôîÝ›={öpË-·48?ùu #''‡üüüêìF³Z­”––’““Chhè%ÌRDDDDDêËX­V+i’ðõnP€ íò•ššJbb"‹…Î;Ó³gÏjcÒÒÒøá‡ðõõ%::''§zÝ{ß¾}$''ãììLïÞ½«ýÇÃd2Gnn.:u¢OŸ>õ°‹ÐR÷‘Ë[ff&Û¶m#88¸^]h•••dgg3pà@»¢›[zzzƒ¯ñòòªó¼v•KA»‚ŠˆˆHs+8Yµ!fÜÆX~äñæ/¬‰ˆˆÈ/233INN&++«ÎM ¡¡¡tíÚõ’Õ@…5ùõRaMDDDšÛù…µf™ *"""5 ÕÔN‘+„VCiÖDDDDDDDDDA…5‘FPaMDDDDDDDD¤TXiÖDDDDDDDDDA…5‘FPaMDDDDDDDD¤TXiÖDDDDDDDDDA…5‘FPaMDDDDDDDD¤[:‘«Iff&©©©?~œÊÊÊZÇ988JTT!!!—0C©¯&/¬ÍŸ?Ÿ-[¶Ô9fìØ±Œ3¦Á±g̘AZZS¦L!::ºÚy³ÙÌC=DEEóæÍ#<<¼Á÷(..fÒ¤IÌœ9“®]»6øz‘Údee‘À7ÞÈ!C.8þÔ©SlÞ¼ƒÁ@ppð%ÈPDDDDD¢É§‚Fm¯5kÖ°mÛ6»c»íÚµkY¶lï½÷^ç×­[ǧŸ~ʲeË(,,lÔ=L&Ë–-#''§Q׋ˆˆÔ&55•¾}ûâááÙl¾àËÃþ}û’ššÚÒ©‹ˆˆˆˆH š¼c-&&†˜˜Ûûîݻӽ{w>ýôÓ&‰ʪU«())ÁÝÝÝîÜgŸ}Fhh(™™™Mr/‘¦”‘‘Á€¨¨¨¨÷5úwMDDDDä2Õ¢›$%%ñüóÏ3yòdæÍ›ÇÉ“'/xÍСCqrrbÕªUvÇÍf3+V¬àÞ{ïµ;¾uëVžþyþøÇ?2{ölöïßow~É’%:tˆíÛ·Cnnnµ{îß¿Ÿ… räÈ‘†?¤ˆˆÈϬVk½:ÕÎ}•——×¹›ˆˆˆˆˆ´œ+¬­\¹’ž={²|ùròóóyõÕWéÞ½;éééu^çìì̘1cX¶l™ÝñuëÖQVVƨQ£lÇ,XÀ 7Ü@\\gΜaÉ’%ôèуüÑ6fÚ´iÌŸ?ŸÁƒ³zõjL&“]Üäädn¾ùf¶lÙBddd<¹ˆˆ\Í,Kƒ^*ª‰ˆˆˆˆ\¾Z¤°f2™xì±Ç=z4 |þùç$&&âîîÎsÏ=wÁëï»ï>þûßÿR\\l;öÙgŸ1jÔ(»é¡o¾ù&“&MbÓ¦M|òÉ'ìÙóÿìÝyXUåþÿÿç$p@DD1 zç¡S8`ÎSžÔN怙j©ÇOz¨<™~=–ž4S»Ì&‡_”R¤bRæ@(˜di©€â N!ˆ[†ýûƒûãÐ ‚X¾×µ®«½Ö½îý¾ï•°yï{8Lƒ øê«¯,ê[¿~={öìáôéÓ=z”îݻӿÖ¬YSîµáDDDŠ”uÄZ^^^U‡,"""""¥¨’LÑþýûùí·ßxíµ×°µµÀÅÅ…àà`ÂÂÂîx`` lÞ¼ø¿i Ã‡·(·k×.–-[f~m41 deeY”9r$;v´8W”TkÔ¨‘’j""RaÊ:b-??¿ªC‘RTI¶èÔ©S š7onqÞÏÏœœÒÒÒn{¿O>ù¤y:èŽ;0Ó@¡p‡ÒU«V1|øpüýýquu-qè’¦xN›6æÍ›óóÏ?[Ö&Šˆˆ”H#ÖDDDDDþ<ª$±V½zuL&S±]Ñnܸ`ÕniÇ'22’+W®°qãF @5Ì×333iÓ¦ ï¾û.;wæ¿ÿý/gÏž¥mÛ¶Åê*i4ÚË/¿Ì®]»hß¾='N,Ón"""¥)ψ5“ÉTÕa‹ˆˆˆˆH ìªâM}||€Â;{öìi>ƒ““5ºcÝ»w§N:lܸ‘ððpÞÿ}‹ë{÷î%99™_ý•-Z˜ÏgffZc¯^½°±±aõêÕ´oßž%K–0{öl«î¹²ŒB+Z2ADDDDDî?U2b­M›6têÔ‰™3gš§fFGG³råJÆgÕzf¶¶¶ 6ŒnܸA¿~ý,®;;;˜w-((`éÒ¥;v¬ØÎŸ·ãïïÏ‹/¾È¼yó8uê”Õ÷‰ˆˆÜÊ`0PPP€­­­US@mmm)((Ð:Ÿ"""""÷©*û¤¾fÍ._¾Œ‡‡®®®<öØctîÜ™ X]Lj#ÈÈÈ`àÀT¯^ÝâZÇŽ2dƒ ¢E‹¸¹¹ñí·ß2tèP>øà‹M îdÞ¼y¸ººò /X}ˆˆÈ­5jDzz:6668;;S¯^½Rggglll¸páîîîUºˆˆˆˆˆ”À˜L&IÇP·ž[™*(VF£‘¨¨(222ðññ¡}ûö宫4111œ9s___Z·nMff&Û·oÇßßß<%UDDä^HII!66777«F¡––F—.]hذá=ˆ°PÑhï²prrºíõ»ù¼ b­K—.Uu"""ò'wùbᆛQ»wôü‹U›XyФ¤¤pôèQRSSo»)Á`ÀÝÝ??¿{šT%ÖäK‰5©l·&Öªdó‘•»»»¦vŠˆˆˆˆüIh5d‘rPbMDDDDDDDD¤”X)%ÖDDDDDDDDDÊA‰5‘rPbMDDDDDDDD¤”X)%ÖDDDDDDDDDÊA‰5‘rPbMDDDDDDDD¤”X)%ÖDDDDDDDDDÊÁ®ªy¤¤¤OJJ ¥–3 xxxмysÜÜÜîa„"""""b­JK¬={–Å‹óÓO?qåÊ<==2d£GÆÖÖ¶²Þ¶ÌÖ®]˶mÛJ½þä“O2|øðr׿cÇ>ÿüsV¯^]î:îÄh4²`Á~ýõWV¯^‹‹K±2õ<&MšÄàÁƒéÛ·oE6ÁÂøñãyúé§ ¬´÷© ©©©>|˜®]»R«V­;–ÿý÷ßyeî¿Ù»ÿ òóùù‡Ø{¥ˆˆˆˆˆX«R¦‚}úÜöú{íàÁƒ„‡‡cggWâacsw]tâÄ ¾øâ‹ жd+V¬à­·ÞÂ××{{ûb×+òy„‡‡“P‘á³téR.\h~Ɖ'*ô=DDî tèÐòòòîx¬þàC¢öî#?/zÎÎU¾ˆˆˆˆˆÜ¢RF¬Í;—† òã?R³fMóùaÆѯ_?¶nÝÊ Aƒ*ã­ËÅÑÑ‘õë×Wuåvüøq:uêÄ‚ J¼~¿?¸¸8²²²Ì¯/^¼x× M‘ûQrr2;w&77÷Že—,{‡Ï7…ààP“÷W­¬ìðDDDDD¤Œ*%±–˜˜H»ví,’8}ûö¥W¯^\ºt‰M›6Ñ A{ì1._¾LXX-[¶¤sçΤ§§³yófúõ뇻»;111lÛ¶ŒŒ ÜÝÝ9r$>>>dffòùçŸóüƒÍ›7EíÚµ5j-Z´¸ë6}öÙg´oßžœœÖ®]‹Ñh¤G <Ø¢ÜÎ;Ù¼y3 8°X=ùùùlܸ‘ýû÷cccÃã?^¬Ž[9r„ÐÐPÒÓÓñööfܸqÔ«W€ÈÈHŽ;Fzz:kÖ¬aäÈ‘8::ZÜoÍó¸ÙÙ³gùøã9{ö,^^^Œ3† ”Ÿ5åþùgBCCÉÎΦmÛ¶<ûì³ØÙÙ±yóf’’’¸~ý:kÖ¬aôèÑDGGãí퇇‡U}Ö?‘ªd2™ÈËË»c™%ËÞá˯6à\·.CôÃë/ž• ˆˆˆˆˆ”I¥ jÞ¼9„‡‡“ŸŸoqí›o¾aìØ±|ñÅ̘1Ã|>22’ &b>÷å—_2qâDzè!V¯^M×®]‰ŠŠ";;›O?ý”V­ZñÓO?…I¸ &ðÌ3Ï0}útRSS ¥M›6ìØ±ã®ÛôòË/³hÑ"È¥K—8räC† aùòåæ2o½õ={ödÏž=œ:uŠ'Ÿ|Òbm5“ÉÄàÁƒ™0açÎ#!!aÆ1gΜRß÷«¯¾Âßߟ/¿ü’K—.±dÉZ¶lÉ™3gØ·o§N"##ƒððp®]»V¬kžG‘~ø-Z°nÝ:®\¹ÂŠ+ðóóãàÁƒ%ÆgMùÐÐPÚµkÇ®]»8þ<Ó¦M#00üü|¢¢¢HNN&55•ððprss>|8V÷µÏGDä~ŸŸ_ê‘——Ç/1'ÕêԩÊeoãrÓ """""rÿ0&“ÉDÒñ£Ô­W¶ÇœKXó%>>ž¾}ûrúôi\]] $00Þ½{ãîîÀúõë3f .\ nݺ¼ð lÚ´‰¬¬,®\¹‚½½=#GŽ$99™½{÷Ò¢E }ôQs¢*77—¦M›2nÜ8þýïsâÄ ¼½½iÚ´)111¸¸¸““CïÞ½¹té‡.qzáK/½Ä{ï½ÇÈ‘#KlßÌ™3ùë_ÿЧ§'™™™9r„† ЧOrrrسgçΣiÓ¦<÷ÜsædÎ/¿üBÇŽqppàÂ… ÄÇÇãëëKdd$O<ñ!!!lذӧO{o£Ñˆ;v$44[[[.\¸@§NèÚµ+ëÖ­ 78qâD© Dkž&þüüüðöö&,,ŒjÕª‘M`` yyy8p777fÏžÍK/½dUùÌÌL<<¸Óó¹¬]»–þýûУO?úõéÍ̧a2™X¼tÛ¿ù€:µkóîÒ·qoèÆöíÛyæ™gîYœ7qa-''§Û^/éó‚HE»u¾ˆˆˆHE»|1 €¨Ý;zþÅʱ–˜˜È–-[xê©§ˆ‹‹#((ˆ&Mš0jÔ(®]»FŸ>}صk{öìáŸÿü'ׯ_gÿþýæk 0ÿ÷²eËÌïa41 ksAa¢¬hWÌ5j0wî\Ž9Â/¿üRj¼&“‰+W®”xÜïååÅÛo¿Mrr2[·neÅŠôë×õë×Ó³gO7nÌ_þòzöìÉîÝ»©[·.´jÕŠÌÌLÚ´iƒS¦LaÒ¤IøûûÓ¯_¿bïãÆ_ÛÙÝ}So·S¥ƒƒׯ_/v¾hdZ‘ ðÒK/ÁîÝ»™?>Ë—/çСCÔªUË¢lõêÕ1™LäææšG„ÁÿµÉšQ eyEɱE‹‹Š'®¬)ïààPl]·²(Kh'Qù#(ú™èùðüýæ"¦ÿÏËæ‘ÃŽ,ûïbÔ¯oþ9WPP€Édª²xEDDDD¤tž‰pqqaÇŽlÞ¼¹Äë&“Éœ„éß¿?‰‰‰lذÇ€=zËöíÛÍ£ÕöîÝKrr2[¶laÆŒôèÑggg233‹Õmñ:** À¼{heñöö&%%…¤¤$‹óûöí3ÿw\\óæÍÃÙÙ™±cÇòñÇÍéÓ§‹Å}sÌ111çcbbprr¢Q£FwŒ«,ÏÃ××GGGºuëf>lmmÙ¹sg±ÝF­)ïííMVVñññ÷öìÙ“·ÞzëŽñWDˆˆÜoòòòÈÉÉ¡q#w–üg!óp“&,]ü ê×çúõëäåå‘——‡Á`¨êpEDDDD¤žX«[·.#FŒ`Þ¼y¬]»Ö¼ÆUVV+W®$<<œçŸ€6mÚаaC¾üòKàÆ|ýõ׿ÄZÑ‚ÇE‹)°téRŽ;VlDØ;ï¼ÃÞ½{8vìsæÌ¡G·M¬Ý¸qƒððð¢5àîdðàÁ4hЀñãÇsñâEL&ëÖ­cûöíæ2ÙÙÙÌ;—>úÈ|®(VOOÏbu¶iÓ†N:1sæLRRR€ÂÄáÊ•+7nœU#´Êò<|}}éÒ¥ 3fÌàܹsœ>}šqãÆqòäÉbu[S>00Gy„)S¦˜¡ëÖ­cçÎtìØÑ\WIÓz+ªDD‚lmmÍɵFî YÿѬýà}\ën¼S”T³µµ¥  @?ëDDDDDîS•²ÆÚ{ï½G5 bìØ±Ô¬Y“k×®aooÏìÙ³™:u*PøFß¾}ùðÃÍ#Öj×®M»ví8|ø0=zô cÇŽ 2„AƒѬY3222èСC‡åƒ> iÓ¦æ$Üßÿþwºw£#—/_ÆÓÓ“U«VÝ6Þ«W¯2tèЯµnÝšŸþùŽm®Q£~ø!#GŽÄÕÕGGGlllxõÕWÍ»a0~üx&L˜Àœ9søý÷ßyã7ðóó+±Þ5kÖп<<<¨W¯<ñÄ,X°àŽ1±öylذ~ýúáé鉛›©©©tìØÑ¼Óé­îTÞÎÎŽO>ù„!C†àââBݺu¹pá!!!ædª§§'‹-¢U«VæDcE÷ˆÈý Q£F¤§§Ó°aCœÍ£ÑŠÖQ»ygM“Éd^KÒšÍ^DDDDDäÞ3&“ÉDÒñ£Ô­gÝbøEŠF“•$##ƒýû÷“••EãÆiÙ²e‰‹ô[+&&†3gÎàëëKëÖ­ÉÌÌdûöíøûûcccƒ··7 AƒìÛ·ÚµkÓ­[7ªW¯^î÷,«Ë—/³{÷n èÖ­õêÕ+VæØ±c=z{{{ÚµkwÇ?˜ŒF#QQQdddàããCûöíË›µÏ#//èèhÒÒÒðòò²YVkÊgee±gÏŒF#þþþxyy™¯åææ²}ûvòòò8p —.]ÂÉɉ5jTxˆˆT¥””bccqss³jZ~~>iiiüío£Aƒ÷ ÂBE#ÄËâæ¤`In÷yA¤¢Üºƒ¹ˆˆˆHE»|1 €¨Ý;zþÅÊM¬ÝK'Nœ0'Ö”t‘ûUJJ G%--í¶› ÜÝÝñóó³z芢ĚüQ)±&"""•íÖÄZ¥L‘’¹»»kj§ˆˆˆˆÈŸÄŸf5äzõêñÆoh—H¹'þ4#ÖêÖ­Ë+¯¼RÕaˆˆˆˆˆˆˆˆÈâO3bMDDDDDDDDä^RbMDDDDDDDD¤”X)%ÖDDDDDDDDDÊA‰5‘rPbMDDDDDDDD¤”X)%ÖDDDDDDDDDÊA‰5‘rPbMDDDDDDDD¤ìª:‘IJJ œ;wŽ‚‚‚RËÙØØàî¯/ 6¼‡Šˆˆˆˆˆµ*%±BRR“'O&  Øõ¼¼<ÆGnn.‹/¦qãÆ•ÆÅÆÆ²zõj:„Á`ÀÛۛɓ'óøãWI<åñùçŸóÅ_Xœ3 ¸ººÒ±cGFމ­­­ùÚøñãyúé§ ´ªþ©S§Ò»wo P¡q‹ˆ<ˆRSS9tè>ú(Ý»w¿cùÌÌLöîÝ‹Á`ÀÍÍíD("""""eQ)SA###ùì³ÏXµjU‰×¿ûî;Ö¯_ÏgŸ}Æ•+W*#„;zóÍ7éÒ¥ ‰‰‰ 4ˆ^½z‘””D@@K—.­’˜ÊãðáÃlܸ;;;óa0ˆeÔ¨Qôïß“Éd.Ɖ'¬®Ë–-ÄÇÇß¶ÌÒ¥KY¸pa¹Û "ò HHH C‡888——wÇÃÁÁ:PÕ¡‹ˆˆˆˆH *m*¨»»;[·nåÚµkÔ¬YÓâÚ矎»»;)))•õö·uàÀæÌ™Ã믿Îk¯½fqmâĉ̚5‹¡C‡òðÃWI|eU­Z5Ö¯__ìü¢E‹˜={6{öì¡[·n\¼x›ŠÍ§ÆÅÅ‘••U¡uŠˆü%''Ó¹sgrss­¾ÇÁÁ¡Ê~_ŠˆˆˆˆÈíUÚæ={ö¤ZµjlݺÕâ|^^áááüýï·8äÈ^}õU&NœÈâÅ‹¹xñ"P8bjûöíÅêç›o¾àìٳ̟?ŸI“&ñæ›orþüùÛÆöúë¯ãååEHHH±kóæÍ£fÍšæ¸?ùäŽ?nQ&:Ÿ²Õ IDAT:šÈÈHóëO?ý”“'O²ÿ~‚ƒƒÉÈÈ ??ŸÐÐP¦OŸÎÌ™3ùê«¯Š½Wim¾]½eѧONž·gÏΞ=k~½oß>¦OŸÎôéÓ‰‹‹#>>¾ØÔR(LžÍœ9“_|‘Í›7›ÏoÞ¼™¤¤$Μ9Ú5k¸qãF™by˜L&«FªÝ|ܸqã¶k±‰ˆˆˆˆHÕ©´Äš½½=C‡å³Ï>³8ÿÝwßqýúuú÷ïo>÷ÕW_áïïÏ—_~É¥K—X²d -[¶äÌ™3ìÝ»—gžy†¼¼|8|øá‡üío#66–S§NѳgO¦OŸ^lß¶mÛxòÉ'ÉÌÌäðáà <˜•+WErr2©©©„‡‡—i†ˆÈƒ(??¿L‡’j"""""÷¯JÝtøðá :”«W¯âääNíß¿¿yz¨ÑhdÚ´i 2„ÐÐPlmm¹pá:uâ•W^aÖ¬Y,Z´ˆï¾ûŽÞ½{…ë„<óÌ3<þøãFµjÕÈÎÎ&00‰'ràÀb19s£ÑÈ#ÍòåË™2e ]»v-vÏÕ«W™5kÓ§OgÉ’%@áf]»vÅÏÏÏ¢ìáÇ9rä 4 W¯^„……ñ /°xñbÒÒÒÈÊÊ"<<¼ü("ò€¸ù‹"k(±&""""rÿª´k888˜§M>|¸¹Ìþýûùí·ßxíµ×Ì#È\\\&,,ŒV­ZÑ¢E 6nÜh¾'44”röìYâããyõÕW©V­P¸ͬY³ˆ‹‹ãÒ¥KÅbÊÎΠ^½zÚÖ‘#Gš“_Ek˜íÛ·Ï<ÊlÁ‚œ>}Úª6—Voirss;v¬ù "$$;;;&L˜Pâ=_ý5W®\á•W^1Ÿëܹ3={ö,Vöé§Ÿ6'ÕZ·nmîG)›²ŽXËÏϯêEDDDD¤•šX³³³ãÉ'Ÿ4OݱcF£Ñbè©S§0 ÓüüüÈÉÉ!--üㄇ‡“——GZZ»wïfüøñæÝ-GMË–-ÍǬY³J\kÍÕÕ€ôôôRã>tè?þøc™ÚÚ¤Ióûøøð¯ý‹ùóçS¯^=ùïÿkÞÕš6—Toizè!®_¿nq¤¤¤ððÃ3hРG;œ`×®]%&„š4iBãÆÙ½{w©1÷éÓ‡yóæ•z½¤úoÝisÁ‚¤¦¦òî»ïÒ¸qcæÏŸO›6mÈÌÌ´ªÍ¥Õk­† 2uêTΜ9éS§Š]·µµ-qͶ’ÖH«è]DEDdå±f2™ª:l)A¥gLºwïN:uظqc±i P8º &&Æâ|LL NNN4jÔˆ¿üå/téÒ…M›6ʘ1c°±±Á××GGGºuëf>lmmÙ¹s'ŽŽŽÅâ1 <ûì³lذÁ<âífÛ·o'--ͼ£&_ç×_½m›ãââ˜7oÎÎÎŒ;–?þ˜èèhNŸ>Mtt´Um®EÓ]KJúøøpùòåb;žÆÅÅUÈ{‹ˆHéÊ2ZÍ`0Tu¸"""""RŠJO¬ÙÚÚ2lØ0BBB¸qãýúõ³¸Þ¦M:uêÄÌ™3III ::š•+W2nÜ8óh©üㄆ†˸qãðõõ¥K—.̘1ƒsçÎpúôiÆgÞ³$!!!¸¹¹È×_M~~>7nÜ`ûöíŒ?OOOÆŒ@ýúõÙ²e‹9¹öþûïsøðáÛ¶9;;›¹sçòÑG™Ïí,êééiu›ïVÑÈÀ’¦½öíÛOOO‚ƒƒ¹zõ*&“‰•+WòóÏ?—ë8MU¹3ƒÁ@AA¶¶¶V%Õlmm)((ÐÈa‘ûÔ=ù¤>bÄ2228p Õ«W/v}Íš5\¾|\]]yì±Çèܹ3 ,°¨ãÚµk<öØc4mÚÔ|~Æ F<==ñðð iÓ¦¸ºº²|ùòRãqpp`ÇŽ4iÒ„~ýúQ½zujÖ¬Iß¾}qss#22Ò¼kéœ9sˆˆˆÀÃÇ~˜+V0eʔ۶7 €ñãÇ3aÂêׯOýúõ æ7Þ0ï¸iM›ï–ƒ¡Ä¾°··ç£>âÀÔ«WgggV¯^ͳÏ>k1UמžžDFFÒªU+®^½ZQወüé4jÔˆôôtlllpvv¦^½z¥ÎÎÎØØØpáÂÜÝÝ«:t)0™L&’Ž n=·2Uàìì\!F¢¢¢ÈÈÈÀÇLJöíÛ[}o^^ÑÑѤ¥¥áååuÇ]4o–À/¿üB~~>Íš5Ãßß¿X™¤¤$“'O¦OŸ>·ýæÿVááá$$$”+ŽÒ,]º”… š_‡……qâĉ }’”¥_n±¼*ª‘IBB:tÀÁÁ¼¼¼;tèСÂ_‰ˆˆˆˆHŨðkÁÁÁ›_·lÙ’–-[²~ýú»®{îܹ4lØü‘š5kšÏ6Œ~ýú±uëV t×ïS^qqqdee™__¼x±ÜIIJ(K¿ÜcyUT=""’ääd:wîLnn®Õ÷888’’R‰Q‰ˆˆˆˆHyUékGŽ!44”ôôt¼½½7nõêÕ+µ|bb"íÚµ³HôíÛ—^½zqéÒ%‹ógÏžåã?æìÙ³xyy1fÌ4hPjýÖ”ÿùçŸ %;;›¶mÛòì³ÏbggÇæÍ›IJJâúõë¬Y³†Ñ£G··7V·ù³Ï>£}ûöäää°víZŒF#=zô`ðàÁwÝ/%ÅhooOLL Û¶m###wwwFމ¹žO?ý”N:‘‘‘ÁÚµkiÛ¶m‰õˆˆÈí™L&òòòÊtO~~~™Fd‹ˆˆˆˆÈ½Se»‚~õÕWøûûóå—_réÒ%–,YBË–-9sæL©÷4oÞœˆˆÂÃÃÉÏÏ·¸öÍ7ß0vìXóë~ø-Z°nÝ:®\¹ÂŠ+ðóóãàÁƒ%ÖmMùÐÐPÚµkÇ®]»8þ<Ó¦M#00üü|¢¢¢HNN&55•ððprss>|8ejóË/¿Ì¢E‹8p —.]âÈ‘# 2„åË—ßu¿”ãêÕ«éÚµ+QQQdggóé§ŸÒªU+~úé's³fÍâwÞ¡[·nDDDðí·ß«GDD¬“ŸŸ_¦CI5‘ûW•ŒX3L›6!C†Š­­-.\ S§N¼òÊ+¬[·®Äû-ZDß¾}:t(®®®HïÞ½qww7—3™LŒ3†€€Â¨V­ÙÙÙ2qâD8`Q¯5å333™8q"“'OæÝwß G¯µmÛ–­[·²xñbÒÒÒÈÊÊ"<<ü®Ú¼iÓ&Ž9bÞ®OŸ>lÚ´‰©S§ÞU¿”ã²e˘0a«W¯ 77—¦M›òÕW_ѦMó½ëׯgÏž=tìØ€Q£F•ÚV)]YG¬)±&""""rÿª’kû÷ïç·ß~ãµ×^3ïXéââBpp0aaa¥Þ×¼ysÙ²e O=õqqqѤIFŵk׀„W||<¯¾ú*ÕªU ר™5kqqqŦŒZS>22’ÌÌLBBBÌ÷ùûû³fÍ‹äUE´yĈæ¤ZÑûdggßu¿”d×®],[¶ÌüÚh4b0Š­Ÿ6räHsRMDDʯ¬#Ön‰,"""""÷*±vêÔ) Í›7·8ïççGNNiii¸¹¹•xoµjÕ0` àäÉ“,_¾œ¥K—R»vmV¬XaÞ‰sôèÑæ$@NNçÏŸ·¨ÓšòIIIÔ®]Û"áTám¾yM6kYÓ/%±µµeÕªUÄÆÆ’˜˜Hbbb‰£)š4iRæ˜DD¤8Xùó¨’ÄZõêÕ1™LäææšGˆܸq Ä5»Ž?ÎÔ©SY¶lÍš53Ÿ÷òòâí·ß&99™­[·²bÅ srlÑ¢EÔªU«X]·&®¬)ïààpW£ÊÒæ²ì$Z–~¹Uff&mÚ´ÁÎÎŽ)S¦0iÒ$üýýéׯ_±²÷bwS‘AY—`2™*)¹U’-)Úq2&&Æâ|LL NNN4jÔ¨Ø=...ìØ±ƒÍ›7—X§Éd2'Å|}}ptt¤[·næÃÖÖ–;wâèèhq¯5å½½½ÉÊÊ">>ÞâÞž={òÖ[oUJ›­Q–~¹ÕÞ½{INNfË–-̘1ƒ=zàììLfff¹bëäååY} †ªWDDDDDJQ%‰µ6mÚЩS'fΜIJJ ÑÑѬ\¹’qãÆ•8:ªnݺŒ1‚yóæ±víZóšcYYY¬\¹’ððpžþy 0QÖ¥Kf̘Á¹sç8}ú4ãÆãäÉ“Å궦|`` <òS¦L1'žÖ­[ÇÎ;-Ö+mŠOyÚl²ôË­1:;;˜w%-((`éÒ¥;v £ÑxÇ÷.ët&‘Á`   [[[«’j¶¶¶hÔ°ˆˆˆˆÈ}ªÊ>©¯Y³†Ë—/ãáá««+=ö;wfÁ‚¥ÞóÞ{ï1bÄ‚‚‚prrÂÑÑ‘Zµj1cÆ fÏžm±kæ† 0xzzâááAÓ¦Mquueùòå%Ö}§òvvv|òÉ':t4hÀرc ! OOO"##iÕªW¯^­6[£,ýrsŒ¾¾¾ 2„AƒÑ¢E ÜÜÜøöÛo:t(|ðŦ·ºS[ED¤¸F‘žžŽ ÎÎÎÔ«W¯ÔÃÙÙ.\¸`Õ&9"""""rï“Éd"éøQêÖ+yÓ€Òz*£ÑHTTøøøÐ¾}{«îËÈÈ`ÿþýdeeѸqcZ¶lI:uŠ•ËËË#::š´´4¼¼¼î¸«¥5å³²²Ø³gF£¼¼¼Ì×rssÙ¾};yyy 8K—.áääD5îºÍÖ°¦_nÑÎÎŽ˜˜Μ9ƒ¯¯/­[·&33“íÛ·ãïïožÂz«’ê‘ÛKII!66777«F¡––F—.]ŠmžS™ŠF2—…““Óm¯ßÍçkݺ󻈈ˆHE»|1 €¨Ý;zþŪM¬‰ˆˆž:u*½{÷fÀ€·ˆHUJMMåСC<úè£tïÞýŽå333Ù»w/ƒ77·{¡ˆÜJ‰5¹›Ê¨ôàÁƒ4oÞœÈÈHzõêEPPõë×gòäÉôéÓ§L‹À†‡‡“P¡ñ-]º”… š_‡……qâĉ }Ò¼ùæ›téÒ…ÄÄD D¯^½HJJ" €¥K—Þ“*ÂáÇٸq#vvvæÃ`0˨Q£èß¿¿ÅѲöñ–-[ˆ¿m™[Ÿ£ˆÈý.!!:ààà@^^Þ:tèPá¿EÄz&“I‡:tèС“én^0wî\6lÈ?þHÍš5Íç‡ F¿~ýغu+ƒ ªŒ·¶J\\YYYæ×/^ÄÆ¦RrŒ8Àœ9sxýõ×yíµ×,®Mœ8‘Y³f1tèP~øáJ¥"T«Võë×;¿hÑ"fϞ͞={èÖ­P9}|ës¹ß%''Ó¹sgrss­¾ÇÁÁ”””JŒJDn§´Ñ"‚ŒŒ >ý|#‰'N••MC·<öè£ôy¢W…¶_ýÁ‡¤¤¤2dÐ@ü[·*v=??Ÿÿ÷æ[äçå<éyêׯ_¡ï_Ñ¬í»¥Ëߥc‡ötíܹ £‘»Q)‰µÄÄDÚµkg‘TèÛ·/½zõâÒ¥KçÏž=ËÇÌÙ³gñòòb̘14hРÔú­)ÿóÏ?Jvv6mÛ¶åÙgŸÅÎÎŽÍ›7“””Äõë×Y³f £G&::ooo<<<Ì÷9r„ÐÐPÒÓÓñööfܸqÔ«WÏ|ý³Ï>£}ûöäää°víZŒF#=zô`ðàÁ¥Æýúë¯ãååEHHH±kóæÍ#44”­[·Ì'Ÿ|B×®]ñöö6—‰ŽŽ&;;›Þ½{ðé§ŸÒ©S'222X»v-ÿþ÷¿qvvfãÆìß¿üñb1Ý©m%Õ[–_\}úôaöìÙœ·®ôyâ jÖäxR‹—.ãÛïv²xÑBl «ëÛöÆ7õôȯøñGâÁ­[ýµØõ¸ƒùfÇwŒõ ...åkØ=P–¾Û‹››]:UüÏš;õyU×'ògQ)ôš7oNDDáááäçç[\ûæ›o;v¬ùõ?ü@‹-X·nW®\aÅŠøùùqðàÁ붦|hh(íÚµc×®]œ?žiÓ¦H~~>QQQ$''“ššJxx8¹¹¹ >œˆˆóý_}õþþþ|ùå—\ºt‰%K–вeKΜ9c.óòË/³hÑ"È¥K—8räC† aùòå%ÆÍŽ;;vl‰kÌ5hЀßÿàà`‚ƒƒÙ»w¯E™?þ˜·ß~ÛüzÖ¬Y¼óÎ;tëÖˆˆ®_¿ÎàÁƒ™0açÎ#!!aÆ1gΜ2µíÖzFc‰m*ÍÉ“'ÂÿŠÜÜÇ~ø!ûÛ߈åÔ©SôìÙ“éÓ§Å·mÛ6ž|òI2339|ø0ƒfåÊ•%>G‘?‚üüü2Jª‰T­ªžr¢CGU~²–ú..¬ûðÆŒz†aC‡òòÿ°dш;x}11eª/ñÄ âJ½nÀ@}öÅÄ’sýz±ë»öDQÿ¦dZU÷OEõƒ¡Râ¸SŸWu}:tü’TʈµE‹Ñ·o_†Š««+Ò»woÜÝÝ-~Ž3†€€Â¨V­ÙÙÙ2qâD8PìƒÍÊgff2qâD&OžÌ»ï¾ Ž^kÛ¶-[·neñâŤ¥¥‘••Exxx±ØF#Ó¦McÈ!„††bkkË… èÔ©¯¼ò ëÖ­3—Ý´iGŽ1ïÖÖ§O6mÚÄÔ©S‹Õ{æÌŒF#<òH…ôq‘õë׳gÏ:vìH||<DFFòÄO† X¸pa™Úvs½¥)(( 44ÔâõéÓ§Y¾|9S¦L¡k×®Åî¹zõ*³fÍbúôé,Y²(ÜÌ¡k×®øùùY”=|ø0GŽ1FìÕ«aaa¼ð w|Ž""÷«²ŽXSbM¤j•ö!ZäÏîì¹s4oÖŒ‚‚‹/ÚÛú·¦SÇdee[üûȸpíß|KFF 6¤O¯@êÖ­ ÀÞ˜XÎ¥¤pãÆ ¶nûš'zRÍÎòOQС};¾ÞKLì~º=þ˜ùZ~~>ßïÝG¿Þ½ ݸ(ü÷ô™3|·k7W®üNãFîôíýµjÕ2ß·ýÛoiéçGãFÌç~ùõׯ_§Cûv@áïÙÝQßs4>ƒÖý+víbÛíÚV}ŸÀw»v“ŸŸOÛ6mx´‹åÔÐ;µõ»]»ñmÞŒßÿÈowàíí]bŸŸHJbçî=ä\¿ŽOÓ¦<Ø[[Û;ö•5ÏPäAUi#ÖÙ²e O=õqqqѤIFŵk׀„W||<¯¾ú*ÕªU ×’™5kqqqŦŒZS>22’ÌÌL‹é–þþþ¬Y³Æ"©Wšýû÷óÛo¿ñÚk¯™G–¹¸¸LXX˜EÙ#F˜“jEï“]b½EçožrYFŽiN~ÍÕß·oŸùø‚ 8}ú4P¶¶Ý\oirss;v¬ù "$$;;;&L˜Pâ=_ý5W®\á•W^1Ÿëܹ3={ö,Vöé§Ÿ¶˜âÛºuëRûWD䢬#Önù-"÷VU3®CGUž?Lô¾}DEï%??ß|>77—w–,¦_ŸÞæsÇâãûÜó|ûÝw\ËÉ!|óÆ<÷<‰Çc2™øå×_9ŸžÁ…‹—ØC^nn±÷°³µ£{@»ö챸öãÁŸ¸qã;u4ÿ»ŒÞ·ñ“^ z_ Ùײù<ì Æ>?‘´óçÍ÷-]¾‚_µ¨kû·ß²ñË/1™Lð¯×þÍ[o/åҥ˜KIáÕyo°úƒ­nÛÝöÀ¾ØX^}ý ®œ:}†¹ÿ&|óskÚúÞûkø"|3/þóˆýáú©XŸ·k7Ï¿0…Ÿæ÷ß3ygå*f¼<›üüü;ö•5ÏP‡Žá(I¥¥˜«U«Æ€0`P8=pùòå,]º”Úµk³bÅ ó.‘£G¶˜™““Àùóç-ê´¦|RRµk×¶HxY÷©S§0 ÓüüüÈÉÉ!-- 777‹5ÙîÄÕÕ€ôôôRË:tˆ¼¼<Úµkgu½Mš41ÿ·ÿú׿˜?>‹/¦sçÎôë×   êÔ©S¦¶Ý\oizè!®_¿nq.55•§žzŠAƒqòäÉb‹šžëe^}}uêÔ¡]ÚµiC‡vm- ˜L&¾µ„vmÛðŸùo`ccÃÜ\‚§½Ä’eËYõÎR¦¿À•ß3ÉɹƢóÉÉÉ)ñß– =ºðrÈ«d_»FÍ5Øóý÷ü­kìì ÿ¼‘›Ëò•ïÑíñÇYðú\®fe1ö¹çùàãO˜3ëŸ `c°±x/ó¹ß’“‰ýáÞ]ú_Ú·m n¢°m{$ÏkUÛî¦ïŠ$<Éçë×Q«V-lll˜6ãŸ|¿wƒô'×ʶb0ðíwßñþÊwñóõ%??ŸÏÿæ>¿xñ"ÿ]ör(ÿœþœÛ¸‰ÿï³Ïqtp`ZðdRÓ gýû_Œý-pùÊï%&ŸJc2™èð8{¾ÿžžÝ»qð§ŸÉÍÍ¥cûv$$&…3• n7-c2™ðhÜ£Ñȥ˗q¾ÍhE7nDИÑ|¼n=¡7á×¼9:´§Oï'ptp(wÛ¬í»"..õ,Z&SP¸khzz†Õm­ïâRêxiçÏãè舣££y4|~~>½zöв"w©ÂkuëÖeĈÌ›7 0lØ0ÈÊÊbíÚµ„‡‡³tiáY___ºtéÂŒ3ˆˆˆ Q£Fœ>}šqãÆÑ¹sçbu[S>00Gy„)S¦ðÅ_P«V-Ö­[ÇÎ;-v,íš6mÚЩS'fΜɶmÛpww'::š•+W2nܸ»EBhh(¬ZµŠ'žx‚üü|vîÜÉøñãñôôd̘1Ô¯_Ÿ-[¶0vìXìììxÿý÷9|ø0¥ÖŸÍܹsqwwç¹çž0ï,êé鉟Ÿ_¥µíf5þwÈvzzº9Z¤oß¾xzzš×usttdÕªUüüóÏÅ6/°FY§T‰ˆT%ƒÁ@AAA©£woõÐCQPP ¼"UH#ÖäAt.%…å«Þ#xâóx4nlN$99:ŠMÑ€5zè!L&F£Ñbä—ñFáïÖ¢uÍŠê»ù=‹fʘL&òóó 3š§G 'zï>â~<ÈúÐP¾Ü¼…Õ+–—¹meí»[Û]R_”¥­·«§Fš”°vëÍŸGn×WwŠUäAV)ŸÔß{ï=FŒAPPNNN8::R«V-f̘ÁìÙ³-vÍܰaF£OOO<<ù„C‡áââBƒ ;v,!!!…I¦ÈÈHZµje{³5kÖpùòe<<Íš5ÃßßߢÜóÏ?OÏž=9xð uëÖ% Àb]4€³g-(BaâlæÌ™=z{{{Úµkgñ™5m+©Þ[ÍŸ?Ÿùóç—x­~ýúÅÛ.êãüü|Ú·oORR»ví¢fÍš2jÔ(7nl._Rÿ.^¼Øâõ­ÏQDþöî;>ª*ÿÿøk2!=!…A4‘&/WéÅ RTÕUÊâîŠ`ÛU# ®À* ¢¸?®ÂJ•)ÙÐQ‚T‘$ Ò&™òû#fdH›R€÷óñ¸ûpî=÷œÏ=“2Ÿœ"µ]Ó¦MÙ¹s'NB³Z­¤¥¥Ñ¹sçjˆNDJ¢‘r#òöò¢O¯ž|²ð3êúÕåÎ;ºàááAnn_mÚD|BOÍf£ax8­Z¶äíwÿS_~‰zAAüòK:¯½1“–-š;|/¸|tÕåŠFLY,ºwëÊG‚¹ÀLÛè6£©niÒ„–-šóï÷?dÚ?'Èþ¤¬\½†{ûÇØÛô÷÷gÛÎôèÖ£ÑȺõ8rô(íÛµ-–ŸÏ,$(0»ûöÁd2±ë›okV¡g«Lß]þìöÿþím677nìÔ³–TÏ¥}ݺ5 ÃÙûî¿™}š€€222hѼoüë÷µÉ.ZÌ‚ÏqSDCf¿ñz±?ŒöïÜzË-Œ¼pí±Ã?ቧŸ¡oï^üý©'±ÙlLNæÉgÿÁïÎÃÓË“gŸ{_ÒÓñóóãÂ… têÐ)“'Ùÿ}ݼ5žé3ßÄ¿n]\]]ñóõ¥]»¶?q‚)/MÂÕÕ•9ïÌcÕš8êþ¶xvNcFäþÁƒ°X,N=Û•ôÝ£~ŒÁ÷`нì÷ôɧìÛ¿ŸY¯OàÌÙ³å>ëC#GóÀàAõ\Þ翜9Ãs±ÈÊÎÆÇÇ›Ì ™Œxô~p_}½©Ì¾ræ=¹lذ;:NŠß²‘Q=©ÄšT¿ØØXÞ|óMzö쉛›ÿûßÿˆŠŠbóæÍxxxÔtx""7<%ÖäZ¥ÄšÈÕc0ðòò";'‡¤ÉÉÉ!¤~}š4¹™:®®ö]2\\\ðòò"qÿ~~ýõ, ÃÃiz[/^´'~êÔ©Ã÷{÷RP`¦õí-‹%¥üüü°X,ö']]]ñóó#??Ÿ¬¬,‡s.\ÀÝý{É8wŽFn"ò–[ÈÊʲ·éîîNƹsJNÆ××—6­Z…-%ãííMJj*G§NWš5mНýùœy¶+é;òòòì‰6///\]]í»{ÆrŸµ¤z.ïs777ŒF#{~ØK~~>Mo‹"0 €ÜÜ\§úª¼÷PäF ÄšÔ{÷îeûöíäääpÛm·Ñ¯_?\]«df²ˆˆTkr­ªŠÄZŸ>}®j"׌F£}ž²¦Ö©SÇ^®¤MÆÜÜÜ€ßwÕ¼RƒWWW\\\°X,%¶i41Øl6ûbü¥•ÂÍÑJšâYÞ³•¤"}Wgžµ$—÷yQ=ƒ¡Ø³:ÓWWû=¹Ö|ùå—ÅkÊdHhݺ5­[·®é0DDDDʤµ„äFg)a'ÉÒ”—lqfG슰Ùlå¶i6›ËMB9S¦2‰¤Šô]yœyÖ’\ÞçeÕãL?\í÷Päz ±›"""""""""• k"""""¥Ðˆ5)‹k"""""¥PbMDDDÊ¢© """""""""• k"""""¥Ðˆ5)‹k"""""¥PbMDDDÊ¢© """""""""• k"""""%ððð //ww÷šEDDDj˜ÉdÂÃãØy%ÖDDDDDJШQ#’““‰ŠŠRrMDDäf2™8|ø05*vM‰5‘´lÙ’¤¤$~øáòòòj:©!4nܘ-Z–rÒášk"""Õ(%%…C‡‘’’‚Õj-µœÁ` ""‚¦M›ZŠH“ÉD«V­h×®..ZšXDDäFeµZÉÏÏ'''§Øµ*I¬-\¸5kÖ8œóöö&**ŠQ£F\ÍV{û£GføðáôêÕ«R×ED䯒ššJbb"]ºtÁÏϯÜò.\`âä—Ù¶ë¬ ?|³³¢‘Kåä䔸K´ˆˆˆTÑ® ßÿ=Ÿþ9®®®öã—_~aÊ”)DEEñã?VE³ÕÞþòåË9räˆýõìÙ³yõÕWK½.""7¶äädÚ·o··7f³¹Üã½?"~Ûv,f3A5¾ˆˆˆˆˆ\¦Ê¦‚zyy±`Á‡sGŽ!::š—_~™… VUÓÕÖþÙ³g¦ìÞ½›¬¬¬R¯‹ˆÈíÔ©StêÔ‰‚‚‚rËΜóK–-ÀÛÛ‹÷ßWÕቈˆˆˆHUëk·Þz+;vdß¾}ösIII,Z´ˆôôt"##9r$AAAdff²dÉþøÇ?²zõjâãã©[·.?ü0-Z´¨òö- K—.e×®]¸¸¸p×]w1pà@û½[·n%22’ˆˆV¯^ÍÑ£GÉËËãƒ>à‘G!!!Á~Ý™ö/^L»víÈÍÍå“O>Ád2Ñ£G‡vEDäÚd³Ù0›Íå–™9ç-V¬Z @`@ƒî‰¡ÉÍ«>@©jNe±X8~ü¸=‘´jÕ*Ú´iÊ+ÈÈÈ`æÌ™´lÙ’“' wXHOOg̘1<ôÐC<ýôÓ¤¦¦²hÑ"¢££Ù¸qc•¶o³Ù8p cÆŒáôéÓ$''sß}÷k¯oèС¬]»€øøxN:Ejj*+W®¤  Àáº3Ï ðüóÏ3}út @FFIII 4ˆ¹sçV¼ÃED¤Ö±X,¥f³™×fÌ´'ÕüýýygÎ,ê]ò©=ªlÄšÙlfË–-ö×çÏŸgþüù;vŒ_|“ÉÄøñã4h‹-Âh4ò믿ұcG&NœÈ§Ÿ~j¿wÿþýìÛ·zõê‘››Kß¾}yê©§HLL,uªå•¶?aÂÖ®]ˆ èÓ§&L`á…먙1ciiidee±råÊb×+ò¼Ë–-#))‰ Я_?–-[Ƹqã*ôˆˆHíS4b­G¿búõåÙ'Çc³Ù˜1{ë¿ü ÿºuy{Ö›„Ô¯_c±ŠˆˆˆˆHÙª,±–M÷îÝÎ…„„0}útFM||~ü8ƒ¦M›:Ü×¼ysrssIKK³Ÿ»|=µV­ZÙë(-±v¥íûùùñâ‹/2uêTf̘A§Nˆ‰‰aÔ¨Qøûû;Û zÞÐÐP‡5ÙDDäúR4bmÖë¯ñôs/““CÜ_دûúø0wÖLêc2™°Z­5ªˆˆˆˆˆ”£ÊÖX3 øûûÛK“ZØl¶b‰ÏÏÏp8_tîò×®®¥ç¯FûÓ¦M#55•·ß~›† 2uêT¢££ÉÌÌt¦ *Ü^í$*"rý*ZO­q£FÌz}:^^^ök>ÞÞÌys!ÁÁäççÛËÚl¶ŒXDDDDDJScœ¨¨(vìØáp~ÇŽøúún?—àP&>>Þ¡Žªh?55•W^y…ÀÀ@FŒÁÇLBB'Nœ(ÏÕhïÒç‘ë›Ùl&77—†áaÌ|íU"6¤ÑM71{Æ„“——‡ÙlÆl6c0j:\)E%Ö¢££éر#Ï>û,)))@amÞ¼yŒ9ÒaÔÖ[o½Å¶mÛ8xð ±±±ôèÑãŠk嵟››ËäÉ“™?¾ýž¢7n\j½ES|®äyEDäúd0°Z­F{r-<¬ æÈ'¾OýàÂMzŠ’jF£«Õª#DDDDDj©ýMýƒ>àܹsDDDP¿~}î¼óN:uêTlƒ€û￟îÝ»HóæÍ1 ¼ûî»UÚ~×®]=z4cÆŒ!88˜àà`ÆŽË”)ShÞ¼y‰õ5nܘ 6ЪU+.^¼Xéç‘ëSxx8éé鸸¸HPP¾¾¾X­V¬V+¾¾¾D`` ...¤§§VÓ¡‹ˆˆˆˆH €Íf³qôÇ…V¨‚ÀÀÀ+ Àd2Ï™3gˆŠŠ¢]»vökGŽ!22’o¿ý–¶oßNݺuéÖ­WÔ®3íCá¹àææFÛ¶m¾Ü¤§§ãëë‹§§'P¸NÚúõë1›Í 0€ŒŒ ‡ëδ'""ׯ””vîÜIhh¨S£Ð, iiiüá $$¤",téæ?Îòõõ-óú•þ¾ ⌌ŒŒšADDD®sçÎn¶¿e#£{²æke¹4±¦”ˆˆ\RRR8pàiiienJ`0 £yóæö]£«‹kr­RbMDDDªÚ創ҷÕ‘«.,,LS;EDDDD®µz5ä   ¦L™¢3EDDDDDDD¤Ö©Õ#Ö˜8qbM‡!""""""""RL­±&""""""""R[)±&""""""""R J¬‰ˆˆˆˆˆˆˆˆT‚k"""""""""• ÄšˆˆˆˆˆˆˆˆH%(±&""""""""R J¬‰ˆˆˆˆˆˆˆˆT‚k"""""""""• ÄšˆˆˆˆˆˆˆˆH%(±&""""""""R ®5€ˆˆÈ$%%…C‡‘’’‚Õj-µœÁ` ""‚¦M›ZŠˆˆˆˆˆ³ª$±¶páBÖ¬YãpÎÛÛ›¨¨(FEppðUkkܸqôíÛ—{î¹§ÖÅ7zôh†N¯^½*u]DD®/©©©$&&Ò¥KüüüÊ-áÂ&N~™m»¾Áj±ðÃ7;«!JqV•LýþûïùüóÏquuµ¿üò S¦L!**ŠüñªµµfÍ:T+ã[¾|9Gޱ¿ž={6¯¾új©×EDäú–œœLûöíñööÆl6—{¼÷áGÄoÛŽÅl&(0°¦Ã‘ËTÙTP///,XàpîÈ‘#DGGóòË/³páªjÚ)ÕßÙ³gqqù=w¹{÷n²²²J½.""×·S§NÑ©S' Ê-;sÎ[,Y¶oo/Þw^U‡'"""""T­k¬Ýzë­tìØ‘}ûöðŸÿü‡.]ºi/“@vv6}ûöÀb±°téRvíÚ…‹‹ wÝu,V÷îÝ»ùì³Ï0›ÍôìÙ“{ï½÷ŠãHJJbÑ¢E¤§§ÉÈ‘# r*¶­[·IDD«W¯æèÑ£äååñÁðÈ#`¿îL{‹/¦]»väææòÉ'Ÿ`2™èÑ£G‰}"""µ‹ÍfÃl6—[f朷X±j5 º'†&77®úEDDDD¤Bªu¸”ÅbáøñãöDÑØ±cÙ¶m›C™?þ˜Y³f…_.Ș1c8}ú4ÉÉÉÜwß}ÄÆÆ:ܳnÝ:† Bff&‰‰‰ 8yó*þ—ýËã[µjmÚ´aÅŠddd0sæLZ¶lÉÉ“'ŠmèС¬]»€øøxN:Ejj*+W®¤  Àázyíyþùç™>}: ##ƒ¤¤$ Äܹs+ü¼""Rý,K©‡Ùlæµ3íI5Þ™3‹z—üEDDDDDj*±f6›Ù²e‹ýõùóç™?>ÇŽãÅ_tªŽäädÖ®]ˆ èÓ§&L`áÂ…k•%&&’””DHH½{÷fùòå<þøã•ŽÏd21~üx Ä¢E‹0üúë¯tìØ‘‰'2a§b+2cÆ ÒÒÒÈÊÊbåʕŮ—×Þ§Ÿ~j/»lÙ2’’’hРýúõcÙ²eŒ7Ω~‘šS4b­G¿búõåÙ'Çc³Ù˜1{ë¿ü ÿºuy{Ö›„Ô¯_c±ŠˆˆˆˆHÙª,±–M÷îÝÎ…„„0}útFíTEëmß¾®]»âîîδiÓ˜6mšC¹áÇۓj­[·&!!áŠâ‹ç§Ÿ~"..£Ñ@½zõ;v,'NdÒ¤INÅæ¬]»v•ÙÞ¥‰µaÆٓjmÚ´aãÆ•jWDDª—Åb ×úÌÉÉaÝú ¸\È3å±qÓfüüüx{ö›„5uj=6©U6ÔÏÏsçÎÙ‹/’––ÆsÏ=çtQQQ¼øâ‹L:•   zõêÅ›o¾ÉùóçÊ]ºFÙÕŠïøñã š6mêp_óæÍÉÍÍÅÏÏϩ؜U^{iiiös•y^©Švüœõúkxyy÷Åö¤š¯sgͤ~p0&“©Ü5ÙDDDDD¤æTYbÍ`0àïïo?|||œº/??ßáõ´iÓHMMåí·ß¦aÆL:•èèh233íe*³³fyñyxx`³ÙŠ(Н  À©ØœåL{E´“¨ˆÈµ«h=µÆ1ëõéö䀷7sÞœAHp0ùùùö²6›­#‘ÒÔx†æò¿Äïß¿ßþß»wïæ•W^!00#FðñÇ“À‰'Êêy¥¢¢¢Ø±c‡Ãù;vàëëKjjêU­¼öÂÃÃ+ù$""RÛ˜ÍfrssiÆÌ×^%¢aCÝt³g¼AHp0yyyö‘mƒ¡¦Ã‘RÔhb-88˜5kÖØ“kï¿ÿ>‰‰‰öëÙÙÙLž<™ùóçÛÏí"Ú¸qã*-::šŽ;òì³Ï’’’@BBóæÍcäÈ‘äææV*¶Ò¦ô”מF©‰ˆ\û V«£ÑhO®…‡5`ÁüùäÃ÷©\ÜÜ\{RÍh4bµZõo€ˆˆˆˆH-Ue›8#66–ÇœˆˆÜÜÜà‰'žàСCtíÚ•Ñ£G3fÌbcc¸páS¦L¡yóæUß|@ÿþý‰ˆˆ ((ˆ3gÎЧO¦M›†O…ckܸ1Ó§O§U«Vö$œ³í‰ˆÈµ/<<œôôt4h@`` }4šÕjÀ×××^Öf³Ùר «‘xEDDDD¤lÀf³Ù8úã‚B+TA``àpôèQöìÙC@@]»v¥N:ÅÊ>ž3gÎE»v휎-==___<==ÂuÒÖ¯_ÙlfÀ€ddd8\w¦=¹v¥¤¤°sçNBCC…f±XHKKãøµ…¦0 IDATƒÃî×UíäÉ“¾çÒ¤`I®ô÷gdddÔt"""r;w¶psÉø-õØ“5ŸX¹‘¤¤¤pàÀÒÒÒÊÜ”À`0FóæÍ ­Ø¿ÍWJ‰5¹V)±&"""UíòÄZN¹Ñ„……ij§ˆˆˆˆÈuB«!‹ˆˆˆˆˆˆˆˆT‚k"""""""""• ÄšˆˆˆˆˆˆˆˆH%(±&""""""""R J¬‰ˆˆˆˆˆˆˆˆT‚k"""""""""• ÄšˆˆˆˆˆˆˆˆH%(±&""""""""R J¬‰ˆˆˆˆˆˆˆˆT‚k"""""""""• ÄšˆˆˆˆˆˆˆˆH%(±&""""""""R ®5€ˆˆÈ$%%…äädNŸ>Õj-µœ‹‹ aaa4kÖŒ Tc„"""""â¬*I¬Íž=›´´4^{íµb×Nž<ÉóÏ?ÏóÏ?Ott4£GføðáôêÕ«Ô:7nÜÈ’%Kxï½÷*ÏÚµk1 ÄÄÄðóÏ?3cÆ ¾ÿþ{Ο?OãÆ4h<òF£Ñ~ϸqãèÛ·/÷ÜsO…Û»Z&L˜ÀÑ£GùÛßþF×®]‹]7›ÍŒ9’‚‚f̘AÆ k JqVjj*{÷îåŽ;î {÷îå–ÏÌÌdÛ¶m BCC«!B©ˆ*I¬%$$päÈ‘kçÎcñâÅ<üðÃöÄÚòåËiß¾}™‰µ#GŽðùçŸW*±öÎ;ï0}útöìÙÃ]wÝEDD=ô¾¾¾ìÛ·¿ýíoü÷¿ÿeÆ ¸¸ÎŽ]³f 5ªÑÄÚ† øî»ïJL¬}ýõ×,X°€‰'*±&"RË%''Ó¾}{¼½½1›Íå–÷öö¦}ûö$%%)±&""rƒ³Z­öQïyyy5ŽÈ ÅÃÃððpn»í¶b×jÅTгgÏÚZWÛÅ‹9yò$·ß~;  Aƒ|÷ÝwxyyÙËÜwß}ÄÄÄǽ÷Þ[%qTVXXqqqäää8Ä °dÉÂÂÂHII©¡èDD¤"N:E§N(((púooo}΋ˆˆ‡&77—þýûãíí]ÓáˆÜP²³³Ù±c‡&$ØßáZ­H¬mݺ•ÈÈH"""ìç6mÚÄêÕ«±Z­ 0 Äû~þùg>þøc~þùgš4i£>JHHˆC™uëÖ~µmÛ¶X‚êî»ï¦wïÞdddkc÷îÝ|öÙg˜ÍfzöìY,ñ–””Ä¢E‹HOO'22’‘#GIJeË áÎ;ï Gê-_¾œ–-[Ò©S'ÒÓÓY½z5111„……•øŒ={ödÍš5ÄÅÅ1tèPûy³ÙÌÊ•+yøá‡yë­·œê“ŋӮ];rssùä“O0™LôèуðŸÿü‡.]ºi¯/!!ììlúöí €ÅbaéÒ¥ìÚµ îºë.ûý""R6›ÍæÔHµKY,–2×b‘éS§èß¿?nnnäçç×t8"7777:uêĺuëŠ%ÖjÅ® C‡eíÚµö×o¼ñ={ödëÖ­?~œ!C†›úÍ7ßТE >ýôSΟ?Ï;ï¼CóæÍÙ³gC¹+V0xð`š6mÊÚµkY¹r%‹Å¡Ü—_~Ɉ#έ[·Ž!C†™™Ibb"dÞ¼yöë«V­¢M›6¬X±‚ŒŒ fΜIË–-9yò$Ÿþ9Ï<óŒ½ì† 3f &Lpˆí/ù îîî¥ö››ƒfñâÅç¿þúkòòòèß¿¿Ó}òüóÏ3}út @FFIII 4ˆ¹sç0vìX¶mÛæÐÎÇ̬Y³€Â/„d̘1œ>}šäädî»ï>bccK_DDY,– Jª‰ˆˆ€ÉdÂÍÍ «ÕŠÍfÓ¡CG5V«77·§aWÙˆµŸ~ú©X¢ (qTØ¥NŸ>ÍK/½ÄO}:wß}7ƒ¦~ýúôêÕ‹^½zÑ·oßGŒ%&&’””dñÕ»wo–/_Îã?ŽÉdbüøñ 4ˆE‹a4ùõ×_騱#'N$&&†G}”sçÎ@||<ÁÁÁìØ±ƒüü|ÜÜÜØ¼y3:u"((¨Ì>:t(ƒæâÅ‹øúú…Ó@û÷ïo}çlŸ,[¶Œ¤¤$ûsýúõcÙ²eŒ7®Ì pm µkײaÃúôén°°páB^}õÕrï*ÜajiëÖ­ÉÎÎ`×®]üôÓO¼ôÒKöÝDëÕ«ÇØ±cY¾|9ýúõ`óæÍ@át׿ÿýïäåå±k×.û5g6GèÕ«ÞÞÞ¬^½ø}è¥SCí“aÆٓjmÚ´±?SyŠÖÁÛ¾};&“ €iÓ¦qâÄ §î‘ŠX»|„µˆˆˆÜ¸jzÔŽ7úQ’*±vóÍ7³råÊbçøáûn %9~ü87ÝtuëÖu8ß²eKâââ€ÂByä{R 77€_~ù…ÀÀ@V¬XÁ<àPO:u¸çž{ì ­cÇŽ1wî\fÏžMݺuyçwìe/]ó­¤8 M›6u8ß¼ysrss1›ÍtèЯ¿þš»îº‹ƒòÀðé§Ÿ²yófIOOw˜ÊYWWW† ÂâÅ‹y衇ظq#&“‰þýûÛw u¦OÊ{¦òDEEñâ‹/2uêTf̘A§Nˆ‰‰aÔ¨Qøûû—_ˆˆhÄšˆˆˆTZi_ìE¤æÔŠÍ .åíí]âœÕ¢R€=q4}útüüüŠ•ˆˆÀjµo_íÇdܸqÌ™3Ça{Ô&Mš0kÖ,N:E\\œCb­¬J=<<°ÙlØGˆöE$ ˆ‰‰aÁ‚ôìÙ“† róÍ7Ó³gO¶lÙB@@´jÕÊ©~:t(ýû÷çüùó,]º”{î¹OOÏ õIyÏT’ËÅœ6mO=õk×®eË–-L:•¹sç²wïÞÛGV´ŽŠˆˆˆˆ~'©}jÅæ—ŠŒŒ$%%…£G:œß¾}»ý¿›5k€ݺu³F£‘M›6áããömÛhß¾½=éU¯^=6nÜhŸNy9›ÍV¡ÄPTT;vìp8¿cÇ|}} §ÿþ>|˜… r×]wУGvîÜÉúõë­V¤{÷îøûû³téÒbÓ@Á¹>qÆå#)öïßoÿïÝ»wóÊ+¯Ȉ#øøãIHHàĉ$$$8ý,""7:³ÙìôQ´œˆˆˆHMOƒÓ¡ãF?JRëk$$$„Ñ£GsöìYl6Ÿ~ú)ëׯ·—iÖ¬;wæ™gžáôéÓœ8q‚‘#GrìØ1V®\É!Cì÷0lØ0^yå>ùäûºbYYYÌ›7•+WòØc9gtt4;väÙgŸ%%%€„„æÍ›ÇÈ‘#qqq!::š °bÅ ºví @×®]ÉÏÏç‹/¾¨PbÍh4rß}÷1aÂòó󉉉q¸îLŸ”'88˜5kÖØ“kï¿ÿ>‰‰‰öëÙÙÙLž<™ùóçÛÏí"Ú¸qc§ŸEDäFe0°Z­F§’jF£«ÕZáÑÆ"""r}ªé¤‚7úQ’Z7ÔÓÓ“>úˆ|úõëããニ‹ “&Mâí·ß¶—[¸p!1114nܘÐÐPRSSéСƒ}'Ñ 60eʇºÿýïãééɨQ£1b^^^äääàææÆ /¼àÔΘ—úàƒèß¿?qæÌúôéôiÓ€Â/Pwß}7}ô‘}ÄZݺuiÛ¶-‰‰‰ôèÑ£Bí 6Œwß}—áÇãááQìzy}RžØØXüq"""pss# €'žx‚C‡…IÁÑ£G3fÌbcc¸páS¦L¡yóæz‘Qxx8ééé4hЀÀÀÀ2G£Ùl6rssIOO/qçj¹ñ”öž"Öù;w}SêõG~ˆ&77æµ3éÕ£;íþïÿ®¨½Ý{ö°iËVž{æé2Ë%8Èêµk9rô4 oÈà{кÕíWÔþµ¨¼>+((à“…ÿåØñã<÷ÌÓÅÖ¨¿gΜá³%K9|äYYÙ4 áÎ;î _ŸÞì=÷m:´oG—N®ZÛ×*`³ÙlýñA¡ª 00ðŠƒHOOÇ×××aͰsçαeˬV+ݺu#((¨Ø}f³™„„ÒÒÒhÒ¤ :t ×Û±c‡}”ØåΜ9î]»ÈÊÊ¢aÆ´lÙ²Ò‹ï›L&âãã9sæ QQQ´k×®Rõ\-¥õ‰³Ž=Êž={ k×®ëÇ9xð ÀÍͶmÛê Ÿˆˆ“RRRعs'¡¡¡NB³Z­¤¥¥Ñ¹sg‡«ÚÉ“'+|¯¯o™×¯Æï "å)Ú]DäzÇÀ¯¸ž·ÿýÿX¹j5=ºw+ñúC£ÑM73p0{l úÇ”XÎYkÖ®ã½>bÍòe¥–ùïâ%üûýh}ûítìОüü|¾Ù½›1îoåû†”zïõ¨¼>[¼l9ï4Ÿ‡ưîÇë’\Ê•8üãžxúBCêÓ¯O¼½¼øñèQ¾Øð%­o¿Ó_Åå·? }øOÜ7hÃî¿ïª´}©¥Ë?Ç”ŸÏÃìuõ­ZµŠ;:æ}â·ldÔcOÖŽkõë×/v. €Áƒ—yŸ««+ݺu+vÞÍÍ­Ô¤Ny,ÚôJ¹»»Ó»wï«R×ÕPZŸ8ë–[ná–[n)³L³fÍìkº‰ˆˆóÂÂÂèÔ© 55µÌ¿: ª=©&"""µ×Õ±fÀ€§—ÿœ4±ÄëùùùX­V6¹žüüü ïh^¼A`(5öCɇyïÃøë˜?3êÑG°X, Æþõ/¼úÆ æ½÷>wÞq!!Åó×­rú,%%…Û[´à±Ñ£(((¸*?ýç‚ëÕãÓ>ÄÕ՛͆Ñh¤WŒæY¶ïØÁ;†ˆƒ¡ô¯Äá#GÈÍͽju_íú.W+k"""7а°0ô‘J¹:‰Â:rssË,õ¿mÛhNýà`6mÝJÓÈ(Lù&6|µ‘‚‚þ¯MîèÒÙá¾=?üÀö;±ÚltéÔ~‹¹´Ø?^°€ð°0þ 999×þ½{QÇÕ•#G²iËVróòˆºõVúôê‰ÑhdýW_Ѳys†ÿÞïûö'‘——GûvmÙ¶cg‰õ]MFàå—_~™sgðôrn÷È"žWiÈ¡ˆˆˆÔ.\¨ð=îîîe^×ï RÊû’("r-;|ø0QQQW\Ïî={8rì>p™åþ6îIêׯOTä­¼8i2gÏeðéÂÏæç”|¶___šÝv‹–.ã_Óß à·Qnÿ]´„Ô´4²³sJl///7ç¼ÅƒC°×q)·:uøËŸGs[T$‹€m;vðôs/p!3oo/6mÙÊÊ5kèzçx{{Ûc=pè_oÞBHH}þ·};+V¯áÀÁC|ÿÃ^êñÅ—_²iËVÞÓŸ “ÿY¡òƒ¸u_0ñŸ¯àââ‚§§'ßîþŽŸ-¢S‡TYŸ}µi?ìM$++‹¼¼<:vhÏw{ö”Û'ÏO˜DnnsÞ™ÇÙŒ úöîUl é{ÙùÍ7ÜAÃð0ûzÀV«•{ïéÏ-Mn¶¿ËW®âü…ó¬ZGhh(?ýtŠ…‹á_·.·ýösêÌ{uy\‹™cÇOCnnwvéB|Â6ž‹€Ùb¡Žk–¯\Éî={èÓ³'ãŸù;MšÜÌ-MšØŸã“ÿþ—o÷ì¡Wî¬[¿}Iês½‚ÄÚáǹ)¢ðä'OcÕšõ±&""""""r-¸#Öl@nN¯Í˜YìÚ;ó‡¢ÑT..¿Oõ3 lý_K~Šݺ¸¸¸ðÔߟã Û|ï~={–ùŸ|ʰûïãÙ§žÄjµrâäI=OOÏcÿ%=ü‚BCBJ¼n³ÙÈÌÌ´¿.((`î¼Óí®»˜öÏÉ\ÌÊbÄŸãÃÿCì?þnõ̯¿²`þ‡FNœü‰á<ŠÅbæ£÷þÍfãŽ.]øG실¤¦U¸|Ãð0–¯\Åà÷òÂߟÅjµb³Ù2l8ÛwîäÖ[šTYŸ5’Ì‹9õóϼùút233ê ¾úúkÞŸ÷6Í›5#;;«ÕêP÷Ø¿>ÆÓÿxžIÿ|ÚF·¡mt4íÛþ_‰ëÞ=vŒ% >ÅÏÏÆ?ówþ·m;÷ÞÓßé÷êò¸, /Oý¹¹9LŸ6•³gÏò朷¸È`þþôSX­VŽ?ÎC#F±}ç. p1¸8ô•‹‹‹ýÜø±sþB¦½¾ª˜ZþÊÉ"""""""Rãl6Ûð[r-7·Øa±XËÙpxݧgO<ÜÝÉÉÉ!++‹[o½…<“ ›ÍÆÎ]ß`µZ=r/^$;;›ÐúôêYjìyy…Ó }}|œŠýÀ¡Cü’žÎÈG&;;›ììlŒ..<0d0ñ ÛbíÑ­+&“‰œœê× w¯ždgg“““CƒÐû”ÇŠ”·Ùlü¿·ßbüã#++‹œœ2220 öëU×gy… 1›ììl’tºOúôîE£›n"33Óá½.:ê³ì³…Ìzãuz÷ìÁGŽðú›³ö§G™6ý òòòêëÛ«7uêÔ±?Û-MšgÊ«ð{ui\ÙÙÙØl…‰Êììl¾Ù½›ìœþôÇáö> kЀI±/R?¸Äÿoüv›Íö["í÷úŠ’ WòÿŸËiÄšˆˆˆˆˆˆÈ ÄËË‹×ÿ5­Øùüü| J½¯^½ ‡QN¶Kþû—ôtBCBp5í ‹ÅBãFøß¶í%Öàï@ƹs¥¶yôØq, Q‘·’ž~ƒÁ@hHÈï1ØlD4lˆÉd"ãÜ9 §aº¹¹ÙËM_t«S§Ø¹ßf;V¸|nn.+×ÄqààA~>}šŸ>å²`põûìré“àzõìÏQ«ÕJnn.m£Ûб};\]]IMKcñÒeüwñ|¼½?öoÏvi²Éf³†«WÚ/¿àãヽ- ½{ö(óYª“F¬‰ˆˆˆˆˆˆ\®Êˆµß!YYYÅŽüüüb#s.}]´ dIe<==1ý¶£è¥eŠF„•K½zAÔ¯_ŸK÷…‰“øô³Ï°Ùl¸»»Ûëth#¿°¢QX%õ€ÕZRì%÷oYå³³³3v+W¯¡u«V<óäx¾X½’¦·EUyŸ]^Ç•ôÉ¥ÇϧOóüÄIütêùùùäää™™‰¯cÿúztëÆÎo¾)õçãjÆåØG^X-–b#ìL&“}ÇÚËŸ¥(9\V¬•þÿO ”X‘+Ò0<œ_ý•”ÔT‡óû“”zÍf#¦o¾úz§SR‹]ÿö»ïÈ8wξÓdÑŽ›r(—tà ^^^׫w¥á”¤ƒ9sæ ³Þ˜ÎCÓ¢Y3l6YYÙª§2}v¹«Õ'þþþìùþv~óÃù¢QlV«ïj«ax9¹¹œ:õ³ÃùÄN`ɲåÅF®;~Âé8¯%ÖDDDDDDD®WsÄSå.{]¬Ü%uuéÔ‘ÀÀfÎ~‹ ™™X­V¾úz»¾ý¶Ìöþ A<÷âv}»‹ÅBAAßìÞÍÌÙoÖ ½{öÄf³qsãÆ´lÑœ¿ÿ!¿ž=‹Ífcßþ$V®^ýýcì#¿Jj¯¤ç.z]ÑòþuëpüÄ òòòÈÏÏgÙŠœ8y’üü‚*ï3~«§¢}RVÞ^^ôéÕ“O~Æ—¿¶/òŸ““˪¸µÄ'$0èÞ{Ëþ9*)#9d³ÙxöÉñ¸»¹3cöÞ˜5wwwL&®®®ŒøÓŸxOòòòÊ­ïJã aÁ¦Í<6ö f¿ñ:/Mˆå¹Ø Ü7ü!||¼É¼É¨Ò¢y3F<ü0Óg¾É‰««+~¾¾ ½ÿ>ŽŸ8a¯óòú<==Ëì׊úíçÓÆÑ ‡…V¨‚ÀÀÀ«ˆˆˆÔ¬“'OVø__ß2¯ë÷©5‚ˆH•‰‹‹£oß¾W\——nnnœ?¾ÌrE‰Ÿ"þþþäåå9$V<==©S§™™™Ô©S«ÍÆžïÀjµÒ6º îî»—Ùž‹‹ ÞÞÞ¤¤¦òã‘£X­… ø7¹ùf²³³¦úFÜ=<Ø»7‘ŒsçhÔè&"o¹…¬¬,{"¥¤XíëÈÕS·n].\¸€¯¯o…Ê[,|||8”œLJj*77nL“›o&++›Ý{¾ã¦ˆ‚ëÕ«²>óööÆÅÅ…‹/^QŸ\Î`0àååEvNI’““CHýú4ir3u\]ÉÍÍ-óçÁËË WWWû³U6®:uêðýÞ½˜i}{KÜÜÜ0ìùa/ùùù4½-ŠÀ€rssqww'ãÜ9%'ãëëK›V­ìmõÏåõ¹¸T~òæ† ¸£s;â·ldÔcO*±&"""Ž”X“k•k"r=‹‹‹£OŸ>ÕÖž‹‹K™ÓßJc0¨óÛnšºßh4b4©{¥íúh0puuÅÅÅ‹Åb_ľº]ƒÅb±?{Y±—äJúìÒ:®VŸ¸¸¸`41 X­Öb TG\E»´%6‹ê1 ˜Íf‡V‹~nl6[©»Ú^^_e}ùå—Åkš *""""""r ¸SAU‘ÄÐ¥l¶ßwµ¬(³ÙìTâÅf³]q‚äj¸<‰SÙg¿’>»´Ž«Õ'M –¥²q]ÞeÕãÌÏÍ•öoY´yˆˆˆˆˆˆˆˆH%hÄšˆˆH5JIIáСC¤¤¤8 a¿œÁ` ""‚¦M›Z±eDDDäúT#ÖDÄ9U’X[¸p!kÖ¬q8çííMTT£F"88¸*š­7ndÉ’%¼÷Þ{%^¯Îg7n}ûöåž{îqúžêŠoôèÑ >œ^½zU꺈Èõ(55•ÄÄDºt邟Ÿ_¹å/\¸ÀÄÉ/³m×7X-~øfg5D)"""µ•k"µO•LýþûïùüóÏquuµ¿üò S¦L!**Šü±*š­GŽáóÏ?/õzu>ûš5k8tèP…î©®ø–/_Α#Gì¯gϞͫ¯¾Zêu‘Arr2íÛ·ÇÛÛÛ¾DYÇ{~Dü¶íXÌf‚´ø¿ˆˆˆˆH­SeSA½¼¼X°`ù#GŽÍË/¿ÌÂ… «ªéWÛŸ½:â;{ö¬Ã¶»wï&++«Ôë""7‚S§NÑ©S§Rw+ºÔÌ9o±dÙr¼½½xÿÝyUžˆˆˆÔr±&RûTëk·Þz+;vdß¾}ösIII,Z´ˆôôt"##9r$AAAdff²dÉþøÇ?²zõjâãã©[·.?ü0-Z´(³­;v°nÝ:Μ9CXX>ø QQQöë‹/¦]»väææòÉ'Ÿ`2™èÑ£t¨gÓ¦M¬^½«ÕÊ€®Ú³ÿç?ÿ¡K—.DFFÚË$$$Mß¾}Â8–.]Ê®]»pqqá®»î*&­>ûì3Ìf3={öäÞ{ï½âø ì÷¦¼Ø¶nÝJdd$¬^½š£G’——Ç|À#ûŒV­Zñý÷ßÛË<ÿüóLŸ>‘‘ARRƒ bîܹö2o¼ñ={ödëÖ­?~œ!C†”º¶ZEŸ}ìØ±lÛ¶Í¡ÌÇ̬Y³€ÂÌ2fÌNŸ>Mrr2÷Ýw±±±÷¬[·Ž!C†™™Ibb"dÞ¼Šj¨È{ãLlC‡eíÚµÄÇÇsêÔ)RSSY¹r%×Ëk¯ˆ3HmW´}yI‡Ùlæµ3íI5Þ™3‹z—ü‘ADDDDDj*±f6›Ù²e‹ýõùóç™?>ÇŽãÅ_Äd21~üx Ä¢E‹0üúë¯tìØ‘‰'òé§ŸÚïÝ¿?ûöí£^½zäææÒ·o_žzê)KœN8gÎÆŒcO‚pë­·²jÕ*¢££íå–-[FRR 4 _¿~,[¶ŒqãÆqúôi^zé%žxâ {âfß¾}tèÐooï+zvg$''³víZ6lØ@Ÿ>}˜0a .tX«,11‘¤¤$BBBèÝ»7Ë—/çñǯt|å½7&Lp*¶"3fÌ --¬¬,V®\YìzE~ÊzÏDD®E#Özô‹ ¦__ž}r<6›³ç°þ˯ð¯[—·g½IHýú5«ˆˆˆÔäååáîî^Ó¡ˆÜL&ÅÎWYb-;;›îÝ»;œ aúôéŒ=šøøx~úé'âââ0Ô«W±cÇK¦<õÔSÔ«WOOO&OžL¯^½Ø·o­[·.ÖöæÍ›ñõõµ¿6™L ‡5¾† fOдiÓÆ>...‹ÅÂÔ©Sí×o¿ýv† F\\Ü=»3Š†Û·o§k×®¸»»3mÚ4¦M›æPnøðáö¤@ëÖ­IHH¸¢øÊ{o&MšäTlÎÚµk—Ó? e½g""׋Ůw™““úõp1¸gÊcã¦Íøùùñöì7 kêÔzl"""rýkÔ¨ÉÉÉDEE)¹&RÍL&‡¦Q£FÅ®UYbÍÏÏÏaŸ««+>>>ö×ÇÇ`0дiS‡ûš7oNnn.iiiös—¯§ÖªU+{%%ÖŒF#ï¾û.;wîäðáÃ>|¸Ä5m.]ßërÇ禛n¢nݺç[¶lYnb­¼gwFTT/¾ø"S§NeÆŒtêÔ‰˜˜F…¿¿¿SÏPÙøÊ{oüüüœŠÍYÎü,„††•{^‘Ú¤èߣY¯¿ÆÓϽ@NNq_|a¿îëãÃÜY3©ŒÉdÂjµÖT¨"""R‹´lÙ’¤¤$~øáòòòj:‘Ї‡7¦E‹¤¥œt¸Ve‰5ƒÁPf’ÅÃÛÍFAAuêÔ±ŸÏÏÏpø }ѹË_»º?33“èèh\]]yâ‰'øë_ÿJ›6mˆ‰‰)V¶¬])½½½Kü°2™L¥ÞS¤¼g/ÍåÏ9mÚ4žzê)Ö®]Ë–-[˜:u*sçÎeïÞ½øùùe?Ceãsæ½q&6gUägA;‰ŠÈµ®hÄZãF˜õútž~îyrrrðñöfΛ3 ¶Z­V-T,"""˜L&ZµjE»víô½H¤šY­Vòóóí¿·_ªZw½TÑ;vì gÏžöó;vìÀ××—ððpŽ;î–Y´–.†i—Ú¶m§Nbÿþý#Ý233+_dd$)))=z”[n¹Å~~ûöíª§,—¢Û¿?õ[Kg÷îݬ[·Ž &0bÄFŒÁhÑ¢ %& ¯–òÞ›ÔÔTæÏŸÕbsægADäzb6›1›Í4 cæk¯ò¯×ßÀÅÅ…I±/ìð‡¢)ò"Rý¬V+ÉÉÉœ>}Z£CDjÂÃùí¶ÛnÈÄ’Õjå»ï¾Óg’H ¸ôóçr5–X‹ŽŽ¦cÇŽ<û쳬[·Ž°°0˜7o#GŽtø |ë­·èÛ·/wÜq$66–=z”˜X àäÉ“´hÑ«ÕÊ[o½ÅÁƒ’6å8p !!!Œ=šåË—È‚ X¿~=WüüÁÁÁ¬Y³†#FàêêÊûï¿Obb"½zõ ×A›}Š-‚ÿý÷Ó½{w|||8wî7æÝwß-±Î:0hÐ î½÷^n»í6Μ9Cûöíùd¹±yzzòÑGñàƒR¿~}||| GLšÄÛo¿}ÅÏËã?NDDnnnðÄOpèÐ!ºvíÊèÑ£3f ±±±@á®)S¦Ð¼yó+n¿>>Ž­qãÆLŸ>V­ZÙ“pζ'"r½'== ˆÁ`°¯£véÆ;6›Í¾ÎdXXXÄ+r£;uêýû÷ÇÍÍ­Ø’"RýÜÜÜèÔ©ëÖ­»!kúL©9—~þ\žX36›ÍÆÑZ¡Ê‹FˆU–Éd">>ž3gÎE»víì׎9Bdd$ß~û-!!!lß¾ºuëÒ­[··8½ÔŽ;8yò$Íš5£uëÖdff²~ýzÚ´iSâH·Òœ;wŽ-[¶`µZéÖ­AAA•~ÖË=z”={ö@×®]Ö+rðàA8€››mÛ¶­Ö/We½7åÅ–žžŽ¯¯/žžž@á:iëׯÇl63`À222®;ÓžˆÈµ.%%…;wêÔ(4‹ÅBZZøÃv€®j—npã¬K“‚%¹ÒßDœ‘‘‘qUë‹‹‹ãÁÔ:‡"µˆÁ``Ñ¢EÜsÏ=5JµÓg’HÍ*úü¹£sa®"~ËFF=ödÍŽXƒÂi.½{÷.·\DDÆ sºÞÎ;Ó¹sgûk???†Záø“DjNiŸ?5žX¹‘„……ij§È5äFÿ/"µ‹>“DjŸZX bÊ”)ÚRDDDDj„¾ÄŠHm¢Ï$‘Ú§V'Ö˜8qbM‡!""""7(}‰‘ÚDŸI"µO­N¬‰ˆˆˆˆÔ$}‰‘ÚDŸI"µk"""""¥Ð—X©Mô™$Rû(±&""""R }‰-ÙâeË8x0™^=ºó‡;þ?{gÓÙ=ðïd²È*!$’IP!­ZQ´jißVµÖµï凢¥êÅk«RÕjQj ¥‘„H$ÔÄTÒÕ’u’I2sDF&™È$!y¾ŸÏý$÷ÞsÏ=ϙ瞹ϙgyµDù3çÎpì8³¦M}*™§å/Nž Ó:VôõœèûúëX[×Ô[׊Ukx­Ó+xvèPÞf ÅRUbReŵZÍí¨(â©[§/½Ô™¬Xù-Û~E­V3üÊœûië/ÄÄÜaôG#±«[·Ä2”–¤¤$~Ûù;‘7o’žžA={;:wêÄë>=100ÐÈ­^÷5<Úóª§g¹Û Ѓ’E@ ‚ê‰$Ib+´)•J~ܲÿcÇØþû.½®‰#(8ø©dvîÚÍÖ_{*ÛoÞú‡ãÁÁi¶ää~Þú ƒ‡ 'æÎ½u8BÌ»¥ºá2”G™ªãV©lß—ÇVY1$..žÑã'0üã1,þj#ÇŒe̸ ÜyÂs|!<œs.9¾jÝ×ü¸e+]:¿†]ݺåî£ë‘7xøHþ>{–W:v¤ÿ›oP«V-V¬^ÃôOç R«5²!aaü£ì*ÍVÞ1ª*Ä<]ˆk@ A1÷] >JF†‚þýÞdß_âJî­!“²'û³™È›7ÉÌÌ|ªÏD†Œ5j°hþãÒd2±qq¼?t8?nÙʼٟê¯MVB™ Q¸ åQ&Aõ¢*Ô•ÊŠ!«Ö­#99…ÝÛ¥¡³3QÑÑLš6ƒÏ¾ø‚;)V§¬Îußldïþ,Y´.¯u"77÷ɶ—~ÞB[[¶þð=†††H’„\.Ç»G&M›ÎÉÐP:½òJž‰eˆEúRÞ1ªªÆ<‘X@ Š¡ª½ü—~þ¸4kÆGDZï€/þÇüŸw´dÎ]¸ÀÉÐ0Ô’Ä«žá‘ úS™|BBøKvv6¾‡þħ§7F††DEGãxŒääœèÝË++«'XŸ§;33Sëh-Z¶hÁ?·£4÷¸r•°Ó§III¡víÚôèÖúNŽE5°7éÞ=ÿåGRRõêÕãõžÞØØØè,ƒ……¹Î2=I‡@PbReÄ¥2›°Ó3sêêØÚ’––F[[>9œE‹¿,1¹—¯ó›o7ñǾ},Y´Î^%''G#Sܳ~é©©it.4ä5ðxvuëÒÜ͵Èýîܽ‹«‹ jµ¥R©9Þ¶Mk:vð ==£H9¯]¿Žà1T*mÝÝéôŠöÐÐ’â¥à1Ü\]HIIáˆßQš6mª3Fݼu‹€cÇÉÌÊ¢Y“&øx{!—Ë9ìçGËæÍqr|'/]Ž ++ öíŠãU1T @ (†Êrò¼m)))œúûozûôÄ‚6­[á¨%óÛÎß™6k6á—.“˜ÈüE_°Ï×WËŸúÈÜ.]¾LBb÷î? $4”Üœ‚OždÔØqy½_ìÜýÃG!>!¡Ä!<…çääp76ëš5‘$‰1~ÊT.ED“CÀ±ãŒ3–È7µtÔqõÚ5†4?™™ìÝ€a&òÆ e8áb‘2•¤ClÚŸcu¤²}ÿ´[eÅŒŒt¾õmÝÛ R©$)ï¯:¯>™ë®kÒc¿oün3»öìÕJªåË=éÙãó%_’––®‘OHHàó/—ò09Yç}:;|ò$AÁ!{%)/V­]¹‚>¯÷ÒzN†…1Ñd)•ÜŽŠfî‚…ìÝ@#£O¼ÜøÝfþØ»ŸÉ3fvúoÎ?_$Fùcô¸ \¸x‘””TÖ~³iŸÎF¥R±zÝz._¹¢UŽÃ~~ü¾g’¤;ŽWv},˦‹ª‘@ *€â^¢«+A'P«ÕôèÞ µZW·n¬X½†¨èhœ4àÞýûü¸e+ï¾=ˆéS&£V«‰ŠŽfè¨155E’$½d 3iü8’SRÉÌT°lÉbRSSY÷ÍFºuéÂ’E HKOgøG£ùþ§Ÿ™3s†Nû%@¥Êå|x¸æXzz‡ÿòãnl,Ã?üI’ؽwÞêÇìÓQ?šËhໃ9F“—kiÌol-]¾’vmÝùjñ“ÃøISX¹fÖ®.RI’X´d©f_¡P”¨C xÑcReÅfLŒR©D­V––Æ/¿ýFëV­¨ù(©^ßýð#Ûß…••Í]]ÈÎÎÖœ+éù_µ|+׬ådX=½zy½Ã¬¬¬xÕ³£ÎûŽ;š©3?eþ¢Ï±¶¶¦{Ú¹»ãÑ®-µk×."ëŸØùËV¬¬¬000`Ò´œ9I¿7ú’““£_¼”Éðó÷ç»o¾¦¹›*•Š…‹¿ÔĨû÷ïó¿5ky{àfL‚Z­æŸÛ·2|$'ÃN!“Ì@«<šc…c`U*k@ *œT¶ A™¨*/ýå…` Ú·ÇÂÜI’èòZ'þ·vþÇ1ôCÂNF­V3jÄpÒÒÒ°·³ÃÇÛ‹!'‘$I/™Âä5ÀÔzždqõ* ‰‰¬\¶”ŒŒ ä¼3p¾ÛÌìÓu@’ÈÌÌbÚ¬ÙZ‡kÕ²aÒ¸Oxݧ'ÙÙÙ|ûõZŒIOO×Ü_&“¡T*‹Ø'I7oÝâߘΟ«f*“É2ø=fÏ›Ojjê£Üã2ä]ûx_–––eùØUˆ=&UV ‘$ …B¡Ù<ÄÆï6cbbªÿÎÓ$ÛŠ"q)"‚k‘‘,_ú%K¾ZÆÒå+5 * Äg7';›í Æ»G÷=½qnЀÔÔÔG~{£NŸ9C†BÁ‡ïÖøÝ¡^=æÏ™]Ý:Z¾.ìCI’ŠÄñª„H¬ @ ‚‰OàrÄìíì˜:óñÿ†††øËk'$&bog‡¡\®i\©T*:;s"ä$€^2%‘˜˜„L&ÃÞÎNsL’$ê;9¡T*yðð!µŠ™—ÌÜÜß=»5ûr¹Ó5P*•š¹Œ233Ù{À—+W¯rçî]îܹ‹ªØ†7ÄÅ'°ð‹%<žm'¿WËÃ䔓bå¡C xžybÈÝ»±¬X³†«×®óŸA=j$jµµZÍùðpfýßã…MÞ4#CC¾^ý?š4nÌœY3ùtî<|ýÉ}z%?»&ãÕ­_­X‰"3“„„nýs›ÙÅô¬P«ÕdffÒν =ÚchhH\|<;~ßů;vbanΤñŸhämmkk%´$I È€ÒÅË:¶¶¨T*6Å'$`aa………&!¨R©èéÕ£Økª "±&Á3$66–ëׯs÷îÝ'ü:š×uÞÁÁ777êÕ«÷ -yÑ{‡”'þÇŽ!“ÉèÝËG«ñhkk‹` W®bjjŠ2;»H|ËOXI’¤—Ì“$ $IB©TjõÚPfçéÈŸ“H2¨ 4Õ*Ù&W(|<~"†r9ï ÈÞ„›‹ “¦Ï(bŸ$åíËår oȪ¹™Y›å ²«[§ÐuE{½•V‡ zò"×ÊŽ!W®^cöüÏhßÖ=;·ccmMVV–F¾e‹ìܶU#oZ£ /ÁÕÕ…Æ ’gz÷òaÃw›iÓº5Žõôzvó{t…†Ò {mÒ¸±Î„ÔÝØXÖmØÈø1£©ïä¤IÐYZX0~ìâ ;}š‰ãÆj]W\O½ÒÆËâô˜šš¡V©ŠØ\pq…Âóå/î +æU%*,±vçÎV¬XÁùóçINN¦aÆôïߟ¡C‡j*ž>Œ;–·Þz‹Þ½{W”©Œ5ŠÁƒãíí]a÷ȧ¼ü¢ ¥RÉ’%K¸|ù2›6mÂÒÒRkßÖÖVKþÇäÈ‘#š}™L†¥¥%:t`È!˜šš>•=@ Ð&..Žððp:uêD÷îÝK”OMM%$$$ïWF{ûg`¡@ ` íÜÝ9l¨Öñ”ÔT'0(ˆÖ/¿Ì½{÷ˆ‹Ã¡À—#®hþwrt,Q¦$òWç¼ríî­[kŽG\¹Š™™ulmŸØp{Ò¹ˆ«WIJJbûÖŸqtp@õ¨!™ž^üÐ%çõË psuÑ¿xù2gΞcØCJlH–‡ày¦2cˆ$I,[ù?¼{tgÎÌdffYØÈÐÚµjiöów’$‘›› ä%ЦNœÀÙóçY¶b%«WüW¯gÀ³ƒ'BBˆ¼q“oõ+¶——µµ5çÎ_ ìôiê;9iÙ“™™‰Z­Â¼زæiãe>NŽ(23‰‰¹Cýúíš9g.íÚ)Ó?·£¨ec­·­/*²*è¹sçpuuåÈ‘#ôìÙ“‘#GR§N>ùä^ýõ'þB_˜½{÷rýúõrµoõêÕ,]ºT³¿{÷nnÞ¼Y®÷ÐEiüRØF}X¿~=Ë—/ÇÍÍ ccã"û…9{ö,ûöíÃÐÐCCC ¸qããÆ£U«VDEE=m‘@P€ëׯãáá¹¹9¹¹¹%næææxxx”û÷ @ ПÊ^}ìyÙ"oÜ úßzz÷Ð4Hó·&&´oÛ–cǃðìàA­Z6¬\½–”ÔTÔj5~þœúûo?_õìX¢Œ® ÷¬hÔ°!-[4gãwßsïþ}$IâÒåöî?@¿¾}4 Ùôø\­kÖàvTYYYdgg³kÏ¢¢£ÉÎÎѲ‡Gÿ;9:ÒªeK¾Þð-qññäääpçÎ]¾Z¾’ø„=ËPx__b«ÞÉÅÊö}Y·ÊŽ!W®]ãnl,6ÖÖü¾û|ýÉ¡ÃG4[Ö£E ¾‡©Õj1ÃÀÀ€ùsæpõúu¶mߡ׳«V«éÞ­+Á'CILJ¢G÷nÅúÊÜÌ o/¶lû¿Žúk&ùW(2Ùç{ à`ú÷ëWäyÐÒ“wIÒ?^êÒc”{ëÖ89:²nÃF222$ ?ÿ·‡órË–X[[Fnn.’$qðÏÃܼu tê{Q7]THµ P¯^=Ξ=‹Y®ƒ ¢OŸ>øúúÒ¯_¿Š¸µ^œ9sF3)Àýû÷µº¢V¥ñKaõáÆtìØ‘%K–èÜ×EÍš5ùå—_´Ž]»v oooÞ}÷]ÂÂÂÉd¥²C º‰‰‰ÁÓÓSÓ-^ÌÍ͉­@«Á“¨îø|ŽaldD'OÏ">Q©TxuïÆé3g8Îü9³™»`!oÎa``ÀG#†³c×.$IB&“•(£ {;;~ dôø ¬^þ_æÌšÉôY³±¼\»~ظ85lHãFHOÏà̹³4¨_Ÿ:¶¶X?šŸ)¿qk``€™™/_æÞ½û89:âêÒŒ´´4=…Ë`bb¢µohhX¢A^Ûç7Þ¨l3ž9/rLªì’¯¿8’““u&ºòßoòíÒU¦´´4Ôju‰Ïn†BÁ{cÆ”ÉtíüÚý%“É033#C¡ âÊU vuëÒ¸q#Œ µ†±ŽEù¶jV÷”Ëå%ÆK]z Ç,cccär9ç.„“«K3jÙØ™™‰‰‰ >äÚõëXZZÒ¦U+ͽóýWXß³èàTÞ9r„N¯´ èØQFŽž\1‰µ·Þz‹€€¶nÝÊ›o¾ùĹÃNŸ>MÏž=±··ÇÝÝÐÐPÒÓÓñóó£mÛ¶Ek%Élß¾!C†Ð¾}{œùóÏ?i×®þþþ|úé§lß¾ÜÜ\Ú·oÏŽ;pvvfñâÅŒ›7ùß¾}ûxûí·qqqÁÍÍàà`ÂÂÂpvv aÆøøøàç燗—QQQøûû³víZ&Nœ¨³¬úúeÆŒElܶmcÆŒ¡K—.4hЀ3gÎpûömBCCqwwgÁ‚üôÓO( :vìHýúõ9tèfÿ‡~ nݺZ÷yRb-''KKKfΜÉ_|Q¢_æÌ™Ã7øûQ÷ÛíÛ·3xð`zôè¿¿?ß~û-ãÆ#11‘víÚ•Ú@ð¢³eË–Rÿ€ V«9tèH¬ •€?ˆk IDAT¯¯/>>>•mÆ ‰L&ÃèQ i}d “?½IþdÞ2™L3¥‰J¥Ò̃TÔ«R©4öªtLÞ]###d2™fXYIe(¼¯ŽêÎ_ýUmkÕ%&UT ©hžôìîÞ»-Û~e÷ö_1Ôs~uär¹Fç“f)‰²ÆËââ®L&Ó ™ÍG.—#´Zkq#4tż‰¿þú«Hb­B†‚.[¶ŒÞ½{3`ÀêÖ­‹··7ÞÞÞôêÕ œ$I 6Œ®]»²{÷nŒŒŒÈÈÈÀÛÛ›1cÆh’4¥‘OMMe̘1|òÉ'|ýõ×@^ïµ¶mÛâëëËŠ+ˆ'==½{÷±]©T2iÒ$ú÷ïÏöíÛ‘ËåÜ»wŽ;2oÞ<¶n}¼JÈ®]»ˆˆˆÐ¬Ööú믳k×®bCúúE—kÖ¬áã?fÓ¦M@^àhÒ¤ ûöíÃÝÝE‹‘ÀÍ›7ñõõò~(¸_ŒŒŒhРÿþû¯^~éÓ§Æ ãáÃ‡ØØØD:u %;;cccñôôÔôü+­ÿ *PÚRiæ%}žQ«ÕšÕPµ†.OI5pttÄÅÅ¥B~ù~j/"’$i­WV™Â–—$©Âg……úÚ[’=…uèÒù¢68Ou‰IC*]ÏnBb"³þo‰IIŒ> ÃG‰'}()‘_Ê/Kwóç§+¾ª@…$Ö\]]‰ŒŒäÈ‘#>|???~ýõWär9ï½÷›6mÂÌÌŒ .píÚ5¶lÙ¢É4›››3sæL ă´ôê#ïïïOjj*sçÎÕ\צM6oÞ¬•¼*ŽS§Nñï¿ÿâëë«éQfkkËøñã‹$ÖÞ}÷]MR(ÿ>G}j¿è"00P«7€R©D&“•z¶Ò`dd¤y(Jò˪U«4v8ãÇ3cÆ fϞͩS§èܹ3ZCzKë?@ ¨ ”ö娪$Ö"##ÉÌ̤oß¾OŠ!”–ŒŒ BCC‰ŒŒÄÕÕµ²Í@‹Z66 ý`ulkÓÑãÈj¤‚Ÿ I¬A^Ræ7ÞÐtÑýçŸX·n«W¯¦fÍš¬_¿^³çСCµ†EæW´„„-úÈߺu‹š5kj%lFŽ©—Ý·oßF&“y1kÞ¼9™™™ÄÇÇcoŸ7\¶àœlú¢_t!—ËÙ°aaaaDFFYáÝÂããã©S§P²_rsséСþþþtéÒ…«W¯òÎ;ï°uëV©U«‰‰‰ôíÛWsmYü'/:ÕµÇZLL }ûöÅØØXôÄ”+ÆÆÆxzzrèС I¬U—Þ!àÅ@Ĥ###úôòA­V£P(*ÛAP7n0qâDÖ¬Yƒ‹‹‹æxãÆYµj111øúú²~ýzMrlÙ²eXYYÑU8ñ¢¼¹¹ùSu•¬Q£†f<°QUAò»„—f¸AiüR˜ÔÔTÜÝÝ144d„ Œ;–6mÚЧOŸ²Q/.]ºÄƒèС Ÿ_úôéÃ/¿ü‚——NNN4jÔ///Ž;† õë×§Õ£ ¡tþ‚ªBYz¬U…—h¥R‰±±q•I ž$IÂØØ¸Â†W…çO TDLzñ$IôR«â”{fÃÖÖ–£G²ÿ~ç%IÒ$ÅÜÜÜ€¼Uwºuë¦Ùär9EV±ÔG¾iÓ¦¤§§síÚ5­k½¼¼X¾|y‰ö篲ªu<44KKKõðBQJã—„„„Ø6m=zô V­Zš>Ê•JŬY³°µµ¥ÿþ€~~éÛ·/‘‘‘lÛ¶.]ºÐ£GÂÂÂ8|ø°Vo5@ ¨ÎäÏ?¡Ï&“É*ÛÜr#?I(6±•÷&¶@ *‹rï±fccûï¾Ë矎ƒ ÂÜÜœôôt¶lÙÂÞ½{Y½z5—({å•W˜6mÄÑÑ‘¨¨(FŒ§§gÝúÈ{{{óÒK/1aÂþøã¬¬¬Øºu+|öÙg]Å Åqww§cÇŽLŸ>C‡áàà@pp0ß|ó #FŒ(s/«Òø¥°ù+¯FGGÓ¢E Ôj5k×®åêÕ«xyy•Éž|”J¥fI’ˆ‹‹ãçŸæÜ¹sìÚµK3ç›>~qww§^½zìÙ³‡o¿ý€®]»’ÍŸþYlRQ ª ù+:Éår½&n511A­VW™¾’$~e¼xˆz+ž'DLž?*d޵7bjjÊÈ‘#>|8fff( Œ™={¶ÖªÛ¶m£OŸ>4lØ{{{âââèСëÖ­Ó©»$yCCC~þùgú÷ï­­-666Ü»w¹sçÒµkW6lȲeËhÕª!!!Eî±yófúöíKýúõ©]»6IIIøøø°dÉ’gæ—‚6Ó¿úõ뇋‹ IIIxxx0`À¾ÿþ{š4iÂäÉ“ËdSrr2 Ðì[ZZÒ±cGèܹ³–lI~‘ÉdôîÝ›~øAÓc­fÍš´k׎‹/Ò£G2Ù(UGGG©W¯µjÕzbo4IÊ6˜˜¨×â;/¢1 xõV òééé?~¥RI›6mhܸ±æ\NN‡&77—7ß|“`ii‰©©©FF©TDRRÍš5£}ûöú¸C/ôñKa %::777Z·nMjj*‡¦M›6š¡šMEúE ª:±±±„……aoo¯W/4µZM||<¯¼òJ‘Ey*’èèèR_Spåj]øúú2hР²š$”ÈîÝ»5‹C•¾¾¾tïÞ½\u ‚§'00°ÜŸ÷“‚Ê'00N¯äåA‚ŽeäèÉ›X@ Mll,W®\!..:Ëd2hÞ¼ù3MªAÅ%ÖXV“‚ùã?ʽ¡}ôèQÜÝÝ111)W½ ì(•JΟ?··we›òÌ1I ¨\òãO;÷–ÀãÄZ… @ ‡*3´³´ˆá+‚ ggg®_¿N³fÍDCV xP*•DFFâìì\Ù¦T "& •Ç“âH¬ @ x&T—ÄZÀ±ãÖ>(“acc›« ÞÝ»W™)ª:-[¶$""‚ .••UÙæÕž5jаaCZ´h¡×"@U “‚Ê£`ü‰ÕÝ!k@ ž Õ%±v;*ŠÀ  |¼¯Ü-©%®^½Æ®?öp䯣,_ºä‰‹Wž”J%­Zµ¢}ûö"*<¨Õj²³³Q(•mJ¥ b’@Py<)þˆÄš@ ‚gBuI¬Êå,š?Oë˜[¶ýʺo6p!ü"mZ·ª$ëú¢V«9{ö,wïÞ½C‚ç€5jàè舋‹KµL,‰˜$TãOaDbM Á3¡:%Ö233‹óh×€¸øxZ·z€¤{÷8ü—IIIÔ«W×{zccc@Àñã¸6mFÒý{?Œ±‘}{÷ÆÉÑ£\ŠˆÀÆÚš7ûöÁ¶vmÍ}¢¢£ñ!=ûðîÛƒhîêJnn.K—¯¤][w¾Züdçä0~ÒV®Ydžµ«‘Éd$Ý»Ç/?~\.'*ú_†J•Ë›6"I^}•™sþظxìêÖaÝ7éÖ¥ K-ògÃ?Í÷?ý̇ï¿Ï¶í;8{þ<íÚä-´ “ÑËÛ›q“§<Ñžê†R©ÄØØµZ]Ù¦ò¾GŒ«í0H“‚ÊãIñG$Ö@ <^„ÄÚý¿þ"þ§ŸHöóÃ0Œý-ø¿¥·7FC‡’Ý»w’$‘››Ë²ÿÓ:ž““CݺuèÛ»7¹¹¹Ü¼u‹cbX8®fبL&cÈà÷˜=o>©©©ôèÖU³ú]Ý:¶ôôö"##€zöv@^ƒëʵk$$&²rÙRÍy¹ï À†ï63÷ÓY4nÔˆ àÚ·Í–DçN¸[¢=–––åãèÑ€ž/^„ï’ŠDÄ$ ò(.þˆÄš@ Á#.ΙCãÞ½©ùþûÔŒmòGçÕff&“Abb2™ {;;ÍyI’¨ïä„R©$éÞ=zõôæ×í;˜<~)©©œ¿Ί¯¾$..¾D{ªcb­º7âÁó…ˆIÁó‡H¬ @ x&¼œÜ\2’’0ÉÉAnhˆ$a RAn.j åÜ9¤§ƒ±1¹*ò'”)99YkßØÈˆw`ÞÂω‹ÓÌq6iü8ÌÍÌ ÊÀ@f€]Ý:šCù¾Ëÿ«VKEü)I`bb‚$I(•JLLL4ç”Ùy=ÞT*=ºveæï8NÌ;ØÖ®{›6‡œ,Ñžá3,oªc™Áó‹ˆIÁó‡H¬ @ <âåùó97y2FÙÙ:‡€šu€FFÔX±‚œRèV«Õ˜=JX©TjœÔ@.7ÀÍõñÒí/_æÌÙs û`H©í¯ïäÀ•k×poÝZs<âÊUÌĮ̀ck‹L&£UË–‡„r;*о½_G•›«—=Õ±AWË,ž_DLž?DbM Á3áEh 4<×Q£ô’U(Hæ>Ó…®òæáLNI¦õË/ÓªeK¾Þð-‹~†míÚ$$$òÕò•´lÑ\3Ž$IEz¬ü¿àßF ѲEs6~÷=K- v­Z\ޏÂÞýè×·FgOo/6núEf&óæ|Š$I89:êeOuãE¨· ú b’@ðü!k@ ž /Bc ++ë©W›Ó•ËÇÁÁ™LÆž}ûiáæÆÂùs™:óS>1 k6ƒ‡ÇÊÊŠ””<;t`Ôðaškº¼Ö‰Õë¾Æ½ukêØÚ¢R©ÈÍÍÕÓžêEu-·@ x>1I xþ‰5@ ž!±±±\¿~»wï>±¸¹¹Q¯^½gh¡àiùxä&Žû„‡9giaÁß!'ÈÎÎ&==+KK~Ûò/_æÞ½û89:âêÒŒ´´4$Ibß®ZÉ>¹\Ι“Á¤§§khP߉3'ƒIIIA¥Ra_·.»¶ÿJxøE<|ˆ³sš¾ôééé;ÌLM :Fnn.iiišã%ÙS)rþ˰S§‹=ߥókôèÖõ©ïó¼””Äo;'òæMÒÓ3¨goGçNxݧ§ÖÂ%±bÕ^ëô ž:T µeã̹s;άiSŸ(qå*ûäæ­ÉÀÉщýÞ¤u«—Ÿ‘¥ÏúúLðdªJ,Þ±kW¯^Ç»Gw^ëôj‰òúÔŸÒÔ±˜;wÈÊRÒ´ÉKO”Û²íWÔj5Ã?ü È¹Ÿ¶þBLÌF4»ºuK¼giÑ7–®^÷5<Úóª§g¹Û Ð K¬Ý¹s‡+Vpþüy’““iذ!ýû÷gèСšÉzõaìØ±¼õÖ[ô.fÕ­ò`Ô¨Q <ooï »G>åå](•J–,YÂåË—Ù´i–––Zû¶¶¶ZòëׯçŸþaåÊ•:íœ1c3fÌ }ûöOe—@ òˆ‹‹#<<œN:ѽ{÷åSSS É[åÑÞþXX±T•Æ@I(  …Îs’$qÿþ};J¥"--fMšàÒ´)jµš””Íy]ɹ‚×äææjËÍÍE•‘›« ¨T*RSS‹ØñàÁƒ"ºK²§:RõöÆ­[œ ¡G÷n:ÏÊŸ‹çã÷Ý ÌÎæƒÁï•YGä›L˜: {»º¼îヹ™7nÝbÅê5øù°bÙR d2½t8‚³s:z”ŸoÊ£Œ±±q3sê”be~ݱ“ßm¦õË/Ó­Kg²³³9}æ ¦Ncâ'cygÐÀ§²áECŸ JæyˆOKvv6?nÙJF†‚{÷ïÓéÕWJ¼FŸúSš:¶î›8;7 ÉKŸ(w!<œ\•ªÈ¼§«¿^ÏÞýøü³ùØÕ­[îŸKibiHXööö¼Ò±üëFyÅÌŠÒ÷¼P!‰µsçÎÑ¥KêׯÏ!C°´´äÒ¥K|òÉ'üúë¯9rDï_«öîÝ‹««k¹&ÖV¯^Mff&sæÌ`÷îÝxxxTxb­4~)l£>¬_¿žåË—3mÚ4Œ‹ì&44”3gÎèL¬%''³cÇÞ{ï=‘X‚râúõëxxx`nnNnnn‰òæææxxx!kUœüÞgå…$IO¥³¼íy‘)z+C†©™‹æÏÓy>77W¯˜PÑDÞ¼IffæS•ù‡Ÿ·PÇÖ–­?|¡¡!’$!—ËñîуIÓ¦s24”N¯”܈ÎC†L&+רQe@&Š·íÚõH6}ÿc?þˆ‘Æ¢R©ÉdŒ;†¥ËWðͦïèÜ©vvåßËå¹¥Ÿ ô£*ø/ød( ú÷{“}|‰OH(¹Ç—>õ§™¬¬,nܼɱ `BO¢QÆ%ûS&CVHçºo6²wÿ–,ZH—×:UHü.M,•U@¬Ì§Übfé{^¨ÄÚ‚ ¨W¯gÏžÕ¬~0hÐ úô郯¯/ýúõ«ˆ[ëÅ™3g´†CÜ¿¿TÝÒËJiüRØF}¸qã;vdÉ’%:÷@P¹ÄÄÄàééINŽþkIš›› ‚'Q>/ÿy:233‹•ˆŠŽ&âê5zöè®ùA4C¡àØñ ÜÛ´Æ¡^=’îÝãð_~$%%Q¯^=^ïé–ž›·npì8™YY4kÒo/är9‡ýühÙ¼9NŽŽÙK—#ÈÊÊ£};BBøKvv6¾‡þħ§7F††zݳ wîÞÅÕŵZ²ÀâmÛ´¦cÒÓ3´|ªþÒÊ烧)ã¹ 8†Z’xÕ³£frÃâêÇO¿ü‚£ƒ ~¯HÖF çˆßQBOâ­7ßÐŠŽÆ?ðÉÉ)89:л—VVVšóÇãÚ´I÷ïqüD0ÆFFôíÝ'GŽr)"kkÞìÛÛÚµK-ŸOÄ•«„>MJJ µkצG·nš‡ Ú¡ÌVrÄï(999´mÓ¦H¯£ÒúL UÁ~þ¸4kÆGDZï€/þÇüŸw´dô©?¥­c!¡a¬ùz=À£ö¿¤·?óå¾ùvìÛÇ’E éÜéU­wºâbIø¥K¤¦¦Ñ¹Ð×ÀãAØÕ­Ks7×"÷+m,¸vý:þÇP©T´uw§Ó+ÚCCKŠ1þÇpsu!%%…#~GiÚ´©Î˜YÞß3U É&EFFÒ®];­ä@ïÞ½éÙ³g‘¡wîÜañâÅŒ;–ÿþ÷¿$$$ò.\`öìÙLœ8‘üQ“EÞ¿?·nÝ"::šÍ›7“ÍñãǹsçŽÖõÌŸ?Ÿ1cưbÅŠ"Ã.vìØÁ­[·¸|ù2³fÍbòäÉìÛ·¯\ü¢ËFÈëa6þ|ÆŽËçŸNdd¤FÇ‘#G¸zõ*‰‰‰lÞ¼™Ý»wkí—6IW˜ÔÔT6oÞŒB¡`ûöíŒ7Ž9sæñTz :!I’¦gо[vvv•Y1uK±‰­"¶ç¹Þê£ËÖÖ–ÞÂ?oÑûæÛMìÚ³—:¶¶\½váÆÏßEf&{÷`ØG£‰¼qC#ïxŒÑã&páâERRRYûͦ}:•JÅêuë¹|åŠÖ=ûùñûž=H’ĥ˗IHLâÞý„„†’›“£×= o >y’ àT*•æxNNkW® Ïë½4ÇJÒ_ØgO냲–ñ·¿3mÖlÂ/]&!1‘ù‹¾`Ÿ¯o±Ÿiff&gÏžã>½ÉÉÉ)rÞÌÔ”ã~Gx{àͱà“'5v\^OE;wÿÁðÑcˆOHÐÈlÚü«Ö}ͪµ_£V« â“I“™·ðsöìÛLÆžýû™<}&¹¹¹¥–—$‰1~ÊT.ED“CÀ±ãŒ3–È7µìøuçNæÌ_@†BAtL s.b÷Þ}eöÙóò¼¿Tv¬}Ú-%%…SÿMoŸžXXXЦu+üµdô©?e©c>Þ^ø>„ÿáC8<š¿¶Äº&=öûÆï6³kÏ^­¤š>ñ)66ŽÏ—|IZZºF>!!Ï¿\ÊÃää§Ž¥'Ø¿è ²”JnGE3wÁBöî?Pª³ñ»Íü±w?“gÌ"ìôßœ;¾HÌ,ïï™Ê®eÙtQ!éAWWW<ÈÞ½{yóÍ7µæû믿´dOŸ>MÏž=±··ÇÝÝõë׳lÙ2üüühÛ¶mÝúÈoß¾!C†Ð¾}{œ™4i?ÿü3þþþCnn.{÷îeðàÁüç?ÿÑ$êöíÛÇÛo¿‹‹ nnn¬\¹’•+W†³³3Ÿ~ú)>>>øùùáååETTk×®eíÚµLœ8ñ©ü¢ËÆŸ~ú‰1cÆÐ¥K4hÀo¿ýÆ—_~Ihh(îîîœ?nÙÊ»obú”ɨÕj¢¢£:êcLMMuÖ„ÄD²sr°·³Óy^’$­ysrrX÷ÍFºuéÂ’E HKOgøG£ùþ§Ÿ™3s2™Œ¤{÷øåÇï‘ËåDEÿËà¡ÃP©rùaÓF$I¢Ó«¯2sÎÿ_jy'GvïÝÇ€·ú1{ÆtÔj5’$1ðÝÁœ ÓÌE%“É8~"˜Û¶b]³&L™1‹Á! è÷f™|&ПÝA'P«ÕôèÞ µZW·n¬X½†¨èhœ4Ыþ”µŽeggkMu ¡¿?¿ûáG¶ÿ¾ +++š»ºhë)!>­Z¾Œ•kÖr2,Œž^=€¼ÞaVVV¼êÙQ§ úÆÒ|nýó;ÙŠ••Lš6ƒ!'é÷F_½c 2~þþ|÷Í×4wsC¥R±pñ—š˜yÿþýrýž©JCB+¤ÇÚ²e˰µµeÀ€8880dÈ~üñÇ"CY$IbذatíÚ•Ë—/³}ûv®\¹B³fÍ3fL½úȧ¦¦2fÌ>ùäN:ÅÎ;9qâAAAøúú²bÅ ºu놧§'¾¾¾˜››kÝC©T2iÒ$ú÷ïOxx8¿ÿþ;—.]ÂÌÌŒyó´çÅØµk'OždóæÍ=z”^½z±k×®§ö‹.׬YÃÇÌñãÇÙºu+/^ÄÎÎNÓKnÑ¢Eôîݛ֭[ãëëˆ ´öë–Ó*%—/_æÒ¥KìÙ³‡+W®àééÉ”)SªTÃO *’ÒöX{æ]ª3åõë¶DÞPP]›¤–P«Õ´iÕŠ~oôeÙÊU¬X³†Ñ£FâäèÈÍ[·ø7&†áC?$33“ŒŒ rsr2ø=®GF’ššÊßgÏ’¡PðáûƒIKK###‡zõ˜?g6vuëè,Ï£#H’ô¨“—HÉÈÈàÆÍ›%ÞSWYë֩î߶±jùééÕƒ7oòßÿ­â݇±dÙr²²²$I¯2´¹<|P–2†:Z­fÔˆáövvøx{[?²²ò†mYZXèU?®\»FBb"#†~@FFÈ xgà‚‚C´>¯ݺ¢T*Q(Ô­“·0YOo/222P(Ô³·Ð +¼$I|ûõZ&û„ôôt <@&“iÎçÛáãåE ÿ0ñ+IDAT ééé4iòYdÊâ³òè1R]¨ìÞ:O»ùÒ¡}{,ÌÍ‘$‰.¯uÂÀÀÿÀczןò¨cõ“¸ÁÞ¾,_ú%2K—¯Ô’))>ådgÓÁ£=AÁÁýpì>Þ^švYci~Yzy÷ÄÈÈHóL¾Ô¸1YʬRÇŸžÞ87h@jj*Z1óô™3åú=S\ÙŸ÷MÖc-22’#GŽpøðaüüüøõ×_‘Ëå¼÷Þ{lÚ´ 333.\¸Àµkר²e FFF@Þ\23gÎdРAE†Œê#ïïïOjj*sçÎÕ\צM6oÞŒƒƒC‰¶Ÿ:uŠÿý___M2[[[Æϼyóغu«FöÝwߥޣ.¤ù÷9zôèSûEXZZjö•J%2™ì©‡x––)S¦hV555eÁ‚x{{séÒ%Z·nýLm‚ÑcM ¨ž˜™™ñß/uÏ{›••…J¥"77— cÇ0hðûÔ´ªÉ»ï¼MNv6qñyÓž,üb‰Ö¼Àù=&&§Ÿ€……š¸¡R©èéÕ£ÔqÐëžßMóQ«ÕdffÒν =ÚchhH\|<;~ßů;vbanΤñŸè¥¿´ö”äƒÂ~ÐGgBb"övvʯܪR©hèì̉“:}gcm À«úæsëŸÛ¨T*š5mBbbRÞêÏvvšó’$QßÉ ¥RɃ‡©õhη‚ ’å—ÇøQ»¨à±ü…WK+Ÿ™™ÉÞ¾\¹z•;wïrçÎ]T:¾‡lmkk}?Iþ/‹ÏÕƒøø.G\ÁÞÎŽ©3?Õ744ÄÿØ1F ýP¯úSQuì|x8³þïqgšü•{ ùzõÿhÒ¸1sfÍäÓ¹óð=ô'oôÉ[`±¤Xòàa2^ݺñÕŠ•(23IHHàÖ?·™ßSLúÆÒ|lmkk½gI’È{°KcêØÚûQÞß3U‰ ›)ÎÈȈ7Þxƒ7ÞÈ›óŸþaݺu¬^½šš5k²~ýznÞ¼ ÀСCµ†EæOìZxî4}äoݺEÍš5µ^#GŽÔËîÛ·o#“ÉpuÕž@°yóædff¯Y™­~ýúzé,ˆ>~Ñ…\.gÆ „……Iddd¥ôbhÑ¢…Ö~«V­€<¿‰Äš@ ”Lic·H¬ •K¹ÔÛG:ôùA4ìôi2™¤¥¥sîÜyZ¶h®yï4~æ„}4ìÆ®nLMÍPëHœôºð¯íù“n.£$IzݳðuwccY·a#ãÇŒ¦¾““¦QiiaÁø±cˆOH$ìôi&Ž«—þ|×ék>>(mMMMQê˜ë2_§®úak[›ºuëráâEºué\ä<Àìyóquuáóùó011A’$”J%&&&ï‘wüù• Ú^ð¯Z]´EÁ]}å322øxüD årÞ4ÿ¼=7&MŸQ¤¬Å­@(IR™|&ПÙþÇŽ!“ÉèÝËG+ekk‹` W®êUʳŽ”mÙ¢;·=îHcZ£ /ÁÕÕ…Æ ’gz÷òaÃw›iÓº5ŽõôŠ%ù1-4ì”fØk“Æu&¤JK‹+KÁce1…õ”÷÷LU¢Ük7nÜ`âĉ¬Y³ÍñƳjÕ*bbbðõõeýúõš ¸lÙ2­Õ(ò)œ¸ÒGÞÜÜü©²¥5jÔ@’ò&4*ðkN~e.¸êGiV-_ “ššŠ»»;†††L˜0±cÇÒ¦MúôéS–"jËåÅ6ðòËY0 h%/¸oXEVó‚Ц,=ÖªÚˇ@ ÐMJJ +W¯eüØ1ܺ}›å«V³iý:œä½Ë帹>~¼xù2gΞcØCprt@‘™ILÌê×wÒÈÌœ3vyóŽ?ÿÜŽ¢–µN[ô¹gáØdmm͹ó;}šúNmÈïy¡V«°°0×[ií)Éÿy{Pt:rïÞ=bãâ4“\ޏ¢Óo×`ìÓˇßvþÎ;âè ýƒÿßgÏòàáCÍŠ}ù+n^¹v ÷?TG\¹Š™™ulmŸÉ÷@ÄÕ«$%%±}ëÏ8:8hzù¥§g”JOY|&¨øÒÎݑÆjOIM%ðøqƒ‚hýòË%ÖŸŠªcF††Ô®UK³ŸŸ¸“$IÓnÎÉÉaêÄ œ=že+V²zÅõŽgž<8Bä› |«_±ï„¥‰¥úP^1¦¼¿gªå>Çš­­-Geÿþý:ÏK’¤Iй¹¹`aaA·nÝ4›\.'  ÈdûúÈ7mÚ”ôôt®]»¦u­——Ë—//ÑþfÍšy+p$44KKK ,[Jã—„„„Ø6m=zô V­ZZsO”… UdÈ-Àßÿ  Y¬!Ÿàà`­ý   à±ß@P2¥™_M–?>ç§FZóˆMlå¹eeeQ£F ©»åaä5Æ‚O†êÜ·‡#I+׬ÃÉÉ‘þoõcü˜Ñ(•J¾ÿégœiÕ²%_oø–¸øxrrr¸sç._-_I|Bjµ÷Ö­qrtd݆æÅ‘ðóà|x8/·l‰µµ5!aašÕþy˜›·ni&ïη3¿ç‚>÷,\Ns33|¼½Ø²í7þ:ꯙ˜Z¡ÈdŸïA‚‚ƒé߯ŸÞú}z˗䃲”ñUÏŽÔªeÃÊÕkIIME­VãçÀ©GïÊÅ}æ ~Úµj1ëÿærêï3¨T*rrr8}æ +W¯Å¡^=zzy!I6¤e‹ælüî{îÝ¿$I\ºÁÞýè×·Ö,ºêVáãùû¥•·®Y€ÛQQdee‘Í®={ˆŠŽ&;;§ˆ¼ÖV@oY}VÚgªºRÙñ¶¬[äDÿCOïE晬abBû¶m9v<Ï%ÖŸò¨c€Vü“¤¼¹. ¾ƒ©Õj­º¿0ή^¿Î¶í;ôŠ%jµšîݺ|2”Ĥ$ztïV¬m¥‰¥Å=×ù%,mŒ)¬ÇÌòþžyQ7]”{7#Þ}÷]>ÿüsììì4hæææ¤§§³eËöîÝËêÕy«ü¸¹¹ñÊ+¯0mÚ4<ˆ££#QQQŒ1OOÏ"ºõ‘÷öö楗^b„ üñÇXYY±uëVøì³Ï4ºŠë©åîîNÇŽ™>}:‡ÂÁÁàà`¾ùæFŒQª^jeõKak=ÊšGGGÓ¢E Ôj5k×®åêÕ«xyy•ÉÈR»|ùr ĺuëhÑ¢J¥’ƒ2{öl^}õUÍPÏ|Ö®]K¯^½èÔ©W¯^eΜ9ôèÑC$Ö@d2jµ¹\®shRaLLLP«Õeþîyžpvvæúõë4kÖLk‚@ð´(•J"##‹üX^÷]*€B¡`ábÝs¬½Ô¸1o½Ñ—¿Ïžå—¿G™•…ŸÎ˜Î§ÿ7—×:½ÊÂùs™:óS>1 y&Æ&¬X½†å«Vcbb‚R©ÄÐÐá~È[oô%++‹ÜÜ\½õK’¤—|I>ÈÍÍ-ue2óçÌfî‚…¼=x¦¦¦ðшáìØµë‰õãëÕÿãó/—2wÁBäæ‚R«Õ¸6kÆ ?CV lsfÍdú¬Ù :+++RRRðìÐQǺG¤€æxÁcš#¥–oÖ´)ݺtfî‚EÔwr$9%7Wºwí‚ïŸR·nô{³ˆŽÇФ§ö™ d^TÿÂØÈˆNžžEÊ R©ðêÞÓgÎp><¼ÄúS>u¬ðsQ‚t¡˜Ô²¹ï À¶í;èо^ñ¬£‡F††´lÙkëb§û(M,-pQ±q¹T1¦žÂ1³¼¿gLMMõòÿóΣx.qëF^·I›Úö¥RP«@WÉ|ÒÒÒ˜:u*?ýôjµ333 ÆÆÆLŸ>%K¿Tܾ}›>}úpóæMìí퉋‹£C‡̨Q£ˆÅØØ˜œœ¼_£|||زe v&8¼yó&M›6eÔ¨QlÙ² >|HÆ 9räˆH¬ `iiI½zõ055}bo4I’4s{¦§§Ó­[·gfgttt©¯Ñ5‰yALLLˆˆˆ êQO ¼¨Q£ 6Ôü@XžøúúÒ«W¯§ÖcfföÄu¹¹¹(•JÌÌÌHMMÕ ¥122ÂÒÒ’ÔG=2ÌÌ̸xù2÷îÝÇÉÑW—f¤¥¥i,†††ÈårÎ]';;W—fÔ²±!33<|ȵë×±´´¤Í£Oår9iiišû'''—Ö/·ÄÐаÄ{F&“affF†BAÄ•«( ìêÖ¥qãFjæF†¼iUž¤ßÚÚš¬¬,MÌ(I¾$”µŒFFF¨%‰sç/ V«içÞLLLHNN.ös500ÀÜܜظ8nܼ…Z7¹zãFÈÈÈÐ2%—Ë1©Qƒðð‹ˆˆˆçÏžÆ×ß~·yc `Ýn7Úív-ÿ‰¢º†ÃaÜÜÜ,qrrÇÇÇoýu7Ñjµ&«_ó®ÀH’$Ò4$I&—25›ÍÉÊ©é}ƒ§ï"9½¯î²÷ÌÓh4¢ÙlNž7»9ö:Ç´îãAÑcL’d²ÿòø‡èUÇ="rïN:[w£Ñ˜Ü%¶ Ó5ÜÞÞNŽ}Qíy6³eúýþƒm¬U-“¶e•óg›çXQ‹²äɯ¿ÅO??Ž'¿<Žtf/óyÖÉÒeŠfÌlfnã{¦Núýþ5;Îwâúúz+Íئ*LÔ¦-›ˆŒF£¹ï´HÞª¿"“Ÿuš0ë¾þ&cQìG£Qá‘«Œûø=ª0Ñœ =öMÆŒùª–IÛ²ÊùSÅs,ï3üÏÕU|ÿÃqõòe|óÕ—‘¾j<­b݆ö"E3fvŒ·ñ=Swk[ðîîn|ñùgñþ{{ñá£G¯]ÆÉý ±s<”Õ!@=ȤúiµZñé'Ç1­Ü¿§4Ö`“X JdRýŒoHÅýe÷`(ÀŠ5˜Ãê JdTÆÌa T‰L‚êq)(`Åäèt:1 bgg§ìR€W²,‹N§Sv¥IP®yù£±9z½^\\\ÄÁÁ‰,T@–eqyy½^¯ìRJ!“ <‹òGc rÅùùyœÅ`0(»xð:NìïïÇááadYVv9wN&Ay¦óçÅß½ö·7kÿýûâÎ €*ÛÛ}'övÊ.˜2;©}Hd”+/ܼ H#"þüã÷xþìiÙµ@m$1*»¨›ÿGŸh¬€QÚÊIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/OrnamentsPalette.png0000644000000000000000000000013213135434036020721 xustar0030 mtime=1500919838.099981806 30 atime=1500919916.009981806 30 ctime=1500919913.356648472 denemo-2.2.0/docs/images/OrnamentsPalette.png0000644000175000017500000001677713135434036022614 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRî\æŽ gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>ÏIDATxÚí]w\×Ú~gvv—]Ú‚€ b©š(¨ Ø»ÆëµEM¬ØSnšF/ÓÐÄX"¶Ä–¨‰1ɽјˆ+"64–X°€h¤nŸ™óý1»ëÀv—™î·üüÍžç9gÞyçì{Þ9sC .4}à Ý\àûÚ5) Ý\¨sçÎ3-ĘcýúuÑÑÑ;wñððhèvº`+îÝ-øý?zöèÁ¡fæÙ³Ó§M“ËåÜ6•CY­V[\\ü°¸øý÷ç²Ë X¿~]bâ4ww)EQjµŠÛcpWàFÓ4—‚8ŽâV“[Y‚ Z·nݼyóµk×°½™€èè©TªÓé¸m½ Nã" „çÉÎeE"QPPP S¬Y“CQ$·MwÁ9ÀqœæÆî³ñË6`îðôôT©” }R\p8ŽÓ<ôÊÜjò$K…5>MÓ®ìrŽãˆÓ¸V p+ó$Ë.?nºÀqœ¦¹<}†H€c—àI– —+7mà8޽2§šüɲ¡we—77Q0Ã>õA-?ç²l¸zå¦ Î‡}úH€k—¨SV EQuZãÊ4¸¼¹iÂùþAƒ‡XúêØÑ4ÇdA||‚@€ÿõ×_eÏž1…>¾¾;v¤(úü¹³¶x³!ÀàжA«ÕnÙ²%-íhQQQË–-G9mÚ4aÍôJ£MÓ}ûömè†ðŒ«G¯l­Óµ*Két! Ã;uоvíê³gÏ|}};uŠ„(­N‡aXµ€øWšo:EMš(—Ë7mÚØ£GÏ‹/Ξ=ûÚµë_½Á–F78.\¸0kÖì{÷î’dßZâ¼WÆmËšÕšyÆÌï±Â².KRÔÁƒGŒãxttL~^^»ÐP iúàÁƒ‰!ÔÙrC¬ìÜ~y×®]—/_NIIéׯ¿Z¥ê½háÂ…‹#<"òTzú¬Ùs:wé:üŸÿ¼qóæú âº÷ë?ÀHÏ8sæµ _öž½z}0Aé³gÀJï¼ûÞ™ÌL /zøðÚõë£Ç¼Ò»OßAƒ‡Ìš=ÇifC2ŽÃ?θ„Å¿±¥Ð.Y™Ì[£QŸ?ž  âüùóZ&ó®³15\™ÃËÚÈåò€€777ã&©Têëë{óæM‚¾óÎÛ*•Цé·ß~§´´” ˆ &þý÷š¦ƒƒƒ pÿþý71#ܹsçíÛ·ï§Ÿ~º~ýúÚµkq\°uë·™™™4MÏž='==½²²2''wôè1ë×o())),,Ü´i³@ ÈÌÌœ9sVRÒ¿ÓÓÓIKKKûì³d ÃFŽi©ÆÍ›7…„„ÀãÇ?~5oÞ¼‚‚‚ .lÚ´)==]"‘:ÇŒ†^™ÓɆ¬™%0UÛRh—,MÓ!!!Ý»wgb6’$»wïb¶4¢Ÿ2©™Z A:N €!Ͻwï^µZ]øà®·øøx¥BÑ-.nß¾}>‰Ä*¥âÄñãB¡¨²²2O~ŠŠŠÄbñžÝ¿}yX~~þ¥K—d2ÙÞ½{“’’Zµj•––vþüùY³f‰Dâ;D7ÞØŒŒŒ 7±›J¥´R£ñ⯪¬€P(Ë—/Ÿ9cúý©A8'`Ó»2§u‰l›,av+¬:eýüübcc0Š¢233pÍÊÊ*))±¥å†XÙ¹ƒ­víB._þS¥RL£Ñ<}ú4!! ? ‰ÔjUëZ³gQ“)‘J€fæ[üuãÆêÕ«=<<ÇŒÃ.g®Úàààêꪑ#G$%%‰ÅbŸž={wcÌ”““#“ÉŒUÔJé˜Öø|OX³&eÁ‚oܸqÏž=K–$Gµ¯vÚÏœõaߨÑcL ÿø}¯A&ÕPç°oäÈQ¦…VXÖeA—.]0š¦SSSŸ=+}úô)3 ìҥ뱣i¶$ã †sÿFŽû÷ïǘ’C‡!„ÆŽKQT. !DÓ;QPkŠÐܹó îþ¸sç˜1£kìfMQ8ëZeo‡‡…@zzzUeEeE9óWUYQ«ŠÚ@§Ó1_>xp`êW_­*))IJZˆa˜sÌhöYú3{Ê­ìOÓÈ اY§²uY’¤H’Ôét©©©Šêj?EuujjªN§#I’$)[Ó0½òرc>œœœÜªUË;t¸~ý¯•+WõéÓg„ <ÆB’dYYÙæ-[r²³ÁÐÛˆ9sf§îß¿páÂ…IIQQ‘…EE?ÿüË÷;¶[g‰„Bøå—_ºÅÅúùù}¸ø£2$99¹U«V‰´JWáKâ8ÎŒ“ÌÂìÚíBÚYdºO{5ëT¶.KÓô÷ßï///___ðõõ-¯(ß¾}´jÙJ`C2N0dÈN;a¸S½Æp|øðáA|÷ݶuëÖŸ¿pa„ +V¬@ˆV«Õ«V}•™™IQÔíÛ·ÃÂÃ}||Ö®]{útEQ¹¹¹ƒž7ož\.W(J¥2®[œ¿¿ÿÅ‹ïÝ»7qÒÄ .Ëåò[·oeddPuëÖ­¡C‡¾ûî{ùùùJ¥²E‹G»xñ¢R©T©Tƒ‡ îׯ_~~Áž={öï?ðèÑãñãÇwŠŽ^¹j¥• !‘“••%ÏËëÕ»×_]ß²eëŽß·iÓ&%%¥Y³fZ­Ö fÔiµOž<Á-én‰›‡‡GYY™]šu*[—žžžÞÞÞÆB©TÊ …BK²¥¥¥LP XJÊê©S¦DÝ^ÏÄnnB¡Ç1šF:V£V3ån‰Xì:N­VÑåæ&»1%Z¥B!•º E"ШÕjµJ(I$RDÓjµZ"•b¦ÓiiЋŀa:N©¨–º» …"@H¥Rb8îæ&„4Z­n©ñŽ¿V«ÑiµÖk‰ÄÌ·Eª”J©ÔàL´§V)mœ6PO(Š7n`—݇§G€¿AÁ]n›Ê“ì­Û·ŒO_æ`@ø²F­6º/j•J­ªi¨Õ*vì¡T*@©0~Ôiµ:CG¨«Ð²YÏ) Às »^Š¢ÕUµÛ`µF­V£ÕjŒŠê1 Ó¥q(hˆ8öždÙh°9.Ô†Á±+ ÖcåF%ËFÃܸvH$///FS)#p~|Ž'Y6\ó•›6|||>|(‰¸š†Ug£QɲázФi£Y³fjµº¤¤D,Q‡nÚ†X,æ¯x3KÄÛÛûîÝ»Jåÿë x¼J\pH’ôððèܹsC7¤píúuã¶+Vþ_EQÎÉd7f¸ÖWváÌ$O(|Xø´ô)Wi±XìßÌ?¸U0Ø©ì|"'t¾¥Â2r+o=TT(ñü•·”èÐÒ½w„ˆ[Çà ÏÌ–’²ºoÿ~B¡0",‚«&I’9òRG€]ÊÎ'rBç[ª Ú[(‰ qSV«£Ž\}D’º nƒ+-“~ò”ñÆ5–’²ºýKôÀáÊqLJèÜÅsÆ.eç9¡ó-uêa³_‰Â“–öÃ0LGc[ÓòÚ»?àÖ18l!c™«—¯Ô˜ƒAR$Žã><Œ Pv>‘:ßR %àZ-©Öhäò‘sSp6Œ6H•WðþœU­È¸qú±Y`è«9l4†a`v+;ŸÈ o)0HuhÅ·o¿˜Õ«Gw¦Ýœ;Wxnxé•k[™È o)c¯,óö® - ‚ÃCà f[ÅW¬ ¨Æ¥Q9¡;EêæíìÛGÕK°.t‹íÚ$be¶eàÀt×ü4×aeç9¡ó-UáÜX™?Çà¼õÊ,¸F~õfjÉ·o]ȺÔ#!ž'kð 0àg=䨲ó‰œÐy“2üç¤X@ÿè2_ŽÁj^b8¦Ï„s @*;ŸÈ 7) @ú¼²Ù]H’ÜþÃ΂»wë_›>¯Ìx OŽa3.deõì?°´´Ô’ej\„`è•§É8ý†ÊÎ'rBç_ŠñdTV^nV°àî½í?ììÙ½{ýO"I’B¡PŸŒãÚ1춘=›}„‘—©÷æ®™FJä„ο”þÌu°¾¸#— …¶m^¨¥/]6vzf¬¿EÂSÛVv>‘:oRÌÊÈÛËËTðÜ… Ë¿Z ý†¼Ü=¾Û—K—¤¬ßp;;gæ´Äõßl:xPâäI¶×EdÈÅqrûüïî=OKJZÏHœÒ#!!ëÒå.ÞóóO_¬\y;;§EPмwßéøÒ‹€úa×O©V+Ñ_êÓ«èRµíàJ_pGçUêVv¶éWa¡¡-[´èݳǚU+þõÆ —ç)•Ê_~ýuêä‰Ã‡½lWEq]»jäà~OM]ÿÍÆýú~ºxQh»>M¾•…á$/[Ö-6váüT*Uò˘ýÿ³{ÏŽ?öíÝ룅Iîîîë¿Ùh{]úX™ó^™Qs@ÙùDNèüJ†_å如¾>>%¥¥“'¼Ö%&!D’d^AAtÇ—V¯\Ù;qž$I‚ 88’$wìÜ5{ÆôI¯½JÓtŸ^½t:Ý÷?îš‘8ºÇÇOzíU„EQŸ/_Q^^!•J~þÏG>÷Ýwhšî×§÷¿Þ›{ýÆ ³m0-Ñg0êDÑÇ í~¬×ádŽó‰œÐy’2ä:DEš~u÷Þ}FÆxí½û÷µZíÄW_¥H’¢({1ëòŸúÍMo· ÷î߯¨¨ˆîرªªJ¡PTUUÅÇÅÉóò™°»ÅÆREÓ´Læ 4M?zTYU5dÐ@’$iš&IrðÀ¶WgS¯¬P(¦Ì˜EÄ¡?öâ¶­ÄÌ:Ö¹:™È _)C¯ìe.VΕß …­ƒƒ™¯rår‚ žxÄ,#dÌ`Ôç*«ªàõ·ß©U®TªÀÓÓƒQf^Éüæ€Lf¬ÑÇGf4‚Y˰KžO½·Ò¦;yy¡Ðv!<®èŠ•9”ºÓÞ¤c–ËóBÛ…×ó”ËóÚ¶iãðƒ¥q]»j¬ï!øûùÀg-nÞ<€]^^^nvÿfÍ| ¤´40°9SRZúÌöêêžäùèÑã­Û¶À³geK–}9h@ÿø¸¸3gϦgœé_YY™›;éµ×^hlʵ¤œ_p·]H[+Írxza=ç%r8­‘[)¦£,¯0+çܹn,Ï•Ë#ÂÃêàécôzB`óo/¯ŠŠŠ¾½{1%¿§îPX˜¬nUÿ? æ2oïc'NsŽ'N¥ƒ!§^guÏ3–pãÖ­œÜ;ð÷“'§NgàŽ:‘yêtÆîßönØ´ùøÉSÞ^ž¦DSå¼üü“é§B[·oÿñç_4ÙM‰Ÿ,ùüøÉS¡´cÇ“¿ø’ ­Ÿ<}:ãõ7?þ!´låWFedž]üi2AÚR¯ÃàI**"¢Ö·4MçÜUª”7nÞ¬®®&I2/¿ ",Œeº¥ŒéúÖè0š¦iÇ/YVÛ˜Y—ÿdjEf΂}R8Ž'N™´aÓæ­Û¶§gœùnÇ÷_oÚÆ$„YG¨ÿˆãø„ñãRZ÷ÍÆS§3–,[þ°¸ØŠk¹2PÇ¥ã‹/Êd²òòò¤æ´Œ€Ü<9†a?y2}ê”°ÐP+¾©–²N§ûrÕê¢"?¿¿nܼtùÏû¼>kfEee»¶m­8™yî\Ö¥KnnnßlÙZ]]ýBë`’$gNK´RãWk×Ý»ÿ£ää±£G?y2=#ÃÛËkÝ7ß”••oݾC$N›2ÙLÜß(‡}F%oo¯Ú_aXç˜èSé§Ï_ÌÚ¶yãßOžhµÚ°ÐP–éÎg]þ3óÜ9¦dà°áÌÆo¿›WP­ƒkÓ8éY°O ^5Š"©ßþØ·{ïï-[-˜ûþÐÁƒ.^ºdéHÇ«ÖhR<œv´KLÌg/þ×{sm´’~:‘•^ÁÝý¢¢B(ìß/¦SG¡PX]]]\ü!´lirâäI ÝâÌv“µ”ÿ»ç·°ÐP’$?Y²4(0P&“L?½èãOü›5³N|PT4}ê­N·jÍšÅIÿ‹D;ú¹m›¬Ôxôø‰øØØŽ/½Xp÷^ÚñãoΙM’äò¯V'}ðDâ¶û·½AAÆü¿¥zën¥Œs!neç˜î°ò‹ÏO=rxßïÍ|}Û…„dž<ª7]aáô©S´ZmFæÙÐv5^ß”WPЯOo‘Þ˜mŒj];Ç0µ¢ZgÁ~)„N§÷ʘÝ?ï:•vøÇíÛ˜ìDl—.™'ûÎ;ó‘íQ$™8yÒ¾=¿žûèCŠ¢4MæÉã R©Œ¦Æ¼ôç•ø¸X`e0ØgÁ.)Þa:ÉÓô§–;yyÖ®±Dž—ᬱ…ÅY–²>¡i™ìÓÅ‹(Š $I²N"FÃìL’¤•ñ"CÄú—˜«Õj¦^F£Óél¤›bëöóç¾'‘¸¹{¸Ïzã­o·ïxü÷㥟|¼w_ª½R{÷¥&¼¸øÑ£o·ï˜õÆ[žžžR‰äƒ÷ÞÝüÝ6ËRƼ²'²FÓ)•J¥RÉÞ0µ†Àøúq«gÁ)¾Q˱ë¾ßqGža¡Ïã\¹ÂÃBë`Zø…E1×®ÅמÖûVßÐAƒ ‹:L7Ÿ1£?YòyË oÍ™½ãÛ-å*•zeÊš·æÌ¶WêÍÙ³V­Y«R©Ë+*v|»åÍÙ³üüü>YúùØÑ£,KaÌyËÎÉuÔ4¶¢ký’ãxbœ5\ÇÝ>„Pñ£G°èãO¥Ré¶Í«ŠââGB‚x¡ukdùÇ5èŒ ñ!»Þl½ÞÄÉ“fNK¤iZ£Ñxzx,Z0Ÿ¹%Á¼„Ù.©aC‡Œüçp (J§ÓiµÚÍÖaƼäÙ‚”a†¹¼2·x+#^&çp ½2f1 ŽaØ«ãÆº»»WUW3‰ëüühÛ¶õ×Å!ÖÐÛ‘&ÖÈÜÜç°^N§R©˜e†™_•J¥R©ÌŽz­K‘$ÉpµZ-³ƒZ­V©T¦~Ì–b:ɨÈ»Ê\¾rU_58rœd6ƒaýâ{}挷æÌfº ­VÝ)ãøÑZ£NKpø²v>‘:oRÀ$;½<=ùö-ý ®Á ¨;Vfz ¥RɸE)•Ê:ýØa8ŸÈ Ý9RÙ¹üÇÊc¸=ž`ÚB×S$\Òy“ÒŸ¹ŠŠJþceŠ úø‚7Çà|-JkTslôæL"'tçHÕgž¸|åŠ~"Ž'8’Œ«GmM‡È 7)&fo/¯zËÕãìÐFéÀ5áœÇTrðÊùDNè¼Jç`ääÞ‰Œ¯`èÝÉx¢1{eþšë°²ó‰œ›‚+)ãJž••\µÍH²Æ<‚ÆéÇfን¹¡ó*¥we„"ù•ÿ¼zU¿@‘a^|ãôfGòÊׄ\Ïöq$4BBžNÈ+³ç`4â¼²iÃl}âÚA¸ž¸æD ÓÂrîȹkŸytމf6âÓ1x€k nè‘:ÿRwN¬, „âìx‚ét1×ÛT›˜úÜ;òž;æ˜NzV4¡Cÿl_É8û•Oä„Ϋ”qôŬ÷Ã+˜X™yžß5ìp û8•2^á¡¡|÷‘W®^‹íÒY·¯é ûx˜aÍ>œÈ W)Ì0óòò¬§` æ‰ ý:ÓÁb€áºÛ׸ïöé¥ÝÉË ±qJÇÝÑ+st<Á•ŒkÚ@†å.ùç?oÍ\½27tgHz¡uk.@ÝÊÎV©Ô¢"% WÛ·srBâæ&‰8<ž`>ÀÀqœYW…«FcFR¤H(²WÙùDNè|K pL«£„B …Œ`ûHýÒ´nGE<V¡¡ÝÅ΃+-Ã.$@æ-+-+õñö±„±¯QÓ¯L 1 «¬¨ Sed˜reªÀÑ:׺©‚¥ÃçC*D(9“_Ý7TäFXL!Ð/Ž…hÄ|¬©f¸eH#@hÚb¾ ºð@Ý9Ä[æ-´îÖ½ÅJ‰–-;³lAA¡ÇO×zžY^Ã0ökÒ0jÂó ó–µjÁœ¶2†aŒ]ö6#ÈѸO­ÆãX§×R0šÇqv f°Rp ¡_¯V*4µ%cx†á`à5_iÇœ {¾û[Ã0̰Dë}x¡î}"ex›u ³¾UËglßÍtgýÁcÏ7ØŸ0–©ÁJIY˜8M$a¶–®ëWEQÌÚ¦Êl¢©ßDK-·B·D±d§IÙ~:lßÇÞzÓ¯…ÝÂ~ø~îÜyL‰~اÕjyZ¸Îaeç97Eã”jõ:€ÿoõÀÐÁý?%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/MidiImportPalette.png0000644000000000000000000000013213135434036021030 xustar0030 mtime=1500919838.096648472 30 atime=1500919916.013315139 30 ctime=1500919913.346648472 denemo-2.2.0/docs/images/MidiImportPalette.png0000644000175000017500000002566013135434036022712 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRB…8·rgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>*€IDATxÚíw\GÇg÷½ˆ (`Á£"¨±+jKl$1¦¨ÅÄ’b^ ¶Ø5&K4–Ä[lQìA£‰½  b±Q®ìí\ÎãÊìÞíœóÍ}Ì1;û›çyæææfvv–€ ƒÁ`ÐDnx·págƒÁ`0Œ5ÆŽýÊ$…€.^¼("""22ÊËËËÙb0 Æ6w²³þܵ«Cûöjž:}:öã322„5U@YŠ¢òòòróò¾ür¬!Q¾xñ¢¡C?öôô`F«Õk=ƒÁ`D‚$–e…$I¡°šÂÊÊåò°°°jÕªýôÓBCO&ˆhááá¡×ë…µƒÁ`0¢Âu Êd2¡à &—U*•ÁÁÁ†?å-Z´`ZX£1 #6$I¾l£1Õ‚‚.\À]'“{{{k4jaÆ`0ŒØ$ÉŠ0VS$Y¹Bñß{–eñš{ ƒA’$¡ Cœç³BÆD’5 Ç}ƒÁ I’,+äxÙìŸÀ‚H²p7†Á`0HB’$„"ŒÆÕOÖ€\Œu) ƒÁ—x<¿ˆ%Τ¢à²ðh ƒÁ`Dð%Ïgÿ„îlÊÊd2Ã06Í"‡¸'ÃH‰™³fݺukýºuƉ,˦¤¤¬]·>7÷ÞáC‡,eÃ`^¿Äãõ7Þ´tèÈáC“•ÉdmÚ´•ÉÈ«W¯>yü˜Kô¯R¥Y³f Þùë´ÍžŒä¦ñ ¿D}<|Ø·_ÿðzõÃëÕÿàÃŒ ˆy›Kï×@þƒ€û÷ïçç?ps÷0ζÿÀ¸aÓ““ Ü=<-eû÷^î~^¯~ƒ††~KéõŽt“aÙã'’œmüz^ l4&àKV6l²ô²Ò—TX–Òë!„A6oáçïÏBèçïß¼yABJ¯·iŒжzƒ1¸{÷®zõꇇ‡_¸pA§£T*%  àavvvHHȽ{÷Ž9!«Ñh-ZD$AÆ ½{÷îׯ_íÚu )f³…„ÔܼySݺáµk×Þ¾};ÃÐã¶X;{öl||ü;Ù4·ÀˆŽà£1’ßÊx“}ä¹{­œe]–f˜}ûöõíÛ—$Ɉˆ™·o‡×«`Yvß¾}îînr™Ìº=r!žTÄ8Œ¾}û.\¸ðÈ‘#}Þê !}®^»¾hñ’6mÛEwívñÒ%@âž=C?ŽmبñîÄÄ>}ûEFµœúÝ4=MsjW¯]6¼_ÿ={õþhðsçÏC–,]Ú@Lƒ† =ê? æw~öù§NT¯^½^ý÷rspürá([p/à‹ûih%ÃóvÊ#Ñ.Y??_N{æÌ¹\ËågΜÑé´~~¾6yÞ Ø™c0Ö oܸqJJJi©úáÇééé]»v3þÆÄ (..†z{ûdggSXX¸gOâéÓ§O:m6›•âV®\yêÔ)–eããG$%%={ö,--=&&fÉ’%………ÿþûïòå¿Èd²åË9}ú4Ã0ÇŸ9òÓš5knܸqÆ €›7o8088øÀÇŽ ýè£Á7nÜ3fŒZ­fYvÌ˜Ï årùúõëÃÃÃùùùùùù5&IÒÙñƸ,e£1!!ËVÆ[‚+šO¢]²,ËÖ­[·]»vÜlëMäBðâEr FTzôè¹`ÁÂÄÄÄÒÒÒ‘#?¥éÿ®x™Ì ÜÊÈk4“URÐÂ{`Y×ZRRܯ_ßñãÇ«T*ÿÚX–%IÒM.—= ®˜““£P*²³³9t: zõê€ÌÌL…RÅ¡T*µZMXX¨ñãúðÆX_âÑ@LùÄ]î´"Èý8³¹Ä£_¿þå­œe]V&“EEµ€`Y611ññãG>äV|DEµyò¤ŸŸ_çÎ]ôÔ 7Œs¦¦‚ôìñ¦É¡þ„–{ £C,ÃF¿ØŒß›¨±,«VkjÔ¨AdXhhjjj^^^@•*À‚uêÔyaÂB!SÖJõz½5“0!àFcz½}kb­/— ù-ñ°WÙº,„ MÓܺÄÒ’’ÀªEEE‰‰‰½{÷fY–¦›W¾ðh ã ¸Ï"÷o¯ž=¼y³G*•ª¸è™¥SbÄœ8‘4vìØcÇz‡Ô ¹wï@­Vïß¿¿SÇâÙ¹jõê’’’„„a\\ìá#G–.]:uÊd–eW®Z-—ËGmvg…BؼysëV­«*Œž%ÁI’Üš³˜,‹ç¯nE6Ù«iSÙº,˲k×®øøøT©RP¥J•§ÏžþöÛ¯€š!2[ îeß|ý /DcD¦°°pð¡ÇŽëС}ºuÿý÷É“'öùç—.]bYöìÙ³mÚ¶Ù´iÓ‰Çiš¦(jР÷üüünß¾‘q[¡PÄÆ~¼}ûö’’’{÷î=}öìøñc\¶V­[ ÊÍÍ5ztnn^QQѹsçÒÒÒ¸µ©©©=zôøüó/233Õjuppð‘#GÿþûoµZ­ÑhZ·n½aÃÆ§OŸ?~|åÊU99wÇ?dÈNW5°jÛ¶í:ôÛš5[·m£izÑ¢EQQQÓ¦}—’’Â0Ì7ê7¨ïïïP(ä7nÜüçŸn߾ݱSG¥JåìÀc\=E–©Pµü‹´Š»»›——ד'OìÒ´©l]V&“y{{ûúúzyy=<<¸D…BaIöÑ£GmÛ¶…Êå²J‡ƒ±A’žž^2™Œan±†·oiI1MÓž ¥@Ó´F]ªP(UnnAè´Z­V£R¹)U*‚ šÖé´ž^Þ†¡õ”Þ8›¡ ’$Ý=<¹Ÿ~4­gF¥T‚ÐëõêÒOO…B ÔhÔIº¹¹u:]—èèìììüü|†¡Ÿo ÓRÅiÊår•›;w«5„¬V£eÚÍÝ]¥rèõz­VÃݯ¦TªTnnœ…µ¯ƈDiiéµk×BÈAˆ—·WP``VV¶°¦Š$›z#õùÓŸ!dÀÝFt ËšÜüìéîZ] Ô¥†tN«Ói-ýi8‹;T¾ –eKKŠS´Fy¨KK0*KkªPR\\^“¦iºÄ4]«ÑhËmBQ:ŠÒ9-ʘ— n(# `ÙìŸÀ=‚H²äø1-ÌŒ3¸ oC† ùöÛoƒƒ«;Û" ÆAÈår»1™Ìúµ1IÉÀ›Qa0`ò¤I³gÏ6ÌjÔ¥â= ƒwwwNÈ¡?)N#’¬ü¼1 4jµ#7`Ä`*¿¿nn®R©$Zmns¥¢¤d à§?c0 ’hµÚÂÂB•J%—Ë+ß™¡:©¨Âk‚1 AX– õõõÍÎÎV¿Äs bu ƒ𦽼¼"##mˆ¸|å ÷_Ã`0„aÆæ®ƒ® Þ¿ƒÁ`0#g!ø7÷߇ »pÓ‰¨TªÀ€ÀÐP Žkb료ØH¡Qo_ŽŒ!Z¾HYͼrÄÅË EÃú Å[Fâ`hšNËH£õ4@ ×ÄÖG72±‘B ¢Þ¾C´|‘²šYå¤ã'¸Í¨ˆƒGvëÒeY—¹HÆ­:ýëï¿t:®‰­nd0b#…D½}92†hù"e5³Ê—Î_äº1’fh²ì9¶®„É5±õÑ Fl¤Pƒ¨·/GÆ-_¤¬fVÙ€Üp@¨2¤†Ø®¡:t-ÇpH¡Qo_ŽŒ!Z¾HYͼRƒÁ`0ƒ»1 ƒÁ ŒpS˜ÃÞb"¹&¶>º‘ÁˆjõöåȢ勔ÕÌ*sàу÷rs t3=ÝÙ†`0vƒ»1 6lÚܺUËã'’œmc7¸Ã`0 ï~þ„qÿ{ò䩳 Á`ìÆE¯A‘ç£EÖG72±©k……¦ßÊ()-壉zûrd+@Ë)«™Uæ …zl¨ä €¸®‰­-ÇXB„ Y´ôç–‘-œhƒKé£ë‹”Õ^T6€'1˜—­V{2%åaaaŸÞ½œm c7®¹‹‡ñV%b¸&¶¾x k9†CðdYvò´Ùwî̘:E¡PðÑD½}9² å‹”Õ,)n4æz_g @ˆçšØúèF#6‚×`â¾ýi·Ò[ñ EQβÁÅôÑõEÊjf•9ð¤"óR³mÇÎS¦œ8™üí¤)?œ~+ÃÙa0ö!箿¹Øos¡áÒ¢(y‘õÑ Fl¯A¥RpåêµÏFòòô\°xÉ/K9ØÓG×)«•W6àš“Š/x‹²>¶c ¡j°Ní:r™¬MëVU«¾ùz÷š5oƒ«ê£ë‹”Õʃþ‹Á¼Ôô|ãõ¿ÏŸkÞ¬iqIIfVVýðpg[„Á؇k®T4­AŽ]Ë1‚Ô`˨ÈSÙ¹k·J¥’Ëå#†ÅÙ%‹zûÂ2ÕL¯÷p) ×5±õ±åKZƒÂŽíÛuêаuû¾_7¨·/G¶´|‘²Ú‹ÊHWþBÛ5tC‡®åAkpÿÁCƒ½ŸŸÏÚõ“õöåÈV€–/RV3‡Ë.¸7¹?9}aŒ4÷­TÞrñ&‘PÌìÈS*†àŸ½«×¯ûúøèõt~~¾³lp1}t}‘²š%e×ÜØàŽH®‰­/†©Ö-—H"‘ÌŽ<¥ÂEøÙûdذ-Û¶mÛ¹óýïòÚÅñöåÈö‹–/RV3«Ìáº×Æ€èsßè†]Ë1ÂÖ ÷Èñ–eùÝ Þ¾Ù ÐòEÊjfqÝ÷bÿ,–ôÌE-ÇpˆPƒ Ã8Ý—ÒG×)«YPvÍ÷ž.“ˆ¾x k9†C 5ˆzûrd ÑòEÊj–”÷¼1Wý:Û5tC‡®å)Ô êíË‘1DË)«™ÅeW*b0 æeÀ5'AëÎyG‚®å‘j07/ï«o&L›2©QƒβÁeôÑõEÊj&à­%­-ÇXB¼ܲu[«–Q'“Sœhƒkè£ë‹”ÕÊCºðÚk´¹:t-ÇpˆZƒ÷ó|=ö˧OŸ9ÑÐG×)«™ßþ,E}t#ƒÔ`XhHZú­’ÒRKú¨·/|û3Šjf•9ðžŠÖÇ–c,Á¯ïääL™>Ó^íš5kþüËŠ¨‚Ø ¶ÒÕG×)«™¯TÄ`\Š¢fÎý^Géì:K§Ó%Ÿ:UøèQïž=œíà 9×›_â<Ï5±õÑ FlxÖ V«1gÞíÌÌ’’’›·”Ï@äÛú+ ãD–e§Íš“s÷îÔ‰ 2™Ìʤ"ÒíË‘­-_¤¬V^Ùð§ënF…Á¼”°,{ìDÒº sóòù¬Z³ÖlÎî]£«V5NÙwðЭÛ+^š}玳ýÀ`øò|‰‡³Í ´¹:t-Çp˜­A–eçþðãÑã'øÔ/A˜^µØ¹k÷Ô„„¤ä”U¿þ8ubBýzáöÚ ¶é£ë‹”Õʃ—xHX[ޱ„…$IrêÄ„MëÖ´nÕÒ¶F¹nL¥RV©RåêµëcFŒ:dñ²å°Al‘ÑG×)«™ãùƒZ\ò·¹Ø®¡:t-ÇpX©AŠ¢ªW«öãÜ9?-Yºc×îzáuG}2¢|6’ ýýüLj…Õ’‘äk­Zúûûwh×öŸóç­|HPo_Žlhù"e5³¸æ¤¢ñý |ò“……dn.ôð`CB »»àúÒ¡’–çÝ¿?nBÂÔI ë×w¶+/)|jB¨×ë?5ò~~>Í0‘f³±,k’òf÷nç.^höê«Å%%™YYõêÖ­° bûh÷ ‚ HÒöêkG¶_ Æ Q5³Ê¢/ñøçüù “¦xzzîܲIñⲨܼûƒã†¶oÞXÅߟËùdžõU«rï 9 Eàào¼þvÿ~r¹ÜX™Ë_1ÛÈGÜV¯Výþ;Yöìv¨TÒ:©ÇŽ¥_{íeŽŒ%þض½eTdrÊ)§wcâùh©ˆu6þ¹;Q®PŒˆ‹}£{7ãœ3çÎ{«gψæÍ$å˲_»eûöòÝ•%¢"[èÎR»÷¸¹¹Éd²á±ó?×:ËV¬9"¾ü4¦ lÛ±sùªÕÜûçÎiÑ\ŒRD"~äh>ÙBCC§$Lp¶±åñãÇ'SN è××fN97q)âh— ¥¥¥gþþ»cûöƇŽ'%ÞC qÃû) |}}öÒåË¿­[Ÿzãæ´É•­oÕ5ÅÙ³Þññ†ìù¥8zÔ÷èQÍgŸ•Nž ¬·ºÊ…N²‘±ÂýüóçÌúþÇ…N†ÚöQÐ"ò¼ûï¿ /éÚ¥³L&㎞»pÁÛÛ»EDs¡¾ñy¹Æ¯}}}Fˆ§išgÑ Ã´}­u‡vm!„;þÜeãYš¼?E vîN|µÉ+&Ÿs[à«oyš¡ù~$DþêãYVfv6/ë;Ö ¨ÝÎÌœ8uZQqqÿ¾}lfvÐíÏ ê×?q2Ù$1)9¥ÕõM_}52""2"¢C»¶_Œ=gÆ´ÓgÎ=q¢òöȯ^õyç“>Ì÷%K<§N} #c°Ðô[%¥¥ˆŒ¤ Irdüðwcbš5mªP( ß›EmÙº}äˆx¡ú0aòïÃ8>òQì°ûùùŒp­üu ˲ë7nÒëõÎ ªˆ4•&/_þbÜ7…Õ ã“Ÿ4ܛƟ;99SgÌâŸÐ-ºËÙ¿ÿ)U«E²ïÜéÝ”ÝËÆå4~Ï”AÓ4EQ‘mÛ¼vààa³ùËjÉ5 ÑøÄÅ:»¸/_®8v¬úÂo'OíÑ·ÿ’eË )§ÏœrÔ‰“'+¦\¬ø(xAï½ûΞýûWýúÛÜÓår9—¾~㦠”ËdŽt­25h“ë7nøúøP”¾  @~߸))9•}gá⥠ÃðŒ€]>š-ÿüâÅЮ²x~³;̧«ýsþüÄ)ßiµÚjAAßÏšÉ'nvÆ(Ššýý”ž²ë¬vm^qú¯3†”'“kתU§v-þ",Ë¶ŠŠº‘–Æ¿îÍâ¶i™“Ã'§ç¼yЧôúKW®èõúÄ}û‹ŠŠ ç/\øÏù Ý¢£¥ëètºSýõèñã^=Þ4$îÞ»oɲ_:¶o7ebÂ+Íš7ÿò•«åÏ…~7svÎÝ»&:²!MÓÑ;uîÔqÆœ¹ÜØëNNNQqqËÈHÁq"ñ±±Íš¾úgbâ;1*)¥V«ç/øi톆”CGN˜4åñãÇÎöÒn.]¾2eúŒŠ••±vÊôfxÅØ¼uÛ€÷3šF:áâ”é3)½ÞÇÛû‡¹s||¼ùèØwß·ÃMfVÖÝ»ÿnÙº­üëí;(só …¢cûvÇOž4¤$%§tîbïTLՀТJyNjYpÍmÏžÅÉ/]"ssíÕ' bÍÊ_T*˲—¯^…~¿`aqqI|\l½pÓ¥_’ŠŒX–9÷ûœ»wÇýÂpYˆa˜ß7mŽé×wÔ'#Ú·móÍÿ¾jÔ°á1£ {6nùÃÏÏwþÂEZ­V¨DG‘ž‘ѽ×[é·2‚ =¢iB¸nÃÆ‘ñϧ'ìÞë­ÇOžˆáš 5Èoo¯ø¸Ø/ÇŒ®PIVþ¶&3+«ZP!Å××·¨¨hî œë#}Š¢ö<8|äè‰ßMóóó³ë(Z¾ðTóóõM˜25~ÔèýQ¿ÁŒµ —.ÿºv]qqIêÍ4.åÒå+SfÌÔëõ*•jÞì™5‚«óü]Îw¥"˲ǓN®ß¸)ïþ}@þƒ«×®3›³k—ÎfWXu‹ŽžôÝ´gÏžùúúfÜμ—›Û¥s§{V: ³!ÀsšØ²û²ÔTþ%*ÒÓu5kÚ¥/—˃«WoyúÌ™K—¯sèð·2nC‹‹Š>>>†l2™ÌÍMerîoë×ý˜¦éNÚßɹ{''§ò‰&^8 ˆóæ®ÿuÕŽÍ›âãb?y’q;³]›6,Ëææå9v¼c‡ö†Ì–+T O(ŠÒjµÆ"Ã0Z­V§Ó ¢oö>gÙÌ9}öœ¡ÃGÜý÷Þ”‰ßn^¿î˜ …œ¢(>Gí-‹ÿw‘¾Ø«FQ”J©|ïÝw¶nø}ü¸¯ned Ž>}öœ ¨¹¹¹qGÓÒoý¶ný¤ï¦Q¥P(f}7µy³¦Ö¯¡š~Kóy4'I’“¿°aͯ­ZFÙÌli@@’d—N¹UyI))Ý¢£íªBŽ /6y¥1Ÿú–Ÿ:ÊV¯Î¿Dhnôm]ŸƒÛ èéÓ§E}ó¿¯|¼-NòJ'2VP©”~~~×SoŒùiìÁ?¯X ¨0~Lð½Ü¼›ié&ç~ùÙ˜%Ë¡izW➈æÍjתUùDÇ¡×ëkÖ¨áëë£×ë7oÝ6lèP†aJJJæ/üiØÇ/Ü_%l¹BÕ €ˆmý…‹—Î_ø“ñ<öæ­Ûæ/üiƒ¹MýùëßLK÷pwoP¿^í°0NÇÍ!ó<*µX n-„[YöJãÆ­[¶ôööNK¿Uµî EQ›þت×ëUJåœÓ¢"[ؼ¤bₜgx)Šª4ö¬%Ë–s;ÜŒ_>IUÊŒ+OtçNã&$$%§<ìܱ¯‚¸xùò_gÿþnRß,¸Æ6nLò¼¢NtÓ¦öêsøx{ûúú>{ö¬m›×Ú¾ÖÚú-8‰Œjת-—ɸmŠÚµyíÜ… €êÕªùx{ŸLIiÔ°—mÁ¢Åþþ~“&Œ7>7¼N®]:Ïþ~~QQñsgsÁJ&šà€"@ÙýI.]nÒ¸±··„0íÖ­;9wã>ù”fh@ü¨1‹~˜/x¹‚Ô ðHàzϯw›;ÿÇü )W®^kܨÑï½Wým›6$Ÿ:µuûÎ ›·th×¶ß>M7æyTj±ÃÚô[·÷íO:™Ü Aƒ¯>Ó©Ck·RXP |q*ÒÍÍmÞÌM_mbãnEs<ߌŠOûáF”£>‘wÿ>òÍÌïYÀ ËŸ !lÚ¤Iÿ%Ë–¿Ú¤IhyºŒ{åêUooo€V«»–šºïÀÁèÎ;´kgì§uãÍÕ $?tˆOtèöíõU«Ú«Ï±låªgÏž ¬\lTd¬ðz×ès/4mÒ¤¤´43++¼N¡L&üÁûËW­†¼Ò¨ÑÅK—®¥¦–ÿ:f¦O¯^YÙwÆŒüÔp¨’‰&^8 J¯?wþü¨OFp¡nݲåÝBÿ9~Ü„„µ«VxyzŠQnåkÐ:y÷ïŸ8yr„õêñ?«6ؕߦþ«¯¼²ú—eßNšr­ì‚w×.]¾Çÿ;Íl6Š¢Ú·mÛ¹cnjۙ[wìøúÛ‰µÂÂú½ÕûÍ×»Û<*`¬ì ]Å|±WíÐÑc{öîËÎÉéÚ¥óò%‹ë…×åFfˆsP`UOOOnUš¯Ï¼Y39µ DÆîͨ†÷å—ìØQ>Ý¥óövíÒ™OV4)ŠÁÕGÄÅÆôïÇ·\Ë?(4o¾éÞ¤ is¡‡L¦<Ù¢V°9v|Ͼý*¥RGQYÙwŠKJ¼½¼¤+D¶ˆÐýM%îݧR©äryÜÐ!\q1ýû1,ûgbâž½ûBCC¦MžÔ¼iÓòs4M9f´É„F%_`÷ž½ƒ¾k5Ã0†;@Qôð£ÜÊ× u¶íØÙ2*2åÔi¾Ý˜†b–eUJå¬éßÅ}òiaá£&¯4ž8þk^ Á–>w_fíZa ß|=úÓOv%îY³þwÃW¿õ£R‹•€Ö®Yÿ{ÿ>oqKáišÖÙºûÖŠšR©üù§…3æÌ‘ÉdS'&T ²oy¶‘òó§?Û4ï‘ñÃyÞß***娭VË•2ú“_Œ¥×ë¹fo|´ü{cnBÖ¸¯6Q6É Ên»+oC’¥k×zEG%%V,×Nªiј‹¬uý̬¬E?/#IrÆÔ)“§ÏÐét×®§¶kcºI£#cn›¢ömÛvîÚmü=>ðí˜ÞÈm–£×ë-}‰˜ýÀT2ÑñE¼?ð]³ó åc.l¹*\ƒÖÉPðýì™óüäD*¦!twsüÁû /ûÙ>}}–e)Šòpwòáƒ?xßd¬`ý¨Ôb%ˆµÛ7m ‚ÏŒZHÍkV®àæùìêÃÊ]3—jS‚ï˜|ÃRe|®ñQKïy*ót˜CF>ì1x0™™iæ•J;gNÉàÁŒýú%%¥ÓgÏ¥(*>.6²EDÃõ¯^»žrú´‡»{óf/\f“fd¬pðð‘-Û¶Ï9aYãsõz½ã72žkud–<åsa]Ð÷°Ð´ô[%¥¥ÂO'ìþ6çÙ“½Ù½û¹ój……Ù{Ã%ÿë);joY•9½ò¾ØT«pK7?¢(›Ì¨$r@ ÷´¾XveYux8sò¤Û¯¿*¶l!ÓÒ·Pµjú˜ÝðẰ0ÛßJåô!„ó~üñ~~~Çöí½ûMÓ-š7¿zíú±IJ¥Ò¤“fd¬zó&·MÑ£+êç t³­Q£ÆŠÕ¿véÔQpš5}uõòe@€}{öÛã#A“&Œ·wVÊq_}–Ë2™\±˲ÖnÖ)«™CîÜ•»"ÁgÙ(˲™Œ=Zöùç2†xü°îîÜÏjhµ³¤¿aó–Î_ ùöëq\/Ø÷­Þ'SN=~ü¸}Û¶ÎŽ ßÈX">6vÛλ÷îøvŒ³ýxyc·a›±o¼.¸ 2™¬VX¨áDž#† øÈó\GÞ´`³,µ=·±Ší‹”ÕÊ+¨È¤"ZXwÍ0¾& „Àþ”±~ìÁ#†ÅA ×H¼<=×®ZAEQ[ã¬È”ÇÃÃ}ØÇC ‚ÐëõNÿÀ´ŒŒL>zX£Ñˆg‰Ѝd¹‚Ʋì¬yósîÞüí’$Řô«Ì'_ìà;²rÑòEÊj&¸æÓŸ ðw­bA09«üU"®Ksv„ñ—[ÁálßÃ0L%ÆJ¡ˆÊ”+T³=xäèí¬Ìå‹eñ{ð•6¸ª>º¾HY­<zÞ˜pö>fÒ]Ë1‚Öàî={'O˜”œ2mæì¸OFÞÎÌâuêíË‘­-_¤¬fAÙŽÛŸBÈ]RÉ5±õÑ Fl¯A•Jéëë{=õÆÈOFxzx,[¹êǹ³lƒ‹é£ë‹”ÕÌ*s.üPQ±]C7tèZŽá°k…Õ’‘dë–QUüý£;wªY#Øñ6¸¤>º¾HYÍ,®;©ˆÁ`xÐ=ºË…Ë—š¼ÒØÇÇ;3+«^ݺ•×Ä`‰ËN*Þˆ4UÝÈ`ÄFðŒhÞL«Ó¶‹2Øæ“¨·/G¶´|‘²šYe»÷TD´.«:t-ÇpZƒ ôiÝŠÛfìÏ݉|÷"A½}á%(ªYPÆ“ŠÌËÎá£ÇbG|šwÿ>‹èÁ“ŠRÔG72±£o¤¥¶ã¿Ë†°6¸’>º¾HYͬ2^©(]}l9ÆÂÖà°¡C›¾ÚdÏþý1ýû9Ë×ÓG×)«™Åu¯a0~xx¸Ç Â6cŒ½àIE)꣌؈QƒBÛÏ?ÙWÒG×)«™UæÀK<0 ƒ0¤x%u:b»†nèеÃ!…D½}92†hù"e5³¸ì¤"瑈û˜‰©nd0b#…D½}92†hù"e5³Ê¤+>5³ ±]C7tèZŽáB ¢Þ¾C´|‘²š9ðµ1 ƒÁ Œœ›¸t±ù%XöðlQW¡:t-ÇpH¡Qo_ŽŒ!Z¾HY­¼²<Ã`0 Âàn ƒÁ`0ã²+ o¤Ë¡+E#6R¨AÔÛ¾ýE5³ÊxOEéêcË1–B ¢Þ¾ðžŠ(ª™…åz6ÀøWŠúâ®å)Ô êíË‘1DË)«™UæÀ“ŠRÔG72±‘B ¢Þ¾ð¤"Šjf•9ðíÏÖÇ–c,!…D½}áÛŸQT3^©ˆÁ`0„Á“ŠRÔG72±‘B ¢Þ¾ð¤"Šjf•9HBÓ¢ ¶kè†]Ë1R¨AÔÛ—#cˆ–/RV3 ×]´&¶kè†]Ë1R¨AÔÛ—#cˆ–/RV3‡kN*²,˽É5±õÑ Fl¤Pƒ¨·/GÆ-_¤¬fV™/ñÀ`0 Âàn ƒÁ`0ãš“Šh­r¥È`ÄF 5ˆzûÂ+QT3«ÌGc ƒAÜa0 aäÜÿ\x~Éa“È®å)Ô êíË‘1DË)«™@’$É0Œžû AÐ ­T(ErMl}t#ƒ)Ô êíË‘1DË)«™U6¤Èý|ý=yäïëO’•š`´ÒÙV 6¾6X'‹ž¬»f,^¾ K—%ùëW büý­@ˆ„²\ *öcÍé?¥<ªX ši³©ZwJ:íË1í×fC³²~A ¾X²¿¼¦ãÕlFجãÆÊòàêÁÂü‚|š¦oŒ»VÃ{›ý­õ³¬œþ|;âÅ}M££/žêçëW#¸³®Ágb’!ñ?«@Ù{â¿Ì6õ+1Kñ±t aøÏ(8†¸ñŒ°ðqg~‘ Ö ‹ŸOsY-žkµpž5hóccœnü7¶ÇðÉ/¶2§·/´_K‘1N¡ô› |1£`—B¤±ÙS³áòšÏ_ /§ü_†G)•J¹\^á¦+ÈRaÕ2 CQÀŠk•>òÑÃÙÊG©’– ….ê b• öÖ O§ìò] íËíצŸ 9ݳC‰¨«c\›^¯[·vìØ¯rYJ§¥tÀ%Û5tC‡®å)Ô êíË‘1DË)«•çÿØs·H]²¬É%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/cut.png0000644000000000000000000000013213135434036016227 xustar0030 mtime=1500919838.113315139 30 atime=1500919916.019981805 30 ctime=1500919913.333315139 denemo-2.2.0/docs/images/cut.png0000644000175000017500000000202013135434036020072 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR!‚õ‹gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<qPLTEïïïîîîìììéé鉉‰ßßßæææííí¥¥¥ƒƒƒåååÉÇÂÔÔÔÝÝÝæäàÜÜÜèèèïîíIIFäääsrnËËËÕÕÕðîí}uÍÍÍòñïÒÏÈÉÉÉÑÑÑIIIçç亵«VVS‹‹‹£££íì餠—```ÓÓÓ¤¤¤~NLHÊÊÊÙÙÙöõôGEA‘‘‘ïîìÇÇÇÎÎÎÞÞÞêêꌋŠóòðwtm222ëëê`]XõôóÎÌÇ664onm¾½»êç丵±GGGÆÆÆëëëÚØÔ›™–kkkÈÈÈÐÐЀ€€%%%oml><;ÖÖÖqqq:::,,, mmmyyyuuu‡‡‡lllppptttççç!!!eeeÒÒÒÚÚÚKKK]]]ØØØÛÛÛÄÄÄ×××ââ∈ˆ’’’ sssooogggÿÿÿ!,/bKGDz8Õ…j pHYs  šœdIDAT(ÏÍ‘IWÂ@„I'1‚(ˆ¢€7„qÁྯˆ¨€¢@\‚Ž"¸°ý{¾o¬Sj¾éê6þŸ(iÐ Mµ˜6¡ƒ5qª1ƒ…åi¢„.F} VlÝØ{zg0;­Ðç2‘ýà¶1 Çëàô ß°8â£Î±ñ Ï$O`¦ìDE!Dšƒ‚iqÆ?œ!å*`¬´'ŠQ,ek⋾2NÖlHwÝÔë¯`%¥*ä ª!ËM„Ôïr¦‰‘~§Hi4ƒ ]Ô£(ßkø1§/¨:j®•—7tEXtCommentCreated with The GIMPïd%n%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/gotobegin.png0000644000000000000000000000013213135434036017411 xustar0030 mtime=1500919838.116648472 30 atime=1500919916.026648472 30 ctime=1500919913.339981805 denemo-2.2.0/docs/images/gotobegin.png0000644000175000017500000000220313135434036021257 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR,'CZðgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<PLTEïëçÿÿÿ¿¼¹üûúèäà´UëçãÈšm³[ÙÕÑÏ\Ð]Å—jæ•KÐfÑÎÊÏ]Ð^æ”Iù‘ÖiÐ_æ“Gø¿ŒúÀŠÞnÑ`æ‘Cø½‡ú½…ú½ƒîvßqÙoÙpÚqÚrÛrÆjÑ_å@ø¹€úº€úº~úº|ú¹yú¹vú·rú¶nú´iù±cù¯]ù­WùªQÜuÖdÍÊÆäŒ;÷´xú¶xú·xú¸wú¸uú¶oúµkú´gù²bù°]ù®Xú«Qù©LÝwÑaå…4ÀŠ[à‰7÷¯où²pù³pù´pù´oúµnú´hù®Yø¦FùŸ6ø™(ø“ø÷Œ ÞzÒaå„0´~Nà‡3ö¬gù®iù°iù±iù®aù£Hø™0÷Ž÷‡÷†÷‡÷ˆ÷‰÷Šà|Òb×f ž›¤tGäˆ/öª`ø£Oø•1÷ˆö€ö‚÷„÷‹÷Œá~Ôe»·´³°­£tEâ}ò€ ö}øøŽâ€Óc¦uFàsò~öö„ñƒåâã‚ãƒÓxÓdÔf§uFâwó÷…å~Ž‹‰•“¬©¦¨vFãzó„ß{ªwFä}Üz»]½_Èp·´±àÜÙÜÙÕËÁ·¨úªbKGDÿ-Þ pHYs  :èÝ™ÞKIDAT8Ëc` 0’H2x &æA¨˜…••Ì`cç`!¤˜“‹›¬–‡—“b~A~°Z!a~‚йEùAjÅÄ%$ +”⪕–‘•“WPTRVQQUUcÁ¥X]ŠŸGCSK[GWOßÀÐÈØÄÔŒ—b)s K+k[;}{G'gW7w~\Š=<½¼}|ýü‚‚CBÃÂ#"£p*ŽŽ‰‹OHLJNIMKÏÈÌÊÎÎÉÅ©8/¿ °¨¸¤´¬¼¢2#+;§ªºº·âÚºú†Æ¦f°Úœê–ÖÖÖ6œŠÛk-8ë;:»º{zûrkÚú'L˜8 §âÉSøÙ8ë§N›>cæ¬Ù0‡b ê¹óæ/¨ã‡N|ŠAª.ZL8º—,'$ êesθsy=Á$Ê u!ÛŠ•Xÿ( XEÉèosPNÙÈtEXtCommentCreated with GIMPW%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/ObjectEditor.png0000644000000000000000000000013213135434036020011 xustar0030 mtime=1500919838.099981806 30 atime=1500919916.026648472 30 ctime=1500919913.353315139 denemo-2.2.0/docs/images/ObjectEditor.png0000644000175000017500000014273613135434036021677 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR‰–æ¦$sBITÛáOàtEXtSoftwaregnome-screenshotï¿> IDATxœìÝw|eþðïlÉf7›Mï!’B MzÄrˆzzž(gïœzêyþ,g;ôTΆ0é%B()´Ò{/›í}ç÷ÇÀºìf7H"ù¼_¼îžyžg¾ó̘gæyf–eéRƒÞ¾}{BB'$$8ç±Ù¿ÿ—_~ùí·ß._¾\ ¬_¿þî»ï¾ï¾ûfÍšeŸM£Ñk4î#Ã0eee±±±öy†©®®ŽŒŒ$"­VdËÏ­uÃUþnÅos]XXzY™§XÜiNz•é`áËì…U+#ßXǵ.ÿ –þ´›ü‡µÒúùô·2wù;êeÖqÉãÕ$‹$"2iéí zAÓaÑNêé(Nîp”‘_@(ùûûw#Zè7΋jkk£££¹tTT”ûòS§N}üñÇ-Ëþýûy<žÕj=}úôÔ©S‰(77÷ÙgŸÍÉÉ‘ËåÎcbbœr×÷D$‘H´Zm§Ñw˜¿[ñÛ†„4ÕÕEÅÇw)÷Ë®û¾1]]®ª'Ÿ‹áùD“º¾Kõt‹ìBûPB¦ÎÛ³cîã€?.ÇÑ80 J‹ jj‰ˆÏçóx<–eÍ‹Õbáñù>ŸeY«ÕjËÌ%>üè?iûŽ÷MÈâÙãW?ºêjoE@DV«U£ÕùøEEE«Tªü³g[Z[}}} $ñkµ‹ÙLD óû´Ú´}LJŒå²V¸liûö÷R—Àb±´¶4k4ꈈAµµµà1ŒX")//OJ*•JMFƒÈÃC ¸d.²§—÷ÕzÁ¶µ/ÑͿރµ½Ì>˜~Àš€ˆATT”ØËËl6i4Z±XŠ —ìýú-"bYÖh2+ÕÚŠÚ†ýY'÷ÉûÃÍ ð½gñœqÃeÞ…J“}¦è«M{šÛÚíó0ÕÇtþÉ®jp¿Ö ® ¯¿çY÷¸Éï —ît+08a˜«U"R«ÕÄ0|P§×›ÍfŸÏ7:Î×××d4Y­ÖòÊJ‹Åi+‰§0@ÜrË-b±8<"òæ›o~æes'zíó_&s_ÇÕUÁþ>ï={aÞûè¿çÎä MüÄOL‘ðØ›Ÿ·(uö9;üÃ~óï3ÕÇ\­í"q[;h‚› ,¸$?‘ûüž^ÞÎuº°áñxA¡!Á"2šL ‘Áh0èõ&“‘ÇcÌ‹ÑhÔéõ¾ÄX­f–H£Ñ¶´¶Úׂ§0p´‰cÛZ­ÿÛ¬7Yo¾áúÛ§&~¾%‹†a˜ùÓÇ-ž39,È¿¹M‘¶7s˾£Ü3î¾õÛ_ürç‚™Á¾UuM~“–_\ID–zïËwÞ<3Ðϧº¡ù‹Ÿw Ž¿eöD©D\V]ÿÑ7iEµ\% gO¼eöÄ@¿¦Öö-û²ÒöéðñÅò;çûz{}¼ö“쬃&iÄá2ÿ/¿­¾ÿŽ»çŒ~ë«m,OÈe›5kÖ­Ëî  hh–ÿ²ãÐöƒÞ!ñû xÊMäD4}üˆ¥ó§ Òé ߤíÝž~Üö`ëÖ­ÔÙ]|ǧÝ8cümó¦†û×5¶þøÛAÛJ½Fe lïÚ—œ·â¦}¸‚»ùö›¦úùÌYù\—N€?¾eKokiinhljiniimmjnnjn.(8' "o©”ˆø<¾^¯×éôz½^"K¼¼´Z­D"V(U³Ù`ÐËÛÚìkÄS8lñ¶Ÿ(¹ù†ëgN›¼þ×]¬OäÓÆ<¼|þþÌÏ?÷üâóýÓ2žY¿ãD‰­à˜¸€'^yg\BØSÿí©• ÿúò‡$òî´ÔÈ(ß¿ýý­áQþ/=ÿìOÜ»7óÄÃϼ’´æÅ矽ñª¬%¯[fŽpéÜ-»Ò¿_ÿõ]·/Yu÷-BÖ¸%ë¼sðãF$QΉãä%” ‰rK›‰(uô(ÏÏ׳þq\¶)S¦¬ù¿µ¤ªô៸o Ϫߛ[n«„»ï&ò3ÆýeÙ¼¼³…<ö”Q«\¾|¹'én~øunÄ?÷Àý½篕y“G?z×M'Nå¯Y³†Ì†GV¯vÎ,n+èp+¶ÏÐpé#/üSÛP*¶ñlˆ¾ñª-m±XZ[[¹î€ˆJ%yˆDV–5›MB•Z­Ñj•J¥T*µXÌF£Éd2[ìÞFJxJ‰í/^e•žˆüýýYu“^àsó´1Dôãן+õ¦œ½ýöe·\?yë®ýf‘—ÿ›o¾Q©ÍûôìSD‘áÔZª÷‰ïR)5Ëxá=oë?ÿJmÉ0ð‰(jP$ÛRlð‰Ÿ?e4ýúã× ½õ‡½'Ü|ó3¯Û´m—ÙÓß!x™—„ˆ …ÁËÕ¨ˆ¨Ñ #"™LÆêä¶][·n]K“ÂäþÉÏûÆ»xΔ{YD¾öà&ò…3ÇÑçk?hj–½Â>üi¿@§0‘ØVüÂCßÜ ~îNÿ‚c‰hÝ'5Ë•&¯ðO~Ú3nLªÃqHÛ¶Òiûpl’ű ÏUT×0>ŸLÜ\‰X̲d%V¯×éõz£ÁPRR’——·`ÁV«ÑjÔj•¯Ì¾<%€Ãö/*,ˆˆÚÚÚÖìéå@DŸ}ö™-gXX˜ÐØ.ðâ>¶¶¶òÂG߃ˆ†a,†®”jkk³•²Uâq±žÅàéåèGDíííüàáZ+Ÿˆ‚‚‚„&… Ú!x¥Fë'“úøø=}‰áQ ¯Œˆ”J%ÃZl»ÖÔÔÄ L <Û ,…††zå¬ÿ ûFpyP€/5662I"¡˜ˆHêËï¨ ;Ôá\‚° çÀœkë0Ýiû´µµñÂSE|¡›¨™Ìf–e-«•X£ÑÄÕÕÕyI¥þ~~&“Y¯×·47³,Ë/²ÁS8lñæO¾žˆÒÓÓYF ×¨ZåŠÐ ÿ•+W¶^2ÛŠ¹ä¶Þ@d°¯ª'¥œ*ink ôõõ­Öëƒ$b"jnn&³Áùsö™Â9“ÇŒ;6íh)7s`Ôød"ÊËËc¾-ppp‰ÎHSPX5448Ôæ>òæÖöÐ ÿ"µ‰Œ̽îô[Ãy.A}s[LDˆC`εu˜îJûèõz"½û¨q¿Rl6› £ÉlbYvö¬YÞ2™@ hW(›jkj¤Rihh¨}I<%€Ã/ <ÈÁŒq×OyòLÁO?ýÄHƒ=½¼·¤g?¸tî}÷Ý÷éæ#&–7,~ÐÂYÖ|ô½§]Y‡¿–=.åðqß±3+n™¹xñâïöŸ½sáõD´cLjœÿ8ÿ¸3kˆÄ?ýéOMºï êTÉqƒî»í†v¥ê»ï¾cÄ~¶ü÷ßÿG?ïgù¢¿ÞumÞ¼Ù¡6÷‘o>pâ/Ëæ=ðÀü¸Ç`åß~Ô/6î!"¥Z+“JBCCë…|k8G¾5=ûÑ»nâ#èá»nî0³§—·óVºÒ>ø"€?(7¯µ))Êïz…"’J¥Ä0¬RÕÖ® >¾¾"QMMMAAAMM/ˆ‰‰ ³/‰§0@lÙ²Åd¶(ÕšªÚ†÷>þ,}÷6‹@bàËH£úyÛ¾¶úÊ%óg|ñÚ߈aÎWü²y;Ûoð޲wøk©ïi)‡ß¥ífµís¦M¸á†[Ÿ}ýý¶­[Mâ³ÓçJêá¿¿ß‚ÉÝ¿\&óQ¨5ÇrOÿðͺ¦V¹AË^ÌŸ™™ùʪåáaaÍmíºnÏž=F¯pË¥7àÝDþËoû¹Uk_~Tk0~óënKs‰IòåÆ]+ÍþüóÏÉí‡:œK°y÷!Ò·/ž7ýó׫mlݸóи”ÁÎ ¢×¨œ·Ò•öÁ‡))Ê/-­*¯¨¨¬ªR©T‹…ao©Ôʲm­­zƒAêå•0dÈ!C¼½½ ºð `Ö¢{†O_Ø·¡ôîÍ÷DD xŠYI y^’IÛʨêɬ'"òðf½CÉÓÇVÖö6‡=+uéG–”uŒ¦…,Fâ{°Òò¾äqî%ÌFYCzYÌħ+‹$è’jýã/„Ä÷`½ÃHÌçñ6ü‚Ùl^¼xq§‘_\Õ@f1|Ö'‚¼‚‰ˆÔŒ¢–¬&rñÆ¡ßÙÎï9ÕMŒºÌx²ÞaL[©mí%­ÑÁV\¶ã±è¯Îܼ?íë+R•›g LIQ~UU½\.¯««3[­Ä²ÄÍ#âñùR//©TêááAD‘‘!\±Y‹î2vÖ ú'7qôÐWW¯(..~â‰'uþCû:"€§8{ÿ•ê¸! ¢¨¨°¨¨°‘#»ñKõ‹fOÛ·ÿªE}¯2ÿ„Ùl.8_øßOÖj Æ’lüÙèm‹fï…­0Ýšy×^_}I@D±ñIyyyåååZ­¶¯ã€^Å”å+Tú¶¶¶‰'zyyõu<ЫDTZZ:þ|£ÑØ×ñ@¯â¯~tUYyÕÈ‘#Y–mim=uúŒ§§guuMÁùóbOquMíµ¨«oÈ/8' ›l¢¥µõÌÙ|†áµÉÛlB¡Tž:sÆjµªTj$F£É`0ä:=À³%'ï¤N§·Z­6Áð˜ìœ\•JÍðxBÞ®{zÏÎȉ––V™Lvôø‰žð÷ó;rôXCcS`€ÿ€M„„gɪ­« à‰Êªê¨Aƒ22ü±LIQ~fVö²eˈH¡TòxcÚT£Ñx<;û‘ÇŸxô¯-]r+—!ãHfttÔ„q¸70°8 Rà)À5é|aÑgëþ÷о…a˜UýåÍ·ßYûÙçS'O &""†a| 4—JJÄ7À5é«õë#ÂÃï¾c¹V«µ-üó½+wíÙ›uìØÂ7ÛÚ¾**+÷HooWDF„ÏŸ7W&“‘ÕjM?”QpþyÒD[Áæ––»÷477‡……Ý0çz??¿ÞÚ9¸,‡êd8pÍÑëõ99¹÷ß»Òd2Ù/—ˆÅ÷ì2 F£‘[²,÷™•õòkoD ýóÆM?mܸöƒ÷ƒƒ‚^øû+§Îœ™8a‚Á ßðkÚò¥·=pß½Dt¾°ð©ç^ðO2$mËÖ~úùýsÈàÁ½¿³Ð]—R`àÀ5¨±©Éh2…†„8ü‘gYV©T^š—eYÖd2}´öÓÓ¦½ñêËD¤R«WþùÁu_}}×òÛ?þñûïMM%¢ÏÖýoûÎ]¾w%˲o¾ýî˜ÔÑÿzý5g4™V­~ìÝ>úäÃ÷{o' §.é MÄÀ!€k^o "o©´+äY–-8¾±©éÝ·ÞÔh4DÄçñ–Þºø“Ï¿XqçD”“;8.N(Þ¿òž¿>ø€R©,)-­ª®~eÍ‹:Žˆ†¹ëŽåϽ´F©Tz{{_å€Ë%°ÿP[_çãƒC×?__"j“ËW•–•[,–„!—Œðijjf&4$„ûȲì ÈHƒÁ ñ’ÜwÏŠ¯¾]ÿã/’“’&Œ{ü¹R/¯ú†F"zåµ7x<W„‰$oW KÐÿáC×¾ÀÀ€ààà“§OϘ6ÕaÕs/­IJJüÇš—¸,K,ËŠD"–e ƒH$â–Œ"2™L÷ݳâŽÛ—Î<’“»þÇݲõ³ÿ|Äçó‰hõª‡½$’ õ2Äcx!ÁAøZèÿxö’“’ú*¸zX–½qÞÜ=ûö×ÖÕÛ/?‘“Ó&—OžxCþA‘DTpþ¼mI~Á9‰DÒÖÖöùÿ¾$–=sÆ‹Ï=³îÓOÏDG "">Ÿ74)‘ûg2™2³²l= èÏ.yJP[W'“á /À5èî;–ïÞ»ï™^\½êᱩ£­VkÞ©Sï}ðQxX؜ٳ¿—ϲ,ËÆÆÄ¤ Kþôóuo¼úr€¿ÿÙü‚´-[o¹éF£ÑôõúïüýçÏ›k0Ž?ADáaá‘#RR>þ俯¿ò÷À€€ÆÆ¦½ýnʰd«ÕÚ—û ]ÔågfeÏ›7ˆŽ?qÝøq}\y èÔêüóÍ“§Nóù|–e­VkRBÂk¯üÝ×LJë,_±ò®Û—-¸éF"jnm}ò™ç›šd2™B¡¸nüø×^^Ãçó?øÏÚÍ[·q?u¯Ñj¸ïÞÛ/²X,jæñ§Ÿ­©­õóókkk–<ôíþ>µú³Kº ¥Ò¿Kpâñx^^^uõõÅ%¥V«%&::.6V£ÑX,.ƒ¯¯¯^¯×ëõDÄçóEžž§Nn“Ë£££†ÄÇ«Õj–e¹JËÊ…BÁФ$o©”{ËÇ“H$§ÏžmiiŒˆHJLP©T˜Hð‡p¡K0wî\":WX841±¯C€«ˆÏçs³-‹­3Ð!†adzX,f³Ù¹³Ùì04H(2 cµZíó@?‡7 ,f³¹‹×ë,ËÚ~Õ¸‹5t˜ú¹KFyMÂ#€ÅáCõ2ü¦ À@rI—@¡ÀÀ!€å’CI‰ }ô‰KÕÖaàÀ€rI—@£ÕªÕ//IŸ†½‡¿úÑUÕ5u±±±Däë#‰<²só›B‚ƒ®H"<,ôxvNm]}Dx8¡!!y§N×ÔÖðÄé³ùUÕ5Agò l¢à|aeU•ŸŸßù¢âžÉd¥eåå•­Õjû:èU—L/†k›D"‰‹‹ãz€yyyåååè^UhðþÃv,x<^繦¤(_¡Ò·´´¤¦¦ŠÅ⾎®"N—››HD8â½ ÞØŽEjjj_ÇÐïðˆ¨´´+X,NMM-++ÃïhðþÃv,ú:€þH@D:+„X,æÆ®àˆ÷4xÿa;àÃj4t 4t 4t 4t 4t 4AŸlµ¸¤´²ªÊöQ(øøø$%&xzz^‘úÊ~Ejs¯¥µõܹóÍ--f‹E*õЉŠJJLä~!U§Óef0~œ·Tê\0óHVdddtÔ ^òŠ(*.©ª®v^ë¼¼¶¶®´¼lÚ”)Ôý#ò‡kœ«áDNŽZ­ž2i’P(´-4™L3O|e77pÎdpÐ7O ZZ[Ë+*x<†û§Õéròò~øù…ByEê/«¨P(¯LUîM¦²²²ððpy›ÜÕ9ó:“[ZZ ‹‹gNŸ†^Àt.%­Vëþôƒƒ ºˆeY•Jå)º0—àèñãgóó·üö[UUµÅbijnþyÃÆ¢’ƒÑ˜_pî§ Z÷H·Z­\ƒÁ°gß~¹¼ˆöîÛ_UuaÔ{Eeå†_ÓÊ+* ÃéÓg~Ù°Q¥¾0è"#óHCc£-†Ââ¢3gó¹ôÎÝ{>¬ÑhÛÛ»÷î;v"Û!àÖ¶6¥R9lèPç}4(Ræí]^QÉ}<’u4ëØ1N[ZV¶ñ×´ÊÊ “(Ž?Q][Ã¥;ÜAnUIiÙÆ´ÍuuõZ.3ëè¶;X–­khPkÔZ­¶¼¢ÒÖ}îÔé3۶飼oP©Ô»÷î;wþ¼m•툸ŠÜyyUUõî={FS[[ÛÎ={ò Îq9Ý´•½cÇOœ<}zçî݃A.—ïÚ³÷l~·ÊÕ)áC7t•1Ó§LQ(”'Ov^×a„‰$;'çDÎ…áFYG>›ï%‘¸jùþy&ÿðó/Îÿ%°X,ljnö‘ÉÎ8g`ˆIJLànXÚ³Z­uõõ\Úh4)UªÑ£FÙ2—ÜróMÜx‰m;v†……ͽ~6Ç3›ÍÛ¶ï8tøðôiSOž:][WÇÝ×/¯¨ ¢!ƒãÂËÌ:}ý¬™ Ãèõú_7o9‘3kÆt7;ÕÞÞ^U]}Óü"#"ˆèxvvII©Ã=ÔövtXC``€¼ýÂèj­N·lÉ­"‘Èl¶lß¹3óèÑAƒ"î†8xÈyo]´Ðh2e>œ.îr¶58>Þ6æ$À?Àd6‘Û¶r®!>.Vr±­üÍf3uù”èÖ†®¶Ñ#GÊd²C‡»á A‘‰ éÊ8Z¬Û*‹ÅJDý7;(ÿ(c¦…ÅrÉ{c¸ÛÏ=ÖáüQ7mÕQæªíâ)Ñ­ õ‚ààä¡C?Â-qa]}½Él6(•M¡¡!njîŸg²D"vއˆLF“¼½=9)iê”É]¯ Ü»¬¹A·ÜtÓÁŒÃ…EE~~~cSG;çaæ2ßÓâëëKD¡ <,Œ[RßÐPS[& C‚ƒËÊ+ÚÚÚ† q¾ˆôññ!¢Æ¦¦ˆð ?’ÕÐÔ$ m#Xö÷ Á6¹œ µ¹¥¥ªº:uԨĄ!‰ Cäíí?oØØÐÐ5è÷c‰Dñq±gòó†x{{ÛoôèñV«uhR"wÔÐØhÛz}C=ùúøvq}|d&“©½½ËCDÛ¶ï9rÄð´äU%“ùh4Z¥R)“]xƒSccÓߊ›¶êb žWjCWÜ„qc+*+9Òi„z½þ`ÆáñcÇÊåòôC‡n»u±«qAÔ_Ïäø¸¸žÕÖÖ•WVL™4ÉMC@w]îä<†a¦O.õòŠ‹uþs™Sý|}C‚ƒ³Žã~5I¥R§ÊP©.L=<8¾´´´±©)±£qÁÁAYGiµZ"jhh,((HLHà:b±geUw{øÜùBÛÀh³Éœ“k©Ì=q¸Z"¢I×]çáá±yÛoeåÜq¥RyààÁsçÏ_7~¼íÊøÌÙüƦ&"’··?‘åí}É€7;.“ÉÉ2šLDTTRR[Wg{E}ï¿kÈbµVTV:ü㦉ÇDGKÄâôŒ ½ÁÀ…Z]SãªW‘wºGîO†®pJØb¸ü ]qB¡pêäIõ ÜG7Ì8,óöž2lâuLfóñìßß—Õa ÿÎä à ô®¸+ð» ÃLŸ6õÔé^’x¥Ìž9cû®Ýßÿô“X,ÖjµÁAA“'NäV Ž‹Ë:z,,4Ôçâ…‹ƒéS§îص{ý?ŠD"½^1þâØÑ#Gfdùî‡y|¾ÈÃ#eX2÷ö•°°Ð¤Ä„ƒ‡¹wÆqcÆøùú:Ôìéé¹hÁ‚C‡ïÙ·ag±XÄbñÌéÓloÖ'¢)Ã6oÝæááa0|||&]Œ¼+;ÈãñfNŸ¶kÏÞ¯¿]ÏÅŸ:jTXX(yK½KËNÿ²iÓ¢ œgb\%&“iמ½ üýo»u±@ÀŸ1mÚÞýû¿YÿP †I=*?¿ƒ—P¹ŠÜ~¹›Üœ ]äæ”°áò7tÅEGEÅÅÆÚ¦Ôwáù¢ꚚÛ/bÆÃÃcêäI»÷î‹‹‰ qÕò 3Ù£·Nu€…))ÊÏÌÊ^²dI_GÒ «ÕÚÐØ¨Õêd2ïNÉU§Ó …Á…7ŸZ,–ú†½^ïããc?’ˆ”JeKk«ÈCêð4CÞÞ.—·óù¼ À@‰ÛW£¨5š––³Ù"•zq#³2(Uªææf‘Hf[ûý? –÷ Îd2™ÌÅã?__ç'’zy¹Ÿu*óö–9;2™Í ý>ùÁÍ …Bûi ¶ü¿ÜˆD¢Ø˜~éÙþˆ¸Š¼ë{Ô­“¡C®N ‡.CW[·"ì´…q& L˜.Áµ¤¥¥5#3S¯×vž ¿Â™ pm@— ˆD¢ø¸¸I¯ îëXzg2Àµ]‚>àí-1<¥¯£¸\8“® Ww2ôsè hè hè hè h<"‹Å:®¯#Þ Óé$ Žx¯Aƒ÷ܱèë(ú#ÅÇÇçææâ’åš§ÓérrrâââpÄ{¼ÿ°‹¾ ?bJŠòcã“NžÜ¾{7Y­>vùíÙɦ+,”oÞljiñŒ X¾\àçç¾Hc³×Ý]vd[Zš×èÑæÖÖÖ Ÿ|RàªLÍÍŠ={¤cÇz&$t€³Ž™årezºÿ’%Âéøñm›6qËÕGkkMMMí;wª¶¥Y“©eýúó ¨Žµhµmii³fiÏžåJµmÞ|nÞ<Õ‘#¦––ª—^*¾ývÖb!"Åþý¥÷ßoQ©tçΕ®\ÙüÕW\~M^^ÁŒm6˜Šæ/¿,˜>]{æ ·ªqíÚ¢eËÔYY†êêÒûïoY¿Þ9xû Y“©}×®ssæ´ïØaiooüï fÎ4ÖÔ¸/Ò³Øìuw—ÝYó4­[W´d‰bï^«Ñè¦ åå•O=¥ÌÌty´œ•å³Nš¾ú*'2ÒØØÈ²lãÿþ—¦+,äV•­ZU²r¥súìôéO=Å¥­Fãé±ckßy‡eY³R™—Pù Ü*ÍÙ³Ùááò;Ow29ÙØÔÄ-/Z¶¬péR–eY«õìÔ©Å+VXF–e-͹›o.¸á–eõõ¹11U«ÒäÆÄœLNvŽß˜Õ`8=vléXÍf–eM­­g®»®ì‘GÜaY¶±Ùëî.»òÔèÑ'““Õ¹¹¶€Y¡Pìßo¨©qÞ;W:~Jжi“÷”)Âà`"ò»é&âñZ/>(p%qÆA¯½Æ¥Y£‘†š¯LO·¨Ta«Ws«$ÆE¿û®0$„ˆü-²ºfÕj‰H›Ÿ¯/) {üqF($"žDú׿jO2···ïÙÃZ­áÏ>{¡ÈС~ ºJ“›k¬­ {üq†Ï'"¿ÐÊ•í¿ýÖiO©»±Ù—íî.w¤ß¢E^£G‘ûàËd²™3m³>ºB@Dß|óíóŠ+ UUêìlÈÈ¢%K¸…<¡Pž–ñÜsîjâó›¿þZ“›«/-5”•qãdˆÈPYɗɸ bNàòå\BØÑÅ«¡¼œˆ*V¯æ®‰Èª×‘¹¹ÙXUåÁ—Él™Å‰‰î_ëi¨ª"†ñ<ø÷" V½ÞÔÔÄux\énl_ßß³uw—; Òv•ßŰ? î]˜óºbÅ Û¢¶M›ˆa–,¡‹¾‚€ù¶mšœ¯1c:¬Å¢R›3‡‚î½7èO§¤”Ü}7·Š'‘غ†é`!ŸOD/½Ä—Jí—{„‡ó$îÜÆj4ºß=ž§'±,k6s÷õ‰Èj2k6»/ØÝØ.Ùh7w¹Ó m¥ºØöGÀ½Þ8Ô¶i“÷¤IáÏ,=ÚU@žC†xSýÊ+¦†"2VWW<þ¸¡²’ˆ|çÍU>ù¤Y.'–mݰAqà€«z¸À$))^©©Õ¯¼bjl$"õñãÍ_pûíÄë`…«[û]‰Í^ww¹ëAºo}iiÙC)t¿ö/:Û6mb<<ünºÉa¹ÿ¢Eæ–UF†hÐ ezzÁìÙµÚ–ö2Ä÷†JW®ÌŸ1ãÔÈ‘ÊC‡|çÏoùᇦ/¾`‚˜>МJI95bDÅc…ýíoÞ'º‰)ö?ÿaÆ3ãÇŸ3æì¤I‚€€¨7Þ "ž§gô{ïiÏž=5|øÉ¤¤ê—^ {üñk°2úw, Åé1cN ^¸h‘Wjj‡“"ì‹ô 6{=Øå.é¾Ì­­ò-[ôeen6à€))ÊÏÌÊîúèsÖdR¦§³f³Ïœ9IJ¶4#hrr 55â!CÄÉÉ•Jyà€8%…ûÁ2«F£ÊÊbFñ°a¢èèηb6«757‹¢¢¼.½¿nQ(TGްV«÷¤IÎ?:æ$#°F£êèQsk«g\œdäÈ®éYlöº½Ë]’Ó•è¢nw àZÒñïÀ.À€†.À€†.À€†.À€†.À€†.À€†.À€æîgz»h]Óºê®Zè¿p¾ï|û%OT>±ØoñTÙT"z¶êÙy>ófùÌrH;; <`°nð½ûxV{öÛ–oOkNëY}„GÄŸ9wÞ)d„ÜZ#kü þƒóºóoG¿-åKmi?íUìeˆ™í3»Óz\©0Tìhßñ׿v¸vuÅj£ÕHD¼'S#¢CLõJu_'@_¹O x OÀ¸éÊô\M®í#Ï©þíòíå†r.½³}g©¡Ô9í@iQ®©^3V:–ûøqÃÇóÎÍ;®>>Y6y¡ßB)Oú÷ê¿ßpî†S—á˦/×6®â9DÈíÓÜÚ¯š¿ ÷ïJ=®Äˆbv´ïÈVgw¸vKÛ+Y“ÄIáÂð$qÒù–:cû úÐxJpoн÷ÝË¥gÌLôLü8öcW™óGæó˜îõC>kül¦lf  ˆ¶Ê·þ³öŸ„>ò\Äs¶þÆyÝù;Šï¸¿ôþ-‰[ø ¿ÜPžê•ú\ÄsDdŸ&"µE]c¨*Ú•zÜ„´*dÕ뵯§%¦u¸vžï¼%þK¸ÄÿÕý_·v —]õ¹imi•†Ê\Mî U/´š[³ÔYõÆú®7±¦o[¾½=àv"b‰}³ö͉Þ_ˆxÁþùC’8éÝèwó4yÛÛ·§+Ó‹õÅ-¦–ï[¾ÿMþ›-­±jˆh¿rÿlŸÙ]©‡ˆ¶È·T*Îëο^óúšê5»ÚwÙrÎò™U¢/9£=sùíз:î(, 7ÿºµÔüc]Óº%EKö*ö­Æ¿”ýe¯bo׋QaˆI‘¤Ñ9ݹ CÅ=A÷8g›å3+ZÍç©2Tµš[w¶ïÌPeØÒ:«Žˆ¶Ë·Ï÷ß•zˆèõš×ÿÓðŸ{Jî‘[ä…ºÂ{Kïý_Óÿ¸lBF8]6}‹|K·š êxàÐÏ­?¿Zý*K¬óª"^Xºª[󯯦qS¦Ñ^£{_†*ÃV°D_BD)â”s¦HRŠõÅkc×6››Ëõåß þ†ˆž­zÖ–6²Æ³º³c¤c¶Ê·vZ—Þ&ß–>,=DBDwß¹M¾í¾àû¸U©^©¿´þB=Ø'€~¤ã§?ðò —b–÷ ?@D‹üõ¬?@DEº¢Aƒ¸´Áj "1OÜaN O¢µhÝT•¡Ì˜â=…!¦ëõ,ô_Èõˆh˜d˜Öú{ýQ¢¨B}a÷v ÿq9—À¹WгþExôü^z³©ÙWàË¥…DToêx*Bƒ©!@পí;¸7¢v½îÝDòåû¬•EÕù>ôcî¦Û÷ zÜ "†q|ÚÐuBžÐÌš¹tªWª€ìWìwΦ´(³ÕÙã¥ã]Õc%ëQõÑIÞ“ºUóKTmL¬‰ˆ:ý€~®“—>ü€C¢— ‚ÛÍí\Ú‡ïs‹ß-_4}±,`Y”(Ê>Ûë5¯›YóÝw»ªç„úÄ(É(î þrê±QX2¾Ì“çÙ“½è7: éÁôU€ˆF{.ÒÙ>¾:èUo¾÷â¢Å¿É3²F"ª0Tü­âoë[Ö¯‰\#ŠqUÏÎö7úÝxùõØéŠFz¼Œ=è®ÀO•]USeS߯ßÌšŒ€ˆ[“¶>SùÌeðˆ'ä VC  ðý˜÷—,sSOº2ý™ðgl{\M®&wº÷ôËÜ;€>Ç”ågfe¯X±¢w¶×bn‘ò¤Ýo3»`ösÏÍñ™c¿°ÎXwF{FoÕ‡{„òå~L¿‰5e«³'zOt^Õ­zl”åØ3c3†eØÞGd“ón̻ܯQxNøgqŸÝìwsWªè}½ý” PØÝ"†<øcË]‚pp7¯r d„öº[ͯm¿Îõ™ëÜøÃé|.AŸ[°´ÉÔ”¯Íïë@.0²Æ¯š¿z1âEWþ]ÿï…… ¹ÿíÍÀz ¿Ï% "ñ>Žý¸ÕÜÚ×\Ðjj}+ê­0°×¾ý–…µQŒ(&Dr{À혅 ýYoÏ%€~å0p®ž ‡¬Vk^^^yy¹V«íÛ€ 7]èœ.Îv€œËÝ;FãÅ… ÃØj¶O_âç›&O¼ÎÛ[ʲlú¡Cÿýâ+Wüé¯ü™eY–ey<^eUÕë{é•W×~ð>Ç«««>l؃÷ßg2™ìÓ,ËjµºÆÆ¦Ø˜èýééÖãj-Ë=wßýé_|ôÞ»ÝkI€^„.\ÃX"ÒétÎ+**+óÏŸ3k¦‡‡i´Úôƒ‡FÖÜÒ²s÷žæææ°°°æ\ïççg+URZº?ý N¯O4)Q¡PìÚ³wåŠ?åäåEFDÙa;LsLfó–m¿ýûí·¬V+˲Ÿ­ûrÌèѹÿ>ûM„†„üý…çW?ùÔÁŒÃ^IEU•¼½}SÚfo©Ô–ž5cºX,>züøäIÍfs§õ̘6ÕMMýú›ÿ*,.N<¸ÃƒÐçø«]U]SGD } À•”›[RV¶|émΫ„Bá+¯½®P*ǤŽ&¢þ³ö`ÆáåKo+*.~xõcõ 2™ìPÆá_6ý:&u´¿¿?íO?øÌó/š-¡@¸1--;7wîìÙ«Ÿx*..6>.Ž«ö›ï¿?‘›{ý¬™Ûwî:“_ Ñhu:íÔI“JJK]Uk¯ÃM0 “™•õø3Ï)”J//Éþôƒi[·NŸ:ÕËË‹ˆ^XórÁùóû¤‡„g9òë–­çÎç<°c÷îýéÞ|Ó‹/¿Úi†a¶mßñÒ«ÿàñxb±øDvÎú~¼nüx?n+­ò¶o¿û!((¨¦®ný?z{{ML$¢ÙðÏ·Þ6™ÍDôý?×74h4Z®ÍKJË^zõÑÑQI.¾_¶lûÍÏ×oêäI¶%Ͼ¸F§Ó🵭mmóæ\ÿä3Ï' LD?oÜ4"%%)1Á!m/7ïdæÑ¬‡ø³Õj--+ûîÇŸV=ô—ð°Pû<,ËF„‡ïÞ·O§Ó †“§N«Õj½^¯T©Ïré ãÇyŠDëøñ¦nhooï´ž©“'¹i""ª¬ªjjjN5ÊåÉ Ð§ð”®Y,‘N«ý×;Ž6–.¹5>6vÍ Ï=þô³Ó¦LÖh´»÷îûò³Oy<Þ›o¿;&uô¿^ÇãM¦U«{÷ƒ>ùð}­VûÞÞvëâ§Ìjµ–•—ßµò¾#G1 ñžíï'Çã>®^õp»B©Óißzãu­VëªZû¨\mbüØ1­ýtÆ´io¼ú2©Ôê•~pÝW_?ÿôSDÄ0LsKËú/×ñùüŠÊª;VÜc±˜ÿ÷Ù§,ËNž4ééç_¨«oèJžÈˆði›/¼å¹§žän±ßzûGŽÇmå`ÆáŸ¿ûÖ×LJÇã=öÔ3‡3ß² ¥µõËo¾½ý¶%O>ö7«ÕZQY¹âþÄb1× q±1ýûÝð°0÷ß/—¬e˜=ûö}¾öãä¡C5 1 g?@ˆu‘¾ ïÔ©”ädn QMmCL¦Ä!Cªª«^]ó¢R¥ª®©yïÿÞbYöí¿Ï¥u:Ñh,.)M28ýPF§õ°,몉¸œC“’vìÜuÿÊ{Ü´@B—®elG‡X+kµZGqËÍ7½õî¿õýƒ÷ßQXTTU]ýÊš¹" ÃÜuÇòç^Z£T*óNÒhµºó•JEDáaakž.$øÂ€–Kÿ~²Ü`–µ²,«ÑhJJK]Uëíím+v"'§ÃMœ?ߨÔôî[oj4"âóxKo]üÉç_<÷Ô“\ÁY3¦ "  $¢9×Ïær†…†·ªÓ<,Ëþ÷ã=<<Ôj5ét:†a¸åÜVæÎží)iµZ"<8þDv˲G·Z­÷ß»’‹94$dîõ³32p¥Äbñˆ”«ÕjµZÝ"‡oŸ¹s®ŽŠR*•W»,äüµUQY5(2’[n4‰H tøí&‰t:½^¯·Z­Ä²\kاsòòÆŽIµX,]©‡[ÕaqÙBC‚Ë**ð= ýV'oOøC“H$ÿ÷Ï7êõz‹Åb6›yè/Kî¸ÓGæsûÒÛLFc}C#½òÚ¶Ù¢ÜÀwy»¢¡±Q*•J¥RîêÖb±Ì™=Ëb±t%7ÕÚw \mbמ½ Ć„pÙX–i0Úär??"â¦CpEˆÈC(´ÿÈ0ÔÅ<:.më¶‚sçjjkkjj-—^ÇØ®ìÙ‹‰Æ¦¦Ðÿ›‚,KLttFæ[¨=˜ÆØÅ†u&o—'MâÒ\ã´´´8 Ðâ–ûùùº©êHÖ±ëgÍìV=6G*•F­V+‘Hº»S½O àÚŲDÄÝöîÐÑãÇuZJ¥ÎÍÍK–ÌÍå]½êa/ÛuC<†$K¬‹ý¥*wÓ¸»Üÿ~šL&rº“í¦Zûœ®6!‰X–5 "‘èÂr£ˆ,‹­8k7©×je/ €º’G£Ñ<°êQŸ¿tÉ­Ën[241qõ“OÙï‹ó~X–‹Å£Ñþ!s·¾Pœ3;oÈg‡i¡@Ƚ,ˆˆ’ù|þÑãǹ©öÔÍ™üü¥·.vh@[šeÙÓgÏ<öè*–e»^O‡MÄ%LFñ]’åð/ïÔ)–eßýà£ÈȈE oYõ— ú¯¾ŽŒˆ‘’òñ'ÿ­oh0™L55µÿzû݆ÆF«Õ:zäÈȈˆ>ùT£Ñ°,»gßþ¼S§†§¤øúúf=j6›Y–ýmÇÎ’ÒRÖî¹w#ßMµöѺÚDlLLʰäO?_×ÒÚʲ왳ùi[¶ÞrÓ\q‡¿ÞÏÉîá€û<¾>>DT^Q¡×ëFã†_­¨¬4Möyª`YvÒuüýýÞ}ÿC…RiµZ÷ìÛìÄ [æªêš×ÿõVvN®›ÔilÔYÚ^rRbEe%—¶Z­þõ!©Túø3Ï:œi4Y–­­«{ëÝ÷¶íØù·GVøû³Ÿ5\¨öbúȱcÓ¦Lé^=.šˆSQY™<4Éáˆô8×,–H«Õ¾òºã\‚ø¸¸…7ßt"'gý—ë z=Ç{ö©'Ÿ}áÅ)“'½²æÅÇŸ~öî{ï÷óókkk–<ô‰Õ²,k±XþþâóÏ<ÿâ’;î’J½” å}+ï–6&&.6V­ÖdçæD è°±X, ¹— …B+Ëææ´Z­cF‰D"‘¨½½Û™L¦Ñhló.øøøX,ûÉâzΫ²Ù7àƒ«¹ç®»&ŒÇ-áñx‰D.o?_T¨×BCB¸[¶¼¼¼x<wȸ´\.¯¬®g€:­ÇMi4Ú»î½oý—ë¤^^¶@Ÿû½K0wîܾ _ … ÃX­V‡æ0 #†1›Í¶9µ|>ŸÏç³,ËÍ-¶Ç½çÇö{½®ªít¶å<{WÒÙMg¶MX,îv¸åÒÏ®b …Dd›Ú{¥ðx<ö’‡ËÈ<’~(cÍóÏ:Ô#ˆÈ}ãÛ…Bç£Ùƒz8Ûvì,.)}òoº}+@_ÂÀ!G¶‹x,Ë:¯2›Í®®ª¶ÓM¸Y~eÙ_³,ëê®ç쮼tÖŒéi[·–”–ÅÇÅÚ×Ó­ª\5uwë!"“É´õ·íïýß¿züfU€^€7ÀµÃh4¾òÒKV¶¿ÜW*UÏ?ý† @?‡§pM‘yK}d WoxU·„„w8  ÿ@—®)ý¤3ÀéÁX#€Þ‡Cž hè h80 ]xJ ‹õz½H$êÛh —]èÄÇÇ&$$ W0 \èŒ5ŠˆNŸ>­Õjû4èUº</55555õŠoÀjµæåå•——_Û ‰D7jÔ(ïjMÏ -ɱµ' œ½î×dÛ^;umì 8]áŠÃIÕ3Wê”))ÊÏÌÊ^±bÅ•ŠÌAnnn[[Ûĉ½®éŸs×h4YYYþþþW£[Å -ɱµ' œ½î×dÛ^;umì 8]áŠÃIÕ3Wêôªw ~ùöî;®‰óøs™$„ ²AÑ"ŠuoÅÙj­«Vë¬Z­£Z­ZG÷°¶¶µ~ÛŸÖÒåj«u¡ˆ¢8À‚‚ˆì½!!;w÷üþ8H#B@$Ÿ÷Ë—¯Ë“çžñ¹çŽ<¹‘#G&NœÈçó;÷CN ‚P©TQQQ3fÌh£*,$’ m<1Æ–ÓëöÑ)cÛ9:Õ9z, W`v0¨Lc® œæ³´ŽB¡àñx4M·uEOƘÇãµé. ‰$C7ž–ÓëöÑ)cÛ9:Õ9z, W`v0¨Lc® m>%@YÈFm‡¹¬…D’¡§Eõº}tÊØvŽNuŽ^ Ø *Ó˜å#h{L ༹Xf$-³×í£SƶstªsôX®Àì`Pµ?˜:el;G§:G/€…€á ÌUûë Sîo¿qbbê^‰¨ðpͬYH hv]«U«ÈɓɈˆ–VÚñ™Ésr TªÝºY³ÙÚD)E­HOÓã¿­­YØ&L>.ܼY|àÀ½{÷Ê ‚°_²¤÷!æm[llÞß§ïÞ=!ôÖ[çfÌ9Ò»A}éf±jUÌäɾ¦­nzls‹$Ü»WTND€³ý’A½‡ø›9¶&3¡S{ KÕêí~~º‰ùJåûÙÙ«½¼BE"}+®zôh²“S„££) 5ÈäM“’úàßS§22³yzxN›ò|ïÐgÌÛ¶–Šüý¬¬líK+Up`à„ñã¬øü'Õ$FùûYÙÙë׬¶³³3¹œmÓÜJL¼{iýšÕ¦­õMµÏpýr×7C‡ Ø¿¿9šl­™:zôÁƒ‡cG:d°¾<­ómç 6¬U?}l$Ürœ¤$îéÓl>ŸÍç³¹\Nv¶`íZÑàÁDnn³ërObgd4›·goçNÚf@ŒdlMÍŸ¥¥;rrtU4ýwyyZmB{ væå™°¢ Lî5Æøë¯oŽ{03S|8õìÙì%KêN•¦¥Uþýwzy¹" Àþå—C­˜ôþI sU*Ƀ¨ÕÔ°a^“&ùk˹|¹ **‹¦ñ„ ~am £¢Òì<¶¥•'¥—KÎö/÷ qZ!„jUêcÉf„Iͺ–]hkÅŸÕ'(ØÕéZva•\ù\ÏmÇ’yÚÛôóvkŸN5¹"®OÔ·›è®Èì#3\\ÎTU]‹m9œY..ÁB¡i-1­~ûÍ£k×ys^ÒÝ4¯.Zx6úüõ„„©Ï?s1¶GpX,>}~áüWìíìÊ+*¢ÎE———»»»Oˆëàà ]1%õAüb±ØÉÉiôÈ‘^ž¡«×ã ‹ŠÔjõÉÓgÆEŒår8Jx¼?Ïû†õFUTTbŒ£¢£{…„xzÔ]xvï~ŠR©|¶_¸n]"‘uƒzsrsc.ÆÖÔˆ==ºN?ζþÈ —.wT©Ug£Ïk4š¾aaCjЖ›·nçäåU×Ôü}ìøè‘#¾ÒGÌøh3)†ÛY^Yq)î Ëv,âóyõçSØ·oÛÄ?|˜#•ZíÛg;p ;) ׇÒp^|üÏS§²%Í÷ßß<ø·¼< óÖ¶m×vï¾=gÎ ‰Dóðaͼy'üñ.óÖîÝ·_xáïk׊ò󥯼rê矓µ-\¼øttt.Æ8>¾¸  ¶¸Xvút¶FCiÓM®ôÀ{ãǹ~½X©¤ÿþ;}èÐß“’Ê´!ji|´+š[•:öQÞü¡¤æñØrÙ_®}cX}lS2‡óç©Ôl‰Jó}ÜÁ»~Ë«–`ŒË¥ò·ÿŠyíàÙM'ãÊeÊ’Øýg주ìJÉ«DÕ(ê®Àɯ–,ùóL¹LÑ>Ò·b]"BXÏnÂäa2”k4ogd¼–ž¾);»œ¢þ©¨q÷nlM¹Ó,…Bqûvâs“&2ß#j ‚KÑgg¼8 c¼÷§ÿûûØ¿o¿³>þÆMFó -m᫯EÇÄÈŠcÿžXðêké1k8uzùªÕ÷RRÔÍ…ØK‹_#ýQÆøÞýû¥eå•UW¯_' –ðXpÃ]‹O â™^=1Æ_ûýýÔTí[QÑÑGþù§A]wî&ëÖ{åÚµ%o,»ríºL.;ü×ß _{½¤´”YýÇÿÛÿÇá÷l•Éå¹ùù›¶mÿëØñíIy𠸸¤¦ºæêõëJ•Ê@i "Ö¢hcŒ ·s×·ßíÚýMÓ/_~såÛ›·íøçø¿,‚øçßß^»Ž$IcòØX†£ñçá#kÖoHºw¿´¬lËöŽŸ\sð Íf³•JîĉÖkÖÔDGcíKÍ'Ÿp**Tª9tËåú²™-fbÚ&ÇyÄ»þþŸeeMqtì&hË¡1^öèÑpGǃ½{³1V"4ñöí5™™çCCÿ׫״;wžwt”PÔ¡òò¸þý9Ò½{EI)êÐ3Ïèž•bœ­TêkÀÑŠ ãºwç˜t® ¥½ÎϯU©(ooQƒ1Ɖ„YV«© .O™øë¯S WW«‡=ðñÇñ{öŒEqüxFRÒRgg+‹5uê‘'²^}5´¸Xöé§ Ë–õû꫱4M§¥U |ÀÚšËTDA°0ÆŸ|2ª¢B)•ªš¦P(´é¦UŠúñÇä%Kú|÷Ý8š¦iš Ù•ýÌ3ΡúI_;}·—_S«")o{ƒ±%© '.Oéøë‚©ÂÕ õÐ>>¿gæX&CZiUâ{K<5Ÿûþà{'ãÎ,›µæŸ˜¨ÔìY}‚B%¥; ã{øcšj‡NÕuM©\þè‘nJ E1¥éÛM¢ŸyFûW´®kryâ!,–š ž»}û½ìì˽{›ö½KK{QZV¦ÖhÜ\] lDÑ11?íù.¤G©TºöÝá}û|úá,K­Ñ,_¹jç7ßþ°ûk„Ð_ÇŽO›:eÃ;kišÆ¿8{εøønþ+—/«K ùg}(—Ë?ùb§¾ÈÎÍýè³Ï™ö”•WŸÙºu PªTb¥¤iYZ}Ätï.5&Ú©ii†K=r„J¥’Ëå]\œBcÇ0=uwsE©T*còØX¢Ÿpƒ¦é%‹2‡27W×qcǴ瑆ë}ìÃU·kÍÝ&Ûœ‘™id„›eò‘csñbÿ~ýDÖÖãáC‡°X¬˜‹±Øà˜÷öòô÷óÓvðâåËÆ &ìY7oß–É导<‡©¥«»û–\»¸ŽÙwÆÖh³fD”–¢Ñ£BÜÜ\„gñb‡ú‹´¥!Ä®¨Ðf6‡Ô¹„ËÈlO;Z­þ!$dÔÍ›‘¥¥Ï;;3‰¹j5BhñýûÚ”2÷[W¤I~ìïRZêÄå®èÚU£Rµ¦ö%žžK<=5juk 1’³³!T^.küVJJIâÞ½] d||DÚ›ºw·W(Ȳ2y—.B„»»Hû M×íiùùR//;¯n×£(ªG§Ó§3Œl˜i•"„ ùi7o–dfÖdfÖPmBXÌÂÙZˆ*¯m*¶Å${{¸ˆe|ìtºéd¯Ðeµu×°vw²ÃXû–-B(¯¦vZXÐÊÃg¥*M~$¥¸â»YãÛ¯W!„|‚ý{ë¦Ü“J$$ ƒ»IƒBº×Œqw.!”¯V÷lÅÆs°·GUUW7~+3+›¢¨ÀîÝB.ÎÎE!„ŠKJBÛ>øˆÅªûbH­V#„ªkÄ666 …âØ‰“©RtCÎp 2ûûû}¼c;³L„B¡|eñâ]ß~÷é;ZÚÓ²²r‚ Ü\]™—c/OO•JUU]íèà€rvvÒîG¸©–·¨4mÄtífKæñxÌ[Lù¼ú»S˜—Ì)UcòÞXMF£´¬ÌÍÕ•Ãf3Õ¢(_Ÿ¸«× ÇÊŒ`¸v´áÚú6·(Âm¤¤¤ô~Jª›«ëêuï2)'&6vÑüW ŒyŠ¢ÆGŒýãà¡·—/K$wî&}ùéÇcö¬’ÒR‘H$Õý)§(*bÌhŠ¢b/Ç!=Áyâ;£®záP“+r<@UUdß¾cÄf#„èO>ÁõC š °§'Ò~k«?Ö™†“­ƒ0±=õÓÇg¸Ü×½¼väç÷¯ï)›ÅB}d£Až,Æø|i©Œ¢jH2®¼|€v—ÆX÷J †+׿©‡%KH2M&[êåõU·n »šZÚüåïÚÕÚÃÃæÊ•Â^hðÖ¬Y'ÂÃ]ùe¢•c¤Tª‚º]@©Ô Äœ‚b®jØGŒ±HÄS*IZ縠P¨´°~™¹Âü±tÓ*­­UuÃa¿ñFß7ßì×§û”)‡t+mÍ×-Ž­­µ‡½Í•¬Âz5Ší/'Â=]™;ÑŠËÁ)Õj·¾› Bˆ¬o§Rç¡ •!Äe³'tóÀMËN+« tu uslü‡­:¥%•Ju_*˜ká06°› í–fº¦ó0.…Fƒâ²X¦µ§¥k9;;uéÒånròÈáüµaó–àà õOPaJfîx[¹|™µvÆB Áríâ"“É–._Áa³gNqÖŒé=‚‚V®}5çJhÜxŒ±LößL’ ˆ¡ƒŸ>{N;ƒÒ®¢Ñh×¥»Ìçó1Æ*•Š_ÿœx•Z…¢êƒßø©)ú‚iLiM®nL´/™ùŸ9íªÓ6dLžf7V“Ñ*µZ÷PÆœ”h·# ׎6\ë×5½Í-а1LX+&6– ˆ‰ãÇi?y;;;Ç\¼˜’úÀð˜=bÄ?þt'))¿ ÀÙÉ©OXX­DbÒž%dN05¨Å@p̾3¶F{\8d%Ú±9;«'MBÑAA!—+{öYæŸR£!Ï£t~Ë̘<ÆgëH’|ßÇdžÃٓä !.I>keÅüÓ¨TçJJQ©Ñ¬ÎÊú {÷ù]»¾•¥0øíÅ4gçKÏ>ÛøßWÁÁox{·f>`Œé¹s{9’–-ÖM¿p!¯¬L>~|7„P·nö¡[·JµïÞ¸QlcÃsw·6P²¿¿}qqmNÎÅ&$ß0Ó*½y³¤°PúÏ?3—- 0  ›­–HZuƦ50¦ç>ÛëÈ´ìÊÇcû(¯¬V>¾g7„P7g{„Э|næÛXñÜm뺟S¤}‹Yp±rX=üN¤dý•ôèåg{š<h v“9ãu.̯­E´×acÞ^!6›Õ#8ˆù§Ñh®^¿ÎçóS<(//ßõÅg3_œÖ³GŒ±TÚÄy!%ÓÚ¼üæbTÿ7#+;ÇðºÌC?RÓÒ´))©„B¡KýÉÏ1­4c¢mÞvêcäÆjÀÓã‚ßX~ IDAT¢¢¢¨ø¿ÆßOI5c«šõ£ ×Ö×Òš›KÌÅ‹á}ú,^0á+ó˜kÞ^Áb±.^¾lxÌ;99†öêuåêõØKq“'N HÒÔ=««\¡ÈÏ/Ц¬Û¸éðÑ¿ ç‰ïŒº:ZÍ;}šwú4ïÔ)«ýûí'Mâ^ºDîÝ«b³1Æê€>v³gaŒCBû÷ïºuëÕâb)Æ8>¾hß¾äùóC™ @Ô«½fâD_WWëU«.VU)h>üðüù¤ó¥‘nËI’nnZ¥NNB„Pzz©R©T©Ô{÷ÞMK«T©ÈV†ÈôØŽêçj+šñó¿çæ’­&©˜ôÜUÿ\ôq²›Ý'câêØß·ëÖ3W‹%RŒq|NѾøäùBqý~÷¿«I ¹Åãô²ªÎ]èëç`KÓô´Þ§S3 j$3B»›Ð°Öt 7µ¢vß1°›è®†ú_qqBm-Æ8].ÿ /o”££×n½˜7ç%'GÇõïmJ¸y‹¢(FsãÖ­_ïîêî1fLƒ’==Žv»fŒ%I!èÍc³øytòéæ®©5o§PS×_ÕmVý» ®¿ÁF»âtW×<²Ùb’ôv’î7hÓ^|÷õW;>þdÓÖml6cLÓtp`àÛÞÿï÷Ôê»I’ä¶-›V¯{wÞ¢%UUU=Cz¬Y¹cؽûÈáÃ6mÝîåéQ#–ô5bøÉ3gºtq™6åy7W×ß.\|mù[_ñ¹¾7,+;gÛ‡1Ël6ÛÓÃcýÚ5“ÆS«Õ çÍûlçW//XÄáplmlf͘ž“â[—îòÆõëÖ®ß0gþB[[[±X<°ÿ% èÔ«³)ë>J齃$ÉfJÓÿ·Öp´›/¹¾a:Ÿ(tŽ$“ÇðÆÒ ‚ ¶lܰië¶sæ ‹õꢅ‡ŽmÏ# ‚áú_ðžüpmY-MµÙÀ6j~(èéo‹ò_¸t™Çå8PwEŠ¢ÆŒyãÖ­;II†Çüð¡C¾þö»>½{3÷c˜¶gQõþ¦ë7nš>g®Hd-K/\Ð3¤‡à˜}gl "#=åêõ[óçÏo£ "##Çoñ‚B¡ÐÊÊJû’m …B÷ï+‹Å²8ññ¸¸ùû“}ûÖÖÖbŒííí•J¥R©4!$àp„—/c¦zèP‚ËÕ—­EΞ=ÛÑ"ikkKQTƒÏå"‘ˆÇãI¥RµZÍb±"Q¼X\¬Rù …}E¢ÚÚZ' ™§ „¸\®D"!I’ceuY*ÕPÔP>¿™ A«={!dB¯B,ËÚÚ:;[rï^Eá  §ž=d2™öœ/›Íæñ„W¯”•É‚‚œBC¥õOš×B!@Àår™‡µq¹\†—GQxøpokk‚Ïç×ÔÔ „4‡C…âpø—/j4ÔС]hš¯M7­R‘HtûvYnnMp°sÏžN‰êÂ…¼  ;OOAƒµÚ5¶U’{Eeƒ\zº5Š­@x5« L" rs u¯ëf^´ÿW¿]Z5ÏÓÑîzv¡Àj¨¿©R2+JTêÞŸG~5}ì´_ZÕšN‰D"‹Õày|l6ÛÎή¶¶V£Ñ4¹›èmò4šþwï^ ÷´¶¾^ScÇåµ³#år®€jý¦)*.~”‘IÓ”¯¿ŸŸvÓ4-,K(&ß¿_QQééá¨=î‰D¢´‡‹Š‹ý|}ýýü¤RÙ­ÄÛÞ^^.ÎÎ\.÷NR’FCö~¦‡ÃÑW‚.îã¿ìFÓ´R©d.™åóùUÕÕiÚØØ„…†2‘¯­­EéÖÅçóµË\.—oe•””\U]íããÝ= À˜ýH—µµ5‹Åbja³ÙF–Ö¢h·¨dGGG怌êžX,¶±±i6EQ6–áCqâ»4M‡÷ ãóùÚCY‹Àpí4ÃUwuãkÑm³mÔ"¦ *¡PÈŒá5òù|kkk&zÆÚ9¶6<ÎÛÃúÔý§>›õJß š¦åòÖÞŒŽžÐ€±!ˆ·ÝÜwÍd0ìÁS†+0;Tí¦OËŒ¤eöº}´slñã?¤›ÎÜ€e®ZÌUT‹*mýõhÆÒhS0\ÙÁ jOÏO•Úœ%xšXf$-³×í£SƶstªsôX®Àì`Pµ?˜‚é)W¯ß2K›O"#=% {È“nàÉ€'`Ñ`J€Eƒ) ¦X4˜`Ñ`J€Eƒ) ¦X4˜`Ñ`J€Eƒ) ¦X4˜`Ñ`J€Eƒ) ¦X4˜`Ñ`J€Eƒ) ¦X4˜`Ñ`J€Eƒ)ÓFåþžõ{JMÊø®ãG¸0{áŸßÿ|Ë a®ÃZSÈŠÑEÑ›B7µ¾=?<ü¡DQòn¯w…¡6QNÊ?Lþð%¿—BB[_…®óÿ/×¾´æX÷´ï9Ñc"ŸÍgRhLgK³lÌ[/è”Úä,šVÿ˜þã¹¢s¿fýª›þGö?güÜx¹¥âJãr¤9­ld¾,ÿBÉ…Æé&4,¡<áTÁ©=÷è&ªiõ¹¢s%ŠÃëšP]š8-¶$–M°Ù›E°òdyŸÞûô¥Ë/É‹˜ JJy(çP‹Ê«MÎ\*¹$#e/x¿p<ïx‰¢ÄMàÆ¤?¨y §ä—;Ófõ9œsx¢ÇÄžö=Û¡:WôAŸ´/s¤9Ëâ—mLÜx`è-- X²6™œ)<dôzàëÇóŽŸ-:» `BèréåyŠRË;fõÑ.OöœÌeq“«“¯–]­VW»ð]Æ{Œ÷¶öÖ––.I?[xVA)‚í‚'{Nfl&=µ&õlÑY Sýûw®Í_¦,;‘¢TYê)ô|Îó9G¾£ö­›7/—^¦1­›_—n#™†eÕf-:[­ªö²öšâ5ÅŽg×äŠÃ]‡Ê ?Húà·á¿qˆ&¢Úd9«3Ðx|E¾ïô|gýíõ·+o÷sê×à]5­æ±xÆ”,ù/«Å×Ê®Mò˜äbåæUŤ'V&–*J+T±%±7*nh—ILþ÷÷â«‹ïTÞQ’ʳEg_ºôÒCñCf­sEçæÅÍ»Uy«JUõeÊ—oÆ¿Ic!tµìêºÛëd¤ì‘äÑš›kŽäaò§Ô¤ÌŒyªà”T#=œsxFìŒ4qóVdfä›ñoÞ®¼]¤(Zw{Ýßy7n¼n#IL^*¹4çòœ‹%ÅñoY¿Íº4«XQÜd¯ DlÝœ'Ëû%ã—Æïê+§Au߬ánÃy,ÞÍŠ›Ú” UÅ/™¿¼xñÅ[•·Œ,X óŸ%ˆ.ަ=ÁcB(¢kÄç÷?ϪÍò·ñ_²ªRU)§ä;ûíDÉI¹vù`öÁiÞÓ˜;}IL¾pá…K¥—‚ì‚d¤ì£äføÌXßk=B(]’>÷òܸÒ8„УÚGGFa¾D_¿ìBÉ…™¾31Â[ïn w ÿ¼ßç‚£ Ëâ—}|ïãÈ¡‘eʲ½÷ÎòÅ•Q›1?n¾€#hÐxÝFªiõ)_ŒtùIßOX«F]³àÊ‚Ò~ØÑgG“÷ù.ê¶hߣ}cÝÇúˆ|´éÊÑ­Î@ã ;‡à¸ Ü´·.ÄÇË;&âˆ|E¾-ÙzÀâ˜ÿ,Á™Â3ýû;ñBcÜǰ–öD>{î}§ç;̲šRˆ“r„Ðõòë2R¶¸ûbæ­@ÛÀ-½·¸X¹ „Æw¯½¨&Ð6PA*BéâôiΫÝ_e.ݰ¯¼’Z“*ÑH®”^¡1½,x³J7›n㺎3ܪû5÷K%K—²BÈžg?ËwVLIŒUv[èiíùQòGá––c ñ†Û©Åaq(L1Ëv\»a;¢"¢føÎ0ru`™Z{– 2ò¿ï°çÏŸ_$/J®Jvº¿výµº NTQ”ö³x“ØûhîÑ{Õ÷òdy¹²\Š®û\[ +qDÎ|gmÎ)^S˜í-˺òåù¡÷ï¾Ï|øF©(B¨RUY(/t¸‰8"m曀¸²8­*’ˆÐý–ÝÏÆOE©*U•Ì„§1.‹»9tó«×^ý'÷ŸÑî£[TŽÆÛrm ´S«BY1Ày³ÜϹs¢†¡»™Ðe† ‡æÏŸ¯]>Sx† ˆ‰µ7;ðbŠc’«“õ=ž_FÊ^Ž{™M°gûΞî3=È.heÂJæ-G@#ºÉµš|®óaze•ÖkÝtW+WG ¦Õº‰Zc¸_<#LÒ$‡]%’&µÿëê:ÃgÆî»CC[TŽÆn'#£6C¢‘è{Þ‘î6@+22ÒÌ÷œ)<îþfЛڔ*UÕÅ’‹Q…Qú¦IUI¥ŠÒÃ#ûÛø3)2RÆ,xY{ÉIyŽ4Gûû›ñor¤¯v?‘BHÀ„;…3)wªî$”'„;…{[{—+Ë äžBϺz«“ ÷ÅÇÚ!”\Üß¹?“’\,ä™+— x+ø­Ø’ØÏï}Þ¢r 4Þpu!Ó»SwÛóìGºl63ºÌy/Áñƒi΄®tùŽýœú/>Ï<)H{QvÙ–g‹bžÀCcúì?²¥ÙÌ7úœx =?¿ÿ93I8]púfÅÍ^ö½ô5ÀOäêº+uW™² !T$/Ú~w{¡¼!4Âu„#ßqGÒ±ZŒ>]púzùu}å0 ² êeßëëԯ˕å¡»Uwä™â5E{a>BŽpÃ3«™—Í–ÃTg ñihMlIllIìÅ’‹GrŽ,ºº(¡"aKè+¶•6ŠR*8õgÖŸ†[ ,œ9Ïœ)<Ãcñ´×Ðkë:îFò„Šw¡û¹Œs/]ziÿýÚå}Cöt¹úæj_‘oµª:Ä>d”Û¨ãùǽ¬½æøÍÙ¶}í­µcÎŽ±åÙÖ¨kw_Üש¯6|ØçÕ7V>ó¼ß©BUÑ˾׺^ëB|6kï­7FDGØÁzµû«Mþįn#·ôÞòö·'ÇL¶ãÚU««º \d覭á®ÃǺ=_|žyi Ýêô5¾±ZMí;·ênÈr„½ì{í´·cm†ke×ΞSP /k/c ,‘‘žÐ=Ääõ###¿NÄäµ²k¦†»Çk—Ù;¹:¹DQâ+ò ´ ”‘²keׂ삘,““òĪD5­² òz4[ …©»Uw+U•B×ÖK4’Û•·1ÆáNáú~tL·‘l‚­¦Õw*ïT««½­½CìM”¾rTg ñÆ““ò¹qs§zM}Þëù„Š{žý`—Á&·tb‘‘‘í:%í#ÌÜ}ºð4L €>‘‘‘æÿ]Ð4ùD&3ÿ¯ƒ¥·CoÝ_c ˜trÆÜ},\8€Eƒ) ¦X4˜`Ñ`J€EëO*VÿPúÃ}ù}1%öâ{M´Ÿ8Ãq›`›\à‘Ê#1â˜Æé«ÜW ‚×ä®™æ0m˜í°V4Ù+sVªi5Bh¯ÿ^„‚V¤*R«È*¾€U“ççòŸjB¯¹¾Ö׺o;·X '–àžüÞ°”a±’Øá¶Ãç8Ïqâ8½›ûîË/ÓˆnvÝŸÊ~ú¶äÛ&ËŒª‰âœÿê~зút¶*Ûü=iοUÿÒˆ#„nËnM:5mêŠìÃR†-Ê\¤Á„PWn×`Að¿Õÿ©‹Ú¿…À=ù³_}Ù…Ûål³–€I™l?y^Ƽó5çÇÙ3¼n’,IFËš|ËšmýßwM¾•Ò;…E<™¹ÐxûñÓ§c„ßÎyÛïw1ä¢-Ûö¢ä₌{K÷®p[1Þ~üxûñŸ}þDš,ГŸdª2C…¡ÚùBh´Ýèá¶Ã«©jmJ±ºøPå¡bM±Ïg¦ÓL® Bè\͹\U®+ÿ¨øc¦ÓL.Á5²ÆëÒëþ|ÿ®¼®¡«ÿ †*iåÑÊ£*¬j3t¼ýxmÎ[Ò['ªO „^tzÑše®LŸd?É@“BǪŽõ±îSIV­<º¶ëZ'ŽS㨠²”Y;Û3–©ñåG/Ÿ¬>¹¸Ëb)%ÝQ¸ã5××¶znEÝ–Ýž’6%Ph¸ILUýõwàß}¬ûè ‘=ÇžiI²<9FsYrYBIV¸­ÐSÚŒùÏ,í²t«×VæF^]MÎBݬº]éuå—n¿<ïð|’Ôv(³Ül“^pxÁÀ|@Wš"íTõ©{ò{ݬº ÙBcVÀ¼Úä^‚¥]–"„tÏè›0¸7Â."Â.!”«ÊÝ_¶ÿ§²ŸlÙ¶{Ì<heÎJí3I•´!TN–Ûsì ´AÄ5yö 1概òTyÎ\gÝ‹yºñ»•iÊBÍ6ɃçaL½¡YN³f9ÍSâ¹æ.É\r®Ç9#WÀ\ÚêöbÝYù@¶*{SÞ¦¼>Ð>˜ß‡ï³Ýk{‘¦(Zý1ú˜ùؽÙc³ˆ-Ò]±ÉÏñ¦a5uª„E°œUÐÞ®Ðl“¢á’rU¹Yª¬Q¶£˜—vl»ÙN³ßÍ{WJI” @[kÃ'1³Ý…Æ9ŽqµqgÅg—Y-ÓMÇÛ°mBÝ­º#„„lá`›ÁÌ[ Ò„Ë’ËÚ—m$€ ¦ÄÙªl?¾“’$ObZߤûòûK³–Þë}Oû<¢Zº–M°hæÒ¶ç_Úe©ùBÈŽm7ÅaÊ®¢]G*0ñËhÙòQ5Qóœç!„º[u·ß–¿­DS‚ÊWç¯ÎY«ÊÕ– ûœ"3m7Ú‹çµ1o£”’b„”H‘§07H4Û¤f ²d˶Ý^°¹âè¡âáÿ•þßhÛÑ|¿-ú€Oþw >óþÌŠeµ&wͪœU–@A+¸÷-··wYÌdøÞïûyóúßëïÂu)Ó”… Ã>òþˆyË‹ïõ}É÷cRÇ:nÞKn¸w—ï®Å™‹{&õ°ž<ÏN3Ò•éÍ6ÉŽÇ]¾»Vç¬>^u܆mSEV ³ö¥Ï—fl?F"2ÒSº‡˜¼~ddäüùó[ߎJ²2Q–(§äî<÷`A0ó^Z$&oHo”kʽùÞºóÑ`M¬$–Äd„]‡0vzSAVˆX"+–•<¦”X©¡5Wk¯ X‚a¶ÃVd¯Ð`;€}†›d€o¢ïNßÓ§3/Å”8Y–,¦ÄV==tsv½ÝõGÿŸsxÎÈ`šÈÈÈ'–€áÄqbž8Ô$ÁiòJ}æQE-­Ë™ãÜlž2MYø½píçòMÉÉ…Í››m’ñìØvÃl‡µ¦Z¯£L :wžû[no-Ï^~°ò —à&H‚¬‚´?¨l²]Å»"Ë#7!VÛÊZ0L ôzÏã½_¸)½© /;¿<Êv”ñ×&5é3ŸÏš½z€h€+×u¶ÓìÞÖ½[SF‚)!!‚é7Z4`ÌI†Á6ƒÛúùªèjÛ‡:83œ% iúÎ;ÙÙÙr¹¼õ¥ÚšP(ô÷÷ Cf™ܽ{·ººzâĉÖÖÖ­/ ÐÖd2Ùõë×ïÞ½‹Ì2%ÈÌÌœ8q"ÇS«Õ­/ Øi/ IDATÐÖx<ÞÀ£¢¢Y¦ …‚ÇãÑ4Ýú¢ícÌãñ˜+ÿÍóÄ!˜ðtÁ3 æ™h‹<]`J€Eƒ) ¦X4˜`Ñ`J°Qç¢ãn4N>lèè‘#Ú¿=–àVbâ…ØKë׬6œ­¼¼üÏÃGÒ32¤R™»›ë°!C&Œ‹`±X&׫o[ÏŸ7×ßÏ÷Ó/wŽ=ª_ß¾&— L –âQffÜÕ«£GlÎá°Ûá v䯿Ujõ¼9/µuEJQQñå+WÖ­^e Oú£Œ·V¯qsí2aÜ8k¡ðQfæ—_sáËÏ>a„áòõEUß¶f±Œñ¥Ëq!ÁÁ¸üå€:0%X ¡pû–Í ÒI’$I²­kOÏÈP(w´$„ýÞÿK¤‹³ó¯û÷q8Œ1›Í;zôÊ5k¯]¿>dÐ ÃÅ닪¾m­V«iš¾x.J­V·ÃF€§L –#„ Eã7rrsS¤EŒÅãñB2¹<öÒå>a½»º»—WTD‹.//wwwŸ1ÖÁÁA»VFfæ…ØK ¥2°[·qcǰÙì¨èè^!!žL†{÷S”Jå³ý¯^/,*R«Õ'OŸ1–Ëá(VWã*´ ޹[S#öôè:qü8[[[&ýÂ¥KÁÝË++.Å]áq¹“'NôôèzþÂÅ{))ööÏOžäìädL¦´”Ôñ7nˆÅb''§Ñ#GzyzèÖ¢R«ÎFŸ×h4}Æ þï³{âÝ»×®ÇÓ8aŒêÿFTWW_‹Oèâëã­ÛÇ‚ÂÂà  š¦U*“Ò7¬÷€þÏJ¥2í—&ÃÕ8ªÆlk„PÜÕ«ž]\\šíËýÔÔØËq¡ˆÑ£ANnÞð¡C 4 !s1¶GpX,>}~áüWìíìšlt(ì•+–;:¹˜¼~RRB(00Ð|M€6q+11#+륙3¿Åår·}ð¡X" ïÛ!ôÍ÷{.Å]yiæŒôG–­\U\Rbkk{9îÊ‘¿ÿ ïÛÇÑÑ!t!öÒú›HŠâr¸;v+1qܘ1+×¼ãïïàïÏùÇ7ÇŽu:êì½”T™L®Pȇ œ‘™©¯X]MVAÄÕë×W¯ß –H¬­…b/;qbİaÖÖÖ¡÷¶lMMK‹¹ëêÚ%îÚµþ=‘ú íÎÝ$g'§3çÎ]ˆ½4õ¹É›¶no6A'OŸÙ¼}‹Å7oÝþíσû÷wtt`j©¬®úõ÷?]\\ ŠŠ~ûó M  „ÐÁ#G?þì I"„þ8x¸¸¤D&“31ÏÈÌÚ¼}‡wðã2î&%Ç߸áíååéÑ• „MÓSž›àïGQB(íáÃ&ÃÕ ª)mzsÅÛ]ºt ìÞÍp_Μ=·yÛAÐ4} ò·Ü¼¼«×ã§>7Ù@“BïnÚ¢P(¿ù~OeUÕøˆ±B ¥ÚSzz:‚³ËRÈåŸ~¹³AúÌé/øùmyoÃêuï:D&“Ÿ;óó{Y,Ö'_ì ïÛçÓ?`±XjfùÊU;¿ùö‡Ý_Ëåò¯¾Ù=ãÅiï¬^EÓtVvöÜ…‹¯Å'b,í!‘Åb1/W._V#–(òÏ>úP.—ë+V·Uúªèß/üÛ={GþÑö­¡Z©t᫯í;ðËÆuï „‚(¯¨øíç}l6;'7oÎüEîÿq/ÆxÈàÁë6¾WT\bLO®;>mê” ï¬¥icüâì9×âã»ø3µ\Š»rø÷_ííìX,ÖªwÖÇ]¹:mÊó••?Gþ:{Æôµ«Þ¦i:'7wþ’¥€ ˆ¿Ÿï·»vvuwoð'cù¯­^÷î–í;ìííÃû„…÷éólx_§ú3c}áÒjƒË‡šÜÖC Êœ æ¦}‘+{ú¿¹/Í^±ìMŒñƒ‡¿ö†Ÿ¯/ÆØ@“˜Â£cb~Úó]H2™Œ¦éVŽ[h0%XÜÔÅ$˜Æ4M‡…†Nynòg;w)UÊ×–,öôðx˜žž—Ÿ¿mË&f‚ æÎyiÃæ-‰äNR’L.åå9µµµ¡®îî[6npíRwÆõñC"Æ+ ŒiŒ±L&ËÈÌÔW¬vµ›·o7YEjZZiYÙÎÏ>‘Éd!6‹5óÅi?üôÞYˬ8zäæ œ..Ρˆ±c˜œîn®!æ­fó`Œÿ÷Ýn'•JB …‚ &©eܘ1V|¾\.GuëpóÖmŒq| š¦—,ZÈ´ÙÍÕuÜØ1qW¯1k ‚Ð^½hšnð)¹‹‹ËÑ?O¸yëZ||Â1cY,Ö¨#Ö¾½‚ÏçÆXUc¶5EQÚöcŒ ÷åÆÍ[R™lÞœ—˜øùø<Û/¼¢¢cÜì1ÖÇÛ["‘4=  ã1Ï”ž B¡ðó?j¨T*)Š"Iò­7^Ÿ>çe;[»Ù3ghÔêâ’R„ж>Ò> S­V#„ªkÄ%¥¥"‘H$1Ÿn)ŠŠ3š¹Ê¥YŠÕè«âlôy‚ Ü\]™lc/OO•JUU]íèà€bn‡`VAñ¸\Ý—Ì#|ŒÉ£P(Ž8™úàAAaaAA!õøçxgg'í'{\¿PZVææêÊa×=Á‰¢(_Ÿ¸«×´MmòŽ^š¦ ExŸ°Ïöãp8Å%%‡ŽýãÐa‘µõÊåo®ÆokµZ­ÑhçÔÓ—R{§í‹·§WEE%2b º8;9 ƒ€³‹1BˆùÒ·Iñ7n(äŠÚZibâ^=C˜{yW._f-Öå ‹`¹vq„4Eé~ìÓÞË\XÂ,3@» cÅêæÔWŸÏÇ«T*>Ÿ_—®V¡†_ÿwS/MãÇ€ŒÉ#“É–._Áa³gNqÖŒé=‚‚V®}G·/Ñð9Bc@ R«uO0m6ð7¢°¨èÛö.ý5/OO惵H´ü×KJËâoÜX±ì cÂÕDùÍmëfûÂfs4jn_´[ÓÄ&@fúÁ@g"‹w~½{ù¯?7i⻾V©T>Þ^!6›Õ#8ˆù§Ñh®^¿Îçó==ºÊŠüüíêë6n:|ô/TÿE;#+;§qEŠÕͦ¯ æ±?©iiÚô”ÔB¡ÐÅÙÙL‘@¡”ÊËËw}ñÙ̧õìÑc,•6qqNžEÅÅÚ”û)©†W±··O¼s7þÆ?+Æœ4 iJ$²FF‡Ëì¼<<$µµ…EEÚ”´ô‡Ì“j´óL 0tx!FsåÚõÿî$%aŒw~ó­§§Ç S§,ý5•JµïÀ/ž¡½z}÷ÃÿŠKJ4MAAá§_ì,)-¥iºOïÞžßþ°W&“aŒ£c.ÜIJz¦W/{{û«ññ$IbŒO‰ÊÈÌÄ:ç ˜/ò «ÛZ}Uøùúöê²÷§}••ã{÷SŽý{bÊäIÌê È ÑHçä€á<Ì£3³sr”J¥Z­>úÏ?9¹¹jµF7Oƒ"0ƃpttØùõn±DBÓttÌ…„›7µ™óò >üô³[·uWµ ÇùûŸçÎÇ0·ËåŠã'O]¾rå…)Sš —6ª·µ¿MºïéëK¿~á]ÝÝwïùA&—Ó4}üä©G™ŒiüYÓ«/ûo£`¼öí•|ÿ˯¿ùb××|>_¥Rq8œ…¯¼2õ¹ÉJ¥’$IáÒª@çqŸ¸A üØ_®&ú‚0Þ²qú÷6Mée+>ßÍÕuÒ„ñYÙÙcÃMª/þ,ž&DFzJ@÷“׌ŒD?Þ|M€6! ­¬¬§“$©R©„B¡D"a.ûár¹666‰„¦i¡P˜|ÿ~EE¥§‡GpP`mm-óiÃá°ÙìÄ»Ijµ:8(ÐÑÁA¡Pðùüªêê´‡mllÂBCBl6›yü—˽“”¤Ñ½ŸéÅápô««É*˜2ùVVIIÉUÕÕ>>ÞݤR)³º½½½R©T*•L ŽŽŽR©”¹FŸÍfÛÙÙ‰Åb›fóP%‰Ò>,*.öóõõ÷ó“Je·o{{y¹8;7¨E p¹\æ;\.—Æ8ñÎ]š¦Ãû„ñù|>Ÿ_SSÃtÇÖÖV&“iï»`! eryJê¹\îÚ¥‹¿¿—ÃÑ>/ˆÅbé —nTµ7û2ÛšÇã1õ6ÆÌ^˜e}}¡iš¢(++«[‰w¬¬øá}ú¼¿ãCš¦Þ[¿Îp“ÜÙ³g‘¹¦ãÆ3[» ƒár¹AÐ4Ýà9Ap8‚ H’ÔÞ‡Êf³Ùl6ƸñÃm˜çü0¾ ÛlÚt‹Å<+É,ÝlL[EQAp¹\êñ;žõµ™Ëå"„4ñ_–³X,6›ÍD÷Vi-}ájU#ëÂÍ}‘_QQ9wÑâ-ß=r$Ƹ¸¤dé²·–¿ñúØQ#›m­¿~Mþ&tp–h‚L&sqvž:el;G§:G/€…€á Ì•i´q»ÿ~‡ž9rdâĉ|>¿s?ä” •J5cÆŒ6ªÂB"ÉÐÆcl9½n2¶£S£ÀBÀpfƒÊ4Ú¸™çöâ¶£P(x<MÓOº!m cÌãñÚô —…D’¡OËéuûè”±í꽆+0;T¦Ñ[‡ž „,d£¶Ã\ÖB"ÉÐÆÓ¢zÝ>:el;G§:G/€…€á Ì•i´qëèS8ïc.–IËìuûè”±í꽆+0;T¦)¥°ÌHZf¯ÛG§ŒmçèTçè°0\ÙÁ 2 L ,…eFÒ2{Ý>:el;G§:G/€…€á Ì•i`J`),3’–ÙëöÑ)cÛ9:Õ9z, W`v0¨LSKa™‘´Ì^·NÛÎÑ©ÎÑ `!`¸³ƒAešN8%àþöÛÿ·wßñM”}ÀŸËhš6Ý…Rº[ ƒQÊÞCZ¦  CdÈTÙŠ  àBE†¨ˆøªˆ"{ȆÒM¡Ì.JKWºÓ=³o<ïׯÐ6!MKÅö÷ýô£ÉÝ3÷Ü‘'7 ©}CX$¢ûö%gÎDBá3óš®YCMšD5µÒŸ‘ü,++O¥ÚÕ¥‹9—«Y(¥é•©©ï89 °´lÑ>FîÝ“:”˜˜XB„——õâÅþC‡:µlÛÂÃsΜIÝ·/!ôî»×§O÷5ʵ^]Ë[Äš5!“&y¹—ÝøØfKÝIL,(!ÂËÞzñ`ÿ¡ž-[£Ñ©ýùùEjõví…¹JåGbñZ—^"‘®ŒkÒÒ&ÙÙÙÚÓP½ŒÞ4I“Ï_º”ž‘IÈÙÉyê”Éþ½z¶lÛšêð‘¿23Åš·¦BSŸnÝÆk*ü[M"Iòð‘¿2Åâ ëÖZYY]Î mãÜø04ÉÊÒ^¨b˜3%%yjµîÏËÛ•“cDF#ÝkŒñÞ½÷edTM™âä™]=qâ‰ýû¶l Å⪠jÛùóébqûzÿþ‡»vÝm¸¼Å]º”‘ž^aDÆfÅ6ì^à÷Ç2ʪ¦ø{ùzf—WOüñÄþÈŽ­ŒîÔêêŠúa¬¤¨3%%½»É¥²²t¥ÒˆõhΦ9rìø²•«òó F>xà@I¡äݵëNœ:Ý‚Í;qêômR–¸øø‡ññ|>ß„ÏãñòòówïûnåÚõ4M^—õêqúÜß?áåéÉãó.¤¢Ýj $‘7o‘†k£uý‡kÔ­èܼü–hos5gPaŒU*Õo‡ÿ ?vò”ždFùç­™;c¬š5 ™˜è)êÅaD$1B/wè V(V§§‡úûó 5˜¨Õ¨Õ³;vìÀç§Èå÷kjftè àpB54}®´t¸•U²\.V*U s¸°pVÇŽ&zçf¡x©ôhQÑ]»rŸ•R_šÞ믿¾ãáa½n]íߓ޲eȉ¯]/^\{ª4%¥ì̙Ԓ…——õoøÙÚš²ËÏžMíÝÛA©¤ŽKV«éáÃ]&NôÔ”™wõj&Ãàñã=š^½šâåeåädqåJ¦X\¥RQ‡?š5Ë'"¢vys*½wOœUZªèÔIôÚkݼ¼¬›"£3~}㎇½õºÑOÇvÜ÷_K/TÛ¢²3ñ©%R…—½õýülÍLB5*õ¹„´é½½¯<μ%η4Ì ðöq°»%Î/—+_îî¥)ð\Bš³µE?×N­Ó©F3⺅ºvíŒì>2½C‡+åå·ªª,y¼™:ø˜™×ãzqèÏ?:wž;ûuíM³dá‚kÁ7nß¹óÊä—CÂÂ}}¼«ªª®ßX0žµ•UIiéÕëÁ%%%ŽŽŽãƒmll4“'Çܽ[UUegg÷Ò¨Q.ÎN¡èÛ1ùjµúâå+cƒù<žžžîÏSÇó>½ýB¥¥eã«ÁÁ=üüœj/x`9x°àÄ žTjúË/–ƒqããq](õ§1‰‰!òò‰ÄäòeD’º’×ì.’ï÷õMW(¾ÍËÓ^ξxPS3øáÃ¥¥RŒ),ôða¼Tê(ìÈÉù¢î¡-bñ‰¤³@SS“§TJTªË$ÃhJû«¨¨ïƒ ÿ–§¦ž()y'5•ÒJÜÔx65—L¦Ï™?¿E=uɇ¥%·´tý²e}Ø·—/gŒqôÒ%qu5ùñC†ü™“SͮڶíÖ¾}fϾP]M>yR9wîŃãØUûö=xõÕ3·näæJçÍ»ôÛo š.Zt988c#ÉË«‘Hd—/‹I’Ö,7ºÒC‡Ç;yû¶D©dΜI6ìH||±&DM&£1±U©ÃÓræìE‘OÇ–Ï-ýfý²áu±MÊñíÑKÅÕ*ò‡¨Ø!{þÌ©¨Æ—Hå«O‡¼uìÚæ‹Q%2åÙ„´‘ûކ§åˆËª—üuµRQ{NnEõâ£WJdŠÖé”®Œµ Â:v6 › „$W§§¿•šºY,.¡é³¥¥#ãâÂ++[ª1ϤP(9û÷yAœ=~õú÷)Š2$ž¥?GOœ\·ac|⣢ââ­Û?ýûâÅÜwž †+›ý…®Ú½6®ÍFø™Œ>’cŒ«ªªîÜ»7alH$êíß+$4L³JטOzœüÙ—_±{Ƹº¦fûg_ääæ·g…„…¿µüݸ„„ªªê}û\÷ÁFö’3=ÁiÙ± ž%¨×C–!ìâÂÍÏÇ#ŒÍ—/Ç#FÇŽ1\.W©äO˜`¾n]ep0ÖL°t§!wìà•–"©”<~Ë庒µXZˆ‘Da„\âOϯ23§ØÚv 5å0/OKak{Ìߟ‹±¡ ¬Ëȸѫ×O=zLlk[MÓÇKJ¢ àa¼£k×Rš–Òôñž=µÏŠJ1+•ºpª´”ÆøÇ®]yF+hj¯sskT*ÚÕUT/#Ƹººš}­VÓ7FN™Òí?^!\Q¡6ìÐ_Äì߈"âï¿Óãã—ÚÛ›r8œW^9yáBæ’%½$Ù—_ÞY¾¼ßîÝ Ã¤¤”rÈÜœÏVDAp0Æ;vŒ.-UJ¥êãǧ* Írã*E<˜°xqÀ÷ße†a?¿W¯Š{ö´GÕMúZ黽ÜÊE»Zë-Eo¼9Å¿Ûo¾B \¡PÛuè‹ë1ûg² RŠÊ~¸ÔFh¢fðË?ûðbÔ•å3× ¹úX<3À!t:>ÕÖL8Î×3t+tª¶kJ労4í%•4Í–¦k7 îÙSó¯hm×äò‡C‡Úp8j‚xùÁƒÅâHã¾³ij/ŠŠ‹Õ$ÙÉÁAϦAòóþïý|}¥Réú6õíðågŸr85I®Xµf×·ßý¸o/Bèô¹¿§¾2eã{ë†ÁO›5ûVLL/ÏU+–WVU+ò¯>ÿL.—ïØ¹KW õˆ³³?ÿêk¶=Å%¥É))[6~àáîNÓ4A ÁÑ4›Ãá°oµëÂoÿ|ûºººú»ýFñùöB5Ré‚%oýrè÷Mᅦ"""êæ‰#X[Yq8œ5ïmˆº=uÊdíÆ,]´°º¦&7/o÷×_é/M;b2™ŒaãM’¤þv–”–þùÛ/\.7+;göü7išúõàŒñÐ!CÞßôa¤Ð4ÎNum,=Ñ(-+ûí𳦿¶~Íj†a²²³ç/^*Ôú§¡©`¸þׇ«Ö2üÌ¡Ûh›1ƆGØÆÆ°È(†a^=Ša˜1£F}³÷Û¬ìl7WW=c~\PÕí… IDATБcÇÄÆöïÛ!uÄø ÀkÖ5uÏ’Ë廿Ý7}ÚÔ÷Ö®a&S,ž³`Ñ­˜;C ÔœßÛÅY‚Úå|>¢(Œ171‘›–FnÜX£TÊd²†¡Ö®åÆÆ¢òrM^=i »e2'!AW2ãšýF’¦éÕ;{™™­ËÌdê–bŒ¥Ò4…b£»»R*•ÉdŒ\¾ÖÕ5V*-S«‡›™½éäônzúÚŒŒ­^^]¹\Œ±B¡`¿íg7†wülYÙ‘âbãßÔ\ …²¶èIsÿ~a^^ÍÆƒär©L&¨eËúhnFÍœé+!¹\.•J{öì —Sãë׳hšÙ²epMML&sw7›1ÃWÓBMc Ã`Œ‘ÖAÙøJ1ÆÁÁs¾ür¤T*•Ëåee•A(tsBdtFI!„¬…zc›[˜WY³1h\&•ÉdL-Þç£t\÷õÛÊÑý˜’Éd”Rñáø¡)Ee9¥c¼=.$e°%œŽOÑ×ÓTët cŒ0¦1–>ý'¯+P×nRN’šÙÉÙJ77R)“É(™ìC¹ü±LÖ:½P*U! ‘HÉcƒÝ\]«««SÓÒrrsÌŸ§P(d2E’sf¿þ$5µººcüÓ÷ûV-‡råååA¨T*Œ±B¡À¸öÈ™–ž®§„§ëŘahš¦iša+KK ‘èØÉSù û«½iê’Ëåš×IÉÉEÅÅ çÏ•Éd2™ŒËá̘65òfô?}3ÆT `÷£.]¼”*UƒX)†A–V1í»K ‰öã”ý%¿4j¤J¥’Ëå;Ø#„‚ǰ=uìä€R©T†¤Ñ³±ôD#æÎ]†a/\ÀÊ:98Œ ÓšG®ÿôñÅ®Ú]{æÐm´ÍéFø™Œ>’cŒCÂÂôë'27Ç6”Ãá„„…c½cÞÕÅÙÓÃCÓÁ°ÈÈáC‡ …B#ö¬{ÈäòyoÌfkéìè¸uÓF‡Žô§ÅwÆý,A "ŠŠÐK/!„øÙÙ!Þ¢E6uiJ%Bˆ[ZªI¬' ¥u —ÉþëµúG?¿Ñ÷î.*šloÏ.ÌV«B‹=Ò< ”½ßº”¢l(ê OO¿¢";>eçΤJÕœÚ;;/vv&Õêæb {{3„PI‰¬áª¤¤RŠÂþþòòdÜÜDš›ºvµV(¨âbyÇŽf!GG‘æ+†©ÝÓrs¥..V&&µ»MÓ¾¾v—/§Ø0ã*E)òC‡RîÝ+ÌȨÌȨ¤iƈ°´{s3„PIMc±•”R öwêW%#äf¥ÕM;kI×Ô^ÃÚÕÎ cÍ*K„PNeÍÔÞÞ«N\“ªÈÜÊê$Ié÷3ǵ^¯B¹ …'üýµ—$J¥ïÜAzw“z…t­ã®|>B(W­îÞŒ; gcm*¯¨h¸*#SLÓt·®]BìíišFI ‹BÛ>ýœÃ©ýRI­V#„**«,,, Ź ''çåççååÓL#CN õ{zz|ñÉvö5A …rÞ¢E{¾ûþËO?ijO‹‹K‚èäàÀ¾Å»8;«TªòŠ [„½½f?µ¼I¥i"¦Íh?³dv[¾IÝÝ)ì[ö”ª!iôo¬F£QT\ÜÉÁÇå²Ã•¦iw7·¨è[úcÕ‚`¸¾hõùmnR„Ÿ“¢GI;98¬}ÿv Ç _8žž1OÓô¸ À¿Ž_½byUuul\ü7_~16bÏ*,*‰D"Qí?å4My‰¦éðÈ(¤#8-¾3¾èSÍÜ¥™yÉɨ¼œêÓcŒ¸\„³c®jA0‘æ[[Ýi°Ö4Ôd/#ÛS7}ìÉç¿íâòInžr9„Ðoo Ítˆ ‚pæp0Æ7ŠŠd4]IQQ%%5»4ÆÚWJ°LL4ö°äjŠJ‘É–º¸ìîÒE¡uWSS›ß¤ô;›;9Yܼ™ÿê«^õVÍœy¡o_‡ßŸ`jÊÃ)•j¡°v÷Q*I„ØSPìU@õûˆ1‰L”JŠÑ:.(êz-¬{Í^aþÔrã*­©Q}ŒÇã.[Öçwú8N™r\»RÜ`s®É±µ4w²¶¸™™ÿj±ýýB_g‡ßçL0åó0FJµZȯë&I"„¨ºv*µš¡P©B|.w|'ŒÑµqJqy7»^lþÃöœ:¥!•Jµß*Øká0Ö³› Í–f»¦õ0.I"„øŽqíij.{{»Ž;Æ%$Œ1¼Þª[¶úøxR÷¶döŽ·U+–›kf,⇎d2ÙÒ+y\îŒ×¦Íœþš¯·÷ªõï¡ã\O 1–Éþ™I1lÈË×®kfPš,$I6¬Kûµ@ À«T*AÝsâUjBˆ® ~ç¦è ¦!¥5šÝh^2û_ö´«VÛ!iž¹±†P(T©ÕÚ‡2ö¤D«I`¸¾hõ.¯ñmnR„ aD®ðp‚ &Œ«ùämoo–ô8Yÿ˜iäÈþŸ›—gogлwMuµQ{–{‚©^-z‚Óâ;ã‹~áPË iÑ'Ÿ {{õĉ!ÆÛ!¤âóeýû³J’¤®_§µ~ËÌ4†'k(ŠúÈÍÍ‚ÇÛ˜•Å.ñ B|ŠêojÊþ‘*ÕõÂB!A”‘äÚÌÌO»vß¹óêÌL…Þo/¦ÚÛGôïßðo·Ï2W׿ÌŒ€13gN“'SÄâ*íå¡¡9ÅÅòq㺠„ºt±FÝ¿_¤Y{÷®ÄÂÂÄÑÑ\OÉžžÖIMVÖ?ÅÞ¹#1¼aÆUzï^a~¾ôìÙË—÷8°#—«®®nÖ›æÀ˜™Ó¿ÇÉØqÙÓ±MË)®‘ëÞ!ÔÅÞ!t?W«›Ù SGËÚnÆdhV±¯½:X›ñ8A¾’2Oǧ½Ñ¿»ÑóçAÏnR/eŒÖ…¹155!¯Ö:Œ`Œ'Žš_ðÔ˜¼÷àAyEÅÐÁõžèæê‚âr9¾>ÞìI’Ñ·o ‚¤ää’’’=;¿š1mjw__Œ±TÚÈy!=%ÒÚœÜ<öbT÷7+Sœ¥?/ûÐÇ))š%I“ÍÌÌ:ÔülãJ3$Ú-ÛN] ÜXõ8;9•––Hþiü£¤Ç-تg‚áú¢ ׿×Òœ·”°°¾‹Þœ¿`Þ\öoÝê•',2Rÿ˜·³³íÕ£ÇÍèÛáQ“&Œ§)ÊØ=«³\¡ÈÍÍÓ,yÓæ§Në N‹ïŒ/ú”7BˆP«M._6¹|ÙäÒ%Ó_µž8‘A8 âr1Æj//ñ¢¹$ZóÚÃݽGw¿?ÿRZV†1N|”tîü…)“&jì £ÙH1{Íø³KÓµ-ží&µ³Áî LóÌÕh4† hkk³kᆰêj†a‚CBïÜ»×ÊG®øE®µÙ16ºÍMˆð³7¨RÓÒ²srƒ_Rh1úõé9h@=cž¦é À1¡ááIÉÉケ±{V€¿¿³“Ów?ÉdãàÐØøøž=zè N‹ïŒmô¡ÊJ« jK‰ð€äµk5½{3ìE¥úõWÁÔ©öýúÑ:p‹‹™~ýÔ»vi&ýiWW“={lG*¿pAQ/£›¤–Qff¯uêtº°#DQÔ¯~~SããûÅÇwàó‹I²Ÿ¥å®nÝŽäå…UUÅ  R(øñ¯ï¬¸¸I66E"WSÓ=99£äò ¾¾".W½¦ £}úµ™7AP—/ÏZºôòo\âñ8cšÆ~ÿ}2‡C³ccÿþñS§ž øÃÆÆ´¬Lè±eË`Œÿ¹aT+hµK8æ§Ÿ&Í{ÎÏï¹9ŸÃ!6oöÃ÷ëÿ´ÖÕÕrÏž{£F¿paªf¹q•öîÝqÊ”nsæ\ôò².+SöíÛé•W¼~äìl¾tiO£Cd|liêòŠYK\~ãK<#L38À¥Óïó's˜ºØÎ?õà©€ؘ™–É>[ÆÆtm7_ ð™öëßf&ü*…ÊÍÖjÏô@Š¢BAÝ\M¸ÜNÍ̳®©mÙN¡Æ®¿ªÝ¬ºw\wƒ&ãkÓ’“͸Ü*Šr ÷tëF5¸ßà¹öâû½»?ùbÇæ·q¹\Œ1Ã0>ݺ}ºí£~O­®›EmÛºyíûÌ]¸ØÆÆ¦¼¼¼»ŸïºU+1ÆÝºv5bøæ·»8;UVUûúx9ââ•+;v˜:er'‡?CÃÞZñîÞ_ë*¡aÃ2ÅYÛ>ûœ}Íårœ6¬_7qÜXµZ½`îܯví~ãÍ…<ÏÒÂbæô×ÄYYl!Úui¿Þ´áýõ6Ξ¿ÀÒÒ²ªªjЀ‹¼©U¯Ö¦¬ý(¥óJ Š¢žQZƒa`´Ÿ]r]ô>QhI6$þ¥+AlÝ´qóÇۦϞ# 9Î’… ŽŸ:ÕšGÃõŸàýûõiµ4Öf=ÛèÙCAG›”>4"Ò„Ï:hvFš¦ÇŒu÷þýØøxýc~İ¡{¿û>Àߟ½ø=‹¦é6oÚ°iók³çˆDæÕUÕ‹¼ÙÝÏWOpZ|g$ÒS“¼ºú—!tøðáùóçý™…×ä;ÍÌÌLMM5oÙѦP(´ÿ}åp8B!/&K$ÈÓ“êÓ§¦¦clmm­T*•J¥ž4!!g‰I²bØ0‚Ïו¬I®]»ö¢EÒÒÒ’¦ézŸËE"‘‰‰‰T*U«ÕG(ÅTUIT*O3³>"QMM‰‰‰™™ûÔ„ŸÏ·°°¨®®¦(Šgj)•’4=L xÆ„ Ù®]»†2¢×!‡cnn.W'&Ó4öö¶ëÞÝN&“iÎùr¹\³èè¼âb™··]¯^öÒº'Ík!„P(äóùìÃÚø|>Iò¢¢rhájnN‚ÊÊJ„Išðx4AÐ!O™O’ô°aF Yn\¥"‘èÁƒâììJûîÝíª«U¡¡9ÞÞVÎÎÂz¹Z5¶åÕ‰Å4ƒ½ìºwj[¡Ytf^qµÌ»“]/ÇÚnæTJìþ3bÍ\g[«Ûâ|+¡é0O'J¥d3V«Ôþ_ÞýZàT?w#ZÕœN‰D"‡Sïy|\.×Êʪ¦¦†$ÉFwí£MIˆ‹‹èÛ×ÙÜüve¥Ÿ?ÌÊŠ’˸ªù›¦@"IKÏ`ÚÝÍÍÓÃC³iê‡cff–ðèQii™³““w7ÍqO$¥Œ‹W«Õ>ÞÝlmlØŸ½Óœ–Ý_ô)ÁرcŸSá!>ŸOÃ0z¾Ó•†}˜ƒºî18†¥ßõë×ÿ£‘lRßëÅíù¹~ý:B¨9½ær¹ìm=ôÓwü°‚àñx‡¦iÃ7:Aì?õ~[žÃáhÓ¬‰R½åÆUªÉÂþ=ŸÏo´G†ûWb›S)¸çHðò½íy<;Õ×DæÀ­„a÷“7/6AF~;ÒüNé§g7É!ÉññÁ={ö v­Iž÷¦©GW§ô ¹?r² Æ“uÏuÕЮKûµqû‘.Í)íydšÊ¸ãƒ®CY“ÀpÕö_®-RK‹|”BÏçHÞÔ1oôžÅãñ‚ (ªÞo]ÁiÁ±^8dC>˜êJ£zúÁš­ð·™ž_$›ÔwUóHÚTÍé5EQzŽJc#6:ƸÑÔ;LhÒÔ[n\¥Úÿöèj€Z9¶¸î‰zGÕÜÊšé‡.æUÕ|8n¨‰îóæúWvÍÕÍœªÕ+Ð8ú7M=º:¥gȵø‘SOƒuÕkÜ~¤KsJ{™¦2îøðŸ8’Ôõ™¥m£ki©ž>#ySǼÑ{–® èZÞ‚;ã‹>%„ÐtÛË#-Eõ–w´0_4ØÑJ4¶««BÑz§jA6<Þ¶.]ëž"´¾}Jð\Ï´+í3’í³×­£•ckaÂ[=< öÇ8µ¸œy}¼†‘Ë›{3:ú—ŒA¬îÔ©a׌Ãü‡Àp-•q`JÐ^´ÏH¶Ï^·ŽVŽ-~ú€´—³7`µT--UT“*mþõêØ‚¥ð\Áp-•q^ôß%wþÂõ7æ½ñ†fÕý‡#oFc†>t(»Ds°Õ³êæ­ÛÆ f†}OQ”vuƒØ÷Ãþ‚IŸÞ½BÅ%%/_).)qêÜyÒøñ¶¶6¡àP_Ÿ’ҒаpÁ+“'¹8;_ NH|dcm=í•)öööli™bqpHhyE…«³óË'ZYYFEßâñxƒÐÔe*08 £u5”ø(éVLLEee{û 1/¹º¸ „¢nFçåç«Uês.XˆDš×Ç ‹ˆìîç[YYyùêµ%‹fdfº8;;tìÈÆƒaðõ7bãâÍÍÍÇŽéÚ¥ [Ë¥+W{õìáâì̾OHT(ƒ Юhâ¸q|>¿Ñf3 öèq2‡ zû¦óŠ/hàÂ!0^UUõí;w&Žgkcàï-ø†fÕŸG®X½66.^RXôÁæ-gþ>oÈ*„PDÔÍQ#†ëª1//!äîæ†JJN~}Þ›W®_—Éd§Îœ5oþ“ÔT„Ð~úz÷ÙMÓÌÐÐEo-Ûðá–“§Ï „Nž9»lå*š¦B‘7oÎ]¸8<2J*•9~|öü7 ‹=úè“OÙ¡šššÍoÏÊÎÖUW=çÎ_XòÎò¸ø•JuýFÈœ7>IKCÅ%$—–•EFݼÿ Vóš¢é}ûczÏÝišþäó/úõ عã .—«T*—­\µcç7¿ü !T\\rôð!—)Ïœ3$ÉC?$bè Aë7nÊ/(èäà°kï¾Ñ#G~ùÙ'ATUUÍ[¼äÀÏÿ›?wÎï¹{ÿÁ ýB¡á¡ñãÆ¾µ|…®º´;yjÚ«¯lþ`Ƙa˜)ÓgDFÝì֥˚•ï–—WÈò]_}‰1VlW°¯I’$ºr=ø—?v÷ó%I!„„1F#„***N=bia¡V«W¬^»{ßwƒàñxAhþñ"!c¬]‘Z­n4DÛ¶l޾}{ÿ¾½û÷Gíÿéàå«×ÞykikŒx!ÁY0ÞµààýûÛØX#„^9’Ãá°' ¢oßffÙÒ%jµš$I7—qAl=«B÷<è߯Ÿæ“.EQŸ~±ƒýû|ÇW~þÇ{eòd†aÒÒÓ³²s/\À0 I’\.wþœ9É)Oª««BcFb³;;9!„Æ ¢iš¢(„R©zôøqaQÑÒE (Š"IÒÜÜ|Öô×B#"<=ܽ<=CÃÃÙ‡†Ž6¬°¨HO]Ú~þñ‡õ«W‘$IQ”L&#¡T*Ù–`T;çÑ~ÍæØ­kµZÝðû©¹³g MMI’$béâ…IZz†ž-¢]¸®I¥2„Pl\¼\.'Iò·–^:w¦ [Ú8KF*H9vê´lå*v ŸÇ»~#äí%‹ $…:9öèŠ1öôðˆ¼1Ö³ !y3(ð¥Úc2Æ&&ü˜ÈMeeeïoÚ¼vÆÓGææå#„>Úþ‰æ¤*•!T^QÒ”Ï0 BÈÄĤ®:†­T")$©sgM3Ü\]U*UIiéø±A=¶aÝÚʪªc÷îü:77OW]Ú1¡iúø©Ó’çæåæäæ± iÝ+Üøk‡ŽÙvÖÂcÌ~²wssÕ$ópwGúxwCÝy\¯p]!‰Ì/xó—C¿ÿù×ÑîÝý† 4yâ‘HdÐV€¶ˆ÷o7þ«®ß!bâøqšOœv¶¶7BÃ%% …¦j•Z;±Z]ûVÏ*†Á± ñÖ¯ýgF*•JóÎÂÂb֌零~$)”ðx<„Ъ+Dææµ« D„CÇŽ†4ž3$ÅårÙ%¤šDÑ4=6pÌ~z›cog׿_ßțцÔ%“Éç/ZÂårgMmækÓ¼½»­Z»ÞÆpB×*Í™M ÍÍÌõ'ÓТŽ:,[ºdÎë¯GFß¼ÿàáo‡ÿ8yúÌG½´)IDAT¿þbnnfHk í³`¤kÁÁ}û¼µx‘fIeeehxÄõ!þ½z•”–æåç;uîÌ®JHLDaŒ]œu­JHLìî뫹Dž=.kŸ1Æì—Ù$Iº»¹"„“^={°kãîÞ»ßÝ×ie¬ËŽŸ~‹\\œB‰IúõéÃ.ILJ273³·³çpˆ^={„EDfdfNž4c¬§.íæÅ'&Ÿ8ò§»›+û Q©L¦ÕÔèk¶§õº©9ŸàïÏ.c[ή¢hJ“+#3ÓÖÆ¶^ẚÍåpnÅÜY8Þ„±c'Ÿ“3}öœø„„ÁƒêÝàÐfÁ½`Œ”ÔÔ¬ìœñAA” ‹~}û„„…2ØÖÖö‹¯wVUWcŒ¯^¾}ç.›qİ¡ºVEFG9B½„PEE¥«‹K¯ž=ö~÷}Qq1Ã0ùŸîø²@"1°ýݺtéѽûwû,--CÅ'&ž:{nÊË“aŒÇú(éñÄñãBÖeme…ÊÍË£(Š¢éc'O‰³²Ô꾿×<ȨÞk=Ž<õ(é1BHœ•½ÿàÏ#‡gùÁÆÚ:*ú[Èù‹—êÝ`À.×Õl•Jý¿ß]¸|™¦i’$ï?|ˆêÜÙÑÀÐ@Ûg À×o„˜ðù#G ¯÷õöØ1cîÞ»ÿ0.îãÍnÚúѤW§ M…g颅ÇNžÂs¹\]«îܽ÷öâEº®g¹8;qòÌÿ^=?ûøãUëß›6k¶­miYY?¿÷×­Õœ Ð>- ¹p_sÒ€¦é­›>X½þýWgδ´´ª¬¬ðÝ>íר®¹õzÍ.™;ûõe+W™››×ÔÔ¸¹º¬_³Š½ë`áüy;v~óêŒY<ÏÒÒòõÓÅYÙlíÂm¶™Pøê”É_îÜõãÁÿ!„d2Ùò·ßrws{ê~hOˆôÔ¤èÛ÷§M›öo·þKø|>ÇS*•õ>Ëòx<>ŸÏÞ T©ÖVVõ~Ú•Ú)ÁÔ©Sÿí–@[Ã~NEi>Èê_ÅápŒø¢š½?˜ý#É~øfÆì†ÔÅápØÛ!†a»©é#›œh¿Ö¦ýkš%l¬ê%Öµ¼aá6›m'jlë@{O€çc¬ëŠùFW÷™ÞÀ‹ò[$»!‰µ{Q¯›†ÜKÐðÓ¹®0ê o½å&ƒË„@î% ]ƒ'ЮÁYÚ58K@»g h×à,íÚÿ~ÁK®IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/MultiLine.png0000644000000000000000000000013213135434036017336 xustar0030 mtime=1500919838.096648472 30 atime=1500919916.059981805 30 ctime=1500919913.349981805 denemo-2.2.0/docs/images/MultiLine.png0000644000175000017500000010120713135434036021210 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRÎð¶télsBIT|dˆtEXtSoftwaregnome-screenshotï¿> IDATxœìÝwxåÞÆñï¦I €tB“¤ˆ¨€ Ò¬ˆD^TTÒă*ÒD±¡ Ç"A”Ž4Qz¤! ”„ôlÊîóþwMÙ„‰$r®k¯+™™}æ™ß3»¹w23k """""R c”EDDDD<9|h/uë7É Î® QQ§ðööÆËË c ™N‡/oo|¼½1Æàt:s4X­ZE÷Ï3fÎbѪ­—c;DDDDDr¸«ó yî™"koýÚ•g§ÓIrJ*åÊ—¥Fš$&&ò[x8çbb&$$„R%J’’’Œ#3›Í–£E«¶R¯U§"묈ˆˆˆˆU‹V­.Òàì’'8;bÎ%99‰jÕB8qâkÖ¬ÁËf£d©R9r„† HFzþ~~øøäi†AEÞY‘‹µjÕ:v¼//¯ÓÓÒÒøò«ù<öèÃy ƒ‡àìããC5(@ffÉÉ)”,Y’f¡¡”+_žóçÏ“””ˆÁœ”„—ÍF¥Šó4lON,ÂÍùg[9wróoë7ªHÚ¿ØvDDŠ»3ßaÆÌYô¹ï^øwxŽŽ>Íàg†°{O8ñññXç ÎIII`³áíãKªÝNff&~~þx{{“žžNjj*ÁÁÁd¤gàt:9‰Ãá víê9ÚÑgëzžˆíøÏ,Y²€^½z¹ç—LH›‹^OÉØ½EÒŽˆHq´jÕfÌœÀü xuâضm;ÏFLL,3ß~—Û:w¢qãF9žŸ'8§gd`ÒÒÓH³ÛÉÈHÇËËF¦Ã‘œív‚±átfb€ääÎÅÄä阎8‹ˆR¹Æy&¥–kŒÍfãŽ[Zsw—vT©P޳±ñ,Z¹‘Å«¶`ŒaÄ÷ÑíæÖ¼ýi‹VnàÞÛÛóôC½ø~Ý/ÜqKkw{®P®#Ï"r5êØñúÜw;4Ï_°ˆˆÃì ÿÌ?®Ýóññáű£ò„fðœƒðöòÆn·“šjÇn·SªdIJ’’B©R%‰OHÄ‘™IZšó±±yÖg‘‹W" ˆî7·dðw°zã/Œ=†»{ÝÁsÞW¦ï‰àýoVQ¿F%žz°ÇŽþ¥Ê1èD9ÆÓ_ãwƒYòåàÏ£ØEu[D¤8ñòòâÕ‰ÿþ<â¼cç.÷üòåËñöŒ©´nÝÊãóóçø„üüýqCff¾~~$&%‘œ’BBB8™¤§g‘‘‰#×­é@GœEDŠ‚=9‘ž7·à˹`ÏàË5áôí{?½okÇ’Vc÷/Ë¿g~Îìÿ<Çègúƒ—7))v^›84ãMšÿ59ÚLuÙÖû´ˆ\…¼¼¼xîÙÁ¬Zµ†ØóçÝÓË•-Ë·ß|MÕªUò}nžà\ªdIŒ'»=»ÝNzZìØ±ƒ^½záççGrJ É)É$%%\¦tž†uÄYDäâ•¢JÅò¼ÿþû9æU©Rßô8|ÊÕ .5“6nçÞÛ;ðÍ·ßræ\ ¶JM)á㟧M‘«Õ/¿üʳC†åͱçÏ3óíwr\0˜[žàœ‘™‰1‡Ã‰Czz8yò$”+[–ŒŒLìv;çΞÅã>½#;q¹xöäDbÎÇS¹B9ú÷ïOLžkJlØ“©]½2½:µåø‰“àtЫGVmÜÎÁ³é–ž§M‘«Ñ§Ÿ}Ϋ“&ç8Ÿùº¦Mܧkd¿`ÐSxÎ{;º?¾033“´´t2230ÆÐ¹S'‚J—ÆÇLJ¸øNŸ>ɨ(©\¹rž†uDCDäâ•bñÚ_Ô§+ `vØ&2ŒM® áÎNmxiæçûù2þ¹Çp:¼6i6Þz}cŸ’çÿû!v§ I)”,EåÊ•9å«÷g¹úìÝ» ¯LÂüy>sË–-xqÜø ‚çðœ'8‚͆IH$6._®)_ž2ÁÁøùûÅÞ½{‰ŠŠÂ×Û‡ZµjQ¥JÞsAtDCDäâÙ“ùú»UÄžŠäÞ;nåÃW†‚ÍFø¡£Ì[†‰þ'‡ zåò¼5m&ÇÇ^º6Ó?^Àȧfð½™ôñw|üÍô¿«3|ð »jˆÈÕ§qãF<÷ì`fÌœEèuMygÖ *W®ç‚Áù Ò¹SGn»-ç7aÛcŒáð¡½>|Œ#Gy쉉‰8l6A8!6&{ZÔ¯WzõêDHÈŸG;ÝÕën¹ó2”@DäŸÉuOçw¾H‰Á–x 2íY¿ûa‚*C‰2ØbCò9L¹k!à‹“ÏeM¸&kzÒilñ'À™‘·m‘=ëÂX½hnžéÆæ}ú?èÛÿœ×8N÷‘ç!Ï Îñ(ë×®dÀ ¡y8ûúúRáškÈHO'³bEøãp¶ÍfÃÔ !0 €2eʈŸŸŸÇ눳ˆÈEðxç ?¬™s9ÇËøWÌzäxŽÎvl¥ ¸ÞŸÏÕû´ˆ\el6ý{Äã<×­ê<ivÉœkÔ¨BUhÖ,ïø­º«ó ,Zµú/?_DDDD䯺«ó éy^^^ù†fðpª†ˆˆˆˆˆüÉuª†ç›Ô‰ˆˆˆˆHyNÕ([>ï­åDDDDD®6çc¢sü®#Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""bO~3Ê•+w9û!""""Rä"## ýœ   ÓuÄYDDDDÄg ò=UCDDDDäŸ&11‰ÓgÏ’––†¿¿?•*T ((ÐÒsuÄYDDDD® ‰‰‰=vŒÔÔTœN'©©©=vŒÄÄ$KÏWp‘«Âé³çò™~ÖÒóœEDDDäª`·Û 5=7g¹*c 5=7g œEDDDD,Pp±@ÁYDDDDÄg œEDDDD,Pp±@ÁYDDDDÄg œEDDDD,Pp±@ÁYDDDDÄg œEDDDD,Pp±@ÁYDDDDÄg œEDDDD,ðù»;ðW?žýû÷BõêÕ9{ö,*T¸¬}ˆŠŠ">>ž¸¸8Ú¶m‹——õÏ!gÏž%&&†¸¸85jD™2erÌ7ÆpâÄ âã㉧yóæ”*Uª¨7áoKTT‰‰‰´k×îïîŽG§N"!!ÄÄDªW¯NåÊ•-?766–ØØX ¤^½z9æ;N:ERR‰‰‰Ô©S‡òåËõ&XꋈˆˆXW,8ÿïÿãÙgŸeÿþýL:•Gy„[n¹å²÷cäÈ‘4mÚ”öíÛãt: õÜÙ³gÓ¢E Ú¶m˾}ûòÌÏÌÌdüøñ4kÖŒvíÚqòäÉ|ÛZ¼x1±±±…îÿåj/·ßÿ·ß~›Î;_²u\ c o¼ñ 6¤uëÖÖÞ“¯¿þšvíÚÑ¢E ¾ÿþû<óÏ;ÇĉiÔ¨7Üp‰‰‰ÛÙ¼y3ݺuãÌ™3îiÇŽ#<<œ„„„‹ê‹§¶­*l.W["""—Z± ÎŒ7Žyóæñøã3eÊúôéCTTÔeïËgŸ}†Ï_;hÿÒK/qÝu×å;ß××—>úˆš5kØŽÓédèС)]ŽöÌáÇiÔ¨×^{mžås·ŸŸîÝ»áÖäàÁƒ4lغuëæX6¿m̯/¹ÛÎÞ¿ü¶õB}ðôÜ‚~/¨-‘+Q± Ε*U¢Aƒ´lÙ’û￟9sæpúôiwøâ‹/xðÁ6lC‡%##ƒ>ø€víÚ1vìX{ì1j֬ɸqãXºt)wß}7!!!„……¹ÛX´h÷Ýw#GŽdàÀ¤¦¦دgŸ}–¦M›Rºtižzê)wY¾|9õë×gðàÁÜ|óÍôêÕ‹'NäÛΗ_~IùòåiÛ¶-½zõ"...ßeÇŽË„ x衇xâ‰'øá‡¨[·.C‡¥Y³f 0€ôôtî»ï> äöÛoçå—_&((ˆZµj±bÅŠ|ÛËîµ×^ãé§ŸfÈ!4kÖŒmÛ¶0wî\ÚµkÇ„ èß¿?õêÕ£gÏž9>,ÌŸ?ŸÐÐPúöí˼yóòÝ.‡ÃÁÀ>|8ýû÷çÆo<+pIÆö»ï¾`ïÞ½T¬X‘V¬XážìØ1xàºté­·ÞÊý÷ßϹsçX²d 3ïÝ»—.]ºÐ´iS~øa¾úê«<˸,]º”믿ž2eʸOAš1cݺu²>„uìØ‡ÃÁéÓ§éÓ§!!!Üu×]<úè£4lØùóç{ì‹§¶"##¹ÿþû¹ùæ›éÙ³'ãÆËÓ¯üúpøðaîºë.úôéCóæÍ™2e Æ^~ùeÊ–-ËôéÓ‰ŠŠ¢uëÖT¯^¸¸¸|Û¹ÒcŒ‰8ø›‰8ø›‰‰‰1111æJvêÔ)3xð`S±bE›Íf†jŒ1fÏž=Æ×××ÄÇÇcŒéСƒ™:uª1Ƙ{î¹ÇÔªUËØíva3nÜ8cŒ13fÌ0 40Æa‚ƒƒMll¬1Ƙ޽{›É“'{ìK@@€Ì{ï½g‡iÑ¢…ÌܹsÍž={ŒŸŸŸiÔ¨‘q:æàÁƒ0mÚ´1‡ÃÜrË-0›7ov¯××××”.]Ú$%%™={öÀæÐ¡C×߬Y3˜}ûöcŒÙ¿¿ñ÷÷7¡¡¡Æc-ZdóÆo˜ôôtÓµkW˜N:™ ˜[o½Õœ;w.ßö²KNN6€Ù±c‡1Ƙ!C†˜¸ç÷îÝÛÔ«WÏÄÅÅ»ÝnÊ—/o/^lŒ1&**Êøûû›íÛ·cŒù„ÄÄDye×±cG¼¼¼hÓ¦ +W®dþüù¤§§Ó¬Y3l6uêÔÁßߟŸþ™äicÙ²edddмyshÒ¤I¡ï¶°`ÁÒÒÒ°Ûí<ÿüóî#»+V¬À××—¯¿þšF±zõj†βeË,¯£T©Rlß¾ooofÍšÅÖ­[‰‰‰qÏ÷õõåæ›o¦L™2øûûÊÁƒX½z5^^^4oÞÜ]¯üT«V9sæÐ¦M^yåÞ~ûíÇÕµî¢ÛuëÖ‘œœL÷îÝéÒ¥‹ûˆ´ë¶ñãÇÃÃ?L@@‡`ÿþýÄÇdznÝ:Ê–-ËM7ÝÀèÑ£INNfÈ!”.]ÚÝ—îÝ»ãííí±kÖ¬þÈ:ÙuŽ®ë6uÆ÷¹½iiiyÚJJJ D‰îiVÎvÙºu«;Ü5i҄矀)S¦¸/b,S¦ >ú(/¾ø"‘‘‘|ðÁ 2$ßöBCCÝýIHH`ܸq„††Ò§OŽ;–瀫®Z¸N§HMMÍq¾v```¾ÛaŒá×_eÑ¢E|÷Ýw¼ùæ› 4¨Àq…¢Û 6ЧOÖ®] à>µaëÖ­´nÝ€M›6ÊŠ+ÈÌÌäŽ;î 55•ÀÀ@Ö¯_d]Y +¸ž”)S†uëÖY6j×®MxxxŽs©]·FEEKff&+Vô¸=õB[‘Ë¥ØqöññaÊ”)î£|´NŸ>M‹-èÚµ+p_·sçNw°0¹.^Êþ{öŸoºé&¢¢¢¨P¡M›6¥víÚüøãyúâ:² °k×.÷E‹½{÷æî»ïÆËË‹={öYCÙív4h@“&MÜçA»Âw‡ؾ};ìÛ·Ï}t2¿»¸Bmll,#GŽäŽ;îp·Q±bEjÕªÅÁƒyë­·0Æ0mÚ4¶lÙŠ+ðööfذaîóy=µ—=¸/X°€;v0iÒ$®¿þz¶mÛ–#¼‚¹¦µiÓ†ØØX"""ظq#‡ÃãEmk×®å½÷ÞcìØ±lÚ´‰¾}ûR¿~ý|Ç5÷ºrÿ^رu}øhذ!™™™|ùå—”.]š×_€ÚµkpÝuבššÊòåË)]º4Æ cãÆtîÜ™§Ÿ~š¸¸8w0`Ïž=|ûí·3iÒ¤<Û¿zõjºuëÆøñã9|ø°;¼wèÐ#F`·ÛÝí–(Q‚3gÎ0mÚ4÷Ñ^×€ì}ñÔ¶ëâ®±X¼x1+W®ô8.Ùûàúj³Ùxýõ×yñÅ‰ŽŽfñâżù曄…… @XXãÆsïëž¶GDDäJç ¼üòË/s>ö,%Ke ,èn§ýû÷ãp8X¿~=7näÀ̘1ƒÛn»;35jàååÅœ9sçÌ™3¼õÖ[|ÿý÷|øá‡œ8q‚F1wî\V¬XAJJ U«VeÆŒìØ±ƒ%JЯ_?x饗øý÷ßùè£>|¸û¶^.±±±Ì;—×^{éÓ§³k×.ÂÂÂxå•W0`U«V¥~ýú,X°€ðþûïS³fM¾üòKf̘ÁÂ… ÉÈÈ`çÎôêÕ‹&Mšàp8øá‡ #<<œ2eÊÏÆ¹õÖ[óœVÇŠ+øì³Ïèß¿?ýúõ£Zµj,Y²„>úˆo¿ý–;w2mÚ4÷íû|||hÑ¢K–,!33“… R³fMš5k–§=×éu$÷“O>!<<œ¥K—Ò²eK¾øâ 9yò$sæÌáĉ4lØM›6ñé§ŸÍu×]GË–-q8Lš4‰½{÷rîÜ9¶oßαcǸ뮻rlÓîÝ»Y¼x1ìÚµ‹#GŽ0qâD|}}󌫟ŸaaaE:¶ 4`ùòå9r„o¿ý–sçÎñÍ7ßФI ëÈò²eË8uêsçÎÅÇLJùóçÓ¨Q#vïÞÍÊ•+Ù¿?o¾ù&uêÔ¡R¥J|÷Ýw„……qøðaêÔ©Ãþýû±Ûí¼óÎ;øúúæØþ³gÏòÙgŸÉ“O>É-·ÜÂÖ­[Y·ngΜaúôéT©R…:uêðí·ß²lÙ2Ö­[GÏž=Ù¸q£»_yúâ©í ðý÷ß³xñb6oÞŒ>úhžÿväîCÕªU©T©?üðË—/ç§Ÿ~"::šóçÏ3fÌ|}}ùꫯøüóÏÙ¼y³{}žÚªR¥Ê_|G)X||¼ûç³ÌÍf³Q1Ûé¹NÙS³Îˆ<ú;aK–c#ëâ@Ú @ÙòYßV®\¹KÑ÷‹f·ÛñòòÂÏÏøøx¢££©Y³fŽÓ ë¨aRRRžƒFBBÑÑÑÔ®];O¸HOO'&&†*UªžžNdd$5jÔÈó¯§ÓIdd$¥K—¶t>qBBqqq„„„X:UãÔ©Sxyyå8M"33“ÈÈHJ•*UèPâ©=‡ÃÁ±cǨQ£ÞÞÞØíö<µ/HLL ÆJ—.Mrr2îÓ[\RSSñóó#11‘sçÎQ§N÷é.E1®®v [‡ÃAdd$T¬XÑãüãÇS¾|ù<¨Ž?N… rÔÅu«Â*Uª¸¿9°zõêùöïìÙ³øøø¸O?¬q©\¹rŽ}Ân·sæÌBBB€¬S"ªV­ê>=ÅS_<µžžÎ‰' )ð” O}HII!::š|}}1ÆíÞïIMMÍSGOm‰ˆˆ5×?"~?âñnZ¥J–äÚ:µÝ¿»þ¶Ÿ‰`ýÚ• 4´øg«²çÄÄ$Ž;–g™Z5k”íú«ü‚s±;ÇYDDDDä¯ ¤V”*Y///J•,™'4D—±‹üƒ8N¾ýö[¶mÛFƒ xàòœ:ôꫯҨQ#î¹çž¿©—"""Ÿ  @‚‚¬åÜtÄYäÂétÒ»wo>ûì3xàþøã¿»+Ü}÷Ý´iÓ&Ç´¹sçòé§Ÿþ-ýɽî+VðÃ?¸¿ÿþûiÞ¼ù%Y÷ Aƒ¾$mç§U«V<þøãùοP=®tÚ¾‡~˜-Z`·Û¹õÖ[Ù¾};•*UbãÆ|ñÅ̘1C_6"""rŠííèœN'kÖ¬áÿþïÿxï½÷xá…Üß.W‡ÃáþVµÂ̳*w05jT¡ûRýȽn§ÓɼyóÜ_yì’½¿VÖkŒ!###Ï·ýyâjÛétºÏýÍÝ–Óé,Ô¶æ×G×iC+õ¸Ðz\Ïuík®õZÙ÷\Ë_¨~žÖmeûüüü˜?>ݺuãСCÜtÓM¼øâ‹„……ñôÓOsÝu×1qâDªU«V`ÏŠíçÕ«WÓ©S'ž|òIŽ9’ï‘ùsçÒ®];&L˜@ÿþý©W¯={öÌq‹®E‹qß}÷1räHHjj*S¦L¡nݺ 6Œ]»vѱcGºvíÊöíÛyï½÷hÔ¨‹-*°Ó¦M£C‡îó]/ÔOýÈÍj¿r¯ûõ×_gÆ ,Y²„Ñ£Gç8E!!!!ßÚd÷Úk¯ñôÓO3dÈš5kƶmÛ Ü~×6 4ˆÖ­[3sæL÷ô/¾ø‚|aÆ1tèP222˜0auëÖ¥W¯^ìܹ“>}úЩS'öìÙS`mæÏŸOhh(}ûöeÞ¼y–Æ"¿zxZÏ|g6 IDAT@»ví;v,=ö5kÖdܸq,]º”»ï¾›ÂÂÂ.X‹üêw¡ýÂÊö¹Ô©S‡-[¶Ð³gOÒÓÓ?~<Û·owß~®U«V4nÜø‚}ÏŒ1ÆDüÍDüÍÄÄĘ˜˜s¥{øá‡ÍÉ“'1Æ´nÝÚôêÕ+ße{÷îmêÕ«gâââŒÝn7åË—7‹/6Æa‚ƒƒMll¬{ÙÉ“'§Óiš4ibfÏžmŒ1æßÿþ·iÓ¦1ƘsçΙz\×OsìØ±keüýýÍöíÛ1Æ <Øøûûçé—•z´ž{î¹ÇÔªUËØíva3nÜ8cŒ13fÌ0 4ðX«õËo¿(ÌöcÌÏ?ÿl–/_nœN§ùðà à~Üyçîm¹Z=z´ÐWvåã9ïO7€)–GœÏž=˪U«3f ýû÷Çn·³téRŽyøîq___n¾ùfÊ”)ƒ¿¿?¡¡¡€ððp~ùål6;vì E‹Œ?___¸ñÆ‹ô.*"""W“byŽó¼yóxóÍ7éÑ£)))Ô¯_Ÿ÷ߟ‰'z|N¥J•Ü?ûùù‘‘‘@\\%J”pߺ«U«Vî¯(~ä‘G=z4ü1:tÀßߟ?þ˜èèhžy晿ÜO}INNη¹E¿ÂÃÃiÚ´i¾ýÉ-!!qãÆJŸ>}8vì(p)))9¶!33§ÓIZZZŽé~~~¤§§»îܹ3³fÍâ矦E‹ŽQjj*%K–t·hñ»æs /p=eË–²>¼xyy¹×kåm+õó4…ݾ°{÷nfÏžÍúõë¹é¦›èÑ£=zôààÁƒôíÛ—7Zþ`%"""YŠÝçôôtfÍšÅwÞIpp0ÁÁÁT­Z•|?ü»Ýžç9æ{ëfÿÝ5í¦›n"**Š *дiSj×®Í?þd™îÝ»3bÄxà À»ï¾Khhh¾ieo;¿ß=-_P?r³Ú¯Üë.S¦ qqq¤¦¦2mÚ´ Ö&» °cÇ&MšÄõ×_϶mÛÜa׻ݎÝngÇŽ@Ö”ßÿÎ;ÓµkW8à«;wrûí·Yç>W¬X‘¯¿þš#F°{÷îkÓ¦MbccÝ÷ÎÞ¸q#‡§Ó™§OªGAë)h\ó«Yaê—ß8fû²?wÈ!<ôÐCÜtÓMœ9s†V­Z±víZJ”(Á/¿üÂçŸ^`EDD$¯buÄ9>>ž=zpäÈî¼óNÞ{ï=êÖ­ËÛo¿Í–-[8}ú4ݺuãÓO?%$$€o¿ýÖý%]»våĉìÞ½›øøx:uêD·nÝxî¹çèܹ3ݺuãðáÃÌš5˽ÎÇœ€€‚ƒƒi×®5kÖä‘GñØ¿°°0~úé'üüüX¶l‡ƒ5kÖ¸ç9Î|ûÒ±cÇû‘Û…úµdÉ’ë¾óÎ;騱#“'OfýúõLœ8ñ‚µÉ~k½-Z‘‘A¿~ýðõõ¥S§NLž<™™3gòÜsÏåéßùóç¹ùæ›ùí·ß˜2e ›6mâ•W^á†n`üøñ 8úõëS¢D ^xá&L˜Àĉy÷Ýwñóó£T©RtïÞ©S§æ[›fÍš1nÜ8úöíK‡HLL$33“'žx"Çm ­Ô£mÛ¶×ÆÏ?ÿÌèÞ½;k×®%%%Å}±ãìÙ³9þ<“'OÎ÷.*Õ¯zõꎃ•íËnþüùlÛ¶Ï?ÿœÑ£G3yòd^{í5FÍèÑ£yùå—Ù°aýúõËwÿ‘¼ld]ÈÄáC{([¾2åÊ•û»uù%$$MíÚµsü ;##ƒ¸¸8*T¨ÀéÓ§süKýrõ#·¿Ú¯'NH™2e Ý7‡ÃÁ±cǨQ£ÞÞÞØívJ”(‘c›Í†1†´´4RRR([¶,'Nœ ((È}NsömMJJ¢jÕª–Ö_Pm\ßPXºti’““ °tË("""ùSp–"§o§ËâºgôårôèQ^ýu¾ùæ÷‡–#F°xñb.\ˆ¯¯/&L gÏžùžn$"""ùÓ©"ÿ .dÿþýŒ;6Çô´´4¾øâ 8@‹-¸÷Þ{-Ó¡ˆˆHq§S5D${î¹Çãtú÷ïy;#""ò¤ÃN"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆXà“ßŒØØØËÙ‘"Tdm鈳ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆX à,""""b‚³ˆˆˆˆˆ Î"""""(8‹ˆˆˆˆXï}œN'àĉØíöËÙ§+V‰%¨V­ 4ÀË«àϪß?›ö…âåj¯«e;/–ête(Ì8ˆ\)l€1ÆpøÐ^Ê–¯ ÀþýûIII¡mÛ¶ü]¼r$''³yófJ•*EÆ \VõûgÓ¾P¼\-ãuµlçÅR® …‘¿Ëù˜hÖ¯]É€ACó?â|üøqzô蟟ééé—­ƒW2???n¼ñF–-[vÁ¹ê÷Ϧ}¡x¹ZÆëjÙ΋¥:] 3"WŠ|ƒsZZ~~~8ÎËÙŸ+š1???Kÿ®SýþÙ´//WËx]-Ûy±T§+CaÆAäJ‘opôFá1Æò²ªß?›ö…âåj¯«e;/–ête(Ì8ˆ\ ÎÚ¡/Žê'.ÚŠ—«e¼®–í¼Xª“ˆ¸(8_BªŸ¸h_(^®–ñºZ¶ób©N"â¢à| ©~â¢}¡x¹ZÆëjÙ΋¥:‰ˆ‹‚ó%¤ú‰‹ö…âåj¯«e;/–ê$". Ηê'.ÚŠ—K9^Ncð²Ù.Yû…¡ýÒÕID\.ypþuûv¾[ú=ÿz~¥ƒ‚.º½â¤(ê÷áÇŸpúÌþ5ä9J–,™c^JJ ¯O™Ê}÷ÞMÓÆ/z]Vœ={–/¾žÏÁˆ’’’©R¹Úµ£[×.…úæ§ÿ¾9…Û:u¤U‹—°·WŽ¢úÃ[TõsêtÚ·kË7ÜP$ýò¤8ñ¥ J'ý—qcFa»ÂsQlç×ß,$66–§þo`žyѧO3ûýyøÁ¾Ô«[÷‚m]Žýò¯(Š:ý¸j›6mÉ1­DÉ„T¯NnÝ.sÑë(Hq~=Š\I üKkŒ¹èÇÉ“§Xµv-iv{‘´÷W_/ø†O?ÿ¢HÚ²ª(Öõëöí,ÿqïÏù8ϼŒŒ V­]Ë™3g/K<ÄCýð˶m´mÓ†»zõ¤\¹r¼9m:ÃGÁátZ^׺õ?qòä)í …xeýÚ´‘ãQ'.i]ÿÎ1¾ÆËÓcÿƒü¸jë7lüÇlgøo¿±õ×_=ÎKLLbÕÚµœ;c©­K±_^)uŠ8ü;ë6lÀ×Ï×ýˆ‹‹gî§Ÿñ`¿þŠº¤Ûz%¾ ;"W‚KªÆGUŒù{ÿÝu0"‚ÔÔÔËÚ‡¢X— A,\Æm;Ò¨aíź.T£9sçQáškøtÎGøøø`ŒÁÛÛ›Û:ubÈ¿†³iófÚµmki]k~\Nzz:™™™ÝïÂ*®ûBQÖlØl¶"­Aîºþc|±.žát:™ùλ|ôÉ\n¼¡5¾¾¾E¾žÂ(ší´Ø—,ïkE¿_…¢z//Q¢ÿyiÜŸÓl6Nž:ÅCõçãyŸ2nô¨‹^O~ŠóëQäJréƒóm¸>Y®^·Ž†õê“–žÆ+V’‘‘A‹æÍiwSÖ|§ÓÉÚõ?±wÿ~¼l6š]w{žËÙsçXþã Ξ=K•*UèÖå6Ê–-ëž¿jÍZ5l@||ÿúkƼ4žä”"çÅ—ÿÃ7‹Âp:Œý÷˼1u±±ç9qò$/Mx…÷?šãnoßþýô8ˆ«V‘’šÊ¢ÅKè7pr/3ûƒY¸h1CGŒdËÖ_ؾc§Ïœå\L,7o&3#ã²ü[©Èêg`ìÈ‘DEEñùW_g›Ÿs=Õæšk®áã¹ó˜3wž{ùwÞ{Ÿß.¢Â5×°'<ü‚5ªU³&6mbý†8÷ôŒŒ fLy“îÝn¿à»žóŸ‰“زõŒ1ÄÅÅñÆÔiL|m2oÏ~óqq¬Y»ŽO?ï۷[^ÆÊþae;¯Ô}Ájý­Ô!wŸ¬¼®V­YË Áϲs÷nâã˜ñλükÔh‡Çºfcc 6m≧³aÓf’S’ùú›…ôô$ѧO»—±²ï—ñr=NŸ>ÍðÑcøþ‡s¬cͺõ“wgLËZ©ÍÆŠU«øà·iܨ‡ƒ—'N"55…ɯN¼lÿ¦/šúeÕ®b…kx¼ßcÌ™;[:´'¤zõlíœNgµ™=s:/ͰFqsûv$'§ðãÊU|üþl¼½½òÌ`ââ ¬Ñ3O bØ £xé?¦åõÍiyýõ´nÙ‚òÙŽ84Æw÷îåZ/¯œÿ’=ÉWŸÍ#(0ÌÌLž6œY³ßãÃwß±¼Ì…ö+Ûy)Å:¬Ößòë„?ÿp]hù””Þš>ƒûî¹›ÞÇétòû‘#<Ü›¶üì±®ÙÇ8##ƒ™ïÌæÖ›oæÕÿŒ²Žbõ8ˆ>™Ë˜F÷Ë (÷‰/¾ž¿Ÿ?×Ö©Íá߸§‡T¯NPPŸÌûŒ1#GÙú £¨¶3úôiþûæ”<Ó“þX|ʽ_ºôš¿\XÕ{¹Ã‘ÉŽ]»ÜÓ’’’Yþã NœÒÃkOóÐPz÷ìÁä)Sysút=1€êÕªaŒù#@\£Š*°à‹ÿ1õ×éÒ¹‡""xý­©ô}´¯N~û€4ÆÙ·Ë˜œûŃ}ïÇÛË‹äädÒÓÓyâñ~9ÉáßXZÆÊþae;¯Ô}Ájý­Ô!{¿¬,ÿ˶m$§¤ðèC’˜˜Hrr2U«Tá¥1£©T±‚Ǻfã½û÷súÌì’““INNÆÛË‹>÷ÜãB9+ûNq/×cäð1íÍ×øøã9ÖÑ·Ï}L{óu&Œ©H×÷w¼G9NRSSó<ìiv÷º »_Z}_(6u2†ÔT;ÿ9Úýø÷„WØðC?M·®]r¾²ý ;xèPµ .CÚµs¼–Ö¬_O‡ví(Y²¤»M×ëñBcQ¿^ÖPvîÚ…1†]»wóÈC’žžÎÞ}û1ư}çNÚ·½ñ¢ßC 3"W‚¿åäºk®)ïþà `þø¹zõj è÷Ÿ|ú_Î_@ㆠiÓºÝnïJ`@§¢Oðò+¯æ¸õVzz:çãâ úã–w®¹‡Ãq¹6é²pdfò⨑üßàgXúýrnîÐÞ=Ïjmž}êIî}ð!Ê”.Cß>÷‘ñÇ|+\[^ßœ6­[áããéèh¾š¿€Ï¿úšÀ€†<ó4ÿ$¤zµloð†êÕ8söŒûœÆ‚–ÉÌtXªAqeµþVö…ì¬,}ú4ºÇÕápÐ¥s'Ç_kgΜÅf³Q¹R%÷4×ø¥¥¥{þ<åþ8Ïõ¯ì;W2×9­9¦;™$''ÿ]*rÕªTáõI¯æ™~(â0x°¶ŸyRÐkþÚ:µ‹n#.ƒ€€¾ûö÷ïÞÞÞ”,Q‚´´´×-@οaª]LL,·w¹Ï¿üŠ¡Ï &>!;wñæ'y ¦j/==ƒ&±s×n®kÚ”£‘Ǹ¹];–-ÿÝáárþ|mnh]e)V.Û dÿd™ßUÓ‡ƒýãÁ¾÷³aã&~ݶϾü’o/áýY3ñöÎ:"=ä™Á”*õçmàeó¢RÅ 9Úõ´ŽËù鶨ëpmÚÜw÷]¼?çcš4näžoµ6[¶n%5%•ÄÄ$¶oßAÓ&yïÿì©ß'Nžd滳yæÉA„T¯î~ƒ ä™§ž$úô¶lÝÊsƒŸÊZm>cœ{Zöý"í£Š.v»ýmó±¸ –jPÐv^*»®ÂÔßʾէ¬~YY¾dÉR8=äÜì=m«1Œ1¤¥¥áïïÿçóÓ³žï:g¬ï;—Ò¥XWÞºüý_¬QTë7@RRRžé®×§Õý,kÙ¿/\jEµ› œÙ^CN‡ƒt¯¡ÜëµR»N·Ü»ïÀŽ]»8Å5åËs}óæ8rÝEÃÊXT¬p molÃ÷?üH³ÐP*V¬@ùòåhÕ²;wí& €J•*R#$äw€JäB¬cÂepðÐ!>˜ó1C玷òâè‘|4û]¢OŸ&|ï^jÖÀÛÛ‹F ¸lܼ9ÇäªÌÌLþoÀã”bÆ;³ÝÓ­Ô&>>ž)ÓfðÌSOÒ³û¼1ušÇàãIpp0ÛwìdËÖ­9¦»Ž‚:.jÛö„ÿ–ë÷¬;„T¯fi™òþQ˜ú¶V–¯^­*)©©?•ã¹/Œy‘¯|Ã…¸Æpïþý9¦ÿ¶w¥J•¢Â5×¢RýÕ×§•÷…â䯜¦`¥våË—#´iS6lÜÌÚu?ÑãŽnyBsaÚ»ñ†ÖŠbõÚµ\߬N§“Í›ñÛ¾}üºmíÚ¶Uh–«Ò¥¿«F¶±™\?»¬/-=¹Ÿýïø‘´´4’““ùyë/T­R•êÕªÚ´)o¿û§¢£ÉÈÈ *êÿ}c ѧO»ÏµòÔ Ç.ÇùXE³®¼5³ÙlŒþ/vïÙãžg¥6S¦Ï¤zõjÜugožyriii|ôÉ\K5 (UŠ®·ufÞÿ¾àÇ•«ÜÕ¥¤¤öÝRÖoØÀ]½{_pŒsÔ0WM. #ü·½cˆþ„Ö-[RµJKËfÿ(nûBaêo¥Ùëoeùë›5£zµjÌ|wö× V¬ZÍŽ]»¸®iSu;ŽÚµjÑ´Icfðçb²¾ cOøo,Z¼„Þ=ºç› í;Åa¼,­û¬ãoÙÎ ´õÇÜBï—®ç^è}áŸR'Oýrýn¥v‡ƒ.·ufõÚµü¶o·ÿqQ`Ž6 Ñ^Í5¸¦|y~Ú¸‰æ¡¡chÚ¸1lÙú 7ÞpÃeß_E®—á®¶•ýM4GÛ&+ 6»î:îìÕ“·fÌä£OæY÷ï}zÐÿR½™™™¼üÒ‹ {a<þeË–%66–&ñ¯!Ïåi3ûï•+Uâ³Õkô̳L{ãõ<__})Õ‚§7ÓÍ›s[§Ž¬\½à‚µùþ‡ùeÛ6>ûø#Òìv¼¼¼5b8£Æ¾Hûv7Ñ´qãkdŒaøÐ!øûùóæ´é¼1uþþþ¤¥¥áããCÿGåΞ=ܲü¥® IDATÿFÍoŒsì¹jÔ¹cGFŒK‰%HJJ¢J•ÊŒö|Žö_h+ûGqÜ Sÿ¼NŒ1––w8üûÅ1Œó"÷>ø0$Ä'0 ?š4nDfffžºfãÌÌLÆŒ|á#Góàcý)]º4ññÿßÞÇEUîÿÌ (‹.¸1‚à’ZæÒÍ%4woY–Væ’zmѼeIe×4oiê/-µ´´åª•å–™yË-ÍÌEÁ0Ydg¾¿?¸sšYΣŸ÷ëÅKçœgžóœç<Ïs¾ÎsN::uè€1£ž*Q?ŽÚέwk¶%¥>UuÐPqÛ·~|ÄìgÛ¥‰šqáV«Èã¤:/³q_mÝu½ÿoX¸h1ÚµicežeTÓçïëÔ ¿ÿ-[´€ˆ@¯×#2¢9NŸIÀ]­ZVyû%ª ""H8}P; °yófôéÓ§Üððð€——nܸ£Ñ???äææšX@5àîŒ xyyáâŸ"!ñ,ÜÝÝooe‚V«EÍš5qìøq\½z 5BDópdff*ØÚ6ÜÝÝqøèQ¢MëV"œõã?bÀ€vÓTTýùúú¢¨¨Èê$"oooèõzdee!??ßnÝèõzÔ¬YÊ`êîîddd °°Ðai4Ô¬Y7³³{"ÙÙÙ¨_¯BBšÂÝÍM9FŽŽ1P_•YO5kÖ„‡‡ÒÒÒ¦µÖÔôQF???"33Ó"Oó1Wm~^^^Êm~¦úöõõ…N§Ã7*,pVsˆªJÚµK€];¶cô3/Üú+Î%;¿µA#;;[ùVVjûù¡ãÿÞ€TXXh±¾¨¨™™™oÖ ÍÃÂ`4‘žn9ÛÚ6òóóÑ®Måÿ•ñ›rEl£ä¾™+90Ú«›’Ç(®‡k×®Y|¶WG"‚¬¬,hµZ%02(,(°x:‡£c Úý©®xY^~><ôztîØ"bñŒe5iÕÚý¼*ä¯7*ëp\%‘šz+((@aá_AqɾY²^Í1PÜ—‹nÞDdDshµZ• ¶Ô´Êp+ÚDÉgk«Á«¥+bû%Ç!s………cŒ3íRmŸ¯ ±=ÓcÕ°ÖÔôQÁõë×­æY²?ªÉ/++«Ô¤O{ç$¢;A¥=UÃ………ÿ —ïÄcÔLÔN„«(UUe©5u¤æñcjòP˜Ýg3o5iÌ8ªWn ÎÔ¿³mÁQz±›Æ¼^­•ÑÑ÷«‹[Ñw;wìˆï¿ûVù¬×»Wùäªj=F9Ùço¥ªþÇ\Yû­ús…þHTTÉsœ‰Ìùúú`¸±¨cöö»²¤!ªÎŠŠŠàîþ×ktñçSßjìóDTUË+η ÖŸ:5jÔÀc Cnn®Í`BMšêŒmÁµÜªãUÕW˜KªÎí²:õùê\ODT¹8ßB¬?uDÄá½jÒTgl ®åN9^Õy?«SŸ¯ÎõDD•«Z½…ˆˆˆˆ¨ºâç[ˆõG&l ®åN9^wÊ~–뉈L8ßB¬?2a[p-wÊñºSö³¼XODdÂ[5ˆˆˆˆˆT°yÅÙÓÓ¹¹¹ððð¨ÌòT{yyyðôôt˜Žõwûc[p-wÊñºSö³¼XOÕƒÚã@T]Ø œ N:…ððpÿ“——‡øøx ‡iY·7¶×r§¯;e?Ë‹õT=8sˆª $œ>¨ððð@ll,Î;WêUÍw*OOO£eË–ß<Çú»½±-¸–;åxÝ)ûY^¬§êÁ™ã@TUÒ®]ìÚ±£ŸyÁvàìïï_Ue$""""ª2ׯ_P:pæä@"""""8©ÀÀ™ˆ¨Šh4h4šª.†MÕ½|DD•ÍaàœœœŒÉ“'£[·nhÓ¦ ŒO?ýEEE•Q¾2éÒ¥ jÕª…ôôt»é*ú¤`ʯ¬ùVDyÖ­[‡ˆˆèõz‹¼._¾ŒáÇãüùóåÊ„ øá‡ì¦Ù¾};žyæ™rm§¼4 ôz="""°~ýú*- P=ꤢ°•î_€úz©*å­¿Êä ãØ˜1c°}ûö -GEäy«©[«ÛLTQì·BDD~üñGôîÝ£GFݺu1qâDôíÛF£±²Êé”èèhddd`ñâÅU]”J7uêTœ:u ß}÷ÅÛ®233±víZ¤¥¥•+ÿõë×ãÔ©SvÓœ9sß~û­Íõ .Äœ9sÊUGù‰¾ùæœ:u S¦L©°m••£:q%ì_¥ûpëêÅÝŠæ ãØºuëpæÌåsYƵ’å(™§³ªÓØZÝÆ`¢Šb÷•Û3fÌ@ƒ pðàAÔ¬YSYþÐC¡_¿~ؼy3 tË é¬¾}ûâî»ïÆÂ… 1eÊ‹²ßJ¦¾*OrIII€^½zUYùã?••uËó‹ŠŠ\¸p¡Â¶Eì_€õþU–z©ÌW9—¥þªêUÓ®0Ž]»v Zí_מ*b\+™§³ªÛØÊ1˜nGv{h||<î¹çžR'€|½{÷VÕa‹×_ãÇǼyópíÚ5‹õk×®EBBvíÚ…çŸ/¿ü2âãã!"øâ‹/0qâD̘1/^´ø^rr2fÍš… &àÝwßÅåË—îXtt4®^½ŠeË–9LƒŽ;ÂÓÓ‘‘‘X³fM©4GŽAß¾}áíí oooôíÛÇŽs˜·-«W¯Fdd$<==ѱcG?~¼Ìy™3ýÀÖƒúEkÖ¬Á?þñ¼òÊ+8zôh©4ŽŽcI?ÿü3&OžŒçŸ?ýô“Ý´7nDBBΟ?åË—#??€íc‹+VX}:Z´h5jÀÇÇQQQزeK™¶kRÝÇ1عs'’““Ø×'öò49rä^yå<÷ÜsøôÓOQXXhõ»Õql-ËLä DDäL|¬œ‰•k׮ɵk×DDdРAâíí-ß}÷Š=ëׯ777iÙ²¥<üðÃ(rîÜ9%Á`¨¨(iÑ¢…Œ?^‚‚‚ÄÏÏO,:tgžyFüýý¥Y³fRPP ""û÷ï___ —G}T‚‚‚Äßß_}ZH—.]¤Aƒ2tèP N'6lPÒ9:Žõë×— (éß}÷] mÛ¶•ˆ···´k×N¬–qêÔ©Ò¨Q#©_¿¾ôïß_²²²ìãëׯKÆ 套^Rò;v¬´lÙRrrr¬ægÎTF£Ñaý-[¶LH×®]eäÈ‘!rèÐ!%Á`qãÆIpp°Œ3Fzöì)äý÷ß/sFéß¿¿x{{˰aäÿþ¢Óéä•W^Q}\LecÿªšþežÆQ½˜ïƒ½üJ¦±—ÞVºW_}ÕfZ{Ô”ïÊ•+¦ºŒj¹Â8&" K–,ëãššñ¤d9ÌóY½zµhµZéСƒ 6L¼½½¥[·nVÏÇÕuluf &ªNLñ°)>þä£ÿ3µgÛs\\œ ©W¯ž<þøãòÉ'ŸHJJŠEæ¹¹¹$?ü°Ò¡SSS%$$DFŽ©¤3 )999""rìØ1 }úô‘¢¢"ùöÛo€ÄÇÇ‹Ñh”ˆˆ8p äç狈HVV–têÔIÚ·oïp§?ûì3 Ë–-³ºÞÔ¡{õê%III’œœ,½zõRÊdòè£*é’““-Ò=öØc6óµ%**Ê"¿ .Èßu×]€sçÎáæÍ›£¹³gÏ"((µjÕ²XÞªU+lÞ¼YU¹Õãùóç£iÓ¦À´iÓTå ü1úöí‹èèhDGGÛì¤Óé°dÉüöÛoˆG||¼Õû ›4ib3²ÔIxx8¦OŸŽY³faÞ¼yèÔ©úõë‡Ñ£GÃÏÏýËIUÙ¿õõRQ0dÈ«÷q—õg5L÷ʶmÛ¶ÂòtÕq̵ã‰- ¨U«4h`±|ôèѪ¾_]ÆVgÆ`"W`sràéÓ§Ñ·oßRì Á‚ ðÐC)ƒŠ§§'DiMƒvÉåj™:û;#ŋ+?+V¬À/¿üb7€15j6lˆ9sæØì°‰‰‰¥þo>XØLgZgÎ4+ÚÖIËä˜ç—àp_ìÉËËÃÂ… ‘€‰'ÚLW²L¦Ï>>>NG///‹‰%æeQKí1Þ±c²²²pæÌìÝ»Wuþ&LÀéÓ§±`Á«e5ÉÈÈ@»ví°xñbtêÔ óçÏGrr2î¾ûîRiíÍz/kÌž=þù'/^ŒÆcÖ¬Yh×®222Ø¿J¨ÎýËDM½T”¡C‡âøñãxî¹çÜÜ\¤¦¦ÚLï¨þÔªW¯X˜WV®:Ž•äÌxb‹——W¹Þ—P]ÆVµéˆ\…Í N:ؾ};6nÜhu½ˆÀ××@ñ3 x±¹}ûöÁÇÇ5*Sá"##ÞÞÞèÞ½»ò£ÓéðóÏ?ÃÛÛÛa˜:u*Nœ8aó!ìS¦LAJJ .^¼¨;:ƃ–Î;KQQ‘¤¥¥Iƒ ä…^°™Ÿšú(é·ß~òý÷ß‹ˆHQQ‘,X°@XL*Ù†E,ïq.K˜ÚÃǬ,ûè£,îÓeÿúKuì_Ö8ª[?%uêÔÉnšqãÆ•Z_§N›ù9ª?µå»té’4mÚTõ~8ÃÆ1k÷8›Æ!µã‰½{œ $44Tzöì)ééé"ò×ÄÓ;vX-Su[+¢=U…2MÌÈÈ1cƈN§F#^^^¢ÑhÄÃÃC¦OŸn±˜˜ ­V+uëÖ%™™™Jš²œØ%""BÜÜܤqãÆ¢Óé¤sçÎrýúu§*à­·ÞÁ2uèC‡IûöíE¯×Khh¨¬ZµªÔ÷<(½{÷///ñòò’¨¨(‹ÙÇæ’’’¤wïÞÊlbkƒÆÊ•+%44Tôz½Ü{ï½räÈ‘J9áÌœ9S´Z­2*<<Üâ‘fŽŽcÉ~Ë–-âëë+Z­V|}}ÅÏÏOf̘a÷„-nnnÒºukÉÈȰ{Œ—/_.ÔúõëE«ÕÊîÝ»­æ§¦>J22dÈÑétÒ¢E ©[·®ôë×O†*5jÔ… ŠˆãÀ¹¬u2fÌ%à©S§Ž¸»»Ë[o½¥¬gÿúKuì_¶Ø«µç¤C‡âááa5Mff¦Lž¨å ãXÉÀÙ|JOOW5ž8zÝž={”ñ ^½z¢Õj%::Úf™ªãØÊÀ™\•­ÀYó¿„Ó'µŠï4Ÿ”ššŠýû÷#++ 7F«V­àç燒òòò°k×.¤¦¦"<<íÛ·/•¦, ±gÏ\ºt !!!èСƒÓyܸqƒmÚ´Qþ¬w;Òét0ÈÍ͵ùg±ÄÄD8pþþþèÖ­ôz½ÅzgcZZvìØ£ÑˆîÝ»[½/Õ\AA¶nÝŠÂÂB 8nnnå:ÆÖòŠ'ÁÔ¬YZ­Võ½‚ûöíÃùóç‰6mÚ ##[·nEÛ¶m•?«ál@\\Nœ8½^{î¹ 6´XÏþUõÔô/swJ½T4WÇ®\¹åVkã³ãIÉ<âÉ®;wîD^^Ú¶mk1鵤ê6¶–e &ª.L/ùK»V|;Ü®Û1ú™ *p&׌óçÏcË–-xðÁ«º8UjãÆsæ ^}õU<þøã>|¸ò³gÏžRiçÏŸáÇcÆ ·¤°·Â„ ðÃ?(ŸÇŒƒíÛ·Wa‰¬sT®çž{›7o¾ååèÒ¥ jÕª…ôôt»é\éä¾nÝ:DDD@¯×[”9==kÖ¬AJJ 8€M›6._¾ŒáÇãüùóUUd›¶oߎgžyÆæúÊnß¶êÐD£Ñ@¯×#""ëׯ¯´rÙâ¨þÔ¶²ïðáÃÐh4=z4 gÏžÐjµ¸|ù²’f÷îÝèÛ·o…%Öú{~~>þùÏVØ6Ê£"ûhÉó[y”ç“’’‚ÔÔTÀµk×páŽLJŠV]ÏïճǢºÝ•MDDy·éÝÜ"";w5k*ïšÿý÷¥wïÞ2räHILL´x§wNNŽøúú ¹ÿþû+ïeâåT¿~}Y°`ò¹V­Z²dÉ’*,‘u%˵`Áyûí·•ÏƒAæÎ{ËËñÃ?™5k–Ýt¦6㠃͛7[,‰‰òÝwßɘ1cÄ`0ˆˆÈéÓ§€>|¸ Jkß’%K$ ÀæzGí¨¢ÙªCs6l|ËÊ¡–£úSÛþo%Wê[¶¼÷Þ{@¾øâ ÉÍÍOOOiݺµEÓ~VôþÚêï]ºt‘óçÏWØvʪ"ÏA%ÏoåQžsLûöíeÑ¢E""2aÂ1b„ˆ¨*RYêöV‘Õ…­ccñcÎÞØíêc”ˆ(ñ°)>þä£ÿbó©"‚§Ÿ~ÙÙÙʲ¡C‡âÔ©ShÖ¬š6mj‘~ãÆÈÈÈÀرc±bÅ \¸pAAAåŽê+Ûµk× ÕV¿;XJ–ë?þ@VVV¥—£oß¾¸ûî»±páBL™25kÖ¬ô2T´¤¤$@¯^½,–רQCù×ôãê*»©©Ã¨¨(P®BUgÕ¡ýËm0Sý—_~ôèÑ¿ýörssKõ¿nݺáÍ7ßÄûì3äåå¡GJ§2INNÆÊ•+‘œœŒ<õÔS¨_¿>¾ùæÔ¯_]ºt¤¥¥aݺuhÕª:uê¸rå 6n܈~ýú¡aÆ÷cçÎ C“&M*¤ŒÖ”¥ÜæåÚ¸q#››‹åË—ãÉ'ŸTòþã?°zõj¢gÏž4hÝýÝ·o¶lÙ‚ÔÔT4lØÇGxx¸ÝïDGG㡇²eË0eÊ»icbb0vìX=zM›6ÅŒ30|øp‹4GŽÁ+¯¼¢Üþsÿý÷ãÝwßÅ]wÝ¥¤yä‘Gðõ×_£Q£FHHH€ˆ $$þù'~øa|ýõ×vËaÑhxxxX,oÚ´)|||кuk\¸pÁâÏÈ@q³fÍìÚµ ¾¾¾xì±Ç”“ƒIll,Ö¬Yƒ+W® ,, O?ý4‹ß~û #FŒ€§§' ##_}õzôèUmêçŸÆÆa41pà@‡ûê¨éõz»Û5õ‡””|óÍ7ðôôÄØ±c†/¿ü¿þú+êÕ«‡ñãÇ£aÆë€²ÿ¦ã †£v«¶ß:[€úöoº 66/½ôvïÞÌÌL–ÁïæÍ›1þ|üþûï(((@PP}ôQ¼ñÆÐëõ¥ò3±@çææbñâÅX»v-Î;‡ôôt¢k×®xæ™gеkW%íÑ£G•~WTT„»îº Ó§Ow8f”Õ7P»vm‹eæcò‚ °`Áe¿vìØqKÊa«¿:£G¶œmï«V­Â}÷݇°°0%={öàæÍ›èÓ§€â@ò믿Æþýû¡ÕjѵkW‹vYò‘kÖ¬ÁÍ›7q÷Ýwã‰'ž€›[ñé{ïÞ½Êø7bÄx{{ãĉøûßÿ®|×®]¸ví†j±Ï_}õüüüpáÂ<þøãظq#víÚ…ZµjaäÈ‘hÙ²e©úsæSXXˆ“'O"77-Z´@aa!Ž?ŽèèhF»ãƒ£zrT/«W¯FÇŽ‘ššŠÏ>û o¾ù&bbb”º5·ööÛÚ©Óé–Ëœšý© IDATýp4Ö;:ÆjÇ;[ç#ÀñùΚ²ŒÝ· )}«ÆÑ£GKý©,))I&MšTêO?W¯^wwwyï½÷D¤øO^wÝu—ÃËàƒAÆ'ÁÁÁ2fÌéÙ³§rKˆÉþýûÅ××WÂÃÃåÑG•   ñ÷÷—ƒÊc=&íÛ·WÒ®^½ZH=”eK—.­V+W¯^µZ†’Ê °øSNyËhMYÊm^®©S§J£F¤~ýúÒ¿ÉÊʃÁ <ð€4iÒDÆŽ+Ý»wòÁجÿeË– éÚµ«Œ9R"""ÄÃÃC:dó;""F£Q"##¥aÆ’——g5©Í4jÔÈ¢ i4Ùºu«’îĉâíí]ª­ùøøÈ©S§”tW®\‘ºuë Y´h‘üßÿÿɤN:råÊ»åu´/¦mZc:Î ÊŸvM·jtéÒE4h C‡•àà`Ñét²aÃå»ëׯ777iÙ²¥<üðÃ(rîÜ9¹~ýº4lØP^zé%%ýرc¥eË–’““£ªM½ûî»@Ú¶m+ oooi×®Ý[ µ#GÛ5 %-Z´ñãÇKPPøùùÉàÁƒ¥C‡òÌ3ψ¿¿¿4kÖL lÖaI¦c`4í0Q×nÕôÛ²ÔŸˆºöo¾O 4°{ÛAÉu¦ŸW_}Õn:k† b3?óïÄÅÅYíw,ÚpEJKK³[6[ûeo娿ßsÏ=’ššª|v¶½{yyɧŸ~j‘ç˜1c¤OŸ>Êöû÷ï/ÞÞÞ2lØ0éß¿¿èt:yå•W”ô%ÏA«W¯­V+:taƉ···tëÖM eÅŠ¢Ñh¤S§N2xð`ñõõ•¾}ûJË–-Eä¯óÛòåËE¯×KZZš’ïùóçE£ÑÈܹs€ 2DeÈ!,îîîòÓO?YÔ…3ç˜Ã‡Û=Î=ôˆXÔÔ“½ziÔ¨‘¼ð âéé)ƒA’’’,êÖ4ŽÛÛï’cdff¦Ãr™S³ŽÆ\GÇØtlwöÎG&ÖŽ…½[5DlÝÕg«’­[5lÎ999âåå¥*pþðÃE§ÓÉŸþ)""‹-k·PƒAj×®-/^T–õéÓGºví*"Å.""B(ùùù""’••%:u’öíÛËçŸ.Z­V®_¿.""'N”ºuëJ5”Ú£>*÷ÝwŸÍ2¨ œËSFkÊRî’å1b„ <Ø¢œréÒ%eY¯^½,‚ñ’Z´h!ãÆS>çççKPP̘1ÃæwL>ûì3 Ë–-³ºÞÔfzõê%III’œœ,½zõÊIÄ´Ÿ¦tÉÉÉé{ì1‹<¿ùæ%7äkÖ¬qXV{®^½*ÄËËKõwLnxx¸2 ;;[ºté"M›6•üü|ÉÍÍ•   yøá‡•<55UBBBdäÈ‘""²eËÑét²ÿ~Ù¶m›èõz9|ø°ª6•œœ,žžžòì³Ï*å:vì˜xzzªœE,Û‘ší ‰ŒŒ”œœe›¦cZTT$""ß~û­øøxÕujšKaë\sjÚ­£~[Öú3qÔþEþê={ö”ýû÷KVV–Õt}ûö•üQ233%;;[Ö®]+$44Ôn¾Öxzz*ý"++Kòóó%11QV­Z%]ºtQÒ=öØc@>üðCe»¦_à;tèàpÿËÃôKïªU«$??_jÕª%ááá6ÓWdà쨿¿ù曲bÅ å³³íÝQà'äÇTÖOŸ>ÝâÞ^ó>šžž.¾¾¾2iÒ$eýáÇE£ÑÈçŸ.þþþòâ‹/*ëöíÛ'¦Tà|íÚ5qww—U«V)içÌ™#râÄ  Íš5S~i0g-[¶TöÓÙsLaa¡¤¦¦ÊsÏ='}úô‘ÔÔTY¹r¥4lØPRSS%##Ãê÷ÔÔ“½zY¿~½ˆÎ²ÿ~«ukÇí·ù©æø9³ŽÆÜŒŒ ‡ÇXÄñx§æ|d‹£ÀÙÖØ}GÎ""ÿþ÷¿UÎûÛß$**Jùü矊V«•éÓ§Û-”Á` &X,›6mšÜsÏ=""rèÐ! ¿ÿþ»EšuëÖ 9uê”hµZY·nˆŸPßyçÑh4²k×.©W¯žÝûÕÎå)£©.Í¥¦¦:]n5³y RüÛrÇŽmîûåË—%;;[ùœ™™)ƒA¦Njó;&Ò´iS Q:¢9S›1ÿåéøñã@üýý•eõêÕ³™.00°T¾¦@€üýïwXN{rsseöìÙÀî/%™Ü¥K—Z,ß¾}»ÈÎ;€;vÌ"Í{ï½'5jÔP>;V"##Å`0(Ç[M›Zºt©¸»»Ë7,Ò<õÔSeœÕl×`0Èk¯½¦¬+((²råJe™édáÌäÉ=z™={¶äææÚM«¦Ý:ê·e­?Gí_ä¯>œœl7¯ÂÂBYµj•Ü{ï½ã­^¯·›¯5÷ÝwŸ777‰ˆˆþýûKtt´œ8qÂ"]ýúõ€èt:Ñjµ¢Ñh”|===îyôîÝ[´Z­¤¦¦Êÿû_ ÿüç?m¦¯¨ÀYM?zô¨ 0@ùìl{w8Ÿ:uJÈŒ3l¶só>úÕW_ ‹€H¤ø*ä?ÿùO‹ 0&½zõ*8‹ˆ<øàƒ2pà@%]ëÖ­eÒ¤IÊx¶xñb‹|LãÙ‘#G”ºpöcÚntt´ˆˆüë_ÿ²¸pb‹£z²W/¦ñ«Q£FµˆõÀÙÑ~›‘jŽŸ3ûáhÌ]²d‰Ãc,âx¼S{>²ÆQàlkì¾g»wÉO›6 Ÿ}öz÷îmó†ú³gÏbïÞ½ˆG÷îÝѽ{w >z½«W¯¶—=XÜÇUÒ™3gO>ù$Zµj¥ü¼ôÒKŠïêСþûßÿâêÕ«ˆ‹‹Ã°aÃвeKüòË/ˆÅ•+Wп‡å¸Ue´vŸP:unI¹í•ÓN‡%K–à‘GAÛ¶mQ¯^=\¼xQÕwÝÜÜ0mÚ4$&&Ú=Î!!!ÊÿCCC@¹Ï(ž¬a+ÝÕ«WKå÷ÔSO)ÿ9r¤ª²Úâéé‰èèh„††â£>rúû%ïÿ3Ý“}îÜ9œ={iZ´hœœ\ºt @ñ#¯\¹eN€š6uöìY¡V­Zù«}ª5jÛ²——W©ïZ[æŒ?þaaaˆŽŽVEm»µ×Ê[jÛ?»s+жm[<õÔS8pà€Åºüü|Ue1÷å—_bÈ!Ðét8yò$¾ÿþ{Ìž=wÝuÖ®]«¤3õ»¢¢"F‹û¥sssÞ®¦ÇÊýôÓO0¨[·.zöì ˜7o4 nܸqK¶ ¨ëïwÝu-&ƒUd{ÇôéÓ1kÖ, W¯^˜?¾ÍýNHH@­ZµÐ A‹å£GF@@êÕ«Wê¾ñæÍ›[Íë‘GÁ¶mÛ™™‰˜˜ÄÄÄà‰'žPÖÛÏΞ=«,s擜œŒ3gÎàØ±c¨[·.Μ9ƒßÿ 6Ä™3gPPP`ó»ŽêÉ^½Ü{ï½Êg5(P³ßjËålzGcî¾}ûTcGãšóQY83vß.lN4yâ‰'ðÄO N:V×ùå—Ðh49r$t:²¼nݺøæ›o°oß>tîÜÙfþöf¸šò{çwàëë[j}“&MЯ_?|ñÅèÙ³'7nŒ¦M›¢gϞرcj×®&MšXL2+‹ò–Ñš[Qngf gdd ]»vpssóÏ>‹ & mÛ¶èׯŸêûøø ¨¨"‚‚‚‹ò™Ò˜N;vì@VVÒÒÒ°wï^ÜÿýªÚ”———Õ'//Ï©}0WÖ¶\&L˜€Ó§OcÁ‚˜8q¢Ítδ[{ý¡"êOMûJOê37tèP?~Ï=÷ž{î9!33uëÖU]sÁÁÁøî»ïŸŸ¤¤$ÄÅÅaÆ X¾|9^ýu<ú裀ڵk#55)))ª&MßÔö÷|?üð† V!Û-9NÌž=“'OÆ÷ß;v`Ö¬YX´hŽ=Zªßyyy¡¨¨Èj¾:Îj{µ2ãÇǦM›ƒæÍ›£cÇŽJðfk<3M¶œ;Ç<ýôÓØ¿?233ñÆo`ÆŒHOO‡——¾ýö[8pÀbeIöêÉ^½˜SS^5û­¶\ÖÆM{鹿üò‹êclo_===UÊBíØ};)÷3o¾üòKtïÞo½õÞ|óMågñâÅÐétøÏþSæ¼###ÞÞÞÊÕìîÝ»C§Óá矆··7ú÷ïøøx|ùå—ÊŒqÓ#޶nÝZî«ÍQFkªºÜ¿þú+’’’°iÓ&¼øâ‹èÑ£üýý‘‘‘¡:L:'Nœ°ùô)S¦ %%/^Tž@`þä Ó£¦LéRRR”t=zô°Èkþüù8~ü8þö·¿áÞ{ïE\\æÍ›çÔ~›ÓëõÊ öîÝëô÷K¾h×®]Н˜žð°oß>‹4ûöíƒ5j„ÔÔTŒ;o¿ý6F¥<þQM› ÃÅ‹‘`‘Yöä¬m¹"üú므±cÇ–zÚAÉtåm·*¤þÔ´GLWz¢¢¢`0’’b÷,Ž´k׋-ÂùóçѤIôìÙC† `ùÈ(S¿?~ܸqÃnÐ쨞ìÕËܹs*§3ûíìñs”Þј{÷Ýw;uŒmQs>*+µc÷í¤\óÁƒqòäI<þøã¥ÖÕ¯_Ý»wÇW_}¥ê7Ck"##ѹsg¼øâ‹HIIPügð§Ÿ~Z¹*Ù®];4hÐß}÷ºuë øùŸùùùøá‡*%pvTFk*¢Ü%hgøûû€òö;£Ñˆ… "..Ω«nãÇG@@Þ~ûm«ëOœ8Æ£Q£FÊó7t½ñÆðòò¶mÛиqc4nÜÛ¶mƒ··7Þxã %Ý… 0sæLÀäÉ“ñâ‹/fÍšU®7øùøønÞ¼éôw.\¨ D'NœÀ«¯¾ŠAƒ!88íÚµCÇŽ1uêTå6‚={öàÃ?ÄÓO? ­V‹qãÆ!44“'OÆ{g›7obúôéªÚÔàÁƒQ¿~}Œ3×®]ƒˆàóÏ?ÇÖ­[ÞS;*k[®¦çÅ; Î+ªÝVTý9jÿŽ˜‚ÚÂÃᡡؽ{w©t¦Û̯^[[väÈ<ÿü󇇇jÖ¬‰€òøKxóÍ7áëë‹Í›7#22žžžhÚ´)† vËX>¿ùÀÈÊÊ*õ ²­}³¶ÌYjúû}÷݇ƒ–éV™ºuëbÓ¦MJŸúøãqìØ1eýÍ›71cÆ |úé§Ê2Sà\*¿^½z!44Ï>û¬òËá矎Ÿþ3fÌ@pp0&Mš„ÌÌLˆ>üðC9rÄf=òÈ#ذa’’’JÝêöþûï+e‰‹‹Ã«¯¾Š=z”9pŠyغukèt:ÄÄÄ@¯×+Á¢=ŽêÉ^½tèÐÁ©2ªÙoÓñTsü>úè# >ÙÙÙÓ;s|ðA§±5jÎGe¥vì¾ÝˆˆõÉæJMœ2eŠxxxX<âÆÜÇ,,?fÎ`0Èœ9s,–™ßÐ."’˜˜(âææ&7N';w¶¸Y~ôèÑ@Nž<©,ëСƒxzzÊÍ›7íÞü­fr`E”ÑgÊ]²\ÑÑÑâææ&­[·–ŒŒ «ou²7qÃh4Ê!CD§ÓI‹-¤nݺү_?:t¨Ô¨QC.\h·ìæÞzë­RÇÿ›ÐsèÐ!iß¾½èõz µ˜ÕmrðàAéÝ»·xyy‰———DEE•šX6hÐ  ƒA ¥  @‚‚‚€ 4HuY­““L“JfΜ)Z­Vj×®­111$Z­Vy”^TT”dffÊòåËÅÃÃCâââ”ôëׯ­V+»wïVÕ¦¶lÙ"¾¾¾¢ÕjÅ××WüüüdÆŒNM,ÙŽm·d0M–úú믕ee™¨ö¨m·júmYêÏkí_í>effÊäÉ“¥I“&âéé)÷ß¿Åc¼JæeëÇdß¾}2nÜ8iÖ¬™¸»»+ýîÙgŸ-5®Ÿª œ‰ˆˆˆ\çÊÁÀ™ˆˆˆÈÅ1p® œ‰ˆˆˆ\çÊÁÀ™ˆˆˆÈÅ1p® œ‰ˆˆˆ\\uœOŸ9ƒ ›¾Ç©ÓñÈËËGýzõð·Îп߃pwû+äüìËÿÀh4bÔ#Kå±òó/””ŒgÆŽFýzõ*³øªXŸ ¹ ©ÒŸ/V¯Æ˜ ÿ@Ll,:´o¾Q½áãã÷?\‚±þ+©©JÚ#GâБ#¥òX°h1>ýìstír?ê׫Weûb¯8¹¸ª¼â¼c×.,[þ F=ù&Ž« Z­ç/\À?žŸŒ×Þü>ü¿…Ðjµ€F 4e^ôáR¬ß¸ ³ÿõ&ºÞÿ7VÙþØÃ+ÎDDDD.®ª®ÎF|´âSÜӮƜœäææ"//999¬_oLq'Oaçî=Á²)–.÷6`ö¿ÞD—¿Ý‡‚‚‚*½zng""""WUAfBb"R.^ÄÐÁƒ››[j}QQÚµmƒFbÏÞ}Å©üUæ¥/Ç7ß­¯6A³£À™·j¹8Gß­’œrÒ4Øf Ð<, ’.X¤ùø“O±æëoàëë‹Í‘ŸŸ_E.^q&"""rqUuu6¿ 8Øuss³›ÎÃÃ99¹ÿ œ1±±X¿i3æÎyZsæ¾WåWšÕ\qfàLDDDDeâ_»6àêÕkvÓ]½z µkû)ŸÝÝܰxá|t¼·=^}ù%üöûïØ¼å‡[ZÖŠÀÀ™ˆˆˆÈÅUÕÕÙˆæÍ¡ÓéðÛï¿ÛL“™•…˜ØX´iÝZ¹¢Ñ!ÁÁÈÏÏG§÷âÁ>QXòñr$§\äg""""ºýÔðôDT¯žøvý\ºtÙjšåŸ|ŠÂÂB ìßOY&"Ê#ç 0å¹gáëëƒwæ½£ÑX)e/ ÎDDDD.®ª®ÎF<7q¼½½1ååiصçWäççCDrñ"Þyo>6ÿ°/<; þþÅß³Rf­V‹×_}q§NáË5k«íg>UƒˆˆˆÈÅ9 øn%wV›ÙJéIDATww¬Xú!Þž;3ßžFwwwäç磶ŸÞ|-=ºwCnn®Å÷ÌË,"hÕ"Ãþ>_®Y‹íïAX³f•½+1p&"""¢2)~jÆÜ·g#-íNÆŸBnnë×GdDsXÍ‹æ¿ÈÌ̴ȧ  ÏOú^zq 233«åÛ8¹¸ª¼â EEEÈÌÌ„^۶ÆRÁ1dddØÌçæÍ›¸yóæ-+gy1p&"""rqU8›¡¨¨¨ª‹qËpr ‘ ¼âLDDDäâªËçÛg""""ÇÀ¹rðV """""xÅ™ˆˆˆÈÅñŠså`àLDDDäâ8WÞªADDDD¤¯8¹0OOOäææÂÃ㪋âòòòòàééis=g""""f0pêÔ)„‡‡3x.‡¼¼<ÄÇÇÃ`0ØLÃÀ™ˆˆˆÈ…µjÕ ±±±8rärss«º8.ËÓÓÁÁÁhÙ²%òòò¬¦aàLDDDäÂòòòЬY34kÖ¬ª‹r[°4œHDDDD¤J©+Îi×.UE9ˆˆˆˆˆª5^q&""""RÁ NŸÀ®Û«º,DDDDDÕ–_5CDDDDäÀÿwGºþ6IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/Makefile.am0000644000000000000000000000013213135434036016762 xustar0030 mtime=1500919838.096648472 30 atime=1500919916.093315139 30 ctime=1500919913.319981806 denemo-2.2.0/docs/images/Makefile.am0000644000175000017500000000210013135434036020624 0ustar00jjbenhamjjbenham00000000000000imagedir = $(datadir)/${PACKAGE}/manual/images dist_image_DATA = \ ArticulationsPalette.png \ AudioPref.png \ BarlinesPalette.png \ BeamingPalette.png \ BookTitles.png \ ChordSymbolsPalette.png \ CommandCenter.png \ CommandTab.png \ copy.png \ CustomOrnamentsPalette.png \ cut.png \ DenemoDirectives.png \ denemomain.png \ DynamicsPalette.png \ ExternalsPref.png \ FiguredBassPalette.png \ gotobegin.png \ gotoend.png \ InsertOrAppendChords.png \ Lyrics.png \ MidiImportPalette.png \ MidiInControls.png \ MidiPref.png \ MiscellaneousPref.png \ MultiLine.png \ new.png \ ObjectEditor.png \ ObjectInspector.png \ open.png \ OrnamentsPalette.png \ PaletteEntry.png \ PaletteMenu.png \ paste.png \ PianofortePalette.png \ playbackcontrols.png \ PlaybackView.png \ PolyphonyPalette.png \ PreferencesDialog.png \ print.png \ PrintView.png \ redo.png \ RepeatsPalette.png \ save.png \ SchemeWindow.png \ ScoreLayout.png \ ScorePropsEditor.png \ SimpleTitles.png \ SourceView.png \ StaffVoicePropsEditor.png \ StringedInstrumentsPalette.png \ TiesPalette.png \ undo.png \ VirtualKeyboard.png denemo-2.2.0/docs/images/PaxHeaders.19168/PrintView.png0000644000000000000000000000013213135434036017363 xustar0030 mtime=1500919838.103315139 30 atime=1500919916.093315139 30 ctime=1500919913.369981805 denemo-2.2.0/docs/images/PrintView.png0000644000175000017500000027057613135434036021255 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRé·bk?gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>€IDATxÚìÝw\gð'ƒ{Êp!( ¢8A÷ÀZ·u¶î=ëx­­ZëlÝZG]8Á[Ü€àBEDÙ{‡Ì»÷§¦i ’Àï[?ý„ËÝs¿ç¹'—'wÏó…éD:‚®éÐ TVV––”GÇš¤óOÛåÏ?ÿÔtŽäúá‡ð ÊÎ;Ú·oß¡ƒ—‘‘‘¦£@R?§\º|Ù·[·ZLóñ“'“'Múøñcí†Z‹Éòx¼ÌÌÌŒÌÌY³fÑ'NœÄb …Bèøè*…BDm&H¥’$Y»iÖn²t:½I“&¶¶¶{÷î¥òùüÚêƒÛµ˜ F#I²vÓTG² ÃÎÎŽ. j7P¨•Jmh×]DlmlèµÞÈ€ZQ©TB ×]j7M5%K×Óƒ¶  c¨T*Y«3þ¹¹SÛ×]Ô”,Ìïè*•JµyéáÛÍZ¾œ¡¦d¡íè*•J’j¸îR«iª/Y¸gè˜Zï«ûOÇõÜ3ªõdẠ cj½¯î?7wjûrF•ÉÒh4„P(¬r¡8:‚ë.4`þùÇÇÓ¹ÄhÈ꾯nï >òÞº}ëfõ’¥Ñh;w¡Ñ¨oÞ¼)*,Ä Í-,<<<„BâÙÓ'òš/th¹ Spð°·oß"„œ+** Z´pž:õû:h:4¹„Baß¾ýRSSI’lÞ¼9‡Ãa2™½zõš=ûGyýÈÊÊÊÎÎÑ70¬¬d+H™ ˆÈȇ=zH,ïׯ?ží»uëÖ¡¡çôõõ“““øá‡””Ï-Z´pqqV&q€ªjŒt ®»(º¬¢0Y!ŸO’$…Bm×®ý«W/ -,,Úµk"I!ϧP(27¤”••Öbæ¨O‚‚ú¤¤¤dggQZZº}ûöÌž={Þ¼¹šM‘>}ú~úô);;[(;vlåÊ•ƒ Ú±c»ÌÎmB¡B¡±Ù Ò|úôé„ SS? ’³Y48!!áæÍ›m۶ʼn\¿~c×®]=âóù§ÊÄ*ÉÏË{ö왹¹y-¦É®¬ìèã/o…¾ýú#„¶oÿ]|á‚ B7®W/YPXYÉ-J\^Æ'NšììÒÒͽíÞ}ûI„öíßïìÒ2üê5¡ÿmü¹e+×±ãÆk¼À?ø§mÿз1ÒµøÿŒQ°Â?g%ª”¬™™)—ËyöìNGÑéôgÏžq¹33S[Qk±Õ@½×´iS„Pbb¢žžÞãÇ¿ÿ~ê²eË{ölêÔ©ééé óÀƒ`Á‚ âTVN›6544ô¯¿Žmûm«to|ƒfÍšnÚ´iÒ¤I|>}{šëÅ‹9NZZBˆËš¼°+Ù¢“TYi‰tñ :$22òÂ… ]:wº~uXp°P($„BQâ Ê*°G“ÿk ¯êرãÝ»wI‚¸wï^`` F+‡>yü×?m—Zýúf(÷à!™+(تÊd­¬¬|||¢…ÂÇwéÒ…J¥úøøDGGçççËÛ ÆP5ÑÇ$õË„³³3Bü¹JLL433ûwÍÿvˆ†!‚ ¨Tª‚Mpã qãÆååeC† ^¶l“É477÷õí&ÚüóçÏ!;;;.—K"Ô¨Q#„ЧOŸôLÔ@žììlœ8A<—Çã‰Þb0Ne“&9œ{À([ü-™gŒž={²X¬ëׯϟ??6.nÿ|>O|Mìxòï¿ïÝ»G£Ñh``ýôÙ³Û·ïLž_ ÒVŠûáR•ë««jÊŠ“%I¡@ âÚµkååÖVÖ¥¥¥aaa B Ê;O¼ºÈ%þ±))-ýóϽ—¯\™2eŠ¿¿?»¢|ú´iaaáË—/_¾lYëÖ®éééŸ:ý×Ñ# ¬Æ&â¦L™|ëöí={ö¬ýi A¢Óé?þøc­Ï·-MOO!túôéŽ>>ÖÖVøOqC‡ =»ÿ>_ qÆQqƒÑÝÏïFDD‡š5o^É®hݺõåË—ƒƒƒõõ dÞ¢P©TܹU&‰‘ÌX § ÄHTM³Ê”'KÄ_E™˜˜XXX „,,,ŠKŠ9Œrtp¤É#M[¾|¹ºŠ]6|øˆ> „ÂÃÃ÷îÝ÷÷ß§‚X¿~ýÌ™3ù|—Ç337HII9þ|xøÕ¬¬ìQ£BÚµk¿eë–ÈȇB¡0)))((háÂE?~¬¨¨`³Ù}úô‘·ÉÇ„Bá»wïúöí;wî¼OŸ>±Ùl;;»Û·ïDEE±ÙìÊÊÊAƒuéÒõæÍ›GŽ=*vîÜéååUYÉÝNž2eJ|ü;’$?~lfnÖ¬Y3Q޶nýíñãÇB¡ðýû÷.-]ÌÍÍ—››K•ÏÊÒJúU!}##£¢¢"•Ò¬2eÅÉÒh4cccSSS###ÑBCCC¼POOO^²”â¢BM´”‘±‰è±xzG‚ x\Žø*FÓ70­Æãqù<ž¾¾S_!Äç󨆆,=!Äåp8œJ¹›0™ˆBáóùìŠrCKOH²²’M¡Rõõ Ir¹\§’N§3õ p<$Ip*9Bá.³ŒŒèt=„@ àr9±hõ ˜LŸÃ©$„B&SŸ©¯O¡P¸BHAØ ¿+ Dý‘%›˜R(”²Òü®xâò2Ž7Ôc0 YœJ6—ËÅaèë°+Ê¡í€´ŠŠŠ·oßR(µ9RØÈØÈÆÚ:%ås톪¦d¡íè’ŠŠŠwïÞÉ»ŸR=,ËÂÂ?Ôþdaœ K( N¯Ý¶ žWA­JƺÄÀÀÀÄÄß`­-Tõ42Ô”,Œ3tŒ¹¹yFFƒÁ÷¤eUU9ÎH«’¥“pÝÐ)–––'??ŸÉdÒéôš·`t랥° ¿æ© .ÑéôÒÒÒÏŸ?7ÀáxÐvt•J•ž(²!€{F€N …òžøS¿ÕæÌ6êF¿ŸXö.£¢„­Ú#j©!ÝÍÕ½• J!"-#-¯ ¯v€U“É´¶´nìØ˜J¡jOT»úZZ ä¨ÎJFÓ±h˜.V -¬ØZ’Z³I¹õµO{;†^mNqS <¾0âe–@ÀïÑÚìKÚ==½V.­j½g²ªAâÇD_дqSí‰ rW_ A«‚ÕYÉh: ÓÅŠ¡…[ CRk6éAíQÁåjøº •JíծћÉ¡Ü¼Ü@ÿ@’$5Þf¤R©­œ[=zªUQAîêk!hU0#µ/™N+†Vl- I­Ù¤ëѨ¼oCÓ ¡PˆMH"„@( Rµ%* õŸAóÚ䮾‚V9R+ñ’iàt±bhaÅÖÂÔšM:BH†IÏ«QAîZ!hU0#µª­¹Pë ݪZX±µ0$µf“N’¤–äD¤(8í‰ê[PZ䮾‚V9R+( „îV -¬ØZ’Ú²©MmÊ¿Ÿe퉊BRD =í‰ rW_ A«‚©•xÉ4pºX1´°bkaHê˦µ]зO±Öµ)Z䮾‚V9R+hºètÅЊ­…!©'›t’Ô–»b¢¢Öªr'ÉîeiUT»úZZ äH­D%ÓÀéhÅЊ­…!©/›tÉÎaTLÌ’«DÒét{ûýú† F¥Re®|áÌ)k++yûKÏȼ}÷îè‘# ôE„Qœ~FUF%±‚žžžƒ½}¿>A#‡‹FºK¬#òÃŒé£GŽWUQuï$/×ïܪ¥ãU™·îÞ=r„¼uç—‹Å ;Nâ©™c&NB]>wÖÂÂ\ƒÙTw! YÏÞÎn`¿¾!#†Kê8„………wϦOWp ’ücßþ›·nóøü[WÃjXªÿ|äOŸ²¶¶ªrå*s„""ìÚµë·R¿|ÑÓ£7mÒdä°a=ü»W;B‰¢V)à:¤JU×£Ó$Îç*©Ýj Ìɳg€µ«VJ/¯ÆiS«NeuP¼ ˆ”{Ýß6[·z¥©©)BˆËå½|õjßÁC|>ܘÑ+·nÕjûÖͦ&& z™GŸSF($I¡T}ݥʨ$V`³+ã^¾êîÛMü­»ˆ'¥Álª»Då°vÕJ33S„Ë‹{õjß¡Ã|ܘ1š † È´´´¿Nþ_ðËö-›åíúýû„Ð ¿Ÿ4Ñ­Mëš/ñÛê VS2G¡Ÿ6ü/úEìÈaÁ“Ç+¯¨xøøñÚÿmÌÍ2bxõ"”(j|Ž233Õ’º*^2 œòUÍ®Œ{õêБ£âçsU÷…_Ô°(ò¼{ÿA¯À];w®y Zu*“©>e¢lÒ ‚¹¼°­»»èRŠo×. åü¥KcG’XÙØØØËÓS^R2S–BQ¥ÚQI¯àïçÛ­k—EËVܺ{·w` ÌuþS(r¢U•—§'~Ÿ‰åáÞVÔ &BM‡P%òʼÊÜá%-]\îÞ¿ï×­«ø[÷ŸïîæVTTÌfWFÅÄõMLJš³pÑŒÙsŸGGwï”›—‡—çæåÍ_²4hààÉÓg¾~ó'ˆ¯S‡Œê+g—$A’H¬Í¨jTòVðòôìÚ¥óµëòÁp‰ËÛ¯‚¨D))‘røõ½ú,//­Ã “?}Zºrõ a#¾lÕê´´tÅëÿ[æ£ä—yU¹Ã­øÞ=ž>ª`³EËS¿|IùœÚ;°úö!<}öܨqz÷8qêô»÷$¹fý†©³~mBĈïÆþ¶}‡Ì€qÍIKOŸ·xIÐÀÁ§N{õúÍ»÷ Ó~ø±÷€Aã§Ly« ¿¢Š·`ɲ>ƒOž>óõÛÿV¼‚¨ò?õªm›6EÅÅl6›Ëåî?txÌÄIA²lõšäOŸDQ%$%ÍY¸hæì¹ê F P(HA}À»2rT÷^A2cS©âá²²³ç.Z4pð¤i3^½~Sí=¡oPo§fÍø|>ÎÇ2ÒËÓ3åógyL¥ã.}ŽßD´P<Ù‚ÂBev-½‰‚ªÌ’iàTýÜyyzvíüÏù\ÞQÀ/¤Ï±8AÉ=“¼|ýºGŸ~±q/ñ ‘õê?ðSJJ5*6Þ×âùóÊÊÊþ8Tùß×ÿ¶ EÒ32ôõõ™L¾îôÛömÝÜfNû^t ¿Ø°é×N>>Ë/dW²7üò Þvú÷SBë׬þ}˯rÊ””¸g¤jTòV …>^^ II¢Ö BˆÃá°Ù•¢\OÞîªü€I†'¶ß.]„Baô·ïÝôŒŒ”ÏŸ{õ@-]µÚ½Më5+–;·púeËoq/_áu.……ïþs_`€5+–·pj±fý†çÑÑ‹—¯är¹‹Ì_<~AaáÚ¬¯l™+sú@¨s§NT åÑã'¢…wï?hÞ¬i³¦Mq~C/\—wð ™çXÑÊ2+¼g»výûöÙ±gÇ«`³wïÝ7nÌh§æÍ«÷QEY[[MŸúýµ¢3<ùíkBÕêàT¦äiAÞ¹½.?8rÇH“b_ð!>Ÿ÷&>þÔ™³ÝýDïÐèàAAD¿xÄ.‚uíÜé»Q!$I …ÄÏ›·”””˜˜˜¸8·@µuw373“yÉúß@(¨ÚQ‘r.ÇYZXp¹Üòòr###üÖø)SÅWèÖ¥ó†ŸÖÈÛ£â¨þ]IîÝÔÔ¤MëÖÏ££ýý|B?151iß®ÝÙóºûúþ0c:I’þ~¾?Î_pòô™öí<Á±“'§Nž4&d$~‹Ïç;yjÖô©Å%%»æÏmÒ¸1BÈÑÁáÊÕ«|>!$sýŽÞÞ!—-BmÝÜÌÍå–¹âÜá1z¾ÝºÞ}ð wÏ.ÒÞ|Ø7¨7A!>ÿ÷Ùs#‡ÿ0}I’Ýý ‹ Oœ:óëÆ zzzOŸ?2h BèÑã'¶66­Zº¬Z·N:àÉÆ!„FѯOI’`Ó–­«~XÔ«§èÏ’’RCC™ùÅ›wíÜù[Åþ¼yKqI‰©‰IÍ AT‡Íf#„x|þÛøw§Îœ èÞÿùÃŒiÁƒãû&&Æ+ZWTT„·4 ðàAAQ‹ÁŒÿþ?ØÞÎnñüy|>_^}صDl<O¥Š‡7–YbÒ}KIh¾`UUuéw­,-¸\nyE…¼£€_HŸcG‡Œ@ߎ¬¼OʬéÓÆOþþÔÙseååF,Ö¸1£krò$"xÈà»÷ü¶sçá½2™L¼¼ÔÁ©LÉÓÂï[~•>··ií‹êêƒSEÛeÂ÷ÓÄúxuÀU¿Û¾þú”h1tôöÂËMLŒB¡Ÿ#Bø"•Ì ,ªp ú)ŽJ:’?R3ölÚ°ÎÌÔL´‚¨M#¯6(3êŒ$ÿ³ üº[—ÎgBÏãoµÇOžv÷ó¥R)¡ž¸”BA={⋊©_¾”””¶kë^ZZ†ßêäã½uû{;;}}ýßwí>th»¶îNÍ›á/ªO))2× …T*UH!!¡¨ÌçN”£Àÿ5ëÿW\\ljjú1ùSzFF@w¿ôŒL„PfvVIII@÷î¢ìúûïÙ·Ÿ¡§×ÑÛûÉóçƒ@=zò´wÏÀ”ÏŸåŒòpwlj˜šš „<ÜÝÄÿòÊo.Qñ„¸âÕ¸Då Uñ¼~œ1$Ésfã/Ú¢¢¢´ôŒ7o#„ˆo)µ÷ð•L-#^Ó2ÒÿÜpû®ÝÁCË+‰]KĦjÅÛ‹ ÜØØHTà*çˆ$B4MÞ‡+3Kv%¦ÌqûlÊÞýçÇÏ?+W¹kéM;8È)1¹%ÓÀUYÕå½K‘ZAâ(Ë:Çþ³‚‚3‰¾þÜØ´e+I’»·oCrŽ”ò'O¡@°|ñÂ)ÓgþëØ¬éÓðòÔT•¨ƒS™’§:&}n'¢.?8UÌM':?R(ÈÖÖÖÒÂB<-ƒ!¾­èµ¨ Ý’P¼;Q_ÝšD%s/¹yyL&ÓÐÐP´¼…““•¥¥‚MþÍ”rQ‰2 ±Z×Î>òî}‚uâ‡ßOž(à B&&Æ¢ÕÌÍÍ9NyyyYy9BhÖÜù 3ôôvýþÛ±'7lúE(z¶o7sêÔfM›È[ŸÍf³X,™ñ¨–»o)xwè```ðàÑ£Á“i`` ø(KŸc+*Ê‘Â3 >súvíÂbš™šº´hQó“'I’vM?îÈ_ÇüýüðòÒ²2•Pÿ©LÉӛ͖>·‹èêàƒC'¹rjÞ\t~$¥¨-Q:¢×ÝŒ•l»ˆÞ P(Š;*+ŽJæ^bãâ$††*¸$YLßf*T~ •øjŽŽöÏ££-,,LLLÚº¹½|õ!TPXhkcƒ×)((ÀM+K „ÐO+WØÚÚˆ§É`0œš5ûyý:@ð&>þð_ÇV­]wòèayë3™L%Ë\™Üáå~~÷#êßÿÁÃGÆ]´Äƒª ‹ŠþÍNa“Éd±X:úPŠŽýú5͹…“£ƒNJ:ࢢ"$«FIü)/¿xójW<%±ÌŠWT\¼â§µA={nøi±‘I’QÑ1‘+Øu­#Qìíù|¾>S^}W¤øOU+~WA+Ÿ#kë&G>zÜÁ³½øòôŒŒó/M<©MkWy¬Ê0”o#v>—> x¹Ìs,Rx&Ágγç/P©´Ì¬ìë7ûõ–•’'OlÔˆá÷#nÛ¹kêäI!++Ëê ¾S™ô.”’ô¹]ôP7ªü®ºÿÜ«“7 GâÀü›¨Ôr™¯eìî[2Uö3R•t$Iƾ|ùôyÔàý¬£xUF%ʃtºB¡°k—.Ï£c?}Ú½[7ôíGÞƒÈGx‚ îÜÐÒÅ™$I[S“âââ–ÎÎø_bbÒ­;wSRSGŸXTT$ =Ü݇ÍÍË«¬¬”·>•J•j¹K¡‡÷wïîG>ÌÍËó÷í&z×ÖÆÆÄØøÁÃG¢îGF¶jéB„¾¾WÏgÏ£=yÚ»gO¡P(/`ößzCÊü³:›×¼¾%">2MTñÒÓ3x<ÞˆaCõèôÊÊJ‡óòõëo©]×^0‰à°´°”[ä)¦jÅSœšJ9"bä°à›·oGż_xôø *•êïç« ‚) CÞ[²–ãY¹Š‹K𲨘Q}“·k •"s“Ÿ>É.1ù%ÓÀ©ZÕã^¾zú~ÿîÝ–Ÿ7âR?ö»?ÌÉÍkéÒ"9åó¹óÎãèàÀãóùm[PÏžl6ûÌùónmÚàÓ2×Ç»Àeþ,:ÆÁή­»[5r÷-Gˆ$Iw·6æææ{öíÇ/DëÓ¨ÔïF…ì?|„B¡¸¶lùôÙó×oÞŠzÂw÷õݾ{P èî§ ƒâ;RPÁª±yÍ A¢$ÞjÒ¤±¾¾þö]{ôëKDLlì›·ñ¡×oãŒX[©/“*¯¨W>rЉªŠJOññR5G}ƒz?}õÓ†ÿùûùº·iî¬|•˜4aìw6ÖÖ$I*¨`Jw©5ÿ³I“ÆŽ4mϾ}Áƒ½{Ÿø)%ETßäíº±£ìM—˜¼’iàWõWoÞânIbçóî¾]»…ByGAÞ9V  „HRn…'bûî=í=<ºvîÔÑÛëæí;Ž]<žâ˜«-È<·‹o^œ*榫ŶK+—ö{öí7408{ò¸ì ŒR¢¯n•m—ÍÛ¶ã?étºƒ½Ý´É“‚‡ J&"Sõúêb®­Zš˜˜P)”¶nn¢77ü´úÄߧî^³¶¶Z¾dQûv¸i5tÐ@@p9,üâ•+övv çÍ êÙS lZ¿öý~Û±S_Ÿéåé9sêTœ¼õBÿ”ùÞ}ò˼ŠÜ‰çˆ$ÉÝý.\¾Òÿ;¾<(zwxðPPvíZØÕkŽëV¯tkÝg§sG‚ Ú·k'švYfÀÑ/bÿ[s¼?Uݼ慠àÈ"„ŒŒ6mX·ÿÐám;vš˜šôéÕ{Þ?Ìœ;ïÙó¨^=%¶R_0övv¡çÑÑãÆŒ–Y)NA¥ŠWej*åH løiuøõ7nÞzö< Q(Í›5[¹tI`€?îë'¯‚)C¢¨ÅÞ’±‰…¹ùÒ… ;þÛö>Þ^K.üqþ¼Ž¼]ËÛ„¡§'ï£ dª²ªoùýßó¹½Ý´)“ƒ§8ù!YçØ˜Ø8¤ðLr%üjÒ‡GìÃéÏýñ‡å«×ôî(ó÷¶âø¥?B¡püØï=yšž‘QÔ}*Cªœ¬s»øæêþàPÒ³r‘'ýFÓ××g³Ù27–xWô'•J•¹œ$I …Âd2ñh<:K‚ƒ¹óvÖ¢¾ïÞµri%꟬|T¢Ä—!ÄS«2qL&óMü›öíD¥LÊs.vkí:sÚT„ÐËW¯W­[ÿ÷Ñ#vvh4A|>_Ô´BéééÑét*•*þFÓÓÓÃMo¡PÈãñD{‘¹>®ÁŠË¼ÊÜIäˆÁ`èééñx<¼¦ø»zzzzzzø>«D †††B¡Ãá(È ¼%óO•6¯y!(óq`0þ™ôW6}}}\ñ$¶R_0¸œñ¡‘W©ªO™ÔTýá½ãb$IRúC!]Á”?îUž£ðAÄyäóùâõMfݦÓé27QðQ•Y2¨a«²ª‹/‘>ŸË< q/_É<ÇVy&Á©á[¢8ŽtçHUOž"T*UtÚT>€º9•)yZ@²ÎíÒÅ«¾ $k¤8Þ™¼Ú&ñ®èOмÕd·øÊ¢@ñdªF¥Ì J®#¾²økÅ“©ËK9#3óSJÊÌ©ßãÍñH2P ¯@¸\®tdaË\_É2Wœ;‰r8ñ&ˆø» b(++«2`y5J柪n^ÃB@*~Bø…ôVê FTÎÊÔ™‰(_ñ”IMù)Ø»J±)8îUž£ð¹Rº0Æãñdn¢äFK¢ ª}ÂGrŽ‚¼sl•g‰ÔjR±åm+:9T#€º?•!UÎíU¯Ì_ù7Zž»z@« A«‚©¦ŽŠQçX-¬ØZ’ú²I'Iíi»ßIkÅýìßßFÚ䮾‚V9R+¸îòݬZX±µ0$õeS«Ú.¤øk-)wíŒ rW_ A«‚©…ˆ.V -¬ØZ’ú²Içñ…zzšÿQ(”rŽÅ¤!„¨Tªø¸šŠ/à3ôZ䮾‚V9R+ñ’iàt±bhaÅÖÂÔšMúÃdv€3CŸ^õ6ÿ\Ÿ!‰ùíO‰¢¡ ÿ\Ã!IDâÓSä$‰Èç_ùœLBf¦fù…ùæ¦æxŽeH„Qå#ŦýU\L¥å¥666Õ‹J™PU [Á&ÕØV¹S);5ù\Iü¨v:5)•j2U®Öˆ¼Ý©ZbÕ®fê®cÊç¨æ'ñÚªrÒ%ÓÀÕ°bÈ<* %¿ÄÕây£Ê]kðÛ ÕöªÙw–x6éŽV¬s/K+¸B9ëá•! Q)ˆ‚ð¼—ÿYçÛßÖ¡P(ÿlûŸÕD›K‰'æÜˆåïj&ðíÙ‘$™›->«¦tÄ_HÆ$é5¿Åû휓oÌLÍìíìù|¥¢Rƒt<ÕÞJÁæÿ„.‘‡ÿfN\ s'3`yñ×póª í[Þÿ}-}±?«Wâñ(¨u ªE¼’I®š‘j”[õjšŒj¦þ:&3UkšÌ5å%¢TÕ­ªÖ!%*^õJ£ÞPµb¨vJ”: Š·’W·kX±•ÿªòÛJòì!¶N-~[)Y¼JnXÅYH¼ÔÅÊÉùìàlRÊÊÊDóp+V–¬JÄçµd0:Umí]M‰¨#wjŠP}iÖ¤”GÕÈkëˆÔ°Äj±ÀÕQÇj=È:KY^É4pÕ«µuá¶zÔý…U¾­j=)ñlR j7]õ‘ÑÏåæÍ›šŽ EŸ>}ð‹œœeÖ§+H1Ð6µßá@} í]}u ”ìï×] K í]mèh»@—@ÛºDÆÜt=úôÓtT¨çîß¼Q½ é2—¾Ž‰ÒtŽPoµóéTímážt ½æI¨JÔGEÕ›GpݺÚ.Ð%Ðv€.¶ t ´] K í]mèh»@—@ÛºÚ.Ð%Ðv€.¶ t ´] K í]B×tИŒŒŒwïÞÙÛÛ»¹¹Q(M‡£h» Ôo¿ýöåË—=z¬X±‚Á`œ;wŽF£i:¨ªAÛhˆ8Ί+._¾<`À'''OOÏgÏžùúúj:®ªA !b2™3gÎ444-±°°ÐtPJë.@CD¡PvïÞ‘‘¿}ûö… ¶nÝZÓA)Ú.@ÃõôéÓ·oߦ§§{yyi:eAÛh ÊËËGŽ9räÈÜÜÜFÙÚÚŽ5JÓAU ú» ѽ{÷LMMŸ>}в±±177‹‹ÓtPJ¶ жmÛÖÝÝ!”žž^XXØ¡CM¥¸g4DC‡½sçΆ 7n|üøñ „„„h:(¥@Ûhˆètú¾}ûòóósrr¦L™bll¬éˆ”Ž\Ó@c¬¬¬¬¬¬4…j ¿ t ´] K í]mèh»@—@ÛºÚ.Ð%Ðv€.¶ t ´] K í]mèh»@—@ÛºÚ.Ð%Ðv€.¶ t ´] K í]mèh»@—@Ûº„®é$MO¯¬¬400hâèhnn&z ®»@»½OL,// …åååŠEïÂu—†¥¸¸8;;»ÊÕš6mj``P[;MJJúðáCIIIqqqÿþýœœ4] Z¡¢¢âÉ“'¥¥¥%%%•••³gÏÖtD îÀÑ@±´ôt‰%_ÓÓE—^ íҰܽ{wþüùYYYB¡!D£Ñš7o®§§WTT”ŸŸ/ðj÷îÝëÑ£GmíôÁƒ—/_¾{÷.ŸÏwvvo»lÚ´iïÞ½¡¡¡;wVkÆëlGÊ+((8pàÀçÏŸãââX,|{5(ZrôµðsVQÁ–ZR!z ÷Œ–áǧ¥¥EEEá?Ïœ9óñãÇ÷ïßgeeq8œ³gÏÚØØ „JKKkq§3f̸q㆟ŸŸô[wîÜIOO‹‹«ÅÝyxxÔÁŽj¨I“&çÏŸˆˆÐt õŸÌ*¡Ù]hÉÑ×ÂÏI’ –Àu—†ÈÒÒ¿ptt-¤Ñh!!!,kàÀµÛvÁŒ¥ž(þhÔb.m€‚8wîœèÏ5kÖŒ7¿^ºtig1ÏŸ?_²d‰èÏuëÖ=yòdÚ´i#GŽìÕ«×ëׯ§Njhhhjjôùóg;ýûï¿¿ÿþû#FôîÝûþýû¢åÅÅÅ“'O¶··www·³³ûõ×_Eg´èèèØÙÙy{{uîÜY¼»Àÿþ÷?WWׯ_¿"„úôéƒ#LMM•·#„PQQѤI“[µjÕ¡C‡‹/âå‘‘‘Ó¦M1bD¯^½víÚecccbbâêêúçŸЧ  —-[fffÖºukGGÇ-[¶899½~ýZAÆ‹ŠŠFmaaajjÚ»w éuØlöœ9sZ¶léîîÞªU«;vˆ AÕ=*.4ìÅ‹AAA666žžžVVVË–-4hЈ#:wîuñâÅï¿ÿ~øðá={öLMM wtt4663f ŽJA´×®]›:u*.Éøøø 6{{{ã›,¿þú«………±±qëÖ­?~¬d!(y€äU‰j£¼`ì¢ÚG¿+€‚•|.Ô‡}ûö)ùѨÝj €¤)ÞIP¯‰Z7nܽ{w·nÝB£F’^³¸¸xÁ‚xåÈÈH’$ñI‡Éd?~œËå&%%ýñÇ&&&¡.]º,Z´èÓ§OW¯^555µ²²JMM%5dÈ„Ð7ðŸOž<Ù¿¿½½=B(44/ÌËËkÞ¼¹••ÕëׯI’üßÿþ‡:tèI’ñññóæÍÿÏRSS7n¬§§— ÚöóçÏVVV¡ØØØÏŸ?þü™ÇãÉÜ^¿Y³fîîîùùùAìÝ»!ôûï¿“$ùþýû={ö"„FŽÙ£G‹/9r÷ºvíš(‘?þøÃ××7++‹$É/_¾øúú"„^¾|)¯ä+**\]]B¿ýö[rrò–-[p—#‹%Z§¬¬¬mÛ¶VVViii$I>xð€F£-X° {¬²ÐH’|÷î¡¡¡ŸŸþ‘ýøñcÖ©S§{÷î|ýú5&&f÷îÝúúú¡Ó§O{xxœ:u W‰¢¢"ÅѾ|ùRT=† 6iÒ¤»wï®^½!Ô´iÓ5kÖôïßÿæÍ›Û·o§R© #%%E™BPòÉ«ª£‚`ì¢zG¿v+€‚•å}.ׇ{÷î)ùѨÅ\€úÊû£èŸ¨òþ›ƒ‡Hÿ½ m—†HÔv ìÕ«—©©©¼¶ I’AŒ?!äããÃáprrr7n|öìYñuºvíŠ  /Ù±cBhâĉ¢u$Ú.ذaÃÄO?üðBh÷îÝøO<4iæÌ™$Inß¾!Ô»woѶóçϵlDlmmByyy¹ØI’3fÌ@]¼xQ´¤M›6úúú¢öV‡B:t`³ÙxÉü m2`À€åË—‹þ,((055Up Þ¼y3BhÚ´i¢%3gΔøöÂ_íþù§hÉðáÃi4ZRR’ª{T¦ÐfÍš…Šˆˆ-éÓ§B(&&F<)„P›6mž?ž““Ó´iÓáÇW­xõèÓ§¨zàæ²““ŸÏÇKF—ٔLV™$¯J¨TŒU#¯ÖUãè×n¨reéÏ…2õA™’¯Å\€úª&m¸gÔ ýüóÏ·oßþðáC£Fä­C¡PöíÛ×¾}û˜˜˜~ø!88xÖ¬Y!!!âëèéé!„ÆŒC¡PðÿàÁƒ!QçÁiÓ¦áFÆ Aƒúôé3jÔ(Ñúfff!e¦Ú“ØBˆÇã>|!(ZسgO‡ó×_‰o2räHÑ4}øû;''G´ Nß±cǪU«bbb……Åþýûñ7™LGE‹–ˆnÏaAìܹ!$ZØ¢E ¡Pˆ¯v¨´Ge -99!„cxœ|ff¦tš˜˜têÔÉÆÆæóçÏçÏŸ¯2ZñmÇ/ªøòÃÈ‘#éô† ´nÝ!”››«L!(€äQ¾• FUýZ¯U®,ñ¹P²>TYòµ› ¤Á8#€lll¦M›öáÃügqqñ¦M›¶lÙ"ZÁÐÐðÂ… ÞÞÞGŽéׯßòåËe¦Ó¼ysÑk„Çûüù³‹‹‹2a$''óù|===QCjüøñø’B¨E‹¹¹¹gÏž}ôèÑ£GðÕ#²Zýû’’’“ÉÄ·30¼ß·oߊ¯ÙªU+Ñk‹…âp8¢%S§N½råʦM›6mÚdhhؽ{÷3fØÙÙÉÜ©@ øôéB¨iÓ¦2 !ôõëWÜ{qýúõT*ouûömôíKE¥=*ShíÚµ»}ûv|||Û¶mñ[oß¾¥R©íÚµ“NpÀ€øn…T­8ñ\ã;PMš4-±°°@á)UJVñ’GùbT)”9úµ^TZYÕú  äk7Hƒ¶ @¡=z˜››ã×<¸qã†xÛ!äää4xðàcÇŽEFF&%%áßÍð&ÒÂãñ”Œ!??}ûR”Æáp–-[¶ÿþþýû¯ZµêСC?ýôSõò‹çg¤Óéâ»Ã×$ÆDàF&ÛÀ?~|àÀ[·neggGDDDDDœ9sFüR‡Hee%ŸÏG‰?oF£‰¯“••…¢R©â±ð¯sÜ¥@¥=*ShË–-»víÚªU«š6mÚ¢E‹¼zõê§Ÿ~ÿŠqwwW)Zq¢K," CæÑQ)YÅHå‹Q¥`Pæè×zPieLùú  äk7Hƒ¶ @¡=zˆpùòeü#XÜ‘#GbbbæÏŸ¿cÇŽQ£F=þ\úGâƒ&ð] æìì¬d øò ÇËÊÊ¿d- i4Ú÷ßêÔ©ß~ûmÑ¢Ex¹øüÐ"øË_WÈÏÏŸ9sæùóç¥WsssÃ)à'”â…yyy!üsSÿj”' àÊ•+ÇŽ#Iòýû÷ÇŽÛ½{÷áÇež‚mmmsrrrssE?¸%Fšàâ"¢K—.øþ†o«ºGe ­¤¤ÄÝÝýÁƒK–,111±³³»uëVïÞ½eæWâÞb•ÑVJÉ*>@HN•P¾• F™Z§Ìѯõ  ÒʪÖ%_»¹@ôwÿ‘˜˜xòäI‰”÷îÝ[½zuxxøÖ­[ýýýß¼y³páBém¯_¿.z¯÷êÕ‹Éd*¹k[[Û–-["„Ä»ܾ}{àÀ\.÷Ì™3!Q?’$_¼x¤®ëà[æxvö„„yW}ŒñøèèhÑBü¨ñîUzõêÕñãÇB ÅÍÍmË–-?þø£‚KM¡ÈÈHÑ’«W¯"„>§[[[·iÓ!$°9sO"¢ü•,´àà`ggçÜÜÜ'OžÜ¸qãÈ‘#ò.!Ü­[¤Êh«§v“•Y%”/Fe‚Q²ÖUyô•ÙJUNÕú‰T¬Õ>‚U¯L¿%Ð`AÛ¥Áa³Ù¢y?~üøñäÉ“ñCéÈo3n‰o"Z"þëÙ²e<À¯…Ba\\œ‚sýúõëétú¶mÛB±±±¸¡Æårqg„ž'cþüù<À¿S¯_¿¾lÙ2ÜgYù=*Yh™™™'Ožœ4iÒ¢E‹/^¼jÕª?ÿüóÊ•+â_$¢Ò¾lSe´èÛã±Äg0SP¶J&«ü’W%”?pU#oÕ8úµX”YYº «¬J–|Mrqÿþý¶mÛºººÊ¼¶ B0¿KsèÐ!é: }Ó}éÒ¥xý¡C‡â%ÖÖÖ¿þúë‡Ä{<899$éïï mÚ´©ƒƒF³¶¶¾sçNäÒ¥K¢;G†††žžžàúõëø* BÈÀÀ }ûöeee$Iž:uJô&“¹sçNœÈéÓ§q@gggccãÕ«WWTTౚmÚ´ùôé^íêÕ«¢^}ûöåóùòvD’d\\œ‹‹‹‡‡Gpp°©©éÒ¥KñÝ3gÎ4kÖ obll>>ø¢N»vídž•Áãñâã㋊Š<<<¬­­EË‹ŠŠ^¿~mddäáá¿*H’,**’èS^^kbbÒ¾}û*;o’$™œœœ••ååå…¿æU’––Ö¸qc¡P˜”””žžîìììääTåV >>>??¿S§N,+--ÍÐÐÐÀÀÀÀÀ@ThA|þü999ŸôE} TÝ£âB#IòäÉ“6lX¾|9ÂÊçó333ýõ×äääüü|éžO2É‹¶†j+Yé*Q§8åk2G¿¶*€ªÙ¬­úPó\|üøÑÒÒRÕÝÝÒΧ“èõý›7ð ѽÂ'ÏžKoÒ­KgüÚ. ˆÚ.ø† ЧOŸþî»ïŽ=:iÒ$ñåœ9sfQQ‘ørPïA}u©&mèïjž€Nñ4t@ ááóûž8qbðàÁðEÕÐ@}ºÆHƒyþüùÞ½{ñh øúúþúë¯Ê-š5nܸ·oßnÚ´éüùóx`HFFFbbâÈ‘#ÅûYƒêÐpÏÔHVV–ø „P—.]ªÝÓhÇKNN.((`0¶¶¶ÒSцê¨5¹g×]@ØÙÙÁLÞºŽÁ`àÙ ¨@@èh»@—@ÛºÚ.Ð%Ðv€.¶ t ´] K í]mhé籋/¶ ´ ‹ÅR°Ú.Ð.M%—4þw ´] ]ÌÍÍÚ¸ºÑh4##£6®®æff¢wáYŒÐ:ææfææf2ß‚ë.Ð%Ðv€.¶ t ´] K í]mèh»@—@ÛºÚ.Ð%Ðv€.¶ t ´] K í]mèh»@—@ÛºÚ.Ð%Ðv€.¶Ký!¨T*…B¡R©B¡PÓá@ P h»Ôt:]__!¤§§G£Ñ4ŽfJÀÀÀ¿h˜% ´]êSSS„¡¡¡¦Ñ333„nÁ¨— íR¯XXX „ŒŒŒ4ˆÆXZZ"„X,–¦ .Ðv©²²²¸\.BÈÆÆ}»úÂáp4WÝÉÍÍ­¬¬D5jÔ!dbbÒÐJh»è¶œœ'''SSÓM›6988 „,--üñG###77·§OŸj:Fõ***êׯ_“&MÌÌÌV­ZeooO¡PÌÍÍW¬Xabbâââr÷î]MÇ 6AÛE5¥¥¥óçϯ¨¨Ðt !$  Ô®]»âââ·oßž9s&%%…B¡TVVÞ¾};//oùòåƒ zõꕦ#U’$GŽÙ¨Q£ÂÂÂ>ܹsçíÛ· E(žŸ¿sçN …âââÑ®];’$ß¾}{ëÖ-ssóñãÇWVVNš4)..ŽJ­‡íÔÛ·o§¦¦FDDÐéô¦M›^¿~½mÛ¶A¼}ûöüù󶶶Æ 'N|÷î“ÉÔt¼4\·oߦÑhʬ|îܹ3gÎŒ7NÓQ-U¿ÏÔgÖ¬Y±±±¡Ý»w¿yóFÓá °°°‰'R(ü§½½ýòåËBãÆóóóà §M›Æçó¯]»¦é`ÕUãÆ£Óÿi‚[ZZ.]º!<`À¼0$$ÄÆÆæÜ¹sš€mÉ’%¿ýö›¦£õ´]”!úþ£P([·nÕtDˆÁ`têÔI|I‹-B¢% eÁ‚999šV-h4Z×®]Å—4kÖ !Ô£Gñ…sçÎ-((Ðt°4t%%%šÔpÏHYû÷ïÇ/ºvíºk×®nݺýöÛo¶¶¶ éÈ‘#K¬¬¬BM›6_8uêT ©V;wî”Y¸#2zôhMG @_¾|Ñt ž€ë.Jáñxø¶K``àƒ¼¼¼\\\nܸ¡é¸$áonkkkM¢áhÒ¤‰¦HÊÈȈ‰‰Ñt >€¶‹RÒÓÓù|¾Mhh¨žžBÈÒÒR ;‘à™Ùðÿ&(´“•••¹¹ùüùóI’Ôt,@çAÛE)¸¿Èœ9sðĵ!6›¯é¸$YXX,]ºÔÜÜ\Ó@ þƒÉdúøø¤¦¦ž?^Ó±m¥àgŽ3F´äóçÏ_¿~Õ¶4móæÍ ù1„Ph-}}ýóçÏ/_¾œÏçk: Û í¢‹¥§§'êûéÓ§üü||ó€’ºtéÒ¾}{˜íÔŒ3úG‹- á“h¬”””ÔË ß@Mð|T/^T~ePÇììì2335Eà«÷)))%%%¤•••4­¸¸˜$É¢¢"üÈÃiÓ¦‘@ý’““BAÄÅÅi:Pw<èïïO’ä¶mÛ ¤ép@ôïßðàÁ$Iž9sfíÚµŠW^³f‹‹‹¦Cn@nܸѢE ’$Ïž=‹Ÿh«å í¢}}ý6mÚ|þü!´víÚÜÜ\„ÐŒ34蘔”üÔXª î)ËÇÇ'22²°°pÏž=!???///M:&<<üðáÚŽè6¸î¢¬   3gÎŒ3† ==½?ÿüSÓ€ˆ?uêTii)Bˆ$IoooWWWMt\wQV·nÝDS˯[·ÎÝÝ]Ó€VÃϱ= ÎÏÏB¡ìÚµKÓqG‘~F]>ý^ÇDÕ}(<oïÞ½¯^½ÒÓÓ áp8-[¶lÙ²%B()))''§{÷îj,èРÁc2™§vÔÎçßg ß¿ùÏ3v”|r°Ý3š1c†‘‘Ñ‘#G¶lÙréÒ¥#FˆÜuôèÑ 6ÔA òú`Ï›7¯Ð¼ysÑ4ˆ ˆ]»vÙÙÙá8™Læ™3g4TíPrœ›ÍÞ»wo«V­B­ZµZ±bE›6m2224>¨¾šŒ3ªÇŸbdd$:»R(”§OŸÊ[SâxÑh4;;;M‡ß€ˆ3jÓ¦¦›UÓ–{F\.÷Ì™3þù'…B133Û³gOlllEE~÷—_~ …šŠíàÁƒøyÅæææ\.רØXÓ¥%‰ËåN:õäÉ“âK6mÚ4jÔ(M‡Vw%0hР»wïšššîÛ·oêÔ©4M ÄÅÅÙÛÛk::P×à¡%:uê„§¡c±XÇŽëÒ¥‹ÌÕ¤—P(„¹wÚrÝ… ‡³bÅ <;…BY¹r%ƒÁ@q8œ¼¼¼¼¼<¼&I’ÑÑÑ.\HMM}òäÉï¿ÿÎáprsssrrÊËË#""’’’ÄSþøñcxxxvvvõ‹‹‹›3gBÈÐÐðÖ­[T*5!!AÓ¥%iÆ â{ ?Ç 8tèÐÝ»wøîÝ»3fÐh´¨¨¨£GB—À† >ZâÆ÷ïß¿xñbzzúðáÃå­&óx999i:| ½´¥íb``0cÆŒ;w:88 0`×®];vìß¿?BèСC~~~“'OF‘$9jԨÇ›™™1b×®]aaaÇ÷ññ3fÌŒ3ÂÃý¼¼D]Ã6nܸxñbƒ1|øð;wî¨Uyyùˆ#¸\.Bèï¿ÿöööîÕ«×íÛ·5]Z’Nœ8!½püøñšŽ«î?~|Æ aaa`Ë–-þþþ­ZµrvvÖth@ð–W¯^‰/üøñ£Ì!¸ ê¡%ôôô‚ƒƒÍÌ̬g0 *m¹g„Ú»wï€NŸ>}ûöíëׯ¯^½úñãdzgÏÎÌÌŒ‹‹C%''‡††fffÚÙÙM˜0áСCoÞ¼A½xñ"<<<<<œÅbq¹Ü}ûö…„„¼yófíÚµÙÙÙÖÖÖ©©©sæÌQõ’É®]»ð|tK–,:t(B¨gÏž§OŸuÑx®õ/À1&“©é@ª¦-÷Œ²²²D—y©Tj@@Àúõë¥;©˜šš®]»v„ ›7oNKKÛ½{·è-KKKÑæø—Ë533Û¸qãÆ¯\¹RYY©¸íþ;ÎhË–-xatt4I’`íÚµ¢½ „ìììöìÙ# 5ÝCœD¥¥¥EDDÄÇÇ M‡S˪gtåÊ …y÷îÝ?r8M‡ j‡‚qF4MôI”À2~üx??¿zü‰Ð9«V­255½~ýº‚uàxiŒ3ª&==½¿þúkäÈ‘ýúõÃKâãã}}}ñk\¸¡èèèèèègÏžŠo.ZAüu``àŠ+<==I’\¸páæÍ›qÿ_eDDD „zõêåããC’ä˜1cBCCÅWÈÊÊš={öÓ§OOž<©ñ+1ŽŽŽŽŽŽšA³Ô:ýÐ6T*=”7€>ÚcÆ ™™™ 7nÜÖ­[mmm¥×ãT¢-m:|åÊ•³g϶mÛöãÇ¥¥¥øJLXXØÅ‹srrþøã€€€{÷î±X,fffææævþüùÈÈÈ›7oòùü“'O:::ž:u*))iûöí ,غu+¾•––6yòdå.¡?"„,X€cÀ —àà`ƒ×¯_{zz†‡‡—””œ:uªo߾Э €ºdbb2aÂ??¿=z(î 4ŽJ¥9r¤U«Vk×®={ölß¾}'OžÜ­[7kkkÑ:éééïß¿ Òt°@7hKÛÅßßßßß___¿¢¢"55uòäÉø­Áƒ<¿~øðaPPК5k FyyùüùóïÞ½;zôè#Fˆ’zùò¥èõ¢E‹fΜ™ššÚ´iSñY’”Q^^ŽêÔ©Bß;wîÜÈ‘#ccc'L˜pâĉŒŒŒáÇGEE-Z´høðá—‚jÕ²eËàà`MG”µlÙ² &¬_¿þäÉ“aaa!333 …RZZZZZ:xðàÀÀ@:][¾•€6Ó–Z"šzÅb¹¹¹É[íĉöööîîî4-==ÝÀÀÀÓÓSqÊŠTÀÒÒ’N§ã.ÉÉÉÝ»w9r$BÈÝÝýË—/<ÏÁÁáÚµk...yyy¯_¿–7í@­xñâE•®ª°³³Û·oß®]»ž>}“‘‘266vww÷õõuppÐt€@ghÑóŒ”Q\\|êÔ©OŸ>q8##£ñãÇ×Ö35ÞaÐ8xžQí333ûᇶmÛöÇlÞ¼¹Öæ,Þïú?þ033ÃÞ÷ïßoddÄf³ñ[Ó§O?{ö,~}íÚ5„ÐöíÛ5ØEÉS= ä8#M‡ jŸ‚qF–––{÷îů9ò¿ÿýOôg¤éØÐ%:7ÎHÇÚ.uiìØ±AàÑF'NtwwŸxðà_ý¥§§§é`hˆîܹsãÆ;vh:@Ýë.ŠP©Ô .˜››»ºº9r¤¤¤·Qš7ožššzäȑ޽{oذ!$$DÓ‘Ðà$yèСàààS§Náçg¤Æ‚€qF<“’’’:ØQMÆÁ=£ÿ ¿=X@¦ôôôÏŸ?óù|›ï¾ûîÈ‘#ÞÞÞš!„ð(MG¡1aaaC‡ŦAall\^^þÝwßI?‘c„ ©©©>ÔtŒu¶‹ ÄŸ¸affVVV¦éˆh¸ììì<WLh€ ¿K®]»æååÕ¤I“ŸþYüÚƒÁ¨¬¬Ôtt4\ ¨òA™™™pA€úÚ.Š$%%ÇÅÅ¥¥¥­^½úÎ;¢·Øl¶¦ Ò××÷òòR¼Î;wÜÝÝoݺ¥é`µ Ú.Š<~ü˜Ïç‹þŒŠú§ 3Aï߿׉ɨ—>|ø0cÆ „З/_²³³%Þ---:thPPЬY³úöí«é`µ ú»(Ò¢E ñ?»uë†_DGG[XXØÚÚj:À,Y²DÓ!h’££c«V­4¨SæææøÅÉ“'ׯ_ß¼ys'''*•Z\\ÇápRSSÿþûï1cÆT/ýW¯^íܹ³°°píÚµ:t¨ÅÈ“’’rrrºwï®ÖòÙ¾}û³gÏZ·n½~ýzñåø¶ø³è.¸î¢ˆ···µµµ¥¥¥¿¿ÿÑ£G{ôè"bÅŠZÕ\زe‹¦CФ:$$$h:  «V­Š‰‰8p`ZZZlllZZZÇŽ÷ïߟ‘‘¡¸áÂf³·oß.ïÝöíÛïÙ³',,¬°°°v>zôè† Ô], ,077_Ó£GÌÌLuïuƒ¶‹"FFFûöí+**6lØèÑ£Byyy#FŒ Irúôéµ¾»¤¤¤ìLOO—ž°GSÁlß¾=$$díÚµµXDu5JòÕ«W“'O2dH\\œª»[ºté°aÃ$zfh¶uH»ví¶mÛŸýõë×ÈÈÈéÓ§W9[]ttô—/_¬Àb±h4Z­GûË/¿à§¤©›±±±øŸ ¡¡¡ÏŸ?oÛ¶m쵂¶K† vãÆíÛ·›››·lÙ²yóæŽŽŽ·nÝRÇI­†?Èj÷GUÍÊüåWgjõJ²&¿Ô7mÚôìÙ3‰=j¶µÇËËËËÉÉÉÎξzõªD——wïÞ]»vMt ¸\nNNNnn®@ ¸wï^qqñ»wï-ZTXX˜˜˜˜ŸŸ/‘øëׯ#""Øl¶Äò?†‡‡Kw¯INNNLLLLL¬¬¬ÌÈÈÀ¯eFÂápòòòòòòB©©©xÍ’’ü"--M:§ —.]JOO—™;œ5œ ‡ÃÉÉÉÉÊÊ’Ybt:ÝÏÏO¼º Ú.U JIIIJJ:sæLQQÑ®]» †:vT“dµþ£ªV~Jüò«KÕŽ¿&%Yí_êt:]æu  –»pá‚Oÿþý׬Y“àååõôéSüÖÒ¥K·mÛF¡P‚‚‚ž?Ž:v옷·÷âÅ‹çÎ;þü¹sç~üø‘ ˆôôô¤¦¦Š§¼fÍš±cÇÆÇÇOžä!ôðáC77·mÛ¶UVV¦¤¤9rDf$‡òóó›}ú›7o¦OŸþüùóË—/ß»w¯gÏžfff={özô¨gÏž4­_¿~¹¹¹øQ´¯^½êÞ½»©©)Bˆ$I333ñm-,,Š‹‹B{÷î-Äs8ÅÄÄ „p+W§ÀÀÀœœœ„„}}}&“¹bÅ @ ž…B™;wîîÝ»õôôB "55BCCy<Þýû÷_¾|¹yóf‰Üùûûçåå=zô!{úôi™iZ[[ãž¼eeeÏž=}ôD;ª2xt\wÑ韌Ò눦}áIÿSü£ÊÑÑ1 !$qâÉÉɹuëÖ›7oÂÃÃçÍ›Çãñðt¥ðé!D¡PDé‹õ*ÎŽZùi¶$åýRWð³[æ¯äòòrÑr …bddTg¨»Zµj5vìXSSÓ§OŸ^¿~!äææ¶{÷î‰'öìÙ3<<üøñã¡3gÎܹs‡ ˆ]»v‰šž“&MÊÉÉ9r¤(A''§íÛ·=º_¿~,‹J¥®[·ÎÁÁÁÇÇgëÖ­ƒ 4hPZZÚäÉ“¥ËôèÑ+V¬øþûïñŸ2# »xñbNNÎü‘™™¹yóæeË–ÛÙÙ­\¹255uÿþý¢»uë¶zõêÁƒqáÂ:.æèÑ£8lØ0@àëë{íÚµÕ«W{yy…‡‡îÝ»wÖ¬YU€Ž)âáÝ‘lxpiÔÙî~üñGKKËŠŠ ’$'OžÜ¯_?’$W®\$Zgúôéß}÷~½eË–:$ùøñc„ÐÇI’|ñâÅ©S§¢££)J\\I’AÌŸ?ŸËå*IhhèÌ™3ñëǯ[·¿æ‡~ Á¯û÷ï¿páBüÚÃÃc×®]ò²C’äÂ… û÷ïO’d ƒTµ$%âWkI~úô‰F£á«/—/_F]½z•$Éøøx==½ììl’$7mÚÔ½{w¼þìÙ³q™”––:::öíÛïŽN§ÿðÃx??¿7ÖMê®üqÔ¨Q\.÷Ç@ü­òòò? …BÅ)dee¥¥¥I//..þòå I’ùùùl6wÇÉÆÇÇ—••ÉKðëׯK”ŒDÂÂÂ÷ïß‹gP:ÍŠŠŠ>…²²²’’>Ÿ/N•ÁPÇ<¼;Šþ‰Z ï•×]4Fâ'£ø²üñüùó7oÞäóùx4Ä©S§’’’¶oß¾`ÁéŸb5üQõêÕ«üÑÙÙùöíÛþù'úï¯C{{û7np8œ“'Or¹Ü¨¨¨?$&&&%%?~ÜÓÓÉú|éÒ¥ºùå'½kñømmmÕZ’ò~©·oß^ú'2’ó+yÙ²emÚ´100XµjUii©¥¥å‚ ê¬uTee%‡Ãa0...o±X,ggç*S7\ËÔÔßß‘˜;ŸÅbᛃò4nܸz‘(`nn.z‚¼4 q!H\®S)xtEzòÐ}ú½Ž‰ªVj: ßþ ¿]€Q·Ù³gççç?~üË—/NNNªN RTT”ݲeKц©©©M›6Upò’‰ÃáÐh4‡“––Ö¢E &“©¾ìT;Hí/É’’’’’’&MšêëëãUQQ‘••…µ#Z™Ífgdd´hÑÿ¦744$I²°°ÐÖÖÏŸfoo_g¨£.\¸pá‚ |}}gÏž­ép*kçÓIôúþÍøîÎU%h»|+ˆºm»|ÿý÷øC= ÁìÔ³’€¢&mg¤.\¨¬¬Ô××ß³g¦cÑíìÔ³’  ¸îò­ êöº ÐÁu4ÐvQMiiéüùó+**4Ð@ÁiÅÆÆâI®4ÐÁuÌš5+66!´{÷î7oÞh: !‚¶‹²"""DÙ£P([·nÕtD@Cme‰ž3Òµkט˜˜ÐÐP%»C A¥ðx¼k×®!„#""ôôô\\\nܸ1iÒ$M‡4¦¤¤„Çã•••UTTðx¼¢¢"WQQQ^^Îçóñ:xÞzém©T*žu333c0FFF,‹Á`˜››3 ‹edd$z & ‡ÃIII)//Ç‚GÑétKKK KKKüÄSÐ@@ÛE)ééé|>߯Æ&44—XZZ^»v Ú.õAÙÙÙ©©©_¿~ÍÈÈÈÌÌLOOÏÍÍÍËË+...--­¨¨=¿Z­˜L¦©©©™™™………ƒƒƒƒƒCãÆ›4iÒ´iS8eƒúŠÍfߺuëÑ£G>LNN...V°²©©©£££‡‡‡¯¯¯O‡T}BH]ª¨¨HHHHNNNKK#‚F£Y[[[[[ÛØØ´jÕÊØØXÓj;h»(ßš3gŽ……^Âf³ããã5¨<ïÇ oß¾}óæMJJJVVVQQ‘P(­Ãd2ŒŒLLLÌÍÍÛ´icccÓ¨Q# &“illlhhÈd2%®à õõõ ¤wJDII‰èÏââb.—‹¯Ùðx<ü'›Í.++ËÉÉÉÉÉÉÏÏ/,,LMM-++c³Ùâ“(ÛØØ4iÒ¤uëÖžžž­[·nÓ¦ÄÓûÐ-<øý÷ßïܹÃåríííÛ¶mdooߤIÑŠÍf——————ÄÄļÿþÌ™3§OŸFõìÙs̘1d±XšÎÐ?ðókÿþûoüÈq™ëP(”ÆwíÚÕßßèСòžÚÀÁ¼ºß BἺ/_¾ìСCrrr‹-ðkkküÉÁj?>ŸÿòåË—/_>{öìýû÷yyyø‡h:njjjeeåììÜ¥K—:x{{×Ëgþ>}ú422òÅ‹III¹¹¹¸™bllܸqãÆ;;;7kÖ _Ûptt´··×¶‡6çääddddddàËB?~üüùsFFFnn.¾djjêäääááѽ{÷nݺµjÕJÓ!k¯œœœ¸¸¸7oÞÄÆÆfffâKk¢‹jFFFFFFM›6mÑ¢EÛ¶m;vìèææ¦Í?èß¼yóàÁƒ$''çåå „‹Å²µµussëÖ­[@@€è<¦…îß¿?oÞ¼´´´#F 2ÄÏÏOüîj•ÊËËÞ¼ysëÖ­û÷ïçååééé-_¾Ü××WƒùzöìÙÒ¥KŸ?Þ¦M›ž={zyyµhÑÂØØØÄÄÄÈȈÏççåååäädgg¿~ýúáÇoß¾­¨¨ R©¾¾¾K—.íׯŸøó\ëxc-PÜvùð჻»;›Í¦Óé¡OŸ>9;;›ššiyÛ%55õܹsÿýwBBî„Áb±5j„¯"˜ššZZZ"„JKKñ­ÒÒÒüüü¢¢"„•JmÖ¬Ù°aþûî;OOOMg¥F¾~ýyûöíG}ùò…N§;99¹¹¹µk×®eË–...ø€j:ÌšâóùŸ?NNNþøñã›7oâããKKKÍÌÌ<==û÷ïïçççíí­Í_½uƒÃáܺuëÔ©S‘‘‘ÙÙÙx¡‘‘‘¹¹¹………­­-þ¤#„ø|~YYYFFFaa!ž”ÒÀÀ k×®!!!!!!fffšÎÊ?RRRþøã“'Oæææâ¼ØÛÛ;::Šn)fff~þü_ísrrš7oÞÔ©S 5øÄÅÅ 0`ݺu'N¬•›¡oß¾=uêÔÑ£GsrrÜÝÝ÷ìÙãïï_÷ùzÿþ}@@ÀâÅ‹'Mšdcc£äV ýõ×áÇ š5k¶}ûö¡C‡Ö}ðêm—Z åM 4kÖìóçÏu°#xžQ­!娬¬¤ÑhÅÅÅ$Iá†ó´iÓH­çå奧§7xðà[·nq8œš¤& cbbf̘addÔ¸qã°°°:ÎNrr2Bˆ ˆ¸¸8###e6áp8hݺ5•Juwwß´iÓû÷ïë8líTXXxòäÉš››Ïž=ûË—/šJ®ƒúûû“$¹mÛ¶AƒÕ0µ˜˜˜: „Ö­[_“Ô¸\nhh¨ŸŸŸžžÞŒ3ŠŠŠê¾|‚غu«žžžÝŸþYRR¢ü¶¥¥¥›7o655íÙ³gAAAݯQQQ]ºt±´´¼~ýº¦cQÙ‹/ÜÝÝ­­­cbbj=ñ7n´hÑ‚$ɳgÏêDo9h»(E__¿M›6¸)ºvíZ|UvÆŒšŽK’P(\³fŸŸ_—.]ÒÒÒ®\¹Ò»wo&“Y“4©Tª··÷¾}û²³³çÌ™3eÊ”#FˆÆ(j¡3gÎ4kÖlÛ¶m³gÏNOOûöíŠ+Z·n­é¸´‚¹¹ùرc¯^½ZXXø÷ß§¥¥µlÙrÖ¬YÚ|@k®¢¢büøñ;v411¹wï^ZZÚÚµkÝÜÜj’&ƒÁ1bÄÇŸ>}š””äééW—™ª¬¬8pàºuë~ÿý÷¯_¿Îš5ËÄÄDùÍ—.]šœœlffÖ­[7|N«÷:vìøäÉ“õëׇ„„9rDÓá¨ÆËËëÕ«WÓ§O ŒŽŽÖt8meùøøDFFÞ»woÏž=!???///M%)**êÞ½{o߾ݽ{·­­mí&Îb±–,Y’œœÌ`0Ž=ªé¼Ê–””ôóÏ?ïß¿?!!á‡~°³³ÓtDZŠÉdöë×ïòåËïß¿/..þí·ß4‘º¼~ýÚÝÝýíÛ·ÏŸ?¿ÿ~=j÷±··÷ýû÷—-[ööíÛ:ˇÃéÙ³gzzzRRÒìÙ³E½sTeeeºaÃÜïMãx<Þ›7onß¾­¾¶…BùñÇ>|xâÄ 6›­[ù¢Ñh7nÜ¿ÿñãÇë&r­c¤•´cÇŽM›6¡§§÷çŸj:"ºvíúäɵîÂÔÔôÔ©SšÎ¨\­ZµªË¯zÀÉÉ )­—"##‡ºråÊE‹©u˜ÆÌ™3ë,S$IN›6ÉdÞ¹s§æm)ÊÈ‘#ë,x™Ú³gÏ/¿ü’••…b2™ÇŽ5j”švçééyÿþ}Íט1cÆŒSÁk3¸î¢¬nݺ=þ·š×­[çîî®éˆU¸qãÆñãÇ—,YRÏÆ—úûû‡……iÛ(¡jãr¹&L˜;w.þ‚ÇK6mÚ¤é¸ _Ú Æ}+g Ác2™2ŸdRë`œQ­‘×{Þ¼yx…æÍ›«Ô™¿Î±k×.Q÷&“yæÌÝ‹%ÇÕ³¨;ª†Úg¤>Ú\†ÚyEE…£££ôÙx÷îÝ:ë¼¼¼ZÏ—ú"gÔ¦MM+¡@ЇwÇZ?ŠJ:{öì"Y^¾|)ZçþýûsæÌY°`Á«W¯¤ÿ¬6m—àwÍÍÍííí ‚ÐTùÈÃápÆ'qd=<<êx/¥¥¥? …µ»_eÚ.ZRõlGj: ÊÓ‰¶K¬º¼n*À¤I“¤ÇBΛ7O h$×µeàÀÒÓëÕ$_j=^âmOOÏZ/ ™<¼;Šþ‰Z ï•£]×]úôéãáá±mÛ6;;»eË–Íš5ËÛÛûСC¢Á‡¯_¿7nܺuëÒÓÓ·lÙ"ñ§Djl6{ûöí5 )..nΜ9!CCÃ[·nQ©Ô„„M—“¤ 6œ2UãÊd5.œJð$öRZZúèÑ£º¿gt÷î]é®Öê(===U÷REEEÕMvzöì)=PE|Gj: Ê«ö=£:»/0eʽßÁf³«¬fuS‚ƒƒûôé£Ö]ˆŒ5ªvïã(àïï?nܸÚJMæ³ójñxéÜ=#­gôêÕ+OOÏÿýïFFFK—.ÍÌÌ´²²Âo………ýþûïåååS§N7nܽ{÷ÄÿܱcGLLÌ?ü°aÆõë×———¯_¿ÞÜÜ<$$ÄÛÛÛÛÛ[ñ~aœ㌪/777''?½]dðàÁîîîÎÎÎ3gÎ422ÿ3%%eíÚµ‡êÓ§Ï„ æÌ™3tèÐ-ZxxxÌœ9³Ê†‹ˆx“PÔ&::š$I@°víZñÙ'íììöìÙ£Á_¥"¡´´´ˆˆˆøøx%@ØÛÛKg_qxGGÇU«V©´—ZQåu—+W®P(”:(WW×üQ¥½ðx<•vt÷î]„PRR’J;Ru/$Iz{{Ïœ9SÕr«KÕ»îÂf³«QÕ3|øð   :+ÃÆ×V¾ÊÊÊBgÏžÕøÑ¯Ëë.}ûö:thݯڽî‚;6]¹rEM‘ëÜ8#íêï"4pàÀÄÄD„I’§OŸþî»ï¬ïÞ=ƒ±yóf„ÐÛ·o‹ŠŠjCDDB¨W¯^>>>$IŽ3&44T|…¬¬¬Ù³g?}úôäÉ“¿lãèè(s<žLùùù™™™ çÍ›7kÖ,ÅšššöéÓG³9­•àp8¢Ù¢T*•J`ëÖ­Ò½)•Ù‘ƒƒCË–-•ßQõ¨ªå¦–,Y’——W½Ò¨žº)æM›Vû(ËcmmÝ£GuG®mt·ÎÛØØtîÜYÓQh-½î‚mÚ´ÉÄÄ$..îܹsŠ×är¹fff7nܸqã•+W*++MMMEïFFFVcï?~D-X°!†.ÁÁÁß}÷››Û¸qãð.N:%Ý÷[ËáÞÇ¢™FÕݱ_ á«euPåååu3†¢!Pq¥¥¥7®³q+uæëׯB¡°þå €jкë.B¡!DB¨uëÖà·ß~Ý©ÁW·D+‹þ \±bEBBîd´páÂÍ›7[XX#„öîÝëïï¯j$ååå¡N:!„pëäܹs#GŽŒ0a‰'222†µhÑ¢áÇëÜüÜW¯^¥R©êîØ¯ÍN:eff¦î077ñâEŒ¡8tè½½}C> "ööö<¨ƒ2¯{©©©õ2_¨D»Ú.‡Ú·oBhéÒ¥çÏŸ///ýúuJJÊ’%KB—.]ºqã‡ÃÙºuë’%K$þܺuë Aƒ ”––6yòdƒ8iÒ¤œœœê=iÌÒÒ’N§ãfSrrr÷îÝq:îîî_¾|Áý®]»æââ’——÷úõë.]ºhºüTckkÛ¡CMG¡IÖÖÖu°£º¹Fmee¥µwôêžîÞh˜ù@%Z7Ψ&***RSS›6mjdd„—dgg e>êï°hŒ3ªk,ËÍÍMÔpA5jÔH¥ß(âý®ÿøã333Ü{ÿþýFFFl6¿5}úô³gÏâ××®]Cmß¾½–;©«É“Léé顨ØX•¶rttܲeKÝçNÉqF*¥‰oÞ½{W¥­\]]W¬X¡Ò&+V¬puuUi<Ψ¼¼\¥­(JXX˜J›àqF*mRǪ7Îhüøñ~~~u!gT7û’>GÕgtïÞ½º ^ºgT7ûRÇ8£gÏž©)ZgT¯Ú.µkìØ±AàÑF'NtwwŸ>>Œ¼¶¼~ýºz%ªRm¡PýâÅ å7!‚$I•b#I!´k×®j”È#TÝ ÍJKKûøñc§Nðã_ð|HæææL&ÓÐÐÉdêëëèééÑh4 …‚OÅfff ÅØØ˜N§³X,ƒ¡éÜü+33óÝ»w}úô122277711±±±éÔ©Sœ PêÕ8£šhÚ´i~~>›ÍÖt €ÆèëëWVVÖÁŽj2ή»ü_¨W,==ýóçÏ|>ßÆÆæ»ï¾;räˆòOJRŸ'Ožøúúª43I’•••7nÜèÛ·¯ò[5nÜxîܹx®­²k×®yóæ©:7 ›Íf2™*ÍîUYYI§ÓUº•Ãçóò›…B.—[ììÚµkΜ9Êoâãããíí½wï^•v¤ý&L˜ššúðáÃ:Ø×ˆ#ÊÊÊnÞ¼YûÂ×I±É9k¢¼¼ÜØØøÞ½{¿ 0xðàððð:Ûƒƒh©nfffø†¾¸¦M›¦¦¦V#µ¼¼<›gÏžÁ30h»¨@|V(333ÜkDãºu놪¨¨P~“ŒŒ GGGMÇ^;š5kF¡PT*ŠŠ ##£ëׯ«47]ëÖ­ƒƒƒ7mÚ¤ü&+W®¼téRBB‚ò›Ü»w¯gÏž¹¹¹,Kù­¨Tj³fͪ]†@q8 …Âd25HL™2¥²²’ ˆââb‚ JKKI’,//'¢²²ÿÐBéëë“$É`0‚`0B¡N§ Æçó) žÏB H<ÄW‚»»{ÝäËÎÎÎÀÀÀÑѱ²²²¼¼ÿ¿}ûöš.ïzÚ.U¸víÚO?ý”——7cÆŒ•+WŠºG0Œº¹ªV%üx¶ñãÇ+¿ ¾5V7³Õ²²2’$U*|vûå—_Ž=ªüV™™™aaaiiiÊoòòåËÌÌL•bËÎÎFM:•NWáãI~›±Ôo¾¾¾ùùù………¥¥¥|>ßÃÃãåË—šªF†:tèPÅë$Y\\,þ„~à®øÿEï ‚üü|¡PXXXHDQQA%%%A 2¤nòekkëíí}âÄ MnýmE’’’‚ƒƒñ˜”Õ«WwìØ±wïÞø-6›­Òõ¹sçúöÄ%•¤¦¦víÚUÓá×|U£%€‹N%ïÞ½ W^5b;sæLõÊ(Àf³¹\.‡Ã©¬¬äóùåååB¡ÿÐÇ_‡øË¯¬¬L TTTðx¼òòòòòr‡SVVÆçóñ÷¾PZZZ\\ܸqãºÌ“'OÄÿ”~z½D¡PÌÍÍBšŽEY©©©QQQ=b2™fffúúúFFFFFFL&ÓÔÔÔÀÀ@__ßÌÌŒÉd²X,ccc&“ibb‚û)k:Ú Ú.Š<~ü7\°¨¨(Üv!âýû÷:1ù ÍçÏŸccc[¶lYZZŠª¨¨ ‚Ëåâ» t:F£Ñh4 …‚Ÿ¼-ÞOÀçóI’äóùÊÌ# ©þ¸ë•Jç@]ª¬¬äp8òzR2 ¦§§G¥R)Ѝ …B‚ ®~†††zzzx¤B·°‚¶‹b-Z´ÿ÷,AEGG[XXØÚÚj:@„Â7P%BUL |ùò¥Q£FšŽ½và¾*•AŸ?¶··WéâYZZ‹ÅRé—_aaaEE…J?Í+++333›7oŽ¿Y•ôéÓ§:¾ µrss+++?~ü(ýV•!ª¡ŽçÔîÞ½{£F¬¬¬”yœª@ (***,,,ƒ/ØÀÈJõquuÅùËÄãñBUv<ÀHÔç7??_ÓÙÒÐvQÄÛÛÛÚÚš ww÷I“&áùA¬X±B{†Ûxxx „ðC”„ûêâ ê;;; …¢R ྺ'NœÐÚ¾ºoß¾Uµ¯®]õ ±ñòòúðáƒÄBƒA¥Ri4þ™K£Ñ‚ Ñh¸³'Ç£Ñh\.—B¡à~` ÅÀÀ€J¥Q©TcccfjjŠg¡R©VVV4­ŽçÔ‰ŒŒDßš#XDD~‘ŸŸŸ™™™››[PPPTTTRRRVVVQQÁçóñ¯|’$ñozÑõ$™-ÒÿÇSœ‰ÿ_Ó™ËÚÚº¼¼œËå2™LÑ=#¡P(ð}1™[Éœs™ÅbµmÛVÓª·ª|VŒ@ (++à šòòr™/ÊÊÊJJJ T:“ÔoÐv©Â°aÃnܸ1cÆŒeË–5nÜ833sÊ”)gΜQi^µŠŽŽ¦ÓéIIIªn¨Ì”6â(JFF†¦³+CVV…B©F ¨4b+((žÎ±JÕˆ­?ˆ«qtêeOÏ~ýúõë×OÓQÔ>}}}‡#ºkÀáp”*Èd2 NÇ¿éÇãñx,ËÊʪeË–šÎVƒF§ÓÍÍÍq¨Ú.U JIIIKKËÏÏoÛ¶­]$žç@Ý{¡R©:uªy:µ®]»vu6d=S? Ñ@ôèÑãÆ ÅÈÈßoŽp8|cËÔÔÔÂÂÂÊÊÊÖÖÖÊÊÊÂÂÂÂÂÂÜÜÜBŒ©©©¦s@@ÛE) ¥I“&Mš4Ñt 2øúúÖ̓ûôé£éìÊàííÝ«W/Ü÷ ¨dÔ¨Qš(kÊ”)t:ÝÖÖÖÖÖV¼9"z¡Ò-`t<Ïu­&Ï3R¡3 €ÆAÛºÚ.Ð%Ðv€.¶ t ´] K í]mèh»@—@ÛºÚ.Ð%Ðv€.¶ t ´] K í]mèh»@—@ÛºÚ.Ð%Ðv€.¶ t ´] K í]mèh»@—@ÛºÚ.Ð%Ðv€.¶ t ´] K í]mèh»@—@ÛºÚ.Ð%Ðv€.¶ t ´] K í]mèh»@—4Ķ‹@  R© …J¥ M‡þ‡@•bÛ…N§³X,„žžN×t8à_t:]__!¤¯¯‡¦AIHH˜0aÂØ±c£££B;wîìÞ½ûÚµk…BáÍ›7ƒ‚‚ÆŽ›••¥é0ZAm—ŒŒŒ¯_¿j6Û!Ü‚ZÅÌÌ !dll¬é@@ÝÉÍÍíÕ«—››[ïÞ½ ´mÛ¶#GŽlذáÕ«W3fÌøþûïgÏžíééÙ·o_‚ 4,@óêú§­@ =zôÊ•+›4i¢ÁlÛØØ|ýú¾ µ|ÎÕ³€IDAT¥¥eVVnÁ€bÛ¶m£FZ¶lBèóçÏ¿ÿþûáÇ\\\œœœ¶oß>xð`„Ð¥K—îݻ׫W/MÇ Ð°º¾îòÛo¿%''3™ÌºÏêÍ›7'Ož¼hÑ¢ÔÔT„™™Ù»wï–,YrèÐ!è]¡A§OŸž0aÂêÕ«óòò5j„²´´|úôéÂ… CCCI’Ôt€@½nݺõÝwßá×:uÊËËëÔ©BÈÁÁ ˆöíÛã·:vì¯é`šW§m—§OŸ²X¬-ZP©Êî·´´tþüù5ÜõÞ½{'NœØ¶m[@àééI£Ñ¨Tª‰‰IŸ>} Æ‘#G‚‚‚8N]–À–,Y²víÚŽ;¦§§·mÛ_q144|øìÙ³ uV !tèС3fà† BhÑ¢E;wFÙÚÚ.X°!dll|âĉ7j:X ^A|ùò…ÍfK,/((^hÈê®í²téÒQ£F˜šš¶oßÞÉÉIñúçÎï)ÊÖ­[«½ëèèh‰þ}ƒ B-\¸PÔ]×ÊÊjìØ±§Nª³HÖ¡?~4¢+1ØÞ½{ûöí«é`º$&&Ž=ºqãÆB¡ðøñã;v|ÿþ=BèíÛ·$I:99­\¹2..NÓ‘´B]3š;wnQQQxxxóæÍ¬Æãñ®]»† |ðà———‹‹Ë7ª·S///ü(‚ÿ”¸öcmm­8*Pë|}}ŒŒÄ—àC#q¼ííí5,P—+W®ìܹ3::úëׯ`0ÉÉÉ]»vŒŒüûï¿ÃÂÂbbb:¡éHZAKçÕMOOçóù666¡¡¡zzz!KKKÜš©666!<h|hðÿA!X,VYYÙõë×G}óæM“’’’   sçÎ 0ÀØØ¸¢¢¦Z`Zz.À·‡æÌ™ƒ'ÀE±ÙìZœÚÁÂÂbþüù¢Äö€CÓõéÓÇÏϯiÓ¦IIIƒ {öìÙàÁƒ?}ú4mÚ´ 64jÔèíÛ·/_¾Ôt¤­ ¥×]ðCmÆŒ#Zòùóç¯_¿ÖÖ4et:}ûöí4MÓ’àÐ4@ÞÞÞÿûßÿ>}úD¡PðxÀ6mÚDGG7ŽJ¥¦¥¥}ýúõÌ™3®®®šŽ ên~•|øðÁÝÝÍfã«ÄŸ>}rvv655-**¢P(š  l6›Íf[YY‰/¬¨¨ÈËËkÒ¤‰òZtBMæwÑÒ{F††† Côãû¯¿þB¹¸¸@ÀúÊÐÐÐÐÐPb!‹Å‚g¦$h²íÒ¦MÅsÁIüÒzñâ´]õ144¬ùsxÔM“m—„„ýW<<<Ž?Þ¾}ûyóæá¼xñBb.%åææ>}ú”Ïç8;;Ã]sí‘––öâÅ @```àääÔºukhžÖ{]»v5kž„  """æÌ™óñãÇsçÎmÞ¼YÓáTMKï!„|||"## ÷ìÙƒòóó«FÃåÊ•+6lxùò¥x#©iÓ¦±±±–––šÎbÃE’äéÓ§W¯^ýùógñåOŸ>mÒ¤‰¦ ½´·û[PPЙ3gÆŒC„žžžªOI,++8pàСC333ׯ_MDYYÙùóç¡á¢AcÇŽåñx?ÿüsLLLyy9I’—.]jܸ±¦ Õ´÷ºK·nÝF_¯[·Nô$Ee°Ù쀀€ÄÄăN™2E¼ßŒ‘‘‘···¦3×ptîÜ9//ïï¿ÿ3fŒø"CCCM@ÛiiÛE(Ι3¿4hÐòåËUÚ|Þ¼yoÞ¼iÑ¢…Ìx<^bbbNNN»ví` ׺4nÜ8ƒñþý{ysü“$™———––V\\Ü¡CsssM‡ 4ª@MÎï½2­Âd29Nì¨&󻨷¿ ÇÛ¹sçäÉ“§OŸ~çΫW¯~øðA|R–àwÍÍÍííí ‚ k ‡Ã7nœDµ•>¨6‡Ó³gO„©©é¾}ûI’K–, Ç+”––>~üX(j:RPS]ºt9~ü¸Ì·ª¬u¸qㆳ³3I’gÏžussSkàV¨·í2cÆ ##£#GŽlÙ²åÒ¥K#FŒøòå‹âMâââðÝ"CCÃ[·nQ©TÅsÀ¨dÆ 'Ož”XˆŸ?4ëСCwïÞ8pà»wïf̘A£Ñ¢¢¢Ž=*ÐèëëûË/¿h:R FUV@jm»p¹Ü3gÎ|÷Ýw ÅÌÌlÏž=íÛ·W<ãMyyùˆ#¸\.Bèï¿ÿöööîÕ«×íÛ·UÝu||ü©S§^½z%±üĉÒ+Ã<uIÞ¡9~üø† ÂÂÂÁ–-[üýý[µjåìì¬éAÝjP†Û.Ap8œ+V””” „(ÊÊ•+ †‚MvíÚ…'üX²dÉСCB={ö¼uë–ò;­¬¬5jTÛ¶mÇŽëééyåÊÑ[/^¼ÈÌÌ”XÞ¼y³fÍR_!‡&===;;{Íš5 %66¶sçÎË–-344ïÞ½G­X±BÓùêB’dFFÆâÅ‹T@jm»̘1cçÎ صkWÇŽû÷ï/oýâââ­[·"„<==7n܈úúúFFF^¿~ýÍ›7AT¹ÓiÓ¦;wNôgTÔ¿ŽÓÓÓ ‚=#©yóæÇß±c<²¸n(84çÎËÍÍýᇆ âíí””4oÞ¼—/_zxxˆÖ166öõõ…òÕcÅÅÅß}÷‚jHÝãŒH’¼zõêéÓ§oß¾ŸŸollüøñcÑ™ÆZ¥¡3ŠŠŠzúôé AƒN:•““sÿþ}ggç_ýU|ñ~Ρ^½z‘$IÄÈ‘#e&ûÝwßÉyôòåKÑj,ëüùóâï^ºt‰J¥jº7wuáÂQSUúÐlÛ¶ÍÞÞ^Ó1‚:"oœQaa!BèÑ£Gš€GçÆ©qnº¬¬¬°°°nݺ!„¨Tj@@Àúõë·oß.oý?"„,X€ E¼~ýÚÓÓ3<<¼¤¤äÔ©S}ûö•ÙÁ–$I„йsçètz=ÌÌÌ4[¸@„$Ivûöí¢¢"84jB×]ôôôþúë¯7nˆ–ÄÇÇûúúÊ[¿¼¼!Ô©S'„É|îܹ‹/.\¸$É'N¼{÷¿»hÑ"6›-/.]º÷£ €C †ÔØv¡ÓéÁÁÁW®\™4iÒ¶mÛfΜùöí[ãD,--­­­ñS“““»wïŽo¹»»ùò…Çã988\»vÍÜÜ“É ¯¨¨X´hB¨eË–ï޽ëݾ}»Q£FU&xûömwwwMg ȇ@µiQÛ!´hÑ¢víÚ…„„äçç[YY………íØ±!äââ‚Û.¯_¿>xðàÎ;õôô'uçÎ7n„„„h:O@5¡]m*•záÂsssWW×#GŽ”””à6JóæÍSSS9Ò»wï 6(þÚ#IòСCÁÁÁ§Nb±XšÎø5§Æ¹éªG__ÿüùóçÎÛºuë÷ßߢE‹Fñx¼sçÎ]½zµcÇŽŠSX°`Á… vìØÑ½{wMçüÇĉOœ8‡@MÀ8#ü£I“&_¾|©ƒÕdœ‘†¯»$©äšÝ»w_¿~}=¬óòåË:¸¸¸¼zõÊÐÐPâÝË—/>\(j6Ë Ó… FÕªU«˜˜éCóûï¿oÛ¶-##CÓaM***²°°xôè‘‚Ù·i[„еk×¼¼¼š4iòóÏ?‹·l Fee¥2),X°@úÛhƒµkסPCÚÕvIJJ Ž‹‹KKK[½zõ;wDo±ÙlsòŠÃOÔ¯^½š¬ËŒÔp$I¶oß¾.P/iWÛåñãÇ|>_ôgTÔ?Ýn‚xÿþ}›6moîìì¼bÅ WW׺Œ™Íf+x86B¨}ûö{öì ÃSoÕ–£GnذA­‘×â ÌÌ̸\n-–€†I»ÆµhÑBüOÑ”èèh [[[Å›oÚ´©ŽcŽŽŽ®²[‹Å¢Ñhµ»ß_~ù¥†}w”‰¼Vö˜ðàÁƒ>àmÊ·(I»Ú.ÞÞÞÖÖÖA¸»»Oš4 ÷Ì%bÅŠK–,©aâ}úô¹víšôrWRRBI’/^¼ðöönÔ¨~ëÝ»w©©©]ºt±°°@q¹Üââb …baañðáÃ:ddd,Z´ÈÍÍ-11ÑÊÊÊÊÊJ"ñׯ_geeI þøñcbb¢hG"ÉÉÉ!Ô´iÓ²²2„¾’$ ‡Ã)-- …vvv©©©øÙvvvYYY!‹Õ¸qc‰”%vúîÝ;™‘Ë+ ñ=òx¼ââb’$Y,ÖãÇ›7oÞªU+ÑŽðŽñ:îçç'~EM„ ¼½½k¿>bnnÖ©S§š'¨ß´ëž‘‘‘Ѿ}ûŠŠŠ† 6zôh„P^^Þˆ#H’œ>}z 700èÛ·¯ôò .øøøôïßÍš5 ^^^OŸ>E-]ºtÛ¶m %((èùóç¡cÇŽy{{/^¼xîܹóçÏŸ;wîÇ ‚HOOðàAjjªDÊkÖ¬;vl||üäÉ“ ‚À 7nܸxñbƒ1|øpñ=ØÃ‡ÝÜܶmÛVYY™’’päÈé`:äçç7yòd¼‰§§ç¨Q£JJJŽ;Ö¯_¿ÄÄD‰d¥w*/ry¥!¾ÇÐÐPŸ1cÆÌ˜1#<<ÜËËëܹsxóeË–-Y²ÄÈȨcÇŽøYߊó‹YYYÁŒ/!4hР*§ÌT ÅûcÝ<ü ý÷YŒ"7oÞlÖ¬™¾¾¾‹‹ ‹Åš3g—ËUk$³fÍrtt$IΜ9ÓÇÇçéÓ§ £´´”$ɵk×¶mÛ¯9yòdssó—/_ž?þÎ;$I>|Þ¼yÒi&%%Q(”¨¨(’$ïÝ»‡º}ûöëׯ©Tjnn.I’ûöísuu•ÞpäÈ‘£G&I²²²rРAAÈ fÅŠ}úôÁ›œ={–N§ß¿̘1ÉÉÉ ÊÛ©¼È¥K/ßã´iÓ5jT^^N’ä÷ßߣG’$Ÿ={F£Ñ²³³ËÊÊ Æùóç•É/€Èû£èŸ¨ò^9ÚuÏ JIIIKKËÏÏoÛ¶mü£R©^^^¸KŠ··÷ðBíÚµ[¿~}^^žµµ5•Jµ±±iß¾}•Cfž?N’$~ g‡ðÂ{÷î1ŒÍ›7#„Þ¾}›˜˜XTTdnn.¾áܹs{ôèñÛo¿EFFNš4‰B¡Ü¿_:*õßkf!!!111½zõºté’DŸ!%wª¸4¸\.“Éß#•Jmß¾=ž×¿eË–¯^½BEFFÚÙÙánI%%%úúú;vìPi×@•´±í‚¢P(Mš4iÒ¤IíQtO‡J¥Òét}}}Q¿T}}}„ƒÁÀŠ÷íéïï/ž†Çu‹:êr¹\33³7ŠV%+Ò­[·¶mÛîÝ»755õèÑ£xyÁˆXZZ¶hÑbÏž= od(³S‰È¥KƒN—QODoE» …¢‘D8Neò @Ý[ºtirròÌ™3ƒ‚‚Ä—oß¾ýÙ³g­[·^¿~½¦c”-)))''§Ú÷XÓÓÓ ôš@'hW zúô)›ÍF=zô¨gÏž ÈÍÍÅ“¿zõª{÷¦!’$ÍÌÌÄ7´°°(..FíÝ»W|9$ƒº{÷.BˆËåæää$$$èëë3™Ì+Vàž¹â(ÊܹswïÞíì쌯9õë×O:|Í oÊãñîß¿ÿòåK|‘Cœ¼Ê‹\º4pÛK|2_ûûûçåå=zô!{úôieò €bªæWƦM›ž={–™™)±|Á‚æææ±±±Z›µšLUÓ£Gé\ s´ôºKÝkÕªÕØ±cMMMŸ>}zýúuggçÝ»wOœ8±gÏžáááÇG9sæÎ;AìÚµkîܹxÃÀÀÀI“&åääŒ9R|øpMG¡- 4€–“˜§@æ8|*•êéé‰/þ5kÖ O@¡Pìííq't„I’¢É Úµk÷àÁ‰Éœ\ Ê”åm%=§@•Ù„© Ú.Ý Ì/Þ±CÞ8|ѼP EÔC\ü±Yør…h¹ô=Íê¥,o+é9dfMLU€<Ðß Õ$ó“ÿ§@æ8||E¯ ó5I’………øY¡¸¸¸þýûK¬S½”UÚJÁ<¦*@>¸îÐjâƒù¥ç)žàÚµk7nÜàp8'Ožär¹QQQ?~ HLLLJJ:~ü¸§§g»víÚ´ic``°jÕªÒÒRKKË  „.]º^XX¸wïÞY³fU#e___‰­ÂÂÂäÍ) `žS Œ‘h;Ó`ªŽÃçóù………¶¶¶¹¹¹ÀÞÞ¾¶RVu+yYƒ© @½W“1ÒpÝ íªœ’ÃW>A===Ü›ÕÆÆ¦vSVu+yYŸª %fnn.Ñ·z@;AÐ..\¨¬¬Ô××ß³g¦c@iûu—ÒÒÒŸ~úé矖77Ô30UŠiuÛ¥°°0(((66wÍÓt8Ð<­n»Ìš5 ?Ðu÷îÝS§NõððÐtD€†?9¨¬¬LÉÅ Cty˜ÅbÁXÔG{Û.¢ÇsP(”­[·ž8qBÓAtLQQQfff±˜Âœœœ¼¼¼‚‚‚¢¢"<ÃJYYI’l6›$I‡S‹C õôôôõõY,“Éd±XFFF,ËØØØÌÌL__¿Q£FfߘššŠ^ã™åÒ´·í²ÿ~ü¢k×®»víêÖ­Ûo¿ý†‡€¸Â¤¤¤”””ììì>|ùò%---??¿¸¸˜ÇãI¬Ìd2 qÂÄÄÄÕÕ!d``€[[[Óh4ÑEccc™ÚJãñx¢xðä¶$Iææær8œòòòÒÒÒÊÊÊââ⌌ WYYÉår…B¡¼étº¡¡¡±±±¥¥¥]Ó¦M5jÔ¨Q#kkk{{{h߀†IKÛ.<ïÚµk¡ÀÀÀˆˆ===—7nLš4IÓ¡4,===>>þýû÷¯_¿~óæÍçÏŸKJJB4ÍÄÄÄÒÒÒÞÞ¾]»vNNN¶¶¶vvv5211111155555­öÃØÕ$Éââb|ù+))Á/ rssñU¢7oÞDFFr8‰Íõõõ­¬¬7nìììܺuë¦ßØÙÙUã!ðè -m»¤§§óù|›ÐÐPüôKKËk×®ébÛÿ«¨¨àñxÅÅÅ|>¿¬¬ OÞ s}}}}:nllŒ277ÇW’áL¤>¥¥¥EbD½ÊËËññýh–Þ–F£áßå,K___OOÏ«¡§§gdddnnnllldd„⛚š1™LMçX÷|ýúõöíÛׯ_þüyff&•Jµ³³kÞ¼y·nݦM›æââÒ²eËÆkU»D Ez.y8N~~~NNNnnn^^^^^^vvvJJʧOŸ"""N:%ºŠC£Ñ,,,š6mêééééééêêêîînmm­éìP;´´í‚gÖ›3gŽ……^Âf³ããã5— $Ifee¥¥¥¥¥¥¥§§úô)+++''Gt+]^EUø~¹ñÿٻ︦®öà' +ì=DdÉÔªT-V[·â¬Õ¶Êk‡£ÔYëUÛjÕVkÝZ ¶¢¢âBq2e/Ù{²Éýýqúæ——B7çûé§Ÿî¹÷9'$<9÷ ---+++›AƒYXX˜™™ <øKl X§¬¬¬¼¼¼¢¢¢¤¤¤¬¬,77·¨¨¨ªªª±±‘Åbq8ñ¦w ÓéâMøÚDDKK‹ô iºººfffæææ666øµµµµµ5Üh%//ïÔ©SW®\yûö­··÷®]»<<<ìííà`XssóöÖ&¢¼¼eeeeff†‡‡Ÿ9s7ÖÐа¶¶>|øˆ#<<<ÜÜÜ`‚þAN÷HHHpwwÏÉÉÁ[Ì#„ Øl6‹Å’Ü ¶‰D¢‚‚‚ÌÌÌôôôøøø7oÞ”””à¯éâcTTT˜L¦–––ŽŽŽžžž‘‘‘‘‘‘žžžššš²²²––N×ÔÔÄ+m^…Ëår8¡PØÔÔ„ª««Ãßûkkk«««kkkëëëKKKñóâRL&ÓÖÖÖÝÝÝÓÓÓÁÁÁÝÝ}®üÝÐГ““›››ýæÍ›ŒŒŒÂºº:ÉcðŽÁ:::úúúºººúúú††††††:”””˜L&NdzEðk×Õ`ø|>‹Åª¯¯ojj¯`SSS}}=‹Åzûömaa!Îqñëˆß EWW×ÂÂÂÁÁÁÕÕÕÙÙyĈüFÞÿddd|÷Ýw<;vì‚ >üðÃw®® Ú$ óòòÒÒÒ222’““ 8N:t¨¯¯¯ŸŸß{ï½gbbBv¤``éΞrš»dee999±ÙlÜŸ››kcc£¥¥UWW×ǹKVVÖ«W¯ž={™ŸŸ/päzzzÖÖÖ666¶¶¶x îi/#é  ¢¢¢¸¸¸¤¤$333!!!==½¨¨¨±±‘F£ 2ÄÏÏo„ ÞÞÞýòCŸ ˆ¼¼¼ÄÄÄׯ_?þ<55µ¶¶ÿHIIÉÐÐÐÒÒÒÎÎÎÙÙÙÐÐ'‘x$&Ù±ÿ¡PXYY‰{þóòòRSS333‹ŠŠ(Š©©©‡‡Çøñãß{ï=ww÷NŽUtAøøøøúú®^½zÀfo½‡ ˆœœœØØØ/^<{ö,++‹ËåùøøÌž=ûƒ>Ü©€^¢À¹Kµ:ÁÌ̬¸¸¸.ÔÜ…äqmD;8F«¯¯'¢®®æX¶lÑkÁ?ÿü³dÉ< ÛÀÀ`Ö¬YG}ùò%^òAAµ´´$%%mÞ¼ÙÆÆ†F£ùúúÞ»wì º¬°°ðÈ‘#~~~øF˜¡¡áìÙ³9òäÉ“šš²£ë#õõõW¯^1c†–––ªªêÂ… ãââÈJ£F:þ<ÙQ€váO kkk55µÀÀÀ¼¼<²#½.<<ÜÆÆ† ˆ«W¯*ÄZ$r:&_EEÅÁÁáíÛ·¡­[·VVV"„{ãZ•••;wî477Ÿ7o^~~þ¦M›222*++CCC¿úê«÷Þ{¯/oõ8*•êââ²sçÎììì´´4ooïO?ýÔÛÛ;--ìÐÞ­¦¦æðáÃÇ>>âÑÜýž––V@@Àõë×kjj.ÉyFŽŽŽä&R#ÅÅsD÷âêÕ«AmIHHÓ^îrâÄ ›ŽŽŽ©©©H$ê³×¯±±1**ª¥¥¥o.Çår-ZÔêqqqéOWì}üº=ÝP=Þì\.wüøñ!--­ãÇ …B‚ Ö®]ÖgM$³réõ‹W­Z…k÷Α¡…Y,–ôGb¯^‘Íf÷ñ»CA?.€ $sww÷¾¹¨‹çñâ $­sz«ßeâĉ...?ÿü³‰‰ÉúõëW¬XáééyòäÉøøøŽ ÆÇÇóÍ7!55µû÷ïS©Ôôôô¯½þ~~~ÞÞÞ{÷îí¥fieÇŽ’·½±.íhÓÕ© Ý¿bok³F}üº ®7TÇ/„ ÍÞñ Ož<ùðáÃ?þ855500F£EGGŸ9sÆÞ޾Ϛ¨7ðx<ñªÇVVVçÏŸ?tèPgÖA–íïc%Þ¾±®HD_QRÿû¸VoÕÕÒÒÂ3Dììì ˜Lf@@@II Þª¾=,köìÙ<!ô×_yzzN˜0!""ÂÁÁ¡§#äf„qqñ™3g¤Ÿÿä“Oz©"%%%ݹbo“Ÿ—!táÂé'Ûl¨Î„}êÔ©Nž­“'<þüŽ;6oÞL¡P„Bá/¿ü²eËOOORš«åç秦¦š››ÛÛÛw~÷†“'OJ?ÙÉ_ì+W®hjjöå/]º¤­­Ý—W”íÍÕ+лzéžA !܉=wîܪªªÌÌÌ£GŠ@R÷ŒvïÞ£Z»v-~æÂ… “'Owv666>{ö¬oîM,\¸Pz×^í=þôÓOe¾boë¸F}ùºaff&ý¥Í†êä Ñɳuþ„êêêQQQA¼~ý¯{¤££“””Ô7íÓMÜ3Bíë@cc£ô'[g~±qÁÇwõŠÍÍͲ]|øðaW¯Èápd»"!ëÇÞ»M>?.@S¸{F½8Ï(11ÑÍÍmçÎL&sݺu¥¥¥úúú’À<#@®À<#„ª¬¬¬¨¨ …mþT2Û¿?~2&&† ¡P¸uëV===ñÁ&&&G•ùË·P(ìÎÿàççWTTt÷îÝ”””Λ)..nsí“wVdÁ‚>>>2\±·±X¬6wÐ ë¥ÁWgCuþ7jРA7n|g³ã½|;sBMMÍ 6<|ø0;;›Ëå’ÒJ2ëñ~¼\}hhhW±eîwijjB]½zµ«W”¹ßò½té’ o^Ù>÷ø|>BèÂ… òöqzƒÂÍ3êõµéüýý?þøãŒŒ „A—/_^°`A›Gâ¥Í'L˜àååEÄüùóCBB$(++ûúë¯_¼xqñâEúlîܹ#=BmÕªU+V¬èíF耹¹¹¹¹y—ŠlذAº·¬ó‘ኽíÔ©SUUU2ר—¼³¡ÚóØ^ØZZZ'NìøŠÁÁÁo‡¡C‡úùù‘Ø>òÆÀÀ`ìØ±}|E__ß>¾â„ ºT„ÏçwçsO__ÿ¿·ô½>ZßeÏž=šššñññÁÁÁí“Z³f BèæÍ›8q™1cÆ‚ -Z¤¥¥…ºté’ôÐ÷Îhii¡P(²Íb+B¡pðàÁý "’5ÒÐÐP¸µ´´ „z0l¡PÈ`0®€<#º1³ ¹Õ‹ý.ø“ÏB6l˜P(üé§Ÿ$﵂×Z9r$Bg'ÁÁÁsæÌ‰‹‹[¼xñ… JJJfÍš4kÖ,55µ®†D¡Pd›Å oÌÍÍ=zÔ*"¦®®ž’’¢ˆ5ÊËËKOOï©° Fvv¶"¶g.\ÐÓÓƒ_*ÐoôVîròäÉãÇ#„Ö­[Êb±’’’òòòÖ®]Û^===%%%œÜäääŒ;vΜ9!''§‚‚>Ÿoffvûöm[[Ûªªª¤¤¤Q£FɘÞ1‘M¿©ˆ¢×ÈÜÜÜÂÂÚÈ3}}}²£ ÇÀ~FøÌ3z7Éqοýö›¶¶6ÍþÇ0™L6›´|ùò«W¯âÇ·oßFýôS''§¥K—â7ž½½}JJ >  QˆÆ@“£ÜEKKkóæÍÕÕÕÊÊÊaaaÍÍÍAAA¡¡C‡¦¦¦âÃ"""ŒÇGv¼ A¯¯ïÒ%AAAOž< Ö×׿yó&^ÔÎÖÖç.IIIþùçÙ³gét:ÙÁvWEEEjjêÇÜÕ‚ ºººd‡ßÿ½ó¥ÁËfL™2å#·ªªªÎž=ûìÙ³Ž+..ÆõîR•á?%Ö¯_ßÁ4Æ nܸQ¶‚›6mêjA<ûòûï¿—­àæÍ›:Ô¥‚¸Uøá‡Ã‡ËPß@ÞÈWîB¥R¯]»¶páB{{ûýû÷Ïœ9S[[!dee•ŸŸúôé 6ìØ±# €ìH{@^^^uu5¾ÓUøæ7èU|iîܹәÃ222ð ÈØñF­²½#B¯^½ê÷££eœE#[Á¬¬,Ù ЫȜgäææ–˜˜Hv à_L&³oúÛº3ψÌ~¼ÑtŠ‹‹ß¾}+ ,XpúôiOOO™/÷÷ßÏš5 w½Êƒ‘#G¦§§ÛØØtµ`~~¾¾¾¾ ߇.\XRRòäɲ«ÞÚ/¿üòóÏ?—””È¿p燛›[LJ566æææ¾ó0„Pjjª¾¾~›{Iª©©)++ëÌm#--­C‡-]º”ì¦êI|>_YY¹3íÙJKKKrr²††F߉DIII¶¶¶L&S†‚2_Q†‚A$&&Ê\ðܹs‹/îRAú€|Ý3jEr‘.mmí~vçÕÒÒ’Éd>|ø°«çÏŸßÉÌtG|||Çܾ}ûã?~ýúµxÁõöXXX|õÕWë×¯ïø°3gά^½šìz“†Á` N4»´††mmíS§Nuu?£¦¦&MMÍ?ÿü³«cÿY,–††ÆüÑÕýŒØl¶ººúüÑÕ½¨8ŽššÚ±cǺºŸÇSQQùí·ßºº6@ `0mîãéä.w¹}ûö–-[ªªª7mÚ$¾ýÏ`08ÙÑõ¤‚‚‚7oÞØÙÙuµ`YY™±±1Ùá÷ï|iðZÆ {ç©ÊÊÊ~úé§Ó§Ow|Xccc?û%ï@€:ÑìÒð¨ÒE‹©ªªÊPð“O>éê#¸àâÅ‹»Z „ЧŸ~*[Á¥K—ÊVðóÏ?—­ ô ä|å.™™™3fÌÀa›7o1bÄ|€Äf³»úÁ$çJKKÙl¶lCá`G’>ÐÉ—¦“‡UWWWWW¿ó°zô¨«ñÎ;JJò•°"ygôÎ<ÕmiiéÙ±ºx™“ŽñxŸ/[<|>ßÌÌL†+Êí(™¬¬¬²²2ùyi°wƃóàÎL=åp8?üðÃŽ;ÞyB¼`ë;õËÄ…Çã¡N4{{&NœøÎ$²M“&M’¹ lï©É“'ËVðã?–­àÔ©Se+(?ß($_¹ BhæÌ™áááëׯ4hPiiégŸ}våÊ•îÿÝe³Ù EÞV¤•-ž¾Ù ¼ÏàAš úÒtò0@ 9–«=²ýíØl6F“ù×@æ7…Ìq²Õ Êá&˜Üå.!ÿ¼¼¼¢¢¢êêjggçžÚºÈÞÞžÁ`Èüæ—+™—«@ÜÝݯ\¹"?·óHÔÏ&Ó…Æ`0†Jv´As„…B±°°°°°èÁsúúúîØ±£“}òr®«7Ëå\@@ǃqÄ![[[²C ¶¶ö±cǪªªÈü‹N§{{{“m¯±ºº3VwàÞ\€"‚ÜŠr(È] H w€"ÜŠr(È] H w€"ÜŠr(È] H w€"ÜŠr(È] H w€"ÜŠr(È] H w€"ÜŠr(È] H w€"ÜŠr(È] H w€"ÜŠr(È] H w€"ÜŠr(È] H w€"ÜŠr(È] H w€"ÜŠr(È] H w€"Q";G\.—ÃáˆÿYWW×Þêëë ‚èæå´µµ) BHIIICC?©ªªª¢¢‚kiiQ©ðmóÿ544DEE™˜˜¸»»#„âãã322>øàƒ¢¢¢ÈÈHWWW'''²Ã½BÞs—ÆÆÆ-[¶ìÞ½[]]ìXò«®®ŽÅb577³X¬úúú¦¦&‹Åb±+++š››E"Qmm-BˆÅbñù|¡PÈb±BÍÍÍ---B¡Çã!„$ó9D¡PÄ Ng0JJJjjjT*UCCƒF£1™Leee555uuuƒ¡£££¤¤„s#&“I§ÓUTTÔÕÕµ´´455™L¦ººº¦¦¦båF•••>>>æææoß¾]¸p¡³³sPPÐèÑ£¿ÿþû“'O~úé§ãÇß°aÃÑ£G§OŸNv° çÉuîR[[ëïï'‰>Lv8€>ÕÜÜ\]]]UUU]]]SSS]]]^^^ZZZZZZUU…³.—ËãñpÎÑ555eeeƒÒÐÐÀûq—†¡¡!ƒÁPWW§Óéêêê8000 R©øÉót晉;oΨBl6[\µ††‘HD›ÍnjjÐÜÜ,Ð;‡JKK[ZZø|>ljD\.·“1à´FUU'4L&“Édêéééèèhiiéèèèêêêè興³¨>¶wïÞ‰':t¨®®ÎÁÁAWW÷Â… cÇŽ]»víþóŸ-[¶,_¾üÕ«W ,˜2e F#%HÐ{(555­žò8))6šìÀBhîܹÁÁÁøqRR’‹‹ ÙzRSSSaaaAAAQQQnnnfffQQQmmmSSSSS“@ I¡PÔÔÔ444´´´tuuõõõñßNü÷UKKKMMMMMM[[[]]]UUUSSSCC÷=]K¹€Óš¦¦&¡PÈårÙlv}}}ss3΄Ùl6›Í®¬¬Äû±8Nø|>ŸÏ—>-Nǯ‹¶¶¶®®®žžž‘‘‘‰‰‰¾¾¾™™™‘‘‘™™™¡¡¡²²rÏVgذa¡¡¡ŽŽŽ¡åË—Ÿ={¶¹¹™N§'$$Œ9²°°ÐØØ!dmm1dȲ›´a¸×HñãÇ÷ÂñƒŠŠŠÎ”•ß~—»wïŠ …ràÀ .T/JNN>þ¼¹¹ù—_~I§Ó9’””ôÅ_Œ5êöíÛ¡¡¡ÞÞÞŸþ9Ùa @™™™ššš———•••••UVVVYYÙÜÜŒ¢Óéúúú–––ÞÞÞ&&&­¾Üëêêjkk“] Ŧ££#þ¿lx<^}}}}}}]]]«UUU555iii/_¾d±Xl6[$‰Ëjhhhjj›™™YYYYZZ›ššYXXÈÐwµlÙ²¡C‡âÇ‹/‰Dt:!dgg7{ölü£_~ù’×~I~û]f̘ñ÷ß#„F}øðá1cÆ‘W¯ÈÌÌôóó[µjÕëׯ ‚ðôô¼}ûö‚ ¶mÛ¶cÇŽ={ölÙ²å?þ ";XÞ­¾¾>...::úÙ³gÙÙÙ---FFF†††¶¶¶ÖÖÖæææø{9Ùñ‚&‰ªªª*++KKK++++**Š‹‹‹ŠŠŠ‹‹ËËËëëëÅkjj<ØÎÎÎÎÎÎÆÆfèС–––JJòûít_wú]ä4wáóùL&S øùùݽ{—N§ã¡XK–,!7°^²téRggço¿ý¶¥¥ÅÎÎN „‡‡;888pà×_ÅÃÍrrrÆŒSVV¦@ãéÀ€ÒÒÒyåÊ•ˆˆˆ‚‚]]]''§Q£F¹¸¸ØÙÙÙÛÛ«©©‘#ç4………oß¾ÍÉÉIKK{ûömYY¾9¥¤¤dbbbkkëîîîææ6|øp;;;Èfú“~˜»äååY[[¦§§ëêê"„Æg``Bn`½ÄÆÆæÞ½{ÖÖÖ¡Ï?ÿüܹs€B¡¼~ýzÔ¨Qåååzzz¡Áƒ?{öÌ‚ìxø¼xñ¢²²ò|ðñÇ1~Ql***ÞþWFFFzzzvvvCCƒÁ°±±;v¬¿¿¿þÓW?ï‚£ÿæ›oÄ¿l6;%%…ì¸zËŠ+ŒïرCOO¯ô0|øðuëÖ‰oQ?þz×¼©­­=zô´iÓ>|8|øp²Ã ÏÈÈÈÈÈè½÷Þ“|²¬¬,%%%99ùñãÇ_~ùeeeå°aæOŸÓ8 9íwIHHpwwÏÉÉÁ]!6›Íb±ðu€ühiii¨ /•””DEE]»víþýûzzz+V¬X±b ËU,Ýéw‘Ó‘x¹qWDnnnuu5F7¸€>fff†Ѩªª:vìØãLJ Æf³ÉŽ ô2ïy{{?þ¼ƒZ%+ 0L@› ß¥GXZZ¾}û–ì(ÞÌTàùóçD;8Fà MÖÕÕáAË–-#d…Wæ511Á—VVV¾råŠÌg Û¹sç¼yó‚X·nÝòåË;8ÞVô3W¯^UˆAÐrÚ¡¢¢âàà€S¿­[·VVV"„e;Ç[¼xñÊ•+ËÊÊÄÏìÙ³‡ìZ Ààm ‹œÎ3ByyyEFFÖÖÖ=z!ôþûï{xxÈvª;v\¼x±Õ“dmÃÑI|>?##£¢¢bøðá0·È!E|[~ >39íwAùûû_¹reþüùx±çßÿ]æS?^úÉO>ù„ì*¶ ˆ#GŽXZZ>ÜßßßÂÂâêÕ«d@kŠõ¶ý|f@ò›»Œ3æÕ«WønѶmÛœœœd;OZZZIII«'W­ZµbÅ ²«Øè‡ !%%EÞV ƒÏÌINs—–––o¾ù?ž2eʆ d>UCCAâ9œVVVçÏŸ?tè|Îê„~ø‚Ïç'''GDDàì\á(ÖÛ ôcŠø™©èoy@æÚt°Ê W”••¹\n\H~צãóù¿þúëÒ¥K—/_þàÁƒ[·neeeIÐæ­'NàŸêè蘚šŠD¢îÌøzñâB¨ªªŠì©gï&½€ÍªU«„B!Ù¡žÁår-ZÔê%vqq!;®ÿÑ™9ÒQQQ¡šš²ƒZdd¤}f*ÄÛÿêÕ«ŽŽŽ½šôˆÞÍ]™LæéÓ§÷ïßãÆÙ³gt\$>>ß-RSS»ÿ>•JMOO'»•úHmm-N‡~ø~Lû·[µµµ„âÜ»„·êÅ9Ò<ïÊ•+¿ÿþ;…BÑÖÖ>zôh\\\sssEX,ÖìÙ³y<B诿þòôôœ0aBDD„ƒƒÙ ÕGètzNNNjjª¹¹¹½½½|¾lÌÍ gQ(”üü|ùÿÌ$Þþ=¨û]D"—ËݸqcCCBˆB¡lÚ´‰Á`tPäðáÃx=ºµk×NŸ>!4~üøû÷ï“ÝJ}ÊÜÜ|âÄ‰ŽŽŽrû&²Y·n]UUU«'anݤŸ™gΜ)//oõ$¼ýeÖ‹¹‹ªªj``௿þjfföÑG>|xĈ“'Onïøúúú „ÜÜÜvíÚ…ŸôööŽŒŒ¼sçNrr²H$"»¹]ee¥………¢ôozPMM “É„·OéÝyFAܺuëòåËÕÕÕQQQ...ÿ^æòd Ï3ŠŽŽ~ñâÅ”)S.]ºTQQñøñc›üQòÉáÍ~~~¡ &!‰æÌ™Óæi,XÐ¥™G 4ÏèܹsL&“ì(@oY°`Á¸qãÈŽâÝ`žP7nÜ R©dGÑ)û÷ï777';ŠwƒyF¨¬¬ìÔ©Sÿ^†J7nÜöíÛ¥oø‰egg#„Ö¬YƒºyófHHBhÆŒ ,ptt\´h‘––BèÒ¥KÒCµ0@ôbîB§ÓÏž=.~&%%ÅÛÛ»½ãY,BhäÈ‘!œ_¿~ýÛo¿%âÂ… ©©©ø§AAAl6›ì¦ zqŽ´’’ÒŒ3þù矫W¯:;;ggg766Š{b¤ééé)))ééé!„rrrÆŽ‹o999ðù|33³Û·oÛÚÚVUU%%%5ŠìÖ@_ëÅÜÅÇÇÇÇÇGEE¥¹¹9??éÒ¥ºººïààŸŸ‰WìQVV¶··ÏÎÎvttÔÓÓ[µjÕ¶mÛ w ØÏÿèóŒ:Crxs}}½¦¦æ­[·‚àr¹ï½÷Þܹs9A¿üòË?ü€ CÝ¿¿“£¦až0Ï€žóŒzÌ3ê2--­Í›7VWW+++‡……577!„†šššŠ‹ˆˆ0667nÙñ€½8ÞEAAAOž< Ö×׿yó¦P(DÙÚÚâÜ%))éÏ?ÿ<{ö,N';X@Žú]BT*õÚµk:::ööö§OŸnhhÀ9Š••U~~þéÓ§?øàƒ;v)È!_ý.!•ÐÐÐààà|þùçÖÖÖÆÆÆuuu|>?88øÖ­[#FŒèÒ •••©Tª’’ÜÕÅo+‰`žþ5dÈÜÜÜ>¸Pwæ‘üµ‰ ˆN9vìØíÛ·ûúú’p¯:þüW_}ÕÔÔDv  W,\¸°´´ôñãÇd@?ñ÷ßÏš5«¥¥…ì@ÞíÀ‡.**";~B¾Æ» „nß¾íááaaa±{÷nÉ̆Á`p8²£ë]ÊÊÊ ƒì(@1(++üI¾r—ÌÌÌ3fÄÇÇmÞ¼ùÁƒâ±ÙlUUU²üëÖ­›9sæýû÷[=ðàÁ€€€­[·võ„³gÏÆ«Ñô¸ÄÄÄ¥K—N›6->>¾O»wïÞ9sæìß¿¿ƒcŠ‹‹¥ïK@÷}øá‡ dGH _¹KTT”@ ÿ3:úßa7"‘(--ÍÁÁAæ3³Ùìƒöl´{öìyùòeiii«ç׬Y£££×ÕÒh4;;»Þ¨««ëÑ£GoÞ¼Y[[Ûƒí³aÃ:žœœÜÞ±±±¾¾¾ÒMÝG¡P† Fv€ò•»X[[Kþs̘1øALLŒ®®®‘‘‘Ìgމ‰)((èÙh•””ÔÕÕÛü‘††Fï¶T×k§®®N£Ñz¶}(Ц¦f{?MOO yõꕳ³s_¶†ÜRQQïÒÚÓãÝ™=«U™™™OŸ>•> ºA+ÊÊÊÊÊÊdGÑÈWîâééi`` §§çããsæÌ<2W$mܸqíÚµ2Ÿ6555((¨¶¶6##£ººšÇãUTTTVV …ÂGÕ××ãò³³ÃÂÂÊËËñ?y<^eeeEEE]]]xxxuu5B¨¬¬ìÖ­[UUU’ç¿{÷ncl%ÏÜùӶЇÏçã‚,ëîÝ»™™™mÖNúêIIIwïÞe³Ùí¼Í3-9ð(==ýÆÅÅÅ’gc±X÷îÝËÈÈ|RIIéý÷ß—ìHà8pæÌ²£èI ÑÙ³UkÆ™3gvìØÑêènÒ–/_.‘™ÉWîÂd2?^WW7sæÌyóæ!„ªªªfÏžMÄòåËe>mvv¶H$*..~òäI~~þ¹sç<==¿û+W®^½zåÊ•¡]»v}÷Ýw cÖ¬YxœÍ… FŒ1sæÌµk×^ºtÉÆÆæòåËßÿýåË—ËÊÊðÉÏ;÷øñãÇ>¼°°Púê­ÎÜÉÓJÇâåå5þüÀÀÀ°°0àà`éÚµºú?ü°pá”””¥K—ŠD¢6OÞæfÏž¦ªªúý÷ßòÉ'øÉõëׯ]»–ÉdŽ1B|›¹¼¼|ÅŠ7oÞôôôÄ!µ?ÐÕÕ566&;ŠžÔ»3;¨šd{÷î½{÷®äO¡»´IEEeÈ!dGÑÔHqñÑ7{>¡ÿÝ‹QìÞ½{–––***¶¶¶êêêß|ó ÇëæµfÍšµjÕ*ñ?—.]ª££“úàÁƒ¤¤$*•ZYYIÄñãÇíííña+V¬°²² …A888Œ3† ‘H¤¯¯êÔ)‚ ¬­­×¬YƒöññY¶l~ôÑGÑæ™ßyÚöâY¶l™±±1‹Å"âóÏ?÷õõm³vb™™™ wœ¬««Ã‡eeeݼy³¬¬Œ .—[QQQ^^^[[{çμCjiiiXXþmÁ¬­­Ïœ9ÞØØ(~^ü¶’ùÌ­Já.Xü+ž‘‘ÑfÕZU\‡Ã©¨¨(--mïü€¸xŽÿ'Î@Ò:G—Åô÷÷ÏËË+**ª®®vvvî)pT*ÕÐÐÐÕÕÕÕÕ!tèÐ!ƒ±oß>„Л7o222êêêttt¨Tª››&bii‰‡ãP(SSS| † www|ÎáÇ?yò¤Õ…=z$}æwž¶ÍR8WWWü­tèС‰‰‰WóÕ«WAàMAÅq¶yòV•””ÊÊÊ^¾|¹uëÖääd¼zdd¤‰‰ uÔÐÐ º1|øp’]RRRñ÷æo èk’Ýužžžñññ;wîôõõe2™QQQ®®®çÏŸßµkWllì—_~9kÖ¬íÛ·çççïÚµËÌÌlذa<oþüùÇŽ‹ˆˆàñx_|ñEBB‚‰‰ >ù¹sç>þøãÊÊÊ/¿üòÉ“'­®.Û™[•ª¨¨Ø´i“µµµ‰‰‰¶¶ö¹sçNŸ>Ъjúúúm¶ÀÉ“'9bee%îziuþ &ý*Ð?Écî‚¢P(ÒXÝéãヒœÑÃãñ´µµwíÚ%~F¼ÎŠ8s¢P(â'Å+ãþñ“L&³ÕåÚ;sǧí ===ü€Jmã~Ÿ¸vâÒh4<·\Ã'wssÃ{ÈGGGïÚµëĉ’—–íÌm–ŠŒŒ SWWçñxÇhUµö|ýõ×¥¥¥âuÚy«3¸¸¸hjjΘ1ÃÄÄdøðáúúú³fͺ|ùòæÍ›§N:nÜ8‘HtíÚµB’¾Ù¿ u©;³ãNGÔçÝ™]êËìt7Ðwäp¬n/)+++**êà‹•’’ÒÔÔÔÉòùüòòr‚ ***JJJzðÌ2”ê võõõATWW³Ùl‘HÔæÉ[¡©©)55’æóù?_[[›––&î=êñZ²lÙ²O?ý” ˆ¹sçñÙgŸ-^¼XüÓ˜˜ …O„H$Z½z5ÇûòË/ð“'OþöÛoñc—Çã#•””¾üòKüüûï¿¿k×.üøÛo¿y«30 ÜO£ÑÄ_IUUU Úü†Ú#µ ¤¹¹y×®]ÏŸ?Ÿ:ujffæ‰'òòò”””Fމ233c2™+W®ÌÎÎ>~üø´iÓrrr~ûí·¼¼<##£ØØØ³gÏYZZÞ¼y3$$¤¼¼ÜÁÁAWW7,,ÌÎÎ.22òï¿ÿ … Óé7nÜøí·ßrrr444¦M›&ÙGÕªTffæ±cÇp©ÚÚÚŸ~ú)##CMMmÔ¨Q’UsssWY2Œ²²²#GŽdeeáU¤ë Ó¤èÀñ?OŠ/ùd~ÐÜÜÜ™²éÅ}'NJŠîLán¢P(D§÷‘È¡òòr¡PhnnÞÞÍÍÍùùùƒ–¾õÓ&@P[[kdd„W455í©3wµÔ;«ÖƒQ0 ÷)~üø^8~PQQÑ™²» ¯u'w(óŒÐ?@îE¹  ä.P$»@‘Èûºº[¶lÙ½{7^´ô¼~9ŸÏïxz½ššš²²²ªªªä–F€´´´ÔÖÖ655q¹\‡Ãb±A}}½P(lllÄo:6›Íãñª««Åhà'ñc¡Pˆwퟰ3“4UTTÔÔÔBÊÊÊT*•N§khh(+++))©¨¨ˆ7;ÓÔÔd2™jjjx'UUUuuummmUUU| rE®s—ÚÚZÿ¸¸8¼~?Ùá(.—[RRRVVV\\\^^^PPPSSS]]ÝÐÐÐØØÈb±š›››››¹\®H$’íôÿRQQa0ÚÚÚ:::zzz†††ÆÆÆ:ÿellljjjhhØ[‚@">Ÿ_YYY\\\QQQ[[[WWWYYY^^^YYYSSS[[ÛÐÐÀb±8N'O¨¢¢"^ø¿¹( •J¥R©’9„xkÕŽUUUñù|„P(Ä1Áår»º8…ªªª²²2N€ðÛÜÀÀ¿Íñ?[ý_II®ÿ²€~@®×w™;wnpp0~œ””äââBR+É»òòò¬¬¬ììì”””ää䜜œšššVÝ'êêêø»”ŠŠŠ††††††ºººžžž––þLÔÑÑA1ŒŽ»¸ð·Ã††6›-N€8›Í®¯¯ÇŸÔÍÍÍÒ›/R( 333ssó¡C‡ÚØØØÚÚÚØØ’Ý„´‹Åbeggçåå•––æää”–––••ᯒGÒétÜu¡­­­­­­«««¯¯ohhh`` ­­­©©I¥Rµ´´( Þ ¿é´µµ)Š––Vg–«îA‡Ëå"„ZZZñ[»¾¾žÇã577³X,>Ÿ___Ïb±šššjjj¸\nMMM]]]CCCSS~ãKŸoA¥­­¿´XXXXYYšššëêê’÷b9Òõ]ä7;¾{÷®8q¡P(¸páÙAÉ‹¢¢¢èèèÈÈÈ'OžäææâOf```iiùÁXXXˆ?)LLLú~m~‡ƒ¿†J~-(((,,¬¨¨ÈËË»~ýº8¿QQQ155µ±±qww÷òòruuµ²²’Üœ€¾!òòò²²²²²²’““ß¼ySXX(þ‚‡{ŒŒŒ 4räHsssccc333CCCmmmź‘*y?H___†3Q__ßæøA}}}mmmyyyqqqYYYFFÆóçÏñ}1q)%%%===sss[[[kkëÁƒ[YY™˜˜À»t’üö»Ì˜1ãï¿ÿF=úðáÃcÆŒ)((022"³µH•——wïÞ½ëׯÇÇÇ×ÖÖ2 kkëÑ£G{zzZ[[[[[[XX(VWmiiéÛ·oñŸŠ”””ììì‚‚‹…RUUµ±±yï½÷Fíëë;xð`²ƒýVUUUTTÔ“'Ož>}š––Æçói4š±±±¥¥¥³³³½½=î´´´„͹dÆf³«««+++«ªªªªªrssÓÒÒrss‹‹‹kkk[ZZBt:]__ßÌÌÌËËËËËËÅÅÅÑÑQ±ÒAÐ%ýpO>ŸÏd2ŸŸßÝ»wétº³³sPPÐ’%Kú 0¹R__áÂ…cÇŽ¥§§ëëëOžlذÁƒÃج># KJJòóóóóóß¾}›žžž””TXXÈáph4š©©)~i\]]ÝÝÝ;Øß (œ~˜»äååY[[¦§§ã¿UãÆ300 éƒÀäDYYÙ¶mÛþúë/KKËY³fMŸ>]r?Û‚Çã½~ý:**êÞ½{ñññMMMnnn_|ñE@@$1ý‹Åª¬¬ÄC.‹Å“qðO544”””´´´h4š¶¶6F344ìÎÌ‹õ믿ž>}º²²r„ üñ„  cO¤§§§¤¤ÄÆÆ¾yó¦  €Íf9rüøñ“&M²±±!;FÐ-ý0wyùòåèÑ£wîܹyófü̈#šššÒÓÓû 0yžž>f̘ɓ' À”¥MAddd\»víüùóùùùãÆ œ1cFp²iii™™™‰‰‰™™™ÕÕÕõõõ’#!:IEEEWW×ÐÐpذa®®®C‡uvv¶²²zçoBjjª¯¯¯§§çþó¸¡X²²²^¾|ùèÑ£/^ää䨨ØL›6íóÏ?6lÙ¡YôÃÜ%!!ÁÝÝ=''ÇÚÚ?c``€'¶ Á\øï4¼'Û“’’ráÂ… .hjj8p`Ê”)dGÚÀáp"##oݺu÷îÝ‚‚<:›F£iiiáQäC† 177722ÂOÒét&“©¬¬ŒW%A555á¥MZZZ„B!ë]XXXZZŠçüã[[Û©S§Nž¸Pwú]HäH´ÏÙÙ9!! ˆ•+Wâƒ_¿~MÈ„Ëå.Z´¨Õ¥]\\d;[¯"+Ôv]Ð;wΛ7 ˆuëÖ-_¾¼½Ãèµh¿Þ ôÒysõêÕ¡C‡’›t†œÞ3ByyyEFFÖÖÖâq ï¿ÿ¾‡‡‡l§Ú±cÇÅ‹[=)ŸS z$T:Šúº²]t¼­ú÷u| (ò;¹ÔßßÿÊ•+óçωDt:ý÷ß—ùTmn&ðÉ'Ÿ]Åž• ˆ#GŽXZZ>ÜßßßÂÂâêÕ«ýøºÝ¹4è&x[õ×ë*øˆj¤¸xŽè›¾)Ôá=£¢¢"q»wï–ù*EEEÒëÏ®ZµJ(öM5;/&&Fz5Ï·*sG1‡ÃéNu§ƒZú»`—^èï ¹gTXX¨(o+‚ ¤×²ëƒ_oñ4I…{[)øèYW¯^uwwï›k¹xŽÿ'Î@Ò:GNû]ZZZð”„Д)S6lØ ó©ŠŠŠ„B¡xÊ’••Õùóç:ÔÉMäûRzz:•J•9T™;ŠY,–P(¯ëÕg×EijjЇlËðÒ(nß8ŸÏONNŽˆˆ¨¬¬$;Y*ÊÛ !„W——-T™ÇðÊ4¤¼­444ºó¶R,Šø! èoyóŒð/eee.—Û’ÇyFÁÁÁßµ%11Qò°6û‘Nœ8ª££cjj*‰ºÓ+õâÅ „PUUUßt‚uǹsç˜L¦ÌÅeªB½xñB¶ëvç>×СC7oÞ,ÛuwíÚ%^}U†K“B!ú·;sÏ(** !TSSCv°‚:¼=ÝîÜÃÁ¯^½’íÒÝy[ÙÚÚnݺµ·ZSž¤¤¤(нK…xû_½zÕÑѱ—ƒÔ[¹Ëĉ]\\~þùg“õëׯX±ÂÓÓóäÉ“ñññŒÇw‹ÔÔÔîß¿O¥RÎFÝÔŽñî R©2wŒwGLLŒ•••¢Ü¶À±{ #ñÖ…B!åm¥X²³³[ZZåCÞþ=¨·æHkii¹¸¸ „ììì ˜Lf@@@IIICCC¥X,ÖìÙ³y<B诿þòôôœ0aBDD„ƒƒÙ ¥òóóSSSÍÍÍíííûìÝK§ÓüñÇaÆõñuBƒ¾{÷nßWYfmHÿ˜˜XRRÒÇ¿cJJJ°³³S”ßm²P(R>÷doÿÔGë»,]ºôèÑ£S¦L‰ˆˆèà°Ã‡¿}û!´víÚéÓ§#„ÆùòåU«V‘ÝPŠ/ŽÞ÷×ÕÕÕ8q‪² :$=¼lÕªU+V¬ ;4ÐSSSR¶o$ñm¥XâCàÞ½{Ò#sáí/³^Ÿg”˜˜xèСëׯ#„†úÕW_µwd}}ýBnnn»víÂOz{{GFFÞ¹s'99Y$‘Ý\È.66ÖÌÌLQú·=(99YUUÞþ=¥ç%&&º¹¹}óÍ7êêêûöí«¬¬Ô××ÿŸkÃ<#@ž èyFbþþþ{÷î6mBˆ ˆK—.IþTrx³ŸŸBh„ AˆD¢9sæ´y tiæÑÀ™g„dLÑÍyFL&óܹs²•íÎ<£©S§NžßÌÌìöíÛ:::UUUIIId7HÐ[s¤¿øâ‹/¾ø¢KEòóóñc###ñŠ=ÊÊÊöööÙÙÙŽŽŽzzz«V­Ú¶m[BB¨Q£Hk¶Þ!‰„B!¾Y&ÙÊ655!„=zT\\,Cq¡P#½ªog°X¬´´4ÙÂ.--Å·èî–íw,33!ôÏ?ÿ0™Ì®–ÅkY=|ø°°°P¶°cbb”••e(Ëb±A÷š ¹ûà_0ÏèÝ$‡7×××kjjÞºu‹ .—ûÞ{ïÍ;—ÃáñË/¿üðÃø°°°0„Ðýû÷;9jZæ-_¾ò¹.144$ûEë˜gDŠ3gÎý{J²¾/À<£§(óŒúh]ÝÎÐÒÒÚ¼ys```bb¢¾¾~XXØÒ¥Kƒ‚‚~ûí·¡C‡ž>}allhРÌ›7O†²^^^3fÌØ´i“ e.\([CeêÔ©!ÙÞÑÑÑ“&MJOO×ÑÑéjÙªª*;;»;wîxxxÈpi33³ƒÈPÖÓÓOÉ ¿’¯Ü…J¥^»vmáÂ…öööû÷ïŸ9s¦¶¶6BÈÊÊ*??ÿôéÓ6lرc‡lïgùÇçóÁ‰'d>ƒle›››BÿüóOBB‚ ÅÁ“'Oe(ÛØØ/[Ø­Vj@þõ–ùw !tîÜ955µ®–Å‹>üý÷ßqqq2\Z(>~ü¸¾¾^†²¸ÖôWò•» „TTTBCCƒƒƒ8ðùçŸ[[[×ÕÕñùüààà[·n1‚ì{Kll¬@ ضm›Ìg­,A¡“'OÊÖ¹-nܸqóæMÊòx¼§OŸâ1I]Åçó!wïŠd}kàå©öíÛ'Û=#„Пþ)óÛêúõëÿüó ey<Þëׯ»ÕjÈ72ç;öÙ³gd·þeff&Ûz]ÕyFdö»<}ú´ó;vûöí¾¾¾$ÜÛ6mÚôã?жé*‡#Û=‚ ¸\®²²²l_¹\.N—mP!—Ë¥Ñh²^âóùƒÎÍÍ•­¹úÞÂ… KKK?~Lv ËãÇýüüd{kˆD"§¢¢"[¿ ‰o«iӦݸq£Û'ïþþûïY³fá%|äÜ>,ópFЊÜÝ3º}ûö–-[ªªª7mÚ$þÈ`0‡ìèz—½½½ºº:^)N E¶­ª«« ?~,Ûr¿ýöÛâÅ‹e(kgg°sçNÊN›6 å ø loçÏŸ{{{—””àÉJ]RYYidd)Û°Yuuõ?þøcÑ¢E2”:tèðáûÛpÈ1ùÊ]233g̘W„ܼyóˆ#>øàü#6›Ýïgý566òx¼¥K—Ê|ÙÊâeˆvïÞm`` [ñ“'OÊÖP^^~óæMÙú'ÌÌÌdn+0@TVV"Y߸ûú믿–aŠ5þ®µsçNÙÞV|>ÿĉ>”-léÁýÒ¸qãŽ;Fv€ò•»DEEI.es‘H”––æàà@v€½+%%E œ={Væ3t§ìíÛ·e.ûìÙ3™‡.%'''''ËV–ÇãÉ3 îܹC£ÑºóÖ¸|ù²ÌeÉz[¥¤¤È|]¢­­½|ùr²£$ y]ÝV¬­­%ÿ9fÌü &&FWW×ÈȈì{————̃]&…Xÿn®aØçc€ä­ßÅÓÓÓÀÀ@$999-Y²ߨ‰D7n\»v-ÙÑõ:WW×Aƒ)ĸ39ñÑG‘B¬Zµ VÝè{NNNæææímåííMvàÌ™3Ç‚ì(ú2çH·éúõësæÌ9xðàòåËUTTð ÝÚÚÚ‡Ê6äòF÷b”6sæÌðððƒêèè :ÔÊÊÊÜÜüþýû¸ÉÛ=#Ìßß?//¯¨¨¨ººÚÙÙ¹_n]ÙÈcî‚¢P(pw­ÈÝ=#€@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$}—»p8œ¿þúëúõë·oßþûï¿‹ŠŠÈ®;›Íž0aBuu5Ùô…ÜÜÜI“&‘EŸºÿþþó²£ W(õÙ•rssúé'‡“œœüàÁ²ëÀ€VWW÷ðáÃÂÂB}}}²cé-MMM¡ôôô»wïA¡PȪDGGGDD½¢ïú]òóóùå—sçÎ;wnúôéæææd×П]¹rEGGgÚ´iÏŸ?';2577‡‡‡ß¼y“ì@è1}×ï2zôhuuu„ÐÉ“'?úè£N–jllܲeËîÝ»qY褺º::öàÁÜûÂápÔÔÔÈŽ«/…¢¢¢ÚÚZ‡¼¼<*•J¡Pš››ÉŽ €žÑwý.ºººÊÊÊ|>ÿæÍ›ÞÞÞ)R[[ëçç÷믿nܸ‘´(& …B›Í®¨¨@­^½úíÛ·d‡Ö[ªªª:4zôh sçÎÕ××§§§óx<‡Cvh  ®®nüøñ,‹ì@À»õõ<£33³NÞr^±bE\\BèÈ‘#ÉÉÉ}ß:Å5þü}ûö™››3™Lü™Ãb±Ž;æàààïïÏçóɰçmذaýúõ/_¾är¹â 2™Luuu²£“SMMMøAIIÉ£GªªªÈ޼[_ç.wïÞ511éä‘ÁÁÁø1…B9pà@‡ Ph***ß|óMaaá7ÜÝÝBªªª|>ŸËå>þ¼¬¬Œì{ŸÏÇ)‹†††ªª*…BùðÃwïÞýêÕ«ÄÄD²£“G/^¼ÐÖÖ7nÜÝ»wE"Ùá€ÎêëÜ%''ÇÎή3GþñÇøÁèÑ£cccCBBp¯/t…B™0a¶mÛB_}õ•¦¦¦¶¶¶P($;®^abbÂ`0FµiӦŋ[ZZ†‡‡¯\¹ÒÉÉiàL°ê’††&“9kÖ,___„Pcc#ÙAwëëÜåÁƒŸ~úé;ãóù·oßFùùù=yòÄÃÃÃÖÖ6<<œ”6ôû÷ﯨ¨8xðàÌ™3ûåÌð}ûö±X¬/^lذ¡ówç2œÈ²ÙìÚÚZ„ÐÈ‘#—,YòæÍ²CéëÜE]]½3o§ââb@`hhB§ÓBzzz8›™©¨¨,Y²äòåË :uQ tðS …‚?0˜P($¢½Ÿúøø;vÌÞÞ^]]J¥"„x<Þ_ý5räH///œÍ9$§{àÛCß|ó®®.~†Íf§¤¤ˆîÝ»wâĉ'N\»víÅ‹õõõdG(>ŸoddMv Šäý÷ßß²eK{?¥R©‹/NOOôè‘¿¿?BHMMM(r8œÌÌLè}‘[r𻍍¨ „æÏŸ/~æíÛ·………¤Ïô’âââèèèþùç‡~˜0a‚ŽŽŽ‘‘ÑܹsCCCa:%èK ®®.**Šì@IUUUBBÂ;1bž²bÅ Ž»¸¹ä4wQWW§ÓéƒÆÿÌÍÍ­®®†¾P@ŠÏ?ÿüÔ©S·oßNKKkll|ñâÅW_}•””`hhøÙgŸA èKwîÜ!;“‘‘Ñùƒ¿úê«ÒÒÒ?ÿüóã?îäÌÐ÷ä4wQSSc04 ÿóìÙ³![[[zÈ¥¤¤4jÔ¨-[¶dddäççýõס¡¡...>>>OŸ>%;ºNáóùÉÉÉaFqeÈŽ¥ÇZ·n••Uïƒ÷⎈ˆÈËËkµ¢¹ººº©©éèÑ£'L˜àççgjjÚ÷m5©©©íÙ³çóÏ?_¶lÙÑ£GCCC¯\¹âããCv\ÿoÇŽ/^$; ¨lÐÓÓ ]´hÑôéÓÅ£Û¬2ÜdÇÔÔÔ¤[ (49ï‚ò÷÷¿råÊüùóE"Nÿý÷ßûòê±±±«V­2446lØÊ•+£¢¢wìØš””ÔÐÐÀç󛚚ù|~yyùÕ«WñŠ–½•’’’††ÆîÝ»_¼xQVVV[[[TTôòåËÐÐÐõë×ÛØØüóÏ?Ÿ|ò‰™™™••Õ¦M›úñžsòÉÚÚúÑ£G7oÞ …~~~;wî$äffÜ… È*ÛcFåêêúðáÃŽ«ŒwϨ­ M~û]ÆŒ3oÞ<üxÛ¶mNNN}pQ‡ó×_ýøã¹¹¹!kkëÀÀÀÙ³g>¼ƒRFFFFFF£FêíðÌÍÍwïÞ-ùŒŽŽŽ¹¹9BhÖ¬Yø™ŒŒŒË—/Ÿ9sfïÞ½?þøã˜1c~øá‡>ø¾õ™)S¦dffΘ1cË–-QQQ×®]c2™d…¸\n«gðü)²ãê£ÊN:õæÍ›dÇÕ“&Ož÷ᇶWåQ£FÁ>*’ZµPhrÚïÒÒÒòÍ7ßàÇS¦LÙ°aCo_±¡¡a×®]ÆÆÆË–-«««Û½{w~~~NNÎÎ;;N\ä½½ýöíÛ “’’¾ýöÛÄÄĉ'ÚÚÚö³n9§««ûøñãÍ›7GDD¸¸¸‘Ú²e‹xâž™™ÙºuëÄo±þGº²dÕØL¦ä$ÒU;v,Ù1Ê—V-&&ž™«è*2çAO W”••¥»ñzƒüÎ3âóù¿þúëÒ¥K—/_þàÁƒ[·neeeIÐæ€ç'NàŸêè蘚šöêÔ€”””aÆ!„¼¼¼ž>}JöXïÞÂårûí7MMM¶aüÁ‡\iiiÉÌ̼}ûö¯¿þèíím+ÁÑÑqܸqK–,9xðà½{÷š››ÉŽ· RRR´µµµµµ322zé0Ϩ“•íóŒ>|HĨQ£ÒÒÒ:®2Ì3"bĈË–-#:×bæ]½êèèØ«‰AèÝÜ%00Édž>}zÿþý7nܘ={vAAAÇEâããqW¶ššÚýû÷©TjzzzoÄFÄÞ½{]]]nݺóþûï÷jkHYYùË/¿,((øôÓOüñÇ÷Þ{¯¬¬Œì P(Œ‰‰Ù¿ÿرc™L¦ÝG}´jÕªS§Nåççëèèèèè <ØÖÖvðàÁT*511qïÞ½“&MÒÓÓûðï]»Öj²•|rttŒ‰‰QRRòññ!±ÙÛœ‡bfffooOrõUeû‚ <==%_;˜gÔ±N¶P½8V—Çã]¹rå÷ß§P(ÚÚÚG‹‹ëx©G‹5{öl‡ú믿<=='L˜áààг±577„‡‡ùå—û÷ïWSSë½vÚÚÚ§Nš={ö¼yó\]]=zDV~}üøñàà`6›255={ö„ lll¬¬¬LLL:(Ëårãââ"##÷ìÙchh¨§­­í³gÏÞ{ï½ñãÇÇÇÇãíºúX›óP6lØÐ/ùûß<£”””äädñ  åðáÃï¬òŸg„ Èt²Å€¢èÅ~‘HÄår7n܈Wã¦P(›6mêxñáÇñ´Þµk×NŸ>!4~üøû÷ï÷l`uuu#GŽŒŠŠ ?zôh¿üìîÀ¤I“RSS ß{ï½>^׸¡¡a÷îÝæææï½÷Þ•+W¦NzéÒ¥ÒÒÒ’’’óçÏ/^¼xôèÑ'.!•1cÆlÚ´)..N!ÌÞÞþñãÇyyy_}õ)HßÀ^µjÕŠ+Èn˜>ªìÔ©SÉJFgîܹÎÎÎ .=ztç«:|øðˆ#&OžÜÞñõõõxO77·]»vá'½½½###ïܹ“œœ,‰ºUCCØ1cØlö›7o&NœØ{Õ—gæææ±±±ï¿ÿ¾ŸŸ_^^^\‘ÇãíÚµËÜÜ|Û¶mÆ »zõjmmíåË—çÏŸÿÎd¥ßpss»téÒ™3gÂÂÂúþê’óP¬¬¬ÎŸ?èÐ!ñ3ýŒte—-[FvP2Z¶lYpp°øŸjjj’<|ø0??_ºÊ“&M";vÒ´j´6GžJÏÌRÜ_’¨wçqëÖ­Ë—/ãß444¢¢¢\\\þ½6Ü‹äÉ@ŸgýâÅ‹)S¦\ºt©¢¢âñãÇ666?þø£ä1’ãœýüüB&L B$Í™3§ÍÓ.X°@æÉ;wî}ZWW7aÂÜhÒ`ž‘BëÅ~:~öìÙððpñ3)))ÞÞÞí—.9r$BÿJ_¿~÷ \¸p!55ÿ4((ïssó»wï*Ö"¹}ÀÆÆæþýûƒ êñ3×ÔÔ477GGGCâÒÊ„ œœœú~šAGޱ´´>|¸¿¿¿……ÅÕ«WÉnŒ>ªìÒ¥KÉŽHFt:}ܸq3fÌ8s挅……“Éôññ ™3gNRRÞDºÊ?ÿü3þP€ètúãÇÿý÷–––öŽyF ­û]”””f̘ñÏ?ÿ\½zÕÙÙ9;;»±±±ƒýSôôô”””ôôôB999cÇŽÅ·œœœ ø|¾™™ÙíÛ·mmm«ªª’’’ººƒÁÀ©heĈ½qZƒ+W®]99õÝwßýòË/ß~ûmŸ]‘Çã}ñÅ’_4y<Þž={æÎKvcôEeÛ\ ^±,\¸ÐÑÑw ™˜˜¸»»KΑ”®²P(¬¯¯';jÒ|÷Ýw666;vìXºt©ôžbmÎ3‚žEÑ‹¹‹ŠŠJsss~~þÒ¥Kuuu;8ÞÁÁA<“ÍÈÈH¼†²²²½½}vv¶£££žžÞªU«¶mÛ–Ð{ÐK¦Nª®®Þ—Wl³‡œ”•fȪ¬¹¹¹BÏ044ô÷÷ïR•ÍÌÌÈŽš4ÚÚÚ±±±óæÍ[¹rePP··÷ĉ½½½íííñ7ä-[¶¬^½wÌXYYmß¾ÝÍÍ rEûà_}žQgHŽs®¯¯×ÔÔ¼uëA\.÷½÷Þ›;w.‡Ã!â—_~ùá‡ðax¾Àýû÷É— €¼xç<£ÚÚZé5W­Z%‡;[õéAÐý¸²¶Ê]U^^÷úõëׯ_WTTHðæÍóŒdžɹ‹$--­Í›7ãÉ´ÊÊÊaaaÍÍÍAAA¡¡C‡¦¦¦âÃ"""ŒÇGv¼(ŒÔÔT6›=צëÇ•°Uî*###wwwÉv|>?999""¢¶¶–ìAgõâx=yò$ 88X__ÿæÍ›B¡!dkk‹s—¤¤¤?ÿüóìÙ³t:ì`P0IIIÅÅÅæææöööýû¯Ú×_=}úôÔÔÔPÙ[åî#âèÑ£{÷îÅ›¤v¼e +ò•»P©Ôk×®-\¸ÐÞÞ~ÿþý3gÎÄS󭬬òóóOŸ>½aÆ;v)ŠÇÔÔT!zƒ{„¹¹¹xòð1«ÜÒ3³b_z€ÉWî‚RQQ >pàÀçŸnmmmll\WWÇç󃃃oݺÕKz íÍÌÈ“³ɹË;§åæææææâÇ÷îÝ»wï¹ ·Äï¦öÞV/R())QVV&; ÒàRÖûî*’s‚ :y䨱c·oßîëëKnÀ(¢¨¨¨÷ß¿¶¶VGG‡ìX †††UUU’ϬZµê矆¡B AŽæa·oßöð𰰰ؽ{·dfÃ`08ÙÑè`f–B“¯Ü%33sÆŒñññEEE›7o~ðàøGl6[UU•ì æûï¿/..–­laa!Ì›í¯¾þúëüüü»w捻¤dgg˰¿/ ‘|å.QQQ’ÛŽDGÿ»¼¯H$JKKspp ;@úƒºº:²Cè#ÕÕÕ?ýôÓŸþ)[ñ¬¬,oooñ;r±Ù샒E¿bnn>qâDGGGènQ8ò•»X[[Kþs̘1øALLŒ®®®‘‘Ù ÀBBBôôôôõõsrrȧ/\¸pÁÄÄääÉ“²íÅ8a„»wï=z¯ÿA®˜˜˜‚‚²£@.ÈWîâééi`` §§çããsæÌ<2W$mܸqíÚµdG€‚©©© Y¸páÇŒZ½zuHHHmm­††Fss3ÙÑõ:‚ ÂÂÂΜ9SZZŠ÷Añx¼ŠŠŠÊÊJ¡PøèÑ#¼Ó2ŸÏ¯ªªª¨¨(//¿uëVyy¹ø$<ÏÏÏOrêA111×®]ËÏÏþüù/¿ü"‰BÙÙÙaaaâ²<¯²²²¢¢¢®®.<<¼ºº!TVVvëÖ-É!¢­Jñù|\ŠÅbݽ{733?ŸššT[[›‘‘OU__ÿ÷ßÇÆÆæææ655‘ÝØô)ùÊ]˜LæñãÇëêêfΜ9oÞ<„PUUÕìÙ³ ‚X¾|9ÙÑ H^¼xaff¶lÙ²+W®444 „ðhw%%%×_w–ôòåK//¯qãÆ988?~?yîÜ9OOÏï¾ûnåÊ•«W¯^¹r%BèÚµk^^^“'Oþá‡ÒÓÓ=<<^¼xÚµk×wß}Ç`0fÍš…‡ß1wîÜS§NikkÏž=ûðáÃ7oÞlhh>òÂ… #FŒ˜9sæÚµk/]ºdccsùòåï¿ÿþòåËÎÎθ#GºTHHˆ——×üùóÃÂÂ<<<‚ƒƒBÙÙÙ"‘¨¸¸øÉ“'ùùùgîܹøUöôô,))!»±è[5R\>Þßß³qãFqÕP .ž#Äÿ‰3´Î‘»uuBþþþyyyEEEÕÕÕÎÎΰu²áñxêêêÇ¿wï^rròСCɪ444ܹs§´´!Äf³©Tê‰'8€¢R©†††®®®®®®âã©Tª‡‡³éééyâĉû÷ï3Œ}ûö!„Þ¼y“‘‘QWWghhH§Ó+++MLLJJJlllB=’>RGG‡J¥º¹¹ásZZZâñ| ÅÔÔ”ÍfwPÊÕÕU]]!4tèÐÄÄDéÚÙÚÚæååéêêŽ5êÓO?µ²²"»½èSò˜» „(Š……………Ù ¨¦OŸN£ÑÞ{ï= ‹¨¨¨{÷î)Är™=åòåË;vìßk^´hÑ™3gvî܉o–ÙÙÙIÁÃVBT*UIII hkkïÚµK|ƒÁ R©[·n]¼xñ‚ ŠŠŠŽ9‚âñxÒGââ¯^ Eü$=ÓA)===q$ÒqFFFš››ß¿ß5«=p6IDAT?999,,lÕªU|>?00ì& ïÈ×x—Þsûöíïþ w KÊÌÌ|úô)Ù1¶Mžcë<°uëV²éªªªí}èß¿Wà—_~ñóó?óÅ_ÔÔÔ\ºt !DÞ䵕/^°Ùl„гgÏÆ?aÂ„ŠŠŠôôteeå7 …˜˜˜˜˜˜—/_®_¿þÒ¥Kxï???é#Ñï‰ã“K?îj)]]]<²øØ±c û÷ïŸ6mÚÉ“':$9¸€@Nû]zœAS¦LÙ°aÃÂ… [ýôÌ™3¯_¿–\ O~ÈslýÏš5k222âââúàZl6û?þX³fM›ÿìYÖÖÖø6Ö¯jkkGŽ™““3kÖ¬_ýuܸq÷ïßÿé§ŸBAAA‘‘‘Ož<‰D‡ÆuÅììì.\¨¥¥õâÅ‹;wîØØØ8p`Ê”)S¦L)**Zºt)ƒÁPWWô葺º:FÓÖÖvtt õòò’>òÆááá\.÷âÅ‹</:::;;{ܸq™™™çÏŸwss“.zïÞ=@pñâEssóK—.effŸßÐÐ ‰‚xýúµ§§'.‚IÖ”ÇãÕ××S©T.—‹K™˜˜àç)Š®®îÓ§OÝÝÝ%»åy<^CCA ãÕ«W^^^úúúeeeqqq#GŽÃnüöN›ššZPP0zôhuuu‹¥¦¦ÖfTm¶CÇ¡JëR3¶÷;ЪñrŽŽŽúúú’ÿÔ××ïê¥Å—èL³´ú½!‡Ãår †­­­äóêêꎎŽâ^¸pÁÔÔÔÉɉF£«ªªº¹¹µyd'u©”ø]‰GíÐétXm Le¼KNž<ùþûï/]ºÿsöìÙaaaªªªßÿ=Þá¢Í¥Ö­[÷óÏ?S(ÿW¯^¡öfh³øìÙ³?ûì3É0Úzô诿þÚæ°_@ï’Ãõ]zIQQBèÌ™3Ò?Ú¸qãĉ ‚ZZZ7nÜ âÖ­[ZZZD[K)¼xñ‚Á`à­[·â5ˆvfhs%†øøø´´4ÉÚ[°A[› K´wQé¥#Þ¹ „ôúA´YÓ9sæâRkÖ¬™6m~Üæ²’çï`­‹ö_ú´qqqJJJ555AÜ¿!Ý^Tí-¡ÑA¨AAA}ô~,C3¶ùr´ÙŒ’ËuHÿ³«—îR³Hþ^)úÛú.}¦ººúÉ“'³gÏODTRR*++{ùòåÖ­[“““¹\.jk)…cccÜc?|øðíÛ·WUU´¹0C›+1ˆû™ÅÚ[°A[› Kà¤/*½t„AÇ BH¯oÁãñ?~,]SÉy›’k¥·¹l†äO;X뢽Ɨ>í/¿üb``€o·áÎvO›Qu°„F¡ŠÉÖŒÒ/G›ÍØñ/gW/ýäÉ“Î7 jgò-(„»<~üXÜ?±Ùì?þØ××wõêÕOŸ> GUTT´ZJÁ`´´´à"øÆs 3Hos%†w¦¥¥%½°D{•^:¢¨¨èa´ZßBII©½šÿd{³Ä:î?ï`­‹ö_ú´@§ø&UKht¦«_¶f”~9:ø…AEFFúøø´úgW/Ý¥f…6€¾{á?âõúúúýû÷ãA‘¸ÿ !tçΧOŸ®[·NGGçÙ³gB¡P(J/¥0iÒ$¼_B(11qìØ±ZZZ¨…Ú\‰áùóç­&â¶·`ƒøËÌÌ|ûöí?þ8<<¼Í‹Îš5‹Éd®\¹2;;ûøñãÓ¦M£R©Òç—l¢;wî‚{÷îݽ{÷ùóç/^Ä“Y¤kª¥¥µoß¾˜˜˜ÐÐP›‡677WVVž8q"//OIIiäÈ‘­ÚÿÆ¿ýöŽ366öìÙ³EEE–––7oÞ )//wpp2dˆtãóùüS§NIžÖÜÜ!´qãÆÌÌÌŒŒŒÄÄÄåË—›šš¶Õ'Ÿ|Òªœ¯\¹Ò^¨8Μœ ///33³.5c{¿S§N•nÆæææ]»v=þ|êÔ©nnn­þÙÕKw©YX,–ø÷jĈ}óIÇÿ<)~¼ä“EøA'·¸@ë»t‹Å*,,´±±a0€B¡…Â6—Rhnn.++2dHÇCÚ\‰¡©©‰F£©©©u|˜¤–häÒï<{ë[´YS6›]RRbmmÍf³E"‘ššZ¬"Ýøí¶¶¶¶±±QOOOSS366ÖÓÓ³ƒ¨d[xC¶fìø<­šQ¼\G›ÿ”áÒ]j QwÖwÜEa,[¶LEEåàÁƒxa‰%K–üþûï=8?óóÏ?¯©©ùûï¿É®hTUU>{öÌÛÛ›ìXä4 @þu'w@ã]]¯.,Ñùõ-äGyyùÎ;gÍšuáÂ…Vc®2h@¿ý.èkÐï€r(È] H w€"p¹KbbâÒ¥K§M›ßÞ1™™™OŸ>íƒ`8ÎÓ§O{jÀòÁƒ¶nÝÚA-Š‹‹¥GgË›VQ¬àô¶—»¸ºº=zôæÍ›µµµísæÌ™;vôÈåØlöÁƒÛûéÊ•+W­ZuúôéNß±5kÖèè舷®Ell¬¯¯oiiiÏ5g·îdEz/xŠh .¯©®®.¹h¬´½{÷ŠwÎ릘˜˜‚‚‚6>~üø?þøcÏž=¹¹¹x_åŽï ¼Sq›µHOO yõê•x§ÀÞ®`wHV¤÷‚ ˆV¿KRRÒÝ»wñvƒb©©©·oßwÃp¹Üªªªªª*„PNNNFFFFF‡Ã)))ÁñaÙÙÙaaax?<>ŸwÚc±XwïÞÅûáá3ÕÖÖfddTWW· fÒ¤I·oßþâ‹/pâÒêxWQQQYY) =z„7êkuéöHÖSRRzÿý÷äa­NU__ÿ÷ßÇÆÆæææ655IŸ¶ÕñW0==ýÆx#À6›WÉår+**ÊÊÊÚ¬N @¹Ë?ü°pá”””¥K—Šw“^·nÝÏ?ÿL¡Püýý_½z…:yòäûï¿¿téR„ÐÓ§Oþùg‡“——7nÜ8|g×®]ß}÷ƒÁ˜5kÖƒBBB¼¼¼æÏŸæááŒÊÎΉDÅÅÅOž<‘^á´ÕI¤?w§çwß}·råJ¼{Q›¥Ú$Y‹öJµz’ÃáÌ;!ôâÅ OOÏ’’’®,yðúõë×®]‹·úKHHh³©Ïž=ëêêúÃ? „Ž;6zôè+VH×¥G‚ÐÔHqñAô „Pß\ˆ ˆÌÌL …MÄ£GB/^¼`0AlݺÕÙÙ¼qãÆ‰'âÇsæÌ™7oAgÊ”)"‘())‰J¥VVVqüøq{{{‚ –-[fllÌb±‚øüóÏ}}}qñY³f­ZµJ:ž6O"}üÒ¥KuttBCCú¨U-Ú,%ýd||¼¿¿?®ÂƳ²²d{ùò%F+//ojjb0¡¡¡í5õœ9sñã5kÖL›6­UEz$xòÆÅs„ø?q’Ö9e¼Ë«W¯‚pttD¹»»ã'?~lllŒ‡V >|ûöíUUU’ûB¯\¹Ò××÷§Ÿ~ŠŒŒ\²d …ByôèƒÁØ·oBèÍ›7uuuT*ÕÕÕU]]!4tèÐÄÄÄŽãió$:::­£R©†††®®®®®®¡C‡u¦”¸l×’~ÒÀÀ //OWWwÔ¨QŸ~ú©••• c‘‘‘&&&FFF¡††•={ö¼³©)J'ª«ÁèOJîB¡Ph4šªª*BH?00P†€B---<¯Uö×ÔħˆõRðú“2Þe̘1¡ØØX„ÐÇB<oÒ¤IxŒ-B(11qìØ±ZZZè¿w²pA …²råÊ#GŽØØØÐét„ŸŸ_EEEzzºŠŠŠ²²òÆ…B¡dÉǺººxŒí±cÇ$ãió$ÒÇ¡­­ýÎRbm†Ñf)é'ãââöïß?mÚ´“'O:t¨ÕXàNŒùøøTUU={ö !wùòåöšÚÀÀæmjjzùò¥8ãéÙàô'´õë×·zêÜÅ¿V,_Ö×Þ¾}û¶mÛú¦ž::::::AAAYYYååå¯^½ÊÌÌüè£\\\öîÝ[VVöÏ?ÿœ={VWW÷æÍ›GŽÉÊÊÂãLBööö¿ÿþû±cÇðŸ[333&“¹råÊìììãÇO›6-33óرcyyyFFFµµµ?ýôSFF†ššÚ¨Q£š››wíÚõüùó©S§º¹¹‰ã‘>‰³³3BHòøÌÌÌ'Näåå)))9²ƒRØ7~ûí·œœ ²²2q-¦OŸ.]JúTT*õÆ YYY·nÝúþûï%Ó¦Î,® ……EKKËš5k¢££Ÿ_GGÇÐÐpðàÁÆ 4h©©é!C† Òjã‘êêê+W®ôRsss9N«'ù|¾dPSSSSS“ä"à ƒN§ãä†Ïç3™Lmmm“AƒY[[™˜˜àθÕÕ#ä:w©­­õ÷÷‹‹‰D‡&;"‹•˜˜—œœ›››+ UTTZ U‘üÐWUUUVVæp8 cذaîîînnnŽŽŽííäG}}}nn.†’›››’’RPPPYYYWW‡ÿNS©T6›-ùê#„Úœ#F¥RUUUétºH$jllTSS3332dˆ¥¥¥••Õ!CLLLLMMÍÌÌ$SX‹UXXXXX˜ðöí[Ü…SVVV]]wwAµ´´ˆŽê)ƒFMš4©¡¡¡ºººªªª©©‰B¡àN œšHvb'7t:]YYYII gi<ÉdâDÍÌÌÌÂÂbРA¸ÃÆÔÔ?^à H“ë6Z±bE\\BèÈ‘#_|ñ…‹‹ ÙÐωÕÆÄÄÄÆÆfee±X,uuu>Ÿ/™H~Xã;|>ŸN§ÛÚÚº¹¹yzz::::88˜šš’]!Ð6‹…ྒྷÜÜÜ‚‚‚šš*•*îáñx’½&­:T0 …¢¡¡A¥Rññ4ÍÌÌ ç(Æ ÃÙÉ!C¬­­%—LŹQ^^^\\\AAAZZZqq1¾ÇD§Óñ é.œ^…w}ùí·ß$7såñx555uuueee¥¥¥uuuoß¾ÍËË«©©)//¯®®njjb0 ƒB¡à;âû¤!@Ð*Ýilllll,((À{Ô „”••qzD.Îd2õõõñ޶C† 155ÕÑÑ155511Áú¬Mä–üæ.wïÞ Æ)Ê.\¸@vPô+---8YyòäIFFFuuµºº:…Ba±Xâ?Z â" …ÉdÁçó-,,œ½¼¼¢££³²²ÒÒÒÈ®øB¡°°°0//' ™™™©©©eee555\.WMMÁ`…B6›Ý*Ehsœ,ƒÁÀÛÙr¹\@```0hÐ ›Aƒ‰;Q$»ÖZZZÊÊÊħ³³³‹ŠŠ*++Y,–ªª*F“þ{/ ¥ïÝ „ÔÔÔ”••‹Åêa%xU4Ü;¨««kfffnnnaaannŽo÷øúúàÝd%ÕÕÕá.--ÍÏÏߺuëØ±c…Bag’„P«.L„P}}}}}}NNþ§drƒ'^uœÜ˜˜˜ôûa7ò›»üñÇøÁèÑ£>üðCKKËAƒ™››4HòOxEEEqqqNN΃222ðh˜òòrüg›F£á¾‡'NH^Hzç …¢¥¥…¯Îçó›››555MLL¬­­‡ ‚Óˆ¢¢¢ï¾û®7Fàin‡Ãá”––¦¤¤àçi4šxP‹P(jjjšššÆÆÆ&&&fff–––8iptttrrÚºuëÁƒÝÝÝÅÕ,//¯¨¨¨¬¬ÄùMQQQAAAEEEmmm]]]KKK«ûJ­ë8¹Á9¥x44ÎJŸ?.¹Û]ÿ#§¹ ŸÏ¿}û6BÈÏÏïîÝ»¸/:<<|É’%d‡@?QWW×ÐÐÀãñ¸\®øIUUUUUUü­×ÖÖÖÝÝÝÝÝÝÑÑÑÅÅE__!Äf³ÓÒÒÞ¼ysñâEÜÝÂf³ ‚€›ôòæÕ«Wx‹{é¿…ø.’’¾/ÓÒÒbhhhjjŠ;Qpj‚‡bhjj"„´´´>ÿüs___Ü»“‘‘‘››‹ÿs¹\œîàþ’VY¬äo—þs‹Ç͈»pðÈV[[[ñm¦6GGݹs§[w–Hváû>ÅÅŸ1ñ8e<1 ·¶¿¿¿‰‰‰±±1nIœåº¸¸µšzÂf³qZSUUU^^~æÌ™ììl///<ħ¦¦F àFá~2ÉFn5à“’’¹ Š‹‹¡¡aHH~Áôôônß¾ ¹ =¥²²’ÇãijjâŽh+++777wwwgggGGG „›ÍŽOKK ŠŠÊÍÍÅ£Ò_!w‘7ñññ!mmm*•Š3T333Ù-Ú‹äôãßwüæ›otuuñ3l6[ü{è>ükóæÍÓ¦M³¶¶Æ³6ŠŠŠRRR®\¹””TPP€ï8477‹¿êIŽ=¤P(jjjx .ÙÿÃÍÍ-))é÷ß777Ÿ¯¤¤„‡¿Œ9ÒÉÉÉÉÉ „À^¿~Ý/ÿb)´„„„‰'R(>Ÿ¿û‰ÚæDü7O¼H¿ŠŠŠ¡¡á Aƒ^¾|9eÊ”éÓ§<ßîn6IJJJ¦¦¦¦¦¦®®®...«W¯^»v­x¬.B¨¥¥E|»§²²²ªª*77·¸¸÷”àäFYYß–âp8x ’ä%ZZZZ¥;uuuuuuÙÙÙè¿™ø®VKK‹œwquEz3q߉“’b£ûâÚðaÈ“ÒÒÒ>¸Ðp¯‘âÇïý;¾y'’'&ÚÁáph4Z}}=AuuuøÆü²eË€”ëׯ;;;qöìÙ1cÆt²^øQMM küàƒ¶nÝzíÚµììì–––.°fÍ@—àõ²MLLð§^Yµ§Ú¤¥¥eöìÙ­fÒŠD"NýŸÿüÇÊÊJz!W6|øð-[¶¼yó¦§"ï)ãÇÇó‰ð,CCÃáÇO:uýúõÇŽ»uëÖ›7oêêê:s*MMÍÓ§Ow3™_ÜV¿'âé6=ÞbøîL^^^wN‚'ÅÅÅÉ|†Õ«W»¸¸H?_QQ‘’’òèÑ£¿þúëàÁƒkÖ¬™1cƨQ£† ¢­­'r3™LÜ!º~ýú.]4<<ÜÆÆ† ˆ«W¯Š›ZžÉé=#‡·oߺººnݺµ²²!Hv\ôxµ¤“'OΜ9SrEö¾Áãñ¾øâ‹‹/J>ÓS'olltuu}ûö­ä“4­K}½"‘èÊ•+›7o~ûö­™™Ù¨Q£–/_>lØ0<Á•Ïç—––fggß½{wÏž=;wî7nÜîÝ»GÕÇ-Ùž‘#G¦¤¤ÜºuËÜÜÜØØ˜ìpd$ý{"455à®@††††††ŽŽŽíPSSƒÇêúùùyxxoï’ÓÜ!äååY[[{ôèQ„Ðûï¿ßï_ úž]ß'.¡;vHþAêY“&Mj•¸ ÿÎè¼O>ù$&&»577oï°}ûöq¹Ü°°°Ã‡¿ÿþû_}õÕ F/·ß»©¨¨¨««{zz’H·´ù{booC¤éééééé!„Ä»>õcò›ºúûû_¹reþüù"‘ˆN§ÿþûïdGè1½·ÅGmmí«W¯¤ŸŸ•JMOO'»•ÿ¯Í©Ò[ÀÈpKKK²+×nl]¦Ô#'!ŸÏONNŽˆˆÀƒ»¤Íy^¤Lgë ‹ºoß¾ÜÜÜ©©ªª*Þt!äçççíí½wï^²kÙßôV¿‹–––‹‹ BÈÎÎÎÀÀ€Éd”””444tPŠÅbÍž=/óð×_yzzN˜0!""ÂÁÁì†ü«G¦~Èóü‘?ÿü³û±êÅZºtimmí”)S:^öàðáÃ8‡]»víôéÓBãÇ¿ÿ>Ù­ø=2õCžçHÏ`!¶9Ißãñx‹/^¹r%N\ð3ÊÊÊï¼×/©Gæyõ¶ÆÆF›ÐÐPÉh©TªxÖ;EGG¿³¦=zöìÙÆÉ®nÓ‹óŒÝÜÜvîÜÉd2×­[WZZ*îFû÷Ú0Ï'0Ï!„*+++**„Ba›?•ç¼ÿ~üdLL AB¡pëÖ­x•@ÌÄÄäèÑ£]Ýi€~¯ïçá©§NJOOï|©ÂÂÂÉ“'9rDò$=>Ï3êÎLLL¶lÙÒÍØlmm׬YÓ7dÚ$Û<£AƒIP‹_²NÂãây^ÁÁÁ§Nêûè‡ÃióFØœ9s:’gÏž!„>|ØÍšJÏTÒ××ïNí`žQð÷÷ÿøã322BA\¾|yÁ‚my÷î]„Є ¼¼¼‚˜?~HHˆäeee_ýõ‹/.^¼}6OýøùçŸ=<<>ùä“uëÖ 2¤ƒã‹ŠŠ~úé§“'ONŸ>ýóÏ?—< ÙUi›¶¶öĉ»yMMÍõÔ½<Éy^L&sóæÍK—.•ŸÏíôÔ-777???™kÚæL¥úúz²[HÞõÑx—={öhjjÆÇÇ·wLvv6BhÍš5¡›7oâÄeÆŒ ,ptt\´h‘––BèÒ¥Kòvß"žU‘••ÕÍS½xñâùóç666NNN;wî¼ÿ~EEE]]]]]]nnî“'OöîÝëééieerâĉ¿þúKUU•ì6èSÝ™°#ñë[UU%Cñ-[¶ˆ·Â±²²:þü¡C‡º¹9Î|ÐÐЖ–ÖÕ—’’R```BBB77¢’¡¦Š5'K~ôb¿KKK úï ­aÆ …Ÿ~úIòP+, !4räH„ÎN‚ƒƒçÌ™·xñâ .”””Ìš5+:::((hÖ¬Yjjjd·Ф›³*Ú4|øð7oÞ¼xñâÀ?þø#›ÍnuFóôôüã?/^L§ÓÉnƒ¾väÈÉ ;çÎë½õ]¤__MMÍ®žä믿ž>}zjjª¹¹¹½½}l駤¤äææ–™™)o7#¢££>¾©©‰Ëåêëë[[[»ººjkk“]{qãÆäädñ3½º6]›¯oss³ §ê{yƒ.**êŠw‡——׈#ð㞺±Õ¥š®]»V!ædÉ!ØÏÿ‚yFï&9Îù·ß~ÓÖÖÆòÿøã&“Éf³ñ–/_~õêUüøöíÛ¡ƒvg6ýÉ;ç …ÂîϪP=2Ïè—_~éfm.ßÕ ;”ÝæÍ²^ßVŸíÕÕÕL&3##ƒ”`Ú†‰D’O~øá‡]šžƒçÕÖÖÊ\SÿY³f‰çdݼysèС­¢’Á@˜g$G;,,\¸P$áÙFŸ~ú©““ÓÒ¥KqögooŸ’’‚Ã=l ѸȉW¯^A×t#¢Õ3½·6ÝÖ­[ñøBIròú¶´´,Z´h̘1vvvdÇòݼ±%sM½¼¼6mÚ4mÚ´I“&Éù fù!G¹‹––ÖæÍ›«««•••Ú››ƒ‚‚BC‡MMMŇEDD7ŽìxP­þŽöÔ¬ Ð]]]ñmñžš°Ó‘H$¹¬ü¼¾B¡påÊ•QQQ¿üò ¹‘tFmm­Ì»öHMÅC}e(ÛÇÓÙH×ëë»tIPPГ'O‚ƒƒõõõoÞ¼‰µ³µµÅ¹KRRÒŸþyöìÙ8a€nzøðá«W¯ð¬ Òÿªõ{ÚÚÚ‹-š8qbNØé€““Ó¾}û"""äçõ­­­]°`Á½{÷BBBäOºšššððð;w’[Sú~©ý§¤ûüúùÊ]¨Têµk×.\hoo¿ÿþ™3gâ VVVùùù§OŸÞ°aÃŽ;ÈŽÅ#¹ˆV?–––VUU5räÈÑ£G9røðáC‡ííÔ¡M}¼6ärp¤»víÚW_}UQQ±víÚÙ³g“Î;tçÆVXXغuëzª¦]íûáñx_|ñ…äÍA§©©iooßWG2çyxxÄÇÇ“Ýø—¶¶v]]]\HQç½s#•¢¢¢§OŸ>|øðÍ›7ÎÎα±±Ý} ÀÀ$=!¢›3gN{ë/(++khh())N˜0aÛ¶m7oÞ,,,lu†™gdkk»uëÖ¾©ò¼yó|}}ûæZ[{РA•••dÇÒ6ñ<£ššÜ7ÒÕ“à·UwjŠçáÇB¡ðÃ?œ8qb—ÎÐ#ûOµÒ7‰K7É×=£V$—HÒÖÖnjj";"€¼sww¿}ûöÈ‘#9ަ¦¦P(¬««#‚Çãñx<„Peeåƒ~üø={öÈ|’Y³fu³¦Ýê»eË–Õ«WãòVVVÛ·oÿä“Oú¢íÈ&_¹KffæŒ3BhóæÍ#FŒøàƒðØlö@Û ƒøøøªª*cccgggoooww÷€€¼ —ËMIIILLLHHˆŽŽNKK£ÑhjjjÍÍÍxù|¼…B©®®&»ŠM¼[¸œ4hÐåË—Û\H°“-ZÔJJJdîûéý§‚|å.QQQ8qÁ¢££qî"‰ÒÒÒä–€têêê4­¢¢¢¢¢âÁƒ***t:Íf›˜˜à™VNNN3fÌÐÓÓ#âíÛ·‰‰‰III/^¼HJJª¯¯g2™õõõdWBá999‘»õÈížaÆÉ\¶¸¸¯D×¾ŸÞØJþÉWîbmm-ùÏ1cÆà111ºººFFFdwÎÎÎxC|WˆËåâ1ÅÅÅÅÅÅ< Ñh\.רØxøðáÞÞÞnnn+V¬Ø¾};B¨¾¾>11qúôéžžžd×C­]»V__Ÿì(Þ­›7¶ŒŒŒlllÌÌ̺F÷û~ ùj,OOO‘Häää´dÉ___„H$Ú¸qcP€Ø¢E‹(JBBBLLLzz:•JUUUe³Ùø®xØNeÂÃà FKK ƒÁ°µµõòòòñña0***d×Cíß¿Ÿì:å³Ï>ëNq[[ÛìììnÆ@¡PäP³’¯Ü…Éd?~|Μ93gΜ7oBÚ%bùòådGPjjjË–-ÿ³®®.555...***))©  €Á`P(‹E„H$½2 11111ñüùó|>Æ û÷ï···÷ññ1b„£££••U{S¯ÂQWW§ÓéòpckРAò?¨YÉW9sfxxx``àúõë TZZúÙgŸ]¹reà Aô oooooïU«V!„AVVV\\Ü›7obccãããù|¾²²2‡ÃÁƒíðÌ£–––ªªªªªªçÏŸ«««  …biiéíííéééàààáá³—¯¯o^^ž<ôvXZZ’‚B’»Ü!äï—WTTT]]íìì [z Nwtt”܈¾´´4---55¯®QZZª¦¦FDss3,•žžžžž~ñâE*•ŠGÌ8999ÒÓÓÓËËËØØ˜ìÊ.“ñ­ZZZd‡ ä1wAQ( ²ôs¦¦¦¦¦¦&LÀ3|>?;;;..îÅ‹/^¼ÈÊÊ¢Ñh £©© ¯¢!1SRRRRR‚§2 …Bfee5f̘1cÆ8::`?<ÐM.\€/粑ÓÜЃð„Ú wÌ,^¼!$ÒÓÓ“““_¿~ýâÅ‹ôôt@ y©¥¥F¥¦¦¦§§_ºt©¥¥…Ë妧§÷MÌvvvºººd·è2www²CPT»ÐÿõÈ„ˆ‰N§»¸¸¸¸¸ˆ— +++KJJJJJzõêUBBBii)^«·±±ßcb±XøH¼Ò]ضmÙí@Ÿ‚ܺÀÄÄÄÄÄäÃ?Äÿär¹©©©‰‰‰±±±±±±!ƒÑØØèááAv°ôO»€ìTTT<<<<<<Ä«àççç''''&&â…=rèI––––––S§N%;ú-*Ùtä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘@îE¹  ä.P$»@‘(‘€Â …ååå………l6›Ëår8ÉŸ2™L&“©¡¡¡©©©¯¯¯©©Iv¼@ÿ¹KÛ*++_¾|™––—––VZZÚØØHD'‹«©©YXX¸ººººº:88 6LCCƒìj r—ÿÇáp"""®]»öèÑ£ââb„’’’±±±µµõ˜1cÌÍÍŒŒLLLÔÕÕUTTTUU%Ë655555±X¬¦¦¦²²²ÜÜܼ¼¼¢¢¢W¯^ñx<„…B4hиqã&L˜0~üxSSS²« ($È]B(""â§Ÿ~zúôiKK‹““ÓܹsÇŒãîînaaA¡Pºyò‚‚‚ôôôäääÇߺuëüùó ÅÎÎnÑ¢Esçε±±‘<¸©© !=4@{(555­žò8))6šìÀúHhhè¶mÛrrr>úè£ øûû÷vÞPZZúèÑ£k×®=~ü¸±±qÔ¨QëÖ­ûøãi4ZSSÓàÁƒ)J~~>¤/ý€H$jhhhhh`±X¸û SQQa2™šššZZZT*Œ— DýFŠ?¾ŽTTTt¦ìÀíw),,\±bÅ›7o¾ûî»Å‹kkk÷ÍuMMM-Z´hÑ"‚ ž>}úÛo¿ÍŸ?ßÄÄdß¾}þþþ¡Îªò#???%%%333!!!##£²²²¾¾žÅb½óÕTVVÆC£lllœœ† 6xð`²+òkàæ.‰‰‰žžž!!!jjj¤@¡P||||||ššš:´|ùr++«Ç2D:]8NUUUUUî#9ýŠÁ`0™Lmmm &“ibbÒýpr¥´´ôöíÛwîÜyöìR©úúúæææ®®®æææºººJJJ­^P‡ƒ‡F•——×ÔÔäåå•––&''Ÿ={ ¬¬ìììèŒ~ÏH~°X¬íÛ·ŸŸF£1bÑ¢EÓ¦M333“.‚`€èºþùç?ÿùOyy9F[¸pá¡C‡tttB›6múñÇ•””öíÛ·fͲÃýYwîAî"_^¾|ÉápüüüÈäÿ%$$ܸqãÖ­[©©©|>ŸB¡èèè <ØÖÖÖÒÒÒÄÄÄÐÐÐÐÐJ¥jiiIäñx,K<à#++ëíÛ·………¥¥¥õõõøMMÍ#FLš4iìØ±rÞ1SRR²{÷îsçÎéêêΙ3gÖ¬Yï½÷Fë¥Ëµ´´¤¦¦FFF†„„ÄÆÆòùüqãÆ­[·îƒ>À£d`€MFF†›››³³siiiII BÈÆÆæŸþqpp˜2eÊ­[·ììì ž?îîîNv° ß‚Ü¥Ë8Ž¿¿EE…†††’’îØ×ÓÓSVVÖÑÑÁS ÕÕÕ †¦¦&FÓÑÑ¡Ñhššš C]]]UU·ìΗl9WXXøóÏ?_½zµ¢¢bРAÞÞÞ¾¾¾^^^Æ SVVîæÉÒÒÒRSSŸ>}UPP ‰tuu§M›6þüñãÇ·ÁJzï‚H$úý÷ß¿ÿþ{ŸÕ«Wûúúöqšõíy\TåþÇŸÙ‡™YEÀH!D@4‘ÜÍ…²ÄÔ¼f^½¥‘f‰¦–¦×,5w½šKj.™š h‹J¸dŠY(?ApK`öåœóûã[çrÙDa8ø¾ÿàufæ™s¾ç9‡g>ç»<Åb9uêÔÆOœ8áçç·víÚ!C†€v!„ܽ{—çÚÅ`0€lÍËË{øðaII‰F£Ñh4%%%Ð@"‘¨Õj¥RéâââààкukŸ6mÚøøøxxxpm~scùòå...'N¤izûöíS¦L±X,jµú§Ÿ~êܹsRRR¿~ý>|÷îݹsçrm,ÒlÁ\Ý'¦¬¬ìâÅ‹&“©–6"‘H, …Bø‹Å Ã0 CÿÕj¥iZ&“‰D"…B!‰@î( GGGCJ¥ÒÍÍ òd2™B¡P(2™ ”“³³³H$R«Õ‰D¥RqÝ7$33sîܹ?þøcÇŽgÏž=tèÐvíÚ5ì!Ôju÷îÝ»wïC1 çÏŸ?zôèáÇwîÜééé9uêÔwß}×ÍÍðûpóæÍøøøS§NuíÚ•¤RéàÁƒ\RR²~ýúqãÆûí·wïÞ%¼Œ=|øðìÙ³üñGJJÊÍ›7«>#988…Bö†§(Ê`0Øl6‹ÅR©¥\.÷õõíСà /¼Ð³gψˆˆJ³+!OŠÍfS*•Z­6))iôèѯ½öZYYYTTÔÆ'L˜  õz½XÜB þÓ¨~­V{æÌOOψˆn£mÚ´¡iºq'd2™P(‹Å@(ÂéC EQ ÃX­VŠ¢¬V«Onn.'Ýb³ÙV¬X±lÙ²Q£F}øá‡!!!oCnnîöíÛ·oßþèÑ£éÓ§Ï;—¦é¦â]h4´Zí’%K6oÞ¼~ýú±cÇrmÎ_Ð4ýÛo¿íÚµëøñã‰pvvnß¾}XXXHHˆŸŸ_›6m|}}½¼¼j´™L¦¢¢¢>xðàÊ•+YYY4M‹D¢ÀÀÀ×_}èСÏ?ÿ|Õ"sνtüçâÅ‹½{÷nÛ¶íÍ›7£££>|ýúõ¡C‡Þ¾}›×èÊ•+—.] âÚØæ $öêÕ‹kC¸¡iÄŒŠ‹‹_y啯¿þúܹs÷îÝ[±bgFˆÍf“H$£G.++³Z­†¢¨òòr›Íf0¬V«Åb±X,EI¥R@Àjø:x_@sX,–¯jæªLZ£ÑL›6mîܹœX Ã;vìßÿþw^^ÞæÍ› Dðר ÉÉɇZ¹r%çyB>\¶lÙ®]»4MHHHttt÷îÝ#""<==ð(z½>--íÂ… §N:wîœN§S«ÕcÆŒyÿý÷YÍ/]“`ÕªUsæÌ¡(ê“O>Y²d !¤¤¤dÚ´i{÷î¥iÚÓÓsË–-ü,hN8p`„ z½žkC¸¡ih—¥K—fddìß¿ßd2¹¹¹ýù矾¾¾œõ! .¡¼¼œ¢(VÜX,½^o4M&“N§³Z­eee6›íáÇV«µ¤¤Þ×ëõ©j³Ù´Z-MÓƒ¢((‹Å"‘ˆuÀ€4Mƒ÷Åjµâ/,GŽy÷ÝwGŒñå—_r˜]´lÙ²ß~ûM©T* ™L¦V«E"‘³³3„«&B± ¸îBûòèÑ£¹sç~ûí·íÚµ{ÿý÷GŒѺuëF8.MÓW®\9~üø–-[²³³Ã–-[6xðà&”Ä9ƒÁ`0@d–E¯×ÿöÛo;wnX݉T˾}ûÞyçƒÁÀµ!ÜÐ4ò]ÊËË¡žGÒÓÓ¹Õ.u¦Ö€êÁÖ Öëõ‹¥ª0JNNÞ¸q#×'Í#¢££¯\¹òÍ7ßpz_³fMaaa¥7AƒV’¡€¢(BˆÍf·œP(”Éd‰D*•ÊårP9‰ÄÉÉI.—;;;ËårµZíää¤T*›V†øþýûccc###ýõ×=z4æ¡…Ba§N:uê4kÖ¬´´´õë×6,<<|Ó¦M¼ÍâxWéM¥R9{öì—_~yùòå\ˆ 5Òx¿o½õÖÀ7mÚ”ŸŸ¯T*­Vk]¾U^^>þüÅ‹+•JÎ:©A‘Ëår¹¼&1äääÄ¡vY´hÑîÝ»á—~,ÕjµT*õðð¨èchätcww÷Y³fqÕ'[S›Íf³Ùû]š¦FcÅYûªEü7.ؤ(ˆQÚl6š¦- MÓl¢«B¡8{ö,'ÓäÐ4}öìÙp^ÒߥK—o¾ùfÙ²e+V¬èÛ·ïâÅ‹ccc¹5©,Ë… z÷î͵!5BQT£å"ÈÓÑxÚ%((èÒ¥K#GŽ\½zu]2*JJJ¢¢¢RSSiš^·n—ýÔ28tèPfff- ÀÓÀþ¸ …Bš¦…B¡ÍfðãjµZÅb±D"‘Édb±X¡P€#A,ƒ§A¥R©T*¥Réêê*•J+_ªFœçs888899999™Íf(‡1 4M›L&@ •J…ÚÊz_ O{ˆ:*!”^¯W(™™™œh¡PøÕW_5þqkÂÓÓsõêÕãÇÿàƒ^}õÕ/Žk(ÞxãªåT‚ÔÆÓ.iii7nܾ}û… ‚ƒƒû•É“'§¦¦BÖ¯_ÆaOµ²³³koPÇßWhöXOüäK$@…'¬§ÍþaÆd2 …Â3gÎpø¨êääôá‡~ôÑGÕž¬V«Mc0Ìf³V«µÙl¥¥¥EA2¸N§ƒXaYY™Ñh,--… qhl±XL&“Ùl¶X,f³™¢(˜AG&“1 Á²J>Š¢Ìf3H¨+W®¼øâ‹\õ ß IJJâÚŠÚ€{›k+¤iÓxÚE(¦¦¦nÙ²å—_~Ù·oßcÛ;v,..¶ÁÊ•+wïÞÍU7µ¼¼¼ÜÝÝÃÂÂê“nLQ”Íf¯CíÀ£gí³ìR©4##ƒŸnv±XÜ€éP@YYEQ¥¥¥µ#›Í–——·iÓ¦öíÛsrâ¿þúëäÉ“áÒ³¾±V­ZA9ž››¼ãéé l›ºl°+lWÝ@i<ížššúèÑ£I“&Õ¥ý–-[`£GëÖ­ëÙ³çªU«0õÝ®´jÕ*44tëÖ­µ7«=ݘ­ÃÒh4&“©¸¸˜¢¨ââb›ÍùÚð)8(Š÷ŒL&ïKŰ ˆ!›Íf6›ÓÓÓ¹îžÆVWhÕªUíÍ´Zí¦M›¸Z3ïìÙ³YYYuOŒËå°ž6B;Ë {ÅY‡«}ÙØŠÙl†O ½R©5ãèèXIñÌš5ëõ×_ç¤[iµvC$Õqzo‹Å’@éß¿ÿ±cÇ$I@@@bbâÛo¿ÍE/!ÿCíéÆOMÓ•b+•„Ñ´iÓ¸šÐ©‰”””'Êèdluñ´Õ‹d+K«UîÙ³µ ‚4cx:ås^^žÕjõððˆ‡ŠPWWׄ„Ô.Í¡PJ¨&iûÑG±OíO JJJ:t(MÓP‡®5BˆÅbaI< Ã@v!Äd2A%9dó@¦3EQPmNQ¤<Ûl6ðÀY­V(¹ªê€©…å¥COµ ¨†Ž9²téÒ%•JÅ0LRR’··w¿uðàAXÓ·tìØñ£>âÚŠæIÕ_*•rmÃ0Lbbbûöí†9pà@¥å9ù OcFr¹<88øÎ;áááŸ}ö,ƒWljaªRµ&sÚ´i“'Oæú,« fÁ„ú\ÛÕ¢©6Â(‰¼½½¹6 A&Lµ¾T*åÚ®& &#""’’’JJJ6lØ@éÝ»÷óÏ?ÿt»š?þ‡~³]ùûû/X°`ܸq\Ÿ!„,\¸°â} téÒ¥1mÀÚ«JT{QBBBÆŒõiÁ^2Þ.Ùƒ49phª[ÂÃù¶«IÂ_íµvíÚ%K–Ð4-‘Hê³êÛ”)S† víÚ5Ÿ   v6OΩv•ƒFÓUL•Ú«jƒk- n/Jí0X.‡44Uo*¬c°|[šüÕ.={ö=z4lþùç!!!õÙ›'kíÖ‡Á¬j##EEE<ì¥F¦ EÍf³X,nÁi„ŸT{S•••µiÓ†kÓš!¼[š"\Ö=ÝL-‚ ‚Ø ™LVÏ…;êHS­3"5ÔL›6 øûû—••q‚mGrss;võêU›ÍÖ˜ÇmBµW2™ÌÁÁ¡1댸º(µÃù%«t]ÀåÃu¯Tßꌪ––ˆD"®;é/8¿©Zü[˜ÿ­3êØ±#·Â .Ø7fd±X6mÚ”žž.‘HFe2™kÿÖÖ­[¿üòKBˆ‹‹‹Ùlvtt亗ìWÁ,Þz/«ubËd2vèo0ÂX•ª×Åf³±Ë""5Qmi L…Àx;4Wø9¶4Eìëw™4i’J¥Ú±cÇŠ+~øá‡‘#G>vÆ›´´´ØØXBˆB¡8qâ„P(üóÏ?¹î¥fÈüùóÙœeÿ]»v­]»–YÌÕ¦âwêÔ饗^âÚ4Žáö’U{]øó|f±X._¾|òäI˜O?TÛo;wæÚ®¿àí8€ µcG¿‹ÙlÞ¿ÿW_}%œ7lØššª×ëkùŠN§9r$¬ÄöÝwßuíÚuàÀ'Ož 溣šX{Õäàö’ñöº0UÊdù³žoû àí8€ µcGíBÓ´Édš3g΂ Ôjµ@ ˜;wní¯­[·îÎ;„?þxذa„ìÛ·MA~z/щ] ^2~^—j#ŒyyyäÖ0~ö[Eø9 HíØ·Îè½÷ÞÛ²e‹R©ìÛ·ïK/½4jÔ(//¯ÿëŒA„O`Ù´iÓáLJš’’2mÚ´ÀÀÀË—/WlP1ÏyÅŠðfJJ Ã06›í³Ï>suue·nÝzÆ Eq‘ØÞ¦â·pxx]¸-“©cû A*uFÿåÂ… 6›-:::::š¦é³gÏΘ1cÙ²e{÷î­¶ý±cÇ!Œˆˆ`æÍ7ߌ¯ØàÁƒS¦Lùã?öìÙƒ>›f :±ù ¯ ÿ#2„—ý† M;ú]røða.Ç3fLÇŽÇŽ«V« !{÷î­š· H Ëd¤ebGí"‘HvîÜ™˜˜È¾sõêÕ^½zÕÔ^§ÓB"## ! Nâââ¾ÿþû3f0 ³{÷îk×®Á§3gÎ4 \w‚ 3eÊ”œœˆÈdffò§~A»bǘ‘X,>|øO?ýtàÀÐÐÐÌÌÌòòrÖSWWW±X .YYY}úôùÇ?þA ¹{÷®ÅbiÓ¦MBBB@@@QQQFFF÷îݹî=A8#2Ò±£véÛ·oß¾}år¹^¯ÏÉÉ?~|«V­*µ©š¶RñŠÛ•–ÌíÑ£W]† ÂÂS˜„‡4uàn ÔÛ1f$—Ëår9!D©TvìØ±ªp!ÿ[g´qãFgggHÅß²e‹J¥2 ðÑĉ8Û „5kÖp— H‹¦ŽuFš\Çk1VäŸÿü'MÓPmôÖ[o…„„Œ?ê‚‚‚®^½ Íhš&|šŒAAÆ„GÚE­VÏ›7oÒ¤IÅÅÅ2™ìÈ‘#z½~æÌ™„ÀÀÀk×®A³“'Ozyyõë×k{Aáû®#ý¤Ìœ9óÌ™3£FŠ‹‹sss;|ø°Íf#„€vÉÈÈØºuëÎ;ù³+‚ ‚ ü.„¡PxèÐ!—   ;v”••Fñ÷÷ÏÉÉÙ±cÇ Aƒ.\8jÔ(®-EA„컞ÑcŽiù‚ Â' …^¯o„Õg=#ŽcF ÃÔòi^^Þ;w¬V«‡‡Ç˜1cvìØÑµkWn FA„[ø•ïR‰Š³N9;;kµZ®-BA„cø•ïBIHHxþùçýüü/^\Ñ+#•JF#×Ö!‚ Â1üò»Ü¼ysøðáV«•2oÞ¼nݺ 4>2 \ˆ òÄÅÅ¥¤¤À¶P(tuu}æ™g† ¢T*ŸtW³fÍÊÊÊzï½÷¢¢¢Ø7׬Y“œœÜ¡C‡ p}®ÒxðËïrîÜ9.À… ¥ Ó4}ýúõàà`® Dy^~ùå°°°Õ«W·nÝú£>êß¿ÿüáããóË/¿<é®–,Y’œœœŸŸ_ñÍéÓ§»¸¸¤¦¦r}¢Ò¨ðËïÒ®]»Š/{öì )))­ZµòôôäÚ@A'ÀÉÉ),,ŒòÜsÏyxxxxxDDD”––Ž5êæÍ›îîîuß•X,®Ö[ãèèÈõY"HcÃ/¿K×®]ÝÝÝ]]]ûöíûÍ7ß¼øâ‹„š¦çÌ™óñÇsm‚ HðÖ[oi4šÀËk×®%$$”””ÀK³Ùüðáâ¢"BˆÉdzøðáƒ*~=--íØ±c5Õ.dff9r¤  €ë³D;Â/í¢R©6oÞ¬ÑhFŒ1zôhBHQQÑÈ‘#†™8qb#`±X’““ׯ_ÿþûï÷ë×/,,ÌßßßËËËËË+000"""::úÓO?Ý¿vv6×½… H“¤mÛ¶„ŒŒ BȬY³V¯^-¢¢¢ÎŸ?OÙ¹sgxxø§Ÿ~JÙ´iS=&OžÌ~÷Ûo¿=}úôéÓ§;uêtïÞ½J{þâ‹/>úè#©Túúë¯?EX Aš üŠBFŒ‘˜˜8iÒ¤Ù³gûúúæççO˜0aÿþý"‘È~Õétû÷ïÿöÛo/\¸ 7R©Ô××W­V³Ë_[­Öüüük×®=zÞqrrŠŠŠ=zttt´T*åºçi@èÇd2%''ùå—ÅÅÅŽŽŽ)))'N¼|ùò¤I“N:-§OŸž››[ñI©sçΰÊÛ… ¾øâ‹¯¿þšýèòåËŸ}öYAA»»{NNNllìŸþÉõ¹þ†aJKKKKKËËËa±Š¢ÊËËkùŠT*U*•r¹\¥RI$µZ-òë‘áÞiBHTTTvvvnnnqqqhh¨]—.Òh4ŸþùöíÛišîÖ­Û_|Ô¶mÛš¦ý5™LwîÜ9sæLbbâ/¿ürðàAµZ=qâÄY³f¹¹¹qÝy‚ðÂÂBBˆ¯¯ïéÓ§½¼¼ a¥S§N ,(**rww¯øó\q b¦K—.°Ý©S§3gÎTÜí¯¿þ*•J—/_N¹råÊ74‹‹K㜠Œ<¸ÿ~~~þ½{÷²²²îß¿¯Õju:Á`0™L r @ T*Õjµ³³³›››§§§···»»»——WëÖ­}}}Û´iÓhgpµ !D øùùùùùÙõ(_ýõ¬Y³Úµk÷õ×_>¼Ž5Ør¹¼C‡:tGîÕ«Wããã·mÛ¶aÆéÓ§ÏŸ?_&“qÝv¤°°°¨¨†!…B¡V«ÕjõS|"H‹ª¦_{íµß~û¢(xS.—BX.;»Unn.ûENǾ/T*UÅÝšÍfggç/¾ø‚}Ç~þ`½^ùòåëׯ_¹r%--íÖ­[………¬mb±ØÑÑÑÝÝÝÃÃÃÏÏÏÅÅÅÍÍÍÅÅ4‡£££X,&„ˆD"''§ZŽb±Xôz½Ñh4™LZ­Öf³›Íæ‚‚‚ÂÂÂGeee¥¥¥éõzš¦+~Q*•‚š  ëСCPPÐ3Ï>þ“O>9xðà‘#G¹>¿†¦é .œ>}úøñã·nÝ***b‡ÚЍÕjÿ=z¼øâ‹ýúõCÿ‚°À¿ DI!÷ïß_¹rå„ "##U*Õܹs>|èé陞žÞ§OµZMqww‡8‘V«MNN !„0 SRRrþüùqãÆBÒÒÒ^yåxDCÿþýçÌ™óçŸvîÜ™a˜3f,_¾¼åKvvvrròÙ³gOŸ>MQ”X,†\À1cÆtìØ²===]]]¹“KKKAÐäåå=|ø0''çÎ;yyy?ÿüóž={ Äb±··wÇŽû÷ïÙ¥K|èjºp¼cíëÙðÀ³NCa±X–.]úÕW_%''?ûì³\ZƒpñâÅõë×ÿøãååå2™ÌÛÛ;  sçÎþþþØÅÅÅ÷îÝ»{÷nnnnff¦Åb …Ï=÷\LLÌ¿þõ¯æ-bJJJþøãßÿ=###++K£Ñèõz“ÉÄ0ŒL&S(NNNAAAáááݺu{á…¼½½¹6il¶mÛ¶yóæÔÔÔ°°°Î;ÆG½öÚk|ð†¶lÙòÃ? 0à‡~صkWûöí !¿ÿþû!C^|ñE›Í¦T*¦N:{öì^½z 4H&“•——çåå}÷ÝwÇŸ={vIIÉ¢E‹&Ož¼zõê5kÖDGGçææŽ?þõ×_¯ÿ)dff~÷Ýw»wïÎÎÎV«Õ:tèÓ§O·nÝÂÃÛ„'Ãl6geeݺu+33óÊ•+·nÝ2›ÍB¡Ð××722rðàÁ/½ôRëÖ­¹¶´ÅQŸµ[®v±7nÜ âÚŠ§'55uêÔ©ÉÉÉaaaãÆ{å•W:tèP—/Úl¶ŒŒŒsçÎýüóÏIIIEýóŸÿ\¼xq›6m¸>§†¤¬¬lÇŽ;wî¼zõ*MÓÀÝÝ= À××—mCQT~~þýû÷‹‹‹u:¼éããóúë¯ÇÄÄÀc4‚z½þÁƒÏ>ûlÅ4ƒÁpÿþývíÚ š¦ ø]<== m6[MRX¯×çää´mÛ¶RDéI1;wîÜ´iÓõë×»té2vìØ!C†4õG2€¦éÛ·o§§§_¼xñܹsƒÁßßèСC† éÓ§]“,Ô.OC||¼F£Q«ÕR©ÔÑÑRÙœœ¤R©“““\.oKØl¶E‹­\¹rܸqóæÍ«øcü¤ètºøøøE‹åçç/^¼xúôéÍ :@£ÑÌŸ?ûöíR©4**jðàÁáááAAAµß*:îüùó¿ÿþû‰'ÒÒÒL&Sxxø’%KÌõ !H50 ³sçÎY³fùøøLœ8qĈÍ{^PŠ¢þïÿþ/11ñ§Ÿ~ºvíš““ÓÛo¿=eÊ®Mkæ vyb |}}E"‘X,ìÏ*MÓ ÃØl6›ÍFQ”L&‰D …B*•Êår¥R)•J]\\d2™£££Z­–Ëå­[·–H$*•J¡PÈd2ggg‰DŠ!µZ-‘HjÏGãEEE“&MZ¶lYCåë0 sðàÁ3f:tÈÙÙ™ëS|zöíÛ7yòä   O>ùäÕW_}º'3«ÕzêÔ©íÛ·ÿøã!!!»ví åúÌìEqqq^^ÞƒÀó$•J!³»mÛ¶ìÔÉÎÎ?~ü²e˺wïε-V«ýá‡6oÞœ’’Ò³gÏ9sæ¼üòË\ÕlAíòÄdee6ìÑE"‘H$†SÅ0ŒÕj‰D‰D&“I$Ð@0cƒƒƒ³³³ƒƒƒJ¥R«ÕNNNîîî0«4svv–J¥¬6jŠÓÆÉ“'Ïš5‹k[ž’k×® 6lëÖ­ýúõkæææÎ›7ïÀ+V¬˜:u*×ç×0˜L¦Ó§OÿüóϧNº}û¶Åb©©¥R©|î¹ç8`À€¾}û6ïÒ<¤)rÿþýÝ»w¯[·®mÛ¶[·nÅ8¯=@íòÄܾ}râd2™P(”H$B¡P @*äíÓ4mµZiš6›Íi˜°öÐ)f2™L*•‚¿Ü¿–K```fff]ZB œ}(ª8RÁK£`È"„H$øï)#‘H`¼•Ëåà†H($„(•Jh Y†r¹2¥žT<ñ–ÄÄÄ &TZk³åPíÒB禃%[÷ïß+%Á¯2EQk×®}ï½÷žnŸ¡âââ"—ËÝÝÝ{÷îýÔæÁl’:Îjµj4«ÕªÓéXmdµZµZ­Á`md2™`f£ÑX^^n2™t:Ùl6›Íà ’Ëå‹Å ÃÀ_Ž >Ìf3EQf³¹ÒÜ”¡(ê±î"Èo0Õ~úÓO?5]í2{öìŠã ›Û2N(‚ r›!2™L,K¥R:ðè *œUjµÚÕÕä]Å(›î ÚˆëS¯@`0Ο?ß ©Û¶m[¸páÌ™3;wî|ðàÁp}Š-”¼¼¼:¶¬Ë°P«Õ ÿ õ\þ !ð?( ÙÇ`6Ѷápð4H‘J¥ i €\"‘€Öaÿ× ºÜÏ„GGG˜¿n̘1ö˜q´´´´¬¬¬ÁwÛh¡Ú¥"쿟\.oLOF-H¥R(hªÿ®hš.++3›ÍƒA§ÓúmbˆÕFƒáÀ …¢C‡ååå°þˆV«…ÆV«Õb±@.›‘#‰hš†_nH‚ÎR%Kj5N¨4¾>µ WÀRA¾¾¾ð€DÑjµàa…'‹ÅC¥L&ƒû–Íœ‰Dðh÷0¨ ›Í& m6›ÕjµÙlõw·?©fbÛ³ÿ˜Uµ“½k×®Fé~¤Nð]»”——ÏŸ?ñâÅ ;y3hj³Ùl³Ù,‹D"±Z­?•µ½ …u×@)))¡¡¡[·n­©Ayy¹ÕjgÑhÔjµV«µ´´”ÕFà(2™L°Z¬Ùl~ôè‘ÅbÉÏÏÒÁ‚W OOO£Ñh³ÙªõÈßÞrPoð´WÇ ÞcGa‹Åb±X Cíû©=¨‰ç`³R©„О\.—ËåàæµfT*•››Â@'Õ”îm×Þ2dÈ!Cìz¤\]]¼råÊǶ,//‡–ƒ†akÁƒ!ÆBÈñãÇ;öé§Ÿ–––’¿Ì6› ¢êÐ’ðà¥Ñh´X, Ãèõz6_Tˆ=I¥Rp!‹Åâ’’ðš€úg½ÈEªO¨ýòåË\_äàµv)))‰ŠŠJMM¥izݺu ¸gˆ•?~<""ÞßݾúhNNNjjê?þ5Û …ÂÅÅåÕW_ýðáh¾§Px»víúàƒ¸>¿zQPPPéºäwÆ¢¢"ðrA’SII‰Éd2™Lå­Õja]PËìÉßYÕQd±XêÔ}MA½J°YÞàcgía•ä¤C–·£££L&“Édˆàêê ^•Jåìì\K~7d04ìÒüg„ ;vìàÚŠ)((غuë÷ß)k„ggg¸ }⛄777(Ò¬6ÝD$Á<¼l®®F£IJJš4iR=GZøç"ÄS~~~¿~ý–,Y‘šÄ,jÍ0Ì£G(Š‚'1Bˆ^¯SYYÜäÐÞb±X­V³ÙÜB’Øš¼Ö.“'ONMM%„¬_¿>&&&,,Ì~Dz‡G½ÉÏ@ÅÅÅß¼{÷.«]Z2ƒ ‚ —ÝÝÝ!XóÒK/…‡‡»¸¸Ôg¡¢ ìܹóüùóÕFñÌf3›á¤Õjõz=ø±JKKAét:›ÍÎb±H¥R¡P£ËÊ@Á(o6›ëâ´¯‹‚§XH´ª© ˜T1.V±Ì 4ƒƒƒX,én—C‡Ù¯¸ƒ[¾ùæ>kH˜{Š<ŒÇ¦¡X­VŠ¢¼¼¼ 7®R !jî ÙŸüoN.Ì ÁŠ'±=<<@aÃ~ØûÐÛÛ»ÚB'p>éyõéÓçØåüÕ.ÇŽ‹‹‹ƒm@°råÊÝ»wsmÒrùå—_ª¾sòäÉzîFù†šsâUJ÷®˜áŸêt:Èø.--…xŸÑh4›ÍÛd4Á§y ‰„ClåˆÁ`€¨Ú9µÌPÇÂØwrrr:uêÔ Ý‚4uLCao‰ªi(PEQw@¦³Yó‹- €J&s ! • !àÅ /AÓ¨Õj@®Dòw•ø7pÅi¾Á_í²eËØèѣǺuëzöì¹jժ潬ç´mÛV¡PôéÓ§¼¼\£Ñètº’’’W_}•k»ºnƒÌ¸Ï¦4AÕtï£Gž?þ½÷ÞƒYYY™N§ƒT'Ð@3 –×€ÐX¥b7«ÕÊVÚ³ÅnF£ñÎ;¨]8ÁÝÝ]­VwíÚU«Õºèœd°¼ƒÑh„«ëDÒ4 ⃽¾H¢iZ"‘€Ûòú¡øQ©T …BH@µCk§’2~lZ +¸+*æZ¸uëGW©žj‹Å’@éß¿ÿ±cÇ$I@@@bbâÛo¿ÍµiÍ•JºjÕ*® á#ݺuƒ¡Bã‹¥cÇŽ\eG “·–¼­V{ýúõ… >vvfÈåd§8ª%Ý[£Ñ˜Íæ{÷î>}T¸B­V×1W·ÍÕß·oß¶mÛ*æê’¿'Ç"„h4›Íf6›u:EQ €)Š‚—V«Õ`00  ì ÃÀ4 ŽM&LIR Lbk!Éß+´€Nb§œiÒõ-žj—¼¼<«Õêáá®ëH ¹è™ÿÂÔLhhè¥K—†™:u*4¾xñ"óT¸»»W:î´iÓ`I°zb2™ÆŽ[içJ¥rÆŒР¼¼üܹsP›Ç"##cbbì±ço¿ýV¥Rq}~u¢Úkêêêj§Ã-X°àÙgŸ…í¦u·,Y²¤mÛ¶öØóÝ»w !ééé\Ÿâc¸téÜÕIIIÞÞÞuÿbíC_cRíÝ®P(þýïÛãp7ntss³Çž¡nèìÙ³öØyïÞ½ÿõ¯Õ?Õö6Ì>Ì9‰‰‰íÛ·gæÀAAAÜ ƒºÀ±v©…ˆˆˆ¤¤¤_ýuÆ „Þ½{?ÿüóO·«ùóç³á'ÿ]»v­]»¶AÖ§¨6À®¯Û¿ÿ^½z-]º”«n|,‹åòåË'Ož,,,äÚ^Pí5m×®]Ã…íöŠÏ7ü¿[fFµw{``àìÙ³ð(ìÝ^Ç‰àø€=Æj{;$$„ësm’ð4ß…µvíÚ%K–ÀäŒ_}õÕSïjÊ”)Æ »víšOPPP®ªUí2ï¼óN“X‡…ùßÚ+™Læëë˵QÜSí57n\Cí¿R·‹Åâ™Až‚šF0˜ ¹þT½Ûa2~>Su`ô÷÷oéj{ûÝwßåúŒ›$üÕ.={ö=z4lþùçõ§>>>>>> ndÕ9§M›6yòdö寿þš‘‘Ñ£G»÷×RµöÊl6`íÕc¯i}¨Úí6›Í×ãíÝ‚4Wÿnçù<¶ÕŒ÷ïßo¥ÎíÚÛ- žÆŒ(ŠŠ…íèèèO>ù„k‹ªç±Ñ(GGÇ^½zÁŒÔ¼¢Zïeûöí¿øâ‹< ëwmBéôö‹0’ºý¹çžƒ ÞÞ-a¯),mƒÔ~gÿnïСCÚÏöjQQ‘ýlnß¾ý²eËê¿s»övKëŒAù XªÄÇ:£¸¸¸ª#==½b³jž¿þúkøÔÅÅÅÛÛ›¦i®S°›!ö«½bjH§‰DðiÓª¦iXìÚív¥Úk*“Éìq¬JuF¼½aêRgÔÈek¼¢‘ <Á… xk3Ï©XgÔ$V™µ—vy饗ÂÂÂV¯^ݺuëÙ³gOž<¹k×®Û¶mKKK«ý‹iii-R('Nœ …þù'×½Ô i|_1ûÿÐ’«iš®Ó¸ÚkÚ°µ”¬ÿ¿’3¸Iß0S¶ÆO¹À3$$¤[·n¼µiXì•««V«aÖÚçž{ÎÝÝ]¥R5êþýû°ªgMètº‘#GšÍfBÈwß}×µkמyòd-ÍÖ­[wçÎBÈÇ|8>>ž2|øð1cÆtìØqìØ±0ÑþÞ½{«z˜i¢ ÿA'ÅŽÚ…¢(B$©tèÐA(®ZµÊÕÕµ¦ö0Mgdd$!ÔI\\Ü÷ßk2ïÞ½ûÚµkðéÌ™3 ×]‡ H0eÊ”œœœcÇŽ]½z533³…Ôà RìUg´mÛ¶Í›7BfÍšuðàAN—‘‘‘ýñÇ×ôWWW±X â&++«OŸ>6 ¹{÷®ÅbiÓ¦MBBB@@@QQQFFF÷îݹî=A¬ì@䉰—v‰‰‰yÒ¹‚ƒƒsrr`ÛÓÓ“]ûJ&“effvìØÑÕÕuÚ´iŸþù¥K—P» ‚ H „ãu¤«–U|§âv¥u¤?øàƒZÊ­Av˜ÂÂI¤©÷°L&ãÚÇÃñ” óœKKKœœŽ=Ê0ŒÉdzá…Þxã £ÑÈ0ÌþóŸO?ýš9r„râÄ ®ó²iÑ`ÒlÀ:£§G­VÏ›7oÒ¤IÅÅÅ2™ìÈ‘#z½~æÌ™„ÀÀÀk×®A³“'Ozyyõë×k{AáŽcF•˜9sæ™3gFçæævøða›ÍF í’‘‘±uëÖ;wJ$®EA„xäw!„…ÂC‡¹¸¸íر£¬¬ 4Š¿¿NNÎŽ; ´páÂQ£Fqm)‚ ‚ ÜÀ/¿ !D.—~üøñãÇ94A¤Xg„4àöóóãÚÇÃ¥v9}útÝ÷éÓgÁ‚/¾ø"‡#‚ Â9üÊw!„$$$<ÿüó~~~‹/f†}_*•F®­CA„cø•ïróæÍáÇ[­VBȼyóºuë6hÐ øÈ`0888pm ‚ ‚ Ã/¿Ë¹sç@¸.\€ š¦¯_¿̵‚ ‚p ¿´K»ví*¾ìÙ³'l¤¤¤´jÕÊÓÓ“kAá~ÅŒºvíêîîNÓtHHÈÛo¿ ™¹4MÏ™3§–¨Ai9ðËï¢R©6oÞ¬ÑhFŒ1zôhBHQQÑÈ‘#†™8q"×Ö!‚ Â=üÒ.„#F$&&®Y³ÆÅÅ%00ÐßßßÇÇçĉ"‘ˆkÓAá~ÅŒ€¨¨¨ìììÜÜÜâââÐÐP\ºAA>jBˆ@ ðóók³û!‚ Ò˜ð.f„ ‚ R ¨]AiJ vAA¤)!xT\ĵ ‚ ‚ uEüí®]\Û€ ‚ RW%%%¹¹¹&LHLL‹Å .ŒˆˆIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/StringedInstrumentsPalette.png0000644000000000000000000000013213135434036023006 xustar0030 mtime=1500919838.113315139 30 atime=1500919916.149981805 30 ctime=1500919913.383315139 denemo-2.2.0/docs/images/StringedInstrumentsPalette.png0000644000175000017500000003025113135434036024660 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR0À |¨ gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>/yIDATxÚí]wXWû}g¶Ó¥(D »±bE]SLÕhbº&ƱkÔØb%F±ÅäûEì 64ÁBQ?@¤ ÛwæþþW`ggwggvÎÃóswæ=ç½{ïÞ™;³÷`!!B„0 ¥_­X±ÜÕbDˆpGLšô5ýC­^½ªU«V­[·ñòòrµ6Ò?|¸KçÎÆ<á˜>HIIáV*‡a Ããdz?ž8qHW¯^õþûxzz¡Ói¹Õ-B„MÀ1Œ$I.â8BˆÛ˜Ü†•J¥uêÔ Z¹rÅĉ“¤­ZE{xxFn‹a¨†Îa@‰D‚â|¢„ó°r¹<$$¤ÑÑÑaâV®öÇqw!i®X±\êíí­Õj¸•+B„}ÀqœtÂÉmL'…•Êd %IR¼ó!B Àqq:씞[r=B:),HÅÞ(B8Àqœ$¹leç–7r'…±CŠpGÈ #$§1¨)öIç“:¥{Î9eå<,ˆ#¤AóIÒsK®¹Õ°‰‚°ZXR„H¨:}rþ‚÷ïßßµs§“â“$yîܹ;weeeþyꔫÓu;ð?©Ó§o?Koýõ§ÅÀV"‘tìØI"ÁoݺUŸOúרѢE ‚ /]¼ÀÐ'qê„•ç?­N÷ã’%ݺ÷hÖ¼E÷1ßLþ–*'HòïÓñ >yò$;û©Råá$a'NžûḳgÏ`*Oó·22³F¿ýNƒ†‘¢¿ÿÁƒÑhkp«Ù¹äO8ª l„äðOR6”YúcèÌv‡5! Ã[¶låçïO"äçïß²e+ ÃB£‘AŒ9a¦È*/þq÷îÝ›6mŠí·uë¶9sæ¬Yó³N§»|ùòøñã>|`2Uþ¬ÂªU«0 Ç0ÌIÂ8dȈˆzß Ý»wOýú """÷·=p¬Æ¬t†£¬†õóó-(,¼téR=@*•ž?^¯×ùûù1‹ÁŠŸ?GÀw—cbb¶nÝræÌ™±c?¬˜ BˆAj9UíÚµ«¨œŸVQŸŸ˜˜(—Ë9Œ)‘J›½ò Cí <ŽÆ±ZhSX¨Y³mÛv8ŽK¥R“ÉD’äÕ«‰yÏž1’š–&%é¬ 2Ëп½zõæÌ™{íÚµ·ß~gÕÊ•ôúÆNñó"zóСC:.##^ çe·O;vì¨Q«;´oäÈ‘¬¬,¹\¡Õ¨ïßOñööö÷÷§âøúú’$¹qãF„ШQ£hgÏžU*•ë×­×h4K—. Ô¨K^:c`8{` •HÔjõ¢E‹>;öØÑ£R©Ìn[±ÏŽÂÁûcûHKKKLLôóó;tèÐÔ©SÃÂÂN:uéÒ¥qãÆeffÊåŠ]»~©4A­Fà µœªJ•óÓ*JOY9¥“³{è´Ò޲¶fÍšíÚµÀ‚8þ|§Npo×®]BBÂ3Æ>)EÓæH,¡¨¨¨qãÆ{÷îùùç5?ÿüóªÕ«lþ0óDår¹N§­S'Üüçšæ;˜“ÊC$Iâ8ŽÚ¶m{þüù‹/Þ¾}úô郢*âîÝ»~~~/â t?%BBB´Zm¹*fø™,_±|Ê”©ëׯÿí·ßæÎÓ¤idáX«ÙQ›T· /))2dðÔ©S …¿¿—.i^K 2K-GʬÜÙ`žÔ:lxÅÂÿbHM‡ZÔ2dhÅB†£˜ÃJ$’6mÚ`$IÆÅÅåççåææRs¨iô‹W.êõz'e-REø’hÒW¯KM„ Çq!¬8ÆB€8/k‘Bh,—D“‚8©#B„  …Ò\ªÿù*úáçe-REø’hR)Ííêzà zñ4–³š²H!0áK¢IqáTÏà!k‘Bh,—Túü®«ÃÀ0  œ—µH!4áK¢IÁÝFHóL”µH!4áK2'r»kH@/]µ‹®¤àEø’ÊHq ÄR<‚‡¬E ¡±T Iî7Bš¡z̈T ÞX. Ç€kWÓ³)„Æ"|I@ ˜€îÉò‘5BÔŒ–ó²)„Æ"|I¥¤Rê›@ uálÐëÎËZ¤‹ð%™/ä^ϲ–~ç9³’E ¡±_’9©”šMâç›@«Õ„ÉËË‹ÚÌÉÍ ¬U‹×ÔËÀCÖ"…ÐXª„$^ ÓÉ?ÿ¢7ŸüƒçlÍQ=&'«o,—$Å€¿oOOOµZMq …BÁΣS³)„Æ"|I4‘”çÙ]_Ÿââoo¯¤[·£[¶ä•Û,²ÎÉÍ%Í,r1 ä–‚‡,hœ=¡[—ÎN¥à'žà"I¼ŽÐ¡}»Ë ½{ÆÜ½ÿÝÑo¹d„D±Éúõ·ß-WrúÔIn)xÈ‚BÂÕ«³ç/غa]DݺN¢à'`·¤¿ãÏlßõKNNNݺu>?>º• ã ÍÅ÷Ãå!ÁÁÙÙÙ €§¥ªÇÕKŠ´ôµjÕ‹ˆf¼±8OÒÕë7ü¸¤SÇsfÍ žöý¬ŒÌL;HùþùBH¥RefeÕ¯WÏ…Ÿ›¬Äö›9m*½¹hé2›³¬X’$ÿŽ’ý´[—.uë„sž….¯vÚ¾ë—}5|˜“(p~~e·¤¿ìîÜ©ãŸL I²S‡ïŽwð÷Ã?ÿÌVÞÒ’O4iuìÄÉ6Ñ­xæ¥Aenu7’$µf  ã–!´mç®Ú!!¯~òÔ©‡þç „PXhè'ß²}ÇÓœ'QØ ~Xœ*I­Ñ$ß½Û+&Æh4RË®Çtïvíú ;Hqþ/^GE!¯À)˜‚$_iÚT.—yïÝs.8) „Pÿ~}FãÇœDáfI¼v­Wÿù޲KRVÖc’$ÃBkÓ%uÂÞdgÛaˆÀ÷¤…Ï>þÈh4òÉH±žÔþx܇æ;ŒóËZbOZ­Öd2av?%¥vH°3((¬ß¸Ù×ǧI“ÆÎ£°œ³8ÄI%êðôð¤÷÷Py$©Vk¼½½l’Í÷m ®ê/À"kooóÏ£Ü&'0hÀ€UkשT*¹L6öý÷œAI·o=qâÇùó¼½¼œDá`Ñju`0@¯×S› R)y–dþÄ]ékÛƒ¸Ý2¥¿s±šu¹wm«"vP¿^Ää‰_Q¯mûžbMwîÜ ¬Õ¶MkÛN¢l¡°ޱ 1’~ýΘé×?Ê›$/O/(..®U³&URR¢Æq\¥TÚÿϲ ¥'$ÎÌÚ& û¬×lÍ¢m›6ÛvýrüäýúôNEq²vå H¾sgíÆM‹æÍõñö6̤Ú!Á8Žÿ/#“¾±ô¿ŒŒà`Çmº@75lÌŒo ÔÿàÝwÖlØØ®Më5j( ‡Y¢E@qI1•¦¿ŸUnþ”•³%©TªWš4‰?{¶{×.õ¹ Û·mk©k&u\æ*HAĈ¡C·íÜ•š–ÞÎß_ YpÂB_PÇrâôj‡$„ÐÛo½9ýûYë7mnѼùÿ>“›;bØö½tÛÃ}zã‹Ì™µ0).\º¨R)£¢ ' ÞXxÔ¶uôwS¾M¸zuá’¥Osr–.Z`ÓO _œ²ºÛI‡¬…FÓ½{Æ m+æ§y8ÎÒ¶uë³ÿýS«Õr%ÕVI&“)¦{·¾½{aF’¤Á`°ïœÙí®!KkÙ™WG¤ "¬vmö­„‡,8d!B£Ñ¸V’Éd²Û¾Žîün7ËJ¡züÖÞV ;®¯Äxæu»ût¦Îžq)„Ã"|If“:n*Y¤‹ð%‰áÁw¦àEø’^!R<ƒ‡¬Ý"''7ùî]a&R%$‰×"g¡¯§N+(,\ºp~“Æ’‰sHêv÷!©dµàMu¢hÙ0-ýA@@û>ììDøIœRpÕϯ\=kZm(æÏþA"‘P ,+''ÎÜq„=hZ (ü¸äJâÕŠåq÷»<§&Î-)¸á“:"œ‰_|®×ë]­¢:@J=z'/'@J95k7¤ðôððòô´ĵ‰85qnIAœe)8¡°[ƒ8ËZŽÔ«Î ›q_ ÞXª‚$qRG¤po,—ôÒ)Šà5sýzØ=)xc¾¤—fY…óåÄgæ¹úrg ÞX„/Él„!B„` Ž"…Ë(xc¾¤§¬8Ž›¯ÛU½a˜‰0Éerçe-REø’hRúùúåäùûúã87§¯Ì 8~ÃÊ‘ †=/zV³6ÿ¦¬ôÝJËݙ©, ¤À¢IP;XÝÍVI,e0³›“JC‚CBÙ9Ùv¬ÏCyèUºYî-ûŽe‚Q·Š0³×eo¼Ø¡B?_¿Ú!µ©&RiÖ)†a%ae0×Pº‰½PëÎL,FdìY,µŠJÛF¥ûTÜóE¾t+1Û…$†øåÞ*ÿ®yU›ñR¤€åååÉår©Tjµ 1ƒó‘ÝI§ A `Κݪ0‘‚s›bÚ½³­’Øg)€"ݹs‡”$É”´”ܼ\wx8X¡PÔ ¨œ”µH!4áKzA €]¿y]&“EEF¹ØA•˜L¦»)wMF8)k‘Bh,—D“Æÿ}ûã¯?zvï‰rÈœ¤Š€º@¿xå¢^¯wRÖ"…ÐX„/‰&½qõºÔD˜p§Nš«=‚Àp œ—µH!4áK¢Iþ²ËïÿðƒrèNº·&RŠEø’ÌIÝn]ÖR«i§f-REø’ÊxÜîÑ9 •Þr^Ö"…ÐX„/‰&u¿JïÎ:7k‘Bh,—Tê ,´ºp2B€œ¿¿H!$áK¢HZ1x¿žÖ CF¾þ˶-µjÖä“·4y@ì³ÎËÏ_¶båÕë7” Eÿ~}?÷¡D"ᢸ¸d뎗ŸååõëÓûÍQ#e2·Yиzýú×S¦ý¾ÿ?5jpHñß¿OÏ]¸È¼äí7ßøx܇l$Ù—3l`ŽK²£ÙP=Ò5#äÞ}û){MžyK3µåûoÁâ%ÿ÷hÊדòòò¶ìØéééùÞÛ£9¤˜·xqrò÷Þy;,´vJjÚ®_÷<{ölâŸs›­V·ä§t)?yöõW_Ð%ÁAAløvÒpdwãJ’M͆&j„äs¹»[¶ÆŸ=÷$;\tÊVLa“u~AÁÕëטù]ï˜Pk4¿>òîè·¸¢x–—wùJÂì™3zÅô@uîÔI¡PlÛ¹ë‹O?aó#[?»[¶<þÜ<W?©_/¢Mt´ùáìõä°:ÞÀ—dG³¡‰ø!ëEDøùúfdf;ù‡«:$BˆeÖ™™Ù õȣȆ………jµÚÃà µZój§Ž-š7£RP3 @§Óétz•JÉUnÝþçÄ©?'Œ·jÍZ6GÙD‘õäqã¨(‚ ‚`sJïH"RÓÓ7oÝ~çÞ]„à•&M>ÿäã°ÐPࢱ—dIƒ͆æâ»CöëÓð„«W]Õ!)°Ì:²Aƒ­×R{¦¤¦) …BÁF6Š:áa?Οg2™ŒFãóââŒÌ̽û´oÛF©äŒ‚‚Á`XºbåØ÷Þ ­ ¶ l;äãÇ2©ì1c³? ¨ñæ¨Q#†áüã ¡Ñh¾>£nðÉ'"„vïÙûüù[Ö¯î˜UI i6Rju-Þ:õAÿÛU§¬,³V(õ#"¨S—«×®ïÙ·¿OÏê£â„!D=œõßÓ§©«»ÀZµ~Z¼ˆåù$ûÏnëÎ]ªQ#†'^»Æ²æÙS †¼¼|¹Lþîè·jÕ¬îÜÚ q :x·ô Wÿ´´Nx8„……9zÌ`0Èd2ÇKI ìh6.;e5§wå5$ë¬ ‚Ðhµ›·m?vâdÝ:u&|4žíÕ—-Û©}‡UË–ÞOMݾë—Õk×Mûö)îÞ»w$îèÆukè‹"ö’ BhÁœÙM›4öõñAµkÛF£ÑþºoÿA¯qþqP S*•ËWÿŒóŠÒ »vÿö\NnnpPÐkýcGfÉ‹+ÃV‚ ú òù„ÙxŠ0ƒYÒ•ÄÄo§Ï0/ ¨Q£MëÖŸ|4ŽjÔ¿ýgO9»XªÜR³q¥a+;¼J­h*SǾÿ˜mO¡`i{êÅÃG&NžÒ¯OïwG¾wÿþš =<=ú÷íËmE­Xµúì…‹ï¿óvXhíä»÷6mÛ^PXXñ›…“ƒ†‰ ~\0¯Qd¤#qØH¢.öfÏüÎ××Hý/#cçî_Ÿå=[±äG0›5-w¸¥ršø7l¥a·W©ƒ@e+¦ØµUÛS»)ØÛžÚM±ã—ÝíÛ¶úÍ×$IvîÔ!”œ|'¶O)Šž??ùç_Ó§|Û¿o„P×ÎUJåî={ÇSñ¹PÇ?2©´Mt´ãÛª$ª°y³fôؾm…\¾tÅJ­V«T*‘…UaéÍJ¿d©|Œ•úZÚíUê ¨d²¶äÂIí©ÝìmOí£ âÒ•„YßM3&“I*•~øÁûPæÈUÙÙO}¼½›5mB{ï„…†j´ZFSѱÔ* ¬\³6'7·ë«¯îÙ·?'7·aƒúÓ&Vq·ä;w7­ý¹\an=ºÿ²gÏ“'Ù-š7ûaÆw'ÿüëÐá#ùMGÍ™9ƒèl’$Iš¯=«R©ÊÂÜ<,:ÝÛC­V;}†Þ ŸBˆò*õ÷ó3yùù7oÝ2÷*u¨ü-emI-½^_Ñö”CЬÇÓÒÒß3¶÷€×FŽ~ûà¥ÈzüX§ÓååŒûäÓ> õƮݿRjfÑ(²á‰#¿‡S›Aü×(2R¥RÙÊBá~JjjjÚo‡¿ûöèO?ÿàáÃy‹Wº[“¨¨Š…iÒÿŽ?óáïÇöí{õúqŸ~vëöíÏ&|Û§OÒ­ÛñgÏÙ! ÊÄ4­Z­NIMÝwà`¯˜”•@¹è?No©ÙÐ=Óékê0øZÚçUê Jã[ÈšA-°¶=µ!ÄÞöÔ>Š‚ÂBX·q㛣F}òÑø7“¶îÜåççÛ·W”ïšN§£v#IrÙŠUwïÝ[·z•uA¤§§mZ»†:kÐéõ6o),,4Ù¨ÝÆö3BvhßnÁœÙA´ŽŽŽ;~¼ITÔÜYß“$ݪUÜñãò ÆÆV%Q…”ƒÚ!!”•²¥ÌG. ›lOí£P*С][j|‚ ÚDGŸøã”N§S(\U¬Ç=6çûuë„[²ú`f€ÔÔ4ÇÛD·¢ßÍËËS(5üýÍ÷OMM“J¥uêT,lPÖåÈåòúõ"Ì7ë¾|IÔ¯_3 €zÝ8ªQaaáÖ;¿úü3ºõšï@²³Ø!KgY¿ðf¥¾–v{•:®‡ÁŽYvádo{j…M¶§öQ€N§§¡N•-6»*ŠÆ“'Ùдqcãf¸Ÿ’êåé)‘Hèw/]¹Ò±};xy®ò~Jj½ˆÇËFÔ­K¦¤¤Ôˆ †¾Š›ì%Q(ç ZÛ`0”””Ð'Ò-ÆN¬(RàaRÇ’¯¥#^¥,_²3¸pÚd{j…­¶§vPøùùÕ­Sçô™3ôžgÏŸlØP.çŒÂ|ŸV-[Ú·×ÛÛÛî!t?5¥¸¤¤°°Ú¼zízÂÕk¯ Pq·¨F‘Ì…÷RRYÞd/ ½ ’$ß~óEK— †¦Mš\IL¼t%aÑ\.)Ì÷,..NIKkÙ¼¹u£R ,A¤¥¥Ëd²ù‹— ìû(#ãào‡†ܪEór¦—iié±}ú˜G(WHmèׯÒMö’ÀÂ@'—Ë èùs?da$DŒ#$UèôIK¾–È1¯Ra)kN[mOí °ÕöÔŠ˜îÝ4Zí¾ü#,4tÞß·ŽnÅ-û©©3gÏecTj‰åÑÿ2 Fã‚9³:´tÅÊ€5Æ~ðþÈaCË™ÀQ»5lPßuæ÷©ii¡+‰‰=úÆÞ¹w¿™ðù—ÔfFfæW“¿íûÚà÷Ç¿™tëßä;ã?ý¬ÏÀAxõ|ï¾ýo¼ó^Ÿ¯½?î£ÿ;ORrrs'};µß Ác>štû6uÊÚ­wßœÜÒSÖÃqGG¿?¦ïkƒÇ~<áïø3È2\]í"DT+Þ Óê4/CoдuÇÎßy­ÿ¹³f~2~ü“'ÙSgÎBQ×¥ËV¬jþÊ+Æ£6¿Ÿ3¯Ë«¦MþF¯7Ìš;ï‡ùóûõé3ýÛÉF£qáÒeÝßmÚ¶½G÷nß7=²aÃy‹_½~8wá¢öíÚNýæ­V;oábºB¿Ç]µv]×.˜1½ITãy‹߸™$vEU LkêPCá»Zô4Ÿ~<~ØàÁ$IbæããýݬÙÔƒ6xI’ W¯À›£Föï×!d2™.Y:ãÓ)}{÷¢7‹Šž{x¨~Ý·ÔðaŸ~4!Ô£[×ü‚ü_öü§u«VTÀW;výÆë!‚ ü¸¤°¨ˆ*§‚ìÚýëð¡C¨c»vîüàáÿþþ»e‹æe»ºÎEˆ°¦IªŒÁwrÒŸ#„ CAAAFfÖÉSY¬U‹Ô~Ôf‹fͨM__hÑìóMazüäIQQQnÝèeÿzvï^fp оmê-o •ÞÞgν8ö§U«þ~XœbQµÀôpyéù!ª|i­ºu•JåŠÕkö%I2ñÚµ[·ÿ€¤ÛÿPžäôåâ —ocÒÿqýÆë·nÃ0¬q£F/]Nºu{ù’Åf{ZІ½3ú­õ›6#€¦_¿q㟓—-ZXé)«Ø'EÖ'u*¾Kmy{y-œ;{ã–­?­\åãëÓ¯wŸ¯>ût—_]º|¥w¯žðr‡a¹9bØPAÄ?wìxXhèì™ß½Ò¤‰ùäM…C^”<ˆ ˆÃqG8IÛ¼Ù+<NŠÁ!˜ [­úNâ8.—Ë©'é('M¥RI¹jšX.ó¦L&“ÉdÔ•­Ñh¤á³tŽã厥– CÑÇ–åŒÙªE+W×¼å±sç&ÃV«¾“A”ÛA­VS/ÌËËÅaÞ¬ÔNÔÒ!å°±"uª5­Â~å>ÉŠ¨rpSÃV"„ ·ó‡OYEn×!Ý'SUîjØ*B„ áv«Î¹O¦"ª"ÜÔ°ÕÕBDˆ¨îkØ*B„ᦆ­•>ð B„Ë!5™La¡au#ÜͰU„B ˆ4èu†êoE'BD€tç®]®Ö B„ˆR`î0¹*BDUÁÿk<„åMbV’%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/InsertOrAppendChords.png0000644000000000000000000000013213135434036021474 xustar0030 mtime=1500919838.093315139 30 atime=1500919916.163315139 30 ctime=1500919913.343315139 denemo-2.2.0/docs/images/InsertOrAppendChords.png0000644000175000017500000004570213135434036023355 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRÄ£ÙnIsBIT|dˆtEXtSoftwaregnome-screenshotï¿> IDATxœìwxÕúÇ?³›ž@*=’„ŽHQ)"EªÊE,(¨Wïý‰õ ** ‚X®*"ME/WT”« J UAŠj I(IHÛÝlŸß!ënv“l’ÙÝdÏóä9sÞ÷ýž3çÌ9sfFDddddddþâøˆ¢Ü'ÊÈÈÈÈü596•‰]Ê;ÄŠ ÙÙWP*•( DQÄh2a6™P(•ø(•ˆ¢ˆÙl¶É°M›æ–ÿ/Z¼”ï¶ÿæŽ8ddddd\ÌCûòôSÓ<í†ËHÞµ àϱ³ÙŒZSFDd8±±q”––’rò$ù„……CP@ “Ñ€ 6y|·ý7zßæ†0ddddd\ÍwÛwxu‡X]‡h2™(ÈÏC­VѦM 999ìܹ… Dzz:;v"$$ƒ^‡¿Ÿ>>vÙÜÄ-ÈÈÈÔÌË^`ÌóT^Á®Lãcûö 2…Ba³]§Ó±þ¿xèÁìrà Côññ!66–Àà`ŒFjµ†ÀÀ@ztïNDd$………¨T¥ˆˆ¨U*‚@‹æÍí2ÖªK% OÆ•lûômnŸò¢‡=)§!øs×°[˜6yKÖmâ»_öyÌ).þJYDç*÷ûûù2aÄ­ êÛè–ÍP(ŠJÔ\¸x‰WÞ_S«¼\…§ìʸ–‰]œN{îLJ•û-^Æ¢ÅK™ø·»ycþ\K§xùòž˜ö4œ8Iqq±Ã¯]‡¨R©@PúøR¦Õb4ñóóG©T¢×ë)++#,, ƒÞ€Ùl&=3“ÉDÛ¶Ñ6ùÈ#ÄÆGàµTĘ›<í†Où#0~Ø-–ûäw¾‘­¿ü‚ÜÂí¾¸‚ªÎÍà@<û q­šñéWß“¼ãgÔÅ×HJLäλî$P“‹Ø,É©¼\ܾü5P(DEFÕ,Š–-šÕŒ¯6|]eúíÛw²hñR6|ý-oÌŸËï¿áɧŸ£ à‹—|ÄíCo£sçN6ÇÛuˆzƒÐéuè´Z = …€Ñd*ïµZÂ0›ˆ€Z­!¿ ÀÎ1y„Ø8ѪK-#´¯ÜÀýc‡Ð<2Œ¬Ü«,úì;RÎfЩ},OE»ØVø(•œ8“Î×?íáð‰3@ù}å;õá®a·ÐªYy׊ùnÛ>6m?hYÕ\agÉçß3iô ¢ÂCm¦1þ÷¿ÿÕA`üÐ~ŒÚQá\-(bÓö|·mµv†M}©Ê<{uM ºE$ûDÍôïߟñÍ8˜ñg®Èóí_qïèA´nÉå¼B6lIfóîßj®6zUW.£÷åo#n¥Uór¯°þÇÝve숇Ǧ}LK¾\¿ïþó9† æ˜bøõ¢ŽCï¯ÅÇdBouìСC™xßd‡~Ô·\œ‰¡¦:(Óø¸gâßÈÏÏãò•«äçå“_PÀÕ¼<®æå‘šzªÆã‡ ÄÄ¿Ýmé 7|ý-çÎçÄÉŒ××¼øøøðÊË/Úu†à Cl€R¡D«ÕRV¦E«ÕHPp0†  @ŠKJ1ètZ ¯]³ËX¾‚kœX—[¯v‘üëµw铨ŠéÏ=Ãô©ãù¿9‹À¿ ¯þBmÒÞÖ³-³ÞY¥—xê‰Çù×#P˜µl;’^«tµÑ«ºrqKOžz`4‡Ž§0kÖ,0êxòé§«,ckõíÀ®¿ 6mOh´U ´$À*}÷îÝ«ô£>å2üÞ:CMuP¦ñ±à¹6¿M&–òò•+Ìžóz•Ç+ Þ˜_žGE§xôØqËþÈÈ–,ú€>}z;<Þ®C,.)ÀÏß³(b4ðõó£T¥B­ÑPRRBHH&“½Þ€Á`ÄTé Gˆërûì³Ï(UÙ®™D·i çц¶'80£Ñȵ+9è[r(ÇÈïï­Â§,}cö`ý§ŸP¢5°~çI&Mº‡q·ßÂÿ¶îÀènkGmÆÐ´¢`{Ür¯¨ŠútÇ€žl\ÿ)ÅZ3ÿÙvŒ±cÆ0jÈÍ|ûÃVŒUÛqg‹¨púvK #ó"'OžD×4žŒ‹¹ôéÓ‡ÈÕ_Sé˜U«V‘µCpk>új;}z÷æ®aز-“˜Óéj­Wå2vpù‰¾ê£Åä–”Ûûï/ôéu£Ã2¶&¬i0è‚bk8‡«ó£>åâl 5ÕA™ÆR©¤yóæ4·Z§R]‡åâSO>Áöí;¹VXhÙÎÆo¾¢uëVUk×!"Š`FD«-C«Õ¢×é8wîGeìØ±øùù¡ÖhPkÔ¨T¥„…6µËX!6N¬Ë­  Eëž ôʧÁ“Ž€à&|¶i'Þuï¿ÿ>f³™ó/³ö»?AЪy$+V¬°É¿U«Vøê‹ð‰ˆµl»víŠÖ7â¯ô­ÖG´ˆ*ï(ŠŠŠP6ï†Æ¬ Y³føŠñ‰ŒsÊNwˆ üøÃ&ð Â/´?ì9Æ“÷bì°¬ýå‹W¯^EÕŸŠtåS-[¶ÄO_ˆãtºÚèU]¹´jQ¥½š4-*QÞ”ÈÈHtÊpªïTªó£>åâl 5ÕA™¿&‡æÉ§Ÿ³é ®²xÉ2›…6•±ë F#¢(b2™1#¢×ÜÜ\‚CBˆÇ`0¢ÕjÉÏËCEË4«5ò±qR¹Ü´Z ³K³ñ§Ýü´ùšÒ³ç <øàƒ<ÿàhî}rfß` ‹iÙ,‚©S§R`wYp`G hkô§2y׊hÓ"а°0.jµ4 ,ßž—FÓv|}|Ö¯Ó¦McÚ4ÛUhÆ ã³o·¢ñýstÓ¼ysΕéAg Y«f\¾|ÙÎvMéj¯—ãr¹”wø6-Ú³NçˆäCp÷ð 4ˆµ?FTø9LçŒõ)gc¨©Êüõø|Ý—¼±àm›û…ݺv±L›Z/´qÔ)Ú?vqýM4F£NÁh@E†ÞvMš6ÅÇLJ¢â®\¹JNv6!!!´lÙÒ.cy„Ø8©\nŽÊ1 ¸ ¯<>‘ ?ïãÂÅKUʃ€V[†¿æbëžlÚu˜Ç'ç‘Gaù÷û1ˆ º´aüm71kñ—vWðÖvJTš†ѲeK.ùV_¶ÿz‚‡Æ á®»îâ‹'¹üílÙ²|üЧ‚¡7w'´I0ÇŽgÖ«¯Úì›7o7ÜpCúvcûé"ËöG}”Å_í@TúóŒàûï¿·³]Sºúèe½í»óÔ£-öðñç‰Æ8¥Á·äÆŽñÜsÏ=hD?ö¤ä`0šhÛ¦w½‰×?ú¯C›Ž¶Õ§\œ¡¦:(ãjó¸TÿÈD}HM=ÅëóXmUÜ/ìÕëF^yuŽÍBpÜ)Úuˆ!!! ˆ%¥\+*Æ×LJ¨ÈHBÃÂðó÷';;›ÔÔT²³³ñUúO«Vös²ò±qbwåî µêR~رŸ©£o&)!£ÉÄñSgY»bâõý_ý°k—2™pÇ`VÎ{“g3ØðýfÄË)èšÄVigÍ7[™zçP>ùä úU¦_|÷3¢¦ˆaobäÈ‘\)(fŧ_òÃÿþ‡!°F'â©`Ô­å÷¨~ùùg̾Áèšü9­·ùÀ)n¸áÆŒ¾ƒŸ¾gÙ¾oß>^›v/­[µ"ïZK–¯â—_~AÜ“•­šÒÕG/ëmßÿœ Ú"î1ˆOæ?KΕ¾ù)™>];Ô¨V]Ê“¯/eÒm=6àf¦Üs' …‚•šó™Ù˜/§¢ocwŒ£|êS.ÎÆPS”ùkѹs'žzò -^J÷n]Y¶t-[–?*Uy¡Í†¯¿eèmC¸ývÛ7ª €(Š¢å]¦çÏg‘ž‘AfV¥¥¥˜L&A IHfQäZAZŽà`HHH I“&ÄÄü9J¼íÎ)t4Þ ÈH…pñWàÏÕœ•;ܦ-B(¹úògWñ F ‹?«é*MBé%0^Ÿ¦ôk‚ؤ¥e #;¨® ç€Ùàx¿ "”ä"¨óÁ¤¥bH hòg¬ÒNe®œ½1²EÚîÔ œ¿`þ÷Íz |%¬ÑþÏ•~ˆMZAHù"€Š·«Ô”®>z9ŒMuAU>%‹Ob“V×Î;¥¢J/!h®]÷C…Oyù^Ñ9?êY.ÎÄàL”©7'vÏŽï>u© )ÌE‘Ï>ÿ‚{'MÄßßßfŸÙl¶ŒŸ~ê ›ó“wmã‘ÇŸ±ï³².QXXHnn.F³®?A@J%!ÁÁ„††‚Ÿ_ù}†èè?Z¾íÎ)ò»Le¼šŠgèÆŽ[í[SœM'#Ó9{x‡Ë;Dw`6›Ù±c—ÝȰ¢C´›2mEll+zô¨ûÉ{çо|·}G—‘iLœ=ì\]w6ŒLCãΡ}=í‚$( »Îл¢ŒŒŒŒŒÌ_‰Š¢üôªŒŒŒŒŒ V™††7çôéÓäää\6¨a@›6mHJ*¿Ùߘ|¯+Þ³·Å#².Ž‘uqY'ÇXëR\xÕfŸÝ”镼"4 ýúõ#8¸á¯ÔR«Õ8p€   €Få{]ñ¶˜½-©uqŒ¬‹sÈ:9ÆZ—ÍÊ_¯Xå*ÓÃGN0zôhüýý-86dA@§Ó±yófDQlT¾×o‹ÙÛâ‘ YÇȺ8‡¬“c¬uéÕ³+PÍ*SN‡ŸŸŸå[p Qñóó³L4&ß늷ÅìmñH…¬‹cd]œCÖÉ1•u±Æ®ChÖW<Í÷ºâm1{[£R©п?sg¿Š¯ÃfÅe4äÑ“õ¥2žÒ©±´£àÂQ@ YTû¤L«% ÒÇwîN¦YTyùù’Ù”2¨} ½zödÏŽmvù|ùŸõlݶ›ûöqI¥tGEwglRÇãŒï—._©Ñ¾Ñhdæ¬Ù„††±jùGDEE²+y/¾ò*I‰‰Ü=~œ¤~WÆ] šV«åì¹sìJÞË_¥m|¼mQYðÎ»ÄÆÄðõ—_Âþƒyvú ¬ÿj“ï»×-~ZûÓñt}©Œ§tj,í(¸°C>½{±gï>ü•Áoµì3™LìÙ·ŸQ#F°~Ã@limc0›Í•ìg]Ìfíº/øxÉ"Éý³ø)Qž™™lß¹‹¢¢b¢Û´æŽÃiÚ´©Å†»b“Z#g|¯ø¶(šÙ¾sÇOœ 8(ˆ¡CÓ¾]ùèèØñ?ÈÎÉåõٳ𧴴”›úôfü˜1lÙú3w+©ßŽâpûdá’¥@ù÷ã*ŸŸ—¯\ábv6Ï?û4¥¥¥ôìуztçdjªÛ^wÙÛ±{7É+Èg÷ž½øùú2úŽ;ˆnÓšm;vr"%…ð°0ÆŽETd¤ÇëKe¤Ð©¶@ãiGÁÅ‹j|”> 4ˆ»w3èÖ–í¿9Š^¯çæ›ú²~ÃD±avˆPû*ÛïÃ…Lœp7ñqq˜L&I}«@Š˜÷8ÀœyoCÛø8¾úæ[þûÍ7,[ø¡e Ñ]±¹ã¢¡²ï"åû.]FNn.];wá·C‡Y¿ákæÍžEÿ~7ST\ @dd¤å­ƒ˜˜h6nÚ„Á`ÀÇ…Ó…îjø‡ß>”qcFpçÄIv¶ƒƒƒyïí7阔dÑA¯×SPpŽI‰^Û!®X¹š˜èhòòó¹¡Gwv&'óÖŸèÑ­………$&t`ã¦MlÛ±“OW®ðx}©Œ$kCj©R©G; .îEDn<ˆ_™…Z£!(0€Ý{ö0 ?||”ÒÛ”ztQvìÞÍùôtÞY0£Ñ(©_6>Ö3fƒÁÀâeË

into the current chord object */ static void parseFigure (xmlNodePtr figureElem, DenemoObject * curobj) { gchar *figure = (gchar *) xmlNodeListGetString (figureElem->doc, figureElem->xmlChildrenNode, 1); ((chord *) curobj->object)->is_figure = TRUE; //chord *ch = curobj->object; ((chord *) curobj->object)->figure = g_string_new (figure); //g_string_new (figure); //printf("\n figure == %s\n", ((GString *) ((chord *) curobj->object)->figure)->str); g_free (figure); } /** * Parse the given into the current chord object */ static void parseFakechord (xmlNodePtr fakechordElem, DenemoObject * curobj) { gchar *fakechord = (gchar *) xmlNodeListGetString (fakechordElem->doc, fakechordElem->xmlChildrenNode, 1); if (fakechord) { ((chord *) curobj->object)->is_fakechord = TRUE; ((chord *) curobj->object)->fakechord = g_string_new (fakechord); } g_free (fakechord); } /** * Parse the given element into a note structure and add it to the * given chord. */ static void parseNote (xmlNodePtr noteElem, DenemoObject * chordObj, clef *currentClef) { xmlNodePtr childElem; gint middleCOffset = 0, accidental = 0, noteHeadType = DENEMO_NORMAL_NOTEHEAD; gchar *accidentalName, *showAccidentalProp, *noteHeadName; GList *directives = NULL; FOREACH_CHILD_ELEM (childElem, noteElem) { { if (ELEM_NAME_EQ (childElem, "middle-c-offset")) { middleCOffset = getXMLIntChild (childElem); if (middleCOffset == G_MAXINT) { g_warning ("Couldn't get middle C offset; defaulting to 0"); middleCOffset = 0; } } else if (ELEM_NAME_EQ (childElem, "accidental")) { accidentalName = (gchar *) xmlGetProp (childElem, (xmlChar *) "name"); if (accidentalName == NULL) { g_warning (" had no name attribute; defaulting " "to natural"); accidental = 0; } else if (strcmp (accidentalName, "natural") == 0) accidental = 0; else if (strcmp (accidentalName, "flat") == 0) accidental = -1; else if (strcmp (accidentalName, "sharp") == 0) accidental = 1; else if (strcmp (accidentalName, "double-flat") == 0) accidental = -2; else if (strcmp (accidentalName, "double-sharp") == 0) accidental = 2; else { g_warning ("Unknown accidental name \"%s\"; defaulting to " "natural", accidentalName); accidental = 0; } g_free (accidentalName); showAccidentalProp = (gchar *) xmlGetProp (childElem, (xmlChar *) "show"); if (showAccidentalProp != NULL) { if (strcmp (showAccidentalProp, "true") != 0 && strcmp (showAccidentalProp, "false") != 0) { g_warning ("Unknown show accidental attribute value " "\"%s\" (should be true or false); " "defaulting to false", showAccidentalProp); } g_free (showAccidentalProp); } } else if (ELEM_NAME_EQ (childElem, "directives")) { directives = parseDirectives (childElem); } else if (ELEM_NAME_EQ (childElem, "note-head")) { noteHeadName = (gchar *) xmlGetProp (childElem, (xmlChar *) "type"); if (noteHeadName == NULL) { g_warning (" element had no type attribute; " "defaulting to normal"); noteHeadType = DENEMO_NORMAL_NOTEHEAD; } else if (strcmp (noteHeadName, "normal") == 0) noteHeadType = DENEMO_NORMAL_NOTEHEAD; else if (strcmp (noteHeadName, "cross") == 0) noteHeadType = DENEMO_CROSS_NOTEHEAD; else if (strcmp (noteHeadName, "harmonic") == 0) noteHeadType = DENEMO_HARMONIC_NOTEHEAD; else if (strcmp (noteHeadName, "diamond") == 0) noteHeadType = DENEMO_DIAMOND_NOTEHEAD; else { g_warning ("Unknown notehead type \"%s\"; defaulting to " "normal", noteHeadName); noteHeadType = DENEMO_NORMAL_NOTEHEAD; } g_free (noteHeadName); } } /* * The code near the bottom of parseMeasures() handles other namespaces * inside s, so we won't do anything here. */ } static stemdirective dummystem = {2, NULL}; chordObj->stemdir = &dummystem;//is this needed? static clef dummyclef = {DENEMO_TREBLE_CLEF, NULL}; chordObj->clef = &dummyclef; static keysig dummykey = {0}; chordObj->keysig = &dummykey;//is this needed? if (Denemo.project->movement) //NULL for snippets { chordObj->keysig = &((DenemoStaff *) Denemo.project->movement->currentstaff->data)->keysig; chordObj->clef = &((DenemoStaff *) Denemo.project->movement->currentstaff->data)->clef; } /* Now actually construct the note object. */ //g_print ("Adding a note with keysig type %d\n", ((DenemoStaff *) Denemo.project->movement->currentstaff->data)->keysig.number); note *newnote = addtone (chordObj, middleCOffset, accidental); newnote->directives = directives; if (noteHeadType != DENEMO_NORMAL_NOTEHEAD) { /* FIXME: Is this the right note in the chord? */ ((note *) ((chord *) chordObj->object)->notes->data)->noteheadtype = (enum headtype) noteHeadType; } } /** * Parse the given or 's duration only, not any other * subelements, and return a simple DenemoObject corresponding to that chord * or rest. */ static DenemoObject * parseBaseChord (xmlNodePtr chordElem) { xmlNodePtr durationElem, dotsElem; xmlNodePtr childElem; gboolean successful = FALSE; gchar *durationType; gint baseDuration = 2, numDots = 0; gchar *showProp = (gchar *) xmlGetProp (chordElem, (xmlChar *) "show"); gboolean show = TRUE; if (showProp != NULL) { if (strcmp (showProp, "true") == 0) show = TRUE; else if (strcmp (showProp, "false") == 0) show = FALSE; else { g_warning ("Invalid value for show attribute of or : \"%s\"; " "defaulting to false", showProp); show = FALSE; } } gchar *grace_type = (gchar*) xmlGetProp (chordElem, (xmlChar *) "grace"); gint grace = (grace_type ? (strcmp (grace_type, "true") ? ACCIACCATURA : GRACED_NOTE) : 0); //we only store this for grace notes g_free (grace_type); /* * First, in order to actually create a chord object, we must figure out the * Denemo duration and number of dots from the XML duration. */ durationElem = getXMLChild (chordElem, "duration"); if (durationElem == NULL) { g_warning ("No duration found in chord; defaulting to quarter note"); } else { durationType = (gchar *) xmlGetProp (durationElem, (xmlChar *) "base"); if (durationType == NULL) { g_warning ("No base attribute found in chord duration; defaulting " "to quarter note"); } else { if (strcmp (durationType, "whole") == 0) baseDuration = 0; else if (strcmp (durationType, "half") == 0) baseDuration = 1; else if (strcmp (durationType, "quarter") == 0) baseDuration = 2; else if (strcmp (durationType, "eighth") == 0) baseDuration = 3; else if (strcmp (durationType, "sixteenth") == 0) baseDuration = 4; else if (strcmp (durationType, "thirty-second") == 0) baseDuration = 5; else if (strcmp (durationType, "sixty-fourth") == 0) baseDuration = 6; else if (strcmp (durationType, "one-hundred-twenty-eighth") == 0) baseDuration = 7; else { g_warning ("Unknown base duration type \"%s\"; defaulting to " "quarter note", durationType); } g_free (durationType); successful = TRUE; dotsElem = getXMLChild (durationElem, "dots"); if (dotsElem != NULL) { numDots = getXMLIntChild (dotsElem); if (numDots == G_MAXINT) { g_warning ("Invalid number of dots; defaulting to 0"); numDots = 0; } } } } if (!successful) { baseDuration = 2; numDots = 0; } DenemoObject *chordObj = show ? newchord (baseDuration, numDots, 0) : hidechord (newchord (baseDuration, numDots, 0)); ((chord *) chordObj->object)->is_grace = grace; FOREACH_CHILD_ELEM (childElem, chordElem) { { if (ELEM_NAME_EQ (childElem, "directives")) { ((chord *) chordObj->object)->directives = parseDirectives (childElem); if (version_number < 3) fix_prefix_use (((chord *) chordObj->object)->directives); } else if (ELEM_NAME_EQ (childElem, "figure")) { parseFigure (childElem, chordObj); //si->has_figures = (gpointer) TRUE; } else if (ELEM_NAME_EQ (childElem, "fakechord")) { parseFakechord (childElem, chordObj); // si->has_fakechords = (gpointer) TRUE; } } } return chordObj; } /** * Parse the given element and return a chord-type DenemoObject. */ static DenemoObject * parseRest (xmlNodePtr restElem) { DenemoObject *chordObj; xmlNodePtr childElem; chordObj = parseBaseChord (restElem); FOREACH_CHILD_ELEM (childElem, restElem) { if (ELEM_NAME_EQ (childElem, "ticks")) { chordObj->basic_durinticks = getXMLIntChild (childElem); ((chord *) chordObj->object)->baseduration = -chordObj->basic_durinticks; } else if (ELEM_NAME_EQ (childElem, "cresc-begin")) { ((chord *) chordObj->object)->crescendo_begin_p = TRUE; } else if (ELEM_NAME_EQ (childElem, "cresc-end")) { ((chord *) chordObj->object)->crescendo_end_p = TRUE; } else if (ELEM_NAME_EQ (childElem, "dim-begin")) { ((chord *) chordObj->object)->diminuendo_begin_p = TRUE; } else if (ELEM_NAME_EQ (childElem, "dim-end")) { ((chord *) chordObj->object)->diminuendo_end_p = TRUE; } } return chordObj; } /** * Parse the given into a dynamic DenemoObject. */ static void parseDynamic (xmlNodePtr dynamicElem, DenemoObject * curobj) { gchar *dynamicName = (gchar *) xmlGetProp (dynamicElem, (xmlChar *) "name"); /*DenemoObject *result = NULL; */ GString *dynString = g_string_new (dynamicName); if (dynamicName == NULL) { g_warning ("No \"name\" attribute on element; ignoring"); } else { ((chord *) curobj->object)->dynamics = g_list_append (((chord *) curobj->object)->dynamics, dynString); } g_free (dynamicName); } static GdkPixbuf * parseSource (xmlNodePtr parentElem) { GError *error = NULL; gchar *cdata = (gchar*) xmlNodeListGetString (parentElem->doc, parentElem->xmlChildrenNode, 1); gsize len; guchar *buf = g_base64_decode (cdata, &len); // xml free(cdata); GInputStream *is = g_memory_input_stream_new_from_data (buf, len, NULL); GdkPixbuf *pb = gdk_pixbuf_new_from_stream (is, NULL, &error); g_free (buf); return pb; } /** * Parse the given sources element. * * @param chordElem the XML node to process * @param GList populated */ static GList * parseSources (xmlNodePtr parentElem) { GList *sources = NULL; xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, parentElem) sources = g_list_append (sources, parseSource (childElem)); return sources; } DenemoScrollPoint *parseScrollPoint (xmlNodePtr parentElem) { xmlNodePtr childElem; DenemoScrollPoint *sp = (DenemoScrollPoint*)g_malloc (sizeof (DenemoScrollPoint)); FOREACH_CHILD_ELEM (childElem, parentElem) { if (ELEM_NAME_EQ (childElem, "time")) sp->time = getXMLIntChild (childElem)/1000.0; if (ELEM_NAME_EQ (childElem, "adj")) sp->adj = getXMLIntChild (childElem)/1000.0; if (ELEM_NAME_EQ (childElem, "x")) sp->x = getXMLIntChild (childElem)/1000.0; if (ELEM_NAME_EQ (childElem, "y")) sp->y = getXMLIntChild (childElem)/1000.0; } return sp; } /** * Parse the given Scroll Points element. * * @param chordElem the XML node to process * @return the GList* populated */ static GList * parseScrollPoints (xmlNodePtr parentElem) { GList *pts = NULL; xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, parentElem) pts = g_list_append (pts, parseScrollPoint (childElem)); return pts; } static void parseAudio (xmlNodePtr parentElem, DenemoMovement * si) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, parentElem) { if (ELEM_NAME_EQ (childElem, "filename")) si->recording->filename = g_strdup ((gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1)); if (ELEM_NAME_EQ (childElem, "lead-in")) si->recording->leadin = getXMLIntChild (childElem); } } /** * Parse the given element and return a chord-type DenemoObject. * * @param chordElem the XML node to process * @param ns the Denemo XML namespaces * @param si the DenemoMovement to populate * @param slurEndChordElems pointer to a slur end element * @param crescEndChordElems pointer to a crescendo end element * @param diminEndChordElems pointer to a diminuendo end element * @param noteElem a pointer to a note XML element * @return the new DenemoObject */ static DenemoObject * parseChord (xmlNodePtr chordElem, clef *currentClef) { DenemoObject *chordObj = parseBaseChord (chordElem); xmlNodePtr childElem, grandchildElem; FOREACH_CHILD_ELEM (childElem, chordElem) { { if (ELEM_NAME_EQ (childElem, "duration")) { /* This was already parsed during parseBaseChord(). */ } else if (ELEM_NAME_EQ (childElem, "ticks")) { chordObj->basic_durinticks = getXMLIntChild (childElem); ((chord *) chordObj->object)->baseduration = -chordObj->basic_durinticks; } else if (ELEM_NAME_EQ (childElem, "slur-begin")) { ((chord *) chordObj->object)->slur_begin_p = TRUE; } else if (ELEM_NAME_EQ (childElem, "slur-end")) { ((chord *) chordObj->object)->slur_end_p = TRUE; } else if (ELEM_NAME_EQ (childElem, "cresc-begin")) { ((chord *) chordObj->object)->crescendo_begin_p = TRUE; } else if (ELEM_NAME_EQ (childElem, "cresc-end")) { ((chord *) chordObj->object)->crescendo_end_p = TRUE; } else if (ELEM_NAME_EQ (childElem, "dim-begin")) { ((chord *) chordObj->object)->diminuendo_begin_p = TRUE; } else if (ELEM_NAME_EQ (childElem, "dim-end")) { ((chord *) chordObj->object)->diminuendo_end_p = TRUE; } else if (ELEM_NAME_EQ (childElem, "dynamic")) { parseDynamic (childElem, chordObj); } else if (ELEM_NAME_EQ (childElem, "tie")) { /* For now at least, ignore the "to" attribute. */ ((chord *) chordObj->object)->is_tied = TRUE; } else if (ELEM_NAME_EQ (childElem, "slurs")) { } else if (ELEM_NAME_EQ (childElem, "crescendos")) { } else if (ELEM_NAME_EQ (childElem, "diminuendos")) { } else if (ELEM_NAME_EQ (childElem, "notes")) { FOREACH_CHILD_ELEM (grandchildElem, childElem) { if ( ELEM_NAME_EQ (grandchildElem, "note")) { parseNote (grandchildElem, chordObj, currentClef); } else { ILLEGAL_ELEM ("notes", grandchildElem); } } } else if (ELEM_NAME_EQ (childElem, "lyric")) { parseLyric (childElem); } else if (ELEM_NAME_EQ (childElem, "chordize")) { ((chord *) chordObj->object)->chordize = TRUE; } else if (ELEM_NAME_EQ (childElem, "directives")) { ; //done in base } else if (ELEM_NAME_EQ (childElem, "figure")) { ; //done in base } else if (ELEM_NAME_EQ (childElem, "fakechord")) { ; //done in base } else { ILLEGAL_ELEM ("chord", childElem); } } /* end if childElem->ns == ns */ } /* end for each childElem in scoreElem */ return chordObj; } /* * Parse the given element into a DenemoObject. */ static DenemoObject * parseLilyDir (xmlNodePtr LilyDirectiveElem) { gchar *directive = (gchar *) xmlNodeListGetString (LilyDirectiveElem->doc, LilyDirectiveElem->xmlChildrenNode, 1); DenemoObject *curobj = lily_directive_new (directive ? directive : " "); DenemoDirective *thedirective = (lilydirective *) curobj->object; if (directive == NULL) { parseDirective (LilyDirectiveElem, thedirective); } else { //backward compatibility #define GET_STR_FIELD(display)\ gchar *display = (gchar *) xmlGetProp (LilyDirectiveElem, (xmlChar *) #display);\ if(display)\ ((lilydirective*)curobj->object)->display = g_string_new(display);\ g_free(display); GET_STR_FIELD (tag); GET_STR_FIELD (display); GET_STR_FIELD (midibytes); GET_STR_FIELD (grob); GET_STR_FIELD (data); GET_STR_FIELD (graphic_name); GET_STR_FIELD (prefix); if (thedirective->graphic_name && thedirective->graphic_name->len) loadGraphicItem (thedirective->graphic_name->str, (DenemoGraphic **) & thedirective->graphic); if(version_number < 7) { GString *lily = ((lilydirective*)curobj->object)->postfix; //convert old style barlines to LilyPond 2.18 style if(lily) { gchar *postfix = lily->str; if (!g_strcmp0 ("\\bar \":|\"", postfix)) g_string_assign(lily, "\\bar \":|.\""); else if (!g_strcmp0 (" \\bar \"|:\"", postfix))//Note there was a space in the old directive before \bar! g_string_assign(lily, "\\bar \".|:\""); else if (!g_strcmp0 ("\\bar \"|:\"", postfix))//for versions without the space g_string_assign(lily, "\\bar \".|:\""); else if (!g_strcmp0 (" \\bar \":|:\"", postfix)) //Note there was a space in (some versions of?) the old directive! g_string_assign(lily, "\\bar \":..:\""); else if (!g_strcmp0 ("\\bar \":|:\"", postfix)) g_string_assign(lily, "\\bar \":..:\""); } } #define GET_INT_FIELD(x)\ gchar *x = (gchar *) xmlGetProp (LilyDirectiveElem, (xmlChar *) #x);\ if(x)\ thedirective->x = atoi(x);\ g_free(x); //GET_INT_FIELD (x); //GET_INT_FIELD (y); no need to keep these for backward compatibility GET_INT_FIELD (tx); GET_INT_FIELD (ty); GET_INT_FIELD (gx); GET_INT_FIELD (gy); GET_INT_FIELD (override); UPDATE_OVERRIDE (thedirective); GET_INT_FIELD (minpixels); }// end of backward compatibility setpixelmin (curobj); gchar *locked = (gchar *) xmlGetProp (LilyDirectiveElem, (xmlChar *) "locked"); if (locked) thedirective->locked = !strcmp (locked, "true"); g_free (locked); gchar *ticks = (gchar *) xmlGetProp (LilyDirectiveElem, (xmlChar *) "ticks"); if (ticks) curobj->durinticks = atoi (ticks); //FIXME memory leak on ticks return curobj; } /** * Parse the given element into a DenemoObject. * @param stemDirectiveElem the XML node to process * @param ns the Denemo XML namespaces * @param si the DenemoMovement to populate * * @return the new DenemoObject * */ static void parseStemDirective (xmlNodePtr stemDirectiveElem, stemdirective * stem) { xmlNodePtr childElem; gchar *stemDirName = (gchar *) xmlGetProp (stemDirectiveElem, (xmlChar *) "type"); enum stemdirections stemDir = DENEMO_STEMBOTH; if (stemDirName == NULL) g_warning ("No \"type\" attribute on element; " "defaulting to auto"); else if (strcmp (stemDirName, "auto") == 0) stemDir = DENEMO_STEMBOTH; else if (strcmp (stemDirName, "up") == 0) stemDir = DENEMO_STEMUP; else if (strcmp (stemDirName, "down") == 0) stemDir = DENEMO_STEMDOWN; else g_warning ("Invalid stem directive type \"%s\"; defaulting to auto", stemDirName); FOREACH_CHILD_ELEM (childElem, stemDirectiveElem) { if (ELEM_NAME_EQ (childElem, "directives")) { stem->directives = parseDirectives (childElem); } } stem->type = stemDir; return; } /** * Parse the given into a tuplet open DenemoObject. * * @param tupletStartElem the XML node to process * @param ns the Denemo XML namespaces * @param si the DenemoMovement to populate * * @return the new DenemoObject */ static void parseTupletStart (xmlNodePtr tupletStartElem, tuplet * tup) { xmlNodePtr childElem; xmlNodePtr multiplierElem = getXMLChild (tupletStartElem, "multiplier"); gboolean successful = FALSE; gint numerator, denominator; if (multiplierElem == NULL) { g_warning ("No element found under ; " "defaulting to 1/1"); } else { if (parseFraction (multiplierElem, &numerator, &denominator) == 0) { successful = TRUE; } else { g_warning ("Bad multiplier fraction found for ; " "defaulting to 1/1"); } } //FIXME get mult elem in this loop FOREACH_CHILD_ELEM (childElem, tupletStartElem) { if (ELEM_NAME_EQ (childElem, "directives")) { tup->directives = parseDirectives (childElem); } } if (!successful) { numerator = 1; denominator = 1; } tup->numerator = numerator; tup->denominator = denominator; return; } /* tupet end */ static void parseTupletEnd (xmlNodePtr tupletStartElem, tuplet * tup) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, tupletStartElem) { if (ELEM_NAME_EQ (childElem, "directives")) { tup->directives = parseDirectives (childElem); } } return; } /** * Parse the given into the thumbnail DenemoSelection. * @param thumbElem the XML node to process * @param ns the Denemo XML namespaces * @param selection the DenemoSelection to populate * * @return */ static void parseThumbElem (xmlNodePtr thumbElem, DenemoSelection * selection) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, thumbElem) { if (ELEM_NAME_EQ (childElem, "first-staff")) selection->firststaffmarked = getXMLIntChild (childElem); else if (ELEM_NAME_EQ (childElem, "last-staff")) selection->laststaffmarked = getXMLIntChild (childElem); else if (ELEM_NAME_EQ (childElem, "first-measure")) selection->firstmeasuremarked = getXMLIntChild (childElem); else if (ELEM_NAME_EQ (childElem, "last-measure")) selection->lastmeasuremarked = getXMLIntChild (childElem); else if (ELEM_NAME_EQ (childElem, "first-obj")) selection->firstobjmarked = getXMLIntChild (childElem); else if (ELEM_NAME_EQ (childElem, "last-obj")) selection->lastobjmarked = getXMLIntChild (childElem); } } /** * Parse the given into the thumbnail DenemoSelection. * @param thumbElem the XML node to process * @param ns the Denemo XML namespaces * @param selection the DenemoSelection to populate * * @return */ static void parseSourceFileElem (xmlNodePtr sElem, DenemoProject * gui) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, sElem) { if (ELEM_NAME_EQ (childElem, "x")) gui->source_x = getXMLIntChild (childElem); else if (ELEM_NAME_EQ (childElem, "y")) gui->source_y = getXMLIntChild (childElem); else if (ELEM_NAME_EQ (childElem, "width")) gui->source_width = getXMLIntChild (childElem); else if (ELEM_NAME_EQ (childElem, "height")) gui->source_height = getXMLIntChild (childElem); else if (ELEM_NAME_EQ (childElem, "scale")) gui->source_scale = getXMLIntChild (childElem); } } /** * Parse the given element into the given score. * @param editInfoElem the XML node to process * @param ns the Denemo XML namespaces * @param si the DenemoMovement to populate * * @return 0 on succes, -1 on failure */ static gint parseSetupInfo (xmlNodePtr editInfoElem, DenemoProject * gui) { xmlNodePtr childElem; gchar *tmp; FOREACH_CHILD_ELEM (childElem, editInfoElem) { { if (ELEM_NAME_EQ (childElem, "lilyversion")) { tmp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (tmp != NULL && strcmp (tmp, "2.8.7")) //2.8.7 is ignored, it was the value used when version was mandated, but did not mean anything. { //g_debug ("lilypond version %s", tmp); //g_string_assign (gui->lilycontrol.lilyversion, tmp); if (strcmp (tmp, INSTALLED_LILYPOND_VERSION)) g_warning ("This file may contain embedded LilyPond from an earlier LilyPond version\nIf you have problems printing from it\nrefresh the directives responsible."); g_free (tmp); } else g_warning ("ignoring version %s", tmp); } if (ELEM_NAME_EQ (childElem, "lilypond")) //backward compatibility only { tmp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (tmp != NULL) { DenemoDirective *directive = (DenemoDirective *) g_malloc0 (sizeof (DenemoDirective)); directive->postfix = g_string_new (tmp); directive->tag = g_string_new ("UnknownScoreTag"); gui->lilycontrol.directives = g_list_append (NULL, directive); g_free (tmp); } } else if (ELEM_NAME_EQ (childElem, "fontsize")) { gint font = getXMLIntChild (childElem); gui->lilycontrol.staffsize = g_string_new (g_strdup_printf ("%d", font)); //g_debug ("Font Size %d", font); } else if (ELEM_NAME_EQ (childElem, "papersize")) { tmp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (tmp != NULL) { //g_debug ("Paper size %s\n", tmp); g_string_assign (gui->lilycontrol.papersize, tmp); g_free (tmp); } } else if (ELEM_NAME_EQ (childElem, "orientation")) { gint orientation = getXMLIntChild (childElem); gui->lilycontrol.orientation = orientation; //g_debug ("Orientation %d\n", orientation); } else if (ELEM_NAME_EQ (childElem, "total-edit-time")) { gint edit = getXMLIntChild (childElem); gui->total_edit_time = edit; reset_editing_timer (); } else if (ELEM_NAME_EQ (childElem, "score-directives")) { gui->lilycontrol.directives = parseWidgetDirectives (childElem, (gpointer) score_directive_put_graphic, NULL, &(gui->lilycontrol.directives)); } } } return 0; } /** * Parse the given element into the given score. * @param editInfoElem the XML node to process * @param ns the Denemo XML namespaces * @param si the DenemoMovement to populate * * @return 0 on success, -1 on failure */ static gint parseEditInfo (xmlNodePtr editInfoElem, DenemoMovement * si) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, editInfoElem) { { if (ELEM_NAME_EQ (childElem, "staffno")) { current_staff = getXMLIntChild (childElem); //g_debug ("Staff no %d\t", current_staff); } if (ELEM_NAME_EQ (childElem, "measureno")) { current_measure = getXMLIntChild (childElem); //g_debug ("Staff no %d\t", current_staff); } else if (ELEM_NAME_EQ (childElem, "cursorposition")) { current_position = getXMLIntChild (childElem); if (current_position < 0) current_position = 0; } else if (ELEM_NAME_EQ (childElem, "tonalcenter")) { tonal_center = getXMLIntChild (childElem); if (tonal_center < -7 || tonal_center > 7) tonal_center = 0; set_enharmonic_position (tonal_center); } else if (ELEM_NAME_EQ (childElem, "zoom")) { si->zoom = getXMLIntChild (childElem) / 100.0; if (si->zoom < 0.01) si->zoom = 1.0; } else if (ELEM_NAME_EQ (childElem, "system-height")) { si->system_height = getXMLIntChild (childElem) / 100.0; if (si->system_height < 0.01) si->system_height = 1.0; } else if (ELEM_NAME_EQ (childElem, "page-zoom")) { si->page_zoom = getXMLIntChild (childElem) / 100.0; if (si->page_zoom < 0.01) si->page_zoom = 1.0; } else if (ELEM_NAME_EQ (childElem, "page-system-height")) { si->page_system_height = getXMLIntChild (childElem) / 100.0; if (si->page_system_height < 0.01) si->page_system_height = 1.0; } else if (ELEM_NAME_EQ (childElem, "page-width")) { si->page_width = getXMLIntChild (childElem); if (si->page_width < 0) si->page_width = 0; } else if (ELEM_NAME_EQ (childElem, "page-height")) { si->page_height = getXMLIntChild (childElem); if (si->page_height < 0) si->page_height = 0; } else if (ELEM_NAME_EQ (childElem, "measure-width")) { si->measurewidth = getXMLIntChild (childElem); if (si->measurewidth < 10) si->measurewidth = DENEMO_INITIAL_MEASURE_WIDTH; } } } return 0; } /** * Parse the given element into the given score. * @param scoreInfoElem the XML node to process * @param ns the Denemo XML namespaces * @param si the DenemoMovement to populate * * @return 0 on success, -1 on failure */ static gint parseScoreInfo (xmlNodePtr scoreInfoElem, DenemoMovement * si) { xmlNodePtr childElem, grandchildElem; gint bpm; // gchar *title, *subtitle, *composer, *poet, *meter, *arranger, *opus; // gchar *instrument, *dedication, *piece, *head, *copyright, *footer, gchar *title, *mvmnt_header, *markup_before, *markup_after, *layout_markup; FOREACH_CHILD_ELEM (childElem, scoreInfoElem) { { if (ELEM_NAME_EQ (childElem, "tempo")) { FOREACH_CHILD_ELEM (grandchildElem, childElem) { { if (ELEM_NAME_EQ (grandchildElem, "duration")) { /* Do nothing -- it's always going to be 1/4. */ } else if (ELEM_NAME_EQ (grandchildElem, "bpm")) { bpm = getXMLIntChild (grandchildElem); if (bpm == G_MAXINT) { bpm = 120; g_warning ("Bad value for : must be an integer"); } si->tempo = bpm; if (si->tempo < 1 || si->tempo > 1000) si->tempo = 120; set_master_tempo (si, 1.0); } else { ILLEGAL_ELEM ("tempo", grandchildElem); } } } } else if (ELEM_NAME_EQ (childElem, "title")) { title = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (title != NULL) { //g_string_assign (si->headerinfo.title, title); gchar *val = g_strdup_printf ("title = \"%s\"\n", title); header_directive_put_postfix ("Movement-title", val); header_directive_put_display ("Movement-title", title); paper_directive_put_postfix ("PrintAllHeaders", "printallheaders = ##t\n"); g_free (val); g_free (title); } } #define DO_ELEM(subtitle, dummy)\ else if (ELEM_NAME_EQ (childElem, subtitle))\ {\ gchar *field = (gchar *) xmlNodeListGetString (childElem->doc,\ childElem->\ xmlChildrenNode, 1);\ if (field != NULL)\ {\ gchar *val = g_strdup_printf(subtitle" = \"%s\"\n", field);\ header_directive_put_postfix("Movement-"subtitle, val);\ header_directive_put_display("Movement-"subtitle, field);\ paper_directive_put_postfix("PrintAllHeaders", "printallheaders = ##t\n");\ g_free(val);\ g_free (field);\ }\ }\ //FIXME are these actually in use??? I think the fields are place in a element DO_ELEM ("subtitle", 0) DO_ELEM ("composer", "HeaderComposer") DO_ELEM ("poet", "HeaderPoet") DO_ELEM ("meter", "HeaderMeter") DO_ELEM ("opus", "HeaderOpus") DO_ELEM ("arranger", "HeaderArranger") DO_ELEM ("instrument", "HeaderInstrument") DO_ELEM ("dedication", "HeaderDedication") DO_ELEM ("piece", "HeaderPiece") DO_ELEM ("head", "HeaderHead") DO_ELEM ("copyright", "HeaderCopyright") DO_ELEM ("footer", "HeaderFooter") #undef DO_ELEM #if 0 //drop support for this legacy setting of the tagline field else if (ELEM_NAME_EQ (childElem, "tagline")) { tagline = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (tagline != NULL) { gchar *val = g_strdup_printf ("tagline = \"%s\"\n", tagline); scoreheader_directive_put_postfix ("Scoretagline", val); g_free (val); g_free (tagline); } } #endif else if (ELEM_NAME_EQ (childElem, "extra")) { mvmnt_header = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (mvmnt_header != NULL) { //g_string_assign (si->headerinfo.extra, mvmnt_header); g_free (mvmnt_header); } } else if (ELEM_NAME_EQ (childElem, "markup_before")) { markup_before = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (markup_before != NULL) { //g_string_assign (si->headerinfo.lilypond_before, markup_before); g_free (markup_before); } } else if (ELEM_NAME_EQ (childElem, "markup_after")) { markup_after = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (markup_after != NULL) { //g_string_assign (si->headerinfo.lilypond_after, markup_after); g_free (markup_after); } } else if (ELEM_NAME_EQ (childElem, "layout_markup")) { layout_markup = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (layout_markup != NULL) { //g_string_assign (si->headerinfo.layout, layout_markup); g_free (layout_markup); } } } } return 0; } /** * Parse the given element into the staff in the given score. * @param staffElem the XML node to process * @param ns the Denemo XML namespaces * @param si the DenemoMovement to populate * * @return 0 on success, -1 on failure */ static gint parseStaff (xmlNodePtr staffElem, DenemoMovement * si) { xmlNodePtr staffInfoElem, childElem; DenemoStaff *curStaff = (DenemoStaff *) si->currentprimarystaff->data; staffInfoElem = getXMLChild (staffElem, "staff-info"); //RETURN_IF_ELEM_NOT_FOUND ("staff", staffInfoElem, "staff-info"); if (staffInfoElem == NULL) return 0; //rest is backward compatibility only FOREACH_CHILD_ELEM (childElem, staffInfoElem) { { if (ELEM_NAME_EQ (childElem, "number-of-lines")) { curStaff->no_of_lines = getXMLIntChild (childElem); if (curStaff->no_of_lines == G_MAXINT) { g_warning ("Could not determine number of lines in staff; " "defaulting to 5"); curStaff->no_of_lines = 5; } } else if (ELEM_NAME_EQ (childElem, "volume")) { curStaff->volume = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "midi_prognum_override")) { /*obsolete */ ; } else if (ELEM_NAME_EQ (childElem, "midi_prognum")) { curStaff->midi_prognum = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "midi_channel")) { curStaff->midi_channel = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "transpose")) { curStaff->transposition = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "space_above")) { // set dynamically now // curStaff->space_above = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "space_below")) { // set dynamically now // curStaff->space_below = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "hasfigures")) { curStaff->hasfigures = getXMLIntChild (childElem); if (curStaff->hasfigures) si->has_figures = (gpointer) TRUE; } else if (ELEM_NAME_EQ (childElem, "hasfakechords")) { curStaff->hasfakechords = getXMLIntChild (childElem); if (curStaff->hasfakechords) si->has_fakechords = (gpointer) TRUE; } else if (ELEM_NAME_EQ (childElem, "haslyrics")) { //backward compatibility only } else if (ELEM_NAME_EQ (childElem, "verses")) { parseVerses (si, curStaff, childElem); } else if (ELEM_NAME_EQ (childElem, "instrument")) { gchar *temp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (temp) g_string_assign (curStaff->midi_instrument, temp); else curStaff->midi_instrument = g_string_new (""); g_free (temp); } else if (ELEM_NAME_EQ (childElem, "device-port")) { gchar *temp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (temp) g_string_assign (curStaff->device_port, temp); else curStaff->device_port = g_string_new (""); g_free (temp); } else if (ELEM_NAME_EQ (childElem, "context")) { gchar *temp = NULL; temp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); addContext (temp); g_free (temp); } else if (ELEM_NAME_EQ (childElem, "lilybefore")) { gchar *temp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (temp) g_warning ("Ignoring the old-style string %s\nAdd this in LilyPond window if required", temp); g_free (temp); } /* else if (ELEM_NAME_EQ (childElem, "staff-prolog")) */ /* { */ /* gchar *temp = */ /* (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); */ /* curStaff->staff_prolog = (temp?g_string_new(temp):NULL); */ /* g_free (temp); */ /* } */ else if (ELEM_NAME_EQ (childElem, "staff-prolog-insert")) //backward compatibility only { gchar *temp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (temp) { DenemoDirective *directive = (DenemoDirective *) g_malloc0 (sizeof (DenemoDirective)); directive->postfix = g_string_new (temp); curStaff->staff_directives = g_list_append (NULL, directive); g_free (temp); } } else if (ELEM_NAME_EQ (childElem, "voice-prolog-insert")) //backward compatibility only { gchar *temp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (temp) { DenemoDirective *directive = (DenemoDirective *) g_malloc0 (sizeof (DenemoDirective)); directive->postfix = g_string_new (temp); curStaff->voice_directives = g_list_append (NULL, directive); g_free (temp); } } else if (ELEM_NAME_EQ (childElem, "staff-directives")) { curStaff->staff_directives = parseWidgetDirectives (childElem, (gpointer) staff_directive_put_graphic, curStaff->staffmenu, &curStaff->staff_directives); } else if (ELEM_NAME_EQ (childElem, "voice-directives")) { curStaff->voice_directives = parseWidgetDirectives (childElem, (gpointer) voice_directive_put_graphic, curStaff->voicemenu, &curStaff->voice_directives); } else if (ELEM_NAME_EQ (childElem, "clef-directives")) { curStaff->clef.directives = parseDirectives (childElem); } /* else if (ELEM_NAME_EQ (childElem, "lyrics-prolog")) */ /* { */ /* gchar *temp = */ /* (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); */ /* curStaff->lyrics_prolog = (temp?g_string_new(temp):NULL); */ /* g_free (temp); */ /* } */ /* else if (ELEM_NAME_EQ (childElem, "figures-prolog")) */ /* { */ /* gchar *temp = */ /* (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); */ /* curStaff->figures_prolog = (temp?g_string_new(temp):NULL); */ /* g_free (temp); */ /* } */ /* else if (ELEM_NAME_EQ (childElem, "fakechords-prolog")) */ /* { */ /* gchar *temp = */ /* (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); */ /* curStaff->fakechords_prolog = (temp?g_string_new(temp):NULL); */ /* g_free (temp); */ /* } */ else { ILLEGAL_ELEM ("staff-info", childElem); } } } return 0; } /** * Parse the given element into the voice in the given score. * @param voiceInfoElem the XML node to process * @param ns the Denemo XML namespaces * @param si the DenemoMovement to populate * * @return 0 on success, -1 on failure */ static gint parseVoiceProps (xmlNodePtr voicePropElem, DenemoMovement * si) { DenemoStaff *curStaff = (DenemoStaff *) si->currentstaff->data; xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, voicePropElem) { if (ELEM_NAME_EQ (childElem, "number-of-lines")) { curStaff->no_of_lines = getXMLIntChild (childElem); if (curStaff->no_of_lines == G_MAXINT) { g_warning ("Could not determine number of lines in staff; " "defaulting to 5"); curStaff->no_of_lines = 5; } } else if (ELEM_NAME_EQ (childElem, "staff-hidden")) { curStaff->hidden = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "staff-color")) { curStaff->color = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "staff-range")) { curStaff->range = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "staff-range-lo")) { curStaff->range_lo = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "staff-range-hi")) { curStaff->range_hi = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "voice-control")) { curStaff->voicecontrol = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "instrument")) { gchar *temp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (temp) g_string_assign (curStaff->midi_instrument, temp); else curStaff->midi_instrument = g_string_new (""); g_free (temp); } else if (ELEM_NAME_EQ (childElem, "volume")) { curStaff->volume = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "override_volume")) { curStaff->override_volume = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "mute")) { curStaff->mute = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "midi_prognum")) { curStaff->midi_prognum = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "midi_channel")) { curStaff->midi_channel = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "transpose")) { curStaff->transposition = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "hasfigures")) { curStaff->hasfigures = getXMLIntChild (childElem); if (curStaff->hasfigures) si->has_figures = (gpointer) TRUE; } else if (ELEM_NAME_EQ (childElem, "hasfakechords")) { curStaff->hasfakechords = getXMLIntChild (childElem); if (curStaff->hasfakechords) si->has_fakechords = (gpointer) TRUE; } else if (ELEM_NAME_EQ (childElem, "verses")) { parseVerses (si, curStaff, childElem); } else if (ELEM_NAME_EQ (childElem, "instrument")) { gchar *temp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (temp) g_string_assign (curStaff->midi_instrument, temp); else curStaff->midi_instrument = g_string_new (""); g_free (temp); } else if (ELEM_NAME_EQ (childElem, "device-port")) { gchar *temp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (temp) g_string_assign (curStaff->device_port, temp); else curStaff->device_port = g_string_new (""); g_free (temp); } else if (ELEM_NAME_EQ (childElem, "staff-directives")) { curStaff->staff_directives = parseWidgetDirectives (childElem, (gpointer) staff_directive_put_graphic, curStaff->staffmenu, &curStaff->staff_directives); } else if (ELEM_NAME_EQ (childElem, "voice-directives")) { curStaff->voice_directives = parseWidgetDirectives (childElem, (gpointer) voice_directive_put_graphic, curStaff->voicemenu, &curStaff->voice_directives); } else if (ELEM_NAME_EQ (childElem, "clef-directives")) { curStaff->clef.directives = parseDirectives (childElem); } else { ILLEGAL_ELEM ("staff-info", childElem); } } return 0; } /** * Parse the given element into the voice in the given score. * @param voiceInfoElem the XML node to process * @param ns the Denemo XML namespaces * @param si the DenemoMovement to populate * * @return 0 on success, -1 on failure */ static gint parseVoiceInfo (xmlNodePtr voiceInfoElem, DenemoMovement * si) { xmlNodePtr childElem; gchar *voiceName, *subpart; FOREACH_CHILD_ELEM (childElem, voiceInfoElem) { { if (ELEM_NAME_EQ (childElem, "voice-name")) { voiceName = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (voiceName != NULL) { DenemoStaff *thestaffstruct = (DenemoStaff *) si->currentstaff->data; g_string_assign (thestaffstruct->denemo_name, voiceName); g_free (voiceName); set_lily_name (thestaffstruct->denemo_name, thestaffstruct->lily_name); } } else if (ELEM_NAME_EQ (childElem, "subpart")) { subpart = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (subpart != NULL) { DenemoStaff *thestaffstruct = (DenemoStaff *) si->currentstaff->data; if(thestaffstruct->subpart) g_string_assign (thestaffstruct->subpart, subpart); else thestaffstruct->subpart = g_string_new (subpart); g_free (subpart); } } else if (ELEM_NAME_EQ (childElem, "first-measure-number")) { /* Do nothing (yet). All voices start at measure 1. */ } else { ILLEGAL_ELEM ("voice-info", childElem); } } } return 0; } /** * Parse the given element into the voice in the given * score. * @param initVoiceParamsElem the XML node to process * @param ns the Denemo XML namespaces * @param si the DenemoMovement to populate * * @return 0 on success, -1 on failure */ static gint parseInitVoiceParams (xmlNodePtr initVoiceParamsElem, DenemoMovement * si) { DenemoStaff *curVoice = (DenemoStaff *) si->currentstaff->data; xmlNodePtr childElem, staffElem; gchar *staffXMLID; FOREACH_CHILD_ELEM (childElem, initVoiceParamsElem) { { if (ELEM_NAME_EQ (childElem, "staff-ref")) { /* * FIXME: This all assumes that the staves and voices appear top * down in the XML file, which is true when we save it * but may not be if someone tinkers with the file. */ staffXMLID = (gchar *) xmlGetProp (childElem, (xmlChar *) "staff"); if (staffXMLID == NULL) { g_warning ("No ID found on element"); } else { staffElem = lookupXMLID (staffXMLID); g_free (staffXMLID); if (staffElem == NULL) { g_warning ("Invalid staff ID specified in "); } else if (staffElem == sPrevStaffElem) { /* This is a new voice on the previous staff. */ curVoice->voicecontrol = DENEMO_SECONDARY; //Set primary as well if display is to be separated curVoice->no_of_lines = ((DenemoStaff *) si->currentprimarystaff->data)->no_of_lines; } else { /* This is a new staff. */ if (!ELEM_NAME_EQ (staffElem, "staff")) { g_warning (" points to a <%s>, not a " "", staffElem->name); } si->currentprimarystaff = si->currentstaff; if (parseStaff (staffElem, si) != 0) return -1; } sPrevStaffElem = staffElem; } } else if (ELEM_NAME_EQ (childElem, "clef")) { parseClef (childElem, &curVoice->clef); } else if (ELEM_NAME_EQ (childElem, "key-signature")) { parseKeySignature (childElem, &(curVoice->keysig)); initkeyaccs (curVoice->keysig.accs, curVoice->keysig.number); //dnm_setinitialkeysig(curVoice, curVoice->skey, curVoice->skey_isminor); } else if (ELEM_NAME_EQ (childElem, "time-signature")) { parseTimeSignature (childElem, &curVoice->timesig); } else if (ELEM_NAME_EQ (childElem, "sources")) { curVoice->sources = parseSources (childElem); } else { ILLEGAL_ELEM ("initial-voice-params", childElem); } } } return 0; } static GList *parseMeasure (xmlNodePtr measureElem, clef **pcurrentClef, gboolean *hasfigures, gboolean *hasfakechords) { DenemoObject *curObj; GList *thelist = NULL; xmlNodePtr objElem; FOREACH_CHILD_ELEM (objElem, measureElem) { curObj = NULL; { if (ELEM_NAME_EQ (objElem, "barline")) { /* FIXME */ g_warning ("barline is obsolete element"); } else if (ELEM_NAME_EQ (objElem, "beam-end")) { } else if (ELEM_NAME_EQ (objElem, "beam-start")) { } else if (ELEM_NAME_EQ (objElem, "chord")) { curObj = parseChord (objElem, *pcurrentClef); /* old format files will not have has... fields of staff explicit so for backwards compatibility we reconstruct it here */ if (((chord *) curObj->object)->figure) *hasfigures = TRUE; if (((chord *) curObj->object)->fakechord) *hasfakechords = TRUE; } else if (ELEM_NAME_EQ (objElem, "clef")) { curObj = clef_new (DENEMO_TREBLE_CLEF); parseClef (objElem, curObj->object); gchar *showProp = (gchar *) xmlGetProp (objElem, (xmlChar *) "show"); if (showProp) curObj->isinvisible = !strcmp (showProp, "false"); *pcurrentClef = (clef *) curObj->object; } else if (ELEM_NAME_EQ (objElem, "lyric")) { /*gchar *text = (gchar *)xmlNodeListGetString (objElem->doc, objElem->xmlChildrenNode, 1); */ /*curObj = lyric_new(text,0,); */ } else if (ELEM_NAME_EQ (objElem, "lily-directive")) { curObj = parseLilyDir (objElem); } else if (ELEM_NAME_EQ (objElem, "grace-end")) { g_warning (_("Obsolete form, use earlier Denemo version to convert")); //curObj = newgraceend (); } else if (ELEM_NAME_EQ (objElem, "grace-start")) { g_warning (_("Obsolete form, use earlier Denemo version to convert")); //curObj = parseGraceStart (objElem, si); } else if (ELEM_NAME_EQ (objElem, "key-signature")) { curObj = dnm_newkeyobj (0, 0, 0); parseKeySignature (objElem, curObj->object); initkeyaccs (((keysig *) curObj->object)->accs, ((keysig *) curObj->object)->number); } else if (ELEM_NAME_EQ (objElem, "measure-break")) { /* FIXME */ g_warning ("Cannot yet handle elements"); } else if (ELEM_NAME_EQ (objElem, "rest")) { curObj = parseRest (objElem); } else if (ELEM_NAME_EQ (objElem, "stem-directive")) { curObj = dnm_stem_directive_new (DENEMO_STEMBOTH); parseStemDirective (objElem, curObj->object); } else if (ELEM_NAME_EQ (objElem, "time-signature")) { curObj = dnm_newtimesigobj (4, 4); parseTimeSignature (objElem, curObj->object); } else if (ELEM_NAME_EQ (objElem, "tuplet-end")) { curObj = tuplet_close_new (); parseTupletEnd (objElem, curObj->object); } else if (ELEM_NAME_EQ (objElem, "tuplet-start")) { curObj = tuplet_open_new (4, 4); parseTupletStart (objElem, curObj->object); } else { ILLEGAL_ELEM ("measure", objElem); } if (curObj != NULL) { /* * FIXME: Appending is very inefficient! But we can't * prepend then reverse when we're done because * the import handler callbacks expect the data * structures to be in the right order. Instead, * we should manually keep track of the end of * the list (si->currentobject?) and append to * that. */ thelist = g_list_append (thelist, curObj); //g_debug("Element type lily %d\n", curObj->type==LILYDIRECTIVE); } } /* end if objElem is in the right namespace */ } /* end foreach objElem in childElem */ return thelist; } /** * Parse the given element into the voice in the given score. * @param measuresElem the XML node to process * @param ns the Denemo XML namespaces * @param si the DenemoMovement to populate * * @return 0 on success, -1 on failure */ static gint parseMeasures (xmlNodePtr measuresElem, DenemoMovement * si) { xmlNodePtr childElem, objElem; clef *currentClef = &((DenemoStaff *) si->currentstaff->data)->clef; GList *slurEndChordElems = NULL; GList *crescEndChordElems = NULL; GList *diminEndChordElems = NULL; FOREACH_CHILD_ELEM (childElem, measuresElem) { if (ELEM_NAME_EQ (childElem, "measure")) { if (si->currentmeasure == NULL) { si->currentmeasure = dnm_addmeasures (si, si->currentmeasurenum - 1, 1, FALSE); //g_debug ("ImportXML Adding Measure \n currentmeasurenum %d", si->currentmeasurenum); } ((DenemoMeasure*)si->currentmeasure->data)->objects = parseMeasure (childElem, ¤tClef, &((DenemoStaff *) si->currentstaff->data)->hasfigures, &((DenemoStaff *) si->currentstaff->data)->hasfakechords); gchar *offset = (gchar *) xmlGetProp (childElem, (xmlChar *) "offset"); if (offset) ((DenemoMeasure*)si->currentmeasure->data)->measure_numbering_offset = atoi (offset); //FIXME memory leak on offset si->currentmeasurenum++; si->currentmeasure = si->currentmeasure->next; } /* end if childElem is a */ else { ILLEGAL_ELEM ("measures", childElem); } } if (slurEndChordElems != NULL) { g_warning ("Some unterminated slurs were left at the end of the voice"); g_list_free (slurEndChordElems); } if (crescEndChordElems != NULL) { g_warning ("Some unterminated crescendos were left at the end of the voice"); g_list_free (crescEndChordElems); } if (diminEndChordElems != NULL) { g_warning ("Some unterminated diminuendos were left at the end of the voice"); g_list_free (diminEndChordElems); } if (crescEndChordElems != NULL) { g_warning ("Some unterminated crescendos were left at the end of the voice"); g_list_free (crescEndChordElems); } if (diminEndChordElems != NULL) { g_warning ("Some unterminated diminuendos were left at the end of the voice"); g_list_free (diminEndChordElems); } return 0; } /** * Parse the given element into a voice in the given score. * @param voiceElem the XML node to process * @param ns the Denemo XML namespaces * @param si the DenemoMovement to populate * * @return 0 on success, -1 on failure */ static gint parseVoice (xmlNodePtr voiceElem, DenemoProject * gui) { DenemoMovement *si = gui->movement; xmlNodePtr childElem; /* gchar *id; */ /* Create the staff structure. */ si->currentstaffnum++; staff_new (gui, ADDFROMLOAD, DENEMO_NONE); si->currentstaff = g_list_last (si->thescore); si->currentmeasurenum = 1; Lyric = g_string_new (""); /* Parse the child elements. */ childElem = getXMLChild (voiceElem, "voice-info"); RETURN_IF_ELEM_NOT_FOUND ("voice", childElem, "voice-info"); if (parseVoiceInfo (childElem, si) != 0) return -1; childElem = getXMLChild (voiceElem, "initial-voice-params"); RETURN_IF_ELEM_NOT_FOUND ("voice", childElem, "initial-voice-params"); if (parseInitVoiceParams (childElem, si) != 0) return -1; childElem = getXMLChild (voiceElem, "voice-props"); if (childElem) //older files will not have this if (parseVoiceProps (childElem, si) != 0) return -1; childElem = getXMLChild (voiceElem, "measures"); RETURN_IF_ELEM_NOT_FOUND ("voice", childElem, "measures"); if (parseMeasures (childElem, si) != 0) return -1; if (Lyric->len) { DenemoStaff *staff = (DenemoStaff *) si->currentstaff->data; add_verse_to_staff (si, staff); GtkTextView* verse_view = (GtkTextView*) verse_get_current_view (staff); gtk_text_buffer_set_text (gtk_text_view_get_buffer (verse_view), Lyric->str, Lyric->len); //g_signal_connect (G_OBJECT (gtk_text_view_get_buffer (verse_view)), "changed", G_CALLBACK (lyric_changed_cb), NULL); //allow save on backward compatibility files... gtk_text_buffer_set_modified(gtk_text_view_get_buffer(verse_view), FALSE); //g_debug("Appended <%s>\n", Lyric->str); } g_string_free (Lyric, FALSE); Lyric = NULL; /* FIXME: Handle elements in other namespaces. */ return 0; } /** * Parse the given element into the given score. * * @param scoreElem the score element to process * @param ns Denemo's xml namespaces * @param si the DenemoMovement structure to populate * * @return 0 on success ,-1 on failure */ static gint parseScore (xmlNodePtr scoreElem, DenemoProject * gui, ImportType type) { DenemoMovement *si = gui->movement; xmlNodePtr childElem, voiceElem; childElem = getXMLChild (scoreElem, "edit-info"); if (childElem != 0) parseEditInfo (childElem, si); childElem = getXMLChild (scoreElem, "header-directives"); if (childElem != 0) si->header.directives = parseWidgetDirectives (childElem, (gpointer) header_directive_put_graphic, NULL, &(si->header.directives)); childElem = getXMLChild (scoreElem, "layout-directives"); if (childElem != 0) si->layout.directives = parseWidgetDirectives (childElem, (gpointer) layout_directive_put_graphic, NULL, &(si->layout.directives)); childElem = getXMLChild (scoreElem, "movementcontrol-directives"); if (childElem != 0) si->movementcontrol.directives = parseWidgetDirectives (childElem, (gpointer) movementcontrol_directive_put_graphic, NULL, &(si->movementcontrol.directives)); childElem = getXMLChild (scoreElem, "sources");//legacy field, not used childElem = getXMLChild (scoreElem, "audio"); if (childElem != 0) { si->recording = (DenemoRecording *) g_malloc (sizeof (DenemoRecording)); parseAudio (childElem, si); } childElem = getXMLChild (scoreElem, "score-info"); RETURN_IF_ELEM_NOT_FOUND ("score", childElem, "score-info"); if (type == REPLACE_SCORE) if (parseScoreInfo (childElem, si) != 0) return -1; childElem = getXMLChild (scoreElem, "scroll-points"); if (childElem) si->scroll_points = parseScrollPoints (childElem); /* * Note: We don't currently care about , but we will need to * eventually, since we should parse out all the elements in other * namespaces that are children of . */ childElem = getXMLChild (scoreElem, "voices"); RETURN_IF_ELEM_NOT_FOUND ("score", childElem, "voices"); FOREACH_CHILD_ELEM (voiceElem, childElem) { if (ELEM_NAME_EQ (voiceElem, "voice")) { if (parseVoice (voiceElem, gui) != 0) return -1; } else { ILLEGAL_ELEM ("voices", voiceElem); } } return 0; } /* parse the movement (ie DenemoMovement) from childElem */ static gint parseMovement (xmlNodePtr childElem, DenemoProject * gui, ImportType type) { gint ret = 0; gint previous_staffnum = 0; DenemoMovement *si = gui->movement; if (type != ADD_STAFFS) gui->movements = g_list_append (gui->movements, gui->movement); else previous_staffnum = g_list_length(si->thescore); si->currentstaffnum = 0; sPrevStaffElem = NULL; ret = parseScore (childElem, gui, type); sPrevStaffElem = NULL; staffnode *curstaff; if (si->thescore == NULL) { g_warning ("Bad Denemo file"); return -1; } if (previous_staffnum) { curstaff = g_list_nth (si->thescore, previous_staffnum); for(;curstaff;curstaff=curstaff->next) ((DenemoStaff *) curstaff->data)->midi_channel = ((previous_staffnum) < 9 ? (previous_staffnum) : previous_staffnum + 1) & 0xF; } cache_all (); for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) { staff_fix_note_heights ((DenemoStaff *) curstaff->data); staff_beams_and_stems_dirs ((DenemoStaff *) curstaff->data); staff_show_which_accidentals ((DenemoStaff *) curstaff->data); } find_xes_in_all_measures (si); find_leftmost_allcontexts (si); if(current_staff==0) current_staff=1; si->currentstaffnum = current_staff ? current_staff : 1; si->currentmeasurenum = current_measure ? current_measure : 1; si->currentstaff = g_list_nth (si->thescore, current_staff - 1); setcurrents (si); si->cursor_x = current_position; //was si->currentobject = (objnode *) g_list_nth (si->currentmeasure->data, si->cursor_x); si->currentobject = g_list_nth ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects, si->cursor_x); if (!si->currentobject) { si->cursor_appending = TRUE; si->currentobject = g_list_last ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects); //was si->currentobject = g_list_last (si->currentmeasure->data); } else si->cursor_appending = FALSE; // si->leftmeasurenum = si->currentstaffnum = si->currentmeasurenum = 1; set_rightmeasurenum (gui->movement); set_bottom_staff (gui); set_width_to_work_with (gui); si->undo_guard = 0; return ret; } static void parseRhythmElem (xmlNodePtr sElem, RhythmPattern* r) { xmlNodePtr childElem; r->lilypond = g_string_new (xmlGetProp (sElem, "lilypond")); gchar *nick = xmlGetProp (sElem, "nickname"); if (nick && *nick) r->nickname = g_string_new (nick); childElem = getXMLChild (sElem, "objects"); if (childElem) { gboolean dummy1, dummy2; static clef dummyClef = { DENEMO_TREBLE_CLEF, NULL}; clef *acurrentClef = &dummyClef; r->clipboard = g_list_append (NULL, parseMeasure(childElem, &acurrentClef, &dummy1, &dummy2)); create_rhythm (r, FALSE); } } /** * Parse the rhythms (music snippets) * @param sElem the XML node to process * @param gui to attach rhythms to * * @return */ static void parseRhythmsElem (xmlNodePtr sElem, DenemoProject * gui) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, sElem) { if (ELEM_NAME_EQ (childElem, "rhythm")) { RhythmPattern* r = (RhythmPattern*)g_malloc0(sizeof(RhythmPattern)); parseRhythmElem (childElem, r); } } } /** * Import the given (possibly zlib-compressed) Denemo "native" XML file into * the given score. * * @param filename the file to importxml * @param gui DenemoProject to hold the score * @return 0 on success, -1 on failure */ gint importXML (gchar * filename, DenemoProject * gui, ImportType type) { gint ret = 0; xmlDocPtr doc = NULL; xmlNsPtr ns; /* xmlNodePtr rootElem, childElem; */ xmlNodePtr rootElem; /* ignore blanks between nodes that appear as "text" */ xmlKeepBlanksDefault (0); gchar *version = NULL; current_movement = 0, current_staff = 0, current_measure = 0, current_position = 0; //0 means is not set. if (sXMLIDToElemMap != NULL) { g_warning ("Recursive call to importXML - ignored"); return -1; } /* Try to parse the file. */ doc = xmlParseFile (filename); if (doc == NULL) { g_warning ("Could not read XML file %s", filename); return -1; } /* * Do a couple of sanity checks to make sure we've actually got a Denemo * format XML file. */ rootElem = xmlDocGetRootElement (doc); ns = rootElem->ns; if ((strcmp ((gchar *) ns->href, DENEMO_XML_NAMESPACE) != 0) && /*backward compatibility */ (strcmp ((gchar *) ns->href, "http://denemo.sourceforge.net/xmlns/Denemo") != 0)) { g_warning ("Root element is not in Denemo namespace"); ret = -1; goto cleanup; } if (strcmp ((gchar *) rootElem->name, "score") != 0) { g_warning ("Root element is not "); ret = -1; goto cleanup; } version = (gchar *) xmlGetProp (rootElem, (xmlChar *) "version"); if (version == NULL) { g_warning ("No version found on root element"); ret = -1; goto cleanup; } sscanf (version, "%d", &version_number); if (version_number > CURRENT_XML_VERSION) { gchar *text = g_strdup_printf ("Denemo file format version %d found, but this version of Denemo (%s) can only load denemo file version %d or lower. Update to a newer Denemo release.", version_number, PACKAGE_VERSION, CURRENT_XML_VERSION); warningdialog (text); g_free (text); ret = -1; goto cleanup; } /* * Okay, we've got a bona fide, 100% genuine Denemo XML file (hopefully). * So let's parse it. The first thing to do is to construct a map from IDs * (or rather, attributes with name "id") to their respective elements. */ buildXMLIDToElemMap (doc); /* Then, parse the score. */ if (version_number >= 2) { xmlNodePtr childElem; switch (type) { case ADD_STAFFS: FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "movement")) ret |= parseMovement (childElem, gui, type); else continue; //g_debug("parsed more staffs breaking now\n"); break; //Note: we only adds staffs from first movement } break; case ADD_MOVEMENTS: FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "lilycontrol") || ELEM_NAME_EQ (childElem, "custom_scoreblock") || ELEM_NAME_EQ (childElem, "visible_scoreblock") || ELEM_NAME_EQ (childElem, "scoreheader-directives") || ELEM_NAME_EQ (childElem, "paper-directives")) { continue; /* do not change the header when adding movements parseScoreInfo(childElem, gui); */ } else if (ELEM_NAME_EQ (childElem, "movement")) { point_to_empty_movement (gui); ret |= parseMovement (childElem, gui, type); //g_debug("parsed movement\n"); } else { g_warning ("Unexpected %s", childElem->name); } } break; case REPLACE_SCORE: free_movements (gui); deleteSchemeText (); gui->has_script = FALSE; reset_editing_timer (); gui->total_edit_time = 0; gui->has_script = FALSE; /* this is dependent on the order of elements, which is not strictly correct */ FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "scheme")) { gchar *tmp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (tmp != NULL) { appendSchemeText (tmp); } } else if (ELEM_NAME_EQ (childElem, "movement-number")) { current_movement = getXMLIntChild (childElem); } else if (ELEM_NAME_EQ (childElem, "custom_prolog")) { gchar *tmp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); //gui->custom_prolog = g_string_new(tmp); g_info ("The custom prolog \n\"%s\"\n is being ignored\n", tmp); warningdialog (_("Custom prolog is no longer supported. Use score directive prefix instead")); g_free (tmp); } else if (ELEM_NAME_EQ (childElem, "lilycontrol")) { parseSetupInfo (childElem, gui); } else if (ELEM_NAME_EQ (childElem, "thumbnail")) { parseThumbElem (childElem, &gui->thumbnail); } else if (ELEM_NAME_EQ (childElem, "sourcefile")) { parseSourceFileElem (childElem, gui); } else if (ELEM_NAME_EQ (childElem, "rhythms")) { parseRhythmsElem (childElem, gui); } else if (ELEM_NAME_EQ (childElem, "scoreheader-directives")) { gui->scoreheader.directives = parseWidgetDirectives (childElem, (gpointer) scoreheader_directive_put_graphic, NULL, &(gui->scoreheader.directives)); } else if (ELEM_NAME_EQ (childElem, "paper-directives")) { gui->paper.directives = parseWidgetDirectives (childElem, (gpointer) paper_directive_put_graphic, NULL, &(gui->paper.directives)); } else if (ELEM_NAME_EQ (childElem, "custom_scoreblock")) { gchar *tmp = (gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); gchar *uri = (gchar *) xmlGetProp (childElem, (xmlChar *) "scoreblock_uri"); if (tmp != NULL) { DenemoScoreblock *sb = get_scoreblock_for_lilypond (tmp); if(!Denemo.non_interactive) { GtkWidget *notebook = get_score_layout_notebook (gui); GtkWidget *label = gtk_label_new (sb->name); gtk_notebook_prepend_page (GTK_NOTEBOOK (notebook), sb->widget, label); gtk_widget_show_all (notebook); } gui->custom_scoreblocks = g_list_prepend (gui->custom_scoreblocks, sb); sb->uri = uri; //do not free uri g_free (tmp); } } else if (ELEM_NAME_EQ (childElem, "visible_scoreblock")) { if (gui->custom_scoreblocks) { DenemoScoreblock *sb = (DenemoScoreblock *) gui->custom_scoreblocks->data; sb->visible = TRUE; } } else if (ELEM_NAME_EQ (childElem, "movement")) { point_to_empty_movement (gui); ret |= parseMovement (childElem, gui, type); } else { g_warning ("unrecognized element in score name:\"%s\" - ignoring", childElem->name); } if (gui->movement && gui->movement->lyricsbox) gtk_widget_hide (gui->movement->lyricsbox); } break; default: warningdialog (_("Erroneous call")); goto cleanup; } } if (gui->movement->lyricsbox) gtk_widget_hide (gui->movement->lyricsbox); gint steps_back = g_list_length (gui->movements) - current_movement; while (steps_back-- > 0) { if (gui->movement->lyricsbox) gtk_widget_hide (gui->movement->lyricsbox); prev_movement (NULL, NULL); } if (gui->movement->lyricsbox) { if (!Denemo.prefs.lyrics_pane) gtk_widget_hide (gui->movement->lyricsbox); else gtk_widget_show (gui->movement->lyricsbox); } score_status (gui, FALSE); cleanup: if (version != NULL) g_free (version); if (doc != NULL) xmlFreeDoc (doc); if (sXMLIDToElemMap != NULL) { g_hash_table_foreach (sXMLIDToElemMap, freeHashTableKey, NULL); g_hash_table_destroy (sXMLIDToElemMap); } sXMLIDToElemMap = NULL; //g_debug("Number of movements %d\n", g_list_length(gui->movements)); reset_movement_numbers (gui); set_movement_selector (gui); return ret; } denemo-2.2.0/src/core/PaxHeaders.19168/utils.h0000644000000000000000000000013213135434036015561 xustar0030 mtime=1500919838.349981806 30 atime=1500919920.353315139 30 ctime=1500919914.206648472 denemo-2.2.0/src/core/utils.h0000644000175000017500000003110713135434036017434 0ustar00jjbenhamjjbenham00000000000000/* utils.h * Header file for functions useful across the different modules of * drawing and non-drawing code. * * also includes useful constants * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller, 2008, 2009 Richard Shann */ #ifndef UTILS_H #define UTILS_H #include #include //FIXME, these two need to be an enum in denemo_types.h and the field showaccidental changed from boolean to this type. #define DENEMO_REMINDER (2) #define DENEMO_CAUTIONARY (3) #define HIGHLIGHT_OFFSET (20) /* Fairly arbitrary value to transform codes '0', '1' ... to a new range with the meaning highlight the whole-note, half-note, ..., glyph */ #define MAXEXTRASPACE (150) /* maximum space for ledger lines, for sanity */ #define LINE_SPACE 10 #define HALF_LINE_SPACE 5 #define NO_OF_LINES 5 #define STAFF_HEIGHT (LINE_SPACE * (NO_OF_LINES - 1)) #define LYRICS_HEIGHT (STAFF_HEIGHT/2) #define MID_STAFF_HEIGHT 2*LINE_SPACE /*#define LEFT_MARGIN 20 now variable for braces to take space */ //#define KEY_MARGIN (LEFT_MARGIN+35) #define SPACE_FOR_TIME 35 #define RIGHT_MARGIN 20 #define SPACE_FOR_BARLINE 10 #define HALF_BARLINE_SPACE 5 #define WHOLE_NUMTICKS 1536 #define FONT "Sans 9" #define TIMESIGFONT "Sans 24" #ifndef g_info #ifdef G_HAVE_ISO_VARARGS #define g_info(...) g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, __VA_ARGS__) #elif defined(G_HAVE_GNUC_VARARGS) #define g_info(format) g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, format) #endif #endif const gchar *get_user_data_dir (gboolean create); const gchar *locateprintdir (void); void removeprintdir (void); /* Adds a callback that processes the "activate" signal coming from * a widget */ #define processenter(entry, callback, cbdata, dialog)\ g_signal_connect(G_OBJECT(entry), "activate", \ G_CALLBACK(callback), \ &cbdata); \ if (dialog) \ g_signal_connect_object (G_OBJECT (entry), "activate", \ G_CALLBACK(gtk_widget_destroy), \ G_OBJECT (dialog), G_CONNECT_AFTER) void drawbitmapinverse_cr (cairo_t * cr, DenemoGraphic * mask, gint x, gint y, gboolean invert); void drawfetachar_cr (cairo_t * cr, gunichar uc, double x, double y); //void //setcairocolor (cairo_t * cr, GdkGC * gc); void drawnormaltext_cr (cairo_t * cr, const char *text, double x, double y); void drawlargetext_cr (cairo_t * cr, const char *text, double x, double y); void drawtext_cr (cairo_t * cr, const char *text, double x, double y, double size); void draw_staff_brace (cairo_t * cr, gboolean curly, gint x, gint y, gint height); gint draw_for_directives (cairo_t * cr, GList * directives, gint x, gint y, gboolean at_cursor); gchar *pretty_name (gchar * lilynote); /* Gives space after a note or rest */ gint space_after (gint numticks, gint wholenotewidth); /* Returns height of a note based on what the note is and and the current * clef context */ gint calculateheight (gint mid_c_offset, gint dclef); /* Translates a mid_c_offset into 0 (c) through 6 (b). Useful for * getting accidentals to persist */ gint offsettonumber (gint n); gchar *mid_c_offsettolily (int mid_c_offset, int enshift); gchar mid_c_offsettoname (gint mid_c_offset); gint mid_c_offsettooctave (gint mid_c_offset); void set_grace_numticks (DenemoObject * theobj, gint multiplier); void set_tuplefied_numticks (DenemoObject * theobj, gint numerator, gint denominator); void set_basic_numticks (DenemoObject * theobj); void setpixelmin (DenemoObject * theobj); void freeit (gpointer data, gpointer user_data); void popup_menu (gchar * name); void warningmessage (gchar * msg); void warningdialog (gchar * msg); void infowarningdialog (gchar * msg, gboolean info); GtkWidget *infodialog (gchar * msg); GtkWindow *progressbar (gchar * msg, gpointer callback); void progressbar_stop (void); void busy_cursor (GtkWidget * area); void normal_cursor (GtkWidget * area); void headerfields (GtkWidget * dialog, GtkListStore * list_store, GtkTreeIter * iter, DenemoMovement * si, gboolean isdialog); /* default isdialog shall be TRUE */ void initdir (void); const gchar *get_system_data_dir (void); /* UNUSED const gchar *get_system_conf_dir (void); */ const gchar *get_system_locale_dir (void); const gchar *get_system_bin_dir (void); const gchar *get_system_font_dir (void); const gchar *get_executable_dir (void); /* get directory of current Denemo.project or home directory if untitled. User must free the returned string */ gchar *get_project_dir (void); const gchar *get_local_dir (DenemoDirectory dir); gchar *get_system_dir (DenemoDirectory dir); void copy_files (gchar *source_dir, gchar *dest_dir);//copies all files in source_dir to dest_dir creating the latter if need be void kill_process (GPid pid); gchar *music_font (gchar * str); void set_title_bar (DenemoProject * gui); void score_status (DenemoProject * gui, gboolean change); void write_status (DenemoProject * gui); gboolean confirm (gchar * primary, gchar * secondary); gboolean confirm_first_choice (gchar *title, gchar * primary, gchar * secondary); gboolean choose_option (gchar * title, gchar * primary, gchar * secondary); gint choose_option_or_cancel (gchar * title, gchar * primary, gchar * secondary, gboolean cancel_button); void nullify_gstring (GString ** s); gchar *choose_file (gchar * title, gchar * startdir, GList * extensions); gchar *string_dialog_entry (DenemoProject * gui, gchar * title, gchar * instruction, gchar * initial_value); gchar *notes_choice_dialog (gint number_of_notes /* 1 or 2 */, gchar *initial_value, gchar *meaning); gchar *string_dialog_entry_with_widget (DenemoProject * gui, gchar * title, gchar * instruction, gchar * initial_value, GtkWidget * extra_widget); gchar *string_dialog_editor_with_widget (DenemoProject * gui, gchar * wlabel, gchar * direction, gchar * PreValue, GtkWidget * widget, gpointer keypress_callback); gchar *string_dialog_entry_with_widget_opt (DenemoProject * gui, gchar * wlabel, gchar * direction, gchar * PreValue, GtkWidget * widget, gboolean modal); gchar *string_dialog_editor_with_widget_opt (DenemoProject * gui, gchar * wlabel, gchar * direction, gchar * PreValue, GtkWidget * widget, gboolean modal, gpointer keypress_callback); gchar *get_multiline_input (gchar *title, gchar *instruction, gchar *initial); void note2lilynotename (struct note *noteobject, GString * ret); void note2lilyaccidental (struct note *noteobject, GString * ret); void note2lilyoctave (struct note *noteobject, GString * ret); void chord2lilybaseduration (struct chord *chordobject, GString * ret); void chord2lilyduration (struct chord *chordobject, GString * ret); void chord2lilynumdots (struct chord *chordobject, GString * ret); gchar *get_fretdiagram_as_markup (void); gchar *get_chord_notes (void); #define UTILS_H_PARAM_ASSIGN(param_name) if( (str = g_strstr_len(values->str+i,strlen(values->str+i), #param_name)))\ nothing=FALSE,param_name = (*(str+strlen(#param_name))=='=')?str+strlen(#param_name)+1:NULL; #define GET_1PARAM(action, param, param_name) \ G_GNUC_UNUSED gchar * query = NULL;\ gchar * param_name = NULL;\ DenemoScriptParam dummy;\ dummy.string=NULL;\ if(param==NULL)\ param = &dummy;\ param->status = FALSE;\ if(!action && param){\ G_GNUC_UNUSED gboolean nothing=TRUE;\ GString *values = ((DenemoScriptParam *)param)->string;\ if(values) {\ gchar *str;\ guint i;\ for(i=0;ilen;i+=strlen(values->str+i)+1) {\ UTILS_H_PARAM_ASSIGN(query)\ UTILS_H_PARAM_ASSIGN(param_name)\ }\ }\ if(param_name==NULL)\ param_name = values?values->str:NULL;\ } #define GET_2PARAMS(action, param, param_name1, param_name2) \ gchar * query = NULL;\ gchar * param_name1 = NULL;\ gchar * param_name2 = NULL;\ DenemoScriptParam dummy;\ dummy.string=NULL;\ if(param==NULL)\ param = &dummy;\ param->status = FALSE;\ if(!action && param){\ gboolean nothing=TRUE;\ GString *values = ((DenemoScriptParam *)param)->string;\ if(values) {\ gchar *str;\ guint i;\ for(i=0;ilen;i+=strlen(values->str+i)+1) {\ UTILS_H_PARAM_ASSIGN(query)\ UTILS_H_PARAM_ASSIGN(param_name1)\ UTILS_H_PARAM_ASSIGN(param_name2)\ }\ }\ if(nothing)\ param_name1=values?values->str:NULL;\ } #define GET_3PARAMS(action, param, param_name1, param_name2, param_name3) \ gchar * query = NULL;\ gchar * param_name1 = NULL;\ gchar * param_name2 = NULL;\ gchar * param_name3 = NULL;\ DenemoScriptParam dummy;\ dummy.string=NULL;\ if(param==NULL)\ param = &dummy;\ param->status = FALSE;\ if(!action && param){\ gboolean nothing=TRUE;\ GString *values = ((DenemoScriptParam *)param)->string;\ if(values) {\ gchar *str;\ guint i;\ for(i=0;ilen;i+=strlen(values->str+i)+1) {\ UTILS_H_PARAM_ASSIGN(query)\ UTILS_H_PARAM_ASSIGN(param_name1)\ UTILS_H_PARAM_ASSIGN(param_name2)\ UTILS_H_PARAM_ASSIGN(param_name3)\ }\ }\ if(nothing)\ param_name1=values?values->str:NULL;\ } #define GET_4PARAMS(action, param, param_name1, param_name2, param_name3, param_name4) \ G_GNUC_UNUSED gchar * query = NULL;\ gchar * param_name1 = NULL;\ gchar * param_name2 = NULL;\ gchar * param_name3 = NULL;\ gchar * param_name4 = NULL;\ DenemoScriptParam dummy;\ dummy.string=NULL;\ if(param==NULL)\ param = &dummy;\ param->status = FALSE;\ if(!action && param){\ GString *values = ((DenemoScriptParam *)param)->string;\ gboolean nothing=TRUE;\ if(values) {\ gchar *str;\ guint i;\ for(i=0;ilen;i+=strlen(values->str+i)+1) {\ UTILS_H_PARAM_ASSIGN(query)\ UTILS_H_PARAM_ASSIGN(param_name1)\ UTILS_H_PARAM_ASSIGN(param_name2)\ UTILS_H_PARAM_ASSIGN(param_name3)\ UTILS_H_PARAM_ASSIGN(param_name4)\ }\ }\ if(nothing)\ param_name1=values?values->str:NULL;\ } gchar *get_option (gchar * title, gchar * str, gint length); void console_output (gchar * text); gint get_override (GList * g); void add_font_directory (gchar * fontpath); void add_font_file (gchar * fontpath); const gchar *get_prefix_dir (void); gboolean run_file_association (gchar * filenam); gchar *remove_extension (gchar * name); gchar *substitute_extension (gchar * name, gchar * extension); void init_denemo_notenames (void); gint get_widget_height (GtkWidget * w); gint get_widget_width (GtkWidget * w); void switch_back_to_main_window (void); void use_markup (GtkWidget * widget); typedef enum { TwoKey = 0, SingleKey = 1, MouseGesture = 2, KeyPlusMouse = 3 } DenemoShortcutType; void initialize_keystroke_help (void); void init_gdk_cursors (void); void KeyStrokeAwait (gchar * first_keypress); void KeyStrokeDecline (gchar * first_keypress); void KeyStrokeShow (gchar * str, gint command_idx, DenemoShortcutType type); void MouseGestureShow (gchar * str, gchar * help, DenemoShortcutType type); void KeyPlusMouseGestureShow (gchar * str, gint command_idx); note *findnote (DenemoObject * curObj, gint cursory); note *findnote_strict (DenemoObject * curObj, gint cursory); #include "core/kbd-custom.h" #define get_label_for_command(name) lookup_label_from_idx(Denemo.map, lookup_command_from_name(Denemo.map, name)) #define get_tooltip_for_command(name) lookup_tooltip_from_idx(Denemo.map, lookup_command_from_name(Denemo.map, name)) #define get_menu_path_for_command(name) lookup_menu_path_from_idx(Denemo.map, lookup_command_from_name(Denemo.map, name)) #ifdef FAKE_TOOLTIPS gboolean show_tooltip (GtkWidget * w, GdkEvent * ev, gchar * text); void free_tooltip (GtkWidget * w, gchar * text); #endif void write_input_status (); enum clefs cleftypefromname (gchar * str); gchar *find_dir_for_file (gchar * filename, GList * dirs); gchar *find_dir_for_files (GList * files, GList * dirs); gchar *find_path_for_file (gchar * filename, GList * dirs); gchar *find_denemo_file (DenemoDirectory dir, gchar * filename); gchar *escape_scheme (gchar * input); gchar *time_spent_editing (void); void reset_editing_timer (void); gboolean shift_held_down (void); #if GTK_MAJOR_VERSION == 2 #define GdkRGBA GdkColor #define gtk_widget_override_color gtk_widget_modify_fg #define gtk_widget_override_background_color gtk_widget_modify_bg #define GTK_STATE_FLAG_NORMAL (0) void get_color (GdkColor * color, gdouble r, gdouble g, gdouble b, gdouble a); #else void get_color (GdkRGBA * color, gdouble r, gdouble g, gdouble b, gdouble a); #define gtk_widget_override_background_color(w,f,c) {gchar *color = gdk_rgba_to_string(c);set_background_color(w,color);g_free(color);} #endif void set_foreground_color(GtkWidget *w, gchar *color); void set_background_color(GtkWidget *w, gchar *color); gchar *format_tooltip (const gchar *tip); #endif /* UTILS_H */ denemo-2.2.0/src/core/PaxHeaders.19168/external.h0000644000000000000000000000013213135434036016243 xustar0030 mtime=1500919838.343315139 30 atime=1500919920.369981805 30 ctime=1500919914.166648472 denemo-2.2.0/src/core/external.h0000644000175000017500000000126413135434036020117 0ustar00jjbenhamjjbenham00000000000000#ifndef EXTERNAL_H #define EXTERNAL_H void ext_init (void); void ext_quit (void); /*gboolean exists_temp_filename (const gchar* name);*/ gchar *get_temp_filename (const gchar * name); GPid spawn_external (const GString * cmdline); /* GPID_UNREF contains the default value for an unreferenced GPid*/ #ifdef G_OS_WIN32 static const GPid GPID_UNREF = NULL; #define GPID_UNREF_VALUE (NULL) #else static const GPid GPID_UNREF = -1; #define GPID_UNREF_VALUE (-1) #endif /* define your externals here: * these are indexes of ext_pifiles. * functions ext_* cand reach desired pid filename * with gchar* filename = ext_pifiles[EXT_MYAPP]; */ //#define EXT_MIDI 0 //#define EXT_CSOUND 1 #endif denemo-2.2.0/src/core/PaxHeaders.19168/keyboard.h0000644000000000000000000000013213135434036016221 xustar0030 mtime=1500919838.346648472 30 atime=1500919920.369981805 30 ctime=1500919914.036648472 denemo-2.2.0/src/core/keyboard.h0000644000175000017500000000141413135434036020072 0ustar00jjbenhamjjbenham00000000000000// // C++ Interface: keyboard // // Description: Load xml keymap file // // // Author: Adam Tee , (C) 2006 // // Copyright: See COPYING file that comes with this distribution // // #ifndef KEYBOARDH #define KEYBOARDH #include void set_visibility_for_action (DenemoAction * action, gboolean visible); gint parse_paths (gchar * filename, DenemoProject * gui); void add_ui (gchar * menupath, gchar * after, gchar * name); void show_action_of_name (gchar * name); void hide_action_of_name (gchar * name); gchar * translate_binding_dnm_to_gtk (const gchar * dnm_binding); gchar* translate_binding_gtk_to_dnm (const gchar * gtk_binding); gchar *extract_menupath (gchar * filename); void create_command(command_row *command); #endif //KEYBOARDH denemo-2.2.0/src/core/PaxHeaders.19168/binreloc.c0000644000000000000000000000013213135434036016211 xustar0030 mtime=1500919838.343315139 30 atime=1500919920.369981805 30 ctime=1500919914.156648472 denemo-2.2.0/src/core/binreloc.c0000644000175000017500000004525513135434036020075 0ustar00jjbenhamjjbenham00000000000000/* * BinReloc - a library for creating relocatable executables * Written by: Hongli Lai * http://autopackage.org/ * * This source code is public domain. You can relicense this code * under whatever license you want. * * See http://autopackage.org/docs/binreloc/ for * more information and how to use this. */ #ifndef __BINRELOC_C__ #define __BINRELOC_C__ #ifdef ENABLE_BINRELOC #include #include #include #endif /* ENABLE_BINRELOC */ #include #include #include #include #include "core/binreloc.h" G_BEGIN_DECLS /** @internal * Find the canonical filename of the executable. Returns the filename * (which must be freed) or NULL on error. If the parameter 'error' is * not NULL, the error code will be stored there, if an error occurred. */ static char * _br_find_exe (GbrInitError * error) { #ifndef ENABLE_BINRELOC if (error) *error = GBR_INIT_ERROR_DISABLED; return NULL; #else char *path, *path2, *line, *result; size_t buf_size; ssize_t size; struct stat stat_buf; FILE *f; /* Read from /proc/self/exe (symlink) */ if (sizeof (path) > SSIZE_MAX) buf_size = SSIZE_MAX - 1; else buf_size = PATH_MAX - 1; path = (char *) g_try_malloc (buf_size); if (path == NULL) { /* Cannot allocate memory. */ if (error) *error = GBR_INIT_ERROR_NOMEM; return NULL; } path2 = (char *) g_try_malloc (buf_size); if (path2 == NULL) { /* Cannot allocate memory. */ if (error) *error = GBR_INIT_ERROR_NOMEM; g_free (path); return NULL; } strncpy (path2, "/proc/self/exe", buf_size - 1); while (1) { int i; size = readlink (path2, path, buf_size - 1); if (size == -1) { /* Error. */ g_free (path2); break; } /* readlink() success. */ path[size] = '\0'; /* Check whether the symlink's target is also a symlink. * We want to get the final target. */ i = stat (path, &stat_buf); if (i == -1) { /* Error. */ g_free (path2); break; } /* stat() success. */ if (!S_ISLNK (stat_buf.st_mode)) { /* path is not a symlink. Done. */ g_free (path2); return path; } /* path is a symlink. Continue loop and resolve this. */ strncpy (path, path2, buf_size - 1); } /* readlink() or stat() failed; this can happen when the program is * running in Valgrind 2.2. Read from /proc/self/maps as fallback. */ buf_size = PATH_MAX + 128; line = (char *) g_try_realloc (path, buf_size); if (line == NULL) { /* Cannot allocate memory. */ g_free (path); if (error) *error = GBR_INIT_ERROR_NOMEM; return NULL; } f = fopen ("/proc/self/maps", "r"); if (f == NULL) { g_free (line); if (error) *error = GBR_INIT_ERROR_OPEN_MAPS; return NULL; } /* The first entry should be the executable name. */ result = fgets (line, (int) buf_size, f); if (result == NULL) { fclose (f); g_free (line); if (error) *error = GBR_INIT_ERROR_READ_MAPS; return NULL; } /* Get rid of newline character. */ buf_size = strlen (line); if (buf_size == 0) { /* Huh? An empty string? */ fclose (f); g_free (line); if (error) *error = GBR_INIT_ERROR_INVALID_MAPS; return NULL; } if (line[buf_size - 1] == 10) line[buf_size - 1] = 0; /* Extract the filename; it is always an absolute path. */ path = strchr (line, '/'); /* Sanity check. */ if (strstr (line, " r-xp ") == NULL || path == NULL) { fclose (f); g_free (line); if (error) *error = GBR_INIT_ERROR_INVALID_MAPS; return NULL; } path = g_strdup (path); g_free (line); fclose (f); return path; #endif /* ENABLE_BINRELOC */ } /** @internal * Find the canonical filename of the executable which owns symbol. * Returns a filename which must be freed, or NULL on error. */ static char * _br_find_exe_for_symbol (const void *symbol, GbrInitError * error) { #ifndef ENABLE_BINRELOC if (error) *error = GBR_INIT_ERROR_DISABLED; return (char *) NULL; #else #define SIZE PATH_MAX + 100 FILE *f; size_t address_string_len; char *address_string, line[SIZE], *found; if (symbol == NULL) return (char *) NULL; f = fopen ("/proc/self/maps", "r"); if (f == NULL) return (char *) NULL; address_string_len = 4; address_string = (char *) g_try_malloc (address_string_len); found = (char *) NULL; while (!feof (f)) { char *start_addr, *end_addr, *end_addr_end, *file; void *start_addr_p, *end_addr_p; size_t len; if (fgets (line, SIZE, f) == NULL) break; /* Sanity check. */ if (strstr (line, " r-xp ") == NULL || strchr (line, '/') == NULL) continue; /* Parse line. */ start_addr = line; end_addr = strchr (line, '-'); file = strchr (line, '/'); /* More sanity check. */ if (!(file > end_addr && end_addr != NULL && end_addr[0] == '-')) continue; end_addr[0] = '\0'; end_addr++; end_addr_end = strchr (end_addr, ' '); if (end_addr_end == NULL) continue; end_addr_end[0] = '\0'; len = strlen (file); if (len == 0) continue; if (file[len - 1] == '\n') file[len - 1] = '\0'; /* Get rid of "(deleted)" from the filename. */ len = strlen (file); if (len > 10 && strcmp (file + len - 10, " (deleted)") == 0) file[len - 10] = '\0'; /* I don't know whether this can happen but better safe than sorry. */ len = strlen (start_addr); if (len != strlen (end_addr)) continue; /* Transform the addresses into a string in the form of 0xdeadbeef, * then transform that into a pointer. */ if (address_string_len < len + 3) { address_string_len = len + 3; address_string = (char *) g_realloc (address_string, address_string_len); } memcpy (address_string, "0x", 2); memcpy (address_string + 2, start_addr, len); address_string[2 + len] = '\0'; sscanf (address_string, "%p", &start_addr_p); memcpy (address_string, "0x", 2); memcpy (address_string + 2, end_addr, len); address_string[2 + len] = '\0'; sscanf (address_string, "%p", &end_addr_p); if (symbol >= start_addr_p && symbol < end_addr_p) { found = file; break; } } g_free (address_string); fclose (f); if (found == NULL) return (char *) NULL; else return g_strdup (found); #endif /* ENABLE_BINRELOC */ } static gchar *exe = NULL; static void set_gerror (GError ** error, GbrInitError errcode); /** Initialize the BinReloc library (for applications). * * This function must be called before using any other BinReloc functions. * It attempts to locate the application's canonical filename. * * @note If you want to use BinReloc for a library, then you should call * gbr_init_lib() instead. * * @param error If BinReloc failed to initialize, then the error report will * be stored in this variable. Set to NULL if you don't want an * error report. See the #GbrInitError for a list of error * codes. * * @returns TRUE on success, FALSE if BinReloc failed to initialize. */ gboolean gbr_init (GError ** error) { GbrInitError errcode; /* Locate the application's filename. */ exe = _br_find_exe (&errcode); if (exe != NULL) /* Success! */ return TRUE; else { /* Failed :-( */ set_gerror (error, errcode); return FALSE; } } /** Initialize the BinReloc library (for libraries). * * This function must be called before using any other BinReloc functions. * It attempts to locate the calling library's canonical filename. * * @note The BinReloc source code MUST be included in your library, or this * function won't work correctly. * * @returns TRUE on success, FALSE if a filename cannot be found. */ gboolean gbr_init_lib (GError ** error) { GbrInitError errcode; exe = _br_find_exe_for_symbol ((const void *) "", &errcode); if (exe != NULL) /* Success! */ return TRUE; else { /* Failed :-( */ set_gerror (error, errcode); return exe != NULL; } } static void set_gerror (GError ** error, GbrInitError errcode) { gchar *error_message; if (error == NULL) return; switch (errcode) { case GBR_INIT_ERROR_NOMEM: error_message = "Cannot allocate memory."; break; case GBR_INIT_ERROR_OPEN_MAPS: error_message = "Unable to open /proc/self/maps for reading."; break; case GBR_INIT_ERROR_READ_MAPS: error_message = "Unable to read from /proc/self/maps."; break; case GBR_INIT_ERROR_INVALID_MAPS: error_message = "The file format of /proc/self/maps is invalid."; break; case GBR_INIT_ERROR_DISABLED: error_message = "Binary relocation support is disabled."; break; default: error_message = "Unknown error."; break; }; g_set_error (error, g_quark_from_static_string ("GBinReloc"), errcode, "%s", error_message); } /** Find the canonical filename of the current application. * * @param default_exe A default filename which will be used as fallback. * @returns A string containing the application's canonical filename, * which must be freed when no longer necessary. If BinReloc is * not initialized, or if the initialization function failed, * then a copy of default_exe will be returned. If default_exe * is NULL, then NULL will be returned. */ gchar * gbr_find_exe (const gchar * default_exe) { if (exe == NULL) { /* BinReloc is not initialized. */ if (default_exe != NULL) return g_strdup (default_exe); else return NULL; } return g_strdup (exe); } /** Locate the directory in which the current application is installed. * * The prefix is generated by the following pseudo-code evaluation: * \code * dirname(exename) * \endcode * * @param default_dir A default directory which will used as fallback. * @return A string containing the directory, which must be freed when no * longer necessary. If BinReloc is not initialized, or if the * initialization function failed, then a copy of default_dir * will be returned. If default_dir is NULL, then NULL will be * returned. */ gchar * gbr_find_exe_dir (const gchar * default_dir) { if (exe == NULL) { /* BinReloc not initialized. */ if (default_dir != NULL) return g_strdup (default_dir); else return NULL; } return g_path_get_dirname (exe); } /** Locate the prefix in which the current application is installed. * * The prefix is generated by the following pseudo-code evaluation: * \code * dirname(dirname(exename)) * \endcode * * @param default_prefix A default prefix which will used as fallback. * @return A string containing the prefix, which must be freed when no * longer necessary. If BinReloc is not initialized, or if the * initialization function failed, then a copy of default_prefix * will be returned. If default_prefix is NULL, then NULL will be * returned. */ gchar * gbr_find_prefix (const gchar * default_prefix) { gchar *dir1, *dir2; if (exe == NULL) { /* BinReloc not initialized. */ if (default_prefix != NULL) return g_strdup (default_prefix); else return NULL; } dir1 = g_path_get_dirname (exe); dir2 = g_path_get_dirname (dir1); g_free (dir1); return dir2; } /** Locate the application's binary folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/bin" * \endcode * * @param default_bin_dir A default path which will used as fallback. * @return A string containing the bin folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the * initialization function failed, then a copy of default_bin_dir will * be returned. If default_bin_dir is NULL, then NULL will be returned. */ gchar * gbr_find_bin_dir (const gchar * default_bin_dir) { gchar *prefix, *dir; prefix = gbr_find_prefix (NULL); if (prefix == NULL) { /* BinReloc not initialized. */ if (default_bin_dir != NULL) return g_strdup (default_bin_dir); else return NULL; } dir = g_build_filename (prefix, "bin", NULL); g_free (prefix); return dir; } /** Locate the application's superuser binary folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/sbin" * \endcode * * @param default_sbin_dir A default path which will used as fallback. * @return A string containing the sbin folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the * initialization function failed, then a copy of default_sbin_dir will * be returned. If default_bin_dir is NULL, then NULL will be returned. */ gchar * gbr_find_sbin_dir (const gchar * default_sbin_dir) { gchar *prefix, *dir; prefix = gbr_find_prefix (NULL); if (prefix == NULL) { /* BinReloc not initialized. */ if (default_sbin_dir != NULL) return g_strdup (default_sbin_dir); else return NULL; } dir = g_build_filename (prefix, "sbin", NULL); g_free (prefix); return dir; } /** Locate the application's data folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/share" * \endcode * * @param default_data_dir A default path which will used as fallback. * @return A string containing the data folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the * initialization function failed, then a copy of default_data_dir * will be returned. If default_data_dir is NULL, then NULL will be * returned. */ gchar * gbr_find_data_dir (const gchar * default_data_dir) { gchar *prefix, *dir; prefix = gbr_find_prefix (NULL); if (prefix == NULL) { /* BinReloc not initialized. */ if (default_data_dir != NULL) return g_strdup (default_data_dir); else return NULL; } dir = g_build_filename (prefix, "share", NULL); g_free (prefix); return dir; } gchar * gbr_find_pkg_data_dir (const gchar * default_pkg_data_dir, const gchar * pkg_name) { gchar *prefix, *dir; prefix = gbr_find_prefix (NULL); if (prefix == NULL) { /* BinReloc not initialized. */ if (default_pkg_data_dir != NULL) return g_strdup (default_pkg_data_dir); else return NULL; } dir = g_build_filename (prefix, "share", pkg_name, NULL); g_free (prefix); return dir; } /** Locate the application's localization folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/share/locale" * \endcode * * @param default_locale_dir A default path which will used as fallback. * @return A string containing the localization folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the * initialization function failed, then a copy of default_locale_dir will be returned. * If default_locale_dir is NULL, then NULL will be returned. */ gchar * gbr_find_locale_dir (const gchar * default_locale_dir) { gchar *data_dir, *dir; data_dir = gbr_find_data_dir (DATAROOTDIR); if (data_dir == NULL) { /* BinReloc not initialized. */ if (default_locale_dir != NULL) return g_strdup (default_locale_dir); else return NULL; } dir = g_build_filename (data_dir, "locale", NULL); g_free (data_dir); return dir; } /** Locate the application's library folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/lib" * \endcode * * @param default_lib_dir A default path which will used as fallback. * @return A string containing the library folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the * initialization function failed, then a copy of default_lib_dir will be returned. * If default_lib_dir is NULL, then NULL will be returned. */ gchar * gbr_find_lib_dir (const gchar * default_lib_dir) { gchar *prefix, *dir; prefix = gbr_find_prefix (NULL); if (prefix == NULL) { /* BinReloc not initialized. */ if (default_lib_dir != NULL) return g_strdup (default_lib_dir); else return NULL; } dir = g_build_filename (prefix, "lib", NULL); g_free (prefix); return dir; } /** Locate the application's libexec folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/libexec" * \endcode * * @param default_libexec_dir A default path which will used as fallback. * @return A string containing the libexec folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the initialization * function failed, then a copy of default_libexec_dir will be returned. * If default_libexec_dir is NULL, then NULL will be returned. */ gchar * gbr_find_libexec_dir (const gchar * default_libexec_dir) { gchar *prefix, *dir; prefix = gbr_find_prefix (NULL); if (prefix == NULL) { /* BinReloc not initialized. */ if (default_libexec_dir != NULL) return g_strdup (default_libexec_dir); else return NULL; } dir = g_build_filename (prefix, "libexec", NULL); g_free (prefix); return dir; } /** Locate the application's configuration files folder. * * The path is generated by the following pseudo-code evaluation: * \code * prefix + "/etc" * \endcode * * @param default_etc_dir A default path which will used as fallback. * @return A string containing the etc folder's path, which must be freed when * no longer necessary. If BinReloc is not initialized, or if the initialization * function failed, then a copy of default_etc_dir will be returned. * If default_etc_dir is NULL, then NULL will be returned. */ gchar * gbr_find_etc_dir (const gchar * default_etc_dir) { gchar *prefix, *dir; prefix = gbr_find_prefix (NULL); if (prefix == NULL) { /* BinReloc not initialized. */ if (default_etc_dir != NULL) return g_strdup (default_etc_dir); else return NULL; } dir = g_build_filename (prefix, "etc", NULL); g_free (prefix); return dir; } G_END_DECLS #endif /* __BINRELOC_C__ */ denemo-2.2.0/src/core/PaxHeaders.19168/cache.c0000644000000000000000000000013213135434036015457 xustar0030 mtime=1500919838.343315139 30 atime=1500919920.399981805 30 ctime=1500919914.159981805 denemo-2.2.0/src/core/cache.c0000644000175000017500000001711213135434036017332 0ustar00jjbenhamjjbenham00000000000000/* * cache.c * * Copyright 2016 Richard Shann * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA */ #include "core/cache.h" static void measure_set_cache (DenemoMeasure *meas, clef *clef, timesig *timesig, keysig *keysig, stemdirective *stem, gint offset) { meas->clef = clef; meas->timesig = timesig; meas->keysig = keysig; meas->stemdir = stem; meas->measure_number = offset; } static void object_set_cache (DenemoObject *obj, clef *clef, keysig *keysig, stemdirective *stem) { obj->clef = clef; obj->keysig = keysig; obj->stemdir = stem; } void cache_from_cursor (void) { } void update_timesig_cache (measurenode *mnode) { DenemoMeasure *measure = mnode->data; gint time1 = measure->timesig->time1; gint time2 = measure->timesig->time2; timesig *new = measure->timesig; for (mnode=mnode->next;mnode;mnode=mnode->next) { measure = mnode->data; /* examine objects in mnode - if there is a timesignature then don't change it */ GList *h = measure->objects; for (; h; h=h->next) { DenemoObject *obj = h->data; if (obj->object == measure->timesig) return; if (obj->type == CHORD) break; } if ((measure->timesig->time1 != time1) || (measure->timesig->time2 != time2)) measure->timesig = new; else return; } } void update_clef_cache (measurenode *mnode, objnode *onode) { DenemoMeasure *measure = mnode->data; clef *current = onode?((DenemoObject*)onode->data)->clef: measure->clef; if (current == NULL) current = measure->clef; if (current == NULL) { g_critical ("update_clef_cache called with uncached measure clef"); cache_all(); return; } if (onode) { ((DenemoObject*)onode->data)->clef = current; onode = onode->next; } for (;mnode;mnode=mnode->next, onode = mnode? ((DenemoMeasure*)mnode->data)->objects:NULL, mnode?((DenemoMeasure*)mnode->data)->clef = current:NULL) { while (onode) { DenemoObject *obj = (DenemoObject *)onode->data; if (obj->type == CLEF) return; obj->clef = current; onode = onode->next; } } } void update_keysig_cache (measurenode *mnode, objnode *onode) { DenemoMeasure *measure = mnode->data; keysig *current = onode?((DenemoObject*)onode->data)->keysig : measure->keysig; if (current == NULL) current = measure->keysig; if (current == NULL) { g_critical ("update_keysig_cache called with uncached measure clef"); cache_all(); return; } if (onode) { ((DenemoObject*)onode->data)->keysig = current; onode = onode->next; } for (;mnode;mnode=mnode->next, onode = mnode? ((DenemoMeasure*)mnode->data)->objects:NULL, mnode?((DenemoMeasure*)mnode->data)->keysig = current:NULL) { while (onode) { DenemoObject *obj = (DenemoObject *)onode->data; if (obj->type == KEYSIG) return; obj->keysig = current; onode = onode->next; } } } void update_stemdir_cache (measurenode *mnode, objnode *onode) { DenemoMeasure *measure = mnode->data; stemdirective *current = onode? ((DenemoObject*)onode->data)->stemdir : measure->stemdir; if (current == NULL) current = measure->stemdir; if (current == NULL) { g_critical ("update_stemdir_cache called with uncached measure clef"); cache_all(); return; } if (onode) { ((DenemoObject*)onode->data)->stemdir = current; onode = onode->next; } for (;mnode;mnode=mnode->next, onode = mnode? ((DenemoMeasure*)mnode->data)->objects:NULL, mnode?((DenemoMeasure*)mnode->data)->stemdir = current:NULL) { while (onode) { DenemoObject *obj = (DenemoObject *)onode->data; if (obj->type == STEMDIRECTIVE) return; obj->stemdir = current; onode = onode->next; } } } static stemdirective StemNeutral = { DENEMO_STEMBOTH, NULL }; void cache_staff (staffnode *s) { DenemoStaff *staff = (DenemoStaff*)s->data; GList *m; DenemoMeasure *measure = (DenemoMeasure*)staff->themeasures->data; clef *cclef = &staff->clef; timesig *ctim = &staff->timesig; keysig *ckey = &staff->keysig; stemdirective *cstem = &StemNeutral; gint offset = 0; for (m = staff->themeasures;m; m = m->next) { GList *o; measure = (DenemoMeasure*)m->data; offset += measure->measure_numbering_offset; measure_set_cache (measure, cclef, ctim, ckey, cstem, ++offset); for (o=measure->objects; o; o = o->next) { DenemoObject *obj = (DenemoObject *)o->data; switch (obj->type) { case CLEF: cclef = obj->object; break; case TIMESIG: ctim = obj->object; measure->timesig = ctim; break; case KEYSIG: ckey = obj->object; break; case STEMDIRECTIVE: cstem = obj->object; break; default: break; } object_set_cache (obj, cclef, ckey, cstem); } } } void cache_measure (measurenode *mnode) { if (mnode->data) { objnode *onode = ((DenemoMeasure*) mnode->data)->objects; update_clef_cache (mnode, onode); update_keysig_cache (mnode, onode); update_timesig_cache (mnode); update_stemdir_cache (mnode, onode); } } void cache_all (void) { GList *s; if (Denemo.project->movement && (s = Denemo.project->movement->thescore)) for (; s; s = s->next) cache_staff (s); } denemo-2.2.0/src/PaxHeaders.19168/scripting0000644000000000000000000000013213135434152015244 xustar0030 mtime=1500919914.293315139 30 atime=1500919914.539981806 30 ctime=1500919914.293315139 denemo-2.2.0/src/scripting/0000755000175000017500000000000013135434152017172 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/src/scripting/PaxHeaders.19168/scheme-identifiers.c0000644000000000000000000000013213135434036021235 xustar0030 mtime=1500919838.359981805 30 atime=1500919920.416648473 30 ctime=1500919914.286648472 denemo-2.2.0/src/scripting/scheme-identifiers.c0000644000175000017500000025570613135434036023125 0ustar00jjbenhamjjbenham00000000000000#include #include "scripting/scheme-identifiers.h" #include "scripting/scheme-callbacks.h" #include "core/view.h" #ifdef DEVELOPER static FILE *DEV_fp; #define DEV_CODE gint idx = lookup_command_from_name(Denemo.map, name+strlen(DENEMO_SCHEME_PREFIX));\ gchar *tooltip = (idx<0)? "To be documented":(gchar*)lookup_tooltip_from_idx(Denemo.map, idx);\ if(!DEV_fp) DEV_fp = fopen("functions.xml", "w"); #endif void install_scm_function (gint nbargs, gchar* tooltip, gchar * name, gpointer callback) { #ifdef DEVELOPER DEV_CODE; if (DEV_fp) fprintf (DEV_fp, "%s %i parameter: %s \n", name, nbargs, tooltip); #endif switch(nbargs){ case 0: scm_c_define_gsubr (name, 0, 1, 0, callback); break; case 1: scm_c_define_gsubr (name, 1, 1, 0, callback); break; case 2: scm_c_define_gsubr (name, 2, 0, 0, callback); break; default: scm_c_define_gsubr (name, 0, nbargs, 0, callback);//use 3+ for more arguments, they will all be optional break; } gchar* helpname = g_strconcat("Help-", name, NULL); define_scheme_variable(helpname, tooltip, "Value is the help string of the variable"); g_free(helpname); } #undef DEV_CODE void create_scheme_identfiers (void) { /* test with (d-EditMode) (d-2) (d-PutNoteName "cis''") */ /* create scheme functions d- for all the menuitem callbacks of that are not check/radio items The scheme functions are defined to take one optional parameter which by denemo convention will be a String type, not necessarily null terminated, which is then passed as a GString * to the callback routines (with the first parameter, the DenemoAction*, passed as NULL. */ #include "scripting/scheme.h" init_denemo_notenames (); install_scm_function (0, "Hides all the menus", DENEMO_SCHEME_PREFIX "HideMenus", scheme_hide_menus); install_scm_function (0, "Hides Score buttons or shows them if passed #f", DENEMO_SCHEME_PREFIX "HideButtons", scheme_hide_buttons); install_scm_function (0, "Removes Score buttons", DENEMO_SCHEME_PREFIX "DestroyButtons", scheme_destroy_buttons); install_scm_function (0, "Hides the Denemo.project or shows it if passed #f", DENEMO_SCHEME_PREFIX "HideWindow", scheme_hide_window); install_scm_function (1, "Takes the the name of a scripted command. Runs the script stored for that command. Scripts which invoke other scripted commands use this (implicitly?) ", DENEMO_SCHEME_PREFIX "ScriptCallback", scheme_script_callback); install_scm_function (1, "create a dialog with the options (null separated string) & return the one chosen, of #f if the user cancels, takes optional title", DENEMO_SCHEME_PREFIX "GetOption", scheme_get_option); /* test with (display (d-GetOption "this\0and\0that\0")) */ install_scm_function (0, "Returns the text on the clipboard", DENEMO_SCHEME_PREFIX "GetTextSelection", scheme_get_text_selection); install_scm_function (0, "Returns the padding that has been set by dragging in the Print view window", DENEMO_SCHEME_PREFIX "GetPadding", scheme_get_padding); install_scm_function (0, "Deprecated - gets an integer from the user via a dialog", DENEMO_SCHEME_PREFIX "GetRelativeFontSize", scheme_get_relative_font_size); /* install the scheme functions for calling extra Denemo functions created for the scripting interface */ install_scm_function (1, "Takes a command name. called by a script if it requires initialization the initialization script is expected to be in init.scm in the menupath of the command passed in.", DENEMO_SCHEME_PREFIX "InitializeScript", scheme_initialize_script); install_scm_function (1, " pass in a path (from below menus) to a command script. Loads the command from .denemo or system if it can be found. It is used at startup in .denemo files like ReadingNoteNames.denemo which executes (d-LoadCommand \"MainMenu/Educational/ReadingNoteNames\") to ensure that the command it needs is in the command set.", DENEMO_SCHEME_PREFIX "LoadCommand", scheme_load_command); install_scm_function (1, "Takes a string, a menu path (from below menus). It executes the command for that menu item. Returns #f for no menu item.", DENEMO_SCHEME_PREFIX "ActivateMenuItem", scheme_activate_menu_item); install_scm_function (0, "Returns the directory holding the user's preferences", DENEMO_SCHEME_PREFIX "LocateDotDenemo", scheme_locate_dotdenemo); install_scm_function (0, "Returns the name of the type of object at the cursor, or None if none. If not passed #f returns Appending if cursor is in appending after an object.", DENEMO_SCHEME_PREFIX "GetType", scheme_get_type); install_scm_function (0, "Returns the lilypond typesetting text for object at the cursor or #f if the object has not yet been typeset", DENEMO_SCHEME_PREFIX "GetLilyPond", scheme_get_lilypond); install_scm_function (0, "Re-computes the LilyPond output for the current score layout", DENEMO_SCHEME_PREFIX "RefreshLilyPond", scheme_refresh_lilypond); install_scm_function (0, "Returns a string numerator/denominator for a tuplet open object or #f if cursor not on a tuplet open", DENEMO_SCHEME_PREFIX "GetTuplet", scheme_get_tuplet); install_scm_function (0, "Set passed string as numerator/denominator for a tuplet open at cursor", DENEMO_SCHEME_PREFIX "SetTuplet", scheme_set_tuplet); install_scm_function (0, "Set passed 24 bit number as RGB color of background.", DENEMO_SCHEME_PREFIX "SetBackground", scheme_set_background); install_scm_function (2, "Takes a staff number m and a object number n. Returns the type of object at the (m, n)th position on the Denemo Clipboard or #f if none.", DENEMO_SCHEME_PREFIX "GetClipObjType", scheme_get_clip_obj_type); install_scm_function (1, "Takes a staff number m, Returns the number of objects in the mth staff on the Denemo Clipboard or #f if none.", DENEMO_SCHEME_PREFIX "GetClipObjects", scheme_get_clip_objects); install_scm_function (2, "Takes a staff number m and a object number n. Inserts the (m, n)th Denemo Object from Denemo Clipboard into the staff at the cursor position", DENEMO_SCHEME_PREFIX "PutClipObj", scheme_put_clip_obj); install_scm_function (0, "Clears the Denemo Music Clipboard", DENEMO_SCHEME_PREFIX "ClearClipboard", scheme_clear_clipboard); install_scm_function (0, "Gives the number of staffs in the Denemo Music Clipboard", DENEMO_SCHEME_PREFIX "GetStaffsInClipboard", scheme_get_staffs_in_clipboard); install_scm_function (0, "Gives the number of measures in the current staff", DENEMO_SCHEME_PREFIX "GetMeasuresInStaff", scheme_get_measures_in_staff); install_scm_function (0, "Lessens the display height for the current staff", DENEMO_SCHEME_PREFIX "ShortenStaffHeight", scheme_shorten_staff_height); install_scm_function (0, "Copies the staff properties from the staff above to the current staff", DENEMO_SCHEME_PREFIX "InheritStaffProperties", scheme_inherit_staff_properties); install_scm_function (0, "Sets the number of lines for the current staff", DENEMO_SCHEME_PREFIX "SetLinesInStaff", scheme_set_lines_in_staff); install_scm_function (0, "Sets the highest note playable for the current staff", DENEMO_SCHEME_PREFIX "SetStaffRangeHi", scheme_set_staff_range_hi); install_scm_function (0, "Sets the lowest note playable for the current staff", DENEMO_SCHEME_PREFIX "SetStaffRangeLo", scheme_set_staff_range_lo); install_scm_function (0, "Sets the range of notes playable for the current staff from the chord at the cursor.", DENEMO_SCHEME_PREFIX "SetStaffRange", scheme_set_staff_range); install_scm_function (0, "Sets the display color for the current staff", DENEMO_SCHEME_PREFIX "SetColorOfStaff", scheme_set_color_of_staff); install_scm_function (0, "Gives the number of staffs in the current movement", DENEMO_SCHEME_PREFIX "GetStaffsInMovement", scheme_get_staffs_in_movement); install_scm_function (0, "Makes the current staff a voice belonging to the staff above", DENEMO_SCHEME_PREFIX "StaffToVoice", scheme_staff_to_voice); install_scm_function (0, "Makes the current voice a independent staff", DENEMO_SCHEME_PREFIX "VoiceToStaff", scheme_voice_to_staff); install_scm_function (0, "Returns #f if the current staff is not a voice else true", DENEMO_SCHEME_PREFIX "IsVoice", scheme_is_voice); install_scm_function (0, "Adjusts the horizontal (x-) positioning of notes etc after paste", DENEMO_SCHEME_PREFIX "AdjustXes", scheme_adjust_xes); install_scm_function (0, "Turn highlighting of cursor off/on returning #t, or given a boolean parameter sets the highlighting returning the previous value", DENEMO_SCHEME_PREFIX "HighlightCursor", scheme_highlight_cursor); install_scm_function (0, "Returns #t if there is an object at the cursor which has any printing behavior it may have overridden", DENEMO_SCHEME_PREFIX "GetNonprinting", scheme_get_nonprinting); install_scm_function (0, "Sets the Non Printing attribute of a chord (or note/rest) at the cursor. For a rest this makes a non printing rest, for a note it makes it ia pure rhythm (which will not print, but can be assigned pitch, e.g. via a MIDI keyboard. Pass in #f to unset the attribute", DENEMO_SCHEME_PREFIX "SetNonprinting", scheme_set_nonprinting); install_scm_function (0, "Returns #t if there is a grace note/chord at cursor, else #f", DENEMO_SCHEME_PREFIX "IsGrace", scheme_is_grace); install_scm_function (0, "Returns #t if there is a tied note/chord at cursor, else #f", DENEMO_SCHEME_PREFIX "IsTied", scheme_is_tied); install_scm_function (0, "Returns #t if there is a chord with slur starting at cursor, else #f", DENEMO_SCHEME_PREFIX "IsSlurStart", scheme_is_slur_start); install_scm_function (0, "Returns #t if there is a chord with slur ending at cursor, else #f", DENEMO_SCHEME_PREFIX "IsSlurEnd", scheme_is_slur_end); install_scm_function (0, "Returns #t if there is a chord with crescendo starting at cursor, else #f", DENEMO_SCHEME_PREFIX "IsCrescStart", scheme_is_cresc_start); install_scm_function (0, "Returns #t if there is a chord with crescendo ending at cursor, else #f", DENEMO_SCHEME_PREFIX "IsCrescEnd", scheme_is_cresc_end); install_scm_function (0, "Returns #t if there is a chord with diminuendo starting at cursor, else #f", DENEMO_SCHEME_PREFIX "IsDimStart", scheme_is_dim_start); install_scm_function (0, "Returns #t if there is a chord with diminuendo ending at cursor, else #f", DENEMO_SCHEME_PREFIX "IsDimEnd", scheme_is_dim_end); install_scm_function (0, "Returns #t if the cursor is in the selection area, else #f", DENEMO_SCHEME_PREFIX "IsInSelection", scheme_is_in_selection); install_scm_function (0, "Returns #t if there is a selection, else #f", DENEMO_SCHEME_PREFIX "HasSelection", scheme_has_selection); install_scm_function (0, "Returns #t if the cursor is in the appending position, else #f", DENEMO_SCHEME_PREFIX "IsAppending", scheme_is_appending); install_scm_function (0, "Shifts the cursor up or down by the integer amount passed in", DENEMO_SCHEME_PREFIX "ShiftCursor", scheme_shift_cursor); install_scm_function (0, "Returns the Roman Numeral corresponding to the passed string", DENEMO_SCHEME_PREFIX "RomanNumeral", scheme_roman_numeral); install_scm_function (0, "Returns the movement number counting from 1", DENEMO_SCHEME_PREFIX "GetMovement", scheme_get_movement); install_scm_function (0, "Returns the LilyPond identifier for the current voice", DENEMO_SCHEME_PREFIX "GetVoiceIdentifier", scheme_get_voice_identifier); install_scm_function (0, "Returns the staff/voice number counting from 1", DENEMO_SCHEME_PREFIX "GetStaff", scheme_get_staff); install_scm_function (0, "With parameter #t or #f makes the staff hidden/visible in the display, returns the hidden status. Typesetting is unaffected", DENEMO_SCHEME_PREFIX "StaffHidden", scheme_staff_hidden); install_scm_function (0, "Returns the measure number counting from 1", DENEMO_SCHEME_PREFIX "GetMeasure", scheme_get_measure); install_scm_function (0, "Sets the display width of the object at the cursor to the value passed (in pixels)", DENEMO_SCHEME_PREFIX "SetObjectDisplayWidth", scheme_set_object_display_width); install_scm_function (0, "Returns the cursor horizontal position in current measure.\n 1 = first position in measure, n+1 is appending position where n is the number of objects in current measure", DENEMO_SCHEME_PREFIX "GetHorizontalPosition", scheme_get_horizontal_position); install_scm_function (0, "Returns the note name for the line or space where the cursor is", DENEMO_SCHEME_PREFIX "GetCursorNote", scheme_get_cursor_note); install_scm_function (0, "Returns the note name and octave in LilyPond notation for the line or space where the cursor is", DENEMO_SCHEME_PREFIX "GetCursorNoteWithOctave", scheme_get_cursor_note_with_octave); install_scm_function (0, "Prints out information about the object at the cursor", DENEMO_SCHEME_PREFIX "DebugObject", scheme_debug_object); install_scm_function (0, "Displays information about the object at the cursor position.", DENEMO_SCHEME_PREFIX "DisplayObject", scheme_display_object); install_scm_function (0, "Prints out the cumulative time spent editing this score.\nThe time counts any period between starting to edit and saving to disk\nThe time is accumulated over different editing sessions.", DENEMO_SCHEME_PREFIX "GetEditingTime", scheme_get_editing_time); install_scm_function (0, "Remove the user's customized buttons and other scheme startup stuff created by the user in actions/denemo.scm", DENEMO_SCHEME_PREFIX "DestroySchemeInit", scheme_destroy_scheme_init); install_scm_function (3, "Takes a number 1 or 2 and initial value and a message. Returns one or two note-names in LilyPond format or #f if the user cancels", DENEMO_SCHEME_PREFIX "GetNoteNamesFromUser", scheme_get_note_names_from_user); install_scm_function (3, "Takes a title, instruction and initial value. Returns user input #f if the user cancels", DENEMO_SCHEME_PREFIX "GetMultilineUserInput", scheme_get_multiline_user_input); install_scm_function (5, "Takes a title, instruction, prior lilypond context, post lilypond context and intial value. Returns markup from user which is checked in the given contexts #f if the user cancels", DENEMO_SCHEME_PREFIX "GetLilyPondSyntaxFromUser", scheme_get_lilypond_syntax_from_user); install_scm_function (0, "Returns the name of the (highest) note in any chord at the cursor position, or #f if none", DENEMO_SCHEME_PREFIX "GetNoteName", scheme_get_note_name); install_scm_function (0, "Insert a rest at the cursor in the prevailing duration, or if given a integer, in that duration, setting the prevailing duration. If MIDI in is active, the cursor stays on the rest after inserting it, else it moves right.", DENEMO_SCHEME_PREFIX "InsertRest", scheme_insert_rest); install_scm_function (1, "Takes a space separated list of notes in LilyPond syntax and inserts/appends a chord at the cursor in the prevailing duration, or if given a integer, in that duration, not setting the prevailing duration.", DENEMO_SCHEME_PREFIX "InsertChord", scheme_insert_chord); install_scm_function (0, "Insert rests at the cursor to the value of the one whole measure in the key signature and return the number of rests inserted", DENEMO_SCHEME_PREFIX "PutWholeMeasureRests", scheme_put_whole_measure_rests); install_scm_function (0, "Takes optional integer parameter n = 1..., returns LilyPond representation of the nth note of the chord at the cursor counting from the lowest, or #f if none", DENEMO_SCHEME_PREFIX "GetNote", scheme_get_note); install_scm_function (0, "Takes optional integer parameter n = 1..., returns the number of diatonic steps above the center-line of the staff of the nth note (counting from the lowest) of the chord at the cursor, or #f if none", DENEMO_SCHEME_PREFIX "GetNoteStaffPosition", scheme_get_note_staff_position); install_scm_function (0, "Takes optional integer parameter n = 1..., returns LilyPond representation of the nth note of the chord at the cursor counting from the highest, or #f if none", DENEMO_SCHEME_PREFIX "GetNoteFromTop", scheme_get_note_from_top); install_scm_function (0, "Takes optional integer parameter n = 1..., returns MIDI key for the nth note of the chord at the cursor counting from the highest, or #f if none", DENEMO_SCHEME_PREFIX "GetNoteFromTopAsMidi", scheme_get_note_from_top_as_midi); install_scm_function (0, "Returns a space separated string of LilyPond notes for the chord at the cursor position or #f if none", DENEMO_SCHEME_PREFIX "GetNotes", scheme_get_notes); install_scm_function (0, "Returns LilyPond note at the cursor position or #f if none", DENEMO_SCHEME_PREFIX "GetNoteAtCursor", scheme_get_note_at_cursor); install_scm_function (0, "Returns the number of dots on the note at the cursor, or #f if no note", DENEMO_SCHEME_PREFIX "GetDots", scheme_get_dots); install_scm_function (0, "Returns the base duration of the note at the cursor number=0, 1, 2 for whole half quarter note etc, or #f if none", DENEMO_SCHEME_PREFIX "GetNoteBaseDuration", scheme_get_note_base_duration); install_scm_function (0, "Returns the duration in LilyPond syntax of the note at the cursor, or #f if none", DENEMO_SCHEME_PREFIX "GetNoteDuration", scheme_get_note_duration); install_scm_function (1, "Takes an integer, Sets the number of ticks (PPQN) for the object at the cursor, returns #f if none; if the object is a chord it is set undotted", DENEMO_SCHEME_PREFIX "SetDurationInTicks", scheme_set_duration_in_ticks); install_scm_function (1, "Takes an index, returns the time in seconds, time signature and tempo in seconds per quarter note of the index'th MIDI tempo event in the recorded MIDI stream.", DENEMO_SCHEME_PREFIX "GetRecordedMidiTempo", scheme_get_recorded_midi_tempo); install_scm_function (1, "Takes an track number 1,2 ..., makes that MIDI track of the loaded MIDI stream the current recorded track.", DENEMO_SCHEME_PREFIX "GetImportedMidiTrack", scheme_get_imported_midi_track); install_scm_function (0, "Delete the current imported/recorded MIDI track fails if playing, returning #f.", DENEMO_SCHEME_PREFIX "DeleteImportedMidi", scheme_delete_imported_midi); install_scm_function (0, "Returns the MIDI track number of the current imported track.", DENEMO_SCHEME_PREFIX "GetCurrentMidiTrack", scheme_get_current_midi_track); install_scm_function (0, "Returns the number of MIDI tracks of the loaded/recorded MIDI.", DENEMO_SCHEME_PREFIX "GetImportedMidiTracks", scheme_get_imported_midi_tracks); install_scm_function (0, "Returns the duration in seconds of the recorded MIDI track or #f if none", DENEMO_SCHEME_PREFIX "GetRecordedMidiDuration", scheme_get_recorded_midi_duration); install_scm_function (0, "Returns the number of ticks (PPQN) for the object at the cursor, or #f if none", DENEMO_SCHEME_PREFIX "GetDurationInTicks", scheme_get_duration_in_ticks); install_scm_function (0, "Returns the number of ticks (PPQN) for the chord without dots or tuplet effects at the cursor, or #f if not a chord. The value is -ve for special durations (i.e. non-standard notes)", DENEMO_SCHEME_PREFIX "GetBaseDurationInTicks", scheme_get_base_duration_in_ticks); install_scm_function (0, "Returns the tick count (PPQN) for the end of the object at the cursor, or #f if none", DENEMO_SCHEME_PREFIX "GetEndTick", scheme_get_end_tick); install_scm_function (0, "Returns the tick count (PPQN) for the start of the object at the cursor, or #f if none", DENEMO_SCHEME_PREFIX "GetStartTick", scheme_get_start_tick); install_scm_function (0, "Returns the measure number at cursor position.", DENEMO_SCHEME_PREFIX "GetMeasureNumber", scheme_get_measure_number); install_scm_function (0, "Returns the value set on the current measure by which the measure numbers in the Denemo Displayed should be offset from this point on.", DENEMO_SCHEME_PREFIX "GetMeasureNumberOffset", scheme_get_measure_number_offset); install_scm_function (1, "Takes a value to set on the current measure. The measure numbers in the Denemo Display will be offset from this point on by this amount. No effect on the typesetting.", DENEMO_SCHEME_PREFIX "SetMeasureNumberOffset", scheme_set_measure_number_offset); install_scm_function (0, "Takes LilyPond note name string. Moves the cursor to the line or space", DENEMO_SCHEME_PREFIX "CursorToNote", scheme_cursor_to_note); install_scm_function (1, "Takes a number 1 ... n. Moves the cursor to the nth note from the bottom of the chord at the cursor, returning #f if it fails.", DENEMO_SCHEME_PREFIX "CursorToNthNoteHeight", scheme_cursor_to_nth_note_height); install_scm_function (0, "If there are two notes at the cursor height it re-orders them and returns #t. If passed 'enquire it does not do the swapping.", DENEMO_SCHEME_PREFIX "SwapNotesAtCursorHeight", scheme_swap_notes_at_cursor_height); install_scm_function (0, "Moves the cursor up to the next higher note of the chord at the cursor, returning #f if it fails.", DENEMO_SCHEME_PREFIX "CursorToNextNoteHeight", scheme_cursor_to_next_note_height); install_scm_function (0, "Returns the prevailing key signature at the cursor", DENEMO_SCHEME_PREFIX "GetPrevailingKeysig", scheme_get_prevailing_keysig); install_scm_function (0, "Returns the name prevailing key signature at the cursor", DENEMO_SCHEME_PREFIX "GetPrevailingKeysigName", scheme_get_prevailing_keysig_name); install_scm_function (0, "Returns the prevailing time signature at the cursor", DENEMO_SCHEME_PREFIX "GetPrevailingTimesig", scheme_get_prevailing_timesig); install_scm_function (0, "Returns the prevailing clef at the cursor. Note that non-builtin clefs like drum are not handled yet.", DENEMO_SCHEME_PREFIX "GetPrevailingClef", scheme_get_prevailing_clef); install_scm_function (0, "Returns the LilyPond typesetting syntax for prevailing clef at the cursor.", DENEMO_SCHEME_PREFIX "GetPrevailingClefAsLilyPond", scheme_get_prevailing_clef_as_lilypond); install_scm_function (0, "Returns the LilyPond typesetting syntax for prevailing key signature at the cursor.", DENEMO_SCHEME_PREFIX "GetPrevailingKeysigAsLilyPond", scheme_get_prevailing_keysig_as_lilypond); install_scm_function (0, "Returns the LilyPond typesetting syntax for prevailing time signature at the cursor.", DENEMO_SCHEME_PREFIX "GetPrevailingTimesigAsLilyPond", scheme_get_prevailing_timesig_as_lilypond); install_scm_function (0, "Returns the prevailing duration, ie duration which will be used for the next inserted note, with a parameter 0 ... 8 sets the prevailing duration.", DENEMO_SCHEME_PREFIX "GetPrevailingDuration", scheme_get_prevailing_duration); //more work needed, see above install_scm_function (0, "Sets the prevailing keysignature at the cursor to the string of 7 steps passed. Each step can be -1, 0 or 1",DENEMO_SCHEME_PREFIX"SetPrevailingKeysig", scheme_set_prevailing_keysig); install_scm_function (0, "Makes the initial keysig sharper/flatter", DENEMO_SCHEME_PREFIX "IncrementInitialKeysig", scheme_increment_initial_keysig); install_scm_function (0, "Makes the keysig sharper/flatter, affects keysig change when cursor is on one or appending after one, otherwise affects initial keysig", DENEMO_SCHEME_PREFIX "IncrementKeysig", scheme_increment_keysig); install_scm_function (0, "Appends a new movement without copying staff structure.", DENEMO_SCHEME_PREFIX "AddMovement", scheme_add_movement); install_scm_function (0, "Takes a string of LilyPond note names. Replaces the notes of the chord at the cursor with these notes, preserving other attributes", DENEMO_SCHEME_PREFIX "ChangeChordNotes", scheme_change_chord_notes); install_scm_function (0, "Takes a LilyPond note name, and changes the note at the cursor to that note", DENEMO_SCHEME_PREFIX "PutNoteName", scheme_put_note_name); install_scm_function (0, "Takes a LilyPond note name, changes the note at the cursor to have the accidental passed in either LilyPond string or integer -2..+2. Returns #f if cursor is not on a note position. ", DENEMO_SCHEME_PREFIX "SetAccidental", scheme_set_accidental); install_scm_function (0, "Inserts a rest at the cursor; either passed in duration or if none passed the prevailing duration.", DENEMO_SCHEME_PREFIX "PutRest", scheme_put_rest); install_scm_function (0, "Inserts a note at the cursor; either passed in duration or if none passed the prevailing duration.", DENEMO_SCHEME_PREFIX "PutNote", scheme_put_note); install_scm_function (0, "Takes a LilyPond note name, and adds that note to the chord", DENEMO_SCHEME_PREFIX "InsertNoteInChord", scheme_insert_note_in_chord); install_scm_function (0, "Moves the note at the cursor by the number of diatonic steps passed in", DENEMO_SCHEME_PREFIX "DiatonicShift", scheme_diatonic_shift); install_scm_function (0, "Moves the cursor to the object to the right returning #t if this was possible", DENEMO_SCHEME_PREFIX "NextObject", scheme_next_object); install_scm_function (0, "Moves the cursor to object to the left returning #t if the cursor moved", DENEMO_SCHEME_PREFIX "PrevObject", scheme_prev_object); install_scm_function (0, "Moves the cursor to the next object in the current measure, returning #f if there were no more objects to the left in the current measure", DENEMO_SCHEME_PREFIX "NextObjectInMeasure", scheme_next_object_in_measure); install_scm_function (0, "Moves the cursor to the previous object in the current measure, returning #f if the cursor was on the first object", DENEMO_SCHEME_PREFIX "PrevObjectInMeasure", scheme_prev_object_in_measure); install_scm_function (0, "Moves the cursor to the next object in the selection. Returns #t if the cursor moved", DENEMO_SCHEME_PREFIX "NextSelectedObject", scheme_next_selected_object); install_scm_function (0, "Moves the cursor to the previous object in the selection. Returns #t if the cursor moved", DENEMO_SCHEME_PREFIX "PrevSelectedObject", scheme_prev_selected_object); install_scm_function (0, "Moves the cursor the the next object of type CHORD in the current staff. Returns #f if the cursor did not move", DENEMO_SCHEME_PREFIX "NextChord", scheme_next_chord); install_scm_function (0, "Moves the cursor the the previous object of type CHORD in the current staff. Returns #f if the cursor did not move", DENEMO_SCHEME_PREFIX "PrevChord", scheme_prev_chord); install_scm_function (0, "Moves the cursor the the next object of type CHORD in the current measure. Returns #f if the cursor did not move", DENEMO_SCHEME_PREFIX "NextChordInMeasure", scheme_next_chord_in_measure); install_scm_function (0, "Moves the cursor the the previous object of type CHORD in the current measure. Returns #f if the cursor did not move", DENEMO_SCHEME_PREFIX "PrevChordInMeasure", scheme_prev_chord_in_measure); install_scm_function (0, "Moves the cursor the next object of type CHORD which is not a rest in the current staff. Returns #f if the cursor did not move", DENEMO_SCHEME_PREFIX "NextNote", scheme_next_note); install_scm_function (0, "Moves the cursor the previous object of type CHORD which is not a rest in the current staff. Returns #f if the cursor did not move", DENEMO_SCHEME_PREFIX "PrevNote", scheme_prev_note); install_scm_function (0, "Moves the view port (the Denemo Display) to the left, leaving the cursor on the same object as long as it is still in view.", DENEMO_SCHEME_PREFIX "ScrollLeft", scheme_scroll_left); install_scm_function (0, "Moves the view port (the Denemo Display) to the right, leaving the cursor on the same object as long as it is still in view.", DENEMO_SCHEME_PREFIX "ScrollRight", scheme_scroll_right); install_scm_function (0, "Creates a music Snippet comprising the object at the cursor Returns #f if not possible, otherwise an identifier for that snippet", DENEMO_SCHEME_PREFIX "CreateSnippetFromObject", scheme_create_snippet_from_object); install_scm_function (0, "Selects music Snippet from passed id Returns #f if not possible", DENEMO_SCHEME_PREFIX "SelectSnippet", scheme_select_snippet); install_scm_function (1, "Inserts music Snippet from passed id Returns #f if not possible, a second boolean parameter determines if the snippet becomes selected. ", DENEMO_SCHEME_PREFIX "InsertSnippet", scheme_insert_snippet); install_scm_function (0, "Moves the cursor the next object that is a Denemo Directive in the current staff. Returns #f if the cursor did not move", DENEMO_SCHEME_PREFIX "NextStandaloneDirective", scheme_next_standalone_directive); install_scm_function (0, "Moves the cursor the previous object that is a Denemo Directive in the current staff. Returns #f if the cursor did not move", DENEMO_SCHEME_PREFIX "PrevStandaloneDirective", scheme_prev_standalone_directive); install_scm_function (0, "Moves the cursor within the current measure to the next object that is a Denemo Directive in the current staff. Returns #f if the cursor did not move", DENEMO_SCHEME_PREFIX "NextStandaloneDirectiveInMeasure", scheme_next_standalone_directive_in_measure); install_scm_function (0, "Moves the cursor within the current measure to the previous object that is a Denemo Directive in the current staff. Returns #f if the cursor did not move", DENEMO_SCHEME_PREFIX "PrevStandaloneDirectiveInMeasure", scheme_prev_standalone_directive_in_measure); install_scm_function (0, "Enforces the treatment of the note at the cursor as a chord in LilyPond", DENEMO_SCHEME_PREFIX "Chordize", scheme_chordize); install_scm_function (0, "Takes xml representation of a preference and adds it to the Denemo preferences", DENEMO_SCHEME_PREFIX "SetPrefs", scheme_set_prefs); install_scm_function (0, "Takes string name of a boolean-valued preference and returns the current value. Non-existent prefs return #f, ensure that the preference name is correct before using.", DENEMO_SCHEME_PREFIX "GetBooleanPref", scheme_get_boolean_pref); install_scm_function (0, "Takes string name of an int-valued preference and returns the current value. Non-existent prefs return #f", DENEMO_SCHEME_PREFIX "GetIntPref", scheme_get_int_pref); install_scm_function (0, "Takes string name of a string-valued preference and returns the current value. Non-existent prefs return #f", DENEMO_SCHEME_PREFIX "GetStringPref", scheme_get_string_pref); install_scm_function (0, "Takes a script as a string, which will be stored. All the callbacks are called when the musical score is closed", DENEMO_SCHEME_PREFIX "AttachQuitCallback", scheme_attach_quit_callback); install_scm_function (0, "Removes a callback from the current musical score", DENEMO_SCHEME_PREFIX "DetachQuitCallback", scheme_detach_quit_callback); install_scm_function (0, "Returns DENEMO_INPUTMIDI, DENEMO_INPUTKEYBOARD, DENEMO_INPUTAUDIO depending on the source of input to Denemo.", DENEMO_SCHEME_PREFIX "GetInputSource", scheme_get_input_source); install_scm_function (0, "Pops up a menu given by the list of pairs in the argument. Each pair should be a label string and an expression, the expression for the chosen label is returned. Alternatively the label string can be replaced by a pair of strings, label . tooltip. The third syntax is just a list of string labels, the chosen string is returned.", DENEMO_SCHEME_PREFIX "PopupMenu", scheme_popup_menu); install_scm_function (1, "Pops up a dialog of check buttons given by the list of pairs in the argument and optional title argument. Each pair should be a label string and a boolean, the list is returned with booleans as chosen or #f returned of camce;;ed.", DENEMO_SCHEME_PREFIX "CheckBoxes", scheme_check_boxes); install_scm_function (0, "Returns a list of the target type and grob (if a directive). Target is set by clicking on the typeset version of the score at a link that LilyPond has inserted.", DENEMO_SCHEME_PREFIX "GetTargetInfo", scheme_get_target_info); install_scm_function (0, "Interactively sets a target (a click on a LilyPond link in the printview window) from the user ", DENEMO_SCHEME_PREFIX "GetNewTarget", scheme_get_new_target); install_scm_function (0, "Interactively sets a point in the printview window from the user", DENEMO_SCHEME_PREFIX "GetNewPoint", scheme_get_new_point); install_scm_function (0, "Interactively sets a reference point (a click on a point in the printview window) from the user showing a cross hairs prompt ", DENEMO_SCHEME_PREFIX "GetReferencePoint", scheme_get_reference_point); install_scm_function (0, "Interactively gets an offset from the user in the print view window. The offset is from the last clicked object in the print view window. Returns pair of numbers x is positive to the right, y is positive upwards.", DENEMO_SCHEME_PREFIX "GetOffset", scheme_get_offset); install_scm_function (0, "Interactively sets a control point for a curve in the print view window. Takes one parameter the number 1-4 of the control point to set.", DENEMO_SCHEME_PREFIX "GetControlPoint", scheme_get_control_point); install_scm_function (0, "Interactively gets a curve from the user in the print view window. Returns a list of pairs of numbers, the control points of the curve.", DENEMO_SCHEME_PREFIX "GetCurve", scheme_get_curve); install_scm_function (0, "Interactively gets two positions from the user in the print view window. Returns pair of pairs numbers.", DENEMO_SCHEME_PREFIX "GetPositions", scheme_get_positions); install_scm_function (4, "Move to given Movement, voice measure and object position. Takes 4 parameters integers starting from 1, use #f for no change. Returns #f if it fails", DENEMO_SCHEME_PREFIX "GoToPosition", scheme_goto_position); install_scm_function (5, "Takes a palette name, label, tooltip and script", DENEMO_SCHEME_PREFIX "CreatePaletteButton", scheme_create_palette_button); install_scm_function (4, "Takes a palette name, boolean, and limit", DENEMO_SCHEME_PREFIX "SetPaletteShape", scheme_set_palette_shape); install_scm_function (1, "Hides/Un-hides a palette. Pass a palette name (or #t to choose a palette) with second parameter #f hides the palette otherwise show.", DENEMO_SCHEME_PREFIX "ShowPalettes", scheme_show_palettes); install_scm_function (0, "Returns the current palette name. The palette status is not changed - it may be hidden. Pass a palette name to become the current palette or pass #t to choose a palette as the current palette.", DENEMO_SCHEME_PREFIX "SelectPalette", scheme_select_palette); install_scm_function (0, "Allows the user to type a label to activate a palette button.", DENEMO_SCHEME_PREFIX "ActivatePaletteButton", scheme_activate_palette_button); install_scm_function (4, "Takes up to three strings, title, prompt and initial value. Shows these to the user and returns the user's string. Fourth parameter makes the dialog not block waiting for input", DENEMO_SCHEME_PREFIX "GetUserInput", scheme_get_user_input); install_scm_function (4, "Takes up to three strings, title, prompt and initial value. Shows these to the user with a text editor for the user to return a string. Buttons are present to insert snippets which are bracketed with section characters. Fourth parameter makes the dialog not block waiting for input. Returns a pair comprising the user's text and formatted LilyPond syntax.", DENEMO_SCHEME_PREFIX "GetUserInputWithSnippets", scheme_get_user_input_with_snippets); install_scm_function (0, "Allows the user to select a font returns a string describing the font. Takes an optional title.", DENEMO_SCHEME_PREFIX "SelectFont", scheme_select_font); install_scm_function (0, "Allows the user to select a color returns a list of r g b values between 0-255.\nTakes an optional title.", DENEMO_SCHEME_PREFIX "SelectColor", scheme_select_color); install_scm_function (0, "Takes a message as a string. Pops up the message for the user to take note of as a warning", DENEMO_SCHEME_PREFIX "WarningDialog", scheme_warningdialog); install_scm_function (1, "Takes a message as a string amd a script. Pops up the message for the user to take note of as a informative message, runs the script when dismissed.", DENEMO_SCHEME_PREFIX "InfoWithHook", scheme_info_with_hook); install_scm_function (1, "Takes a message as a string and boolean noblock parameter. Pops up the message for the user to take note of as a informative message, blocks if noblock is #f", DENEMO_SCHEME_PREFIX "InfoDialog", scheme_infodialog); install_scm_function (0, "Takes a message as a string. Pops up the message inside of a pulsing progressbar", DENEMO_SCHEME_PREFIX "ProgressBar", scheme_progressbar); install_scm_function (0, "If running, Stops the ProgressBar.", DENEMO_SCHEME_PREFIX "ProgressBarStop", scheme_progressbar_stop); install_scm_function (0, "Typesets the score. Takes a script which will be called when Refresh is performed on the typeset window.", DENEMO_SCHEME_PREFIX "TypesetForScript", scheme_typeset_for_script); install_scm_function (0, "Prints from the PDF file generated by TypesetForScript.", DENEMO_SCHEME_PREFIX "PrintTypesetPDF", scheme_print_typeset_pdf); install_scm_function (2, "Displays the SVG file generated by LilyPond for playback. Takes a scale and a boolean (true if only the current part is to be typeset)", DENEMO_SCHEME_PREFIX "DisplayTypesetSvg", scheme_display_typeset_svg); install_scm_function (0, "Returns #t if continuous typsetting is in operation else #f", DENEMO_SCHEME_PREFIX "ContinuousTypesetting", scheme_continous_typsetting); install_scm_function (0, "Intercepts the next keypress and returns a string containing the character. Returns #f if keyboard interception was not possible.", DENEMO_SCHEME_PREFIX "GetChar", scheme_get_char); install_scm_function (0, "Intercepts the next keypress and returns a string containing the name of the keypress (the shortcut name). Returns #f if keyboard interception was not possible. With parameter #f puts the last keypress back to be executed as normal.", DENEMO_SCHEME_PREFIX "GetKeypress", scheme_get_keypress); install_scm_function (0, "Returns the last keypress that successfully invoked a command.", DENEMO_SCHEME_PREFIX "GetCommandKeypress", scheme_get_command_keypress); install_scm_function (0, "Intercepts the next keypress and returns the name of the command invoked, before invoking the command. Returns #f if the keypress is not a shortcut for any command", DENEMO_SCHEME_PREFIX "GetCommand", scheme_get_command); install_scm_function (0, "Intercepts the next keyboard shortcut and returns the name of the command invoked, before invoking the command. Returns #f if the keypress(es) are not a shortcut for any command", DENEMO_SCHEME_PREFIX "GetCommandFromUser", scheme_get_command_from_user); install_scm_function (0, "Locks the standalone directive at the cursor so that it runs its delete action when deleted. The tag should be the name of a command that responds to the delete parameter.", DENEMO_SCHEME_PREFIX "LockDirective", scheme_lock_directive); install_scm_function (2, "Sets an \"action script\" on the directive of the given tag", DENEMO_SCHEME_PREFIX "SetDirectiveTagActionScript", scheme_set_action_script_for_tag); install_scm_function (1, "Inserts a Denemo Directive of the given tag, even if one already exists at the cursor, a pixel width can be passed as well", DENEMO_SCHEME_PREFIX "PutStandaloneDirective", scheme_put_standalone_directive); install_scm_function (1, "Changes the tag of the Denemo Directive at the cursor", DENEMO_SCHEME_PREFIX "DirectiveChangeTag", scheme_directive_change_tag); install_scm_function (0, "Choose a Denemo Directive at the cursor. Returns the tag or, if the directive is on a chord, a pair whose first element is the tag and second a boolean, true if the directive is on the note at the cursor, false if it is on the chord.", DENEMO_SCHEME_PREFIX "ChooseTagAtCursor", scheme_choose_tag_at_cursor); install_scm_function (2, "Takes a tag and a boolean type. Returns a script for cloning the Denemo Directive with the passed tag at the cursor. If type is true the Directive is on a note, no chord.", DENEMO_SCHEME_PREFIX "GetScriptForDirective", scheme_get_script_for_directive); #define INSTALL_GET_TAG(what)\ install_scm_function (0, "Takes a optional tag. Returns that tag if a "#what" directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none", DENEMO_SCHEME_PREFIX"DirectiveGetForTag" "-" #what, scheme_##what##_directive_get_tag); INSTALL_GET_TAG (object); INSTALL_GET_TAG (standalone); INSTALL_GET_TAG (chord); INSTALL_GET_TAG (note); INSTALL_GET_TAG (staff); INSTALL_GET_TAG (voice); INSTALL_GET_TAG (score); INSTALL_GET_TAG (clef); INSTALL_GET_TAG (timesig); INSTALL_GET_TAG (tuplet); INSTALL_GET_TAG (stemdirective); INSTALL_GET_TAG (keysig); INSTALL_GET_TAG (scoreheader); INSTALL_GET_TAG (header); INSTALL_GET_TAG (paper); INSTALL_GET_TAG (layout); INSTALL_GET_TAG (movementcontrol); #undef INSTALL_GET_TAG #define INSTALL_GET_NTH_TAG(what)\ install_scm_function (1, "Takes a number n. Returns the tag of the nth "#what" directive if it exists else returns #f if none", DENEMO_SCHEME_PREFIX"DirectiveGetNthTag" "-" #what, scheme_##what##_directive_get_nth_tag); INSTALL_GET_NTH_TAG (chord); INSTALL_GET_NTH_TAG (note); INSTALL_GET_NTH_TAG (staff); INSTALL_GET_NTH_TAG (voice); INSTALL_GET_NTH_TAG (score); INSTALL_GET_NTH_TAG (clef); INSTALL_GET_NTH_TAG (timesig); INSTALL_GET_NTH_TAG (tuplet); INSTALL_GET_NTH_TAG (stemdirective); INSTALL_GET_NTH_TAG (keysig); INSTALL_GET_NTH_TAG (scoreheader); INSTALL_GET_NTH_TAG (header); INSTALL_GET_NTH_TAG (paper); INSTALL_GET_NTH_TAG (layout); INSTALL_GET_NTH_TAG (movementcontrol); #undef INSTALL_GET_NTH_TAG #define INSTALL_PRIORITIZE_TAG(what)\ install_scm_function (1, "Takes a tag. The "#what" directive with that tag if it exists becomes the first to be processed; else returns #f if none", DENEMO_SCHEME_PREFIX"DirectivePrioritizeTag" "-" #what, scheme_##what##_directive_prioritize_tag); INSTALL_PRIORITIZE_TAG (chord); INSTALL_PRIORITIZE_TAG (note); INSTALL_PRIORITIZE_TAG (staff); INSTALL_PRIORITIZE_TAG (voice); INSTALL_PRIORITIZE_TAG (score); INSTALL_PRIORITIZE_TAG (clef); INSTALL_PRIORITIZE_TAG (timesig); INSTALL_PRIORITIZE_TAG (tuplet); INSTALL_PRIORITIZE_TAG (stemdirective); INSTALL_PRIORITIZE_TAG (keysig); INSTALL_PRIORITIZE_TAG (scoreheader); INSTALL_PRIORITIZE_TAG (header); INSTALL_PRIORITIZE_TAG (paper); INSTALL_PRIORITIZE_TAG (layout); INSTALL_PRIORITIZE_TAG (movementcontrol); #undef INSTALL_PRIORITIZE_TAG install_scm_function (0, "Offers a list of Score-wide or Movement-wide directives for editing\n", DENEMO_SCHEME_PREFIX"EditSystemDirective", scheme_edit_system_directive); install_scm_function (2, "Takes a directive type and a tag, displays the text editor for that directive (if any).\n", DENEMO_SCHEME_PREFIX"DisplayDirectiveTextEditor", scheme_display_directive_text_editor); install_scm_function (1, "Takes a number n. Returns the tag of the nth note directive if it exists at the cursor height else returns #f if none", DENEMO_SCHEME_PREFIX"DirectiveGetNthTagStrictNote", scheme_directive_get_nth_tag_strict_note); install_scm_function (1, "Takes a tag and returns #t if a note directive exists with that tag at the cursor height, with no argument returns the first tag on the note at cursor height, else returns #f", DENEMO_SCHEME_PREFIX"DirectiveGetForTagStrictNote", scheme_directive_get_for_tag_strict_note); #define INSTALL_EDIT(what)\ install_scm_function (1, "Deletes a "#what" directive of the passed in tag. Returns #f if not deleted", DENEMO_SCHEME_PREFIX"DirectiveDelete" "-" #what, scheme_delete_##what##_directive); \ install_scm_function (1, "Activates a "#what" directive widget of the passed in tag. Returns #f if not a button", DENEMO_SCHEME_PREFIX"DirectiveActivate" "-" #what, scheme_activate_##what##_directive); \ install_scm_function (1, "Takes a tag. Lets the user edit (by running the editscript named by the tag) a "#what" directive of the passed in tag. Returns #f if none", DENEMO_SCHEME_PREFIX"DirectiveTextEdit" "-" #what, scheme_text_edit_##what##_directive); INSTALL_EDIT (note); INSTALL_EDIT (chord); INSTALL_EDIT (staff); INSTALL_EDIT (voice); INSTALL_EDIT (score); install_scm_function (0, "Start a low-level edit of the standalone directive at the cursor", DENEMO_SCHEME_PREFIX "DirectiveTextEdit-standalone", scheme_text_edit_standalone_directive); install_scm_function (1, NULL, DENEMO_SCHEME_PREFIX "DirectiveDelete-object", scheme_delete_object_directive); #define INSTALL_PUT(what, field)\ install_scm_function (2, "Writes the " #field" field (a string) of the " #what" directive with the passed int tag. Creates the directive of the given type and tag if it does not exist.",DENEMO_SCHEME_PREFIX"DirectivePut" "-" #what "-" #field, scheme_##what##_directive_put_##field); #define INSTALL_GET(what, field)\ install_scm_function (1, "Gets the value of the " #field" field (a string) of the " #what" directive with the passed tag.",DENEMO_SCHEME_PREFIX"DirectiveGet" "-" #what "-" #field, scheme_##what##_directive_get_##field); #define INSTALL_PUT_ALLOW(what)\ install_scm_function (2, "Takes a tag and a layout id; if there is a directive of the given tag then the directive will be honored when typesetting that layout other layouts will ignore the directive.",DENEMO_SCHEME_PREFIX"DirectivePut" "-" #what "-allow", scheme_##what##_directive_put_allow); #define INSTALL_PUT_IGNORE(what)\ install_scm_function (2, "Takes a tag and a layout id; if there is a directive of the given tag then the directive will be ignored when typesetting that layout, other layouts will honor the directive.",DENEMO_SCHEME_PREFIX"DirectivePut" "-" #what "-ignore", scheme_##what##_directive_put_ignore); INSTALL_GET (object, minpixels); INSTALL_PUT (object, minpixels); //block to repeat for new directive fields INSTALL_GET (standalone, minpixels); INSTALL_GET (chord, minpixels); INSTALL_GET (note, minpixels); INSTALL_GET (staff, minpixels); INSTALL_GET (voice, minpixels); INSTALL_GET (score, minpixels); INSTALL_GET (clef, minpixels); INSTALL_GET (timesig, minpixels); INSTALL_GET (tuplet, minpixels); INSTALL_GET (stemdirective, minpixels); INSTALL_GET (keysig, minpixels); INSTALL_GET (scoreheader, minpixels); INSTALL_GET (header, minpixels); INSTALL_GET (paper, minpixels); INSTALL_GET (layout, minpixels); INSTALL_GET (movementcontrol, minpixels); INSTALL_PUT (standalone, minpixels); INSTALL_PUT (chord, minpixels); INSTALL_PUT (note, minpixels); INSTALL_PUT (staff, minpixels); INSTALL_PUT (voice, minpixels); INSTALL_PUT (score, minpixels); INSTALL_PUT (clef, minpixels); INSTALL_PUT (timesig, minpixels); INSTALL_PUT (tuplet, minpixels); INSTALL_PUT (stemdirective, minpixels); INSTALL_PUT (keysig, minpixels); INSTALL_PUT (scoreheader, minpixels); INSTALL_PUT (header, minpixels); INSTALL_PUT (paper, minpixels); INSTALL_PUT (layout, minpixels); INSTALL_PUT (movementcontrol, minpixels); //end block to repeat for new directive fields INSTALL_GET (standalone, data); INSTALL_GET (chord, data); INSTALL_GET (note, data); INSTALL_GET (staff, data); INSTALL_GET (voice, data); INSTALL_GET (score, data); INSTALL_GET (clef, data); INSTALL_GET (timesig, data); INSTALL_GET (tuplet, data); INSTALL_GET (stemdirective, data); INSTALL_GET (keysig, data); INSTALL_GET (scoreheader, data); INSTALL_GET (header, data); INSTALL_GET (paper, data); INSTALL_GET (layout, data); INSTALL_GET (movementcontrol, data); INSTALL_PUT (standalone, data); INSTALL_PUT (chord, data); INSTALL_PUT (note, data); INSTALL_PUT (staff, data); INSTALL_PUT (voice, data); INSTALL_PUT (score, data); INSTALL_PUT (clef, data); INSTALL_PUT (timesig, data); INSTALL_PUT (tuplet, data); INSTALL_PUT (stemdirective, data); INSTALL_PUT (keysig, data); INSTALL_PUT (scoreheader, data); INSTALL_PUT (header, data); INSTALL_PUT (paper, data); INSTALL_PUT (layout, data); INSTALL_PUT (movementcontrol, data); INSTALL_GET (standalone, grob); INSTALL_GET (standalone, graphic_name); INSTALL_GET (chord, graphic_name); INSTALL_GET (note, graphic_name); INSTALL_GET (clef, graphic_name); INSTALL_GET (keysig, graphic_name); INSTALL_GET (timesig, graphic_name); INSTALL_GET (tuplet, graphic_name); INSTALL_GET (chord, grob); INSTALL_GET (note, grob); INSTALL_GET (staff, grob); INSTALL_GET (voice, grob); INSTALL_GET (score, grob); INSTALL_GET (clef, grob); INSTALL_GET (timesig, grob); INSTALL_GET (tuplet, grob); INSTALL_GET (stemdirective, grob); INSTALL_GET (keysig, grob); INSTALL_GET (standalone, grob); // INSTALL_GET(scoreheader, grob); // INSTALL_GET(header, grob); // INSTALL_GET(paper, grob); // INSTALL_GET(layout, grob); // INSTALL_GET(movementcontrol, grob); INSTALL_PUT (standalone, grob); INSTALL_PUT (chord, grob); INSTALL_PUT (note, grob); //INSTALL_PUT(staff, grob); //INSTALL_PUT(voice, grob); INSTALL_PUT (score, grob); INSTALL_PUT (clef, grob); INSTALL_PUT (timesig, grob); INSTALL_PUT (tuplet, grob); INSTALL_PUT (stemdirective, grob); INSTALL_PUT (keysig, grob); // INSTALL_PUT(scoreheader, grob); // INSTALL_PUT(header, grob); // INSTALL_PUT(paper, grob); // INSTALL_PUT(layout, grob); // INSTALL_PUT(movementcontrol, grob); //end of grob INSTALL_GET (standalone, midibytes); INSTALL_GET (chord, midibytes); INSTALL_GET (note, midibytes); INSTALL_GET (keysig, midibytes); INSTALL_GET (timesig, midibytes); INSTALL_GET (tuplet, midibytes); INSTALL_GET (clef, midibytes); INSTALL_GET (staff, midibytes); INSTALL_GET (voice, midibytes); INSTALL_GET (score, midibytes); INSTALL_GET (movementcontrol, midibytes); INSTALL_PUT (standalone, midibytes); INSTALL_PUT (chord, midibytes); INSTALL_PUT (note, midibytes); INSTALL_PUT (keysig, midibytes); INSTALL_PUT (timesig, midibytes); INSTALL_PUT (tuplet, midibytes); INSTALL_PUT (clef, midibytes); INSTALL_PUT (staff, midibytes); INSTALL_PUT (voice, midibytes); INSTALL_PUT (score, midibytes); INSTALL_PUT (movementcontrol, midibytes); INSTALL_GET (standalone, override); INSTALL_GET (chord, override); INSTALL_GET (note, override); INSTALL_GET (staff, override); INSTALL_GET (voice, override); INSTALL_GET (score, override); INSTALL_PUT (standalone, override); INSTALL_PUT (chord, override); INSTALL_PUT (note, override); INSTALL_PUT (staff, override); INSTALL_PUT (voice, override); INSTALL_PUT (score, override); //graphic INSTALL_PUT (note, graphic); //INSTALL_GET(note, graphic); INSTALL_PUT (chord, graphic); //INSTALL_GET(chord, graphic); INSTALL_PUT (standalone, graphic); //INSTALL_GET(standalone, graphic); INSTALL_PUT (staff, graphic); INSTALL_PUT (voice, graphic); INSTALL_PUT (score, graphic); //graphic INSTALL_PUT (chord, display); INSTALL_PUT (chord, prefix); INSTALL_PUT (chord, postfix); INSTALL_GET (chord, display); INSTALL_GET (chord, prefix); INSTALL_GET (chord, postfix); INSTALL_PUT (note, display); INSTALL_PUT (note, prefix); INSTALL_PUT (note, postfix); INSTALL_GET (note, display); INSTALL_GET (note, prefix); INSTALL_GET (note, postfix); INSTALL_PUT (standalone, display); INSTALL_PUT (standalone, prefix); INSTALL_PUT (standalone, postfix); INSTALL_GET (standalone, display); INSTALL_GET (standalone, prefix); INSTALL_GET (standalone, postfix); INSTALL_PUT (staff, display); INSTALL_PUT (staff, prefix); INSTALL_PUT (staff, postfix); INSTALL_GET (staff, display); INSTALL_GET (staff, prefix); INSTALL_GET (staff, postfix); INSTALL_PUT (voice, display); INSTALL_PUT (voice, prefix); INSTALL_PUT (voice, postfix); INSTALL_GET (voice, display); INSTALL_GET (voice, prefix); INSTALL_GET (voice, postfix); INSTALL_PUT (score, display); INSTALL_PUT (score, prefix); INSTALL_PUT (score, postfix); INSTALL_GET (score, display); INSTALL_GET (score, prefix); INSTALL_GET (score, postfix); INSTALL_GET (score, width); INSTALL_GET (score, height); //INSTALL_GET (score); INSTALL_GET (score, gx); INSTALL_GET (score, tx); INSTALL_PUT_ALLOW (score); INSTALL_PUT (score, gx); INSTALL_PUT (score, tx); // INSTALL_GET (score); INSTALL_GET (score, gy); INSTALL_GET (score, ty); INSTALL_PUT_IGNORE (score); INSTALL_PUT (score, gy); INSTALL_PUT (score, ty); INSTALL_PUT_ALLOW (note); //INSTALL_GET (note); INSTALL_PUT_ALLOW (chord); //INSTALL_GET (chord); INSTALL_PUT_IGNORE (note); //INSTALL_GET (note); INSTALL_PUT_IGNORE (chord); //INSTALL_GET (chord); INSTALL_PUT_ALLOW (staff); INSTALL_PUT_ALLOW (voice); INSTALL_PUT_IGNORE (staff); INSTALL_PUT_IGNORE (voice); INSTALL_PUT (note, tx); INSTALL_GET (note, tx); INSTALL_PUT (chord, tx); INSTALL_GET (chord, tx); INSTALL_PUT (note, ty); INSTALL_GET (note, ty); INSTALL_PUT (chord, ty); INSTALL_GET (chord, ty); INSTALL_PUT (note, gx); INSTALL_GET (note, gx); INSTALL_PUT (chord, gx); INSTALL_GET (chord, gx); INSTALL_PUT (note, gy); INSTALL_GET (note, gy); INSTALL_PUT (chord, gy); INSTALL_GET (chord, gy); INSTALL_PUT_ALLOW (standalone); //INSTALL_GET (standalone); INSTALL_PUT_IGNORE (standalone); //INSTALL_GET (standalone); INSTALL_PUT (standalone, tx); INSTALL_GET (standalone, tx); INSTALL_PUT (standalone, ty); INSTALL_GET (standalone, ty); INSTALL_PUT (standalone, gx); INSTALL_GET (standalone, gx); INSTALL_PUT (standalone, gy); INSTALL_GET (standalone, gy); INSTALL_GET (note, width); INSTALL_GET (chord, width); INSTALL_GET (standalone, width); INSTALL_GET (note, height); INSTALL_GET (chord, height); INSTALL_GET (standalone, height); //block to copy for new type of directive INSTALL_PUT (clef, display); INSTALL_PUT (clef, prefix); INSTALL_PUT (clef, postfix); INSTALL_PUT (clef, graphic); INSTALL_GET (clef, display); INSTALL_GET (clef, prefix); INSTALL_GET (clef, postfix); INSTALL_PUT_ALLOW (clef); INSTALL_PUT_IGNORE (clef); INSTALL_PUT (clef, tx); INSTALL_PUT (clef, ty); INSTALL_PUT (clef, gx); INSTALL_PUT (clef, gy); INSTALL_PUT (clef, override); //INSTALL_GET (clef); //INSTALL_GET (clef); INSTALL_GET (clef, tx); INSTALL_GET (clef, ty); INSTALL_GET (clef, gx); INSTALL_GET (clef, gy); INSTALL_GET (clef, override); INSTALL_GET (clef, width); INSTALL_GET (clef, height); INSTALL_EDIT (clef); // end of block to copy for new type of directive INSTALL_PUT (timesig, display); INSTALL_PUT (timesig, prefix); INSTALL_PUT (timesig, postfix); INSTALL_PUT (timesig, graphic); INSTALL_GET (timesig, display); INSTALL_GET (timesig, prefix); INSTALL_GET (timesig, postfix); INSTALL_PUT_ALLOW (timesig); INSTALL_PUT_IGNORE (timesig); INSTALL_PUT (timesig, tx); INSTALL_PUT (timesig, ty); INSTALL_PUT (timesig, gx); INSTALL_PUT (timesig, gy); INSTALL_PUT (timesig, override); //INSTALL_GET (timesig); //INSTALL_GET (timesig); INSTALL_GET (timesig, tx); INSTALL_GET (timesig, ty); INSTALL_GET (timesig, gx); INSTALL_GET (timesig, gy); INSTALL_GET (timesig, override); INSTALL_GET (timesig, width); INSTALL_GET (timesig, height); INSTALL_EDIT (timesig); INSTALL_PUT (tuplet, display); INSTALL_PUT (tuplet, prefix); INSTALL_PUT (tuplet, postfix); INSTALL_PUT (tuplet, graphic); INSTALL_GET (tuplet, display); INSTALL_GET (tuplet, prefix); INSTALL_GET (tuplet, postfix); INSTALL_PUT_ALLOW (tuplet); INSTALL_PUT_IGNORE (tuplet); INSTALL_PUT (tuplet, tx); INSTALL_PUT (tuplet, ty); INSTALL_PUT (tuplet, gx); INSTALL_PUT (tuplet, gy); INSTALL_PUT (tuplet, override); //INSTALL_GET (tuplet); //INSTALL_GET (tuplet); INSTALL_GET (tuplet, tx); INSTALL_GET (tuplet, ty); INSTALL_GET (tuplet, gx); INSTALL_GET (tuplet, gy); INSTALL_GET (tuplet, override); INSTALL_GET (tuplet, width); INSTALL_GET (tuplet, height); INSTALL_EDIT (tuplet); INSTALL_PUT (stemdirective, display); INSTALL_PUT (stemdirective, prefix); INSTALL_PUT (stemdirective, postfix); INSTALL_PUT (stemdirective, graphic); INSTALL_GET (stemdirective, display); INSTALL_GET (stemdirective, prefix); INSTALL_GET (stemdirective, postfix); INSTALL_PUT_ALLOW (stemdirective); INSTALL_PUT_IGNORE (stemdirective); INSTALL_PUT (stemdirective, tx); INSTALL_PUT (stemdirective, ty); INSTALL_PUT (stemdirective, gx); INSTALL_PUT (stemdirective, gy); INSTALL_PUT (stemdirective, override); //INSTALL_GET (stemdirective); //INSTALL_GET (stemdirective); INSTALL_GET (stemdirective, tx); INSTALL_GET (stemdirective, ty); INSTALL_GET (stemdirective, gx); INSTALL_GET (stemdirective, gy); INSTALL_GET (stemdirective, override); INSTALL_GET (stemdirective, width); INSTALL_GET (stemdirective, height); INSTALL_EDIT (stemdirective); INSTALL_PUT (keysig, display); INSTALL_PUT (keysig, prefix); INSTALL_PUT (keysig, postfix); INSTALL_PUT (keysig, graphic); INSTALL_GET (keysig, display); INSTALL_GET (keysig, prefix); INSTALL_GET (keysig, postfix); INSTALL_PUT_ALLOW (keysig); INSTALL_PUT_IGNORE (keysig); INSTALL_PUT (keysig, tx); INSTALL_PUT (keysig, ty); INSTALL_PUT (keysig, gx); INSTALL_PUT (keysig, gy); INSTALL_PUT (keysig, override); //INSTALL_GET (keysig); //INSTALL_GET (keysig); INSTALL_GET (keysig, tx); INSTALL_GET (keysig, ty); INSTALL_GET (keysig, gx); INSTALL_GET (keysig, gy); INSTALL_GET (keysig, override); INSTALL_GET (keysig, width); INSTALL_GET (keysig, height); INSTALL_EDIT (keysig); INSTALL_PUT (scoreheader, display); INSTALL_PUT (scoreheader, prefix); INSTALL_PUT (scoreheader, postfix); INSTALL_PUT (scoreheader, graphic); INSTALL_GET (scoreheader, display); INSTALL_GET (scoreheader, prefix); INSTALL_GET (scoreheader, postfix); INSTALL_PUT_ALLOW (scoreheader); INSTALL_PUT_IGNORE (scoreheader); INSTALL_PUT (scoreheader, tx); INSTALL_PUT (scoreheader, ty); INSTALL_PUT (scoreheader, gx); INSTALL_PUT (scoreheader, gy); INSTALL_PUT (scoreheader, override); //INSTALL_GET (scoreheader); //INSTALL_GET (scoreheader); INSTALL_GET (scoreheader, tx); INSTALL_GET (scoreheader, ty); INSTALL_GET (scoreheader, gx); INSTALL_GET (scoreheader, gy); INSTALL_GET (scoreheader, override); INSTALL_GET (scoreheader, width); INSTALL_GET (scoreheader, height); INSTALL_EDIT (scoreheader); INSTALL_PUT (header, display); INSTALL_PUT (header, prefix); INSTALL_PUT (header, postfix); INSTALL_PUT (header, graphic); INSTALL_GET (header, display); INSTALL_GET (header, prefix); INSTALL_GET (header, postfix); INSTALL_PUT_ALLOW (header); INSTALL_PUT_IGNORE (header); INSTALL_PUT (header, tx); INSTALL_PUT (header, ty); INSTALL_PUT (header, gx); INSTALL_PUT (header, gy); INSTALL_PUT (header, override); //INSTALL_GET (header); //INSTALL_GET (header); INSTALL_GET (header, tx); INSTALL_GET (header, ty); INSTALL_GET (header, gx); INSTALL_GET (header, gy); INSTALL_GET (header, override); INSTALL_GET (header, width); INSTALL_GET (header, height); INSTALL_EDIT (header); INSTALL_PUT (paper, display); INSTALL_PUT (paper, prefix); INSTALL_PUT (paper, postfix); INSTALL_PUT (paper, graphic); INSTALL_GET (paper, display); INSTALL_GET (paper, prefix); INSTALL_GET (paper, postfix); INSTALL_PUT_ALLOW (paper); INSTALL_PUT_IGNORE (paper); INSTALL_PUT (paper, tx); INSTALL_PUT (paper, ty); INSTALL_PUT (paper, gx); INSTALL_PUT (paper, gy); INSTALL_PUT (paper, override); //INSTALL_GET (paper); //INSTALL_GET (paper); INSTALL_GET (paper, tx); INSTALL_GET (paper, ty); INSTALL_GET (paper, gx); INSTALL_GET (paper, gy); INSTALL_GET (paper, override); INSTALL_GET (paper, width); INSTALL_GET (paper, height); INSTALL_EDIT (paper); INSTALL_PUT (layout, display); INSTALL_PUT (layout, prefix); INSTALL_PUT (layout, postfix); INSTALL_PUT (layout, graphic); INSTALL_GET (layout, display); INSTALL_GET (layout, prefix); INSTALL_GET (layout, postfix); INSTALL_PUT_ALLOW (layout); INSTALL_PUT_IGNORE (layout); INSTALL_PUT (layout, tx); INSTALL_PUT (layout, ty); INSTALL_PUT (layout, gx); INSTALL_PUT (layout, gy); INSTALL_PUT (layout, override); //INSTALL_GET (layout); //INSTALL_GET (layout); INSTALL_GET (layout, tx); INSTALL_GET (layout, ty); INSTALL_GET (layout, gx); INSTALL_GET (layout, gy); INSTALL_GET (layout, override); INSTALL_GET (layout, width); INSTALL_GET (layout, height); INSTALL_EDIT (layout); INSTALL_PUT (movementcontrol, display); INSTALL_PUT (movementcontrol, prefix); INSTALL_PUT (movementcontrol, postfix); INSTALL_PUT (movementcontrol, graphic); INSTALL_GET (movementcontrol, display); INSTALL_GET (movementcontrol, prefix); INSTALL_GET (movementcontrol, postfix); INSTALL_PUT_ALLOW (movementcontrol); INSTALL_PUT_IGNORE (movementcontrol); INSTALL_PUT (movementcontrol, tx); INSTALL_PUT (movementcontrol, ty); INSTALL_PUT (movementcontrol, gx); INSTALL_PUT (movementcontrol, gy); INSTALL_PUT (movementcontrol, override); //INSTALL_GET (movementcontrol); //INSTALL_GET (movementcontrol); INSTALL_GET (movementcontrol, tx); INSTALL_GET (movementcontrol, ty); INSTALL_GET (movementcontrol, gx); INSTALL_GET (movementcontrol, gy); INSTALL_GET (movementcontrol, override); INSTALL_GET (movementcontrol, width); INSTALL_GET (movementcontrol, height); INSTALL_EDIT (movementcontrol); #undef INSTALL_EDIT #undef EDIT_DELETE_FN_DEF #undef INSTALL_PUT #undef INSTALL_GET #undef GETFUNC_DEF #undef PUTFUNC_DEF #undef INT_PUTFUNC_DEF #undef INT_GETFUNC_DEF #undef PUTGRAPHICFUNC_DEF /* test with (display (d-DirectivePut-note-display "LHfinger" "test")) after attaching a LH finger directive */ /* test with (display (d-DirectivePut-note-minpixels "LHfinger" 80)) after attaching a LH finger directive */ /* test with (display (d-DirectiveGet-note-minpixels "LHfinger")) after attaching a LH finger directive */ /* test with (display (d-DirectiveGet-note-display "LHfinger")) after attaching a LH finger directive */ install_scm_function (1, "The passed string is placed on the system clipboard", DENEMO_SCHEME_PREFIX "PutTextClipboard", scheme_put_text_clipboard); install_scm_function (0, "Asks the user for a user name which is returned", DENEMO_SCHEME_PREFIX "GetUserName", scheme_get_username); install_scm_function (0, "Asks the user for a password which is returned", DENEMO_SCHEME_PREFIX "GetPassword", scheme_get_password); install_scm_function (0, "Returns an integer value, a set of bitfields representing the keyboard state, e.g. GDK_SHIFT_MASK etc", DENEMO_SCHEME_PREFIX "GetKeyboardState", scheme_get_keyboard_state); install_scm_function (0, "Routes the MIDI in to MIDI out if it is not intercepted by d-GetMidi", DENEMO_SCHEME_PREFIX "SetMidiThru", scheme_set_midi_thru); install_scm_function (0, "Returns the ticks of the next event on the recorded MIDI track -ve if it is a NOTEOFF or #f if none. Advances to the next note.", DENEMO_SCHEME_PREFIX "GetRecordedMidiOnTick", scheme_get_recorded_midi_on_tick); install_scm_function (0, "Returns the LilyPond representation of the passed MIDI key number, using the current enharmonic set.", DENEMO_SCHEME_PREFIX "GetNoteForMidiKey", scheme_get_note_for_midi_key); install_scm_function (0, "Returns the ticks of the next event on the recorded MIDI track -ve if it is a NOTEOFF or #f if none", DENEMO_SCHEME_PREFIX "GetRecordedMidiNote", scheme_get_recorded_midi_note); install_scm_function (0, "Rewinds the recorded MIDI track returns #f if no MIDI track recorded", DENEMO_SCHEME_PREFIX "RewindRecordedMidi", scheme_rewind_recorded_midi); install_scm_function (0, "Intercepts a MIDI event and returns it as a 4 byte number", DENEMO_SCHEME_PREFIX "GetMidi", scheme_get_midi); install_scm_function (0, "Takes one bool parameter - MIDI events will be captured/not captured depending on the value passed in, returns previous value.", DENEMO_SCHEME_PREFIX "SetMidiCapture", scheme_set_midi_capture); install_scm_function (0, "Displays a vitural MIDI keyboard. Can take an integer number of octaves to use.", DENEMO_SCHEME_PREFIX "VirtualKeyboard", scheme_virtual_keyboard); install_scm_function (0, "Switches to playalong playback. When playing or recording playback will not advance beyond the cursor position unless then mouse is moved or the next note is played in via MIDI in.", DENEMO_SCHEME_PREFIX "TogglePlayAlong", scheme_toggle_playalong); install_scm_function (0, "Switches to mouse conducting playback. Playback will not advance beyond the cursor position unless then mouse is moved in the drawing area.", DENEMO_SCHEME_PREFIX "ToggleConduct", scheme_toggle_conduct); install_scm_function (1, "Starts playback and synchronously records from MIDI in. any script passed in is run at the end of the recording. The recording will play back with future play until deleted. The recording is not saved with the score - convert to notation first,", DENEMO_SCHEME_PREFIX "MidiRecord", scheme_midi_record); install_scm_function (0, "Computes durationss for recorded/imported MIDI notes based on tempo and timing of note off from previous note off or start.", DENEMO_SCHEME_PREFIX "ComputeMidiNoteDurations", scheme_compute_midi_note_durations); install_scm_function (0, "Gets the marked recorded midi note as LilyPond", DENEMO_SCHEME_PREFIX "GetMarkedMidiNote", scheme_get_marked_midi_note); install_scm_function (0, "Gets the time in seconds of marked recorded midi note or #f if none", DENEMO_SCHEME_PREFIX "GetMarkedMidiNoteSeconds", scheme_get_marked_midi_note_seconds); install_scm_function (1, "Advances the marked recorded midi note can take an integer for number of steps to advance, or #f to clear the mark. Returns #f if no more marks.", DENEMO_SCHEME_PREFIX "AdvanceMarkedMidi", scheme_advance_marked_midi); install_scm_function (0, "Inserts the marked recorded or imported MIDI note using the duration guessed from the note length. Returns #f if nothing marked.", DENEMO_SCHEME_PREFIX "InsertMarkedMidiNote", scheme_insert_marked_midi_note); install_scm_function (0, "Generates the MIDI timings for the music of the current movement. Returns TRUE if the MIDI was re-computed else FALSE (call was unnecessary).", DENEMO_SCHEME_PREFIX "CreateTimebase", scheme_create_timebase); install_scm_function (1, "Takes and int as MIDI data and simulates a midi event, avoiding capturing of midi by scripts. Value 0 is special and is received by scripts.", DENEMO_SCHEME_PREFIX "PutMidi", scheme_put_midi); install_scm_function (1, "Takes and int as MIDI data and sends it directly to the MIDI out backend", DENEMO_SCHEME_PREFIX "OutputMidi", scheme_output_midi); install_scm_function (1, "Takes a string of space-separated bytes. The $ char stands for the current channel. Sends the passed bytes to the MIDI out", DENEMO_SCHEME_PREFIX "OutputMidiBytes", scheme_output_midi_bytes); install_scm_function (1, "Deprecated - takes an integer which is decomposed into a MIDI note played for 100ms", DENEMO_SCHEME_PREFIX "PlayMidiKey", scheme_play_midikey); install_scm_function (1, "Takes a midi note key and plays it with next rhythm effect", DENEMO_SCHEME_PREFIX "PendingMidi", scheme_pending_midi); install_scm_function (4, "Takes midi key number, volume 0-255, duration in ms and channel 0-15 and plays the note on midi out.", DENEMO_SCHEME_PREFIX "PlayMidiNote", scheme_play_midi_note); install_scm_function (1, "Takes duration and executable scheme script. Executes the passed scheme code after the passed duration milliseconds", DENEMO_SCHEME_PREFIX "OneShotTimer", scheme_one_shot_timer); install_scm_function (1, "Takes a duration and scheme script, starts a timer that tries to execute the script after every duration ms. It returns a timer id which must be passed back to destroy the timer", DENEMO_SCHEME_PREFIX "Timer", scheme_timer); install_scm_function (0, "Takes a timer id and destroys the timer", DENEMO_SCHEME_PREFIX "KillTimer", scheme_kill_timer); install_scm_function (0, "Returns #f if the current staff has no figures (or will not print out figured bass. See d-ShowFiguredBass)", DENEMO_SCHEME_PREFIX "HasFigures", scheme_has_figures); install_scm_function (0, "Returns bass figure string for current note or rest)", DENEMO_SCHEME_PREFIX "GetBassFigure", scheme_get_bass_figure); install_scm_function (2, "Returns a string for the bass figure for the two MIDI keys passed in", DENEMO_SCHEME_PREFIX "BassFigure", scheme_bass_figure); install_scm_function (0, "returns #t if the passed list of MIDI keys fails the pitch spellcheck", DENEMO_SCHEME_PREFIX "SpellCheckMidiChord", scheme_spell_check_midi_chord); install_scm_function (0, "Gets the MIDI key number for the note-position where the cursor is", DENEMO_SCHEME_PREFIX "GetCursorNoteAsMidi", scheme_get_cursor_note_as_midi); install_scm_function (0, "Returns the MIDI key number for the note at the cursor, or 0 if none", DENEMO_SCHEME_PREFIX "GetNoteAsMidi", scheme_get_note_as_midi); install_scm_function (0, "Re-draws the Denemo display, which can have side effects on the data, updates status bar ... ", DENEMO_SCHEME_PREFIX "RefreshDisplay", scheme_refresh_display); install_scm_function (0, "Computes cached values (normally done while drawing)", DENEMO_SCHEME_PREFIX "RefreshCache", scheme_refresh_cache); install_scm_function (0, "Sets the status of the current musical score to saved, or unsaved if passed #f", DENEMO_SCHEME_PREFIX "SetSaved", scheme_set_saved); install_scm_function (0, "Gets the saved status of the current musical score", DENEMO_SCHEME_PREFIX "GetSaved", scheme_get_saved); install_scm_function (0, "Sets/Gets the changecount of the current musical score", DENEMO_SCHEME_PREFIX "Changecount", scheme_changecount); install_scm_function (0, "Returns #f if mark is not set", DENEMO_SCHEME_PREFIX "MarkStatus", scheme_mark_status); install_scm_function (0, "Takes a command name and returns the tooltip or #f if none", DENEMO_SCHEME_PREFIX "GetHelp", scheme_get_help); install_scm_function (0, "Takes a file name, loads keybindings from actions/menus returns #f if it fails", DENEMO_SCHEME_PREFIX "LoadKeybindings", scheme_load_keybindings); install_scm_function (0, "Takes a file name, saves keybindings from actions/menus returns #f if it fails", DENEMO_SCHEME_PREFIX "SaveKeybindings", scheme_save_keybindings); install_scm_function (0, "Clears all keybindings returns #t", DENEMO_SCHEME_PREFIX "ClearKeybindings", scheme_clear_keybindings); install_scm_function (0, "Takes a file name for xml format commandset, loads commands, returns #f if it fails", DENEMO_SCHEME_PREFIX "LoadCommandset", scheme_load_commandset); install_scm_function (0, "Takes a double or string and scales the display; return #f for invalid value else the value set. With no parameter returns the current value. ", DENEMO_SCHEME_PREFIX "Zoom", scheme_zoom); install_scm_function (0, "Takes a double or string and scales the tempo; returns the tempo set. With no parameter returns the current master tempo ", DENEMO_SCHEME_PREFIX "MasterTempo", scheme_master_tempo); install_scm_function (0, "Takes an integer or string number of beats (quarter notes) per minute as the tempo for the current movement; returns the tempo set ", DENEMO_SCHEME_PREFIX "MovementTempo", scheme_movement_tempo); install_scm_function (0, "Takes a double or string and scales the volume; returns the volume set ", DENEMO_SCHEME_PREFIX "MasterVolume", scheme_master_volume); install_scm_function (0, "Takes a double 0-1 and sets the staff master volume for the current staff, returns the value.\nWith no parameter returns the current value or minus the current value if staff is muted.\nPass #f to mute the current staff and #t to unmute, leaving master volume unchanged.", DENEMO_SCHEME_PREFIX "StaffMasterVolume", scheme_staff_master_volume); install_scm_function (0, "Takes a integer sets the enharmonic range to use 0 = E-flat to G-sharp ", DENEMO_SCHEME_PREFIX "SetEnharmonicPosition", scheme_set_enharmonic_position); install_scm_function (0, "Return a string of tuning bytes (offsets from 64) for MIDI tuning message", DENEMO_SCHEME_PREFIX "GetMidiTuning", scheme_get_midi_tuning); install_scm_function (0, "Return name of flattest degree of current temperament", DENEMO_SCHEME_PREFIX "GetFlattest", scheme_get_flattest); install_scm_function (0, "Return name of sharpest degree of current temperament", DENEMO_SCHEME_PREFIX "GetSharpest", scheme_get_sharpest); install_scm_function (0, "Return name of current temperament", DENEMO_SCHEME_PREFIX "GetTemperament", scheme_get_temperament); install_scm_function (0, "Rewind the MIDI generated for the current movement. Given a time in seconds it tries to rewind to there.", DENEMO_SCHEME_PREFIX "RewindMidi", scheme_rewind_midi); install_scm_function (0, "Takes an interval, returns a pair, a list of the next note-on events that occur within that interval and the time of these events.", DENEMO_SCHEME_PREFIX "NextMidiNotes", scheme_next_midi_notes); install_scm_function (0, "Restart midi play, cancelling any pause", DENEMO_SCHEME_PREFIX "RestartPlay", scheme_restart_play); install_scm_function (0, "Sets the passed staff number as the only staff that will play. Pass 0 or no argument for all staffs", DENEMO_SCHEME_PREFIX "StaffToPlay", scheme_staff_to_play); install_scm_function (0, "Return a number, the midi time in seconds for the start of the object at the cursor; return #f if none ", DENEMO_SCHEME_PREFIX "GetMidiOnTime", scheme_get_midi_on_time); install_scm_function (0, "Return a number, the midi time in seconds for the end of the object at the cursor; return #f if none ", DENEMO_SCHEME_PREFIX "GetMidiOffTime", scheme_get_midi_off_time); install_scm_function (0, "Set the MIDI in controller to listening mode. All signals are directed straight to the output. ", DENEMO_SCHEME_PREFIX "MidiInListening", scheme_midi_in_listening); install_scm_function (0, "Set the MIDI in controller to checking mode. The cursor will advance and the note sounded only if it is the (lowest) note at the cursor. ", DENEMO_SCHEME_PREFIX "MidiInChecking", scheme_midi_in_checking); install_scm_function (0, "Set the MIDI in controller to append/edit mode. The MIDI key sounded will be inserted in score, or appended if in appending position. MIDI signals can be filtered by scheme scripts in this mode. ", DENEMO_SCHEME_PREFIX "MidiInAppendEdit", scheme_midi_in_append_edit); install_scm_function (2, "Set start and/or end time for playback to the passed numbers/strings in seconds. Use #t if a value is not to be changed. Returns #f for bad parameters ", DENEMO_SCHEME_PREFIX "SetPlaybackInterval", scheme_set_playback_interval); install_scm_function (0, "Adjust start time for playback by passed number of seconds. Returns #f for bad parameter ", DENEMO_SCHEME_PREFIX "AdjustPlaybackStart", scheme_adjust_playback_start); install_scm_function (0, "Adjust end time for playback by passed number of seconds. Returns #f for bad parameter ", DENEMO_SCHEME_PREFIX "AdjustPlaybackEnd", scheme_adjust_playback_end); install_scm_function (0, "Pushes the Denemo clipboard (cut/copy buffer) onto a stack; Use d-PopClipboard to retrieve it.", DENEMO_SCHEME_PREFIX "PushClipboard", scheme_push_clipboard); install_scm_function (0, "Pops the Denemo clipboard (cut/copy buffer) from a stack created by d-PushClipboard. Returns #f if nothing on stack, else #t.", DENEMO_SCHEME_PREFIX "PopClipboard", scheme_pop_clipboard); install_scm_function (0, "Deletes all objects in the selection Returns #f if no selection else #t.", DENEMO_SCHEME_PREFIX "DeleteSelection", scheme_delete_selection); install_scm_function (0, "Sets the selection to be used for a thumbnail. Returns #f if no selection or selection not in first movement else #t.", DENEMO_SCHEME_PREFIX "SetThumbnailSelection", scheme_set_thumbnail_selection); install_scm_function (1, "Creates a thumbnail for the current score. With no argument it waits for the thumbnail to complete, freezing any display. With #t it generates the thumbnail asynchrously. It does not report on completion.", DENEMO_SCHEME_PREFIX "CreateThumbnail", scheme_create_thumbnail); install_scm_function (0, "Exits Denemo without saving history, prefs etc.", DENEMO_SCHEME_PREFIX "Exit", scheme_exit); install_scm_function (0, "Snapshots the current movement putting it in the undo queue returns #f if no snapshot was taken because of a guard", DENEMO_SCHEME_PREFIX "TakeSnapshot", scheme_take_snapshot); install_scm_function (0, "Creates the default layout.", DENEMO_SCHEME_PREFIX "SelectDefaultLayout", scheme_select_default_layout); install_scm_function (1, "Creates a custom layout from the currently selected (standard). Uses the passed name for the new layout. Returns #f if nothing happened.", DENEMO_SCHEME_PREFIX "CreateLayout", scheme_create_layout); install_scm_function (1, "Deletes a custom layout of the passed name. Returns #f if no layout with passed name.", DENEMO_SCHEME_PREFIX "DeleteLayout", scheme_delete_layout); install_scm_function (0, "Returns the id of the currently selected score layout (see View->Score Layout). Returns #f if no layout is selected.", DENEMO_SCHEME_PREFIX "GetLayoutId", scheme_get_layout_id); install_scm_function (0, "Returns the id of a score layout for typesetting the part for the current staff. Returns #f if not a primary voice.", DENEMO_SCHEME_PREFIX "GetCurrentStaffLayoutId", scheme_get_current_staff_layout_id); install_scm_function (0, "Selects the score layout with the passed id. Returns #f if there is no such layout.", DENEMO_SCHEME_PREFIX "SelectLayoutId", scheme_select_layout_id); install_scm_function (0, "Generates LilyPond layout for the current part (ie staffs with the name of the staff with the cursor), all movements and staffs with that staff name are generated.", DENEMO_SCHEME_PREFIX "LilyPondForPart", scheme_lilypond_for_part); install_scm_function (0, "Typesets the current part (ie the staff with the cursor), all movements and staffs with that staff name are typeset.", DENEMO_SCHEME_PREFIX "TypesetPart", scheme_typeset_part); install_scm_function (0, "Converts the current score layout to editable LilyPond text. After this the score layout is only affected by editing the LilyPond syntax.", DENEMO_SCHEME_PREFIX "ReduceLayoutToLilyPond", scheme_reduce_layout_to_lilypond); install_scm_function (0, "Returns the name of the currently selected score layout (see View->Score Layout). Returns #f if no layout is selected.", DENEMO_SCHEME_PREFIX "GetLayoutName", scheme_get_layout_name); install_scm_function (0, "Selects the next score layout. If the current layout is the last, returns #f otherwise #t.", DENEMO_SCHEME_PREFIX "SelectNextLayout", scheme_select_next_layout); install_scm_function (0, "Selects the first score layout.", DENEMO_SCHEME_PREFIX "SelectFirstLayout", scheme_select_first_layout); install_scm_function (0, "Selects the next custom score layout. If the current layout is the last, returns #f otherwise #t.", DENEMO_SCHEME_PREFIX "SelectNextCustomLayout", scheme_select_next_custom_layout); install_scm_function (0, "Selects the first custom score layout.", DENEMO_SCHEME_PREFIX "SelectFirstCustomLayout", scheme_select_first_custom_layout); install_scm_function (0, "Returns the full path to the currently opened Denemo score or #f if it does not have a disk file yet.", DENEMO_SCHEME_PREFIX "GetFilename", scheme_get_filename); install_scm_function (1, "Returns the directory component of the passed filename.", DENEMO_SCHEME_PREFIX "PathFromFilename", scheme_path_from_filename); install_scm_function (1, "Returns the #t if file passed in exists.", DENEMO_SCHEME_PREFIX "FileExists", scheme_file_exists); install_scm_function (1, "Returns the filename component of the passed path.", DENEMO_SCHEME_PREFIX "FilenameFromPath", scheme_filename_from_path); install_scm_function (3, "Gives dialog to choose a file. Takes a title, start directory and list of extensions. Returns a string or #f if user cancesl", DENEMO_SCHEME_PREFIX "ChooseFile", scheme_choose_file); install_scm_function (0, "Follows a link to a source file of form string \"filename:x:y:page\". It opens the file and places a marker there. ", DENEMO_SCHEME_PREFIX "OpenSource", scheme_open_source); install_scm_function (3, "Takes an optional filename and optional new name. Opens an encapsulated postscript file for editing. Returns the filename (without extension) if successful.\nStarts the graphics editor on the passed in filename or one from a dialog.\nThe returned .eps file may not exist when this procedure returns, an editor is open on it. With no filename parameter allows the user to choose,\ncopying to the project directory or the users graphics templates (if a new name is given)", DENEMO_SCHEME_PREFIX "EditGraphics", scheme_edit_graphics); install_scm_function (0, "Opens a PDF file previously generated by Denemo which has proof reading annotations. The notes in the file can be clicked on to locate the music in the Denemo display", DENEMO_SCHEME_PREFIX "OpenProofReadFile", scheme_open_proofread_file); #ifdef DISABLE_AUBIO #else install_scm_function (0, "Converts the recorded audio to user chosen audio file.", DENEMO_SCHEME_PREFIX "ExportRecordedAudio", scheme_export_recorded_audio); install_scm_function (0, "Opens a source file for transcribing from. Links to this source file can be placed by shift-clicking on its contents", DENEMO_SCHEME_PREFIX "OpenSourceFile", scheme_open_source_file); install_scm_function (0, "Opens a source audio file for transcribing from. Returns the number of seconds of audio successfully opened or #f if failed. ", DENEMO_SCHEME_PREFIX "OpenSourceAudioFile", scheme_open_source_audio_file); install_scm_function (0, "Closes a source audio attached to the current movement.", DENEMO_SCHEME_PREFIX "CloseSourceAudio", scheme_close_source_audio); install_scm_function (0, "Plays audio allowing timings to be entered via keypresses if passed #t as parameter. ", DENEMO_SCHEME_PREFIX "StartAudioPlay", scheme_start_audio_play); install_scm_function (0, "Stops audio playback", DENEMO_SCHEME_PREFIX "StopAudioPlay", scheme_stop_audio_play); install_scm_function (0, "Takes a number of seconds to be used as lead-in for audio. If negative clips that much from the start of the audio. ", DENEMO_SCHEME_PREFIX "SetAudioLeadIn", scheme_set_audio_lead_in); install_scm_function (0, "returns #f if audio is not playing else #t", DENEMO_SCHEME_PREFIX "AudioIsPlaying", scheme_audio_is_playing); install_scm_function (0, "Returns the next in the list of timings registered by the user during audio play.", DENEMO_SCHEME_PREFIX "NextAudioTiming", scheme_next_audio_timing); #endif install_scm_function (0, "Stop collecting undo information. Call DecreaseGuard when finished. Returns #f if already guarded, #t if this call is stopping the undo collection", DENEMO_SCHEME_PREFIX "IncreaseGuard", scheme_increase_guard); install_scm_function (0, "Drop one guard against collecting undo information. Returns #t if there are no more guards \n(undo information will be collected) \nor #f if there are still guards in place.", DENEMO_SCHEME_PREFIX "DecreaseGuard", scheme_decrease_guard); install_scm_function (0, "Undoes the actions performed by the script so far, starts another undo stage for the subsequent actions of the script. Note this command has the same name as the built-in Undo command, to override it when called from a script. Returns #t", DENEMO_SCHEME_PREFIX "Undo" /*sic */ , scheme_undo); install_scm_function (0, "Creates a new tab. Note this command has the same name as the built-in NewWindow command, to override it when called from a script. Returns #t", DENEMO_SCHEME_PREFIX "NewWindow" /*sic */ , scheme_new_window); install_scm_function (0, "Undo normally undoes all the actions performed by a script. This puts a stage at the point in a script where it is called, so that a user-invoked undo will stop at this point, continuing when a further undo is invoked. Returns #t", DENEMO_SCHEME_PREFIX "StageForUndo", scheme_stage_for_undo); install_scm_function (0, "return a string giving the latest step available for Undo", DENEMO_SCHEME_PREFIX "GetLastChange", scheme_get_last_change); install_scm_function (0, "Takes a command name and returns the menu path to that command or #f if none", DENEMO_SCHEME_PREFIX "GetMenuPath", scheme_get_menu_path); install_scm_function (0, "Takes a string and returns a string representing an MD5 checksum for the passed string.", DENEMO_SCHEME_PREFIX "GetChecksum", scheme_get_checksum); install_scm_function (0, "Sets the newbie status to the passed value", DENEMO_SCHEME_PREFIX "SetNewbie", scheme_set_newbie); install_scm_function (0, "Gets the current verse of the current staff or #f if none, with an integer parameter, gets the nth verse", DENEMO_SCHEME_PREFIX "GetVerse", scheme_get_verse); install_scm_function (0, "With a boolean parameter sets whether lyrics should be typeset for the current staff, else returns the current status.", DENEMO_SCHEME_PREFIX "TypesetLyricsForStaff", scheme_typeset_lyrics_for_staff); install_scm_function (0, "Gets the number of current verse of the current staff or #f if none. With an integer parameter sets the verse to that number.", DENEMO_SCHEME_PREFIX "GetVerseNumber", scheme_get_verse_number); install_scm_function (0, "Gets the number of lyric syllables in the current staff up to the cursor position.", DENEMO_SCHEME_PREFIX "SyllableCount", scheme_syllable_count); install_scm_function (0, "Moves the lyric cursor to match the current Denemo Cursor position (offset by an optional integer parameter), switching the keyboard input to the lyrics pane", DENEMO_SCHEME_PREFIX "SynchronizeLyricCursor", scheme_synchronize_lyric_cursor); install_scm_function (1, "Inserts passed text at the lyric cursor in the lyrics pane, returns #f if no verse at cursor", DENEMO_SCHEME_PREFIX "InsertTextInVerse", scheme_insert_text_in_verse); install_scm_function (0, "Puts the passed string as the current verse of the current staff", DENEMO_SCHEME_PREFIX "PutVerse", scheme_put_verse); install_scm_function (0, "Appends the passed string to the current verse of the current staff", DENEMO_SCHEME_PREFIX "AppendToVerse", scheme_append_to_verse); install_scm_function (0, "Takes a command name and returns and id for it or #f if no command of that name exists", DENEMO_SCHEME_PREFIX "GetId", scheme_get_id); install_scm_function (2, "Takes a command name or command id and binding name and sets that binding on that command returns the command id that previously had the binding or #f if none", DENEMO_SCHEME_PREFIX "AddKeybinding", scheme_add_keybinding); install_scm_function (0, "Takes a command name and returns the label for the menu item that executes the command or #f if none", DENEMO_SCHEME_PREFIX "GetLabel", scheme_get_label); install_scm_function (0, "Takes a non-built-in command name and returns position in the menu system for he command or #f if none", DENEMO_SCHEME_PREFIX "GetMenuPosition", scheme_get_menu_position); install_scm_function (0, "Returns the installed LilyPond version", DENEMO_SCHEME_PREFIX "GetLilyVersion", scheme_get_lily_version); install_scm_function (0, "Returns a boolean if the installed version of LilyPond is greater than or equal to the passed in version string", DENEMO_SCHEME_PREFIX "CheckLilyVersion", scheme_check_lily_version); install_scm_function (0, "Takes a string putting it on the scheme-controlled status bar as a list of active filters", DENEMO_SCHEME_PREFIX "InputFilterNames", scheme_input_filter_names); install_scm_function (0, "Takes a string putting the scheme controlled status bar; with no argument it hides this status bar", DENEMO_SCHEME_PREFIX "WriteStatus", scheme_write_status); install_scm_function (1, "Display a debug message", DENEMO_SCHEME_PREFIX "Debug", scheme_log_debug); install_scm_function (1, "Display an info message", DENEMO_SCHEME_PREFIX "Info", scheme_log_info); install_scm_function (1, "Display a regular message", DENEMO_SCHEME_PREFIX "Message", scheme_log_message); install_scm_function (1, "Display a warning message", DENEMO_SCHEME_PREFIX "Warning", scheme_log_warning); install_scm_function (1, "Display a critical message", DENEMO_SCHEME_PREFIX "Critical", scheme_log_critical); install_scm_function (1, "Display an error message and abort", DENEMO_SCHEME_PREFIX "Error", scheme_log_error); } denemo-2.2.0/src/scripting/PaxHeaders.19168/scheme.h0000644000000000000000000000013213135434036016737 xustar0030 mtime=1500919838.359981805 30 atime=1500919920.539981806 30 ctime=1500919914.293315139 denemo-2.2.0/src/scripting/scheme.h0000644000175000017500000017067713135434036020632 0ustar00jjbenhamjjbenham00000000000000/*CursorLeft cursorleft*/ SCM scheme_CursorLeft(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "CursorLeft", scheme_CursorLeft); /*MoveCursorLeft movecursorleft*/ SCM scheme_MoveCursorLeft(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveCursorLeft", scheme_MoveCursorLeft); /*CursorDown cursordown*/ SCM scheme_CursorDown(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "CursorDown", scheme_CursorDown); /*CursorUp cursorup*/ SCM scheme_CursorUp(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "CursorUp", scheme_CursorUp); /*CursorRight cursorright*/ SCM scheme_CursorRight(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "CursorRight", scheme_CursorRight); /*MoveCursorRight movecursorright*/ SCM scheme_MoveCursorRight(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveCursorRight", scheme_MoveCursorRight); /*GoToMark goto_mark*/ SCM scheme_GoToMark(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "GoToMark", scheme_GoToMark); /*SwapPointAndMark swap_point_and_mark*/ SCM scheme_SwapPointAndMark(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SwapPointAndMark", scheme_SwapPointAndMark); /*GoToSelectionStart goto_selection_start*/ SCM scheme_GoToSelectionStart(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "GoToSelectionStart", scheme_GoToSelectionStart); /*PushPosition PushPosition*/ SCM scheme_PushPosition(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PushPosition", scheme_PushPosition); /*PopPosition PopPosition*/ SCM scheme_PopPosition(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PopPosition", scheme_PopPosition); /*PopPushPosition PopPushPosition*/ SCM scheme_PopPushPosition(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PopPushPosition", scheme_PopPushPosition); /*ToggleReduceToDrawingArea ToggleReduceToDrawingArea*/ SCM scheme_ToggleReduceToDrawingArea(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ToggleReduceToDrawingArea", scheme_ToggleReduceToDrawingArea); /*StaffUp staffup*/ SCM scheme_StaffUp(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "StaffUp", scheme_StaffUp); /*StaffDown staffdown*/ SCM scheme_StaffDown(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "StaffDown", scheme_StaffDown); /*MoveToStaffUp movetostaffup*/ SCM scheme_MoveToStaffUp(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToStaffUp", scheme_MoveToStaffUp); /*MoveToStaffDown movetostaffdown*/ SCM scheme_MoveToStaffDown(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToStaffDown", scheme_MoveToStaffDown); /*MeasureLeft measureleft*/ SCM scheme_MeasureLeft(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MeasureLeft", scheme_MeasureLeft); /*MeasureRight measureright*/ SCM scheme_MeasureRight(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MeasureRight", scheme_MeasureRight); /*MoveToMeasureLeft movetomeasureleft*/ SCM scheme_MoveToMeasureLeft(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToMeasureLeft", scheme_MoveToMeasureLeft); /*MoveToMeasureRight movetomeasureright*/ SCM scheme_MoveToMeasureRight(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToMeasureRight", scheme_MoveToMeasureRight); /*A go_to_A_key*/ SCM scheme_A(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "A", scheme_A); /*B go_to_B_key*/ SCM scheme_B(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "B", scheme_B); /*C go_to_C_key*/ SCM scheme_C(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "C", scheme_C); /*D go_to_D_key*/ SCM scheme_D(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "D", scheme_D); /*E go_to_E_key*/ SCM scheme_E(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "E", scheme_E); /*F go_to_F_key*/ SCM scheme_F(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "F", scheme_F); /*G go_to_G_key*/ SCM scheme_G(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "G", scheme_G); /*OctaveUp octave_up_key*/ SCM scheme_OctaveUp(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "OctaveUp", scheme_OctaveUp); /*OctaveDown octave_down_key*/ SCM scheme_OctaveDown(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "OctaveDown", scheme_OctaveDown); /*WholeNote insert_chord_0key*/ SCM scheme_WholeNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "WholeNote", scheme_WholeNote); /*HalfNote insert_chord_1key*/ SCM scheme_HalfNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "HalfNote", scheme_HalfNote); /*QuarterNote insert_chord_2key*/ SCM scheme_QuarterNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "QuarterNote", scheme_QuarterNote); /*EighthNote insert_chord_3key*/ SCM scheme_EighthNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EighthNote", scheme_EighthNote); /*SixteenthNote insert_chord_4key*/ SCM scheme_SixteenthNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SixteenthNote", scheme_SixteenthNote); /*ThirtysecondNote insert_chord_5key*/ SCM scheme_ThirtysecondNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ThirtysecondNote", scheme_ThirtysecondNote); /*SixtyfourthNote insert_chord_6key*/ SCM scheme_SixtyfourthNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SixtyfourthNote", scheme_SixtyfourthNote); /*OneHundredTwentyEighthNote insert_chord_7key*/ SCM scheme_OneHundredTwentyEighthNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "OneHundredTwentyEighthNote", scheme_OneHundredTwentyEighthNote); /*TwoHundredFiftySixthNote insert_chord_8key*/ SCM scheme_TwoHundredFiftySixthNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "TwoHundredFiftySixthNote", scheme_TwoHundredFiftySixthNote); /*InsertWholeRest insert_rest_0key*/ SCM scheme_InsertWholeRest(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertWholeRest", scheme_InsertWholeRest); /*InsertHalfRest insert_rest_1key*/ SCM scheme_InsertHalfRest(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertHalfRest", scheme_InsertHalfRest); /*InsertQuarterRest insert_rest_2key*/ SCM scheme_InsertQuarterRest(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertQuarterRest", scheme_InsertQuarterRest); /*InsertEighthRest insert_rest_3key*/ SCM scheme_InsertEighthRest(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertEighthRest", scheme_InsertEighthRest); /*InsertSixteenthRest insert_rest_4key*/ SCM scheme_InsertSixteenthRest(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertSixteenthRest", scheme_InsertSixteenthRest); /*InsertThirtysecondRest insert_rest_5key*/ SCM scheme_InsertThirtysecondRest(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertThirtysecondRest", scheme_InsertThirtysecondRest); /*InsertSixtyfourthRest insert_rest_6key*/ SCM scheme_InsertSixtyfourthRest(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertSixtyfourthRest", scheme_InsertSixtyfourthRest); /*InsertBlankWholeNote insert_blankchord_0key*/ SCM scheme_InsertBlankWholeNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBlankWholeNote", scheme_InsertBlankWholeNote); /*InsertBlankHalfNote insert_blankchord_1key*/ SCM scheme_InsertBlankHalfNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBlankHalfNote", scheme_InsertBlankHalfNote); /*InsertBlankQuarterNote insert_blankchord_2key*/ SCM scheme_InsertBlankQuarterNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBlankQuarterNote", scheme_InsertBlankQuarterNote); /*InsertBlankEighthNote insert_blankchord_3key*/ SCM scheme_InsertBlankEighthNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBlankEighthNote", scheme_InsertBlankEighthNote); /*InsertBlankSixteenthNote insert_blankchord_4key*/ SCM scheme_InsertBlankSixteenthNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBlankSixteenthNote", scheme_InsertBlankSixteenthNote); /*InsertBlankThirtysecondNote insert_blankchord_5key*/ SCM scheme_InsertBlankThirtysecondNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBlankThirtysecondNote", scheme_InsertBlankThirtysecondNote); /*InsertBlankSixtyfourthNote insert_blankchord_6key*/ SCM scheme_InsertBlankSixtyfourthNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBlankSixtyfourthNote", scheme_InsertBlankSixtyfourthNote); /*InsertBlankOneHundredTwentyEighthNote insert_blankchord_7key*/ SCM scheme_InsertBlankOneHundredTwentyEighthNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBlankOneHundredTwentyEighthNote", scheme_InsertBlankOneHundredTwentyEighthNote); /*InsertBlankTwoHundredFiftySixthNote insert_blankchord_8key*/ SCM scheme_InsertBlankTwoHundredFiftySixthNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBlankTwoHundredFiftySixthNote", scheme_InsertBlankTwoHundredFiftySixthNote); /*InsertDuplet duplet_insert*/ SCM scheme_InsertDuplet(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertDuplet", scheme_InsertDuplet); /*InsertTriplet triplet_insert*/ SCM scheme_InsertTriplet(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertTriplet", scheme_InsertTriplet); /*StartTriplet triplet_start*/ SCM scheme_StartTriplet(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "StartTriplet", scheme_StartTriplet); /*EndTuplet tuplet_end*/ SCM scheme_EndTuplet(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EndTuplet", scheme_EndTuplet); /*InsertQuadtuplet insert_quadtuplet*/ SCM scheme_InsertQuadtuplet(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertQuadtuplet", scheme_InsertQuadtuplet); /*InsertQuintuplet quintuplet_insert*/ SCM scheme_InsertQuintuplet(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertQuintuplet", scheme_InsertQuintuplet); /*InsertSextuplet sextuplet_insert*/ SCM scheme_InsertSextuplet(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertSextuplet", scheme_InsertSextuplet); /*InsertSeptuplet septuplet_insert*/ SCM scheme_InsertSeptuplet(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertSeptuplet", scheme_InsertSeptuplet); /*AddNoteToChord add_tone_key*/ SCM scheme_AddNoteToChord(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddNoteToChord", scheme_AddNoteToChord); /*RemoveNoteFromChord remove_tone_key*/ SCM scheme_RemoveNoteFromChord(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "RemoveNoteFromChord", scheme_RemoveNoteFromChord); /*Sharpen sharpen_key*/ SCM scheme_Sharpen(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Sharpen", scheme_Sharpen); /*Flatten flatten_key*/ SCM scheme_Flatten(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Flatten", scheme_Flatten); /*PendingSharpen pending_sharpen*/ SCM scheme_PendingSharpen(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PendingSharpen", scheme_PendingSharpen); /*PendingFlatten pending_flatten*/ SCM scheme_PendingFlatten(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PendingFlatten", scheme_PendingFlatten); /*StemUp stem_up*/ SCM scheme_StemUp(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "StemUp", scheme_StemUp); /*StemDown stem_down*/ SCM scheme_StemDown(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "StemDown", scheme_StemDown); /*AddDot add_dot_key*/ SCM scheme_AddDot(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddDot", scheme_AddDot); /*RemoveDot remove_dot_key*/ SCM scheme_RemoveDot(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "RemoveDot", scheme_RemoveDot); /*InsertTiedNote tie_notes_key*/ SCM scheme_InsertTiedNote(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertTiedNote", scheme_InsertTiedNote); /*ToggleTie toggle_tie*/ SCM scheme_ToggleTie(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ToggleTie", scheme_ToggleTie); /*DeleteObject deleteobject*/ SCM scheme_DeleteObject(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeleteObject", scheme_DeleteObject); /*DeletePreviousObject deletepreviousobject*/ SCM scheme_DeletePreviousObject(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeletePreviousObject", scheme_DeletePreviousObject); /*InsertMeasure insert_measure_key*/ SCM scheme_InsertMeasure(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertMeasure", scheme_InsertMeasure); /*AddMeasure addmeasureafter*/ SCM scheme_AddMeasure(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddMeasure", scheme_AddMeasure); /*InsertMeasureBefore insertmeasurebefore*/ SCM scheme_InsertMeasureBefore(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertMeasureBefore", scheme_InsertMeasureBefore); /*InsertMeasureAfter insertmeasureafter*/ SCM scheme_InsertMeasureAfter(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertMeasureAfter", scheme_InsertMeasureAfter); /*AppendMeasure append_measure_key*/ SCM scheme_AppendMeasure(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AppendMeasure", scheme_AppendMeasure); /*DeleteMeasure deletemeasure*/ SCM scheme_DeleteMeasure(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeleteMeasure", scheme_DeleteMeasure); /*DeleteMeasureAllStaffs deletemeasureallstaffs*/ SCM scheme_DeleteMeasureAllStaffs(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeleteMeasureAllStaffs", scheme_DeleteMeasureAllStaffs); /*ShrinkMeasures adjust_measure_less_width_key*/ SCM scheme_ShrinkMeasures(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ShrinkMeasures", scheme_ShrinkMeasures); /*WidenMeasures adjust_measure_more_width_key*/ SCM scheme_WidenMeasures(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "WidenMeasures", scheme_WidenMeasures); /*ShorterStaffs adjust_staff_less_height_key*/ SCM scheme_ShorterStaffs(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ShorterStaffs", scheme_ShorterStaffs); /*TallerStaffs adjust_staff_more_height_key*/ SCM scheme_TallerStaffs(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "TallerStaffs", scheme_TallerStaffs); /*InsertTrebleClef clef_new_treble*/ SCM scheme_InsertTrebleClef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertTrebleClef", scheme_InsertTrebleClef); /*InsertBassClef clef_new_bass*/ SCM scheme_InsertBassClef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBassClef", scheme_InsertBassClef); /*Insertg8clef clef_new_g8*/ SCM scheme_Insertg8clef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insertg8clef", scheme_Insertg8clef); /*InsertAltoClef clef_new_alto*/ SCM scheme_InsertAltoClef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertAltoClef", scheme_InsertAltoClef); /*InsertTenorClef clef_new_tenor*/ SCM scheme_InsertTenorClef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertTenorClef", scheme_InsertTenorClef); /*InsertSopranoClef clef_new_soprano*/ SCM scheme_InsertSopranoClef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertSopranoClef", scheme_InsertSopranoClef); /*SetInitialTrebleClef clef_set_treble*/ SCM scheme_SetInitialTrebleClef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialTrebleClef", scheme_SetInitialTrebleClef); /*SetInitialBassClef clef_set_bass*/ SCM scheme_SetInitialBassClef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialBassClef", scheme_SetInitialBassClef); /*SetInitialg8clef clef_set_g8*/ SCM scheme_SetInitialg8clef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialg8clef", scheme_SetInitialg8clef); /*SetInitialAltoClef clef_set_alto*/ SCM scheme_SetInitialAltoClef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialAltoClef", scheme_SetInitialAltoClef); /*SetInitialTenorClef clef_set_tenor*/ SCM scheme_SetInitialTenorClef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialTenorClef", scheme_SetInitialTenorClef); /*SetInitialSopranoClef clef_set_soprano*/ SCM scheme_SetInitialSopranoClef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialSopranoClef", scheme_SetInitialSopranoClef); /*Insert22Time newtimesig22*/ SCM scheme_Insert22Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert22Time", scheme_Insert22Time); /*Insert32Time newtimesig32*/ SCM scheme_Insert32Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert32Time", scheme_Insert32Time); /*Insert42Time newtimesig42*/ SCM scheme_Insert42Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert42Time", scheme_Insert42Time); /*Insert44Time newtimesig44*/ SCM scheme_Insert44Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert44Time", scheme_Insert44Time); /*Insert34Time newtimesig34*/ SCM scheme_Insert34Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert34Time", scheme_Insert34Time); /*Insert24Time newtimesig24*/ SCM scheme_Insert24Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert24Time", scheme_Insert24Time); /*Insert64Time newtimesig64*/ SCM scheme_Insert64Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert64Time", scheme_Insert64Time); /*Insert38Time newtimesig38*/ SCM scheme_Insert38Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert38Time", scheme_Insert38Time); /*Insert68Time newtimesig68*/ SCM scheme_Insert68Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert68Time", scheme_Insert68Time); /*Insert128Time newtimesig128*/ SCM scheme_Insert128Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert128Time", scheme_Insert128Time); /*Insert98Time newtimesig98*/ SCM scheme_Insert98Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert98Time", scheme_Insert98Time); /*Set22Time settimesig22*/ SCM scheme_Set22Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set22Time", scheme_Set22Time); /*Set32Time settimesig32*/ SCM scheme_Set32Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set32Time", scheme_Set32Time); /*Set42Time settimesig42*/ SCM scheme_Set42Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set42Time", scheme_Set42Time); /*Set44Time settimesig44*/ SCM scheme_Set44Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set44Time", scheme_Set44Time); /*Set34Time settimesig34*/ SCM scheme_Set34Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set34Time", scheme_Set34Time); /*Set24Time settimesig24*/ SCM scheme_Set24Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set24Time", scheme_Set24Time); /*Set64Time settimesig64*/ SCM scheme_Set64Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set64Time", scheme_Set64Time); /*Set38Time settimesig38*/ SCM scheme_Set38Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set38Time", scheme_Set38Time); /*Set68Time settimesig68*/ SCM scheme_Set68Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set68Time", scheme_Set68Time); /*Set128Time settimesig128*/ SCM scheme_Set128Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set128Time", scheme_Set128Time); /*Set98Time settimesig98*/ SCM scheme_Set98Time(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set98Time", scheme_Set98Time); /*InsertCmaj keysig_new_cmaj*/ SCM scheme_InsertCmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertCmaj", scheme_InsertCmaj); /*InsertGmaj keysig_new_gmaj*/ SCM scheme_InsertGmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertGmaj", scheme_InsertGmaj); /*InsertDmaj keysig_new_dmaj*/ SCM scheme_InsertDmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertDmaj", scheme_InsertDmaj); /*InsertAmaj keysig_new_amaj*/ SCM scheme_InsertAmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertAmaj", scheme_InsertAmaj); /*InsertEmaj keysig_new_emaj*/ SCM scheme_InsertEmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertEmaj", scheme_InsertEmaj); /*InsertBmaj keysig_new_bmaj*/ SCM scheme_InsertBmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBmaj", scheme_InsertBmaj); /*InsertFSharpmaj keysig_new_fsharpmaj*/ SCM scheme_InsertFSharpmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertFSharpmaj", scheme_InsertFSharpmaj); /*InsertCSharpmaj keysig_new_csharpmaj*/ SCM scheme_InsertCSharpmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertCSharpmaj", scheme_InsertCSharpmaj); /*InsertFmaj keysig_new_fmaj*/ SCM scheme_InsertFmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertFmaj", scheme_InsertFmaj); /*InsertBflatmaj keysig_new_bflatmaj*/ SCM scheme_InsertBflatmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBflatmaj", scheme_InsertBflatmaj); /*InsertEflatmaj keysig_new_eflatmaj*/ SCM scheme_InsertEflatmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertEflatmaj", scheme_InsertEflatmaj); /*InsertAflatmaj keysig_new_aflatmaj*/ SCM scheme_InsertAflatmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertAflatmaj", scheme_InsertAflatmaj); /*InsertDflatmaj keysig_new_dflatmaj*/ SCM scheme_InsertDflatmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertDflatmaj", scheme_InsertDflatmaj); /*InsertGflatmaj keysig_new_gflatmaj*/ SCM scheme_InsertGflatmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertGflatmaj", scheme_InsertGflatmaj); /*InsertCflatmaj keysig_new_cflatmaj*/ SCM scheme_InsertCflatmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertCflatmaj", scheme_InsertCflatmaj); /*InsertAmin keysig_new_amin*/ SCM scheme_InsertAmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertAmin", scheme_InsertAmin); /*InsertEmin keysig_new_emin*/ SCM scheme_InsertEmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertEmin", scheme_InsertEmin); /*InsertBmin keysig_new_bmin*/ SCM scheme_InsertBmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBmin", scheme_InsertBmin); /*InsertFSharpmin keysig_new_fsharpmin*/ SCM scheme_InsertFSharpmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertFSharpmin", scheme_InsertFSharpmin); /*InsertCSharpmin keysig_new_csharpmin*/ SCM scheme_InsertCSharpmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertCSharpmin", scheme_InsertCSharpmin); /*InsertGSharpmin keysig_new_gsharpmin*/ SCM scheme_InsertGSharpmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertGSharpmin", scheme_InsertGSharpmin); /*InsertDSharpmin keysig_new_dsharpmin*/ SCM scheme_InsertDSharpmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertDSharpmin", scheme_InsertDSharpmin); /*InsertASharpmin keysig_new_asharpmin*/ SCM scheme_InsertASharpmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertASharpmin", scheme_InsertASharpmin); /*InsertDmin keysig_new_dmin*/ SCM scheme_InsertDmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertDmin", scheme_InsertDmin); /*InsertGmin keysig_new_gmin*/ SCM scheme_InsertGmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertGmin", scheme_InsertGmin); /*InsertCmin keysig_new_cmin*/ SCM scheme_InsertCmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertCmin", scheme_InsertCmin); /*InsertFmin keysig_new_fmin*/ SCM scheme_InsertFmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertFmin", scheme_InsertFmin); /*InsertBflatmin keysig_new_bflatmin*/ SCM scheme_InsertBflatmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertBflatmin", scheme_InsertBflatmin); /*InsertEflatmin keysig_new_eflatmin*/ SCM scheme_InsertEflatmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertEflatmin", scheme_InsertEflatmin); /*InsertAflatmin keysig_new_aflatmin*/ SCM scheme_InsertAflatmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertAflatmin", scheme_InsertAflatmin); /*SetInitialCmaj keysig_set_cmaj*/ SCM scheme_SetInitialCmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialCmaj", scheme_SetInitialCmaj); /*SetInitialGmaj keysig_set_gmaj*/ SCM scheme_SetInitialGmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialGmaj", scheme_SetInitialGmaj); /*SetInitialDmaj keysig_set_dmaj*/ SCM scheme_SetInitialDmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialDmaj", scheme_SetInitialDmaj); /*SetInitialAmaj keysig_set_amaj*/ SCM scheme_SetInitialAmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialAmaj", scheme_SetInitialAmaj); /*SetInitialEmaj keysig_set_emaj*/ SCM scheme_SetInitialEmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialEmaj", scheme_SetInitialEmaj); /*SetInitialBmaj keysig_set_bmaj*/ SCM scheme_SetInitialBmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialBmaj", scheme_SetInitialBmaj); /*SetInitialFSharpmaj keysig_set_fsharpmaj*/ SCM scheme_SetInitialFSharpmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialFSharpmaj", scheme_SetInitialFSharpmaj); /*SetInitialCSharpmaj keysig_set_csharpmaj*/ SCM scheme_SetInitialCSharpmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialCSharpmaj", scheme_SetInitialCSharpmaj); /*SetInitialFmaj keysig_set_fmaj*/ SCM scheme_SetInitialFmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialFmaj", scheme_SetInitialFmaj); /*SetInitialBflatmaj keysig_set_bflatmaj*/ SCM scheme_SetInitialBflatmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialBflatmaj", scheme_SetInitialBflatmaj); /*SetInitialEflatmaj keysig_set_eflatmaj*/ SCM scheme_SetInitialEflatmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialEflatmaj", scheme_SetInitialEflatmaj); /*SetInitialAflatmaj keysig_set_aflatmaj*/ SCM scheme_SetInitialAflatmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialAflatmaj", scheme_SetInitialAflatmaj); /*SetInitialDflatmaj keysig_set_dflatmaj*/ SCM scheme_SetInitialDflatmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialDflatmaj", scheme_SetInitialDflatmaj); /*SetInitialGflatmaj keysig_set_gflatmaj*/ SCM scheme_SetInitialGflatmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialGflatmaj", scheme_SetInitialGflatmaj); /*SetInitialCflatmaj keysig_set_cflatmaj*/ SCM scheme_SetInitialCflatmaj(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialCflatmaj", scheme_SetInitialCflatmaj); /*SetInitialAmin keysig_set_amin*/ SCM scheme_SetInitialAmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialAmin", scheme_SetInitialAmin); /*SetInitialEmin keysig_set_emin*/ SCM scheme_SetInitialEmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialEmin", scheme_SetInitialEmin); /*SetInitialBmin keysig_set_bmin*/ SCM scheme_SetInitialBmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialBmin", scheme_SetInitialBmin); /*SetInitialFSharpmin keysig_set_fsharpmin*/ SCM scheme_SetInitialFSharpmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialFSharpmin", scheme_SetInitialFSharpmin); /*SetInitialCSharpmin keysig_set_csharpmin*/ SCM scheme_SetInitialCSharpmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialCSharpmin", scheme_SetInitialCSharpmin); /*SetInitialGSharpmin keysig_set_gsharpmin*/ SCM scheme_SetInitialGSharpmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialGSharpmin", scheme_SetInitialGSharpmin); /*SetInitialDSharpmin keysig_set_dsharpmin*/ SCM scheme_SetInitialDSharpmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialDSharpmin", scheme_SetInitialDSharpmin); /*SetInitialASharpmin keysig_set_asharpmin*/ SCM scheme_SetInitialASharpmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialASharpmin", scheme_SetInitialASharpmin); /*SetInitialDmin keysig_set_dmin*/ SCM scheme_SetInitialDmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialDmin", scheme_SetInitialDmin); /*SetInitialGmin keysig_set_gmin*/ SCM scheme_SetInitialGmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialGmin", scheme_SetInitialGmin); /*SetInitialCmin keysig_set_cmin*/ SCM scheme_SetInitialCmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialCmin", scheme_SetInitialCmin); /*SetInitialFmin keysig_set_fmin*/ SCM scheme_SetInitialFmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialFmin", scheme_SetInitialFmin); /*SetInitialBflatmin keysig_set_bflatmin*/ SCM scheme_SetInitialBflatmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialBflatmin", scheme_SetInitialBflatmin); /*SetInitialEflatmin keysig_set_eflatmin*/ SCM scheme_SetInitialEflatmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialEflatmin", scheme_SetInitialEflatmin); /*SetInitialAflatmin keysig_set_aflatmin*/ SCM scheme_SetInitialAflatmin(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetInitialAflatmin", scheme_SetInitialAflatmin); /*SetMark set_mark*/ SCM scheme_SetMark(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetMark", scheme_SetMark); /*UnsetMark unset_mark*/ SCM scheme_UnsetMark(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "UnsetMark", scheme_UnsetMark); /*SetPoint set_point*/ SCM scheme_SetPoint(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SetPoint", scheme_SetPoint); /*ToggleBeginSlur toggle_begin_slur*/ SCM scheme_ToggleBeginSlur(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ToggleBeginSlur", scheme_ToggleBeginSlur); /*ToggleEndSlur toggle_end_slur*/ SCM scheme_ToggleEndSlur(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ToggleEndSlur", scheme_ToggleEndSlur); /*ToggleStartCrescendo toggle_start_crescendo*/ SCM scheme_ToggleStartCrescendo(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ToggleStartCrescendo", scheme_ToggleStartCrescendo); /*ToggleEndCrescendo toggle_end_crescendo*/ SCM scheme_ToggleEndCrescendo(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ToggleEndCrescendo", scheme_ToggleEndCrescendo); /*ToggleStartDiminuendo toggle_start_diminuendo*/ SCM scheme_ToggleStartDiminuendo(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ToggleStartDiminuendo", scheme_ToggleStartDiminuendo); /*ToggleEndDiminuendo toggle_end_diminuendo*/ SCM scheme_ToggleEndDiminuendo(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ToggleEndDiminuendo", scheme_ToggleEndDiminuendo); /*ToggleGrace toggle_grace*/ SCM scheme_ToggleGrace(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ToggleGrace", scheme_ToggleGrace); /*ToggleAcciaccatura toggle_acciaccatura*/ SCM scheme_ToggleAcciaccatura(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ToggleAcciaccatura", scheme_ToggleAcciaccatura); /*ForceCaution force_cautionary*/ SCM scheme_ForceCaution(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ForceCaution", scheme_ForceCaution); /*ChangePitch change_pitch*/ SCM scheme_ChangePitch(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ChangePitch", scheme_ChangePitch); /*InsertRhythm insert_rhythm_pattern*/ SCM scheme_InsertRhythm(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertRhythm", scheme_InsertRhythm); /*NextRhythm nextrhythm*/ SCM scheme_NextRhythm(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "NextRhythm", scheme_NextRhythm); /*AppendMeasureAllStaffs append_measure_score*/ SCM scheme_AppendMeasureAllStaffs(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AppendMeasureAllStaffs", scheme_AppendMeasureAllStaffs); /*ExecuteScheme execute_scheme*/ SCM scheme_ExecuteScheme(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ExecuteScheme", scheme_ExecuteScheme); /*SharpenEnharmonicSet set_sharper*/ SCM scheme_SharpenEnharmonicSet(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SharpenEnharmonicSet", scheme_SharpenEnharmonicSet); /*FlattenEnharmonicSet set_flatter*/ SCM scheme_FlattenEnharmonicSet(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "FlattenEnharmonicSet", scheme_FlattenEnharmonicSet); /*New file_newwrapper*/ SCM scheme_New(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "New", scheme_New); /*NewScore new_score_cb*/ SCM scheme_NewScore(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "NewScore", scheme_NewScore); /*Open file_open_with_check*/ SCM scheme_Open(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Open", scheme_Open); /*ImportLilypond file_import_lilypond_with_check*/ SCM scheme_ImportLilypond(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ImportLilypond", scheme_ImportLilypond); /*ImportMidi file_import_midi_with_check*/ SCM scheme_ImportMidi(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ImportMidi", scheme_ImportMidi); /*ImportMusicXml file_import_musicxml_with_check*/ SCM scheme_ImportMusicXml(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ImportMusicXml", scheme_ImportMusicXml); /*AddStaffs file_add_staffs*/ SCM scheme_AddStaffs(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddStaffs", scheme_AddStaffs); /*AddMovements file_add_movements*/ SCM scheme_AddMovements(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddMovements", scheme_AddMovements); /*MovementProps movement_props_dialog*/ SCM scheme_MovementProps(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MovementProps", scheme_MovementProps); /*OpenNewWindow openinnew*/ SCM scheme_OpenNewWindow(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "OpenNewWindow", scheme_OpenNewWindow); /*Save file_savewrapper*/ SCM scheme_Save(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Save", scheme_Save); /*SaveAs file_saveaswrapper*/ SCM scheme_SaveAs(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SaveAs", scheme_SaveAs); /*SaveCopy file_copy_save*/ SCM scheme_SaveCopy(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SaveCopy", scheme_SaveCopy); /*OpenTemplate system_template_open_with_check*/ SCM scheme_OpenTemplate(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "OpenTemplate", scheme_OpenTemplate); /*OpenExample system_example_open_with_check*/ SCM scheme_OpenExample(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "OpenExample", scheme_OpenExample); /*OpenMyTemplate local_template_open_with_check*/ SCM scheme_OpenMyTemplate(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "OpenMyTemplate", scheme_OpenMyTemplate); /*SaveTemplate template_save*/ SCM scheme_SaveTemplate(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SaveTemplate", scheme_SaveTemplate); /*NewWindow newview*/ SCM scheme_NewWindow(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "NewWindow", scheme_NewWindow); /*InsertMovementBefore insert_movement_before*/ SCM scheme_InsertMovementBefore(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertMovementBefore", scheme_InsertMovementBefore); /*InsertMovementAfter insert_movement_after*/ SCM scheme_InsertMovementAfter(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertMovementAfter", scheme_InsertMovementAfter); /*NewMovement append_new_movement*/ SCM scheme_NewMovement(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "NewMovement", scheme_NewMovement); /*SaveParts file_savepartswrapper*/ SCM scheme_SaveParts(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SaveParts", scheme_SaveParts); /*ExportMUDELA export_mudela_action*/ SCM scheme_ExportMUDELA(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ExportMUDELA", scheme_ExportMUDELA); /*ExportPDF export_pdf_action*/ SCM scheme_ExportPDF(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ExportPDF", scheme_ExportPDF); /*ExportPNG export_png_action*/ SCM scheme_ExportPNG(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ExportPNG", scheme_ExportPNG); /*ExportMIDI export_midi_action*/ SCM scheme_ExportMIDI(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ExportMIDI", scheme_ExportMIDI); /*PrintView show_print_view*/ SCM scheme_PrintView(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PrintView", scheme_PrintView); /*PrintSelection printselection_cb*/ SCM scheme_PrintSelection(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PrintSelection", scheme_PrintSelection); /*PrintExcerptPreview printexcerptpreview_cb*/ SCM scheme_PrintExcerptPreview(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PrintExcerptPreview", scheme_PrintExcerptPreview); /*PrintMovement printmovement_cb*/ SCM scheme_PrintMovement(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PrintMovement", scheme_PrintMovement); /*Print printall_cb*/ SCM scheme_Print(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Print", scheme_Print); /*PrintPart printpart_cb*/ SCM scheme_PrintPart(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PrintPart", scheme_PrintPart); /*Close close_gui_with_check*/ SCM scheme_Close(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Close", scheme_Close); /*Quit closewrapper*/ SCM scheme_Quit(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Quit", scheme_Quit); /*Undo undowrapper*/ SCM scheme_Undo(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Undo", scheme_Undo); /*Redo redowrapper*/ SCM scheme_Redo(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Redo", scheme_Redo); /*Copy copywrapper*/ SCM scheme_Copy(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Copy", scheme_Copy); /*Cut cutwrapper*/ SCM scheme_Cut(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Cut", scheme_Cut); /*Paste pastewrapper*/ SCM scheme_Paste(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Paste", scheme_Paste); /*PasteClipboard paste_clipboard*/ SCM scheme_PasteClipboard(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PasteClipboard", scheme_PasteClipboard); /*PasteComment paste_comment*/ SCM scheme_PasteComment(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PasteComment", scheme_PasteComment); /*ScoreProperties score_properties_dialog*/ SCM scheme_ScoreProperties(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ScoreProperties", scheme_ScoreProperties); /*SaveSelection saveselwrapper*/ SCM scheme_SaveSelection(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SaveSelection", scheme_SaveSelection); /*Preferences preferences_change*/ SCM scheme_Preferences(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Preferences", scheme_Preferences); /*SaveAccels save_default_keymap_file_wrapper*/ SCM scheme_SaveAccels(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SaveAccels", scheme_SaveAccels); /*CommandManagement configure_keyboard_dialog*/ SCM scheme_CommandManagement(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "CommandManagement", scheme_CommandManagement); /*SwapStaffs swapstaffs*/ SCM scheme_SwapStaffs(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SwapStaffs", scheme_SwapStaffs); /*SplitVoices splitstaffs*/ SCM scheme_SplitVoices(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SplitVoices", scheme_SplitVoices); /*JoinVoices joinstaffs*/ SCM scheme_JoinVoices(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "JoinVoices", scheme_JoinVoices); /*SwapMovements swapmovements*/ SCM scheme_SwapMovements(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "SwapMovements", scheme_SwapMovements); /*VoiceUp voiceup*/ SCM scheme_VoiceUp(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "VoiceUp", scheme_VoiceUp); /*VoiceDown voicedown*/ SCM scheme_VoiceDown(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "VoiceDown", scheme_VoiceDown); /*MoveToVoiceUp movetovoiceup*/ SCM scheme_MoveToVoiceUp(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToVoiceUp", scheme_MoveToVoiceUp); /*MoveToVoiceDown movetovoicedown*/ SCM scheme_MoveToVoiceDown(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToVoiceDown", scheme_MoveToVoiceDown); /*AddBefore staff_new_before*/ SCM scheme_AddBefore(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddBefore", scheme_AddBefore); /*AddAfter staff_new_after*/ SCM scheme_AddAfter(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddAfter", scheme_AddAfter); /*AddInitial staff_new_initial*/ SCM scheme_AddInitial(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddInitial", scheme_AddInitial); /*AddLast staff_new_last*/ SCM scheme_AddLast(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddLast", scheme_AddLast); /*DeleteBefore delete_staff_before*/ SCM scheme_DeleteBefore(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeleteBefore", scheme_DeleteBefore); /*DeleteStaff delete_staff_current*/ SCM scheme_DeleteStaff(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeleteStaff", scheme_DeleteStaff); /*DeleteAfter delete_staff_after*/ SCM scheme_DeleteAfter(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeleteAfter", scheme_DeleteAfter); /*AddVoice staff_new_voice*/ SCM scheme_AddVoice(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddVoice", scheme_AddVoice); /*StaffProperties staff_properties_change_cb*/ SCM scheme_StaffProperties(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "StaffProperties", scheme_StaffProperties); /*InitialClef clef_change_initial*/ SCM scheme_InitialClef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InitialClef", scheme_InitialClef); /*InsertClef clef_change_insert*/ SCM scheme_InsertClef(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertClef", scheme_InsertClef); /*InitialKey key_change_initial*/ SCM scheme_InitialKey(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InitialKey", scheme_InitialKey); /*InsertKey key_change_insert*/ SCM scheme_InsertKey(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertKey", scheme_InsertKey); /*InitialTimeSig timesig_change_initial*/ SCM scheme_InitialTimeSig(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InitialTimeSig", scheme_InitialTimeSig); /*InsertTimeSig timesig_change_insert*/ SCM scheme_InsertTimeSig(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertTimeSig", scheme_InsertTimeSig); /*ChangeNotehead set_notehead*/ SCM scheme_ChangeNotehead(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ChangeNotehead", scheme_ChangeNotehead); /*InsertStem stem_directive_insert*/ SCM scheme_InsertStem(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertStem", scheme_InsertStem); /*AddVerse add_verse*/ SCM scheme_AddVerse(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddVerse", scheme_AddVerse); /*DeleteVerse delete_verse*/ SCM scheme_DeleteVerse(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeleteVerse", scheme_DeleteVerse); /*EditFiguredBass figure_insert*/ SCM scheme_EditFiguredBass(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditFiguredBass", scheme_EditFiguredBass); /*DeleteFiguredBass delete_figured_bass*/ SCM scheme_DeleteFiguredBass(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeleteFiguredBass", scheme_DeleteFiguredBass); /*DeleteChordSymbols delete_fakechords*/ SCM scheme_DeleteChordSymbols(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeleteChordSymbols", scheme_DeleteChordSymbols); /*HideFiguredBass hide_figured_bass*/ SCM scheme_HideFiguredBass(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "HideFiguredBass", scheme_HideFiguredBass); /*ShowFiguredBass show_figured_bass*/ SCM scheme_ShowFiguredBass(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ShowFiguredBass", scheme_ShowFiguredBass); /*EditChords fakechord_insert*/ SCM scheme_EditChords(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditChords", scheme_EditChords); /*EditObject edit_object_type*/ SCM scheme_EditObject(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditObject", scheme_EditObject); /*EditCursorObject edit_object*/ SCM scheme_EditCursorObject(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditCursorObject", scheme_EditCursorObject); /*EditScoreProperties edit_score_properties*/ SCM scheme_EditScoreProperties(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditScoreProperties", scheme_EditScoreProperties); /*EditMovementProperties edit_movement_properties*/ SCM scheme_EditMovementProperties(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditMovementProperties", scheme_EditMovementProperties); /*EditStaffProperties edit_staff_properties*/ SCM scheme_EditStaffProperties(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditStaffProperties", scheme_EditStaffProperties); /*EditVoiceProperties edit_voice_properties*/ SCM scheme_EditVoiceProperties(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditVoiceProperties", scheme_EditVoiceProperties); /*EditDirective edit_object_directive*/ SCM scheme_EditDirective(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditDirective", scheme_EditDirective); /*EditStaffDirective edit_staff_directive*/ SCM scheme_EditStaffDirective(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditStaffDirective", scheme_EditStaffDirective); /*EditVoiceDirective edit_voice_directive*/ SCM scheme_EditVoiceDirective(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditVoiceDirective", scheme_EditVoiceDirective); /*EditScoreDirective edit_score_directive*/ SCM scheme_EditScoreDirective(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditScoreDirective", scheme_EditScoreDirective); /*EditMovementDirective edit_movement_directive*/ SCM scheme_EditMovementDirective(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditMovementDirective", scheme_EditMovementDirective); /*EditClefDirective edit_clef_directive*/ SCM scheme_EditClefDirective(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditClefDirective", scheme_EditClefDirective); /*EditTimesigDirective edit_timesig_directive*/ SCM scheme_EditTimesigDirective(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditTimesigDirective", scheme_EditTimesigDirective); /*EditKeysigDirective edit_keysig_directive*/ SCM scheme_EditKeysigDirective(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "EditKeysigDirective", scheme_EditKeysigDirective); /*DeleteDirective delete_chord_or_note_directive*/ SCM scheme_DeleteDirective(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeleteDirective", scheme_DeleteDirective); /*GoToMeasure tomeasurenum*/ SCM scheme_GoToMeasure(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "GoToMeasure", scheme_GoToMeasure); /*GoToBeginning tohome*/ SCM scheme_GoToBeginning(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "GoToBeginning", scheme_GoToBeginning); /*GoToEnd toend*/ SCM scheme_GoToEnd(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "GoToEnd", scheme_GoToEnd); /*MoveToBeginning movetostart*/ SCM scheme_MoveToBeginning(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToBeginning", scheme_MoveToBeginning); /*MoveToEnd movetoend*/ SCM scheme_MoveToEnd(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToEnd", scheme_MoveToEnd); /*NextMovement next_movement*/ SCM scheme_NextMovement(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "NextMovement", scheme_NextMovement); /*PreviousMovement prev_movement*/ SCM scheme_PreviousMovement(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PreviousMovement", scheme_PreviousMovement); /*DeleteMovement delete_movement*/ SCM scheme_DeleteMovement(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeleteMovement", scheme_DeleteMovement); /*Play ext_midi_playback*/ SCM scheme_Play(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Play", scheme_Play); /*Stop stop_midi_playback*/ SCM scheme_Stop(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Stop", scheme_Stop); /*PlaybackProperties playback_properties_change*/ SCM scheme_PlaybackProperties(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "PlaybackProperties", scheme_PlaybackProperties); /*Help browse_manual*/ SCM scheme_Help(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Help", scheme_Help); /*About about*/ SCM scheme_About(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "About", scheme_About); /*Shortcuts display_shortcuts*/ SCM scheme_Shortcuts(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Shortcuts", scheme_Shortcuts); /*MoreCommands morecommands*/ SCM scheme_MoreCommands(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoreCommands", scheme_MoreCommands); /*MyCommands mycommands*/ SCM scheme_MyCommands(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MyCommands", scheme_MyCommands); /*FetchCommands fetchcommands*/ SCM scheme_FetchCommands(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "FetchCommands", scheme_FetchCommands); /*ClearOverlay clear_overlay*/ SCM scheme_ClearOverlay(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ClearOverlay", scheme_ClearOverlay); /*CreateRhythm create_rhythm_cb*/ SCM scheme_CreateRhythm(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "CreateRhythm", scheme_CreateRhythm); /*DeleteRhythm delete_rhythm_cb*/ SCM scheme_DeleteRhythm(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "DeleteRhythm", scheme_DeleteRhythm); SCM scheme_InsertA(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertA", scheme_InsertA); SCM scheme_AddNoteA(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddNoteA", scheme_AddNoteA); SCM scheme_AddA(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddA", scheme_AddA); SCM scheme_ChangeToA(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ChangeToA", scheme_ChangeToA); SCM scheme_MoveToA(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToA", scheme_MoveToA); SCM scheme_InsertB(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertB", scheme_InsertB); SCM scheme_AddNoteB(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddNoteB", scheme_AddNoteB); SCM scheme_AddB(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddB", scheme_AddB); SCM scheme_ChangeToB(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ChangeToB", scheme_ChangeToB); SCM scheme_MoveToB(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToB", scheme_MoveToB); SCM scheme_InsertC(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertC", scheme_InsertC); SCM scheme_AddNoteC(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddNoteC", scheme_AddNoteC); SCM scheme_AddC(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddC", scheme_AddC); SCM scheme_ChangeToC(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ChangeToC", scheme_ChangeToC); SCM scheme_MoveToC(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToC", scheme_MoveToC); SCM scheme_InsertD(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertD", scheme_InsertD); SCM scheme_AddNoteD(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddNoteD", scheme_AddNoteD); SCM scheme_AddD(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddD", scheme_AddD); SCM scheme_ChangeToD(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ChangeToD", scheme_ChangeToD); SCM scheme_MoveToD(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToD", scheme_MoveToD); SCM scheme_InsertE(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertE", scheme_InsertE); SCM scheme_AddNoteE(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddNoteE", scheme_AddNoteE); SCM scheme_AddE(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddE", scheme_AddE); SCM scheme_ChangeToE(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ChangeToE", scheme_ChangeToE); SCM scheme_MoveToE(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToE", scheme_MoveToE); SCM scheme_InsertF(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertF", scheme_InsertF); SCM scheme_AddNoteF(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddNoteF", scheme_AddNoteF); SCM scheme_AddF(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddF", scheme_AddF); SCM scheme_ChangeToF(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ChangeToF", scheme_ChangeToF); SCM scheme_MoveToF(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToF", scheme_MoveToF); SCM scheme_InsertG(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertG", scheme_InsertG); SCM scheme_AddNoteG(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddNoteG", scheme_AddNoteG); SCM scheme_AddG(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "AddG", scheme_AddG); SCM scheme_ChangeToG(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "ChangeToG", scheme_ChangeToG); SCM scheme_MoveToG(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "MoveToG", scheme_MoveToG); /*0 */ SCM scheme_0(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "0", scheme_0); SCM scheme_InsertDur0(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert0", scheme_InsertDur0); SCM scheme_ChangeDur0(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Change0", scheme_ChangeDur0); SCM scheme_SetDur0(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set0", scheme_SetDur0); SCM scheme_InsertRest0(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertRest0", scheme_InsertRest0); /*1 */ SCM scheme_1(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "1", scheme_1); SCM scheme_InsertDur1(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert1", scheme_InsertDur1); SCM scheme_ChangeDur1(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Change1", scheme_ChangeDur1); SCM scheme_SetDur1(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set1", scheme_SetDur1); SCM scheme_InsertRest1(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertRest1", scheme_InsertRest1); /*2 */ SCM scheme_2(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "2", scheme_2); SCM scheme_InsertDur2(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert2", scheme_InsertDur2); SCM scheme_ChangeDur2(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Change2", scheme_ChangeDur2); SCM scheme_SetDur2(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set2", scheme_SetDur2); SCM scheme_InsertRest2(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertRest2", scheme_InsertRest2); /*3 */ SCM scheme_3(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "3", scheme_3); SCM scheme_InsertDur3(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert3", scheme_InsertDur3); SCM scheme_ChangeDur3(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Change3", scheme_ChangeDur3); SCM scheme_SetDur3(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set3", scheme_SetDur3); SCM scheme_InsertRest3(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertRest3", scheme_InsertRest3); /*4 */ SCM scheme_4(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "4", scheme_4); SCM scheme_InsertDur4(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert4", scheme_InsertDur4); SCM scheme_ChangeDur4(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Change4", scheme_ChangeDur4); SCM scheme_SetDur4(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set4", scheme_SetDur4); SCM scheme_InsertRest4(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertRest4", scheme_InsertRest4); /*5 */ SCM scheme_5(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "5", scheme_5); SCM scheme_InsertDur5(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert5", scheme_InsertDur5); SCM scheme_ChangeDur5(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Change5", scheme_ChangeDur5); SCM scheme_SetDur5(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set5", scheme_SetDur5); SCM scheme_InsertRest5(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertRest5", scheme_InsertRest5); /*6 */ SCM scheme_6(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "6", scheme_6); SCM scheme_InsertDur6(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert6", scheme_InsertDur6); SCM scheme_ChangeDur6(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Change6", scheme_ChangeDur6); SCM scheme_SetDur6(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set6", scheme_SetDur6); SCM scheme_InsertRest6(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertRest6", scheme_InsertRest6); /*7 */ SCM scheme_7(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "7", scheme_7); SCM scheme_InsertDur7(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert7", scheme_InsertDur7); SCM scheme_ChangeDur7(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Change7", scheme_ChangeDur7); SCM scheme_SetDur7(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set7", scheme_SetDur7); SCM scheme_InsertRest7(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertRest7", scheme_InsertRest7); /*8 */ SCM scheme_8(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "8", scheme_8); SCM scheme_InsertDur8(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Insert8", scheme_InsertDur8); SCM scheme_ChangeDur8(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Change8", scheme_ChangeDur8); SCM scheme_SetDur8(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "Set8", scheme_SetDur8); SCM scheme_InsertRest8(SCM optional); install_scm_function (0, NULL, DENEMO_SCHEME_PREFIX "InsertRest8", scheme_InsertRest8); denemo-2.2.0/src/scripting/PaxHeaders.19168/scheme-identifiers.h0000644000000000000000000000013213135434036021242 xustar0030 mtime=1500919838.359981805 30 atime=1500919920.606648472 30 ctime=1500919914.289981805 denemo-2.2.0/src/scripting/scheme-identifiers.h0000644000175000017500000000034613135434036023116 0ustar00jjbenhamjjbenham00000000000000#ifndef __SCHEME_IDENTIFIERS_H__ #define __SCHEME_IDENTIFIERS_H__ #include void install_scm_function (gint nbargs, gchar* tooltip, gchar * name, gpointer callback); void create_scheme_identfiers (void); #endifdenemo-2.2.0/src/scripting/PaxHeaders.19168/scheme_cb.h0000644000000000000000000000013213135434036017403 xustar0030 mtime=1500919838.359981805 30 atime=1500919920.606648472 30 ctime=1500919914.289981805 denemo-2.2.0/src/scripting/scheme_cb.h0000644000175000017500000013036613135434036021265 0ustar00jjbenhamjjbenham00000000000000SCM scheme_CursorLeft (SCM optional) { return scheme_call_callback(optional, (callback_function)cursorleft); } SCM scheme_MoveCursorLeft (SCM optional) { return scheme_call_callback(optional, (callback_function)movecursorleft); } SCM scheme_CursorDown (SCM optional) { return scheme_call_callback(optional, (callback_function)cursordown); } SCM scheme_CursorUp (SCM optional) { return scheme_call_callback(optional, (callback_function)cursorup); } SCM scheme_CursorRight (SCM optional) { return scheme_call_callback(optional, (callback_function)cursorright); } SCM scheme_MoveCursorRight (SCM optional) { return scheme_call_callback(optional, (callback_function)movecursorright); } SCM scheme_GoToMark (SCM optional) { return scheme_call_callback(optional, (callback_function)goto_mark); } SCM scheme_SwapPointAndMark (SCM optional) { return scheme_call_callback(optional, (callback_function)swap_point_and_mark); } SCM scheme_GoToSelectionStart (SCM optional) { return scheme_call_callback(optional, (callback_function)goto_selection_start); } SCM scheme_PushPosition (SCM optional) { return scheme_call_callback(optional, (callback_function)PushPosition); } SCM scheme_PopPosition (SCM optional) { return scheme_call_callback(optional, (callback_function)PopPosition); } SCM scheme_PopPushPosition (SCM optional) { return scheme_call_callback(optional, (callback_function)PopPushPosition); } SCM scheme_ToggleReduceToDrawingArea (SCM optional) { return scheme_call_callback(optional, (callback_function)ToggleReduceToDrawingArea); } SCM scheme_StaffUp (SCM optional) { return scheme_call_callback(optional, (callback_function)staffup); } SCM scheme_StaffDown (SCM optional) { return scheme_call_callback(optional, (callback_function)staffdown); } SCM scheme_MoveToStaffUp (SCM optional) { return scheme_call_callback(optional, (callback_function)movetostaffup); } SCM scheme_MoveToStaffDown (SCM optional) { return scheme_call_callback(optional, (callback_function)movetostaffdown); } SCM scheme_MeasureLeft (SCM optional) { return scheme_call_callback(optional, (callback_function)measureleft); } SCM scheme_MeasureRight (SCM optional) { return scheme_call_callback(optional, (callback_function)measureright); } SCM scheme_MoveToMeasureLeft (SCM optional) { return scheme_call_callback(optional, (callback_function)movetomeasureleft); } SCM scheme_MoveToMeasureRight (SCM optional) { return scheme_call_callback(optional, (callback_function)movetomeasureright); } SCM scheme_A (SCM optional) { return scheme_call_callback(optional, (callback_function)change_or_append_A_key); } SCM scheme_B (SCM optional) { return scheme_call_callback(optional, (callback_function)change_or_append_B_key); } SCM scheme_C (SCM optional) { return scheme_call_callback(optional, (callback_function)change_or_append_C_key); } SCM scheme_D (SCM optional) { return scheme_call_callback(optional, (callback_function)change_or_append_D_key); } SCM scheme_E (SCM optional) { return scheme_call_callback(optional, (callback_function)change_or_append_E_key); } SCM scheme_F (SCM optional) { return scheme_call_callback(optional, (callback_function)change_or_append_F_key); } SCM scheme_G (SCM optional) { return scheme_call_callback(optional, (callback_function)change_or_append_G_key); } SCM scheme_OctaveUp (SCM optional) { return scheme_call_callback(optional, (callback_function)octave_up_key); } SCM scheme_OctaveDown (SCM optional) { return scheme_call_callback(optional, (callback_function)octave_down_key); } SCM scheme_WholeNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_chord_0key); } SCM scheme_HalfNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_chord_1key); } SCM scheme_QuarterNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_chord_2key); } SCM scheme_EighthNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_chord_3key); } SCM scheme_SixteenthNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_chord_4key); } SCM scheme_ThirtysecondNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_chord_5key); } SCM scheme_SixtyfourthNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_chord_6key); } SCM scheme_OneHundredTwentyEighthNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_chord_7key); } SCM scheme_TwoHundredFiftySixthNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_chord_8key); } SCM scheme_InsertWholeRest (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_rest_0key); } SCM scheme_InsertHalfRest (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_rest_1key); } SCM scheme_InsertQuarterRest (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_rest_2key); } SCM scheme_InsertEighthRest (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_rest_3key); } SCM scheme_InsertSixteenthRest (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_rest_4key); } SCM scheme_InsertThirtysecondRest (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_rest_5key); } SCM scheme_InsertSixtyfourthRest (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_rest_6key); } SCM scheme_InsertBlankWholeNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_blankchord_0key); } SCM scheme_InsertBlankHalfNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_blankchord_1key); } SCM scheme_InsertBlankQuarterNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_blankchord_2key); } SCM scheme_InsertBlankEighthNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_blankchord_3key); } SCM scheme_InsertBlankSixteenthNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_blankchord_4key); } SCM scheme_InsertBlankThirtysecondNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_blankchord_5key); } SCM scheme_InsertBlankSixtyfourthNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_blankchord_6key); } SCM scheme_InsertBlankOneHundredTwentyEighthNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_blankchord_7key); } SCM scheme_InsertBlankTwoHundredFiftySixthNote (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_blankchord_8key); } SCM scheme_InsertDuplet (SCM optional) { return scheme_call_callback(optional, (callback_function)duplet_insert); } SCM scheme_InsertTriplet (SCM optional) { return scheme_call_callback(optional, (callback_function)triplet_insert); } SCM scheme_StartTriplet (SCM optional) { return scheme_call_callback(optional, (callback_function)triplet_start); } SCM scheme_EndTuplet (SCM optional) { return scheme_call_callback(optional, (callback_function)tuplet_end); } SCM scheme_InsertQuadtuplet (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_quadtuplet); } SCM scheme_InsertQuintuplet (SCM optional) { return scheme_call_callback(optional, (callback_function)quintuplet_insert); } SCM scheme_InsertSextuplet (SCM optional) { return scheme_call_callback(optional, (callback_function)sextuplet_insert); } SCM scheme_InsertSeptuplet (SCM optional) { return scheme_call_callback(optional, (callback_function)septuplet_insert); } SCM scheme_AddNoteToChord (SCM optional) { return scheme_call_callback(optional, (callback_function)add_note_to_chord); } SCM scheme_RemoveNoteFromChord (SCM optional) { return scheme_call_callback(optional, (callback_function)delete_note_from_chord); } SCM scheme_Sharpen (SCM optional) { return scheme_call_callback(optional, (callback_function)sharpen_note); } SCM scheme_Flatten (SCM optional) { return scheme_call_callback(optional, (callback_function)flatten_note); } SCM scheme_PendingSharpen (SCM optional) { return scheme_call_callback(optional, (callback_function)pending_sharpen); } SCM scheme_PendingFlatten (SCM optional) { return scheme_call_callback(optional, (callback_function)pending_flatten); } SCM scheme_StemUp (SCM optional) { return scheme_call_callback(optional, (callback_function)set_stem_up); } SCM scheme_StemDown (SCM optional) { return scheme_call_callback(optional, (callback_function)set_stem_down); } SCM scheme_AddDot (SCM optional) { return scheme_call_callback(optional, (callback_function)add_dot_key); } SCM scheme_RemoveDot (SCM optional) { return scheme_call_callback(optional, (callback_function)remove_dot_key); } SCM scheme_InsertTiedNote (SCM optional) { return scheme_call_callback(optional, (callback_function)tie_notes_key); } SCM scheme_ToggleTie (SCM optional) { return scheme_call_callback(optional, (callback_function)toggle_tie); } SCM scheme_DeleteObject (SCM optional) { return scheme_call_callback(optional, (callback_function)deleteobject); } SCM scheme_DeletePreviousObject (SCM optional) { return scheme_call_callback(optional, (callback_function)deletepreviousobject); } SCM scheme_InsertMeasure (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_measure_key); } SCM scheme_AddMeasure (SCM optional) { return scheme_call_callback(optional, (callback_function)addmeasureafter); } SCM scheme_InsertMeasureBefore (SCM optional) { return scheme_call_callback(optional, (callback_function)insertmeasurebefore); } SCM scheme_InsertMeasureAfter (SCM optional) { return scheme_call_callback(optional, (callback_function)insertmeasureafter); } SCM scheme_AppendMeasure (SCM optional) { return scheme_call_callback(optional, (callback_function)append_measure_key); } SCM scheme_DeleteMeasure (SCM optional) { return scheme_call_callback(optional, (callback_function)deletemeasure); } SCM scheme_DeleteMeasureAllStaffs (SCM optional) { return scheme_call_callback(optional, (callback_function)deletemeasureallstaffs); } SCM scheme_ShrinkMeasures (SCM optional) { return scheme_call_callback(optional, (callback_function)adjust_measure_less_width_key); } SCM scheme_WidenMeasures (SCM optional) { return scheme_call_callback(optional, (callback_function)adjust_measure_more_width_key); } SCM scheme_ShorterStaffs (SCM optional) { return scheme_call_callback(optional, (callback_function)adjust_staff_less_height_key); } SCM scheme_TallerStaffs (SCM optional) { return scheme_call_callback(optional, (callback_function)adjust_staff_more_height_key); } SCM scheme_InsertTrebleClef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_new_treble); } SCM scheme_InsertBassClef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_new_bass); } SCM scheme_Insertg8clef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_new_g8); } SCM scheme_InsertAltoClef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_new_alto); } SCM scheme_InsertTenorClef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_new_tenor); } SCM scheme_InsertSopranoClef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_new_soprano); } SCM scheme_SetInitialTrebleClef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_set_treble); } SCM scheme_SetInitialBassClef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_set_bass); } SCM scheme_SetInitialg8clef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_set_g8); } SCM scheme_SetInitialAltoClef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_set_alto); } SCM scheme_SetInitialTenorClef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_set_tenor); } SCM scheme_SetInitialSopranoClef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_set_soprano); } SCM scheme_Insert22Time (SCM optional) { return scheme_call_callback(optional, (callback_function)newtimesig22); } SCM scheme_Insert32Time (SCM optional) { return scheme_call_callback(optional, (callback_function)newtimesig32); } SCM scheme_Insert42Time (SCM optional) { return scheme_call_callback(optional, (callback_function)newtimesig42); } SCM scheme_Insert44Time (SCM optional) { return scheme_call_callback(optional, (callback_function)newtimesig44); } SCM scheme_Insert34Time (SCM optional) { return scheme_call_callback(optional, (callback_function)newtimesig34); } SCM scheme_Insert24Time (SCM optional) { return scheme_call_callback(optional, (callback_function)newtimesig24); } SCM scheme_Insert64Time (SCM optional) { return scheme_call_callback(optional, (callback_function)newtimesig64); } SCM scheme_Insert38Time (SCM optional) { return scheme_call_callback(optional, (callback_function)newtimesig38); } SCM scheme_Insert68Time (SCM optional) { return scheme_call_callback(optional, (callback_function)newtimesig68); } SCM scheme_Insert128Time (SCM optional) { return scheme_call_callback(optional, (callback_function)newtimesig128); } SCM scheme_Insert98Time (SCM optional) { return scheme_call_callback(optional, (callback_function)newtimesig98); } SCM scheme_Set22Time (SCM optional) { return scheme_call_callback(optional, (callback_function)settimesig22); } SCM scheme_Set32Time (SCM optional) { return scheme_call_callback(optional, (callback_function)settimesig32); } SCM scheme_Set42Time (SCM optional) { return scheme_call_callback(optional, (callback_function)settimesig42); } SCM scheme_Set44Time (SCM optional) { return scheme_call_callback(optional, (callback_function)settimesig44); } SCM scheme_Set34Time (SCM optional) { return scheme_call_callback(optional, (callback_function)settimesig34); } SCM scheme_Set24Time (SCM optional) { return scheme_call_callback(optional, (callback_function)settimesig24); } SCM scheme_Set64Time (SCM optional) { return scheme_call_callback(optional, (callback_function)settimesig64); } SCM scheme_Set38Time (SCM optional) { return scheme_call_callback(optional, (callback_function)settimesig38); } SCM scheme_Set68Time (SCM optional) { return scheme_call_callback(optional, (callback_function)settimesig68); } SCM scheme_Set128Time (SCM optional) { return scheme_call_callback(optional, (callback_function)settimesig128); } SCM scheme_Set98Time (SCM optional) { return scheme_call_callback(optional, (callback_function)settimesig98); } SCM scheme_InsertCmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_cmaj); } SCM scheme_InsertGmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_gmaj); } SCM scheme_InsertDmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_dmaj); } SCM scheme_InsertAmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_amaj); } SCM scheme_InsertEmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_emaj); } SCM scheme_InsertBmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_bmaj); } SCM scheme_InsertFSharpmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_fsharpmaj); } SCM scheme_InsertCSharpmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_csharpmaj); } SCM scheme_InsertFmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_fmaj); } SCM scheme_InsertBflatmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_bflatmaj); } SCM scheme_InsertEflatmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_eflatmaj); } SCM scheme_InsertAflatmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_aflatmaj); } SCM scheme_InsertDflatmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_dflatmaj); } SCM scheme_InsertGflatmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_gflatmaj); } SCM scheme_InsertCflatmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_cflatmaj); } SCM scheme_InsertAmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_amin); } SCM scheme_InsertEmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_emin); } SCM scheme_InsertBmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_bmin); } SCM scheme_InsertFSharpmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_fsharpmin); } SCM scheme_InsertCSharpmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_csharpmin); } SCM scheme_InsertGSharpmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_gsharpmin); } SCM scheme_InsertDSharpmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_dsharpmin); } SCM scheme_InsertASharpmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_asharpmin); } SCM scheme_InsertDmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_dmin); } SCM scheme_InsertGmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_gmin); } SCM scheme_InsertCmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_cmin); } SCM scheme_InsertFmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_fmin); } SCM scheme_InsertBflatmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_bflatmin); } SCM scheme_InsertEflatmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_eflatmin); } SCM scheme_InsertAflatmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_new_aflatmin); } SCM scheme_SetInitialCmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_cmaj); } SCM scheme_SetInitialGmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_gmaj); } SCM scheme_SetInitialDmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_dmaj); } SCM scheme_SetInitialAmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_amaj); } SCM scheme_SetInitialEmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_emaj); } SCM scheme_SetInitialBmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_bmaj); } SCM scheme_SetInitialFSharpmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_fsharpmaj); } SCM scheme_SetInitialCSharpmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_csharpmaj); } SCM scheme_SetInitialFmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_fmaj); } SCM scheme_SetInitialBflatmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_bflatmaj); } SCM scheme_SetInitialEflatmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_eflatmaj); } SCM scheme_SetInitialAflatmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_aflatmaj); } SCM scheme_SetInitialDflatmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_dflatmaj); } SCM scheme_SetInitialGflatmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_gflatmaj); } SCM scheme_SetInitialCflatmaj (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_cflatmaj); } SCM scheme_SetInitialAmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_amin); } SCM scheme_SetInitialEmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_emin); } SCM scheme_SetInitialBmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_bmin); } SCM scheme_SetInitialFSharpmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_fsharpmin); } SCM scheme_SetInitialCSharpmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_csharpmin); } SCM scheme_SetInitialGSharpmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_gsharpmin); } SCM scheme_SetInitialDSharpmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_dsharpmin); } SCM scheme_SetInitialASharpmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_asharpmin); } SCM scheme_SetInitialDmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_dmin); } SCM scheme_SetInitialGmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_gmin); } SCM scheme_SetInitialCmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_cmin); } SCM scheme_SetInitialFmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_fmin); } SCM scheme_SetInitialBflatmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_bflatmin); } SCM scheme_SetInitialEflatmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_eflatmin); } SCM scheme_SetInitialAflatmin (SCM optional) { return scheme_call_callback(optional, (callback_function)keysig_set_aflatmin); } SCM scheme_SetMark (SCM optional) { return scheme_call_callback(optional, (callback_function)set_mark); } SCM scheme_UnsetMark (SCM optional) { return scheme_call_callback(optional, (callback_function)unset_mark); } SCM scheme_SetPoint (SCM optional) { return scheme_call_callback(optional, (callback_function)set_point); } SCM scheme_ToggleBeginSlur (SCM optional) { return scheme_call_callback(optional, (callback_function)toggle_begin_slur); } SCM scheme_ToggleEndSlur (SCM optional) { return scheme_call_callback(optional, (callback_function)toggle_end_slur); } SCM scheme_ToggleStartCrescendo (SCM optional) { return scheme_call_callback(optional, (callback_function)toggle_start_crescendo); } SCM scheme_ToggleEndCrescendo (SCM optional) { return scheme_call_callback(optional, (callback_function)toggle_end_crescendo); } SCM scheme_ToggleStartDiminuendo (SCM optional) { return scheme_call_callback(optional, (callback_function)toggle_start_diminuendo); } SCM scheme_ToggleEndDiminuendo (SCM optional) { return scheme_call_callback(optional, (callback_function)toggle_end_diminuendo); } SCM scheme_ToggleGrace (SCM optional) { return scheme_call_callback(optional, (callback_function)toggle_grace); } SCM scheme_ToggleAcciaccatura (SCM optional) { return scheme_call_callback(optional, (callback_function)toggle_acciaccatura); } SCM scheme_ForceCaution (SCM optional) { return scheme_call_callback(optional, (callback_function)force_cautionary); } SCM scheme_ChangePitch (SCM optional) { return scheme_call_callback(optional, (callback_function)change_pitch); } SCM scheme_InsertRhythm (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_rhythm_pattern); } SCM scheme_NextRhythm (SCM optional) { return scheme_call_callback(optional, (callback_function)nextrhythm); } SCM scheme_AppendMeasureAllStaffs (SCM optional) { return scheme_call_callback(optional, (callback_function)append_measure_score); } SCM scheme_ExecuteScheme (SCM optional) { return scheme_call_callback(optional, (callback_function)execute_scheme); } SCM scheme_SharpenEnharmonicSet (SCM optional) { return scheme_call_callback(optional, (callback_function)set_sharper); } SCM scheme_FlattenEnharmonicSet (SCM optional) { return scheme_call_callback(optional, (callback_function)set_flatter); } SCM scheme_New (SCM optional) { return scheme_call_callback(optional, (callback_function)file_newwrapper); } SCM scheme_NewScore (SCM optional) { return scheme_call_callback(optional, (callback_function)new_score_cb); } SCM scheme_Open (SCM optional) { return scheme_call_callback(optional, (callback_function)file_open_with_check); } SCM scheme_ImportLilypond (SCM optional) { return scheme_call_callback(optional, (callback_function)file_import_lilypond_with_check); } SCM scheme_ImportMidi (SCM optional) { return scheme_call_callback(optional, (callback_function)file_import_midi_with_check); } SCM scheme_ImportMusicXml (SCM optional) { return scheme_call_callback(optional, (callback_function)file_import_musicxml_with_check); } SCM scheme_AddStaffs (SCM optional) { return scheme_call_callback(optional, (callback_function)file_add_staffs); } SCM scheme_AddMovements (SCM optional) { return scheme_call_callback(optional, (callback_function)file_add_movements); } SCM scheme_MovementProps (SCM optional) { return scheme_call_callback(optional, (callback_function)movement_props_dialog); } SCM scheme_OpenNewWindow (SCM optional) { return scheme_call_callback(optional, (callback_function)openinnew); } SCM scheme_Save (SCM optional) { return scheme_call_callback(optional, (callback_function)file_savewrapper); } SCM scheme_SaveAs (SCM optional) { return scheme_call_callback(optional, (callback_function)file_saveaswrapper); } SCM scheme_SaveCopy (SCM optional) { return scheme_call_callback(optional, (callback_function)file_copy_save); } SCM scheme_OpenTemplate (SCM optional) { return scheme_call_callback(optional, (callback_function)system_template_open_with_check); } SCM scheme_OpenExample (SCM optional) { return scheme_call_callback(optional, (callback_function)system_example_open_with_check); } SCM scheme_OpenMyTemplate (SCM optional) { return scheme_call_callback(optional, (callback_function)local_template_open_with_check); } SCM scheme_SaveTemplate (SCM optional) { return scheme_call_callback(optional, (callback_function)template_save); } SCM scheme_NewWindow (SCM optional) { return scheme_call_callback(optional, (callback_function)newview); } SCM scheme_InsertMovementBefore (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_movement_before); } SCM scheme_InsertMovementAfter (SCM optional) { return scheme_call_callback(optional, (callback_function)insert_movement_after); } SCM scheme_NewMovement (SCM optional) { return scheme_call_callback(optional, (callback_function)append_new_movement); } SCM scheme_SaveParts (SCM optional) { return scheme_call_callback(optional, (callback_function)file_savepartswrapper); } SCM scheme_ExportMUDELA (SCM optional) { return scheme_call_callback(optional, (callback_function)export_mudela_action); } SCM scheme_ExportPDF (SCM optional) { return scheme_call_callback(optional, (callback_function)export_pdf_action); } SCM scheme_ExportPNG (SCM optional) { return scheme_call_callback(optional, (callback_function)export_png_action); } SCM scheme_ExportMIDI (SCM optional) { return scheme_call_callback(optional, (callback_function)export_midi_action); } SCM scheme_PrintView (SCM optional) { return scheme_call_callback(optional, (callback_function)show_print_view); } SCM scheme_PrintSelection (SCM optional) { return scheme_call_callback(optional, (callback_function)printselection_cb); } SCM scheme_PrintExcerptPreview (SCM optional) { return scheme_call_callback(optional, (callback_function)printexcerptpreview_cb); } SCM scheme_PrintMovement (SCM optional) { return scheme_call_callback(optional, (callback_function)printmovement_cb); } SCM scheme_Print (SCM optional) { return scheme_call_callback(optional, (callback_function)printall_cb); } SCM scheme_PrintPart (SCM optional) { return scheme_call_callback(optional, (callback_function)printpart_cb); } SCM scheme_Close (SCM optional) { return scheme_call_callback(optional, (callback_function)close_gui_with_check); } SCM scheme_Quit (SCM optional) { return scheme_call_callback(optional, (callback_function)closewrapper); } SCM scheme_Undo (SCM optional) { return scheme_call_callback(optional, (callback_function)undowrapper); } SCM scheme_Redo (SCM optional) { return scheme_call_callback(optional, (callback_function)redowrapper); } SCM scheme_Copy (SCM optional) { return scheme_call_callback(optional, (callback_function)copywrapper); } SCM scheme_Cut (SCM optional) { return scheme_call_callback(optional, (callback_function)cutwrapper); } SCM scheme_Paste (SCM optional) { return scheme_call_callback(optional, (callback_function)pastewrapper); } SCM scheme_PasteClipboard (SCM optional) { return scheme_call_callback(optional, (callback_function)paste_clipboard); } SCM scheme_PasteComment (SCM optional) { return scheme_call_callback(optional, (callback_function)paste_comment); } SCM scheme_ScoreProperties (SCM optional) { return scheme_call_callback(optional, (callback_function)score_properties_dialog); } SCM scheme_SaveSelection (SCM optional) { return scheme_call_callback(optional, (callback_function)saveselwrapper); } SCM scheme_Preferences (SCM optional) { return scheme_call_callback(optional, (callback_function)preferences_change); } SCM scheme_SaveAccels (SCM optional) { return scheme_call_callback(optional, (callback_function)save_default_keymap_file_wrapper); } SCM scheme_CommandManagement (SCM optional) { return scheme_call_callback(optional, (callback_function)configure_keyboard_dialog); } SCM scheme_SwapStaffs (SCM optional) { return scheme_call_callback(optional, (callback_function)swapstaffs); } SCM scheme_SplitVoices (SCM optional) { return scheme_call_callback(optional, (callback_function)splitstaffs); } SCM scheme_JoinVoices (SCM optional) { return scheme_call_callback(optional, (callback_function)joinstaffs); } SCM scheme_SwapMovements (SCM optional) { return scheme_call_callback(optional, (callback_function)swapmovements); } SCM scheme_VoiceUp (SCM optional) { return scheme_call_callback(optional, (callback_function)voiceup); } SCM scheme_VoiceDown (SCM optional) { return scheme_call_callback(optional, (callback_function)voicedown); } SCM scheme_MoveToVoiceUp (SCM optional) { return scheme_call_callback(optional, (callback_function)movetovoiceup); } SCM scheme_MoveToVoiceDown (SCM optional) { return scheme_call_callback(optional, (callback_function)movetovoicedown); } SCM scheme_AddBefore (SCM optional) { return scheme_call_callback(optional, (callback_function)staff_new_before); } SCM scheme_AddAfter (SCM optional) { return scheme_call_callback(optional, (callback_function)staff_new_after); } SCM scheme_AddInitial (SCM optional) { return scheme_call_callback(optional, (callback_function)staff_new_initial); } SCM scheme_AddLast (SCM optional) { return scheme_call_callback(optional, (callback_function)staff_new_last); } SCM scheme_DeleteBefore (SCM optional) { return scheme_call_callback(optional, (callback_function)delete_staff_before); } SCM scheme_DeleteStaff (SCM optional) { return scheme_call_callback(optional, (callback_function)delete_staff_current); } SCM scheme_DeleteAfter (SCM optional) { return scheme_call_callback(optional, (callback_function)delete_staff_after); } SCM scheme_AddVoice (SCM optional) { return scheme_call_callback(optional, (callback_function)staff_new_voice); } SCM scheme_StaffProperties (SCM optional) { return scheme_call_callback(optional, (callback_function)staff_properties_change_cb); } SCM scheme_InitialClef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_change_initial); } SCM scheme_InsertClef (SCM optional) { return scheme_call_callback(optional, (callback_function)clef_change_insert); } SCM scheme_InitialKey (SCM optional) { return scheme_call_callback(optional, (callback_function)key_change_initial); } SCM scheme_InsertKey (SCM optional) { return scheme_call_callback(optional, (callback_function)key_change_insert); } SCM scheme_InitialTimeSig (SCM optional) { return scheme_call_callback(optional, (callback_function)timesig_change_initial); } SCM scheme_InsertTimeSig (SCM optional) { return scheme_call_callback(optional, (callback_function)timesig_change_insert); } SCM scheme_ChangeNotehead (SCM optional) { return scheme_call_callback(optional, (callback_function)set_notehead); } SCM scheme_InsertStem (SCM optional) { return scheme_call_callback(optional, (callback_function)stem_directive_insert); } SCM scheme_AddVerse (SCM optional) { return scheme_call_callback(optional, (callback_function)add_verse); } SCM scheme_DeleteVerse (SCM optional) { return scheme_call_callback(optional, (callback_function)delete_verse); } SCM scheme_EditFiguredBass (SCM optional) { return scheme_call_callback(optional, (callback_function)figure_insert); } SCM scheme_DeleteFiguredBass (SCM optional) { return scheme_call_callback(optional, (callback_function)delete_figured_bass); } SCM scheme_DeleteChordSymbols (SCM optional) { return scheme_call_callback(optional, (callback_function)delete_fakechords); } SCM scheme_HideFiguredBass (SCM optional) { return scheme_call_callback(optional, (callback_function)hide_figured_bass); } SCM scheme_ShowFiguredBass (SCM optional) { return scheme_call_callback(optional, (callback_function)show_figured_bass); } SCM scheme_EditChords (SCM optional) { return scheme_call_callback(optional, (callback_function)fakechord_insert); } SCM scheme_EditObject (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_object_type); } SCM scheme_EditCursorObject (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_object); } SCM scheme_EditScoreProperties (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_score_properties); } SCM scheme_EditMovementProperties (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_movement_properties); } SCM scheme_EditStaffProperties (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_staff_properties); } SCM scheme_EditVoiceProperties (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_voice_properties); } SCM scheme_EditDirective (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_object_directive); } SCM scheme_EditStaffDirective (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_staff_directive); } SCM scheme_EditVoiceDirective (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_voice_directive); } SCM scheme_EditScoreDirective (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_score_directive); } SCM scheme_EditMovementDirective (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_movement_directive); } SCM scheme_EditClefDirective (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_clef_directive); } SCM scheme_EditTimesigDirective (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_timesig_directive); } SCM scheme_EditKeysigDirective (SCM optional) { return scheme_call_callback(optional, (callback_function)edit_keysig_directive); } SCM scheme_DeleteDirective (SCM optional) { return scheme_call_callback(optional, (callback_function)delete_chord_or_note_directive); } SCM scheme_GoToMeasure (SCM optional) { return scheme_call_callback(optional, (callback_function)tomeasurenum); } SCM scheme_GoToBeginning (SCM optional) { return scheme_call_callback(optional, (callback_function)tohome); } SCM scheme_GoToEnd (SCM optional) { return scheme_call_callback(optional, (callback_function)toend); } SCM scheme_MoveToBeginning (SCM optional) { return scheme_call_callback(optional, (callback_function)movetostart); } SCM scheme_MoveToEnd (SCM optional) { return scheme_call_callback(optional, (callback_function)movetoend); } SCM scheme_NextMovement (SCM optional) { return scheme_call_callback(optional, (callback_function)next_movement); } SCM scheme_PreviousMovement (SCM optional) { return scheme_call_callback(optional, (callback_function)prev_movement); } SCM scheme_DeleteMovement (SCM optional) { return scheme_call_callback(optional, (callback_function)delete_movement); } SCM scheme_Play (SCM optional) { return scheme_call_callback(optional, (callback_function)ext_midi_playback); } SCM scheme_Stop (SCM optional) { return scheme_call_callback(optional, (callback_function)stop_midi_playback); } SCM scheme_PlaybackProperties (SCM optional) { return scheme_call_callback(optional, (callback_function)playback_properties_change); } SCM scheme_Help (SCM optional) { return scheme_call_callback(optional, (callback_function)browse_manual); } SCM scheme_About (SCM optional) { return scheme_call_callback(optional, (callback_function)about); } SCM scheme_Shortcuts (SCM optional) { return scheme_call_callback(optional, (callback_function)display_shortcuts); } SCM scheme_MoreCommands (SCM optional) { return scheme_call_callback(optional, (callback_function)morecommands); } SCM scheme_MyCommands (SCM optional) { return scheme_call_callback(optional, (callback_function)mycommands); } SCM scheme_FetchCommands (SCM optional) { return scheme_call_callback(optional, (callback_function)fetchcommands); } SCM scheme_ClearOverlay (SCM optional) { return scheme_call_callback(optional, (callback_function)clear_overlay); } SCM scheme_CreateRhythm (SCM optional) { return scheme_call_callback(optional, (callback_function)create_rhythm_cb); } SCM scheme_DeleteRhythm (SCM optional) { return scheme_call_callback(optional, (callback_function)delete_rhythm_cb); } SCM scheme_InsertA (SCM optional) { InsertA (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddNoteA (SCM optional) { AddNoteA (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddA (SCM optional) { AddA (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeToA (SCM optional) { ChangeToA (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_MoveToA (SCM optional) { MoveToA (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertB (SCM optional) { InsertB (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddNoteB (SCM optional) { AddNoteB (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddB (SCM optional) { AddB (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeToB (SCM optional) { ChangeToB (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_MoveToB (SCM optional) { MoveToB (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertC (SCM optional) { InsertC (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddNoteC (SCM optional) { AddNoteC (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddC (SCM optional) { AddC (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeToC (SCM optional) { ChangeToC (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_MoveToC (SCM optional) { MoveToC (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertD (SCM optional) { InsertD (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddNoteD (SCM optional) { AddNoteD (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddD (SCM optional) { AddD (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeToD (SCM optional) { ChangeToD (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_MoveToD (SCM optional) { MoveToD (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertE (SCM optional) { InsertE (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddNoteE (SCM optional) { AddNoteE (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddE (SCM optional) { AddE (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeToE (SCM optional) { ChangeToE (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_MoveToE (SCM optional) { MoveToE (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertF (SCM optional) { InsertF (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddNoteF (SCM optional) { AddNoteF (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddF (SCM optional) { AddF (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeToF (SCM optional) { ChangeToF (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_MoveToF (SCM optional) { MoveToF (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertG (SCM optional) { InsertG (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddNoteG (SCM optional) { AddNoteG (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_AddG (SCM optional) { AddG (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeToG (SCM optional) { ChangeToG (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_MoveToG (SCM optional) { MoveToG (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_0 (SCM optional) { Dur0 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertDur0 (SCM optional) { InsertDur0 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeDur0 (SCM optional) { ChangeDur0 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_SetDur0 (SCM optional) { SetDur0 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertRest0 (SCM optional) { InsertRest0 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_1 (SCM optional) { Dur1 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertDur1 (SCM optional) { InsertDur1 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeDur1 (SCM optional) { ChangeDur1 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_SetDur1 (SCM optional) { SetDur1 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertRest1 (SCM optional) { InsertRest1 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_2 (SCM optional) { Dur2 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertDur2 (SCM optional) { InsertDur2 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeDur2 (SCM optional) { ChangeDur2 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_SetDur2 (SCM optional) { SetDur2 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertRest2 (SCM optional) { InsertRest2 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_3 (SCM optional) { Dur3 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertDur3 (SCM optional) { InsertDur3 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeDur3 (SCM optional) { ChangeDur3 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_SetDur3 (SCM optional) { SetDur3 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertRest3 (SCM optional) { InsertRest3 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_4 (SCM optional) { Dur4 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertDur4 (SCM optional) { InsertDur4 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeDur4 (SCM optional) { ChangeDur4 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_SetDur4 (SCM optional) { SetDur4 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertRest4 (SCM optional) { InsertRest4 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_5 (SCM optional) { Dur5 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertDur5 (SCM optional) { InsertDur5 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeDur5 (SCM optional) { ChangeDur5 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_SetDur5 (SCM optional) { SetDur5 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertRest5 (SCM optional) { InsertRest5 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_6 (SCM optional) { Dur6 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertDur6 (SCM optional) { InsertDur6 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeDur6 (SCM optional) { ChangeDur6 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_SetDur6 (SCM optional) { SetDur6 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertRest6 (SCM optional) { InsertRest6 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_7 (SCM optional) { Dur7 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertDur7 (SCM optional) { InsertDur7 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeDur7 (SCM optional) { ChangeDur7 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_SetDur7 (SCM optional) { SetDur7 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertRest7 (SCM optional) { InsertRest7 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_8 (SCM optional) { Dur8 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertDur8 (SCM optional) { InsertDur8 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_ChangeDur8 (SCM optional) { ChangeDur8 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_SetDur8 (SCM optional) { SetDur8 (NULL, NULL); return SCM_BOOL(TRUE); } SCM scheme_InsertRest8 (SCM optional) { InsertRest8 (NULL, NULL); return SCM_BOOL(TRUE); } denemo-2.2.0/src/scripting/PaxHeaders.19168/scheme-callbacks.c0000644000000000000000000000013213135434036020647 xustar0030 mtime=1500919838.359981805 30 atime=1500919920.636648472 30 ctime=1500919914.283315139 denemo-2.2.0/src/scripting/scheme-callbacks.c0000644000175000017500000055362613135434036022541 0ustar00jjbenhamjjbenham00000000000000#include #include "scripting/scheme-callbacks.h" #include "command/commandfuncs.h" #include "command/grace.h" #include "command/lilydirectives.h" #include "command/lyric.h" #include "command/measure.h" #include "command/object.h" #include "command/processstaffname.h" #include "command/select.h" #include "command/score.h" #include "command/scorelayout.h" #include "core/cache.h" #include "core/utils.h" #include "core/menusystem.h" #include "core/view.h" #include "core/graphicseditor.h" #include "core/keymapio.h" #include "audio/pitchentry.h" #include "command/lilydirectives.h" #include "audio/playback.h" #include "audio/audiointerface.h" #include "export/audiofile.h" #include "export/guidedimportmidi.h" #include "export/print.h" #include "export/exportmidi.h" #include "ui/markup.h" #include "ui/keysigdialog.h" #include "printview/svgview.h" #include "printview/printview.h" #include "printview/markupview.h" #include "display/calculatepositions.h" #include "source/source.h" #include "source/sourceaudio.h" #include "scripting/scheme_cb.h" SCM scheme_call_callback (SCM optional, callback_function callback) { gboolean query = FALSE; DenemoScriptParam param; GString *gstr = NULL; int length; char *str = NULL; if (scm_is_string (optional)) { str = scm_to_locale_stringn (optional, (size_t *) & length); gstr = g_string_new_len (str, length); if (!strncmp ("query", str, 5)) query = TRUE; } param.string = gstr; param.status = FALSE; callback (NULL, ¶m); if (param.status && query) return scm_from_locale_string (gstr->str); if (gstr) g_string_free (gstr, TRUE); return SCM_BOOL (param.status); } SCM ReturnValue = SCM_BOOL_F; static void set_return_value (SCM val) { ReturnValue = val; } static gboolean scm_is_list (SCM scm) { return scm_is_true (scm_list_p (scm)); } SCM scheme_popup_menu (SCM list) { GtkWidget *menu = gtk_menu_new (); set_return_value (SCM_BOOL_F); if (scm_is_list (list)) { gint i; gint length = scm_to_int (scm_length (list)); for (i = 0; i < length; i++) { SCM el = scm_list_ref (list, scm_from_int (i)); if (scm_is_pair (el)) { gchar *label = NULL; gchar *tooltip = NULL; SCM sym; //g_debug("Note that %d is value and %d stringp\n", scm_pair_p(el), scm_string_p(el)); if (scm_is_string (scm_car (el))) { label = scm_to_locale_string (scm_car (el)); sym = scm_cdr (el); } else if (scm_is_pair (scm_car (el))) { label = scm_to_locale_string (scm_caar (el)); tooltip = scm_to_locale_string (scm_cdar (el)); sym = scm_cdr (el); } if (label) { GtkWidget *item = gtk_menu_item_new_with_label (label); if (tooltip) gtk_widget_set_tooltip_text (item, tooltip); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (set_return_value), sym); } else { set_return_value (SCM_BOOL_F); break; } } else if (scm_is_string (el)) { GtkWidget *item = gtk_menu_item_new_with_label (scm_to_locale_string (el)); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (set_return_value), el); } else { set_return_value (SCM_BOOL_F); break; } } gtk_widget_show_all (menu); g_signal_connect (menu, "selection-done", gtk_main_quit, NULL); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); gtk_main (); } return ReturnValue; } static void toggle_value (gboolean * value) { *value = !*value; } void check_all (GtkWidget * button) { GList *children = gtk_container_get_children ((GtkContainer *) gtk_widget_get_parent (button)); for (; children; children = children->next) { GtkWidget *child = children->data; if (GTK_IS_CHECK_BUTTON (child)) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (child), TRUE); } } void uncheck_all (GtkWidget * button) { GList *children = gtk_container_get_children ((GtkContainer *) gtk_widget_get_parent (button)); for (; children; children = children->next) { GtkWidget *child = children->data; if (GTK_IS_CHECK_BUTTON (child)) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (child), FALSE); } } SCM scheme_check_boxes (SCM list, SCM title) { gchar *thetitle = scm_is_string (title) ? scm_to_locale_string (title) : _("Set Values"); GtkWidget *dialog = gtk_dialog_new_with_buttons (thetitle, GTK_WINDOW (Denemo.window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); if (scm_is_list (list)) { gint i; gint length = scm_to_int (scm_length (list)); gboolean *status; status = (gint *) g_malloc0 (length * sizeof (gboolean)); GtkWidget *button = gtk_button_new_with_label (_("Check all")); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (check_all), NULL); gtk_container_add (GTK_CONTAINER (content_area), button); button = gtk_button_new_with_label (_("Un-check all")); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (uncheck_all), NULL); gtk_container_add (GTK_CONTAINER (content_area), button); scm_reverse (list); for (i = 0; i < length; i++) { SCM el = scm_list_ref (list, scm_from_int (i)); if (scm_is_pair (el)) { gchar *label = NULL; if (scm_is_string (scm_car (el))) { label = scm_to_locale_string (scm_car (el)); status[i] = scm_is_true (scm_cdr (el)); } if (label) { GtkWidget *item = gtk_check_button_new_with_label (label); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), status[i]); gtk_container_add (GTK_CONTAINER (content_area), item); g_signal_connect_swapped (G_OBJECT (item), "toggled", G_CALLBACK (toggle_value), &status[i]); } else { return SCM_BOOL_F; } } } gtk_widget_show_all (dialog); gint result = gtk_dialog_run (GTK_DIALOG (dialog)); switch (result) { case GTK_RESPONSE_ACCEPT: for (i = 0; i < length; i++) { scm_list_set_x (list, scm_from_int (i), scm_cons (scm_car (scm_list_ref (list, scm_from_int (i))), scm_from_bool (status[i]))); } g_free (status); break; default: gtk_widget_destroy (dialog); return SCM_BOOL_F; } gtk_widget_destroy (dialog); } return list; } SCM scheme_create_palette_button (SCM palette, SCM lbl, SCM tltp, SCM scrp) { SCM ret; gchar *name = scm_to_locale_string (palette); gchar *label = scm_to_locale_string (lbl); gchar *tooltip = scm_to_locale_string (tltp); gchar *script = scm_to_locale_string (scrp); DenemoPalette *pal = create_palette (name, FALSE, TRUE); ret = palette_add_button (pal, label, tooltip, script) ? SCM_BOOL_T : SCM_BOOL_F; gtk_widget_show_all (gtk_widget_get_parent (pal->box)); free (name); free (label); free (tooltip); free (script); return ret; } SCM scheme_set_palette_shape (SCM palette, SCM horizontal, SCM limit) { gchar *name = scm_to_locale_string (palette); gboolean horiz = scm_is_true (horizontal); gint lim = scm_to_int (limit); DenemoPalette *pal = create_palette (name, FALSE, horiz); free (name); if (lim > 0) { pal->limit = lim; pal->rows = horiz; repack_palette (pal); return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_show_palettes (SCM option, SCM show) { if (scm_is_true (option)) { gchar *name; if (scm_is_string (option)) { name = scm_to_locale_string (option); DenemoPalette *pal = get_palette (name); if (pal == NULL) { mergePalette ((const gchar *) name); pal = get_palette (name); } if (pal) { if (!scm_is_false (show)) { gtk_widget_show (gtk_widget_get_parent (pal->box)); gtk_widget_show_all (pal->box); } else { gtk_widget_hide (pal->box); gtk_widget_hide (gtk_widget_get_parent (pal->box)); } return SCM_BOOL_T; } else { return SCM_BOOL_F; } } else { name = choose_palette_by_name (FALSE, TRUE); if (name) { DenemoPalette *pal = get_palette (name); if (pal) { gtk_widget_show (gtk_widget_get_parent (pal->box)); gtk_widget_show_all (pal->box); return SCM_BOOL_T; } else { return SCM_BOOL_F; } } } } else { if (Denemo.palettes) { GList *g; for (g = Denemo.palettes; g; g = g->next) { DenemoPalette *pal = (DenemoPalette *) g->data; if (!scm_is_false (show)) { gtk_widget_show (gtk_widget_get_parent (pal->box)); gtk_widget_show_all (pal->box); } else { gtk_widget_hide (pal->box); gtk_widget_hide (gtk_widget_get_parent (pal->box)); } } return SCM_BOOL_T; } else return SCM_BOOL_F; } return SCM_BOOL_F; } SCM scheme_select_palette (SCM aname) { gchar *name = NULL; if (scm_is_string (aname)) name = scm_to_locale_string (aname); else if (!SCM_UNBNDP (aname)) name = choose_palette_by_name (FALSE, FALSE); if (name) { DenemoPalette *pal = get_palette (name); if (pal) Denemo.currentpalette = pal; } if (Denemo.currentpalette) return scm_from_locale_string (Denemo.currentpalette->name); return SCM_BOOL_F; } static gint flash_input_cursor (void) { if (Denemo.input_filters->len > 0) { if (g_str_has_suffix (Denemo.input_filters->str, "|")) g_string_truncate (Denemo.input_filters, Denemo.input_filters->len - 1); else g_string_append_c (Denemo.input_filters, '|'); } write_input_status (); return TRUE; } static void choose_palette (GtkWidget * button) { GtkWidget *win = gtk_widget_get_toplevel (button); gchar *name = choose_palette_by_name (FALSE, FALSE); if (name) { DenemoPalette *pal = get_palette (name); if (pal) { Denemo.currentpalette = pal; gtk_window_set_title (GTK_WINDOW (win), pal->name); } } } static gboolean check_character (GtkWidget * entry, GdkEventKey * event, GtkWidget * dialog) { if (event->keyval == GDK_KEY_Tab) { choose_palette (entry); return TRUE; } if (event->keyval == GDK_KEY_Return) { gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); return TRUE; } return FALSE; } static gchar * label_entry (gchar * wlabel, gchar * direction) { GtkWidget *dialog; GtkWidget *entry; GtkWidget *label; gchar *entry_string; GString *string; entry = gtk_entry_new (); dialog = gtk_dialog_new (); gtk_window_set_title ((GtkWindow *) dialog, wlabel); gtk_window_set_transient_for ((GtkWindow *) dialog, GTK_WINDOW (Denemo.window)); gtk_window_set_destroy_with_parent ((GtkWindow *) dialog, TRUE); g_signal_connect (G_OBJECT (entry), "key-press-event", G_CALLBACK (check_character), dialog); label = gtk_label_new (direction); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), label); gtk_container_add (GTK_CONTAINER (content_area), entry); label = gtk_label_new (_("Use to switch palette\nto activate")); gtk_container_add (GTK_CONTAINER (content_area), label); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE); gtk_widget_show_all (dialog); gtk_widget_grab_focus (entry); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { entry_string = (gchar *) gtk_entry_get_text (GTK_ENTRY (entry)); string = g_string_new (entry_string); gtk_widget_destroy (dialog); return g_string_free (string, FALSE); } else { gtk_widget_destroy (dialog); return NULL; } return NULL; } SCM scheme_activate_palette_button (void) { GdkEventKey event; GString *input = g_string_new (""); SCM ret = SCM_BOOL_F; gint id = 0; if (Denemo.palettes) { DenemoPalette *pal = Denemo.currentpalette; if (pal == NULL) pal = (DenemoPalette *) Denemo.palettes->data; gchar *str = label_entry (pal->name, _("Key in (part of) label")); pal = Denemo.currentpalette; if (str) { g_string_assign (input, str); g_free (str); if (input->len && palette_action_button (pal, input->str)) { ret = SCM_BOOL_T; } else { infodialog (_("No such label")); gtk_widget_show (gtk_widget_get_parent (pal->box)); gtk_widget_show_all (pal->box); } } } return ret; } SCM scheme_get_offset (void) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else gdouble offsetx, offsety; if (get_offset (&offsetx, &offsety)) { offsetx *= 100; offsety *= 100; offsetx = floor (offsetx); offsety = floor (offsety); offsetx /= 100; offsety /= 100; return scm_cons (scm_from_double (offsetx), scm_from_double (offsety)); } #endif return SCM_BOOL_F; } SCM scheme_get_control_point (SCM pt) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else if (scm_is_integer (pt)) { gint which = scm_to_int (pt); if (which > 0 && which < 5) return SCM_BOOL (get_control_point (which)); } #endif return SCM_BOOL_F; } static void prec (gdouble * val) { *val = round ((*val) * 100.0) / 100; } SCM scheme_get_curve (void) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else gdouble x1, y1, x2, y2, x3, y3, x4, y4; if (get_curve (&x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4)) { prec (&x1); prec (&y1); prec (&x2); prec (&y2); prec (&x3); prec (&y3); prec (&x4); prec (&y4); return scm_list_n (scm_cons (scm_from_double (x1), scm_from_double (y1)), scm_cons (scm_from_double (x2), scm_from_double (y2)), scm_cons (scm_from_double (x3), scm_from_double (y3)), scm_cons (scm_from_double (x4), scm_from_double (y4)), SCM_UNDEFINED); } #endif return SCM_BOOL_F; } SCM scheme_get_positions (SCM is_slur) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else gdouble neary, fary; if (get_positions (&neary, &fary, scm_is_true (is_slur) ? Slur : Beam)) { return scm_cons (scm_from_double (neary), scm_from_double (fary)); } #endif return SCM_BOOL_F; } SCM scheme_get_new_target (void) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); return SCM_BOOL_F; #else return scm_from_bool (get_new_target ()); #endif } SCM scheme_get_new_point (void) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); return SCM_BOOL_F; #else return scm_from_bool (get_new_point ()); #endif } SCM scheme_get_reference_point (void) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); return SCM_BOOL_F; #else return scm_from_bool (get_reference_point ()); #endif } SCM scheme_get_target_info (void) { DenemoMovement *si = Denemo.project->movement; if (Denemo.project->movement->currentobject == NULL) return SCM_BOOL_F; SCM type = SCM_BOOL_F, grob = SCM_BOOL_F, tag = SCM_BOOL_F; switch (si->target.type) { case TARGET_NONE: type = SCM_BOOL_F; break; case TARGET_OBJECT: type = scm_from_locale_string ("Object"); break; case TARGET_CHORD: type = scm_from_locale_string ("Chord"); break; case TARGET_NOTE: type = scm_from_locale_string ("Note"); break; case TARGET_SLUR: type = scm_from_locale_string ("Slur"); break; case TARGET_TIE: type = scm_from_locale_string ("Tie"); break; case TARGET_CRESC: type = scm_from_locale_string ("Cresc"); break; case TARGET_DIM: type = scm_from_locale_string ("Dim"); break; default: g_warning ("Unknown target type %d", si->target.type); type = SCM_BOOL_F; break; } if (si->target.type == TARGET_NOTE) { DenemoObject *obj = si->currentobject->data; if (obj->type == CHORD) { chord *thechord = ((chord *) ((DenemoObject *) obj->object)); if (thechord->figure) grob = scm_from_locale_string ("BassFigure"); } } if (si->target.directivenum || (si->target.type == TARGET_OBJECT)) { DenemoDirective *directive = NULL; DenemoObject *obj = si->currentobject->data; if (si->target.type == TARGET_CHORD) { if (obj->type == CHORD) { GList *directives = ((chord *) ((DenemoObject *) obj->object))->directives; if (directives) { directive = (DenemoDirective *) g_list_nth_data (directives, si->target.directivenum - 1); } } } else if (si->target.type == TARGET_NOTE) { if (obj->type == CHORD) { directive = get_note_directive_number (si->target.directivenum); } } else if (si->target.type == TARGET_OBJECT) { if (obj->type == LILYDIRECTIVE) directive = (DenemoDirective *) obj->object; } if (directive) { if (directive->grob) { grob = scm_from_locale_string (directive->grob->str); } else grob = SCM_BOOL_F; } if (directive && directive->tag) { tag = scm_from_locale_string (directive->tag->str); } } return scm_list_n (type, grob, tag, SCM_UNDEFINED); } //FIXME inelegant! static gint interpret_lilypond_notename (gchar * x, gint * mid_c_offset, gint * enshift) { //g_debug("Mid c offset of %d\n", *x-'c'); gchar *c; gint octave = -1; /* middle c is c' */ gint accs = 0; for (c = x + 1; *c; c++) { if (*c == 'i' && *(c + 1) == 's') { accs++; c++; } else if (*c == 'e' && *(c + 1) == 's') { accs--; c++; } else if (*c == ',') { octave--; } else if (*c == '\'') { octave++; } } if (*x == 'a' || *x == 'b') octave++; *mid_c_offset = *x - 'c' + 7 * octave; *enshift = accs; return *mid_c_offset; } static gint lilypond_to_enshift (gchar * enshift_name) { gint enshift = 0; gchar *c; for (c = enshift_name; *c; c++) { if (*c == 'i' && *(c + 1) == 's') { enshift++; c++; } else if (*c == 'e' && *(c + 1) == 's') { enshift--; c++; } } return enshift; } /* execute init script local dir for menupath or fallback on system dir */ SCM scheme_execute_init (gchar * menupath) { GList *dirs = NULL; dirs = g_list_append (dirs, g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", menupath, NULL)); dirs = g_list_append (dirs, g_build_filename (get_system_data_dir (), COMMANDS_DIR, "menus", menupath, NULL)); gchar *path = find_path_for_file (INIT_SCM, dirs); if (path) { g_message ("About to load from %s", path); eval_file_with_catch (path); //ret = scm_c_primitive_load(filename); } return SCM_BOOL (TRUE); } void execute_init_scripts (gchar * menupath) { (void) scheme_execute_init (menupath); } /* called by a script if it requires initialization the initialization script is expected to be in init.scm in the menupath of the action that invoked the script*/ SCM scheme_initialize_script (SCM action_name) { SCM ret = SCM_BOOL_T; char *name = scm_to_locale_string (action_name); gint idx = lookup_command_from_name (Denemo.map, name); command_row *row = NULL; if (keymap_get_command_row (Denemo.map, &row, idx)) ret = scheme_execute_init (row->menupath); if (name) free (name); return ret; } /* pass in a path (from below menus) to a command script. Loads the command from .denemo or system * if it can be found * It is used at startup in .denemo files like ReadingNoteNames.denemo * which executes (d-LoadCommand "MainMenu/Educational/ReadingNoteNames") * to ensure that the command it needs is in the command set. */ SCM scheme_load_command (SCM command) { gboolean ret; char *name; name = scm_to_locale_string (command); GList *files = NULL; files = g_list_append (files, g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", name, NULL)); files = g_list_append (files, g_build_filename (get_user_data_dir (TRUE), "download", COMMANDS_DIR, name, NULL)); files = g_list_append (files, g_build_filename (get_system_data_dir (), COMMANDS_DIR, name, NULL)); ret = load_keymap_files (files); if (name) free (name); return SCM_BOOL (ret); } SCM scheme_activate_menu_item (SCM menupath) { if (scm_is_string (menupath)) { char *item; item = scm_to_locale_string (menupath); if (item) { gboolean ret = activate_action (item) ? TRUE : FALSE; free (item); return SCM_BOOL (ret); } } return SCM_BOOL_F; } SCM scheme_hide_buttons (SCM hide) { SCM ret = SCM_BOOL_F; GtkWidget *widget = Denemo.project->buttonbox; if (GTK_IS_CONTAINER (widget)) { ret = SCM_BOOL_T; if (scm_is_false (hide)) gtk_container_foreach (GTK_CONTAINER (widget), (GtkCallback) gtk_widget_show, NULL); else gtk_container_foreach (GTK_CONTAINER (widget), (GtkCallback) gtk_widget_hide, NULL); } return ret; } SCM scheme_destroy_buttons (void) { SCM ret = SCM_BOOL_F; GtkWidget *widget = Denemo.project->buttonbox; if (GTK_IS_CONTAINER (widget)) { gtk_container_foreach (GTK_CONTAINER (widget), (GtkCallback) gtk_widget_destroy, NULL); ret = SCM_BOOL_T; } return ret; } /* hide all menus, leaving only the score titles, used for educational games */ SCM scheme_hide_menus (SCM hide) { if (Denemo.project->view != DENEMO_MENU_VIEW) { set_toggle (ToggleScoreTitles_STRING, FALSE); ToggleReduceToDrawingArea (NULL, NULL); return SCM_BOOL (TRUE); } gboolean show = FALSE; if (scm_is_false (hide)) show = TRUE; if (!Denemo.non_interactive) { toggle_to_drawing_area (show); set_toggle (ToggleScoreTitles_STRING, FALSE); } return SCM_BOOL (TRUE); } SCM scheme_hide_window (SCM hide) { gboolean show = FALSE; gboolean showing = gtk_widget_get_visible (Denemo.window); if (scm_is_false (hide)) show = TRUE; if (show) gtk_widget_show (Denemo.window); else gtk_widget_hide (Denemo.window); return SCM_BOOL (showing == show); } /* when a script calls a command which is itself a script it comes through here */ SCM scheme_script_callback (SCM script, SCM params) { char *name = NULL; SCM ret = SCM_BOOL_F; if (scm_is_string (script)) { name = scm_to_locale_string (script); gint idx = lookup_command_from_name (Denemo.map, name); if (name) { if (!is_action_name_builtin (name)) { gchar *paramvar = g_strdup_printf ("%s::params", name); scm_c_define (paramvar, params); gchar *text = get_scheme_from_idx (idx); if (text) { //undo is a queue so this is the end :) stage_undo (Denemo.project->movement, ACTION_STAGE_END); ret = SCM_BOOL (!call_out_to_guile (text)); stage_undo (Denemo.project->movement, ACTION_STAGE_START); } else if (!Denemo.non_interactive) { DenemoAction *action = lookup_action_from_name (name); ret = SCM_BOOL (activate_script (action, NULL)); } else g_warning ("Could not execute %s script", name); scm_c_define (paramvar, SCM_BOOL_F); g_free (paramvar); } if (name) free (name); } } return ret; } void create_scheme_function_for_script (gchar * name) { gchar *proc = g_strdup_printf ("(d-%s #:optional params)", name); gchar *value = g_strdup_printf ("(d-ScriptCallback \"%s\" params)", name); gchar *def = g_strdup_printf ("(define %s::params #f) (define* %s %s)", name, proc, value); //g_debug("Defining %s\n", def); call_out_to_guile (def); g_free (proc); g_free (value); g_free (def); // define_scheme_literal_variable(proc, value, "A scheme procedure to call the script of that name"); } SCM scheme_debug_object (SCM optional) { DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data)) return SCM_BOOL (FALSE); g_debug ("*************\nType = %d\nbasic_durinticks = %d\ndurinticks - %d\nstarttickofnextnote = %d\n***********\n", curObj->type, curObj->basic_durinticks, curObj->durinticks, curObj->starttickofnextnote); return SCM_BOOL (TRUE); } SCM scheme_display_object (void) { DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data)) return SCM_BOOL (FALSE); display_current_object (); return SCM_BOOL (TRUE); } SCM scheme_get_editing_time (void) { SCM ret; gchar *edit_time = time_spent_editing (); ret = scm_from_locale_string (edit_time); g_free (edit_time); return ret; } SCM scheme_destroy_scheme_init (void) { if (confirm (_("Destroying Customized Buttons"), _("Remove buttons and other customized scheme on startup?"))) { destroy_local_scheme_init (); return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_load_keybindings (SCM name) { char *filename; if (scm_is_string (name)) { filename = scm_to_locale_string (name); GList *files = NULL; files = g_list_append (files, g_strdup (filename)); files = g_list_append (files, g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, filename, NULL)); files = g_list_append (files, g_build_filename (get_user_data_dir (TRUE), "download", COMMANDS_DIR, filename, NULL)); files = g_list_append (files, g_build_filename (get_system_data_dir (), COMMANDS_DIR, filename, NULL)); g_free (name); return SCM_BOOL (load_keymap_files (files)); } //if (name) g_free(name); CHECKME return SCM_BOOL_F; } SCM scheme_save_keybindings (SCM name) { char *filename; if (scm_is_string (name)) { filename = scm_to_locale_string (name); if (save_xml_keybindings (filename) == 0) { if (filename) free (filename); return SCM_BOOL_T; } } return SCM_BOOL_F; } SCM scheme_clear_keybindings (SCM optional) { keymap_clear_bindings (Denemo.map); return SCM_BOOL_T; } SCM scheme_load_commandset (SCM name) { char *filename; if (scm_is_string (name)) { filename = scm_to_locale_string (name); if (load_xml_keymap (filename) == 0) { if (filename) free (filename); return SCM_BOOL_T; } } return SCM_BOOL_F; } SCM scheme_push_clipboard (SCM optional) { push_clipboard (); return SCM_BOOL_T; } SCM scheme_pop_clipboard (SCM optional) { if (pop_clipboard ()) return SCM_BOOL_T; else return SCM_BOOL_F; } SCM scheme_delete_selection (SCM optional) { if ((!Denemo.project->movement) || (!Denemo.project->movement->markstaffnum)) return SCM_BOOL_F; delete_selection (); return SCM_BOOL_T; } SCM scheme_set_thumbnail_selection (SCM optional) { if ((!Denemo.project->movement) || (!Denemo.project->movement->markstaffnum)) return SCM_BOOL_F; if (Denemo.project->movement == Denemo.project->movements->data) { memcpy (&Denemo.project->thumbnail, &Denemo.project->movement->selection, sizeof (DenemoSelection)); return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_set_newbie (SCM optional) { SCM ret = SCM_BOOL (Denemo.prefs.newbie); if (scm_is_true (optional)) { Denemo.prefs.tooltip_timeout = 1000; Denemo.prefs.tooltip_browse_timeout = 700; Denemo.prefs.tooltip_browse_mode_timeout = 1000; Denemo.prefs.learning = 1; Denemo.prefs.newbie = 1; } else { Denemo.prefs.tooltip_timeout = Denemo.prefs.tooltip_browse_timeout = 2000; Denemo.prefs.newbie = 0; gtk_widget_set_tooltip_text (Denemo.scorearea, NULL); } return ret; } SCM scheme_get_checksum (SCM str) { SCM ret = SCM_BOOL_F; if (scm_is_string (str)) { gchar *chk; gchar *thestring = scm_to_locale_string (str); chk = g_compute_checksum_for_string (G_CHECKSUM_MD5, thestring, -1); ret = scm_from_locale_string (chk); g_free (chk); } return ret; } SCM scheme_create_thumbnail (SCM optional, SCM filename) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); return SCM_BOOL_F; #else gchar *path = scm_is_string (filename) ? scm_to_locale_string (filename) : NULL; gboolean ret; if ((!SCM_UNBNDP (optional)) && scm_is_true (optional)) ret = create_thumbnail (TRUE, path); else ret = create_thumbnail (FALSE, path); return SCM_BOOL (ret); #endif } SCM scheme_exit (SCM optional) { exit (0); } SCM scheme_create_layout (SCM name) { if (scm_is_string (name)) { gchar *layout_name = scm_to_locale_string (name); return scm_from_bool (create_custom_scoreblock (layout_name, TRUE)); } return SCM_BOOL_F; } SCM scheme_delete_layout (SCM name) { if (scm_is_string (name)) { gchar *layout_name = scm_to_locale_string (name); return scm_from_bool (delete_custom_scoreblock (layout_name)); } return SCM_BOOL_F; } SCM scheme_lilypond_for_part (void) { gint save = Denemo.project->movement->markstaffnum; Denemo.project->movement->markstaffnum = 0; if (!select_custom_layout_for_name (((DenemoStaff *) (Denemo.project->movement->currentstaff->data))->lily_name->str)) generate_lilypond_part (); Denemo.project->movement->markstaffnum = save; return SCM_BOOL_T; } SCM scheme_typeset_part (void) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); return SCM_BOOL_F; #else typeset_part (); return SCM_BOOL_T; #endif } SCM scheme_reduce_layout_to_lilypond (void) { make_scoreblock_editable (); return SCM_BOOL_T; } SCM scheme_get_current_staff_layout_id (void) { guint id; if (((DenemoStaff *) (Denemo.project->movement->currentstaff->data))->voicecontrol == DENEMO_PRIMARY) { id = get_layout_id_for_name (((DenemoStaff *) (Denemo.project->movement->currentstaff->data))->lily_name->str); return scm_from_int (id); } return SCM_BOOL_F; } SCM scheme_get_layout_id (void) { DenemoScoreblock *sb = (DenemoScoreblock *) selected_scoreblock (); if (sb) return scm_from_int (sb->id); return SCM_BOOL_F; } SCM scheme_select_layout_id (SCM the_id) { if (scm_is_integer (the_id)) { gint id = scm_to_int (the_id); return SCM_BOOL (select_layout_id (id)); } return SCM_BOOL_F; } SCM scheme_select_default_layout (void) { select_default_scoreblock (); return SCM_BOOL_T; } SCM scheme_get_layout_name (void) { DenemoScoreblock *sb = (DenemoScoreblock *) selected_scoreblock (); if (sb && sb->name) return scm_from_locale_string (sb->name); return SCM_BOOL_F; } SCM scheme_select_next_layout (void) { if (gtk_widget_get_visible (Denemo.project->score_layout)) { DenemoScoreblock *sb = (DenemoScoreblock *) get_next_scoreblock (); return sb ? SCM_BOOL_T : SCM_BOOL_F; } return SCM_BOOL_F; } SCM scheme_select_first_layout (void) { if (gtk_widget_get_visible (Denemo.project->score_layout)) { DenemoScoreblock *sb = (DenemoScoreblock *) get_first_scoreblock (); return sb ? SCM_BOOL_T : SCM_BOOL_F; } return SCM_BOOL_F; } SCM scheme_select_next_custom_layout (void) { return SCM_BOOL (iterate_custom_layout (FALSE)); } SCM scheme_select_first_custom_layout (void) { return SCM_BOOL (iterate_custom_layout (TRUE)); } SCM scheme_get_filename (void) { if (Denemo.project && Denemo.project->filename && Denemo.project->filename->len && strcmp ("Unnamed", Denemo.project->filename->str)) return scm_from_locale_string (Denemo.project->filename->str); return SCM_BOOL_F; } SCM scheme_path_from_filename (SCM filepath) { SCM ret = SCM_BOOL_F; if (scm_is_string (filepath)) { char *temp = scm_to_locale_string (filepath); gchar *dirname = g_path_get_dirname (temp); free (temp); ret = scm_from_locale_string (dirname); g_free (dirname); } return ret; } SCM scheme_filename_from_path (SCM filepath) { SCM ret = SCM_BOOL_F; if (scm_is_string (filepath)) { char *temp = scm_to_locale_string (filepath); gchar *dirname = g_path_get_basename (temp); free (temp); ret = scm_from_locale_string (dirname); g_free (dirname); } return ret; } SCM scheme_file_exists (SCM filepath) { SCM ret = SCM_BOOL_F; if (scm_is_string (filepath)) { char *temp = scm_to_locale_string (filepath); return SCM_BOOL (g_file_test (temp, G_FILE_TEST_EXISTS)); } return ret; } SCM scheme_choose_file (SCM title, SCM startdir, SCM list) { gchar *thetitle = g_strdup (_("Choose File")); gchar *thedir = get_project_dir (); GList *exts = NULL; gchar *filename; SCM ret = SCM_BOOL_F; if (scm_is_string (title)) { char *temp = scm_to_locale_string (title); thetitle = g_strdup (temp); free (temp); } if (scm_is_string (startdir)) { char *temp = scm_to_locale_string (startdir); g_free (thedir); thedir = g_strdup (temp); free (temp); } if (scm_is_list (list)) { gint length = scm_to_int (scm_length (list)); int i; for (i = 0; i < length; i++) { SCM glob = scm_list_ref (list, scm_from_int (i)); if (scm_is_string (glob)) { char *extension = scm_to_locale_string (glob); exts = g_list_append (exts, g_strdup (extension)); free (extension); } } } filename = choose_file (thetitle, thedir, exts); g_free (thetitle); g_free (thedir); g_list_free_full (exts, g_free); if (filename) ret = scm_from_locale_string (filename); g_free (filename); return ret; } SCM scheme_edit_graphics (SCM name, SCM newname) { SCM ret = SCM_BOOL_F; gchar *opened = NULL; gchar *thenewname = NULL; if (scm_is_string (newname)) thenewname = scm_to_locale_string (newname); if (scm_is_string (name)) { gchar *filename = scm_to_locale_string (name); opened = edit_graphics_file (filename, thenewname); free (filename); } else { opened = edit_graphics_file (NULL, thenewname); } if (opened) ret = scm_from_locale_string (opened); g_free (opened); if (thenewname) free (thenewname); return ret; } SCM scheme_open_source (SCM link) { SCM ret = SCM_BOOL_F; #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else if (scm_is_string (link)) { gchar *thestring = scm_to_locale_string (link); gchar *filename; #ifdef G_OS_WIN32 filename = thestring; (void) strtok (thestring + 2, ":"); //skip leading drive name on windows #else filename = strtok (thestring, ":"); //will not work if filename contains ':' characters. #endif if (filename) { gint x, y, page; gchar *xstr = strtok (NULL, ":"); gchar *ystr = strtok (NULL, ":"); gchar *pstr = strtok (NULL, ":"); x = xstr ? atoi (xstr) : 0; y = ystr ? atoi (ystr) : 0; page = pstr ? atoi (pstr) : 0; if (open_source (filename, x, y, page)) ret = SCM_BOOL_T; } if (thestring) free (thestring); } #endif return ret; } SCM scheme_open_source_file (SCM optional) { if (open_source_file ()) return SCM_BOOL_T; return SCM_BOOL_F; } SCM scheme_open_proofread_file (SCM optional) { if (open_proof_file ()) return SCM_BOOL_T; return SCM_BOOL_F; } #ifdef DISABLE_AUBIO #else SCM scheme_export_recorded_audio (void) { return SCM_BOOL (export_recorded_audio ()); } SCM scheme_open_source_audio_file (SCM optional) { if (open_source_audio_file () && Denemo.project->movement->recording && Denemo.project->movement->recording->samplerate) { return scm_from_double (Denemo.project->movement->recording->nframes / (double) Denemo.project->movement->recording->samplerate); } return SCM_BOOL_F; } SCM scheme_close_source_audio (SCM optional) { return SCM_BOOL (close_source_audio ()); } SCM scheme_start_audio_play (SCM annotate) { if (Denemo.project->movement->recording) { start_audio_playing (scm_is_true (annotate)); return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_set_audio_lead_in (SCM seconds) { if (scm_is_real (seconds)) { gdouble secs = scm_to_double (seconds); return SCM_BOOL (set_lead_in (secs)); } return SCM_BOOL_F; } SCM scheme_stop_audio_play (SCM annotate) { if (audio_is_playing ()) { stop_audio_playing (); return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_audio_is_playing (void) { return SCM_BOOL (audio_is_playing ()); } SCM scheme_next_audio_timing (SCM optional) { if (Denemo.project->movement->recording) { gdouble timing = get_audio_timing (); if (timing > 0.0) return scm_from_double (timing); } return SCM_BOOL_F; } #endif SCM scheme_take_snapshot (SCM optional) { return SCM_BOOL (take_snapshot ()); } SCM scheme_increase_guard (SCM optional) { if (Denemo.project->movement->undo_guard++) return SCM_BOOL_F; return SCM_BOOL_T; } SCM scheme_decrease_guard (SCM optional) { if (Denemo.project->movement->undo_guard > 0) return SCM_BOOL (!--Denemo.project->movement->undo_guard); Denemo.project->movement->undo_guard = 0; return SCM_BOOL_T; } //From a script undo must undo only the modifications to the start of the //script, and push another STAGE_END for the end of the actions that it will do //after the invocation of undo. This function overrides the built-in undo called //directly by the user. SCM scheme_undo (SCM optional) { stage_undo (Denemo.project->movement, ACTION_STAGE_START); undowrapper (NULL, NULL); stage_undo (Denemo.project->movement, ACTION_STAGE_END); return SCM_BOOL_T; } //Break the script up for undo purposes SCM scheme_stage_for_undo (SCM optional) { stage_undo (Denemo.project->movement, ACTION_STAGE_START); stage_undo (Denemo.project->movement, ACTION_STAGE_END); return SCM_BOOL_T; } SCM scheme_get_last_change (SCM optional) { SCM ret = SCM_BOOL_F; gchar *last = get_last_change (Denemo.project->movement); if (last) ret = scm_from_locale_string (last); g_free (last); return ret; } SCM scheme_new_window (SCM optional) { stage_undo (Denemo.project->movement, ACTION_STAGE_START); //gint current = Denemo.project->scorearea->allocation.width; newview (NULL, NULL); // Denemo.project->scorearea->allocation.width = current; stage_undo (Denemo.project->movement, ACTION_STAGE_END); return SCM_BOOL_T; } SCM scheme_zoom (SCM factor) { if (scm_is_real (factor)) Denemo.project->movement->zoom = scm_to_double (factor); else if (scm_is_string (factor)) { char *name; name = scm_to_locale_string (factor); if (name) { Denemo.project->movement->zoom = atof (name); free (name); } } else { return scm_from_double (Denemo.project->movement->zoom); } scorearea_configure_event (Denemo.scorearea, NULL); if (Denemo.project->movement->zoom > 0.01) { return scm_from_int (Denemo.project->movement->zoom); } Denemo.project->movement->zoom = 1.0; return SCM_BOOL_F; } SCM scheme_master_tempo (SCM factor) { DenemoMovement *si = Denemo.project->movement; gdouble request_time = get_time (); gdouble duration = request_time - si->tempo_change_time; si->start_player += duration * (1.0 - si->master_tempo); if (scm_is_real (factor)) si->master_tempo = scm_to_double (factor); else if (scm_is_string (factor)) { char *name; name = scm_to_locale_string (factor); if (name) { si->master_tempo = atof (name); free (name); } } else { return scm_from_double (si->master_tempo); } if (si->master_tempo < 0.0) si->master_tempo = 1.0; si->tempo_change_time = request_time; return scm_from_double (si->master_tempo); } SCM scheme_movement_tempo (SCM bpm) { DenemoMovement *si = Denemo.project->movement; if (scm_is_real (bpm)) si->tempo = scm_to_int (bpm); if (scm_is_string (bpm)) { char *name; name = scm_to_locale_string (bpm); if (name) { gdouble tempo = atof (name); si->tempo = tempo; set_master_tempo (si, si->master_tempo); free (name); } } if (si->tempo < 1) si->tempo = 120; return scm_from_int (si->tempo); } SCM scheme_master_volume (SCM factor) { DenemoMovement *si = Denemo.project->movement; if (scm_is_real (factor)) si->master_volume = scm_to_double (factor); if (scm_is_string (factor)) { char *name; name = scm_to_locale_string (factor); if (name) { si->master_volume = atof (name); free (name); } } if (si->master_volume < 0.0) si->master_volume = 1.0; return scm_from_double (si->master_volume); } SCM scheme_staff_master_volume (SCM level) { DenemoStaff *thestaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (scm_is_real (level)) { gdouble master_volume = scm_to_double (level); thestaff->volume = (gint) (master_volume * 127); if (thestaff->volume > 127) thestaff->volume = 127; if (thestaff->volume < 0) thestaff->volume = 0; return scm_from_double (thestaff->volume / 127.0); } if (scm_is_false (level)) { thestaff->mute = TRUE; return scm_from_double (-thestaff->volume / 127.0); } if (level == SCM_UNDEFINED) return thestaff->mute ? scm_from_double (-thestaff->volume / 127.0) : scm_from_double (thestaff->volume / 127.0); thestaff->mute = FALSE; return scm_from_double (thestaff->volume / 127.0); } SCM scheme_get_midi_tuning (void) { gchar *cents = get_cents_string (); SCM ret = scm_from_locale_string (cents); g_free (cents); return ret; } SCM scheme_get_sharpest (void) { gchar *name = get_sharpest (); SCM ret = scm_from_locale_string (name); g_free (name); return ret; } SCM scheme_get_flattest (void) { gchar *name = get_flattest (); SCM ret = scm_from_locale_string (name); g_free (name); return ret; } SCM scheme_get_temperament (void) { gchar *name = get_temperament_name (); SCM ret = scm_from_locale_string (name); g_free (name); return ret; } static SCM ignore_handler (gchar * data SCM_UNUSED, SCM tag, SCM throw_args SCM_UNUSED) { // g_warning("ignoring throw"); return SCM_BOOL_F; } void set_meantone_tuning (gint step) { SCM thestep = scm_from_int (step); if (SCM_BOOL_F == scm_internal_catch (SCM_BOOL_T, (scm_t_catch_body) scm_c_lookup, (void *) "SetQuarterCommaMeanTone", (scm_t_catch_handler) ignore_handler, (void *) "whoops")) return; SCM func_symbol = scm_c_lookup ("SetQuarterCommaMeanTone"); SCM func = scm_variable_ref (func_symbol); scm_call_1 (func, thestep); } SCM scheme_set_enharmonic_position (SCM position) { if (scm_is_integer (position)) { gint pos = scm_to_int (position); set_enharmonic_position (pos); return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_rewind_midi (SCM start) { DenemoProject *gui = Denemo.project; double thetime = 0.0; SCM scm = SCM_BOOL_T; gint err; if ((gui->movement->smf == NULL) || (gui->movement->smfsync != gui->movement->changecount)) generate_midi (); if (scm_is_real (start)) thetime = scm_to_double (start); if (thetime > 0.0) { err = smf_seek_to_seconds (gui->movement->smf, thetime); if (err) scm = SCM_BOOL_F; } else smf_rewind (gui->movement->smf); return scm; } SCM scheme_next_midi_notes (SCM interval) { SCM scm = scm_list_n (SCM_UNDEFINED); DenemoMovement *si = Denemo.project->movement; if (scm_is_real (interval)) { double margin = scm_to_double (interval); double start = -1.0; //unset smf_event_t *event = si->smf ? smf_peek_next_event (si->smf) : NULL; if (event) { while ((event = smf_peek_next_event (si->smf))) { gint key; if ((key = noteon_key (event))) { if (start < 0.0) start = event->time_seconds; if ((event->time_seconds - start) < margin) { event = smf_get_next_event (si->smf); scm = scm_cons (scm_from_int (key), scm); } else { break; } } else { event = smf_get_next_event (si->smf); } } } scm = scm_cons (scm, scm_from_double (start)); return scm; } return SCM_BOOL_F; } SCM scheme_get_midi_on_time (void) { if (!(Denemo.project->movement->currentobject)) return SCM_BOOL_F; GList *curObj = Denemo.project->movement->currentobject; while (curObj && (((DenemoObject *) curObj->data)->durinticks == 0)) curObj = curObj->next; //find first note/rest or duration-full object after the cursor if (curObj && (Denemo.project->movement->smfsync == Denemo.project->movement->changecount)) return scm_from_double (((DenemoObject *) curObj->data)->earliest_time); return SCM_BOOL_F; } SCM scheme_get_midi_off_time (void) { if (!(Denemo.project->movement->currentobject)) return SCM_BOOL_F; GList *curObj = Denemo.project->movement->currentobject; while (curObj && (((DenemoObject *) curObj->data)->durinticks == 0)) curObj = curObj->prev; //find last note/rest or duration-full object before the cursor if (curObj && (Denemo.project->movement->smfsync == Denemo.project->movement->changecount)) return scm_from_double (((DenemoObject *) curObj->data)->latest_time); return SCM_BOOL_F; } SCM scheme_midi_in_listening (void) { midi_in_adjust (GDK_SHIFT_MASK); return SCM_BOOL_T; } SCM scheme_midi_in_checking (void) { midi_in_adjust (GDK_CONTROL_MASK); return SCM_BOOL_T; } SCM scheme_midi_in_append_edit (void) { midi_in_adjust (0); return SCM_BOOL_T; } SCM scheme_restart_play (void) { restart_play (); return SCM_BOOL_T; } SCM scheme_staff_to_play (SCM num) { if (scm_is_integer (num)) { gint staffnum = scm_to_int (num); if (staffnum >= 0 && staffnum <= g_list_length (Denemo.project->movement->thescore)) { Denemo.project->movement->stafftoplay = staffnum; exportmidi (NULL, Denemo.project->movement); return scm_from_int (staffnum); } } Denemo.project->movement->stafftoplay = 0; exportmidi (NULL, Denemo.project->movement); return SCM_BOOL_F; } static double convert_and_adjust (SCM time) { return scm_to_double (time) * get_playback_speed (); } SCM scheme_set_playback_interval (SCM start, SCM end) { stop_midi_playback (NULL, NULL); if (scm_is_real (start) && scm_is_real (end)) { Denemo.project->movement->start_time = convert_and_adjust (start); Denemo.project->movement->end_time = convert_and_adjust (end); set_start_and_end_objects_for_draw (); return SCM_BOOL_T; } if (scm_is_real (start)) { Denemo.project->movement->start_time = convert_and_adjust (start); set_start_and_end_objects_for_draw (); return SCM_BOOL_T; } if (scm_is_real (end)) { Denemo.project->movement->end_time = convert_and_adjust (end); set_start_and_end_objects_for_draw (); return SCM_BOOL_T; } if (scm_is_string (start) && scm_is_string (end)) { char *name; name = scm_to_locale_string (start); if (name) { Denemo.project->movement->start_time = atof (name); free (name); } name = scm_to_locale_string (end); if (name) { Denemo.project->movement->end_time = atof (name); free (name); } set_start_and_end_objects_for_draw (); return SCM_BOOL_T; } if (scm_is_string (start)) { char *name; name = scm_to_locale_string (start); if (name) { Denemo.project->movement->start_time = atof (name); free (name); } set_start_and_end_objects_for_draw (); return SCM_BOOL_T; } if (scm_is_string (end)) { char *name; name = scm_to_locale_string (end); if (name) { Denemo.project->movement->end_time = atof (name); free (name); } set_start_and_end_objects_for_draw (); return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_adjust_playback_start (SCM adj) { SCM ret = SCM_BOOL_F; if (scm_is_real (adj)) { stop_midi_playback (NULL, NULL); Denemo.project->movement->start_time += convert_and_adjust (adj); if (Denemo.project->movement->start_time < 0.0) Denemo.project->movement->start_time = 0.0; else ret = SCM_BOOL_T; } set_start_and_end_objects_for_draw (); return ret; } SCM scheme_adjust_playback_end (SCM adj) { SCM ret = SCM_BOOL_F; if (scm_is_real (adj)) { stop_midi_playback (NULL, NULL); if (Denemo.project->movement->end_time > 0) Denemo.project->movement->end_time += convert_and_adjust (adj); if (Denemo.project->movement->end_time > 0.0) ret = SCM_BOOL_T; } set_start_and_end_objects_for_draw (); return ret; } SCM scheme_get_help (SCM command) { char *name = NULL; if (scm_is_string (command)) name = scm_to_locale_string (command); if (name == NULL) { return SCM_BOOL_F; } gint idx = lookup_command_from_name (Denemo.map, name); if (name) free (name); if (idx < 0) { #if 0 SCM help = scm_c_eval_string (g_strconcat ("Help-d-", name)); return help; #else return SCM_BOOL_F; #endif } return scm_from_locale_string ((gchar *) lookup_tooltip_from_idx (Denemo.map, idx)); } SCM scheme_get_lily_version (SCM optional) { gchar *version = get_lily_version_string (); return scm_from_locale_string (version); } SCM scheme_check_lily_version (SCM check_version) { char *version; if (scm_is_string (check_version)) { version = scm_to_locale_string (check_version); } else { return SCM_BOOL_F; } gint result = check_lily_version (version); if (version) free (version); if (result > 0) { return SCM_BOOL_T; } else { return SCM_BOOL_F; } } SCM scheme_get_id (SCM command) { char *name; if (scm_is_string (command)) { gint id; name = scm_to_locale_string (command); id = lookup_command_from_name (Denemo.map, name); if (name) free (name); if (id != -1) { return scm_from_int (id); } } return SCM_BOOL_F; } SCM scheme_add_keybinding (SCM command, SCM binding) { char *shortcut; char *name; gint id; gint old_id = -1; if (scm_is_string (binding)) { shortcut = scm_to_locale_string (binding); if (scm_is_string (command)) { name = scm_to_locale_string (command); old_id = add_keybinding_for_name (name, shortcut); } else if (scm_is_integer (command)) { id = scm_to_int (command); if (id >= 0) old_id = add_keybinding_for_command (id, shortcut); } if (shortcut) free (shortcut); if (name) free (name); } if (old_id >= 0) { return scm_from_int (old_id); } else { return SCM_BOOL_F; } } SCM scheme_get_label (SCM command) { char *name; if (scm_is_string (command)) { name = scm_to_locale_string (command); } else { return SCM_BOOL_F; } if (name == NULL) { return SCM_BOOL_F; } gint idx = lookup_command_from_name (Denemo.map, name); if (name) free (name); if (idx < 0) { return SCM_BOOL_F; } return scm_from_locale_string ((gchar *) lookup_label_from_idx (Denemo.map, idx)); } SCM scheme_get_menu_position (SCM command) { char *name; SCM ret; gchar *menuposition = NULL; if (scm_is_string (command)) { name = scm_to_locale_string (command); } else { return SCM_BOOL_F; } if (name == NULL) { return SCM_BOOL_F; } gint idx = lookup_command_from_name (Denemo.map, name); command_row *row = NULL; keymap_get_command_row (Denemo.map, &row, idx); if (name) free (name); if ((row==NULL) || (idx < 0)) { return SCM_BOOL_F; } menuposition = get_menu_position (row->menupath); if (menuposition && *menuposition) { ret = scm_from_locale_string (menuposition); g_free (menuposition); } return ret; } SCM scheme_get_menu_path (SCM command) { char *name; if (scm_is_string (command)) { name = scm_to_locale_string (command); } else { return SCM_BOOL_F; } if (name == NULL) { return SCM_BOOL_F; } gint idx = lookup_command_from_name (Denemo.map, name); command_row *row = NULL; keymap_get_command_row (Denemo.map, &row, idx); if (name) free (name); if ((row==NULL) || (idx < 0)) { return SCM_BOOL_F; } if (row->menupath == NULL) { return SCM_BOOL_F; } return scm_from_locale_string (row->menupath); } SCM scheme_get_verse (SCM number) { gchar *text = NULL; DenemoProject *gui = Denemo.project; if (scm_is_integer (number)) { text = get_lyrics_for_verse_num (scm_to_int (number)); } else { DenemoStaff *staff = (DenemoStaff *) gui->movement->currentstaff->data; text = get_lyrics_for_current_verse (staff); } if (text) { SCM scm = scm_from_locale_string (text); //wrong!! g_free(text); return scm; } return SCM_BOOL_F; } SCM scheme_get_verse_number (SCM number) { DenemoProject *gui = Denemo.project; if (scm_is_integer (number)) { guint num = scm_to_int (number); if (verse_set_current ((DenemoStaff *) gui->movement->currentstaff->data, num)) return SCM_BOOL_T; } else { gint num = verse_get_current ((DenemoStaff *) gui->movement->currentstaff->data); if (num>-1) return scm_from_int (num); } return SCM_BOOL_F; } SCM scheme_syllable_count (void) { if (Denemo.project->movement->currentobject) return scm_from_int (syllable_count ()); return SCM_BOOL_F; } SCM scheme_typeset_lyrics_for_staff (SCM on) { DenemoStaff *staff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (scm_is_bool (on)) { signal_structural_change (Denemo.project); staff->hide_lyrics = !scm_is_true (on); score_status (Denemo.project, TRUE); } return scm_from_bool (!staff->hide_lyrics); } SCM scheme_synchronize_lyric_cursor (SCM val) { gint offset = 0; if (scm_is_integer (val)) offset = scm_to_int (val); return SCM_BOOL (synchronize_lyric_cursor (offset)); } SCM scheme_insert_text_in_verse (SCM text) { if (scm_is_string (text)) { char *thetext; thetext = scm_to_locale_string (text); return SCM_BOOL (insert_text_in_verse (thetext)); } return SCM_BOOL_F; } SCM scheme_put_verse (SCM verse) { DenemoProject *gui = Denemo.project; DenemoStaff *staff = (DenemoStaff *) gui->movement->currentstaff->data; if (scm_is_string (verse)) { char *text; text = scm_to_locale_string (verse); gboolean ret = put_lyrics_for_current_verse (staff, text); if (text) free (text); return SCM_BOOL (ret); } return SCM_BOOL_F; } SCM scheme_append_to_verse (SCM verse) { DenemoProject *gui = Denemo.project; DenemoStaff *staff = (DenemoStaff *) gui->movement->currentstaff->data; if (scm_is_string (verse)) { char *text; text = scm_to_locale_string (verse); gboolean ret = append_lyrics_for_current_verse (staff, text); if (text) free (text); return SCM_BOOL (ret); } return SCM_BOOL_F; } /* write MIDI/Audio filter status */ SCM scheme_input_filter_names (SCM filtername) { char *name = NULL; if (scm_is_string (filtername)) { name = scm_to_locale_string (filtername); if (name) { g_string_printf (Denemo.input_filters, "MIDI Input: %s", name); gtk_widget_show (Denemo.input_label); write_input_status (); free (name); return SCM_BOOL_T; } } else { gtk_widget_hide (Denemo.input_label); } return SCM_BOOL_F; } /* write a status label on bottom right of window*/ SCM scheme_write_status (SCM filtername) { char *name = NULL; if (scm_is_string (filtername)) { name = scm_to_locale_string (filtername); if (name && Denemo.input_filters) { g_string_assign (Denemo.input_filters, name); gtk_widget_show (Denemo.input_label); write_input_status (); free (name); return SCM_BOOL_T; } } else { gtk_widget_hide (Denemo.input_label); } return SCM_BOOL_F; } SCM scheme_goto_position (SCM movement, SCM staff, SCM measure, SCM object) { gint movementnum, staffnum, measurenum, objectnum; if (scm_is_integer (movement)) movementnum = scm_to_int (movement); else movementnum = g_list_index (Denemo.project->movements, Denemo.project->movement) + 1; if (scm_is_integer (staff)) staffnum = scm_to_int (staff); else staffnum = Denemo.project->movement->currentstaffnum; if (scm_is_integer (measure)) measurenum = scm_to_int (measure); else measurenum = Denemo.project->movement->currentmeasurenum; if (scm_is_integer (object)) objectnum = scm_to_int (object); else objectnum = 1 + Denemo.project->movement->cursor_x; gint origmvt = g_list_index (Denemo.project->movements, Denemo.project->movement) + 1, origstaff = Denemo.project->movement->currentstaffnum, origmeas = Denemo.project->movement->currentmeasurenum, origpos = 1 + Denemo.project->movement->cursor_x; goto_movement_staff_obj (NULL, movementnum, staffnum, measurenum, objectnum, 0); if ((movementnum == g_list_index (Denemo.project->movements, Denemo.project->movement) + 1) && (staffnum == Denemo.project->movement->currentstaffnum) && (measurenum == Denemo.project->movement->currentmeasurenum) && (objectnum == 1 + Denemo.project->movement->cursor_x)) return SCM_BOOL_T; else goto_movement_staff_obj (NULL, origmvt, origstaff, origmeas, origpos, 0); return SCM_BOOL_F; } SCM scheme_shift_cursor (SCM value) { if (!scm_is_integer (value)) return SCM_BOOL_F; gint shift = scm_to_int (value); Denemo.project->movement->cursor_y += shift; Denemo.project->movement->staffletter_y = offsettonumber (Denemo.project->movement->staffletter_y + shift); return SCM_BOOL_T; } SCM scheme_mid_c_offsettoname (gint offset) { gchar *notename = g_strdup_printf ("%c", mid_c_offsettoname (offset)); SCM scm = scm_from_locale_string (notename); g_free (notename); return scm; } SCM scheme_get_horizontal_position (void) { return scm_from_int (1 + Denemo.project->movement->cursor_x); } SCM scheme_set_object_display_width (SCM value) { if (!scm_is_integer (value)) return SCM_BOOL_F; if (Denemo.project->movement->currentobject) { DenemoObject *obj = Denemo.project->movement->currentobject->data; gint minpixels = scm_to_int (value); obj->minpixelsalloted = minpixels; return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_get_movement (void) { gint num = g_list_index (Denemo.project->movements, Denemo.project->movement) + 1; return scm_from_int (num); } SCM scheme_get_staff (void) { gint num = Denemo.project->movement->currentstaffnum; return scm_from_int (num); } SCM scheme_staff_hidden (SCM set) { DenemoProject *gui = Denemo.project; DenemoStaff *staff = (DenemoStaff *) gui->movement->currentstaff->data; if (scm_is_bool (set)) staff->hidden = scm_is_true (set); return SCM_BOOL (staff->hidden); } SCM scheme_get_voice_identifier (void) { gint snum = Denemo.project->movement->currentstaffnum; gint mnum = g_list_index (Denemo.project->movements, Denemo.project->movement) + 1; GString *voice_ident = g_string_new (""); GString *name = g_string_new (""); g_string_printf (name, "Mvmnt%dVoice%d", mnum, snum); set_lily_name (name, voice_ident); SCM ret = scm_from_locale_string (voice_ident->str); g_string_free (name, TRUE); g_string_free (voice_ident, TRUE); return ret; } SCM scheme_roman_numeral (SCM number) { SCM ret = SCM_BOOL_F; if (scm_is_string (number)) { GString *to, *from; gchar *input = scm_to_locale_string (number); from = g_string_new (input); to = g_string_new(""); set_lily_name (from, to); g_string_free (from, TRUE); ret = scm_from_locale_string (to->str); g_string_free (to, TRUE); if (input) free (input); } return ret; } SCM scheme_get_measure (void) { gint num = Denemo.project->movement->currentmeasurenum; return scm_from_int (num); } SCM scheme_get_cursor_note (SCM optional) { DenemoProject *gui = Denemo.project; return scheme_mid_c_offsettoname (gui->movement->cursor_y); } SCM scheme_get_cursor_note_with_octave (SCM optional) { DenemoProject *gui = Denemo.project; scm_from_locale_string (mid_c_offsettolily (gui->movement->cursor_y, 0)); return SCM_BOOL_T; } SCM scheme_set_prefs (SCM xml) { if (scm_is_string (xml)) { char *xmlprefs; xmlprefs = scm_to_locale_string (xml); gint fail = readxmlprefsString (xmlprefs); if (xmlprefs) free (xmlprefs); return SCM_BOOL (!fail); } return SCM_BOOL (FALSE); } SCM scheme_get_boolean_pref (SCM pref) { gchar *prefname = NULL; gboolean val; if (scm_is_string (pref)) { prefname = scm_to_locale_string (pref); val = get_bool_pref (prefname); free (prefname); return SCM_BOOL (val); } return SCM_BOOL_F; } SCM scheme_get_int_pref (SCM pref) { gchar *prefname = NULL; gint val; if (scm_is_string (pref)) { prefname = scm_to_locale_string (pref); val = get_int_pref (prefname); free (prefname); return scm_from_int (val); } return SCM_BOOL_F; } SCM scheme_get_string_pref (SCM pref) { gchar *prefname = NULL; gchar *val; if (scm_is_string (pref)) { prefname = scm_to_locale_string (pref); val = get_string_pref (prefname); free (prefname); if (val) return scm_from_locale_string (val); } return SCM_BOOL_F; } SCM scheme_attach_quit_callback (SCM callback) { DenemoProject *gui = Denemo.project; if (scm_is_string (callback)) { char *scheme; scheme = scm_to_locale_string (callback); gui->callbacks = g_list_prepend (gui->callbacks, scheme); if (scheme) free (scheme); } return SCM_BOOL (TRUE); } SCM scheme_detach_quit_callback (void) { DenemoProject *gui = Denemo.project; if (gui->callbacks) { g_free (gui->callbacks->data); gui->callbacks = g_list_delete_link (gui->callbacks, gui->callbacks); return SCM_BOOL (TRUE); } else g_warning ("No callback registered"); return SCM_BOOL (FALSE); } SCM scheme_get_input_source (void) { return scm_from_int (Denemo.project->input_source); } SCM scheme_chordize (SCM setting) { DenemoProject *gui = Denemo.project; DenemoObject *curObj; chord *thechord; note *thenote; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) thechord->notes->data)) return SCM_BOOL (FALSE); gboolean old = thechord->chordize; thechord->chordize = scm_is_true (setting); if (old != thechord->chordize) score_status (Denemo.project, TRUE); return SCM_BOOL (TRUE); } SCM scheme_get_note_name (SCM optional) { //char *str=NULL; //if(scm_is_string(optional)){ //str = scm_to_locale_stringn(optional, &length); // } DenemoObject *curObj; chord *thechord; note *thenote; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) thechord->notes->data)) return SCM_BOOL (FALSE); else { return scheme_mid_c_offsettoname (thenote->mid_c_offset); } } SCM scheme_get_note_names_from_user (SCM num, SCM initial, SCM message) { SCM ret = SCM_BOOL_F; gint number = 1; gchar *text = NULL; gchar *init = NULL; if (scm_is_integer(num)) number = scm_to_int (num); if (number != 1) number = 2; if (scm_is_string (initial)) init = scm_to_locale_string (initial); if (scm_is_string (message)) text = scm_to_locale_string (message); gchar *note = notes_choice_dialog (number, init, text); if (note) ret = scm_from_locale_string (note); g_free (text); g_free (init); g_free (note); return ret; } SCM scheme_get_multiline_user_input (SCM title, SCM instruction, SCM initial) { SCM ret = SCM_BOOL_F; gchar *tl = _("Text Input"); gchar *ins = _("Give Text"); gchar *init = ""; if (scm_is_string (title)) tl = scm_to_locale_string (title); if (scm_is_string (instruction)) ins = scm_to_locale_string (instruction); if (scm_is_string (initial)) init = scm_to_locale_string (initial); gchar *val = get_multiline_input (tl, ins, init); if (val) ret = scm_from_locale_string (val); g_free (val); return ret; } SCM scheme_get_lilypond_syntax_from_user (SCM tit, SCM ins, SCM prior, SCM post, SCM initial) { SCM ret = SCM_BOOL_F; #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else gchar *title = _("LilyPond Syntax"); gchar *prior_context = "\\score {<<"; gchar *post_context = ">>}"; gchar *instruction = _("Give LilyPond Syntax"); gchar *initial_markup = ""; if (scm_is_string (tit)) title = scm_to_locale_string (tit); if (scm_is_string (ins)) instruction = scm_to_locale_string (ins); if (scm_is_string (prior)) prior_context = scm_to_locale_string (prior); if (scm_is_string (post)) post_context = scm_to_locale_string (post); if (scm_is_string (initial)) initial_markup = scm_to_locale_string (initial); gchar *val = get_lilypond_syntax_from_user (title, instruction, prior_context, post_context, initial_markup); if (val) ret = scm_from_locale_string (val); g_free (val); #endif return ret; } //Insert rests to the value of the timesig and return the number of rests inserted. SCM scheme_put_whole_measure_rests (void) { DenemoProject *gui = Denemo.project; SCM scm; if (!Denemo.project || !(Denemo.project->movement)) return scm_from_int (0); else { gint numerator = ((DenemoMeasure *) gui->movement->currentmeasure->data)->timesig->time1; // staff->timesig.time1; gint denominator = ((DenemoMeasure *) gui->movement->currentmeasure->data)->timesig->time2; //staff->timesig.time2; gboolean dot = TRUE; if (numerator % 3) dot = FALSE; else numerator = 2 * numerator / 3; gint length = (numerator * 4) / denominator; gchar *str = NULL; scm = scm_from_int (1); switch (length) { case 1: // e.g. 2/8 timesig str = g_strdup_printf ("(d-InsertRest2)(d-MoveCursorLeft)%s", dot ? "(d-AddDot)" : ""); break; case 2: str = g_strdup_printf ("(d-InsertRest1)(d-MoveCursorLeft)%s", dot ? "(d-AddDot)" : ""); break; case 3: // e.g. 9/8 timesig str = g_strdup_printf ("(d-InsertRest0)(d-InsertRest3)(d-MoveCursorLeft)(d-MoveCursorLeft)"); scm = scm_from_int (2); break; case 4: str = g_strdup_printf ("(d-InsertRest0)(d-MoveCursorLeft)%s", dot ? "(d-AddDot)" : ""); break; case 8: str = g_strdup_printf ("(d-InsertRest0)(d-InsertRest0)(d-MoveCursorLeft)%s", dot ? "(d-AddDot)" : ""); scm = scm_from_int (2); break; default: g_warning ("Not implemented %d %s", length, dot ? "dotted" : ""); scm = scm_from_int (0); break; } if (str) { call_out_to_guile (str); } g_free (str); return scm; } } SCM scheme_get_dots (void) { DenemoObject *curObj; chord *thechord; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object)) return SCM_BOOL_F; return scm_from_int (thechord->numdots); } SCM scheme_get_note_base_duration (void) { DenemoObject *curObj; chord *thechord; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object)) return SCM_BOOL_F; return scm_from_int (thechord->baseduration); } SCM scheme_get_note_duration (void) { DenemoObject *curObj; chord *thechord; gint duration; gint numdots = 0; gchar *str; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object)) return SCM_BOOL_F; if (thechord->baseduration >= 0) { duration = 1 << thechord->baseduration; str = g_strdup_printf ("%d", duration); if (thechord->numdots) { gchar *tmp = NULL; while (numdots++ < thechord->numdots) { tmp = g_strdup_printf ("%s" "%c", str, '.'); g_free (str); str = tmp; } } SCM scm = scm_from_locale_string (str); g_free (str); return scm; } return SCM_BOOL_F; } SCM scheme_set_duration_in_ticks (SCM duration) { DenemoObject *curObj; gint thedur = 0; if (scm_is_integer (duration)) { thedur = scm_to_int (duration); } if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data)) return SCM_BOOL_F; if (thedur >= 0) { curObj->basic_durinticks = curObj->durinticks = thedur; if (curObj->type == CHORD) { ((chord *) curObj->object)->baseduration = -thedur; ((chord *) curObj->object)->numdots = 0; } objnode *prev = Denemo.project->movement->currentobject->prev; DenemoObject *prevObj = prev ? (DenemoObject *) prev->data : NULL; gint starttick = (prevObj ? prevObj->starttickofnextnote : 0); curObj->starttickofnextnote = starttick + thedur; return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_get_recorded_midi_tempo (SCM index) { SCM scm = scm_list_n (SCM_UNDEFINED); if (scm_is_integer (index)) { gint idx = scm_to_int (index); smf_tempo_t *tempo = get_recorded_midi_tempo (idx); if (tempo) { scm = scm_cons (scm_from_double (tempo->microseconds_per_quarter_note / 1000000.0), scm); scm = scm_cons (scm_from_int (tempo->denominator), scm); scm = scm_cons (scm_from_int (tempo->numerator), scm); scm = scm_cons (scm_from_int (tempo->time_seconds), scm); return scm; } } return SCM_BOOL_F; } SCM scheme_get_imported_midi_track (SCM index) { if (scm_is_integer (index)) { gint idx = scm_to_int (index); if (get_imported_midi_track (idx)) return SCM_BOOL_F; } return SCM_BOOL_F; } SCM scheme_delete_imported_midi (void) { return SCM_BOOL (delete_imported_midi ()); } SCM scheme_get_current_midi_track (void) { gint track = get_current_midi_track (); if (track) return scm_from_int (track); return SCM_BOOL_F; } SCM scheme_get_imported_midi_tracks (void) { gint num = get_imported_midi_tracks (); if (num < 1) return SCM_BOOL_F; else return scm_from_int (num); } SCM scheme_get_recorded_midi_duration (void) { gdouble duration = get_recorded_midi_duration (); g_debug ("Duration returned %f so %d\n", duration, duration > 0.0); if (duration > 0.0) return scm_from_double (duration); return SCM_BOOL_F; } SCM scheme_get_duration_in_ticks (void) { DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data)) return SCM_BOOL (FALSE); return scm_from_int (curObj->durinticks); } SCM scheme_get_base_duration_in_ticks (void) { DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data)) return SCM_BOOL (FALSE); if (curObj->type == CHORD) return scm_from_int (((chord *) curObj->object)->baseduration >= 0 ? /* (* (expt 2 (- 8 number)) 6) */ (int) pow (2.0, (8.0 - ((chord *) curObj->object)->baseduration)) * 6 : ((chord *) curObj->object)->baseduration); return SCM_BOOL (FALSE); } SCM scheme_get_end_tick (void) { DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data)) return SCM_BOOL (FALSE); return scm_from_int (curObj->starttickofnextnote); } SCM scheme_get_start_tick (void) { DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data)) return SCM_BOOL (FALSE); return scm_from_int (curObj->starttick); } SCM scheme_get_measure_number (void) { return scm_from_int (Denemo.project->movement->currentmeasurenum); } SCM scheme_set_measure_number_offset (SCM val) { DenemoMeasure *themeasure; if (scm_is_integer (val)) { gint offset = scm_to_int (val); DenemoPosition pos; get_position (Denemo.project->movement, &pos); gint i = 1; while (goto_movement_staff_obj (NULL, -1, i++, pos.measure, 0, 0)) { themeasure = (DenemoMeasure *) Denemo.project->movement->currentmeasure->data; themeasure->measure_numbering_offset = offset; } goto_movement_staff_obj (NULL, -1, pos.staff, pos.measure, pos.object, pos.leftmeasurenum); cache_all (); } else return SCM_BOOL_F; themeasure = Denemo.project->movement->currentmeasure->data; return scm_from_int (themeasure->measure_numbering_offset); } SCM scheme_get_measure_number_offset (void) { DenemoMeasure *themeasure = Denemo.project->movement->currentmeasure->data; return scm_from_int (themeasure->measure_numbering_offset); } SCM scheme_get_note (SCM count) { gint index = 0; DenemoObject *curObj; chord *thechord; note *thenote; if (scm_is_integer (count)) { index = scm_to_int (count) - 1; if (index < 0) return SCM_BOOL_F; } if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) g_list_nth_data (thechord->notes, index))) return SCM_BOOL_F; else { gchar *str = g_strdup_printf ("%s", mid_c_offsettolily (thenote->mid_c_offset, thenote->enshift)); SCM scm = scm_from_locale_string (str); g_free (str); return scm; } } SCM scheme_get_note_staff_position (SCM count) { gint index = 0; DenemoObject *curObj; chord *thechord; note *thenote; if (scm_is_integer (count)) { index = scm_to_int (count) - 1; if (index < 0) return SCM_BOOL_F; } if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) g_list_nth_data (thechord->notes, index))) return SCM_BOOL_F; else { return scm_from_int(4 - thenote->y/HALF_LINE_SPACE); } } SCM scheme_get_note_from_top (SCM count) { gint index = 1; DenemoObject *curObj; chord *thechord; note *thenote; if (scm_is_integer (count)) { index = scm_to_int (count); if (index < 1) return SCM_BOOL_F; } if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes)) return SCM_BOOL_F; else { SCM scm; gint end = g_list_length (thechord->notes); index = end - index; if (index < 0) scm = SCM_BOOL_F; else { thenote = (note *) g_list_nth_data (thechord->notes, index); gchar *str = g_strdup_printf ("%s", mid_c_offsettolily (thenote->mid_c_offset, thenote->enshift)); scm = scm_from_locale_string (str); g_free (str); } return scm; } } SCM scheme_get_note_from_top_as_midi (SCM count) { gint index = 1; DenemoObject *curObj; chord *thechord; note *thenote; if (scm_is_integer (count)) { index = scm_to_int (count); if (index < 1) return SCM_BOOL_F; } if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes)) return SCM_BOOL_F; else { SCM scm; gint end = g_list_length (thechord->notes); index = end - index; if (index < 0) scm = SCM_BOOL_F; else { thenote = (note *) g_list_nth_data (thechord->notes, index); gint midi = dia_to_midinote (thenote->mid_c_offset) + thenote->enshift; scm = scm_from_int (midi); } return scm; } } SCM scheme_spell_check_midi_chord (SCM list) { SCM scm; GList *notes = NULL; gboolean status; if (scm_is_list (list)) { for (scm = list; !scm_is_null (scm); scm = scm_cdr (scm)) { gint note = scm_to_int (scm_car (scm)); notes = g_list_prepend (notes, GINT_TO_POINTER (note)); } status = check_midi_intervals (notes); g_list_free (notes); return status ? SCM_BOOL_T : SCM_BOOL_F; } else { g_warning ("Bad pitch spell list"); return SCM_BOOL_F; } } SCM scheme_get_cursor_note_as_midi (SCM optional) { DenemoProject *gui = Denemo.project; gint midi = dia_to_midinote (gui->movement->cursor_y); SCM scm = scm_from_int (midi); return scm; } SCM scheme_get_note_as_midi (void) { DenemoObject *curObj; chord *thechord; note *thenote; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) thechord->notes->data)) return scm_from_int (0); else { gint midi = dia_to_midinote (thenote->mid_c_offset) + thenote->enshift; SCM scm = scm_from_int (midi); return scm; } } SCM scheme_get_notes (SCM optional) { DenemoObject *curObj; chord *thechord; note *thenote; GString *str = g_string_new (""); SCM scm; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) thechord->notes->data)) return SCM_BOOL (FALSE); else { GList *g; for (g = thechord->notes; g; g = g->next) { thenote = (note *) g->data; gchar *name = mid_c_offsettolily (thenote->mid_c_offset, thenote->enshift); str = g_string_append (str, name); if (g->next) str = g_string_append (str, " "); } scm = scm_from_locale_string (g_string_free (str, FALSE)); return scm; } } SCM scheme_get_note_at_cursor (void) { DenemoObject *curObj; chord *thechord; note *thenote; GString *str = g_string_new (""); SCM scm; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) thechord->notes->data)) return SCM_BOOL_F; GList *g; for (g = thechord->notes; g; g = g->next) { thenote = (note *) g->data; if (thenote->mid_c_offset == Denemo.project->movement->cursor_y) { gchar *name = mid_c_offsettolily (thenote->mid_c_offset, thenote->enshift); return scm_from_locale_string (name); } } return SCM_BOOL_F; } SCM scheme_add_movement (SCM optional) { append_blank_movement (); return SCM_BOOL_T; } SCM scheme_get_prevailing_clef (SCM optional) { gint theclef = find_prevailing_clef (Denemo.project->movement); //FIXME look at directives to see if it is overridden, e.g. drum clef const gchar *clefname = get_clef_name (theclef); if (clefname) return scm_from_locale_string (clefname); else return SCM_BOOL_F; } SCM scheme_get_prevailing_clef_as_lilypond (SCM optional) { const gchar *clefname = get_prevailing_clef_as_lilypond (); if (clefname) return scm_from_locale_string (clefname); else return SCM_BOOL_F; } SCM scheme_get_prevailing_keysig_as_lilypond (SCM optional) { const gchar *keysigname = get_prevailing_keysig_as_lilypond (); if (keysigname) return scm_from_locale_string (keysigname); else return SCM_BOOL_F; } SCM scheme_get_prevailing_timesig_as_lilypond (SCM optional) { const gchar *timesigname = get_prevailing_timesig_as_lilypond (); if (timesigname) return scm_from_locale_string (timesigname); else return SCM_BOOL_F; } SCM scheme_get_prevailing_duration (SCM optional) { if (scm_is_integer (optional)) { gint duration = scm_to_int (optional); if (duration >= 0 && (duration < 8)) { SetDur (duration); return SCM_BOOL_T; } return SCM_BOOL_F; } else return scm_from_int (get_prevailing_duration ()); } SCM scheme_get_prevailing_timesig (SCM optional) { timesig *timesig = get_prevailing_context (TIMESIG); //FIXME look at directives to see if it is overridden, e.g. drum clef gchar *name = g_strdup_printf ("%d/%d", timesig->time1, timesig->time2); SCM ret = scm_from_locale_string (name); g_free (name); return ret; } SCM scheme_get_prevailing_keysig (SCM optional) { GString *str = g_string_new (" "); keysig *keysig = get_prevailing_context (KEYSIG); gint i; for (i = 0; i < 7; i++) g_string_append_printf (str, "%d ", keysig->accs[i]); return scm_from_locale_string (g_string_free (str, FALSE)); } SCM scheme_get_prevailing_keysig_name (void) { SCM ret; gchar *key = get_prevailing_keysig_name(); ret = scm_from_locale_string (key); g_free (key); return ret; } SCM scheme_set_prevailing_keysig (SCM keyaccs) { //keysigs have a field called "number" which determines how it is drawn, setting like this does not get a keysig drawn, nor does it affect lilypond output char *accs = NULL; if (scm_is_string (keyaccs)) { accs = scm_to_locale_string (keyaccs); } if (!accs) { return SCM_BOOL_F; } keysig *keysig = get_prevailing_context (KEYSIG); sscanf (accs, "%d%d%d%d%d%d%d", keysig->accs + 0, keysig->accs + 1, keysig->accs + 2, keysig->accs + 3, keysig->accs + 4, keysig->accs + 5, keysig->accs + 6); staff_show_which_accidentals ((DenemoStaff *) Denemo.project->movement->currentstaff->data); free (accs); displayhelper (Denemo.project); //score_status(Denemo.project, TRUE); return SCM_BOOL_T; } SCM scheme_increment_initial_keysig (SCM amount) { DenemoStaff *curstaff = Denemo.project->movement->currentstaff->data; SCM ret = SCM_BOOL_F; gint inc = 1; if (scm_is_integer (amount)) inc = scm_to_int (amount); keysig *sig = &curstaff->keysig; inc += sig->number; if (inc < 8 && inc > -8) { dnm_setinitialkeysig (curstaff, inc, curstaff->keysig.isminor); score_status (Denemo.project, TRUE); ret = SCM_BOOL_T; } return ret; } SCM scheme_increment_keysig (SCM amount) { DenemoStaff *curstaff = Denemo.project->movement->currentstaff->data; DenemoObject *curObj = NULL; SCM ret = SCM_BOOL_F; gint inc = 1; if (scm_is_integer (amount)) inc = scm_to_int (amount); keysig *sig = &curstaff->keysig; if ((Denemo.project->movement->currentobject) && (curObj = Denemo.project->movement->currentobject->data) && (curObj->type == KEYSIG)) { sig = curObj->object; } inc += sig->number; if (inc < 8 && inc > -8) { if (sig == &curstaff->keysig) { dnm_setinitialkeysig (curstaff, inc, curstaff->keysig.isminor); } else { sig->number = inc; initkeyaccs (sig->accs, inc); set_basic_numticks (curObj); setpixelmin (curObj); } score_status (Denemo.project, TRUE); displayhelper (Denemo.project); ret = SCM_BOOL_T; } return ret; } SCM scheme_swap_notes_at_cursor_height (SCM nochange) { DenemoObject *curObj; chord *thechord; note *thenote; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) thechord->notes->data)) return SCM_BOOL_F; GList *g; for (g=thechord->notes;g;g=g->next) { thenote = (note *) g->data; if (thenote->mid_c_offset == Denemo.project->movement->cursor_y) { if (g->next) { gpointer temp; note *next = (note*)g->next->data; if (next->mid_c_offset == Denemo.project->movement->cursor_y) { if(scm_is_true (nochange)) //not just a query, actually swap notes { temp = g->next->data; g->next->data = g->data; g->data = temp; } return SCM_BOOL_T; } } else return SCM_BOOL_F; } } return SCM_BOOL_F; } SCM scheme_cursor_to_nth_note_height (SCM number) { return SCM_BOOL (cursor_to_nth_note_height (scm_to_int (number) - 1)); } SCM scheme_cursor_to_next_note_height (void) { return SCM_BOOL (cursor_to_next_note_height ()); } SCM scheme_cursor_to_note (SCM lilyname) { DenemoProject *gui = Denemo.project; gint mid_c_offset; gint enshift; char *notename; if (scm_is_string (lilyname)) { notename = scm_to_locale_string (lilyname); interpret_lilypond_notename (notename, &mid_c_offset, &enshift); gui->movement->cursor_y = mid_c_offset; gui->movement->staffletter_y = offsettonumber (gui->movement->cursor_y); displayhelper (gui); if (notename) free (notename); return SCM_BOOL (TRUE); } else { return SCM_BOOL (FALSE); } } SCM scheme_change_chord_notes (SCM lilynotes) { DenemoProject *gui = Denemo.project; DenemoObject *curObj; chord *thechord; note *thenote; char *notename; gchar *chordnote; gint mid_c_offset; gint enshift; gint dclef; GList *g = NULL; GList *n = NULL; GList *directives = NULL; if (scm_is_string (lilynotes)) { if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) thechord->notes->data)) return SCM_BOOL (FALSE); else { /* delete all chord tones */ while (thechord->notes) { thenote = thechord->notes->data; g = g_list_append (g, thenote->directives); thenote->directives = NULL; delete_chordnote (gui); } /* add changed tones */ dclef = find_prevailing_clef (Denemo.project->movement); notename = scm_to_locale_string (lilynotes); chordnote = strtok (notename, " "); while (chordnote) { interpret_lilypond_notename (chordnote, &mid_c_offset, &enshift); dnm_addtone (curObj, mid_c_offset, enshift); chordnote = strtok (NULL, " "); } /* paste directives over */ for (n = thechord->notes; n && g; n = n->next, g = g->next) { thenote = (note *) n->data; directives = (GList *) g->data; if (directives) thenote->directives = directives; } score_status (gui, TRUE); displayhelper (gui); if (notename) free (notename); return SCM_BOOL (TRUE); } } else return SCM_BOOL (FALSE); } SCM scheme_get_user_input (SCM label, SCM prompt, SCM init, SCM modal) { char *title, *instruction, *initial_value; if (scm_is_string (label)) { title = scm_to_locale_string (label); } else title = strdup ("Input Required"); if (scm_is_string (prompt)) { instruction = scm_to_locale_string (prompt); } else instruction = strdup ("Give input: "); if (scm_is_string (init)) { initial_value = scm_to_locale_string (init); } else initial_value = strdup (" "); gchar *ret = string_dialog_entry_with_widget_opt (Denemo.project, title, instruction, initial_value, NULL, (modal == SCM_UNDEFINED) || scm_is_true (modal)); SCM scm = ret ? scm_from_locale_string (ret) : SCM_BOOL_F; if (title) free (title); if (instruction) free (instruction); if (initial_value) free (initial_value); if (ret) g_free (ret); return scm; } SCM scheme_get_user_input_with_snippets (SCM label, SCM prompt, SCM init, SCM modal) { char *title, *instruction, *initial_value; SCM scm; gboolean ismodal = FALSE, format = FALSE; if (scm_is_string (modal)) { char *arg = scm_to_locale_string (modal); if (!strcmp (arg, "format")) ismodal = format = TRUE; else if (!strcmp (arg, "modal")) ismodal = TRUE, format = FALSE; //g_print ("setting from %s %d %d\n", arg, ismodal, format); free (arg); } else { ismodal = !scm_is_false (modal), format = (!scm_is_false (modal)) && (modal != SCM_UNDEFINED); } if (scm_is_string (label)) { title = scm_to_locale_string (label); } else title = strdup (_("Input Required")); if (scm_is_string (prompt)) { instruction = scm_to_locale_string (prompt); } else instruction = strdup (_("Give input: ")); if (scm_is_string (init)) { initial_value = scm_to_locale_string (init); } else initial_value = strdup (" "); GString *text = g_string_new (""), *lilypond = g_string_new (""); // g_print ("Called with %d %d\n", ismodal, format); gboolean ok = get_user_markup (text, lilypond, title, instruction, initial_value, ismodal, format); if (ok) { scm = scm_cons (scm_from_locale_string (text->str), scm_from_locale_string (lilypond->str)); } else scm = SCM_BOOL_F; if (title) free (title); if (instruction) free (instruction); if (initial_value) free (initial_value); g_string_free (text, TRUE); g_string_free (lilypond, TRUE); return scm; } static gchar * select_font (gchar * title) { gchar *fontname = NULL; GtkResponseType result; GtkWidget *dialog = #if GTK_MAJOR_VERSION == 2 gtk_font_selection_dialog_new (title); #else gtk_font_chooser_dialog_new (title, NULL); #endif result = gtk_dialog_run (GTK_DIALOG (dialog)); if (result == GTK_RESPONSE_OK || result == GTK_RESPONSE_APPLY) #if GTK_MAJOR_VERSION == 2 fontname = gtk_font_selection_dialog_get_font_name (GTK_FONT_SELECTION_DIALOG (dialog)); fontname = string_dialog_entry (Denemo.project, title, _("Please delete the font size and bold/italic indications,\nleaving just the font family name."), fontname); #else fontname = g_strdup (pango_font_family_get_name (gtk_font_chooser_get_font_family (GTK_FONT_CHOOSER (dialog)))); #endif gtk_widget_destroy (dialog); return fontname; } SCM scheme_select_font (SCM text) { SCM ret = SCM_BOOL_F; gchar *title, *choice; if (scm_is_string (text)) { title = scm_to_locale_string (text); } else title = strdup (_("Choose Font")); choice = select_font (title); if (choice) ret = scm_from_locale_string (choice); g_free (choice); return ret; } #define GDOUBLE_TO_POINTER(x) (GINT_TO_POINTER((gint)(10000*x))) #define GPOINTER_TO_DOUBLE(x) (GPOINTER_TO_INT(x)/10000.0) static GList * select_color (gchar * title) { GtkResponseType result; GList *ret = NULL; GtkWidget *dialog = #if GTK_MAJOR_VERSION == 2 gtk_color_selection_dialog_new (title); #else gtk_color_chooser_dialog_new (title, NULL); #endif result = gtk_dialog_run (GTK_DIALOG (dialog)); if (result == GTK_RESPONSE_OK || result == GTK_RESPONSE_APPLY) { #if GTK_MAJOR_VERSION == 2 GdkColor color; GtkColorSelection *colorsel = gtk_color_selection_dialog_get_color_selection (dialog); gtk_color_selection_get_current_color (colorsel, &color); ret = g_list_append (ret, GDOUBLE_TO_POINTER (color.red / 65535.0)); ret = g_list_append (ret, GDOUBLE_TO_POINTER (color.green / 65535.0)); ret = g_list_append (ret, GDOUBLE_TO_POINTER (color.blue / 65535.0)); #else GdkRGBA color; gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (dialog), &color); ret = g_list_append (ret, GDOUBLE_TO_POINTER (color.red)); ret = g_list_append (ret, GDOUBLE_TO_POINTER (color.green)); ret = g_list_append (ret, GDOUBLE_TO_POINTER (color.blue)); #endif } gtk_widget_destroy (dialog); return ret; } SCM scheme_select_color (SCM text) { SCM ret = SCM_BOOL_F; gchar *title; GList *list; if (scm_is_string (text)) { title = scm_to_locale_string (text); } else title = strdup (_("Choose Font")); list = select_color (title); if (list) { ret = scm_list_n (scm_from_double (GPOINTER_TO_DOUBLE (list->data)), scm_from_double (GPOINTER_TO_DOUBLE (list->next->data)), scm_from_double (GPOINTER_TO_DOUBLE (list->next->next->data)), SCM_UNDEFINED); g_list_free (list); } return ret; } SCM scheme_warningdialog (SCM msg) { char *title; if (scm_is_string (msg)) { title = scm_to_locale_string (msg); } else title = strdup ("Script generated warning"); warningdialog (title); if (title) free (title); return msg; } static void info_response (GtkWidget * dialog, gint reponse_id, gchar * script) { if (script) call_out_to_guile (script); gtk_widget_destroy (dialog); } SCM scheme_info_with_hook (SCM title, SCM hook) { GtkWidget *dialog; gchar *msg = NULL, *script = NULL; if (scm_is_string (hook)) script = scm_to_locale_string (hook); if (scm_is_string (title)) msg = scm_to_locale_string (title); if (msg) { dialog = gtk_message_dialog_new (GTK_WINDOW (Denemo.window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "%s", msg); #ifdef G_OS_WIN32 gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE); //needed on windows because of a bug, not all text can be seen. #endif g_signal_connect (dialog, "response", G_CALLBACK (info_response), script); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE); gtk_widget_show_all (dialog); return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_infodialog (SCM msg, SCM noblock) { char *title; gboolean modal = FALSE; if (scm_is_false (noblock)) modal = TRUE; if (scm_is_string (msg)) { title = scm_to_locale_string (msg); msg = SCM_BOOL (TRUE); } else { title = strdup (_("Script error, wrong parameter type to d-InfoDialog")); msg = SCM_BOOL (FALSE); } if (modal) { infowarningdialog (title, FALSE); } else { static GtkWidget *dialog; if (dialog) { gtk_widget_show (dialog); gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), title); } else { dialog = infodialog (title); g_signal_connect (dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); } if (*title) { gtk_widget_show (dialog); } else { gtk_widget_hide (dialog); } } if (title) free (title); return msg; } SCM scheme_progressbar (SCM msg) { char *title = NULL; if (scm_is_string (msg)) { title = scm_to_locale_string (msg); progressbar (title, NULL); msg = SCM_BOOL (TRUE); } else msg = SCM_BOOL (FALSE); if (title) free (title); return msg; } SCM scheme_progressbar_stop (void) { progressbar_stop (); return SCM_BOOL (TRUE); } SCM scheme_typeset_for_script (SCM thescript) { SCM ret = SCM_BOOL_F; #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else if (scm_is_string (thescript)) { gchar *script = scm_to_locale_string (thescript); if (typeset_for_script (script)) ret = SCM_BOOL_T; } #endif return ret; } SCM scheme_print_typeset_pdf (void) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); return SCM_BOOL_F; #else return print_typeset_pdf ()? SCM_BOOL_F : SCM_BOOL_T; #endif } SCM scheme_continous_typsetting (void) { return SCM_BOOL (continuous_typesetting ()); } SCM scheme_display_typeset_svg (SCM scaling, SCM part) { if (!continuous_typesetting ()) { gdouble scale = 1.0; if (scm_is_real (scaling)) scale = scm_to_double (scaling); display_svg (scale, scm_is_true (part)); return SCM_BOOL_T; } else return SCM_BOOL_F; } SCM scheme_get_char (void) { GdkEventKey event; gboolean success = intercept_scorearea_keypress (&event); if (success) { gchar *str = g_strdup_printf ("%c", success ? event.keyval : 0); SCM scm = scm_from_locale_string (str); g_free (str); return scm; } else return SCM_BOOL (FALSE); } SCM scheme_get_keypress (SCM putback) { static GdkEventKey event; if (scm_is_false (putback)) { gint cmd = lookup_command_for_keyevent (&event); ;;if (cmd != -1) return SCM_BOOL ( execute_callback_from_idx (Denemo.map, cmd)); } else { gboolean success = intercept_scorearea_keypress (&event); if (success) { gchar *str = dnm_accelerator_name (event.keyval, event.state); SCM scm = scm_from_locale_string (str); g_free (str); return scm; } else return SCM_BOOL (FALSE); } } /* get last keypress that successfully invoked a command */ SCM scheme_get_command_keypress (void) { gchar *str = dnm_accelerator_name (Denemo.last_keyval, Denemo.last_keystate); SCM scm = scm_from_locale_string (str); g_free (str); return scm; } SCM scheme_get_command (void) { GdkEventKey event; GString *name = g_string_new (""); gboolean success = intercept_scorearea_keypress (&event); if (success) { gint cmd = lookup_command_for_keyevent (&event); //g_debug("command %d for %x %x\n", cmd, event.keyval, event.state); if (cmd != -1) name = g_string_append (name, lookup_name_from_idx (Denemo.map, cmd)); //FIXME NULL?, memory leaks name = g_string_prepend (name, DENEMO_SCHEME_PREFIX); } SCM scm = success ? scm_from_locale_string (name->str) : SCM_BOOL (FALSE); g_string_free (name, TRUE); return scm; } gchar * return_command (gchar * name, GdkEvent * event) { return name; } /* listens for a shortcut and returns a command, or if keypresses are not shortcut returns #f */ SCM scheme_get_command_from_user (void) { GdkEventKey event; if (intercept_scorearea_keypress (&event)) { gchar *command = process_key_event (&event, &return_command); if (command == NULL) return SCM_BOOL_F; if (*command == 0) { //can be two-key shortcut if (intercept_scorearea_keypress (&event)) { command = process_key_event (&event, &return_command); if (command == NULL) return SCM_BOOL_F; } else return SCM_BOOL_F; } write_status (Denemo.project); SCM scm = scm_from_locale_string (command); //command is from lookup_name_from... functions, do not free. return scm; } return SCM_BOOL_F; } /*UNUSED static void get_drag_offset (GtkWidget * dialog, gint response_id, GtkLabel * label) { g_object_set_data (G_OBJECT (dialog), "offset-response", (gpointer) (intptr_t) response_id); if (response_id < 0) gtk_main_quit (); gint offsetx, offsety; offsetx = (intptr_t) g_object_get_data (G_OBJECT (Denemo.printarea), "offsetx"); offsety = (intptr_t) g_object_get_data (G_OBJECT (Denemo.printarea), "offsety"); gchar *text = g_strdup_printf ("Offset now %d %d. Drag again in the print window to change\nOr click OK to apply the position shift", offsetx, offsety); gtk_label_set_text (label, text); g_free (text); }*/ static void get_drag_pad (GtkWidget * dialog, gint response_id, GtkLabel * label) { g_object_set_data (G_OBJECT (dialog), "pad-response", (gpointer) (intptr_t) response_id); if (response_id < 0) gtk_main_quit (); gint padding; padding = (intptr_t) g_object_get_data (G_OBJECT (Denemo.printarea), "padding"); gchar *text = g_strdup_printf ("Padding now %d. Drag again in the print window to change\nOr click OK to apply the padding to the graphical object belonging to the directive", padding); gtk_label_set_text (label, text); g_free (text); } /* return a string representing the relative font size the user wishes to use*/ SCM scheme_get_relative_font_size (void) { if (Denemo.printarea == NULL) return SCM_BOOL (FALSE); gchar *value = g_object_get_data (G_OBJECT (Denemo.printarea), "font-size"); if (value) g_free (value); value = string_dialog_entry (Denemo.project, "Font Size", "Give a value (+/-) to adjust font size by", "0"); if (!value) value = g_strdup ("0"); gchar *clean = g_strdup_printf ("%d", atoi (value)); g_free (value); g_object_set_data (G_OBJECT (Denemo.printarea), "font-size", (gpointer) clean); return scm_from_locale_stringn (clean, strlen (clean)); } void get_clipboard (DenemoAction * action, DenemoScriptParam * param); /* return a string from the X selection */ SCM scheme_get_text_selection (void) { SCM ret; DenemoScriptParam param; get_clipboard (NULL, ¶m); if (param.status) { ret = scm_from_locale_stringn (param.string->str, param.string->len); g_string_free (param.string, TRUE); } else ret = SCM_BOOL (FALSE); return ret; } /* return a string representing the padding desired for some lilypond graphic or #f if no printarea or user cancels*/ SCM scheme_get_padding (void) { SCM ret; if (Denemo.printarea == NULL) return SCM_BOOL (FALSE); if (g_object_get_data (G_OBJECT (Denemo.printarea), "pad-dialog")) { warningdialog (_("Already in a padding dialog")); return SCM_BOOL_F; } gint padding = (intptr_t) g_object_get_data (G_OBJECT (Denemo.printarea), "padding"); GtkWidget *dialog = gtk_dialog_new_with_buttons ("Select Padding in Print Window", GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); g_object_set_data (G_OBJECT (Denemo.printarea), "pad-dialog", (gpointer) dialog); GtkWidget *vbox = gtk_vbox_new (FALSE, 8); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), vbox); gchar *text = g_strdup_printf ("Current padding is %d\nUse right click in print window to change this\nClick OK to apply the padding to the music item drawn by the directive", padding); GtkWidget *label = gtk_label_new (text); g_free (text); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0); gtk_widget_show_all (dialog); gint val; g_signal_connect (dialog, "response", G_CALLBACK (get_drag_pad), label); gtk_widget_show_all (dialog); gtk_main (); padding = (intptr_t) g_object_get_data (G_OBJECT (Denemo.printarea), "padding"); val = (intptr_t) g_object_get_data (G_OBJECT (dialog), "pad-response"); g_object_set_data (G_OBJECT (Denemo.printarea), "pad-dialog", NULL); gtk_widget_destroy (dialog); if (val == GTK_RESPONSE_ACCEPT) { gchar *pad = g_strdup_printf ("%d", padding / 10); ret = scm_from_locale_string (pad); g_free (pad); } else ret = SCM_BOOL (FALSE); return ret; } /* create a dialog with the options & return the one chosen, of #f if the user cancels */ SCM scheme_get_option (SCM options, SCM title) { gchar *response = NULL; size_t length; gchar *thetitle = NULL; //gchar *str=NULL; if (scm_is_string (title)) thetitle = scm_to_locale_string (title); if (scm_is_string (options)) { char *str_unterm; str_unterm = scm_to_locale_stringn (options, &length); response = get_option (thetitle, str_unterm, length); //returns NULL or a pointer to a location in str_unterm //g_debug("Got %p holding %s\n", response, response); if (response) response = g_strdup (response); if (str_unterm) free (str_unterm); } if (response) { SCM ret = scm_from_locale_stringn (response, strlen (response)); //g_debug("Freeing %p holding %s\n", response, response); g_free (response); //FIXME the g_strdup above is not needed? return ret; //return scm_from_locale_stringn (response, strlen(response)); } else { return SCM_BOOL_F; } } /* Scheme interface to DenemoDirectives (formerly LilyPond directives attached to notes/chords) */ SCM scheme_lock_directive (SCM lock) { DenemoObject *curObj; DenemoDirective *directive; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != LILYDIRECTIVE) || !(directive = (DenemoDirective *) curObj->object)) return SCM_BOOL (FALSE); directive->locked = scm_is_true (lock); return SCM_BOOL_T; } /* store the script to be invoked as an action for a directive tagged with tag */ SCM scheme_set_action_script_for_tag (SCM tag, SCM script) { if (scm_is_string (tag)) { char *the_tag; the_tag = scm_to_locale_string (tag); if (scm_is_string (script)) { char *the_script; the_script = scm_to_locale_string (script); gchar *stored_script = g_strdup (the_script); //FIXME free (the_script); set_action_script_for_tag (the_tag, stored_script); if (the_tag) free (the_tag); return SCM_BOOL (TRUE); } if (the_tag) free (the_tag); } return SCM_BOOL (FALSE); } SCM scheme_put_standalone_directive (SCM tag, SCM width) { if (scm_is_string (tag)) { char *the_tag; gint pixelwidth = 40; if (scm_is_integer (width)) pixelwidth = scm_to_int (width); the_tag = scm_to_locale_string (tag); put_standalone_directive (the_tag, pixelwidth); if (the_tag) free (the_tag); return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_choose_tag_at_cursor (void) { DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data)) return SCM_BOOL_F; gchar *tag; gboolean is_note = choose_tag_at_cursor (&tag); if (tag) { if (curObj->type == CHORD) return scm_cons (scm_from_locale_string (tag), scm_from_bool (is_note)); else return scm_from_locale_string (tag); } return SCM_BOOL_F; } SCM scheme_get_script_for_directive (SCM tagname, SCM isnote) { DenemoObject *curObj; SCM ret = SCM_BOOL_F; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD)) return SCM_BOOL_F; gchar *tag, *script; gboolean note = scm_is_true (isnote); if (scm_is_string (tagname)) { tag = scm_to_locale_string (tagname); DenemoDirective *directive = note ? get_note_directive (tag) : find_directive (((chord *) curObj->object)->directives, tag); if (directive) { Denemo.project->movement->directive_on_clipboard = (gpointer) directive; script = get_script_for_directive (directive, note ? "note" : "chord"); ret = scm_from_locale_string (script); g_free (script); } } return ret; } SCM scheme_directive_change_tag (SCM tag) { DenemoObject *curObj; if (scm_is_string (tag)) { gchar *thetag = scm_to_locale_string (tag); DenemoDirective *directive; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != LILYDIRECTIVE) || !(directive = (DenemoDirective *) curObj->object)) return SCM_BOOL (FALSE); if (directive->tag == NULL) directive->tag = g_string_new (""); g_string_assign (directive->tag, thetag); g_free (thetag); return SCM_BOOL_T; } return SCM_BOOL_F; } #define GET_NTH_TAG(what)\ SCM scheme_##what##_directive_get_nth_tag(SCM index) {\ gint n;\ if(!scm_is_integer(index))\ return SCM_BOOL_F;\ n = scm_to_int(index);\ extern gchar *get_nth_##what##_tag (gint n);\ gchar *val = get_nth_##what##_tag (n);\ if(val) return scm_from_locale_stringn (val, strlen(val));\ return SCM_BOOL_F;\ } GET_NTH_TAG (chord); GET_NTH_TAG (note); GET_NTH_TAG (staff); GET_NTH_TAG (voice); GET_NTH_TAG (score); GET_NTH_TAG (clef); GET_NTH_TAG (timesig); GET_NTH_TAG (tuplet); GET_NTH_TAG (stemdirective); GET_NTH_TAG (keysig); GET_NTH_TAG (scoreheader); GET_NTH_TAG (header); GET_NTH_TAG (paper); GET_NTH_TAG (layout); GET_NTH_TAG (movementcontrol); #undef GET_NTH_TAG #define PRIORITIZE_TAG(what)\ SCM scheme_##what##_directive_prioritize_tag(SCM name) {\ gchar *tag;\ if(!scm_is_string(name))\ return SCM_BOOL_F;\ tag = scm_to_locale_string (name);\ extern gboolean prioritize_##what##_tag (gchar *name);\ gboolean val = prioritize_##what##_tag (tag);\ if(val) return name;\ return SCM_BOOL_F;\ } PRIORITIZE_TAG (chord); PRIORITIZE_TAG (note); PRIORITIZE_TAG (staff); PRIORITIZE_TAG (voice); PRIORITIZE_TAG (score); PRIORITIZE_TAG (clef); PRIORITIZE_TAG (timesig); PRIORITIZE_TAG (tuplet); PRIORITIZE_TAG (stemdirective); PRIORITIZE_TAG (keysig); PRIORITIZE_TAG (scoreheader); PRIORITIZE_TAG (header); PRIORITIZE_TAG (paper); PRIORITIZE_TAG (layout); PRIORITIZE_TAG (movementcontrol); #undef PRIORITIZE_TAG SCM scheme_edit_system_directive (void) { edit_system_directive (); return SCM_BOOL_T; } SCM scheme_display_directive_text_editor (SCM type, SCM tagname) { if (scm_is_string (type) && scm_is_string (tagname)) { gchar *what = scm_to_locale_string (type); gchar *tag = scm_to_locale_string (tagname); DenemoDirective *directive; if (!strcmp (what, "score")) directive = get_score_directive (tag); else directive = get_movementcontrol_directive (tag); //others - note, chord ... if (directive && directive->override & DENEMO_OVERRIDE_EDITOR) { GtkWidget *texteditor = (GtkWidget *) g_object_get_data (G_OBJECT (directive->widget), DENEMO_TEXTEDITOR_TAG); if (texteditor) { gtk_widget_show_all (gtk_widget_get_toplevel (texteditor)); gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (texteditor))); } return SCM_BOOL_T; } } return SCM_BOOL_F; } //only retrieve directives when cursor is actually on the note SCM scheme_directive_get_nth_tag_strict_note (SCM index) { gint n; if (!scm_is_integer (index)) return SCM_BOOL_F; n = scm_to_int (index); gchar *val = get_nth_strict_note_tag (n); if (val) return scm_from_locale_stringn (val, strlen (val)); return SCM_BOOL_F; } SCM scheme_directive_get_for_tag_strict_note (SCM tagname) { SCM ret = SCM_BOOL_F; const gchar *tag = NULL; if (scm_is_string (tagname)) tag = scm_to_locale_string (tagname); tag = strict_note_directive_get_tag ((gchar *) tag); if (tag) ret = scm_from_locale_string (tag); return ret; } #define GET_TAG_FN_DEF(what)\ SCM scheme_##what##_directive_get_tag(SCM tag) {\ char *tagname;\ if(!scm_is_string(tag))\ tagname = NULL;\ else { \ tagname = scm_to_locale_string(tag);\ } \ extern gchar *what##_directive_get_tag (gchar *tagname);\ gchar *val = (gchar*)what##_directive_get_tag ((gchar*)tagname);\ if(val){\ SCM ret = scm_from_locale_stringn (val, strlen(val));\ if(tagname) free(tagname);\ return ret;\ }\ if(tagname) free(tagname);\ return SCM_BOOL(FALSE);\ } GET_TAG_FN_DEF (object); GET_TAG_FN_DEF (standalone); GET_TAG_FN_DEF (chord); GET_TAG_FN_DEF (note); GET_TAG_FN_DEF (staff); GET_TAG_FN_DEF (voice); GET_TAG_FN_DEF (score); GET_TAG_FN_DEF (clef); GET_TAG_FN_DEF (timesig); GET_TAG_FN_DEF (tuplet); GET_TAG_FN_DEF (stemdirective); GET_TAG_FN_DEF (keysig); GET_TAG_FN_DEF (scoreheader); GET_TAG_FN_DEF (header); GET_TAG_FN_DEF (paper); GET_TAG_FN_DEF (layout); GET_TAG_FN_DEF (movementcontrol); #undef GET_TAG_FN_DEF #define ACTIVATE_FN_DEF(what)\ SCM scheme_activate_##what##_directive(SCM tag) {\ if(!scm_is_string(tag)){\ return SCM_BOOL(FALSE);\ }\ char *tagname;\ tagname = scm_to_locale_string(tag);\ extern gboolean activate_##what##_directive (gchar *tagname);\ gboolean ret = activate_##what##_directive (tagname);\ if(tagname) g_free(tagname);\ return SCM_BOOL(ret);\ } #define EDIT_FN_DEF(what)\ SCM scheme_text_edit_##what##_directive(SCM tag) {\ if(!scm_is_string(tag)){\ return SCM_BOOL(text_edit_##what##_directive (NULL));\ }\ char *tagname;\ tagname = scm_to_locale_string(tag);\ extern gboolean text_edit_##what##_directive (gchar *tagname);\ gboolean ret = text_edit_##what##_directive (tagname);\ if(tagname) g_free(tagname);\ return SCM_BOOL(ret);\ } #define DELETE_FN_DEF(what)\ SCM scheme_delete_##what##_directive(SCM tag) {\ if(!scm_is_string(tag)){\ return SCM_BOOL(FALSE);\ }\ char *tagname;\ tagname = scm_to_locale_string(tag);\ extern gboolean delete_##what##_directive (gchar *tagname);\ gboolean ret = delete_##what##_directive (tagname);\ if(tagname) free(tagname);\ return SCM_BOOL(ret);\ } #define EDIT_DELETE_FN_DEF(what) \ EDIT_FN_DEF(what) \ DELETE_FN_DEF(what) \ ACTIVATE_FN_DEF(what) EDIT_FN_DEF (standalone); EDIT_DELETE_FN_DEF (note); EDIT_DELETE_FN_DEF (chord); EDIT_DELETE_FN_DEF (staff); EDIT_DELETE_FN_DEF (voice); EDIT_DELETE_FN_DEF (score); #define GETFUNC_DEF(what, field)\ SCM scheme_##what##_directive_get_##field(SCM tag) {\ if(!scm_is_string(tag)){\ return SCM_BOOL(FALSE);\ }\ char *tagname;\ tagname = scm_to_locale_string(tag);\ extern gchar* what##_directive_get_##field(gchar *tagname);\ gchar *value = (gchar*)what##_directive_get_##field((gchar*)tagname);\ if(tagname) free(tagname);\ if(value && *value){\ return scm_from_locale_string(value);\ }\ return SCM_BOOL(FALSE);\ } static void structural_change_note (void) { } static void structural_change_chord (void) { } static void structural_change_clef (void) { if (!(Denemo.project->movement->currentobject && (((DenemoObject*)(Denemo.project->movement->currentobject->data))->type == CLEF))) signal_structural_change (Denemo.project); } static void structural_change_timesig (void) { if (!(Denemo.project->movement->currentobject && (((DenemoObject*)(Denemo.project->movement->currentobject->data))->type == TIMESIG))) signal_structural_change (Denemo.project);} static void structural_change_keysig (void) { if (!(Denemo.project->movement->currentobject && (((DenemoObject*)(Denemo.project->movement->currentobject->data))->type == KEYSIG))) signal_structural_change (Denemo.project);} static void structural_change_stemdirective (void) { } static void structural_change_tuplet (void) { } static void structural_change_standalone (void) { } static void structural_change_score (void) { signal_structural_change (Denemo.project); } static void structural_change_scoreheader (void) { signal_structural_change (Denemo.project); } static void structural_change_movementcontrol (void) { signal_structural_change (Denemo.project); } static void structural_change_paper (void) { signal_structural_change (Denemo.project); } static void structural_change_header (void) { signal_structural_change (Denemo.project); } static void structural_change_layout (void) { signal_structural_change (Denemo.project); } static void structural_change_staff (void) { signal_structural_change (Denemo.project); } static void structural_change_voice (void) { signal_structural_change (Denemo.project); } static void structural_change_object (void) { } //not sure what this is - some sort of temporary marker thing Nils devised. #define PUTFUNC_DEF(what, field)\ SCM scheme_##what##_directive_put_##field(SCM tag, SCM value) {\ if((!scm_is_string(tag))||(!scm_is_string(value)))\ return SCM_BOOL(FALSE);\ char *tagname;\ tagname = scm_to_locale_string(tag);\ char *valuename;\ valuename = scm_to_locale_string(value);\ extern gboolean what##_directive_put_##field (gchar *tagname, gchar *valuename);\ gboolean ret = what##_directive_put_##field ((gchar*)tagname, (gchar*)valuename);\ structural_change_##what ();\ if(tagname) free(tagname);\ if(valuename) free(valuename);\ return SCM_BOOL(ret);\ } // block to clone for new GString entries in DenemoDirective GETFUNC_DEF (note, display); GETFUNC_DEF (chord, display); GETFUNC_DEF (standalone, display); GETFUNC_DEF (staff, display); GETFUNC_DEF (voice, display); GETFUNC_DEF (score, display); GETFUNC_DEF (movementcontrol, display); PUTFUNC_DEF (note, display); PUTFUNC_DEF (chord, display); PUTFUNC_DEF (standalone, display); PUTFUNC_DEF (staff, display); PUTFUNC_DEF (voice, display); PUTFUNC_DEF (score, display); PUTFUNC_DEF (movementcontrol, display); // end of block to clone ??? there are now stem tuplet and keysigs as well - see grob GETFUNC_DEF (note, grob); GETFUNC_DEF (chord, grob); GETFUNC_DEF (standalone, grob); GETFUNC_DEF (standalone, graphic_name); GETFUNC_DEF (chord, graphic_name); GETFUNC_DEF (note, graphic_name); GETFUNC_DEF (clef, graphic_name); GETFUNC_DEF (keysig, graphic_name); GETFUNC_DEF (timesig, graphic_name); GETFUNC_DEF (tuplet, graphic_name); GETFUNC_DEF (staff, grob); GETFUNC_DEF (voice, grob); GETFUNC_DEF (score, grob); // UNUSED: GETFUNC_DEF (movementcontrol, grob); GETFUNC_DEF (clef, grob); GETFUNC_DEF (timesig, grob); GETFUNC_DEF (tuplet, grob); GETFUNC_DEF (stemdirective, grob); GETFUNC_DEF (keysig, grob); PUTFUNC_DEF (note, grob); PUTFUNC_DEF (chord, grob); PUTFUNC_DEF (standalone, grob); // UNUSED: PUTFUNC_DEF(staff, grob) // UNUSED: PUTFUNC_DEF(voice, grob) PUTFUNC_DEF (score, grob); // UNUSED: PUTFUNC_DEF(movementcontrol, grob) PUTFUNC_DEF (clef, grob); PUTFUNC_DEF (timesig, grob); PUTFUNC_DEF (tuplet, grob); PUTFUNC_DEF (stemdirective, grob); PUTFUNC_DEF (keysig, grob); GETFUNC_DEF (note, data); GETFUNC_DEF (chord, data); GETFUNC_DEF (standalone, data); GETFUNC_DEF (staff, data); GETFUNC_DEF (voice, data); GETFUNC_DEF (score, data); GETFUNC_DEF (scoreheader, data); GETFUNC_DEF (header, data); GETFUNC_DEF (paper, data); GETFUNC_DEF (layout, data); GETFUNC_DEF (movementcontrol, data); GETFUNC_DEF (clef, data); GETFUNC_DEF (timesig, data); GETFUNC_DEF (tuplet, data); GETFUNC_DEF (stemdirective, data); GETFUNC_DEF (keysig, data); PUTFUNC_DEF (note, data); PUTFUNC_DEF (chord, data); PUTFUNC_DEF (standalone, data); PUTFUNC_DEF (staff, data); PUTFUNC_DEF (voice, data); PUTFUNC_DEF (score, data); PUTFUNC_DEF (scoreheader, data); PUTFUNC_DEF (header, data); PUTFUNC_DEF (paper, data); PUTFUNC_DEF (layout, data); PUTFUNC_DEF (movementcontrol, data); PUTFUNC_DEF (clef, data); PUTFUNC_DEF (timesig, data); PUTFUNC_DEF (tuplet, data); PUTFUNC_DEF (stemdirective, data); PUTFUNC_DEF (keysig, data); GETFUNC_DEF (note, midibytes); GETFUNC_DEF (chord, midibytes); GETFUNC_DEF (keysig, midibytes); GETFUNC_DEF (timesig, midibytes); GETFUNC_DEF (tuplet, midibytes); GETFUNC_DEF (clef, midibytes); GETFUNC_DEF (standalone, midibytes); GETFUNC_DEF (staff, midibytes); GETFUNC_DEF (voice, midibytes); GETFUNC_DEF (score, midibytes); GETFUNC_DEF (movementcontrol, midibytes); PUTFUNC_DEF (note, midibytes); PUTFUNC_DEF (chord, midibytes); PUTFUNC_DEF (keysig, midibytes); PUTFUNC_DEF (timesig, midibytes); PUTFUNC_DEF (tuplet, midibytes); PUTFUNC_DEF (clef, midibytes); PUTFUNC_DEF (standalone, midibytes); PUTFUNC_DEF (staff, midibytes); PUTFUNC_DEF (voice, midibytes); PUTFUNC_DEF (score, midibytes); PUTFUNC_DEF (movementcontrol, midibytes); GETFUNC_DEF (note, prefix); GETFUNC_DEF (note, postfix); PUTFUNC_DEF (note, prefix); // UNUSED: PUTFUNC_DEF(clef, prefix) PUTFUNC_DEF (note, postfix); GETFUNC_DEF (score, prefix); GETFUNC_DEF (score, postfix); PUTFUNC_DEF (score, prefix); PUTFUNC_DEF (score, postfix); PUTFUNC_DEF (staff, prefix); PUTFUNC_DEF (voice, prefix); GETFUNC_DEF (staff, prefix); GETFUNC_DEF (voice, prefix); PUTFUNC_DEF (staff, postfix); PUTFUNC_DEF (voice, postfix); GETFUNC_DEF (staff, postfix); GETFUNC_DEF (voice, postfix); GETFUNC_DEF (chord, prefix); GETFUNC_DEF (chord, postfix); PUTFUNC_DEF (chord, prefix); PUTFUNC_DEF (chord, postfix); GETFUNC_DEF (standalone, prefix); GETFUNC_DEF (standalone, postfix); PUTFUNC_DEF (standalone, prefix); PUTFUNC_DEF (standalone, postfix); #define ALLOW_PUTFUNC_DEF(what)\ SCM scheme_##what##_directive_put_allow(SCM tag, SCM value) {\ if((!scm_is_string(tag))||(!scm_is_integer(value))){\ return SCM_BOOL(FALSE);\ }\ char *tagname;\ tagname = scm_to_locale_string(tag);\ gint valuename = scm_to_int(value);\ extern gboolean what##_directive_put_allow (gchar *tag, gint value);\ gboolean ret = what##_directive_put_allow ((gchar*)tagname, valuename);\ structural_change_##what ();\ if(tagname) free(tagname);\ return SCM_BOOL(ret);\ } #define IGNORE_PUTFUNC_DEF(what)\ SCM scheme_##what##_directive_put_ignore(SCM tag, SCM value) {\ if((!scm_is_string(tag))||(!scm_is_integer(value))){\ return SCM_BOOL(FALSE);\ }\ char *tagname;\ tagname = scm_to_locale_string(tag);\ gint valuename = scm_to_int(value);\ extern gboolean what##_directive_put_ignore (gchar *tag, gint value);\ gboolean ret = what##_directive_put_ignore ((gchar*)tagname, valuename);\ structural_change_##what ();\ if(tagname) free(tagname);\ return SCM_BOOL(ret);\ } #define INT_PUTFUNC_DEF(what, field)\ SCM scheme_##what##_directive_put_##field(SCM tag, SCM value) {\ if((!scm_is_string(tag))||(!scm_is_integer(value))){\ return SCM_BOOL(FALSE);\ }\ char *tagname;\ tagname = scm_to_locale_string(tag);\ gint valuename = scm_to_int(value);\ extern gboolean what##_directive_put_##field (gchar *tag, gint value);\ gboolean ret = what##_directive_put_##field ((gchar*)tagname, valuename);\ structural_change_##what ();\ if(tagname) free(tagname);\ return SCM_BOOL(ret);\ } #define INT_GETFUNC_DEF(what, field)\ SCM scheme_##what##_directive_get_##field(SCM tag) {\ if(!scm_is_string(tag)){\ return SCM_BOOL(FALSE);\ }\ char *tagname;\ tagname = scm_to_locale_string(tag);\ extern gint what##_directive_get_##field (gchar *tag);\ gint ret = what##_directive_get_##field ((gchar*)tagname);\ if(tagname) free(tagname);\ return scm_from_int(ret);\ } #define PUTGRAPHICFUNC_DEF(what)\ SCM scheme_##what##_directive_put_graphic(SCM tag, SCM value) {\ if((!scm_is_string(tag))||(!scm_is_string(value))){\ return SCM_BOOL(FALSE);\ }\ char *tagname;\ tagname = scm_to_locale_string(tag);\ char *valuename;\ valuename = scm_to_locale_string(value);\ gboolean ret = what##_directive_put_graphic ((gchar*)tagname, (gchar*)valuename);\ structural_change_##what ();\ if(tagname) free(tagname);\ if(valuename) free(valuename);\ return SCM_BOOL(ret);\ } PUTGRAPHICFUNC_DEF (note); PUTGRAPHICFUNC_DEF (chord); PUTGRAPHICFUNC_DEF (standalone); PUTGRAPHICFUNC_DEF (staff); PUTGRAPHICFUNC_DEF (voice); PUTGRAPHICFUNC_DEF (score); // block to copy for new int field in directive INT_PUTFUNC_DEF (note, minpixels); INT_PUTFUNC_DEF (chord, minpixels); INT_PUTFUNC_DEF (standalone, minpixels); INT_PUTFUNC_DEF (staff, minpixels); INT_PUTFUNC_DEF (voice, minpixels); INT_PUTFUNC_DEF (score, minpixels); INT_PUTFUNC_DEF (clef, minpixels); INT_PUTFUNC_DEF (timesig, minpixels); INT_PUTFUNC_DEF (tuplet, minpixels); INT_PUTFUNC_DEF (stemdirective, minpixels); INT_PUTFUNC_DEF (keysig, minpixels); INT_PUTFUNC_DEF (scoreheader, minpixels); INT_PUTFUNC_DEF (header, minpixels); INT_PUTFUNC_DEF (paper, minpixels); INT_PUTFUNC_DEF (layout, minpixels); INT_PUTFUNC_DEF (movementcontrol, minpixels); INT_GETFUNC_DEF (note, minpixels); INT_GETFUNC_DEF (chord, minpixels); INT_GETFUNC_DEF (standalone, minpixels); INT_GETFUNC_DEF (staff, minpixels); INT_GETFUNC_DEF (voice, minpixels); INT_GETFUNC_DEF (score, minpixels); INT_GETFUNC_DEF (clef, minpixels); INT_GETFUNC_DEF (timesig, minpixels); INT_GETFUNC_DEF (tuplet, minpixels); INT_GETFUNC_DEF (stemdirective, minpixels); INT_GETFUNC_DEF (keysig, minpixels); INT_GETFUNC_DEF (scoreheader, minpixels); INT_GETFUNC_DEF (header, minpixels); INT_GETFUNC_DEF (paper, minpixels); INT_GETFUNC_DEF (layout, minpixels); INT_GETFUNC_DEF (movementcontrol, minpixels); // end block to ocpy for new int field in directive INT_PUTFUNC_DEF (note, override); INT_PUTFUNC_DEF (chord, override); INT_PUTFUNC_DEF (standalone, override); INT_PUTFUNC_DEF (staff, override); INT_PUTFUNC_DEF (voice, override); INT_PUTFUNC_DEF (score, override); INT_GETFUNC_DEF (note, override); INT_GETFUNC_DEF (chord, override); INT_GETFUNC_DEF (standalone, override); INT_GETFUNC_DEF (staff, override); INT_GETFUNC_DEF (voice, override); INT_GETFUNC_DEF (score, override); IGNORE_PUTFUNC_DEF (note); IGNORE_PUTFUNC_DEF (chord); IGNORE_PUTFUNC_DEF (standalone); IGNORE_PUTFUNC_DEF (staff); IGNORE_PUTFUNC_DEF (voice); // UNUSED: INT_PUTFUNC_DEF (standalone) // UNUSED: INT_GETFUNC_DEF (note) // UNUSED: INT_GETFUNC_DEF (chord) // UNUSED: INT_GETFUNC_DEF (standalone) ALLOW_PUTFUNC_DEF (note); ALLOW_PUTFUNC_DEF (chord); ALLOW_PUTFUNC_DEF (standalone); ALLOW_PUTFUNC_DEF (staff); ALLOW_PUTFUNC_DEF (voice); // UNUSED: INT_GETFUNC_DEF (note) // UNUSED: INT_GETFUNC_DEF (chord) // UNUSED: INT_GETFUNC_DEF (standalone) INT_PUTFUNC_DEF (note, ty); INT_PUTFUNC_DEF (chord, ty); INT_PUTFUNC_DEF (standalone, ty); INT_GETFUNC_DEF (note, ty); INT_GETFUNC_DEF (chord, ty); INT_GETFUNC_DEF (standalone, ty); INT_PUTFUNC_DEF (note, tx); INT_PUTFUNC_DEF (chord, tx); INT_PUTFUNC_DEF (standalone, tx); INT_GETFUNC_DEF (note, tx); INT_GETFUNC_DEF (chord, tx); INT_GETFUNC_DEF (standalone, tx); INT_PUTFUNC_DEF (note, gy); INT_PUTFUNC_DEF (chord, gy); INT_PUTFUNC_DEF (standalone, gy); INT_GETFUNC_DEF (note, gy); INT_GETFUNC_DEF (chord, gy); INT_GETFUNC_DEF (standalone, gy); INT_PUTFUNC_DEF (note, gx); INT_PUTFUNC_DEF (chord, gx); INT_PUTFUNC_DEF (standalone, gx); INT_GETFUNC_DEF (note, gx); INT_GETFUNC_DEF (chord, gx); INT_GETFUNC_DEF (standalone, gx); INT_GETFUNC_DEF (note, width); INT_GETFUNC_DEF (chord, width); INT_GETFUNC_DEF (standalone, width); INT_GETFUNC_DEF (note, height); INT_GETFUNC_DEF (chord, height); INT_GETFUNC_DEF (standalone, height); INT_GETFUNC_DEF (score, tx); INT_GETFUNC_DEF (score, ty); INT_GETFUNC_DEF (score, gx); INT_GETFUNC_DEF (score, gy); INT_GETFUNC_DEF (score, width); INT_GETFUNC_DEF (score, height); ALLOW_PUTFUNC_DEF (score); IGNORE_PUTFUNC_DEF (score); INT_PUTFUNC_DEF (score, tx); INT_PUTFUNC_DEF (score, ty); INT_PUTFUNC_DEF (score, gx); INT_PUTFUNC_DEF (score, gy); INT_GETFUNC_DEF (object, minpixels); INT_PUTFUNC_DEF (object, minpixels); DELETE_FN_DEF (object); // block to copy for new type of directive, !!minpixels is done in block to copy for new fields!! GETFUNC_DEF (clef, prefix) GETFUNC_DEF (clef, postfix) GETFUNC_DEF (clef, display) PUTFUNC_DEF (clef, prefix) PUTFUNC_DEF (clef, postfix) PUTFUNC_DEF (clef, display) PUTGRAPHICFUNC_DEF (clef); ALLOW_PUTFUNC_DEF (clef); IGNORE_PUTFUNC_DEF (clef); INT_PUTFUNC_DEF (clef, tx); INT_PUTFUNC_DEF (clef, ty); INT_PUTFUNC_DEF (clef, gx); INT_PUTFUNC_DEF (clef, gy); INT_PUTFUNC_DEF (clef, override); INT_GETFUNC_DEF (clef, tx); INT_GETFUNC_DEF (clef, ty); INT_GETFUNC_DEF (clef, gx); INT_GETFUNC_DEF (clef, gy); INT_GETFUNC_DEF (clef, override); INT_GETFUNC_DEF (clef, width); INT_GETFUNC_DEF (clef, height); EDIT_DELETE_FN_DEF (clef); // end block GETFUNC_DEF (timesig, prefix) GETFUNC_DEF (timesig, postfix) GETFUNC_DEF (timesig, display) PUTFUNC_DEF (timesig, prefix) PUTFUNC_DEF (timesig, postfix) PUTFUNC_DEF (timesig, display) PUTGRAPHICFUNC_DEF (timesig); ALLOW_PUTFUNC_DEF (timesig); IGNORE_PUTFUNC_DEF (timesig); INT_PUTFUNC_DEF (timesig, tx); INT_PUTFUNC_DEF (timesig, ty); INT_PUTFUNC_DEF (timesig, gx); INT_PUTFUNC_DEF (timesig, gy); INT_PUTFUNC_DEF (timesig, override); INT_GETFUNC_DEF (timesig, tx); INT_GETFUNC_DEF (timesig, ty); INT_GETFUNC_DEF (timesig, gx); INT_GETFUNC_DEF (timesig, gy); INT_GETFUNC_DEF (timesig, override); INT_GETFUNC_DEF (timesig, width); INT_GETFUNC_DEF (timesig, height); EDIT_DELETE_FN_DEF (timesig); GETFUNC_DEF (tuplet, prefix); GETFUNC_DEF (tuplet, postfix); GETFUNC_DEF (tuplet, display); PUTFUNC_DEF (tuplet, prefix); PUTFUNC_DEF (tuplet, postfix); PUTFUNC_DEF (tuplet, display); PUTGRAPHICFUNC_DEF (tuplet); ALLOW_PUTFUNC_DEF (tuplet); IGNORE_PUTFUNC_DEF (tuplet); INT_PUTFUNC_DEF (tuplet, tx); INT_PUTFUNC_DEF (tuplet, ty); INT_PUTFUNC_DEF (tuplet, gx); INT_PUTFUNC_DEF (tuplet, gy); INT_PUTFUNC_DEF (tuplet, override); INT_GETFUNC_DEF (tuplet, tx); INT_GETFUNC_DEF (tuplet, ty); INT_GETFUNC_DEF (tuplet, gx); INT_GETFUNC_DEF (tuplet, gy); INT_GETFUNC_DEF (tuplet, override); INT_GETFUNC_DEF (tuplet, width); INT_GETFUNC_DEF (tuplet, height); EDIT_DELETE_FN_DEF (tuplet); GETFUNC_DEF (stemdirective, prefix); GETFUNC_DEF (stemdirective, postfix); GETFUNC_DEF (stemdirective, display); PUTFUNC_DEF (stemdirective, prefix); PUTFUNC_DEF (stemdirective, postfix); PUTFUNC_DEF (stemdirective, display); PUTGRAPHICFUNC_DEF (stemdirective); ALLOW_PUTFUNC_DEF (stemdirective); IGNORE_PUTFUNC_DEF (stemdirective); INT_PUTFUNC_DEF (stemdirective, tx); INT_PUTFUNC_DEF (stemdirective, ty); INT_PUTFUNC_DEF (stemdirective, gx); INT_PUTFUNC_DEF (stemdirective, gy); INT_PUTFUNC_DEF (stemdirective, override); INT_GETFUNC_DEF (stemdirective, tx); INT_GETFUNC_DEF (stemdirective, ty); INT_GETFUNC_DEF (stemdirective, gx); INT_GETFUNC_DEF (stemdirective, gy); INT_GETFUNC_DEF (stemdirective, override); INT_GETFUNC_DEF (stemdirective, width); INT_GETFUNC_DEF (stemdirective, height); EDIT_DELETE_FN_DEF (stemdirective); GETFUNC_DEF (keysig, prefix); GETFUNC_DEF (keysig, postfix); GETFUNC_DEF (keysig, display); PUTFUNC_DEF (keysig, prefix); PUTFUNC_DEF (keysig, postfix); PUTFUNC_DEF (keysig, display); PUTGRAPHICFUNC_DEF (keysig); ALLOW_PUTFUNC_DEF (keysig); IGNORE_PUTFUNC_DEF (keysig); INT_PUTFUNC_DEF (keysig, tx); INT_PUTFUNC_DEF (keysig, ty); INT_PUTFUNC_DEF (keysig, gx); INT_PUTFUNC_DEF (keysig, gy); INT_PUTFUNC_DEF (keysig, override); INT_GETFUNC_DEF (keysig, tx); INT_GETFUNC_DEF (keysig, ty); INT_GETFUNC_DEF (keysig, gx); INT_GETFUNC_DEF (keysig, gy); INT_GETFUNC_DEF (keysig, override); INT_GETFUNC_DEF (keysig, width); INT_GETFUNC_DEF (keysig, height); EDIT_DELETE_FN_DEF (keysig); GETFUNC_DEF (scoreheader, prefix); GETFUNC_DEF (scoreheader, postfix); GETFUNC_DEF (scoreheader, display); PUTFUNC_DEF (scoreheader, prefix); PUTFUNC_DEF (scoreheader, postfix); PUTFUNC_DEF (scoreheader, display); PUTGRAPHICFUNC_DEF (scoreheader); ALLOW_PUTFUNC_DEF (scoreheader); IGNORE_PUTFUNC_DEF (scoreheader); INT_PUTFUNC_DEF (scoreheader, tx); INT_PUTFUNC_DEF (scoreheader, ty); INT_PUTFUNC_DEF (scoreheader, gx); INT_PUTFUNC_DEF (scoreheader, gy); INT_PUTFUNC_DEF (scoreheader, override); INT_GETFUNC_DEF (scoreheader, tx); INT_GETFUNC_DEF (scoreheader, ty); INT_GETFUNC_DEF (scoreheader, gx); INT_GETFUNC_DEF (scoreheader, gy); INT_GETFUNC_DEF (scoreheader, override); INT_GETFUNC_DEF (scoreheader, width); INT_GETFUNC_DEF (scoreheader, height); EDIT_DELETE_FN_DEF (scoreheader); GETFUNC_DEF (header, prefix); GETFUNC_DEF (header, postfix); GETFUNC_DEF (header, display); PUTFUNC_DEF (header, prefix); PUTFUNC_DEF (header, postfix); PUTFUNC_DEF (header, display); PUTGRAPHICFUNC_DEF (header); ALLOW_PUTFUNC_DEF (header); IGNORE_PUTFUNC_DEF (header); INT_PUTFUNC_DEF (header, tx); INT_PUTFUNC_DEF (header, ty); INT_PUTFUNC_DEF (header, gx); INT_PUTFUNC_DEF (header, gy); INT_PUTFUNC_DEF (header, override); INT_GETFUNC_DEF (header, tx); INT_GETFUNC_DEF (header, ty); INT_GETFUNC_DEF (header, gx); INT_GETFUNC_DEF (header, gy); INT_GETFUNC_DEF (header, override); INT_GETFUNC_DEF (header, width); INT_GETFUNC_DEF (header, height); EDIT_DELETE_FN_DEF (header); GETFUNC_DEF (paper, prefix); GETFUNC_DEF (paper, postfix); GETFUNC_DEF (paper, display); PUTFUNC_DEF (paper, prefix); PUTFUNC_DEF (paper, postfix); PUTFUNC_DEF (paper, display); PUTGRAPHICFUNC_DEF (paper); ALLOW_PUTFUNC_DEF (paper); IGNORE_PUTFUNC_DEF (paper); INT_PUTFUNC_DEF (paper, tx); INT_PUTFUNC_DEF (paper, ty); INT_PUTFUNC_DEF (paper, gx); INT_PUTFUNC_DEF (paper, gy); INT_PUTFUNC_DEF (paper, override); INT_GETFUNC_DEF (paper, tx); INT_GETFUNC_DEF (paper, ty); INT_GETFUNC_DEF (paper, gx); INT_GETFUNC_DEF (paper, gy); INT_GETFUNC_DEF (paper, override); INT_GETFUNC_DEF (paper, width); INT_GETFUNC_DEF (paper, height); EDIT_DELETE_FN_DEF (paper); GETFUNC_DEF (layout, prefix); GETFUNC_DEF (layout, postfix); GETFUNC_DEF (layout, display); PUTFUNC_DEF (layout, prefix); PUTFUNC_DEF (layout, postfix); PUTFUNC_DEF (layout, display); PUTGRAPHICFUNC_DEF (layout); ALLOW_PUTFUNC_DEF (layout); IGNORE_PUTFUNC_DEF (layout); INT_PUTFUNC_DEF (layout, tx); INT_PUTFUNC_DEF (layout, ty); INT_PUTFUNC_DEF (layout, gx); INT_PUTFUNC_DEF (layout, gy); INT_PUTFUNC_DEF (layout, override); INT_GETFUNC_DEF (layout, tx); INT_GETFUNC_DEF (layout, ty); INT_GETFUNC_DEF (layout, gx); INT_GETFUNC_DEF (layout, gy); INT_GETFUNC_DEF (layout, override); INT_GETFUNC_DEF (layout, width); INT_GETFUNC_DEF (layout, height); EDIT_DELETE_FN_DEF (layout); GETFUNC_DEF (movementcontrol, prefix); GETFUNC_DEF (movementcontrol, postfix); PUTFUNC_DEF (movementcontrol, prefix); PUTFUNC_DEF (movementcontrol, postfix); PUTGRAPHICFUNC_DEF (movementcontrol); ALLOW_PUTFUNC_DEF (movementcontrol); IGNORE_PUTFUNC_DEF (movementcontrol); INT_PUTFUNC_DEF (movementcontrol, tx); INT_PUTFUNC_DEF (movementcontrol, ty); INT_PUTFUNC_DEF (movementcontrol, gx); INT_PUTFUNC_DEF (movementcontrol, gy); INT_PUTFUNC_DEF (movementcontrol, override); INT_GETFUNC_DEF (movementcontrol, tx); INT_GETFUNC_DEF (movementcontrol, ty); INT_GETFUNC_DEF (movementcontrol, gx); INT_GETFUNC_DEF (movementcontrol, gy); INT_GETFUNC_DEF (movementcontrol, override); INT_GETFUNC_DEF (movementcontrol, width); INT_GETFUNC_DEF (movementcontrol, height); EDIT_DELETE_FN_DEF (movementcontrol); SCM scheme_put_text_clipboard (SCM optional) { size_t length; char *str = NULL; if (scm_is_string (optional)) { str = scm_to_locale_stringn (optional, &length); GtkClipboard *clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); gtk_clipboard_set_text (clipboard, str, length); if (str) free (str); return SCM_BOOL (TRUE); } return SCM_BOOL (FALSE); } SCM scheme_get_username (void) { return scm_from_locale_string (Denemo.prefs.username->str); } SCM scheme_get_password (void) { return scm_from_locale_string (Denemo.prefs.password->str); } SCM scheme_set_midi_capture (SCM setting) { gboolean prev; prev = set_midi_capture ((setting != SCM_BOOL_F)); return prev ? SCM_BOOL_T : SCM_BOOL_F; } SCM scheme_virtual_keyboard (SCM octaves) { gint num = 6; if (scm_is_integer (octaves)) { num = scm_to_int (octaves); } create_virtual_keyboard (num); return SCM_BOOL_T; } SCM scheme_get_keyboard_state (void) { return scm_from_int (Denemo.keyboard_state); } SCM scheme_set_midi_thru (SCM set) // see also d-MidiInListening this doesn't lock the state against keyboard changes { SCM ret = scm_from_int (Denemo.keyboard_state); if (scm_is_true (set)) Denemo.keyboard_state = GDK_SHIFT_MASK; else Denemo.keyboard_state = 0; set_midi_in_status (); return ret; } SCM scheme_get_recorded_midi_on_tick (void) { smf_track_t *track = Denemo.project->movement->recorded_midi_track; if (track) { #define MIDI_NOTEOFF 0x80 #define MIDI_NOTEON 0x90 smf_event_t *event = smf_track_get_next_event (track); if (event) switch (event->midi_buffer[0] & 0xF0) { case MIDI_NOTEON: return scm_from_int (event->time_pulses); case MIDI_NOTEOFF: return scm_from_int (-event->time_pulses); default: return SCM_BOOL_F; } } return SCM_BOOL_F; } SCM scheme_get_recorded_midi_note (void) { smf_track_t *track = Denemo.project->movement->recorded_midi_track; if (track) { smf_event_t *event = NULL; if (track->next_event_number > 0 && (track->next_event_number <= track->events_array->len)) event = g_ptr_array_index (track->events_array, track->next_event_number - 1); if (event) switch (event->midi_buffer[0] & 0xF0) { case MIDI_NOTEON: case MIDI_NOTEOFF: return scm_from_int (event->midi_buffer[1]); default: return SCM_BOOL_F; } } return SCM_BOOL_F; } SCM scheme_rewind_recorded_midi (void) { smf_track_t *track = Denemo.project->movement->recorded_midi_track; if (track) { if (track->smf == NULL) { if (Denemo.project->movement->smf) { smf_add_track (Denemo.project->movement->smf, track); smf_rewind (Denemo.project->movement->smf); } else return SCM_BOOL_F; } smf_rewind (track->smf); return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_get_note_for_midi_key (SCM scm) { gint notenum = 0, offset, enshift, octave; if (scm_is_integer (scm)) notenum = scm_to_int (scm); if (notenum > 0 && notenum < 256) { notenum2enharmonic (notenum, &offset, &enshift, &octave); gchar *name = mid_c_offsettolily (offset + 7 * octave, enshift); return scm_from_locale_string (name); } return SCM_BOOL_F; } SCM scheme_get_midi (SCM bytes) { gint midi; SCM scm; gboolean success = intercept_midi_event (&midi); if (scm_is_false (bytes)) { if (!success) scm = SCM_BOOL_F; else { Denemo.project->last_source = INPUTMIDI; scm = scm_list_n (scm_from_int (midi & 0xFF), scm_from_int ((midi >> 8) & 0xFF), scm_from_int ((midi >> 16) & 0xFF), scm_from_int (midi >> 24), SCM_UNDEFINED); } } else { if (!success) midi = 0; /* scripts should detect this impossible value and take action */ else Denemo.project->last_source = INPUTMIDI; gchar *buf = (gchar *) & midi; *buf &= 0xF0; //do not return channel info scm = scm_from_int (midi); } return scm; } //Simulates a midi event, with no capture by any calling scheme script unless midi==0 SCM scheme_put_midi (SCM scm) { gchar buf[3]; gint midi; if (scm_is_list (scm)) { buf[0] = scm_to_int (scm_list_ref (scm, scm_from_int (0))); buf[1] = scm_to_int (scm_list_ref (scm, scm_from_int (1))); buf[2] = scm_to_int (scm_list_ref (scm, scm_from_int (2))); midi = TRUE; } else { midi = scm_to_int (scm); buf[0] = midi & 0xFF; buf[1] = (midi >> 8) & 0xFF; buf[2] = (midi >> 16) & 0xFF; } //g_debug("got %x\nbreaks as %x %x %x\n", midi&0xFFFFFF, buf[0], buf[1], buf[2]); if (midi) { gboolean capture = set_midi_capture (FALSE); //Turn off any capturing process_midi_event (buf); set_midi_capture (capture); //Restore any capturing that might be on } else process_midi_event (buf); return SCM_BOOL (TRUE); } SCM scheme_output_midi (SCM scm) { gchar buf[3]; gint midi = scm_to_int (scm); buf[0] = midi & 0xFF; buf[1] = (midi >> 8) & 0xFF; buf[2] = (midi >> 16) & 0xFF; play_adjusted_midi_event (buf); return SCM_BOOL_T; } /* outputs a midibytes string to MIDI out. Format of midibytes as in DenemoDirective->midibytes */ SCM scheme_output_midi_bytes (SCM input) { char *next; gint i, numbytes; gint channel; gint volume; if (!scm_is_string (input)) { return SCM_BOOL_F; } DenemoStaff *curstaffstruct = (DenemoStaff *) Denemo.project->movement->currentstaff->data; channel = get_midi_channel (curstaffstruct); volume = curstaffstruct->volume; char *string_input; string_input = scm_to_locale_string (input); gchar *bytes = substitute_midi_values (string_input, channel, volume); for (i = 0, next = bytes; *next; next++) { i++; if (*next == 0) break; } numbytes = i; unsigned char *buffer = (unsigned char *) g_malloc0 (numbytes); for (i = 0, next = bytes; i < numbytes; i++, next++) buffer[i] = (unsigned char) strtol (next, &next, 0); g_free (bytes); //g_debug("\nbuffer[0] = %x buffer[1] = %x buffer[2] = %x\n", buffer[0], buffer[1], buffer[2]); play_midi_event (DEFAULT_BACKEND, curstaffstruct->midi_port, buffer); if (string_input) free (string_input); return SCM_BOOL (TRUE); } SCM scheme_create_timebase (SCM optional) { DenemoMovement *si = Denemo.project->movement; if (si->smfsync != si->changecount) { exportmidi (NULL, si); return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_pending_midi (SCM scm) { if (scm_is_integer (scm)) { guint key = scm_to_int (scm); g_queue_push_head (Denemo.project->pending_midi, GINT_TO_POINTER (key)); return SCM_BOOL_T; } else return SCM_BOOL_F; } SCM scheme_play_midi_note (SCM note, SCM volume, SCM channel, SCM duration) { guint vol = scm_to_int (volume); gint key = scm_to_int (note); gint chan = scm_to_int (channel); gint dur = scm_to_int (duration); //g_debug("Playing %x at %f volume, %d channel for %dms\n", key, vol/255.0, channel, dur); play_note (DEFAULT_BACKEND, 0 /*port */ , chan, key, dur, vol); return SCM_BOOL (TRUE); } SCM scheme_play_midikey (SCM scm) { guint midi = scm_to_int (scm); gint key = (midi >> 8) & 0xFF; gint channel = midi & 0xF; gint volume = ((midi >> 16) & 0x7F); //g_debug("Playing %x at %f volume, %d channel\n", key, (double)volume, channel); play_note (DEFAULT_BACKEND, 0 /*port */ , channel, key, 1000 /*duration */ , volume); //g_usleep(200000); return SCM_BOOL (TRUE); } //Insert a rest without setting the prevailing duration SCM scheme_put_rest (SCM optional_duration) { gint duration; if (scm_is_integer (optional_duration)) { duration = scm_to_int (optional_duration); } else { duration = get_prevailing_duration (); } if ((duration < 0) || (duration > 7)) return SCM_BOOL_F; //FIXME should not allow spillover? dnm_insertnote (Denemo.project, duration, 0, TRUE); displayhelper (Denemo.project); //without this a call to d-AddVoice causes a crash as the chord length info has not been updated return SCM_BOOL_T; } //Insert a note without setting the prevailing duration SCM scheme_put_note (SCM optional_duration) { gint duration; if (scm_is_integer (optional_duration)) { duration = scm_to_int (optional_duration); } else { duration = get_prevailing_duration (); } if ((duration < 0) || (duration > 7)) return SCM_BOOL_F; gboolean spill = Denemo.prefs.spillover; gint mode = Denemo.project->mode; Denemo.project->mode = 0; Denemo.prefs.spillover = 0; if (scm_is_false (optional_duration)) dnm_insertnote (Denemo.project, duration, INPUTNORMAL | INPUTBLANK, FALSE); //pass #f for nonprinting note else dnm_insertnote (Denemo.project, duration, INPUTNORMAL, FALSE); Denemo.project->mode = mode; Denemo.prefs.spillover = spill; displayhelper (Denemo.project); //without this a call to d-AddVoice causes a crash as the chord length info has not been updated return SCM_BOOL_T; } //Insert a chord at the cursor notes contains space separated lilypond note names SCM scheme_insert_chord (SCM notes, SCM duration) { GList *thenotes = NULL; gint theduration; if (scm_is_integer (duration)) theduration = scm_to_int (duration); else theduration = get_prevailing_duration (); if (scm_is_string (notes)) { gchar *notestring = scm_to_locale_string (notes); gchar *thenote = strtok (notestring, " "); while (thenote) { struct twoints *data = (struct twoints *)g_malloc (sizeof (struct twoints)); interpret_lilypond_notename (thenote, &data->a, &data->b); thenotes = g_list_prepend (thenotes, data); thenote = strtok (NULL, " "); } insert_chord (thenotes, theduration); return SCM_BOOL_T; } return SCM_BOOL_F; } //Insert a rest in the given (or prevailing duration) and set the prevailing duration SCM scheme_insert_rest (SCM optional) { SCM ret = scheme_put_rest (optional); if (scm_is_integer (optional)) { gint duration = scm_to_int (optional); highlight_duration (Denemo.project, duration); } return ret; } SCM scheme_toggle_playalong (void) { pb_playalong (get_playalong_button ()); return SCM_BOOL (Denemo.project->midi_destination | MIDIPLAYALONG); } SCM scheme_toggle_conduct (void) { pb_conduct (get_conduct_button ()); return SCM_BOOL (Denemo.project->midi_destination | MIDICONDUCT); } SCM scheme_midi_record (SCM script) { if (is_playing ()) return SCM_BOOL_F; if (scm_is_string (script)) { gchar *text = scm_to_locale_string (script); pb_record (text); free (text); } else pb_record (NULL); return SCM_BOOL (Denemo.project->midi_destination | MIDIRECORD); } SCM scheme_compute_midi_note_durations (void) { return SCM_BOOL (compute_midi_note_durations ()); } SCM scheme_get_marked_midi_note (void) { SCM scm = SCM_BOOL_F; DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; if (si->recording && (si->recording->type == DENEMO_RECORDING_MIDI) && si->marked_onset) { GList *marked = si->marked_onset; DenemoRecordedNote *thenote = (DenemoRecordedNote *) marked->data; gchar *name = mid_c_offsettolily (thenote->mid_c_offset, thenote->enshift); gchar *str = g_strdup_printf ("%s", mid_c_offsettolily (thenote->mid_c_offset + 7 * thenote->octave, thenote->enshift)); scm = scm_from_locale_string (str); } return scm; } SCM scheme_get_marked_midi_note_seconds (void) { SCM scm = SCM_BOOL_F; DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; if (si->recording && (si->recording->type == DENEMO_RECORDING_MIDI) && si->marked_onset) { GList *marked = si->marked_onset; DenemoRecordedNote *thenote = (DenemoRecordedNote *) marked->data; gdouble seconds = thenote->timing / ((gdouble) si->recording->samplerate); scm = scm_from_double (seconds); } return scm; } SCM scheme_advance_marked_midi (SCM advance) { SCM scm = SCM_BOOL_F; DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; if (si->recording && (si->recording->type == DENEMO_RECORDING_MIDI)) { if (SCM_UNBNDP (advance)) { if (si->marked_onset) si->marked_onset = si->marked_onset->next; } else if (scm_is_integer (advance)) { gint i = scm_to_int (advance); if (i > 0) { while (i-- && si->marked_onset) si->marked_onset = si->marked_onset->next; } else if (i < 0) { while (i++ && si->marked_onset) si->marked_onset = si->marked_onset->prev; } else si->marked_onset = si->recording->notes; } else if (scm_is_false (advance)) { si->marked_onset = NULL; return SCM_BOOL_T; } if (si->marked_onset) scm = SCM_BOOL_T; } return scm; } SCM scheme_insert_marked_midi_note (void) { return SCM_BOOL (insert_marked_midi_note ()); } typedef struct cb_scheme_and_id { char *scheme_code; gint id; } cb_scheme_and_id; static gboolean scheme_callback_one_shot_timer (cb_scheme_and_id * scheme) { char *scheme_code = scheme->scheme_code; if (scheme->id == Denemo.project->id) call_out_to_guile (scheme_code); else g_warning ("Timer missed for gui %d", scheme->id); g_free (scheme); free (scheme_code); return FALSE; } SCM scheme_one_shot_timer (SCM duration_amount, SCM callback) { char *scheme_code; scheme_code = scm_to_locale_string (callback); gint duration = scm_to_int (duration_amount); cb_scheme_and_id *scheme = g_malloc (sizeof (cb_scheme_and_id)); scheme->scheme_code = scheme_code; scheme->id = Denemo.project->id; g_timeout_add (duration, (GSourceFunc) scheme_callback_one_shot_timer, GINT_TO_POINTER (scheme)); return SCM_BOOL (TRUE); } static gboolean scheme_callback_timer (cb_scheme_and_id * scheme) { char *scheme_code = scheme->scheme_code; if (scheme->id == Denemo.project->id) call_out_to_guile (scheme_code); else g_warning ("Timer missed for gui %d", scheme->id); return TRUE; //continue to call } SCM scheme_timer (SCM duration_amount, SCM callback) { char *scheme_code; if (scm_is_string (callback)) { scheme_code = scm_to_locale_string (callback); //FIXME check that type of callback is tring gint duration = scm_to_int (duration_amount); //g_debug("setting timer for %s after %d ms", scheme_code, duration); cb_scheme_and_id *scheme = g_malloc (sizeof (cb_scheme_and_id)); scheme->scheme_code = scheme_code; scheme->id = Denemo.project->id; g_timeout_add (duration, (GSourceFunc) scheme_callback_timer, GINT_TO_POINTER (scheme)); //if(scheme_code) free(scheme_code); return scm_from_int (GPOINTER_TO_INT (scheme)); //FIXME pointer may not fit in int } else return SCM_BOOL_F; } SCM scheme_kill_timer (SCM id) { if (scm_is_integer (id)) { //FIXME the int may not be large enough for a pointer cb_scheme_and_id *scheme = GINT_TO_POINTER (scm_to_int (id)); if (scheme) { g_source_remove_by_user_data (scheme); free (scheme->scheme_code); g_free (scheme); return SCM_BOOL_T; } } return SCM_BOOL_F; } SCM scheme_bass_figure (SCM bass, SCM harmony) { SCM ret = SCM_BOOL_F; gboolean status = FALSE; gint bassnum = scm_to_int (bass); gint harmonynum = scm_to_int (harmony); gchar *interval = determine_interval (bassnum, harmonynum, &status); if (interval) { ret = scm_cons (status ? SCM_BOOL_T : SCM_BOOL_F, scm_from_locale_string (interval)); g_free (interval); } return ret; } SCM scheme_has_figures (SCM optional) { return SCM_BOOL (((DenemoStaff *) Denemo.project->movement->currentstaff->data)->hasfigures); } SCM scheme_get_bass_figure (void) { DenemoObject *curObj; chord *thechord; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || ! (((DenemoStaff *) Denemo.project->movement->currentstaff->data)->hasfigures)) return SCM_BOOL_F; else { if ((thechord->figure == NULL) || ((((GString *) ((chord *) thechord->figure))->str) == NULL)) return scm_from_locale_string ("_"); /* the no-figure figure */ else return scm_from_locale_string (((GString *) ((chord *) thechord->figure))->str); } } //badly named: SCM scheme_put_note_name (SCM optional) { DenemoObject *curObj; chord *thechord; note *thenote; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) thechord->notes->data)) return SCM_BOOL (FALSE); else { char *str = NULL; if (scm_is_string (optional)) { str = scm_to_locale_string (optional); gint mid_c_offset; gint enshift; interpret_lilypond_notename (str, &mid_c_offset, &enshift); //g_debug("note %s gives %d and %d\n", str, mid_c_offset, enshift); modify_note (thechord, mid_c_offset, enshift, find_prevailing_clef (Denemo.project->movement)); if (str) free (str); return SCM_BOOL (TRUE); } } return SCM_BOOL (FALSE); } SCM scheme_set_accidental (SCM optional) { DenemoObject *curObj; chord *thechord; note *thenote; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) thechord->notes->data)) return SCM_BOOL (FALSE); else { GList *g; for (g = thechord->notes; g; g = g->next) { thenote = (note *) g->data; if (thenote->mid_c_offset == Denemo.project->movement->cursor_y) break; } if (g == NULL) return SCM_BOOL_F; DenemoMovement *si = Denemo.project->movement; char *str = NULL; if (scm_is_string (optional)) { str = scm_to_locale_string (optional); thenote->enshift = lilypond_to_enshift (str); } else if (scm_is_integer (optional)) thenote->enshift = scm_to_int (optional); else thenote->enshift = 0; if ((thenote->enshift < -2) || (thenote->enshift > 2)) thenote->enshift = 0; showwhichaccidentals ((objnode *) ((DenemoMeasure *) si->currentmeasure->data)->objects); // find_xes_in_measure (si, si->currentmeasurenum, si->cursortime1, // si->cursortime2); causes a crash, si is not passed correctly, why??? //thenote->mid_c_offset = interpret_lilypond_notename(str); displayhelper (Denemo.project); if (str) free (str); return SCM_BOOL (TRUE); } } //create a putnote here that takes a duration and numdots and note name, inserts a chord and calls the scheme_put_note_name above - this can be done via script at present, e.g. (d-C) (d-Change3) (d-AddDot) (d-PutNoteName "eis''") //Puts a note into the chord at the cursor PARAM lily is a string representation of the note SCM scheme_insert_note_in_chord (SCM lily) { DenemoProject *gui = Denemo.project; DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data)) return SCM_BOOL_F; #ifdef INSERT_NOTE_IN_CHORD_WORKS_ON_PREVIOUS_CHORD if (curObj->type != CHORD) { objnode *theobj = Denemo.project->movement->currentobject; while (theobj->prev) { theobj = theobj->prev; curObj = theobj->data; if (curObj->type == CHORD) break; } if (curObj->type != CHORD) return SCM_BOOL_F; } #else if (curObj->type != CHORD) return SCM_BOOL_F; #endif char *str = NULL; if (scm_is_string (lily)) { str = scm_to_locale_string (lily); gint mid_c_offset; gint enshift; interpret_lilypond_notename (str, &mid_c_offset, &enshift); //g_debug("note %s gives %d and %d\n", str, mid_c_offset, enshift); addtone (curObj, mid_c_offset, enshift); score_status (gui, TRUE); displayhelper (Denemo.project); if (str) free (str); return SCM_BOOL_T; } return SCM_BOOL (FALSE); } //return the number of objects in the copybuffer at staff m SCM scheme_get_clip_objects (SCM m) { gint staff = scm_to_int (m); gint num = get_clip_objs (staff); if (num == -1) return SCM_BOOL_F; else return scm_from_int (num); } //return the type of the nth object in the copybuffer SCM scheme_get_clip_obj_type (SCM m, SCM n) { gint value = scm_to_int (n); gint staff = scm_to_int (m); DenemoObjType type = get_clip_obj_type (staff, value); if (type == -1) return SCM_BOOL_F; else return scm_from_int (type); } //insert the nth object from the denemo copybuffer SCM scheme_put_clip_obj (SCM m, SCM n) { gint value = scm_to_int (n); gint staff = scm_to_int (m); return SCM_BOOL (insert_clip_obj (staff, value)); } SCM scheme_adjust_xes (SCM optional) { find_xes_in_all_measures (Denemo.project->movement); return SCM_BOOL_T; } static gint flash_cursor (void) { draw_score_area (); // draw_score (NULL); what was this for????? return TRUE; } SCM scheme_highlight_cursor (SCM optional) { static gint id; SCM ret = SCM_BOOL_T; gboolean old_value = Denemo.prefs.cursor_highlight; if (scm_is_bool (optional)) { Denemo.prefs.cursor_highlight = scm_is_true (optional); ret = old_value ? SCM_BOOL_T : SCM_BOOL_F; } else { Denemo.prefs.cursor_highlight = !Denemo.prefs.cursor_highlight; } if (id && !Denemo.prefs.cursor_highlight) { g_source_remove (id); id = 0; } else if (Denemo.prefs.cursor_highlight) id = g_timeout_add (500, (GSourceFunc) flash_cursor, NULL); //g_debug("Cursor highlighting %d id %d", Denemo.prefs.cursor_highlight, id); return ret; } SCM scheme_get_type (SCM at_or_before) { DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || !(DENEMO_OBJECT_TYPE_NAME (curObj))) return scm_from_locale_string ("None"); if (scm_is_true (at_or_before) && Denemo.project->movement->cursor_appending) return scm_from_locale_string ("Appending"); return scm_from_locale_string (DENEMO_OBJECT_TYPE_NAME (curObj)); } SCM scheme_get_lilypond (SCM optional) { DenemoProject *gui = Denemo.project; DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || !(DENEMO_OBJECT_TYPE_NAME (curObj))) return SCM_BOOL_F; //g_debug("Before %d %d\n", gui->lilysync, gui->changecount); if (gui->lilysync != gui->changecount) refresh_lily_cb (NULL, Denemo.project); //g_debug("After %d %d\n", gui->lilysync, gui->changecount); if (curObj->lilypond) return scm_from_locale_string (curObj->lilypond); return SCM_BOOL_F; } SCM scheme_refresh_lilypond (void) { force_lily_refresh (Denemo.project); return SCM_BOOL_T; } SCM scheme_get_tuplet (SCM optional) { DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != TUPOPEN)) return SCM_BOOL_F; GString *ratio = g_string_new (""); g_string_printf (ratio, "%d/%d", ((tupopen *) curObj->object)->numerator, ((tupopen *) curObj->object)->denominator); return scm_from_locale_string (g_string_free (ratio, FALSE)); } SCM scheme_set_tuplet (SCM ratio) { DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != TUPOPEN)) { return SCM_BOOL_F; } char *theratio; theratio = scm_to_locale_string (ratio); sscanf (theratio, "%d/%d", &((tupopen *) curObj->object)->numerator, &((tupopen *) curObj->object)->denominator); //g_debug("Set %d/%d\n", (((tupopen*)curObj->object)->numerator), (((tupopen*)curObj->object)->denominator)); free (theratio); if (((tupopen *) curObj->object)->denominator) { return SCM_BOOL_T; } ((tupopen *) curObj->object)->denominator = 1; return SCM_BOOL_F; } SCM scheme_set_background (SCM color) { if (scm_is_integer (color)) { gint value = scm_to_int (color); Denemo.color = value; draw_score_area (); if (!Denemo.non_interactive) draw_score (NULL); return SCM_BOOL_T; } return SCM_BOOL_F; } SCM scheme_get_nonprinting (SCM optional) { DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || curObj->isinvisible) return SCM_BOOL_T; return SCM_BOOL_F; } SCM scheme_set_nonprinting (SCM optional) { DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data)) return SCM_BOOL_F; if (scm_is_false (optional)) curObj->isinvisible = FALSE; else curObj->isinvisible = TRUE; return SCM_BOOL_T; } SCM scheme_is_grace (SCM optional) { DenemoObject *curObj; chord *thechord; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->is_grace)) return SCM_BOOL_F; return SCM_BOOL_T; } SCM scheme_is_tied (SCM optional) { DenemoObject *curObj; chord *thechord; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->is_tied)) return SCM_BOOL_F; return SCM_BOOL_T; } SCM scheme_is_slur_start (SCM optional) { DenemoObject *curObj; chord *thechord; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->slur_begin_p)) return SCM_BOOL_F; return SCM_BOOL_T; } SCM scheme_is_slur_end (SCM optional) { DenemoObject *curObj; chord *thechord; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->slur_end_p)) return SCM_BOOL_F; return SCM_BOOL_T; } SCM scheme_is_cresc_start (SCM optional) { DenemoObject *curObj; chord *thechord; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->crescendo_begin_p)) return SCM_BOOL_F; return SCM_BOOL_T; } SCM scheme_is_cresc_end (SCM optional) { DenemoObject *curObj; chord *thechord; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->crescendo_end_p)) return SCM_BOOL_F; return SCM_BOOL_T; } SCM scheme_is_dim_start (SCM optional) { DenemoObject *curObj; chord *thechord; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->diminuendo_begin_p)) return SCM_BOOL_F; return SCM_BOOL_T; } SCM scheme_is_dim_end (SCM optional) { DenemoObject *curObj; chord *thechord; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->diminuendo_end_p)) return SCM_BOOL_F; return SCM_BOOL_T; } SCM scheme_is_in_selection (void) { return SCM_BOOL (in_selection (Denemo.project->movement)); } SCM scheme_has_selection (void) { return SCM_BOOL (Denemo.project->movement->markstaffnum != 0); } SCM scheme_is_appending (void) { return SCM_BOOL (Denemo.project->movement->cursor_appending); } SCM scheme_clear_clipboard (SCM optional) { clearbuffer (); return SCM_BOOL (TRUE); } SCM scheme_get_staffs_in_clipboard (SCM optional) { gint num = get_staffs_in_clipboard (); if (num) return scm_from_int (num); return SCM_BOOL_F; } SCM scheme_get_measures_in_staff (SCM optional) { gint num = g_list_length (((DenemoStaff *) Denemo.project->movement->currentstaff->data)->themeasures); return scm_from_int (num); } SCM scheme_get_staffs_in_movement (SCM optional) { gint num = g_list_length (Denemo.project->movement->thescore); return scm_from_int (num); } SCM scheme_set_lines_in_staff (SCM lines) { DenemoStaff *thestaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (scm_is_integer (lines)) { gint value = scm_to_int (lines); thestaff->no_of_lines = value; displayhelper (Denemo.project); } return scm_from_int (thestaff->no_of_lines); } SCM scheme_inherit_staff_properties (void) { DenemoStaff *thestaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; DenemoStaff *prevstaff = (DenemoStaff *) (Denemo.project->movement->currentstaff->prev ? Denemo.project->movement->currentstaff->prev->data : NULL); if (prevstaff) { staff_copy (prevstaff, thestaff, FALSE); return SCM_BOOL_T; } return SCM_BOOL_F; } static SCM set_staff_range (SCM setting, gboolean hi) { DenemoStaff *thestaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (scm_is_integer (setting)) { gint value = scm_to_int (setting); *(hi ? &thestaff->range_hi : &thestaff->range_lo) = value; thestaff->range = TRUE; } if (thestaff->range) return scm_from_int (hi ? thestaff->range_hi : thestaff->range_lo); return SCM_BOOL_F; } SCM scheme_set_staff_range_hi (SCM hi) { return set_staff_range (hi, TRUE); } SCM scheme_set_staff_range_lo (SCM lo) { return set_staff_range (lo, FALSE); } SCM scheme_set_staff_range (void) { DenemoStaff *thestaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (Denemo.project->movement->currentobject) { DenemoObject *curobj = Denemo.project->movement->currentobject->data; if (curobj->type == CHORD) { chord *thechord = ((chord *) curobj->object); thestaff->range_hi = thechord->highestpitch; thestaff->range_lo = thechord->lowestpitch; thestaff->range = TRUE; return SCM_BOOL_T; } } return SCM_BOOL_F; } SCM scheme_shorten_staff_height (SCM shorten) { DenemoStaff *thestaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (scm_is_integer (shorten)) { gint value = scm_to_int (shorten); thestaff->space_shorten = value; displayhelper (Denemo.project); } return scm_from_int (thestaff->space_shorten); } SCM scheme_set_color_of_staff (SCM color) { DenemoStaff *thestaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; gint current = thestaff->color; if (scm_is_integer (color)) { gint value = scm_to_ulong (color); thestaff->color = value; displayhelper (Denemo.project); } return scm_from_ulong (thestaff->color); } SCM scheme_staff_to_voice (SCM optional) { SCM ret = SCM_BOOL_F; DenemoStaff *current = ((DenemoStaff *) Denemo.project->movement->currentstaff->data); if (Denemo.project->movement->currentstaff->prev && (current->voicecontrol == DENEMO_PRIMARY)) { current->voicecontrol |= DENEMO_SECONDARY; staff_set_current_primary (Denemo.project->movement); DenemoStaff *primary = (DenemoStaff *) Denemo.project->movement->currentprimarystaff->data; if ((current->timesig.time1 != primary->timesig.time1) || (current->timesig.time2 != primary->timesig.time2)) { warningdialog (_("Time Signatures do not match, will not make voice")); current->voicecontrol = DENEMO_PRIMARY; staff_set_current_primary (Denemo.project->movement); return SCM_BOOL_F; } if ((current->keysig.number != primary->keysig.number) || (current->keysig.isminor != primary->keysig.isminor) || (current->keysig.mode != primary->keysig.mode)) { warningdialog (_("Key Signatures do not match, will not make voice")); current->voicecontrol = DENEMO_PRIMARY; staff_set_current_primary (Denemo.project->movement); return SCM_BOOL_F; } if (current->clef.type != primary->clef.type) { warningdialog (_("This voice has a different clef from the staff it will be typeset on. This clef will be used for the display only.")); } ret = SCM_BOOL_T; draw_score_area (); score_status (Denemo.project, TRUE); if (!Denemo.non_interactive) draw_score (NULL); } return ret; } SCM scheme_voice_to_staff (SCM optional) { SCM ret = SCM_BOOL_F; if (((DenemoStaff *) Denemo.project->movement->currentstaff->data)->voicecontrol & DENEMO_SECONDARY) { ((DenemoStaff *) Denemo.project->movement->currentstaff->data)->voicecontrol = DENEMO_PRIMARY; staff_set_current_primary (Denemo.project->movement); ret = SCM_BOOL_T; score_status (Denemo.project, TRUE); draw_score_area (); } return ret; } SCM scheme_is_voice (void) { return SCM_BOOL ((((DenemoStaff *) Denemo.project->movement->currentstaff->data)->voicecontrol & DENEMO_SECONDARY)); } /* shifts the note at the cursor by the number of diatonic steps passed in */ SCM scheme_diatonic_shift (SCM optional) { DenemoProject *gui = Denemo.project; DenemoObject *curObj; chord *thechord; note *thenote; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) thechord->notes->data)) { return SCM_BOOL (FALSE); } else { char *str = NULL; if (scm_is_string (optional)) { str = scm_to_locale_string (optional); gint shift; sscanf (str, "%d", &shift); // g_debug("note shift %s ie %d\n", str, shift); modify_note (thechord, thenote->mid_c_offset + shift, curObj->keysig->accs[offsettonumber (thenote->mid_c_offset + shift)], find_prevailing_clef (Denemo.project->movement)); free (str); } } return SCM_BOOL (FALSE); } /* moves currentobject to next object by calling cursorright. Steps over barlines (i.e. cursor_appending). returns TRUE if currentobject is different after than before doing the call */ SCM scheme_next_object (void) { return SCM_BOOL (cursor_to_next_object (FALSE, FALSE)); } /* moves currentobject to prev object by calling cursorleft. Steps over barlines (i.e. cursor_appending). returns TRUE if currentobject is different after than before doing the call */ SCM scheme_prev_object (void) { return SCM_BOOL (cursor_to_prev_object (FALSE, FALSE)); } /* moves currentobject to next object in measure, if any returns TRUE if currentobject is different after than before doing the call */ SCM scheme_next_object_in_measure (void) { return SCM_BOOL (cursor_to_next_object (TRUE, FALSE)); } /* moves currentobject to previous object in measure, if any returns TRUE if currentobject is different after than before doing the call */ SCM scheme_prev_object_in_measure (void) { return SCM_BOOL (cursor_to_prev_object (TRUE, FALSE)); } SCM scheme_refresh_display (SCM optional) { displayhelper (Denemo.project); //done in displayhelper write_status(Denemo.project); return SCM_BOOL (TRUE); } SCM scheme_refresh_cache (void) { draw_score (NULL); return SCM_BOOL (TRUE); } SCM scheme_set_saved (SCM optional) { if (scm_is_false (optional)) score_status (Denemo.project, TRUE); else score_status (Denemo.project, FALSE); return SCM_BOOL (TRUE); } SCM scheme_get_saved (SCM optional) { return SCM_BOOL (!Denemo.project->notsaved); } SCM scheme_changecount (SCM count) { if (scm_is_integer (count)) { Denemo.project->changecount = scm_to_int (count); } return scm_from_int (Denemo.project->changecount); } SCM scheme_mark_status (SCM optional) { return SCM_BOOL (mark_status ()); } /* moves currentobject to next object in the selection. Steps over barlines (i.e. cursor_appending). returns TRUE if currentobject is different after than before the call */ SCM scheme_next_selected_object (SCM optional) { return SCM_BOOL (cursor_to_next_selected_object ()); } /* moves currentobject to previous object in the selection. Steps over barlines (i.e. cursor_appending). returns TRUE if currentobject is different after than before the call */ SCM scheme_prev_selected_object (SCM optional) { return SCM_BOOL (cursor_to_prev_selected_object ()); } SCM scheme_next_standalone_directive (SCM optional) { return SCM_BOOL (cursor_to_next_standalone_directive ()); } SCM scheme_prev_standalone_directive (SCM optional) { return SCM_BOOL (cursor_to_prev_standalone_directive ()); } SCM scheme_next_standalone_directive_in_measure (SCM optional) { return SCM_BOOL (cursor_to_next_standalone_in_measure ()); } SCM scheme_prev_standalone_directive_in_measure (SCM optional) { return SCM_BOOL (cursor_to_prev_standalone_in_measure ()); } SCM scheme_next_chord (SCM optional) { DenemoPosition pos; get_position (Denemo.project->movement, &pos); gboolean ret = cursor_to_next_chord (); if (!ret) goto_movement_staff_obj (NULL, -1, pos.staff, pos.measure, pos.object, pos.leftmeasurenum); return SCM_BOOL (ret); } SCM scheme_prev_chord (SCM optional) { DenemoPosition pos; get_position (Denemo.project->movement, &pos); gboolean ret = cursor_to_prev_chord (); if (!ret) goto_movement_staff_obj (NULL, -1, pos.staff, pos.measure, pos.object, pos.leftmeasurenum); return SCM_BOOL (ret); } SCM scheme_next_chord_in_measure (SCM optional) { return SCM_BOOL (cursor_to_next_chord_in_measure ()); } SCM scheme_prev_chord_in_measure (SCM optional) { return SCM_BOOL (cursor_to_prev_chord_in_measure ()); } SCM scheme_next_note (SCM optional) { return SCM_BOOL (cursor_to_next_note ()); } SCM scheme_prev_note (SCM optional) { return SCM_BOOL (cursor_to_prev_note ()); } SCM scheme_scroll_left (void) { scroll_left (); return SCM_BOOL_T; } SCM scheme_scroll_right (void) { scroll_right (); return SCM_BOOL_T; } void update_scheme_snippet_ids (void) { DenemoProject *gui = Denemo.project; GList *g; gint i; for (g = gui->rhythms, i = 1; g; g = g->next, i++) { RhythmPattern *r = (RhythmPattern *) g->data; if (r->name) { gchar *command = g_strdup_printf ("(define Snippet::%s %d)", r->name, i); call_out_to_guile (command); g_free (command); } } } SCM scheme_create_snippet_from_object (SCM name) { if (scm_is_string (name)) { char *str; str = scm_to_locale_string (name); if (Denemo.project->movement->currentobject) { DenemoObject *clonedobj = dnm_clone_object (Denemo.project->movement->currentobject->data); RhythmPattern *r = (RhythmPattern *) g_malloc0 (sizeof (RhythmPattern)); install_button_for_pattern (r, str); r->clipboard = g_list_append (NULL, g_list_append (NULL, clonedobj)); append_rhythm (r, NULL); RhythmElement *relement = (RhythmElement *) g_malloc0 (sizeof (RhythmElement)); //relement->icon = str; was wrong, must be NULL for a singleton. r->name = str; r->nickname = g_string_new (str); r->rsteps = g_list_append (NULL, relement); r->rsteps->prev = r->rsteps->next = r->rsteps; //make list circular SCM ret = scm_from_int (insert_pattern_in_toolbar (r, TRUE)); update_scheme_snippet_ids (); if (str) free (str); return ret; } if (str) free (str); } return SCM_BOOL_F; } SCM scheme_select_snippet (SCM number) { if (scm_is_integer (number)) { gint position = scm_to_int (number); GList *g = g_list_nth (Denemo.project->rhythms, position - 1); if (g) { RhythmPattern *r = g->data; if (r) { select_rhythm_pattern (r); return SCM_BOOL_T; } } } return SCM_BOOL_F; } SCM scheme_insert_snippet (SCM number, SCM select) { if (scm_is_integer (number)) { gint position = scm_to_int (number); GList *g = g_list_nth (Denemo.project->rhythms, position - 1); if (g) { RhythmPattern *r = g->data; if (r) { if (scm_is_true (select)) { select_rhythm_pattern (r); insert_note_following_pattern (Denemo.project); } else { insert_nth_rhythm (position - 1); } return SCM_BOOL_T; } } } return SCM_BOOL_F; } SCM scheme_locate_dotdenemo (SCM optional) { const gchar *dotdenemo = get_user_data_dir (TRUE); if (!dotdenemo) return SCM_BOOL (FALSE); SCM scm = scm_from_locale_string (dotdenemo); return scm; } SCM scheme_log_debug (SCM message) { if (scm_is_string (message)) { const gchar *msg = scm_to_locale_string (message); g_debug ("%s", msg); } return SCM_BOOL_T; } SCM scheme_log_info (SCM message) { if (scm_is_string (message)) { const gchar *msg = scm_to_locale_string (message); g_info ("%s", msg); } return SCM_BOOL_T; } SCM scheme_log_message (SCM message) { if (scm_is_string (message)) { const gchar *msg = scm_to_locale_string (message); g_message ("%s", msg); } return SCM_BOOL_T; } SCM scheme_log_warning (SCM message) { if (scm_is_string (message)) { const gchar *msg = scm_to_locale_string (message); g_warning ("%s", msg); } return SCM_BOOL_T; } SCM scheme_log_critical (SCM message) { if (scm_is_string (message)) { const gchar *msg = scm_to_locale_string (message); g_critical ("%s", msg); } return SCM_BOOL_T; } SCM scheme_log_error (SCM message) { if (scm_is_string (message)) { const gchar *msg = scm_to_locale_string (message); g_error ("%s", msg); } return SCM_BOOL_T; } denemo-2.2.0/src/scripting/PaxHeaders.19168/scheme-callbacks.h0000644000000000000000000000013213135434036020654 xustar0030 mtime=1500919838.359981805 30 atime=1500919920.816648472 30 ctime=1500919914.286648472 denemo-2.2.0/src/scripting/scheme-callbacks.h0000644000175000017500000012473013135434036022534 0ustar00jjbenhamjjbenham00000000000000#ifndef __SCHEME_CALLBACKS__ #define __SCHEME_CALLBACKS__ #include #include #define DENEMO_SCHEME_PREFIX "d-" #define MODELESS_STRING "Modeless" #define CLASSICMODE_STRING "ClassicMode" #define INSERTMODE_STRING "InsertMode" #define EDITMODE_STRING "EditMode" #define NOTE_E_STRING "Note" #define REST_E_STRING "Rest" #define BLANK_E_STRING "Blank" #define RHYTHM_E_STRING "Rhythm" #define ToggleToolbar_STRING "ToggleToolbar" #define TogglePlaybackControls_STRING "TogglePlaybackToolbar" #define ToggleMidiInControls_STRING "ToggleMidiInToolbar" #define ToggleRhythmToolbar_STRING "ToggleRhythmToolbar" #define ToggleActionMenu_STRING "ToggleActionMenu" #define ToggleObjectMenu_STRING "ToggleObjectMenu" #define ToggleLilyText_STRING "ToggleLilyText" #define ToggleScript_STRING "ToggleScript" #define TogglePrintView_STRING "TogglePrintView" #define TogglePlaybackView_STRING "TogglePlaybackView" #define ToggleScoreLayout_STRING "ToggleScoreLayout" #define ToggleCommandManager_STRING "ToggleCommandManager" #define ToggleLyricsView_STRING "ToggleLyricsView" #define ToggleConsoleView_STRING "ToggleConsoleView" #define ToggleScoreView_STRING "ToggleScoreView" #define ToggleScoreTitles_STRING "ToggleScoreTitles" #define QuickEdits_STRING "QuickEdits" #define RecordScript_STRING "RecordScript" #define ReadOnly_STRING "ReadOnly" typedef void (*callback_function) (DenemoAction *, DenemoScriptParam *); SCM scheme_call_callback (SCM optional, callback_function callback); void update_scheme_snippet_ids (void); SCM scheme_hide_menus (SCM); SCM scheme_hide_buttons (SCM); SCM scheme_destroy_buttons (void); SCM scheme_hide_window (SCM); SCM scheme_script_callback (SCM script, SCM params); SCM scheme_get_option (SCM str, SCM title); SCM scheme_get_text_selection (void); SCM scheme_get_padding (void); SCM scheme_get_relative_font_size (void); SCM scheme_initialize_script (SCM); SCM scheme_load_command (SCM); SCM scheme_activate_menu_item (SCM); SCM scheme_locate_dotdenemo (SCM); SCM scheme_get_type (SCM); SCM scheme_get_lilypond (SCM); SCM scheme_refresh_lilypond (void); SCM scheme_get_tuplet (SCM); SCM scheme_set_tuplet (SCM); SCM scheme_set_background (SCM); SCM scheme_get_clip_obj_type (SCM m, SCM n); SCM scheme_get_clip_objects (SCM); SCM scheme_put_clip_obj (SCM tag, SCM value); SCM scheme_clear_clipboard (SCM); SCM scheme_get_staffs_in_clipboard (SCM); SCM scheme_get_measures_in_staff (SCM); SCM scheme_inherit_staff_properties (void); SCM scheme_set_lines_in_staff (SCM); SCM scheme_set_staff_range_lo (SCM); SCM scheme_set_staff_range_hi (SCM); SCM scheme_set_staff_range (void); SCM scheme_shorten_staff_height (SCM); SCM scheme_set_color_of_staff (SCM); SCM scheme_get_staffs_in_movement (SCM); SCM scheme_staff_to_voice (SCM); SCM scheme_voice_to_staff (SCM); SCM scheme_is_voice (void); SCM scheme_adjust_xes (SCM); SCM scheme_highlight_cursor (SCM); SCM scheme_get_nonprinting (SCM); SCM scheme_set_nonprinting (SCM); SCM scheme_is_grace (SCM); SCM scheme_is_tied (SCM); SCM scheme_is_slur_start (SCM); SCM scheme_is_slur_end (SCM); SCM scheme_is_cresc_start (SCM); SCM scheme_is_cresc_end (SCM); SCM scheme_is_dim_start (SCM); SCM scheme_is_dim_end (SCM); SCM scheme_is_in_selection (void); SCM scheme_has_selection (void); SCM scheme_is_appending (void); SCM scheme_shift_cursor (SCM); SCM scheme_roman_numeral (SCM number); SCM scheme_get_movement (void); SCM scheme_get_voice_identifier (void); SCM scheme_staff_hidden (SCM set); SCM scheme_get_staff (void); SCM scheme_get_measure (void); SCM scheme_set_object_display_width (SCM); SCM scheme_get_horizontal_position (void); SCM scheme_get_cursor_note (SCM); SCM scheme_get_cursor_note_with_octave (SCM); SCM scheme_get_editing_time (void); SCM scheme_debug_object (SCM); SCM scheme_display_object (void); SCM scheme_destroy_scheme_init (void); SCM scheme_get_note_names_from_user (SCM number, SCM init, SCM message); SCM scheme_get_multiline_user_input (SCM title, SCM instruction, SCM initial); SCM scheme_get_lilypond_syntax_from_user (SCM title, SCM instruction, SCM prior, SCM post, SCM initial) ; SCM scheme_get_note_name (SCM); SCM scheme_insert_rest (SCM); SCM scheme_insert_chord (SCM lilypondnotes, SCM duration); SCM scheme_put_whole_measure_rests (void); SCM scheme_get_note (SCM); SCM scheme_get_note_staff_position (SCM); SCM scheme_get_note_from_top (SCM); SCM scheme_get_note_from_top_as_midi (SCM); SCM scheme_get_notes (SCM); SCM scheme_get_note_at_cursor (void); SCM scheme_get_dots (void); SCM scheme_get_note_base_duration (void); SCM scheme_get_note_duration (void); SCM scheme_get_recorded_midi_tempo (SCM index); SCM scheme_get_imported_midi_track (SCM index); SCM scheme_delete_imported_midi (void); SCM scheme_midi_record (SCM script); SCM scheme_get_current_midi_track (void); SCM scheme_get_imported_midi_tracks (void); SCM scheme_get_recorded_midi_duration (void); SCM scheme_set_duration_in_ticks (SCM); SCM scheme_get_duration_in_ticks (void); SCM scheme_get_base_duration_in_ticks (void); SCM scheme_get_end_tick (void); SCM scheme_get_start_tick (void); SCM scheme_get_measure_number (void); SCM scheme_set_measure_number_offset (SCM val); SCM scheme_get_measure_number_offset (void); SCM scheme_swap_notes_at_cursor_height (SCM nochange); SCM scheme_cursor_to_nth_note_height (SCM number); SCM scheme_cursor_to_next_note_height (void); SCM scheme_cursor_to_note (SCM); SCM scheme_get_prevailing_keysig (SCM); SCM scheme_get_prevailing_keysig_name (void); SCM scheme_get_prevailing_timesig (SCM); SCM scheme_get_prevailing_clef (SCM); SCM scheme_get_prevailing_clef_as_lilypond (SCM); SCM scheme_get_prevailing_keysig_as_lilypond (SCM); SCM scheme_get_prevailing_timesig_as_lilypond (SCM); SCM scheme_get_prevailing_duration (SCM); SCM scheme_set_prevailing_keysig (SCM); SCM scheme_increment_initial_keysig (SCM); SCM scheme_increment_keysig (SCM); SCM scheme_add_movement (SCM); SCM scheme_change_chord_notes (SCM); SCM scheme_put_note_name (SCM); SCM scheme_set_accidental (SCM); SCM scheme_put_rest (SCM); SCM scheme_put_note (SCM); SCM scheme_insert_note_in_chord (SCM); SCM scheme_diatonic_shift (SCM); SCM scheme_next_object (void); SCM scheme_prev_object (void); SCM scheme_next_object_in_measure (void); SCM scheme_prev_object_in_measure (void); SCM scheme_next_selected_object (SCM); SCM scheme_prev_selected_object (SCM); SCM scheme_next_chord (SCM); SCM scheme_prev_chord (SCM); SCM scheme_next_chord_in_measure (SCM); SCM scheme_prev_chord_in_measure (SCM); SCM scheme_next_note (SCM); SCM scheme_prev_note (SCM); SCM scheme_scroll_left (void); SCM scheme_scroll_right (void); SCM scheme_create_snippet_from_object (SCM); SCM scheme_select_snippet (SCM); SCM scheme_insert_snippet (SCM, SCM); SCM scheme_next_standalone_directive (SCM); SCM scheme_prev_standalone_directive (SCM); SCM scheme_next_standalone_directive_in_measure (SCM); SCM scheme_prev_standalone_directive_in_measure (SCM); SCM scheme_chordize (SCM); SCM scheme_set_prefs (SCM); SCM scheme_get_boolean_pref (SCM); SCM scheme_get_int_pref (SCM); SCM scheme_get_string_pref (SCM); SCM scheme_attach_quit_callback (SCM); SCM scheme_detach_quit_callback (void); SCM scheme_get_input_source (void); SCM scheme_popup_menu (SCM); SCM scheme_check_boxes (SCM checkboxlist, SCM title); SCM scheme_get_target_info (void); SCM scheme_get_new_target (void); SCM scheme_get_new_point (void); SCM scheme_get_reference_point (void); SCM scheme_get_offset (void); SCM scheme_get_control_point (SCM); SCM scheme_get_curve (void); SCM scheme_get_positions (SCM); SCM scheme_goto_position (SCM movement, SCM staff, SCM measure, SCM object); SCM scheme_create_palette_button (SCM palette, SCM lbl, SCM tltp, SCM scrp); SCM scheme_set_palette_shape (SCM palette, SCM horizontal, SCM limit); SCM scheme_show_palettes (SCM name, SCM show); SCM scheme_select_palette (SCM); SCM scheme_activate_palette_button (void); SCM scheme_get_user_input (SCM label, SCM prompt, SCM init, SCM modal); SCM scheme_get_user_input_with_snippets (SCM label, SCM prompt, SCM init, SCM modal); SCM scheme_select_font (SCM); SCM scheme_select_color (SCM); SCM scheme_warningdialog (SCM); SCM scheme_info_with_hook (SCM message, SCM script); SCM scheme_infodialog (SCM message, SCM noblock); SCM scheme_progressbar (SCM); SCM scheme_progressbar_stop (void); SCM scheme_typeset_for_script (SCM); SCM scheme_print_typeset_pdf (void); SCM scheme_display_typeset_svg (SCM scaling, SCM part); SCM scheme_continous_typsetting (void); SCM scheme_get_char (void); SCM scheme_get_keypress (SCM putback); SCM scheme_get_command_keypress (void); SCM scheme_get_command (void); SCM scheme_get_command_from_user (void); SCM scheme_lock_directive (SCM); SCM scheme_set_action_script_for_tag (SCM tag, SCM script); SCM scheme_put_standalone_directive (SCM tag, SCM width); SCM scheme_directive_change_tag (SCM tag); SCM scheme_choose_tag_at_cursor (void); SCM scheme_get_script_for_directive (SCM tagname, SCM isnote); SCM scheme_text_edit_standalone_directive (SCM); SCM scheme_delete_object_directive (SCM); SCM scheme_put_text_clipboard (SCM); SCM scheme_get_username (void); SCM scheme_get_password (void); SCM scheme_get_keyboard_state (void); SCM scheme_set_midi_thru (SCM); SCM scheme_get_recorded_midi_on_tick (void); SCM scheme_get_note_for_midi_key (SCM); SCM scheme_get_recorded_midi_note (void); SCM scheme_rewind_recorded_midi (void); SCM scheme_get_midi (SCM bytes); SCM scheme_set_midi_capture (SCM); SCM scheme_virtual_keyboard (SCM); SCM scheme_toggle_playalong (void); SCM scheme_toggle_conduct (void); SCM scheme_compute_midi_note_durations (void); SCM scheme_get_marked_midi_note (void); SCM scheme_get_marked_midi_note_seconds (void); SCM scheme_mark_first_note_onset (void); SCM scheme_advance_marked_midi (SCM amount); SCM scheme_insert_marked_midi_note (void); SCM scheme_create_timebase (SCM); SCM scheme_put_midi (SCM); SCM scheme_output_midi (SCM); SCM scheme_output_midi_bytes (SCM); SCM scheme_play_midikey (SCM); SCM scheme_pending_midi (SCM); SCM scheme_play_midi_note (SCM note, SCM volume, SCM channel, SCM duration); SCM scheme_one_shot_timer (SCM duration_amount, SCM callback); SCM scheme_timer (SCM duration_amount, SCM callback); SCM scheme_kill_timer (SCM); SCM scheme_get_bass_figure (void); SCM scheme_has_figures (SCM); SCM scheme_bass_figure (SCM bass, SCM harmony); SCM scheme_get_bass_figure (void); SCM scheme_spell_check_midi_chord (SCM); SCM scheme_get_cursor_note_as_midi (SCM); SCM scheme_get_note_as_midi (void); SCM scheme_refresh_cache (void); SCM scheme_refresh_display (SCM); SCM scheme_set_saved (SCM); SCM scheme_changecount (SCM); SCM scheme_get_saved (SCM); SCM scheme_mark_status (SCM); SCM scheme_get_help (SCM); SCM scheme_load_keybindings (SCM); SCM scheme_save_keybindings (SCM); SCM scheme_clear_keybindings (SCM); SCM scheme_load_commandset (SCM); SCM scheme_zoom (SCM); SCM scheme_master_tempo (SCM); SCM scheme_movement_tempo (SCM); SCM scheme_master_volume (SCM); SCM scheme_staff_master_volume (SCM); SCM scheme_set_enharmonic_position (SCM); SCM scheme_get_midi_tuning (void); SCM scheme_get_flattest (void); SCM scheme_get_sharpest (void); SCM scheme_get_temperament (void); SCM scheme_rewind_midi (SCM); SCM scheme_next_midi_notes (SCM); SCM scheme_restart_play (void); SCM scheme_staff_to_play (SCM); SCM scheme_get_midi_on_time (void); SCM scheme_get_midi_off_time (void); SCM scheme_midi_in_append_edit (void); SCM scheme_midi_in_checking (void); SCM scheme_midi_in_listening (void); SCM scheme_set_playback_interval (SCM start, SCM end); SCM scheme_adjust_playback_start (SCM); SCM scheme_adjust_playback_end (SCM); SCM scheme_user_screenshot (SCM); SCM scheme_delete_screenshot (SCM); SCM scheme_push_clipboard (SCM); SCM scheme_pop_clipboard (SCM); SCM scheme_delete_selection (SCM); SCM scheme_set_thumbnail_selection (SCM); SCM scheme_create_thumbnail (SCM, SCM); SCM scheme_exit (SCM); SCM scheme_take_snapshot (SCM); SCM scheme_select_default_layout (void); SCM scheme_delete_layout (SCM name); SCM scheme_create_layout (SCM name); SCM scheme_get_layout_id (void); SCM scheme_get_current_staff_layout_id (void); SCM scheme_select_layout_id (SCM); SCM scheme_lilypond_for_part (void); SCM scheme_typeset_part (void); SCM scheme_reduce_layout_to_lilypond (void); SCM scheme_get_layout_name (void); SCM scheme_select_next_layout (void); SCM scheme_select_first_layout (void); SCM scheme_select_next_custom_layout (void); SCM scheme_select_first_custom_layout (void); SCM scheme_get_filename (void); SCM scheme_path_from_filename (SCM); SCM scheme_file_exists (SCM); SCM scheme_filename_from_path (SCM); SCM scheme_choose_file (SCM, SCM, SCM); SCM scheme_edit_graphics (SCM, SCM); SCM scheme_open_source (SCM); SCM scheme_export_recorded_audio (void); SCM scheme_open_source_file (SCM); SCM scheme_open_proofread_file (SCM); SCM scheme_open_source_audio_file (SCM); SCM scheme_close_source_audio (SCM); SCM scheme_start_audio_play (SCM); SCM scheme_stop_audio_play (SCM); SCM scheme_set_audio_lead_in (SCM); SCM scheme_audio_is_playing (void); SCM scheme_next_audio_timing (SCM); SCM scheme_increase_guard (SCM); SCM scheme_decrease_guard (SCM); SCM scheme_undo (SCM); SCM scheme_new_window (SCM); SCM scheme_stage_for_undo (SCM); SCM scheme_get_last_change (SCM); SCM scheme_get_menu_path (SCM); SCM scheme_get_checksum (SCM); SCM scheme_set_newbie (SCM); SCM scheme_synchronize_lyric_cursor (SCM offset); SCM scheme_insert_text_in_verse (SCM); SCM scheme_typeset_lyrics_for_staff (SCM); SCM scheme_syllable_count (); SCM scheme_get_verse (SCM); SCM scheme_get_verse_number (SCM number); SCM scheme_put_verse (SCM); SCM scheme_append_to_verse (SCM); SCM scheme_get_id (SCM); SCM scheme_add_keybinding (SCM command, SCM binding); SCM scheme_get_label (SCM); SCM scheme_get_menu_position (SCM); SCM scheme_get_lily_version (SCM); SCM scheme_check_lily_version (SCM); SCM scheme_input_filter_names (SCM); SCM scheme_write_status (SCM); SCM scheme_object_directive_get_tag (SCM); SCM scheme_standalone_directive_get_tag (SCM); SCM scheme_chord_directive_get_tag (SCM); SCM scheme_note_directive_get_tag (SCM); SCM scheme_staff_directive_get_tag (SCM); SCM scheme_voice_directive_get_tag (SCM); SCM scheme_score_directive_get_tag (SCM); SCM scheme_clef_directive_get_tag (SCM); SCM scheme_timesig_directive_get_tag (SCM); SCM scheme_tuplet_directive_get_tag (SCM); SCM scheme_stemdirective_directive_get_tag (SCM); SCM scheme_keysig_directive_get_tag (SCM); SCM scheme_scoreheader_directive_get_tag (SCM); SCM scheme_header_directive_get_tag (SCM); SCM scheme_paper_directive_get_tag (SCM); SCM scheme_layout_directive_get_tag (SCM); SCM scheme_movementcontrol_directive_get_tag (SCM); SCM scheme_chord_directive_get_nth_tag (SCM); SCM scheme_note_directive_get_nth_tag (SCM); SCM scheme_staff_directive_get_nth_tag (SCM); SCM scheme_voice_directive_get_nth_tag (SCM); SCM scheme_score_directive_get_nth_tag (SCM); SCM scheme_clef_directive_get_nth_tag (SCM); SCM scheme_timesig_directive_get_nth_tag (SCM); SCM scheme_tuplet_directive_get_nth_tag (SCM); SCM scheme_stemdirective_directive_get_nth_tag (SCM); SCM scheme_keysig_directive_get_nth_tag (SCM); SCM scheme_scoreheader_directive_get_nth_tag (SCM); SCM scheme_header_directive_get_nth_tag (SCM); SCM scheme_paper_directive_get_nth_tag (SCM); SCM scheme_layout_directive_get_nth_tag (SCM); SCM scheme_movementcontrol_directive_get_nth_tag (SCM); SCM scheme_edit_system_directive (void); SCM scheme_display_directive_text_editor (SCM type, SCM tag); SCM scheme_directive_get_nth_tag_strict_note (SCM); SCM scheme_directive_get_for_tag_strict_note (SCM); SCM scheme_chord_directive_prioritize_tag (SCM); SCM scheme_note_directive_prioritize_tag (SCM); SCM scheme_staff_directive_prioritize_tag (SCM); SCM scheme_voice_directive_prioritize_tag (SCM); SCM scheme_score_directive_prioritize_tag (SCM); SCM scheme_clef_directive_prioritize_tag (SCM); SCM scheme_timesig_directive_prioritize_tag (SCM); SCM scheme_tuplet_directive_prioritize_tag (SCM); SCM scheme_stemdirective_directive_prioritize_tag (SCM); SCM scheme_keysig_directive_prioritize_tag (SCM); SCM scheme_scoreheader_directive_prioritize_tag (SCM); SCM scheme_header_directive_prioritize_tag (SCM); SCM scheme_paper_directive_prioritize_tag (SCM); SCM scheme_layout_directive_prioritize_tag (SCM); SCM scheme_movementcontrol_directive_prioritize_tag (SCM); SCM scheme_delete_note_directive (SCM); SCM scheme_activate_note_directive (SCM); SCM scheme_text_edit_note_directive (SCM); SCM scheme_delete_chord_directive (SCM); SCM scheme_activate_chord_directive (SCM); SCM scheme_text_edit_chord_directive (SCM); SCM scheme_delete_staff_directive (SCM); SCM scheme_activate_staff_directive (SCM); SCM scheme_text_edit_staff_directive (SCM); SCM scheme_delete_voice_directive (SCM); SCM scheme_activate_voice_directive (SCM); SCM scheme_text_edit_voice_directive (SCM); SCM scheme_delete_score_directive (SCM); SCM scheme_activate_score_directive (SCM); SCM scheme_text_edit_score_directive (SCM); SCM scheme_delete_clef_directive (SCM); SCM scheme_activate_clef_directive (SCM); SCM scheme_text_edit_clef_directive (SCM); SCM scheme_delete_timesig_directive (SCM); SCM scheme_activate_timesig_directive (SCM); SCM scheme_text_edit_timesig_directive (SCM); SCM scheme_delete_tuplet_directive (SCM); SCM scheme_activate_tuplet_directive (SCM); SCM scheme_text_edit_tuplet_directive (SCM); SCM scheme_delete_stemdirective_directive (SCM); SCM scheme_activate_stemdirective_directive (SCM); SCM scheme_text_edit_stemdirective_directive (SCM); SCM scheme_delete_keysig_directive (SCM); SCM scheme_activate_keysig_directive (SCM); SCM scheme_text_edit_keysig_directive (SCM); SCM scheme_delete_scoreheader_directive (SCM); SCM scheme_activate_scoreheader_directive (SCM); SCM scheme_text_edit_scoreheader_directive (SCM); SCM scheme_delete_header_directive (SCM); SCM scheme_activate_header_directive (SCM); SCM scheme_text_edit_header_directive (SCM); SCM scheme_delete_paper_directive (SCM); SCM scheme_activate_paper_directive (SCM); SCM scheme_text_edit_paper_directive (SCM); SCM scheme_delete_layout_directive (SCM); SCM scheme_activate_layout_directive (SCM); SCM scheme_text_edit_layout_directive (SCM); SCM scheme_delete_movementcontrol_directive (SCM); SCM scheme_activate_movementcontrol_directive (SCM); SCM scheme_text_edit_movementcontrol_directive (SCM); SCM scheme_object_directive_get_minpixels (SCM); SCM scheme_object_directive_put_minpixels (SCM tag, SCM value); SCM scheme_standalone_directive_get_minpixels (SCM); SCM scheme_chord_directive_get_minpixels (SCM); SCM scheme_note_directive_get_minpixels (SCM); SCM scheme_staff_directive_get_minpixels (SCM); SCM scheme_voice_directive_get_minpixels (SCM); SCM scheme_score_directive_get_minpixels (SCM); SCM scheme_clef_directive_get_minpixels (SCM); SCM scheme_timesig_directive_get_minpixels (SCM); SCM scheme_tuplet_directive_get_minpixels (SCM); SCM scheme_stemdirective_directive_get_minpixels (SCM); SCM scheme_keysig_directive_get_minpixels (SCM); SCM scheme_scoreheader_directive_get_minpixels (SCM); SCM scheme_header_directive_get_minpixels (SCM); SCM scheme_paper_directive_get_minpixels (SCM); SCM scheme_layout_directive_get_minpixels (SCM); SCM scheme_movementcontrol_directive_get_minpixels (SCM); SCM scheme_standalone_directive_put_minpixels (SCM tag, SCM value); SCM scheme_chord_directive_put_minpixels (SCM tag, SCM value); SCM scheme_note_directive_put_minpixels (SCM tag, SCM value); SCM scheme_staff_directive_put_minpixels (SCM tag, SCM value); SCM scheme_voice_directive_put_minpixels (SCM tag, SCM value); SCM scheme_score_directive_put_minpixels (SCM tag, SCM value); SCM scheme_clef_directive_put_minpixels (SCM tag, SCM value); SCM scheme_timesig_directive_put_minpixels (SCM tag, SCM value); SCM scheme_tuplet_directive_put_minpixels (SCM tag, SCM value); SCM scheme_stemdirective_directive_put_minpixels (SCM tag, SCM value); SCM scheme_keysig_directive_put_minpixels (SCM tag, SCM value); SCM scheme_scoreheader_directive_put_minpixels (SCM tag, SCM value); SCM scheme_header_directive_put_minpixels (SCM tag, SCM value); SCM scheme_paper_directive_put_minpixels (SCM tag, SCM value); SCM scheme_layout_directive_put_minpixels (SCM tag, SCM value); SCM scheme_movementcontrol_directive_put_minpixels (SCM tag, SCM value); //cloned from minpixels SCM scheme_object_directive_get_data (SCM); SCM scheme_object_directive_put_data (SCM tag, SCM value); SCM scheme_standalone_directive_get_data (SCM); SCM scheme_chord_directive_get_data (SCM); SCM scheme_note_directive_get_data (SCM); SCM scheme_staff_directive_get_data (SCM); SCM scheme_voice_directive_get_data (SCM); SCM scheme_score_directive_get_data (SCM); SCM scheme_clef_directive_get_data (SCM); SCM scheme_timesig_directive_get_data (SCM); SCM scheme_tuplet_directive_get_data (SCM); SCM scheme_stemdirective_directive_get_data (SCM); SCM scheme_keysig_directive_get_data (SCM); SCM scheme_scoreheader_directive_get_data (SCM); SCM scheme_header_directive_get_data (SCM); SCM scheme_paper_directive_get_data (SCM); SCM scheme_layout_directive_get_data (SCM); SCM scheme_movementcontrol_directive_get_data (SCM); SCM scheme_standalone_directive_put_data (SCM tag, SCM value); SCM scheme_chord_directive_put_data (SCM tag, SCM value); SCM scheme_note_directive_put_data (SCM tag, SCM value); SCM scheme_staff_directive_put_allow (SCM tag, SCM value); SCM scheme_staff_directive_put_ignore (SCM tag, SCM value); SCM scheme_staff_directive_put_data (SCM tag, SCM value); SCM scheme_voice_directive_put_data (SCM tag, SCM value); SCM scheme_voice_directive_put_allow (SCM tag, SCM value); SCM scheme_voice_directive_put_ignore (SCM tag, SCM value); SCM scheme_score_directive_put_data (SCM tag, SCM value); SCM scheme_clef_directive_put_data (SCM tag, SCM value); SCM scheme_timesig_directive_put_data (SCM tag, SCM value); SCM scheme_tuplet_directive_put_data (SCM tag, SCM value); SCM scheme_stemdirective_directive_put_data (SCM tag, SCM value); SCM scheme_keysig_directive_put_data (SCM tag, SCM value); SCM scheme_scoreheader_directive_put_data (SCM tag, SCM value); SCM scheme_header_directive_put_data (SCM tag, SCM value); SCM scheme_paper_directive_put_data (SCM tag, SCM value); SCM scheme_layout_directive_put_data (SCM tag, SCM value); SCM scheme_movementcontrol_directive_put_data (SCM tag, SCM value); SCM scheme_standalone_directive_get_grob (SCM); SCM scheme_chord_directive_get_grob (SCM); SCM scheme_note_directive_get_grob (SCM); SCM scheme_staff_directive_get_grob (SCM); SCM scheme_voice_directive_get_grob (SCM); SCM scheme_score_directive_get_grob (SCM); SCM scheme_clef_directive_get_grob (SCM); SCM scheme_timesig_directive_get_grob (SCM); SCM scheme_tuplet_directive_get_grob (SCM); SCM scheme_stemdirective_directive_get_grob (SCM); SCM scheme_keysig_directive_get_grob (SCM); SCM scheme_standalone_directive_get_grob (SCM); SCM scheme_standalone_directive_put_grob (SCM tag, SCM value); SCM scheme_chord_directive_put_grob (SCM tag, SCM value); SCM scheme_note_directive_put_grob (SCM tag, SCM value); SCM scheme_score_directive_put_grob (SCM tag, SCM value); SCM scheme_clef_directive_put_grob (SCM tag, SCM value); SCM scheme_timesig_directive_put_grob (SCM tag, SCM value); SCM scheme_tuplet_directive_put_grob (SCM tag, SCM value); SCM scheme_stemdirective_directive_put_grob (SCM tag, SCM value); SCM scheme_keysig_directive_put_grob (SCM tag, SCM value); SCM scheme_standalone_directive_get_midibytes (SCM); SCM scheme_chord_directive_get_midibytes (SCM); SCM scheme_note_directive_get_midibytes (SCM); SCM scheme_keysig_directive_get_midibytes (SCM); SCM scheme_timesig_directive_get_midibytes (SCM); SCM scheme_tuplet_directive_get_midibytes (SCM); SCM scheme_clef_directive_get_midibytes (SCM); SCM scheme_staff_directive_get_midibytes (SCM); SCM scheme_voice_directive_get_midibytes (SCM); SCM scheme_score_directive_get_midibytes (SCM); SCM scheme_movementcontrol_directive_get_midibytes (SCM); SCM scheme_standalone_directive_put_midibytes (SCM tag, SCM value); SCM scheme_chord_directive_put_midibytes (SCM tag, SCM value); SCM scheme_note_directive_put_midibytes (SCM tag, SCM value); SCM scheme_keysig_directive_put_midibytes (SCM tag, SCM value); SCM scheme_timesig_directive_put_midibytes (SCM tag, SCM value); SCM scheme_tuplet_directive_put_midibytes (SCM tag, SCM value); SCM scheme_clef_directive_put_midibytes (SCM tag, SCM value); SCM scheme_staff_directive_put_midibytes (SCM tag, SCM value); SCM scheme_voice_directive_put_midibytes (SCM tag, SCM value); SCM scheme_score_directive_put_midibytes (SCM tag, SCM value); SCM scheme_movementcontrol_directive_put_midibytes (SCM tag, SCM value); SCM scheme_standalone_directive_get_override (SCM); SCM scheme_chord_directive_get_override (SCM); SCM scheme_note_directive_get_override (SCM); SCM scheme_staff_directive_get_override (SCM); SCM scheme_voice_directive_get_override (SCM); SCM scheme_score_directive_get_override (SCM); SCM scheme_standalone_directive_put_override (SCM tag, SCM value); SCM scheme_chord_directive_put_override (SCM tag, SCM value); SCM scheme_note_directive_put_override (SCM tag, SCM value); SCM scheme_staff_directive_put_override (SCM tag, SCM value); SCM scheme_voice_directive_put_override (SCM tag, SCM value); SCM scheme_score_directive_put_override (SCM tag, SCM value); SCM scheme_note_directive_put_graphic (SCM tag, SCM value); SCM scheme_chord_directive_put_graphic (SCM tag, SCM value); SCM scheme_standalone_directive_put_graphic (SCM tag, SCM value); SCM scheme_chord_directive_get_graphic_name (SCM tag); SCM scheme_note_directive_get_graphic_name (SCM tag); SCM scheme_clef_directive_get_graphic_name (SCM tag); SCM scheme_keysig_directive_get_graphic_name (SCM tag); SCM scheme_timesig_directive_get_graphic_name (SCM tag); SCM scheme_tuplet_directive_get_graphic_name (SCM tag); SCM scheme_standalone_directive_get_graphic_name (SCM tag); SCM scheme_staff_directive_put_graphic (SCM tag, SCM value); SCM scheme_voice_directive_put_graphic (SCM tag, SCM value); SCM scheme_score_directive_put_graphic (SCM tag, SCM value); SCM scheme_chord_directive_put_display (SCM tag, SCM value); SCM scheme_chord_directive_put_prefix (SCM tag, SCM value); SCM scheme_chord_directive_put_postfix (SCM tag, SCM value); SCM scheme_chord_directive_get_display (SCM); SCM scheme_chord_directive_get_prefix (SCM); SCM scheme_chord_directive_get_postfix (SCM); SCM scheme_note_directive_put_display (SCM tag, SCM value); SCM scheme_note_directive_put_prefix (SCM tag, SCM value); SCM scheme_note_directive_put_postfix (SCM tag, SCM value); SCM scheme_note_directive_get_display (SCM); SCM scheme_note_directive_get_prefix (SCM); SCM scheme_note_directive_get_postfix (SCM); SCM scheme_standalone_directive_put_display (SCM tag, SCM value); SCM scheme_standalone_directive_put_prefix (SCM tag, SCM value); SCM scheme_standalone_directive_put_postfix (SCM tag, SCM value); SCM scheme_standalone_directive_get_display (SCM); SCM scheme_standalone_directive_get_prefix (SCM); SCM scheme_standalone_directive_get_postfix (SCM); SCM scheme_staff_directive_put_display (SCM tag, SCM value); SCM scheme_staff_directive_put_prefix (SCM tag, SCM value); SCM scheme_staff_directive_put_postfix (SCM tag, SCM value); SCM scheme_staff_directive_get_display (SCM); SCM scheme_staff_directive_get_prefix (SCM); SCM scheme_staff_directive_get_postfix (SCM); SCM scheme_voice_directive_put_display (SCM tag, SCM value); SCM scheme_voice_directive_put_prefix (SCM tag, SCM value); SCM scheme_voice_directive_put_postfix (SCM tag, SCM value); SCM scheme_voice_directive_get_display (SCM); SCM scheme_voice_directive_get_prefix (SCM); SCM scheme_voice_directive_get_postfix (SCM); SCM scheme_score_directive_put_display (SCM tag, SCM value); SCM scheme_score_directive_put_prefix (SCM tag, SCM value); SCM scheme_score_directive_put_postfix (SCM tag, SCM value); SCM scheme_score_directive_get_display (SCM); SCM scheme_score_directive_get_prefix (SCM); SCM scheme_score_directive_get_postfix (SCM); SCM scheme_score_directive_get_width (SCM); SCM scheme_score_directive_get_height (SCM); SCM scheme_score_directive_get_x (SCM); SCM scheme_score_directive_get_gx (SCM); SCM scheme_score_directive_get_tx (SCM); SCM scheme_score_directive_put_allow (SCM tag, SCM value); SCM scheme_score_directive_put_gx (SCM tag, SCM value); SCM scheme_score_directive_put_tx (SCM tag, SCM value); SCM scheme_score_directive_get_y (SCM); SCM scheme_score_directive_get_gy (SCM); SCM scheme_score_directive_get_ty (SCM); SCM scheme_score_directive_put_ignore (SCM tag, SCM value); SCM scheme_score_directive_put_gy (SCM tag, SCM value); SCM scheme_score_directive_put_ty (SCM tag, SCM value); SCM scheme_note_directive_put_allow (SCM tag, SCM value); SCM scheme_note_directive_get_x (SCM); SCM scheme_chord_directive_put_allow (SCM tag, SCM value); SCM scheme_chord_directive_get_x (SCM); SCM scheme_note_directive_put_ignore (SCM tag, SCM value); SCM scheme_note_directive_get_y (SCM); SCM scheme_chord_directive_put_ignore (SCM tag, SCM value); SCM scheme_chord_directive_get_y (SCM); SCM scheme_note_directive_put_tx (SCM tag, SCM value); SCM scheme_note_directive_get_tx (SCM); SCM scheme_chord_directive_put_tx (SCM tag, SCM value); SCM scheme_chord_directive_get_tx (SCM); SCM scheme_note_directive_put_ty (SCM tag, SCM value); SCM scheme_note_directive_get_ty (SCM); SCM scheme_chord_directive_put_ty (SCM tag, SCM value); SCM scheme_chord_directive_get_ty (SCM); SCM scheme_note_directive_put_gx (SCM tag, SCM value); SCM scheme_note_directive_get_gx (SCM); SCM scheme_chord_directive_put_gx (SCM tag, SCM value); SCM scheme_chord_directive_get_gx (SCM); SCM scheme_note_directive_put_gy (SCM tag, SCM value); SCM scheme_note_directive_get_gy (SCM); SCM scheme_chord_directive_put_gy (SCM tag, SCM value); SCM scheme_chord_directive_get_gy (SCM); SCM scheme_standalone_directive_put_allow (SCM tag, SCM value); SCM scheme_standalone_directive_get_x (SCM); SCM scheme_standalone_directive_put_ignore (SCM tag, SCM value); SCM scheme_standalone_directive_get_y (SCM); SCM scheme_standalone_directive_put_tx (SCM tag, SCM value); SCM scheme_standalone_directive_get_tx (SCM); SCM scheme_standalone_directive_put_ty (SCM tag, SCM value); SCM scheme_standalone_directive_get_ty (SCM); SCM scheme_standalone_directive_put_gx (SCM tag, SCM value); SCM scheme_standalone_directive_get_gx (SCM); SCM scheme_standalone_directive_put_gy (SCM tag, SCM value); SCM scheme_standalone_directive_get_gy (SCM); SCM scheme_note_directive_get_width (SCM); SCM scheme_chord_directive_get_width (SCM); SCM scheme_standalone_directive_get_width (SCM); SCM scheme_note_directive_get_height (SCM); SCM scheme_chord_directive_get_height (SCM); SCM scheme_standalone_directive_get_height (SCM); SCM scheme_clef_directive_put_display (SCM tag, SCM value); SCM scheme_clef_directive_put_prefix (SCM tag, SCM value); SCM scheme_clef_directive_put_postfix (SCM tag, SCM value); SCM scheme_clef_directive_put_graphic (SCM tag, SCM value); SCM scheme_clef_directive_get_display (SCM); SCM scheme_clef_directive_get_prefix (SCM); SCM scheme_clef_directive_get_postfix (SCM); SCM scheme_clef_directive_put_allow (SCM tag, SCM value); SCM scheme_clef_directive_put_ignore (SCM tag, SCM value); SCM scheme_clef_directive_put_tx (SCM tag, SCM value); SCM scheme_clef_directive_put_ty (SCM tag, SCM value); SCM scheme_clef_directive_put_gx (SCM tag, SCM value); SCM scheme_clef_directive_put_gy (SCM tag, SCM value); SCM scheme_clef_directive_put_override (SCM tag, SCM value); SCM scheme_clef_directive_get_x (SCM); SCM scheme_clef_directive_get_y (SCM); SCM scheme_clef_directive_get_tx (SCM); SCM scheme_clef_directive_get_ty (SCM); SCM scheme_clef_directive_get_gx (SCM); SCM scheme_clef_directive_get_gy (SCM); SCM scheme_clef_directive_get_override (SCM); SCM scheme_clef_directive_get_width (SCM); SCM scheme_clef_directive_get_height (SCM); SCM scheme_timesig_directive_put_display (SCM tag, SCM value); SCM scheme_timesig_directive_put_prefix (SCM tag, SCM value); SCM scheme_timesig_directive_put_postfix (SCM tag, SCM value); SCM scheme_timesig_directive_put_graphic (SCM tag, SCM value); SCM scheme_timesig_directive_get_display (SCM); SCM scheme_timesig_directive_get_prefix (SCM); SCM scheme_timesig_directive_get_postfix (SCM); SCM scheme_timesig_directive_put_allow (SCM tag, SCM value); SCM scheme_timesig_directive_put_ignore (SCM tag, SCM value); SCM scheme_timesig_directive_put_tx (SCM tag, SCM value); SCM scheme_timesig_directive_put_ty (SCM tag, SCM value); SCM scheme_timesig_directive_put_gx (SCM tag, SCM value); SCM scheme_timesig_directive_put_gy (SCM tag, SCM value); SCM scheme_timesig_directive_put_override (SCM tag, SCM value); SCM scheme_timesig_directive_get_x (SCM); SCM scheme_timesig_directive_get_y (SCM); SCM scheme_timesig_directive_get_tx (SCM); SCM scheme_timesig_directive_get_ty (SCM); SCM scheme_timesig_directive_get_gx (SCM); SCM scheme_timesig_directive_get_gy (SCM); SCM scheme_timesig_directive_get_override (SCM); SCM scheme_timesig_directive_get_width (SCM); SCM scheme_timesig_directive_get_height (SCM); SCM scheme_tuplet_directive_put_display (SCM tag, SCM value); SCM scheme_tuplet_directive_put_prefix (SCM tag, SCM value); SCM scheme_tuplet_directive_put_postfix (SCM tag, SCM value); SCM scheme_tuplet_directive_put_graphic (SCM tag, SCM value); SCM scheme_tuplet_directive_get_display (SCM); SCM scheme_tuplet_directive_get_prefix (SCM); SCM scheme_tuplet_directive_get_postfix (SCM); SCM scheme_tuplet_directive_put_allow (SCM tag, SCM value); SCM scheme_tuplet_directive_put_ignore (SCM tag, SCM value); SCM scheme_tuplet_directive_put_tx (SCM tag, SCM value); SCM scheme_tuplet_directive_put_ty (SCM tag, SCM value); SCM scheme_tuplet_directive_put_gx (SCM tag, SCM value); SCM scheme_tuplet_directive_put_gy (SCM tag, SCM value); SCM scheme_tuplet_directive_put_override (SCM tag, SCM value); SCM scheme_tuplet_directive_get_x (SCM); SCM scheme_tuplet_directive_get_y (SCM); SCM scheme_tuplet_directive_get_tx (SCM); SCM scheme_tuplet_directive_get_ty (SCM); SCM scheme_tuplet_directive_get_gx (SCM); SCM scheme_tuplet_directive_get_gy (SCM); SCM scheme_tuplet_directive_get_override (SCM); SCM scheme_tuplet_directive_get_width (SCM); SCM scheme_tuplet_directive_get_height (SCM); SCM scheme_stemdirective_directive_put_display (SCM tag, SCM value); SCM scheme_stemdirective_directive_put_prefix (SCM tag, SCM value); SCM scheme_stemdirective_directive_put_postfix (SCM tag, SCM value); SCM scheme_stemdirective_directive_put_graphic (SCM tag, SCM value); SCM scheme_stemdirective_directive_get_display (SCM); SCM scheme_stemdirective_directive_get_prefix (SCM); SCM scheme_stemdirective_directive_get_postfix (SCM); SCM scheme_stemdirective_directive_put_allow (SCM tag, SCM value); SCM scheme_stemdirective_directive_put_ignore (SCM tag, SCM value); SCM scheme_stemdirective_directive_put_tx (SCM tag, SCM value); SCM scheme_stemdirective_directive_put_ty (SCM tag, SCM value); SCM scheme_stemdirective_directive_put_gx (SCM tag, SCM value); SCM scheme_stemdirective_directive_put_gy (SCM tag, SCM value); SCM scheme_stemdirective_directive_put_override (SCM tag, SCM value); SCM scheme_stemdirective_directive_get_x (SCM); SCM scheme_stemdirective_directive_get_y (SCM); SCM scheme_stemdirective_directive_get_tx (SCM); SCM scheme_stemdirective_directive_get_ty (SCM); SCM scheme_stemdirective_directive_get_gx (SCM); SCM scheme_stemdirective_directive_get_gy (SCM); SCM scheme_stemdirective_directive_get_override (SCM); SCM scheme_stemdirective_directive_get_width (SCM); SCM scheme_stemdirective_directive_get_height (SCM); SCM scheme_keysig_directive_put_display (SCM tag, SCM value); SCM scheme_keysig_directive_put_prefix (SCM tag, SCM value); SCM scheme_keysig_directive_put_postfix (SCM tag, SCM value); SCM scheme_keysig_directive_put_graphic (SCM tag, SCM value); SCM scheme_keysig_directive_get_display (SCM); SCM scheme_keysig_directive_get_prefix (SCM); SCM scheme_keysig_directive_get_postfix (SCM); SCM scheme_keysig_directive_put_allow (SCM tag, SCM value); SCM scheme_keysig_directive_put_ignore (SCM tag, SCM value); SCM scheme_keysig_directive_put_tx (SCM tag, SCM value); SCM scheme_keysig_directive_put_ty (SCM tag, SCM value); SCM scheme_keysig_directive_put_gx (SCM tag, SCM value); SCM scheme_keysig_directive_put_gy (SCM tag, SCM value); SCM scheme_keysig_directive_put_override (SCM tag, SCM value); SCM scheme_keysig_directive_get_x (SCM); SCM scheme_keysig_directive_get_y (SCM); SCM scheme_keysig_directive_get_tx (SCM); SCM scheme_keysig_directive_get_ty (SCM); SCM scheme_keysig_directive_get_gx (SCM); SCM scheme_keysig_directive_get_gy (SCM); SCM scheme_keysig_directive_get_override (SCM); SCM scheme_keysig_directive_get_width (SCM); SCM scheme_keysig_directive_get_height (SCM); SCM scheme_scoreheader_directive_put_display (SCM tag, SCM value); SCM scheme_scoreheader_directive_put_prefix (SCM tag, SCM value); SCM scheme_scoreheader_directive_put_postfix (SCM tag, SCM value); SCM scheme_scoreheader_directive_put_graphic (SCM tag, SCM value); SCM scheme_scoreheader_directive_get_display (SCM); SCM scheme_scoreheader_directive_get_prefix (SCM); SCM scheme_scoreheader_directive_get_postfix (SCM); SCM scheme_scoreheader_directive_put_allow (SCM tag, SCM value); SCM scheme_scoreheader_directive_put_ignore (SCM tag, SCM value); SCM scheme_scoreheader_directive_put_tx (SCM tag, SCM value); SCM scheme_scoreheader_directive_put_ty (SCM tag, SCM value); SCM scheme_scoreheader_directive_put_gx (SCM tag, SCM value); SCM scheme_scoreheader_directive_put_gy (SCM tag, SCM value); SCM scheme_scoreheader_directive_put_override (SCM tag, SCM value); SCM scheme_scoreheader_directive_get_x (SCM); SCM scheme_scoreheader_directive_get_y (SCM); SCM scheme_scoreheader_directive_get_tx (SCM); SCM scheme_scoreheader_directive_get_ty (SCM); SCM scheme_scoreheader_directive_get_gx (SCM); SCM scheme_scoreheader_directive_get_gy (SCM); SCM scheme_scoreheader_directive_get_override (SCM); SCM scheme_scoreheader_directive_get_width (SCM); SCM scheme_scoreheader_directive_get_height (SCM); SCM scheme_header_directive_put_display (SCM tag, SCM value); SCM scheme_header_directive_put_prefix (SCM tag, SCM value); SCM scheme_header_directive_put_postfix (SCM tag, SCM value); SCM scheme_header_directive_put_graphic (SCM tag, SCM value); SCM scheme_header_directive_get_display (SCM); SCM scheme_header_directive_get_prefix (SCM); SCM scheme_header_directive_get_postfix (SCM); SCM scheme_header_directive_put_allow (SCM tag, SCM value); SCM scheme_header_directive_put_ignore (SCM tag, SCM value); SCM scheme_header_directive_put_tx (SCM tag, SCM value); SCM scheme_header_directive_put_ty (SCM tag, SCM value); SCM scheme_header_directive_put_gx (SCM tag, SCM value); SCM scheme_header_directive_put_gy (SCM tag, SCM value); SCM scheme_header_directive_put_override (SCM tag, SCM value); SCM scheme_header_directive_get_x (SCM); SCM scheme_header_directive_get_y (SCM); SCM scheme_header_directive_get_tx (SCM); SCM scheme_header_directive_get_ty (SCM); SCM scheme_header_directive_get_gx (SCM); SCM scheme_header_directive_get_gy (SCM); SCM scheme_header_directive_get_override (SCM); SCM scheme_header_directive_get_width (SCM); SCM scheme_header_directive_get_height (SCM); SCM scheme_paper_directive_put_display (SCM tag, SCM value); SCM scheme_paper_directive_put_prefix (SCM tag, SCM value); SCM scheme_paper_directive_put_postfix (SCM tag, SCM value); SCM scheme_paper_directive_put_graphic (SCM tag, SCM value); SCM scheme_paper_directive_get_display (SCM); SCM scheme_paper_directive_get_prefix (SCM); SCM scheme_paper_directive_get_postfix (SCM); SCM scheme_paper_directive_put_allow (SCM tag, SCM value); SCM scheme_paper_directive_put_ignore (SCM tag, SCM value); SCM scheme_paper_directive_put_tx (SCM tag, SCM value); SCM scheme_paper_directive_put_ty (SCM tag, SCM value); SCM scheme_paper_directive_put_gx (SCM tag, SCM value); SCM scheme_paper_directive_put_gy (SCM tag, SCM value); SCM scheme_paper_directive_put_override (SCM tag, SCM value); SCM scheme_paper_directive_get_x (SCM); SCM scheme_paper_directive_get_y (SCM); SCM scheme_paper_directive_get_tx (SCM); SCM scheme_paper_directive_get_ty (SCM); SCM scheme_paper_directive_get_gx (SCM); SCM scheme_paper_directive_get_gy (SCM); SCM scheme_paper_directive_get_override (SCM); SCM scheme_paper_directive_get_width (SCM); SCM scheme_paper_directive_get_height (SCM); SCM scheme_layout_directive_put_display (SCM tag, SCM value); SCM scheme_layout_directive_put_prefix (SCM tag, SCM value); SCM scheme_layout_directive_put_postfix (SCM tag, SCM value); SCM scheme_layout_directive_put_graphic (SCM tag, SCM value); SCM scheme_layout_directive_get_display (SCM); SCM scheme_layout_directive_get_prefix (SCM); SCM scheme_layout_directive_get_postfix (SCM); SCM scheme_layout_directive_put_allow (SCM tag, SCM value); SCM scheme_layout_directive_put_ignore (SCM tag, SCM value); SCM scheme_layout_directive_put_tx (SCM tag, SCM value); SCM scheme_layout_directive_put_ty (SCM tag, SCM value); SCM scheme_layout_directive_put_gx (SCM tag, SCM value); SCM scheme_layout_directive_put_gy (SCM tag, SCM value); SCM scheme_layout_directive_put_override (SCM tag, SCM value); SCM scheme_layout_directive_get_x (SCM); SCM scheme_layout_directive_get_y (SCM); SCM scheme_layout_directive_get_tx (SCM); SCM scheme_layout_directive_get_ty (SCM); SCM scheme_layout_directive_get_gx (SCM); SCM scheme_layout_directive_get_gy (SCM); SCM scheme_layout_directive_get_override (SCM); SCM scheme_layout_directive_get_width (SCM); SCM scheme_layout_directive_get_height (SCM); SCM scheme_movementcontrol_directive_put_display (SCM tag, SCM value); SCM scheme_movementcontrol_directive_put_prefix (SCM tag, SCM value); SCM scheme_movementcontrol_directive_put_postfix (SCM tag, SCM value); SCM scheme_movementcontrol_directive_put_graphic (SCM tag, SCM value); SCM scheme_movementcontrol_directive_get_display (SCM); SCM scheme_movementcontrol_directive_get_prefix (SCM); SCM scheme_movementcontrol_directive_get_postfix (SCM); SCM scheme_movementcontrol_directive_put_allow (SCM tag, SCM value); SCM scheme_movementcontrol_directive_put_ignore (SCM tag, SCM value); SCM scheme_movementcontrol_directive_put_tx (SCM tag, SCM value); SCM scheme_movementcontrol_directive_put_ty (SCM tag, SCM value); SCM scheme_movementcontrol_directive_put_gx (SCM tag, SCM value); SCM scheme_movementcontrol_directive_put_gy (SCM tag, SCM value); SCM scheme_movementcontrol_directive_put_override (SCM tag, SCM value); SCM scheme_movementcontrol_directive_get_x (SCM); SCM scheme_movementcontrol_directive_get_y (SCM); SCM scheme_movementcontrol_directive_get_tx (SCM); SCM scheme_movementcontrol_directive_get_ty (SCM); SCM scheme_movementcontrol_directive_get_gx (SCM); SCM scheme_movementcontrol_directive_get_gy (SCM); SCM scheme_movementcontrol_directive_get_override (SCM); SCM scheme_movementcontrol_directive_get_width (SCM); SCM scheme_movementcontrol_directive_get_height (SCM); SCM scheme_log_debug (SCM message); SCM scheme_log_info (SCM message); SCM scheme_log_message (SCM message); SCM scheme_log_warning (SCM message); SCM scheme_log_critical (SCM message); SCM scheme_log_error (SCM message); #endif denemo-2.2.0/src/PaxHeaders.19168/ui0000644000000000000000000000013213135434152013657 xustar0030 mtime=1500919914.346648472 30 atime=1500919914.539981806 30 ctime=1500919914.346648472 denemo-2.2.0/src/ui/0000755000175000017500000000000013135434152015605 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/src/ui/PaxHeaders.19168/palettes.h0000644000000000000000000000013213135434036015727 xustar0030 mtime=1500919838.363315139 30 atime=1500919920.853315139 30 ctime=1500919914.323315139 denemo-2.2.0/src/ui/palettes.h0000644000175000017500000000325313135434036017603 0ustar00jjbenhamjjbenham00000000000000/* * palettes.h * * Copyright 2013 Richard Shann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ #ifndef PALETTES_H #define PALETTES_H #include #include #include /* returns palette of given name, returns NULL if none */ DenemoPalette *get_palette (gchar *name); DenemoPalette *create_palette (gchar *name, gboolean docked, gboolean row_wise); DenemoPalette *set_palette_shape (gchar *name, gboolean row_wise, gint limit);//creates palette if it does not exist gboolean palette_add_button (DenemoPalette *pal, gchar *label, const gchar *tooltip, gchar *script); void palette_delete_button (DenemoPalette *pal, GtkWidget *button); void repack_palette (DenemoPalette *pal); void delete_palette (DenemoPalette *pal); gchar *get_palette_name (gboolean allow_custom); gchar *choose_palette_by_name (gboolean allow_custom, gboolean non_showing); void place_action_in_palette (gint command_idx, const gchar *name); gboolean palette_action_button (DenemoPalette *pal, gchar *label); #endif denemo-2.2.0/src/ui/PaxHeaders.19168/help.h0000644000000000000000000000013213135434036015036 xustar0030 mtime=1500919838.363315139 30 atime=1500919920.859981805 30 ctime=1500919914.306648472 denemo-2.2.0/src/ui/help.h0000644000175000017500000000053013135434036016705 0ustar00jjbenhamjjbenham00000000000000/* help.h * header file for help.c * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller * 2013 Richard Shann */ #ifndef HELP_H #define HELP_H void about (DenemoAction * action, DenemoScriptParam* param); void browse_manual (DenemoAction * action, DenemoScriptParam* param); void display_shortcuts (void); #endif denemo-2.2.0/src/ui/PaxHeaders.19168/dialogs.h0000644000000000000000000000013213135434036015530 xustar0030 mtime=1500919838.363315139 30 atime=1500919920.859981805 30 ctime=1500919914.303315139 denemo-2.2.0/src/ui/dialogs.h0000644000175000017500000000333413135434036017404 0ustar00jjbenhamjjbenham00000000000000/** * dialogs.h * header files for callbacks that create dialog boxes prompting the * user for further action * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller */ #include #ifndef __DIALOGS_H__ #define __DIALOGS_H__ typedef enum actiontype { CHANGEINITIAL, INSERT } actiontype; void clef_change_initial (DenemoAction * action, DenemoScriptParam * param); void clef_change_insert (DenemoAction * action, DenemoScriptParam * param); void key_change_initial (DenemoAction * action, DenemoScriptParam * param); void key_change_insert (DenemoAction * action, DenemoScriptParam * param); void timesig_change_initial (DenemoAction * action, DenemoScriptParam * param); void timesig_change_insert (DenemoAction * action, DenemoScriptParam * param); void clef_change (DenemoProject * gui, actiontype action); void key_change (DenemoProject * gui, actiontype action); void timesig_change (DenemoProject * gui, actiontype action); void score_mwidth_change (DenemoAction * action, gpointer callback_data); void staff_properties_change_cb (DenemoAction * action, DenemoScriptParam * param); void playback_properties_change (DenemoAction * action, DenemoScriptParam * param); void tomeasurenum (DenemoAction * action, DenemoScriptParam * param); void preferences_change (DenemoAction * action, DenemoScriptParam * param); void header_change (DenemoAction * action, DenemoScriptParam * param); void score_properties_dialog (DenemoAction * action, DenemoScriptParam * param); void export_pdf_action (DenemoAction * action, DenemoScriptParam * param); const gchar *get_clef_name (guint type); void tupletchangedialog (DenemoObject * newobj, GtkWidget * scorearea); #endif /* __DIALOGS_H__ */ denemo-2.2.0/src/ui/PaxHeaders.19168/scoreprops.c0000644000000000000000000000013213135434036016300 xustar0030 mtime=1500919838.363315139 30 atime=1500919920.859981805 30 ctime=1500919914.333315139 denemo-2.2.0/src/ui/scoreprops.c0000644000175000017500000002452113135434036020155 0ustar00jjbenhamjjbenham00000000000000/* scoreprops.c * Callback that creates a "Score Properties" dialog box. * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Adam Tee, Matthew Hiller */ #include #include #include #include "core/utils.h" #include "core/view.h" #include "command/commandfuncs.h" #include "command/staff.h" // signal_structural_change (Denemo.project); surely in wrong file... #include "ui/dialogs.h" #define COL_NAME 0 #define COL_VALUE 1 #define COL_PTR 2 /** * Lilyponds supported font sizes */ static gchar *fontsizes[8] = { "11", "13", "14", "16", "18", "20", "23", "26" }; /** * Lilyponds supported paper sizes */ static gchar *papersizes[6] = { "a4", "a6", "a5", "legal", "letter", "tabloid" }; typedef struct papersetupcb { GtkWidget *papersize; GtkWidget *lilyversion; GtkWidget *portrait; GtkWidget *fontsize; GtkWidget *lilypond; } papersetupcb; /* UNUSED static void cell_edited (GtkCellRendererText * cellrenderertext, gchar * path_string, gchar * new_text, GtkTreeModel * model) { GtkTreePath *path = gtk_tree_path_new_from_string (path_string); GtkTreeIter iter; gtk_tree_model_get_iter (model, &iter, path); gtk_list_store_set (GTK_LIST_STORE (model), &iter, COL_VALUE, new_text, -1); gtk_tree_path_free (path); } */ static gboolean abandon_editprops_custom_scoreblock (DenemoProject * gui) { if (gui->custom_scoreblocks) return confirm (_("Custom LilyPond Score Block"), _("You will need to edit the LilyPond text to copy these edits from the standard scoreblock.\nIt might be easier to edit your custom scoreblock directly. Abandon?")); return FALSE; } /** * Function to set the printed score parameters * */ static void setpaperconfig (papersetupcb * cbdata, DenemoProject * gui) { #if GTK_MAJOR_VERSION==3 g_string_assign (gui->lilycontrol.papersize, (gchar *) gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (cbdata->papersize))); g_string_assign (gui->lilycontrol.staffsize, (gchar *) gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (cbdata->fontsize))); #else g_string_assign (gui->lilycontrol.papersize, (gchar *) gtk_combo_box_get_active_text (cbdata->papersize)); g_string_assign (gui->lilycontrol.staffsize, (gchar *) gtk_combo_box_get_active_text (cbdata->fontsize)); #endif g_string_assign (gui->lilycontrol.lilyversion, (gchar *) gtk_entry_get_text (GTK_ENTRY (cbdata->lilyversion))); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cbdata->portrait))) { gui->lilycontrol.orientation = TRUE; } else gui->lilycontrol.orientation = FALSE; //g_debug(" %s %s %d %d \n", gui->lilycontrol.papersize->str, gui->lilycontrol.lilyversion->str, gui->lilycontrol.fontsize, gui->lilycontrol.orientation); score_status (gui, TRUE); } /** * Create and run a modal score properties dialog. */ void score_properties_dialog (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; GET_1PARAM (action, param, fontsize); if (query) { if (*query) if (!strcmp ("fontsize", query)) { g_string_assign (param->string, Denemo.project->lilycontrol.staffsize->str); param->status = TRUE; } return; } if (fontsize) { signal_structural_change (Denemo.project); g_string_assign (Denemo.project->lilycontrol.staffsize, fontsize); param->status = TRUE; return; } if (abandon_editprops_custom_scoreblock (gui)) return; GtkWidget *dialog; GtkWidget *notebook; GtkWidget *label; GtkWidget *measure_width; GtkWidget *staff_spacing; gint i; DenemoMovement *si = gui->movement; //g_assert (si != NULL); dialog = gtk_dialog_new_with_buttons (_("Score properties"), GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); //gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); notebook = gtk_notebook_new (); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), notebook); // Layout GtkWidget *vbox = gtk_vbox_new (FALSE, 1); label = gtk_label_new_with_mnemonic (_("Display Layout")); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label); GtkWidget *hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new (_("Measure width (pixels):")); gtk_container_add (GTK_CONTAINER (hbox), label); measure_width = gtk_spin_button_new_with_range (10.0, 1000, 1.0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (measure_width), (gdouble) si->measurewidth); gtk_container_add (GTK_CONTAINER (hbox), measure_width); hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new (_("Staff spacing (pixels):")); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_container_add (GTK_CONTAINER (hbox), label); staff_spacing = gtk_spin_button_new_with_range (2 * STAFF_HEIGHT, 1000, 1.0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (staff_spacing), (gdouble) si->staffspace); gtk_container_add (GTK_CONTAINER (hbox), staff_spacing); papersetupcb *setup = (papersetupcb *) g_malloc0 (sizeof (papersetupcb)); vbox = gtk_vbox_new (FALSE, 1); label = gtk_label_new_with_mnemonic (_("Typesetter")); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label); #if GTK_MAJOR_VERSION==3 GtkWidget *papersize = gtk_combo_box_text_new (); for (i = 0; i < G_N_ELEMENTS (papersizes); i++) { gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (papersize), papersizes[i]); if (!strcmp (gui->lilycontrol.papersize->str, papersizes[i])) gtk_combo_box_set_active (GTK_COMBO_BOX (papersize), i); } #else GtkWidget *papersize = gtk_combo_box_entry_new_text (); for (i = 0; i < G_N_ELEMENTS (papersizes); i++) gtk_combo_box_append_text (GTK_COMBO_BOX (papersize), papersizes[i]); gtk_entry_set_text (GTK_ENTRY (GTK_BIN (papersize)->child), gui->lilycontrol.papersize->len ? gui->lilycontrol.papersize->str : ""); #endif hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (vbox), hbox); label = gtk_label_new (_("Paper Size")); gtk_container_add (GTK_CONTAINER (hbox), label); gtk_container_add (GTK_CONTAINER (hbox), papersize); #if GTK_MAJOR_VERSION==3 GtkWidget *fontsizecombo = gtk_combo_box_text_new (); for (i = 0; i < G_N_ELEMENTS (fontsizes); i++) { gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (fontsizecombo), fontsizes[i]); if (!strcmp (gui->lilycontrol.staffsize->str, fontsizes[i])) gtk_combo_box_set_active (GTK_COMBO_BOX (fontsizecombo), i); } #else GtkWidget *fontsizecombo = gtk_combo_box_entry_new_text (); for (i = 0; i < G_N_ELEMENTS (fontsizes); i++) gtk_combo_box_append_text (GTK_COMBO_BOX (fontsizecombo), fontsizes[i]); gtk_entry_set_text (GTK_ENTRY (GTK_BIN (fontsizecombo)->child), gui->lilycontrol.staffsize->len ? gui->lilycontrol.staffsize->str : ""); #endif hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (vbox), hbox); label = gtk_label_new (_("Font Size")); gtk_container_add (GTK_CONTAINER (hbox), label); gtk_container_add (GTK_CONTAINER (hbox), fontsizecombo); hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (vbox), hbox); label = gtk_label_new (_("Lilypond Version")); gtk_container_add (GTK_CONTAINER (hbox), label); GtkWidget *lilyversion = gtk_entry_new (); gtk_container_add (GTK_CONTAINER (hbox), lilyversion); gtk_entry_set_text (GTK_ENTRY (lilyversion), gui->lilycontrol.lilyversion->len ? gui->lilycontrol.lilyversion->str : ""); GtkWidget *portraitradio = gtk_radio_button_new_with_label (NULL, _("Portrait")); gtk_container_add (GTK_CONTAINER (vbox), portraitradio); GtkWidget *landscaperadio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (portraitradio)), _("Landscape")); gtk_container_add (GTK_CONTAINER (vbox), landscaperadio); if (gui->lilycontrol.orientation) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (portraitradio), TRUE); else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (landscaperadio), TRUE); setup->papersize = papersize; setup->fontsize = fontsizecombo; setup->portrait = portraitradio; setup->lilyversion = lilyversion; score_status (gui, TRUE); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { /* if (!si->lily_file) { gchar *value; GString *dest; gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list_store), &iter); do { gtk_tree_model_get (GTK_TREE_MODEL (list_store), &iter, COL_VALUE, &value, COL_PTR, &dest, -1); g_string_assign (dest, value); } while (gtk_tree_model_iter_next (GTK_TREE_MODEL (list_store), &iter)); } */ // Set layout options gint width = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (measure_width)); if (width != si->measurewidth) { si->measurewidth = width; adjustmeasurewidth (si, 0); draw_score_area(); } gint spacing = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (staff_spacing)); if (spacing != si->staffspace) { si->staffspace = spacing; draw_score_area(); } setpaperconfig (setup, gui); } g_free (setup); signal_structural_change (Denemo.project); gtk_widget_destroy (dialog); } /***************** movement properties *********************/ struct callbackdata { DenemoProject *gui; GtkWidget *title; GtkWidget *subtitle; GtkWidget *poet; GtkWidget *composer; GtkWidget *meter; GtkWidget *opus; GtkWidget *arranger; GtkWidget *instrument; GtkWidget *dedication; GtkWidget *piece; GtkWidget *head; GtkWidget *copyright; GtkWidget *footer; GtkWidget *tagline; GtkWidget *lilypond_before; GtkWidget *lilypond_after; // GtkWidget *layout; // GtkWidget *extra; }; /** * Creates a dialog for setting properties of current movement gui->movement * */ void movement_props_dialog (DenemoAction * action, DenemoScriptParam * param) { } denemo-2.2.0/src/ui/PaxHeaders.19168/clefdialog.c0000644000000000000000000000013213135434036016172 xustar0030 mtime=1500919838.363315139 30 atime=1500919920.876648472 30 ctime=1500919914.299981805 denemo-2.2.0/src/ui/clefdialog.c0000644000175000017500000001334113135434036020045 0ustar00jjbenhamjjbenham00000000000000/* clefdialog.c * callback that creates "change staff" dialog box * user for further action * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005, 2008 Matthew Hiller,Adam Tee, Richard Shann */ #include #include #include "display/calculatepositions.h" #include "command/chord.h" #include "command/commandfuncs.h" #include "command/contexts.h" #include "display/draw.h" #include "ui/dialogs.h" #include "command/measure.h" #include "command/object.h" #include "command/staff.h" #include "core/utils.h" #include "core/cache.h" #define COLUMN_NAME (0) #define COLUMN_ID (1) typedef struct ClefInfo { enum clefs clef; gchar *name; } ClefInfo; // TODO: make this globally accessable static ClefInfo clef_info[] = { {DENEMO_TREBLE_CLEF, N_("Treble")}, {DENEMO_BASS_CLEF, N_("Bass")}, {DENEMO_ALTO_CLEF, N_("Alto")}, {DENEMO_G_8_CLEF, N_("Treble Octava bassa")}, {DENEMO_TENOR_CLEF, N_("Tenor")}, {DENEMO_SOPRANO_CLEF, N_("Soprano")}, {DENEMO_F_8_CLEF, N_("Bass Octava bassa")}, {DENEMO_FRENCH_CLEF, N_("French")}, {DENEMO_BARITONE_CLEF, N_("Baritone")}, }; const gchar * get_clef_name (guint type) { if (type < G_N_ELEMENTS (clef_info)) return clef_info[type].name; return NULL; } static enum clefs get_clef_from_name (gchar * name) { guint i; for (i = 0; i < G_N_ELEMENTS (clef_info); i++) { if (!g_ascii_strcasecmp (name, clef_info[i].name)) return clef_info[i].clef; } return DENEMO_INVALID_CLEF; } /** * Callback to insert a clef change * calls clef change with the INSERT argument */ void clef_change_insert (DenemoAction * action, DenemoScriptParam * param) { GET_1PARAM (action, param, clefname); DenemoProject *gui = Denemo.project; if (clefname == NULL) clef_change (gui, INSERT); else { enum clefs clef = get_clef_from_name (clefname); if (clef != DENEMO_INVALID_CLEF) object_insert (gui, clef_new (clef)); displayhelper (gui); } } /** * Callback to change the inital clef on a staff * calls clef change with the CHANGEINITIAL argument */ void clef_change_initial (DenemoAction * action, DenemoScriptParam * param) { GET_1PARAM (action, param, clefname); DenemoProject *gui = Denemo.project; if (clefname == NULL) clef_change (gui, CHANGEINITIAL); else { enum clefs clef = get_clef_from_name (clefname); if (clef != DENEMO_INVALID_CLEF) dnm_setinitialclef (gui->movement, gui->movement->currentstaff->data, clef); displayhelper (gui); } } void dnm_setinitialclef (DenemoMovement * si, DenemoStaff * curstaffstruct, enum clefs clef) { signal_structural_change (Denemo.project); curstaffstruct->clef.type = clef; find_leftmost_staffcontext (curstaffstruct, si); staff_fix_note_heights (curstaffstruct); find_xes_in_all_measures (si); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Clef change dialog, two modes * 1, Set Initial clef * 2, Insert Clef Change */ void clef_change (DenemoProject * gui, actiontype action) { if(Denemo.non_interactive) return; GtkWidget *dialog; GtkWidget *label; GtkWidget *combobox; GtkListStore *list_store; GtkTreeIter iter; GtkCellRenderer *renderer; DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; int i; dialog = gtk_dialog_new_with_buttons (((action == CHANGEINITIAL) ? _("Set Clef") : _("Insert clef change")), NULL, /* parent window */ (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); label = gtk_label_new (_("Select desired clef")); gtk_container_add (GTK_CONTAINER (content_area), label); list_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT); combobox = gtk_combo_box_new_with_model (GTK_TREE_MODEL (list_store)); //FIXME This looks like it could be made more simple to read by using someting like gtk_combo_text_box or something for (i = 0; i < (gint) G_N_ELEMENTS (clef_info); i++) { gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, COLUMN_NAME, _(clef_info[i].name), COLUMN_ID, clef_info[i].clef, -1); if (clef_info[i].clef == curstaffstruct->clef.type) { gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), &iter); } } renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combobox), renderer, "text", COLUMN_NAME); gtk_container_add (GTK_CONTAINER (content_area), combobox); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { enum clefs clef; gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combobox), &iter); gtk_tree_model_get (GTK_TREE_MODEL (list_store), &iter, COLUMN_ID, &clef, -1); if (action == CHANGEINITIAL) { dnm_setinitialclef (gui->movement, curstaffstruct, clef); } else { if (gui->movement->currentobject && ((DenemoObject *) gui->movement->currentobject->data)->type == CLEF) deleteobject (NULL, NULL); DenemoObject *newclef = clef_new (clef); object_insert (gui, newclef); if(curstaffstruct->voicecontrol & DENEMO_SECONDARY) newclef->isinvisible = !choose_option (_("Choose Clef Visibility"), _("Affects display only"), _("Clef should be typeset")); } score_status (gui, TRUE); displayhelper (gui); } gtk_widget_destroy (dialog); } denemo-2.2.0/src/ui/PaxHeaders.19168/help.c0000644000000000000000000000013213135434036015031 xustar0030 mtime=1500919838.363315139 30 atime=1500919920.886648472 30 ctime=1500919914.303315139 denemo-2.2.0/src/ui/help.c0000644000175000017500000001130313135434036016700 0ustar00jjbenhamjjbenham00000000000000/* help.cpp * implements the stuff under Help in the menubar * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller */ #include #include "config.h" #include "core/utils.h" #include "core/kbd-custom.h" #include /* for strlen */ /* The tutorial mentioned that the actual gchar * held within a * GtkText widget needs to be freed. I don't do such a free, though, * so I think this function has a memory leak in it. */ /** * Create the about dialog * */ void about (DenemoAction * action, DenemoScriptParam* callback_data) { GtkWidget *dialog; const char *authors[] = { "Richard Shann", "Jeremiah Benham", "Matthew Hiller", "Adam Tee", "Nils Gey", NULL }; dialog = gtk_about_dialog_new (); gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (dialog), _("GNU Denemo")); gtk_about_dialog_set_comments (GTK_ABOUT_DIALOG (dialog), _("Free and Open Music Notation Editor")); gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (dialog), VERSION); gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (dialog), "http://www.denemo.org"); gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (dialog), _("Denemo Website")); gtk_about_dialog_set_license (GTK_ABOUT_DIALOG (dialog), _("(c) 1999 - 2010 Matthew Hiller, Adam Tee, and others.\n\n\ http://www.denemo.org\n\n\ This program is licensed under the terms of the GNU\n\ General Public License and is provided with absolutely\n\ NO WARRANTY; see the file COPYING for details.")); gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (dialog), authors); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (Denemo.window)); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } /** * Function to allow browsing the user manual * uses the given web browser to display the manual * If param contains a url it opens that */ void browse_manual (DenemoAction * action, DenemoScriptParam * param) { GET_1PARAM (action, param, url); gboolean retval; GError *error = NULL; /* get the uri to the manual */ gchar *manualpath = g_build_filename (get_system_data_dir (), "manual", "denemo-manual.html", NULL); gchar *manualuri = url ? g_strdup (url) : g_filename_to_uri (manualpath, NULL, NULL); /* check that the browser exists */ gchar *browserpath = g_find_program_in_path (Denemo.prefs.browser->str); if (browserpath == NULL) { if (run_file_association (manualuri)) return; /* show a warning dialog */ GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW (Denemo.window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, _("Could not find %s in the path"), Denemo.prefs.browser->str); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("Please edit the chosen " "browser in the " "preferences.")); gtk_dialog_run (GTK_DIALOG (dialog)); /* free the memory and return */ gtk_widget_destroy (dialog); g_free (manualpath); g_free (manualuri); return; } /* spawn the process to show the manual */ gchar *argv[] = { Denemo.prefs.browser->str, manualuri, NULL }; retval = g_spawn_async (NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &error); if (!retval) { g_message (_("Could not execute specified web browser: %s"), error->message); g_error_free (error); } /* free the memory */ g_free (browserpath); g_free (manualpath); g_free (manualuri); } void display_shortcuts (void) { GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL); GtkTextView *text_view = (GtkTextView*)gtk_text_view_new (); gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE); GtkWidget *scrolled_text_view = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_container_add (GTK_CONTAINER (scrolled_text_view), GTK_WIDGET(text_view)); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_text_view), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_widget_set_size_request (GTK_WIDGET (scrolled_text_view), 150, 300); gtk_container_add (GTK_CONTAINER (window), scrolled_text_view); GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view)); GString *shortcuts = keymap_get_bindings (Denemo.map); gtk_text_buffer_set_text (buffer, shortcuts->str, -1); gtk_widget_show_all(window); Denemo.prefs.learning = TRUE; g_string_free(shortcuts, TRUE); } denemo-2.2.0/src/ui/PaxHeaders.19168/palettes.c0000644000000000000000000000013213135434036015722 xustar0030 mtime=1500919838.363315139 30 atime=1500919920.893315139 30 ctime=1500919914.323315139 denemo-2.2.0/src/ui/palettes.c0000644000175000017500000006420213135434036017577 0ustar00jjbenhamjjbenham00000000000000/* * palettes.c * * Copyright 2013 Richard Shann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include "ui/palettes.h" #include "core/view.h" #include "core/utils.h" #include "ui/texteditors.h" #include #if GTK_MAJOR_VERSION==2 #define gtk_grid_new() (pal->rows?gtk_hbox_new (FALSE, 1):gtk_vbox_new (FALSE, 1)) #define gtk_grid_attach(widget, obj, a,b,c,d) gtk_box_pack_start(widget, obj, FALSE, TRUE, 0) #define GTK_GRID(a) a #endif static void hide_palette_widget (GtkWidget *w) { GtkWidget *parent = gtk_widget_get_parent (w); if(GTK_IS_WINDOW(parent)) gtk_widget_hide (parent); else gtk_widget_hide (w); } static void hide_docked_palettes (void) { GList *g; for (g=Denemo.palettes;g;g=g->next) { DenemoPalette *pal = g->data; if(pal->docked) hide_palette_widget (pal->box); } } static void hide_all_palettes (void) { GList *g; for (g=Denemo.palettes;g;g=g->next) { DenemoPalette *pal = g->data; hide_palette_widget (pal->box); } } static void destroy_all_palettes (void) { if(confirm(_("Destroy All Palettes"), _("Get rid of all palettes permanently?"))) { hide_all_palettes(); Denemo.palettes = NULL;//on exit an empty palettes.xml will be written } } static void position_palette_menu (GtkMenu *menu, gint *x, gint *y, gboolean *push_in) { *x = *y = 0; *push_in = TRUE; } static void popupmenu (GtkWidget *menu) { g_signal_connect (menu, "selection-done", gtk_main_quit, NULL); gtk_widget_show_all (menu); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, #ifdef G_OS_WIN32 position_palette_menu, #else NULL, #endif NULL, 0, gtk_get_current_event_time ()); gtk_main ();//this works with the "selection-done" signal above; I haven't used this in other menu popups, I did this at the outset of creating palettes. } void repack_palette (DenemoPalette *pal) { gint i; GList *g; GtkWidget *parent = gtk_widget_get_parent(pal->box); for(g=pal->buttons;g;g=g->next) { if(gtk_widget_get_parent(g->data)) gtk_container_remove(GTK_CONTAINER(pal->box), g->data); } gtk_widget_destroy (pal->box); pal->box = gtk_grid_new(); // gchar *tooltip = g_strdup_printf("The \"%s\" Palette:\n%s", pal->name, _("To edit this palette, dock/undock, hide etc, right click on a button and choose Edit Palette.")); // gtk_widget_set_tooltip_text (pal->box, tooltip); // g_free(tooltip); for (i=0, g=pal->buttons;g;i++, g=g->next) { if(pal->rows) gtk_grid_attach (GTK_GRID(pal->box), g->data, i/pal->limit, i%pal->limit, 1, 1); else gtk_grid_attach (GTK_GRID(pal->box), g->data, i%pal->limit, i/pal->limit, 1, 1); gtk_widget_show (GTK_WIDGET(g->data)); } gtk_container_add (GTK_CONTAINER (parent), pal->box); if(pal->docked) { gtk_widget_hide (pal->window); pal->rows? gtk_widget_reparent (pal->box, Denemo.vpalettes):gtk_widget_reparent (pal->box, Denemo.hpalettes); } else { gtk_window_resize (GTK_WINDOW(pal->window), 1, 1); gtk_widget_show (pal->window); gtk_widget_set_can_focus (pal->window, FALSE); switch_back_to_main_window (); } gtk_widget_show(pal->box); } static void toggle_rows (DenemoPalette *pal) { pal->rows = !pal->rows; repack_palette (pal); } static void toggle_dock (DenemoPalette *pal) { if(pal->docked) gtk_widget_reparent (pal->box, pal->window), gtk_window_set_keep_above (GTK_WINDOW (pal->window), TRUE); else pal->rows? gtk_widget_reparent (pal->box, Denemo.vpalettes):gtk_widget_reparent (pal->box, Denemo.hpalettes); pal->docked = !pal->docked; pal->docked? gtk_widget_hide (pal->window): gtk_widget_show (pal->window); } static void set_limit (DenemoPalette *pal) { gchar *initial = g_strdup_printf("%d", pal->limit); gchar *response = string_dialog_entry (Denemo.project, "Palette Layout", _("Give Limit"), initial); g_free(initial); if(response && atoi(response)) { pal->limit = atoi(response); repack_palette (pal); } else g_warning("Cancelled %s", response); } static GtkWidget *get_palette_menu(DenemoPalette *pal) { GtkWidget *menu = gtk_menu_new (); GtkWidget *item = gtk_menu_item_new_with_label (_("Hide")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (hide_palette_widget), (gpointer) pal->box); if(!pal->rows) { item = gtk_menu_item_new_with_label (_("Make Horizontal")); gtk_widget_set_tooltip_text (item, _("Arrange the buttons extending horizontally")); //gtk_widget_add_events (item, GDK_ENTER_NOTIFY_MASK); //g_signal_connect (item, "enter-notify-event", show_tooltip, _("Arrange the buttons extending horizontally")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (toggle_rows), (gpointer) pal); } else { item = gtk_menu_item_new_with_label (_("Make Vertical")); gtk_widget_set_tooltip_text (item, _("Arrange the buttons extending vertically")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (toggle_rows), (gpointer) pal); } { item = gtk_menu_item_new_with_label (pal->rows?_("Vertical Limit"): _("Horizontal Limit")); gtk_widget_set_tooltip_text (item, pal->rows? _("Set maximum extent vertically") : _("Set maximum extent horizontally") ); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (set_limit), (gpointer) pal); } { item = gtk_menu_item_new_with_label ( pal->docked?_("Undock"):_("Dock")); gtk_widget_set_tooltip_text (item, pal->docked?_("Dock this palette in the main display"):_("Undock this palette from the main display") ); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (toggle_dock), (gpointer) pal); } if (pal->docked) { item = gtk_menu_item_new_with_label ( _("Hide All Docked")); gtk_widget_set_tooltip_text (item, _("Hide all the docked palettes")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (hide_docked_palettes), (gpointer) pal); } { item = gtk_menu_item_new_with_label ( _("Hide All Palettes")); gtk_widget_set_tooltip_text (item, _("Hide all the palettes")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (hide_all_palettes), (gpointer) pal); } { item = gtk_menu_item_new_with_label ( _("Destroy All Palettes")); gtk_widget_set_tooltip_text (item, _("Destroy all the palettes - this will save time at startup, and shorten the palette menu.")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (destroy_all_palettes), (gpointer) pal); } return menu; } static void get_script_for_button (GtkWidget *button) { gchar *script = g_object_get_data (G_OBJECT(button), "script"); appendSchemeText (script); gboolean sensitive = gtk_widget_get_visible (gtk_widget_get_toplevel (Denemo.script_view)); if(!sensitive) set_toggle ("ToggleScript", TRUE); } static void put_script_for_button (GtkWidget *button) { gchar *text = g_strdup_printf(_("Overwrite script for button \"%s\"?"), gtk_button_get_label(GTK_BUTTON(button))); if(confirm (_("Re-write Script"), text)) { gchar *script = get_script_view_text (); gchar *oldscript = (gchar*) g_object_get_data (G_OBJECT(button), "script"); g_object_set_data (G_OBJECT(button), "script", script); g_signal_handlers_block_by_func(G_OBJECT(button), G_CALLBACK (call_out_to_guile), oldscript); g_free(oldscript); g_signal_connect_swapped ( G_OBJECT (button), "clicked", G_CALLBACK (call_out_to_guile), script); } else infodialog (_("Cancelled")); g_free(text); } static void set_image_for_button (GtkWidget *button, gchar *name) { gchar *icon = find_denemo_file (DENEMO_DIR_PIXMAPS, name); GtkWidget *child_widget = gtk_bin_get_child(GTK_BIN(button)); if(GTK_IS_LABEL(child_widget)) { gtk_button_set_label (GTK_BUTTON(button), ""); //g_debug("destroy %p, \n", child_widget); child_widget = gtk_bin_get_child(GTK_BIN(button)); //g_debug("or rather destroy %p, is %d \n", child_widget, GTK_IS_WIDGET(child_widget)); gtk_widget_destroy (child_widget); } GdkPixbuf *pb = #ifdef G_OS_WIN32 rsvg_pixbuf_from_file (icon, NULL); #else gdk_pixbuf_new_from_file(icon, NULL);// Works on GNU/Linux but not windows - pixbuf loader not working... #endif if(pb) gtk_button_set_image(GTK_BUTTON(button),gtk_image_new_from_pixbuf(pb)); else gtk_button_set_label (GTK_BUTTON(button), name); //gtk_button_set_always_show_image (button, TRUE); g_object_set_data (G_OBJECT(button), "icon", (gpointer)g_strdup(name)); g_type_class_unref (g_type_class_ref (GTK_TYPE_BUTTON)); g_object_set (gtk_settings_get_default (), "gtk-button-images", TRUE, NULL); gtk_widget_show_all(button); g_free (icon); } static void edit_label_for_button (GtkWidget *button) { const gchar *label; label = g_object_get_data (G_OBJECT(button), "icon"); if(label==NULL) label = gtk_button_get_label (GTK_BUTTON(button)); gchar *newlabel = string_dialog_entry (Denemo.project, _("Write Label"), _("Write a label for this button"), (gchar*)label); if(newlabel && *newlabel) { gchar *icon = find_denemo_file (DENEMO_DIR_PIXMAPS, newlabel); if(icon) { set_image_for_button (button, newlabel); g_free (icon); } else { gtk_button_set_label (GTK_BUTTON(button), newlabel); //setting the label changes the widget: this works around a bizarre bug, if you just set the markup on the label the button has two labels GtkWidget *label_widget = gtk_bin_get_child(GTK_BIN(button)); gtk_label_set_use_markup (GTK_LABEL(label_widget), TRUE); gtk_label_set_markup (GTK_LABEL (label_widget), newlabel); } } g_free(newlabel); } static void edit_tooltip_for_button (GtkWidget *button) { const gchar *tooltip = gtk_widget_get_tooltip_text (button); gchar *newtooltip = string_dialog_entry (Denemo.project, _("Write Tooltip"), _("Write a tooltip for this button"), (gchar*)tooltip); if(newtooltip) { gtk_widget_set_tooltip_text (button, newtooltip); } g_free(newtooltip); } static void help_for_button (GtkWidget *button) { gchar *tooltip = gtk_widget_get_tooltip_text (button); if (tooltip) infodialog (tooltip); } static void remove_button (GtkWidget *button) { DenemoPalette *pal = g_object_get_data (G_OBJECT(button), "palette"); palette_delete_button (pal, button); } static void move_button_to_start (GtkWidget *button) { DenemoPalette *pal = g_object_get_data (G_OBJECT(button), "palette"); pal->buttons = g_list_remove (pal->buttons, button); pal->buttons = g_list_prepend (pal->buttons, button); repack_palette (pal); } static void move_button_to_end (GtkWidget *button) { DenemoPalette *pal = g_object_get_data (G_OBJECT(button), "palette"); pal->buttons = g_list_remove (pal->buttons, button); pal->buttons = g_list_append (pal->buttons, button); repack_palette (pal); } static void copy_button (GtkWidget *button) { gchar *tooltip = gtk_widget_get_tooltip_text (button); gchar *label = (gchar*)gtk_button_get_label (GTK_BUTTON(button)); gchar *script = g_object_get_data (G_OBJECT(button), "script"); gchar *name = get_palette_name (TRUE); if(name) { DenemoPalette *pal = get_palette (name); if(pal==NULL) pal = create_palette (name, FALSE, TRUE); palette_add_button (pal, label, tooltip, script); } } static void duplicate_button (GtkWidget *button) { DenemoPalette *pal = g_object_get_data (G_OBJECT(button), "palette"); gchar *tooltip = gtk_widget_get_tooltip_text (button); gchar *label = _("Duplicate Button"); gchar *script = g_object_get_data (G_OBJECT(button), "script"); palette_add_button (pal, label, tooltip, script); } static void popup_button_menu(DenemoPalette *pal, GtkWidget *button) { GtkWidget *menu = gtk_menu_new (); GtkWidget *item; gboolean sensitive = gtk_widget_get_visible (gtk_widget_get_toplevel (Denemo.script_view));//some menu items should be insensitive if the Scheme window is not visible item = gtk_menu_item_new_with_label (_("Help")); gtk_widget_set_tooltip_text (item, _("Show the help for this button")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (help_for_button), (gpointer) button); item = gtk_menu_item_new_with_label (_("Edit Label")); gtk_widget_set_tooltip_text (item, _("Edit the label of this button")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (edit_label_for_button), (gpointer) button); item = gtk_menu_item_new_with_label (_("Edit Tooltip")); gtk_widget_set_tooltip_text (item, _("Edit the tooltip of this button")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (edit_tooltip_for_button), (gpointer) button); item = gtk_menu_item_new_with_label (_("Copy to another Palette")); gtk_widget_set_tooltip_text (item, _("Copy this button to another palette")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (copy_button), (gpointer) button); item = gtk_menu_item_new_with_label (_("Duplicate this button")); gtk_widget_set_tooltip_text (item, _("Create a new button with the same effect")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (duplicate_button), (gpointer) button); item = gtk_menu_item_new_with_label (_("Remove from Palette")); gtk_widget_set_tooltip_text (item, _("Remove this button from this palette")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (remove_button), (gpointer) button); item = gtk_menu_item_new_with_label (_("Get Script into Scheme Window")); gtk_widget_set_tooltip_text (item, _("Appends the script that this button executes to the Scheme window")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (get_script_for_button), (gpointer) button); item = gtk_menu_item_new_with_label (_("Save Script from Scheme Window")); gtk_widget_set_tooltip_text (item, _("Uses the script in the Scheme Window as the one that this button executes when clicked, overwriting its old script")); gtk_widget_set_sensitive (item, sensitive); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (put_script_for_button), (gpointer) button); item = gtk_menu_item_new_with_label (_("Move to Start")); gtk_widget_set_tooltip_text (item, _("Moves this button to the start of the palette")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (move_button_to_start), (gpointer) button); item = gtk_menu_item_new_with_label (_("Move to End")); gtk_widget_set_tooltip_text (item, _("Moves this button to the end of the palette")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (move_button_to_end), (gpointer) button); item = gtk_menu_item_new_with_label (_("Edit this Palette")); gtk_widget_set_tooltip_text (item, _("Edits the palette containing this button")); gtk_menu_item_set_submenu (GTK_MENU_ITEM(item), (gpointer)get_palette_menu(pal)); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (menu, "selection-done", gtk_main_quit, NULL); gtk_widget_show_all (menu); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); gtk_main (); } static DenemoPalette *new_palette (gchar *name, gboolean by_row) { DenemoPalette *pal = g_malloc0(sizeof (DenemoPalette)); pal->name = g_strdup(_(name)); pal->limit = 1; pal->rows = by_row; pal->box = gtk_grid_new(); Denemo.palettes = g_list_append(Denemo.palettes, (gpointer)pal); return pal; } DenemoPalette *get_palette (gchar *name) { GList *g; for( g = Denemo.palettes; g; g = g->next) { DenemoPalette *pal = (DenemoPalette*)g->data; if (!strcmp(name, pal->name)) return pal; } return NULL; } static gboolean button_pressed (GtkWidget *button, GdkEventButton *event, DenemoPalette *pal) { Denemo.currentpalette = pal; if (event->button == 1) return FALSE; popup_button_menu(pal, button); return TRUE; } static gboolean already_present (DenemoPalette *pal, gchar *label) { GList *g; for(g=pal->buttons;g;g=g->next) { gchar *icon = g_object_get_data (G_OBJECT(g->data), "icon"); if (!strcmp(label, gtk_button_get_label (GTK_BUTTON(g->data))) || (icon && !strcmp(icon, label))) return TRUE; } return FALSE; } static void fixup_image (GtkWidget *button, gchar *label) { //g_debug("Fixing up image"); set_image_for_button (button, label); } gboolean palette_add_button (DenemoPalette *pal, gchar *label, const gchar *tooltip, gchar *script) { if (already_present(pal, label)) return FALSE; gchar *thescript = g_strdup(script); GtkWidget *button = gtk_button_new_with_label (label); gchar *icon = find_denemo_file (DENEMO_DIR_PIXMAPS, label); if(icon) { g_signal_connect (button, "realize", G_CALLBACK (fixup_image), label); } else { GtkWidget *label_widget = gtk_bin_get_child(GTK_BIN(button));//g_debug("is %s\n", g_type_name(G_TYPE_FROM_INSTANCE(label_widget))); gtk_label_set_use_markup (GTK_LABEL(label_widget), TRUE); } //put button in a list pal->buttons and then call repack_palette. //REF it for repacking g_object_ref (button); pal->buttons = g_list_append(pal->buttons, (gpointer)button); repack_palette (pal); gtk_widget_set_tooltip_text (button, _(tooltip)); g_object_set_data (G_OBJECT(button), "script", thescript); g_object_set_data (G_OBJECT(button), "palette", pal); g_signal_connect_swapped ( G_OBJECT (button), "clicked", G_CALLBACK (call_out_to_guile), thescript); g_signal_connect_after ( G_OBJECT (button), "clicked", G_CALLBACK (switch_back_to_main_window), NULL); g_signal_connect (G_OBJECT (button), "button-press-event", G_CALLBACK (button_pressed), (gpointer)pal); Denemo.currentpalette = pal; return TRUE; } void palette_delete_button (DenemoPalette *pal, GtkWidget *button) { g_free( g_object_get_data (G_OBJECT(button), "script")); pal->buttons = g_list_remove (pal->buttons, button); gtk_widget_destroy(button); } gboolean palette_action_button (DenemoPalette *pal, gchar *label) { gboolean ret = FALSE; GList *g; for (g=pal->buttons;g;g=g->next) { GtkWidget *button = g->data; const gchar *this = gtk_button_get_label (GTK_BUTTON(button)); if (*this=='<') { while (*this && *this != '>') this++; if(*this) this++; } // g_print ("this %s and %s %d\n", this, label, g_str_has_prefix (this, label)); if(*this && g_str_has_prefix (this, label)) { ret = gtk_widget_activate (button); break; } } Denemo.currentpalette = pal; return ret; } DenemoPalette *create_palette (gchar *name, gboolean docked, gboolean rows) { DenemoPalette *pal = get_palette (name); if(pal==NULL) { pal = new_palette (name, TRUE); pal->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (pal->window), pal->name); if(!docked) { gtk_window_set_default_size (GTK_WINDOW (pal->window), 200, 100);//try and get folk to notice it! gtk_window_present (GTK_WINDOW (pal->window)); gtk_window_set_transient_for (GTK_WINDOW(pal->window), GTK_WINDOW(Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (pal->window), TRUE); } g_signal_connect (G_OBJECT (pal->window), "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); pal->rows = rows; if(docked) { pal->docked = TRUE; pal->rows? gtk_box_pack_start (GTK_BOX(Denemo.vpalettes), pal->box, FALSE, TRUE, 0): gtk_box_pack_start (GTK_BOX(Denemo.hpalettes), pal->box, FALSE, TRUE, 0); } else { gtk_widget_show (pal->window); gtk_container_add (GTK_CONTAINER (pal->window), pal->box); } } Denemo.currentpalette = pal; return pal; } DenemoPalette *set_palette_shape (gchar *name, gboolean row_wise, gint limit) { DenemoPalette *pal = create_palette (name, FALSE, row_wise); if (limit>0) { pal->limit = limit; pal->rows = row_wise; repack_palette (pal); //gtk_window_resize (GTK_WINDOW (window), 1, 1); Denemo.currentpalette = pal; return pal; } return NULL; } void delete_palette (DenemoPalette *pal) { GList *g; for(g=pal->buttons;g;g=g->next) palette_delete_button (pal, GTK_WIDGET(g->data)); gtk_widget_destroy (gtk_widget_get_parent (pal->box));//FIXME if docked this will not be a toplevel Denemo.palettes = g_list_remove (Denemo.palettes, pal); Denemo.currentpalette = NULL; } static gchar *selected_palette_name = NULL; static void palette_selected (gchar *name) { selected_palette_name = name; } static void user_palette_name (void) { gchar *name; name = string_dialog_entry (Denemo.project, _("Palette Name"), _("Give name for Palette: "), _("MyPalette")); selected_palette_name = name; } static void set_flag (gboolean *flag) { *flag = TRUE; } //recursive: static gchar *choose_palette_by_name_and_type (gboolean allow_custom, gboolean non_showing, gboolean non_menus) { GtkWidget *menu = gtk_menu_new (); GtkWidget *item; GList *g; selected_palette_name = NULL; gboolean menu_palette_wanted = FALSE; if(Denemo.palettes) { gboolean menu_palettes_present = FALSE; if(allow_custom) { item = gtk_menu_item_new_with_label (_("Create Custom Palette")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); } for (g=Denemo.palettes;g;g=g->next) { DenemoPalette *pal = (DenemoPalette *)g->data; if(non_showing && pal->docked && gtk_widget_get_visible (pal->box)) continue;//g_debug("palette %s is %d\n", pal->name, gtk_widget_get_visible (pal->box));//continue; if(non_showing && (!pal->docked) && gtk_widget_get_visible (gtk_widget_get_parent(pal->box))) continue; if (pal->menu && non_menus) { menu_palettes_present = TRUE; continue; //we include them via a button to pop them up } if ((!pal->menu) && (!non_menus)) continue; //we don't want the non-menu buttons item = gtk_menu_item_new_with_label (pal->name); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (palette_selected), (gpointer) pal->name); } if (menu_palettes_present) { item = gtk_menu_item_new_with_label (_("Palettes from Menus")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (set_flag), &menu_palette_wanted); } popupmenu (menu); } if (non_menus && menu_palette_wanted) return choose_palette_by_name_and_type (FALSE, non_showing, FALSE); if(allow_custom && (selected_palette_name==NULL)) { user_palette_name (); } g_print ("selected %s\n", selected_palette_name); return selected_palette_name; } gchar *choose_palette_by_name (gboolean allow_custom, gboolean non_showing) { return choose_palette_by_name_and_type (allow_custom, non_showing, TRUE); } gchar *get_palette_name (gboolean allow_custom) { return choose_palette_by_name (allow_custom, FALSE); } void place_action_in_palette (gint idx, const gchar *name) { gchar *label = (gchar *) lookup_label_from_idx (Denemo.map, idx); if(name==NULL) name = lookup_name_from_idx (Denemo.map, idx); gchar *script = g_strdup_printf ("(d-%s)", name); const gchar *tooltip = lookup_tooltip_from_idx (Denemo.map, idx); gchar *palette_name = get_palette_name (TRUE);g_print("palette name %s\n", palette_name); if(palette_name) { DenemoPalette *pal = get_palette (palette_name); if(pal==NULL) { pal = set_palette_shape (palette_name, TRUE, 1); } if(pal) palette_add_button (pal, label, tooltip, script); } g_free (script); } denemo-2.2.0/src/ui/PaxHeaders.19168/kbd-interface.c0000644000000000000000000000013213135434036016577 xustar0030 mtime=1500919838.363315139 30 atime=1500919920.923315139 30 ctime=1500919914.306648472 denemo-2.2.0/src/ui/kbd-interface.c0000644000175000017500000010305513135434036020454 0ustar00jjbenhamjjbenham00000000000000/* kbd-interface.c * functions for implementing the customize keyboard dialog * * for Denemo, thu GNU graphical music notation editor * (c) 2000-2005 Matthew Hiller */ #include #include #include #include #include #include #include #include "core/kbd-custom.h" #include "core/prefops.h" #include "ui/mousing.h" #include "ui/palettes.h" #include "core/utils.h" #include "core/view.h" #include "core/palettestorage.h" #include "core/menusystem.h" #include "scripting/scheme-callbacks.h" static gint get_command_position(GtkTreeModel* model, gint command_idx){ gboolean valid; command_row* row1 = NULL; command_row* row2 = NULL; gint i = 0; GtkTreeIter iter; valid = gtk_tree_model_get_iter_first (model, &iter); keymap_get_command_row(Denemo.map, &row2, command_idx); while (valid){ gtk_tree_model_get (model, &iter, COL_ROW, &row1, -1); if(row1 && row1 == row2) return i; i++; valid = gtk_tree_model_iter_next (model, &iter); } return -1; } #if 0 static void validate_keymap_name (GtkEntry * entry, GtkDialog * dialog) { const gchar *name = gtk_entry_get_text (GTK_ENTRY (entry)); gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT, strlen (name) > 0); } #endif static gboolean capture_add_binding (GtkWidget * widget, GdkEventKey * event, gpointer user_data) { GdkModifierType modifiers; guint command_idx; GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; GtkTreePath *path; gint *array; keyboard_dialog_data *cbdata = (keyboard_dialog_data *) user_data; //get the shortcut if (isModifier (event)) return TRUE; dnm_clean_event (event); modifiers = dnm_sanitize_key_state (event); gchar *name = dnm_accelerator_name (event->keyval, event->state); if (!strcmp(name, "VoidSymbol")) { warningdialog (_("VoidSymbol not allowed")); return TRUE; } if (cbdata->two_key == 1) { gint command_idx = lookup_command_for_keybinding_name (Denemo.map, name); if (command_idx == -1) { cbdata->first_keyval = event->keyval; cbdata->first_modifiers = modifiers; cbdata->two_key = 2; return TRUE; } else { cbdata->two_key = 0; gchar *msg = g_strdup_printf (_("The command %s has the shortcut: %s\nDelete it first or start again selecting an unused keypress."), lookup_name_from_idx (Denemo.map, command_idx), name); warningdialog (msg); g_free (msg); g_free (name); g_warning ("trying to set a two key starting with a single"); return TRUE; } } //get the command_index selection = gtk_tree_view_get_selection (cbdata->command_view); gtk_tree_selection_get_selected (selection, &model, &iter); path = gtk_tree_model_get_path (model, &iter); array = gtk_tree_path_get_indices (path); command_idx = array[0]; //this fails in general, yielding the value in cbdata, instead ... gchar* cname = NULL; gtk_tree_model_get (model, &iter, COL_NAME, &cname, -1); command_idx = lookup_command_from_name (Denemo.map, cname); if(command_idx != cbdata->command_id) g_warning("correct command idx %d compare %d for action of name %s\n", command_idx, cbdata->command_id, cname); gtk_tree_path_free (path); if (cbdata->two_key == 0 && (GList *) g_hash_table_lookup (Denemo.map->continuations_table, name)) { //g_warning("There is a two key binding starting with this"); gchar *msg = g_strdup_printf (_("There is at least one two-key shortcut that starts with: %s\nFind them using the Find button\nDelete it/those first or start again selecting an unused keypress."), name); warningdialog (msg); g_free (msg); g_free (name); return TRUE; } g_free (name); //set the new binding if (cbdata->two_key == 2) add_twokeybinding_to_idx (Denemo.map, cbdata->first_keyval, cbdata->first_modifiers, event->keyval, modifiers, command_idx, POS_FIRST); else add_keybinding_to_idx (Denemo.map, event->keyval, modifiers, command_idx, POS_FIRST); command_row* row = NULL; keymap_get_command_row (Denemo.map, &row, command_idx); GtkListStore* bindings_model = GTK_LIST_STORE(gtk_tree_view_get_model(cbdata->binding_view)); update_bindings_model(bindings_model, row->bindings); gtk_statusbar_pop (cbdata->statusbar, cbdata->context_id); g_signal_handler_disconnect (GTK_WIDGET (widget), cbdata->handler_key_press); g_signal_handler_disconnect (GTK_WIDGET (widget), cbdata->handler_focus_out); cbdata->two_key = 0; return TRUE; } static gboolean capture_look_binding (GtkWidget * widget, GdkEventKey * event, gpointer user_data) { GdkModifierType modifiers; GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; GtkTreePath *path; gint command_idx; keyboard_dialog_data *cbdata = (keyboard_dialog_data *) user_data; gtk_statusbar_pop (cbdata->statusbar, cbdata->context_id); //get the shortcut if (isModifier (event)) return TRUE; dnm_clean_event (event); modifiers = dnm_sanitize_key_state (event); //look for the keybinding command_idx = lookup_command_for_keybinding (Denemo.map, event->keyval, modifiers); //if the binding is associated to a command if (command_idx == -1) { gchar *name = dnm_accelerator_name (event->keyval, event->state); GList *g = (GList *) g_hash_table_lookup (Denemo.map->continuations_table, name); GString *continuations = g_string_new (""); GString *final_list = g_string_new (""); for (; g; g = g->next) { g_string_append_printf (continuations, "%s%s%s", name, ",", (gchar *) g->data); command_idx = lookup_command_for_keybinding_name (Denemo.map, continuations->str); const gchar *this = lookup_name_from_idx (Denemo.map, command_idx); g_string_append_printf (final_list, "%s,%s=%s ", name, (gchar *) g->data, this); g_string_assign (continuations, ""); } if (final_list->len) cbdata->twokeylist = final_list; } if (command_idx != -1) { model = gtk_tree_view_get_model (cbdata->command_view); gint pos = get_command_position(model, command_idx); selection = gtk_tree_view_get_selection (cbdata->command_view); gtk_tree_model_iter_nth_child (model, &iter, NULL, pos); gtk_tree_selection_select_iter (selection, &iter); path = gtk_tree_model_get_path (model, &iter); gtk_tree_view_scroll_to_cell (cbdata->command_view, path, NULL, FALSE, 0, 0); gtk_tree_path_free (path); } else gtk_statusbar_push (cbdata->statusbar, cbdata->context_id, _("No command has this keyboard shortcut")); if (cbdata->twokeylist) { gtk_statusbar_push (cbdata->statusbar, cbdata->context_id, cbdata->twokeylist->str); g_string_free (cbdata->twokeylist, TRUE); cbdata->twokeylist = NULL; } //clean the GUI g_signal_handler_disconnect (GTK_WIDGET (widget), cbdata->handler_key_press); g_signal_handler_disconnect (GTK_WIDGET (widget), cbdata->handler_focus_out); return TRUE; } static gboolean stop_capture_binding (GtkWidget * widget, G_GNUC_UNUSED GdkEventFocus * event, gpointer user_data) { keyboard_dialog_data *cbdata = (keyboard_dialog_data *) user_data; gtk_statusbar_pop (cbdata->statusbar, cbdata->context_id); g_signal_handler_disconnect (GTK_WIDGET (widget), cbdata->handler_key_press); g_signal_handler_disconnect (GTK_WIDGET (widget), cbdata->handler_focus_out); return FALSE; } static void kbd_interface_add_binding (GtkButton * button, gpointer user_data) { GtkTreeSelection *selection; keyboard_dialog_data *cbdata = (keyboard_dialog_data *) user_data; gtk_statusbar_pop (cbdata->statusbar, cbdata->context_id); // check a command is selected selection = gtk_tree_view_get_selection (cbdata->command_view); if (!gtk_tree_selection_get_selected (selection, NULL, NULL)) return; gtk_statusbar_push (cbdata->statusbar, cbdata->context_id, _("Press a shortcut sequence for this command")); cbdata->handler_key_press = g_signal_connect (GTK_WIDGET (button), "key-press-event", G_CALLBACK (capture_add_binding), user_data); cbdata->handler_focus_out = g_signal_connect (GTK_WIDGET (button), "focus-out-event", G_CALLBACK (stop_capture_binding), user_data); Denemo.accelerator_status = TRUE; } static void kbd_interface_add_2binding (GtkButton * button, gpointer user_data) { keyboard_dialog_data *cbdata = (keyboard_dialog_data *) user_data; gtk_statusbar_pop (cbdata->statusbar, cbdata->context_id); cbdata->two_key = 1; kbd_interface_add_binding (button, user_data); } static void kbd_interface_look_binding (GtkButton * button, gpointer user_data) { keyboard_dialog_data *cbdata = (keyboard_dialog_data *) user_data; gtk_statusbar_pop (cbdata->statusbar, cbdata->context_id); gtk_statusbar_push (cbdata->statusbar, cbdata->context_id, _("Press a shortcut sequence whose command you seek")); cbdata->handler_key_press = g_signal_connect (GTK_WIDGET (button), "key-press-event", G_CALLBACK (capture_look_binding), user_data); cbdata->handler_focus_out = g_signal_connect (GTK_WIDGET (button), "focus-out-event", G_CALLBACK (stop_capture_binding), user_data); } static void kbd_interface_del_binding (G_GNUC_UNUSED GtkButton * button, gpointer user_data) { GtkTreeSelection *selection; gchar *binding; GtkTreeModel *model; GtkTreeIter iter; command_row* row = NULL; keyboard_dialog_data *cbdata = (keyboard_dialog_data *) user_data; gtk_statusbar_pop (cbdata->statusbar, cbdata->context_id); selection = gtk_tree_view_get_selection (cbdata->binding_view); //if no binding is selected, we do nothing if (!gtk_tree_selection_get_selected (selection, &model, &iter)) return; //else get the binding and remove it gtk_tree_model_get (model, &iter, 0, &binding, -1); gint command_id_ptr = lookup_command_for_keybinding_name(Denemo.map, binding); remove_keybinding_from_name (Denemo.map, binding); if(command_id_ptr > -1){ if(keymap_get_command_row (Denemo.map, &row, command_id_ptr)) update_bindings_model(GTK_LIST_STORE(model), row->bindings); } else g_debug("Cannot find command to delete.\n"); g_free (binding); Denemo.accelerator_status = TRUE; } static void execute_current (keyboard_dialog_data *data) { GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; gchar* cname = NULL; selection = gtk_tree_view_get_selection (data->command_view); if(gtk_tree_selection_get_selected (selection, &model, &iter)) { gtk_tree_model_get (model, &iter, COL_NAME, &cname, -1); gint command_idx = lookup_command_from_name (Denemo.map, cname); if(command_idx != data->command_id) g_warning("correct command idx %d compare %d for action of name %s\n", command_idx, data->command_id, cname); execute_callback_from_idx (Denemo.map, command_idx); } else g_warning ("No selection"); } static void add_current_to_palette (keyboard_dialog_data *data) { GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; gchar* cname = NULL; selection = gtk_tree_view_get_selection (data->command_view); if(gtk_tree_selection_get_selected (selection, &model, &iter)) { gtk_tree_model_get (model, &iter, COL_NAME, &cname, -1); gint command_idx = lookup_command_from_name (Denemo.map, cname); place_action_in_palette (command_idx, NULL); } else g_warning ("No selection"); } typedef struct ModifierPointerInfo { guint button_mask; guint cursor_number; } ModifierPointerInfo; #define DENEMO_MODIFIER_MASK (255) static void keyboard_modifier_callback (GtkWidget * w, GdkEventButton * event, ModifierPointerInfo * info) { gint mask = info->button_mask; gint state = (event->state & DENEMO_MODIFIER_MASK) | mask; gint cursor_number = info->cursor_number; GdkCursor *cursor = gdk_cursor_new (cursor_number); //g_hash_table_lookup(Denemo.map->cursors, &state); // show_type(w, "button mod callback: "); GString *str = g_string_new (""); g_string_append_printf (str, "Cursor Shape:- %d\n Mouse:- %s\nKeyboard:", cursor_number, mask ? (mask & GDK_BUTTON1_MASK ? "Left Button Drag" : "Right Button Drag") : "No Button Press"); append_modifier_name (str, state); #define POINTER_PROMPT "To change the cursor shape for a mouse/keyboard state:\nSelect Cursor Shape number\nChoose mouse state and then click here\nwhile holding modifier key\nand/or engaging Caps/Num lock for the keyboard state. Finally save command set." gdk_window_set_cursor (gtk_widget_get_window (w), cursor); //g_string_append(str, "\n"); // g_string_append(str, POINTER_PROMPT); gtk_button_set_label ((GtkButton *) w, str->str); //gtk_widget_set_tooltip(w, POINTER_PROMPT); assign_cursor (state, cursor_number); g_string_free (str, TRUE); } static void load_system_keymap_dialog_response (void) { load_system_keymap_dialog (); } static void load_standard_palettes (void) { gchar *filename = g_build_filename (get_system_data_dir (), COMMANDS_DIR, "palettes.xml", NULL); installPalettesFile (filename, TRUE); } static void load_keymap_dialog_response (void) { load_keymap_dialog (); } static GtkWidget *SearchEntry = NULL; static GtkWidget *SearchNext = NULL; static keyboard_dialog_data cbdata; GtkWidget *get_command_view(void) { return GTK_WIDGET(cbdata.command_view); } static void shortcut_button_choice_callback (GtkWidget * w, gboolean * left) { g_debug ("left at %p is %d\n", left, *left); *left = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)); g_debug ("left at %p is now %d\n", left, *left); } static void button_move_callback (GtkWidget * w, mouse_gesture * g) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w))) *g = GESTURE_MOVE; //g_debug("move %d\n", *g); } static void button_press_callback (GtkWidget * w, mouse_gesture * g) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w))) *g = GESTURE_PRESS; //g_debug("press %d\n", *g); } static void button_release_callback (GtkWidget * w, mouse_gesture * g) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w))) *g = GESTURE_RELEASE; //g_debug("release %d \n", *g); } typedef struct ModifierAction { DenemoAction *action; gint modnum; /* GdkModifierType number 0...12 */ mouse_gesture gesture; /* if this is for press move or release */ gboolean left; /* if this is for left or right mouse button */ } ModifierAction; static void button_modifier_callback (GtkWidget * w, GdkEventButton * event, ModifierAction * ma) { ma->modnum = event->state; // show_type(w, "button mod callback: "); GString *str = g_string_new ("Keyboard:"); append_modifier_name (str, ma->modnum); if (!ma->modnum) g_string_assign (str, _("No keyboard modifier keys\nPress with modifier key to change")); else g_string_append (str, _("\nPress with modifier key to change")); gtk_button_set_label (GTK_BUTTON (w), str->str); g_string_free (str, TRUE); } // info->action is the action for which the mouse shortcut is to be set static void setMouseAction (ModifierAction * info) { GString *modname = mouse_shortcut_name (info->modnum, info->gesture, info->left); gint command_idx = lookup_command_for_keybinding_name (Denemo.map, modname->str); DenemoAction *current_action = NULL; gchar *title = NULL; gchar *prompt = NULL; if (command_idx >= 0) { current_action = (DenemoAction *) lookup_action_from_idx (Denemo.map, command_idx); title = g_strdup_printf (_("The Command %s Responds to this Shortcut"), lookup_name_from_idx (Denemo.map, command_idx)); prompt = g_strdup_printf (_("Lose the shortcut %s for this?"), modname->str); } if (current_action == NULL || confirm (title, prompt)) { remove_keybinding_from_name (Denemo.map, modname->str); //by_name const gchar *name = denemo_action_get_name (info->action); command_idx = lookup_command_from_name (Denemo.map, name); if (command_idx >= 0) add_named_binding_to_idx (Denemo.map, modname->str, command_idx, POS_LAST); } g_free (title); g_free (prompt); g_string_free (modname, TRUE); } static void mouse_shortcut_dialog (ModifierAction * info) { GtkWidget *dialog = gtk_dialog_new_with_buttons (_("Set Mouse Shortcut"), GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); GtkWidget *hbox = gtk_hbox_new (FALSE, 1); GtkWidget *vbox = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (content_area), hbox); gtk_container_add (GTK_CONTAINER (hbox), vbox); gchar *name = (gchar *) denemo_action_get_name (info->action); gchar *prompt = g_strdup_printf (_("Setting mouse shortcut for %s"), name); GtkWidget *label = gtk_label_new (prompt); g_free (prompt); gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0); GtkWidget *frame = gtk_frame_new (_("Choose the mouse button")); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_container_add (GTK_CONTAINER (vbox), frame); GtkWidget *vbox2 = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), vbox2); info->left = TRUE; GtkWidget *widget = gtk_radio_button_new_with_label (NULL, _("Left")); g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (shortcut_button_choice_callback), &info->left); gtk_box_pack_start (GTK_BOX (vbox2), widget, FALSE, TRUE, 0); GtkWidget *widget2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (widget), _("Right")); gtk_box_pack_start (GTK_BOX (vbox2), widget2, FALSE, TRUE, 0); frame = gtk_frame_new (_("Choose mouse action")); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_container_add (GTK_CONTAINER (vbox), frame); vbox2 = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), vbox2); info->gesture = GESTURE_PRESS; widget = gtk_radio_button_new_with_label (NULL, _("Press Button")); g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (button_press_callback), &info->gesture); gtk_box_pack_start (GTK_BOX (vbox2), widget, FALSE, TRUE, 0); widget2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (widget), _("Release Button")); g_signal_connect (G_OBJECT (widget2), "toggled", G_CALLBACK (button_release_callback), &info->gesture); gtk_box_pack_start (GTK_BOX (vbox2), widget2, FALSE, TRUE, 0); widget2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (widget), _("Drag")); g_signal_connect (G_OBJECT (widget2), "toggled", G_CALLBACK (button_move_callback), &info->gesture); gtk_box_pack_start (GTK_BOX (vbox2), widget2, FALSE, TRUE, 0); widget = gtk_button_new_with_label (_("Hold Modifier Keys, Engage Caps or Num Lock\nand click here to set shortcut.")); g_signal_connect (G_OBJECT (widget), "button-release-event", G_CALLBACK (button_modifier_callback), info); gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, TRUE, 0); gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { setMouseAction (info); Denemo.accelerator_status = TRUE; } gtk_widget_destroy (dialog); } static void createMouseShortcut (DenemoAction * action) { static ModifierAction info; info.action = action; info.gesture = GESTURE_PRESS; info.modnum = 0; info.left = TRUE; mouse_shortcut_dialog (&info); } static void createMouseShortcut_from_data (keyboard_dialog_data *data) { GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; gchar* cname = NULL; selection = gtk_tree_view_get_selection (data->command_view); gtk_tree_selection_get_selected (selection, &model, &iter); gtk_tree_model_get (model, &iter, COL_NAME, &cname, -1); gint command_idx = lookup_command_from_name (Denemo.map, cname); if(command_idx != -1) { DenemoAction *action = (DenemoAction *) lookup_action_from_idx (Denemo.map, command_idx); createMouseShortcut (action); } } static gboolean search_entry_character (GtkWidget *entry, GdkEventKey *event) { gint key = event->keyval; if ((key == GDK_KEY_Tab) || (event->keyval == GDK_KEY_Return)) { //transform into spaces event->keyval = GDK_KEY_space; event->hardware_keycode = 0x41; } return FALSE; } static gboolean hide_command_view (void) { //gtk_widget_hide (Denemo.command_manager); set_toggle (ToggleCommandManager_STRING, FALSE); return TRUE; } void command_center_select_idx (DenemoAction * dummy, gint command_idx) { GtkWidget *frame; GtkWidget *vbox, *outer_hbox; GtkWidget *table; GtkWidget *label; GtkWidget *addbutton; GtkWidget *add2button; GtkWidget *delbutton; GtkWidget *lookbutton; GtkWidget *statusbar; GtkWidget *button_save; GtkWidget *button_save_as; GtkWidget *button_load; GtkWidget *button_load_from; GtkWidget *pal_load; GtkWidget *command_view; GtkWidget *binding_view; GtkWidget *command_tree_view; GtkWidget *binding_tree_view; GtkWidget *text_view; GtkWidget *scrolled_text_view; GtkTreeSelection *selection; GtkTreeIter iter; GtkTreeModel *model; GtkTreePath *path; guint context_id; if(Denemo.command_manager) { model = gtk_tree_view_get_model (GTK_TREE_VIEW (cbdata.command_view)); if (command_idx == -1) { //selecting the first command gtk_tree_model_get_iter_first (model, &iter); } else { gint pos = get_command_position(model, command_idx); gtk_tree_model_iter_nth_child (model, &iter, NULL, pos); } gtk_widget_grab_focus (SearchEntry); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (cbdata.command_view)); gtk_tree_selection_select_iter (selection, &iter); path = gtk_tree_model_get_path (model, &iter); gtk_tree_view_scroll_to_cell ((GtkTreeView *) cbdata.command_view, path, NULL, FALSE, 0, 0); gtk_tree_path_free (path); if(!gtk_widget_get_visible(Denemo.command_manager)) set_toggle (ToggleCommandManager_STRING, TRUE); return; } if(SearchEntry==NULL) { SearchEntry = gtk_entry_new (); g_signal_connect(G_OBJECT(SearchEntry), "key-press-event", G_CALLBACK(search_entry_character), NULL); SearchNext = gtk_button_new_with_label ("→"); gtk_widget_set_tooltip_text (SearchEntry, _("Type search text here. Enter words that might be in the command label,\nor part of the text of a tooltip or the internal name.\nThe search is case insensitive. It goes on to the next match each time you enter letter that doesn't match the current command so check at each keypress.\nThe search re-starts from the top when you delete a letter.")); gtk_widget_set_tooltip_text (SearchNext, _("Search for the next matching command. Starts again at the top once it has reached the end.")); } //The actual searching is done in kbd-custom.c by passing in the globals SearchEntry and SearchNext, ugh! //getting a binding view and a command view and connecting the change of //command selection the the change of the model displayed by the binding view binding_view = keymap_get_binding_view (); binding_tree_view = gtk_bin_get_child (GTK_BIN (binding_view)); command_view = GTK_WIDGET (keymap_get_command_view (Denemo.map, SearchEntry, SearchNext, &cbdata)); command_tree_view = gtk_bin_get_child (GTK_BIN (command_view)); Denemo.command_manager = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(Denemo.command_manager), (_("Command Center"))); if (Denemo.prefs.newbie) gtk_widget_set_tooltip_text (Denemo.command_manager, _ ("This window allows you find and execute commands.\nOnce you have selected a command the box at the top gives information about that command," "\nwhile the panel to the side gives any shortcuts for the command." "\nYou can add a selected command to a palette, or set single-key or two-key shortcuts." "\nYou can also hide commands, so they don't appear in the menus.\n" "You can save the shortcuts as your default command set, or as a command set which you may wish to load in the future.\n" "This window is also where you can load such a stored command set.")); outer_hbox = gtk_hbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (Denemo.command_manager), outer_hbox); vbox = gtk_vbox_new (FALSE, 8); gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); gtk_box_pack_start (GTK_BOX (outer_hbox), vbox, TRUE, TRUE, 0); frame = gtk_frame_new (_("Help for Selected Command")); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); gtk_widget_set_size_request (frame, -1, 200); gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0); text_view = gtk_text_view_new (); gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD); scrolled_text_view = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_container_add (GTK_CONTAINER (scrolled_text_view), text_view); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_text_view), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (frame), scrolled_text_view); { GtkWidget *inner_hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (vbox), inner_hbox, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (inner_hbox), gtk_widget_get_parent(command_view), TRUE, TRUE, 0); { GtkWidget *inner_vbox = gtk_vbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (inner_hbox), inner_vbox, TRUE, TRUE, 0); GtkWidget *label = gtk_label_new (""); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_label_set_markup (GTK_LABEL (label), _("List of shortcuts\nfor selected command\nfrom table on left.\nSelect a shortcut\nto remove\nwith button below.")); gtk_box_pack_start (GTK_BOX (inner_vbox), label, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (inner_vbox), binding_view, FALSE, TRUE, 0); delbutton = gtk_button_new_with_label (_("Remove Shortcut")); gtk_box_pack_start (GTK_BOX (inner_vbox), delbutton, FALSE, TRUE, 0); } } vbox = gtk_vbox_new (FALSE, 8); gtk_box_pack_end (GTK_BOX (outer_hbox), vbox, FALSE, TRUE, 0); { GtkWidget *inner_hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (vbox), inner_hbox, FALSE, TRUE, 0); button_save = gtk_button_new_with_label (_("Save as Default Command Set")); gtk_box_pack_start (GTK_BOX (inner_hbox), button_save, FALSE, TRUE, 0); gtk_widget_set_tooltip_text (button_save, _("Use this to save the changes you have made so that they are used every time you start Denemo. The changes are stored under a directory (folder) called .denemo-* in your home directory. Look in subdirectory actions for Default.commands")); button_save_as = gtk_button_new_with_label (_("Save as a Custom Command Set")); gtk_box_pack_start (GTK_BOX (inner_hbox), button_save_as, FALSE, TRUE, 0); button_load = gtk_button_new_with_label (_("Load a Standard Command Set")); inner_hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (vbox), inner_hbox, FALSE, TRUE, 0); button_load = gtk_button_new_with_label (_("Load a Standard Command Set")); gtk_box_pack_start (GTK_BOX (inner_hbox), button_load, FALSE, TRUE, 0); button_load_from = gtk_button_new_with_label (_("Load a Custom Command Set")); gtk_box_pack_start (GTK_BOX (inner_hbox), button_load_from, FALSE, TRUE, 0); inner_hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (vbox), inner_hbox, FALSE, TRUE, 0); pal_load = gtk_button_new_with_label (_("Load the Standard Palette Set")); gtk_box_pack_start (GTK_BOX (inner_hbox), pal_load, FALSE, TRUE, 0); } GtkWidget *inner_hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_end (GTK_BOX (vbox), inner_hbox, FALSE, TRUE, 0); GtkWidget *inner_vbox = gtk_vbox_new (FALSE, 1); gtk_box_pack_end (GTK_BOX (inner_hbox), inner_vbox, FALSE, TRUE, 0); addbutton = gtk_button_new_with_label (_("Add 1-Key Shortcut")); gtk_widget_set_tooltip_text (addbutton, _("Create a single keypress (with modifier keys - Control, Shift ... - if needed) as a keyboard shortcut for the currently selected command.")); gtk_box_pack_end (GTK_BOX (inner_vbox), addbutton, FALSE, TRUE, 0); add2button = gtk_button_new_with_label ( _("Add 2-Key Shortcut")); gtk_widget_set_tooltip_text (add2button, _("Create a two keypress sequence as a keyboard shortcut for the currently selected command.")); gtk_box_pack_end (GTK_BOX (inner_vbox), add2button, FALSE, TRUE, 0); lookbutton = gtk_button_new_with_label ( _("Find Command for Shortcut")); gtk_widget_set_tooltip_text (lookbutton, _("Finds the command (if any) for a (one key) Keyboard Shortcut\n" "Click button then press the key shortcut you are looking for.")); gtk_box_pack_end (GTK_BOX (inner_vbox), lookbutton, FALSE, TRUE, 0); inner_vbox = gtk_vbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (inner_hbox), inner_vbox, FALSE, TRUE, 0); GtkWidget *execute_button = gtk_button_new_with_label (_("Execute Selected Command")); gtk_widget_set_tooltip_text (execute_button, _("Executes the currently selected command in the list of commands\nEnsure the cursor is in the movement and at the position if needed for the command.")); gtk_box_pack_end (GTK_BOX (inner_vbox), execute_button, FALSE, TRUE, 0); GtkWidget *palette_button = gtk_button_new_with_label (_("Add to Palette")); gtk_widget_set_tooltip_text (palette_button, _("Adds the currently selected command in the list of commands to a palette\nYou can create a new, custom palette, and you can change the label of the button you create by right-clicking on it.")); gtk_box_pack_end (GTK_BOX (inner_vbox), palette_button, FALSE, TRUE, 0); g_signal_connect_swapped (G_OBJECT (execute_button), "clicked", G_CALLBACK (execute_current), &cbdata); g_signal_connect_swapped (G_OBJECT (palette_button), "clicked", G_CALLBACK (add_current_to_palette), &cbdata); statusbar = gtk_statusbar_new (); context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (statusbar), ""); //FIXME gtk_statusbar_set_has_resize_grip(GTK_STATUSBAR(statusbar), FALSE); gtk_box_pack_end (GTK_BOX (vbox), statusbar, FALSE, TRUE, 0); cbdata.addbutton = GTK_BUTTON (addbutton); cbdata.add2button = GTK_BUTTON (add2button); cbdata.delbutton = GTK_BUTTON (delbutton); cbdata.lookbutton = GTK_BUTTON (lookbutton); cbdata.statusbar = GTK_STATUSBAR (statusbar); cbdata.context_id = context_id; cbdata.command_view = GTK_TREE_VIEW (command_tree_view); cbdata.binding_view = GTK_TREE_VIEW (binding_tree_view); cbdata.text_view = GTK_TEXT_VIEW (text_view); cbdata.command_id = -1; cbdata.two_key = 0; cbdata.twokeylist = NULL; //setup the link between command_view and binding_view selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (command_tree_view)); gtk_tree_selection_set_select_function (selection, keymap_change_binding_view_on_command_selection, &cbdata, NULL); model = gtk_tree_view_get_model (GTK_TREE_VIEW (command_tree_view)); if (command_idx == -1) { //selecting the first command gtk_tree_model_get_iter_first (model, &iter); } else { gint pos = get_command_position(model, command_idx); gtk_tree_model_iter_nth_child (model, &iter, NULL, pos); path = gtk_tree_model_get_path (model, &iter); gtk_tree_view_scroll_to_cell ((GtkTreeView *) command_tree_view, path, NULL, FALSE, 0, 0); gtk_tree_path_free (path); } gtk_widget_grab_focus (SearchEntry); gtk_tree_selection_select_iter (selection, &iter); GtkWidget *shortcut_button = gtk_button_new_with_label (_("Set Mouse Shortcut")); gtk_widget_set_tooltip_text (shortcut_button, _("Set mouse shortcut")); g_signal_connect_swapped (G_OBJECT (shortcut_button), "button-release-event", G_CALLBACK (createMouseShortcut_from_data), &cbdata); gtk_box_pack_end (GTK_BOX (vbox), shortcut_button, FALSE, TRUE, 0); //Connecting signals g_signal_connect (addbutton, "clicked", G_CALLBACK (kbd_interface_add_binding), &cbdata); g_signal_connect (add2button, "clicked", G_CALLBACK (kbd_interface_add_2binding), &cbdata); g_signal_connect (lookbutton, "clicked", G_CALLBACK (kbd_interface_look_binding), &cbdata); g_signal_connect (delbutton, "clicked", G_CALLBACK (kbd_interface_del_binding), &cbdata); g_signal_connect (G_OBJECT (button_save), "clicked", G_CALLBACK (save_default_keymap_file), NULL); g_signal_connect (G_OBJECT (button_save_as), "clicked", G_CALLBACK (save_keymap_dialog), NULL); g_signal_connect (G_OBJECT (button_load), "clicked", G_CALLBACK (load_system_keymap_dialog_response), NULL); g_signal_connect (G_OBJECT (button_load_from), "clicked", G_CALLBACK (load_keymap_dialog_response), NULL); g_signal_connect (G_OBJECT (pal_load), "clicked", G_CALLBACK (load_standard_palettes), NULL); gtk_widget_show_all (Denemo.command_manager); gtk_widget_hide (Denemo.command_manager); set_toggle (ToggleCommandManager_STRING, TRUE); g_signal_connect (Denemo.command_manager, "delete-event", G_CALLBACK (hide_command_view), NULL); } void configure_keyboard_dialog (DenemoAction * action, DenemoScriptParam * param) { command_center_select_idx (action, -1); } denemo-2.2.0/src/ui/PaxHeaders.19168/staffpropdialog.c0000644000000000000000000000013213135434036017265 xustar0030 mtime=1500919838.363315139 30 atime=1500919920.973315139 30 ctime=1500919914.333315139 denemo-2.2.0/src/ui/staffpropdialog.c0000644000175000017500000004352613135434036021150 0ustar00jjbenhamjjbenham00000000000000/* staffpropdialog.c * callback that creates a "Staff Properties" dialog box asking * the user to change the properties of the current staff * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #include #include #include #include "display/calculatepositions.h" #include "command/chord.h" #include "command/contexts.h" #include #include "command/processstaffname.h" #include "command/staff.h" #include "core/view.h" #include "core/utils.h" #include "ui/dialogs.h" #include #include #include "export/xmldefs.h" #include "audio/midi.h" #include "command/select.h" #include "audio/audiointerface.h" extern int ParseSoundfont (gchar * soundfont, gint index, gchar ** name, gint * preset, gint * bank); //in "external" code libsffile/sfile.c static gchar *GM_Instrument_Names[] = { "Acoustic Grand Piano", "Bright Acoustic Piano", "Electric Grand Piano", "Honky-tonk Piano", "Electric Piano 1", "Electric Piano 2", "Harpsichord", "Clavinet", "Celesta", "Glockenspiel", "Music Box", "Vibraphone", "Marimba", "Xylophone", "Tubular Bells", "Dulcimer", "Drawbar Organ", "Percussive Organ", "Rock Organ", "Church Organ", "Reed Organ", "Accordion", "Harmonica", "Tango Accordion", "Acoustic Guitar (nylon)", "Acoustic Guitar (steel)", "Electric Guitar (jazz)", "Electric Guitar (clean)", "Electric Guitar (muted)", "Overdriven Guitar", "Distortion Guitar", "Guitar Harmonics", "Acoustic Bass", "Electric Bass (finger)", "Electric Bass (pick)", "Fretless Bass", "Slap Bass 1", "Slap Bass 2", "Synth Bass 1", "Synth Bass 2", "Violin", "Viola", "Cello", "Contrabass", "Tremolo Strings", "Pizzicato Strings", "Orchestral Harp", "Timpani", "String Ensemble 1", "String Ensemble 2", "Synth Strings 1", "Synth Strings 2", "Choir Aahs", "Voice Oohs", "Synth Choir", "Orchestra Hit", "Trumpet", "Trombone", "Tuba", "Muted Trumpet", "French Horn", "Brass Section", "Synth Brass 1", "Synth Brass 2", "Soprano Sax", "Alto Sax", "Tenor Sax", "Baritone Sax", "Oboe", "English Horn", "Bassoon", "Clarinet", "Piccolo", "Flute", "Recorder", "Pan Flute", "Blown bottle", "Shakuhachi", "Whistle", "Ocarina", "Lead 1 (square)", "Lead 2 (sawtooth)", "Lead 3 (calliope)", "Lead 4 chiff", "Lead 5 (charang)", "Lead 6 (voice)", "Lead 7 (fifths)", "Lead 8 (bass + lead)", "Pad 1 (new age)", "Pad 2 (warm)", "Pad 3 (polysynth)", "Pad 4 (choir)", "Pad 5 (bowed)", "Pad 6 (metallic)", "Pad 7 (halo)", "Pad 8 (sweep)", "FX 1 (rain)", "FX 2 (soundtrack)", "FX 3 (crystal)", "FX 4 (atmosphere)", "FX 5 (brightness)", "FX 6 (goblins)", "FX 7 (echoes)", "FX 8 (sci-fi)", "Sitar", "Banjo", "Shamisen", "Koto", "Kalimba", "Bagpipe", "Fiddle", "Shanai", "Tinkle Bell", "Agogo", "Steel Drums", "Woodblock", "Taiko Drum", "Melodic Tom", "Synth Drum", "Reverse Cymbal", "Guitar Fret Noise", "Breath Noise", "Seashore", "Bird Tweet", "Telephone Ring", "Helicopter", "Applause", "Gunshot" }; /** * Callback data used for setting the staffs properties * */ struct callbackdata { DenemoProject *gui; DenemoStaff *staffstruct; GtkWidget *denemo_name; GtkWidget *subpart; GtkWidget *midi_instrument; GtkWidget *midi_prognum; GtkWidget *midi_channel; GtkWidget *midi_prognum_override; GtkWidget *device_port; GtkWidget *space_above; GtkWidget *space_below; GtkWidget *no_of_lines; GtkWidget *transposition; GtkWidget *volume; GtkWidget *override_volume; }; /** * Set the staffs properties * @param cbdata pointer to the callback data structure containing the preference data to set. * @return none */ static void set_properties (struct callbackdata *cbdata) { DenemoStaff *staffstruct = cbdata->staffstruct; #if GTK_MAJOR_VERSION==3 #define ASSIGNTEXT(field) \ if(cbdata->field) {\ gchar *text=gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (cbdata->field));\ if (text)\ g_string_assign (staffstruct->field,text);\ } #else #define ASSIGNTEXT(field) \ if(cbdata->field)\ g_string_assign (staffstruct->field,\ gtk_entry_get_text (GTK_ENTRY (cbdata->field))) #endif #define ASSIGNNUMBER(field) \ if(cbdata->field)\ staffstruct->field = \ atoi(gtk_entry_get_text(GTK_ENTRY (cbdata->field))) #define ASSIGNNUMBER_1(field) \ if(cbdata->field)\ staffstruct->field = \ atoi(gtk_entry_get_text(GTK_ENTRY (cbdata->field)))-1 #define ASSIGNBOOLEAN(field) \ if(cbdata->field)\ staffstruct->field = \ (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cbdata->field))); /* rename of part name */ if(canonicalize_denemo_name ((gchar *) gtk_entry_get_text (GTK_ENTRY (cbdata->denemo_name)), staffstruct->denemo_name)) warningdialog (_("Only alphanumeric characters are allowed - part name unchanged")); if(cbdata->subpart) { if(staffstruct->subpart==NULL) staffstruct->subpart = g_string_new (""); canonicalize_denemo_name ((gchar *) gtk_entry_get_text (GTK_ENTRY (cbdata->subpart)), staffstruct->subpart); } set_lily_name (staffstruct->denemo_name, staffstruct->lily_name); //g_debug("first %d\t", staffstruct->space_above); ASSIGNNUMBER (space_above); //g_debug("then %d\t", staffstruct->space_above); ASSIGNNUMBER (space_below); ASSIGNNUMBER (no_of_lines); ASSIGNNUMBER (transposition); /* set MIDI channel/prognum */ ASSIGNTEXT (midi_instrument); ASSIGNTEXT (device_port); ASSIGNBOOLEAN (override_volume); ASSIGNNUMBER (volume); // ASSIGNBOOLEAN(midi_prognum_override); if (staffstruct->midi_instrument->len) { staffstruct->midi_prognum = get_midi_prognum (staffstruct); gint i; gchar *name; gint preset, bank; gint npresets = ParseSoundfont (Denemo.prefs.fluidsynth_soundfont->str, 0, NULL, NULL, NULL); if (npresets) { for (i = 0; i < npresets - 1; i++) { (void) ParseSoundfont (NULL, i, &name, &preset, &bank); if (!strcmp (name, staffstruct->midi_instrument->str)) { staffstruct->midi_prognum = preset; gchar *scheme = g_strdup_printf ("(d-MidiInstrumentName \"%s\")", GM_Instrument_Names[preset&0xFF]); call_out_to_guile (scheme); g_free (scheme); printf ("\nMIDI Instrument == %s (GM name %s)\nMIDI PROGRAM == %d\n", staffstruct->midi_instrument->str, GM_Instrument_Names[preset&0xFF], staffstruct->midi_prognum); break; } } } // if(staffstruct->midi_prognum != i) /* I am not sure why this was necessary and if it is still needed*/ // ASSIGNNUMBER_1(midi_prognum); ASSIGNNUMBER_1 (midi_channel); printf ("\nAssigned MIDI Instrument == %s \nAssigned MIDI PROGRAM == %d i == %d\n", staffstruct->midi_instrument->str, staffstruct->midi_prognum, i); } else { ASSIGNNUMBER_1 (midi_prognum); ASSIGNNUMBER_1 (midi_channel); } { unsigned char buffer[3];/* third byte is unused but is put into the queue so must be accessible */ /* set selected midi program on the synthesizer so that users can play MIDI controller with current staff instrument without having to do playback first*/ g_info ("Using channel %d port %d prognum %d\n", staffstruct->midi_channel, staffstruct->midi_port, staffstruct->midi_prognum); buffer[0] = 0xC0 /*MIDI_PROG_CHANGE*/ | staffstruct->midi_channel; buffer[1] = staffstruct->midi_prognum; play_midi_event (DEFAULT_BACKEND, staffstruct->midi_port, buffer); } //g_debug ("Staff Transposition %d\n", staffstruct->transposition); gtk_widget_queue_draw (Denemo.scorearea); score_status (cbdata->gui, TRUE); } /** * Create Dialog to allow the user to set the current staff's parameters * */ static gboolean staff_properties_change (void) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; DenemoStaff *staffstruct = (DenemoStaff *) si->currentstaff->data; gboolean result = FALSE; GtkWidget *dialog; GtkWidget *notebook; GtkWidget *label; GtkWidget *main_vbox; GtkWidget *hbox; GtkWidget *entrywidget; static GString *entrycontent; static GList *instrument_list = NULL; static struct callbackdata cbdata; gint i; if (instrument_list) { g_list_free_full (instrument_list, g_free); instrument_list = NULL; } { gint i; gchar *name; gint preset = 0, bank = 0; gint npresets = ParseSoundfont (Denemo.prefs.fluidsynth_soundfont->str, 0, NULL, NULL, NULL); if (npresets) { gchar **array = g_malloc0 (128 * sizeof (gchar *)); for (i = 0; i < npresets - 1; i++) { (void) ParseSoundfont (NULL, i, &name, &preset, &bank); if (bank == 0) { array[preset&0x7F] = g_strdup ((gchar *) name); } } for (i = 0; i < 128; i++) if(array[i]) instrument_list = g_list_append(instrument_list, array[i]); g_free (array); } } if (!entrycontent) { entrycontent = g_string_new (NULL); } dialog = gtk_dialog_new_with_buttons (_("Staff Properties"), GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); //gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); notebook = gtk_notebook_new (); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), notebook); #define NEWPAGE(thelabel) \ main_vbox = gtk_vbox_new (FALSE, 1);\ gtk_notebook_append_page (GTK_NOTEBOOK (notebook), main_vbox, NULL);\ gtk_notebook_set_tab_label_text (GTK_NOTEBOOK (notebook), main_vbox,\ _(thelabel)); #define TEXTENTRY(thelabel, field) \ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (_(thelabel));\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ entrywidget = gtk_entry_new ();\ g_string_sprintf (entrycontent, "%s", staffstruct->field?staffstruct->field->str:"");\ gtk_entry_set_text (GTK_ENTRY (entrywidget), entrycontent->str);\ gtk_box_pack_start (GTK_BOX (hbox), entrywidget, TRUE, TRUE, 0);\ cbdata.field = entrywidget; #define INTENTRY_LIMITS(thelabel, field, min, max) \ GtkWidget *field;\ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (_(thelabel));\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ field = gtk_spin_button_new_with_range (min, max, 1.0);\ gtk_spin_button_set_value (GTK_SPIN_BUTTON (field), staffstruct->field);\ gtk_box_pack_start (GTK_BOX (hbox), field, FALSE, FALSE, 0);\ cbdata.field = field; #define INTENTRY_LIMITS_1(thelabel, field, min, max) \ GtkWidget *field;\ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (_(thelabel));\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ field = gtk_spin_button_new_with_range (min, max, 1.0);\ gtk_spin_button_set_value (GTK_SPIN_BUTTON (field), staffstruct->field+1);\ gtk_box_pack_start (GTK_BOX (hbox), field, FALSE, FALSE, 0);\ cbdata.field = field; #define BOOLEANENTRY(thelabel, field) \ GtkWidget *field;\ field =\ gtk_check_button_new_with_label (_(thelabel)); \ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (field),\ staffstruct->field);\ gtk_box_pack_start (GTK_BOX (main_vbox), field, FALSE, TRUE, 0);\ cbdata.field = field; #if GTK_MAJOR_VERSION==3 #define COMBOBOXENTRY(thelabel, field, thelist, setstring) \ GtkWidget *field;\ hbox = gtk_hbox_new (FALSE, 8);\ gtk_container_add (GTK_CONTAINER(main_vbox), hbox); \ label = gtk_label_new (_(thelabel));\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_container_add (GTK_CONTAINER(hbox), label); \ field = gtk_combo_box_text_new ();\ i=0;\ while (thelist){\ gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(field), (gchar *) thelist->data);\ if (!g_strcmp0 (thelist->data, setstring->str))\ gtk_combo_box_set_active(GTK_COMBO_BOX (field),i);\ i++;\ thelist=thelist->next;\ }\ gtk_container_add (GTK_CONTAINER(hbox), field);\ cbdata.field = field; #else #define COMBOBOXENTRY(thelabel, field, thelist, setstring) \ GtkWidget *field;\ hbox = gtk_hbox_new (FALSE, 8);\ gtk_container_add (GTK_CONTAINER(main_vbox), hbox); \ label = gtk_label_new (_(thelabel));\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_container_add (GTK_CONTAINER(hbox), label);\ field = gtk_combo_new ();\ gtk_combo_set_popdown_strings(GTK_COMBO(field), thelist); \ gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (field)->entry), setstring->str);\ gtk_container_add (GTK_CONTAINER(hbox), field); \ cbdata.field = GTK_COMBO (field)->entry; #endif /* Print appearance tab */ NEWPAGE (_("Typeset Appearance")); TEXTENTRY (_("Part name (a-z,0-9):"), denemo_name); gtk_widget_set_tooltip_text (hbox, _( "All staffs with the same part name will be typeset with the Print Part command. Use a blank part name for staffs that should be printed with every part. Only alphabetic characters, space and numerals are allowed")); TEXTENTRY (_("Sub Part name:"), subpart); gtk_widget_set_tooltip_text (hbox, _( "If a single part (e.g. piano) has more than one staff they should be named here.")); /* Display appearance tab */ NEWPAGE ("Display Appearance"); //gtk_widget_grab_focus (entrywidget); INTENTRY_LIMITS (_("Space above:"), space_above, 0, MAXEXTRASPACE); INTENTRY_LIMITS (_("Space below:"), space_below, 0, MAXEXTRASPACE); INTENTRY_LIMITS (_("Number of Display Staff Lines:"), no_of_lines, 1, 5); /* MIDI tab */ NEWPAGE (_("MIDI")); COMBOBOXENTRY (_("MIDI Instrument:"), midi_instrument, instrument_list, staffstruct->midi_instrument); INTENTRY_LIMITS (_("Transposition:"), transposition, -30, 30); BOOLEANENTRY (_("Always Full Volume"), override_volume); INTENTRY_LIMITS (_("Master Volume:"), volume, 0, 127); // BOOLEANENTRY("Override MIDI Channel/Program", midi_prognum_override); INTENTRY_LIMITS_1 (_("Channel:"), midi_channel, 1, 16); INTENTRY_LIMITS_1 (_("Program:"), midi_prognum, 1, 128); // g_debug ("chan prog %d %d\n", staffstruct->midi_channel, staffstruct->midi_prognum); // FIXME // GList *md = device_manager_DevicePort_list(); // if(md) { //#ifdef _HAVE_JACK_ // COMBOBOXENTRY("Midi Devices", device_port, md, staffstruct->device_port); //#endif // } // else cbdata.device_port = NULL; /* Set up the callback data */ #define SETCALLBACKDATA(field) \ cbdata.field = field; SETCALLBACKDATA (gui); SETCALLBACKDATA (staffstruct); /* FIXME Also set things up so that the callback'll run when you hit enter * in the text entries */ /* gtk_entry_set_activates_default (GTK_ENTRY (denemo_name), TRUE); gtk_entry_set_activates_default (GTK_ENTRY (space_above), TRUE); gtk_entry_set_activates_default (GTK_ENTRY (space_below), TRUE); gtk_entry_set_activates_default (GTK_ENTRY (no_of_lines), TRUE); gtk_entry_set_activates_default (GTK_ENTRY (transposition), TRUE); */ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { set_properties (&cbdata); result = TRUE; } gtk_widget_destroy (dialog); return result; } void staff_properties_change_cb (DenemoAction * action, DenemoScriptParam * param) { GET_4PARAMS (action, param, denemo_name, device_port, midi_prognum, midi_channel); DenemoStaff *staff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (query) { if (*query) if (!strcmp ("denemo_name", query)) { g_string_assign (param->string, staff->denemo_name->str); if (staff->subpart) g_string_append_printf (param->string, "_%s", staff->subpart->str); param->status = TRUE; } if (*query) if (!strcmp ("transposition", query)) { g_string_printf (param->string, "%d", staff->transposition); param->status = TRUE; } if (*query) if (!strcmp ("midi_channel", query)) { g_string_printf (param->string, "%d", staff->midi_channel); param->status = TRUE; } if (*query) if (!strcmp ("midi_prognum", query)) { g_string_printf (param->string, "%d", staff->midi_prognum); param->status = TRUE; } if (*query) if (!strcmp ("lily_name", query)) { g_string_assign (param->string, staff->lily_name->str); param->status = TRUE; } return; } take_snapshot (); signal_structural_change (Denemo.project); if (denemo_name) { gboolean ok = TRUE; gchar *name = strtok (denemo_name, "_"); gchar *subpart = strtok (NULL, "_"); if (name) ok = canonicalize_denemo_name (name, staff->denemo_name); else g_string_assign (staff->denemo_name, ""); if ((ok==0) && subpart) { if(staff->subpart == NULL) staff->subpart = g_string_new(""); ok = canonicalize_denemo_name (subpart, staff->subpart); } set_lily_name (staff->denemo_name, staff->lily_name); param->status = ok; return; } if (device_port) { g_string_assign (staff->device_port, device_port); param->status = TRUE; return; } if (midi_prognum) { staff->midi_prognum = atoi (midi_prognum); return; } if (midi_channel) { staff->midi_channel = atoi (midi_channel); return; } (void) staff_properties_change (); } denemo-2.2.0/src/ui/PaxHeaders.19168/prefdialog.c0000644000000000000000000000013213135434036016215 xustar0030 mtime=1500919838.363315139 30 atime=1500919920.996648473 30 ctime=1500919914.329981805 denemo-2.2.0/src/ui/prefdialog.c0000644000175000017500000007330013135434036020071 0ustar00jjbenhamjjbenham00000000000000/* prefdialog.c * functions for a preferences dialog * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller, Adam Tee * (c) 2011 Richard Shann, Dominic Sacré */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include "core/prefops.h" #include "core/utils.h" #include "audio/playback.h" #include "audio/fluid.h" #include "audio/audiointerface.h" #ifdef _HAVE_JACK_ #include "audio/jackutil.h" #endif #ifdef _HAVE_PORTAUDIO_ #include "audio/portaudioutil.h" #endif #ifdef _HAVE_PORTMIDI_ #include "audio/portmidiutil.h" #endif #if GTK_MAJOR_VERSION==2 #define gtk_combo_box_text_new_with_entry gtk_combo_box_new_text #define gtk_combo_box_text_append_text gtk_combo_box_append_text #define gtk_combo_box_text_get_active_text gtk_combo_box_get_active_text #define GTK_COMBO_BOX_TEXT GTK_COMBO_BOX #endif struct callbackdata { DenemoPrefs *prefs; GtkWidget *lilypath; GtkWidget *immediateplayback; GtkWidget *measureswitchsound; GtkWidget *spillover; GtkWidget *ignore_ties; GtkWidget *manualtypeset; GtkWidget *typesetrefresh; GtkWidget *typesettype; GtkWidget *firstmeasure; GtkWidget *firststaff; GtkWidget *lastmeasure; GtkWidget *laststaff; GtkWidget *pitchspellingchannel; GtkWidget *pitchspellingprogram; GtkWidget *cursor_highlight; GtkWidget *return_key_is_special; GtkWidget *newbie; GtkWidget *learning; GtkWidget *persistence; GtkWidget *startmidiin; GtkWidget *applytoselection; GtkWidget *quickshortcuts; GtkWidget *saveparts; GtkWidget *autosave; GtkWidget *toolbar; GtkWidget *rhythm_palette; GtkWidget *object_palette; GtkWidget *midi_in_controls; GtkWidget *playback_controls; GtkWidget *console_pane; // GtkWidget *lyrics_pane; GtkWidget *visible_directive_buttons; GtkWidget *autoupdate; GtkWidget *autosave_timeout; GtkWidget *compression; GtkWidget *maxhistory; GtkWidget *browser; GtkWidget *pdfviewer; GtkWidget *imageviewer; GtkWidget *username; GtkWidget *password; GtkWidget *dynamic_compression; GtkWidget *damping; GtkWidget *zoom; GtkWidget *system_height; GtkWidget *audio_driver; GtkWidget *midi_driver; #ifdef _HAVE_JACK_ GtkWidget *jacktransport; GtkWidget *jacktransport_start_stopped; GtkWidget *jack_connect_ports_l; GtkWidget *jack_connect_ports_r; GtkWidget *jack_connect_midi_in_port; GtkWidget *jack_connect_midi_out_port; #endif #ifdef _HAVE_PORTAUDIO_ GtkWidget *portaudio_device; GtkWidget *portaudio_sample_rate; GtkWidget *portaudio_period_size; GtkWidget *maxrecordingtime; #endif #ifdef _HAVE_PORTMIDI_ GtkWidget *portmidi_input_device; GtkWidget *portmidi_output_device; #endif #ifdef _HAVE_FLUIDSYNTH_ GtkWidget *fluidsynth_soundfont; GtkWidget *fluidsynth_reverb; GtkWidget *fluidsynth_chorus; #endif GtkWidget *display_refresh; GtkWidget *animation_steps; GtkWidget *max_menu_size; GtkWidget *tooltip_timeout; GtkWidget *tooltip_browse_timeout; GtkWidget *tooltip_browse_mode_timeout; GtkWidget *profile; GtkWidget *midiplayer; GtkWidget *graphicseditor; GtkWidget *fontname; GtkWidget *fontsize; GtkWidget *denemopath; GtkWidget *temperament; GtkWidget *strictshortcuts; GtkWidget *menunavigation; GtkWidget *resolution; GtkWidget *overlays; GtkWidget *enable_thumbnails; GtkWidget *continuous; GList *audio_backend_list; GList *audio_driver_option_list; GList *midi_backend_list; GList *midi_driver_option_list; }; struct audio_callback_data { GtkWidget *dialog; GtkWidget *audio_driver; GtkWidget *midi_driver; #ifdef _HAVE_JACK_ GtkWidget *jack_audio_settings; GtkWidget *jack_midi_settings; #endif #ifdef _HAVE_PORTAUDIO_ GtkWidget *portaudio_settings; #endif #ifdef _HAVE_PORTMIDI_ GtkWidget *portmidi_settings; #endif }; static void free_g_lists (struct callbackdata *cbdata) { g_list_free (cbdata->audio_backend_list); g_list_free (cbdata->audio_driver_option_list); g_list_free (cbdata->midi_backend_list); g_list_free (cbdata->midi_driver_option_list); cbdata->audio_backend_list = NULL; cbdata->audio_driver_option_list = NULL; cbdata->midi_backend_list = NULL; cbdata->midi_driver_option_list = NULL; } /** * Callback to set autosave timeout * clicked */ static void toggle_autosave (GtkToggleButton * togglebutton, GtkWidget * autosave_timeout) { g_debug ("autosave now %d\n", gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (autosave_timeout))); gtk_widget_set_sensitive (autosave_timeout, gtk_toggle_button_get_active (togglebutton)); } static void set_preferences (struct callbackdata *cbdata) { DenemoPrefs *prefs = cbdata->prefs; gboolean midi_in_device_was_default = !strcmp (prefs->portmidi_input_device->str, "default"); #define ASSIGNTEXT(field) \ g_string_assign (prefs->field,\ gtk_entry_get_text (GTK_ENTRY (cbdata->field))); #define ASSIGNBOOLEAN(field) \ prefs->field =\ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(cbdata->field)); #define ASSIGNINT(field) \ prefs->field =\ gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(cbdata->field)); #define ASSIGNDOUBLE(field) \ prefs->field =\ gtk_spin_button_get_value (GTK_SPIN_BUTTON(cbdata->field)); #define ASSIGNCOMBO(field) \ if (cbdata->field)\ g_string_assign (prefs->field,\ (gchar *) gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(cbdata->field))); ASSIGNTEXT (lilypath) ASSIGNTEXT (browser) ASSIGNTEXT (imageviewer) ASSIGNTEXT (graphicseditor) ASSIGNTEXT (username) //ASSIGNTEXT (password) ASSIGNTEXT (profile) ASSIGNTEXT (fontname) ASSIGNINT (fontsize) ASSIGNTEXT (denemopath) gchar const *text = (gchar *) gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (cbdata->audio_driver)); GList *item = g_list_find_custom (cbdata->audio_driver_option_list, text, (GCompareFunc) strcmp); gint index = g_list_position (cbdata->audio_driver_option_list, item); if (index < 0) index = 0; gchar *backend = g_list_nth_data (cbdata->audio_backend_list, index); g_string_assign (prefs->audio_driver, backend); text = (gchar *) gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (cbdata->midi_driver)); item = g_list_find_custom (cbdata->midi_driver_option_list, text, (GCompareFunc) strcmp); index = g_list_position (cbdata->midi_driver_option_list, item); if (index < 0) index = 0; backend = g_list_nth_data (cbdata->midi_backend_list, index); g_string_assign (prefs->midi_driver, backend); #ifdef _HAVE_JACK_ // ASSIGNBOOLEAN(jacktransport) // ASSIGNBOOLEAN(jacktransport_start_stopped) ASSIGNCOMBO (jack_connect_ports_l) ASSIGNCOMBO (jack_connect_ports_r) ASSIGNCOMBO (jack_connect_midi_in_port) ASSIGNCOMBO (jack_connect_midi_out_port) #endif #ifdef _HAVE_PORTAUDIO_ ASSIGNCOMBO (portaudio_device) ASSIGNINT (portaudio_sample_rate) ASSIGNINT (portaudio_period_size) ASSIGNINT (maxrecordingtime) #endif #ifdef _HAVE_PORTMIDI_ ASSIGNCOMBO (portmidi_input_device) ASSIGNCOMBO (portmidi_output_device) #endif #ifdef _HAVE_FLUIDSYNTH_ ASSIGNTEXT (fluidsynth_soundfont) ASSIGNBOOLEAN (fluidsynth_reverb) ASSIGNBOOLEAN (fluidsynth_chorus) #endif ASSIGNDOUBLE (display_refresh) ASSIGNINT (animation_steps) ASSIGNINT (max_menu_size) ASSIGNINT (tooltip_timeout) ASSIGNINT (tooltip_browse_timeout) ASSIGNINT (tooltip_browse_mode_timeout) ASSIGNTEXT (temperament) ASSIGNBOOLEAN (strictshortcuts) ASSIGNBOOLEAN (menunavigation) ASSIGNBOOLEAN (overlays) ASSIGNBOOLEAN (enable_thumbnails) ASSIGNBOOLEAN (continuous) ASSIGNINT (resolution) ASSIGNINT (maxhistory) ASSIGNBOOLEAN (damping) ASSIGNINT (dynamic_compression) ASSIGNINT (zoom) ASSIGNINT (system_height) ASSIGNBOOLEAN (immediateplayback) ASSIGNINT (measureswitchsound) ASSIGNBOOLEAN (spillover) ASSIGNBOOLEAN (ignore_ties) ASSIGNBOOLEAN (manualtypeset) ASSIGNINT (typesetrefresh) ASSIGNINT (typesettype) ASSIGNINT (firstmeasure) ASSIGNINT (firststaff) ASSIGNINT (lastmeasure) ASSIGNINT (laststaff) ASSIGNINT (pitchspellingchannel) ASSIGNINT (pitchspellingprogram) ASSIGNBOOLEAN (persistence) ASSIGNBOOLEAN (cursor_highlight) ASSIGNBOOLEAN (return_key_is_special) ASSIGNBOOLEAN (newbie) ASSIGNBOOLEAN (learning) ASSIGNBOOLEAN (startmidiin) ASSIGNBOOLEAN (applytoselection) ASSIGNBOOLEAN (quickshortcuts) ASSIGNBOOLEAN (autosave) ASSIGNINT (autosave_timeout) ASSIGNINT (compression) ASSIGNBOOLEAN (midi_in_controls) ASSIGNBOOLEAN (playback_controls) ASSIGNBOOLEAN (console_pane) // ASSIGNBOOLEAN (lyrics_pane) ASSIGNBOOLEAN (visible_directive_buttons) ASSIGNBOOLEAN (autoupdate) ASSIGNBOOLEAN (toolbar) ASSIGNBOOLEAN (rhythm_palette) ASSIGNBOOLEAN (object_palette) ASSIGNBOOLEAN (saveparts) //g_debug ("Timeout %d \n", prefs->autosave_timeout); if (prefs->startmidiin || (midi_in_device_was_default && strcmp (prefs->portmidi_input_device->str, "default"))) { Denemo.project->input_source = INPUTMIDI; prefs->startmidiin = TRUE; } else Denemo.project->input_source = INPUTKEYBOARD; if (prefs->learning) initialize_keystroke_help (); if (prefs->tooltip_timeout == 0) prefs->tooltip_timeout = 2000; /* Now write it all to denemorc */ writeXMLPrefs (prefs); } static void midi_audio_tab_update (GtkWidget * box, gpointer data) { struct audio_callback_data *cbdata = (struct audio_callback_data *) data; gchar const *audio_driver = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (cbdata->audio_driver)); #if (defined _HAVE_JACK_) || (defined _HAVE_PORTMIDI_) gchar const *midi_driver = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (cbdata->midi_driver)); #endif #ifdef _HAVE_JACK_ gtk_widget_set_visible (cbdata->jack_audio_settings, strcmp (audio_driver, "JACK") == 0); gtk_widget_set_visible (cbdata->jack_midi_settings, strcmp (midi_driver, "JACK") == 0); #endif #ifdef _HAVE_PORTAUDIO_ gtk_widget_set_visible (cbdata->portaudio_settings, strcmp (audio_driver, "PortAudio") == 0); #endif #ifdef _HAVE_PORTMIDI_ gtk_widget_set_visible (cbdata->portmidi_settings, strcmp (midi_driver, "PortMidi") == 0); #endif // resize the dialog to whatever size is necessary to show all widgets gtk_window_resize (GTK_WINDOW (cbdata->dialog), 1, 1); } //callback for Prefences command void preferences_change (GtkAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; GtkWidget *dialog; GtkWidget *label; GtkWidget *separator; GtkWidget *main_vbox; GtkWidget *autosave; GtkWidget *autosave_timeout; // GtkWidget *tooltip_timeout; // GtkWidget *tooltip_browse_timeout; // GtkWidget *tooltip_browse_mode_timeout; GtkWidget *maxhistory; GtkWidget *notebook; GtkWidget *hbox; #ifdef _HAVE_JACK_ GtkWidget *jack_audio_settings; GtkWidget *jack_midi_settings; #endif #ifdef _HAVE_PORTAUDIO_ GtkWidget *portaudio_settings; #endif #ifdef _HAVE_PORTMIDI_ GtkWidget *portmidi_settings; #endif GList *g; gint i; static struct callbackdata cbdata; //g_assert (gui != NULL); cbdata.audio_backend_list = NULL; cbdata.audio_driver_option_list = NULL; cbdata.midi_backend_list = NULL; cbdata.midi_driver_option_list = NULL; // these lists need to be initialized the first time this function is called // The order is chose to default to portaudio, alsa, jack if present if (!cbdata.audio_backend_list) { #ifdef _HAVE_PORTAUDIO_ cbdata.audio_backend_list = g_list_append (cbdata.audio_backend_list, (gpointer) "portaudio"); cbdata.audio_driver_option_list = g_list_append (cbdata.audio_driver_option_list, (gpointer) "PortAudio"); #endif #ifdef _HAVE_JACK_ cbdata.audio_backend_list = g_list_append (cbdata.audio_backend_list, (gpointer) "jack"); cbdata.audio_driver_option_list = g_list_append (cbdata.audio_driver_option_list, (gpointer) "JACK"); #endif cbdata.audio_backend_list = g_list_append (cbdata.audio_backend_list, (gpointer) "dummy"); cbdata.audio_driver_option_list = g_list_append (cbdata.audio_driver_option_list, (gpointer) "none"); #ifdef _HAVE_PORTMIDI_ cbdata.midi_backend_list = g_list_append (cbdata.midi_backend_list, (gpointer) "portmidi"); cbdata.midi_driver_option_list = g_list_append (cbdata.midi_driver_option_list, (gpointer) "PortMidi"); #endif #ifdef _HAVE_ALSA_ cbdata.midi_backend_list = g_list_append (cbdata.midi_backend_list, (gpointer) "alsa"); cbdata.midi_driver_option_list = g_list_append (cbdata.midi_driver_option_list, (gpointer) "ALSA"); #endif #ifdef _HAVE_JACK_ cbdata.midi_backend_list = g_list_append (cbdata.midi_backend_list, (gpointer) "jack"); cbdata.midi_driver_option_list = g_list_append (cbdata.midi_driver_option_list, (gpointer) "JACK"); #endif cbdata.midi_backend_list = g_list_append (cbdata.midi_backend_list, (gpointer) "dummy"); cbdata.midi_driver_option_list = g_list_append (cbdata.midi_driver_option_list, (gpointer) "none"); } dialog = gtk_dialog_new_with_buttons (_("Preferences - Denemo"), GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); //gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); GtkWidget *warning_message = gtk_label_new (""); use_markup (warning_message); gtk_label_set_markup (GTK_LABEL (warning_message), _("A few options may require re-start of Denemo!")); gtk_container_add (GTK_CONTAINER (content_area), warning_message); notebook = gtk_notebook_new (); gtk_container_add (GTK_CONTAINER (content_area), notebook); #define VBOX main_vbox #define NEWPAGE(thelabel) \ main_vbox = gtk_vbox_new (FALSE, 1);\ gtk_notebook_append_page (GTK_NOTEBOOK (notebook), main_vbox, NULL);\ gtk_notebook_set_tab_label_text (GTK_NOTEBOOK (notebook), main_vbox, thelabel); #define BOOLEANENTRY(thelabel, field) \ GtkWidget *field =\ gtk_check_button_new_with_label (thelabel); \ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (field),\ (gboolean)Denemo.prefs.field);\ gtk_box_pack_start (GTK_BOX (VBOX), field, FALSE, TRUE, 0);\ cbdata.field = field; #define TEXTENTRY(thelabel, field) \ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (VBOX), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (thelabel);\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ GtkWidget *field = gtk_entry_new ();\ gtk_entry_set_text (GTK_ENTRY (field), Denemo.prefs.field->str);\ gtk_box_pack_start (GTK_BOX (hbox), field, TRUE, TRUE, 0);\ cbdata.field = field; #define PASSWORDENTRY(thelabel, field) \ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (VBOX), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (thelabel);\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ GtkWidget *field = gtk_entry_new ();\ gtk_entry_set_visibility(GTK_ENTRY(field), FALSE);\ gtk_entry_set_invisible_char(GTK_ENTRY(field), '*');\ gtk_entry_set_text (GTK_ENTRY (field), Denemo.prefs.field->str);\ gtk_box_pack_start (GTK_BOX (hbox), field, TRUE, TRUE, 0);\ cbdata.field = field; #define INTENTRY(thelabel, field) \ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (VBOX), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (thelabel);\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ field = gtk_spin_button_new_with_range (1, 50, 1.0);\ gtk_spin_button_set_value (GTK_SPIN_BUTTON (field), Denemo.prefs.field);\ gtk_box_pack_start (GTK_BOX (hbox), field, FALSE, FALSE, 0);\ cbdata.field = field; #define ENTRY_LIMITS(thelabel, field, min, max, step) \ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (VBOX), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (thelabel);\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ GtkWidget *field = gtk_spin_button_new_with_range (min, max, step);\ gtk_spin_button_set_value (GTK_SPIN_BUTTON (field), Denemo.prefs.field);\ gtk_box_pack_start (GTK_BOX (hbox), field, FALSE, FALSE, 0);\ cbdata.field = field; #define INTENTRY_LIMITS(thelabel, field, min, max) ENTRY_LIMITS(thelabel, field, min, max, 1) #define DOUBLEENTRY_LIMITS ENTRY_LIMITS #define BUTTON(thelabel, field, thecallback, data) \ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (vbox1), hbox, FALSE, FALSE, 0);\ GtkWidget *field = gtk_button_new_with_label(thelabel);\ gtk_box_pack_start (GTK_BOX (vbox1), field, FALSE, FALSE, 0);\ g_signal_connect (G_OBJECT (field), "clicked",\ G_CALLBACK (thecallback), (gpointer) data); #define CBOX(thelabel, field, thelist, settext)\ GtkWidget *field = gtk_combo_box_text_new_with_entry ();\ i=0;\ for (g=thelist;g;g=g->next){\ gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(field), g->data);\ if (0==strcmp(g->data, settext))\ gtk_combo_box_set_active(GTK_COMBO_BOX(field), i);\ i++;\ } #define COMBOBOX(thelabel, field, thelist, settext, editable)\ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (VBOX), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (thelabel);\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (VBOX), hbox, FALSE, TRUE, 0);\ CBOX(thelable, field, thelist, settext)\ gtk_box_pack_start (GTK_BOX (hbox), field, FALSE, FALSE, 0);\ gtk_widget_show (field);\ cbdata.field = field; #if GTK_MAJOR_VERSION == 2 #define SEPARATOR()\ separator = gtk_hseparator_new();\ gtk_box_pack_start (GTK_BOX (VBOX), separator, FALSE, TRUE, 4); #else #define SEPARATOR()\ separator = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);\ gtk_box_pack_start (GTK_BOX (VBOX), separator, FALSE, TRUE, 4); #endif /* * Note entry settings */ NEWPAGE (_("View")); BOOLEANENTRY (_("Highlight the cursor"), cursor_highlight); BOOLEANENTRY (_("Display general toolbar"), toolbar); BOOLEANENTRY (_("Display Controls for Incoming MIDI signals"), midi_in_controls); BOOLEANENTRY (_("Display Controls for Playback"), playback_controls); BOOLEANENTRY (_("Display console pane"), console_pane); //BOOLEANENTRY (_("Display lyrics pane"), lyrics_pane); BOOLEANENTRY (_("Display titles, controls etc"), visible_directive_buttons); BOOLEANENTRY (_("Display Music Snippets"), rhythm_palette); BOOLEANENTRY (_("Display menu of objects toolbar"), object_palette); //xgettext:no-c-format INTENTRY_LIMITS (_("% Zoom"), zoom, 1, 100); //xgettext:no-c-format INTENTRY_LIMITS (_("% of display height per system"), system_height, 1, 100); /* * Preferences to do with commands */ NEWPAGE (_("Command Behavior")); TEXTENTRY (_("Profile"), profile) // TEXTENTRY(_("Strict"), strictshortcuts) BOOLEANENTRY (_("Apply commands to selection if present"), applytoselection); BOOLEANENTRY (_("Spill notes over into next measure"), spillover); BOOLEANENTRY (_("(Chord Entry) Do not fill in tied note pitches"), ignore_ties); BOOLEANENTRY (_("Allow Quick Setting of Shortcuts"), quickshortcuts); BOOLEANENTRY (_("Strict Shortcuts"), strictshortcuts); BOOLEANENTRY (_("Menu Navigation by Keypress"), menunavigation); BOOLEANENTRY (_("Treat Return key as Movable Shortcut"), return_key_is_special); BOOLEANENTRY (_("Turn on all Tooltips"), newbie); BOOLEANENTRY (_("Show Shortcuts Used"), learning); INTENTRY_LIMITS (_("Tooltip timeout in ms. (0 for default, -1 to use GTK tooltips - restart needed)"), tooltip_timeout, -1, 1000000); #ifndef FAKE_TOOLTIPS INTENTRY_LIMITS (_("Tooltip browse timeout in ms"), tooltip_browse_timeout, 0, 1000000); INTENTRY_LIMITS (_("Tooltip browse mode timeout in ms"), tooltip_browse_mode_timeout, 0, 1000000); #endif /* * External (Helper) Programs */ NEWPAGE (_("Externals")); TEXTENTRY (_("Path to Lilypond"), lilypath) TEXTENTRY (_("File/Internet Browser"), browser) TEXTENTRY (_("Image Viewer"), imageviewer) TEXTENTRY (_("Graphics Editor"), graphicseditor) TEXTENTRY (_("Default Save Path"), denemopath) BOOLEANENTRY (_("Update the command set on startup"), autoupdate); /* * Misc Menu */ NEWPAGE (_("Auto-Typeset")); BOOLEANENTRY (_("Manually update the typeset score"), manualtypeset); INTENTRY_LIMITS (_("Rate of re-typeset in ms"), typesetrefresh, 0, 10000); INTENTRY_LIMITS (_("Type: (0=Range, 1=Movement, 2=Whole Score)"), typesettype, TYPESET_EXCERPT, TYPESET_ALL_MOVEMENTS); INTENTRY_LIMITS (_("Measures before cursor"), firstmeasure, 0, 100); INTENTRY_LIMITS (_("Measures after cursor"), lastmeasure, 0, 100); INTENTRY_LIMITS (_("Staffs before cursor"), firststaff, 0, 100); INTENTRY_LIMITS (_("Staffs after cursor"), laststaff, 0, 100); /* * Misc Menu */ NEWPAGE (_("Miscellaneous")); BOOLEANENTRY (_("Re-use last settings on startup"), persistence); TEXTENTRY (_("Default Font Name (Denemo)"), fontname); INTENTRY_LIMITS (_("Default Font Size"), fontsize, 4, 48); INTENTRY_LIMITS (_("Maximum Menu Size"), max_menu_size, 4, 100); DOUBLEENTRY_LIMITS (_("Playback Display Refresh"), display_refresh, 0.001, 0.5, 0.002); INTENTRY_LIMITS (_("Page Turn Steps"), animation_steps, 1, 200); INTENTRY_LIMITS (_("Excerpt Resolution"), resolution, 72, 600); BOOLEANENTRY (_("Enable Thumbnails"), enable_thumbnails); INTENTRY (_("Max recent files"), maxhistory) TEXTENTRY (_("User Name"), username) //PASSWORDENTRY (_("Password for Denemo.org"), password) BOOLEANENTRY (_("Autosave Parts"), saveparts); hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0); autosave = gtk_check_button_new_with_label (_("Autosave every")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (autosave), Denemo.prefs.autosave); gtk_box_pack_start (GTK_BOX (hbox), autosave, FALSE, FALSE, 0); autosave_timeout = gtk_spin_button_new_with_range (1, 600, 1.0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (autosave_timeout), Denemo.prefs.autosave_timeout); gtk_widget_set_sensitive (autosave_timeout, Denemo.prefs.autosave); gtk_box_pack_start (GTK_BOX (hbox), autosave_timeout, FALSE, FALSE, 0); g_debug ("autosave %p\n", autosave); label = gtk_label_new (_("second(s)")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (autosave), "toggled", G_CALLBACK (toggle_autosave), autosave_timeout); INTENTRY_LIMITS (_("Compression"), compression, 0, 9); static struct audio_callback_data audio_cbdata; NEWPAGE (_("Audio")); BOOLEANENTRY (_("Play back entered notes immediately"), immediateplayback); INTENTRY_LIMITS (_("MIDI key sound on measure end\n (0 = Off)"), measureswitchsound, 0, 127); INTENTRY_LIMITS (_("Pitch Spelling Channel"), pitchspellingchannel, 0, 15); INTENTRY_LIMITS (_("Pitch Spelling Program"), pitchspellingprogram, 0, 127); INTENTRY_LIMITS (_("% MIDI-in Dynamic Compression"), dynamic_compression, 0, 100); BOOLEANENTRY (_("Avoid abrupt damping"), damping); GList *item = g_list_find_custom (cbdata.audio_backend_list, Denemo.prefs.audio_driver->str, (GCompareFunc) strcmp); gint index = g_list_position (cbdata.audio_backend_list, item); if (index < 0) index = 0; gchar *driver = g_list_nth_data (cbdata.audio_driver_option_list, index); SEPARATOR (); COMBOBOX ("Audio backend", audio_driver, cbdata.audio_driver_option_list, driver, FALSE); g_signal_connect (G_OBJECT (GTK_COMBO_BOX (audio_driver)), "changed", G_CALLBACK (midi_audio_tab_update), &audio_cbdata); /* * JACK settings */ #ifdef _HAVE_JACK_ #undef VBOX #define VBOX jack_audio_settings jack_audio_settings = gtk_vbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (main_vbox), jack_audio_settings, FALSE, TRUE, 0); GList *jack_audio_output_ports = get_jack_ports (FALSE, FALSE); COMBOBOX (_("Connect to port (left)"), jack_connect_ports_l, jack_audio_output_ports, Denemo.prefs.jack_connect_ports_l->str, TRUE); COMBOBOX (_("Connect to port (right)"), jack_connect_ports_r, jack_audio_output_ports, Denemo.prefs.jack_connect_ports_r->str, TRUE); #undef VBOX #define VBOX main_vbox #endif // _HAVE_JACK_ /* * PortAudio settings */ #ifdef _HAVE_PORTAUDIO_ #undef VBOX #define VBOX portaudio_settings portaudio_settings = gtk_vbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (main_vbox), portaudio_settings, FALSE, TRUE, 0); GList *devices = get_portaudio_devices (); #ifndef G_OS_WIN32 /* if default is requested choose first in portaudio list, rather than rely on portaudio which fails to select a default */ if ((!strcmp (Denemo.prefs.portaudio_device->str, "default")) && (g_list_length (devices) > 1)) g_string_assign (Denemo.prefs.portaudio_device, (gchar *) (devices->next->data)); #endif COMBOBOX (_("Output device"), portaudio_device, devices, Denemo.prefs.portaudio_device->str, FALSE); free_portaudio_devices (devices); INTENTRY_LIMITS (_("Sample rate"), portaudio_sample_rate, 0, 96000); INTENTRY_LIMITS (_("Period size"), portaudio_period_size, 0, 2048); INTENTRY_LIMITS (_("Maximum Recording Time (Secs)"), maxrecordingtime, 0, G_MAXINT); #undef VBOX #define VBOX main_vbox #endif // _HAVE_PORTAUDIO_ item = g_list_find_custom (cbdata.midi_backend_list, Denemo.prefs.midi_driver->str, (GCompareFunc) strcmp); index = g_list_position (cbdata.midi_backend_list, item); if (index < 0) index = 0; driver = g_list_nth_data (cbdata.midi_driver_option_list, index); NEWPAGE (_("MIDI")); BOOLEANENTRY (_("Rhythm Entry for MIDI in"), startmidiin); COMBOBOX (_("MIDI backend"), midi_driver, cbdata.midi_driver_option_list, driver, FALSE); g_signal_connect (G_OBJECT (GTK_COMBO_BOX (midi_driver)), "changed", G_CALLBACK (midi_audio_tab_update), &audio_cbdata); /* * JACK settings */ #ifdef _HAVE_JACK_ #undef VBOX #define VBOX jack_midi_settings jack_midi_settings = gtk_vbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (main_vbox), jack_midi_settings, FALSE, TRUE, 0); GList *jack_midi_input_ports = get_jack_ports (TRUE, FALSE); GList *jack_midi_output_ports = get_jack_ports (TRUE, TRUE); COMBOBOX (_("Connect input to port"), jack_connect_midi_in_port, jack_midi_output_ports, Denemo.prefs.jack_connect_midi_in_port->str, TRUE); COMBOBOX (_("Connect output to port"), jack_connect_midi_out_port, jack_midi_input_ports, Denemo.prefs.jack_connect_midi_out_port->str, TRUE); free_jack_ports (jack_midi_output_ports); free_jack_ports (jack_midi_input_ports); #undef VBOX #define VBOX main_vbox #endif // _HAVE_JACK_ /* * PortMidi settings */ #ifdef _HAVE_PORTMIDI_ #undef VBOX #define VBOX portmidi_settings portmidi_settings = gtk_vbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (main_vbox), portmidi_settings, FALSE, TRUE, 0); GList *input_devices = get_portmidi_devices (FALSE); GList *output_devices = get_portmidi_devices (TRUE); COMBOBOX (_("Input device"), portmidi_input_device, input_devices, Denemo.prefs.portmidi_input_device->str, FALSE); COMBOBOX (_("Output device"), portmidi_output_device, output_devices, Denemo.prefs.portmidi_output_device->str, FALSE); free_portmidi_devices (input_devices); free_portmidi_devices (output_devices); #undef VBOX #define VBOX main_vbox #endif SEPARATOR (); #ifdef _HAVE_FLUIDSYNTH_ /* * FluidSynth settings */ TEXTENTRY (_("Soundfont"), fluidsynth_soundfont) hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (VBOX), hbox, FALSE, TRUE, 0); GtkWidget *button = gtk_button_new_with_label (_("Choose Soundfont")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (choose_sound_font), fluidsynth_soundfont); gtk_widget_show (button); BOOLEANENTRY (_("Enable Reverb on soundfont"), fluidsynth_reverb) BOOLEANENTRY (_("Enable Chorus on soundfont"), fluidsynth_chorus) #endif /* * Pitch Entry Parameters */ NEWPAGE (_("Pitch Entry")); TEXTENTRY (_("Temperament"), temperament) BOOLEANENTRY (_("Use Overlays"), overlays); BOOLEANENTRY (_("Continuous Entry"), continuous); gtk_widget_show_all (dialog); audio_cbdata.dialog = dialog; audio_cbdata.audio_driver = cbdata.audio_driver; audio_cbdata.midi_driver = cbdata.midi_driver; #ifdef _HAVE_JACK_ audio_cbdata.jack_audio_settings = jack_audio_settings; audio_cbdata.jack_midi_settings = jack_midi_settings; #endif #ifdef _HAVE_PORTAUDIO_ audio_cbdata.portaudio_settings = portaudio_settings; #endif #ifdef _HAVE_PORTMIDI_ audio_cbdata.portmidi_settings = portmidi_settings; #endif midi_audio_tab_update (NULL, (gpointer *) & audio_cbdata); #define SETCALLBACKDATA(field) \ cbdata.field = field; cbdata.prefs = &Denemo.prefs; SETCALLBACKDATA (autosave); SETCALLBACKDATA (autosave_timeout); SETCALLBACKDATA (maxhistory); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { set_preferences (&cbdata); #ifndef G_OS_WIN32 //under windows we have: // stop playback and restart audio subsystem // FIXME: only do this when audio settings actually changed if (Denemo.project->notsaved) infodialog(_("Any changes to MIDI or AUDIO will not be effected until re-starting Denemo")); else if (confirm (_("Audio/MIDI Subsystem"), _("Attempt to re-start the audio subsystem now?"))) { midi_stop (); audio_shutdown (); audio_initialize (cbdata.prefs); } #endif free_g_lists (&cbdata); } else { free_g_lists (&cbdata); } gtk_widget_destroy (dialog); } denemo-2.2.0/src/ui/PaxHeaders.19168/virtualkeyboard.c0000644000000000000000000000013213135434036017310 xustar0030 mtime=1500919838.366648472 30 atime=1500919921.029981805 30 ctime=1500919914.323315139 denemo-2.2.0/src/ui/virtualkeyboard.c0000644000175000017500000001623613135434036021171 0ustar00jjbenhamjjbenham00000000000000/* * virtualkeyboard.c * * Copyright 2017 Richard Shann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include "ui/virtualkeyboard.h" #include "core/view.h" #include "core/utils.h" #include "command/keyresponses.h" #if GTK_MAJOR_VERSION==2 void create_virtual_keyboard (void) { warningdialog (_("Virtual Keyboard requires Denemo to be built with GTK3 or higher")); } #else gboolean sharp_order[12] = { 0,1,0,1,0,0, // c cis d ees e f 1,0,1,0,1,0 // fis g gis a bes }; static gboolean noteon (GtkWidget *widget, GdkEventButton *event, gint key) { char buf[3] = {0x90, key, 0xFF}; //NOTEON gboolean right = (event->button == 3); if (right) { Denemo.keyboard_state |= (CHORD_MASK | ADDING_MASK); } else Denemo.keyboard_state &= ~(CHORD_MASK | ADDING_MASK); process_midi_event (buf); return TRUE; } static gboolean noteoff (GtkWidget *widget, GdkEventButton *event, gint key) { char buf[3] = {0x80, key, 0xFF}; //NOTEOFF gboolean right = (event->button == 3); if (right) Denemo.keyboard_state &= ~(CHORD_MASK | ADDING_MASK); process_midi_event (buf); return TRUE; } static void connect_signals_to_eventbox (GtkWidget* eventbox, gint i) { gtk_widget_add_events (eventbox, (GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK )); gtk_widget_set_can_focus (eventbox, TRUE); g_signal_connect (G_OBJECT(eventbox), "button-press-event", G_CALLBACK (noteon), GINT_TO_POINTER(i)); g_signal_connect (G_OBJECT(eventbox), "button-release-event", G_CALLBACK (noteoff), GINT_TO_POINTER(i)); g_signal_connect (G_OBJECT(eventbox), "key-press-event", G_CALLBACK (scorearea_keypress_event), NULL); g_signal_connect (G_OBJECT(eventbox), "key-release-event", G_CALLBACK (scorearea_keyrelease_event), NULL); } static GtkWidget *sharp_button (gint i) { GtkWidget *eventbox = gtk_event_box_new (); GtkWidget *label = gtk_label_new (" \n \n \n"); gtk_container_add (GTK_CONTAINER(eventbox), label); connect_signals_to_eventbox (eventbox, i); set_background_color (label, "#000000"); gtk_widget_set_hexpand (label, TRUE); return eventbox; } static void add_label_to_eventbox (GtkWidget *eventbox, GtkWidget *label) { #if ((GTK_MAJOR_VERSION==3) && (GTK_MINOR_VERSION>=12)) gtk_container_add (GTK_CONTAINER(eventbox), label); gtk_widget_set_margin_end (GTK_WIDGET(label), 1); #else GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 1); set_background_color (box, "#0000FF"); gtk_container_add (GTK_CONTAINER(eventbox), box); GtkWidget *sep = gtk_separator_new (GTK_ORIENTATION_VERTICAL); gtk_container_add (GTK_CONTAINER(box), sep); set_foreground_color (sep, "#000000"); gtk_container_add (GTK_CONTAINER(box), label); #endif } static GtkWidget *natural_button (gint i) { GtkWidget *eventbox = gtk_event_box_new (); GtkWidget *label = gtk_label_new (" \n \n \n"); set_background_color (label, "#FFFFFF"); gtk_widget_set_hexpand (label, TRUE); add_label_to_eventbox (eventbox, label); connect_signals_to_eventbox (eventbox, i); return eventbox; } static GtkWidget *natural_head (gint i) { GtkWidget *eventbox = gtk_event_box_new (); GtkWidget *label = i==60? gtk_label_new (" \n C \n") : ((i%12)==4)? gtk_label_new (" \n \n") : gtk_label_new (" \n \n"); set_background_color (label, "#FFFFFF"); gtk_widget_set_hexpand (label, TRUE); add_label_to_eventbox (eventbox, label); connect_signals_to_eventbox (eventbox, i); return eventbox; } static add_sharps (GtkWidget *sharps, gint octave) { gint i; for (i=0;i<12; i++) { gtk_container_add (GTK_CONTAINER(sharps), sharp_order[i]? sharp_button(i + 12*octave):natural_button(i + 12*octave)); } } static add_naturals (GtkWidget *sharps, gint octave) { gint i; for (i=0;i<12; i++) { if (!sharp_order[i]) gtk_container_add (GTK_CONTAINER(sharps), natural_head(i + 12*octave)); } } void create_virtual_keyboard (gint octaves) { GtkWidget *keyboard_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); GtkWidget *keyboard = gtk_grid_new(); set_background_color (keyboard_window, "#000000"); gtk_window_set_title (GTK_WINDOW (keyboard_window), _("Virtual MIDI keyboard")); //gtk_window_set_decorated (GTK_WINDOW (keyboard_window), FALSE); gtk_window_set_default_size (GTK_WINDOW (keyboard_window), 800, 200); GtkAdjustment *hadj = gtk_adjustment_new (200.0, 0.0, 400.0, 0.0, 0.0, 0.0); GtkWidget *sw = gtk_scrolled_window_new (hadj , NULL); gtk_orientable_set_orientation ((GtkOrientable *)keyboard, GTK_ORIENTATION_HORIZONTAL); gint i; for (i=5-octaves/2;i<(5 + octaves - octaves/2);i++) { GtkWidget *sharps = gtk_grid_new(); GtkWidget *naturals = gtk_grid_new(); GtkWidget *octave = gtk_grid_new(); gtk_container_add (GTK_CONTAINER(keyboard), octave); gtk_orientable_set_orientation ((GtkOrientable *)octave, GTK_ORIENTATION_VERTICAL); gtk_container_add (GTK_CONTAINER(octave), sharps); gtk_orientable_set_orientation ((GtkOrientable *)sharps, GTK_ORIENTATION_HORIZONTAL); gtk_container_add (GTK_CONTAINER(octave), naturals); gtk_orientable_set_orientation ((GtkOrientable *)naturals, GTK_ORIENTATION_HORIZONTAL); add_sharps (sharps, i); add_naturals (naturals, i); } #if (GTK_MAJOR_VERSION==3 && GTK_MINOR_VERSION<8) gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), keyboard); #else gtk_container_add (GTK_CONTAINER(sw), keyboard); #endif gtk_container_add (GTK_CONTAINER(keyboard_window), sw); gtk_widget_show_all (keyboard_window); gdouble lower, upper, page; lower = gtk_adjustment_get_lower (hadj); upper = gtk_adjustment_get_upper (hadj); page = gtk_adjustment_get_page_size (hadj); //g_print ("Lower ... %f %f %f\n", lower, upper, page); gtk_adjustment_set_value (hadj, (upper-page - lower)/2); } #endif //GTK3 and above denemo-2.2.0/src/ui/PaxHeaders.19168/markup.c0000644000000000000000000000013213135434036015400 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.039981805 30 ctime=1500919914.346648472 denemo-2.2.0/src/ui/markup.c0000644000175000017500000007260213135434036017260 0ustar00jjbenhamjjbenham00000000000000/* markup.c * dialog for getting markup from user * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2015 Richard Shann * */ #include "printview/printview.h" #include "printview/markupview.h" #include "core/view.h" #include "scripting/scheme-callbacks.h" #include "core/menusystem.h" #define SECTION_UTF8_STRING "§" #define PILCROW_UTF8_STRING "¶" static gint changes = 0; static gint TimerId = 0; static gboolean run_preview (GtkWidget *textbuffer); static gchar * create_lilypond_from_text (gchar * text) { GString *ret = g_string_new ("\\line{"); gunichar section = g_utf8_get_char (PILCROW_UTF8_STRING); gchar *this; for(this = text;*this; this = g_utf8_next_char (this)) { gunichar thechar = g_utf8_get_char (this); if (thechar == g_utf8_get_char (SECTION_UTF8_STRING)) continue;//don't show old paragraph marks used in previous version. if (thechar == section) { g_string_append (ret, "}\\line{"); } else { gchar *end = g_utf8_offset_to_pointer (this, 1); gchar val = *end; *end = '\0'; g_string_append_printf (ret, "%s", this); *end = val; } } g_string_append (ret, "}\n"); return g_string_free (ret, FALSE); } static GtkWidget *get_textbuffer_from_button (GtkWidget *button) { GtkWidget *hbox = gtk_widget_get_parent (gtk_widget_get_parent (button)); return (GtkWidget *) g_object_get_data (G_OBJECT (hbox), "textbuffer"); } static GtkWidget *get_textbuffer_from_menuitem (GtkWidget *menuitem) { GtkWidget *hbox = gtk_widget_get_parent (menuitem); return (GtkWidget *) g_object_get_data (G_OBJECT (hbox), "textbuffer"); } //static GtkWidget *get_textview_from_button (GtkWidget *button) { // GtkWidget *hbox = gtk_widget_get_parent (gtk_widget_get_parent (button)); // return (GtkWidget *) g_object_get_data (G_OBJECT (hbox), "textview"); //} static void paste_snippet_lilypond (GtkWidget * menuitem) { DenemoProject *gui = Denemo.project; GtkWidget *textbuffer = get_textbuffer_from_menuitem (menuitem); if (textbuffer) { RhythmPattern *r = (gui->currhythm) ? ((RhythmPattern *) gui->currhythm->data) : NULL; if (r) { const gchar *clefname = get_prevailing_clef_as_lilypond (), *keysigname = get_prevailing_keysig_as_lilypond (), *timesigname = get_prevailing_timesig_as_lilypond (); gchar *text = g_strdup_printf ("\\raise #0.5 \\score{\n\\DenemoGlobalTranspose {{%s}{%s}{%s}%s}\\layout{indent=0.0}\\paper{top-margin=0.0 left-margin=0.0}\n}", clefname, keysigname, timesigname, r->lilypond?r->lilypond->str:""); gtk_text_buffer_insert_at_cursor (GTK_TEXT_BUFFER (textbuffer), text, -1), changes++; g_free (text); } } else { g_warning ("Denemo program error, widget hierarchy changed???"); } // GtkWidget *textview = get_textview_from_button (button); // gtk_widget_grab_focus (textview); } /* get a chord symbol for the chord at the cursor or user provided note/chord if not on the chord or at_cursor false */ static gchar * get_fakechord_as_markup (gchar * font, gboolean at_cursor) { DenemoProject *gui = Denemo.project; DenemoObject *curObj; gchar *text = NULL; if (!Denemo.project || !(Denemo.project->movement)) return NULL; if (at_cursor) { if (Denemo.project->movement->currentobject) { curObj = (DenemoObject*) (Denemo.project->movement->currentobject->data); gchar *chordnotes = NULL, *title = NULL; chordnotes = get_chord_notes(); if (chordnotes) title = g_strdup_printf ("%s %s", _("Current Chord:"), chordnotes); if (gui->lilysync != gui->changecount) refresh_lily_cb (NULL, Denemo.project); text = curObj->lilypond; g_free (title); g_free (chordnotes); } else warningdialog (_( "Cursor not on chord")); } else text = notes_choice_dialog (1, NULL, NULL); if (text) { gchar *ret = g_strdup_printf ("\\hspace #-0.5 \\scale #'(0.975 . 0.975)\\score{\n\\DenemoGlobalTranspose\n\\new ChordNames {\n\\override ChordName.font-name = #'\"%s\"\n%s %%note-name to insert, in Dutch\n}\n\\layout{indent=0.0}}\n", font, text); return ret; } return NULL; } static void paste_current_lilypond_as_fakechord (GtkWidget * menuitem, gboolean at_cursor) { DenemoProject *gui = Denemo.project; GtkWidget *textbuffer = get_textbuffer_from_menuitem (menuitem); if (textbuffer) { gchar *text = NULL; gchar *font = string_dialog_entry (gui, _( "Note/Chord Name"), _("Give a font name "), "Times"); if (font && *font) text = get_fakechord_as_markup (font, at_cursor); g_free (font); if(text) { gchar *insert = g_strdup_printf("%s", text); gtk_text_buffer_insert_at_cursor (GTK_TEXT_BUFFER (textbuffer), text, -1), changes++; g_free (text); g_free (insert); } } else { g_warning ("Denemo program error, widget hierarchy changed???"); } } static void paste_current_lilypond_as_fretdiagram (GtkWidget * menuitem) { DenemoProject *gui = Denemo.project; GtkWidget *textbuffer = get_textbuffer_from_menuitem (menuitem); if (textbuffer) { gchar *text = get_fretdiagram_as_markup (); if(text) { gchar *insert = g_strdup_printf("%s", text); gtk_text_buffer_insert_at_cursor (GTK_TEXT_BUFFER (textbuffer), text, -1), changes++; g_free (text); g_free (insert); } } else { g_warning ("Denemo program error, widget hierarchy changed???"); } } static void insert_markup (GtkWidget * menuitem, gchar *text) { DenemoProject *gui = Denemo.project; GtkWidget *textbuffer = get_textbuffer_from_menuitem (menuitem); if (textbuffer) { GtkTextIter cursor; gtk_text_buffer_insert_at_cursor (GTK_TEXT_BUFFER (textbuffer), text, -1), changes++; gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (textbuffer), &cursor, gtk_text_buffer_get_insert (GTK_TEXT_BUFFER(textbuffer))); gtk_text_buffer_insert_with_tags_by_name (GTK_TEXT_BUFFER (textbuffer), &cursor, " ", -1, "ineditable",NULL); } else g_warning ("Denemo program error, widget hierarchy changed???"); } //static GtkTextIter StartSelection, EndSelection; static void markup_selection (GtkWidget * button, gchar *text) { DenemoProject *gui = Denemo.project; GtkTextIter start, end; GtkWidget *textbuffer = (GtkWidget *) g_object_get_data (G_OBJECT (gtk_widget_get_parent(button)), "textbuffer"); //gtk_text_buffer_select_range (GTK_TEXT_BUFFER(textbuffer), &StartSelection, &EndSelection); if (gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (textbuffer), &start, &end)) { if (textbuffer) { gtk_text_buffer_insert_with_tags_by_name (GTK_TEXT_BUFFER (textbuffer), &start, text, -1, "code", NULL); if (gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (textbuffer), &start, &end)) gtk_text_buffer_insert_with_tags_by_name (GTK_TEXT_BUFFER (textbuffer), &end, "}", -1, "code", NULL), changes++; } else g_critical ("Denemo program error, widget hierarchy changed???"); } else warningdialog ( _("Select the text first.")); } static void insert_font_mag (GtkWidget * button) { DenemoProject *gui = Denemo.project; GtkWidget *textbuffer = get_textbuffer_from_button (button); if (!textbuffer) { g_warning ("Denemo program error, widget hierarchy changed???"); return; } GtkTextIter start, end; if (!gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (textbuffer), &start, &end)) { warningdialog ( _("Select the text first.")); return; } gchar *text = string_dialog_entry (gui, _( "Font Magnification"), _("Give a relative font size +/- "), "-2"); if (text && *text) { gchar *out = g_strdup_printf ("\\fontsize #%s {", text); gtk_text_buffer_select_range (GTK_TEXT_BUFFER (textbuffer), &start, &end);//the dialog has destroyed the selection if (!gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (textbuffer), &start, &end)) { g_critical ( _("Select the text first.")); return; } markup_selection (button, out); // GtkWidget *textview = get_textview_from_button (button); // gtk_widget_grab_focus (textview); g_free (out); } g_free (text); } static void insert_vert (GtkWidget * button) { DenemoProject *gui = Denemo.project; GtkWidget *textbuffer = get_textbuffer_from_button (button); gchar *text = string_dialog_entry (gui, _( "Space Above"), _("Give space to leave above + only "), "2"); if (text && *text) { gchar *out = g_strdup_printf ("\\vspace #%s", text); if (textbuffer) { GtkTextIter cursor; gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (textbuffer), &cursor, gtk_text_buffer_get_insert (GTK_TEXT_BUFFER(textbuffer))); gtk_text_buffer_insert_with_tags_by_name (GTK_TEXT_BUFFER (textbuffer), &cursor, out, -1, "code",NULL); gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (textbuffer), &cursor, gtk_text_buffer_get_insert (GTK_TEXT_BUFFER(textbuffer))); gtk_text_buffer_insert_with_tags_by_name (GTK_TEXT_BUFFER (textbuffer), &cursor, " ", -1, "ineditable",NULL); changes++; } else { g_warning ("Denemo program error, widget hierarchy changed???"); } // GtkWidget *textview = get_textview_from_button (button); // gtk_widget_grab_focus (textview); g_free (out); } g_free (text); } static void insert_horiz (GtkWidget * button) { DenemoProject *gui = Denemo.project; GtkWidget *textbuffer = get_textbuffer_from_button (button); gchar *text = string_dialog_entry (gui, _( "Insert Space"), _("Give space to insert +/- "), "2"); if (text && *text) { gchar *out = g_strdup_printf ("\\hspace #%s", text); if (textbuffer) { GtkTextIter cursor; gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (textbuffer), &cursor, gtk_text_buffer_get_insert (GTK_TEXT_BUFFER(textbuffer))); gtk_text_buffer_insert_with_tags_by_name (GTK_TEXT_BUFFER (textbuffer), &cursor, out, -1, "code",NULL); gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (textbuffer), &cursor, gtk_text_buffer_get_insert (GTK_TEXT_BUFFER(textbuffer))); gtk_text_buffer_insert_with_tags_by_name (GTK_TEXT_BUFFER (textbuffer), &cursor, " ", -1, "ineditable",NULL); changes++; } else { g_warning ("Denemo program error, widget hierarchy changed???"); } // GtkWidget *textview = get_textview_from_button (button); // gtk_widget_grab_focus (textview); g_free (out); } g_free (text); } static void preview_text (gchar *text) { gchar *lilypond = create_lilypond_from_text (text);//g_print("At this point lilypond is <<<%s>>>\ntext was %s\n\n", lilypond, text); gchar *syntax = g_strconcat (LILYPOND_SYMBOL_DEFINITIONS, " \\markup \\column {",lilypond," }", NULL); create_pdf_for_lilypond (syntax); g_free (syntax); g_free (lilypond); } static gboolean run_preview (GtkWidget *textbuffer) {//g_print ("."); // if (TimerId == 0) //before a character is entered there is no timer, but Preview button should run_preview. // return FALSE;//no further calls static gint counter = 0; if (changes && (counter==10)) counter = 0; if (!changes) counter++; if (changes || (counter==10)) { if (changes) counter = 0; changes = 0; GtkTextIter startiter, enditer; gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER(textbuffer), &startiter); gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER(textbuffer), &enditer); gchar *text = gtk_text_buffer_get_text (GTK_TEXT_BUFFER(textbuffer), &startiter, &enditer, FALSE); pause_continuous_typesetting (); preview_text (text); } return TRUE; //continuous timer } static void preview_markup (GtkWidget * button) { DenemoProject *gui = Denemo.project; GtkWidget *textbuffer = get_textbuffer_from_button (button); changes++;//force recalculation. run_preview (textbuffer); } static gboolean keypress_callback (GtkWidget * w, GdkEventKey * event, GtkWidget *textbuffer) { DenemoProject *gui = Denemo.project; GtkTextIter cursor; if (TimerId==0) TimerId = g_timeout_add ( 300, (GSourceFunc)run_preview, textbuffer); changes++; if (event->keyval == GDK_KEY_Return) { //gchar *key = g_strdup_printf ("%c", gdk_keyval_to_unicode (event->keyval)); gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER(textbuffer), &cursor, gtk_text_buffer_get_insert (GTK_TEXT_BUFFER(textbuffer))); gtk_text_buffer_insert (GTK_TEXT_BUFFER(textbuffer), &cursor, "\n""¶", -1); //g_print ("Got %s\n", key); // g_free (key); return TRUE; } if ('#' == gdk_keyval_to_unicode (event->keyval)) { gdk_beep(); g_warning ("The character # can only be used for scheme code, paste it in if needed"); return TRUE; } return FALSE; //pass it on to the standard handler. } static void adjust_selection (GtkWidget *w, gchar *syntax) { GtkTextIter start, end; GtkWidget *textbuffer = (GtkWidget *) g_object_get_data (G_OBJECT (gtk_widget_get_parent(w)), "textbuffer"); if (gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (textbuffer), &start, &end)) { gchar *text = string_dialog_entry (Denemo.project, syntax, _("Give amount "), "0"); if (text && *text) { gchar *out = g_strdup_printf ("%s #%s {", syntax, text); gtk_text_buffer_select_range (GTK_TEXT_BUFFER (textbuffer), &start, &end);//the dialog has destroyed the selection markup_selection (w, out); g_free (out); } g_free (text); } } static void adjust_insert (GtkWidget *w, gchar *syntax) { GtkWidget *textbuffer = (GtkWidget *) g_object_get_data (G_OBJECT (gtk_widget_get_parent(w)), "textbuffer"); gchar *text = string_dialog_entry (Denemo.project, syntax, _("Give amount "), "0"); if (text && *text) { gchar *out = g_strdup_printf ("%s%s", syntax, text); insert_markup (w, out); g_free (out); } g_free (text); } static void insert_glyph_from_user (GtkWidget * menuitem) { DenemoProject *gui = Denemo.project; GtkWidget *textbuffer = get_textbuffer_from_menuitem (menuitem); if (textbuffer) { gchar *text = string_dialog_entry (gui, _( "Music Glyphs"), _("Give a name of glyph (see LilyPond Documentation for these) "), "rests.2"); if(text) { gchar *insert = g_strdup_printf("\\musicglyph #\"%s\" ", text); GtkTextIter cursor; gtk_text_buffer_insert_at_cursor (GTK_TEXT_BUFFER (textbuffer), insert, -1), changes++; gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (textbuffer), &cursor, gtk_text_buffer_get_insert (GTK_TEXT_BUFFER(textbuffer))); gtk_text_buffer_insert_with_tags_by_name (GTK_TEXT_BUFFER (textbuffer), &cursor, " ", -1, "ineditable",NULL); g_free (text); g_free (insert); } } else { g_warning ("Denemo program error, widget hierarchy changed???"); } } //pops up a menu of adjustments to make to the selection static void popup_adjust_menu ( GtkWidget *textbuffer) { GtkWidget *menu = gtk_menu_new (); g_object_set_data (G_OBJECT (menu), "textbuffer", (gpointer)textbuffer); GtkWidget *menuitem = gtk_menu_item_new_with_label (_("Raise")); gtk_widget_set_tooltip_text (menuitem, _("raises the selection by the amount given.")); g_signal_connect (menuitem, "activate", G_CALLBACK (adjust_selection), "\\raise "); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Font Magnification")); gtk_widget_set_tooltip_text (menuitem, _("Inserts markup to set the relative font size for the selected text.")); g_signal_connect (menuitem, "activate", G_CALLBACK (adjust_selection), "\\fontsize "); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_widget_show_all (menu); if (gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (textbuffer))) { gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME); } else warningdialog ( _("Select the text first.")); } //pops up a menu of inserts requring a value static void popup_insert_by_value_menu ( GtkWidget *textbuffer) { GtkWidget *menu = gtk_menu_new (); g_object_set_data (G_OBJECT (menu), "textbuffer", (gpointer)textbuffer); GtkWidget *menuitem = gtk_menu_item_new_with_label (_("Horizontal Space (+/-)")); gtk_widget_set_tooltip_text (menuitem, _("Inserts a spacer (+) or shifts the rest of the line rightwards (-) by amount given")); g_signal_connect (menuitem, "activate", G_CALLBACK (adjust_insert), "\\hspace #"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Paste Note Name")); gtk_widget_set_tooltip_text (menuitem, _("Pastes user supplied note name in a choice of font style and size.\n" "The note name is pasted as LilyPond markup.\n" "It will print as the note name in the sentence you are writing, transposed according to any global transposition you set.\n" "Use, for example, to specify the key of a piece in a title.\n")); g_signal_connect (menuitem, "activate", G_CALLBACK (paste_current_lilypond_as_fakechord), GINT_TO_POINTER(FALSE)); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("LilyPond Glyph")); gtk_widget_set_tooltip_text (menuitem, _("Inserts LilyPond music glyph at the cursor position in the text.")); g_signal_connect (menuitem, "activate", G_CALLBACK (insert_glyph_from_user), NULL); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_widget_show_all (menu); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME); } //pops up a menu of styles to be applied to the selection static void popup_style_menu (GtkWidget *button) { GtkWidget *menu = gtk_menu_new (); GtkWidget *textbuffer = get_textbuffer_from_button (button); g_object_set_data (G_OBJECT (menu), "textbuffer", (gpointer)textbuffer); GtkWidget *menuitem = gtk_menu_item_new_with_label (_("Adjust Selection (with value)")); gtk_widget_set_tooltip_text (menuitem, _("Pop up a menu of adjustments to be made to the selection with a value you give.")); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (popup_adjust_menu), textbuffer); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Bold")); gtk_widget_set_tooltip_text (menuitem, _("Inserts markup to make the selected text bold.")); g_signal_connect (menuitem, "activate", G_CALLBACK (markup_selection), "\\bold {"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Italic")); gtk_widget_set_tooltip_text (menuitem, _("Inserts markup to make the selected text italic.")); g_signal_connect (menuitem, "activate", G_CALLBACK (markup_selection), "\\italic {"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Upright")); gtk_widget_set_tooltip_text (menuitem, _("Inserts markup to make the selected text not italic.")); g_signal_connect (menuitem, "activate", G_CALLBACK (markup_selection), "\\upright {"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Un-Bold")); gtk_widget_set_tooltip_text (menuitem, _("Inserts markup to make the selected text not bold.")); g_signal_connect (menuitem, "activate", G_CALLBACK (markup_selection), "\\medium {"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Superscript")); gtk_widget_set_tooltip_text (menuitem, _("Inserts markup to make the selected text as superscript.")); g_signal_connect (menuitem, "activate", G_CALLBACK (markup_selection), "\\super {"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Subscript")); gtk_widget_set_tooltip_text (menuitem, _("Inserts markup to make the selected text as subscript.")); g_signal_connect (menuitem, "activate", G_CALLBACK (markup_selection), "\\sub {"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Column")); gtk_widget_set_tooltip_text (menuitem, _("Inserts markup to place the selected text in a column. You can nest lines inside columns.")); g_signal_connect (menuitem, "activate", G_CALLBACK (markup_selection), "\\column {"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Line")); gtk_widget_set_tooltip_text (menuitem, _("Inserts markup to place the selected text in a line.")); g_signal_connect (menuitem, "activate", G_CALLBACK (markup_selection), "\\line {"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Box")); gtk_widget_set_tooltip_text (menuitem, _("Inserts markup to place the selected text in a box.")); g_signal_connect (menuitem, "activate", G_CALLBACK (markup_selection), "\\box {"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_widget_show_all (menu); if (gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (textbuffer))) { gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME); } else warningdialog ( _("Select the text first.")); } //pops up a menu of objects to be inserted at cursor static void popup_insert_menu (GtkWidget *button) { GtkWidget *menu = gtk_menu_new (); GtkWidget *textbuffer = get_textbuffer_from_button (button); g_object_set_data (G_OBJECT (menu), "textbuffer", (gpointer)textbuffer); GtkWidget *menuitem; menuitem = gtk_menu_item_new_with_label (_("Insert (with value)")); gtk_widget_set_tooltip_text (menuitem, _("Pop up a menu of insertions that require a value to insert.")); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (popup_insert_by_value_menu), textbuffer); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Paste Current Snippet")); gtk_widget_set_tooltip_text (menuitem, _("Pastes the music captured in the currently selected Snippet into the text at the cursor.\nThe music appears here in the LilyPond syntax.\nIt will print as typeset music embedded in the sentence you are writing.\nYou can edit the syntax following the LilyPond syntax.\n")); g_signal_connect (menuitem, "activate", G_CALLBACK (paste_snippet_lilypond), NULL); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Paste Chord Symbol")); gtk_widget_set_tooltip_text (menuitem, _("Pastes chord symbol for the chord at the cursor in a choice of font style and size.\n" "The chord is pasted as LilyPond markup.\n" "It will print as the chord symbol (fakechord) in the sentence you are writing, transposed according to any global transposition you set.\n")); g_signal_connect (menuitem, "activate", G_CALLBACK (paste_current_lilypond_as_fakechord), GINT_TO_POINTER(TRUE)); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Paste Fret Diagram")); gtk_widget_set_tooltip_text (menuitem, _("Pastes the chord at the cursor as a Fret Diagram\n" "The music appears here in the LilyPond syntax.\n" "It will print as fret diagram in the sentence you are writing, transposed according to the global transposition set.\n")); g_signal_connect (menuitem, "activate", G_CALLBACK (paste_current_lilypond_as_fretdiagram), NULL); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Insert “ Open Quotes")); gtk_widget_set_tooltip_text (menuitem, _("Inserts open double quote. Note that this is not the \" character which is used for grouping words not to be treated as markup. The \" marks must be paired or LilyPond will not typeset the music.")); g_signal_connect (menuitem, "activate", G_CALLBACK (insert_markup), "“"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Insert †Close Quotes")); gtk_widget_set_tooltip_text (menuitem, _("Inserts close double quote. Note that this is not the \" character which is used for grouping words not to be treated as markup. The \" marks must be paired or LilyPond will not typeset the music.")); g_signal_connect (menuitem, "activate", G_CALLBACK (insert_markup), "â€"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Segno")); gtk_widget_set_tooltip_text (menuitem, _("Inserts Segno sign at the cursor position in the text.")); g_signal_connect (menuitem, "activate", G_CALLBACK (insert_markup), "\\musicglyph #\"scripts.segno\""); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Coda")); gtk_widget_set_tooltip_text (menuitem, _("Inserts Coda sign at the cursor position in the text.")); g_signal_connect (menuitem, "activate", G_CALLBACK (insert_markup), "\\musicglyph #\"scripts.coda\""); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_widget_show_all (menu); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME); } gboolean get_user_markup (GString *user_text, GString *marked_up_text, gchar* title, gchar *instruction, gchar *initial_value, gboolean modal, gboolean format_only) { #ifndef USE_EVINCE g_debug("This feature requires denemo to be built with evince"); return FALSE; #endif GtkWidget *top_vbox = gtk_vbox_new (FALSE, 8); install_markup_preview (top_vbox, instruction); GtkWidget *hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (top_vbox), hbox, FALSE, TRUE, 0); GtkWidget *button = gtk_button_new_with_label (_("Insert")); gtk_widget_set_tooltip_text (button, _("Menu of special characters and graphics to insert at the cursor position")); g_signal_connect (button, "clicked", G_CALLBACK (popup_insert_menu), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Next Snippet")); gtk_widget_set_tooltip_text (button, _("Makes the next Snippet the one that can be pasted.\nTo see the music snippets you need to check View → Snippets\nThe one selected is in bold black.")); DenemoAction *action = denemo_menusystem_get_action ( "NextRhythm"); if (action) g_signal_connect_swapped (button, "clicked", G_CALLBACK (denemo_action_activate), action); else gtk_widget_set_sensitive (button, FALSE); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Selection")); gtk_widget_set_tooltip_text (button, _("Pops up a menu to apply some style to the selection.")); g_signal_connect (button, "clicked", G_CALLBACK (popup_style_menu), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label ("⬆"); gtk_widget_set_tooltip_text (button, _("Inserts the markup needed to leave space above this line of text. Ineffective on the top line of standalone text, instead drag such text in the Print View")); g_signal_connect (button, "clicked", G_CALLBACK (insert_vert), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Help")); gtk_widget_set_tooltip_text (button, instruction); g_signal_connect_swapped (button, "clicked", G_CALLBACK (warningdialog), instruction); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Preview")); gtk_widget_set_tooltip_text (button, _("Shows what the text will look like when typeset in the Print View window. For score and movement titles the appearance is correct only relative to the default title.")); g_signal_connect (button, "clicked", G_CALLBACK (preview_markup), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); gchar *text; if(format_only) text = g_strdup (initial_value); //anything else, just format the passed in string else text = string_dialog_editor_with_widget_opt (Denemo.project, title, NULL, initial_value, top_vbox, modal, keypress_callback);//this call attaches "textbuffer" to top_vbox if(TimerId) g_source_remove (TimerId); TimerId = 0; drop_markup_area (); if (text) { gchar *lilypond = create_lilypond_from_text (text); g_string_assign (user_text, text); g_string_assign (marked_up_text, lilypond); g_free (text); g_free (lilypond); return TRUE; } else return FALSE; } denemo-2.2.0/src/ui/PaxHeaders.19168/timedialog.c0000644000000000000000000000013213135434036016217 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.073315139 30 ctime=1500919914.339981805 denemo-2.2.0/src/ui/timedialog.c0000644000175000017500000002340113135434036020070 0ustar00jjbenhamjjbenham00000000000000/* timesigdialog.cpp * a callback that creates a dialog boxes prompting the * user for information on changing the time signature * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller */ #include #include #include #include #include "display/calculatepositions.h" #include "command/commandfuncs.h" #include "command/contexts.h" #include #include "ui/dialogs.h" #include "display/draw.h" #include "command/measure.h" #include "command/object.h" #include "command/staff.h" #include "core/utils.h" #include "core/cache.h" #include "command/select.h" /** * Is the integer a power of 2, or the value 1 * */ static gint ispow2 (gint x) { if (x < 1) return 0; for (; !(x & 1); x >>= 1) ; /* Go through all the low order bits that are equal to 0 */ return (x == 1); } /** * Set the timesig values for the given staff * */ static void settimesig (DenemoStaff * curstaffstruct, gint time1, gint time2) { curstaffstruct->timesig.time1 = time1; curstaffstruct->timesig.time2 = time2; staff_beams_and_stems_dirs (curstaffstruct); } /** * Set the initial timesig on current staff or across entire score * @param si pointer to the DenemoMovement structure. * @param curstaffstruct the staff to set the timesig for. * @param time1 the time signature nominator * @param time2 the time signature denominator * @param all_staves apply the new time signature to all staves * * @return None */ void dnm_setinitialtimesig (DenemoMovement * si, DenemoStaff * curstaffstruct, gint time1, gint time2, gboolean all_staves) { staffnode *curstaff; take_snapshot (); signal_structural_change (Denemo.project); if (time1 && time2 && ispow2 (time2)) { if (all_staves) { for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) { curstaffstruct = (DenemoStaff *) curstaff->data; settimesig (curstaffstruct, time1, time2); } find_leftmost_allcontexts (si); } else { settimesig (curstaffstruct, time1, time2); find_leftmost_staffcontext (curstaffstruct, si); } } displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Insert time sig change across the * entire score. */ static void insert_timesig (DenemoMovement * si, DenemoStaff * curstaffstruct, gint time1, gint time2) { staffnode *curstaff = NULL; measurenode *curmeasure = NULL; objnode *firstobj = NULL; DenemoObject *firstmudobj = NULL; gboolean replacing = FALSE; /* if we don't use this trick, anomalous * stuff can happen when replacing a time * signature */ take_snapshot (); for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) { if (((DenemoStaff *) curstaff->data)->is_parasite) continue; curmeasure = g_list_nth (staff_first_measure_node (curstaff), si->currentmeasurenum - 1); /* First, look to see if there already is a time signature change at the beginning of this measure. If so, delete it first. */ if (!curmeasure) continue; firstobj = measure_first_obj_node (curmeasure); if (firstobj) firstmudobj = (DenemoObject *) firstobj->data; else firstmudobj = NULL; if (firstmudobj && firstmudobj->type == TIMESIG) { replacing = TRUE; ((DenemoMeasure *)curmeasure->data)->objects = g_list_remove_link ((objnode *) ((DenemoMeasure *)curmeasure->data)->objects, firstobj); freeobject (firstmudobj); g_list_free_1 (firstobj); } DenemoObject *timesigobj = dnm_newtimesigobj (time1, time2); ((DenemoMeasure *)curmeasure->data)->objects = g_list_prepend ((objnode *) ((DenemoMeasure *)curmeasure->data)->objects, timesigobj); ((DenemoMeasure *)curmeasure->data)->timesig = ((DenemoObject*)((DenemoMeasure *)curmeasure->data)->objects->data)->object; timesigobj->clef = ((DenemoMeasure*)curmeasure->data)->clef; timesigobj->keysig = ((DenemoMeasure*)curmeasure->data)->keysig; timesigobj->stemdir = ((DenemoMeasure*)curmeasure->data)->stemdir; if (curmeasure == si->currentmeasure) { if (!replacing) si->cursor_x++; if (si->cursor_appending) si->currentobject = g_list_last ((objnode *) ((DenemoMeasure *)curmeasure->data)->objects); else si->currentobject = g_list_nth ((objnode *) ((DenemoMeasure *)curmeasure->data)->objects, si->cursor_x); } staff_beams_and_stems_dirs ((DenemoStaff *) curstaff->data); } } /** * Callback to insert a time sig change * Calls timesig_change with the INSERT argument */ void timesig_change_insert (DenemoAction * action, DenemoScriptParam * param) { GET_1PARAM (action, param, timesigname); DenemoProject *gui = Denemo.project; if (query) { draw_score (NULL); gchar *curtimesig = g_strdup_printf ("%d/%d", ((DenemoMeasure*)gui->movement->currentmeasure->data)->timesig->time1, ((DenemoMeasure*)gui->movement->currentmeasure->data)->timesig->time2); g_string_assign (param->string, curtimesig); g_free (curtimesig); param->status = TRUE; return; } if (timesigname == NULL) timesig_change (gui, INSERT); else { DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; gint time1, time2; sscanf (timesigname, "%d/%d", &time1, &time2); if (time1 && time2) { insert_timesig (gui->movement, curstaffstruct, time1, time2); param->status = TRUE; displayhelper (gui); } } } /** * Callback to change the initial time sig change * Calls timesig_change with the CHANGEINITIAL argument */ void timesig_change_initial (DenemoAction * action, DenemoScriptParam * param) { GET_1PARAM (action, param, timesigname); DenemoProject *gui = Denemo.project; if (query) { GList *curstaff = gui->movement->thescore; DenemoStaff *curstaffstruct = (DenemoStaff *) curstaff->data; gchar *curtimesig = g_strdup_printf ("%d/%d", curstaffstruct->timesig.time1, curstaffstruct->timesig.time2); g_string_assign (param->string, curtimesig); g_free (curtimesig); param->status = TRUE; return; } if (timesigname == NULL) timesig_change (gui, CHANGEINITIAL); else { DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; gint time1, time2; sscanf (timesigname, "%d/%d", &time1, &time2); if (time1 && time2) { dnm_setinitialtimesig (gui->movement, curstaffstruct, time1, time2, TRUE); param->status = TRUE; displayhelper (gui); } } } /** * Time sig change dialog. allows the user to set * the time signature to insert or change */ void timesig_change (DenemoProject * gui, actiontype action) { GtkWidget *dialog; GtkWidget *label; GtkWidget *textentry1; GtkWidget *textentry2; GtkWidget *checkbutton; DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; dialog = gtk_dialog_new_with_buttons (((action == CHANGEINITIAL) ? _("Change initial time signature") : _("Insert time signature change")), NULL, /* parent window */ (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_set_border_width (GTK_CONTAINER (content_area), 12); GtkWidget *vbox = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (content_area), vbox); label = gtk_label_new (_("Enter desired time signature:")); gtk_container_add (GTK_CONTAINER (vbox), label); textentry1 = gtk_spin_button_new_with_range (1, 128, 1.0); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (textentry1), 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (textentry1), (gdouble) curstaffstruct->timesig.time1); gtk_container_add (GTK_CONTAINER (vbox), textentry1); gtk_entry_set_activates_default (GTK_ENTRY (textentry1), TRUE); textentry2 = gtk_spin_button_new_with_range (1, 16, 1.0); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (textentry2), 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (textentry2), (gdouble) curstaffstruct->timesig.time2); gtk_container_add (GTK_CONTAINER (vbox), textentry2); gtk_entry_set_activates_default (GTK_ENTRY (textentry2), TRUE); checkbutton = gtk_check_button_new_with_label (_("Current Staff Only")); if (action == CHANGEINITIAL) // there is no code for changing keysig just in one staff, or at least none called here. gtk_container_add (GTK_CONTAINER (vbox), checkbutton); // gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), TRUE); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { gint time1 = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (textentry1)); gint time2 = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (textentry2)); gboolean all_staves = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton)); if (action == CHANGEINITIAL) { dnm_setinitialtimesig (gui->movement, curstaffstruct, time1, time2, all_staves); } else { if (gui->movement->currentobject && ((DenemoObject *) gui->movement->currentobject->data)->type == TIMESIG) deleteobject (NULL, NULL); insert_timesig (gui->movement, curstaffstruct, time1, time2); } displayhelper (gui); } score_status (gui, TRUE); gtk_widget_destroy (dialog); } denemo-2.2.0/src/ui/PaxHeaders.19168/playbackprops.c0000644000000000000000000000013213135434036016753 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.079981806 30 ctime=1500919914.326648472 denemo-2.2.0/src/ui/playbackprops.c0000644000175000017500000000721413135434036020630 0ustar00jjbenhamjjbenham00000000000000/* playbackprops.c * callback that creates a "Playback Properties" dialog box asking * the user to change the properties of the playback for the current * score * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Adam Tee, Matthew Hiller */ #include #include #include #include "core/utils.h" #include "core/prefops.h" struct callbackdata { GtkWidget *tempo; GtkWidget *checkplayback; }; static void set_preferences (struct callbackdata *cbdata) { DenemoPrefs *prefs = &Denemo.prefs; #define ASSIGNTEXT(field) \ g_string_assign (prefs->field,\ gtk_entry_get_text (GTK_ENTRY (cbdata->field))); #define ASSIGNBOOLEAN(field) \ prefs->field =\ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(cbdata->field)); #define ASSIGNINT(field) \ prefs->field =\ gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(cbdata->field)); Denemo.project->movement->tempo = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (cbdata->tempo)); writeXMLPrefs (prefs); } void playback_properties_change (GtkAction * action, DenemoScriptParam* param) { DenemoProject *gui = Denemo.project; GtkWidget *dialog; GtkWidget *label; GtkWidget *hbox; GtkWidget *main_vbox; GtkWidget *notebook; static struct callbackdata cbdata; dialog = gtk_dialog_new_with_buttons (_("Playback properties"), NULL, (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); //gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); notebook = gtk_notebook_new (); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), notebook); #define NEWPAGE(thelabel) \ main_vbox = gtk_vbox_new (FALSE, 1);\ gtk_notebook_append_page (GTK_NOTEBOOK (notebook), main_vbox, NULL);\ gtk_notebook_set_tab_label_text (GTK_NOTEBOOK (notebook), main_vbox,\ _(thelabel)); #define BOOLEANENTRY(thelabel, field) \ GtkWidget *field =\ gtk_check_button_new_with_label (thelabel); \ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (field),\ (gboolean)Denemo.prefs.field);\ gtk_box_pack_start (GTK_BOX (main_vbox), field, FALSE, TRUE, 0);\ cbdata.field = field; #define TEXTENTRY(thelabel, field) \ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (_(thelabel));\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ GtkWidget *field = gtk_entry_new ();\ gtk_entry_set_text (GTK_ENTRY (field), Denemo.prefs.field->str);\ gtk_box_pack_start (GTK_BOX (hbox), field, TRUE, TRUE, 0);\ cbdata.field = field; #define INTENTRY_LIMITS(thelabel, field, min, max) \ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (thelabel);\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ GtkWidget *field = gtk_spin_button_new_with_range (min, max, 1.0);\ gtk_spin_button_set_value (GTK_SPIN_BUTTON (field), gui->movement->field);\ gtk_box_pack_start (GTK_BOX (hbox), field, FALSE, FALSE, 0);\ cbdata.field = field; NEWPAGE ("Playback") INTENTRY_LIMITS ("Tempo", tempo, 10, 250); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { set_preferences (&cbdata); } gtk_widget_destroy (dialog); } denemo-2.2.0/src/ui/PaxHeaders.19168/mousing.h0000644000000000000000000000013213135434036015567 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.089981805 30 ctime=1500919914.313315139 denemo-2.2.0/src/ui/mousing.h0000644000175000017500000000212413135434036017437 0ustar00jjbenhamjjbenham00000000000000/* mousing.h header for functions that handle mouse clicks, drags, etc. for Denemo, a gtk+ frontend to GNU Lilypond (c) 2000-2005, 2008 Matthew Hiller, Richard Shann */ #ifndef MOUSING_H #define MOUSING_H gint scorearea_button_release (GtkWidget * widget, GdkEventButton * event); gint scorearea_button_press (GtkWidget * widget, GdkEventButton * event); gint scorearea_motion_notify (GtkWidget * widget, GdkEventButton * event); gint scorearea_scroll_event (GtkWidget * widget, GdkEventScroll * event); gint scorearea_leave_event (GtkWidget * widget, GdkEventCrossing * event); gint scorearea_enter_event (GtkWidget * widget, GdkEventCrossing * event); typedef enum mouse_gesture { GESTURE_PRESS, GESTURE_RELEASE, GESTURE_MOVE } mouse_gesture; GString *mouse_shortcut_name (gint mod, mouse_gesture gesture, gboolean left); void append_modifier_name (GString * ret, gint mod); void assign_cursor (guint state, guint cursor_num); void set_cursor_for (guint state); #define DENEMO_NUMBER_MODIFIERS (8) /* built in to GDK for GdkModifierType */ #define DENEMO_MODIFIER_MASK (255) #endif denemo-2.2.0/src/ui/PaxHeaders.19168/moveviewport.c0000644000000000000000000000013213135434036016647 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.089981805 30 ctime=1500919914.316648472 denemo-2.2.0/src/ui/moveviewport.c0000644000175000017500000003346013135434036020526 0ustar00jjbenhamjjbenham00000000000000/* moveviewport.c * functions that change leftmeasurenum, rightmeasurenum, top_measure, * bottom_measure * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller */ #include "command/commandfuncs.h" #include "command/contexts.h" #include "ui/moveviewport.h" #include "command/staff.h" #include "core/utils.h" #include "display/displayanimation.h" #include "display/draw.h" #include "command/select.h" /** * update_hscrollbar should be called as a cleanup whenever * si->leftmeasurenum or si->rightmeasurenum may have been altered, * e.g., by preceding calls to set_rightmeasurenum; or when the * number of measures may have changed. */ void update_hscrollbar (DenemoProject * gui) { if(Denemo.non_interactive) return; GtkAdjustment *adj = GTK_ADJUSTMENT (Denemo.hadjustment); gdouble upper = g_list_length (gui->movement->measurewidths) + 1.0, page_size = gui->movement->rightmeasurenum - gui->movement->leftmeasurenum + 1.0; gdouble left = gtk_adjustment_get_value (adj); gtk_adjustment_set_upper (adj, upper); gtk_adjustment_set_page_size (adj, page_size); gtk_adjustment_set_page_increment (adj, page_size); gtk_adjustment_set_value (adj, gui->movement->leftmeasurenum); //gtk_adjustment_changed (adj); //g_debug("steps %d Difference %d\n",transition_steps, (gint)(left-gui->movement->leftmeasurenum)); set_viewport_transition ((gint) (gui->movement->leftmeasurenum) - left); } /** * update_vscrollbar should be called as a cleanup whenever * si->top_staff or si->bottom_staff may have been altered, * e.g., by preceding calls to set_bottom_staff; or when the number of * staffs may have changed. * * For simplicity, this function treats nonprimary voices as * full-fledged staffs, which'll be visually confusing. I'll fix it * soon. */ void update_vscrollbar (DenemoProject * gui) { if(Denemo.non_interactive) return; GtkAdjustment *adj = GTK_ADJUSTMENT (Denemo.vadjustment); gtk_adjustment_set_upper (adj, g_list_length (gui->movement->thescore) + 1.0); gtk_adjustment_set_page_size (adj, gui->movement->bottom_staff - gui->movement->top_staff + 1.0); gtk_adjustment_set_page_increment (adj, gui->movement->bottom_staff - gui->movement->top_staff + 1.0); gtk_adjustment_set_value (adj, gui->movement->top_staff); //gtk_adjustment_changed (adj); //gtk_range_slider_update (GTK_RANGE (Denemo.vscrollbar)); } /** * Sets the si->rigthmeasurenum to use * all the space si->widthtoworkwith assuming si->leftmeasurenum, as determined by the si->measurewidths * returns TRUE if si->rightmeasurenum is changed */ gboolean set_rightmeasurenum (DenemoMovement * si) { gint initial = si->rightmeasurenum; gint spaceleft = si->widthtoworkwith; GList *mwidthiterator = g_list_nth (si->measurewidths, si->leftmeasurenum - 1); for (si->rightmeasurenum = si->leftmeasurenum; mwidthiterator && spaceleft >= GPOINTER_TO_INT (mwidthiterator->data); spaceleft -= (GPOINTER_TO_INT (mwidthiterator->data) + SPACE_FOR_BARLINE), mwidthiterator = mwidthiterator->next, si->rightmeasurenum++) ; si->rightmeasurenum = MAX (si->rightmeasurenum - 1, si->leftmeasurenum); return initial != si->rightmeasurenum; } /** * Utility function for advancing a staff number and staff iterator to * the next primary voice, or to one off the end and NULL if there are * none remaining. */ static void to_next_primary_voice (gint * staff_number, staffnode ** staff_iterator) { if(!staff_iterator) return; do { (*staff_number)++; *staff_iterator = (*staff_iterator)->next; } while (*staff_iterator && !((DenemoStaff *) (*staff_iterator)->data)->voicecontrol & DENEMO_PRIMARY); } /** * This function also has a side effect of bumping si->top_staff * up to the staff number of the next primary voice if si->top_staff * initially points to a nonprimary voice. */ void set_bottom_staff (DenemoProject * gui) { if(Denemo.non_interactive) return; gint space_left; staffnode *staff_iterator; gint staff_number; /* Bump up si->top_staff, if necessary. */ staff_iterator = g_list_nth (gui->movement->thescore, gui->movement->top_staff - 1); if (!staff_iterator) {gui->movement->top_staff = 1;g_critical ("Bad top staff number %d",gui->movement->top_staff); return;}//g_assert (staff_iterator); if (!((DenemoStaff *) staff_iterator->data)->voicecontrol & DENEMO_PRIMARY) to_next_primary_voice (&gui->movement->top_staff, &staff_iterator); /* With that settled, now determine how many additional (primary) staves will fit into the window. */ staff_number = gui->movement->top_staff; space_left = get_widget_height (Denemo.scorearea) * gui->movement->system_height / gui->movement->zoom; // space_left -= 2*LINE_SPACE; do { DenemoStaff *staff = staff_iterator->data; if(!staff->hidden) space_left -= (staff->space_above -staff->space_shorten + staff->space_below + gui->movement->staffspace); //2*STAFF_HEIGHT); to_next_primary_voice (&staff_number, &staff_iterator); } while (staff_iterator && space_left >= 0); if (space_left < 0 && staff_number > (gui->movement->top_staff + 1)) staff_number--; gui->movement->bottom_staff = staff_number - 1; } /** * inverse of the below * */ void isoffleftside (DenemoProject * gui) { if (gui->movement->currentmeasurenum == 0) gui->movement->currentmeasurenum = 1; if (gui->movement->currentmeasurenum >= gui->movement->leftmeasurenum) return; while (gui->movement->currentmeasurenum < gui->movement->leftmeasurenum) { gui->movement->leftmeasurenum -= MAX ((gui->movement->rightmeasurenum - gui->movement->leftmeasurenum + 1) / 2, 1); if (gui->movement->leftmeasurenum < 1) gui->movement->leftmeasurenum = 1; set_rightmeasurenum (gui->movement); } find_leftmost_allcontexts (gui->movement); if(!Denemo.non_interactive) update_hscrollbar (gui); } /** * Advance the leftmeasurenum until currentmeasurenum is before rightmeasurenum * then adjust rightmeasurenum to match. */ void isoffrightside (DenemoProject * gui) { if (gui->movement->currentmeasurenum <= gui->movement->rightmeasurenum) return; while (gui->movement->currentmeasurenum > gui->movement->rightmeasurenum) { gui->movement->leftmeasurenum += MAX ((gui->movement->rightmeasurenum - gui->movement->leftmeasurenum + 1) / 2, 1); set_rightmeasurenum (gui->movement); } find_leftmost_allcontexts (gui->movement); if(!Denemo.non_interactive) update_hscrollbar (gui); } /** * Move the viewable part of the score up * */ void move_viewport_up (DenemoProject * gui) { if(Denemo.non_interactive) return; staffnode *staff_iterator; staff_iterator = g_list_nth (gui->movement->thescore, gui->movement->top_staff - 1); while (gui->movement->currentstaffnum < gui->movement->top_staff || !((DenemoStaff *) staff_iterator->data)->voicecontrol & DENEMO_PRIMARY) { gui->movement->top_staff--; staff_iterator = staff_iterator->prev; } set_bottom_staff (gui); update_vscrollbar (gui); } static void center_viewport (void) { Denemo.project->movement->leftmeasurenum = Denemo.project->movement->currentmeasurenum - (Denemo.project->movement->rightmeasurenum - Denemo.project->movement->leftmeasurenum) / 2; if (Denemo.project->movement->leftmeasurenum < 1) Denemo.project->movement->leftmeasurenum = 1; } void page_viewport (void) { gdouble value, upper; GtkAdjustment *adj = GTK_ADJUSTMENT (Denemo.hadjustment); //g_debug("%d %d\n", Denemo.project->movement->leftmeasurenum, Denemo.project->movement->rightmeasurenum); gint amount = (Denemo.project->movement->rightmeasurenum - Denemo.project->movement->leftmeasurenum + 1); value = gtk_adjustment_get_value (adj); upper = gtk_adjustment_get_upper (adj); if (value + amount < upper) { gtk_adjustment_set_value (adj, value + amount); } else gtk_adjustment_set_value (adj, upper - 1); } /** * Move viewable part of the score down * */ void move_viewport_down (DenemoProject * gui) { if(Denemo.non_interactive) return; staffnode *staff_iterator; staff_iterator = g_list_nth (gui->movement->thescore, gui->movement->top_staff - 1); while (gui->movement->currentstaffnum > gui->movement->bottom_staff) { to_next_primary_voice (&gui->movement->top_staff, &staff_iterator); set_bottom_staff (gui); } update_vscrollbar (gui); } /** * Sets the si->currentmeasurenum to the given value * if exists, making it the leftmost measure visible, not extending selection * */ static gboolean goto_currentmeasurenum (gint dest, gint leftmeasurenum) { DenemoProject *gui = Denemo.project; if ((dest > 0) && (dest <= (gint) (g_list_length (gui->movement->measurewidths)))) { //gui->movement->leftmeasurenum = dest; gui->movement->currentmeasurenum = dest; if(leftmeasurenum) gui->movement->leftmeasurenum = leftmeasurenum; set_rightmeasurenum (gui->movement); if ((dest < gui->movement->leftmeasurenum) || (dest > gui->movement->rightmeasurenum)) center_viewport (); setcurrents (gui->movement); set_rightmeasurenum (gui->movement); find_leftmost_allcontexts (gui->movement); if(!Denemo.non_interactive) update_hscrollbar (gui); draw_score_area(); return TRUE; } return FALSE; } /** * Sets the si->currentmeasurenum to the given value * if exists, making it centered in the viewport if not already in view. * */ gboolean set_currentmeasurenum (DenemoProject * gui, gint dest) { return goto_currentmeasurenum (dest, 0); } /** * Sets the si->currentmeasurenum to the given value * if exists, making it the leftmeasure the leftmost measure visible if possible otherwise centering on the viewport * */ gboolean moveto_currentmeasurenum (DenemoProject * gui, gint dest, gint leftmeasurenum) { return goto_currentmeasurenum (dest, leftmeasurenum); } /** * Sets the si->currentstaffnum to the given value * if it exists, extending selection if extend_selection * */ gboolean goto_currentstaffnum (DenemoProject * gui, gint dest, gboolean extend_selection) { if ((dest > 0) && (dest <= (gint) (g_list_length (gui->movement->thescore)))) { //hide_lyrics(); cannot do this here, the lyrics pane when clicked on adjusts the current staff, and so this unselects the lyrics pane. gui->movement->currentstaffnum = dest; gui->movement->currentstaff = g_list_nth (gui->movement->thescore, gui->movement->currentstaffnum - 1); staff_set_current_primary (gui->movement); setcurrents (gui->movement); if (extend_selection) calcmarkboundaries (gui->movement); find_leftmost_allcontexts (gui->movement); if(!Denemo.non_interactive) update_vscrollbar (gui); //show_lyrics(); draw_score_area(); return TRUE; } return FALSE; } /** * Sets the si->currentstaffnum to the given value * if it exists * */ gboolean set_currentstaffnum (DenemoProject * gui, gint dest) { return goto_currentstaffnum (gui, dest, TRUE); } gboolean moveto_currentstaffnum (DenemoProject * gui, gint dest) { return goto_currentstaffnum (gui, dest, FALSE); } /** * Scroll the score vertically * */ void vertical_scroll (GtkAdjustment * adjust, gpointer dummy) { DenemoProject *gui = Denemo.project; gint dest; gdouble value = gtk_adjustment_get_value (adjust); if ((dest = (gint) (value + 0.5)) != gui->movement->top_staff) { gui->movement->top_staff = dest; // while(gui->movement->top_staff>g_list_length (gui->movement->thescore)) // gui->movement->top_staff--; set_bottom_staff (gui); if (gui->movement->currentstaffnum > gui->movement->bottom_staff) { gui->movement->currentstaffnum = gui->movement->bottom_staff; gui->movement->currentstaff = g_list_nth (gui->movement->thescore, gui->movement->bottom_staff - 1); staff_set_current_primary (gui->movement); setcurrents (gui->movement); if (gui->movement->markstaffnum) calcmarkboundaries (gui->movement); } else if (gui->movement->currentstaffnum < gui->movement->top_staff) { gui->movement->currentstaffnum = gui->movement->top_staff; gui->movement->currentstaff = g_list_nth (gui->movement->thescore, gui->movement->top_staff - 1); staff_set_current_primary (gui->movement); setcurrents (gui->movement); if (gui->movement->markstaffnum) calcmarkboundaries (gui->movement); } draw_score_area(); } update_vscrollbar (gui); } /** * Scroll score horizontally * */ static void h_scroll (gdouble value, DenemoProject * gui) { gint dest; if ((dest = (gint) (value + 0.5)) != gui->movement->leftmeasurenum) { set_viewport_transition (dest - gui->movement->leftmeasurenum); gui->movement->leftmeasurenum = dest; set_rightmeasurenum (gui->movement); if (gui->movement->currentmeasurenum > gui->movement->rightmeasurenum) { gui->movement->currentmeasurenum = gui->movement->rightmeasurenum; } else if (gui->movement->currentmeasurenum < gui->movement->leftmeasurenum) { gui->movement->currentmeasurenum = gui->movement->leftmeasurenum; } find_leftmost_allcontexts (gui->movement); setcurrents (gui->movement); draw_score_area(); } update_hscrollbar (gui); } void horizontal_scroll (GtkAdjustment * adjust, gpointer dummy) { DenemoProject *gui = Denemo.project; gdouble value = gtk_adjustment_get_value (adjust); h_scroll (value, gui); } void scroll_left (void) { if (Denemo.project->movement->leftmeasurenum > 1) h_scroll (Denemo.project->movement->leftmeasurenum - 1.0, Denemo.project); } void scroll_right (void) { if (Denemo.project->movement->leftmeasurenum < g_list_length (Denemo.project->movement->measurewidths)) h_scroll (Denemo.project->movement->leftmeasurenum + 1.0, Denemo.project); } denemo-2.2.0/src/ui/PaxHeaders.19168/markup.h0000644000000000000000000000013213135434036015405 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.109981805 30 ctime=1500919914.346648472 denemo-2.2.0/src/ui/markup.h0000644000175000017500000000067413135434036017265 0ustar00jjbenhamjjbenham00000000000000/* markup.h * dialog for getting markup from user * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2015 Richard Shann */ #ifndef MARKUP_H #define MARKUP_H //returns user's text and formatted lilypond markuo for that text gboolean get_user_markup (GString *text, GString *lilypond, gchar* title, char *instruction, gchar *initial_value, gboolean not_modal, gboolean format_only); gboolean run_preview (GtkWidget *textbuffer); #endif denemo-2.2.0/src/ui/PaxHeaders.19168/texteditors.c0000644000000000000000000000013213135434036016457 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.109981805 30 ctime=1500919914.336648472 denemo-2.2.0/src/ui/texteditors.c0000644000175000017500000005414313135434036020337 0ustar00jjbenhamjjbenham00000000000000/* texteditors.c * text editors for editing scripts, adding comments etc * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2009 Richard Shann * */ #include #include #include #include #include #if GTK_MAJOR_VERSION==3 #include //FIXME Look for something more gtk3 like #else #include #endif #include #include "ui/texteditors.h" #include "core/view.h" #include "scripting/scheme-callbacks.h" #include "core/menusystem.h" static void find_cb (DenemoAction * action, gpointer user_data); static void replace_cb (DenemoAction * action, gpointer user_data); /* returns newly allocated string containing current Scheme in the script_view caller must free */ gchar * get_script_view_text (void) { GtkTextIter startiter, enditer; GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (Denemo.script_view)); gtk_text_buffer_get_start_iter (buffer, &startiter); gtk_text_buffer_get_end_iter (buffer, &enditer); return gtk_text_buffer_get_text (buffer, &startiter, &enditer, FALSE); } /* create a palette button for the script that is in the Scheme script window */ void createButton (void) { gchar *text = Denemo.project->script; if(text && *text) { DenemoPalette *pal = NULL; gchar *name = choose_palette_by_name (TRUE, FALSE); if (name) pal = create_palette (name, FALSE, TRUE); if(pal) { gchar *button_name = _("My Script"); gchar *label = string_dialog_entry (Denemo.project, _("Palette Button Creation"), _("Give a (unique) name for the button"), button_name); if (label) { if (!palette_add_button (pal, label, _("Creates a button for the script"), text)) warningdialog (_("Could not create a button of that name in that palette")); } else warningdialog (_("Cancelled")); g_free (label); gtk_widget_show_all (gtk_widget_get_parent(pal->box)); } } else g_warning (_("Empty scheme script")); } /* execute the script that is in the Scheme script window */ void executeScript (void) { gchar *text = Denemo.project->script; if(text && *text) { g_debug ("Calling script %s\n", text); stage_undo (Denemo.project->movement, ACTION_STAGE_END); //undo is a queue so this is the end :) (void) call_out_to_guile (text); stage_undo (Denemo.project->movement, ACTION_STAGE_START); } else g_warning ("Trying to execute empty scheme script"); } /* execute the line of scheme script that is in the Scheme CLI */ void executeCLI (GtkWidget * button, GtkEntry * entry) { gchar *display = NULL; if (entry) { display = g_strdup_printf ("%s%s%s", "(format #t \"~%=> ~A~%\"", gtk_entry_get_text (entry), ")\n"); //g_debug("displaying %s\n", display); (void) call_out_to_guile (display); g_free (display); } else g_critical ("entry is NULL!!!!"); } /* Return number of characters in Scheme script */ //TODO: Avoid to use gtk widgets for this since it can be used in non //interactive mode. gint getNumCharsSchemeText (void) { GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (Denemo.script_view)); return gtk_text_buffer_get_char_count (buffer); } void deleteSchemeText (void) { if(!Denemo.non_interactive){ GtkTextIter startiter, enditer; GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (Denemo.script_view)); gtk_text_buffer_get_start_iter (buffer, &startiter); gtk_text_buffer_get_end_iter (buffer, &enditer); gtk_text_buffer_delete (buffer, &startiter, &enditer); } g_free(Denemo.project->script); Denemo.project->script = NULL; Denemo.project->has_script = FALSE; } void appendSchemeText (gchar * text) { if(!Denemo.non_interactive){ GtkTextIter enditer; GtkTextBuffer *buffer = gtk_text_view_get_buffer ((GtkTextView *) (Denemo.script_view)); gtk_text_buffer_get_end_iter (buffer, &enditer); while (g_ascii_isspace (*text)) text++; gtk_text_buffer_insert (buffer, &enditer, text, -1); } else{ if(Denemo.project->script){ gchar* old_script = Denemo.project->script; Denemo.project->script = g_strconcat(old_script, text, NULL); g_free(old_script); } else Denemo.project->script = text; } } static gint hide_scheme (DenemoAction * action, GdkEvent * event, GtkWidget * w) { if(Denemo.ScriptRecording) { denemo_action_activate (denemo_menusystem_get_action (RecordScript_STRING)); infodialog(_("Turning off Recording scheme")); } set_toggle (ToggleScript_STRING, FALSE);// toggle_scheme ();//activate_action ("ToggleScript"); return TRUE; } static void save_scheme_text_as (GtkWidget * widget, GtkWidget * textview) { gchar **pfilename = g_object_get_data (G_OBJECT (textview), "pfilename"); gchar *text = get_script_view_text (); GtkWidget *label; GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (Denemo.script_view)); GtkWidget *dialog = gtk_file_chooser_dialog_new (_("Save Scheme Text as..."), NULL /*GTK_WINDOW(gtk_text_view_get_window(GTK_TEXT_VIEW(Denemo.script_view), GTK_TEXT_WINDOW_WIDGET)) */ , GTK_FILE_CHOOSER_ACTION_SAVE, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Save"), GTK_RESPONSE_OK, NULL); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { g_free (*pfilename); *pfilename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); if (g_file_test (*pfilename, G_FILE_TEST_EXISTS)) { gtk_widget_destroy (dialog); dialog = gtk_dialog_new_with_buttons (_("File already exists"), //FIXME I think there is a function to do this already. NULL /*GTK_WINDOW(gtk_text_view_get_window(GTK_TEXT_VIEW(Denemo.script_view), GTK_TEXT_WINDOW_WIDGET)) */ , GTK_DIALOG_DESTROY_WITH_PARENT, _("_OK"), GTK_RESPONSE_OK, _("_Cancel"), GTK_RESPONSE_CANCEL, NULL); gchar* labeltext = g_strdup_printf(_("The file %s already exists.\nDo you want to overwrite it?"), *pfilename); label = gtk_label_new (labeltext); g_free (labeltext); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), label); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_CANCEL) { g_free (text); gtk_widget_destroy (dialog); return; } } g_file_set_contents (*pfilename, text, -1, NULL); gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (buffer), FALSE); } g_free (text); gtk_widget_destroy (dialog); } static void save_scheme_text (GtkWidget * widget, GtkWidget * textview) { gchar **pfilename = g_object_get_data (G_OBJECT (textview), "pfilename"); GtkTextBuffer *buffer; if (*pfilename == NULL) save_scheme_text_as (NULL, textview); else { gchar *text = get_script_view_text (); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (Denemo.script_view)); g_file_set_contents (*pfilename, text, -1, NULL); gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (buffer), FALSE); g_free (text); } } gboolean save_scheme_dialog (GtkTextBuffer * buffer, GtkWidget * textview) { gchar **pfilename = g_object_get_data (G_OBJECT (textview), "pfilename"); GtkWidget *dialog; GtkWidget *label; gint response; GtkWidget *content_area; if (gtk_text_buffer_get_modified (buffer)) { dialog = gtk_dialog_new_with_buttons (_("Scheme text changed"), NULL /*GTK_WINDOW(gtk_text_view_get_window(GTK_TEXT_VIEW(Denemo.script_view), GTK_TEXT_WINDOW_WIDGET)) */ , GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_YES, GTK_RESPONSE_YES, GTK_STOCK_NO, GTK_RESPONSE_NO, _("_Cancel"), GTK_RESPONSE_CANCEL, NULL); if (*pfilename == NULL) label = gtk_label_new (_("\nDo you want to save the changes in a new file?\n\n")); else { gchar* labeltext = g_strdup_printf(_("\nDo you want to save the changes in %s ?\n\n"), *pfilename); label = gtk_label_new (labeltext); g_free (labeltext); } content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), label); gtk_widget_show_all (dialog); response = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); if (response == GTK_RESPONSE_YES) save_scheme_text (NULL, textview); else if (response == GTK_RESPONSE_CANCEL) return FALSE; } return TRUE; } static void load_scheme_from_file (GtkWidget * widget, GtkWidget * textview) { gchar **pfilename = g_object_get_data (G_OBJECT (textview), "pfilename"); gchar *text = NULL; GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (Denemo.script_view)); GtkWidget *dialog = gtk_file_chooser_dialog_new (_("Open File"), NULL /*GTK_WINDOW(gtk_text_view_get_window(GTK_TEXT_VIEW(Denemo.script_view),GTK_TEXT_WINDOW_WIDGET)) */ , GTK_FILE_CHOOSER_ACTION_OPEN, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Open"), GTK_RESPONSE_OK, NULL); if (!save_scheme_dialog (buffer, textview)) { return; } if (gtk_dialog_run ((GTK_DIALOG (dialog))) == GTK_RESPONSE_OK) { if (*pfilename) g_free (*pfilename); *pfilename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); g_file_get_contents (*pfilename, &text, NULL, NULL); gtk_text_buffer_set_text (GTK_TEXT_BUFFER (buffer), text, -1); gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (buffer), FALSE); } g_free (text); gtk_widget_destroy (dialog); } void clear_scheme_window (GtkWidget * widget, GtkWidget * textview) { gchar **pfilename = g_object_get_data (G_OBJECT (textview), "pfilename"); GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (Denemo.script_view)); if (!save_scheme_dialog (buffer, textview)) return; g_free (*pfilename); *pfilename = NULL; gtk_text_buffer_set_text (GTK_TEXT_BUFFER (buffer), "", 0); gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (buffer), FALSE); } static gboolean keypress (GtkEntry * w, GdkEventKey * event) { if (event->keyval == GDK_Return) executeCLI (NULL, w); //let the normal handler have the keypress return FALSE; } static void scheme_changed_cb (GtkSourceBuffer *buffer){ if(Denemo.project->script) g_free(Denemo.project->script); Denemo.project->script = get_script_view_text(); } static void toggle_record_script (DenemoAction * action, gpointer param) { if (!gtk_widget_get_visible (gtk_widget_get_toplevel (Denemo.script_view))) toggle_scheme (); Denemo.ScriptRecording = !Denemo.ScriptRecording; } /* create_editor_window() create a text window for editing Scheme */ static GtkWidget * create_editor_window (void) { GtkWidget *TextView; GtkSourceBuffer *buffer; GtkSourceLanguageManager *LanguageManager = gtk_source_language_manager_get_default (); //GtkWidget *w = gtk_window_new(GTK_WINDOW_TOPLEVEL); GtkWidget *menu, *menuBar, *fileMenu, *item; gchar **filename = g_malloc0 (sizeof (gchar *)); GtkSourceLanguage* language = NULL; buffer = gtk_source_buffer_new (NULL); g_signal_connect (G_OBJECT (buffer), "changed", G_CALLBACK (scheme_changed_cb), NULL); gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (buffer), TRUE); language = gtk_source_language_manager_get_language (LanguageManager, "scheme"); gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (buffer), language); gtk_source_buffer_set_highlight_matching_brackets (GTK_SOURCE_BUFFER (buffer), TRUE); TextView = GTK_WIDGET (gtk_source_view_new_with_buffer (GTK_SOURCE_BUFFER (buffer))); g_object_set_data (G_OBJECT (TextView), "pfilename", filename); gtk_source_view_set_show_line_numbers (GTK_SOURCE_VIEW (TextView), TRUE); gtk_source_view_set_auto_indent (GTK_SOURCE_VIEW (TextView), TRUE); gtk_source_view_set_indent_on_tab (GTK_SOURCE_VIEW (TextView), TRUE); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (TextView), GTK_WRAP_CHAR); GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL); GtkWidget *w = window; gtk_window_set_title (GTK_WINDOW (w), _("Denemo Scheme Script")); //gtk_window_set_resizable (GTK_WINDOW (w), TRUE); g_signal_connect (G_OBJECT (w), "delete-event", G_CALLBACK (hide_scheme /*gtk_widget_hide_on_delete */ ), w); GtkWidget *main_vbox = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (w), main_vbox); GtkWidget *hbox = gtk_hbox_new (FALSE, 1); w = gtk_button_new_with_label ("CLI: "); gtk_widget_set_tooltip_text (w, _( "A Scheme command line interface. Type an expression here and press Enter to evaluate and display the result in the terminal. (On windows, use denemo-console.exe to get a terminal)")); GtkWidget *button = w; //gtk_widget_set_can_default(w, TRUE); //GTK_WIDGET_SET_FLAGS(window, GTK_CAN_DEFAULT); //gtk_window_set_default (window, w); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, TRUE, 0); w = gtk_entry_new (); GtkWidget *entry = w; //gtk_entry_set_activates_default (w,TRUE); gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (executeCLI), entry); g_signal_connect (G_OBJECT (entry), "key-press-event", G_CALLBACK (keypress), NULL); GtkWidget *inner_hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (main_vbox), inner_hbox, FALSE, TRUE, 0); w = gtk_button_new_with_label (_("Execute Script")); gtk_widget_set_tooltip_text (w, _("Executes the Scheme in the script window below. If an error is thrown this will give a message in the terminal.")); g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (executeScript), NULL); gtk_box_pack_start (GTK_BOX (inner_hbox), w, FALSE, FALSE, 0); w = gtk_button_new_with_label (_("Create Button")); gtk_widget_set_tooltip_text (w, _("Create a palette button for the Scheme in the script window below.")); g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (createButton), NULL); gtk_box_pack_start (GTK_BOX (inner_hbox), w, FALSE, FALSE, 0); menu = gtk_menu_new (); item = gtk_menu_item_new_with_label (_("New")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (clear_scheme_window), (gpointer) TextView); item = gtk_menu_item_new_with_label (_("Open")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (load_scheme_from_file), (gpointer) TextView); item = gtk_menu_item_new_with_label (_("Save")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (save_scheme_text), (gpointer) TextView); item = gtk_menu_item_new_with_label (_("Save as…")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (save_scheme_text_as), (gpointer) TextView); item = gtk_menu_item_new_with_label (_("Find")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (find_cb), (gpointer) TextView); item = gtk_menu_item_new_with_label (_("Replace")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (replace_cb), (gpointer) TextView); fileMenu = gtk_menu_item_new_with_label (_("File")); gtk_widget_show (fileMenu); gtk_menu_item_set_submenu (GTK_MENU_ITEM (fileMenu), menu); gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (buffer), FALSE); menuBar = gtk_menu_bar_new (); gtk_box_pack_start (GTK_BOX (main_vbox), menuBar, FALSE, FALSE, 0); gtk_widget_show (menuBar); gtk_menu_shell_append (GTK_MENU_SHELL (menuBar), fileMenu); inner_hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (main_vbox), inner_hbox, FALSE, FALSE, 0); GtkWidget *wid = gtk_check_button_new_with_label (_("Record Scheme Script")); gtk_widget_set_tooltip_text (wid, _("Start recording commands into the Scheme script text window")); g_signal_connect (G_OBJECT (wid), "toggled", G_CALLBACK (toggle_record_script), NULL); gtk_box_pack_start (GTK_BOX (inner_hbox), wid, FALSE, FALSE, 0); GtkWidget *sw = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (main_vbox), sw, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER (sw), TextView); return TextView; } void create_scheme_window (void) { Denemo.script_view = create_editor_window (); } /* Buffer action callbacks ------------------------------------------------------------ */ #if GTK_MAJOR_VERSION==3 static struct { char *what; char *replacement; GtkTextSearchFlags flags; } search_data = { NULL, NULL, GTK_TEXT_SEARCH_TEXT_ONLY}; #else static struct { char *what; char *replacement; GtkSourceSearchFlags flags; } search_data = { NULL, NULL, GTK_SOURCE_SEARCH_CASE_INSENSITIVE}; #endif #if GTK_MAJOR_VERSION==3 static gboolean search_dialog (GtkWidget * widget, gboolean replace, char **what_p, char **replacement_p, GtkTextSearchFlags * flags_p) #else static gboolean search_dialog (GtkWidget * widget, gboolean replace, char **what_p, char **replacement_p, GtkSourceSearchFlags * flags_p) #endif { GtkWidget *dialog; GtkEntry *entry1, *entry2; dialog = gtk_dialog_new_with_buttons (replace ? _("Replace") : _("Find"), GTK_WINDOW (gtk_widget_get_toplevel (widget)), GTK_DIALOG_MODAL, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_OK"), GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); entry1 = g_object_new (GTK_TYPE_ENTRY, "visible", TRUE, "text", search_data.what ? search_data.what : "", "activates-default", TRUE, NULL); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); GtkWidget *vbox = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (content_area), vbox); gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (entry1), TRUE, TRUE, 0); entry2 = g_object_new (GTK_TYPE_ENTRY, "visible", replace, "text", search_data.replacement ? search_data.replacement : "", "activates-default", TRUE, NULL); gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (entry2), TRUE, TRUE, 0); #if GTK_MAJOR_VERSION==2 GtkToggleButton *case_sensitive; case_sensitive = g_object_new (GTK_TYPE_CHECK_BUTTON, "visible", TRUE, "label", "Case sensitive", "active", !(search_data.flags & GTK_SOURCE_SEARCH_CASE_INSENSITIVE), NULL); gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (case_sensitive), FALSE, FALSE, 0); #endif gtk_widget_show_all (dialog); while (TRUE) { if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_OK) { gtk_widget_destroy (dialog); return FALSE; } if (*gtk_entry_get_text (entry1)) break; } g_free (search_data.what); *what_p = search_data.what = g_strdup (gtk_entry_get_text (entry1)); g_free (search_data.replacement); *replacement_p = search_data.replacement = g_strdup (gtk_entry_get_text (entry2)); #if GTK_MAJOR_VERSION==2 *flags_p = search_data.flags = gtk_toggle_button_get_active (case_sensitive) ? 0 : GTK_SOURCE_SEARCH_CASE_INSENSITIVE; #endif gtk_widget_destroy (dialog); return TRUE; } static void do_search_replace (GtkTextView * view, gboolean replace) { GtkTextBuffer *buffer = gtk_text_view_get_buffer (view); GtkTextIter iter; char *what, *replacement; #if GTK_MAJOR_VERSION==3 GtkTextSearchFlags flags; #else GtkSourceSearchFlags flags; #endif if (!search_dialog (GTK_WIDGET (view), replace, &what, &replacement, &flags)) return; if (replace) { gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0); while (TRUE) { GtkTextIter match_start, match_end; #if GTK_MAJOR_VERSION==3 if (!gtk_text_iter_forward_search (&iter, what, flags, &match_start, &match_end, NULL)) #else if (!gtk_source_iter_forward_search (&iter, what, flags, &match_start, &match_end, NULL)) #endif { break; } gtk_text_buffer_delete (buffer, &match_start, &match_end); gtk_text_buffer_insert (buffer, &match_start, replacement, -1); iter = match_start; } } else { GtkTextIter match_start, match_end; gtk_text_buffer_get_iter_at_mark (buffer, &iter, gtk_text_buffer_get_insert (buffer)); #if GTK_MAJOR_VERSION==3 if (gtk_text_iter_forward_search (&iter, what, flags, &match_start, &match_end, NULL)) #else if (gtk_source_iter_forward_search (&iter, what, flags, &match_start, &match_end, NULL)) #endif { gtk_text_buffer_select_range (buffer, &match_start, &match_end); } else { GtkTextIter insert = iter; gtk_text_buffer_get_start_iter (buffer, &iter); #if GTK_MAJOR_VERSION==3 if (gtk_text_iter_forward_search (&iter, what, flags, &match_start, &match_end, &insert)) #else if (gtk_source_iter_forward_search (&iter, what, flags, &match_start, &match_end, &insert)) #endif gtk_text_buffer_select_range (buffer, &match_start, &match_end); } } } static void find_cb (DenemoAction * action, gpointer user_data) { do_search_replace (user_data, FALSE); } static void replace_cb (DenemoAction * action, gpointer user_data) { do_search_replace (user_data, TRUE); } denemo-2.2.0/src/ui/PaxHeaders.19168/virtualkeyboard.h0000644000000000000000000000013213135434036017315 xustar0030 mtime=1500919838.366648472 30 atime=1500919921.129981805 30 ctime=1500919914.326648472 denemo-2.2.0/src/ui/virtualkeyboard.h0000644000175000017500000000171313135434036021170 0ustar00jjbenhamjjbenham00000000000000/* * virtualkeyboard.h * * Copyright 2017 Richard Shann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ #ifndef VIRTUALKEYBOARD_H #define VIRTUALKEYBOARD_H #include #include #include void create_virtual_keyboard (gint number_of_octaves); #endif denemo-2.2.0/src/ui/PaxHeaders.19168/texteditors.h0000644000000000000000000000013213135434036016464 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.146648472 30 ctime=1500919914.336648472 denemo-2.2.0/src/ui/texteditors.h0000644000175000017500000000051613135434036020337 0ustar00jjbenhamjjbenham00000000000000/* texteditors.h * * (c) 2009 Richard Shann */ #ifndef TEXTEDITORS_H #define TEXTEDITORS_H #include void executeScript (void); void create_scheme_window (void); gchar *get_script_view_text (void); void deleteSchemeText (void); void appendSchemeText (gchar * text); gint getNumCharsSchemeText (void); #endif denemo-2.2.0/src/ui/PaxHeaders.19168/kbd-interface.h0000644000000000000000000000013213135434036016604 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.146648472 30 ctime=1500919914.306648472 denemo-2.2.0/src/ui/kbd-interface.h0000644000175000017500000000065213135434036020460 0ustar00jjbenhamjjbenham00000000000000/* kbd-interface.h Keyboard customization dialog - header file For Denemo, the GNU graphical music notation package (c) 2000-2005 Olivier Vermersch, Matthew Hiller */ #ifndef KBDINTERFACE_H #define KBDINTERFACE_H void configure_keyboard_dialog (DenemoAction * action, DenemoScriptParam * param); void command_center_select_idx (DenemoAction * action, gint command_idx); GtkWidget *get_command_view(void); #endif denemo-2.2.0/src/ui/PaxHeaders.19168/keysigdialog.h0000644000000000000000000000013213135434036016561 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.146648472 30 ctime=1500919914.309981805 denemo-2.2.0/src/ui/keysigdialog.h0000644000175000017500000000030113135434036020424 0ustar00jjbenhamjjbenham00000000000000void key_change_initial (DenemoAction * action, DenemoScriptParam * param); void key_change_insert (DenemoAction * action, DenemoScriptParam * param); gchar *get_prevailing_keysig_name (void); denemo-2.2.0/src/ui/PaxHeaders.19168/playbackprops.h0000644000000000000000000000013213135434036016760 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.146648472 30 ctime=1500919914.329981805 denemo-2.2.0/src/ui/playbackprops.h0000644000175000017500000000044113135434036020630 0ustar00jjbenhamjjbenham00000000000000/* playbackprops.h * * playback propertues callback function prototype * * for Denemo, a gtk+ frontend for GNU Lilypond * (c) 2000-2005 Adam Tee, Matthew Hiller */ #ifndef PLAYBACKPROPS_H #define PLAYBACKPROPS_H static void set_playback (GtkWidget * widget, gpointer data); #endif denemo-2.2.0/src/ui/PaxHeaders.19168/mousing.c0000644000000000000000000000013213135434036015562 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.153315139 30 ctime=1500919914.313315139 denemo-2.2.0/src/ui/mousing.c0000644000175000017500000015552713135434036017452 0ustar00jjbenhamjjbenham00000000000000/* mousing.c * callback functions for handling mouse clicks, drags, etc. * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller */ #include "command/commandfuncs.h" #include "core/kbd-custom.h" #include "command/staff.h" #include "core/utils.h" #include "command/object.h" #include "command/select.h" #include "command/lilydirectives.h" #include "command/lyric.h" #include "ui/moveviewport.h" #include "ui/mousing.h" #include "audio/fluid.h" #include "audio/playback.h" #include "display/draw.h" #include "core/view.h" #include "audio/audiointerface.h" #include "export/exportmidi.h" static gboolean lh_down; static gdouble last_event_x; static gdouble last_event_y; static DenemoDirective *last_directive; typedef enum DragDirection { DRAG_DIRECTION_NONE = 0, DRAG_DIRECTION_UP, DRAG_DIRECTION_DOWN, DRAG_DIRECTION_LEFT, DRAG_DIRECTION_RIGHT} DragDirection; static enum DragDirection dragging_outside = DRAG_DIRECTION_NONE; //dragging to left or right outside window. /** * Get the mid_c_offset of an object or click from its height relative * to the top of the staff. */ gint offset_from_height (gdouble height, enum clefs clef) { /* Offset from the top of the staff, in half-tones. */ gint half_tone_offset = ((gint) (height / HALF_LINE_SPACE + ((height > 0) ? 0.5 : -0.5))); #define R(x) return x - half_tone_offset switch (clef) { case DENEMO_TREBLE_CLEF: R (10); break; case DENEMO_BASS_CLEF: R (-2); break; case DENEMO_ALTO_CLEF: R (4); break; case DENEMO_G_8_CLEF: R (3); break; case DENEMO_F_8_CLEF: R (-9); break; case DENEMO_TENOR_CLEF: R (2); break; case DENEMO_SOPRANO_CLEF: R (8); break; case DENEMO_FRENCH_CLEF: R (12); break; //when adding clefs get utils.c calculateheight() function correct first, then do this default: R (0); break; } #undef R return 0; } static gdouble get_click_height (DenemoProject * gui, gdouble y) { gdouble click_height; gint staffs_from_top; staffs_from_top = 0; GList *curstaff; DenemoStaff *staff; gint extra_space = 0; gint space_below = 0; gint i; curstaff = g_list_nth (gui->movement->thescore, gui->movement->top_staff - 1); if (!(((DenemoStaff *) (gui->movement->currentstaff->data))->voicecontrol & DENEMO_PRIMARY)) staffs_from_top--; for (i=0, curstaff = g_list_nth (gui->movement->thescore, gui->movement->top_staff - 1); curstaff; i++, curstaff = curstaff->next) { staff = (DenemoStaff *) curstaff->data; // g_print("%d from top, staff %d extra space %d (next is %d %d %d) previous space_below = %d)\n", i, gui->movement->currentstaffnum, extra_space, staff->space_above, staff->space_shorten, staff->space_below, space_below); if ((curstaff != Denemo.project->movement->currentstaff) && staff->hidden) continue; if (staff->voicecontrol & DENEMO_PRIMARY) extra_space += (staff->space_above - (i?staff->space_shorten:0) + space_below); if (curstaff == gui->movement->currentstaff) break; if (staff->voicecontrol & DENEMO_PRIMARY) { space_below = 0; staffs_from_top++; } space_below = MAX (space_below, ((staff->space_below) + (staff->verse_views ? LYRICS_HEIGHT : 0))); // g_print("after extra space %d space_below %d\n", extra_space, space_below); } click_height = y - (gui->movement->staffspace * staffs_from_top + gui->movement->staffspace / 4 + extra_space); //g_print("top staff is %d total %d staffs from top is %d click %f\n", gui->movement->top_staff, extra_space, staffs_from_top, click_height); return click_height; } /** * Set the cursor's y position from a mouse click * */ void set_cursor_y_from_click (DenemoProject * gui, gdouble y) { DenemoStaff *staff = (DenemoStaff*)gui->movement->currentstaff->data; gint cursorclef; if (gui->movement->currentobject) cursorclef = ((DenemoObject *)gui->movement->currentobject->data)->clef->type; else cursorclef = ((DenemoMeasure *)gui->movement->currentmeasure->data)->clef->type; /* Click height relative to the top of the staff. */ gdouble click_height = get_click_height (gui, y); gint offset = offset_from_height (click_height, (enum clefs) cursorclef); //g_print ("Does %d come within range %d %d?\n", offset, staff->range_hi, staff->range_lo); if (staff->range) { if(offset < staff->range_lo) offset = staff->range_lo; else if(offset > staff->range_hi) offset = staff->range_hi; } gui->movement->cursor_y = offset; gui->movement->staffletter_y = offsettonumber (gui->movement->cursor_y); } struct placement_info { gint staff_number, measure_number, cursor_x; staffnode *the_staff; measurenode *the_measure; objnode *the_obj; gboolean nextmeasure; gboolean offend; //TRUE when the user has clicked beyond the last note, taking you into appending gboolean at_edge; //TRUE when user clicked close (CURSOR_AT_EDGE) to right hand edge of scorearea. }; #define CURSOR_AT_EDGE (60) /* find the primary staff of the current staff, return its staffnum */ static gint primary_staff (DenemoMovement * si) { GList *curstaff; for (curstaff = si->currentstaff; curstaff && !(((DenemoStaff *) curstaff->data)->voicecontrol & DENEMO_PRIMARY); curstaff = curstaff->prev) ; //do nothing //g_debug("The position is %d\n", 1+g_list_position(si->thescore, curstaff)); return 1 + g_list_position (si->thescore, curstaff); } /* find which staff in si the height y lies in, return the staff number (not counting non-primary staffs ie voices) */ static gint staff_at (gint y, DenemoMovement * si) { GList *curstaff; gint space = 0; gint count; gint ret; for (curstaff = g_list_nth (si->thescore, si->top_staff - 1), count = 0; curstaff && y > space; curstaff = curstaff->next) { DenemoStaff *staff = (DenemoStaff *) curstaff->data; count++; if ((!((curstaff != Denemo.project->movement->currentstaff) && staff->hidden)) && (staff->voicecontrol & DENEMO_PRIMARY)) space += staff->space_above + staff->space_below - staff->space_shorten + si->staffspace + (staff->verse_views ? LYRICS_HEIGHT : 0); //g_debug("y %d and space %d count = %d\n",y,space, count); } if (y <= 1) ret = 1; ret = count + si->top_staff - 1; if (ret == primary_staff (si)) ret = si->currentstaffnum; return ret > 0 ? ret : 1; } /** * Gets the position from the clicked position * */ static void get_placement_from_coordinates (struct placement_info *pi, gdouble x, gdouble y, gint leftmeasurenum, gint rightmeasurenum, gint scale) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; GList *mwidthiterator = g_list_nth (si->measurewidths, leftmeasurenum - 1); if (mwidthiterator==NULL) { g_warning ("Error trying to position mouse pointer no measure width for %d", leftmeasurenum - 1); return; } objnode *obj_iterator; gint x_to_explain = (gint) (x); pi->offend = FALSE; pi->the_obj = NULL; if (mwidthiterator == NULL) { g_critical ("Array of measurewidths too small for leftmeasure %d\n", leftmeasurenum); return; } pi->at_edge = (get_widget_width (Denemo.scorearea) -x) < CURSOR_AT_EDGE; pi->staff_number = staff_at ((gint) y, si); //g_debug("L/R %d %d got staff number %d\n", leftmeasurenum, rightmeasurenum, pi->staff_number); pi->measure_number = leftmeasurenum; if (scale) x_to_explain = (x_to_explain * scale) / 100; x_to_explain -= ((gui->leftmargin+35) + si->maxkeywidth + SPACE_FOR_TIME); //g_debug("Explaining %d\n", x_to_explain); while (x_to_explain > GPOINTER_TO_INT (mwidthiterator->data) && pi->measure_number < rightmeasurenum) { x_to_explain -= (GPOINTER_TO_INT (mwidthiterator->data) + SPACE_FOR_BARLINE); mwidthiterator = mwidthiterator->next; if (mwidthiterator==NULL) { g_critical ("Error trying to position mouse pointer x position %d, measure number %d", x_to_explain, pi->measure_number); return; } pi->measure_number++; } //g_debug("got to measure %d\n", pi->measure_number); pi->nextmeasure = ((si->system_height > 0.5 || x_to_explain > GPOINTER_TO_INT (mwidthiterator->data)) && pi->measure_number >= rightmeasurenum); pi->the_staff = g_list_nth (si->thescore, pi->staff_number - 1); pi->the_measure = staff_nth_measure_node (pi->the_staff, pi->measure_number - 1); if (pi->the_measure != NULL) { /*check to make sure user did not click on empty space */ obj_iterator = (objnode *) ((DenemoMeasure *)pi->the_measure->data)->objects; pi->cursor_x = 0; pi->the_obj = NULL; if (obj_iterator) { DenemoObject *current, *next; for (; obj_iterator->next; obj_iterator = obj_iterator->next, pi->cursor_x++) { current = (DenemoObject *) obj_iterator->data; next = (DenemoObject *) obj_iterator->next->data; /* This comparison neatly takes care of two possibilities: 1) That the click was to the left of current, or 2) That the click was between current and next, but closer to current. Do the math - it really does work out. */ //???modify current->x by gx where graphic_override is set???? if (x_to_explain - (current->x + current->minpixelsalloted) < next->x - x_to_explain) { pi->the_obj = obj_iterator; break; } } if (!obj_iterator->next) /* That is, we exited the loop normally, not through a break. */ { DenemoObject *current = (DenemoObject *) obj_iterator->data; pi->the_obj = obj_iterator;//g_print("x_to_explain %d, compare current->x=%d and minpix %d\n",x_to_explain,current->x,current->minpixelsalloted); /* The below makes clicking to get the object at the end of a measure (instead of appending after it) require precision. This may be bad; tweak me if necessary. */ if ((x_to_explain > current->x + current->minpixelsalloted) || (x_to_explain > GPOINTER_TO_INT (mwidthiterator->data) - current->minpixelsalloted / 3)) //if closer to barline than object center pi->offend = TRUE, pi->cursor_x++; } } //g_debug("got to cursor x %d\n", pi->cursor_x); } } void assign_cursor (guint state, guint cursor_num) { guint *cursor_state = g_new (guint, 1); *cursor_state = state; //g_print("Storing cursor %d for state 0x%x in hash table %p\n", cursor_num, state, Denemo.map->cursors ); GdkCursor *cursor = gdk_cursor_new_for_display (gdk_display_get_default (), cursor_num); if (cursor) g_hash_table_insert (Denemo.map->cursors, cursor_state, cursor); } void set_cursor_for (guint state) { gint the_state = state; GdkCursor *cursor = g_hash_table_lookup (Denemo.map->cursors, &the_state); //g_print("looked up %x in %p got cursor %p\n", state, Denemo.map->cursors, cursor); if (cursor) gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), cursor); else gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), Denemo.GDK_LEFT_PTR); //FIXME? does this take time/hog memory } /* appends the name(s) for modifier mod to ret->str */ void append_modifier_name (GString * ret, gint mod) { gint i; static const gchar *names[] = { "Shift", "CapsLock", "Control", "Alt", "NumLock", "MOD3", "Penguin", "AltGr" }; for (i = 0; i < DENEMO_NUMBER_MODIFIERS; i++) if ((1 << i) & mod) g_string_append_printf (ret, "%s%s", "-", names[i]); g_string_append_printf (ret, "%s", mod ? "" : ""); } /* returns a newly allocated GString containing a shortcut name */ GString * mouse_shortcut_name (gint mod, mouse_gesture gesture, gboolean left) { GString *ret = g_string_new ((gesture == GESTURE_PRESS) ? (left ? "PrsL" : "PrsR") : ((gesture == GESTURE_RELEASE) ? (left ? "RlsL" : "RlsR") : (left ? "MveL" : "MveR"))); append_modifier_name (ret, mod); //g_debug("Returning %s for mod %d\n", ret->str, mod); return ret; } /* perform an action for mouse-click stored with shortcuts */ static void perform_command (gint modnum, mouse_gesture press, gboolean left) { GString *modname = mouse_shortcut_name (modnum, press, left); gint command_idx = lookup_command_for_keybinding_name (Denemo.map, modname->str); if (press != GESTURE_MOVE) { if (!Denemo.prefs.strictshortcuts) { if (command_idx < 0) { g_string_free (modname, TRUE); modname = mouse_shortcut_name (modnum & (~GDK_LOCK_MASK /*CapsLock */ ), press, left); command_idx = lookup_command_for_keybinding_name (Denemo.map, modname->str); } if (command_idx < 0) { g_string_free (modname, TRUE); modname = mouse_shortcut_name (modnum & (~GDK_MOD2_MASK /*NumLock */ ), press, left); command_idx = lookup_command_for_keybinding_name (Denemo.map, modname->str); } if (command_idx < 0) { g_string_free (modname, TRUE); modname = mouse_shortcut_name (modnum & (~(GDK_LOCK_MASK | GDK_MOD2_MASK)), press, left); command_idx = lookup_command_for_keybinding_name (Denemo.map, modname->str); } } } if (command_idx >= 0) { if (Denemo.prefs.learning) KeyPlusMouseGestureShow(modname->str, command_idx); execute_callback_from_idx (Denemo.map, command_idx); displayhelper (Denemo.project); } g_string_free (modname, TRUE); } static gboolean selecting = FALSE; static gboolean dragging_separator = FALSE; static gboolean dragging_audio = FALSE; static gboolean dragging_tempo = FALSE; static gboolean change_staff (DenemoMovement * si, gint num, GList * staff) { if (si->currentstaffnum == num) return FALSE; hide_lyrics (); si->currentstaffnum = num; si->currentstaff = staff; show_lyrics (); return TRUE; } static void transform_coords (double *x, double *y) { DenemoProject *gui = Denemo.project; gint application_height = get_widget_height (Denemo.scorearea); gint line_height = application_height * gui->movement->system_height; gint line_num = ((int) *y) / line_height; *y -= line_num * line_height; *x /= gui->movement->zoom; *y /= gui->movement->zoom; // *x += ((double)line_num * gui->movement->widthtoworkwith / ((int)(1/gui->movement->system_height))) - 1.0* (line_num?(double)gui->leftmargin:0.0); } static void extend_selection (DragDirection direction) { switch (direction) { case DRAG_DIRECTION_RIGHT: cursorright (NULL, NULL); break; case DRAG_DIRECTION_LEFT: cursorleft (NULL, NULL); break; case DRAG_DIRECTION_UP: staffup (NULL, NULL); move_viewport_up (Denemo.project); break; case DRAG_DIRECTION_DOWN: staffdown (NULL, NULL); move_viewport_down (Denemo.project); break; } gtk_widget_queue_draw(Denemo.scorearea); } gint scorearea_leave_event (GtkWidget * widget, GdkEventCrossing * event) { if(Denemo.object_hovering_over) { Denemo.object_hovering_over = NULL; gtk_widget_queue_draw(Denemo.scorearea); } gint allocated_height = get_widget_height (Denemo.scorearea); gint allocated_width = get_widget_width (Denemo.scorearea); if (event->state & GDK_BUTTON1_MASK) { dragging_outside = (event->x>=allocated_width)?DRAG_DIRECTION_RIGHT:(event->x < 0)?DRAG_DIRECTION_LEFT:(event->y < 0)? DRAG_DIRECTION_UP : DRAG_DIRECTION_DOWN; last_event_x = event->x_root; last_event_y = event->y_root; } gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), Denemo.GDK_LEFT_PTR); //FIXME? does this take time/hog memory return FALSE; //allow other handlers (specifically the pitch entry one) } gint scorearea_enter_event (GtkWidget * widget, GdkEventCrossing * event) { dragging_outside = DRAG_DIRECTION_NONE; if(Denemo.keyboard_state_locked) return FALSE; //g_debug("start the enter with ks = %x and state %x\n", Denemo.keyboard_state, event->state); if (event->state & GDK_CONTROL_MASK) Denemo.keyboard_state |= GDK_CONTROL_MASK; else Denemo.keyboard_state &= ~GDK_CONTROL_MASK; if (event->state & GDK_SHIFT_MASK) Denemo.keyboard_state |= GDK_SHIFT_MASK; else Denemo.keyboard_state &= ~GDK_SHIFT_MASK; #if 0 //perhaps it would be better to clear Denemo.keyboard_state on focus out event??? if (event->state & GDK_MOD1_MASK) Denemo.keyboard_state |= GDK_MOD1_MASK; else Denemo.keyboard_state &= ~(CHORD_MASK | GDK_MOD1_MASK); #endif // g_debug("end the enter with ks %x (values %x %x)\n", event->state, ~GDK_CONTROL_MASK, Denemo.keyboard_state & (~GDK_CONTROL_MASK) ); set_midi_in_status (); return FALSE; //allow other handlers } static gint is_nearby (gint line_height, gint y) { return !(abs (line_height-y)/Denemo.project->movement->zoom <4); } static gint hidden_staff_line (gint line_height) { GList *found = g_list_find_custom (Denemo.hidden_staff_heights, GINT_TO_POINTER(line_height), (GCompareFunc)is_nearby);// if(found)g_print ("found %d for line height %d hidden line %d\t", found->data, line_height,1 + g_list_position (Denemo.hidden_staff_heights, found)); if (found) return 1 + g_list_position (Denemo.hidden_staff_heights, found); else return 0; } /** * Mouse motion callback * */ gint scorearea_motion_notify (GtkWidget * widget, GdkEventButton * event) { DenemoProject *gui = Denemo.project; static gboolean hovering_over_hidden = FALSE; if (gui == NULL || gui->movement == NULL) return FALSE; if (Denemo.scorearea == NULL) return FALSE; // this would avoid an interesting "cursor follow the pointer" mode, which we don't use because you would not be able to move the mouse pointer away e.g. to choose a menu without the Denemo Cursor moving... //if (selecting && lh_down && !Denemo.project->movement->markstaffnum) // selecting = lh_down = 0; // it should never happen, so we don't need to guard against it. gint allocated_height = get_widget_height (Denemo.scorearea); gint line_height = allocated_height * gui->movement->system_height; if(dragging_outside) { gint incrx, incry; incrx=incry=0; if(((gint)((last_event_x - event->x_root)/gui->movement->zoom)) != 0) { incrx = -(last_event_x - event->x_root)/gui->movement->zoom; last_event_x = event->x_root; } if( ((gint)((last_event_y - event->y_root)/gui->movement->zoom)) != 0) { incry = -(last_event_y - event->y_root)/gui->movement->zoom; last_event_y = event->y_root; } if((dragging_outside==DRAG_DIRECTION_RIGHT) && (incrx > 1) || ((dragging_outside==DRAG_DIRECTION_LEFT) && (incrx < -1)) || ((dragging_outside==DRAG_DIRECTION_UP) && (incry < 0)) || ((dragging_outside==DRAG_DIRECTION_DOWN) && (incry > 0))) extend_selection(dragging_outside); return TRUE; } if (event->y < 0) event->y = 0.0; gint line_num = ((int) event->y) / line_height; if (last_directive && (GDK_SHIFT_MASK & event->state) && (GDK_CONTROL_MASK & event->state)) { gint incrx, incry; incrx=incry=0; if(((gint)((last_event_x - event->x_root)/gui->movement->zoom)) != 0) { incrx = (last_event_x - event->x_root)/gui->movement->zoom; last_event_x = event->x_root; } if( ((gint)((last_event_y - event->y_root)/gui->movement->zoom)) != 0) { incry = (last_event_y - event->y_root)/gui->movement->zoom; last_event_y = event->y_root; } if(last_directive->graphic) { last_directive->gx -= incrx; last_directive->gy -= incry; } else { last_directive->tx -= incrx; last_directive->ty -= incry; } draw_score_area(); return TRUE; } if(gui->movement->recording && dragging_audio) { if(gui->movement->recording->type == DENEMO_RECORDING_MIDI) { #if 0 //This is moving only the NoteOn, so it could be moved later than the note off, and indeed later than a later note in the stream //- quite a bit more work needed to drag MIDI to correct the timing. smf_event_t *midievent; GList *marked_onset = gui->movement->marked_onset; if(marked_onset) { midievent = ((DenemoRecordedNote *)marked_onset->data)->event; gint shift = 2500*(event->x_root - last_event_x)/gui->movement->zoom; g_debug (" %f (%f %f)",shift/(double)gui->movement->recording->samplerate, midievent->time_seconds, ((DenemoRecordedNote *)marked_onset->data)->timing/(double)gui->movement->recording->samplerate) ; ((DenemoRecordedNote *)marked_onset->data)->timing += shift; midievent->time_seconds += shift/(double)gui->movement->recording->samplerate; } #endif g_warning("No drag for MIDI yet"); return TRUE; } gui->movement->recording->leadin -= 500*(event->x_root - last_event_x)/gui->movement->zoom;//g_debug("%d %d => %d\n", (int)(10*last_event_x), (int)(10*event->x_root), (int)(10*last_event_x) - (int)(10*event->x_root)); last_event_x = event->x_root; update_leadin_widget ( gui->movement->recording->leadin/(double)gui->movement->recording->samplerate); gtk_widget_queue_draw(Denemo.scorearea); return TRUE; } if(gui->movement->recording && dragging_tempo) { gdouble change = (event->x_root - last_event_x)/gui->movement->zoom; last_event_x = event->x_root; struct placement_info pi; get_placement_from_coordinates (&pi, event->x, 0, gui->lefts[line_num], gui->rights[line_num], gui->scales[line_num]); change /= pi.measure_number; update_tempo_widget ( change); set_tempo (); score_status (Denemo.project, TRUE); exportmidi (NULL, gui->movement); gtk_widget_queue_draw(Denemo.scorearea); return TRUE; } #define DENEMO_MINIMUM_SYSTEM_HEIGHT (0.01) if (dragging_separator) { gui->movement->system_height = event->y / get_widget_height (Denemo.scorearea); if (gui->movement->system_height < DENEMO_MINIMUM_SYSTEM_HEIGHT) gui->movement->system_height = DENEMO_MINIMUM_SYSTEM_HEIGHT; if (gui->movement->system_height > 1.0) gui->movement->system_height = 1.0; scorearea_configure_event (Denemo.scorearea, NULL); draw_score_area(); return TRUE; } if (line_height - ((int) event->y - 8) % line_height < 12) gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), Denemo.GDK_SB_V_DOUBLE_ARROW); else gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), Denemo.GDK_LEFT_PTR); //FIXME? does this take time/hog memory transform_coords (&event->x, &event->y); //g_debug("Marked %d\n", gui->movement->markstaffnum); if (gui->lefts[line_num] == 0) return TRUE; if (lh_down || (selecting && gui->movement->markstaffnum)) { struct placement_info pi; pi.the_staff = NULL; if (event->y < 0) get_placement_from_coordinates (&pi, event->x, 0, gui->lefts[line_num], gui->rights[line_num], gui->scales[line_num]); else get_placement_from_coordinates (&pi, event->x, event->y, gui->lefts[line_num], gui->rights[line_num], gui->scales[line_num]); if (pi.the_staff == NULL) return TRUE; //could not place the cursor if (pi.the_measure != NULL) { /*don't place cursor in a place that is not there */ change_staff (gui->movement, pi.staff_number, pi.the_staff); gui->movement->currentmeasurenum = pi.measure_number; gui->movement->currentmeasure = pi.the_measure; gui->movement->currentobject = pi.the_obj; gui->movement->cursor_x = pi.cursor_x; gui->movement->cursor_appending = (gui->movement->cursor_x == (gint) (g_list_length ((objnode *) ((DenemoMeasure*)gui->movement->currentmeasure->data)->objects))); set_cursor_y_from_click (gui, event->y); if (lh_down & !selecting) { if (gui->movement->markstaffnum) set_point (NULL, NULL); else set_mark (NULL, NULL); selecting = TRUE; } calcmarkboundaries (gui->movement); if (event->state & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK | GDK_BUTTON3_MASK)) perform_command (event->state, GESTURE_MOVE, event->state & GDK_BUTTON1_MASK); /* redraw to show new cursor position */ draw_score_area(); } return TRUE; } { gboolean oldm = Denemo.hovering_over_movement; gboolean oldla = Denemo.hovering_over_left_arrow; gboolean oldra= Denemo.hovering_over_right_arrow; gboolean oldmu = Denemo.hovering_over_margin_up; gboolean oldmd = Denemo.hovering_over_margin_down; gboolean oldb = Denemo.hovering_over_brace; gboolean oldp = Denemo.hovering_over_partname; gboolean oldc = Denemo.hovering_over_clef; gboolean oldks = Denemo.hovering_over_keysharpen; gboolean oldkf = Denemo.hovering_over_keyflatten; gboolean oldt = Denemo.hovering_over_timesig; Denemo.hovering_over_movement = FALSE; Denemo.hovering_over_movement = Denemo.hovering_over_left_arrow = Denemo.hovering_over_right_arrow = Denemo.hovering_over_brace = Denemo.hovering_over_margin_up = Denemo.hovering_over_margin_down = Denemo.hovering_over_partname = Denemo.hovering_over_clef = Denemo.hovering_over_timesig = Denemo.hovering_over_keysharpen = Denemo.hovering_over_keyflatten = FALSE; if (event->x<25 && event->y<25) { Denemo.hovering_over_movement = TRUE; } else { if (event->x < gui->leftmargin) { if (gui->braces && (gui->movement->leftmeasurenum == 1) && ((Denemo.hovering_over_brace = ((gui->leftmargin - event->x) < BRACEWIDTH * g_list_length (gui->braces))))) ; //do nothing more hovering over brace is set else { gint offset = (gint) get_click_height (gui, event->y); if (offset > 0 && (offset < STAFF_HEIGHT / 2)) Denemo.hovering_over_margin_up = TRUE; else if (offset > 0 && (offset < STAFF_HEIGHT)) Denemo.hovering_over_margin_down = TRUE; } } else { gint key = gui->movement->maxkeywidth; gint cmajor = key ? 0 : 5; if (((gint) get_click_height (gui, event->y)<-10) && (event->x < (gui->leftmargin+35) + SPACE_FOR_TIME + key)) { struct placement_info pi; if (event->y < 0) get_placement_from_coordinates (&pi, event->x, 0, gui->lefts[line_num], gui->rights[line_num], gui->scales[line_num]); else get_placement_from_coordinates (&pi, event->x, event->y, gui->lefts[line_num], gui->rights[line_num], gui->scales[line_num]); if (pi.the_staff == NULL) return TRUE; if (gui->movement->currentstaffnum == pi.staff_number) Denemo.hovering_over_partname = TRUE; } else { if (event->x < (gui->leftmargin+35) - cmajor) { Denemo.hovering_over_clef = TRUE; } else if (event->x < (gui->leftmargin+35) + key + cmajor) { gint offset = (gint) get_click_height (gui, event->y); if (offset > 0 && (offset < STAFF_HEIGHT / 2)) Denemo.hovering_over_keysharpen = TRUE; else if (offset > 0 && (offset < STAFF_HEIGHT)) Denemo.hovering_over_keyflatten = TRUE; } else if (event->x < (gui->leftmargin+35) + SPACE_FOR_TIME + key) Denemo.hovering_over_timesig = TRUE; } } } //Detect arrow left/right { struct placement_info pi; if (event->y < 0) get_placement_from_coordinates (&pi, event->x, 0, gui->lefts[line_num], gui->rights[line_num], gui->scales[line_num]); else get_placement_from_coordinates (&pi, event->x, event->y, gui->lefts[line_num], gui->rights[line_num], gui->scales[line_num]); if(pi.the_staff) { if ((gui->movement->leftmeasurenum > 1) && (event->x < (gui->leftmargin+35) + SPACE_FOR_TIME + gui->movement->maxkeywidth) && (event->x > gui->leftmargin)) { Denemo.hovering_over_left_arrow = TRUE; } else if (pi.nextmeasure) { if ((pi.at_edge) && ((pi.the_obj==NULL) || ((pi.the_obj->next == NULL) && (pi.offend)))) Denemo.hovering_over_right_arrow = TRUE; } } } if ((oldm != Denemo.hovering_over_movement) || (oldla != Denemo.hovering_over_left_arrow) || (oldra != Denemo.hovering_over_right_arrow) || (oldmu != Denemo.hovering_over_margin_up) || (oldmd != Denemo.hovering_over_margin_down) || (oldb != Denemo.hovering_over_brace) || (oldp != Denemo.hovering_over_partname) || (oldc != Denemo.hovering_over_clef) || (oldt != Denemo.hovering_over_timesig) || (oldks != Denemo.hovering_over_keysharpen) || (oldkf != Denemo.hovering_over_keyflatten)) gtk_widget_queue_draw(Denemo.scorearea); } struct placement_info pi; if (event->y < 0) get_placement_from_coordinates (&pi, event->x, 0, gui->lefts[line_num], gui->rights[line_num], gui->scales[line_num]); else get_placement_from_coordinates (&pi, event->x, event->y, gui->lefts[line_num], gui->rights[line_num], gui->scales[line_num]); GList *old_obj = Denemo.object_hovering_over; Denemo.object_hovering_over = pi.the_obj; if (old_obj != Denemo.object_hovering_over) gtk_widget_queue_draw (Denemo.scorearea); if( hidden_staff_line ((gint)(0.5 + event->y))) { //if (!hovering_over_hidden) something else keeps re-setting the cursor, so just force it gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), Denemo.GDK_TARGET); hovering_over_hidden = TRUE; } else { if (hovering_over_hidden) gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), Denemo.GDK_LEFT_PTR); //FIXME? does this take time/hog memory hovering_over_hidden = FALSE; } if (Denemo.project->midi_destination & MIDICONDUCT) { advance_time (0.01); return TRUE; } return TRUE; } /** * Mouse button press callback * */ gint scorearea_button_press (GtkWidget * widget, GdkEventButton * event) { DenemoProject *gui = Denemo.project; if (gui == NULL || gui->movement == NULL) return FALSE; gboolean left = (event->button != 3); //if the cursor is at a system separator start dragging it gint allocated_height = get_widget_height (Denemo.scorearea); gint line_height = allocated_height * gui->movement->system_height; gint line_num = ((int) event->y) / line_height; last_event_x = event->x_root; last_event_y = event->y_root; //g_debug("diff %d\n", line_height - ((int)event->y)%line_height); if (dragging_separator == FALSE) if (line_height - ((int) event->y - 8) % line_height < 12) { if (Denemo.prefs.learning) MouseGestureShow(_("Dragging line separator."), _("This will allow the display to show more music, split into lines. The typeset score is not affected."), MouseGesture); dragging_separator = TRUE; return TRUE; } dragging_separator = FALSE; if(gui->movement->recording) { //g_debug("audio %f %f\n", event->x, event->y); if(event->y < 20*gui->movement->zoom /* see draw.c for this value, the note onsets are drawn in the top 20 pixels */) { if (event->type==GDK_2BUTTON_PRESS) { gui->movement->marked_onset_position = (gint)event->x/gui->movement->zoom; if(gui->movement->marked_onset_position < (gui->leftmargin+35) + SPACE_FOR_TIME + gui->movement->maxkeywidth) { if (Denemo.prefs.learning) MouseGestureShow(_("Double Click Note Onset"), _("This represents detected note onsets which occur\nbefore the start of the score.\nIf they are just noise,\nor if you are working on just a portion of the audio that is ok.\nOtherwise drag with left mouse button to synchronize\nwith the start of the score."), MouseGesture); } gtk_widget_queue_draw(Denemo.scorearea); return TRUE; } else { gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), left?Denemo.GDK_SB_H_DOUBLE_ARROW:Denemo.GDK_X_CURSOR); left? (dragging_audio = TRUE) : (dragging_tempo = TRUE); if (Denemo.prefs.learning) left? MouseGestureShow(_("Left Drag Note Onset"), _("This moves the audio to synchronize the start with the score.\nYou can use the Leadin button for this too."), MouseGesture) : MouseGestureShow(_("Right Drag Note Onset"), _("This changes the tempo of the score.\nUse this to synchronize the beat after setting the start"), MouseGesture); gtk_widget_queue_draw(Denemo.scorearea); return TRUE; } } } //g_debug("before %f %f\n", event->x, event->y); transform_coords (&event->x, &event->y); //g_debug("after %f %f\n", event->x, event->y); if (Denemo.hovering_over_movement) { call_out_to_guile ("(EditMovement)"); return TRUE; } gtk_widget_grab_focus (widget); gint key = gui->movement->maxkeywidth; gint cmajor = key ? 0 : 5; //allow some area for keysig in C-major if (gui->lefts[line_num] == 0) return TRUE; //On an empty system at the bottom where there is not enough room to draw another staff. struct placement_info pi; pi.the_staff = NULL; //navigate to a hidden staff if on a hidden staff line { gint theline = hidden_staff_line ((gint)(0.5 + event->y)); if (theline) { GList *this = gui->movement->thescore; gint count = 0; gint staffnum = 0; while (this) { DenemoStaff *thestaff = (DenemoStaff*)this->data; if (thestaff->hidden && (this != gui->movement->currentstaff)) { count++; if (count == theline) { staffnum = 1 + g_list_position (gui->movement->thescore, this); //g_print ("Looked for hidden line %d got staffnum %d\n", theline, staffnum); break; } } if (this) this = this->next; } //staffnum is the first of the hidden staffs belonging to the line theline goto_movement_staff_obj (NULL, -1, staffnum, gui->movement->currentmeasurenum, 0, gui->lefts[line_num]); return TRUE; } } if (event->y < 0) get_placement_from_coordinates (&pi, event->x, 0, gui->lefts[line_num], gui->rights[line_num], gui->scales[line_num]); else get_placement_from_coordinates (&pi, event->x, event->y, gui->lefts[line_num], gui->rights[line_num], gui->scales[line_num]); if (pi.the_staff == NULL) return TRUE; //could not place the cursor change_staff (gui->movement, pi.staff_number, pi.the_staff); if (left && (gui->movement->leftmeasurenum > 1) && (event->x < (gui->leftmargin+35) + SPACE_FOR_TIME + key) && (event->x > gui->leftmargin)) { if (Denemo.prefs.learning) MouseGestureShow(_("Press Left."), _("This moved the cursor to the measure offscreen left. The display is shifted to place that measure on screen."), MouseGesture); set_currentmeasurenum (gui, gui->movement->leftmeasurenum - 1); write_status (gui); draw_score_area(); return TRUE; } else if (pi.nextmeasure) { if ((pi.at_edge) && ((pi.the_obj==NULL) || ((pi.the_obj->next == NULL) && (pi.offend))))//crashed here with the_obj 0x131 !!! { if ((gui->movement->currentmeasurenum != gui->movement->rightmeasurenum) && (!set_currentmeasurenum (gui, gui->movement->rightmeasurenum + 1))) set_currentmeasurenum (gui, gui->movement->rightmeasurenum); else if ((gui->movement->cursor_appending) && (!set_currentmeasurenum (gui, gui->movement->rightmeasurenum + 1))) set_currentmeasurenum (gui, gui->movement->rightmeasurenum); if (gui->movement->currentmeasurenum != gui->movement->rightmeasurenum) { if (Denemo.prefs.learning) MouseGestureShow(_("Press Left."), _("This moved the cursor to the measure off-screen right. The display is shifted to move the cursor to the middle."), MouseGesture); write_status (gui); return TRUE; } } } if (pi.the_measure != NULL) { /*don't place cursor in a place that is not there */ //gui->movement->currentstaffnum = pi.staff_number; //gui->movement->currentstaff = pi.the_staff; gui->movement->currentmeasurenum = pi.measure_number; gui->movement->currentmeasure = pi.the_measure; gui->movement->currentobject = pi.the_obj; gui->movement->cursor_x = pi.cursor_x; gui->movement->cursor_appending = (gui->movement->cursor_x == (gint) (g_list_length ((objnode *) ((DenemoMeasure*)gui->movement->currentmeasure->data)->objects))); set_cursor_y_from_click (gui, event->y); if (event->type==GDK_2BUTTON_PRESS) { if(gui->movement->recording && !g_strcmp0 (((DenemoStaff *) gui->movement->currentstaff->data)->denemo_name->str, DENEMO_CLICK_TRACK_NAME)) { gui->movement->marked_onset_position = (gint)event->x/gui->movement->zoom; if (Denemo.prefs.learning) MouseGestureShow(_("Double Click on Click Track"), _("This will mark the MIDI note onset."), MouseGesture); return TRUE; } else { if (Denemo.prefs.learning) MouseGestureShow(_("Double Click."), _("This gives information about the object at the cursor. Click on a notehead for information about a note in a chord."), MouseGesture); display_current_object(); return TRUE; } } else { if (Denemo.prefs.learning) MouseGestureShow(_("Press Left."), _("This moved the cursor to the object position clicked. The cursor height becomes the clicked point."), MouseGesture); write_status (gui); } } gint offset = (gint) get_click_height (gui, event->y); if ((((DenemoStaff *) gui->movement->currentstaff->data)->voicecontrol != DENEMO_PRIMARY) && (gui->movement->leftmeasurenum == 1) && (event->x > gui->leftmargin) && ((event->x < (gui->leftmargin+35) + SPACE_FOR_TIME + key))) { infodialog(_("The clef shown here affects the display only (as this voice is displayed on the staff above)." " You can change the display clef using the clef menu." "\nWarning! you will get confused if you set the key signature or time signature of a voice different " "to the staff it is typeset on. Run the Staff/Voice property editor to adjust any inconsistencies.")); } if ((((DenemoStaff *) gui->movement->currentstaff->data)->voicecontrol == DENEMO_PRIMARY) && (gui->movement->leftmeasurenum == 1) && (event->x > gui->leftmargin)) { if ((offset<-10) && (event->x < (gui->leftmargin+35) + SPACE_FOR_TIME + key)) { if (Denemo.prefs.learning) MouseGestureShow(_("Left on Part name."), _("This pops up the built-in staff properties. For other properties of the current staff see the staff menu or the tools icon before the clef."), MouseGesture); staff_properties_change_cb (NULL, NULL); return TRUE; } else { if (event->x < (gui->leftmargin+35) - cmajor) { { if (Denemo.prefs.learning) MouseGestureShow(_("Left on initial Clef."), _("This pops up the initial clef menu."), MouseGesture); popup_menu ("ClefMenu"); } return TRUE; } else if (event->x < (gui->leftmargin+35) + key + cmajor) { if (left) { if (offset > 0 && (offset < STAFF_HEIGHT / 2)) { if (Denemo.prefs.learning) MouseGestureShow(_("Left Click on blue."), _("This adds one sharp."), MouseGesture); if ((gui->movement->currentmeasure->next==NULL) || confirm (_("Initial Key Signature Change"), _("Sharpen Keysignature?"))) call_out_to_guile ("(d-SharpenInitialKeysigs)"); } else if (offset > 0 && (offset < STAFF_HEIGHT)) { if (Denemo.prefs.learning) MouseGestureShow(_("Left Click on red."), _("This adds one flat."), MouseGesture); if ((gui->movement->currentmeasure->next==NULL) || confirm (_("Initial Key Signature Change"), _("Flatten Keysignature?"))) call_out_to_guile ("(d-FlattenInitialKeysigs)"); } } else { if (Denemo.prefs.learning) MouseGestureShow(_("Right Click on key."), _("This pops up the key signature menu."), MouseGesture); popup_menu ("Key"); } return TRUE; } else if (event->x < (gui->leftmargin+35) + SPACE_FOR_TIME + key) { if (Denemo.prefs.learning) MouseGestureShow(_("Click on Time."), _("This pops up the time signature menu."), MouseGesture); popup_menu ("TimeSig"); return TRUE; } } } if (event->x < gui->leftmargin) { if (gui->braces && (gui->movement->leftmeasurenum == 1)) { gint width = BRACEWIDTH * g_list_length (gui->braces); //gint count = (gui->leftmargin - event->x)/BRACEWIDTH; if ((gui->leftmargin - event->x) < width) { gint count = 1 + (width - gui->leftmargin + event->x)/BRACEWIDTH; if ((count>0) && (count <= g_list_length (gui->braces))) { DenemoBrace *brace = (DenemoBrace*)g_list_nth_data (gui->braces, count-1); gint choice = choose_option_or_cancel (_("Editing Staff Groups (Braces)"), _("Edit Start Brace"), _("Edit End Brace"), TRUE); if( choice>=0) { gint staffnum = choice?brace->startstaff:brace->endstaff; //g_print ("Count is %d for start at %d\n", count, staffnum); //GtkWidget *menu = gtk_ui_manager_get_widget (Denemo.ui_manager, "StaffGroupings"); goto_movement_staff_obj (NULL, -1, staffnum, 1, 0, 0); if (choice) popup_menu ("StaffGroupings"); else { if (staff_directive_get_tag ("BraceEnd")) call_out_to_guile ("(d-BraceEnd)"); else warningdialog (_( "This staff grouping has no End Brace so it finishes on the lowest staff. Use the Staffs/Voices->Staff Groupings menu to place an End Brace on the desired staff")); } //note the popup returns as soon as the menu is popped up, so we can't go back to the original position. } } return TRUE; } } if (pi.staff_number == gui->movement->currentstaffnum) { gint offset = (gint) get_click_height (gui, event->y); if (offset < STAFF_HEIGHT / 2) { if (((DenemoStaff *) gui->movement->currentstaff->data)->staff_directives, 1) { if (Denemo.prefs.learning) MouseGestureShow(_("Click on Staff Directives."), _("This pops up the staff directives menu for editing"), MouseGesture); call_out_to_guile ("(EditStaff)"); //edit_staff_properties ();//gtk_menu_popup (((DenemoStaff *) gui->movement->currentstaff->data)->staffmenu, NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); } return TRUE; } else if (((DenemoStaff *) gui->movement->currentstaff->data)->voice_directives, 1) { if (Denemo.prefs.learning) MouseGestureShow(_("Click on Voice Directives."), _("This pops up the voice directives menu for editing"), MouseGesture); edit_voice_properties ();//gtk_menu_popup (((DenemoStaff *) gui->movement->currentstaff->data)->voicemenu, NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); return TRUE; } } } if (left) { if (!(GDK_SHIFT_MASK & event->state)) gui->movement->markstaffnum = 0; lh_down = TRUE; } else { if (gui->movement->cursor_appending && (event->state==0)) { if (Denemo.prefs.learning) { MouseGestureShow(_("Right Click Appending."), _("This pops up the append menu"), MouseGesture); } popup_menu ("InsertDuration"); return TRUE; } if ((GDK_CONTROL_MASK & event->state) == GDK_CONTROL_MASK) { if (Denemo.prefs.learning) MouseGestureShow(_("Control-Right Click."), _("This pops up menu for inserting barlines and many other sorts of objects"), MouseGesture); popup_menu ("Markings"); return TRUE; } if ((GDK_SHIFT_MASK & event->state) == GDK_SHIFT_MASK) { if (Denemo.prefs.learning) MouseGestureShow(_("Shift-Right Click."), _("This allows editing the directives/attributes of the object at the cursor"), MouseGesture); call_out_to_guile ("(d-EditSimilar 'once)"); return TRUE; } } if (left && (GDK_SHIFT_MASK & event->state) && (GDK_CONTROL_MASK & event->state)) { // if current object is directive, start dragging its graphic, dragging_display=TRUE DenemoObject *obj; if (Denemo.prefs.learning) MouseGestureShow(_("Control-Shift-Drag."), _("This allows dragging objects in the display.\nAll sorts of directives such as staccato dots, ornaments, repeat marks etc can be dragged if the display is too cluttered.\nThe typeset score is unaffected.\nClick on a notehead to drag things attached to the notehead,\nor off the noteheads for things attached to the whole chord."), MouseGesture); last_directive = get_next_directive_at_cursor (); if(last_directive) { score_status (Denemo.project, TRUE); return TRUE; } infodialog (_("Control-Shift-Drag is used to tidy up the Denemo display. Useful if Denemo has created a clutter with your input music.\nIf you have several things attached to one object you can move them in turn by dragging them in turn.\nNotes, Slurs and Ties are fixed but most other things can be moved to make the input music clear. Does not affect the typeset score!\nNB! if you have dragged something to one side of a note you have to control-shift-click on the note itself to drag it back - it is where the cursor is that counts.")); return TRUE; } set_cursor_for (event->state | (left ? GDK_BUTTON1_MASK : GDK_BUTTON3_MASK)); //displayhelper(Denemo.project); draw_score(NULL);//this is needed to refresh cached values such as the prevailing time signature, before the command is invoked perform_command (event->state | (left ? GDK_BUTTON1_MASK : GDK_BUTTON3_MASK), GESTURE_PRESS, left); return TRUE; } /** * Mouse button release callback * */ gint scorearea_button_release (GtkWidget * widget, GdkEventButton * event) { DenemoProject *gui = Denemo.project; if (gui == NULL || gui->movement == NULL) return FALSE; last_directive = NULL; gboolean left = (event->button != 3); if(gui->movement->recording && (dragging_tempo || dragging_audio)) { dragging_tempo = dragging_audio = FALSE; gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), Denemo.GDK_LEFT_PTR); //FIXME? does this take time/hog memory return TRUE; } if (dragging_separator) { if (Denemo.prefs.learning) MouseGestureShow(_("Dragged line separator."), _("This allows the display to show more music, split into lines. The typeset score is not affected."), MouseGesture); dragging_separator = FALSE; return TRUE; } //g_signal_handlers_block_by_func(Denemo.scorearea, G_CALLBACK (scorearea_motion_notify), gui); if (left) lh_down = FALSE; selecting = FALSE; set_cursor_for (event->state & DENEMO_MODIFIER_MASK); transform_coords (&event->x, &event->y); set_cursor_y_from_click (gui, event->y); gtk_widget_queue_draw(Denemo.scorearea); perform_command (event->state, GESTURE_RELEASE, left); return TRUE; } gint scorearea_scroll_event (GtkWidget * widget, GdkEventScroll * event) { DenemoProject *gui = Denemo.project; if (gui == NULL || gui->movement == NULL) return FALSE; switch (event->direction) { DenemoScriptParam param; case GDK_SCROLL_UP: if (event->state & GDK_CONTROL_MASK) { if (Denemo.prefs.learning) { gint command_idx = lookup_command_from_name(Denemo.map, "ZoomIn"); KeyStrokeShow (_("Ctrl + Mouse Wheel Up"), command_idx, TRUE); } Denemo.project->movement->zoom *= 1.1; scorearea_configure_event (Denemo.scorearea, NULL); } else if (event->state & GDK_SHIFT_MASK) { gint command_idx = lookup_command_from_name(Denemo.map, "MoveToMeasureLeft"); if (Denemo.prefs.learning) { KeyStrokeShow (_("Shift + Mouse Wheel Up"), command_idx, TRUE); } execute_callback_from_idx(Denemo.map, command_idx);//scroll_left (); } else { if (Denemo.prefs.learning) { gint command_idx = lookup_command_from_name(Denemo.map, "MoveToStaffUp"); KeyStrokeShow (_("Unshifted + Mouse Wheel Up"), command_idx, TRUE); } movetostaffup (NULL, ¶m); if (!param.status) { DenemoStaff *thestaff = (DenemoStaff*)(Denemo.project->movement->currentstaff->data); if(thestaff->space_above < MAXEXTRASPACE) { thestaff->space_above++; g_debug ("Increasing the height of the top staff"); } } } break; case GDK_SCROLL_DOWN: if (event->state & GDK_CONTROL_MASK) { if (Denemo.prefs.learning) { gint command_idx = lookup_command_from_name(Denemo.map, "ZoomOut"); KeyStrokeShow (_("Ctrl + Mouse Wheel Down"), command_idx, TRUE); } Denemo.project->movement->zoom /= 1.1; if (Denemo.project->movement->zoom < 0.01) Denemo.project->movement->zoom = 0.01; scorearea_configure_event (Denemo.scorearea, NULL); //displayhelper(gui); } else if (event->state & GDK_SHIFT_MASK) { gint command_idx = lookup_command_from_name(Denemo.map, "MoveToMeasureRight"); if (Denemo.prefs.learning) { KeyStrokeShow (_("Shift + Mouse Wheel Down"), command_idx, TRUE); } execute_callback_from_idx(Denemo.map, command_idx);//scroll_right (); } else { if (Denemo.prefs.learning) { gint command_idx = lookup_command_from_name(Denemo.map, "MoveToStaffDown"); KeyStrokeShow (_("Unshifted + Mouse Wheel Down"), command_idx, TRUE); } movetostaffdown (NULL, ¶m); if (!param.status) { warningmessage ("This is the bottom staff"); // DenemoStaff *thestaff = (DenemoStaff*)(Denemo.project->movement->currentstaff->data); // thestaff->space_below++; //This doesn't help, because the viewport does not change. // warningmessage ("Increasing the space below the bottom staff"); //move_viewport_down(Denemo.project); } } break; case GDK_SCROLL_LEFT: movetomeasureleft (NULL, ¶m); if (!param.status) warningmessage ("This is the first measure"); break; case GDK_SCROLL_RIGHT: movetomeasureright (NULL, ¶m); if (!param.status) warningmessage ("This is the last measure"); break; default: break; } displayhelper (Denemo.project); return FALSE; } denemo-2.2.0/src/ui/PaxHeaders.19168/moveviewport.h0000644000000000000000000000013213135434036016654 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.216648472 30 ctime=1500919914.316648472 denemo-2.2.0/src/ui/moveviewport.h0000644000175000017500000000231513135434036020526 0ustar00jjbenhamjjbenham00000000000000/* moveviewport.h header file for functions that change leftmeasurenum, rightmeasurenum, top_measure, bottom_measure for Denemo, a gtk+ frontend to GNU Lilypond (c) 2000-2005 Matthew Hiller */ #include #ifndef MOVEVIEWPORT_H #define MOVEVIEWPORT_H void update_hscrollbar (DenemoProject * si); void update_vscrollbar (DenemoProject * si); gboolean set_rightmeasurenum (DenemoMovement * si); void set_bottom_staff (DenemoProject * gui); void isoffleftside (DenemoProject * gui); void isoffrightside (DenemoProject * gui); void page_viewport (void); void move_viewport_up (DenemoProject * gui); void move_viewport_down (DenemoProject * si); gboolean set_currentmeasurenum (DenemoProject * si, gint dest); gboolean moveto_currentmeasurenum (DenemoProject * si, gint dest, gint leftmeasurenum); void vertical_scroll (GtkAdjustment * adjust, gpointer dummy); void horizontal_scroll (GtkAdjustment * adjust, gpointer dummy); void scroll_left (void); void scroll_right (void); gboolean set_currentstaffnum (DenemoProject * si, gint dest); gboolean moveto_currentstaffnum (DenemoProject * si, gint dest); gdouble transition_offset (void); gdouble transition_cursor_scale (void); #endif denemo-2.2.0/src/ui/PaxHeaders.19168/keysigdialog.c0000644000000000000000000000013213135434036016554 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.216648472 30 ctime=1500919914.309981805 denemo-2.2.0/src/ui/keysigdialog.c0000644000175000017500000004127713135434036020440 0ustar00jjbenhamjjbenham00000000000000/* keysigdialog.c * Prompts the user to change the key signature * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller */ #include #include #include #include "display/calculatepositions.h" #include "command/commandfuncs.h" #include "command/contexts.h" #include #include "ui/dialogs.h" #include "display/draw.h" #include "command/object.h" #include "command/staff.h" #include "core/utils.h" #include "core/cache.h" #include "ui/keysigdialog.h" #include "audio/pitchentry.h" #define KEYNAME_ARRAY_OFFSET 7 //FIXME: Make those translatable static gchar *majorkeys[15] = { "C flat", "G flat", "D flat", "A flat", "E flat", "B flat", "F", "C", "G", "D", "A", "E", "B", "F sharp", "C sharp" }; static gchar *minorkeys[15] = { "A flat", "E flat", "B flat", "F", "C", "G", "D", "A", "E", "B", "F sharp", "C sharp", "G sharp", "D sharp", "A sharp" }; static gchar *uminorkeys[15] = { "A FLAT", "E FLAT", "B FLAT", "F", "C", "G", "D", "A", "E", "B", "F SHARP", "C SHARP", "G SHARP", "D SHARP", "A SHARP" }; static gchar *umajorkeys[15] = { "C FLAT", "G FLAT", "D FLAT", "A FLAT", "E FLAT", "B FLAT", "F", "C", "G", "D", "A", "E", "B", "F SHARP", "C SHARP" }; /* UNUSED static gchar *modes[7] = { "lydian", "ionian", "mixolydian", "dorian", "aeolian", "phrygian", "locrain" }; */ typedef struct keysig_data { GtkWidget *checkbutton; GtkWidget *majorkeycombo; GtkWidget *minorkeycombo; // GtkWidget *okbutton; GList *majorlist; GList *minorlist; GtkWidget *radiobutton2; gboolean initial; } keysig_data; /** * Finds key name and returns its numeric value * * Returns G_MININT if keyname cannot be found */ gint findkey (GtkWidget * combobox, GList * list) { #if GTK_MAJOR_VERSION==3 gchar *tokeystring = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (combobox)); #else gchar *tokeystring = (gchar *) gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (combobox)->entry)); #endif gint ret; ret = g_list_position (list, g_list_find_custom (list, tokeystring, (GCompareFunc) strcmp)); if (ret != -1) return ret - KEYNAME_ARRAY_OFFSET; else return G_MININT; } /** * Sets the initial key signature on either the current staff or * across the entire score. */ static void set_keysig (keysig_data * cbdata) { DenemoMovement *si = Denemo.project->movement; staffnode *curstaff; DenemoStaff *curstaffstruct = (DenemoStaff *) Denemo.project->movement->currentstaff->data; gint tokey, mode; tokey = mode = 0; gint isminor = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cbdata->radiobutton2)) ? 1 : 0; if (isminor == 0) tokey = findkey (cbdata->majorkeycombo, cbdata->majorlist); else tokey = findkey (cbdata->minorkeycombo, cbdata->minorlist); if (tokey != G_MININT) { if (cbdata->checkbutton && !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cbdata->checkbutton))) { for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) { curstaffstruct = (DenemoStaff *) curstaff->data; dnm_setinitialkeysig (curstaffstruct, tokey - mode, isminor); } find_leftmost_allcontexts (si); } else { dnm_setinitialkeysig (curstaffstruct, tokey - mode, isminor); } } score_status (Denemo.project, TRUE); } /** * Inserts a key signature change either on a single staff or * across the entire score */ static void insert_keysig (keysig_data * kdata) { staffnode *curstaff; DenemoMovement *si = Denemo.project->movement; measurenode *curmeasure; gint tokey, mode; DenemoObject *newkey = NULL; tokey = mode = 0; gint isminor = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (kdata->radiobutton2)) ? 1 : 0; if (isminor == 0) tokey = findkey (kdata->majorkeycombo, kdata->majorlist); else tokey = findkey (kdata->minorkeycombo, kdata->minorlist); if (tokey != G_MININT) { take_snapshot (); if (kdata->checkbutton && !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (kdata->checkbutton))) { for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) { curmeasure = g_list_nth (staff_first_measure_node (curstaff), si->currentmeasurenum - 1); if (curmeasure) { if (curmeasure == si->currentmeasure) ((DenemoMeasure*)curmeasure->data)->objects = g_list_insert ((objnode *) ((DenemoMeasure*)curmeasure->data)->objects, newkey = dnm_newkeyobj ((tokey - mode), isminor, mode), si->cursor_x); else { if(si->cursor_x<2) ((DenemoMeasure*)curmeasure->data)->objects = g_list_prepend ((objnode *) ((DenemoMeasure*)curmeasure->data)->objects, newkey = dnm_newkeyobj ((tokey - mode), isminor, mode)); else ((DenemoMeasure*)curmeasure->data)->objects = g_list_append ((objnode *) ((DenemoMeasure*)curmeasure->data)->objects, newkey = dnm_newkeyobj ((tokey - mode), isminor, mode)); } newkey->keysig = newkey->object; cache_measure (curmeasure); //to give the new keysig cached values update_keysig_cache (curmeasure, g_list_find (((DenemoMeasure*)curmeasure->data)->objects, newkey)); //to update everything beyond the newkey if (curmeasure == si->currentmeasure) si->currentobject = g_list_nth ((objnode *) ((DenemoMeasure*)curmeasure->data)->objects, si->cursor_x); staff_show_which_accidentals ((DenemoStaff *) curstaff->data); } } /* End for all staffs*/ } /* End if check button all staffs*/ else { object_insert (Denemo.project, newkey = dnm_newkeyobj (tokey - mode, isminor, mode)); newkey->keysig = newkey->object; cache_measure (si->currentmeasure); //to give the new keysig cached values update_keysig_cache (si->currentmeasure, g_list_find (((DenemoMeasure*)si->currentmeasure->data)->objects, newkey)); //to update everything beyond the newkey staff_show_which_accidentals ((DenemoStaff *) si->currentstaff->data); } si->cursor_appending = FALSE; if (newkey) { adjust_tonal_center (((keysig *) (newkey->object))->accs); } } /* End if valid key*/ } //static void sensitize_ok_button (keysig_data *data) { // gtk_widget_set_sensitive (data->okbutton, TRUE); //} /** * Update the keysig dialogs combobox with the * major keys */ void majorcallback (GtkWidget * widget, struct keysig_data *data) { // sensitize_ok_button (data); gtk_widget_hide (data->minorkeycombo); gtk_widget_show (data->majorkeycombo); } /** * Update the keysig dialogs combobox with the * minor keys */ void minorcallback (GtkWidget * widget, struct keysig_data *data) { // sensitize_ok_button (data); gtk_widget_hide (data->majorkeycombo); gtk_widget_show (data->minorkeycombo); } /* interprets the scheme_string to set key number and isminor value */ static gboolean key_from_string (GString * scheme_string, gint * tokey, gint * isminor) { gchar *upper = g_ascii_strup (scheme_string->str, scheme_string->len); gint UNSET = G_MININT; gint length = 0; *isminor = (g_strstr_len (upper, -1, "MINOR")) ? 1 : 0; //g_debug("upper %s, scheme %s\n", upper, scheme_string->str); gchar **keystosearch = (*isminor ? uminorkeys : umajorkeys); gint i; for (*tokey = UNSET, i = 0; i < 15; i++) if (g_strstr_len (upper, -1, keystosearch[i])) { if (strlen (keystosearch[i]) > length) { *tokey = i - KEYNAME_ARRAY_OFFSET; length = strlen (keystosearch[i]); } } g_free (upper); if (*tokey != UNSET) return TRUE; return FALSE; } /** * callback for inserting a keysig change * calls key_change with the INSERT argument * if called with action==NULL inserts the keychange from the GString param * and returns the key in it */ void key_change_insert (DenemoAction * action, DenemoScriptParam * param) { GET_1PARAM (action, param, keyname); DenemoProject *gui = Denemo.project; DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; if (keyname == NULL) key_change (gui, INSERT); else { gint tokey, isminor; GString *scheme_str = g_string_new (keyname); gboolean valid = key_from_string (scheme_str, &tokey, &isminor); g_string_free (scheme_str, TRUE); if (valid) { object_insert (gui, dnm_newkeyobj (tokey, isminor, 0)); staff_show_which_accidentals (gui->movement->currentstaff->data); displayhelper (gui); } gchar *key; isminor = 0; gboolean number; // FIXME try to find the previous keysig object, else return initial keysig /* if currentobject is keysig change return the keysig */ DenemoObject *curobj = (DenemoObject *) Denemo.project->movement->currentobject->data; if (curobj && curobj->type == KEYSIG) { isminor = ((keysig *) curobj->object)->isminor; number = ((keysig *) curobj->object)->number + KEYNAME_ARRAY_OFFSET; } else { isminor = (curstaffstruct->keysig.isminor == 1); number = curstaffstruct->keysig.number + KEYNAME_ARRAY_OFFSET; } /* return initial key */ if (isminor) key = g_strdup_printf ("%s %s", minorkeys[number], "Minor"); else key = g_strdup_printf ("%s %s", majorkeys[number], "Major"); g_string_assign (param->string, key); g_free (key); } } gchar * get_prevailing_keysig_name (void) { gchar *key; keysig *keysig = get_prevailing_context (KEYSIG); gboolean isminor = keysig->isminor; gint number = keysig->number + KEYNAME_ARRAY_OFFSET; if (isminor) key = g_strdup_printf ("%s %s", minorkeys[number], "Minor"); else key = g_strdup_printf ("%s", majorkeys[number]); //do not use Major as the crude algorithm identifies the letter A in major as the note name A !! return key; } /** * callback for changing the initial keysig * calls key_change with the CHANGEINITIAL argument */ void key_change_initial (DenemoAction * action, DenemoScriptParam * param) { GET_1PARAM (action, param, keyname); DenemoProject *gui = Denemo.project; DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; if (keyname == NULL) key_change (gui, CHANGEINITIAL); else { if (query && !strcmp ("keysigname", query)) { gchar *key; if (curstaffstruct->keysig.isminor == 1) key = g_strdup_printf ("%s %s", minorkeys[curstaffstruct->keysig.number + KEYNAME_ARRAY_OFFSET], "Minor"); else key = g_strdup_printf ("%s %s", majorkeys[curstaffstruct->keysig.number + KEYNAME_ARRAY_OFFSET], "Major"); g_string_assign (param->string, key); param->status = TRUE; g_free (key); } else { gint tokey, isminor; GString *scheme_str = g_string_new (keyname); gboolean valid = key_from_string (scheme_str, &tokey, &isminor); g_string_free (scheme_str, TRUE); if (valid) { param->status = TRUE; dnm_setinitialkeysig (curstaffstruct, tokey, isminor); displayhelper (gui); } } } } static void button_response (GtkWidget * dialog, gint response_id, keysig_data * data) { DenemoProject *gui = Denemo.project; if (response_id == GTK_RESPONSE_ACCEPT) { if (data->initial) set_keysig (data); else { if (gui->movement->currentobject && ((DenemoObject *) gui->movement->currentobject->data)->type == KEYSIG) gui->movement->cursor_appending?deletepreviousobject(NULL, NULL):deleteobject (NULL, NULL); insert_keysig (data); } cache_all ();// this may be overkill, but if a keysig change is being placed immediately after a clef change then the object does not have a clef cached on it. score_status (gui, TRUE); displayhelper (gui); } gtk_widget_destroy (dialog); g_free (data); } /** * Key sig change dialog * Allows user to select key from a drop down list * */ void key_change (DenemoProject * gui, actiontype action) { GtkWidget *dialog; gboolean initial = action == CHANGEINITIAL ? TRUE : FALSE; /* GUI setup */ dialog = gtk_dialog_new_with_buttons (_("Key Signature Change"), GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); // GtkWidget *okbutton = gtk_dialog_add_button (GTK_DIALOG(dialog), _("_OK"), GTK_RESPONSE_ACCEPT); //gtk_widget_set_sensitive (okbutton, FALSE); if (action == CHANGEINITIAL) gtk_window_set_title (GTK_WINDOW (dialog), _("Change initial key signature")); else gtk_window_set_title (GTK_WINDOW (dialog), _("Insert key signature change")); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); GtkWidget *vbox = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (content_area), vbox); keysig_data *keysig_widgets = (keysig_data *) g_malloc0 (sizeof (keysig_data)); // keysig_widgets->okbutton = okbutton; GtkWidget *label; GtkWidget *radiobutton1, *radiobutton2; GtkWidget *checkbutton; static GList *majorlist = NULL; static GList *minorlist = NULL; gint i; if (majorlist == NULL) { for (i = 0; i < G_N_ELEMENTS (majorkeys); i++) majorlist = g_list_append (majorlist, majorkeys[i]); for (i = 0; i < G_N_ELEMENTS (minorkeys); i++) minorlist = g_list_append (minorlist, minorkeys[i]); } #if GTK_MAJOR_VERSION==3 GtkWidget *majorkeycombo = gtk_combo_box_text_new (); GtkWidget *minorkeycombo = gtk_combo_box_text_new (); for (i = 0; i < G_N_ELEMENTS (majorkeys); i++) gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (majorkeycombo), majorkeys[i]); for (i = 0; i < G_N_ELEMENTS (minorkeys); i++) gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (minorkeycombo), minorkeys[i]); #else GtkWidget *majorkeycombo = gtk_combo_new (); gtk_combo_set_popdown_strings (GTK_COMBO (majorkeycombo), majorlist); GtkWidget *minorkeycombo = gtk_combo_new (); gtk_combo_set_popdown_strings (GTK_COMBO (minorkeycombo), minorlist); #endif // g_signal_connect_swapped (majorkeycombo, "changed", sensitize_ok_button, keysig_widgets); // g_signal_connect_swapped (minorkeycombo, "changed", sensitize_ok_button, keysig_widgets); GtkWidget *pack_to_vbox = gtk_vbox_new (FALSE, 1); label = gtk_label_new (_("Select desired key signature")); gtk_container_add (GTK_CONTAINER (pack_to_vbox), label); radiobutton1 = gtk_radio_button_new_with_label (NULL, _("Major")); g_signal_connect (G_OBJECT (radiobutton1), "clicked", G_CALLBACK (majorcallback), keysig_widgets); gtk_container_add (GTK_CONTAINER (pack_to_vbox), radiobutton1); radiobutton2 = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton1)), _("Minor")); g_signal_connect (G_OBJECT (radiobutton2), "clicked", G_CALLBACK (minorcallback), keysig_widgets); gtk_container_add (GTK_CONTAINER (pack_to_vbox), radiobutton2); #if GTK_MAJOR_VERSION==3 gtk_combo_box_set_active (GTK_COMBO_BOX (majorkeycombo), 7); gtk_combo_box_set_active (GTK_COMBO_BOX (minorkeycombo), 7); #endif gtk_container_add (GTK_CONTAINER (pack_to_vbox), majorkeycombo); gtk_container_add (GTK_CONTAINER (pack_to_vbox), minorkeycombo); if (gui->movement->currentobject && ((DenemoObject *) gui->movement->currentobject->data)->type == KEYSIG) checkbutton = NULL; else { checkbutton = gtk_check_button_new_with_label (_("Current Staff Only?")); gtk_container_add (GTK_CONTAINER (pack_to_vbox), checkbutton); } keysig_widgets->checkbutton = checkbutton; keysig_widgets->radiobutton2 = radiobutton2; keysig_widgets->majorkeycombo = majorkeycombo; keysig_widgets->minorkeycombo = minorkeycombo; keysig_widgets->majorlist = majorlist; keysig_widgets->minorlist = minorlist; keysig_widgets->initial = initial; gtk_widget_grab_focus (majorkeycombo); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radiobutton1), TRUE); gtk_widget_hide (keysig_widgets->minorkeycombo); gtk_widget_show (keysig_widgets->majorkeycombo); gtk_container_add (GTK_CONTAINER (vbox), pack_to_vbox); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_widget_show_all (dialog); gtk_widget_hide (keysig_widgets->minorkeycombo); g_signal_connect (dialog, "response", G_CALLBACK (button_response), keysig_widgets); } denemo-2.2.0/src/ui/PaxHeaders.19168/tomeasuredialog.c0000644000000000000000000000013213135434036017265 xustar0030 mtime=1500919838.366648472 30 atime=1500919921.246648472 30 ctime=1500919914.339981805 denemo-2.2.0/src/ui/tomeasuredialog.c0000644000175000017500000000471413135434036021144 0ustar00jjbenhamjjbenham00000000000000/* tomeasuredialog.cpp * creates a dialog box asking the user if he wants to jump to a * particular measure * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #include #include #include #include "display/calculatepositions.h" #include "command/commandfuncs.h" #include "command/contexts.h" #include #include "display/draw.h" #include "ui/moveviewport.h" #include "command/staff.h" #include "core/utils.h" void tomeasurenum (DenemoAction * action, gpointer param) { DenemoProject *gui = Denemo.project; gint measnum; gint max_mesure = g_list_length (((DenemoStaff *) (gui->movement->thescore->data))->themeasures); if (!action) { if (((DenemoScriptParam *) param)->string != NULL) { measnum = atoi (((DenemoScriptParam *) param)->string->str); if (measnum > max_mesure) set_currentmeasurenum (gui, max_mesure); if (measnum <= 0) set_currentmeasurenum (gui, 1); else set_currentmeasurenum (gui, measnum); } } else { GtkWidget *dialog; GtkWidget *label; GtkWidget *measure; static gint last_measure = 1; dialog = gtk_dialog_new_with_buttons (_("Go to measure"), GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); label = gtk_label_new (_("Go to measure:")); gtk_container_add (GTK_CONTAINER (content_area), label); measure = gtk_spin_button_new_with_range (1.0, (gdouble) max_mesure, 1.0); gtk_container_add (GTK_CONTAINER (content_area), measure); gtk_spin_button_set_value (GTK_SPIN_BUTTON (measure), (gdouble) last_measure); gtk_label_set_mnemonic_widget (GTK_LABEL (label), measure); gtk_entry_set_activates_default (GTK_ENTRY (measure), TRUE); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { last_measure = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (measure)); set_currentmeasurenum (gui, last_measure); } gtk_widget_destroy (dialog); } } denemo-2.2.0/src/ui/PaxHeaders.19168/tupletdialog.c0000644000000000000000000000013213135434036016576 xustar0030 mtime=1500919838.366648472 30 atime=1500919921.259981805 30 ctime=1500919914.339981805 denemo-2.2.0/src/ui/tupletdialog.c0000644000175000017500000000414313135434036020451 0ustar00jjbenhamjjbenham00000000000000#include "dialogs.h" #include #include /* This is broken at the moment because the program doesn't pause * when the dialog is created. Fix me. */ void tupletchangedialog (DenemoObject * theobj, GtkWidget * scorearea) { GtkWidget *dialog; GtkWidget *label; GtkWidget *numerator; GtkWidget *denominator; GString *entrycontent = NULL; dialog = gtk_dialog_new_with_buttons (_("Customize tuplet multiplier"), NULL, (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); if (!entrycontent) entrycontent = g_string_new (NULL); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); label = gtk_label_new (_("Numerator")); gtk_container_add (GTK_CONTAINER (content_area), label); numerator = gtk_entry_new (); g_string_sprintf (entrycontent, "%d", ((tupopen *) theobj->object)->numerator); gtk_entry_set_text (GTK_ENTRY (numerator), entrycontent->str); gtk_container_add (GTK_CONTAINER (content_area), numerator); label = gtk_label_new (_("Denominator")); gtk_container_add (GTK_CONTAINER (content_area), label); denominator = gtk_entry_new (); g_string_sprintf (entrycontent, "%d", ((tupopen *) theobj->object)->denominator); gtk_entry_set_text (GTK_ENTRY (denominator), entrycontent->str); gtk_container_add (GTK_CONTAINER (content_area), denominator); gtk_widget_grab_focus (numerator); gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_entry_set_activates_default (GTK_ENTRY (numerator), TRUE); gtk_entry_set_activates_default (GTK_ENTRY (denominator), TRUE); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { ((tupopen *) theobj->object)->numerator = atoi (gtk_entry_get_text (GTK_ENTRY (numerator))); ((tupopen *) theobj->object)->denominator = atoi (gtk_entry_get_text (GTK_ENTRY (denominator))); } gtk_widget_destroy (dialog); } denemo-2.2.0/src/ui/PaxHeaders.19168/mwidthdialog.c0000644000000000000000000000013213135434036016555 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.259981805 30 ctime=1500919914.316648472 denemo-2.2.0/src/ui/mwidthdialog.c0000644000175000017500000000630113135434036020426 0ustar00jjbenhamjjbenham00000000000000/* mwidthdialog.cpp * a callback that creates a dialog box prompting the user to change the * measure width - this is a denemo display-only thing(?) * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #include #include #include #include "display/calculatepositions.h" #include "command/commandfuncs.h" #include "command/contexts.h" #include #include "display/draw.h" #include "command/staff.h" #include "core/utils.h" struct callbackdata { DenemoProject *gui; GtkWidget *textentry; }; /** * Set the measurewidth to the given value * */ void set_mwidth (GtkWidget * widget, gpointer data) { struct callbackdata *cbdata = (struct callbackdata *) data; gint width = atoi (gtk_entry_get_text (GTK_ENTRY (cbdata->textentry))); if (width) cbdata->gui->movement->measurewidth = width; adjustmeasurewidth (cbdata->gui->movement, 0); draw_score_area(); } /** * Dialog to set the si->measurewidth value * */ void score_mwidth_change (DenemoAction * action, gpointer param) { DenemoProject *gui = Denemo.project; GtkWidget *dialog; GtkWidget *label; GtkWidget *textentry; // GtkWidget *okbutton; // GtkWidget *cancelbutton; static GString *entrycontent = NULL; static struct callbackdata cbdata; if (!entrycontent) entrycontent = g_string_new (NULL); dialog = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (dialog), _("Set minimum measure width")); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); GtkWidget *hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (content_area), hbox); label = gtk_label_new (_("Enter width (in pixels) of measures:")); gtk_container_add (GTK_CONTAINER (hbox), label); textentry = gtk_entry_new (); g_string_sprintf (entrycontent, "%d", gui->movement->measurewidth); gtk_entry_set_text (GTK_ENTRY (textentry), entrycontent->str); gtk_box_pack_start (GTK_BOX (hbox), textentry, TRUE, TRUE, 0); gtk_widget_show (textentry); // okbutton = gtk_button_new_with_label (_("OK")); // gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), // okbutton, TRUE, TRUE, 0); cbdata.textentry = textentry; cbdata.gui = gui; processenter (textentry, G_CALLBACK (set_mwidth), cbdata, dialog); // gtk_signal_connect (G_OBJECT (okbutton), "clicked", // GTK_SIGNAL_FUNC (set_mwidth), &cbdata); // gtk_signal_connect_object (G_OBJECT (okbutton), "clicked", // GTK_SIGNAL_FUNC (gtk_widget_destroy), // G_OBJECT (dialog)); // gtk_widget_show (okbutton); // cancelbutton = gtk_button_new_with_label (_("Cancel")); // gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), // cancelbutton, TRUE, TRUE, 0); // gtk_signal_connect_object (G_OBJECT (cancelbutton), "clicked", // GTK_SIGNAL_FUNC (gtk_widget_destroy), // G_OBJECT (dialog)); // gtk_widget_show (cancelbutton); gtk_widget_grab_focus (textentry); gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); gtk_widget_show_all (dialog); } denemo-2.2.0/src/PaxHeaders.19168/Makefile.am0000644000000000000000000000013213135434036015354 xustar0030 mtime=1500919838.333315139 30 atime=1500919921.259981805 30 ctime=1500919914.033315139 denemo-2.2.0/src/Makefile.am0000644000175000017500000001434213135434036017231 0ustar00jjbenhamjjbenham00000000000000bin_PROGRAMS = denemo dist_pkgdata_DATA = instruments.xml denemo_SOURCES = \ audio/audio.h \ audio/audiocapture.c \ audio/audiocapture.h \ audio/instrumentname.c \ audio/instrumentname.h \ audio/midi.c \ audio/midi.h \ audio/parseinstruments.c \ audio/parseinstruments.h \ audio/pitchentry.c \ audio/pitchentry.h \ audio/pitchrecog.c \ audio/pitchrecog.h \ audio/playback.c \ audio/playback.h \ command/changenotehead.c \ command/changenotehead.h \ command/chord.c \ command/chord.h \ command/clef.c \ command/clef.h \ command/commandfuncs.c \ command/commandfuncs.h \ command/contexts.c \ command/contexts.h \ command/fakechord.c \ command/fakechord.h \ command/figure.c \ command/figure.h \ command/grace.c \ command/grace.h \ command/keyresponses.c \ command/keyresponses.h \ command/keysig.c \ command/keysig.h \ command/lilydirectives.c \ command/lilydirectives.h \ command/lyric.c \ command/lyric.h \ command/measure.c \ command/measure.h \ command/processstaffname.c \ command/processstaffname.h \ command/object.c \ command/object.h \ command/scorelayout.c \ command/scorelayout.h \ command/score.c \ command/score.h \ command/select.c \ command/select.h \ command/staff.c \ command/staff.h \ command/timesig.c \ command/timesig.h \ command/tuplet.c \ command/tuplet.h \ core/binreloc.c \ core/binreloc.h \ core/denemo_types.c \ core/cache.c \ core/cache.h \ core/external.c \ core/external.h \ core/exportxml.c \ core/exportxml.h \ core/graphicseditor.c \ core/graphicseditor.h \ core/importxml.c \ core/importxml.h \ core/kbd-custom.c \ core/kbd-custom.h \ core/keyboard.c \ core/keyboard.h \ core/keymapio.c \ core/keymapio.h \ core/main.c \ core/palettestorage.c \ core/palettestorage.h \ core/prefops.c \ core/prefops.h \ core/twoints.h \ core/utils.c \ core/utils.h \ core/view.c \ core/view.h \ core/entries.h \ display/accwidths.h \ display/calculatepositions.c \ display/calculatepositions.h \ display/displayanimation.c \ display/displayanimation.h \ display/drawaccidentals.c \ display/drawbarline.c \ display/draw.c \ display/drawclefs.c \ display/drawcursor.c \ display/drawdynamic.c \ display/drawfakechord.c \ display/drawfigure.c \ display/draw.h \ display/drawingprims.h \ display/drawkey.c \ display/drawlilydir.c \ display/drawlyric.c \ display/drawnotes.c \ display/drawselection.c \ display/drawstemdir.c \ display/drawtimesig.c \ display/drawtuplets.c \ display/hairpin.c \ display/hairpin.h \ display/notewidths.h \ display/slurs.c \ display/slurs.h \ export/audiofile.c \ export/audiofile.h \ export/exportabc.c \ export/exportabc.h \ export/exportlilypond.c \ export/exportlilypond.h \ export/exportmidi.c \ export/exportmidi.h \ export/file.c \ export/file.h \ export/guidedimportmidi.c \ export/guidedimportmidi.h \ export/importmidi.c \ export/importmidi.h \ export/importmusicxml.c \ export/importmusicxml.h \ export/print.c \ export/print.h \ export/xmldefs.h \ scripting/scheme-callbacks.c \ scripting/scheme-callbacks.h \ scripting/scheme-identifiers.c \ scripting/scheme-identifiers.h \ scripting/scheme_cb.h \ scripting/scheme.h \ source/sourceaudio.c \ source/sourceaudio.h \ printview/svgview.h \ printview/svgview.c \ ui/clefdialog.c \ ui/dialogs.h \ ui/help.c \ ui/help.h \ ui/kbd-interface.c \ ui/kbd-interface.h \ ui/keysigdialog.c \ ui/keysigdialog.h \ ui/mousing.c \ ui/mousing.h \ ui/moveviewport.c \ ui/moveviewport.h \ ui/mwidthdialog.c \ ui/palettes.c \ ui/palettes.h \ ui/virtualkeyboard.c \ ui/virtualkeyboard.h \ ui/playbackprops.c \ ui/playbackprops.h \ ui/prefdialog.c \ ui/scoreprops.c \ ui/staffpropdialog.c \ ui/texteditors.c \ ui/texteditors.h \ ui/timedialog.c \ ui/tomeasuredialog.c \ ui/tupletdialog.c \ ui/markup.c \ ui/markup.h \ core/menusystem.c \ core/menusystem.h nodist_denemo_SOURCES = pathconfig.h if HAVE_EVINCE denemo_SOURCES += \ source/source.c \ source/source.h \ source/proof.c \ source/proof.h \ printview/markupview.h \ printview/markupview.c \ printview/printview.h \ printview/printview.c endif noinst_LIBRARIES = libaudiobackend.a libaudiobackend_a_CFLAGS = -W -Wall -Wno-unused-parameter $(PLATFORM_CFLAGS) libaudiobackend_a_SOURCES = \ audio/alsabackend.c \ audio/alsabackend.h \ audio/audiointerface.c \ audio/audiointerface.h \ audio/dummybackend.c \ audio/dummybackend.h \ audio/eventqueue.c \ audio/eventqueue.h \ audio/fluid.c \ audio/fluid.h \ audio/jackbackend.c \ audio/jackbackend.h \ audio/jackutil.c \ audio/jackutil.h \ audio/portaudiobackend.c \ audio/portaudiobackend.h \ audio/portaudioutil.c \ audio/portaudioutil.h \ audio/portmidibackend.c \ audio/portmidibackend.h \ audio/portmidiutil.c \ audio/portmidiutil.h \ audio/ringbuffer.c \ audio/ringbuffer.h AM_CPPFLAGS = \ $(BINRELOC_CFLAGS) \ $(PORTMIDI_INCLUDE) \ -I$(top_srcdir)/intl \ -I$(top_srcdir)/include \ -I$(top_srcdir)/libs/libsffile \ -I$(top_srcdir)/pixmaps \ -DPREFIX=\"$(prefix)\" \ -DBINDIR=\"$(exec_prefix)/bin\" \ -DLOCALEDIR=\"${LOCALEDIR}\"\ -DSYSCONFDIR=\"$(sysconfdir)/\" \ -DPKGDATADIR=\"$(pkgdatadir)/\" \ -DDATAROOTDIR=\"$(datarootdir)/\" \ -DPKGNAME=\"denemo\" \ -DG_LOG_DOMAIN=\"Denemo\" denemo_LDADD = $(INTLLIBS) libaudiobackend.a -L$(top_builddir)/libs/libsffile -lsffile if !HAVE_SMF AM_CPPFLAGS += -I$(top_srcdir)/libs/libsmf denemo_LDADD += -L$(top_builddir)/libs/libsmf -lsmf endif pathconfig.h: $(top_builddir)/config.status -@rm pathconfig.tmp @echo "Generating pathconfig.h..." @echo '#define DENEMO_LOAD_PATH "@denemo_load_path@"' >pathconfig.tmp @echo '#define DENEMO_BIN_PATH "@denemo_bin_path@"' >>pathconfig.tmp @mv pathconfig.tmp $@ noinst_HEADERS = \ audio/parseinstruments.h \ core/keyboard.h DISTCLEANFILES: pathconfig.h denemo-2.2.0/src/PaxHeaders.19168/printview0000644000000000000000000000013213135434152015271 xustar0030 mtime=1500919914.363315139 30 atime=1500919914.539981806 30 ctime=1500919914.363315139 denemo-2.2.0/src/printview/0000755000175000017500000000000013135434152017217 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/src/printview/PaxHeaders.19168/markupview.c0000644000000000000000000000013213135434036017705 xustar0030 mtime=1500919838.356648472 30 atime=1500919921.276648472 30 ctime=1500919914.359981805 denemo-2.2.0/src/printview/markupview.c0000644000175000017500000002043313135434036021560 0ustar00jjbenhamjjbenham00000000000000#include #include #include #include #include "export/print.h" #include "ui/markup.h" #include "printview/printview.h" gboolean finished = FALSE; gint changes = 0; static GtkWidget *DenemoMarkupArea; static gboolean overdraw_print (cairo_t * cr) { gint x, y; gint message_height = 50; // get_window_position (&x, &y); //cairo_translate (cr, -x, -y); //cairo_save (cr); if (Denemo.printstatus->invalid) { cairo_set_source_rgba (cr, 0.5, 0.0, 0.0, 0.4); cairo_set_font_size (cr, 48.0); cairo_move_to (cr, 50, message_height); cairo_show_text (cr, _( "Cannot Typeset!")); cairo_move_to (cr, 50, message_height + 50); cairo_set_font_size (cr, 24.0); cairo_show_text (cr, _( "Edit the LilyPond syntax in the pane below or cancel")); } return TRUE; } static void set_printarea_doc (EvDocument * doc) { EvDocumentModel *model; if (DenemoMarkupArea == NULL) return; model = g_object_get_data (G_OBJECT (DenemoMarkupArea), "model"); //there is no ev_view_get_model(), when there is use it if (model == NULL) { model = ev_document_model_new_with_document (doc); ev_view_set_model ((EvView *) DenemoMarkupArea, model); g_object_set_data (G_OBJECT (DenemoMarkupArea), "model", model); //there is no ev_view_get_model(), when there is use it } else { g_object_unref (ev_document_model_get_document (model)); //FIXME check if this releases the file lock on windows.s ev_document_model_set_document (model, doc); } } static void set_printarea (GError ** err) { GFile *file; gchar *filename = Denemo.printstatus->printname_pdf[Denemo.printstatus->cycle]; //g_debug("using %s\n", filename); if (Denemo.printstatus->invalid == 0) Denemo.printstatus->invalid = (g_file_test (filename, G_FILE_TEST_EXISTS)) ? 0 : 3; file = g_file_new_for_commandline_arg (filename); //g_free(filename); gchar *uri = g_file_get_uri (file); g_object_unref (file); EvDocument *doc = ev_document_factory_get_document (uri, err); //gint x = 0, y = 0, hupper, hlower, vupper, vlower;//store current position for reloading //get_window_position(&x, &y, &hupper, &hlower, &vupper, &vlower); if (*err) { g_warning ("Trying to read the pdf file %s gave an error: %s", uri, (*err)->message); Denemo.printstatus->invalid = 3; gtk_widget_queue_draw (DenemoMarkupArea); } else set_printarea_doc (doc); return; } void markupview_finished (G_GNUC_UNUSED GPid pid, gint status, gboolean print) { changes = 0; finished = TRUE; #if GLIB_CHECK_VERSION(2,34,0) { GError *err = NULL; if (!g_spawn_check_exit_status (status, &err)) g_warning ("Lilypond did not end successfully: %s", err->message); } #endif g_spawn_close_pid (Denemo.printstatus->printpid); //g_debug("background %d\n", Denemo.printstatus->background); if (Denemo.printstatus->background == STATE_NONE) { process_lilypond_errors ((gchar *) get_printfile_pathbasename ()); } else { if (LilyPond_stderr != -1) close (LilyPond_stderr); LilyPond_stderr = -1; } Denemo.printstatus->printpid = GPID_NONE; unpause_continuous_typesetting (); GError *err = NULL; set_printarea (&err); if (Denemo.printstatus->invalid) changes++; } #if GTK_MAJOR_VERSION==3 static gint markuparea_draw_event (G_GNUC_UNUSED GtkWidget * w, cairo_t * cr) { return overdraw_print (cr); } #else static gint markuparea_draw_event (GtkWidget * widget, GdkEventExpose * event) { /* Setup a cairo context for rendering and clip to the exposed region. */ cairo_t *cr = gdk_cairo_create (event->window); gdk_cairo_region (cr, event->region); cairo_clip (cr); overdraw_print (cr); cairo_destroy (cr); return TRUE; } #endif void install_markup_preview (GtkWidget * top_vbox, gchar *tooltip) { GtkWidget *main_vbox = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (top_vbox), main_vbox); ev_init (); DenemoMarkupArea = (GtkWidget *) ev_view_new (); GtkWidget *score_and_scroll_box = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_size_request (GTK_WIDGET (score_and_scroll_box), 600, 200); gtk_box_pack_start (GTK_BOX (main_vbox), score_and_scroll_box, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER (score_and_scroll_box), DenemoMarkupArea); gtk_widget_show_all (main_vbox); #if GTK_MAJOR_VERSION != 2 g_signal_connect_after (G_OBJECT (DenemoMarkupArea), "draw", G_CALLBACK (markuparea_draw_event), NULL); #else g_signal_connect_after (G_OBJECT (DenemoMarkupArea), "expose_event", G_CALLBACK (markuparea_draw_event), NULL); #endif } void drop_markup_area (void) { DenemoMarkupArea = NULL; } gchar *Prior, *Post; static void preview_text (gchar *text) { gchar *syntax = g_strconcat (Prior, text, Post, NULL); create_pdf_for_lilypond (syntax); g_free (syntax); } gboolean run_preview (GtkWidget *textbuffer) { if (finished && changes) { GtkTextIter startiter, enditer; gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER(textbuffer), &startiter); gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER(textbuffer), &enditer); gchar *text = gtk_text_buffer_get_text (GTK_TEXT_BUFFER(textbuffer), &startiter, &enditer, FALSE); pause_continuous_typesetting (); finished = FALSE; preview_text (text); } return TRUE; //continuous timer } static gboolean keypress_callback (GtkWidget * w, GdkEventKey * event, GtkWidget *textbuffer) { changes++; return FALSE; //pass it on to the standard handler. } //This is a modal get, however the routine in markup.c to get markup can be run non-modally, so if the user then ran this routine while the other was running things would go badly wrong FIXM£ //The two routines need to be designed together, the other allows a collection of buttons to be present injecting text into the text editor. gchar *get_lilypond_syntax_from_user (gchar* title, gchar *instruction, gchar *prior_context, gchar *post_context, gchar *initial_markup) { Prior = prior_context; Post = post_context; gchar *ret = NULL; GtkWidget *textview = gtk_text_view_new (); GtkWidget *dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW (Denemo.window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); GtkWidget *main_vbox = gtk_vbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (content_area), main_vbox, TRUE, TRUE, 10); install_markup_preview (main_vbox, "type markup"); GtkWidget *label = gtk_label_new(instruction); gtk_box_pack_start (GTK_BOX (main_vbox), label, FALSE, TRUE, 0); GtkWidget *sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (main_vbox), sw, TRUE, TRUE, 10); gtk_container_add (GTK_CONTAINER (sw), textview); GtkTextBuffer *textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview)); gtk_text_buffer_set_text (textbuffer, initial_markup, -1); g_object_set_data (G_OBJECT (textview), "textbuffer", textbuffer); g_signal_connect_after (G_OBJECT (textview), "key-release-event", G_CALLBACK (keypress_callback), textbuffer); gtk_widget_show_all (dialog); //run_preview (textbuffer); finished = TRUE; changes = 1; gint timer_id = g_timeout_add ( 100, (GSourceFunc)run_preview, textbuffer); gint result = gtk_dialog_run (GTK_DIALOG (dialog)); g_source_remove (timer_id); if (result==GTK_RESPONSE_ACCEPT) { GtkTextIter startiter, enditer; gtk_text_buffer_get_start_iter (textbuffer, &startiter); gtk_text_buffer_get_end_iter (textbuffer, &enditer); gchar *text = gtk_text_buffer_get_text (textbuffer, &startiter, &enditer, FALSE); ret = text; } gtk_widget_destroy (dialog); return ret; } denemo-2.2.0/src/printview/PaxHeaders.19168/svgview.c0000644000000000000000000000013213135434036017205 xustar0030 mtime=1500919838.356648472 30 atime=1500919921.296648472 30 ctime=1500919914.299981805 denemo-2.2.0/src/printview/svgview.c0000644000175000017500000015063113135434036021064 0ustar00jjbenhamjjbenham00000000000000 /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA */ #include #include #include #include "audio/playback.h" #include "export/print.h" #include "core/view.h" #include "command/scorelayout.h" #include "command/lilydirectives.h" #include "export/exportlilypond.h" #include "export/exportmidi.h" #include "printview/printview.h" #include "scripting/scheme-callbacks.h" #include "source/sourceaudio.h" #include #include #include #ifndef USE_EVINCE void set_continuous_typesetting (gboolean setting){return FALSE;} gboolean continuous_typesetting () {return FALSE;} #endif static gint changecount = -1; //changecount when the playback typeset was last created static gboolean RightButtonPressed = FALSE; static gboolean LeftButtonPressed = FALSE; static gboolean Dragging = FALSE; static gint RightButtonX, LeftButtonX, DragX; static gint RightButtonY, LeftButtonY, DragY, LastY; static gdouble IntroTime = 10.0, ScrollRate = 10.0; static gboolean AllPartsTypeset = FALSE; static gboolean PartOnly = FALSE; static GtkAdjustment *VAdj = NULL; static gdouble ScrollTime = -1.0; static GtkWidget *ClearScrollPointsButton = NULL; typedef struct Timing { gdouble time; gdouble duration; gdouble x; gdouble y; gint line; gint col; DenemoObject *object;//the denemo object that corresponds to line, col } Timing; GList *TheTimings = NULL, *LastTiming=NULL, *NextTiming=NULL; gdouble TheScale = 1.0; //Scale of score font size relative to 18pt static gint Locationx = -1, Locationy; /* Defines for making traversing XML trees easier */ #define FOREACH_CHILD_ELEM(childElem, parentElem) \ for ((childElem) = (parentElem)->xmlChildrenNode; \ (childElem) != NULL; \ (childElem) = (childElem)->next) #define ELEM_NAME_EQ(childElem, childElemName) \ (strcmp ((gchar *)(childElem)->name, (childElemName)) == 0) #define ILLEGAL_ELEM(parentElemName, childElem) \ do \ { \ g_warning ("Illegal element inside <%s>: <%s>", parentElemName, \ (childElem)->name); \ } while (0) #define RETURN_IF_ELEM_NOT_FOUND(parentElemName, childElem, childElemName) \ do \ { \ if (childElem == NULL) \ { \ g_warning ("Element <%s> not found inside <%s>", childElemName, \ parentElemName); \ return -1; \ } \ } while (0) /** * Get the text from the child node list of elem, convert it to an integer, * and return it. If unsuccessful, return G_MAXINT. */ static gint getXMLIntChild (xmlNodePtr elem) { gchar *text = (gchar *) xmlNodeListGetString (elem->doc, elem->xmlChildrenNode, 1); gint num = G_MAXINT; if (text == NULL) { g_warning ("No child text found %s", elem->name); } else { if (sscanf (text, " %d", &num) != 1) { g_warning ("Could not convert child text \"%s\" of <%s> to number", text, elem->name); num = G_MAXINT; } g_free (text); } return num; } //Ensures the playback view window is visible. static void show_playback_view (void) { GtkWidget *w = gtk_widget_get_toplevel (Denemo.playbackview); if (!gtk_widget_get_visible (w)) set_toggle (TogglePlaybackView_STRING, TRUE); else gtk_window_present (GTK_WINDOW (w)); } //draw a circle static void place_spot (cairo_t * cr, gdouble x, gdouble y, gdouble size) { cairo_move_to (cr, x, y); cairo_arc (cr, x, y, size, 0.0, 2 * M_PI); cairo_fill (cr); } static void get_window_size (gint * w, gint * h) { GdkWindow *window; if (!GTK_IS_LAYOUT (Denemo.playbackview)) window = gtk_widget_get_window (GTK_WIDGET (Denemo.playbackview)); else window = gtk_layout_get_bin_window (GTK_LAYOUT (Denemo.playbackview)); if (window) { #if GTK_MAJOR_VERSION==2 gdk_drawable_get_size (window, w, h); #else *w = gdk_window_get_width (window); *h = gdk_window_get_height (window); #endif } } gboolean attach_timings (void) { if (TheTimings == NULL) return FALSE; GList *g; for (g=TheTimings;g;g=g->next) { Timing *this = (Timing *)g->data; DenemoObject *obj = get_object_at_lilypond (this->line, this->col); //g_print ("Attaching time %.2f (duration %.2f) (x=%.2f, y-%.2f) at line %d column %d\n",this->time, this->duration, this->x, this->y, this->line, this->col); if (obj) { obj->earliest_time = this->time; obj->latest_time = this->time + this->duration; //g_print ("Set %.2f %.2f\n", obj->earliest_time, obj->latest_time); this->object = obj; } else return FALSE; } return TRUE; } DenemoObject *get_object_for_time (gdouble time, gboolean start) { if ((changecount != Denemo.project->movement->changecount) || (Denemo.project->movement->changecount != Denemo.project->movement->smfsync)) return NULL; GList *g; for (g=TheTimings;g;g=g->next) { Timing *this = (Timing *)g->data; //g_print ("Seeking %.2f Timing %.2f to %.2f\n", time, this->object->earliest_time, this->object->latest_time); if (this->object && ((start? this->object->earliest_time:this->object->latest_time) > time)) return this->object; } return NULL; } //over-draw the evince widget with padding etc ... static gboolean overdraw_print (cairo_t * cr) { gint x, y; gdouble this, duration; gboolean drew_rectangle = FALSE; if (Dragging) { //g_print ("Dragging from %d %d to %d %d \n", RightButtonX, RightButtonY, DragX, DragY); if (RightButtonPressed) cairo_set_source_rgba (cr, 0.2, 0.8, 0.8, 0.5); else cairo_set_source_rgba (cr, 0.8, 0.2, 0.4, 0.5); cairo_set_line_width (cr, 5.0); cairo_move_to (cr, RightButtonPressed?(double)RightButtonX:(double)LeftButtonX, RightButtonPressed?(double)RightButtonY:(double)LeftButtonY); cairo_line_to (cr, (double)DragX, (double)DragY); cairo_stroke (cr); return TRUE; } if ((!audio_is_playing()) && (LeftButtonX)) { cairo_set_source_rgba (cr, 0.4, 0.6, 0.8, 0.5); place_spot (cr, (gdouble)LeftButtonX, (gdouble)LeftButtonY, PRINTMARKER/2.0); cairo_fill (cr); } cairo_scale (cr, TheScale, TheScale); if(!audio_is_playing()) { GList *g; cairo_set_source_rgba (cr, 0.5, 0.7, 0.2, 0.5); //cairo_set_source_rgba (cr, 0.8, 0.2, 0.4, 0.5); //cairo_rectangle (cr, 0 , 0, 10, 10); for (g=Denemo.project->movement->scroll_points;g;g=g->next) { DenemoScrollPoint *sp = (DenemoScrollPoint*)g->data; //g_print ("drawing at %.2f %.2f\n", (gdouble)sp->x - (PRINTMARKER/5)/4, (gdouble)sp->y - (PRINTMARKER/5)/2); place_spot (cr, (gdouble)sp->x, (gdouble)sp->y, PRINTMARKER / 6.0); } cairo_fill (cr); return TRUE; } if (TheTimings == NULL) return TRUE; if (LastTiming == NULL) { LastTiming = TheTimings; } cairo_set_source_rgba (cr, 0x6e/255.0, 0xb9/255.0, 0xd5/255.0, 0.3);//6eb9d5 gdouble time = Denemo.project->movement->playhead; GList *g; this = ((Timing *)LastTiming->data)->time; duration = ((Timing *)LastTiming->data)->duration; if (time < (this-0.01)) {// g_print ("\n\n\nResetting LastTiming at %.2f for %.2f\n", time, this); LastTiming = TheTimings; } for(g=LastTiming;g && g->next;g=g->next) { this = ((Timing *)g->data)->time; duration = ((Timing *)g->data)->duration; //g_print (" %f this = %f test time>this %d and this-end < time %d Durations is %f\n ", time, this, (time > (this - 0.01)), (this + duration < time), duration); if (this + duration < time) continue; if (time > (this - 0.1)) { // g_print ("draw note at %.2f %.2f\n", ((Timing *)((g)->data))->x - (PRINTMARKER/5)/4, ((Timing *)((g)->data))->y - (PRINTMARKER/5)/2 ); cairo_rectangle (cr, ((Timing *)((g)->data))->x - (PRINTMARKER/5)/4, ((Timing *)((g)->data))->y - (PRINTMARKER/5)/2, PRINTMARKER/5, PRINTMARKER/5); if(!drew_rectangle) LastTiming = g; drew_rectangle = TRUE; } else break; } if (drew_rectangle) cairo_fill (cr); return TRUE; } static gboolean predraw_print (cairo_t * cr) { gint width, height; get_window_size (&width, &height); cairo_set_source_rgba (cr, 0xf1/255.0, 0xf4/255.0, 0x9d/255.0, 1.0);//cfdd36 f1f49d cairo_rectangle (cr, 0, 0.0, (gdouble)width, (gdouble)height); cairo_fill (cr); cairo_set_source_rgba (cr, 0x50/255.0, 0x0/255.0, 0x60/255.0, 1.0);//this should have no effect ... return FALSE;//propagate further } #if GTK_MAJOR_VERSION==3 static gint playbackview_draw_event (G_GNUC_UNUSED GtkWidget * w, cairo_t * cr) { return overdraw_print (cr); } static gint playbackview_predraw_event (G_GNUC_UNUSED GtkWidget * w, cairo_t * cr) { return predraw_print (cr); } #else static gint playbackview_draw_event (GtkWidget * widget, GdkEventExpose * event) { /* Setup a cairo context for rendering and clip to the exposed region. */ cairo_t *cr = gdk_cairo_create (event->window); gdk_cairo_region (cr, event->region); cairo_clip (cr); overdraw_print (cr); cairo_destroy (cr); return TRUE; } static gint playbackview_predraw_event (GtkWidget * widget, GdkEventExpose * event) { /* Setup a cairo context for rendering and clip to the exposed region. */ cairo_t *cr = gdk_cairo_create (event->window); gdk_cairo_region (cr, event->region); cairo_clip (cr); predraw_print (cr); cairo_destroy (cr); return FALSE; //propagate further } #endif static Timing *get_svg_position(gchar *id, GList *ids) { gchar *locale = setlocale (LC_ALL, NULL); setlocale (LC_ALL, "C"); for(;ids;ids=ids->next) {//g_print ("Testing %s with %s\n", ids->data, id); if (g_str_has_prefix ((gchar*)ids->data, id)) { Timing *timing = (Timing *)g_malloc (sizeof(Timing)); if (2==sscanf ((gchar*)ids->data, "Note-%*d-%*d translate(%lf,%lf)%*s%*s", &timing->x, &timing->y)) { //g_print ("Found Position %.2f %.2f\n", timing->x, timing->y); setlocale (LC_ALL, locale); return timing; } else if (2==sscanf ((gchar*)ids->data, "Rest-%*d-%*d translate(%lf,%lf)%*s%*s", &timing->x, &timing->y)) { //g_print ("Found Position %.2f %.2f\n", timing->x, timing->y); setlocale (LC_ALL, locale); return timing; } } } setlocale (LC_ALL, locale); g_warning ("Failed to find a position in events.txt for %s, locale reset to %s\n", id, locale); return NULL; } static void add_note (Timing *t) { TheTimings = g_list_append (TheTimings, (gpointer)t); //g_print ("Added %.2f seconds (%.2f,%.2f)\n", t->time, t->x, t->y); } static void free_timings (void) { GList *g; for (g = TheTimings; g;g=g->next) { g_free(g->data); } g_list_free (TheTimings); TheTimings = NULL; LastTiming = NextTiming = NULL; } static void compute_timings (gchar *base, GList *ids) { free_timings(); gchar *events = g_build_filename (base, "events.txt", NULL); FILE *fp = fopen (events, "r"); //g_print ("Collected %d ids\n", g_list_length (ids)); if(fp) { gdouble moment, duration; gchar type [10]; gint col, line, midi; gdouble tempo = 60; gdouble timeCoef = 4; gdouble latestMoment = 0; gdouble adjustedElapsedTime = 0; gdouble nextTempo = 0; gdouble nextTempoMoment = 0; gboolean incomingTempo = FALSE; while (2 == fscanf (fp, "%lf%10s", &moment, type)) { //g_print ("moment %.2f %s latestMoment %.2f\n", moment, type, latestMoment); moment /= 1000; //now events.txt stores ms to avoid decimal point if (!strcmp (type, "tempo")) { if (1 == fscanf (fp, "%lf", &nextTempo)) { nextTempo /= 1000; //now events.txt stores ms to avoid decimal point nextTempoMoment = moment;//g_print ("Next tempo %s %.2f\n", type, nextTempo); incomingTempo = TRUE; } else g_warning ("Malformed events file"); } else { if (!strcmp (type, "note")) { if (4 == fscanf (fp, "%*s%lf%*s%d%d%d", &duration, &col, &line, &midi)) { //g_print ("moment ... %.2f %s %.2f %d %d %d\n", moment, type, duration, col, line, midi); duration /= 1000; //now events.txt stores ms to avoid decimal point if (incomingTempo) { if (moment > nextTempoMoment) { tempo = nextTempo;//g_print (" tempo %.2f\n", tempo); timeCoef = (60 / tempo);//g_print (" timeCoef %.2f\n", timeCoef); incomingTempo = FALSE; } } gdouble elapsedTime = moment - latestMoment; adjustedElapsedTime += elapsedTime * timeCoef;//g_print ("adjustedElapsedtime %f\n", adjustedElapsedTime); gchar *idStr; Timing *timing; idStr = g_strdup_printf ("Note-%d-%d" , line, col); timing = get_svg_position (idStr, ids); if(timing) { timing->line = line; timing->col = col; timing->time = adjustedElapsedTime; timing->duration = duration; add_note (timing);//g_print ("AdjustedElapsed time %.2f note %d line %d column %d\n", adjustedElapsedTime, midi, line, col); } } else g_warning ("Could not parse type %s\n", type); } else if(!strcmp (type, "rest")) { if (3 == fscanf (fp, "%*s%lf%*s%d%d", &duration, &col, &line)) { //g_print ("moment ... %.2f %s %.2f %d %d %d\n", moment, type, duration, col, line, midi); duration /= 1000; //now events.txt stores ms to avoid decimal point if (incomingTempo) { if (moment > nextTempoMoment) { tempo = nextTempo;//g_print (" tempo %.2f\n", tempo); timeCoef = (60 / tempo);//g_print (" timeCoef %.2f\n", timeCoef); incomingTempo = FALSE; } } gdouble elapsedTime = moment - latestMoment; adjustedElapsedTime += elapsedTime * timeCoef;//g_print ("adjustedElapsedtime %f\n", adjustedElapsedTime); gchar *idStr; Timing *timing; idStr = g_strdup_printf ("Rest-%d-%d" , line, col); timing = get_svg_position (idStr, ids); if(timing) { timing->line = line; timing->col = col; timing->time = adjustedElapsedTime; add_note (timing);//g_print ("AdjustedElapsed time %.2f rest \n", adjustedElapsedTime); } } //rest else g_warning ("Don't know how to handle %s\n", type); } latestMoment = moment; }// not tempo } //while events //g_print ("Finished collecting timings"); fclose (fp); } //if events file else { g_critical ("Unable to open file %s Playback View will not work", events); } g_free (events); } static GList * create_positions (gchar *filename) { GList *ret = NULL; GError *err = NULL; xmlDocPtr doc = NULL; xmlNsPtr ns; xmlNodePtr rootElem; /* ignore blanks between nodes that appear as "text" */ xmlKeepBlanksDefault (0); /* Try to parse the file(s). */ filename = g_strdup (filename); //we may modify it while (g_file_test (filename, G_FILE_TEST_EXISTS)) { doc = xmlParseFile (filename); if (doc == NULL) { g_warning ("Could not read svg file %s", filename); break; } else {//g_print ("Parsing %s\n", filename); rootElem = xmlDocGetRootElement (doc); xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "g")) { xmlNodePtr grandChildElem; gchar *id = xmlGetProp (childElem, (xmlChar *) "id"); FOREACH_CHILD_ELEM (grandChildElem, childElem) { if (ELEM_NAME_EQ (grandChildElem, "g")) //grouping to set color to black { xmlNodePtr greatgrandChildElem; FOREACH_CHILD_ELEM (greatgrandChildElem, grandChildElem) { if (ELEM_NAME_EQ (greatgrandChildElem, "path")) { gchar *coords = xmlGetProp (greatgrandChildElem, (xmlChar *) "transform"); //g_print ("ID %s has Coords %s\n", id, coords); if (id && coords) { gchar *data = g_strconcat (id, coords, NULL); ret = g_list_append (ret, data); xmlFree (id); xmlFree (coords); } } else g_debug ("create_positions: Found group containing %s - ignoring.", greatgrandChildElem->name); } } } } } if (doc != NULL) xmlFreeDoc (doc); } //It may have spilt over into several svg files denemoprintA-page-1.svg etc gint num_pos = strlen (filename)-5;//".svg" *(filename+num_pos) = *(filename+num_pos) + 1; //no attempt beyond 9 pages! //FIXME check that mtime of this file is later than the last, or delete old svg's before starting. } g_free (filename); //g_print ("Read %d ids from file %s\n", g_list_length (ret), filename); return ret; } static gint get_number_of_pages (gchar *base) { gint i; for (i=1;i<10;i++) { gchar *filename = g_strdup_printf ("%s%s%d%s", Denemo.printstatus->printbasename[Denemo.printstatus->cycle], "-page-", i, ".svg"); if (!(g_file_test (filename, G_FILE_TEST_EXISTS))) { g_free(filename); break; } //g_print ("Found %s\n", filename); g_free (filename); } return i-1; } static gboolean set_playback_view (void) { static gint num_pages = 0; //although not directly recursive, this function does spawn off another lilypond typeset if it there are multiple svg pages created, when finished that calls this routine. GFile *file; gchar *filename = g_strdup (Denemo.printstatus->printname_svg[Denemo.printstatus->cycle]); gboolean multipage = FALSE; //g_print("Output to %s num_pages starts at %d\n", filename, num_pages); if (Denemo.printstatus->invalid) g_warning ("We got print status invalid %d\nTypeset may not be good.", Denemo.printstatus->invalid); if (!(g_file_test (filename, G_FILE_TEST_EXISTS))) { g_free (filename); if (num_pages>0) //recursion failed, give up { num_pages = 0; g_warning ("Unable to get the right page length\n"); return FALSE; } filename = g_strconcat (Denemo.printstatus->printbasename[Denemo.printstatus->cycle], "-page-1.svg", NULL); if (g_file_test (filename, G_FILE_TEST_EXISTS)) { g_free (filename); num_pages = get_number_of_pages (Denemo.printstatus->printbasename[Denemo.printstatus->cycle]); if (num_pages<2) { g_warning ("Unable to determine number of pages\n"); return FALSE; } gchar *scheme = g_strdup_printf ("%s%s%s%d%s", "(d-PlaybackView \"(list ", PartOnly?"#t":"#f", " \\\"20\\\" \\\"" , 100 * num_pages, "\\\")\")"); //g_print ("Scheme created: %s for %d pages\n", scheme, num_pages); call_out_to_guile (scheme); g_free (scheme); return FALSE; } g_free (filename); return FALSE; // no svg at all } if (num_pages == 0) num_pages = 1; //no recursion, so one page //if (Denemo.printstatus->invalid == 0) ignore errors as it may have typeset anyway. Denemo.printstatus->invalid = (g_file_test (filename, G_FILE_TEST_EXISTS)) ? 0 : 3; if (Denemo.printstatus->invalid == 0) { compute_timings (g_path_get_dirname(filename), create_positions (filename)); #ifdef G_OS_WIN32 GError *err = NULL; err = NULL; //if (Denemo.prefs.dynamic_compression == 88) // filename = string_dialog_entry (Denemo.project, "Back Door SVG Load", "Give SVG full path:", locateprintdir()); GdkPixbuf *pb = rsvg_pixbuf_from_file (filename, &err); //rsvg_pixbuf_from_file_at_size (filename, 709, 3543 * num_pages, &err); if(pb) { //g_print ("Width %d\nHeight %d\n", gdk_pixbuf_get_width (pb), gdk_pixbuf_get_height (pb)); 709, 7087 for two page, 709 by 3543 for single if(Denemo.playbackview) gtk_image_set_from_pixbuf (GTK_IMAGE (Denemo.playbackview), pb); else Denemo.playbackview = gtk_image_new_from_pixbuf (pb); //g_print ("Loaded %s via rsvg pixbuf loader", filename); } else g_print ("\n\nThe rsvg pixbuf load of %s gave error: %s\n\n", filename, err?err->message: "no error return"); #else if(Denemo.playbackview) gtk_image_set_from_file (GTK_IMAGE (Denemo.playbackview), filename); else Denemo.playbackview = gtk_image_new_from_file (filename); #endif static gboolean shown_once = FALSE; //Make sure the user knows that the printarea is on screen // if (!shown_once) { shown_once = TRUE; show_playback_view (); } } else { g_critical ("Filename %s was not created - Playback View will not work"); } g_free (filename); num_pages = 0; return TRUE; } static void clear_scroll_points (void) { if (ClearScrollPointsButton) gtk_widget_set_sensitive (ClearScrollPointsButton, FALSE); g_list_free_full (Denemo.project->movement->scroll_points, g_free); Denemo.project->movement->scroll_points = NULL; gtk_widget_queue_draw (Denemo.playbackview); } static void help_scroll_points (void) { infodialog (_("This the Playback View Window. Click on a note to play from that note to the end. Click again to stop play. Drag between two notes to play from the first to the last, shift drag to create a loop.\nShift-Click on a note to position the Denemo cursor on that note in the Denemo Display.\n For simple scrolling check the box. For more sophisticated control right click on a note when you have scrolled the page to the position you want it to be at when it is playing.\nFirst right click at the start of the second system (this means that the music will not scroll before that); then scroll to position the end and right click the first note of the last system of the piece.\nTo delete a scroll point right-click on it.\nIf there are changes of pace then set extra scroll points to control the scrolling in more detail.")); } static void playbackview_finished (G_GNUC_UNUSED GPid pid, G_GNUC_UNUSED gint status, gboolean print) { progressbar_stop (); g_spawn_close_pid (Denemo.printstatus->printpid); //g_print ("background %d\n", Denemo.printstatus->background); if (Denemo.printstatus->background == STATE_NONE) { call_out_to_guile ("(FinalizeTypesetting)"); process_lilypond_errors ((gchar *) get_printfile_pathbasename ()); } else { if (LilyPond_stderr != -1) close (LilyPond_stderr); LilyPond_stderr = -1; } Denemo.printstatus->printpid = GPID_NONE; if(set_playback_view ()) { gdouble total_time; changecount = Denemo.project->movement->changecount; total_time = load_lilypond_midi (NULL, AllPartsTypeset);//g_print ("MIDI file total time = %.2f\n", total_time); Denemo.project->movement->smfsync = Denemo.project->movement->changecount; AllPartsTypeset = FALSE; } } static gboolean initialize_typesetting (void) { return call_out_to_guile ("(InitializeTypesetting)"); } //A button could be placed in the playback view to create an svg file from the view... static void copy_svg (void) { gchar *filename; gchar *outuri = get_output_uri_from_scoreblock (); gchar *outpath; gchar *outname; outuri += strlen ("file://"); //skip the uri bit of it outpath = g_path_get_dirname (outuri); outname = g_path_get_basename (outuri); GtkWidget *chooser = gtk_file_chooser_dialog_new (_("SVG creation"), GTK_WINDOW (Denemo.window), GTK_FILE_CHOOSER_ACTION_SAVE, _("_Cancel"), GTK_RESPONSE_REJECT, _("_Save"), GTK_RESPONSE_ACCEPT, NULL); GtkFileFilter *filter = gtk_file_filter_new(); gtk_file_filter_set_name (filter, _("SVG files")); gtk_file_filter_add_pattern (filter, "*.svg"); gtk_file_filter_add_pattern (filter, "*.SVG"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(chooser), filter); gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser), outpath); gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (chooser), outname); gtk_widget_show_all (chooser); if (gtk_dialog_run (GTK_DIALOG (chooser)) == GTK_RESPONSE_ACCEPT) filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser)); else filename = NULL; gtk_widget_destroy (chooser); if (filename) { gchar *contents; gsize length; if (g_file_get_contents (Denemo.printstatus->printname_svg[Denemo.printstatus->cycle], &contents, &length, NULL)) { if ((!g_file_test (filename, G_FILE_TEST_EXISTS)) || confirm (_( "SVG creation"), _( "File Exists, overwrite?"))) { if (!g_file_set_contents (filename, contents, length, NULL)) { gchar *msg = g_strdup_printf (_("Errno %d:\nCould not copy %s to %s. Perhaps because some other process is using the destination file. Try again with a new location\n"), errno, Denemo.printstatus->printname_svg[Denemo.printstatus->cycle], filename); warningdialog (msg); g_free (msg); } else { gchar *uri = g_strconcat ("file://", filename, NULL); if (strcmp(uri, get_output_uri_from_scoreblock ())) score_status (Denemo.project, TRUE); set_current_scoreblock_uri (uri); //g_print ("I have copied %s to %s (default was %s) uri %s\n", Denemo.printstatus->printname_svg[Denemo.printstatus->cycle], filename, outname, uri); } g_free (contents); } } g_free (outpath); g_free (outname); g_free (filename); } } void delete_svgs (void) { gint cycle = Denemo.printstatus->cycle; cycle = !cycle; if (!Denemo.printstatus->printname_svg[cycle]) return;//not yet initialized g_unlink ( Denemo.printstatus->printname_svg[cycle]); gint i; for (i=1;i<10;i++) { gchar *filename = g_strdup_printf ("%s%s%d%s", Denemo.printstatus->printbasename[cycle], "-page-", i, ".svg"); if (!g_file_test (filename, G_FILE_TEST_EXISTS)) { //g_print ("No file %s\n", filename); g_free (filename); break; } //g_print ("deleting %s\n", filename); g_unlink (filename); #ifdef G_OS_WIN32 if (g_file_test (filename, G_FILE_TEST_EXISTS)) g_warning ("File %s deletion failed\n\n", filename); #endif g_free (filename); } } //re-creates the svg image and displays it static void remake_playback_view (gboolean part) { if (Denemo.project->movement->markstaffnum) Denemo.project->movement->markstaffnum = 0;//It can (and would otherwise) typeset just the selection - would that be useful? delete_svgs (); set_continuous_typesetting (FALSE); create_svg (part, FALSE);//there is a typeset() function defined which does initialize_typesetting() ... //g_print ("Denemo.playbackview is at %p, Denemo at %p", Denemo.playbackview, &Denemo); g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) playbackview_finished, (gpointer) (FALSE)); } //returns TRUE if a re-build has been kicked off. static gboolean update_playback_view (void) { //g_print ("Testing %d not equal %d or %d not equal %d \n", changecount, Denemo.project->changecount, Denemo.project->movement->changecount, Denemo.project->movement->smfsync); if ((changecount != Denemo.project->movement->changecount) || (Denemo.project->movement->changecount != Denemo.project->movement->smfsync)) { set_tempo (); call_out_to_guile (PartOnly?"(d-PlaybackView 'part)":"(d-PlaybackView)");//this installs the temporary directives to typeset svg and thendisplay_svg (gdouble scale, gboolean part) Denemo.project->movement->smfsync = Denemo.project->movement->changecount; changecount = Denemo.project->movement->changecount; return TRUE; } return FALSE; } //Typeset and svg and display in playbackview window. Scale is the font size relative to 18.0 pt. void display_svg (gdouble scale, gboolean part) { TheScale = 5.61 * scale; //5.61 found by trial and error FIXME! (void)remake_playback_view (part); //bring print view back to show cursor if (Denemo.textview) gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (Denemo.textview), gtk_text_buffer_get_insert (Denemo.textbuffer), 0.0, TRUE, 0.5, 0.5); if(Denemo.project->movement) gtk_widget_set_sensitive (ClearScrollPointsButton, (Denemo.project->movement->scroll_points!=NULL)); } static void button_press (GtkWidget *event_box, GdkEventButton *event) { Locationx = Locationy = -1; if (audio_is_playing ()) return; if (get_wysiwyg_info()->stage != TypesetForPlaybackView) { warningdialog (_("Use the Print View or re-typeset with All Parts or Current Part buttons")); return; } gint x = event->x; gint y = event->y; //g_print ("At %d %d\n", x, y); GList *g; if (event->button == 3) { RightButtonPressed = TRUE; RightButtonX = x; RightButtonY = y; } else { LeftButtonPressed = TRUE; LeftButtonX = x; LeftButtonY = y; } for (g = TheTimings; g;g=g->next) { Timing *timing = g->data; if((x-timing->x*TheScale < PRINTMARKER/(2)) && (y-timing->y*TheScale < PRINTMARKER/(2))) { gboolean found = goto_lilypond_position (timing->line, timing->col); ScrollTime = timing->time; if (found) { //g_print ("Found line %d column %d\n", timing->line, timing->col); Locationx = timing->col; Locationy = timing->line; Dragging = TRUE; DragX = x; DragY = y; LastY = event->y_root; } if (event->button != 3) call_out_to_guile ("(DenemoSetPlaybackStart)"); else { if (found) call_out_to_guile ("(d-PlayMidiNote 72 255 9 100)"); } //if (!found) //g_print ("Line %d column %d NOT FOUND for (x, y) = (%d, %d) \n", timing->line, timing->col, x, y); //else //g_print ("\nFound!!! Line %d column %d for (x, y) = (%d, %d) \n", timing->line, timing->col, x, y); return; } //g_print ("compare %d %d with %.2f, %.2f\n", x, y, timing->x*TheScale, timing->y*TheScale); } call_out_to_guile ("(d-PlayMidiNote 36 255 9 100)"); } static void scroll_by (gdouble amount) { gdouble value = gtk_adjustment_get_value (VAdj); //g_print ("set to %.2f from %.2f\n", value+amount, value); gtk_adjustment_set_value (VAdj, value+amount + 0.5);//0.5 helps prevent slow movements going ahead of the scroll ... } static void scroll_to (gdouble amount) { gtk_adjustment_set_value (VAdj, amount); } static DenemoScrollPoint *encode (gdouble adjust, gdouble time, gdouble x, gdouble y) { DenemoScrollPoint *sp = g_malloc (sizeof (DenemoScrollPoint)); sp->adj = adjust; sp->time = time; sp->x = x; sp->y = y; return sp; } static void decode (DenemoScrollPoint * val, gdouble *adjust, gdouble *time) { *adjust = val->adj; *time = val->time; } static gboolean playback_redraw (void) { static gdouble last_time; if (audio_is_playing ()) { if ((Denemo.project->movement->scroll_points==NULL)&&(ScrollRate<0.001)) { gtk_widget_queue_draw (Denemo.playbackview); return TRUE; } gdouble time = Denemo.project->movement->playhead; static gdouble waiting_time; if (last_time < 0.0) waiting_time = time + IntroTime; if (Denemo.project->movement->scroll_points) { GList *g, *start=NULL, *end=NULL; for (g=Denemo.project->movement->scroll_points;g;g=g->next) { gdouble adj, tm; decode ((g->data), &adj, &tm); //g_print ("%.2f %.2f\n", adj, tm); if(g->next) { if (time < tm) { if ((g->prev==NULL)) scroll_to (adj*(time)/(tm));//,g_print ("case 0"); else scroll_to (adj * time/tm);//,g_print ("case 1"); break; } else { gdouble nextadj, nexttm; decode ((g->next->data), &nextadj, &nexttm); if (time > nexttm) continue; scroll_to (nextadj + (adj - nextadj)*((nexttm-time)/(nexttm - tm)));//,g_print ("case 2"); break; } } else { if (time >= tm) { break; } if (g->prev) { gdouble prevadj, prevtm; decode ((g->prev->data), &prevadj, &prevtm); scroll_to (prevadj + (adj - prevadj)*((time-prevtm)/(tm - prevtm)));//,g_print ("case 3"); break; } if (tm>0) { scroll_to (adj*(time - waiting_time)/(tm - waiting_time));//,g_print ("case 4"); } break; } } } else //no Denemo.project->movement->scroll_points if (last_time > waiting_time) { scroll_by (((time -last_time)*ScrollRate)); } last_time = time; gtk_widget_queue_draw (Denemo.playbackview); } else // audio not playing last_time = -1.0; return TRUE; } static void list_scroll_points (void) //debug only { GList *g; for (g=Denemo.project->movement->scroll_points;g;g=g->next) {gdouble adj, tm; decode (g->data, &adj, &tm); //g_print ("Scroll Point: %0.2f at time %0.2f\n", adj, tm); } } static void toggle_scroll_point (gdouble adj, gdouble time, gdouble x, gdouble y) { GList *g = Denemo.project->movement->scroll_points; DenemoScrollPoint *sp = encode (adj, time, x, y); for (;g;g=g->next) { DenemoScrollPoint *this = (DenemoScrollPoint*)g->data; if (fabs(this->time - sp->time) < 0.1) { g_free (sp); Denemo.project->movement->scroll_points = g_list_delete_link (Denemo.project->movement->scroll_points, g); return; } if (this->time > sp->time) { Denemo.project->movement->scroll_points = g_list_insert_before (Denemo.project->movement->scroll_points, g, sp); return; } } Denemo.project->movement->scroll_points = g_list_append (Denemo.project->movement->scroll_points, sp); } static void button_release (GtkWidget *event_box, GdkEventButton *event) { gint x = event->x; gint y = event->y; RightButtonPressed = FALSE; LeftButtonPressed = FALSE; if (Dragging && (event->button == 3)) { //g_print ("Store %.2f %.2f\n", gtk_adjustment_get_value (VAdj), ScrollTime); call_out_to_guile ("(d-PlayMidiNote 52 255 9 100)"); toggle_scroll_point (gtk_adjustment_get_value (VAdj), ScrollTime, x/(TheScale), y/(TheScale)); gtk_widget_set_sensitive (ClearScrollPointsButton, (Denemo.project->movement->scroll_points != NULL)); //list_scroll_points(); } gtk_widget_queue_draw (Denemo.playbackview); Dragging = FALSE; if (audio_is_playing ()) { call_out_to_guile ("(DenemoStop)"); return; } //g_print ("At %d %d\n", x, y); if (event->button == 3) return; if ((changecount != Denemo.project->movement->changecount) || (Denemo.project->movement->changecount != Denemo.project->movement->smfsync)) { static gboolean once = TRUE; exportmidi (NULL, Denemo.project->movement); //g_print ("Now d-changecount %d, d-smfsync %d\n", Denemo.project->movement->changecount, Denemo.project->movement->smfsync); if(once) infodialog (_("Switching to simple MIDI - re-typeset for full MIDI.")); once = FALSE; } GList *g; for (g = TheTimings; g;g=g->next) { Timing *timing = g->data; if((x-timing->x*TheScale < PRINTMARKER/(2)) && (y-timing->y*TheScale < PRINTMARKER/(2))) { if ((timing->col == Locationx) && (timing->line == Locationy)) { if (!shift_held_down()) call_out_to_guile ("(d-DenemoPlayCursorToEnd)"); else call_out_to_guile ("(d-PlayMidiNote 67 255 9 100)"); //g_print ("Found same line %d column %d\n", timing->line, timing->col); } else { if ( (timing->line > Locationy) || ((timing->line==Locationy)&&(timing->col>=Locationx))) { gboolean found = goto_lilypond_position (timing->line, timing->col);//g_print ("y %d Lefty %d\n", y, LeftButtonY); call_out_to_guile ("(if (not (d-NextChord)) (d-MoveCursorRight))(DenemoSetPlaybackEnd)"); //g_print ("Set playback end to %d column %d\n", timing->line, timing->col); Denemo.project->movement->smfsync = Denemo.project->movement->changecount; if (shift_held_down()) call_out_to_guile ("(d-OneShotTimer 500 \"(DenemoLoop)\")"); else call_out_to_guile ("(d-OneShotTimer 500 \"(d-Play)\")"); } else call_out_to_guile ("(d-PlayMidiNote 67 255 9 100)"); } break; } // g_print ("compare %d %d with %.2f, %.2f\n", x, y, timing->x*5.61*TheScale, timing->y*TheScale); } } static gint hide_playback_on_delete (void) { set_toggle (TogglePlaybackView_STRING, FALSE); return TRUE; } static void play_button (void) { if (update_playback_view ()) { if (continuous_typesetting ()) ;//warningdialog (_("Please turn continuous typsetting off first")); else warningdialog (_("Please wait while the Playback View is re-typeset then re-try")); return; } Denemo.project->movement->smfsync = Denemo.project->movement->changecount; call_out_to_guile ("(d-Performance)"); } static void part_button (void) { PartOnly = TRUE; set_tempo (); if (Denemo.project->movement->smf) AllPartsTypeset = confirm ( _("MIDI Already Present"), _("Keep this music while typesetting current part?")); call_out_to_guile ("(d-PlaybackView 'part)");//this installs the temporary directives to typeset svg and then } static void movement_button (void) { PartOnly = FALSE; set_tempo (); call_out_to_guile ("(d-PlaybackView #f)");//this installs the temporary directives to typeset svg and then } static gboolean motion_notify (GtkWidget * window, GdkEventMotion * event) {//g_print ("Passed %.2f, %.2f\n", event->x, event->y); if (Dragging && RightButtonPressed) { event->x = DragX; scroll_by ((gdouble)(LastY - event->y_root));//g_print ("\tLast %d %d\t", LastY, (gint)event->y_root); LastY = event->y_root; } if (RightButtonPressed || LeftButtonPressed) { DragX = event->x; DragY = event->y; gtk_widget_queue_draw (Denemo.playbackview); } return TRUE; } static void scroll_toggle (void) { if (ScrollRate > 0) ScrollRate = 0.0; else ScrollRate = 10.0; } void install_svgview (GtkWidget * top_vbox) { if (Denemo.playbackview) return; GtkWidget *main_vbox = gtk_vbox_new (FALSE, 1); GtkWidget *main_hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (main_vbox), main_hbox, FALSE, TRUE, 0); GtkWidget *hbox; hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); GtkWidget *button = (GtkWidget*)gtk_button_new_with_label (_("Play/Stop")); gtk_widget_set_tooltip_markup (button, _( "Plays the entire movement with repeats, or stops the playing once started")); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (play_button), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); button = (GtkWidget*)gtk_button_new_with_label (_("All Parts")); gtk_widget_set_tooltip_markup (button, _( "Typesets the currrent movement, generating sophisticated MIDI for it.")); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (movement_button), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); button = (GtkWidget*)gtk_button_new_with_label (_("Current Part")); gtk_widget_set_tooltip_markup (button, _( "Typesets the currrent part with the option to keep the MIDI already generated for all the parts.")); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (part_button), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); button = (GtkWidget*)gtk_check_button_new_with_label (_("Simple Scrolling")); gtk_widget_set_tooltip_markup (button, _( "Sets/Unsets automatic scrolling. The scrolling can still be manually adjusted if it is too fast/slow.")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); g_signal_connect_swapped (G_OBJECT (button), "toggled", G_CALLBACK (scroll_toggle), NULL); ClearScrollPointsButton = gtk_button_new_with_label (_("Clear Scroll Points")); gtk_widget_set_tooltip_markup (ClearScrollPointsButton, _( "Clears scroll points which you have set by right clicking on notes.")); g_signal_connect (G_OBJECT (ClearScrollPointsButton), "clicked", G_CALLBACK (clear_scroll_points), NULL); gtk_box_pack_start (GTK_BOX (hbox), ClearScrollPointsButton, FALSE, FALSE, 0); button = gtk_button_new_with_label (_("Help")); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (help_scroll_points), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); if (top_vbox == NULL) { top_vbox = gtk_window_new (GTK_WINDOW_TOPLEVEL); // if(!Denemo.prefs.manualtypeset) // gtk_window_set_urgency_hint (GTK_WINDOW(Denemo.window), TRUE);//gtk_window_set_transient_for (GTK_WINDOW(top_vbox), GTK_WINDOW(Denemo.window)); gtk_window_set_title (GTK_WINDOW (top_vbox), _("Denemo Playback View")); gtk_window_set_default_size (GTK_WINDOW (top_vbox), 710, 850); //g_signal_connect (G_OBJECT (top_vbox), "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); g_signal_connect (G_OBJECT (top_vbox), "delete-event", G_CALLBACK (hide_playback_on_delete), NULL); } gtk_container_add (GTK_CONTAINER (top_vbox), main_vbox); GtkWidget *score_and_scroll_win = gtk_scrolled_window_new (NULL, NULL); Denemo.playbackview = (GtkWidget *) gtk_image_new (); VAdj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW(score_and_scroll_win)); // gtk_container_add (GTK_CONTAINER (score_and_scroll_win), Denemo.playbackview); //instead use an hbox to prevent the GtkImage widget expanding beyond the image size, which then causes positioning errors. hbox = gtk_hbox_new (FALSE, 1); GtkWidget *event_box = gtk_event_box_new (); gtk_box_pack_start (GTK_BOX (main_vbox), score_and_scroll_win, TRUE, TRUE, 0); #if ((GTK_MAJOR_VERSION>=3) && (GTK_MINOR_VERSION>8)) gtk_container_add (GTK_CONTAINER (score_and_scroll_win), hbox); #else gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(score_and_scroll_win), hbox); #endif gtk_box_pack_start (GTK_BOX (hbox), event_box, FALSE, FALSE, 0); gtk_container_add (GTK_CONTAINER (event_box), Denemo.playbackview); g_signal_connect (G_OBJECT (event_box), "button_press_event", G_CALLBACK (button_press), NULL); g_signal_connect (G_OBJECT (event_box), "button_release_event", G_CALLBACK (button_release), NULL); g_signal_connect (G_OBJECT (event_box), "motion-notify-event", G_CALLBACK (motion_notify), NULL); if (Denemo.prefs.newbie) gtk_widget_set_tooltip_markup (score_and_scroll_win, _("This window shows the typeset score as one long page. During playback the notes playing are highlighted")); #if GTK_MAJOR_VERSION != 2 g_signal_connect_after (G_OBJECT (Denemo.playbackview), "draw", G_CALLBACK (playbackview_draw_event), NULL); g_signal_connect (G_OBJECT (Denemo.playbackview), "draw", G_CALLBACK (playbackview_predraw_event), NULL); #else g_signal_connect_after (G_OBJECT (Denemo.playbackview), "expose_event", G_CALLBACK (playbackview_draw_event), NULL); g_signal_connect (G_OBJECT (Denemo.playbackview), "expose_event", G_CALLBACK (playbackview_predraw_event), NULL); #endif gtk_widget_show_all (main_vbox); gtk_widget_hide (top_vbox); static gint id; if (!id) id = g_timeout_add (50, (GSourceFunc)playback_redraw, NULL); } denemo-2.2.0/src/printview/PaxHeaders.19168/printview.c0000644000000000000000000000013213135434036017542 xustar0030 mtime=1500919838.356648472 30 atime=1500919921.359981805 30 ctime=1500919914.363315139 denemo-2.2.0/src/printview/printview.c0000644000175000017500000030711713135434036021424 0ustar00jjbenhamjjbenham00000000000000#include #include #include #include #include "printview/printview.h" #include "export/print.h" #include "core/view.h" #include "scripting/scheme-callbacks.h" #include "command/scorelayout.h" #include "command/lilydirectives.h" #include "export/exportlilypond.h" #include "source/sourceaudio.h" static gint changecount = -1; //changecount when the printfile was last created FIXME multiple tabs are muddled static gchar *thumbnailsdirN = NULL; static gchar *thumbnailsdirL = NULL; static gboolean retypeset (void); static gdouble get_center_staff_offset (void); static gboolean LeftButtonPressed; static unsigned file_get_mtime (gchar * filename) { struct stat thebuf; g_stat (filename, &thebuf); unsigned mtime = thebuf.st_mtime; // g_debug("the mt is %u %u\n", mtime, thebuf.st_mtim.tv_nsec); return mtime; } // Displaying Print Preview static void start_busy_cursor (void) { busy_cursor (Denemo.printarea); } static void start_normal_cursor (void) { normal_cursor (Denemo.printarea); } static gboolean ContinuousTypesettingPaused; void unpause_continuous_typesetting (void) { if (ContinuousTypesettingPaused) if (Denemo.printstatus->background & STATE_PAUSED) { if (Denemo.prefs.typesetrefresh) Denemo.printstatus->updating_id = g_timeout_add (Denemo.prefs.typesetrefresh, (GSourceFunc) retypeset, NULL); else Denemo.printstatus->updating_id = g_idle_add ((GSourceFunc) retypeset, NULL); } ContinuousTypesettingPaused = FALSE; Denemo.printstatus->background &= ~STATE_PAUSED; } void pause_continuous_typesetting (void) { Denemo.printstatus->background |= STATE_PAUSED; if (Denemo.printstatus->updating_id) { ContinuousTypesettingPaused = TRUE; g_source_remove (Denemo.printstatus->updating_id); //if this is not turned off the print preview thread hangs until it is. Denemo.printstatus->updating_id = 0; } } /*void user_function (EvPrintOperation *evprintoperation, GtkPrintOperationResult arg1, gpointer user_data) : Run Last */ static void printop_done (EvPrintOperation * printop, G_GNUC_UNUSED GtkPrintOperationResult arg1, GtkPrintSettings ** psettings) { if (*psettings) g_object_unref (*psettings); *psettings = ev_print_operation_get_print_settings (printop); g_object_ref (*psettings); //g_debug("Came away with uri %s\n", gtk_print_settings_get(*psettings, GTK_PRINT_SETTINGS_OUTPUT_URI)); gchar *uri = g_strdup (gtk_print_settings_get (*psettings, GTK_PRINT_SETTINGS_OUTPUT_URI)); gchar *unesc = g_uri_unescape_string (uri, NULL); g_free (uri); set_current_scoreblock_uri (unesc); unpause_continuous_typesetting (); call_out_to_guile ("(FinalizePrint)"); } static gboolean libevince_print (void) { GError *err = NULL; gchar *filename = Denemo.printstatus->printname_pdf[Denemo.printstatus->cycle]; if (filename == NULL) { g_warning ("Typesetting not done? No output filename set."); return -1; } EvDocumentModel *model = (EvDocumentModel*)g_object_get_data (G_OBJECT (Denemo.printarea), "model"); ev_document_model_set_inverted_colors (model, FALSE); #ifdef G_OS_WIN32 infodialog (_("Direct Printing not available under Windows. Create PDF and print from that")); return -1; #endif gchar *uri = g_filename_to_uri (filename, NULL, &err); if (err) { g_warning ("Malformed filename %s", filename); return -1; } EvDocument *doc = ev_document_factory_get_document (uri, &err); if (err) { g_warning ("Trying to print the pdf file %s gave an error: %s", uri, err->message); g_error_free (err); err = NULL; return -1; } else { static GtkPrintSettings *settings; if (settings == NULL) settings = gtk_print_settings_new (); EvPrintOperation *printop = ev_print_operation_new (doc); g_signal_connect (printop, "done", G_CALLBACK (printop_done), &settings); gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_OUTPUT_URI, get_output_uri_from_scoreblock ()); ev_print_operation_set_print_settings (printop, settings); pause_continuous_typesetting (); ev_print_operation_run (printop, NULL); } return 0; } gboolean print_typeset_pdf (void) { return libevince_print (); } static void set_printarea_doc (EvDocument * doc) { EvDocumentModel *model; changecount = Denemo.project->changecount; model = g_object_get_data (G_OBJECT (Denemo.printarea), "model"); //there is no ev_view_get_model(), when there is use it if (model == NULL) { model = ev_document_model_new_with_document (doc); ev_view_set_model ((EvView *) Denemo.printarea, model); g_object_set_data (G_OBJECT (Denemo.printarea), "model", model); //there is no ev_view_get_model(), when there is use it } else { g_object_unref (ev_document_model_get_document (model)); //FIXME check if this releases the file lock on windows.s ev_document_model_set_document (model, doc); } gint dual = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (Denemo.printarea), "Duplex")); ev_document_model_set_inverted_colors (model, dual); #if 0 // it is Evince version we need to test ((GTK_MAJOR_VERSION == 3) && (GTK_MINOR_VERSION >= 8)) if (dual) { ev_document_model_set_page_layout (model, EV_PAGE_LAYOUT_DUAL); } else { ev_document_model_set_page_layout (model, EV_PAGE_LAYOUT_SINGLE); } #else ev_document_model_set_dual_page (model, dual); #endif get_wysiwyg_info ()->Mark.width = 0; //indicate that there should no longer be any Mark placed on the score } static void get_window_position (gint * x, gint * y) { GtkAdjustment *adjust = gtk_range_get_adjustment (GTK_RANGE (Denemo.printhscrollbar)); *x = (gint) gtk_adjustment_get_value (adjust); adjust = gtk_range_get_adjustment (GTK_RANGE (Denemo.printvscrollbar)); *y = gtk_adjustment_get_value (adjust); } //setting up Denemo.pixbuf so that parts of the pdf can be dragged etc. static void get_window_size (gint * w, gint * h) { GdkWindow *window; if (!GTK_IS_LAYOUT (Denemo.printarea)) window = gtk_widget_get_window (GTK_WIDGET (Denemo.printarea)); else window = gtk_layout_get_bin_window (GTK_LAYOUT (Denemo.printarea)); if (window) { EvDocumentModel *model; model = g_object_get_data (G_OBJECT (Denemo.printarea), "model"); //there is no ev_view_get_model(), when there is use it gdouble scale = ev_document_model_get_scale (model); // gdouble staffsize = atof(Denemo.project->lilycontrol.staffsize->str); // if(staffsize<1) staffsize = 20.0; // scale *= (staffsize/4);//Trial and error value scaling evinces pdf display to the LilyPond staff-line-spaces unit #if GTK_MAJOR_VERSION==2 gdk_drawable_get_size (window, w, h); #else *w = gdk_window_get_width (window); *h = gdk_window_get_height (window); #endif *w *= scale; *h *= scale; } } //setting up Denemo.pixbuf so that parts of the pdf can be dragged etc. static void set_denemo_pixbuf (gint x, gint y) { GdkWindow *window; GdkPixbuf *pixbuf; if (!GTK_IS_LAYOUT (Denemo.printarea)) window = gtk_widget_get_window (GTK_WIDGET (Denemo.printarea)); else window = gtk_layout_get_bin_window (GTK_LAYOUT (Denemo.printarea)); if (window) { gint xx, yy; get_window_position (&xx, &yy); x -= xx; y -= yy; #define GROB_SIZE 20 // a rough amount to drag grobs around recognizably EvDocumentModel *model; model = g_object_get_data (G_OBJECT (Denemo.printarea), "model"); //there is no ev_view_get_model(), when there is use it gdouble scale = ev_document_model_get_scale (model); gdouble staffsize = atof (Denemo.project->lilycontrol.staffsize->str); if (staffsize < 1) staffsize = 20.0; gint grob_size = GROB_SIZE * (staffsize / 20.0); x -= scale * grob_size / 2; y -= scale * grob_size / 2; if (x < 0) x = 0; if (y < 0) y = 0; #if GTK_MAJOR_VERSION==2 gint width, height; gdk_drawable_get_size (window, &width, &height); pixbuf = gdk_pixbuf_get_from_drawable (NULL, window, NULL /*gdk_colormap_get_system () */ , (gint) (x), (gint) (y), 0, 0, scale * grob_size, scale * grob_size); #else pixbuf = gdk_pixbuf_get_from_window (window, (gint) (x), (gint) (y), scale * grob_size, scale * grob_size); #endif if (Denemo.pixbuf) g_object_unref (Denemo.pixbuf); Denemo.pixbuf = gdk_pixbuf_add_alpha (pixbuf, TRUE, 255, 255, 255); g_object_unref (pixbuf); } } //draw a circle to mark a dragging point static void place_spot (cairo_t * cr, gint x, gint y) { cairo_move_to (cr, x, y); cairo_arc (cr, x, y, PRINTMARKER / 4, 0.0, 2 * M_PI); cairo_fill (cr); } //over-draw the evince widget with padding etc ... static gboolean overdraw_print (cairo_t * cr) { gint x, y; gint message_height = 50; get_window_position (&x, &y); // gint width, height; // width = gdk_pixbuf_get_width( GDK_PIXBUF(Denemo.pixbuf)); // height = gdk_pixbuf_get_height( GDK_PIXBUF(Denemo.pixbuf)); // cairo_scale( cr, Denemo.project->movement->preview_zoom, Denemo.project->movement->preview_zoom ); cairo_translate (cr, -x, -y); // gdk_cairo_set_source_pixbuf( cr, GDK_PIXBUF(Denemo.pixbuf), -x, -y); cairo_save (cr); if ((get_wysiwyg_info ()->Mark.width > 0.0) && (get_wysiwyg_info ()->stage != WaitingForDrag) && (get_wysiwyg_info ()->stage != DraggingNearEnd) && (get_wysiwyg_info ()->stage != DraggingFarEnd)) { cairo_set_source_rgba (cr, 0.5, 0.5, 1.0, 0.5); cairo_rectangle (cr, get_wysiwyg_info ()->Mark.x - PRINTMARKER / 2, get_wysiwyg_info ()->Mark.y - PRINTMARKER / 2, PRINTMARKER, PRINTMARKER); cairo_fill (cr); } if (Denemo.printstatus->invalid /*!print_is_valid */ ) { gchar *headline, *explanation, *error_file = NULL; switch (Denemo.printstatus->invalid) { case 1: headline = _("Possibly Invalid"); explanation = _("Cursor not moved."); break; case 2: headline = _("Check Score."); explanation = _("Cursor may have moved to error point in the score."); break; case 3: headline = _("INVALID! try Score->Check Score command."); explanation = _("LilyPond could not typeset this score."); break; } if (Denemo.printstatus->invalid) error_file = Denemo.printstatus->error_file; cairo_set_source_rgba (cr, 0.5, 0.0, 0.0, 0.4); cairo_set_font_size (cr, 48.0); cairo_move_to (cr, 50, message_height); cairo_show_text (cr, headline); cairo_set_font_size (cr, 18.0); message_height += 30; cairo_move_to (cr, 50, message_height); cairo_show_text (cr, explanation); if (error_file) { message_height += 20; cairo_move_to (cr, 50, message_height); cairo_show_text (cr, _("File causing error:")); message_height += 20; cairo_move_to (cr, 50, message_height); cairo_set_source_rgba (cr, 0.0, 0.0, 0.5, 0.4); cairo_show_text (cr, error_file); } } { DenemoScoreblock *sb = selected_scoreblock (); if (sb) { if (g_list_find (Denemo.project->standard_scoreblocks, sb) == NULL) { cairo_set_source_rgba (cr, 0.5, 0.7, 0.25, 0.3); cairo_set_font_size (cr, 20.0); message_height += 30; cairo_move_to (cr, 50, message_height); cairo_show_text (cr, _("(Custom Score Layout)")); cairo_set_font_size (cr, 18.0); message_height += 20; cairo_move_to (cr, 50, message_height); cairo_show_text (cr, _("See View->Score Layout to delete.")); } } } if (Denemo.printstatus->updating_id && (Denemo.printstatus->background != STATE_NONE)) { cairo_set_source_rgba (cr, 0.5, 0.0, 0.5, 0.3); cairo_set_font_size (cr, 64.0); cairo_move_to (cr, 0, 0); cairo_rotate (cr, M_PI / 4); cairo_move_to (cr, 200, 80); if (Denemo.printstatus->typeset_type == TYPESET_MOVEMENT) cairo_show_text (cr, _("Current Movement")); else if (Denemo.printstatus->typeset_type == TYPESET_EXCERPT) cairo_show_text (cr, _("Excerpt Only")); } cairo_restore (cr); if (get_wysiwyg_info ()->stage == SelectingFarEnd) { cairo_set_source_rgba (cr, 0.3, 0.3, 0.7, 0.9); //cairo_rectangle (cr, get_wysiwyg_info()->near.x-PRINTMARKER/2, get_wysiwyg_info()->near.y-PRINTMARKER/2, PRINTMARKER, PRINTMARKER ); cairo_move_to (cr, get_wysiwyg_info ()->nearpoint.x, get_wysiwyg_info ()->nearpoint.y); cairo_arc (cr, get_wysiwyg_info ()->nearpoint.x, get_wysiwyg_info ()->nearpoint.y, 1.5, 0.0, 2 * M_PI); cairo_fill (cr); } if (get_wysiwyg_info ()->stage == WaitingForDrag) { cairo_set_source_rgba (cr, 0.3, 0.3, 0.7, 0.9); place_spot (cr, get_wysiwyg_info ()->farpoint.x, get_wysiwyg_info ()->farpoint.y); place_spot (cr, get_wysiwyg_info ()->nearpoint.x, get_wysiwyg_info ()->nearpoint.y); } if ((get_wysiwyg_info ()->stage == WaitingForDrag) || (get_wysiwyg_info ()->stage == DraggingNearEnd) || (get_wysiwyg_info ()->stage == DraggingFarEnd)) { cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.7); cairo_move_to (cr, get_wysiwyg_info ()->nearpoint.x, get_wysiwyg_info ()->nearpoint.y); cairo_line_to (cr, get_wysiwyg_info ()->farpoint.x, get_wysiwyg_info ()->farpoint.y); cairo_stroke (cr); return TRUE; } if ((get_wysiwyg_info ()->stage == SelectingPoint) || (get_wysiwyg_info ()->stage == WaitingForCurveDrag) || (get_wysiwyg_info ()->stage == Dragging1) || (get_wysiwyg_info ()->stage == Dragging2) || (get_wysiwyg_info ()->stage == Dragging3) || (get_wysiwyg_info ()->stage == Dragging4)) { //place_spot for all non-null points Curve.p1... if (get_wysiwyg_info ()->Curve.p1.x) { place_spot (cr, get_wysiwyg_info ()->Curve.p1.x, get_wysiwyg_info ()->Curve.p1.y); } if (get_wysiwyg_info ()->Curve.p2.x) { place_spot (cr, get_wysiwyg_info ()->Curve.p2.x, get_wysiwyg_info ()->Curve.p2.y); } if (get_wysiwyg_info ()->Curve.p1.x) { place_spot (cr, get_wysiwyg_info ()->Curve.p3.x, get_wysiwyg_info ()->Curve.p3.y); } if (get_wysiwyg_info ()->Curve.p4.x) { //all control points initialized place_spot (cr, get_wysiwyg_info ()->Curve.p4.x, get_wysiwyg_info ()->Curve.p4.y); cairo_set_source_rgba (cr, 0.5, 0.8, 0.0, 0.7); cairo_move_to (cr, get_wysiwyg_info ()->Curve.p1.x, get_wysiwyg_info ()->Curve.p1.y); cairo_curve_to (cr, get_wysiwyg_info ()->Curve.p2.x, get_wysiwyg_info ()->Curve.p2.y, get_wysiwyg_info ()->Curve.p3.x, get_wysiwyg_info ()->Curve.p3.y, get_wysiwyg_info ()->Curve.p4.x, get_wysiwyg_info ()->Curve.p4.y); cairo_stroke (cr); } return TRUE; } if (get_wysiwyg_info ()->stage == SelectingReference) { gint w, h; get_window_size (&w, &h); cairo_set_source_rgba (cr, 0.0, 0.0, 1.0, 0.7); cairo_move_to (cr, get_wysiwyg_info ()->curx, 0); cairo_line_to (cr, get_wysiwyg_info ()->curx, h); cairo_move_to (cr, 0, get_wysiwyg_info ()->cury); cairo_line_to (cr, w, get_wysiwyg_info ()->cury); cairo_stroke (cr); } if (get_wysiwyg_info ()->stage == Offsetting) { cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.7); cairo_move_to (cr, get_wysiwyg_info ()->Mark.x, get_wysiwyg_info ()->Mark.y); cairo_line_to (cr, get_wysiwyg_info ()->curx, get_wysiwyg_info ()->cury); cairo_stroke (cr); //g_debug("grob is %d %d\n\n\n\n", get_wysiwyg_info()->grob, OBJ_NONE); if (Denemo.pixbuf) { if (get_wysiwyg_info ()->grob == OBJ_NONE) { guint width = gdk_pixbuf_get_width (GDK_PIXBUF (Denemo.pixbuf)); guint height = gdk_pixbuf_get_height (GDK_PIXBUF (Denemo.pixbuf)); cairo_save (cr); gdk_cairo_set_source_pixbuf (cr, GDK_PIXBUF (Denemo.pixbuf), get_wysiwyg_info ()->curx - width / 2, get_wysiwyg_info ()->cury - height / 2); cairo_rectangle (cr, get_wysiwyg_info ()->curx - width / 2, get_wysiwyg_info ()->cury - height / 2, width, height); cairo_fill (cr); cairo_restore (cr); } } else g_warning ("No pixbuf"); } if (get_wysiwyg_info ()->stage == (unsigned int) Padding) { gint pad = ABS (get_wysiwyg_info ()->Mark.x - get_wysiwyg_info ()->curx); gint w = get_wysiwyg_info ()->nearpoint.x - get_wysiwyg_info ()->Mark.x; gint h = get_wysiwyg_info ()->nearpoint.y - get_wysiwyg_info ()->Mark.y; cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); cairo_rectangle (cr, get_wysiwyg_info ()->Mark.x - pad / 2, get_wysiwyg_info ()->Mark.y - pad / 2, w + pad, h + pad); /*GdkWindow *window = */ gtk_layout_get_bin_window (GTK_LAYOUT (Denemo.printarea)); // gdk_draw_pixbuf(window, NULL, GDK_PIXBUF(Denemo.pixbuf), // get_wysiwyg_info()->Mark.x+x, get_wysiwyg_info()->Mark.y+y, get_wysiwyg_info()->Mark.x, get_wysiwyg_info()->Mark.y,/* x, y in pixbuf, x,y in window */ // w, h, GDK_RGB_DITHER_NONE,0,0); } return TRUE; } #if GTK_MAJOR_VERSION==3 static gint printarea_draw_event (G_GNUC_UNUSED GtkWidget * w, cairo_t * cr) { return overdraw_print (cr); } #else static gint printarea_draw_event (GtkWidget * widget, GdkEventExpose * event) { /* Setup a cairo context for rendering and clip to the exposed region. */ cairo_t *cr = gdk_cairo_create (event->window); gdk_cairo_region (cr, event->region); cairo_clip (cr); overdraw_print (cr); cairo_destroy (cr); return TRUE; } #endif static void set_printarea (GError ** err) { GFile *file; gchar *filename = Denemo.printstatus->printname_pdf[Denemo.printstatus->cycle]; //g_debug("using %s\n", filename); if (Denemo.printstatus->invalid == 0) Denemo.printstatus->invalid = (g_file_test (filename, G_FILE_TEST_EXISTS)) ? 0 : 3; file = g_file_new_for_commandline_arg (filename); //g_free(filename); gchar *uri = g_file_get_uri (file); g_object_unref (file); EvDocument *doc = ev_document_factory_get_document (uri, err); //gint x = 0, y = 0, hupper, hlower, vupper, vlower;//store current position for reloading //get_window_position(&x, &y, &hupper, &hlower, &vupper, &vlower); if (*err) { g_warning ("Trying to read the pdf file %s gave an error: %s", uri, (*err)->message); Denemo.printstatus->invalid = 3; gtk_widget_queue_draw (Denemo.printarea); } else set_printarea_doc (doc); static gboolean shown_once = FALSE; //Make sure the user knows that the printarea is on screen if (!shown_once) { shown_once = TRUE; gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (Denemo.printarea))); } return; } void printview_finished (G_GNUC_UNUSED GPid pid, gint status, gboolean print) { progressbar_stop (); console_output (_("Done")); #if GLIB_CHECK_VERSION(2,34,0) { GError *err = NULL; if (!g_spawn_check_exit_status (status, &err)) g_warning ("Lilypond did not end successfully: %s", err->message); } #endif g_spawn_close_pid (Denemo.printstatus->printpid); //g_debug("background %d\n", Denemo.printstatus->background); if (Denemo.printstatus->background == STATE_NONE) { call_out_to_guile ("(FinalizeTypesetting)"); process_lilypond_errors ((gchar *) get_printfile_pathbasename ()); } else { if (LilyPond_stderr != -1) close (LilyPond_stderr); LilyPond_stderr = -1; } Denemo.printstatus->printpid = GPID_NONE; GError *err = NULL; set_printarea (&err); if (!err && print) libevince_print (); start_normal_cursor (); if (Denemo.printarea) { GtkWidget *printarea = gtk_widget_get_toplevel (Denemo.printarea); //set_toggle (TogglePrintView_STRING, TRUE); if (gtk_window_is_active (GTK_WINDOW (printarea))) gtk_window_present (GTK_WINDOW (printarea)); } } void present_print_view_window (void) { set_toggle (TogglePrintView_STRING, TRUE); GtkWidget *w = gtk_widget_get_toplevel (Denemo.printarea); if (gtk_widget_get_visible (w)) gtk_window_present (GTK_WINDOW (w)); else gtk_widget_show (w); } static gboolean initialize_typesetting (void) { return call_out_to_guile ("(InitializeTypesetting)"); } static gboolean typeset (gboolean force) { if ((force) || (changecount != Denemo.project->changecount)) { if (initialize_typesetting ()) { g_warning ("InitializeTypesetting failed"); return FALSE; } DenemoProject *gui = Denemo.project; gui->movement->markstaffnum = 0; //FIXME save and restore selection? gui->lilycontrol.excerpt = FALSE; create_pdf (FALSE, TRUE); changecount = Denemo.project->changecount; return TRUE; } return FALSE; } static gboolean typeset_movement (gboolean force) { if ((force) || (changecount != Denemo.project->changecount)) { if (initialize_typesetting ()) { g_warning ("InitializeTypesetting failed"); return FALSE; } DenemoProject *gui = Denemo.project; gui->movement->markstaffnum = 0; //FIXME save and restore selection? gui->lilycontrol.excerpt = FALSE; create_pdf (FALSE, FALSE); return TRUE; } return FALSE; } void refresh_print_view (G_GNUC_UNUSED gboolean interactive) { start_busy_cursor (); if (typeset (FALSE)) g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) printview_finished, (gpointer) (FALSE)); else start_normal_cursor (); } void print_from_print_view (gboolean all_movements) { if (!all_movements) changecount = -1; start_busy_cursor (); if (all_movements ? typeset (FALSE) : typeset_movement (FALSE)) { g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) printview_finished, (gpointer) (TRUE)); } else { start_normal_cursor (); libevince_print (); //printview_finished (Denemo.printstatus->printpid, 0, TRUE); } if (!all_movements) changecount = Denemo.project->changecount; } static gchar * get_thumb_directory (void) { return g_build_filename (g_get_home_dir (), ".thumbnails", "large", NULL); } static gchar * get_thumb_printname (void) { return g_build_filename (locateprintdir (), "denemothumb", NULL); } static gchar * get_thumbname (gchar * uri) { gchar *basethumbname = g_compute_checksum_for_string (G_CHECKSUM_MD5, uri, -1); gchar *thumbname = g_strconcat (basethumbname, ".png", NULL); g_free (basethumbname); return thumbname; } /*call back to finish thumbnail processing. */ static void thumb_finished (gchar * thumbname) { GError *err = NULL; g_spawn_close_pid (Denemo.printstatus->printpid); Denemo.printstatus->printpid = GPID_NONE; gchar *printname = get_thumb_printname (); gchar *printpng = g_strconcat (printname, ".png", NULL); GdkPixbuf *pbN = gdk_pixbuf_new_from_file_at_scale (printpng, 128, -1, TRUE, &err); if (err) { g_critical ("Thumbnail 128x128 file %s gave an error: %s", printpng, err->message); g_error_free (err); err = NULL; } GdkPixbuf *pbL = gdk_pixbuf_new_from_file_at_scale (printpng, 256, -1, TRUE, &err); if (err) { g_critical ("Thumbnail 256x256 file %s gave an error: %s", printpng, err->message); g_error_free (err); err = NULL; } //FIXME if pb->height>128 or 256 scale it down... if (pbN && pbL) { gchar *uri = g_strdup_printf ("file://%s", Denemo.project->filename->str); unsigned mtime = file_get_mtime (Denemo.project->filename->str); gchar *thumbpathN = g_build_filename (thumbnailsdirN, thumbname, NULL); gchar *thumbpathL = g_build_filename (thumbnailsdirL, thumbname, NULL); gchar *mt = g_strdup_printf ("%u", mtime); if (gdk_pixbuf_save (pbN, thumbpathN, "png", &err, "tEXt::Thumb::URI", uri, "tEXt::Thumb::MTime", mt, NULL)) g_info ("Thumbnail generated at %s", thumbpathN); else g_critical ("Could not save normal thumbnail: %s", err->message); err = NULL; if (gdk_pixbuf_save (pbL, thumbpathL, "png", &err, "tEXt::Thumb::URI", uri, "tEXt::Thumb::MTime", mt, NULL)) g_info ("Large thumbnail generated at %s", thumbpathL); else g_critical ("Could not save large thumbnail: %s", err->message); //FIXME do the pbN L need freeing??? g_free (uri); g_free (mt); g_free (thumbname); g_free (thumbpathN); g_free (thumbpathL); } g_free (printname); Denemo.printstatus->printpid = GPID_NONE; progressbar_stop (); } // large_thumbnail_name takes a full path name to a .denemo file and returns the full path to the large thumbnail of that .denemo file. Caller must g_free the returned string gchar * large_thumbnail_name (gchar * filepath) { gchar *temp = g_strdup_printf ("file://%s", filepath); gchar *ret = get_thumbname (temp); g_free (temp); return g_build_filename (get_thumb_directory (), ret, NULL); } static void thumbnail_finished (GPid pid, gint status, gpointer data) { if (status) g_warning ("Thumbnailer: Lilyond did not end successfully"); } /*** * Create a thumbnail for Denemo.project if needed */ gboolean create_thumbnail (gboolean async, gchar * thumbnail_path) { #ifdef G_OS_WIN32 return FALSE; #endif GError *err = NULL; gchar *thumbpathN = NULL; gchar *thumbname = NULL; if (Denemo.printstatus->printpid != GPID_NONE) return FALSE; if (!Denemo.project->filename->len) return TRUE; if (thumbnail_path) { thumbpathN = thumbnail_path; if (!g_path_is_absolute (thumbnail_path)) thumbpathN = g_build_path (g_get_current_dir (), thumbnail_path, NULL); if (!thumbnailsdirN) thumbnailsdirN = g_path_get_dirname (thumbpathN); if (!thumbnailsdirL) thumbnailsdirL = g_path_get_dirname (thumbpathN); thumbname = g_path_get_basename (thumbpathN); } else { if (!thumbnailsdirN) { thumbnailsdirN = g_build_filename (g_get_home_dir (), ".thumbnails", "normal", NULL); g_mkdir_with_parents (thumbnailsdirN, 0700); } if (!thumbnailsdirL) { thumbnailsdirL = g_build_filename (g_get_home_dir (), ".thumbnails", "large", NULL); g_mkdir_with_parents (thumbnailsdirL, 0700); } gchar *uri = g_strdup_printf ("file://%s", Denemo.project->filename->str); thumbname = get_thumbname (uri); thumbpathN = g_build_filename (thumbnailsdirN, thumbname, NULL); } //check if thumbnail is newer than file struct stat thebuf; g_stat (Denemo.project->filename->str, &thebuf); unsigned mtime = thebuf.st_mtime; thebuf.st_mtime = 0; g_stat (thumbpathN, &thebuf); unsigned mtime_thumb = thebuf.st_mtime; if (mtime_thumb >= mtime) { g_debug ("Do not update thumbnail %s", thumbpathN); return FALSE; } g_info ("Attempt to create thumbnail %s", thumbpathN); gint saved = g_list_index (Denemo.project->movements, Denemo.project->movement); Denemo.project->movement = Denemo.project->movements->data; //Thumbnail is from first movement //set selection to thumbnailselection, if not set, to the selection, if not set to first three measures of staff 1 if (Denemo.project->thumbnail.firststaffmarked) memcpy (&Denemo.project->movement->selection, &Denemo.project->thumbnail, sizeof (DenemoSelection)); else if (Denemo.project->movement->selection.firststaffmarked) memcpy (&Denemo.project->thumbnail, &Denemo.project->movement->selection, sizeof (DenemoSelection)); else { Denemo.project->thumbnail.firststaffmarked = 1; Denemo.project->thumbnail.laststaffmarked = 3; Denemo.project->thumbnail.firstmeasuremarked = 1; Denemo.project->thumbnail.lastmeasuremarked = 3; Denemo.project->thumbnail.firstobjmarked = 0; Denemo.project->thumbnail.lastobjmarked = 100; //or find out how many there are memcpy (&Denemo.project->movement->selection, &Denemo.project->thumbnail, sizeof (DenemoSelection)); } Denemo.project->movement->markstaffnum = Denemo.project->movement->selection.firststaffmarked; gchar *printname = get_thumb_printname (); Denemo.project->lilycontrol.excerpt = TRUE; if (async) { gchar *arguments[] = { g_build_filename (get_system_bin_dir (), "denemo", NULL), "-n", "-a", "(d-CreateThumbnail #f)(d-Exit)", Denemo.project->filename->str, NULL }; GPid pid; gboolean success = g_spawn_async_with_pipes (NULL, /* any dir */ arguments, NULL, /* env */ G_SPAWN_SEARCH_PATH, NULL, /* child setup func */ NULL, /* user data */ &pid, /* pid */ NULL, /* stdin */ NULL, /* stdout */ NULL, /* stderr */ &err); if (success) g_info ("Launched thumbnail subprocess"); else g_critical ("An error happened during thumbnail generation: %s", err->message); g_child_watch_add (pid, thumbnail_finished, NULL); } else { export_png (printname, NULL, Denemo.project); thumb_finished (thumbname); } g_free (printname); Denemo.project->movement = g_list_nth_data (Denemo.project->movements, saved); if (Denemo.project->movement == NULL) Denemo.project->movement = Denemo.project->movements->data; return TRUE; } //This gets an offset relative to get_wysiwyg_info()->Mark which must be already setup on entry. //A patch of the score around the target is dragged over the image with white showing as transparent and a line connects the original and new positions. gboolean get_offset (gdouble * offsetx, gdouble * offsety) { get_wysiwyg_info ()->stage = Offsetting; gtk_main (); if (get_wysiwyg_info ()->stage == Offsetting) { EvDocumentModel *model; model = g_object_get_data (G_OBJECT (Denemo.printarea), "model"); //there is no ev_view_get_model(), when there is use it gdouble scale = ev_document_model_get_scale (model); gdouble staffsize = atof (Denemo.project->lilycontrol.staffsize->str); if (staffsize < 1) staffsize = 20.0; scale *= (staffsize / 4); //Trial and error value scaling evinces pdf display to the LilyPond staff-line-spaces unit *offsetx = (get_wysiwyg_info ()->curx - get_wysiwyg_info ()->Mark.x) / scale; //Could/Should this better be get_wysiwyg_info()->Reference???? *offsety = -(get_wysiwyg_info ()->cury - get_wysiwyg_info ()->Mark.y) / scale; #if 0 //here if figured bass adjust for center //get_center_staff_offset. Instead in wysiwyg.scm I have used do-center-relative-offset gdouble nearadjust = get_center_staff_offset (); g_info ("Adjusting %f by %f\n", *offsety, (nearadjust / scale)); *offsety -= (nearadjust / scale); #endif get_wysiwyg_info ()->stage = STAGE_NONE; gtk_widget_queue_draw (Denemo.printarea); return TRUE; } else return FALSE; } // start_seeking_end //if repeatable and grob is slur or beam and request matches gives prompt for slur or beam and goes to Waiting for drag //else sets up near point to last button press and goes to selecting far end. static void start_seeking_end (WwGrob grob) { gchar *msg = (grob == Slur) ? _("Now select the notehead of the note where the slur ends") : (grob == Tie) ? _("Now select the notehead of the note where the tie ends") : _("Now select the notehead of the note where the beam ends"); if (get_wysiwyg_info ()->repeatable && get_wysiwyg_info ()->grob == grob) { get_wysiwyg_info ()->stage = WaitingForDrag; msg = (get_wysiwyg_info ()->grob == Slur) ? _("Now drag the begin/end markers to suggest slur position/angle\nRight click when done.") : (get_wysiwyg_info ()->grob == Tie) ? _("Now drag the begin/end markers to suggest tie position\nRight click when done.") : _("Now drag the begin/end markers to set position/angle of beam\nRight click when done."); //FIXME repeated text } else { get_wysiwyg_info ()->nearpoint = get_wysiwyg_info ()->near_i = get_wysiwyg_info ()->last_button_press; get_wysiwyg_info ()->stage = SelectingFarEnd; } if (get_wysiwyg_info ()->grob != grob) get_wysiwyg_info ()->repeatable = FALSE; get_wysiwyg_info ()->grob = grob; gtk_widget_show (get_wysiwyg_info ()->dialog); gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (get_wysiwyg_info ()->dialog), msg); gtk_widget_queue_draw (Denemo.printarea); } static gdouble get_center_staff_offset (void) { gdouble yadjust = 0.0; if (Denemo.project->movement->currentobject) { DenemoObject *obj = (DenemoObject *) Denemo.project->movement->currentobject->data; if (obj->type == CHORD) { chord *thechord = (chord *) obj->object; beamandstemdirhelper (Denemo.project->movement); if (thechord->notes) { note *thenote = (note *) (thechord->notes->data); gdouble staffsize = atof (Denemo.project->lilycontrol.staffsize->str); if (staffsize < 1) staffsize = 20.0; yadjust = -(4 - thenote->y / 5) * staffsize / 8; EvDocumentModel *model; model = g_object_get_data (G_OBJECT (Denemo.printarea), "model"); //there is no ev_view_get_model(), when there is use it gdouble scale = ev_document_model_get_scale (model); yadjust *= scale; } } } return yadjust; } // get_postions gets two y-heights interactively, giving prompts either for slur or beam // gboolean get_positions (gdouble * neary, gdouble * fary, WwGrob grob) { get_wysiwyg_info ()->task = Positions; start_seeking_end (grob); //goes to WaitingForDrag gtk_main (); if (get_wysiwyg_info ()->stage == WaitingForDrag) { EvDocumentModel *model = g_object_get_data (G_OBJECT (Denemo.printarea), "model"); //there is no ev_view_get_model(), when there is use it gdouble scale = ev_document_model_get_scale (model); gdouble staffsize = atof (Denemo.project->lilycontrol.staffsize->str); if (staffsize < 1) staffsize = 20.0; scale *= (staffsize / 4); //Trial and error value scaling evinces pdf display to the LilyPond staff-line-spaces unit goto_movement_staff_obj (NULL, -1, get_wysiwyg_info ()->pos.staff, get_wysiwyg_info ()->pos.measure, get_wysiwyg_info ()->pos.object, get_wysiwyg_info ()->pos.leftmeasurenum); //the cursor to the slur-begin note. gdouble nearadjust = get_center_staff_offset (); *neary = -(get_wysiwyg_info ()->nearpoint.y - get_wysiwyg_info ()->near_i.y + nearadjust) / scale; *fary = -(get_wysiwyg_info ()->farpoint.y - get_wysiwyg_info ()->near_i.y + nearadjust) / scale; //sic! the value of far_i.y is irrelevant get_wysiwyg_info ()->stage = STAGE_NONE; gtk_widget_hide (get_wysiwyg_info ()->dialog); gtk_widget_queue_draw (Denemo.printarea); return TRUE; } else { return FALSE; } } gboolean get_curve (gdouble * x1, gdouble * y1, gdouble * x2, gdouble * y2, gdouble * x3, gdouble * y3, gdouble * x4, gdouble * y4) { //FIXME check for stage, to avoid re-entering get_wysiwyg_info ()->task = Shape; get_wysiwyg_info ()->stage = WaitingForCurveDrag; gtk_main (); if (get_wysiwyg_info ()->stage == WaitingForCurveDrag) { EvDocumentModel *model = g_object_get_data (G_OBJECT (Denemo.printarea), "model"); //there is no ev_view_get_model(), when there is use it gdouble scale = ev_document_model_get_scale (model); gdouble staffsize = atof (Denemo.project->lilycontrol.staffsize->str); if (staffsize < 1) staffsize = 20.0; scale *= (staffsize / 4); //Trial and error value scaling evinces pdf display to the LilyPond staff-line-spaces unit goto_movement_staff_obj (NULL, -1, get_wysiwyg_info ()->pos.staff, get_wysiwyg_info ()->pos.measure, get_wysiwyg_info ()->pos.object, get_wysiwyg_info ()->pos.leftmeasurenum); //the cursor to the slur-begin note. //!!! is pos set up? g_debug ("Reference is %f %f %d %d\n", get_wysiwyg_info ()->Reference.x, get_wysiwyg_info ()->Reference.y, get_wysiwyg_info ()->Curve.p4.x, get_wysiwyg_info ()->Curve.p4.y); *x1 = (get_wysiwyg_info ()->Curve.p1.x - get_wysiwyg_info ()->Reference.x) / scale; *y1 = -(get_wysiwyg_info ()->Curve.p1.y - get_wysiwyg_info ()->Reference.y) / scale; *x2 = (get_wysiwyg_info ()->Curve.p2.x - get_wysiwyg_info ()->Reference.x) / scale; *y2 = -(get_wysiwyg_info ()->Curve.p2.y - get_wysiwyg_info ()->Reference.y) / scale; *x3 = (get_wysiwyg_info ()->Curve.p3.x - get_wysiwyg_info ()->Reference.x) / scale; *y3 = -(get_wysiwyg_info ()->Curve.p3.y - get_wysiwyg_info ()->Reference.y) / scale; *x4 = (get_wysiwyg_info ()->Curve.p4.x - get_wysiwyg_info ()->Reference.x) / scale; *y4 = -(get_wysiwyg_info ()->Curve.p4.y - get_wysiwyg_info ()->Reference.y) / scale; get_wysiwyg_info ()->repeatable = TRUE; get_wysiwyg_info ()->stage = STAGE_NONE; gtk_widget_hide (get_wysiwyg_info ()->dialog); gtk_widget_queue_draw (Denemo.printarea); return TRUE; } else { return FALSE; } } //Gets a new value into get_wysiwyg_info()->Mark.x,y and changes to SelectingFarEnd gboolean get_new_target (void) { get_wysiwyg_info ()->stage = SelectingNearEnd; g_debug ("Starting main"); gtk_main (); if (get_wysiwyg_info ()->stage == SelectingNearEnd) //should have changed, but user cancelled return FALSE; else return TRUE; } //Gets a new value into get_wysiwyg_info()->Mark.x,y and changes to STAGE_NONE gboolean get_new_point (void) { get_wysiwyg_info ()->stage = SelectingPoint; g_debug ("Starting main"); gtk_main (); if (get_wysiwyg_info ()->stage == SelectingPoint) //should have changed, but user cancelled return FALSE; else return TRUE; } gboolean get_reference_point (void) { get_wysiwyg_info ()->stage = SelectingReference; memset (&get_wysiwyg_info ()->Curve, 0, sizeof (Curve)); gtk_main (); if (get_wysiwyg_info ()->stage == SelectingReference) { //should have changed, but the user cancelled return FALSE; } else { get_wysiwyg_info ()->Reference = get_wysiwyg_info ()->Mark; return TRUE; } } gboolean get_control_point (gint which) { gboolean ret = TRUE; if (get_new_point ()) { //FIXME ... instead make purpose of get_new_target() the argument to it, and use that in the call switch (which) { case 1: get_wysiwyg_info ()->Curve.p1.x = get_wysiwyg_info ()->Mark.x; get_wysiwyg_info ()->Curve.p1.y = get_wysiwyg_info ()->Mark.y; break; case 2: get_wysiwyg_info ()->Curve.p2.x = get_wysiwyg_info ()->Mark.x; get_wysiwyg_info ()->Curve.p2.y = get_wysiwyg_info ()->Mark.y; break; case 3: get_wysiwyg_info ()->Curve.p3.x = get_wysiwyg_info ()->Mark.x; get_wysiwyg_info ()->Curve.p3.y = get_wysiwyg_info ()->Mark.y; break; case 4: get_wysiwyg_info ()->Curve.p4.x = get_wysiwyg_info ()->Mark.x; get_wysiwyg_info ()->Curve.p4.y = get_wysiwyg_info ()->Mark.y; break; default: g_warning ("Wrong call to get_control_point, no point %d possible", which); ret = FALSE; break; } } else ret = FALSE; gtk_widget_queue_draw (Denemo.printarea); get_wysiwyg_info ()->stage = (ret ? WaitingForCurveDrag : STAGE_NONE); return ret; } /*UNUSED static gint start_stage (GtkWidget * widget, WwStage stage) { get_wysiwyg_info()->stage = stage; return TRUE; }*/ static void create_all_pdf (void) { start_busy_cursor (); create_pdf (FALSE, TRUE); g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) printview_finished, (gpointer) (FALSE)); } static void create_full_score_pdf (void) { start_busy_cursor (); create_default_scoreblock (); create_pdf (FALSE, TRUE); g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) printview_finished, (gpointer) (FALSE)); } static void copy_pdf (void) { //copy file Denemo.printstatus->printname_pdf[Denemo.printstatus->cycle] to user pdf name //use get_output_uri_from_scoreblock() as default name. //use a gtk_file_chooser like this: gchar *filename; gchar *outuri = get_output_uri_from_scoreblock (); gchar *outpath; gchar *outname; outuri += strlen ("file://"); //skip the uri bit of it outpath = g_path_get_dirname (outuri); outname = g_path_get_basename (outuri); GtkWidget *chooser = gtk_file_chooser_dialog_new (_("PDF creation"), GTK_WINDOW (Denemo.window), GTK_FILE_CHOOSER_ACTION_SAVE, _("_Cancel"), GTK_RESPONSE_REJECT, _("_Save"), GTK_RESPONSE_ACCEPT, NULL); GtkFileFilter *filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("PDF files")); gtk_file_filter_add_pattern (filter, "*.pdf"); gtk_file_filter_add_pattern (filter, "*.PDF"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser), outpath); gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (chooser), outname); gtk_widget_show_all (chooser); if (gtk_dialog_run (GTK_DIALOG (chooser)) == GTK_RESPONSE_ACCEPT) filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser)); else filename = NULL; gtk_widget_destroy (chooser); if (filename) { gchar *contents; gsize length; if (g_file_get_contents (Denemo.printstatus->printname_pdf[Denemo.printstatus->cycle], &contents, &length, NULL)) { if ((!g_file_test (filename, G_FILE_TEST_EXISTS)) || confirm (_("PDF creation"), _("File Exists, overwrite?"))) { if (!g_file_set_contents (filename, contents, length, NULL)) { gchar *msg = g_strdup_printf (_("Errno %d:\nCould not copy %s to %s. Perhaps because some other process is using the destination file. Try again with a new location\n"), errno, Denemo.printstatus->printname_pdf[Denemo.printstatus->cycle], filename); warningdialog (msg); g_free (msg); } else { gchar *uri = g_strconcat ("file://", filename, NULL); if (strcmp (uri, get_output_uri_from_scoreblock ())) score_status (Denemo.project, TRUE); set_current_scoreblock_uri (uri); //g_print ("I have copied %s to %s (default was %s) uri %s\n", Denemo.printstatus->printname_pdf[Denemo.printstatus->cycle], filename, outname, uri); } g_free (contents); } } g_free (outpath); g_free (outname); g_free (filename); } } static void create_movement_pdf (void) { return_on_windows_if_printing; start_busy_cursor (); create_pdf (FALSE, FALSE); g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) printview_finished, (gpointer) (FALSE)); } static void create_part_pdf (void) { return_on_windows_if_printing; start_busy_cursor (); create_pdf (TRUE, TRUE); g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) printview_finished, (gpointer) (FALSE)); } static gint popup_object_edit_menu (void) { call_out_to_guile ("(EditTarget)"); return TRUE; } /*UNUSED static gboolean same_position (DenemoPosition * pos1, DenemoPosition * pos2) { return pos1->movement == pos2->movement && pos1->staff == pos2->staff && pos1->measure == pos2->measure && pos1->object == pos2->object; }*/ static gboolean same_target (DenemoTarget * pos1, DenemoTarget * pos2) { return pos1->type == pos2->type && pos1->objnum == pos2->objnum && pos1->measurenum == pos2->measurenum && pos1->staffnum == pos2->staffnum && pos1->mid_c_offset == pos2->mid_c_offset && pos1->directivenum == pos2->directivenum; } static gint action_for_link (G_GNUC_UNUSED EvView * view, EvLinkAction * obj) { if (get_wysiwyg_info ()->stage == TypesetForPlaybackView) { warningdialog (_("Use the Playback View or re-typeset")); return TRUE; } //g_debug("Link action Mark at %f, %f\n", get_wysiwyg_info()->Mark.x, get_wysiwyg_info()->Mark.y); gchar *uri = (gchar *) ev_link_action_get_uri (obj); //g_debug("Stage %d\n", get_wysiwyg_info()->stage); if ((get_wysiwyg_info ()->stage == SelectingPoint) || (get_wysiwyg_info ()->stage == Dragging1) || (get_wysiwyg_info ()->stage == Dragging2) || (get_wysiwyg_info ()->stage == Dragging3) || (get_wysiwyg_info ()->stage == Dragging4)) return TRUE; if ((get_wysiwyg_info ()->stage == WaitingForDrag) || (get_wysiwyg_info ()->grob == Slur && (get_wysiwyg_info ()->stage == SelectingFarEnd))) { return TRUE; } if (get_wysiwyg_info ()->stage == WaitingForCurveDrag || (get_wysiwyg_info ()->stage == SelectingReference)) return TRUE; if (get_wysiwyg_info ()->stage == Offsetting) { return TRUE; //?Better take over motion notify so as not to get this while working ... } //g_debug("acting on external signal %s type=%d directivenum=%d\n", uri, Denemo.project->movement->target.type, Denemo.project->movement->target.directivenum); if (uri) { gchar **orig_vec = g_strsplit (uri, ":", 6); gchar **vec = orig_vec; if (vec[0] && vec[1] && vec[2] && vec[3] && vec[4] && vec[5] && *vec[5]) vec++; //this will be the case where the file name has a colon in it, (windows drive name) we do not allow for more than one colon. vec[0] is used hereafter. if (g_str_has_prefix (uri, "textedit:") && vec[1] && vec[2] && vec[3]) { DenemoTarget old_target = Denemo.project->movement->target; get_wysiwyg_info ()->ObjectLocated = goto_lilypond_position (atoi (vec[2]), atoi (vec[3])); //sets si->target if ( (get_wysiwyg_info ()->stage == STAGE_NONE) && LeftButtonPressed && (!shift_held_down ()) && (get_wysiwyg_info ()->ObjectLocated)) { call_out_to_guile ("(d-DenemoPlayCursorToEnd)"); return TRUE; } if (get_wysiwyg_info ()->ObjectLocated) { if (!(get_wysiwyg_info ()->grob == Beam && (get_wysiwyg_info ()->stage == SelectingFarEnd))) { get_position (Denemo.project->movement, &get_wysiwyg_info ()->pos); get_wysiwyg_info ()->repeatable = same_target (&old_target, &Denemo.project->movement->target); } else Denemo.project->movement->target = old_target; //undo the change of target when getting the end of beam note } else get_wysiwyg_info ()->repeatable = FALSE; //g_debug("Target type %d\n", Denemo.project->movement->target.type); if ((get_wysiwyg_info ()->stage == SelectingNearEnd)) return TRUE; if (get_wysiwyg_info ()->ObjectLocated && Denemo.project->movement->currentobject) { DenemoDirective *directive = NULL; //this information is collected but not used FIXME DenemoObject *obj = (DenemoObject *) Denemo.project->movement->currentobject->data; get_wysiwyg_info ()->grob = OBJ_NONE; if (obj->type == LILYDIRECTIVE) { directive = ((lilydirective *) obj->object); } else switch (Denemo.project->movement->target.type) { case TARGET_NONE: break; case TARGET_NOTE: if (Denemo.project->movement->target.directivenum) { if (Denemo.project->movement->target.type == TARGET_NOTE) { directive = get_note_directive_number (Denemo.project->movement->target.directivenum); } } { chord *thechord = (chord *) obj->object; if (thechord->figure) get_wysiwyg_info ()->grob = BassFigure; } break; case TARGET_CHORD: g_debug ("Chord directives may be not done"); if (Denemo.project->movement->target.directivenum) { //directive = get_chord_directive_number(Denemo.project->movement->target.directivenum); if (obj->type == CHORD) { chord *thechord = (chord *) obj->object; directive = (DenemoDirective *) g_list_nth_data (thechord->directives, Denemo.project->movement->target.directivenum - 1); if (directive && directive->tag) { g_debug ("Found %s", directive->tag->str); //This is things like ToggleTrill ToggleCoda which require different offsets to their center get_wysiwyg_info ()->grob = Articulation; } } } break; case TARGET_SLUR: //g_debug("taking action on slur..."); if (get_wysiwyg_info ()->repeatable && get_wysiwyg_info ()->task == Positions) { if (confirm (_("Slur Angle/Position"), _("Repeat Slur Positioning Hint?"))) { get_wysiwyg_info ()->stage = WaitingForDrag; gtk_widget_queue_draw (Denemo.printarea); call_out_to_guile ("(GetSlurPositions)"); } else get_wysiwyg_info ()->task = TASK_NONE; } else if (get_wysiwyg_info ()->stage == STAGE_NONE && get_wysiwyg_info ()->repeatable && get_wysiwyg_info ()->task == Shape) { if (confirm (_("Slur Shape"), _("Repeat Shaping Slur?"))) { get_wysiwyg_info ()->stage = WaitingForCurveDrag; gtk_widget_queue_draw (Denemo.printarea); call_out_to_guile ("(ReshapeSlur)"); } else get_wysiwyg_info ()->task = TASK_NONE; } else { get_wysiwyg_info ()->stage = TargetEstablished; get_wysiwyg_info ()->repeatable = FALSE; } break; case TARGET_TIE: if (get_wysiwyg_info ()->stage == STAGE_NONE && get_wysiwyg_info ()->repeatable && get_wysiwyg_info ()->task == Shape) { if (confirm (_("Tie Shape"), _("Repeat Shaping Tie?"))) { get_wysiwyg_info ()->stage = WaitingForCurveDrag; gtk_widget_queue_draw (Denemo.printarea); call_out_to_guile ("(ReshapeTie)"); } else get_wysiwyg_info ()->task = TASK_NONE; } else { get_wysiwyg_info ()->stage = TargetEstablished; get_wysiwyg_info ()->repeatable = FALSE; } break; default: g_warning ("Target type %d not yet done!!", Denemo.project->movement->target.type); break; } } } else if (g_str_has_prefix (uri, "http:")) { gchar *text = g_strdup_printf ("(d-Help \"%s\")", uri); call_out_to_guile (text); g_free (text); } else if (g_str_has_prefix (uri, "scheme:")) { gchar *text = uri + strlen ("scheme:"); if (*text) call_out_to_guile (text); else g_warning ("No script given after scheme:"); } else { g_warning ("Cannot follow link type %s", orig_vec[0]); } g_strfreev (orig_vec); } //!!!! do we want to set_denemo_pixbuf() here if the object is located ???? that is what we are going to drag .... g_debug ("Have get_wysiwyg_info()->ObjectLocated (%.2f, %.2f) (%.2f, %.2f)\n", get_wysiwyg_info ()->Mark.x, get_wysiwyg_info ()->Mark.y, get_wysiwyg_info ()->curx, get_wysiwyg_info ()->cury); set_denemo_pixbuf ((gint) get_wysiwyg_info ()->curx, (gint) get_wysiwyg_info ()->cury); return TRUE; //we do not want the evince widget to handle this. } static gboolean in_selected_object (gint x, gint y) { gint xx, yy; //g_debug("reading position of mark"); get_window_position (&xx, &yy); x += (xx + PRINTMARKER / 2); y += (yy + PRINTMARKER / 2); return (x > get_wysiwyg_info ()->Mark.x && y > get_wysiwyg_info ()->Mark.y && x < (get_wysiwyg_info ()->Mark.x + get_wysiwyg_info ()->Mark.width) && y < (get_wysiwyg_info ()->Mark.y + get_wysiwyg_info ()->Mark.height)); } static gboolean is_near (gint x, gint y, WwPoint p) { gint xx, yy; get_window_position (&xx, &yy); x += (xx + PRINTMARKER / 2); y += (yy + PRINTMARKER / 2); return (ABS (x - p.x) < PRINTMARKER) && (ABS (y - p.y) < PRINTMARKER); } static gboolean printarea_motion_notify (G_GNUC_UNUSED GtkWidget * widget, GdkEventMotion * event) { get_wysiwyg_info ()->ObjectLocated = FALSE; if (get_wysiwyg_info ()->stage == WaitingForDrag) { if ((is_near ((gint) event->x, (gint) event->y, get_wysiwyg_info ()->farpoint)) || (is_near ((gint) event->x, (gint) event->y, get_wysiwyg_info ()->nearpoint))) { gtk_widget_queue_draw (Denemo.printarea); } return TRUE; } if (get_wysiwyg_info ()->stage == DraggingNearEnd) { gint xx, yy; get_window_position (&xx, &yy); // get_wysiwyg_info()->near.x = xx + (gint)event->x; get_wysiwyg_info ()->nearpoint.y = yy + (gint) event->y; //g_debug("near y becomes %d\n", get_wysiwyg_info()->near.y); gtk_widget_queue_draw (Denemo.printarea); return TRUE; } if (get_wysiwyg_info ()->stage == DraggingFarEnd) { gint xx, yy; get_window_position (&xx, &yy); // get_wysiwyg_info()->far.x = xx + (gint)event->x; get_wysiwyg_info ()->farpoint.y = yy + (gint) event->y; gtk_widget_queue_draw (Denemo.printarea); return TRUE; } if (get_wysiwyg_info ()->stage == Dragging1) { gint xx, yy; get_window_position (&xx, &yy); get_wysiwyg_info ()->Curve.p1.x = xx + (gint) event->x; get_wysiwyg_info ()->Curve.p1.y = yy + (gint) event->y; gtk_widget_queue_draw (Denemo.printarea); return TRUE; } if (get_wysiwyg_info ()->stage == Dragging2) { gint xx, yy; get_window_position (&xx, &yy); get_wysiwyg_info ()->Curve.p2.x = xx + (gint) event->x; get_wysiwyg_info ()->Curve.p2.y = yy + (gint) event->y; gtk_widget_queue_draw (Denemo.printarea); return TRUE; } if (get_wysiwyg_info ()->stage == Dragging3) { gint xx, yy; get_window_position (&xx, &yy); get_wysiwyg_info ()->Curve.p3.x = xx + (gint) event->x; get_wysiwyg_info ()->Curve.p3.y = yy + (gint) event->y; gtk_widget_queue_draw (Denemo.printarea); return TRUE; } if (get_wysiwyg_info ()->stage == Dragging4) { gint xx, yy; get_window_position (&xx, &yy); get_wysiwyg_info ()->Curve.p4.x = xx + (gint) event->x; get_wysiwyg_info ()->Curve.p4.y = yy + (gint) event->y; gtk_widget_queue_draw (Denemo.printarea); return TRUE; } gint xx, yy; get_window_position (&xx, &yy); get_wysiwyg_info ()->curx = xx + (gint) event->x; get_wysiwyg_info ()->cury = yy + (gint) event->y; if ((get_wysiwyg_info ()->stage == Offsetting) || (get_wysiwyg_info ()->stage == SelectingReference)) { gtk_widget_queue_draw (Denemo.printarea); return TRUE; } if (in_selected_object ((int) event->x, (int) event->x)) { return TRUE; //we have handled this. } return FALSE; //propagate further } /* UNUSED static void normalize (void) { if (get_wysiwyg_info()->near.x < get_wysiwyg_info()->Mark.x) { gdouble temp = get_wysiwyg_info()->near.x; get_wysiwyg_info()->near.x = get_wysiwyg_info()->Mark.x; get_wysiwyg_info()->Mark.x = temp; } if (get_wysiwyg_info()->near.y < get_wysiwyg_info()->Mark.y) { gdouble temp = get_wysiwyg_info()->near.y; get_wysiwyg_info()->near.y = get_wysiwyg_info()->Mark.y; get_wysiwyg_info()->Mark.y = temp; } if (get_wysiwyg_info()->Mark.x == get_wysiwyg_info()->near.x) get_wysiwyg_info()->near.x++; if (get_wysiwyg_info()->Mark.y == get_wysiwyg_info()->near.y) get_wysiwyg_info()->near.y++; } */ static void apply_tweak (void) { //g_debug("Apply tweak Quitting with %d %d", get_wysiwyg_info()->stage, get_wysiwyg_info()->grob); gtk_main_quit (); return; if (get_wysiwyg_info ()->stage == Offsetting) { gtk_main_quit (); } else { start_normal_cursor (); EvDocumentModel *model; model = g_object_get_data (G_OBJECT (Denemo.printarea), "model"); //there is no ev_view_get_model(), when there is use it gdouble scale = ev_document_model_get_scale (model); gdouble staffsize = atof (Denemo.project->lilycontrol.staffsize->str); if (staffsize < 1) staffsize = 20.0; scale *= (staffsize / 4); //Trial and error value scaling evinces pdf display to the LilyPond staff-line-spaces unit goto_movement_staff_obj (NULL, -1, get_wysiwyg_info ()->pos.staff, get_wysiwyg_info ()->pos.measure, get_wysiwyg_info ()->pos.object, get_wysiwyg_info ()->pos.leftmeasurenum); //the cursor to the slur-begin note. gdouble nearadjust = get_center_staff_offset (); gdouble neary = -(get_wysiwyg_info ()->nearpoint.y - get_wysiwyg_info ()->near_i.y + nearadjust) / scale; gdouble fary = -(get_wysiwyg_info ()->farpoint.y - get_wysiwyg_info ()->near_i.y + nearadjust) / scale; //sic! the value of far_i.y is irrelevant //g_debug("near %d %d far %d %d\n", get_wysiwyg_info()->near.y, get_wysiwyg_info()->near_i.y, get_wysiwyg_info()->far.y, get_wysiwyg_info()->far_i.y); gchar *script = (get_wysiwyg_info ()->grob == Slur) ? g_strdup_printf ("(SetSlurPositions \"%.1f\" \"%.1f\")", neary, fary) : g_strdup_printf ("(SetBeamPositions \"%.1f\" \"%.1f\")", neary, fary); //Move back to the correct place in the score goto_movement_staff_obj (NULL, -1, get_wysiwyg_info ()->pos.staff, get_wysiwyg_info ()->pos.measure, get_wysiwyg_info ()->pos.object, get_wysiwyg_info ()->pos.leftmeasurenum); call_out_to_guile (script); g_free (script); get_wysiwyg_info ()->stage = STAGE_NONE; gtk_widget_hide (get_wysiwyg_info ()->dialog); gtk_widget_queue_draw (Denemo.printarea); } } static void cancel_tweak (void) { //gtk_widget_set_tooltip_markup(gtk_widget_get_parent(Denemo.printarea), standard_tooltip); gtk_widget_set_tooltip_markup (gtk_widget_get_parent (Denemo.printarea), NULL); gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (get_wysiwyg_info ()->dialog), _("Operation Cancelled")); gtk_widget_show (get_wysiwyg_info ()->dialog); get_wysiwyg_info ()->stage = STAGE_NONE; gtk_widget_queue_draw (Denemo.printarea); gtk_main_quit (); } static void repeat_tweak (void) { if (get_wysiwyg_info ()->grob == Slur) call_out_to_guile ("(EditSlur)"); else if (get_wysiwyg_info ()->grob == Tie) call_out_to_guile ("(EditTie)"); else if (get_wysiwyg_info ()->grob == Beam) //if(get_wysiwyg_info()->repeatable && get_wysiwyg_info()->grob==(slur?Slur:Beam)) call_out_to_guile ("(GetBeamPositions)"); else warningdialog (_("Do not know what to repeat")); } static void set_score_size (void) { call_out_to_guile ("(d-SetFontSize)"); } static void help_tweak (void) { gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (get_wysiwyg_info ()->dialog), _("To tweak the positions of objects (and more) move the mouse until the hand pointer appears\nClick on the object and follow the prompts.\nFor beams, click on the notehead of the note where the beam starts.")); gtk_widget_show (get_wysiwyg_info ()->dialog); } static void toggle_lilypond_structure_markers (void) { call_out_to_guile ("(d-ToggleWysiwygMarks)"); call_out_to_guile ("(d-ToggleCurveControl)"); } static gint popup_tweak_menu (void) { GtkWidget *menu = gtk_menu_new (); GtkWidget *item; if (get_wysiwyg_info ()->stage == WaitingForDrag || get_wysiwyg_info ()->stage == WaitingForCurveDrag || get_wysiwyg_info ()->stage == Offsetting) { item = gtk_menu_item_new_with_label (_("Apply")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (apply_tweak), NULL); item = gtk_menu_item_new_with_label (_("Cancel")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (cancel_tweak), NULL); } if (get_wysiwyg_info ()->stage == STAGE_NONE) { item = gtk_menu_item_new_with_label (_("Help for Tweaks")); gtk_widget_set_tooltip_markup (item, _("This window can be used to tweak the typesetting that LilyPond does in the case that it is not optimal")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (help_tweak), NULL); if (!current_scoreblock_is_custom ()) { item = gtk_menu_item_new_with_label (_("Red dots and crosses (Off/On)")); gtk_widget_set_tooltip_markup (item, _("The exact positions of the graphical components of the score will be labelled with red dots\n" "and the control points for curves with red crosses for accurate tweaks\nTurn these off before printing!")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (toggle_lilypond_structure_markers), NULL); } item = gtk_menu_item_new_with_label (_("Score Size")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (set_score_size), NULL); if (get_wysiwyg_info ()->repeatable) { //never true item = gtk_menu_item_new_with_label (_("Repeat")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (repeat_tweak), NULL); } } gtk_widget_show_all (menu); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); return TRUE; } static gint printarea_button_press (G_GNUC_UNUSED GtkWidget * widget, GdkEventButton * event) { //DenemoTargetType type = Denemo.project->movement->target.type; gboolean left = (event->button == 1); gboolean right = !left; LeftButtonPressed = left; //g_debug("Button press %d, %d %d\n",(int)event->x , (int)event->y, left); if (audio_is_playing ()) { call_out_to_guile ("(DenemoStop)"); switch_back_to_main_window (); } get_wysiwyg_info ()->button = event->button; gint xx, yy; get_window_position (&xx, &yy); get_wysiwyg_info ()->last_button_press.x = xx + event->x; get_wysiwyg_info ()->last_button_press.y = yy + event->y; gboolean hotspot = is_near ((gint) event->x, (gint) event->y, get_wysiwyg_info ()->nearpoint) || (is_near ((gint) event->x, (gint) event->y, get_wysiwyg_info ()->farpoint)); //g_debug("stage %d hotspot %d", get_wysiwyg_info()->stage, hotspot); if (left && (get_wysiwyg_info ()->stage == WaitingForDrag) && !hotspot) { popup_tweak_menu (); //other stages STAGE_NONE for example. And make the offer of Repeat if appropriate... return TRUE; } if (get_wysiwyg_info ()->stage == WaitingForCurveDrag) { if (is_near ((gint) event->x, (gint) event->y, get_wysiwyg_info ()->Curve.p1)) { get_wysiwyg_info ()->stage = Dragging1; //gtk_widget_queue_draw (Denemo.printarea); return TRUE; } else if (is_near ((gint) event->x, (gint) event->y, get_wysiwyg_info ()->Curve.p2)) { get_wysiwyg_info ()->stage = Dragging2; return TRUE; } else if (is_near ((gint) event->x, (gint) event->y, get_wysiwyg_info ()->Curve.p3)) { get_wysiwyg_info ()->stage = Dragging3; return TRUE; } else if (is_near ((gint) event->x, (gint) event->y, get_wysiwyg_info ()->Curve.p4)) { get_wysiwyg_info ()->stage = Dragging4; return TRUE; } popup_tweak_menu (); return TRUE; } if (right && get_wysiwyg_info ()->stage == WaitingForDrag && !hotspot) { apply_tweak (); } if ((get_wysiwyg_info ()->stage == SelectingNearEnd) || (get_wysiwyg_info ()->stage == SelectingReference)) { get_wysiwyg_info ()->near_i = get_wysiwyg_info ()->nearpoint = get_wysiwyg_info ()->last_button_press; //struct copy return TRUE; } if (get_wysiwyg_info ()->stage == SelectingPoint) { //handle on release as user may move before releasing return TRUE; } if (get_wysiwyg_info ()->stage == SelectingFarEnd) { //handle on release, after cursor has moved to note return TRUE; } if (get_wysiwyg_info ()->stage == WaitingForDrag) { if (is_near ((gint) event->x, (gint) event->y, get_wysiwyg_info ()->nearpoint)) { get_wysiwyg_info ()->stage = DraggingNearEnd; } else if (is_near ((gint) event->x, (gint) event->y, get_wysiwyg_info ()->farpoint)) { get_wysiwyg_info ()->stage = DraggingFarEnd; } //???text dialog gtk_widget_queue_draw (Denemo.printarea); return TRUE; } if (in_selected_object ((gint) event->x, (gint) event->y)) { //g_debug("Popping up menu"); popup_object_edit_menu (); return TRUE; } if (get_wysiwyg_info ()->stage != Offsetting) { gint xx, yy; get_window_position (&xx, &yy); get_wysiwyg_info ()->curx = xx + event->x; get_wysiwyg_info ()->cury = yy + event->y; } return TRUE; } static gint printarea_button_release (G_GNUC_UNUSED GtkWidget * widget, GdkEventButton * event) { //g_debug("stage %d\n", get_wysiwyg_info()->stage); gboolean left = (event->button == 1); gboolean right = !left; gboolean object_located_on_entry = get_wysiwyg_info ()->ObjectLocated; gint xx, yy; get_window_position (&xx, &yy); get_wysiwyg_info ()->last_button_release.x = xx + event->x; get_wysiwyg_info ()->last_button_release.y = yy + event->y; if (left && get_wysiwyg_info ()->ObjectLocated) gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (Denemo.scorearea))); //g_debug("Button release %d, %d\n",(int)event->x , (int)event->y); if (get_wysiwyg_info ()->stage == Dragging1) { get_wysiwyg_info ()->Curve.p1.x = get_wysiwyg_info ()->last_button_release.x; get_wysiwyg_info ()->Curve.p1.y = get_wysiwyg_info ()->last_button_release.y; get_wysiwyg_info ()->stage = WaitingForCurveDrag; gtk_widget_queue_draw (Denemo.printarea); return TRUE; } else if (get_wysiwyg_info ()->stage == Dragging2) { get_wysiwyg_info ()->Curve.p2.x = get_wysiwyg_info ()->last_button_release.x; get_wysiwyg_info ()->Curve.p2.y = get_wysiwyg_info ()->last_button_release.y; get_wysiwyg_info ()->stage = WaitingForCurveDrag; gtk_widget_queue_draw (Denemo.printarea); return TRUE; } else if (get_wysiwyg_info ()->stage == Dragging3) { get_wysiwyg_info ()->Curve.p3.x = get_wysiwyg_info ()->last_button_release.x; get_wysiwyg_info ()->Curve.p3.y = get_wysiwyg_info ()->last_button_release.y; get_wysiwyg_info ()->stage = WaitingForCurveDrag; gtk_widget_queue_draw (Denemo.printarea); return TRUE; } else if (get_wysiwyg_info ()->stage == Dragging4) { get_wysiwyg_info ()->Curve.p4.x = get_wysiwyg_info ()->last_button_release.x; get_wysiwyg_info ()->Curve.p4.y = get_wysiwyg_info ()->last_button_release.y; get_wysiwyg_info ()->stage = WaitingForCurveDrag; gtk_widget_queue_draw (Denemo.printarea); return TRUE; } if (get_wysiwyg_info ()->stage == WaitingForCurveDrag) { g_debug ("End of curve drag - should give menu if right click"); g_debug ("Check level > 1 %d", gtk_main_level ()); gtk_main_quit (); return TRUE; } if (get_wysiwyg_info ()->ObjectLocated || (get_wysiwyg_info ()->stage == SelectingNearEnd) || (get_wysiwyg_info ()->stage == SelectingReference)) { get_wysiwyg_info ()->Mark.width = get_wysiwyg_info ()->Mark.height = PRINTMARKER; gtk_widget_queue_draw (Denemo.printarea); get_wysiwyg_info ()->Mark.x = event->x + xx; get_wysiwyg_info ()->Mark.y = event->y + yy; // switch_back_to_main_window(); get_wysiwyg_info ()->ObjectLocated = FALSE; } if ( /* left && */ get_wysiwyg_info ()->stage == TargetEstablished) { if (Denemo.project->movement->target.type == TARGET_SLUR) { get_wysiwyg_info ()->grob = Slur; call_out_to_guile ("(EditSlur)"); get_wysiwyg_info ()->stage = STAGE_NONE; return TRUE; } else if (Denemo.project->movement->target.type == TARGET_TIE) { get_wysiwyg_info ()->grob = Tie; call_out_to_guile ("(EditTie)"); get_wysiwyg_info ()->stage = STAGE_NONE; return TRUE; } } if (get_wysiwyg_info ()->stage == SelectingNearEnd) { get_wysiwyg_info ()->stage = SelectingFarEnd; gtk_main_quit (); return TRUE; } if (get_wysiwyg_info ()->stage == SelectingReference) { get_wysiwyg_info ()->stage = STAGE_NONE; gtk_main_quit (); return TRUE; } if (get_wysiwyg_info ()->stage == SelectingPoint) { get_wysiwyg_info ()->stage = STAGE_NONE; get_wysiwyg_info ()->Mark.width = get_wysiwyg_info ()->Mark.height = PRINTMARKER; //width=0 means no mark get_wysiwyg_info ()->Mark.x = event->x + xx; get_wysiwyg_info ()->Mark.y = event->y + yy; g_debug ("Selected point, %f %f \n", get_wysiwyg_info ()->Mark.x, get_wysiwyg_info ()->Mark.y); gtk_main_quit (); return TRUE; } if (get_wysiwyg_info ()->stage == SelectingFarEnd) { get_wysiwyg_info ()->far_i = get_wysiwyg_info ()->farpoint = get_wysiwyg_info ()->last_button_release; get_wysiwyg_info ()->stage = WaitingForDrag; //first post-insert a \stemNeutral if beaming if (get_wysiwyg_info ()->grob == Beam) { call_out_to_guile ("(d-MoveCursorRight)(if (not (StemDirective?)) (begin (d-InfoDialog (_ \"Note that a Directive to revert to automatic stems is now placed after the beamed notes. Edit this as needed for the voice you are using.\")) (d-InsertStem)))"); } //g_debug("yadjust %f %f\n", nearadjust, faradjust); //here we move the cursor back to the beam/slur start goto_movement_staff_obj (NULL, -1, get_wysiwyg_info ()->pos.staff, get_wysiwyg_info ()->pos.measure, get_wysiwyg_info ()->pos.object, get_wysiwyg_info ()->pos.leftmeasurenum); gtk_widget_queue_draw (Denemo.printarea); gchar *msg = (get_wysiwyg_info ()->grob == Slur) ? _("Now drag the begin/end markers to suggest slur position/angle\nRight click when done.") : _("Now drag the begin/end markers to set position/angle of beam\nRight click when done."); gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (get_wysiwyg_info ()->dialog), msg); gtk_widget_show (get_wysiwyg_info ()->dialog); return TRUE; } if ((get_wysiwyg_info ()->stage == DraggingNearEnd) || (get_wysiwyg_info ()->stage == DraggingFarEnd)) { get_wysiwyg_info ()->stage = WaitingForDrag; return TRUE; } if (get_wysiwyg_info ()->stage == Offsetting) { if (right) popup_tweak_menu (); else { g_debug ("Offsetting quitting with %d %d", get_wysiwyg_info ()->stage, get_wysiwyg_info ()->grob); //The offset depends on the object being dragged. ToogleTrill sign uses bottom right, ToggleCoda uses center left. // get_wysiwyg_info()->curx +=18;//for trill // get_wysiwyg_info()->cury +=18;//for coda, mordent ... // ??? gtk_main_quit (); } return TRUE; } // \once \override DynamicLineSpanner #'padding = #10 setting padding for cresc and dimin // \once \override DynamicLineSpanner #'Y-offset = #-10 to move a cresc or dimin vertically downwards. // \once \override DynamicLineSpanner #'direction = #1 to place above/below (-1) //g_debug("Stage %d object loc %d left %d", get_wysiwyg_info()->stage, object_located_on_entry, left); if (right && (get_wysiwyg_info ()->stage == STAGE_NONE)) { if (object_located_on_entry) //set by action_for_link popup_object_edit_menu (); else popup_tweak_menu (); return TRUE; } return TRUE; return TRUE; } // Denemo.printstatus->mtime = file_get_mtime(filename); use in get_printfile_pathbasename static void typeset_control (gpointer data) { static gpointer last_data = NULL; static GString *last_script = NULL; gint markstaff = Denemo.project->movement->markstaffnum; Denemo.project->movement->markstaffnum = 0; //g_debug("typeset control with %d : print view is %d\n", Denemo.project->textwindow && gtk_widget_get_visible(Denemo.project->textwindow), Denemo.printstatus->background==STATE_ON); // if(Denemo.project->textwindow && gtk_widget_get_visible(Denemo.project->textwindow) && (Denemo.printstatus->background==STATE_ON) && Denemo.printstatus->typeset_type!=TYPESET_ALL_MOVEMENTS) // return; if (Denemo.printstatus->background != STATE_ON) Denemo.printstatus->background = 0; //STATE_NONE if (last_script == NULL) last_script = g_string_new ("(d-PrintView)"); if (data == create_all_pdf) create_all_pdf (); else if (data == create_full_score_pdf) create_full_score_pdf (); else if (data == create_movement_pdf) create_movement_pdf (); else if (data == create_part_pdf) create_part_pdf (); else if (data != NULL) { if (Denemo.printstatus->background == STATE_ON) { save_selection (Denemo.project->movement); if (Denemo.printstatus->typeset_type == TYPESET_ALL_MOVEMENTS) { Denemo.project->movement->markstaffnum = 0; create_pdf (FALSE, TRUE); } else if (Denemo.printstatus->typeset_type == TYPESET_MOVEMENT) { Denemo.project->movement->markstaffnum = 0; create_pdf (FALSE, FALSE); } else { gint value = Denemo.project->movement->currentstaffnum - Denemo.printstatus->first_staff; if (value < 1) value = 1; Denemo.project->movement->markstaffnum = Denemo.project->movement->selection.firststaffmarked = value; value = Denemo.project->movement->currentstaffnum + Denemo.printstatus->last_staff; if (value < 1) value = 1; Denemo.project->movement->selection.laststaffmarked = value; value = Denemo.project->movement->currentmeasurenum - Denemo.printstatus->first_measure; if (value < 1) value = 1; Denemo.project->movement->selection.firstmeasuremarked = value; value = Denemo.project->movement->currentmeasurenum + Denemo.printstatus->last_measure; if (value < 1) value = 1; Denemo.project->movement->selection.lastmeasuremarked = value; Denemo.project->movement->selection.firstobjmarked = 0; Denemo.project->movement->selection.lastobjmarked = G_MAXINT - 1; //counts from 0, +1 must be valid create_pdf (FALSE, FALSE); //this movement only cursor-relative selection of measures } } else { start_busy_cursor (); create_pdf (FALSE, TRUE); } g_string_assign (last_script, data); last_data = NULL; g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) printview_finished, (gpointer) (FALSE)); if (Denemo.printstatus->background == STATE_ON) { restore_selection (Denemo.project->movement); } Denemo.project->movement->markstaffnum = markstaff; goto END; } else { //data is NULL, repeat last typeset if (last_data) { ((void (*)()) last_data) (); Denemo.project->movement->markstaffnum = markstaff; goto END; } else if (last_script->len) { start_busy_cursor (); call_out_to_guile (last_script->str); g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) printview_finished, (gpointer) (FALSE)); Denemo.project->movement->markstaffnum = markstaff; goto END; } Denemo.project->movement->markstaffnum = markstaff; goto END; } last_data = data; Denemo.project->movement->markstaffnum = markstaff; END: //bring view back to show cursor if (Denemo.textview) gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (Denemo.textview), gtk_text_buffer_get_insert (Denemo.textbuffer), 0.0, TRUE, 0.5, 0.5); } //Callback for the command PrintView //Ensures the print view window is visible. //if refresh_if_needed it calls create_all_pdf() provided the score has changed void implement_show_print_view (gboolean refresh_if_needed) { present_print_view_window (); #ifndef G_OS_WIN32 //intended to avoid killing already running typeset on windows if (refresh_if_needed && (changecount != Denemo.project->changecount || Denemo.project->lilysync != Denemo.project->changecount)) { if (Denemo.prefs.manualtypeset && (!initialize_typesetting ())) { typeset_control (create_all_pdf); changecount = Denemo.project->changecount; } } #endif } gboolean printview_is_stale (void) { return ((changecount != Denemo.project->changecount) || (Denemo.project->lilysync != Denemo.project->changecount)); } void typeset_current_layout (void) { return_on_windows_if_printing; typeset_control (create_all_pdf); } /* typeset the score, and store the passed script for refresh purposes*/ gboolean typeset_for_script (gchar * script) { return1_on_windows_if_printing; typeset_control (script); start_busy_cursor (); show_print_view (NULL, NULL); return TRUE; } static void page_display (G_GNUC_UNUSED GtkWidget * button, gint page_increment) { gint i; for (i = 0; i < page_increment; i++) ev_view_next_page ((EvView *) Denemo.printarea); for (i = 0; i > page_increment; i--) ev_view_previous_page ((EvView *) Denemo.printarea); } static void dual_page (GtkWidget * button) { GError *err = NULL; gboolean duplex = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (Denemo.printarea), "Duplex")); gtk_button_set_label (GTK_BUTTON (button), duplex ? _("Duplex") : _("Single")); g_object_set_data (G_OBJECT (Denemo.printarea), "Duplex", GINT_TO_POINTER (!g_object_get_data (G_OBJECT (Denemo.printarea), "Duplex"))); set_printarea (&err); } #if 0 gint printarea_scroll_event (GtkWidget * widget, GdkEventScroll * event) { switch (event->direction) { case GDK_SCROLL_UP: //g_debug("scroll up event\n"); break; case GDK_SCROLL_DOWN: //g_debug("scroll down event\n"); break; } return FALSE; } #endif static void typeset_action (G_GNUC_UNUSED GtkWidget * button, gpointer data) { if (initialize_typesetting ()) { g_warning ("InitializeTypesetting failed"); } else typeset_control (data); } void typeset_part (void) { typeset_control (create_part_pdf); } static gboolean retypeset (void) { static gint firstmeasure, lastmeasure, firststaff, laststaff, movementnum; DenemoMovement *si = Denemo.project->movement; if ((Denemo.printstatus->printpid == GPID_NONE) && (gtk_widget_get_visible (gtk_widget_get_toplevel (Denemo.printarea)))) { if (Denemo.printstatus->typeset_type == TYPESET_ALL_MOVEMENTS) { if ((changecount != Denemo.project->changecount) || (Denemo.project->lilysync != Denemo.project->changecount)) { Denemo.printstatus->background = STATE_ON; typeset_control ("(d-Info \"This is called when hitting the refresh button while in continuous re-typeset\")(d-PrintView)"); Denemo.printstatus->background = STATE_OFF; changecount = Denemo.project->changecount; } } else if ((changecount != Denemo.project->changecount) || (Denemo.project->lilysync != Denemo.project->changecount) || (si->currentmovementnum != movementnum) || ((Denemo.printstatus->typeset_type == TYPESET_EXCERPT) && (si->currentmeasurenum < firstmeasure || si->currentmeasurenum > lastmeasure || si->currentstaffnum < firststaff || si->currentstaffnum > laststaff))) { firstmeasure = si->currentmeasurenum - Denemo.printstatus->first_measure; if (firstmeasure < 0) firstmeasure = 0; lastmeasure = si->currentmeasurenum + Denemo.printstatus->last_measure; firststaff = si->currentstaffnum - Denemo.printstatus->first_staff; if (firststaff < 0) firststaff = 0; laststaff = si->currentstaffnum + Denemo.printstatus->last_staff; movementnum = si->currentmovementnum; Denemo.printstatus->background = STATE_ON; typeset_control ("(disp \"This is called when hitting the refresh button while in continuous re-typeset\")(d-PrintView)"); Denemo.printstatus->background = STATE_OFF; changecount = Denemo.project->changecount; } } return TRUE; //continue } GtkWidget *ContinuousUpdateButton = NULL; //turn the continuous update off and on static void toggle_updates (void) { if (Denemo.printstatus->updating_id) { g_source_remove (Denemo.printstatus->updating_id); Denemo.printstatus->updating_id = 0; gtk_button_set_label (GTK_BUTTON (ContinuousUpdateButton), MANUAL); if (Denemo.prefs.persistence) Denemo.prefs.manualtypeset = TRUE; gtk_window_set_transient_for (GTK_WINDOW (gtk_widget_get_toplevel (Denemo.printarea)), NULL); } else { if (Denemo.prefs.typesetrefresh) Denemo.printstatus->updating_id = g_timeout_add (Denemo.prefs.typesetrefresh, (GSourceFunc) retypeset, NULL); else Denemo.printstatus->updating_id = g_idle_add ((GSourceFunc) retypeset, NULL); gtk_button_set_label (GTK_BUTTON (ContinuousUpdateButton), CONTINUOUS); if (Denemo.prefs.persistence) Denemo.prefs.manualtypeset = FALSE; } } void set_continuous_typesetting (gboolean on) { gboolean current = Denemo.printstatus->updating_id; if ((current && !on) || ((!current) && on)) toggle_updates (); } static void set_typeset_type (GtkWidget * radiobutton, GtkWidget * rangebox) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (radiobutton))) { changecount = 0; //reset so that a retype occurs gint index = g_slist_index (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton)), radiobutton); //g_debug("Get %s at %d\n", gtk_button_get_label(GTK_BUTTON(radiobutton)), index); switch (index) { case 0: Denemo.printstatus->typeset_type = TYPESET_EXCERPT; gtk_widget_set_sensitive (rangebox, TRUE); break; case 1: Denemo.printstatus->typeset_type = TYPESET_MOVEMENT; gtk_widget_set_sensitive (rangebox, FALSE); break; case 2: Denemo.printstatus->typeset_type = TYPESET_ALL_MOVEMENTS; gtk_widget_set_sensitive (rangebox, FALSE); } if (Denemo.prefs.persistence) Denemo.prefs.typesettype = Denemo.printstatus->typeset_type; } } static void value_change (GtkWidget * spinner, gint * value) { *value = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spinner)); if (Denemo.prefs.persistence) { Denemo.prefs.firstmeasure = Denemo.printstatus->first_measure; Denemo.prefs.lastmeasure = Denemo.printstatus->last_measure; Denemo.prefs.firststaff = Denemo.printstatus->first_staff; Denemo.prefs.laststaff = Denemo.printstatus->last_staff; } } static void range_dialog (void) { static GtkWidget *dialog; if (dialog == NULL) { dialog = gtk_dialog_new (); GtkWidget *area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); GtkWidget *vbox = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (area), vbox); GtkWidget *hbox = gtk_hbox_new (FALSE, 1); GtkWidget *rangeBox = gtk_vbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (vbox), rangeBox, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (rangeBox), hbox, TRUE, TRUE, 0); GtkWidget *label = gtk_label_new (_("Measures before cursor:")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 8); GtkWidget *spinner = gtk_spin_button_new_with_range (0, 1000, 1); g_signal_connect (spinner, "value-changed", (GCallback) value_change, &Denemo.printstatus->first_measure); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinner), Denemo.printstatus->first_measure); gtk_box_pack_start (GTK_BOX (hbox), spinner, TRUE, TRUE, 0); label = gtk_label_new (_("Measures after cursor:")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 8); spinner = gtk_spin_button_new_with_range (0, 1000, 1); g_signal_connect (spinner, "value-changed", (GCallback) value_change, &Denemo.printstatus->last_measure); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinner), Denemo.printstatus->last_measure); gtk_box_pack_start (GTK_BOX (hbox), spinner, TRUE, TRUE, 0); hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (rangeBox), hbox, TRUE, TRUE, 0); label = gtk_label_new (_("Staffs before cursor:")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 8); spinner = gtk_spin_button_new_with_range (0, 100, 1); g_signal_connect (spinner, "value-changed", (GCallback) value_change, &Denemo.printstatus->first_staff); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinner), Denemo.printstatus->first_staff); gtk_box_pack_start (GTK_BOX (hbox), spinner, TRUE, TRUE, 0); label = gtk_label_new (_("Staffs after cursor:")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 8); spinner = gtk_spin_button_new_with_range (0, 100, 1); g_signal_connect (spinner, "value-changed", (GCallback) value_change, &Denemo.printstatus->last_staff); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinner), Denemo.printstatus->last_staff); gtk_box_pack_start (GTK_BOX (hbox), spinner, TRUE, TRUE, 0); hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0); // hbox = gtk_hbox_new (FALSE, 1); // gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0); GtkWidget *button0 = gtk_radio_button_new_with_label_from_widget (NULL, _("All Movements")); g_signal_connect (G_OBJECT (button0), "toggled", G_CALLBACK (set_typeset_type), rangeBox); gtk_widget_set_tooltip_text (button0, _("If checked the current layout is re-typeset at every change")); gtk_box_pack_start (GTK_BOX (hbox), button0, TRUE, TRUE, 0); GtkWidget *button1 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button0), _("Current Movement")); g_signal_connect (G_OBJECT (button1), "toggled", G_CALLBACK (set_typeset_type), rangeBox); gtk_widget_set_tooltip_text (button1, _("If checked the current movement is re-typeset at every change")); gtk_box_pack_start (GTK_BOX (hbox), button1, TRUE, TRUE, 0); GtkWidget *button2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button0), _("Cursor Context")); g_signal_connect (G_OBJECT (button2), "toggled", G_CALLBACK (set_typeset_type), rangeBox); gtk_widget_set_tooltip_text (button2, _("If checked the range around the current cursor position is re-typeset at every change or when the cursor moves out of range.")); gtk_box_pack_start (GTK_BOX (hbox), button2, TRUE, TRUE, 0); gtk_widget_set_sensitive (rangeBox, FALSE); if (Denemo.prefs.typesettype == TYPESET_MOVEMENT) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button1), TRUE); if (Denemo.prefs.typesettype == TYPESET_EXCERPT) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button2), TRUE); g_signal_connect (dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); gtk_widget_show_all (dialog); } else gtk_widget_show (dialog); } static GtkWidget * get_updates_menu (GtkWidget * button) { static GtkWidget *menu; if (menu == NULL) { GtkWidget *item; menu = gtk_menu_new (); item = gtk_check_menu_item_new_with_label (CONTINUOUS); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); gtk_widget_set_tooltip_text (item, _("Set background updates on/off.")); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (toggle_updates), NULL); ContinuousUpdateButton = button; gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), !Denemo.prefs.manualtypeset); item = gtk_menu_item_new_with_label (_("Range")); gtk_widget_set_tooltip_text (item, _("Set how much of the score to re-draw.")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (range_dialog), NULL); gtk_widget_show_all (menu); } return menu; } static void updates_menu (GtkWidget * button) { gtk_menu_popup (GTK_MENU (get_updates_menu (button)), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); } static GtkWidget * get_updates_button (void) { GtkWidget *button = gtk_button_new_with_label (MANUAL); gtk_widget_set_tooltip_text (button, _("Set background updater on/off. This controls if typesetting is re-done after each change to the music. The amount of the score to be re-typeset can be set via this button.")); g_signal_connect (button, "clicked", G_CALLBACK (updates_menu), NULL); return button; } //pops up a menu of layouts with the action being to typeset that layout. If only one, typeset that. static void popup_layouts_menu (void) { GtkWidget *menu = GetLayoutMenu (); if (Denemo.project->custom_scoreblocks || (g_list_length (Denemo.project->standard_scoreblocks) > 1)) gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME); else typeset_current_layout (); } void install_printpreview (GtkWidget * top_vbox) { if (Denemo.printarea) return; Denemo.printstatus->typeset_type = Denemo.prefs.typesettype; Denemo.printstatus->first_measure = Denemo.prefs.firstmeasure; Denemo.printstatus->last_measure = Denemo.prefs.lastmeasure; Denemo.printstatus->first_staff = Denemo.prefs.firststaff; Denemo.printstatus->last_staff = Denemo.prefs.laststaff; GtkWidget *main_vbox = gtk_vbox_new (FALSE, 1); GtkWidget *main_hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (main_vbox), main_hbox, FALSE, TRUE, 0); GtkWidget *hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (main_hbox), hbox, FALSE, TRUE, 0); GtkWidget *button = gtk_button_new_with_label (_("Print")); gtk_widget_set_tooltip_text (button, _("Pops up a Print dialog. From this you can send your typeset score to a printer or to a PDF file.")); g_signal_connect (button, "clicked", G_CALLBACK (libevince_print), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("PDF")); gtk_widget_set_tooltip_text (button, _("Exports a pdf file for this layout")); g_signal_connect (button, "clicked", G_CALLBACK (copy_pdf), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Typeset")); gtk_widget_set_tooltip_text (button, _("Typesets the music using the one of the created layouts. See View → Score Layouts to see the layouts you have created.")); g_signal_connect (button, "clicked", G_CALLBACK (popup_layouts_menu), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Movement")); gtk_widget_set_tooltip_text (button, _("Typesets the music from the current movement. This creates a score layout comprising one movement.")); g_signal_connect (button, "clicked", G_CALLBACK (typeset_action), create_movement_pdf); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Part")); gtk_widget_set_tooltip_text (button, _("Typesets the music from the current part for all movements. A part is all the music with the same staff-name. This creates a score layout with one part, all movements.")); g_signal_connect (button, "clicked", G_CALLBACK (typeset_action), create_part_pdf); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Refresh")); gtk_widget_set_tooltip_text (button, _("Re-issues the last print command. Use this after modifying the file to repeat the typesetting.")); g_signal_connect (button, "clicked", G_CALLBACK (typeset_action), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = get_updates_button (); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); (void) get_updates_menu (button); //this is to initialize the continuous/manual state hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_end (GTK_BOX (main_hbox), hbox, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Duplex")); gtk_widget_set_tooltip_text (button, _("Shows pages side by side, so you can see page turns for back-to-back printing\n")); g_signal_connect (button, "clicked", G_CALLBACK (dual_page), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Next")); gtk_widget_set_tooltip_text (button, _("Move to the next page - you can also scroll with the scroll-wheel, and zoom with control-wheel")); g_signal_connect (button, "clicked", G_CALLBACK (page_display), (gpointer) 1); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Previous")); gtk_widget_set_tooltip_text (button, _("Move to the previous page - you can also scroll with the scroll-wheel, and zoom with control-wheel")); g_signal_connect (button, "clicked", G_CALLBACK (page_display), (gpointer) - 1); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); if (top_vbox == NULL) top_vbox = gtk_window_new (GTK_WINDOW_TOPLEVEL); // if(!Denemo.prefs.manualtypeset) // gtk_window_set_urgency_hint (GTK_WINDOW(Denemo.window), TRUE);//gtk_window_set_transient_for (GTK_WINDOW(top_vbox), GTK_WINDOW(Denemo.window)); gtk_window_set_title (GTK_WINDOW (top_vbox), _("Denemo Print View")); gtk_window_set_default_size (GTK_WINDOW (top_vbox), 600, 750); g_signal_connect (G_OBJECT (top_vbox), "delete-event", G_CALLBACK (hide_printarea_on_delete), NULL); gtk_container_add (GTK_CONTAINER (top_vbox), main_vbox); GtkAdjustment *printvadjustment = GTK_ADJUSTMENT (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); Denemo.printvscrollbar = gtk_vscrollbar_new (GTK_ADJUSTMENT (printvadjustment)); GtkAdjustment *printhadjustment = GTK_ADJUSTMENT (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); Denemo.printhscrollbar = gtk_hscrollbar_new (GTK_ADJUSTMENT (printhadjustment)); GtkWidget *score_and_scroll_hbox = gtk_scrolled_window_new (printhadjustment, printvadjustment); gtk_box_pack_start (GTK_BOX (main_vbox), score_and_scroll_hbox, TRUE, TRUE, 0); ev_init (); Denemo.printarea = (GtkWidget *) ev_view_new (); gtk_container_add (GTK_CONTAINER (score_and_scroll_hbox), Denemo.printarea); if (Denemo.prefs.newbie) gtk_widget_set_tooltip_markup (score_and_scroll_hbox, _ ("This window shows the final typeset score from which you can print or (via print to file) create a PDF document.\nThis will be continuously updated while you edit the music in the main window.\nIn this Print View window you can click on a note to move to that place in the main Denemo display window. The right-click to get a menu of \"tweaks\" which you can apply to drag slurs, beams etc if they are not quite right.\nNote: It can take some time to generate a beautifully typeset score, especially for a large score on a slow machine so choose just a range to be continually updated in that case, or turn off continuous update.")); g_signal_connect (G_OBJECT (Denemo.printarea), "external-link", G_CALLBACK (action_for_link), NULL); #if GTK_MAJOR_VERSION != 2 g_signal_connect_after (G_OBJECT (Denemo.printarea), "draw", G_CALLBACK (printarea_draw_event), NULL); #else g_signal_connect_after (G_OBJECT (Denemo.printarea), "expose_event", G_CALLBACK (printarea_draw_event), NULL); #endif g_signal_connect (G_OBJECT (Denemo.printarea), "motion_notify_event", G_CALLBACK (printarea_motion_notify), NULL); //g_signal_connect (G_OBJECT (Denemo.printarea), "focus_in_event", // G_CALLBACK (printarea_focus_in_event), NULL); //g_debug("Attaching signal..."); // !!!not available in early versions of libevince //g_signal_connect (G_OBJECT (Denemo.printarea), "sync-source", // G_CALLBACK (denemoprintf_sync), NULL); //g_debug("...Attached signal?\n"); //what would this one fire on???? g_signal_connect (G_OBJECT (Denemo.printarea), "binding-activated", // G_CALLBACK (denemoprintf_sync), NULL); // Re-connect this signal to work on the pop up menu for dragging Denemo objects... g_signal_connect (G_OBJECT (Denemo.printarea), "button_press_event", G_CALLBACK (printarea_button_press), NULL); // We may not need this signal // g_signal_connect (G_OBJECT (score_and_scroll_hbox), "scroll_event", G_CALLBACK(printarea_scroll_event), NULL); g_signal_connect_after (G_OBJECT (Denemo.printarea), "button_release_event", G_CALLBACK (printarea_button_release), NULL); gtk_widget_show_all (main_vbox); gtk_widget_hide (top_vbox); get_wysiwyg_info ()->dialog = infodialog (""); g_signal_connect (get_wysiwyg_info ()->dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); g_signal_handlers_block_by_func (get_wysiwyg_info ()->dialog, G_CALLBACK (gtk_widget_destroy), get_wysiwyg_info ()->dialog); gtk_widget_hide (get_wysiwyg_info ()->dialog); } gboolean continuous_typesetting (void) { return (Denemo.printstatus->updating_id) && gtk_widget_get_visible (gtk_widget_get_toplevel (Denemo.printarea)); } denemo-2.2.0/src/printview/PaxHeaders.19168/svgview.h0000644000000000000000000000013213135434036017212 xustar0030 mtime=1500919838.356648472 30 atime=1500919921.473315139 30 ctime=1500919914.296648472 denemo-2.2.0/src/printview/svgview.h0000644000175000017500000000036613135434036021070 0ustar00jjbenhamjjbenham00000000000000#ifndef __SVG_VIEW_H__ #define __SVG_VIEW_H__ void install_svgview (GtkWidget * top_vbox); void display_svg (gdouble scale, gboolean part); gboolean attach_timings (void); DenemoObject *get_object_for_time (gdouble time, gboolean start); #endif denemo-2.2.0/src/printview/PaxHeaders.19168/markupview.h0000644000000000000000000000013213135434036017712 xustar0030 mtime=1500919838.356648472 30 atime=1500919921.473315139 30 ctime=1500919914.356648472 denemo-2.2.0/src/printview/markupview.h0000644000175000017500000000066213135434036021567 0ustar00jjbenhamjjbenham00000000000000#ifndef __MARKUP_VIEW_H__ #define __MARKUP_VIEW_H__ #include #include "export/print.h" gboolean install_markup_preview (GtkWidget * top_vbox, gchar *tooltip); void markupview_finished (G_GNUC_UNUSED GPid pid, gint status, gboolean print); gchar *get_lilypond_syntax_from_user (gchar *title, gchar *instruction, gchar *prior_context, gchar *post_context, gchar *initial_markup); void drop_markup_area (void); #endif denemo-2.2.0/src/printview/PaxHeaders.19168/printview.h0000644000000000000000000000013213135434036017547 xustar0030 mtime=1500919838.356648472 30 atime=1500919921.489981805 30 ctime=1500919914.359981805 denemo-2.2.0/src/printview/printview.h0000644000175000017500000000241113135434036021416 0ustar00jjbenhamjjbenham00000000000000#ifndef __PRINT_VIEW_H__ #define __PRINT_VIEW_H__ #include #include "export/print.h" gboolean get_offset (gdouble * x, gdouble * y); gboolean get_positions (gdouble * neary, gdouble * fary, WwGrob grob); gboolean get_new_target (void); gboolean get_reference_point (void); gboolean get_control_point (gint which); gboolean get_curve (gdouble * x1, gdouble * y1, gdouble * x2, gdouble * y2, gdouble * x3, gdouble * y3, gdouble * x4, gdouble * y4); void present_print_view_window (); void typeset_part (void); gboolean continuous_typesetting (void); void set_continuous_typesetting (gboolean setting); gboolean get_new_point (void); int check_lily_version (gchar * version); gboolean typeset_for_script (gchar * script); gboolean print_typeset_pdf (void); void typeset_current_layout (void); void implement_show_print_view (gboolean refresh_if_needed); void install_printpreview (GtkWidget * vbox); void refresh_print_view (gboolean interactive); void printview_finished (G_GNUC_UNUSED GPid pid, G_GNUC_UNUSED gint status, gboolean print); void print_from_print_view (gboolean all_movements); void create_pdf_for_lilypond (gchar * lilypond); gboolean printview_is_stale (void); void unpause_continuous_typesetting (void); void pause_continuous_typesetting (void); #endif denemo-2.2.0/src/PaxHeaders.19168/display0000644000000000000000000000013213135434152014707 xustar0030 mtime=1500919914.249981805 30 atime=1500919914.539981806 30 ctime=1500919914.249981805 denemo-2.2.0/src/display/0000755000175000017500000000000013135434152016635 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/src/display/PaxHeaders.19168/draw.c0000644000000000000000000000013213135434036016066 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.489981805 30 ctime=1500919914.219981805 denemo-2.2.0/src/display/draw.c0000644000175000017500000022574213135434036017753 0ustar00jjbenhamjjbenham00000000000000/* draw.c * loop that draws all the items in the presently-displayed part of * the score * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller, Adam Tee */ #include #include #include #include #include #include "display/calculatepositions.h" #include "command/commandfuncs.h" #include "command/contexts.h" #include "command/lilydirectives.h" #include "display/draw.h" /* Which includes gtk.h */ #include "display/drawingprims.h" #include "display/slurs.h" #include "display/hairpin.h" #include "command/staff.h" #include "core/utils.h" #include "export/exportlilypond.h" /* to generate lily text for display */ #include "audio/pitchentry.h" #include "command/lyric.h" #include "audio/midi.h" #include "display/displayanimation.h" #include "ui/moveviewport.h" #include "audio/audiointerface.h" #define EXCL_WIDTH 3 #define EXCL_HEIGHT 13 #define SAMPLERATE (44100) /* arbitrary large figure used if no audio */ static DenemoObject *Startobj, *Endobj; static gboolean layout_needed = TRUE; //Set FALSE when further call to draw_score(NULL) is not needed. static GList *MidiDrawObject;/* a chord used for drawing MIDI recorded notes on the score */ static gboolean last_tied = FALSE; void initialize_playhead (void) { layout_needed = TRUE; } void region_playhead (void) { draw_score_area(); } void set_start_and_end_objects_for_draw (void) { if (Denemo.project->movement->smf) { gdouble start = Denemo.project->movement->start_time; gdouble end = Denemo.project->movement->end_time; if ((end > 0.0) && (end < start)) { #ifdef SWAPPING_ENDS Denemo.project->movement->start_time = end; Denemo.project->movement->end_time = start; start = Denemo.project->movement->start_time; end = Denemo.project->movement->end_time; #else Denemo.project->movement->end_time = -1.0; #endif } Startobj = get_obj_for_end_time (Denemo.project->movement->smf, start/get_playback_speed() + 0.001); Endobj = Denemo.project->movement->end_time < 0.0 ? NULL : get_obj_for_start_time (Denemo.project->movement->smf, end/get_playback_speed() - 0.001); } } /** * scorearea_configure_event * * This function recaculates the number of measures that can be fit into * the display, and returns */ gint scorearea_configure_event (G_GNUC_UNUSED GtkWidget * widget, G_GNUC_UNUSED GdkEventConfigure * event) { DenemoProject *gui = Denemo.project; static gboolean init = FALSE; if (!init) { MidiDrawObject = g_list_append(NULL, newchord (0, 0, 0)); chord *thechord = ((DenemoObject*)(MidiDrawObject->data))->object; init = TRUE; } if (gui == NULL) return TRUE; if (gui->movement == NULL) return TRUE; set_width_to_work_with (gui); nudgerightward (gui); nudge_downward (gui); return TRUE; } #define EXTRAFORSELECTRECT 2 /** * Information to pass between the drawing functions */ struct infotopass { clef *clef; gint key; gint curaccs[7]; gint keyaccs[7]; gint stem_directive; gint time1, time2; gint tickspermeasure; gint wholenotewidth; gint objnum; gint measurenum; gint staffnum; gboolean end; //if we have drawn the last measure gint top_y; gint last_gap; //horizontal gap from last object gint markx1, markx2; gint marky1, marky2; gboolean line_end; //set true when an object is drawn off the right hand edge gint tupletstart; //x-coordinate where tuplet started, 0 if none gint tuplety; //y-coordinate of highest note within tuplet measurenode *curmeasure; GList *mwidthiterator; GSList *slur_stack; GSList *hairpin_stack; GtkWidget *verse; gint space_above; gint highy; /*(return) the highest y value drawn */ gint lowy; /*(return) the lowest y value drawn */ gint in_highy; // FIXME these are passed in so that highy, lowy do not need to be passed back gint in_lowy; gboolean source_displayed; //if pixbufs (sources) have been displayed for a staff - show no further staff content gboolean mark; //whether the region is selected gint *left, *right; //pointer into array, pointing to leftmost/rightmost measurenum for current system(line) gint *scale; //pointer into an array of scales - this entry is the percent horizontal scale applied to the current system GList *last_midi; //last list of midi events for object at right of window DenemoObject *startobj; //pointer values - if drawing such an object mark as playback start DenemoObject *endobj; //pointer values - if drawing such an object mark as playback end gint startposition; //x coordinate where to start playing gint endposition; //x coordinate where to end playing gint playposition; //x coordinate of currently played music gdouble leftmosttime; //MIDI time of left most object on last system line displayed gdouble rightmosttime; //MIDI time of last object displayed GList *recordednote;//list of notes when recorded audio or MIDI is present gint currentframe; //current frame of audio being played. (current time converted to frames (at si->recording->samplerate) and slowed down) gboolean highlight_next_note;//the last CHORD was the one before the currently playing one. gboolean allow_duration_error; //do not indicate errors in duration of measure gdouble red, green, blue, alpha; //color of notes gboolean range; gint range_lo, range_hi; }; /* count the number of syllables up to staff->leftmeasurenum */ static gint count_syllables (DenemoStaff * staff, gint from) { gint count = 0; gint i; GList *curmeasure = staff->themeasures; gboolean in_slur = FALSE; for (i = 1; curmeasure && (i < from); i++, curmeasure = curmeasure->next) { objnode *curobj; for (curobj = ((DenemoMeasure*)curmeasure->data)->objects; curobj; curobj = curobj->next) { DenemoObject *obj = curobj->data; if (obj->type == CHORD) { chord *thechord = ((chord *) obj->object); if (thechord->notes && !in_slur) count++; if (thechord->slur_begin_p) in_slur = TRUE; if (thechord->slur_end_p) in_slur = FALSE; if (thechord->is_tied && (!in_slur)) count--; } } //for objs } //for measures if (in_slur) return -count; return count; } static void draw_note_onset(cairo_t *cr, double x, const gchar *glyph, gboolean mark) { if(glyph) { drawlargetext_cr (cr, glyph, x, 20); } else { cairo_move_to (cr, x, 32); cairo_line_to (cr, x, 0); cairo_line_to (cr, x + 10, 32); cairo_fill (cr); } static gboolean on; if(mark) { on = !on; if(on) { cairo_set_line_width (cr, 6.0 / Denemo.project->movement->zoom); cairo_set_source_rgba (cr, 0, 1, 0, 0.40); cairo_arc (cr, x + 10, 20, 20 / Denemo.project->movement->zoom, 0, 2 * M_PI); cairo_stroke (cr); } } } /** * draw_object * * Draws a single object in a measure within a staff. * @param curobj * @param x * @param y * @param gui * @param itp * @return excess ticks in the measure at this object. (Negative means still space). */ static gint draw_object (cairo_t * cr, objnode * curobj, gint x, gint y, DenemoProject * gui, struct infotopass *itp) { itp->highy = itp->lowy = 0; DenemoMovement *si = gui->movement; DenemoObject *mudelaitem = (DenemoObject *) curobj->data; //g_debug("draw obj %d %d\n", mudelaitem->x, y); //this is the selection being given a colored background if (cr) if (itp->mark) { cairo_save (cr); if (si->selection_is_copied) cairo_set_source_rgba (cr, 0.4, 0.8, 0.5, 0.7); else cairo_set_source_rgba (cr, 0.8, 0.8, 0.4, 0.7); cairo_rectangle (cr, x + mudelaitem->x, y, mudelaitem->minpixelsalloted, 80); cairo_fill (cr); cairo_restore (cr); } if (cr && (!Denemo.hovering_over_margin_up) && (!Denemo.hovering_over_margin_down) && (!Denemo.hovering_over_partname) && (!Denemo.hovering_over_clef) && (!Denemo.hovering_over_timesig) && (!Denemo.hovering_over_keysharpen) && (!Denemo.hovering_over_keyflatten) && (!Denemo.hovering_over_movement) && (!Denemo.hovering_over_right_arrow) && (!Denemo.hovering_over_left_arrow)) //this is the hovered over object being given a colored background if ((Denemo.object_hovering_over==curobj) && ((si->currentobject != curobj) || ((si->currentobject == curobj) && si->cursor_appending))) { cairo_save (cr); // if curobj->next is NULL then we may be hovering over the barline we need to detect this in mousing.c and set object_hovering_over to a dummy barline object???, then draw here cairo_set_source_rgba (cr, 0.5, 0.5, 0.9, 0.3); cairo_arc (cr, x + mudelaitem->x + mudelaitem->minpixelsalloted/2, y + 20, mudelaitem->minpixelsalloted, 0.0, 2 * M_PI); cairo_fill (cr); cairo_set_source_rgba (cr, 0.2, 0.2, 0.9, 1); cairo_arc (cr, x + mudelaitem->x + mudelaitem->minpixelsalloted/2, y + 20, mudelaitem->minpixelsalloted, 0.0, 2 * M_PI); cairo_stroke (cr); cairo_restore (cr); } if(Denemo.project->movement->playingnow && itp->highlight_next_note && (((Denemo.project->movement->playhead < mudelaitem->latest_time)))) { itp->highlight_next_note = FALSE; if (cr) { cairo_save (cr); cairo_set_source_rgba (cr, 0.0, 0.2, 0.8, 0.5); cairo_rectangle (cr, x + mudelaitem->x, y, 20, 80); cairo_fill (cr); cairo_restore (cr); } } if (Denemo.project->movement->playingnow && (!((Denemo.project->movement->playhead < mudelaitem->latest_time))))//For an unknown reason, this is the condition that the next note is being played... { itp->highlight_next_note = TRUE; } /* The current note, rest, etc. being painted */ if (mudelaitem == Denemo.project->movement->playingnow) itp->playposition = x + mudelaitem->x; if (mudelaitem == itp->startobj) { itp->startposition = x + mudelaitem->x/* + mudelaitem->minpixelsalloted*/; // if(curobj->prev==NULL) g_debug("item %p at %d\n", curobj, x+mudelaitem->x), itp->startposition -= mudelaitem->minpixelsalloted; } if (mudelaitem == itp->endobj) itp->endposition = x + mudelaitem->x/* + mudelaitem->minpixelsalloted*/; if (cr) if (mudelaitem->type == CHORD && ((chord *) mudelaitem->object)->tone_node) cairo_set_source_rgb (cr, 231.0 / 255, 215.0 / 255, 39.0 / 255); //thecolor = &yellow; switch (mudelaitem->type) { case CHORD: { chord *thechord = ((chord *) mudelaitem->object); if(cr) { cairo_save (cr); //if staff->range and thechord->highesty staff->range_hi ... if (thechord->notes && ((itp->range && ((thechord->highestpitch > itp->range_hi) || (thechord->lowestpitch < itp->range_lo))))) cairo_set_source_rgba (cr, 1.0, 0.0, 0.0, 1.0); else cairo_set_source_rgba (cr, itp->red, itp->green, itp->blue, itp->alpha); } gint highest = draw_chord (cr, curobj, x + mudelaitem->x, y, GPOINTER_TO_INT (itp->mwidthiterator->data), itp->curaccs, itp->mark, (si->currentobject == curobj)); if(cr) { cairo_restore (cr); } if ((thechord->highesty) < itp->highy) itp->highy = thechord->highesty; itp->highy = MIN (itp->highy, highest); if ((thechord->lowesty) > itp->lowy + STAFF_HEIGHT) itp->lowy = thechord->lowesty - STAFF_HEIGHT; //display note onsets for source audio above relevant notes in top staff // if there are not enough notes to use up all the recorded note onsets only some recorded notes are shown. if(cr && si->recording && itp->recordednote && (itp->staffnum == si->top_staff)) { GList *g = itp->recordednote; gint current = mudelaitem->earliest_time*si->recording->samplerate; gint next = mudelaitem->latest_time*si->recording->samplerate; gint leadin = si->recording->leadin; gint notewidth = 0; objnode *curobjnext = curobj->next; if(curobjnext){ DenemoObject *nextobj = (DenemoObject*)curobjnext->data; notewidth = nextobj->x - mudelaitem->x; } else { notewidth = GPOINTER_TO_INT (itp->mwidthiterator->data) + SPACE_FOR_BARLINE - mudelaitem->x; } /* draw the extent of the note */ gint extra_width = (curobj->prev==NULL) ? SPACE_FOR_BARLINE:0; //first note has extra width to leave no gap in timing from end of last bar notewidth += extra_width; cairo_set_source_rgba (cr, 0.0, 0.2, 1.0, 1); cairo_move_to (cr, -extra_width + x + mudelaitem->x, 25); cairo_line_to (cr, -extra_width + x + mudelaitem->x, 20); cairo_line_to (cr, -extra_width + x + mudelaitem->x+ notewidth - 2, 20); cairo_line_to (cr, -extra_width + x + mudelaitem->x+ notewidth, 14); cairo_line_to (cr, -extra_width + x + mudelaitem->x+ notewidth, 22); cairo_line_to (cr, -extra_width + x + mudelaitem->x+2, 22); cairo_fill (cr); cairo_set_source_rgba (cr, 0.3, 0.3, 0.3, 0.5); while( g && (((gint)(((DenemoRecordedNote*)g->data)->timing) - leadin) < current)) { if(itp->measurenum == 1) {//represent onsets before score starts as single red onset mark 10 pixels before the first note. test g==itp->onset to avoid re-drawing cairo_save (cr); cairo_set_source_rgba (cr, 1.0, 0.0, 0.0, 1.0); draw_note_onset (cr, x - 10, NULL, FALSE); cairo_restore (cr); } g=g->next; } while( g && (((gint)(((DenemoRecordedNote*)g->data)->timing) - leadin) < next)) { DenemoRecordedNote *midinote = (DenemoRecordedNote*)(g->data); gdouble fraction = (((gint)(midinote->timing) - leadin) - current) / (double)(next-current); gint pos; gchar *glyph; glyph = NULL; pos = notewidth * fraction; pos += mudelaitem->x; if(g==si->marked_onset) { cairo_save (cr); cairo_set_source_rgba (cr, 0, 0.5, 0, 1);//g_debug("marked offset %2.2f seconds ", midinote->timing/(double)si->recording->samplerate); } else if (si->playingnow) { (itp->currentframe < ((gint)(midinote->timing) - leadin)) ? cairo_set_source_rgba (cr, 0.0, 0.2, 0.8, 0.8): cairo_set_source_rgba (cr, 0.8, 0.2, 0.0, 0.8); } //if MIDI RECORDING draw the pitch as a headless diamond note. if(si->recording->type==DENEMO_RECORDING_MIDI) { DenemoObject *midiobj = (DenemoObject*)(MidiDrawObject->data); DenemoMeasure *curmeasure = si->currentmeasure->data; midiobj->clef = curmeasure->clef; midiobj->keysig = curmeasure->keysig; midiobj->stemdir = curmeasure->stemdir;/// FIXME is there anything else removetone ((DenemoObject*)(MidiDrawObject->data), 0);//there is only one note in the chord so any mid_c_offset will do addtone (MidiDrawObject->data, midinote->mid_c_offset + 7 * midinote->octave, midinote->enshift); chord *thechord = ((DenemoObject*)(MidiDrawObject->data))->object; note *thenote = ((note*)(thechord->notes->data)); thenote->noteheadtype = DENEMO_DIAMOND_NOTEHEAD; if(midinote->enshift) thenote->showaccidental = TRUE; thenote->position_of_accidental = 8; //thechord->baseduration = midinote->duration; //thechord->numdots = midinote->dots; //set_basic_numticks (MidiDrawObject->data); switch (midinote->duration) { case 0: glyph = midinote->dots?"ð…•":"ð…"; break; case 1: glyph = midinote->dots?"ð…žâ€¢":"ð…ž"; break; case 2: glyph = midinote->dots?"ð…Ÿâ€¢":"ð…Ÿ"; break; case 3: glyph = midinote->dots?"ð… â€¢":"ð… "; break; case 4: glyph = midinote->dots?"ð…¡â€¢":"ð…¡"; break; case 5: glyph = midinote->dots?"•ð…¢":"ð…¢"; break; case 6: glyph = midinote->dots?"•ð…£":"ð…£"; break; case 7: glyph = NULL;//we do not have a glyph for this yet break; } if (g==si->marked_onset) { //midinote->measurenum = itp->measurenum; //midinote->objnum = itp->objnum; } cairo_save (cr); (g==si->marked_onset) ?cairo_set_source_rgba (cr, 0, 0.5, 0, 1): cairo_set_source_rgba (cr, 0, 0, 0, 1); draw_chord (cr, MidiDrawObject, pos + x -extra_width, y, 0, itp->curaccs, FALSE, FALSE); cairo_restore (cr); } draw_note_onset(cr, pos + x - extra_width, glyph, (g==si->marked_onset)); if(g==si->marked_onset) {//g_debug("fraction = %f; notewidth = %d ", fraction, notewidth); cairo_restore (cr); } if(si->marked_onset_position && ABS((gint)(pos + x - si->marked_onset_position))<20) { si->marked_onset = g; si->marked_onset_position = 0; //g_debug("Found selected onset\n\n"); } //if(g==itp->onset) g_debug("First onset at %d %d %d %d\n", pos, x, si->marked_onset_position, notewidth); g = g->next; } itp->recordednote = g;//Search onwards for future onsets. Only notes on top staff are used for display of onsets. } //recording if (itp->tupletstart) itp->tuplety = MAX (0, MAX (itp->tuplety, MAX (-thechord->lowesty, -thechord->highesty))); if (thechord->is_fakechord) if (cr) draw_fakechord (cr, x + mudelaitem->x, y - 45, mudelaitem); if (si->currentstaffnum == itp->staffnum && itp->verse && thechord->notes) { if ((!thechord->is_grace) && (!last_tied) && (!itp->slur_stack) && !find_directive (thechord->directives, "MoveRest")) { gchar *syllable = (gchar *) next_syllable (); if (cr) if (syllable) draw_lyric (cr, x + mudelaitem->x, y + itp->in_lowy, syllable); } last_tied = thechord->is_tied; } if (cr) if (thechord->dynamics) draw_dynamic (cr, x + mudelaitem->x, y, mudelaitem); if (cr) if (thechord->slur_end_p) draw_slur (cr, &(itp->slur_stack), x + mudelaitem->x + 5/*half note head??? */, y, thechord->highesty); if (thechord->slur_begin_p) itp->slur_stack = push_slur_stack (itp->slur_stack, x + mudelaitem->x, thechord->highesty); if (thechord->crescendo_begin_p) { if (thechord->diminuendo_end_p) { if (top_hairpin_stack (itp->hairpin_stack) == -1) { itp->hairpin_stack = push_hairpin_stack (itp->hairpin_stack, -10); } if (cr) draw_hairpin (cr, &(itp->hairpin_stack), x + mudelaitem->x, y, 0); //pop stack itp->hairpin_stack = pop_hairpin_stack (itp->hairpin_stack); } else if (thechord->crescendo_end_p) { if (top_hairpin_stack (itp->hairpin_stack) == -1) { itp->hairpin_stack = push_hairpin_stack (itp->hairpin_stack, -10); } if (cr) draw_hairpin (cr, &(itp->hairpin_stack), x + mudelaitem->x, y, 1); //pop stack itp->hairpin_stack = pop_hairpin_stack (itp->hairpin_stack); } itp->hairpin_stack = push_hairpin_stack (itp->hairpin_stack, x + mudelaitem->x); } else if (thechord->diminuendo_begin_p) { if (thechord->crescendo_end_p) { if (top_hairpin_stack (itp->hairpin_stack) == -1) { itp->hairpin_stack = push_hairpin_stack (itp->hairpin_stack, -10); } if (cr) draw_hairpin (cr, &(itp->hairpin_stack), x + mudelaitem->x, y, 1); //pop stack itp->hairpin_stack = pop_hairpin_stack (itp->hairpin_stack); } else if (thechord->diminuendo_end_p) { if (top_hairpin_stack (itp->hairpin_stack) == -1) { itp->hairpin_stack = push_hairpin_stack (itp->hairpin_stack, -10); } if (cr) draw_hairpin (cr, &(itp->hairpin_stack), x + mudelaitem->x, y, 0); //pop stack itp->hairpin_stack = pop_hairpin_stack (itp->hairpin_stack); } itp->hairpin_stack = push_hairpin_stack (itp->hairpin_stack, x + mudelaitem->x); } else { if (thechord->crescendo_end_p) { if (top_hairpin_stack (itp->hairpin_stack) == -1) { itp->hairpin_stack = push_hairpin_stack (itp->hairpin_stack, -10); } if (cr) draw_hairpin (cr, &(itp->hairpin_stack), x + mudelaitem->x, y, 1); //pop stack itp->hairpin_stack = pop_hairpin_stack (itp->hairpin_stack); } else if (thechord->diminuendo_end_p) { if (top_hairpin_stack (itp->hairpin_stack) == -1) { itp->hairpin_stack = push_hairpin_stack (itp->hairpin_stack, -10); } if (cr) draw_hairpin (cr, &(itp->hairpin_stack), x + mudelaitem->x, y, 0); //pop stack itp->hairpin_stack = pop_hairpin_stack (itp->hairpin_stack); } } /* notice the following does not check is_figure but checks if figure is not VOID) */ //if (!thechord->is_figure && thechord->figure) if (cr) if (thechord->figure) draw_figure (cr, x + mudelaitem->x, y + (thechord->lowesty / 2), mudelaitem); if (cr) if (!thechord->is_fakechord && thechord->fakechord) draw_fakechord (cr, x + mudelaitem->x, y - 45, //y + (thechord->highesty / 4), mudelaitem); } break; case TUPOPEN: itp->tupletstart = x + mudelaitem->x; if (cr) draw_tupbracket (cr, x + mudelaitem->x, y, mudelaitem, 0); break; case TUPCLOSE: if (cr) draw_tupbracket (cr, x + mudelaitem->x, y - itp->tuplety, mudelaitem, itp->tupletstart); itp->tupletstart = itp->tuplety = 0; break; case LILYDIRECTIVE: { DenemoDirective *directive = mudelaitem->object; if (cr) draw_lily_dir (cr, x + mudelaitem->x, y, 0, 0, mudelaitem, itp->mark, (si->currentobject == curobj)); if ((directive->ty - 10) < itp->highy) itp->highy = directive->ty - 10 /* for height of text */ ; if ((directive->gy - 10) < itp->highy) itp->highy = directive->gy - 10 /* for height of text */ ; if(directive->tag && *directive->tag->str == '!') itp->allow_duration_error = TRUE; } break; case CLEF: itp->clef = ((clef *) mudelaitem->object); if (cr) { if (mudelaitem->isinvisible) { cairo_save (cr); cairo_set_source_rgb (cr, 231.0 / 255, 215.0 / 255, 39.0 / 255); //thecolor = &yellow;cairo_ rgb yellow } draw_clef (cr, x + mudelaitem->x, y, itp->clef); if (mudelaitem->isinvisible) { cairo_restore (cr); } } break; case KEYSIG: if (cr) draw_key (cr, x + mudelaitem->x, y, ((keysig *) mudelaitem->object)->number, itp->key, itp->clef->type, TRUE, (keysig *) mudelaitem->object); itp->key = ((keysig *) mudelaitem->object)->number; memcpy (itp->keyaccs, ((keysig *) mudelaitem->object)->accs, SEVENGINTS); memcpy (itp->curaccs, itp->keyaccs, SEVENGINTS); break; case TIMESIG: itp->time1 = ((timesig *) mudelaitem->object)->time1; itp->time2 = ((timesig *) mudelaitem->object)->time2; if (cr) draw_timesig (cr, x + mudelaitem->x, y, itp->time1, itp->time2, (timesig *) mudelaitem->object); /* The following assumes no multiple simultaneous time signatures */ itp->tickspermeasure = WHOLE_NUMTICKS * itp->time1 / itp->time2; itp->wholenotewidth = si->measurewidth * itp->time2 / itp->time1; break; case STEMDIRECTIVE: if (cr) draw_stem_directive (cr, x + mudelaitem->x, y, mudelaitem); itp->stem_directive = ((stemdirective *) mudelaitem->object)->type; break; default: /* Nothing */ break; } gint extra = MAX (mudelaitem->minpixelsalloted, space_after (mudelaitem->durinticks, itp->wholenotewidth)); if (si->currentobject == curobj) { /* Draw the cursor */ /* Determine if it needs to be red or not */ if (si->cursor_appending || mudelaitem->type != CHORD) si->cursoroffend = (mudelaitem->starttickofnextnote >= itp->tickspermeasure); else si->cursoroffend = (mudelaitem->starttickofnextnote > itp->tickspermeasure); if (si->cursor_appending) { draw_cursor (cr, si, x + mudelaitem->x + extra, y, ((itp->curmeasure->next != NULL) && (objnode *) ((DenemoMeasure*)itp->curmeasure->next->data)->objects) ? -1 : 0 /*itp->last_gap */ , 0, mudelaitem->clef->type); } else { draw_cursor (cr, si, x + mudelaitem->x, y, itp->last_gap, mudelaitem->type == CHORD ? 0 : mudelaitem->minpixelsalloted, mudelaitem->clef->type); } } /* End cursor drawing */ itp->last_gap = extra; /* Now quite possibly update the mark */ if (si->selection.firststaffmarked == itp->staffnum && si->selection.firstmeasuremarked == itp->measurenum && si->selection.firstobjmarked == itp->objnum) itp->markx1 = x + mudelaitem->x - EXTRAFORSELECTRECT; if (si->selection.laststaffmarked == itp->staffnum && si->selection.lastmeasuremarked == itp->measurenum && si->selection.lastobjmarked == itp->objnum) itp->markx2 = x + mudelaitem->x + mudelaitem->minpixelsalloted + EXTRAFORSELECTRECT; //In page view we have to allow the last time to be the last recorded time for any object on the page, but empty measures on the lowest visible staff will cause the rightmost time to be set too early. //FIXME, use smf.c to calculate start and end times for each measure and consult that. if((Denemo.project->view == DENEMO_PAGE_VIEW) || (itp->rightmosttime < mudelaitem->latest_time*get_playback_speed())) { if (!(itp->measurenum == si->rightmeasurenum + 1)) //ignore partially drawn measures for computing whether we need to call page_viewport itp->rightmosttime = mudelaitem->latest_time*get_playback_speed(); } return (mudelaitem->starttickofnextnote - itp->tickspermeasure); } /* draw_object */ /** * Draws a single measure within a staff. * @param curmeasure pointer to the measure to draw * @param x * @param y * @param gui * @param itp * return nothing */ static void draw_measure (cairo_t * cr, measurenode * curmeasure, gint x, gint y, DenemoProject * gui, struct infotopass *itp) { static GString *mstring; gint last_type = -1; //type of last object in measure gint extra_ticks = 0; //number of ticks by which measure is over-full DenemoMovement *si = gui->movement; objnode *curobj; gboolean has_cursor = FALSE; /* initialization */ if (!mstring) mstring = g_string_new (NULL); /* Set information about the state at the current measure, if necessary */ memcpy (itp->curaccs, itp->keyaccs, SEVENGINTS); itp->wholenotewidth = si->measurewidth * itp->time2 / itp->time1; /* paint the measure number at the preceding barline */ if (cr) { DenemoMeasure *meas = (DenemoMeasure*)curmeasure->data; if (meas->measure_numbering_offset) { cairo_set_source_rgba (cr, 0.2, 0.1, 0.8, 0.7); g_string_sprintf (mstring, "%d", meas->measure_numbering_offset); drawlargetext_cr (cr, mstring->str, x - SPACE_FOR_BARLINE - 5, y + 2 * STAFF_HEIGHT - 10); } if (itp->measurenum > 1) { //don't draw first measure number, as it collides and is obvious anyway and is never typeset thus cairo_set_source_rgba (cr, 0, 0, 0, 0.5); g_string_sprintf (mstring, "%d", meas->measure_number); drawnormaltext_cr (cr, mstring->str, x - SPACE_FOR_BARLINE - 5, y - 3); } } // draw the cursor and set the side effects up if this didn't happen when drawing the currentobject because there isn't one - a blank measure if (!si->currentobject && (si->currentstaffnum == itp->staffnum && si->currentmeasurenum == itp->measurenum)) { /* That is, the cursor's at the beginning of this blank measure */ si->cursoroffend = FALSE; has_cursor = TRUE; draw_cursor (cr, si, x, y, 0, gui->mode, itp->clef->type); } curobj = (objnode *) ((DenemoMeasure*)curmeasure->data)->objects; /* These default values for the markx'es may be necessary down * the road */ if (si->selection.firststaffmarked == itp->staffnum && si->selection.firstmeasuremarked == itp->measurenum) { if (!curobj) itp->markx1 = x - EXTRAFORSELECTRECT; else itp->markx1 = x + GPOINTER_TO_INT (itp->mwidthiterator->data); } if (si->selection.laststaffmarked == itp->staffnum && si->selection.lastmeasuremarked == itp->measurenum) { if (!curobj || (si->selection.lastobjmarked >= (gint) (g_list_length ((objnode *) curobj)))) itp->markx2 = x + GPOINTER_TO_INT (itp->mwidthiterator->data) + SPACE_FOR_BARLINE + EXTRAFORSELECTRECT; else itp->markx2 = x; } gboolean not_marked = (!si->markstaffnum) || (si->selection.firststaffmarked > itp->staffnum) || (si->selection.laststaffmarked < itp->staffnum) || (si->selection.firstmeasuremarked > itp->measurenum) || (si->selection.lastmeasuremarked < itp->measurenum); gboolean definitely_marked = (!not_marked) && (si->selection.firstmeasuremarked < itp->measurenum) && (si->selection.lastmeasuremarked > itp->measurenum); gboolean in_firstmeas = (si->selection.firstmeasuremarked == itp->measurenum); gboolean in_lastmeas = (si->selection.lastmeasuremarked == itp->measurenum); /* Draw each mudelaitem */ for (itp->objnum = 0; curobj; curobj = curobj->next, itp->objnum++) { itp->mark = (definitely_marked) || ((!not_marked) && ((in_firstmeas && !in_lastmeas && (si->selection.firstobjmarked <= itp->objnum)) || (in_lastmeas && !in_firstmeas && (si->selection.lastobjmarked >= itp->objnum)) || (in_lastmeas && in_firstmeas && (si->selection.firstobjmarked <= itp->objnum) && (si->selection.lastobjmarked >= itp->objnum)))); if (cr) { // if(itp->measurenum > si->rightmeasurenum+1) // g_critical("Please advise the circumstance in which this happened"); if (itp->measurenum == si->rightmeasurenum + 1) cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); //This draws light gray anything that will be repeated at the start of the next page. else cairo_set_source_rgb (cr, 0, 0, 0); //black; } // if cr extra_ticks = draw_object (cr, curobj, x, y, gui, itp); { DenemoObject *obj = (DenemoObject *) curobj->data; last_type = obj->type; } //itp->rightmosttime = curobj->latest_time;//we just want this for the rightmost object } // for each object if (cr) { cairo_save (cr); //marking the barline if within selection if (si->markstaffnum && /* (curmeasure->data==NULL) && */ (si->selection.firststaffmarked <= itp->staffnum) && (si->selection.laststaffmarked >= itp->staffnum) && (si->selection.firstmeasuremarked <= itp->measurenum) && (si->selection.lastmeasuremarked > itp->measurenum)) { cairo_set_source_rgba (cr, 0.8, 0.8, 0.4, 0.7); cairo_rectangle (cr, x + GPOINTER_TO_INT (itp->mwidthiterator->data) - 10, y, 20, STAFF_HEIGHT + 1); cairo_fill (cr); } /* Indicate fill status */ #define OPACITY (curmeasure == si->currentmeasure?0.3:0.8) if(itp->allow_duration_error) { extra_ticks = 0; itp->allow_duration_error = FALSE; } if (curmeasure->data) { //overfull or underfull measure indicator if (extra_ticks == -itp->tickspermeasure) extra_ticks = 0;//allow empty measures if(itp->time1 == 256) //Cadenza Time extra_ticks = 0; if (extra_ticks > 0) cairo_set_source_rgba (cr, 1.0, 0.6, 0.6, OPACITY); else if ((extra_ticks < 0)/* && curmeasure->next*/) cairo_set_source_rgba (cr, 0.6, 0.6, 1, OPACITY); if (((extra_ticks > 0) || (extra_ticks < 0)) && ((curmeasure->next && curmeasure->next->data) || ((curmeasure->next!= NULL) && (!has_cursor)))) { cairo_rectangle (cr, x, y, GPOINTER_TO_INT (itp->mwidthiterator->data), STAFF_HEIGHT + 1); cairo_fill (cr); extra_ticks > 0 ? cairo_set_source_rgb (cr, 1, 0, 0) : cairo_set_source_rgb (cr, 0, 0, 1); } else { cairo_set_source_rgb (cr, 0, 0, 0); } } #undef OPACITY if (extra_ticks == 0) { cairo_set_source_rgb (cr, 0, 0, 0); } //draw the barline cairo_rectangle (cr, x + GPOINTER_TO_INT (itp->mwidthiterator->data), y - 0.5, 1.5, STAFF_HEIGHT + 1); cairo_fill (cr); if ((!curmeasure->next)) { /* we've reached the end of the staff and should * draw the heavy part of double-barline unless there is a directive here in which case it takes responsibility for the type of barline */ x += 3; if (last_type != LILYDIRECTIVE) { cairo_rectangle (cr, x + GPOINTER_TO_INT (itp->mwidthiterator->data), y - 0.5, 4, STAFF_HEIGHT + 1); cairo_fill (cr); } itp->end = TRUE; if(itp->startposition>-1 && itp->endposition<0) itp->endposition = x + GPOINTER_TO_INT (itp->mwidthiterator->data) + 5;//end play marker after last note if not elsewhere } else { itp->end = FALSE; } cairo_restore (cr); } //if cr } /** * Draws a single staff * TODO sort out graphics context for active polyphonic voice should * do it here * @param curstaffstruct pointer to the staff to draw * @param y y position of the staff * @param gui pointer to the DenemoProject structure * @param itp pointer to the infotopass structure * return TRUE if the staff has had to made taller */ static gboolean draw_staff (cairo_t * cr, staffnode * curstaff, gint y, DenemoProject * gui, struct infotopass *itp) { DenemoStaff *thestaff = (DenemoStaff *) curstaff->data; gboolean repeat = FALSE; DenemoMovement *si = gui->movement; gint x = (gui->leftmargin+35), i; itp->red = (((thestaff->color)>>24)&0xFF)/255.0; itp->green = (((thestaff->color)>>16)&0xFF)/255.0; itp->blue = (((thestaff->color)>>8)&0xFF)/255.0; itp->alpha = (0xFF ^ ((thestaff->color)&0xFF))/255.0; itp->range = thestaff->range; itp->range_lo = thestaff->range_lo; itp->range_hi = thestaff->range_hi; // if(si->marked_onset_position) //g_debug("repeat"),repeat = TRUE;//we set up the marked onset with this, then need to repeat to draw it //g_debug("drawing staff %d at %d\n", itp->staffnum, y); gint nummeasures = g_list_length (thestaff->themeasures); //g_debug("Of %d current %d\n", nummeasures, itp->measurenum); if (itp->measurenum > nummeasures) cr = NULL; //no more drawing on this staff if (cr) { cairo_save (cr); //Draw vertical lines to bind the staffs of the system together if (curstaff->prev) { DenemoStaff *prev = (DenemoStaff *) (curstaff->prev->data); cairo_set_source_rgb (cr, 0, 0, 0); cairo_rectangle (cr, gui->leftmargin, y - STAFF_HEIGHT - prev->space_below - thestaff->space_above, 2, 2 * STAFF_HEIGHT + prev->space_below + thestaff->space_above); cairo_fill (cr); } if (curstaff->next) { DenemoStaff *next = (DenemoStaff *) (curstaff->next->data); //cairo_save(cr); cairo_set_source_rgb (cr, 0, 0, 0); cairo_rectangle (cr, gui->leftmargin, y, 2, 2 * STAFF_HEIGHT + next->space_above + thestaff->space_below); cairo_fill (cr); } if ((DenemoStaff *) si->currentstaff->data == thestaff) cairo_set_source_rgb (cr, 0, 0, 0); else cairo_set_source_rgb (cr, 0.3, 0.3, 0.3); } //if cr if (!itp->line_end) { //not a continuation itp->clef = thestaff->leftmost_clefcontext; if (cr && !(thestaff->voicecontrol & DENEMO_SECONDARY)) draw_clef (cr, gui->leftmargin, y, itp->clef); else if (cr) { cairo_save (cr); cairo_set_source_rgb (cr, 231.0 / 255, 215.0 / 255, 39.0 / 255); //thecolor = &yellow; draw_clef (cr, gui->leftmargin, y, itp->clef); cairo_restore (cr); } itp->key = thestaff->leftmost_keysig->number; if (cr && !(thestaff->voicecontrol & DENEMO_SECONDARY)) draw_key (cr, x, y, itp->key, 0, itp->clef->type, TRUE, thestaff->leftmost_keysig); x += si->maxkeywidth; itp->time1 = thestaff->leftmost_timesig->time1; itp->time2 = thestaff->leftmost_timesig->time2; if (cr && !(thestaff->voicecontrol & DENEMO_SECONDARY)) { if (si->leftmeasurenum == 1) draw_timesig (cr, x + 5, y, itp->time1, itp->time2, thestaff->leftmost_timesig); else { cairo_save (cr); if (Denemo.hovering_over_left_arrow) { cairo_rectangle (cr, x, y, 30, 40); cairo_stroke (cr); cairo_set_source_rgb (cr, 0.7, 1.0, 0.7); cairo_rectangle (cr, x, y, 30, 40); cairo_fill (cr); } cairo_set_source_rgb (cr, 0.1, 0.2, 1); drawtext_cr (cr, "<", x, y + 30, 42.0); cairo_restore (cr); } } x += SPACE_FOR_TIME; } else { // a continuation line if (cr && !(thestaff->voicecontrol & DENEMO_SECONDARY)) draw_clef (cr, gui->leftmargin, y, itp->clef); if (cr && !(thestaff->voicecontrol & DENEMO_SECONDARY)) draw_key (cr, x, y, itp->key, 0, itp->clef->type, TRUE, thestaff->leftmost_keysig); x += si->maxkeywidth; x += SPACE_FOR_TIME; // to allow the same margin ?? } *itp->left = itp->measurenum > gui->movement->rightmeasurenum ? gui->movement->rightmeasurenum : itp->measurenum; memcpy (itp->keyaccs, thestaff->leftmost_keysig->accs, SEVENGINTS); itp->stem_directive = thestaff->leftmost_stem_directive; itp->tickspermeasure = WHOLE_NUMTICKS * itp->time1 / itp->time2; if (cr) { /* Draw staff name on first system */ if (!itp->line_end) { gint staffname_offset = (thestaff->voicecontrol & DENEMO_PRIMARY) ? 26 : 12; gboolean color = (Denemo.hovering_over_partname && (si->currentstaffnum == itp->staffnum)); if (si->leftmeasurenum == 1)//make a button of it if measure 1 is leftmost { cairo_save (cr); cairo_set_source_rgb (cr, 0.8, color?1:0.8, 0.8); cairo_rectangle (cr, gui->leftmargin + 5, y - staffname_offset - 1, 90, 15); cairo_fill (cr); cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); if (color) { cairo_rectangle (cr, gui->leftmargin + 5, y - staffname_offset - 2, 90, 16); cairo_stroke (cr); } drawnormaltext_cr (cr, thestaff->denemo_name->str, gui->leftmargin /*KEY_MARGIN */ + 5 , y - staffname_offset + 10); if (thestaff->subpart) drawnormaltext_cr (cr, thestaff->subpart->str, gui->leftmargin +20/*KEY_MARGIN */ , y - staffname_offset + 24); cairo_restore(cr); } else { drawnormaltext_cr (cr, thestaff->denemo_name->str, gui->leftmargin - 10 /*KEY_MARGIN */ + 5 , y - staffname_offset + 10); if (thestaff->subpart) drawnormaltext_cr (cr, thestaff->subpart->str, gui->leftmargin + 20 /*KEY_MARGIN */ , y - staffname_offset + 24); } if(thestaff->hasfakechords) drawnormaltext_cr (cr, _("Chord Symbols"), gui->leftmargin - 10 /*KEY_MARGIN */ , y - staffname_offset + 20 + 2 * STAFF_HEIGHT); if(thestaff->hasfigures) drawnormaltext_cr (cr, _("Figured Bass"), gui->leftmargin - 10 /*KEY_MARGIN */ , y - staffname_offset + 20 + 2 * STAFF_HEIGHT); { cairo_save (cr); cairo_set_source_rgba (cr, 0.1, 0.6, 0.1, 0.5); if(thestaff->hidden) drawnormaltext_cr (cr, _("Hidden when not the current staff."), gui->leftmargin +55, y - staffname_offset - 5 + 2 * STAFF_HEIGHT); cairo_restore(cr); } } else { cairo_save (cr); gint staffname_offset = (thestaff->voicecontrol & DENEMO_PRIMARY) ? 26 : 12; cairo_translate (cr, 2, (y - staffname_offset + 30)); cairo_rotate (cr, -M_PI / 5.0); drawnormaltext_cr (cr, thestaff->denemo_name->str, 0, 0); if (thestaff->subpart) drawnormaltext_cr (cr, thestaff->subpart->str, 30, 20); cairo_restore (cr); } } //if cr x += transition_offset (); if ((gui->movement->smf) && (itp->startobj == NULL) && (itp->startposition <= 0) && (si->leftmeasurenum == 1)) itp->startposition = x; /* Loop that will draw each measure. Basically a for loop, but was uglier * when written that way. */ itp->curmeasure = g_list_nth (thestaff->themeasures, itp->measurenum - 1); //g_debug("measurenum %d\nx=%d\n", itp->measurenum, x); //FIX in measure.c for case where si->measurewidths is too short itp->mwidthiterator = g_list_nth (si->measurewidths, itp->measurenum - 1); { //compute itp->leftmosttime here - the time at the start of this system objnode *curobj = itp->curmeasure ? (objnode *) ((DenemoMeasure*)itp->curmeasure->data)->objects : NULL; if (curobj) { DenemoObject *mudelaitem = (DenemoObject *) curobj->data; if (mudelaitem) itp->leftmosttime = mudelaitem->earliest_time; else itp->leftmosttime = 1000000.0; } //g_debug("Drawing staff %d leftmost time %f, measurenum %d\n",itp->staffnum, itp->leftmosttime, itp->measurenum); } if (!*itp->scale) *itp->scale = 100; if (cr) { cairo_scale (cr, 100.0 / (*itp->scale), 1.0); //cairo_scale(cr,(*itp->scale)/100.0,1.0); } gint scale_before = *itp->scale; itp->line_end = FALSE; cairo_t *saved_cr = NULL; if (itp->source_displayed) { //We have displayed source material below the last staff, so do not draw anymore staff music. We cannot simply skip the drawing routines however, because they determine the rightmost bar for mouse positioning, so we save and restore it. saved_cr = cr; cr = NULL; } while ((!itp->line_end) && itp->measurenum <= nummeasures) { if (x + GPOINTER_TO_INT (itp->mwidthiterator->data) + SPACE_FOR_BARLINE > (int) (get_widget_width (Denemo.scorearea) / gui->movement->zoom - (RIGHT_MARGIN + (gui->leftmargin+35) + si->maxkeywidth + SPACE_FOR_TIME))) itp->line_end = TRUE; itp->last_gap = 0; if (itp->measurenum == si->currentmeasurenum) x += measure_transition_offset (si->currentstaffnum == itp->staffnum); draw_measure (cr, itp->curmeasure, x, y, gui, itp); x += GPOINTER_TO_INT (itp->mwidthiterator->data) + SPACE_FOR_BARLINE; if ( #if 0 /* do not scale the non page views as it perturbs the display animation and anyway does not add anything */ (Denemo.project->view != DENEMO_PAGE_VIEW && itp->line_end && itp->measurenum > si->rightmeasurenum) || #endif (Denemo.project->view == DENEMO_PAGE_VIEW && itp->line_end && itp->curmeasure->next)) *itp->scale = (int) (100 * x / (get_widget_width (Denemo.scorearea) / gui->movement->zoom)); else *itp->scale = 100; itp->curmeasure = itp->curmeasure->next; itp->mwidthiterator = itp->mwidthiterator->next; itp->measurenum++; //g_debug("line_end is %d, while itp->measurenum=%d and si->rightmeasurenum=%d\n", itp->line_end, itp->measurenum, si->rightmeasurenum); if (!itp->line_end) { if (-itp->highy > itp->in_highy && -itp->highy < MAXEXTRASPACE) { //g_debug("With %d to change %d\n", -itp->highy, itp->in_highy); thestaff->space_above = -itp->highy; repeat = TRUE; } if (itp->lowy > itp->in_lowy && itp->lowy < MAXEXTRASPACE) { thestaff->space_below = itp->lowy; repeat = TRUE; } } } // end of loop drawing each measure if (scale_before != *itp->scale) repeat = TRUE; /* the first system is already drawn, so it is too late to discover that we needed to scale it */ *itp->right = itp->measurenum - 1; /* draw lines connecting the staves in this system at the left and right hand ends */ if (cr) if (curstaff->prev) { DenemoStaff *prev = (DenemoStaff *) (curstaff->prev->data); cairo_set_source_rgb (cr, 0, 0, 0); cairo_rectangle (cr, x - SPACE_FOR_BARLINE, y - STAFF_HEIGHT - prev->space_below - thestaff->space_above, 2, 2 * STAFF_HEIGHT + prev->space_below + thestaff->space_above); cairo_fill (cr); } if (cr) if (curstaff->next) { DenemoStaff *next = (DenemoStaff *) (curstaff->next->data); //cairo_save(cr); cairo_set_source_rgb (cr, 0, 0, 0); cairo_rectangle (cr, x - SPACE_FOR_BARLINE, y, 2, 2 * STAFF_HEIGHT + next->space_above + thestaff->space_below); cairo_fill (cr); } /* end of draw lines connecting the staves in this system at the left and right hand ends */ if (cr) if (itp->line_end) if (itp->measurenum > si->rightmeasurenum) if (!itp->end) { cairo_save (cr); gint xx = get_widget_width (Denemo.scorearea) / gui->movement->zoom - 20; if (Denemo.hovering_over_right_arrow) { cairo_rectangle (cr, xx, y, 30, 40); cairo_stroke (cr); cairo_set_source_rgb (cr, 0.7, 1.0, 0.7); cairo_rectangle (cr, xx, y, 30, 40); cairo_fill (cr); } cairo_set_source_rgb (cr, 0.1, 0.2, 1); drawtext_cr (cr, ">", xx, y + 30, 42.0); cairo_restore (cr); } if (cr) cairo_restore (cr); // if(itp->highy > title_highy) // itp->highy = title_highy; /* now draw the staff lines, reset itp->slur_stack, and we're done */ if (cr) { cairo_set_line_width (cr, 1.0); for (i = 1; i <= thestaff->no_of_lines; i++) { gint yy = y + 2 * LINE_SPACE + ((i % 2) ? (1) : (-1)) * (i / 2) * LINE_SPACE; cairo_move_to (cr, gui->leftmargin, yy); cairo_line_to (cr, (x * 100 / (*itp->scale)) - HALF_BARLINE_SPACE, yy); } cairo_stroke (cr); } /* Initialize the slur_stack for this staff. For the time being, slurs that begin and/or end after the portion of the music that is shown are not drawn. */ if (itp->slur_stack) { g_slist_free (itp->slur_stack); itp->slur_stack = NULL; } if (saved_cr) cr = saved_cr; return repeat; } static void print_system_separator (cairo_t * cr, gdouble position) { //g_debug("At %f for %d\n", position, Denemo.scorearea->allocation.height); #define SYSTEM_SEP (6) cairo_save (cr); cairo_set_source_rgb (cr, 0.5, 0.0, 0.0); cairo_rectangle (cr, 0, position - SYSTEM_SEP / 2, get_widget_width (Denemo.scorearea) / Denemo.project->movement->zoom, SYSTEM_SEP); cairo_set_source_rgb (cr, 0.7, 0.0, 0.0); cairo_fill (cr); #undef SYSTEM_SEP cairo_restore (cr); } typedef enum colors { BLACK, RED, GREEN } colors; static void draw_playback_marker (cairo_t * cr, gint color, gint pos, gint yy, gint line_height) { if (!Denemo.prefs.playback_controls) return; //g_debug("drawing marker %x at %d %d %d\n", color, pos, yy, line_height); cairo_save (cr); cairo_set_line_width (cr, 4.0); switch (color) { case BLACK: cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.5); break; case GREEN: cairo_set_source_rgba (cr, 0.0, 1.0, 0.0, 0.5); break; case RED: cairo_set_source_rgba (cr, 1.0, 0.0, 0.0, 0.5); break; } cairo_move_to (cr, pos, yy - STAFF_HEIGHT); cairo_line_to (cr, pos, yy - STAFF_HEIGHT + line_height); cairo_stroke (cr); switch (color) { case GREEN: drawlargetext_cr (cr, _("Playback Start"), pos - 100, yy); break; case RED: drawlargetext_cr (cr, _("Playback End"), pos - 100, yy); break; } cairo_restore (cr); } static void draw_playback_markers (cairo_t * cr, struct infotopass *itp, gint yy, gint line_height) { // if(itp->playposition>-1) // draw_playback_marker(cr, BLACK, itp->playposition, yy, line_height); // itp->playposition = -1; if (itp->startposition > 0) draw_playback_marker (cr, GREEN, itp->startposition, yy, line_height); itp->startposition = -1; if (itp->endposition > 0) draw_playback_marker (cr, RED, itp->endposition, yy, line_height); itp->endposition = -1; } void draw_score_area(){ if(!Denemo.non_interactive) gtk_widget_queue_draw (Denemo.scorearea); } #define MAX_FLIP_STAGES (Denemo.prefs.animation_steps>0?Denemo.prefs.animation_steps:1) static gboolean schedule_draw (gint * flip_count) { if (*flip_count == -1) return FALSE; *flip_count += 1; //g_debug("flip count %d\n", *flip_count); if (*flip_count > MAX_FLIP_STAGES) { return FALSE; } draw_score_area(); return TRUE; } /** * This actually draws the score, staff-by-staff * @param cr cairo context to draw with. * @param gui pointer to the DenemoProject structure * returns whether the height of the drawing area was sufficient to draw everything */ gboolean draw_score (cairo_t * cr) { //g_debug("draw_score %p\n", cr); if (cr == NULL) return TRUE;//no longer need to side effect the data while doing a dummy draw, however cr is set NULL during draw if no more drawing is needed, so we can't remove all the if (cr) conditionals... staffnode *curstaff; gint y = 0; struct infotopass itp; gboolean repeat = FALSE; gdouble leftmost = 10000000.0; DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; gint line_height = get_widget_height (Denemo.scorearea) * gui->movement->system_height / gui->movement->zoom; static gint flip_count; //passed to a timer to indicate which stage of animation of page turn should be used when re-drawing, -1 means not animating 0+ are the stages last_tied = FALSE; /* Initialize some fields in itp */ //g_debug("Printing for %d\n", flip_count); itp.slur_stack = NULL; itp.hairpin_stack = NULL; itp.source_displayed = FALSE; itp.highy = 0; //in case there are no objects... itp.lowy = 0; itp.last_gap = 0; itp.last_midi = NULL; itp.playposition = -1; itp.startposition = -1; itp.endposition = -1; itp.startobj = itp.endobj = NULL; itp.tupletstart = itp.tuplety = 0; itp.recordednote = si->recording?si->recording->notes:NULL; itp.currentframe = (get_playback_time()/get_playback_speed())*(si->recording?si->recording->samplerate:SAMPLERATE); itp.allow_duration_error = FALSE; if (Denemo.hidden_staff_heights) g_list_free (Denemo.hidden_staff_heights); Denemo.hidden_staff_heights = NULL; if (gui->movement->smf) { itp.startobj = Startobj; //g_debug("start %p\n", itp.startobj); itp.endobj = Endobj; //g_debug("Start time %p %f end time %p %f\n", itp.startobj, si->start_time, itp.endobj, si->end_time); } if (cr) cairo_translate (cr, movement_transition_offset (), 0); /* The colour for staff lines and such is black. */ if (cr) cairo_set_source_rgb (cr, 0, 0, 0); if (cr) cairo_scale (cr, gui->movement->zoom, gui->movement->zoom); if (cr) cairo_translate (cr, 0.5, 0.5); /*draw a flag in the corner for accessing whole-movement settings */ if (cr) { if (Denemo.hovering_over_movement) { cairo_set_source_rgb (cr, 0.7, 1.0, 0.7); cairo_rectangle (cr, 0, 0, 25, 25); cairo_fill (cr); } cairo_set_source_rgb (cr, 0, 0, 0); cairo_rectangle (cr, 0, 0, 25, 25); cairo_stroke (cr); drawlargetext_cr (cr, "âš", 2, 20); } if (cr && (si->leftmeasurenum == 1)) { GList *h, *g; gint count; y = si->staffspace / 4; g_list_free_full (gui->braces, g_free); gui->braces = NULL; for (curstaff = si->thescore, count = 1;curstaff;curstaff=curstaff->next, count++) { DenemoStaff* staff = (DenemoStaff*)curstaff->data; gchar *context; if (staff->hidden && (si->currentstaffnum != count)) continue; for (g = staff->staff_directives; g; g = g->next) { DenemoDirective *directive = g->data; if (directive->override & DENEMO_OVERRIDE_AFFIX) { context = directive->tag->str; if (g_str_has_suffix (context, "Start")) { DenemoBrace *brace = (DenemoBrace *) g_malloc0 (sizeof(DenemoBrace)); brace->starty = y + staff->space_above; //g_print ("brace start %d |", brace->starty); brace->curly = g_strrstr (context, "Piano") || g_strrstr (context, "Grand"); brace->startstaff = count; gui->braces = g_list_prepend (gui->braces, brace); } else if (g_str_has_suffix (context, "End")) { gint number_of_ends = 1; if(directive->data) number_of_ends = atoi (directive->data->str); if (number_of_ends<0 || (number_of_ends>10)) number_of_ends = 1;//sanity check on data in directive while (number_of_ends--) for (h=gui->braces;h;h=h->next) { DenemoBrace *brace = (DenemoBrace *) h->data; if (brace->endstaff) continue; brace->endstaff = count; brace->endy = y + staff->space_above + si->staffspace/4;//g_print ("Brace end %d||", brace->endy); break; } } } } y += staff->space_above +staff->space_below + si->staffspace; } // terminate all un-ended braces for(g=gui->braces;g;g=g->next) { DenemoBrace *brace = (DenemoBrace *) g->data; if (brace->endstaff == 0) { brace->endstaff = count-1;// g_print ("Unended staff terminated at staff %d with %d; ", count-1, y); brace->endy = y; //bottom staff value; } } gint off_screen = 0; gui->leftmargin = BASIC_LEFT_MARGIN + BRACEWIDTH*g_list_length (gui->braces); if(gui->braces) { for (count=1, curstaff = si->thescore;curstaff && (counttop_staff);curstaff=curstaff->next, count++) { DenemoStaff* staff = (DenemoStaff*)curstaff->data; if(count==1) off_screen = si->staffspace / 4; off_screen += staff->space_above + staff->space_below + si->staffspace; } } //draw all braces for(count=1, g=gui->braces;g;g=g->next, count++) { DenemoBrace *brace = (DenemoBrace *) g->data; cairo_save (cr); draw_staff_brace (cr, brace->curly, (count*BRACEWIDTH), (brace->starty - off_screen), (brace->endy-brace->starty) + (off_screen?40:15)); cairo_restore (cr); } } else gui->leftmargin = 20; y = 0; /* Draw each staff */ for (itp.staffnum = si->top_staff, curstaff = g_list_nth (si->thescore, si->top_staff - 1), (y += si->staffspace / 4); curstaff && itp.staffnum <= si->bottom_staff; curstaff = curstaff->next, itp.staffnum++) { DenemoStaff *staff = (DenemoStaff *) curstaff->data; g_slist_free (itp.hairpin_stack);//clear any cresc or dim started but not finished; these can just be off-screen, they need not be in error. itp.hairpin_stack = NULL; if(cr) if (staff->hidden && (si->currentstaffnum != itp.staffnum)) { static GString *hidden_text; if (hidden_text == NULL) hidden_text = g_string_new (_("Hidden ")); static gint height; gint top_height = 10; //height to put line indicating hidden staff when it is the top staff if (height == 0) height = (itp.staffnum == si->top_staff)? top_height :y - 35; Denemo.hidden_staff_heights = g_list_append (Denemo.hidden_staff_heights, GINT_TO_POINTER (height)); g_string_append_printf (hidden_text, "%s ", staff->denemo_name->str); { DenemoStaff *nextstaff = curstaff->next ? ((DenemoStaff *) curstaff->next->data) : NULL; if ((nextstaff==NULL) || ((!nextstaff->hidden) || (si->currentstaffnum == (1 + itp.staffnum)))) { cairo_save (cr); cairo_set_source_rgba (cr, 0.0, 0.5, 0.5, 0.6); if (height == top_height) //the top and possibly other staffs are hidden { cairo_rectangle (cr, 300, 5, get_widget_width (Denemo.scorearea) / Denemo.project->movement->zoom - 120, 3); cairo_fill (cr); cairo_set_source_rgba (cr, 1.0, 0.5, 0.5, 1); drawnormaltext_cr (cr, hidden_text->str, 120, height); } else { cairo_rectangle (cr, 20, height, get_widget_width (Denemo.scorearea) / Denemo.project->movement->zoom - 120, 3); cairo_fill (cr); cairo_set_source_rgba (cr, 1.0, 0.5, 0.5, 1); drawlargetext_cr (cr,hidden_text->str, 80, y - 35); // drawlargetext_cr (cr, _("Hidden"), 80, y - 10); } g_string_assign (hidden_text, _("Hidden ")); height = 0; cairo_restore (cr); } } continue; } itp.verse = verse_get_current_view (staff); if (si->currentstaffnum == itp.staffnum) y += staff_transition_offset (); if (curstaff && staff->voicecontrol & DENEMO_PRIMARY) y += staff->space_above; //g_print("Incrementing vertically %d\n", y); itp.space_above = staff->space_above; gint top_y = (si->staffspace / 4) + itp.space_above; itp.top_y = top_y; //itp.y = y; gint highy = staff->space_above; gint lowy = staff->space_below; itp.in_highy = highy, itp.in_lowy = lowy; itp.highy = 0; //do not pass on extra_space from one staff to the next if (flip_count <= 0) if (cr) { cairo_save (cr); cairo_set_source_rgb (cr, 0.7, 0.7, 0.7); cairo_rectangle (cr, 0, y, 20/*BASIC LEFT_MARGIN*/, STAFF_HEIGHT); cairo_fill (cr); cairo_set_source_rgb (cr, 0.7, 1.0, 0.7); if (Denemo.hovering_over_margin_up && (si->currentstaffnum == itp.staffnum)) cairo_rectangle (cr, 0, y, 20/*BASIC LEFT_MARGIN*/, STAFF_HEIGHT/2 /*staff edit */ ), cairo_fill (cr); else if (Denemo.hovering_over_margin_down && (si->currentstaffnum == itp.staffnum)) cairo_rectangle (cr, 0, y + STAFF_HEIGHT/2, 20/*BASIC LEFT_MARGIN*/, STAFF_HEIGHT/2 /*staff edit */ ), cairo_fill (cr);; cairo_set_source_rgb (cr, 0, 0, 0); if (Denemo.hovering_over_margin_up && (si->currentstaffnum == itp.staffnum)) cairo_rectangle (cr, 0, y, 20/*BASIC LEFT_MARGIN*/, STAFF_HEIGHT/2 /*staff edit */ ),cairo_stroke (cr); else if (Denemo.hovering_over_margin_down && (si->currentstaffnum == itp.staffnum)) cairo_rectangle (cr, 0, y + STAFF_HEIGHT/2, 20/*BASIC LEFT_MARGIN*/, STAFF_HEIGHT/2 /*staff edit */ ), cairo_stroke (cr); gint staffnumber = 1 + g_list_position (si->thescore,curstaff); gchar *number = g_strdup_printf ("%d", staffnumber); if(staffnumber>9) drawnormaltext_cr (cr, number, 0, y + STAFF_HEIGHT - 2); else drawlargetext_cr (cr, number, 0, y + STAFF_HEIGHT - 2); g_free (number); drawnormaltext_cr (cr, "âš", 5, y + STAFF_HEIGHT/2 - 6); cairo_restore (cr); if (si->leftmeasurenum == 1 && !(staff->voicecontrol & DENEMO_SECONDARY)) { /* draw background of clef, keysig, timesig */ gint key = gui->movement->maxkeywidth; gint cmajor = key ? 0 : 5; //allow some area for keysig in C-major cairo_save (cr); cairo_set_source_rgb (cr, 0.7, Denemo.hovering_over_clef?1.0:0.7, 0.7); if (si->currentstaffnum == itp.staffnum) cairo_rectangle (cr, gui->leftmargin, y, (gui->leftmargin+35) - gui->leftmargin - cmajor, STAFF_HEIGHT); /*clef edit */ cairo_fill (cr); cairo_set_source_rgb (cr, 0.7, Denemo.hovering_over_timesig?1.0:0.7, 0.7); cairo_rectangle (cr, (gui->leftmargin+35) + key + cmajor, y, SPACE_FOR_TIME - cmajor, STAFF_HEIGHT); /*timesig edit */ cairo_fill (cr); cairo_set_source_rgba (cr, Denemo.hovering_over_keysharpen?0.0:0.2, Denemo.hovering_over_keysharpen?0.0:0.2, Denemo.hovering_over_keysharpen?1.0:0.9, 0.5); cairo_rectangle (cr, (gui->leftmargin+35) - cmajor, y, key + 2 * cmajor, STAFF_HEIGHT / 2); /*keysig sharpen edit */ cairo_fill (cr); if (Denemo.hovering_over_keysharpen) { cairo_set_source_rgb (cr, 0, 0, 0); cairo_set_line_width (cr, 3); cairo_rectangle (cr, (gui->leftmargin+35) - cmajor -2 , y-2, key + 2 * cmajor+4, STAFF_HEIGHT / 2 +4); cairo_stroke (cr); } //cairo_set_source_rgb (cr, 1, 0.5, 0.5); cairo_set_source_rgba (cr, Denemo.hovering_over_keyflatten?1.0:0.8, Denemo.hovering_over_keyflatten?0.0:0.4, Denemo.hovering_over_keyflatten?0.0:0.4, 0.5); cairo_rectangle (cr, (gui->leftmargin+35) - cmajor, y + STAFF_HEIGHT / 2, key + 2 * cmajor, STAFF_HEIGHT / 2); /*keysig flatten edit */ cairo_fill (cr); if (Denemo.hovering_over_keyflatten) { cairo_set_source_rgb (cr, 0, 0, 0); cairo_set_line_width (cr, 3); cairo_rectangle (cr, (gui->leftmargin+35) - cmajor -2, y + STAFF_HEIGHT / 2 -2, key + 2 * cmajor +4, STAFF_HEIGHT / 2 +4); cairo_stroke (cr); } cairo_restore (cr); } } //if cr if (si->currentstaffnum == itp.staffnum) { gint count = count_syllables (staff, si->leftmeasurenum); //g_print ("Count syllables from %d yields %d last_tied \n", si->leftmeasurenum, count, last_tied); if (count < 0) { count = -count; itp.slur_stack = push_slur_stack (itp.slur_stack, 0, 0); } reset_lyrics (staff, count); } itp.measurenum = si->leftmeasurenum; itp.line_end = FALSE; itp.left = &gui->lefts[0]; itp.right = &gui->rights[0]; itp.scale = &gui->scales[0]; if (draw_staff (flip_count > 0 ? NULL : cr, curstaff, y, gui, &itp)) repeat = TRUE; if (cr) draw_playback_markers (cr, &itp, y, line_height); gint system_num; system_num = 1; //g_debug("Drawn staffnum %d, at %d %s.\n", itp.staffnum, y, itp.line_end?" another line":"End"); if (cr) if (itp.staffnum == si->top_staff) print_system_separator (cr, line_height * system_num); system_num++; // This block prints out continuations of the staff just printed { int yy; yy = y + line_height; itp.left++; itp.right++; itp.scale++; if (Denemo.project->movement->playingnow && itp.measurenum >= si->rightmeasurenum) itp.line_end = FALSE; //don't print whole lines of grayed out music during playback while (((itp.left - gui->lefts) < DENEMO_MAX_SYSTEMS - 1) && itp.line_end && (yy < (get_widget_height (Denemo.scorearea) / gui->movement->zoom))) { if (cr) if (itp.staffnum == si->top_staff) print_system_separator (cr, line_height * system_num); system_num++; if (draw_staff (cr, curstaff, yy, gui, &itp)) repeat = TRUE; if (itp.staffnum == si->top_staff) //single criterion for all staffs on whether to draw next page leftmost = MIN (leftmost, itp.leftmosttime); if (cr) draw_playback_markers (cr, &itp, yy, line_height); yy += line_height; itp.left++; itp.right++; itp.scale++; } //end while printing out all the systems for this staff //g_debug("staff num %d measure %d playhead %f left time %f\nheight %d system_num %d\n", itp.staffnum,itp.measurenum, si->playhead, itp.leftmosttime, yy, system_num); si->rightmost_time = itp.rightmosttime;//g_debug("Setting rightmost time to %f\n", si->rightmost_time); if ((system_num > 2) && Denemo.project->movement->playingnow && (si->playhead > leftmost) && itp.measurenum <= g_list_length (((DenemoStaff *) curstaff->data)->themeasures) /*(itp.measurenum > (si->rightmeasurenum+1)) */ ) { //put the next line of music at the top with a break marker itp.left = &gui->lefts[0]; itp.right = &gui->rights[0]; itp.scale = &gui->scales[0]; if (cr) { cairo_save (cr); cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); //Strong Blue Line to break pages cairo_rectangle (cr, 0, line_height - 10, get_widget_width (Denemo.scorearea) / Denemo.project->movement->zoom, 10); cairo_fill (cr); cairo_restore (cr); } itp.line_end = FALSE; //to force print of timesig if (itp.measurenum > (si->rightmeasurenum + 1)) itp.measurenum = si->rightmeasurenum + 1; gdouble flip; flip = 1.0; if ((itp.staffnum == si->top_staff) && (flip_count == -1)) { flip = 0.1; flip_count = 0; //g_debug("Adding timeout"); g_timeout_add (1000 / MAX_FLIP_STAGES, (GSourceFunc) schedule_draw, &flip_count); } //g_debug("drawing %d\n", flip_count); if (flip_count > 0 && flip_count < MAX_FLIP_STAGES) flip = flip_count / (gdouble) MAX_FLIP_STAGES; if (cr) { cairo_translate (cr, get_widget_width (Denemo.scorearea) * (1 - flip) * 0.5 / Denemo.project->movement->zoom, 0.0); cairo_scale (cr, flip, 1.0); if (draw_staff (flip_count > 0 ? cr : NULL, curstaff, y, gui, &itp)) repeat = TRUE; cairo_scale (cr, 1 / flip, 1.0); cairo_translate (cr, -get_widget_width (Denemo.scorearea) * (1 - flip) * 0.5 / Denemo.project->movement->zoom, 0.0); } //draw_break_marker(); } else { if (flip_count != -1) repeat = TRUE; //g_debug("Repeating %d\n", repeat); flip_count = -1; } // if(itp.rightmosttime != si->rightmost_time) // g_debug("Resetting %f %f? ",itp.rightmosttime, si->rightmost_time); // itp.rightmosttime = si->rightmost_time;//We want to ignore the rightmost_time of the flipped over top system that belongs to the next page } //end of block printing continuations *itp.left = 0; //To signal end of valid systems if ((!curstaff->next) || ((DenemoStaff *) curstaff->next->data)->voicecontrol & DENEMO_PRIMARY) { if (itp.verse) { y += LYRICS_HEIGHT; } if (curstaff->next) { DenemoStaff *next = (DenemoStaff *) (curstaff->next->data); y += (si->staffspace - next->space_shorten + staff->space_below); } else y += (si->staffspace + staff->space_below); } } // for all the staffs //g_debug("Right most time %f\n", si->rightmost_time); // if(itp.last_midi) // si->rightmost_time = get_midi_off_time(itp.last_midi); return repeat; /* And we're done */ } static gint draw_callback (cairo_t * cr) { DenemoProject *gui = Denemo.project; //g_debug("expose\n"); if ((!Denemo.project) || (!Denemo.project->movement) || (!Denemo.project->movement->currentmeasure)) { g_warning ("Cannot draw!"); return TRUE; } /* Layout the score. */ if (layout_needed) if (draw_score (NULL)) { set_bottom_staff (gui); update_vscrollbar (gui); } layout_needed = TRUE; if(Denemo.project->movement->playingnow) gtk_widget_queue_draw (Denemo.playbackview); /* Clear with an appropriate background color. */ if (Denemo.project->input_source != INPUTKEYBOARD && Denemo.project->input_source != INPUTMIDI && (Denemo.prefs.overlays || (Denemo.project->input_source == INPUTAUDIO)) && pitch_entry_active (gui)) { cairo_set_source_rgb (cr, 0xAD/255.0, 0xD8/255.0, 0xE6/255.0); //light blue } else if (gtk_widget_has_focus (Denemo.scorearea) && gtk_widget_is_focus (Denemo.scorearea)) { if (Denemo.project->input_source == INPUTMIDI && (Denemo.keyboard_state == GDK_LOCK_MASK || Denemo.keyboard_state == GDK_SHIFT_MASK)) //listening to MIDI-in cairo_set_source_rgb (cr, 0.9, 0.85, 1.0); else if (Denemo.project->input_source == INPUTMIDI && Denemo.keyboard_state == GDK_CONTROL_MASK) //checking pitches cairo_set_source_rgb (cr, 0.85, 1.0, 0.9); else cairo_set_source_rgb (cr, ((0xFF0000 & Denemo.color) >> 16) / 255.0, ((0xFF00 & Denemo.color) >> 8) / 255.0, ((0xFF & Denemo.color)) / 255.0); } else { cairo_set_source_rgb (cr, 0.8, 0.8, 0.8); //gray background when key strokes are not being received. } cairo_paint (cr); /* Draw the score. */ draw_score (cr); return TRUE; } void update_drawing_cache (void) { if(Denemo.non_interactive) return; draw_score (NULL); } /** * Here we have the function that actually draws the score. Note that * it does not clip intelligently at all */ #if GTK_MAJOR_VERSION==3 gint scorearea_draw_event (G_GNUC_UNUSED GtkWidget * w, cairo_t * cr) { return draw_callback (cr); } #else gint scorearea_draw_event (GtkWidget * widget, GdkEventExpose * event) { if (widget == NULL) { draw_score (NULL); return TRUE; } /* Setup a cairo context for rendering and clip to the exposed region. */ cairo_t *cr = gdk_cairo_create (event->window); gdk_cairo_region (cr, event->region); cairo_clip (cr); draw_callback (cr); cairo_destroy (cr); return TRUE; } #endif denemo-2.2.0/src/display/PaxHeaders.19168/drawtimesig.c0000644000000000000000000000013213135434036017450 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.583315139 30 ctime=1500919914.243315139 denemo-2.2.0/src/display/drawtimesig.c0000644000175000017500000000311613135434036021322 0ustar00jjbenhamjjbenham00000000000000/* drawtimesig.cpp * * Function for drawing the time signature * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999, 2000, 2001, 2002 Matthew Hiller */ #include "core/utils.h" /* Includes */ /** * Draw timesig on the score * */ void draw_timesig (cairo_t * cr, gint xx, gint y, gint time1, gint time2, timesig * timesig) { static GString *timesigtop; static GString *timesigbottom; if (!timesigtop) { timesigtop = g_string_new (NULL); timesigbottom = g_string_new (NULL); } g_string_sprintf (timesigtop, "%d", time1); g_string_sprintf (timesigbottom, "%d", time2); gint override = 0; if (timesig->directives) { gint count = 0; GList *g = timesig->directives; for (; g; g = g->next, count++) { DenemoDirective *directive = g->data; override = override | directive->override; if (directive->display) { drawnormaltext_cr (cr, directive->display->str, xx + directive->tx, y + count * 10); } if (directive->graphic) { drawbitmapinverse_cr (cr, directive->graphic, xx + directive->gx + count, y + directive->gy, FALSE); } } } if (!(DENEMO_OVERRIDE_GRAPHIC & override)) { cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, 24.0); cairo_move_to (cr, xx, y + 20); cairo_show_text (cr, timesigtop->str); cairo_move_to (cr, xx, y + 40); cairo_show_text (cr, timesigbottom->str); } } denemo-2.2.0/src/display/PaxHeaders.19168/hairpin.h0000644000000000000000000000013213135434036016570 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.583315139 30 ctime=1500919914.246648473 denemo-2.2.0/src/display/hairpin.h0000644000175000017500000000064113135434036020442 0ustar00jjbenhamjjbenham00000000000000/* hairpin.h Functions for drawing hairpins - header file for Denemo, a gtk+ frontend to GNU Lilypond (c) 2000, 2001 Matthew Hiller */ #include GSList *push_hairpin_stack (GSList * hairpin_stack, gint x); gint top_hairpin_stack (GSList * hairpin_stack); GSList *pop_hairpin_stack (GSList * hairpin_stack); void draw_hairpin (cairo_t * cr, GSList ** hairpin_stack, gint x2, gint y, gint dir); denemo-2.2.0/src/display/PaxHeaders.19168/drawfakechord.c0000644000000000000000000000013213135434036017735 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.583315139 30 ctime=1500919914.223315139 denemo-2.2.0/src/display/drawfakechord.c0000644000175000017500000000074413135434036021613 0ustar00jjbenhamjjbenham00000000000000#include "core/utils.h" #include #include /** * Draw fakechords on the score * */ void draw_fakechord (cairo_t * cr, gint xx, gint y, DenemoObject * theobj) { chord *ch; if (theobj->type == FAKECHORD) { g_warning ("FAKECHORD type found and not handled"); } else if (theobj->type == CHORD) { ch = (chord *) theobj->object; drawnormaltext_cr (cr, ((GString *) ch->fakechord)->str, xx, y + STAFF_HEIGHT - 10); } } denemo-2.2.0/src/display/PaxHeaders.19168/calculatepositions.c0000644000000000000000000000013213135434036021036 xustar0030 mtime=1500919838.349981806 30 atime=1500919921.583315139 30 ctime=1500919914.213315139 denemo-2.2.0/src/display/calculatepositions.c0000644000175000017500000003532713135434036022721 0ustar00jjbenhamjjbenham00000000000000/* calculatepositions.c * functions that calculate the positions at which score objects are * drawn * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller, Adam Tee */ #include #include "display/calculatepositions.h" #include "command/chord.h" #include "command/staff.h" #include "core/utils.h" #include "command/measure.h" #define mudobj(x) ((DenemoObject *) x->data) #define CHORDTEST(node) ((mudobj(node)->type!=CHORD)||((mudobj(node)->type==CHORD && ((chord *)(mudobj(node)->object))->is_grace))) /** * Check to see if there is any more music in * the datastructures * Used by find_xes_in_measure * @param cur_obj_nodes pointer to the current objnodes * @param num_staffs number of staffs in the score */ gboolean music_remains_p (objnode ** cur_obj_nodes, gint num_staffs) { gint i; for (i = 0; i < num_staffs; i++) { if (cur_obj_nodes[i]) return TRUE; } return FALSE; } /** * Check to see if the starttick of all objnodes across * staves is equal * Used by find_xes_in_measure * * @param cur_obj_nodes pointer to the current objnodes * @param num_staffs number of staffs in the score */ gboolean all_tickcounts_equal_p (objnode ** cur_obj_nodes, gint num_staffs) { gint i, compare = -1; DenemoObject *curobj; for (i = 0; i < num_staffs; i++) { if (cur_obj_nodes[i]) { curobj = (DenemoObject *) cur_obj_nodes[i]->data; if (compare == -1) compare = curobj->starttickofnextnote; else if (curobj->starttickofnextnote != compare) return FALSE; else if (curobj->type != CHORD) return FALSE; } } return TRUE; } /** * structure and GCompareFunc used by the mechanism for dealing with * zero-duration DenemoObjects (clefs, tupmarks, etc.) */ typedef struct list_info { gint start_position; gint pixels; } list_info; list_info * new_list_info (gint start_position, gint pixels) { list_info *ret = (list_info *) g_malloc (sizeof (list_info)); ret->start_position = start_position; ret->pixels = pixels; return ret; } G_GNUC_UNUSED static void print_nonchords (GList *nonchords) { GList *g; for (g=nonchords;g;g=g->next) { g_print ("(p = %d, t = %d)\n", ((list_info *) g->data)->pixels, ((list_info *) g->data)->start_position); } } /** * g_list_foreach function to compare the start postion of the * object * This is used on the non-chord infos, the non-chords being taken from across all staffs for a single block * a "block" being chosen so that the start and end ticks are respectively equal * the sorting is by tick and then within the same tick by the pixels value - here described as "the longer gap" */ static gint list_compare_func (gpointer a, gpointer b) { list_info *ali = (list_info *) a; list_info *bli = (list_info *) b; if (ali->start_position != bli->start_position) /* Something than starts sooner gets sorted first */ return ali->start_position - bli->start_position; /* Otherwise put the longer gap first */ return bli->pixels - ali->pixels; } /** * Used to remove zero duration DenemoObjects * * @param source list of DenemoObjects to prune */ static GList * prune_list (GList * source) { GList *previous; GList *current; GList *sink = NULL; source = g_list_sort (source, (GCompareFunc) list_compare_func); previous = source; if (previous) { sink = g_list_append (sink, previous->data); current = previous->next; } else current = NULL; while (current) { if ((((list_info *) current->data)->start_position != ((list_info *) previous->data)->start_position)) sink = g_list_append (sink, current->data), previous = current ; else g_free (current->data); current = current->next; } /* Okay. The stuff we care about has been copied to sink. All that * remains to do is free source and return sink */ g_list_free (source);//g_print("Keeping \n"), print_nonchords(sink), g_print("... ok???"); return sink; } /** * Allocate_xes - allocate the x position for all chord elements * in the score(??? JUl 2011, it appears to be just a single "block" it is called for each "block") * * @param block_start_obj_nodes pointer to the starting object node * @param block_end_obj_nodes pointer to the last object node * @param num_staffs the number of staffs in the score * @param furthest_tick_advance * @param base_x * @param base_tick * @param shortest_chord_duration * @param shortest_chord_pixels * @param whole_note_width * @param non_chords * */ static void allocate_xes (objnode ** block_start_obj_nodes, objnode ** block_end_obj_nodes, gint num_staffs, gint furthest_tick_advance, gint * base_x, gint * base_tick, gint shortest_chord_duration, gint shortest_chord_pixels, gint whole_note_width, GList * non_chords) { gint ticks_in_block, shortest_chords_in_block, block_width, starts_at_tick; gint extra_advance = 0, non_chord_pixels, i; objnode *this_staff_obj_node; DenemoObject *curobj = 0; GList *non_chords_node = 0; /* Initializey stuff */ non_chords = prune_list (non_chords); /* Set the block width */ ticks_in_block = furthest_tick_advance - *base_tick; shortest_chords_in_block = (ticks_in_block % shortest_chord_duration) ? (ticks_in_block / shortest_chord_duration + 1) : (ticks_in_block / shortest_chord_duration); block_width = MAX (shortest_chords_in_block * shortest_chord_pixels, ticks_in_block * whole_note_width / WHOLE_NUMTICKS); /* Now go through staff-by-staff and set the xes within the block * only. This code would be simpler if each mudela object stored its * own starttick rather that only that of its possibly hypothetical * successor */ for (i = 0; i < num_staffs; i++) { this_staff_obj_node = block_start_obj_nodes[i]; if (this_staff_obj_node) { starts_at_tick = *base_tick; non_chords_node = non_chords; extra_advance = 0; non_chord_pixels = 0; // if there are two non-chords in succession the minpixelsalloted is used while (this_staff_obj_node) { curobj = (DenemoObject *) this_staff_obj_node->data; while (non_chords_node && !CHORDTEST (this_staff_obj_node) && (starts_at_tick >= ((list_info *) non_chords_node->data)->start_position)) { extra_advance += ((list_info *) non_chords_node->data)->pixels; non_chords_node = non_chords_node->next; } if (CHORDTEST (this_staff_obj_node)) { curobj->x = *base_x + extra_advance + non_chord_pixels + ((starts_at_tick - *base_tick) * block_width / (ticks_in_block ? ticks_in_block : 1)); non_chord_pixels += curobj->minpixelsalloted; } else { curobj->x = *base_x + extra_advance + ((starts_at_tick - *base_tick) * block_width / (ticks_in_block ? ticks_in_block : 1)); non_chord_pixels = 0; } starts_at_tick = curobj->starttickofnextnote; if (this_staff_obj_node == block_end_obj_nodes[i]) break; else this_staff_obj_node = this_staff_obj_node->next; } } } /* This while loop takes care of any more additions needed to * extra_advance still outstanding */ while (non_chords_node) { extra_advance += ((list_info *) non_chords_node->data)->pixels; non_chords_node = non_chords_node->next; } /* Now increase the values of *base_x and *base_tick as a side-effect. */ *base_x += block_width + extra_advance; *base_tick = furthest_tick_advance; //this is growing.... //g_debug("furthest %d\n", furthest_tick_advance); /* Free non_chords and we're done */ g_list_foreach (non_chords, freeit, NULL); g_list_free (non_chords); } /** * This function calculates the horizontal position of every chord in * the measure. I'm foreseeing only some minor complications * extending it to work with multiple simultaneous time signatures in * different staffs (though it takes some serious mudela tweaking to * get Lily to do that.) The function works by looking for "blocks" * within the measure where the music starts and ends in all staffs on * the same tick. When it finds one such group it calls allocate_xes, * which actually allocates space to the block and divides it * proportionally among all the notes in the block according to their * duration. It also does stuff with a linked list for dealing with * non-chord mudela objects. First, a utility #define: */ //fxim appends to the non-chords list for all the non-chord objects up to the next chord. The list is a list of accumulated x-offset and tick. //If a chord follows the space before is also added to the accumulated x-offset. // there is also tick related stuff done. //cur_obj_nodes is moved to the first chord #define fxim_utility \ accumulator = 0; \ start_tick = 0;\ if (cur_obj_nodes[i]) \ start_tick = mudobj (cur_obj_nodes[i])->starttick; \ while (cur_obj_nodes[i] && CHORDTEST(cur_obj_nodes[i])/*mudobj (cur_obj_nodes[i])->type != CHORD*/) \ { \ curobj = (DenemoObject *)cur_obj_nodes[i]->data; \ accumulator += curobj->minpixelsalloted; \ non_chords = g_list_append (non_chords, \ new_list_info (start_tick, accumulator)); \ cur_obj_nodes[i] = cur_obj_nodes[i]->next; \ } \ if (cur_obj_nodes[i]) \ { \ if (mudobj (cur_obj_nodes[i])->space_before) \ { \ accumulator += mudobj (cur_obj_nodes[i])->space_before; \ non_chords = g_list_append (non_chords, \ new_list_info (start_tick, accumulator)); \ } \ if (mudobj (cur_obj_nodes[i])->durinticks < shortest_chord_duration) \ { \ shortest_chord_duration = mudobj (cur_obj_nodes[i])->durinticks; \ shortest_chord_pixels = \ mudobj (cur_obj_nodes[i])->minpixelsalloted; \ } \ max_advance_ticks = \ MAX (max_advance_ticks, \ mudobj (cur_obj_nodes[i])->starttickofnextnote); \ } /* Note that a lot more nodes get added to non_chords than is necessary, * but that's okay - prune_list will compensate for that nicely. */ /** * Iterate through the measure ready to set the x value for * each object * * @param si the scoreinfo structure * @param measurenum the measure to set the x values for * @param time1 the nominator of the timesig * @param time2 the denominator of the timesig * @return nothing */ void find_xes_in_measure (DenemoMovement * si, gint measurenum) { gint time1, time2; //timesig *thetime = g_list_ staffnode *cur_staff = si->currentstaff; measurenode *mnode = g_list_nth (((DenemoStaff*)cur_staff->data)->themeasures, measurenum-1); if (mnode == NULL) { g_critical ("Call to find_xes_in_measure for bad measure number %d", measurenum);return;} DenemoMeasure *meas = (DenemoMeasure*)mnode->data; if (meas == NULL) { g_critical ("Call to find_xes_in_measure for bad measure number %d", measurenum);return;} time1 = meas->timesig->time1; time2 = meas->timesig->time2; gint num_staffs = g_list_length (si->thescore); gint base_x = 0; gint base_tick = 0; gint max_advance_ticks = 0; objnode **block_start_obj_nodes; objnode **cur_obj_nodes; gint shortest_chord_duration = G_MAXINT; gint shortest_chord_pixels = 0; gint i; gint accumulator, start_tick; GList *non_chords = NULL; gint whole_note_width = si->measurewidth * time2 / time1; DenemoObject *curobj; block_start_obj_nodes = (objnode **) g_malloc (sizeof (objnode *) * num_staffs); cur_obj_nodes = (objnode **) g_malloc (sizeof (objnode *) * num_staffs); for (i = 0, cur_staff = si->thescore; cur_staff; i++, cur_staff = cur_staff->next) { // Point cur_obj_nodes[i] to the list of objects in the measure for the i'th staff (if no measure NULL) if (((DenemoStaff *) cur_staff->data)->nummeasures >= measurenum) { block_start_obj_nodes[i] = cur_obj_nodes[i] = /*measure_first_obj_node*/ (((DenemoMeasure*)g_list_nth (((DenemoStaff*)cur_staff->data)->themeasures, measurenum - 1)->data)->objects); //FIXME DANGER } else { block_start_obj_nodes[i] = cur_obj_nodes[i] = NULL; } // run the fxim thing on these objects fxim_utility; //creates the non_chords list up to the first chord, moving cur_obj_nodes to the first chord in each staff } while (non_chords != NULL || music_remains_p (cur_obj_nodes, num_staffs)) { if (all_tickcounts_equal_p (cur_obj_nodes, num_staffs)) { /* A-ha! We've found a block. Now go set the x positions * of all the objects within it appropriately */ //g_debug("*******Max advance ticks %d\n", max_advance_ticks); allocate_xes (block_start_obj_nodes, cur_obj_nodes, num_staffs, max_advance_ticks, &base_x, &base_tick, shortest_chord_duration ? shortest_chord_duration : 1, shortest_chord_pixels, whole_note_width, non_chords); /* And do setup work for the next block */ non_chords = NULL; shortest_chord_duration = G_MAXINT; shortest_chord_pixels = 0; for (i = 0; i < num_staffs; i++) { block_start_obj_nodes[i] = cur_obj_nodes[i] = (cur_obj_nodes[i] ? cur_obj_nodes[i]->next : NULL); fxim_utility; } } /* end if */ else { /* We haven't found a block yet; move a single element of * cur_obj_nodes "ahead" */ for (i = 0; i < num_staffs; i++) { if (cur_obj_nodes[i] && ((mudobj (cur_obj_nodes[i])->starttickofnextnote < max_advance_ticks) || CHORDTEST (cur_obj_nodes[i]) //mudobj (cur_obj_nodes[i])->type != CHORD )) { cur_obj_nodes[i] = cur_obj_nodes[i]->next; fxim_utility; break; } } } /* End else */ } /* End while */ g_list_nth (si->measurewidths, measurenum - 1)->data = GINT_TO_POINTER (MAX (base_x, si->measurewidth)); g_free (block_start_obj_nodes); g_free (cur_obj_nodes); } /** * Iterate through entire score ready to * set x values for all objects in the score * * @param si the scoreinfo structure * @return none */ void find_xes_in_all_measures (DenemoMovement * si) { gint i, n = g_list_length (si->measurewidths); //g_debug ("Number of measures in score %d\n", n); for (i = 1; i <= n; i++) find_xes_in_measure (si, i); /* obviously inefficient; should fix this */ } denemo-2.2.0/src/display/PaxHeaders.19168/drawkey.c0000644000000000000000000000013213135434036016577 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.599981805 30 ctime=1500919914.229981805 denemo-2.2.0/src/display/drawkey.c0000644000175000017500000001242713135434036020456 0ustar00jjbenhamjjbenham00000000000000/* drawkey.cpp * * Function for drawing the key signature * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller, Adam Tee */ #include "display/accwidths.h" #include "display/drawingprims.h" #include "core/utils.h" #define SPACE_BETWEEN_ACCS 8 #define m * HALF_LINE_SPACE /** * This function draws the key, if desired, and returns the width required * to draw it number describes the number of the new key, prevnumber the number of * the preceding key */ gint draw_key (cairo_t * cr, gint xx, gint y, gint number, gint prevnumber, gint dclef, gboolean wetrun, keysig * keysig) { /* These are just hard-coded offsets in pixels from the top of the staff. * mid_c_offset arrays. There's probably * a better way to do this, but I haven't thought of it */ static gint treble_flat_ys[7] = { 4 m, 1 m, 5 m, 2 m, 6 m, 3 m, 7 m }; static gint treble_sharp_ys[7] = { 0, 3 m, -1 m, 2 m, 5 m, 1 m, 4 m }; static gint bass_flat_ys[7] = { 6 m, 3 m, 7 m, 4 m, 8 m, 5 m, 9 m }; static gint bass_sharp_ys[7] = { 2 m, 5 m, 1 m, 4 m, 7 m, 3 m, 6 m }; static gint alto_flat_ys[7] = { 5 m, 2 m, 6 m, 3 m, 7 m, 4 m, 8 m }; static gint alto_sharp_ys[7] = { 1 m, 4 m, 0, 3 m, 6 m, 2 m, 5 m }; static gint tenor_flat_ys[7] = { 2 m, 0, 4 m, 1 m, 5 m, 2 m, 6 m }; static gint tenor_sharp_ys[7] = { -1 m, 2 m, 5 m, 1 m, 4 m, 0 m, 3 m }; static gint soprano_flat_ys[7] = { 2 m, 6 m, 3 m, 7 m, 4 m, 8 m, 5 m }; static gint soprano_sharp_ys[7] = { 5 m, 8 m, 4 m, 7 m, 3 m, 6 m, 2 m }; gint *theys = 0; gint *theprevys = 0; gint i; gint startindex, endindex; gint origx = xx; gint override = 0; if (wetrun && keysig->directives) { gint count = 0; GList *g = keysig->directives; for (; g; g = g->next, count++) { DenemoDirective *directive = g->data; override = override | directive->override; if (directive->display) { drawnormaltext_cr (cr, directive->display->str, xx + directive->tx, y + count * 10); } if (directive->graphic) { drawbitmapinverse_cr (cr, directive->graphic, xx + directive->gx + count, y + directive->gy, FALSE); } } } if (!(DENEMO_OVERRIDE_GRAPHIC & override)) { /* first, set the arrays we're using to something useful */ if (wetrun) { switch (dclef) { case DENEMO_TREBLE_CLEF: case DENEMO_G_8_CLEF: theprevys = (prevnumber < 0) ? treble_flat_ys : treble_sharp_ys; theys = (number < 0) ? treble_flat_ys : treble_sharp_ys; break; case DENEMO_BASS_CLEF: case DENEMO_F_8_CLEF: case DENEMO_FRENCH_CLEF: theprevys = (prevnumber < 0) ? bass_flat_ys : bass_sharp_ys; theys = (number < 0) ? bass_flat_ys : bass_sharp_ys; break; case DENEMO_ALTO_CLEF: theprevys = (prevnumber < 0) ? alto_flat_ys : alto_sharp_ys; theys = (number < 0) ? alto_flat_ys : alto_sharp_ys; break; case DENEMO_TENOR_CLEF: theprevys = (prevnumber < 0) ? tenor_flat_ys : tenor_sharp_ys; theys = (number < 0) ? tenor_flat_ys : tenor_sharp_ys; break; case DENEMO_SOPRANO_CLEF: theprevys = (prevnumber < 0) ? soprano_flat_ys : soprano_sharp_ys; theys = (number < 0) ? soprano_flat_ys : soprano_sharp_ys; break; default: /* Silently default to the treble stuff. Fix me. */ theprevys = (prevnumber < 0) ? treble_flat_ys : treble_sharp_ys; theys = (number < 0) ? treble_flat_ys : treble_sharp_ys; break; } } /* First, check to see if we ought to draw naturals. */ if (prevnumber < 0) { /* Draw as many accidentals as we need. */ if (number < 0) startindex = -number; else startindex = 0; endindex = -prevnumber; /* Note that the loop will immediately exit if number <= prevnumber */ for (i = startindex; i < endindex; i++, xx += NATURAL_WIDTH + 2) { if (wetrun) draw_accidental (cr, xx, y + theprevys[i], 0); } } else if (prevnumber > 0) { /* Analogous to above */ if (number > 0) startindex = number; else startindex = 0; for (i = startindex; i < prevnumber; i++, xx += NATURAL_WIDTH + 2) { if (wetrun) draw_accidental (cr, xx, y + theprevys[i], 0); } } /* Now draw the new indicators themselves */ if (number < 0) { number = -number; for (i = 0; i < number; i++, xx += FLAT_WIDTH + 2) if (wetrun) draw_accidental (cr, xx, y + theys[i], -1); } else for (i = 0; i < number; i++, xx += SHARP_WIDTH + 2) if (wetrun) draw_accidental (cr, xx, y + theys[i], 1); if(prevnumber==0 && (number==0)) { if(cr) drawtext_cr (cr, "(â™®)", xx, y + STAFF_HEIGHT + 12, 18); xx += 20; } } return xx - origx; } denemo-2.2.0/src/display/PaxHeaders.19168/drawcursor.c0000644000000000000000000000013213135434036017324 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.606648472 30 ctime=1500919914.223315139 denemo-2.2.0/src/display/drawcursor.c0000644000175000017500000000754513135434036021210 0ustar00jjbenhamjjbenham00000000000000/* drawcursor.c * functions for drawing the cursor * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller, Adam Tee, 2010 Richard Shann */ #include #include "display/drawingprims.h" #include "core/utils.h" #include "display/displayanimation.h" #include "core/view.h" #define CURSOR_WIDTH (10*scale) #define CURSOR_HEIGHT (6*scale) #define CURSOR_MINUS (CURSOR_HEIGHT/2) /** * Draw the cursor on the canvas at the given position * insert_control is the last gap from the previous note except when the cursor is on a measure boundary in which case it is +1 or -1 to indicate where next inserted note will go. * minpixels is width of rectangle to draw indicating an object position (used when not a CHORD */ void draw_cursor (cairo_t * cr, DenemoMovement * si, gint xx, gint y, gint insert_control, gint minpixels, gint dclef) { if (!cr) return; gint height = calculateheight (si->cursor_y, dclef); gdouble scale = transition_cursor_scale (); cairo_save (cr); cairo_set_source_rgba (cr, 255 * (si->cursoroffend), (!si->cursoroffend) * (!si->cursor_appending) * 255, (!si->cursoroffend) * (si->cursor_appending) * 255, 0.7); if (si->cursor_appending) { cairo_rectangle (cr, xx - (si->cursoroffend ? CURSOR_WIDTH : 0), height + y - CURSOR_HEIGHT, 2 * CURSOR_WIDTH, 2 * CURSOR_HEIGHT); cairo_fill (cr); cairo_set_source_rgba (cr, 0, 0, 0,1); cairo_rectangle (cr, xx - (si->cursoroffend ? CURSOR_WIDTH : 0), height + y - CURSOR_HEIGHT, 2 * CURSOR_WIDTH, 2 * CURSOR_HEIGHT); cairo_stroke (cr); } else if (minpixels) { cairo_rectangle (cr, xx - CURSOR_WIDTH / 2, height + y - CURSOR_MINUS - CURSOR_HEIGHT / 2, minpixels, 2 * CURSOR_HEIGHT); cairo_fill (cr); cairo_set_line_width (cr, 2); cairo_set_source_rgba (cr, 0.6, 0.6, 0, 0.60); cairo_rectangle (cr, xx + - CURSOR_WIDTH / 2, y - CURSOR_HEIGHT * 2 , minpixels, STAFF_HEIGHT + CURSOR_HEIGHT * 4); cairo_stroke (cr); } else { cairo_rectangle (cr, xx - CURSOR_WIDTH / 2, height + y - CURSOR_MINUS - CURSOR_HEIGHT / 2, 2 * CURSOR_WIDTH, 2 * CURSOR_HEIGHT); cairo_fill (cr); cairo_set_source_rgba (cr, 0, 0, 0,1); cairo_rectangle (cr, xx - CURSOR_WIDTH / 2, height + y - CURSOR_MINUS - CURSOR_HEIGHT / 2, 2 * CURSOR_WIDTH, 2 * CURSOR_HEIGHT); cairo_stroke (cr); } { gdouble length = 20 / si->zoom; gdouble insert_pos = CURSOR_WIDTH * 0.8; if (!si->cursor_appending) { insert_pos = -insert_control / 4; } else if (si->cursoroffend) insert_pos = insert_control * CURSOR_WIDTH; static gboolean on; on = !on;//g_print (" %d and %x\n", gtk_widget_has_focus (gtk_widget_get_parent (Denemo.scorearea)), gtk_widget_get_state_flags (Denemo.scorearea)); //g_debug("on is %d %d\n", on, Denemo.prefs.cursor_highlight); if (((!Denemo.prefs.cursor_highlight) || (on && Denemo.prefs.cursor_highlight)) && (gtk_widget_has_focus (Denemo.scorearea) && gtk_widget_is_focus (Denemo.scorearea))) { cairo_set_source_rgb (cr, 0, 0, 255); cairo_set_line_width (cr, 4); cairo_move_to (cr, xx + insert_pos, y + 4); cairo_rel_line_to (cr, 0, STAFF_HEIGHT - 8); cairo_stroke (cr); //setcairocolor( cr, paintgc ); if (Denemo.project->view == DENEMO_PAGE_VIEW) { cairo_set_line_width (cr, 6.0 / si->zoom); cairo_set_source_rgba (cr, 0, 1, 0, 0.40); cairo_arc (cr, xx + CURSOR_WIDTH / 2, height + y, length, 0, 2 * M_PI); cairo_stroke (cr); } if(Denemo.project->audio_recording) highlight_audio_record(); } } cairo_restore (cr); /* Now draw ledgers if necessary and we're done */ draw_ledgers (cr, height, height, xx, y, CURSOR_WIDTH); } denemo-2.2.0/src/display/PaxHeaders.19168/drawaccidentals.c0000644000000000000000000000013213135434036020261 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.606648472 30 ctime=1500919914.216648472 denemo-2.2.0/src/display/drawaccidentals.c0000644000175000017500000000177513135434036022144 0ustar00jjbenhamjjbenham00000000000000/* drawaccidentals.cpp * functions for drawing accidentals * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999, 2000, 2001, 2002 Matthew Hiller, Adam Tee */ #include "core/utils.h" /* Includes gtk.h */ #include /* Include the pixmaps; they'll actually be made into GdkPixmaps with the * GDK create_from_xpm_d functions. Doing things this way circumvents the need * to install the pixmaps into a /usr/share directory of some kind before * the program can be run from anywhere on the system. */ #include "display/accwidths.h" gint accwidths[NUMACCTYPES] = { DOUBLEFLAT_WIDTH, FLAT_WIDTH, NATURAL_WIDTH, SHARP_WIDTH, DOUBLESHARP_WIDTH }; gunichar acc_char[NUMACCTYPES] = { 0x43, 0x3a, 0x36, 0x2e, 0x45 }; /** * Draw an accidental given the specific enshift value * */ void draw_accidental (cairo_t * cr, gint xx, gint aggheight, gint enshift) { gint n = enshift + 2; /* convenient index into arrays */ drawfetachar_cr (cr, acc_char[n], xx, aggheight); } denemo-2.2.0/src/display/PaxHeaders.19168/hairpin.c0000644000000000000000000000013213135434036016563 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.626648472 30 ctime=1500919914.243315139 denemo-2.2.0/src/display/hairpin.c0000644000175000017500000000320013135434036020427 0ustar00jjbenhamjjbenham00000000000000/* hairpin.cpp * * Functions for drawing hairpins * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Adam Tee, Matthew Hiller */ #include #include "core/utils.h" /* Includes */ /** * Push elemnet onto hairpin stack * */ GSList * push_hairpin_stack (GSList * hairpin_stack, gint x) { hairpin_stack = g_slist_prepend (hairpin_stack, GINT_TO_POINTER (x)); return hairpin_stack; } /** * Get the top element of the stack's data * */ gint top_hairpin_stack (GSList * hairpin_stack) { if (hairpin_stack) return GPOINTER_TO_INT (hairpin_stack->data); else return -1; } /** * Pop the head of the hairpin stack * */ GSList * pop_hairpin_stack (GSList * hairpin_stack) { if (hairpin_stack) { GSList *head = hairpin_stack; hairpin_stack = g_slist_remove_link (hairpin_stack, head); g_slist_free_1 (head); return hairpin_stack; } else return NULL; } /** * Draw a hairpin onto the score * */ void draw_hairpin (cairo_t * cr, GSList ** hairpin_stack, gint x2, gint y, gint dir) { gint x1 = top_hairpin_stack (*hairpin_stack); y += STAFF_HEIGHT*2; cairo_set_line_width (cr, 1.0); // allow drawing from off window { if (x1 == x2) x2 += 5; if (dir) { cairo_move_to (cr, x2, y - 20); cairo_line_to (cr, x1, y - 15); cairo_line_to (cr, x2, y - 10); cairo_stroke (cr); } else { cairo_move_to (cr, x1, y - 20); cairo_line_to (cr, x2, y - 15); cairo_line_to (cr, x1, y - 10); cairo_stroke (cr); } } } denemo-2.2.0/src/display/PaxHeaders.19168/notewidths.h0000644000000000000000000000013213135434036017326 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.626648472 30 ctime=1500919914.246648473 denemo-2.2.0/src/display/notewidths.h0000644000175000017500000000702513135434036021203 0ustar00jjbenhamjjbenham00000000000000/* notewidths.h * holds notewidths, which is used both in draw_chord, draw_notehead * and setpixelmin * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller */ #define SMALLESTDURATION 8 #define WHOLEHEAD_WIDTH 20 #define WHOLEHEAD_HEIGHT 10 #define WHOLEHEAD_SEMI_HEIGHT 5 #define HALFHEAD_WIDTH 12 #define HALFHEAD_HEIGHT 11 #define HALFHEAD_SEMI_HEIGHT 5 #define NOTEHEAD_WIDTH 11 #define NOTEHEAD_HEIGHT 10 #define NOTEHEAD_SEMI_HEIGHT 5 #define CROSS_WIDTH 13 #define CROSS_HEIGHT 10 #define CROSS_SEMI_HEIGHT 5 #define DIAMOND_WIDTH 20 #define DIAMOND_HEIGHT 10 #define DIAMOND_SEMI_HEIGHT 5 #define HARMONIC_WIDTH 9 #define HARMONIC_HEIGHT 10 #define HARMONIC_SEMI_HEIGHT 5 #define STEM_HEIGHT 44 #define EXTRA_STEM_HEIGHT 49 /* A bad hack */ #define STEM_WIDTH 11 #define EIGHTHSTEM_HEIGHT 29 #define SIXTEENTHSTEM_HEIGHT 30 #define THIRTYSECONDSTEM_HEIGHT 39 #define SIXTYFOURTHSTEM_HEIGHT 44 #define HUNDREDTWENTYEIGHTHSTEM_HEIGHT 49 #define TWOHUNDREDFIFTYSIXTHSTEM_HEIGHT 54 #define WHOLEREST_WIDTH 15 #define WHOLEREST_HEIGHT 5 #define WHOLEREST_OFFSETFROMTOP LINE_SPACE #define HALFREST_WIDTH 15 #define HALFREST_HEIGHT 5 #define HALFREST_OFFSETFROMTOP LINE_SPACE*2 #define QUARTERREST_WIDTH 11 #define QUARTERREST_HEIGHT 27 #define QUARTERREST_OFFSETFROMTOP LINE_SPACE*2 #define EIGHTHREST_WIDTH 13 #define EIGHTHREST_HEIGHT 18 #define EIGHTHREST_OFFSETFROMTOP LINE_SPACE*2 #define SIXTEENTHREST_WIDTH 15 #define SIXTEENTHREST_HEIGHT 28 #define SIXTEENTHREST_OFFSETFROMTOP LINE_SPACE*2 #define THIRTYSECONDREST_WIDTH 17 #define THIRTYSECONDREST_HEIGHT 38 #define THIRTYSECONDREST_OFFSETFROMTOP LINE_SPACE*2 #define SIXTYFOURTHREST_WIDTH 18 #define SIXTYFOURTHREST_HEIGHT 48 #define SIXTYFOURTHREST_OFFSETFROMTOP LINE_SPACE*2 #define HUNDREDTWENTYEIGHTHREST_WIDTH 18 #define HUNDREDTWENTYEIGHTHREST_HEIGHT 58 #define HUNDREDTWENTYEIGHTHREST_OFFSETFROMTOP LINE_SPACE*2 #define TWOHUNDREDFIFTYSIXTHREST_WIDTH 18 #define TWOHUNDREDFIFTYSIXTHREST_HEIGHT 68 #define TWOHUNDREDFIFTYSIXTHREST_OFFSETFROMTOP LINE_SPACE*2 #define THINBEAM_HEIGHT 3 #define THICKBEAM_HEIGHT 3 #define STUB_WIDTH 8 #define FIRSTBEAMSPACE 5 #define SUBSQBEAMSPACE 5 #define FERMATA_WIDTH 26 #define FERMATA_HEIGHT 15 #define ACCENT_WIDTH 15 #define ACCENT_HEIGHT 10 #define STACATTO 3 #define TENUTO_WIDTH 12 #define TENUTO_HEIGHT 1 #define MARCATO_WIDTH 10 #define MARCATO_HEIGHT 11 #define CODA_WIDTH 21 #define CODA_HEIGHT 27 #define TRILL_WIDTH 30 #define TRILL_HEIGHT 23 #define TURN_HEIGHT 10 #define TURN_WIDTH 22 #define MORDENT_WIDTH 23 #define MORDENT_HEIGHT 12 #define STACCATISSIMO_WIDTH 4 #define STACCATISSIMO_HEIGHT 9 #define DBOW_WIDTH 14 #define DBOW_HEIGHT 13 #define UBOW_WIDTH 12 #define UBOW_HEIGHT 21 #define ARPEGGIO_WIDTH 8 #define ARPEGGIO_HEIGHT 14 #define UPPRALL_WIDTH 33 #define UPPRALL_HEIGHT 16 #define TRILL_ELEMENT_WIDTH 14 #define TRILL_ELEMENT_HEIGHT 8 #define TRILLELEMENT_WIDTH 14 #define TRILLELEMENT_HEIGHT 10 #define THUMB_WIDTH 8 #define THUMB_HEIGHT 14 #define STOPPED_SIZE 10 #define SFORZATO_WIDTH 18 #define SFORZATO_HEIGHT 10 #define SEGNO_WIDTH 20 #define SEGNO_HEIGHT 30 #define REVERSETURN_WIDTH 22 #define REVERSETURN_HEIGHT 10 #define PRALL_WIDTH 23 #define PRALL_HEIGHT 10 #define PRALLPRALL_WIDTH 32 #define PRALLPRALL_HEIGHT 10 #define PRALLMORDENT_WIDTH 32 #define PRALLMORDENT_HEIGHT 12 #define OPEN_WIDTH 8 #define OPEN_HEIGHT 10 #define FLAGEOLET_SIZE 10 #define HEEL_WIDTH 10 #define HEEL_HEIGHT 12 #define TOE_WIDTH 10 #define TOE_HEIGHT 15 extern gint restwidths[SMALLESTDURATION + 1]; extern gint headwidths[3]; denemo-2.2.0/src/display/PaxHeaders.19168/slurs.c0000644000000000000000000000013213135434036016301 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.626648472 30 ctime=1500919914.249981805 denemo-2.2.0/src/display/slurs.c0000644000175000017500000000455313135434036020161 0ustar00jjbenhamjjbenham00000000000000/* slurs.cpp * * Functions for drawing slurs * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Adam Tee, Matthew Hiller */ #include #include "core/utils.h" /* Includes */ #include GSList * push_slur_stack (GSList * slur_stack, gint x, gint y) { slur_stack = g_slist_prepend (slur_stack, GINT_TO_POINTER ((x&0xFFFF)+(y<<16))); return slur_stack; } static gint top_slur_stack_x (GSList * slur_stack) { if (slur_stack) return 0xFFFF & GPOINTER_TO_INT (slur_stack->data); else return -1; } static gint top_slur_stack_y (GSList * slur_stack) { if (slur_stack) return (GPOINTER_TO_INT (slur_stack->data))>>16; else return -1; } GSList * pop_slur_stack (GSList * slur_stack) { if (slur_stack) { GSList *head = slur_stack; slur_stack = g_slist_remove_link (slur_stack, head); g_slist_free_1 (head); return slur_stack; } else return NULL; } void draw_slur (cairo_t * cr, GSList ** slur_stack, gint x2, gint y, gint y2) { gint x1 = top_slur_stack_x (*slur_stack); gint y1 = top_slur_stack_y (*slur_stack); gint dir = (y1+y2>40?-1:1); if (x1 != -1) { x1 += 6;//over note head *slur_stack = pop_slur_stack (*slur_stack); cairo_set_line_width (cr, 1.0); cairo_move_to (cr, x1, y1 + y - 12 * dir); cairo_rel_curve_to (cr, (x2 - x1) / 3, (y2 - y1 - 5* dir)*1/3 -8 * dir, (x2 - x1) * 2 / 3, (y2 - y1 - 5* dir)*2/3 - 8* dir, (x2 - x1), y2 - y1 - 5* dir); cairo_stroke (cr); } else { cairo_set_line_width (cr, 1.0); cairo_move_to (cr, 0, y - 15); cairo_rel_curve_to (cr, (x2) / 3, -8, (x2) * 2 / 3, -8, (x2), 0); cairo_stroke (cr); } } void draw_slur_start (cairo_t * cr, gint x, gint y) { cairo_save (cr); cairo_set_source_rgba (cr, 0.1, 0.9, 0.1, 0.8); cairo_translate (cr, x+6, y - 15); cairo_rotate (cr, -M_PI / 3.0); cairo_scale (cr, 0.7, -0.7); drawfetachar_cr (cr, 0xD8, 0, 0); cairo_fill (cr); cairo_restore (cr); } void draw_slur_end (cairo_t * cr, gint x, gint y) { cairo_save (cr); cairo_set_source_rgba (cr, 0.9, 0.1, 0.1, 0.8); cairo_translate (cr, x+5, y - 15); cairo_rotate (cr, -M_PI / 1.5); cairo_scale (cr, 0.7, -0.7); drawfetachar_cr (cr, 0xD9, 0, 0); //cairo_arc (cr, x + 5, y - 16, 4, 0.0, 2 * M_PI); cairo_fill (cr); cairo_restore (cr); } denemo-2.2.0/src/display/PaxHeaders.19168/drawnotes.c0000644000000000000000000000013213135434036017137 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.636648473 30 ctime=1500919914.236648472 denemo-2.2.0/src/display/drawnotes.c0000644000175000017500000006052213135434036021015 0ustar00jjbenhamjjbenham00000000000000/* drawnotes.cpp * * Functions for drawing notes and rests * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999, 2000, 2001, 2002 Matthew Hiller, Adam Tee */ #include "core/utils.h" /* Includes */ #include "command/lilydirectives.h" #include "command/scorelayout.h" #include "display/drawingprims.h" #include "display/notewidths.h" #include #include "display/slurs.h" gint restwidths[SMALLESTDURATION + 1] = { WHOLEREST_WIDTH, HALFREST_WIDTH, QUARTERREST_WIDTH, EIGHTHREST_WIDTH, SIXTEENTHREST_WIDTH, THIRTYSECONDREST_WIDTH, SIXTYFOURTHREST_WIDTH, HUNDREDTWENTYEIGHTHREST_WIDTH, TWOHUNDREDFIFTYSIXTHREST_WIDTH }; gint headwidths[3] = { WHOLEHEAD_WIDTH, HALFHEAD_WIDTH, NOTEHEAD_WIDTH }; static void draw_selection_shading (cairo_t * cr, DenemoDirective * directive, gdouble x, gdouble y, gdouble diameter) { if (directive == Denemo.project->movement->directive_on_clipboard) { cairo_save (cr); cairo_set_source_rgba (cr, 0.4, 0.8, 0.5, 0.7); cairo_arc (cr, x, y - 4, 2 * diameter, 0.0, 2 * M_PI); //FIXME put these adjustments back into the caller code and pass diameter and y as final values cairo_fill (cr); cairo_restore (cr); } } /** * draw_dots * This draws dots after rests or notes * */ static void draw_dots (cairo_t * cr, gint xstart, gint ystart, gint numdots) { xstart += 5; for (; numdots; numdots--, xstart += 6) { cairo_arc (cr, xstart, ystart, 2.5, 0.0, 2 * M_PI); cairo_fill (cr); } } /** * draw_rest * This function actually draws a rest onto the backing pixmap * */ static void draw_rest (cairo_t * cr, gint duration, gint numdots, gint xx, gint y, DenemoGraphic * override_rest, gint gx, gint gy) { static gint restoffsets[SMALLESTDURATION + 1] = { WHOLEREST_OFFSETFROMTOP, HALFREST_OFFSETFROMTOP, QUARTERREST_OFFSETFROMTOP, EIGHTHREST_OFFSETFROMTOP, SIXTEENTHREST_OFFSETFROMTOP, THIRTYSECONDREST_OFFSETFROMTOP, SIXTYFOURTHREST_OFFSETFROMTOP, HUNDREDTWENTYEIGHTHREST_OFFSETFROMTOP, TWOHUNDREDFIFTYSIXTHREST_OFFSETFROMTOP }; static gunichar rest_char[SMALLESTDURATION + 1] = { 0x20, 0x21, 0x27, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2d /*note no glyph for this one! */ }; if (override_rest) drawbitmapinverse_cr (cr, override_rest, xx + gx + restwidths[0] - override_rest->width / 2, y + restoffsets[0] + gy - override_rest->height / 2, FALSE); else drawfetachar_cr (cr, rest_char[duration], xx, y + restoffsets[duration]); /* Now draw any trailing dots and we're done */ draw_dots (cr, xx + restwidths[duration], y + restoffsets[duration] - HALF_LINE_SPACE, numdots); } /** * draw_notehead * This function actually draws the note onto the backing pixmap * */ static void draw_notehead (cairo_t * cr, note * thenote, gint duration, gint numdots, gint xx, gint y, gint * accs, gint is_stemup, DenemoGraphic * override_notehead, gint gx, gint gy, gboolean at_cursor, gboolean percussion) { /* Adam's changed this code; it used to be that these arrays only had three elements. The change has defeated what had been semi-elegance; grrr. */ static gint headwidths[6] = { WHOLEHEAD_WIDTH, HALFHEAD_WIDTH, NOTEHEAD_WIDTH, DIAMOND_WIDTH, CROSS_WIDTH, HARMONIC_WIDTH, }; static gunichar head_char[6] = { 0x54, 0x55, 0x56, 0x58, 0x64, 0x92 }; gint height = thenote->y; gint noteheadtype = 1; gint enshift = thenote->enshift; gint pitch = offsettonumber (thenote->mid_c_offset); if (thenote->noteheadtype == DENEMO_NORMAL_NOTEHEAD) { noteheadtype = MIN (duration, 2); /* Index of relevant notehead */ } else if (thenote->noteheadtype == DENEMO_CROSS_NOTEHEAD) { noteheadtype = 4; /* Index of relevant notehead */ } else if (thenote->noteheadtype == DENEMO_HARMONIC_NOTEHEAD) { noteheadtype = 5; } else if (thenote->noteheadtype == DENEMO_DIAMOND_NOTEHEAD) { noteheadtype = 3; } if (duration < 0) noteheadtype = 0; /* Draw the accidental, if necessary. Note that this has to be done before xx is modified, as the the value in position_of_accidental already accounts for any reverse-alignment in the chord. */ if (thenote->showaccidental && !percussion) { if (cr) { draw_accidental (cr, xx - thenote->position_of_accidental, y + height, enshift); if (thenote->showaccidental == DENEMO_REMINDER) drawtext_cr (cr, "!", xx - thenote->position_of_accidental - 8.0, y + height, 22.0); if (thenote->showaccidental == DENEMO_CAUTIONARY) { drawtext_cr (cr, "(", xx - thenote->position_of_accidental - 8.0, y + height, 22.0); drawtext_cr (cr, ")", xx - thenote->position_of_accidental + 6.0, y + height, 22.0); //there are actual widths in accwidths.h which could be used instead of 6.0 } } accs[pitch] = enshift; } if (thenote->reversealign) { if (is_stemup) xx += headwidths[noteheadtype]; else xx -= headwidths[noteheadtype]; } //OVERRIDE_GRAPHIC on the note directive just affects the head, everything else - accidentals dots stems beams ...are controlled by chord/chord-directives. Even the notehead is set by the chord directives if override_notehead is set if (cr) if (!(get_override (thenote->directives) & DENEMO_OVERRIDE_GRAPHIC)) { if (override_notehead) { //g_debug("drawing a chord override graphic at %d %d\n", xx+gx-override_notehead->width/2, y+height+gy-override_notehead->height/2); drawbitmapinverse_cr (cr, override_notehead, xx + gx - override_notehead->width / 2, y + height + gy - override_notehead->height / 2, FALSE); } else { if (is_stemup) drawfetachar_cr (cr, head_char[noteheadtype], xx, y + height); else drawfetachar_cr (cr, head_char[noteheadtype], xx - 0.5, y + height); } } gint maxwidth = headwidths[noteheadtype]; /* any display for note directives */ if (cr) { gint thiswidth = draw_for_directives (cr, thenote->directives, xx, y + thenote->y, at_cursor); maxwidth = MAX (thiswidth, maxwidth); } if (cr) { /* Now draw any trailing dots */ if ((height % LINE_SPACE) == 0) draw_dots (cr, xx + maxwidth, y + height - HALF_LINE_SPACE, numdots); else draw_dots (cr, xx + maxwidth, y + height, numdots); } } /** * Draw the legder lines on the score * Modified RTS 2011, ledger lines must not coalesce, must project from noteheads and stems * there is not much room, hence the sleight of hand */ void draw_ledgers (cairo_t * cr, gint greaterheight, gint lesserheight, gint xx, gint y, gint width) { int ledgerheight; #define EXTRA_ON_LEDGER 1.5 cairo_set_line_width (cr, 1.0); /* Draw the top ledger lines */ for (ledgerheight = 2*LINE_SPACE; ledgerheight >= greaterheight; ledgerheight -= LINE_SPACE) { cairo_move_to (cr, xx + ((ledgerheight == greaterheight) ? (-EXTRA_ON_LEDGER) : (-2)), ledgerheight + y); cairo_line_to (cr, xx + width + ((ledgerheight == greaterheight) ? EXTRA_ON_LEDGER : (-2)), ledgerheight + y); } /* Almost identically, draw the bottom ones */ for (ledgerheight = 2*LINE_SPACE; ledgerheight <= lesserheight; ledgerheight += LINE_SPACE) { cairo_move_to (cr, xx + ((ledgerheight == lesserheight) ? -EXTRA_ON_LEDGER : 2), ledgerheight + y); cairo_line_to (cr, xx + width + ((ledgerheight == lesserheight) ? EXTRA_ON_LEDGER : 2), ledgerheight + y); } cairo_stroke (cr); } /** * Draw the chord object on the score * returns the highest y value drawn at */ gint draw_chord (cairo_t * cr, objnode * curobj, gint xx, gint y, gint mwidth, gint * accs, gboolean selected, gboolean at_cursor) { gint highest = 0; static gunichar upstem_char[SMALLESTDURATION + 1] = { 0, 0, 0, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbd }; static gunichar downstem_char[SMALLESTDURATION + 1] = { 0, 0, 0, 0xbe, 0xc1, 0xc2, 0xc3, 0xc4, 0xc4 }; DenemoObject *prevmuditem = (DenemoObject *) (curobj->prev ? curobj->prev->data : NULL); DenemoObject *mudelaitem = (DenemoObject *) curobj->data; DenemoObject *nextmuditem = (DenemoObject *) (curobj->next ? curobj->next->data : NULL); chord thechord = *(chord *) mudelaitem->object; gint duration = thechord.baseduration; gint noteheadtype = MIN (duration, 2); /* Change those two so that they're cached instead */ if (duration < 0) noteheadtype = 0; gint i; gint beampainty, arcwidth; gint prevbaseduration, nextbaseduration; GList *curnode; gint is_grace = (thechord.notes ? thechord.is_grace : 0); DenemoGraphic *override_notehead = NULL; //overriding notehead to be used for all notes of chord unless built-in or overriden gint gx = 0, gy = 0; //positioning for overriding notehead if (cr) { cairo_save (cr); cairo_set_line_width (cr, 1.0); if (is_grace) { note *thenote = (note *) thechord.notes->data; cairo_translate (cr, xx, y + thenote->y); cairo_scale (cr, 0.8, 0.8); cairo_translate (cr, -xx, -(y + thenote->y)); } //g_debug("Invisible is %d\n", mudelaitem->isinvisible); if (mudelaitem->isinvisible) { if (selected) cairo_set_source_rgb (cr, 231.0 / 255, 1, 39.0 / 255); else if (Denemo.project->movement->recording) cairo_set_source_rgba (cr, 180.0 / 255, 160.0 / 255, 32.0 / 255, 0.4); // yellow for non printing else cairo_set_source_rgb (cr, 180.0 / 255, 160.0 / 255, 32.0 / 255); // yellow for non printing } if (thechord.slur_begin_p) draw_slur_start (cr, xx, y); if (thechord.slur_end_p) draw_slur_end (cr, xx, y); if (thechord.crescendo_begin_p) drawlargetext_cr (cr, "ð†’", xx - 10, y + STAFF_HEIGHT + 10); //FIXME the cresc musical sign is too small, hence largetext, but | is then too large if (thechord.crescendo_end_p) drawlargetext_cr (cr, "ð†’.", xx + 10, y + STAFF_HEIGHT + 10); if (thechord.diminuendo_begin_p) drawlargetext_cr (cr, "ð†“", xx - 10, y + STAFF_HEIGHT + 10); if (thechord.diminuendo_end_p) drawlargetext_cr (cr, "ð†“·", xx + 10, y + STAFF_HEIGHT + 10); } gboolean override_chord_graphic = FALSE; if (cr) { GList *g; gint count = 0; for (g = thechord.directives; g; g = g->next) { DenemoDirective *directive = (DenemoDirective *) g->data; guint layout = selected_layout_id (); gdouble only = (directive->layouts && !wrong_layout (directive, layout)) ? 0.5 : 0.0; gdouble exclude = (directive->layouts && wrong_layout (directive, layout)) ? 0.9 : 0.0; if (wrong_layout (directive, layout)) exclude = 0.9; if (exclude > 0.0 || only > 0.0) { cairo_save (cr); cairo_set_source_rgba (cr, 0.4 + exclude - only / 2, 0.5 + only, 0.4 - only / 2, at_cursor ? 1.0 : 0.7); //cairo_set_source_rgba (cr, 0.4 + exclude, 0.5 + only, 0.4, at_cursor ? 1.0 : 0.5); green is too pale. } if (directive->graphic) { if ((directive->override & DENEMO_OVERRIDE_GRAPHIC)) override_chord_graphic = TRUE; if ((directive->override & DENEMO_OVERRIDE_GRAPHIC)) { if (directive->override & DENEMO_ALT_OVERRIDE) { gx = directive->gx; gy = directive->gy; override_notehead = directive->graphic; //will be used to draw all the notes/the rest } else { draw_selection_shading (cr, directive, xx + directive->gx, y + STAFF_HEIGHT + 40 + directive->gy - 4, MAX (directive->graphic->width, 8.0)); drawbitmapinverse_cr (cr, directive->graphic, xx + directive->gx - directive->graphic->width / 2, y + STAFF_HEIGHT + 40 + directive->gy - directive->graphic->height / 2, FALSE); } } else { //this directive's graphic does not override entire chord (other ones may) if (directive->override & DENEMO_ALT_OVERRIDE) { //ALT_OVERRIDE makes the positioning stem sensitive //FIXME - use count to stack up multiple markings gdouble yval = (thechord.is_stemup ? (y + thechord.lowesty + 8 + count + directive->gy) : (y + thechord.highesty - 8 - count - directive->gy)); draw_selection_shading (cr, directive, xx + directive->gx, yval - 4, MAX (directive->graphic->width, 8.0)); drawbitmapinverse_cr (cr, directive->graphic, xx + directive->gx - directive->graphic->width / 2 + 4, yval - directive->graphic->height / 2, thechord.is_stemup); if (!thechord.is_stemup) highest = ((y + thechord.highesty + directive->gy - 16 - 2 * count) - directive->graphic->height / 2); } else { if (directive->override & DENEMO_OVERRIDE_ABOVE) { gint posy; if (thechord.highesty < 0) posy = y - 14 + thechord.highesty - count + directive->gy; else posy = y + 1 - count - STAFF_HEIGHT / 2 + directive->gy; draw_selection_shading (cr, directive, xx + directive->gx, posy - 4, MAX (directive->graphic->width, 8.0)); drawbitmapinverse_cr (cr, directive->graphic, xx + directive->gx - directive->graphic->width / 2, posy + directive->graphic->height / 2, FALSE); } else { draw_selection_shading (cr, directive, xx + directive->gx, y + STAFF_HEIGHT + 8 + thechord.lowesty + count + directive->gy - 4, MAX (directive->graphic->width, 8.0)); drawbitmapinverse_cr (cr, directive->graphic, xx + directive->gx - directive->graphic->width / 2, y + STAFF_HEIGHT + 8 + thechord.lowesty + count + directive->gy - directive->graphic->height / 2, FALSE); } } } } if (directive->display) { #define MAXLEN (8) gchar c = 0; //if it is a long string only show it all when cursor is on it also only display from first line gchar *p; for (p = directive->display->str; *p; p++) { if (*p == '\n' || (!at_cursor && (p - directive->display->str) > MAXLEN)) { c = *p; *p = 0; break; } } draw_selection_shading (cr, directive, xx + directive->tx + 4, y + ((thechord.highesty > -10) ? -10 : thechord.highesty) - 8 - 4 + count + directive->ty, 8); drawnormaltext_cr (cr, directive->display->str, xx + directive->tx, y + ((thechord.highesty > -10) ? -10 : thechord.highesty) - 8 + count + directive->ty); highest = y + ((thechord.highesty > -10) ? -10 : thechord.highesty) - 8 + count + directive->ty - 10 /*for height of text */ ; if (c) { *p = c; } } count += 16; if (exclude > 0.0 || only > 0.0) cairo_restore (cr); } //for each chord directive } //if drawing do chord directives if ((!override_chord_graphic) || (override_chord_graphic && override_notehead)) { if (!thechord.notes /* a rest */ ) { if (cr) draw_rest (cr, MAX (duration, 0), thechord.numdots, xx, y, override_notehead, gx, gy); } else { /* Draw the noteheads and accidentals */ for (curnode = thechord.notes; curnode; curnode = curnode->next) { note *thenote = (note *) curnode->data; draw_notehead (cr, thenote, duration, thechord.numdots, xx, y, accs, thechord.is_stemup, override_notehead, gx, gy, at_cursor, mudelaitem->isinvisible); } } } if (!cr) return highest; /* Now the stem and beams. This is complicated. */ if (thechord.notes /* not a rest */ ) { if (thechord.is_stemup) { if (!override_chord_graphic) { if (mudelaitem->isstart_beamgroup && mudelaitem->isend_beamgroup) { if (duration >= 3) /* Up-pointing stem pixmap */ drawfetachar_cr (cr, upstem_char[duration], xx + NOTEHEAD_WIDTH, thechord.highesty + y + 3 - (duration == 6 ? EXTRA_STEM_HEIGHT : STEM_HEIGHT)); } else if (nextmuditem && !mudelaitem->isend_beamgroup) { /* Draw the thin beam across the gap */ cairo_rectangle (cr, xx + headwidths[noteheadtype] - 1, y + thechord.stemy, nextmuditem->x - mudelaitem->x, THINBEAM_HEIGHT); cairo_fill (cr); if (mudelaitem->isstart_beamgroup || !prevmuditem) prevbaseduration = 0; else prevbaseduration = ((chord *) prevmuditem->object)->baseduration; nextbaseduration = ((chord *) nextmuditem->object)->baseduration; for (i = 4, beampainty = thechord.stemy + FIRSTBEAMSPACE; i <= thechord.baseduration; i++, beampainty += SUBSQBEAMSPACE) { if (nextbaseduration >= i) { /* Draw a thick beam across the gap */ cairo_rectangle (cr, xx + headwidths[noteheadtype] - 1, y + beampainty, nextmuditem->x - mudelaitem->x, THICKBEAM_HEIGHT); cairo_fill (cr); } else if (prevbaseduration < i) { /* Draw a stub to the right of the staff */ cairo_rectangle (cr, xx + headwidths[noteheadtype] - 1, y + beampainty, STUB_WIDTH, THICKBEAM_HEIGHT); cairo_fill (cr); } } /* end for loop */ } /* end drawing for non-end-beamgroup notes */ else { /* We're at the end of a beamgroup */ if (prevmuditem) for (i = MAX (((chord *) prevmuditem->object)->baseduration + 1, 4), beampainty = thechord.stemy + FIRSTBEAMSPACE + (SUBSQBEAMSPACE * (i - 4)); i <= thechord.baseduration; i++, beampainty += SUBSQBEAMSPACE) { /* Draw a stub to the left of the staff */ cairo_rectangle (cr, xx + headwidths[noteheadtype] - 1 - STUB_WIDTH, y + beampainty, STUB_WIDTH, THICKBEAM_HEIGHT); cairo_fill (cr); } } if (duration > 0) { /* Vertical line */ cairo_move_to (cr, xx + headwidths[noteheadtype], thechord.stemy + y); cairo_line_to (cr, xx + headwidths[noteheadtype], thechord.lowesty + y - 2); if (is_grace & ACCIACCATURA) { cairo_set_line_width (cr, 2.0); cairo_move_to (cr, xx + headwidths[noteheadtype] - 3, thechord.lowesty + y - 2 - 4); cairo_line_to (cr, xx + headwidths[noteheadtype] + 6, thechord.stemy + y); } cairo_stroke (cr); } } //if graphic not overrriden /* Now draw the tie, if appropriate */ if (thechord.is_tied) { if (nextmuditem) arcwidth = nextmuditem->x - mudelaitem->x; else arcwidth = mwidth - mudelaitem->x + SPACE_FOR_BARLINE; cairo_set_line_width (cr, 2.0); cairo_move_to (cr, xx + headwidths[noteheadtype] / 2, y + thechord.highesty - 13); cairo_rel_curve_to (cr, arcwidth / 3, -8, arcwidth * 2 / 3, -8, arcwidth, 0); cairo_stroke (cr); } } /* End stemup stuff */ else { if (!override_chord_graphic) { /* chord is stemdown */ if (mudelaitem->isstart_beamgroup && mudelaitem->isend_beamgroup) { if (duration >= 3) /* Down-pointing stem */ drawfetachar_cr (cr, downstem_char[duration], xx, thechord.lowesty + y + (duration == 6 ? EXTRA_STEM_HEIGHT : STEM_HEIGHT)); } else if ((nextmuditem) && !mudelaitem->isend_beamgroup) { /* Draw the thin beam across the gap */ cairo_rectangle (cr, xx, y + thechord.stemy - THINBEAM_HEIGHT + 1, nextmuditem->x - mudelaitem->x, THINBEAM_HEIGHT); cairo_fill (cr); if (mudelaitem->isstart_beamgroup || !prevmuditem) prevbaseduration = 0; else prevbaseduration = ((chord *) prevmuditem->object)->baseduration; nextbaseduration = ((chord *) nextmuditem->object)->baseduration; for (i = 4, beampainty = thechord.stemy - FIRSTBEAMSPACE - THICKBEAM_HEIGHT + 1; i <= thechord.baseduration; i++, beampainty -= SUBSQBEAMSPACE) { if (nextbaseduration >= i) { /* Draw a thick beam across the gap */ cairo_rectangle (cr, xx, y + beampainty, nextmuditem->x - mudelaitem->x, THICKBEAM_HEIGHT); cairo_fill (cr); } else if (prevbaseduration < i) { /* Draw a stub to the right of the staff */ cairo_rectangle (cr, xx, y + beampainty, STUB_WIDTH, THICKBEAM_HEIGHT); cairo_fill (cr); } } /* End for loop */ } /* End drawing for non-end-beamgroup notes */ else { /* We're at the end of a beamgroup */ if (prevmuditem) //sanity check for (i = MAX (((chord *) prevmuditem->object)->baseduration, 4), beampainty = thechord.stemy - FIRSTBEAMSPACE - THICKBEAM_HEIGHT + 1 - (SUBSQBEAMSPACE * (i - 4)); i <= thechord.baseduration; i++, beampainty -= SUBSQBEAMSPACE) { /* Draw a stub to the left of the staff */ cairo_rectangle (cr, xx - STUB_WIDTH, y + beampainty, STUB_WIDTH, THICKBEAM_HEIGHT); cairo_fill (cr); } } if (duration > 0) { /* Vertical line */ cairo_move_to (cr, xx, thechord.highesty + y + 2); cairo_line_to (cr, xx, thechord.stemy + y); cairo_stroke (cr); } } /* Now draw the tie, if appropriate */ if (thechord.is_tied) { if (nextmuditem) arcwidth = nextmuditem->x - mudelaitem->x; else arcwidth = mwidth - mudelaitem->x + SPACE_FOR_BARLINE; cairo_set_line_width (cr, 2.0); cairo_move_to (cr, xx + headwidths[noteheadtype] / 2, y + thechord.highesty - 13); cairo_rel_curve_to (cr, arcwidth / 3, -8, arcwidth * 2 / 3, -8, arcwidth, 0); cairo_stroke (cr); } } /* End stemdown stuff */ if (is_grace) cairo_restore (cr); draw_ledgers (cr, thechord.highesty, thechord.lowesty, xx, y, headwidths[noteheadtype]); if (is_grace) cairo_save (cr); } /* end if not a rest draw stems etc */ if (cr) cairo_restore (cr); return highest; } denemo-2.2.0/src/display/PaxHeaders.19168/accwidths.h0000644000000000000000000000013213135434036017107 xustar0030 mtime=1500919838.349981806 30 atime=1500919921.653315139 30 ctime=1500919914.213315139 denemo-2.2.0/src/display/accwidths.h0000644000175000017500000000133413135434036020761 0ustar00jjbenhamjjbenham00000000000000/* accwidths.h * holds accidental widths, which is used both in draw_accidental * and setpixelmin * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller, Adam Tee */ #ifndef ACCWIDTHS_H #define ACCWIDTHS_H #include #define NUMACCTYPES 5 #define DOUBLEFLAT_WIDTH 15 #define DOUBLEFLAT_HEIGHT 26 #define DOUBLEFLAT_OFFSET 18 #define FLAT_WIDTH 9 #define FLAT_HEIGHT 26 #define FLAT_OFFSET 18 #define NATURAL_WIDTH 7 #define NATURAL_HEIGHT 30 #define NATURAL_OFFSET 14 #define SHARP_WIDTH 11 #define SHARP_HEIGHT 32 #define SHARP_OFFSET 15 #define DOUBLESHARP_WIDTH 10 #define DOUBLESHARP_HEIGHT 10 #define DOUBLESHARP_OFFSET 5 #define EXTRABACKOFF 3 extern gint accwidths[NUMACCTYPES]; #endif denemo-2.2.0/src/display/PaxHeaders.19168/drawingprims.h0000644000000000000000000000013213135434036017644 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.679981806 30 ctime=1500919914.229981805 denemo-2.2.0/src/display/drawingprims.h0000644000175000017500000000362213135434036021520 0ustar00jjbenhamjjbenham00000000000000/* drawingprims.h * header file for the drawing primitive .c files, * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #include void draw_ledgers (cairo_t * cr, gint greaterheight, gint lesserheight, gint xx, gint y, gint width); gint draw_chord (cairo_t * cr, objnode * curobj, gint xx, gint y, gint mwidth, gint * accs, gboolean selected, gboolean at_cursor); void draw_tuplet (cairo_t * cr, objnode * curobj, gint xx, gint y, gint mwidth, gint * accs); void draw_clef (cairo_t * cr, gint xx, gint y, clef * type); gint draw_key (cairo_t * cr, gint xx, gint y, gint number, gint prevnumber, gint dclef, gint wetrun, keysig * keysig); void draw_timesig (cairo_t * cr, gint xx, gint y, gint time1, gint time2, timesig * timesig); void draw_tupbracket (cairo_t * cr, gint xx, gint y, DenemoObject * theobj, gint start); void draw_cursor (cairo_t * cr, DenemoMovement * si, gint xx, gint y, gint last_gap, gint minpixels, gint dclef); void draw_accidental (cairo_t * cr, gint xx, gint aggheight, gint enshift); void draw_selection (cairo_t * cr, gint x1, gint y1, gint x2, gint y2); void draw_stem_directive (cairo_t * cr, gint xx, gint y, DenemoObject * theobj); void draw_dynamic (cairo_t * cr, gint xx, gint y, DenemoObject * theobj); void draw_lily_dir (cairo_t * cr, gint xx, gint y, gint highy, gint lowy, DenemoObject * theobj, gboolean selected, gboolean at_cursor); void draw_gracebracket (cairo_t * cr, gint xx, gint y, DenemoObject * theobj); gint calc_offset (chord thechord, gint stemdir); void draw_articulations (cairo_t * cr, chord thechord, gint xx, gint y); void draw_lyric (cairo_t * cr, gint xx, gint y, gchar * syllable); void draw_figure (cairo_t * cr, gint xx, gint y, DenemoObject * theobj); void draw_fakechord (cairo_t * cr, gint xx, gint y, DenemoObject * theobj); void drawbarline (cairo_t * cr, gint xx, gint top_y, gint y, gint type); denemo-2.2.0/src/display/PaxHeaders.19168/drawdynamic.c0000644000000000000000000000013213135434036017433 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.679981806 30 ctime=1500919914.223315139 denemo-2.2.0/src/display/drawdynamic.c0000644000175000017500000000105713135434036021307 0ustar00jjbenhamjjbenham00000000000000/* drawdynamic.cpp * * Functions for drawing stemming directives * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Adam Tee */ #include "core/utils.h" /* Includes */ #include #include /** * Draw the given dynamic on the score */ void draw_dynamic (cairo_t * cr, gint xx, gint y, DenemoObject * theobj) { gint extra = 10; GString *tmp = NULL; tmp = (GString *) ((chord *) theobj->object)->dynamics->data; drawnormaltext_cr (cr, tmp->str, xx, y + (2 * STAFF_HEIGHT) + extra); } denemo-2.2.0/src/display/PaxHeaders.19168/displayanimation.h0000644000000000000000000000013213135434036020503 xustar0030 mtime=1500919838.349981806 30 atime=1500919921.679981806 30 ctime=1500919914.216648472 denemo-2.2.0/src/display/displayanimation.h0000644000175000017500000000135413135434036022357 0ustar00jjbenhamjjbenham00000000000000/* displayanimation.h header file for functions that animate transitions in the Denemo display, for Denemo, a gtk+ frontend to GNU Lilypond (c) 2012 Richard Shann */ #include #ifndef DISPLAYANIMATION_H #define DISPLAYANIMATION_H void set_viewport_transition (gint amount); void set_staff_transition (gint amount); void set_movmement_transition (gint amount); void set_measure_transition (gint amount, gboolean all); void set_cursor_transition (void); gdouble transition_offset (void); gdouble transition_cursor_scale (void); gdouble measure_transition_offset (gboolean current); gdouble staff_transition_offset (void); gdouble movement_transition_offset (void); void set_movement_transition (gint amount); #endif denemo-2.2.0/src/display/PaxHeaders.19168/drawclefs.c0000644000000000000000000000013213135434036017103 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.689981805 30 ctime=1500919914.219981805 denemo-2.2.0/src/display/drawclefs.c0000644000175000017500000000430413135434036020755 0ustar00jjbenhamjjbenham00000000000000/* drawclefs.cpp * functions for drawing clefs * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller, Adam Tee */ #include "core/utils.h" /* Includes gtk.h */ #include #define NUMCLEFTYPES DENEMO_INVALID_CLEF #define TREBLE_TOPOFFSET 30 #define BASS_TOPOFFSET 10 #define ALTO_TOPOFFSET 20 #define G_8_TOPOFFSET 30 #define TENOR_TOPOFFSET 10 #define SOPRANO_TOPOFFSET 40 #define FRENCH_TOPOFFSET 40 #define BARITONE_TOPOFFSET 0 /** * This function draws the clef appropriate for the current context * onto the backing pixmap */ void draw_clef (cairo_t * cr, gint xx, gint y, clef * clef) { gint type = clef->type; static gint clefoffsets[NUMCLEFTYPES] = { TREBLE_TOPOFFSET, BASS_TOPOFFSET, ALTO_TOPOFFSET, G_8_TOPOFFSET, TENOR_TOPOFFSET, SOPRANO_TOPOFFSET, BASS_TOPOFFSET, FRENCH_TOPOFFSET, BARITONE_TOPOFFSET }; static gunichar clef_char[NUMCLEFTYPES] = { 0xc9, 0xc7, 0xc5, 0xc9, 0xc5, 0xc5, 0xc7, 0xc9, 0xc5 }; gint override = 0; if (clef->directives) { gint count = 0; GList *g = clef->directives; for (; g; g = g->next, count++) { DenemoDirective *directive = g->data; override = override | directive->override; if (directive->display) { drawnormaltext_cr (cr, directive->display->str, xx + directive->tx, y + count * 10); } if (directive->graphic) { #ifdef G_OS_WIN32 y-= 4; // bizarrely clefs are drawn slightly too low using the windows routine windows_draw_text() in utils.c while standalone and notehead overrides need +4 drawbitmapinverse_cr (cr, directive->graphic, xx + directive->gx + count, y + directive->gy, FALSE); #else drawbitmapinverse_cr (cr, directive->graphic, xx + directive->gx + count, y + directive->gy, FALSE); #endif } } } if (!(DENEMO_OVERRIDE_GRAPHIC & override)) { drawfetachar_cr (cr, clef_char[type], xx, y + clefoffsets[type]); if (type == DENEMO_G_8_CLEF) drawnormaltext_cr (cr, "8", xx + 8, y + 65); if (type == DENEMO_F_8_CLEF) drawnormaltext_cr (cr, "8", xx + 8, y + 55); } } denemo-2.2.0/src/display/PaxHeaders.19168/drawlilydir.c0000644000000000000000000000013213135434036017457 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.689981805 30 ctime=1500919914.233315139 denemo-2.2.0/src/display/drawlilydir.c0000644000175000017500000000743213135434036021336 0ustar00jjbenhamjjbenham00000000000000/* drawlilydir.cpp * * Functions for drawing stemming directives * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999, 2000, 2001, 2002 Adam Tee, 2008, 2009 Richard Shann */ #include "core/utils.h" /* Includes */ #include "command/lilydirectives.h" #include "command/scorelayout.h" #include #include #include /** * Draw a standalone Denemo directive on the score as a vertical bar or graphic and/or text * */ void draw_lily_dir (cairo_t * cr, gint xx, gint y, gint highy, gint lowy, DenemoObject * theobj, gboolean selected, gboolean at_cursor) { DenemoDirective *directive = ((lilydirective *) theobj->object); gchar *first = (directive->postfix && directive->postfix->len) ? directive->postfix->str : " "; guint layout = selected_layout_id (); gdouble only = (directive->layouts && !wrong_layout (directive, layout)) ? 0.5 : 0.0; gdouble exclude = (directive->layouts && wrong_layout (directive, layout)) ? 0.9 : 0.0; //if (lily->y && lily->y != layout) // exclude = 0.9; cairo_save (cr); selected ? cairo_set_source_rgba (cr, 0.0, 0.0, 1.0, at_cursor ? 1.0 : 0.5) : directive->graphic ? cairo_set_source_rgb (cr, 0.0 + exclude, 0.0 + only, 0.0) : cairo_set_source_rgba (cr, 0.4 + exclude, 0.5 + only, 0.4, at_cursor ? 1.0 : 0.5); if (directive->graphic) { //FIXME there may be scripts expecting a different positioning code gdouble gx = xx + directive->gx - (((DenemoGraphic *) directive->graphic)->width) / 2; gdouble gy = y + MID_STAFF_HEIGHT + directive->gy - (((DenemoGraphic *) directive->graphic)->height) / 2; drawbitmapinverse_cr (cr, (DenemoGraphic *) directive->graphic, gx, gy, FALSE); } if ((directive->graphic==NULL) || (!(directive->override&DENEMO_OVERRIDE_GRAPHIC)) || ((directive->minpixels/2 - abs(directive->gx)) < 0)) //show position of standalone directive unless override graphic is set or graphic is displaced too far from object position { at_cursor ? cairo_set_source_rgba (cr, 0.2 + exclude, 0.3 + only, 0.8, 0.5) : cairo_set_source_rgba (cr, 0.4 + exclude, 0.5 + only, 0.4, 0.5); cairo_rectangle (cr, xx + 10, y - 20, 2, STAFF_HEIGHT + 26); cairo_arc (cr, xx + 10 + 1.5, y - 20, 6, 0.0, 2 * M_PI); cairo_fill (cr); cairo_move_to (cr, xx + 10, y - 20); cairo_line_to (cr, xx + 10 + directive->gx, y + MID_STAFF_HEIGHT + directive->gy); cairo_stroke (cr); } if (directive->display) { //store display position x,y as well #define MAXLEN (4) gchar c = 0; //if it is a long string only show it all when cursor is on it, also only display from first line gchar *p; for (p = directive->display->str; *p; p = g_utf8_next_char (p)) { if (*p == '\n' || (!at_cursor && (p - directive->display->str) > MAXLEN)) { c = *p; *p = 0; break; } } if (at_cursor) cairo_set_source_rgba (cr, exclude, only, 0.0, 1.0), drawlargetext_cr (cr, directive->display->str, xx + directive->tx, y + lowy + directive->ty - 8); else drawnormaltext_cr (cr, directive->display->str, xx + directive->tx, y + lowy + directive->ty - 8); if (c) { *p = c; } } else //FIXME do this by creating a display field if ((!directive->graphic) && (*first == '%' || *first == '^' || *first == '_')) { //display comments, and markup above and below if (at_cursor) cairo_set_source_rgba (cr, exclude, only, 0.0, 1.0), drawlargetext_cr (cr, first + 1, xx, *first == '_' ? y + lowy + 20 : y - highy - 20); else drawnormaltext_cr (cr, first + 1, xx, *first == '_' ? y + lowy + 20 : y - highy - 20); } cairo_restore (cr); } denemo-2.2.0/src/display/PaxHeaders.19168/drawselection.c0000644000000000000000000000013213135434036017774 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.689981805 30 ctime=1500919914.236648472 denemo-2.2.0/src/display/drawselection.c0000644000175000017500000000071713135434036021652 0ustar00jjbenhamjjbenham00000000000000/* drawselection.cpp * draws a blue bounding box around the currently selected music * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999, 2000, 2001, 2002 Matthew Hiller */ #include "display/drawingprims.h" #include "core/utils.h" /** * Draw rectangle around the current selection * */ void draw_selection (cairo_t * cr, gint x1, gint y1, gint x2, gint y2) { cairo_rectangle (cr, x1 - 5, y1 - 20, x2 - x1, y2 - y1 + 40); cairo_stroke (cr); } denemo-2.2.0/src/display/PaxHeaders.19168/displayanimation.c0000644000000000000000000000013213135434036020476 xustar0030 mtime=1500919838.349981806 30 atime=1500919921.696648472 30 ctime=1500919914.216648472 denemo-2.2.0/src/display/displayanimation.c0000644000175000017500000001141413135434036022350 0ustar00jjbenhamjjbenham00000000000000// displayanimation.c // // Copyright 2012 Richard Shann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA 02110-1301, USA. #include "display/displayanimation.h" #include "display/draw.h" #define TRANSITION_MS (20) static gint transition_steps = 0; static gint transition_amount; //number of bars being moved to left, negative means to the right. static gint cursor_steps = 0; static gint measure_transition_steps = 0; static gint measure_transition_amount = 0; static gboolean measure_all = FALSE; static gint staff_transition_amount = 0; static gint staff_transition_steps = 0; static gint movement_transition_amount = 0; static gint movement_transition_steps = 0; static gint cursor_transition (void) { draw_score_area(); return --cursor_steps; } static gboolean transition (void) { //g_debug("Transition %d current bar= %d\n", transition_steps, transition_amount); if (transition_steps == 1) { set_cursor_transition (); } draw_score_area(); return --transition_steps; } static gboolean staff_transition (void) { //g_debug("Transition %d current bar= %d\n", transition_steps, transition_amount); if (staff_transition_steps == 1) { set_cursor_transition (); } draw_score_area(); return --staff_transition_steps; } static gboolean movement_transition (void) { if (movement_transition_steps == 1) { set_cursor_transition (); } draw_score_area(); return --movement_transition_steps; } static gboolean measure_transition (void) { //g_debug("Measure transition %d current bar= %d\n", measure_steps, measure_amount); if (measure_transition_steps == 1) { set_cursor_transition (); } draw_score_area(); return --measure_transition_steps; } gdouble transition_offset (void) { if (Denemo.project->view == DENEMO_PAGE_VIEW) return 0.0; return (gdouble) transition_steps *transition_amount * Denemo.project->movement->measurewidth / 10; } gdouble staff_transition_offset (void) { if (Denemo.project->view == DENEMO_PAGE_VIEW) return 0.0; return (gdouble) staff_transition_steps *staff_transition_amount; } gdouble movement_transition_offset (void) { if (Denemo.project->view == DENEMO_PAGE_VIEW) return 0.0; return (gdouble) movement_transition_steps *movement_transition_amount; } gdouble measure_transition_offset (gboolean current) { if (Denemo.project->view == DENEMO_PAGE_VIEW) return 0.0; if (current || measure_all) return (gdouble) measure_transition_steps *measure_transition_amount; else return 0.0; } gdouble transition_cursor_scale (void) { return cursor_steps ? (gdouble) cursor_steps : 1.0; } void set_viewport_transition (gint amount) { if (transition_steps) return; if (movement_transition_steps) return; if (Denemo.prefs.cursor_highlight && amount) { transition_amount = amount; transition_steps = 10; g_timeout_add (TRANSITION_MS, (GSourceFunc) transition, NULL); } } void set_measure_transition (gint amount, gboolean all) { if (measure_transition_steps) return; if (Denemo.prefs.cursor_highlight && amount) { measure_transition_amount = amount; measure_transition_steps = 10; measure_all = all; g_timeout_add (TRANSITION_MS, (GSourceFunc) measure_transition, NULL); } } void set_cursor_transition (void) { if (Denemo.prefs.cursor_highlight && cursor_steps == 0) { cursor_steps = 10; g_timeout_add (TRANSITION_MS, (GSourceFunc) cursor_transition, NULL); } } void set_staff_transition (gint amount) { if (movement_transition_steps) return; if (Denemo.prefs.cursor_highlight && staff_transition_steps == 0) { staff_transition_steps = 10; staff_transition_amount = amount; g_timeout_add (TRANSITION_MS, (GSourceFunc) staff_transition, NULL); } } void set_movement_transition (gint amount) { if (Denemo.prefs.cursor_highlight && movement_transition_steps == 0) { movement_transition_steps = 20; movement_transition_amount = amount; g_timeout_add (TRANSITION_MS, (GSourceFunc) movement_transition, NULL); } } denemo-2.2.0/src/display/PaxHeaders.19168/drawlyric.c0000644000000000000000000000013213135434036017131 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.696648472 30 ctime=1500919914.236648472 denemo-2.2.0/src/display/drawlyric.c0000644000175000017500000000061013135434036020777 0ustar00jjbenhamjjbenham00000000000000/* drawlyric.cpp * * function to display Lyrics on score * for Denemo, a gtk+ frontend to GNU Lilypond * * (c) 2002 Adam Tee */ #include "core/utils.h" #include #include /** * Draw lyrics on the score * */ void draw_lyric (cairo_t * cr, gint xx, gint y, gchar * text) { drawnormaltext_cr (cr, text, xx, y + STAFF_HEIGHT + 16); } denemo-2.2.0/src/display/PaxHeaders.19168/drawbarline.c0000644000000000000000000000013213135434036017423 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.706648472 30 ctime=1500919914.219981805 denemo-2.2.0/src/display/drawbarline.c0000644000175000017500000000232113135434036021272 0ustar00jjbenhamjjbenham00000000000000/** * drawbarline.cpp * Routines to draw barlines * * (c) Adam Tee 2002-2005 */ #include "display/drawingprims.h" #include "core/utils.h" /** * Draw a given barline on the score given the type * */ void drawbarline (cairo_t * cr, gint xx, gint top_y, gint y, gint type) { if (type == ORDINARY_BARLINE) { g_debug ("Ordinary Co-ords (%d,%d) - (%d,%d) ", xx, top_y, xx, y); //gdk_draw_line (pixmap, gc, xx, top_y, xx, y); cairo_move_to (cr, xx, top_y); cairo_line_to (cr, xx + 10, y); cairo_stroke (cr); } else if (type == DOUBLE_BARLINE) { cairo_move_to (cr, xx, top_y); cairo_line_to (cr, xx, y); cairo_move_to (cr, xx + 5, top_y); cairo_line_to (cr, xx + 5, y); cairo_stroke (cr); //gdk_draw_line (pixmap, gc, xx, top_y, xx, y); //gdk_draw_line (pixmap, gc, xx + 5, top_y, xx + 5, y); } else if (type == END_BARLINE) { cairo_move_to (cr, xx - 3, top_y); cairo_line_to (cr, xx - 3, y); cairo_stroke (cr); cairo_rectangle (cr, xx, top_y, 4, y); cairo_fill (cr); //gdk_draw_line (pixmap, gc, xx - 3, top_y, xx - 3, y); //gdk_draw_rectangle (pixmap, gc, TRUE, xx, top_y, 4, y); } } denemo-2.2.0/src/display/PaxHeaders.19168/drawfigure.c0000644000000000000000000000013213135434036017270 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.706648472 30 ctime=1500919914.226648473 denemo-2.2.0/src/display/drawfigure.c0000644000175000017500000000400113135434036021134 0ustar00jjbenhamjjbenham00000000000000/* drawfigure.cpp * * function to display Figured Bass figures on score * for Denemo, a gtk+ frontend to GNU Lilypond * * (c) 2003-2005 Richard Shann */ #include "core/utils.h" #include #include /** * Draw figured bass on the score * */ void draw_figure (cairo_t * cr, gint xx, gint y, DenemoObject * theobj) { chord *ch; if (theobj->type == CHORD) { GString *gstr = g_string_new (""); ch = (chord *) theobj->object; gint ystep = 0, xstep = 0; gint accs = FALSE; gchar *orig = ((GString *) (ch->figure))->str; gchar *str = orig; while (*str) { if (*str == '+') { accs = TRUE, g_string_append (gstr, "♯"); } else if (*str == '-') { accs = TRUE, g_string_append (gstr, "â™­"); } else if (*str == '!') { accs = TRUE, g_string_append (gstr, "â™®"); } else if (*str == '_') { /*do nothing */ ; } else if (*str == '|') { drawlargetext_cr (cr, gstr->str, xx + xstep, y + STAFF_HEIGHT + 20 + ystep); ystep = 0; xstep += 25 + (accs ? 10 : 0); g_string_assign (gstr, ""); accs = FALSE; } else if (*str == ' ') { if (gstr->len) { drawlargetext_cr (cr, gstr->str, xx + xstep, y + STAFF_HEIGHT + 20 + ystep); ystep += 20; g_string_assign (gstr, ""); } } else { g_string_append_c (gstr, *str); } str++; if (*str == 0) { drawlargetext_cr (cr, gstr->str, xx + xstep, y + STAFF_HEIGHT + 20 + ystep); break; } } g_string_free (gstr, TRUE); } //g_debug ("%s\n", text); } denemo-2.2.0/src/display/PaxHeaders.19168/drawtuplets.c0000644000000000000000000000013213135434036017507 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.706648472 30 ctime=1500919914.243315139 denemo-2.2.0/src/display/drawtuplets.c0000644000175000017500000000347413135434036021370 0ustar00jjbenhamjjbenham00000000000000/* drawtuplets.cpp * * Functions for drawing tuplet indications * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999, 2000, 2001, 2002 Matthew Hiller */ #include "core/utils.h" /* Includes */ #include /** * Draw tuplet directive on the score * */ void draw_tupbracket (cairo_t * cr, gint xx, gint y, DenemoObject * theobj, gint start) { #define BRACKET_HEIGHT (20) #define GAP (10) static GString *tupopentext = NULL; if (!tupopentext) tupopentext = g_string_new (NULL); cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.4); if (((tuplet *) theobj->object)->directives) draw_for_directives (cr, ((tuplet *) theobj->object)->directives, xx, y - 4, TRUE); else { if (theobj->type == TUPOPEN) { g_string_sprintf (tupopentext, "%d", ((tupopen *) theobj->object)->denominator); //save number for end tuplet call cairo_rectangle (cr, xx - 2, y - BRACKET_HEIGHT, 2, 15); //small vertical } else { cairo_rectangle (cr, xx + GAP - 3, y - BRACKET_HEIGHT, 2, 15); if (start) { cairo_rectangle (cr, start - 2, y - BRACKET_HEIGHT, 2, 15); //small vertical at start tuplet cairo_rectangle (cr, start - 2, y - BRACKET_HEIGHT, (xx - start) / 2 - GAP + 2, 2); // draw line from start tuplet position to half way less gap drawnormaltext_cr (cr, tupopentext->str, (xx + start) / 2, y - BRACKET_HEIGHT + 4); //print number in gap cairo_rectangle (cr, 2 * GAP + (xx + start) / 2, y - BRACKET_HEIGHT, (xx - start) / 2 - GAP - 3, 2); //draw line rest of way } else { drawnormaltext_cr (cr, "End", xx, y - BRACKET_HEIGHT); } } cairo_fill (cr); } } denemo-2.2.0/src/display/PaxHeaders.19168/calculatepositions.h0000644000000000000000000000013213135434036021043 xustar0030 mtime=1500919838.349981806 30 atime=1500919921.723315139 30 ctime=1500919914.213315139 denemo-2.2.0/src/display/calculatepositions.h0000644000175000017500000000060413135434036022714 0ustar00jjbenhamjjbenham00000000000000/* calculatepositions.h * header file for functions that calculate the positions at which score * objects are drawn * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller, Adam Tee */ #include #include "core/twoints.h" void find_xes_in_measure (DenemoMovement * si, gint measurenum); void find_xes_in_all_measures (DenemoMovement * si); denemo-2.2.0/src/display/PaxHeaders.19168/slurs.h0000644000000000000000000000013213135434036016306 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.723315139 30 ctime=1500919914.249981805 denemo-2.2.0/src/display/slurs.h0000644000175000017500000000063213135434036020160 0ustar00jjbenhamjjbenham00000000000000/* slurs.h Functions for drawing slurs - header file for Denemo, a gtk+ frontend to GNU Lilypond (c) 2000-2005 Matthew Hiller */ #include GSList *push_slur_stack (GSList * slur_stack, gint x, gint y); void draw_slur (cairo_t * cr, GSList ** slur_stack, gint x2, gint y, gint y2); void draw_slur_start (cairo_t * cr, gint x, gint y); void draw_slur_end (cairo_t * cr, gint x, gint y); denemo-2.2.0/src/display/PaxHeaders.19168/drawstemdir.c0000644000000000000000000000013213135434036017456 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.723315139 30 ctime=1500919914.239981805 denemo-2.2.0/src/display/drawstemdir.c0000644000175000017500000000154413135434036021333 0ustar00jjbenhamjjbenham00000000000000/* drawstemdir.cpp * * Functions for drawing stemming directives * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999, 2000, 2001, 2002 Matthew Hiller */ #include "core/utils.h" /* Includes */ #include /** * Draw stemming directive * */ void draw_stem_directive (cairo_t * cr, gint xx, gint y, DenemoObject * theobj) { gchar *text = NULL; switch (((stemdirective *) theobj->object)->type) { case DENEMO_STEMUP: text = _("⬆stem"); break; case DENEMO_STEMBOTH: text = _("⬆⬇stems"); break; case DENEMO_STEMDOWN: text = _("⬇stems"); break; } if (((stemdirective *) theobj->object)->directives) draw_for_directives (cr, ((stemdirective *) theobj->object)->directives, xx, y - 4, TRUE); else drawnormaltext_cr (cr, text, xx, y - 4); } denemo-2.2.0/src/display/PaxHeaders.19168/draw.h0000644000000000000000000000013213135434036016073 xustar0030 mtime=1500919838.353315139 30 atime=1500919921.723315139 30 ctime=1500919914.226648473 denemo-2.2.0/src/display/draw.h0000644000175000017500000000130313135434036017741 0ustar00jjbenhamjjbenham00000000000000/* draw.h * prototypes for actual drawing functions * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller, Adam Tee */ #ifndef DRAW_H #define DRAW_H #include #include void region_playhead (); void initialize_playhead (); gint scorearea_configure_event (GtkWidget * widget, GdkEventConfigure * event); extern gint LEFT_MARGIN; #if GTK_MAJOR_VERSION == 3 gint scorearea_draw_event (GtkWidget * widget, cairo_t * cr); #else gint scorearea_draw_event (GtkWidget * widget, GdkEventExpose * event); #endif void update_drawing_cache (void); gboolean draw_score (cairo_t * cr); void set_start_and_end_objects_for_draw(); void draw_score_area(); #endif denemo-2.2.0/src/PaxHeaders.19168/Makefile.in0000644000000000000000000000013213135434044015364 xustar0030 mtime=1500919844.693315139 30 atime=1500919921.726648472 30 ctime=1500919914.033315139 denemo-2.2.0/src/Makefile.in0000644000175000017500000025370413135434044017250 0ustar00jjbenhamjjbenham00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = denemo$(EXEEXT) @HAVE_EVINCE_TRUE@am__append_1 = \ @HAVE_EVINCE_TRUE@ source/source.c \ @HAVE_EVINCE_TRUE@ source/source.h \ @HAVE_EVINCE_TRUE@ source/proof.c \ @HAVE_EVINCE_TRUE@ source/proof.h \ @HAVE_EVINCE_TRUE@ printview/markupview.h \ @HAVE_EVINCE_TRUE@ printview/markupview.c \ @HAVE_EVINCE_TRUE@ printview/printview.h \ @HAVE_EVINCE_TRUE@ printview/printview.c @HAVE_SMF_FALSE@am__append_2 = -I$(top_srcdir)/libs/libsmf @HAVE_SMF_FALSE@am__append_3 = -L$(top_builddir)/libs/libsmf -lsmf subdir = src DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ $(dist_pkgdata_DATA) $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/as-compiler-flag.m4 \ $(top_srcdir)/build/binreloc.m4 $(top_srcdir)/build/gcov.m4 \ $(top_srcdir)/build/gettext.m4 \ $(top_srcdir)/build/glibtests.m4 \ $(top_srcdir)/build/gtk-doc.m4 $(top_srcdir)/build/iconv.m4 \ $(top_srcdir)/build/lib-ld.m4 $(top_srcdir)/build/lib-link.m4 \ $(top_srcdir)/build/lib-prefix.m4 $(top_srcdir)/build/nls.m4 \ $(top_srcdir)/build/po.m4 $(top_srcdir)/build/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libaudiobackend_a_AR = $(AR) $(ARFLAGS) libaudiobackend_a_LIBADD = am__dirstamp = $(am__leading_dot)dirstamp am_libaudiobackend_a_OBJECTS = \ audio/libaudiobackend_a-alsabackend.$(OBJEXT) \ audio/libaudiobackend_a-audiointerface.$(OBJEXT) \ audio/libaudiobackend_a-dummybackend.$(OBJEXT) \ audio/libaudiobackend_a-eventqueue.$(OBJEXT) \ audio/libaudiobackend_a-fluid.$(OBJEXT) \ audio/libaudiobackend_a-jackbackend.$(OBJEXT) \ audio/libaudiobackend_a-jackutil.$(OBJEXT) \ audio/libaudiobackend_a-portaudiobackend.$(OBJEXT) \ audio/libaudiobackend_a-portaudioutil.$(OBJEXT) \ audio/libaudiobackend_a-portmidibackend.$(OBJEXT) \ audio/libaudiobackend_a-portmidiutil.$(OBJEXT) \ audio/libaudiobackend_a-ringbuffer.$(OBJEXT) libaudiobackend_a_OBJECTS = $(am_libaudiobackend_a_OBJECTS) am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)" PROGRAMS = $(bin_PROGRAMS) am__denemo_SOURCES_DIST = audio/audio.h audio/audiocapture.c \ audio/audiocapture.h audio/instrumentname.c \ audio/instrumentname.h audio/midi.c audio/midi.h \ audio/parseinstruments.c audio/parseinstruments.h \ audio/pitchentry.c audio/pitchentry.h audio/pitchrecog.c \ audio/pitchrecog.h audio/playback.c audio/playback.h \ command/changenotehead.c command/changenotehead.h \ command/chord.c command/chord.h command/clef.c command/clef.h \ command/commandfuncs.c command/commandfuncs.h \ command/contexts.c command/contexts.h command/fakechord.c \ command/fakechord.h command/figure.c command/figure.h \ command/grace.c command/grace.h command/keyresponses.c \ command/keyresponses.h command/keysig.c command/keysig.h \ command/lilydirectives.c command/lilydirectives.h \ command/lyric.c command/lyric.h command/measure.c \ command/measure.h command/processstaffname.c \ command/processstaffname.h command/object.c command/object.h \ command/scorelayout.c command/scorelayout.h command/score.c \ command/score.h command/select.c command/select.h \ command/staff.c command/staff.h command/timesig.c \ command/timesig.h command/tuplet.c command/tuplet.h \ core/binreloc.c core/binreloc.h core/denemo_types.c \ core/cache.c core/cache.h core/external.c core/external.h \ core/exportxml.c core/exportxml.h core/graphicseditor.c \ core/graphicseditor.h core/importxml.c core/importxml.h \ core/kbd-custom.c core/kbd-custom.h core/keyboard.c \ core/keyboard.h core/keymapio.c core/keymapio.h core/main.c \ core/palettestorage.c core/palettestorage.h core/prefops.c \ core/prefops.h core/twoints.h core/utils.c core/utils.h \ core/view.c core/view.h core/entries.h display/accwidths.h \ display/calculatepositions.c display/calculatepositions.h \ display/displayanimation.c display/displayanimation.h \ display/drawaccidentals.c display/drawbarline.c display/draw.c \ display/drawclefs.c display/drawcursor.c display/drawdynamic.c \ display/drawfakechord.c display/drawfigure.c display/draw.h \ display/drawingprims.h display/drawkey.c display/drawlilydir.c \ display/drawlyric.c display/drawnotes.c \ display/drawselection.c display/drawstemdir.c \ display/drawtimesig.c display/drawtuplets.c display/hairpin.c \ display/hairpin.h display/notewidths.h display/slurs.c \ display/slurs.h export/audiofile.c export/audiofile.h \ export/exportabc.c export/exportabc.h export/exportlilypond.c \ export/exportlilypond.h export/exportmidi.c \ export/exportmidi.h export/file.c export/file.h \ export/guidedimportmidi.c export/guidedimportmidi.h \ export/importmidi.c export/importmidi.h \ export/importmusicxml.c export/importmusicxml.h export/print.c \ export/print.h export/xmldefs.h scripting/scheme-callbacks.c \ scripting/scheme-callbacks.h scripting/scheme-identifiers.c \ scripting/scheme-identifiers.h scripting/scheme_cb.h \ scripting/scheme.h source/sourceaudio.c source/sourceaudio.h \ printview/svgview.h printview/svgview.c ui/clefdialog.c \ ui/dialogs.h ui/help.c ui/help.h ui/kbd-interface.c \ ui/kbd-interface.h ui/keysigdialog.c ui/keysigdialog.h \ ui/mousing.c ui/mousing.h ui/moveviewport.c ui/moveviewport.h \ ui/mwidthdialog.c ui/palettes.c ui/palettes.h \ ui/virtualkeyboard.c ui/virtualkeyboard.h ui/playbackprops.c \ ui/playbackprops.h ui/prefdialog.c ui/scoreprops.c \ ui/staffpropdialog.c ui/texteditors.c ui/texteditors.h \ ui/timedialog.c ui/tomeasuredialog.c ui/tupletdialog.c \ ui/markup.c ui/markup.h core/menusystem.c core/menusystem.h \ source/source.c source/source.h source/proof.c source/proof.h \ printview/markupview.h printview/markupview.c \ printview/printview.h printview/printview.c @HAVE_EVINCE_TRUE@am__objects_1 = source/source.$(OBJEXT) \ @HAVE_EVINCE_TRUE@ source/proof.$(OBJEXT) \ @HAVE_EVINCE_TRUE@ printview/markupview.$(OBJEXT) \ @HAVE_EVINCE_TRUE@ printview/printview.$(OBJEXT) am_denemo_OBJECTS = audio/audiocapture.$(OBJEXT) \ audio/instrumentname.$(OBJEXT) audio/midi.$(OBJEXT) \ audio/parseinstruments.$(OBJEXT) audio/pitchentry.$(OBJEXT) \ audio/pitchrecog.$(OBJEXT) audio/playback.$(OBJEXT) \ command/changenotehead.$(OBJEXT) command/chord.$(OBJEXT) \ command/clef.$(OBJEXT) command/commandfuncs.$(OBJEXT) \ command/contexts.$(OBJEXT) command/fakechord.$(OBJEXT) \ command/figure.$(OBJEXT) command/grace.$(OBJEXT) \ command/keyresponses.$(OBJEXT) command/keysig.$(OBJEXT) \ command/lilydirectives.$(OBJEXT) command/lyric.$(OBJEXT) \ command/measure.$(OBJEXT) command/processstaffname.$(OBJEXT) \ command/object.$(OBJEXT) command/scorelayout.$(OBJEXT) \ command/score.$(OBJEXT) command/select.$(OBJEXT) \ command/staff.$(OBJEXT) command/timesig.$(OBJEXT) \ command/tuplet.$(OBJEXT) core/binreloc.$(OBJEXT) \ core/denemo_types.$(OBJEXT) core/cache.$(OBJEXT) \ core/external.$(OBJEXT) core/exportxml.$(OBJEXT) \ core/graphicseditor.$(OBJEXT) core/importxml.$(OBJEXT) \ core/kbd-custom.$(OBJEXT) core/keyboard.$(OBJEXT) \ core/keymapio.$(OBJEXT) core/main.$(OBJEXT) \ core/palettestorage.$(OBJEXT) core/prefops.$(OBJEXT) \ core/utils.$(OBJEXT) core/view.$(OBJEXT) \ display/calculatepositions.$(OBJEXT) \ display/displayanimation.$(OBJEXT) \ display/drawaccidentals.$(OBJEXT) \ display/drawbarline.$(OBJEXT) display/draw.$(OBJEXT) \ display/drawclefs.$(OBJEXT) display/drawcursor.$(OBJEXT) \ display/drawdynamic.$(OBJEXT) display/drawfakechord.$(OBJEXT) \ display/drawfigure.$(OBJEXT) display/drawkey.$(OBJEXT) \ display/drawlilydir.$(OBJEXT) display/drawlyric.$(OBJEXT) \ display/drawnotes.$(OBJEXT) display/drawselection.$(OBJEXT) \ display/drawstemdir.$(OBJEXT) display/drawtimesig.$(OBJEXT) \ display/drawtuplets.$(OBJEXT) display/hairpin.$(OBJEXT) \ display/slurs.$(OBJEXT) export/audiofile.$(OBJEXT) \ export/exportabc.$(OBJEXT) export/exportlilypond.$(OBJEXT) \ export/exportmidi.$(OBJEXT) export/file.$(OBJEXT) \ export/guidedimportmidi.$(OBJEXT) export/importmidi.$(OBJEXT) \ export/importmusicxml.$(OBJEXT) export/print.$(OBJEXT) \ scripting/scheme-callbacks.$(OBJEXT) \ scripting/scheme-identifiers.$(OBJEXT) \ source/sourceaudio.$(OBJEXT) printview/svgview.$(OBJEXT) \ ui/clefdialog.$(OBJEXT) ui/help.$(OBJEXT) \ ui/kbd-interface.$(OBJEXT) ui/keysigdialog.$(OBJEXT) \ ui/mousing.$(OBJEXT) ui/moveviewport.$(OBJEXT) \ ui/mwidthdialog.$(OBJEXT) ui/palettes.$(OBJEXT) \ ui/virtualkeyboard.$(OBJEXT) ui/playbackprops.$(OBJEXT) \ ui/prefdialog.$(OBJEXT) ui/scoreprops.$(OBJEXT) \ ui/staffpropdialog.$(OBJEXT) ui/texteditors.$(OBJEXT) \ ui/timedialog.$(OBJEXT) ui/tomeasuredialog.$(OBJEXT) \ ui/tupletdialog.$(OBJEXT) ui/markup.$(OBJEXT) \ core/menusystem.$(OBJEXT) $(am__objects_1) nodist_denemo_OBJECTS = denemo_OBJECTS = $(am_denemo_OBJECTS) $(nodist_denemo_OBJECTS) am__DEPENDENCIES_1 = denemo_DEPENDENCIES = $(am__DEPENDENCIES_1) libaudiobackend.a \ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libaudiobackend_a_SOURCES) $(denemo_SOURCES) \ $(nodist_denemo_SOURCES) DIST_SOURCES = $(libaudiobackend_a_SOURCES) $(am__denemo_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } DATA = $(dist_pkgdata_DATA) HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = @pkgdatadir@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ ALSA_CFLAGS = @ALSA_CFLAGS@ ALSA_LIBS = @ALSA_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EVINCE_2_0_CFLAGS = @EVINCE_2_0_CFLAGS@ EVINCE_2_0_LIBS = @EVINCE_2_0_LIBS@ EVINCE_2_30_CFLAGS = @EVINCE_2_30_CFLAGS@ EVINCE_2_30_LIBS = @EVINCE_2_30_LIBS@ EVINCE_2_32_CFLAGS = @EVINCE_2_32_CFLAGS@ EVINCE_2_32_LIBS = @EVINCE_2_32_LIBS@ EVINCE_CFLAGS = @EVINCE_CFLAGS@ EVINCE_LIBS = @EVINCE_LIBS@ EXEEXT = @EXEEXT@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ FLUIDSYNTH_CFLAGS = @FLUIDSYNTH_CFLAGS@ FLUIDSYNTH_LIBS = @FLUIDSYNTH_LIBS@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKSOURCEVIEW_CFLAGS = @GTKSOURCEVIEW_CFLAGS@ GTKSOURCEVIEW_LIBS = @GTKSOURCEVIEW_LIBS@ GUILE_1_8_CFLAGS = @GUILE_1_8_CFLAGS@ GUILE_1_8_LIBS = @GUILE_1_8_LIBS@ GUILE_2_CFLAGS = @GUILE_2_CFLAGS@ GUILE_2_LIBS = @GUILE_2_LIBS@ GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_EFFECTIVE_VERSION = @GUILE_EFFECTIVE_VERSION@ GUILE_LDFLAGS = @GUILE_LDFLAGS@ GUILE_LIBS = @GUILE_LIBS@ GUILE_LTLIBS = @GUILE_LTLIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBAUBIO_CFLAGS = @LIBAUBIO_CFLAGS@ LIBAUBIO_LIBS = @LIBAUBIO_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALEDIR = @LOCALEDIR@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_DATA_DIR = @PACKAGE_DATA_DIR@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ PORTAUDIO_CFLAGS = @PORTAUDIO_CFLAGS@ PORTAUDIO_LIBS = @PORTAUDIO_LIBS@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ RANLIB = @RANLIB@ RSVG_CFLAGS = @RSVG_CFLAGS@ RSVG_LIBS = @RSVG_LIBS@ RUBBERBAND_CFLAGS = @RUBBERBAND_CFLAGS@ RUBBERBAND_LIBS = @RUBBERBAND_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHTOOL = @SHTOOL@ SMF_CFLAGS = @SMF_CFLAGS@ SMF_LIBS = @SMF_LIBS@ SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ SNDFILE_LIBS = @SNDFILE_LIBS@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XML2_CFLAGS = @XML2_CFLAGS@ XML2_LIBS = @XML2_LIBS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ denemo_bin_path = @denemo_bin_path@ denemo_load_path = @denemo_load_path@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ installed_test_metadir = @installed_test_metadir@ installed_testdir = @installed_testdir@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ dist_pkgdata_DATA = instruments.xml denemo_SOURCES = audio/audio.h audio/audiocapture.c \ audio/audiocapture.h audio/instrumentname.c \ audio/instrumentname.h audio/midi.c audio/midi.h \ audio/parseinstruments.c audio/parseinstruments.h \ audio/pitchentry.c audio/pitchentry.h audio/pitchrecog.c \ audio/pitchrecog.h audio/playback.c audio/playback.h \ command/changenotehead.c command/changenotehead.h \ command/chord.c command/chord.h command/clef.c command/clef.h \ command/commandfuncs.c command/commandfuncs.h \ command/contexts.c command/contexts.h command/fakechord.c \ command/fakechord.h command/figure.c command/figure.h \ command/grace.c command/grace.h command/keyresponses.c \ command/keyresponses.h command/keysig.c command/keysig.h \ command/lilydirectives.c command/lilydirectives.h \ command/lyric.c command/lyric.h command/measure.c \ command/measure.h command/processstaffname.c \ command/processstaffname.h command/object.c command/object.h \ command/scorelayout.c command/scorelayout.h command/score.c \ command/score.h command/select.c command/select.h \ command/staff.c command/staff.h command/timesig.c \ command/timesig.h command/tuplet.c command/tuplet.h \ core/binreloc.c core/binreloc.h core/denemo_types.c \ core/cache.c core/cache.h core/external.c core/external.h \ core/exportxml.c core/exportxml.h core/graphicseditor.c \ core/graphicseditor.h core/importxml.c core/importxml.h \ core/kbd-custom.c core/kbd-custom.h core/keyboard.c \ core/keyboard.h core/keymapio.c core/keymapio.h core/main.c \ core/palettestorage.c core/palettestorage.h core/prefops.c \ core/prefops.h core/twoints.h core/utils.c core/utils.h \ core/view.c core/view.h core/entries.h display/accwidths.h \ display/calculatepositions.c display/calculatepositions.h \ display/displayanimation.c display/displayanimation.h \ display/drawaccidentals.c display/drawbarline.c display/draw.c \ display/drawclefs.c display/drawcursor.c display/drawdynamic.c \ display/drawfakechord.c display/drawfigure.c display/draw.h \ display/drawingprims.h display/drawkey.c display/drawlilydir.c \ display/drawlyric.c display/drawnotes.c \ display/drawselection.c display/drawstemdir.c \ display/drawtimesig.c display/drawtuplets.c display/hairpin.c \ display/hairpin.h display/notewidths.h display/slurs.c \ display/slurs.h export/audiofile.c export/audiofile.h \ export/exportabc.c export/exportabc.h export/exportlilypond.c \ export/exportlilypond.h export/exportmidi.c \ export/exportmidi.h export/file.c export/file.h \ export/guidedimportmidi.c export/guidedimportmidi.h \ export/importmidi.c export/importmidi.h \ export/importmusicxml.c export/importmusicxml.h export/print.c \ export/print.h export/xmldefs.h scripting/scheme-callbacks.c \ scripting/scheme-callbacks.h scripting/scheme-identifiers.c \ scripting/scheme-identifiers.h scripting/scheme_cb.h \ scripting/scheme.h source/sourceaudio.c source/sourceaudio.h \ printview/svgview.h printview/svgview.c ui/clefdialog.c \ ui/dialogs.h ui/help.c ui/help.h ui/kbd-interface.c \ ui/kbd-interface.h ui/keysigdialog.c ui/keysigdialog.h \ ui/mousing.c ui/mousing.h ui/moveviewport.c ui/moveviewport.h \ ui/mwidthdialog.c ui/palettes.c ui/palettes.h \ ui/virtualkeyboard.c ui/virtualkeyboard.h ui/playbackprops.c \ ui/playbackprops.h ui/prefdialog.c ui/scoreprops.c \ ui/staffpropdialog.c ui/texteditors.c ui/texteditors.h \ ui/timedialog.c ui/tomeasuredialog.c ui/tupletdialog.c \ ui/markup.c ui/markup.h core/menusystem.c core/menusystem.h \ $(am__append_1) nodist_denemo_SOURCES = pathconfig.h noinst_LIBRARIES = libaudiobackend.a libaudiobackend_a_CFLAGS = -W -Wall -Wno-unused-parameter $(PLATFORM_CFLAGS) libaudiobackend_a_SOURCES = \ audio/alsabackend.c \ audio/alsabackend.h \ audio/audiointerface.c \ audio/audiointerface.h \ audio/dummybackend.c \ audio/dummybackend.h \ audio/eventqueue.c \ audio/eventqueue.h \ audio/fluid.c \ audio/fluid.h \ audio/jackbackend.c \ audio/jackbackend.h \ audio/jackutil.c \ audio/jackutil.h \ audio/portaudiobackend.c \ audio/portaudiobackend.h \ audio/portaudioutil.c \ audio/portaudioutil.h \ audio/portmidibackend.c \ audio/portmidibackend.h \ audio/portmidiutil.c \ audio/portmidiutil.h \ audio/ringbuffer.c \ audio/ringbuffer.h AM_CPPFLAGS = $(BINRELOC_CFLAGS) $(PORTMIDI_INCLUDE) \ -I$(top_srcdir)/intl -I$(top_srcdir)/include \ -I$(top_srcdir)/libs/libsffile -I$(top_srcdir)/pixmaps \ -DPREFIX=\"$(prefix)\" -DBINDIR=\"$(exec_prefix)/bin\" \ -DLOCALEDIR=\"${LOCALEDIR}\" -DSYSCONFDIR=\"$(sysconfdir)/\" \ -DPKGDATADIR=\"$(pkgdatadir)/\" \ -DDATAROOTDIR=\"$(datarootdir)/\" -DPKGNAME=\"denemo\" \ -DG_LOG_DOMAIN=\"Denemo\" $(am__append_2) denemo_LDADD = $(INTLLIBS) libaudiobackend.a \ -L$(top_builddir)/libs/libsffile -lsffile $(am__append_3) noinst_HEADERS = \ audio/parseinstruments.h \ core/keyboard.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) audio/$(am__dirstamp): @$(MKDIR_P) audio @: > audio/$(am__dirstamp) audio/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) audio/$(DEPDIR) @: > audio/$(DEPDIR)/$(am__dirstamp) audio/libaudiobackend_a-alsabackend.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/libaudiobackend_a-audiointerface.$(OBJEXT): \ audio/$(am__dirstamp) audio/$(DEPDIR)/$(am__dirstamp) audio/libaudiobackend_a-dummybackend.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/libaudiobackend_a-eventqueue.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/libaudiobackend_a-fluid.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/libaudiobackend_a-jackbackend.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/libaudiobackend_a-jackutil.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/libaudiobackend_a-portaudiobackend.$(OBJEXT): \ audio/$(am__dirstamp) audio/$(DEPDIR)/$(am__dirstamp) audio/libaudiobackend_a-portaudioutil.$(OBJEXT): \ audio/$(am__dirstamp) audio/$(DEPDIR)/$(am__dirstamp) audio/libaudiobackend_a-portmidibackend.$(OBJEXT): \ audio/$(am__dirstamp) audio/$(DEPDIR)/$(am__dirstamp) audio/libaudiobackend_a-portmidiutil.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/libaudiobackend_a-ringbuffer.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) libaudiobackend.a: $(libaudiobackend_a_OBJECTS) $(libaudiobackend_a_DEPENDENCIES) $(EXTRA_libaudiobackend_a_DEPENDENCIES) $(AM_V_at)-rm -f libaudiobackend.a $(AM_V_AR)$(libaudiobackend_a_AR) libaudiobackend.a $(libaudiobackend_a_OBJECTS) $(libaudiobackend_a_LIBADD) $(AM_V_at)$(RANLIB) libaudiobackend.a install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list audio/audiocapture.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/instrumentname.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/midi.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/parseinstruments.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/pitchentry.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/pitchrecog.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) audio/playback.$(OBJEXT): audio/$(am__dirstamp) \ audio/$(DEPDIR)/$(am__dirstamp) command/$(am__dirstamp): @$(MKDIR_P) command @: > command/$(am__dirstamp) command/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) command/$(DEPDIR) @: > command/$(DEPDIR)/$(am__dirstamp) command/changenotehead.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/chord.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/clef.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/commandfuncs.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/contexts.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/fakechord.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/figure.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/grace.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/keyresponses.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/keysig.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/lilydirectives.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/lyric.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/measure.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/processstaffname.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/object.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/scorelayout.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/score.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/select.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/staff.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/timesig.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) command/tuplet.$(OBJEXT): command/$(am__dirstamp) \ command/$(DEPDIR)/$(am__dirstamp) core/$(am__dirstamp): @$(MKDIR_P) core @: > core/$(am__dirstamp) core/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) core/$(DEPDIR) @: > core/$(DEPDIR)/$(am__dirstamp) core/binreloc.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/denemo_types.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/cache.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/external.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/exportxml.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/graphicseditor.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/importxml.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/kbd-custom.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/keyboard.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/keymapio.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/main.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/palettestorage.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/prefops.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/utils.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/view.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) display/$(am__dirstamp): @$(MKDIR_P) display @: > display/$(am__dirstamp) display/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) display/$(DEPDIR) @: > display/$(DEPDIR)/$(am__dirstamp) display/calculatepositions.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/displayanimation.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawaccidentals.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawbarline.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/draw.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawclefs.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawcursor.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawdynamic.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawfakechord.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawfigure.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawkey.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawlilydir.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawlyric.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawnotes.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawselection.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawstemdir.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawtimesig.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/drawtuplets.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/hairpin.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) display/slurs.$(OBJEXT): display/$(am__dirstamp) \ display/$(DEPDIR)/$(am__dirstamp) export/$(am__dirstamp): @$(MKDIR_P) export @: > export/$(am__dirstamp) export/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) export/$(DEPDIR) @: > export/$(DEPDIR)/$(am__dirstamp) export/audiofile.$(OBJEXT): export/$(am__dirstamp) \ export/$(DEPDIR)/$(am__dirstamp) export/exportabc.$(OBJEXT): export/$(am__dirstamp) \ export/$(DEPDIR)/$(am__dirstamp) export/exportlilypond.$(OBJEXT): export/$(am__dirstamp) \ export/$(DEPDIR)/$(am__dirstamp) export/exportmidi.$(OBJEXT): export/$(am__dirstamp) \ export/$(DEPDIR)/$(am__dirstamp) export/file.$(OBJEXT): export/$(am__dirstamp) \ export/$(DEPDIR)/$(am__dirstamp) export/guidedimportmidi.$(OBJEXT): export/$(am__dirstamp) \ export/$(DEPDIR)/$(am__dirstamp) export/importmidi.$(OBJEXT): export/$(am__dirstamp) \ export/$(DEPDIR)/$(am__dirstamp) export/importmusicxml.$(OBJEXT): export/$(am__dirstamp) \ export/$(DEPDIR)/$(am__dirstamp) export/print.$(OBJEXT): export/$(am__dirstamp) \ export/$(DEPDIR)/$(am__dirstamp) scripting/$(am__dirstamp): @$(MKDIR_P) scripting @: > scripting/$(am__dirstamp) scripting/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) scripting/$(DEPDIR) @: > scripting/$(DEPDIR)/$(am__dirstamp) scripting/scheme-callbacks.$(OBJEXT): scripting/$(am__dirstamp) \ scripting/$(DEPDIR)/$(am__dirstamp) scripting/scheme-identifiers.$(OBJEXT): scripting/$(am__dirstamp) \ scripting/$(DEPDIR)/$(am__dirstamp) source/$(am__dirstamp): @$(MKDIR_P) source @: > source/$(am__dirstamp) source/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) source/$(DEPDIR) @: > source/$(DEPDIR)/$(am__dirstamp) source/sourceaudio.$(OBJEXT): source/$(am__dirstamp) \ source/$(DEPDIR)/$(am__dirstamp) printview/$(am__dirstamp): @$(MKDIR_P) printview @: > printview/$(am__dirstamp) printview/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) printview/$(DEPDIR) @: > printview/$(DEPDIR)/$(am__dirstamp) printview/svgview.$(OBJEXT): printview/$(am__dirstamp) \ printview/$(DEPDIR)/$(am__dirstamp) ui/$(am__dirstamp): @$(MKDIR_P) ui @: > ui/$(am__dirstamp) ui/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ui/$(DEPDIR) @: > ui/$(DEPDIR)/$(am__dirstamp) ui/clefdialog.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/help.$(OBJEXT): ui/$(am__dirstamp) ui/$(DEPDIR)/$(am__dirstamp) ui/kbd-interface.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/keysigdialog.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/mousing.$(OBJEXT): ui/$(am__dirstamp) ui/$(DEPDIR)/$(am__dirstamp) ui/moveviewport.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/mwidthdialog.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/palettes.$(OBJEXT): ui/$(am__dirstamp) ui/$(DEPDIR)/$(am__dirstamp) ui/virtualkeyboard.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/playbackprops.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/prefdialog.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/scoreprops.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/staffpropdialog.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/texteditors.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/timedialog.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/tomeasuredialog.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/tupletdialog.$(OBJEXT): ui/$(am__dirstamp) \ ui/$(DEPDIR)/$(am__dirstamp) ui/markup.$(OBJEXT): ui/$(am__dirstamp) ui/$(DEPDIR)/$(am__dirstamp) core/menusystem.$(OBJEXT): core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) source/source.$(OBJEXT): source/$(am__dirstamp) \ source/$(DEPDIR)/$(am__dirstamp) source/proof.$(OBJEXT): source/$(am__dirstamp) \ source/$(DEPDIR)/$(am__dirstamp) printview/markupview.$(OBJEXT): printview/$(am__dirstamp) \ printview/$(DEPDIR)/$(am__dirstamp) printview/printview.$(OBJEXT): printview/$(am__dirstamp) \ printview/$(DEPDIR)/$(am__dirstamp) denemo$(EXEEXT): $(denemo_OBJECTS) $(denemo_DEPENDENCIES) $(EXTRA_denemo_DEPENDENCIES) @rm -f denemo$(EXEEXT) $(AM_V_CCLD)$(LINK) $(denemo_OBJECTS) $(denemo_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f audio/*.$(OBJEXT) -rm -f command/*.$(OBJEXT) -rm -f core/*.$(OBJEXT) -rm -f display/*.$(OBJEXT) -rm -f export/*.$(OBJEXT) -rm -f printview/*.$(OBJEXT) -rm -f scripting/*.$(OBJEXT) -rm -f source/*.$(OBJEXT) -rm -f ui/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/audiocapture.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/instrumentname.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/libaudiobackend_a-alsabackend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/libaudiobackend_a-audiointerface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/libaudiobackend_a-dummybackend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/libaudiobackend_a-eventqueue.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/libaudiobackend_a-fluid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/libaudiobackend_a-jackbackend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/libaudiobackend_a-jackutil.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/libaudiobackend_a-portaudiobackend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/libaudiobackend_a-portaudioutil.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/libaudiobackend_a-portmidibackend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/libaudiobackend_a-portmidiutil.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/libaudiobackend_a-ringbuffer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/midi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/parseinstruments.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/pitchentry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/pitchrecog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/playback.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/changenotehead.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/chord.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/clef.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/commandfuncs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/contexts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/fakechord.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/figure.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/grace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/keyresponses.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/keysig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/lilydirectives.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/lyric.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/measure.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/object.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/processstaffname.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/score.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/scorelayout.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/select.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/staff.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/timesig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@command/$(DEPDIR)/tuplet.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/binreloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/cache.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/denemo_types.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/exportxml.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/external.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/graphicseditor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/importxml.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/kbd-custom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/keyboard.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/keymapio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/menusystem.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/palettestorage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/prefops.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/view.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/calculatepositions.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/displayanimation.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/draw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawaccidentals.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawbarline.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawclefs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawcursor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawdynamic.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawfakechord.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawfigure.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawkey.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawlilydir.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawlyric.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawnotes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawselection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawstemdir.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawtimesig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/drawtuplets.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/hairpin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@display/$(DEPDIR)/slurs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@export/$(DEPDIR)/audiofile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@export/$(DEPDIR)/exportabc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@export/$(DEPDIR)/exportlilypond.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@export/$(DEPDIR)/exportmidi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@export/$(DEPDIR)/file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@export/$(DEPDIR)/guidedimportmidi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@export/$(DEPDIR)/importmidi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@export/$(DEPDIR)/importmusicxml.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@export/$(DEPDIR)/print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@printview/$(DEPDIR)/markupview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@printview/$(DEPDIR)/printview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@printview/$(DEPDIR)/svgview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@scripting/$(DEPDIR)/scheme-callbacks.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@scripting/$(DEPDIR)/scheme-identifiers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@source/$(DEPDIR)/proof.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@source/$(DEPDIR)/source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@source/$(DEPDIR)/sourceaudio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/clefdialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/help.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/kbd-interface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/keysigdialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/markup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/mousing.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/moveviewport.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/mwidthdialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/palettes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/playbackprops.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/prefdialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/scoreprops.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/staffpropdialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/texteditors.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/timedialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/tomeasuredialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/tupletdialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ui/$(DEPDIR)/virtualkeyboard.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< audio/libaudiobackend_a-alsabackend.o: audio/alsabackend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-alsabackend.o -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-alsabackend.Tpo -c -o audio/libaudiobackend_a-alsabackend.o `test -f 'audio/alsabackend.c' || echo '$(srcdir)/'`audio/alsabackend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-alsabackend.Tpo audio/$(DEPDIR)/libaudiobackend_a-alsabackend.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/alsabackend.c' object='audio/libaudiobackend_a-alsabackend.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-alsabackend.o `test -f 'audio/alsabackend.c' || echo '$(srcdir)/'`audio/alsabackend.c audio/libaudiobackend_a-alsabackend.obj: audio/alsabackend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-alsabackend.obj -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-alsabackend.Tpo -c -o audio/libaudiobackend_a-alsabackend.obj `if test -f 'audio/alsabackend.c'; then $(CYGPATH_W) 'audio/alsabackend.c'; else $(CYGPATH_W) '$(srcdir)/audio/alsabackend.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-alsabackend.Tpo audio/$(DEPDIR)/libaudiobackend_a-alsabackend.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/alsabackend.c' object='audio/libaudiobackend_a-alsabackend.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-alsabackend.obj `if test -f 'audio/alsabackend.c'; then $(CYGPATH_W) 'audio/alsabackend.c'; else $(CYGPATH_W) '$(srcdir)/audio/alsabackend.c'; fi` audio/libaudiobackend_a-audiointerface.o: audio/audiointerface.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-audiointerface.o -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-audiointerface.Tpo -c -o audio/libaudiobackend_a-audiointerface.o `test -f 'audio/audiointerface.c' || echo '$(srcdir)/'`audio/audiointerface.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-audiointerface.Tpo audio/$(DEPDIR)/libaudiobackend_a-audiointerface.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/audiointerface.c' object='audio/libaudiobackend_a-audiointerface.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-audiointerface.o `test -f 'audio/audiointerface.c' || echo '$(srcdir)/'`audio/audiointerface.c audio/libaudiobackend_a-audiointerface.obj: audio/audiointerface.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-audiointerface.obj -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-audiointerface.Tpo -c -o audio/libaudiobackend_a-audiointerface.obj `if test -f 'audio/audiointerface.c'; then $(CYGPATH_W) 'audio/audiointerface.c'; else $(CYGPATH_W) '$(srcdir)/audio/audiointerface.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-audiointerface.Tpo audio/$(DEPDIR)/libaudiobackend_a-audiointerface.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/audiointerface.c' object='audio/libaudiobackend_a-audiointerface.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-audiointerface.obj `if test -f 'audio/audiointerface.c'; then $(CYGPATH_W) 'audio/audiointerface.c'; else $(CYGPATH_W) '$(srcdir)/audio/audiointerface.c'; fi` audio/libaudiobackend_a-dummybackend.o: audio/dummybackend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-dummybackend.o -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-dummybackend.Tpo -c -o audio/libaudiobackend_a-dummybackend.o `test -f 'audio/dummybackend.c' || echo '$(srcdir)/'`audio/dummybackend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-dummybackend.Tpo audio/$(DEPDIR)/libaudiobackend_a-dummybackend.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/dummybackend.c' object='audio/libaudiobackend_a-dummybackend.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-dummybackend.o `test -f 'audio/dummybackend.c' || echo '$(srcdir)/'`audio/dummybackend.c audio/libaudiobackend_a-dummybackend.obj: audio/dummybackend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-dummybackend.obj -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-dummybackend.Tpo -c -o audio/libaudiobackend_a-dummybackend.obj `if test -f 'audio/dummybackend.c'; then $(CYGPATH_W) 'audio/dummybackend.c'; else $(CYGPATH_W) '$(srcdir)/audio/dummybackend.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-dummybackend.Tpo audio/$(DEPDIR)/libaudiobackend_a-dummybackend.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/dummybackend.c' object='audio/libaudiobackend_a-dummybackend.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-dummybackend.obj `if test -f 'audio/dummybackend.c'; then $(CYGPATH_W) 'audio/dummybackend.c'; else $(CYGPATH_W) '$(srcdir)/audio/dummybackend.c'; fi` audio/libaudiobackend_a-eventqueue.o: audio/eventqueue.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-eventqueue.o -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-eventqueue.Tpo -c -o audio/libaudiobackend_a-eventqueue.o `test -f 'audio/eventqueue.c' || echo '$(srcdir)/'`audio/eventqueue.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-eventqueue.Tpo audio/$(DEPDIR)/libaudiobackend_a-eventqueue.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/eventqueue.c' object='audio/libaudiobackend_a-eventqueue.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-eventqueue.o `test -f 'audio/eventqueue.c' || echo '$(srcdir)/'`audio/eventqueue.c audio/libaudiobackend_a-eventqueue.obj: audio/eventqueue.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-eventqueue.obj -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-eventqueue.Tpo -c -o audio/libaudiobackend_a-eventqueue.obj `if test -f 'audio/eventqueue.c'; then $(CYGPATH_W) 'audio/eventqueue.c'; else $(CYGPATH_W) '$(srcdir)/audio/eventqueue.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-eventqueue.Tpo audio/$(DEPDIR)/libaudiobackend_a-eventqueue.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/eventqueue.c' object='audio/libaudiobackend_a-eventqueue.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-eventqueue.obj `if test -f 'audio/eventqueue.c'; then $(CYGPATH_W) 'audio/eventqueue.c'; else $(CYGPATH_W) '$(srcdir)/audio/eventqueue.c'; fi` audio/libaudiobackend_a-fluid.o: audio/fluid.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-fluid.o -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-fluid.Tpo -c -o audio/libaudiobackend_a-fluid.o `test -f 'audio/fluid.c' || echo '$(srcdir)/'`audio/fluid.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-fluid.Tpo audio/$(DEPDIR)/libaudiobackend_a-fluid.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/fluid.c' object='audio/libaudiobackend_a-fluid.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-fluid.o `test -f 'audio/fluid.c' || echo '$(srcdir)/'`audio/fluid.c audio/libaudiobackend_a-fluid.obj: audio/fluid.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-fluid.obj -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-fluid.Tpo -c -o audio/libaudiobackend_a-fluid.obj `if test -f 'audio/fluid.c'; then $(CYGPATH_W) 'audio/fluid.c'; else $(CYGPATH_W) '$(srcdir)/audio/fluid.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-fluid.Tpo audio/$(DEPDIR)/libaudiobackend_a-fluid.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/fluid.c' object='audio/libaudiobackend_a-fluid.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-fluid.obj `if test -f 'audio/fluid.c'; then $(CYGPATH_W) 'audio/fluid.c'; else $(CYGPATH_W) '$(srcdir)/audio/fluid.c'; fi` audio/libaudiobackend_a-jackbackend.o: audio/jackbackend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-jackbackend.o -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-jackbackend.Tpo -c -o audio/libaudiobackend_a-jackbackend.o `test -f 'audio/jackbackend.c' || echo '$(srcdir)/'`audio/jackbackend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-jackbackend.Tpo audio/$(DEPDIR)/libaudiobackend_a-jackbackend.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/jackbackend.c' object='audio/libaudiobackend_a-jackbackend.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-jackbackend.o `test -f 'audio/jackbackend.c' || echo '$(srcdir)/'`audio/jackbackend.c audio/libaudiobackend_a-jackbackend.obj: audio/jackbackend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-jackbackend.obj -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-jackbackend.Tpo -c -o audio/libaudiobackend_a-jackbackend.obj `if test -f 'audio/jackbackend.c'; then $(CYGPATH_W) 'audio/jackbackend.c'; else $(CYGPATH_W) '$(srcdir)/audio/jackbackend.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-jackbackend.Tpo audio/$(DEPDIR)/libaudiobackend_a-jackbackend.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/jackbackend.c' object='audio/libaudiobackend_a-jackbackend.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-jackbackend.obj `if test -f 'audio/jackbackend.c'; then $(CYGPATH_W) 'audio/jackbackend.c'; else $(CYGPATH_W) '$(srcdir)/audio/jackbackend.c'; fi` audio/libaudiobackend_a-jackutil.o: audio/jackutil.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-jackutil.o -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-jackutil.Tpo -c -o audio/libaudiobackend_a-jackutil.o `test -f 'audio/jackutil.c' || echo '$(srcdir)/'`audio/jackutil.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-jackutil.Tpo audio/$(DEPDIR)/libaudiobackend_a-jackutil.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/jackutil.c' object='audio/libaudiobackend_a-jackutil.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-jackutil.o `test -f 'audio/jackutil.c' || echo '$(srcdir)/'`audio/jackutil.c audio/libaudiobackend_a-jackutil.obj: audio/jackutil.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-jackutil.obj -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-jackutil.Tpo -c -o audio/libaudiobackend_a-jackutil.obj `if test -f 'audio/jackutil.c'; then $(CYGPATH_W) 'audio/jackutil.c'; else $(CYGPATH_W) '$(srcdir)/audio/jackutil.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-jackutil.Tpo audio/$(DEPDIR)/libaudiobackend_a-jackutil.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/jackutil.c' object='audio/libaudiobackend_a-jackutil.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-jackutil.obj `if test -f 'audio/jackutil.c'; then $(CYGPATH_W) 'audio/jackutil.c'; else $(CYGPATH_W) '$(srcdir)/audio/jackutil.c'; fi` audio/libaudiobackend_a-portaudiobackend.o: audio/portaudiobackend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-portaudiobackend.o -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-portaudiobackend.Tpo -c -o audio/libaudiobackend_a-portaudiobackend.o `test -f 'audio/portaudiobackend.c' || echo '$(srcdir)/'`audio/portaudiobackend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-portaudiobackend.Tpo audio/$(DEPDIR)/libaudiobackend_a-portaudiobackend.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/portaudiobackend.c' object='audio/libaudiobackend_a-portaudiobackend.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-portaudiobackend.o `test -f 'audio/portaudiobackend.c' || echo '$(srcdir)/'`audio/portaudiobackend.c audio/libaudiobackend_a-portaudiobackend.obj: audio/portaudiobackend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-portaudiobackend.obj -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-portaudiobackend.Tpo -c -o audio/libaudiobackend_a-portaudiobackend.obj `if test -f 'audio/portaudiobackend.c'; then $(CYGPATH_W) 'audio/portaudiobackend.c'; else $(CYGPATH_W) '$(srcdir)/audio/portaudiobackend.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-portaudiobackend.Tpo audio/$(DEPDIR)/libaudiobackend_a-portaudiobackend.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/portaudiobackend.c' object='audio/libaudiobackend_a-portaudiobackend.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-portaudiobackend.obj `if test -f 'audio/portaudiobackend.c'; then $(CYGPATH_W) 'audio/portaudiobackend.c'; else $(CYGPATH_W) '$(srcdir)/audio/portaudiobackend.c'; fi` audio/libaudiobackend_a-portaudioutil.o: audio/portaudioutil.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-portaudioutil.o -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-portaudioutil.Tpo -c -o audio/libaudiobackend_a-portaudioutil.o `test -f 'audio/portaudioutil.c' || echo '$(srcdir)/'`audio/portaudioutil.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-portaudioutil.Tpo audio/$(DEPDIR)/libaudiobackend_a-portaudioutil.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/portaudioutil.c' object='audio/libaudiobackend_a-portaudioutil.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-portaudioutil.o `test -f 'audio/portaudioutil.c' || echo '$(srcdir)/'`audio/portaudioutil.c audio/libaudiobackend_a-portaudioutil.obj: audio/portaudioutil.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-portaudioutil.obj -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-portaudioutil.Tpo -c -o audio/libaudiobackend_a-portaudioutil.obj `if test -f 'audio/portaudioutil.c'; then $(CYGPATH_W) 'audio/portaudioutil.c'; else $(CYGPATH_W) '$(srcdir)/audio/portaudioutil.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-portaudioutil.Tpo audio/$(DEPDIR)/libaudiobackend_a-portaudioutil.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/portaudioutil.c' object='audio/libaudiobackend_a-portaudioutil.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-portaudioutil.obj `if test -f 'audio/portaudioutil.c'; then $(CYGPATH_W) 'audio/portaudioutil.c'; else $(CYGPATH_W) '$(srcdir)/audio/portaudioutil.c'; fi` audio/libaudiobackend_a-portmidibackend.o: audio/portmidibackend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-portmidibackend.o -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-portmidibackend.Tpo -c -o audio/libaudiobackend_a-portmidibackend.o `test -f 'audio/portmidibackend.c' || echo '$(srcdir)/'`audio/portmidibackend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-portmidibackend.Tpo audio/$(DEPDIR)/libaudiobackend_a-portmidibackend.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/portmidibackend.c' object='audio/libaudiobackend_a-portmidibackend.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-portmidibackend.o `test -f 'audio/portmidibackend.c' || echo '$(srcdir)/'`audio/portmidibackend.c audio/libaudiobackend_a-portmidibackend.obj: audio/portmidibackend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-portmidibackend.obj -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-portmidibackend.Tpo -c -o audio/libaudiobackend_a-portmidibackend.obj `if test -f 'audio/portmidibackend.c'; then $(CYGPATH_W) 'audio/portmidibackend.c'; else $(CYGPATH_W) '$(srcdir)/audio/portmidibackend.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-portmidibackend.Tpo audio/$(DEPDIR)/libaudiobackend_a-portmidibackend.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/portmidibackend.c' object='audio/libaudiobackend_a-portmidibackend.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-portmidibackend.obj `if test -f 'audio/portmidibackend.c'; then $(CYGPATH_W) 'audio/portmidibackend.c'; else $(CYGPATH_W) '$(srcdir)/audio/portmidibackend.c'; fi` audio/libaudiobackend_a-portmidiutil.o: audio/portmidiutil.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-portmidiutil.o -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-portmidiutil.Tpo -c -o audio/libaudiobackend_a-portmidiutil.o `test -f 'audio/portmidiutil.c' || echo '$(srcdir)/'`audio/portmidiutil.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-portmidiutil.Tpo audio/$(DEPDIR)/libaudiobackend_a-portmidiutil.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/portmidiutil.c' object='audio/libaudiobackend_a-portmidiutil.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-portmidiutil.o `test -f 'audio/portmidiutil.c' || echo '$(srcdir)/'`audio/portmidiutil.c audio/libaudiobackend_a-portmidiutil.obj: audio/portmidiutil.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-portmidiutil.obj -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-portmidiutil.Tpo -c -o audio/libaudiobackend_a-portmidiutil.obj `if test -f 'audio/portmidiutil.c'; then $(CYGPATH_W) 'audio/portmidiutil.c'; else $(CYGPATH_W) '$(srcdir)/audio/portmidiutil.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-portmidiutil.Tpo audio/$(DEPDIR)/libaudiobackend_a-portmidiutil.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/portmidiutil.c' object='audio/libaudiobackend_a-portmidiutil.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-portmidiutil.obj `if test -f 'audio/portmidiutil.c'; then $(CYGPATH_W) 'audio/portmidiutil.c'; else $(CYGPATH_W) '$(srcdir)/audio/portmidiutil.c'; fi` audio/libaudiobackend_a-ringbuffer.o: audio/ringbuffer.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-ringbuffer.o -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-ringbuffer.Tpo -c -o audio/libaudiobackend_a-ringbuffer.o `test -f 'audio/ringbuffer.c' || echo '$(srcdir)/'`audio/ringbuffer.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-ringbuffer.Tpo audio/$(DEPDIR)/libaudiobackend_a-ringbuffer.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/ringbuffer.c' object='audio/libaudiobackend_a-ringbuffer.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-ringbuffer.o `test -f 'audio/ringbuffer.c' || echo '$(srcdir)/'`audio/ringbuffer.c audio/libaudiobackend_a-ringbuffer.obj: audio/ringbuffer.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -MT audio/libaudiobackend_a-ringbuffer.obj -MD -MP -MF audio/$(DEPDIR)/libaudiobackend_a-ringbuffer.Tpo -c -o audio/libaudiobackend_a-ringbuffer.obj `if test -f 'audio/ringbuffer.c'; then $(CYGPATH_W) 'audio/ringbuffer.c'; else $(CYGPATH_W) '$(srcdir)/audio/ringbuffer.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) audio/$(DEPDIR)/libaudiobackend_a-ringbuffer.Tpo audio/$(DEPDIR)/libaudiobackend_a-ringbuffer.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audio/ringbuffer.c' object='audio/libaudiobackend_a-ringbuffer.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaudiobackend_a_CFLAGS) $(CFLAGS) -c -o audio/libaudiobackend_a-ringbuffer.obj `if test -f 'audio/ringbuffer.c'; then $(CYGPATH_W) 'audio/ringbuffer.c'; else $(CYGPATH_W) '$(srcdir)/audio/ringbuffer.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f audio/$(DEPDIR)/$(am__dirstamp) -rm -f audio/$(am__dirstamp) -rm -f command/$(DEPDIR)/$(am__dirstamp) -rm -f command/$(am__dirstamp) -rm -f core/$(DEPDIR)/$(am__dirstamp) -rm -f core/$(am__dirstamp) -rm -f display/$(DEPDIR)/$(am__dirstamp) -rm -f display/$(am__dirstamp) -rm -f export/$(DEPDIR)/$(am__dirstamp) -rm -f export/$(am__dirstamp) -rm -f printview/$(DEPDIR)/$(am__dirstamp) -rm -f printview/$(am__dirstamp) -rm -f scripting/$(DEPDIR)/$(am__dirstamp) -rm -f scripting/$(am__dirstamp) -rm -f source/$(DEPDIR)/$(am__dirstamp) -rm -f source/$(am__dirstamp) -rm -f ui/$(DEPDIR)/$(am__dirstamp) -rm -f ui/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf audio/$(DEPDIR) command/$(DEPDIR) core/$(DEPDIR) display/$(DEPDIR) export/$(DEPDIR) printview/$(DEPDIR) scripting/$(DEPDIR) source/$(DEPDIR) ui/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf audio/$(DEPDIR) command/$(DEPDIR) core/$(DEPDIR) display/$(DEPDIR) export/$(DEPDIR) printview/$(DEPDIR) scripting/$(DEPDIR) source/$(DEPDIR) ui/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-dist_pkgdataDATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-dist_pkgdataDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-dist_pkgdataDATA pathconfig.h: $(top_builddir)/config.status -@rm pathconfig.tmp @echo "Generating pathconfig.h..." @echo '#define DENEMO_LOAD_PATH "@denemo_load_path@"' >pathconfig.tmp @echo '#define DENEMO_BIN_PATH "@denemo_bin_path@"' >>pathconfig.tmp @mv pathconfig.tmp $@ DISTCLEANFILES: pathconfig.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: denemo-2.2.0/src/PaxHeaders.19168/source0000644000000000000000000000013213135434152014542 xustar0030 mtime=1500919914.356648472 30 atime=1500919914.539981806 30 ctime=1500919914.356648472 denemo-2.2.0/src/source/0000755000175000017500000000000013135434152016470 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/src/source/PaxHeaders.19168/sourceaudio.c0000644000000000000000000000013213135434036017306 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.829981805 30 ctime=1500919914.293315139 denemo-2.2.0/src/source/sourceaudio.c0000644000175000017500000002622313135434036021164 0ustar00jjbenhamjjbenham00000000000000// sourceaudio.c // // Copyright 2012 Richard Shann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA 02110-1301, USA. #include #ifdef DISABLE_AUBIO gboolean audio_is_playing (void) { return FALSE; } #else #include #include #include #include #include "core/utils.h" #include "core/view.h" #include "audio/midi.h" #include "export/exportmidi.h" #include "source/sourceaudio.h" #include "command/keyresponses.h" #include "audio/audiointerface.h" #if GTK_MAJOR_VERSION==3 #include //FIXME Look for something more gtk3 like #endif static gint leadin = 0; //number of frames of silence before playing audio static gboolean playing = FALSE; #include #include "core/utils.h" #include "core/view.h" #include "audio/midi.h" #include "export/exportmidi.h" #include "source/sourceaudio.h" #include "command/keyresponses.h" #include "audio/audiointerface.h" //Creates a list of times which the aubio onset detector thinks are note onset times for the audio Denemo->si->recording //Result is placed in Denemo->si->note_onsets void generate_note_onsets (void) { DenemoRecording *audio = Denemo.project->movement->recording; gint channels = audio->channels; smpl_t threshold = 0.3; smpl_t silence = -90.; uint_t buffer_size = 1024; uint_t overlap_size = 512; uint_t samplerate = 44100; aubio_onset_t *o = new_aubio_onset("default", buffer_size, overlap_size, samplerate); fvec_t *ibuf = new_fvec (overlap_size); fvec_t *onset = new_fvec (2); unsigned int pos = 0; /*frames%dspblocksize */ unsigned int i; /*channels */ unsigned int j; /*frames */ busy_cursor (Denemo.notebook); gtk_window_set_modal (progressbar (_("Analysing Audio"), NULL), TRUE); rewind_audio (); if (audio->notes) { g_list_free_full (audio->notes, g_free); audio->notes = NULL; } for (j = 0; j < (unsigned) audio->nframes; j++) { sf_read_float (audio->sndfile, ibuf->data + pos, 2); //g_debug("\t%f", ibuf->data[0][pos]); if (pos == overlap_size - 1) { /* block loop */ gtk_main_iteration_do (FALSE); aubio_onset_do (o, ibuf, onset); while (gtk_events_pending ()) gtk_main_iteration (); if(onset->data[0] != 0) { DenemoRecordedNote *note = g_malloc0(sizeof(DenemoRecordedNote)); note->timing = aubio_onset_get_last(o);/* aubio_onset_get_delay_s(o) for seconds */ audio->notes = g_list_append (audio->notes, note); } pos = -1; /* so it will be zero next j loop */ } /* end of if pos==overlap_size-1 */ pos++; } del_aubio_onset (o); del_fvec (ibuf); del_fvec (onset); aubio_cleanup (); progressbar_stop (); normal_cursor (Denemo.notebook); } gboolean get_audio_sample (float *sample) { if (!playing) return FALSE; gboolean ret = FALSE; if (leadin) { *sample = *(sample + 1) = 0.0; leadin--; ret = TRUE; } else { if (Denemo.project->movement && Denemo.project->movement->recording && Denemo.project->movement->recording->sndfile) { ret = (2 == sf_read_float (Denemo.project->movement->recording->sndfile, sample, 2)); if (ret) *sample *= Denemo.project->movement->recording->volume; *(sample + 1) *= Denemo.project->movement->recording->volume; } } return ret; } gboolean open_source_audio (gchar * filename) { SF_INFO sfinfo; DenemoRecording *temp; sfinfo.format = 0; delete_recording(); if (filename) { gpointer sndfile = sf_open (filename, SFM_READ, &sfinfo); if (sndfile) { temp = (DenemoRecording *) g_malloc (sizeof (DenemoRecording)); temp->type = DENEMO_RECORDING_AUDIO; temp->sndfile = sndfile; temp->filename = g_strdup (filename); temp->samplerate = sfinfo.samplerate; temp->channels = sfinfo.channels; temp->nframes = (int) sf_seek (temp->sndfile, -1, SEEK_END); g_info ("sndfile: %s sample rate is %d channels %d containing %d \n", sf_strerror (temp->sndfile), sfinfo.samplerate, sfinfo.channels, temp->nframes); temp->volume = 1.0; g_mutex_lock (&smfmutex); Denemo.project->movement->recording = temp; g_mutex_unlock (&smfmutex); update_leadin_widget (-1.0); if (sfinfo.channels != 2) warningdialog (_("Audio is not stereo - expect bad things!")); if (sfinfo.samplerate != 44100) warningdialog (_("Audio does not have 44100 sample rate: this could be bad")); //FIXME here generate a click track if the score is empty if (Denemo.project->movement->smfsync != Denemo.project->movement->changecount) { exportmidi (NULL, Denemo.project->movement); //generate a timebase } generate_note_onsets (); draw_score_area(); } } Denemo.project->movement->recording ? gtk_widget_show (Denemo.audio_vol_control) : gtk_widget_hide (Denemo.audio_vol_control); return (Denemo.project->movement->recording != NULL); } gboolean close_source_audio (void) { gboolean ret = (Denemo.project->movement->recording != NULL); (void) open_source_audio (NULL); return ret; } void rewind_audio (void) { if (Denemo.project->movement->recording && (Denemo.project->movement->recording->type==DENEMO_RECORDING_AUDIO)) { if (Denemo.project->movement->recording->sndfile == NULL) { gint leadin = Denemo.project->movement->recording->leadin; /* not part of the audio file itself */ open_source_audio (Denemo.project->movement->recording->filename); if (Denemo.project->movement->recording==NULL) { g_warning("Unable to open audio file"); return; } if (Denemo.project->movement->recording->samplerate) { Denemo.project->movement->recording->leadin = leadin; update_leadin_widget (((double) leadin) / Denemo.project->movement->recording->samplerate); } } gdouble start = get_start_time (); if (start < 0.0) start = 0.0; gint startframe = start * Denemo.project->movement->recording->samplerate; startframe += Denemo.project->movement->recording->leadin; if (startframe < 0) { leadin = -startframe; startframe = 0; } else leadin = 0; sf_seek (Denemo.project->movement->recording->sndfile, startframe, SEEK_SET); } else gtk_widget_hide (Denemo.audio_vol_control); } gboolean set_lead_in (gdouble secs) { if (Denemo.project->movement->recording) { if ((Denemo.project->movement->recording->type==DENEMO_RECORDING_AUDIO) && Denemo.project->movement->recording->sndfile == NULL) { open_source_audio (Denemo.project->movement->recording->filename); if (Denemo.project->movement->recording==NULL) { g_warning("Unable to open source audio"); return FALSE; } } Denemo.project->movement->recording->leadin = secs * Denemo.project->movement->recording->samplerate; return TRUE; } return FALSE; } static gboolean annotating = FALSE; static GQueue *timings = NULL; //list of measure start times in microseconds from start, as indicated by the user. static gint record_timing (GtkWidget * widget, GdkEventKey * event) { if (event->keyval == GDK_Escape) { call_out_to_guile ("(if (defined? 'DenemoAudioAnnotateFinished) (DenemoAudioAnnotateFinished))"); stop_audio_playing (); } else { g_queue_push_tail (timings, GINT_TO_POINTER ((gint) (1000000 * get_playback_time ()))); call_out_to_guile ("(DenemoAudioAnnotate)"); } return TRUE; } gdouble get_audio_timing (void) { gdouble ret = -1.0; if (!g_queue_is_empty (timings)) { ret = (GPOINTER_TO_INT (g_queue_pop_head (timings))) / 1000000.0; } return ret; } void start_audio_playing (gboolean annotate) { if (annotate) { annotating = TRUE; if (timings) g_queue_clear (timings); else timings = g_queue_new (); g_signal_connect (G_OBJECT (Denemo.scorearea), "key_press_event", G_CALLBACK (record_timing), NULL); g_signal_handlers_block_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_keypress_event), NULL); g_signal_handlers_block_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_button_press), NULL); g_signal_handlers_block_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_button_release), NULL); } rewind_audio (); initialize_until_time (); audio_play (); playing = TRUE; } void stop_audio_playing (void) { playing = FALSE; if (annotating) { annotating = FALSE; g_signal_handlers_disconnect_by_func (G_OBJECT (Denemo.scorearea), record_timing, NULL); g_signal_handlers_unblock_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_keypress_event), NULL); g_signal_handlers_unblock_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_button_press), NULL); g_signal_handlers_unblock_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_button_release), NULL); } } gboolean open_source_audio_file (void) { gboolean ret = FALSE; GtkWidget *dialog = gtk_file_chooser_dialog_new (_("Open Audio Source File"), NULL, GTK_FILE_CHOOSER_ACTION_OPEN, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Open"), GTK_RESPONSE_ACCEPT, NULL); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { char *filename; filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); gtk_widget_destroy (dialog); ret = open_source_audio (filename); g_free (filename); if (!ret) warningdialog (_("Could not load the audio file. Note only stereo with sample rate 44100 are supported at present. Use Audacity or similar to convert.")); } else gtk_widget_destroy (dialog); return ret; } gboolean audio_is_playing (void) { return playing; } #endif //DISABLE_AUBIO denemo-2.2.0/src/source/PaxHeaders.19168/sourceaudio.h0000644000000000000000000000013213135434036017313 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.839981805 30 ctime=1500919914.296648472 denemo-2.2.0/src/source/sourceaudio.h0000644000175000017500000000274013135434036021167 0ustar00jjbenhamjjbenham00000000000000// sourceaudio.h // // Copyright 2012 Richard Shann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA 02110-1301, USA. #ifndef SOURCEAUDIO_H #define SOURCEAUDIO_H #include //Opens the audio file filename for mixing with the current score. Closes any previously opened audio for this score. gboolean open_source_audio (gchar * filename); gboolean close_source_audio (void); void rewind_audio (void); gboolean get_audio_sample (float *sample); gboolean audio_is_playing (); void start_audio_playing (gboolean annotate); void stop_audio_playing (void); //get the timing of the next measure, removing it from the list gdouble get_audio_timing (void); gboolean set_lead_in (gdouble secs); gboolean open_source_audio_file (void); #endif denemo-2.2.0/src/source/PaxHeaders.19168/proof.c0000644000000000000000000000013213135434036016111 xustar0030 mtime=1500919838.359981805 30 atime=1500919921.839981805 30 ctime=1500919914.356648472 denemo-2.2.0/src/source/proof.c0000644000175000017500000002214313135434036017764 0ustar00jjbenhamjjbenham00000000000000// proof.c // // Copyright 2012 Richard Shann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA 02110-1301, USA. #include #include "source/proof.h" #include "core/view.h" #include "core/utils.h" #include #include static const gchar *nearest_annotation_text = NULL; static GList *annotated_pages = NULL; static GList *current_page; static GtkWidget *top_window; static gchar *help_text = NULL; //signal handler for link static gint action_for_link (EvView * view, EvLinkAction * obj, EvDocumentModel *model) { EvDocument *doc = ev_document_model_get_document (model); gchar *uri = (gchar *) ev_link_action_get_uri (obj); if(Denemo.printstatus->updating_id && (Denemo.printstatus->typeset_type != TYPESET_ALL_MOVEMENTS)) { warningdialog (_("Cannot do location when only a range of music is typeset. Turn off continuous typesetting or set the range to All Movements")); return TRUE; } if (uri) { gchar **orig_vec = g_strsplit (uri, ":", 6); gchar **vec = orig_vec; if (vec[0] && vec[1] && vec[2] && vec[3] && vec[4] && vec[5] && *vec[5]) vec++;//this will be the case where the file name has a colon in it, (windows drive name) we do not allow for more than one colon. vec[0] is used hereafter. if (g_str_has_prefix (uri, "textedit:") && vec[1] && vec[2] && vec[3]) { DenemoTarget old_target = Denemo.project->movement->target; gboolean ObjectLocated = goto_lilypond_position (atoi (vec[2]), atoi (vec[3])); //sets si->target if (ObjectLocated && nearest_annotation_text) { DenemoScriptParam param; param.string = g_string_new (nearest_annotation_text); paste_comment (NULL, ¶m); g_string_free (param.string, TRUE); } else { warningdialog (_("Object not located, no annotation on page, or empty annotation.\n")); } } } return TRUE; } static void next_page (GtkWidget * button, EvDocumentModel *model) { if (current_page->next) { current_page = current_page->next; } else { current_page = annotated_pages; } ev_document_model_set_page (model, GPOINTER_TO_INT(current_page->data)); } static void prev_page (GtkWidget * button, EvDocumentModel *model) { if (current_page->prev) { current_page = current_page->prev; } else { current_page = g_list_last (annotated_pages); } ev_document_model_set_page (model, GPOINTER_TO_INT(current_page->data)); } static gboolean press (EvView * view, GdkEventButton *event, EvDocumentModel *model) { EvDocument *doc = ev_document_model_get_document (model); gint i = ev_document_model_get_page (model); if (event->button != 1) infodialog (help_text); nearest_annotation_text = NULL; extern EvMappingList * ev_document_annotations_get_annotations(); EvMappingList *mapping_list = ev_document_annotations_get_annotations (doc, ev_document_get_page(doc, i)); if(mapping_list) { gdouble nearest = G_MAXDOUBLE; GList *g = ev_mapping_list_get_list (mapping_list); for (;g;g=g->next) { EvMapping *mapping = g->data; EvAnnotation *annot = mapping->data; gdouble annottx = ev_document_model_get_scale (model)*(mapping->area.x1 + mapping->area.x2)/2; gdouble annotty = ev_document_model_get_scale (model)*(mapping->area.y1 + mapping->area.y2)/2; gdouble dist = (annottx-event->x)*(annottx-event->x) + (annotty-event->y)*(annotty-event->y); if(dist < nearest) { nearest = dist; nearest_annotation_text = ev_annotation_get_contents (annot); } } } //g_print("\n\npress signal (%f, %f) %s\n", event->x, event->y, nearest_annotation_text); return FALSE; } static gboolean find_annotated_pages (EvDocumentModel *model) { EvDocument *doc = ev_document_model_get_document (model); gint i; for (i=0; i< ev_document_get_n_pages(doc);i++) { extern EvMappingList * ev_document_annotations_get_annotations(); EvMappingList *mapping_list = ev_document_annotations_get_annotations (doc, ev_document_get_page(doc, i)); if(mapping_list) { annotated_pages = g_list_append (annotated_pages, GINT_TO_POINTER(i)); } } return (annotated_pages != NULL); } static gchar *locate_file (gchar *filename) { if(!g_file_test(filename, G_FILE_TEST_EXISTS)) { gchar *basename = g_path_get_basename(filename); gchar *pathdir = g_path_get_dirname (Denemo.project->filename->str); filename = g_build_filename (pathdir, basename, NULL); g_free(basename); g_free(pathdir); } return filename; } static EvView * get_view (gchar * filename) { GFile *file; GError *err = NULL; EvView *view = NULL; GList *g; help_text = _("For each annotation on the page click on the (nearby) notehead or rest etc that the annotation refers to. This will insert a comment in the score. Transfer all the annotations in this way before editing the score, otherwise the locations will not match. You can use the EditSimilar (Ctrl-e,e and Ctrl-e,r) command to move from one comment to the next, stopping and editing the score as suggested by the comment."); filename = locate_file (filename); file = g_file_new_for_commandline_arg (filename); gchar *uri = g_file_get_uri (file); g_object_unref (file); EvDocument *doc = ev_document_factory_get_document (uri, &err); if (err) { g_critical("Error creating view from URI <%s> : message was %s", uri, err->message); return NULL; } if (annotated_pages) { gtk_widget_destroy (top_window); top_window = NULL; g_list_free (annotated_pages); current_page = annotated_pages = NULL; } view = (EvView *) ev_view_new (); EvDocumentModel *model = ev_document_model_new_with_document (doc); #ifndef EV_SIZING_FIT_PAGE #define EV_SIZING_FIT_PAGE EV_SIZING_BEST_FIT #endif ev_document_model_set_sizing_mode (model, EV_SIZING_FIT_PAGE); ev_document_model_set_continuous (model, FALSE); ev_view_set_model (view, model); if (find_annotated_pages (model)) { current_page = annotated_pages; ev_document_model_set_page (model, GPOINTER_TO_INT(current_page->data)); top_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_tooltip_text (top_window, help_text); gtk_window_set_title (GTK_WINDOW (top_window), g_strdup_printf ("Denemo - Proof-Read File: %s", filename)); gtk_window_set_default_size (GTK_WINDOW (top_window), 600, 750); GtkWidget *main_vbox = gtk_vbox_new (FALSE, 1); GtkWidget *main_hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (top_window), main_vbox); gtk_box_pack_start (GTK_BOX (main_vbox), main_hbox, FALSE, TRUE, 0); GtkWidget *button = gtk_button_new_with_label (_("Next Annotated Page")); g_signal_connect (button, "clicked", G_CALLBACK (next_page), (gpointer) model); gtk_box_pack_start (GTK_BOX (main_hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Previous Annotated Page")); g_signal_connect (button, "clicked", G_CALLBACK (prev_page), (gpointer) model); gtk_box_pack_start (GTK_BOX (main_hbox), button, FALSE, TRUE, 0); g_signal_connect (G_OBJECT (view), "external-link", G_CALLBACK (action_for_link), (gpointer)model); g_signal_connect (G_OBJECT (view), "button-press-event", G_CALLBACK (press), (gpointer)model); GtkWidget *score_and_scroll_hbox = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_box_pack_start (GTK_BOX (main_vbox), score_and_scroll_hbox, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER (score_and_scroll_hbox), GTK_WIDGET (view)); gtk_widget_show_all (top_window); gtk_window_present (GTK_WINDOW (top_window)); //this doesn't appear to work... return view; } else { warningdialog (_("This PDF file contains no annotations. It has to be a PDF file generated by Denemo for the current score to which annotations have been added.")); return NULL; } } gboolean open_proofread_file (gchar * filename) { if (Denemo.non_interactive) return FALSE; EvView *eview = get_view (filename); return eview != NULL; } denemo-2.2.0/src/source/PaxHeaders.19168/proof.h0000644000000000000000000000013213135434036016116 xustar0030 mtime=1500919838.359981805 30 atime=1500919921.849981805 30 ctime=1500919914.356648472 denemo-2.2.0/src/source/proof.h0000644000175000017500000000211213135434036017763 0ustar00jjbenhamjjbenham00000000000000// proof.h // // Copyright 2014 Richard Shann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA 02110-1301, USA. #ifndef PROOF_H #define PROOF_H #include /* open a PDF of the current score which has been proof-read. The proof-reading marks will be visible and the locations can be followed */ gboolean open_proofread_file (gchar * filename); #endif denemo-2.2.0/src/source/PaxHeaders.19168/source.c0000644000000000000000000000013213135434036016264 xustar0030 mtime=1500919838.359981805 30 atime=1500919921.849981805 30 ctime=1500919914.353315139 denemo-2.2.0/src/source/source.c0000644000175000017500000004302313135434036020137 0ustar00jjbenhamjjbenham00000000000000// source.c // // Copyright 2012 Richard Shann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA 02110-1301, USA. #include #include "source/source.h" #include "core/view.h" #include "core/utils.h" #include static gboolean Dragging; static GdkPoint DragStart, DragEnd; typedef struct fileview { gchar *filename; EvView *view; GList *highlights;//data are GdkRectangle* } fileview; static GList *FileViews = NULL; static void set_window_position (EvView * view, gint x, gint y, gint page) { EvDocumentModel *model = (EvDocumentModel *) g_object_get_data (G_OBJECT (view), "model"); ev_document_model_set_page (model, page); } static void get_window_position (EvView * view, gint * x, gint * y, gint * page, gdouble * scale) { GtkAdjustment *adj = g_object_get_data (G_OBJECT (view), "hadj"); *x = (gint) gtk_adjustment_get_value (adj); adj = g_object_get_data (G_OBJECT (view), "vadj"); *y = gtk_adjustment_get_value (adj); EvDocumentModel *model = (EvDocumentModel *) g_object_get_data (G_OBJECT (view), "model"); *scale = ev_document_model_get_scale (model); *page = ev_document_model_get_page (model); } #define MARKER (24) static GdkRectangle Mark; static GdkRectangle OldMark; static void get_window_size (EvView* view, gint * w, gint * h) { GdkWindow *window; GtkWidget *top_vbox = gtk_widget_get_toplevel (GTK_WIDGET (view)); if (!GTK_IS_LAYOUT (top_vbox)) window = gtk_widget_get_window (GTK_WIDGET (top_vbox)); else window = gtk_layout_get_bin_window (GTK_LAYOUT (top_vbox)); if (window) { EvDocumentModel *model; model = g_object_get_data (G_OBJECT (view), "model"); //there is no ev_view_get_model(), when there is use it gdouble scale = ev_document_model_get_scale (model); #if GTK_MAJOR_VERSION==2 gdk_drawable_get_size (window, w, h); #else *w = gdk_window_get_width (window); *h = gdk_window_get_height (window); #endif *w *= scale; *h *= scale; } } static gboolean overdraw (cairo_t * cr, GtkWidget* view) { gint x, y, page; gdouble scale; get_window_position ((EvView*)view, &x, &y, &page, &scale); // cairo_scale( cr, Denemo.project->movement->preview_zoom, Denemo.project->movement->preview_zoom ); cairo_translate (cr, -x, -y); fileview *theview = g_object_get_data (G_OBJECT(view), "fileview"); GList *Highlights = theview->highlights; if (Highlights) { GList *g; for (g=Highlights;g;g = g->next) { GdkRectangle *r = (GdkRectangle*)g->data; cairo_set_source_rgba (cr, 0.5, 0.5, 0.5, 0.5); cairo_rectangle (cr, r->x * scale, r->y * scale, abs(r->width)* scale, abs(r->height)* scale); // cairo_rectangle (cr, r->x , r->y , abs(r->width), abs(r->height)); cairo_fill (cr); // cairo_clip (cr);// } } if (Dragging) { gdouble xx = MIN (DragStart.x, DragEnd.x); gdouble yy = MIN (DragStart.y, DragEnd.y); cairo_set_source_rgba (cr, 0.5, 0.5, 0.5, 0.5); cairo_rectangle (cr, xx * scale, yy * scale, abs(DragStart.x-DragEnd.x) * scale, abs(DragStart.y-DragEnd.y) * scale); cairo_fill (cr); cairo_set_source_rgb (cr, 0, 0, 0); cairo_rectangle (cr, xx * scale, yy * scale, abs(DragStart.x-DragEnd.x) * scale, abs(DragStart.y-DragEnd.y) * scale); cairo_stroke (cr); } if (Mark.width) { cairo_set_source_rgba (cr, 0.5, 0.5, 1.0, 0.5); cairo_rectangle (cr, Mark.x * scale, Mark.y * scale, MARKER, MARKER); //this is not right once there is space outside the document visible inside the window. cairo_fill (cr); cairo_set_source_rgb (cr, 0, 0, 0); cairo_rectangle (cr, Mark.x * scale, Mark.y * scale, MARKER, MARKER); cairo_stroke (cr); } if (OldMark.width) { cairo_set_source_rgba (cr, 1, 0.5, 0.5, 0.5); cairo_rectangle (cr, OldMark.x * scale, OldMark.y * scale, MARKER, MARKER); //this is not right once there is space outside the document visible inside the window. cairo_fill (cr); cairo_set_source_rgb (cr, 0, 0, 0); cairo_rectangle (cr, OldMark.x * scale, OldMark.y * scale, MARKER, MARKER); cairo_stroke (cr); } return TRUE; } #if GTK_MAJOR_VERSION==3 static gint draw_event (GtkWidget * view, cairo_t * cr) { return overdraw (cr, view); } #else static gint draw_event (GtkWidget * view, GdkEventExpose * event) { /* Setup a cairo context for rendering and clip to the exposed region. */ cairo_t *cr = gdk_cairo_create (event->window); gdk_cairo_region (cr, event->region); cairo_clip (cr); overdraw (cr, view); cairo_destroy (cr); return TRUE; } #endif static GList *locate_highlight (GtkWidget *view, gint x, gint y) { fileview *theview = g_object_get_data (G_OBJECT(view), "fileview"); GList *g; for (g = theview->highlights; g; g = g->next) { GdkRectangle *rect = (GdkRectangle *)g->data; if (x > rect->x && (x< rect->x+rect->width) && (y> rect->y) && (y < rect->y + rect->height)) return g; } return NULL; } static void remove_highlight (GtkWidget *menu, GList *highlight) { if (highlight) { fileview *theview = g_object_get_data (G_OBJECT(menu), "fileview"); g_free (highlight->data); theview->highlights = g_list_delete_link (theview->highlights, highlight); } } static void remove_highlights (GtkWidget *view) { fileview *theview = g_object_get_data (G_OBJECT(view), "fileview"); g_list_free_full (theview->highlights, g_free); theview->highlights = NULL; } static void help (void) { infodialog (_("To insert a link at the Denemo cursor position to a point in this document\nright-click on the point.\nLater you will be able to re-open the document at that point by right clicking on the link in the Denemo display.\nTo shade in gray parts of the source that you don't want to see drag over the area.\nUse this for transcribing from a score with many parts to ease following the part from system to system.\nClick on a grayed-out patch to remove it.")); } static gboolean motion_notify (EvView * view, GdkEventMotion * event) { if (Dragging) {gint x, y, page; gdouble scale; get_window_position (view, &x, &y, &page, &scale); x += event->x; y += event->y; DragEnd.x = x/scale; //DragEnd.x = x;///scale; DragEnd.y = y/scale; //DragEnd.y = y;//y/scale; gtk_widget_queue_draw (GTK_WIDGET (view)); } return TRUE; } static gint button_release (EvView * view, GdkEventButton * event) { fileview *theview = g_object_get_data (G_OBJECT(view), "fileview"); if (Dragging && ((abs(DragEnd.x-DragStart.x)>5) || (abs(DragEnd.y-DragStart.y)>5))) //do not allow very small patches, difficult to remove { GdkRectangle *r = g_malloc (sizeof (GdkRectangle)); r->x = MIN(DragStart.x, DragEnd.x); r->y = MIN(DragStart.y, DragEnd.y); r->width = abs (DragStart.x-DragEnd.x); r->height = abs (DragStart.y-DragEnd.y); theview->highlights = g_list_append (theview->highlights, r); } else if (event->button==1) { static gboolean once; if (!once) help (); once = TRUE; } Dragging = FALSE; gtk_widget_queue_draw (GTK_WIDGET (view)); switch_back_to_main_window (); return TRUE; } static void popup_highlight_menu (GtkWidget *view, GList *highlight, GdkEventButton *event) { GtkWidget *menu = gtk_menu_new (); GtkWidget *item = gtk_menu_item_new_with_label (_("Help")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (help), NULL); item = gtk_menu_item_new_with_label (_("Remove this Shading")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_object_set_data (G_OBJECT (item), "fileview", g_object_get_data (G_OBJECT (view), "fileview")); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (remove_highlight), highlight); item = gtk_menu_item_new_with_label (_("Remove all Shading")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (remove_highlights), view); gtk_widget_show_all (menu); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, event->time); } static gint button_press (EvView * view, GdkEventButton * event) { if (event->button == 1) { gint x, y, page; gdouble scale; get_window_position (view, &x, &y, &page, &scale); x += event->x; y += event->y; GList *highlight = locate_highlight (GTK_WIDGET(view), (gint)(x/scale), (gint)(y/scale)); if (highlight) { popup_highlight_menu (GTK_WIDGET(view), highlight, event); } else { DragStart.x = x/scale; DragStart.y = y/scale; DragEnd.x = DragStart.x; DragEnd.y = DragStart.y; Dragging = TRUE; } } else { gint x, y, page; gdouble scale; GdkRectangle candidate; candidate = Mark; get_window_position (view, &x, &y, &page, &scale); gchar *filename = g_object_get_data (G_OBJECT (view), "filename"); x += event->x; y += event->y; GList *highlight = locate_highlight (GTK_WIDGET(view), (gint)(x/scale), (gint)(y/scale)); if (highlight) { popup_highlight_menu (GTK_WIDGET(view), highlight, event); } else { gchar *escaped = g_strescape(filename, ""); gchar *text = g_strdup_printf ("(InsertLink \"%s:%d:%d:%d\")", escaped, (gint) (x / scale), (gint) (y / scale), page); g_free(escaped); Mark.x = (x - MARKER / 2) / scale; Mark.y = (y - MARKER / 2) / scale; Mark.width = Mark.height = MARKER; if (!gdk_rectangle_intersect (&Mark, &candidate, NULL)) OldMark = candidate; gtk_widget_queue_draw (GTK_WIDGET (view)); call_out_to_guile (text); switch_back_to_main_window (); } } return FALSE; } static void next_page (GtkWidget * button, EvView * view) { ev_view_next_page (view); } static void prev_page (GtkWidget * button, EvView * view) { ev_view_previous_page (view); } static gboolean position_source_window (EvView * view) { GtkWidget *top_vbox = gtk_widget_get_toplevel (GTK_WIDGET (view)); if (Denemo.project->source_scale) { //gtk_widget_set_size_request(GTK_WIDGET(top_vbox), Denemo.project->source_width, Denemo.project->source_height); //EvDocumentModel *model = (EvDocumentModel*)g_object_get_data(G_OBJECT(view), "model"); //ev_document_model_set_scale(model, Denemo.project->source_scale/1000.0); gtk_window_move (GTK_WINDOW (top_vbox), Denemo.project->source_x, Denemo.project->source_y); } else gtk_window_present (GTK_WINDOW (top_vbox)); return FALSE; } static gchar *locate_file (gchar *filename) { if(!g_file_test(filename, G_FILE_TEST_EXISTS)) { gchar *basename = g_path_get_basename(filename); gchar *pathdir = g_path_get_dirname (Denemo.project->filename->str); filename = g_build_filename (pathdir, basename, NULL); g_free(basename); g_free(pathdir); } return filename; } static EvView * get_view (gchar * filename) { GFile *file; GError *err = NULL; EvView *view = NULL; GList *g; filename = locate_file (filename); for (g = FileViews; g; g = g->next) if (!strcmp (((fileview *) g->data)->filename, filename)) return (((fileview *) g->data)->view); file = g_file_new_for_commandline_arg (filename); gchar *uri = g_file_get_uri (file); g_object_unref (file); EvDocument *doc = ev_document_factory_get_document (uri, &err); if (err) { g_critical("Error creating view from URI <%s> : message was %s", uri, err->message); return NULL; } OldMark.width = Mark.width = 0; //g_list_free_full (Highlights, g_free); //Highlights = NULL; view = (EvView *) ev_view_new (); EvDocumentModel *model = ev_document_model_new_with_document (doc); //ev_document_model_set_continuous(model, FALSE); ev_view_set_model (view, model); GtkWidget *top_vbox = gtk_window_new (GTK_WINDOW_TOPLEVEL); // use a dialog when the user clicks instead gtk_widget_set_tooltip_text (top_vbox, HELP_TEXT); gtk_window_set_title (GTK_WINDOW (top_vbox), g_strdup_printf ("Denemo - Source File: %s", filename)); g_idle_add ((GSourceFunc) position_source_window, view); if (Denemo.project->source_scale) gtk_window_set_default_size (GTK_WINDOW (top_vbox), Denemo.project->source_width, Denemo.project->source_height); else gtk_window_set_default_size (GTK_WINDOW (top_vbox), 600, 750); g_signal_connect (G_OBJECT (top_vbox), "delete-event", G_CALLBACK (gtk_widget_hide), NULL); #if GTK_MAJOR_VERSION==3 g_signal_connect_after (G_OBJECT (view), "draw", G_CALLBACK (draw_event), NULL); #else g_signal_connect_after (G_OBJECT (view), "expose_event", G_CALLBACK (draw_event), NULL); #endif g_signal_connect (G_OBJECT (view), "button_press_event", G_CALLBACK (button_press), NULL); g_signal_connect (G_OBJECT (view), "button_release_event", G_CALLBACK (button_release), NULL); g_signal_connect (G_OBJECT (view), "motion_notify_event", G_CALLBACK (motion_notify), NULL); GtkWidget *main_vbox = gtk_vbox_new (FALSE, 1); GtkWidget *main_hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (top_vbox), main_vbox); gtk_box_pack_start (GTK_BOX (main_vbox), main_hbox, FALSE, TRUE, 0); //FIXM put next etc buttons in hbox GtkWidget *button = gtk_button_new_with_label ("Next"); g_signal_connect (button, "clicked", G_CALLBACK (next_page), (gpointer) view); gtk_box_pack_start (GTK_BOX (main_hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label ("Previous"); g_signal_connect (button, "clicked", G_CALLBACK (prev_page), (gpointer) view); gtk_box_pack_start (GTK_BOX (main_hbox), button, FALSE, TRUE, 0); GtkAdjustment *viewvadjustment = GTK_ADJUSTMENT (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_vscrollbar_new (GTK_ADJUSTMENT (viewvadjustment)); GtkAdjustment *viewhadjustment = GTK_ADJUSTMENT (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_hscrollbar_new (GTK_ADJUSTMENT (viewhadjustment)); GtkWidget *score_and_scroll_hbox = gtk_scrolled_window_new (viewhadjustment, viewvadjustment); gtk_box_pack_start (GTK_BOX (main_vbox), score_and_scroll_hbox, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER (score_and_scroll_hbox), GTK_WIDGET (view)); g_object_set_data (G_OBJECT (view), "vadj", viewvadjustment); g_object_set_data (G_OBJECT (view), "hadj", viewhadjustment); g_object_set_data (G_OBJECT (view), "filename", g_strdup (filename)); g_object_set_data (G_OBJECT (view), "model", model); gtk_widget_show_all (top_vbox); fileview *theview = (fileview *) g_malloc0 (sizeof (fileview)); theview->filename = g_strdup (filename); theview->view = view; g_object_set_data (G_OBJECT (view), "fileview", theview); FileViews = g_list_append (FileViews, theview); return view; } static gboolean position_view (EvView * eview, gint x, gint y, gint page) { if (eview == NULL) return FALSE; set_window_position (eview, x, y, page); Mark.width = Mark.height = MARKER; Mark.x = x - MARKER / 2; Mark.y = y - MARKER / 2; OldMark.width = 0; gtk_widget_show (gtk_widget_get_toplevel (GTK_WIDGET (eview))); gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (eview)))); return TRUE; } gboolean open_source (gchar * filename, gint x, gint y, gint page) { if (Denemo.non_interactive) return FALSE; EvView *eview = get_view (filename); gboolean ret = position_view (eview, x, y, page); switch_back_to_main_window (); return ret; } //Finds the scale and position of the window (first) source file. Returns the Denemo.project->scale_* values if the window is not visible. Returns FALSE if none //FIXME, it would be better to set Denemo.project->scale_* values in a "configure" callback on the window. gboolean source_position (gint * x, gint * y, gint * width, gint * height, gint * scale) { if (FileViews == NULL) return FALSE; EvView *view = ((fileview *) FileViews->data)->view; GtkWindow *top = (GtkWindow *) gtk_widget_get_toplevel (GTK_WIDGET (view)); if(gtk_widget_get_visible(GTK_WIDGET(top))) { gtk_window_get_position (top, x, y); gtk_window_get_size (top, width, height); EvDocumentModel *model = (EvDocumentModel *) g_object_get_data (G_OBJECT (view), "model"); *scale = (int) 1000 *ev_document_model_get_scale (model); if(!*scale) g_warning("Scale of document is zero!!!"); } else { *x = Denemo.project->source_x; *y = Denemo.project->source_y; *scale = Denemo.project->source_scale; } return TRUE; } denemo-2.2.0/src/source/PaxHeaders.19168/source.h0000644000000000000000000000013213135434036016271 xustar0030 mtime=1500919838.363315139 30 atime=1500919921.859981805 30 ctime=1500919914.353315139 denemo-2.2.0/src/source/source.h0000644000175000017500000000260313135434036020143 0ustar00jjbenhamjjbenham00000000000000// source.h // // Copyright 2012 Richard Shann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA 02110-1301, USA. #ifndef SOURCE_H #define SOURCE_H #include //Opens a window with an evince widget displaying filename marked scrolled to the internal position x, y //keeps a list of opened files and re-uses the already opened file if there is one. gboolean open_source (gchar * filename, gint x, gint y, gint page); //gets the position in root coordinates, width and height of the source window and document scale of the (first) source file, returning FALSE if none gboolean source_position (gint * x, gint * y, gint * width, gint * height, gint * scale); #endif denemo-2.2.0/PaxHeaders.19168/config.h.in0000644000000000000000000000007413135434042014556 xustar0030 atime=1500919921.866648472 30 ctime=1500919912.859981805 denemo-2.2.0/config.h.in0000644000175000017500000000646213135434042016432 0ustar00jjbenhamjjbenham00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Include pthread support for binary relocation? */ #undef BR_PTHREAD /* Use binary relocation? */ #undef ENABLE_BINRELOC /* always defined to indicate that i18n is enabled */ #undef ENABLE_NLS /* The domain to use with gettext */ #undef GETTEXT_PACKAGE /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #undef HAVE_BIND_TEXTDOMAIN_CODESET /* Define to 1 if you have the `dcgettext' function. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H /* Define to 1 if file locking is available */ #undef HAVE_FILE_LOCKS /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define if you have the iconv() function. */ #undef HAVE_ICONV /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if you have the `pthread' library (-lpthread). */ #undef HAVE_LIBPTHREAD /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if SIGCHLD signal is available */ #undef HAVE_SIGCHLD /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOUNDCARD_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the header file. */ #undef HAVE_WAIT_H /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* set package source dir */ #undef PACKAGE_SOURCE_DIR /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ #undef YYTEXT_POINTER denemo-2.2.0/PaxHeaders.19168/tools0000644000000000000000000000013213135434151013612 xustar0030 mtime=1500919913.086648472 30 atime=1500919914.539981806 30 ctime=1500919913.086648472 denemo-2.2.0/tools/0000755000175000017500000000000013135434151015540 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/tools/PaxHeaders.19168/denemo_file_update0000644000000000000000000000013213135434036017424 xustar0030 mtime=1500919838.396648472 30 atime=1500919921.866648472 30 ctime=1500919913.086648472 denemo-2.2.0/tools/denemo_file_update0000755000175000017500000000012113135434036021272 0ustar00jjbenhamjjbenham00000000000000#!/bin/sh find $1 -name "*.denemo" -exec denemo -n -a "(d-Save)(d-Quit)" '{}' \; denemo-2.2.0/tools/PaxHeaders.19168/cairo_svg2path.c0000644000000000000000000000013213135434036016750 xustar0030 mtime=1500919838.396648472 30 atime=1500919921.866648472 30 ctime=1500919913.083315139 denemo-2.2.0/tools/cairo_svg2path.c0000644000175000017500000004410613135434036020626 0ustar00jjbenhamjjbenham00000000000000/* * cairo_svg2path.c * * Copyright (C) 2012 - Juan pablo Ugarte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #define GETTEXT_PACKAGE "cairo-svg2path" #include #include #include typedef struct { const gchar *id; gchar *path; gdouble width, height; } ParseData; static void start_element (GMarkupParseContext * context, const gchar * element_name, const gchar ** attribute_names, const gchar ** attribute_values, gpointer user_data, GError ** error) { ParseData *state = user_data; if (strcmp (element_name, "svg") == 0) { gint i; for (i = 0; attribute_names[i]; i++) { if (!g_strcmp0 (attribute_names[i], "width")) state->width = g_strtod (attribute_values[i], NULL); else if (!g_strcmp0 (attribute_names[i], "height")) state->height = g_strtod (attribute_values[i], NULL); } } else if (strcmp (element_name, "path") == 0) { const gchar *id, *path; gint i; for (i = 0; attribute_names[i]; i++) { if (!g_strcmp0 (attribute_names[i], "d")) path = attribute_values[i]; else if (!g_strcmp0 (attribute_names[i], "id")) id = attribute_values[i]; } if ((state->id && !g_strcmp0 (id, state->id)) || state->path == NULL) state->path = g_strdup (path); return; } } gchar * parse_svg_file (const gchar * filename, const gchar * path, gdouble * width, gdouble * height, GError ** error) { GMarkupParser parser = { start_element }; ParseData state = { path, NULL }; GMarkupParseContext *context; gchar *contents, *retval; gsize size; if (!g_file_get_contents (filename, &contents, &size, error)) return NULL; context = g_markup_parse_context_new (&parser, G_MARKUP_TREAT_CDATA_AS_TEXT | G_MARKUP_PREFIX_ERROR_POSITION, &state, NULL); if (g_markup_parse_context_parse (context, contents, size, error) && g_markup_parse_context_end_parse (context, error)) { retval = state.path; if (width) *width = state.width; if (height) *height = state.height; } else { g_free (state.path); retval = NULL; } g_markup_parse_context_free (context); g_free (contents); return retval; } /* * These two data structures are taken from cairo */ typedef enum { CAIRO_PATH_MOVE_TO, CAIRO_PATH_LINE_TO, CAIRO_PATH_CURVE_TO, CAIRO_PATH_CLOSE_PATH } cairo_path_data_type_t; typedef union { struct { cairo_path_data_type_t type; int length; } header; struct { double x, y; } point; } cairo_path_data_t; #define N_ELEMENTS 1024 /**********************************************************/ /* Below is the code that parses the actual path data. */ /* */ /* This code is taken from librsvg and was originally */ /* written by Raph Levien for Gill. */ /**********************************************************/ typedef struct { cairo_path_data_t *path; gint size; gint alloc_size; gdouble cpx, cpy; /* current point */ gdouble rpx, rpy; /* reflection point (for 's' and 't' commands) */ gchar cmd; /* current command (lowercase) */ gint param; /* number of parameters */ gboolean rel; /* true if relative coords */ gdouble params[7]; /* parameters that have been parsed */ } ParsePathContext; static inline void ctx_realloc_path (ParsePathContext * ctx) { if ((ctx->size + 1) >= ctx->alloc_size) { ctx->alloc_size += N_ELEMENTS; ctx->path = g_realloc_n (ctx->path, ctx->alloc_size, sizeof (cairo_path_data_t)); } } static inline void ctx_point_append (ParsePathContext * ctx, double x, double y) { cairo_path_data_t *data = &ctx->path[ctx->size]; data->point.x = x; data->point.y = y; ctx->size++; ctx_realloc_path (ctx); } static inline void ctx_header_append (ParsePathContext * ctx, cairo_path_data_type_t type, int length, double x, double y) { cairo_path_data_t *data = &ctx->path[ctx->size]; data->header.type = type; data->header.length = length; ctx->size++; ctx_realloc_path (ctx); if (length > 1) ctx_point_append (ctx, x, y); } /* supply defaults for missing parameters, assuming relative coordinates are to be interpreted as x,y */ static void parse_path_default_xy (ParsePathContext * ctx, gint n_params) { gint i; if (ctx->rel) { for (i = ctx->param; i < n_params; i++) { if (i > 2) ctx->params[i] = ctx->params[i - 2]; else if (i == 1) ctx->params[i] = ctx->cpy; else if (i == 0) /* we shouldn't get here (ctx->param > 0 as precondition) */ ctx->params[i] = ctx->cpx; } } else { for (i = ctx->param; i < n_params; i++) ctx->params[i] = 0.0; } } static void parse_path_do_cmd (ParsePathContext * ctx, gboolean final) { switch (ctx->cmd) { case 'm': /* moveto */ if (ctx->param == 2 || final) { parse_path_default_xy (ctx, 2); ctx->cpx = ctx->rpx = ctx->params[0]; ctx->cpy = ctx->rpy = ctx->params[1]; ctx_header_append (ctx, CAIRO_PATH_MOVE_TO, 2, ctx->cpx, ctx->cpy); ctx->param = 0; } break; case 'l': /* lineto */ if (ctx->param == 2 || final) { parse_path_default_xy (ctx, 2); ctx->cpx = ctx->rpx = ctx->params[0]; ctx->cpy = ctx->rpy = ctx->params[1]; ctx_header_append (ctx, CAIRO_PATH_LINE_TO, 2, ctx->cpx, ctx->cpy); ctx->param = 0; } break; case 'c': /* curveto */ if (ctx->param == 6 || final) { gdouble x, y; parse_path_default_xy (ctx, 6); x = ctx->params[0]; y = ctx->params[1]; ctx->rpx = ctx->params[2]; ctx->rpy = ctx->params[3]; ctx->cpx = ctx->params[4]; ctx->cpy = ctx->params[5]; ctx_header_append (ctx, CAIRO_PATH_CURVE_TO, 4, x, y); ctx_point_append (ctx, ctx->rpx, ctx->rpy); ctx_point_append (ctx, ctx->cpx, ctx->cpy); ctx->param = 0; } break; case 's': /* smooth curveto */ if (ctx->param == 4 || final) { gdouble x, y; parse_path_default_xy (ctx, 4); x = 2 * ctx->cpx - ctx->rpx; y = 2 * ctx->cpy - ctx->rpy; ctx->rpx = ctx->params[0]; ctx->rpy = ctx->params[1]; ctx->cpx = ctx->params[2]; ctx->cpy = ctx->params[3]; ctx_header_append (ctx, CAIRO_PATH_CURVE_TO, 4, x, y); ctx_point_append (ctx, ctx->rpx, ctx->rpy); ctx_point_append (ctx, ctx->cpx, ctx->cpy); ctx->param = 0; } break; case 'h': /* horizontal lineto */ if (ctx->param == 1) { ctx->cpx = ctx->rpx = ctx->params[0]; ctx_header_append (ctx, CAIRO_PATH_LINE_TO, 2, ctx->cpx, ctx->cpy); ctx->param = 0; } break; case 'v': /* vertical lineto */ if (ctx->param == 1) { ctx->cpy = ctx->rpy = ctx->params[0]; ctx_header_append (ctx, CAIRO_PATH_LINE_TO, 2, ctx->cpx, ctx->cpy); ctx->param = 0; } break; case 'q': /* quadratic bezier curveto */ if (ctx->param == 4 || final) { parse_path_default_xy (ctx, 4); ctx->rpx = ctx->params[0]; ctx->rpy = ctx->params[1]; ctx->cpx = ctx->params[2]; ctx->cpy = ctx->params[3]; g_warning ("quadratic bezier curveto not implemented"); ctx->param = 0; } break; case 't': /* truetype quadratic bezier curveto */ if (ctx->param == 2 || final) { parse_path_default_xy (ctx, 2); ctx->rpx = 2 * ctx->cpx - ctx->rpx; ctx->rpy = 2 * ctx->cpy - ctx->rpy; ctx->cpx = ctx->params[0]; ctx->cpy = ctx->params[1]; g_warning ("truetype quadratic bezier curveto not implemented"); ctx->param = 0; } else if (final) { if (ctx->param > 2) { parse_path_default_xy (ctx, 4); ctx->rpx = ctx->params[0]; ctx->rpy = ctx->params[1]; ctx->cpx = ctx->params[2]; ctx->cpy = ctx->params[3]; g_warning ("conicto not implemented"); } else { parse_path_default_xy (ctx, 2); ctx->cpx = ctx->rpx = ctx->params[0]; ctx->cpy = ctx->rpy = ctx->params[1]; ctx_header_append (ctx, CAIRO_PATH_LINE_TO, 2, ctx->cpx, ctx->cpy); } ctx->param = 0; } break; case 'a': if (ctx->param == 7 || final) { ctx->cpx = ctx->rpx = ctx->params[5]; ctx->cpy = ctx->rpy = ctx->params[6]; g_warning ("arcto not implemented"); ctx->param = 0; } break; default: ctx->param = 0; break; } } static cairo_path_data_t * parse_path_data (const gchar * data, gint * n_elements) { ParsePathContext ctx = { 0, }; gboolean in_num = FALSE; gboolean in_frac = FALSE; gboolean in_exp = FALSE; gboolean exp_wait_sign = FALSE; gdouble val = 0.0; gchar c = 0; gint sign = 0; gint exp = 0; gint exp_sign = 0; gdouble frac = 0.0; gint i; ctx.alloc_size = N_ELEMENTS; ctx.size = 0; ctx.path = g_try_malloc0_n (ctx.alloc_size, sizeof (cairo_path_data_t)); for (i = 0;; i++) { c = data[i]; if (c >= '0' && c <= '9') { /* digit */ if (in_num) { if (in_exp) { exp = (exp * 10) + c - '0'; exp_wait_sign = FALSE; } else if (in_frac) val += (frac *= 0.1) * (c - '0'); else val = (val * 10) + c - '0'; } else { in_num = TRUE; in_frac = FALSE; in_exp = FALSE; exp = 0; exp_sign = 1; exp_wait_sign = FALSE; val = c - '0'; sign = 1; } } else if (c == '.') { if (!in_num) { in_num = TRUE; val = 0; } in_frac = TRUE; frac = 1; } else if ((c == 'E' || c == 'e') && in_num) { in_exp = TRUE; exp_wait_sign = TRUE; exp = 0; exp_sign = 1; } else if ((c == '+' || c == '-') && in_exp) { exp_sign = c == '+' ? 1 : -1; } else if (in_num) { /* end of number */ val *= sign * pow (10, exp_sign * exp); if (ctx.rel) { /* Handle relative coordinates. This switch statement attempts to determine _what_ the coords are relative to. This is underspecified in the 12 Apr working draft. */ switch (ctx.cmd) { case 'l': case 'm': case 'c': case 's': case 'q': case 't': /* rule: even-numbered params are x-relative, odd-numbered are y-relative */ if ((ctx.param & 1) == 0) val += ctx.cpx; else if ((ctx.param & 1) == 1) val += ctx.cpy; break; case 'a': /* rule: sixth and seventh are x and y, rest are not relative */ if (ctx.param == 5) val += ctx.cpx; else if (ctx.param == 6) val += ctx.cpy; break; case 'h': /* rule: x-relative */ val += ctx.cpx; break; case 'v': /* rule: y-relative */ val += ctx.cpy; break; } } ctx.params[ctx.param++] = val; parse_path_do_cmd (&ctx, FALSE); in_num = FALSE; } if (c == '\0') break; else if ((c == '+' || c == '-') && !exp_wait_sign) { sign = c == '+' ? 1 : -1; val = 0; in_num = TRUE; in_frac = FALSE; in_exp = FALSE; exp = 0; exp_sign = 1; exp_wait_sign = FALSE; } else if (c == 'z' || c == 'Z') { if (ctx.param) parse_path_do_cmd (&ctx, TRUE); ctx_header_append (&ctx, CAIRO_PATH_CLOSE_PATH, 1, 0, 0); } else if (c >= 'A' && c <= 'Z' && c != 'E') { if (ctx.param) parse_path_do_cmd (&ctx, TRUE); ctx.cmd = c + 'a' - 'A'; ctx.rel = FALSE; } else if (c >= 'a' && c <= 'z' && c != 'e') { if (ctx.param) parse_path_do_cmd (&ctx, TRUE); ctx.cmd = c; ctx.rel = TRUE; } /* else c _should_ be whitespace or , */ } if (n_elements) *n_elements = ctx.size; return ctx.path; } static void path_data_append_csource (GString * string, gchar * name, cairo_path_data_t * path_data, gint size, gdouble width, gdouble height) { gint i; g_string_append_printf (string, "static cairo_path_data_t %s_data[] = {\n", name); for (i = 0; i < size; i += path_data[i].header.length) { cairo_path_data_t *data = &path_data[i]; gboolean not_last = i + 1 < size; g_string_append_printf (string, "\t{.header.type = %d, .header.length = %d}%s", data->header.type, data->header.length, (not_last) ? ",\n" : ""); switch (data->header.type) { case CAIRO_PATH_MOVE_TO: case CAIRO_PATH_LINE_TO: g_string_append_printf (string, "\t{.point.x = %lf, .point.y = %lf}%s", data[1].point.x, data[1].point.y, (not_last) ? ",\n" : ""); break; case CAIRO_PATH_CURVE_TO: g_string_append_printf (string, "\t{.point.x = %lf, .point.y = %lf},\n" "\t{.point.x = %lf, .point.y = %lf},\n" "\t{.point.x = %lf, .point.y = %lf}%s", data[1].point.x, data[1].point.y, data[2].point.x, data[2].point.y, data[3].point.x, data[3].point.y, (not_last) ? ",\n" : ""); break; case CAIRO_PATH_CLOSE_PATH: break; } } g_string_append_printf (string, "\n};\n\n" "cairo_path_t %s_path = {0, %s_data, %d};\n\n", name, name, size); } static void path_data_append_cheader_start (GString * string, gchar * name) { gchar *NAME = g_utf8_strup (name, -1); g_string_printf (string, "#ifndef __%s_H__\n#define __%s_H__\n\n", NAME, NAME); g_free (NAME); } static void path_data_append_cheader_end (GString * string, gchar * name) { gchar *NAME = g_utf8_strup (name, -1); g_string_append_printf (string, "\n#endif /* __%s_H__ */\n", NAME); g_free (NAME); } static void path_data_append_cheader (GString * string, gchar * name, gdouble width, gdouble height) { gchar *NAME = g_utf8_strup (name, -1); g_string_append_printf (string, "#define %s_WIDTH %lf\n" "#define %s_HEIGHT %lf\n" "extern cairo_path_t %s_path;\n\n", NAME, width, NAME, height, name); g_free (NAME); } /* gcc cairo_svg2path.c -o cairo_svg2path `pkg-config --libs --cflags glib-2.0` -lm */ int main (int argc, char **argv) { static gchar **filenames, *target; static GOptionEntry entries[] = { {"target", 't', 0, G_OPTION_ARG_FILENAME, &target, "name of the output file", NULL}, {G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &filenames, "A SVG file to convert", NULL}, {NULL} }; GOptionContext *context; GError *error = NULL; gchar *basename; GString *string; gboolean dump_header; gint i; context = g_option_context_new ("FILES - Convert path data in a SVG to a cairo_path_t"); g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE); if (!g_option_context_parse (context, &argc, &argv, &error)) { g_warning ("option parsing failed: %s\n", error->message); return 1; } if (!target || !filenames) { g_print ("%s", g_option_context_get_help (context, TRUE, NULL)); return 1; } basename = g_path_get_basename (target); g_strdelimit (basename, ".", '\0'); dump_header = g_str_has_suffix (target, ".h"); if (dump_header) { string = g_string_new (""); path_data_append_cheader_start (string, basename); } else string = g_string_new ("#include \n\n"); for (i = 0; filenames[i]; i++) { gdouble width, height; gchar *path; path = parse_svg_file (filenames[i], NULL, &width, &height, &error); if (path) { cairo_path_data_t *path_data; gint size; path_data = parse_path_data (path, &size); if (dump_header) path_data_append_cheader (string, basename, width, height); else path_data_append_csource (string, basename, path_data, size, width, height); } else g_printerr ("Could not parse SVG file %s", filenames[i]); } if (dump_header) path_data_append_cheader_end (string, basename); g_file_set_contents (target, string->str, -1, NULL); g_free (basename); g_string_free (string, TRUE); return 0; } denemo-2.2.0/tools/PaxHeaders.19168/generate_source.c0000644000000000000000000000013213135434036017207 xustar0030 mtime=1500919838.399981805 30 atime=1500919921.886648473 30 ctime=1500919913.086648472 denemo-2.2.0/tools/generate_source.c0000644000175000017500000000054413135434036021063 0ustar00jjbenhamjjbenham00000000000000/* * generate_source.c * * Disused Program for generating source code from the old unmenued commands * * for Denemo, a gtk+ frontend to GNU Lilypond * (C) 2007 Richard Shann * * License: this file may be used under the FSF GPL version 2 */ #include int main () { printf("This program is no longer needed for Denemo"); return -1; } denemo-2.2.0/tools/PaxHeaders.19168/Makefile.am0000644000000000000000000000013213135434036015725 xustar0030 mtime=1500919838.396648472 30 atime=1500919921.896648472 30 ctime=1500919913.083315139 denemo-2.2.0/tools/Makefile.am0000644000175000017500000000031113135434036017571 0ustar00jjbenhamjjbenham00000000000000bin_PROGRAMS = generate_source cairo_svg2path generate_source_SOURCES = generate_source.c EXTRA_DIST = denemo_file_update cairo_svg2path_SOURCES = cairo_svg2path.c bin_SCRIPTS = \ denemo_file_update denemo-2.2.0/tools/PaxHeaders.19168/Makefile.in0000644000000000000000000000013213135434044015735 xustar0030 mtime=1500919844.843315139 30 atime=1500919921.896648472 30 ctime=1500919913.079981805 denemo-2.2.0/tools/Makefile.in0000644000175000017500000006372613135434044017624 0ustar00jjbenhamjjbenham00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = generate_source$(EXEEXT) cairo_svg2path$(EXEEXT) subdir = tools DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/as-compiler-flag.m4 \ $(top_srcdir)/build/binreloc.m4 $(top_srcdir)/build/gcov.m4 \ $(top_srcdir)/build/gettext.m4 \ $(top_srcdir)/build/glibtests.m4 \ $(top_srcdir)/build/gtk-doc.m4 $(top_srcdir)/build/iconv.m4 \ $(top_srcdir)/build/lib-ld.m4 $(top_srcdir)/build/lib-link.m4 \ $(top_srcdir)/build/lib-prefix.m4 $(top_srcdir)/build/nls.m4 \ $(top_srcdir)/build/po.m4 $(top_srcdir)/build/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_cairo_svg2path_OBJECTS = cairo_svg2path.$(OBJEXT) cairo_svg2path_OBJECTS = $(am_cairo_svg2path_OBJECTS) cairo_svg2path_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am_generate_source_OBJECTS = generate_source.$(OBJEXT) generate_source_OBJECTS = $(am_generate_source_OBJECTS) generate_source_LDADD = $(LDADD) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(cairo_svg2path_SOURCES) $(generate_source_SOURCES) DIST_SOURCES = $(cairo_svg2path_SOURCES) $(generate_source_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = @pkgdatadir@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ ALSA_CFLAGS = @ALSA_CFLAGS@ ALSA_LIBS = @ALSA_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EVINCE_2_0_CFLAGS = @EVINCE_2_0_CFLAGS@ EVINCE_2_0_LIBS = @EVINCE_2_0_LIBS@ EVINCE_2_30_CFLAGS = @EVINCE_2_30_CFLAGS@ EVINCE_2_30_LIBS = @EVINCE_2_30_LIBS@ EVINCE_2_32_CFLAGS = @EVINCE_2_32_CFLAGS@ EVINCE_2_32_LIBS = @EVINCE_2_32_LIBS@ EVINCE_CFLAGS = @EVINCE_CFLAGS@ EVINCE_LIBS = @EVINCE_LIBS@ EXEEXT = @EXEEXT@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ FLUIDSYNTH_CFLAGS = @FLUIDSYNTH_CFLAGS@ FLUIDSYNTH_LIBS = @FLUIDSYNTH_LIBS@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKSOURCEVIEW_CFLAGS = @GTKSOURCEVIEW_CFLAGS@ GTKSOURCEVIEW_LIBS = @GTKSOURCEVIEW_LIBS@ GUILE_1_8_CFLAGS = @GUILE_1_8_CFLAGS@ GUILE_1_8_LIBS = @GUILE_1_8_LIBS@ GUILE_2_CFLAGS = @GUILE_2_CFLAGS@ GUILE_2_LIBS = @GUILE_2_LIBS@ GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_EFFECTIVE_VERSION = @GUILE_EFFECTIVE_VERSION@ GUILE_LDFLAGS = @GUILE_LDFLAGS@ GUILE_LIBS = @GUILE_LIBS@ GUILE_LTLIBS = @GUILE_LTLIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBAUBIO_CFLAGS = @LIBAUBIO_CFLAGS@ LIBAUBIO_LIBS = @LIBAUBIO_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALEDIR = @LOCALEDIR@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_DATA_DIR = @PACKAGE_DATA_DIR@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ PORTAUDIO_CFLAGS = @PORTAUDIO_CFLAGS@ PORTAUDIO_LIBS = @PORTAUDIO_LIBS@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ RANLIB = @RANLIB@ RSVG_CFLAGS = @RSVG_CFLAGS@ RSVG_LIBS = @RSVG_LIBS@ RUBBERBAND_CFLAGS = @RUBBERBAND_CFLAGS@ RUBBERBAND_LIBS = @RUBBERBAND_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHTOOL = @SHTOOL@ SMF_CFLAGS = @SMF_CFLAGS@ SMF_LIBS = @SMF_LIBS@ SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ SNDFILE_LIBS = @SNDFILE_LIBS@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XML2_CFLAGS = @XML2_CFLAGS@ XML2_LIBS = @XML2_LIBS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ denemo_bin_path = @denemo_bin_path@ denemo_load_path = @denemo_load_path@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ installed_test_metadir = @installed_test_metadir@ installed_testdir = @installed_testdir@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ generate_source_SOURCES = generate_source.c EXTRA_DIST = denemo_file_update cairo_svg2path_SOURCES = cairo_svg2path.c bin_SCRIPTS = \ denemo_file_update all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tools/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list cairo_svg2path$(EXEEXT): $(cairo_svg2path_OBJECTS) $(cairo_svg2path_DEPENDENCIES) $(EXTRA_cairo_svg2path_DEPENDENCIES) @rm -f cairo_svg2path$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cairo_svg2path_OBJECTS) $(cairo_svg2path_LDADD) $(LIBS) generate_source$(EXEEXT): $(generate_source_OBJECTS) $(generate_source_DEPENDENCIES) $(EXTRA_generate_source_DEPENDENCIES) @rm -f generate_source$(EXEEXT) $(AM_V_CCLD)$(LINK) $(generate_source_OBJECTS) $(generate_source_LDADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_svg2path.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generate_source.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-binSCRIPTS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-binSCRIPTS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-binSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: denemo-2.2.0/PaxHeaders.19168/install-sh0000644000000000000000000000007412423346767014553 xustar0030 atime=1500919921.933315139 30 ctime=1500919912.886648472 denemo-2.2.0/install-sh0000755000175000017500000003325512423346767016432 0ustar00jjbenhamjjbenham00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: denemo-2.2.0/PaxHeaders.19168/config.guess0000644000000000000000000000007412404676534015064 xustar0030 atime=1500919921.943315139 30 ctime=1500919912.879981805 denemo-2.2.0/config.guess0000755000175000017500000012355012404676534016741 0ustar00jjbenhamjjbenham00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-03-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: denemo-2.2.0/PaxHeaders.19168/denemo.spec0000644000000000000000000000013213135434054014654 xustar0030 mtime=1500919852.409981805 30 atime=1500919921.996648472 30 ctime=1500919913.033315139 denemo-2.2.0/denemo.spec0000644000175000017500000000366413135434054016536 0ustar00jjbenhamjjbenham00000000000000%define name denemo %define ver 2.2.0 %define rel 1 %define prefix /usr Summary: Graphical music notation program Name: %{name} Version: %ver Release: %rel License: GPLv2 Group: Applications/Multimedia Source: http://download.savannah.gnu.org/releases/denemo/%{name}-%{version}.tar.gz URL: http://www.denemo.org/ BuildRoot: %{_tmppath}/%{name}-%{ver}-%{rel}-rpm-buildroot BuildRequires: portaudio-devel aubio-devel gtk2-devel BuildRequires: gettext libxml2-devel fftw-devel desktop-file-utils Requires: portaudio aubio gtk2 libxml2 fftw %description Denemo is a graphical music notation program written in C with gtk+. As of April 2000, it is an official part of the GNU project (http://www.gnu.org/) It is intended to be used in conjunction with GNU Lilypond (http://www.cs.uu.nl/hanwen/lilypond/), but is adaptable to other computer-music-related purposes as well. %prep %setup -q %build %configure make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT/%{prefix}/include desktop-file-install --vendor="" \ --dir=${RPM_BUILD_ROOT}%{_datadir}/applications \ %{buildroot}/%{_datadir}/applications/denemo.desktop %find_lang %{name} %clean rm -rf $RPM_BUILD_ROOT %files -f %{name}.lang %defattr(-,root,root) %dir %{_sysconfdir}/denemo %{_datadir}/denemo %{_datadir}/icons/denemo.png %{_datadir}/fonts/truetype/denemo %{_datadir}/applications/denemo.desktop %{_bindir}/denemo %doc COPYING README README.lilypond ChangeLog %changelog * Sun Aug 3 2008 Roy Rankin -Additional BuildRequires from Mock testing, fixed desktop-file-install usage * Fri Jul 25 2008 Roy Rankin -Update for 0.7.9 and Fedora 8 * Fri Dec 14 2001 Adam Tee -Update for 0.5.8 * Sun Nov 12 2000 Matt Hiller - Update for 0.5.5 * Wed Jun 21 2000 Sourav K. Mandal - Initial release of RPM package denemo-2.2.0/PaxHeaders.19168/actions0000644000000000000000000000013213135434150014111 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.539981806 30 ctime=1500919913.013315139 denemo-2.2.0/actions/0000755000175000017500000000000013135434150016037 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/PaxHeaders.19168/block.l0000644000000000000000000000013213135434035015437 xustar0030 mtime=1500919837.939981805 30 atime=1500919921.996648472 30 ctime=1500919912.903315138 denemo-2.2.0/actions/block.l0000644000175000017500000000274113135434035017314 0ustar00jjbenhamjjbenham00000000000000A [a-zA-Z\200-\377] AA {A}|_ N [0-9] AN {AA}|{N} ANY_CHAR (.|\n) PUNCT [?!:'`] ACCENT \\[`'"^] NATIONAL [\001-\006\021-\027\031\036] TEX {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL} WORD {A}{AN}* DASHED_WORD {A}({AN}|-)* DASHED_KEY_WORD \\{DASHED_WORD} ALPHAWORD {A}+ DIGIT {N} UNSIGNED {N}+ E_UNSIGNED \\{N}+ FRACTION {N}+\/{N}+ INT -?{UNSIGNED} REAL ({INT}\.{N}*)|(-?\.{N}+) KEYWORD \\{WORD} NEWLINE [^.] ; windows and linux/unix WHITE [ ] ;space and tab! HORIZONTALWHITE [ ] BLACK [^ \n\t\f\r] ;TODO: needs fix RESTNAME [rs] NOTECOMMAND \\{A}+ MARKUPCOMMAND \\({A}|[-_])+ LYRICS ({AA}|{TEX})[^0-9 \t\n\r\f]* ESCAPED [nt\\'"] EXTENDER __ HYPHEN -- BOM_UTF8 \357\273\277 %% [^}{]+ (lyimport::block-append yytext) (lyimport::multilexer) "{" (set! lyimport::brace_count (+ lyimport::brace_count 1)) (lyimport::block-append yytext) (lyimport::multilexer) "}" (set! lyimport::brace_count (- lyimport::brace_count 1)) (if (zero? lyimport::brace_count) (begin (lyimport::pop_state) (lyimport::mtoken 'BLOCK lyimport::block_string)) (begin (lyimport::block-append yytext) (lyimport::multilexer))) . (lyimport::quote-append yytext) (lyimport::multilexer) <> (lyimport::mtoken 'ERROR yytext) <> (make-lexical-token '*eoi* #f #f) denemo-2.2.0/actions/PaxHeaders.19168/Classic.shortcuts0000644000000000000000000000013213135434035017531 xustar0030 mtime=1500919837.909981805 30 atime=1500919921.996648472 30 ctime=1500919912.903315138 denemo-2.2.0/actions/Classic.shortcuts0000644000175000017500000002726513135434035021416 0ustar00jjbenhamjjbenham00000000000000 A Denemo Command Set AT, JRR, RTS 101 116 102 146 CursorLeft Shft+Left MoveCursorLeft Left CursorDown Down CursorUp Up CursorRight Shft+Right MoveCursorRight Right ToggleReduceToDrawingArea Escape StaffUp Ctrl+Shft+Up StaffDown Ctrl+Shft+Down MoveToStaffUp Ctrl+Up MoveToStaffDown Ctrl+Down MoveToMeasureLeft Ctrl+Left MoveToMeasureRight Ctrl+Right OctaveUp apostrophe OctaveDown comma InsertWholeRest Shft+0 InsertHalfRest Shft+1 InsertQuarterRest Shft+2 InsertEighthRest Shft+3 InsertSixteenthRest Shft+4 InsertThirtysecondRest Shft+5 InsertSixtyfourthRest Shft+6 AddNoteToChord Insert RemoveNoteFromChord Ctrl+Insert Sharpen Shft+equal Flatten minus AddDot Decimal period RemoveDot Ctrl+Decimal Ctrl+period DeletePreviousObject BackSpace InsertMeasureBefore m InsertMeasureAfter n DeleteMeasure Ctrl+m DeleteMeasureAllStaffs Ctrl+M UnsetMark return ToggleStaccato semicolon ToggleTrill Backslash ToggleStaccatissimo Shft+semicolon InsertRhythm Ctrl+space NextRhythm Space SharpenEnharmonicSet Add FlattenEnharmonicSet Subtract New Ctrl+n OpenNewWindow Ctrl+o Save Ctrl+s SaveAs Ctrl+S NewWindow Ctrl+t PrintPreview Ctrl+p Close Ctrl+w Quit Ctrl+q Copy Ctrl+c Cut Ctrl+x Paste Ctrl+v VoiceUp Page_Up VoiceDown Page_Down StaffProperties Alt+Return InsertDynamic Control+d InsertLilyDirective l EditObject Tab PrsR GoToMeasure Alt+m GoToBeginning Shft+Home GoToEnd Shft+End MoveToBeginning Home MoveToEnd End NextMovement Ctrl+Shft+Right PreviousMovement Ctrl+Shft+Left Play F5 Stop F6 Help F1 InsertA A AddA Alt+a MoveToA a InsertB B AddB Alt+b MoveToB b InsertC C AddC Alt+c MoveToC c InsertD D AddD Alt+d MoveToD d InsertE E AddE Alt+e MoveToE e InsertF F AddF Alt+f MoveToF f InsertG G AddG Alt+g MoveToG g Change0 Alt+0 Insert0 0 Change1 Alt+1 Insert1 1 Change2 Alt+2 Insert2 2 Change3 Alt+3 Insert3 3 Change4 Alt+4 Insert4 4 Change5 Alt+5 Insert5 5 Change6 Alt+6 Insert6 6 MoveNoteToCursor MveL-Shift InsertTiedNoteDuration t Anacrusis u NextBookmark F12 PrevBookmark F11 RehearsalMark F9 BookmarkNamed Shft+F9 BookmarkNonPrinting Ctrl+Shft+F9 SearchBookmark F10 FindEditPoint Alt+Left AddDotSelectionSwitcher true StaccatoSelectionSwitcher true StaccatissimoSelectionSwitcher true TenutoSelectionSwitcher true AccentSelectionSwitcher true SelectStaff true SelectAllStaffs true GraceNoteSwitcher true ShiftUp Alt+Up ShiftDown Alt+Down ToggleCursorHighlight grave SlurTwo 7 ExtendSlur 8 ReduceSlur 9 StagedDelete Delete denemo-2.2.0/actions/PaxHeaders.19168/AllCommands.shortcuts0000644000000000000000000000013213135434035020342 xustar0030 mtime=1500919837.909981805 30 atime=1500919922.019981805 30 ctime=1500919912.899981806 denemo-2.2.0/actions/AllCommands.shortcuts0000644000175000017500000000024413135434035022213 0ustar00jjbenhamjjbenham00000000000000 A Denemo Command Set AT, JRR, RTS denemo-2.2.0/actions/PaxHeaders.19168/silex.scm0000644000000000000000000000013213135434036016021 xustar0030 mtime=1500919838.046648472 30 atime=1500919922.019981805 30 ctime=1500919912.906648472 denemo-2.2.0/actions/silex.scm0000644000175000017500000066151213135434036017705 0ustar00jjbenhamjjbenham00000000000000; SILex - Scheme Implementation of Lex ; SILex 1.0 ; Copyright (C) 2001 Danny Dube' ; ; This program is free software; you can redistribute it and/or ; modify it under the terms of the GNU General Public License ; as published by the Free Software Foundation; either version 2 ; of the License, or (at your option) any later version. ; ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with this program; if not, write to the Free Software ; Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA ; Module util.scm. ; ; Quelques definitions de constantes ; (define eof-tok 0) (define hblank-tok 1) (define vblank-tok 2) (define pipe-tok 3) (define question-tok 4) (define plus-tok 5) (define star-tok 6) (define lpar-tok 7) (define rpar-tok 8) (define dot-tok 9) (define lbrack-tok 10) (define lbrack-rbrack-tok 11) (define lbrack-caret-tok 12) (define lbrack-minus-tok 13) (define subst-tok 14) (define power-tok 15) (define doublequote-tok 16) (define char-tok 17) (define caret-tok 18) (define dollar-tok 19) (define <>-tok 20) (define <>-tok 21) (define percent-percent-tok 22) (define id-tok 23) (define rbrack-tok 24) (define minus-tok 25) (define illegal-tok 26) ; Tokens agreges (define class-tok 27) (define string-tok 28) (define number-of-tokens 29) (define newline-ch (char->integer #\newline)) (define tab-ch (char->integer #\ )) (define dollar-ch (char->integer #\$)) (define minus-ch (char->integer #\-)) (define rbrack-ch (char->integer #\])) (define caret-ch (char->integer #\^)) (define dot-class (list (cons 'inf- (- newline-ch 1)) (cons (+ newline-ch 1) 'inf+))) (define default-action (string-append " (yycontinue)" (string #\newline))) (define default-<>-action (string-append " '(0)" (string #\newline))) (define default-<>-action (string-append " (begin" (string #\newline) " (display \"Error: Invalid token.\")" (string #\newline) " (newline)" (string #\newline) " 'error)" (string #\newline))) ; ; Fabrication de tables de dispatch ; (define make-dispatch-table (lambda (size alist default) (let ((v (make-vector size default))) (let loop ((alist alist)) (if (null? alist) v (begin (vector-set! v (caar alist) (cdar alist)) (loop (cdr alist)))))))) ; ; Fonctions de manipulation des tokens ; (define make-tok (lambda (tok-type lexeme line column . attr) (cond ((null? attr) (vector tok-type line column lexeme)) ((null? (cdr attr)) (vector tok-type line column lexeme (car attr))) (else (vector tok-type line column lexeme (car attr) (cadr attr)))))) (define get-tok-type (lambda (tok) (vector-ref tok 0))) (define get-tok-line (lambda (tok) (vector-ref tok 1))) (define get-tok-column (lambda (tok) (vector-ref tok 2))) (define get-tok-lexeme (lambda (tok) (vector-ref tok 3))) (define get-tok-attr (lambda (tok) (vector-ref tok 4))) (define get-tok-2nd-attr (lambda (tok) (vector-ref tok 5))) ; ; Fonctions de manipulations des regles ; (define make-rule (lambda (line eof? error? bol? eol? regexp action) (vector line eof? error? bol? eol? regexp action #f))) (define get-rule-line (lambda (rule) (vector-ref rule 0))) (define get-rule-eof? (lambda (rule) (vector-ref rule 1))) (define get-rule-error? (lambda (rule) (vector-ref rule 2))) (define get-rule-bol? (lambda (rule) (vector-ref rule 3))) (define get-rule-eol? (lambda (rule) (vector-ref rule 4))) (define get-rule-regexp (lambda (rule) (vector-ref rule 5))) (define get-rule-action (lambda (rule) (vector-ref rule 6))) (define get-rule-yytext? (lambda (rule) (vector-ref rule 7))) (define set-rule-regexp (lambda (rule regexp) (vector-set! rule 5 regexp))) (define set-rule-action (lambda (rule action) (vector-set! rule 6 action))) (define set-rule-yytext? (lambda (rule yytext?) (vector-set! rule 7 yytext?))) ; ; Noeuds des regexp ; (define epsilon-re 0) (define or-re 1) (define conc-re 2) (define star-re 3) (define plus-re 4) (define question-re 5) (define class-re 6) (define char-re 7) (define make-re (lambda (re-type . lattr) (cond ((null? lattr) (vector re-type)) ((null? (cdr lattr)) (vector re-type (car lattr))) ((null? (cddr lattr)) (vector re-type (car lattr) (cadr lattr)))))) (define get-re-type (lambda (re) (vector-ref re 0))) (define get-re-attr1 (lambda (re) (vector-ref re 1))) (define get-re-attr2 (lambda (re) (vector-ref re 2))) ; ; Fonctions de manipulation des ensembles d'etats ; ; Intersection de deux ensembles d'etats (define ss-inter (lambda (ss1 ss2) (cond ((null? ss1) '()) ((null? ss2) '()) (else (let ((t1 (car ss1)) (t2 (car ss2))) (cond ((< t1 t2) (ss-inter (cdr ss1) ss2)) ((= t1 t2) (cons t1 (ss-inter (cdr ss1) (cdr ss2)))) (else (ss-inter ss1 (cdr ss2))))))))) ; Difference entre deux ensembles d'etats (define ss-diff (lambda (ss1 ss2) (cond ((null? ss1) '()) ((null? ss2) ss1) (else (let ((t1 (car ss1)) (t2 (car ss2))) (cond ((< t1 t2) (cons t1 (ss-diff (cdr ss1) ss2))) ((= t1 t2) (ss-diff (cdr ss1) (cdr ss2))) (else (ss-diff ss1 (cdr ss2))))))))) ; Union de deux ensembles d'etats (define ss-union (lambda (ss1 ss2) (cond ((null? ss1) ss2) ((null? ss2) ss1) (else (let ((t1 (car ss1)) (t2 (car ss2))) (cond ((< t1 t2) (cons t1 (ss-union (cdr ss1) ss2))) ((= t1 t2) (cons t1 (ss-union (cdr ss1) (cdr ss2)))) (else (cons t2 (ss-union ss1 (cdr ss2)))))))))) ; Decoupage de deux ensembles d'etats (define ss-sep (lambda (ss1 ss2) (let loop ((ss1 ss1) (ss2 ss2) (l '()) (c '()) (r '())) (if (null? ss1) (if (null? ss2) (vector (reverse l) (reverse c) (reverse r)) (loop ss1 (cdr ss2) l c (cons (car ss2) r))) (if (null? ss2) (loop (cdr ss1) ss2 (cons (car ss1) l) c r) (let ((t1 (car ss1)) (t2 (car ss2))) (cond ((< t1 t2) (loop (cdr ss1) ss2 (cons t1 l) c r)) ((= t1 t2) (loop (cdr ss1) (cdr ss2) l (cons t1 c) r)) (else (loop ss1 (cdr ss2) l c (cons t2 r)))))))))) ; ; Fonctions de manipulation des classes de caracteres ; ; Comparaisons de bornes d'intervalles (define class-= eqv?) (define class-<= (lambda (b1 b2) (cond ((eq? b1 'inf-) #t) ((eq? b2 'inf+) #t) ((eq? b1 'inf+) #f) ((eq? b2 'inf-) #f) (else (<= b1 b2))))) (define class->= (lambda (b1 b2) (cond ((eq? b1 'inf+) #t) ((eq? b2 'inf-) #t) ((eq? b1 'inf-) #f) ((eq? b2 'inf+) #f) (else (>= b1 b2))))) (define class-< (lambda (b1 b2) (cond ((eq? b1 'inf+) #f) ((eq? b2 'inf-) #f) ((eq? b1 'inf-) #t) ((eq? b2 'inf+) #t) (else (< b1 b2))))) (define class-> (lambda (b1 b2) (cond ((eq? b1 'inf-) #f) ((eq? b2 'inf+) #f) ((eq? b1 'inf+) #t) ((eq? b2 'inf-) #t) (else (> b1 b2))))) ; Complementation d'une classe (define class-compl (lambda (c) (let loop ((c c) (start 'inf-)) (if (null? c) (list (cons start 'inf+)) (let* ((r (car c)) (rstart (car r)) (rend (cdr r))) (if (class-< start rstart) (cons (cons start (- rstart 1)) (loop c rstart)) (if (class-< rend 'inf+) (loop (cdr c) (+ rend 1)) '()))))))) ; Union de deux classes de caracteres (define class-union (lambda (c1 c2) (let loop ((c1 c1) (c2 c2) (u '())) (if (null? c1) (if (null? c2) (reverse u) (loop c1 (cdr c2) (cons (car c2) u))) (if (null? c2) (loop (cdr c1) c2 (cons (car c1) u)) (let* ((r1 (car c1)) (r2 (car c2)) (r1start (car r1)) (r1end (cdr r1)) (r2start (car r2)) (r2end (cdr r2))) (if (class-<= r1start r2start) (cond ((class-= r1end 'inf+) (loop c1 (cdr c2) u)) ((class-< (+ r1end 1) r2start) (loop (cdr c1) c2 (cons r1 u))) ((class-<= r1end r2end) (loop (cdr c1) (cons (cons r1start r2end) (cdr c2)) u)) (else (loop c1 (cdr c2) u))) (cond ((class-= r2end 'inf+) (loop (cdr c1) c2 u)) ((class-> r1start (+ r2end 1)) (loop c1 (cdr c2) (cons r2 u))) ((class->= r1end r2end) (loop (cons (cons r2start r1end) (cdr c1)) (cdr c2) u)) (else (loop (cdr c1) c2 u)))))))))) ; Decoupage de deux classes de caracteres (define class-sep (lambda (c1 c2) (let loop ((c1 c1) (c2 c2) (l '()) (c '()) (r '())) (if (null? c1) (if (null? c2) (vector (reverse l) (reverse c) (reverse r)) (loop c1 (cdr c2) l c (cons (car c2) r))) (if (null? c2) (loop (cdr c1) c2 (cons (car c1) l) c r) (let* ((r1 (car c1)) (r2 (car c2)) (r1start (car r1)) (r1end (cdr r1)) (r2start (car r2)) (r2end (cdr r2))) (cond ((class-< r1start r2start) (if (class-< r1end r2start) (loop (cdr c1) c2 (cons r1 l) c r) (loop (cons (cons r2start r1end) (cdr c1)) c2 (cons (cons r1start (- r2start 1)) l) c r))) ((class-> r1start r2start) (if (class-> r1start r2end) (loop c1 (cdr c2) l c (cons r2 r)) (loop c1 (cons (cons r1start r2end) (cdr c2)) l c (cons (cons r2start (- r1start 1)) r)))) (else (cond ((class-< r1end r2end) (loop (cdr c1) (cons (cons (+ r1end 1) r2end) (cdr c2)) l (cons r1 c) r)) ((class-= r1end r2end) (loop (cdr c1) (cdr c2) l (cons r1 c) r)) (else (loop (cons (cons (+ r2end 1) r1end) (cdr c1)) (cdr c2) l (cons r2 c) r))))))))))) ; Transformer une classe (finie) de caracteres en une liste de ... (define class->char-list (lambda (c) (let loop1 ((c c)) (if (null? c) '() (let* ((r (car c)) (rend (cdr r)) (tail (loop1 (cdr c)))) (let loop2 ((rstart (car r))) (if (<= rstart rend) (cons (integer->char rstart) (loop2 (+ rstart 1))) tail))))))) ; Transformer une classe de caracteres en une liste poss. compl. ; 1er element = #t -> classe complementee (define class->tagged-char-list (lambda (c) (let* ((finite? (or (null? c) (number? (caar c)))) (c2 (if finite? c (class-compl c))) (c-l (class->char-list c2))) (cons (not finite?) c-l)))) ; ; Fonction digraph ; ; Fonction "digraph". ; Etant donne un graphe dirige dont les noeuds comportent une valeur, ; calcule pour chaque noeud la "somme" des valeurs contenues dans le ; noeud lui-meme et ceux atteignables a partir de celui-ci. La "somme" ; consiste a appliquer un operateur commutatif et associatif aux valeurs ; lorsqu'elles sont additionnees. ; L'entree consiste en un vecteur de voisinages externes, un autre de ; valeurs initiales et d'un operateur. ; La sortie est un vecteur de valeurs finales. (define digraph (lambda (arcs init op) (let* ((nbnodes (vector-length arcs)) (infinity nbnodes) (prio (make-vector nbnodes -1)) (stack (make-vector nbnodes #f)) (sp 0) (final (make-vector nbnodes #f))) (letrec ((store-final (lambda (self-sp value) (let loop () (if (> sp self-sp) (let ((voisin (vector-ref stack (- sp 1)))) (vector-set! prio voisin infinity) (set! sp (- sp 1)) (vector-set! final voisin value) (loop)))))) (visit-node (lambda (n) (let ((self-sp sp)) (vector-set! prio n self-sp) (vector-set! stack sp n) (set! sp (+ sp 1)) (vector-set! final n (vector-ref init n)) (let loop ((vois (vector-ref arcs n))) (if (pair? vois) (let* ((v (car vois)) (vprio (vector-ref prio v))) (if (= vprio -1) (visit-node v)) (vector-set! prio n (min (vector-ref prio n) (vector-ref prio v))) (vector-set! final n (op (vector-ref final n) (vector-ref final v))) (loop (cdr vois))))) (if (= (vector-ref prio n) self-sp) (store-final self-sp (vector-ref final n))))))) (let loop ((n 0)) (if (< n nbnodes) (begin (if (= (vector-ref prio n) -1) (visit-node n)) (loop (+ n 1))))) final)))) ; ; Fonction de tri ; (define merge-sort-merge (lambda (l1 l2 cmp-<=) (cond ((null? l1) l2) ((null? l2) l1) (else (let ((h1 (car l1)) (h2 (car l2))) (if (cmp-<= h1 h2) (cons h1 (merge-sort-merge (cdr l1) l2 cmp-<=)) (cons h2 (merge-sort-merge l1 (cdr l2) cmp-<=)))))))) (define merge-sort (lambda (l cmp-<=) (if (null? l) l (let loop1 ((ll (map list l))) (if (null? (cdr ll)) (car ll) (loop1 (let loop2 ((ll ll)) (cond ((null? ll) ll) ((null? (cdr ll)) ll) (else (cons (merge-sort-merge (car ll) (cadr ll) cmp-<=) (loop2 (cddr ll)))))))))))) ; Module action.l.scm. (define action-tables (vector 'all (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok eof-tok yytext yyline yycolumn) )) (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (begin (display "Error: Invalid token.") (newline) 'error) )) (vector #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok hblank-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok vblank-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok char-tok yytext yyline yycolumn) ))) 'tagged-chars-lists 0 0 '#((((#f #\ #\space) . 4) ((#f #\;) . 3) ((#f #\newline) . 2) ((#t #\ #\newline #\space #\;) . 1)) (((#t #\newline) . 1)) () (((#t #\newline) . 3)) (((#f #\ #\space) . 4) ((#f #\;) . 3) ((#t #\ #\newline #\space #\;) . 1))) '#((#f . #f) (2 . 2) (1 . 1) (0 . 0) (0 . 0)))) ; Module class.l.scm. (define class-tables (vector 'all (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok eof-tok yytext yyline yycolumn) )) (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (begin (display "Error: Invalid token.") (newline) 'error) )) (vector #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok rbrack-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok minus-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-spec-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-digits-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-digits-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-quoted-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-ordinary-char yytext yyline yycolumn) ))) 'tagged-chars-lists 0 0 '#((((#f #\]) . 4) ((#f #\-) . 3) ((#f #\\) . 2) ((#t #\- #\\ #\]) . 1)) () (((#f #\n) . 8) ((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 7) ((#f #\-) . 6) ((#t #\- #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\n) . 5)) () () () (((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 9)) (((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 10)) () (((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 9)) (((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 10))) '#((#f . #f) (6 . 6) (6 . 6) (1 . 1) (0 . 0) (5 . 5) (5 . 5) (3 . 3) (2 . 2) (4 . 4) (3 . 3)))) ; Module macro.l.scm. (define macro-tables (vector 'all (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok eof-tok yytext yyline yycolumn) )) (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (begin (display "Error: Invalid token.") (newline) 'error) )) (vector #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok hblank-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok vblank-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok percent-percent-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-id yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok illegal-tok yytext yyline yycolumn) ))) 'tagged-chars-lists 0 0 '#((((#f #\ #\space) . 8) ((#f #\;) . 7) ((#f #\newline) . 6) ((#f #\%) . 5) ((#f #\! #\$ #\& #\* #\/ #\: #\< #\= #\> #\? #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z #\^ #\_ #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z #\~) . 4) ((#f #\+ #\-) . 3) ((#f #\.) . 2) ((#t #\ #\newline #\space #\! #\$ #\% #\& #\* #\+ #\- #\. #\/ #\: #\; #\< #\= #\> #\? #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z #\^ #\_ #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z #\~) . 1)) () (((#f #\.) . 9)) () (((#f #\! #\$ #\% #\& #\* #\+ #\- #\. #\/ #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\: #\< #\= #\> #\? #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z #\^ #\_ #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z #\~) . 10)) (((#f #\%) . 11) ((#f #\! #\$ #\& #\* #\+ #\- #\. #\/ #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\: #\< #\= #\> #\? #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z #\^ #\_ #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z #\~) . 10)) () (((#t #\newline) . 12)) () (((#f #\.) . 13)) (((#f #\! #\$ #\% #\& #\* #\+ #\- #\. #\/ #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\: #\< #\= #\> #\? #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z #\^ #\_ #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z #\~) . 10)) (((#f #\! #\$ #\% #\& #\* #\+ #\- #\. #\/ #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\: #\< #\= #\> #\? #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z #\^ #\_ #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z #\~) . 10)) (((#t #\newline) . 12)) ()) '#((#f . #f) (4 . 4) (4 . 4) (3 . 3) (3 . 3) (3 . 3) (1 . 1) (0 . 0) (0 . 0) (#f . #f) (3 . 3) (2 . 2) (0 . 0) (3 . 3)))) ; Module regexp.l.scm. (define regexp-tables (vector 'all (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok eof-tok yytext yyline yycolumn) )) (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (begin (display "Error: Invalid token.") (newline) 'error) )) (vector #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok hblank-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok vblank-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok pipe-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok question-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok plus-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok star-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok lpar-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok rpar-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok dot-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok lbrack-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok lbrack-rbrack-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok lbrack-caret-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok lbrack-minus-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-id-ref yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-power-m yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-power-m-inf yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-power-m-n yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok illegal-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok doublequote-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-spec-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-digits-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-digits-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-quoted-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok caret-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok dollar-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-ordinary-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok <>-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok <>-tok yytext yyline yycolumn) ))) 'tagged-chars-lists 0 0 '#((((#f #\ #\space) . 18) ((#f #\;) . 17) ((#f #\newline) . 16) ((#f #\|) . 15) ((#f #\?) . 14) ((#f #\+) . 13) ((#f #\*) . 12) ((#f #\() . 11) ((#f #\)) . 10) ((#f #\.) . 9) ((#f #\[) . 8) ((#f #\{) . 7) ((#f #\") . 6) ((#f #\\) . 5) ((#f #\^) . 4) ((#f #\$) . 3) ((#t #\ #\newline #\space #\" #\$ #\( #\) #\* #\+ #\. #\; #\< #\? #\[ #\\ #\^ #\{ #\|) . 2) ((#f #\<) . 1)) (((#f #\<) . 19)) () () () (((#f #\n) . 23) ((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 22) ((#f #\-) . 21) ((#t #\- #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\n) . 20)) () (((#f #\! #\$ #\% #\& #\* #\/ #\: #\< #\= #\> #\? #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z #\^ #\_ #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z #\~) . 27) ((#f #\+ #\-) . 26) ((#f #\.) . 25) ((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 24)) (((#f #\]) . 30) ((#f #\^) . 29) ((#f #\-) . 28)) () () () () () () () () (((#t #\newline) . 31)) () (((#f #\E) . 32)) () (((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 33)) (((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 34)) () (((#f #\}) . 36) ((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 24) ((#f #\,) . 35)) (((#f #\.) . 37)) (((#f #\}) . 38)) (((#f #\}) . 38) ((#f #\! #\$ #\% #\& #\* #\+ #\- #\. #\/ #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\: #\< #\= #\> #\? #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z #\^ #\_ #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z #\~) . 27)) () () () (((#t #\newline) . 31)) (((#f #\O) . 40) ((#f #\R) . 39)) (((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 33)) (((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 34)) (((#f #\}) . 42) ((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 41)) () (((#f #\.) . 26)) () (((#f #\R) . 43)) (((#f #\F) . 44)) (((#f #\}) . 45) ((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 41)) () (((#f #\O) . 46)) (((#f #\>) . 47)) () (((#f #\R) . 48)) (((#f #\>) . 49)) (((#f #\>) . 50)) () (((#f #\>) . 51)) ()) '#((#f . #f) (25 . 25) (25 . 25) (24 . 24) (23 . 23) (25 . 25) (18 . 18) (17 . 17) (9 . 9) (8 . 8) (7 . 7) (6 . 6) (5 . 5) (4 . 4) (3 . 3) (2 . 2) (1 . 1) (0 . 0) (0 . 0) (#f . #f) (22 . 22) (22 . 22) (20 . 20) (19 . 19) (#f . #f) (#f . #f) (#f . #f) (#f . #f) (12 . 12) (11 . 11) (10 . 10) (0 . 0) (#f . #f) (21 . 21) (20 . 20) (#f . #f) (14 . 14) (#f . #f) (13 . 13) (#f . #f) (#f . #f) (#f . #f) (15 . 15) (#f . #f) (#f . #f) (16 . 16) (#f . #f) (#f . #f) (#f . #f) (26 . 26) (#f . #f) (27 . 27)))) ; Module string.l.scm. (define string-tables (vector 'all (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok eof-tok yytext yyline yycolumn) )) (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (begin (display "Error: Invalid token.") (newline) 'error) )) (vector #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (make-tok doublequote-tok yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-spec-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-digits-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-digits-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-quoted-char yytext yyline yycolumn) )) #t (lambda (yycontinue yygetc yyungetc) (lambda (yytext yyline yycolumn yyoffset) (parse-ordinary-char yytext yyline yycolumn) ))) 'tagged-chars-lists 0 0 '#((((#f #\") . 3) ((#f #\\) . 2) ((#t #\" #\\) . 1)) () (((#f #\n) . 7) ((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 6) ((#f #\-) . 5) ((#t #\- #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\n) . 4)) () () (((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 8)) (((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 9)) () (((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 8)) (((#f #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) . 9))) '#((#f . #f) (5 . 5) (5 . 5) (0 . 0) (4 . 4) (4 . 4) (2 . 2) (1 . 1) (3 . 3) (2 . 2)))) ; Module multilex.scm. ; ; Gestion des Input Systems ; Fonctions a utiliser par l'usager: ; lexer-make-IS, lexer-get-func-getc, lexer-get-func-ungetc, ; lexer-get-func-line, lexer-get-func-column et lexer-get-func-offset ; ; Taille initiale par defaut du buffer d'entree (define lexer-init-buffer-len 1024) ; Numero du caractere newline (define lexer-integer-newline (char->integer #\newline)) ; Constructeur d'IS brut (define lexer-raw-IS-maker (lambda (buffer read-ptr input-f counters) (let ((input-f input-f) ; Entree reelle (buffer buffer) ; Buffer (buflen (string-length buffer)) (read-ptr read-ptr) (start-ptr 1) ; Marque de debut de lexeme (start-line 1) (start-column 1) (start-offset 0) (end-ptr 1) ; Marque de fin de lexeme (point-ptr 1) ; Le point (user-ptr 1) ; Marque de l'usager (user-line 1) (user-column 1) (user-offset 0) (user-up-to-date? #t)) ; Concerne la colonne seul. (letrec ((start-go-to-end-none ; Fonctions de depl. des marques (lambda () (set! start-ptr end-ptr))) (start-go-to-end-line (lambda () (let loop ((ptr start-ptr) (line start-line)) (if (= ptr end-ptr) (begin (set! start-ptr ptr) (set! start-line line)) (if (char=? (string-ref buffer ptr) #\newline) (loop (+ ptr 1) (+ line 1)) (loop (+ ptr 1) line)))))) (start-go-to-end-all (lambda () (set! start-offset (+ start-offset (- end-ptr start-ptr))) (let loop ((ptr start-ptr) (line start-line) (column start-column)) (if (= ptr end-ptr) (begin (set! start-ptr ptr) (set! start-line line) (set! start-column column)) (if (char=? (string-ref buffer ptr) #\newline) (loop (+ ptr 1) (+ line 1) 1) (loop (+ ptr 1) line (+ column 1))))))) (start-go-to-user-none (lambda () (set! start-ptr user-ptr))) (start-go-to-user-line (lambda () (set! start-ptr user-ptr) (set! start-line user-line))) (start-go-to-user-all (lambda () (set! start-line user-line) (set! start-offset user-offset) (if user-up-to-date? (begin (set! start-ptr user-ptr) (set! start-column user-column)) (let loop ((ptr start-ptr) (column start-column)) (if (= ptr user-ptr) (begin (set! start-ptr ptr) (set! start-column column)) (if (char=? (string-ref buffer ptr) #\newline) (loop (+ ptr 1) 1) (loop (+ ptr 1) (+ column 1)))))))) (end-go-to-point (lambda () (set! end-ptr point-ptr))) (point-go-to-start (lambda () (set! point-ptr start-ptr))) (user-go-to-start-none (lambda () (set! user-ptr start-ptr))) (user-go-to-start-line (lambda () (set! user-ptr start-ptr) (set! user-line start-line))) (user-go-to-start-all (lambda () (set! user-ptr start-ptr) (set! user-line start-line) (set! user-column start-column) (set! user-offset start-offset) (set! user-up-to-date? #t))) (init-lexeme-none ; Debute un nouveau lexeme (lambda () (if (< start-ptr user-ptr) (start-go-to-user-none)) (point-go-to-start))) (init-lexeme-line (lambda () (if (< start-ptr user-ptr) (start-go-to-user-line)) (point-go-to-start))) (init-lexeme-all (lambda () (if (< start-ptr user-ptr) (start-go-to-user-all)) (point-go-to-start))) (get-start-line ; Obtention des stats du debut du lxm (lambda () start-line)) (get-start-column (lambda () start-column)) (get-start-offset (lambda () start-offset)) (peek-left-context ; Obtention de caracteres (#f si EOF) (lambda () (char->integer (string-ref buffer (- start-ptr 1))))) (peek-char (lambda () (if (< point-ptr read-ptr) (char->integer (string-ref buffer point-ptr)) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer point-ptr c) (set! read-ptr (+ point-ptr 1)) (char->integer c)) (begin (set! input-f (lambda () 'eof)) #f)))))) (read-char (lambda () (if (< point-ptr read-ptr) (let ((c (string-ref buffer point-ptr))) (set! point-ptr (+ point-ptr 1)) (char->integer c)) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer point-ptr c) (set! read-ptr (+ point-ptr 1)) (set! point-ptr read-ptr) (char->integer c)) (begin (set! input-f (lambda () 'eof)) #f)))))) (get-start-end-text ; Obtention du lexeme (lambda () (substring buffer start-ptr end-ptr))) (get-user-line-line ; Fonctions pour l'usager (lambda () (if (< user-ptr start-ptr) (user-go-to-start-line)) user-line)) (get-user-line-all (lambda () (if (< user-ptr start-ptr) (user-go-to-start-all)) user-line)) (get-user-column-all (lambda () (cond ((< user-ptr start-ptr) (user-go-to-start-all) user-column) (user-up-to-date? user-column) (else (let loop ((ptr start-ptr) (column start-column)) (if (= ptr user-ptr) (begin (set! user-column column) (set! user-up-to-date? #t) column) (if (char=? (string-ref buffer ptr) #\newline) (loop (+ ptr 1) 1) (loop (+ ptr 1) (+ column 1))))))))) (get-user-offset-all (lambda () (if (< user-ptr start-ptr) (user-go-to-start-all)) user-offset)) (user-getc-none (lambda () (if (< user-ptr start-ptr) (user-go-to-start-none)) (if (< user-ptr read-ptr) (let ((c (string-ref buffer user-ptr))) (set! user-ptr (+ user-ptr 1)) c) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer user-ptr c) (set! read-ptr (+ read-ptr 1)) (set! user-ptr read-ptr) c) (begin (set! input-f (lambda () 'eof)) 'eof)))))) (user-getc-line (lambda () (if (< user-ptr start-ptr) (user-go-to-start-line)) (if (< user-ptr read-ptr) (let ((c (string-ref buffer user-ptr))) (set! user-ptr (+ user-ptr 1)) (if (char=? c #\newline) (set! user-line (+ user-line 1))) c) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer user-ptr c) (set! read-ptr (+ read-ptr 1)) (set! user-ptr read-ptr) (if (char=? c #\newline) (set! user-line (+ user-line 1))) c) (begin (set! input-f (lambda () 'eof)) 'eof)))))) (user-getc-all (lambda () (if (< user-ptr start-ptr) (user-go-to-start-all)) (if (< user-ptr read-ptr) (let ((c (string-ref buffer user-ptr))) (set! user-ptr (+ user-ptr 1)) (if (char=? c #\newline) (begin (set! user-line (+ user-line 1)) (set! user-column 1)) (set! user-column (+ user-column 1))) (set! user-offset (+ user-offset 1)) c) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer user-ptr c) (set! read-ptr (+ read-ptr 1)) (set! user-ptr read-ptr) (if (char=? c #\newline) (begin (set! user-line (+ user-line 1)) (set! user-column 1)) (set! user-column (+ user-column 1))) (set! user-offset (+ user-offset 1)) c) (begin (set! input-f (lambda () 'eof)) 'eof)))))) (user-ungetc-none (lambda () (if (> user-ptr start-ptr) (set! user-ptr (- user-ptr 1))))) (user-ungetc-line (lambda () (if (> user-ptr start-ptr) (begin (set! user-ptr (- user-ptr 1)) (let ((c (string-ref buffer user-ptr))) (if (char=? c #\newline) (set! user-line (- user-line 1)))))))) (user-ungetc-all (lambda () (if (> user-ptr start-ptr) (begin (set! user-ptr (- user-ptr 1)) (let ((c (string-ref buffer user-ptr))) (if (char=? c #\newline) (begin (set! user-line (- user-line 1)) (set! user-up-to-date? #f)) (set! user-column (- user-column 1))) (set! user-offset (- user-offset 1))))))) (reorganize-buffer ; Decaler ou agrandir le buffer (lambda () (if (< (* 2 start-ptr) buflen) (let* ((newlen (* 2 buflen)) (newbuf (make-string newlen)) (delta (- start-ptr 1))) (let loop ((from (- start-ptr 1))) (if (< from buflen) (begin (string-set! newbuf (- from delta) (string-ref buffer from)) (loop (+ from 1))))) (set! buffer newbuf) (set! buflen newlen) (set! read-ptr (- read-ptr delta)) (set! start-ptr (- start-ptr delta)) (set! end-ptr (- end-ptr delta)) (set! point-ptr (- point-ptr delta)) (set! user-ptr (- user-ptr delta))) (let ((delta (- start-ptr 1))) (let loop ((from (- start-ptr 1))) (if (< from buflen) (begin (string-set! buffer (- from delta) (string-ref buffer from)) (loop (+ from 1))))) (set! read-ptr (- read-ptr delta)) (set! start-ptr (- start-ptr delta)) (set! end-ptr (- end-ptr delta)) (set! point-ptr (- point-ptr delta)) (set! user-ptr (- user-ptr delta))))))) (list (cons 'start-go-to-end (cond ((eq? counters 'none) start-go-to-end-none) ((eq? counters 'line) start-go-to-end-line) ((eq? counters 'all ) start-go-to-end-all))) (cons 'end-go-to-point end-go-to-point) (cons 'init-lexeme (cond ((eq? counters 'none) init-lexeme-none) ((eq? counters 'line) init-lexeme-line) ((eq? counters 'all ) init-lexeme-all))) (cons 'get-start-line get-start-line) (cons 'get-start-column get-start-column) (cons 'get-start-offset get-start-offset) (cons 'peek-left-context peek-left-context) (cons 'peek-char peek-char) (cons 'read-char read-char) (cons 'get-start-end-text get-start-end-text) (cons 'get-user-line (cond ((eq? counters 'none) #f) ((eq? counters 'line) get-user-line-line) ((eq? counters 'all ) get-user-line-all))) (cons 'get-user-column (cond ((eq? counters 'none) #f) ((eq? counters 'line) #f) ((eq? counters 'all ) get-user-column-all))) (cons 'get-user-offset (cond ((eq? counters 'none) #f) ((eq? counters 'line) #f) ((eq? counters 'all ) get-user-offset-all))) (cons 'user-getc (cond ((eq? counters 'none) user-getc-none) ((eq? counters 'line) user-getc-line) ((eq? counters 'all ) user-getc-all))) (cons 'user-ungetc (cond ((eq? counters 'none) user-ungetc-none) ((eq? counters 'line) user-ungetc-line) ((eq? counters 'all ) user-ungetc-all)))))))) ; Construit un Input System ; Le premier parametre doit etre parmi "port", "procedure" ou "string" ; Prend un parametre facultatif qui doit etre parmi ; "none", "line" ou "all" (define lexer-make-IS (lambda (input-type input . largs) (let ((counters-type (cond ((null? largs) 'line) ((memq (car largs) '(none line all)) (car largs)) (else 'line)))) (cond ((and (eq? input-type 'port) (input-port? input)) (let* ((buffer (make-string lexer-init-buffer-len #\newline)) (read-ptr 1) (input-f (lambda () (read-char input)))) (lexer-raw-IS-maker buffer read-ptr input-f counters-type))) ((and (eq? input-type 'procedure) (procedure? input)) (let* ((buffer (make-string lexer-init-buffer-len #\newline)) (read-ptr 1) (input-f input)) (lexer-raw-IS-maker buffer read-ptr input-f counters-type))) ((and (eq? input-type 'string) (string? input)) (let* ((buffer (string-append (string #\newline) input)) (read-ptr (string-length buffer)) (input-f (lambda () 'eof))) (lexer-raw-IS-maker buffer read-ptr input-f counters-type))) (else (let* ((buffer (string #\newline)) (read-ptr 1) (input-f (lambda () 'eof))) (lexer-raw-IS-maker buffer read-ptr input-f counters-type))))))) ; Les fonctions: ; lexer-get-func-getc, lexer-get-func-ungetc, ; lexer-get-func-line, lexer-get-func-column et lexer-get-func-offset (define lexer-get-func-getc (lambda (IS) (cdr (assq 'user-getc IS)))) (define lexer-get-func-ungetc (lambda (IS) (cdr (assq 'user-ungetc IS)))) (define lexer-get-func-line (lambda (IS) (cdr (assq 'get-user-line IS)))) (define lexer-get-func-column (lambda (IS) (cdr (assq 'get-user-column IS)))) (define lexer-get-func-offset (lambda (IS) (cdr (assq 'get-user-offset IS)))) ; ; Gestion des lexers ; ; Fabrication de lexer a partir d'arbres de decision (define lexer-make-tree-lexer (lambda (tables IS) (letrec (; Contenu de la table (counters-type (vector-ref tables 0)) (<>-pre-action (vector-ref tables 1)) (<>-pre-action (vector-ref tables 2)) (rules-pre-actions (vector-ref tables 3)) (table-nl-start (vector-ref tables 5)) (table-no-nl-start (vector-ref tables 6)) (trees-v (vector-ref tables 7)) (acc-v (vector-ref tables 8)) ; Contenu du IS (IS-start-go-to-end (cdr (assq 'start-go-to-end IS))) (IS-end-go-to-point (cdr (assq 'end-go-to-point IS))) (IS-init-lexeme (cdr (assq 'init-lexeme IS))) (IS-get-start-line (cdr (assq 'get-start-line IS))) (IS-get-start-column (cdr (assq 'get-start-column IS))) (IS-get-start-offset (cdr (assq 'get-start-offset IS))) (IS-peek-left-context (cdr (assq 'peek-left-context IS))) (IS-peek-char (cdr (assq 'peek-char IS))) (IS-read-char (cdr (assq 'read-char IS))) (IS-get-start-end-text (cdr (assq 'get-start-end-text IS))) (IS-get-user-line (cdr (assq 'get-user-line IS))) (IS-get-user-column (cdr (assq 'get-user-column IS))) (IS-get-user-offset (cdr (assq 'get-user-offset IS))) (IS-user-getc (cdr (assq 'user-getc IS))) (IS-user-ungetc (cdr (assq 'user-ungetc IS))) ; Resultats (<>-action #f) (<>-action #f) (rules-actions #f) (states #f) (final-lexer #f) ; Gestion des hooks (hook-list '()) (add-hook (lambda (thunk) (set! hook-list (cons thunk hook-list)))) (apply-hooks (lambda () (let loop ((l hook-list)) (if (pair? l) (begin ((car l)) (loop (cdr l))))))) ; Preparation des actions (set-action-statics (lambda (pre-action) (pre-action final-lexer IS-user-getc IS-user-ungetc))) (prepare-special-action-none (lambda (pre-action) (let ((action #f)) (let ((result (lambda () (action ""))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-special-action-line (lambda (pre-action) (let ((action #f)) (let ((result (lambda (yyline) (action "" yyline))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-special-action-all (lambda (pre-action) (let ((action #f)) (let ((result (lambda (yyline yycolumn yyoffset) (action "" yyline yycolumn yyoffset))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-special-action (lambda (pre-action) (cond ((eq? counters-type 'none) (prepare-special-action-none pre-action)) ((eq? counters-type 'line) (prepare-special-action-line pre-action)) ((eq? counters-type 'all) (prepare-special-action-all pre-action))))) (prepare-action-yytext-none (lambda (pre-action) (let ((get-start-end-text IS-get-start-end-text) (start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda () (let ((yytext (get-start-end-text))) (start-go-to-end) (action yytext)))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-yytext-line (lambda (pre-action) (let ((get-start-end-text IS-get-start-end-text) (start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda (yyline) (let ((yytext (get-start-end-text))) (start-go-to-end) (action yytext yyline)))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-yytext-all (lambda (pre-action) (let ((get-start-end-text IS-get-start-end-text) (start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda (yyline yycolumn yyoffset) (let ((yytext (get-start-end-text))) (start-go-to-end) (action yytext yyline yycolumn yyoffset)))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-yytext (lambda (pre-action) (cond ((eq? counters-type 'none) (prepare-action-yytext-none pre-action)) ((eq? counters-type 'line) (prepare-action-yytext-line pre-action)) ((eq? counters-type 'all) (prepare-action-yytext-all pre-action))))) (prepare-action-no-yytext-none (lambda (pre-action) (let ((start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda () (start-go-to-end) (action))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-no-yytext-line (lambda (pre-action) (let ((start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda (yyline) (start-go-to-end) (action yyline))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-no-yytext-all (lambda (pre-action) (let ((start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda (yyline yycolumn yyoffset) (start-go-to-end) (action yyline yycolumn yyoffset))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-no-yytext (lambda (pre-action) (cond ((eq? counters-type 'none) (prepare-action-no-yytext-none pre-action)) ((eq? counters-type 'line) (prepare-action-no-yytext-line pre-action)) ((eq? counters-type 'all) (prepare-action-no-yytext-all pre-action))))) ; Fabrique les fonctions de dispatch (prepare-dispatch-err (lambda (leaf) (lambda (c) #f))) (prepare-dispatch-number (lambda (leaf) (let ((state-function #f)) (let ((result (lambda (c) state-function)) (hook (lambda () (set! state-function (vector-ref states leaf))))) (add-hook hook) result)))) (prepare-dispatch-leaf (lambda (leaf) (if (eq? leaf 'err) (prepare-dispatch-err leaf) (prepare-dispatch-number leaf)))) (prepare-dispatch-< (lambda (tree) (let ((left-tree (list-ref tree 1)) (right-tree (list-ref tree 2))) (let ((bound (list-ref tree 0)) (left-func (prepare-dispatch-tree left-tree)) (right-func (prepare-dispatch-tree right-tree))) (lambda (c) (if (< c bound) (left-func c) (right-func c))))))) (prepare-dispatch-= (lambda (tree) (let ((left-tree (list-ref tree 2)) (right-tree (list-ref tree 3))) (let ((bound (list-ref tree 1)) (left-func (prepare-dispatch-tree left-tree)) (right-func (prepare-dispatch-tree right-tree))) (lambda (c) (if (= c bound) (left-func c) (right-func c))))))) (prepare-dispatch-tree (lambda (tree) (cond ((not (pair? tree)) (prepare-dispatch-leaf tree)) ((eq? (car tree) '=) (prepare-dispatch-= tree)) (else (prepare-dispatch-< tree))))) (prepare-dispatch (lambda (tree) (let ((dicho-func (prepare-dispatch-tree tree))) (lambda (c) (and c (dicho-func c)))))) ; Fabrique les fonctions de transition (read & go) et (abort) (prepare-read-n-go (lambda (tree) (let ((dispatch-func (prepare-dispatch tree)) (read-char IS-read-char)) (lambda () (dispatch-func (read-char)))))) (prepare-abort (lambda (tree) (lambda () #f))) (prepare-transition (lambda (tree) (if (eq? tree 'err) (prepare-abort tree) (prepare-read-n-go tree)))) ; Fabrique les fonctions d'etats ([set-end] & trans) (prepare-state-no-acc (lambda (s r1 r2) (let ((trans-func (prepare-transition (vector-ref trees-v s)))) (lambda (action) (let ((next-state (trans-func))) (if next-state (next-state action) action)))))) (prepare-state-yes-no (lambda (s r1 r2) (let ((peek-char IS-peek-char) (end-go-to-point IS-end-go-to-point) (new-action1 #f) (trans-func (prepare-transition (vector-ref trees-v s)))) (let ((result (lambda (action) (let* ((c (peek-char)) (new-action (if (or (not c) (= c lexer-integer-newline)) (begin (end-go-to-point) new-action1) action)) (next-state (trans-func))) (if next-state (next-state new-action) new-action)))) (hook (lambda () (set! new-action1 (vector-ref rules-actions r1))))) (add-hook hook) result)))) (prepare-state-diff-acc (lambda (s r1 r2) (let ((end-go-to-point IS-end-go-to-point) (peek-char IS-peek-char) (new-action1 #f) (new-action2 #f) (trans-func (prepare-transition (vector-ref trees-v s)))) (let ((result (lambda (action) (end-go-to-point) (let* ((c (peek-char)) (new-action (if (or (not c) (= c lexer-integer-newline)) new-action1 new-action2)) (next-state (trans-func))) (if next-state (next-state new-action) new-action)))) (hook (lambda () (set! new-action1 (vector-ref rules-actions r1)) (set! new-action2 (vector-ref rules-actions r2))))) (add-hook hook) result)))) (prepare-state-same-acc (lambda (s r1 r2) (let ((end-go-to-point IS-end-go-to-point) (trans-func (prepare-transition (vector-ref trees-v s))) (new-action #f)) (let ((result (lambda (action) (end-go-to-point) (let ((next-state (trans-func))) (if next-state (next-state new-action) new-action)))) (hook (lambda () (set! new-action (vector-ref rules-actions r1))))) (add-hook hook) result)))) (prepare-state (lambda (s) (let* ((acc (vector-ref acc-v s)) (r1 (car acc)) (r2 (cdr acc))) (cond ((not r1) (prepare-state-no-acc s r1 r2)) ((not r2) (prepare-state-yes-no s r1 r2)) ((< r1 r2) (prepare-state-diff-acc s r1 r2)) (else (prepare-state-same-acc s r1 r2)))))) ; Fabrique la fonction de lancement du lexage a l'etat de depart (prepare-start-same (lambda (s1 s2) (let ((peek-char IS-peek-char) (eof-action #f) (start-state #f) (error-action #f)) (let ((result (lambda () (if (not (peek-char)) eof-action (start-state error-action)))) (hook (lambda () (set! eof-action <>-action) (set! start-state (vector-ref states s1)) (set! error-action <>-action)))) (add-hook hook) result)))) (prepare-start-diff (lambda (s1 s2) (let ((peek-char IS-peek-char) (eof-action #f) (peek-left-context IS-peek-left-context) (start-state1 #f) (start-state2 #f) (error-action #f)) (let ((result (lambda () (cond ((not (peek-char)) eof-action) ((= (peek-left-context) lexer-integer-newline) (start-state1 error-action)) (else (start-state2 error-action))))) (hook (lambda () (set! eof-action <>-action) (set! start-state1 (vector-ref states s1)) (set! start-state2 (vector-ref states s2)) (set! error-action <>-action)))) (add-hook hook) result)))) (prepare-start (lambda () (let ((s1 table-nl-start) (s2 table-no-nl-start)) (if (= s1 s2) (prepare-start-same s1 s2) (prepare-start-diff s1 s2))))) ; Fabrique la fonction principale (prepare-lexer-none (lambda () (let ((init-lexeme IS-init-lexeme) (start-func (prepare-start))) (lambda () (init-lexeme) ((start-func)))))) (prepare-lexer-line (lambda () (let ((init-lexeme IS-init-lexeme) (get-start-line IS-get-start-line) (start-func (prepare-start))) (lambda () (init-lexeme) (let ((yyline (get-start-line))) ((start-func) yyline)))))) (prepare-lexer-all (lambda () (let ((init-lexeme IS-init-lexeme) (get-start-line IS-get-start-line) (get-start-column IS-get-start-column) (get-start-offset IS-get-start-offset) (start-func (prepare-start))) (lambda () (init-lexeme) (let ((yyline (get-start-line)) (yycolumn (get-start-column)) (yyoffset (get-start-offset))) ((start-func) yyline yycolumn yyoffset)))))) (prepare-lexer (lambda () (cond ((eq? counters-type 'none) (prepare-lexer-none)) ((eq? counters-type 'line) (prepare-lexer-line)) ((eq? counters-type 'all) (prepare-lexer-all)))))) ; Calculer la valeur de <>-action et de <>-action (set! <>-action (prepare-special-action <>-pre-action)) (set! <>-action (prepare-special-action <>-pre-action)) ; Calculer la valeur de rules-actions (let* ((len (quotient (vector-length rules-pre-actions) 2)) (v (make-vector len))) (let loop ((r (- len 1))) (if (< r 0) (set! rules-actions v) (let* ((yytext? (vector-ref rules-pre-actions (* 2 r))) (pre-action (vector-ref rules-pre-actions (+ (* 2 r) 1))) (action (if yytext? (prepare-action-yytext pre-action) (prepare-action-no-yytext pre-action)))) (vector-set! v r action) (loop (- r 1)))))) ; Calculer la valeur de states (let* ((len (vector-length trees-v)) (v (make-vector len))) (let loop ((s (- len 1))) (if (< s 0) (set! states v) (begin (vector-set! v s (prepare-state s)) (loop (- s 1)))))) ; Calculer la valeur de final-lexer (set! final-lexer (prepare-lexer)) ; Executer les hooks (apply-hooks) ; Resultat final-lexer))) ; Fabrication de lexer a partir de listes de caracteres taggees (define lexer-make-char-lexer (let* ((char->class (lambda (c) (let ((n (char->integer c))) (list (cons n n))))) (merge-sort (lambda (l combine zero-elt) (if (null? l) zero-elt (let loop1 ((l l)) (if (null? (cdr l)) (car l) (loop1 (let loop2 ((l l)) (cond ((null? l) l) ((null? (cdr l)) l) (else (cons (combine (car l) (cadr l)) (loop2 (cddr l)))))))))))) (finite-class-union (lambda (c1 c2) (let loop ((c1 c1) (c2 c2) (u '())) (if (null? c1) (if (null? c2) (reverse u) (loop c1 (cdr c2) (cons (car c2) u))) (if (null? c2) (loop (cdr c1) c2 (cons (car c1) u)) (let* ((r1 (car c1)) (r2 (car c2)) (r1start (car r1)) (r1end (cdr r1)) (r2start (car r2)) (r2end (cdr r2))) (if (<= r1start r2start) (cond ((< (+ r1end 1) r2start) (loop (cdr c1) c2 (cons r1 u))) ((<= r1end r2end) (loop (cdr c1) (cons (cons r1start r2end) (cdr c2)) u)) (else (loop c1 (cdr c2) u))) (cond ((> r1start (+ r2end 1)) (loop c1 (cdr c2) (cons r2 u))) ((>= r1end r2end) (loop (cons (cons r2start r1end) (cdr c1)) (cdr c2) u)) (else (loop (cdr c1) c2 u)))))))))) (char-list->class (lambda (cl) (let ((classes (map char->class cl))) (merge-sort classes finite-class-union '())))) (class-< (lambda (b1 b2) (cond ((eq? b1 'inf+) #f) ((eq? b2 'inf-) #f) ((eq? b1 'inf-) #t) ((eq? b2 'inf+) #t) (else (< b1 b2))))) (finite-class-compl (lambda (c) (let loop ((c c) (start 'inf-)) (if (null? c) (list (cons start 'inf+)) (let* ((r (car c)) (rstart (car r)) (rend (cdr r))) (if (class-< start rstart) (cons (cons start (- rstart 1)) (loop c rstart)) (loop (cdr c) (+ rend 1)))))))) (tagged-chars->class (lambda (tcl) (let* ((inverse? (car tcl)) (cl (cdr tcl)) (class-tmp (char-list->class cl))) (if inverse? (finite-class-compl class-tmp) class-tmp)))) (charc->arc (lambda (charc) (let* ((tcl (car charc)) (dest (cdr charc)) (class (tagged-chars->class tcl))) (cons class dest)))) (arc->sharcs (lambda (arc) (let* ((range-l (car arc)) (dest (cdr arc)) (op (lambda (range) (cons range dest)))) (map op range-l)))) (class-<= (lambda (b1 b2) (cond ((eq? b1 'inf-) #t) ((eq? b2 'inf+) #t) ((eq? b1 'inf+) #f) ((eq? b2 'inf-) #f) (else (<= b1 b2))))) (sharc-<= (lambda (sharc1 sharc2) (class-<= (caar sharc1) (caar sharc2)))) (merge-sharcs (lambda (l1 l2) (let loop ((l1 l1) (l2 l2)) (cond ((null? l1) l2) ((null? l2) l1) (else (let ((sharc1 (car l1)) (sharc2 (car l2))) (if (sharc-<= sharc1 sharc2) (cons sharc1 (loop (cdr l1) l2)) (cons sharc2 (loop l1 (cdr l2)))))))))) (class-= eqv?) (fill-error (lambda (sharcs) (let loop ((sharcs sharcs) (start 'inf-)) (cond ((class-= start 'inf+) '()) ((null? sharcs) (cons (cons (cons start 'inf+) 'err) (loop sharcs 'inf+))) (else (let* ((sharc (car sharcs)) (h (caar sharc)) (t (cdar sharc))) (if (class-< start h) (cons (cons (cons start (- h 1)) 'err) (loop sharcs h)) (cons sharc (loop (cdr sharcs) (if (class-= t 'inf+) 'inf+ (+ t 1))))))))))) (charcs->tree (lambda (charcs) (let* ((op (lambda (charc) (arc->sharcs (charc->arc charc)))) (sharcs-l (map op charcs)) (sorted-sharcs (merge-sort sharcs-l merge-sharcs '())) (full-sharcs (fill-error sorted-sharcs)) (op (lambda (sharc) (cons (caar sharc) (cdr sharc)))) (table (list->vector (map op full-sharcs)))) (let loop ((left 0) (right (- (vector-length table) 1))) (if (= left right) (cdr (vector-ref table left)) (let ((mid (quotient (+ left right 1) 2))) (if (and (= (+ left 2) right) (= (+ (car (vector-ref table mid)) 1) (car (vector-ref table right))) (eqv? (cdr (vector-ref table left)) (cdr (vector-ref table right)))) (list '= (car (vector-ref table mid)) (cdr (vector-ref table mid)) (cdr (vector-ref table left))) (list (car (vector-ref table mid)) (loop left (- mid 1)) (loop mid right)))))))))) (lambda (tables IS) (let ((counters (vector-ref tables 0)) (<>-action (vector-ref tables 1)) (<>-action (vector-ref tables 2)) (rules-actions (vector-ref tables 3)) (nl-start (vector-ref tables 5)) (no-nl-start (vector-ref tables 6)) (charcs-v (vector-ref tables 7)) (acc-v (vector-ref tables 8))) (let* ((len (vector-length charcs-v)) (v (make-vector len))) (let loop ((i (- len 1))) (if (>= i 0) (begin (vector-set! v i (charcs->tree (vector-ref charcs-v i))) (loop (- i 1))) (lexer-make-tree-lexer (vector counters <>-action <>-action rules-actions 'decision-trees nl-start no-nl-start v acc-v) IS)))))))) ; Fabrication d'un lexer a partir de code pre-genere (define lexer-make-code-lexer (lambda (tables IS) (let ((<>-pre-action (vector-ref tables 1)) (<>-pre-action (vector-ref tables 2)) (rules-pre-action (vector-ref tables 3)) (code (vector-ref tables 5))) (code <>-pre-action <>-pre-action rules-pre-action IS)))) (define lexer-make-lexer (lambda (tables IS) (let ((automaton-type (vector-ref tables 4))) (cond ((eq? automaton-type 'decision-trees) (lexer-make-tree-lexer tables IS)) ((eq? automaton-type 'tagged-chars-lists) (lexer-make-char-lexer tables IS)) ((eq? automaton-type 'code) (lexer-make-code-lexer tables IS)))))) ; Module lexparser.scm. ; ; Fonctions auxilliaires du lexer ; (define parse-spec-char (lambda (lexeme line column) (make-tok char-tok lexeme line column newline-ch))) (define parse-digits-char (lambda (lexeme line column) (let* ((num (substring lexeme 1 (string-length lexeme))) (n (string->number num))) (make-tok char-tok lexeme line column n)))) (define parse-quoted-char (lambda (lexeme line column) (let ((c (string-ref lexeme 1))) (make-tok char-tok lexeme line column (char->integer c))))) (define parse-ordinary-char (lambda (lexeme line column) (let ((c (string-ref lexeme 0))) (make-tok char-tok lexeme line column (char->integer c))))) (define string-downcase (lambda (s) (let* ((l (string->list s)) (ld (map char-downcase l))) (list->string ld)))) (define extract-id (lambda (s) (let ((len (string-length s))) (substring s 1 (- len 1))))) (define parse-id (lambda (lexeme line column) (make-tok id-tok lexeme line column (string-downcase lexeme) lexeme))) (define parse-id-ref (lambda (lexeme line column) (let* ((orig-name (extract-id lexeme)) (name (string-downcase orig-name))) (make-tok subst-tok lexeme line column name orig-name)))) (define parse-power-m (lambda (lexeme line column) (let* ((len (string-length lexeme)) (substr (substring lexeme 1 (- len 1))) (m (string->number substr)) (range (cons m m))) (make-tok power-tok lexeme line column range)))) (define parse-power-m-inf (lambda (lexeme line column) (let* ((len (string-length lexeme)) (substr (substring lexeme 1 (- len 2))) (m (string->number substr)) (range (cons m 'inf))) (make-tok power-tok lexeme line column range)))) (define parse-power-m-n (lambda (lexeme line column) (let ((len (string-length lexeme))) (let loop ((comma 2)) (if (char=? (string-ref lexeme comma) #\,) (let* ((sub1 (substring lexeme 1 comma)) (sub2 (substring lexeme (+ comma 1) (- len 1))) (m (string->number sub1)) (n (string->number sub2)) (range (cons m n))) (make-tok power-tok lexeme line column range)) (loop (+ comma 1))))))) ; ; Lexer generique ; (define lexer-raw #f) (define lexer-stack '()) (define lexer-alist #f) (define lexer-buffer #f) (define lexer-buffer-empty? #t) (define lexer-history '()) (define lexer-history-interp #f) (define init-lexer (lambda (port) (let* ((IS (lexer-make-IS 'port port 'all)) (action-lexer (lexer-make-lexer action-tables IS)) (class-lexer (lexer-make-lexer class-tables IS)) (macro-lexer (lexer-make-lexer macro-tables IS)) (regexp-lexer (lexer-make-lexer regexp-tables IS)) (string-lexer (lexer-make-lexer string-tables IS))) (set! lexer-raw #f) (set! lexer-stack '()) (set! lexer-alist (list (cons 'action action-lexer) (cons 'class class-lexer) (cons 'macro macro-lexer) (cons 'regexp regexp-lexer) (cons 'string string-lexer))) (set! lexer-buffer-empty? #t) (set! lexer-history '())))) ; Lexer brut ; S'assurer qu'il n'y a pas de risque de changer de ; lexer quand le buffer est rempli (define push-lexer (lambda (name) (set! lexer-stack (cons lexer-raw lexer-stack)) (set! lexer-raw (cdr (assq name lexer-alist))))) (define pop-lexer (lambda () (set! lexer-raw (car lexer-stack)) (set! lexer-stack (cdr lexer-stack)))) ; Traite le "unget" (capacite du unget: 1) (define lexer2 (lambda () (if lexer-buffer-empty? (lexer-raw) (begin (set! lexer-buffer-empty? #t) lexer-buffer)))) (define lexer2-unget (lambda (tok) (set! lexer-buffer tok) (set! lexer-buffer-empty? #f))) ; Traite l'historique (define lexer (lambda () (let* ((tok (lexer2)) (tok-lexeme (get-tok-lexeme tok)) (hist-lexeme (if lexer-history-interp (blank-translate tok-lexeme) tok-lexeme))) (set! lexer-history (cons hist-lexeme lexer-history)) tok))) (define lexer-unget (lambda (tok) (set! lexer-history (cdr lexer-history)) (lexer2-unget tok))) (define lexer-set-blank-history (lambda (b) (set! lexer-history-interp b))) (define blank-translate (lambda (s) (let ((ss (string-copy s))) (let loop ((i (- (string-length ss) 1))) (cond ((< i 0) ss) ((char=? (string-ref ss i) (integer->char tab-ch)) (loop (- i 1))) ((char=? (string-ref ss i) #\newline) (loop (- i 1))) (else (string-set! ss i #\space) (loop (- i 1)))))))) (define lexer-get-history (lambda () (let* ((rightlist (reverse lexer-history)) (str (apply string-append rightlist)) (strlen (string-length str)) (str2 (if (and (> strlen 0) (char=? (string-ref str (- strlen 1)) #\newline)) str (string-append str (string #\newline))))) (set! lexer-history '()) str2))) ; ; Traitement des listes de tokens ; (define de-anchor-tokens (let ((not-anchor-toks (make-dispatch-table number-of-tokens (list (cons caret-tok #f) (cons dollar-tok #f) (cons <>-tok #f) (cons <>-tok #f)) #t))) (lambda (tok-list) (if (null? tok-list) '() (let* ((tok (car tok-list)) (tok-type (get-tok-type tok)) (toks (cdr tok-list)) (new-toks (de-anchor-tokens toks))) (cond ((vector-ref not-anchor-toks tok-type) (cons tok new-toks)) ((or (= tok-type caret-tok) (= tok-type dollar-tok)) (let* ((line (get-tok-line tok)) (column (get-tok-column tok)) (attr (if (= tok-type caret-tok) caret-ch dollar-ch)) (new-tok (make-tok char-tok "" line column attr))) (cons new-tok new-toks))) ((= tok-type <>-tok) (lex-error (get-tok-line tok) (get-tok-column tok) "the <> anchor must be used alone" " and only after %%.")) ((= tok-type <>-tok) (lex-error (get-tok-line tok) (get-tok-column tok) "the <> anchor must be used alone" " and only after %%.")))))))) (define strip-end (lambda (l) (if (null? (cdr l)) '() (cons (car l) (strip-end (cdr l)))))) (define extract-anchors (lambda (tok-list) (let* ((tok1 (car tok-list)) (line (get-tok-line tok1)) (tok1-type (get-tok-type tok1))) (cond ((and (= tok1-type <>-tok) (null? (cdr tok-list))) (make-rule line #t #f #f #f '() #f)) ((and (= tok1-type <>-tok) (null? (cdr tok-list))) (make-rule line #f #t #f #f '() #f)) (else (let* ((bol? (= tok1-type caret-tok)) (tok-list2 (if bol? (cdr tok-list) tok-list))) (if (null? tok-list2) (make-rule line #f #f bol? #f tok-list2 #f) (let* ((len (length tok-list2)) (tok2 (list-ref tok-list2 (- len 1))) (tok2-type (get-tok-type tok2)) (eol? (= tok2-type dollar-tok)) (tok-list3 (if eol? (strip-end tok-list2) tok-list2))) (make-rule line #f #f bol? eol? tok-list3 #f))))))))) (define char-list->conc (lambda (char-list) (if (null? char-list) (make-re epsilon-re) (let loop ((cl char-list)) (let* ((c (car cl)) (cl2 (cdr cl))) (if (null? cl2) (make-re char-re c) (make-re conc-re (make-re char-re c) (loop cl2)))))))) (define parse-tokens-atom (let ((action-table (make-dispatch-table number-of-tokens (list (cons lpar-tok (lambda (tok tok-list macros) (parse-tokens-sub tok-list macros))) (cons dot-tok (lambda (tok tok-list macros) (cons (make-re class-re dot-class) (cdr tok-list)))) (cons subst-tok (lambda (tok tok-list macros) (let* ((name (get-tok-attr tok)) (ass (assoc name macros))) (if ass (cons (cdr ass) (cdr tok-list)) (lex-error (get-tok-line tok) (get-tok-column tok) "unknown macro \"" (get-tok-2nd-attr tok) "\"."))))) (cons char-tok (lambda (tok tok-list macros) (let ((c (get-tok-attr tok))) (cons (make-re char-re c) (cdr tok-list))))) (cons class-tok (lambda (tok tok-list macros) (let ((class (get-tok-attr tok))) (cons (make-re class-re class) (cdr tok-list))))) (cons string-tok (lambda (tok tok-list macros) (let* ((char-list (get-tok-attr tok)) (re (char-list->conc char-list))) (cons re (cdr tok-list)))))) (lambda (tok tok-list macros) (lex-error (get-tok-line tok) (get-tok-column tok) "syntax error in regular expression."))))) (lambda (tok-list macros) (let* ((tok (car tok-list)) (tok-type (get-tok-type tok)) (action (vector-ref action-table tok-type))) (action tok tok-list macros))))) (define check-power-tok (lambda (tok) (let* ((range (get-tok-attr tok)) (start (car range)) (end (cdr range))) (if (or (eq? 'inf end) (<= start end)) range (lex-error (get-tok-line tok) (get-tok-column tok) "incorrect power specification."))))) (define power->star-plus (lambda (re range) (power->star-plus-rec re (car range) (cdr range)))) (define power->star-plus-rec (lambda (re start end) (cond ((eq? end 'inf) (cond ((= start 0) (make-re star-re re)) ((= start 1) (make-re plus-re re)) (else (make-re conc-re re (power->star-plus-rec re (- start 1) 'inf))))) ((= start 0) (cond ((= end 0) (make-re epsilon-re)) ((= end 1) (make-re question-re re)) (else (make-re question-re (power->star-plus-rec re 1 end))))) ((= start 1) (if (= end 1) re (make-re conc-re re (power->star-plus-rec re 0 (- end 1))))) (else (make-re conc-re re (power->star-plus-rec re (- start 1) (- end 1))))))) (define parse-tokens-fact (let ((not-op-toks (make-dispatch-table number-of-tokens (list (cons question-tok #f) (cons plus-tok #f) (cons star-tok #f) (cons power-tok #f)) #t))) (lambda (tok-list macros) (let* ((result (parse-tokens-atom tok-list macros)) (re (car result)) (tok-list2 (cdr result))) (let loop ((re re) (tok-list3 tok-list2)) (let* ((tok (car tok-list3)) (tok-type (get-tok-type tok))) (cond ((vector-ref not-op-toks tok-type) (cons re tok-list3)) ((= tok-type question-tok) (loop (make-re question-re re) (cdr tok-list3))) ((= tok-type plus-tok) (loop (make-re plus-re re) (cdr tok-list3))) ((= tok-type star-tok) (loop (make-re star-re re) (cdr tok-list3))) ((= tok-type power-tok) (loop (power->star-plus re (check-power-tok tok)) (cdr tok-list3)))))))))) (define parse-tokens-conc (lambda (tok-list macros) (let* ((result1 (parse-tokens-fact tok-list macros)) (re1 (car result1)) (tok-list2 (cdr result1)) (tok (car tok-list2)) (tok-type (get-tok-type tok))) (cond ((or (= tok-type pipe-tok) (= tok-type rpar-tok)) result1) (else ; Autres facteurs (let* ((result2 (parse-tokens-conc tok-list2 macros)) (re2 (car result2)) (tok-list3 (cdr result2))) (cons (make-re conc-re re1 re2) tok-list3))))))) (define parse-tokens-or (lambda (tok-list macros) (let* ((result1 (parse-tokens-conc tok-list macros)) (re1 (car result1)) (tok-list2 (cdr result1)) (tok (car tok-list2)) (tok-type (get-tok-type tok))) (cond ((= tok-type pipe-tok) (let* ((tok-list3 (cdr tok-list2)) (result2 (parse-tokens-or tok-list3 macros)) (re2 (car result2)) (tok-list4 (cdr result2))) (cons (make-re or-re re1 re2) tok-list4))) (else ; rpar-tok result1))))) (define parse-tokens-sub (lambda (tok-list macros) (let* ((tok-list2 (cdr tok-list)) ; Manger le lpar-tok (result (parse-tokens-or tok-list2 macros)) (re (car result)) (tok-list3 (cdr result)) (tok-list4 (cdr tok-list3))) ; Manger le rpar-tok (cons re tok-list4)))) (define parse-tokens-match (lambda (tok-list line) (let loop ((tl tok-list) (count 0)) (if (null? tl) (if (> count 0) (lex-error line #f "mismatched parentheses.")) (let* ((tok (car tl)) (tok-type (get-tok-type tok))) (cond ((= tok-type lpar-tok) (loop (cdr tl) (+ count 1))) ((= tok-type rpar-tok) (if (zero? count) (lex-error line #f "mismatched parentheses.")) (loop (cdr tl) (- count 1))) (else (loop (cdr tl) count)))))))) ; Ne traite pas les anchors (define parse-tokens (lambda (tok-list macros) (if (null? tok-list) (make-re epsilon-re) (let ((line (get-tok-line (car tok-list)))) (parse-tokens-match tok-list line) (let* ((begin-par (make-tok lpar-tok "" line 1)) (end-par (make-tok rpar-tok "" line 1))) (let* ((tok-list2 (append (list begin-par) tok-list (list end-par))) (result (parse-tokens-sub tok-list2 macros))) (car result))))))) ; (cdr result) == () obligatoirement (define tokens->regexp (lambda (tok-list macros) (let ((tok-list2 (de-anchor-tokens tok-list))) (parse-tokens tok-list2 macros)))) (define tokens->rule (lambda (tok-list macros) (let* ((rule (extract-anchors tok-list)) (tok-list2 (get-rule-regexp rule)) (tok-list3 (de-anchor-tokens tok-list2)) (re (parse-tokens tok-list3 macros))) (set-rule-regexp rule re) rule))) ; Retourne une paire: <>-action et vecteur des regles ordinaires (define adapt-rules (lambda (rules) (let loop ((r rules) (revr '()) (<>-action #f) (<>-action #f)) (if (null? r) (cons (or <>-action default-<>-action) (cons (or <>-action default-<>-action) (list->vector (reverse revr)))) (let ((r1 (car r))) (cond ((get-rule-eof? r1) (if <>-action (lex-error (get-rule-line r1) #f "the <> anchor can be " "used at most once.") (loop (cdr r) revr (get-rule-action r1) <>-action))) ((get-rule-error? r1) (if <>-action (lex-error (get-rule-line r1) #f "the <> anchor can be " "used at most once.") (loop (cdr r) revr <>-action (get-rule-action r1)))) (else (loop (cdr r) (cons r1 revr) <>-action <>-action)))))))) ; ; Analyseur de fichier lex ; (define parse-hv-blanks (lambda () (let* ((tok (lexer)) (tok-type (get-tok-type tok))) (if (or (= tok-type hblank-tok) (= tok-type vblank-tok)) (parse-hv-blanks) (lexer-unget tok))))) (define parse-class-range (lambda () (let* ((tok (lexer)) (tok-type (get-tok-type tok))) (cond ((= tok-type char-tok) (let* ((c (get-tok-attr tok)) (tok2 (lexer)) (tok2-type (get-tok-type tok2))) (if (not (= tok2-type minus-tok)) (begin (lexer-unget tok2) (cons c c)) (let* ((tok3 (lexer)) (tok3-type (get-tok-type tok3))) (cond ((= tok3-type char-tok) (let ((c2 (get-tok-attr tok3))) (if (> c c2) (lex-error (get-tok-line tok3) (get-tok-column tok3) "bad range specification in " "character class;" #\newline "the start character is " "higher than the end one.") (cons c c2)))) ((or (= tok3-type rbrack-tok) (= tok3-type minus-tok)) (lex-error (get-tok-line tok3) (get-tok-column tok3) "bad range specification in " "character class; a specification" #\newline "like \"-x\", \"x--\" or \"x-]\" has " "been used.")) ((= tok3-type eof-tok) (lex-error (get-tok-line tok3) #f "eof of file found while parsing " "a character class."))))))) ((= tok-type minus-tok) (lex-error (get-tok-line tok) (get-tok-column tok) "bad range specification in character class; a " "specification" #\newline "like \"-x\", \"x--\" or \"x-]\" has been used.")) ((= tok-type rbrack-tok) #f) ((= tok-type eof-tok) (lex-error (get-tok-line tok) #f "eof of file found while parsing " "a character class.")))))) (define parse-class (lambda (initial-class negative-class? line column) (push-lexer 'class) (let loop ((class initial-class)) (let ((new-range (parse-class-range))) (if new-range (loop (class-union (list new-range) class)) (let ((class (if negative-class? (class-compl class) class))) (pop-lexer) (make-tok class-tok "" line column class))))))) (define parse-string (lambda (line column) (push-lexer 'string) (let ((char-list (let loop () (let* ((tok (lexer)) (tok-type (get-tok-type tok))) (cond ((= tok-type char-tok) (cons (get-tok-attr tok) (loop))) ((= tok-type doublequote-tok) (pop-lexer) '()) (else ; eof-tok (lex-error (get-tok-line tok) #f "end of file found while " "parsing a string."))))))) (make-tok string-tok "" line column char-list)))) (define parse-regexp (let* ((end-action (lambda (tok loop) (lexer-unget tok) (pop-lexer) (lexer-set-blank-history #f) `())) (action-table (make-dispatch-table number-of-tokens (list (cons eof-tok end-action) (cons hblank-tok end-action) (cons vblank-tok end-action) (cons lbrack-tok (lambda (tok loop) (let ((tok1 (parse-class (list) #f (get-tok-line tok) (get-tok-column tok)))) (cons tok1 (loop))))) (cons lbrack-rbrack-tok (lambda (tok loop) (let ((tok1 (parse-class (list (cons rbrack-ch rbrack-ch)) #f (get-tok-line tok) (get-tok-column tok)))) (cons tok1 (loop))))) (cons lbrack-caret-tok (lambda (tok loop) (let ((tok1 (parse-class (list) #t (get-tok-line tok) (get-tok-column tok)))) (cons tok1 (loop))))) (cons lbrack-minus-tok (lambda (tok loop) (let ((tok1 (parse-class (list (cons minus-ch minus-ch)) #f (get-tok-line tok) (get-tok-column tok)))) (cons tok1 (loop))))) (cons doublequote-tok (lambda (tok loop) (let ((tok1 (parse-string (get-tok-line tok) (get-tok-column tok)))) (cons tok1 (loop))))) (cons illegal-tok (lambda (tok loop) (lex-error (get-tok-line tok) (get-tok-column tok) "syntax error in macro reference.")))) (lambda (tok loop) (cons tok (loop)))))) (lambda () (push-lexer 'regexp) (lexer-set-blank-history #t) (parse-hv-blanks) (let loop () (let* ((tok (lexer)) (tok-type (get-tok-type tok)) (action (vector-ref action-table tok-type))) (action tok loop)))))) (define parse-ws1-regexp ; Exige un blanc entre le nom et la RE d'une macro (lambda () (let* ((tok (lexer)) (tok-type (get-tok-type tok))) (cond ((or (= tok-type hblank-tok) (= tok-type vblank-tok)) (parse-regexp)) (else ; percent-percent-tok, id-tok ou illegal-tok (lex-error (get-tok-line tok) (get-tok-column tok) "white space expected.")))))) (define parse-macro (lambda (macros) (push-lexer 'macro) (parse-hv-blanks) (let* ((tok (lexer)) (tok-type (get-tok-type tok))) (cond ((= tok-type id-tok) (let* ((name (get-tok-attr tok)) (ass (assoc name macros))) (if ass (lex-error (get-tok-line tok) (get-tok-column tok) "the macro \"" (get-tok-2nd-attr tok) "\" has already been defined.") (let* ((tok-list (parse-ws1-regexp)) (regexp (tokens->regexp tok-list macros))) (pop-lexer) (cons name regexp))))) ((= tok-type percent-percent-tok) (pop-lexer) #f) ((= tok-type illegal-tok) (lex-error (get-tok-line tok) (get-tok-column tok) "macro name expected.")) ((= tok-type eof-tok) (lex-error (get-tok-line tok) #f "end of file found before %%.")))))) (define parse-macros (lambda () (let loop ((macros '())) (let ((macro (parse-macro macros))) (if macro (loop (cons macro macros)) macros))))) (define parse-action-end (lambda (<>-action? <>-action? action?) (let ((act (lexer-get-history))) (cond (action? act) (<>-action? (string-append act default-<>-action)) (<>-action? (string-append act default-<>-action)) (else (string-append act default-action)))))) (define parse-action (lambda (<>-action? <>-action?) (push-lexer 'action) (let loop ((action? #f)) (let* ((tok (lexer)) (tok-type (get-tok-type tok))) (cond ((= tok-type char-tok) (loop #t)) ((= tok-type hblank-tok) (loop action?)) ((= tok-type vblank-tok) (push-lexer 'regexp) (let* ((tok (lexer)) (tok-type (get-tok-type tok)) (bidon (lexer-unget tok))) (pop-lexer) (if (or (= tok-type hblank-tok) (= tok-type vblank-tok)) (loop action?) (begin (pop-lexer) (parse-action-end <>-action? <>-action? action?))))) (else ; eof-tok (lexer-unget tok) (pop-lexer) (parse-action-end <>-action? <>-action? action?))))))) (define parse-rule (lambda (macros) (let ((tok-list (parse-regexp))) (if (null? tok-list) #f (let* ((rule (tokens->rule tok-list macros)) (action (parse-action (get-rule-eof? rule) (get-rule-error? rule)))) (set-rule-action rule action) rule))))) (define parse-rules (lambda (macros) (parse-action #f #f) (let loop () (let ((rule (parse-rule macros))) (if rule (cons rule (loop)) '()))))) (define parser (lambda (filename) (let* ((port (open-input-file filename)) (port-open? #t)) (lex-unwind-protect (lambda () (if port-open? (close-input-port port)))) (init-lexer port) (let* ((macros (parse-macros)) (rules (parse-rules macros))) (close-input-port port) (set! port-open? #f) (adapt-rules rules))))) ; Module re2nfa.scm. ; Le vecteur d'etats contient la table de transition du nfa. ; Chaque entree contient les arcs partant de l'etat correspondant. ; Les arcs sont stockes dans une liste. ; Chaque arc est une paire (class . destination). ; Les caracteres d'une classe sont enumeres par ranges. ; Les ranges sont donnes dans une liste, ; chaque element etant une paire (debut . fin). ; Le symbole eps peut remplacer une classe. ; L'acceptation est decrite par une paire (acc-if-eol . acc-if-no-eol). ; Quelques variables globales (define r2n-counter 0) (define r2n-v-arcs '#(#f)) (define r2n-v-acc '#(#f)) (define r2n-v-len 1) ; Initialisation des variables globales (define r2n-init (lambda () (set! r2n-counter 0) (set! r2n-v-arcs (vector '())) (set! r2n-v-acc (vector #f)) (set! r2n-v-len 1))) ; Agrandissement des vecteurs (define r2n-extend-v (lambda () (let* ((new-len (* 2 r2n-v-len)) (new-v-arcs (make-vector new-len '())) (new-v-acc (make-vector new-len #f))) (let loop ((i 0)) (if (< i r2n-v-len) (begin (vector-set! new-v-arcs i (vector-ref r2n-v-arcs i)) (vector-set! new-v-acc i (vector-ref r2n-v-acc i)) (loop (+ i 1))))) (set! r2n-v-arcs new-v-arcs) (set! r2n-v-acc new-v-acc) (set! r2n-v-len new-len)))) ; Finalisation des vecteurs (define r2n-finalize-v (lambda () (let* ((new-v-arcs (make-vector r2n-counter)) (new-v-acc (make-vector r2n-counter))) (let loop ((i 0)) (if (< i r2n-counter) (begin (vector-set! new-v-arcs i (vector-ref r2n-v-arcs i)) (vector-set! new-v-acc i (vector-ref r2n-v-acc i)) (loop (+ i 1))))) (set! r2n-v-arcs new-v-arcs) (set! r2n-v-acc new-v-acc) (set! r2n-v-len r2n-counter)))) ; Creation d'etat (define r2n-get-state (lambda (acc) (if (= r2n-counter r2n-v-len) (r2n-extend-v)) (let ((state r2n-counter)) (set! r2n-counter (+ r2n-counter 1)) (vector-set! r2n-v-acc state (or acc (cons #f #f))) state))) ; Ajout d'un arc (define r2n-add-arc (lambda (start chars end) (vector-set! r2n-v-arcs start (cons (cons chars end) (vector-ref r2n-v-arcs start))))) ; Construction de l'automate a partir des regexp (define r2n-build-epsilon (lambda (re start end) (r2n-add-arc start 'eps end))) (define r2n-build-or (lambda (re start end) (let ((re1 (get-re-attr1 re)) (re2 (get-re-attr2 re))) (r2n-build-re re1 start end) (r2n-build-re re2 start end)))) (define r2n-build-conc (lambda (re start end) (let* ((re1 (get-re-attr1 re)) (re2 (get-re-attr2 re)) (inter (r2n-get-state #f))) (r2n-build-re re1 start inter) (r2n-build-re re2 inter end)))) (define r2n-build-star (lambda (re start end) (let* ((re1 (get-re-attr1 re)) (inter1 (r2n-get-state #f)) (inter2 (r2n-get-state #f))) (r2n-add-arc start 'eps inter1) (r2n-add-arc inter1 'eps inter2) (r2n-add-arc inter2 'eps end) (r2n-build-re re1 inter2 inter1)))) (define r2n-build-plus (lambda (re start end) (let* ((re1 (get-re-attr1 re)) (inter1 (r2n-get-state #f)) (inter2 (r2n-get-state #f))) (r2n-add-arc start 'eps inter1) (r2n-add-arc inter2 'eps inter1) (r2n-add-arc inter2 'eps end) (r2n-build-re re1 inter1 inter2)))) (define r2n-build-question (lambda (re start end) (let ((re1 (get-re-attr1 re))) (r2n-add-arc start 'eps end) (r2n-build-re re1 start end)))) (define r2n-build-class (lambda (re start end) (let ((class (get-re-attr1 re))) (r2n-add-arc start class end)))) (define r2n-build-char (lambda (re start end) (let* ((c (get-re-attr1 re)) (class (list (cons c c)))) (r2n-add-arc start class end)))) (define r2n-build-re (let ((sub-function-v (vector r2n-build-epsilon r2n-build-or r2n-build-conc r2n-build-star r2n-build-plus r2n-build-question r2n-build-class r2n-build-char))) (lambda (re start end) (let* ((re-type (get-re-type re)) (sub-f (vector-ref sub-function-v re-type))) (sub-f re start end))))) ; Construction de l'automate relatif a une regle (define r2n-build-rule (lambda (rule ruleno nl-start no-nl-start) (let* ((re (get-rule-regexp rule)) (bol? (get-rule-bol? rule)) (eol? (get-rule-eol? rule)) (rule-start (r2n-get-state #f)) (rule-end (r2n-get-state (if eol? (cons ruleno #f) (cons ruleno ruleno))))) (r2n-build-re re rule-start rule-end) (r2n-add-arc nl-start 'eps rule-start) (if (not bol?) (r2n-add-arc no-nl-start 'eps rule-start))))) ; Construction de l'automate complet (define re2nfa (lambda (rules) (let ((nb-of-rules (vector-length rules))) (r2n-init) (let* ((nl-start (r2n-get-state #f)) (no-nl-start (r2n-get-state #f))) (let loop ((i 0)) (if (< i nb-of-rules) (begin (r2n-build-rule (vector-ref rules i) i nl-start no-nl-start) (loop (+ i 1))))) (r2n-finalize-v) (let ((v-arcs r2n-v-arcs) (v-acc r2n-v-acc)) (r2n-init) (list nl-start no-nl-start v-arcs v-acc)))))) ; Module noeps.scm. ; Fonction "merge" qui elimine les repetitions (define noeps-merge-1 (lambda (l1 l2) (cond ((null? l1) l2) ((null? l2) l1) (else (let ((t1 (car l1)) (t2 (car l2))) (cond ((< t1 t2) (cons t1 (noeps-merge-1 (cdr l1) l2))) ((= t1 t2) (cons t1 (noeps-merge-1 (cdr l1) (cdr l2)))) (else (cons t2 (noeps-merge-1 l1 (cdr l2)))))))))) ; Fabrication des voisinages externes (define noeps-mkvois (lambda (trans-v) (let* ((nbnodes (vector-length trans-v)) (arcs (make-vector nbnodes '()))) (let loop1 ((n 0)) (if (< n nbnodes) (begin (let loop2 ((trans (vector-ref trans-v n)) (ends '())) (if (null? trans) (vector-set! arcs n ends) (let* ((tran (car trans)) (class (car tran)) (end (cdr tran))) (loop2 (cdr trans) (if (eq? class 'eps) (noeps-merge-1 ends (list end)) ends))))) (loop1 (+ n 1))))) arcs))) ; Fabrication des valeurs initiales (define noeps-mkinit (lambda (trans-v) (let* ((nbnodes (vector-length trans-v)) (init (make-vector nbnodes))) (let loop ((n 0)) (if (< n nbnodes) (begin (vector-set! init n (list n)) (loop (+ n 1))))) init))) ; Traduction d'une liste d'arcs (define noeps-trad-arcs (lambda (trans dict) (let loop ((trans trans)) (if (null? trans) '() (let* ((tran (car trans)) (class (car tran)) (end (cdr tran))) (if (eq? class 'eps) (loop (cdr trans)) (let* ((new-end (vector-ref dict end)) (new-tran (cons class new-end))) (cons new-tran (loop (cdr trans)))))))))) ; Elimination des transitions eps (define noeps (lambda (nl-start no-nl-start arcs acc) (let* ((digraph-arcs (noeps-mkvois arcs)) (digraph-init (noeps-mkinit arcs)) (dict (digraph digraph-arcs digraph-init noeps-merge-1)) (new-nl-start (vector-ref dict nl-start)) (new-no-nl-start (vector-ref dict no-nl-start))) (let loop ((i (- (vector-length arcs) 1))) (if (>= i 0) (begin (vector-set! arcs i (noeps-trad-arcs (vector-ref arcs i) dict)) (loop (- i 1))))) (list new-nl-start new-no-nl-start arcs acc)))) ; Module sweep.scm. ; Preparer les arcs pour digraph (define sweep-mkarcs (lambda (trans-v) (let* ((nbnodes (vector-length trans-v)) (arcs-v (make-vector nbnodes '()))) (let loop1 ((n 0)) (if (< n nbnodes) (let loop2 ((trans (vector-ref trans-v n)) (arcs '())) (if (null? trans) (begin (vector-set! arcs-v n arcs) (loop1 (+ n 1))) (loop2 (cdr trans) (noeps-merge-1 (cdar trans) arcs)))) arcs-v))))) ; Preparer l'operateur pour digraph (define sweep-op (let ((acc-min (lambda (rule1 rule2) (cond ((not rule1) rule2) ((not rule2) rule1) (else (min rule1 rule2)))))) (lambda (acc1 acc2) (cons (acc-min (car acc1) (car acc2)) (acc-min (cdr acc1) (cdr acc2)))))) ; Renumerotation des etats (#f pour etat a eliminer) ; Retourne (new-nbnodes . dict) (define sweep-renum (lambda (dist-acc-v) (let* ((nbnodes (vector-length dist-acc-v)) (dict (make-vector nbnodes))) (let loop ((n 0) (new-n 0)) (if (< n nbnodes) (let* ((acc (vector-ref dist-acc-v n)) (dead? (equal? acc '(#f . #f)))) (if dead? (begin (vector-set! dict n #f) (loop (+ n 1) new-n)) (begin (vector-set! dict n new-n) (loop (+ n 1) (+ new-n 1))))) (cons new-n dict)))))) ; Elimination des etats inutiles d'une liste d'etats (define sweep-list (lambda (ss dict) (if (null? ss) '() (let* ((olds (car ss)) (news (vector-ref dict olds))) (if news (cons news (sweep-list (cdr ss) dict)) (sweep-list (cdr ss) dict)))))) ; Elimination des etats inutiles d'une liste d'arcs (define sweep-arcs (lambda (arcs dict) (if (null? arcs) '() (let* ((arc (car arcs)) (class (car arc)) (ss (cdr arc)) (new-ss (sweep-list ss dict))) (if (null? new-ss) (sweep-arcs (cdr arcs) dict) (cons (cons class new-ss) (sweep-arcs (cdr arcs) dict))))))) ; Elimination des etats inutiles dans toutes les transitions (define sweep-all-arcs (lambda (arcs-v dict) (let loop ((n (- (vector-length arcs-v) 1))) (if (>= n 0) (begin (vector-set! arcs-v n (sweep-arcs (vector-ref arcs-v n) dict)) (loop (- n 1))) arcs-v)))) ; Elimination des etats inutiles dans un vecteur (define sweep-states (lambda (v new-nbnodes dict) (let ((nbnodes (vector-length v)) (new-v (make-vector new-nbnodes))) (let loop ((n 0)) (if (< n nbnodes) (let ((new-n (vector-ref dict n))) (if new-n (vector-set! new-v new-n (vector-ref v n))) (loop (+ n 1))) new-v))))) ; Elimination des etats inutiles (define sweep (lambda (nl-start no-nl-start arcs-v acc-v) (let* ((digraph-arcs (sweep-mkarcs arcs-v)) (digraph-init acc-v) (digraph-op sweep-op) (dist-acc-v (digraph digraph-arcs digraph-init digraph-op)) (result (sweep-renum dist-acc-v)) (new-nbnodes (car result)) (dict (cdr result)) (new-nl-start (sweep-list nl-start dict)) (new-no-nl-start (sweep-list no-nl-start dict)) (new-arcs-v (sweep-states (sweep-all-arcs arcs-v dict) new-nbnodes dict)) (new-acc-v (sweep-states acc-v new-nbnodes dict))) (list new-nl-start new-no-nl-start new-arcs-v new-acc-v)))) ; Module nfa2dfa.scm. ; Recoupement de deux arcs (define n2d-2arcs (lambda (arc1 arc2) (let* ((class1 (car arc1)) (ss1 (cdr arc1)) (class2 (car arc2)) (ss2 (cdr arc2)) (result (class-sep class1 class2)) (classl (vector-ref result 0)) (classc (vector-ref result 1)) (classr (vector-ref result 2)) (ssl ss1) (ssc (ss-union ss1 ss2)) (ssr ss2)) (vector (if (or (null? classl) (null? ssl)) #f (cons classl ssl)) (if (or (null? classc) (null? ssc)) #f (cons classc ssc)) (if (or (null? classr) (null? ssr)) #f (cons classr ssr)))))) ; Insertion d'un arc dans une liste d'arcs a classes distinctes (define n2d-insert-arc (lambda (new-arc arcs) (if (null? arcs) (list new-arc) (let* ((arc (car arcs)) (others (cdr arcs)) (result (n2d-2arcs new-arc arc)) (arcl (vector-ref result 0)) (arcc (vector-ref result 1)) (arcr (vector-ref result 2)) (list-arcc (if arcc (list arcc) '())) (list-arcr (if arcr (list arcr) '()))) (if arcl (append list-arcc list-arcr (n2d-insert-arc arcl others)) (append list-arcc list-arcr others)))))) ; Regroupement des arcs qui aboutissent au meme sous-ensemble d'etats (define n2d-factorize-arcs (lambda (arcs) (if (null? arcs) '() (let* ((arc (car arcs)) (arc-ss (cdr arc)) (others-no-fact (cdr arcs)) (others (n2d-factorize-arcs others-no-fact))) (let loop ((o others)) (if (null? o) (list arc) (let* ((o1 (car o)) (o1-ss (cdr o1))) (if (equal? o1-ss arc-ss) (let* ((arc-class (car arc)) (o1-class (car o1)) (new-class (class-union arc-class o1-class)) (new-arc (cons new-class arc-ss))) (cons new-arc (cdr o))) (cons o1 (loop (cdr o))))))))))) ; Transformer une liste d'arcs quelconques en des arcs a classes distinctes (define n2d-distinguish-arcs (lambda (arcs) (let loop ((arcs arcs) (n-arcs '())) (if (null? arcs) n-arcs (loop (cdr arcs) (n2d-insert-arc (car arcs) n-arcs)))))) ; Transformer une liste d'arcs quelconques en des arcs a classes et a ; destinations distinctes (define n2d-normalize-arcs (lambda (arcs) (n2d-factorize-arcs (n2d-distinguish-arcs arcs)))) ; Factoriser des arcs a destination unique (~deterministes) (define n2d-factorize-darcs (lambda (arcs) (if (null? arcs) '() (let* ((arc (car arcs)) (arc-end (cdr arc)) (other-arcs (cdr arcs)) (farcs (n2d-factorize-darcs other-arcs))) (let loop ((farcs farcs)) (if (null? farcs) (list arc) (let* ((farc (car farcs)) (farc-end (cdr farc))) (if (= farc-end arc-end) (let* ((arc-class (car arc)) (farc-class (car farc)) (new-class (class-union farc-class arc-class)) (new-arc (cons new-class arc-end))) (cons new-arc (cdr farcs))) (cons farc (loop (cdr farcs))))))))))) ; Normaliser un vecteur de listes d'arcs (define n2d-normalize-arcs-v (lambda (arcs-v) (let* ((nbnodes (vector-length arcs-v)) (new-v (make-vector nbnodes))) (let loop ((n 0)) (if (= n nbnodes) new-v (begin (vector-set! new-v n (n2d-normalize-arcs (vector-ref arcs-v n))) (loop (+ n 1)))))))) ; Inserer un arc dans une liste d'arcs a classes distinctes en separant ; les arcs contenant une partie de la classe du nouvel arc des autres arcs ; Retourne: (oui . non) (define n2d-ins-sep-arc (lambda (new-arc arcs) (if (null? arcs) (cons (list new-arc) '()) (let* ((arc (car arcs)) (others (cdr arcs)) (result (n2d-2arcs new-arc arc)) (arcl (vector-ref result 0)) (arcc (vector-ref result 1)) (arcr (vector-ref result 2)) (l-arcc (if arcc (list arcc) '())) (l-arcr (if arcr (list arcr) '())) (result (if arcl (n2d-ins-sep-arc arcl others) (cons '() others))) (oui-arcs (car result)) (non-arcs (cdr result))) (cons (append l-arcc oui-arcs) (append l-arcr non-arcs)))))) ; Combiner deux listes d'arcs a classes distinctes ; Ne tente pas de combiner les arcs qui ont nec. des classes disjointes ; Conjecture: les arcs crees ont leurs classes disjointes ; Note: envisager de rajouter un "n2d-factorize-arcs" !!!!!!!!!!!! (define n2d-combine-arcs (lambda (arcs1 arcs2) (let loop ((arcs1 arcs1) (arcs2 arcs2) (dist-arcs2 '())) (if (null? arcs1) (append arcs2 dist-arcs2) (let* ((arc (car arcs1)) (result (n2d-ins-sep-arc arc arcs2)) (oui-arcs (car result)) (non-arcs (cdr result))) (loop (cdr arcs1) non-arcs (append oui-arcs dist-arcs2))))))) ; ; ; ; Section temporaire: vieille facon de generer le dfa ; ; Dictionnaire d'etat det. Recherche lineaire. Creation naive ; ; des arcs d'un ensemble d'etats. ; ; ; ; ; Quelques variables globales ; (define n2d-state-dict '#(#f)) ; (define n2d-state-len 1) ; (define n2d-state-count 0) ; ; ; Fonctions de gestion des entrees du dictionnaire ; (define make-dentry (lambda (ss) (vector ss #f #f))) ; ; (define get-dentry-ss (lambda (dentry) (vector-ref dentry 0))) ; (define get-dentry-darcs (lambda (dentry) (vector-ref dentry 1))) ; (define get-dentry-acc (lambda (dentry) (vector-ref dentry 2))) ; ; (define set-dentry-darcs (lambda (dentry arcs) (vector-set! dentry 1 arcs))) ; (define set-dentry-acc (lambda (dentry acc) (vector-set! dentry 2 acc))) ; ; ; Initialisation des variables globales ; (define n2d-init-glob-vars ; (lambda () ; (set! n2d-state-dict (vector #f)) ; (set! n2d-state-len 1) ; (set! n2d-state-count 0))) ; ; ; Extension du dictionnaire ; (define n2d-extend-dict ; (lambda () ; (let* ((new-len (* 2 n2d-state-len)) ; (v (make-vector new-len #f))) ; (let loop ((n 0)) ; (if (= n n2d-state-count) ; (begin ; (set! n2d-state-dict v) ; (set! n2d-state-len new-len)) ; (begin ; (vector-set! v n (vector-ref n2d-state-dict n)) ; (loop (+ n 1)))))))) ; ; ; Ajout d'un etat ; (define n2d-add-state ; (lambda (ss) ; (let* ((s n2d-state-count) ; (dentry (make-dentry ss))) ; (if (= n2d-state-count n2d-state-len) ; (n2d-extend-dict)) ; (vector-set! n2d-state-dict s dentry) ; (set! n2d-state-count (+ n2d-state-count 1)) ; s))) ; ; ; Recherche d'un etat ; (define n2d-search-state ; (lambda (ss) ; (let loop ((n 0)) ; (if (= n n2d-state-count) ; (n2d-add-state ss) ; (let* ((dentry (vector-ref n2d-state-dict n)) ; (dentry-ss (get-dentry-ss dentry))) ; (if (equal? dentry-ss ss) ; n ; (loop (+ n 1)))))))) ; ; ; Transformer un arc non-det. en un arc det. ; (define n2d-translate-arc ; (lambda (arc) ; (let* ((class (car arc)) ; (ss (cdr arc)) ; (s (n2d-search-state ss))) ; (cons class s)))) ; ; ; Transformer une liste d'arcs non-det. en ... ; (define n2d-translate-arcs ; (lambda (arcs) ; (map n2d-translate-arc arcs))) ; ; ; Trouver le minimum de deux acceptants ; (define n2d-acc-min2 ; (let ((acc-min (lambda (rule1 rule2) ; (cond ((not rule1) ; rule2) ; ((not rule2) ; rule1) ; (else ; (min rule1 rule2)))))) ; (lambda (acc1 acc2) ; (cons (acc-min (car acc1) (car acc2)) ; (acc-min (cdr acc1) (cdr acc2)))))) ; ; ; Trouver le minimum de plusieurs acceptants ; (define n2d-acc-mins ; (lambda (accs) ; (if (null? accs) ; (cons #f #f) ; (n2d-acc-min2 (car accs) (n2d-acc-mins (cdr accs)))))) ; ; ; Fabriquer les vecteurs d'arcs et d'acceptance ; (define n2d-extract-vs ; (lambda () ; (let* ((arcs-v (make-vector n2d-state-count)) ; (acc-v (make-vector n2d-state-count))) ; (let loop ((n 0)) ; (if (= n n2d-state-count) ; (cons arcs-v acc-v) ; (begin ; (vector-set! arcs-v n (get-dentry-darcs ; (vector-ref n2d-state-dict n))) ; (vector-set! acc-v n (get-dentry-acc ; (vector-ref n2d-state-dict n))) ; (loop (+ n 1)))))))) ; ; ; Effectuer la transformation de l'automate de non-det. a det. ; (define nfa2dfa ; (lambda (nl-start no-nl-start arcs-v acc-v) ; (n2d-init-glob-vars) ; (let* ((nl-d (n2d-search-state nl-start)) ; (no-nl-d (n2d-search-state no-nl-start))) ; (let loop ((n 0)) ; (if (< n n2d-state-count) ; (let* ((dentry (vector-ref n2d-state-dict n)) ; (ss (get-dentry-ss dentry)) ; (arcss (map (lambda (s) (vector-ref arcs-v s)) ss)) ; (arcs (apply append arcss)) ; (dist-arcs (n2d-distinguish-arcs arcs)) ; (darcs (n2d-translate-arcs dist-arcs)) ; (fact-darcs (n2d-factorize-darcs darcs)) ; (accs (map (lambda (s) (vector-ref acc-v s)) ss)) ; (acc (n2d-acc-mins accs))) ; (set-dentry-darcs dentry fact-darcs) ; (set-dentry-acc dentry acc) ; (loop (+ n 1))))) ; (let* ((result (n2d-extract-vs)) ; (new-arcs-v (car result)) ; (new-acc-v (cdr result))) ; (n2d-init-glob-vars) ; (list nl-d no-nl-d new-arcs-v new-acc-v))))) ; ; ; ; Section temporaire: vieille facon de generer le dfa ; ; Dictionnaire d'etat det. Recherche lineaire. Creation des ; ; arcs d'un ensemble d'etats en combinant des ensembles d'arcs a ; ; classes distinctes. ; ; ; ; ; Quelques variables globales ; (define n2d-state-dict '#(#f)) ; (define n2d-state-len 1) ; (define n2d-state-count 0) ; ; ; Fonctions de gestion des entrees du dictionnaire ; (define make-dentry (lambda (ss) (vector ss #f #f))) ; ; (define get-dentry-ss (lambda (dentry) (vector-ref dentry 0))) ; (define get-dentry-darcs (lambda (dentry) (vector-ref dentry 1))) ; (define get-dentry-acc (lambda (dentry) (vector-ref dentry 2))) ; ; (define set-dentry-darcs (lambda (dentry arcs) (vector-set! dentry 1 arcs))) ; (define set-dentry-acc (lambda (dentry acc) (vector-set! dentry 2 acc))) ; ; ; Initialisation des variables globales ; (define n2d-init-glob-vars ; (lambda () ; (set! n2d-state-dict (vector #f)) ; (set! n2d-state-len 1) ; (set! n2d-state-count 0))) ; ; ; Extension du dictionnaire ; (define n2d-extend-dict ; (lambda () ; (let* ((new-len (* 2 n2d-state-len)) ; (v (make-vector new-len #f))) ; (let loop ((n 0)) ; (if (= n n2d-state-count) ; (begin ; (set! n2d-state-dict v) ; (set! n2d-state-len new-len)) ; (begin ; (vector-set! v n (vector-ref n2d-state-dict n)) ; (loop (+ n 1)))))))) ; ; ; Ajout d'un etat ; (define n2d-add-state ; (lambda (ss) ; (let* ((s n2d-state-count) ; (dentry (make-dentry ss))) ; (if (= n2d-state-count n2d-state-len) ; (n2d-extend-dict)) ; (vector-set! n2d-state-dict s dentry) ; (set! n2d-state-count (+ n2d-state-count 1)) ; s))) ; ; ; Recherche d'un etat ; (define n2d-search-state ; (lambda (ss) ; (let loop ((n 0)) ; (if (= n n2d-state-count) ; (n2d-add-state ss) ; (let* ((dentry (vector-ref n2d-state-dict n)) ; (dentry-ss (get-dentry-ss dentry))) ; (if (equal? dentry-ss ss) ; n ; (loop (+ n 1)))))))) ; ; ; Combiner des listes d'arcs a classes dictinctes ; (define n2d-combine-arcs-l ; (lambda (arcs-l) ; (if (null? arcs-l) ; '() ; (let* ((arcs (car arcs-l)) ; (other-arcs-l (cdr arcs-l)) ; (other-arcs (n2d-combine-arcs-l other-arcs-l))) ; (n2d-combine-arcs arcs other-arcs))))) ; ; ; Transformer un arc non-det. en un arc det. ; (define n2d-translate-arc ; (lambda (arc) ; (let* ((class (car arc)) ; (ss (cdr arc)) ; (s (n2d-search-state ss))) ; (cons class s)))) ; ; ; Transformer une liste d'arcs non-det. en ... ; (define n2d-translate-arcs ; (lambda (arcs) ; (map n2d-translate-arc arcs))) ; ; ; Trouver le minimum de deux acceptants ; (define n2d-acc-min2 ; (let ((acc-min (lambda (rule1 rule2) ; (cond ((not rule1) ; rule2) ; ((not rule2) ; rule1) ; (else ; (min rule1 rule2)))))) ; (lambda (acc1 acc2) ; (cons (acc-min (car acc1) (car acc2)) ; (acc-min (cdr acc1) (cdr acc2)))))) ; ; ; Trouver le minimum de plusieurs acceptants ; (define n2d-acc-mins ; (lambda (accs) ; (if (null? accs) ; (cons #f #f) ; (n2d-acc-min2 (car accs) (n2d-acc-mins (cdr accs)))))) ; ; ; Fabriquer les vecteurs d'arcs et d'acceptance ; (define n2d-extract-vs ; (lambda () ; (let* ((arcs-v (make-vector n2d-state-count)) ; (acc-v (make-vector n2d-state-count))) ; (let loop ((n 0)) ; (if (= n n2d-state-count) ; (cons arcs-v acc-v) ; (begin ; (vector-set! arcs-v n (get-dentry-darcs ; (vector-ref n2d-state-dict n))) ; (vector-set! acc-v n (get-dentry-acc ; (vector-ref n2d-state-dict n))) ; (loop (+ n 1)))))))) ; ; ; Effectuer la transformation de l'automate de non-det. a det. ; (define nfa2dfa ; (lambda (nl-start no-nl-start arcs-v acc-v) ; (n2d-init-glob-vars) ; (let* ((nl-d (n2d-search-state nl-start)) ; (no-nl-d (n2d-search-state no-nl-start)) ; (norm-arcs-v (n2d-normalize-arcs-v arcs-v))) ; (let loop ((n 0)) ; (if (< n n2d-state-count) ; (let* ((dentry (vector-ref n2d-state-dict n)) ; (ss (get-dentry-ss dentry)) ; (arcs-l (map (lambda (s) (vector-ref norm-arcs-v s)) ss)) ; (arcs (n2d-combine-arcs-l arcs-l)) ; (darcs (n2d-translate-arcs arcs)) ; (fact-darcs (n2d-factorize-darcs darcs)) ; (accs (map (lambda (s) (vector-ref acc-v s)) ss)) ; (acc (n2d-acc-mins accs))) ; (set-dentry-darcs dentry fact-darcs) ; (set-dentry-acc dentry acc) ; (loop (+ n 1))))) ; (let* ((result (n2d-extract-vs)) ; (new-arcs-v (car result)) ; (new-acc-v (cdr result))) ; (n2d-init-glob-vars) ; (list nl-d no-nl-d new-arcs-v new-acc-v))))) ; ; ; ; Section temporaire: vieille facon de generer le dfa ; ; Dictionnaire d'etat det. Arbre de recherche. Creation des ; ; arcs d'un ensemble d'etats en combinant des ensembles d'arcs a ; ; classes distinctes. ; ; ; ; ; Quelques variables globales ; (define n2d-state-dict '#(#f)) ; (define n2d-state-len 1) ; (define n2d-state-count 0) ; (define n2d-state-tree '#(#f ())) ; ; ; Fonctions de gestion des entrees du dictionnaire ; (define make-dentry (lambda (ss) (vector ss #f #f))) ; ; (define get-dentry-ss (lambda (dentry) (vector-ref dentry 0))) ; (define get-dentry-darcs (lambda (dentry) (vector-ref dentry 1))) ; (define get-dentry-acc (lambda (dentry) (vector-ref dentry 2))) ; ; (define set-dentry-darcs (lambda (dentry arcs) (vector-set! dentry 1 arcs))) ; (define set-dentry-acc (lambda (dentry acc) (vector-set! dentry 2 acc))) ; ; ; Fonctions de gestion de l'arbre de recherche ; (define make-snode (lambda () (vector #f '()))) ; ; (define get-snode-dstate (lambda (snode) (vector-ref snode 0))) ; (define get-snode-children (lambda (snode) (vector-ref snode 1))) ; ; (define set-snode-dstate ; (lambda (snode dstate) (vector-set! snode 0 dstate))) ; (define set-snode-children ; (lambda (snode children) (vector-set! snode 1 children))) ; ; ; Initialisation des variables globales ; (define n2d-init-glob-vars ; (lambda () ; (set! n2d-state-dict (vector #f)) ; (set! n2d-state-len 1) ; (set! n2d-state-count 0) ; (set! n2d-state-tree (make-snode)))) ; ; ; Extension du dictionnaire ; (define n2d-extend-dict ; (lambda () ; (let* ((new-len (* 2 n2d-state-len)) ; (v (make-vector new-len #f))) ; (let loop ((n 0)) ; (if (= n n2d-state-count) ; (begin ; (set! n2d-state-dict v) ; (set! n2d-state-len new-len)) ; (begin ; (vector-set! v n (vector-ref n2d-state-dict n)) ; (loop (+ n 1)))))))) ; ; ; Ajout d'un etat ; (define n2d-add-state ; (lambda (ss) ; (let* ((s n2d-state-count) ; (dentry (make-dentry ss))) ; (if (= n2d-state-count n2d-state-len) ; (n2d-extend-dict)) ; (vector-set! n2d-state-dict s dentry) ; (set! n2d-state-count (+ n2d-state-count 1)) ; s))) ; ; ; Recherche d'un etat ; (define n2d-search-state ; (lambda (ss) ; (let loop ((s-l ss) (snode n2d-state-tree)) ; (if (null? s-l) ; (or (get-snode-dstate snode) ; (let ((s (n2d-add-state ss))) ; (set-snode-dstate snode s) ; s)) ; (let* ((next-s (car s-l)) ; (alist (get-snode-children snode)) ; (ass (or (assv next-s alist) ; (let ((ass (cons next-s (make-snode)))) ; (set-snode-children snode (cons ass alist)) ; ass)))) ; (loop (cdr s-l) (cdr ass))))))) ; ; ; Combiner des listes d'arcs a classes dictinctes ; (define n2d-combine-arcs-l ; (lambda (arcs-l) ; (if (null? arcs-l) ; '() ; (let* ((arcs (car arcs-l)) ; (other-arcs-l (cdr arcs-l)) ; (other-arcs (n2d-combine-arcs-l other-arcs-l))) ; (n2d-combine-arcs arcs other-arcs))))) ; ; ; Transformer un arc non-det. en un arc det. ; (define n2d-translate-arc ; (lambda (arc) ; (let* ((class (car arc)) ; (ss (cdr arc)) ; (s (n2d-search-state ss))) ; (cons class s)))) ; ; ; Transformer une liste d'arcs non-det. en ... ; (define n2d-translate-arcs ; (lambda (arcs) ; (map n2d-translate-arc arcs))) ; ; ; Trouver le minimum de deux acceptants ; (define n2d-acc-min2 ; (let ((acc-min (lambda (rule1 rule2) ; (cond ((not rule1) ; rule2) ; ((not rule2) ; rule1) ; (else ; (min rule1 rule2)))))) ; (lambda (acc1 acc2) ; (cons (acc-min (car acc1) (car acc2)) ; (acc-min (cdr acc1) (cdr acc2)))))) ; ; ; Trouver le minimum de plusieurs acceptants ; (define n2d-acc-mins ; (lambda (accs) ; (if (null? accs) ; (cons #f #f) ; (n2d-acc-min2 (car accs) (n2d-acc-mins (cdr accs)))))) ; ; ; Fabriquer les vecteurs d'arcs et d'acceptance ; (define n2d-extract-vs ; (lambda () ; (let* ((arcs-v (make-vector n2d-state-count)) ; (acc-v (make-vector n2d-state-count))) ; (let loop ((n 0)) ; (if (= n n2d-state-count) ; (cons arcs-v acc-v) ; (begin ; (vector-set! arcs-v n (get-dentry-darcs ; (vector-ref n2d-state-dict n))) ; (vector-set! acc-v n (get-dentry-acc ; (vector-ref n2d-state-dict n))) ; (loop (+ n 1)))))))) ; ; ; Effectuer la transformation de l'automate de non-det. a det. ; (define nfa2dfa ; (lambda (nl-start no-nl-start arcs-v acc-v) ; (n2d-init-glob-vars) ; (let* ((nl-d (n2d-search-state nl-start)) ; (no-nl-d (n2d-search-state no-nl-start)) ; (norm-arcs-v (n2d-normalize-arcs-v arcs-v))) ; (let loop ((n 0)) ; (if (< n n2d-state-count) ; (let* ((dentry (vector-ref n2d-state-dict n)) ; (ss (get-dentry-ss dentry)) ; (arcs-l (map (lambda (s) (vector-ref norm-arcs-v s)) ss)) ; (arcs (n2d-combine-arcs-l arcs-l)) ; (darcs (n2d-translate-arcs arcs)) ; (fact-darcs (n2d-factorize-darcs darcs)) ; (accs (map (lambda (s) (vector-ref acc-v s)) ss)) ; (acc (n2d-acc-mins accs))) ; (set-dentry-darcs dentry fact-darcs) ; (set-dentry-acc dentry acc) ; (loop (+ n 1))))) ; (let* ((result (n2d-extract-vs)) ; (new-arcs-v (car result)) ; (new-acc-v (cdr result))) ; (n2d-init-glob-vars) ; (list nl-d no-nl-d new-arcs-v new-acc-v))))) ; ; Section temporaire: vieille facon de generer le dfa ; Dictionnaire d'etat det. Table de hashage. Creation des ; arcs d'un ensemble d'etats en combinant des ensembles d'arcs a ; classes distinctes. ; ; Quelques variables globales (define n2d-state-dict '#(#f)) (define n2d-state-len 1) (define n2d-state-count 0) (define n2d-state-hash '#()) ; Fonctions de gestion des entrees du dictionnaire (define make-dentry (lambda (ss) (vector ss #f #f))) (define get-dentry-ss (lambda (dentry) (vector-ref dentry 0))) (define get-dentry-darcs (lambda (dentry) (vector-ref dentry 1))) (define get-dentry-acc (lambda (dentry) (vector-ref dentry 2))) (define set-dentry-darcs (lambda (dentry arcs) (vector-set! dentry 1 arcs))) (define set-dentry-acc (lambda (dentry acc) (vector-set! dentry 2 acc))) ; Initialisation des variables globales (define n2d-init-glob-vars (lambda (hash-len) (set! n2d-state-dict (vector #f)) (set! n2d-state-len 1) (set! n2d-state-count 0) (set! n2d-state-hash (make-vector hash-len '())))) ; Extension du dictionnaire (define n2d-extend-dict (lambda () (let* ((new-len (* 2 n2d-state-len)) (v (make-vector new-len #f))) (let loop ((n 0)) (if (= n n2d-state-count) (begin (set! n2d-state-dict v) (set! n2d-state-len new-len)) (begin (vector-set! v n (vector-ref n2d-state-dict n)) (loop (+ n 1)))))))) ; Ajout d'un etat (define n2d-add-state (lambda (ss) (let* ((s n2d-state-count) (dentry (make-dentry ss))) (if (= n2d-state-count n2d-state-len) (n2d-extend-dict)) (vector-set! n2d-state-dict s dentry) (set! n2d-state-count (+ n2d-state-count 1)) s))) ; Recherche d'un etat (define n2d-search-state (lambda (ss) (let* ((hash-no (if (null? ss) 0 (car ss))) (alist (vector-ref n2d-state-hash hash-no)) (ass (assoc ss alist))) (if ass (cdr ass) (let* ((s (n2d-add-state ss)) (new-ass (cons ss s))) (vector-set! n2d-state-hash hash-no (cons new-ass alist)) s))))) ; Combiner des listes d'arcs a classes dictinctes (define n2d-combine-arcs-l (lambda (arcs-l) (if (null? arcs-l) '() (let* ((arcs (car arcs-l)) (other-arcs-l (cdr arcs-l)) (other-arcs (n2d-combine-arcs-l other-arcs-l))) (n2d-combine-arcs arcs other-arcs))))) ; Transformer un arc non-det. en un arc det. (define n2d-translate-arc (lambda (arc) (let* ((class (car arc)) (ss (cdr arc)) (s (n2d-search-state ss))) (cons class s)))) ; Transformer une liste d'arcs non-det. en ... (define n2d-translate-arcs (lambda (arcs) (map n2d-translate-arc arcs))) ; Trouver le minimum de deux acceptants (define n2d-acc-min2 (let ((acc-min (lambda (rule1 rule2) (cond ((not rule1) rule2) ((not rule2) rule1) (else (min rule1 rule2)))))) (lambda (acc1 acc2) (cons (acc-min (car acc1) (car acc2)) (acc-min (cdr acc1) (cdr acc2)))))) ; Trouver le minimum de plusieurs acceptants (define n2d-acc-mins (lambda (accs) (if (null? accs) (cons #f #f) (n2d-acc-min2 (car accs) (n2d-acc-mins (cdr accs)))))) ; Fabriquer les vecteurs d'arcs et d'acceptance (define n2d-extract-vs (lambda () (let* ((arcs-v (make-vector n2d-state-count)) (acc-v (make-vector n2d-state-count))) (let loop ((n 0)) (if (= n n2d-state-count) (cons arcs-v acc-v) (begin (vector-set! arcs-v n (get-dentry-darcs (vector-ref n2d-state-dict n))) (vector-set! acc-v n (get-dentry-acc (vector-ref n2d-state-dict n))) (loop (+ n 1)))))))) ; Effectuer la transformation de l'automate de non-det. a det. (define nfa2dfa (lambda (nl-start no-nl-start arcs-v acc-v) (n2d-init-glob-vars (vector-length arcs-v)) (let* ((nl-d (n2d-search-state nl-start)) (no-nl-d (n2d-search-state no-nl-start)) (norm-arcs-v (n2d-normalize-arcs-v arcs-v))) (let loop ((n 0)) (if (< n n2d-state-count) (let* ((dentry (vector-ref n2d-state-dict n)) (ss (get-dentry-ss dentry)) (arcs-l (map (lambda (s) (vector-ref norm-arcs-v s)) ss)) (arcs (n2d-combine-arcs-l arcs-l)) (darcs (n2d-translate-arcs arcs)) (fact-darcs (n2d-factorize-darcs darcs)) (accs (map (lambda (s) (vector-ref acc-v s)) ss)) (acc (n2d-acc-mins accs))) (set-dentry-darcs dentry fact-darcs) (set-dentry-acc dentry acc) (loop (+ n 1))))) (let* ((result (n2d-extract-vs)) (new-arcs-v (car result)) (new-acc-v (cdr result))) (n2d-init-glob-vars 0) (list nl-d no-nl-d new-arcs-v new-acc-v))))) ; Module prep.scm. ; ; Divers pre-traitements avant l'ecriture des tables ; ; Passe d'un arc multi-range a une liste d'arcs mono-range (define prep-arc->sharcs (lambda (arc) (let* ((range-l (car arc)) (dest (cdr arc)) (op (lambda (range) (cons range dest)))) (map op range-l)))) ; Compare des arcs courts selon leur premier caractere (define prep-sharc-<= (lambda (sharc1 sharc2) (class-<= (caar sharc1) (caar sharc2)))) ; Remplit les trous parmi les sharcs avec des arcs "erreur" (define prep-fill-error (lambda (sharcs) (let loop ((sharcs sharcs) (start 'inf-)) (cond ((class-= start 'inf+) '()) ((null? sharcs) (cons (cons (cons start 'inf+) 'err) (loop sharcs 'inf+))) (else (let* ((sharc (car sharcs)) (h (caar sharc)) (t (cdar sharc))) (if (class-< start h) (cons (cons (cons start (- h 1)) 'err) (loop sharcs h)) (cons sharc (loop (cdr sharcs) (if (class-= t 'inf+) 'inf+ (+ t 1))))))))))) ; ; Passe d'une liste d'arcs a un arbre de decision ; ; 1ere methode: seulement des comparaisons < ; (define prep-arcs->tree ; (lambda (arcs) ; (let* ((sharcs-l (map prep-arc->sharcs arcs)) ; (sharcs (apply append sharcs-l)) ; (sorted-with-holes (merge-sort sharcs prep-sharc-<=)) ; (sorted (prep-fill-error sorted-with-holes)) ; (op (lambda (sharc) (cons (caar sharc) (cdr sharc)))) ; (table (list->vector (map op sorted)))) ; (let loop ((left 0) (right (- (vector-length table) 1))) ; (if (= left right) ; (cdr (vector-ref table left)) ; (let ((mid (quotient (+ left right 1) 2))) ; (list (car (vector-ref table mid)) ; (loop left (- mid 1)) ; (loop mid right)))))))) ; Passe d'une liste d'arcs a un arbre de decision ; 2eme methode: permettre des comparaisons = quand ca adonne (define prep-arcs->tree (lambda (arcs) (let* ((sharcs-l (map prep-arc->sharcs arcs)) (sharcs (apply append sharcs-l)) (sorted-with-holes (merge-sort sharcs prep-sharc-<=)) (sorted (prep-fill-error sorted-with-holes)) (op (lambda (sharc) (cons (caar sharc) (cdr sharc)))) (table (list->vector (map op sorted)))) (let loop ((left 0) (right (- (vector-length table) 1))) (if (= left right) (cdr (vector-ref table left)) (let ((mid (quotient (+ left right 1) 2))) (if (and (= (+ left 2) right) (= (+ (car (vector-ref table mid)) 1) (car (vector-ref table right))) (eqv? (cdr (vector-ref table left)) (cdr (vector-ref table right)))) (list '= (car (vector-ref table mid)) (cdr (vector-ref table mid)) (cdr (vector-ref table left))) (list (car (vector-ref table mid)) (loop left (- mid 1)) (loop mid right))))))))) ; Determine si une action a besoin de calculer yytext (define prep-detect-yytext (lambda (s) (let loop1 ((i (- (string-length s) 6))) (cond ((< i 0) #f) ((char-ci=? (string-ref s i) #\y) (let loop2 ((j 5)) (cond ((= j 0) #t) ((char-ci=? (string-ref s (+ i j)) (string-ref "yytext" j)) (loop2 (- j 1))) (else (loop1 (- i 1)))))) (else (loop1 (- i 1))))))) ; Note dans une regle si son action a besoin de yytext (define prep-set-rule-yytext? (lambda (rule) (let ((action (get-rule-action rule))) (set-rule-yytext? rule (prep-detect-yytext action))))) ; Note dans toutes les regles si leurs actions ont besoin de yytext (define prep-set-rules-yytext? (lambda (rules) (let loop ((n (- (vector-length rules) 1))) (if (>= n 0) (begin (prep-set-rule-yytext? (vector-ref rules n)) (loop (- n 1))))))) ; Module output.scm. ; ; Nettoie les actions en enlevant les lignes blanches avant et apres ; (define out-split-in-lines (lambda (s) (let ((len (string-length s))) (let loop ((i 0) (start 0)) (cond ((= i len) '()) ((char=? (string-ref s i) #\newline) (cons (substring s start (+ i 1)) (loop (+ i 1) (+ i 1)))) (else (loop (+ i 1) start))))))) (define out-empty-line? (lambda (s) (let ((len (- (string-length s) 1))) (let loop ((i 0)) (cond ((= i len) #t) ((char-whitespace? (string-ref s i)) (loop (+ i 1))) (else #f)))))) ; Enleve les lignes vides dans une liste avant et apres l'action (define out-remove-empty-lines (lambda (lines) (let loop ((lines lines) (top? #t)) (if (null? lines) '() (let ((line (car lines))) (cond ((not (out-empty-line? line)) (cons line (loop (cdr lines) #f))) (top? (loop (cdr lines) #t)) (else (let ((rest (loop (cdr lines) #f))) (if (null? rest) '() (cons line rest)))))))))) ; Enleve les lignes vides avant et apres l'action (define out-clean-action (lambda (s) (let* ((lines (out-split-in-lines s)) (clean-lines (out-remove-empty-lines lines))) (apply string-append clean-lines)))) ; ; Pretty-printer pour les booleens, la liste vide, les nombres, ; les symboles, les caracteres, les chaines, les listes et les vecteurs ; ; Colonne limite pour le pretty-printer (a ne pas atteindre) (define out-max-col 76) (define out-flatten-list (lambda (ll) (let loop ((ll ll) (part-out '())) (if (null? ll) part-out (let* ((new-part-out (loop (cdr ll) part-out)) (head (car ll))) (cond ((null? head) new-part-out) ((pair? head) (loop head new-part-out)) (else (cons head new-part-out)))))))) (define out-force-string (lambda (obj) (if (char? obj) (string obj) obj))) ; Transforme une liste impropre en une liste propre qui s'ecrit ; de la meme facon (define out-regular-list (let ((symbolic-dot (string->symbol "."))) (lambda (p) (let ((tail (cdr p))) (cond ((null? tail) p) ((pair? tail) (cons (car p) (out-regular-list tail))) (else (list (car p) symbolic-dot tail))))))) ; Cree des chaines d'espaces de facon paresseuse (define out-blanks (let ((cache-v (make-vector 80 #f))) (lambda (n) (or (vector-ref cache-v n) (let ((result (make-string n #\space))) (vector-set! cache-v n result) result))))) ; Insere le separateur entre chaque element d'une liste non-vide (define out-separate (lambda (text-l sep) (if (null? (cdr text-l)) text-l (cons (car text-l) (cons sep (out-separate (cdr text-l) sep)))))) ; Met des donnees en colonnes. Retourne comme out-pp-aux-list (define out-pp-columns (lambda (left right wmax txt&lens) (let loop1 ((tls txt&lens) (lwmax 0) (lwlast 0) (lines '())) (if (null? tls) (vector #t 0 lwmax lwlast (reverse lines)) (let loop2 ((tls tls) (len 0) (first? #t) (prev-pad 0) (line '())) (cond ((null? tls) (loop1 tls (max len lwmax) len (cons (reverse line) lines))) ((> (+ left len prev-pad 1 wmax) out-max-col) (loop1 tls (max len lwmax) len (cons (reverse line) lines))) (first? (let ((text (caar tls)) (text-len (cdar tls))) (loop2 (cdr tls) (+ len text-len) #f (- wmax text-len) (cons text line)))) ((pair? (cdr tls)) (let* ((prev-pad-s (out-blanks prev-pad)) (text (caar tls)) (text-len (cdar tls))) (loop2 (cdr tls) (+ len prev-pad 1 text-len) #f (- wmax text-len) (cons text (cons " " (cons prev-pad-s line)))))) (else (let ((prev-pad-s (out-blanks prev-pad)) (text (caar tls)) (text-len (cdar tls))) (if (> (+ left len prev-pad 1 text-len) right) (loop1 tls (max len lwmax) len (cons (reverse line) lines)) (loop2 (cdr tls) (+ len prev-pad 1 text-len) #f (- wmax text-len) (append (list text " " prev-pad-s) line))))))))))) ; Retourne un vecteur #( multiline? width-all width-max width-last text-l ) (define out-pp-aux-list (lambda (l left right) (let loop ((l l) (multi? #f) (wall -1) (wmax -1) (wlast -1) (txt&lens '())) (if (null? l) (cond (multi? (vector #t wall wmax wlast (map car (reverse txt&lens)))) ((<= (+ left wall) right) (vector #f wall wmax wlast (map car (reverse txt&lens)))) ((<= (+ left wmax 1 wmax) out-max-col) (out-pp-columns left right wmax (reverse txt&lens))) (else (vector #t wall wmax wlast (map car (reverse txt&lens))))) (let* ((obj (car l)) (last? (null? (cdr l))) (this-right (if last? right out-max-col)) (result (out-pp-aux obj left this-right)) (obj-multi? (vector-ref result 0)) (obj-wmax (vector-ref result 1)) (obj-wlast (vector-ref result 2)) (obj-text (vector-ref result 3))) (loop (cdr l) (or multi? obj-multi?) (+ wall obj-wmax 1) (max wmax obj-wmax) obj-wlast (cons (cons obj-text obj-wmax) txt&lens))))))) ; Retourne un vecteur #( multiline? wmax wlast text ) (define out-pp-aux (lambda (obj left right) (cond ((boolean? obj) (vector #f 2 2 (if obj '("#t") '("#f")))) ((null? obj) (vector #f 2 2 '("()"))) ((number? obj) (let* ((s (number->string obj)) (len (string-length s))) (vector #f len len (list s)))) ((symbol? obj) (let* ((s (symbol->string obj)) (len (string-length s))) (vector #f len len (list s)))) ((char? obj) (cond ((char=? obj #\space) (vector #f 7 7 (list "#\\space"))) ((char=? obj #\newline) (vector #f 9 9 (list "#\\newline"))) (else (vector #f 3 3 (list "#\\" obj))))) ((string? obj) (let loop ((i (- (string-length obj) 1)) (len 1) (text '("\""))) (if (= i -1) (vector #f (+ len 1) (+ len 1) (cons "\"" text)) (let ((c (string-ref obj i))) (cond ((char=? c #\\) (loop (- i 1) (+ len 2) (cons "\\\\" text))) ((char=? c #\") (loop (- i 1) (+ len 2) (cons "\\\"" text))) (else (loop (- i 1) (+ len 1) (cons (string c) text)))))))) ((pair? obj) (let* ((l (out-regular-list obj)) (result (out-pp-aux-list l (+ left 1) (- right 1))) (multiline? (vector-ref result 0)) (width-all (vector-ref result 1)) (width-max (vector-ref result 2)) (width-last (vector-ref result 3)) (text-l (vector-ref result 4))) (if multiline? (let* ((sep (list #\newline (out-blanks left))) (formatted-text (out-separate text-l sep)) (text (list "(" formatted-text ")"))) (vector #t (+ (max width-max (+ width-last 1)) 1) (+ width-last 2) text)) (let* ((sep (list " ")) (formatted-text (out-separate text-l sep)) (text (list "(" formatted-text ")"))) (vector #f (+ width-all 2) (+ width-all 2) text))))) ((and (vector? obj) (zero? (vector-length obj))) (vector #f 3 3 '("#()"))) ((vector? obj) (let* ((l (vector->list obj)) (result (out-pp-aux-list l (+ left 2) (- right 1))) (multiline? (vector-ref result 0)) (width-all (vector-ref result 1)) (width-max (vector-ref result 2)) (width-last (vector-ref result 3)) (text-l (vector-ref result 4))) (if multiline? (let* ((sep (list #\newline (out-blanks (+ left 1)))) (formatted-text (out-separate text-l sep)) (text (list "#(" formatted-text ")"))) (vector #t (+ (max width-max (+ width-last 1)) 2) (+ width-last 3) text)) (let* ((sep (list " ")) (formatted-text (out-separate text-l sep)) (text (list "#(" formatted-text ")"))) (vector #f (+ width-all 3) (+ width-all 3) text))))) (else (display "Internal error: out-pp") (newline))))) ; Retourne la chaine a afficher (define out-pp (lambda (obj col) (let* ((list-rec-of-strings-n-chars (vector-ref (out-pp-aux obj col out-max-col) 3)) (list-of-strings-n-chars (out-flatten-list list-rec-of-strings-n-chars)) (list-of-strings (map out-force-string list-of-strings-n-chars))) (apply string-append list-of-strings)))) ; ; Nice-printer, plus rapide mais moins beau que le pretty-printer ; (define out-np (lambda (obj start) (letrec ((line-pad (string-append (string #\newline) (out-blanks (- start 1)))) (step-line (lambda (p) (set-car! p line-pad))) (p-bool (lambda (obj col objw texts hole cont) (let ((text (if obj "#t" "#f"))) (cont (+ col 2) (+ objw 2) (cons text texts) hole)))) (p-number (lambda (obj col objw texts hole cont) (let* ((text (number->string obj)) (len (string-length text))) (cont (+ col len) (+ objw len) (cons text texts) hole)))) (p-symbol (lambda (obj col objw texts hole cont) (let* ((text (symbol->string obj)) (len (string-length text))) (cont (+ col len) (+ objw len) (cons text texts) hole)))) (p-char (lambda (obj col objw texts hole cont) (let* ((text (cond ((char=? obj #\space) "#\\space") ((char=? obj #\newline) "#\\newline") (else (string-append "#\\" (string obj))))) (len (string-length text))) (cont (+ col len) (+ objw len) (cons text texts) hole)))) (p-list (lambda (obj col objw texts hole cont) (p-tail obj (+ col 1) (+ objw 1) (cons "(" texts) hole cont))) (p-vector (lambda (obj col objw texts hole cont) (p-list (vector->list obj) (+ col 1) (+ objw 1) (cons "#" texts) hole cont))) (p-tail (lambda (obj col objw texts hole cont) (if (null? obj) (cont (+ col 1) (+ objw 1) (cons ")" texts) hole) (p-obj (car obj) col objw texts hole (make-cdr-cont obj cont))))) (make-cdr-cont (lambda (obj cont) (lambda (col objw texts hole) (cond ((null? (cdr obj)) (cont (+ col 1) (+ objw 1) (cons ")" texts) hole)) ((> col out-max-col) (step-line hole) (let ((hole2 (cons " " texts))) (p-cdr obj (+ start objw 1) 0 hole2 hole2 cont))) (else (let ((hole2 (cons " " texts))) (p-cdr obj (+ col 1) 0 hole2 hole2 cont))))))) (p-cdr (lambda (obj col objw texts hole cont) (if (pair? (cdr obj)) (p-tail (cdr obj) col objw texts hole cont) (p-dot col objw texts hole (make-cdr-cont (list #f (cdr obj)) cont))))) (p-dot (lambda (col objw texts hole cont) (cont (+ col 1) (+ objw 1) (cons "." texts) hole))) (p-obj (lambda (obj col objw texts hole cont) (cond ((boolean? obj) (p-bool obj col objw texts hole cont)) ((number? obj) (p-number obj col objw texts hole cont)) ((symbol? obj) (p-symbol obj col objw texts hole cont)) ((char? obj) (p-char obj col objw texts hole cont)) ((or (null? obj) (pair? obj)) (p-list obj col objw texts hole cont)) ((vector? obj) (p-vector obj col objw texts hole cont)))))) (p-obj obj start 0 '() (cons #f #f) (lambda (col objw texts hole) (if (> col out-max-col) (step-line hole)) (apply string-append (reverse texts))))))) ; ; Fonction pour afficher une table ; Appelle la sous-routine adequate pour le type de fin de table ; ; Affiche la table d'un driver (define out-print-table (lambda (args-alist <>-action <>-action rules nl-start no-nl-start arcs-v acc-v port) (let* ((filein (cdr (assq 'filein args-alist))) (table-name (cdr (assq 'table-name args-alist))) (pretty? (assq 'pp args-alist)) (counters-type (let ((a (assq 'counters args-alist))) (if a (cdr a) 'line))) (counters-param-list (cond ((eq? counters-type 'none) ")") ((eq? counters-type 'line) " yyline)") (else ; 'all " yyline yycolumn yyoffset)"))) (counters-param-list-short (if (char=? (string-ref counters-param-list 0) #\space) (substring counters-param-list 1 (string-length counters-param-list)) counters-param-list)) (clean-eof-action (out-clean-action <>-action)) (clean-error-action (out-clean-action <>-action)) (rule-op (lambda (rule) (out-clean-action (get-rule-action rule)))) (rules-l (vector->list rules)) (clean-actions-l (map rule-op rules-l)) (yytext?-l (map get-rule-yytext? rules-l))) ; Commentaires prealables (display ";" port) (newline port) (display "; Table generated from the file " port) (display filein port) (display " by SILex 1.0" port) (newline port) (display ";" port) (newline port) (newline port) ; Ecrire le debut de la table (display "(define " port) (display table-name port) (newline port) (display " (vector" port) (newline port) ; Ecrire la description du type de compteurs (display " '" port) (write counters-type port) (newline port) ; Ecrire l'action pour la fin de fichier (display " (lambda (yycontinue yygetc yyungetc)" port) (newline port) (display " (lambda (yytext" port) (display counters-param-list port) (newline port) (display clean-eof-action port) (display " ))" port) (newline port) ; Ecrire l'action pour le cas d'erreur (display " (lambda (yycontinue yygetc yyungetc)" port) (newline port) (display " (lambda (yytext" port) (display counters-param-list port) (newline port) (display clean-error-action port) (display " ))" port) (newline port) ; Ecrire le vecteur des actions des regles ordinaires (display " (vector" port) (newline port) (let loop ((al clean-actions-l) (yyl yytext?-l)) (if (pair? al) (let ((yytext? (car yyl))) (display " " port) (write yytext? port) (newline port) (display " (lambda (yycontinue yygetc yyungetc)" port) (newline port) (if yytext? (begin (display " (lambda (yytext" port) (display counters-param-list port)) (begin (display " (lambda (" port) (display counters-param-list-short port))) (newline port) (display (car al) port) (display " ))" port) (if (pair? (cdr al)) (newline port)) (loop (cdr al) (cdr yyl))))) (display ")" port) (newline port) ; Ecrire l'automate (cond ((assq 'portable args-alist) (out-print-table-chars pretty? nl-start no-nl-start arcs-v acc-v port)) ((assq 'code args-alist) (out-print-table-code counters-type (vector-length rules) yytext?-l nl-start no-nl-start arcs-v acc-v port)) (else (out-print-table-data pretty? nl-start no-nl-start arcs-v acc-v port)))))) ; ; Affiche l'automate sous forme d'arbres de decision ; Termine la table du meme coup ; (define out-print-table-data (lambda (pretty? nl-start no-nl-start arcs-v acc-v port) (let* ((len (vector-length arcs-v)) (trees-v (make-vector len))) (let loop ((i 0)) (if (< i len) (begin (vector-set! trees-v i (prep-arcs->tree (vector-ref arcs-v i))) (loop (+ i 1))))) ; Decrire le format de l'automate (display " 'decision-trees" port) (newline port) ; Ecrire l'etat de depart pour le cas "debut de la ligne" (display " " port) (write nl-start port) (newline port) ; Ecrire l'etat de depart pour le cas "pas au debut de la ligne" (display " " port) (write no-nl-start port) (newline port) ; Ecrire la table de transitions (display " '" port) (if pretty? (display (out-pp trees-v 5) port) (display (out-np trees-v 5) port)) (newline port) ; Ecrire la table des acceptations (display " '" port) (if pretty? (display (out-pp acc-v 5) port) (display (out-np acc-v 5) port)) ; Ecrire la fin de la table (display "))" port) (newline port)))) ; ; Affiche l'automate sous forme de listes de caracteres taggees ; Termine la table du meme coup ; (define out-print-table-chars (lambda (pretty? nl-start no-nl-start arcs-v acc-v port) (let* ((len (vector-length arcs-v)) (portable-v (make-vector len)) (arc-op (lambda (arc) (cons (class->tagged-char-list (car arc)) (cdr arc))))) (let loop ((s 0)) (if (< s len) (let* ((arcs (vector-ref arcs-v s)) (port-arcs (map arc-op arcs))) (vector-set! portable-v s port-arcs) (loop (+ s 1))))) ; Decrire le format de l'automate (display " 'tagged-chars-lists" port) (newline port) ; Ecrire l'etat de depart pour le cas "debut de la ligne" (display " " port) (write nl-start port) (newline port) ; Ecrire l'etat de depart pour le cas "pas au debut de la ligne" (display " " port) (write no-nl-start port) (newline port) ; Ecrire la table de transitions (display " '" port) (if pretty? (display (out-pp portable-v 5) port) (display (out-np portable-v 5) port)) (newline port) ; Ecrire la table des acceptations (display " '" port) (if pretty? (display (out-pp acc-v 5) port) (display (out-np acc-v 5) port)) ; Ecrire la fin de la table (display "))" port) (newline port)))) ; ; Genere l'automate en code Scheme ; Termine la table du meme coup ; (define out-print-code-trans3 (lambda (margin tree action-var port) (newline port) (display (out-blanks margin) port) (cond ((eq? tree 'err) (display action-var port)) ((number? tree) (display "(state-" port) (display tree port) (display " " port) (display action-var port) (display ")" port)) ((eq? (car tree) '=) (display "(if (= c " port) (display (list-ref tree 1) port) (display ")" port) (out-print-code-trans3 (+ margin 4) (list-ref tree 2) action-var port) (out-print-code-trans3 (+ margin 4) (list-ref tree 3) action-var port) (display ")" port)) (else (display "(if (< c " port) (display (list-ref tree 0) port) (display ")" port) (out-print-code-trans3 (+ margin 4) (list-ref tree 1) action-var port) (out-print-code-trans3 (+ margin 4) (list-ref tree 2) action-var port) (display ")" port))))) (define out-print-code-trans2 (lambda (margin tree action-var port) (newline port) (display (out-blanks margin) port) (display "(if c" port) (out-print-code-trans3 (+ margin 4) tree action-var port) (newline port) (display (out-blanks (+ margin 4)) port) (display action-var port) (display ")" port))) (define out-print-code-trans1 (lambda (margin tree action-var port) (newline port) (display (out-blanks margin) port) (if (eq? tree 'err) (display action-var port) (begin (display "(let ((c (read-char)))" port) (out-print-code-trans2 (+ margin 2) tree action-var port) (display ")" port))))) (define out-print-table-code (lambda (counters nbrules yytext?-l nl-start no-nl-start arcs-v acc-v port) (let* ((counters-params (cond ((eq? counters 'none) ")") ((eq? counters 'line) " yyline)") ((eq? counters 'all) " yyline yycolumn yyoffset)"))) (counters-params-short (cond ((eq? counters 'none) ")") ((eq? counters 'line) "yyline)") ((eq? counters 'all) "yyline yycolumn yyoffset)"))) (nbstates (vector-length arcs-v)) (trees-v (make-vector nbstates))) (let loop ((s 0)) (if (< s nbstates) (begin (vector-set! trees-v s (prep-arcs->tree (vector-ref arcs-v s))) (loop (+ s 1))))) ; Decrire le format de l'automate (display " 'code" port) (newline port) ; Ecrire l'entete de la fonction (display " (lambda (<>-pre-action" port) (newline port) (display " <>-pre-action" port) (newline port) (display " rules-pre-action" port) (newline port) (display " IS)" port) (newline port) ; Ecrire le debut du letrec et les variables d'actions brutes (display " (letrec" port) (newline port) (display " ((user-action-<> #f)" port) (newline port) (display " (user-action-<> #f)" port) (newline port) (let loop ((i 0)) (if (< i nbrules) (begin (display " (user-action-" port) (write i port) (display " #f)" port) (newline port) (loop (+ i 1))))) ; Ecrire l'extraction des fonctions du IS (display " (start-go-to-end " port) (display "(cdr (assq 'start-go-to-end IS)))" port) (newline port) (display " (end-go-to-point " port) (display "(cdr (assq 'end-go-to-point IS)))" port) (newline port) (display " (init-lexeme " port) (display "(cdr (assq 'init-lexeme IS)))" port) (newline port) (display " (get-start-line " port) (display "(cdr (assq 'get-start-line IS)))" port) (newline port) (display " (get-start-column " port) (display "(cdr (assq 'get-start-column IS)))" port) (newline port) (display " (get-start-offset " port) (display "(cdr (assq 'get-start-offset IS)))" port) (newline port) (display " (peek-left-context " port) (display "(cdr (assq 'peek-left-context IS)))" port) (newline port) (display " (peek-char " port) (display "(cdr (assq 'peek-char IS)))" port) (newline port) (display " (read-char " port) (display "(cdr (assq 'read-char IS)))" port) (newline port) (display " (get-start-end-text " port) (display "(cdr (assq 'get-start-end-text IS)))" port) (newline port) (display " (user-getc " port) (display "(cdr (assq 'user-getc IS)))" port) (newline port) (display " (user-ungetc " port) (display "(cdr (assq 'user-ungetc IS)))" port) (newline port) ; Ecrire les variables d'actions (display " (action-<>" port) (newline port) (display " (lambda (" port) (display counters-params-short port) (newline port) (display " (user-action-<> \"\"" port) (display counters-params port) (display "))" port) (newline port) (display " (action-<>" port) (newline port) (display " (lambda (" port) (display counters-params-short port) (newline port) (display " (user-action-<> \"\"" port) (display counters-params port) (display "))" port) (newline port) (let loop ((i 0) (yyl yytext?-l)) (if (< i nbrules) (begin (display " (action-" port) (display i port) (newline port) (display " (lambda (" port) (display counters-params-short port) (newline port) (if (car yyl) (begin (display " (let ((yytext" port) (display " (get-start-end-text)))" port) (newline port) (display " (start-go-to-end)" port) (newline port) (display " (user-action-" port) (display i port) (display " yytext" port) (display counters-params port) (display ")))" port) (newline port)) (begin (display " (start-go-to-end)" port) (newline port) (display " (user-action-" port) (display i port) (display counters-params port) (display "))" port) (newline port))) (loop (+ i 1) (cdr yyl))))) ; Ecrire les variables d'etats (let loop ((s 0)) (if (< s nbstates) (let* ((tree (vector-ref trees-v s)) (acc (vector-ref acc-v s)) (acc-eol (car acc)) (acc-no-eol (cdr acc))) (display " (state-" port) (display s port) (newline port) (display " (lambda (action)" port) (cond ((not acc-eol) (out-print-code-trans1 13 tree "action" port)) ((not acc-no-eol) (newline port) (if (eq? tree 'err) (display " (let* ((c (peek-char))" port) (display " (let* ((c (read-char))" port)) (newline port) (display " (new-action (if (o" port) (display "r (not c) (= c lexer-integer-newline))" port) (newline port) (display " " port) (display " (begin (end-go-to-point) action-" port) (display acc-eol port) (display ")" port) (newline port) (display " " port) (display " action)))" port) (if (eq? tree 'err) (out-print-code-trans1 15 tree "new-action" port) (out-print-code-trans2 15 tree "new-action" port)) (display ")" port)) ((< acc-eol acc-no-eol) (newline port) (display " (end-go-to-point)" port) (newline port) (if (eq? tree 'err) (display " (let* ((c (peek-char))" port) (display " (let* ((c (read-char))" port)) (newline port) (display " (new-action (if (o" port) (display "r (not c) (= c lexer-integer-newline))" port) (newline port) (display " " port) (display " action-" port) (display acc-eol port) (newline port) (display " " port) (display " action-" port) (display acc-no-eol port) (display ")))" port) (if (eq? tree 'err) (out-print-code-trans1 15 tree "new-action" port) (out-print-code-trans2 15 tree "new-action" port)) (display ")" port)) (else (let ((action-var (string-append "action-" (number->string acc-eol)))) (newline port) (display " (end-go-to-point)" port) (out-print-code-trans1 13 tree action-var port)))) (display "))" port) (newline port) (loop (+ s 1))))) ; Ecrire la variable de lancement de l'automate (display " (start-automaton" port) (newline port) (display " (lambda ()" port) (newline port) (if (= nl-start no-nl-start) (begin (display " (if (peek-char)" port) (newline port) (display " (state-" port) (display nl-start port) (display " action-<>)" port) (newline port) (display " action-<>)" port)) (begin (display " (cond ((not (peek-char))" port) (newline port) (display " action-<>)" port) (newline port) (display " ((= (peek-left-context)" port) (display " lexer-integer-newline)" port) (newline port) (display " (state-" port) (display nl-start port) (display " action-<>))" port) (newline port) (display " (else" port) (newline port) (display " (state-" port) (display no-nl-start port) (display " action-<>)))" port))) (display "))" port) (newline port) ; Ecrire la fonction principale de lexage (display " (final-lexer" port) (newline port) (display " (lambda ()" port) (newline port) (display " (init-lexeme)" port) (newline port) (cond ((eq? counters 'none) (display " ((start-automaton))" port)) ((eq? counters 'line) (display " (let ((yyline (get-start-line)))" port) (newline port) (display " ((start-automaton) yyline))" port)) ((eq? counters 'all) (display " (let ((yyline (get-start-line))" port) (newline port) (display " (yycolumn (get-start-column))" port) (newline port) (display " (yyoffset (get-start-offset)))" port) (newline port) (display " ((start-automat" port) (display "on) yyline yycolumn yyoffset))" port))) (display "))" port) ; Fermer les bindings du grand letrec (display ")" port) (newline port) ; Initialiser les variables user-action-XX (display " (set! user-action-<>" port) (display " (<>-pre-action" port) (newline port) (display " final-lexer" port) (display " user-getc user-ungetc))" port) (newline port) (display " (set! user-action-<>" port) (display " (<>-pre-action" port) (newline port) (display " final-lexer" port) (display " user-getc user-ungetc))" port) (newline port) (let loop ((r 0)) (if (< r nbrules) (let* ((str-r (number->string r)) (blanks (out-blanks (string-length str-r)))) (display " (set! user-action-" port) (display str-r port) (display " ((vector-ref rules-pre-action " port) (display (number->string (+ (* 2 r) 1)) port) (display ")" port) (newline port) (display blanks port) (display " final-lexer " port) (display "user-getc user-ungetc))" port) (newline port) (loop (+ r 1))))) ; Faire retourner le lexer final et fermer la table au complet (display " final-lexer))))" port) (newline port)))) ; ; Fonctions necessaires a l'initialisation automatique du lexer ; (define out-print-driver-functions (lambda (args-alist port) (let ((counters (cdr (or (assq 'counters args-alist) '(z . line)))) (table-name (cdr (assq 'table-name args-alist)))) (display ";" port) (newline port) (display "; User functions" port) (newline port) (display ";" port) (newline port) (newline port) (display "(define lexer #f)" port) (newline port) (newline port) (if (not (eq? counters 'none)) (begin (display "(define lexer-get-line #f)" port) (newline port) (if (eq? counters 'all) (begin (display "(define lexer-get-column #f)" port) (newline port) (display "(define lexer-get-offset #f)" port) (newline port))))) (display "(define lexer-getc #f)" port) (newline port) (display "(define lexer-ungetc #f)" port) (newline port) (newline port) (display "(define lexer-init" port) (newline port) (display " (lambda (input-type input)" port) (newline port) (display " (let ((IS (lexer-make-IS input-type input '" port) (write counters port) (display ")))" port) (newline port) (display " (set! lexer (lexer-make-lexer " port) (display table-name port) (display " IS))" port) (newline port) (if (not (eq? counters 'none)) (begin (display " (set! lexer-get-line (lexer-get-func-line IS))" port) (newline port) (if (eq? counters 'all) (begin (display " (set! lexer-get-column (lexer-get-func-column IS))" port) (newline port) (display " (set! lexer-get-offset (lexer-get-func-offset IS))" port) (newline port))))) (display " (set! lexer-getc (lexer-get-func-getc IS))" port) (newline port) (display " (set! lexer-ungetc (lexer-get-func-ungetc IS)))))" port) (newline port)))) ; ; Fonction principale ; Affiche une table ou un driver complet ; (define output (lambda (args-alist <>-action <>-action rules nl-start no-nl-start arcs acc) (let* ((fileout (cdr (assq 'fileout args-alist))) (port (open-output-file fileout)) (complete-driver? (cdr (assq 'complete-driver? args-alist)))) (if complete-driver? (begin (out-print-run-time-lib port) (newline port))) (out-print-table args-alist <>-action <>-action rules nl-start no-nl-start arcs acc port) (if complete-driver? (begin (newline port) (out-print-driver-functions args-alist port))) (close-output-port port)))) ; Module output2.scm. ; ; Fonction de copiage du fichier run-time ; (define out-print-run-time-lib (lambda (port) (display "; *** This file start" port) (display "s with a copy of the " port) (display "file multilex.scm ***" port) (newline port) (display "; SILex - Scheme Implementation of Lex ; Copyright (C) 2001 Danny Dube' ; ; This program is free software; you can redistribute it and/or ; modify it under the terms of the GNU General Public License ; as published by the Free Software Foundation; either version 2 ; of the License, or (at your option) any later version. ; ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with this program; if not, write to the Free Software ; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ; ; Gestion des Input Systems ; Fonctions a utiliser par l'usager: ; lexer-make-IS, lexer-get-func-getc, lexer-get-func-ungetc, ; lexer-get-func-line, lexer-get-func-column et lexer-get-func-offset ; ; Taille initiale par defaut du buffer d'entree (define lexer-init-buffer-len 1024) ; Numero du caractere newline (define lexer-integer-newline (char->integer #\\newline)) ; Constructeur d'IS brut (define lexer-raw-IS-maker (lambda (buffer read-ptr input-f counters) (let ((input-f input-f) ; Entree reelle (buffer buffer) ; Buffer (buflen (string-length buffer)) (read-ptr read-ptr) (start-ptr 1) ; Marque de debut de lexeme (start-line 1) (start-column 1) (start-offset 0) (end-ptr 1) ; Marque de fin de lexeme (point-ptr 1) ; Le point (user-ptr 1) ; Marque de l'usager (user-line 1) (user-column 1) (user-offset 0) (user-up-to-date? #t)) ; Concerne la colonne seul. (letrec ((start-go-to-end-none ; Fonctions de depl. des marques (lambda () (set! start-ptr end-ptr))) (start-go-to-end-line (lambda () (let loop ((ptr start-ptr) (line start-line)) (if (= ptr end-ptr) (begin (set! start-ptr ptr) (set! start-line line)) (if (char=? (string-ref buffer ptr) #\\newline) (loop (+ ptr 1) (+ line 1)) (loop (+ ptr 1) line)))))) (start-go-to-end-all (lambda () (set! start-offset (+ start-offset (- end-ptr start-ptr))) (let loop ((ptr start-ptr) (line start-line) (column start-column)) (if (= ptr end-ptr) (begin (set! start-ptr ptr) (set! start-line line) (set! start-column column)) (if (char=? (string-ref buffer ptr) #\\newline) (loop (+ ptr 1) (+ line 1) 1) (loop (+ ptr 1) line (+ column 1))))))) (start-go-to-user-none (lambda () (set! start-ptr user-ptr))) (start-go-to-user-line (lambda () (set! start-ptr user-ptr) (set! start-line user-line))) (start-go-to-user-all (lambda () (set! start-line user-line) (set! start-offset user-offset) (if user-up-to-date? (begin (set! start-ptr user-ptr) (set! start-column user-column)) (let loop ((ptr start-ptr) (column start-column)) (if (= ptr user-ptr) (begin (set! start-ptr ptr) (set! start-column column)) (if (char=? (string-ref buffer ptr) #\\newline) (loop (+ ptr 1) 1) (loop (+ ptr 1) (+ column 1)))))))) (end-go-to-point (lambda () (set! end-ptr point-ptr))) (point-go-to-start (lambda () (set! point-ptr start-ptr))) (user-go-to-start-none (lambda () (set! user-ptr start-ptr))) (user-go-to-start-line (lambda () (set! user-ptr start-ptr) (set! user-line start-line))) (user-go-to-start-all (lambda () (set! user-ptr start-ptr) (set! user-line start-line) (set! user-column start-column) (set! user-offset start-offset) (set! user-up-to-date? #t))) (init-lexeme-none ; Debute un nouveau lexeme (lambda () (if (< start-ptr user-ptr) (start-go-to-user-none)) (point-go-to-start))) (init-lexeme-line (lambda () (if (< start-ptr user-ptr) (start-go-to-user-line)) (point-go-to-start))) (init-lexeme-all (lambda () (if (< start-ptr user-ptr) (start-go-to-user-all)) (point-go-to-start))) (get-start-line ; Obtention des stats du debut du lxm (lambda () start-line)) (get-start-column (lambda () start-column)) (get-start-offset (lambda () start-offset)) (peek-left-context ; Obtention de caracteres (#f si EOF) (lambda () (char->integer (string-ref buffer (- start-ptr 1))))) (peek-char (lambda () (if (< point-ptr read-ptr) (char->integer (string-ref buffer point-ptr)) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer point-ptr c) (set! read-ptr (+ point-ptr 1)) (char->integer c)) (begin (set! input-f (lambda () 'eof)) #f)))))) (read-char (lambda () (if (< point-ptr read-ptr) (let ((c (string-ref buffer point-ptr))) (set! point-ptr (+ point-ptr 1)) (char->integer c)) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer point-ptr c) (set! read-ptr (+ point-ptr 1)) (set! point-ptr read-ptr) (char->integer c)) (begin (set! input-f (lambda () 'eof)) #f)))))) (get-start-end-text ; Obtention du lexeme (lambda () (substring buffer start-ptr end-ptr))) (get-user-line-line ; Fonctions pour l'usager (lambda () (if (< user-ptr start-ptr) (user-go-to-start-line)) user-line)) (get-user-line-all (lambda () (if (< user-ptr start-ptr) (user-go-to-start-all)) user-line)) (get-user-column-all (lambda () (cond ((< user-ptr start-ptr) (user-go-to-start-all) user-column) (user-up-to-date? user-column) (else (let loop ((ptr start-ptr) (column start-column)) (if (= ptr user-ptr) (begin (set! user-column column) (set! user-up-to-date? #t) column) (if (char=? (string-ref buffer ptr) #\\newline) (loop (+ ptr 1) 1) (loop (+ ptr 1) (+ column 1))))))))) (get-user-offset-all (lambda () (if (< user-ptr start-ptr) (user-go-to-start-all)) user-offset)) (user-getc-none (lambda () (if (< user-ptr start-ptr) (user-go-to-start-none)) (if (< user-ptr read-ptr) (let ((c (string-ref buffer user-ptr))) (set! user-ptr (+ user-ptr 1)) c) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer user-ptr c) (set! read-ptr (+ read-ptr 1)) (set! user-ptr read-ptr) c) (begin (set! input-f (lambda () 'eof)) 'eof)))))) (user-getc-line (lambda () (if (< user-ptr start-ptr) (user-go-to-start-line)) (if (< user-ptr read-ptr) (let ((c (string-ref buffer user-ptr))) (set! user-ptr (+ user-ptr 1)) (if (char=? c #\\newline) (set! user-line (+ user-line 1))) c) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer user-ptr c) (set! read-ptr (+ read-ptr 1)) (set! user-ptr read-ptr) (if (char=? c #\\newline) (set! user-line (+ user-line 1))) c) (begin (set! input-f (lambda () 'eof)) 'eof)))))) (user-getc-all (lambda () (if (< user-ptr start-ptr) (user-go-to-start-all)) (if (< user-ptr read-ptr) (let ((c (string-ref buffer user-ptr))) (set! user-ptr (+ user-ptr 1)) (if (char=? c #\\newline) (begin (set! user-line (+ user-line 1)) (set! user-column 1)) (set! user-column (+ user-column 1))) (set! user-offset (+ user-offset 1)) c) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer user-ptr c) (set! read-ptr (+ read-ptr 1)) (set! user-ptr read-ptr) (if (char=? c #\\newline) (begin (set! user-line (+ user-line 1)) (set! user-column 1)) (set! user-column (+ user-column 1))) (set! user-offset (+ user-offset 1)) c) (begin (set! input-f (lambda () 'eof)) 'eof)))))) (user-ungetc-none (lambda () (if (> user-ptr start-ptr) (set! user-ptr (- user-ptr 1))))) (user-ungetc-line (lambda () (if (> user-ptr start-ptr) (begin (set! user-ptr (- user-ptr 1)) (let ((c (string-ref buffer user-ptr))) (if (char=? c #\\newline) (set! user-line (- user-line 1)))))))) (user-ungetc-all (lambda () (if (> user-ptr start-ptr) (begin (set! user-ptr (- user-ptr 1)) (let ((c (string-ref buffer user-ptr))) (if (char=? c #\\newline) (begin (set! user-line (- user-line 1)) (set! user-up-to-date? #f)) (set! user-column (- user-column 1))) (set! user-offset (- user-offset 1))))))) (reorganize-buffer ; Decaler ou agrandir le buffer (lambda () (if (< (* 2 start-ptr) buflen) (let* ((newlen (* 2 buflen)) (newbuf (make-string newlen)) (delta (- start-ptr 1))) (let loop ((from (- start-ptr 1))) (if (< from buflen) (begin (string-set! newbuf (- from delta) (string-ref buffer from)) (loop (+ from 1))))) (set! buffer newbuf) (set! buflen newlen) (set! read-ptr (- read-ptr delta)) (set! start-ptr (- start-ptr delta)) (set! end-ptr (- end-ptr delta)) (set! point-ptr (- point-ptr delta)) (set! user-ptr (- user-ptr delta))) (let ((delta (- start-ptr 1))) (let loop ((from (- start-ptr 1))) (if (< from buflen) (begin (string-set! buffer (- from delta) (string-ref buffer from)) (loop (+ from 1))))) (set! read-ptr (- read-ptr delta)) (set! start-ptr (- start-ptr delta)) (set! end-ptr (- end-ptr delta)) (set! point-ptr (- point-ptr delta)) (set! user-ptr (- user-ptr delta))))))) (list (cons 'start-go-to-end (cond ((eq? counters 'none) start-go-to-end-none) ((eq? counters 'line) start-go-to-end-line) ((eq? counters 'all ) start-go-to-end-all))) (cons 'end-go-to-point end-go-to-point) (cons 'init-lexeme (cond ((eq? counters 'none) init-lexeme-none) ((eq? counters 'line) init-lexeme-line) ((eq? counters 'all ) init-lexeme-all))) (cons 'get-start-line get-start-line) (cons 'get-start-column get-start-column) (cons 'get-start-offset get-start-offset) (cons 'peek-left-context peek-left-context) (cons 'peek-char peek-char) (cons 'read-char read-char) (cons 'get-start-end-text get-start-end-text) (cons 'get-user-line (cond ((eq? counters 'none) #f) ((eq? counters 'line) get-user-line-line) ((eq? counters 'all ) get-user-line-all))) (cons 'get-user-column (cond ((eq? counters 'none) #f) ((eq? counters 'line) #f) ((eq? counters 'all ) get-user-column-all))) (cons 'get-user-offset (cond ((eq? counters 'none) #f) ((eq? counters 'line) #f) ((eq? counters 'all ) get-user-offset-all))) (cons 'user-getc (cond ((eq? counters 'none) user-getc-none) ((eq? counters 'line) user-getc-line) ((eq? counters 'all ) user-getc-all))) (cons 'user-ungetc (cond ((eq? counters 'none) user-ungetc-none) ((eq? counters 'line) user-ungetc-line) ((eq? counters 'all ) user-ungetc-all)))))))) ; Construit un Input System ; Le premier parametre doit etre parmi \"port\", \"procedure\" ou \"string\" ; Prend un parametre facultatif qui doit etre parmi ; \"none\", \"line\" ou \"all\" (define lexer-make-IS (lambda (input-type input . largs) (let ((counters-type (cond ((null? largs) 'line) ((memq (car largs) '(none line all)) (car largs)) (else 'line)))) (cond ((and (eq? input-type 'port) (input-port? input)) (let* ((buffer (make-string lexer-init-buffer-len #\\newline)) (read-ptr 1) (input-f (lambda () (read-char input)))) (lexer-raw-IS-maker buffer read-ptr input-f counters-type))) ((and (eq? input-type 'procedure) (procedure? input)) (let* ((buffer (make-string lexer-init-buffer-len #\\newline)) (read-ptr 1) (input-f input)) (lexer-raw-IS-maker buffer read-ptr input-f counters-type))) ((and (eq? input-type 'string) (string? input)) (let* ((buffer (string-append (string #\\newline) input)) (read-ptr (string-length buffer)) (input-f (lambda () 'eof))) (lexer-raw-IS-maker buffer read-ptr input-f counters-type))) (else (let* ((buffer (string #\\newline)) (read-ptr 1) (input-f (lambda () 'eof))) (lexer-raw-IS-maker buffer read-ptr input-f counters-type))))))) ; Les fonctions: ; lexer-get-func-getc, lexer-get-func-ungetc, ; lexer-get-func-line, lexer-get-func-column et lexer-get-func-offset (define lexer-get-func-getc (lambda (IS) (cdr (assq 'user-getc IS)))) (define lexer-get-func-ungetc (lambda (IS) (cdr (assq 'user-ungetc IS)))) (define lexer-get-func-line (lambda (IS) (cdr (assq 'get-user-line IS)))) (define lexer-get-func-column (lambda (IS) (cdr (assq 'get-user-column IS)))) (define lexer-get-func-offset (lambda (IS) (cdr (assq 'get-user-offset IS)))) ; ; Gestion des lexers ; ; Fabrication de lexer a partir d'arbres de decision (define lexer-make-tree-lexer (lambda (tables IS) (letrec (; Contenu de la table (counters-type (vector-ref tables 0)) (<>-pre-action (vector-ref tables 1)) (<>-pre-action (vector-ref tables 2)) (rules-pre-actions (vector-ref tables 3)) (table-nl-start (vector-ref tables 5)) (table-no-nl-start (vector-ref tables 6)) (trees-v (vector-ref tables 7)) (acc-v (vector-ref tables 8)) ; Contenu du IS (IS-start-go-to-end (cdr (assq 'start-go-to-end IS))) (IS-end-go-to-point (cdr (assq 'end-go-to-point IS))) (IS-init-lexeme (cdr (assq 'init-lexeme IS))) (IS-get-start-line (cdr (assq 'get-start-line IS))) (IS-get-start-column (cdr (assq 'get-start-column IS))) (IS-get-start-offset (cdr (assq 'get-start-offset IS))) (IS-peek-left-context (cdr (assq 'peek-left-context IS))) (IS-peek-char (cdr (assq 'peek-char IS))) (IS-read-char (cdr (assq 'read-char IS))) (IS-get-start-end-text (cdr (assq 'get-start-end-text IS))) (IS-get-user-line (cdr (assq 'get-user-line IS))) (IS-get-user-column (cdr (assq 'get-user-column IS))) (IS-get-user-offset (cdr (assq 'get-user-offset IS))) (IS-user-getc (cdr (assq 'user-getc IS))) (IS-user-ungetc (cdr (assq 'user-ungetc IS))) ; Resultats (<>-action #f) (<>-action #f) (rules-actions #f) (states #f) (final-lexer #f) ; Gestion des hooks (hook-list '()) (add-hook (lambda (thunk) (set! hook-list (cons thunk hook-list)))) (apply-hooks (lambda () (let loop ((l hook-list)) (if (pair? l) (begin ((car l)) (loop (cdr l))))))) ; Preparation des actions (set-action-statics (lambda (pre-action) (pre-action final-lexer IS-user-getc IS-user-ungetc))) (prepare-special-action-none (lambda (pre-action) (let ((action #f)) (let ((result (lambda () (action \"\"))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-special-action-line (lambda (pre-action) (let ((action #f)) (let ((result (lambda (yyline) (action \"\" yyline))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-special-action-all (lambda (pre-action) (let ((action #f)) (let ((result (lambda (yyline yycolumn yyoffset) (action \"\" yyline yycolumn yyoffset))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-special-action (lambda (pre-action) (cond ((eq? counters-type 'none) (prepare-special-action-none pre-action)) ((eq? counters-type 'line) (prepare-special-action-line pre-action)) ((eq? counters-type 'all) (prepare-special-action-all pre-action))))) (prepare-action-yytext-none (lambda (pre-action) (let ((get-start-end-text IS-get-start-end-text) (start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda () (let ((yytext (get-start-end-text))) (start-go-to-end) (action yytext)))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-yytext-line (lambda (pre-action) (let ((get-start-end-text IS-get-start-end-text) (start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda (yyline) (let ((yytext (get-start-end-text))) (start-go-to-end) (action yytext yyline)))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-yytext-all (lambda (pre-action) (let ((get-start-end-text IS-get-start-end-text) (start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda (yyline yycolumn yyoffset) (let ((yytext (get-start-end-text))) (start-go-to-end) (action yytext yyline yycolumn yyoffset)))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-yytext (lambda (pre-action) (cond ((eq? counters-type 'none) (prepare-action-yytext-none pre-action)) ((eq? counters-type 'line) (prepare-action-yytext-line pre-action)) ((eq? counters-type 'all) (prepare-action-yytext-all pre-action))))) (prepare-action-no-yytext-none (lambda (pre-action) (let ((start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda () (start-go-to-end) (action))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-no-yytext-line (lambda (pre-action) (let ((start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda (yyline) (start-go-to-end) (action yyline))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-no-yytext-all (lambda (pre-action) (let ((start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda (yyline yycolumn yyoffset) (start-go-to-end) (action yyline yycolumn yyoffset))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-no-yytext (lambda (pre-action) (cond ((eq? counters-type 'none) (prepare-action-no-yytext-none pre-action)) ((eq? counters-type 'line) (prepare-action-no-yytext-line pre-action)) ((eq? counters-type 'all) (prepare-action-no-yytext-all pre-action))))) ; Fabrique les fonctions de dispatch (prepare-dispatch-err (lambda (leaf) (lambda (c) #f))) (prepare-dispatch-number (lambda (leaf) (let ((state-function #f)) (let ((result (lambda (c) state-function)) (hook (lambda () (set! state-function (vector-ref states leaf))))) (add-hook hook) result)))) (prepare-dispatch-leaf (lambda (leaf) (if (eq? leaf 'err) (prepare-dispatch-err leaf) (prepare-dispatch-number leaf)))) (prepare-dispatch-< (lambda (tree) (let ((left-tree (list-ref tree 1)) (right-tree (list-ref tree 2))) (let ((bound (list-ref tree 0)) (left-func (prepare-dispatch-tree left-tree)) (right-func (prepare-dispatch-tree right-tree))) (lambda (c) (if (< c bound) (left-func c) (right-func c))))))) (prepare-dispatch-= (lambda (tree) (let ((left-tree (list-ref tree 2)) (right-tree (list-ref tree 3))) (let ((bound (list-ref tree 1)) (left-func (prepare-dispatch-tree left-tree)) (right-func (prepare-dispatch-tree right-tree))) (lambda (c) (if (= c bound) (left-func c) (right-func c))))))) (prepare-dispatch-tree (lambda (tree) (cond ((not (pair? tree)) (prepare-dispatch-leaf tree)) ((eq? (car tree) '=) (prepare-dispatch-= tree)) (else (prepare-dispatch-< tree))))) (prepare-dispatch (lambda (tree) (let ((dicho-func (prepare-dispatch-tree tree))) (lambda (c) (and c (dicho-func c)))))) ; Fabrique les fonctions de transition (read & go) et (abort) (prepare-read-n-go (lambda (tree) (let ((dispatch-func (prepare-dispatch tree)) (read-char IS-read-char)) (lambda () (dispatch-func (read-char)))))) (prepare-abort (lambda (tree) (lambda () #f))) (prepare-transition (lambda (tree) (if (eq? tree 'err) (prepare-abort tree) (prepare-read-n-go tree)))) ; Fabrique les fonctions d'etats ([set-end] & trans) (prepare-state-no-acc (lambda (s r1 r2) (let ((trans-func (prepare-transition (vector-ref trees-v s)))) (lambda (action) (let ((next-state (trans-func))) (if next-state (next-state action) action)))))) (prepare-state-yes-no (lambda (s r1 r2) (let ((peek-char IS-peek-char) (end-go-to-point IS-end-go-to-point) (new-action1 #f) (trans-func (prepare-transition (vector-ref trees-v s)))) (let ((result (lambda (action) (let* ((c (peek-char)) (new-action (if (or (not c) (= c lexer-integer-newline)) (begin (end-go-to-point) new-action1) action)) (next-state (trans-func))) (if next-state (next-state new-action) new-action)))) (hook (lambda () (set! new-action1 (vector-ref rules-actions r1))))) (add-hook hook) result)))) (prepare-state-diff-acc (lambda (s r1 r2) (let ((end-go-to-point IS-end-go-to-point) (peek-char IS-peek-char) (new-action1 #f) (new-action2 #f) (trans-func (prepare-transition (vector-ref trees-v s)))) (let ((result (lambda (action) (end-go-to-point) (let* ((c (peek-char)) (new-action (if (or (not c) (= c lexer-integer-newline)) new-action1 new-action2)) (next-state (trans-func))) (if next-state (next-state new-action) new-action)))) (hook (lambda () (set! new-action1 (vector-ref rules-actions r1)) (set! new-action2 (vector-ref rules-actions r2))))) (add-hook hook) result)))) (prepare-state-same-acc (lambda (s r1 r2) (let ((end-go-to-point IS-end-go-to-point) (trans-func (prepare-transition (vector-ref trees-v s))) (new-action #f)) (let ((result (lambda (action) (end-go-to-point) (let ((next-state (trans-func))) (if next-state (next-state new-action) new-action)))) (hook (lambda () (set! new-action (vector-ref rules-actions r1))))) (add-hook hook) result)))) (prepare-state (lambda (s) (let* ((acc (vector-ref acc-v s)) (r1 (car acc)) (r2 (cdr acc))) (cond ((not r1) (prepare-state-no-acc s r1 r2)) ((not r2) (prepare-state-yes-no s r1 r2)) ((< r1 r2) (prepare-state-diff-acc s r1 r2)) (else (prepare-state-same-acc s r1 r2)))))) ; Fabrique la fonction de lancement du lexage a l'etat de depart (prepare-start-same (lambda (s1 s2) (let ((peek-char IS-peek-char) (eof-action #f) (start-state #f) (error-action #f)) (let ((result (lambda () (if (not (peek-char)) eof-action (start-state error-action)))) (hook (lambda () (set! eof-action <>-action) (set! start-state (vector-ref states s1)) (set! error-action <>-action)))) (add-hook hook) result)))) (prepare-start-diff (lambda (s1 s2) (let ((peek-char IS-peek-char) (eof-action #f) (peek-left-context IS-peek-left-context) (start-state1 #f) (start-state2 #f) (error-action #f)) (let ((result (lambda () (cond ((not (peek-char)) eof-action) ((= (peek-left-context) lexer-integer-newline) (start-state1 error-action)) (else (start-state2 error-action))))) (hook (lambda () (set! eof-action <>-action) (set! start-state1 (vector-ref states s1)) (set! start-state2 (vector-ref states s2)) (set! error-action <>-action)))) (add-hook hook) result)))) (prepare-start (lambda () (let ((s1 table-nl-start) (s2 table-no-nl-start)) (if (= s1 s2) (prepare-start-same s1 s2) (prepare-start-diff s1 s2))))) ; Fabrique la fonction principale (prepare-lexer-none (lambda () (let ((init-lexeme IS-init-lexeme) (start-func (prepare-start))) (lambda () (init-lexeme) ((start-func)))))) (prepare-lexer-line (lambda () (let ((init-lexeme IS-init-lexeme) (get-start-line IS-get-start-line) (start-func (prepare-start))) (lambda () (init-lexeme) (let ((yyline (get-start-line))) ((start-func) yyline)))))) (prepare-lexer-all (lambda () (let ((init-lexeme IS-init-lexeme) (get-start-line IS-get-start-line) (get-start-column IS-get-start-column) (get-start-offset IS-get-start-offset) (start-func (prepare-start))) (lambda () (init-lexeme) (let ((yyline (get-start-line)) (yycolumn (get-start-column)) (yyoffset (get-start-offset))) ((start-func) yyline yycolumn yyoffset)))))) (prepare-lexer (lambda () (cond ((eq? counters-type 'none) (prepare-lexer-none)) ((eq? counters-type 'line) (prepare-lexer-line)) ((eq? counters-type 'all) (prepare-lexer-all)))))) ; Calculer la valeur de <>-action et de <>-action (set! <>-action (prepare-special-action <>-pre-action)) (set! <>-action (prepare-special-action <>-pre-action)) ; Calculer la valeur de rules-actions (let* ((len (quotient (vector-length rules-pre-actions) 2)) (v (make-vector len))) (let loop ((r (- len 1))) (if (< r 0) (set! rules-actions v) (let* ((yytext? (vector-ref rules-pre-actions (* 2 r))) (pre-action (vector-ref rules-pre-actions (+ (* 2 r) 1))) (action (if yytext? (prepare-action-yytext pre-action) (prepare-action-no-yytext pre-action)))) (vector-set! v r action) (loop (- r 1)))))) ; Calculer la valeur de states (let* ((len (vector-length trees-v)) (v (make-vector len))) (let loop ((s (- len 1))) (if (< s 0) (set! states v) (begin (vector-set! v s (prepare-state s)) (loop (- s 1)))))) ; Calculer la valeur de final-lexer (set! final-lexer (prepare-lexer)) ; Executer les hooks (apply-hooks) ; Resultat final-lexer))) ; Fabrication de lexer a partir de listes de caracteres taggees (define lexer-make-char-lexer (let* ((char->class (lambda (c) (let ((n (char->integer c))) (list (cons n n))))) (merge-sort (lambda (l combine zero-elt) (if (null? l) zero-elt (let loop1 ((l l)) (if (null? (cdr l)) (car l) (loop1 (let loop2 ((l l)) (cond ((null? l) l) ((null? (cdr l)) l) (else (cons (combine (car l) (cadr l)) (loop2 (cddr l)))))))))))) (finite-class-union (lambda (c1 c2) (let loop ((c1 c1) (c2 c2) (u '())) (if (null? c1) (if (null? c2) (reverse u) (loop c1 (cdr c2) (cons (car c2) u))) (if (null? c2) (loop (cdr c1) c2 (cons (car c1) u)) (let* ((r1 (car c1)) (r2 (car c2)) (r1start (car r1)) (r1end (cdr r1)) (r2start (car r2)) (r2end (cdr r2))) (if (<= r1start r2start) (cond ((< (+ r1end 1) r2start) (loop (cdr c1) c2 (cons r1 u))) ((<= r1end r2end) (loop (cdr c1) (cons (cons r1start r2end) (cdr c2)) u)) (else (loop c1 (cdr c2) u))) (cond ((> r1start (+ r2end 1)) (loop c1 (cdr c2) (cons r2 u))) ((>= r1end r2end) (loop (cons (cons r2start r1end) (cdr c1)) (cdr c2) u)) (else (loop (cdr c1) c2 u)))))))))) (char-list->class (lambda (cl) (let ((classes (map char->class cl))) (merge-sort classes finite-class-union '())))) (class-< (lambda (b1 b2) (cond ((eq? b1 'inf+) #f) ((eq? b2 'inf-) #f) ((eq? b1 'inf-) #t) ((eq? b2 'inf+) #t) (else (< b1 b2))))) (finite-class-compl (lambda (c) (let loop ((c c) (start 'inf-)) (if (null? c) (list (cons start 'inf+)) (let* ((r (car c)) (rstart (car r)) (rend (cdr r))) (if (class-< start rstart) (cons (cons start (- rstart 1)) (loop c rstart)) (loop (cdr c) (+ rend 1)))))))) (tagged-chars->class (lambda (tcl) (let* ((inverse? (car tcl)) (cl (cdr tcl)) (class-tmp (char-list->class cl))) (if inverse? (finite-class-compl class-tmp) class-tmp)))) (charc->arc (lambda (charc) (let* ((tcl (car charc)) (dest (cdr charc)) (class (tagged-chars->class tcl))) (cons class dest)))) (arc->sharcs (lambda (arc) (let* ((range-l (car arc)) (dest (cdr arc)) (op (lambda (range) (cons range dest)))) (map op range-l)))) (class-<= (lambda (b1 b2) (cond ((eq? b1 'inf-) #t) ((eq? b2 'inf+) #t) ((eq? b1 'inf+) #f) ((eq? b2 'inf-) #f) (else (<= b1 b2))))) (sharc-<= (lambda (sharc1 sharc2) (class-<= (caar sharc1) (caar sharc2)))) (merge-sharcs (lambda (l1 l2) (let loop ((l1 l1) (l2 l2)) (cond ((null? l1) l2) ((null? l2) l1) (else (let ((sharc1 (car l1)) (sharc2 (car l2))) (if (sharc-<= sharc1 sharc2) (cons sharc1 (loop (cdr l1) l2)) (cons sharc2 (loop l1 (cdr l2)))))))))) (class-= eqv?) (fill-error (lambda (sharcs) (let loop ((sharcs sharcs) (start 'inf-)) (cond ((class-= start 'inf+) '()) ((null? sharcs) (cons (cons (cons start 'inf+) 'err) (loop sharcs 'inf+))) (else (let* ((sharc (car sharcs)) (h (caar sharc)) (t (cdar sharc))) (if (class-< start h) (cons (cons (cons start (- h 1)) 'err) (loop sharcs h)) (cons sharc (loop (cdr sharcs) (if (class-= t 'inf+) 'inf+ (+ t 1))))))))))) (charcs->tree (lambda (charcs) (let* ((op (lambda (charc) (arc->sharcs (charc->arc charc)))) (sharcs-l (map op charcs)) (sorted-sharcs (merge-sort sharcs-l merge-sharcs '())) (full-sharcs (fill-error sorted-sharcs)) (op (lambda (sharc) (cons (caar sharc) (cdr sharc)))) (table (list->vector (map op full-sharcs)))) (let loop ((left 0) (right (- (vector-length table) 1))) (if (= left right) (cdr (vector-ref table left)) (let ((mid (quotient (+ left right 1) 2))) (if (and (= (+ left 2) right) (= (+ (car (vector-ref table mid)) 1) (car (vector-ref table right))) (eqv? (cdr (vector-ref table left)) (cdr (vector-ref table right)))) (list '= (car (vector-ref table mid)) (cdr (vector-ref table mid)) (cdr (vector-ref table left))) (list (car (vector-ref table mid)) (loop left (- mid 1)) (loop mid right)))))))))) (lambda (tables IS) (let ((counters (vector-ref tables 0)) (<>-action (vector-ref tables 1)) (<>-action (vector-ref tables 2)) (rules-actions (vector-ref tables 3)) (nl-start (vector-ref tables 5)) (no-nl-start (vector-ref tables 6)) (charcs-v (vector-ref tables 7)) (acc-v (vector-ref tables 8))) (let* ((len (vector-length charcs-v)) (v (make-vector len))) (let loop ((i (- len 1))) (if (>= i 0) (begin (vector-set! v i (charcs->tree (vector-ref charcs-v i))) (loop (- i 1))) (lexer-make-tree-lexer (vector counters <>-action <>-action rules-actions 'decision-trees nl-start no-nl-start v acc-v) IS)))))))) ; Fabrication d'un lexer a partir de code pre-genere (define lexer-make-code-lexer (lambda (tables IS) (let ((<>-pre-action (vector-ref tables 1)) (<>-pre-action (vector-ref tables 2)) (rules-pre-action (vector-ref tables 3)) (code (vector-ref tables 5))) (code <>-pre-action <>-pre-action rules-pre-action IS)))) (define lexer-make-lexer (lambda (tables IS) (let ((automaton-type (vector-ref tables 4))) (cond ((eq? automaton-type 'decision-trees) (lexer-make-tree-lexer tables IS)) ((eq? automaton-type 'tagged-chars-lists) (lexer-make-char-lexer tables IS)) ((eq? automaton-type 'code) (lexer-make-code-lexer tables IS)))))) " port))) ; Module main.scm. ; ; Gestion d'erreurs ; (define lex-exit-continuation #f) (define lex-unwind-protect-list '()) (define lex-error-filename #f) (define lex-unwind-protect (lambda (proc) (set! lex-unwind-protect-list (cons proc lex-unwind-protect-list)))) (define lex-error (lambda (line column . l) (let* ((linestr (if line (number->string line) #f)) (colstr (if column (number->string column) #f)) (namelen (string-length lex-error-filename)) (linelen (if line (string-length linestr) -1)) (collen (if column (string-length colstr) -1)) (totallen (+ namelen 1 linelen 1 collen 2))) (display "Lex error:") (newline) (display lex-error-filename) (if line (begin (display ":") (display linestr))) (if column (begin (display ":") (display colstr))) (display ": ") (let loop ((l l)) (if (null? l) (newline) (let ((item (car l))) (display item) (if (equal? '#\newline item) (let loop2 ((i totallen)) (if (> i 0) (begin (display #\space) (loop2 (- i 1)))))) (loop (cdr l))))) (newline) (let loop ((l lex-unwind-protect-list)) (if (pair? l) (begin ((car l)) (loop (cdr l))))) (lex-exit-continuation #f)))) ; ; Decoupage des arguments ; (define lex-recognized-args '(complete-driver? filein table-name fileout counters portable code pp)) (define lex-valued-args '(complete-driver? filein table-name fileout counters)) (define lex-parse-args (lambda (args) (let loop ((args args)) (if (null? args) '() (let ((sym (car args))) (cond ((not (symbol? sym)) (lex-error #f #f "bad option list.")) ((not (memq sym lex-recognized-args)) (lex-error #f #f "unrecognized option \"" sym "\".")) ((not (memq sym lex-valued-args)) (cons (cons sym '()) (loop (cdr args)))) ((null? (cdr args)) (lex-error #f #f "the value of \"" sym "\" not specified.")) (else (cons (cons sym (cadr args)) (loop (cddr args)))))))))) ; ; Differentes etapes de la fabrication de l'automate ; (define lex1 (lambda (filein) ; (display "lex1: ") (write (get-internal-run-time)) (newline) (parser filein))) (define lex2 (lambda (filein) (let* ((result (lex1 filein)) (<>-action (car result)) (<>-action (cadr result)) (rules (cddr result))) ; (display "lex2: ") (write (get-internal-run-time)) (newline) (append (list <>-action <>-action rules) (re2nfa rules))))) (define lex3 (lambda (filein) (let* ((result (lex2 filein)) (<>-action (list-ref result 0)) (<>-action (list-ref result 1)) (rules (list-ref result 2)) (nl-start (list-ref result 3)) (no-nl-start (list-ref result 4)) (arcs (list-ref result 5)) (acc (list-ref result 6))) ; (display "lex3: ") (write (get-internal-run-time)) (newline) (append (list <>-action <>-action rules) (noeps nl-start no-nl-start arcs acc))))) (define lex4 (lambda (filein) (let* ((result (lex3 filein)) (<>-action (list-ref result 0)) (<>-action (list-ref result 1)) (rules (list-ref result 2)) (nl-start (list-ref result 3)) (no-nl-start (list-ref result 4)) (arcs (list-ref result 5)) (acc (list-ref result 6))) ; (display "lex4: ") (write (get-internal-run-time)) (newline) (append (list <>-action <>-action rules) (sweep nl-start no-nl-start arcs acc))))) (define lex5 (lambda (filein) (let* ((result (lex4 filein)) (<>-action (list-ref result 0)) (<>-action (list-ref result 1)) (rules (list-ref result 2)) (nl-start (list-ref result 3)) (no-nl-start (list-ref result 4)) (arcs (list-ref result 5)) (acc (list-ref result 6))) ; (display "lex5: ") (write (get-internal-run-time)) (newline) (append (list <>-action <>-action rules) (nfa2dfa nl-start no-nl-start arcs acc))))) (define lex6 (lambda (args-alist) (let* ((filein (cdr (assq 'filein args-alist))) (result (lex5 filein)) (<>-action (list-ref result 0)) (<>-action (list-ref result 1)) (rules (list-ref result 2)) (nl-start (list-ref result 3)) (no-nl-start (list-ref result 4)) (arcs (list-ref result 5)) (acc (list-ref result 6))) ; (display "lex6: ") (write (get-internal-run-time)) (newline) (prep-set-rules-yytext? rules) (output args-alist <>-action <>-action rules nl-start no-nl-start arcs acc) #t))) (define lex7 (lambda (args) (call-with-current-continuation (lambda (exit) (set! lex-exit-continuation exit) (set! lex-unwind-protect-list '()) (set! lex-error-filename (cadr (memq 'filein args))) (let* ((args-alist (lex-parse-args args)) (result (lex6 args-alist))) ; (display "lex7: ") (write (get-internal-run-time)) (newline) result))))) ; ; Fonctions principales ; (define lex (lambda (filein fileout . options) (lex7 (append (list 'complete-driver? #t 'filein filein 'table-name "lexer-default-table" 'fileout fileout) options)))) (define lex-tables (lambda (filein table-name fileout . options) (lex7 (append (list 'complete-driver? #f 'filein filein 'table-name table-name 'fileout fileout) options)))) denemo-2.2.0/actions/PaxHeaders.19168/graphics0000644000000000000000000000013213135434035015713 xustar0030 mtime=1500919837.946648472 30 atime=1500919914.539981806 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/0000755000175000017500000000000013135434035017641 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/graphics/PaxHeaders.19168/bemolTremblement.eps0000644000000000000000000000013213135434035021776 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.219981805 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/bemolTremblement.eps0000644000175000017500000000735013135434035023654 0ustar00jjbenhamjjbenham00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.12.2 (http://cairographics.org) %%CreationDate: Tue Aug 5 14:14:15 2014 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 0 -1 25 25 %%EndComments %%BeginProlog save 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /pdfmark where { pop globaldict /?pdfmark /exec load put } { globaldict begin /?pdfmark /pop load def /pdfmark /cleartomark load def end } ifelse /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def %%EndProlog %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 0 -1 25 25 %%EndPageSetup q 0 -1 25 26 rectclip q 0 g 2.771284 w 0 J 1 j [] 0.0 d 4 M q -0.749998 0 0 1 0 24.317219 cm -21.396 -22.734 m -21.214 -19.957 -23.323 -17.559 -26.099 -17.379 c -28.875 -17.195 -31.276 -19.301 -31.458 -22.078 c -31.495 -22.695 -31.422 -23.316 -31.24 -23.906 c S Q q -0.749998 0 0 1 0 24.317219 cm -11.453 -22.621 m -11.271 -19.844 -13.38 -17.445 -16.156 -17.262 c -18.932 -17.082 -21.333 -19.188 -21.516 -21.965 c -21.552 -22.582 -21.479 -23.199 -21.297 -23.789 c S Q q -0.749998 0 0 1 0 24.317219 cm -1.396 -22.734 m -1.214 -19.957 -3.323 -17.559 -6.099 -17.379 c -8.875 -17.195 -11.276 -19.301 -11.458 -22.078 c -11.495 -22.695 -11.422 -23.316 -11.24 -23.906 c S Q 11.512 23.829 m 12.348 23.845 l 12.371 23.72 l 12.297 15.661 l 12.324 15.661 l 13.484 16.977 14.551 17.626 15.531 17.61 c 17.062 17.571 17.891 16.825 18.016 15.376 c 17.801 12.989 15.703 11.583 11.723 11.149 c 11.164 11.157 l 11.164 23.513 l 11.168 24.317 l 12.289 14.759 m 12.266 11.766 l 15.09 12.278 16.512 13.391 16.523 15.106 c 16.531 15.181 16.535 15.251 16.535 15.317 c 16.543 16.149 16.043 16.595 15.035 16.657 c 14.234 16.669 13.316 16.036 12.289 14.759 c f 0.96 w 0 j 1 M q 1 0 0 -1 0 24.317219 cm 11.512 0.488 m 12.348 0.473 l 12.371 0.598 l 12.297 8.656 l 12.324 8.656 l 13.484 7.34 14.551 6.691 15.531 6.707 c 17.062 6.746 17.891 7.492 18.016 8.941 c 17.801 11.328 15.703 12.734 11.723 13.168 c 11.164 13.16 l 11.164 0.805 l 11.168 0 l 12.289 9.559 m 12.266 12.551 l 15.09 12.039 16.512 10.926 16.523 9.211 c 16.531 9.137 16.535 9.066 16.535 9 c 16.543 8.168 16.043 7.723 15.035 7.66 c 14.234 7.648 13.316 8.281 12.289 9.559 c S Q Q Q showpage %%Trailer end restore %%EOF denemo-2.2.0/actions/graphics/PaxHeaders.19168/suspension.eps0000644000000000000000000000013213135434035020707 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.219981805 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/suspension.eps0000644000175000017500000000622713135434035022567 0ustar00jjbenhamjjbenham00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.12.2 (http://cairographics.org) %%CreationDate: Wed Jun 25 17:58:24 2014 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 0 -1 13 13 %%EndComments %%BeginProlog save 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /pdfmark where { pop globaldict /?pdfmark /exec load put } { globaldict begin /?pdfmark /pop load def /pdfmark /cleartomark load def end } ifelse /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def %%EndProlog %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 0 -1 13 13 %%EndPageSetup q 0 -1 13 14 rectclip q 0 g 0.09 0.115 m -0.023 0.232 -0.023 0.267 0.055 0.678 c 0.605 3.471 2.098 5.748 4 6.717 c 4.703 7.072 5.223 7.201 6.145 7.24 c 7.117 7.279 7.602 7.189 8.43 6.803 c 9.617 6.252 10.586 5.31 11.379 3.947 c 11.906 3.041 12.359 1.803 12.582 0.678 c 12.664 0.267 12.66 0.232 12.547 0.115 c 12.391 -0.041 12.133 -0.041 11.996 0.119 c 11.938 0.189 11.805 0.545 11.703 0.908 c 11.273 2.447 10.449 3.588 9.16 4.435 c 8.203 5.064 7.289 5.303 6.035 5.248 c 4.871 5.197 3.953 4.838 2.977 4.057 c 2.031 3.303 1.254 2.088 0.898 0.81 c 0.812 0.498 0.691 0.189 0.629 0.119 c 0.484 -0.041 0.25 -0.041 0.09 0.115 c h f 1 g 8.77 9.678 m 8.77 8.517 7.723 7.58 6.426 7.58 c 5.129 7.58 4.082 8.517 4.082 9.678 c 4.082 10.834 5.129 11.775 6.426 11.775 c 7.723 11.775 8.77 10.834 8.77 9.678 c f 0 g 0.8 w 0 J 0 j [] 0.0 d 4 M q 1 0 0 1 0 12.177641 cm 8.77 -2.5 m 8.77 -3.66 7.723 -4.598 6.426 -4.598 c 5.129 -4.598 4.082 -3.66 4.082 -2.5 c 4.082 -1.344 5.129 -0.402 6.426 -0.402 c 7.723 -0.402 8.77 -1.344 8.77 -2.5 c h S Q Q Q showpage %%Trailer end restore %%EOF denemo-2.2.0/actions/graphics/PaxHeaders.19168/TitlePage.svg0000644000000000000000000000013213135434035020367 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.236648473 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/TitlePage.svg0000644000175000017500000016637513135434035022262 0ustar00jjbenhamjjbenham00000000000000 image/svg+xml Sonata a Due J. S. Bach created with denemo, typeset by LilyPond denemo-2.2.0/actions/graphics/PaxHeaders.19168/custom.svg0000644000000000000000000000013213135434035020023 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.276648472 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/custom.svg0000644000175000017500000000551113135434035021676 0ustar00jjbenhamjjbenham00000000000000 image/svg+xmldenemo-2.2.0/actions/graphics/PaxHeaders.19168/custom.eps0000644000000000000000000000013213135434035020013 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.276648472 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/custom.eps0000644000175000017500000000567013135434035021674 0ustar00jjbenhamjjbenham00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.12.2 (http://cairographics.org) %%CreationDate: Thu Jun 19 10:47:40 2014 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 0 -1 11 13 %%EndComments %%BeginProlog save 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /pdfmark where { pop globaldict /?pdfmark /exec load put } { globaldict begin /?pdfmark /pop load def /pdfmark /cleartomark load def end } ifelse /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def %%EndProlog %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 0 -1 11 13 %%EndPageSetup q 0 -1 11 14 rectclip q 0 g 10.316 0.091 m 10.199 -0.022 10.164 -0.022 9.754 0.056 c 6.961 0.603 4.684 2.099 3.715 4.002 c 3.359 4.705 3.23 5.224 3.191 6.146 c 3.152 7.119 3.242 7.603 3.629 8.431 c 4.18 9.619 5.121 10.587 6.484 11.38 c 7.391 11.904 8.629 12.357 9.754 12.584 c 10.164 12.666 10.199 12.662 10.316 12.548 c 10.473 12.392 10.473 12.134 10.312 11.998 c 10.242 11.939 9.887 11.806 9.523 11.705 c 7.984 11.271 6.844 10.447 5.996 9.162 c 5.367 8.205 5.129 7.291 5.184 6.037 c 5.234 4.873 5.594 3.955 6.375 2.978 c 7.129 2.029 8.344 1.255 9.621 0.896 c 9.934 0.81 10.242 0.689 10.312 0.63 c 10.473 0.482 10.473 0.252 10.316 0.091 c h f 1 g 2.098 8.627 m 3.258 8.627 4.195 7.58 4.195 6.283 c 4.195 4.986 3.258 3.939 2.098 3.939 c 0.941 3.939 0 4.986 0 6.283 c 0 7.58 0.941 8.627 2.098 8.627 c f Q Q showpage %%Trailer end restore %%EOF denemo-2.2.0/actions/graphics/PaxHeaders.19168/separator.eps0000644000000000000000000000013213135434035020501 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.283315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/separator.eps0000644000175000017500000004165213135434035022362 0ustar00jjbenhamjjbenham00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.12.2 (http://cairographics.org) %%CreationDate: Thu Jun 19 17:55:34 2014 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 0 -1 876 190 %%EndComments %%BeginProlog save 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /pdfmark where { pop globaldict /?pdfmark /exec load put } { globaldict begin /?pdfmark /pop load def /pdfmark /cleartomark load def end } ifelse /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def %%EndProlog %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 0 -1 876 190 %%EndPageSetup q 0 -1 876 191 rectclip q 0 g 33.453 188.871 m 37.223 189.02 46.125 191.731 43.016 183.641 c 36.293 179.633 26.824 182.379 21.445 175.883 c 18.434 165.192 26.953 157.262 33.055 149.832 c 37.992 155.383 40.195 163.973 47.414 167 c 50.383 168.32 51.973 164.672 53.422 162.762 c 58.922 154.922 57.195 144.652 57.223 135.692 c 68.484 136.152 79.875 135.582 91.023 134 c 90.555 124.102 82.773 117.633 75.723 111.82 c 68.055 105.422 57.625 104.891 48.543 101.672 c 59.516 95.313 72.375 94.332 84.715 92.981 c 97.953 92.52 111.164 94.102 124.414 94.172 c 133.414 93.969 142.215 95.93 150.805 98.442 c 168.965 101.692 185.574 110.051 202.934 115.942 c 193.703 121.391 181.074 118.602 172.902 126.32 c 164.742 133.211 155.766 144.07 160.766 155.41 c 167.434 150.539 172.434 143.223 180.383 140.281 c 188.703 138.34 197.383 137.121 205.895 138.531 c 214.945 139.84 224.152 140 233.105 142 c 260.492 147.289 288.332 151.942 316.324 150.609 c 332.902 147.871 350.742 149.52 366.043 141.512 c 375.875 136.699 384.922 130.5 393.832 124.18 c 399.934 119.981 403.945 113.641 408.742 108.133 c 417.062 99.25 421.402 86.852 419.914 74.723 c 425.824 74.781 431.742 74.922 437.645 75.402 c 435.844 87.32 439.266 99.531 444.312 110.262 c 453.492 125.512 467.273 137.422 476.723 152.461 c 469.004 150.731 460.895 148.082 455.625 141.82 c 450.754 137.129 449.543 130.25 446.715 124.352 c 443.793 125.531 439.453 126.871 439.402 130.77 c 439.195 139.192 444.074 146.942 443.895 155.34 c 441.973 160.731 437.016 164.371 433.523 168.731 c 430.605 161.582 424.555 154.973 425.625 146.77 c 427.832 140.172 430.402 133.66 431.434 126.723 c 429.172 125.742 426.902 124.77 424.633 123.852 c 420.473 129.973 420.293 137.75 416.473 143.961 c 411.305 147.711 404.223 145.82 398.215 146.371 c 402.172 140.82 407.172 136.129 411.285 130.692 c 417.383 122.332 425.574 115.352 429.023 105.281 c 433.055 96.121 436.523 84.871 432.113 75.34 c 428.562 83.442 427.664 92.41 423.855 100.402 c 421.684 105.84 417.945 110.41 414.582 115.121 c 408.773 122.59 403.562 130.551 396.832 137.27 c 389.855 144.262 383.855 152.641 381.445 162.371 c 383.812 162.649 386.195 162.922 388.582 163.172 c 395.902 155.141 406.902 153.02 417.434 153.371 c 420.973 161.449 425.164 169.262 427.562 177.809 c 430.902 177.492 434.855 178.52 437.543 176.051 c 444.844 169.242 450.812 160.859 453.902 151.289 c 463.945 158.742 476.414 161.442 488.715 162.063 c 485.793 149.332 475.195 140.742 468.074 130.379 c 454.484 115.109 444.023 96.25 442.844 75.461 c 445.695 75.242 448.473 75.02 451.332 74.789 c 452.285 82.289 452.094 90.18 455.176 97.242 c 460.195 109.91 470.902 118.91 480.984 127.52 c 486.562 132.66 493.676 135.531 500.094 139.422 c 513.375 147.672 529.516 148.899 544.652 150.649 c 565.633 151.969 586.555 147.801 606.754 142.5 c 624.176 139.641 641.586 136.262 659.336 136.34 c 675.484 134.309 690.145 143.301 703.223 151.629 c 702.453 158.91 696.934 164.141 695.094 171.031 c 697.625 171.391 700.016 171.66 702.625 171.75 c 709.293 166.109 714.145 157.602 712.875 148.59 c 711.664 141.442 708.195 134.949 704.742 128.66 c 702.434 125.102 699.645 121.129 694.953 120.738 c 686.664 118.129 677.324 117.91 670.074 112.692 c 682.734 108.879 695.586 105.75 708.125 101.52 c 720.965 98.379 733.613 93.559 747.004 93.551 c 768.883 93.258 791.613 91.66 812.562 99.379 c 802.402 105.738 790.785 113.481 789.324 126.559 c 791.465 126.039 794.215 126.25 795.574 124.149 c 800.605 117.738 806.754 111.469 814.914 109.422 c 824.523 107.949 834.473 110.211 843.973 107.77 c 851.703 115.051 858.883 123.129 863.742 132.66 c 867.465 141.988 865.445 152.5 866.113 162.281 c 865.055 163.059 864.004 163.852 862.965 164.629 c 859.773 158.59 856.695 152.391 854.914 145.781 c 853.625 141.422 856.004 135.629 851.785 132.59 c 849.055 132.41 846.016 133.422 844.516 135.828 c 839.723 143.27 835.895 152.5 826.594 155.219 c 827.055 143.859 830.984 133.02 833.152 121.922 c 832.254 120.949 831.363 119.961 830.492 118.981 c 825.742 120.199 821.254 122.199 816.715 124.02 c 810.414 126.488 803.484 126.352 796.953 127.871 c 800.824 134.91 810.273 132.57 816.855 134.078 c 817.715 141.738 816.625 149.801 819.414 157.121 c 821.414 162.192 827.875 162.149 832.355 160.762 c 838.215 158.559 843.723 155.41 848.555 151.422 c 851.062 155.461 854.875 159.52 853.414 164.789 c 852.805 171.988 846.062 176.031 841.703 180.879 c 841.582 182.66 841.945 184.422 842.184 186.18 c 851.285 184.399 863.855 184.609 868.246 174.699 c 871.035 169.57 874.953 164.602 874.895 158.442 c 875.695 145.859 872.094 133.25 866.242 122.199 c 860.684 114.57 854.723 106.789 846.445 101.93 c 831.113 90.059 811.465 85.809 792.574 83.961 c 777.203 83.512 761.586 81.75 746.363 84.859 c 739.133 86.231 731.695 86.621 724.734 89.141 c 710.535 93.192 697.125 100.008 682.402 102.129 c 693.766 94.359 706.234 88.231 716.715 79.192 c 722.695 74.801 726.523 68.328 731.473 62.93 c 745.766 46.141 757.383 25.399 778.023 15.461 c 785.535 10.34 794.703 9.961 803.094 7.219 c 801.195 4.192 798.633 1 794.723 0.918 c 776.004 0.09 755.543 1.969 740.625 14.551 c 733.773 9.449 726.242 5.02 717.613 3.84 c 714.246 12.18 714.086 21.32 713.605 30.16 c 702.945 30.84 689.812 28.57 681.336 36.781 c 677.125 42.039 684.594 46.352 687.746 49.75 c 698.273 60.43 714.785 59.57 728.465 57.621 c 721.652 66.859 712.426 73.942 703.535 81.059 c 695.293 88.051 684.965 91.711 675.934 97.469 c 671.543 100.32 666.504 101.899 661.434 103.008 c 661.113 95.899 657.453 89.891 651.934 85.668 c 650.684 79.231 651.793 71.949 648.305 66.109 c 643.824 59.801 637.676 53.942 629.645 52.93 c 620.863 52.5 610.914 50.481 603.023 55.488 c 599.723 56.551 600.523 60.219 600.285 62.84 c 608.695 64.039 619.562 65.238 623.023 74.41 c 628.125 88.488 618.695 102.149 608.863 111.309 c 601.543 118.539 591.145 120.352 582.016 124.27 c 566.773 128.891 551.043 132.91 535.004 132.52 c 521.953 132.82 509.625 128.059 497.555 123.738 c 489.445 118.82 481.086 113.891 474.426 107.031 c 466.723 98.09 461.324 86.961 460.535 75.07 c 466.484 74.668 472.434 75.18 478.363 75.731 c 479.734 81.602 480.633 87.899 485.164 92.328 c 494.555 104.16 511.023 105.859 525.016 105.391 c 534.375 103.258 543.516 98.692 549.785 91.238 c 555.023 85.719 556.684 77.988 558.266 70.781 c 560.742 59.758 556.914 48.801 552.715 38.77 c 547.473 27.809 536.484 21.031 525.344 17.199 c 514.395 14.551 502.152 10.809 491.414 16.078 c 485.043 19.961 476.625 19.871 471.773 26.18 c 463.383 35.641 453.965 45.93 453.293 59.25 c 449.855 59.008 446.414 58.688 443.004 58.399 c 445.324 52.309 447.926 46.281 451.395 40.738 c 455.023 35.168 459.742 30.102 461.273 23.41 c 456.805 22.02 451.633 22.379 447.523 19.949 c 443.652 16.039 441.742 10.578 437.766 6.719 c 435.473 4.352 431.234 5.301 429.473 7.809 c 427.324 11.238 425.734 14.942 423.953 18.559 c 419.836 17.109 415.633 15.859 411.383 14.879 c 411.043 17.801 410.043 21.02 411.766 23.699 c 417.676 34.781 423.145 46.18 426.363 58.359 c 423.363 58.43 420.824 58.352 417.953 58.359 c 415.344 44.77 405.934 33.418 394.746 25.75 c 374.355 10.629 342.613 10.192 323.914 28.371 c 315.875 38.109 309.113 50.18 310.363 63.281 c 311.285 71.82 312.625 80.809 317.266 88.219 c 330.062 105.231 355.453 110.762 374.562 101.879 c 380.105 97.59 385.824 92.629 388.086 85.75 c 388.605 82.5 388.625 79.168 388.715 75.879 c 397.305 75.539 405.902 74.93 414.504 75.02 c 410.285 92.41 398.594 107.68 383.016 116.422 c 366.652 124.781 348.516 130.199 330.043 130.379 c 322.312 130.59 314.582 130.531 306.863 130.531 c 306.805 132.899 306.805 135.281 306.844 137.649 c 324.004 139.219 341.156 137.109 358.215 135.41 c 348.504 137.801 339.055 141.539 328.984 142.238 c 298.895 146.852 268.914 139.512 239.074 136.289 c 217.164 132.711 194.664 130.609 172.605 134 c 176.465 131.34 180.633 129.07 185.094 127.57 c 192.453 125.559 199.824 128.551 207.023 129.731 c 207.383 126.121 207.746 122.5 208.504 118.949 c 214.656 119.449 221.562 118.539 226.695 122.801 c 231.676 125.539 234.355 132.578 241.043 131.449 c 245.293 131.609 247.066 126.629 248.535 123.621 c 241.105 118.309 231.836 116.969 224.086 112.379 c 219.566 108.82 222.305 102.391 223.016 97.66 c 227.125 99.25 230.477 104.859 235.324 102.609 c 235.113 94.801 227.465 88.77 229.285 80.649 c 231.215 76.359 234.484 72.82 237.395 69.149 c 237.523 76.508 237.465 83.942 238.586 91.238 c 243.734 109.692 259.703 123.219 276.945 130.219 c 283.703 132.609 298.703 137.176 305.965 137.117 c 304.363 135.567 315.172 129.434 294.156 128.359 c 282.953 123.621 270.504 120.578 261.273 112.211 c 255.996 107.508 250.914 102.34 247.555 96.059 c 244.953 89.942 244.414 83.141 244.285 76.57 c 244.344 70.371 248.293 65.52 251.305 60.488 c 260.074 61.789 266.125 68.879 274.465 71.219 c 274.156 66.059 272.895 60.309 268.305 57.199 c 257.227 51.531 242.664 53.371 233.773 62.18 c 227.793 68.77 222.227 76.41 220.766 85.41 c 219.246 92.879 215.484 99.609 213.363 106.899 c 199.734 97.809 186.043 88.692 174.023 77.469 c 168.984 73.328 165.805 67.508 162.453 62.02 c 174.656 61.609 188.754 61.871 198.176 52.629 c 201.434 50.66 202.203 45.75 199.566 42.969 c 193.184 34.859 182.543 32.531 173.004 30.25 c 173.195 22.871 176.305 14.859 172.594 7.91 c 167.156 8.082 161.734 8.43 156.336 8.969 c 150.516 10.309 145.855 14.102 141.395 17.828 c 123.727 9.359 105.285 0.602 85.324 0 c 84.816 2.789 83.414 6.262 85.977 8.469 c 92.164 14.129 100.227 16.859 107.164 21.391 c 120.594 30.301 131.996 41.781 143.484 53 c 156.934 66.231 167.426 82.469 182.957 93.531 c 188.855 97.692 194.367 102.359 200.035 106.82 c 180.535 102.051 162.086 93.781 142.555 89.102 c 131.336 86.488 119.777 86.129 108.344 85.102 c 90.566 84.32 72.227 83.59 55.195 89.699 c 41.395 96.039 29.016 105.16 17.574 115.059 c 7.074 124.231 1.145 137.711 0.277 151.5 c -0.934 161.399 1.805 172.289 9.176 179.309 c 15.094 186.539 24.957 187.211 33.457 188.871 c h 11.035 168.66 m 7.082 156.02 6.934 141.442 14.812 130.25 c 21.266 122.492 27.875 114.141 37.082 109.582 c 50.332 109.711 63.742 112.75 75.543 118.871 c 78.473 120.231 80.293 122.992 82.043 125.563 c 70.785 130.02 58.555 128.25 47.172 125.242 c 45.125 135.34 49.254 145.359 48.043 155.442 c 45.273 153.641 42.613 151.609 40.383 149.16 c 37.266 144.641 37.453 138.641 34.305 134.18 c 33.094 132.27 29.484 131.473 28.273 133.699 c 24.945 138.699 25.355 145.32 21.684 150.16 c 17.723 156.082 14.273 162.32 11.035 168.66 c h 526.684 139.832 m 555.184 139.57 584.703 136.172 610.336 122.813 c 625.344 114.832 638.445 98.231 635.203 80.422 c 634.523 70.68 626.676 63.859 618.945 59.102 c 626.453 60.731 637.355 59.981 640.992 68.461 c 646.684 76.109 641.605 85.563 641.176 93.961 c 645.004 94.5 648.836 95 652.676 95.531 c 652.523 99.231 652.664 103.461 649.883 106.332 c 644.633 113.871 634.395 114.082 627.215 118.781 c 626.453 121.563 627.125 124.422 627.535 127.199 c 635.363 124.961 642.426 120.59 650.414 118.852 c 656.734 116.75 663.344 118.422 669.555 120 c 672.645 120.859 671.062 125.922 673.105 127.43 c 679.996 126.531 687.773 124.531 694.246 128.27 c 698.062 131.402 700.504 135.891 702.645 140.262 c 693.434 136.172 684.312 131.07 674.105 130.18 c 659.293 126.91 644.324 130.801 629.465 131.25 c 609.633 132.871 590.676 139.59 570.902 141.512 c 556.203 143.652 541.266 142.223 526.684 139.832 c h 359.555 134.34 m 359.703 134.02 359.984 133.371 360.125 133.051 c 362.715 132.442 360.965 136.52 359.555 134.34 c h 201.555 108.34 m 201.703 108.02 201.984 107.371 202.125 107.051 c 204.727 106.442 202.977 110.52 201.555 108.34 c h 332.426 90.152 m 313.395 77.16 313.934 44.172 333.914 32.332 c 341.676 27.27 350.266 22.109 360.027 23.41 c 382.156 22.82 405.234 36.289 411.344 58.422 c 403.965 58.442 396.586 58.442 389.215 58.41 c 386.254 54.012 383.527 49.41 380.105 45.352 c 374.945 40.723 368.125 37.5 361.016 38.371 c 353.645 38.07 344.746 38.852 340.375 45.781 c 332.535 53.641 328.465 68.449 337.805 76.672 c 342.695 83.172 352.816 77.93 354.707 71.332 c 354.805 66.012 353.367 60.77 352.875 55.5 c 359.914 48.473 370.895 50.633 378.445 55.672 c 373.414 57.262 368.215 58.543 363.527 61.012 c 360.645 64.641 360.035 71.313 364.727 73.793 c 370.926 77.082 378.535 75.031 385.215 76.25 c 380.777 88.961 368.355 100.422 354.066 98.352 c 346.215 98.274 338.426 95.141 332.426 90.152 c h 500.004 95.41 m 491.887 92.352 486.695 85.031 484.438 76.961 c 489.586 75.91 494.926 76.473 500.066 75.359 c 506.426 72.422 505.066 61.563 498.598 59.402 c 495.914 58.77 490.555 57.531 487.875 56.902 c 492.125 46.379 505.605 47.59 514.266 51.52 c 511.164 57.492 509.516 64 509.098 70.742 c 514.266 73.813 519.965 78.5 526.477 75.852 c 533.176 72.641 537.355 65.109 536.688 57.692 c 534.656 48.379 528.008 39.883 518.875 36.75 c 511.875 35.852 504.656 36.063 497.707 37.231 c 489.465 41.57 484.316 49.77 481.457 58.383 c 473.836 59.141 466.176 59.52 458.555 60.109 c 463.195 49.313 468.387 37.762 478.375 30.852 c 493.977 18.16 517.457 19.293 534.086 29.402 c 544.758 36.902 552.605 50.293 550.348 63.609 c 548.625 72.703 549.324 84.402 540.375 89.852 c 529.355 99.832 513.414 98.039 500.008 95.41 c h 340.305 66.141 m 338.324 58.789 344.125 53.16 348.957 48.672 c 346.926 56.852 348.125 65.449 345.734 73.563 c 343.137 71.789 340.516 69.52 340.305 66.141 c h 372.875 70.492 m 372.105 68.871 371.344 67.242 370.617 65.602 c 394.434 64.082 418.297 66.289 442.137 65.629 c 458.777 65.082 475.465 65.301 491.965 67.629 c 491.984 68.332 492.023 69.731 492.035 70.43 c 452.312 71.238 412.594 70.078 372.875 70.488 c h 515.785 66.43 m 517.656 62.109 520.625 58.473 523.516 54.801 c 521.066 48.371 514.145 46.34 508.695 43.242 c 521.375 40.152 532.977 54.711 528.023 66.461 c 524.906 70.789 519.434 68.859 515.785 66.43 c h 430.824 55.832 m 428.434 46.109 424.977 36.692 421.137 27.449 c 423.766 27.832 426.547 28.16 429.207 28.539 c 430.684 24.262 431.906 19.891 433.254 15.57 c 433.914 15.551 435.234 15.524 435.895 15.512 c 437.074 20.192 438.176 24.891 439.086 29.641 c 442.625 28.922 446.125 28.152 449.684 27.481 c 450.465 28.254 451.246 29.024 452.035 29.781 c 443.355 37.902 439.355 49.332 436.457 60.582 c 434.336 59.492 431.285 58.574 430.824 55.832 c h 163.035 54.402 m 151.746 51.461 144.746 41.402 136.145 34.313 c 129.496 27.313 121.215 22.16 114.605 15.152 c 123.727 16.391 130.617 22.77 138.355 27.07 c 140.926 28.551 144.734 28.75 146.625 26.051 c 152.605 20.172 159.617 13.75 168.645 14.629 c 167.445 19.223 166.836 24.34 163.805 28.211 c 161.645 31.012 159.137 33.531 157.125 36.449 c 166.465 40.781 177.094 39.981 186.867 42.711 c 189.645 43.621 191.555 45.949 193.387 48.09 c 184.996 54.789 173.367 56.672 163.035 54.402 c h 688.094 43.481 m 688.055 42.621 687.965 40.891 687.926 40.031 c 699.496 37.481 711.445 39.629 723.156 38.629 c 722.406 29.859 721.367 21.121 721.105 12.32 c 729.363 14.102 734.105 23.082 742.406 23.859 c 749.035 16.152 758.625 10.762 769.086 11.629 c 763.977 18.27 755.836 21.512 750.324 27.75 c 741.957 35.652 736.523 47.582 724.844 51.199 c 712.207 54.07 698.715 50.641 688.094 43.481 c h f Q Q showpage %%Trailer end restore %%EOF denemo-2.2.0/actions/graphics/PaxHeaders.19168/bemolTremblement.svg0000644000000000000000000000013213135434035022006 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.303315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/bemolTremblement.svg0000644000175000017500000001020613135434035023656 0ustar00jjbenhamjjbenham00000000000000 image/svg+xmldenemo-2.2.0/actions/graphics/PaxHeaders.19168/tremblement.svg0000644000000000000000000000013213135434035021027 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.303315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/tremblement.svg0000644000175000017500000000625213135434035022705 0ustar00jjbenhamjjbenham00000000000000 image/svg+xml denemo-2.2.0/actions/graphics/PaxHeaders.19168/tremblement_appuye.eps0000644000000000000000000000013213135434035022402 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.303315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/tremblement_appuye.eps0000644000175000017500000000453713135434035024264 0ustar00jjbenhamjjbenham00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.12.2 (http://cairographics.org) %%CreationDate: Sun Jun 22 17:09:48 2014 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 0 -1 199 134 %%EndComments %%BeginProlog save 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /pdfmark where { pop globaldict /?pdfmark /exec load put } { globaldict begin /?pdfmark /pop load def /pdfmark /cleartomark load def end } ifelse /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def %%EndProlog %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 0 -1 199 134 %%EndPageSetup q 0 -1 199 135 rectclip q 0 g 11.36 w 0 J 0 j [] 0.0 d 4 M q 1 0 0 -1 0 133.024994 cm 5.047 2.621 m 66.465 120.605 l 97.172 69.695 l 121.418 120.605 l 147.277 73.734 l 172.328 119.797 l 193.34 76.969 l S Q Q Q showpage %%Trailer end restore %%EOF denemo-2.2.0/actions/graphics/PaxHeaders.19168/tremblement.eps0000644000000000000000000000013213135434035021017 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.303315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/tremblement.eps0000644000175000017500000000467713135434035022706 0ustar00jjbenhamjjbenham00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.12.2 (http://cairographics.org) %%CreationDate: Mon Nov 17 17:39:48 2014 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 0 0 24 8 %%EndComments %%BeginProlog save 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /pdfmark where { pop globaldict /?pdfmark /exec load put } { globaldict begin /?pdfmark /pop load def /pdfmark /cleartomark load def end } ifelse /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def %%EndProlog %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 0 0 24 8 %%EndPageSetup q 0 0 24 8 rectclip q 0 g 1.4456 w 1 J 0 j [] 0.0 d 4 M q 1 0 0 -1 0 7.225317 cm 0.727 6.496 m 0.727 -1.215 7.973 -0.953 7.973 6.441 c S Q q 1 0 0 -1 0 7.225317 cm 8.047 6.422 m 8.047 -1.289 15.293 -1.027 15.293 6.363 c S Q q 1 0 0 -1 0 7.225317 cm 15.246 6.422 m 15.246 -1.289 22.492 -1.027 22.492 6.363 c S Q Q Q showpage %%Trailer end restore %%EOF denemo-2.2.0/actions/graphics/PaxHeaders.19168/TitlePage.eps0000644000000000000000000000013213135434035020357 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.309981805 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/TitlePage.eps0000644000175000017500000026057013135434035022242 0ustar00jjbenhamjjbenham00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.12.2 (http://cairographics.org) %%CreationDate: Thu Jun 12 16:43:52 2014 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 0 -1 440 664 %%EndComments %%BeginProlog save 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /pdfmark where { pop globaldict /?pdfmark /exec load put } { globaldict begin /?pdfmark /pop load def /pdfmark /cleartomark load def end } ifelse /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def %%EndProlog %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 0 -1 440 664 %%EndPageSetup q 0 -1 440 665 rectclip q 0 g 29.594 1.634 m 28.082 5.001 28.719 17.689 30.719 23.974 c 31.754 27.224 34.863 33.345 37.633 37.568 c 44.199 47.591 44.199 47.587 30.93 56.087 c 24.832 59.99 19.098 60.415 14.414 57.314 c 10.402 54.654 8.434 49.564 8.434 41.857 c 8.434 35.494 10.938 30.13 14.586 28.677 c 16.191 28.04 16.5 28.509 16.469 31.529 c 16.441 34.365 17.09 35.548 19.469 37.013 c 22.062 38.607 22.422 39.372 21.93 42.271 c 21.051 47.419 19.66 49.208 17.207 48.349 c 16.004 47.927 15.02 48.173 15.02 48.896 c 15.02 51.126 19.453 51.904 22.957 50.29 c 30.137 46.982 32.492 34.357 27.414 26.419 c 25.172 22.912 23.941 22.169 19.648 21.724 c 13.18 21.056 9.078 24.33 6.516 32.216 c 2.84 43.525 5.059 57.763 12.285 69.255 c 15.441 74.279 l 11.336 79.372 l 8.699 82.638 5.926 84.755 3.594 85.275 c -0.422 86.169 -1.363 88.376 2.27 88.376 c 6.09 88.376 14.316 85.595 18.25 82.966 c 21.934 80.509 21.984 80.513 28.605 83.658 c 32.266 85.396 37.957 87.236 41.258 87.744 c 47.258 88.673 l 46.738 94.771 l 46.453 98.122 45.742 102.611 45.16 104.74 c 44.102 108.619 l 41.309 101.787 l 39.668 97.779 36.895 93.458 34.598 91.337 c 31.176 88.177 29.781 87.728 23.559 87.763 c 18.035 87.798 15.531 88.47 12.422 90.755 c 7.73 94.205 3.215 102.314 1.734 109.939 c 0.309 117.314 1.184 130.056 3.574 136.595 c 5.883 142.919 11.402 149.701 15.18 150.861 c 18.812 151.974 19.27 153.634 16.184 154.501 c 11.996 155.673 7.273 160.935 4.227 167.822 c 1.625 173.693 1.375 175.267 1.383 185.54 c 1.395 194.626 1.801 197.876 3.477 202.275 c 5.918 208.693 11.438 215.431 15.191 216.583 c 18.59 217.626 18.59 219.38 15.191 220.423 c 11.438 221.576 5.918 228.314 3.477 234.732 c 1.801 239.13 1.395 242.38 1.383 251.466 c 1.375 261.74 1.625 263.314 4.227 269.185 c 7.277 276.08 11.996 281.333 16.199 282.513 c 19.512 283.443 19.512 285.005 16.199 285.935 c 11.996 287.115 7.277 292.365 4.227 299.259 c 1.625 305.134 1.375 306.705 1.383 316.982 c 1.395 326.068 1.801 329.314 3.477 333.716 c 5.918 340.134 11.438 346.872 15.191 348.025 c 18.59 349.068 18.59 350.822 15.191 351.865 c 11.438 353.013 5.918 359.755 3.477 366.173 c 1.801 370.572 1.395 373.818 1.383 382.908 c 1.375 393.181 1.625 394.755 4.227 400.626 c 7.277 407.521 11.996 412.771 16.199 413.951 c 19.512 414.88 19.512 416.447 16.199 417.376 c 11.996 418.552 7.277 423.806 4.227 430.701 c 1.625 436.572 1.375 438.146 1.383 448.419 c 1.395 457.505 1.801 460.755 3.477 465.154 c 5.918 471.572 11.438 478.314 15.191 479.462 c 18.59 480.505 18.59 482.259 15.191 483.302 c 11.402 484.462 5.887 491.24 3.574 497.572 c 1.184 504.111 0.309 516.853 1.734 524.228 c 3.992 535.865 10.965 544.642 19.465 546.54 c 23.141 547.361 l 23.152 555.447 l 23.168 565.794 25.496 573.142 31.809 582.775 c 34.484 586.853 36.668 590.65 36.668 591.216 c 36.668 591.779 36 593.275 35.18 594.54 c 33.992 596.376 32.699 596.697 28.766 596.126 c 23.348 595.345 18.738 597.716 16.668 602.349 c 15.258 605.501 13.047 605.622 8.77 602.787 c 4.754 600.126 2.785 595.04 2.785 587.33 c 2.785 580.9 5.293 575.611 9.059 574.099 c 10.766 573.415 11.02 573.724 10.598 575.974 c 9.914 579.622 11.746 582.353 15.551 583.353 c 19.496 584.384 21.02 586.818 20.176 590.744 c 19.566 593.58 19.625 593.63 21.156 591.58 c 22.418 589.888 22.641 588.275 22.133 584.478 c 20.539 572.63 10.891 567.869 4.539 575.798 c 2.027 578.931 1.496 580.646 1.176 586.642 c 0.672 596.119 3.059 601.583 9.301 605.267 c 13.84 607.947 l 13.371 616.142 l 12.977 622.974 13.289 625.529 15.23 631.458 c 16.516 635.372 18.992 640.845 20.738 643.622 c 23.914 648.673 l 19.805 653.763 l 17.168 657.029 14.395 659.146 12.066 659.665 c 8.047 660.564 7.105 662.771 10.738 662.771 c 14.562 662.771 22.785 659.986 26.723 657.361 c 30.426 654.892 l 37.547 658.372 l 46.922 662.958 61.727 663.517 69.336 659.576 c 73.512 657.412 74.762 657.267 77.805 658.595 c 79.77 659.455 86.355 660.865 92.438 661.728 c 104.145 663.392 121.617 661.904 129.188 658.595 c 132.23 657.267 133.48 657.412 137.656 659.576 c 144.363 663.048 156.75 663.048 163.457 659.576 c 167.633 657.412 168.883 657.267 171.926 658.595 c 179.496 661.904 196.969 663.392 208.676 661.728 c 214.758 660.865 221.344 659.455 223.309 658.595 c 226.352 657.267 227.602 657.412 231.777 659.576 c 238.484 663.048 250.871 663.048 257.578 659.576 c 261.754 657.412 263.004 657.267 266.047 658.595 c 268.012 659.455 274.598 660.865 280.68 661.728 c 292.387 663.392 308.254 662.08 317.246 658.697 c 320.992 657.29 322.137 657.384 325.719 659.388 c 333.418 663.693 351.961 663.302 364.652 658.56 c 367.949 657.33 369.316 657.447 372.543 659.251 c 374.688 660.451 378.707 661.802 381.477 662.259 c 386.508 663.083 l 387.098 653.396 l 387.73 642.99 390.676 628.966 392.07 629.705 c 393.402 630.412 404.688 648.255 406.664 652.783 c 407.645 655.021 408.445 658.306 408.445 660.076 c 408.449 662.638 408.688 662.962 409.617 661.665 c 411.418 659.15 410.91 645.9 408.754 639.111 c 407.719 635.857 404.609 629.74 401.84 625.517 c 395.273 615.494 395.27 615.497 408.543 606.997 c 414.641 603.091 420.371 602.665 425.055 605.771 c 429.07 608.431 431.039 613.521 431.039 621.228 c 431.039 627.591 428.535 632.951 424.883 634.404 c 423.281 635.044 422.969 634.576 423 631.552 c 423.031 628.72 422.383 627.537 420.004 626.072 c 417.41 624.478 417.051 623.708 417.543 620.814 c 418.422 615.665 419.809 613.876 422.262 614.736 c 423.465 615.158 424.449 614.912 424.449 614.189 c 424.449 611.958 420.02 611.177 416.516 612.794 c 409.336 616.103 406.977 628.728 412.059 636.662 c 414.301 640.169 415.527 640.912 419.82 641.357 c 426.293 642.029 430.391 638.755 432.957 630.869 c 436.633 619.56 434.414 605.322 427.188 593.826 c 424.027 588.802 l 428.137 583.712 l 430.773 580.443 433.547 578.33 435.879 577.81 c 439.895 576.912 440.836 574.705 437.203 574.705 c 433.379 574.705 425.156 577.49 421.219 580.115 c 417.535 582.572 417.488 582.572 410.867 579.427 c 407.207 577.689 401.516 575.849 398.215 575.337 c 392.211 574.408 l 392.73 568.314 l 393.02 564.962 393.727 560.474 394.309 558.341 c 395.367 554.466 l 398.164 561.298 l 399.801 565.306 402.574 569.626 404.875 571.747 c 408.297 574.908 409.691 575.357 415.914 575.318 c 421.438 575.287 423.941 574.611 427.051 572.326 c 431.742 568.88 436.258 560.771 437.734 553.142 c 439.164 545.767 438.285 533.029 435.898 526.49 c 433.586 520.165 428.07 513.38 424.293 512.224 c 420.656 511.107 420.199 509.451 423.289 508.583 c 427.477 507.408 432.195 502.15 435.246 495.263 c 437.844 489.392 438.098 487.818 438.086 477.544 c 438.078 468.455 437.672 465.208 435.996 460.81 c 433.551 454.392 428.035 447.65 424.281 446.501 c 420.883 445.458 420.883 443.705 424.281 442.662 c 428.035 441.509 433.551 434.771 435.996 428.353 c 437.672 423.951 438.078 420.705 438.086 411.619 c 438.098 401.341 437.844 399.771 435.246 393.896 c 432.191 387.001 427.477 381.751 423.273 380.572 c 421.852 380.173 420.688 379.404 420.688 378.861 c 420.688 378.318 421.852 377.548 423.273 377.15 c 427.477 375.97 432.191 370.716 435.246 363.822 c 437.844 357.951 438.098 356.376 438.086 346.103 c 438.078 337.017 437.672 333.767 435.996 329.369 c 433.551 322.951 428.035 316.212 424.281 315.06 c 420.883 314.017 420.883 312.263 424.281 311.22 c 428.035 310.068 433.551 303.33 435.996 296.912 c 437.672 292.513 438.078 289.263 438.086 280.177 c 438.098 269.904 437.844 268.33 435.246 262.458 c 432.191 255.564 427.477 250.31 423.273 249.134 c 421.852 248.732 420.688 247.962 420.688 247.419 c 420.688 246.876 421.852 246.107 423.273 245.708 c 427.477 244.529 432.191 239.279 435.246 232.384 c 437.844 226.509 438.098 224.939 438.086 214.662 c 438.078 205.576 437.672 202.33 435.996 197.927 c 433.551 191.509 428.035 184.771 424.281 183.619 c 420.883 182.58 420.883 180.822 424.281 179.779 c 428.066 178.619 433.586 171.841 435.898 165.509 c 438.285 158.97 439.164 146.232 437.734 138.857 c 435.48 127.22 428.504 118.443 420.008 116.544 c 416.332 115.724 l 416.32 107.638 l 416.305 97.29 413.977 89.939 407.66 80.306 c 404.988 76.232 402.801 72.431 402.801 71.869 c 402.801 71.302 403.473 69.806 404.293 68.544 c 405.48 66.708 406.773 66.388 410.707 66.955 c 416.125 67.736 420.734 65.365 422.805 60.736 c 424.215 57.583 426.426 57.462 430.703 60.294 c 434.715 62.955 436.688 68.044 436.688 75.751 c 436.688 82.185 434.18 87.474 430.41 88.982 c 428.703 89.665 428.453 89.361 428.875 87.111 c 429.559 83.458 427.727 80.728 423.918 79.732 c 419.973 78.697 418.453 76.267 419.297 72.341 c 419.906 69.505 419.848 69.455 418.312 71.505 c 417.051 73.193 416.832 74.81 417.34 78.603 c 418.934 90.455 428.578 95.212 434.934 87.283 c 437.445 84.15 437.977 82.435 438.297 76.439 c 438.797 66.966 436.414 61.501 430.168 57.814 c 425.629 55.138 l 426.102 46.939 l 426.496 40.107 426.184 37.556 424.238 31.626 c 422.957 27.712 420.48 22.236 418.734 19.462 c 415.559 14.412 l 419.664 9.322 l 422.301 6.052 425.074 3.939 427.406 3.419 c 431.422 2.521 432.367 0.314 428.734 0.314 c 424.91 0.314 416.688 3.095 412.75 5.724 c 409.047 8.193 l 401.926 4.708 l 392.551 0.126 377.746 -0.432 370.137 3.509 c 365.961 5.673 364.711 5.818 361.668 4.486 c 354.098 1.181 336.625 -0.311 324.918 1.357 c 318.836 2.22 312.25 3.63 310.285 4.486 c 307.242 5.818 305.992 5.673 301.816 3.509 c 298.395 1.736 294.504 0.97 288.914 0.97 c 283.328 0.97 279.438 1.736 276.016 3.509 c 271.84 5.673 270.59 5.818 267.543 4.486 c 265.582 3.63 258.996 2.22 252.914 1.357 c 241.203 -0.311 223.734 1.181 216.164 4.486 c 213.121 5.818 211.871 5.673 207.691 3.509 c 204.273 1.736 200.379 0.97 194.793 0.97 c 189.207 0.97 185.316 1.736 181.895 3.509 c 177.719 5.673 176.469 5.818 173.422 4.486 c 171.457 3.63 164.875 2.22 158.793 1.357 c 147.086 -0.307 131.219 1.005 122.223 4.384 c 118.477 5.79 117.332 5.701 113.754 3.697 c 106.055 -0.612 87.512 -0.217 74.82 4.521 c 71.523 5.755 70.156 5.634 66.93 3.833 c 64.785 2.634 60.762 1.279 57.996 0.826 c 52.965 0.001 l 52.375 9.685 l 51.809 18.943 49.156 32.681 47.785 33.462 c 47.066 33.869 35.695 16.615 33.254 11.415 c 32.41 9.611 31.438 6.228 31.098 3.904 c 30.613 0.603 30.281 0.103 29.594 1.634 c h 66.27 5.54 m 69.047 7.021 l 64.152 10.919 l 61.281 13.208 58.191 17.083 56.672 20.294 c 54.41 25.072 54.086 27.017 54.113 35.712 c 54.137 43.423 54.617 46.919 56.254 51.263 c 58.723 57.814 64.531 64.119 69.992 66.185 c 75.273 68.181 84.395 66.955 89.078 63.619 c 93.609 60.392 98.465 52.685 99.293 47.412 c 100.094 42.337 101.281 41.697 101.902 46.009 c 102.742 51.857 106.508 58.451 111.441 62.708 c 115.645 66.337 116.77 66.689 124.129 66.673 c 130.637 66.662 132.961 66.095 136.113 63.755 c 140.707 60.341 145.535 52.638 146.359 47.396 c 147.105 42.65 148.359 42.65 149.109 47.396 c 149.934 52.638 154.758 60.341 159.355 63.755 c 162.504 66.095 164.828 66.662 171.336 66.673 c 178.695 66.689 179.82 66.337 184.027 62.708 c 188.961 58.443 192.723 51.853 193.566 45.99 c 193.855 44.001 194.406 42.372 194.793 42.372 c 195.184 42.372 195.734 44.001 196.02 45.99 c 196.863 51.853 200.625 58.443 205.562 62.708 c 209.766 66.337 210.895 66.689 218.25 66.673 c 224.758 66.662 227.082 66.095 230.234 63.755 c 234.828 60.341 239.656 52.638 240.48 47.396 c 241.227 42.65 242.484 42.65 243.23 47.396 c 244.055 52.638 248.879 60.341 253.477 63.755 c 256.625 66.095 258.953 66.662 265.457 66.673 c 272.816 66.689 273.941 66.337 278.148 62.708 c 283.086 58.443 286.844 51.853 287.688 45.99 c 287.977 44.001 288.527 42.372 288.914 42.372 c 289.305 42.372 289.855 44.001 290.141 45.99 c 290.984 51.853 294.746 58.443 299.684 62.708 c 303.887 66.337 305.016 66.689 312.371 66.673 c 318.879 66.662 321.203 66.095 324.355 63.755 c 328.953 60.341 333.777 52.638 334.602 47.396 c 335.348 42.65 336.605 42.65 337.352 47.396 c 338.184 52.685 343.035 60.388 347.57 63.619 c 352.25 66.955 361.375 68.181 366.656 66.185 c 374.988 63.033 381.273 53.294 382.633 41.427 c 383.223 36.294 l 389.012 36.275 l 396.449 36.251 401.688 32.997 408.691 24.048 c 411.812 20.056 414.664 17.423 415.426 17.83 c 417.191 18.775 422.004 28.798 423.359 34.353 c 424.527 39.13 424.82 50.009 423.879 53.439 c 423.52 54.744 422.172 55.517 420.246 55.517 c 418.562 55.517 414.691 57.275 411.641 59.423 c 406.41 63.111 406.008 63.201 404.547 61.068 c 403.695 59.822 402.727 57.521 402.391 55.955 c 401.883 53.564 402.094 53.22 403.711 53.81 c 406.324 54.763 408.281 52.205 408.996 46.888 c 409.734 41.38 411.477 39.255 414.289 40.435 c 416.316 41.287 416.355 41.201 414.887 39.06 c 412.695 35.872 407.074 37.521 403.602 42.369 c 400.16 47.177 399.852 55.896 402.934 61.365 c 404.945 64.939 l 400.781 70.634 l 397.078 64.861 l 394.668 61.111 393.168 57.314 392.789 54.017 c 392.148 48.408 390.566 47.091 390.566 52.165 c 390.566 57.505 392.559 68.99 394.441 74.486 c 396.211 79.658 l 393.715 89.603 l 390.434 102.697 390.031 123.369 392.855 133.994 c 394.406 139.826 394.508 141.572 393.555 145.822 c 392.941 148.568 391.934 157.759 391.312 166.255 c 390.121 182.607 391.188 207.005 393.555 217.576 c 394.508 221.826 394.406 223.572 392.855 229.404 c 391.586 234.185 391.039 239.619 391.039 247.419 c 391.039 255.22 391.586 260.654 392.855 265.435 c 394.406 271.267 394.508 273.009 393.555 277.263 c 392.941 280.005 391.934 289.201 391.312 297.697 c 390.121 314.048 391.188 338.447 393.555 349.017 c 394.508 353.267 394.406 355.013 392.855 360.845 c 391.586 365.622 391.039 371.056 391.039 378.861 c 391.039 386.662 391.586 392.095 392.855 396.872 c 394.406 402.705 394.508 404.451 393.555 408.705 c 392.941 411.447 391.934 420.638 391.312 429.134 c 390.121 445.486 391.062 467.642 393.48 480.201 c 394.488 485.435 394.422 487.033 392.988 492.033 c 389.906 502.783 390.188 528.677 393.582 546.4 c 394.465 551.005 394.379 552.912 393.086 557.419 c 392.227 560.415 391.258 566.029 390.934 569.896 c 390.344 576.919 l 397.277 577.747 l 404.77 578.638 414.074 582.435 413.98 584.564 c 413.906 586.236 401.574 601.787 397.719 605.072 c 396.113 606.439 393.824 607.556 392.629 607.56 c 389.41 607.568 390.965 609.759 394.926 610.794 c 398.164 611.642 398.27 611.826 396.746 613.904 c 395.227 615.974 394.902 615.755 391.426 610.337 c 389.023 606.591 387.52 602.787 387.141 599.494 c 386.5 593.884 384.918 592.568 384.918 597.642 c 384.918 602.982 386.914 614.466 388.793 619.962 c 390.555 625.107 390.551 625.173 388.301 634.419 c 387.055 639.529 385.738 647.482 385.371 652.091 c 384.707 660.47 l 380.344 659.744 l 377.941 659.345 374.73 658.353 373.203 657.54 c 370.426 656.064 l 375.32 652.162 l 378.188 649.872 381.281 645.997 382.801 642.79 c 385.062 638.009 385.387 636.064 385.359 627.372 c 385.336 619.662 384.852 616.162 383.215 611.818 c 380.746 605.271 374.941 598.962 369.48 596.9 c 364.199 594.904 355.074 596.13 350.395 599.466 c 345.863 602.693 341.008 610.396 340.176 615.669 c 339.379 620.747 338.191 621.384 337.57 617.072 c 336.73 611.228 332.961 604.634 328.031 600.376 c 323.828 596.744 322.699 596.392 315.344 596.408 c 308.836 596.419 306.512 596.986 303.359 599.326 c 298.766 602.74 293.938 610.447 293.113 615.685 c 292.367 620.435 291.109 620.435 290.363 615.685 c 289.539 610.447 284.715 602.74 280.117 599.326 c 276.969 596.986 274.641 596.419 268.133 596.408 c 260.777 596.392 259.652 596.744 255.445 600.376 c 250.508 604.638 246.75 611.228 245.902 617.095 c 245.238 621.72 244.117 621.72 243.453 617.095 c 242.609 611.228 238.848 604.638 233.91 600.376 c 229.707 596.744 228.578 596.392 221.223 596.408 c 214.715 596.419 212.387 596.986 209.238 599.326 c 204.641 602.74 199.816 610.447 198.992 615.685 c 198.246 620.435 196.988 620.435 196.242 615.685 c 195.418 610.447 190.594 602.74 185.996 599.326 c 182.848 596.986 180.52 596.419 174.012 596.408 c 166.656 596.392 165.527 596.744 161.324 600.376 c 156.387 604.638 152.625 611.228 151.781 617.095 c 151.117 621.72 149.996 621.72 149.332 617.095 c 148.484 611.228 144.727 604.638 139.789 600.376 c 135.582 596.744 134.457 596.392 127.102 596.408 c 120.594 596.419 118.266 596.986 115.117 599.326 c 110.52 602.74 105.695 610.447 104.871 615.685 c 104.125 620.435 102.867 620.435 102.121 615.685 c 101.289 610.4 96.438 602.697 91.902 599.466 c 87.219 596.13 78.098 594.904 72.816 596.9 c 64.484 600.048 58.195 609.787 56.84 621.654 c 56.25 626.787 l 50.461 626.806 l 43.023 626.83 37.785 630.083 30.781 639.037 c 27.66 643.025 24.805 645.662 24.047 645.251 c 22.281 644.306 17.469 634.283 16.113 628.728 c 14.945 623.955 14.648 613.072 15.594 609.646 c 15.953 608.337 17.301 607.564 19.223 607.564 c 20.906 607.564 24.781 605.806 27.832 603.658 c 33.062 599.974 33.461 599.88 34.922 602.017 c 35.773 603.259 36.746 605.56 37.078 607.126 c 37.59 609.517 37.379 609.865 35.762 609.271 c 33.148 608.318 31.191 610.88 30.477 616.193 c 29.738 621.705 27.996 623.826 25.184 622.65 c 23.152 621.798 23.117 621.88 24.586 624.021 c 26.773 627.208 32.398 625.56 35.871 620.712 c 39.312 615.908 39.617 607.185 36.539 601.716 c 34.527 598.146 l 38.691 592.451 l 42.395 598.22 l 44.805 601.97 46.305 605.767 46.684 609.064 c 47.324 614.673 48.906 615.99 48.906 610.915 c 48.906 605.576 46.91 594.091 45.031 588.595 c 43.262 583.427 l 45.758 573.478 l 49.039 560.388 49.441 539.716 46.617 529.087 c 45.066 523.255 44.965 521.509 45.914 517.259 c 46.531 514.517 47.539 505.322 48.16 496.826 c 49.352 480.474 48.285 456.076 45.914 445.505 c 44.965 441.255 45.066 439.509 46.617 433.677 c 47.887 428.9 48.434 423.466 48.434 415.662 c 48.434 407.861 47.887 402.427 46.617 397.65 c 45.066 391.818 44.965 390.072 45.914 385.818 c 46.531 383.076 47.539 373.88 48.16 365.388 c 49.352 349.037 48.285 324.638 45.914 314.068 c 44.965 309.814 45.066 308.072 46.617 302.236 c 47.887 297.458 48.434 292.025 48.434 284.224 c 48.434 276.419 47.887 270.986 46.617 266.208 c 45.066 260.376 44.965 258.63 45.914 254.38 c 46.531 251.638 47.539 242.443 48.16 233.947 c 49.352 217.599 48.41 195.439 45.988 182.88 c 44.98 177.65 45.047 176.052 46.484 171.052 c 49.566 160.298 49.285 134.404 45.891 116.681 c 45.008 112.076 45.094 110.169 46.387 105.662 c 47.242 102.665 48.211 97.052 48.539 93.189 c 49.129 86.162 l 42.191 85.337 l 35.566 84.548 25.727 80.845 25.168 78.927 c 24.832 77.771 37.891 61.298 41.754 58.009 c 43.355 56.646 45.648 55.525 46.844 55.525 c 50.062 55.517 48.508 53.326 44.547 52.287 c 41.309 51.439 41.203 51.255 42.727 49.181 c 44.246 47.107 44.57 47.326 48.047 52.747 c 50.449 56.49 51.953 60.298 52.328 63.591 c 52.973 69.197 54.551 70.513 54.551 65.439 c 54.551 60.103 52.559 48.619 50.68 43.119 c 48.918 37.974 48.922 37.908 51.172 28.662 c 52.414 23.552 53.734 15.599 54.098 10.99 c 54.766 2.611 l 59.129 3.337 l 61.531 3.736 64.742 4.728 66.27 5.54 c h 113.332 5.408 m 116.105 7.021 l 111.215 10.919 l 106.234 14.892 102.23 21.744 101.102 28.224 c 100.488 31.732 100.414 31.654 98.094 25.15 c 95.551 18.029 89.555 10.826 86.176 10.833 c 84.324 10.841 84.355 11.025 86.699 13.794 c 91.316 19.24 92.895 28.091 91.238 39.236 c 89.777 49.056 85.691 54.763 78.66 56.802 c 65.539 60.607 55.492 50.966 55.492 34.572 c 55.492 26.247 57.098 21.689 62.16 15.638 c 68.055 8.591 70.566 7.779 74.191 11.74 c 77.117 14.935 79.098 19.15 80.355 24.849 c 80.883 27.244 80.676 27.587 79.059 26.994 c 76.441 26.04 74.488 28.603 73.773 33.915 c 73.035 39.423 71.293 41.548 68.48 40.369 c 66.449 39.517 66.414 39.603 67.883 41.744 c 70.07 44.931 75.695 43.283 79.164 38.435 c 81.344 35.392 81.848 33.544 81.848 28.587 c 81.848 21.392 80.883 18.408 76.453 11.939 c 73.168 7.134 l 78.215 5.751 l 80.988 4.99 84.316 4.099 85.613 3.771 c 90.18 2.611 110.586 3.818 113.332 5.408 c h 170.652 5.622 m 175.223 7.158 l 171.941 11.951 l 167.523 18.408 166.559 21.392 166.559 28.587 c 166.559 33.544 167.062 35.392 169.238 38.435 c 172.711 43.283 178.332 44.931 180.523 41.744 c 181.992 39.603 181.953 39.517 179.926 40.369 c 177.113 41.548 175.371 39.423 174.633 33.915 c 173.918 28.603 171.961 26.04 169.348 26.994 c 167.727 27.587 167.52 27.244 168.051 24.849 c 169.309 19.15 171.289 14.935 174.211 11.74 c 177.836 7.779 180.348 8.591 186.242 15.638 c 191.305 21.689 192.91 26.247 192.91 34.572 c 192.91 50.966 182.867 60.607 169.746 56.802 c 162.711 54.763 158.625 49.056 157.168 39.236 c 155.512 28.091 157.09 19.24 161.703 13.794 c 164.047 11.025 164.082 10.841 162.227 10.833 c 158.773 10.826 152.805 18.056 150.426 25.134 c 149.203 28.775 147.992 31.751 147.734 31.751 c 147.473 31.751 146.262 28.775 145.039 25.134 c 142.66 18.056 136.691 10.826 133.238 10.833 c 131.383 10.841 131.418 11.025 133.762 13.794 c 138.375 19.24 139.957 28.091 138.297 39.236 c 136.84 49.056 132.754 54.763 125.719 56.802 c 112.602 60.607 102.555 50.966 102.555 34.572 c 102.555 26.247 104.16 21.689 109.223 15.638 c 115.117 8.591 117.629 7.779 121.254 11.74 c 124.176 14.935 126.16 19.15 127.414 24.849 c 127.945 27.244 127.738 27.587 126.117 26.994 c 123.504 26.04 121.547 28.603 120.836 33.915 c 120.094 39.423 118.352 41.548 115.543 40.369 c 113.512 39.517 113.473 39.603 114.945 41.744 c 117.133 44.931 122.758 43.283 126.227 38.435 c 128.406 35.392 128.91 33.544 128.91 28.587 c 128.91 21.392 127.941 18.408 123.516 11.939 c 120.227 7.134 l 125.273 5.751 l 128.051 4.99 131.379 4.091 132.672 3.755 c 136.969 2.634 166.012 4.06 170.652 5.622 c h 207.453 5.443 m 210.227 7.021 l 205.367 10.896 l 200.777 14.556 195.734 22.591 195.734 26.247 c 195.734 27.165 195.312 27.915 194.793 27.915 c 194.277 27.915 193.852 27.165 193.852 26.247 c 193.852 22.591 188.812 14.556 184.219 10.896 c 178.984 6.72 179.031 6.501 185.852 3.837 c 188.992 2.611 204.488 3.763 207.453 5.443 c h 264.777 5.622 m 269.344 7.158 l 266.062 11.951 l 261.645 18.408 260.68 21.392 260.68 28.587 c 260.68 33.544 261.184 35.392 263.359 38.435 c 266.832 43.283 272.457 44.931 274.645 41.744 c 276.113 39.603 276.078 39.517 274.047 40.369 c 271.234 41.548 269.492 39.423 268.754 33.915 c 268.039 28.603 266.082 26.04 263.469 26.994 c 261.848 27.587 261.641 27.244 262.172 24.849 c 263.43 19.15 265.41 14.935 268.332 11.74 c 271.957 7.779 274.469 8.591 280.363 15.638 c 285.426 21.689 287.031 26.247 287.031 34.572 c 287.031 50.966 276.988 60.607 263.867 56.802 c 256.836 54.763 252.75 49.056 251.289 39.236 c 249.633 28.091 251.211 19.24 255.824 13.794 c 258.172 11.025 258.203 10.841 256.348 10.833 c 252.895 10.826 246.93 18.056 244.551 25.134 c 243.324 28.775 242.113 31.751 241.855 31.751 c 241.594 31.751 240.383 28.775 239.16 25.134 c 236.781 18.056 230.812 10.826 227.359 10.833 c 225.508 10.841 225.539 11.025 227.883 13.794 c 232.5 19.24 234.078 28.091 232.422 39.236 c 230.961 49.056 226.875 54.763 219.84 56.802 c 206.723 60.607 196.676 50.966 196.676 34.572 c 196.676 26.247 198.281 21.689 203.344 15.638 c 209.238 8.591 211.75 7.779 215.375 11.74 c 218.297 14.935 220.281 19.15 221.539 24.849 c 222.066 27.244 221.859 27.587 220.238 26.994 c 217.625 26.04 215.672 28.603 214.957 33.915 c 214.215 39.423 212.473 41.548 209.664 40.369 c 207.633 39.517 207.594 39.603 209.066 41.744 c 211.254 44.931 216.879 43.283 220.348 38.435 c 222.527 35.392 223.031 33.544 223.031 28.587 c 223.031 21.392 222.062 18.408 217.637 11.939 c 214.352 7.134 l 219.395 5.751 l 222.172 4.99 225.5 4.091 226.797 3.755 c 231.09 2.634 260.133 4.06 264.777 5.622 c h 301.574 5.443 m 304.348 7.021 l 299.492 10.896 l 294.898 14.556 289.855 22.591 289.855 26.247 c 289.855 27.165 289.434 27.915 288.914 27.915 c 288.398 27.915 287.973 27.165 287.973 26.247 c 287.973 22.591 282.934 14.556 278.34 10.896 c 273.105 6.72 273.156 6.501 279.973 3.837 c 283.113 2.611 298.613 3.763 301.574 5.443 c h 358.898 5.622 m 363.465 7.158 l 360.184 11.951 l 355.766 18.408 354.801 21.392 354.801 28.587 c 354.801 33.544 355.305 35.392 357.484 38.435 c 360.953 43.283 366.578 44.931 368.766 41.744 c 370.234 39.603 370.199 39.517 368.168 40.369 c 365.355 41.548 363.613 39.423 362.875 33.915 c 362.16 28.603 360.207 26.04 357.59 26.994 c 355.969 27.587 355.766 27.244 356.293 24.849 c 357.551 19.15 359.531 14.935 362.457 11.74 c 366.078 7.779 368.59 8.591 374.488 15.638 c 379.551 21.689 381.156 26.247 381.156 34.572 c 381.156 50.966 371.109 60.607 357.988 56.802 c 350.957 54.763 346.871 49.056 345.41 39.236 c 343.754 28.091 345.332 19.24 349.949 13.794 c 352.293 11.025 352.324 10.841 350.473 10.833 c 347.016 10.826 341.051 18.056 338.672 25.134 c 337.449 28.775 336.234 31.751 335.977 31.751 c 335.719 31.751 334.504 28.775 333.281 25.134 c 330.902 18.056 324.934 10.826 321.48 10.833 c 319.629 10.841 319.66 11.025 322.004 13.794 c 326.621 19.24 328.199 28.091 326.543 39.236 c 325.082 49.056 320.996 54.763 313.965 56.802 c 300.844 60.607 290.797 50.966 290.797 34.572 c 290.797 26.247 292.402 21.689 297.465 15.638 c 303.359 8.591 305.871 7.779 309.496 11.74 c 312.422 14.935 314.402 19.15 315.66 24.849 c 316.188 27.244 315.98 27.587 314.363 26.994 c 311.746 26.04 309.793 28.603 309.078 33.915 c 308.34 39.423 306.598 41.548 303.785 40.369 c 301.754 39.517 301.719 39.603 303.188 41.744 c 305.375 44.931 311 43.283 314.469 38.435 c 316.648 35.392 317.152 33.544 317.152 28.587 c 317.152 21.392 316.188 18.408 311.758 11.939 c 308.473 7.134 l 313.52 5.751 l 316.293 4.99 319.621 4.091 320.918 3.755 c 325.211 2.634 354.254 4.06 358.898 5.622 c h 394.629 4.322 m 397.57 5.083 401.523 6.607 403.414 7.708 c 406.852 9.716 l 400.465 17.83 l 392.816 27.548 387.109 33.173 384.895 33.173 c 383.82 33.173 383.066 31.744 382.664 28.923 c 381.684 22.076 377.75 15.111 372.496 10.919 c 367.762 7.146 367.68 6.978 369.906 5.798 c 375.707 2.72 386.035 2.107 394.629 4.322 c h 25.223 26.076 m 27.191 28.001 29.645 34.22 28.863 35.31 c 28.684 35.56 26.926 33.705 24.957 31.185 c 22.043 27.458 20.629 26.603 17.383 26.603 c 14.773 26.603 12.535 27.544 10.918 29.322 c 9.016 31.412 8.574 31.552 9.02 29.939 c 10.531 24.439 21 21.943 25.223 26.076 c h 14.336 59.509 m 16.523 60.896 19.562 62.044 21.09 62.06 c 23.859 62.091 l 20.668 66.689 l 18.914 69.22 16.926 71.29 16.254 71.29 c 15.582 71.29 13.719 68.779 12.109 65.705 c 9.18 60.103 8.32 57.693 7.074 51.576 c 6.52 48.857 6.746 49.04 8.379 52.638 c 9.484 55.072 12.105 58.095 14.336 59.509 c h 421.629 59.427 m 421.629 61.708 416.18 64.72 412.051 64.72 c 408.383 64.72 408.195 64.564 409.887 62.939 c 413.938 59.056 421.629 56.759 421.629 59.427 c h 411.508 105.841 m 414.969 112.892 414.859 115.439 411.055 116.501 c 406.152 117.872 401.164 123.365 398.164 130.701 c 395.367 137.533 l 394.258 133.658 l 391.488 123.986 392.328 99.333 395.828 87.638 c 397.301 82.724 l 403.109 91.642 l 406.305 96.548 410.086 102.935 411.508 105.841 c h 31.914 91.63 m 35.223 94.017 40.953 103.193 42.16 108.04 c 43.594 113.771 38.633 121.271 31.336 124.412 c 29.621 125.15 29.375 124.861 29.801 122.599 c 30.484 118.947 28.648 116.216 24.844 115.22 c 20.898 114.189 19.375 111.755 20.223 107.83 c 20.832 104.994 20.77 104.943 19.238 106.994 c 16.957 110.048 18.137 117.904 21.605 122.751 c 23.785 125.79 25.109 126.497 28.656 126.497 c 33.812 126.497 35.949 125.146 40.582 118.966 c 44.023 114.372 l 45.266 122.08 l 46.918 132.298 46.953 165.251 45.32 170.462 c 44.102 174.337 l 41.309 167.505 l 38.465 160.552 33.559 154.958 28.918 153.384 c 26.406 152.529 26.461 152.423 31.121 149.181 c 36.219 145.634 41.379 137.259 41.371 132.54 c 41.367 129.955 41.234 129.997 39.254 133.271 c 35.352 139.716 29.012 141.923 21.035 139.611 c 14 137.572 9.914 131.865 8.453 122.044 c 6.578 109.431 9.527 97.63 15.828 92.529 c 19.941 89.201 27.934 88.751 31.914 91.63 c h 423.504 121.392 m 429.91 126.419 432.91 138.228 431.016 150.958 c 429.559 160.783 425.473 166.486 418.438 168.525 c 410.457 170.837 404.121 168.634 400.219 162.189 c 398.238 158.915 398.105 158.869 398.102 161.458 c 398.094 166.283 403.27 174.615 408.34 177.939 c 410.945 179.646 413.078 181.337 413.078 181.701 c 413.078 182.06 410.945 183.755 408.34 185.462 c 403.27 188.787 398.094 197.119 398.102 201.943 c 398.105 204.529 398.238 204.486 400.219 201.212 c 404.121 194.767 410.457 192.56 418.438 194.876 c 425.473 196.915 429.559 202.619 431.016 212.443 c 433.742 230.763 426.836 244.79 415.098 244.79 c 409.141 244.79 405.875 242.548 401.543 235.478 c 396.496 227.247 395.914 223.74 398.75 218.677 c 401.035 214.595 404.055 211.83 408.137 210.072 c 409.852 209.333 410.098 209.622 409.672 211.884 c 408.988 215.537 410.824 218.267 414.629 219.263 c 418.574 220.298 420.094 222.728 419.25 226.654 c 418.641 229.49 418.699 229.54 420.234 227.49 c 422.516 224.435 421.336 216.58 417.867 211.732 c 415.688 208.693 414.363 207.99 410.812 207.99 c 405.66 207.99 403.523 209.337 398.891 215.521 c 395.449 220.111 l 394.184 212.408 l 393.383 207.529 392.922 196.263 392.922 181.701 c 392.922 167.138 393.383 155.872 394.184 150.994 c 395.449 143.29 l 398.891 147.88 l 403.523 154.064 405.66 155.412 410.812 155.412 c 414.363 155.412 415.688 154.708 417.867 151.665 c 421.336 146.822 422.516 138.966 420.234 135.912 c 418.699 133.857 418.641 133.908 419.25 136.744 c 420.094 140.669 418.574 143.103 414.629 144.138 c 410.824 145.134 408.988 147.865 409.672 151.517 c 410.098 153.779 409.852 154.068 408.137 153.33 c 404.055 151.572 401.035 148.806 398.75 144.724 c 396.84 141.314 396.57 139.915 397.285 137.06 c 398.477 132.287 403.449 124.08 406.965 121.087 c 411.023 117.63 418.898 117.775 423.504 121.392 c h 31.914 157.349 m 35.223 159.74 40.953 168.915 42.16 173.759 c 43.594 179.49 38.633 186.99 31.336 190.13 c 29.621 190.869 29.375 190.583 29.801 188.318 c 30.484 184.669 28.648 181.939 24.844 180.939 c 20.898 179.908 19.375 177.474 20.223 173.548 c 20.832 170.712 20.77 170.662 19.238 172.712 c 16.957 175.771 18.137 183.622 21.605 188.47 c 23.785 191.513 25.109 192.216 28.656 192.216 c 33.812 192.216 35.949 190.869 40.582 184.685 c 44.023 180.095 l 45.285 187.798 l 46.988 198.169 46.988 238.837 45.285 249.208 c 44.023 256.912 l 40.582 252.322 l 35.949 246.142 33.812 244.79 28.656 244.79 c 25.109 244.79 23.785 245.494 21.605 248.537 c 18.137 253.384 16.957 261.236 19.238 264.294 c 20.77 266.345 20.832 266.294 20.223 263.458 c 19.375 259.533 20.898 257.099 24.844 256.068 c 28.648 255.068 30.484 252.337 29.801 248.689 c 29.375 246.427 29.621 246.138 31.336 246.876 c 35.418 248.63 38.434 251.4 40.723 255.482 c 43.559 260.544 42.977 264.052 37.93 272.283 c 33.598 279.353 30.332 281.595 24.371 281.595 c 12.633 281.595 5.73 267.564 8.453 249.244 c 9.914 239.423 14 233.716 21.035 231.677 c 29.012 229.365 35.352 231.568 39.254 238.013 c 41.234 241.287 41.367 241.333 41.371 238.744 c 41.379 233.923 36.199 225.587 31.133 222.267 c 28.523 220.56 26.395 218.865 26.395 218.505 c 26.395 218.142 28.523 216.451 31.133 214.74 c 36.199 211.419 41.379 203.083 41.371 198.263 c 41.367 195.673 41.234 195.72 39.254 198.994 c 35.352 205.439 29.012 207.642 21.035 205.33 c 14 203.29 9.914 197.583 8.453 187.763 c 6.578 175.15 9.527 163.349 15.828 158.247 c 19.941 154.919 27.934 154.474 31.914 157.349 c h 404.434 242.771 m 406.363 244.607 408.484 246.107 409.141 246.107 c 409.797 246.107 410.332 246.697 410.332 247.419 c 410.332 248.142 409.797 248.736 409.141 248.736 c 406.52 248.736 400.766 255.775 398.145 262.189 c 395.367 268.974 l 394.18 265.099 l 393.469 262.79 392.988 255.63 392.988 247.419 c 392.988 239.208 393.469 232.048 394.18 229.744 c 395.367 225.865 l 398.145 232.654 l 399.672 236.384 402.5 240.939 404.434 242.771 c h 423.504 252.833 m 429.91 257.861 432.91 269.669 431.016 282.4 c 429.559 292.22 425.473 297.927 418.438 299.966 c 410.457 302.279 404.121 300.076 400.219 293.63 c 398.238 290.357 398.105 290.31 398.102 292.9 c 398.094 297.72 403.27 306.056 408.34 309.376 c 410.945 311.083 413.078 312.779 413.078 313.142 c 413.078 313.501 410.945 315.197 408.34 316.904 c 403.27 320.224 398.094 328.56 398.102 333.38 c 398.105 335.97 398.238 335.923 400.219 332.65 c 404.121 326.205 410.457 324.001 418.438 326.314 c 425.473 328.353 429.559 334.06 431.016 343.88 c 433.742 362.201 426.836 376.232 415.098 376.232 c 409.141 376.232 405.875 373.99 401.543 366.919 c 396.496 358.689 395.914 355.181 398.75 350.119 c 401.035 346.037 404.055 343.267 408.137 341.513 c 409.852 340.775 410.098 341.06 409.672 343.326 c 408.988 346.974 410.824 349.705 414.629 350.705 c 418.574 351.736 420.094 354.169 419.25 358.095 c 418.641 360.931 418.699 360.982 420.234 358.931 c 422.516 355.872 421.336 348.021 417.867 343.173 c 415.688 340.13 414.363 339.427 410.812 339.427 c 405.66 339.427 403.523 340.779 398.891 346.958 c 395.449 351.548 l 394.184 343.845 l 393.383 338.97 392.922 327.701 392.922 313.142 c 392.922 298.58 393.383 287.31 394.184 282.435 c 395.449 274.732 l 398.891 279.322 l 403.523 285.505 405.66 286.853 410.812 286.853 c 414.363 286.853 415.688 286.15 417.867 283.107 c 421.336 278.259 422.516 270.408 420.234 267.349 c 418.699 265.298 418.641 265.349 419.25 268.185 c 420.094 272.111 418.574 274.544 414.629 275.576 c 410.824 276.576 408.988 279.306 409.672 282.955 c 410.098 285.22 409.852 285.505 408.137 284.767 c 404.055 283.013 401.035 280.244 398.75 276.162 c 396.84 272.755 396.57 271.353 397.285 268.497 c 398.477 263.724 403.449 255.521 406.965 252.529 c 411.023 249.072 418.898 249.216 423.504 252.833 c h 46.102 271.201 m 47.406 278.802 46.91 295.974 45.215 301.9 c 44.102 305.779 l 41.328 298.99 l 38.707 292.58 32.949 285.537 30.332 285.537 c 29.676 285.537 29.141 284.947 29.141 284.224 c 29.141 283.501 29.711 282.908 30.41 282.908 c 32.945 282.908 39.133 275.283 41.367 269.404 c 42.625 266.091 43.945 263.63 44.301 263.939 c 44.66 264.247 45.469 267.517 46.102 271.201 c h 31.914 288.79 m 35.223 291.177 40.953 300.353 42.16 305.201 c 43.594 310.931 38.633 318.431 31.336 321.572 c 29.621 322.31 29.375 322.021 29.801 319.759 c 30.484 316.107 28.648 313.376 24.844 312.38 c 20.898 311.345 19.375 308.915 20.223 304.99 c 20.832 302.154 20.77 302.103 19.238 304.154 c 16.957 307.208 18.137 315.064 21.605 319.912 c 23.785 322.951 25.109 323.654 28.656 323.654 c 33.812 323.654 35.949 322.306 40.582 316.126 c 44.023 311.533 l 45.285 319.236 l 46.988 329.607 46.988 370.279 45.285 380.65 c 44.023 388.353 l 40.582 383.763 l 35.949 377.58 33.812 376.232 28.656 376.232 c 25.109 376.232 23.785 376.935 21.605 379.978 c 18.137 384.822 16.957 392.677 19.238 395.732 c 20.77 397.787 20.832 397.736 20.223 394.9 c 19.375 390.974 20.898 388.54 24.844 387.505 c 28.648 386.509 30.484 383.779 29.801 380.126 c 29.375 377.865 29.621 377.576 31.336 378.314 c 35.418 380.072 38.434 382.837 40.723 386.919 c 43.559 391.982 42.977 395.49 37.93 403.724 c 33.598 410.79 30.332 413.033 24.371 413.033 c 12.633 413.033 5.73 399.005 8.453 380.685 c 9.914 370.861 14 365.158 21.035 363.119 c 29.012 360.806 35.352 363.009 39.254 369.455 c 41.234 372.728 41.367 372.775 41.371 370.185 c 41.379 365.361 36.199 357.029 31.133 353.705 c 28.523 351.997 26.395 350.306 26.395 349.943 c 26.395 349.583 28.523 347.888 31.133 346.181 c 36.199 342.857 41.379 334.525 41.371 329.701 c 41.367 327.115 41.234 327.158 39.254 330.431 c 35.352 336.876 29.012 339.083 21.035 336.767 c 14 334.728 9.914 329.025 8.453 319.201 c 6.578 306.591 9.527 294.79 15.828 289.689 c 19.941 286.361 27.934 285.912 31.914 288.79 c h 404.434 374.212 m 406.363 376.044 408.484 377.544 409.141 377.544 c 409.797 377.544 410.332 378.138 410.332 378.861 c 410.332 379.583 409.797 380.173 409.141 380.173 c 406.52 380.173 400.766 387.216 398.145 393.626 c 395.367 400.415 l 394.18 396.537 l 393.469 394.232 392.988 387.072 392.988 378.861 c 392.988 370.65 393.469 363.49 394.18 361.181 c 395.367 357.306 l 398.145 364.091 l 399.672 367.826 402.5 372.376 404.434 374.212 c h 423.504 384.271 m 429.91 389.298 432.91 401.107 431.016 413.837 c 429.559 423.662 425.473 429.365 418.438 431.404 c 410.457 433.72 404.121 431.513 400.219 425.068 c 398.238 421.794 398.105 421.751 398.102 424.337 c 398.094 429.162 403.27 437.494 408.34 440.818 c 410.945 442.525 413.078 444.22 413.078 444.58 c 413.078 444.943 410.945 446.634 408.34 448.341 c 403.27 451.665 398.094 459.997 398.102 464.822 c 398.105 467.412 398.238 467.365 400.219 464.091 c 404.121 457.646 410.457 455.443 418.438 457.755 c 425.473 459.794 429.559 465.497 431.016 475.322 c 433.742 493.642 426.836 507.669 415.098 507.669 c 409.141 507.669 405.875 505.427 401.543 498.361 c 396.496 490.126 395.914 486.619 398.75 481.556 c 401.035 477.474 404.055 474.708 408.137 472.951 c 409.852 472.212 410.098 472.501 409.672 474.763 c 408.988 478.415 410.824 481.146 414.629 482.142 c 418.574 483.177 420.094 485.611 419.25 489.537 c 418.641 492.372 418.699 492.423 420.234 490.369 c 422.516 487.314 421.336 479.458 417.867 474.615 c 415.688 471.572 414.363 470.869 410.812 470.869 c 405.66 470.869 403.523 472.216 398.891 478.4 c 395.449 482.99 l 394.184 475.287 l 393.383 470.408 392.922 459.142 392.922 444.58 c 392.922 430.021 393.383 418.751 394.184 413.872 c 395.449 406.169 l 398.891 410.763 l 403.523 416.943 405.66 418.29 410.812 418.29 c 414.363 418.29 415.688 417.587 417.867 414.548 c 421.336 409.701 422.516 401.845 420.234 398.79 c 418.699 396.74 418.641 396.79 419.25 399.626 c 420.094 403.552 418.574 405.982 414.629 407.017 c 410.824 408.013 408.988 410.744 409.672 414.396 c 410.098 416.658 409.852 416.947 408.137 416.208 c 404.055 414.451 401.035 411.685 398.75 407.603 c 396.84 404.197 396.57 402.794 397.285 399.939 c 398.477 395.165 403.449 386.962 406.965 383.966 c 411.023 380.509 418.898 380.654 423.504 384.271 c h 46.102 402.642 m 47.406 410.244 46.91 427.415 45.215 433.341 c 44.102 437.216 l 41.328 430.431 l 38.707 424.017 32.949 416.978 30.332 416.978 c 29.676 416.978 29.141 416.384 29.141 415.662 c 29.141 414.939 29.711 414.349 30.41 414.349 c 32.945 414.349 39.133 406.724 41.367 400.841 c 42.625 397.529 43.945 395.072 44.301 395.38 c 44.66 395.689 45.469 398.955 46.102 402.642 c h 31.914 420.228 m 35.223 422.619 40.953 431.794 42.16 436.638 c 43.594 442.369 38.633 449.872 31.336 453.009 c 29.621 453.747 29.375 453.462 29.801 451.201 c 30.484 447.548 28.648 444.818 24.844 443.822 c 20.898 442.787 19.375 440.353 20.223 436.427 c 20.832 433.591 20.77 433.54 19.238 435.595 c 16.957 438.65 18.137 446.505 21.605 451.349 c 23.785 454.392 25.109 455.095 28.656 455.095 c 33.812 455.095 35.949 453.747 40.582 447.564 c 44.023 442.974 l 45.285 450.677 l 46.988 461.048 46.988 501.72 45.285 512.087 c 44.023 519.794 l 40.582 515.201 l 35.949 509.021 33.812 507.669 28.656 507.669 c 25.109 507.669 23.785 508.372 21.605 511.415 c 18.137 516.263 16.957 524.119 19.238 527.173 c 20.77 529.224 20.832 529.173 20.223 526.337 c 19.375 522.412 20.898 519.978 24.844 518.947 c 28.648 517.951 30.484 515.22 29.801 511.568 c 29.375 509.306 29.621 509.017 31.336 509.755 c 35.418 511.513 38.434 514.279 40.723 518.361 c 43.559 523.423 42.977 526.931 37.93 535.162 c 33.598 542.232 30.332 544.474 24.371 544.474 c 12.633 544.474 5.73 530.447 8.453 512.122 c 9.914 502.302 14 496.595 21.035 494.556 c 29.012 492.244 35.352 494.451 39.254 500.896 c 41.234 504.165 41.367 504.212 41.371 501.626 c 41.379 496.802 36.199 488.47 31.133 485.146 c 28.523 483.439 26.395 481.744 26.395 481.384 c 26.395 481.021 28.523 479.33 31.133 477.619 c 36.199 474.298 41.379 465.966 41.371 461.142 c 41.367 458.552 41.234 458.599 39.254 461.872 c 35.352 468.318 29.012 470.521 21.035 468.208 c 14 466.169 9.914 460.462 8.453 450.642 c 6.578 438.029 9.527 426.232 15.828 421.126 c 19.941 417.798 27.934 417.353 31.914 420.228 c h 404.469 505.619 m 406.398 507.38 409.137 509.22 410.555 509.701 c 413.066 510.552 413.012 510.658 408.352 513.9 c 403.254 517.447 398.094 525.826 398.102 530.54 c 398.105 533.13 398.238 533.083 400.219 529.81 c 404.121 523.365 410.457 521.162 418.438 523.474 c 425.473 525.513 429.559 531.22 431.016 541.04 c 433.742 559.361 426.836 573.392 415.098 573.392 c 409.141 573.392 405.875 571.15 401.543 564.08 c 396.496 555.845 395.914 552.337 398.75 547.279 c 401.035 543.197 404.055 540.427 408.137 538.673 c 409.852 537.935 410.098 538.22 409.672 540.486 c 408.988 544.134 410.824 546.865 414.629 547.865 c 418.574 548.896 420.094 551.33 419.25 555.255 c 418.641 558.091 418.699 558.142 420.234 556.087 c 422.516 553.033 421.336 545.181 417.867 540.333 c 415.688 537.29 414.363 536.587 410.812 536.587 c 405.66 536.587 403.523 537.935 398.891 544.119 c 395.449 548.708 l 394.207 541.005 l 392.555 530.787 392.52 497.833 394.152 492.622 c 395.367 488.747 l 398.164 495.58 l 399.699 499.337 402.535 503.853 404.469 505.619 c h 45.965 533.205 m 48.004 544.513 46.887 564.603 43.609 575.56 c 42.172 580.361 l 36.363 571.443 l 29.391 560.74 25.375 552.787 25.375 549.681 c 25.375 548.126 26.391 547.13 28.559 546.56 c 33.211 545.341 38.75 539.165 41.367 532.283 c 42.625 528.97 43.938 526.501 44.281 526.802 c 44.625 527.099 45.383 529.982 45.965 533.205 c h 427.363 597.38 m 430.293 602.978 431.152 605.392 432.398 611.509 c 432.953 614.228 432.727 614.044 431.094 610.447 c 428.918 605.654 422.73 601.068 418.383 601.021 c 415.609 600.994 l 418.805 596.392 l 420.559 593.865 422.547 591.794 423.219 591.794 c 423.891 591.794 425.754 594.306 427.363 597.38 c h 29.586 600.13 m 25.516 603.997 17.844 606.31 17.844 603.665 c 17.844 601.333 22.969 598.47 27.23 598.415 c 31.043 598.369 31.266 598.533 29.586 600.13 c h 81.859 606.376 m 88.523 608.372 92.637 614.263 94.062 623.849 c 95.719 634.99 94.141 643.841 89.523 649.29 c 87.18 652.056 87.148 652.244 89 652.247 c 92.453 652.259 98.422 645.029 100.801 637.951 c 102.023 634.31 103.238 631.333 103.496 631.333 c 103.754 631.333 104.969 634.31 106.191 637.951 c 108.57 645.029 114.535 652.259 117.992 652.247 c 119.844 652.244 119.812 652.056 117.469 649.29 c 112.852 643.841 111.273 634.99 112.93 623.849 c 114.391 614.025 118.477 608.322 125.508 606.283 c 138.629 602.478 148.676 612.119 148.676 628.513 c 148.676 636.833 147.07 641.392 142.004 647.443 c 136.109 654.49 133.598 655.306 129.973 651.345 c 127.051 648.15 125.07 643.935 123.812 638.236 c 123.285 635.837 123.488 635.497 125.109 636.087 c 127.723 637.044 129.68 634.482 130.395 629.169 c 131.133 623.658 132.875 621.537 135.688 622.712 c 137.719 623.564 137.754 623.482 136.285 621.341 c 134.098 618.154 128.473 619.802 125 624.65 c 122.824 627.689 122.32 629.54 122.32 634.497 c 122.32 641.693 123.285 644.673 127.711 651.146 c 131 655.951 l 125.484 657.716 l 121.992 658.837 113.922 659.482 103.496 659.482 c 93.07 659.482 85 658.837 81.508 657.716 c 75.992 655.951 l 79.277 651.146 l 83.707 644.673 84.672 641.693 84.672 634.497 c 84.672 629.54 84.168 627.689 81.988 624.65 c 78.52 619.802 72.895 618.154 70.707 621.341 c 69.238 623.482 69.273 623.564 71.305 622.712 c 74.113 621.537 75.855 623.658 76.598 629.169 c 77.312 634.482 79.266 637.044 81.883 636.087 c 83.5 635.497 83.707 635.837 83.18 638.236 c 81.922 643.935 79.941 648.15 77.016 651.345 c 73.391 655.306 70.879 654.49 64.984 647.443 c 59.922 641.392 58.316 636.833 58.316 628.513 c 58.316 617.076 62.977 608.837 70.957 606.169 c 75.188 604.759 76.535 604.783 81.859 606.376 c h 175.98 606.376 m 182.645 608.372 186.758 614.263 188.184 623.849 c 189.84 634.99 188.262 643.841 183.645 649.29 c 181.301 652.056 181.27 652.244 183.121 652.247 c 186.578 652.259 192.543 645.029 194.922 637.951 c 196.145 634.31 197.359 631.333 197.617 631.333 c 197.875 631.333 199.09 634.31 200.312 637.951 c 202.691 645.029 208.656 652.259 212.113 652.247 c 213.965 652.244 213.934 652.056 211.59 649.29 c 206.973 643.841 205.395 634.99 207.051 623.849 c 208.512 614.025 212.598 608.322 219.629 606.283 c 232.75 602.478 242.797 612.119 242.797 628.513 c 242.797 636.833 241.191 641.392 236.129 647.443 c 230.234 654.49 227.723 655.306 224.098 651.345 c 221.172 648.15 219.191 643.935 217.934 638.236 c 217.406 635.837 217.613 635.497 219.23 636.087 c 221.848 637.044 223.801 634.482 224.516 629.169 c 225.254 623.658 226.996 621.537 229.809 622.712 c 231.84 623.564 231.875 623.482 230.406 621.341 c 228.219 618.154 222.594 619.802 219.125 624.65 c 216.945 627.689 216.441 629.54 216.441 634.497 c 216.441 641.693 217.406 644.673 221.836 651.146 c 225.121 655.951 l 219.605 657.716 l 216.113 658.837 208.043 659.482 197.617 659.482 c 187.191 659.482 179.121 658.837 175.629 657.716 c 170.113 655.951 l 173.398 651.146 l 177.828 644.673 178.793 641.693 178.793 634.497 c 178.793 629.54 178.289 627.689 176.109 624.65 c 172.641 619.802 167.016 618.154 164.828 621.341 c 163.359 623.482 163.395 623.564 165.426 622.712 c 168.238 621.537 169.98 623.658 170.719 629.169 c 171.434 634.482 173.387 637.044 176.004 636.087 c 177.621 635.497 177.828 635.837 177.301 638.236 c 176.043 643.935 174.062 648.15 171.137 651.345 c 167.512 655.306 165 654.49 159.105 647.443 c 154.043 641.392 152.438 636.833 152.438 628.513 c 152.438 617.076 157.102 608.837 165.078 606.169 c 169.309 604.759 170.66 604.783 175.98 606.376 c h 270.105 606.376 m 276.766 608.372 280.879 614.263 282.305 623.849 c 283.961 634.99 282.383 643.841 277.766 649.29 c 275.422 652.056 275.391 652.244 277.246 652.247 c 280.699 652.259 286.664 645.029 289.043 637.951 c 290.27 634.31 291.48 631.333 291.738 631.333 c 291.996 631.333 293.211 634.31 294.434 637.951 c 296.812 645.029 302.781 652.259 306.234 652.247 c 308.086 652.244 308.055 652.056 305.711 649.29 c 301.094 643.841 299.516 634.99 301.172 623.849 c 302.633 614.025 306.719 608.322 313.754 606.283 c 326.871 602.478 336.918 612.119 336.918 628.513 c 336.918 636.833 335.312 641.392 330.25 647.443 c 324.355 654.49 321.844 655.306 318.219 651.345 c 315.297 648.15 313.312 643.935 312.055 638.236 c 311.527 635.837 311.734 635.497 313.352 636.087 c 315.969 637.044 317.922 634.482 318.637 629.169 c 319.379 623.658 321.121 621.537 323.93 622.712 c 325.961 623.564 325.996 623.482 324.527 621.341 c 322.34 618.154 316.715 619.802 313.246 624.65 c 311.066 627.689 310.562 629.54 310.562 634.497 c 310.562 641.693 311.527 644.673 315.957 651.146 c 319.242 655.951 l 313.727 657.716 l 310.234 658.837 302.164 659.482 291.738 659.482 c 281.312 659.482 273.242 658.837 269.75 657.716 c 264.234 655.951 l 267.523 651.146 l 271.949 644.673 272.914 641.693 272.914 634.497 c 272.914 629.54 272.41 627.689 270.234 624.65 c 266.762 619.802 261.137 618.154 258.949 621.341 c 257.48 623.482 257.516 623.564 259.547 622.712 c 262.359 621.537 264.102 623.658 264.84 629.169 c 265.555 634.482 267.512 637.044 270.125 636.087 c 271.746 635.497 271.949 635.837 271.422 638.236 c 270.164 643.935 268.184 648.15 265.262 651.345 c 261.637 655.306 259.125 654.49 253.23 647.443 c 248.168 641.392 246.562 636.833 246.562 628.513 c 246.562 617.076 251.223 608.837 259.203 606.169 c 263.43 604.759 264.781 604.783 270.105 606.376 c h 376.555 609.119 m 381.227 612.787 383.977 619.974 383.977 628.513 c 383.977 636.833 382.371 641.392 377.309 647.443 c 371.414 654.49 368.902 655.306 365.277 651.345 c 362.355 648.15 360.375 643.935 359.117 638.236 c 358.59 635.837 358.793 635.497 360.414 636.087 c 363.027 637.044 364.984 634.482 365.699 629.169 c 366.438 623.658 368.18 621.537 370.992 622.712 c 373.023 623.564 373.059 623.482 371.59 621.341 c 369.402 618.154 363.777 619.802 360.305 624.65 c 358.129 627.689 357.625 629.54 357.625 634.497 c 357.625 641.693 358.59 644.673 363.016 651.146 c 366.305 655.951 l 360.789 657.689 l 353.469 659.994 329.871 660.044 326.141 657.763 c 323.367 656.064 l 328.258 652.162 l 333.238 648.189 337.242 641.337 338.371 634.857 c 338.98 631.353 339.059 631.427 341.379 637.935 c 343.918 645.052 349.918 652.259 353.293 652.247 c 355.148 652.244 355.117 652.056 352.773 649.29 c 348.156 643.841 346.578 634.99 348.234 623.849 c 350.172 610.798 357.527 604.212 368.43 605.755 c 371.008 606.122 374.664 607.634 376.555 609.119 c h 414.504 631.88 m 417.43 635.626 418.84 636.482 422.09 636.482 c 424.699 636.482 426.938 635.54 428.555 633.763 c 430.469 631.662 430.898 631.521 430.449 633.154 c 428.766 639.283 417.773 641.255 413.754 636.154 c 411.77 633.634 409.48 627.283 410.555 627.283 c 410.75 627.283 412.523 629.353 414.504 631.88 c h 56.809 634.162 m 57.789 641.005 61.723 647.974 66.977 652.162 c 71.867 656.064 l 69.094 657.615 l 62.168 661.482 44.516 660.31 36.141 655.423 c 32.621 653.369 l 39.008 645.255 l 46.656 635.537 52.363 629.912 54.574 629.912 c 55.652 629.912 56.402 631.341 56.809 634.162 c h 151.496 636.833 m 151.496 640.49 156.539 648.525 161.133 652.189 c 165.992 656.064 l 163.215 657.728 l 161.562 658.716 156.438 659.388 150.555 659.388 c 144.676 659.388 139.551 658.716 137.898 657.728 c 135.121 656.064 l 139.98 652.189 l 144.574 648.525 149.613 640.49 149.613 636.833 c 149.613 635.919 150.039 635.169 150.555 635.169 c 151.074 635.169 151.496 635.919 151.496 636.833 c h 245.621 636.833 m 245.621 640.49 250.66 648.525 255.254 652.189 c 260.113 656.064 l 257.336 657.728 l 255.684 658.716 250.559 659.388 244.68 659.388 c 238.797 659.388 233.672 658.716 232.02 657.728 c 229.242 656.064 l 234.102 652.189 l 238.695 648.525 243.738 640.49 243.738 636.833 c 243.738 635.919 244.16 635.169 244.68 635.169 c 245.195 635.169 245.621 635.919 245.621 636.833 c h f 123.242 399.665 m 122.805 401.447 121.773 403.119 120.305 404.353 c 118.836 405.54 117.977 405.759 113.82 406.744 c 113.648 406.822 111.398 407.337 111.023 407.431 c 109.07 407.978 107.602 409.509 107.133 411.4 c 106.258 414.853 108.945 418.525 112.961 418.525 c 117.367 418.525 119.398 415.572 120.258 412.29 c 120.602 410.884 120.602 410.025 120.648 409.775 c 120.82 409.212 121.336 409.212 121.648 409.212 c 122.336 409.212 122.336 409.306 122.336 410.072 c 122.383 418.697 l 122.383 418.822 122.383 419.165 122.336 419.29 c 122.289 419.509 122.039 419.806 121.602 419.806 c 121.305 419.806 121.258 419.759 120.992 419.29 c 119.617 416.9 l 117.242 419.369 114.555 419.806 112.664 419.806 c 107.086 419.806 103.367 414.759 104.617 409.9 c 105.883 405.072 110.148 404.009 111.883 403.634 c 116.242 402.556 l 118.57 401.962 120.133 400.634 120.773 398.165 c 121.773 394.275 119.055 390.275 114.898 390.275 c 111.273 390.275 107.477 391.9 106.398 396.197 c 106.227 396.837 106.086 397.869 106.133 398.462 c 106.133 398.462 106.086 398.806 106.055 398.931 c 105.914 399.447 105.352 399.447 105.102 399.447 c 104.492 399.447 104.398 399.4 104.367 398.587 c 104.398 390.181 l 104.398 389.634 104.367 389.54 104.398 389.415 c 104.539 388.947 104.883 388.869 105.18 388.869 c 105.523 388.869 105.57 388.994 105.789 389.369 c 107.164 391.806 l 109.586 389.54 112.492 388.869 115.164 388.869 c 120.945 388.869 124.633 394.369 123.242 399.665 c h 147.883 401.369 m 146.758 405.806 142.945 408.572 139.023 408.572 c 133.398 408.572 128.914 402.822 130.508 396.54 c 131.727 391.853 135.648 389.337 139.32 389.337 c 145.148 389.337 149.43 395.228 147.883 401.369 c h 144.211 402.853 m 144.555 401.494 144.977 397.353 143.898 394.447 c 143.133 392.103 141.18 390.525 139.07 390.525 c 137.383 390.525 135.039 391.634 134.18 395.056 c 133.711 396.978 133.57 400.978 134.398 403.322 c 135.477 406.4 137.805 407.384 139.273 407.384 c 141.398 407.384 143.43 405.853 144.211 402.853 c h 177.242 395.869 m 177.07 396.415 176.461 396.415 176.242 396.415 c 175.555 396.415 175.555 396.244 175.508 395.525 c 175.43 392.79 174.555 390.525 172.695 390.525 c 171.836 390.525 171.586 391.119 171.367 391.9 c 171.102 392.869 171.227 393.775 171.32 394.619 c 171.617 396.884 172.227 401.494 171.617 403.962 c 170.664 407.634 167.867 408.572 165.445 408.572 c 161.727 408.572 160.305 406.15 159.695 405.165 c 158.914 407.134 156.93 408.572 154.82 408.572 c 153.305 408.572 152.477 407.759 151.961 406.275 c 151.57 404.822 151.57 402.259 151.617 402.056 c 151.742 401.494 152.352 401.494 152.617 401.494 c 153.305 401.494 153.305 401.619 153.305 402.65 c 153.305 405.165 153.523 407.384 155.039 407.384 c 156.242 407.384 156.633 405.884 156.711 405.509 c 156.883 404.915 156.977 404.228 156.93 403.634 c 156.93 391.165 l 156.977 390.79 156.93 390.65 156.977 390.525 c 157.148 389.837 157.836 389.337 158.617 389.337 c 160.008 389.337 160.008 390.353 160.008 391.978 c 160.008 395.65 l 160.008 396.54 159.961 396.634 160.008 398.415 c 160.008 401.197 l 160.039 401.884 160.742 404.4 161.773 405.634 c 162.852 406.79 164.055 407.384 165.617 407.384 c 167.305 407.384 168.164 406.181 168.555 404.572 c 169.195 402.087 168.602 397.228 168.336 395.087 c 168.211 394.322 168.117 393.65 168.336 392.869 c 168.82 390.915 170.664 389.337 172.914 389.337 c 177.07 389.337 177.367 395.259 177.242 395.869 c h 200.621 395.869 m 200.496 396.415 199.887 396.415 199.668 396.415 c 198.902 396.415 198.934 396.29 198.934 395.228 c 198.98 391.931 198.418 390.525 197.215 390.525 c 195.996 390.525 195.652 391.9 195.527 392.4 c 195.434 392.697 195.355 393.134 195.355 393.65 c 195.309 405.681 l 195.309 405.884 195.309 406.353 195.262 406.572 c 195.09 407.259 194.402 407.759 193.621 407.759 c 193.027 407.759 192.152 407.384 192.246 406.181 c 190.949 407.681 189.434 408.572 187.621 408.572 c 182.434 408.572 178.762 402.259 180.324 396.165 c 181.402 392.056 184.59 389.337 187.887 389.337 c 190.434 389.337 192.121 391.212 192.762 392.228 c 193.59 390.65 195.355 389.337 197.434 389.337 c 199.027 389.337 199.84 390.275 200.23 391.587 c 200.715 393.306 200.621 395.869 200.621 395.869 c h 192.246 395.431 m 192.293 393.947 190.262 390.525 187.699 390.525 c 185.637 390.525 184.418 392.697 183.996 394.415 c 183.48 396.415 183.434 401.447 184.027 403.415 c 184.98 406.525 186.715 407.384 187.918 407.384 c 190.684 407.384 192.074 403.759 192.199 403.322 c 192.199 402.728 l h 216.855 395.9 m 216.715 396.415 216.121 396.415 215.949 396.415 c 215.293 396.415 215.293 396.29 215.215 395.728 c 214.387 391.384 212.574 390.525 211.199 390.525 c 210.105 390.525 209.684 391.462 209.465 392.4 c 209.371 392.697 209.199 393.134 209.199 393.65 c 209.199 406.744 l 213.215 406.744 l 213.949 406.744 214.48 406.744 214.262 407.556 c 214.137 408.15 213.605 408.15 212.871 408.15 c 209.199 408.15 l 209.199 415.228 l 208.902 416.212 207.996 416.431 207.559 416.431 c 206.184 416.431 206.184 415.15 206.184 414.759 c 206.184 408.15 l 202.199 408.15 l 201.434 408.15 200.902 408.15 201.121 407.337 c 201.262 406.744 201.855 406.744 202.512 406.744 c 206.184 406.744 l 206.184 394.79 l 206.184 393.947 206.23 393.681 206.355 393.259 c 206.996 390.744 209.293 389.337 211.402 389.337 c 216.027 389.337 217.027 395.306 216.855 395.9 c h 238.199 394.025 m 238.121 394.369 237.434 394.915 237.09 394.915 c 236.824 394.915 236.824 394.837 236.527 394.415 c 234.887 391.587 231.73 390.525 229.309 390.525 c 226.277 390.525 224.809 393.478 224.34 395.384 c 224.074 396.369 223.902 398.212 223.902 399.494 c 226.418 399.494 l 228.137 399.494 236.309 399.494 234.965 404.869 c 234.402 406.994 232.074 408.572 229.09 408.572 c 224.387 408.572 218.762 404.572 220.668 397.009 c 221.699 393.087 224.949 389.337 229.559 389.337 c 235.871 389.337 238.387 393.431 238.199 394.025 c h 233.027 404.869 m 234.105 400.681 227.355 400.681 225.715 400.681 c 223.949 400.681 l 224.043 405.978 227.496 407.384 229.387 407.384 c 230.949 407.384 232.59 406.572 233.027 404.869 c h 278.105 396.759 m 277.98 397.275 277.371 397.275 277.152 397.275 c 276.559 397.275 276.512 397.134 276.418 396.665 c 276.246 393.728 274.48 392.025 272.184 392.025 c 270.762 392.025 268.871 392.4 267.652 392.619 c 266.137 392.915 264.371 393.259 263.027 393.259 c 263.027 393.259 262.387 393.259 262.215 393.212 c 263.512 396.587 266.48 398.337 267.918 399.103 c 275.215 403.369 276.902 406.322 275.777 410.759 c 274.574 415.4 270.465 418.134 266.402 418.134 c 259.793 418.134 257.84 410.025 258.621 406.994 c 258.965 405.681 259.965 404.103 261.902 404.103 c 265.449 404.103 266.277 409.009 265.84 410.79 c 265.574 411.775 264.637 413.228 264.074 413.228 c 263.762 413.228 263.465 412.931 263.543 412.634 c 263.59 412.462 263.809 412.212 263.934 412.04 c 264.027 411.947 264.465 411.4 264.637 410.759 c 264.934 409.509 264.277 405.29 261.652 405.29 c 260.996 405.29 260.527 405.806 260.309 406.697 c 259.574 409.556 261.262 416.947 266.574 416.947 c 268.559 416.947 271.152 415.744 272.105 412.119 c 273.746 405.712 270.199 402.556 265.715 399.915 c 259.793 396.369 259.496 390.15 259.668 389.415 c 259.793 388.869 260.262 388.869 260.652 388.869 c 261.262 388.869 261.309 388.947 261.34 389.509 c 261.387 389.759 261.48 392.056 263.168 392.056 c 264.59 392.056 266.012 391.337 267.824 390.4 c 269.043 389.759 270.762 388.869 272.574 388.869 c 277.762 388.869 278.371 395.9 278.105 396.759 c h f 293.34 409.591 m 293.277 409.826 292.84 410.185 292.605 410.185 c 292.434 410.185 292.434 410.122 292.246 409.841 c 291.184 408.013 289.121 407.326 287.559 407.326 c 285.59 407.326 284.637 409.232 284.324 410.482 c 284.152 411.122 284.043 412.31 284.043 413.154 c 285.668 413.154 l 286.793 413.154 292.105 413.154 291.23 416.638 c 290.871 418.029 289.355 419.06 287.418 419.06 c 284.355 419.06 280.699 416.451 281.934 411.544 c 282.605 408.982 284.715 406.544 287.73 406.544 c 291.824 406.544 293.449 409.216 293.34 409.591 c h 289.965 416.638 m 290.668 413.919 286.293 413.919 285.23 413.919 c 284.074 413.919 l 284.137 417.357 286.371 418.279 287.605 418.279 c 288.621 418.279 289.684 417.747 289.965 416.638 c h 288.59 421.31 m 288.621 421.497 288.449 421.716 288.402 421.794 c 285.027 425.763 l 285.027 425.763 284.746 426.122 284.324 426.122 c 283.934 426.122 283.371 425.857 283.23 425.263 c 283.168 425.013 283.152 424.685 283.621 424.294 c 287.559 420.919 l 287.699 420.779 287.777 420.716 287.887 420.716 c 288.199 420.716 288.543 421.138 288.59 421.31 c h 318.508 410.794 m 318.414 411.154 318.023 411.154 317.883 411.154 c 317.43 411.154 317.43 411.044 317.398 410.576 c 317.352 408.794 316.789 407.326 315.555 407.326 c 315.023 407.326 314.82 407.716 314.711 408.216 c 314.539 408.857 314.633 409.435 314.68 409.982 c 314.883 411.451 315.273 414.451 314.852 416.06 c 314.227 418.451 312.383 419.06 310.836 419.06 c 308.836 419.06 307.633 417.997 306.93 416.56 c 306.195 418.56 304.398 419.06 303.086 419.06 c 300.648 419.06 299.695 417.482 299.289 416.841 c 298.789 418.107 297.492 419.06 296.117 419.06 c 295.133 419.06 294.602 418.529 294.273 417.56 c 294.023 416.622 294.023 414.951 294.039 414.81 c 294.133 414.451 294.523 414.451 294.695 414.451 c 295.133 414.451 295.133 414.529 295.133 415.201 c 295.133 416.841 295.273 418.279 296.258 418.279 c 297.055 418.279 297.305 417.31 297.352 417.06 c 297.477 416.669 297.523 416.232 297.492 415.841 c 297.492 407.747 l 297.523 407.497 297.492 407.404 297.523 407.326 c 297.633 406.888 298.086 406.544 298.586 406.544 c 299.492 406.544 299.492 407.216 299.492 408.263 c 299.492 414.419 l 299.492 414.419 300.055 418.279 303.164 418.279 c 304.242 418.279 304.82 417.591 305.102 416.451 c 305.164 416.232 305.305 415.701 305.305 414.872 c 305.273 407.904 l 305.305 407.763 305.273 407.466 305.336 407.326 c 305.445 406.888 305.898 406.544 306.367 406.544 c 307.273 406.544 307.273 407.216 307.273 408.263 c 307.273 414.263 l 307.305 414.513 307.602 416.232 308.586 417.31 c 309.008 417.732 309.789 418.279 310.945 418.279 c 312.133 418.279 312.633 417.388 312.883 416.451 c 313.273 414.841 312.883 411.701 312.711 410.294 c 312.664 409.794 312.602 409.357 312.711 408.857 c 313.055 407.576 314.258 406.544 315.695 406.544 c 318.383 406.544 318.617 410.404 318.508 410.794 c h 332.336 409.591 m 332.273 409.826 331.836 410.185 331.602 410.185 c 331.43 410.185 331.43 410.122 331.242 409.841 c 330.18 408.013 328.117 407.326 326.555 407.326 c 324.586 407.326 323.633 409.232 323.32 410.482 c 323.148 411.122 323.039 412.31 323.039 413.154 c 324.664 413.154 l 325.789 413.154 331.102 413.154 330.227 416.638 c 329.867 418.029 328.352 419.06 326.414 419.06 c 323.352 419.06 319.695 416.451 320.93 411.544 c 321.602 408.982 323.711 406.544 326.727 406.544 c 330.82 406.544 332.445 409.216 332.336 409.591 c h 328.961 416.638 m 329.664 413.919 325.289 413.919 324.227 413.919 c 323.07 413.919 l 323.133 417.357 325.367 418.279 326.602 418.279 c 327.617 418.279 328.68 417.747 328.961 416.638 c h f 120.199 329.294 m 124.449 329.294 l 124.449 300.138 l 124.449 296.357 123.73 293.615 122.293 291.904 c 120.855 290.197 118.547 289.341 115.371 289.341 c 113.762 289.341 l 113.762 292.904 l 115.074 292.904 l 116.949 292.904 118.27 293.431 119.043 294.482 c 119.812 295.537 120.199 297.419 120.199 300.138 c h 133.316 303.279 m 137.754 303.279 l 137.754 297.951 l 133.316 297.951 l h 179.246 328.263 m 179.246 324.138 l 177.629 324.908 176.109 325.482 174.684 325.857 c 173.254 326.232 171.875 326.419 170.543 326.419 c 168.238 326.419 166.457 325.97 165.199 325.076 c 163.949 324.177 163.324 322.908 163.324 321.263 c 163.324 319.876 163.738 318.83 164.574 318.122 c 165.406 317.412 166.984 316.841 169.309 316.404 c 171.871 315.888 l 175.035 315.283 177.371 314.22 178.871 312.701 c 180.379 311.177 181.137 309.146 181.137 306.607 c 181.137 303.564 180.113 301.255 178.074 299.685 c 176.043 298.122 173.059 297.341 169.121 297.341 c 167.641 297.341 166.062 297.513 164.387 297.857 c 162.707 298.189 160.973 298.685 159.184 299.341 c 159.184 303.701 l 160.91 302.732 162.598 302.001 164.246 301.513 c 165.902 301.021 167.527 300.779 169.121 300.779 c 171.547 300.779 173.418 301.251 174.73 302.201 c 176.043 303.158 176.699 304.517 176.699 306.279 c 176.699 307.818 176.223 309.021 175.277 309.888 c 174.34 310.763 172.793 311.419 170.637 311.857 c 168.059 312.357 l 164.891 312.982 162.598 313.966 161.184 315.31 c 159.766 316.654 159.059 318.521 159.059 320.919 c 159.059 323.689 160.031 325.872 161.98 327.466 c 163.938 329.068 166.637 329.872 170.074 329.872 c 171.543 329.872 173.035 329.736 174.559 329.466 c 176.09 329.193 177.652 328.794 179.246 328.263 c h 188.246 303.279 m 192.684 303.279 l 192.684 297.951 l 188.246 297.951 l h 219.625 312.919 m 219.625 301.435 l 226.422 301.435 l 228.703 301.435 230.391 301.904 231.484 302.841 c 232.586 303.787 233.141 305.236 233.141 307.185 c 233.141 309.142 232.586 310.583 231.484 311.513 c 230.391 312.451 228.703 312.919 226.422 312.919 c h 219.625 325.81 m 219.625 316.357 l 225.891 316.357 l 227.961 316.357 229.504 316.747 230.516 317.529 c 231.535 318.31 232.047 319.497 232.047 321.091 c 232.047 322.673 231.535 323.857 230.516 324.638 c 229.504 325.419 227.961 325.81 225.891 325.81 c h 215.375 329.294 m 226.203 329.294 l 229.441 329.294 231.938 328.622 233.688 327.279 c 235.438 325.935 236.312 324.021 236.312 321.544 c 236.312 319.626 235.863 318.099 234.969 316.966 c 234.07 315.841 232.754 315.138 231.016 314.857 c 233.098 314.408 234.719 313.47 235.875 312.044 c 237.031 310.626 237.609 308.857 237.609 306.732 c 237.609 303.927 236.656 301.763 234.75 300.232 c 232.852 298.708 230.145 297.951 226.625 297.951 c 215.375 297.951 l h 255.508 309.779 m 252.391 309.779 250.23 309.419 249.023 308.701 c 247.824 307.982 247.227 306.763 247.227 305.044 c 247.227 303.677 247.672 302.591 248.57 301.779 c 249.477 300.974 250.703 300.576 252.258 300.576 c 254.402 300.576 256.121 301.333 257.414 302.857 c 258.703 304.376 259.352 306.392 259.352 308.904 c 259.352 309.779 l h 263.211 311.372 m 263.211 297.951 l 259.352 297.951 l 259.352 301.513 l 258.477 300.083 257.375 299.033 256.055 298.357 c 254.742 297.681 253.133 297.341 251.227 297.341 c 248.82 297.341 246.902 298.013 245.477 299.357 c 244.059 300.708 243.352 302.521 243.352 304.794 c 243.352 307.439 244.234 309.435 246.008 310.779 c 247.777 312.122 250.422 312.794 253.945 312.794 c 259.352 312.794 l 259.352 313.169 l 259.352 314.951 258.766 316.326 257.602 317.294 c 256.434 318.271 254.793 318.763 252.68 318.763 c 251.336 318.763 250.023 318.599 248.742 318.279 c 247.469 317.955 246.246 317.47 245.07 316.826 c 245.07 320.388 l 246.484 320.939 247.859 321.349 249.195 321.622 c 250.527 321.892 251.82 322.029 253.07 322.029 c 256.477 322.029 259.016 321.146 260.695 319.388 c 262.371 317.626 263.211 314.955 263.211 311.372 c h 288.234 320.56 m 288.234 316.951 l 287.148 317.552 286.055 318.005 284.953 318.31 c 283.859 318.611 282.75 318.763 281.625 318.763 c 279.125 318.763 277.18 317.966 275.797 316.372 c 274.41 314.787 273.719 312.56 273.719 309.685 c 273.719 306.818 274.41 304.591 275.797 302.997 c 277.18 301.412 279.125 300.622 281.625 300.622 c 282.75 300.622 283.859 300.767 284.953 301.06 c 286.055 301.361 287.148 301.814 288.234 302.419 c 288.234 298.857 l 287.16 298.345 286.047 297.966 284.891 297.716 c 283.734 297.466 282.504 297.341 281.203 297.341 c 277.66 297.341 274.848 298.451 272.766 300.669 c 270.68 302.896 269.641 305.904 269.641 309.685 c 269.641 313.517 270.691 316.533 272.797 318.732 c 274.898 320.927 277.785 322.029 281.453 322.029 c 282.648 322.029 283.812 321.904 284.938 321.654 c 286.07 321.412 287.172 321.048 288.234 320.56 c h 314.652 312.138 m 314.652 297.951 l 310.793 297.951 l 310.793 312.013 l 310.793 314.24 310.359 315.908 309.496 317.013 c 308.629 318.115 307.328 318.669 305.59 318.669 c 303.504 318.669 301.859 318.001 300.652 316.669 c 299.453 315.345 298.855 313.537 298.855 311.247 c 298.855 297.951 l 294.965 297.951 l 294.965 330.622 l 298.855 330.622 l 298.855 317.81 l 299.77 319.224 300.855 320.283 302.105 320.982 c 303.363 321.677 304.812 322.029 306.449 322.029 c 309.145 322.029 311.188 321.189 312.574 319.513 c 313.957 317.845 314.652 315.388 314.652 312.138 c h f 107.789 111.287 m 107.789 111.458 107.602 111.458 107.477 111.458 c 107.289 111.458 107.242 111.443 107.18 111.302 c 107.102 111.037 106.82 110.224 105.867 110.224 c 105.414 110.224 105.008 110.505 104.773 111.005 c 104.555 111.505 104.539 112.083 104.539 112.693 c 104.539 113.49 104.539 115.068 105.727 115.068 c 105.961 115.068 106.102 115.052 106.305 115.005 c 106.195 114.912 106.055 114.693 106.055 114.412 c 106.055 113.849 106.492 113.599 106.836 113.599 c 107.242 113.599 107.648 113.865 107.648 114.412 c 107.648 115.255 106.695 115.583 105.695 115.583 c 103.992 115.583 102.898 114.412 102.898 112.63 c 102.898 110.74 104.133 109.708 105.648 109.708 c 107.383 109.708 107.789 111.146 107.789 111.287 c h 113.273 114.49 m 113.273 115.208 112.508 115.552 111.898 115.552 c 111.305 115.552 110.773 115.24 110.492 114.38 c 110.477 114.38 l 110.477 115.552 l 108.352 115.443 l 108.352 114.849 l 109.148 114.849 109.242 114.849 109.242 114.349 c 109.242 110.38 l 108.352 110.38 l 108.352 109.787 l 109.961 109.818 l 110.445 109.818 111.273 109.818 111.727 109.787 c 111.727 110.38 l 110.617 110.38 l 110.617 112.677 l 110.617 113.646 110.805 115.083 111.945 115.083 c 111.945 115.083 111.711 114.865 111.711 114.49 c 111.711 113.974 112.117 113.708 112.492 113.708 c 112.852 113.708 113.273 113.99 113.273 114.49 c h 119.234 111.287 m 119.234 111.521 118.984 111.521 118.922 111.521 c 118.703 111.521 118.688 111.443 118.609 111.271 c 118.312 110.49 117.562 110.224 117.047 110.224 c 115.625 110.224 115.625 111.818 115.625 112.583 c 118.828 112.583 l 119.141 112.583 119.234 112.583 119.234 112.943 c 119.234 114.083 118.766 115.583 116.781 115.583 c 115.141 115.583 113.984 114.458 113.984 112.662 c 113.984 110.818 115.266 109.708 116.938 109.708 c 118.656 109.708 119.234 111.021 119.234 111.287 c h 118.016 113.005 m 115.625 113.005 l 115.641 113.646 115.672 115.13 116.797 115.13 c 118.016 115.13 118.016 113.287 118.016 113.005 c h 125.742 110.099 m 125.742 110.349 125.617 110.38 125.477 110.38 c 124.867 110.427 124.867 110.599 124.867 110.865 c 124.867 113.63 l 124.867 114.849 123.93 115.583 122.352 115.583 c 121.93 115.583 120.258 115.552 120.258 114.412 c 120.258 113.849 120.695 113.599 121.055 113.599 c 121.445 113.599 121.852 113.865 121.852 114.412 c 121.852 114.818 121.555 115.052 121.555 115.052 c 121.836 115.099 121.93 115.13 122.32 115.13 c 123.086 115.13 123.414 114.505 123.414 113.646 c 123.414 113.177 l 121.57 113.146 119.898 112.521 119.898 111.177 c 119.898 110.115 121.102 109.708 122.055 109.708 c 122.836 109.708 123.367 110.162 123.633 110.74 c 123.633 110.458 123.633 109.787 124.805 109.787 c 125.336 109.787 l 125.586 109.787 125.742 109.787 125.742 110.099 c h 123.414 111.552 m 123.414 110.458 122.586 110.177 122.211 110.177 c 121.68 110.177 121.398 110.693 121.398 111.177 c 121.398 112.583 123.086 112.74 123.414 112.771 c h 130.09 111.349 m 130.09 112.052 l 129.48 112.052 l 129.48 111.365 l 129.48 110.677 129.277 110.224 128.902 110.224 c 128.34 110.224 128.34 111.052 128.34 111.302 c 128.34 114.865 l 129.887 114.865 l 129.887 115.474 l 128.34 115.474 l 128.34 117.912 l 127.73 117.912 l 127.715 116.833 127.355 115.38 126.074 115.333 c 126.074 114.865 l 126.871 114.865 l 126.871 111.365 l 126.871 109.974 127.902 109.708 128.746 109.708 c 129.715 109.708 130.09 110.583 130.09 111.349 c h 136.434 111.287 m 136.434 111.521 136.184 111.521 136.121 111.521 c 135.902 111.521 135.887 111.443 135.809 111.271 c 135.512 110.49 134.762 110.224 134.246 110.224 c 132.824 110.224 132.824 111.818 132.824 112.583 c 136.027 112.583 l 136.34 112.583 136.434 112.583 136.434 112.943 c 136.434 114.083 135.965 115.583 133.98 115.583 c 132.34 115.583 131.184 114.458 131.184 112.662 c 131.184 110.818 132.465 109.708 134.137 109.708 c 135.855 109.708 136.434 111.021 136.434 111.287 c h 135.215 113.005 m 132.824 113.005 l 132.84 113.646 132.871 115.13 133.996 115.13 c 135.215 115.13 135.215 113.287 135.215 113.005 c h 143.691 109.787 m 143.691 110.38 l 142.91 110.38 142.816 110.38 142.816 110.88 c 142.816 118.662 l 140.551 118.568 l 140.551 117.958 l 141.348 117.958 141.426 117.958 141.426 117.458 c 141.426 115.052 l 140.863 115.505 140.332 115.552 140.02 115.552 c 138.504 115.552 137.223 114.521 137.223 112.63 c 137.223 110.677 138.473 109.708 139.895 109.708 c 140.426 109.708 140.926 109.88 141.363 110.24 c 141.363 109.708 l h 141.363 110.99 m 141.066 110.537 140.582 110.177 140.02 110.177 c 139.535 110.177 139.176 110.49 139.004 110.974 c 138.863 111.412 138.863 112.162 138.863 112.615 c 138.863 113.13 138.863 113.802 139.02 114.255 c 139.207 114.771 139.629 115.083 140.16 115.083 c 140.551 115.083 141.004 114.896 141.363 114.412 c h 157.152 114.865 m 157.152 115.474 l 156.855 115.443 156.48 115.427 156.168 115.427 c 154.949 115.474 l 154.949 114.865 l 155.168 114.865 155.449 114.865 155.73 114.74 c 155.668 114.552 l 154.605 111.521 l 153.418 114.865 l 154.168 114.865 l 154.168 115.474 l 152.746 115.427 l 152.355 115.427 151.98 115.443 151.59 115.474 c 151.59 114.865 l 152.184 114.865 l 152.48 113.974 l 152.48 113.974 152.449 113.849 152.434 113.818 c 151.746 111.833 l 150.684 114.865 l 151.215 114.865 l 151.215 115.474 l 149.824 115.427 l 148.465 115.474 l 148.465 114.865 l 149.215 114.865 l 150.887 110.083 l 150.965 109.865 151.012 109.74 151.324 109.74 c 151.637 109.74 151.699 109.865 151.762 110.052 c 152.809 113.068 l 153.855 110.068 l 153.965 109.755 154.105 109.74 154.309 109.74 c 154.512 109.74 154.637 109.771 154.746 110.068 c 156.309 114.568 l 156.387 114.771 156.418 114.865 157.152 114.865 c h 160.84 109.787 m 160.84 110.38 l 160.043 110.38 l 160.043 115.552 l 157.824 115.443 l 157.824 114.849 l 158.574 114.849 158.668 114.849 158.668 114.349 c 158.668 110.38 l 157.777 110.38 l 157.777 109.787 l 159.34 109.818 l h 160.23 117.583 m 160.23 118.115 159.777 118.583 159.23 118.583 c 158.621 118.583 158.215 118.099 158.215 117.583 c 158.215 117.037 158.668 116.583 159.215 116.583 c 159.824 116.583 160.23 117.068 160.23 117.583 c h 165.266 111.349 m 165.266 112.052 l 164.656 112.052 l 164.656 111.365 l 164.656 110.677 164.453 110.224 164.078 110.224 c 163.516 110.224 163.516 111.052 163.516 111.302 c 163.516 114.865 l 165.062 114.865 l 165.062 115.474 l 163.516 115.474 l 163.516 117.912 l 162.906 117.912 l 162.891 116.833 162.531 115.38 161.25 115.333 c 161.25 114.865 l 162.047 114.865 l 162.047 111.365 l 162.047 109.974 163.078 109.708 163.922 109.708 c 164.891 109.708 165.266 110.583 165.266 111.349 c h 173.078 109.787 m 173.078 110.38 l 172.188 110.38 l 172.188 113.74 l 172.188 114.693 171.891 115.552 170.469 115.552 c 169.562 115.552 168.938 115.037 168.578 114.38 c 168.578 118.662 l 166.312 118.568 l 166.312 117.958 l 167.094 117.958 167.188 117.958 167.188 117.458 c 167.188 110.38 l 166.312 110.38 l 166.312 109.787 l 167.922 109.818 l 169.531 109.787 l 169.531 110.38 l 168.656 110.38 l 168.656 113.068 l 168.656 114.49 169.641 115.083 170.281 115.083 c 170.484 115.083 170.734 115.021 170.734 113.896 c 170.734 110.38 l 169.906 110.38 l 169.906 109.787 l 171.484 109.818 l h 186.477 114.099 m 186.477 117.068 184.695 118.568 182.602 118.568 c 177.836 118.568 l 177.836 117.958 l 179.039 117.958 l 179.039 110.38 l 177.836 110.38 l 177.836 109.787 l 182.602 109.787 l 184.727 109.787 186.477 111.255 186.477 114.099 c h 184.602 114.099 m 184.602 112.755 184.508 112.037 184.195 111.474 c 183.789 110.755 182.992 110.38 182.07 110.38 c 180.773 110.38 l 180.773 117.958 l 182.055 117.958 l 182.961 117.958 183.773 117.599 184.195 116.818 c 184.508 116.255 184.602 115.521 184.602 114.099 c h 192.836 111.287 m 192.836 111.521 192.586 111.521 192.523 111.521 c 192.305 111.521 192.289 111.443 192.211 111.271 c 191.914 110.49 191.164 110.224 190.648 110.224 c 189.227 110.224 189.227 111.818 189.227 112.583 c 192.43 112.583 l 192.742 112.583 192.836 112.583 192.836 112.943 c 192.836 114.083 192.367 115.583 190.383 115.583 c 188.742 115.583 187.586 114.458 187.586 112.662 c 187.586 110.818 188.867 109.708 190.539 109.708 c 192.258 109.708 192.836 111.021 192.836 111.287 c h 191.617 113.005 m 189.227 113.005 l 189.242 113.646 189.273 115.13 190.398 115.13 c 191.617 115.13 191.617 113.287 191.617 113.005 c h 200.277 109.787 m 200.277 110.38 l 199.387 110.38 l 199.387 113.74 l 199.387 114.693 199.09 115.552 197.668 115.552 c 196.746 115.552 196.09 115.021 195.715 114.255 c 195.715 115.552 l 193.512 115.443 l 193.512 114.849 l 194.293 114.849 194.387 114.849 194.387 114.349 c 194.387 110.38 l 193.512 110.38 l 193.512 109.787 l 195.121 109.818 l 196.73 109.787 l 196.73 110.38 l 195.855 110.38 l 195.855 113.068 l 195.855 114.49 196.84 115.083 197.48 115.083 c 197.684 115.083 197.934 115.021 197.934 113.896 c 197.934 110.38 l 197.105 110.38 l 197.105 109.787 l 198.684 109.818 l h 205.934 111.287 m 205.934 111.521 205.684 111.521 205.621 111.521 c 205.402 111.521 205.387 111.443 205.309 111.271 c 205.012 110.49 204.262 110.224 203.746 110.224 c 202.324 110.224 202.324 111.818 202.324 112.583 c 205.527 112.583 l 205.84 112.583 205.934 112.583 205.934 112.943 c 205.934 114.083 205.465 115.583 203.48 115.583 c 201.84 115.583 200.684 114.458 200.684 112.662 c 200.684 110.818 201.965 109.708 203.637 109.708 c 205.355 109.708 205.934 111.021 205.934 111.287 c h 204.715 113.005 m 202.324 113.005 l 202.34 113.646 202.371 115.13 203.496 115.13 c 204.715 115.13 204.715 113.287 204.715 113.005 c h 216.926 109.787 m 216.926 110.38 l 216.035 110.38 l 216.035 113.74 l 216.035 114.693 215.738 115.552 214.316 115.552 c 213.41 115.552 212.785 115.052 212.441 114.38 c 212.207 115.505 211.176 115.552 210.77 115.552 c 209.848 115.552 209.191 115.021 208.816 114.255 c 208.816 115.552 l 206.613 115.443 l 206.613 114.849 l 207.395 114.849 207.488 114.849 207.488 114.349 c 207.488 110.38 l 206.613 110.38 l 206.613 109.787 l 208.223 109.818 l 209.832 109.787 l 209.832 110.38 l 208.957 110.38 l 208.957 113.068 l 208.957 114.49 209.941 115.083 210.582 115.083 c 210.785 115.083 211.035 115.021 211.035 113.896 c 211.035 110.38 l 210.207 110.38 l 210.207 109.787 l 211.785 109.818 l 213.379 109.787 l 213.379 110.38 l 212.488 110.38 l 212.488 113.068 l 212.488 114.49 213.473 115.083 214.113 115.083 c 214.332 115.083 214.582 115.021 214.582 113.896 c 214.582 110.38 l 213.754 110.38 l 213.754 109.787 l 215.316 109.818 l h 223.008 112.583 m 223.008 114.396 221.883 115.583 220.164 115.583 c 218.508 115.583 217.336 114.443 217.336 112.583 c 217.336 110.74 218.539 109.708 220.164 109.708 c 221.852 109.708 223.008 110.802 223.008 112.583 c h 221.367 112.724 m 221.367 112.115 221.367 111.443 221.242 111.021 c 221.117 110.521 220.633 110.224 220.18 110.224 c 219.695 110.224 219.211 110.505 219.07 111.068 c 218.977 111.49 218.977 112.271 218.977 112.724 c 218.977 113.318 218.977 113.927 219.086 114.349 c 219.211 114.833 219.695 115.13 220.164 115.13 c 220.711 115.13 221.133 114.755 221.258 114.349 c 221.367 113.927 221.367 113.302 221.367 112.724 c h 226.297 110.177 m 226.297 111.052 225.891 111.787 225.141 111.787 c 224.547 111.787 224.156 111.333 224.156 110.787 c 224.156 110.271 224.5 109.787 225.156 109.787 c 225.469 109.787 225.719 109.912 225.812 110.021 c 225.75 108.802 225.062 108.052 224.75 107.771 c 224.609 107.662 224.594 107.63 224.594 107.552 c 224.594 107.443 224.734 107.302 224.828 107.302 c 225.031 107.302 226.297 108.443 226.297 110.177 c h 235.465 111.349 m 235.465 112.052 l 234.855 112.052 l 234.855 111.365 l 234.855 110.677 234.652 110.224 234.277 110.224 c 233.715 110.224 233.715 111.052 233.715 111.302 c 233.715 114.865 l 235.262 114.865 l 235.262 115.474 l 233.715 115.474 l 233.715 117.912 l 233.105 117.912 l 233.09 116.833 232.73 115.38 231.449 115.333 c 231.449 114.865 l 232.246 114.865 l 232.246 111.365 l 232.246 109.974 233.277 109.708 234.121 109.708 c 235.09 109.708 235.465 110.583 235.465 111.349 c h 242.668 114.865 m 242.668 115.474 l 242.34 115.443 241.965 115.427 241.652 115.427 c 241.246 115.427 240.652 115.458 240.48 115.474 c 240.48 114.865 l 240.48 114.865 241.152 114.865 241.152 114.708 c 241.09 114.552 l 239.996 111.708 l 238.777 114.865 l 239.48 114.865 l 239.48 115.474 l 237.918 115.427 l 236.48 115.474 l 236.48 114.865 l 237.277 114.865 l 239.246 109.787 l 239.137 109.505 238.84 108.677 238.684 108.412 c 238.324 107.787 237.855 107.693 237.652 107.693 c 237.512 107.693 237.496 107.708 237.434 107.708 c 237.637 107.787 237.918 107.99 237.918 108.412 c 237.918 108.833 237.605 109.146 237.168 109.146 c 236.809 109.146 236.449 108.896 236.449 108.412 c 236.449 107.802 236.934 107.224 237.637 107.224 c 238.605 107.224 239.246 108.115 239.48 108.708 c 241.746 114.552 l 241.824 114.771 241.855 114.865 242.668 114.865 c h 249.637 112.646 m 249.637 114.521 248.434 115.552 247.012 115.552 c 246.434 115.552 245.887 115.365 245.418 114.99 c 245.418 115.552 l 243.152 115.443 l 243.152 114.849 l 243.402 114.849 243.652 114.849 243.793 114.818 c 244.043 114.771 244.043 114.677 244.043 114.412 c 244.043 107.912 l 243.152 107.912 l 243.152 107.302 l 244.762 107.349 l 246.371 107.302 l 246.371 107.912 l 245.496 107.912 l 245.496 110.177 l 245.887 109.865 246.324 109.708 246.809 109.708 c 248.324 109.708 249.637 110.708 249.637 112.646 c h 247.996 112.646 m 247.996 110.849 247.324 110.177 246.699 110.177 c 246.137 110.177 245.746 110.537 245.496 110.927 c 245.496 114.318 l 245.809 114.708 246.246 115.037 246.824 115.037 c 247.48 115.037 247.996 114.208 247.996 112.646 c h 255.684 111.287 m 255.684 111.521 255.434 111.521 255.371 111.521 c 255.152 111.521 255.137 111.443 255.059 111.271 c 254.762 110.49 254.012 110.224 253.496 110.224 c 252.074 110.224 252.074 111.818 252.074 112.583 c 255.277 112.583 l 255.59 112.583 255.684 112.583 255.684 112.943 c 255.684 114.083 255.215 115.583 253.23 115.583 c 251.59 115.583 250.434 114.458 250.434 112.662 c 250.434 110.818 251.715 109.708 253.387 109.708 c 255.105 109.708 255.684 111.021 255.684 111.287 c h 254.465 113.005 m 252.074 113.005 l 252.09 113.646 252.121 115.13 253.246 115.13 c 254.465 115.13 254.465 113.287 254.465 113.005 c h 260.66 111.568 m 260.66 112.318 260.254 112.724 260.082 112.88 c 259.66 113.302 259.191 113.396 258.676 113.505 c 258.066 113.63 257.379 113.755 257.379 114.38 c 257.379 115.162 258.285 115.177 258.52 115.177 c 259.645 115.177 259.707 114.349 259.738 114.083 c 259.754 113.896 259.77 113.849 260.035 113.849 c 260.332 113.849 260.332 113.912 260.332 114.208 c 260.332 115.224 l 260.332 115.474 260.332 115.583 260.113 115.583 c 260.004 115.583 259.754 115.443 259.582 115.349 c 259.363 115.474 259.004 115.583 258.52 115.583 c 257.598 115.583 256.473 115.271 256.473 113.912 c 256.473 113.287 256.816 112.943 256.973 112.787 c 257.379 112.38 257.863 112.287 258.457 112.162 c 258.973 112.068 259.754 111.912 259.754 111.115 c 259.754 110.365 259.176 110.177 258.598 110.177 c 257.676 110.177 257.301 110.771 257.082 111.615 c 257.035 111.802 257.02 111.833 256.785 111.833 c 256.473 111.833 256.473 111.755 256.473 111.458 c 256.473 110.068 l 256.473 109.818 256.473 109.708 256.707 109.708 c 256.801 109.708 256.816 109.708 257.051 109.865 c 257.113 109.912 257.285 110.037 257.363 110.068 c 257.863 109.708 258.41 109.708 258.598 109.708 c 260.176 109.708 260.66 110.599 260.66 111.568 c h 266.711 111.287 m 266.711 111.521 266.461 111.521 266.398 111.521 c 266.18 111.521 266.164 111.443 266.086 111.271 c 265.789 110.49 265.039 110.224 264.523 110.224 c 263.102 110.224 263.102 111.818 263.102 112.583 c 266.305 112.583 l 266.617 112.583 266.711 112.583 266.711 112.943 c 266.711 114.083 266.242 115.583 264.258 115.583 c 262.617 115.583 261.461 114.458 261.461 112.662 c 261.461 110.818 262.742 109.708 264.414 109.708 c 266.133 109.708 266.711 111.021 266.711 111.287 c h 265.492 113.005 m 263.102 113.005 l 263.117 113.646 263.148 115.13 264.273 115.13 c 265.492 115.13 265.492 113.287 265.492 113.005 c h 271.34 111.349 m 271.34 112.052 l 270.73 112.052 l 270.73 111.365 l 270.73 110.677 270.527 110.224 270.152 110.224 c 269.59 110.224 269.59 111.052 269.59 111.302 c 269.59 114.865 l 271.137 114.865 l 271.137 115.474 l 269.59 115.474 l 269.59 117.912 l 268.98 117.912 l 268.965 116.833 268.605 115.38 267.324 115.333 c 267.324 114.865 l 268.121 114.865 l 268.121 111.365 l 268.121 109.974 269.152 109.708 269.996 109.708 c 270.965 109.708 271.34 110.583 271.34 111.349 c h 283.039 112.63 m 283.039 114.583 281.758 115.552 280.367 115.552 c 279.758 115.552 279.258 115.349 278.82 115.005 c 278.82 118.662 l 276.555 118.568 l 276.555 117.958 l 277.352 117.958 277.445 117.958 277.445 117.458 c 277.445 109.787 l 278.055 109.787 l 278.664 110.38 l 278.945 110.083 279.461 109.708 280.211 109.708 c 281.758 109.708 283.039 110.74 283.039 112.63 c h 281.398 112.646 m 281.398 112.021 281.398 111.396 281.195 110.912 c 281.008 110.474 280.586 110.177 280.117 110.177 c 279.633 110.177 279.227 110.427 278.898 110.927 c 278.898 114.349 l 279.32 114.912 279.82 115.083 280.242 115.083 c 280.695 115.083 281.086 114.771 281.242 114.287 c 281.398 113.865 281.398 113.146 281.398 112.646 c h 289.945 114.865 m 289.945 115.474 l 289.617 115.443 289.242 115.427 288.93 115.427 c 288.523 115.427 287.93 115.458 287.758 115.474 c 287.758 114.865 l 287.758 114.865 288.43 114.865 288.43 114.708 c 288.367 114.552 l 287.273 111.708 l 286.055 114.865 l 286.758 114.865 l 286.758 115.474 l 285.195 115.427 l 283.758 115.474 l 283.758 114.865 l 284.555 114.865 l 286.523 109.787 l 286.414 109.505 286.117 108.677 285.961 108.412 c 285.602 107.787 285.133 107.693 284.93 107.693 c 284.789 107.693 284.773 107.708 284.711 107.708 c 284.914 107.787 285.195 107.99 285.195 108.412 c 285.195 108.833 284.883 109.146 284.445 109.146 c 284.086 109.146 283.727 108.896 283.727 108.412 c 283.727 107.802 284.211 107.224 284.914 107.224 c 285.883 107.224 286.523 108.115 286.758 108.708 c 289.023 114.552 l 289.102 114.771 289.133 114.865 289.945 114.865 c h 301.625 113.287 m 301.031 113.287 l 300.938 112.365 300.719 110.38 298.797 110.38 c 297.953 110.38 l 297.953 117.958 l 299.469 117.958 l 299.469 118.568 l 298.938 118.521 297.672 118.521 297.094 118.521 c 296.578 118.521 295.391 118.521 294.938 118.568 c 294.938 117.958 l 296.141 117.958 l 296.141 110.38 l 294.938 110.38 l 294.938 109.787 l 301.234 109.787 l h 305.566 109.787 m 305.566 110.38 l 304.77 110.38 l 304.77 115.552 l 302.551 115.443 l 302.551 114.849 l 303.301 114.849 303.395 114.849 303.395 114.349 c 303.395 110.38 l 302.504 110.38 l 302.504 109.787 l 304.066 109.818 l h 304.957 117.583 m 304.957 118.115 304.504 118.583 303.957 118.583 c 303.348 118.583 302.941 118.099 302.941 117.583 c 302.941 117.037 303.395 116.583 303.941 116.583 c 304.551 116.583 304.957 117.068 304.957 117.583 c h 309.211 109.787 m 309.211 110.38 l 308.32 110.38 l 308.32 118.662 l 306.055 118.568 l 306.055 117.958 l 306.852 117.958 306.945 117.958 306.945 117.458 c 306.945 110.38 l 306.055 110.38 l 306.055 109.787 l 307.633 109.818 l h 315.742 114.865 m 315.742 115.474 l 315.414 115.443 315.039 115.427 314.727 115.427 c 314.32 115.427 313.727 115.458 313.555 115.474 c 313.555 114.865 l 313.555 114.865 314.227 114.865 314.227 114.708 c 314.164 114.552 l 313.07 111.708 l 311.852 114.865 l 312.555 114.865 l 312.555 115.474 l 310.992 115.427 l 309.555 115.474 l 309.555 114.865 l 310.352 114.865 l 312.32 109.787 l 312.211 109.505 311.914 108.677 311.758 108.412 c 311.398 107.787 310.93 107.693 310.727 107.693 c 310.586 107.693 310.57 107.708 310.508 107.708 c 310.711 107.787 310.992 107.99 310.992 108.412 c 310.992 108.833 310.68 109.146 310.242 109.146 c 309.883 109.146 309.523 108.896 309.523 108.412 c 309.523 107.802 310.008 107.224 310.711 107.224 c 311.68 107.224 312.32 108.115 312.555 108.708 c 314.82 114.552 l 314.898 114.771 314.93 114.865 315.742 114.865 c h 324.039 116.068 m 324.039 117.458 322.961 118.568 321.055 118.568 c 316.461 118.568 l 316.461 117.958 l 317.664 117.958 l 317.664 110.38 l 316.461 110.38 l 316.461 109.787 l 316.914 109.818 318.055 109.818 318.57 109.818 c 319.086 109.818 320.227 109.818 320.68 109.787 c 320.68 110.38 l 319.477 110.38 l 319.477 113.646 l 321.164 113.646 l 322.742 113.646 324.039 114.552 324.039 116.068 c h 322.07 116.068 m 322.07 114.974 322.07 114.177 320.523 114.177 c 319.398 114.177 l 319.398 117.958 l 320.523 117.958 l 322.07 117.958 322.07 117.177 322.07 116.068 c h 330.805 112.583 m 330.805 114.396 329.68 115.583 327.961 115.583 c 326.305 115.583 325.133 114.443 325.133 112.583 c 325.133 110.74 326.336 109.708 327.961 109.708 c 329.648 109.708 330.805 110.802 330.805 112.583 c h 329.164 112.724 m 329.164 112.115 329.164 111.443 329.039 111.021 c 328.914 110.521 328.43 110.224 327.977 110.224 c 327.492 110.224 327.008 110.505 326.867 111.068 c 326.773 111.49 326.773 112.271 326.773 112.724 c 326.773 113.318 326.773 113.927 326.883 114.349 c 327.008 114.833 327.492 115.13 327.961 115.13 c 328.508 115.13 328.93 114.755 329.055 114.349 c 329.164 113.927 329.164 113.302 329.164 112.724 c h 338.254 109.787 m 338.254 110.38 l 337.363 110.38 l 337.363 113.74 l 337.363 114.693 337.066 115.552 335.645 115.552 c 334.723 115.552 334.066 115.021 333.691 114.255 c 333.691 115.552 l 331.488 115.443 l 331.488 114.849 l 332.27 114.849 332.363 114.849 332.363 114.349 c 332.363 110.38 l 331.488 110.38 l 331.488 109.787 l 333.098 109.818 l 334.707 109.787 l 334.707 110.38 l 333.832 110.38 l 333.832 113.068 l 333.832 114.49 334.816 115.083 335.457 115.083 c 335.66 115.083 335.91 115.021 335.91 113.896 c 335.91 110.38 l 335.082 110.38 l 335.082 109.787 l 336.66 109.818 l h 345.191 109.787 m 345.191 110.38 l 344.41 110.38 344.316 110.38 344.316 110.88 c 344.316 118.662 l 342.051 118.568 l 342.051 117.958 l 342.848 117.958 342.926 117.958 342.926 117.458 c 342.926 115.052 l 342.363 115.505 341.832 115.552 341.52 115.552 c 340.004 115.552 338.723 114.521 338.723 112.63 c 338.723 110.677 339.973 109.708 341.395 109.708 c 341.926 109.708 342.426 109.88 342.863 110.24 c 342.863 109.708 l h 342.863 110.99 m 342.566 110.537 342.082 110.177 341.52 110.177 c 341.035 110.177 340.676 110.49 340.504 110.974 c 340.363 111.412 340.363 112.162 340.363 112.615 c 340.363 113.13 340.363 113.802 340.52 114.255 c 340.707 114.771 341.129 115.083 341.66 115.083 c 342.051 115.083 342.504 114.896 342.863 114.412 c h f Q Q showpage %%Trailer end restore %%EOF denemo-2.2.0/actions/graphics/PaxHeaders.19168/separator.svg0000644000000000000000000000013213135434035020511 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.379981805 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/separator.svg0000644000175000017500000004330613135434035022370 0ustar00jjbenhamjjbenham00000000000000 image/svg+xml denemo-2.2.0/actions/graphics/PaxHeaders.19168/ThreeColumnVerses.svg0000644000000000000000000000013213135434035022126 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.389981805 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/ThreeColumnVerses.svg0000644000175000017500000001661713135434035024012 0ustar00jjbenhamjjbenham00000000000000 image/svg+xmlThe Verses. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas hendrerit commodo nisl, et tempor diam congue rhoncus. Phasellus hendrerit ligula vel tellus pellentesque viverra. Maecenas ornare blandit purus, ut eleifend orci malesuada vitae. Donec sed interdum lacus, blandit rutrum dolor.Curabitur imperdiet arcu at purus consectetur, eu ultricies libero bibendum. Morbi euismod nulla et odio ullamcorper ornare. Praesent vestibulum ornare arcu id facilisis. Praesent semper vel nisl sit amet consequat. Praesent sed tellus et nisi mattis accumsan. Maecenas ledo dolor, pharetra.Ut erat dui, porttitor at tempor ut, suscipit ut nulla. Nam quis sapien ornare nibh dignissim volutpat. Morbi adipiscing augue sed enim adipiscing semper. Vestibulum elementum arcu in erat rhoncus, id volutpat mauris pretium. Vestibulum auctor, quam non pharetra fringill.denemo-2.2.0/actions/graphics/PaxHeaders.19168/tremblement_appuye.svg0000644000000000000000000000013213135434035022412 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.393315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/tremblement_appuye.svg0000644000175000017500000000526713135434035024275 0ustar00jjbenhamjjbenham00000000000000 image/svg+xml denemo-2.2.0/actions/graphics/PaxHeaders.19168/ThreeColumnVerses.eps0000644000000000000000000000013213135434035022116 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.393315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/ThreeColumnVerses.eps0000644000175000017500000202636013135434035024000 0ustar00jjbenhamjjbenham00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.12.2 (http://cairographics.org) %%CreationDate: Sat Jun 14 10:36:20 2014 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 0 -1 448 277 %%EndComments %%BeginProlog save 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /pdfmark where { pop globaldict /?pdfmark /exec load put } { globaldict begin /?pdfmark /pop load def /pdfmark /cleartomark load def end } ifelse /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def %%EndProlog %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 0 -1 448 277 %%EndPageSetup q 0 -1 448 278 rectclip q 0 g 137.91 246.647 0.203 -246.598 re f* 0.1 w 0 J 0 j [] 0.0 d 10 M 137.91 246.647 0.203 -246.598 re S 303.312 246.647 0.301 -246.598 re f* 303.312 246.647 0.301 -246.598 re S 186.227 272.745 m 185.93 276.214 l 176.227 276.214 l 175.93 272.745 l 176.602 272.745 l 176.727 274.37 176.883 275.542 178.945 275.542 c 180.055 275.542 l 180.055 267.167 l 177.852 267.167 l 177.852 266.495 l 178.633 266.542 180.227 266.542 181.086 266.542 c 181.93 266.542 183.539 266.542 184.305 266.495 c 184.305 267.167 l 182.102 267.167 l 182.102 275.542 l 183.195 275.542 l 185.258 275.542 185.398 274.386 185.555 272.745 c h 195.711 266.495 m 195.711 267.167 l 194.711 267.167 l 194.711 270.901 l 194.711 272.417 193.945 272.979 192.492 272.979 c 191.117 272.979 190.383 272.136 190.07 271.589 c 190.055 271.589 l 190.055 276.495 l 187.492 276.37 l 187.492 275.698 l 188.398 275.698 188.492 275.698 188.492 275.136 c 188.492 267.167 l 187.492 267.167 l 187.492 266.495 l 189.32 266.542 l 191.133 266.495 l 191.133 267.167 l 190.133 267.167 l 190.133 270.182 l 190.133 271.761 191.383 272.464 192.289 272.464 c 192.773 272.464 193.07 272.151 193.07 271.057 c 193.07 267.167 l 192.086 267.167 l 192.086 266.495 l 193.898 266.542 l h 203.16 268.182 m 203.16 268.432 202.895 268.432 202.816 268.432 c 202.582 268.432 202.551 268.37 202.457 268.136 c 202.16 267.448 201.332 266.979 200.395 266.979 c 198.363 266.979 198.363 268.901 198.363 269.636 c 202.707 269.636 l 203.02 269.636 203.16 269.636 203.16 270.026 c 203.16 270.464 203.082 271.526 202.363 272.245 c 201.832 272.761 201.066 273.026 200.066 273.026 c 197.77 273.026 196.52 271.542 196.52 269.729 c 196.52 267.807 197.957 266.401 200.27 266.401 c 202.551 266.401 203.16 267.932 203.16 268.182 c h 201.801 270.104 m 198.363 270.104 l 198.379 270.667 198.395 271.276 198.707 271.761 c 199.082 272.323 199.645 272.495 200.066 272.495 c 201.754 272.495 201.785 270.62 201.801 270.104 c h 221.281 275.698 m 221.281 276.37 l 219.656 276.339 l 219.078 276.339 218.328 276.339 217.766 276.37 c 217.766 275.698 l 217.906 275.698 219.031 275.698 219.031 275.526 c 219.031 275.464 219 275.401 218.984 275.354 c 216.078 268.807 l 213 275.698 l 214.359 275.698 l 214.359 276.37 l 213.812 276.339 212.422 276.339 211.812 276.339 c 211.25 276.339 210.031 276.339 209.531 276.37 c 209.531 275.698 l 210.859 275.698 l 214.828 266.761 l 214.953 266.495 215 266.386 215.406 266.386 c 215.641 266.386 215.828 266.386 215.984 266.729 c 219.812 275.386 l 219.906 275.573 219.953 275.698 221.016 275.698 c h 228.781 268.182 m 228.781 268.432 228.516 268.432 228.438 268.432 c 228.203 268.432 228.172 268.37 228.078 268.136 c 227.781 267.448 226.953 266.979 226.016 266.979 c 223.984 266.979 223.984 268.901 223.984 269.636 c 228.328 269.636 l 228.641 269.636 228.781 269.636 228.781 270.026 c 228.781 270.464 228.703 271.526 227.984 272.245 c 227.453 272.761 226.688 273.026 225.688 273.026 c 223.391 273.026 222.141 271.542 222.141 269.729 c 222.141 267.807 223.578 266.401 225.891 266.401 c 228.172 266.401 228.781 267.932 228.781 268.182 c h 227.422 270.104 m 223.984 270.104 l 224 270.667 224.016 271.276 224.328 271.761 c 224.703 272.323 225.266 272.495 225.688 272.495 c 227.375 272.495 227.406 270.62 227.422 270.104 c h 235.641 271.792 m 235.641 272.557 234.859 272.979 234.109 272.979 c 233.094 272.979 232.516 272.261 232.188 271.354 c 232.188 272.979 l 229.797 272.87 l 229.797 272.182 l 230.688 272.182 230.797 272.182 230.797 271.62 c 230.797 267.167 l 229.797 267.167 l 229.797 266.495 l 231.609 266.542 l 232.156 266.542 233.078 266.542 233.609 266.495 c 233.609 267.167 l 232.344 267.167 l 232.344 269.698 l 232.344 270.698 232.703 272.464 234.156 272.464 c 234.156 272.464 233.875 272.214 233.875 271.792 c 233.875 271.198 234.344 270.917 234.75 270.917 c 235.172 270.917 235.641 271.214 235.641 271.792 c h 242.082 268.511 m 242.082 269.136 241.785 269.636 241.285 270.042 c 240.723 270.464 240.254 270.542 239.145 270.729 c 238.598 270.839 237.66 270.995 237.66 271.667 c 237.66 272.557 239.004 272.557 239.285 272.557 c 240.363 272.557 240.91 272.136 240.988 271.354 c 240.988 271.136 241.004 271.057 241.316 271.057 c 241.66 271.057 241.66 271.136 241.66 271.464 c 241.66 272.62 l 241.66 272.886 241.66 273.026 241.395 273.026 c 241.348 273.026 241.316 273.026 240.754 272.745 c 240.379 272.932 239.879 273.026 239.301 273.026 c 238.863 273.026 236.645 273.026 236.645 271.136 c 236.645 270.557 236.926 270.167 237.223 269.917 c 237.801 269.417 238.348 269.339 239.457 269.136 c 239.973 269.042 241.051 268.854 241.051 268.011 c 241.051 266.932 239.723 266.932 239.41 266.932 c 237.879 266.932 237.504 267.979 237.332 268.604 c 237.27 268.807 237.191 268.807 236.988 268.807 c 236.645 268.807 236.645 268.714 236.645 268.386 c 236.645 266.807 l 236.645 266.542 236.645 266.401 236.91 266.401 c 237.004 266.401 237.035 266.401 237.332 266.62 c 237.707 266.87 l 238.379 266.401 239.129 266.401 239.41 266.401 c 239.863 266.401 242.082 266.401 242.082 268.511 c h 249.734 268.182 m 249.734 268.432 249.469 268.432 249.391 268.432 c 249.156 268.432 249.125 268.37 249.031 268.136 c 248.734 267.448 247.906 266.979 246.969 266.979 c 244.938 266.979 244.938 268.901 244.938 269.636 c 249.281 269.636 l 249.594 269.636 249.734 269.636 249.734 270.026 c 249.734 270.464 249.656 271.526 248.938 272.245 c 248.406 272.761 247.641 273.026 246.641 273.026 c 244.344 273.026 243.094 271.542 243.094 269.729 c 243.094 267.807 244.531 266.401 246.844 266.401 c 249.125 266.401 249.734 267.932 249.734 268.182 c h 248.375 270.104 m 244.938 270.104 l 244.953 270.667 244.969 271.276 245.281 271.761 c 245.656 272.323 246.219 272.495 246.641 272.495 c 248.328 272.495 248.359 270.62 248.375 270.104 c h 256.203 268.511 m 256.203 269.136 255.906 269.636 255.406 270.042 c 254.844 270.464 254.375 270.542 253.266 270.729 c 252.719 270.839 251.781 270.995 251.781 271.667 c 251.781 272.557 253.125 272.557 253.406 272.557 c 254.484 272.557 255.031 272.136 255.109 271.354 c 255.109 271.136 255.125 271.057 255.438 271.057 c 255.781 271.057 255.781 271.136 255.781 271.464 c 255.781 272.62 l 255.781 272.886 255.781 273.026 255.516 273.026 c 255.469 273.026 255.438 273.026 254.875 272.745 c 254.5 272.932 254 273.026 253.422 273.026 c 252.984 273.026 250.766 273.026 250.766 271.136 c 250.766 270.557 251.047 270.167 251.344 269.917 c 251.922 269.417 252.469 269.339 253.578 269.136 c 254.094 269.042 255.172 268.854 255.172 268.011 c 255.172 266.932 253.844 266.932 253.531 266.932 c 252 266.932 251.625 267.979 251.453 268.604 c 251.391 268.807 251.312 268.807 251.109 268.807 c 250.766 268.807 250.766 268.714 250.766 268.386 c 250.766 266.807 l 250.766 266.542 250.766 266.401 251.031 266.401 c 251.125 266.401 251.156 266.401 251.453 266.62 c 251.828 266.87 l 252.5 266.401 253.25 266.401 253.531 266.401 c 253.984 266.401 256.203 266.401 256.203 268.511 c h 260.164 267.62 m 260.164 268.245 259.648 268.745 259.039 268.745 c 258.414 268.745 257.914 268.245 257.914 267.62 c 257.914 266.995 258.414 266.495 259.039 266.495 c 259.648 266.495 260.164 266.995 260.164 267.62 c h f 6.203 225.889 m 5.922 225.889 l 5.797 224.749 5.641 223.343 3.672 223.343 c 2.75 223.343 l 2.234 223.343 2.203 223.421 2.203 223.796 c 2.203 229.764 l 2.203 230.139 2.203 230.296 3.266 230.296 c 3.641 230.296 l 3.641 230.655 l 3.234 230.624 2.219 230.624 1.766 230.624 c 1.328 230.624 0.453 230.624 0.062 230.655 c 0.062 230.296 l 0.328 230.296 l 1.188 230.296 1.219 230.186 1.219 229.78 c 1.219 223.874 l 1.219 223.468 1.188 223.343 0.328 223.343 c 0.062 223.343 l 0.062 222.999 l 5.891 222.999 l h 11.969 225.389 m 11.969 226.827 10.844 228.014 9.484 228.014 c 8.094 228.014 7 226.796 7 225.389 c 7 223.952 8.172 222.874 9.484 222.874 c 10.828 222.874 11.969 223.968 11.969 225.389 c h 11.031 225.483 m 11.031 225.077 11.031 224.483 10.781 223.983 c 10.547 223.483 10.047 223.155 9.484 223.155 c 9 223.155 8.516 223.389 8.219 223.905 c 7.938 224.405 7.938 225.077 7.938 225.483 c 7.938 225.921 7.938 226.53 8.203 227.014 c 8.5 227.53 9.031 227.764 9.484 227.764 c 9.969 227.764 10.453 227.53 10.75 227.046 c 11.031 226.561 11.031 225.905 11.031 225.483 c h 16.363 227.264 m 16.363 227.624 16.02 227.952 15.535 227.952 c 14.723 227.952 14.316 227.202 14.16 226.718 c 14.16 227.952 l 12.598 227.827 l 12.598 227.483 l 13.379 227.483 13.473 227.405 13.473 226.858 c 13.473 223.843 l 13.473 223.343 13.348 223.343 12.598 223.343 c 12.598 222.999 l 13.879 223.03 l 14.316 223.03 14.848 223.03 15.301 222.999 c 15.301 223.343 l 15.066 223.343 l 14.238 223.343 14.207 223.468 14.207 223.874 c 14.207 225.593 l 14.207 226.702 14.676 227.702 15.535 227.702 c 15.613 227.702 15.629 227.702 15.66 227.686 c 15.629 227.686 15.395 227.546 15.395 227.249 c 15.395 226.936 15.629 226.78 15.879 226.78 c 16.082 226.78 16.363 226.905 16.363 227.264 c h 21.34 224.327 m 21.34 224.436 21.246 224.468 21.184 224.468 c 21.09 224.468 21.059 224.405 21.043 224.311 c 20.652 223.155 19.637 223.155 19.527 223.155 c 18.965 223.155 18.527 223.499 18.262 223.905 c 17.934 224.436 17.934 225.186 17.934 225.593 c 21.059 225.593 l 21.293 225.593 21.34 225.593 21.34 225.827 c 21.34 226.936 20.73 228.014 19.324 228.014 c 18.027 228.014 16.996 226.858 16.996 225.468 c 16.996 223.968 18.168 222.874 19.465 222.874 c 20.824 222.874 21.34 224.124 21.34 224.327 c h 20.59 225.827 m 17.934 225.827 l 18.012 227.499 18.949 227.764 19.324 227.764 c 20.48 227.764 20.59 226.264 20.59 225.827 c h 30.758 222.999 m 30.758 223.343 l 30.18 223.343 29.898 223.343 29.883 223.686 c 29.883 225.827 l 29.883 226.78 29.883 227.139 29.539 227.53 c 29.383 227.733 29.008 227.952 28.352 227.952 c 27.414 227.952 26.93 227.28 26.742 226.858 c 26.57 227.827 25.742 227.952 25.242 227.952 c 24.43 227.952 23.898 227.468 23.586 226.78 c 23.586 227.952 l 22.008 227.827 l 22.008 227.483 l 22.789 227.483 22.883 227.405 22.883 226.858 c 22.883 223.843 l 22.883 223.343 22.758 223.343 22.008 223.343 c 22.008 222.999 l 23.273 223.03 l 24.523 222.999 l 24.523 223.343 l 23.773 223.343 23.648 223.343 23.648 223.843 c 23.648 225.905 l 23.648 227.077 24.445 227.702 25.164 227.702 c 25.867 227.702 25.992 227.093 25.992 226.468 c 25.992 223.843 l 25.992 223.343 25.867 223.343 25.117 223.343 c 25.117 222.999 l 26.383 223.03 l 27.648 222.999 l 27.648 223.343 l 26.898 223.343 26.773 223.343 26.773 223.843 c 26.773 225.905 l 26.773 227.077 27.57 227.702 28.273 227.702 c 28.992 227.702 29.117 227.093 29.117 226.468 c 29.117 223.843 l 29.117 223.343 28.992 223.343 28.242 223.343 c 28.242 222.999 l 29.508 223.03 l h 37.496 222.999 m 37.496 223.343 l 36.762 223.343 36.715 223.405 36.715 223.843 c 36.715 227.952 l 35.152 227.827 l 35.152 227.483 l 35.871 227.483 35.98 227.405 35.98 226.858 c 35.98 223.843 l 35.98 223.343 35.855 223.343 35.105 223.343 c 35.105 222.999 l 36.34 223.03 l 36.73 223.03 37.121 223.014 37.496 222.999 c h 36.887 229.764 m 36.887 230.061 36.621 230.358 36.293 230.358 c 35.902 230.358 35.684 230.046 35.684 229.764 c 35.684 229.468 35.934 229.171 36.277 229.171 c 36.652 229.171 36.887 229.483 36.887 229.764 c h 43.68 225.421 m 43.68 226.843 42.586 227.952 41.336 227.952 c 40.461 227.952 39.992 227.452 39.758 227.218 c 39.758 227.952 l 38.148 227.827 l 38.148 227.483 l 38.945 227.483 39.023 227.405 39.023 226.921 c 39.023 221.671 l 39.023 221.171 38.898 221.171 38.148 221.171 c 38.148 220.827 l 39.398 220.858 l 40.664 220.827 l 40.664 221.171 l 39.914 221.171 39.789 221.171 39.789 221.671 c 39.789 223.655 l 39.852 223.483 40.32 222.874 41.18 222.874 c 42.508 222.874 43.68 223.968 43.68 225.421 c h 42.742 225.421 m 42.742 224.061 41.961 223.124 41.133 223.124 c 40.68 223.124 40.258 223.343 39.961 223.811 c 39.789 224.046 39.789 224.046 39.789 224.28 c 39.789 226.78 l 40.117 227.343 40.664 227.671 41.242 227.671 c 42.055 227.671 42.742 226.686 42.742 225.421 c h 48.102 224.436 m 48.102 225.03 47.773 225.358 47.633 225.499 c 47.258 225.858 46.82 225.952 46.352 226.03 c 45.727 226.155 44.977 226.311 44.977 226.952 c 44.977 227.343 45.273 227.811 46.227 227.811 c 47.461 227.811 47.523 226.796 47.539 226.452 c 47.555 226.343 47.68 226.343 47.68 226.343 c 47.82 226.343 47.82 226.405 47.82 226.624 c 47.82 227.749 l 47.82 227.936 47.82 228.014 47.695 228.014 c 47.648 228.014 47.617 228.014 47.477 227.889 c 47.445 227.843 47.336 227.733 47.289 227.702 c 46.867 228.014 46.398 228.014 46.227 228.014 c 44.867 228.014 44.445 227.264 44.445 226.639 c 44.445 226.249 44.617 225.936 44.914 225.686 c 45.273 225.389 45.602 225.327 46.398 225.171 c 46.648 225.124 47.57 224.952 47.57 224.139 c 47.57 223.577 47.18 223.124 46.305 223.124 c 45.352 223.124 44.961 223.764 44.742 224.718 c 44.711 224.858 44.695 224.905 44.586 224.905 c 44.445 224.905 44.445 224.827 44.445 224.624 c 44.445 223.139 l 44.445 222.952 44.445 222.874 44.57 222.874 c 44.617 222.874 44.633 222.889 44.836 223.093 c 44.867 223.124 44.867 223.139 45.07 223.358 c 45.555 222.889 46.07 222.874 46.305 222.874 c 47.586 222.874 48.102 223.624 48.102 224.436 c h 54.488 222.999 m 54.488 223.343 l 53.691 223.343 53.613 223.421 53.613 223.968 c 53.613 227.952 l 51.957 227.827 l 51.957 227.483 l 52.738 227.483 52.832 227.405 52.832 226.858 c 52.832 224.858 l 52.832 223.889 52.301 223.124 51.473 223.124 c 50.535 223.124 50.488 223.655 50.488 224.233 c 50.488 227.952 l 48.848 227.827 l 48.848 227.483 l 49.723 227.483 49.723 227.452 49.723 226.452 c 49.723 224.764 l 49.723 223.889 49.723 222.874 51.426 222.874 c 52.051 222.874 52.551 223.186 52.863 223.889 c 52.863 222.874 l h 63.832 222.999 m 63.832 223.343 l 63.254 223.343 62.973 223.343 62.957 223.686 c 62.957 225.827 l 62.957 226.78 62.957 227.139 62.613 227.53 c 62.457 227.733 62.082 227.952 61.426 227.952 c 60.488 227.952 60.004 227.28 59.816 226.858 c 59.645 227.827 58.816 227.952 58.316 227.952 c 57.504 227.952 56.973 227.468 56.66 226.78 c 56.66 227.952 l 55.082 227.827 l 55.082 227.483 l 55.863 227.483 55.957 227.405 55.957 226.858 c 55.957 223.843 l 55.957 223.343 55.832 223.343 55.082 223.343 c 55.082 222.999 l 56.348 223.03 l 57.598 222.999 l 57.598 223.343 l 56.848 223.343 56.723 223.343 56.723 223.843 c 56.723 225.905 l 56.723 227.077 57.52 227.702 58.238 227.702 c 58.941 227.702 59.066 227.093 59.066 226.468 c 59.066 223.843 l 59.066 223.343 58.941 223.343 58.191 223.343 c 58.191 222.999 l 59.457 223.03 l 60.723 222.999 l 60.723 223.343 l 59.973 223.343 59.848 223.343 59.848 223.843 c 59.848 225.905 l 59.848 227.077 60.645 227.702 61.348 227.702 c 62.066 227.702 62.191 227.093 62.191 226.468 c 62.191 223.843 l 62.191 223.343 62.066 223.343 61.316 223.343 c 61.316 222.999 l 62.582 223.03 l h 73.711 222.999 m 73.711 223.343 l 72.93 223.343 72.836 223.421 72.836 223.968 c 72.836 230.78 l 71.227 230.655 l 71.227 230.296 l 72.008 230.296 72.102 230.218 72.102 229.671 c 72.102 227.249 l 71.773 227.655 71.289 227.952 70.68 227.952 c 69.367 227.952 68.18 226.858 68.18 225.405 c 68.18 223.983 69.289 222.874 70.555 222.874 c 71.273 222.874 71.789 223.249 72.055 223.608 c 72.055 222.874 l h 72.055 224.327 m 72.055 224.124 72.055 224.093 71.945 223.905 c 71.602 223.374 71.102 223.124 70.617 223.124 c 70.117 223.124 69.711 223.421 69.445 223.843 c 69.148 224.296 69.117 224.936 69.117 225.389 c 69.117 225.811 69.133 226.483 69.461 226.983 c 69.695 227.327 70.117 227.702 70.727 227.702 c 71.117 227.702 71.586 227.53 71.945 227.03 c 72.055 226.843 72.055 226.811 72.055 226.624 c h 79.32 225.389 m 79.32 226.827 78.195 228.014 76.836 228.014 c 75.445 228.014 74.352 226.796 74.352 225.389 c 74.352 223.952 75.523 222.874 76.836 222.874 c 78.18 222.874 79.32 223.968 79.32 225.389 c h 78.383 225.483 m 78.383 225.077 78.383 224.483 78.133 223.983 c 77.898 223.483 77.398 223.155 76.836 223.155 c 76.352 223.155 75.867 223.389 75.57 223.905 c 75.289 224.405 75.289 225.077 75.289 225.483 c 75.289 225.921 75.289 226.53 75.555 227.014 c 75.852 227.53 76.383 227.764 76.836 227.764 c 77.32 227.764 77.805 227.53 78.102 227.046 c 78.383 226.561 78.383 225.905 78.383 225.483 c h 82.5 222.999 m 82.5 223.343 l 81.75 223.343 81.625 223.343 81.625 223.843 c 81.625 230.78 l 80.016 230.655 l 80.016 230.296 l 80.797 230.296 80.891 230.218 80.891 229.671 c 80.891 223.843 l 80.891 223.343 80.766 223.343 80.016 223.343 c 80.016 222.999 l 81.25 223.03 l h 88.027 225.389 m 88.027 226.827 86.902 228.014 85.543 228.014 c 84.152 228.014 83.059 226.796 83.059 225.389 c 83.059 223.952 84.23 222.874 85.543 222.874 c 86.887 222.874 88.027 223.968 88.027 225.389 c h 87.09 225.483 m 87.09 225.077 87.09 224.483 86.84 223.983 c 86.605 223.483 86.105 223.155 85.543 223.155 c 85.059 223.155 84.574 223.389 84.277 223.905 c 83.996 224.405 83.996 225.077 83.996 225.483 c 83.996 225.921 83.996 226.53 84.262 227.014 c 84.559 227.53 85.09 227.764 85.543 227.764 c 86.027 227.764 86.512 227.53 86.809 227.046 c 87.09 226.561 87.09 225.905 87.09 225.483 c h 92.426 227.264 m 92.426 227.624 92.082 227.952 91.598 227.952 c 90.785 227.952 90.379 227.202 90.223 226.718 c 90.223 227.952 l 88.66 227.827 l 88.66 227.483 l 89.441 227.483 89.535 227.405 89.535 226.858 c 89.535 223.843 l 89.535 223.343 89.41 223.343 88.66 223.343 c 88.66 222.999 l 89.941 223.03 l 90.379 223.03 90.91 223.03 91.363 222.999 c 91.363 223.343 l 91.129 223.343 l 90.301 223.343 90.27 223.468 90.27 223.874 c 90.27 225.593 l 90.27 226.702 90.738 227.702 91.598 227.702 c 91.676 227.702 91.691 227.702 91.723 227.686 c 91.691 227.686 91.457 227.546 91.457 227.249 c 91.457 226.936 91.691 226.78 91.941 226.78 c 92.145 226.78 92.426 226.905 92.426 227.264 c h 100.516 224.436 m 100.516 225.03 100.188 225.358 100.047 225.499 c 99.672 225.858 99.234 225.952 98.766 226.03 c 98.141 226.155 97.391 226.311 97.391 226.952 c 97.391 227.343 97.688 227.811 98.641 227.811 c 99.875 227.811 99.938 226.796 99.953 226.452 c 99.969 226.343 100.094 226.343 100.094 226.343 c 100.234 226.343 100.234 226.405 100.234 226.624 c 100.234 227.749 l 100.234 227.936 100.234 228.014 100.109 228.014 c 100.062 228.014 100.031 228.014 99.891 227.889 c 99.859 227.843 99.75 227.733 99.703 227.702 c 99.281 228.014 98.812 228.014 98.641 228.014 c 97.281 228.014 96.859 227.264 96.859 226.639 c 96.859 226.249 97.031 225.936 97.328 225.686 c 97.688 225.389 98.016 225.327 98.812 225.171 c 99.062 225.124 99.984 224.952 99.984 224.139 c 99.984 223.577 99.594 223.124 98.719 223.124 c 97.766 223.124 97.375 223.764 97.156 224.718 c 97.125 224.858 97.109 224.905 97 224.905 c 96.859 224.905 96.859 224.827 96.859 224.624 c 96.859 223.139 l 96.859 222.952 96.859 222.874 96.984 222.874 c 97.031 222.874 97.047 222.889 97.25 223.093 c 97.281 223.124 97.281 223.139 97.484 223.358 c 97.969 222.889 98.484 222.874 98.719 222.874 c 100 222.874 100.516 223.624 100.516 224.436 c h 103.668 222.999 m 103.668 223.343 l 102.934 223.343 102.887 223.405 102.887 223.843 c 102.887 227.952 l 101.324 227.827 l 101.324 227.483 l 102.043 227.483 102.152 227.405 102.152 226.858 c 102.152 223.843 l 102.152 223.343 102.027 223.343 101.277 223.343 c 101.277 222.999 l 102.512 223.03 l 102.902 223.03 103.293 223.014 103.668 222.999 c h 103.059 229.764 m 103.059 230.061 102.793 230.358 102.465 230.358 c 102.074 230.358 101.855 230.046 101.855 229.764 c 101.855 229.468 102.105 229.171 102.449 229.171 c 102.824 229.171 103.059 229.483 103.059 229.764 c h 107.727 224.389 m 107.727 225.03 l 107.445 225.03 l 107.445 224.405 l 107.445 223.577 107.117 223.155 106.695 223.155 c 105.945 223.155 105.945 224.171 105.945 224.358 c 105.945 227.483 l 107.555 227.483 l 107.555 227.827 l 105.945 227.827 l 105.945 229.889 l 105.664 229.889 l 105.648 228.968 105.32 227.764 104.227 227.733 c 104.227 227.483 l 105.18 227.483 l 105.18 224.389 l 105.18 223.014 106.211 222.874 106.617 222.874 c 107.414 222.874 107.727 223.671 107.727 224.389 c h f 5.094 209.999 m 5.094 210.624 l 4.812 210.624 l 4.812 209.999 l 4.812 209.343 4.531 209.28 4.422 209.28 c 4.047 209.28 4 209.78 4 209.843 c 4 212.077 l 4 212.546 4 212.983 3.594 213.405 c 3.156 213.843 2.594 214.014 2.062 214.014 c 1.141 214.014 0.375 213.499 0.375 212.749 c 0.375 212.421 0.594 212.218 0.891 212.218 c 1.203 212.218 1.406 212.452 1.406 212.733 c 1.406 212.874 1.344 213.249 0.828 213.249 c 1.125 213.655 1.688 213.764 2.047 213.764 c 2.594 213.764 3.234 213.327 3.234 212.343 c 3.234 211.921 l 2.656 211.889 1.875 211.858 1.172 211.514 c 0.328 211.139 0.047 210.561 0.047 210.061 c 0.047 209.155 1.125 208.874 1.844 208.874 c 2.578 208.874 3.094 209.327 3.312 209.843 c 3.344 209.405 3.656 208.936 4.188 208.936 c 4.422 208.936 5.094 209.093 5.094 209.999 c h 3.234 210.561 m 3.234 209.499 2.422 209.124 1.922 209.124 c 1.375 209.124 0.906 209.514 0.906 210.077 c 0.906 210.686 1.375 211.624 3.234 211.686 c h 14.395 208.999 m 14.395 209.343 l 13.816 209.343 13.535 209.343 13.52 209.686 c 13.52 211.827 l 13.52 212.78 13.52 213.139 13.176 213.53 c 13.02 213.733 12.645 213.952 11.988 213.952 c 11.051 213.952 10.566 213.28 10.379 212.858 c 10.207 213.827 9.379 213.952 8.879 213.952 c 8.066 213.952 7.535 213.468 7.223 212.78 c 7.223 213.952 l 5.645 213.827 l 5.645 213.483 l 6.426 213.483 6.52 213.405 6.52 212.858 c 6.52 209.843 l 6.52 209.343 6.395 209.343 5.645 209.343 c 5.645 208.999 l 6.91 209.03 l 8.16 208.999 l 8.16 209.343 l 7.41 209.343 7.285 209.343 7.285 209.843 c 7.285 211.905 l 7.285 213.077 8.082 213.702 8.801 213.702 c 9.504 213.702 9.629 213.093 9.629 212.468 c 9.629 209.843 l 9.629 209.343 9.504 209.343 8.754 209.343 c 8.754 208.999 l 10.02 209.03 l 11.285 208.999 l 11.285 209.343 l 10.535 209.343 10.41 209.343 10.41 209.843 c 10.41 211.905 l 10.41 213.077 11.207 213.702 11.91 213.702 c 12.629 213.702 12.754 213.093 12.754 212.468 c 12.754 209.843 l 12.754 209.343 12.629 209.343 11.879 209.343 c 11.879 208.999 l 13.145 209.03 l h 19.285 210.327 m 19.285 210.436 19.191 210.468 19.129 210.468 c 19.035 210.468 19.004 210.405 18.988 210.311 c 18.598 209.155 17.582 209.155 17.473 209.155 c 16.91 209.155 16.473 209.499 16.207 209.905 c 15.879 210.436 15.879 211.186 15.879 211.593 c 19.004 211.593 l 19.238 211.593 19.285 211.593 19.285 211.827 c 19.285 212.936 18.676 214.014 17.27 214.014 c 15.973 214.014 14.941 212.858 14.941 211.468 c 14.941 209.968 16.113 208.874 17.41 208.874 c 18.77 208.874 19.285 210.124 19.285 210.327 c h 18.535 211.827 m 15.879 211.827 l 15.957 213.499 16.895 213.764 17.27 213.764 c 18.426 213.764 18.535 212.264 18.535 211.827 c h 23.312 210.389 m 23.312 211.03 l 23.031 211.03 l 23.031 210.405 l 23.031 209.577 22.703 209.155 22.281 209.155 c 21.531 209.155 21.531 210.171 21.531 210.358 c 21.531 213.483 l 23.141 213.483 l 23.141 213.827 l 21.531 213.827 l 21.531 215.889 l 21.25 215.889 l 21.234 214.968 20.906 213.764 19.812 213.733 c 19.812 213.483 l 20.766 213.483 l 20.766 210.389 l 20.766 209.014 21.797 208.874 22.203 208.874 c 23 208.874 23.312 209.671 23.312 210.389 c h 26.227 209.014 m 26.227 209.733 25.945 210.186 25.508 210.186 c 25.117 210.186 24.914 209.889 24.914 209.593 c 24.914 209.296 25.102 208.999 25.508 208.999 c 25.664 208.999 25.82 209.061 25.945 209.171 c 25.977 208.296 25.664 207.608 25.164 207.077 c 25.102 207.014 25.086 206.999 25.086 206.968 c 25.086 206.874 25.148 206.843 25.195 206.843 c 25.336 206.843 26.227 207.718 26.227 209.014 c h 35.449 210.327 m 35.449 210.436 35.324 210.436 35.293 210.436 c 35.199 210.436 35.168 210.405 35.152 210.327 c 34.824 209.296 34.105 209.155 33.684 209.155 c 33.09 209.155 32.105 209.639 32.105 211.436 c 32.105 213.264 33.027 213.733 33.621 213.733 c 33.715 213.733 34.418 213.733 34.809 213.327 c 34.355 213.296 34.293 212.952 34.293 212.811 c 34.293 212.514 34.496 212.296 34.809 212.296 c 35.09 212.296 35.324 212.483 35.324 212.811 c 35.324 213.577 34.465 214.014 33.605 214.014 c 32.199 214.014 31.168 212.811 31.168 211.421 c 31.168 209.983 32.277 208.874 33.59 208.874 c 35.09 208.874 35.449 210.218 35.449 210.327 c h 41.039 211.389 m 41.039 212.827 39.914 214.014 38.555 214.014 c 37.164 214.014 36.07 212.796 36.07 211.389 c 36.07 209.952 37.242 208.874 38.555 208.874 c 39.898 208.874 41.039 209.968 41.039 211.389 c h 40.102 211.483 m 40.102 211.077 40.102 210.483 39.852 209.983 c 39.617 209.483 39.117 209.155 38.555 209.155 c 38.07 209.155 37.586 209.389 37.289 209.905 c 37.008 210.405 37.008 211.077 37.008 211.483 c 37.008 211.921 37.008 212.53 37.273 213.014 c 37.57 213.53 38.102 213.764 38.555 213.764 c 39.039 213.764 39.523 213.53 39.82 213.046 c 40.102 212.561 40.102 211.905 40.102 211.483 c h 47.359 208.999 m 47.359 209.343 l 46.766 209.343 46.484 209.343 46.484 209.686 c 46.484 211.827 l 46.484 212.78 46.484 213.139 46.125 213.53 c 45.969 213.733 45.609 213.952 44.953 213.952 c 44.141 213.952 43.609 213.468 43.297 212.78 c 43.297 213.952 l 41.719 213.827 l 41.719 213.483 l 42.5 213.483 42.594 213.405 42.594 212.858 c 42.594 209.843 l 42.594 209.343 42.469 209.343 41.719 209.343 c 41.719 208.999 l 42.984 209.03 l 44.234 208.999 l 44.234 209.343 l 43.484 209.343 43.359 209.343 43.359 209.843 c 43.359 211.905 l 43.359 213.077 44.156 213.702 44.875 213.702 c 45.578 213.702 45.703 213.093 45.703 212.468 c 45.703 209.843 l 45.703 209.343 45.578 209.343 44.828 209.343 c 44.828 208.999 l 46.094 209.03 l h 51.625 210.436 m 51.625 211.03 51.297 211.358 51.156 211.499 c 50.781 211.858 50.344 211.952 49.875 212.03 c 49.25 212.155 48.5 212.311 48.5 212.952 c 48.5 213.343 48.797 213.811 49.75 213.811 c 50.984 213.811 51.047 212.796 51.062 212.452 c 51.078 212.343 51.203 212.343 51.203 212.343 c 51.344 212.343 51.344 212.405 51.344 212.624 c 51.344 213.749 l 51.344 213.936 51.344 214.014 51.219 214.014 c 51.172 214.014 51.141 214.014 51 213.889 c 50.969 213.843 50.859 213.733 50.812 213.702 c 50.391 214.014 49.922 214.014 49.75 214.014 c 48.391 214.014 47.969 213.264 47.969 212.639 c 47.969 212.249 48.141 211.936 48.438 211.686 c 48.797 211.389 49.125 211.327 49.922 211.171 c 50.172 211.124 51.094 210.952 51.094 210.139 c 51.094 209.577 50.703 209.124 49.828 209.124 c 48.875 209.124 48.484 209.764 48.266 210.718 c 48.234 210.858 48.219 210.905 48.109 210.905 c 47.969 210.905 47.969 210.827 47.969 210.624 c 47.969 209.139 l 47.969 208.952 47.969 208.874 48.094 208.874 c 48.141 208.874 48.156 208.889 48.359 209.093 c 48.391 209.124 48.391 209.139 48.594 209.358 c 49.078 208.889 49.594 208.874 49.828 208.874 c 51.109 208.874 51.625 209.624 51.625 210.436 c h 56.668 210.327 m 56.668 210.436 56.574 210.468 56.512 210.468 c 56.418 210.468 56.387 210.405 56.371 210.311 c 55.98 209.155 54.965 209.155 54.855 209.155 c 54.293 209.155 53.855 209.499 53.59 209.905 c 53.262 210.436 53.262 211.186 53.262 211.593 c 56.387 211.593 l 56.621 211.593 56.668 211.593 56.668 211.827 c 56.668 212.936 56.059 214.014 54.652 214.014 c 53.355 214.014 52.324 212.858 52.324 211.468 c 52.324 209.968 53.496 208.874 54.793 208.874 c 56.152 208.874 56.668 210.124 56.668 210.327 c h 55.918 211.827 m 53.262 211.827 l 53.34 213.499 54.277 213.764 54.652 213.764 c 55.809 213.764 55.918 212.264 55.918 211.827 c h 61.633 210.327 m 61.633 210.436 61.508 210.436 61.477 210.436 c 61.383 210.436 61.352 210.405 61.336 210.327 c 61.008 209.296 60.289 209.155 59.867 209.155 c 59.273 209.155 58.289 209.639 58.289 211.436 c 58.289 213.264 59.211 213.733 59.805 213.733 c 59.898 213.733 60.602 213.733 60.992 213.327 c 60.539 213.296 60.477 212.952 60.477 212.811 c 60.477 212.514 60.68 212.296 60.992 212.296 c 61.273 212.296 61.508 212.483 61.508 212.811 c 61.508 213.577 60.648 214.014 59.789 214.014 c 58.383 214.014 57.352 212.811 57.352 211.421 c 57.352 209.983 58.461 208.874 59.773 208.874 c 61.273 208.874 61.633 210.218 61.633 210.327 c h 65.66 210.389 m 65.66 211.03 l 65.379 211.03 l 65.379 210.405 l 65.379 209.577 65.051 209.155 64.629 209.155 c 63.879 209.155 63.879 210.171 63.879 210.358 c 63.879 213.483 l 65.488 213.483 l 65.488 213.827 l 63.879 213.827 l 63.879 215.889 l 63.598 215.889 l 63.582 214.968 63.254 213.764 62.16 213.733 c 62.16 213.483 l 63.113 213.483 l 63.113 210.389 l 63.113 209.014 64.145 208.874 64.551 208.874 c 65.348 208.874 65.66 209.671 65.66 210.389 c h 70.953 210.327 m 70.953 210.436 70.859 210.468 70.797 210.468 c 70.703 210.468 70.672 210.405 70.656 210.311 c 70.266 209.155 69.25 209.155 69.141 209.155 c 68.578 209.155 68.141 209.499 67.875 209.905 c 67.547 210.436 67.547 211.186 67.547 211.593 c 70.672 211.593 l 70.906 211.593 70.953 211.593 70.953 211.827 c 70.953 212.936 70.344 214.014 68.938 214.014 c 67.641 214.014 66.609 212.858 66.609 211.468 c 66.609 209.968 67.781 208.874 69.078 208.874 c 70.438 208.874 70.953 210.124 70.953 210.327 c h 70.203 211.827 m 67.547 211.827 l 67.625 213.499 68.562 213.764 68.938 213.764 c 70.094 213.764 70.203 212.264 70.203 211.827 c h 74.98 210.389 m 74.98 211.03 l 74.699 211.03 l 74.699 210.405 l 74.699 209.577 74.371 209.155 73.949 209.155 c 73.199 209.155 73.199 210.171 73.199 210.358 c 73.199 213.483 l 74.809 213.483 l 74.809 213.827 l 73.199 213.827 l 73.199 215.889 l 72.918 215.889 l 72.902 214.968 72.574 213.764 71.48 213.733 c 71.48 213.483 l 72.434 213.483 l 72.434 210.389 l 72.434 209.014 73.465 208.874 73.871 208.874 c 74.668 208.874 74.98 209.671 74.98 210.389 c h 81.613 208.999 m 81.613 209.343 l 80.816 209.343 80.738 209.421 80.738 209.968 c 80.738 213.952 l 79.082 213.827 l 79.082 213.483 l 79.863 213.483 79.957 213.405 79.957 212.858 c 79.957 210.858 l 79.957 209.889 79.426 209.124 78.598 209.124 c 77.66 209.124 77.613 209.655 77.613 210.233 c 77.613 213.952 l 75.973 213.827 l 75.973 213.483 l 76.848 213.483 76.848 213.452 76.848 212.452 c 76.848 210.764 l 76.848 209.889 76.848 208.874 78.551 208.874 c 79.176 208.874 79.676 209.186 79.988 209.889 c 79.988 208.874 l h 85.926 213.264 m 85.926 213.624 85.582 213.952 85.098 213.952 c 84.285 213.952 83.879 213.202 83.723 212.718 c 83.723 213.952 l 82.16 213.827 l 82.16 213.483 l 82.941 213.483 83.035 213.405 83.035 212.858 c 83.035 209.843 l 83.035 209.343 82.91 209.343 82.16 209.343 c 82.16 208.999 l 83.441 209.03 l 83.879 209.03 84.41 209.03 84.863 208.999 c 84.863 209.343 l 84.629 209.343 l 83.801 209.343 83.77 209.468 83.77 209.874 c 83.77 211.593 l 83.77 212.702 84.238 213.702 85.098 213.702 c 85.176 213.702 85.191 213.702 85.223 213.686 c 85.191 213.686 84.957 213.546 84.957 213.249 c 84.957 212.936 85.191 212.78 85.441 212.78 c 85.645 212.78 85.926 212.905 85.926 213.264 c h f 5.094 195.999 m 5.094 196.624 l 4.812 196.624 l 4.812 195.999 l 4.812 195.343 4.531 195.28 4.422 195.28 c 4.047 195.28 4 195.78 4 195.843 c 4 198.077 l 4 198.546 4 198.983 3.594 199.405 c 3.156 199.843 2.594 200.014 2.062 200.014 c 1.141 200.014 0.375 199.499 0.375 198.749 c 0.375 198.421 0.594 198.218 0.891 198.218 c 1.203 198.218 1.406 198.452 1.406 198.733 c 1.406 198.874 1.344 199.249 0.828 199.249 c 1.125 199.655 1.688 199.764 2.047 199.764 c 2.594 199.764 3.234 199.327 3.234 198.343 c 3.234 197.921 l 2.656 197.889 1.875 197.858 1.172 197.514 c 0.328 197.139 0.047 196.561 0.047 196.061 c 0.047 195.155 1.125 194.874 1.844 194.874 c 2.578 194.874 3.094 195.327 3.312 195.843 c 3.344 195.405 3.656 194.936 4.188 194.936 c 4.422 194.936 5.094 195.093 5.094 195.999 c h 3.234 196.561 m 3.234 195.499 2.422 195.124 1.922 195.124 c 1.375 195.124 0.906 195.514 0.906 196.077 c 0.906 196.686 1.375 197.624 3.234 197.686 c h 11.191 194.999 m 11.191 195.343 l 10.41 195.343 10.316 195.421 10.316 195.968 c 10.316 202.78 l 8.707 202.655 l 8.707 202.296 l 9.488 202.296 9.582 202.218 9.582 201.671 c 9.582 199.249 l 9.254 199.655 8.77 199.952 8.16 199.952 c 6.848 199.952 5.66 198.858 5.66 197.405 c 5.66 195.983 6.77 194.874 8.035 194.874 c 8.754 194.874 9.27 195.249 9.535 195.608 c 9.535 194.874 l h 9.535 196.327 m 9.535 196.124 9.535 196.093 9.426 195.905 c 9.082 195.374 8.582 195.124 8.098 195.124 c 7.598 195.124 7.191 195.421 6.926 195.843 c 6.629 196.296 6.598 196.936 6.598 197.389 c 6.598 197.811 6.613 198.483 6.941 198.983 c 7.176 199.327 7.598 199.702 8.207 199.702 c 8.598 199.702 9.066 199.53 9.426 199.03 c 9.535 198.843 9.535 198.811 9.535 198.624 c h 14.285 194.999 m 14.285 195.343 l 13.551 195.343 13.504 195.405 13.504 195.843 c 13.504 199.952 l 11.941 199.827 l 11.941 199.483 l 12.66 199.483 12.77 199.405 12.77 198.858 c 12.77 195.843 l 12.77 195.343 12.645 195.343 11.895 195.343 c 11.895 194.999 l 13.129 195.03 l 13.52 195.03 13.91 195.014 14.285 194.999 c h 13.676 201.764 m 13.676 202.061 13.41 202.358 13.082 202.358 c 12.691 202.358 12.473 202.046 12.473 201.764 c 12.473 201.468 12.723 201.171 13.066 201.171 c 13.441 201.171 13.676 201.483 13.676 201.764 c h 20.473 197.421 m 20.473 198.843 19.379 199.952 18.129 199.952 c 17.254 199.952 16.785 199.452 16.551 199.218 c 16.551 199.952 l 14.941 199.827 l 14.941 199.483 l 15.738 199.483 15.816 199.405 15.816 198.921 c 15.816 193.671 l 15.816 193.171 15.691 193.171 14.941 193.171 c 14.941 192.827 l 16.191 192.858 l 17.457 192.827 l 17.457 193.171 l 16.707 193.171 16.582 193.171 16.582 193.671 c 16.582 195.655 l 16.645 195.483 17.113 194.874 17.973 194.874 c 19.301 194.874 20.473 195.968 20.473 197.421 c h 19.535 197.421 m 19.535 196.061 18.754 195.124 17.926 195.124 c 17.473 195.124 17.051 195.343 16.754 195.811 c 16.582 196.046 16.582 196.046 16.582 196.28 c 16.582 198.78 l 16.91 199.343 17.457 199.671 18.035 199.671 c 18.848 199.671 19.535 198.686 19.535 197.421 c h 23.629 194.999 m 23.629 195.343 l 22.895 195.343 22.848 195.405 22.848 195.843 c 22.848 199.952 l 21.285 199.827 l 21.285 199.483 l 22.004 199.483 22.113 199.405 22.113 198.858 c 22.113 195.843 l 22.113 195.343 21.988 195.343 21.238 195.343 c 21.238 194.999 l 22.473 195.03 l 22.863 195.03 23.254 195.014 23.629 194.999 c h 23.02 201.764 m 23.02 202.061 22.754 202.358 22.426 202.358 c 22.035 202.358 21.816 202.046 21.816 201.764 c 21.816 201.468 22.066 201.171 22.41 201.171 c 22.785 201.171 23.02 201.483 23.02 201.764 c h 28 196.436 m 28 197.03 27.672 197.358 27.531 197.499 c 27.156 197.858 26.719 197.952 26.25 198.03 c 25.625 198.155 24.875 198.311 24.875 198.952 c 24.875 199.343 25.172 199.811 26.125 199.811 c 27.359 199.811 27.422 198.796 27.438 198.452 c 27.453 198.343 27.578 198.343 27.578 198.343 c 27.719 198.343 27.719 198.405 27.719 198.624 c 27.719 199.749 l 27.719 199.936 27.719 200.014 27.594 200.014 c 27.547 200.014 27.516 200.014 27.375 199.889 c 27.344 199.843 27.234 199.733 27.188 199.702 c 26.766 200.014 26.297 200.014 26.125 200.014 c 24.766 200.014 24.344 199.264 24.344 198.639 c 24.344 198.249 24.516 197.936 24.812 197.686 c 25.172 197.389 25.5 197.327 26.297 197.171 c 26.547 197.124 27.469 196.952 27.469 196.139 c 27.469 195.577 27.078 195.124 26.203 195.124 c 25.25 195.124 24.859 195.764 24.641 196.718 c 24.609 196.858 24.594 196.905 24.484 196.905 c 24.344 196.905 24.344 196.827 24.344 196.624 c 24.344 195.139 l 24.344 194.952 24.344 194.874 24.469 194.874 c 24.516 194.874 24.531 194.889 24.734 195.093 c 24.766 195.124 24.766 195.139 24.969 195.358 c 25.453 194.889 25.969 194.874 26.203 194.874 c 27.484 194.874 28 195.624 28 196.436 c h 33.043 196.327 m 33.043 196.436 32.918 196.436 32.887 196.436 c 32.793 196.436 32.762 196.405 32.746 196.327 c 32.418 195.296 31.699 195.155 31.277 195.155 c 30.684 195.155 29.699 195.639 29.699 197.436 c 29.699 199.264 30.621 199.733 31.215 199.733 c 31.309 199.733 32.012 199.733 32.402 199.327 c 31.949 199.296 31.887 198.952 31.887 198.811 c 31.887 198.514 32.09 198.296 32.402 198.296 c 32.684 198.296 32.918 198.483 32.918 198.811 c 32.918 199.577 32.059 200.014 31.199 200.014 c 29.793 200.014 28.762 198.811 28.762 197.421 c 28.762 195.983 29.871 194.874 31.184 194.874 c 32.684 194.874 33.043 196.218 33.043 196.327 c h 36.117 194.999 m 36.117 195.343 l 35.383 195.343 35.336 195.405 35.336 195.843 c 35.336 199.952 l 33.773 199.827 l 33.773 199.483 l 34.492 199.483 34.602 199.405 34.602 198.858 c 34.602 195.843 l 34.602 195.343 34.477 195.343 33.727 195.343 c 33.727 194.999 l 34.961 195.03 l 35.352 195.03 35.742 195.014 36.117 194.999 c h 35.508 201.764 m 35.508 202.061 35.242 202.358 34.914 202.358 c 34.523 202.358 34.305 202.046 34.305 201.764 c 34.305 201.468 34.555 201.171 34.898 201.171 c 35.273 201.171 35.508 201.483 35.508 201.764 c h 42.457 194.999 m 42.457 195.343 l 41.863 195.343 41.582 195.343 41.582 195.686 c 41.582 197.827 l 41.582 198.78 41.582 199.139 41.223 199.53 c 41.066 199.733 40.707 199.952 40.051 199.952 c 39.238 199.952 38.707 199.468 38.395 198.78 c 38.395 199.952 l 36.816 199.827 l 36.816 199.483 l 37.598 199.483 37.691 199.405 37.691 198.858 c 37.691 195.843 l 37.691 195.343 37.566 195.343 36.816 195.343 c 36.816 194.999 l 38.082 195.03 l 39.332 194.999 l 39.332 195.343 l 38.582 195.343 38.457 195.343 38.457 195.843 c 38.457 197.905 l 38.457 199.077 39.254 199.702 39.973 199.702 c 40.676 199.702 40.801 199.093 40.801 198.468 c 40.801 195.843 l 40.801 195.343 40.676 195.343 39.926 195.343 c 39.926 194.999 l 41.191 195.03 l h 48.129 199.53 m 48.129 199.718 47.988 200.077 47.551 200.077 c 47.332 200.077 46.832 199.999 46.363 199.546 c 45.895 199.921 45.426 199.952 45.176 199.952 c 44.129 199.952 43.363 199.171 43.363 198.311 c 43.363 197.827 43.613 197.389 43.895 197.155 c 43.738 196.999 43.535 196.624 43.535 196.233 c 43.535 195.889 43.691 195.452 44.035 195.233 c 43.363 195.046 43.004 194.561 43.004 194.108 c 43.004 193.311 44.113 192.686 45.488 192.686 c 46.801 192.686 47.973 193.264 47.973 194.139 c 47.973 194.53 47.816 195.093 47.238 195.421 c 46.645 195.733 46.004 195.733 45.316 195.733 c 45.035 195.733 44.551 195.733 44.473 195.733 c 44.113 195.78 43.879 196.124 43.879 196.483 c 43.879 196.53 43.879 196.796 44.066 197.014 c 44.504 196.702 44.973 196.671 45.176 196.671 c 46.223 196.671 46.988 197.436 46.988 198.311 c 46.988 198.718 46.816 199.139 46.535 199.389 c 46.941 199.764 47.348 199.827 47.535 199.827 c 47.535 199.827 47.613 199.827 47.66 199.811 c 47.535 199.764 47.473 199.655 47.473 199.514 c 47.473 199.327 47.613 199.186 47.801 199.186 c 47.91 199.186 48.129 199.264 48.129 199.53 c h 46.16 198.311 m 46.16 198.014 46.145 197.655 45.973 197.374 c 45.879 197.233 45.629 196.921 45.176 196.921 c 44.207 196.921 44.207 198.046 44.207 198.311 c 44.207 198.608 44.223 198.968 44.379 199.249 c 44.473 199.374 44.723 199.686 45.176 199.686 c 46.16 199.686 46.16 198.577 46.16 198.311 c h 47.379 194.108 m 47.379 193.514 46.598 192.952 45.488 192.952 c 44.363 192.952 43.582 193.514 43.582 194.108 c 43.582 194.624 44.02 195.046 44.504 195.077 c 45.16 195.077 l 46.129 195.077 47.379 195.077 47.379 194.108 c h 56.691 196.327 m 56.691 196.436 56.598 196.468 56.535 196.468 c 56.441 196.468 56.41 196.405 56.395 196.311 c 56.004 195.155 54.988 195.155 54.879 195.155 c 54.316 195.155 53.879 195.499 53.613 195.905 c 53.285 196.436 53.285 197.186 53.285 197.593 c 56.41 197.593 l 56.645 197.593 56.691 197.593 56.691 197.827 c 56.691 198.936 56.082 200.014 54.676 200.014 c 53.379 200.014 52.348 198.858 52.348 197.468 c 52.348 195.968 53.52 194.874 54.816 194.874 c 56.176 194.874 56.691 196.124 56.691 196.327 c h 55.941 197.827 m 53.285 197.827 l 53.363 199.499 54.301 199.764 54.676 199.764 c 55.832 199.764 55.941 198.264 55.941 197.827 c h 59.859 194.999 m 59.859 195.343 l 59.109 195.343 58.984 195.343 58.984 195.843 c 58.984 202.78 l 57.375 202.655 l 57.375 202.296 l 58.156 202.296 58.25 202.218 58.25 201.671 c 58.25 195.843 l 58.25 195.343 58.125 195.343 57.375 195.343 c 57.375 194.999 l 58.609 195.03 l h 62.871 194.999 m 62.871 195.343 l 62.137 195.343 62.09 195.405 62.09 195.843 c 62.09 199.952 l 60.527 199.827 l 60.527 199.483 l 61.246 199.483 61.355 199.405 61.355 198.858 c 61.355 195.843 l 61.355 195.343 61.23 195.343 60.48 195.343 c 60.48 194.999 l 61.715 195.03 l 62.105 195.03 62.496 195.014 62.871 194.999 c h 62.262 201.764 m 62.262 202.061 61.996 202.358 61.668 202.358 c 61.277 202.358 61.059 202.046 61.059 201.764 c 61.059 201.468 61.309 201.171 61.652 201.171 c 62.027 201.171 62.262 201.483 62.262 201.764 c h 66.93 196.389 m 66.93 197.03 l 66.648 197.03 l 66.648 196.405 l 66.648 195.577 66.32 195.155 65.898 195.155 c 65.148 195.155 65.148 196.171 65.148 196.358 c 65.148 199.483 l 66.758 199.483 l 66.758 199.827 l 65.148 199.827 l 65.148 201.889 l 64.867 201.889 l 64.852 200.968 64.523 199.764 63.43 199.733 c 63.43 199.483 l 64.383 199.483 l 64.383 196.389 l 64.383 195.014 65.414 194.874 65.82 194.874 c 66.617 194.874 66.93 195.671 66.93 196.389 c h 69.723 195.593 m 69.723 195.921 69.441 196.186 69.129 196.186 c 68.801 196.186 68.535 195.921 68.535 195.593 c 68.535 195.264 68.801 194.999 69.129 194.999 c 69.441 194.999 69.723 195.264 69.723 195.593 c h 84.254 194.999 m 84.254 195.343 l 83.988 195.343 l 83.129 195.343 83.098 195.468 83.098 195.874 c 83.098 201.78 l 83.098 202.186 83.129 202.296 83.988 202.296 c 84.254 202.296 l 84.254 202.655 l 82.363 202.655 l 82.066 202.655 82.066 202.639 81.988 202.436 c 79.535 196.124 l 77.113 202.405 l 77.004 202.655 76.973 202.655 76.723 202.655 c 74.832 202.655 l 74.832 202.296 l 75.098 202.296 l 75.957 202.296 75.973 202.186 75.973 201.78 c 75.973 196.171 l 75.973 195.874 75.973 195.343 74.832 195.343 c 74.832 194.999 l 76.129 195.03 l 77.441 194.999 l 77.441 195.343 l 76.285 195.343 76.285 195.874 76.285 196.171 c 76.285 202.218 l 76.301 202.218 l 79.004 195.249 l 79.066 195.093 79.113 194.999 79.223 194.999 c 79.348 194.999 79.379 195.093 79.426 195.218 c 82.191 202.296 l 82.191 195.874 l 82.191 195.468 82.176 195.343 81.316 195.343 c 81.035 195.343 l 81.035 194.999 l 81.457 195.03 82.223 195.03 82.66 195.03 c 83.098 195.03 83.848 195.03 84.254 194.999 c h 90.098 195.999 m 90.098 196.624 l 89.816 196.624 l 89.816 195.999 l 89.816 195.343 89.535 195.28 89.426 195.28 c 89.051 195.28 89.004 195.78 89.004 195.843 c 89.004 198.077 l 89.004 198.546 89.004 198.983 88.598 199.405 c 88.16 199.843 87.598 200.014 87.066 200.014 c 86.145 200.014 85.379 199.499 85.379 198.749 c 85.379 198.421 85.598 198.218 85.895 198.218 c 86.207 198.218 86.41 198.452 86.41 198.733 c 86.41 198.874 86.348 199.249 85.832 199.249 c 86.129 199.655 86.691 199.764 87.051 199.764 c 87.598 199.764 88.238 199.327 88.238 198.343 c 88.238 197.921 l 87.66 197.889 86.879 197.858 86.176 197.514 c 85.332 197.139 85.051 196.561 85.051 196.061 c 85.051 195.155 86.129 194.874 86.848 194.874 c 87.582 194.874 88.098 195.327 88.316 195.843 c 88.348 195.405 88.66 194.936 89.191 194.936 c 89.426 194.936 90.098 195.093 90.098 195.999 c h 88.238 196.561 m 88.238 195.499 87.426 195.124 86.926 195.124 c 86.379 195.124 85.91 195.514 85.91 196.077 c 85.91 196.686 86.379 197.624 88.238 197.686 c h 94.949 196.327 m 94.949 196.436 94.855 196.468 94.793 196.468 c 94.699 196.468 94.668 196.405 94.652 196.311 c 94.262 195.155 93.246 195.155 93.137 195.155 c 92.574 195.155 92.137 195.499 91.871 195.905 c 91.543 196.436 91.543 197.186 91.543 197.593 c 94.668 197.593 l 94.902 197.593 94.949 197.593 94.949 197.827 c 94.949 198.936 94.34 200.014 92.934 200.014 c 91.637 200.014 90.605 198.858 90.605 197.468 c 90.605 195.968 91.777 194.874 93.074 194.874 c 94.434 194.874 94.949 196.124 94.949 196.327 c h 94.199 197.827 m 91.543 197.827 l 91.621 199.499 92.559 199.764 92.934 199.764 c 94.09 199.764 94.199 198.264 94.199 197.827 c h 99.914 196.327 m 99.914 196.436 99.789 196.436 99.758 196.436 c 99.664 196.436 99.633 196.405 99.617 196.327 c 99.289 195.296 98.57 195.155 98.148 195.155 c 97.555 195.155 96.57 195.639 96.57 197.436 c 96.57 199.264 97.492 199.733 98.086 199.733 c 98.18 199.733 98.883 199.733 99.273 199.327 c 98.82 199.296 98.758 198.952 98.758 198.811 c 98.758 198.514 98.961 198.296 99.273 198.296 c 99.555 198.296 99.789 198.483 99.789 198.811 c 99.789 199.577 98.93 200.014 98.07 200.014 c 96.664 200.014 95.633 198.811 95.633 197.421 c 95.633 195.983 96.742 194.874 98.055 194.874 c 99.555 194.874 99.914 196.218 99.914 196.327 c h 104.879 196.327 m 104.879 196.436 104.785 196.468 104.723 196.468 c 104.629 196.468 104.598 196.405 104.582 196.311 c 104.191 195.155 103.176 195.155 103.066 195.155 c 102.504 195.155 102.066 195.499 101.801 195.905 c 101.473 196.436 101.473 197.186 101.473 197.593 c 104.598 197.593 l 104.832 197.593 104.879 197.593 104.879 197.827 c 104.879 198.936 104.27 200.014 102.863 200.014 c 101.566 200.014 100.535 198.858 100.535 197.468 c 100.535 195.968 101.707 194.874 103.004 194.874 c 104.363 194.874 104.879 196.124 104.879 196.327 c h 104.129 197.827 m 101.473 197.827 l 101.551 199.499 102.488 199.764 102.863 199.764 c 104.02 199.764 104.129 198.264 104.129 197.827 c h 111.191 194.999 m 111.191 195.343 l 110.598 195.343 110.316 195.343 110.316 195.686 c 110.316 197.827 l 110.316 198.78 110.316 199.139 109.957 199.53 c 109.801 199.733 109.441 199.952 108.785 199.952 c 107.973 199.952 107.441 199.468 107.129 198.78 c 107.129 199.952 l 105.551 199.827 l 105.551 199.483 l 106.332 199.483 106.426 199.405 106.426 198.858 c 106.426 195.843 l 106.426 195.343 106.301 195.343 105.551 195.343 c 105.551 194.999 l 106.816 195.03 l 108.066 194.999 l 108.066 195.343 l 107.316 195.343 107.191 195.343 107.191 195.843 c 107.191 197.905 l 107.191 199.077 107.988 199.702 108.707 199.702 c 109.41 199.702 109.535 199.093 109.535 198.468 c 109.535 195.843 l 109.535 195.343 109.41 195.343 108.66 195.343 c 108.66 194.999 l 109.926 195.03 l h 116.832 195.999 m 116.832 196.624 l 116.551 196.624 l 116.551 195.999 l 116.551 195.343 116.27 195.28 116.16 195.28 c 115.785 195.28 115.738 195.78 115.738 195.843 c 115.738 198.077 l 115.738 198.546 115.738 198.983 115.332 199.405 c 114.895 199.843 114.332 200.014 113.801 200.014 c 112.879 200.014 112.113 199.499 112.113 198.749 c 112.113 198.421 112.332 198.218 112.629 198.218 c 112.941 198.218 113.145 198.452 113.145 198.733 c 113.145 198.874 113.082 199.249 112.566 199.249 c 112.863 199.655 113.426 199.764 113.785 199.764 c 114.332 199.764 114.973 199.327 114.973 198.343 c 114.973 197.921 l 114.395 197.889 113.613 197.858 112.91 197.514 c 112.066 197.139 111.785 196.561 111.785 196.061 c 111.785 195.155 112.863 194.874 113.582 194.874 c 114.316 194.874 114.832 195.327 115.051 195.843 c 115.082 195.405 115.395 194.936 115.926 194.936 c 116.16 194.936 116.832 195.093 116.832 195.999 c h 114.973 196.561 m 114.973 195.499 114.16 195.124 113.66 195.124 c 113.113 195.124 112.645 195.514 112.645 196.077 c 112.645 196.686 113.113 197.624 114.973 197.686 c h 121.055 196.436 m 121.055 197.03 120.727 197.358 120.586 197.499 c 120.211 197.858 119.773 197.952 119.305 198.03 c 118.68 198.155 117.93 198.311 117.93 198.952 c 117.93 199.343 118.227 199.811 119.18 199.811 c 120.414 199.811 120.477 198.796 120.492 198.452 c 120.508 198.343 120.633 198.343 120.633 198.343 c 120.773 198.343 120.773 198.405 120.773 198.624 c 120.773 199.749 l 120.773 199.936 120.773 200.014 120.648 200.014 c 120.602 200.014 120.57 200.014 120.43 199.889 c 120.398 199.843 120.289 199.733 120.242 199.702 c 119.82 200.014 119.352 200.014 119.18 200.014 c 117.82 200.014 117.398 199.264 117.398 198.639 c 117.398 198.249 117.57 197.936 117.867 197.686 c 118.227 197.389 118.555 197.327 119.352 197.171 c 119.602 197.124 120.523 196.952 120.523 196.139 c 120.523 195.577 120.133 195.124 119.258 195.124 c 118.305 195.124 117.914 195.764 117.695 196.718 c 117.664 196.858 117.648 196.905 117.539 196.905 c 117.398 196.905 117.398 196.827 117.398 196.624 c 117.398 195.139 l 117.398 194.952 117.398 194.874 117.523 194.874 c 117.57 194.874 117.586 194.889 117.789 195.093 c 117.82 195.124 117.82 195.139 118.023 195.358 c 118.508 194.889 119.023 194.874 119.258 194.874 c 120.539 194.874 121.055 195.624 121.055 196.436 c h f 5.688 180.999 m 5.688 181.343 l 5.094 181.343 4.812 181.343 4.812 181.686 c 4.812 183.827 l 4.812 184.78 4.812 185.139 4.453 185.53 c 4.297 185.733 3.938 185.952 3.281 185.952 c 2.344 185.952 1.844 185.28 1.672 184.874 c 1.656 184.874 l 1.656 188.78 l 0.047 188.655 l 0.047 188.296 l 0.828 188.296 0.922 188.218 0.922 187.671 c 0.922 181.843 l 0.922 181.343 0.797 181.343 0.047 181.343 c 0.047 180.999 l 1.312 181.03 l 2.562 180.999 l 2.562 181.343 l 1.812 181.343 1.688 181.343 1.688 181.843 c 1.688 183.905 l 1.688 185.077 2.484 185.702 3.203 185.702 c 3.906 185.702 4.031 185.093 4.031 184.468 c 4.031 181.843 l 4.031 181.343 3.906 181.343 3.156 181.343 c 3.156 180.999 l 4.422 181.03 l h 10.578 182.327 m 10.578 182.436 10.484 182.468 10.422 182.468 c 10.328 182.468 10.297 182.405 10.281 182.311 c 9.891 181.155 8.875 181.155 8.766 181.155 c 8.203 181.155 7.766 181.499 7.5 181.905 c 7.172 182.436 7.172 183.186 7.172 183.593 c 10.297 183.593 l 10.531 183.593 10.578 183.593 10.578 183.827 c 10.578 184.936 9.969 186.014 8.562 186.014 c 7.266 186.014 6.234 184.858 6.234 183.468 c 6.234 181.968 7.406 180.874 8.703 180.874 c 10.062 180.874 10.578 182.124 10.578 182.327 c h 9.828 183.827 m 7.172 183.827 l 7.25 185.499 8.188 185.764 8.562 185.764 c 9.719 185.764 9.828 184.264 9.828 183.827 c h 16.887 180.999 m 16.887 181.343 l 16.293 181.343 16.012 181.343 16.012 181.686 c 16.012 183.827 l 16.012 184.78 16.012 185.139 15.652 185.53 c 15.496 185.733 15.137 185.952 14.48 185.952 c 13.668 185.952 13.137 185.468 12.824 184.78 c 12.824 185.952 l 11.246 185.827 l 11.246 185.483 l 12.027 185.483 12.121 185.405 12.121 184.858 c 12.121 181.843 l 12.121 181.343 11.996 181.343 11.246 181.343 c 11.246 180.999 l 12.512 181.03 l 13.762 180.999 l 13.762 181.343 l 13.012 181.343 12.887 181.343 12.887 181.843 c 12.887 183.905 l 12.887 185.077 13.684 185.702 14.402 185.702 c 15.105 185.702 15.23 185.093 15.23 184.468 c 15.23 181.843 l 15.23 181.343 15.105 181.343 14.355 181.343 c 14.355 180.999 l 15.621 181.03 l h 23.027 180.999 m 23.027 181.343 l 22.246 181.343 22.152 181.421 22.152 181.968 c 22.152 188.78 l 20.543 188.655 l 20.543 188.296 l 21.324 188.296 21.418 188.218 21.418 187.671 c 21.418 185.249 l 21.09 185.655 20.605 185.952 19.996 185.952 c 18.684 185.952 17.496 184.858 17.496 183.405 c 17.496 181.983 18.605 180.874 19.871 180.874 c 20.59 180.874 21.105 181.249 21.371 181.608 c 21.371 180.874 l h 21.371 182.327 m 21.371 182.124 21.371 182.093 21.262 181.905 c 20.918 181.374 20.418 181.124 19.934 181.124 c 19.434 181.124 19.027 181.421 18.762 181.843 c 18.465 182.296 18.434 182.936 18.434 183.389 c 18.434 183.811 18.449 184.483 18.777 184.983 c 19.012 185.327 19.434 185.702 20.043 185.702 c 20.434 185.702 20.902 185.53 21.262 185.03 c 21.371 184.843 21.371 184.811 21.371 184.624 c h 27.434 185.264 m 27.434 185.624 27.09 185.952 26.605 185.952 c 25.793 185.952 25.387 185.202 25.23 184.718 c 25.23 185.952 l 23.668 185.827 l 23.668 185.483 l 24.449 185.483 24.543 185.405 24.543 184.858 c 24.543 181.843 l 24.543 181.343 24.418 181.343 23.668 181.343 c 23.668 180.999 l 24.949 181.03 l 25.387 181.03 25.918 181.03 26.371 180.999 c 26.371 181.343 l 26.137 181.343 l 25.309 181.343 25.277 181.468 25.277 181.874 c 25.277 183.593 l 25.277 184.702 25.746 185.702 26.605 185.702 c 26.684 185.702 26.699 185.702 26.73 185.686 c 26.699 185.686 26.465 185.546 26.465 185.249 c 26.465 184.936 26.699 184.78 26.949 184.78 c 27.152 184.78 27.434 184.905 27.434 185.264 c h 32.41 182.327 m 32.41 182.436 32.316 182.468 32.254 182.468 c 32.16 182.468 32.129 182.405 32.113 182.311 c 31.723 181.155 30.707 181.155 30.598 181.155 c 30.035 181.155 29.598 181.499 29.332 181.905 c 29.004 182.436 29.004 183.186 29.004 183.593 c 32.129 183.593 l 32.363 183.593 32.41 183.593 32.41 183.827 c 32.41 184.936 31.801 186.014 30.395 186.014 c 29.098 186.014 28.066 184.858 28.066 183.468 c 28.066 181.968 29.238 180.874 30.535 180.874 c 31.895 180.874 32.41 182.124 32.41 182.327 c h 31.66 183.827 m 29.004 183.827 l 29.082 185.499 30.02 185.764 30.395 185.764 c 31.551 185.764 31.66 184.264 31.66 183.827 c h 36.797 185.264 m 36.797 185.624 36.453 185.952 35.969 185.952 c 35.156 185.952 34.75 185.202 34.594 184.718 c 34.594 185.952 l 33.031 185.827 l 33.031 185.483 l 33.812 185.483 33.906 185.405 33.906 184.858 c 33.906 181.843 l 33.906 181.343 33.781 181.343 33.031 181.343 c 33.031 180.999 l 34.312 181.03 l 34.75 181.03 35.281 181.03 35.734 180.999 c 35.734 181.343 l 35.5 181.343 l 34.672 181.343 34.641 181.468 34.641 181.874 c 34.641 183.593 l 34.641 184.702 35.109 185.702 35.969 185.702 c 36.047 185.702 36.062 185.702 36.094 185.686 c 36.062 185.686 35.828 185.546 35.828 185.249 c 35.828 184.936 36.062 184.78 36.312 184.78 c 36.516 184.78 36.797 184.905 36.797 185.264 c h 39.879 180.999 m 39.879 181.343 l 39.145 181.343 39.098 181.405 39.098 181.843 c 39.098 185.952 l 37.535 185.827 l 37.535 185.483 l 38.254 185.483 38.363 185.405 38.363 184.858 c 38.363 181.843 l 38.363 181.343 38.238 181.343 37.488 181.343 c 37.488 180.999 l 38.723 181.03 l 39.113 181.03 39.504 181.014 39.879 180.999 c h 39.27 187.764 m 39.27 188.061 39.004 188.358 38.676 188.358 c 38.285 188.358 38.066 188.046 38.066 187.764 c 38.066 187.468 38.316 187.171 38.66 187.171 c 39.035 187.171 39.27 187.483 39.27 187.764 c h 43.941 182.389 m 43.941 183.03 l 43.66 183.03 l 43.66 182.405 l 43.66 181.577 43.332 181.155 42.91 181.155 c 42.16 181.155 42.16 182.171 42.16 182.358 c 42.16 185.483 l 43.77 185.483 l 43.77 185.827 l 42.16 185.827 l 42.16 187.889 l 41.879 187.889 l 41.863 186.968 41.535 185.764 40.441 185.733 c 40.441 185.483 l 41.395 185.483 l 41.395 182.389 l 41.395 181.014 42.426 180.874 42.832 180.874 c 43.629 180.874 43.941 181.671 43.941 182.389 c h 52.973 182.327 m 52.973 182.436 52.848 182.436 52.816 182.436 c 52.723 182.436 52.691 182.405 52.676 182.327 c 52.348 181.296 51.629 181.155 51.207 181.155 c 50.613 181.155 49.629 181.639 49.629 183.436 c 49.629 185.264 50.551 185.733 51.145 185.733 c 51.238 185.733 51.941 185.733 52.332 185.327 c 51.879 185.296 51.816 184.952 51.816 184.811 c 51.816 184.514 52.02 184.296 52.332 184.296 c 52.613 184.296 52.848 184.483 52.848 184.811 c 52.848 185.577 51.988 186.014 51.129 186.014 c 49.723 186.014 48.691 184.811 48.691 183.421 c 48.691 181.983 49.801 180.874 51.113 180.874 c 52.613 180.874 52.973 182.218 52.973 182.327 c h 58.562 183.389 m 58.562 184.827 57.438 186.014 56.078 186.014 c 54.688 186.014 53.594 184.796 53.594 183.389 c 53.594 181.952 54.766 180.874 56.078 180.874 c 57.422 180.874 58.562 181.968 58.562 183.389 c h 57.625 183.483 m 57.625 183.077 57.625 182.483 57.375 181.983 c 57.141 181.483 56.641 181.155 56.078 181.155 c 55.594 181.155 55.109 181.389 54.812 181.905 c 54.531 182.405 54.531 183.077 54.531 183.483 c 54.531 183.921 54.531 184.53 54.797 185.014 c 55.094 185.53 55.625 185.764 56.078 185.764 c 56.562 185.764 57.047 185.53 57.344 185.046 c 57.625 184.561 57.625 183.905 57.625 183.483 c h 67.988 180.999 m 67.988 181.343 l 67.41 181.343 67.129 181.343 67.113 181.686 c 67.113 183.827 l 67.113 184.78 67.113 185.139 66.77 185.53 c 66.613 185.733 66.238 185.952 65.582 185.952 c 64.645 185.952 64.16 185.28 63.973 184.858 c 63.801 185.827 62.973 185.952 62.473 185.952 c 61.66 185.952 61.129 185.468 60.816 184.78 c 60.816 185.952 l 59.238 185.827 l 59.238 185.483 l 60.02 185.483 60.113 185.405 60.113 184.858 c 60.113 181.843 l 60.113 181.343 59.988 181.343 59.238 181.343 c 59.238 180.999 l 60.504 181.03 l 61.754 180.999 l 61.754 181.343 l 61.004 181.343 60.879 181.343 60.879 181.843 c 60.879 183.905 l 60.879 185.077 61.676 185.702 62.395 185.702 c 63.098 185.702 63.223 185.093 63.223 184.468 c 63.223 181.843 l 63.223 181.343 63.098 181.343 62.348 181.343 c 62.348 180.999 l 63.613 181.03 l 64.879 180.999 l 64.879 181.343 l 64.129 181.343 64.004 181.343 64.004 181.843 c 64.004 183.905 l 64.004 185.077 64.801 185.702 65.504 185.702 c 66.223 185.702 66.348 185.093 66.348 184.468 c 66.348 181.843 l 66.348 181.343 66.223 181.343 65.473 181.343 c 65.473 180.999 l 66.738 181.03 l h 77.332 180.999 m 77.332 181.343 l 76.754 181.343 76.473 181.343 76.457 181.686 c 76.457 183.827 l 76.457 184.78 76.457 185.139 76.113 185.53 c 75.957 185.733 75.582 185.952 74.926 185.952 c 73.988 185.952 73.504 185.28 73.316 184.858 c 73.145 185.827 72.316 185.952 71.816 185.952 c 71.004 185.952 70.473 185.468 70.16 184.78 c 70.16 185.952 l 68.582 185.827 l 68.582 185.483 l 69.363 185.483 69.457 185.405 69.457 184.858 c 69.457 181.843 l 69.457 181.343 69.332 181.343 68.582 181.343 c 68.582 180.999 l 69.848 181.03 l 71.098 180.999 l 71.098 181.343 l 70.348 181.343 70.223 181.343 70.223 181.843 c 70.223 183.905 l 70.223 185.077 71.02 185.702 71.738 185.702 c 72.441 185.702 72.566 185.093 72.566 184.468 c 72.566 181.843 l 72.566 181.343 72.441 181.343 71.691 181.343 c 71.691 180.999 l 72.957 181.03 l 74.223 180.999 l 74.223 181.343 l 73.473 181.343 73.348 181.343 73.348 181.843 c 73.348 183.905 l 73.348 185.077 74.145 185.702 74.848 185.702 c 75.566 185.702 75.691 185.093 75.691 184.468 c 75.691 181.843 l 75.691 181.343 75.566 181.343 74.816 181.343 c 74.816 180.999 l 76.082 181.03 l h 82.844 183.389 m 82.844 184.827 81.719 186.014 80.359 186.014 c 78.969 186.014 77.875 184.796 77.875 183.389 c 77.875 181.952 79.047 180.874 80.359 180.874 c 81.703 180.874 82.844 181.968 82.844 183.389 c h 81.906 183.483 m 81.906 183.077 81.906 182.483 81.656 181.983 c 81.422 181.483 80.922 181.155 80.359 181.155 c 79.875 181.155 79.391 181.389 79.094 181.905 c 78.812 182.405 78.812 183.077 78.812 183.483 c 78.812 183.921 78.812 184.53 79.078 185.014 c 79.375 185.53 79.906 185.764 80.359 185.764 c 80.844 185.764 81.328 185.53 81.625 185.046 c 81.906 184.561 81.906 183.905 81.906 183.483 c h 89.066 180.999 m 89.066 181.343 l 88.285 181.343 88.191 181.421 88.191 181.968 c 88.191 188.78 l 86.582 188.655 l 86.582 188.296 l 87.363 188.296 87.457 188.218 87.457 187.671 c 87.457 185.249 l 87.129 185.655 86.645 185.952 86.035 185.952 c 84.723 185.952 83.535 184.858 83.535 183.405 c 83.535 181.983 84.645 180.874 85.91 180.874 c 86.629 180.874 87.145 181.249 87.41 181.608 c 87.41 180.874 l h 87.41 182.327 m 87.41 182.124 87.41 182.093 87.301 181.905 c 86.957 181.374 86.457 181.124 85.973 181.124 c 85.473 181.124 85.066 181.421 84.801 181.843 c 84.504 182.296 84.473 182.936 84.473 183.389 c 84.473 183.811 84.488 184.483 84.816 184.983 c 85.051 185.327 85.473 185.702 86.082 185.702 c 86.473 185.702 86.941 185.53 87.301 185.03 c 87.41 184.843 87.41 184.811 87.41 184.624 c h 94.676 183.389 m 94.676 184.827 93.551 186.014 92.191 186.014 c 90.801 186.014 89.707 184.796 89.707 183.389 c 89.707 181.952 90.879 180.874 92.191 180.874 c 93.535 180.874 94.676 181.968 94.676 183.389 c h 93.738 183.483 m 93.738 183.077 93.738 182.483 93.488 181.983 c 93.254 181.483 92.754 181.155 92.191 181.155 c 91.707 181.155 91.223 181.389 90.926 181.905 c 90.645 182.405 90.645 183.077 90.645 183.483 c 90.645 183.921 90.645 184.53 90.91 185.014 c 91.207 185.53 91.738 185.764 92.191 185.764 c 92.676 185.764 93.16 185.53 93.457 185.046 c 93.738 184.561 93.738 183.905 93.738 183.483 c h 104.738 180.999 m 104.738 181.343 l 104.145 181.343 103.863 181.343 103.863 181.686 c 103.863 183.827 l 103.863 184.78 103.863 185.139 103.504 185.53 c 103.348 185.733 102.988 185.952 102.332 185.952 c 101.52 185.952 100.988 185.468 100.676 184.78 c 100.676 185.952 l 99.098 185.827 l 99.098 185.483 l 99.879 185.483 99.973 185.405 99.973 184.858 c 99.973 181.843 l 99.973 181.343 99.848 181.343 99.098 181.343 c 99.098 180.999 l 100.363 181.03 l 101.613 180.999 l 101.613 181.343 l 100.863 181.343 100.738 181.343 100.738 181.843 c 100.738 183.905 l 100.738 185.077 101.535 185.702 102.254 185.702 c 102.957 185.702 103.082 185.093 103.082 184.468 c 103.082 181.843 l 103.082 181.343 102.957 181.343 102.207 181.343 c 102.207 180.999 l 103.473 181.03 l h 107.738 180.999 m 107.738 181.343 l 107.004 181.343 106.957 181.405 106.957 181.843 c 106.957 185.952 l 105.395 185.827 l 105.395 185.483 l 106.113 185.483 106.223 185.405 106.223 184.858 c 106.223 181.843 l 106.223 181.343 106.098 181.343 105.348 181.343 c 105.348 180.999 l 106.582 181.03 l 106.973 181.03 107.363 181.014 107.738 180.999 c h 107.129 187.764 m 107.129 188.061 106.863 188.358 106.535 188.358 c 106.145 188.358 105.926 188.046 105.926 187.764 c 105.926 187.468 106.176 187.171 106.52 187.171 c 106.895 187.171 107.129 187.483 107.129 187.764 c h 112.109 182.436 m 112.109 183.03 111.781 183.358 111.641 183.499 c 111.266 183.858 110.828 183.952 110.359 184.03 c 109.734 184.155 108.984 184.311 108.984 184.952 c 108.984 185.343 109.281 185.811 110.234 185.811 c 111.469 185.811 111.531 184.796 111.547 184.452 c 111.562 184.343 111.688 184.343 111.688 184.343 c 111.828 184.343 111.828 184.405 111.828 184.624 c 111.828 185.749 l 111.828 185.936 111.828 186.014 111.703 186.014 c 111.656 186.014 111.625 186.014 111.484 185.889 c 111.453 185.843 111.344 185.733 111.297 185.702 c 110.875 186.014 110.406 186.014 110.234 186.014 c 108.875 186.014 108.453 185.264 108.453 184.639 c 108.453 184.249 108.625 183.936 108.922 183.686 c 109.281 183.389 109.609 183.327 110.406 183.171 c 110.656 183.124 111.578 182.952 111.578 182.139 c 111.578 181.577 111.188 181.124 110.312 181.124 c 109.359 181.124 108.969 181.764 108.75 182.718 c 108.719 182.858 108.703 182.905 108.594 182.905 c 108.453 182.905 108.453 182.827 108.453 182.624 c 108.453 181.139 l 108.453 180.952 108.453 180.874 108.578 180.874 c 108.625 180.874 108.641 180.889 108.844 181.093 c 108.875 181.124 108.875 181.139 109.078 181.358 c 109.562 180.889 110.078 180.874 110.312 180.874 c 111.594 180.874 112.109 181.624 112.109 182.436 c h 115.355 180.999 m 115.355 181.343 l 114.605 181.343 114.48 181.343 114.48 181.843 c 114.48 188.78 l 112.871 188.655 l 112.871 188.296 l 113.652 188.296 113.746 188.218 113.746 187.671 c 113.746 181.843 l 113.746 181.343 113.621 181.343 112.871 181.343 c 112.871 180.999 l 114.105 181.03 l h 117.883 181.014 m 117.883 181.733 117.602 182.186 117.164 182.186 c 116.773 182.186 116.57 181.889 116.57 181.593 c 116.57 181.296 116.758 180.999 117.164 180.999 c 117.32 180.999 117.477 181.061 117.602 181.171 c 117.633 180.296 117.32 179.608 116.82 179.077 c 116.758 179.014 116.742 178.999 116.742 178.968 c 116.742 178.874 116.805 178.843 116.852 178.843 c 116.992 178.843 117.883 179.718 117.883 181.014 c h f 4.344 168.327 m 4.344 168.436 4.25 168.468 4.188 168.468 c 4.094 168.468 4.062 168.405 4.047 168.311 c 3.656 167.155 2.641 167.155 2.531 167.155 c 1.969 167.155 1.531 167.499 1.266 167.905 c 0.938 168.436 0.938 169.186 0.938 169.593 c 4.062 169.593 l 4.297 169.593 4.344 169.593 4.344 169.827 c 4.344 170.936 3.734 172.014 2.328 172.014 c 1.031 172.014 0 170.858 0 169.468 c 0 167.968 1.172 166.874 2.469 166.874 c 3.828 166.874 4.344 168.124 4.344 168.327 c h 3.594 169.827 m 0.938 169.827 l 1.016 171.499 1.953 171.764 2.328 171.764 c 3.484 171.764 3.594 170.264 3.594 169.827 c h 8.371 168.389 m 8.371 169.03 l 8.09 169.03 l 8.09 168.405 l 8.09 167.577 7.762 167.155 7.34 167.155 c 6.59 167.155 6.59 168.171 6.59 168.358 c 6.59 171.483 l 8.199 171.483 l 8.199 171.827 l 6.59 171.827 l 6.59 173.889 l 6.309 173.889 l 6.293 172.968 5.965 171.764 4.871 171.733 c 4.871 171.483 l 5.824 171.483 l 5.824 168.389 l 5.824 167.014 6.855 166.874 7.262 166.874 c 8.059 166.874 8.371 167.671 8.371 168.389 c h 16.465 168.389 m 16.465 169.03 l 16.184 169.03 l 16.184 168.405 l 16.184 167.577 15.855 167.155 15.434 167.155 c 14.684 167.155 14.684 168.171 14.684 168.358 c 14.684 171.483 l 16.293 171.483 l 16.293 171.827 l 14.684 171.827 l 14.684 173.889 l 14.402 173.889 l 14.387 172.968 14.059 171.764 12.965 171.733 c 12.965 171.483 l 13.918 171.483 l 13.918 168.389 l 13.918 167.014 14.949 166.874 15.355 166.874 c 16.152 166.874 16.465 167.671 16.465 168.389 c h 21.754 168.327 m 21.754 168.436 21.66 168.468 21.598 168.468 c 21.504 168.468 21.473 168.405 21.457 168.311 c 21.066 167.155 20.051 167.155 19.941 167.155 c 19.379 167.155 18.941 167.499 18.676 167.905 c 18.348 168.436 18.348 169.186 18.348 169.593 c 21.473 169.593 l 21.707 169.593 21.754 169.593 21.754 169.827 c 21.754 170.936 21.145 172.014 19.738 172.014 c 18.441 172.014 17.41 170.858 17.41 169.468 c 17.41 167.968 18.582 166.874 19.879 166.874 c 21.238 166.874 21.754 168.124 21.754 168.327 c h 21.004 169.827 m 18.348 169.827 l 18.426 171.499 19.363 171.764 19.738 171.764 c 20.895 171.764 21.004 170.264 21.004 169.827 c h 31.176 166.999 m 31.176 167.343 l 30.598 167.343 30.316 167.343 30.301 167.686 c 30.301 169.827 l 30.301 170.78 30.301 171.139 29.957 171.53 c 29.801 171.733 29.426 171.952 28.77 171.952 c 27.832 171.952 27.348 171.28 27.16 170.858 c 26.988 171.827 26.16 171.952 25.66 171.952 c 24.848 171.952 24.316 171.468 24.004 170.78 c 24.004 171.952 l 22.426 171.827 l 22.426 171.483 l 23.207 171.483 23.301 171.405 23.301 170.858 c 23.301 167.843 l 23.301 167.343 23.176 167.343 22.426 167.343 c 22.426 166.999 l 23.691 167.03 l 24.941 166.999 l 24.941 167.343 l 24.191 167.343 24.066 167.343 24.066 167.843 c 24.066 169.905 l 24.066 171.077 24.863 171.702 25.582 171.702 c 26.285 171.702 26.41 171.093 26.41 170.468 c 26.41 167.843 l 26.41 167.343 26.285 167.343 25.535 167.343 c 25.535 166.999 l 26.801 167.03 l 28.066 166.999 l 28.066 167.343 l 27.316 167.343 27.191 167.343 27.191 167.843 c 27.191 169.905 l 27.191 171.077 27.988 171.702 28.691 171.702 c 29.41 171.702 29.535 171.093 29.535 170.468 c 29.535 167.843 l 29.535 167.343 29.41 167.343 28.66 167.343 c 28.66 166.999 l 29.926 167.03 l h 37.25 169.421 m 37.25 170.843 36.156 171.952 34.906 171.952 c 34.031 171.952 33.562 171.452 33.328 171.218 c 33.328 171.952 l 31.719 171.827 l 31.719 171.483 l 32.516 171.483 32.594 171.405 32.594 170.921 c 32.594 165.671 l 32.594 165.171 32.469 165.171 31.719 165.171 c 31.719 164.827 l 32.969 164.858 l 34.234 164.827 l 34.234 165.171 l 33.484 165.171 33.359 165.171 33.359 165.671 c 33.359 167.655 l 33.422 167.483 33.891 166.874 34.75 166.874 c 36.078 166.874 37.25 167.968 37.25 169.421 c h 36.312 169.421 m 36.312 168.061 35.531 167.124 34.703 167.124 c 34.25 167.124 33.828 167.343 33.531 167.811 c 33.359 168.046 33.359 168.046 33.359 168.28 c 33.359 170.78 l 33.688 171.343 34.234 171.671 34.812 171.671 c 35.625 171.671 36.312 170.686 36.312 169.421 c h 42.922 169.389 m 42.922 170.827 41.797 172.014 40.438 172.014 c 39.047 172.014 37.953 170.796 37.953 169.389 c 37.953 167.952 39.125 166.874 40.438 166.874 c 41.781 166.874 42.922 167.968 42.922 169.389 c h 41.984 169.483 m 41.984 169.077 41.984 168.483 41.734 167.983 c 41.5 167.483 41 167.155 40.438 167.155 c 39.953 167.155 39.469 167.389 39.172 167.905 c 38.891 168.405 38.891 169.077 38.891 169.483 c 38.891 169.921 38.891 170.53 39.156 171.014 c 39.453 171.53 39.984 171.764 40.438 171.764 c 40.922 171.764 41.406 171.53 41.703 171.046 c 41.984 170.561 41.984 169.905 41.984 169.483 c h 47.316 171.264 m 47.316 171.624 46.973 171.952 46.488 171.952 c 45.676 171.952 45.27 171.202 45.113 170.718 c 45.113 171.952 l 43.551 171.827 l 43.551 171.483 l 44.332 171.483 44.426 171.405 44.426 170.858 c 44.426 167.843 l 44.426 167.343 44.301 167.343 43.551 167.343 c 43.551 166.999 l 44.832 167.03 l 45.27 167.03 45.801 167.03 46.254 166.999 c 46.254 167.343 l 46.02 167.343 l 45.191 167.343 45.16 167.468 45.16 167.874 c 45.16 169.593 l 45.16 170.702 45.629 171.702 46.488 171.702 c 46.566 171.702 46.582 171.702 46.613 171.686 c 46.582 171.686 46.348 171.546 46.348 171.249 c 46.348 170.936 46.582 170.78 46.832 170.78 c 47.035 170.78 47.316 170.905 47.316 171.264 c h 57.285 166.999 m 57.285 167.343 l 56.504 167.343 56.41 167.421 56.41 167.968 c 56.41 174.78 l 54.801 174.655 l 54.801 174.296 l 55.582 174.296 55.676 174.218 55.676 173.671 c 55.676 171.249 l 55.348 171.655 54.863 171.952 54.254 171.952 c 52.941 171.952 51.754 170.858 51.754 169.405 c 51.754 167.983 52.863 166.874 54.129 166.874 c 54.848 166.874 55.363 167.249 55.629 167.608 c 55.629 166.874 l h 55.629 168.327 m 55.629 168.124 55.629 168.093 55.52 167.905 c 55.176 167.374 54.676 167.124 54.191 167.124 c 53.691 167.124 53.285 167.421 53.02 167.843 c 52.723 168.296 52.691 168.936 52.691 169.389 c 52.691 169.811 52.707 170.483 53.035 170.983 c 53.27 171.327 53.691 171.702 54.301 171.702 c 54.691 171.702 55.16 171.53 55.52 171.03 c 55.629 170.843 55.629 170.811 55.629 170.624 c h 60.379 166.999 m 60.379 167.343 l 59.645 167.343 59.598 167.405 59.598 167.843 c 59.598 171.952 l 58.035 171.827 l 58.035 171.483 l 58.754 171.483 58.863 171.405 58.863 170.858 c 58.863 167.843 l 58.863 167.343 58.738 167.343 57.988 167.343 c 57.988 166.999 l 59.223 167.03 l 59.613 167.03 60.004 167.014 60.379 166.999 c h 59.77 173.764 m 59.77 174.061 59.504 174.358 59.176 174.358 c 58.785 174.358 58.566 174.046 58.566 173.764 c 58.566 173.468 58.816 173.171 59.16 173.171 c 59.535 173.171 59.77 173.483 59.77 173.764 c h 66.125 167.999 m 66.125 168.624 l 65.844 168.624 l 65.844 167.999 l 65.844 167.343 65.562 167.28 65.453 167.28 c 65.078 167.28 65.031 167.78 65.031 167.843 c 65.031 170.077 l 65.031 170.546 65.031 170.983 64.625 171.405 c 64.188 171.843 63.625 172.014 63.094 172.014 c 62.172 172.014 61.406 171.499 61.406 170.749 c 61.406 170.421 61.625 170.218 61.922 170.218 c 62.234 170.218 62.438 170.452 62.438 170.733 c 62.438 170.874 62.375 171.249 61.859 171.249 c 62.156 171.655 62.719 171.764 63.078 171.764 c 63.625 171.764 64.266 171.327 64.266 170.343 c 64.266 169.921 l 63.688 169.889 62.906 169.858 62.203 169.514 c 61.359 169.139 61.078 168.561 61.078 168.061 c 61.078 167.155 62.156 166.874 62.875 166.874 c 63.609 166.874 64.125 167.327 64.344 167.843 c 64.375 167.405 64.688 166.936 65.219 166.936 c 65.453 166.936 66.125 167.093 66.125 167.999 c h 64.266 168.561 m 64.266 167.499 63.453 167.124 62.953 167.124 c 62.406 167.124 61.938 167.514 61.938 168.077 c 61.938 168.686 62.406 169.624 64.266 169.686 c h 75.426 166.999 m 75.426 167.343 l 74.848 167.343 74.566 167.343 74.551 167.686 c 74.551 169.827 l 74.551 170.78 74.551 171.139 74.207 171.53 c 74.051 171.733 73.676 171.952 73.02 171.952 c 72.082 171.952 71.598 171.28 71.41 170.858 c 71.238 171.827 70.41 171.952 69.91 171.952 c 69.098 171.952 68.566 171.468 68.254 170.78 c 68.254 171.952 l 66.676 171.827 l 66.676 171.483 l 67.457 171.483 67.551 171.405 67.551 170.858 c 67.551 167.843 l 67.551 167.343 67.426 167.343 66.676 167.343 c 66.676 166.999 l 67.941 167.03 l 69.191 166.999 l 69.191 167.343 l 68.441 167.343 68.316 167.343 68.316 167.843 c 68.316 169.905 l 68.316 171.077 69.113 171.702 69.832 171.702 c 70.535 171.702 70.66 171.093 70.66 170.468 c 70.66 167.843 l 70.66 167.343 70.535 167.343 69.785 167.343 c 69.785 166.999 l 71.051 167.03 l 72.316 166.999 l 72.316 167.343 l 71.566 167.343 71.441 167.343 71.441 167.843 c 71.441 169.905 l 71.441 171.077 72.238 171.702 72.941 171.702 c 73.66 171.702 73.785 171.093 73.785 170.468 c 73.785 167.843 l 73.785 167.343 73.66 167.343 72.91 167.343 c 72.91 166.999 l 74.176 167.03 l h 84.055 168.327 m 84.055 168.436 83.93 168.436 83.898 168.436 c 83.805 168.436 83.773 168.405 83.758 168.327 c 83.43 167.296 82.711 167.155 82.289 167.155 c 81.695 167.155 80.711 167.639 80.711 169.436 c 80.711 171.264 81.633 171.733 82.227 171.733 c 82.32 171.733 83.023 171.733 83.414 171.327 c 82.961 171.296 82.898 170.952 82.898 170.811 c 82.898 170.514 83.102 170.296 83.414 170.296 c 83.695 170.296 83.93 170.483 83.93 170.811 c 83.93 171.577 83.07 172.014 82.211 172.014 c 80.805 172.014 79.773 170.811 79.773 169.421 c 79.773 167.983 80.883 166.874 82.195 166.874 c 83.695 166.874 84.055 168.218 84.055 168.327 c h 89.645 169.389 m 89.645 170.827 88.52 172.014 87.16 172.014 c 85.77 172.014 84.676 170.796 84.676 169.389 c 84.676 167.952 85.848 166.874 87.16 166.874 c 88.504 166.874 89.645 167.968 89.645 169.389 c h 88.707 169.483 m 88.707 169.077 88.707 168.483 88.457 167.983 c 88.223 167.483 87.723 167.155 87.16 167.155 c 86.676 167.155 86.191 167.389 85.895 167.905 c 85.613 168.405 85.613 169.077 85.613 169.483 c 85.613 169.921 85.613 170.53 85.879 171.014 c 86.176 171.53 86.707 171.764 87.16 171.764 c 87.645 171.764 88.129 171.53 88.426 171.046 c 88.707 170.561 88.707 169.905 88.707 169.483 c h 95.965 166.999 m 95.965 167.343 l 95.371 167.343 95.09 167.343 95.09 167.686 c 95.09 169.827 l 95.09 170.78 95.09 171.139 94.73 171.53 c 94.574 171.733 94.215 171.952 93.559 171.952 c 92.746 171.952 92.215 171.468 91.902 170.78 c 91.902 171.952 l 90.324 171.827 l 90.324 171.483 l 91.105 171.483 91.199 171.405 91.199 170.858 c 91.199 167.843 l 91.199 167.343 91.074 167.343 90.324 167.343 c 90.324 166.999 l 91.59 167.03 l 92.84 166.999 l 92.84 167.343 l 92.09 167.343 91.965 167.343 91.965 167.843 c 91.965 169.905 l 91.965 171.077 92.762 171.702 93.48 171.702 c 94.184 171.702 94.309 171.093 94.309 170.468 c 94.309 167.843 l 94.309 167.343 94.184 167.343 93.434 167.343 c 93.434 166.999 l 94.699 167.03 l h 101.637 171.53 m 101.637 171.718 101.496 172.077 101.059 172.077 c 100.84 172.077 100.34 171.999 99.871 171.546 c 99.402 171.921 98.934 171.952 98.684 171.952 c 97.637 171.952 96.871 171.171 96.871 170.311 c 96.871 169.827 97.121 169.389 97.402 169.155 c 97.246 168.999 97.043 168.624 97.043 168.233 c 97.043 167.889 97.199 167.452 97.543 167.233 c 96.871 167.046 96.512 166.561 96.512 166.108 c 96.512 165.311 97.621 164.686 98.996 164.686 c 100.309 164.686 101.48 165.264 101.48 166.139 c 101.48 166.53 101.324 167.093 100.746 167.421 c 100.152 167.733 99.512 167.733 98.824 167.733 c 98.543 167.733 98.059 167.733 97.98 167.733 c 97.621 167.78 97.387 168.124 97.387 168.483 c 97.387 168.53 97.387 168.796 97.574 169.014 c 98.012 168.702 98.48 168.671 98.684 168.671 c 99.73 168.671 100.496 169.436 100.496 170.311 c 100.496 170.718 100.324 171.139 100.043 171.389 c 100.449 171.764 100.855 171.827 101.043 171.827 c 101.043 171.827 101.121 171.827 101.168 171.811 c 101.043 171.764 100.98 171.655 100.98 171.514 c 100.98 171.327 101.121 171.186 101.309 171.186 c 101.418 171.186 101.637 171.264 101.637 171.53 c h 99.668 170.311 m 99.668 170.014 99.652 169.655 99.48 169.374 c 99.387 169.233 99.137 168.921 98.684 168.921 c 97.715 168.921 97.715 170.046 97.715 170.311 c 97.715 170.608 97.73 170.968 97.887 171.249 c 97.98 171.374 98.23 171.686 98.684 171.686 c 99.668 171.686 99.668 170.577 99.668 170.311 c h 100.887 166.108 m 100.887 165.514 100.105 164.952 98.996 164.952 c 97.871 164.952 97.09 165.514 97.09 166.108 c 97.09 166.624 97.527 167.046 98.012 167.077 c 98.668 167.077 l 99.637 167.077 100.887 167.077 100.887 166.108 c h 107.801 166.999 m 107.801 167.343 l 107.004 167.343 106.926 167.421 106.926 167.968 c 106.926 171.952 l 105.27 171.827 l 105.27 171.483 l 106.051 171.483 106.145 171.405 106.145 170.858 c 106.145 168.858 l 106.145 167.889 105.613 167.124 104.785 167.124 c 103.848 167.124 103.801 167.655 103.801 168.233 c 103.801 171.952 l 102.16 171.827 l 102.16 171.483 l 103.035 171.483 103.035 171.452 103.035 170.452 c 103.035 168.764 l 103.035 167.889 103.035 166.874 104.738 166.874 c 105.363 166.874 105.863 167.186 106.176 167.889 c 106.176 166.874 l h 112.691 168.327 m 112.691 168.436 112.598 168.468 112.535 168.468 c 112.441 168.468 112.41 168.405 112.395 168.311 c 112.004 167.155 110.988 167.155 110.879 167.155 c 110.316 167.155 109.879 167.499 109.613 167.905 c 109.285 168.436 109.285 169.186 109.285 169.593 c 112.41 169.593 l 112.645 169.593 112.691 169.593 112.691 169.827 c 112.691 170.936 112.082 172.014 110.676 172.014 c 109.379 172.014 108.348 170.858 108.348 169.468 c 108.348 167.968 109.52 166.874 110.816 166.874 c 112.176 166.874 112.691 168.124 112.691 168.327 c h 111.941 169.827 m 109.285 169.827 l 109.363 171.499 110.301 171.764 110.676 171.764 c 111.832 171.764 111.941 170.264 111.941 169.827 c h f 3.766 157.264 m 3.766 157.624 3.422 157.952 2.938 157.952 c 2.125 157.952 1.719 157.202 1.562 156.718 c 1.562 157.952 l 0 157.827 l 0 157.483 l 0.781 157.483 0.875 157.405 0.875 156.858 c 0.875 153.843 l 0.875 153.343 0.75 153.343 0 153.343 c 0 152.999 l 1.281 153.03 l 1.719 153.03 2.25 153.03 2.703 152.999 c 2.703 153.343 l 2.469 153.343 l 1.641 153.343 1.609 153.468 1.609 153.874 c 1.609 155.593 l 1.609 156.702 2.078 157.702 2.938 157.702 c 3.016 157.702 3.031 157.702 3.062 157.686 c 3.031 157.686 2.797 157.546 2.797 157.249 c 2.797 156.936 3.031 156.78 3.281 156.78 c 3.484 156.78 3.766 156.905 3.766 157.264 c h 10.082 152.999 m 10.082 153.343 l 9.488 153.343 9.207 153.343 9.207 153.686 c 9.207 155.827 l 9.207 156.78 9.207 157.139 8.848 157.53 c 8.691 157.733 8.332 157.952 7.676 157.952 c 6.738 157.952 6.238 157.28 6.066 156.874 c 6.051 156.874 l 6.051 160.78 l 4.441 160.655 l 4.441 160.296 l 5.223 160.296 5.316 160.218 5.316 159.671 c 5.316 153.843 l 5.316 153.343 5.191 153.343 4.441 153.343 c 4.441 152.999 l 5.707 153.03 l 6.957 152.999 l 6.957 153.343 l 6.207 153.343 6.082 153.343 6.082 153.843 c 6.082 155.905 l 6.082 157.077 6.879 157.702 7.598 157.702 c 8.301 157.702 8.426 157.093 8.426 156.468 c 8.426 153.843 l 8.426 153.343 8.301 153.343 7.551 153.343 c 7.551 152.999 l 8.816 153.03 l h 15.598 155.389 m 15.598 156.827 14.473 158.014 13.113 158.014 c 11.723 158.014 10.629 156.796 10.629 155.389 c 10.629 153.952 11.801 152.874 13.113 152.874 c 14.457 152.874 15.598 153.968 15.598 155.389 c h 14.66 155.483 m 14.66 155.077 14.66 154.483 14.41 153.983 c 14.176 153.483 13.676 153.155 13.113 153.155 c 12.629 153.155 12.145 153.389 11.848 153.905 c 11.566 154.405 11.566 155.077 11.566 155.483 c 11.566 155.921 11.566 156.53 11.832 157.014 c 12.129 157.53 12.66 157.764 13.113 157.764 c 13.598 157.764 14.082 157.53 14.379 157.046 c 14.66 156.561 14.66 155.905 14.66 155.483 c h 21.918 152.999 m 21.918 153.343 l 21.324 153.343 21.043 153.343 21.043 153.686 c 21.043 155.827 l 21.043 156.78 21.043 157.139 20.684 157.53 c 20.527 157.733 20.168 157.952 19.512 157.952 c 18.699 157.952 18.168 157.468 17.855 156.78 c 17.855 157.952 l 16.277 157.827 l 16.277 157.483 l 17.059 157.483 17.152 157.405 17.152 156.858 c 17.152 153.843 l 17.152 153.343 17.027 153.343 16.277 153.343 c 16.277 152.999 l 17.543 153.03 l 18.793 152.999 l 18.793 153.343 l 18.043 153.343 17.918 153.343 17.918 153.843 c 17.918 155.905 l 17.918 157.077 18.715 157.702 19.434 157.702 c 20.137 157.702 20.262 157.093 20.262 156.468 c 20.262 153.843 l 20.262 153.343 20.137 153.343 19.387 153.343 c 19.387 152.999 l 20.652 153.03 l h 26.809 154.327 m 26.809 154.436 26.684 154.436 26.652 154.436 c 26.559 154.436 26.527 154.405 26.512 154.327 c 26.184 153.296 25.465 153.155 25.043 153.155 c 24.449 153.155 23.465 153.639 23.465 155.436 c 23.465 157.264 24.387 157.733 24.98 157.733 c 25.074 157.733 25.777 157.733 26.168 157.327 c 25.715 157.296 25.652 156.952 25.652 156.811 c 25.652 156.514 25.855 156.296 26.168 156.296 c 26.449 156.296 26.684 156.483 26.684 156.811 c 26.684 157.577 25.824 158.014 24.965 158.014 c 23.559 158.014 22.527 156.811 22.527 155.421 c 22.527 153.983 23.637 152.874 24.949 152.874 c 26.449 152.874 26.809 154.218 26.809 154.327 c h 33.117 152.999 m 33.117 153.343 l 32.32 153.343 32.242 153.421 32.242 153.968 c 32.242 157.952 l 30.586 157.827 l 30.586 157.483 l 31.367 157.483 31.461 157.405 31.461 156.858 c 31.461 154.858 l 31.461 153.889 30.93 153.124 30.102 153.124 c 29.164 153.124 29.117 153.655 29.117 154.233 c 29.117 157.952 l 27.477 157.827 l 27.477 157.483 l 28.352 157.483 28.352 157.452 28.352 156.452 c 28.352 154.764 l 28.352 153.889 28.352 152.874 30.055 152.874 c 30.68 152.874 31.18 153.186 31.492 153.889 c 31.492 152.874 l h 37.383 154.436 m 37.383 155.03 37.055 155.358 36.914 155.499 c 36.539 155.858 36.102 155.952 35.633 156.03 c 35.008 156.155 34.258 156.311 34.258 156.952 c 34.258 157.343 34.555 157.811 35.508 157.811 c 36.742 157.811 36.805 156.796 36.82 156.452 c 36.836 156.343 36.961 156.343 36.961 156.343 c 37.102 156.343 37.102 156.405 37.102 156.624 c 37.102 157.749 l 37.102 157.936 37.102 158.014 36.977 158.014 c 36.93 158.014 36.898 158.014 36.758 157.889 c 36.727 157.843 36.617 157.733 36.57 157.702 c 36.148 158.014 35.68 158.014 35.508 158.014 c 34.148 158.014 33.727 157.264 33.727 156.639 c 33.727 156.249 33.898 155.936 34.195 155.686 c 34.555 155.389 34.883 155.327 35.68 155.171 c 35.93 155.124 36.852 154.952 36.852 154.139 c 36.852 153.577 36.461 153.124 35.586 153.124 c 34.633 153.124 34.242 153.764 34.023 154.718 c 33.992 154.858 33.977 154.905 33.867 154.905 c 33.727 154.905 33.727 154.827 33.727 154.624 c 33.727 153.139 l 33.727 152.952 33.727 152.874 33.852 152.874 c 33.898 152.874 33.914 152.889 34.117 153.093 c 34.148 153.124 34.148 153.139 34.352 153.358 c 34.836 152.889 35.352 152.874 35.586 152.874 c 36.867 152.874 37.383 153.624 37.383 154.436 c h 39.926 153.593 m 39.926 153.921 39.645 154.186 39.332 154.186 c 39.004 154.186 38.738 153.921 38.738 153.593 c 38.738 153.264 39.004 152.999 39.332 152.999 c 39.645 152.999 39.926 153.264 39.926 153.593 c h 51.602 158.561 m 51.602 159.671 50.492 160.655 48.961 160.655 c 45.008 160.655 l 45.008 160.296 l 45.273 160.296 l 46.148 160.296 46.164 160.186 46.164 159.78 c 46.164 153.874 l 46.164 153.468 46.148 153.343 45.273 153.343 c 45.008 153.343 l 45.008 152.999 l 45.398 153.03 46.227 153.03 46.648 153.03 c 47.086 153.03 47.93 153.03 48.32 152.999 c 48.32 153.343 l 48.039 153.343 l 47.18 153.343 47.164 153.468 47.164 153.874 c 47.164 156.546 l 49.055 156.546 l 50.398 156.546 51.602 157.452 51.602 158.561 c h 50.461 158.561 m 50.461 158.046 50.461 156.827 48.68 156.827 c 47.133 156.827 l 47.133 159.858 l 47.133 160.218 47.148 160.296 47.68 160.296 c 48.68 160.296 l 50.461 160.296 50.461 159.108 50.461 158.561 c h 58.254 152.999 m 58.254 153.343 l 57.66 153.343 57.379 153.343 57.379 153.686 c 57.379 155.827 l 57.379 156.78 57.379 157.139 57.02 157.53 c 56.863 157.733 56.504 157.952 55.848 157.952 c 54.91 157.952 54.41 157.28 54.238 156.874 c 54.223 156.874 l 54.223 160.78 l 52.613 160.655 l 52.613 160.296 l 53.395 160.296 53.488 160.218 53.488 159.671 c 53.488 153.843 l 53.488 153.343 53.363 153.343 52.613 153.343 c 52.613 152.999 l 53.879 153.03 l 55.129 152.999 l 55.129 153.343 l 54.379 153.343 54.254 153.343 54.254 153.843 c 54.254 155.905 l 54.254 157.077 55.051 157.702 55.77 157.702 c 56.473 157.702 56.598 157.093 56.598 156.468 c 56.598 153.843 l 56.598 153.343 56.473 153.343 55.723 153.343 c 55.723 152.999 l 56.988 153.03 l h 63.895 153.999 m 63.895 154.624 l 63.613 154.624 l 63.613 153.999 l 63.613 153.343 63.332 153.28 63.223 153.28 c 62.848 153.28 62.801 153.78 62.801 153.843 c 62.801 156.077 l 62.801 156.546 62.801 156.983 62.395 157.405 c 61.957 157.843 61.395 158.014 60.863 158.014 c 59.941 158.014 59.176 157.499 59.176 156.749 c 59.176 156.421 59.395 156.218 59.691 156.218 c 60.004 156.218 60.207 156.452 60.207 156.733 c 60.207 156.874 60.145 157.249 59.629 157.249 c 59.926 157.655 60.488 157.764 60.848 157.764 c 61.395 157.764 62.035 157.327 62.035 156.343 c 62.035 155.921 l 61.457 155.889 60.676 155.858 59.973 155.514 c 59.129 155.139 58.848 154.561 58.848 154.061 c 58.848 153.155 59.926 152.874 60.645 152.874 c 61.379 152.874 61.895 153.327 62.113 153.843 c 62.145 153.405 62.457 152.936 62.988 152.936 c 63.223 152.936 63.895 153.093 63.895 153.999 c h 62.035 154.561 m 62.035 153.499 61.223 153.124 60.723 153.124 c 60.176 153.124 59.707 153.514 59.707 154.077 c 59.707 154.686 60.176 155.624 62.035 155.686 c h 68.117 154.436 m 68.117 155.03 67.789 155.358 67.648 155.499 c 67.273 155.858 66.836 155.952 66.367 156.03 c 65.742 156.155 64.992 156.311 64.992 156.952 c 64.992 157.343 65.289 157.811 66.242 157.811 c 67.477 157.811 67.539 156.796 67.555 156.452 c 67.57 156.343 67.695 156.343 67.695 156.343 c 67.836 156.343 67.836 156.405 67.836 156.624 c 67.836 157.749 l 67.836 157.936 67.836 158.014 67.711 158.014 c 67.664 158.014 67.633 158.014 67.492 157.889 c 67.461 157.843 67.352 157.733 67.305 157.702 c 66.883 158.014 66.414 158.014 66.242 158.014 c 64.883 158.014 64.461 157.264 64.461 156.639 c 64.461 156.249 64.633 155.936 64.93 155.686 c 65.289 155.389 65.617 155.327 66.414 155.171 c 66.664 155.124 67.586 154.952 67.586 154.139 c 67.586 153.577 67.195 153.124 66.32 153.124 c 65.367 153.124 64.977 153.764 64.758 154.718 c 64.727 154.858 64.711 154.905 64.602 154.905 c 64.461 154.905 64.461 154.827 64.461 154.624 c 64.461 153.139 l 64.461 152.952 64.461 152.874 64.586 152.874 c 64.633 152.874 64.648 152.889 64.852 153.093 c 64.883 153.124 64.883 153.139 65.086 153.358 c 65.57 152.889 66.086 152.874 66.32 152.874 c 67.602 152.874 68.117 153.624 68.117 154.436 c h 73.16 154.327 m 73.16 154.436 73.066 154.468 73.004 154.468 c 72.91 154.468 72.879 154.405 72.863 154.311 c 72.473 153.155 71.457 153.155 71.348 153.155 c 70.785 153.155 70.348 153.499 70.082 153.905 c 69.754 154.436 69.754 155.186 69.754 155.593 c 72.879 155.593 l 73.113 155.593 73.16 155.593 73.16 155.827 c 73.16 156.936 72.551 158.014 71.145 158.014 c 69.848 158.014 68.816 156.858 68.816 155.468 c 68.816 153.968 69.988 152.874 71.285 152.874 c 72.645 152.874 73.16 154.124 73.16 154.327 c h 72.41 155.827 m 69.754 155.827 l 69.832 157.499 70.77 157.764 71.145 157.764 c 72.301 157.764 72.41 156.264 72.41 155.827 c h 76.332 152.999 m 76.332 153.343 l 75.582 153.343 75.457 153.343 75.457 153.843 c 75.457 160.78 l 73.848 160.655 l 73.848 160.296 l 74.629 160.296 74.723 160.218 74.723 159.671 c 74.723 153.843 l 74.723 153.343 74.598 153.343 73.848 153.343 c 73.848 152.999 l 75.082 153.03 l h 79.438 152.999 m 79.438 153.343 l 78.688 153.343 78.562 153.343 78.562 153.843 c 78.562 160.78 l 76.953 160.655 l 76.953 160.296 l 77.734 160.296 77.828 160.218 77.828 159.671 c 77.828 153.843 l 77.828 153.343 77.703 153.343 76.953 153.343 c 76.953 152.999 l 78.188 153.03 l h 85.684 152.999 m 85.684 153.343 l 84.887 153.343 84.809 153.421 84.809 153.968 c 84.809 157.952 l 83.152 157.827 l 83.152 157.483 l 83.934 157.483 84.027 157.405 84.027 156.858 c 84.027 154.858 l 84.027 153.889 83.496 153.124 82.668 153.124 c 81.73 153.124 81.684 153.655 81.684 154.233 c 81.684 157.952 l 80.043 157.827 l 80.043 157.483 l 80.918 157.483 80.918 157.452 80.918 156.452 c 80.918 154.764 l 80.918 153.889 80.918 152.874 82.621 152.874 c 83.246 152.874 83.746 153.186 84.059 153.889 c 84.059 152.874 l h 89.949 154.436 m 89.949 155.03 89.621 155.358 89.48 155.499 c 89.105 155.858 88.668 155.952 88.199 156.03 c 87.574 156.155 86.824 156.311 86.824 156.952 c 86.824 157.343 87.121 157.811 88.074 157.811 c 89.309 157.811 89.371 156.796 89.387 156.452 c 89.402 156.343 89.527 156.343 89.527 156.343 c 89.668 156.343 89.668 156.405 89.668 156.624 c 89.668 157.749 l 89.668 157.936 89.668 158.014 89.543 158.014 c 89.496 158.014 89.465 158.014 89.324 157.889 c 89.293 157.843 89.184 157.733 89.137 157.702 c 88.715 158.014 88.246 158.014 88.074 158.014 c 86.715 158.014 86.293 157.264 86.293 156.639 c 86.293 156.249 86.465 155.936 86.762 155.686 c 87.121 155.389 87.449 155.327 88.246 155.171 c 88.496 155.124 89.418 154.952 89.418 154.139 c 89.418 153.577 89.027 153.124 88.152 153.124 c 87.199 153.124 86.809 153.764 86.59 154.718 c 86.559 154.858 86.543 154.905 86.434 154.905 c 86.293 154.905 86.293 154.827 86.293 154.624 c 86.293 153.139 l 86.293 152.952 86.293 152.874 86.418 152.874 c 86.465 152.874 86.48 152.889 86.684 153.093 c 86.715 153.124 86.715 153.139 86.918 153.358 c 87.402 152.889 87.918 152.874 88.152 152.874 c 89.434 152.874 89.949 153.624 89.949 154.436 c h f 5.688 138.999 m 5.688 139.343 l 5.094 139.343 4.812 139.343 4.812 139.686 c 4.812 141.827 l 4.812 142.78 4.812 143.139 4.453 143.53 c 4.297 143.733 3.938 143.952 3.281 143.952 c 2.344 143.952 1.844 143.28 1.672 142.874 c 1.656 142.874 l 1.656 146.78 l 0.047 146.655 l 0.047 146.296 l 0.828 146.296 0.922 146.218 0.922 145.671 c 0.922 139.843 l 0.922 139.343 0.797 139.343 0.047 139.343 c 0.047 138.999 l 1.312 139.03 l 2.562 138.999 l 2.562 139.343 l 1.812 139.343 1.688 139.343 1.688 139.843 c 1.688 141.905 l 1.688 143.077 2.484 143.702 3.203 143.702 c 3.906 143.702 4.031 143.093 4.031 142.468 c 4.031 139.843 l 4.031 139.343 3.906 139.343 3.156 139.343 c 3.156 138.999 l 4.422 139.03 l h 10.578 140.327 m 10.578 140.436 10.484 140.468 10.422 140.468 c 10.328 140.468 10.297 140.405 10.281 140.311 c 9.891 139.155 8.875 139.155 8.766 139.155 c 8.203 139.155 7.766 139.499 7.5 139.905 c 7.172 140.436 7.172 141.186 7.172 141.593 c 10.297 141.593 l 10.531 141.593 10.578 141.593 10.578 141.827 c 10.578 142.936 9.969 144.014 8.562 144.014 c 7.266 144.014 6.234 142.858 6.234 141.468 c 6.234 139.968 7.406 138.874 8.703 138.874 c 10.062 138.874 10.578 140.124 10.578 140.327 c h 9.828 141.827 m 7.172 141.827 l 7.25 143.499 8.188 143.764 8.562 143.764 c 9.719 143.764 9.828 142.264 9.828 141.827 c h 16.887 138.999 m 16.887 139.343 l 16.293 139.343 16.012 139.343 16.012 139.686 c 16.012 141.827 l 16.012 142.78 16.012 143.139 15.652 143.53 c 15.496 143.733 15.137 143.952 14.48 143.952 c 13.668 143.952 13.137 143.468 12.824 142.78 c 12.824 143.952 l 11.246 143.827 l 11.246 143.483 l 12.027 143.483 12.121 143.405 12.121 142.858 c 12.121 139.843 l 12.121 139.343 11.996 139.343 11.246 139.343 c 11.246 138.999 l 12.512 139.03 l 13.762 138.999 l 13.762 139.343 l 13.012 139.343 12.887 139.343 12.887 139.843 c 12.887 141.905 l 12.887 143.077 13.684 143.702 14.402 143.702 c 15.105 143.702 15.23 143.093 15.23 142.468 c 15.23 139.843 l 15.23 139.343 15.105 139.343 14.355 139.343 c 14.355 138.999 l 15.621 139.03 l h 23.027 138.999 m 23.027 139.343 l 22.246 139.343 22.152 139.421 22.152 139.968 c 22.152 146.78 l 20.543 146.655 l 20.543 146.296 l 21.324 146.296 21.418 146.218 21.418 145.671 c 21.418 143.249 l 21.09 143.655 20.605 143.952 19.996 143.952 c 18.684 143.952 17.496 142.858 17.496 141.405 c 17.496 139.983 18.605 138.874 19.871 138.874 c 20.59 138.874 21.105 139.249 21.371 139.608 c 21.371 138.874 l h 21.371 140.327 m 21.371 140.124 21.371 140.093 21.262 139.905 c 20.918 139.374 20.418 139.124 19.934 139.124 c 19.434 139.124 19.027 139.421 18.762 139.843 c 18.465 140.296 18.434 140.936 18.434 141.389 c 18.434 141.811 18.449 142.483 18.777 142.983 c 19.012 143.327 19.434 143.702 20.043 143.702 c 20.434 143.702 20.902 143.53 21.262 143.03 c 21.371 142.843 21.371 142.811 21.371 142.624 c h 27.434 143.264 m 27.434 143.624 27.09 143.952 26.605 143.952 c 25.793 143.952 25.387 143.202 25.23 142.718 c 25.23 143.952 l 23.668 143.827 l 23.668 143.483 l 24.449 143.483 24.543 143.405 24.543 142.858 c 24.543 139.843 l 24.543 139.343 24.418 139.343 23.668 139.343 c 23.668 138.999 l 24.949 139.03 l 25.387 139.03 25.918 139.03 26.371 138.999 c 26.371 139.343 l 26.137 139.343 l 25.309 139.343 25.277 139.468 25.277 139.874 c 25.277 141.593 l 25.277 142.702 25.746 143.702 26.605 143.702 c 26.684 143.702 26.699 143.702 26.73 143.686 c 26.699 143.686 26.465 143.546 26.465 143.249 c 26.465 142.936 26.699 142.78 26.949 142.78 c 27.152 142.78 27.434 142.905 27.434 143.264 c h 32.41 140.327 m 32.41 140.436 32.316 140.468 32.254 140.468 c 32.16 140.468 32.129 140.405 32.113 140.311 c 31.723 139.155 30.707 139.155 30.598 139.155 c 30.035 139.155 29.598 139.499 29.332 139.905 c 29.004 140.436 29.004 141.186 29.004 141.593 c 32.129 141.593 l 32.363 141.593 32.41 141.593 32.41 141.827 c 32.41 142.936 31.801 144.014 30.395 144.014 c 29.098 144.014 28.066 142.858 28.066 141.468 c 28.066 139.968 29.238 138.874 30.535 138.874 c 31.895 138.874 32.41 140.124 32.41 140.327 c h 31.66 141.827 m 29.004 141.827 l 29.082 143.499 30.02 143.764 30.395 143.764 c 31.551 143.764 31.66 142.264 31.66 141.827 c h 36.797 143.264 m 36.797 143.624 36.453 143.952 35.969 143.952 c 35.156 143.952 34.75 143.202 34.594 142.718 c 34.594 143.952 l 33.031 143.827 l 33.031 143.483 l 33.812 143.483 33.906 143.405 33.906 142.858 c 33.906 139.843 l 33.906 139.343 33.781 139.343 33.031 139.343 c 33.031 138.999 l 34.312 139.03 l 34.75 139.03 35.281 139.03 35.734 138.999 c 35.734 139.343 l 35.5 139.343 l 34.672 139.343 34.641 139.468 34.641 139.874 c 34.641 141.593 l 34.641 142.702 35.109 143.702 35.969 143.702 c 36.047 143.702 36.062 143.702 36.094 143.686 c 36.062 143.686 35.828 143.546 35.828 143.249 c 35.828 142.936 36.062 142.78 36.312 142.78 c 36.516 142.78 36.797 142.905 36.797 143.264 c h 39.879 138.999 m 39.879 139.343 l 39.145 139.343 39.098 139.405 39.098 139.843 c 39.098 143.952 l 37.535 143.827 l 37.535 143.483 l 38.254 143.483 38.363 143.405 38.363 142.858 c 38.363 139.843 l 38.363 139.343 38.238 139.343 37.488 139.343 c 37.488 138.999 l 38.723 139.03 l 39.113 139.03 39.504 139.014 39.879 138.999 c h 39.27 145.764 m 39.27 146.061 39.004 146.358 38.676 146.358 c 38.285 146.358 38.066 146.046 38.066 145.764 c 38.066 145.468 38.316 145.171 38.66 145.171 c 39.035 145.171 39.27 145.483 39.27 145.764 c h 43.941 140.389 m 43.941 141.03 l 43.66 141.03 l 43.66 140.405 l 43.66 139.577 43.332 139.155 42.91 139.155 c 42.16 139.155 42.16 140.171 42.16 140.358 c 42.16 143.483 l 43.77 143.483 l 43.77 143.827 l 42.16 143.827 l 42.16 145.889 l 41.879 145.889 l 41.863 144.968 41.535 143.764 40.441 143.733 c 40.441 143.483 l 41.395 143.483 l 41.395 140.389 l 41.395 139.014 42.426 138.874 42.832 138.874 c 43.629 138.874 43.941 139.671 43.941 140.389 c h 51.176 138.999 m 51.176 139.343 l 50.426 139.343 50.301 139.343 50.301 139.843 c 50.301 146.78 l 48.691 146.655 l 48.691 146.296 l 49.473 146.296 49.566 146.218 49.566 145.671 c 49.566 139.843 l 49.566 139.343 49.441 139.343 48.691 139.343 c 48.691 138.999 l 49.926 139.03 l h 54.188 138.999 m 54.188 139.343 l 53.453 139.343 53.406 139.405 53.406 139.843 c 53.406 143.952 l 51.844 143.827 l 51.844 143.483 l 52.562 143.483 52.672 143.405 52.672 142.858 c 52.672 139.843 l 52.672 139.343 52.547 139.343 51.797 139.343 c 51.797 138.999 l 53.031 139.03 l 53.422 139.03 53.812 139.014 54.188 138.999 c h 53.578 145.764 m 53.578 146.061 53.312 146.358 52.984 146.358 c 52.594 146.358 52.375 146.046 52.375 145.764 c 52.375 145.468 52.625 145.171 52.969 145.171 c 53.344 145.171 53.578 145.483 53.578 145.764 c h 59.965 143.53 m 59.965 143.718 59.824 144.077 59.387 144.077 c 59.168 144.077 58.668 143.999 58.199 143.546 c 57.73 143.921 57.262 143.952 57.012 143.952 c 55.965 143.952 55.199 143.171 55.199 142.311 c 55.199 141.827 55.449 141.389 55.73 141.155 c 55.574 140.999 55.371 140.624 55.371 140.233 c 55.371 139.889 55.527 139.452 55.871 139.233 c 55.199 139.046 54.84 138.561 54.84 138.108 c 54.84 137.311 55.949 136.686 57.324 136.686 c 58.637 136.686 59.809 137.264 59.809 138.139 c 59.809 138.53 59.652 139.093 59.074 139.421 c 58.48 139.733 57.84 139.733 57.152 139.733 c 56.871 139.733 56.387 139.733 56.309 139.733 c 55.949 139.78 55.715 140.124 55.715 140.483 c 55.715 140.53 55.715 140.796 55.902 141.014 c 56.34 140.702 56.809 140.671 57.012 140.671 c 58.059 140.671 58.824 141.436 58.824 142.311 c 58.824 142.718 58.652 143.139 58.371 143.389 c 58.777 143.764 59.184 143.827 59.371 143.827 c 59.371 143.827 59.449 143.827 59.496 143.811 c 59.371 143.764 59.309 143.655 59.309 143.514 c 59.309 143.327 59.449 143.186 59.637 143.186 c 59.746 143.186 59.965 143.264 59.965 143.53 c h 57.996 142.311 m 57.996 142.014 57.98 141.655 57.809 141.374 c 57.715 141.233 57.465 140.921 57.012 140.921 c 56.043 140.921 56.043 142.046 56.043 142.311 c 56.043 142.608 56.059 142.968 56.215 143.249 c 56.309 143.374 56.559 143.686 57.012 143.686 c 57.996 143.686 57.996 142.577 57.996 142.311 c h 59.215 138.108 m 59.215 137.514 58.434 136.952 57.324 136.952 c 56.199 136.952 55.418 137.514 55.418 138.108 c 55.418 138.624 55.855 139.046 56.34 139.077 c 56.996 139.077 l 57.965 139.077 59.215 139.077 59.215 138.108 c h 66.129 138.999 m 66.129 139.343 l 65.332 139.343 65.254 139.421 65.254 139.968 c 65.254 143.952 l 63.598 143.827 l 63.598 143.483 l 64.379 143.483 64.473 143.405 64.473 142.858 c 64.473 140.858 l 64.473 139.889 63.941 139.124 63.113 139.124 c 62.176 139.124 62.129 139.655 62.129 140.233 c 62.129 143.952 l 60.488 143.827 l 60.488 143.483 l 61.363 143.483 61.363 143.452 61.363 142.452 c 61.363 140.764 l 61.363 139.889 61.363 138.874 63.066 138.874 c 63.691 138.874 64.191 139.186 64.504 139.889 c 64.504 138.874 l h 69.223 138.999 m 69.223 139.343 l 68.473 139.343 68.348 139.343 68.348 139.843 c 68.348 146.78 l 66.738 146.655 l 66.738 146.296 l 67.52 146.296 67.613 146.218 67.613 145.671 c 67.613 139.843 l 67.613 139.343 67.488 139.343 66.738 139.343 c 66.738 138.999 l 67.973 139.03 l h 74.875 139.999 m 74.875 140.624 l 74.594 140.624 l 74.594 139.999 l 74.594 139.343 74.312 139.28 74.203 139.28 c 73.828 139.28 73.781 139.78 73.781 139.843 c 73.781 142.077 l 73.781 142.546 73.781 142.983 73.375 143.405 c 72.938 143.843 72.375 144.014 71.844 144.014 c 70.922 144.014 70.156 143.499 70.156 142.749 c 70.156 142.421 70.375 142.218 70.672 142.218 c 70.984 142.218 71.188 142.452 71.188 142.733 c 71.188 142.874 71.125 143.249 70.609 143.249 c 70.906 143.655 71.469 143.764 71.828 143.764 c 72.375 143.764 73.016 143.327 73.016 142.343 c 73.016 141.921 l 72.438 141.889 71.656 141.858 70.953 141.514 c 70.109 141.139 69.828 140.561 69.828 140.061 c 69.828 139.155 70.906 138.874 71.625 138.874 c 72.359 138.874 72.875 139.327 73.094 139.843 c 73.125 139.405 73.438 138.936 73.969 138.936 c 74.203 138.936 74.875 139.093 74.875 139.999 c h 73.016 140.561 m 73.016 139.499 72.203 139.124 71.703 139.124 c 71.156 139.124 70.688 139.514 70.688 140.077 c 70.688 140.686 71.156 141.624 73.016 141.686 c h 84.496 143.483 m 84.496 143.827 l 84.246 143.811 83.918 143.796 83.652 143.796 c 82.684 143.827 l 82.684 143.483 l 83.105 143.468 83.215 143.218 83.215 142.999 c 83.215 142.905 83.199 142.858 83.152 142.733 c 82.012 139.874 l 80.762 142.999 l 80.684 143.139 80.684 143.186 80.684 143.186 c 80.684 143.483 81.121 143.483 81.324 143.483 c 81.324 143.827 l 80.105 143.796 l 79.809 143.796 79.355 143.811 79.027 143.827 c 79.027 143.483 l 79.73 143.483 79.777 143.405 79.918 143.061 c 81.527 139.093 l 81.605 138.936 81.621 138.874 81.762 138.874 c 81.918 138.874 81.949 138.983 81.996 139.093 c 83.465 142.733 l 83.574 142.983 83.762 143.468 84.496 143.483 c h 89.371 140.327 m 89.371 140.436 89.277 140.468 89.215 140.468 c 89.121 140.468 89.09 140.405 89.074 140.311 c 88.684 139.155 87.668 139.155 87.559 139.155 c 86.996 139.155 86.559 139.499 86.293 139.905 c 85.965 140.436 85.965 141.186 85.965 141.593 c 89.09 141.593 l 89.324 141.593 89.371 141.593 89.371 141.827 c 89.371 142.936 88.762 144.014 87.355 144.014 c 86.059 144.014 85.027 142.858 85.027 141.468 c 85.027 139.968 86.199 138.874 87.496 138.874 c 88.855 138.874 89.371 140.124 89.371 140.327 c h 88.621 141.827 m 85.965 141.827 l 86.043 143.499 86.98 143.764 87.355 143.764 c 88.512 143.764 88.621 142.264 88.621 141.827 c h 92.539 138.999 m 92.539 139.343 l 91.789 139.343 91.664 139.343 91.664 139.843 c 91.664 146.78 l 90.055 146.655 l 90.055 146.296 l 90.836 146.296 90.93 146.218 90.93 145.671 c 90.93 139.843 l 90.93 139.343 90.805 139.343 90.055 139.343 c 90.055 138.999 l 91.289 139.03 l h 100.246 140.389 m 100.246 141.03 l 99.965 141.03 l 99.965 140.405 l 99.965 139.577 99.637 139.155 99.215 139.155 c 98.465 139.155 98.465 140.171 98.465 140.358 c 98.465 143.483 l 100.074 143.483 l 100.074 143.827 l 98.465 143.827 l 98.465 145.889 l 98.184 145.889 l 98.168 144.968 97.84 143.764 96.746 143.733 c 96.746 143.483 l 97.699 143.483 l 97.699 140.389 l 97.699 139.014 98.73 138.874 99.137 138.874 c 99.934 138.874 100.246 139.671 100.246 140.389 c h 105.535 140.327 m 105.535 140.436 105.441 140.468 105.379 140.468 c 105.285 140.468 105.254 140.405 105.238 140.311 c 104.848 139.155 103.832 139.155 103.723 139.155 c 103.16 139.155 102.723 139.499 102.457 139.905 c 102.129 140.436 102.129 141.186 102.129 141.593 c 105.254 141.593 l 105.488 141.593 105.535 141.593 105.535 141.827 c 105.535 142.936 104.926 144.014 103.52 144.014 c 102.223 144.014 101.191 142.858 101.191 141.468 c 101.191 139.968 102.363 138.874 103.66 138.874 c 105.02 138.874 105.535 140.124 105.535 140.327 c h 104.785 141.827 m 102.129 141.827 l 102.207 143.499 103.145 143.764 103.52 143.764 c 104.676 143.764 104.785 142.264 104.785 141.827 c h 108.707 138.999 m 108.707 139.343 l 107.957 139.343 107.832 139.343 107.832 139.843 c 107.832 146.78 l 106.223 146.655 l 106.223 146.296 l 107.004 146.296 107.098 146.218 107.098 145.671 c 107.098 139.843 l 107.098 139.343 106.973 139.343 106.223 139.343 c 106.223 138.999 l 107.457 139.03 l h 111.812 138.999 m 111.812 139.343 l 111.062 139.343 110.938 139.343 110.938 139.843 c 110.938 146.78 l 109.328 146.655 l 109.328 146.296 l 110.109 146.296 110.203 146.218 110.203 145.671 c 110.203 139.843 l 110.203 139.343 110.078 139.343 109.328 139.343 c 109.328 138.999 l 110.562 139.03 l h 118.059 138.999 m 118.059 139.343 l 117.262 139.343 117.184 139.421 117.184 139.968 c 117.184 143.952 l 115.527 143.827 l 115.527 143.483 l 116.309 143.483 116.402 143.405 116.402 142.858 c 116.402 140.858 l 116.402 139.889 115.871 139.124 115.043 139.124 c 114.105 139.124 114.059 139.655 114.059 140.233 c 114.059 143.952 l 112.418 143.827 l 112.418 143.483 l 113.293 143.483 113.293 143.452 113.293 142.452 c 113.293 140.764 l 113.293 139.889 113.293 138.874 114.996 138.874 c 115.621 138.874 116.121 139.186 116.434 139.889 c 116.434 138.874 l h 122.324 140.436 m 122.324 141.03 121.996 141.358 121.855 141.499 c 121.48 141.858 121.043 141.952 120.574 142.03 c 119.949 142.155 119.199 142.311 119.199 142.952 c 119.199 143.343 119.496 143.811 120.449 143.811 c 121.684 143.811 121.746 142.796 121.762 142.452 c 121.777 142.343 121.902 142.343 121.902 142.343 c 122.043 142.343 122.043 142.405 122.043 142.624 c 122.043 143.749 l 122.043 143.936 122.043 144.014 121.918 144.014 c 121.871 144.014 121.84 144.014 121.699 143.889 c 121.668 143.843 121.559 143.733 121.512 143.702 c 121.09 144.014 120.621 144.014 120.449 144.014 c 119.09 144.014 118.668 143.264 118.668 142.639 c 118.668 142.249 118.84 141.936 119.137 141.686 c 119.496 141.389 119.824 141.327 120.621 141.171 c 120.871 141.124 121.793 140.952 121.793 140.139 c 121.793 139.577 121.402 139.124 120.527 139.124 c 119.574 139.124 119.184 139.764 118.965 140.718 c 118.934 140.858 118.918 140.905 118.809 140.905 c 118.668 140.905 118.668 140.827 118.668 140.624 c 118.668 139.139 l 118.668 138.952 118.668 138.874 118.793 138.874 c 118.84 138.874 118.855 138.889 119.059 139.093 c 119.09 139.124 119.09 139.139 119.293 139.358 c 119.777 138.889 120.293 138.874 120.527 138.874 c 121.809 138.874 122.324 139.624 122.324 140.436 c h f 5.531 127.421 m 5.531 128.843 4.438 129.952 3.188 129.952 c 2.312 129.952 1.844 129.452 1.609 129.218 c 1.609 129.952 l 0 129.827 l 0 129.483 l 0.797 129.483 0.875 129.405 0.875 128.921 c 0.875 123.671 l 0.875 123.171 0.75 123.171 0 123.171 c 0 122.827 l 1.25 122.858 l 2.516 122.827 l 2.516 123.171 l 1.766 123.171 1.641 123.171 1.641 123.671 c 1.641 125.655 l 1.703 125.483 2.172 124.874 3.031 124.874 c 4.359 124.874 5.531 125.968 5.531 127.421 c h 4.594 127.421 m 4.594 126.061 3.812 125.124 2.984 125.124 c 2.531 125.124 2.109 125.343 1.812 125.811 c 1.641 126.046 1.641 126.046 1.641 126.28 c 1.641 128.78 l 1.969 129.343 2.516 129.671 3.094 129.671 c 3.906 129.671 4.594 128.686 4.594 127.421 c h 10.578 126.327 m 10.578 126.436 10.484 126.468 10.422 126.468 c 10.328 126.468 10.297 126.405 10.281 126.311 c 9.891 125.155 8.875 125.155 8.766 125.155 c 8.203 125.155 7.766 125.499 7.5 125.905 c 7.172 126.436 7.172 127.186 7.172 127.593 c 10.297 127.593 l 10.531 127.593 10.578 127.593 10.578 127.827 c 10.578 128.936 9.969 130.014 8.562 130.014 c 7.266 130.014 6.234 128.858 6.234 127.468 c 6.234 125.968 7.406 124.874 8.703 124.874 c 10.062 124.874 10.578 126.124 10.578 126.327 c h 9.828 127.827 m 7.172 127.827 l 7.25 129.499 8.188 129.764 8.562 129.764 c 9.719 129.764 9.828 128.264 9.828 127.827 c h 13.746 124.999 m 13.746 125.343 l 12.996 125.343 12.871 125.343 12.871 125.843 c 12.871 132.78 l 11.262 132.655 l 11.262 132.296 l 12.043 132.296 12.137 132.218 12.137 131.671 c 12.137 125.843 l 12.137 125.343 12.012 125.343 11.262 125.343 c 11.262 124.999 l 12.496 125.03 l h 16.852 124.999 m 16.852 125.343 l 16.102 125.343 15.977 125.343 15.977 125.843 c 15.977 132.78 l 14.367 132.655 l 14.367 132.296 l 15.148 132.296 15.242 132.218 15.242 131.671 c 15.242 125.843 l 15.242 125.343 15.117 125.343 14.367 125.343 c 14.367 124.999 l 15.602 125.03 l h 21.754 126.327 m 21.754 126.436 21.66 126.468 21.598 126.468 c 21.504 126.468 21.473 126.405 21.457 126.311 c 21.066 125.155 20.051 125.155 19.941 125.155 c 19.379 125.155 18.941 125.499 18.676 125.905 c 18.348 126.436 18.348 127.186 18.348 127.593 c 21.473 127.593 l 21.707 127.593 21.754 127.593 21.754 127.827 c 21.754 128.936 21.145 130.014 19.738 130.014 c 18.441 130.014 17.41 128.858 17.41 127.468 c 17.41 125.968 18.582 124.874 19.879 124.874 c 21.238 124.874 21.754 126.124 21.754 126.327 c h 21.004 127.827 m 18.348 127.827 l 18.426 129.499 19.363 129.764 19.738 129.764 c 20.895 129.764 21.004 128.264 21.004 127.827 c h 28.066 124.999 m 28.066 125.343 l 27.473 125.343 27.191 125.343 27.191 125.686 c 27.191 127.827 l 27.191 128.78 27.191 129.139 26.832 129.53 c 26.676 129.733 26.316 129.952 25.66 129.952 c 24.848 129.952 24.316 129.468 24.004 128.78 c 24.004 129.952 l 22.426 129.827 l 22.426 129.483 l 23.207 129.483 23.301 129.405 23.301 128.858 c 23.301 125.843 l 23.301 125.343 23.176 125.343 22.426 125.343 c 22.426 124.999 l 23.691 125.03 l 24.941 124.999 l 24.941 125.343 l 24.191 125.343 24.066 125.343 24.066 125.843 c 24.066 127.905 l 24.066 129.077 24.863 129.702 25.582 129.702 c 26.285 129.702 26.41 129.093 26.41 128.468 c 26.41 125.843 l 26.41 125.343 26.285 125.343 25.535 125.343 c 25.535 124.999 l 26.801 125.03 l h 32.02 126.389 m 32.02 127.03 l 31.738 127.03 l 31.738 126.405 l 31.738 125.577 31.41 125.155 30.988 125.155 c 30.238 125.155 30.238 126.171 30.238 126.358 c 30.238 129.483 l 31.848 129.483 l 31.848 129.827 l 30.238 129.827 l 30.238 131.889 l 29.957 131.889 l 29.941 130.968 29.613 129.764 28.52 129.733 c 28.52 129.483 l 29.473 129.483 l 29.473 126.389 l 29.473 125.014 30.504 124.874 30.91 124.874 c 31.707 124.874 32.02 125.671 32.02 126.389 c h 37.309 126.327 m 37.309 126.436 37.215 126.468 37.152 126.468 c 37.059 126.468 37.027 126.405 37.012 126.311 c 36.621 125.155 35.605 125.155 35.496 125.155 c 34.934 125.155 34.496 125.499 34.23 125.905 c 33.902 126.436 33.902 127.186 33.902 127.593 c 37.027 127.593 l 37.262 127.593 37.309 127.593 37.309 127.827 c 37.309 128.936 36.699 130.014 35.293 130.014 c 33.996 130.014 32.965 128.858 32.965 127.468 c 32.965 125.968 34.137 124.874 35.434 124.874 c 36.793 124.874 37.309 126.124 37.309 126.327 c h 36.559 127.827 m 33.902 127.827 l 33.98 129.499 34.918 129.764 35.293 129.764 c 36.449 129.764 36.559 128.264 36.559 127.827 c h 41.648 126.436 m 41.648 127.03 41.32 127.358 41.18 127.499 c 40.805 127.858 40.367 127.952 39.898 128.03 c 39.273 128.155 38.523 128.311 38.523 128.952 c 38.523 129.343 38.82 129.811 39.773 129.811 c 41.008 129.811 41.07 128.796 41.086 128.452 c 41.102 128.343 41.227 128.343 41.227 128.343 c 41.367 128.343 41.367 128.405 41.367 128.624 c 41.367 129.749 l 41.367 129.936 41.367 130.014 41.242 130.014 c 41.195 130.014 41.164 130.014 41.023 129.889 c 40.992 129.843 40.883 129.733 40.836 129.702 c 40.414 130.014 39.945 130.014 39.773 130.014 c 38.414 130.014 37.992 129.264 37.992 128.639 c 37.992 128.249 38.164 127.936 38.461 127.686 c 38.82 127.389 39.148 127.327 39.945 127.171 c 40.195 127.124 41.117 126.952 41.117 126.139 c 41.117 125.577 40.727 125.124 39.852 125.124 c 38.898 125.124 38.508 125.764 38.289 126.718 c 38.258 126.858 38.242 126.905 38.133 126.905 c 37.992 126.905 37.992 126.827 37.992 126.624 c 37.992 125.139 l 37.992 124.952 37.992 124.874 38.117 124.874 c 38.164 124.874 38.18 124.889 38.383 125.093 c 38.414 125.124 38.414 125.139 38.617 125.358 c 39.102 124.889 39.617 124.874 39.852 124.874 c 41.133 124.874 41.648 125.624 41.648 126.436 c h 47.941 122.827 m 47.941 123.171 l 47.191 123.171 47.066 123.171 47.066 123.671 c 47.066 129.952 l 46.816 129.952 l 46.395 128.936 l 46.254 129.249 45.785 129.952 44.895 129.952 c 43.598 129.952 42.41 128.858 42.41 127.405 c 42.41 126.014 43.504 124.874 44.801 124.874 c 45.582 124.874 46.051 125.358 46.285 125.686 c 46.285 123.671 l 46.285 123.171 46.176 123.171 45.426 123.171 c 45.426 122.827 l 46.676 122.858 l h 46.332 126.53 m 46.332 126.171 46.129 125.843 45.879 125.577 c 45.738 125.421 45.379 125.124 44.848 125.124 c 44.035 125.124 43.348 126.124 43.348 127.405 c 43.348 128.733 44.129 129.671 44.957 129.671 c 45.848 129.671 46.332 128.702 46.332 128.108 c h 53.941 124.999 m 53.941 125.343 l 53.145 125.343 53.066 125.421 53.066 125.968 c 53.066 129.952 l 51.41 129.827 l 51.41 129.483 l 52.191 129.483 52.285 129.405 52.285 128.858 c 52.285 126.858 l 52.285 125.889 51.754 125.124 50.926 125.124 c 49.988 125.124 49.941 125.655 49.941 126.233 c 49.941 129.952 l 48.301 129.827 l 48.301 129.483 l 49.176 129.483 49.176 129.452 49.176 128.452 c 49.176 126.764 l 49.176 125.889 49.176 124.874 50.879 124.874 c 51.504 124.874 52.004 125.186 52.316 125.889 c 52.316 124.874 l h 58.832 126.327 m 58.832 126.436 58.738 126.468 58.676 126.468 c 58.582 126.468 58.551 126.405 58.535 126.311 c 58.145 125.155 57.129 125.155 57.02 125.155 c 56.457 125.155 56.02 125.499 55.754 125.905 c 55.426 126.436 55.426 127.186 55.426 127.593 c 58.551 127.593 l 58.785 127.593 58.832 127.593 58.832 127.827 c 58.832 128.936 58.223 130.014 56.816 130.014 c 55.52 130.014 54.488 128.858 54.488 127.468 c 54.488 125.968 55.66 124.874 56.957 124.874 c 58.316 124.874 58.832 126.124 58.832 126.327 c h 58.082 127.827 m 55.426 127.827 l 55.504 129.499 56.441 129.764 56.816 129.764 c 57.973 129.764 58.082 128.264 58.082 127.827 c h 68.57 129.483 m 68.57 129.827 l 68.32 129.811 67.992 129.796 67.727 129.796 c 66.758 129.827 l 66.758 129.483 l 67.18 129.468 67.289 129.218 67.289 128.999 c 67.289 128.905 67.273 128.858 67.227 128.733 c 66.086 125.874 l 64.836 128.999 l 64.758 129.139 64.758 129.186 64.758 129.186 c 64.758 129.483 65.195 129.483 65.398 129.483 c 65.398 129.827 l 64.18 129.796 l 63.883 129.796 63.43 129.811 63.102 129.827 c 63.102 129.483 l 63.805 129.483 63.852 129.405 63.992 129.061 c 65.602 125.093 l 65.68 124.936 65.695 124.874 65.836 124.874 c 65.992 124.874 66.023 124.983 66.07 125.093 c 67.539 128.733 l 67.648 128.983 67.836 129.468 68.57 129.483 c h 71.555 124.999 m 71.555 125.343 l 70.82 125.343 70.773 125.405 70.773 125.843 c 70.773 129.952 l 69.211 129.827 l 69.211 129.483 l 69.93 129.483 70.039 129.405 70.039 128.858 c 70.039 125.843 l 70.039 125.343 69.914 125.343 69.164 125.343 c 69.164 124.999 l 70.398 125.03 l 70.789 125.03 71.18 125.014 71.555 124.999 c h 70.945 131.764 m 70.945 132.061 70.68 132.358 70.352 132.358 c 69.961 132.358 69.742 132.046 69.742 131.764 c 69.742 131.468 69.992 131.171 70.336 131.171 c 70.711 131.171 70.945 131.483 70.945 131.764 c h 77.582 129.483 m 77.582 129.827 l 77.332 129.811 77.004 129.796 76.738 129.796 c 75.77 129.827 l 75.77 129.483 l 76.191 129.468 76.301 129.218 76.301 128.999 c 76.301 128.905 76.285 128.858 76.238 128.733 c 75.098 125.874 l 73.848 128.999 l 73.77 129.139 73.77 129.186 73.77 129.186 c 73.77 129.483 74.207 129.483 74.41 129.483 c 74.41 129.827 l 73.191 129.796 l 72.895 129.796 72.441 129.811 72.113 129.827 c 72.113 129.483 l 72.816 129.483 72.863 129.405 73.004 129.061 c 74.613 125.093 l 74.691 124.936 74.707 124.874 74.848 124.874 c 75.004 124.874 75.035 124.983 75.082 125.093 c 76.551 128.733 l 76.66 128.983 76.848 129.468 77.582 129.483 c h 82.457 126.327 m 82.457 126.436 82.363 126.468 82.301 126.468 c 82.207 126.468 82.176 126.405 82.16 126.311 c 81.77 125.155 80.754 125.155 80.645 125.155 c 80.082 125.155 79.645 125.499 79.379 125.905 c 79.051 126.436 79.051 127.186 79.051 127.593 c 82.176 127.593 l 82.41 127.593 82.457 127.593 82.457 127.827 c 82.457 128.936 81.848 130.014 80.441 130.014 c 79.145 130.014 78.113 128.858 78.113 127.468 c 78.113 125.968 79.285 124.874 80.582 124.874 c 81.941 124.874 82.457 126.124 82.457 126.327 c h 81.707 127.827 m 79.051 127.827 l 79.129 129.499 80.066 129.764 80.441 129.764 c 81.598 129.764 81.707 128.264 81.707 127.827 c h 86.848 129.264 m 86.848 129.624 86.504 129.952 86.02 129.952 c 85.207 129.952 84.801 129.202 84.645 128.718 c 84.645 129.952 l 83.082 129.827 l 83.082 129.483 l 83.863 129.483 83.957 129.405 83.957 128.858 c 83.957 125.843 l 83.957 125.343 83.832 125.343 83.082 125.343 c 83.082 124.999 l 84.363 125.03 l 84.801 125.03 85.332 125.03 85.785 124.999 c 85.785 125.343 l 85.551 125.343 l 84.723 125.343 84.691 125.468 84.691 125.874 c 84.691 127.593 l 84.691 128.702 85.16 129.702 86.02 129.702 c 86.098 129.702 86.113 129.702 86.145 129.686 c 86.113 129.686 85.879 129.546 85.879 129.249 c 85.879 128.936 86.113 128.78 86.363 128.78 c 86.566 128.78 86.848 128.905 86.848 129.264 c h 91.242 129.264 m 91.242 129.624 90.898 129.952 90.414 129.952 c 89.602 129.952 89.195 129.202 89.039 128.718 c 89.039 129.952 l 87.477 129.827 l 87.477 129.483 l 88.258 129.483 88.352 129.405 88.352 128.858 c 88.352 125.843 l 88.352 125.343 88.227 125.343 87.477 125.343 c 87.477 124.999 l 88.758 125.03 l 89.195 125.03 89.727 125.03 90.18 124.999 c 90.18 125.343 l 89.945 125.343 l 89.117 125.343 89.086 125.468 89.086 125.874 c 89.086 127.593 l 89.086 128.702 89.555 129.702 90.414 129.702 c 90.492 129.702 90.508 129.702 90.539 129.686 c 90.508 129.686 90.273 129.546 90.273 129.249 c 90.273 128.936 90.508 128.78 90.758 128.78 c 90.961 128.78 91.242 128.905 91.242 129.264 c h 96.969 125.999 m 96.969 126.624 l 96.688 126.624 l 96.688 125.999 l 96.688 125.343 96.406 125.28 96.297 125.28 c 95.922 125.28 95.875 125.78 95.875 125.843 c 95.875 128.077 l 95.875 128.546 95.875 128.983 95.469 129.405 c 95.031 129.843 94.469 130.014 93.938 130.014 c 93.016 130.014 92.25 129.499 92.25 128.749 c 92.25 128.421 92.469 128.218 92.766 128.218 c 93.078 128.218 93.281 128.452 93.281 128.733 c 93.281 128.874 93.219 129.249 92.703 129.249 c 93 129.655 93.562 129.764 93.922 129.764 c 94.469 129.764 95.109 129.327 95.109 128.343 c 95.109 127.921 l 94.531 127.889 93.75 127.858 93.047 127.514 c 92.203 127.139 91.922 126.561 91.922 126.061 c 91.922 125.155 93 124.874 93.719 124.874 c 94.453 124.874 94.969 125.327 95.188 125.843 c 95.219 125.405 95.531 124.936 96.062 124.936 c 96.297 124.936 96.969 125.093 96.969 125.999 c h 95.109 126.561 m 95.109 125.499 94.297 125.124 93.797 125.124 c 93.25 125.124 92.781 125.514 92.781 126.077 c 92.781 126.686 93.25 127.624 95.109 127.686 c h 99.316 125.593 m 99.316 125.921 99.035 126.186 98.723 126.186 c 98.395 126.186 98.129 125.921 98.129 125.593 c 98.129 125.264 98.395 124.999 98.723 124.999 c 99.035 124.999 99.316 125.264 99.316 125.593 c h f 9.531 110.999 m 9.531 111.343 l 9.266 111.343 l 8.406 111.343 8.375 111.468 8.375 111.874 c 8.375 117.78 l 8.375 118.186 8.406 118.296 9.266 118.296 c 9.531 118.296 l 9.531 118.655 l 7.641 118.655 l 7.344 118.655 7.344 118.639 7.266 118.436 c 4.812 112.124 l 2.391 118.405 l 2.281 118.655 2.25 118.655 2 118.655 c 0.109 118.655 l 0.109 118.296 l 0.375 118.296 l 1.234 118.296 1.25 118.186 1.25 117.78 c 1.25 112.171 l 1.25 111.874 1.25 111.343 0.109 111.343 c 0.109 110.999 l 1.406 111.03 l 2.719 110.999 l 2.719 111.343 l 1.562 111.343 1.562 111.874 1.562 112.171 c 1.562 118.218 l 1.578 118.218 l 4.281 111.249 l 4.344 111.093 4.391 110.999 4.5 110.999 c 4.625 110.999 4.656 111.093 4.703 111.218 c 7.469 118.296 l 7.469 111.874 l 7.469 111.468 7.453 111.343 6.594 111.343 c 6.312 111.343 l 6.312 110.999 l 6.734 111.03 7.5 111.03 7.938 111.03 c 8.375 111.03 9.125 111.03 9.531 110.999 c h 15.375 111.999 m 15.375 112.624 l 15.094 112.624 l 15.094 111.999 l 15.094 111.343 14.812 111.28 14.703 111.28 c 14.328 111.28 14.281 111.78 14.281 111.843 c 14.281 114.077 l 14.281 114.546 14.281 114.983 13.875 115.405 c 13.438 115.843 12.875 116.014 12.344 116.014 c 11.422 116.014 10.656 115.499 10.656 114.749 c 10.656 114.421 10.875 114.218 11.172 114.218 c 11.484 114.218 11.688 114.452 11.688 114.733 c 11.688 114.874 11.625 115.249 11.109 115.249 c 11.406 115.655 11.969 115.764 12.328 115.764 c 12.875 115.764 13.516 115.327 13.516 114.343 c 13.516 113.921 l 12.938 113.889 12.156 113.858 11.453 113.514 c 10.609 113.139 10.328 112.561 10.328 112.061 c 10.328 111.155 11.406 110.874 12.125 110.874 c 12.859 110.874 13.375 111.327 13.594 111.843 c 13.625 111.405 13.938 110.936 14.469 110.936 c 14.703 110.936 15.375 111.093 15.375 111.999 c h 13.516 112.561 m 13.516 111.499 12.703 111.124 12.203 111.124 c 11.656 111.124 11.188 111.514 11.188 112.077 c 11.188 112.686 11.656 113.624 13.516 113.686 c h 20.223 112.327 m 20.223 112.436 20.129 112.468 20.066 112.468 c 19.973 112.468 19.941 112.405 19.926 112.311 c 19.535 111.155 18.52 111.155 18.41 111.155 c 17.848 111.155 17.41 111.499 17.145 111.905 c 16.816 112.436 16.816 113.186 16.816 113.593 c 19.941 113.593 l 20.176 113.593 20.223 113.593 20.223 113.827 c 20.223 114.936 19.613 116.014 18.207 116.014 c 16.91 116.014 15.879 114.858 15.879 113.468 c 15.879 111.968 17.051 110.874 18.348 110.874 c 19.707 110.874 20.223 112.124 20.223 112.327 c h 19.473 113.827 m 16.816 113.827 l 16.895 115.499 17.832 115.764 18.207 115.764 c 19.363 115.764 19.473 114.264 19.473 113.827 c h 25.191 112.327 m 25.191 112.436 25.066 112.436 25.035 112.436 c 24.941 112.436 24.91 112.405 24.895 112.327 c 24.566 111.296 23.848 111.155 23.426 111.155 c 22.832 111.155 21.848 111.639 21.848 113.436 c 21.848 115.264 22.77 115.733 23.363 115.733 c 23.457 115.733 24.16 115.733 24.551 115.327 c 24.098 115.296 24.035 114.952 24.035 114.811 c 24.035 114.514 24.238 114.296 24.551 114.296 c 24.832 114.296 25.066 114.483 25.066 114.811 c 25.066 115.577 24.207 116.014 23.348 116.014 c 21.941 116.014 20.91 114.811 20.91 113.421 c 20.91 111.983 22.02 110.874 23.332 110.874 c 24.832 110.874 25.191 112.218 25.191 112.327 c h 30.156 112.327 m 30.156 112.436 30.062 112.468 30 112.468 c 29.906 112.468 29.875 112.405 29.859 112.311 c 29.469 111.155 28.453 111.155 28.344 111.155 c 27.781 111.155 27.344 111.499 27.078 111.905 c 26.75 112.436 26.75 113.186 26.75 113.593 c 29.875 113.593 l 30.109 113.593 30.156 113.593 30.156 113.827 c 30.156 114.936 29.547 116.014 28.141 116.014 c 26.844 116.014 25.812 114.858 25.812 113.468 c 25.812 111.968 26.984 110.874 28.281 110.874 c 29.641 110.874 30.156 112.124 30.156 112.327 c h 29.406 113.827 m 26.75 113.827 l 26.828 115.499 27.766 115.764 28.141 115.764 c 29.297 115.764 29.406 114.264 29.406 113.827 c h 36.465 110.999 m 36.465 111.343 l 35.871 111.343 35.59 111.343 35.59 111.686 c 35.59 113.827 l 35.59 114.78 35.59 115.139 35.23 115.53 c 35.074 115.733 34.715 115.952 34.059 115.952 c 33.246 115.952 32.715 115.468 32.402 114.78 c 32.402 115.952 l 30.824 115.827 l 30.824 115.483 l 31.605 115.483 31.699 115.405 31.699 114.858 c 31.699 111.843 l 31.699 111.343 31.574 111.343 30.824 111.343 c 30.824 110.999 l 32.09 111.03 l 33.34 110.999 l 33.34 111.343 l 32.59 111.343 32.465 111.343 32.465 111.843 c 32.465 113.905 l 32.465 115.077 33.262 115.702 33.98 115.702 c 34.684 115.702 34.809 115.093 34.809 114.468 c 34.809 111.843 l 34.809 111.343 34.684 111.343 33.934 111.343 c 33.934 110.999 l 35.199 111.03 l h 42.105 111.999 m 42.105 112.624 l 41.824 112.624 l 41.824 111.999 l 41.824 111.343 41.543 111.28 41.434 111.28 c 41.059 111.28 41.012 111.78 41.012 111.843 c 41.012 114.077 l 41.012 114.546 41.012 114.983 40.605 115.405 c 40.168 115.843 39.605 116.014 39.074 116.014 c 38.152 116.014 37.387 115.499 37.387 114.749 c 37.387 114.421 37.605 114.218 37.902 114.218 c 38.215 114.218 38.418 114.452 38.418 114.733 c 38.418 114.874 38.355 115.249 37.84 115.249 c 38.137 115.655 38.699 115.764 39.059 115.764 c 39.605 115.764 40.246 115.327 40.246 114.343 c 40.246 113.921 l 39.668 113.889 38.887 113.858 38.184 113.514 c 37.34 113.139 37.059 112.561 37.059 112.061 c 37.059 111.155 38.137 110.874 38.855 110.874 c 39.59 110.874 40.105 111.327 40.324 111.843 c 40.355 111.405 40.668 110.936 41.199 110.936 c 41.434 110.936 42.105 111.093 42.105 111.999 c h 40.246 112.561 m 40.246 111.499 39.434 111.124 38.934 111.124 c 38.387 111.124 37.918 111.514 37.918 112.077 c 37.918 112.686 38.387 113.624 40.246 113.686 c h 46.332 112.436 m 46.332 113.03 46.004 113.358 45.863 113.499 c 45.488 113.858 45.051 113.952 44.582 114.03 c 43.957 114.155 43.207 114.311 43.207 114.952 c 43.207 115.343 43.504 115.811 44.457 115.811 c 45.691 115.811 45.754 114.796 45.77 114.452 c 45.785 114.343 45.91 114.343 45.91 114.343 c 46.051 114.343 46.051 114.405 46.051 114.624 c 46.051 115.749 l 46.051 115.936 46.051 116.014 45.926 116.014 c 45.879 116.014 45.848 116.014 45.707 115.889 c 45.676 115.843 45.566 115.733 45.52 115.702 c 45.098 116.014 44.629 116.014 44.457 116.014 c 43.098 116.014 42.676 115.264 42.676 114.639 c 42.676 114.249 42.848 113.936 43.145 113.686 c 43.504 113.389 43.832 113.327 44.629 113.171 c 44.879 113.124 45.801 112.952 45.801 112.139 c 45.801 111.577 45.41 111.124 44.535 111.124 c 43.582 111.124 43.191 111.764 42.973 112.718 c 42.941 112.858 42.926 112.905 42.816 112.905 c 42.676 112.905 42.676 112.827 42.676 112.624 c 42.676 111.139 l 42.676 110.952 42.676 110.874 42.801 110.874 c 42.848 110.874 42.863 110.889 43.066 111.093 c 43.098 111.124 43.098 111.139 43.301 111.358 c 43.785 110.889 44.301 110.874 44.535 110.874 c 45.816 110.874 46.332 111.624 46.332 112.436 c h 55.738 113.389 m 55.738 114.827 54.613 116.014 53.254 116.014 c 51.863 116.014 50.77 114.796 50.77 113.389 c 50.77 111.952 51.941 110.874 53.254 110.874 c 54.598 110.874 55.738 111.968 55.738 113.389 c h 54.801 113.483 m 54.801 113.077 54.801 112.483 54.551 111.983 c 54.316 111.483 53.816 111.155 53.254 111.155 c 52.77 111.155 52.285 111.389 51.988 111.905 c 51.707 112.405 51.707 113.077 51.707 113.483 c 51.707 113.921 51.707 114.53 51.973 115.014 c 52.27 115.53 52.801 115.764 53.254 115.764 c 53.738 115.764 54.223 115.53 54.52 115.046 c 54.801 114.561 54.801 113.905 54.801 113.483 c h 60.137 115.264 m 60.137 115.624 59.793 115.952 59.309 115.952 c 58.496 115.952 58.09 115.202 57.934 114.718 c 57.934 115.952 l 56.371 115.827 l 56.371 115.483 l 57.152 115.483 57.246 115.405 57.246 114.858 c 57.246 111.843 l 57.246 111.343 57.121 111.343 56.371 111.343 c 56.371 110.999 l 57.652 111.03 l 58.09 111.03 58.621 111.03 59.074 110.999 c 59.074 111.343 l 58.84 111.343 l 58.012 111.343 57.98 111.468 57.98 111.874 c 57.98 113.593 l 57.98 114.702 58.449 115.702 59.309 115.702 c 59.387 115.702 59.402 115.702 59.434 115.686 c 59.402 115.686 59.168 115.546 59.168 115.249 c 59.168 114.936 59.402 114.78 59.652 114.78 c 59.855 114.78 60.137 114.905 60.137 115.264 c h 66.457 110.999 m 66.457 111.343 l 65.863 111.343 65.582 111.343 65.582 111.686 c 65.582 113.827 l 65.582 114.78 65.582 115.139 65.223 115.53 c 65.066 115.733 64.707 115.952 64.051 115.952 c 63.238 115.952 62.707 115.468 62.395 114.78 c 62.395 115.952 l 60.816 115.827 l 60.816 115.483 l 61.598 115.483 61.691 115.405 61.691 114.858 c 61.691 111.843 l 61.691 111.343 61.566 111.343 60.816 111.343 c 60.816 110.999 l 62.082 111.03 l 63.332 110.999 l 63.332 111.343 l 62.582 111.343 62.457 111.343 62.457 111.843 c 62.457 113.905 l 62.457 115.077 63.254 115.702 63.973 115.702 c 64.676 115.702 64.801 115.093 64.801 114.468 c 64.801 111.843 l 64.801 111.343 64.676 111.343 63.926 111.343 c 63.926 110.999 l 65.191 111.03 l h 72.098 111.999 m 72.098 112.624 l 71.816 112.624 l 71.816 111.999 l 71.816 111.343 71.535 111.28 71.426 111.28 c 71.051 111.28 71.004 111.78 71.004 111.843 c 71.004 114.077 l 71.004 114.546 71.004 114.983 70.598 115.405 c 70.16 115.843 69.598 116.014 69.066 116.014 c 68.145 116.014 67.379 115.499 67.379 114.749 c 67.379 114.421 67.598 114.218 67.895 114.218 c 68.207 114.218 68.41 114.452 68.41 114.733 c 68.41 114.874 68.348 115.249 67.832 115.249 c 68.129 115.655 68.691 115.764 69.051 115.764 c 69.598 115.764 70.238 115.327 70.238 114.343 c 70.238 113.921 l 69.66 113.889 68.879 113.858 68.176 113.514 c 67.332 113.139 67.051 112.561 67.051 112.061 c 67.051 111.155 68.129 110.874 68.848 110.874 c 69.582 110.874 70.098 111.327 70.316 111.843 c 70.348 111.405 70.66 110.936 71.191 110.936 c 71.426 110.936 72.098 111.093 72.098 111.999 c h 70.238 112.561 m 70.238 111.499 69.426 111.124 68.926 111.124 c 68.379 111.124 67.91 111.514 67.91 112.077 c 67.91 112.686 68.379 113.624 70.238 113.686 c h 76.367 115.264 m 76.367 115.624 76.023 115.952 75.539 115.952 c 74.727 115.952 74.32 115.202 74.164 114.718 c 74.164 115.952 l 72.602 115.827 l 72.602 115.483 l 73.383 115.483 73.477 115.405 73.477 114.858 c 73.477 111.843 l 73.477 111.343 73.352 111.343 72.602 111.343 c 72.602 110.999 l 73.883 111.03 l 74.32 111.03 74.852 111.03 75.305 110.999 c 75.305 111.343 l 75.07 111.343 l 74.242 111.343 74.211 111.468 74.211 111.874 c 74.211 113.593 l 74.211 114.702 74.68 115.702 75.539 115.702 c 75.617 115.702 75.633 115.702 75.664 115.686 c 75.633 115.686 75.398 115.546 75.398 115.249 c 75.398 114.936 75.633 114.78 75.883 114.78 c 76.086 114.78 76.367 114.905 76.367 115.264 c h 81.344 112.327 m 81.344 112.436 81.25 112.468 81.188 112.468 c 81.094 112.468 81.062 112.405 81.047 112.311 c 80.656 111.155 79.641 111.155 79.531 111.155 c 78.969 111.155 78.531 111.499 78.266 111.905 c 77.938 112.436 77.938 113.186 77.938 113.593 c 81.062 113.593 l 81.297 113.593 81.344 113.593 81.344 113.827 c 81.344 114.936 80.734 116.014 79.328 116.014 c 78.031 116.014 77 114.858 77 113.468 c 77 111.968 78.172 110.874 79.469 110.874 c 80.828 110.874 81.344 112.124 81.344 112.327 c h 80.594 113.827 m 77.938 113.827 l 78.016 115.499 78.953 115.764 79.328 115.764 c 80.484 115.764 80.594 114.264 80.594 113.827 c h 91.238 113.421 m 91.238 114.843 90.129 115.952 88.863 115.952 c 87.988 115.952 87.504 115.421 87.316 115.218 c 87.316 118.78 l 85.707 118.655 l 85.707 118.296 l 86.488 118.296 86.582 118.218 86.582 117.671 c 86.582 110.999 l 86.863 110.999 l 87.27 111.686 l 87.426 111.436 87.91 110.874 88.738 110.874 c 90.066 110.874 91.238 111.968 91.238 113.421 c h 90.301 113.436 m 90.301 113.014 90.285 112.343 89.957 111.843 c 89.723 111.499 89.301 111.124 88.691 111.124 c 88.191 111.124 87.785 111.389 87.52 111.811 c 87.348 112.046 87.348 112.077 87.348 112.28 c 87.348 114.577 l 87.348 114.796 87.348 114.811 87.473 114.983 c 87.91 115.608 88.535 115.702 88.801 115.702 c 89.301 115.702 89.707 115.405 89.973 114.983 c 90.27 114.53 90.301 113.889 90.301 113.436 c h 94.488 110.999 m 94.488 111.343 l 93.738 111.343 93.613 111.343 93.613 111.843 c 93.613 118.78 l 92.004 118.655 l 92.004 118.296 l 92.785 118.296 92.879 118.218 92.879 117.671 c 92.879 111.843 l 92.879 111.343 92.754 111.343 92.004 111.343 c 92.004 110.999 l 93.238 111.03 l h 100.141 111.999 m 100.141 112.624 l 99.859 112.624 l 99.859 111.999 l 99.859 111.343 99.578 111.28 99.469 111.28 c 99.094 111.28 99.047 111.78 99.047 111.843 c 99.047 114.077 l 99.047 114.546 99.047 114.983 98.641 115.405 c 98.203 115.843 97.641 116.014 97.109 116.014 c 96.188 116.014 95.422 115.499 95.422 114.749 c 95.422 114.421 95.641 114.218 95.938 114.218 c 96.25 114.218 96.453 114.452 96.453 114.733 c 96.453 114.874 96.391 115.249 95.875 115.249 c 96.172 115.655 96.734 115.764 97.094 115.764 c 97.641 115.764 98.281 115.327 98.281 114.343 c 98.281 113.921 l 97.703 113.889 96.922 113.858 96.219 113.514 c 95.375 113.139 95.094 112.561 95.094 112.061 c 95.094 111.155 96.172 110.874 96.891 110.874 c 97.625 110.874 98.141 111.327 98.359 111.843 c 98.391 111.405 98.703 110.936 99.234 110.936 c 99.469 110.936 100.141 111.093 100.141 111.999 c h 98.281 112.561 m 98.281 111.499 97.469 111.124 96.969 111.124 c 96.422 111.124 95.953 111.514 95.953 112.077 c 95.953 112.686 96.422 113.624 98.281 113.686 c h 106.332 110.999 m 106.332 111.343 l 105.738 111.343 105.457 111.343 105.457 111.686 c 105.457 113.827 l 105.457 114.78 105.457 115.139 105.098 115.53 c 104.941 115.733 104.582 115.952 103.926 115.952 c 103.113 115.952 102.582 115.468 102.27 114.78 c 102.27 115.952 l 100.691 115.827 l 100.691 115.483 l 101.473 115.483 101.566 115.405 101.566 114.858 c 101.566 111.843 l 101.566 111.343 101.441 111.343 100.691 111.343 c 100.691 110.999 l 101.957 111.03 l 103.207 110.999 l 103.207 111.343 l 102.457 111.343 102.332 111.343 102.332 111.843 c 102.332 113.905 l 102.332 115.077 103.129 115.702 103.848 115.702 c 104.551 115.702 104.676 115.093 104.676 114.468 c 104.676 111.843 l 104.676 111.343 104.551 111.343 103.801 111.343 c 103.801 110.999 l 105.066 111.03 l h 112.473 110.999 m 112.473 111.343 l 111.691 111.343 111.598 111.421 111.598 111.968 c 111.598 118.78 l 109.988 118.655 l 109.988 118.296 l 110.77 118.296 110.863 118.218 110.863 117.671 c 110.863 115.249 l 110.535 115.655 110.051 115.952 109.441 115.952 c 108.129 115.952 106.941 114.858 106.941 113.405 c 106.941 111.983 108.051 110.874 109.316 110.874 c 110.035 110.874 110.551 111.249 110.816 111.608 c 110.816 110.874 l h 110.816 112.327 m 110.816 112.124 110.816 112.093 110.707 111.905 c 110.363 111.374 109.863 111.124 109.379 111.124 c 108.879 111.124 108.473 111.421 108.207 111.843 c 107.91 112.296 107.879 112.936 107.879 113.389 c 107.879 113.811 107.895 114.483 108.223 114.983 c 108.457 115.327 108.879 115.702 109.488 115.702 c 109.879 115.702 110.348 115.53 110.707 115.03 c 110.816 114.843 110.816 114.811 110.816 114.624 c h 115.566 110.999 m 115.566 111.343 l 114.832 111.343 114.785 111.405 114.785 111.843 c 114.785 115.952 l 113.223 115.827 l 113.223 115.483 l 113.941 115.483 114.051 115.405 114.051 114.858 c 114.051 111.843 l 114.051 111.343 113.926 111.343 113.176 111.343 c 113.176 110.999 l 114.41 111.03 l 114.801 111.03 115.191 111.014 115.566 110.999 c h 114.957 117.764 m 114.957 118.061 114.691 118.358 114.363 118.358 c 113.973 118.358 113.754 118.046 113.754 117.764 c 113.754 117.468 114.004 117.171 114.348 117.171 c 114.723 117.171 114.957 117.483 114.957 117.764 c h 119.629 112.389 m 119.629 113.03 l 119.348 113.03 l 119.348 112.405 l 119.348 111.577 119.02 111.155 118.598 111.155 c 117.848 111.155 117.848 112.171 117.848 112.358 c 117.848 115.483 l 119.457 115.483 l 119.457 115.827 l 117.848 115.827 l 117.848 117.889 l 117.566 117.889 l 117.551 116.968 117.223 115.764 116.129 115.733 c 116.129 115.483 l 117.082 115.483 l 117.082 112.389 l 117.082 111.014 118.113 110.874 118.52 110.874 c 119.316 110.874 119.629 111.671 119.629 112.389 c h f 5.531 99.421 m 5.531 100.843 4.438 101.952 3.188 101.952 c 2.312 101.952 1.844 101.452 1.609 101.218 c 1.609 101.952 l 0 101.827 l 0 101.483 l 0.797 101.483 0.875 101.405 0.875 100.921 c 0.875 95.671 l 0.875 95.171 0.75 95.171 0 95.171 c 0 94.827 l 1.25 94.858 l 2.516 94.827 l 2.516 95.171 l 1.766 95.171 1.641 95.171 1.641 95.671 c 1.641 97.655 l 1.703 97.483 2.172 96.874 3.031 96.874 c 4.359 96.874 5.531 97.968 5.531 99.421 c h 4.594 99.421 m 4.594 98.061 3.812 97.124 2.984 97.124 c 2.531 97.124 2.109 97.343 1.812 97.811 c 1.641 98.046 1.641 98.046 1.641 98.28 c 1.641 100.78 l 1.969 101.343 2.516 101.671 3.094 101.671 c 3.906 101.671 4.594 100.686 4.594 99.421 c h 11.922 96.999 m 11.922 97.343 l 11.125 97.343 11.047 97.421 11.047 97.968 c 11.047 101.952 l 9.391 101.827 l 9.391 101.483 l 10.172 101.483 10.266 101.405 10.266 100.858 c 10.266 98.858 l 10.266 97.889 9.734 97.124 8.906 97.124 c 7.969 97.124 7.922 97.655 7.922 98.233 c 7.922 101.952 l 6.281 101.827 l 6.281 101.483 l 7.156 101.483 7.156 101.452 7.156 100.452 c 7.156 98.764 l 7.156 97.889 7.156 96.874 8.859 96.874 c 9.484 96.874 9.984 97.186 10.297 97.889 c 10.297 96.874 l h 16.234 101.264 m 16.234 101.624 15.891 101.952 15.406 101.952 c 14.594 101.952 14.188 101.202 14.031 100.718 c 14.031 101.952 l 12.469 101.827 l 12.469 101.483 l 13.25 101.483 13.344 101.405 13.344 100.858 c 13.344 97.843 l 13.344 97.343 13.219 97.343 12.469 97.343 c 12.469 96.999 l 13.75 97.03 l 14.188 97.03 14.719 97.03 15.172 96.999 c 15.172 97.343 l 14.938 97.343 l 14.109 97.343 14.078 97.468 14.078 97.874 c 14.078 99.593 l 14.078 100.702 14.547 101.702 15.406 101.702 c 15.484 101.702 15.5 101.702 15.531 101.686 c 15.5 101.686 15.266 101.546 15.266 101.249 c 15.266 100.936 15.5 100.78 15.75 100.78 c 15.953 100.78 16.234 100.905 16.234 101.264 c h 22.551 96.999 m 22.551 97.343 l 21.754 97.343 21.676 97.421 21.676 97.968 c 21.676 101.952 l 20.02 101.827 l 20.02 101.483 l 20.801 101.483 20.895 101.405 20.895 100.858 c 20.895 98.858 l 20.895 97.889 20.363 97.124 19.535 97.124 c 18.598 97.124 18.551 97.655 18.551 98.233 c 18.551 101.952 l 16.91 101.827 l 16.91 101.483 l 17.785 101.483 17.785 101.452 17.785 100.452 c 17.785 98.764 l 17.785 97.889 17.785 96.874 19.488 96.874 c 20.113 96.874 20.613 97.186 20.926 97.889 c 20.926 96.874 l h 26.816 98.436 m 26.816 99.03 26.488 99.358 26.348 99.499 c 25.973 99.858 25.535 99.952 25.066 100.03 c 24.441 100.155 23.691 100.311 23.691 100.952 c 23.691 101.343 23.988 101.811 24.941 101.811 c 26.176 101.811 26.238 100.796 26.254 100.452 c 26.27 100.343 26.395 100.343 26.395 100.343 c 26.535 100.343 26.535 100.405 26.535 100.624 c 26.535 101.749 l 26.535 101.936 26.535 102.014 26.41 102.014 c 26.363 102.014 26.332 102.014 26.191 101.889 c 26.16 101.843 26.051 101.733 26.004 101.702 c 25.582 102.014 25.113 102.014 24.941 102.014 c 23.582 102.014 23.16 101.264 23.16 100.639 c 23.16 100.249 23.332 99.936 23.629 99.686 c 23.988 99.389 24.316 99.327 25.113 99.171 c 25.363 99.124 26.285 98.952 26.285 98.139 c 26.285 97.577 25.895 97.124 25.02 97.124 c 24.066 97.124 23.676 97.764 23.457 98.718 c 23.426 98.858 23.41 98.905 23.301 98.905 c 23.16 98.905 23.16 98.827 23.16 98.624 c 23.16 97.139 l 23.16 96.952 23.16 96.874 23.285 96.874 c 23.332 96.874 23.348 96.889 23.551 97.093 c 23.582 97.124 23.582 97.139 23.785 97.358 c 24.27 96.889 24.785 96.874 25.02 96.874 c 26.301 96.874 26.816 97.624 26.816 98.436 c h 29.488 97.014 m 29.488 97.733 29.207 98.186 28.77 98.186 c 28.379 98.186 28.176 97.889 28.176 97.593 c 28.176 97.296 28.363 96.999 28.77 96.999 c 28.926 96.999 29.082 97.061 29.207 97.171 c 29.238 96.296 28.926 95.608 28.426 95.077 c 28.363 95.014 28.348 94.999 28.348 94.968 c 28.348 94.874 28.41 94.843 28.457 94.843 c 28.598 94.843 29.488 95.718 29.488 97.014 c h 40.051 96.999 m 40.051 97.343 l 39.254 97.343 39.176 97.421 39.176 97.968 c 39.176 101.952 l 37.52 101.827 l 37.52 101.483 l 38.301 101.483 38.395 101.405 38.395 100.858 c 38.395 98.858 l 38.395 97.889 37.863 97.124 37.035 97.124 c 36.098 97.124 36.051 97.655 36.051 98.233 c 36.051 101.952 l 34.41 101.827 l 34.41 101.483 l 35.285 101.483 35.285 101.452 35.285 100.452 c 35.285 98.764 l 35.285 97.889 35.285 96.874 36.988 96.874 c 37.613 96.874 38.113 97.186 38.426 97.889 c 38.426 96.874 l h 44.004 98.389 m 44.004 99.03 l 43.723 99.03 l 43.723 98.405 l 43.723 97.577 43.395 97.155 42.973 97.155 c 42.223 97.155 42.223 98.171 42.223 98.358 c 42.223 101.483 l 43.832 101.483 l 43.832 101.827 l 42.223 101.827 l 42.223 103.889 l 41.941 103.889 l 41.926 102.968 41.598 101.764 40.504 101.733 c 40.504 101.483 l 41.457 101.483 l 41.457 98.389 l 41.457 97.014 42.488 96.874 42.895 96.874 c 43.691 96.874 44.004 97.671 44.004 98.389 c h 53.035 98.327 m 53.035 98.436 52.941 98.468 52.879 98.468 c 52.785 98.468 52.754 98.405 52.738 98.311 c 52.348 97.155 51.332 97.155 51.223 97.155 c 50.66 97.155 50.223 97.499 49.957 97.905 c 49.629 98.436 49.629 99.186 49.629 99.593 c 52.754 99.593 l 52.988 99.593 53.035 99.593 53.035 99.827 c 53.035 100.936 52.426 102.014 51.02 102.014 c 49.723 102.014 48.691 100.858 48.691 99.468 c 48.691 97.968 49.863 96.874 51.16 96.874 c 52.52 96.874 53.035 98.124 53.035 98.327 c h 52.285 99.827 m 49.629 99.827 l 49.707 101.499 50.645 101.764 51.02 101.764 c 52.176 101.764 52.285 100.264 52.285 99.827 c h 56.207 96.999 m 56.207 97.343 l 55.457 97.343 55.332 97.343 55.332 97.843 c 55.332 104.78 l 53.723 104.655 l 53.723 104.296 l 54.504 104.296 54.598 104.218 54.598 103.671 c 54.598 97.843 l 54.598 97.343 54.473 97.343 53.723 97.343 c 53.723 96.999 l 54.957 97.03 l h 61.109 98.327 m 61.109 98.436 61.016 98.468 60.953 98.468 c 60.859 98.468 60.828 98.405 60.812 98.311 c 60.422 97.155 59.406 97.155 59.297 97.155 c 58.734 97.155 58.297 97.499 58.031 97.905 c 57.703 98.436 57.703 99.186 57.703 99.593 c 60.828 99.593 l 61.062 99.593 61.109 99.593 61.109 99.827 c 61.109 100.936 60.5 102.014 59.094 102.014 c 57.797 102.014 56.766 100.858 56.766 99.468 c 56.766 97.968 57.938 96.874 59.234 96.874 c 60.594 96.874 61.109 98.124 61.109 98.327 c h 60.359 99.827 m 57.703 99.827 l 57.781 101.499 58.719 101.764 59.094 101.764 c 60.25 101.764 60.359 100.264 60.359 99.827 c h 64.184 96.999 m 64.184 97.343 l 63.449 97.343 63.402 97.405 63.402 97.843 c 63.402 101.952 l 61.84 101.827 l 61.84 101.483 l 62.559 101.483 62.668 101.405 62.668 100.858 c 62.668 97.843 l 62.668 97.343 62.543 97.343 61.793 97.343 c 61.793 96.999 l 63.027 97.03 l 63.418 97.03 63.809 97.014 64.184 96.999 c h 63.574 103.764 m 63.574 104.061 63.309 104.358 62.98 104.358 c 62.59 104.358 62.371 104.046 62.371 103.764 c 62.371 103.468 62.621 103.171 62.965 103.171 c 63.34 103.171 63.574 103.483 63.574 103.764 c h 68.523 104.108 m 68.523 104.53 68.102 104.889 67.508 104.889 c 66.727 104.889 65.773 104.296 65.773 103.108 c 65.773 101.827 l 64.898 101.827 l 64.898 101.483 l 65.773 101.483 l 65.773 97.843 l 65.773 97.343 65.648 97.343 64.898 97.343 c 64.898 96.999 l 66.18 97.03 l 66.633 97.03 67.148 97.03 67.602 96.999 c 67.602 97.343 l 67.367 97.343 l 66.539 97.343 66.523 97.468 66.523 97.874 c 66.523 101.483 l 67.789 101.483 l 67.789 101.827 l 66.477 101.827 l 66.477 103.124 l 66.477 104.108 67.023 104.655 67.508 104.655 c 67.555 104.655 67.711 104.655 67.883 104.577 c 67.742 104.53 67.555 104.374 67.555 104.108 c 67.555 103.843 67.727 103.624 68.023 103.624 c 68.352 103.624 68.523 103.843 68.523 104.108 c h 72.613 98.327 m 72.613 98.436 72.52 98.468 72.457 98.468 c 72.363 98.468 72.332 98.405 72.316 98.311 c 71.926 97.155 70.91 97.155 70.801 97.155 c 70.238 97.155 69.801 97.499 69.535 97.905 c 69.207 98.436 69.207 99.186 69.207 99.593 c 72.332 99.593 l 72.566 99.593 72.613 99.593 72.613 99.827 c 72.613 100.936 72.004 102.014 70.598 102.014 c 69.301 102.014 68.27 100.858 68.27 99.468 c 68.27 97.968 69.441 96.874 70.738 96.874 c 72.098 96.874 72.613 98.124 72.613 98.327 c h 71.863 99.827 m 69.207 99.827 l 69.285 101.499 70.223 101.764 70.598 101.764 c 71.754 101.764 71.863 100.264 71.863 99.827 c h 78.926 96.999 m 78.926 97.343 l 78.332 97.343 78.051 97.343 78.051 97.686 c 78.051 99.827 l 78.051 100.78 78.051 101.139 77.691 101.53 c 77.535 101.733 77.176 101.952 76.52 101.952 c 75.707 101.952 75.176 101.468 74.863 100.78 c 74.863 101.952 l 73.285 101.827 l 73.285 101.483 l 74.066 101.483 74.16 101.405 74.16 100.858 c 74.16 97.843 l 74.16 97.343 74.035 97.343 73.285 97.343 c 73.285 96.999 l 74.551 97.03 l 75.801 96.999 l 75.801 97.343 l 75.051 97.343 74.926 97.343 74.926 97.843 c 74.926 99.905 l 74.926 101.077 75.723 101.702 76.441 101.702 c 77.145 101.702 77.27 101.093 77.27 100.468 c 77.27 97.843 l 77.27 97.343 77.145 97.343 76.395 97.343 c 76.395 96.999 l 77.66 97.03 l h 85.066 96.999 m 85.066 97.343 l 84.285 97.343 84.191 97.421 84.191 97.968 c 84.191 104.78 l 82.582 104.655 l 82.582 104.296 l 83.363 104.296 83.457 104.218 83.457 103.671 c 83.457 101.249 l 83.129 101.655 82.645 101.952 82.035 101.952 c 80.723 101.952 79.535 100.858 79.535 99.405 c 79.535 97.983 80.645 96.874 81.91 96.874 c 82.629 96.874 83.145 97.249 83.41 97.608 c 83.41 96.874 l h 83.41 98.327 m 83.41 98.124 83.41 98.093 83.301 97.905 c 82.957 97.374 82.457 97.124 81.973 97.124 c 81.473 97.124 81.066 97.421 80.801 97.843 c 80.504 98.296 80.473 98.936 80.473 99.389 c 80.473 99.811 80.488 100.483 80.816 100.983 c 81.051 101.327 81.473 101.702 82.082 101.702 c 82.473 101.702 82.941 101.53 83.301 101.03 c 83.41 100.843 83.41 100.811 83.41 100.624 c h 94.414 99.389 m 94.414 100.827 93.289 102.014 91.93 102.014 c 90.539 102.014 89.445 100.796 89.445 99.389 c 89.445 97.952 90.617 96.874 91.93 96.874 c 93.273 96.874 94.414 97.968 94.414 99.389 c h 93.477 99.483 m 93.477 99.077 93.477 98.483 93.227 97.983 c 92.992 97.483 92.492 97.155 91.93 97.155 c 91.445 97.155 90.961 97.389 90.664 97.905 c 90.383 98.405 90.383 99.077 90.383 99.483 c 90.383 99.921 90.383 100.53 90.648 101.014 c 90.945 101.53 91.477 101.764 91.93 101.764 c 92.414 101.764 92.898 101.53 93.195 101.046 c 93.477 100.561 93.477 99.905 93.477 99.483 c h 98.812 101.264 m 98.812 101.624 98.469 101.952 97.984 101.952 c 97.172 101.952 96.766 101.202 96.609 100.718 c 96.609 101.952 l 95.047 101.827 l 95.047 101.483 l 95.828 101.483 95.922 101.405 95.922 100.858 c 95.922 97.843 l 95.922 97.343 95.797 97.343 95.047 97.343 c 95.047 96.999 l 96.328 97.03 l 96.766 97.03 97.297 97.03 97.75 96.999 c 97.75 97.343 l 97.516 97.343 l 96.688 97.343 96.656 97.468 96.656 97.874 c 96.656 99.593 l 96.656 100.702 97.125 101.702 97.984 101.702 c 98.062 101.702 98.078 101.702 98.109 101.686 c 98.078 101.686 97.844 101.546 97.844 101.249 c 97.844 100.936 98.078 100.78 98.328 100.78 c 98.531 100.78 98.812 100.905 98.812 101.264 c h 103.785 98.327 m 103.785 98.436 103.66 98.436 103.629 98.436 c 103.535 98.436 103.504 98.405 103.488 98.327 c 103.16 97.296 102.441 97.155 102.02 97.155 c 101.426 97.155 100.441 97.639 100.441 99.436 c 100.441 101.264 101.363 101.733 101.957 101.733 c 102.051 101.733 102.754 101.733 103.145 101.327 c 102.691 101.296 102.629 100.952 102.629 100.811 c 102.629 100.514 102.832 100.296 103.145 100.296 c 103.426 100.296 103.66 100.483 103.66 100.811 c 103.66 101.577 102.801 102.014 101.941 102.014 c 100.535 102.014 99.504 100.811 99.504 99.421 c 99.504 97.983 100.613 96.874 101.926 96.874 c 103.426 96.874 103.785 98.218 103.785 98.327 c h 106.863 96.999 m 106.863 97.343 l 106.129 97.343 106.082 97.405 106.082 97.843 c 106.082 101.952 l 104.52 101.827 l 104.52 101.483 l 105.238 101.483 105.348 101.405 105.348 100.858 c 105.348 97.843 l 105.348 97.343 105.223 97.343 104.473 97.343 c 104.473 96.999 l 105.707 97.03 l 106.098 97.03 106.488 97.014 106.863 96.999 c h 106.254 103.764 m 106.254 104.061 105.988 104.358 105.66 104.358 c 105.27 104.358 105.051 104.046 105.051 103.764 c 105.051 103.468 105.301 103.171 105.645 103.171 c 106.02 103.171 106.254 103.483 106.254 103.764 c h f 8.797 82.999 m 8.797 83.343 l 8.219 83.343 7.938 83.343 7.922 83.686 c 7.922 85.827 l 7.922 86.78 7.922 87.139 7.578 87.53 c 7.422 87.733 7.047 87.952 6.391 87.952 c 5.453 87.952 4.969 87.28 4.781 86.858 c 4.609 87.827 3.781 87.952 3.281 87.952 c 2.469 87.952 1.938 87.468 1.625 86.78 c 1.625 87.952 l 0.047 87.827 l 0.047 87.483 l 0.828 87.483 0.922 87.405 0.922 86.858 c 0.922 83.843 l 0.922 83.343 0.797 83.343 0.047 83.343 c 0.047 82.999 l 1.312 83.03 l 2.562 82.999 l 2.562 83.343 l 1.812 83.343 1.688 83.343 1.688 83.843 c 1.688 85.905 l 1.688 87.077 2.484 87.702 3.203 87.702 c 3.906 87.702 4.031 87.093 4.031 86.468 c 4.031 83.843 l 4.031 83.343 3.906 83.343 3.156 83.343 c 3.156 82.999 l 4.422 83.03 l 5.688 82.999 l 5.688 83.343 l 4.938 83.343 4.812 83.343 4.812 83.843 c 4.812 85.905 l 4.812 87.077 5.609 87.702 6.312 87.702 c 7.031 87.702 7.156 87.093 7.156 86.468 c 7.156 83.843 l 7.156 83.343 7.031 83.343 6.281 83.343 c 6.281 82.999 l 7.547 83.03 l h 14.434 83.999 m 14.434 84.624 l 14.152 84.624 l 14.152 83.999 l 14.152 83.343 13.871 83.28 13.762 83.28 c 13.387 83.28 13.34 83.78 13.34 83.843 c 13.34 86.077 l 13.34 86.546 13.34 86.983 12.934 87.405 c 12.496 87.843 11.934 88.014 11.402 88.014 c 10.48 88.014 9.715 87.499 9.715 86.749 c 9.715 86.421 9.934 86.218 10.23 86.218 c 10.543 86.218 10.746 86.452 10.746 86.733 c 10.746 86.874 10.684 87.249 10.168 87.249 c 10.465 87.655 11.027 87.764 11.387 87.764 c 11.934 87.764 12.574 87.327 12.574 86.343 c 12.574 85.921 l 11.996 85.889 11.215 85.858 10.512 85.514 c 9.668 85.139 9.387 84.561 9.387 84.061 c 9.387 83.155 10.465 82.874 11.184 82.874 c 11.918 82.874 12.434 83.327 12.652 83.843 c 12.684 83.405 12.996 82.936 13.527 82.936 c 13.762 82.936 14.434 83.093 14.434 83.999 c h 12.574 84.561 m 12.574 83.499 11.762 83.124 11.262 83.124 c 10.715 83.124 10.246 83.514 10.246 84.077 c 10.246 84.686 10.715 85.624 12.574 85.686 c h 17.488 82.999 m 17.488 83.343 l 16.738 83.343 16.613 83.343 16.613 83.843 c 16.613 90.78 l 15.004 90.655 l 15.004 90.296 l 15.785 90.296 15.879 90.218 15.879 89.671 c 15.879 83.843 l 15.879 83.343 15.754 83.343 15.004 83.343 c 15.004 82.999 l 16.238 83.03 l h 22.391 84.327 m 22.391 84.436 22.297 84.468 22.234 84.468 c 22.141 84.468 22.109 84.405 22.094 84.311 c 21.703 83.155 20.688 83.155 20.578 83.155 c 20.016 83.155 19.578 83.499 19.312 83.905 c 18.984 84.436 18.984 85.186 18.984 85.593 c 22.109 85.593 l 22.344 85.593 22.391 85.593 22.391 85.827 c 22.391 86.936 21.781 88.014 20.375 88.014 c 19.078 88.014 18.047 86.858 18.047 85.468 c 18.047 83.968 19.219 82.874 20.516 82.874 c 21.875 82.874 22.391 84.124 22.391 84.327 c h 21.641 85.827 m 18.984 85.827 l 19.062 87.499 20 87.764 20.375 87.764 c 21.531 87.764 21.641 86.264 21.641 85.827 c h 26.73 84.436 m 26.73 85.03 26.402 85.358 26.262 85.499 c 25.887 85.858 25.449 85.952 24.98 86.03 c 24.355 86.155 23.605 86.311 23.605 86.952 c 23.605 87.343 23.902 87.811 24.855 87.811 c 26.09 87.811 26.152 86.796 26.168 86.452 c 26.184 86.343 26.309 86.343 26.309 86.343 c 26.449 86.343 26.449 86.405 26.449 86.624 c 26.449 87.749 l 26.449 87.936 26.449 88.014 26.324 88.014 c 26.277 88.014 26.246 88.014 26.105 87.889 c 26.074 87.843 25.965 87.733 25.918 87.702 c 25.496 88.014 25.027 88.014 24.855 88.014 c 23.496 88.014 23.074 87.264 23.074 86.639 c 23.074 86.249 23.246 85.936 23.543 85.686 c 23.902 85.389 24.23 85.327 25.027 85.171 c 25.277 85.124 26.199 84.952 26.199 84.139 c 26.199 83.577 25.809 83.124 24.934 83.124 c 23.98 83.124 23.59 83.764 23.371 84.718 c 23.34 84.858 23.324 84.905 23.215 84.905 c 23.074 84.905 23.074 84.827 23.074 84.624 c 23.074 83.139 l 23.074 82.952 23.074 82.874 23.199 82.874 c 23.246 82.874 23.262 82.889 23.465 83.093 c 23.496 83.124 23.496 83.139 23.699 83.358 c 24.184 82.889 24.699 82.874 24.934 82.874 c 26.215 82.874 26.73 83.624 26.73 84.436 c h 33.117 82.999 m 33.117 83.343 l 32.32 83.343 32.242 83.421 32.242 83.968 c 32.242 87.952 l 30.586 87.827 l 30.586 87.483 l 31.367 87.483 31.461 87.405 31.461 86.858 c 31.461 84.858 l 31.461 83.889 30.93 83.124 30.102 83.124 c 29.164 83.124 29.117 83.655 29.117 84.233 c 29.117 87.952 l 27.477 87.827 l 27.477 87.483 l 28.352 87.483 28.352 87.452 28.352 86.452 c 28.352 84.764 l 28.352 83.889 28.352 82.874 30.055 82.874 c 30.68 82.874 31.18 83.186 31.492 83.889 c 31.492 82.874 l h 38.758 83.999 m 38.758 84.624 l 38.477 84.624 l 38.477 83.999 l 38.477 83.343 38.195 83.28 38.086 83.28 c 37.711 83.28 37.664 83.78 37.664 83.843 c 37.664 86.077 l 37.664 86.546 37.664 86.983 37.258 87.405 c 36.82 87.843 36.258 88.014 35.727 88.014 c 34.805 88.014 34.039 87.499 34.039 86.749 c 34.039 86.421 34.258 86.218 34.555 86.218 c 34.867 86.218 35.07 86.452 35.07 86.733 c 35.07 86.874 35.008 87.249 34.492 87.249 c 34.789 87.655 35.352 87.764 35.711 87.764 c 36.258 87.764 36.898 87.327 36.898 86.343 c 36.898 85.921 l 36.32 85.889 35.539 85.858 34.836 85.514 c 33.992 85.139 33.711 84.561 33.711 84.061 c 33.711 83.155 34.789 82.874 35.508 82.874 c 36.242 82.874 36.758 83.327 36.977 83.843 c 37.008 83.405 37.32 82.936 37.852 82.936 c 38.086 82.936 38.758 83.093 38.758 83.999 c h 36.898 84.561 m 36.898 83.499 36.086 83.124 35.586 83.124 c 35.039 83.124 34.57 83.514 34.57 84.077 c 34.57 84.686 35.039 85.624 36.898 85.686 c h 44.859 82.999 m 44.859 83.343 l 44.078 83.343 43.984 83.421 43.984 83.968 c 43.984 90.78 l 42.375 90.655 l 42.375 90.296 l 43.156 90.296 43.25 90.218 43.25 89.671 c 43.25 87.249 l 42.922 87.655 42.438 87.952 41.828 87.952 c 40.516 87.952 39.328 86.858 39.328 85.405 c 39.328 83.983 40.438 82.874 41.703 82.874 c 42.422 82.874 42.938 83.249 43.203 83.608 c 43.203 82.874 l h 43.203 84.327 m 43.203 84.124 43.203 84.093 43.094 83.905 c 42.75 83.374 42.25 83.124 41.766 83.124 c 41.266 83.124 40.859 83.421 40.594 83.843 c 40.297 84.296 40.266 84.936 40.266 85.389 c 40.266 85.811 40.281 86.483 40.609 86.983 c 40.844 87.327 41.266 87.702 41.875 87.702 c 42.266 87.702 42.734 87.53 43.094 87.03 c 43.203 86.843 43.203 86.811 43.203 86.624 c h 50.594 83.999 m 50.594 84.624 l 50.312 84.624 l 50.312 83.999 l 50.312 83.343 50.031 83.28 49.922 83.28 c 49.547 83.28 49.5 83.78 49.5 83.843 c 49.5 86.077 l 49.5 86.546 49.5 86.983 49.094 87.405 c 48.656 87.843 48.094 88.014 47.562 88.014 c 46.641 88.014 45.875 87.499 45.875 86.749 c 45.875 86.421 46.094 86.218 46.391 86.218 c 46.703 86.218 46.906 86.452 46.906 86.733 c 46.906 86.874 46.844 87.249 46.328 87.249 c 46.625 87.655 47.188 87.764 47.547 87.764 c 48.094 87.764 48.734 87.327 48.734 86.343 c 48.734 85.921 l 48.156 85.889 47.375 85.858 46.672 85.514 c 45.828 85.139 45.547 84.561 45.547 84.061 c 45.547 83.155 46.625 82.874 47.344 82.874 c 48.078 82.874 48.594 83.327 48.812 83.843 c 48.844 83.405 49.156 82.936 49.688 82.936 c 49.922 82.936 50.594 83.093 50.594 83.999 c h 48.734 84.561 m 48.734 83.499 47.922 83.124 47.422 83.124 c 46.875 83.124 46.406 83.514 46.406 84.077 c 46.406 84.686 46.875 85.624 48.734 85.686 c h 60.215 87.483 m 60.215 87.827 l 59.965 87.811 59.637 87.796 59.371 87.796 c 58.402 87.827 l 58.402 87.483 l 58.824 87.468 58.934 87.218 58.934 86.999 c 58.934 86.905 58.918 86.858 58.871 86.733 c 57.73 83.874 l 56.48 86.999 l 56.402 87.139 56.402 87.186 56.402 87.186 c 56.402 87.483 56.84 87.483 57.043 87.483 c 57.043 87.827 l 55.824 87.796 l 55.527 87.796 55.074 87.811 54.746 87.827 c 54.746 87.483 l 55.449 87.483 55.496 87.405 55.637 87.061 c 57.246 83.093 l 57.324 82.936 57.34 82.874 57.48 82.874 c 57.637 82.874 57.668 82.983 57.715 83.093 c 59.184 86.733 l 59.293 86.983 59.48 87.468 60.215 87.483 c h 63.199 82.999 m 63.199 83.343 l 62.465 83.343 62.418 83.405 62.418 83.843 c 62.418 87.952 l 60.855 87.827 l 60.855 87.483 l 61.574 87.483 61.684 87.405 61.684 86.858 c 61.684 83.843 l 61.684 83.343 61.559 83.343 60.809 83.343 c 60.809 82.999 l 62.043 83.03 l 62.434 83.03 62.824 83.014 63.199 82.999 c h 62.59 89.764 m 62.59 90.061 62.324 90.358 61.996 90.358 c 61.605 90.358 61.387 90.046 61.387 89.764 c 61.387 89.468 61.637 89.171 61.98 89.171 c 62.355 89.171 62.59 89.483 62.59 89.764 c h 67.258 84.389 m 67.258 85.03 l 66.977 85.03 l 66.977 84.405 l 66.977 83.577 66.648 83.155 66.227 83.155 c 65.477 83.155 65.477 84.171 65.477 84.358 c 65.477 87.483 l 67.086 87.483 l 67.086 87.827 l 65.477 87.827 l 65.477 89.889 l 65.195 89.889 l 65.18 88.968 64.852 87.764 63.758 87.733 c 63.758 87.483 l 64.711 87.483 l 64.711 84.389 l 64.711 83.014 65.742 82.874 66.148 82.874 c 66.945 82.874 67.258 83.671 67.258 84.389 c h 73.301 83.999 m 73.301 84.624 l 73.02 84.624 l 73.02 83.999 l 73.02 83.343 72.738 83.28 72.629 83.28 c 72.254 83.28 72.207 83.78 72.207 83.843 c 72.207 86.077 l 72.207 86.546 72.207 86.983 71.801 87.405 c 71.363 87.843 70.801 88.014 70.27 88.014 c 69.348 88.014 68.582 87.499 68.582 86.749 c 68.582 86.421 68.801 86.218 69.098 86.218 c 69.41 86.218 69.613 86.452 69.613 86.733 c 69.613 86.874 69.551 87.249 69.035 87.249 c 69.332 87.655 69.895 87.764 70.254 87.764 c 70.801 87.764 71.441 87.327 71.441 86.343 c 71.441 85.921 l 70.863 85.889 70.082 85.858 69.379 85.514 c 68.535 85.139 68.254 84.561 68.254 84.061 c 68.254 83.155 69.332 82.874 70.051 82.874 c 70.785 82.874 71.301 83.327 71.52 83.843 c 71.551 83.405 71.863 82.936 72.395 82.936 c 72.629 82.936 73.301 83.093 73.301 83.999 c h 71.441 84.561 m 71.441 83.499 70.629 83.124 70.129 83.124 c 69.582 83.124 69.113 83.514 69.113 84.077 c 69.113 84.686 69.582 85.624 71.441 85.686 c h 78.148 84.327 m 78.148 84.436 78.055 84.468 77.992 84.468 c 77.898 84.468 77.867 84.405 77.852 84.311 c 77.461 83.155 76.445 83.155 76.336 83.155 c 75.773 83.155 75.336 83.499 75.07 83.905 c 74.742 84.436 74.742 85.186 74.742 85.593 c 77.867 85.593 l 78.102 85.593 78.148 85.593 78.148 85.827 c 78.148 86.936 77.539 88.014 76.133 88.014 c 74.836 88.014 73.805 86.858 73.805 85.468 c 73.805 83.968 74.977 82.874 76.273 82.874 c 77.633 82.874 78.148 84.124 78.148 84.327 c h 77.398 85.827 m 74.742 85.827 l 74.82 87.499 75.758 87.764 76.133 87.764 c 77.289 87.764 77.398 86.264 77.398 85.827 c h 80.613 83.593 m 80.613 83.921 80.332 84.186 80.02 84.186 c 79.691 84.186 79.426 83.921 79.426 83.593 c 79.426 83.264 79.691 82.999 80.02 82.999 c 80.332 82.999 80.613 83.264 80.613 83.593 c h 93.227 86.764 m 93.227 88.889 91.711 90.655 89.805 90.655 c 85.695 90.655 l 85.695 90.296 l 85.961 90.296 l 86.836 90.296 86.852 90.186 86.852 89.78 c 86.852 83.874 l 86.852 83.468 86.836 83.343 85.961 83.343 c 85.695 83.343 l 85.695 82.999 l 89.805 82.999 l 91.68 82.999 93.227 84.655 93.227 86.764 c h 92.102 86.764 m 92.102 85.514 91.898 84.843 91.492 84.296 c 91.258 83.999 90.633 83.343 89.492 83.343 c 88.367 83.343 l 87.836 83.343 87.82 83.421 87.82 83.796 c 87.82 89.858 l 87.82 90.218 87.836 90.296 88.367 90.296 c 89.477 90.296 l 90.18 90.296 90.945 90.061 91.523 89.264 c 92.008 88.593 92.102 87.639 92.102 86.764 c h 99.141 85.389 m 99.141 86.827 98.016 88.014 96.656 88.014 c 95.266 88.014 94.172 86.796 94.172 85.389 c 94.172 83.952 95.344 82.874 96.656 82.874 c 98 82.874 99.141 83.968 99.141 85.389 c h 98.203 85.483 m 98.203 85.077 98.203 84.483 97.953 83.983 c 97.719 83.483 97.219 83.155 96.656 83.155 c 96.172 83.155 95.688 83.389 95.391 83.905 c 95.109 84.405 95.109 85.077 95.109 85.483 c 95.109 85.921 95.109 86.53 95.375 87.014 c 95.672 87.53 96.203 87.764 96.656 87.764 c 97.141 87.764 97.625 87.53 97.922 87.046 c 98.203 86.561 98.203 85.905 98.203 85.483 c h 105.457 82.999 m 105.457 83.343 l 104.863 83.343 104.582 83.343 104.582 83.686 c 104.582 85.827 l 104.582 86.78 104.582 87.139 104.223 87.53 c 104.066 87.733 103.707 87.952 103.051 87.952 c 102.238 87.952 101.707 87.468 101.395 86.78 c 101.395 87.952 l 99.816 87.827 l 99.816 87.483 l 100.598 87.483 100.691 87.405 100.691 86.858 c 100.691 83.843 l 100.691 83.343 100.566 83.343 99.816 83.343 c 99.816 82.999 l 101.082 83.03 l 102.332 82.999 l 102.332 83.343 l 101.582 83.343 101.457 83.343 101.457 83.843 c 101.457 85.905 l 101.457 87.077 102.254 87.702 102.973 87.702 c 103.676 87.702 103.801 87.093 103.801 86.468 c 103.801 83.843 l 103.801 83.343 103.676 83.343 102.926 83.343 c 102.926 82.999 l 104.191 83.03 l h 110.348 84.327 m 110.348 84.436 110.254 84.468 110.191 84.468 c 110.098 84.468 110.066 84.405 110.051 84.311 c 109.66 83.155 108.645 83.155 108.535 83.155 c 107.973 83.155 107.535 83.499 107.27 83.905 c 106.941 84.436 106.941 85.186 106.941 85.593 c 110.066 85.593 l 110.301 85.593 110.348 85.593 110.348 85.827 c 110.348 86.936 109.738 88.014 108.332 88.014 c 107.035 88.014 106.004 86.858 106.004 85.468 c 106.004 83.968 107.176 82.874 108.473 82.874 c 109.832 82.874 110.348 84.124 110.348 84.327 c h 109.598 85.827 m 106.941 85.827 l 107.02 87.499 107.957 87.764 108.332 87.764 c 109.488 87.764 109.598 86.264 109.598 85.827 c h 115.316 84.327 m 115.316 84.436 115.191 84.436 115.16 84.436 c 115.066 84.436 115.035 84.405 115.02 84.327 c 114.691 83.296 113.973 83.155 113.551 83.155 c 112.957 83.155 111.973 83.639 111.973 85.436 c 111.973 87.264 112.895 87.733 113.488 87.733 c 113.582 87.733 114.285 87.733 114.676 87.327 c 114.223 87.296 114.16 86.952 114.16 86.811 c 114.16 86.514 114.363 86.296 114.676 86.296 c 114.957 86.296 115.191 86.483 115.191 86.811 c 115.191 87.577 114.332 88.014 113.473 88.014 c 112.066 88.014 111.035 86.811 111.035 85.421 c 111.035 83.983 112.145 82.874 113.457 82.874 c 114.957 82.874 115.316 84.218 115.316 84.327 c h f 3.719 70.436 m 3.719 71.03 3.391 71.358 3.25 71.499 c 2.875 71.858 2.438 71.952 1.969 72.03 c 1.344 72.155 0.594 72.311 0.594 72.952 c 0.594 73.343 0.891 73.811 1.844 73.811 c 3.078 73.811 3.141 72.796 3.156 72.452 c 3.172 72.343 3.297 72.343 3.297 72.343 c 3.438 72.343 3.438 72.405 3.438 72.624 c 3.438 73.749 l 3.438 73.936 3.438 74.014 3.312 74.014 c 3.266 74.014 3.234 74.014 3.094 73.889 c 3.062 73.843 2.953 73.733 2.906 73.702 c 2.484 74.014 2.016 74.014 1.844 74.014 c 0.484 74.014 0.062 73.264 0.062 72.639 c 0.062 72.249 0.234 71.936 0.531 71.686 c 0.891 71.389 1.219 71.327 2.016 71.171 c 2.266 71.124 3.188 70.952 3.188 70.139 c 3.188 69.577 2.797 69.124 1.922 69.124 c 0.969 69.124 0.578 69.764 0.359 70.718 c 0.328 70.858 0.312 70.905 0.203 70.905 c 0.062 70.905 0.062 70.827 0.062 70.624 c 0.062 69.139 l 0.062 68.952 0.062 68.874 0.188 68.874 c 0.234 68.874 0.25 68.889 0.453 69.093 c 0.484 69.124 0.484 69.139 0.688 69.358 c 1.172 68.889 1.688 68.874 1.922 68.874 c 3.203 68.874 3.719 69.624 3.719 70.436 c h 8.762 70.327 m 8.762 70.436 8.668 70.468 8.605 70.468 c 8.512 70.468 8.48 70.405 8.465 70.311 c 8.074 69.155 7.059 69.155 6.949 69.155 c 6.387 69.155 5.949 69.499 5.684 69.905 c 5.355 70.436 5.355 71.186 5.355 71.593 c 8.48 71.593 l 8.715 71.593 8.762 71.593 8.762 71.827 c 8.762 72.936 8.152 74.014 6.746 74.014 c 5.449 74.014 4.418 72.858 4.418 71.468 c 4.418 69.968 5.59 68.874 6.887 68.874 c 8.246 68.874 8.762 70.124 8.762 70.327 c h 8.012 71.827 m 5.355 71.827 l 5.434 73.499 6.371 73.764 6.746 73.764 c 7.902 73.764 8.012 72.264 8.012 71.827 c h 14.977 68.999 m 14.977 69.343 l 14.195 69.343 14.102 69.421 14.102 69.968 c 14.102 76.78 l 12.492 76.655 l 12.492 76.296 l 13.273 76.296 13.367 76.218 13.367 75.671 c 13.367 73.249 l 13.039 73.655 12.555 73.952 11.945 73.952 c 10.633 73.952 9.445 72.858 9.445 71.405 c 9.445 69.983 10.555 68.874 11.82 68.874 c 12.539 68.874 13.055 69.249 13.32 69.608 c 13.32 68.874 l h 13.32 70.327 m 13.32 70.124 13.32 70.093 13.211 69.905 c 12.867 69.374 12.367 69.124 11.883 69.124 c 11.383 69.124 10.977 69.421 10.711 69.843 c 10.414 70.296 10.383 70.936 10.383 71.389 c 10.383 71.811 10.398 72.483 10.727 72.983 c 10.961 73.327 11.383 73.702 11.992 73.702 c 12.383 73.702 12.852 73.53 13.211 73.03 c 13.32 72.843 13.32 72.811 13.32 72.624 c h 21.812 68.999 m 21.812 69.343 l 21.078 69.343 21.031 69.405 21.031 69.843 c 21.031 73.952 l 19.469 73.827 l 19.469 73.483 l 20.188 73.483 20.297 73.405 20.297 72.858 c 20.297 69.843 l 20.297 69.343 20.172 69.343 19.422 69.343 c 19.422 68.999 l 20.656 69.03 l 21.047 69.03 21.438 69.014 21.812 68.999 c h 21.203 75.764 m 21.203 76.061 20.938 76.358 20.609 76.358 c 20.219 76.358 20 76.046 20 75.764 c 20 75.468 20.25 75.171 20.594 75.171 c 20.969 75.171 21.203 75.483 21.203 75.764 c h 28.152 68.999 m 28.152 69.343 l 27.559 69.343 27.277 69.343 27.277 69.686 c 27.277 71.827 l 27.277 72.78 27.277 73.139 26.918 73.53 c 26.762 73.733 26.402 73.952 25.746 73.952 c 24.934 73.952 24.402 73.468 24.09 72.78 c 24.09 73.952 l 22.512 73.827 l 22.512 73.483 l 23.293 73.483 23.387 73.405 23.387 72.858 c 23.387 69.843 l 23.387 69.343 23.262 69.343 22.512 69.343 c 22.512 68.999 l 23.777 69.03 l 25.027 68.999 l 25.027 69.343 l 24.277 69.343 24.152 69.343 24.152 69.843 c 24.152 71.905 l 24.152 73.077 24.949 73.702 25.668 73.702 c 26.371 73.702 26.496 73.093 26.496 72.468 c 26.496 69.843 l 26.496 69.343 26.371 69.343 25.621 69.343 c 25.621 68.999 l 26.887 69.03 l h 32.105 70.389 m 32.105 71.03 l 31.824 71.03 l 31.824 70.405 l 31.824 69.577 31.496 69.155 31.074 69.155 c 30.324 69.155 30.324 70.171 30.324 70.358 c 30.324 73.483 l 31.934 73.483 l 31.934 73.827 l 30.324 73.827 l 30.324 75.889 l 30.043 75.889 l 30.027 74.968 29.699 73.764 28.605 73.733 c 28.605 73.483 l 29.559 73.483 l 29.559 70.389 l 29.559 69.014 30.59 68.874 30.996 68.874 c 31.793 68.874 32.105 69.671 32.105 70.389 c h 37.395 70.327 m 37.395 70.436 37.301 70.468 37.238 70.468 c 37.145 70.468 37.113 70.405 37.098 70.311 c 36.707 69.155 35.691 69.155 35.582 69.155 c 35.02 69.155 34.582 69.499 34.316 69.905 c 33.988 70.436 33.988 71.186 33.988 71.593 c 37.113 71.593 l 37.348 71.593 37.395 71.593 37.395 71.827 c 37.395 72.936 36.785 74.014 35.379 74.014 c 34.082 74.014 33.051 72.858 33.051 71.468 c 33.051 69.968 34.223 68.874 35.52 68.874 c 36.879 68.874 37.395 70.124 37.395 70.327 c h 36.645 71.827 m 33.988 71.827 l 34.066 73.499 35.004 73.764 35.379 73.764 c 36.535 73.764 36.645 72.264 36.645 71.827 c h 41.785 73.264 m 41.785 73.624 41.441 73.952 40.957 73.952 c 40.145 73.952 39.738 73.202 39.582 72.718 c 39.582 73.952 l 38.02 73.827 l 38.02 73.483 l 38.801 73.483 38.895 73.405 38.895 72.858 c 38.895 69.843 l 38.895 69.343 38.77 69.343 38.02 69.343 c 38.02 68.999 l 39.301 69.03 l 39.738 69.03 40.27 69.03 40.723 68.999 c 40.723 69.343 l 40.488 69.343 l 39.66 69.343 39.629 69.468 39.629 69.874 c 39.629 71.593 l 39.629 72.702 40.098 73.702 40.957 73.702 c 41.035 73.702 41.051 73.702 41.082 73.686 c 41.051 73.686 40.816 73.546 40.816 73.249 c 40.816 72.936 41.051 72.78 41.301 72.78 c 41.504 72.78 41.785 72.905 41.785 73.264 c h 48.008 68.999 m 48.008 69.343 l 47.227 69.343 47.133 69.421 47.133 69.968 c 47.133 76.78 l 45.523 76.655 l 45.523 76.296 l 46.305 76.296 46.398 76.218 46.398 75.671 c 46.398 73.249 l 46.07 73.655 45.586 73.952 44.977 73.952 c 43.664 73.952 42.477 72.858 42.477 71.405 c 42.477 69.983 43.586 68.874 44.852 68.874 c 45.57 68.874 46.086 69.249 46.352 69.608 c 46.352 68.874 l h 46.352 70.327 m 46.352 70.124 46.352 70.093 46.242 69.905 c 45.898 69.374 45.398 69.124 44.914 69.124 c 44.414 69.124 44.008 69.421 43.742 69.843 c 43.445 70.296 43.414 70.936 43.414 71.389 c 43.414 71.811 43.43 72.483 43.758 72.983 c 43.992 73.327 44.414 73.702 45.023 73.702 c 45.414 73.702 45.883 73.53 46.242 73.03 c 46.352 72.843 46.352 72.811 46.352 72.624 c h 54.336 68.999 m 54.336 69.343 l 53.539 69.343 53.461 69.421 53.461 69.968 c 53.461 73.952 l 51.805 73.827 l 51.805 73.483 l 52.586 73.483 52.68 73.405 52.68 72.858 c 52.68 70.858 l 52.68 69.889 52.148 69.124 51.32 69.124 c 50.383 69.124 50.336 69.655 50.336 70.233 c 50.336 73.952 l 48.695 73.827 l 48.695 73.483 l 49.57 73.483 49.57 73.452 49.57 72.452 c 49.57 70.764 l 49.57 69.889 49.57 68.874 51.273 68.874 c 51.898 68.874 52.398 69.186 52.711 69.889 c 52.711 68.874 l h 63.68 68.999 m 63.68 69.343 l 63.102 69.343 62.82 69.343 62.805 69.686 c 62.805 71.827 l 62.805 72.78 62.805 73.139 62.461 73.53 c 62.305 73.733 61.93 73.952 61.273 73.952 c 60.336 73.952 59.852 73.28 59.664 72.858 c 59.492 73.827 58.664 73.952 58.164 73.952 c 57.352 73.952 56.82 73.468 56.508 72.78 c 56.508 73.952 l 54.93 73.827 l 54.93 73.483 l 55.711 73.483 55.805 73.405 55.805 72.858 c 55.805 69.843 l 55.805 69.343 55.68 69.343 54.93 69.343 c 54.93 68.999 l 56.195 69.03 l 57.445 68.999 l 57.445 69.343 l 56.695 69.343 56.57 69.343 56.57 69.843 c 56.57 71.905 l 56.57 73.077 57.367 73.702 58.086 73.702 c 58.789 73.702 58.914 73.093 58.914 72.468 c 58.914 69.843 l 58.914 69.343 58.789 69.343 58.039 69.343 c 58.039 68.999 l 59.305 69.03 l 60.57 68.999 l 60.57 69.343 l 59.82 69.343 59.695 69.343 59.695 69.843 c 59.695 71.905 l 59.695 73.077 60.492 73.702 61.195 73.702 c 61.914 73.702 62.039 73.093 62.039 72.468 c 62.039 69.843 l 62.039 69.343 61.914 69.343 61.164 69.343 c 61.164 68.999 l 62.43 69.03 l h 70.512 68.999 m 70.512 69.343 l 69.762 69.343 69.637 69.343 69.637 69.843 c 69.637 76.78 l 68.027 76.655 l 68.027 76.296 l 68.809 76.296 68.902 76.218 68.902 75.671 c 68.902 69.843 l 68.902 69.343 68.777 69.343 68.027 69.343 c 68.027 68.999 l 69.262 69.03 l h 76.164 69.999 m 76.164 70.624 l 75.883 70.624 l 75.883 69.999 l 75.883 69.343 75.602 69.28 75.492 69.28 c 75.117 69.28 75.07 69.78 75.07 69.843 c 75.07 72.077 l 75.07 72.546 75.07 72.983 74.664 73.405 c 74.227 73.843 73.664 74.014 73.133 74.014 c 72.211 74.014 71.445 73.499 71.445 72.749 c 71.445 72.421 71.664 72.218 71.961 72.218 c 72.273 72.218 72.477 72.452 72.477 72.733 c 72.477 72.874 72.414 73.249 71.898 73.249 c 72.195 73.655 72.758 73.764 73.117 73.764 c 73.664 73.764 74.305 73.327 74.305 72.343 c 74.305 71.921 l 73.727 71.889 72.945 71.858 72.242 71.514 c 71.398 71.139 71.117 70.561 71.117 70.061 c 71.117 69.155 72.195 68.874 72.914 68.874 c 73.648 68.874 74.164 69.327 74.383 69.843 c 74.414 69.405 74.727 68.936 75.258 68.936 c 75.492 68.936 76.164 69.093 76.164 69.999 c h 74.305 70.561 m 74.305 69.499 73.492 69.124 72.992 69.124 c 72.445 69.124 71.977 69.514 71.977 70.077 c 71.977 70.686 72.445 71.624 74.305 71.686 c h 81.016 70.327 m 81.016 70.436 80.891 70.436 80.859 70.436 c 80.766 70.436 80.734 70.405 80.719 70.327 c 80.391 69.296 79.672 69.155 79.25 69.155 c 78.656 69.155 77.672 69.639 77.672 71.436 c 77.672 73.264 78.594 73.733 79.188 73.733 c 79.281 73.733 79.984 73.733 80.375 73.327 c 79.922 73.296 79.859 72.952 79.859 72.811 c 79.859 72.514 80.062 72.296 80.375 72.296 c 80.656 72.296 80.891 72.483 80.891 72.811 c 80.891 73.577 80.031 74.014 79.172 74.014 c 77.766 74.014 76.734 72.811 76.734 71.421 c 76.734 69.983 77.844 68.874 79.156 68.874 c 80.656 68.874 81.016 70.218 81.016 70.327 c h 87.324 68.999 m 87.324 69.343 l 86.527 69.343 86.449 69.421 86.449 69.968 c 86.449 73.952 l 84.793 73.827 l 84.793 73.483 l 85.574 73.483 85.668 73.405 85.668 72.858 c 85.668 70.858 l 85.668 69.889 85.137 69.124 84.309 69.124 c 83.371 69.124 83.324 69.655 83.324 70.233 c 83.324 73.952 l 81.684 73.827 l 81.684 73.483 l 82.559 73.483 82.559 73.452 82.559 72.452 c 82.559 70.764 l 82.559 69.889 82.559 68.874 84.262 68.874 c 84.887 68.874 85.387 69.186 85.699 69.889 c 85.699 68.874 l h 91.59 70.436 m 91.59 71.03 91.262 71.358 91.121 71.499 c 90.746 71.858 90.309 71.952 89.84 72.03 c 89.215 72.155 88.465 72.311 88.465 72.952 c 88.465 73.343 88.762 73.811 89.715 73.811 c 90.949 73.811 91.012 72.796 91.027 72.452 c 91.043 72.343 91.168 72.343 91.168 72.343 c 91.309 72.343 91.309 72.405 91.309 72.624 c 91.309 73.749 l 91.309 73.936 91.309 74.014 91.184 74.014 c 91.137 74.014 91.105 74.014 90.965 73.889 c 90.934 73.843 90.824 73.733 90.777 73.702 c 90.355 74.014 89.887 74.014 89.715 74.014 c 88.355 74.014 87.934 73.264 87.934 72.639 c 87.934 72.249 88.105 71.936 88.402 71.686 c 88.762 71.389 89.09 71.327 89.887 71.171 c 90.137 71.124 91.059 70.952 91.059 70.139 c 91.059 69.577 90.668 69.124 89.793 69.124 c 88.84 69.124 88.449 69.764 88.23 70.718 c 88.199 70.858 88.184 70.905 88.074 70.905 c 87.934 70.905 87.934 70.827 87.934 70.624 c 87.934 69.139 l 87.934 68.952 87.934 68.874 88.059 68.874 c 88.105 68.874 88.121 68.889 88.324 69.093 c 88.355 69.124 88.355 69.139 88.559 69.358 c 89.043 68.889 89.559 68.874 89.793 68.874 c 91.074 68.874 91.59 69.624 91.59 70.436 c h 94.258 69.014 m 94.258 69.733 93.977 70.186 93.539 70.186 c 93.148 70.186 92.945 69.889 92.945 69.593 c 92.945 69.296 93.133 68.999 93.539 68.999 c 93.695 68.999 93.852 69.061 93.977 69.171 c 94.008 68.296 93.695 67.608 93.195 67.077 c 93.133 67.014 93.117 66.999 93.117 66.968 c 93.117 66.874 93.18 66.843 93.227 66.843 c 93.367 66.843 94.258 67.718 94.258 69.014 c h f 5.531 57.421 m 5.531 58.843 4.422 59.952 3.156 59.952 c 2.281 59.952 1.797 59.421 1.609 59.218 c 1.609 62.78 l 0 62.655 l 0 62.296 l 0.781 62.296 0.875 62.218 0.875 61.671 c 0.875 54.999 l 1.156 54.999 l 1.562 55.686 l 1.719 55.436 2.203 54.874 3.031 54.874 c 4.359 54.874 5.531 55.968 5.531 57.421 c h 4.594 57.436 m 4.594 57.014 4.578 56.343 4.25 55.843 c 4.016 55.499 3.594 55.124 2.984 55.124 c 2.484 55.124 2.078 55.389 1.812 55.811 c 1.641 56.046 1.641 56.077 1.641 56.28 c 1.641 58.577 l 1.641 58.796 1.641 58.811 1.766 58.983 c 2.203 59.608 2.828 59.702 3.094 59.702 c 3.594 59.702 4 59.405 4.266 58.983 c 4.562 58.53 4.594 57.889 4.594 57.436 c h 8.781 54.999 m 8.781 55.343 l 8.031 55.343 7.906 55.343 7.906 55.843 c 7.906 62.78 l 6.297 62.655 l 6.297 62.296 l 7.078 62.296 7.172 62.218 7.172 61.671 c 7.172 55.843 l 7.172 55.343 7.047 55.343 6.297 55.343 c 6.297 54.999 l 7.531 55.03 l h 14.434 55.999 m 14.434 56.624 l 14.152 56.624 l 14.152 55.999 l 14.152 55.343 13.871 55.28 13.762 55.28 c 13.387 55.28 13.34 55.78 13.34 55.843 c 13.34 58.077 l 13.34 58.546 13.34 58.983 12.934 59.405 c 12.496 59.843 11.934 60.014 11.402 60.014 c 10.48 60.014 9.715 59.499 9.715 58.749 c 9.715 58.421 9.934 58.218 10.23 58.218 c 10.543 58.218 10.746 58.452 10.746 58.733 c 10.746 58.874 10.684 59.249 10.168 59.249 c 10.465 59.655 11.027 59.764 11.387 59.764 c 11.934 59.764 12.574 59.327 12.574 58.343 c 12.574 57.921 l 11.996 57.889 11.215 57.858 10.512 57.514 c 9.668 57.139 9.387 56.561 9.387 56.061 c 9.387 55.155 10.465 54.874 11.184 54.874 c 11.918 54.874 12.434 55.327 12.652 55.843 c 12.684 55.405 12.996 54.936 13.527 54.936 c 13.762 54.936 14.434 55.093 14.434 55.999 c h 12.574 56.561 m 12.574 55.499 11.762 55.124 11.262 55.124 c 10.715 55.124 10.246 55.514 10.246 56.077 c 10.246 56.686 10.715 57.624 12.574 57.686 c h 20.629 54.999 m 20.629 55.343 l 20.035 55.343 19.754 55.343 19.754 55.686 c 19.754 57.827 l 19.754 58.78 19.754 59.139 19.395 59.53 c 19.238 59.733 18.879 59.952 18.223 59.952 c 17.41 59.952 16.879 59.468 16.566 58.78 c 16.566 59.952 l 14.988 59.827 l 14.988 59.483 l 15.77 59.483 15.863 59.405 15.863 58.858 c 15.863 55.843 l 15.863 55.343 15.738 55.343 14.988 55.343 c 14.988 54.999 l 16.254 55.03 l 17.504 54.999 l 17.504 55.343 l 16.754 55.343 16.629 55.343 16.629 55.843 c 16.629 57.905 l 16.629 59.077 17.426 59.702 18.145 59.702 c 18.848 59.702 18.973 59.093 18.973 58.468 c 18.973 55.843 l 18.973 55.343 18.848 55.343 18.098 55.343 c 18.098 54.999 l 19.363 55.03 l h 26.77 54.999 m 26.77 55.343 l 25.988 55.343 25.895 55.421 25.895 55.968 c 25.895 62.78 l 24.285 62.655 l 24.285 62.296 l 25.066 62.296 25.16 62.218 25.16 61.671 c 25.16 59.249 l 24.832 59.655 24.348 59.952 23.738 59.952 c 22.426 59.952 21.238 58.858 21.238 57.405 c 21.238 55.983 22.348 54.874 23.613 54.874 c 24.332 54.874 24.848 55.249 25.113 55.608 c 25.113 54.874 l h 25.113 56.327 m 25.113 56.124 25.113 56.093 25.004 55.905 c 24.66 55.374 24.16 55.124 23.676 55.124 c 23.176 55.124 22.77 55.421 22.504 55.843 c 22.207 56.296 22.176 56.936 22.176 57.389 c 22.176 57.811 22.191 58.483 22.52 58.983 c 22.754 59.327 23.176 59.702 23.785 59.702 c 24.176 59.702 24.645 59.53 25.004 59.03 c 25.113 58.843 25.113 58.811 25.113 58.624 c h 29.863 54.999 m 29.863 55.343 l 29.129 55.343 29.082 55.405 29.082 55.843 c 29.082 59.952 l 27.52 59.827 l 27.52 59.483 l 28.238 59.483 28.348 59.405 28.348 58.858 c 28.348 55.843 l 28.348 55.343 28.223 55.343 27.473 55.343 c 27.473 54.999 l 28.707 55.03 l 29.098 55.03 29.488 55.014 29.863 54.999 c h 29.254 61.764 m 29.254 62.061 28.988 62.358 28.66 62.358 c 28.27 62.358 28.051 62.046 28.051 61.764 c 28.051 61.468 28.301 61.171 28.645 61.171 c 29.02 61.171 29.254 61.483 29.254 61.764 c h 33.922 56.389 m 33.922 57.03 l 33.641 57.03 l 33.641 56.405 l 33.641 55.577 33.312 55.155 32.891 55.155 c 32.141 55.155 32.141 56.171 32.141 56.358 c 32.141 59.483 l 33.75 59.483 l 33.75 59.827 l 32.141 59.827 l 32.141 61.889 l 31.859 61.889 l 31.844 60.968 31.516 59.764 30.422 59.733 c 30.422 59.483 l 31.375 59.483 l 31.375 56.389 l 31.375 55.014 32.406 54.874 32.812 54.874 c 33.609 54.874 33.922 55.671 33.922 56.389 c h 42.375 59.264 m 42.375 59.624 42.031 59.952 41.547 59.952 c 40.734 59.952 40.328 59.202 40.172 58.718 c 40.172 59.952 l 38.609 59.827 l 38.609 59.483 l 39.391 59.483 39.484 59.405 39.484 58.858 c 39.484 55.843 l 39.484 55.343 39.359 55.343 38.609 55.343 c 38.609 54.999 l 39.891 55.03 l 40.328 55.03 40.859 55.03 41.312 54.999 c 41.312 55.343 l 41.078 55.343 l 40.25 55.343 40.219 55.468 40.219 55.874 c 40.219 57.593 l 40.219 58.702 40.688 59.702 41.547 59.702 c 41.625 59.702 41.641 59.702 41.672 59.686 c 41.641 59.686 41.406 59.546 41.406 59.249 c 41.406 58.936 41.641 58.78 41.891 58.78 c 42.094 58.78 42.375 58.905 42.375 59.264 c h 48.691 54.999 m 48.691 55.343 l 47.895 55.343 47.816 55.421 47.816 55.968 c 47.816 59.952 l 46.16 59.827 l 46.16 59.483 l 46.941 59.483 47.035 59.405 47.035 58.858 c 47.035 56.858 l 47.035 55.889 46.504 55.124 45.676 55.124 c 44.738 55.124 44.691 55.655 44.691 56.233 c 44.691 59.952 l 43.051 59.827 l 43.051 59.483 l 43.926 59.483 43.926 59.452 43.926 58.452 c 43.926 56.764 l 43.926 55.889 43.926 54.874 45.629 54.874 c 46.254 54.874 46.754 55.186 47.066 55.889 c 47.066 54.874 l h 52.645 56.389 m 52.645 57.03 l 52.363 57.03 l 52.363 56.405 l 52.363 55.577 52.035 55.155 51.613 55.155 c 50.863 55.155 50.863 56.171 50.863 56.358 c 50.863 59.483 l 52.473 59.483 l 52.473 59.827 l 50.863 59.827 l 50.863 61.889 l 50.582 61.889 l 50.566 60.968 50.238 59.764 49.145 59.733 c 49.145 59.483 l 50.098 59.483 l 50.098 56.389 l 50.098 55.014 51.129 54.874 51.535 54.874 c 52.332 54.874 52.645 55.671 52.645 56.389 c h 57.359 59.264 m 57.359 59.624 57.016 59.952 56.531 59.952 c 55.719 59.952 55.312 59.202 55.156 58.718 c 55.156 59.952 l 53.594 59.827 l 53.594 59.483 l 54.375 59.483 54.469 59.405 54.469 58.858 c 54.469 55.843 l 54.469 55.343 54.344 55.343 53.594 55.343 c 53.594 54.999 l 54.875 55.03 l 55.312 55.03 55.844 55.03 56.297 54.999 c 56.297 55.343 l 56.062 55.343 l 55.234 55.343 55.203 55.468 55.203 55.874 c 55.203 57.593 l 55.203 58.702 55.672 59.702 56.531 59.702 c 56.609 59.702 56.625 59.702 56.656 59.686 c 56.625 59.686 56.391 59.546 56.391 59.249 c 56.391 58.936 56.625 58.78 56.875 58.78 c 57.078 58.78 57.359 58.905 57.359 59.264 c h 63.676 54.999 m 63.676 55.343 l 62.879 55.343 62.801 55.421 62.801 55.968 c 62.801 59.952 l 61.145 59.827 l 61.145 59.483 l 61.926 59.483 62.02 59.405 62.02 58.858 c 62.02 56.858 l 62.02 55.889 61.488 55.124 60.66 55.124 c 59.723 55.124 59.676 55.655 59.676 56.233 c 59.676 59.952 l 58.035 59.827 l 58.035 59.483 l 58.91 59.483 58.91 59.452 58.91 58.452 c 58.91 56.764 l 58.91 55.889 58.91 54.874 60.613 54.874 c 61.238 54.874 61.738 55.186 62.051 55.889 c 62.051 54.874 l h 73.02 54.999 m 73.02 55.343 l 72.441 55.343 72.16 55.343 72.145 55.686 c 72.145 57.827 l 72.145 58.78 72.145 59.139 71.801 59.53 c 71.645 59.733 71.27 59.952 70.613 59.952 c 69.676 59.952 69.191 59.28 69.004 58.858 c 68.832 59.827 68.004 59.952 67.504 59.952 c 66.691 59.952 66.16 59.468 65.848 58.78 c 65.848 59.952 l 64.27 59.827 l 64.27 59.483 l 65.051 59.483 65.145 59.405 65.145 58.858 c 65.145 55.843 l 65.145 55.343 65.02 55.343 64.27 55.343 c 64.27 54.999 l 65.535 55.03 l 66.785 54.999 l 66.785 55.343 l 66.035 55.343 65.91 55.343 65.91 55.843 c 65.91 57.905 l 65.91 59.077 66.707 59.702 67.426 59.702 c 68.129 59.702 68.254 59.093 68.254 58.468 c 68.254 55.843 l 68.254 55.343 68.129 55.343 67.379 55.343 c 67.379 54.999 l 68.645 55.03 l 69.91 54.999 l 69.91 55.343 l 69.16 55.343 69.035 55.343 69.035 55.843 c 69.035 57.905 l 69.035 59.077 69.832 59.702 70.535 59.702 c 71.254 59.702 71.379 59.093 71.379 58.468 c 71.379 55.843 l 71.379 55.343 71.254 55.343 70.504 55.343 c 70.504 54.999 l 71.77 55.03 l h 82.898 54.999 m 82.898 55.343 l 82.117 55.343 82.023 55.421 82.023 55.968 c 82.023 62.78 l 80.414 62.655 l 80.414 62.296 l 81.195 62.296 81.289 62.218 81.289 61.671 c 81.289 59.249 l 80.961 59.655 80.477 59.952 79.867 59.952 c 78.555 59.952 77.367 58.858 77.367 57.405 c 77.367 55.983 78.477 54.874 79.742 54.874 c 80.461 54.874 80.977 55.249 81.242 55.608 c 81.242 54.874 l h 81.242 56.327 m 81.242 56.124 81.242 56.093 81.133 55.905 c 80.789 55.374 80.289 55.124 79.805 55.124 c 79.305 55.124 78.898 55.421 78.633 55.843 c 78.336 56.296 78.305 56.936 78.305 57.389 c 78.305 57.811 78.32 58.483 78.648 58.983 c 78.883 59.327 79.305 59.702 79.914 59.702 c 80.305 59.702 80.773 59.53 81.133 59.03 c 81.242 58.843 81.242 58.811 81.242 58.624 c h 88.508 57.389 m 88.508 58.827 87.383 60.014 86.023 60.014 c 84.633 60.014 83.539 58.796 83.539 57.389 c 83.539 55.952 84.711 54.874 86.023 54.874 c 87.367 54.874 88.508 55.968 88.508 57.389 c h 87.57 57.483 m 87.57 57.077 87.57 56.483 87.32 55.983 c 87.086 55.483 86.586 55.155 86.023 55.155 c 85.539 55.155 85.055 55.389 84.758 55.905 c 84.477 56.405 84.477 57.077 84.477 57.483 c 84.477 57.921 84.477 58.53 84.742 59.014 c 85.039 59.53 85.57 59.764 86.023 59.764 c 86.508 59.764 86.992 59.53 87.289 59.046 c 87.57 58.561 87.57 57.905 87.57 57.483 c h 91.688 54.999 m 91.688 55.343 l 90.938 55.343 90.812 55.343 90.812 55.843 c 90.812 62.78 l 89.203 62.655 l 89.203 62.296 l 89.984 62.296 90.078 62.218 90.078 61.671 c 90.078 55.843 l 90.078 55.343 89.953 55.343 89.203 55.343 c 89.203 54.999 l 90.438 55.03 l h 97.215 57.389 m 97.215 58.827 96.09 60.014 94.73 60.014 c 93.34 60.014 92.246 58.796 92.246 57.389 c 92.246 55.952 93.418 54.874 94.73 54.874 c 96.074 54.874 97.215 55.968 97.215 57.389 c h 96.277 57.483 m 96.277 57.077 96.277 56.483 96.027 55.983 c 95.793 55.483 95.293 55.155 94.73 55.155 c 94.246 55.155 93.762 55.389 93.465 55.905 c 93.184 56.405 93.184 57.077 93.184 57.483 c 93.184 57.921 93.184 58.53 93.449 59.014 c 93.746 59.53 94.277 59.764 94.73 59.764 c 95.215 59.764 95.699 59.53 95.996 59.046 c 96.277 58.561 96.277 57.905 96.277 57.483 c h 101.613 59.264 m 101.613 59.624 101.27 59.952 100.785 59.952 c 99.973 59.952 99.566 59.202 99.41 58.718 c 99.41 59.952 l 97.848 59.827 l 97.848 59.483 l 98.629 59.483 98.723 59.405 98.723 58.858 c 98.723 55.843 l 98.723 55.343 98.598 55.343 97.848 55.343 c 97.848 54.999 l 99.129 55.03 l 99.566 55.03 100.098 55.03 100.551 54.999 c 100.551 55.343 l 100.316 55.343 l 99.488 55.343 99.457 55.468 99.457 55.874 c 99.457 57.593 l 99.457 58.702 99.926 59.702 100.785 59.702 c 100.863 59.702 100.879 59.702 100.91 59.686 c 100.879 59.686 100.645 59.546 100.645 59.249 c 100.645 58.936 100.879 58.78 101.129 58.78 c 101.332 58.78 101.613 58.905 101.613 59.264 c h 104.086 55.593 m 104.086 55.921 103.805 56.186 103.492 56.186 c 103.164 56.186 102.898 55.921 102.898 55.593 c 102.898 55.264 103.164 54.999 103.492 54.999 c 103.805 54.999 104.086 55.264 104.086 55.593 c h f 159.141 225.608 m 159.141 225.718 159.141 225.796 158.984 225.796 c 158.875 225.796 158.875 225.733 158.859 225.624 c 158.766 224.014 157.562 223.093 156.344 223.093 c 155.672 223.093 153.469 223.483 153.469 226.811 c 153.469 230.171 155.656 230.546 156.344 230.546 c 157.562 230.546 158.562 229.53 158.781 227.889 c 158.797 227.733 158.797 227.702 158.953 227.702 c 159.141 227.702 159.141 227.733 159.141 227.968 c 159.141 230.624 l 159.141 230.811 159.141 230.889 159.016 230.889 c 158.969 230.889 158.922 230.889 158.828 230.764 c 158.281 229.936 l 157.859 230.343 157.281 230.889 156.219 230.889 c 154.125 230.889 152.312 229.108 152.312 226.827 c 152.312 224.514 154.125 222.749 156.219 222.749 c 158.047 222.749 159.141 224.311 159.141 225.608 c h 165.781 222.999 m 165.781 223.343 l 164.984 223.343 164.906 223.421 164.906 223.968 c 164.906 227.952 l 163.25 227.827 l 163.25 227.483 l 164.031 227.483 164.125 227.405 164.125 226.858 c 164.125 224.858 l 164.125 223.889 163.594 223.124 162.766 223.124 c 161.828 223.124 161.781 223.655 161.781 224.233 c 161.781 227.952 l 160.141 227.827 l 160.141 227.483 l 161.016 227.483 161.016 227.452 161.016 226.452 c 161.016 224.764 l 161.016 223.889 161.016 222.874 162.719 222.874 c 163.344 222.874 163.844 223.186 164.156 223.889 c 164.156 222.874 l h 170.094 227.264 m 170.094 227.624 169.75 227.952 169.266 227.952 c 168.453 227.952 168.047 227.202 167.891 226.718 c 167.891 227.952 l 166.328 227.827 l 166.328 227.483 l 167.109 227.483 167.203 227.405 167.203 226.858 c 167.203 223.843 l 167.203 223.343 167.078 223.343 166.328 223.343 c 166.328 222.999 l 167.609 223.03 l 168.047 223.03 168.578 223.03 169.031 222.999 c 169.031 223.343 l 168.797 223.343 l 167.969 223.343 167.938 223.468 167.938 223.874 c 167.938 225.593 l 167.938 226.702 168.406 227.702 169.266 227.702 c 169.344 227.702 169.359 227.702 169.391 227.686 c 169.359 227.686 169.125 227.546 169.125 227.249 c 169.125 226.936 169.359 226.78 169.609 226.78 c 169.812 226.78 170.094 226.905 170.094 227.264 c h 175.816 223.999 m 175.816 224.624 l 175.535 224.624 l 175.535 223.999 l 175.535 223.343 175.254 223.28 175.145 223.28 c 174.77 223.28 174.723 223.78 174.723 223.843 c 174.723 226.077 l 174.723 226.546 174.723 226.983 174.316 227.405 c 173.879 227.843 173.316 228.014 172.785 228.014 c 171.863 228.014 171.098 227.499 171.098 226.749 c 171.098 226.421 171.316 226.218 171.613 226.218 c 171.926 226.218 172.129 226.452 172.129 226.733 c 172.129 226.874 172.066 227.249 171.551 227.249 c 171.848 227.655 172.41 227.764 172.77 227.764 c 173.316 227.764 173.957 227.327 173.957 226.343 c 173.957 225.921 l 173.379 225.889 172.598 225.858 171.895 225.514 c 171.051 225.139 170.77 224.561 170.77 224.061 c 170.77 223.155 171.848 222.874 172.566 222.874 c 173.301 222.874 173.816 223.327 174.035 223.843 c 174.066 223.405 174.379 222.936 174.91 222.936 c 175.145 222.936 175.816 223.093 175.816 223.999 c h 173.957 224.561 m 173.957 223.499 173.145 223.124 172.645 223.124 c 172.098 223.124 171.629 223.514 171.629 224.077 c 171.629 224.686 172.098 225.624 173.957 225.686 c h 181.855 225.421 m 181.855 226.843 180.746 227.952 179.48 227.952 c 178.605 227.952 178.121 227.421 177.934 227.218 c 177.934 230.78 l 176.324 230.655 l 176.324 230.296 l 177.105 230.296 177.199 230.218 177.199 229.671 c 177.199 222.999 l 177.48 222.999 l 177.887 223.686 l 178.043 223.436 178.527 222.874 179.355 222.874 c 180.684 222.874 181.855 223.968 181.855 225.421 c h 180.918 225.436 m 180.918 225.014 180.902 224.343 180.574 223.843 c 180.34 223.499 179.918 223.124 179.309 223.124 c 178.809 223.124 178.402 223.389 178.137 223.811 c 177.965 224.046 177.965 224.077 177.965 224.28 c 177.965 226.577 l 177.965 226.796 177.965 226.811 178.09 226.983 c 178.527 227.608 179.152 227.702 179.418 227.702 c 179.918 227.702 180.324 227.405 180.59 226.983 c 180.887 226.53 180.918 225.889 180.918 225.436 c h 185.012 222.999 m 185.012 223.343 l 184.277 223.343 184.23 223.405 184.23 223.843 c 184.23 227.952 l 182.668 227.827 l 182.668 227.483 l 183.387 227.483 183.496 227.405 183.496 226.858 c 183.496 223.843 l 183.496 223.343 183.371 223.343 182.621 223.343 c 182.621 222.999 l 183.855 223.03 l 184.246 223.03 184.637 223.014 185.012 222.999 c h 184.402 229.764 m 184.402 230.061 184.137 230.358 183.809 230.358 c 183.418 230.358 183.199 230.046 183.199 229.764 c 183.199 229.468 183.449 229.171 183.793 229.171 c 184.168 229.171 184.402 229.483 184.402 229.764 c h 189.07 224.389 m 189.07 225.03 l 188.789 225.03 l 188.789 224.405 l 188.789 223.577 188.461 223.155 188.039 223.155 c 187.289 223.155 187.289 224.171 187.289 224.358 c 187.289 227.483 l 188.898 227.483 l 188.898 227.827 l 187.289 227.827 l 187.289 229.889 l 187.008 229.889 l 186.992 228.968 186.664 227.764 185.57 227.733 c 185.57 227.483 l 186.523 227.483 l 186.523 224.389 l 186.523 223.014 187.555 222.874 187.961 222.874 c 188.758 222.874 189.07 223.671 189.07 224.389 c h 195.707 222.999 m 195.707 223.343 l 194.91 223.343 194.832 223.421 194.832 223.968 c 194.832 227.952 l 193.176 227.827 l 193.176 227.483 l 193.957 227.483 194.051 227.405 194.051 226.858 c 194.051 224.858 l 194.051 223.889 193.52 223.124 192.691 223.124 c 191.754 223.124 191.707 223.655 191.707 224.233 c 191.707 227.952 l 190.066 227.827 l 190.066 227.483 l 190.941 227.483 190.941 227.452 190.941 226.452 c 190.941 224.764 l 190.941 223.889 190.941 222.874 192.645 222.874 c 193.27 222.874 193.77 223.186 194.082 223.889 c 194.082 222.874 l h 200.02 227.264 m 200.02 227.624 199.676 227.952 199.191 227.952 c 198.379 227.952 197.973 227.202 197.816 226.718 c 197.816 227.952 l 196.254 227.827 l 196.254 227.483 l 197.035 227.483 197.129 227.405 197.129 226.858 c 197.129 223.843 l 197.129 223.343 197.004 223.343 196.254 223.343 c 196.254 222.999 l 197.535 223.03 l 197.973 223.03 198.504 223.03 198.957 222.999 c 198.957 223.343 l 198.723 223.343 l 197.895 223.343 197.863 223.468 197.863 223.874 c 197.863 225.593 l 197.863 226.702 198.332 227.702 199.191 227.702 c 199.27 227.702 199.285 227.702 199.316 227.686 c 199.285 227.686 199.051 227.546 199.051 227.249 c 199.051 226.936 199.285 226.78 199.535 226.78 c 199.738 226.78 200.02 226.905 200.02 227.264 c h 206.844 222.999 m 206.844 223.343 l 206.109 223.343 206.062 223.405 206.062 223.843 c 206.062 227.952 l 204.5 227.827 l 204.5 227.483 l 205.219 227.483 205.328 227.405 205.328 226.858 c 205.328 223.843 l 205.328 223.343 205.203 223.343 204.453 223.343 c 204.453 222.999 l 205.688 223.03 l 206.078 223.03 206.469 223.014 206.844 222.999 c h 206.234 229.764 m 206.234 230.061 205.969 230.358 205.641 230.358 c 205.25 230.358 205.031 230.046 205.031 229.764 c 205.031 229.468 205.281 229.171 205.625 229.171 c 206 229.171 206.234 229.483 206.234 229.764 c h 216.293 222.999 m 216.293 223.343 l 215.715 223.343 215.434 223.343 215.418 223.686 c 215.418 225.827 l 215.418 226.78 215.418 227.139 215.074 227.53 c 214.918 227.733 214.543 227.952 213.887 227.952 c 212.949 227.952 212.465 227.28 212.277 226.858 c 212.105 227.827 211.277 227.952 210.777 227.952 c 209.965 227.952 209.434 227.468 209.121 226.78 c 209.121 227.952 l 207.543 227.827 l 207.543 227.483 l 208.324 227.483 208.418 227.405 208.418 226.858 c 208.418 223.843 l 208.418 223.343 208.293 223.343 207.543 223.343 c 207.543 222.999 l 208.809 223.03 l 210.059 222.999 l 210.059 223.343 l 209.309 223.343 209.184 223.343 209.184 223.843 c 209.184 225.905 l 209.184 227.077 209.98 227.702 210.699 227.702 c 211.402 227.702 211.527 227.093 211.527 226.468 c 211.527 223.843 l 211.527 223.343 211.402 223.343 210.652 223.343 c 210.652 222.999 l 211.918 223.03 l 213.184 222.999 l 213.184 223.343 l 212.434 223.343 212.309 223.343 212.309 223.843 c 212.309 225.905 l 212.309 227.077 213.105 227.702 213.809 227.702 c 214.527 227.702 214.652 227.093 214.652 226.468 c 214.652 223.843 l 214.652 223.343 214.527 223.343 213.777 223.343 c 213.777 222.999 l 215.043 223.03 l h 222.367 225.421 m 222.367 226.843 221.273 227.952 220.023 227.952 c 219.148 227.952 218.68 227.452 218.445 227.218 c 218.445 227.952 l 216.836 227.827 l 216.836 227.483 l 217.633 227.483 217.711 227.405 217.711 226.921 c 217.711 221.671 l 217.711 221.171 217.586 221.171 216.836 221.171 c 216.836 220.827 l 218.086 220.858 l 219.352 220.827 l 219.352 221.171 l 218.602 221.171 218.477 221.171 218.477 221.671 c 218.477 223.655 l 218.539 223.483 219.008 222.874 219.867 222.874 c 221.195 222.874 222.367 223.968 222.367 225.421 c h 221.43 225.421 m 221.43 224.061 220.648 223.124 219.82 223.124 c 219.367 223.124 218.945 223.343 218.648 223.811 c 218.477 224.046 218.477 224.046 218.477 224.28 c 218.477 226.78 l 218.805 227.343 219.352 227.671 219.93 227.671 c 220.742 227.671 221.43 226.686 221.43 225.421 c h 227.414 224.327 m 227.414 224.436 227.32 224.468 227.258 224.468 c 227.164 224.468 227.133 224.405 227.117 224.311 c 226.727 223.155 225.711 223.155 225.602 223.155 c 225.039 223.155 224.602 223.499 224.336 223.905 c 224.008 224.436 224.008 225.186 224.008 225.593 c 227.133 225.593 l 227.367 225.593 227.414 225.593 227.414 225.827 c 227.414 226.936 226.805 228.014 225.398 228.014 c 224.102 228.014 223.07 226.858 223.07 225.468 c 223.07 223.968 224.242 222.874 225.539 222.874 c 226.898 222.874 227.414 224.124 227.414 224.327 c h 226.664 225.827 m 224.008 225.827 l 224.086 227.499 225.023 227.764 225.398 227.764 c 226.555 227.764 226.664 226.264 226.664 225.827 c h 231.801 227.264 m 231.801 227.624 231.457 227.952 230.973 227.952 c 230.16 227.952 229.754 227.202 229.598 226.718 c 229.598 227.952 l 228.035 227.827 l 228.035 227.483 l 228.816 227.483 228.91 227.405 228.91 226.858 c 228.91 223.843 l 228.91 223.343 228.785 223.343 228.035 223.343 c 228.035 222.999 l 229.316 223.03 l 229.754 223.03 230.285 223.03 230.738 222.999 c 230.738 223.343 l 230.504 223.343 l 229.676 223.343 229.645 223.468 229.645 223.874 c 229.645 225.593 l 229.645 226.702 230.113 227.702 230.973 227.702 c 231.051 227.702 231.066 227.702 231.098 227.686 c 231.066 227.686 230.832 227.546 230.832 227.249 c 230.832 226.936 231.066 226.78 231.316 226.78 c 231.52 226.78 231.801 226.905 231.801 227.264 c h 238.027 222.999 m 238.027 223.343 l 237.246 223.343 237.152 223.421 237.152 223.968 c 237.152 230.78 l 235.543 230.655 l 235.543 230.296 l 236.324 230.296 236.418 230.218 236.418 229.671 c 236.418 227.249 l 236.09 227.655 235.605 227.952 234.996 227.952 c 233.684 227.952 232.496 226.858 232.496 225.405 c 232.496 223.983 233.605 222.874 234.871 222.874 c 235.59 222.874 236.105 223.249 236.371 223.608 c 236.371 222.874 l h 236.371 224.327 m 236.371 224.124 236.371 224.093 236.262 223.905 c 235.918 223.374 235.418 223.124 234.934 223.124 c 234.434 223.124 234.027 223.421 233.762 223.843 c 233.465 224.296 233.434 224.936 233.434 225.389 c 233.434 225.811 233.449 226.483 233.777 226.983 c 234.012 227.327 234.434 227.702 235.043 227.702 c 235.434 227.702 235.902 227.53 236.262 227.03 c 236.371 226.843 236.371 226.811 236.371 226.624 c h 241.121 222.999 m 241.121 223.343 l 240.387 223.343 240.34 223.405 240.34 223.843 c 240.34 227.952 l 238.777 227.827 l 238.777 227.483 l 239.496 227.483 239.605 227.405 239.605 226.858 c 239.605 223.843 l 239.605 223.343 239.48 223.343 238.73 223.343 c 238.73 222.999 l 239.965 223.03 l 240.355 223.03 240.746 223.014 241.121 222.999 c h 240.512 229.764 m 240.512 230.061 240.246 230.358 239.918 230.358 c 239.527 230.358 239.309 230.046 239.309 229.764 c 239.309 229.468 239.559 229.171 239.902 229.171 c 240.277 229.171 240.512 229.483 240.512 229.764 c h 246.117 224.327 m 246.117 224.436 246.023 224.468 245.961 224.468 c 245.867 224.468 245.836 224.405 245.82 224.311 c 245.43 223.155 244.414 223.155 244.305 223.155 c 243.742 223.155 243.305 223.499 243.039 223.905 c 242.711 224.436 242.711 225.186 242.711 225.593 c 245.836 225.593 l 246.07 225.593 246.117 225.593 246.117 225.827 c 246.117 226.936 245.508 228.014 244.102 228.014 c 242.805 228.014 241.773 226.858 241.773 225.468 c 241.773 223.968 242.945 222.874 244.242 222.874 c 245.602 222.874 246.117 224.124 246.117 224.327 c h 245.367 225.827 m 242.711 225.827 l 242.789 227.499 243.727 227.764 244.102 227.764 c 245.258 227.764 245.367 226.264 245.367 225.827 c h 250.145 224.389 m 250.145 225.03 l 249.863 225.03 l 249.863 224.405 l 249.863 223.577 249.535 223.155 249.113 223.155 c 248.363 223.155 248.363 224.171 248.363 224.358 c 248.363 227.483 l 249.973 227.483 l 249.973 227.827 l 248.363 227.827 l 248.363 229.889 l 248.082 229.889 l 248.066 228.968 247.738 227.764 246.645 227.733 c 246.645 227.483 l 247.598 227.483 l 247.598 224.389 l 247.598 223.014 248.629 222.874 249.035 222.874 c 249.832 222.874 250.145 223.671 250.145 224.389 c h 259.926 223.999 m 259.926 224.624 l 259.645 224.624 l 259.645 223.999 l 259.645 223.343 259.363 223.28 259.254 223.28 c 258.879 223.28 258.832 223.78 258.832 223.843 c 258.832 226.077 l 258.832 226.546 258.832 226.983 258.426 227.405 c 257.988 227.843 257.426 228.014 256.895 228.014 c 255.973 228.014 255.207 227.499 255.207 226.749 c 255.207 226.421 255.426 226.218 255.723 226.218 c 256.035 226.218 256.238 226.452 256.238 226.733 c 256.238 226.874 256.176 227.249 255.66 227.249 c 255.957 227.655 256.52 227.764 256.879 227.764 c 257.426 227.764 258.066 227.327 258.066 226.343 c 258.066 225.921 l 257.488 225.889 256.707 225.858 256.004 225.514 c 255.16 225.139 254.879 224.561 254.879 224.061 c 254.879 223.155 255.957 222.874 256.676 222.874 c 257.41 222.874 257.926 223.327 258.145 223.843 c 258.176 223.405 258.488 222.936 259.02 222.936 c 259.254 222.936 259.926 223.093 259.926 223.999 c h 258.066 224.561 m 258.066 223.499 257.254 223.124 256.754 223.124 c 256.207 223.124 255.738 223.514 255.738 224.077 c 255.738 224.686 256.207 225.624 258.066 225.686 c h 264.199 227.264 m 264.199 227.624 263.855 227.952 263.371 227.952 c 262.559 227.952 262.152 227.202 261.996 226.718 c 261.996 227.952 l 260.434 227.827 l 260.434 227.483 l 261.215 227.483 261.309 227.405 261.309 226.858 c 261.309 223.843 l 261.309 223.343 261.184 223.343 260.434 223.343 c 260.434 222.999 l 261.715 223.03 l 262.152 223.03 262.684 223.03 263.137 222.999 c 263.137 223.343 l 262.902 223.343 l 262.074 223.343 262.043 223.468 262.043 223.874 c 262.043 225.593 l 262.043 226.702 262.512 227.702 263.371 227.702 c 263.449 227.702 263.465 227.702 263.496 227.686 c 263.465 227.686 263.23 227.546 263.23 227.249 c 263.23 226.936 263.465 226.78 263.715 226.78 c 263.918 226.78 264.199 226.905 264.199 227.264 c h 269.176 224.327 m 269.176 224.436 269.051 224.436 269.02 224.436 c 268.926 224.436 268.895 224.405 268.879 224.327 c 268.551 223.296 267.832 223.155 267.41 223.155 c 266.816 223.155 265.832 223.639 265.832 225.436 c 265.832 227.264 266.754 227.733 267.348 227.733 c 267.441 227.733 268.145 227.733 268.535 227.327 c 268.082 227.296 268.02 226.952 268.02 226.811 c 268.02 226.514 268.223 226.296 268.535 226.296 c 268.816 226.296 269.051 226.483 269.051 226.811 c 269.051 227.577 268.191 228.014 267.332 228.014 c 265.926 228.014 264.895 226.811 264.895 225.421 c 264.895 223.983 266.004 222.874 267.316 222.874 c 268.816 222.874 269.176 224.218 269.176 224.327 c h 275.484 222.999 m 275.484 223.343 l 274.688 223.343 274.609 223.421 274.609 223.968 c 274.609 227.952 l 272.953 227.827 l 272.953 227.483 l 273.734 227.483 273.828 227.405 273.828 226.858 c 273.828 224.858 l 273.828 223.889 273.297 223.124 272.469 223.124 c 271.531 223.124 271.484 223.655 271.484 224.233 c 271.484 227.952 l 269.844 227.827 l 269.844 227.483 l 270.719 227.483 270.719 227.452 270.719 226.452 c 270.719 224.764 l 270.719 223.889 270.719 222.874 272.422 222.874 c 273.047 222.874 273.547 223.186 273.859 223.889 c 273.859 222.874 l h f 157.094 209.999 m 157.094 210.624 l 156.812 210.624 l 156.812 209.999 l 156.812 209.343 156.531 209.28 156.422 209.28 c 156.047 209.28 156 209.78 156 209.843 c 156 212.077 l 156 212.546 156 212.983 155.594 213.405 c 155.156 213.843 154.594 214.014 154.062 214.014 c 153.141 214.014 152.375 213.499 152.375 212.749 c 152.375 212.421 152.594 212.218 152.891 212.218 c 153.203 212.218 153.406 212.452 153.406 212.733 c 153.406 212.874 153.344 213.249 152.828 213.249 c 153.125 213.655 153.688 213.764 154.047 213.764 c 154.594 213.764 155.234 213.327 155.234 212.343 c 155.234 211.921 l 154.656 211.889 153.875 211.858 153.172 211.514 c 152.328 211.139 152.047 210.561 152.047 210.061 c 152.047 209.155 153.125 208.874 153.844 208.874 c 154.578 208.874 155.094 209.327 155.312 209.843 c 155.344 209.405 155.656 208.936 156.188 208.936 c 156.422 208.936 157.094 209.093 157.094 209.999 c h 155.234 210.561 m 155.234 209.499 154.422 209.124 153.922 209.124 c 153.375 209.124 152.906 209.514 152.906 210.077 c 152.906 210.686 153.375 211.624 155.234 211.686 c h 161.004 210.389 m 161.004 211.03 l 160.723 211.03 l 160.723 210.405 l 160.723 209.577 160.395 209.155 159.973 209.155 c 159.223 209.155 159.223 210.171 159.223 210.358 c 159.223 213.483 l 160.832 213.483 l 160.832 213.827 l 159.223 213.827 l 159.223 215.889 l 158.941 215.889 l 158.926 214.968 158.598 213.764 157.504 213.733 c 157.504 213.483 l 158.457 213.483 l 158.457 210.389 l 158.457 209.014 159.488 208.874 159.895 208.874 c 160.691 208.874 161.004 209.671 161.004 210.389 c h 171.223 211.421 m 171.223 212.843 170.129 213.952 168.879 213.952 c 168.004 213.952 167.535 213.452 167.301 213.218 c 167.301 213.952 l 165.691 213.827 l 165.691 213.483 l 166.488 213.483 166.566 213.405 166.566 212.921 c 166.566 207.671 l 166.566 207.171 166.441 207.171 165.691 207.171 c 165.691 206.827 l 166.941 206.858 l 168.207 206.827 l 168.207 207.171 l 167.457 207.171 167.332 207.171 167.332 207.671 c 167.332 209.655 l 167.395 209.483 167.863 208.874 168.723 208.874 c 170.051 208.874 171.223 209.968 171.223 211.421 c h 170.285 211.421 m 170.285 210.061 169.504 209.124 168.676 209.124 c 168.223 209.124 167.801 209.343 167.504 209.811 c 167.332 210.046 167.332 210.046 167.332 210.28 c 167.332 212.78 l 167.66 213.343 168.207 213.671 168.785 213.671 c 169.598 213.671 170.285 212.686 170.285 211.421 c h 177.613 208.999 m 177.613 209.343 l 176.816 209.343 176.738 209.421 176.738 209.968 c 176.738 213.952 l 175.082 213.827 l 175.082 213.483 l 175.863 213.483 175.957 213.405 175.957 212.858 c 175.957 210.858 l 175.957 209.889 175.426 209.124 174.598 209.124 c 173.66 209.124 173.613 209.655 173.613 210.233 c 173.613 213.952 l 171.973 213.827 l 171.973 213.483 l 172.848 213.483 172.848 213.452 172.848 212.452 c 172.848 210.764 l 172.848 209.889 172.848 208.874 174.551 208.874 c 175.176 208.874 175.676 209.186 175.988 209.889 c 175.988 208.874 l h 181.926 213.264 m 181.926 213.624 181.582 213.952 181.098 213.952 c 180.285 213.952 179.879 213.202 179.723 212.718 c 179.723 213.952 l 178.16 213.827 l 178.16 213.483 l 178.941 213.483 179.035 213.405 179.035 212.858 c 179.035 209.843 l 179.035 209.343 178.91 209.343 178.16 209.343 c 178.16 208.999 l 179.441 209.03 l 179.879 209.03 180.41 209.03 180.863 208.999 c 180.863 209.343 l 180.629 209.343 l 179.801 209.343 179.77 209.468 179.77 209.874 c 179.77 211.593 l 179.77 212.702 180.238 213.702 181.098 213.702 c 181.176 213.702 181.191 213.702 181.223 213.686 c 181.191 213.686 180.957 213.546 180.957 213.249 c 180.957 212.936 181.191 212.78 181.441 212.78 c 181.645 212.78 181.926 212.905 181.926 213.264 c h 188.246 208.999 m 188.246 209.343 l 187.449 209.343 187.371 209.421 187.371 209.968 c 187.371 213.952 l 185.715 213.827 l 185.715 213.483 l 186.496 213.483 186.59 213.405 186.59 212.858 c 186.59 210.858 l 186.59 209.889 186.059 209.124 185.23 209.124 c 184.293 209.124 184.246 209.655 184.246 210.233 c 184.246 213.952 l 182.605 213.827 l 182.605 213.483 l 183.48 213.483 183.48 213.452 183.48 212.452 c 183.48 210.764 l 183.48 209.889 183.48 208.874 185.184 208.874 c 185.809 208.874 186.309 209.186 186.621 209.889 c 186.621 208.874 l h 192.512 210.436 m 192.512 211.03 192.184 211.358 192.043 211.499 c 191.668 211.858 191.23 211.952 190.762 212.03 c 190.137 212.155 189.387 212.311 189.387 212.952 c 189.387 213.343 189.684 213.811 190.637 213.811 c 191.871 213.811 191.934 212.796 191.949 212.452 c 191.965 212.343 192.09 212.343 192.09 212.343 c 192.23 212.343 192.23 212.405 192.23 212.624 c 192.23 213.749 l 192.23 213.936 192.23 214.014 192.105 214.014 c 192.059 214.014 192.027 214.014 191.887 213.889 c 191.855 213.843 191.746 213.733 191.699 213.702 c 191.277 214.014 190.809 214.014 190.637 214.014 c 189.277 214.014 188.855 213.264 188.855 212.639 c 188.855 212.249 189.027 211.936 189.324 211.686 c 189.684 211.389 190.012 211.327 190.809 211.171 c 191.059 211.124 191.98 210.952 191.98 210.139 c 191.98 209.577 191.59 209.124 190.715 209.124 c 189.762 209.124 189.371 209.764 189.152 210.718 c 189.121 210.858 189.105 210.905 188.996 210.905 c 188.855 210.905 188.855 210.827 188.855 210.624 c 188.855 209.139 l 188.855 208.952 188.855 208.874 188.98 208.874 c 189.027 208.874 189.043 208.889 189.246 209.093 c 189.277 209.124 189.277 209.139 189.48 209.358 c 189.965 208.889 190.48 208.874 190.715 208.874 c 191.996 208.874 192.512 209.624 192.512 210.436 c h 201.297 210.327 m 201.297 210.436 201.172 210.436 201.141 210.436 c 201.047 210.436 201.016 210.405 201 210.327 c 200.672 209.296 199.953 209.155 199.531 209.155 c 198.938 209.155 197.953 209.639 197.953 211.436 c 197.953 213.264 198.875 213.733 199.469 213.733 c 199.562 213.733 200.266 213.733 200.656 213.327 c 200.203 213.296 200.141 212.952 200.141 212.811 c 200.141 212.514 200.344 212.296 200.656 212.296 c 200.938 212.296 201.172 212.483 201.172 212.811 c 201.172 213.577 200.312 214.014 199.453 214.014 c 198.047 214.014 197.016 212.811 197.016 211.421 c 197.016 209.983 198.125 208.874 199.438 208.874 c 200.938 208.874 201.297 210.218 201.297 210.327 c h 206.887 211.389 m 206.887 212.827 205.762 214.014 204.402 214.014 c 203.012 214.014 201.918 212.796 201.918 211.389 c 201.918 209.952 203.09 208.874 204.402 208.874 c 205.746 208.874 206.887 209.968 206.887 211.389 c h 205.949 211.483 m 205.949 211.077 205.949 210.483 205.699 209.983 c 205.465 209.483 204.965 209.155 204.402 209.155 c 203.918 209.155 203.434 209.389 203.137 209.905 c 202.855 210.405 202.855 211.077 202.855 211.483 c 202.855 211.921 202.855 212.53 203.121 213.014 c 203.418 213.53 203.949 213.764 204.402 213.764 c 204.887 213.764 205.371 213.53 205.668 213.046 c 205.949 212.561 205.949 211.905 205.949 211.483 c h 213.207 208.999 m 213.207 209.343 l 212.613 209.343 212.332 209.343 212.332 209.686 c 212.332 211.827 l 212.332 212.78 212.332 213.139 211.973 213.53 c 211.816 213.733 211.457 213.952 210.801 213.952 c 209.988 213.952 209.457 213.468 209.145 212.78 c 209.145 213.952 l 207.566 213.827 l 207.566 213.483 l 208.348 213.483 208.441 213.405 208.441 212.858 c 208.441 209.843 l 208.441 209.343 208.316 209.343 207.566 209.343 c 207.566 208.999 l 208.832 209.03 l 210.082 208.999 l 210.082 209.343 l 209.332 209.343 209.207 209.343 209.207 209.843 c 209.207 211.905 l 209.207 213.077 210.004 213.702 210.723 213.702 c 211.426 213.702 211.551 213.093 211.551 212.468 c 211.551 209.843 l 211.551 209.343 211.426 209.343 210.676 209.343 c 210.676 208.999 l 211.941 209.03 l h 217.473 210.436 m 217.473 211.03 217.145 211.358 217.004 211.499 c 216.629 211.858 216.191 211.952 215.723 212.03 c 215.098 212.155 214.348 212.311 214.348 212.952 c 214.348 213.343 214.645 213.811 215.598 213.811 c 216.832 213.811 216.895 212.796 216.91 212.452 c 216.926 212.343 217.051 212.343 217.051 212.343 c 217.191 212.343 217.191 212.405 217.191 212.624 c 217.191 213.749 l 217.191 213.936 217.191 214.014 217.066 214.014 c 217.02 214.014 216.988 214.014 216.848 213.889 c 216.816 213.843 216.707 213.733 216.66 213.702 c 216.238 214.014 215.77 214.014 215.598 214.014 c 214.238 214.014 213.816 213.264 213.816 212.639 c 213.816 212.249 213.988 211.936 214.285 211.686 c 214.645 211.389 214.973 211.327 215.77 211.171 c 216.02 211.124 216.941 210.952 216.941 210.139 c 216.941 209.577 216.551 209.124 215.676 209.124 c 214.723 209.124 214.332 209.764 214.113 210.718 c 214.082 210.858 214.066 210.905 213.957 210.905 c 213.816 210.905 213.816 210.827 213.816 210.624 c 213.816 209.139 l 213.816 208.952 213.816 208.874 213.941 208.874 c 213.988 208.874 214.004 208.889 214.207 209.093 c 214.238 209.124 214.238 209.139 214.441 209.358 c 214.926 208.889 215.441 208.874 215.676 208.874 c 216.957 208.874 217.473 209.624 217.473 210.436 c h 222.516 210.327 m 222.516 210.436 222.422 210.468 222.359 210.468 c 222.266 210.468 222.234 210.405 222.219 210.311 c 221.828 209.155 220.812 209.155 220.703 209.155 c 220.141 209.155 219.703 209.499 219.438 209.905 c 219.109 210.436 219.109 211.186 219.109 211.593 c 222.234 211.593 l 222.469 211.593 222.516 211.593 222.516 211.827 c 222.516 212.936 221.906 214.014 220.5 214.014 c 219.203 214.014 218.172 212.858 218.172 211.468 c 218.172 209.968 219.344 208.874 220.641 208.874 c 222 208.874 222.516 210.124 222.516 210.327 c h 221.766 211.827 m 219.109 211.827 l 219.188 213.499 220.125 213.764 220.5 213.764 c 221.656 213.764 221.766 212.264 221.766 211.827 c h 227.48 210.327 m 227.48 210.436 227.355 210.436 227.324 210.436 c 227.23 210.436 227.199 210.405 227.184 210.327 c 226.855 209.296 226.137 209.155 225.715 209.155 c 225.121 209.155 224.137 209.639 224.137 211.436 c 224.137 213.264 225.059 213.733 225.652 213.733 c 225.746 213.733 226.449 213.733 226.84 213.327 c 226.387 213.296 226.324 212.952 226.324 212.811 c 226.324 212.514 226.527 212.296 226.84 212.296 c 227.121 212.296 227.355 212.483 227.355 212.811 c 227.355 213.577 226.496 214.014 225.637 214.014 c 224.23 214.014 223.199 212.811 223.199 211.421 c 223.199 209.983 224.309 208.874 225.621 208.874 c 227.121 208.874 227.48 210.218 227.48 210.327 c h 231.508 210.389 m 231.508 211.03 l 231.227 211.03 l 231.227 210.405 l 231.227 209.577 230.898 209.155 230.477 209.155 c 229.727 209.155 229.727 210.171 229.727 210.358 c 229.727 213.483 l 231.336 213.483 l 231.336 213.827 l 229.727 213.827 l 229.727 215.889 l 229.445 215.889 l 229.43 214.968 229.102 213.764 228.008 213.733 c 228.008 213.483 l 228.961 213.483 l 228.961 210.389 l 228.961 209.014 229.992 208.874 230.398 208.874 c 231.195 208.874 231.508 209.671 231.508 210.389 c h 236.801 210.327 m 236.801 210.436 236.707 210.468 236.645 210.468 c 236.551 210.468 236.52 210.405 236.504 210.311 c 236.113 209.155 235.098 209.155 234.988 209.155 c 234.426 209.155 233.988 209.499 233.723 209.905 c 233.395 210.436 233.395 211.186 233.395 211.593 c 236.52 211.593 l 236.754 211.593 236.801 211.593 236.801 211.827 c 236.801 212.936 236.191 214.014 234.785 214.014 c 233.488 214.014 232.457 212.858 232.457 211.468 c 232.457 209.968 233.629 208.874 234.926 208.874 c 236.285 208.874 236.801 210.124 236.801 210.327 c h 236.051 211.827 m 233.395 211.827 l 233.473 213.499 234.41 213.764 234.785 213.764 c 235.941 213.764 236.051 212.264 236.051 211.827 c h 240.828 210.389 m 240.828 211.03 l 240.547 211.03 l 240.547 210.405 l 240.547 209.577 240.219 209.155 239.797 209.155 c 239.047 209.155 239.047 210.171 239.047 210.358 c 239.047 213.483 l 240.656 213.483 l 240.656 213.827 l 239.047 213.827 l 239.047 215.889 l 238.766 215.889 l 238.75 214.968 238.422 213.764 237.328 213.733 c 237.328 213.483 l 238.281 213.483 l 238.281 210.389 l 238.281 209.014 239.312 208.874 239.719 208.874 c 240.516 208.874 240.828 209.671 240.828 210.389 c h 247.461 208.999 m 247.461 209.343 l 246.664 209.343 246.586 209.421 246.586 209.968 c 246.586 213.952 l 244.93 213.827 l 244.93 213.483 l 245.711 213.483 245.805 213.405 245.805 212.858 c 245.805 210.858 l 245.805 209.889 245.273 209.124 244.445 209.124 c 243.508 209.124 243.461 209.655 243.461 210.233 c 243.461 213.952 l 241.82 213.827 l 241.82 213.483 l 242.695 213.483 242.695 213.452 242.695 212.452 c 242.695 210.764 l 242.695 209.889 242.695 208.874 244.398 208.874 c 245.023 208.874 245.523 209.186 245.836 209.889 c 245.836 208.874 l h 251.773 213.264 m 251.773 213.624 251.43 213.952 250.945 213.952 c 250.133 213.952 249.727 213.202 249.57 212.718 c 249.57 213.952 l 248.008 213.827 l 248.008 213.483 l 248.789 213.483 248.883 213.405 248.883 212.858 c 248.883 209.843 l 248.883 209.343 248.758 209.343 248.008 209.343 c 248.008 208.999 l 249.289 209.03 l 249.727 209.03 250.258 209.03 250.711 208.999 c 250.711 209.343 l 250.477 209.343 l 249.648 209.343 249.617 209.468 249.617 209.874 c 249.617 211.593 l 249.617 212.702 250.086 213.702 250.945 213.702 c 251.023 213.702 251.039 213.702 251.07 213.686 c 251.039 213.686 250.805 213.546 250.805 213.249 c 250.805 212.936 251.039 212.78 251.289 212.78 c 251.492 212.78 251.773 212.905 251.773 213.264 c h 254.375 209.014 m 254.375 209.733 254.094 210.186 253.656 210.186 c 253.266 210.186 253.062 209.889 253.062 209.593 c 253.062 209.296 253.25 208.999 253.656 208.999 c 253.812 208.999 253.969 209.061 254.094 209.171 c 254.125 208.296 253.812 207.608 253.312 207.077 c 253.25 207.014 253.234 206.999 253.234 206.968 c 253.234 206.874 253.297 206.843 253.344 206.843 c 253.484 206.843 254.375 207.718 254.375 209.014 c h 263.598 210.327 m 263.598 210.436 263.504 210.468 263.441 210.468 c 263.348 210.468 263.316 210.405 263.301 210.311 c 262.91 209.155 261.895 209.155 261.785 209.155 c 261.223 209.155 260.785 209.499 260.52 209.905 c 260.191 210.436 260.191 211.186 260.191 211.593 c 263.316 211.593 l 263.551 211.593 263.598 211.593 263.598 211.827 c 263.598 212.936 262.988 214.014 261.582 214.014 c 260.285 214.014 259.254 212.858 259.254 211.468 c 259.254 209.968 260.426 208.874 261.723 208.874 c 263.082 208.874 263.598 210.124 263.598 210.327 c h 262.848 211.827 m 260.191 211.827 l 260.27 213.499 261.207 213.764 261.582 213.764 c 262.738 213.764 262.848 212.264 262.848 211.827 c h 269.906 208.999 m 269.906 209.343 l 269.109 209.343 269.031 209.421 269.031 209.968 c 269.031 213.952 l 267.375 213.827 l 267.375 213.483 l 268.156 213.483 268.25 213.405 268.25 212.858 c 268.25 210.858 l 268.25 209.889 267.719 209.124 266.891 209.124 c 265.953 209.124 265.906 209.655 265.906 210.233 c 265.906 213.952 l 264.266 213.827 l 264.266 213.483 l 265.141 213.483 265.141 213.452 265.141 212.452 c 265.141 210.764 l 265.141 209.889 265.141 208.874 266.844 208.874 c 267.469 208.874 267.969 209.186 268.281 209.889 c 268.281 208.874 l h f 157.688 194.999 m 157.688 195.343 l 156.891 195.343 156.812 195.421 156.812 195.968 c 156.812 199.952 l 155.156 199.827 l 155.156 199.483 l 155.938 199.483 156.031 199.405 156.031 198.858 c 156.031 196.858 l 156.031 195.889 155.5 195.124 154.672 195.124 c 153.734 195.124 153.688 195.655 153.688 196.233 c 153.688 199.952 l 152.047 199.827 l 152.047 199.483 l 152.922 199.483 152.922 199.452 152.922 198.452 c 152.922 196.764 l 152.922 195.889 152.922 194.874 154.625 194.874 c 155.25 194.874 155.75 195.186 156.062 195.889 c 156.062 194.874 l h 160.781 194.999 m 160.781 195.343 l 160.031 195.343 159.906 195.343 159.906 195.843 c 159.906 202.78 l 158.297 202.655 l 158.297 202.296 l 159.078 202.296 159.172 202.218 159.172 201.671 c 159.172 195.843 l 159.172 195.343 159.047 195.343 158.297 195.343 c 158.297 194.999 l 159.531 195.03 l h 164.746 196.389 m 164.746 197.03 l 164.465 197.03 l 164.465 196.405 l 164.465 195.577 164.137 195.155 163.715 195.155 c 162.965 195.155 162.965 196.171 162.965 196.358 c 162.965 199.483 l 164.574 199.483 l 164.574 199.827 l 162.965 199.827 l 162.965 201.889 l 162.684 201.889 l 162.668 200.968 162.34 199.764 161.246 199.733 c 161.246 199.483 l 162.199 199.483 l 162.199 196.389 l 162.199 195.014 163.23 194.874 163.637 194.874 c 164.434 194.874 164.746 195.671 164.746 196.389 c h 169.457 199.264 m 169.457 199.624 169.113 199.952 168.629 199.952 c 167.816 199.952 167.41 199.202 167.254 198.718 c 167.254 199.952 l 165.691 199.827 l 165.691 199.483 l 166.473 199.483 166.566 199.405 166.566 198.858 c 166.566 195.843 l 166.566 195.343 166.441 195.343 165.691 195.343 c 165.691 194.999 l 166.973 195.03 l 167.41 195.03 167.941 195.03 168.395 194.999 c 168.395 195.343 l 168.16 195.343 l 167.332 195.343 167.301 195.468 167.301 195.874 c 167.301 197.593 l 167.301 198.702 167.77 199.702 168.629 199.702 c 168.707 199.702 168.723 199.702 168.754 199.686 c 168.723 199.686 168.488 199.546 168.488 199.249 c 168.488 198.936 168.723 198.78 168.973 198.78 c 169.176 198.78 169.457 198.905 169.457 199.264 c h 172.543 194.999 m 172.543 195.343 l 171.809 195.343 171.762 195.405 171.762 195.843 c 171.762 199.952 l 170.199 199.827 l 170.199 199.483 l 170.918 199.483 171.027 199.405 171.027 198.858 c 171.027 195.843 l 171.027 195.343 170.902 195.343 170.152 195.343 c 170.152 194.999 l 171.387 195.03 l 171.777 195.03 172.168 195.014 172.543 194.999 c h 171.934 201.764 m 171.934 202.061 171.668 202.358 171.34 202.358 c 170.949 202.358 170.73 202.046 170.73 201.764 c 170.73 201.468 170.98 201.171 171.324 201.171 c 171.699 201.171 171.934 201.483 171.934 201.764 c h 177.539 196.327 m 177.539 196.436 177.414 196.436 177.383 196.436 c 177.289 196.436 177.258 196.405 177.242 196.327 c 176.914 195.296 176.195 195.155 175.773 195.155 c 175.18 195.155 174.195 195.639 174.195 197.436 c 174.195 199.264 175.117 199.733 175.711 199.733 c 175.805 199.733 176.508 199.733 176.898 199.327 c 176.445 199.296 176.383 198.952 176.383 198.811 c 176.383 198.514 176.586 198.296 176.898 198.296 c 177.18 198.296 177.414 198.483 177.414 198.811 c 177.414 199.577 176.555 200.014 175.695 200.014 c 174.289 200.014 173.258 198.811 173.258 197.421 c 173.258 195.983 174.367 194.874 175.68 194.874 c 177.18 194.874 177.539 196.218 177.539 196.327 c h 180.613 194.999 m 180.613 195.343 l 179.879 195.343 179.832 195.405 179.832 195.843 c 179.832 199.952 l 178.27 199.827 l 178.27 199.483 l 178.988 199.483 179.098 199.405 179.098 198.858 c 179.098 195.843 l 179.098 195.343 178.973 195.343 178.223 195.343 c 178.223 194.999 l 179.457 195.03 l 179.848 195.03 180.238 195.014 180.613 194.999 c h 180.004 201.764 m 180.004 202.061 179.738 202.358 179.41 202.358 c 179.02 202.358 178.801 202.046 178.801 201.764 c 178.801 201.468 179.051 201.171 179.395 201.171 c 179.77 201.171 180.004 201.483 180.004 201.764 c h 185.613 196.327 m 185.613 196.436 185.52 196.468 185.457 196.468 c 185.363 196.468 185.332 196.405 185.316 196.311 c 184.926 195.155 183.91 195.155 183.801 195.155 c 183.238 195.155 182.801 195.499 182.535 195.905 c 182.207 196.436 182.207 197.186 182.207 197.593 c 185.332 197.593 l 185.566 197.593 185.613 197.593 185.613 197.827 c 185.613 198.936 185.004 200.014 183.598 200.014 c 182.301 200.014 181.27 198.858 181.27 197.468 c 181.27 195.968 182.441 194.874 183.738 194.874 c 185.098 194.874 185.613 196.124 185.613 196.327 c h 184.863 197.827 m 182.207 197.827 l 182.285 199.499 183.223 199.764 183.598 199.764 c 184.754 199.764 184.863 198.264 184.863 197.827 c h 189.953 196.436 m 189.953 197.03 189.625 197.358 189.484 197.499 c 189.109 197.858 188.672 197.952 188.203 198.03 c 187.578 198.155 186.828 198.311 186.828 198.952 c 186.828 199.343 187.125 199.811 188.078 199.811 c 189.312 199.811 189.375 198.796 189.391 198.452 c 189.406 198.343 189.531 198.343 189.531 198.343 c 189.672 198.343 189.672 198.405 189.672 198.624 c 189.672 199.749 l 189.672 199.936 189.672 200.014 189.547 200.014 c 189.5 200.014 189.469 200.014 189.328 199.889 c 189.297 199.843 189.188 199.733 189.141 199.702 c 188.719 200.014 188.25 200.014 188.078 200.014 c 186.719 200.014 186.297 199.264 186.297 198.639 c 186.297 198.249 186.469 197.936 186.766 197.686 c 187.125 197.389 187.453 197.327 188.25 197.171 c 188.5 197.124 189.422 196.952 189.422 196.139 c 189.422 195.577 189.031 195.124 188.156 195.124 c 187.203 195.124 186.812 195.764 186.594 196.718 c 186.562 196.858 186.547 196.905 186.438 196.905 c 186.297 196.905 186.297 196.827 186.297 196.624 c 186.297 195.139 l 186.297 194.952 186.297 194.874 186.422 194.874 c 186.469 194.874 186.484 194.889 186.688 195.093 c 186.719 195.124 186.719 195.139 186.922 195.358 c 187.406 194.889 187.922 194.874 188.156 194.874 c 189.438 194.874 189.953 195.624 189.953 196.436 c h 196.941 194.999 m 196.941 195.343 l 196.191 195.343 196.066 195.343 196.066 195.843 c 196.066 202.78 l 194.457 202.655 l 194.457 202.296 l 195.238 202.296 195.332 202.218 195.332 201.671 c 195.332 195.843 l 195.332 195.343 195.207 195.343 194.457 195.343 c 194.457 194.999 l 195.691 195.03 l h 199.953 194.999 m 199.953 195.343 l 199.219 195.343 199.172 195.405 199.172 195.843 c 199.172 199.952 l 197.609 199.827 l 197.609 199.483 l 198.328 199.483 198.438 199.405 198.438 198.858 c 198.438 195.843 l 198.438 195.343 198.312 195.343 197.562 195.343 c 197.562 194.999 l 198.797 195.03 l 199.188 195.03 199.578 195.014 199.953 194.999 c h 199.344 201.764 m 199.344 202.061 199.078 202.358 198.75 202.358 c 198.359 202.358 198.141 202.046 198.141 201.764 c 198.141 201.468 198.391 201.171 198.734 201.171 c 199.109 201.171 199.344 201.483 199.344 201.764 c h 206.137 197.421 m 206.137 198.843 205.027 199.952 203.762 199.952 c 202.887 199.952 202.402 199.421 202.215 199.218 c 202.215 202.78 l 200.605 202.655 l 200.605 202.296 l 201.387 202.296 201.48 202.218 201.48 201.671 c 201.48 194.999 l 201.762 194.999 l 202.168 195.686 l 202.324 195.436 202.809 194.874 203.637 194.874 c 204.965 194.874 206.137 195.968 206.137 197.421 c h 205.199 197.436 m 205.199 197.014 205.184 196.343 204.855 195.843 c 204.621 195.499 204.199 195.124 203.59 195.124 c 203.09 195.124 202.684 195.389 202.418 195.811 c 202.246 196.046 202.246 196.077 202.246 196.28 c 202.246 198.577 l 202.246 198.796 202.246 198.811 202.371 198.983 c 202.809 199.608 203.434 199.702 203.699 199.702 c 204.199 199.702 204.605 199.405 204.871 198.983 c 205.168 198.53 205.199 197.889 205.199 197.436 c h 211.184 196.327 m 211.184 196.436 211.09 196.468 211.027 196.468 c 210.934 196.468 210.902 196.405 210.887 196.311 c 210.496 195.155 209.48 195.155 209.371 195.155 c 208.809 195.155 208.371 195.499 208.105 195.905 c 207.777 196.436 207.777 197.186 207.777 197.593 c 210.902 197.593 l 211.137 197.593 211.184 197.593 211.184 197.827 c 211.184 198.936 210.574 200.014 209.168 200.014 c 207.871 200.014 206.84 198.858 206.84 197.468 c 206.84 195.968 208.012 194.874 209.309 194.874 c 210.668 194.874 211.184 196.124 211.184 196.327 c h 210.434 197.827 m 207.777 197.827 l 207.855 199.499 208.793 199.764 209.168 199.764 c 210.324 199.764 210.434 198.264 210.434 197.827 c h 215.57 199.264 m 215.57 199.624 215.227 199.952 214.742 199.952 c 213.93 199.952 213.523 199.202 213.367 198.718 c 213.367 199.952 l 211.805 199.827 l 211.805 199.483 l 212.586 199.483 212.68 199.405 212.68 198.858 c 212.68 195.843 l 212.68 195.343 212.555 195.343 211.805 195.343 c 211.805 194.999 l 213.086 195.03 l 213.523 195.03 214.055 195.03 214.508 194.999 c 214.508 195.343 l 214.273 195.343 l 213.445 195.343 213.414 195.468 213.414 195.874 c 213.414 197.593 l 213.414 198.702 213.883 199.702 214.742 199.702 c 214.82 199.702 214.836 199.702 214.867 199.686 c 214.836 199.686 214.602 199.546 214.602 199.249 c 214.602 198.936 214.836 198.78 215.086 198.78 c 215.289 198.78 215.57 198.905 215.57 199.264 c h 221.172 197.389 m 221.172 198.827 220.047 200.014 218.688 200.014 c 217.297 200.014 216.203 198.796 216.203 197.389 c 216.203 195.952 217.375 194.874 218.688 194.874 c 220.031 194.874 221.172 195.968 221.172 197.389 c h 220.234 197.483 m 220.234 197.077 220.234 196.483 219.984 195.983 c 219.75 195.483 219.25 195.155 218.688 195.155 c 218.203 195.155 217.719 195.389 217.422 195.905 c 217.141 196.405 217.141 197.077 217.141 197.483 c 217.141 197.921 217.141 198.53 217.406 199.014 c 217.703 199.53 218.234 199.764 218.688 199.764 c 219.172 199.764 219.656 199.53 219.953 199.046 c 220.234 198.561 220.234 197.905 220.234 197.483 c h 231.074 197.421 m 231.074 198.843 229.965 199.952 228.699 199.952 c 227.824 199.952 227.34 199.421 227.152 199.218 c 227.152 202.78 l 225.543 202.655 l 225.543 202.296 l 226.324 202.296 226.418 202.218 226.418 201.671 c 226.418 194.999 l 226.699 194.999 l 227.105 195.686 l 227.262 195.436 227.746 194.874 228.574 194.874 c 229.902 194.874 231.074 195.968 231.074 197.421 c h 230.137 197.436 m 230.137 197.014 230.121 196.343 229.793 195.843 c 229.559 195.499 229.137 195.124 228.527 195.124 c 228.027 195.124 227.621 195.389 227.355 195.811 c 227.184 196.046 227.184 196.077 227.184 196.28 c 227.184 198.577 l 227.184 198.796 227.184 198.811 227.309 198.983 c 227.746 199.608 228.371 199.702 228.637 199.702 c 229.137 199.702 229.543 199.405 229.809 198.983 c 230.105 198.53 230.137 197.889 230.137 197.436 c h 234.23 194.999 m 234.23 195.343 l 233.496 195.343 233.449 195.405 233.449 195.843 c 233.449 199.952 l 231.887 199.827 l 231.887 199.483 l 232.605 199.483 232.715 199.405 232.715 198.858 c 232.715 195.843 l 232.715 195.343 232.59 195.343 231.84 195.343 c 231.84 194.999 l 233.074 195.03 l 233.465 195.03 233.855 195.014 234.23 194.999 c h 233.621 201.764 m 233.621 202.061 233.355 202.358 233.027 202.358 c 232.637 202.358 232.418 202.046 232.418 201.764 c 232.418 201.468 232.668 201.171 233.012 201.171 c 233.387 201.171 233.621 201.483 233.621 201.764 c h 240.414 197.421 m 240.414 198.843 239.305 199.952 238.039 199.952 c 237.164 199.952 236.68 199.421 236.492 199.218 c 236.492 202.78 l 234.883 202.655 l 234.883 202.296 l 235.664 202.296 235.758 202.218 235.758 201.671 c 235.758 194.999 l 236.039 194.999 l 236.445 195.686 l 236.602 195.436 237.086 194.874 237.914 194.874 c 239.242 194.874 240.414 195.968 240.414 197.421 c h 239.477 197.436 m 239.477 197.014 239.461 196.343 239.133 195.843 c 238.898 195.499 238.477 195.124 237.867 195.124 c 237.367 195.124 236.961 195.389 236.695 195.811 c 236.523 196.046 236.523 196.077 236.523 196.28 c 236.523 198.577 l 236.523 198.796 236.523 198.811 236.648 198.983 c 237.086 199.608 237.711 199.702 237.977 199.702 c 238.477 199.702 238.883 199.405 239.148 198.983 c 239.445 198.53 239.477 197.889 239.477 197.436 c h 245.461 196.327 m 245.461 196.436 245.367 196.468 245.305 196.468 c 245.211 196.468 245.18 196.405 245.164 196.311 c 244.773 195.155 243.758 195.155 243.648 195.155 c 243.086 195.155 242.648 195.499 242.383 195.905 c 242.055 196.436 242.055 197.186 242.055 197.593 c 245.18 197.593 l 245.414 197.593 245.461 197.593 245.461 197.827 c 245.461 198.936 244.852 200.014 243.445 200.014 c 242.148 200.014 241.117 198.858 241.117 197.468 c 241.117 195.968 242.289 194.874 243.586 194.874 c 244.945 194.874 245.461 196.124 245.461 196.327 c h 244.711 197.827 m 242.055 197.827 l 242.133 199.499 243.07 199.764 243.445 199.764 c 244.602 199.764 244.711 198.264 244.711 197.827 c h 251.77 194.999 m 251.77 195.343 l 251.176 195.343 250.895 195.343 250.895 195.686 c 250.895 197.827 l 250.895 198.78 250.895 199.139 250.535 199.53 c 250.379 199.733 250.02 199.952 249.363 199.952 c 248.551 199.952 248.02 199.468 247.707 198.78 c 247.707 199.952 l 246.129 199.827 l 246.129 199.483 l 246.91 199.483 247.004 199.405 247.004 198.858 c 247.004 195.843 l 247.004 195.343 246.879 195.343 246.129 195.343 c 246.129 194.999 l 247.395 195.03 l 248.645 194.999 l 248.645 195.343 l 247.895 195.343 247.77 195.343 247.77 195.843 c 247.77 197.905 l 247.77 199.077 248.566 199.702 249.285 199.702 c 249.988 199.702 250.113 199.093 250.113 198.468 c 250.113 195.843 l 250.113 195.343 249.988 195.343 249.238 195.343 c 249.238 194.999 l 250.504 195.03 l h 257.91 194.999 m 257.91 195.343 l 257.129 195.343 257.035 195.421 257.035 195.968 c 257.035 202.78 l 255.426 202.655 l 255.426 202.296 l 256.207 202.296 256.301 202.218 256.301 201.671 c 256.301 199.249 l 255.973 199.655 255.488 199.952 254.879 199.952 c 253.566 199.952 252.379 198.858 252.379 197.405 c 252.379 195.983 253.488 194.874 254.754 194.874 c 255.473 194.874 255.988 195.249 256.254 195.608 c 256.254 194.874 l h 256.254 196.327 m 256.254 196.124 256.254 196.093 256.145 195.905 c 255.801 195.374 255.301 195.124 254.816 195.124 c 254.316 195.124 253.91 195.421 253.645 195.843 c 253.348 196.296 253.316 196.936 253.316 197.389 c 253.316 197.811 253.332 198.483 253.66 198.983 c 253.895 199.327 254.316 199.702 254.926 199.702 c 255.316 199.702 255.785 199.53 256.145 199.03 c 256.254 198.843 256.254 198.811 256.254 198.624 c h 264.238 194.999 m 264.238 195.343 l 263.441 195.343 263.363 195.421 263.363 195.968 c 263.363 199.952 l 261.707 199.827 l 261.707 199.483 l 262.488 199.483 262.582 199.405 262.582 198.858 c 262.582 196.858 l 262.582 195.889 262.051 195.124 261.223 195.124 c 260.285 195.124 260.238 195.655 260.238 196.233 c 260.238 199.952 l 258.598 199.827 l 258.598 199.483 l 259.473 199.483 259.473 199.452 259.473 198.452 c 259.473 196.764 l 259.473 195.889 259.473 194.874 261.176 194.874 c 261.801 194.874 262.301 195.186 262.613 195.889 c 262.613 194.874 l h 273.582 194.999 m 273.582 195.343 l 273.004 195.343 272.723 195.343 272.707 195.686 c 272.707 197.827 l 272.707 198.78 272.707 199.139 272.363 199.53 c 272.207 199.733 271.832 199.952 271.176 199.952 c 270.238 199.952 269.754 199.28 269.566 198.858 c 269.395 199.827 268.566 199.952 268.066 199.952 c 267.254 199.952 266.723 199.468 266.41 198.78 c 266.41 199.952 l 264.832 199.827 l 264.832 199.483 l 265.613 199.483 265.707 199.405 265.707 198.858 c 265.707 195.843 l 265.707 195.343 265.582 195.343 264.832 195.343 c 264.832 194.999 l 266.098 195.03 l 267.348 194.999 l 267.348 195.343 l 266.598 195.343 266.473 195.343 266.473 195.843 c 266.473 197.905 l 266.473 199.077 267.27 199.702 267.988 199.702 c 268.691 199.702 268.816 199.093 268.816 198.468 c 268.816 195.843 l 268.816 195.343 268.691 195.343 267.941 195.343 c 267.941 194.999 l 269.207 195.03 l 270.473 194.999 l 270.473 195.343 l 269.723 195.343 269.598 195.343 269.598 195.843 c 269.598 197.905 l 269.598 199.077 270.395 199.702 271.098 199.702 c 271.816 199.702 271.941 199.093 271.941 198.468 c 271.941 195.843 l 271.941 195.343 271.816 195.343 271.066 195.343 c 271.066 194.999 l 272.332 195.03 l h 275.973 195.593 m 275.973 195.921 275.691 196.186 275.379 196.186 c 275.051 196.186 274.785 195.921 274.785 195.593 c 274.785 195.264 275.051 194.999 275.379 194.999 c 275.691 194.999 275.973 195.264 275.973 195.593 c h f 161.531 180.999 m 161.531 181.343 l 161.266 181.343 l 160.406 181.343 160.375 181.468 160.375 181.874 c 160.375 187.78 l 160.375 188.186 160.406 188.296 161.266 188.296 c 161.531 188.296 l 161.531 188.655 l 159.641 188.655 l 159.344 188.655 159.344 188.639 159.266 188.436 c 156.812 182.124 l 154.391 188.405 l 154.281 188.655 154.25 188.655 154 188.655 c 152.109 188.655 l 152.109 188.296 l 152.375 188.296 l 153.234 188.296 153.25 188.186 153.25 187.78 c 153.25 182.171 l 153.25 181.874 153.25 181.343 152.109 181.343 c 152.109 180.999 l 153.406 181.03 l 154.719 180.999 l 154.719 181.343 l 153.562 181.343 153.562 181.874 153.562 182.171 c 153.562 188.218 l 153.578 188.218 l 156.281 181.249 l 156.344 181.093 156.391 180.999 156.5 180.999 c 156.625 180.999 156.656 181.093 156.703 181.218 c 159.469 188.296 l 159.469 181.874 l 159.469 181.468 159.453 181.343 158.594 181.343 c 158.312 181.343 l 158.312 180.999 l 158.734 181.03 159.5 181.03 159.938 181.03 c 160.375 181.03 161.125 181.03 161.531 180.999 c h 167.25 183.389 m 167.25 184.827 166.125 186.014 164.766 186.014 c 163.375 186.014 162.281 184.796 162.281 183.389 c 162.281 181.952 163.453 180.874 164.766 180.874 c 166.109 180.874 167.25 181.968 167.25 183.389 c h 166.312 183.483 m 166.312 183.077 166.312 182.483 166.062 181.983 c 165.828 181.483 165.328 181.155 164.766 181.155 c 164.281 181.155 163.797 181.389 163.5 181.905 c 163.219 182.405 163.219 183.077 163.219 183.483 c 163.219 183.921 163.219 184.53 163.484 185.014 c 163.781 185.53 164.312 185.764 164.766 185.764 c 165.25 185.764 165.734 185.53 166.031 185.046 c 166.312 184.561 166.312 183.905 166.312 183.483 c h 171.645 185.264 m 171.645 185.624 171.301 185.952 170.816 185.952 c 170.004 185.952 169.598 185.202 169.441 184.718 c 169.441 185.952 l 167.879 185.827 l 167.879 185.483 l 168.66 185.483 168.754 185.405 168.754 184.858 c 168.754 181.843 l 168.754 181.343 168.629 181.343 167.879 181.343 c 167.879 180.999 l 169.16 181.03 l 169.598 181.03 170.129 181.03 170.582 180.999 c 170.582 181.343 l 170.348 181.343 l 169.52 181.343 169.488 181.468 169.488 181.874 c 169.488 183.593 l 169.488 184.702 169.957 185.702 170.816 185.702 c 170.895 185.702 170.91 185.702 170.941 185.686 c 170.91 185.686 170.676 185.546 170.676 185.249 c 170.676 184.936 170.91 184.78 171.16 184.78 c 171.363 184.78 171.645 184.905 171.645 185.264 c h 177.809 183.421 m 177.809 184.843 176.699 185.952 175.434 185.952 c 174.559 185.952 174.074 185.421 173.887 185.218 c 173.887 188.78 l 172.277 188.655 l 172.277 188.296 l 173.059 188.296 173.152 188.218 173.152 187.671 c 173.152 180.999 l 173.434 180.999 l 173.84 181.686 l 173.996 181.436 174.48 180.874 175.309 180.874 c 176.637 180.874 177.809 181.968 177.809 183.421 c h 176.871 183.436 m 176.871 183.014 176.855 182.343 176.527 181.843 c 176.293 181.499 175.871 181.124 175.262 181.124 c 174.762 181.124 174.355 181.389 174.09 181.811 c 173.918 182.046 173.918 182.077 173.918 182.28 c 173.918 184.577 l 173.918 184.796 173.918 184.811 174.043 184.983 c 174.48 185.608 175.105 185.702 175.371 185.702 c 175.871 185.702 176.277 185.405 176.543 184.983 c 176.84 184.53 176.871 183.889 176.871 183.436 c h 180.965 180.999 m 180.965 181.343 l 180.23 181.343 180.184 181.405 180.184 181.843 c 180.184 185.952 l 178.621 185.827 l 178.621 185.483 l 179.34 185.483 179.449 185.405 179.449 184.858 c 179.449 181.843 l 179.449 181.343 179.324 181.343 178.574 181.343 c 178.574 180.999 l 179.809 181.03 l 180.199 181.03 180.59 181.014 180.965 180.999 c h 180.355 187.764 m 180.355 188.061 180.09 188.358 179.762 188.358 c 179.371 188.358 179.152 188.046 179.152 187.764 c 179.152 187.468 179.402 187.171 179.746 187.171 c 180.121 187.171 180.355 187.483 180.355 187.764 c h 189.703 182.327 m 189.703 182.436 189.609 182.468 189.547 182.468 c 189.453 182.468 189.422 182.405 189.406 182.311 c 189.016 181.155 188 181.155 187.891 181.155 c 187.328 181.155 186.891 181.499 186.625 181.905 c 186.297 182.436 186.297 183.186 186.297 183.593 c 189.422 183.593 l 189.656 183.593 189.703 183.593 189.703 183.827 c 189.703 184.936 189.094 186.014 187.688 186.014 c 186.391 186.014 185.359 184.858 185.359 183.468 c 185.359 181.968 186.531 180.874 187.828 180.874 c 189.188 180.874 189.703 182.124 189.703 182.327 c h 188.953 183.827 m 186.297 183.827 l 186.375 185.499 187.312 185.764 187.688 185.764 c 188.844 185.764 188.953 184.264 188.953 183.827 c h 196.012 180.999 m 196.012 181.343 l 195.215 181.343 195.137 181.421 195.137 181.968 c 195.137 185.952 l 193.48 185.827 l 193.48 185.483 l 194.262 185.483 194.355 185.405 194.355 184.858 c 194.355 182.858 l 194.355 181.889 193.824 181.124 192.996 181.124 c 192.059 181.124 192.012 181.655 192.012 182.233 c 192.012 185.952 l 190.371 185.827 l 190.371 185.483 l 191.246 185.483 191.246 185.452 191.246 184.452 c 191.246 182.764 l 191.246 181.889 191.246 180.874 192.949 180.874 c 193.574 180.874 194.074 181.186 194.387 181.889 c 194.387 180.874 l h 199.012 180.999 m 199.012 181.343 l 198.277 181.343 198.23 181.405 198.23 181.843 c 198.23 185.952 l 196.668 185.827 l 196.668 185.483 l 197.387 185.483 197.496 185.405 197.496 184.858 c 197.496 181.843 l 197.496 181.343 197.371 181.343 196.621 181.343 c 196.621 180.999 l 197.855 181.03 l 198.246 181.03 198.637 181.014 199.012 180.999 c h 198.402 187.764 m 198.402 188.061 198.137 188.358 197.809 188.358 c 197.418 188.358 197.199 188.046 197.199 187.764 c 197.199 187.468 197.449 187.171 197.793 187.171 c 198.168 187.171 198.402 187.483 198.402 187.764 c h 203.383 182.436 m 203.383 183.03 203.055 183.358 202.914 183.499 c 202.539 183.858 202.102 183.952 201.633 184.03 c 201.008 184.155 200.258 184.311 200.258 184.952 c 200.258 185.343 200.555 185.811 201.508 185.811 c 202.742 185.811 202.805 184.796 202.82 184.452 c 202.836 184.343 202.961 184.343 202.961 184.343 c 203.102 184.343 203.102 184.405 203.102 184.624 c 203.102 185.749 l 203.102 185.936 203.102 186.014 202.977 186.014 c 202.93 186.014 202.898 186.014 202.758 185.889 c 202.727 185.843 202.617 185.733 202.57 185.702 c 202.148 186.014 201.68 186.014 201.508 186.014 c 200.148 186.014 199.727 185.264 199.727 184.639 c 199.727 184.249 199.898 183.936 200.195 183.686 c 200.555 183.389 200.883 183.327 201.68 183.171 c 201.93 183.124 202.852 182.952 202.852 182.139 c 202.852 181.577 202.461 181.124 201.586 181.124 c 200.633 181.124 200.242 181.764 200.023 182.718 c 199.992 182.858 199.977 182.905 199.867 182.905 c 199.727 182.905 199.727 182.827 199.727 182.624 c 199.727 181.139 l 199.727 180.952 199.727 180.874 199.852 180.874 c 199.898 180.874 199.914 180.889 200.117 181.093 c 200.148 181.124 200.148 181.139 200.352 181.358 c 200.836 180.889 201.352 180.874 201.586 180.874 c 202.867 180.874 203.383 181.624 203.383 182.436 c h 212.879 180.999 m 212.879 181.343 l 212.301 181.343 212.02 181.343 212.004 181.686 c 212.004 183.827 l 212.004 184.78 212.004 185.139 211.66 185.53 c 211.504 185.733 211.129 185.952 210.473 185.952 c 209.535 185.952 209.051 185.28 208.863 184.858 c 208.691 185.827 207.863 185.952 207.363 185.952 c 206.551 185.952 206.02 185.468 205.707 184.78 c 205.707 185.952 l 204.129 185.827 l 204.129 185.483 l 204.91 185.483 205.004 185.405 205.004 184.858 c 205.004 181.843 l 205.004 181.343 204.879 181.343 204.129 181.343 c 204.129 180.999 l 205.395 181.03 l 206.645 180.999 l 206.645 181.343 l 205.895 181.343 205.77 181.343 205.77 181.843 c 205.77 183.905 l 205.77 185.077 206.566 185.702 207.285 185.702 c 207.988 185.702 208.113 185.093 208.113 184.468 c 208.113 181.843 l 208.113 181.343 207.988 181.343 207.238 181.343 c 207.238 180.999 l 208.504 181.03 l 209.77 180.999 l 209.77 181.343 l 209.02 181.343 208.895 181.343 208.895 181.843 c 208.895 183.905 l 208.895 185.077 209.691 185.702 210.395 185.702 c 211.113 185.702 211.238 185.093 211.238 184.468 c 211.238 181.843 l 211.238 181.343 211.113 181.343 210.363 181.343 c 210.363 180.999 l 211.629 181.03 l h 218.395 183.389 m 218.395 184.827 217.27 186.014 215.91 186.014 c 214.52 186.014 213.426 184.796 213.426 183.389 c 213.426 181.952 214.598 180.874 215.91 180.874 c 217.254 180.874 218.395 181.968 218.395 183.389 c h 217.457 183.483 m 217.457 183.077 217.457 182.483 217.207 181.983 c 216.973 181.483 216.473 181.155 215.91 181.155 c 215.426 181.155 214.941 181.389 214.645 181.905 c 214.363 182.405 214.363 183.077 214.363 183.483 c 214.363 183.921 214.363 184.53 214.629 185.014 c 214.926 185.53 215.457 185.764 215.91 185.764 c 216.395 185.764 216.879 185.53 217.176 185.046 c 217.457 184.561 217.457 183.905 217.457 183.483 c h 224.617 180.999 m 224.617 181.343 l 223.836 181.343 223.742 181.421 223.742 181.968 c 223.742 188.78 l 222.133 188.655 l 222.133 188.296 l 222.914 188.296 223.008 188.218 223.008 187.671 c 223.008 185.249 l 222.68 185.655 222.195 185.952 221.586 185.952 c 220.273 185.952 219.086 184.858 219.086 183.405 c 219.086 181.983 220.195 180.874 221.461 180.874 c 222.18 180.874 222.695 181.249 222.961 181.608 c 222.961 180.874 l h 222.961 182.327 m 222.961 182.124 222.961 182.093 222.852 181.905 c 222.508 181.374 222.008 181.124 221.523 181.124 c 221.023 181.124 220.617 181.421 220.352 181.843 c 220.055 182.296 220.023 182.936 220.023 183.389 c 220.023 183.811 220.039 184.483 220.367 184.983 c 220.602 185.327 221.023 185.702 221.633 185.702 c 222.023 185.702 222.492 185.53 222.852 185.03 c 222.961 184.843 222.961 184.811 222.961 184.624 c h 234.688 180.999 m 234.688 181.343 l 234.094 181.343 233.812 181.343 233.812 181.686 c 233.812 183.827 l 233.812 184.78 233.812 185.139 233.453 185.53 c 233.297 185.733 232.938 185.952 232.281 185.952 c 231.469 185.952 230.938 185.468 230.625 184.78 c 230.625 185.952 l 229.047 185.827 l 229.047 185.483 l 229.828 185.483 229.922 185.405 229.922 184.858 c 229.922 181.843 l 229.922 181.343 229.797 181.343 229.047 181.343 c 229.047 180.999 l 230.312 181.03 l 231.562 180.999 l 231.562 181.343 l 230.812 181.343 230.688 181.343 230.688 181.843 c 230.688 183.905 l 230.688 185.077 231.484 185.702 232.203 185.702 c 232.906 185.702 233.031 185.093 233.031 184.468 c 233.031 181.843 l 233.031 181.343 232.906 181.343 232.156 181.343 c 232.156 180.999 l 233.422 181.03 l h 240.922 180.999 m 240.922 181.343 l 240.125 181.343 240.047 181.421 240.047 181.968 c 240.047 185.952 l 238.391 185.827 l 238.391 185.483 l 239.172 185.483 239.266 185.405 239.266 184.858 c 239.266 182.858 l 239.266 181.889 238.734 181.124 237.906 181.124 c 236.969 181.124 236.922 181.655 236.922 182.233 c 236.922 185.952 l 235.281 185.827 l 235.281 185.483 l 236.156 185.483 236.156 185.452 236.156 184.452 c 236.156 182.764 l 236.156 181.889 236.156 180.874 237.859 180.874 c 238.484 180.874 238.984 181.186 239.297 181.889 c 239.297 180.874 l h 244.016 180.999 m 244.016 181.343 l 243.266 181.343 243.141 181.343 243.141 181.843 c 243.141 188.78 l 241.531 188.655 l 241.531 188.296 l 242.312 188.296 242.406 188.218 242.406 187.671 c 242.406 181.843 l 242.406 181.343 242.281 181.343 241.531 181.343 c 241.531 180.999 l 242.766 181.03 l h 247.121 180.999 m 247.121 181.343 l 246.371 181.343 246.246 181.343 246.246 181.843 c 246.246 188.78 l 244.637 188.655 l 244.637 188.296 l 245.418 188.296 245.512 188.218 245.512 187.671 c 245.512 181.843 l 245.512 181.343 245.387 181.343 244.637 181.343 c 244.637 180.999 l 245.871 181.03 l h 252.773 181.999 m 252.773 182.624 l 252.492 182.624 l 252.492 181.999 l 252.492 181.343 252.211 181.28 252.102 181.28 c 251.727 181.28 251.68 181.78 251.68 181.843 c 251.68 184.077 l 251.68 184.546 251.68 184.983 251.273 185.405 c 250.836 185.843 250.273 186.014 249.742 186.014 c 248.82 186.014 248.055 185.499 248.055 184.749 c 248.055 184.421 248.273 184.218 248.57 184.218 c 248.883 184.218 249.086 184.452 249.086 184.733 c 249.086 184.874 249.023 185.249 248.508 185.249 c 248.805 185.655 249.367 185.764 249.727 185.764 c 250.273 185.764 250.914 185.327 250.914 184.343 c 250.914 183.921 l 250.336 183.889 249.555 183.858 248.852 183.514 c 248.008 183.139 247.727 182.561 247.727 182.061 c 247.727 181.155 248.805 180.874 249.523 180.874 c 250.258 180.874 250.773 181.327 250.992 181.843 c 251.023 181.405 251.336 180.936 251.867 180.936 c 252.102 180.936 252.773 181.093 252.773 181.999 c h 250.914 182.561 m 250.914 181.499 250.102 181.124 249.602 181.124 c 249.055 181.124 248.586 181.514 248.586 182.077 c 248.586 182.686 249.055 183.624 250.914 183.686 c h 261.363 182.327 m 261.363 182.436 261.27 182.468 261.207 182.468 c 261.113 182.468 261.082 182.405 261.066 182.311 c 260.676 181.155 259.66 181.155 259.551 181.155 c 258.988 181.155 258.551 181.499 258.285 181.905 c 257.957 182.436 257.957 183.186 257.957 183.593 c 261.082 183.593 l 261.316 183.593 261.363 183.593 261.363 183.827 c 261.363 184.936 260.754 186.014 259.348 186.014 c 258.051 186.014 257.02 184.858 257.02 183.468 c 257.02 181.968 258.191 180.874 259.488 180.874 c 260.848 180.874 261.363 182.124 261.363 182.327 c h 260.613 183.827 m 257.957 183.827 l 258.035 185.499 258.973 185.764 259.348 185.764 c 260.504 185.764 260.613 184.264 260.613 183.827 c h 265.395 182.389 m 265.395 183.03 l 265.113 183.03 l 265.113 182.405 l 265.113 181.577 264.785 181.155 264.363 181.155 c 263.613 181.155 263.613 182.171 263.613 182.358 c 263.613 185.483 l 265.223 185.483 l 265.223 185.827 l 263.613 185.827 l 263.613 187.889 l 263.332 187.889 l 263.316 186.968 262.988 185.764 261.895 185.733 c 261.895 185.483 l 262.848 185.483 l 262.848 182.389 l 262.848 181.014 263.879 180.874 264.285 180.874 c 265.082 180.874 265.395 181.671 265.395 182.389 c h f 156.969 169.389 m 156.969 170.827 155.844 172.014 154.484 172.014 c 153.094 172.014 152 170.796 152 169.389 c 152 167.952 153.172 166.874 154.484 166.874 c 155.828 166.874 156.969 167.968 156.969 169.389 c h 156.031 169.483 m 156.031 169.077 156.031 168.483 155.781 167.983 c 155.547 167.483 155.047 167.155 154.484 167.155 c 154 167.155 153.516 167.389 153.219 167.905 c 152.938 168.405 152.938 169.077 152.938 169.483 c 152.938 169.921 152.938 170.53 153.203 171.014 c 153.5 171.53 154.031 171.764 154.484 171.764 c 154.969 171.764 155.453 171.53 155.75 171.046 c 156.031 170.561 156.031 169.905 156.031 169.483 c h 163.191 166.999 m 163.191 167.343 l 162.41 167.343 162.316 167.421 162.316 167.968 c 162.316 174.78 l 160.707 174.655 l 160.707 174.296 l 161.488 174.296 161.582 174.218 161.582 173.671 c 161.582 171.249 l 161.254 171.655 160.77 171.952 160.16 171.952 c 158.848 171.952 157.66 170.858 157.66 169.405 c 157.66 167.983 158.77 166.874 160.035 166.874 c 160.754 166.874 161.27 167.249 161.535 167.608 c 161.535 166.874 l h 161.535 168.327 m 161.535 168.124 161.535 168.093 161.426 167.905 c 161.082 167.374 160.582 167.124 160.098 167.124 c 159.598 167.124 159.191 167.421 158.926 167.843 c 158.629 168.296 158.598 168.936 158.598 169.389 c 158.598 169.811 158.613 170.483 158.941 170.983 c 159.176 171.327 159.598 171.702 160.207 171.702 c 160.598 171.702 161.066 171.53 161.426 171.03 c 161.535 170.843 161.535 170.811 161.535 170.624 c h 166.285 166.999 m 166.285 167.343 l 165.551 167.343 165.504 167.405 165.504 167.843 c 165.504 171.952 l 163.941 171.827 l 163.941 171.483 l 164.66 171.483 164.77 171.405 164.77 170.858 c 164.77 167.843 l 164.77 167.343 164.645 167.343 163.895 167.343 c 163.895 166.999 l 165.129 167.03 l 165.52 167.03 165.91 167.014 166.285 166.999 c h 165.676 173.764 m 165.676 174.061 165.41 174.358 165.082 174.358 c 164.691 174.358 164.473 174.046 164.473 173.764 c 164.473 173.468 164.723 173.171 165.066 173.171 c 165.441 173.171 165.676 173.483 165.676 173.764 c h 171.91 169.389 m 171.91 170.827 170.785 172.014 169.426 172.014 c 168.035 172.014 166.941 170.796 166.941 169.389 c 166.941 167.952 168.113 166.874 169.426 166.874 c 170.77 166.874 171.91 167.968 171.91 169.389 c h 170.973 169.483 m 170.973 169.077 170.973 168.483 170.723 167.983 c 170.488 167.483 169.988 167.155 169.426 167.155 c 168.941 167.155 168.457 167.389 168.16 167.905 c 167.879 168.405 167.879 169.077 167.879 169.483 c 167.879 169.921 167.879 170.53 168.145 171.014 c 168.441 171.53 168.973 171.764 169.426 171.764 c 169.91 171.764 170.395 171.53 170.691 171.046 c 170.973 170.561 170.973 169.905 170.973 169.483 c h 181.969 166.999 m 181.969 167.343 l 181.172 167.343 181.094 167.421 181.094 167.968 c 181.094 171.952 l 179.438 171.827 l 179.438 171.483 l 180.219 171.483 180.312 171.405 180.312 170.858 c 180.312 168.858 l 180.312 167.889 179.781 167.124 178.953 167.124 c 178.016 167.124 177.969 167.655 177.969 168.233 c 177.969 171.952 l 176.328 171.827 l 176.328 171.483 l 177.203 171.483 177.203 171.452 177.203 170.452 c 177.203 168.764 l 177.203 167.889 177.203 166.874 178.906 166.874 c 179.531 166.874 180.031 167.186 180.344 167.889 c 180.344 166.874 l h 185.062 166.999 m 185.062 167.343 l 184.312 167.343 184.188 167.343 184.188 167.843 c 184.188 174.78 l 182.578 174.655 l 182.578 174.296 l 183.359 174.296 183.453 174.218 183.453 173.671 c 183.453 167.843 l 183.453 167.343 183.328 167.343 182.578 167.343 c 182.578 166.999 l 183.812 167.03 l h 188.168 166.999 m 188.168 167.343 l 187.418 167.343 187.293 167.343 187.293 167.843 c 187.293 174.78 l 185.684 174.655 l 185.684 174.296 l 186.465 174.296 186.559 174.218 186.559 173.671 c 186.559 167.843 l 186.559 167.343 186.434 167.343 185.684 167.343 c 185.684 166.999 l 186.918 167.03 l h 193.82 167.999 m 193.82 168.624 l 193.539 168.624 l 193.539 167.999 l 193.539 167.343 193.258 167.28 193.148 167.28 c 192.773 167.28 192.727 167.78 192.727 167.843 c 192.727 170.077 l 192.727 170.546 192.727 170.983 192.32 171.405 c 191.883 171.843 191.32 172.014 190.789 172.014 c 189.867 172.014 189.102 171.499 189.102 170.749 c 189.102 170.421 189.32 170.218 189.617 170.218 c 189.93 170.218 190.133 170.452 190.133 170.733 c 190.133 170.874 190.07 171.249 189.555 171.249 c 189.852 171.655 190.414 171.764 190.773 171.764 c 191.32 171.764 191.961 171.327 191.961 170.343 c 191.961 169.921 l 191.383 169.889 190.602 169.858 189.898 169.514 c 189.055 169.139 188.773 168.561 188.773 168.061 c 188.773 167.155 189.852 166.874 190.57 166.874 c 191.305 166.874 191.82 167.327 192.039 167.843 c 192.07 167.405 192.383 166.936 192.914 166.936 c 193.148 166.936 193.82 167.093 193.82 167.999 c h 191.961 168.561 m 191.961 167.499 191.148 167.124 190.648 167.124 c 190.102 167.124 189.633 167.514 189.633 168.077 c 189.633 168.686 190.102 169.624 191.961 169.686 c h 203.125 166.999 m 203.125 167.343 l 202.547 167.343 202.266 167.343 202.25 167.686 c 202.25 169.827 l 202.25 170.78 202.25 171.139 201.906 171.53 c 201.75 171.733 201.375 171.952 200.719 171.952 c 199.781 171.952 199.297 171.28 199.109 170.858 c 198.938 171.827 198.109 171.952 197.609 171.952 c 196.797 171.952 196.266 171.468 195.953 170.78 c 195.953 171.952 l 194.375 171.827 l 194.375 171.483 l 195.156 171.483 195.25 171.405 195.25 170.858 c 195.25 167.843 l 195.25 167.343 195.125 167.343 194.375 167.343 c 194.375 166.999 l 195.641 167.03 l 196.891 166.999 l 196.891 167.343 l 196.141 167.343 196.016 167.343 196.016 167.843 c 196.016 169.905 l 196.016 171.077 196.812 171.702 197.531 171.702 c 198.234 171.702 198.359 171.093 198.359 170.468 c 198.359 167.843 l 198.359 167.343 198.234 167.343 197.484 167.343 c 197.484 166.999 l 198.75 167.03 l 200.016 166.999 l 200.016 167.343 l 199.266 167.343 199.141 167.343 199.141 167.843 c 199.141 169.905 l 199.141 171.077 199.938 171.702 200.641 171.702 c 201.359 171.702 201.484 171.093 201.484 170.468 c 201.484 167.843 l 201.484 167.343 201.359 167.343 200.609 167.343 c 200.609 166.999 l 201.875 167.03 l h 208.012 168.327 m 208.012 168.436 207.887 168.436 207.855 168.436 c 207.762 168.436 207.73 168.405 207.715 168.327 c 207.387 167.296 206.668 167.155 206.246 167.155 c 205.652 167.155 204.668 167.639 204.668 169.436 c 204.668 171.264 205.59 171.733 206.184 171.733 c 206.277 171.733 206.98 171.733 207.371 171.327 c 206.918 171.296 206.855 170.952 206.855 170.811 c 206.855 170.514 207.059 170.296 207.371 170.296 c 207.652 170.296 207.887 170.483 207.887 170.811 c 207.887 171.577 207.027 172.014 206.168 172.014 c 204.762 172.014 203.73 170.811 203.73 169.421 c 203.73 167.983 204.84 166.874 206.152 166.874 c 207.652 166.874 208.012 168.218 208.012 168.327 c h 213.602 169.389 m 213.602 170.827 212.477 172.014 211.117 172.014 c 209.727 172.014 208.633 170.796 208.633 169.389 c 208.633 167.952 209.805 166.874 211.117 166.874 c 212.461 166.874 213.602 167.968 213.602 169.389 c h 212.664 169.483 m 212.664 169.077 212.664 168.483 212.414 167.983 c 212.18 167.483 211.68 167.155 211.117 167.155 c 210.633 167.155 210.148 167.389 209.852 167.905 c 209.57 168.405 209.57 169.077 209.57 169.483 c 209.57 169.921 209.57 170.53 209.836 171.014 c 210.133 171.53 210.664 171.764 211.117 171.764 c 211.602 171.764 212.086 171.53 212.383 171.046 c 212.664 170.561 212.664 169.905 212.664 169.483 c h 218 171.264 m 218 171.624 217.656 171.952 217.172 171.952 c 216.359 171.952 215.953 171.202 215.797 170.718 c 215.797 171.952 l 214.234 171.827 l 214.234 171.483 l 215.016 171.483 215.109 171.405 215.109 170.858 c 215.109 167.843 l 215.109 167.343 214.984 167.343 214.234 167.343 c 214.234 166.999 l 215.516 167.03 l 215.953 167.03 216.484 167.03 216.938 166.999 c 216.938 167.343 l 216.703 167.343 l 215.875 167.343 215.844 167.468 215.844 167.874 c 215.844 169.593 l 215.844 170.702 216.312 171.702 217.172 171.702 c 217.25 171.702 217.266 171.702 217.297 171.686 c 217.266 171.686 217.031 171.546 217.031 171.249 c 217.031 170.936 217.266 170.78 217.516 170.78 c 217.719 170.78 218 170.905 218 171.264 c h 224.16 169.421 m 224.16 170.843 223.066 171.952 221.816 171.952 c 220.941 171.952 220.473 171.452 220.238 171.218 c 220.238 171.952 l 218.629 171.827 l 218.629 171.483 l 219.426 171.483 219.504 171.405 219.504 170.921 c 219.504 165.671 l 219.504 165.171 219.379 165.171 218.629 165.171 c 218.629 164.827 l 219.879 164.858 l 221.145 164.827 l 221.145 165.171 l 220.395 165.171 220.27 165.171 220.27 165.671 c 220.27 167.655 l 220.332 167.483 220.801 166.874 221.66 166.874 c 222.988 166.874 224.16 167.968 224.16 169.421 c h 223.223 169.421 m 223.223 168.061 222.441 167.124 221.613 167.124 c 221.16 167.124 220.738 167.343 220.441 167.811 c 220.27 168.046 220.27 168.046 220.27 168.28 c 220.27 170.78 l 220.598 171.343 221.145 171.671 221.723 171.671 c 222.535 171.671 223.223 170.686 223.223 169.421 c h 229.207 168.327 m 229.207 168.436 229.113 168.468 229.051 168.468 c 228.957 168.468 228.926 168.405 228.91 168.311 c 228.52 167.155 227.504 167.155 227.395 167.155 c 226.832 167.155 226.395 167.499 226.129 167.905 c 225.801 168.436 225.801 169.186 225.801 169.593 c 228.926 169.593 l 229.16 169.593 229.207 169.593 229.207 169.827 c 229.207 170.936 228.598 172.014 227.191 172.014 c 225.895 172.014 224.863 170.858 224.863 169.468 c 224.863 167.968 226.035 166.874 227.332 166.874 c 228.691 166.874 229.207 168.124 229.207 168.327 c h 228.457 169.827 m 225.801 169.827 l 225.879 171.499 226.816 171.764 227.191 171.764 c 228.348 171.764 228.457 170.264 228.457 169.827 c h 233.598 171.264 m 233.598 171.624 233.254 171.952 232.77 171.952 c 231.957 171.952 231.551 171.202 231.395 170.718 c 231.395 171.952 l 229.832 171.827 l 229.832 171.483 l 230.613 171.483 230.707 171.405 230.707 170.858 c 230.707 167.843 l 230.707 167.343 230.582 167.343 229.832 167.343 c 229.832 166.999 l 231.113 167.03 l 231.551 167.03 232.082 167.03 232.535 166.999 c 232.535 167.343 l 232.301 167.343 l 231.473 167.343 231.441 167.468 231.441 167.874 c 231.441 169.593 l 231.441 170.702 231.91 171.702 232.77 171.702 c 232.848 171.702 232.863 171.702 232.895 171.686 c 232.863 171.686 232.629 171.546 232.629 171.249 c 232.629 170.936 232.863 170.78 233.113 170.78 c 233.316 170.78 233.598 170.905 233.598 171.264 c h 242.938 169.389 m 242.938 170.827 241.812 172.014 240.453 172.014 c 239.062 172.014 237.969 170.796 237.969 169.389 c 237.969 167.952 239.141 166.874 240.453 166.874 c 241.797 166.874 242.938 167.968 242.938 169.389 c h 242 169.483 m 242 169.077 242 168.483 241.75 167.983 c 241.516 167.483 241.016 167.155 240.453 167.155 c 239.969 167.155 239.484 167.389 239.188 167.905 c 238.906 168.405 238.906 169.077 238.906 169.483 c 238.906 169.921 238.906 170.53 239.172 171.014 c 239.469 171.53 240 171.764 240.453 171.764 c 240.938 171.764 241.422 171.53 241.719 171.046 c 242 170.561 242 169.905 242 169.483 c h 247.332 171.264 m 247.332 171.624 246.988 171.952 246.504 171.952 c 245.691 171.952 245.285 171.202 245.129 170.718 c 245.129 171.952 l 243.566 171.827 l 243.566 171.483 l 244.348 171.483 244.441 171.405 244.441 170.858 c 244.441 167.843 l 244.441 167.343 244.316 167.343 243.566 167.343 c 243.566 166.999 l 244.848 167.03 l 245.285 167.03 245.816 167.03 246.27 166.999 c 246.27 167.343 l 246.035 167.343 l 245.207 167.343 245.176 167.468 245.176 167.874 c 245.176 169.593 l 245.176 170.702 245.645 171.702 246.504 171.702 c 246.582 171.702 246.598 171.702 246.629 171.686 c 246.598 171.686 246.363 171.546 246.363 171.249 c 246.363 170.936 246.598 170.78 246.848 170.78 c 247.051 170.78 247.332 170.905 247.332 171.264 c h 253.652 166.999 m 253.652 167.343 l 253.059 167.343 252.777 167.343 252.777 167.686 c 252.777 169.827 l 252.777 170.78 252.777 171.139 252.418 171.53 c 252.262 171.733 251.902 171.952 251.246 171.952 c 250.434 171.952 249.902 171.468 249.59 170.78 c 249.59 171.952 l 248.012 171.827 l 248.012 171.483 l 248.793 171.483 248.887 171.405 248.887 170.858 c 248.887 167.843 l 248.887 167.343 248.762 167.343 248.012 167.343 c 248.012 166.999 l 249.277 167.03 l 250.527 166.999 l 250.527 167.343 l 249.777 167.343 249.652 167.343 249.652 167.843 c 249.652 169.905 l 249.652 171.077 250.449 171.702 251.168 171.702 c 251.871 171.702 251.996 171.093 251.996 170.468 c 251.996 167.843 l 251.996 167.343 251.871 167.343 251.121 167.343 c 251.121 166.999 l 252.387 167.03 l h 259.293 167.999 m 259.293 168.624 l 259.012 168.624 l 259.012 167.999 l 259.012 167.343 258.73 167.28 258.621 167.28 c 258.246 167.28 258.199 167.78 258.199 167.843 c 258.199 170.077 l 258.199 170.546 258.199 170.983 257.793 171.405 c 257.355 171.843 256.793 172.014 256.262 172.014 c 255.34 172.014 254.574 171.499 254.574 170.749 c 254.574 170.421 254.793 170.218 255.09 170.218 c 255.402 170.218 255.605 170.452 255.605 170.733 c 255.605 170.874 255.543 171.249 255.027 171.249 c 255.324 171.655 255.887 171.764 256.246 171.764 c 256.793 171.764 257.434 171.327 257.434 170.343 c 257.434 169.921 l 256.855 169.889 256.074 169.858 255.371 169.514 c 254.527 169.139 254.246 168.561 254.246 168.061 c 254.246 167.155 255.324 166.874 256.043 166.874 c 256.777 166.874 257.293 167.327 257.512 167.843 c 257.543 167.405 257.855 166.936 258.387 166.936 c 258.621 166.936 259.293 167.093 259.293 167.999 c h 257.434 168.561 m 257.434 167.499 256.621 167.124 256.121 167.124 c 255.574 167.124 255.105 167.514 255.105 168.077 c 255.105 168.686 255.574 169.624 257.434 169.686 c h 263.566 171.264 m 263.566 171.624 263.223 171.952 262.738 171.952 c 261.926 171.952 261.52 171.202 261.363 170.718 c 261.363 171.952 l 259.801 171.827 l 259.801 171.483 l 260.582 171.483 260.676 171.405 260.676 170.858 c 260.676 167.843 l 260.676 167.343 260.551 167.343 259.801 167.343 c 259.801 166.999 l 261.082 167.03 l 261.52 167.03 262.051 167.03 262.504 166.999 c 262.504 167.343 l 262.27 167.343 l 261.441 167.343 261.41 167.468 261.41 167.874 c 261.41 169.593 l 261.41 170.702 261.879 171.702 262.738 171.702 c 262.816 171.702 262.832 171.702 262.863 171.686 c 262.832 171.686 262.598 171.546 262.598 171.249 c 262.598 170.936 262.832 170.78 263.082 170.78 c 263.285 170.78 263.566 170.905 263.566 171.264 c h 268.539 168.327 m 268.539 168.436 268.445 168.468 268.383 168.468 c 268.289 168.468 268.258 168.405 268.242 168.311 c 267.852 167.155 266.836 167.155 266.727 167.155 c 266.164 167.155 265.727 167.499 265.461 167.905 c 265.133 168.436 265.133 169.186 265.133 169.593 c 268.258 169.593 l 268.492 169.593 268.539 169.593 268.539 169.827 c 268.539 170.936 267.93 172.014 266.523 172.014 c 265.227 172.014 264.195 170.858 264.195 169.468 c 264.195 167.968 265.367 166.874 266.664 166.874 c 268.023 166.874 268.539 168.124 268.539 168.327 c h 267.789 169.827 m 265.133 169.827 l 265.211 171.499 266.148 171.764 266.523 171.764 c 267.68 171.764 267.789 170.264 267.789 169.827 c h 271.004 167.593 m 271.004 167.921 270.723 168.186 270.41 168.186 c 270.082 168.186 269.816 167.921 269.816 167.593 c 269.816 167.264 270.082 166.999 270.41 166.999 c 270.723 166.999 271.004 167.264 271.004 167.593 c h f 158.672 158.561 m 158.672 159.671 157.562 160.655 156.031 160.655 c 152.078 160.655 l 152.078 160.296 l 152.344 160.296 l 153.219 160.296 153.234 160.186 153.234 159.78 c 153.234 153.874 l 153.234 153.468 153.219 153.343 152.344 153.343 c 152.078 153.343 l 152.078 152.999 l 152.469 153.03 153.297 153.03 153.719 153.03 c 154.156 153.03 155 153.03 155.391 152.999 c 155.391 153.343 l 155.109 153.343 l 154.25 153.343 154.234 153.468 154.234 153.874 c 154.234 156.546 l 156.125 156.546 l 157.469 156.546 158.672 157.452 158.672 158.561 c h 157.531 158.561 m 157.531 158.046 157.531 156.827 155.75 156.827 c 154.203 156.827 l 154.203 159.858 l 154.203 160.218 154.219 160.296 154.75 160.296 c 155.75 160.296 l 157.531 160.296 157.531 159.108 157.531 158.561 c h 163.398 157.264 m 163.398 157.624 163.055 157.952 162.57 157.952 c 161.758 157.952 161.352 157.202 161.195 156.718 c 161.195 157.952 l 159.633 157.827 l 159.633 157.483 l 160.414 157.483 160.508 157.405 160.508 156.858 c 160.508 153.843 l 160.508 153.343 160.383 153.343 159.633 153.343 c 159.633 152.999 l 160.914 153.03 l 161.352 153.03 161.883 153.03 162.336 152.999 c 162.336 153.343 l 162.102 153.343 l 161.273 153.343 161.242 153.468 161.242 153.874 c 161.242 155.593 l 161.242 156.702 161.711 157.702 162.57 157.702 c 162.648 157.702 162.664 157.702 162.695 157.686 c 162.664 157.686 162.43 157.546 162.43 157.249 c 162.43 156.936 162.664 156.78 162.914 156.78 c 163.117 156.78 163.398 156.905 163.398 157.264 c h 169.125 153.999 m 169.125 154.624 l 168.844 154.624 l 168.844 153.999 l 168.844 153.343 168.562 153.28 168.453 153.28 c 168.078 153.28 168.031 153.78 168.031 153.843 c 168.031 156.077 l 168.031 156.546 168.031 156.983 167.625 157.405 c 167.188 157.843 166.625 158.014 166.094 158.014 c 165.172 158.014 164.406 157.499 164.406 156.749 c 164.406 156.421 164.625 156.218 164.922 156.218 c 165.234 156.218 165.438 156.452 165.438 156.733 c 165.438 156.874 165.375 157.249 164.859 157.249 c 165.156 157.655 165.719 157.764 166.078 157.764 c 166.625 157.764 167.266 157.327 167.266 156.343 c 167.266 155.921 l 166.688 155.889 165.906 155.858 165.203 155.514 c 164.359 155.139 164.078 154.561 164.078 154.061 c 164.078 153.155 165.156 152.874 165.875 152.874 c 166.609 152.874 167.125 153.327 167.344 153.843 c 167.375 153.405 167.688 152.936 168.219 152.936 c 168.453 152.936 169.125 153.093 169.125 153.999 c h 167.266 154.561 m 167.266 153.499 166.453 153.124 165.953 153.124 c 165.406 153.124 164.938 153.514 164.938 154.077 c 164.938 154.686 165.406 155.624 167.266 155.686 c h 173.973 154.327 m 173.973 154.436 173.879 154.468 173.816 154.468 c 173.723 154.468 173.691 154.405 173.676 154.311 c 173.285 153.155 172.27 153.155 172.16 153.155 c 171.598 153.155 171.16 153.499 170.895 153.905 c 170.566 154.436 170.566 155.186 170.566 155.593 c 173.691 155.593 l 173.926 155.593 173.973 155.593 173.973 155.827 c 173.973 156.936 173.363 158.014 171.957 158.014 c 170.66 158.014 169.629 156.858 169.629 155.468 c 169.629 153.968 170.801 152.874 172.098 152.874 c 173.457 152.874 173.973 154.124 173.973 154.327 c h 173.223 155.827 m 170.566 155.827 l 170.645 157.499 171.582 157.764 171.957 157.764 c 173.113 157.764 173.223 156.264 173.223 155.827 c h 178.316 154.436 m 178.316 155.03 177.988 155.358 177.848 155.499 c 177.473 155.858 177.035 155.952 176.566 156.03 c 175.941 156.155 175.191 156.311 175.191 156.952 c 175.191 157.343 175.488 157.811 176.441 157.811 c 177.676 157.811 177.738 156.796 177.754 156.452 c 177.77 156.343 177.895 156.343 177.895 156.343 c 178.035 156.343 178.035 156.405 178.035 156.624 c 178.035 157.749 l 178.035 157.936 178.035 158.014 177.91 158.014 c 177.863 158.014 177.832 158.014 177.691 157.889 c 177.66 157.843 177.551 157.733 177.504 157.702 c 177.082 158.014 176.613 158.014 176.441 158.014 c 175.082 158.014 174.66 157.264 174.66 156.639 c 174.66 156.249 174.832 155.936 175.129 155.686 c 175.488 155.389 175.816 155.327 176.613 155.171 c 176.863 155.124 177.785 154.952 177.785 154.139 c 177.785 153.577 177.395 153.124 176.52 153.124 c 175.566 153.124 175.176 153.764 174.957 154.718 c 174.926 154.858 174.91 154.905 174.801 154.905 c 174.66 154.905 174.66 154.827 174.66 154.624 c 174.66 153.139 l 174.66 152.952 174.66 152.874 174.785 152.874 c 174.832 152.874 174.848 152.889 175.051 153.093 c 175.082 153.124 175.082 153.139 175.285 153.358 c 175.77 152.889 176.285 152.874 176.52 152.874 c 177.801 152.874 178.316 153.624 178.316 154.436 c h 183.359 154.327 m 183.359 154.436 183.266 154.468 183.203 154.468 c 183.109 154.468 183.078 154.405 183.062 154.311 c 182.672 153.155 181.656 153.155 181.547 153.155 c 180.984 153.155 180.547 153.499 180.281 153.905 c 179.953 154.436 179.953 155.186 179.953 155.593 c 183.078 155.593 l 183.312 155.593 183.359 155.593 183.359 155.827 c 183.359 156.936 182.75 158.014 181.344 158.014 c 180.047 158.014 179.016 156.858 179.016 155.468 c 179.016 153.968 180.188 152.874 181.484 152.874 c 182.844 152.874 183.359 154.124 183.359 154.327 c h 182.609 155.827 m 179.953 155.827 l 180.031 157.499 180.969 157.764 181.344 157.764 c 182.5 157.764 182.609 156.264 182.609 155.827 c h 189.668 152.999 m 189.668 153.343 l 189.074 153.343 188.793 153.343 188.793 153.686 c 188.793 155.827 l 188.793 156.78 188.793 157.139 188.434 157.53 c 188.277 157.733 187.918 157.952 187.262 157.952 c 186.449 157.952 185.918 157.468 185.605 156.78 c 185.605 157.952 l 184.027 157.827 l 184.027 157.483 l 184.809 157.483 184.902 157.405 184.902 156.858 c 184.902 153.843 l 184.902 153.343 184.777 153.343 184.027 153.343 c 184.027 152.999 l 185.293 153.03 l 186.543 152.999 l 186.543 153.343 l 185.793 153.343 185.668 153.343 185.668 153.843 c 185.668 155.905 l 185.668 157.077 186.465 157.702 187.184 157.702 c 187.887 157.702 188.012 157.093 188.012 156.468 c 188.012 153.843 l 188.012 153.343 187.887 153.343 187.137 153.343 c 187.137 152.999 l 188.402 153.03 l h 193.621 154.389 m 193.621 155.03 l 193.34 155.03 l 193.34 154.405 l 193.34 153.577 193.012 153.155 192.59 153.155 c 191.84 153.155 191.84 154.171 191.84 154.358 c 191.84 157.483 l 193.449 157.483 l 193.449 157.827 l 191.84 157.827 l 191.84 159.889 l 191.559 159.889 l 191.543 158.968 191.215 157.764 190.121 157.733 c 190.121 157.483 l 191.074 157.483 l 191.074 154.389 l 191.074 153.014 192.105 152.874 192.512 152.874 c 193.309 152.874 193.621 153.671 193.621 154.389 c h 203.684 157.483 m 203.684 157.827 l 203.434 157.811 203.105 157.796 202.84 157.796 c 201.871 157.827 l 201.871 157.483 l 202.293 157.468 202.402 157.218 202.402 156.999 c 202.402 156.905 202.387 156.858 202.34 156.733 c 201.199 153.874 l 199.949 156.999 l 199.871 157.139 199.871 157.186 199.871 157.186 c 199.871 157.483 200.309 157.483 200.512 157.483 c 200.512 157.827 l 199.293 157.796 l 198.996 157.796 198.543 157.811 198.215 157.827 c 198.215 157.483 l 198.918 157.483 198.965 157.405 199.105 157.061 c 200.715 153.093 l 200.793 152.936 200.809 152.874 200.949 152.874 c 201.105 152.874 201.137 152.983 201.184 153.093 c 202.652 156.733 l 202.762 156.983 202.949 157.468 203.684 157.483 c h 208.559 154.327 m 208.559 154.436 208.465 154.468 208.402 154.468 c 208.309 154.468 208.277 154.405 208.262 154.311 c 207.871 153.155 206.855 153.155 206.746 153.155 c 206.184 153.155 205.746 153.499 205.48 153.905 c 205.152 154.436 205.152 155.186 205.152 155.593 c 208.277 155.593 l 208.512 155.593 208.559 155.593 208.559 155.827 c 208.559 156.936 207.949 158.014 206.543 158.014 c 205.246 158.014 204.215 156.858 204.215 155.468 c 204.215 153.968 205.387 152.874 206.684 152.874 c 208.043 152.874 208.559 154.124 208.559 154.327 c h 207.809 155.827 m 205.152 155.827 l 205.23 157.499 206.168 157.764 206.543 157.764 c 207.699 157.764 207.809 156.264 207.809 155.827 c h 212.898 154.436 m 212.898 155.03 212.57 155.358 212.43 155.499 c 212.055 155.858 211.617 155.952 211.148 156.03 c 210.523 156.155 209.773 156.311 209.773 156.952 c 209.773 157.343 210.07 157.811 211.023 157.811 c 212.258 157.811 212.32 156.796 212.336 156.452 c 212.352 156.343 212.477 156.343 212.477 156.343 c 212.617 156.343 212.617 156.405 212.617 156.624 c 212.617 157.749 l 212.617 157.936 212.617 158.014 212.492 158.014 c 212.445 158.014 212.414 158.014 212.273 157.889 c 212.242 157.843 212.133 157.733 212.086 157.702 c 211.664 158.014 211.195 158.014 211.023 158.014 c 209.664 158.014 209.242 157.264 209.242 156.639 c 209.242 156.249 209.414 155.936 209.711 155.686 c 210.07 155.389 210.398 155.327 211.195 155.171 c 211.445 155.124 212.367 154.952 212.367 154.139 c 212.367 153.577 211.977 153.124 211.102 153.124 c 210.148 153.124 209.758 153.764 209.539 154.718 c 209.508 154.858 209.492 154.905 209.383 154.905 c 209.242 154.905 209.242 154.827 209.242 154.624 c 209.242 153.139 l 209.242 152.952 209.242 152.874 209.367 152.874 c 209.414 152.874 209.43 152.889 209.633 153.093 c 209.664 153.124 209.664 153.139 209.867 153.358 c 210.352 152.889 210.867 152.874 211.102 152.874 c 212.383 152.874 212.898 153.624 212.898 154.436 c h 217.004 154.389 m 217.004 155.03 l 216.723 155.03 l 216.723 154.405 l 216.723 153.577 216.395 153.155 215.973 153.155 c 215.223 153.155 215.223 154.171 215.223 154.358 c 215.223 157.483 l 216.832 157.483 l 216.832 157.827 l 215.223 157.827 l 215.223 159.889 l 214.941 159.889 l 214.926 158.968 214.598 157.764 213.504 157.733 c 213.504 157.483 l 214.457 157.483 l 214.457 154.389 l 214.457 153.014 215.488 152.874 215.895 152.874 c 216.691 152.874 217.004 153.671 217.004 154.389 c h 220.406 152.999 m 220.406 153.343 l 219.672 153.343 219.625 153.405 219.625 153.843 c 219.625 157.952 l 218.062 157.827 l 218.062 157.483 l 218.781 157.483 218.891 157.405 218.891 156.858 c 218.891 153.843 l 218.891 153.343 218.766 153.343 218.016 153.343 c 218.016 152.999 l 219.25 153.03 l 219.641 153.03 220.031 153.014 220.406 152.999 c h 219.797 159.764 m 219.797 160.061 219.531 160.358 219.203 160.358 c 218.812 160.358 218.594 160.046 218.594 159.764 c 218.594 159.468 218.844 159.171 219.188 159.171 c 219.562 159.171 219.797 159.483 219.797 159.764 c h 226.59 155.421 m 226.59 156.843 225.48 157.952 224.215 157.952 c 223.34 157.952 222.855 157.421 222.668 157.218 c 222.668 160.78 l 221.059 160.655 l 221.059 160.296 l 221.84 160.296 221.934 160.218 221.934 159.671 c 221.934 152.999 l 222.215 152.999 l 222.621 153.686 l 222.777 153.436 223.262 152.874 224.09 152.874 c 225.418 152.874 226.59 153.968 226.59 155.421 c h 225.652 155.436 m 225.652 155.014 225.637 154.343 225.309 153.843 c 225.074 153.499 224.652 153.124 224.043 153.124 c 223.543 153.124 223.137 153.389 222.871 153.811 c 222.699 154.046 222.699 154.077 222.699 154.28 c 222.699 156.577 l 222.699 156.796 222.699 156.811 222.824 156.983 c 223.262 157.608 223.887 157.702 224.152 157.702 c 224.652 157.702 225.059 157.405 225.324 156.983 c 225.621 156.53 225.652 155.889 225.652 155.436 c h 232.98 152.999 m 232.98 153.343 l 232.184 153.343 232.105 153.421 232.105 153.968 c 232.105 157.952 l 230.449 157.827 l 230.449 157.483 l 231.23 157.483 231.324 157.405 231.324 156.858 c 231.324 154.858 l 231.324 153.889 230.793 153.124 229.965 153.124 c 229.027 153.124 228.98 153.655 228.98 154.233 c 228.98 157.952 l 227.34 157.827 l 227.34 157.483 l 228.215 157.483 228.215 157.452 228.215 156.452 c 228.215 154.764 l 228.215 153.889 228.215 152.874 229.918 152.874 c 230.543 152.874 231.043 153.186 231.355 153.889 c 231.355 152.874 l h 236.074 152.999 m 236.074 153.343 l 235.324 153.343 235.199 153.343 235.199 153.843 c 235.199 160.78 l 233.59 160.655 l 233.59 160.296 l 234.371 160.296 234.465 160.218 234.465 159.671 c 234.465 153.843 l 234.465 153.343 234.34 153.343 233.59 153.343 c 233.59 152.999 l 234.824 153.03 l h 242.32 152.999 m 242.32 153.343 l 241.523 153.343 241.445 153.421 241.445 153.968 c 241.445 157.952 l 239.789 157.827 l 239.789 157.483 l 240.57 157.483 240.664 157.405 240.664 156.858 c 240.664 154.858 l 240.664 153.889 240.133 153.124 239.305 153.124 c 238.367 153.124 238.32 153.655 238.32 154.233 c 238.32 157.952 l 236.68 157.827 l 236.68 157.483 l 237.555 157.483 237.555 157.452 237.555 156.452 c 237.555 154.764 l 237.555 153.889 237.555 152.874 239.258 152.874 c 239.883 152.874 240.383 153.186 240.695 153.889 c 240.695 152.874 l h 251.664 152.999 m 251.664 153.343 l 251.086 153.343 250.805 153.343 250.789 153.686 c 250.789 155.827 l 250.789 156.78 250.789 157.139 250.445 157.53 c 250.289 157.733 249.914 157.952 249.258 157.952 c 248.32 157.952 247.836 157.28 247.648 156.858 c 247.477 157.827 246.648 157.952 246.148 157.952 c 245.336 157.952 244.805 157.468 244.492 156.78 c 244.492 157.952 l 242.914 157.827 l 242.914 157.483 l 243.695 157.483 243.789 157.405 243.789 156.858 c 243.789 153.843 l 243.789 153.343 243.664 153.343 242.914 153.343 c 242.914 152.999 l 244.18 153.03 l 245.43 152.999 l 245.43 153.343 l 244.68 153.343 244.555 153.343 244.555 153.843 c 244.555 155.905 l 244.555 157.077 245.352 157.702 246.07 157.702 c 246.773 157.702 246.898 157.093 246.898 156.468 c 246.898 153.843 l 246.898 153.343 246.773 153.343 246.023 153.343 c 246.023 152.999 l 247.289 153.03 l 248.555 152.999 l 248.555 153.343 l 247.805 153.343 247.68 153.343 247.68 153.843 c 247.68 155.905 l 247.68 157.077 248.477 157.702 249.18 157.702 c 249.898 157.702 250.023 157.093 250.023 156.468 c 250.023 153.843 l 250.023 153.343 249.898 153.343 249.148 153.343 c 249.148 152.999 l 250.414 153.03 l h f 156.969 141.389 m 156.969 142.827 155.844 144.014 154.484 144.014 c 153.094 144.014 152 142.796 152 141.389 c 152 139.952 153.172 138.874 154.484 138.874 c 155.828 138.874 156.969 139.968 156.969 141.389 c h 156.031 141.483 m 156.031 141.077 156.031 140.483 155.781 139.983 c 155.547 139.483 155.047 139.155 154.484 139.155 c 154 139.155 153.516 139.389 153.219 139.905 c 152.938 140.405 152.938 141.077 152.938 141.483 c 152.938 141.921 152.938 142.53 153.203 143.014 c 153.5 143.53 154.031 143.764 154.484 143.764 c 154.969 143.764 155.453 143.53 155.75 143.046 c 156.031 142.561 156.031 141.905 156.031 141.483 c h 161.363 143.264 m 161.363 143.624 161.02 143.952 160.535 143.952 c 159.723 143.952 159.316 143.202 159.16 142.718 c 159.16 143.952 l 157.598 143.827 l 157.598 143.483 l 158.379 143.483 158.473 143.405 158.473 142.858 c 158.473 139.843 l 158.473 139.343 158.348 139.343 157.598 139.343 c 157.598 138.999 l 158.879 139.03 l 159.316 139.03 159.848 139.03 160.301 138.999 c 160.301 139.343 l 160.066 139.343 l 159.238 139.343 159.207 139.468 159.207 139.874 c 159.207 141.593 l 159.207 142.702 159.676 143.702 160.535 143.702 c 160.613 143.702 160.629 143.702 160.66 143.686 c 160.629 143.686 160.395 143.546 160.395 143.249 c 160.395 142.936 160.629 142.78 160.879 142.78 c 161.082 142.78 161.363 142.905 161.363 143.264 c h 167.684 138.999 m 167.684 139.343 l 167.09 139.343 166.809 139.343 166.809 139.686 c 166.809 141.827 l 166.809 142.78 166.809 143.139 166.449 143.53 c 166.293 143.733 165.934 143.952 165.277 143.952 c 164.465 143.952 163.934 143.468 163.621 142.78 c 163.621 143.952 l 162.043 143.827 l 162.043 143.483 l 162.824 143.483 162.918 143.405 162.918 142.858 c 162.918 139.843 l 162.918 139.343 162.793 139.343 162.043 139.343 c 162.043 138.999 l 163.309 139.03 l 164.559 138.999 l 164.559 139.343 l 163.809 139.343 163.684 139.343 163.684 139.843 c 163.684 141.905 l 163.684 143.077 164.48 143.702 165.199 143.702 c 165.902 143.702 166.027 143.093 166.027 142.468 c 166.027 139.843 l 166.027 139.343 165.902 139.343 165.152 139.343 c 165.152 138.999 l 166.418 139.03 l h 173.324 139.999 m 173.324 140.624 l 173.043 140.624 l 173.043 139.999 l 173.043 139.343 172.762 139.28 172.652 139.28 c 172.277 139.28 172.23 139.78 172.23 139.843 c 172.23 142.077 l 172.23 142.546 172.23 142.983 171.824 143.405 c 171.387 143.843 170.824 144.014 170.293 144.014 c 169.371 144.014 168.605 143.499 168.605 142.749 c 168.605 142.421 168.824 142.218 169.121 142.218 c 169.434 142.218 169.637 142.452 169.637 142.733 c 169.637 142.874 169.574 143.249 169.059 143.249 c 169.355 143.655 169.918 143.764 170.277 143.764 c 170.824 143.764 171.465 143.327 171.465 142.343 c 171.465 141.921 l 170.887 141.889 170.105 141.858 169.402 141.514 c 168.559 141.139 168.277 140.561 168.277 140.061 c 168.277 139.155 169.355 138.874 170.074 138.874 c 170.809 138.874 171.324 139.327 171.543 139.843 c 171.574 139.405 171.887 138.936 172.418 138.936 c 172.652 138.936 173.324 139.093 173.324 139.999 c h 171.465 140.561 m 171.465 139.499 170.652 139.124 170.152 139.124 c 169.605 139.124 169.137 139.514 169.137 140.077 c 169.137 140.686 169.605 141.624 171.465 141.686 c h 177.598 143.264 m 177.598 143.624 177.254 143.952 176.77 143.952 c 175.957 143.952 175.551 143.202 175.395 142.718 c 175.395 143.952 l 173.832 143.827 l 173.832 143.483 l 174.613 143.483 174.707 143.405 174.707 142.858 c 174.707 139.843 l 174.707 139.343 174.582 139.343 173.832 139.343 c 173.832 138.999 l 175.113 139.03 l 175.551 139.03 176.082 139.03 176.535 138.999 c 176.535 139.343 l 176.301 139.343 l 175.473 139.343 175.441 139.468 175.441 139.874 c 175.441 141.593 l 175.441 142.702 175.91 143.702 176.77 143.702 c 176.848 143.702 176.863 143.702 176.895 143.686 c 176.863 143.686 176.629 143.546 176.629 143.249 c 176.629 142.936 176.863 142.78 177.113 142.78 c 177.316 142.78 177.598 142.905 177.598 143.264 c h 182.57 140.327 m 182.57 140.436 182.477 140.468 182.414 140.468 c 182.32 140.468 182.289 140.405 182.273 140.311 c 181.883 139.155 180.867 139.155 180.758 139.155 c 180.195 139.155 179.758 139.499 179.492 139.905 c 179.164 140.436 179.164 141.186 179.164 141.593 c 182.289 141.593 l 182.523 141.593 182.57 141.593 182.57 141.827 c 182.57 142.936 181.961 144.014 180.555 144.014 c 179.258 144.014 178.227 142.858 178.227 141.468 c 178.227 139.968 179.398 138.874 180.695 138.874 c 182.055 138.874 182.57 140.124 182.57 140.327 c h 181.82 141.827 m 179.164 141.827 l 179.242 143.499 180.18 143.764 180.555 143.764 c 181.711 143.764 181.82 142.264 181.82 141.827 c h 192.027 139.999 m 192.027 140.624 l 191.746 140.624 l 191.746 139.999 l 191.746 139.343 191.465 139.28 191.355 139.28 c 190.98 139.28 190.934 139.78 190.934 139.843 c 190.934 142.077 l 190.934 142.546 190.934 142.983 190.527 143.405 c 190.09 143.843 189.527 144.014 188.996 144.014 c 188.074 144.014 187.309 143.499 187.309 142.749 c 187.309 142.421 187.527 142.218 187.824 142.218 c 188.137 142.218 188.34 142.452 188.34 142.733 c 188.34 142.874 188.277 143.249 187.762 143.249 c 188.059 143.655 188.621 143.764 188.98 143.764 c 189.527 143.764 190.168 143.327 190.168 142.343 c 190.168 141.921 l 189.59 141.889 188.809 141.858 188.105 141.514 c 187.262 141.139 186.98 140.561 186.98 140.061 c 186.98 139.155 188.059 138.874 188.777 138.874 c 189.512 138.874 190.027 139.327 190.246 139.843 c 190.277 139.405 190.59 138.936 191.121 138.936 c 191.355 138.936 192.027 139.093 192.027 139.999 c h 190.168 140.561 m 190.168 139.499 189.355 139.124 188.855 139.124 c 188.309 139.124 187.84 139.514 187.84 140.077 c 187.84 140.686 188.309 141.624 190.168 141.686 c h 196.301 143.264 m 196.301 143.624 195.957 143.952 195.473 143.952 c 194.66 143.952 194.254 143.202 194.098 142.718 c 194.098 143.952 l 192.535 143.827 l 192.535 143.483 l 193.316 143.483 193.41 143.405 193.41 142.858 c 193.41 139.843 l 193.41 139.343 193.285 139.343 192.535 139.343 c 192.535 138.999 l 193.816 139.03 l 194.254 139.03 194.785 139.03 195.238 138.999 c 195.238 139.343 l 195.004 139.343 l 194.176 139.343 194.145 139.468 194.145 139.874 c 194.145 141.593 l 194.145 142.702 194.613 143.702 195.473 143.702 c 195.551 143.702 195.566 143.702 195.598 143.686 c 195.566 143.686 195.332 143.546 195.332 143.249 c 195.332 142.936 195.566 142.78 195.816 142.78 c 196.02 142.78 196.301 142.905 196.301 143.264 c h 201.273 140.327 m 201.273 140.436 201.148 140.436 201.117 140.436 c 201.023 140.436 200.992 140.405 200.977 140.327 c 200.648 139.296 199.93 139.155 199.508 139.155 c 198.914 139.155 197.93 139.639 197.93 141.436 c 197.93 143.264 198.852 143.733 199.445 143.733 c 199.539 143.733 200.242 143.733 200.633 143.327 c 200.18 143.296 200.117 142.952 200.117 142.811 c 200.117 142.514 200.32 142.296 200.633 142.296 c 200.914 142.296 201.148 142.483 201.148 142.811 c 201.148 143.577 200.289 144.014 199.43 144.014 c 198.023 144.014 196.992 142.811 196.992 141.421 c 196.992 139.983 198.102 138.874 199.414 138.874 c 200.914 138.874 201.273 140.218 201.273 140.327 c h 207.582 138.999 m 207.582 139.343 l 206.785 139.343 206.707 139.421 206.707 139.968 c 206.707 143.952 l 205.051 143.827 l 205.051 143.483 l 205.832 143.483 205.926 143.405 205.926 142.858 c 205.926 140.858 l 205.926 139.889 205.395 139.124 204.566 139.124 c 203.629 139.124 203.582 139.655 203.582 140.233 c 203.582 143.952 l 201.941 143.827 l 201.941 143.483 l 202.816 143.483 202.816 143.452 202.816 142.452 c 202.816 140.764 l 202.816 139.889 202.816 138.874 204.52 138.874 c 205.145 138.874 205.645 139.186 205.957 139.889 c 205.957 138.874 l h 214.324 138.999 m 214.324 139.343 l 213.59 139.343 213.543 139.405 213.543 139.843 c 213.543 143.952 l 211.98 143.827 l 211.98 143.483 l 212.699 143.483 212.809 143.405 212.809 142.858 c 212.809 139.843 l 212.809 139.343 212.684 139.343 211.934 139.343 c 211.934 138.999 l 213.168 139.03 l 213.559 139.03 213.949 139.014 214.324 138.999 c h 213.715 145.764 m 213.715 146.061 213.449 146.358 213.121 146.358 c 212.73 146.358 212.512 146.046 212.512 145.764 c 212.512 145.468 212.762 145.171 213.105 145.171 c 213.48 145.171 213.715 145.483 213.715 145.764 c h 220.57 138.999 m 220.57 139.343 l 219.789 139.343 219.695 139.421 219.695 139.968 c 219.695 146.78 l 218.086 146.655 l 218.086 146.296 l 218.867 146.296 218.961 146.218 218.961 145.671 c 218.961 143.249 l 218.633 143.655 218.148 143.952 217.539 143.952 c 216.227 143.952 215.039 142.858 215.039 141.405 c 215.039 139.983 216.148 138.874 217.414 138.874 c 218.133 138.874 218.648 139.249 218.914 139.608 c 218.914 138.874 l h 218.914 140.327 m 218.914 140.124 218.914 140.093 218.805 139.905 c 218.461 139.374 217.961 139.124 217.477 139.124 c 216.977 139.124 216.57 139.421 216.305 139.843 c 216.008 140.296 215.977 140.936 215.977 141.389 c 215.977 141.811 215.992 142.483 216.32 142.983 c 216.555 143.327 216.977 143.702 217.586 143.702 c 217.977 143.702 218.445 143.53 218.805 143.03 c 218.914 142.843 218.914 142.811 218.914 142.624 c h 228.641 146.108 m 228.641 146.53 228.219 146.889 227.625 146.889 c 226.844 146.889 225.891 146.296 225.891 145.108 c 225.891 143.827 l 225.016 143.827 l 225.016 143.483 l 225.891 143.483 l 225.891 139.843 l 225.891 139.343 225.766 139.343 225.016 139.343 c 225.016 138.999 l 226.297 139.03 l 226.75 139.03 227.266 139.03 227.719 138.999 c 227.719 139.343 l 227.484 139.343 l 226.656 139.343 226.641 139.468 226.641 139.874 c 226.641 143.483 l 227.906 143.483 l 227.906 143.827 l 226.594 143.827 l 226.594 145.124 l 226.594 146.108 227.141 146.655 227.625 146.655 c 227.672 146.655 227.828 146.655 228 146.577 c 227.859 146.53 227.672 146.374 227.672 146.108 c 227.672 145.843 227.844 145.624 228.141 145.624 c 228.469 145.624 228.641 145.843 228.641 146.108 c h 233.48 139.999 m 233.48 140.624 l 233.199 140.624 l 233.199 139.999 l 233.199 139.343 232.918 139.28 232.809 139.28 c 232.434 139.28 232.387 139.78 232.387 139.843 c 232.387 142.077 l 232.387 142.546 232.387 142.983 231.98 143.405 c 231.543 143.843 230.98 144.014 230.449 144.014 c 229.527 144.014 228.762 143.499 228.762 142.749 c 228.762 142.421 228.98 142.218 229.277 142.218 c 229.59 142.218 229.793 142.452 229.793 142.733 c 229.793 142.874 229.73 143.249 229.215 143.249 c 229.512 143.655 230.074 143.764 230.434 143.764 c 230.98 143.764 231.621 143.327 231.621 142.343 c 231.621 141.921 l 231.043 141.889 230.262 141.858 229.559 141.514 c 228.715 141.139 228.434 140.561 228.434 140.061 c 228.434 139.155 229.512 138.874 230.23 138.874 c 230.965 138.874 231.48 139.327 231.699 139.843 c 231.73 139.405 232.043 138.936 232.574 138.936 c 232.809 138.936 233.48 139.093 233.48 139.999 c h 231.621 140.561 m 231.621 139.499 230.809 139.124 230.309 139.124 c 229.762 139.124 229.293 139.514 229.293 140.077 c 229.293 140.686 229.762 141.624 231.621 141.686 c h 238.332 140.327 m 238.332 140.436 238.207 140.436 238.176 140.436 c 238.082 140.436 238.051 140.405 238.035 140.327 c 237.707 139.296 236.988 139.155 236.566 139.155 c 235.973 139.155 234.988 139.639 234.988 141.436 c 234.988 143.264 235.91 143.733 236.504 143.733 c 236.598 143.733 237.301 143.733 237.691 143.327 c 237.238 143.296 237.176 142.952 237.176 142.811 c 237.176 142.514 237.379 142.296 237.691 142.296 c 237.973 142.296 238.207 142.483 238.207 142.811 c 238.207 143.577 237.348 144.014 236.488 144.014 c 235.082 144.014 234.051 142.811 234.051 141.421 c 234.051 139.983 235.16 138.874 236.473 138.874 c 237.973 138.874 238.332 140.218 238.332 140.327 c h 241.406 138.999 m 241.406 139.343 l 240.672 139.343 240.625 139.405 240.625 139.843 c 240.625 143.952 l 239.062 143.827 l 239.062 143.483 l 239.781 143.483 239.891 143.405 239.891 142.858 c 239.891 139.843 l 239.891 139.343 239.766 139.343 239.016 139.343 c 239.016 138.999 l 240.25 139.03 l 240.641 139.03 241.031 139.014 241.406 138.999 c h 240.797 145.764 m 240.797 146.061 240.531 146.358 240.203 146.358 c 239.812 146.358 239.594 146.046 239.594 145.764 c 239.594 145.468 239.844 145.171 240.188 145.171 c 240.562 145.171 240.797 145.483 240.797 145.764 c h 244.605 138.999 m 244.605 139.343 l 243.855 139.343 243.73 139.343 243.73 139.843 c 243.73 146.78 l 242.121 146.655 l 242.121 146.296 l 242.902 146.296 242.996 146.218 242.996 145.671 c 242.996 139.843 l 242.996 139.343 242.871 139.343 242.121 139.343 c 242.121 138.999 l 243.355 139.03 l h 247.617 138.999 m 247.617 139.343 l 246.883 139.343 246.836 139.405 246.836 139.843 c 246.836 143.952 l 245.273 143.827 l 245.273 143.483 l 245.992 143.483 246.102 143.405 246.102 142.858 c 246.102 139.843 l 246.102 139.343 245.977 139.343 245.227 139.343 c 245.227 138.999 l 246.461 139.03 l 246.852 139.03 247.242 139.014 247.617 138.999 c h 247.008 145.764 m 247.008 146.061 246.742 146.358 246.414 146.358 c 246.023 146.358 245.805 146.046 245.805 145.764 c 245.805 145.468 246.055 145.171 246.398 145.171 c 246.773 145.171 247.008 145.483 247.008 145.764 c h 251.988 140.436 m 251.988 141.03 251.66 141.358 251.52 141.499 c 251.145 141.858 250.707 141.952 250.238 142.03 c 249.613 142.155 248.863 142.311 248.863 142.952 c 248.863 143.343 249.16 143.811 250.113 143.811 c 251.348 143.811 251.41 142.796 251.426 142.452 c 251.441 142.343 251.566 142.343 251.566 142.343 c 251.707 142.343 251.707 142.405 251.707 142.624 c 251.707 143.749 l 251.707 143.936 251.707 144.014 251.582 144.014 c 251.535 144.014 251.504 144.014 251.363 143.889 c 251.332 143.843 251.223 143.733 251.176 143.702 c 250.754 144.014 250.285 144.014 250.113 144.014 c 248.754 144.014 248.332 143.264 248.332 142.639 c 248.332 142.249 248.504 141.936 248.801 141.686 c 249.16 141.389 249.488 141.327 250.285 141.171 c 250.535 141.124 251.457 140.952 251.457 140.139 c 251.457 139.577 251.066 139.124 250.191 139.124 c 249.238 139.124 248.848 139.764 248.629 140.718 c 248.598 140.858 248.582 140.905 248.473 140.905 c 248.332 140.905 248.332 140.827 248.332 140.624 c 248.332 139.139 l 248.332 138.952 248.332 138.874 248.457 138.874 c 248.504 138.874 248.52 138.889 248.723 139.093 c 248.754 139.124 248.754 139.139 248.957 139.358 c 249.441 138.889 249.957 138.874 250.191 138.874 c 251.473 138.874 251.988 139.624 251.988 140.436 c h 255.145 138.999 m 255.145 139.343 l 254.41 139.343 254.363 139.405 254.363 139.843 c 254.363 143.952 l 252.801 143.827 l 252.801 143.483 l 253.52 143.483 253.629 143.405 253.629 142.858 c 253.629 139.843 l 253.629 139.343 253.504 139.343 252.754 139.343 c 252.754 138.999 l 253.988 139.03 l 254.379 139.03 254.77 139.014 255.145 138.999 c h 254.535 145.764 m 254.535 146.061 254.27 146.358 253.941 146.358 c 253.551 146.358 253.332 146.046 253.332 145.764 c 253.332 145.468 253.582 145.171 253.926 145.171 c 254.301 145.171 254.535 145.483 254.535 145.764 c h 259.516 140.436 m 259.516 141.03 259.188 141.358 259.047 141.499 c 258.672 141.858 258.234 141.952 257.766 142.03 c 257.141 142.155 256.391 142.311 256.391 142.952 c 256.391 143.343 256.688 143.811 257.641 143.811 c 258.875 143.811 258.938 142.796 258.953 142.452 c 258.969 142.343 259.094 142.343 259.094 142.343 c 259.234 142.343 259.234 142.405 259.234 142.624 c 259.234 143.749 l 259.234 143.936 259.234 144.014 259.109 144.014 c 259.062 144.014 259.031 144.014 258.891 143.889 c 258.859 143.843 258.75 143.733 258.703 143.702 c 258.281 144.014 257.812 144.014 257.641 144.014 c 256.281 144.014 255.859 143.264 255.859 142.639 c 255.859 142.249 256.031 141.936 256.328 141.686 c 256.688 141.389 257.016 141.327 257.812 141.171 c 258.062 141.124 258.984 140.952 258.984 140.139 c 258.984 139.577 258.594 139.124 257.719 139.124 c 256.766 139.124 256.375 139.764 256.156 140.718 c 256.125 140.858 256.109 140.905 256 140.905 c 255.859 140.905 255.859 140.827 255.859 140.624 c 255.859 139.139 l 255.859 138.952 255.859 138.874 255.984 138.874 c 256.031 138.874 256.047 138.889 256.25 139.093 c 256.281 139.124 256.281 139.139 256.484 139.358 c 256.969 138.889 257.484 138.874 257.719 138.874 c 259 138.874 259.516 139.624 259.516 140.436 c h 262.059 139.593 m 262.059 139.921 261.777 140.186 261.465 140.186 c 261.137 140.186 260.871 139.921 260.871 139.593 c 260.871 139.264 261.137 138.999 261.465 138.999 c 261.777 138.999 262.059 139.264 262.059 139.593 c h f 158.672 130.561 m 158.672 131.671 157.562 132.655 156.031 132.655 c 152.078 132.655 l 152.078 132.296 l 152.344 132.296 l 153.219 132.296 153.234 132.186 153.234 131.78 c 153.234 125.874 l 153.234 125.468 153.219 125.343 152.344 125.343 c 152.078 125.343 l 152.078 124.999 l 152.469 125.03 153.297 125.03 153.719 125.03 c 154.156 125.03 155 125.03 155.391 124.999 c 155.391 125.343 l 155.109 125.343 l 154.25 125.343 154.234 125.468 154.234 125.874 c 154.234 128.546 l 156.125 128.546 l 157.469 128.546 158.672 129.452 158.672 130.561 c h 157.531 130.561 m 157.531 130.046 157.531 128.827 155.75 128.827 c 154.203 128.827 l 154.203 131.858 l 154.203 132.218 154.219 132.296 154.75 132.296 c 155.75 132.296 l 157.531 132.296 157.531 131.108 157.531 130.561 c h 163.398 129.264 m 163.398 129.624 163.055 129.952 162.57 129.952 c 161.758 129.952 161.352 129.202 161.195 128.718 c 161.195 129.952 l 159.633 129.827 l 159.633 129.483 l 160.414 129.483 160.508 129.405 160.508 128.858 c 160.508 125.843 l 160.508 125.343 160.383 125.343 159.633 125.343 c 159.633 124.999 l 160.914 125.03 l 161.352 125.03 161.883 125.03 162.336 124.999 c 162.336 125.343 l 162.102 125.343 l 161.273 125.343 161.242 125.468 161.242 125.874 c 161.242 127.593 l 161.242 128.702 161.711 129.702 162.57 129.702 c 162.648 129.702 162.664 129.702 162.695 129.686 c 162.664 129.686 162.43 129.546 162.43 129.249 c 162.43 128.936 162.664 128.78 162.914 128.78 c 163.117 128.78 163.398 128.905 163.398 129.264 c h 169.125 125.999 m 169.125 126.624 l 168.844 126.624 l 168.844 125.999 l 168.844 125.343 168.562 125.28 168.453 125.28 c 168.078 125.28 168.031 125.78 168.031 125.843 c 168.031 128.077 l 168.031 128.546 168.031 128.983 167.625 129.405 c 167.188 129.843 166.625 130.014 166.094 130.014 c 165.172 130.014 164.406 129.499 164.406 128.749 c 164.406 128.421 164.625 128.218 164.922 128.218 c 165.234 128.218 165.438 128.452 165.438 128.733 c 165.438 128.874 165.375 129.249 164.859 129.249 c 165.156 129.655 165.719 129.764 166.078 129.764 c 166.625 129.764 167.266 129.327 167.266 128.343 c 167.266 127.921 l 166.688 127.889 165.906 127.858 165.203 127.514 c 164.359 127.139 164.078 126.561 164.078 126.061 c 164.078 125.155 165.156 124.874 165.875 124.874 c 166.609 124.874 167.125 125.327 167.344 125.843 c 167.375 125.405 167.688 124.936 168.219 124.936 c 168.453 124.936 169.125 125.093 169.125 125.999 c h 167.266 126.561 m 167.266 125.499 166.453 125.124 165.953 125.124 c 165.406 125.124 164.938 125.514 164.938 126.077 c 164.938 126.686 165.406 127.624 167.266 127.686 c h 173.973 126.327 m 173.973 126.436 173.879 126.468 173.816 126.468 c 173.723 126.468 173.691 126.405 173.676 126.311 c 173.285 125.155 172.27 125.155 172.16 125.155 c 171.598 125.155 171.16 125.499 170.895 125.905 c 170.566 126.436 170.566 127.186 170.566 127.593 c 173.691 127.593 l 173.926 127.593 173.973 127.593 173.973 127.827 c 173.973 128.936 173.363 130.014 171.957 130.014 c 170.66 130.014 169.629 128.858 169.629 127.468 c 169.629 125.968 170.801 124.874 172.098 124.874 c 173.457 124.874 173.973 126.124 173.973 126.327 c h 173.223 127.827 m 170.566 127.827 l 170.645 129.499 171.582 129.764 171.957 129.764 c 173.113 129.764 173.223 128.264 173.223 127.827 c h 178.316 126.436 m 178.316 127.03 177.988 127.358 177.848 127.499 c 177.473 127.858 177.035 127.952 176.566 128.03 c 175.941 128.155 175.191 128.311 175.191 128.952 c 175.191 129.343 175.488 129.811 176.441 129.811 c 177.676 129.811 177.738 128.796 177.754 128.452 c 177.77 128.343 177.895 128.343 177.895 128.343 c 178.035 128.343 178.035 128.405 178.035 128.624 c 178.035 129.749 l 178.035 129.936 178.035 130.014 177.91 130.014 c 177.863 130.014 177.832 130.014 177.691 129.889 c 177.66 129.843 177.551 129.733 177.504 129.702 c 177.082 130.014 176.613 130.014 176.441 130.014 c 175.082 130.014 174.66 129.264 174.66 128.639 c 174.66 128.249 174.832 127.936 175.129 127.686 c 175.488 127.389 175.816 127.327 176.613 127.171 c 176.863 127.124 177.785 126.952 177.785 126.139 c 177.785 125.577 177.395 125.124 176.52 125.124 c 175.566 125.124 175.176 125.764 174.957 126.718 c 174.926 126.858 174.91 126.905 174.801 126.905 c 174.66 126.905 174.66 126.827 174.66 126.624 c 174.66 125.139 l 174.66 124.952 174.66 124.874 174.785 124.874 c 174.832 124.874 174.848 124.889 175.051 125.093 c 175.082 125.124 175.082 125.139 175.285 125.358 c 175.77 124.889 176.285 124.874 176.52 124.874 c 177.801 124.874 178.316 125.624 178.316 126.436 c h 183.359 126.327 m 183.359 126.436 183.266 126.468 183.203 126.468 c 183.109 126.468 183.078 126.405 183.062 126.311 c 182.672 125.155 181.656 125.155 181.547 125.155 c 180.984 125.155 180.547 125.499 180.281 125.905 c 179.953 126.436 179.953 127.186 179.953 127.593 c 183.078 127.593 l 183.312 127.593 183.359 127.593 183.359 127.827 c 183.359 128.936 182.75 130.014 181.344 130.014 c 180.047 130.014 179.016 128.858 179.016 127.468 c 179.016 125.968 180.188 124.874 181.484 124.874 c 182.844 124.874 183.359 126.124 183.359 126.327 c h 182.609 127.827 m 179.953 127.827 l 180.031 129.499 180.969 129.764 181.344 129.764 c 182.5 129.764 182.609 128.264 182.609 127.827 c h 189.668 124.999 m 189.668 125.343 l 189.074 125.343 188.793 125.343 188.793 125.686 c 188.793 127.827 l 188.793 128.78 188.793 129.139 188.434 129.53 c 188.277 129.733 187.918 129.952 187.262 129.952 c 186.449 129.952 185.918 129.468 185.605 128.78 c 185.605 129.952 l 184.027 129.827 l 184.027 129.483 l 184.809 129.483 184.902 129.405 184.902 128.858 c 184.902 125.843 l 184.902 125.343 184.777 125.343 184.027 125.343 c 184.027 124.999 l 185.293 125.03 l 186.543 124.999 l 186.543 125.343 l 185.793 125.343 185.668 125.343 185.668 125.843 c 185.668 127.905 l 185.668 129.077 186.465 129.702 187.184 129.702 c 187.887 129.702 188.012 129.093 188.012 128.468 c 188.012 125.843 l 188.012 125.343 187.887 125.343 187.137 125.343 c 187.137 124.999 l 188.402 125.03 l h 193.621 126.389 m 193.621 127.03 l 193.34 127.03 l 193.34 126.405 l 193.34 125.577 193.012 125.155 192.59 125.155 c 191.84 125.155 191.84 126.171 191.84 126.358 c 191.84 129.483 l 193.449 129.483 l 193.449 129.827 l 191.84 129.827 l 191.84 131.889 l 191.559 131.889 l 191.543 130.968 191.215 129.764 190.121 129.733 c 190.121 129.483 l 191.074 129.483 l 191.074 126.389 l 191.074 125.014 192.105 124.874 192.512 124.874 c 193.309 124.874 193.621 125.671 193.621 126.389 c h 202.027 126.436 m 202.027 127.03 201.699 127.358 201.559 127.499 c 201.184 127.858 200.746 127.952 200.277 128.03 c 199.652 128.155 198.902 128.311 198.902 128.952 c 198.902 129.343 199.199 129.811 200.152 129.811 c 201.387 129.811 201.449 128.796 201.465 128.452 c 201.48 128.343 201.605 128.343 201.605 128.343 c 201.746 128.343 201.746 128.405 201.746 128.624 c 201.746 129.749 l 201.746 129.936 201.746 130.014 201.621 130.014 c 201.574 130.014 201.543 130.014 201.402 129.889 c 201.371 129.843 201.262 129.733 201.215 129.702 c 200.793 130.014 200.324 130.014 200.152 130.014 c 198.793 130.014 198.371 129.264 198.371 128.639 c 198.371 128.249 198.543 127.936 198.84 127.686 c 199.199 127.389 199.527 127.327 200.324 127.171 c 200.574 127.124 201.496 126.952 201.496 126.139 c 201.496 125.577 201.105 125.124 200.23 125.124 c 199.277 125.124 198.887 125.764 198.668 126.718 c 198.637 126.858 198.621 126.905 198.512 126.905 c 198.371 126.905 198.371 126.827 198.371 126.624 c 198.371 125.139 l 198.371 124.952 198.371 124.874 198.496 124.874 c 198.543 124.874 198.559 124.889 198.762 125.093 c 198.793 125.124 198.793 125.139 198.996 125.358 c 199.48 124.889 199.996 124.874 200.23 124.874 c 201.512 124.874 202.027 125.624 202.027 126.436 c h 207.07 126.327 m 207.07 126.436 206.977 126.468 206.914 126.468 c 206.82 126.468 206.789 126.405 206.773 126.311 c 206.383 125.155 205.367 125.155 205.258 125.155 c 204.695 125.155 204.258 125.499 203.992 125.905 c 203.664 126.436 203.664 127.186 203.664 127.593 c 206.789 127.593 l 207.023 127.593 207.07 127.593 207.07 127.827 c 207.07 128.936 206.461 130.014 205.055 130.014 c 203.758 130.014 202.727 128.858 202.727 127.468 c 202.727 125.968 203.898 124.874 205.195 124.874 c 206.555 124.874 207.07 126.124 207.07 126.327 c h 206.32 127.827 m 203.664 127.827 l 203.742 129.499 204.68 129.764 205.055 129.764 c 206.211 129.764 206.32 128.264 206.32 127.827 c h 216.488 124.999 m 216.488 125.343 l 215.91 125.343 215.629 125.343 215.613 125.686 c 215.613 127.827 l 215.613 128.78 215.613 129.139 215.27 129.53 c 215.113 129.733 214.738 129.952 214.082 129.952 c 213.145 129.952 212.66 129.28 212.473 128.858 c 212.301 129.827 211.473 129.952 210.973 129.952 c 210.16 129.952 209.629 129.468 209.316 128.78 c 209.316 129.952 l 207.738 129.827 l 207.738 129.483 l 208.52 129.483 208.613 129.405 208.613 128.858 c 208.613 125.843 l 208.613 125.343 208.488 125.343 207.738 125.343 c 207.738 124.999 l 209.004 125.03 l 210.254 124.999 l 210.254 125.343 l 209.504 125.343 209.379 125.343 209.379 125.843 c 209.379 127.905 l 209.379 129.077 210.176 129.702 210.895 129.702 c 211.598 129.702 211.723 129.093 211.723 128.468 c 211.723 125.843 l 211.723 125.343 211.598 125.343 210.848 125.343 c 210.848 124.999 l 212.113 125.03 l 213.379 124.999 l 213.379 125.343 l 212.629 125.343 212.504 125.343 212.504 125.843 c 212.504 127.905 l 212.504 129.077 213.301 129.702 214.004 129.702 c 214.723 129.702 214.848 129.093 214.848 128.468 c 214.848 125.843 l 214.848 125.343 214.723 125.343 213.973 125.343 c 213.973 124.999 l 215.238 125.03 l h 222.566 127.421 m 222.566 128.843 221.473 129.952 220.223 129.952 c 219.348 129.952 218.879 129.452 218.645 129.218 c 218.645 129.952 l 217.035 129.827 l 217.035 129.483 l 217.832 129.483 217.91 129.405 217.91 128.921 c 217.91 123.671 l 217.91 123.171 217.785 123.171 217.035 123.171 c 217.035 122.827 l 218.285 122.858 l 219.551 122.827 l 219.551 123.171 l 218.801 123.171 218.676 123.171 218.676 123.671 c 218.676 125.655 l 218.738 125.483 219.207 124.874 220.066 124.874 c 221.395 124.874 222.566 125.968 222.566 127.421 c h 221.629 127.421 m 221.629 126.061 220.848 125.124 220.02 125.124 c 219.566 125.124 219.145 125.343 218.848 125.811 c 218.676 126.046 218.676 126.046 218.676 126.28 c 218.676 128.78 l 219.004 129.343 219.551 129.671 220.129 129.671 c 220.941 129.671 221.629 128.686 221.629 127.421 c h 227.613 126.327 m 227.613 126.436 227.52 126.468 227.457 126.468 c 227.363 126.468 227.332 126.405 227.316 126.311 c 226.926 125.155 225.91 125.155 225.801 125.155 c 225.238 125.155 224.801 125.499 224.535 125.905 c 224.207 126.436 224.207 127.186 224.207 127.593 c 227.332 127.593 l 227.566 127.593 227.613 127.593 227.613 127.827 c 227.613 128.936 227.004 130.014 225.598 130.014 c 224.301 130.014 223.27 128.858 223.27 127.468 c 223.27 125.968 224.441 124.874 225.738 124.874 c 227.098 124.874 227.613 126.124 227.613 126.327 c h 226.863 127.827 m 224.207 127.827 l 224.285 129.499 225.223 129.764 225.598 129.764 c 226.754 129.764 226.863 128.264 226.863 127.827 c h 232 129.264 m 232 129.624 231.656 129.952 231.172 129.952 c 230.359 129.952 229.953 129.202 229.797 128.718 c 229.797 129.952 l 228.234 129.827 l 228.234 129.483 l 229.016 129.483 229.109 129.405 229.109 128.858 c 229.109 125.843 l 229.109 125.343 228.984 125.343 228.234 125.343 c 228.234 124.999 l 229.516 125.03 l 229.953 125.03 230.484 125.03 230.938 124.999 c 230.938 125.343 l 230.703 125.343 l 229.875 125.343 229.844 125.468 229.844 125.874 c 229.844 127.593 l 229.844 128.702 230.312 129.702 231.172 129.702 c 231.25 129.702 231.266 129.702 231.297 129.686 c 231.266 129.686 231.031 129.546 231.031 129.249 c 231.031 128.936 231.266 128.78 231.516 128.78 c 231.719 128.78 232 128.905 232 129.264 c h 241.746 129.483 m 241.746 129.827 l 241.496 129.811 241.168 129.796 240.902 129.796 c 239.934 129.827 l 239.934 129.483 l 240.355 129.468 240.465 129.218 240.465 128.999 c 240.465 128.905 240.449 128.858 240.402 128.733 c 239.262 125.874 l 238.012 128.999 l 237.934 129.139 237.934 129.186 237.934 129.186 c 237.934 129.483 238.371 129.483 238.574 129.483 c 238.574 129.827 l 237.355 129.796 l 237.059 129.796 236.605 129.811 236.277 129.827 c 236.277 129.483 l 236.98 129.483 237.027 129.405 237.168 129.061 c 238.777 125.093 l 238.855 124.936 238.871 124.874 239.012 124.874 c 239.168 124.874 239.199 124.983 239.246 125.093 c 240.715 128.733 l 240.824 128.983 241.012 129.468 241.746 129.483 c h 246.621 126.327 m 246.621 126.436 246.527 126.468 246.465 126.468 c 246.371 126.468 246.34 126.405 246.324 126.311 c 245.934 125.155 244.918 125.155 244.809 125.155 c 244.246 125.155 243.809 125.499 243.543 125.905 c 243.215 126.436 243.215 127.186 243.215 127.593 c 246.34 127.593 l 246.574 127.593 246.621 127.593 246.621 127.827 c 246.621 128.936 246.012 130.014 244.605 130.014 c 243.309 130.014 242.277 128.858 242.277 127.468 c 242.277 125.968 243.449 124.874 244.746 124.874 c 246.105 124.874 246.621 126.124 246.621 126.327 c h 245.871 127.827 m 243.215 127.827 l 243.293 129.499 244.23 129.764 244.605 129.764 c 245.762 129.764 245.871 128.264 245.871 127.827 c h 249.789 124.999 m 249.789 125.343 l 249.039 125.343 248.914 125.343 248.914 125.843 c 248.914 132.78 l 247.305 132.655 l 247.305 132.296 l 248.086 132.296 248.18 132.218 248.18 131.671 c 248.18 125.843 l 248.18 125.343 248.055 125.343 247.305 125.343 c 247.305 124.999 l 248.539 125.03 l h 259.777 124.999 m 259.777 125.343 l 259.184 125.343 258.902 125.343 258.902 125.686 c 258.902 127.827 l 258.902 128.78 258.902 129.139 258.543 129.53 c 258.387 129.733 258.027 129.952 257.371 129.952 c 256.559 129.952 256.027 129.468 255.715 128.78 c 255.715 129.952 l 254.137 129.827 l 254.137 129.483 l 254.918 129.483 255.012 129.405 255.012 128.858 c 255.012 125.843 l 255.012 125.343 254.887 125.343 254.137 125.343 c 254.137 124.999 l 255.402 125.03 l 256.652 124.999 l 256.652 125.343 l 255.902 125.343 255.777 125.343 255.777 125.843 c 255.777 127.905 l 255.777 129.077 256.574 129.702 257.293 129.702 c 257.996 129.702 258.121 129.093 258.121 128.468 c 258.121 125.843 l 258.121 125.343 257.996 125.343 257.246 125.343 c 257.246 124.999 l 258.512 125.03 l h 262.777 124.999 m 262.777 125.343 l 262.043 125.343 261.996 125.405 261.996 125.843 c 261.996 129.952 l 260.434 129.827 l 260.434 129.483 l 261.152 129.483 261.262 129.405 261.262 128.858 c 261.262 125.843 l 261.262 125.343 261.137 125.343 260.387 125.343 c 260.387 124.999 l 261.621 125.03 l 262.012 125.03 262.402 125.014 262.777 124.999 c h 262.168 131.764 m 262.168 132.061 261.902 132.358 261.574 132.358 c 261.184 132.358 260.965 132.046 260.965 131.764 c 260.965 131.468 261.215 131.171 261.559 131.171 c 261.934 131.171 262.168 131.483 262.168 131.764 c h 267.148 126.436 m 267.148 127.03 266.82 127.358 266.68 127.499 c 266.305 127.858 265.867 127.952 265.398 128.03 c 264.773 128.155 264.023 128.311 264.023 128.952 c 264.023 129.343 264.32 129.811 265.273 129.811 c 266.508 129.811 266.57 128.796 266.586 128.452 c 266.602 128.343 266.727 128.343 266.727 128.343 c 266.867 128.343 266.867 128.405 266.867 128.624 c 266.867 129.749 l 266.867 129.936 266.867 130.014 266.742 130.014 c 266.695 130.014 266.664 130.014 266.523 129.889 c 266.492 129.843 266.383 129.733 266.336 129.702 c 265.914 130.014 265.445 130.014 265.273 130.014 c 263.914 130.014 263.492 129.264 263.492 128.639 c 263.492 128.249 263.664 127.936 263.961 127.686 c 264.32 127.389 264.648 127.327 265.445 127.171 c 265.695 127.124 266.617 126.952 266.617 126.139 c 266.617 125.577 266.227 125.124 265.352 125.124 c 264.398 125.124 264.008 125.764 263.789 126.718 c 263.758 126.858 263.742 126.905 263.633 126.905 c 263.492 126.905 263.492 126.827 263.492 126.624 c 263.492 125.139 l 263.492 124.952 263.492 124.874 263.617 124.874 c 263.664 124.874 263.68 124.889 263.883 125.093 c 263.914 125.124 263.914 125.139 264.117 125.358 c 264.602 124.889 265.117 124.874 265.352 124.874 c 266.633 124.874 267.148 125.624 267.148 126.436 c h 270.395 124.999 m 270.395 125.343 l 269.645 125.343 269.52 125.343 269.52 125.843 c 269.52 132.78 l 267.91 132.655 l 267.91 132.296 l 268.691 132.296 268.785 132.218 268.785 131.671 c 268.785 125.843 l 268.785 125.343 268.66 125.343 267.91 125.343 c 267.91 124.999 l 269.145 125.03 l h f 155.719 112.436 m 155.719 113.03 155.391 113.358 155.25 113.499 c 154.875 113.858 154.438 113.952 153.969 114.03 c 153.344 114.155 152.594 114.311 152.594 114.952 c 152.594 115.343 152.891 115.811 153.844 115.811 c 155.078 115.811 155.141 114.796 155.156 114.452 c 155.172 114.343 155.297 114.343 155.297 114.343 c 155.438 114.343 155.438 114.405 155.438 114.624 c 155.438 115.749 l 155.438 115.936 155.438 116.014 155.312 116.014 c 155.266 116.014 155.234 116.014 155.094 115.889 c 155.062 115.843 154.953 115.733 154.906 115.702 c 154.484 116.014 154.016 116.014 153.844 116.014 c 152.484 116.014 152.062 115.264 152.062 114.639 c 152.062 114.249 152.234 113.936 152.531 113.686 c 152.891 113.389 153.219 113.327 154.016 113.171 c 154.266 113.124 155.188 112.952 155.188 112.139 c 155.188 111.577 154.797 111.124 153.922 111.124 c 152.969 111.124 152.578 111.764 152.359 112.718 c 152.328 112.858 152.312 112.905 152.203 112.905 c 152.062 112.905 152.062 112.827 152.062 112.624 c 152.062 111.139 l 152.062 110.952 152.062 110.874 152.188 110.874 c 152.234 110.874 152.25 110.889 152.453 111.093 c 152.484 111.124 152.484 111.139 152.688 111.358 c 153.172 110.889 153.688 110.874 153.922 110.874 c 155.203 110.874 155.719 111.624 155.719 112.436 c h 158.871 110.999 m 158.871 111.343 l 158.137 111.343 158.09 111.405 158.09 111.843 c 158.09 115.952 l 156.527 115.827 l 156.527 115.483 l 157.246 115.483 157.355 115.405 157.355 114.858 c 157.355 111.843 l 157.355 111.343 157.23 111.343 156.48 111.343 c 156.48 110.999 l 157.715 111.03 l 158.105 111.03 158.496 111.014 158.871 110.999 c h 158.262 117.764 m 158.262 118.061 157.996 118.358 157.668 118.358 c 157.277 118.358 157.059 118.046 157.059 117.764 c 157.059 117.468 157.309 117.171 157.652 117.171 c 158.027 117.171 158.262 117.483 158.262 117.764 c h 162.93 112.389 m 162.93 113.03 l 162.648 113.03 l 162.648 112.405 l 162.648 111.577 162.32 111.155 161.898 111.155 c 161.148 111.155 161.148 112.171 161.148 112.358 c 161.148 115.483 l 162.758 115.483 l 162.758 115.827 l 161.148 115.827 l 161.148 117.889 l 160.867 117.889 l 160.852 116.968 160.523 115.764 159.43 115.733 c 159.43 115.483 l 160.383 115.483 l 160.383 112.389 l 160.383 111.014 161.414 110.874 161.82 110.874 c 162.617 110.874 162.93 111.671 162.93 112.389 c h 172.711 111.999 m 172.711 112.624 l 172.43 112.624 l 172.43 111.999 l 172.43 111.343 172.148 111.28 172.039 111.28 c 171.664 111.28 171.617 111.78 171.617 111.843 c 171.617 114.077 l 171.617 114.546 171.617 114.983 171.211 115.405 c 170.773 115.843 170.211 116.014 169.68 116.014 c 168.758 116.014 167.992 115.499 167.992 114.749 c 167.992 114.421 168.211 114.218 168.508 114.218 c 168.82 114.218 169.023 114.452 169.023 114.733 c 169.023 114.874 168.961 115.249 168.445 115.249 c 168.742 115.655 169.305 115.764 169.664 115.764 c 170.211 115.764 170.852 115.327 170.852 114.343 c 170.852 113.921 l 170.273 113.889 169.492 113.858 168.789 113.514 c 167.945 113.139 167.664 112.561 167.664 112.061 c 167.664 111.155 168.742 110.874 169.461 110.874 c 170.195 110.874 170.711 111.327 170.93 111.843 c 170.961 111.405 171.273 110.936 171.805 110.936 c 172.039 110.936 172.711 111.093 172.711 111.999 c h 170.852 112.561 m 170.852 111.499 170.039 111.124 169.539 111.124 c 168.992 111.124 168.523 111.514 168.523 112.077 c 168.523 112.686 168.992 113.624 170.852 113.686 c h 182.016 110.999 m 182.016 111.343 l 181.438 111.343 181.156 111.343 181.141 111.686 c 181.141 113.827 l 181.141 114.78 181.141 115.139 180.797 115.53 c 180.641 115.733 180.266 115.952 179.609 115.952 c 178.672 115.952 178.188 115.28 178 114.858 c 177.828 115.827 177 115.952 176.5 115.952 c 175.688 115.952 175.156 115.468 174.844 114.78 c 174.844 115.952 l 173.266 115.827 l 173.266 115.483 l 174.047 115.483 174.141 115.405 174.141 114.858 c 174.141 111.843 l 174.141 111.343 174.016 111.343 173.266 111.343 c 173.266 110.999 l 174.531 111.03 l 175.781 110.999 l 175.781 111.343 l 175.031 111.343 174.906 111.343 174.906 111.843 c 174.906 113.905 l 174.906 115.077 175.703 115.702 176.422 115.702 c 177.125 115.702 177.25 115.093 177.25 114.468 c 177.25 111.843 l 177.25 111.343 177.125 111.343 176.375 111.343 c 176.375 110.999 l 177.641 111.03 l 178.906 110.999 l 178.906 111.343 l 178.156 111.343 178.031 111.343 178.031 111.843 c 178.031 113.905 l 178.031 115.077 178.828 115.702 179.531 115.702 c 180.25 115.702 180.375 115.093 180.375 114.468 c 180.375 111.843 l 180.375 111.343 180.25 111.343 179.5 111.343 c 179.5 110.999 l 180.766 111.03 l h 186.902 112.327 m 186.902 112.436 186.809 112.468 186.746 112.468 c 186.652 112.468 186.621 112.405 186.605 112.311 c 186.215 111.155 185.199 111.155 185.09 111.155 c 184.527 111.155 184.09 111.499 183.824 111.905 c 183.496 112.436 183.496 113.186 183.496 113.593 c 186.621 113.593 l 186.855 113.593 186.902 113.593 186.902 113.827 c 186.902 114.936 186.293 116.014 184.887 116.014 c 183.59 116.014 182.559 114.858 182.559 113.468 c 182.559 111.968 183.73 110.874 185.027 110.874 c 186.387 110.874 186.902 112.124 186.902 112.327 c h 186.152 113.827 m 183.496 113.827 l 183.574 115.499 184.512 115.764 184.887 115.764 c 186.043 115.764 186.152 114.264 186.152 113.827 c h 190.93 112.389 m 190.93 113.03 l 190.648 113.03 l 190.648 112.405 l 190.648 111.577 190.32 111.155 189.898 111.155 c 189.148 111.155 189.148 112.171 189.148 112.358 c 189.148 115.483 l 190.758 115.483 l 190.758 115.827 l 189.148 115.827 l 189.148 117.889 l 188.867 117.889 l 188.852 116.968 188.523 115.764 187.43 115.733 c 187.43 115.483 l 188.383 115.483 l 188.383 112.389 l 188.383 111.014 189.414 110.874 189.82 110.874 c 190.617 110.874 190.93 111.671 190.93 112.389 c h 199.961 112.327 m 199.961 112.436 199.836 112.436 199.805 112.436 c 199.711 112.436 199.68 112.405 199.664 112.327 c 199.336 111.296 198.617 111.155 198.195 111.155 c 197.602 111.155 196.617 111.639 196.617 113.436 c 196.617 115.264 197.539 115.733 198.133 115.733 c 198.227 115.733 198.93 115.733 199.32 115.327 c 198.867 115.296 198.805 114.952 198.805 114.811 c 198.805 114.514 199.008 114.296 199.32 114.296 c 199.602 114.296 199.836 114.483 199.836 114.811 c 199.836 115.577 198.977 116.014 198.117 116.014 c 196.711 116.014 195.68 114.811 195.68 113.421 c 195.68 111.983 196.789 110.874 198.102 110.874 c 199.602 110.874 199.961 112.218 199.961 112.327 c h 205.551 113.389 m 205.551 114.827 204.426 116.014 203.066 116.014 c 201.676 116.014 200.582 114.796 200.582 113.389 c 200.582 111.952 201.754 110.874 203.066 110.874 c 204.41 110.874 205.551 111.968 205.551 113.389 c h 204.613 113.483 m 204.613 113.077 204.613 112.483 204.363 111.983 c 204.129 111.483 203.629 111.155 203.066 111.155 c 202.582 111.155 202.098 111.389 201.801 111.905 c 201.52 112.405 201.52 113.077 201.52 113.483 c 201.52 113.921 201.52 114.53 201.785 115.014 c 202.082 115.53 202.613 115.764 203.066 115.764 c 203.551 115.764 204.035 115.53 204.332 115.046 c 204.613 114.561 204.613 113.905 204.613 113.483 c h 211.871 110.999 m 211.871 111.343 l 211.277 111.343 210.996 111.343 210.996 111.686 c 210.996 113.827 l 210.996 114.78 210.996 115.139 210.637 115.53 c 210.48 115.733 210.121 115.952 209.465 115.952 c 208.652 115.952 208.121 115.468 207.809 114.78 c 207.809 115.952 l 206.23 115.827 l 206.23 115.483 l 207.012 115.483 207.105 115.405 207.105 114.858 c 207.105 111.843 l 207.105 111.343 206.98 111.343 206.23 111.343 c 206.23 110.999 l 207.496 111.03 l 208.746 110.999 l 208.746 111.343 l 207.996 111.343 207.871 111.343 207.871 111.843 c 207.871 113.905 l 207.871 115.077 208.668 115.702 209.387 115.702 c 210.09 115.702 210.215 115.093 210.215 114.468 c 210.215 111.843 l 210.215 111.343 210.09 111.343 209.34 111.343 c 209.34 110.999 l 210.605 111.03 l h 216.137 112.436 m 216.137 113.03 215.809 113.358 215.668 113.499 c 215.293 113.858 214.855 113.952 214.387 114.03 c 213.762 114.155 213.012 114.311 213.012 114.952 c 213.012 115.343 213.309 115.811 214.262 115.811 c 215.496 115.811 215.559 114.796 215.574 114.452 c 215.59 114.343 215.715 114.343 215.715 114.343 c 215.855 114.343 215.855 114.405 215.855 114.624 c 215.855 115.749 l 215.855 115.936 215.855 116.014 215.73 116.014 c 215.684 116.014 215.652 116.014 215.512 115.889 c 215.48 115.843 215.371 115.733 215.324 115.702 c 214.902 116.014 214.434 116.014 214.262 116.014 c 212.902 116.014 212.48 115.264 212.48 114.639 c 212.48 114.249 212.652 113.936 212.949 113.686 c 213.309 113.389 213.637 113.327 214.434 113.171 c 214.684 113.124 215.605 112.952 215.605 112.139 c 215.605 111.577 215.215 111.124 214.34 111.124 c 213.387 111.124 212.996 111.764 212.777 112.718 c 212.746 112.858 212.73 112.905 212.621 112.905 c 212.48 112.905 212.48 112.827 212.48 112.624 c 212.48 111.139 l 212.48 110.952 212.48 110.874 212.605 110.874 c 212.652 110.874 212.668 110.889 212.871 111.093 c 212.902 111.124 212.902 111.139 213.105 111.358 c 213.59 110.889 214.105 110.874 214.34 110.874 c 215.621 110.874 216.137 111.624 216.137 112.436 c h 221.18 112.327 m 221.18 112.436 221.086 112.468 221.023 112.468 c 220.93 112.468 220.898 112.405 220.883 112.311 c 220.492 111.155 219.477 111.155 219.367 111.155 c 218.805 111.155 218.367 111.499 218.102 111.905 c 217.773 112.436 217.773 113.186 217.773 113.593 c 220.898 113.593 l 221.133 113.593 221.18 113.593 221.18 113.827 c 221.18 114.936 220.57 116.014 219.164 116.014 c 217.867 116.014 216.836 114.858 216.836 113.468 c 216.836 111.968 218.008 110.874 219.305 110.874 c 220.664 110.874 221.18 112.124 221.18 112.327 c h 220.43 113.827 m 217.773 113.827 l 217.852 115.499 218.789 115.764 219.164 115.764 c 220.32 115.764 220.43 114.264 220.43 113.827 c h 227.395 108.827 m 227.395 109.171 l 226.645 109.171 226.52 109.171 226.52 109.671 c 226.52 115.952 l 226.27 115.952 l 225.848 114.936 l 225.707 115.249 225.238 115.952 224.348 115.952 c 223.051 115.952 221.863 114.858 221.863 113.405 c 221.863 112.014 222.957 110.874 224.254 110.874 c 225.035 110.874 225.504 111.358 225.738 111.686 c 225.738 109.671 l 225.738 109.171 225.629 109.171 224.879 109.171 c 224.879 108.827 l 226.129 108.858 l h 225.785 112.53 m 225.785 112.171 225.582 111.843 225.332 111.577 c 225.191 111.421 224.832 111.124 224.301 111.124 c 223.488 111.124 222.801 112.124 222.801 113.405 c 222.801 114.733 223.582 115.671 224.41 115.671 c 225.301 115.671 225.785 114.702 225.785 114.108 c h 233.395 110.999 m 233.395 111.343 l 232.598 111.343 232.52 111.421 232.52 111.968 c 232.52 115.952 l 230.863 115.827 l 230.863 115.483 l 231.645 115.483 231.738 115.405 231.738 114.858 c 231.738 112.858 l 231.738 111.889 231.207 111.124 230.379 111.124 c 229.441 111.124 229.395 111.655 229.395 112.233 c 229.395 115.952 l 227.754 115.827 l 227.754 115.483 l 228.629 115.483 228.629 115.452 228.629 114.452 c 228.629 112.764 l 228.629 111.889 228.629 110.874 230.332 110.874 c 230.957 110.874 231.457 111.186 231.77 111.889 c 231.77 110.874 l h 239.035 111.999 m 239.035 112.624 l 238.754 112.624 l 238.754 111.999 l 238.754 111.343 238.473 111.28 238.363 111.28 c 237.988 111.28 237.941 111.78 237.941 111.843 c 237.941 114.077 l 237.941 114.546 237.941 114.983 237.535 115.405 c 237.098 115.843 236.535 116.014 236.004 116.014 c 235.082 116.014 234.316 115.499 234.316 114.749 c 234.316 114.421 234.535 114.218 234.832 114.218 c 235.145 114.218 235.348 114.452 235.348 114.733 c 235.348 114.874 235.285 115.249 234.77 115.249 c 235.066 115.655 235.629 115.764 235.988 115.764 c 236.535 115.764 237.176 115.327 237.176 114.343 c 237.176 113.921 l 236.598 113.889 235.816 113.858 235.113 113.514 c 234.27 113.139 233.988 112.561 233.988 112.061 c 233.988 111.155 235.066 110.874 235.785 110.874 c 236.52 110.874 237.035 111.327 237.254 111.843 c 237.285 111.405 237.598 110.936 238.129 110.936 c 238.363 110.936 239.035 111.093 239.035 111.999 c h 237.176 112.561 m 237.176 111.499 236.363 111.124 235.863 111.124 c 235.316 111.124 234.848 111.514 234.848 112.077 c 234.848 112.686 235.316 113.624 237.176 113.686 c h 242.949 112.389 m 242.949 113.03 l 242.668 113.03 l 242.668 112.405 l 242.668 111.577 242.34 111.155 241.918 111.155 c 241.168 111.155 241.168 112.171 241.168 112.358 c 241.168 115.483 l 242.777 115.483 l 242.777 115.827 l 241.168 115.827 l 241.168 117.889 l 240.887 117.889 l 240.871 116.968 240.543 115.764 239.449 115.733 c 239.449 115.483 l 240.402 115.483 l 240.402 112.389 l 240.402 111.014 241.434 110.874 241.84 110.874 c 242.637 110.874 242.949 111.671 242.949 112.389 c h 245.738 111.593 m 245.738 111.921 245.457 112.186 245.145 112.186 c 244.816 112.186 244.551 111.921 244.551 111.593 c 244.551 111.264 244.816 110.999 245.145 110.999 c 245.457 110.999 245.738 111.264 245.738 111.593 c h f 158.672 102.561 m 158.672 103.671 157.562 104.655 156.031 104.655 c 152.078 104.655 l 152.078 104.296 l 152.344 104.296 l 153.219 104.296 153.234 104.186 153.234 103.78 c 153.234 97.874 l 153.234 97.468 153.219 97.343 152.344 97.343 c 152.078 97.343 l 152.078 96.999 l 152.469 97.03 153.297 97.03 153.719 97.03 c 154.156 97.03 155 97.03 155.391 96.999 c 155.391 97.343 l 155.109 97.343 l 154.25 97.343 154.234 97.468 154.234 97.874 c 154.234 100.546 l 156.125 100.546 l 157.469 100.546 158.672 101.452 158.672 102.561 c h 157.531 102.561 m 157.531 102.046 157.531 100.827 155.75 100.827 c 154.203 100.827 l 154.203 103.858 l 154.203 104.218 154.219 104.296 154.75 104.296 c 155.75 104.296 l 157.531 104.296 157.531 103.108 157.531 102.561 c h 163.398 101.264 m 163.398 101.624 163.055 101.952 162.57 101.952 c 161.758 101.952 161.352 101.202 161.195 100.718 c 161.195 101.952 l 159.633 101.827 l 159.633 101.483 l 160.414 101.483 160.508 101.405 160.508 100.858 c 160.508 97.843 l 160.508 97.343 160.383 97.343 159.633 97.343 c 159.633 96.999 l 160.914 97.03 l 161.352 97.03 161.883 97.03 162.336 96.999 c 162.336 97.343 l 162.102 97.343 l 161.273 97.343 161.242 97.468 161.242 97.874 c 161.242 99.593 l 161.242 100.702 161.711 101.702 162.57 101.702 c 162.648 101.702 162.664 101.702 162.695 101.686 c 162.664 101.686 162.43 101.546 162.43 101.249 c 162.43 100.936 162.664 100.78 162.914 100.78 c 163.117 100.78 163.398 100.905 163.398 101.264 c h 169.125 97.999 m 169.125 98.624 l 168.844 98.624 l 168.844 97.999 l 168.844 97.343 168.562 97.28 168.453 97.28 c 168.078 97.28 168.031 97.78 168.031 97.843 c 168.031 100.077 l 168.031 100.546 168.031 100.983 167.625 101.405 c 167.188 101.843 166.625 102.014 166.094 102.014 c 165.172 102.014 164.406 101.499 164.406 100.749 c 164.406 100.421 164.625 100.218 164.922 100.218 c 165.234 100.218 165.438 100.452 165.438 100.733 c 165.438 100.874 165.375 101.249 164.859 101.249 c 165.156 101.655 165.719 101.764 166.078 101.764 c 166.625 101.764 167.266 101.327 167.266 100.343 c 167.266 99.921 l 166.688 99.889 165.906 99.858 165.203 99.514 c 164.359 99.139 164.078 98.561 164.078 98.061 c 164.078 97.155 165.156 96.874 165.875 96.874 c 166.609 96.874 167.125 97.327 167.344 97.843 c 167.375 97.405 167.688 96.936 168.219 96.936 c 168.453 96.936 169.125 97.093 169.125 97.999 c h 167.266 98.561 m 167.266 97.499 166.453 97.124 165.953 97.124 c 165.406 97.124 164.938 97.514 164.938 98.077 c 164.938 98.686 165.406 99.624 167.266 99.686 c h 173.973 98.327 m 173.973 98.436 173.879 98.468 173.816 98.468 c 173.723 98.468 173.691 98.405 173.676 98.311 c 173.285 97.155 172.27 97.155 172.16 97.155 c 171.598 97.155 171.16 97.499 170.895 97.905 c 170.566 98.436 170.566 99.186 170.566 99.593 c 173.691 99.593 l 173.926 99.593 173.973 99.593 173.973 99.827 c 173.973 100.936 173.363 102.014 171.957 102.014 c 170.66 102.014 169.629 100.858 169.629 99.468 c 169.629 97.968 170.801 96.874 172.098 96.874 c 173.457 96.874 173.973 98.124 173.973 98.327 c h 173.223 99.827 m 170.566 99.827 l 170.645 101.499 171.582 101.764 171.957 101.764 c 173.113 101.764 173.223 100.264 173.223 99.827 c h 178.316 98.436 m 178.316 99.03 177.988 99.358 177.848 99.499 c 177.473 99.858 177.035 99.952 176.566 100.03 c 175.941 100.155 175.191 100.311 175.191 100.952 c 175.191 101.343 175.488 101.811 176.441 101.811 c 177.676 101.811 177.738 100.796 177.754 100.452 c 177.77 100.343 177.895 100.343 177.895 100.343 c 178.035 100.343 178.035 100.405 178.035 100.624 c 178.035 101.749 l 178.035 101.936 178.035 102.014 177.91 102.014 c 177.863 102.014 177.832 102.014 177.691 101.889 c 177.66 101.843 177.551 101.733 177.504 101.702 c 177.082 102.014 176.613 102.014 176.441 102.014 c 175.082 102.014 174.66 101.264 174.66 100.639 c 174.66 100.249 174.832 99.936 175.129 99.686 c 175.488 99.389 175.816 99.327 176.613 99.171 c 176.863 99.124 177.785 98.952 177.785 98.139 c 177.785 97.577 177.395 97.124 176.52 97.124 c 175.566 97.124 175.176 97.764 174.957 98.718 c 174.926 98.858 174.91 98.905 174.801 98.905 c 174.66 98.905 174.66 98.827 174.66 98.624 c 174.66 97.139 l 174.66 96.952 174.66 96.874 174.785 96.874 c 174.832 96.874 174.848 96.889 175.051 97.093 c 175.082 97.124 175.082 97.139 175.285 97.358 c 175.77 96.889 176.285 96.874 176.52 96.874 c 177.801 96.874 178.316 97.624 178.316 98.436 c h 183.359 98.327 m 183.359 98.436 183.266 98.468 183.203 98.468 c 183.109 98.468 183.078 98.405 183.062 98.311 c 182.672 97.155 181.656 97.155 181.547 97.155 c 180.984 97.155 180.547 97.499 180.281 97.905 c 179.953 98.436 179.953 99.186 179.953 99.593 c 183.078 99.593 l 183.312 99.593 183.359 99.593 183.359 99.827 c 183.359 100.936 182.75 102.014 181.344 102.014 c 180.047 102.014 179.016 100.858 179.016 99.468 c 179.016 97.968 180.188 96.874 181.484 96.874 c 182.844 96.874 183.359 98.124 183.359 98.327 c h 182.609 99.827 m 179.953 99.827 l 180.031 101.499 180.969 101.764 181.344 101.764 c 182.5 101.764 182.609 100.264 182.609 99.827 c h 189.668 96.999 m 189.668 97.343 l 189.074 97.343 188.793 97.343 188.793 97.686 c 188.793 99.827 l 188.793 100.78 188.793 101.139 188.434 101.53 c 188.277 101.733 187.918 101.952 187.262 101.952 c 186.449 101.952 185.918 101.468 185.605 100.78 c 185.605 101.952 l 184.027 101.827 l 184.027 101.483 l 184.809 101.483 184.902 101.405 184.902 100.858 c 184.902 97.843 l 184.902 97.343 184.777 97.343 184.027 97.343 c 184.027 96.999 l 185.293 97.03 l 186.543 96.999 l 186.543 97.343 l 185.793 97.343 185.668 97.343 185.668 97.843 c 185.668 99.905 l 185.668 101.077 186.465 101.702 187.184 101.702 c 187.887 101.702 188.012 101.093 188.012 100.468 c 188.012 97.843 l 188.012 97.343 187.887 97.343 187.137 97.343 c 187.137 96.999 l 188.402 97.03 l h 193.621 98.389 m 193.621 99.03 l 193.34 99.03 l 193.34 98.405 l 193.34 97.577 193.012 97.155 192.59 97.155 c 191.84 97.155 191.84 98.171 191.84 98.358 c 191.84 101.483 l 193.449 101.483 l 193.449 101.827 l 191.84 101.827 l 191.84 103.889 l 191.559 103.889 l 191.543 102.968 191.215 101.764 190.121 101.733 c 190.121 101.483 l 191.074 101.483 l 191.074 98.389 l 191.074 97.014 192.105 96.874 192.512 96.874 c 193.309 96.874 193.621 97.671 193.621 98.389 c h 202.027 98.436 m 202.027 99.03 201.699 99.358 201.559 99.499 c 201.184 99.858 200.746 99.952 200.277 100.03 c 199.652 100.155 198.902 100.311 198.902 100.952 c 198.902 101.343 199.199 101.811 200.152 101.811 c 201.387 101.811 201.449 100.796 201.465 100.452 c 201.48 100.343 201.605 100.343 201.605 100.343 c 201.746 100.343 201.746 100.405 201.746 100.624 c 201.746 101.749 l 201.746 101.936 201.746 102.014 201.621 102.014 c 201.574 102.014 201.543 102.014 201.402 101.889 c 201.371 101.843 201.262 101.733 201.215 101.702 c 200.793 102.014 200.324 102.014 200.152 102.014 c 198.793 102.014 198.371 101.264 198.371 100.639 c 198.371 100.249 198.543 99.936 198.84 99.686 c 199.199 99.389 199.527 99.327 200.324 99.171 c 200.574 99.124 201.496 98.952 201.496 98.139 c 201.496 97.577 201.105 97.124 200.23 97.124 c 199.277 97.124 198.887 97.764 198.668 98.718 c 198.637 98.858 198.621 98.905 198.512 98.905 c 198.371 98.905 198.371 98.827 198.371 98.624 c 198.371 97.139 l 198.371 96.952 198.371 96.874 198.496 96.874 c 198.543 96.874 198.559 96.889 198.762 97.093 c 198.793 97.124 198.793 97.139 198.996 97.358 c 199.48 96.889 199.996 96.874 200.23 96.874 c 201.512 96.874 202.027 97.624 202.027 98.436 c h 207.07 98.327 m 207.07 98.436 206.977 98.468 206.914 98.468 c 206.82 98.468 206.789 98.405 206.773 98.311 c 206.383 97.155 205.367 97.155 205.258 97.155 c 204.695 97.155 204.258 97.499 203.992 97.905 c 203.664 98.436 203.664 99.186 203.664 99.593 c 206.789 99.593 l 207.023 99.593 207.07 99.593 207.07 99.827 c 207.07 100.936 206.461 102.014 205.055 102.014 c 203.758 102.014 202.727 100.858 202.727 99.468 c 202.727 97.968 203.898 96.874 205.195 96.874 c 206.555 96.874 207.07 98.124 207.07 98.327 c h 206.32 99.827 m 203.664 99.827 l 203.742 101.499 204.68 101.764 205.055 101.764 c 206.211 101.764 206.32 100.264 206.32 99.827 c h 213.285 96.999 m 213.285 97.343 l 212.504 97.343 212.41 97.421 212.41 97.968 c 212.41 104.78 l 210.801 104.655 l 210.801 104.296 l 211.582 104.296 211.676 104.218 211.676 103.671 c 211.676 101.249 l 211.348 101.655 210.863 101.952 210.254 101.952 c 208.941 101.952 207.754 100.858 207.754 99.405 c 207.754 97.983 208.863 96.874 210.129 96.874 c 210.848 96.874 211.363 97.249 211.629 97.608 c 211.629 96.874 l h 211.629 98.327 m 211.629 98.124 211.629 98.093 211.52 97.905 c 211.176 97.374 210.676 97.124 210.191 97.124 c 209.691 97.124 209.285 97.421 209.02 97.843 c 208.723 98.296 208.691 98.936 208.691 99.389 c 208.691 99.811 208.707 100.483 209.035 100.983 c 209.27 101.327 209.691 101.702 210.301 101.702 c 210.691 101.702 211.16 101.53 211.52 101.03 c 211.629 100.843 211.629 100.811 211.629 100.624 c h 221.074 98.389 m 221.074 99.03 l 220.793 99.03 l 220.793 98.405 l 220.793 97.577 220.465 97.155 220.043 97.155 c 219.293 97.155 219.293 98.171 219.293 98.358 c 219.293 101.483 l 220.902 101.483 l 220.902 101.827 l 219.293 101.827 l 219.293 103.889 l 219.012 103.889 l 218.996 102.968 218.668 101.764 217.574 101.733 c 217.574 101.483 l 218.527 101.483 l 218.527 98.389 l 218.527 97.014 219.559 96.874 219.965 96.874 c 220.762 96.874 221.074 97.671 221.074 98.389 c h 226.363 98.327 m 226.363 98.436 226.27 98.468 226.207 98.468 c 226.113 98.468 226.082 98.405 226.066 98.311 c 225.676 97.155 224.66 97.155 224.551 97.155 c 223.988 97.155 223.551 97.499 223.285 97.905 c 222.957 98.436 222.957 99.186 222.957 99.593 c 226.082 99.593 l 226.316 99.593 226.363 99.593 226.363 99.827 c 226.363 100.936 225.754 102.014 224.348 102.014 c 223.051 102.014 222.02 100.858 222.02 99.468 c 222.02 97.968 223.191 96.874 224.488 96.874 c 225.848 96.874 226.363 98.124 226.363 98.327 c h 225.613 99.827 m 222.957 99.827 l 223.035 101.499 223.973 101.764 224.348 101.764 c 225.504 101.764 225.613 100.264 225.613 99.827 c h 229.535 96.999 m 229.535 97.343 l 228.785 97.343 228.66 97.343 228.66 97.843 c 228.66 104.78 l 227.051 104.655 l 227.051 104.296 l 227.832 104.296 227.926 104.218 227.926 103.671 c 227.926 97.843 l 227.926 97.343 227.801 97.343 227.051 97.343 c 227.051 96.999 l 228.285 97.03 l h 232.641 96.999 m 232.641 97.343 l 231.891 97.343 231.766 97.343 231.766 97.843 c 231.766 104.78 l 230.156 104.655 l 230.156 104.296 l 230.938 104.296 231.031 104.218 231.031 103.671 c 231.031 97.843 l 231.031 97.343 230.906 97.343 230.156 97.343 c 230.156 96.999 l 231.391 97.03 l h 238.887 96.999 m 238.887 97.343 l 238.09 97.343 238.012 97.421 238.012 97.968 c 238.012 101.952 l 236.355 101.827 l 236.355 101.483 l 237.137 101.483 237.23 101.405 237.23 100.858 c 237.23 98.858 l 237.23 97.889 236.699 97.124 235.871 97.124 c 234.934 97.124 234.887 97.655 234.887 98.233 c 234.887 101.952 l 233.246 101.827 l 233.246 101.483 l 234.121 101.483 234.121 101.452 234.121 100.452 c 234.121 98.764 l 234.121 97.889 234.121 96.874 235.824 96.874 c 236.449 96.874 236.949 97.186 237.262 97.889 c 237.262 96.874 l h 243.152 98.436 m 243.152 99.03 242.824 99.358 242.684 99.499 c 242.309 99.858 241.871 99.952 241.402 100.03 c 240.777 100.155 240.027 100.311 240.027 100.952 c 240.027 101.343 240.324 101.811 241.277 101.811 c 242.512 101.811 242.574 100.796 242.59 100.452 c 242.605 100.343 242.73 100.343 242.73 100.343 c 242.871 100.343 242.871 100.405 242.871 100.624 c 242.871 101.749 l 242.871 101.936 242.871 102.014 242.746 102.014 c 242.699 102.014 242.668 102.014 242.527 101.889 c 242.496 101.843 242.387 101.733 242.34 101.702 c 241.918 102.014 241.449 102.014 241.277 102.014 c 239.918 102.014 239.496 101.264 239.496 100.639 c 239.496 100.249 239.668 99.936 239.965 99.686 c 240.324 99.389 240.652 99.327 241.449 99.171 c 241.699 99.124 242.621 98.952 242.621 98.139 c 242.621 97.577 242.23 97.124 241.355 97.124 c 240.402 97.124 240.012 97.764 239.793 98.718 c 239.762 98.858 239.746 98.905 239.637 98.905 c 239.496 98.905 239.496 98.827 239.496 98.624 c 239.496 97.139 l 239.496 96.952 239.496 96.874 239.621 96.874 c 239.668 96.874 239.684 96.889 239.887 97.093 c 239.918 97.124 239.918 97.139 240.121 97.358 c 240.605 96.889 241.121 96.874 241.355 96.874 c 242.637 96.874 243.152 97.624 243.152 98.436 c h 251.938 98.327 m 251.938 98.436 251.844 98.468 251.781 98.468 c 251.688 98.468 251.656 98.405 251.641 98.311 c 251.25 97.155 250.234 97.155 250.125 97.155 c 249.562 97.155 249.125 97.499 248.859 97.905 c 248.531 98.436 248.531 99.186 248.531 99.593 c 251.656 99.593 l 251.891 99.593 251.938 99.593 251.938 99.827 c 251.938 100.936 251.328 102.014 249.922 102.014 c 248.625 102.014 247.594 100.858 247.594 99.468 c 247.594 97.968 248.766 96.874 250.062 96.874 c 251.422 96.874 251.938 98.124 251.938 98.327 c h 251.188 99.827 m 248.531 99.827 l 248.609 101.499 249.547 101.764 249.922 101.764 c 251.078 101.764 251.188 100.264 251.188 99.827 c h 255.965 98.389 m 255.965 99.03 l 255.684 99.03 l 255.684 98.405 l 255.684 97.577 255.355 97.155 254.934 97.155 c 254.184 97.155 254.184 98.171 254.184 98.358 c 254.184 101.483 l 255.793 101.483 l 255.793 101.827 l 254.184 101.827 l 254.184 103.889 l 253.902 103.889 l 253.887 102.968 253.559 101.764 252.465 101.733 c 252.465 101.483 l 253.418 101.483 l 253.418 98.389 l 253.418 97.014 254.449 96.874 254.855 96.874 c 255.652 96.874 255.965 97.671 255.965 98.389 c h 266.34 96.999 m 266.34 97.343 l 265.746 97.343 265.465 97.343 265.465 97.686 c 265.465 99.827 l 265.465 100.78 265.465 101.139 265.105 101.53 c 264.949 101.733 264.59 101.952 263.934 101.952 c 263.121 101.952 262.59 101.468 262.277 100.78 c 262.277 101.952 l 260.699 101.827 l 260.699 101.483 l 261.48 101.483 261.574 101.405 261.574 100.858 c 261.574 97.843 l 261.574 97.343 261.449 97.343 260.699 97.343 c 260.699 96.999 l 261.965 97.03 l 263.215 96.999 l 263.215 97.343 l 262.465 97.343 262.34 97.343 262.34 97.843 c 262.34 99.905 l 262.34 101.077 263.137 101.702 263.855 101.702 c 264.559 101.702 264.684 101.093 264.684 100.468 c 264.684 97.843 l 264.684 97.343 264.559 97.343 263.809 97.343 c 263.809 96.999 l 265.074 97.03 l h 269.34 96.999 m 269.34 97.343 l 268.605 97.343 268.559 97.405 268.559 97.843 c 268.559 101.952 l 266.996 101.827 l 266.996 101.483 l 267.715 101.483 267.824 101.405 267.824 100.858 c 267.824 97.843 l 267.824 97.343 267.699 97.343 266.949 97.343 c 266.949 96.999 l 268.184 97.03 l 268.574 97.03 268.965 97.014 269.34 96.999 c h 268.73 103.764 m 268.73 104.061 268.465 104.358 268.137 104.358 c 267.746 104.358 267.527 104.046 267.527 103.764 c 267.527 103.468 267.777 103.171 268.121 103.171 c 268.496 103.171 268.73 103.483 268.73 103.764 c h 273.711 98.436 m 273.711 99.03 273.383 99.358 273.242 99.499 c 272.867 99.858 272.43 99.952 271.961 100.03 c 271.336 100.155 270.586 100.311 270.586 100.952 c 270.586 101.343 270.883 101.811 271.836 101.811 c 273.07 101.811 273.133 100.796 273.148 100.452 c 273.164 100.343 273.289 100.343 273.289 100.343 c 273.43 100.343 273.43 100.405 273.43 100.624 c 273.43 101.749 l 273.43 101.936 273.43 102.014 273.305 102.014 c 273.258 102.014 273.227 102.014 273.086 101.889 c 273.055 101.843 272.945 101.733 272.898 101.702 c 272.477 102.014 272.008 102.014 271.836 102.014 c 270.477 102.014 270.055 101.264 270.055 100.639 c 270.055 100.249 270.227 99.936 270.523 99.686 c 270.883 99.389 271.211 99.327 272.008 99.171 c 272.258 99.124 273.18 98.952 273.18 98.139 c 273.18 97.577 272.789 97.124 271.914 97.124 c 270.961 97.124 270.57 97.764 270.352 98.718 c 270.32 98.858 270.305 98.905 270.195 98.905 c 270.055 98.905 270.055 98.827 270.055 98.624 c 270.055 97.139 l 270.055 96.952 270.055 96.874 270.18 96.874 c 270.227 96.874 270.242 96.889 270.445 97.093 c 270.477 97.124 270.477 97.139 270.68 97.358 c 271.164 96.889 271.68 96.874 271.914 96.874 c 273.195 96.874 273.711 97.624 273.711 98.436 c h 276.863 96.999 m 276.863 97.343 l 276.129 97.343 276.082 97.405 276.082 97.843 c 276.082 101.952 l 274.52 101.827 l 274.52 101.483 l 275.238 101.483 275.348 101.405 275.348 100.858 c 275.348 97.843 l 275.348 97.343 275.223 97.343 274.473 97.343 c 274.473 96.999 l 275.707 97.03 l 276.098 97.03 276.488 97.014 276.863 96.999 c h 276.254 103.764 m 276.254 104.061 275.988 104.358 275.66 104.358 c 275.27 104.358 275.051 104.046 275.051 103.764 c 275.051 103.468 275.301 103.171 275.645 103.171 c 276.02 103.171 276.254 103.483 276.254 103.764 c h f 160.797 82.999 m 160.797 83.343 l 160.219 83.343 159.938 83.343 159.922 83.686 c 159.922 85.827 l 159.922 86.78 159.922 87.139 159.578 87.53 c 159.422 87.733 159.047 87.952 158.391 87.952 c 157.453 87.952 156.969 87.28 156.781 86.858 c 156.609 87.827 155.781 87.952 155.281 87.952 c 154.469 87.952 153.938 87.468 153.625 86.78 c 153.625 87.952 l 152.047 87.827 l 152.047 87.483 l 152.828 87.483 152.922 87.405 152.922 86.858 c 152.922 83.843 l 152.922 83.343 152.797 83.343 152.047 83.343 c 152.047 82.999 l 153.312 83.03 l 154.562 82.999 l 154.562 83.343 l 153.812 83.343 153.688 83.343 153.688 83.843 c 153.688 85.905 l 153.688 87.077 154.484 87.702 155.203 87.702 c 155.906 87.702 156.031 87.093 156.031 86.468 c 156.031 83.843 l 156.031 83.343 155.906 83.343 155.156 83.343 c 155.156 82.999 l 156.422 83.03 l 157.688 82.999 l 157.688 83.343 l 156.938 83.343 156.812 83.343 156.812 83.843 c 156.812 85.905 l 156.812 87.077 157.609 87.702 158.312 87.702 c 159.031 87.702 159.156 87.093 159.156 86.468 c 159.156 83.843 l 159.156 83.343 159.031 83.343 158.281 83.343 c 158.281 82.999 l 159.547 83.03 l h 166.434 83.999 m 166.434 84.624 l 166.152 84.624 l 166.152 83.999 l 166.152 83.343 165.871 83.28 165.762 83.28 c 165.387 83.28 165.34 83.78 165.34 83.843 c 165.34 86.077 l 165.34 86.546 165.34 86.983 164.934 87.405 c 164.496 87.843 163.934 88.014 163.402 88.014 c 162.48 88.014 161.715 87.499 161.715 86.749 c 161.715 86.421 161.934 86.218 162.23 86.218 c 162.543 86.218 162.746 86.452 162.746 86.733 c 162.746 86.874 162.684 87.249 162.168 87.249 c 162.465 87.655 163.027 87.764 163.387 87.764 c 163.934 87.764 164.574 87.327 164.574 86.343 c 164.574 85.921 l 163.996 85.889 163.215 85.858 162.512 85.514 c 161.668 85.139 161.387 84.561 161.387 84.061 c 161.387 83.155 162.465 82.874 163.184 82.874 c 163.918 82.874 164.434 83.327 164.652 83.843 c 164.684 83.405 164.996 82.936 165.527 82.936 c 165.762 82.936 166.434 83.093 166.434 83.999 c h 164.574 84.561 m 164.574 83.499 163.762 83.124 163.262 83.124 c 162.715 83.124 162.246 83.514 162.246 84.077 c 162.246 84.686 162.715 85.624 164.574 85.686 c h 170.348 84.389 m 170.348 85.03 l 170.066 85.03 l 170.066 84.405 l 170.066 83.577 169.738 83.155 169.316 83.155 c 168.566 83.155 168.566 84.171 168.566 84.358 c 168.566 87.483 l 170.176 87.483 l 170.176 87.827 l 168.566 87.827 l 168.566 89.889 l 168.285 89.889 l 168.27 88.968 167.941 87.764 166.848 87.733 c 166.848 87.483 l 167.801 87.483 l 167.801 84.389 l 167.801 83.014 168.832 82.874 169.238 82.874 c 170.035 82.874 170.348 83.671 170.348 84.389 c h 174.699 84.389 m 174.699 85.03 l 174.418 85.03 l 174.418 84.405 l 174.418 83.577 174.09 83.155 173.668 83.155 c 172.918 83.155 172.918 84.171 172.918 84.358 c 172.918 87.483 l 174.527 87.483 l 174.527 87.827 l 172.918 87.827 l 172.918 89.889 l 172.637 89.889 l 172.621 88.968 172.293 87.764 171.199 87.733 c 171.199 87.483 l 172.152 87.483 l 172.152 84.389 l 172.152 83.014 173.184 82.874 173.59 82.874 c 174.387 82.874 174.699 83.671 174.699 84.389 c h 178.098 82.999 m 178.098 83.343 l 177.363 83.343 177.316 83.405 177.316 83.843 c 177.316 87.952 l 175.754 87.827 l 175.754 87.483 l 176.473 87.483 176.582 87.405 176.582 86.858 c 176.582 83.843 l 176.582 83.343 176.457 83.343 175.707 83.343 c 175.707 82.999 l 176.941 83.03 l 177.332 83.03 177.723 83.014 178.098 82.999 c h 177.488 89.764 m 177.488 90.061 177.223 90.358 176.895 90.358 c 176.504 90.358 176.285 90.046 176.285 89.764 c 176.285 89.468 176.535 89.171 176.879 89.171 c 177.254 89.171 177.488 89.483 177.488 89.764 c h 182.473 84.436 m 182.473 85.03 182.145 85.358 182.004 85.499 c 181.629 85.858 181.191 85.952 180.723 86.03 c 180.098 86.155 179.348 86.311 179.348 86.952 c 179.348 87.343 179.645 87.811 180.598 87.811 c 181.832 87.811 181.895 86.796 181.91 86.452 c 181.926 86.343 182.051 86.343 182.051 86.343 c 182.191 86.343 182.191 86.405 182.191 86.624 c 182.191 87.749 l 182.191 87.936 182.191 88.014 182.066 88.014 c 182.02 88.014 181.988 88.014 181.848 87.889 c 181.816 87.843 181.707 87.733 181.66 87.702 c 181.238 88.014 180.77 88.014 180.598 88.014 c 179.238 88.014 178.816 87.264 178.816 86.639 c 178.816 86.249 178.988 85.936 179.285 85.686 c 179.645 85.389 179.973 85.327 180.77 85.171 c 181.02 85.124 181.941 84.952 181.941 84.139 c 181.941 83.577 181.551 83.124 180.676 83.124 c 179.723 83.124 179.332 83.764 179.113 84.718 c 179.082 84.858 179.066 84.905 178.957 84.905 c 178.816 84.905 178.816 84.827 178.816 84.624 c 178.816 83.139 l 178.816 82.952 178.816 82.874 178.941 82.874 c 178.988 82.874 179.004 82.889 179.207 83.093 c 179.238 83.124 179.238 83.139 179.441 83.358 c 179.926 82.889 180.441 82.874 180.676 82.874 c 181.957 82.874 182.473 83.624 182.473 84.436 c h 192.004 83.999 m 192.004 84.624 l 191.723 84.624 l 191.723 83.999 l 191.723 83.343 191.441 83.28 191.332 83.28 c 190.957 83.28 190.91 83.78 190.91 83.843 c 190.91 86.077 l 190.91 86.546 190.91 86.983 190.504 87.405 c 190.066 87.843 189.504 88.014 188.973 88.014 c 188.051 88.014 187.285 87.499 187.285 86.749 c 187.285 86.421 187.504 86.218 187.801 86.218 c 188.113 86.218 188.316 86.452 188.316 86.733 c 188.316 86.874 188.254 87.249 187.738 87.249 c 188.035 87.655 188.598 87.764 188.957 87.764 c 189.504 87.764 190.145 87.327 190.145 86.343 c 190.145 85.921 l 189.566 85.889 188.785 85.858 188.082 85.514 c 187.238 85.139 186.957 84.561 186.957 84.061 c 186.957 83.155 188.035 82.874 188.754 82.874 c 189.488 82.874 190.004 83.327 190.223 83.843 c 190.254 83.405 190.566 82.936 191.098 82.936 c 191.332 82.936 192.004 83.093 192.004 83.999 c h 190.145 84.561 m 190.145 83.499 189.332 83.124 188.832 83.124 c 188.285 83.124 187.816 83.514 187.816 84.077 c 187.816 84.686 188.285 85.624 190.145 85.686 c h 196.855 84.327 m 196.855 84.436 196.73 84.436 196.699 84.436 c 196.605 84.436 196.574 84.405 196.559 84.327 c 196.23 83.296 195.512 83.155 195.09 83.155 c 194.496 83.155 193.512 83.639 193.512 85.436 c 193.512 87.264 194.434 87.733 195.027 87.733 c 195.121 87.733 195.824 87.733 196.215 87.327 c 195.762 87.296 195.699 86.952 195.699 86.811 c 195.699 86.514 195.902 86.296 196.215 86.296 c 196.496 86.296 196.73 86.483 196.73 86.811 c 196.73 87.577 195.871 88.014 195.012 88.014 c 193.605 88.014 192.574 86.811 192.574 85.421 c 192.574 83.983 193.684 82.874 194.996 82.874 c 196.496 82.874 196.855 84.218 196.855 84.327 c h 201.82 84.327 m 201.82 84.436 201.695 84.436 201.664 84.436 c 201.57 84.436 201.539 84.405 201.523 84.327 c 201.195 83.296 200.477 83.155 200.055 83.155 c 199.461 83.155 198.477 83.639 198.477 85.436 c 198.477 87.264 199.398 87.733 199.992 87.733 c 200.086 87.733 200.789 87.733 201.18 87.327 c 200.727 87.296 200.664 86.952 200.664 86.811 c 200.664 86.514 200.867 86.296 201.18 86.296 c 201.461 86.296 201.695 86.483 201.695 86.811 c 201.695 87.577 200.836 88.014 199.977 88.014 c 198.57 88.014 197.539 86.811 197.539 85.421 c 197.539 83.983 198.648 82.874 199.961 82.874 c 201.461 82.874 201.82 84.218 201.82 84.327 c h 208.129 82.999 m 208.129 83.343 l 207.332 83.343 207.254 83.421 207.254 83.968 c 207.254 87.952 l 205.598 87.827 l 205.598 87.483 l 206.379 87.483 206.473 87.405 206.473 86.858 c 206.473 84.858 l 206.473 83.889 205.941 83.124 205.113 83.124 c 204.176 83.124 204.129 83.655 204.129 84.233 c 204.129 87.952 l 202.488 87.827 l 202.488 87.483 l 203.363 87.483 203.363 87.452 203.363 86.452 c 203.363 84.764 l 203.363 83.889 203.363 82.874 205.066 82.874 c 205.691 82.874 206.191 83.186 206.504 83.889 c 206.504 82.874 l h 217.473 82.999 m 217.473 83.343 l 216.895 83.343 216.613 83.343 216.598 83.686 c 216.598 85.827 l 216.598 86.78 216.598 87.139 216.254 87.53 c 216.098 87.733 215.723 87.952 215.066 87.952 c 214.129 87.952 213.645 87.28 213.457 86.858 c 213.285 87.827 212.457 87.952 211.957 87.952 c 211.145 87.952 210.613 87.468 210.301 86.78 c 210.301 87.952 l 208.723 87.827 l 208.723 87.483 l 209.504 87.483 209.598 87.405 209.598 86.858 c 209.598 83.843 l 209.598 83.343 209.473 83.343 208.723 83.343 c 208.723 82.999 l 209.988 83.03 l 211.238 82.999 l 211.238 83.343 l 210.488 83.343 210.363 83.343 210.363 83.843 c 210.363 85.905 l 210.363 87.077 211.16 87.702 211.879 87.702 c 212.582 87.702 212.707 87.093 212.707 86.468 c 212.707 83.843 l 212.707 83.343 212.582 83.343 211.832 83.343 c 211.832 82.999 l 213.098 83.03 l 214.363 82.999 l 214.363 83.343 l 213.613 83.343 213.488 83.343 213.488 83.843 c 213.488 85.905 l 213.488 87.077 214.285 87.702 214.988 87.702 c 215.707 87.702 215.832 87.093 215.832 86.468 c 215.832 83.843 l 215.832 83.343 215.707 83.343 214.957 83.343 c 214.957 82.999 l 216.223 83.03 l h 221.738 84.436 m 221.738 85.03 221.41 85.358 221.27 85.499 c 220.895 85.858 220.457 85.952 219.988 86.03 c 219.363 86.155 218.613 86.311 218.613 86.952 c 218.613 87.343 218.91 87.811 219.863 87.811 c 221.098 87.811 221.16 86.796 221.176 86.452 c 221.191 86.343 221.316 86.343 221.316 86.343 c 221.457 86.343 221.457 86.405 221.457 86.624 c 221.457 87.749 l 221.457 87.936 221.457 88.014 221.332 88.014 c 221.285 88.014 221.254 88.014 221.113 87.889 c 221.082 87.843 220.973 87.733 220.926 87.702 c 220.504 88.014 220.035 88.014 219.863 88.014 c 218.504 88.014 218.082 87.264 218.082 86.639 c 218.082 86.249 218.254 85.936 218.551 85.686 c 218.91 85.389 219.238 85.327 220.035 85.171 c 220.285 85.124 221.207 84.952 221.207 84.139 c 221.207 83.577 220.816 83.124 219.941 83.124 c 218.988 83.124 218.598 83.764 218.379 84.718 c 218.348 84.858 218.332 84.905 218.223 84.905 c 218.082 84.905 218.082 84.827 218.082 84.624 c 218.082 83.139 l 218.082 82.952 218.082 82.874 218.207 82.874 c 218.254 82.874 218.27 82.889 218.473 83.093 c 218.504 83.124 218.504 83.139 218.707 83.358 c 219.191 82.889 219.707 82.874 219.941 82.874 c 221.223 82.874 221.738 83.624 221.738 84.436 c h 227.531 83.999 m 227.531 84.624 l 227.25 84.624 l 227.25 83.999 l 227.25 83.343 226.969 83.28 226.859 83.28 c 226.484 83.28 226.438 83.78 226.438 83.843 c 226.438 86.077 l 226.438 86.546 226.438 86.983 226.031 87.405 c 225.594 87.843 225.031 88.014 224.5 88.014 c 223.578 88.014 222.812 87.499 222.812 86.749 c 222.812 86.421 223.031 86.218 223.328 86.218 c 223.641 86.218 223.844 86.452 223.844 86.733 c 223.844 86.874 223.781 87.249 223.266 87.249 c 223.562 87.655 224.125 87.764 224.484 87.764 c 225.031 87.764 225.672 87.327 225.672 86.343 c 225.672 85.921 l 225.094 85.889 224.312 85.858 223.609 85.514 c 222.766 85.139 222.484 84.561 222.484 84.061 c 222.484 83.155 223.562 82.874 224.281 82.874 c 225.016 82.874 225.531 83.327 225.75 83.843 c 225.781 83.405 226.094 82.936 226.625 82.936 c 226.859 82.936 227.531 83.093 227.531 83.999 c h 225.672 84.561 m 225.672 83.499 224.859 83.124 224.359 83.124 c 223.812 83.124 223.344 83.514 223.344 84.077 c 223.344 84.686 223.812 85.624 225.672 85.686 c h 233.723 82.999 m 233.723 83.343 l 233.129 83.343 232.848 83.343 232.848 83.686 c 232.848 85.827 l 232.848 86.78 232.848 87.139 232.488 87.53 c 232.332 87.733 231.973 87.952 231.316 87.952 c 230.504 87.952 229.973 87.468 229.66 86.78 c 229.66 87.952 l 228.082 87.827 l 228.082 87.483 l 228.863 87.483 228.957 87.405 228.957 86.858 c 228.957 83.843 l 228.957 83.343 228.832 83.343 228.082 83.343 c 228.082 82.999 l 229.348 83.03 l 230.598 82.999 l 230.598 83.343 l 229.848 83.343 229.723 83.343 229.723 83.843 c 229.723 85.905 l 229.723 87.077 230.52 87.702 231.238 87.702 c 231.941 87.702 232.066 87.093 232.066 86.468 c 232.066 83.843 l 232.066 83.343 231.941 83.343 231.191 83.343 c 231.191 82.999 l 232.457 83.03 l h 236.113 83.593 m 236.113 83.921 235.832 84.186 235.52 84.186 c 235.191 84.186 234.926 83.921 234.926 83.593 c 234.926 83.264 235.191 82.999 235.52 82.999 c 235.832 82.999 236.113 83.264 236.113 83.593 c h f 161.531 68.999 m 161.531 69.343 l 161.266 69.343 l 160.406 69.343 160.375 69.468 160.375 69.874 c 160.375 75.78 l 160.375 76.186 160.406 76.296 161.266 76.296 c 161.531 76.296 l 161.531 76.655 l 159.641 76.655 l 159.344 76.655 159.344 76.639 159.266 76.436 c 156.812 70.124 l 154.391 76.405 l 154.281 76.655 154.25 76.655 154 76.655 c 152.109 76.655 l 152.109 76.296 l 152.375 76.296 l 153.234 76.296 153.25 76.186 153.25 75.78 c 153.25 70.171 l 153.25 69.874 153.25 69.343 152.109 69.343 c 152.109 68.999 l 153.406 69.03 l 154.719 68.999 l 154.719 69.343 l 153.562 69.343 153.562 69.874 153.562 70.171 c 153.562 76.218 l 153.578 76.218 l 156.281 69.249 l 156.344 69.093 156.391 68.999 156.5 68.999 c 156.625 68.999 156.656 69.093 156.703 69.218 c 159.469 76.296 l 159.469 69.874 l 159.469 69.468 159.453 69.343 158.594 69.343 c 158.312 69.343 l 158.312 68.999 l 158.734 69.03 159.5 69.03 159.938 69.03 c 160.375 69.03 161.125 69.03 161.531 68.999 c h 167.375 69.999 m 167.375 70.624 l 167.094 70.624 l 167.094 69.999 l 167.094 69.343 166.812 69.28 166.703 69.28 c 166.328 69.28 166.281 69.78 166.281 69.843 c 166.281 72.077 l 166.281 72.546 166.281 72.983 165.875 73.405 c 165.438 73.843 164.875 74.014 164.344 74.014 c 163.422 74.014 162.656 73.499 162.656 72.749 c 162.656 72.421 162.875 72.218 163.172 72.218 c 163.484 72.218 163.688 72.452 163.688 72.733 c 163.688 72.874 163.625 73.249 163.109 73.249 c 163.406 73.655 163.969 73.764 164.328 73.764 c 164.875 73.764 165.516 73.327 165.516 72.343 c 165.516 71.921 l 164.938 71.889 164.156 71.858 163.453 71.514 c 162.609 71.139 162.328 70.561 162.328 70.061 c 162.328 69.155 163.406 68.874 164.125 68.874 c 164.859 68.874 165.375 69.327 165.594 69.843 c 165.625 69.405 165.938 68.936 166.469 68.936 c 166.703 68.936 167.375 69.093 167.375 69.999 c h 165.516 70.561 m 165.516 69.499 164.703 69.124 164.203 69.124 c 163.656 69.124 163.188 69.514 163.188 70.077 c 163.188 70.686 163.656 71.624 165.516 71.686 c h 172.223 70.327 m 172.223 70.436 172.129 70.468 172.066 70.468 c 171.973 70.468 171.941 70.405 171.926 70.311 c 171.535 69.155 170.52 69.155 170.41 69.155 c 169.848 69.155 169.41 69.499 169.145 69.905 c 168.816 70.436 168.816 71.186 168.816 71.593 c 171.941 71.593 l 172.176 71.593 172.223 71.593 172.223 71.827 c 172.223 72.936 171.613 74.014 170.207 74.014 c 168.91 74.014 167.879 72.858 167.879 71.468 c 167.879 69.968 169.051 68.874 170.348 68.874 c 171.707 68.874 172.223 70.124 172.223 70.327 c h 171.473 71.827 m 168.816 71.827 l 168.895 73.499 169.832 73.764 170.207 73.764 c 171.363 73.764 171.473 72.264 171.473 71.827 c h 177.191 70.327 m 177.191 70.436 177.066 70.436 177.035 70.436 c 176.941 70.436 176.91 70.405 176.895 70.327 c 176.566 69.296 175.848 69.155 175.426 69.155 c 174.832 69.155 173.848 69.639 173.848 71.436 c 173.848 73.264 174.77 73.733 175.363 73.733 c 175.457 73.733 176.16 73.733 176.551 73.327 c 176.098 73.296 176.035 72.952 176.035 72.811 c 176.035 72.514 176.238 72.296 176.551 72.296 c 176.832 72.296 177.066 72.483 177.066 72.811 c 177.066 73.577 176.207 74.014 175.348 74.014 c 173.941 74.014 172.91 72.811 172.91 71.421 c 172.91 69.983 174.02 68.874 175.332 68.874 c 176.832 68.874 177.191 70.218 177.191 70.327 c h 182.156 70.327 m 182.156 70.436 182.062 70.468 182 70.468 c 181.906 70.468 181.875 70.405 181.859 70.311 c 181.469 69.155 180.453 69.155 180.344 69.155 c 179.781 69.155 179.344 69.499 179.078 69.905 c 178.75 70.436 178.75 71.186 178.75 71.593 c 181.875 71.593 l 182.109 71.593 182.156 71.593 182.156 71.827 c 182.156 72.936 181.547 74.014 180.141 74.014 c 178.844 74.014 177.812 72.858 177.812 71.468 c 177.812 69.968 178.984 68.874 180.281 68.874 c 181.641 68.874 182.156 70.124 182.156 70.327 c h 181.406 71.827 m 178.75 71.827 l 178.828 73.499 179.766 73.764 180.141 73.764 c 181.297 73.764 181.406 72.264 181.406 71.827 c h 188.465 68.999 m 188.465 69.343 l 187.871 69.343 187.59 69.343 187.59 69.686 c 187.59 71.827 l 187.59 72.78 187.59 73.139 187.23 73.53 c 187.074 73.733 186.715 73.952 186.059 73.952 c 185.246 73.952 184.715 73.468 184.402 72.78 c 184.402 73.952 l 182.824 73.827 l 182.824 73.483 l 183.605 73.483 183.699 73.405 183.699 72.858 c 183.699 69.843 l 183.699 69.343 183.574 69.343 182.824 69.343 c 182.824 68.999 l 184.09 69.03 l 185.34 68.999 l 185.34 69.343 l 184.59 69.343 184.465 69.343 184.465 69.843 c 184.465 71.905 l 184.465 73.077 185.262 73.702 185.98 73.702 c 186.684 73.702 186.809 73.093 186.809 72.468 c 186.809 69.843 l 186.809 69.343 186.684 69.343 185.934 69.343 c 185.934 68.999 l 187.199 69.03 l h 194.105 69.999 m 194.105 70.624 l 193.824 70.624 l 193.824 69.999 l 193.824 69.343 193.543 69.28 193.434 69.28 c 193.059 69.28 193.012 69.78 193.012 69.843 c 193.012 72.077 l 193.012 72.546 193.012 72.983 192.605 73.405 c 192.168 73.843 191.605 74.014 191.074 74.014 c 190.152 74.014 189.387 73.499 189.387 72.749 c 189.387 72.421 189.605 72.218 189.902 72.218 c 190.215 72.218 190.418 72.452 190.418 72.733 c 190.418 72.874 190.355 73.249 189.84 73.249 c 190.137 73.655 190.699 73.764 191.059 73.764 c 191.605 73.764 192.246 73.327 192.246 72.343 c 192.246 71.921 l 191.668 71.889 190.887 71.858 190.184 71.514 c 189.34 71.139 189.059 70.561 189.059 70.061 c 189.059 69.155 190.137 68.874 190.855 68.874 c 191.59 68.874 192.105 69.327 192.324 69.843 c 192.355 69.405 192.668 68.936 193.199 68.936 c 193.434 68.936 194.105 69.093 194.105 69.999 c h 192.246 70.561 m 192.246 69.499 191.434 69.124 190.934 69.124 c 190.387 69.124 189.918 69.514 189.918 70.077 c 189.918 70.686 190.387 71.624 192.246 71.686 c h 198.332 70.436 m 198.332 71.03 198.004 71.358 197.863 71.499 c 197.488 71.858 197.051 71.952 196.582 72.03 c 195.957 72.155 195.207 72.311 195.207 72.952 c 195.207 73.343 195.504 73.811 196.457 73.811 c 197.691 73.811 197.754 72.796 197.77 72.452 c 197.785 72.343 197.91 72.343 197.91 72.343 c 198.051 72.343 198.051 72.405 198.051 72.624 c 198.051 73.749 l 198.051 73.936 198.051 74.014 197.926 74.014 c 197.879 74.014 197.848 74.014 197.707 73.889 c 197.676 73.843 197.566 73.733 197.52 73.702 c 197.098 74.014 196.629 74.014 196.457 74.014 c 195.098 74.014 194.676 73.264 194.676 72.639 c 194.676 72.249 194.848 71.936 195.145 71.686 c 195.504 71.389 195.832 71.327 196.629 71.171 c 196.879 71.124 197.801 70.952 197.801 70.139 c 197.801 69.577 197.41 69.124 196.535 69.124 c 195.582 69.124 195.191 69.764 194.973 70.718 c 194.941 70.858 194.926 70.905 194.816 70.905 c 194.676 70.905 194.676 70.827 194.676 70.624 c 194.676 69.139 l 194.676 68.952 194.676 68.874 194.801 68.874 c 194.848 68.874 194.863 68.889 195.066 69.093 c 195.098 69.124 195.098 69.139 195.301 69.358 c 195.785 68.889 196.301 68.874 196.535 68.874 c 197.816 68.874 198.332 69.624 198.332 70.436 c h 205.316 68.999 m 205.316 69.343 l 204.566 69.343 204.441 69.343 204.441 69.843 c 204.441 76.78 l 202.832 76.655 l 202.832 76.296 l 203.613 76.296 203.707 76.218 203.707 75.671 c 203.707 69.843 l 203.707 69.343 203.582 69.343 202.832 69.343 c 202.832 68.999 l 204.066 69.03 l h 210.223 70.327 m 210.223 70.436 210.129 70.468 210.066 70.468 c 209.973 70.468 209.941 70.405 209.926 70.311 c 209.535 69.155 208.52 69.155 208.41 69.155 c 207.848 69.155 207.41 69.499 207.145 69.905 c 206.816 70.436 206.816 71.186 206.816 71.593 c 209.941 71.593 l 210.176 71.593 210.223 71.593 210.223 71.827 c 210.223 72.936 209.613 74.014 208.207 74.014 c 206.91 74.014 205.879 72.858 205.879 71.468 c 205.879 69.968 207.051 68.874 208.348 68.874 c 209.707 68.874 210.223 70.124 210.223 70.327 c h 209.473 71.827 m 206.816 71.827 l 206.895 73.499 207.832 73.764 208.207 73.764 c 209.363 73.764 209.473 72.264 209.473 71.827 c h 216.438 68.999 m 216.438 69.343 l 215.656 69.343 215.562 69.421 215.562 69.968 c 215.562 76.78 l 213.953 76.655 l 213.953 76.296 l 214.734 76.296 214.828 76.218 214.828 75.671 c 214.828 73.249 l 214.5 73.655 214.016 73.952 213.406 73.952 c 212.094 73.952 210.906 72.858 210.906 71.405 c 210.906 69.983 212.016 68.874 213.281 68.874 c 214 68.874 214.516 69.249 214.781 69.608 c 214.781 68.874 l h 214.781 70.327 m 214.781 70.124 214.781 70.093 214.672 69.905 c 214.328 69.374 213.828 69.124 213.344 69.124 c 212.844 69.124 212.438 69.421 212.172 69.843 c 211.875 70.296 211.844 70.936 211.844 71.389 c 211.844 71.811 211.859 72.483 212.188 72.983 c 212.422 73.327 212.844 73.702 213.453 73.702 c 213.844 73.702 214.312 73.53 214.672 73.03 c 214.781 72.843 214.781 72.811 214.781 72.624 c h 222.047 71.389 m 222.047 72.827 220.922 74.014 219.562 74.014 c 218.172 74.014 217.078 72.796 217.078 71.389 c 217.078 69.952 218.25 68.874 219.562 68.874 c 220.906 68.874 222.047 69.968 222.047 71.389 c h 221.109 71.483 m 221.109 71.077 221.109 70.483 220.859 69.983 c 220.625 69.483 220.125 69.155 219.562 69.155 c 219.078 69.155 218.594 69.389 218.297 69.905 c 218.016 70.405 218.016 71.077 218.016 71.483 c 218.016 71.921 218.016 72.53 218.281 73.014 c 218.578 73.53 219.109 73.764 219.562 73.764 c 220.047 73.764 220.531 73.53 220.828 73.046 c 221.109 72.561 221.109 71.905 221.109 71.483 c h 232.012 68.999 m 232.012 69.343 l 231.23 69.343 231.137 69.421 231.137 69.968 c 231.137 76.78 l 229.527 76.655 l 229.527 76.296 l 230.309 76.296 230.402 76.218 230.402 75.671 c 230.402 73.249 l 230.074 73.655 229.59 73.952 228.98 73.952 c 227.668 73.952 226.48 72.858 226.48 71.405 c 226.48 69.983 227.59 68.874 228.855 68.874 c 229.574 68.874 230.09 69.249 230.355 69.608 c 230.355 68.874 l h 230.355 70.327 m 230.355 70.124 230.355 70.093 230.246 69.905 c 229.902 69.374 229.402 69.124 228.918 69.124 c 228.418 69.124 228.012 69.421 227.746 69.843 c 227.449 70.296 227.418 70.936 227.418 71.389 c 227.418 71.811 227.434 72.483 227.762 72.983 c 227.996 73.327 228.418 73.702 229.027 73.702 c 229.418 73.702 229.887 73.53 230.246 73.03 c 230.355 72.843 230.355 72.811 230.355 72.624 c h 237.621 71.389 m 237.621 72.827 236.496 74.014 235.137 74.014 c 233.746 74.014 232.652 72.796 232.652 71.389 c 232.652 69.952 233.824 68.874 235.137 68.874 c 236.48 68.874 237.621 69.968 237.621 71.389 c h 236.684 71.483 m 236.684 71.077 236.684 70.483 236.434 69.983 c 236.199 69.483 235.699 69.155 235.137 69.155 c 234.652 69.155 234.168 69.389 233.871 69.905 c 233.59 70.405 233.59 71.077 233.59 71.483 c 233.59 71.921 233.59 72.53 233.855 73.014 c 234.152 73.53 234.684 73.764 235.137 73.764 c 235.621 73.764 236.105 73.53 236.402 73.046 c 236.684 72.561 236.684 71.905 236.684 71.483 c h 240.801 68.999 m 240.801 69.343 l 240.051 69.343 239.926 69.343 239.926 69.843 c 239.926 76.78 l 238.316 76.655 l 238.316 76.296 l 239.098 76.296 239.191 76.218 239.191 75.671 c 239.191 69.843 l 239.191 69.343 239.066 69.343 238.316 69.343 c 238.316 68.999 l 239.551 69.03 l h 246.328 71.389 m 246.328 72.827 245.203 74.014 243.844 74.014 c 242.453 74.014 241.359 72.796 241.359 71.389 c 241.359 69.952 242.531 68.874 243.844 68.874 c 245.188 68.874 246.328 69.968 246.328 71.389 c h 245.391 71.483 m 245.391 71.077 245.391 70.483 245.141 69.983 c 244.906 69.483 244.406 69.155 243.844 69.155 c 243.359 69.155 242.875 69.389 242.578 69.905 c 242.297 70.405 242.297 71.077 242.297 71.483 c 242.297 71.921 242.297 72.53 242.562 73.014 c 242.859 73.53 243.391 73.764 243.844 73.764 c 244.328 73.764 244.812 73.53 245.109 73.046 c 245.391 72.561 245.391 71.905 245.391 71.483 c h 250.723 73.264 m 250.723 73.624 250.379 73.952 249.895 73.952 c 249.082 73.952 248.676 73.202 248.52 72.718 c 248.52 73.952 l 246.957 73.827 l 246.957 73.483 l 247.738 73.483 247.832 73.405 247.832 72.858 c 247.832 69.843 l 247.832 69.343 247.707 69.343 246.957 69.343 c 246.957 68.999 l 248.238 69.03 l 248.676 69.03 249.207 69.03 249.66 68.999 c 249.66 69.343 l 249.426 69.343 l 248.598 69.343 248.566 69.468 248.566 69.874 c 248.566 71.593 l 248.566 72.702 249.035 73.702 249.895 73.702 c 249.973 73.702 249.988 73.702 250.02 73.686 c 249.988 73.686 249.754 73.546 249.754 73.249 c 249.754 72.936 249.988 72.78 250.238 72.78 c 250.441 72.78 250.723 72.905 250.723 73.264 c h 253.324 69.014 m 253.324 69.733 253.043 70.186 252.605 70.186 c 252.215 70.186 252.012 69.889 252.012 69.593 c 252.012 69.296 252.199 68.999 252.605 68.999 c 252.762 68.999 252.918 69.061 253.043 69.171 c 253.074 68.296 252.762 67.608 252.262 67.077 c 252.199 67.014 252.184 66.999 252.184 66.968 c 252.184 66.874 252.246 66.843 252.293 66.843 c 252.434 66.843 253.324 67.718 253.324 69.014 c h f 157.531 57.421 m 157.531 58.843 156.438 59.952 155.188 59.952 c 154.312 59.952 153.844 59.452 153.609 59.218 c 153.609 59.952 l 152 59.827 l 152 59.483 l 152.797 59.483 152.875 59.405 152.875 58.921 c 152.875 53.671 l 152.875 53.171 152.75 53.171 152 53.171 c 152 52.827 l 153.25 52.858 l 154.516 52.827 l 154.516 53.171 l 153.766 53.171 153.641 53.171 153.641 53.671 c 153.641 55.655 l 153.703 55.483 154.172 54.874 155.031 54.874 c 156.359 54.874 157.531 55.968 157.531 57.421 c h 156.594 57.421 m 156.594 56.061 155.812 55.124 154.984 55.124 c 154.531 55.124 154.109 55.343 153.812 55.811 c 153.641 56.046 153.641 56.046 153.641 56.28 c 153.641 58.78 l 153.969 59.343 154.516 59.671 155.094 59.671 c 155.906 59.671 156.594 58.686 156.594 57.421 c h 163.922 54.999 m 163.922 55.343 l 163.328 55.343 163.047 55.343 163.047 55.686 c 163.047 57.827 l 163.047 58.78 163.047 59.139 162.688 59.53 c 162.531 59.733 162.172 59.952 161.516 59.952 c 160.578 59.952 160.078 59.28 159.906 58.874 c 159.891 58.874 l 159.891 62.78 l 158.281 62.655 l 158.281 62.296 l 159.062 62.296 159.156 62.218 159.156 61.671 c 159.156 55.843 l 159.156 55.343 159.031 55.343 158.281 55.343 c 158.281 54.999 l 159.547 55.03 l 160.797 54.999 l 160.797 55.343 l 160.047 55.343 159.922 55.343 159.922 55.843 c 159.922 57.905 l 159.922 59.077 160.719 59.702 161.438 59.702 c 162.141 59.702 162.266 59.093 162.266 58.468 c 162.266 55.843 l 162.266 55.343 162.141 55.343 161.391 55.343 c 161.391 54.999 l 162.656 55.03 l h 169.562 55.999 m 169.562 56.624 l 169.281 56.624 l 169.281 55.999 l 169.281 55.343 169 55.28 168.891 55.28 c 168.516 55.28 168.469 55.78 168.469 55.843 c 168.469 58.077 l 168.469 58.546 168.469 58.983 168.062 59.405 c 167.625 59.843 167.062 60.014 166.531 60.014 c 165.609 60.014 164.844 59.499 164.844 58.749 c 164.844 58.421 165.062 58.218 165.359 58.218 c 165.672 58.218 165.875 58.452 165.875 58.733 c 165.875 58.874 165.812 59.249 165.297 59.249 c 165.594 59.655 166.156 59.764 166.516 59.764 c 167.062 59.764 167.703 59.327 167.703 58.343 c 167.703 57.921 l 167.125 57.889 166.344 57.858 165.641 57.514 c 164.797 57.139 164.516 56.561 164.516 56.061 c 164.516 55.155 165.594 54.874 166.312 54.874 c 167.047 54.874 167.562 55.327 167.781 55.843 c 167.812 55.405 168.125 54.936 168.656 54.936 c 168.891 54.936 169.562 55.093 169.562 55.999 c h 167.703 56.561 m 167.703 55.499 166.891 55.124 166.391 55.124 c 165.844 55.124 165.375 55.514 165.375 56.077 c 165.375 56.686 165.844 57.624 167.703 57.686 c h 173.832 59.264 m 173.832 59.624 173.488 59.952 173.004 59.952 c 172.191 59.952 171.785 59.202 171.629 58.718 c 171.629 59.952 l 170.066 59.827 l 170.066 59.483 l 170.848 59.483 170.941 59.405 170.941 58.858 c 170.941 55.843 l 170.941 55.343 170.816 55.343 170.066 55.343 c 170.066 54.999 l 171.348 55.03 l 171.785 55.03 172.316 55.03 172.77 54.999 c 172.77 55.343 l 172.535 55.343 l 171.707 55.343 171.676 55.468 171.676 55.874 c 171.676 57.593 l 171.676 58.702 172.145 59.702 173.004 59.702 c 173.082 59.702 173.098 59.702 173.129 59.686 c 173.098 59.686 172.863 59.546 172.863 59.249 c 172.863 58.936 173.098 58.78 173.348 58.78 c 173.551 58.78 173.832 58.905 173.832 59.264 c h 178.809 56.327 m 178.809 56.436 178.715 56.468 178.652 56.468 c 178.559 56.468 178.527 56.405 178.512 56.311 c 178.121 55.155 177.105 55.155 176.996 55.155 c 176.434 55.155 175.996 55.499 175.73 55.905 c 175.402 56.436 175.402 57.186 175.402 57.593 c 178.527 57.593 l 178.762 57.593 178.809 57.593 178.809 57.827 c 178.809 58.936 178.199 60.014 176.793 60.014 c 175.496 60.014 174.465 58.858 174.465 57.468 c 174.465 55.968 175.637 54.874 176.934 54.874 c 178.293 54.874 178.809 56.124 178.809 56.327 c h 178.059 57.827 m 175.402 57.827 l 175.48 59.499 176.418 59.764 176.793 59.764 c 177.949 59.764 178.059 58.264 178.059 57.827 c h 182.836 56.389 m 182.836 57.03 l 182.555 57.03 l 182.555 56.405 l 182.555 55.577 182.227 55.155 181.805 55.155 c 181.055 55.155 181.055 56.171 181.055 56.358 c 181.055 59.483 l 182.664 59.483 l 182.664 59.827 l 181.055 59.827 l 181.055 61.889 l 180.773 61.889 l 180.758 60.968 180.43 59.764 179.336 59.733 c 179.336 59.483 l 180.289 59.483 l 180.289 56.389 l 180.289 55.014 181.32 54.874 181.727 54.874 c 182.523 54.874 182.836 55.671 182.836 56.389 c h 187.551 59.264 m 187.551 59.624 187.207 59.952 186.723 59.952 c 185.91 59.952 185.504 59.202 185.348 58.718 c 185.348 59.952 l 183.785 59.827 l 183.785 59.483 l 184.566 59.483 184.66 59.405 184.66 58.858 c 184.66 55.843 l 184.66 55.343 184.535 55.343 183.785 55.343 c 183.785 54.999 l 185.066 55.03 l 185.504 55.03 186.035 55.03 186.488 54.999 c 186.488 55.343 l 186.254 55.343 l 185.426 55.343 185.395 55.468 185.395 55.874 c 185.395 57.593 l 185.395 58.702 185.863 59.702 186.723 59.702 c 186.801 59.702 186.816 59.702 186.848 59.686 c 186.816 59.686 186.582 59.546 186.582 59.249 c 186.582 58.936 186.816 58.78 187.066 58.78 c 187.27 58.78 187.551 58.905 187.551 59.264 c h 193.273 55.999 m 193.273 56.624 l 192.992 56.624 l 192.992 55.999 l 192.992 55.343 192.711 55.28 192.602 55.28 c 192.227 55.28 192.18 55.78 192.18 55.843 c 192.18 58.077 l 192.18 58.546 192.18 58.983 191.773 59.405 c 191.336 59.843 190.773 60.014 190.242 60.014 c 189.32 60.014 188.555 59.499 188.555 58.749 c 188.555 58.421 188.773 58.218 189.07 58.218 c 189.383 58.218 189.586 58.452 189.586 58.733 c 189.586 58.874 189.523 59.249 189.008 59.249 c 189.305 59.655 189.867 59.764 190.227 59.764 c 190.773 59.764 191.414 59.327 191.414 58.343 c 191.414 57.921 l 190.836 57.889 190.055 57.858 189.352 57.514 c 188.508 57.139 188.227 56.561 188.227 56.061 c 188.227 55.155 189.305 54.874 190.023 54.874 c 190.758 54.874 191.273 55.327 191.492 55.843 c 191.523 55.405 191.836 54.936 192.367 54.936 c 192.602 54.936 193.273 55.093 193.273 55.999 c h 191.414 56.561 m 191.414 55.499 190.602 55.124 190.102 55.124 c 189.555 55.124 189.086 55.514 189.086 56.077 c 189.086 56.686 189.555 57.624 191.414 57.686 c h 195.625 55.593 m 195.625 55.921 195.344 56.186 195.031 56.186 c 194.703 56.186 194.438 55.921 194.438 55.593 c 194.438 55.264 194.703 54.999 195.031 54.999 c 195.344 54.999 195.625 55.264 195.625 55.593 c h f 327.703 230.296 m 327.703 230.655 l 326.391 230.624 l 325.047 230.655 l 325.047 230.296 l 326.203 230.296 326.203 229.78 326.203 229.468 c 326.203 225.593 l 326.203 223.999 325.125 223.093 324.062 223.093 c 323.531 223.093 322.203 223.374 322.203 225.514 c 322.203 229.78 l 322.203 230.186 322.234 230.296 323.094 230.296 c 323.359 230.296 l 323.359 230.655 l 322.969 230.624 322.141 230.624 321.719 230.624 c 321.297 230.624 320.453 230.624 320.062 230.655 c 320.062 230.296 l 320.328 230.296 l 321.188 230.296 321.219 230.186 321.219 229.78 c 321.219 225.546 l 321.219 223.968 322.516 222.749 324.031 222.749 c 325.328 222.749 326.328 223.796 326.516 225.077 c 326.562 225.296 326.562 225.389 326.562 225.843 c 326.562 229.436 l 326.562 229.796 326.562 230.296 327.703 230.296 c h 331.805 224.389 m 331.805 225.03 l 331.523 225.03 l 331.523 224.405 l 331.523 223.577 331.195 223.155 330.773 223.155 c 330.023 223.155 330.023 224.171 330.023 224.358 c 330.023 227.483 l 331.633 227.483 l 331.633 227.827 l 330.023 227.827 l 330.023 229.889 l 329.742 229.889 l 329.727 228.968 329.398 227.764 328.305 227.733 c 328.305 227.483 l 329.258 227.483 l 329.258 224.389 l 329.258 223.014 330.289 222.874 330.695 222.874 c 331.492 222.874 331.805 223.671 331.805 224.389 c h 340.836 224.327 m 340.836 224.436 340.742 224.468 340.68 224.468 c 340.586 224.468 340.555 224.405 340.539 224.311 c 340.148 223.155 339.133 223.155 339.023 223.155 c 338.461 223.155 338.023 223.499 337.758 223.905 c 337.43 224.436 337.43 225.186 337.43 225.593 c 340.555 225.593 l 340.789 225.593 340.836 225.593 340.836 225.827 c 340.836 226.936 340.227 228.014 338.82 228.014 c 337.523 228.014 336.492 226.858 336.492 225.468 c 336.492 223.968 337.664 222.874 338.961 222.874 c 340.32 222.874 340.836 224.124 340.836 224.327 c h 340.086 225.827 m 337.43 225.827 l 337.508 227.499 338.445 227.764 338.82 227.764 c 339.977 227.764 340.086 226.264 340.086 225.827 c h 345.223 227.264 m 345.223 227.624 344.879 227.952 344.395 227.952 c 343.582 227.952 343.176 227.202 343.02 226.718 c 343.02 227.952 l 341.457 227.827 l 341.457 227.483 l 342.238 227.483 342.332 227.405 342.332 226.858 c 342.332 223.843 l 342.332 223.343 342.207 223.343 341.457 223.343 c 341.457 222.999 l 342.738 223.03 l 343.176 223.03 343.707 223.03 344.16 222.999 c 344.16 223.343 l 343.926 223.343 l 343.098 223.343 343.066 223.468 343.066 223.874 c 343.066 225.593 l 343.066 226.702 343.535 227.702 344.395 227.702 c 344.473 227.702 344.488 227.702 344.52 227.686 c 344.488 227.686 344.254 227.546 344.254 227.249 c 344.254 226.936 344.488 226.78 344.738 226.78 c 344.941 226.78 345.223 226.905 345.223 227.264 c h 350.949 223.999 m 350.949 224.624 l 350.668 224.624 l 350.668 223.999 l 350.668 223.343 350.387 223.28 350.277 223.28 c 349.902 223.28 349.855 223.78 349.855 223.843 c 349.855 226.077 l 349.855 226.546 349.855 226.983 349.449 227.405 c 349.012 227.843 348.449 228.014 347.918 228.014 c 346.996 228.014 346.23 227.499 346.23 226.749 c 346.23 226.421 346.449 226.218 346.746 226.218 c 347.059 226.218 347.262 226.452 347.262 226.733 c 347.262 226.874 347.199 227.249 346.684 227.249 c 346.98 227.655 347.543 227.764 347.902 227.764 c 348.449 227.764 349.09 227.327 349.09 226.343 c 349.09 225.921 l 348.512 225.889 347.73 225.858 347.027 225.514 c 346.184 225.139 345.902 224.561 345.902 224.061 c 345.902 223.155 346.98 222.874 347.699 222.874 c 348.434 222.874 348.949 223.327 349.168 223.843 c 349.199 223.405 349.512 222.936 350.043 222.936 c 350.277 222.936 350.949 223.093 350.949 223.999 c h 349.09 224.561 m 349.09 223.499 348.277 223.124 347.777 223.124 c 347.23 223.124 346.762 223.514 346.762 224.077 c 346.762 224.686 347.23 225.624 349.09 225.686 c h 354.863 224.389 m 354.863 225.03 l 354.582 225.03 l 354.582 224.405 l 354.582 223.577 354.254 223.155 353.832 223.155 c 353.082 223.155 353.082 224.171 353.082 224.358 c 353.082 227.483 l 354.691 227.483 l 354.691 227.827 l 353.082 227.827 l 353.082 229.889 l 352.801 229.889 l 352.785 228.968 352.457 227.764 351.363 227.733 c 351.363 227.483 l 352.316 227.483 l 352.316 224.389 l 352.316 223.014 353.348 222.874 353.754 222.874 c 354.551 222.874 354.863 223.671 354.863 224.389 c h 365.145 222.999 m 365.145 223.343 l 364.363 223.343 364.27 223.421 364.27 223.968 c 364.27 230.78 l 362.66 230.655 l 362.66 230.296 l 363.441 230.296 363.535 230.218 363.535 229.671 c 363.535 227.249 l 363.207 227.655 362.723 227.952 362.113 227.952 c 360.801 227.952 359.613 226.858 359.613 225.405 c 359.613 223.983 360.723 222.874 361.988 222.874 c 362.707 222.874 363.223 223.249 363.488 223.608 c 363.488 222.874 l h 363.488 224.327 m 363.488 224.124 363.488 224.093 363.379 223.905 c 363.035 223.374 362.535 223.124 362.051 223.124 c 361.551 223.124 361.145 223.421 360.879 223.843 c 360.582 224.296 360.551 224.936 360.551 225.389 c 360.551 225.811 360.566 226.483 360.895 226.983 c 361.129 227.327 361.551 227.702 362.16 227.702 c 362.551 227.702 363.02 227.53 363.379 227.03 c 363.488 226.843 363.488 226.811 363.488 226.624 c h 371.473 222.999 m 371.473 223.343 l 370.676 223.343 370.598 223.421 370.598 223.968 c 370.598 227.952 l 368.941 227.827 l 368.941 227.483 l 369.723 227.483 369.816 227.405 369.816 226.858 c 369.816 224.858 l 369.816 223.889 369.285 223.124 368.457 223.124 c 367.52 223.124 367.473 223.655 367.473 224.233 c 367.473 227.952 l 365.832 227.827 l 365.832 227.483 l 366.707 227.483 366.707 227.452 366.707 226.452 c 366.707 224.764 l 366.707 223.889 366.707 222.874 368.41 222.874 c 369.035 222.874 369.535 223.186 369.848 223.889 c 369.848 222.874 l h 374.473 222.999 m 374.473 223.343 l 373.738 223.343 373.691 223.405 373.691 223.843 c 373.691 227.952 l 372.129 227.827 l 372.129 227.483 l 372.848 227.483 372.957 227.405 372.957 226.858 c 372.957 223.843 l 372.957 223.343 372.832 223.343 372.082 223.343 c 372.082 222.999 l 373.316 223.03 l 373.707 223.03 374.098 223.014 374.473 222.999 c h 373.863 229.764 m 373.863 230.061 373.598 230.358 373.27 230.358 c 372.879 230.358 372.66 230.046 372.66 229.764 c 372.66 229.468 372.91 229.171 373.254 229.171 c 373.629 229.171 373.863 229.483 373.863 229.764 c h 377.094 223.014 m 377.094 223.733 376.812 224.186 376.375 224.186 c 375.984 224.186 375.781 223.889 375.781 223.593 c 375.781 223.296 375.969 222.999 376.375 222.999 c 376.531 222.999 376.688 223.061 376.812 223.171 c 376.844 222.296 376.531 221.608 376.031 221.077 c 375.969 221.014 375.953 220.999 375.953 220.968 c 375.953 220.874 376.016 220.843 376.062 220.843 c 376.203 220.843 377.094 221.718 377.094 223.014 c h 387.504 225.421 m 387.504 226.843 386.41 227.952 385.16 227.952 c 384.285 227.952 383.816 227.452 383.582 227.218 c 383.582 227.952 l 381.973 227.827 l 381.973 227.483 l 382.77 227.483 382.848 227.405 382.848 226.921 c 382.848 221.671 l 382.848 221.171 382.723 221.171 381.973 221.171 c 381.973 220.827 l 383.223 220.858 l 384.488 220.827 l 384.488 221.171 l 383.738 221.171 383.613 221.171 383.613 221.671 c 383.613 223.655 l 383.676 223.483 384.145 222.874 385.004 222.874 c 386.332 222.874 387.504 223.968 387.504 225.421 c h 386.566 225.421 m 386.566 224.061 385.785 223.124 384.957 223.124 c 384.504 223.124 384.082 223.343 383.785 223.811 c 383.613 224.046 383.613 224.046 383.613 224.28 c 383.613 226.78 l 383.941 227.343 384.488 227.671 385.066 227.671 c 385.879 227.671 386.566 226.686 386.566 225.421 c h 393.176 225.389 m 393.176 226.827 392.051 228.014 390.691 228.014 c 389.301 228.014 388.207 226.796 388.207 225.389 c 388.207 223.952 389.379 222.874 390.691 222.874 c 392.035 222.874 393.176 223.968 393.176 225.389 c h 392.238 225.483 m 392.238 225.077 392.238 224.483 391.988 223.983 c 391.754 223.483 391.254 223.155 390.691 223.155 c 390.207 223.155 389.723 223.389 389.426 223.905 c 389.145 224.405 389.145 225.077 389.145 225.483 c 389.145 225.921 389.145 226.53 389.41 227.014 c 389.707 227.53 390.238 227.764 390.691 227.764 c 391.176 227.764 391.66 227.53 391.957 227.046 c 392.238 226.561 392.238 225.905 392.238 225.483 c h 397.57 227.264 m 397.57 227.624 397.227 227.952 396.742 227.952 c 395.93 227.952 395.523 227.202 395.367 226.718 c 395.367 227.952 l 393.805 227.827 l 393.805 227.483 l 394.586 227.483 394.68 227.405 394.68 226.858 c 394.68 223.843 l 394.68 223.343 394.555 223.343 393.805 223.343 c 393.805 222.999 l 395.086 223.03 l 395.523 223.03 396.055 223.03 396.508 222.999 c 396.508 223.343 l 396.273 223.343 l 395.445 223.343 395.414 223.468 395.414 223.874 c 395.414 225.593 l 395.414 226.702 395.883 227.702 396.742 227.702 c 396.82 227.702 396.836 227.702 396.867 227.686 c 396.836 227.686 396.602 227.546 396.602 227.249 c 396.602 226.936 396.836 226.78 397.086 226.78 c 397.289 226.78 397.57 226.905 397.57 227.264 c h 401.609 224.389 m 401.609 225.03 l 401.328 225.03 l 401.328 224.405 l 401.328 223.577 401 223.155 400.578 223.155 c 399.828 223.155 399.828 224.171 399.828 224.358 c 399.828 227.483 l 401.438 227.483 l 401.438 227.827 l 399.828 227.827 l 399.828 229.889 l 399.547 229.889 l 399.531 228.968 399.203 227.764 398.109 227.733 c 398.109 227.483 l 399.062 227.483 l 399.062 224.389 l 399.062 223.014 400.094 222.874 400.5 222.874 c 401.297 222.874 401.609 223.671 401.609 224.389 c h 405.961 224.389 m 405.961 225.03 l 405.68 225.03 l 405.68 224.405 l 405.68 223.577 405.352 223.155 404.93 223.155 c 404.18 223.155 404.18 224.171 404.18 224.358 c 404.18 227.483 l 405.789 227.483 l 405.789 227.827 l 404.18 227.827 l 404.18 229.889 l 403.898 229.889 l 403.883 228.968 403.555 227.764 402.461 227.733 c 402.461 227.483 l 403.414 227.483 l 403.414 224.389 l 403.414 223.014 404.445 222.874 404.852 222.874 c 405.648 222.874 405.961 223.671 405.961 224.389 c h 409.363 222.999 m 409.363 223.343 l 408.629 223.343 408.582 223.405 408.582 223.843 c 408.582 227.952 l 407.02 227.827 l 407.02 227.483 l 407.738 227.483 407.848 227.405 407.848 226.858 c 407.848 223.843 l 407.848 223.343 407.723 223.343 406.973 223.343 c 406.973 222.999 l 408.207 223.03 l 408.598 223.03 408.988 223.014 409.363 222.999 c h 408.754 229.764 m 408.754 230.061 408.488 230.358 408.16 230.358 c 407.77 230.358 407.551 230.046 407.551 229.764 c 407.551 229.468 407.801 229.171 408.145 229.171 c 408.52 229.171 408.754 229.483 408.754 229.764 c h 413.422 224.389 m 413.422 225.03 l 413.141 225.03 l 413.141 224.405 l 413.141 223.577 412.812 223.155 412.391 223.155 c 411.641 223.155 411.641 224.171 411.641 224.358 c 411.641 227.483 l 413.25 227.483 l 413.25 227.827 l 411.641 227.827 l 411.641 229.889 l 411.359 229.889 l 411.344 228.968 411.016 227.764 409.922 227.733 c 409.922 227.483 l 410.875 227.483 l 410.875 224.389 l 410.875 223.014 411.906 222.874 412.312 222.874 c 413.109 222.874 413.422 223.671 413.422 224.389 c h 419.336 225.389 m 419.336 226.827 418.211 228.014 416.852 228.014 c 415.461 228.014 414.367 226.796 414.367 225.389 c 414.367 223.952 415.539 222.874 416.852 222.874 c 418.195 222.874 419.336 223.968 419.336 225.389 c h 418.398 225.483 m 418.398 225.077 418.398 224.483 418.148 223.983 c 417.914 223.483 417.414 223.155 416.852 223.155 c 416.367 223.155 415.883 223.389 415.586 223.905 c 415.305 224.405 415.305 225.077 415.305 225.483 c 415.305 225.921 415.305 226.53 415.57 227.014 c 415.867 227.53 416.398 227.764 416.852 227.764 c 417.336 227.764 417.82 227.53 418.117 227.046 c 418.398 226.561 418.398 225.905 418.398 225.483 c h 423.734 227.264 m 423.734 227.624 423.391 227.952 422.906 227.952 c 422.094 227.952 421.688 227.202 421.531 226.718 c 421.531 227.952 l 419.969 227.827 l 419.969 227.483 l 420.75 227.483 420.844 227.405 420.844 226.858 c 420.844 223.843 l 420.844 223.343 420.719 223.343 419.969 223.343 c 419.969 222.999 l 421.25 223.03 l 421.688 223.03 422.219 223.03 422.672 222.999 c 422.672 223.343 l 422.438 223.343 l 421.609 223.343 421.578 223.468 421.578 223.874 c 421.578 225.593 l 421.578 226.702 422.047 227.702 422.906 227.702 c 422.984 227.702 423 227.702 423.031 227.686 c 423 227.686 422.766 227.546 422.766 227.249 c 422.766 226.936 423 226.78 423.25 226.78 c 423.453 226.78 423.734 226.905 423.734 227.264 c h 433.199 223.999 m 433.199 224.624 l 432.918 224.624 l 432.918 223.999 l 432.918 223.343 432.637 223.28 432.527 223.28 c 432.152 223.28 432.105 223.78 432.105 223.843 c 432.105 226.077 l 432.105 226.546 432.105 226.983 431.699 227.405 c 431.262 227.843 430.699 228.014 430.168 228.014 c 429.246 228.014 428.48 227.499 428.48 226.749 c 428.48 226.421 428.699 226.218 428.996 226.218 c 429.309 226.218 429.512 226.452 429.512 226.733 c 429.512 226.874 429.449 227.249 428.934 227.249 c 429.23 227.655 429.793 227.764 430.152 227.764 c 430.699 227.764 431.34 227.327 431.34 226.343 c 431.34 225.921 l 430.762 225.889 429.98 225.858 429.277 225.514 c 428.434 225.139 428.152 224.561 428.152 224.061 c 428.152 223.155 429.23 222.874 429.949 222.874 c 430.684 222.874 431.199 223.327 431.418 223.843 c 431.449 223.405 431.762 222.936 432.293 222.936 c 432.527 222.936 433.199 223.093 433.199 223.999 c h 431.34 224.561 m 431.34 223.499 430.527 223.124 430.027 223.124 c 429.48 223.124 429.012 223.514 429.012 224.077 c 429.012 224.686 429.48 225.624 431.34 225.686 c h 437.113 224.389 m 437.113 225.03 l 436.832 225.03 l 436.832 224.405 l 436.832 223.577 436.504 223.155 436.082 223.155 c 435.332 223.155 435.332 224.171 435.332 224.358 c 435.332 227.483 l 436.941 227.483 l 436.941 227.827 l 435.332 227.827 l 435.332 229.889 l 435.051 229.889 l 435.035 228.968 434.707 227.764 433.613 227.733 c 433.613 227.483 l 434.566 227.483 l 434.566 224.389 l 434.566 223.014 435.598 222.874 436.004 222.874 c 436.801 222.874 437.113 223.671 437.113 224.389 c h f 323.406 210.389 m 323.406 211.03 l 323.125 211.03 l 323.125 210.405 l 323.125 209.577 322.797 209.155 322.375 209.155 c 321.625 209.155 321.625 210.171 321.625 210.358 c 321.625 213.483 l 323.234 213.483 l 323.234 213.827 l 321.625 213.827 l 321.625 215.889 l 321.344 215.889 l 321.328 214.968 321 213.764 319.906 213.733 c 319.906 213.483 l 320.859 213.483 l 320.859 210.389 l 320.859 209.014 321.891 208.874 322.297 208.874 c 323.094 208.874 323.406 209.671 323.406 210.389 c h 328.695 210.327 m 328.695 210.436 328.602 210.468 328.539 210.468 c 328.445 210.468 328.414 210.405 328.398 210.311 c 328.008 209.155 326.992 209.155 326.883 209.155 c 326.32 209.155 325.883 209.499 325.617 209.905 c 325.289 210.436 325.289 211.186 325.289 211.593 c 328.414 211.593 l 328.648 211.593 328.695 211.593 328.695 211.827 c 328.695 212.936 328.086 214.014 326.68 214.014 c 325.383 214.014 324.352 212.858 324.352 211.468 c 324.352 209.968 325.523 208.874 326.82 208.874 c 328.18 208.874 328.695 210.124 328.695 210.327 c h 327.945 211.827 m 325.289 211.827 l 325.367 213.499 326.305 213.764 326.68 213.764 c 327.836 213.764 327.945 212.264 327.945 211.827 c h 338.113 208.999 m 338.113 209.343 l 337.535 209.343 337.254 209.343 337.238 209.686 c 337.238 211.827 l 337.238 212.78 337.238 213.139 336.895 213.53 c 336.738 213.733 336.363 213.952 335.707 213.952 c 334.77 213.952 334.285 213.28 334.098 212.858 c 333.926 213.827 333.098 213.952 332.598 213.952 c 331.785 213.952 331.254 213.468 330.941 212.78 c 330.941 213.952 l 329.363 213.827 l 329.363 213.483 l 330.145 213.483 330.238 213.405 330.238 212.858 c 330.238 209.843 l 330.238 209.343 330.113 209.343 329.363 209.343 c 329.363 208.999 l 330.629 209.03 l 331.879 208.999 l 331.879 209.343 l 331.129 209.343 331.004 209.343 331.004 209.843 c 331.004 211.905 l 331.004 213.077 331.801 213.702 332.52 213.702 c 333.223 213.702 333.348 213.093 333.348 212.468 c 333.348 209.843 l 333.348 209.343 333.223 209.343 332.473 209.343 c 332.473 208.999 l 333.738 209.03 l 335.004 208.999 l 335.004 209.343 l 334.254 209.343 334.129 209.343 334.129 209.843 c 334.129 211.905 l 334.129 213.077 334.926 213.702 335.629 213.702 c 336.348 213.702 336.473 213.093 336.473 212.468 c 336.473 209.843 l 336.473 209.343 336.348 209.343 335.598 209.343 c 335.598 208.999 l 336.863 209.03 l h 344.191 211.421 m 344.191 212.843 343.098 213.952 341.848 213.952 c 340.973 213.952 340.504 213.452 340.27 213.218 c 340.27 213.952 l 338.66 213.827 l 338.66 213.483 l 339.457 213.483 339.535 213.405 339.535 212.921 c 339.535 207.671 l 339.535 207.171 339.41 207.171 338.66 207.171 c 338.66 206.827 l 339.91 206.858 l 341.176 206.827 l 341.176 207.171 l 340.426 207.171 340.301 207.171 340.301 207.671 c 340.301 209.655 l 340.363 209.483 340.832 208.874 341.691 208.874 c 343.02 208.874 344.191 209.968 344.191 211.421 c h 343.254 211.421 m 343.254 210.061 342.473 209.124 341.645 209.124 c 341.191 209.124 340.77 209.343 340.473 209.811 c 340.301 210.046 340.301 210.046 340.301 210.28 c 340.301 212.78 l 340.629 213.343 341.176 213.671 341.754 213.671 c 342.566 213.671 343.254 212.686 343.254 211.421 c h 349.863 211.389 m 349.863 212.827 348.738 214.014 347.379 214.014 c 345.988 214.014 344.895 212.796 344.895 211.389 c 344.895 209.952 346.066 208.874 347.379 208.874 c 348.723 208.874 349.863 209.968 349.863 211.389 c h 348.926 211.483 m 348.926 211.077 348.926 210.483 348.676 209.983 c 348.441 209.483 347.941 209.155 347.379 209.155 c 346.895 209.155 346.41 209.389 346.113 209.905 c 345.832 210.405 345.832 211.077 345.832 211.483 c 345.832 211.921 345.832 212.53 346.098 213.014 c 346.395 213.53 346.926 213.764 347.379 213.764 c 347.863 213.764 348.348 213.53 348.645 213.046 c 348.926 212.561 348.926 211.905 348.926 211.483 c h 354.258 213.264 m 354.258 213.624 353.914 213.952 353.43 213.952 c 352.617 213.952 352.211 213.202 352.055 212.718 c 352.055 213.952 l 350.492 213.827 l 350.492 213.483 l 351.273 213.483 351.367 213.405 351.367 212.858 c 351.367 209.843 l 351.367 209.343 351.242 209.343 350.492 209.343 c 350.492 208.999 l 351.773 209.03 l 352.211 209.03 352.742 209.03 353.195 208.999 c 353.195 209.343 l 352.961 209.343 l 352.133 209.343 352.102 209.468 352.102 209.874 c 352.102 211.593 l 352.102 212.702 352.57 213.702 353.43 213.702 c 353.508 213.702 353.523 213.702 353.555 213.686 c 353.523 213.686 353.289 213.546 353.289 213.249 c 353.289 212.936 353.523 212.78 353.773 212.78 c 353.977 212.78 354.258 212.905 354.258 213.264 c h 364.316 208.999 m 364.316 209.343 l 363.52 209.343 363.441 209.421 363.441 209.968 c 363.441 213.952 l 361.785 213.827 l 361.785 213.483 l 362.566 213.483 362.66 213.405 362.66 212.858 c 362.66 210.858 l 362.66 209.889 362.129 209.124 361.301 209.124 c 360.363 209.124 360.316 209.655 360.316 210.233 c 360.316 213.952 l 358.676 213.827 l 358.676 213.483 l 359.551 213.483 359.551 213.452 359.551 212.452 c 359.551 210.764 l 359.551 209.889 359.551 208.874 361.254 208.874 c 361.879 208.874 362.379 209.186 362.691 209.889 c 362.691 208.874 l h 368.27 210.389 m 368.27 211.03 l 367.988 211.03 l 367.988 210.405 l 367.988 209.577 367.66 209.155 367.238 209.155 c 366.488 209.155 366.488 210.171 366.488 210.358 c 366.488 213.483 l 368.098 213.483 l 368.098 213.827 l 366.488 213.827 l 366.488 215.889 l 366.207 215.889 l 366.191 214.968 365.863 213.764 364.77 213.733 c 364.77 213.483 l 365.723 213.483 l 365.723 210.389 l 365.723 209.014 366.754 208.874 367.16 208.874 c 367.957 208.874 368.27 209.671 368.27 210.389 c h 371.188 209.014 m 371.188 209.733 370.906 210.186 370.469 210.186 c 370.078 210.186 369.875 209.889 369.875 209.593 c 369.875 209.296 370.062 208.999 370.469 208.999 c 370.625 208.999 370.781 209.061 370.906 209.171 c 370.938 208.296 370.625 207.608 370.125 207.077 c 370.062 207.014 370.047 206.999 370.047 206.968 c 370.047 206.874 370.109 206.843 370.156 206.843 c 370.297 206.843 371.188 207.718 371.188 209.014 c h 379.785 210.436 m 379.785 211.03 379.457 211.358 379.316 211.499 c 378.941 211.858 378.504 211.952 378.035 212.03 c 377.41 212.155 376.66 212.311 376.66 212.952 c 376.66 213.343 376.957 213.811 377.91 213.811 c 379.145 213.811 379.207 212.796 379.223 212.452 c 379.238 212.343 379.363 212.343 379.363 212.343 c 379.504 212.343 379.504 212.405 379.504 212.624 c 379.504 213.749 l 379.504 213.936 379.504 214.014 379.379 214.014 c 379.332 214.014 379.301 214.014 379.16 213.889 c 379.129 213.843 379.02 213.733 378.973 213.702 c 378.551 214.014 378.082 214.014 377.91 214.014 c 376.551 214.014 376.129 213.264 376.129 212.639 c 376.129 212.249 376.301 211.936 376.598 211.686 c 376.957 211.389 377.285 211.327 378.082 211.171 c 378.332 211.124 379.254 210.952 379.254 210.139 c 379.254 209.577 378.863 209.124 377.988 209.124 c 377.035 209.124 376.645 209.764 376.426 210.718 c 376.395 210.858 376.379 210.905 376.27 210.905 c 376.129 210.905 376.129 210.827 376.129 210.624 c 376.129 209.139 l 376.129 208.952 376.129 208.874 376.254 208.874 c 376.301 208.874 376.316 208.889 376.52 209.093 c 376.551 209.124 376.551 209.139 376.754 209.358 c 377.238 208.889 377.754 208.874 377.988 208.874 c 379.27 208.874 379.785 209.624 379.785 210.436 c h 386.172 208.999 m 386.172 209.343 l 385.375 209.343 385.297 209.421 385.297 209.968 c 385.297 213.952 l 383.641 213.827 l 383.641 213.483 l 384.422 213.483 384.516 213.405 384.516 212.858 c 384.516 210.858 l 384.516 209.889 383.984 209.124 383.156 209.124 c 382.219 209.124 382.172 209.655 382.172 210.233 c 382.172 213.952 l 380.531 213.827 l 380.531 213.483 l 381.406 213.483 381.406 213.452 381.406 212.452 c 381.406 210.764 l 381.406 209.889 381.406 208.874 383.109 208.874 c 383.734 208.874 384.234 209.186 384.547 209.889 c 384.547 208.874 l h 390.438 210.436 m 390.438 211.03 390.109 211.358 389.969 211.499 c 389.594 211.858 389.156 211.952 388.688 212.03 c 388.062 212.155 387.312 212.311 387.312 212.952 c 387.312 213.343 387.609 213.811 388.562 213.811 c 389.797 213.811 389.859 212.796 389.875 212.452 c 389.891 212.343 390.016 212.343 390.016 212.343 c 390.156 212.343 390.156 212.405 390.156 212.624 c 390.156 213.749 l 390.156 213.936 390.156 214.014 390.031 214.014 c 389.984 214.014 389.953 214.014 389.812 213.889 c 389.781 213.843 389.672 213.733 389.625 213.702 c 389.203 214.014 388.734 214.014 388.562 214.014 c 387.203 214.014 386.781 213.264 386.781 212.639 c 386.781 212.249 386.953 211.936 387.25 211.686 c 387.609 211.389 387.938 211.327 388.734 211.171 c 388.984 211.124 389.906 210.952 389.906 210.139 c 389.906 209.577 389.516 209.124 388.641 209.124 c 387.688 209.124 387.297 209.764 387.078 210.718 c 387.047 210.858 387.031 210.905 386.922 210.905 c 386.781 210.905 386.781 210.827 386.781 210.624 c 386.781 209.139 l 386.781 208.952 386.781 208.874 386.906 208.874 c 386.953 208.874 386.969 208.889 387.172 209.093 c 387.203 209.124 387.203 209.139 387.406 209.358 c 387.891 208.889 388.406 208.874 388.641 208.874 c 389.922 208.874 390.438 209.624 390.438 210.436 c h 395.48 210.327 m 395.48 210.436 395.355 210.436 395.324 210.436 c 395.23 210.436 395.199 210.405 395.184 210.327 c 394.855 209.296 394.137 209.155 393.715 209.155 c 393.121 209.155 392.137 209.639 392.137 211.436 c 392.137 213.264 393.059 213.733 393.652 213.733 c 393.746 213.733 394.449 213.733 394.84 213.327 c 394.387 213.296 394.324 212.952 394.324 212.811 c 394.324 212.514 394.527 212.296 394.84 212.296 c 395.121 212.296 395.355 212.483 395.355 212.811 c 395.355 213.577 394.496 214.014 393.637 214.014 c 392.23 214.014 391.199 212.811 391.199 211.421 c 391.199 209.983 392.309 208.874 393.621 208.874 c 395.121 208.874 395.48 210.218 395.48 210.327 c h 398.555 208.999 m 398.555 209.343 l 397.82 209.343 397.773 209.405 397.773 209.843 c 397.773 213.952 l 396.211 213.827 l 396.211 213.483 l 396.93 213.483 397.039 213.405 397.039 212.858 c 397.039 209.843 l 397.039 209.343 396.914 209.343 396.164 209.343 c 396.164 208.999 l 397.398 209.03 l 397.789 209.03 398.18 209.014 398.555 208.999 c h 397.945 215.764 m 397.945 216.061 397.68 216.358 397.352 216.358 c 396.961 216.358 396.742 216.046 396.742 215.764 c 396.742 215.468 396.992 215.171 397.336 215.171 c 397.711 215.171 397.945 215.483 397.945 215.764 c h 404.738 211.421 m 404.738 212.843 403.645 213.952 402.395 213.952 c 401.52 213.952 401.051 213.452 400.816 213.218 c 400.816 213.952 l 399.207 213.827 l 399.207 213.483 l 400.004 213.483 400.082 213.405 400.082 212.921 c 400.082 207.671 l 400.082 207.171 399.957 207.171 399.207 207.171 c 399.207 206.827 l 400.457 206.858 l 401.723 206.827 l 401.723 207.171 l 400.973 207.171 400.848 207.171 400.848 207.671 c 400.848 209.655 l 400.91 209.483 401.379 208.874 402.238 208.874 c 403.566 208.874 404.738 209.968 404.738 211.421 c h 403.801 211.421 m 403.801 210.061 403.02 209.124 402.191 209.124 c 401.738 209.124 401.316 209.343 401.02 209.811 c 400.848 210.046 400.848 210.046 400.848 210.28 c 400.848 212.78 l 401.176 213.343 401.723 213.671 402.301 213.671 c 403.113 213.671 403.801 212.686 403.801 211.421 c h 407.895 208.999 m 407.895 209.343 l 407.16 209.343 407.113 209.405 407.113 209.843 c 407.113 213.952 l 405.551 213.827 l 405.551 213.483 l 406.27 213.483 406.379 213.405 406.379 212.858 c 406.379 209.843 l 406.379 209.343 406.254 209.343 405.504 209.343 c 405.504 208.999 l 406.738 209.03 l 407.129 209.03 407.52 209.014 407.895 208.999 c h 407.285 215.764 m 407.285 216.061 407.02 216.358 406.691 216.358 c 406.301 216.358 406.082 216.046 406.082 215.764 c 406.082 215.468 406.332 215.171 406.676 215.171 c 407.051 215.171 407.285 215.483 407.285 215.764 c h 411.957 210.389 m 411.957 211.03 l 411.676 211.03 l 411.676 210.405 l 411.676 209.577 411.348 209.155 410.926 209.155 c 410.176 209.155 410.176 210.171 410.176 210.358 c 410.176 213.483 l 411.785 213.483 l 411.785 213.827 l 410.176 213.827 l 410.176 215.889 l 409.895 215.889 l 409.879 214.968 409.551 213.764 408.457 213.733 c 408.457 213.483 l 409.41 213.483 l 409.41 210.389 l 409.41 209.014 410.441 208.874 410.848 208.874 c 411.645 208.874 411.957 209.671 411.957 210.389 c h 422.332 208.999 m 422.332 209.343 l 421.535 209.343 421.457 209.421 421.457 209.968 c 421.457 213.952 l 419.801 213.827 l 419.801 213.483 l 420.582 213.483 420.676 213.405 420.676 212.858 c 420.676 210.858 l 420.676 209.889 420.145 209.124 419.316 209.124 c 418.379 209.124 418.332 209.655 418.332 210.233 c 418.332 213.952 l 416.691 213.827 l 416.691 213.483 l 417.566 213.483 417.566 213.452 417.566 212.452 c 417.566 210.764 l 417.566 209.889 417.566 208.874 419.27 208.874 c 419.895 208.874 420.395 209.186 420.707 209.889 c 420.707 208.874 l h 426.285 210.389 m 426.285 211.03 l 426.004 211.03 l 426.004 210.405 l 426.004 209.577 425.676 209.155 425.254 209.155 c 424.504 209.155 424.504 210.171 424.504 210.358 c 424.504 213.483 l 426.113 213.483 l 426.113 213.827 l 424.504 213.827 l 424.504 215.889 l 424.223 215.889 l 424.207 214.968 423.879 213.764 422.785 213.733 c 422.785 213.483 l 423.738 213.483 l 423.738 210.389 l 423.738 209.014 424.77 208.874 425.176 208.874 c 425.973 208.874 426.285 209.671 426.285 210.389 c h f 325.688 194.999 m 325.688 195.343 l 325.094 195.343 324.812 195.343 324.812 195.686 c 324.812 197.827 l 324.812 198.78 324.812 199.139 324.453 199.53 c 324.297 199.733 323.938 199.952 323.281 199.952 c 322.469 199.952 321.938 199.468 321.625 198.78 c 321.625 199.952 l 320.047 199.827 l 320.047 199.483 l 320.828 199.483 320.922 199.405 320.922 198.858 c 320.922 195.843 l 320.922 195.343 320.797 195.343 320.047 195.343 c 320.047 194.999 l 321.312 195.03 l 322.562 194.999 l 322.562 195.343 l 321.812 195.343 321.688 195.343 321.688 195.843 c 321.688 197.905 l 321.688 199.077 322.484 199.702 323.203 199.702 c 323.906 199.702 324.031 199.093 324.031 198.468 c 324.031 195.843 l 324.031 195.343 323.906 195.343 323.156 195.343 c 323.156 194.999 l 324.422 195.03 l h 331.922 194.999 m 331.922 195.343 l 331.125 195.343 331.047 195.421 331.047 195.968 c 331.047 199.952 l 329.391 199.827 l 329.391 199.483 l 330.172 199.483 330.266 199.405 330.266 198.858 c 330.266 196.858 l 330.266 195.889 329.734 195.124 328.906 195.124 c 327.969 195.124 327.922 195.655 327.922 196.233 c 327.922 199.952 l 326.281 199.827 l 326.281 199.483 l 327.156 199.483 327.156 199.452 327.156 198.452 c 327.156 196.764 l 327.156 195.889 327.156 194.874 328.859 194.874 c 329.484 194.874 329.984 195.186 330.297 195.889 c 330.297 194.874 l h 335.016 194.999 m 335.016 195.343 l 334.266 195.343 334.141 195.343 334.141 195.843 c 334.141 202.78 l 332.531 202.655 l 332.531 202.296 l 333.312 202.296 333.406 202.218 333.406 201.671 c 333.406 195.843 l 333.406 195.343 333.281 195.343 332.531 195.343 c 332.531 194.999 l 333.766 195.03 l h 338.121 194.999 m 338.121 195.343 l 337.371 195.343 337.246 195.343 337.246 195.843 c 337.246 202.78 l 335.637 202.655 l 335.637 202.296 l 336.418 202.296 336.512 202.218 336.512 201.671 c 336.512 195.843 l 336.512 195.343 336.387 195.343 335.637 195.343 c 335.637 194.999 l 336.871 195.03 l h 343.773 195.999 m 343.773 196.624 l 343.492 196.624 l 343.492 195.999 l 343.492 195.343 343.211 195.28 343.102 195.28 c 342.727 195.28 342.68 195.78 342.68 195.843 c 342.68 198.077 l 342.68 198.546 342.68 198.983 342.273 199.405 c 341.836 199.843 341.273 200.014 340.742 200.014 c 339.82 200.014 339.055 199.499 339.055 198.749 c 339.055 198.421 339.273 198.218 339.57 198.218 c 339.883 198.218 340.086 198.452 340.086 198.733 c 340.086 198.874 340.023 199.249 339.508 199.249 c 339.805 199.655 340.367 199.764 340.727 199.764 c 341.273 199.764 341.914 199.327 341.914 198.343 c 341.914 197.921 l 341.336 197.889 340.555 197.858 339.852 197.514 c 339.008 197.139 338.727 196.561 338.727 196.061 c 338.727 195.155 339.805 194.874 340.523 194.874 c 341.258 194.874 341.773 195.327 341.992 195.843 c 342.023 195.405 342.336 194.936 342.867 194.936 c 343.102 194.936 343.773 195.093 343.773 195.999 c h 341.914 196.561 m 341.914 195.499 341.102 195.124 340.602 195.124 c 340.055 195.124 339.586 195.514 339.586 196.077 c 339.586 196.686 340.055 197.624 341.914 197.686 c h 346.125 195.593 m 346.125 195.921 345.844 196.186 345.531 196.186 c 345.203 196.186 344.938 195.921 344.938 195.593 c 344.938 195.264 345.203 194.999 345.531 194.999 c 345.844 194.999 346.125 195.264 346.125 195.593 c h 358.832 202.296 m 358.832 202.655 l 357.52 202.624 l 356.223 202.655 l 356.223 202.296 l 357.363 202.296 357.363 201.78 357.363 201.468 c 357.363 196.686 l 353.41 202.499 l 353.316 202.639 353.301 202.655 353.098 202.655 c 351.191 202.655 l 351.191 202.296 l 351.504 202.296 l 351.676 202.296 351.91 202.296 352.066 202.28 c 352.332 202.249 352.348 202.233 352.348 202.03 c 352.348 196.171 l 352.348 195.874 352.348 195.343 351.191 195.343 c 351.191 194.999 l 352.504 195.03 l 353.801 194.999 l 353.801 195.343 l 352.66 195.343 352.66 195.874 352.66 196.171 c 352.66 201.999 l 352.707 201.952 352.723 201.936 352.77 201.874 c 357.332 195.139 l 357.441 195.014 357.441 194.999 357.52 194.999 c 357.691 194.999 357.691 195.077 357.691 195.296 c 357.691 201.468 l 357.691 201.78 357.691 202.296 358.832 202.296 c h 364.621 195.999 m 364.621 196.624 l 364.34 196.624 l 364.34 195.999 l 364.34 195.343 364.059 195.28 363.949 195.28 c 363.574 195.28 363.527 195.78 363.527 195.843 c 363.527 198.077 l 363.527 198.546 363.527 198.983 363.121 199.405 c 362.684 199.843 362.121 200.014 361.59 200.014 c 360.668 200.014 359.902 199.499 359.902 198.749 c 359.902 198.421 360.121 198.218 360.418 198.218 c 360.73 198.218 360.934 198.452 360.934 198.733 c 360.934 198.874 360.871 199.249 360.355 199.249 c 360.652 199.655 361.215 199.764 361.574 199.764 c 362.121 199.764 362.762 199.327 362.762 198.343 c 362.762 197.921 l 362.184 197.889 361.402 197.858 360.699 197.514 c 359.855 197.139 359.574 196.561 359.574 196.061 c 359.574 195.155 360.652 194.874 361.371 194.874 c 362.105 194.874 362.621 195.327 362.84 195.843 c 362.871 195.405 363.184 194.936 363.715 194.936 c 363.949 194.936 364.621 195.093 364.621 195.999 c h 362.762 196.561 m 362.762 195.499 361.949 195.124 361.449 195.124 c 360.902 195.124 360.434 195.514 360.434 196.077 c 360.434 196.686 360.902 197.624 362.762 197.686 c h 373.926 194.999 m 373.926 195.343 l 373.348 195.343 373.066 195.343 373.051 195.686 c 373.051 197.827 l 373.051 198.78 373.051 199.139 372.707 199.53 c 372.551 199.733 372.176 199.952 371.52 199.952 c 370.582 199.952 370.098 199.28 369.91 198.858 c 369.738 199.827 368.91 199.952 368.41 199.952 c 367.598 199.952 367.066 199.468 366.754 198.78 c 366.754 199.952 l 365.176 199.827 l 365.176 199.483 l 365.957 199.483 366.051 199.405 366.051 198.858 c 366.051 195.843 l 366.051 195.343 365.926 195.343 365.176 195.343 c 365.176 194.999 l 366.441 195.03 l 367.691 194.999 l 367.691 195.343 l 366.941 195.343 366.816 195.343 366.816 195.843 c 366.816 197.905 l 366.816 199.077 367.613 199.702 368.332 199.702 c 369.035 199.702 369.16 199.093 369.16 198.468 c 369.16 195.843 l 369.16 195.343 369.035 195.343 368.285 195.343 c 368.285 194.999 l 369.551 195.03 l 370.816 194.999 l 370.816 195.343 l 370.066 195.343 369.941 195.343 369.941 195.843 c 369.941 197.905 l 369.941 199.077 370.738 199.702 371.441 199.702 c 372.16 199.702 372.285 199.093 372.285 198.468 c 372.285 195.843 l 372.285 195.343 372.16 195.343 371.41 195.343 c 371.41 194.999 l 372.676 195.03 l h 383.801 192.827 m 383.801 193.171 l 383.051 193.171 382.926 193.171 382.926 193.671 c 382.926 199.952 l 382.676 199.952 l 382.254 198.936 l 382.113 199.249 381.645 199.952 380.754 199.952 c 379.457 199.952 378.27 198.858 378.27 197.405 c 378.27 196.014 379.363 194.874 380.66 194.874 c 381.441 194.874 381.91 195.358 382.145 195.686 c 382.145 193.671 l 382.145 193.171 382.035 193.171 381.285 193.171 c 381.285 192.827 l 382.535 192.858 l h 382.191 196.53 m 382.191 196.171 381.988 195.843 381.738 195.577 c 381.598 195.421 381.238 195.124 380.707 195.124 c 379.895 195.124 379.207 196.124 379.207 197.405 c 379.207 198.733 379.988 199.671 380.816 199.671 c 381.707 199.671 382.191 198.702 382.191 198.108 c h 389.801 194.999 m 389.801 195.343 l 389.004 195.343 388.926 195.421 388.926 195.968 c 388.926 199.952 l 387.27 199.827 l 387.27 199.483 l 388.051 199.483 388.145 199.405 388.145 198.858 c 388.145 196.858 l 388.145 195.889 387.613 195.124 386.785 195.124 c 385.848 195.124 385.801 195.655 385.801 196.233 c 385.801 199.952 l 384.16 199.827 l 384.16 199.483 l 385.035 199.483 385.035 199.452 385.035 198.452 c 385.035 196.764 l 385.035 195.889 385.035 194.874 386.738 194.874 c 387.363 194.874 387.863 195.186 388.176 195.889 c 388.176 194.874 l h 392.801 194.999 m 392.801 195.343 l 392.066 195.343 392.02 195.405 392.02 195.843 c 392.02 199.952 l 390.457 199.827 l 390.457 199.483 l 391.176 199.483 391.285 199.405 391.285 198.858 c 391.285 195.843 l 391.285 195.343 391.16 195.343 390.41 195.343 c 390.41 194.999 l 391.645 195.03 l 392.035 195.03 392.426 195.014 392.801 194.999 c h 392.191 201.764 m 392.191 202.061 391.926 202.358 391.598 202.358 c 391.207 202.358 390.988 202.046 390.988 201.764 c 390.988 201.468 391.238 201.171 391.582 201.171 c 391.957 201.171 392.191 201.483 392.191 201.764 c h 397.176 196.436 m 397.176 197.03 396.848 197.358 396.707 197.499 c 396.332 197.858 395.895 197.952 395.426 198.03 c 394.801 198.155 394.051 198.311 394.051 198.952 c 394.051 199.343 394.348 199.811 395.301 199.811 c 396.535 199.811 396.598 198.796 396.613 198.452 c 396.629 198.343 396.754 198.343 396.754 198.343 c 396.895 198.343 396.895 198.405 396.895 198.624 c 396.895 199.749 l 396.895 199.936 396.895 200.014 396.77 200.014 c 396.723 200.014 396.691 200.014 396.551 199.889 c 396.52 199.843 396.41 199.733 396.363 199.702 c 395.941 200.014 395.473 200.014 395.301 200.014 c 393.941 200.014 393.52 199.264 393.52 198.639 c 393.52 198.249 393.691 197.936 393.988 197.686 c 394.348 197.389 394.676 197.327 395.473 197.171 c 395.723 197.124 396.645 196.952 396.645 196.139 c 396.645 195.577 396.254 195.124 395.379 195.124 c 394.426 195.124 394.035 195.764 393.816 196.718 c 393.785 196.858 393.77 196.905 393.66 196.905 c 393.52 196.905 393.52 196.827 393.52 196.624 c 393.52 195.139 l 393.52 194.952 393.52 194.874 393.645 194.874 c 393.691 194.874 393.707 194.889 393.91 195.093 c 393.941 195.124 393.941 195.139 394.145 195.358 c 394.629 194.889 395.145 194.874 395.379 194.874 c 396.66 194.874 397.176 195.624 397.176 196.436 c h 405.332 196.436 m 405.332 197.03 405.004 197.358 404.863 197.499 c 404.488 197.858 404.051 197.952 403.582 198.03 c 402.957 198.155 402.207 198.311 402.207 198.952 c 402.207 199.343 402.504 199.811 403.457 199.811 c 404.691 199.811 404.754 198.796 404.77 198.452 c 404.785 198.343 404.91 198.343 404.91 198.343 c 405.051 198.343 405.051 198.405 405.051 198.624 c 405.051 199.749 l 405.051 199.936 405.051 200.014 404.926 200.014 c 404.879 200.014 404.848 200.014 404.707 199.889 c 404.676 199.843 404.566 199.733 404.52 199.702 c 404.098 200.014 403.629 200.014 403.457 200.014 c 402.098 200.014 401.676 199.264 401.676 198.639 c 401.676 198.249 401.848 197.936 402.145 197.686 c 402.504 197.389 402.832 197.327 403.629 197.171 c 403.879 197.124 404.801 196.952 404.801 196.139 c 404.801 195.577 404.41 195.124 403.535 195.124 c 402.582 195.124 402.191 195.764 401.973 196.718 c 401.941 196.858 401.926 196.905 401.816 196.905 c 401.676 196.905 401.676 196.827 401.676 196.624 c 401.676 195.139 l 401.676 194.952 401.676 194.874 401.801 194.874 c 401.848 194.874 401.863 194.889 402.066 195.093 c 402.098 195.124 402.098 195.139 402.301 195.358 c 402.785 194.889 403.301 194.874 403.535 194.874 c 404.816 194.874 405.332 195.624 405.332 196.436 c h 411.129 195.999 m 411.129 196.624 l 410.848 196.624 l 410.848 195.999 l 410.848 195.343 410.566 195.28 410.457 195.28 c 410.082 195.28 410.035 195.78 410.035 195.843 c 410.035 198.077 l 410.035 198.546 410.035 198.983 409.629 199.405 c 409.191 199.843 408.629 200.014 408.098 200.014 c 407.176 200.014 406.41 199.499 406.41 198.749 c 406.41 198.421 406.629 198.218 406.926 198.218 c 407.238 198.218 407.441 198.452 407.441 198.733 c 407.441 198.874 407.379 199.249 406.863 199.249 c 407.16 199.655 407.723 199.764 408.082 199.764 c 408.629 199.764 409.27 199.327 409.27 198.343 c 409.27 197.921 l 408.691 197.889 407.91 197.858 407.207 197.514 c 406.363 197.139 406.082 196.561 406.082 196.061 c 406.082 195.155 407.16 194.874 407.879 194.874 c 408.613 194.874 409.129 195.327 409.348 195.843 c 409.379 195.405 409.691 194.936 410.223 194.936 c 410.457 194.936 411.129 195.093 411.129 195.999 c h 409.27 196.561 m 409.27 195.499 408.457 195.124 407.957 195.124 c 407.41 195.124 406.941 195.514 406.941 196.077 c 406.941 196.686 407.41 197.624 409.27 197.686 c h 417.164 197.421 m 417.164 198.843 416.07 199.952 414.82 199.952 c 413.945 199.952 413.477 199.452 413.242 199.218 c 413.242 199.952 l 411.633 199.827 l 411.633 199.483 l 412.43 199.483 412.508 199.405 412.508 198.921 c 412.508 193.671 l 412.508 193.171 412.383 193.171 411.633 193.171 c 411.633 192.827 l 412.883 192.858 l 414.148 192.827 l 414.148 193.171 l 413.398 193.171 413.273 193.171 413.273 193.671 c 413.273 195.655 l 413.336 195.483 413.805 194.874 414.664 194.874 c 415.992 194.874 417.164 195.968 417.164 197.421 c h 416.227 197.421 m 416.227 196.061 415.445 195.124 414.617 195.124 c 414.164 195.124 413.742 195.343 413.445 195.811 c 413.273 196.046 413.273 196.046 413.273 196.28 c 413.273 198.78 l 413.602 199.343 414.148 199.671 414.727 199.671 c 415.539 199.671 416.227 198.686 416.227 197.421 c h 420.32 194.999 m 420.32 195.343 l 419.586 195.343 419.539 195.405 419.539 195.843 c 419.539 199.952 l 417.977 199.827 l 417.977 199.483 l 418.695 199.483 418.805 199.405 418.805 198.858 c 418.805 195.843 l 418.805 195.343 418.68 195.343 417.93 195.343 c 417.93 194.999 l 419.164 195.03 l 419.555 195.03 419.945 195.014 420.32 194.999 c h 419.711 201.764 m 419.711 202.061 419.445 202.358 419.117 202.358 c 418.727 202.358 418.508 202.046 418.508 201.764 c 418.508 201.468 418.758 201.171 419.102 201.171 c 419.477 201.171 419.711 201.483 419.711 201.764 c h 425.316 196.327 m 425.316 196.436 425.223 196.468 425.16 196.468 c 425.066 196.468 425.035 196.405 425.02 196.311 c 424.629 195.155 423.613 195.155 423.504 195.155 c 422.941 195.155 422.504 195.499 422.238 195.905 c 421.91 196.436 421.91 197.186 421.91 197.593 c 425.035 197.593 l 425.27 197.593 425.316 197.593 425.316 197.827 c 425.316 198.936 424.707 200.014 423.301 200.014 c 422.004 200.014 420.973 198.858 420.973 197.468 c 420.973 195.968 422.145 194.874 423.441 194.874 c 424.801 194.874 425.316 196.124 425.316 196.327 c h 424.566 197.827 m 421.91 197.827 l 421.988 199.499 422.926 199.764 423.301 199.764 c 424.457 199.764 424.566 198.264 424.566 197.827 c h 431.629 194.999 m 431.629 195.343 l 431.035 195.343 430.754 195.343 430.754 195.686 c 430.754 197.827 l 430.754 198.78 430.754 199.139 430.395 199.53 c 430.238 199.733 429.879 199.952 429.223 199.952 c 428.41 199.952 427.879 199.468 427.566 198.78 c 427.566 199.952 l 425.988 199.827 l 425.988 199.483 l 426.77 199.483 426.863 199.405 426.863 198.858 c 426.863 195.843 l 426.863 195.343 426.738 195.343 425.988 195.343 c 425.988 194.999 l 427.254 195.03 l 428.504 194.999 l 428.504 195.343 l 427.754 195.343 427.629 195.343 427.629 195.843 c 427.629 197.905 l 427.629 199.077 428.426 199.702 429.145 199.702 c 429.848 199.702 429.973 199.093 429.973 198.468 c 429.973 195.843 l 429.973 195.343 429.848 195.343 429.098 195.343 c 429.098 194.999 l 430.363 195.03 l h f 324.969 183.389 m 324.969 184.827 323.844 186.014 322.484 186.014 c 321.094 186.014 320 184.796 320 183.389 c 320 181.952 321.172 180.874 322.484 180.874 c 323.828 180.874 324.969 181.968 324.969 183.389 c h 324.031 183.483 m 324.031 183.077 324.031 182.483 323.781 181.983 c 323.547 181.483 323.047 181.155 322.484 181.155 c 322 181.155 321.516 181.389 321.219 181.905 c 320.938 182.405 320.938 183.077 320.938 183.483 c 320.938 183.921 320.938 184.53 321.203 185.014 c 321.5 185.53 322.031 185.764 322.484 185.764 c 322.969 185.764 323.453 185.53 323.75 185.046 c 324.031 184.561 324.031 183.905 324.031 183.483 c h 329.363 185.264 m 329.363 185.624 329.02 185.952 328.535 185.952 c 327.723 185.952 327.316 185.202 327.16 184.718 c 327.16 185.952 l 325.598 185.827 l 325.598 185.483 l 326.379 185.483 326.473 185.405 326.473 184.858 c 326.473 181.843 l 326.473 181.343 326.348 181.343 325.598 181.343 c 325.598 180.999 l 326.879 181.03 l 327.316 181.03 327.848 181.03 328.301 180.999 c 328.301 181.343 l 328.066 181.343 l 327.238 181.343 327.207 181.468 327.207 181.874 c 327.207 183.593 l 327.207 184.702 327.676 185.702 328.535 185.702 c 328.613 185.702 328.629 185.702 328.66 185.686 c 328.629 185.686 328.395 185.546 328.395 185.249 c 328.395 184.936 328.629 184.78 328.879 184.78 c 329.082 184.78 329.363 184.905 329.363 185.264 c h 335.684 180.999 m 335.684 181.343 l 335.09 181.343 334.809 181.343 334.809 181.686 c 334.809 183.827 l 334.809 184.78 334.809 185.139 334.449 185.53 c 334.293 185.733 333.934 185.952 333.277 185.952 c 332.465 185.952 331.934 185.468 331.621 184.78 c 331.621 185.952 l 330.043 185.827 l 330.043 185.483 l 330.824 185.483 330.918 185.405 330.918 184.858 c 330.918 181.843 l 330.918 181.343 330.793 181.343 330.043 181.343 c 330.043 180.999 l 331.309 181.03 l 332.559 180.999 l 332.559 181.343 l 331.809 181.343 331.684 181.343 331.684 181.843 c 331.684 183.905 l 331.684 185.077 332.48 185.702 333.199 185.702 c 333.902 185.702 334.027 185.093 334.027 184.468 c 334.027 181.843 l 334.027 181.343 333.902 181.343 333.152 181.343 c 333.152 180.999 l 334.418 181.03 l h 341.324 181.999 m 341.324 182.624 l 341.043 182.624 l 341.043 181.999 l 341.043 181.343 340.762 181.28 340.652 181.28 c 340.277 181.28 340.23 181.78 340.23 181.843 c 340.23 184.077 l 340.23 184.546 340.23 184.983 339.824 185.405 c 339.387 185.843 338.824 186.014 338.293 186.014 c 337.371 186.014 336.605 185.499 336.605 184.749 c 336.605 184.421 336.824 184.218 337.121 184.218 c 337.434 184.218 337.637 184.452 337.637 184.733 c 337.637 184.874 337.574 185.249 337.059 185.249 c 337.355 185.655 337.918 185.764 338.277 185.764 c 338.824 185.764 339.465 185.327 339.465 184.343 c 339.465 183.921 l 338.887 183.889 338.105 183.858 337.402 183.514 c 336.559 183.139 336.277 182.561 336.277 182.061 c 336.277 181.155 337.355 180.874 338.074 180.874 c 338.809 180.874 339.324 181.327 339.543 181.843 c 339.574 181.405 339.887 180.936 340.418 180.936 c 340.652 180.936 341.324 181.093 341.324 181.999 c h 339.465 182.561 m 339.465 181.499 338.652 181.124 338.152 181.124 c 337.605 181.124 337.137 181.514 337.137 182.077 c 337.137 182.686 337.605 183.624 339.465 183.686 c h 345.598 185.264 m 345.598 185.624 345.254 185.952 344.77 185.952 c 343.957 185.952 343.551 185.202 343.395 184.718 c 343.395 185.952 l 341.832 185.827 l 341.832 185.483 l 342.613 185.483 342.707 185.405 342.707 184.858 c 342.707 181.843 l 342.707 181.343 342.582 181.343 341.832 181.343 c 341.832 180.999 l 343.113 181.03 l 343.551 181.03 344.082 181.03 344.535 180.999 c 344.535 181.343 l 344.301 181.343 l 343.473 181.343 343.441 181.468 343.441 181.874 c 343.441 183.593 l 343.441 184.702 343.91 185.702 344.77 185.702 c 344.848 185.702 344.863 185.702 344.895 185.686 c 344.863 185.686 344.629 185.546 344.629 185.249 c 344.629 184.936 344.863 184.78 345.113 184.78 c 345.316 184.78 345.598 184.905 345.598 185.264 c h 350.57 182.327 m 350.57 182.436 350.477 182.468 350.414 182.468 c 350.32 182.468 350.289 182.405 350.273 182.311 c 349.883 181.155 348.867 181.155 348.758 181.155 c 348.195 181.155 347.758 181.499 347.492 181.905 c 347.164 182.436 347.164 183.186 347.164 183.593 c 350.289 183.593 l 350.523 183.593 350.57 183.593 350.57 183.827 c 350.57 184.936 349.961 186.014 348.555 186.014 c 347.258 186.014 346.227 184.858 346.227 183.468 c 346.227 181.968 347.398 180.874 348.695 180.874 c 350.055 180.874 350.57 182.124 350.57 182.327 c h 349.82 183.827 m 347.164 183.827 l 347.242 185.499 348.18 185.764 348.555 185.764 c 349.711 185.764 349.82 184.264 349.82 183.827 c h 360.621 180.999 m 360.621 181.343 l 360.027 181.343 359.746 181.343 359.746 181.686 c 359.746 183.827 l 359.746 184.78 359.746 185.139 359.387 185.53 c 359.23 185.733 358.871 185.952 358.215 185.952 c 357.402 185.952 356.871 185.468 356.559 184.78 c 356.559 185.952 l 354.98 185.827 l 354.98 185.483 l 355.762 185.483 355.855 185.405 355.855 184.858 c 355.855 181.843 l 355.855 181.343 355.73 181.343 354.98 181.343 c 354.98 180.999 l 356.246 181.03 l 357.496 180.999 l 357.496 181.343 l 356.746 181.343 356.621 181.343 356.621 181.843 c 356.621 183.905 l 356.621 185.077 357.418 185.702 358.137 185.702 c 358.84 185.702 358.965 185.093 358.965 184.468 c 358.965 181.843 l 358.965 181.343 358.84 181.343 358.09 181.343 c 358.09 180.999 l 359.355 181.03 l h 363.621 180.999 m 363.621 181.343 l 362.887 181.343 362.84 181.405 362.84 181.843 c 362.84 185.952 l 361.277 185.827 l 361.277 185.483 l 361.996 185.483 362.105 185.405 362.105 184.858 c 362.105 181.843 l 362.105 181.343 361.98 181.343 361.23 181.343 c 361.23 180.999 l 362.465 181.03 l 362.855 181.03 363.246 181.014 363.621 180.999 c h 363.012 187.764 m 363.012 188.061 362.746 188.358 362.418 188.358 c 362.027 188.358 361.809 188.046 361.809 187.764 c 361.809 187.468 362.059 187.171 362.402 187.171 c 362.777 187.171 363.012 187.483 363.012 187.764 c h 369.805 183.421 m 369.805 184.843 368.695 185.952 367.43 185.952 c 366.555 185.952 366.07 185.421 365.883 185.218 c 365.883 188.78 l 364.273 188.655 l 364.273 188.296 l 365.055 188.296 365.148 188.218 365.148 187.671 c 365.148 180.999 l 365.43 180.999 l 365.836 181.686 l 365.992 181.436 366.477 180.874 367.305 180.874 c 368.633 180.874 369.805 181.968 369.805 183.421 c h 368.867 183.436 m 368.867 183.014 368.852 182.343 368.523 181.843 c 368.289 181.499 367.867 181.124 367.258 181.124 c 366.758 181.124 366.352 181.389 366.086 181.811 c 365.914 182.046 365.914 182.077 365.914 182.28 c 365.914 184.577 l 365.914 184.796 365.914 184.811 366.039 184.983 c 366.477 185.608 367.102 185.702 367.367 185.702 c 367.867 185.702 368.273 185.405 368.539 184.983 c 368.836 184.53 368.867 183.889 368.867 183.436 c h 376.195 180.999 m 376.195 181.343 l 375.602 181.343 375.32 181.343 375.32 181.686 c 375.32 183.827 l 375.32 184.78 375.32 185.139 374.961 185.53 c 374.805 185.733 374.445 185.952 373.789 185.952 c 372.852 185.952 372.352 185.28 372.18 184.874 c 372.164 184.874 l 372.164 188.78 l 370.555 188.655 l 370.555 188.296 l 371.336 188.296 371.43 188.218 371.43 187.671 c 371.43 181.843 l 371.43 181.343 371.305 181.343 370.555 181.343 c 370.555 180.999 l 371.82 181.03 l 373.07 180.999 l 373.07 181.343 l 372.32 181.343 372.195 181.343 372.195 181.843 c 372.195 183.905 l 372.195 185.077 372.992 185.702 373.711 185.702 c 374.414 185.702 374.539 185.093 374.539 184.468 c 374.539 181.843 l 374.539 181.343 374.414 181.343 373.664 181.343 c 373.664 180.999 l 374.93 181.03 l h 386.078 180.999 m 386.078 181.343 l 385.297 181.343 385.203 181.421 385.203 181.968 c 385.203 188.78 l 383.594 188.655 l 383.594 188.296 l 384.375 188.296 384.469 188.218 384.469 187.671 c 384.469 185.249 l 384.141 185.655 383.656 185.952 383.047 185.952 c 381.734 185.952 380.547 184.858 380.547 183.405 c 380.547 181.983 381.656 180.874 382.922 180.874 c 383.641 180.874 384.156 181.249 384.422 181.608 c 384.422 180.874 l h 384.422 182.327 m 384.422 182.124 384.422 182.093 384.312 181.905 c 383.969 181.374 383.469 181.124 382.984 181.124 c 382.484 181.124 382.078 181.421 381.812 181.843 c 381.516 182.296 381.484 182.936 381.484 183.389 c 381.484 183.811 381.5 184.483 381.828 184.983 c 382.062 185.327 382.484 185.702 383.094 185.702 c 383.484 185.702 383.953 185.53 384.312 185.03 c 384.422 184.843 384.422 184.811 384.422 184.624 c h 389.172 180.999 m 389.172 181.343 l 388.438 181.343 388.391 181.405 388.391 181.843 c 388.391 185.952 l 386.828 185.827 l 386.828 185.483 l 387.547 185.483 387.656 185.405 387.656 184.858 c 387.656 181.843 l 387.656 181.343 387.531 181.343 386.781 181.343 c 386.781 180.999 l 388.016 181.03 l 388.406 181.03 388.797 181.014 389.172 180.999 c h 388.562 187.764 m 388.562 188.061 388.297 188.358 387.969 188.358 c 387.578 188.358 387.359 188.046 387.359 187.764 c 387.359 187.468 387.609 187.171 387.953 187.171 c 388.328 187.171 388.562 187.483 388.562 187.764 c h 394.949 185.53 m 394.949 185.718 394.809 186.077 394.371 186.077 c 394.152 186.077 393.652 185.999 393.184 185.546 c 392.715 185.921 392.246 185.952 391.996 185.952 c 390.949 185.952 390.184 185.171 390.184 184.311 c 390.184 183.827 390.434 183.389 390.715 183.155 c 390.559 182.999 390.355 182.624 390.355 182.233 c 390.355 181.889 390.512 181.452 390.855 181.233 c 390.184 181.046 389.824 180.561 389.824 180.108 c 389.824 179.311 390.934 178.686 392.309 178.686 c 393.621 178.686 394.793 179.264 394.793 180.139 c 394.793 180.53 394.637 181.093 394.059 181.421 c 393.465 181.733 392.824 181.733 392.137 181.733 c 391.855 181.733 391.371 181.733 391.293 181.733 c 390.934 181.78 390.699 182.124 390.699 182.483 c 390.699 182.53 390.699 182.796 390.887 183.014 c 391.324 182.702 391.793 182.671 391.996 182.671 c 393.043 182.671 393.809 183.436 393.809 184.311 c 393.809 184.718 393.637 185.139 393.355 185.389 c 393.762 185.764 394.168 185.827 394.355 185.827 c 394.355 185.827 394.434 185.827 394.48 185.811 c 394.355 185.764 394.293 185.655 394.293 185.514 c 394.293 185.327 394.434 185.186 394.621 185.186 c 394.73 185.186 394.949 185.264 394.949 185.53 c h 392.98 184.311 m 392.98 184.014 392.965 183.655 392.793 183.374 c 392.699 183.233 392.449 182.921 391.996 182.921 c 391.027 182.921 391.027 184.046 391.027 184.311 c 391.027 184.608 391.043 184.968 391.199 185.249 c 391.293 185.374 391.543 185.686 391.996 185.686 c 392.98 185.686 392.98 184.577 392.98 184.311 c h 394.199 180.108 m 394.199 179.514 393.418 178.952 392.309 178.952 c 391.184 178.952 390.402 179.514 390.402 180.108 c 390.402 180.624 390.84 181.046 391.324 181.077 c 391.98 181.077 l 392.949 181.077 394.199 181.077 394.199 180.108 c h 401.113 180.999 m 401.113 181.343 l 400.52 181.343 400.238 181.343 400.238 181.686 c 400.238 183.827 l 400.238 184.78 400.238 185.139 399.879 185.53 c 399.723 185.733 399.363 185.952 398.707 185.952 c 397.895 185.952 397.363 185.468 397.051 184.78 c 397.051 185.952 l 395.473 185.827 l 395.473 185.483 l 396.254 185.483 396.348 185.405 396.348 184.858 c 396.348 181.843 l 396.348 181.343 396.223 181.343 395.473 181.343 c 395.473 180.999 l 396.738 181.03 l 397.988 180.999 l 397.988 181.343 l 397.238 181.343 397.113 181.343 397.113 181.843 c 397.113 183.905 l 397.113 185.077 397.91 185.702 398.629 185.702 c 399.332 185.702 399.457 185.093 399.457 184.468 c 399.457 181.843 l 399.457 181.343 399.332 181.343 398.582 181.343 c 398.582 180.999 l 399.848 181.03 l h 404.113 180.999 m 404.113 181.343 l 403.379 181.343 403.332 181.405 403.332 181.843 c 403.332 185.952 l 401.77 185.827 l 401.77 185.483 l 402.488 185.483 402.598 185.405 402.598 184.858 c 402.598 181.843 l 402.598 181.343 402.473 181.343 401.723 181.343 c 401.723 180.999 l 402.957 181.03 l 403.348 181.03 403.738 181.014 404.113 180.999 c h 403.504 187.764 m 403.504 188.061 403.238 188.358 402.91 188.358 c 402.52 188.358 402.301 188.046 402.301 187.764 c 402.301 187.468 402.551 187.171 402.895 187.171 c 403.27 187.171 403.504 187.483 403.504 187.764 c h 408.484 182.436 m 408.484 183.03 408.156 183.358 408.016 183.499 c 407.641 183.858 407.203 183.952 406.734 184.03 c 406.109 184.155 405.359 184.311 405.359 184.952 c 405.359 185.343 405.656 185.811 406.609 185.811 c 407.844 185.811 407.906 184.796 407.922 184.452 c 407.938 184.343 408.062 184.343 408.062 184.343 c 408.203 184.343 408.203 184.405 408.203 184.624 c 408.203 185.749 l 408.203 185.936 408.203 186.014 408.078 186.014 c 408.031 186.014 408 186.014 407.859 185.889 c 407.828 185.843 407.719 185.733 407.672 185.702 c 407.25 186.014 406.781 186.014 406.609 186.014 c 405.25 186.014 404.828 185.264 404.828 184.639 c 404.828 184.249 405 183.936 405.297 183.686 c 405.656 183.389 405.984 183.327 406.781 183.171 c 407.031 183.124 407.953 182.952 407.953 182.139 c 407.953 181.577 407.562 181.124 406.688 181.124 c 405.734 181.124 405.344 181.764 405.125 182.718 c 405.094 182.858 405.078 182.905 404.969 182.905 c 404.828 182.905 404.828 182.827 404.828 182.624 c 404.828 181.139 l 404.828 180.952 404.828 180.874 404.953 180.874 c 405 180.874 405.016 180.889 405.219 181.093 c 405.25 181.124 405.25 181.139 405.453 181.358 c 405.938 180.889 406.453 180.874 406.688 180.874 c 407.969 180.874 408.484 181.624 408.484 182.436 c h 412.902 182.436 m 412.902 183.03 412.574 183.358 412.434 183.499 c 412.059 183.858 411.621 183.952 411.152 184.03 c 410.527 184.155 409.777 184.311 409.777 184.952 c 409.777 185.343 410.074 185.811 411.027 185.811 c 412.262 185.811 412.324 184.796 412.34 184.452 c 412.355 184.343 412.48 184.343 412.48 184.343 c 412.621 184.343 412.621 184.405 412.621 184.624 c 412.621 185.749 l 412.621 185.936 412.621 186.014 412.496 186.014 c 412.449 186.014 412.418 186.014 412.277 185.889 c 412.246 185.843 412.137 185.733 412.09 185.702 c 411.668 186.014 411.199 186.014 411.027 186.014 c 409.668 186.014 409.246 185.264 409.246 184.639 c 409.246 184.249 409.418 183.936 409.715 183.686 c 410.074 183.389 410.402 183.327 411.199 183.171 c 411.449 183.124 412.371 182.952 412.371 182.139 c 412.371 181.577 411.98 181.124 411.105 181.124 c 410.152 181.124 409.762 181.764 409.543 182.718 c 409.512 182.858 409.496 182.905 409.387 182.905 c 409.246 182.905 409.246 182.827 409.246 182.624 c 409.246 181.139 l 409.246 180.952 409.246 180.874 409.371 180.874 c 409.418 180.874 409.434 180.889 409.637 181.093 c 409.668 181.124 409.668 181.139 409.871 181.358 c 410.355 180.889 410.871 180.874 411.105 180.874 c 412.387 180.874 412.902 181.624 412.902 182.436 c h 416.055 180.999 m 416.055 181.343 l 415.32 181.343 415.273 181.405 415.273 181.843 c 415.273 185.952 l 413.711 185.827 l 413.711 185.483 l 414.43 185.483 414.539 185.405 414.539 184.858 c 414.539 181.843 l 414.539 181.343 414.414 181.343 413.664 181.343 c 413.664 180.999 l 414.898 181.03 l 415.289 181.03 415.68 181.014 416.055 180.999 c h 415.445 187.764 m 415.445 188.061 415.18 188.358 414.852 188.358 c 414.461 188.358 414.242 188.046 414.242 187.764 c 414.242 187.468 414.492 187.171 414.836 187.171 c 415.211 187.171 415.445 187.483 415.445 187.764 c h 425.504 180.999 m 425.504 181.343 l 424.926 181.343 424.645 181.343 424.629 181.686 c 424.629 183.827 l 424.629 184.78 424.629 185.139 424.285 185.53 c 424.129 185.733 423.754 185.952 423.098 185.952 c 422.16 185.952 421.676 185.28 421.488 184.858 c 421.316 185.827 420.488 185.952 419.988 185.952 c 419.176 185.952 418.645 185.468 418.332 184.78 c 418.332 185.952 l 416.754 185.827 l 416.754 185.483 l 417.535 185.483 417.629 185.405 417.629 184.858 c 417.629 181.843 l 417.629 181.343 417.504 181.343 416.754 181.343 c 416.754 180.999 l 418.02 181.03 l 419.27 180.999 l 419.27 181.343 l 418.52 181.343 418.395 181.343 418.395 181.843 c 418.395 183.905 l 418.395 185.077 419.191 185.702 419.91 185.702 c 420.613 185.702 420.738 185.093 420.738 184.468 c 420.738 181.843 l 420.738 181.343 420.613 181.343 419.863 181.343 c 419.863 180.999 l 421.129 181.03 l 422.395 180.999 l 422.395 181.343 l 421.645 181.343 421.52 181.343 421.52 181.843 c 421.52 183.905 l 421.52 185.077 422.316 185.702 423.02 185.702 c 423.738 185.702 423.863 185.093 423.863 184.468 c 423.863 181.843 l 423.863 181.343 423.738 181.343 422.988 181.343 c 422.988 180.999 l 424.254 181.03 l h f 325.375 171.483 m 325.375 171.827 l 325.125 171.811 324.797 171.796 324.531 171.796 c 323.562 171.827 l 323.562 171.483 l 323.984 171.468 324.094 171.218 324.094 170.999 c 324.094 170.905 324.078 170.858 324.031 170.733 c 322.891 167.874 l 321.641 170.999 l 321.562 171.139 321.562 171.186 321.562 171.186 c 321.562 171.483 322 171.483 322.203 171.483 c 322.203 171.827 l 320.984 171.796 l 320.688 171.796 320.234 171.811 319.906 171.827 c 319.906 171.483 l 320.609 171.483 320.656 171.405 320.797 171.061 c 322.406 167.093 l 322.484 166.936 322.5 166.874 322.641 166.874 c 322.797 166.874 322.828 166.983 322.875 167.093 c 324.344 170.733 l 324.453 170.983 324.641 171.468 325.375 171.483 c h 330.875 169.389 m 330.875 170.827 329.75 172.014 328.391 172.014 c 327 172.014 325.906 170.796 325.906 169.389 c 325.906 167.952 327.078 166.874 328.391 166.874 c 329.734 166.874 330.875 167.968 330.875 169.389 c h 329.938 169.483 m 329.938 169.077 329.938 168.483 329.688 167.983 c 329.453 167.483 328.953 167.155 328.391 167.155 c 327.906 167.155 327.422 167.389 327.125 167.905 c 326.844 168.405 326.844 169.077 326.844 169.483 c 326.844 169.921 326.844 170.53 327.109 171.014 c 327.406 171.53 327.938 171.764 328.391 171.764 c 328.875 171.764 329.359 171.53 329.656 171.046 c 329.938 170.561 329.938 169.905 329.938 169.483 c h 334.051 166.999 m 334.051 167.343 l 333.301 167.343 333.176 167.343 333.176 167.843 c 333.176 174.78 l 331.566 174.655 l 331.566 174.296 l 332.348 174.296 332.441 174.218 332.441 173.671 c 332.441 167.843 l 332.441 167.343 332.316 167.343 331.566 167.343 c 331.566 166.999 l 332.801 167.03 l h 340.301 166.999 m 340.301 167.343 l 339.504 167.343 339.426 167.421 339.426 167.968 c 339.426 171.952 l 337.77 171.827 l 337.77 171.483 l 338.551 171.483 338.645 171.405 338.645 170.858 c 338.645 168.858 l 338.645 167.889 338.113 167.124 337.285 167.124 c 336.348 167.124 336.301 167.655 336.301 168.233 c 336.301 171.952 l 334.66 171.827 l 334.66 171.483 l 335.535 171.483 335.535 171.452 335.535 170.452 c 335.535 168.764 l 335.535 167.889 335.535 166.874 337.238 166.874 c 337.863 166.874 338.363 167.186 338.676 167.889 c 338.676 166.874 l h 344.254 168.389 m 344.254 169.03 l 343.973 169.03 l 343.973 168.405 l 343.973 167.577 343.645 167.155 343.223 167.155 c 342.473 167.155 342.473 168.171 342.473 168.358 c 342.473 171.483 l 344.082 171.483 l 344.082 171.827 l 342.473 171.827 l 342.473 173.889 l 342.191 173.889 l 342.176 172.968 341.848 171.764 340.754 171.733 c 340.754 171.483 l 341.707 171.483 l 341.707 168.389 l 341.707 167.014 342.738 166.874 343.145 166.874 c 343.941 166.874 344.254 167.671 344.254 168.389 c h 350.73 169.421 m 350.73 170.843 349.637 171.952 348.387 171.952 c 347.512 171.952 347.043 171.452 346.809 171.218 c 346.809 171.952 l 345.199 171.827 l 345.199 171.483 l 345.996 171.483 346.074 171.405 346.074 170.921 c 346.074 165.671 l 346.074 165.171 345.949 165.171 345.199 165.171 c 345.199 164.827 l 346.449 164.858 l 347.715 164.827 l 347.715 165.171 l 346.965 165.171 346.84 165.171 346.84 165.671 c 346.84 167.655 l 346.902 167.483 347.371 166.874 348.23 166.874 c 349.559 166.874 350.73 167.968 350.73 169.421 c h 349.793 169.421 m 349.793 168.061 349.012 167.124 348.184 167.124 c 347.73 167.124 347.309 167.343 347.012 167.811 c 346.84 168.046 346.84 168.046 346.84 168.28 c 346.84 170.78 l 347.168 171.343 347.715 171.671 348.293 171.671 c 349.105 171.671 349.793 170.686 349.793 169.421 c h 356.527 167.999 m 356.527 168.624 l 356.246 168.624 l 356.246 167.999 l 356.246 167.343 355.965 167.28 355.855 167.28 c 355.48 167.28 355.434 167.78 355.434 167.843 c 355.434 170.077 l 355.434 170.546 355.434 170.983 355.027 171.405 c 354.59 171.843 354.027 172.014 353.496 172.014 c 352.574 172.014 351.809 171.499 351.809 170.749 c 351.809 170.421 352.027 170.218 352.324 170.218 c 352.637 170.218 352.84 170.452 352.84 170.733 c 352.84 170.874 352.777 171.249 352.262 171.249 c 352.559 171.655 353.121 171.764 353.48 171.764 c 354.027 171.764 354.668 171.327 354.668 170.343 c 354.668 169.921 l 354.09 169.889 353.309 169.858 352.605 169.514 c 351.762 169.139 351.48 168.561 351.48 168.061 c 351.48 167.155 352.559 166.874 353.277 166.874 c 354.012 166.874 354.527 167.327 354.746 167.843 c 354.777 167.405 355.09 166.936 355.621 166.936 c 355.855 166.936 356.527 167.093 356.527 167.999 c h 354.668 168.561 m 354.668 167.499 353.855 167.124 353.355 167.124 c 352.809 167.124 352.34 167.514 352.34 168.077 c 352.34 168.686 352.809 169.624 354.668 169.686 c h 360.441 168.389 m 360.441 169.03 l 360.16 169.03 l 360.16 168.405 l 360.16 167.577 359.832 167.155 359.41 167.155 c 358.66 167.155 358.66 168.171 358.66 168.358 c 358.66 171.483 l 360.27 171.483 l 360.27 171.827 l 358.66 171.827 l 358.66 173.889 l 358.379 173.889 l 358.363 172.968 358.035 171.764 356.941 171.733 c 356.941 171.483 l 357.895 171.483 l 357.895 168.389 l 357.895 167.014 358.926 166.874 359.332 166.874 c 360.129 166.874 360.441 167.671 360.441 168.389 c h 363.23 167.593 m 363.23 167.921 362.949 168.186 362.637 168.186 c 362.309 168.186 362.043 167.921 362.043 167.593 c 362.043 167.264 362.309 166.999 362.637 166.999 c 362.949 166.999 363.23 167.264 363.23 167.593 c h 377.766 166.999 m 377.766 167.343 l 377.5 167.343 l 376.641 167.343 376.609 167.468 376.609 167.874 c 376.609 173.78 l 376.609 174.186 376.641 174.296 377.5 174.296 c 377.766 174.296 l 377.766 174.655 l 375.875 174.655 l 375.578 174.655 375.578 174.639 375.5 174.436 c 373.047 168.124 l 370.625 174.405 l 370.516 174.655 370.484 174.655 370.234 174.655 c 368.344 174.655 l 368.344 174.296 l 368.609 174.296 l 369.469 174.296 369.484 174.186 369.484 173.78 c 369.484 168.171 l 369.484 167.874 369.484 167.343 368.344 167.343 c 368.344 166.999 l 369.641 167.03 l 370.953 166.999 l 370.953 167.343 l 369.797 167.343 369.797 167.874 369.797 168.171 c 369.797 174.218 l 369.812 174.218 l 372.516 167.249 l 372.578 167.093 372.625 166.999 372.734 166.999 c 372.859 166.999 372.891 167.093 372.938 167.218 c 375.703 174.296 l 375.703 167.874 l 375.703 167.468 375.688 167.343 374.828 167.343 c 374.547 167.343 l 374.547 166.999 l 374.969 167.03 375.734 167.03 376.172 167.03 c 376.609 167.03 377.359 167.03 377.766 166.999 c h 383.484 169.389 m 383.484 170.827 382.359 172.014 381 172.014 c 379.609 172.014 378.516 170.796 378.516 169.389 c 378.516 167.952 379.688 166.874 381 166.874 c 382.344 166.874 383.484 167.968 383.484 169.389 c h 382.547 169.483 m 382.547 169.077 382.547 168.483 382.297 167.983 c 382.062 167.483 381.562 167.155 381 167.155 c 380.516 167.155 380.031 167.389 379.734 167.905 c 379.453 168.405 379.453 169.077 379.453 169.483 c 379.453 169.921 379.453 170.53 379.719 171.014 c 380.016 171.53 380.547 171.764 381 171.764 c 381.484 171.764 381.969 171.53 382.266 171.046 c 382.547 170.561 382.547 169.905 382.547 169.483 c h 387.879 171.264 m 387.879 171.624 387.535 171.952 387.051 171.952 c 386.238 171.952 385.832 171.202 385.676 170.718 c 385.676 171.952 l 384.113 171.827 l 384.113 171.483 l 384.895 171.483 384.988 171.405 384.988 170.858 c 384.988 167.843 l 384.988 167.343 384.863 167.343 384.113 167.343 c 384.113 166.999 l 385.395 167.03 l 385.832 167.03 386.363 167.03 386.816 166.999 c 386.816 167.343 l 386.582 167.343 l 385.754 167.343 385.723 167.468 385.723 167.874 c 385.723 169.593 l 385.723 170.702 386.191 171.702 387.051 171.702 c 387.129 171.702 387.145 171.702 387.176 171.686 c 387.145 171.686 386.91 171.546 386.91 171.249 c 386.91 170.936 387.145 170.78 387.395 170.78 c 387.598 170.78 387.879 170.905 387.879 171.264 c h 394.043 169.421 m 394.043 170.843 392.934 171.952 391.668 171.952 c 390.793 171.952 390.309 171.421 390.121 171.218 c 390.121 174.78 l 388.512 174.655 l 388.512 174.296 l 389.293 174.296 389.387 174.218 389.387 173.671 c 389.387 166.999 l 389.668 166.999 l 390.074 167.686 l 390.23 167.436 390.715 166.874 391.543 166.874 c 392.871 166.874 394.043 167.968 394.043 169.421 c h 393.105 169.436 m 393.105 169.014 393.09 168.343 392.762 167.843 c 392.527 167.499 392.105 167.124 391.496 167.124 c 390.996 167.124 390.59 167.389 390.324 167.811 c 390.152 168.046 390.152 168.077 390.152 168.28 c 390.152 170.577 l 390.152 170.796 390.152 170.811 390.277 170.983 c 390.715 171.608 391.34 171.702 391.605 171.702 c 392.105 171.702 392.512 171.405 392.777 170.983 c 393.074 170.53 393.105 169.889 393.105 169.436 c h 397.199 166.999 m 397.199 167.343 l 396.465 167.343 396.418 167.405 396.418 167.843 c 396.418 171.952 l 394.855 171.827 l 394.855 171.483 l 395.574 171.483 395.684 171.405 395.684 170.858 c 395.684 167.843 l 395.684 167.343 395.559 167.343 394.809 167.343 c 394.809 166.999 l 396.043 167.03 l 396.434 167.03 396.824 167.014 397.199 166.999 c h 396.59 173.764 m 396.59 174.061 396.324 174.358 395.996 174.358 c 395.605 174.358 395.387 174.046 395.387 173.764 c 395.387 173.468 395.637 173.171 395.98 173.171 c 396.355 173.171 396.59 173.483 396.59 173.764 c h f 325.094 153.999 m 325.094 154.624 l 324.812 154.624 l 324.812 153.999 l 324.812 153.343 324.531 153.28 324.422 153.28 c 324.047 153.28 324 153.78 324 153.843 c 324 156.077 l 324 156.546 324 156.983 323.594 157.405 c 323.156 157.843 322.594 158.014 322.062 158.014 c 321.141 158.014 320.375 157.499 320.375 156.749 c 320.375 156.421 320.594 156.218 320.891 156.218 c 321.203 156.218 321.406 156.452 321.406 156.733 c 321.406 156.874 321.344 157.249 320.828 157.249 c 321.125 157.655 321.688 157.764 322.047 157.764 c 322.594 157.764 323.234 157.327 323.234 156.343 c 323.234 155.921 l 322.656 155.889 321.875 155.858 321.172 155.514 c 320.328 155.139 320.047 154.561 320.047 154.061 c 320.047 153.155 321.125 152.874 321.844 152.874 c 322.578 152.874 323.094 153.327 323.312 153.843 c 323.344 153.405 323.656 152.936 324.188 152.936 c 324.422 152.936 325.094 153.093 325.094 153.999 c h 323.234 154.561 m 323.234 153.499 322.422 153.124 321.922 153.124 c 321.375 153.124 320.906 153.514 320.906 154.077 c 320.906 154.686 321.375 155.624 323.234 155.686 c h 331.191 152.999 m 331.191 153.343 l 330.41 153.343 330.316 153.421 330.316 153.968 c 330.316 160.78 l 328.707 160.655 l 328.707 160.296 l 329.488 160.296 329.582 160.218 329.582 159.671 c 329.582 157.249 l 329.254 157.655 328.77 157.952 328.16 157.952 c 326.848 157.952 325.66 156.858 325.66 155.405 c 325.66 153.983 326.77 152.874 328.035 152.874 c 328.754 152.874 329.27 153.249 329.535 153.608 c 329.535 152.874 l h 329.535 154.327 m 329.535 154.124 329.535 154.093 329.426 153.905 c 329.082 153.374 328.582 153.124 328.098 153.124 c 327.598 153.124 327.191 153.421 326.926 153.843 c 326.629 154.296 326.598 154.936 326.598 155.389 c 326.598 155.811 326.613 156.483 326.941 156.983 c 327.176 157.327 327.598 157.702 328.207 157.702 c 328.598 157.702 329.066 157.53 329.426 157.03 c 329.535 156.843 329.535 156.811 329.535 156.624 c h 334.285 152.999 m 334.285 153.343 l 333.551 153.343 333.504 153.405 333.504 153.843 c 333.504 157.952 l 331.941 157.827 l 331.941 157.483 l 332.66 157.483 332.77 157.405 332.77 156.858 c 332.77 153.843 l 332.77 153.343 332.645 153.343 331.895 153.343 c 331.895 152.999 l 333.129 153.03 l 333.52 153.03 333.91 153.014 334.285 152.999 c h 333.676 159.764 m 333.676 160.061 333.41 160.358 333.082 160.358 c 332.691 160.358 332.473 160.046 332.473 159.764 c 332.473 159.468 332.723 159.171 333.066 159.171 c 333.441 159.171 333.676 159.483 333.676 159.764 c h 340.473 155.421 m 340.473 156.843 339.379 157.952 338.129 157.952 c 337.254 157.952 336.785 157.452 336.551 157.218 c 336.551 157.952 l 334.941 157.827 l 334.941 157.483 l 335.738 157.483 335.816 157.405 335.816 156.921 c 335.816 151.671 l 335.816 151.171 335.691 151.171 334.941 151.171 c 334.941 150.827 l 336.191 150.858 l 337.457 150.827 l 337.457 151.171 l 336.707 151.171 336.582 151.171 336.582 151.671 c 336.582 153.655 l 336.645 153.483 337.113 152.874 337.973 152.874 c 339.301 152.874 340.473 153.968 340.473 155.421 c h 339.535 155.421 m 339.535 154.061 338.754 153.124 337.926 153.124 c 337.473 153.124 337.051 153.343 336.754 153.811 c 336.582 154.046 336.582 154.046 336.582 154.28 c 336.582 156.78 l 336.91 157.343 337.457 157.671 338.035 157.671 c 338.848 157.671 339.535 156.686 339.535 155.421 c h 343.629 152.999 m 343.629 153.343 l 342.895 153.343 342.848 153.405 342.848 153.843 c 342.848 157.952 l 341.285 157.827 l 341.285 157.483 l 342.004 157.483 342.113 157.405 342.113 156.858 c 342.113 153.843 l 342.113 153.343 341.988 153.343 341.238 153.343 c 341.238 152.999 l 342.473 153.03 l 342.863 153.03 343.254 153.014 343.629 152.999 c h 343.02 159.764 m 343.02 160.061 342.754 160.358 342.426 160.358 c 342.035 160.358 341.816 160.046 341.816 159.764 c 341.816 159.468 342.066 159.171 342.41 159.171 c 342.785 159.171 343.02 159.483 343.02 159.764 c h 348 154.436 m 348 155.03 347.672 155.358 347.531 155.499 c 347.156 155.858 346.719 155.952 346.25 156.03 c 345.625 156.155 344.875 156.311 344.875 156.952 c 344.875 157.343 345.172 157.811 346.125 157.811 c 347.359 157.811 347.422 156.796 347.438 156.452 c 347.453 156.343 347.578 156.343 347.578 156.343 c 347.719 156.343 347.719 156.405 347.719 156.624 c 347.719 157.749 l 347.719 157.936 347.719 158.014 347.594 158.014 c 347.547 158.014 347.516 158.014 347.375 157.889 c 347.344 157.843 347.234 157.733 347.188 157.702 c 346.766 158.014 346.297 158.014 346.125 158.014 c 344.766 158.014 344.344 157.264 344.344 156.639 c 344.344 156.249 344.516 155.936 344.812 155.686 c 345.172 155.389 345.5 155.327 346.297 155.171 c 346.547 155.124 347.469 154.952 347.469 154.139 c 347.469 153.577 347.078 153.124 346.203 153.124 c 345.25 153.124 344.859 153.764 344.641 154.718 c 344.609 154.858 344.594 154.905 344.484 154.905 c 344.344 154.905 344.344 154.827 344.344 154.624 c 344.344 153.139 l 344.344 152.952 344.344 152.874 344.469 152.874 c 344.516 152.874 344.531 152.889 344.734 153.093 c 344.766 153.124 344.766 153.139 344.969 153.358 c 345.453 152.889 345.969 152.874 346.203 152.874 c 347.484 152.874 348 153.624 348 154.436 c h 353.043 154.327 m 353.043 154.436 352.918 154.436 352.887 154.436 c 352.793 154.436 352.762 154.405 352.746 154.327 c 352.418 153.296 351.699 153.155 351.277 153.155 c 350.684 153.155 349.699 153.639 349.699 155.436 c 349.699 157.264 350.621 157.733 351.215 157.733 c 351.309 157.733 352.012 157.733 352.402 157.327 c 351.949 157.296 351.887 156.952 351.887 156.811 c 351.887 156.514 352.09 156.296 352.402 156.296 c 352.684 156.296 352.918 156.483 352.918 156.811 c 352.918 157.577 352.059 158.014 351.199 158.014 c 349.793 158.014 348.762 156.811 348.762 155.421 c 348.762 153.983 349.871 152.874 351.184 152.874 c 352.684 152.874 353.043 154.218 353.043 154.327 c h 356.117 152.999 m 356.117 153.343 l 355.383 153.343 355.336 153.405 355.336 153.843 c 355.336 157.952 l 353.773 157.827 l 353.773 157.483 l 354.492 157.483 354.602 157.405 354.602 156.858 c 354.602 153.843 l 354.602 153.343 354.477 153.343 353.727 153.343 c 353.727 152.999 l 354.961 153.03 l 355.352 153.03 355.742 153.014 356.117 152.999 c h 355.508 159.764 m 355.508 160.061 355.242 160.358 354.914 160.358 c 354.523 160.358 354.305 160.046 354.305 159.764 c 354.305 159.468 354.555 159.171 354.898 159.171 c 355.273 159.171 355.508 159.483 355.508 159.764 c h 362.457 152.999 m 362.457 153.343 l 361.863 153.343 361.582 153.343 361.582 153.686 c 361.582 155.827 l 361.582 156.78 361.582 157.139 361.223 157.53 c 361.066 157.733 360.707 157.952 360.051 157.952 c 359.238 157.952 358.707 157.468 358.395 156.78 c 358.395 157.952 l 356.816 157.827 l 356.816 157.483 l 357.598 157.483 357.691 157.405 357.691 156.858 c 357.691 153.843 l 357.691 153.343 357.566 153.343 356.816 153.343 c 356.816 152.999 l 358.082 153.03 l 359.332 152.999 l 359.332 153.343 l 358.582 153.343 358.457 153.343 358.457 153.843 c 358.457 155.905 l 358.457 157.077 359.254 157.702 359.973 157.702 c 360.676 157.702 360.801 157.093 360.801 156.468 c 360.801 153.843 l 360.801 153.343 360.676 153.343 359.926 153.343 c 359.926 152.999 l 361.191 153.03 l h 368.129 157.53 m 368.129 157.718 367.988 158.077 367.551 158.077 c 367.332 158.077 366.832 157.999 366.363 157.546 c 365.895 157.921 365.426 157.952 365.176 157.952 c 364.129 157.952 363.363 157.171 363.363 156.311 c 363.363 155.827 363.613 155.389 363.895 155.155 c 363.738 154.999 363.535 154.624 363.535 154.233 c 363.535 153.889 363.691 153.452 364.035 153.233 c 363.363 153.046 363.004 152.561 363.004 152.108 c 363.004 151.311 364.113 150.686 365.488 150.686 c 366.801 150.686 367.973 151.264 367.973 152.139 c 367.973 152.53 367.816 153.093 367.238 153.421 c 366.645 153.733 366.004 153.733 365.316 153.733 c 365.035 153.733 364.551 153.733 364.473 153.733 c 364.113 153.78 363.879 154.124 363.879 154.483 c 363.879 154.53 363.879 154.796 364.066 155.014 c 364.504 154.702 364.973 154.671 365.176 154.671 c 366.223 154.671 366.988 155.436 366.988 156.311 c 366.988 156.718 366.816 157.139 366.535 157.389 c 366.941 157.764 367.348 157.827 367.535 157.827 c 367.535 157.827 367.613 157.827 367.66 157.811 c 367.535 157.764 367.473 157.655 367.473 157.514 c 367.473 157.327 367.613 157.186 367.801 157.186 c 367.91 157.186 368.129 157.264 368.129 157.53 c h 366.16 156.311 m 366.16 156.014 366.145 155.655 365.973 155.374 c 365.879 155.233 365.629 154.921 365.176 154.921 c 364.207 154.921 364.207 156.046 364.207 156.311 c 364.207 156.608 364.223 156.968 364.379 157.249 c 364.473 157.374 364.723 157.686 365.176 157.686 c 366.16 157.686 366.16 156.577 366.16 156.311 c h 367.379 152.108 m 367.379 151.514 366.598 150.952 365.488 150.952 c 364.363 150.952 363.582 151.514 363.582 152.108 c 363.582 152.624 364.02 153.046 364.504 153.077 c 365.16 153.077 l 366.129 153.077 367.379 153.077 367.379 152.108 c h 377.441 153.999 m 377.441 154.624 l 377.16 154.624 l 377.16 153.999 l 377.16 153.343 376.879 153.28 376.77 153.28 c 376.395 153.28 376.348 153.78 376.348 153.843 c 376.348 156.077 l 376.348 156.546 376.348 156.983 375.941 157.405 c 375.504 157.843 374.941 158.014 374.41 158.014 c 373.488 158.014 372.723 157.499 372.723 156.749 c 372.723 156.421 372.941 156.218 373.238 156.218 c 373.551 156.218 373.754 156.452 373.754 156.733 c 373.754 156.874 373.691 157.249 373.176 157.249 c 373.473 157.655 374.035 157.764 374.395 157.764 c 374.941 157.764 375.582 157.327 375.582 156.343 c 375.582 155.921 l 375.004 155.889 374.223 155.858 373.52 155.514 c 372.676 155.139 372.395 154.561 372.395 154.061 c 372.395 153.155 373.473 152.874 374.191 152.874 c 374.926 152.874 375.441 153.327 375.66 153.843 c 375.691 153.405 376.004 152.936 376.535 152.936 c 376.77 152.936 377.441 153.093 377.441 153.999 c h 375.582 154.561 m 375.582 153.499 374.77 153.124 374.27 153.124 c 373.723 153.124 373.254 153.514 373.254 154.077 c 373.254 154.686 373.723 155.624 375.582 155.686 c h 383.633 152.999 m 383.633 153.343 l 382.836 153.343 382.758 153.421 382.758 153.968 c 382.758 157.952 l 381.102 157.827 l 381.102 157.483 l 381.883 157.483 381.977 157.405 381.977 156.858 c 381.977 154.858 l 381.977 153.889 381.445 153.124 380.617 153.124 c 379.68 153.124 379.633 153.655 379.633 154.233 c 379.633 157.952 l 377.992 157.827 l 377.992 157.483 l 378.867 157.483 378.867 157.452 378.867 156.452 c 378.867 154.764 l 378.867 153.889 378.867 152.874 380.57 152.874 c 381.195 152.874 381.695 153.186 382.008 153.889 c 382.008 152.874 l h 389.305 157.53 m 389.305 157.718 389.164 158.077 388.727 158.077 c 388.508 158.077 388.008 157.999 387.539 157.546 c 387.07 157.921 386.602 157.952 386.352 157.952 c 385.305 157.952 384.539 157.171 384.539 156.311 c 384.539 155.827 384.789 155.389 385.07 155.155 c 384.914 154.999 384.711 154.624 384.711 154.233 c 384.711 153.889 384.867 153.452 385.211 153.233 c 384.539 153.046 384.18 152.561 384.18 152.108 c 384.18 151.311 385.289 150.686 386.664 150.686 c 387.977 150.686 389.148 151.264 389.148 152.139 c 389.148 152.53 388.992 153.093 388.414 153.421 c 387.82 153.733 387.18 153.733 386.492 153.733 c 386.211 153.733 385.727 153.733 385.648 153.733 c 385.289 153.78 385.055 154.124 385.055 154.483 c 385.055 154.53 385.055 154.796 385.242 155.014 c 385.68 154.702 386.148 154.671 386.352 154.671 c 387.398 154.671 388.164 155.436 388.164 156.311 c 388.164 156.718 387.992 157.139 387.711 157.389 c 388.117 157.764 388.523 157.827 388.711 157.827 c 388.711 157.827 388.789 157.827 388.836 157.811 c 388.711 157.764 388.648 157.655 388.648 157.514 c 388.648 157.327 388.789 157.186 388.977 157.186 c 389.086 157.186 389.305 157.264 389.305 157.53 c h 387.336 156.311 m 387.336 156.014 387.32 155.655 387.148 155.374 c 387.055 155.233 386.805 154.921 386.352 154.921 c 385.383 154.921 385.383 156.046 385.383 156.311 c 385.383 156.608 385.398 156.968 385.555 157.249 c 385.648 157.374 385.898 157.686 386.352 157.686 c 387.336 157.686 387.336 156.577 387.336 156.311 c h 388.555 152.108 m 388.555 151.514 387.773 150.952 386.664 150.952 c 385.539 150.952 384.758 151.514 384.758 152.108 c 384.758 152.624 385.195 153.046 385.68 153.077 c 386.336 153.077 l 387.305 153.077 388.555 153.077 388.555 152.108 c h 395.469 152.999 m 395.469 153.343 l 394.672 153.343 394.594 153.421 394.594 153.968 c 394.594 157.952 l 392.938 157.827 l 392.938 157.483 l 393.719 157.483 393.812 157.405 393.812 156.858 c 393.812 154.858 l 393.812 153.889 393.281 153.124 392.453 153.124 c 391.516 153.124 391.469 153.655 391.469 154.233 c 391.469 157.952 l 389.828 157.827 l 389.828 157.483 l 390.703 157.483 390.703 157.452 390.703 156.452 c 390.703 154.764 l 390.703 153.889 390.703 152.874 392.406 152.874 c 393.031 152.874 393.531 153.186 393.844 153.889 c 393.844 152.874 l h 400.359 154.327 m 400.359 154.436 400.266 154.468 400.203 154.468 c 400.109 154.468 400.078 154.405 400.062 154.311 c 399.672 153.155 398.656 153.155 398.547 153.155 c 397.984 153.155 397.547 153.499 397.281 153.905 c 396.953 154.436 396.953 155.186 396.953 155.593 c 400.078 155.593 l 400.312 155.593 400.359 155.593 400.359 155.827 c 400.359 156.936 399.75 158.014 398.344 158.014 c 397.047 158.014 396.016 156.858 396.016 155.468 c 396.016 153.968 397.188 152.874 398.484 152.874 c 399.844 152.874 400.359 154.124 400.359 154.327 c h 399.609 155.827 m 396.953 155.827 l 397.031 157.499 397.969 157.764 398.344 157.764 c 399.5 157.764 399.609 156.264 399.609 155.827 c h 408.441 154.436 m 408.441 155.03 408.113 155.358 407.973 155.499 c 407.598 155.858 407.16 155.952 406.691 156.03 c 406.066 156.155 405.316 156.311 405.316 156.952 c 405.316 157.343 405.613 157.811 406.566 157.811 c 407.801 157.811 407.863 156.796 407.879 156.452 c 407.895 156.343 408.02 156.343 408.02 156.343 c 408.16 156.343 408.16 156.405 408.16 156.624 c 408.16 157.749 l 408.16 157.936 408.16 158.014 408.035 158.014 c 407.988 158.014 407.957 158.014 407.816 157.889 c 407.785 157.843 407.676 157.733 407.629 157.702 c 407.207 158.014 406.738 158.014 406.566 158.014 c 405.207 158.014 404.785 157.264 404.785 156.639 c 404.785 156.249 404.957 155.936 405.254 155.686 c 405.613 155.389 405.941 155.327 406.738 155.171 c 406.988 155.124 407.91 154.952 407.91 154.139 c 407.91 153.577 407.52 153.124 406.645 153.124 c 405.691 153.124 405.301 153.764 405.082 154.718 c 405.051 154.858 405.035 154.905 404.926 154.905 c 404.785 154.905 404.785 154.827 404.785 154.624 c 404.785 153.139 l 404.785 152.952 404.785 152.874 404.91 152.874 c 404.957 152.874 404.973 152.889 405.176 153.093 c 405.207 153.124 405.207 153.139 405.41 153.358 c 405.895 152.889 406.41 152.874 406.645 152.874 c 407.926 152.874 408.441 153.624 408.441 154.436 c h 413.484 154.327 m 413.484 154.436 413.391 154.468 413.328 154.468 c 413.234 154.468 413.203 154.405 413.188 154.311 c 412.797 153.155 411.781 153.155 411.672 153.155 c 411.109 153.155 410.672 153.499 410.406 153.905 c 410.078 154.436 410.078 155.186 410.078 155.593 c 413.203 155.593 l 413.438 155.593 413.484 155.593 413.484 155.827 c 413.484 156.936 412.875 158.014 411.469 158.014 c 410.172 158.014 409.141 156.858 409.141 155.468 c 409.141 153.968 410.312 152.874 411.609 152.874 c 412.969 152.874 413.484 154.124 413.484 154.327 c h 412.734 155.827 m 410.078 155.827 l 410.156 157.499 411.094 157.764 411.469 157.764 c 412.625 157.764 412.734 156.264 412.734 155.827 c h 419.699 152.999 m 419.699 153.343 l 418.918 153.343 418.824 153.421 418.824 153.968 c 418.824 160.78 l 417.215 160.655 l 417.215 160.296 l 417.996 160.296 418.09 160.218 418.09 159.671 c 418.09 157.249 l 417.762 157.655 417.277 157.952 416.668 157.952 c 415.355 157.952 414.168 156.858 414.168 155.405 c 414.168 153.983 415.277 152.874 416.543 152.874 c 417.262 152.874 417.777 153.249 418.043 153.608 c 418.043 152.874 l h 418.043 154.327 m 418.043 154.124 418.043 154.093 417.934 153.905 c 417.59 153.374 417.09 153.124 416.605 153.124 c 416.105 153.124 415.699 153.421 415.434 153.843 c 415.137 154.296 415.105 154.936 415.105 155.389 c 415.105 155.811 415.121 156.483 415.449 156.983 c 415.684 157.327 416.105 157.702 416.715 157.702 c 417.105 157.702 417.574 157.53 417.934 157.03 c 418.043 156.843 418.043 156.811 418.043 156.624 c h 428.426 154.327 m 428.426 154.436 428.332 154.468 428.27 154.468 c 428.176 154.468 428.145 154.405 428.129 154.311 c 427.738 153.155 426.723 153.155 426.613 153.155 c 426.051 153.155 425.613 153.499 425.348 153.905 c 425.02 154.436 425.02 155.186 425.02 155.593 c 428.145 155.593 l 428.379 155.593 428.426 155.593 428.426 155.827 c 428.426 156.936 427.816 158.014 426.41 158.014 c 425.113 158.014 424.082 156.858 424.082 155.468 c 424.082 153.968 425.254 152.874 426.551 152.874 c 427.91 152.874 428.426 154.124 428.426 154.327 c h 427.676 155.827 m 425.02 155.827 l 425.098 157.499 426.035 157.764 426.41 157.764 c 427.566 157.764 427.676 156.264 427.676 155.827 c h 434.734 152.999 m 434.734 153.343 l 434.141 153.343 433.859 153.343 433.859 153.686 c 433.859 155.827 l 433.859 156.78 433.859 157.139 433.5 157.53 c 433.344 157.733 432.984 157.952 432.328 157.952 c 431.516 157.952 430.984 157.468 430.672 156.78 c 430.672 157.952 l 429.094 157.827 l 429.094 157.483 l 429.875 157.483 429.969 157.405 429.969 156.858 c 429.969 153.843 l 429.969 153.343 429.844 153.343 429.094 153.343 c 429.094 152.999 l 430.359 153.03 l 431.609 152.999 l 431.609 153.343 l 430.859 153.343 430.734 153.343 430.734 153.843 c 430.734 155.905 l 430.734 157.077 431.531 157.702 432.25 157.702 c 432.953 157.702 433.078 157.093 433.078 156.468 c 433.078 153.843 l 433.078 153.343 432.953 153.343 432.203 153.343 c 432.203 152.999 l 433.469 153.03 l h 437.734 152.999 m 437.734 153.343 l 437 153.343 436.953 153.405 436.953 153.843 c 436.953 157.952 l 435.391 157.827 l 435.391 157.483 l 436.109 157.483 436.219 157.405 436.219 156.858 c 436.219 153.843 l 436.219 153.343 436.094 153.343 435.344 153.343 c 435.344 152.999 l 436.578 153.03 l 436.969 153.03 437.359 153.014 437.734 152.999 c h 437.125 159.764 m 437.125 160.061 436.859 160.358 436.531 160.358 c 436.141 160.358 435.922 160.046 435.922 159.764 c 435.922 159.468 436.172 159.171 436.516 159.171 c 436.891 159.171 437.125 159.483 437.125 159.764 c h 447.184 152.999 m 447.184 153.343 l 446.605 153.343 446.324 153.343 446.309 153.686 c 446.309 155.827 l 446.309 156.78 446.309 157.139 445.965 157.53 c 445.809 157.733 445.434 157.952 444.777 157.952 c 443.84 157.952 443.355 157.28 443.168 156.858 c 442.996 157.827 442.168 157.952 441.668 157.952 c 440.855 157.952 440.324 157.468 440.012 156.78 c 440.012 157.952 l 438.434 157.827 l 438.434 157.483 l 439.215 157.483 439.309 157.405 439.309 156.858 c 439.309 153.843 l 439.309 153.343 439.184 153.343 438.434 153.343 c 438.434 152.999 l 439.699 153.03 l 440.949 152.999 l 440.949 153.343 l 440.199 153.343 440.074 153.343 440.074 153.843 c 440.074 155.905 l 440.074 157.077 440.871 157.702 441.59 157.702 c 442.293 157.702 442.418 157.093 442.418 156.468 c 442.418 153.843 l 442.418 153.343 442.293 153.343 441.543 153.343 c 441.543 152.999 l 442.809 153.03 l 444.074 152.999 l 444.074 153.343 l 443.324 153.343 443.199 153.343 443.199 153.843 c 443.199 155.905 l 443.199 157.077 443.996 157.702 444.699 157.702 c 445.418 157.702 445.543 157.093 445.543 156.468 c 445.543 153.843 l 445.543 153.343 445.418 153.343 444.668 153.343 c 444.668 152.999 l 445.934 153.03 l h f 325.094 139.999 m 325.094 140.624 l 324.812 140.624 l 324.812 139.999 l 324.812 139.343 324.531 139.28 324.422 139.28 c 324.047 139.28 324 139.78 324 139.843 c 324 142.077 l 324 142.546 324 142.983 323.594 143.405 c 323.156 143.843 322.594 144.014 322.062 144.014 c 321.141 144.014 320.375 143.499 320.375 142.749 c 320.375 142.421 320.594 142.218 320.891 142.218 c 321.203 142.218 321.406 142.452 321.406 142.733 c 321.406 142.874 321.344 143.249 320.828 143.249 c 321.125 143.655 321.688 143.764 322.047 143.764 c 322.594 143.764 323.234 143.327 323.234 142.343 c 323.234 141.921 l 322.656 141.889 321.875 141.858 321.172 141.514 c 320.328 141.139 320.047 140.561 320.047 140.061 c 320.047 139.155 321.125 138.874 321.844 138.874 c 322.578 138.874 323.094 139.327 323.312 139.843 c 323.344 139.405 323.656 138.936 324.188 138.936 c 324.422 138.936 325.094 139.093 325.094 139.999 c h 323.234 140.561 m 323.234 139.499 322.422 139.124 321.922 139.124 c 321.375 139.124 320.906 139.514 320.906 140.077 c 320.906 140.686 321.375 141.624 323.234 141.686 c h 331.191 138.999 m 331.191 139.343 l 330.41 139.343 330.316 139.421 330.316 139.968 c 330.316 146.78 l 328.707 146.655 l 328.707 146.296 l 329.488 146.296 329.582 146.218 329.582 145.671 c 329.582 143.249 l 329.254 143.655 328.77 143.952 328.16 143.952 c 326.848 143.952 325.66 142.858 325.66 141.405 c 325.66 139.983 326.77 138.874 328.035 138.874 c 328.754 138.874 329.27 139.249 329.535 139.608 c 329.535 138.874 l h 329.535 140.327 m 329.535 140.124 329.535 140.093 329.426 139.905 c 329.082 139.374 328.582 139.124 328.098 139.124 c 327.598 139.124 327.191 139.421 326.926 139.843 c 326.629 140.296 326.598 140.936 326.598 141.389 c 326.598 141.811 326.613 142.483 326.941 142.983 c 327.176 143.327 327.598 143.702 328.207 143.702 c 328.598 143.702 329.066 143.53 329.426 143.03 c 329.535 142.843 329.535 142.811 329.535 142.624 c h 334.285 138.999 m 334.285 139.343 l 333.551 139.343 333.504 139.405 333.504 139.843 c 333.504 143.952 l 331.941 143.827 l 331.941 143.483 l 332.66 143.483 332.77 143.405 332.77 142.858 c 332.77 139.843 l 332.77 139.343 332.645 139.343 331.895 139.343 c 331.895 138.999 l 333.129 139.03 l 333.52 139.03 333.91 139.014 334.285 138.999 c h 333.676 145.764 m 333.676 146.061 333.41 146.358 333.082 146.358 c 332.691 146.358 332.473 146.046 332.473 145.764 c 332.473 145.468 332.723 145.171 333.066 145.171 c 333.441 145.171 333.676 145.483 333.676 145.764 c h 340.473 141.421 m 340.473 142.843 339.379 143.952 338.129 143.952 c 337.254 143.952 336.785 143.452 336.551 143.218 c 336.551 143.952 l 334.941 143.827 l 334.941 143.483 l 335.738 143.483 335.816 143.405 335.816 142.921 c 335.816 137.671 l 335.816 137.171 335.691 137.171 334.941 137.171 c 334.941 136.827 l 336.191 136.858 l 337.457 136.827 l 337.457 137.171 l 336.707 137.171 336.582 137.171 336.582 137.671 c 336.582 139.655 l 336.645 139.483 337.113 138.874 337.973 138.874 c 339.301 138.874 340.473 139.968 340.473 141.421 c h 339.535 141.421 m 339.535 140.061 338.754 139.124 337.926 139.124 c 337.473 139.124 337.051 139.343 336.754 139.811 c 336.582 140.046 336.582 140.046 336.582 140.28 c 336.582 142.78 l 336.91 143.343 337.457 143.671 338.035 143.671 c 338.848 143.671 339.535 142.686 339.535 141.421 c h 343.629 138.999 m 343.629 139.343 l 342.895 139.343 342.848 139.405 342.848 139.843 c 342.848 143.952 l 341.285 143.827 l 341.285 143.483 l 342.004 143.483 342.113 143.405 342.113 142.858 c 342.113 139.843 l 342.113 139.343 341.988 139.343 341.238 139.343 c 341.238 138.999 l 342.473 139.03 l 342.863 139.03 343.254 139.014 343.629 138.999 c h 343.02 145.764 m 343.02 146.061 342.754 146.358 342.426 146.358 c 342.035 146.358 341.816 146.046 341.816 145.764 c 341.816 145.468 342.066 145.171 342.41 145.171 c 342.785 145.171 343.02 145.483 343.02 145.764 c h 348 140.436 m 348 141.03 347.672 141.358 347.531 141.499 c 347.156 141.858 346.719 141.952 346.25 142.03 c 345.625 142.155 344.875 142.311 344.875 142.952 c 344.875 143.343 345.172 143.811 346.125 143.811 c 347.359 143.811 347.422 142.796 347.438 142.452 c 347.453 142.343 347.578 142.343 347.578 142.343 c 347.719 142.343 347.719 142.405 347.719 142.624 c 347.719 143.749 l 347.719 143.936 347.719 144.014 347.594 144.014 c 347.547 144.014 347.516 144.014 347.375 143.889 c 347.344 143.843 347.234 143.733 347.188 143.702 c 346.766 144.014 346.297 144.014 346.125 144.014 c 344.766 144.014 344.344 143.264 344.344 142.639 c 344.344 142.249 344.516 141.936 344.812 141.686 c 345.172 141.389 345.5 141.327 346.297 141.171 c 346.547 141.124 347.469 140.952 347.469 140.139 c 347.469 139.577 347.078 139.124 346.203 139.124 c 345.25 139.124 344.859 139.764 344.641 140.718 c 344.609 140.858 344.594 140.905 344.484 140.905 c 344.344 140.905 344.344 140.827 344.344 140.624 c 344.344 139.139 l 344.344 138.952 344.344 138.874 344.469 138.874 c 344.516 138.874 344.531 138.889 344.734 139.093 c 344.766 139.124 344.766 139.139 344.969 139.358 c 345.453 138.889 345.969 138.874 346.203 138.874 c 347.484 138.874 348 139.624 348 140.436 c h 353.043 140.327 m 353.043 140.436 352.918 140.436 352.887 140.436 c 352.793 140.436 352.762 140.405 352.746 140.327 c 352.418 139.296 351.699 139.155 351.277 139.155 c 350.684 139.155 349.699 139.639 349.699 141.436 c 349.699 143.264 350.621 143.733 351.215 143.733 c 351.309 143.733 352.012 143.733 352.402 143.327 c 351.949 143.296 351.887 142.952 351.887 142.811 c 351.887 142.514 352.09 142.296 352.402 142.296 c 352.684 142.296 352.918 142.483 352.918 142.811 c 352.918 143.577 352.059 144.014 351.199 144.014 c 349.793 144.014 348.762 142.811 348.762 141.421 c 348.762 139.983 349.871 138.874 351.184 138.874 c 352.684 138.874 353.043 140.218 353.043 140.327 c h 356.117 138.999 m 356.117 139.343 l 355.383 139.343 355.336 139.405 355.336 139.843 c 355.336 143.952 l 353.773 143.827 l 353.773 143.483 l 354.492 143.483 354.602 143.405 354.602 142.858 c 354.602 139.843 l 354.602 139.343 354.477 139.343 353.727 139.343 c 353.727 138.999 l 354.961 139.03 l 355.352 139.03 355.742 139.014 356.117 138.999 c h 355.508 145.764 m 355.508 146.061 355.242 146.358 354.914 146.358 c 354.523 146.358 354.305 146.046 354.305 145.764 c 354.305 145.468 354.555 145.171 354.898 145.171 c 355.273 145.171 355.508 145.483 355.508 145.764 c h 362.457 138.999 m 362.457 139.343 l 361.863 139.343 361.582 139.343 361.582 139.686 c 361.582 141.827 l 361.582 142.78 361.582 143.139 361.223 143.53 c 361.066 143.733 360.707 143.952 360.051 143.952 c 359.238 143.952 358.707 143.468 358.395 142.78 c 358.395 143.952 l 356.816 143.827 l 356.816 143.483 l 357.598 143.483 357.691 143.405 357.691 142.858 c 357.691 139.843 l 357.691 139.343 357.566 139.343 356.816 139.343 c 356.816 138.999 l 358.082 139.03 l 359.332 138.999 l 359.332 139.343 l 358.582 139.343 358.457 139.343 358.457 139.843 c 358.457 141.905 l 358.457 143.077 359.254 143.702 359.973 143.702 c 360.676 143.702 360.801 143.093 360.801 142.468 c 360.801 139.843 l 360.801 139.343 360.676 139.343 359.926 139.343 c 359.926 138.999 l 361.191 139.03 l h 368.129 143.53 m 368.129 143.718 367.988 144.077 367.551 144.077 c 367.332 144.077 366.832 143.999 366.363 143.546 c 365.895 143.921 365.426 143.952 365.176 143.952 c 364.129 143.952 363.363 143.171 363.363 142.311 c 363.363 141.827 363.613 141.389 363.895 141.155 c 363.738 140.999 363.535 140.624 363.535 140.233 c 363.535 139.889 363.691 139.452 364.035 139.233 c 363.363 139.046 363.004 138.561 363.004 138.108 c 363.004 137.311 364.113 136.686 365.488 136.686 c 366.801 136.686 367.973 137.264 367.973 138.139 c 367.973 138.53 367.816 139.093 367.238 139.421 c 366.645 139.733 366.004 139.733 365.316 139.733 c 365.035 139.733 364.551 139.733 364.473 139.733 c 364.113 139.78 363.879 140.124 363.879 140.483 c 363.879 140.53 363.879 140.796 364.066 141.014 c 364.504 140.702 364.973 140.671 365.176 140.671 c 366.223 140.671 366.988 141.436 366.988 142.311 c 366.988 142.718 366.816 143.139 366.535 143.389 c 366.941 143.764 367.348 143.827 367.535 143.827 c 367.535 143.827 367.613 143.827 367.66 143.811 c 367.535 143.764 367.473 143.655 367.473 143.514 c 367.473 143.327 367.613 143.186 367.801 143.186 c 367.91 143.186 368.129 143.264 368.129 143.53 c h 366.16 142.311 m 366.16 142.014 366.145 141.655 365.973 141.374 c 365.879 141.233 365.629 140.921 365.176 140.921 c 364.207 140.921 364.207 142.046 364.207 142.311 c 364.207 142.608 364.223 142.968 364.379 143.249 c 364.473 143.374 364.723 143.686 365.176 143.686 c 366.16 143.686 366.16 142.577 366.16 142.311 c h 367.379 138.108 m 367.379 137.514 366.598 136.952 365.488 136.952 c 364.363 136.952 363.582 137.514 363.582 138.108 c 363.582 138.624 364.02 139.046 364.504 139.077 c 365.16 139.077 l 366.129 139.077 367.379 139.077 367.379 138.108 c h 376.066 140.436 m 376.066 141.03 375.738 141.358 375.598 141.499 c 375.223 141.858 374.785 141.952 374.316 142.03 c 373.691 142.155 372.941 142.311 372.941 142.952 c 372.941 143.343 373.238 143.811 374.191 143.811 c 375.426 143.811 375.488 142.796 375.504 142.452 c 375.52 142.343 375.645 142.343 375.645 142.343 c 375.785 142.343 375.785 142.405 375.785 142.624 c 375.785 143.749 l 375.785 143.936 375.785 144.014 375.66 144.014 c 375.613 144.014 375.582 144.014 375.441 143.889 c 375.41 143.843 375.301 143.733 375.254 143.702 c 374.832 144.014 374.363 144.014 374.191 144.014 c 372.832 144.014 372.41 143.264 372.41 142.639 c 372.41 142.249 372.582 141.936 372.879 141.686 c 373.238 141.389 373.566 141.327 374.363 141.171 c 374.613 141.124 375.535 140.952 375.535 140.139 c 375.535 139.577 375.145 139.124 374.27 139.124 c 373.316 139.124 372.926 139.764 372.707 140.718 c 372.676 140.858 372.66 140.905 372.551 140.905 c 372.41 140.905 372.41 140.827 372.41 140.624 c 372.41 139.139 l 372.41 138.952 372.41 138.874 372.535 138.874 c 372.582 138.874 372.598 138.889 372.801 139.093 c 372.832 139.124 372.832 139.139 373.035 139.358 c 373.52 138.889 374.035 138.874 374.27 138.874 c 375.551 138.874 376.066 139.624 376.066 140.436 c h 381.109 140.327 m 381.109 140.436 381.016 140.468 380.953 140.468 c 380.859 140.468 380.828 140.405 380.812 140.311 c 380.422 139.155 379.406 139.155 379.297 139.155 c 378.734 139.155 378.297 139.499 378.031 139.905 c 377.703 140.436 377.703 141.186 377.703 141.593 c 380.828 141.593 l 381.062 141.593 381.109 141.593 381.109 141.827 c 381.109 142.936 380.5 144.014 379.094 144.014 c 377.797 144.014 376.766 142.858 376.766 141.468 c 376.766 139.968 377.938 138.874 379.234 138.874 c 380.594 138.874 381.109 140.124 381.109 140.327 c h 380.359 141.827 m 377.703 141.827 l 377.781 143.499 378.719 143.764 379.094 143.764 c 380.25 143.764 380.359 142.264 380.359 141.827 c h 390.527 138.999 m 390.527 139.343 l 389.949 139.343 389.668 139.343 389.652 139.686 c 389.652 141.827 l 389.652 142.78 389.652 143.139 389.309 143.53 c 389.152 143.733 388.777 143.952 388.121 143.952 c 387.184 143.952 386.699 143.28 386.512 142.858 c 386.34 143.827 385.512 143.952 385.012 143.952 c 384.199 143.952 383.668 143.468 383.355 142.78 c 383.355 143.952 l 381.777 143.827 l 381.777 143.483 l 382.559 143.483 382.652 143.405 382.652 142.858 c 382.652 139.843 l 382.652 139.343 382.527 139.343 381.777 139.343 c 381.777 138.999 l 383.043 139.03 l 384.293 138.999 l 384.293 139.343 l 383.543 139.343 383.418 139.343 383.418 139.843 c 383.418 141.905 l 383.418 143.077 384.215 143.702 384.934 143.702 c 385.637 143.702 385.762 143.093 385.762 142.468 c 385.762 139.843 l 385.762 139.343 385.637 139.343 384.887 139.343 c 384.887 138.999 l 386.152 139.03 l 387.418 138.999 l 387.418 139.343 l 386.668 139.343 386.543 139.343 386.543 139.843 c 386.543 141.905 l 386.543 143.077 387.34 143.702 388.043 143.702 c 388.762 143.702 388.887 143.093 388.887 142.468 c 388.887 139.843 l 388.887 139.343 388.762 139.343 388.012 139.343 c 388.012 138.999 l 389.277 139.03 l h 396.602 141.421 m 396.602 142.843 395.508 143.952 394.258 143.952 c 393.383 143.952 392.914 143.452 392.68 143.218 c 392.68 143.952 l 391.07 143.827 l 391.07 143.483 l 391.867 143.483 391.945 143.405 391.945 142.921 c 391.945 137.671 l 391.945 137.171 391.82 137.171 391.07 137.171 c 391.07 136.827 l 392.32 136.858 l 393.586 136.827 l 393.586 137.171 l 392.836 137.171 392.711 137.171 392.711 137.671 c 392.711 139.655 l 392.773 139.483 393.242 138.874 394.102 138.874 c 395.43 138.874 396.602 139.968 396.602 141.421 c h 395.664 141.421 m 395.664 140.061 394.883 139.124 394.055 139.124 c 393.602 139.124 393.18 139.343 392.883 139.811 c 392.711 140.046 392.711 140.046 392.711 140.28 c 392.711 142.78 l 393.039 143.343 393.586 143.671 394.164 143.671 c 394.977 143.671 395.664 142.686 395.664 141.421 c h 401.648 140.327 m 401.648 140.436 401.555 140.468 401.492 140.468 c 401.398 140.468 401.367 140.405 401.352 140.311 c 400.961 139.155 399.945 139.155 399.836 139.155 c 399.273 139.155 398.836 139.499 398.57 139.905 c 398.242 140.436 398.242 141.186 398.242 141.593 c 401.367 141.593 l 401.602 141.593 401.648 141.593 401.648 141.827 c 401.648 142.936 401.039 144.014 399.633 144.014 c 398.336 144.014 397.305 142.858 397.305 141.468 c 397.305 139.968 398.477 138.874 399.773 138.874 c 401.133 138.874 401.648 140.124 401.648 140.327 c h 400.898 141.827 m 398.242 141.827 l 398.32 143.499 399.258 143.764 399.633 143.764 c 400.789 143.764 400.898 142.264 400.898 141.827 c h 406.035 143.264 m 406.035 143.624 405.691 143.952 405.207 143.952 c 404.395 143.952 403.988 143.202 403.832 142.718 c 403.832 143.952 l 402.27 143.827 l 402.27 143.483 l 403.051 143.483 403.145 143.405 403.145 142.858 c 403.145 139.843 l 403.145 139.343 403.02 139.343 402.27 139.343 c 402.27 138.999 l 403.551 139.03 l 403.988 139.03 404.52 139.03 404.973 138.999 c 404.973 139.343 l 404.738 139.343 l 403.91 139.343 403.879 139.468 403.879 139.874 c 403.879 141.593 l 403.879 142.702 404.348 143.702 405.207 143.702 c 405.285 143.702 405.301 143.702 405.332 143.686 c 405.301 143.686 405.066 143.546 405.066 143.249 c 405.066 142.936 405.301 142.78 405.551 142.78 c 405.754 142.78 406.035 142.905 406.035 143.264 c h 408.512 139.593 m 408.512 139.921 408.23 140.186 407.918 140.186 c 407.59 140.186 407.324 139.921 407.324 139.593 c 407.324 139.264 407.59 138.999 407.918 138.999 c 408.23 138.999 408.512 139.264 408.512 139.593 c h f 327.859 132.296 m 327.859 132.655 l 327.516 132.624 327.062 132.624 326.781 132.624 c 325.5 132.655 l 325.5 132.296 l 326.078 132.296 326.312 131.999 326.312 131.749 c 326.312 131.655 326.281 131.593 326.266 131.514 c 324.219 126.124 l 322.078 131.78 l 322 131.936 322 131.983 322 131.983 c 322 132.296 322.641 132.296 322.922 132.296 c 322.922 132.655 l 322.516 132.624 321.75 132.624 321.328 132.624 c 319.906 132.655 l 319.906 132.296 l 320.625 132.296 320.844 132.296 321 131.874 c 323.594 124.999 l 323.672 124.78 323.734 124.749 323.875 124.749 c 324.062 124.749 324.094 124.811 324.141 124.968 c 326.641 131.546 l 326.797 131.968 327.109 132.296 327.859 132.296 c h 332.742 126.327 m 332.742 126.436 332.648 126.468 332.586 126.468 c 332.492 126.468 332.461 126.405 332.445 126.311 c 332.055 125.155 331.039 125.155 330.93 125.155 c 330.367 125.155 329.93 125.499 329.664 125.905 c 329.336 126.436 329.336 127.186 329.336 127.593 c 332.461 127.593 l 332.695 127.593 332.742 127.593 332.742 127.827 c 332.742 128.936 332.133 130.014 330.727 130.014 c 329.43 130.014 328.398 128.858 328.398 127.468 c 328.398 125.968 329.57 124.874 330.867 124.874 c 332.227 124.874 332.742 126.124 332.742 126.327 c h 331.992 127.827 m 329.336 127.827 l 329.414 129.499 330.352 129.764 330.727 129.764 c 331.883 129.764 331.992 128.264 331.992 127.827 c h 337.082 126.436 m 337.082 127.03 336.754 127.358 336.613 127.499 c 336.238 127.858 335.801 127.952 335.332 128.03 c 334.707 128.155 333.957 128.311 333.957 128.952 c 333.957 129.343 334.254 129.811 335.207 129.811 c 336.441 129.811 336.504 128.796 336.52 128.452 c 336.535 128.343 336.66 128.343 336.66 128.343 c 336.801 128.343 336.801 128.405 336.801 128.624 c 336.801 129.749 l 336.801 129.936 336.801 130.014 336.676 130.014 c 336.629 130.014 336.598 130.014 336.457 129.889 c 336.426 129.843 336.316 129.733 336.27 129.702 c 335.848 130.014 335.379 130.014 335.207 130.014 c 333.848 130.014 333.426 129.264 333.426 128.639 c 333.426 128.249 333.598 127.936 333.895 127.686 c 334.254 127.389 334.582 127.327 335.379 127.171 c 335.629 127.124 336.551 126.952 336.551 126.139 c 336.551 125.577 336.16 125.124 335.285 125.124 c 334.332 125.124 333.941 125.764 333.723 126.718 c 333.691 126.858 333.676 126.905 333.566 126.905 c 333.426 126.905 333.426 126.827 333.426 126.624 c 333.426 125.139 l 333.426 124.952 333.426 124.874 333.551 124.874 c 333.598 124.874 333.613 124.889 333.816 125.093 c 333.848 125.124 333.848 125.139 334.051 125.358 c 334.535 124.889 335.051 124.874 335.285 124.874 c 336.566 124.874 337.082 125.624 337.082 126.436 c h 341.191 126.389 m 341.191 127.03 l 340.91 127.03 l 340.91 126.405 l 340.91 125.577 340.582 125.155 340.16 125.155 c 339.41 125.155 339.41 126.171 339.41 126.358 c 339.41 129.483 l 341.02 129.483 l 341.02 129.827 l 339.41 129.827 l 339.41 131.889 l 339.129 131.889 l 339.113 130.968 338.785 129.764 337.691 129.733 c 337.691 129.483 l 338.645 129.483 l 338.645 126.389 l 338.645 125.014 339.676 124.874 340.082 124.874 c 340.879 124.874 341.191 125.671 341.191 126.389 c h 344.59 124.999 m 344.59 125.343 l 343.855 125.343 343.809 125.405 343.809 125.843 c 343.809 129.952 l 342.246 129.827 l 342.246 129.483 l 342.965 129.483 343.074 129.405 343.074 128.858 c 343.074 125.843 l 343.074 125.343 342.949 125.343 342.199 125.343 c 342.199 124.999 l 343.434 125.03 l 343.824 125.03 344.215 125.014 344.59 124.999 c h 343.98 131.764 m 343.98 132.061 343.715 132.358 343.387 132.358 c 342.996 132.358 342.777 132.046 342.777 131.764 c 342.777 131.468 343.027 131.171 343.371 131.171 c 343.746 131.171 343.98 131.483 343.98 131.764 c h 350.773 127.421 m 350.773 128.843 349.664 129.952 348.398 129.952 c 347.523 129.952 347.039 129.421 346.852 129.218 c 346.852 132.78 l 345.242 132.655 l 345.242 132.296 l 346.023 132.296 346.117 132.218 346.117 131.671 c 346.117 124.999 l 346.398 124.999 l 346.805 125.686 l 346.961 125.436 347.445 124.874 348.273 124.874 c 349.602 124.874 350.773 125.968 350.773 127.421 c h 349.836 127.436 m 349.836 127.014 349.82 126.343 349.492 125.843 c 349.258 125.499 348.836 125.124 348.227 125.124 c 347.727 125.124 347.32 125.389 347.055 125.811 c 346.883 126.046 346.883 126.077 346.883 126.28 c 346.883 128.577 l 346.883 128.796 346.883 128.811 347.008 128.983 c 347.445 129.608 348.07 129.702 348.336 129.702 c 348.836 129.702 349.242 129.405 349.508 128.983 c 349.805 128.53 349.836 127.889 349.836 127.436 c h 357.164 124.999 m 357.164 125.343 l 356.367 125.343 356.289 125.421 356.289 125.968 c 356.289 129.952 l 354.633 129.827 l 354.633 129.483 l 355.414 129.483 355.508 129.405 355.508 128.858 c 355.508 126.858 l 355.508 125.889 354.977 125.124 354.148 125.124 c 353.211 125.124 353.164 125.655 353.164 126.233 c 353.164 129.952 l 351.523 129.827 l 351.523 129.483 l 352.398 129.483 352.398 129.452 352.398 128.452 c 352.398 126.764 l 352.398 125.889 352.398 124.874 354.102 124.874 c 354.727 124.874 355.227 125.186 355.539 125.889 c 355.539 124.874 l h 360.258 124.999 m 360.258 125.343 l 359.508 125.343 359.383 125.343 359.383 125.843 c 359.383 132.78 l 357.773 132.655 l 357.773 132.296 l 358.555 132.296 358.648 132.218 358.648 131.671 c 358.648 125.843 l 358.648 125.343 358.523 125.343 357.773 125.343 c 357.773 124.999 l 359.008 125.03 l h 366.504 124.999 m 366.504 125.343 l 365.707 125.343 365.629 125.421 365.629 125.968 c 365.629 129.952 l 363.973 129.827 l 363.973 129.483 l 364.754 129.483 364.848 129.405 364.848 128.858 c 364.848 126.858 l 364.848 125.889 364.316 125.124 363.488 125.124 c 362.551 125.124 362.504 125.655 362.504 126.233 c 362.504 129.952 l 360.863 129.827 l 360.863 129.483 l 361.738 129.483 361.738 129.452 361.738 128.452 c 361.738 126.764 l 361.738 125.889 361.738 124.874 363.441 124.874 c 364.066 124.874 364.566 125.186 364.879 125.889 c 364.879 124.874 l h 375.848 124.999 m 375.848 125.343 l 375.27 125.343 374.988 125.343 374.973 125.686 c 374.973 127.827 l 374.973 128.78 374.973 129.139 374.629 129.53 c 374.473 129.733 374.098 129.952 373.441 129.952 c 372.504 129.952 372.02 129.28 371.832 128.858 c 371.66 129.827 370.832 129.952 370.332 129.952 c 369.52 129.952 368.988 129.468 368.676 128.78 c 368.676 129.952 l 367.098 129.827 l 367.098 129.483 l 367.879 129.483 367.973 129.405 367.973 128.858 c 367.973 125.843 l 367.973 125.343 367.848 125.343 367.098 125.343 c 367.098 124.999 l 368.363 125.03 l 369.613 124.999 l 369.613 125.343 l 368.863 125.343 368.738 125.343 368.738 125.843 c 368.738 127.905 l 368.738 129.077 369.535 129.702 370.254 129.702 c 370.957 129.702 371.082 129.093 371.082 128.468 c 371.082 125.843 l 371.082 125.343 370.957 125.343 370.207 125.343 c 370.207 124.999 l 371.473 125.03 l 372.738 124.999 l 372.738 125.343 l 371.988 125.343 371.863 125.343 371.863 125.843 c 371.863 127.905 l 371.863 129.077 372.66 129.702 373.363 129.702 c 374.082 129.702 374.207 129.093 374.207 128.468 c 374.207 125.843 l 374.207 125.343 374.082 125.343 373.332 125.343 c 373.332 124.999 l 374.598 125.03 l h 384.477 126.327 m 384.477 126.436 384.383 126.468 384.32 126.468 c 384.227 126.468 384.195 126.405 384.18 126.311 c 383.789 125.155 382.773 125.155 382.664 125.155 c 382.102 125.155 381.664 125.499 381.398 125.905 c 381.07 126.436 381.07 127.186 381.07 127.593 c 384.195 127.593 l 384.43 127.593 384.477 127.593 384.477 127.827 c 384.477 128.936 383.867 130.014 382.461 130.014 c 381.164 130.014 380.133 128.858 380.133 127.468 c 380.133 125.968 381.305 124.874 382.602 124.874 c 383.961 124.874 384.477 126.124 384.477 126.327 c h 383.727 127.827 m 381.07 127.827 l 381.148 129.499 382.086 129.764 382.461 129.764 c 383.617 129.764 383.727 128.264 383.727 127.827 c h 387.645 124.999 m 387.645 125.343 l 386.895 125.343 386.77 125.343 386.77 125.843 c 386.77 132.78 l 385.16 132.655 l 385.16 132.296 l 385.941 132.296 386.035 132.218 386.035 131.671 c 386.035 125.843 l 386.035 125.343 385.91 125.343 385.16 125.343 c 385.16 124.999 l 386.395 125.03 l h 392.551 126.327 m 392.551 126.436 392.457 126.468 392.395 126.468 c 392.301 126.468 392.27 126.405 392.254 126.311 c 391.863 125.155 390.848 125.155 390.738 125.155 c 390.176 125.155 389.738 125.499 389.473 125.905 c 389.145 126.436 389.145 127.186 389.145 127.593 c 392.27 127.593 l 392.504 127.593 392.551 127.593 392.551 127.827 c 392.551 128.936 391.941 130.014 390.535 130.014 c 389.238 130.014 388.207 128.858 388.207 127.468 c 388.207 125.968 389.379 124.874 390.676 124.874 c 392.035 124.874 392.551 126.124 392.551 126.327 c h 391.801 127.827 m 389.145 127.827 l 389.223 129.499 390.16 129.764 390.535 129.764 c 391.691 129.764 391.801 128.264 391.801 127.827 c h 401.969 124.999 m 401.969 125.343 l 401.391 125.343 401.109 125.343 401.094 125.686 c 401.094 127.827 l 401.094 128.78 401.094 129.139 400.75 129.53 c 400.594 129.733 400.219 129.952 399.562 129.952 c 398.625 129.952 398.141 129.28 397.953 128.858 c 397.781 129.827 396.953 129.952 396.453 129.952 c 395.641 129.952 395.109 129.468 394.797 128.78 c 394.797 129.952 l 393.219 129.827 l 393.219 129.483 l 394 129.483 394.094 129.405 394.094 128.858 c 394.094 125.843 l 394.094 125.343 393.969 125.343 393.219 125.343 c 393.219 124.999 l 394.484 125.03 l 395.734 124.999 l 395.734 125.343 l 394.984 125.343 394.859 125.343 394.859 125.843 c 394.859 127.905 l 394.859 129.077 395.656 129.702 396.375 129.702 c 397.078 129.702 397.203 129.093 397.203 128.468 c 397.203 125.843 l 397.203 125.343 397.078 125.343 396.328 125.343 c 396.328 124.999 l 397.594 125.03 l 398.859 124.999 l 398.859 125.343 l 398.109 125.343 397.984 125.343 397.984 125.843 c 397.984 127.905 l 397.984 129.077 398.781 129.702 399.484 129.702 c 400.203 129.702 400.328 129.093 400.328 128.468 c 400.328 125.843 l 400.328 125.343 400.203 125.343 399.453 125.343 c 399.453 124.999 l 400.719 125.03 l h 406.855 126.327 m 406.855 126.436 406.762 126.468 406.699 126.468 c 406.605 126.468 406.574 126.405 406.559 126.311 c 406.168 125.155 405.152 125.155 405.043 125.155 c 404.48 125.155 404.043 125.499 403.777 125.905 c 403.449 126.436 403.449 127.186 403.449 127.593 c 406.574 127.593 l 406.809 127.593 406.855 127.593 406.855 127.827 c 406.855 128.936 406.246 130.014 404.84 130.014 c 403.543 130.014 402.512 128.858 402.512 127.468 c 402.512 125.968 403.684 124.874 404.98 124.874 c 406.34 124.874 406.855 126.124 406.855 126.327 c h 406.105 127.827 m 403.449 127.827 l 403.527 129.499 404.465 129.764 404.84 129.764 c 405.996 129.764 406.105 128.264 406.105 127.827 c h 413.164 124.999 m 413.164 125.343 l 412.57 125.343 412.289 125.343 412.289 125.686 c 412.289 127.827 l 412.289 128.78 412.289 129.139 411.93 129.53 c 411.773 129.733 411.414 129.952 410.758 129.952 c 409.945 129.952 409.414 129.468 409.102 128.78 c 409.102 129.952 l 407.523 129.827 l 407.523 129.483 l 408.305 129.483 408.398 129.405 408.398 128.858 c 408.398 125.843 l 408.398 125.343 408.273 125.343 407.523 125.343 c 407.523 124.999 l 408.789 125.03 l 410.039 124.999 l 410.039 125.343 l 409.289 125.343 409.164 125.343 409.164 125.843 c 409.164 127.905 l 409.164 129.077 409.961 129.702 410.68 129.702 c 411.383 129.702 411.508 129.093 411.508 128.468 c 411.508 125.843 l 411.508 125.343 411.383 125.343 410.633 125.343 c 410.633 124.999 l 411.898 125.03 l h 417.117 126.389 m 417.117 127.03 l 416.836 127.03 l 416.836 126.405 l 416.836 125.577 416.508 125.155 416.086 125.155 c 415.336 125.155 415.336 126.171 415.336 126.358 c 415.336 129.483 l 416.945 129.483 l 416.945 129.827 l 415.336 129.827 l 415.336 131.889 l 415.055 131.889 l 415.039 130.968 414.711 129.764 413.617 129.733 c 413.617 129.483 l 414.57 129.483 l 414.57 126.389 l 414.57 125.014 415.602 124.874 416.008 124.874 c 416.805 124.874 417.117 125.671 417.117 126.389 c h 423.754 124.999 m 423.754 125.343 l 422.957 125.343 422.879 125.421 422.879 125.968 c 422.879 129.952 l 421.223 129.827 l 421.223 129.483 l 422.004 129.483 422.098 129.405 422.098 128.858 c 422.098 126.858 l 422.098 125.889 421.566 125.124 420.738 125.124 c 419.801 125.124 419.754 125.655 419.754 126.233 c 419.754 129.952 l 418.113 129.827 l 418.113 129.483 l 418.988 129.483 418.988 129.452 418.988 128.452 c 418.988 126.764 l 418.988 125.889 418.988 124.874 420.691 124.874 c 421.316 124.874 421.816 125.186 422.129 125.889 c 422.129 124.874 l h 433.098 124.999 m 433.098 125.343 l 432.52 125.343 432.238 125.343 432.223 125.686 c 432.223 127.827 l 432.223 128.78 432.223 129.139 431.879 129.53 c 431.723 129.733 431.348 129.952 430.691 129.952 c 429.754 129.952 429.27 129.28 429.082 128.858 c 428.91 129.827 428.082 129.952 427.582 129.952 c 426.77 129.952 426.238 129.468 425.926 128.78 c 425.926 129.952 l 424.348 129.827 l 424.348 129.483 l 425.129 129.483 425.223 129.405 425.223 128.858 c 425.223 125.843 l 425.223 125.343 425.098 125.343 424.348 125.343 c 424.348 124.999 l 425.613 125.03 l 426.863 124.999 l 426.863 125.343 l 426.113 125.343 425.988 125.343 425.988 125.843 c 425.988 127.905 l 425.988 129.077 426.785 129.702 427.504 129.702 c 428.207 129.702 428.332 129.093 428.332 128.468 c 428.332 125.843 l 428.332 125.343 428.207 125.343 427.457 125.343 c 427.457 124.999 l 428.723 125.03 l 429.988 124.999 l 429.988 125.343 l 429.238 125.343 429.113 125.343 429.113 125.843 c 429.113 127.905 l 429.113 129.077 429.91 129.702 430.613 129.702 c 431.332 129.702 431.457 129.093 431.457 128.468 c 431.457 125.843 l 431.457 125.343 431.332 125.343 430.582 125.343 c 430.582 124.999 l 431.848 125.03 l h f 325.094 111.999 m 325.094 112.624 l 324.812 112.624 l 324.812 111.999 l 324.812 111.343 324.531 111.28 324.422 111.28 c 324.047 111.28 324 111.78 324 111.843 c 324 114.077 l 324 114.546 324 114.983 323.594 115.405 c 323.156 115.843 322.594 116.014 322.062 116.014 c 321.141 116.014 320.375 115.499 320.375 114.749 c 320.375 114.421 320.594 114.218 320.891 114.218 c 321.203 114.218 321.406 114.452 321.406 114.733 c 321.406 114.874 321.344 115.249 320.828 115.249 c 321.125 115.655 321.688 115.764 322.047 115.764 c 322.594 115.764 323.234 115.327 323.234 114.343 c 323.234 113.921 l 322.656 113.889 321.875 113.858 321.172 113.514 c 320.328 113.139 320.047 112.561 320.047 112.061 c 320.047 111.155 321.125 110.874 321.844 110.874 c 322.578 110.874 323.094 111.327 323.312 111.843 c 323.344 111.405 323.656 110.936 324.188 110.936 c 324.422 110.936 325.094 111.093 325.094 111.999 c h 323.234 112.561 m 323.234 111.499 322.422 111.124 321.922 111.124 c 321.375 111.124 320.906 111.514 320.906 112.077 c 320.906 112.686 321.375 113.624 323.234 113.686 c h 329.363 115.264 m 329.363 115.624 329.02 115.952 328.535 115.952 c 327.723 115.952 327.316 115.202 327.16 114.718 c 327.16 115.952 l 325.598 115.827 l 325.598 115.483 l 326.379 115.483 326.473 115.405 326.473 114.858 c 326.473 111.843 l 326.473 111.343 326.348 111.343 325.598 111.343 c 325.598 110.999 l 326.879 111.03 l 327.316 111.03 327.848 111.03 328.301 110.999 c 328.301 111.343 l 328.066 111.343 l 327.238 111.343 327.207 111.468 327.207 111.874 c 327.207 113.593 l 327.207 114.702 327.676 115.702 328.535 115.702 c 328.613 115.702 328.629 115.702 328.66 115.686 c 328.629 115.686 328.395 115.546 328.395 115.249 c 328.395 114.936 328.629 114.78 328.879 114.78 c 329.082 114.78 329.363 114.905 329.363 115.264 c h 334.34 112.327 m 334.34 112.436 334.215 112.436 334.184 112.436 c 334.09 112.436 334.059 112.405 334.043 112.327 c 333.715 111.296 332.996 111.155 332.574 111.155 c 331.98 111.155 330.996 111.639 330.996 113.436 c 330.996 115.264 331.918 115.733 332.512 115.733 c 332.605 115.733 333.309 115.733 333.699 115.327 c 333.246 115.296 333.184 114.952 333.184 114.811 c 333.184 114.514 333.387 114.296 333.699 114.296 c 333.98 114.296 334.215 114.483 334.215 114.811 c 334.215 115.577 333.355 116.014 332.496 116.014 c 331.09 116.014 330.059 114.811 330.059 113.421 c 330.059 111.983 331.168 110.874 332.48 110.874 c 333.98 110.874 334.34 112.218 334.34 112.327 c h 340.648 110.999 m 340.648 111.343 l 339.852 111.343 339.773 111.421 339.773 111.968 c 339.773 115.952 l 338.117 115.827 l 338.117 115.483 l 338.898 115.483 338.992 115.405 338.992 114.858 c 338.992 112.858 l 338.992 111.889 338.461 111.124 337.633 111.124 c 336.695 111.124 336.648 111.655 336.648 112.233 c 336.648 115.952 l 335.008 115.827 l 335.008 115.483 l 335.883 115.483 335.883 115.452 335.883 114.452 c 335.883 112.764 l 335.883 111.889 335.883 110.874 337.586 110.874 c 338.211 110.874 338.711 111.186 339.023 111.889 c 339.023 110.874 l h 347.391 110.999 m 347.391 111.343 l 346.656 111.343 346.609 111.405 346.609 111.843 c 346.609 115.952 l 345.047 115.827 l 345.047 115.483 l 345.766 115.483 345.875 115.405 345.875 114.858 c 345.875 111.843 l 345.875 111.343 345.75 111.343 345 111.343 c 345 110.999 l 346.234 111.03 l 346.625 111.03 347.016 111.014 347.391 110.999 c h 346.781 117.764 m 346.781 118.061 346.516 118.358 346.188 118.358 c 345.797 118.358 345.578 118.046 345.578 117.764 c 345.578 117.468 345.828 117.171 346.172 117.171 c 346.547 117.171 346.781 117.483 346.781 117.764 c h 353.73 110.999 m 353.73 111.343 l 353.137 111.343 352.855 111.343 352.855 111.686 c 352.855 113.827 l 352.855 114.78 352.855 115.139 352.496 115.53 c 352.34 115.733 351.98 115.952 351.324 115.952 c 350.512 115.952 349.98 115.468 349.668 114.78 c 349.668 115.952 l 348.09 115.827 l 348.09 115.483 l 348.871 115.483 348.965 115.405 348.965 114.858 c 348.965 111.843 l 348.965 111.343 348.84 111.343 348.09 111.343 c 348.09 110.999 l 349.355 111.03 l 350.605 110.999 l 350.605 111.343 l 349.855 111.343 349.73 111.343 349.73 111.843 c 349.73 113.905 l 349.73 115.077 350.527 115.702 351.246 115.702 c 351.949 115.702 352.074 115.093 352.074 114.468 c 352.074 111.843 l 352.074 111.343 351.949 111.343 351.199 111.343 c 351.199 110.999 l 352.465 111.03 l h 362.363 112.327 m 362.363 112.436 362.27 112.468 362.207 112.468 c 362.113 112.468 362.082 112.405 362.066 112.311 c 361.676 111.155 360.66 111.155 360.551 111.155 c 359.988 111.155 359.551 111.499 359.285 111.905 c 358.957 112.436 358.957 113.186 358.957 113.593 c 362.082 113.593 l 362.316 113.593 362.363 113.593 362.363 113.827 c 362.363 114.936 361.754 116.014 360.348 116.014 c 359.051 116.014 358.02 114.858 358.02 113.468 c 358.02 111.968 359.191 110.874 360.488 110.874 c 361.848 110.874 362.363 112.124 362.363 112.327 c h 361.613 113.827 m 358.957 113.827 l 359.035 115.499 359.973 115.764 360.348 115.764 c 361.504 115.764 361.613 114.264 361.613 113.827 c h 366.75 115.264 m 366.75 115.624 366.406 115.952 365.922 115.952 c 365.109 115.952 364.703 115.202 364.547 114.718 c 364.547 115.952 l 362.984 115.827 l 362.984 115.483 l 363.766 115.483 363.859 115.405 363.859 114.858 c 363.859 111.843 l 363.859 111.343 363.734 111.343 362.984 111.343 c 362.984 110.999 l 364.266 111.03 l 364.703 111.03 365.234 111.03 365.688 110.999 c 365.688 111.343 l 365.453 111.343 l 364.625 111.343 364.594 111.468 364.594 111.874 c 364.594 113.593 l 364.594 114.702 365.062 115.702 365.922 115.702 c 366 115.702 366.016 115.702 366.047 115.686 c 366.016 115.686 365.781 115.546 365.781 115.249 c 365.781 114.936 366.016 114.78 366.266 114.78 c 366.469 114.78 366.75 114.905 366.75 115.264 c h 372.473 111.999 m 372.473 112.624 l 372.191 112.624 l 372.191 111.999 l 372.191 111.343 371.91 111.28 371.801 111.28 c 371.426 111.28 371.379 111.78 371.379 111.843 c 371.379 114.077 l 371.379 114.546 371.379 114.983 370.973 115.405 c 370.535 115.843 369.973 116.014 369.441 116.014 c 368.52 116.014 367.754 115.499 367.754 114.749 c 367.754 114.421 367.973 114.218 368.27 114.218 c 368.582 114.218 368.785 114.452 368.785 114.733 c 368.785 114.874 368.723 115.249 368.207 115.249 c 368.504 115.655 369.066 115.764 369.426 115.764 c 369.973 115.764 370.613 115.327 370.613 114.343 c 370.613 113.921 l 370.035 113.889 369.254 113.858 368.551 113.514 c 367.707 113.139 367.426 112.561 367.426 112.061 c 367.426 111.155 368.504 110.874 369.223 110.874 c 369.957 110.874 370.473 111.327 370.691 111.843 c 370.723 111.405 371.035 110.936 371.566 110.936 c 371.801 110.936 372.473 111.093 372.473 111.999 c h 370.613 112.561 m 370.613 111.499 369.801 111.124 369.301 111.124 c 368.754 111.124 368.285 111.514 368.285 112.077 c 368.285 112.686 368.754 113.624 370.613 113.686 c h 376.387 112.389 m 376.387 113.03 l 376.105 113.03 l 376.105 112.405 l 376.105 111.577 375.777 111.155 375.355 111.155 c 374.605 111.155 374.605 112.171 374.605 112.358 c 374.605 115.483 l 376.215 115.483 l 376.215 115.827 l 374.605 115.827 l 374.605 117.889 l 374.324 117.889 l 374.309 116.968 373.98 115.764 372.887 115.733 c 372.887 115.483 l 373.84 115.483 l 373.84 112.389 l 373.84 111.014 374.871 110.874 375.277 110.874 c 376.074 110.874 376.387 111.671 376.387 112.389 c h 384.84 115.264 m 384.84 115.624 384.496 115.952 384.012 115.952 c 383.199 115.952 382.793 115.202 382.637 114.718 c 382.637 115.952 l 381.074 115.827 l 381.074 115.483 l 381.855 115.483 381.949 115.405 381.949 114.858 c 381.949 111.843 l 381.949 111.343 381.824 111.343 381.074 111.343 c 381.074 110.999 l 382.355 111.03 l 382.793 111.03 383.324 111.03 383.777 110.999 c 383.777 111.343 l 383.543 111.343 l 382.715 111.343 382.684 111.468 382.684 111.874 c 382.684 113.593 l 382.684 114.702 383.152 115.702 384.012 115.702 c 384.09 115.702 384.105 115.702 384.137 115.686 c 384.105 115.686 383.871 115.546 383.871 115.249 c 383.871 114.936 384.105 114.78 384.355 114.78 c 384.559 114.78 384.84 114.905 384.84 115.264 c h 391.16 110.999 m 391.16 111.343 l 390.566 111.343 390.285 111.343 390.285 111.686 c 390.285 113.827 l 390.285 114.78 390.285 115.139 389.926 115.53 c 389.77 115.733 389.41 115.952 388.754 115.952 c 387.816 115.952 387.316 115.28 387.145 114.874 c 387.129 114.874 l 387.129 118.78 l 385.52 118.655 l 385.52 118.296 l 386.301 118.296 386.395 118.218 386.395 117.671 c 386.395 111.843 l 386.395 111.343 386.27 111.343 385.52 111.343 c 385.52 110.999 l 386.785 111.03 l 388.035 110.999 l 388.035 111.343 l 387.285 111.343 387.16 111.343 387.16 111.843 c 387.16 113.905 l 387.16 115.077 387.957 115.702 388.676 115.702 c 389.379 115.702 389.504 115.093 389.504 114.468 c 389.504 111.843 l 389.504 111.343 389.379 111.343 388.629 111.343 c 388.629 110.999 l 389.895 111.03 l h 396.676 113.389 m 396.676 114.827 395.551 116.014 394.191 116.014 c 392.801 116.014 391.707 114.796 391.707 113.389 c 391.707 111.952 392.879 110.874 394.191 110.874 c 395.535 110.874 396.676 111.968 396.676 113.389 c h 395.738 113.483 m 395.738 113.077 395.738 112.483 395.488 111.983 c 395.254 111.483 394.754 111.155 394.191 111.155 c 393.707 111.155 393.223 111.389 392.926 111.905 c 392.645 112.405 392.645 113.077 392.645 113.483 c 392.645 113.921 392.645 114.53 392.91 115.014 c 393.207 115.53 393.738 115.764 394.191 115.764 c 394.676 115.764 395.16 115.53 395.457 115.046 c 395.738 114.561 395.738 113.905 395.738 113.483 c h 402.992 110.999 m 402.992 111.343 l 402.398 111.343 402.117 111.343 402.117 111.686 c 402.117 113.827 l 402.117 114.78 402.117 115.139 401.758 115.53 c 401.602 115.733 401.242 115.952 400.586 115.952 c 399.773 115.952 399.242 115.468 398.93 114.78 c 398.93 115.952 l 397.352 115.827 l 397.352 115.483 l 398.133 115.483 398.227 115.405 398.227 114.858 c 398.227 111.843 l 398.227 111.343 398.102 111.343 397.352 111.343 c 397.352 110.999 l 398.617 111.03 l 399.867 110.999 l 399.867 111.343 l 399.117 111.343 398.992 111.343 398.992 111.843 c 398.992 113.905 l 398.992 115.077 399.789 115.702 400.508 115.702 c 401.211 115.702 401.336 115.093 401.336 114.468 c 401.336 111.843 l 401.336 111.343 401.211 111.343 400.461 111.343 c 400.461 110.999 l 401.727 111.03 l h 407.883 112.327 m 407.883 112.436 407.758 112.436 407.727 112.436 c 407.633 112.436 407.602 112.405 407.586 112.327 c 407.258 111.296 406.539 111.155 406.117 111.155 c 405.523 111.155 404.539 111.639 404.539 113.436 c 404.539 115.264 405.461 115.733 406.055 115.733 c 406.148 115.733 406.852 115.733 407.242 115.327 c 406.789 115.296 406.727 114.952 406.727 114.811 c 406.727 114.514 406.93 114.296 407.242 114.296 c 407.523 114.296 407.758 114.483 407.758 114.811 c 407.758 115.577 406.898 116.014 406.039 116.014 c 404.633 116.014 403.602 114.811 403.602 113.421 c 403.602 111.983 404.711 110.874 406.023 110.874 c 407.523 110.874 407.883 112.218 407.883 112.327 c h 414.191 110.999 m 414.191 111.343 l 413.395 111.343 413.316 111.421 413.316 111.968 c 413.316 115.952 l 411.66 115.827 l 411.66 115.483 l 412.441 115.483 412.535 115.405 412.535 114.858 c 412.535 112.858 l 412.535 111.889 412.004 111.124 411.176 111.124 c 410.238 111.124 410.191 111.655 410.191 112.233 c 410.191 115.952 l 408.551 115.827 l 408.551 115.483 l 409.426 115.483 409.426 115.452 409.426 114.452 c 409.426 112.764 l 409.426 111.889 409.426 110.874 411.129 110.874 c 411.754 110.874 412.254 111.186 412.566 111.889 c 412.566 110.874 l h 418.457 112.436 m 418.457 113.03 418.129 113.358 417.988 113.499 c 417.613 113.858 417.176 113.952 416.707 114.03 c 416.082 114.155 415.332 114.311 415.332 114.952 c 415.332 115.343 415.629 115.811 416.582 115.811 c 417.816 115.811 417.879 114.796 417.895 114.452 c 417.91 114.343 418.035 114.343 418.035 114.343 c 418.176 114.343 418.176 114.405 418.176 114.624 c 418.176 115.749 l 418.176 115.936 418.176 116.014 418.051 116.014 c 418.004 116.014 417.973 116.014 417.832 115.889 c 417.801 115.843 417.691 115.733 417.645 115.702 c 417.223 116.014 416.754 116.014 416.582 116.014 c 415.223 116.014 414.801 115.264 414.801 114.639 c 414.801 114.249 414.973 113.936 415.27 113.686 c 415.629 113.389 415.957 113.327 416.754 113.171 c 417.004 113.124 417.926 112.952 417.926 112.139 c 417.926 111.577 417.535 111.124 416.66 111.124 c 415.707 111.124 415.316 111.764 415.098 112.718 c 415.066 112.858 415.051 112.905 414.941 112.905 c 414.801 112.905 414.801 112.827 414.801 112.624 c 414.801 111.139 l 414.801 110.952 414.801 110.874 414.926 110.874 c 414.973 110.874 414.988 110.889 415.191 111.093 c 415.223 111.124 415.223 111.139 415.426 111.358 c 415.91 110.889 416.426 110.874 416.66 110.874 c 417.941 110.874 418.457 111.624 418.457 112.436 c h 421.129 111.014 m 421.129 111.733 420.848 112.186 420.41 112.186 c 420.02 112.186 419.816 111.889 419.816 111.593 c 419.816 111.296 420.004 110.999 420.41 110.999 c 420.566 110.999 420.723 111.061 420.848 111.171 c 420.879 110.296 420.566 109.608 420.066 109.077 c 420.004 109.014 419.988 108.999 419.988 108.968 c 419.988 108.874 420.051 108.843 420.098 108.843 c 420.238 108.843 421.129 109.718 421.129 111.014 c h 428.457 110.999 m 428.457 111.343 l 427.723 111.343 427.676 111.405 427.676 111.843 c 427.676 115.952 l 426.113 115.827 l 426.113 115.483 l 426.832 115.483 426.941 115.405 426.941 114.858 c 426.941 111.843 l 426.941 111.343 426.816 111.343 426.066 111.343 c 426.066 110.999 l 427.301 111.03 l 427.691 111.03 428.082 111.014 428.457 110.999 c h 427.848 117.764 m 427.848 118.061 427.582 118.358 427.254 118.358 c 426.863 118.358 426.645 118.046 426.645 117.764 c 426.645 117.468 426.895 117.171 427.238 117.171 c 427.613 117.171 427.848 117.483 427.848 117.764 c h 434.707 110.999 m 434.707 111.343 l 433.926 111.343 433.832 111.421 433.832 111.968 c 433.832 118.78 l 432.223 118.655 l 432.223 118.296 l 433.004 118.296 433.098 118.218 433.098 117.671 c 433.098 115.249 l 432.77 115.655 432.285 115.952 431.676 115.952 c 430.363 115.952 429.176 114.858 429.176 113.405 c 429.176 111.983 430.285 110.874 431.551 110.874 c 432.27 110.874 432.785 111.249 433.051 111.608 c 433.051 110.874 l h 433.051 112.327 m 433.051 112.124 433.051 112.093 432.941 111.905 c 432.598 111.374 432.098 111.124 431.613 111.124 c 431.113 111.124 430.707 111.421 430.441 111.843 c 430.145 112.296 430.113 112.936 430.113 113.389 c 430.113 113.811 430.129 114.483 430.457 114.983 c 430.691 115.327 431.113 115.702 431.723 115.702 c 432.113 115.702 432.582 115.53 432.941 115.03 c 433.051 114.843 433.051 114.811 433.051 114.624 c h f 325.375 101.483 m 325.375 101.827 l 325.125 101.811 324.797 101.796 324.531 101.796 c 323.562 101.827 l 323.562 101.483 l 323.984 101.468 324.094 101.218 324.094 100.999 c 324.094 100.905 324.078 100.858 324.031 100.733 c 322.891 97.874 l 321.641 100.999 l 321.562 101.139 321.562 101.186 321.562 101.186 c 321.562 101.483 322 101.483 322.203 101.483 c 322.203 101.827 l 320.984 101.796 l 320.688 101.796 320.234 101.811 319.906 101.827 c 319.906 101.483 l 320.609 101.483 320.656 101.405 320.797 101.061 c 322.406 97.093 l 322.484 96.936 322.5 96.874 322.641 96.874 c 322.797 96.874 322.828 96.983 322.875 97.093 c 324.344 100.733 l 324.453 100.983 324.641 101.468 325.375 101.483 c h 330.875 99.389 m 330.875 100.827 329.75 102.014 328.391 102.014 c 327 102.014 325.906 100.796 325.906 99.389 c 325.906 97.952 327.078 96.874 328.391 96.874 c 329.734 96.874 330.875 97.968 330.875 99.389 c h 329.938 99.483 m 329.938 99.077 329.938 98.483 329.688 97.983 c 329.453 97.483 328.953 97.155 328.391 97.155 c 327.906 97.155 327.422 97.389 327.125 97.905 c 326.844 98.405 326.844 99.077 326.844 99.483 c 326.844 99.921 326.844 100.53 327.109 101.014 c 327.406 101.53 327.938 101.764 328.391 101.764 c 328.875 101.764 329.359 101.53 329.656 101.046 c 329.938 100.561 329.938 99.905 329.938 99.483 c h 334.051 96.999 m 334.051 97.343 l 333.301 97.343 333.176 97.343 333.176 97.843 c 333.176 104.78 l 331.566 104.655 l 331.566 104.296 l 332.348 104.296 332.441 104.218 332.441 103.671 c 332.441 97.843 l 332.441 97.343 332.316 97.343 331.566 97.343 c 331.566 96.999 l 332.801 97.03 l h 340.301 96.999 m 340.301 97.343 l 339.504 97.343 339.426 97.421 339.426 97.968 c 339.426 101.952 l 337.77 101.827 l 337.77 101.483 l 338.551 101.483 338.645 101.405 338.645 100.858 c 338.645 98.858 l 338.645 97.889 338.113 97.124 337.285 97.124 c 336.348 97.124 336.301 97.655 336.301 98.233 c 336.301 101.952 l 334.66 101.827 l 334.66 101.483 l 335.535 101.483 335.535 101.452 335.535 100.452 c 335.535 98.764 l 335.535 97.889 335.535 96.874 337.238 96.874 c 337.863 96.874 338.363 97.186 338.676 97.889 c 338.676 96.874 l h 344.254 98.389 m 344.254 99.03 l 343.973 99.03 l 343.973 98.405 l 343.973 97.577 343.645 97.155 343.223 97.155 c 342.473 97.155 342.473 98.171 342.473 98.358 c 342.473 101.483 l 344.082 101.483 l 344.082 101.827 l 342.473 101.827 l 342.473 103.889 l 342.191 103.889 l 342.176 102.968 341.848 101.764 340.754 101.733 c 340.754 101.483 l 341.707 101.483 l 341.707 98.389 l 341.707 97.014 342.738 96.874 343.145 96.874 c 343.941 96.874 344.254 97.671 344.254 98.389 c h 350.73 99.421 m 350.73 100.843 349.637 101.952 348.387 101.952 c 347.512 101.952 347.043 101.452 346.809 101.218 c 346.809 101.952 l 345.199 101.827 l 345.199 101.483 l 345.996 101.483 346.074 101.405 346.074 100.921 c 346.074 95.671 l 346.074 95.171 345.949 95.171 345.199 95.171 c 345.199 94.827 l 346.449 94.858 l 347.715 94.827 l 347.715 95.171 l 346.965 95.171 346.84 95.171 346.84 95.671 c 346.84 97.655 l 346.902 97.483 347.371 96.874 348.23 96.874 c 349.559 96.874 350.73 97.968 350.73 99.421 c h 349.793 99.421 m 349.793 98.061 349.012 97.124 348.184 97.124 c 347.73 97.124 347.309 97.343 347.012 97.811 c 346.84 98.046 346.84 98.046 346.84 98.28 c 346.84 100.78 l 347.168 101.343 347.715 101.671 348.293 101.671 c 349.105 101.671 349.793 100.686 349.793 99.421 c h 356.527 97.999 m 356.527 98.624 l 356.246 98.624 l 356.246 97.999 l 356.246 97.343 355.965 97.28 355.855 97.28 c 355.48 97.28 355.434 97.78 355.434 97.843 c 355.434 100.077 l 355.434 100.546 355.434 100.983 355.027 101.405 c 354.59 101.843 354.027 102.014 353.496 102.014 c 352.574 102.014 351.809 101.499 351.809 100.749 c 351.809 100.421 352.027 100.218 352.324 100.218 c 352.637 100.218 352.84 100.452 352.84 100.733 c 352.84 100.874 352.777 101.249 352.262 101.249 c 352.559 101.655 353.121 101.764 353.48 101.764 c 354.027 101.764 354.668 101.327 354.668 100.343 c 354.668 99.921 l 354.09 99.889 353.309 99.858 352.605 99.514 c 351.762 99.139 351.48 98.561 351.48 98.061 c 351.48 97.155 352.559 96.874 353.277 96.874 c 354.012 96.874 354.527 97.327 354.746 97.843 c 354.777 97.405 355.09 96.936 355.621 96.936 c 355.855 96.936 356.527 97.093 356.527 97.999 c h 354.668 98.561 m 354.668 97.499 353.855 97.124 353.355 97.124 c 352.809 97.124 352.34 97.514 352.34 98.077 c 352.34 98.686 352.809 99.624 354.668 99.686 c h 360.441 98.389 m 360.441 99.03 l 360.16 99.03 l 360.16 98.405 l 360.16 97.577 359.832 97.155 359.41 97.155 c 358.66 97.155 358.66 98.171 358.66 98.358 c 358.66 101.483 l 360.27 101.483 l 360.27 101.827 l 358.66 101.827 l 358.66 103.889 l 358.379 103.889 l 358.363 102.968 358.035 101.764 356.941 101.733 c 356.941 101.483 l 357.895 101.483 l 357.895 98.389 l 357.895 97.014 358.926 96.874 359.332 96.874 c 360.129 96.874 360.441 97.671 360.441 98.389 c h 373.926 96.999 m 373.926 97.343 l 373.348 97.343 373.066 97.343 373.051 97.686 c 373.051 99.827 l 373.051 100.78 373.051 101.139 372.707 101.53 c 372.551 101.733 372.176 101.952 371.52 101.952 c 370.582 101.952 370.098 101.28 369.91 100.858 c 369.738 101.827 368.91 101.952 368.41 101.952 c 367.598 101.952 367.066 101.468 366.754 100.78 c 366.754 101.952 l 365.176 101.827 l 365.176 101.483 l 365.957 101.483 366.051 101.405 366.051 100.858 c 366.051 97.843 l 366.051 97.343 365.926 97.343 365.176 97.343 c 365.176 96.999 l 366.441 97.03 l 367.691 96.999 l 367.691 97.343 l 366.941 97.343 366.816 97.343 366.816 97.843 c 366.816 99.905 l 366.816 101.077 367.613 101.702 368.332 101.702 c 369.035 101.702 369.16 101.093 369.16 100.468 c 369.16 97.843 l 369.16 97.343 369.035 97.343 368.285 97.343 c 368.285 96.999 l 369.551 97.03 l 370.816 96.999 l 370.816 97.343 l 370.066 97.343 369.941 97.343 369.941 97.843 c 369.941 99.905 l 369.941 101.077 370.738 101.702 371.441 101.702 c 372.16 101.702 372.285 101.093 372.285 100.468 c 372.285 97.843 l 372.285 97.343 372.16 97.343 371.41 97.343 c 371.41 96.999 l 372.676 97.03 l h 379.562 97.999 m 379.562 98.624 l 379.281 98.624 l 379.281 97.999 l 379.281 97.343 379 97.28 378.891 97.28 c 378.516 97.28 378.469 97.78 378.469 97.843 c 378.469 100.077 l 378.469 100.546 378.469 100.983 378.062 101.405 c 377.625 101.843 377.062 102.014 376.531 102.014 c 375.609 102.014 374.844 101.499 374.844 100.749 c 374.844 100.421 375.062 100.218 375.359 100.218 c 375.672 100.218 375.875 100.452 375.875 100.733 c 375.875 100.874 375.812 101.249 375.297 101.249 c 375.594 101.655 376.156 101.764 376.516 101.764 c 377.062 101.764 377.703 101.327 377.703 100.343 c 377.703 99.921 l 377.125 99.889 376.344 99.858 375.641 99.514 c 374.797 99.139 374.516 98.561 374.516 98.061 c 374.516 97.155 375.594 96.874 376.312 96.874 c 377.047 96.874 377.562 97.327 377.781 97.843 c 377.812 97.405 378.125 96.936 378.656 96.936 c 378.891 96.936 379.562 97.093 379.562 97.999 c h 377.703 98.561 m 377.703 97.499 376.891 97.124 376.391 97.124 c 375.844 97.124 375.375 97.514 375.375 98.077 c 375.375 98.686 375.844 99.624 377.703 99.686 c h 385.754 96.999 m 385.754 97.343 l 384.957 97.343 384.879 97.421 384.879 97.968 c 384.879 101.952 l 383.223 101.827 l 383.223 101.483 l 384.004 101.483 384.098 101.405 384.098 100.858 c 384.098 98.858 l 384.098 97.889 383.566 97.124 382.738 97.124 c 381.801 97.124 381.754 97.655 381.754 98.233 c 381.754 101.952 l 380.113 101.827 l 380.113 101.483 l 380.988 101.483 380.988 101.452 380.988 100.452 c 380.988 98.764 l 380.988 97.889 380.988 96.874 382.691 96.874 c 383.316 96.874 383.816 97.186 384.129 97.889 c 384.129 96.874 l h 390.066 101.264 m 390.066 101.624 389.723 101.952 389.238 101.952 c 388.426 101.952 388.02 101.202 387.863 100.718 c 387.863 101.952 l 386.301 101.827 l 386.301 101.483 l 387.082 101.483 387.176 101.405 387.176 100.858 c 387.176 97.843 l 387.176 97.343 387.051 97.343 386.301 97.343 c 386.301 96.999 l 387.582 97.03 l 388.02 97.03 388.551 97.03 389.004 96.999 c 389.004 97.343 l 388.77 97.343 l 387.941 97.343 387.91 97.468 387.91 97.874 c 387.91 99.593 l 387.91 100.702 388.379 101.702 389.238 101.702 c 389.316 101.702 389.332 101.702 389.363 101.686 c 389.332 101.686 389.098 101.546 389.098 101.249 c 389.098 100.936 389.332 100.78 389.582 100.78 c 389.785 100.78 390.066 100.905 390.066 101.264 c h 393.152 96.999 m 393.152 97.343 l 392.418 97.343 392.371 97.405 392.371 97.843 c 392.371 101.952 l 390.809 101.827 l 390.809 101.483 l 391.527 101.483 391.637 101.405 391.637 100.858 c 391.637 97.843 l 391.637 97.343 391.512 97.343 390.762 97.343 c 390.762 96.999 l 391.996 97.03 l 392.387 97.03 392.777 97.014 393.152 96.999 c h 392.543 103.764 m 392.543 104.061 392.277 104.358 391.949 104.358 c 391.559 104.358 391.34 104.046 391.34 103.764 c 391.34 103.468 391.59 103.171 391.934 103.171 c 392.309 103.171 392.543 103.483 392.543 103.764 c h 397.523 98.436 m 397.523 99.03 397.195 99.358 397.055 99.499 c 396.68 99.858 396.242 99.952 395.773 100.03 c 395.148 100.155 394.398 100.311 394.398 100.952 c 394.398 101.343 394.695 101.811 395.648 101.811 c 396.883 101.811 396.945 100.796 396.961 100.452 c 396.977 100.343 397.102 100.343 397.102 100.343 c 397.242 100.343 397.242 100.405 397.242 100.624 c 397.242 101.749 l 397.242 101.936 397.242 102.014 397.117 102.014 c 397.07 102.014 397.039 102.014 396.898 101.889 c 396.867 101.843 396.758 101.733 396.711 101.702 c 396.289 102.014 395.82 102.014 395.648 102.014 c 394.289 102.014 393.867 101.264 393.867 100.639 c 393.867 100.249 394.039 99.936 394.336 99.686 c 394.695 99.389 395.023 99.327 395.82 99.171 c 396.07 99.124 396.992 98.952 396.992 98.139 c 396.992 97.577 396.602 97.124 395.727 97.124 c 394.773 97.124 394.383 97.764 394.164 98.718 c 394.133 98.858 394.117 98.905 394.008 98.905 c 393.867 98.905 393.867 98.827 393.867 98.624 c 393.867 97.139 l 393.867 96.952 393.867 96.874 393.992 96.874 c 394.039 96.874 394.055 96.889 394.258 97.093 c 394.289 97.124 394.289 97.139 394.492 97.358 c 394.977 96.889 395.492 96.874 395.727 96.874 c 397.008 96.874 397.523 97.624 397.523 98.436 c h 407.496 99.421 m 407.496 100.843 406.402 101.952 405.152 101.952 c 404.277 101.952 403.809 101.452 403.574 101.218 c 403.574 101.952 l 401.965 101.827 l 401.965 101.483 l 402.762 101.483 402.84 101.405 402.84 100.921 c 402.84 95.671 l 402.84 95.171 402.715 95.171 401.965 95.171 c 401.965 94.827 l 403.215 94.858 l 404.48 94.827 l 404.48 95.171 l 403.73 95.171 403.605 95.171 403.605 95.671 c 403.605 97.655 l 403.668 97.483 404.137 96.874 404.996 96.874 c 406.324 96.874 407.496 97.968 407.496 99.421 c h 406.559 99.421 m 406.559 98.061 405.777 97.124 404.949 97.124 c 404.496 97.124 404.074 97.343 403.777 97.811 c 403.605 98.046 403.605 98.046 403.605 98.28 c 403.605 100.78 l 403.934 101.343 404.48 101.671 405.059 101.671 c 405.871 101.671 406.559 100.686 406.559 99.421 c h 411.965 101.264 m 411.965 101.624 411.621 101.952 411.137 101.952 c 410.324 101.952 409.918 101.202 409.762 100.718 c 409.762 101.952 l 408.199 101.827 l 408.199 101.483 l 408.98 101.483 409.074 101.405 409.074 100.858 c 409.074 97.843 l 409.074 97.343 408.949 97.343 408.199 97.343 c 408.199 96.999 l 409.48 97.03 l 409.918 97.03 410.449 97.03 410.902 96.999 c 410.902 97.343 l 410.668 97.343 l 409.84 97.343 409.809 97.468 409.809 97.874 c 409.809 99.593 l 409.809 100.702 410.277 101.702 411.137 101.702 c 411.215 101.702 411.23 101.702 411.262 101.686 c 411.23 101.686 410.996 101.546 410.996 101.249 c 410.996 100.936 411.23 100.78 411.48 100.78 c 411.684 100.78 411.965 100.905 411.965 101.264 c h 416.941 98.327 m 416.941 98.436 416.848 98.468 416.785 98.468 c 416.691 98.468 416.66 98.405 416.645 98.311 c 416.254 97.155 415.238 97.155 415.129 97.155 c 414.566 97.155 414.129 97.499 413.863 97.905 c 413.535 98.436 413.535 99.186 413.535 99.593 c 416.66 99.593 l 416.895 99.593 416.941 99.593 416.941 99.827 c 416.941 100.936 416.332 102.014 414.926 102.014 c 413.629 102.014 412.598 100.858 412.598 99.468 c 412.598 97.968 413.77 96.874 415.066 96.874 c 416.426 96.874 416.941 98.124 416.941 98.327 c h 416.191 99.827 m 413.535 99.827 l 413.613 101.499 414.551 101.764 414.926 101.764 c 416.082 101.764 416.191 100.264 416.191 99.827 c h 420.969 98.389 m 420.969 99.03 l 420.688 99.03 l 420.688 98.405 l 420.688 97.577 420.359 97.155 419.938 97.155 c 419.188 97.155 419.188 98.171 419.188 98.358 c 419.188 101.483 l 420.797 101.483 l 420.797 101.827 l 419.188 101.827 l 419.188 103.889 l 418.906 103.889 l 418.891 102.968 418.562 101.764 417.469 101.733 c 417.469 101.483 l 418.422 101.483 l 418.422 98.389 l 418.422 97.014 419.453 96.874 419.859 96.874 c 420.656 96.874 420.969 97.671 420.969 98.389 c h 424.367 96.999 m 424.367 97.343 l 423.633 97.343 423.586 97.405 423.586 97.843 c 423.586 101.952 l 422.023 101.827 l 422.023 101.483 l 422.742 101.483 422.852 101.405 422.852 100.858 c 422.852 97.843 l 422.852 97.343 422.727 97.343 421.977 97.343 c 421.977 96.999 l 423.211 97.03 l 423.602 97.03 423.992 97.014 424.367 96.999 c h 423.758 103.764 m 423.758 104.061 423.492 104.358 423.164 104.358 c 422.773 104.358 422.555 104.046 422.555 103.764 c 422.555 103.468 422.805 103.171 423.148 103.171 c 423.523 103.171 423.758 103.483 423.758 103.764 c h 430.707 96.999 m 430.707 97.343 l 429.91 97.343 429.832 97.421 429.832 97.968 c 429.832 101.952 l 428.176 101.827 l 428.176 101.483 l 428.957 101.483 429.051 101.405 429.051 100.858 c 429.051 98.858 l 429.051 97.889 428.52 97.124 427.691 97.124 c 426.754 97.124 426.707 97.655 426.707 98.233 c 426.707 101.952 l 425.066 101.827 l 425.066 101.483 l 425.941 101.483 425.941 101.452 425.941 100.452 c 425.941 98.764 l 425.941 97.889 425.941 96.874 427.645 96.874 c 428.27 96.874 428.77 97.186 429.082 97.889 c 429.082 96.874 l h 440.051 96.999 m 440.051 97.343 l 439.473 97.343 439.191 97.343 439.176 97.686 c 439.176 99.827 l 439.176 100.78 439.176 101.139 438.832 101.53 c 438.676 101.733 438.301 101.952 437.645 101.952 c 436.707 101.952 436.223 101.28 436.035 100.858 c 435.863 101.827 435.035 101.952 434.535 101.952 c 433.723 101.952 433.191 101.468 432.879 100.78 c 432.879 101.952 l 431.301 101.827 l 431.301 101.483 l 432.082 101.483 432.176 101.405 432.176 100.858 c 432.176 97.843 l 432.176 97.343 432.051 97.343 431.301 97.343 c 431.301 96.999 l 432.566 97.03 l 433.816 96.999 l 433.816 97.343 l 433.066 97.343 432.941 97.343 432.941 97.843 c 432.941 99.905 l 432.941 101.077 433.738 101.702 434.457 101.702 c 435.16 101.702 435.285 101.093 435.285 100.468 c 435.285 97.843 l 435.285 97.343 435.16 97.343 434.41 97.343 c 434.41 96.999 l 435.676 97.03 l 436.941 96.999 l 436.941 97.343 l 436.191 97.343 436.066 97.343 436.066 97.843 c 436.066 99.905 l 436.066 101.077 436.863 101.702 437.566 101.702 c 438.285 101.702 438.41 101.093 438.41 100.468 c 438.41 97.843 l 438.41 97.343 438.285 97.343 437.535 97.343 c 437.535 96.999 l 438.801 97.03 l h 442.441 97.593 m 442.441 97.921 442.16 98.186 441.848 98.186 c 441.52 98.186 441.254 97.921 441.254 97.593 c 441.254 97.264 441.52 96.999 441.848 96.999 c 442.16 96.999 442.441 97.264 442.441 97.593 c h f 327.859 90.296 m 327.859 90.655 l 327.516 90.624 327.062 90.624 326.781 90.624 c 325.5 90.655 l 325.5 90.296 l 326.078 90.296 326.312 89.999 326.312 89.749 c 326.312 89.655 326.281 89.593 326.266 89.514 c 324.219 84.124 l 322.078 89.78 l 322 89.936 322 89.983 322 89.983 c 322 90.296 322.641 90.296 322.922 90.296 c 322.922 90.655 l 322.516 90.624 321.75 90.624 321.328 90.624 c 319.906 90.655 l 319.906 90.296 l 320.625 90.296 320.844 90.296 321 89.874 c 323.594 82.999 l 323.672 82.78 323.734 82.749 323.875 82.749 c 324.062 82.749 324.094 82.811 324.141 82.968 c 326.641 89.546 l 326.797 89.968 327.109 90.296 327.859 90.296 c h 332.742 84.327 m 332.742 84.436 332.648 84.468 332.586 84.468 c 332.492 84.468 332.461 84.405 332.445 84.311 c 332.055 83.155 331.039 83.155 330.93 83.155 c 330.367 83.155 329.93 83.499 329.664 83.905 c 329.336 84.436 329.336 85.186 329.336 85.593 c 332.461 85.593 l 332.695 85.593 332.742 85.593 332.742 85.827 c 332.742 86.936 332.133 88.014 330.727 88.014 c 329.43 88.014 328.398 86.858 328.398 85.468 c 328.398 83.968 329.57 82.874 330.867 82.874 c 332.227 82.874 332.742 84.124 332.742 84.327 c h 331.992 85.827 m 329.336 85.827 l 329.414 87.499 330.352 87.764 330.727 87.764 c 331.883 87.764 331.992 86.264 331.992 85.827 c h 337.082 84.436 m 337.082 85.03 336.754 85.358 336.613 85.499 c 336.238 85.858 335.801 85.952 335.332 86.03 c 334.707 86.155 333.957 86.311 333.957 86.952 c 333.957 87.343 334.254 87.811 335.207 87.811 c 336.441 87.811 336.504 86.796 336.52 86.452 c 336.535 86.343 336.66 86.343 336.66 86.343 c 336.801 86.343 336.801 86.405 336.801 86.624 c 336.801 87.749 l 336.801 87.936 336.801 88.014 336.676 88.014 c 336.629 88.014 336.598 88.014 336.457 87.889 c 336.426 87.843 336.316 87.733 336.27 87.702 c 335.848 88.014 335.379 88.014 335.207 88.014 c 333.848 88.014 333.426 87.264 333.426 86.639 c 333.426 86.249 333.598 85.936 333.895 85.686 c 334.254 85.389 334.582 85.327 335.379 85.171 c 335.629 85.124 336.551 84.952 336.551 84.139 c 336.551 83.577 336.16 83.124 335.285 83.124 c 334.332 83.124 333.941 83.764 333.723 84.718 c 333.691 84.858 333.676 84.905 333.566 84.905 c 333.426 84.905 333.426 84.827 333.426 84.624 c 333.426 83.139 l 333.426 82.952 333.426 82.874 333.551 82.874 c 333.598 82.874 333.613 82.889 333.816 83.093 c 333.848 83.124 333.848 83.139 334.051 83.358 c 334.535 82.889 335.051 82.874 335.285 82.874 c 336.566 82.874 337.082 83.624 337.082 84.436 c h 341.191 84.389 m 341.191 85.03 l 340.91 85.03 l 340.91 84.405 l 340.91 83.577 340.582 83.155 340.16 83.155 c 339.41 83.155 339.41 84.171 339.41 84.358 c 339.41 87.483 l 341.02 87.483 l 341.02 87.827 l 339.41 87.827 l 339.41 89.889 l 339.129 89.889 l 339.113 88.968 338.785 87.764 337.691 87.733 c 337.691 87.483 l 338.645 87.483 l 338.645 84.389 l 338.645 83.014 339.676 82.874 340.082 82.874 c 340.879 82.874 341.191 83.671 341.191 84.389 c h 344.59 82.999 m 344.59 83.343 l 343.855 83.343 343.809 83.405 343.809 83.843 c 343.809 87.952 l 342.246 87.827 l 342.246 87.483 l 342.965 87.483 343.074 87.405 343.074 86.858 c 343.074 83.843 l 343.074 83.343 342.949 83.343 342.199 83.343 c 342.199 82.999 l 343.434 83.03 l 343.824 83.03 344.215 83.014 344.59 82.999 c h 343.98 89.764 m 343.98 90.061 343.715 90.358 343.387 90.358 c 342.996 90.358 342.777 90.046 342.777 89.764 c 342.777 89.468 343.027 89.171 343.371 89.171 c 343.746 89.171 343.98 89.483 343.98 89.764 c h 350.773 85.421 m 350.773 86.843 349.664 87.952 348.398 87.952 c 347.523 87.952 347.039 87.421 346.852 87.218 c 346.852 90.78 l 345.242 90.655 l 345.242 90.296 l 346.023 90.296 346.117 90.218 346.117 89.671 c 346.117 82.999 l 346.398 82.999 l 346.805 83.686 l 346.961 83.436 347.445 82.874 348.273 82.874 c 349.602 82.874 350.773 83.968 350.773 85.421 c h 349.836 85.436 m 349.836 85.014 349.82 84.343 349.492 83.843 c 349.258 83.499 348.836 83.124 348.227 83.124 c 347.727 83.124 347.32 83.389 347.055 83.811 c 346.883 84.046 346.883 84.077 346.883 84.28 c 346.883 86.577 l 346.883 86.796 346.883 86.811 347.008 86.983 c 347.445 87.608 348.07 87.702 348.336 87.702 c 348.836 87.702 349.242 87.405 349.508 86.983 c 349.805 86.53 349.836 85.889 349.836 85.436 c h 357.164 82.999 m 357.164 83.343 l 356.367 83.343 356.289 83.421 356.289 83.968 c 356.289 87.952 l 354.633 87.827 l 354.633 87.483 l 355.414 87.483 355.508 87.405 355.508 86.858 c 355.508 84.858 l 355.508 83.889 354.977 83.124 354.148 83.124 c 353.211 83.124 353.164 83.655 353.164 84.233 c 353.164 87.952 l 351.523 87.827 l 351.523 87.483 l 352.398 87.483 352.398 87.452 352.398 86.452 c 352.398 84.764 l 352.398 83.889 352.398 82.874 354.102 82.874 c 354.727 82.874 355.227 83.186 355.539 83.889 c 355.539 82.874 l h 360.258 82.999 m 360.258 83.343 l 359.508 83.343 359.383 83.343 359.383 83.843 c 359.383 90.78 l 357.773 90.655 l 357.773 90.296 l 358.555 90.296 358.648 90.218 358.648 89.671 c 358.648 83.843 l 358.648 83.343 358.523 83.343 357.773 83.343 c 357.773 82.999 l 359.008 83.03 l h 366.504 82.999 m 366.504 83.343 l 365.707 83.343 365.629 83.421 365.629 83.968 c 365.629 87.952 l 363.973 87.827 l 363.973 87.483 l 364.754 87.483 364.848 87.405 364.848 86.858 c 364.848 84.858 l 364.848 83.889 364.316 83.124 363.488 83.124 c 362.551 83.124 362.504 83.655 362.504 84.233 c 362.504 87.952 l 360.863 87.827 l 360.863 87.483 l 361.738 87.483 361.738 87.452 361.738 86.452 c 361.738 84.764 l 361.738 83.889 361.738 82.874 363.441 82.874 c 364.066 82.874 364.566 83.186 364.879 83.889 c 364.879 82.874 l h 375.848 82.999 m 375.848 83.343 l 375.27 83.343 374.988 83.343 374.973 83.686 c 374.973 85.827 l 374.973 86.78 374.973 87.139 374.629 87.53 c 374.473 87.733 374.098 87.952 373.441 87.952 c 372.504 87.952 372.02 87.28 371.832 86.858 c 371.66 87.827 370.832 87.952 370.332 87.952 c 369.52 87.952 368.988 87.468 368.676 86.78 c 368.676 87.952 l 367.098 87.827 l 367.098 87.483 l 367.879 87.483 367.973 87.405 367.973 86.858 c 367.973 83.843 l 367.973 83.343 367.848 83.343 367.098 83.343 c 367.098 82.999 l 368.363 83.03 l 369.613 82.999 l 369.613 83.343 l 368.863 83.343 368.738 83.343 368.738 83.843 c 368.738 85.905 l 368.738 87.077 369.535 87.702 370.254 87.702 c 370.957 87.702 371.082 87.093 371.082 86.468 c 371.082 83.843 l 371.082 83.343 370.957 83.343 370.207 83.343 c 370.207 82.999 l 371.473 83.03 l 372.738 82.999 l 372.738 83.343 l 371.988 83.343 371.863 83.343 371.863 83.843 c 371.863 85.905 l 371.863 87.077 372.66 87.702 373.363 87.702 c 374.082 87.702 374.207 87.093 374.207 86.468 c 374.207 83.843 l 374.207 83.343 374.082 83.343 373.332 83.343 c 373.332 82.999 l 374.598 83.03 l h 385.227 83.999 m 385.227 84.624 l 384.945 84.624 l 384.945 83.999 l 384.945 83.343 384.664 83.28 384.555 83.28 c 384.18 83.28 384.133 83.78 384.133 83.843 c 384.133 86.077 l 384.133 86.546 384.133 86.983 383.727 87.405 c 383.289 87.843 382.727 88.014 382.195 88.014 c 381.273 88.014 380.508 87.499 380.508 86.749 c 380.508 86.421 380.727 86.218 381.023 86.218 c 381.336 86.218 381.539 86.452 381.539 86.733 c 381.539 86.874 381.477 87.249 380.961 87.249 c 381.258 87.655 381.82 87.764 382.18 87.764 c 382.727 87.764 383.367 87.327 383.367 86.343 c 383.367 85.921 l 382.789 85.889 382.008 85.858 381.305 85.514 c 380.461 85.139 380.18 84.561 380.18 84.061 c 380.18 83.155 381.258 82.874 381.977 82.874 c 382.711 82.874 383.227 83.327 383.445 83.843 c 383.477 83.405 383.789 82.936 384.32 82.936 c 384.555 82.936 385.227 83.093 385.227 83.999 c h 383.367 84.561 m 383.367 83.499 382.555 83.124 382.055 83.124 c 381.508 83.124 381.039 83.514 381.039 84.077 c 381.039 84.686 381.508 85.624 383.367 85.686 c h 391.422 82.999 m 391.422 83.343 l 390.625 83.343 390.547 83.421 390.547 83.968 c 390.547 87.952 l 388.891 87.827 l 388.891 87.483 l 389.672 87.483 389.766 87.405 389.766 86.858 c 389.766 84.858 l 389.766 83.889 389.234 83.124 388.406 83.124 c 387.469 83.124 387.422 83.655 387.422 84.233 c 387.422 87.952 l 385.781 87.827 l 385.781 87.483 l 386.656 87.483 386.656 87.452 386.656 86.452 c 386.656 84.764 l 386.656 83.889 386.656 82.874 388.359 82.874 c 388.984 82.874 389.484 83.186 389.797 83.889 c 389.797 82.874 l h 396.312 84.327 m 396.312 84.436 396.188 84.436 396.156 84.436 c 396.062 84.436 396.031 84.405 396.016 84.327 c 395.688 83.296 394.969 83.155 394.547 83.155 c 393.953 83.155 392.969 83.639 392.969 85.436 c 392.969 87.264 393.891 87.733 394.484 87.733 c 394.578 87.733 395.281 87.733 395.672 87.327 c 395.219 87.296 395.156 86.952 395.156 86.811 c 395.156 86.514 395.359 86.296 395.672 86.296 c 395.953 86.296 396.188 86.483 396.188 86.811 c 396.188 87.577 395.328 88.014 394.469 88.014 c 393.062 88.014 392.031 86.811 392.031 85.421 c 392.031 83.983 393.141 82.874 394.453 82.874 c 395.953 82.874 396.312 84.218 396.312 84.327 c h 400.34 84.389 m 400.34 85.03 l 400.059 85.03 l 400.059 84.405 l 400.059 83.577 399.73 83.155 399.309 83.155 c 398.559 83.155 398.559 84.171 398.559 84.358 c 398.559 87.483 l 400.168 87.483 l 400.168 87.827 l 398.559 87.827 l 398.559 89.889 l 398.277 89.889 l 398.262 88.968 397.934 87.764 396.84 87.733 c 396.84 87.483 l 397.793 87.483 l 397.793 84.389 l 397.793 83.014 398.824 82.874 399.23 82.874 c 400.027 82.874 400.34 83.671 400.34 84.389 c h 406.254 85.389 m 406.254 86.827 405.129 88.014 403.77 88.014 c 402.379 88.014 401.285 86.796 401.285 85.389 c 401.285 83.952 402.457 82.874 403.77 82.874 c 405.113 82.874 406.254 83.968 406.254 85.389 c h 405.316 85.483 m 405.316 85.077 405.316 84.483 405.066 83.983 c 404.832 83.483 404.332 83.155 403.77 83.155 c 403.285 83.155 402.801 83.389 402.504 83.905 c 402.223 84.405 402.223 85.077 402.223 85.483 c 402.223 85.921 402.223 86.53 402.488 87.014 c 402.785 87.53 403.316 87.764 403.77 87.764 c 404.254 87.764 404.738 87.53 405.035 87.046 c 405.316 86.561 405.316 85.905 405.316 85.483 c h 410.652 87.264 m 410.652 87.624 410.309 87.952 409.824 87.952 c 409.012 87.952 408.605 87.202 408.449 86.718 c 408.449 87.952 l 406.887 87.827 l 406.887 87.483 l 407.668 87.483 407.762 87.405 407.762 86.858 c 407.762 83.843 l 407.762 83.343 407.637 83.343 406.887 83.343 c 406.887 82.999 l 408.168 83.03 l 408.605 83.03 409.137 83.03 409.59 82.999 c 409.59 83.343 l 409.355 83.343 l 408.527 83.343 408.496 83.468 408.496 83.874 c 408.496 85.593 l 408.496 86.702 408.965 87.702 409.824 87.702 c 409.902 87.702 409.918 87.702 409.949 87.686 c 409.918 87.686 409.684 87.546 409.684 87.249 c 409.684 86.936 409.918 86.78 410.168 86.78 c 410.371 86.78 410.652 86.905 410.652 87.264 c h 413.254 83.014 m 413.254 83.733 412.973 84.186 412.535 84.186 c 412.145 84.186 411.941 83.889 411.941 83.593 c 411.941 83.296 412.129 82.999 412.535 82.999 c 412.691 82.999 412.848 83.061 412.973 83.171 c 413.004 82.296 412.691 81.608 412.191 81.077 c 412.129 81.014 412.113 80.999 412.113 80.968 c 412.113 80.874 412.176 80.843 412.223 80.843 c 412.363 80.843 413.254 81.718 413.254 83.014 c h 423.723 80.827 m 423.723 81.171 l 422.973 81.171 422.848 81.171 422.848 81.671 c 422.848 87.952 l 422.598 87.952 l 422.176 86.936 l 422.035 87.249 421.566 87.952 420.676 87.952 c 419.379 87.952 418.191 86.858 418.191 85.405 c 418.191 84.014 419.285 82.874 420.582 82.874 c 421.363 82.874 421.832 83.358 422.066 83.686 c 422.066 81.671 l 422.066 81.171 421.957 81.171 421.207 81.171 c 421.207 80.827 l 422.457 80.858 l h 422.113 84.53 m 422.113 84.171 421.91 83.843 421.66 83.577 c 421.52 83.421 421.16 83.124 420.629 83.124 c 419.816 83.124 419.129 84.124 419.129 85.405 c 419.129 86.733 419.91 87.671 420.738 87.671 c 421.629 87.671 422.113 86.702 422.113 86.108 c h 429.723 82.999 m 429.723 83.343 l 428.926 83.343 428.848 83.421 428.848 83.968 c 428.848 87.952 l 427.191 87.827 l 427.191 87.483 l 427.973 87.483 428.066 87.405 428.066 86.858 c 428.066 84.858 l 428.066 83.889 427.535 83.124 426.707 83.124 c 425.77 83.124 425.723 83.655 425.723 84.233 c 425.723 87.952 l 424.082 87.827 l 424.082 87.483 l 424.957 87.483 424.957 87.452 424.957 86.452 c 424.957 84.764 l 424.957 83.889 424.957 82.874 426.66 82.874 c 427.285 82.874 427.785 83.186 428.098 83.889 c 428.098 82.874 l h 435.363 83.999 m 435.363 84.624 l 435.082 84.624 l 435.082 83.999 l 435.082 83.343 434.801 83.28 434.691 83.28 c 434.316 83.28 434.27 83.78 434.27 83.843 c 434.27 86.077 l 434.27 86.546 434.27 86.983 433.863 87.405 c 433.426 87.843 432.863 88.014 432.332 88.014 c 431.41 88.014 430.645 87.499 430.645 86.749 c 430.645 86.421 430.863 86.218 431.16 86.218 c 431.473 86.218 431.676 86.452 431.676 86.733 c 431.676 86.874 431.613 87.249 431.098 87.249 c 431.395 87.655 431.957 87.764 432.316 87.764 c 432.863 87.764 433.504 87.327 433.504 86.343 c 433.504 85.921 l 432.926 85.889 432.145 85.858 431.441 85.514 c 430.598 85.139 430.316 84.561 430.316 84.061 c 430.316 83.155 431.395 82.874 432.113 82.874 c 432.848 82.874 433.363 83.327 433.582 83.843 c 433.613 83.405 433.926 82.936 434.457 82.936 c 434.691 82.936 435.363 83.093 435.363 83.999 c h 433.504 84.561 m 433.504 83.499 432.691 83.124 432.191 83.124 c 431.645 83.124 431.176 83.514 431.176 84.077 c 431.176 84.686 431.645 85.624 433.504 85.686 c h 444.668 82.999 m 444.668 83.343 l 444.09 83.343 443.809 83.343 443.793 83.686 c 443.793 85.827 l 443.793 86.78 443.793 87.139 443.449 87.53 c 443.293 87.733 442.918 87.952 442.262 87.952 c 441.324 87.952 440.84 87.28 440.652 86.858 c 440.48 87.827 439.652 87.952 439.152 87.952 c 438.34 87.952 437.809 87.468 437.496 86.78 c 437.496 87.952 l 435.918 87.827 l 435.918 87.483 l 436.699 87.483 436.793 87.405 436.793 86.858 c 436.793 83.843 l 436.793 83.343 436.668 83.343 435.918 83.343 c 435.918 82.999 l 437.184 83.03 l 438.434 82.999 l 438.434 83.343 l 437.684 83.343 437.559 83.343 437.559 83.843 c 437.559 85.905 l 437.559 87.077 438.355 87.702 439.074 87.702 c 439.777 87.702 439.902 87.093 439.902 86.468 c 439.902 83.843 l 439.902 83.343 439.777 83.343 439.027 83.343 c 439.027 82.999 l 440.293 83.03 l 441.559 82.999 l 441.559 83.343 l 440.809 83.343 440.684 83.343 440.684 83.843 c 440.684 85.905 l 440.684 87.077 441.48 87.702 442.184 87.702 c 442.902 87.702 443.027 87.093 443.027 86.468 c 443.027 83.843 l 443.027 83.343 442.902 83.343 442.152 83.343 c 442.152 82.999 l 443.418 83.03 l h f 325.688 68.999 m 325.688 69.343 l 325.094 69.343 324.812 69.343 324.812 69.686 c 324.812 71.827 l 324.812 72.78 324.812 73.139 324.453 73.53 c 324.297 73.733 323.938 73.952 323.281 73.952 c 322.469 73.952 321.938 73.468 321.625 72.78 c 321.625 73.952 l 320.047 73.827 l 320.047 73.483 l 320.828 73.483 320.922 73.405 320.922 72.858 c 320.922 69.843 l 320.922 69.343 320.797 69.343 320.047 69.343 c 320.047 68.999 l 321.312 69.03 l 322.562 68.999 l 322.562 69.343 l 321.812 69.343 321.688 69.343 321.688 69.843 c 321.688 71.905 l 321.688 73.077 322.484 73.702 323.203 73.702 c 323.906 73.702 324.031 73.093 324.031 72.468 c 324.031 69.843 l 324.031 69.343 323.906 69.343 323.156 69.343 c 323.156 68.999 l 324.422 69.03 l h 331.203 71.389 m 331.203 72.827 330.078 74.014 328.719 74.014 c 327.328 74.014 326.234 72.796 326.234 71.389 c 326.234 69.952 327.406 68.874 328.719 68.874 c 330.062 68.874 331.203 69.968 331.203 71.389 c h 330.266 71.483 m 330.266 71.077 330.266 70.483 330.016 69.983 c 329.781 69.483 329.281 69.155 328.719 69.155 c 328.234 69.155 327.75 69.389 327.453 69.905 c 327.172 70.405 327.172 71.077 327.172 71.483 c 327.172 71.921 327.172 72.53 327.438 73.014 c 327.734 73.53 328.266 73.764 328.719 73.764 c 329.203 73.764 329.688 73.53 329.984 73.046 c 330.266 72.561 330.266 71.905 330.266 71.483 c h 337.52 68.999 m 337.52 69.343 l 336.926 69.343 336.645 69.343 336.645 69.686 c 336.645 71.827 l 336.645 72.78 336.645 73.139 336.285 73.53 c 336.129 73.733 335.77 73.952 335.113 73.952 c 334.301 73.952 333.77 73.468 333.457 72.78 c 333.457 73.952 l 331.879 73.827 l 331.879 73.483 l 332.66 73.483 332.754 73.405 332.754 72.858 c 332.754 69.843 l 332.754 69.343 332.629 69.343 331.879 69.343 c 331.879 68.999 l 333.145 69.03 l 334.395 68.999 l 334.395 69.343 l 333.645 69.343 333.52 69.343 333.52 69.843 c 333.52 71.905 l 333.52 73.077 334.316 73.702 335.035 73.702 c 335.738 73.702 335.863 73.093 335.863 72.468 c 335.863 69.843 l 335.863 69.343 335.738 69.343 334.988 69.343 c 334.988 68.999 l 336.254 69.03 l h 347.34 71.421 m 347.34 72.843 346.246 73.952 344.996 73.952 c 344.121 73.952 343.652 73.452 343.418 73.218 c 343.418 73.952 l 341.809 73.827 l 341.809 73.483 l 342.605 73.483 342.684 73.405 342.684 72.921 c 342.684 67.671 l 342.684 67.171 342.559 67.171 341.809 67.171 c 341.809 66.827 l 343.059 66.858 l 344.324 66.827 l 344.324 67.171 l 343.574 67.171 343.449 67.171 343.449 67.671 c 343.449 69.655 l 343.512 69.483 343.98 68.874 344.84 68.874 c 346.168 68.874 347.34 69.968 347.34 71.421 c h 346.402 71.421 m 346.402 70.061 345.621 69.124 344.793 69.124 c 344.34 69.124 343.918 69.343 343.621 69.811 c 343.449 70.046 343.449 70.046 343.449 70.28 c 343.449 72.78 l 343.777 73.343 344.324 73.671 344.902 73.671 c 345.715 73.671 346.402 72.686 346.402 71.421 c h 353.73 68.999 m 353.73 69.343 l 353.137 69.343 352.855 69.343 352.855 69.686 c 352.855 71.827 l 352.855 72.78 352.855 73.139 352.496 73.53 c 352.34 73.733 351.98 73.952 351.324 73.952 c 350.387 73.952 349.887 73.28 349.715 72.874 c 349.699 72.874 l 349.699 76.78 l 348.09 76.655 l 348.09 76.296 l 348.871 76.296 348.965 76.218 348.965 75.671 c 348.965 69.843 l 348.965 69.343 348.84 69.343 348.09 69.343 c 348.09 68.999 l 349.355 69.03 l 350.605 68.999 l 350.605 69.343 l 349.855 69.343 349.73 69.343 349.73 69.843 c 349.73 71.905 l 349.73 73.077 350.527 73.702 351.246 73.702 c 351.949 73.702 352.074 73.093 352.074 72.468 c 352.074 69.843 l 352.074 69.343 351.949 69.343 351.199 69.343 c 351.199 68.999 l 352.465 69.03 l h 359.371 69.999 m 359.371 70.624 l 359.09 70.624 l 359.09 69.999 l 359.09 69.343 358.809 69.28 358.699 69.28 c 358.324 69.28 358.277 69.78 358.277 69.843 c 358.277 72.077 l 358.277 72.546 358.277 72.983 357.871 73.405 c 357.434 73.843 356.871 74.014 356.34 74.014 c 355.418 74.014 354.652 73.499 354.652 72.749 c 354.652 72.421 354.871 72.218 355.168 72.218 c 355.48 72.218 355.684 72.452 355.684 72.733 c 355.684 72.874 355.621 73.249 355.105 73.249 c 355.402 73.655 355.965 73.764 356.324 73.764 c 356.871 73.764 357.512 73.327 357.512 72.343 c 357.512 71.921 l 356.934 71.889 356.152 71.858 355.449 71.514 c 354.605 71.139 354.324 70.561 354.324 70.061 c 354.324 69.155 355.402 68.874 356.121 68.874 c 356.855 68.874 357.371 69.327 357.59 69.843 c 357.621 69.405 357.934 68.936 358.465 68.936 c 358.699 68.936 359.371 69.093 359.371 69.999 c h 357.512 70.561 m 357.512 69.499 356.699 69.124 356.199 69.124 c 355.652 69.124 355.184 69.514 355.184 70.077 c 355.184 70.686 355.652 71.624 357.512 71.686 c h 363.645 73.264 m 363.645 73.624 363.301 73.952 362.816 73.952 c 362.004 73.952 361.598 73.202 361.441 72.718 c 361.441 73.952 l 359.879 73.827 l 359.879 73.483 l 360.66 73.483 360.754 73.405 360.754 72.858 c 360.754 69.843 l 360.754 69.343 360.629 69.343 359.879 69.343 c 359.879 68.999 l 361.16 69.03 l 361.598 69.03 362.129 69.03 362.582 68.999 c 362.582 69.343 l 362.348 69.343 l 361.52 69.343 361.488 69.468 361.488 69.874 c 361.488 71.593 l 361.488 72.702 361.957 73.702 362.816 73.702 c 362.895 73.702 362.91 73.702 362.941 73.686 c 362.91 73.686 362.676 73.546 362.676 73.249 c 362.676 72.936 362.91 72.78 363.16 72.78 c 363.363 72.78 363.645 72.905 363.645 73.264 c h 368.617 70.327 m 368.617 70.436 368.523 70.468 368.461 70.468 c 368.367 70.468 368.336 70.405 368.32 70.311 c 367.93 69.155 366.914 69.155 366.805 69.155 c 366.242 69.155 365.805 69.499 365.539 69.905 c 365.211 70.436 365.211 71.186 365.211 71.593 c 368.336 71.593 l 368.57 71.593 368.617 71.593 368.617 71.827 c 368.617 72.936 368.008 74.014 366.602 74.014 c 365.305 74.014 364.273 72.858 364.273 71.468 c 364.273 69.968 365.445 68.874 366.742 68.874 c 368.102 68.874 368.617 70.124 368.617 70.327 c h 367.867 71.827 m 365.211 71.827 l 365.289 73.499 366.227 73.764 366.602 73.764 c 367.758 73.764 367.867 72.264 367.867 71.827 c h 372.645 70.389 m 372.645 71.03 l 372.363 71.03 l 372.363 70.405 l 372.363 69.577 372.035 69.155 371.613 69.155 c 370.863 69.155 370.863 70.171 370.863 70.358 c 370.863 73.483 l 372.473 73.483 l 372.473 73.827 l 370.863 73.827 l 370.863 75.889 l 370.582 75.889 l 370.566 74.968 370.238 73.764 369.145 73.733 c 369.145 73.483 l 370.098 73.483 l 370.098 70.389 l 370.098 69.014 371.129 68.874 371.535 68.874 c 372.332 68.874 372.645 69.671 372.645 70.389 c h 377.359 73.264 m 377.359 73.624 377.016 73.952 376.531 73.952 c 375.719 73.952 375.312 73.202 375.156 72.718 c 375.156 73.952 l 373.594 73.827 l 373.594 73.483 l 374.375 73.483 374.469 73.405 374.469 72.858 c 374.469 69.843 l 374.469 69.343 374.344 69.343 373.594 69.343 c 373.594 68.999 l 374.875 69.03 l 375.312 69.03 375.844 69.03 376.297 68.999 c 376.297 69.343 l 376.062 69.343 l 375.234 69.343 375.203 69.468 375.203 69.874 c 375.203 71.593 l 375.203 72.702 375.672 73.702 376.531 73.702 c 376.609 73.702 376.625 73.702 376.656 73.686 c 376.625 73.686 376.391 73.546 376.391 73.249 c 376.391 72.936 376.625 72.78 376.875 72.78 c 377.078 72.78 377.359 72.905 377.359 73.264 c h 383.082 69.999 m 383.082 70.624 l 382.801 70.624 l 382.801 69.999 l 382.801 69.343 382.52 69.28 382.41 69.28 c 382.035 69.28 381.988 69.78 381.988 69.843 c 381.988 72.077 l 381.988 72.546 381.988 72.983 381.582 73.405 c 381.145 73.843 380.582 74.014 380.051 74.014 c 379.129 74.014 378.363 73.499 378.363 72.749 c 378.363 72.421 378.582 72.218 378.879 72.218 c 379.191 72.218 379.395 72.452 379.395 72.733 c 379.395 72.874 379.332 73.249 378.816 73.249 c 379.113 73.655 379.676 73.764 380.035 73.764 c 380.582 73.764 381.223 73.327 381.223 72.343 c 381.223 71.921 l 380.645 71.889 379.863 71.858 379.16 71.514 c 378.316 71.139 378.035 70.561 378.035 70.061 c 378.035 69.155 379.113 68.874 379.832 68.874 c 380.566 68.874 381.082 69.327 381.301 69.843 c 381.332 69.405 381.645 68.936 382.176 68.936 c 382.41 68.936 383.082 69.093 383.082 69.999 c h 381.223 70.561 m 381.223 69.499 380.41 69.124 379.91 69.124 c 379.363 69.124 378.895 69.514 378.895 70.077 c 378.895 70.686 379.363 71.624 381.223 71.686 c h 391.02 76.108 m 391.02 76.53 390.598 76.889 390.004 76.889 c 389.223 76.889 388.27 76.296 388.27 75.108 c 388.27 73.827 l 387.395 73.827 l 387.395 73.483 l 388.27 73.483 l 388.27 69.843 l 388.27 69.343 388.145 69.343 387.395 69.343 c 387.395 68.999 l 388.676 69.03 l 389.129 69.03 389.645 69.03 390.098 68.999 c 390.098 69.343 l 389.863 69.343 l 389.035 69.343 389.02 69.468 389.02 69.874 c 389.02 73.483 l 390.285 73.483 l 390.285 73.827 l 388.973 73.827 l 388.973 75.124 l 388.973 76.108 389.52 76.655 390.004 76.655 c 390.051 76.655 390.207 76.655 390.379 76.577 c 390.238 76.53 390.051 76.374 390.051 76.108 c 390.051 75.843 390.223 75.624 390.52 75.624 c 390.848 75.624 391.02 75.843 391.02 76.108 c h 394.531 73.264 m 394.531 73.624 394.188 73.952 393.703 73.952 c 392.891 73.952 392.484 73.202 392.328 72.718 c 392.328 73.952 l 390.766 73.827 l 390.766 73.483 l 391.547 73.483 391.641 73.405 391.641 72.858 c 391.641 69.843 l 391.641 69.343 391.516 69.343 390.766 69.343 c 390.766 68.999 l 392.047 69.03 l 392.484 69.03 393.016 69.03 393.469 68.999 c 393.469 69.343 l 393.234 69.343 l 392.406 69.343 392.375 69.468 392.375 69.874 c 392.375 71.593 l 392.375 72.702 392.844 73.702 393.703 73.702 c 393.781 73.702 393.797 73.702 393.828 73.686 c 393.797 73.686 393.562 73.546 393.562 73.249 c 393.562 72.936 393.797 72.78 394.047 72.78 c 394.25 72.78 394.531 72.905 394.531 73.264 c h 397.613 68.999 m 397.613 69.343 l 396.879 69.343 396.832 69.405 396.832 69.843 c 396.832 73.952 l 395.27 73.827 l 395.27 73.483 l 395.988 73.483 396.098 73.405 396.098 72.858 c 396.098 69.843 l 396.098 69.343 395.973 69.343 395.223 69.343 c 395.223 68.999 l 396.457 69.03 l 396.848 69.03 397.238 69.014 397.613 68.999 c h 397.004 75.764 m 397.004 76.061 396.738 76.358 396.41 76.358 c 396.02 76.358 395.801 76.046 395.801 75.764 c 395.801 75.468 396.051 75.171 396.395 75.171 c 396.77 75.171 397.004 75.483 397.004 75.764 c h 403.957 68.999 m 403.957 69.343 l 403.363 69.343 403.082 69.343 403.082 69.686 c 403.082 71.827 l 403.082 72.78 403.082 73.139 402.723 73.53 c 402.566 73.733 402.207 73.952 401.551 73.952 c 400.738 73.952 400.207 73.468 399.895 72.78 c 399.895 73.952 l 398.316 73.827 l 398.316 73.483 l 399.098 73.483 399.191 73.405 399.191 72.858 c 399.191 69.843 l 399.191 69.343 399.066 69.343 398.316 69.343 c 398.316 68.999 l 399.582 69.03 l 400.832 68.999 l 400.832 69.343 l 400.082 69.343 399.957 69.343 399.957 69.843 c 399.957 71.905 l 399.957 73.077 400.754 73.702 401.473 73.702 c 402.176 73.702 402.301 73.093 402.301 72.468 c 402.301 69.843 l 402.301 69.343 402.176 69.343 401.426 69.343 c 401.426 68.999 l 402.691 69.03 l h 409.629 73.53 m 409.629 73.718 409.488 74.077 409.051 74.077 c 408.832 74.077 408.332 73.999 407.863 73.546 c 407.395 73.921 406.926 73.952 406.676 73.952 c 405.629 73.952 404.863 73.171 404.863 72.311 c 404.863 71.827 405.113 71.389 405.395 71.155 c 405.238 70.999 405.035 70.624 405.035 70.233 c 405.035 69.889 405.191 69.452 405.535 69.233 c 404.863 69.046 404.504 68.561 404.504 68.108 c 404.504 67.311 405.613 66.686 406.988 66.686 c 408.301 66.686 409.473 67.264 409.473 68.139 c 409.473 68.53 409.316 69.093 408.738 69.421 c 408.145 69.733 407.504 69.733 406.816 69.733 c 406.535 69.733 406.051 69.733 405.973 69.733 c 405.613 69.78 405.379 70.124 405.379 70.483 c 405.379 70.53 405.379 70.796 405.566 71.014 c 406.004 70.702 406.473 70.671 406.676 70.671 c 407.723 70.671 408.488 71.436 408.488 72.311 c 408.488 72.718 408.316 73.139 408.035 73.389 c 408.441 73.764 408.848 73.827 409.035 73.827 c 409.035 73.827 409.113 73.827 409.16 73.811 c 409.035 73.764 408.973 73.655 408.973 73.514 c 408.973 73.327 409.113 73.186 409.301 73.186 c 409.41 73.186 409.629 73.264 409.629 73.53 c h 407.66 72.311 m 407.66 72.014 407.645 71.655 407.473 71.374 c 407.379 71.233 407.129 70.921 406.676 70.921 c 405.707 70.921 405.707 72.046 405.707 72.311 c 405.707 72.608 405.723 72.968 405.879 73.249 c 405.973 73.374 406.223 73.686 406.676 73.686 c 407.66 73.686 407.66 72.577 407.66 72.311 c h 408.879 68.108 m 408.879 67.514 408.098 66.952 406.988 66.952 c 405.863 66.952 405.082 67.514 405.082 68.108 c 405.082 68.624 405.52 69.046 406.004 69.077 c 406.66 69.077 l 407.629 69.077 408.879 69.077 408.879 68.108 c h 412.555 68.999 m 412.555 69.343 l 411.82 69.343 411.773 69.405 411.773 69.843 c 411.773 73.952 l 410.211 73.827 l 410.211 73.483 l 410.93 73.483 411.039 73.405 411.039 72.858 c 411.039 69.843 l 411.039 69.343 410.914 69.343 410.164 69.343 c 410.164 68.999 l 411.398 69.03 l 411.789 69.03 412.18 69.014 412.555 68.999 c h 411.945 75.764 m 411.945 76.061 411.68 76.358 411.352 76.358 c 410.961 76.358 410.742 76.046 410.742 75.764 c 410.742 75.468 410.992 75.171 411.336 75.171 c 411.711 75.171 411.945 75.483 411.945 75.764 c h 415.754 68.999 m 415.754 69.343 l 415.004 69.343 414.879 69.343 414.879 69.843 c 414.879 76.78 l 413.27 76.655 l 413.27 76.296 l 414.051 76.296 414.145 76.218 414.145 75.671 c 414.145 69.843 l 414.145 69.343 414.02 69.343 413.27 69.343 c 413.27 68.999 l 414.504 69.03 l h 418.863 68.999 m 418.863 69.343 l 418.113 69.343 417.988 69.343 417.988 69.843 c 417.988 76.78 l 416.379 76.655 l 416.379 76.296 l 417.16 76.296 417.254 76.218 417.254 75.671 c 417.254 69.843 l 417.254 69.343 417.129 69.343 416.379 69.343 c 416.379 68.999 l 417.613 69.03 l h 421.266 69.593 m 421.266 69.921 420.984 70.186 420.672 70.186 c 420.344 70.186 420.078 69.921 420.078 69.593 c 420.078 69.264 420.344 68.999 420.672 68.999 c 420.984 68.999 421.266 69.264 421.266 69.593 c h f Q Q showpage %%Trailer end restore %%EOF denemo-2.2.0/actions/graphics/PaxHeaders.19168/pince.eps0000644000000000000000000000013213135434035017577 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.859981805 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/pince.eps0000644000175000017500000000502713135434035021454 0ustar00jjbenhamjjbenham00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.12.2 (http://cairographics.org) %%CreationDate: Sun Jun 22 15:57:40 2014 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 0 -1 208 183 %%EndComments %%BeginProlog save 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /pdfmark where { pop globaldict /?pdfmark /exec load put } { globaldict begin /?pdfmark /pop load def /pdfmark /cleartomark load def end } ifelse /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def %%EndProlog %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 0 -1 208 183 %%EndPageSetup q 0 -1 208 184 rectclip q 0 g 15.179999 w 0 J 0 j [] 0.0 d 4 M q 1 0 0 -1 0 182.899994 cm 7.578 132.926 m 7.578 92.723 39.953 47.59 77.027 79.469 c 87.988 88.898 106.941 133.449 131.105 83.93 c 151.805 41.508 197.973 99.473 200.438 131.211 c S Q 89.863 182.603 m 109.578 0.033 l 123.293 182.603 l h f 0.6 w q 1 0 0 -1 0 182.899994 cm 89.863 0.297 m 109.578 182.867 l 123.293 0.297 l h S Q Q Q showpage %%Trailer end restore %%EOF denemo-2.2.0/actions/graphics/PaxHeaders.19168/pince.svg0000644000000000000000000000013213135434035017607 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.873315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/pince.svg0000644000175000017500000000524413135434035021465 0ustar00jjbenhamjjbenham00000000000000 image/svg+xmldenemo-2.2.0/actions/graphics/PaxHeaders.19168/suspension.svg0000644000000000000000000000013213135434035020717 xustar0030 mtime=1500919837.946648472 30 atime=1500919922.873315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/graphics/suspension.svg0000644000175000017500000000620213135434035022570 0ustar00jjbenhamjjbenham00000000000000 image/svg+xmldenemo-2.2.0/actions/PaxHeaders.19168/lilypond0000644000000000000000000000013213135434035015745 xustar0030 mtime=1500919837.949981805 30 atime=1500919914.539981806 30 ctime=1500919912.943315139 denemo-2.2.0/actions/lilypond/0000755000175000017500000000000013135434035017673 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/lilypond/PaxHeaders.19168/book-titling.ily0000644000000000000000000000013213135434035021143 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.883315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/book-titling.ily0000644000175000017500000000005513135434035023014 0ustar00jjbenhamjjbenham00000000000000%%now included in simplified-booktitling.ily denemo-2.2.0/actions/lilypond/PaxHeaders.19168/ukulele-fretboards.ily0000644000000000000000000000013213135434035022340 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.883315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/ukulele-fretboards.ily0000644000175000017500000000014513135434035024211 0ustar00jjbenhamjjbenham00000000000000\include "predefined-ukulele-fretboards.ly" \layout { \set Staff.stringTunings = #ukulele-tuning } denemo-2.2.0/actions/lilypond/PaxHeaders.19168/live-score.ily0000644000000000000000000000013213135434035020611 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.883315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/live-score.ily0000644000175000017500000002047113135434035022466 0ustar00jjbenhamjjbenham00000000000000%\version "2.19.25" #(define (override-color-for-all-grobs color) (lambda (context) (let loop ((x all-grob-descriptions)) (if (not (null? x)) (let ((grob-name (caar x))) (ly:context-pushpop-property context grob-name 'color color) (loop (cdr x))))))) #(define (note-id grob) (let* ((origin (ly:input-file-line-char-column (ly:event-property (ly:grob-property grob 'cause) 'origin)))) (string-concatenate (list "Note-" (ly:format "~a-~a" (cadr origin) (caddr origin)))))) #(define (rest-id grob) (let* ((origin (ly:input-file-line-char-column (ly:event-property (ly:grob-property grob 'cause) 'origin)))) (string-concatenate (list "Rest-" (ly:format "~a-~a" (cadr origin) (caddr origin)))))) liveScoreOn = { \override NoteHead.id = #note-id \override Rest.id = #rest-id } % This part is based on the original event-listener.ly file which is % part of LilyPond. %\version "2.16.0" %%%% Helper functions #(define (filename-from-staffname context) "Constructs a filename in the form @file{@var{original_filename}-@var{staff_instrument_name}.notes} if the staff has an instrument name. If the staff has no instrument name, it uses "unnamed-staff" for that part of the filename." (let* ((inst-name (ly:context-property context 'instrumentName))) (string-concatenate (list (substring (object->string (command-line)) ;; filename without .ly part (+ (string-rindex (object->string (command-line)) #\sp) 2) (- (string-length (object->string (command-line))) 5)) "-" (if (string? inst-name) inst-name "unnamed-staff") ".notes")))) #(define (format-moment moment) (inexact->exact (round (* 1000 (/ (ly:moment-main-numerator moment) (ly:moment-main-denominator moment)))))) #(define (moment-grace->string moment) "Prints a moment without grace note(s) as a float such as 0.25000. Grace notes are written with the grace duration as a separate \"dashed\" number, i.e. 0.25000-0.12500. This allows any program using the output of this function to interpret grace notes however they want (half duration, quarter duration? before beat, after beat? etc.)." (if (zero? (ly:moment-grace-numerator moment)) (ly:format "~a" (format-moment moment)) ;; grace notes have a negative numerator, so no "-" necessary (ly:format "~a" (format-moment moment)))) #(define (make-output-string-line context values) "Constructs a tab-separated string beginning with the score time (derived from the context) and then adding all the values. The string ends with a newline." (let* ((moment (ly:context-current-moment context))) (string-append (string-join (append (list (moment-grace->string moment)) (map (lambda (x) (ly:format "~a" x)) values)) "\t") "\n"))) #(define (print-line context . values) "Prints the list of values (plus the score time) to a file, and optionally outputs to the console as well. context may be specified as an engraver for convenience." (if (ly:translator? context) (set! context (ly:translator-context context))) (let* ((p (open-file "events.txt" "a"))) ;; for regtest comparison (if (defined? 'EVENT_LISTENER_CONSOLE_OUTPUT) (ly:progress (make-output-string-line context values))) (display (make-output-string-line context values) p) (close p))) %%% main functions #(define (format-rest engraver event) (let* ((origin (ly:input-file-line-char-column (ly:event-property event 'origin)))) (print-line engraver "rest" (ly:duration->string (ly:event-property event 'duration)) (format-moment (ly:duration-length (ly:event-property event 'duration))) ;; point and click info (ly:format "point-and-click ~a ~a" (caddr origin) (cadr origin))))) #(define (format-note engraver event) (let* ((origin (ly:input-file-line-char-column (ly:event-property event 'origin)))) (print-line engraver "note" (ly:duration->string (ly:event-property event 'duration)) (format-moment (ly:duration-length (ly:event-property event 'duration))) ;; point and click info (ly:format "point-and-click ~a ~a" (caddr origin) (cadr origin)) ;; get a MIDI pitch value. (+ 60 (ly:pitch-semitones (ly:event-property event 'pitch)))))) #(define (format-tempo engraver event) (if (ly:event-property event 'tempo-unit) (print-line engraver "tempo" ; get length of quarter notes, in seconds (* (ly:event-property event 'metronome-count) (format-moment (ly:duration-length (ly:event-property event 'tempo-unit))))))) #(define (format-breathe engraver event) (print-line engraver "breathe")) #(define (format-glissando engraver event) (print-line engraver "gliss")) #(define (format-tie engraver event) (print-line engraver "tie")) #(define (format-articulation engraver event) (print-line engraver "script" (ly:event-property event 'articulation-type))) #(define (format-text engraver event) (print-line engraver "text" (ly:event-property event 'text))) #(define (format-slur engraver event) (print-line engraver "slur" (ly:event-property event 'span-direction))) #(define (format-dynamic engraver event) (print-line engraver "dynamic" (ly:event-property event 'text))) #(define (format-cresc engraver event) (print-line engraver "cresc" (ly:event-property event 'span-direction))) #(define (format-decresc engraver event) (print-line engraver "decresc" (ly:event-property event 'span-direction))) #(define (format-textspan engraver event) (let* ((context (ly:translator-context engraver)) (moment (ly:context-current-moment context)) (spanner-props (ly:context-grob-definition context 'TextSpanner)) (details (assoc-get 'bound-details spanner-props)) (left-props (assoc-get 'left details '())) (left-text (assoc-get 'text left-props '()))) (print-line engraver "set_string" (ly:event-property event 'span-direction) left-text))) %%%% The actual engraver definition: We just install some listeners so we %%%% are notified about all notes and rests. We don't create any grobs or %%%% change any settings. #(define-markup-command (with-url layout props url arg) (string? markup?) ;;;(display url) (interpret-markup layout props arg)) \layout { \override Score.NoteHead.id = #note-id \override Score.Rest.id = #rest-id \context { \Voice \consists #(make-engraver (listeners (tempo-change-event . format-tempo) (rest-event . format-rest) (note-event . format-note) ;(articulation-event . format-articulation) ;(text-script-event . format-text) ;(slur-event . format-slur) ;(breathing-event . format-breathe) ;(dynamic-event . format-dynamic) ;(crescendo-event . format-cresc) ;(decrescendo-event . format-decresc) ;(text-span-event . format-textspan) ;(glissando-event . format-glissando) ;(tie-event . format-tie) )) } } #(open-file "events.txt" "w") pageBreak = {} denemo-2.2.0/actions/lilypond/PaxHeaders.19168/vibrato.ily0000644000000000000000000000013213135434035020207 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.889981805 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/vibrato.ily0000644000175000017500000001217713135434035022070 0ustar00jjbenhamjjbenham00000000000000%\version "2.18.2" % vibrato.ly % Author: Mark Witmer % Modified for thickness by Richard Shann % Sets the next trill spanner to draw a waveform with the provided wevelength % and amplitudes. The waveform will go from one amplitude to the next in a % linear fashion. vibrato = #(define-music-function (parser location amplitudes wavelength thickness) (list? number? number?) #{ \once \override TrillSpanner.after-line-breaking = #(lambda (grob) (ly:grob-set-property! grob 'stencil (makevib grob amplitudes wavelength thickness))) #}) % Creates the postscript for one system of the vibrato marking #(define (make_ps lbound xspan span-so-far amplitude-vector wavelength thickness) (letrec ( (frontmatter (string-append "gsave currentpoint translate " (number->string thickness) " setlinewidth newpath\n ")) (backmatter "stroke grestore") (make-curve (lambda (current last) (if (= current (vector-length amplitude-vector)) "" (if (< (vector-ref amplitude-vector current) 0) "" (let ( (current-ps (string-append " x " (number->string (exact->inexact (/ wavelength 3))) " add " (number->string (vector-ref amplitude-vector current)) " x " (number->string (exact->inexact (* 2 (/ wavelength 3)))) " add " (number->string (- (vector-ref amplitude-vector current))) " x " (number->string wavelength) " add 0.0 curveto /x x " (number->string wavelength) " add def\n"))) (if (= current last) current-ps (string-append current-ps (make-curve (+ 1 current) last))))))))) (if (or (= xspan -inf.0) (= xspan +inf.0)) (string-append frontmatter backmatter) (string-append frontmatter " /x " (number->string lbound) " def x 0.0 moveto\n" (make-curve (inexact->exact (ceiling span-so-far)) (+ (inexact->exact (ceiling span-so-far)) (inexact->exact (floor xspan)))) backmatter)))) % Returns the width of a grob #(define (grob-width grob) (- (cdr (ly:grob-property grob 'X-extent)) (car (ly:grob-property grob 'X-extent)))) % Returns the number of ems already traversed by the grob's siblings in previous systems #(define (width-up-to grob siblings count) (if (eq? (car siblings) grob) count (+ (+ count (width-up-to grob (cdr siblings) count)) (grob-width (car siblings))))) % Returns the total width of the individual grobs for each system that make up the original grob #(define (calcfull siblings count) (if (eqv? (length siblings) 0) count (calcfull (cdr siblings) (+ count (grob-width (car siblings)))))) % Fills a vector of length len with linear interpolations between the values found in amplitudes #(define (fill-amplitude-vector! amplitude-vector len current-index amplitudes) (if (> (length amplitudes) 1) (let ((start-amplitude (car amplitudes)) (end-amplitude (cadr amplitudes)) (start-index current-index) (end-index (+ current-index (inexact->exact (floor (/ (vector-length amplitude-vector) (- len 1))))))) (do ((n current-index (+ 1 n))) ((or (> n (+ start-index end-index)) (>= n (vector-length amplitude-vector)))) (vector-set! amplitude-vector n (exact->inexact (+ start-amplitude (* (/ (- n start-index) (- end-index start-index)) (- end-amplitude start-amplitude)))))) (fill-amplitude-vector! amplitude-vector len end-index (cdr amplitudes))))) % Makes the vector of amplitudes for the vibrato marking #(define (make-amplitude-vector amplitudes total-span wavelength) (let* ( (current-start 0) (len (inexact->exact (ceiling (/ total-span wavelength)))) (amplitude-vector (make-vector len))) (if (> (length amplitudes) 1) (fill-amplitude-vector! amplitude-vector (length amplitudes) 0 amplitudes) (vector-fill! amplitude-vector (car amplitudes))) amplitude-vector)) % Creates a stencil that draws a sine wave for vibrato based on the provided amplitudes and wavelength #(define (makevib grob amplitudes wavelength thickness) (let* ((orig (ly:grob-original grob)) (siblings (if (ly:grob? orig) (ly:spanner-broken-into orig) '())) (span (ly:grob-property grob 'X-extent)) (xbeg (car span)) (xend (cdr span)) (xspan (- xend xbeg)) (total-span (if (eqv? (length siblings) 0) xspan (calcfull siblings 0))) (lbound (if (or (null? siblings) (eq? (car siblings) grob)) 0 (cdr (assq 'X (ly:grob-property grob 'left-bound-info))))) (span-so-far (if (null? siblings) 0 (width-up-to grob siblings 0)))) (ly:make-stencil (list 'embedded-ps (make_ps lbound xspan span-so-far (make-amplitude-vector amplitudes total-span wavelength) wavelength thickness)) (cons 0 0) (cons -1 1)))) %{ % Example: \relative c' {\time 4/4 \key d \major \vibrato #'(4 0 4) #1.5 #0.15 c\startTrillSpan d e d c d e d c\stopTrillSpan \vibrato #'(1 6 2 1 3 7 4) #1 #0.05 c\startTrillSpan d e d c d e d c d e d c d e d c d e d c d e d c d e d c d e d c d e d c d e d c d e d c d e d c d e d c d e d c d e d c d e\stopTrillSpan} %%%%%%%%%%% \paper { ragged-right = ##f } \relative c' { \vibrato #'(0.62 0.42) #1.2 #0.25 c1\startTrillSpan c\stopTrillSpan } %} denemo-2.2.0/actions/lilypond/PaxHeaders.19168/simplified-book-titling.ily0000644000000000000000000000013213135434035023266 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.899981806 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/simplified-book-titling.ily0000644000175000017500000004501613135434035025145 0ustar00jjbenhamjjbenham00000000000000%%% book-titling.ily -- a titling stylesheet for use in books %%% %%% Author: Nicolas Sceaux %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Utility markups %% vertical space skip #(define-markup-command (vspace layout props amount) (number?) "This produces a invisible object taking vertical space." (let ((amount (* amount 3.0))) (if (> amount 0) (ly:make-stencil "" (cons -1 1) (cons 0 amount)) (ly:make-stencil "" (cons -1 1) (cons amount amount))))) #(define-markup-command (when-property layout props symbol markp) (symbol? markup?) (if (chain-assoc-get symbol props) (interpret-markup layout props markp) (ly:make-stencil '() '(1 . -1) '(1 . -1)))) #(define-markup-command (line-width-ratio layout props width-ratio arg) (number? markup?) (interpret-markup layout props (markup #:override (cons 'line-width (* width-ratio (chain-assoc-get 'line-width props))) arg))) %%% Guile does not deal with accented letters #(use-modules (ice-9 regex)) %%;; actually defined below, in a closure #(define-public string-upper-case #f) #(define accented-char-upper-case? #f) #(define accented-char-lower-case? #f) %%;; an accented character is seen as two characters by guile #(let ((lower-case-accented-string "éèêëáàâäíìîïóòôöúùûüçœæ") (upper-case-accented-string "ÉÈÊËÃÀÂÄÃÌÎÃÓÒÔÖÚÙÛÜÇŒÆ")) (define (group-by-2 chars result) (if (or (null? chars) (null? (cdr chars))) (reverse! result) (group-by-2 (cddr chars) (cons (string (car chars) (cadr chars)) result)))) (let ((lower-case-accented-chars (group-by-2 (string->list lower-case-accented-string) (list))) (upper-case-accented-chars (group-by-2 (string->list upper-case-accented-string) (list)))) (set! string-upper-case (lambda (str) (define (replace-chars str froms tos) (if (null? froms) str (replace-chars (regexp-substitute/global #f (car froms) str 'pre (car tos) 'post) (cdr froms) (cdr tos)))) (string-upcase (replace-chars str lower-case-accented-chars upper-case-accented-chars)))) (set! accented-char-upper-case? (lambda (char1 char2) (member (string char1 char2) upper-case-accented-chars string=?))) (set! accented-char-lower-case? (lambda (char1 char2) (member (string char1 char2) lower-case-accented-chars string=?))))) #(define-markup-command (smallCaps layout props text) (markup?) "Turn @code{text}, which should be a string, to small caps. @example \\markup \\small-caps \"Text between double quotes\" @end example" (define (string-list->markup strings lower) (let ((final-string (string-upper-case (apply string-append (reverse strings))))) (if lower (markup #:fontsize -2 final-string) final-string))) (define (make-small-caps rest-chars currents current-is-lower prev-result) (if (null? rest-chars) (make-concat-markup (reverse! (cons (string-list->markup currents current-is-lower) prev-result))) (let* ((ch1 (car rest-chars)) (ch2 (and (not (null? (cdr rest-chars))) (cadr rest-chars))) (this-char-string (string ch1)) (is-lower (char-lower-case? ch1)) (next-rest-chars (cdr rest-chars))) (cond ((and ch2 (accented-char-lower-case? ch1 ch2)) (set! this-char-string (string ch1 ch2)) (set! is-lower #t) (set! next-rest-chars (cddr rest-chars))) ((and ch2 (accented-char-upper-case? ch1 ch2)) (set! this-char-string (string ch1 ch2)) (set! is-lower #f) (set! next-rest-chars (cddr rest-chars)))) (if (or (and current-is-lower is-lower) (and (not current-is-lower) (not is-lower))) (make-small-caps next-rest-chars (cons this-char-string currents) is-lower prev-result) (make-small-caps next-rest-chars (list this-char-string) is-lower (if (null? currents) prev-result (cons (string-list->markup currents current-is-lower) prev-result))))))) (interpret-markup layout props (if (string? text) (make-small-caps (string->list text) (list) #f (list)) text))) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Title page %%% \paper { bookTitleMarkup = \markup \when-property #'header:title \column { \vspace #6 \fill-line { \fontsize #8 \italic \fromproperty #'header:composer } \vspace #1 \fill-line { \fontsize #8 \italic \fromproperty #'header:poet } \vspace #6 \fill-line { \fontsize #10 \fromproperty #'header:title } \vspace #6 \fill-line { \postscript #"-20 0 moveto 40 0 rlineto stroke" } \vspace #6 \fill-line { \fontsize #5 \fromproperty #'header:date } \vspace #1 \fill-line { \when-property #'header:arrangement \column { \vspace #5 \fill-line { \fontsize #3 \fromproperty #'header:arrangement } } } } scoreTitleMarkup = \markup \null } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Table of contents %%% #(define-markup-command (paper-prop layout props name default) (symbol? markup?) "Get the value of a \\paper property, or defaults to some value" (let ((val (ly:output-def-lookup layout name))) (interpret-markup layout props (if (markup? val) val default)))) \paper { tocTitleMarkup = \markup \column { \vspace #2 \fontsize #6 \fill-line { \paper-prop #'tocTitle "TABLE OF CONTENTS" } \vspace #2 } tocPieceMarkup = \markup \fill-line { \line-width-ratio #0.7 \fill-line { \line { \fromproperty #'toc:text } \fromproperty #'toc:page } } tocSectionMarkup = \markup \italic \column { \fill-line { \fromproperty #'toc:text } } tocChapterMarkup = \markup \large \italic \column { \vspace #1 \fontsize #2 \fill-line { \fromproperty #'toc:text } \vspace #1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Markup commands for page headers %%% #(define-public add-odd-page-header-text #f) #(define-public add-even-page-header-text #f) #(define header-markup-aux #f) #(let ((odd-label-header-table (list)) (odd-page-header-table (list)) (even-label-header-table (list)) (even-page-header-table (list))) (set! header-markup-aux (lambda (layout props odd) (define (page-text page-number table) (if (null? table) "" (let* ((elment (car table)) (p (car elment)) (text (cadr elment)) (display-1st (caddr elment))) (cond ((and (= page-number p) (not display-1st)) #f) ((>= page-number p) text) (else (page-text page-number (cdr table))))))) (ly:make-stencil `(delay-stencil-evaluation ,(delay (ly:stencil-expr (begin (if (or (and odd (null? odd-page-header-table)) (and (not odd) (null? even-page-header-table))) (let ((page-header-table (list))) (for-each (lambda (label-header) (let* ((label (car label-header)) (text-disp (cdr label-header)) (table (ly:output-def-lookup layout 'label-page-table)) (label-page (and (list? table) (assoc label table))) (page-number (and label-page (cdr label-page))) (prev-value (and page-number (assoc page-number page-header-table)))) (if (not prev-value) (set! page-header-table (cons (cons page-number text-disp) page-header-table)) (set! page-header-table (assoc-set! page-header-table page-number (list (car text-disp) (caddr prev-value))))))) (reverse (if odd odd-label-header-table even-label-header-table))) (if odd (set! odd-page-header-table page-header-table) (set! even-page-header-table page-header-table)))) (interpret-markup layout props (let* ((page-number (chain-assoc-get 'page:page-number props -1)) (text (page-text page-number (if odd odd-page-header-table even-page-header-table))) (text-markup (markup #:italic (or text ""))) (page-number-markup (number->string page-number))) (cond ((or (= 1 page-number) (not text)) (markup #:null)) (odd (markup #:fill-line (#:null text-markup page-number-markup))) (else (markup #:fill-line (page-number-markup text-markup #:null)))))))))) (cons 0 0) (ly:stencil-extent (interpret-markup layout props "XXX") Y)))) (set! add-odd-page-header-text (lambda (parser text display-1st) (let ((label (gensym "header"))) (set! odd-label-header-table (cons (list label text display-1st) odd-label-header-table)) (collect-music-for-book parser (make-music 'Music 'page-marker #t 'page-label label))))) (set! add-even-page-header-text (lambda (parser text display-1st) (let ((label (gensym "header"))) (set! even-label-header-table (cons (list label text display-1st) even-label-header-table)) (collect-music-for-book parser (make-music 'Music 'page-marker #t 'page-label label)))))) #(define-markup-command (odd-header layout props) () (header-markup-aux layout props #t)) #(define-markup-command (even-header layout props) () (header-markup-aux layout props #f)) \paper { evenHeaderMarkup = \markup \even-header oddHeaderMarkup = \markup \odd-header } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Utilities for adding (no-)page breaks, toplevel markups %%% #(define (add-page-break parser) (collect-music-for-book parser (make-music 'Music 'page-marker #t 'line-break-permission 'force 'page-break-permission 'force))) #(define (add-no-page-break parser) (collect-music-for-book parser (make-music 'Music 'page-marker #t 'page-break-permission 'forbid))) #(define (add-toplevel-markup parser text) (collect-scores-for-book parser (list text))) #(define (add-toc-item parser markup-symbol text) (collect-music-for-book parser (add-toc-item! markup-symbol text))) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Rehearsal numbers %%% #(define-public rehearsal-number #f) #(define-public increase-rehearsal-major-number #f) #(let ((major-number 0) (minor-number 0)) (set! increase-rehearsal-major-number (lambda () (set! major-number (1+ major-number)) (set! minor-number 0))) (set! rehearsal-number (lambda () (set! minor-number (1+ minor-number)) (format #f "~a-~a" major-number minor-number)))) #(define-public (add-rehearsal-number parser) (collect-scores-for-book parser (list (markup #:huge #:bold (rehearsal-number))))) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Commands %%% #(use-modules (srfi srfi-39)) #(define *book-title* (make-parameter "")) #(define *use-rehearsal-numbers* (make-parameter #f)) useRehearsalNumbers = #(define-music-function (parser location use-numbers) (boolean?) (*use-rehearsal-numbers* use-numbers) (make-music 'Music 'void #t)) bookTitle = #(define-music-function (parser location title) (string?) (*book-title* title) (make-music 'Music 'void #t)) chapter = #(define-music-function (parser location title) (string?) (increase-rehearsal-major-number) (add-page-break parser) (add-toc-item parser 'tocChapterMarkup title) (add-even-page-header-text parser (string-upper-case (*book-title*)) #f) (add-odd-page-header-text parser (string-upper-case title) #f) (add-toplevel-markup parser (markup #:chapter-title (string-upper-case title))) (add-no-page-break parser) (make-music 'Music 'void #t)) section = #(define-music-function (parser location title) (markup?) (add-toc-item parser 'tocSectionMarkup title) (add-toplevel-markup parser (markup #:section-title (string-upper-case title))) (add-no-page-break parser) (make-music 'Music 'void #t)) piece = #(define-music-function (parser location title) (markup?) (add-toc-item parser 'tocPieceMarkup title) (add-no-page-break parser) (if (*use-rehearsal-numbers*) (add-toplevel-markup parser (markup #:rehearsal-number (rehearsal-number)))) (add-no-page-break parser) (make-music 'Music 'void #t)) titledPiece = #(define-music-function (parser location title) (markup?) (add-toc-item parser 'tocPieceMarkup title) (if (*use-rehearsal-numbers*) (add-toplevel-markup parser (markup #:piece-title-with-number (rehearsal-number) (string-upper-case title))) (add-toplevel-markup parser (markup #:piece-title (string-upper-case title)))) (add-no-page-break parser) (make-music 'Music 'void #t)) #(define-markup-command (chapter-title layout props title) (markup?) (interpret-markup layout props (markup #:column (#:vspace 3 #:pad-markup 3 #:fill-line (#:fontsize 5 title))))) #(define-markup-command (section-title layout props title) (markup?) (interpret-markup layout props (markup #:column (#:vspace 1 #:fill-line (#:fontsize 3 title) #:vspace 1)))) #(define-markup-command (piece-title layout props title) (markup?) (interpret-markup layout props (markup #:fill-line (#:override '(line-width . 80) title)))) #(define-markup-command (rehearsal-number layout props number) (markup?) (interpret-markup layout props (markup #:huge #:bold number))) #(define-markup-command (piece-title-with-number layout props number title) (markup? markup?) (interpret-markup layout props (markup #:rehearsal-number number #:hspace 1 #:huge title))) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #(define (string-upper-case str) str) #(define-markup-command (piece-title layout props title) (markup?) (interpret-markup layout props (markup #:column (#:vspace 1 #:fill-line (#:fontsize 4 title) #:vspace 1)))) #(define-markup-command (when-notproperty layout props symbol markp) (symbol? markup?) (if (chain-assoc-get symbol props) (ly:make-stencil '() '(1 . -1) '(1 . -1)) (interpret-markup layout props markp))) #(cond-expand (guile-2) ; nothing (else ; guile < 2.0 (define-macro (define-once sym exp) `(define ,sym (if (module-locally-bound? (current-module) ',sym) ,sym ,exp))))) #(define-once denemo-top-margin 6) \paper { bookTitleMarkup = \markup \when-property #'header:title { { \postscript #" gsave initmatrix 1 setlinewidth 40 40 moveto 517 0 rlineto 0 760 rlineto -517 0 rlineto 0 -760 rlineto stroke 0.5 setlinewidth 45 45 moveto 507 0 rlineto 0 750 rlineto -507 0 rlineto 0 -750 rlineto stroke grestore" } \line { \hspace #-1.45 %for some reason the column is centered without this \column { \when-property #'header:poet \vspace #denemo-top-margin \when-notproperty #'header:poet \vspace #(+ 10 denemo-top-margin) \fill-line { \fontsize #8 \italic \fromproperty #'header:composer } \vspace #1 \when-property #'header:poet \fill-line { \fontsize #8 \italic \fromproperty #'header:poet } \when-property #'header:poet \vspace #6 \when-notproperty #'header:poet \vspace #2 \fill-line { \scale #'(4 . 4) \fromproperty #'header:title } \vspace #1 \fill-line { \postscript #"-20 0 moveto 40 0 rlineto stroke" } \vspace #6 \fill-line { \fontsize #5 \fromproperty #'header:date } \when-property #'header:date \vspace #6 \when-property #'header:instrumentation \fill-line { \fontsize #5 \italic \fromproperty #'header:instrumentation } \when-property #'header:instrumentation \vspace #4 \when-property #'header:incipit \fill-line { \fontsize #5 \italic \fromproperty #'header:incipit } \vspace #1 \fill-line { \when-property #'header:arranger \column { \vspace #5 \fill-line { \fontsize #3 \fromproperty #'header:arranger } } } } } } scoreTitleMarkup = \markup \null oddFooterMarkup = \markup { \column { \fill-line { %% Copyright header field only on last page. \on-the-fly #last-page { \fromproperty #'header:copyright \fromproperty #'header:tagline } } } } evenFooterMarkup = \oddFooterMarkup } \pageBreak denemo-2.2.0/actions/lilypond/PaxHeaders.19168/control-points.ly0000644000000000000000000000013213135434035021362 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.926648472 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/control-points.ly0000644000175000017500000000254713135434035023243 0ustar00jjbenhamjjbenham00000000000000 #(define (make-cross-stencil coords) (ly:stencil-add (make-line-stencil 0.1 (- (car coords) 0.2) (- (cdr coords) 0.2) (+ (car coords) 0.2) (+ (cdr coords) 0.2)) (make-line-stencil 0.1 (- (car coords) 0.2) (+ (cdr coords) 0.2) (+ (car coords) 0.2) (- (cdr coords) 0.2)))) #(define (display-control-points line) (lambda (grob) (let* ((grob-name (lambda (x) (assq-ref (ly:grob-property x 'meta) 'name))) (name (grob-name grob)) (stil (cond ((or (eq? name 'Slur)(eq? name 'PhrasingSlur))(ly:slur::print grob)) ((eq? name 'Tie)(ly:tie::print grob)))) (cps (ly:grob-property grob 'control-points))) (ly:stencil-add stil (ly:stencil-in-color (ly:stencil-add (make-cross-stencil (first cps)) (make-cross-stencil (second cps)) (make-cross-stencil (third cps)) (make-cross-stencil (fourth cps)) ) 1 0 0) (if (eq? line #t) (begin (ly:stencil-add (make-line-stencil 0.05 (car (first cps)) (cdr (first cps)) (car (second cps)) (cdr (second cps))) (make-line-stencil 0.05 (car (second cps)) (cdr (second cps)) (car (third cps)) (cdr (third cps))) (make-line-stencil 0.05 (car (third cps)) (cdr (third cps)) (car (fourth cps)) (cdr (fourth cps))) )) empty-stencil) ) ))) denemo-2.2.0/actions/lilypond/PaxHeaders.19168/shapeTieColumn.ily0000644000000000000000000000013213135434035021461 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.926648472 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/shapeTieColumn.ily0000644000175000017500000000227513135434035023340 0ustar00jjbenhamjjbenham00000000000000\version "2.18.0" %%%%%%%% function for offsetting control-points of a TieColumn %%%%%%%%%%%%%%%%% shapeTieColumn = #(define-music-function (parser location all-offsets) (list?) #{ \once \override TieColumn #'after-line-breaking = #(lambda (grob) (let ((ties (ly:grob-array->list (ly:grob-object grob 'ties)))) (for-each (lambda (tie offsets-for-broken-pair) (let* ((orig (ly:grob-original tie)) (siblings (ly:spanner-broken-into orig))) (for-each (lambda (piece offsets-for-piece) (if (pair? offsets-for-piece) (set! (ly:grob-property piece 'control-points) (map (lambda (x y) (coord-translate x y)) (ly:tie::calc-control-points piece) offsets-for-piece)))) (if (null? siblings) (list orig) siblings) offsets-for-broken-pair))) ties all-offsets))) #}) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% denemo-2.2.0/actions/lilypond/PaxHeaders.19168/red-dot.ly0000644000000000000000000000013213135434035017726 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.933315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/red-dot.ly0000644000175000017500000001276713135434035021614 0ustar00jjbenhamjjbenham00000000000000 \version "2.16.2" #(set-global-staff-size 20) #(define (add-dot text?) (lambda (grob) (let* ((layout (ly:grob-layout grob)) (props (layout-extract-page-properties layout)) (font (ly:paper-get-font layout (cons '((font-encoding . fetaMusic)) props))) ;; Get the stencil-procedure from ly:grob-basic-properties. ;; If any, use it to create the stencil. (function (assoc-get 'stencil (ly:grob-basic-properties grob))) (stencil (if function (function grob) point-stencil)) ;; Get the grob-name and create a text-stencil. ;; Read out the y-length for later translate. (grob-name-proc (lambda (x) (assq-ref (ly:grob-property x 'meta) 'name))) (grob-name (grob-name-proc grob)) (grob-string (if (symbol? grob-name) (symbol->string grob-name) "no name")) (ref-text-stil (grob-interpret-markup grob (markup #:with-color red #:normal-text #:abs-fontsize 6 (string-append " " grob-string)))) (ref-text-stil-length (interval-length (ly:stencil-extent ref-text-stil Y))) (grob-string-stil (if text? (grob-interpret-markup grob (markup #:with-dimensions '(0 . 0) '(0 . 0) #:stencil ref-text-stil)) point-stencil )) ;; Create a red-dot-stencil (dot (ly:font-get-glyph font "dots.dot")) (red-dot (ly:stencil-in-color dot 1 0 0)) (red-dot-length (interval-length (ly:stencil-extent red-dot X))) (red-dot-stil (ly:stencil-translate-axis red-dot (/ red-dot-length -2) X))) ;; If there's a grob with stencil-procedure and a valid stencil is ;; created, add the red-dot-stil and an optional text-stencil. (if (and function (ly:stencil? stencil) (grob::is-live? grob)) (ly:grob-set-property! grob 'stencil (ly:stencil-add stencil red-dot-stil (if text? (ly:stencil-translate-axis (ly:stencil-rotate grob-string-stil 90 0 0) (/ ref-text-stil-length 2) X) point-stencil))))))) % needs to be here for 2.16.2 #(define-public (symbol-list-or-symbol? x) (if (list? x) (every symbol? x) (symbol? x))) #(define (add-red-dot-to-grobs text? l) ;; possible values for l: ;; 'all-grobs (adds red-dots to all grobs, where possible) ;; this will naturally cause collisions, ;; a single grob-name, must be a symbol, ;; a list of grob-names, ;; anything else (returns the unchanged original stencil) ;; TODO: How to apply it once? (let ((grobs-to-consider (cond ((eq? l 'all-grobs) all-grob-descriptions) ((symbol? l) (list (assoc l all-grob-descriptions))) ((list? l) (map (lambda (grob) (assoc grob all-grob-descriptions)) l)) (else '())))) (lambda (context) (let loop ((x grobs-to-consider)) (if (not (null? x)) (let ((grob-name (caar x))) (ly:context-pushpop-property context grob-name 'after-line-breaking (add-dot text?)) (loop (cdr x)))))))) printRefpoint = #(define-music-function (parser location text? s-or-l)(boolean? symbol-list-or-symbol?) " Will add a red dot (and an optional text) to the stencil's ref-point of the specified grob(s). Valid input for s-or-l: @code{'all-grobs}, (adds red-dots to all grobs, where possible), this will naturally cause collisions a single grob-name, must be a symbol, a list of grob-names. The additional text may be activated by @code{##t}. To avoid bleeding-overs any context has to be initiated explicitly. " #{ \applyContext #(add-red-dot-to-grobs text? s-or-l) #}) %% For single use: #(define addDot (lambda (grob) (let* ((function (assoc-get 'stencil (ly:grob-basic-properties grob))) (stencil (if function (function grob) point-stencil)) (layout (ly:grob-layout grob)) (props (layout-extract-page-properties layout)) (font (ly:paper-get-font layout (cons '((font-encoding . fetaMusic)) props))) (dot (ly:font-get-glyph font "dots.dot")) (red-dot (ly:stencil-in-color dot 1 0 0)) (red-dot-length (interval-length (ly:stencil-extent red-dot X))) (red-dot-stil (ly:stencil-translate-axis red-dot (/ red-dot-length -2) X))) (if (and function (ly:stencil? stencil) (grob::is-live? grob)) (ly:grob-set-property! grob 'stencil (ly:stencil-add stencil red-dot-stil)))))) %% Overriding grobs must be defined separately. %% Don't forget to specify the context if necessary. onceRedScript = \once \override Script #'after-line-breaking = #addDot denemo-2.2.0/actions/lilypond/PaxHeaders.19168/time-signatures.ily0000644000000000000000000000013213135434035021661 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.936648472 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/time-signatures.ily0000644000175000017500000000113713135434035023534 0ustar00jjbenhamjjbenham00000000000000#(define ((alternate-time up down upp downp) grob) (grob-interpret-markup grob #{ \markup \override #'(baseline-skip . 0) \number \line { \column { #up #down } \column { #upp #downp } } #})) #(define ((alternate-time-parens up down upp downp) grob) (grob-interpret-markup grob #{ \markup \override #'(baseline-skip . 0) \number \line { \column { #up #down } \lower #1.2 "(" \column { #upp #downp } \lower #1.2 ")" } #})) denemo-2.2.0/actions/lilypond/PaxHeaders.19168/note-name-markup.ily0000644000000000000000000000013213135434035021721 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.943315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/note-name-markup.ily0000644000175000017500000000211213135434035023566 0ustar00jjbenhamjjbenham00000000000000#(define (denemo-bass-inversion pitch) (let* ((alt (ly:pitch-alteration pitch))) (make-sans-markup (make-scale-markup '(2.50 . 3.0) (make-line-markup (list (make-raise-markup 1;1.5 (make-scale-markup '(0.75 . 0.5) (make-bold-markup (make-simple-markup "/")))) (make-hspace-markup -0.3) (make-raise-markup 0.5 (make-bold-markup (make-scale-markup '(0.4 . 0.6) (make-simple-markup (vector-ref #("C" "D" "E" "F" "G" "A" "B") (ly:pitch-notename pitch)))))) (make-raise-markup 0.5 (if (= alt NATURAL) (make-hspace-markup 0) (make-line-markup (list (make-hspace-markup 0.1) (make-fontsize-markup -7 (if (= alt SHARP) (make-raise-markup 0.1 (alteration->text-accidental-markup alt)) (make-raise-markup 0.2 (alteration->text-accidental-markup alt)))))))))))))) denemo-2.2.0/actions/lilypond/PaxHeaders.19168/compact-chord-symbols.ily0000644000000000000000000000013213135434035022752 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.943315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/compact-chord-symbols.ily0000644000175000017500000000214113135434035024621 0ustar00jjbenhamjjbenham00000000000000CompactChordSymbols = { ^\markup\scale #'(0.4 . 0.6) \bold {9 \scale #'(0.8 . 1) sus} ^\markup \bold\scale #'(.3 . .4) \override #'(thickness . 0.5) {\triangle ##f} ^\markup\scale #'(0.4 . 0.6) \bold { 9 \scale #'(0.8 . 1) sus2 } ^\markup\scale #'(0.4 . 0.6) \bold { 9 \scale #'(0.8 . 1) sus4 } ^\markup\scale #'(0.4 . 0.6) \bold {m7} ^\markup\scale #'(0.4 . 0.6) \bold {+} ^\markup\scale #'(0.4 . 0.6) \bold {+7} ^\markup\scale #'(0.5 . 0.7) \bold {ø} ^\markup\scale #'(0.5 . 0.7) \bold {o7} ^\markup\scale #'(0.5 . 0.6) \bold {\hspace #0 o} ^\markup\scale #'(.3 . .4) \bold \override #'(thickness . .5) { \triangle ##f } ^\markup \bold \override #'(thickness . .5) { \scale #'(.3 . .4) \triangle ##f \scale #'(0.4 . 0.6) 13 } ^\markup \bold\scale #'(0.4 . 0.6)\bold {7 \flat 9} } %\with-dimensions #'(-0.642 . 0.642) #'(-0.642 . 0.642) denemo-2.2.0/actions/lilypond/PaxHeaders.19168/merge-rests.ily0000644000000000000000000000013213135434035020776 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.943315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/merge-rests.ily0000644000175000017500000001050313135434035022646 0ustar00jjbenhamjjbenham00000000000000%%% merge rests #(define (rest-score r) (let ((score 0) (yoff (ly:grob-property-data r 'Y-offset)) (sp (ly:grob-property-data r 'staff-position))) (if (number? yoff) (set! score (+ score 2)) (if (eq? yoff 'calculation-in-progress) (set! score (- score 3)))) (and (number? sp) (<= 0 2 sp) (set! score (+ score 2)) (set! score (- score (abs (- 1 sp))))) score)) #(define (merge-rests-on-positioning grob) (let* ((can-merge #f) (elts (ly:grob-object grob 'elements)) (num-elts (and (ly:grob-array? elts) (ly:grob-array-length elts))) (two-voice? (= num-elts 2))) (if two-voice? (let* ((v1-grob (ly:grob-array-ref elts 0)) (v2-grob (ly:grob-array-ref elts 1)) (v1-rest (ly:grob-object v1-grob 'rest)) (v2-rest (ly:grob-object v2-grob 'rest))) (and (ly:grob? v1-rest) (ly:grob? v2-rest) (let* ((v1-duration-log (ly:grob-property v1-rest 'duration-log)) (v2-duration-log (ly:grob-property v2-rest 'duration-log)) (v1-dot (ly:grob-object v1-rest 'dot)) (v2-dot (ly:grob-object v2-rest 'dot)) (v1-dot-count (and (ly:grob? v1-dot) (ly:grob-property v1-dot 'dot-count -1))) (v2-dot-count (and (ly:grob? v2-dot) (ly:grob-property v2-dot 'dot-count -1)))) (set! can-merge (and (number? v1-duration-log) (number? v2-duration-log) (= v1-duration-log v2-duration-log) (eq? v1-dot-count v2-dot-count))) (if can-merge ;; keep the rest that looks best: (let* ((keep-v1? (>= (rest-score v1-rest) (rest-score v2-rest))) (rest-to-keep (if keep-v1? v1-rest v2-rest)) (dot-to-kill (if keep-v1? v2-dot v1-dot))) ;; uncomment if you're curious of which rest was chosen: ;;(ly:grob-set-property! v1-rest 'color green) ;;(ly:grob-set-property! v2-rest 'color blue) (ly:grob-suicide! (if keep-v1? v2-rest v1-rest)) (if (ly:grob? dot-to-kill) (ly:grob-suicide! dot-to-kill)) (ly:grob-set-property! rest-to-keep 'direction 0) (ly:rest::y-offset-callback rest-to-keep))))))) (if can-merge #t (ly:rest-collision::calc-positioning-done grob)))) #(define merge-multi-measure-rests-on-Y-offset ;; Call this to get the 'Y-offset of a MultiMeasureRest. ;; It keeps track of other MultiMeasureRests in the same NonMusicalPaperColumn ;; and StaffSymbol. If two are found, delete one and return 1 for Y-offset of ;; the other one. (let ((table (make-weak-key-hash-table))) (lambda (grob) (let* ((ssymb (ly:grob-object grob 'staff-symbol)) (nmcol (ly:grob-parent grob X)) (ssymb-hash (or (hash-ref table ssymb) (hash-set! table ssymb (make-hash-table)))) (othergrob (hash-ref ssymb-hash nmcol))) (if (ly:grob? othergrob) (begin ;; Found the other grob in this staff/column, ;; delete it and move ours. (ly:grob-suicide! othergrob) (hash-remove! ssymb-hash nmcol) 1) ; was 0 (begin ;; Just save this grob and return the default value. (hash-set! ssymb-hash nmcol grob) (ly:staff-symbol-referencer::callback grob))))))) mergeRestsOn = { \override Staff.RestCollision #'positioning-done = #merge-rests-on-positioning \override Staff.MultiMeasureRest #'Y-offset = #merge-multi-measure-rests-on-Y-offset } mergeRestsOff = { \revert Staff.RestCollision #'positioning-done \revert Staff.MultiMeasureRest #'Y-offset } mergeRests = \layout { \context { \Staff \override RestCollision #'positioning-done = #merge-rests-on-positioning \override MultiMeasureRest #'Y-offset = #merge-multi-measure-rests-on-Y-offset } } denemo-2.2.0/actions/lilypond/PaxHeaders.19168/accordion-shifts.ily0000644000000000000000000000013213135434035022000 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.956648472 30 ctime=1500919912.939981805 denemo-2.2.0/actions/lilypond/accordion-shifts.ily0000644000175000017500000005514713135434035023665 0ustar00jjbenhamjjbenham00000000000000 ;;;Accordion 16v (d-DirectivePut-score-prefix "Diskant und Punkt" "Diskant=\\markup { \\musicglyph #\"accordion.accDiscant\" } punkt = \\markup { \\musicglyph #\"accordion.accDot\" } accBasson = ^\\markup { \\combine \\Diskant \\raise #0.5 \\punkt } accPiccolo = ^\\markup { \\combine \\Diskant \\raise #2.5 \\punkt } accBandon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #1.5 \\punkt } accVCello = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\translate #'(0.6 . 0) \\raise #1.5 \\punkt } accHarmon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accOrgel = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #2.5 \\punkt } accHaupt = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accCelesta = ^\\markup { \\combine \\Diskant \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt } accOboe = ^\\markup { \\combine \\Diskant \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accClarin = ^\\markup { \\combine \\Diskant \\raise #1.5 \\punkt } accGeige = ^\\markup { \\combine \\Diskant \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } ") (d-DirectivePut-chord-postfix "Accordion16v" "\\accBasson") (d-DirectivePut-chord-display "Accordion16v" "Accordion 16v") (d-RefreshDisplay) ;;;End of scheme script ;;;Accordion Tremolo (d-DirectivePut-score-prefix "Diskant und Punkt" "Diskant=\\markup { \\musicglyph #\"accordion.accDiscant\" } punkt = \\markup { \\musicglyph #\"accordion.accDot\" } accBasson = ^\\markup { \\combine \\Diskant \\raise #0.5 \\punkt } accPiccolo = ^\\markup { \\combine \\Diskant \\raise #2.5 \\punkt } accBandon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #1.5 \\punkt } accVCello = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\translate #'(0.6 . 0) \\raise #1.5 \\punkt } accHarmon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accOrgel = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #2.5 \\punkt } accHaupt = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accCelesta = ^\\markup { \\combine \\Diskant \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt } accOboe = ^\\markup { \\combine \\Diskant \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accClarin = ^\\markup { \\combine \\Diskant \\raise #1.5 \\punkt } accGeige = ^\\markup { \\combine \\Diskant \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } ") (d-DirectivePut-chord-postfix "AccordionTremolo" "\\accCelesta") (d-DirectivePut-chord-display "AccordionTremolo" "Accordion Tremolo") (d-RefreshDisplay) ;;;End of scheme script ;;;Accordion 4v (d-DirectivePut-score-prefix "Diskant und Punkt" "Diskant=\\markup { \\musicglyph #\"accordion.accDiscant\" } punkt = \\markup { \\musicglyph #\"accordion.accDot\" } accBasson = ^\\markup { \\combine \\Diskant \\raise #0.5 \\punkt } accPiccolo = ^\\markup { \\combine \\Diskant \\raise #2.5 \\punkt } accBandon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #1.5 \\punkt } accVCello = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\translate #'(0.6 . 0) \\raise #1.5 \\punkt } accHarmon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accOrgel = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #2.5 \\punkt } accHaupt = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accCelesta = ^\\markup { \\combine \\Diskant \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt } accOboe = ^\\markup { \\combine \\Diskant \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accClarin = ^\\markup { \\combine \\Diskant \\raise #1.5 \\punkt } accGeige = ^\\markup { \\combine \\Diskant \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } ") (d-DirectivePut-chord-postfix "Accordion4v" "\\accPiccolo") (d-DirectivePut-chord-display "Accordion4v" "Accordion 4v") (d-RefreshDisplay) ;;;End of scheme script ;;;Accordion 4v8v (d-DirectivePut-score-prefix "Diskant und Punkt" "Diskant=\\markup { \\musicglyph #\"accordion.accDiscant\" } punkt = \\markup { \\musicglyph #\"accordion.accDot\" } accBasson = ^\\markup { \\combine \\Diskant \\raise #0.5 \\punkt } accPiccolo = ^\\markup { \\combine \\Diskant \\raise #2.5 \\punkt } accBandon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #1.5 \\punkt } accVCello = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\translate #'(0.6 . 0) \\raise #1.5 \\punkt } accHarmon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accOrgel = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #2.5 \\punkt } accHaupt = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accCelesta = ^\\markup { \\combine \\Diskant \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt } accOboe = ^\\markup { \\combine \\Diskant \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accClarin = ^\\markup { \\combine \\Diskant \\raise #1.5 \\punkt } accGeige = ^\\markup { \\combine \\Diskant \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } ") (d-DirectivePut-chord-postfix "Accordion4v8v" "\\accOboe") (d-DirectivePut-chord-display "Accordion4v8v" "Accordion 4v8v") (d-RefreshDisplay) ;;;End of scheme script ;;;Accordion 4v8vTremolo (d-DirectivePut-score-prefix "Diskant und Punkt" "Diskant=\\markup { \\musicglyph #\"accordion.accDiscant\" } punkt = \\markup { \\musicglyph #\"accordion.accDot\" } accBasson = ^\\markup { \\combine \\Diskant \\raise #0.5 \\punkt } accPiccolo = ^\\markup { \\combine \\Diskant \\raise #2.5 \\punkt } accBandon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #1.5 \\punkt } accVCello = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\translate #'(0.6 . 0) \\raise #1.5 \\punkt } accHarmon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accOrgel = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #2.5 \\punkt } accHaupt = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accCelesta = ^\\markup { \\combine \\Diskant \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt } accOboe = ^\\markup { \\combine \\Diskant \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accClarin = ^\\markup { \\combine \\Diskant \\raise #1.5 \\punkt } accGeige = ^\\markup { \\combine \\Diskant \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } ") (d-DirectivePut-chord-postfix "Accordion4v8vTremolo" "\\accGeige") (d-DirectivePut-chord-display "Accordion4v8vTremolo" "Accordion 4v8vTremolo") (d-RefreshDisplay) ;;;End of scheme script ;;;Accordion 4v8v16v (d-DirectivePut-score-prefix "Diskant und Punkt" "Diskant=\\markup { \\musicglyph #\"accordion.accDiscant\" } punkt = \\markup { \\musicglyph #\"accordion.accDot\" } accBasson = ^\\markup { \\combine \\Diskant \\raise #0.5 \\punkt } accPiccolo = ^\\markup { \\combine \\Diskant \\raise #2.5 \\punkt } accBandon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #1.5 \\punkt } accVCello = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\translate #'(0.6 . 0) \\raise #1.5 \\punkt } accHarmon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accOrgel = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #2.5 \\punkt } accHaupt = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accCelesta = ^\\markup { \\combine \\Diskant \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt } accOboe = ^\\markup { \\combine \\Diskant \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accClarin = ^\\markup { \\combine \\Diskant \\raise #1.5 \\punkt } accGeige = ^\\markup { \\combine \\Diskant \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } ") (d-DirectivePut-chord-postfix "Accordion4v8v16v" "\\accHarmon") (d-DirectivePut-chord-display "Accordion4v8v16v" "Accordion 4v8v16v") (d-RefreshDisplay) ;;;End of scheme script ;;;Accordion 4v8v16vTremolo (d-DirectivePut-score-prefix "Diskant und Punkt" "Diskant=\\markup { \\musicglyph #\"accordion.accDiscant\" } punkt = \\markup { \\musicglyph #\"accordion.accDot\" } accBasson = ^\\markup { \\combine \\Diskant \\raise #0.5 \\punkt } accPiccolo = ^\\markup { \\combine \\Diskant \\raise #2.5 \\punkt } accBandon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #1.5 \\punkt } accVCello = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\translate #'(0.6 . 0) \\raise #1.5 \\punkt } accHarmon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accOrgel = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #2.5 \\punkt } accHaupt = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accCelesta = ^\\markup { \\combine \\Diskant \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt } accOboe = ^\\markup { \\combine \\Diskant \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accClarin = ^\\markup { \\combine \\Diskant \\raise #1.5 \\punkt } accGeige = ^\\markup { \\combine \\Diskant \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } ") (d-DirectivePut-chord-postfix "Accordion4v8v16vTremolo" "\\accHaupt") (d-DirectivePut-chord-display "Accordion4v8v16vTremolo" "Accordion 4v8v16vTremolo") (d-RefreshDisplay) ;;;End of scheme script ;;;Accordion 8v16vTremolo (d-DirectivePut-score-prefix "Diskant und Punkt" "Diskant=\\markup { \\musicglyph #\"accordion.accDiscant\" } punkt = \\markup { \\musicglyph #\"accordion.accDot\" } accBasson = ^\\markup { \\combine \\Diskant \\raise #0.5 \\punkt } accPiccolo = ^\\markup { \\combine \\Diskant \\raise #2.5 \\punkt } accBandon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #1.5 \\punkt } accVCello = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\translate #'(0.6 . 0) \\raise #1.5 \\punkt } accHarmon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accOrgel = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #2.5 \\punkt } accHaupt = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accCelesta = ^\\markup { \\combine \\Diskant \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt } accOboe = ^\\markup { \\combine \\Diskant \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accClarin = ^\\markup { \\combine \\Diskant \\raise #1.5 \\punkt } accGeige = ^\\markup { \\combine \\Diskant \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } ") (d-DirectivePut-chord-postfix "Accordion8v16vTremolo" "\\accVCello") (d-DirectivePut-chord-display "Accordion8v16vTremolo" "Accordion 8v16vTremolo") (d-RefreshDisplay) ;;;End of scheme script ;;;Accordion 8v (d-DirectivePut-score-prefix "Diskant und Punkt" "Diskant=\\markup { \\musicglyph #\"accordion.accDiscant\" } punkt = \\markup { \\musicglyph #\"accordion.accDot\" } accBasson = ^\\markup { \\combine \\Diskant \\raise #0.5 \\punkt } accPiccolo = ^\\markup { \\combine \\Diskant \\raise #2.5 \\punkt } accBandon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #1.5 \\punkt } accVCello = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\translate #'(0.6 . 0) \\raise #1.5 \\punkt } accHarmon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accOrgel = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #2.5 \\punkt } accHaupt = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accCelesta = ^\\markup { \\combine \\Diskant \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt } accOboe = ^\\markup { \\combine \\Diskant \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accClarin = ^\\markup { \\combine \\Diskant \\raise #1.5 \\punkt } accGeige = ^\\markup { \\combine \\Diskant \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } ") (d-DirectivePut-chord-postfix "Accordion8v" "\\accClarin") (d-DirectivePut-chord-display "Accordion8v" "Accordion 8v") (d-RefreshDisplay) ;;;End of scheme script ;;;Accordion 8v16v (d-DirectivePut-score-prefix "Diskant und Punkt" "Diskant=\\markup { \\musicglyph #\"accordion.accDiscant\" } punkt = \\markup { \\musicglyph #\"accordion.accDot\" } accBasson = ^\\markup { \\combine \\Diskant \\raise #0.5 \\punkt } accPiccolo = ^\\markup { \\combine \\Diskant \\raise #2.5 \\punkt } accBandon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #1.5 \\punkt } accVCello = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\translate #'(0.6 . 0) \\raise #1.5 \\punkt } accHarmon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accOrgel = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #2.5 \\punkt } accHaupt = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accCelesta = ^\\markup { \\combine \\Diskant \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt } accOboe = ^\\markup { \\combine \\Diskant \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accClarin = ^\\markup { \\combine \\Diskant \\raise #1.5 \\punkt } accGeige = ^\\markup { \\combine \\Diskant \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } ") (d-DirectivePut-chord-postfix "Accordion8v16v" "\\accBandon") (d-DirectivePut-chord-display "Accordion8v16v" "Accordion 8v16v") (d-RefreshDisplay) ;;;End of scheme script ;;;Accordion 4v16v (d-DirectivePut-score-prefix "Diskant und Punkt" "Diskant=\\markup { \\musicglyph #\"accordion.accDiscant\" } punkt = \\markup { \\musicglyph #\"accordion.accDot\" } accBasson = ^\\markup { \\combine \\Diskant \\raise #0.5 \\punkt } accPiccolo = ^\\markup { \\combine \\Diskant \\raise #2.5 \\punkt } accBandon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #1.5 \\punkt } accVCello = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\translate #'(0.6 . 0) \\raise #1.5 \\punkt } accHarmon = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accOrgel = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #2.5 \\punkt } accHaupt = ^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accCelesta = ^\\markup { \\combine \\Diskant \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt } accOboe = ^\\markup { \\combine \\Diskant \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt } accClarin = ^\\markup { \\combine \\Diskant \\raise #1.5 \\punkt } accGeige = ^\\markup { \\combine \\Diskant \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt } ") (d-DirectivePut-chord-postfix "Accordion4v16v" "\\accOrgel") (d-DirectivePut-chord-display "Accordion4v16v" "Accordion 4v16v") (d-RefreshDisplay) ;;;End of scheme script denemo-2.2.0/actions/PaxHeaders.19168/mytest.ly0000644000000000000000000000013213135434036016064 xustar0030 mtime=1500919838.039981806 30 atime=1500919922.976648472 30 ctime=1500919912.906648472 denemo-2.2.0/actions/mytest.ly0000644000175000017500000001223513135434036017740 0ustar00jjbenhamjjbenham00000000000000 \header { title = " Sonate op. XXXVII/2" composer = "." arranger = \markup {\fontsize #2.5 "Joseph Bodin de Boismortier (1682 - 1765)" } meter = \markup { \fontsize #3.5 " II - Adagio" } tagline = \markup { \fontsize #2 "Created by J.J.Gerbaud using LilyPond (http://lilypond.org)" } } \paper{ top-margin = 15\mm after-title-space = 30\mm paper-width = 210\mm } #(set-global-staff-size 18) #(set-default-paper-size "a4") global = { } globalTempo = { \override Score.MetronomeMark #'transparent = ##t } resetBarnum = \context Score \applyContext % pour la numérotation des mesures #(set-bar-number-visibility 2) %% Identification voixI = \context Voice = "voice 1" \relative c' { \set Staff.instrumentName = \markup { \column { "Hautbois" } } \set Staff.midiInstrument = "Oboe" \override Staff.VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 6) \override TextScript #'padding = #2.0 \override MultiMeasureRest #'expand-limit = 1 \once \override Staff.TimeSignature #'style = #'() \set Score.tempoHideNote = ##t \tempo 2=50 \time 2/2 \clef "treble" \key g \major b'4.\f (c8) c4.-+ b16 c d4. g8 d4 f e4. d8 c4.-+ (b16 c) b2 \grace {b16 [ (c]} d2) ~ d2 \grace {e16[ d]} c8 (b) a (g) fis4 \acciaccatura e8 d4 f4.\mordent (g16 f) % 7 e2 e'2 ~ e4 a, d2 ~ d4 g, c2 ~ c2 b4 a4 \afterGrace b2 { c8} \afterGrace a2-+ {g8} g4 b e2 ~ %13 e2 dis4.-+ (cis16 dis) e4 b \appoggiatura b8 (c2) \mordent ~ c2 \appoggiatura d4 b a gis4-+ \appoggiatura fis8 (e4) r2 R1 e'2. \mordent a,4 d2. c8-+ (b) %20 c2. f4 \afterGrace b,2 {c16 [(d]} \grace {c8[ b)]} b2-+ a2 r R1 r4 g'8 (fis) e4 g cis,4 g'8. (a32 g) fis8. (g32 fis) e8. (fis32 e) dis4 b e2 ~ \afterGrace e2 {fis16 [(g]} \grace { a [ g fis e)] } dis2-+ %28 e2 r r4 b4 b a a g fis e %31 dis4 b' b a a g fis4.-+ (e8) \afterGrace e2\fermata {e4_\markup "librement" ~ e16 [fis g a] } b2 ~ \afterGrace b2 {b16 [c d ] } \grace { e [ fis g g,] } a2-+ b1 \bar "|." } %% fin voix 1 ---------------------------------------------- voixII = \context Voice = "voice 2" \relative c { \set Staff.instrumentName = \markup { \column { "Basson" } } \set Staff.midiInstrument = "Bassoon" \override Staff.VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 6) \override TextScript #'padding = #2.0 \override MultiMeasureRest #'expand-limit = 1 \once \override Staff.TimeSignature #'style = #'() \clef bass \key g \major g'4.\p a8 a4.-+ g16 a b2 g ~ g2 fis g4 d g, r4 R1 r2 d''2 ~ % 7 d2 \grace { e16 [d]} c8 (b) a (g) fis4-+ \appoggiatura e8 (d4) f4.\mordent (g16 f) e2. a4 fis4-+ \acciaccatura e8 (d4) g2 ~ g2 \afterGrace fis2-+ { g8 } % 12 g2 r4 b4 a4 a a g8 (fis) g4 e r g fis2 fis2-+ e2 e'2 ~ e4 a, d2 ~ d4 c8-+ (b) c2 ~ c4 b8-+ (a) b2 ~ %20 b4 e, a2 \mordent ~ a2 gis-+ a4 c8 (b) a4 c fis,4 c'8. (d32 c) b8. (c32 b) a8. (b32 a) g4 \appoggiatura fis8 (e4) b'2 ~ %25 b4 g a2 ~ a2 g4 fis g2 \afterGrace fis2-+ { e8 } e4 b' b a a4 g fis e dis4 b' b a a4 g fis e dis4 e2 dis4 e4 g fis \afterGrace b,4 { b16 [c d] } e1_\markup "ten." dis1 } %% fin voix 2 ---------------------------------------------- %% voix 3 voixIII = \context Voice = "voice 3" \relative c { \set Staff.instrumentName = \markup { \column { "Cello" } } \set Staff.midiInstrument = "Cello" \override Staff.VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 6) \override TextScript #'padding = #2.0 \override MultiMeasureRest #'expand-limit = 1 \once \override Staff.TimeSignature #'style = #'() \clef bass \key g \major g'2 c, g'4 g, b g c4 b a d g,g b g c4 c e c d4 c b g c2 a % 8 d2 b c2 a d2 e4 c d2 d, g2 r4 g' fis2 b, e2. e4 dis1 d2 cis f2. fis4 % 18 gis2 a fis2 gis a4 a, c d e2 e, a2 c4 a d2 dis e4 e, g e a2. c4 b2 c4 a % 27 b1 e,2 dis e4 e' d c b4 e d c b4 e d c b4 c a b e2 ^\markup \italic "(liberamente)" d c1 b1 } %%%%%%%%%% fin de la musique \score { << \new StaffGroup << { \override Score.BarNumber #'break-visibility =#end-of-line-invisible \override Score.RehearsalMark #'padding = #2.5 \resetBarnum } \new Staff {\voixI } \new Staff {\voixII } % \new Staff \with { %%colorisation de cette portée % \override StaffSymbol #'stencil = #(lambda (grob) % (let* ((staff (ly:staff-symbol::print grob)) % (X-ext (ly:stencil-extent staff X)) % (Y-ext (ly:stencil-extent staff Y))) % (set! Y-ext (cons % (- (car Y-ext) 0) % (+ (cdr Y-ext) 0))) % (ly:grob-set-property! grob 'layer -10) % (ly:stencil-add % (ly:make-stencil (list 'color (rgb-color 1 0.8 0.6) % (ly:stencil-expr (ly:round-filled-box X-ext Y-ext 0)) % X-ext Y-ext)) % staff))) % } % { \voixII } \new Staff {\voixIII } >> >> \layout { } \midi { } } %%%%%%%%%%%%%%%%%%%%%%%%% denemo-2.2.0/actions/PaxHeaders.19168/init.denemo0000644000000000000000000000013213135434035016324 xustar0030 mtime=1500919837.949981805 30 atime=1500919922.986648472 30 ctime=1500919912.903315138 denemo-2.2.0/actions/init.denemo0000644000175000017500000000602413135434035020177 0ustar00jjbenhamjjbenham00000000000000 (d-DirectivePut-scoreheader-postfix "ScoreTagline" "tagline=\"\"\n") (d-ScoreProperties "fontsize=20") ScoreTagline tagline="" PrintAllHeaders print-all-headers = ##t 32 LimitInterSystemSpace page-limit-inter-system-space = ##t page-limit-inter-system-space-factor = 1.2 1.2 1 3 1 3 0 2147483647 a4 20 1 0 1 1 1 0 0 100 100 100 100 1 4 120 unnamed 1 4 4 5 1 0 NONE 127 0 0 0 0 0 0 denemo-2.2.0/actions/PaxHeaders.19168/notes.l0000644000000000000000000000013213135434036015476 xustar0030 mtime=1500919838.039981806 30 atime=1500919923.003315139 30 ctime=1500919912.906648472 denemo-2.2.0/actions/notes.l0000644000175000017500000001313513135434036017352 0ustar00jjbenhamjjbenham00000000000000A [a-zA-Z\200-\377] AA {A}|_ N [0-9] AN {AA}|{N} ANY_CHAR (.|\n) PUNCT [?!:'`] ACCENT \\[`'"^] NATIONAL [\001-\006\021-\027\031\036] TEX {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL} WORD {A}{AN}* DASHED_WORD {A}({AN}|-)* DASHED_KEY_WORD \\{DASHED_WORD} ALPHAWORD {A}+ DIGIT {N} UNSIGNED {N}+ E_UNSIGNED \\{N}+ FRACTION {N}+\/{N}+ INT -?{UNSIGNED} REAL ({INT}\.{N}*)|(-?\.{N}+) KEYWORD \\{WORD} NEWLINE [^.] ; windows and linux/unix WHITE [ ] ;space and tab! HORIZONTALWHITE [ ] BLACK [^ \n\t\f\r] ;TODO: needs fix RESTNAME [rs] NOTECOMMAND \\{A}+ MARKUPCOMMAND \\({A}|[-_])+ LYRICS ({AA}|{TEX})[^0-9 \t\n\r\f]* ESCAPED [nt\\'"] EXTENDER __ HYPHEN -- BOM_UTF8 \357\273\277 %% {BOM_UTF8}/.* (yycontinue) ;original bom_utf8/.* ; if (this->lexloc_->line_number () != 1 || this->lexloc_->column_number () != 0) ; { ; LexerError (_ ("stray UTF-8 BOM encountered").c_str ()); ; exit (1); ; } ; if (be_verbose_global) ; message (_ ("Skipping UTF-8 BOM")); \" (lyimport::start_quote) (lyimport::multilexer) ;cannot use yycontinue as that calls this lexer \\paper{WHITE}*\{ (lyimport::start_block) (lyimport::multilexer) \\layout{WHITE}*\{ (lyimport::start_block) (lyimport::multilexer) \\header{WHITE}*\{ (lyimport::start_block) (lyimport::multilexer) \\midi{WHITE}*\{ (lyimport::start_block) (lyimport::multilexer) \\markup{WHITE}*\{ (lyimport::start_block) (lyimport::mtoken 'MARKUP ((record-accessor lexical-token 'value)(lyimport::multilexer))) \\version{WHITE}*.*{NEWLINE} (lyimport::mtoken 'VERSION yytext) ; in lilypond it is a state switch yy_push_state (version) %.*{NEWLINE} (yycontinue) \\sourcefilename{WHITE}* (lyimport::mtoken 'ERROR yytext) ; yy_push_state (sourcefilename) \\sourcefileline{WHITE}* (lyimport::mtoken 'ERROR yytext) ; yy_push_state (sourcefileline) \\maininput (lyimport::mtoken 'ERROR yytext) ; if (!is_main_input_) (block: start_main_input (); is_main_input_ = true; ) ELSE error (_ ("\\maininput not allowed outside init files")); \\include (lyimport::start_incl) (display "include state started")(lyimport::multilexer) {RESTNAME} (lyimport::mtoken 'RESTNAME yytext) # (begin (lyimport::mtoken 'SCM_TOKEN (read (make-soft-port (vector #f #f #f (lambda () (lexer-getc)) #f) "r")))) \\lyricmode{WHITE}*\{ (lyimport::start_block) (lyimport::multilexer) \\chordmode{WHITE}*\{ (lyimport::start_block) (lyimport::multilexer) R (lyimport::mtoken 'MULTI_MEASURE_REST yytext) << (lyimport::mtoken 'DOUBLE_ANGLE_OPEN yytext) >> (lyimport::mtoken 'DOUBLE_ANGLE_CLOSE yytext) < (lyimport::mtoken 'ANGLE_OPEN yytext) > (lyimport::mtoken 'ANGLE_CLOSE yytext) {ALPHAWORD} (lyimport::scan_bare_word yytext) {NOTECOMMAND} (lyimport::scan_escaped_word (string-trim yytext #\\)) {FRACTION} (lyimport::scan_fraction yytext) ; yylval.scm = scan_fraction (YYText ()); return FRACTION; {DIGIT} (lyimport::mtoken 'DIGIT yytext) {UNSIGNED} (lyimport::mtoken 'UNSIGNED yytext) {E_UNSIGNED} (lyimport::mtoken 'E_UNSIGNED yytext) \{ (lyimport::mtoken '{ yytext) \} (lyimport::mtoken '} yytext) \* (lyimport::mtoken 'STAR yytext) : (lyimport::mtoken ': yytext) = (lyimport::mtoken 'EQUAL yytext) \. (lyimport::mtoken 'DOT yytext) ! (lyimport::mtoken 'EXCLAMATIONMARK yytext) \? (lyimport::mtoken 'QUESTIONMARK yytext) \| (lyimport::mtoken 'PIPE yytext) / (lyimport::mtoken 'SLASH yytext) \^ (lyimport::mtoken 'CARET yytext) _ (lyimport::mtoken 'UNDERSCORE yytext) - (lyimport::mtoken 'HYPHEN yytext) ~ (lyimport::mtoken 'TILDE yytext) ; This may be the wrong place. But the lexer did not detect E_TILDE with the block \\. below \[ (lyimport::mtoken 'BRACKET_OPEN yytext) ; This is a custom lexer rule. In Lilypond these are used directly as strings in the parser. \] (lyimport::mtoken 'BRACKET_CLOSE yytext) ; This is a custom lexer rule. In Lilypond these are used directly as strings in the parser. \( (lyimport::mtoken 'OPEN yytext); for slurs \) (lyimport::mtoken 'CLOSE yytext); for slurs \\. (case (string-ref yytext 0) ; not sure for what this is. maybe scheme escaped parts in lilypond? ((#\>) (lyimport::mtoken 'E_ANGLE_CLOSE yytext)) ((#\<) (lyimport::mtoken 'E_ANGLE_OPEN yytext)) ((#\!) (lyimport::mtoken 'E_EXCLAMATION yytext)) ((#\() (lyimport::mtoken 'E_OPEN yytext)) ((#\)) (lyimport::mtoken 'E_CLOSE yytext)) ((#\[) (lyimport::mtoken 'E_BRACKET_OPEN yytext)) ((#\+) (lyimport::mtoken 'E_PLUS yytext)) ((#\]) (lyimport::mtoken 'E_BRACKET_CLOSE yytext)) ((#\~) (lyimport::mtoken 'E_TILDE yytext)) ((#\\) (lyimport::mtoken 'E_BACKSLASH yytext)) (else (lyimport::mtoken 'E_CHAR yytext))) , (lyimport::mtoken 'SUB_QUOTE yytext) ' (lyimport::mtoken 'SUP_QUOTE yytext) ;\+ (lyimport::mtoken 'PLUS yytext) \+ (lyimport::mtoken 'STRING yytext) ({WHITE}|{NEWLINE}) (yycontinue);(lyimport::mtoken 'WHITESPACE yytext) . (lyimport::mtoken 'ANYTHING yytext) ; in lilypond there is no token name ;\" (lyimport::mtoken 'DBLQUOTE yytext) ;; This is a custom Denemo token <> (lyimport::mtoken 'ERROR yytext) <> (make-lexical-token '*eoi* #f #f) denemo-2.2.0/actions/PaxHeaders.19168/Default.scm0000644000000000000000000000013213135434035016260 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.003315139 30 ctime=1500919912.903315138 denemo-2.2.0/actions/Default.scm0000644000175000017500000000002113135434035020122 0ustar00jjbenhamjjbenham00000000000000 (d-SetSaved #t) denemo-2.2.0/actions/PaxHeaders.19168/bitmaps0000644000000000000000000000013213135434035015552 xustar0030 mtime=1500919837.936648473 30 atime=1500919914.539981806 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/0000755000175000017500000000000013135434035017500 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensuralu13.svg0000644000000000000000000000013213135434035021622 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.013315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensuralu13.svg0000644000175000017500000000114213135434035023471 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/arrowheads.close.0M1.svg0000644000000000000000000000013213135434035022147 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.013315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/arrowheads.close.0M1.svg0000644000175000017500000000106213135434035024017 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.hufnagel.u1.svg0000644000000000000000000000013213135434035022315 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.013315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.hufnagel.u1.svg0000644000175000017500000000114613135434035024170 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensuralu03.svg0000644000000000000000000000013213135434035021621 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.013315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensuralu03.svg0000644000175000017500000000113013135434035023465 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/arrowheads.open.01.svg0000644000000000000000000000013213135434035021666 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.023315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/arrowheads.open.01.svg0000644000175000017500000000115113135434035023535 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/NoBeam.png0000644000000000000000000000013213135434035017476 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.023315139 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/NoBeam.png0000644000175000017500000000036413135434035021352 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR%©˜rbKGDÿÿÿ ½§“ pHYs  šœtIMEÙ 9çý4IDATHÇí•Û €0 ëŠýW6¿¨´PKÑ œ./,QQK`¼›piêYZ,jriQèó5t–>9I¨ô¹Z@ÖÒ°;?¸¢Ïy[fèó^Å»æÚÈ{j~ò,ÔØoþ䎤½É©nZ›sûU||ZF›Z£”œFÑý4¾»¡;¼^+^³îw=IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.trill_element.svg0000644000000000000000000000013213135434035022675 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.023315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.trill_element.svg0000644000175000017500000000124213135434035024545 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensuralu25.svg0000644000000000000000000000013213135434035021625 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.023315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensuralu25.svg0000644000175000017500000000171113135434035023476 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2diamond.svg0000644000000000000000000000013213135434035022201 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.029981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2diamond.svg0000644000175000017500000000116613135434035024056 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.sharp.slashslash.stem.svg0000644000000000000000000000013213135434035025051 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.029981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.sharp.slashslash.stem.svg0000644000175000017500000000137413135434035026727 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.medicaea.d1.svg0000644000000000000000000000013213135434035022233 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.029981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.medicaea.d1.svg0000644000175000017500000000074613135434035024113 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.sharp.arrowboth.svg0000644000000000000000000000013213135434035023744 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.029981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.sharp.arrowboth.svg0000644000175000017500000000222313135434035025614 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s-1.svg0000644000000000000000000000013213135434035020721 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.046648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s-1.svg0000644000175000017500000000132113135434035022567 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.inner.cephalicus.svg0000644000000000000000000000013213135434035025523 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.046648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.inner.cephalicus.svg0000644000175000017500000000111213135434035027367 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.6.svg0000644000000000000000000000013213135434035017654 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.046648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.6.svg0000644000175000017500000000165713135434035021536 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.smedicaea.virga.svg0000644000000000000000000000013213135434035023343 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.046648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.smedicaea.virga.svg0000644000175000017500000000076113135434035025220 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/pedal.e.svg0000644000000000000000000000013213135434035017660 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.049981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/pedal.e.svg0000644000175000017500000000133513135434035021533 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.vepiphonus.svg0000644000000000000000000000013213135434035024471 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.049981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.vepiphonus.svg0000644000175000017500000000107013135434035026340 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.sM3mensural.svg0000644000000000000000000000013213135434035022532 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.049981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.sM3mensural.svg0000644000175000017500000000132113135434035024400 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.1mensural.svg0000644000000000000000000000013213135434035021416 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.049981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.1mensural.svg0000644000175000017500000000062613135434035023273 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2doFunk.svg0000644000000000000000000000013213135434035022016 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.053315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u2doFunk.svg0000644000175000017500000000073013135434035023667 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.quilisma.svg0000644000000000000000000000013213135434035024115 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.053315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.quilisma.svg0000644000175000017500000000123113135434035025763 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1miFunk.svg0000644000000000000000000000013213135434035022020 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.053315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1miFunk.svg0000644000175000017500000000105313135434035023670 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2reFunk.svg0000644000000000000000000000013213135434035022001 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.053315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2reFunk.svg0000644000175000017500000000105613135434035023654 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensurald26.svg0000644000000000000000000000013213135434035021605 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.053315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensurald26.svg0000644000175000017500000000220513135434035023455 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accordion.discant.svg0000644000000000000000000000013213135434035021735 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.059981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accordion.discant.svg0000644000175000017500000000124413135434035023607 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.augmentum.svg0000644000000000000000000000013213135434035022040 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.063315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.augmentum.svg0000644000175000017500000000070313135434035023711 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.sharp.slashslashslash.stem.svg0000644000000000000000000000013213135434035026104 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.063315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.sharp.slashslashslash.stem.svg0000644000175000017500000000150013135434035027751 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/RehearsalMark0000644000000000000000000000013213135434035020273 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.063315139 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/RehearsalMark0000644000175000017500000000174413135434035022152 0ustar00jjbenhamjjbenham00000000000000 €€€ÀÀ?à?à?ð~p~pþ8ü8üüÿøðððÀüÀüdenemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.vaticana.fa.svg0000644000000000000000000000013213135434035021616 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.079981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.vaticana.fa.svg0000644000175000017500000000143113135434035023466 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.tab_change.svg0000644000000000000000000000013213135434035021516 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.079981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.tab_change.svg0000644000175000017500000000345713135434035023400 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.neomensural94.svg0000644000000000000000000000013213135434035022515 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.079981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.neomensural94.svg0000644000175000017500000000115513135434035024370 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.vaticana.do_change.svg0000644000000000000000000000013213135434035023137 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.089981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.vaticana.do_change.svg0000644000175000017500000000116513135434035025013 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.arpeggio.arrow.M1.svg0000644000000000000000000000013213135434035023240 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.089981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.arpeggio.arrow.M1.svg0000644000175000017500000000123313135434035025110 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.mensural34.svg0000644000000000000000000000013213135434035022005 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.089981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.mensural34.svg0000644000175000017500000000132613135434035023660 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.vaticana.do.svg0000644000000000000000000000013213135434035021632 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.089981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.vaticana.do.svg0000644000175000017500000000115613135434035023506 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/one.svg0000644000000000000000000000013213135434035017131 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.099981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/one.svg0000644000175000017500000000130613135434035021002 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensuralu16.svg0000644000000000000000000000013213135434035021625 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.099981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensuralu16.svg0000644000175000017500000000220113135434035023471 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.dfermata.svg0000644000000000000000000000013213135434035021621 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.099981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.dfermata.svg0000644000175000017500000000115413135434035023473 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1doFunk.svg0000644000000000000000000000013213135434035022015 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.099981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1doFunk.svg0000644000175000017500000000100613135434035023663 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.sharp.arrowdown.svg0000644000000000000000000000013213135434035023757 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.103315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.sharp.arrowdown.svg0000644000175000017500000000174513135434035025637 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.caesura.straight.svg0000644000000000000000000000013213135434035023305 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.103315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.caesura.straight.svg0000644000175000017500000000121013135434035025150 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0cross.svg0000644000000000000000000000013213135434035021715 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.103315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0cross.svg0000644000175000017500000000156013135434035023570 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/glyphati.svg0000644000000000000000000000013213135434035020171 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.103315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/glyphati.svg0000644000175000017500000000000113135434035022031 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensuralu15.svg0000644000000000000000000000013213135434035021624 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.126648473 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensuralu15.svg0000644000175000017500000000171413135434035023500 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.neomensural48.svg0000644000000000000000000000013213135434035022514 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.126648473 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.neomensural48.svg0000644000175000017500000000123013135434035024361 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.medicaea.fa.svg0000644000000000000000000000013213135434035021560 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.126648473 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.medicaea.fa.svg0000644000175000017500000000131513135434035023431 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2miThin.svg0000644000000000000000000000013213135434035022016 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.126648473 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2miThin.svg0000644000175000017500000000101413135434035023663 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.M3.svg0000644000000000000000000000013213135434035017766 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.136648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.M3.svg0000644000175000017500000000104213135434035021634 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1faThin.svg0000644000000000000000000000013213135434035021757 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.136648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1faThin.svg0000644000175000017500000000101013135434035023620 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2slash.svg0000644000000000000000000000013213135434035021700 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.136648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.s2slash.svg0000644000175000017500000000077113135434035023556 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1do.svg0000644000000000000000000000013213135434035021171 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.136648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1do.svg0000644000175000017500000000101013135434035023032 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/RepeatEnd.svg0000644000000000000000000000013213135434035020217 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.146648473 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/RepeatEnd.svg0000644000175000017500000000763713135434035022105 0ustar00jjbenhamjjbenham00000000000000 image/svg+xml denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.5.svg0000644000000000000000000000013213135434035017653 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.146648473 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.5.svg0000644000175000017500000000146013135434035021525 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.1o.svg0000644000000000000000000000013213135434035020026 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.146648473 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.1o.svg0000644000175000017500000000076413135434035021706 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.sM2mensural.svg0000644000000000000000000000013213135434035022531 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.156648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.sM2mensural.svg0000644000175000017500000000132113135434035024377 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/StartDownStems.png0000644000000000000000000000013213135434035021276 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.156648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/StartDownStems.png0000644000175000017500000000056113135434035023151 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR&-ÂúmsBIT|dˆ(IDATXGí˜Á! D­ñÿ턲Ú©!Ùõ&‹åñ¦ÕDi­½N|½O„R¦&"T­¿”Ä;×5Ɔò€ús -ÄÞ'Oóo*=6Jh*‘ËZC‚LߪvºÇ, ñ°(\*JJ‘=–µ0Xô@ ÂZƒ¢dC ñºÆØP–kͳ>ô5(ʱ‡Äf]ôXc¥`Q[j°ÌŠ]£‚©¡ÑR¤';xø·2bj 9ÝSưY–é­n´ ëjß}ÀÆ3½vc,[Ú{á/رqç)ÌDH›ÊêjÒvž¥zÌ‚bØÒ „Á*¡R`s,,S´ÓBl(б ( Ø)ë}¸ù«"L÷XU„i0Vd«:©(WEëØ®Åcmý©²{ëÌþ/Ç`G“ëyÌIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.vaticana.u0.svg0000644000000000000000000000013213135434035022311 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.156648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.vaticana.u0.svg0000644000175000017500000000073213135434035024164 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/arrowheads.open.0M1.svg0000644000000000000000000000013213135434035022003 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.156648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/arrowheads.open.0M1.svg0000644000175000017500000000115313135434035023654 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1faFunk.svg0000644000000000000000000000013213135434035022001 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.156648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1faFunk.svg0000644000175000017500000000100713135434035023650 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u0fa.svg0000644000000000000000000000013213135434035021154 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.173315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u0fa.svg0000644000175000017500000000100213135434035023016 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.0neomensural.svg0000644000000000000000000000013213135434035022117 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.173315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.0neomensural.svg0000644000175000017500000000072313135434035023772 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.dverylongfermata.svg0000644000000000000000000000013213135434035023407 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.173315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.dverylongfermata.svg0000644000175000017500000000131113135434035025254 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1ti.svg0000644000000000000000000000013213135434035021162 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.173315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1ti.svg0000644000175000017500000000110313135434035023026 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2mensural.svg0000644000000000000000000000013213135434035022414 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.183315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2mensural.svg0000644000175000017500000000104213135434035024262 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.linea.punctum.cavum.svg0000644000000000000000000000013213135434035026165 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.183315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.linea.punctum.cavum.svg0000644000175000017500000000140013135434035030031 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/nine.svg0000644000000000000000000000013213135434035017301 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.183315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/nine.svg0000644000175000017500000000126013135434035021151 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.punctum.svg0000644000000000000000000000013213135434035023764 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.183315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.punctum.svg0000644000175000017500000000104213135434035025632 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.vplica.svg0000644000000000000000000000013213135434035023547 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.193315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.vplica.svg0000644000175000017500000000100613135434035025415 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/LargeFive.png0000644000000000000000000000013213135434035020201 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.193315139 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/LargeFive.png0000644000175000017500000000773213135434035022063 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRXi‡ïT pHYs  šœtIMEÙ +9ËþpštEXtCommentCreated with The GIMPïd%nPIDATxÚíÝyxõÀñw“ì&Ù\$iÈ}/"G ò€>ˆ¨ +-¶bŸGEZÔGiŸZZû<PAÐ"§ ÚrªÜT‚ˆ‘ûØÝþ‘p˜L2³›™ÍÌ÷Û>­à,ó{öÃ;³›Lf>!• á)„„„„„!@!@!@xaº[œ ­ïUzKŠŠÃY;Ú+Ñ1±1•EGÇDGÅDEE¹L^ˆ¯¸¸¨¨¨¨¨¨øšÿ½ü‹b™?Ù oáîTPƒd”ÛíŽtGº#"##""""¯æ w9ÃÕŸó’jÏôÕ_ë­´Mf ’Õ/+Ð?9Üår9Ã]N—Óé­|Úë¶ÔE9dÉ’€=¤¤Ää¥î³ˆÎ«¬F -µ?/{EâZj?@”Iü Jôv¢HD©“z7@D$NãDW{€è½SotQ‘…º ˜•N"íìá¡ ¢ÌI¤¢Ô„܈Z’ ˆZ I€T¼îUe¡‰€¨5!MQkBâQ $¥YN' ""«È:#¥@\€¨uèD­ qRQŒR n®ÆV ÄÁˆ¨¢Ê1ˈZ ^@*‹ÊZ*¤²(E@|€("%€T¾UWd¡Å€¨RHE‘Š,4Š"D«‹€(⸊ùföƒí©(\‰e:gÛåz˜ !N—³â¿Wÿãt¹œ.W¨§ÜS^^VZVYiYiåKKkûrÕÔV€ÔvÈjuëµÏ÷µO¼Ëåt9û¶¯·¬¦´ôòÿ—”^îyäòÁBë7‡.°âè.˜‹'N-þ*×H(r€0!L µmÀ„(„Ôˆƒ Q D˜ë`Bá‡¬ë„ aBaB˜bB˜bB˜bB˜Y× HH(OœR ˆb œB˜@˜&„˜&„˜&„˜@ˆC LBLBLBLBL LH° ³jB<';••“››WXPæ)q†9Ããbãâš5kÞ¼uëHžy3At&äâÎééþyÞ’‘Ÿ®ü²E›NݺuŽæù·|BNoúïæïôÿ„¬¬Í"ŽN¦´q€àˆÏ8ˆgû§ë÷û±o_FÆ\Iv÷íñ8\É¡÷¹;Tÿ½UiÕ¯ì‹«Îø—⎱£›Ba$³cõß[ŸZõïú¶%ËrêôbïîÉi¼v3tÈòèŸÔ/|ïh—áݰ!þÁiíðÐR¦s)û$µõ¬£&¬äü[íGmôÈÕ Éš•|ïgf=‹¾µwõ_ï$à ñmŸüÒiS—³cx¿€ÔZiMR²°ç­Ë<¦/hç]i™€ÔR±ö„ä¼Üê¡}Ö,iMç€ÔX‘Ö„Öò…lËÖäy­ó@üy´Ý?Š,]Õ±{¦äbd½õŸÝ¼ Ç@4«¯Ï<<ð- ˆgúCE€T¯_ð,” Hµêóäºg@& MˆÈ±”¯©R^½./÷î¯Q Dò†mD%É»ç *È¥Ô〨"§‡D%98ÁÈÕ#†‹Ü0Ó> zW”;•XæÊÑ€TtA‹ØïoÁ!K™#–ˆœ›äD%ùòŸ€("ÏžDDä¢* Í›ˆR ²ês@”‘§ËQè"’1¥&D^,D)SóQ Dæ”rA¥Åž\ ˆR"oø×Î…™Û¶ÍMÍ›'6Š w†•ääŸ8rôÈÑŸL^í¾­ƒí¢{ÈŠéŸÒ£[ËkØ<4¢ñå<·mëÖÝ¥&.÷í¢÷å÷øÚDB¤¦öÐû´â¯–-?kÖróÙÄë¬ùËÞCÆß›hl'åÿùèc“NFs³7È¥¸þÅ“'·ög?óþö£ë¼ÙÞ 'Zjþv÷§ïóû[»eþå&¬÷T3[¿ìÕ<ƒôþtÏDÿ¿Õîœt`Qb×ë[cï÷!Gþö+wÜØ|B&œ^çÜ[)LȵŽž>:ð*ޱ§oüErMã2ŸªÛuA]·£MÇ‹½@~ì5ãÚÉ!h¼ÛØfSÃmâLÿÙ¿:ô®Zùk±Hó*W1ÿ)HÕáÝch³'í"UîÈ~êíà¬a§¡szÄ3b;ªŸÚøjNPÖ°ÎØ¤™Ø}BäüsAYÃZCg?ˆý@ZW½€`ÞŽ ,!k¯‘­f4·!ˆ£êˆøžôX¿„OlÔÌ&RåzµÏYÙ5Ïú%|hd£—£mòóûeeT»9>Ãêë µ7°Q—½¡¶œ[ªÝµâücVßáÌÐ ¾c* !ƒªáç[»€#_x|ØD4>¬ëw?Xº€O ¼×Iœ#v\}‹üG¬|¥å5ò\¿o[סmšmáþ—ï×ßfÌ8ûxT»+é]Z—›¬µìj¨òÎõß‚h"¶­c–ÈDËN#è{È»vò0ra¬E_ˆÏÿ£þ6¿I;ƒôÓüt¬ùûsú—›tù³ØÄ­ý «ËoÅûíúßp‰[ioíc–È›¯™¿ï¢)úÊ‹Ú š=³Øô}?«ÿ„3GÙÌ£úÍøs×°eè æîz¡þ•ÓÃW‡ÚDºdԴ邇ÍÜó7·•èmÒ}sŒÝ<4®í­ñëx¾ÉsMÜqÖ]kíç¡2¸Æm}¿zÅ´×Z9#²õ6‰^×Â~‡¬k»yÕÄ™sãõ3w¦ëmâZw§""’\Û»µþŸ˜q5Nößêmöqš=´~`§ÖÛí|ÝwkÝwúÃ]Ç"{zhÔþݹ·Íªëòlè¥ÿ%Åy÷‹MóUkŸÞCú~ï«Cž—ôÊ#ä=Ÿ]Ó8‡xô>JÓýÜÓŸÛO?®¡bØ’qv­CVè½Îì´&°Àžw:è{„¯´¯‡æOá¸ÄãhÚðìmï€'õ?È6nýäÚ:3÷¶ÙÏ}¥?ÐÛ€bò¶¡6öÐü¤Ï¼F¿•2mŒñsÉ7¯®2²Y¯µÍ*ußoôá&<ÒËÈÆæ,û`»¡?pôâ(±wZ/½¦úó´ýíúÂÚ_Éå.fð¯Ç‹ŸÍÓœ…~Þã%bÈ€ž=µ/ÊÎÞ²yË£¯Èâ—¤ŠÝÓùþæþ¤Ä®ÉI-“Ý‘‘‘¡…ùùù'9|$Û?¡ûŠÖˆˆï†ÜzXÊô9xhßžÉÑ7ø I\ÿ5H¿ ¯cäN $¼¿º)5ŸC$'¸—ÓÞÿ&µOÈ ­‚¸„¤5â¡"½ƒ¶€ˆY™#aÐé¬ýÏœíFA™ °éßÉ8©×|A©™uy¸c’`ý_ÜŽKwÀÃ(ˆt·x¿WfŒ áé7ÒÃÚ÷å[¶†C³°àOHüÃSoæ‰÷ó¤.g½›gÉû?1.’§Ý‘¼…s˜½·–&vâ9DÄ·cþÒ‹æí*aÜ)œ8ê""E«—l(5c?mÓÒRÂxºë ""׬ÜPP§}¸Ý1ªo9Ì‘â-Ÿ}ž FßÛ‡öuñ<› ""rn˶»ýšg×>}útä8eˆˆˆçûýé™èÞø¤që;vlãä鵤òÅ×™ã'³³sÎå^ÊÏ/*)ñx½—ÓårÅÄ'Ä'$´HJJâ êA!+ã     B€B€B€B€B€ € € € €     B€B€B€B€B€ € € € €     B€B€B€B€B€ € € € €     B€B€B€B€B€ € € € €     B€B€B€B€B€ÂSB€B€B€B€B€ € € € €     B€B€B€B€B€ € € € €     B€B€B€B€B€B€ € € € €     B€B€B€B€B€ € € € vëÿ÷«ÚN¢˜âIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1fa.svg0000644000000000000000000000013213135434035021155 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.193315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1fa.svg0000644000175000017500000000100213135434035023017 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.C22.svg0000644000000000000000000000013213135434035020336 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.199981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.C22.svg0000644000175000017500000000154013135434035022207 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/sfz.png0000644000000000000000000000013213135434035017137 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.199981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/sfz.png0000644000175000017500000000126113135434035021010 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR#ëõ!sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ !é/ÚtEXtCommentCreated with GIMPW IDATHÇÍVQ‘! Í,` XÀ°°°°° XÀBîç„Àn·{mç2“™–xIÞKz¡ÕZ)¥DÖZ2ÆPŒ‘Zk—ö뀤”º{ïÉ9×? LŒq‚ˆDDÔZ›ÖÞ Fg$¥Ôpf€J)ï³ïû¨ÖJDDÛ¶ ëWxó'0LTvkí@f^!¼—39ç)+1ÆI]9çûjBDòÞ/¥©ùqæW8r ÉCÎ9ªµ"çœÉ{ßÁjçß¼÷;€µ–RJ}½µFÛ¶õï˜Â_$­”²òHiÚ1ã]Cšµ7Æ Ä<ºdÛ¶ Œ1æˆî=p¤ç!"ÕZ‡TѲL«¦†ˆTJ<ƸrÈyIÎùaÄ:sg <²TSkm*ƒ”&“úLÒÏ‘gƒì¦2 ²ƒJ’éÎ ´ïûѱ’Rz¹A·x©¸«­>ÆHιåäF·m.‡–¬g­^Nsî3¬äç†#(¥ôúêÔÊyó¨DúYqä’ü ‰$ˆ1N’ÖóèHEõ¾ïTJéåX‘Á<5(u´+Ù"%¶ÖNY…³ºLú°;VJ¹Þg´b˜Àš/w¦ò­÷Œœ\ Ùùiù0L6®©”áÕ—þËÀÈ7ˆŠ!„˯¶—a@LXkíSʹk_¿ùö ÿÈ~…-%ßár[IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.rightparen.svg0000644000000000000000000000013213135434035022764 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.199981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.rightparen.svg0000644000175000017500000000107113135434035024634 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.d4.svg0000644000000000000000000000013213135434035017752 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.199981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.d4.svg0000644000175000017500000000116213135434035021623 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rfz.png0000644000000000000000000000013213135434035017136 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.219981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rfz.png0000644000175000017500000000134713135434035021014 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR& ÜÍesRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ 3ä´$ùtEXtCommentCreated with GIMPWBIDATXÃÍX˱ã o¸Ê‡wÅ!8RC RÀ!ŒC RP ¤@ ½§aIv­]*.úŒšîž†Ò èŽ?Ÿ,þ|>é~¿Óù|¦ÓéD×ë•DZ—ñ1Ï3n·ˆD¥Œ1ÐZƒˆàœÛ­ñß… ”* n·rÎåžý*°yž ™)%€snøkÀr΋ [=Àrý+À¬µ+¶¼÷å~í¹Â{ÀbŒˆ1®d²ÖÂkm‘RJ+PD„yžŒ2óâÚa`!„Ò9bRf†snõÑËåÒÓ›Zë— š%"3#ç¼(] PP›¹>Ó˜0#ÆN)i·2éãÀd'ó•ÕZ Ôá®ôÞ–´ÖpÎ}D¾zœ~ë/‚¿ê|£2DÕIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/MultiMeasureRests.png0000644000000000000000000000013213135434035021772 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.219981805 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/MultiMeasureRests.png0000644000175000017500000000034313135434035023643 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR71~‚1[sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ Ráµ+cIDAThÞíÖ €0À(Ýåw†Ò}¼›À4Å&hr%©AߺåÖ/X(Ê›§Q''Õ NÛúMsÂMµ6î¿æ„ÎB±P¾ú‡´P<âW¢i8kN8á, °P,Æxî 1U’ÆVIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.mensural.d2.svg0000644000000000000000000000013213135434035022332 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.219981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.mensural.d2.svg0000644000175000017500000000125213135434035024203 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests_M3neomensural.svg0000644000000000000000000000013213135434035022320 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.219981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests_M3neomensural.svg0000644000175000017500000000074413135434035024176 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1do.svg0000644000000000000000000000013213135434035021150 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.229981806 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1do.svg0000644000175000017500000000101013135434035023011 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.sM3neomensural.svg0000644000000000000000000000013213135434035023234 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.229981806 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.sM3neomensural.svg0000644000175000017500000000136113135434035025106 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d0faThin.svg0000644000000000000000000000013213135434035021756 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.229981806 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/noteheads.d0faThin.svg0000644000175000017500000000101013135434035023617 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2doThin.svg0000644000000000000000000000013213135434035022015 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.229981806 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u2doThin.svg0000644000175000017500000000077013135434035023672 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1re.svg0000644000000000000000000000013213135434035021154 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.236648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1re.svg0000644000175000017500000000101613135434035023023 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.mensural48.svg0000644000000000000000000000013213135434035022012 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.236648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.mensural48.svg0000644000175000017500000000116413135434035023665 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/sff.png0000644000000000000000000000013213135434035017113 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.236648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/sff.png0000644000175000017500000000154413135434035020770 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR'â¦[sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ +îÃîtEXtCommentCreated with GIMPW¿IDATXÃÍXÛqã0 \ß\H H r L J J J L r jA)*.A*ù¢©‡íûf4ã¡p,ŸDDðKíÏÿ ôýý¼¼¼àt:áõõŸŸŸ›>—Ëïïï Ÿ¯¯¯äI›¦Iêº@ˆHœsÂÌ@Ú¶½ñ !HUU»>x˜=„™eš&éû>l­ï{!¢äSUÕªÏSà,0Ò÷}€Í˜Ý@bŒ""Ò¶íÏÃàÚ¶]ÂÌé]žͲ]·ïrкþ¸ãMš¦)×l6Msãã½/VA}W:¨ëºÅž®ëd†Õ !„»®[¬!ï"ç\"eÓ4‰¬9¿Ö"JÙŸSÂÚ_•”qñööfFŒó<ã|>º®ƒsD„yž1ŽãB¯ˆUU¥ßDf†s.ÅžçyáÃÌ`æô»hŠRµªTŠ­FXÓ2k¥l)¯6ýòJlí í5-ûwr†¡]ªÎ („ !„ŵ,ä"»'9¤®ëCàÒlíûD”8r>Ÿ1ŽcZÓõÜêºÞœŸ%åâ®åã(ÿRUpïý®„᛹[Vïý‚7„6ˆmûäeßã[ÎáMpªG9wJ_¹6~Ö¬”i;v9w½^“–Ù»™rC5èz½ÞhÕ#|ÛóYXŒQˆH¼÷2 ƒxï…ˆ„ˆY+)þVIK™vÎÝ5&‘_þò±µ6Oí /YéztDx‹:·gVt\η{³V§å³Á¦iZÍZ!·²’w¶íú‡ÁYžh@Ë7½u¬(ÅÙ›½‡ÀY]²w{;OsÞ”.öclœ§ÀYk@{P)š!cLe&¢ÍKÁÝeÕ®­ªjqÁ\+Ž;fç\ËÌO+‚›¦Iš¦I‡8çvÉì½OÙbfiÛöáRZ;ýæ¿#~B¿*cElòIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.daccentus.svg0000644000000000000000000000013213135434035022007 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.236648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.daccentus.svg0000644000175000017500000000076413135434035023667 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.ugrace.svg0000644000000000000000000000013213135434035020711 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.236648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.ugrace.svg0000644000175000017500000000077513135434035022573 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/MezzoPiano.png0000644000000000000000000000013213135434035020430 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.246648472 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/MezzoPiano.png0000644000175000017500000000051113135434035022276 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR)¬[sBIT|dˆIDATXGí•ÛÂ0 C)âÿ¹‡¢Èµ—&ið¶\œ‡Aë½ßÎþ¹ŸÐøþ»®t 'Ѷ­µÒ›õz!ÛÐF‘øÕû¾w¿z»™@´æm`EAƒ¬#à§ÏtÛw·÷ÕÜИ ½‹L\Å*î3-v r­ 0Qt‘-Ñ—6Å3Â|&?ýE «àG:>‡z ~‚dEQL RñH”çÆØ Â~V¿Rc})'Q4 >@QÇ/À4¥“lóLŒ ‹úUt’5°Žj,NF=ôoWžÄ4"5çkçV+ñK@n;7;¯r-{ößrR¹¶#~ 'ŸM«Ž æ73ÙIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/LargeEight.png0000644000000000000000000000013213135434035020350 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.246648472 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/LargeEight.png0000644000175000017500000001241113135434035022220 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRXi‡ïT pHYs  šœtIMEÙ .+E0õ—tEXtCommentCreated with The GIMPïd%nIDATxÚíÝy|NWðóf‘Mˆ¨‰Úb™R$ö}™¢J[Âhƒbh;vÁÐ*ói™¦¥ó©ª±•–V5ªtkˆÆÒÒ š"ö%&‰„ð&ï?Úi§ÉûžóÜ{Ͻé8¿ßŸÞ{Þû¸ßœ»½÷žãÐò[Š6@€@€@€  >–|kñ¥³YW³²rróróN§ÓÛÇ×§|pp…°°°ð¨¨å°Ý=Æ!ù÷{G~ú¬“»Î‡4lÔ¢¾7¶¾µ Ú™}ûRÓ‹¨‹6kÛ±MEXrmû¶mWôÁZôîÙ‡1é ?lÜøáÆUÄ·…‰Dóïaò+ª{®6(¤€~¼j§”:ºŒÝÄ4ÈÅ%KoH«¤ÎÄáþð0’þ׊¥Öñç‘1 rxN’üjj¾>Ð FræåuÖÔ·¸¹Ú †þ s&ÆXäÁÆMÊGÑyE¾vò5+KŠZÓ=DGNw}ÖRv¾ã 'z¹{üsRõUµÿ( ¤\{îK[ʪ–Ô „¤ ̲©.ÿžÂ1D¸»ZÐÙ.VØÿmôAîZmkiŸ¤"ý'Ü›O¦Ø[Úäâ)è!žs±ÛIÛ‹[6 ž’Ùõ‚®Ž÷HÓ訨jA>ùùù2Og¦ÝÔ€Kê ÷ÉèJ?œ{·{¼Í£¥oÛj))[³õU”ú@ÜåL{òïåÝzWöøaÑÎuIyzÊ‹þæ!ÕD4B.Õ"~YðØ ÑwÝ]ZGOy½]šZ¡€ä4¢m¼roPVY´¾‰‘E)gڦ떺ҢÅ!d¿ €”È‹¤ WižÕ^Ž,Ò® ¿Ê ÒfëtYçŠ?¦Š,Q Dx–u¬å]ÂFþŽî¨3¤Ñ|(S¥NE7óP<æ,Óÿ@{Ô'h Þ˜ƒÓÞ_ò<å;æë÷Ÿ!ž½]Â1ä¿ÙJÙ`S^+¿@‡cÈOÉk|Q¼¹®síž®(‹ùŸ­†ccŒ±YºKÆ×¾º%e±Ââ^cŒ±ô¦âgEý˜ºÿw-Žr9âœ/zcÚX³»/™»[õ}Jÿºò9vYŒ±Ï“Åík'š, =égÁ÷±ËbÌõèQqû-½ÍVp/öáÌ÷ZzÈz‚Gl/Óø-!,t vY®W ͧ9̗Іò–2Ï»¬-}§¼2^6?ÙHü.uH¶ê=d¡õ)/ÿ×#<\’ó껬û ­ãå1°LŠê K [Ö’SDLw€ˆ@ Ö÷“UÅXñ"ªï²Öß&4î «Š^ÂEÎçª òå BÚû™Þ„¾vTiìdBÛX?ie<)^$Si”!Ë+££øÎÈY¥AHƒH0Æ÷÷áÜÝm3¿RxUe=…”¶Ñëh%\â¦Ê ¤g˜Ì;âMË„’Lj$±?áØ·)8b;«+Zà¾Â ‡hã`IoLx@º§0È~Z[§­ Å ƒÐöX¬Pf!µlíÿg ÇimïÊ,¤ªð°¯.HqØ×Ë,$=Ä#Èâ Í%™…OÙÔ¡Þ5ºhk S„:fÃ9[AªD”4™…hñBÝ’Yˆðº¯ºº ÔÛxY—í‰QäµñV‰…äÄ<ˆÌ' E£ú;ê© B¾àÛZhH}…¯CÈ÷Uó7È+Dtj׎© Bÿåá]y…œˆGúmõ½òž^;  l–´B´uVDÇ«1Ÿ”TGî)þçO9Ñ3L¢KN‡Ÿ+3ð¸YIÇõü#cBÌÔóRêØÎÿx¤@¨×"ƒe<r?S¨÷H¦2ˆ¾ÜRÇI(#‰(ê¡4H}_±t±ù2>â<™) ¢w0é1¦§lËLæ~Ü£ CÑ-a“É*£kÌfè!ºR¿ÞTü¡h{µV$J÷·Ü´ÈL‹¹7üË-dŠƒÔÑÿ5Ú„IEÆ;È|þ•N]€È›= O7¹;«HÔt•<ÜŽä*oè©ÝðõÆn‘_®w‡WàŽÎLõâel‘Õi¦¡—j¦ñ'u u¾ŠûU¯iÊÅý`ü]Lû¼˜E]ýqîCïñ.õ@ÜÿðÓÓHÑâ:³i“ãÝêË;ÃêºÚ¡ÜËè¤ÇMô:iŒøg•¢ž¼ ›ï fùéÀeþí¨‰ãcohcx¿¤Ôݦ ‡‡¡5O˜ÿæœYQSùo!ÎáyÔÛ¥¤‡§)$=n哿ùðµŒ×²ÁMÍxq5”Þí ó®å=HÒøš¢β˜c˜,í½.qw*õI繆Vªî¯<î²´+2§´ ^jžµ¼çUûhÊÆã,mÃ¥²û >øëýoÐøQN ¥’!û¢¬í†_¶órÞ—¿æÒâ&òoŽ~#çǯþ;g¡ $Mˆ»|kÁ«üøÓšVÌ›¶*úˆbÉ'w>Ëù¸ÃuÅ=x3}òë¶$Sæø2Åù:«n÷ã!›æ)ïÁéón“Sv–Òb}-†ðî_¼gçk2ã÷ÂCÂZOµ­Žª_.ôƒ†`—ÅØ½éö”Ñ{E,Ä=„ù}lÏvÓ6ÃÂbÖØRÅ‚ø Œ1Ƽg DØnªÐ¾_¹¹|Œ78DÇƘ«ÿF›J‰˜4* BVØ3Ù¶+Ã1C"\$¯óaÛÊ)?61 ¢\oÒ¾‚*N™A²º}ocIs¼ÂÏÇÙYTÜâæÊ‚ÐþÚaë€nc' ‡ðSðÌ&[ëŠ^Ý=„— O¦ØZ×¹Ž/¡‡ð³b´½›¨Ãº€p³{@¶­µ…§ˆžÌŽil­-«Ãz€ð¯v̰µ¸{ßÄ.K¯†Ø»Ûš5Ën®²÷üwêëj‰è¾I¶qU; œ÷’†"È…á;ì,qît€¢­œrËÆ—Œˆ(Ù“×ØW£WR_€³ãûkô߭΢á_ªÔ´¯ÈÂ~—ÂÏÅçšÚy`Ïêw œäL¯·ÊÞ“ÑoÇ©bàâZ9í¦ý…®Nˆû¤½¸¯, <¤ÆXfzwYy›—‰»3´ ¥óYÌBWUzð¯Øe•êVzþ0>l…µï$ú¤5RADÇ ¢;y—Ïi7ç†[ZjÛbµ_‹.‘ ¼5Ý¥išvï½&VŠ,È/9Û‚·©æÿ<®Ó¶žÖ„åä¿ù‚û ô?~5ÒèËÞ| ?¦èîÏvï”XüêÌÊÖ€\ˆ¦iÚíÞÜÍ´´t‹‚w¬™~<@4M»ÒŒéé?¦ø³Ž€ø_ˆvœ?ÒÏã ö‘.’dþ軳ym/$Ê~ "ä¶ê Ûý¹h¬`ø·¼7¢äм­8È6¾Ç“EÂ58×>"¤¡KiGë;”u¸¶´•(²ÿÁáßíÝÕ§÷qôg¤˜½÷îé! d¹Âw{ÓÛrgLÕqç*åå=r*®x½Üƒ Âë!WzñgY©çNbûä­ržåÉÝÁÉœ?gÅäx}}±ûþ R†(Û è.ËÕ?½WóTý»ŽÂEsn›.¹ÊU/%{È|¾GÐ:»rÿi§F˜.9û;%wY{_â7\dl:ЪËv×7[óW*‚ÜTÌm×Åð`ýÒfš v§‚Çí‰-ü}ϱ:&VšþÌQ35åø(×CÖñ=ØL3¬ñSO†aªÜœÀo9ÑÜZý}^ÅDóÊL¼j;7Àìz{61àr=dç{üFM›_q=ƒ ·MS Ä•(h4CÆ•YàÚ9†O àsÝe}ø~›º’t]6Êà–½¡Rq¾,h“(k€Ý‘ë ž¿f*µËZ~šß¤ü`ik˜dLä´J E¢ÇþÿP^Þêû¬0Ôì’J ›.šHá0a¾‘VWUY(hÙRj‰c 4ÊRäÐ^A‹~’GçY`8[!·E-úI® ÜG•t·ÉSç:ä^˜à?ëŸ#ýeƒMº£Î)ÓC¾ýñµ’ÿòGßþz[ÜfÊ€|(j`Å8˜ õÎr_‚Í¢­,(¢úk:8•Ù)sý+ªx¾&zˆÑò¡–ÜÖ+7ÃTÕ*ƒ4²fŒÐa‘úUÉ>|ð°5eøÑ·¸* ÉÂå­G.Á=Ä È7âK2‹êï 7 âÇ¥ªYUÈP= Wˆå›¢»žŸª*+r#«ì@‚Û¤È1ñò!–Uò@Jœ/`Y%z~SäŠxy_Ë*ùŽKÎhE@.—%HP}€è!¾ð(@ €Ü³®úŽHE@rÄË[8ðhuò’µU¹R//_ð[ùSän™‚Ô /Ù˜¡‡Ø°Ë A1’k])þä%›ªR,^þ¼u¥oT©£ áäåÜo¤­ ?çìo æ6 v€OàÚ)R¡LAò‰ËUŒUä!ñò—o•yéî£ åwŸƒeò{¦ e¸‹ý–•’’ 5Ëä m±ØHu@(C"°lR0â»ÎñLhBƒœceÜCú+BµïS«J¡ Ï­HdEB‹U’s‚´Ø¦ˆƒ22ò‹® ÷“¢ xF%FªÚ¢}Öפ¥„(ÒšÒäCk*I%-5ò÷(ñžúEÒ뇚YPH~ÂÏc¬Éw¥zH$éõ·­(ä Š›ò {”|ǰ3¥ÍZ+n0’†Ø¯Ï!½ÇT¸R~w>§,5Á÷)1ÖI^eÊ4ò5NJ^4Î#cŒ±*gÊ«ÖC*t¢4º´XzoQšþà{” h9é¼2ôLE¹e¤ š‘ÀTë!ìiÒc³·æI.c!e¡™ x”·÷é$J³À5dVq¶áÐÕø;¦^a¤–:¸ô Ê©Ä"QÁ£tñz‘Öpüei5h‰„…05AØÚ Tî(i;­÷÷š[K ïÙ%ÿÅ??…Ôò”·¤ì/ö!¼'×z‰— nfGÈŽ&¾²Qʈ±®„©;Ë¥5PÃÃÝØlU¨D=+åy‡·(S©ÎSÅÃíü!¹µoÒ×ú:ÜtÛ#¼•Ò{³ƒ©ÛCXÅYÔë¹.¦aÿ¡?Á#|¥2îç1t6K'6Ùen­- Ocyo묌‡ûñ=}ß%ÿw65sÄõ®”§ã(äáaÀÕ6£È"­MLÚ™Õ‰ÒxÈx…<ŒÞé?ËØó×ɱÚ[”ò`Ló=cMw>­éŽë ÒÀ°UNijÅ#ˆ³“‘ÀEE:×{ö{ÐA ?åju=­Í]ÝcU( :YÈÏ9à¯GÄ1(ƒ¼Òã]iß°SÈÿ$Ißõ±×Úþ>} ñ{ý·kùUé=‡îþa¡hg•Oe®¸GH‰ÌÒ}Ò:îk§çï;÷jmò7U;¢¢‡æàþî§Íx]ÿ‰tpçnÝê—¾¾¹²s‡Ž‰Ðëþ«S1|¦Mÿ›¡¯ ŒiS?<888Ø;ÿv~î™?œø¾HÏt]Êâ.ó¦•EYzÓ—Ä}–.¶»(¿·F1OÙŸkoMuÖ?ª¬e¾³ûkÛZÒ C {& ‹ù¦Ÿ}…¬^[„ŸJI í:ÆöJOp¨ìA9†0Æ;<4݆j*/ª6}ÎÌfßþÙòG£O S݃ÜCc‡_8hi)-ÿËöÍö-µpî§z¾ÂËùÛÂBKʈxe¸/0ôƒ0vé/ïɟ̼ö´!~ 0ÂØ…ùËäö’f“ã}a„±kï.É’µ~ßø?µr€ÁcΤ%É2ÖÞ8aX $€0ÆÎ­YinÕლ¢sHaLKKú$ÃhãúýúÅyaóKaŒ±SÿÚº+_o£Jºô¨‡Mo cÌy(55•|¯×¾©7¶»… Œ1¦e=rôD&÷‡¬J 6hÜ"›ÜŸXnf^ÈÊÊÊÎËÍÍw9‹}|ËùúWªZ),22²f(àvƒ ‚3€ € € A A A‚ @‚ @‚@€@€€ €  A A @‚ @‚ @€@€@€ € € A A A @‚ @‚ @€@€@€ € € A A A‚ @‚ @‚@€@€€ €  A A @‚ @‚ @‚M A A @‚ @‚ @€@€@€ € € A A A‚ @‚ @‚@€@€€ €  A A @‚ @‚ @‚@€@€€ €  A A @‚ @‚ @€@€@2ÍVbÉ<˜î¼IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0neomensural.svg0000644000000000000000000000013213135434035023114 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.266648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0neomensural.svg0000644000175000017500000000104513135434035024765 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.percussion_change.svg0000644000000000000000000000013213135434035023142 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.266648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.percussion_change.svg0000644000175000017500000000105513135434035025014 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/RepeatEndStart.svg0000644000000000000000000000013213135434035021235 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.266648472 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/RepeatEndStart.svg0000644000175000017500000001244113135434035023110 0ustar00jjbenhamjjbenham00000000000000 image/svg+xml denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2reThin.svg0000644000000000000000000000013213135434035022021 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.276648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads.u2reThin.svg0000644000175000017500000000073413135434035023676 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.natural.arrowdown.svg0000644000000000000000000000013213135434035024310 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.276648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.natural.arrowdown.svg0000644000175000017500000000137113135434035026163 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/pedal...svg0000644000000000000000000000013213135434035017571 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.276648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/pedal...svg0000644000175000017500000000067013135434035021445 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/LargeTwo.png0000644000000000000000000000013213135434035020061 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.276648472 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/LargeTwo.png0000644000175000017500000000707013135434035021736 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRXi‡ïT pHYs  šœtIMEÙ *0…×tEXtCommentCreated with The GIMPïd%n ®IDATxÚíÝypåÀñçÍ$” ‚‹d8ŒWÑ I¸%à *(#"*ZêÙRµ2beâS5Ê¥"* €xp”ÄÈ¥j*šãÍõ¾Û?¬ yßÝ}w÷ý%Ï÷˘&û²ÏìÇßnÞ¼—ÏP$©     ¢qqNþc%_~{äÈác¥¥¥µµµø¸øøÖm“’Ú%'wNNíÏÑ6‘Ï™ÇÔ«>ß¹sïGCÎb·óÓúöí“Ä1w¤ôÃMy»êÌnÝ£ÿýÓ[pà]1ö¼³úã Õ[%ÌÌHåà;R˜óú!»·í8&;«5ÇßA–¿RÙ¾[޾qt+1¶,^YëÀî“ÆßÞ߇B¤ µ¯Ïÿܱô›vS[")þÉ"G×ÐæŽYç"aÄ¿øñ¿{:ñO½°°Róücß¹²Ž˜Iõ@Ã*ˆñö=\[IìívÄÃHþì®®¥íCwsÞvª n]B”êÍ„Ø?euKu~ÏÝ™û’é“Òƒ q팥ºytšk 5§0ú )gi rúC×inœ»Û1 ¦AŠ\ÿ¡W)•ˆiÃ\Bì€\Æ„(¥”ò]-ä*&D)¥Ô%íe€¤tĽKˆ XŸ® E\Bl2¿í\­<¢’kþy¤é7(@\o•ùMŸ‰Ñ $*×ÊN¦ ™øšbB\oiÄù ÷Ë1½åœ®ºDã”UÚÉì[õ]ðyK&ÄýÞ2ýÖ‰ÏiçÌnx[†vÑ8eö3¹aç=g)&Äý–˜ÝðY =¢0!å]ÊÌmxÝ =¢0!¯™ôH^¤ñ Ãìq^Ö/Zû™¹íf×ÒÃûkÈàM¦6ë½=/úø·¦6k±í"==òÆ)‹„„!@!@!@!@!@@@@@„„„„„„!@!@!@!@!@@@@@„„„„„!@!@!@!@!@@@@@„„„„„!@!@!@!@!@áB€B€B€B€B€ € € € €     B€B€B€B€B€ € € € €     B€B€B€B€B€ € € € € €     B€B€B€B€B€ € € € €     B€B€B€B€B€ € € € €      B€B€B÷?šz-…„èe^IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.ssolesmes.auct.asc.svg0000644000000000000000000000013213135434035024036 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.283315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.ssolesmes.auct.asc.svg0000644000175000017500000000104013135434035025702 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensuralu24.svg0000644000000000000000000000013213135434035021624 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.283315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensuralu24.svg0000644000175000017500000000142413135434035023476 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.mensural.f_change.svg0000644000000000000000000000013213135434035023022 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.283315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.mensural.f_change.svg0000644000175000017500000000130213135434035024667 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u0miFunk.svg0000644000000000000000000000013213135434035022017 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.293315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u0miFunk.svg0000644000175000017500000000105313135434035023667 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/Speaker_Icon.svg0000644000000000000000000000013213135434035020712 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.293315139 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/Speaker_Icon.svg0000644000175000017500000000601713135434035022567 0ustar00jjbenhamjjbenham00000000000000 image/svg+xml denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1faThin.svg0000644000000000000000000000013213135434035022000 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.293315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1faThin.svg0000644000175000017500000000100613135434035023646 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1mi.svg0000644000000000000000000000013213135434035021172 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.313315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1mi.svg0000644000175000017500000000105113135434035023040 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/comma.svg0000644000000000000000000000013213135434035017444 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.313315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/comma.svg0000644000175000017500000000103513135434035021314 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.c4.svg0000644000000000000000000000013213135434035021566 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.313315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.c4.svg0000644000175000017500000000146313135434035023443 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.natural.arrowboth.svg0000644000000000000000000000013213135434035024275 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.313315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.natural.arrowboth.svg0000644000175000017500000000165613135434035026156 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.F_change.svg0000644000000000000000000000013213135434035021135 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.323315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.F_change.svg0000644000175000017500000000143113135434035023005 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.sM1mensural.svg0000644000000000000000000000013213135434035022530 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.323315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.sM1mensural.svg0000644000175000017500000000131613135434035024402 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensuralu23.svg0000644000000000000000000000013213135434035021623 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.323315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensuralu23.svg0000644000175000017500000000113713135434035023476 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.smedicaea.rvirga.svg0000644000000000000000000000013213135434035023525 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.323315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.smedicaea.rvirga.svg0000644000175000017500000000076213135434035025403 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.slneomensural.svg0000644000000000000000000000013213135434035023210 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.333315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.slneomensural.svg0000644000175000017500000000132413135434035025061 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d0miFunk.svg0000644000000000000000000000013213135434035021776 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.333315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d0miFunk.svg0000644000175000017500000000104713135434035023651 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1ti.svg0000644000000000000000000000013213135434035021203 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.333315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1ti.svg0000644000175000017500000000110313135434035023047 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensurald25.svg0000644000000000000000000000013213135434035021604 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.333315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensurald25.svg0000644000175000017500000000171713135434035023463 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2tiWalker.svg0000644000000000000000000000013213135434035022331 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.343315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2tiWalker.svg0000644000175000017500000000076013135434035024205 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.mensural.f.svg0000644000000000000000000000013213135434035021515 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.343315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.mensural.f.svg0000644000175000017500000000130013135434035023360 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensuralu04.svg0000644000000000000000000000013213135434035021622 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.343315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensuralu04.svg0000644000175000017500000000141213135434035023471 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1doFunk.svg0000644000000000000000000000013213135434035021774 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.343315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1doFunk.svg0000644000175000017500000000101713135434035023644 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1miThin.svg0000644000000000000000000000013213135434035022015 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.356648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1miThin.svg0000644000175000017500000000105413135434035023666 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/arrowheads.close.01.svg0000644000000000000000000000013213135434035022032 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.356648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/arrowheads.close.01.svg0000644000175000017500000000106613135434035023706 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/Glissando.png0000644000000000000000000000013213135434035020260 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.356648472 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/Glissando.png0000644000175000017500000000117613135434035022136 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDROI|m{›sBIT|dˆ5IDATx^íÜÑ’« àegßÿ•­é ³4¢BMˆÿ¹:µbñóO›MÛ¶ýàŸLàW6 £HxŠO—ö±hzB@$OGÃV[¹’'·Ãj«°ð4бèyÀS(†"y <ì0xHž;Œ/¥Ô´ÏßweT±xÏËv­pePQ¶»†ÉSÀ¯¬AÁÿQ¶hy±@ò:áøéH¹ø\¦ŽNÃãëî+$ïNèâû¡;Œü¾Äã}ñûæ_iæŒä)ßcð(aÒÄ™ï#ðF£eÌ¿3ÕÇ9Úè^6y³á(\!ñ¾Gx¡Ê–£Ñ Ž.Õ²a‡¡hî!ËVáÑ5tù/ÕÞ2Íã{Ç-Ýó8ÚìþV‹ä’ ‡“¤¦†Ñ{l¹žçŽ —Âó·LÏãhý­VÒî{‡³êo5<×eëŽ0±Ã¨Eªñ˜ëä5ÞƒÙi®vešSÒKÝ$ÏNYx+¼é«Êªh9±fÉ[ŽMð"À™àE«ö<~s’©¼F~àו¼Hæ2sÌôƒ£ÑÍD€ûJÙr(þyf2Z®Mó‘ÎÉÕ£åf=c²ÚzÐÌx =ñ‚Q[óXrh7ÐþŸsWÙî³@šñwì,‡W•ÑHÒw¨ãTýiNžt꣆t3ÆMÇ‹œ¼CÙò'Ô›œÈXÜfzòøFú<ïI©£Ü–íû¤›?\ð4´\=Mxg€OEëÆ‹Ô«FÝËО7jR«\çÙ³ÕwlÞ#ÿIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.sharp.slashslashslash.stemstem.svg0000644000000000000000000000013213135434035026775 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.356648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.sharp.slashslashslash.stemstem.svg0000644000175000017500000000172313135434035030651 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/m.svg0000644000000000000000000000013213135434035016604 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.366648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/m.svg0000644000175000017500000000176113135434035020462 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.open.svg0000644000000000000000000000013213135434035020777 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.366648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.open.svg0000644000175000017500000000101613135434035022646 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.7.svg0000644000000000000000000000013213135434035017655 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.366648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.7.svg0000644000175000017500000000205413135434035021527 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2reThin.svg0000644000000000000000000000013213135434035022000 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.366648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2reThin.svg0000644000175000017500000000073413135434035023655 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0do.svg0000644000000000000000000000013213135434035021166 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.373315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0do.svg0000644000175000017500000000101013135434035023027 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/Pianississimo.png0000644000000000000000000000013213135434035021167 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.373315139 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/Pianississimo.png0000644000175000017500000000145313135434035023043 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR5Ü@Ç6sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ  +–7ý=tEXtCommentCreated with GIMPW†IDATXÃíXË«0=ŒÞ:Š)Ái ’#M¤§§S-@ I P”€KÀ%ÜYaó ²šÉ‘¼ÀW×Ç÷oá—á ¿Ï(c n·¢(ÂétÂóùìeEQàr¹ Š"ÄqŒûýkm/OÓq#Žc¤iÚïWU…ëõêécÞÂÙƒfP×51Æ@¿cÔ¶-)¥¼ý¡¼ëºIyY–¤µ^ÔÛÃ9ĬQBbŒQ]×Þe8瀴ÖÔu•e鑜Ïg@Y–y2§'¥¤¶m©®kOO)µ™S)õÚ(w`Y–DD$¥ôÑZû‡Þs$Y–yûBÏ«CÙñxÜÌÉ9_6ªë:bŒQ’$ý÷Ò¡ÇPÛ¶}´ÃthÛv¤·‡sˆQ£(ŠÖZH)ûï!´ÖÞwÓ4£:åœÃãÉ8çH’dQoçb£Rö›òvX”aO¦^–e“)îÖápØÌ9¼ïb£˜J‘P™ˆFÝÊå~x±º®==Wü¡ÞÎUF…Þ•ó<Ÿl¯Sõ2Dؽ\ÛÞùڨÐÛC‚®ëFÞÎó|òb¡QI’̦æVÎUFÍu'‰%òPæÒoj0gÌÎUFM͘©Ë2ÆèñxÌ^Œ16š9n?l[9Cü›ëŠÃ7äy!š¦AUU°Ö‚s¥Ô¢žÖZkcPUŒ1àœCJ ÆØ[8W½ýBo‡ÃïêÐ5€WØÃâkM”ÜP|…pà !À9_¥»•su¤Â3|Þ,!¨s…üNÎ)DDDMÓôžªªjô B@)5ªk-žÏ'Œ1°ÖŽž7Œ1h­!¥El+çêH…zn½êVsKJùòU°–su¤>ÿ(>F}ŒúõçŒúIkjÝ\§IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.G_change.svg0000644000000000000000000000013213135434035021136 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.373315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.G_change.svg0000644000175000017500000000243413135434035023012 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.prallprall.svg0000644000000000000000000000013213135434035022203 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.373315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.prallprall.svg0000644000175000017500000000140513135434035024054 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs-C.svg0000644000000000000000000000013213135434035017624 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.383315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs-C.svg0000644000175000017500000000221613135434035021476 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/Fortississimo.png0000644000000000000000000000013213135434035021212 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.383315139 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/Fortississimo.png0000644000175000017500000000164713135434035023073 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR1"öÞ1)sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ )V—KDtEXtCommentCreated with GIMPWIDATXÃíXÑ‘£0 ;×€R‚R‚[p l N P)”@ ¤R”%è¾ìF€!ûs;ÑLfƒOïÉ’“13Ãn_ð ìb¸Ýnp½^!Ë2¸\.P–%LÓ´êó|>áv»Áår,Ëàz½BY–›ïy<ðýý=ó¹ßïÿà“V@øYkÙ®cÇ‘ó<Ï#"[k™ˆ¸(Š…O×u!æ–Ïaã8²µv¸ëºpϯû5¿.?†ˆxGffnš&Ä‘Ö4 #bð1Ƭú᜛1à³g­mÛà#×€›¦Q?T2 Ÿîû>( ö9¢ªªÕàR*²ËŽˆB¼8Óž5¹.ïÅàü:‘ÑZpI±d§ïûhçœZWž˜iપTV½œ-d­۶庮W¥³ûÌÌu]éi µúªëz¶¶ "ÖòÖÏMõAÄðA©ïR”ögk¶Ö"Â4Mðz½ÔûÞq×Á®ˆ(Äy½^‹CD@DáZµ³çùÛò‹M˾×ý–}¥væ-4Ó˜Ëó|³“k¶åsˆ ß!µ­55«q3Kaníd&†aX0aŒY×ç Ö|öØN5š÷‚k>¾ ò=ÉrÒöz¹GkwoÙÁ5kÛvñ¼l¤oË)ÎÜ&S}Œ1a þ)ù%Ëiš¦E=ì†a±×Ÿ©‡# 6å$ç¡T)ixKJñ ¸v9-§8CÖÚ])Å>ι])ÅÌ9çŽ1ÌNòŒÚSöúI< e! €u]3"ÎNOò”¦÷²‘ë±»»® å$ïd)‰RAHMúùFÖ".2*}ü‹e=ø)uícµ8{³Õ*¹GQ(\ùRy(‰÷uÉž<{ǃ›6JÐ2ÎaòÈçƒÈàRÚXóÑ2ê3îÁõ}ä%ÿl8B°1fVÌ€¸ècŸ5IøˆØZ@Iöß1Ž#;çB`cÌîûXkw‹²ªª}"â¢(NKHZöùCùââ÷ø ÀHYs®ÿŽIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.vaticana.fa_change.svg0000644000000000000000000000013213135434035023123 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.383315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.vaticana.fa_change.svg0000644000175000017500000000144013135434035024773 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1miWalker.svg0000644000000000000000000000013213135434035022340 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.383315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1miWalker.svg0000644000175000017500000000105013135434035024205 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.trill.svg0000644000000000000000000000013213135434035021164 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.403315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.trill.svg0000644000175000017500000000207713135434035023043 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/seven.svg0000644000000000000000000000013213135434035017470 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.403315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/seven.svg0000644000175000017500000000152113135434035021340 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/period.svg0000644000000000000000000000013213135434035017632 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.403315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/period.svg0000644000175000017500000000066713135434035021514 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u0faFunk.svg0000644000000000000000000000013213135434035022000 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.403315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u0faFunk.svg0000644000175000017500000000100713135434035023647 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2fa.svg0000644000000000000000000000013213135434035021135 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.409981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2fa.svg0000644000175000017500000000075213135434035023012 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/arrowheads.open.11.svg0000644000000000000000000000013213135434035021667 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.409981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/arrowheads.open.11.svg0000644000175000017500000000115513135434035023542 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/s.svg0000644000000000000000000000013213135434035016612 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.409981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/s.svg0000644000175000017500000000131513135434035020463 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.medicaea.d0.svg0000644000000000000000000000013213135434035022232 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.409981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.medicaea.d0.svg0000644000175000017500000000074613135434035024112 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads_dM2.svg0000644000000000000000000000013213135434035021024 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.419981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads_dM2.svg0000644000175000017500000000210713135434035022675 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/fp.png0000644000000000000000000000013213135434035016742 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.419981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/fp.png0000644000175000017500000000136213135434035020615 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR$Dá¼SsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ  t½_EtEXtCommentCreated with GIMPWMIDATXÃí—Û‘ã E¯·6‚B§@ J‡À„€CÀ!È!H!àr8¡ç B‘ä©ùØ®âÃHÕõëâ33~‘ýÁ/³Ô÷=.— ªªÂétÂù|ÆÇÇÇ1gü†…¸iÀXÁRJ®ëš°Öz·O¼CDL]×B`fæ¶mÀÊapÛ¶ŒbØÿ ­õ¦®ëáYCDßä½Á`¥Ô,lŠÚ·)¥&@ÖÚÑ;ÖZîºîP)àH½,-!?ŸÏ¡óêºEÉZ;øB°Rjh„]@Zk–R΂¥VO+¯¡ôÜ{?Ùô<‡Â;Å\Î"b!;çFïæs)„À]×-Öà. )åÈ97‚Mµ“̹!¹Ô¥»€æÂ†dJ]ú½t 3³snâ+Ùf-{<“½¦i·Û 1ÆÑïÜ´Ö_úÚ-®}ßOöˆh8@J ¥à~¿Ï‚/I)÷‹kY&-;78Ss+;1¯¯Í@¥“%Y0Ƭ³µvµí7¥ìõz!Ƹš†deºr‹1âz½ŽöŒ1BìKYùU[Ó•RB`ïýd°ÎÝ—þé0¥Ôø«¢CDˆ1¢ªªÑ¾ÖÚù(o‰Pš´iyï7i^šÎ96ưÖz"Ä«âšR“wF9äò1¿–®rRû¼“’äõSvÄžîÚ ”  çúµvá*Óúö}(×—“G§üâ¤èZëÙk ±µv1¢›R–Ñè¹ð—ƒricŽ…X)5&¥<ú£vúÿßþ ûÆ@Õ÷bIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.3.svg0000644000000000000000000000013213135434035017651 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.419981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.3.svg0000644000175000017500000000106613135434035021525 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.M1neomensural.svg0000644000000000000000000000013213135434035022235 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.419981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.M1neomensural.svg0000644000175000017500000000072113135434035024106 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.mensural.d0.svg0000644000000000000000000000013213135434035022330 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.429981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.mensural.d0.svg0000644000175000017500000000125313135434035024202 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.percussion.svg0000644000000000000000000000013213135434035021635 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.429981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.percussion.svg0000644000175000017500000000104613135434035023507 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.4mensural.svg0000644000000000000000000000013213135434035021421 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.429981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.4mensural.svg0000644000175000017500000000074213135434035023275 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.hufnagel.fa.svg0000644000000000000000000000013213135434035021621 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.429981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.hufnagel.fa.svg0000644000175000017500000000140313135434035023470 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.g.svg0000644000000000000000000000013213135434035021506 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.449981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.g.svg0000644000175000017500000000252013135434035023356 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/LargeOne.png0000644000000000000000000000013213135434035020031 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.449981805 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/LargeOne.png0000644000175000017500000000451013135434035021702 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRXi‡ïT pHYs  šœtIMEÙ .FptEXtCommentCreated with The GIMPïd%n¾IDATxÚíÝ}l”wÀñçz½»z£CY|!`æË\ g¢Û¢f‹Ó˜,ó%Aˆÿè̲-f‹s‹¨i¢3¾'êyÙXé à(pàF!D$ c«¬ã%FF6fì˵×öÎ?ê¤îz}îyžvìó iÊÝó;~¹O¿ç9z…T9ÐtªÁSD@€sCÿF0@º¿ûžÅGŒ+5e¯Ô‹Oþngù ·P˜ ÇYuvô³ô/îÂ0Å ›¿{Ìoïÿ ‡©ùûеçÆÝ0ÿeÿ¯1á?¯§í‘Þ6Ô÷¯x¼ï⛯Ä0% ¯¬[qì’wX!S2¼}ÅÖá ÷I¤kåê3•ï’,ÈÚW=WõçAJ{V=Q˜à ‰t¯ùÃɉ²e%Ò³qõ35h…$RúÓêý5 $v׬=]ûÑ­bymÚý“`…Œ)ê¿\ܶ¦chrC†|9¦Rî\Ûöú¤Gµòˆ¤ë±µÝaÆ9…Är¦íу!‡:…DÒ³ùѧK¡G[!Ñ‚w<¶¥Pωdä™õë}kÕ, ”¬ßp¦þ)X!‘€”·µˆd @"9ÚÖÖÕ€Ô òB{ÛѧàRÈóO´Güv\ áA޶·?ù€„)Ú´ñÅ8¦$ÈȾM›NÅ4 “)ìÚòdzñMÈØ&ü~È«[vôÇ:…bC+¤|¬ãÉçJ1Ï ™Gm ƒ{¶nMâçìXµ€¼´cûî¾dfp„ @zöî|êÉÍH5âþ]»ö$: •@ öîÝWH|@*€¸ahJf‡0¶óoÁ¬Ç#÷‘…VHÄ u¼xÇ_ùËñ§C>³-. Òö!æÿúă³‚টٲ" ù•zÍš®»šƒ ‚¥­VH” ¡vœoþÛ²7öºì§¬(ABüÓÍ»;¿0湋€DzRŸ¤Hêöƒ;?{K¸ ­™*¼0¼êÜdÆ}õ;¸ð¶yVH”+$xwí£šï}iÕEÁ+$Ò² Ö1­wßûöè^â¹ÊªòþÚF¼ó¾oæ£üZ·B*|°–ã|ûk_A6Y!‘‚ÔpÕzíƒ_ªò=߬RcßäðÞ Þèó‰‡nKU»(ŒHvB…«¬àºªG~vϳŸKÕüX57ƒAÅ'ñ“UÒm¿15‰ÇRÿ9$¸±ÒA™å\]Ëö$ZE³/ùZ}Æ÷½+¾ ©¼Í¤o¾Ä³¿wê§1zÍ *ïûK.ºûª‡O~ÿm±NHå-+XÒ0þ}£ï{`y.î ©²Bæ\?öw‹áë±{©z©zÇùOoØvèËé&ÐÄ ÈW®Kþ¼÷ÖT"°BªÌûLAÃWw\ŸÔ€T}u½4²ßèZ¿(¹ زª‚Ü1÷þ—»0É äT¾ì ‚üɤŸ +¤ê Iþ Ö ©’xVÈ4É2˜^ ¶,+ @€\& þa @€ä2id @€\ i@€yó€øO ±e½‰@R lY@¬ @lYV @€ˆlY@ˆ€ " @ˆ€ " @ˆ€ " @ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@€x €" @ˆ€È[¤fЃØ@ú *0ˆ äµ0ƒÎ1ˆ ¤;Ì  b9fÐ1±<fP'ƒq¥Ê‘=TanOˆQóN§)ijB:ÂxÿÚ!òÃáÆýB<[ÖÖχø×Åbéùð©#?Öé,ý–UZÖ#8ø†ÈAJ÷l ?øÇ¿â1HÿòßÔ3üž”HDy9¼ìHpËÊy,¢Z!ÿ¼û£õzÛ¯þQ/Œ(VHyßÊuÅHfÒzçòñ¨älçÎm'"œÌµ·ÞtÝ, “\žþ¾Þ×_=Ó}üÈé&´ðšóçιòŠ–üŒ ã®dûûûÎwþó‘ĦÖÒ’Ï_ðkfú­ ò­ŸOÃé.]ç*K@€ˆ€ D@€hzÔXçøt6›Íf3ÙL&Ó˜iL§Óù|>ß2sæŒæ¦¦¦l.“illH7©T”Ëå‘Rixx¤8Tè/ô÷õõööö Þ4800PR¡L.—Ëåšrÿ«)—Ëå²¹ÑÙÜè¯ìdVXª&ÿÒà@¡P(Œ~×@!uÙƒDøfk9‡ " @ˆ€ " @ˆ€ " @ˆ€ " @ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@ˆ€ D@€ˆ€ D@€ˆ€ D@€ˆ€ D@€ˆ€ D@€ˆ€ D@€ˆ€ D@€ˆ€ D@€ˆ€ D@€ˆ€ D@€O" @ˆ€" @ˆ€" @ˆ€" @ˆ€" @ˆ€" @ˆ€" @ˆ€" @ˆ€" @ˆ€" @ˆ€ " @ˆ€ " @ˆ€ " @4Éþ ç铜*þÌÅIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0sol.svg0000644000000000000000000000013213135434035021361 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.449981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0sol.svg0000644000175000017500000000134713135434035023237 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/EndBeam.png0000644000000000000000000000013213135434035017630 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.459981805 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/EndBeam.png0000644000175000017500000000041713135434035021503 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR.:ÏþkºsBIT|dˆÆIDAThCíÖÑ ƒ0Ñ\Dÿ-;ÐÁàŒ!¿—Åz>g­õzâz?qÓ×žÛø¯O.ñÄ¡@£¡´Xâ%,JBi±9›þrË:/w×»·W£²M·ù`â›pÛß~$wÞ<3Ú Q¹#odóøŒ ÑŽF…JY¹Ä-IÚÓœJY¹fÜ’¤=‰S)+—¸%I{§RV.qK’ö$N¥¬\â–$íIœJY¹Ä-IÚ“8•²r‰[’´'q*eå·$iOâTÊÊ%nIÒž߉uõu¶üIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.inclinatum.svg0000644000000000000000000000013213135434035024434 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.459981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.inclinatum.svg0000644000175000017500000000101513135434035026302 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1faWalker.svg0000644000000000000000000000013213135434035022302 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.459981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1faWalker.svg0000644000175000017500000000101413135434035024147 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2fa.svg0000644000000000000000000000013213135434035021156 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.459981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u2fa.svg0000644000175000017500000000075013135434035023031 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests_M1neomensural.svg0000644000000000000000000000013213135434035022316 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.459981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests_M1neomensural.svg0000644000175000017500000000074713135434035024177 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.staccato.svg0000644000000000000000000000013213135434035021637 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.466648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.staccato.svg0000644000175000017500000000070213135434035023507 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0laThin.svg0000644000000000000000000000013213135434035022003 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.466648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0laThin.svg0000644000175000017500000000077113135434035023661 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/DoubleBarline.png0000644000000000000000000000013213135434035021044 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.466648472 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/DoubleBarline.png0000644000175000017500000000033613135434035022717 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR6Ô:ùÄsBIT|dˆ•IDATXGí”Á €0 C­ÿÿÏs»BÉh•äyl)Á—,1Æ8œßé[Z~NüÿHc2³¾ ;Ò¨<üˆ¸iÌ»EçÈf*iö?DPÙÑÚ´…MÑ4:Y«d3…””*:­H[ØÔ‘)MCÓ¨@¦;{JL}x3´#¥ihšr`í)E°ìÑîÀŽ”¦ÙYRÞÛ=D°ìÑîà¦s7K°QaïIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1reFunk.svg0000644000000000000000000000013213135434035022000 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.466648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1reFunk.svg0000644000175000017500000000113013135434035023644 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.hufnagel.d0.svg0000644000000000000000000000013213135434035022273 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.466648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.hufnagel.d0.svg0000644000175000017500000000117013135434035024143 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.mensural98.svg0000644000000000000000000000013213135434035022017 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.476648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.mensural98.svg0000644000175000017500000000144113135434035023670 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.upprall.svg0000644000000000000000000000013213135434035021515 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.476648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.upprall.svg0000644000175000017500000000147713135434035023377 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.dpedalheel.svg0000644000000000000000000000013213135434035022125 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.476648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.dpedalheel.svg0000644000175000017500000000105013135434035023772 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.mensural24.svg0000644000000000000000000000013213135434035022004 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.476648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.mensural24.svg0000644000175000017500000000142413135434035023656 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/RepeatClose.png0000644000000000000000000000013213135434035020543 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.496648472 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/RepeatClose.png0000644000175000017500000000055213135434035022416 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR*7z‹ØsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÚ7.îŠêIDAThÞí™Áƒ0 Cc´ÿÿeï2!6uPhܵÃ=!„¢‡«Ø €d̰–˜dÔ ½("‚V4SÑÌd°#‰ÒýÒÚ>ëf2¨A ª… 43™¶Ì®“©(”ýú²ŠdÂ+mbôd’r-y¾£Ol?ºtýѶÀ@¦hB7óJ³5+ZÓ*R¢è°©"”­ÑkfB«yfú˜™v=¶†¡§=±p­óÑÊd:ÓL?M&$8‚¼™$>›L²0P%³¡§9f$Dou—•”ÏL¥dò×<ƒÔ ÿ êÿLCÏLVÔ w}.cTÑÎãIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2re.svg0000644000000000000000000000013213135434035021155 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.496648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2re.svg0000644000175000017500000000073013135434035023026 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests_M1neomensural.png0000644000000000000000000000013213135434035022303 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.496648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests_M1neomensural.png0000644000175000017500000000027313135434035024156 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR —/3sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛkÉ\ tEXtCommentCreated with GIMPWIDAT×cd``øÏ€01àÃEÿÈö;…ÂIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.c1.svg0000644000000000000000000000013213135434035021563 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.496648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.c1.svg0000644000175000017500000000146013135434035023435 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2triangle.svg0000644000000000000000000000013213135434035022375 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.506648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads.u2triangle.svg0000644000175000017500000000114613135434035024250 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.sM1double.svg0000644000000000000000000000013213135434035022154 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.506648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.sM1double.svg0000644000175000017500000000162313135434035024027 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads_sM2neomensural.svg0000644000000000000000000000013213135434035023314 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.506648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads_sM2neomensural.svg0000644000175000017500000000140513135434035025165 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/p.svg0000644000000000000000000000013213135434035016607 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.506648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/p.svg0000644000175000017500000000162613135434035020465 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.medicaea.do.svg0000644000000000000000000000013213135434035021574 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.513315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.medicaea.do.svg0000644000175000017500000000112513135434035023444 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1triangle.svg0000644000000000000000000000013213135434035022374 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.513315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1triangle.svg0000644000175000017500000000126213135434035024246 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensurald13.svg0000644000000000000000000000013213135434035021601 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.513315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensurald13.svg0000644000175000017500000000114613135434035023454 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensurald04.svg0000644000000000000000000000013213135434035021601 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.516648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensurald04.svg0000644000175000017500000000142513135434035023454 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/dots.dotvaticana.svg0000644000000000000000000000013213135434035021615 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.523315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/dots.dotvaticana.svg0000644000175000017500000000070013135434035023463 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.0mensural.svg0000644000000000000000000000013213135434035021415 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.523315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.0mensural.svg0000644000175000017500000000062413135434035023270 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensuralu05.svg0000644000000000000000000000013213135434035021623 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.523315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensuralu05.svg0000644000175000017500000000167713135434035023507 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1.svg0000644000000000000000000000013213135434035020644 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.523315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1.svg0000644000175000017500000000134413135434035022517 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/RepeatStart.svg0000644000000000000000000000013213135434035020606 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.523315139 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/RepeatStart.svg0000644000175000017500000000764313135434035022471 0ustar00jjbenhamjjbenham00000000000000 image/svg+xml denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.dsemicirculus.svg0000644000000000000000000000013213135434035022711 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.543315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.dsemicirculus.svg0000644000175000017500000000072313135434035024564 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2faThin.svg0000644000000000000000000000013213135434035022001 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.543315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u2faThin.svg0000644000175000017500000000075413135434035023660 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.C.svg0000644000000000000000000000013213135434035017625 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.543315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.C.svg0000644000175000017500000000220413135434035021474 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/pedal.P.svg0000644000000000000000000000013213135434035017633 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.553315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/pedal.P.svg0000644000175000017500000000201313135434035021500 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0tiThin.svg0000644000000000000000000000013213135434035022023 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.553315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0tiThin.svg0000644000175000017500000000111113135434035023666 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.mensural68.svg0000644000000000000000000000013213135434035022014 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.553315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.mensural68.svg0000644000175000017500000000152313135434035023666 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.mordent.svg0000644000000000000000000000013213135434035021506 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.559981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.mordent.svg0000644000175000017500000000140213135434035023354 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2doFunk.svg0000644000000000000000000000013213135434035021775 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.559981806 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2doFunk.svg0000644000175000017500000000073413135434035023652 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/NthTimeBar.png0000644000000000000000000000013213135434035020332 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.559981806 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/NthTimeBar.png0000644000175000017500000000026013135434035022201 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR"*Ö‰¯bKGDÿÿÿ ½§“ pHYs  šœtIMEÞ  !9ˆ¡5=IDATXÃíÐ1 Á(þÿËÚÛÎt×-wµmÏW!½Ê##ñÖ"Dˆ!B„©pjío.»íMOIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.stopped.svg0000644000000000000000000000013213135434035021514 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.559981806 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.stopped.svg0000644000175000017500000000105513135434035023366 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1neomensural.svg0000644000000000000000000000013213135434035023115 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.559981806 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1neomensural.svg0000644000175000017500000000104513135434035024766 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accordion.bayanbass.svg0000644000000000000000000000013213135434035022253 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.569981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accordion.bayanbass.svg0000644000175000017500000000106313135434035024124 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.c5.svg0000644000000000000000000000013213135434035021567 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.569981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.c5.svg0000644000175000017500000000146113135434035023442 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.varsegno.svg0000644000000000000000000000013213135434035021662 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.569981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.varsegno.svg0000644000175000017500000000321113135434035023530 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1miMirror.svg0000644000000000000000000000013213135434035022365 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.589981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1miMirror.svg0000644000175000017500000000105313135434035024235 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.d6.svg0000644000000000000000000000013213135434035017754 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.589981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.d6.svg0000644000175000017500000000152313135434035021626 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.neomensural44.svg0000644000000000000000000000013213135434035022510 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.589981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.neomensural44.svg0000644000175000017500000000123613135434035024363 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/plus.svg0000644000000000000000000000013213135434035017333 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.589981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/plus.svg0000644000175000017500000000104313135434035021202 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.4.svg0000644000000000000000000000013213135434035017652 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.599981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.4.svg0000644000175000017500000000126413135434035021526 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.flat.svg0000644000000000000000000000013213135434035021547 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.599981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.flat.svg0000644000175000017500000000121313135434035023415 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.2mensural.svg0000644000000000000000000000013213135434035021417 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.599981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.2mensural.svg0000644000175000017500000000066413135434035023276 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u0faThin.svg0000644000000000000000000000013213135434035021777 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.599981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u0faThin.svg0000644000175000017500000000100613135434035023645 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.plica.svg0000644000000000000000000000013213135434035023361 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.599981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.plica.svg0000644000175000017500000000077213135434035025240 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2xcircle.svg0000644000000000000000000000013213135434035022217 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.609981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.s2xcircle.svg0000644000175000017500000000124413135434035024071 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/DrumClef.png0000644000000000000000000000013213135434035020036 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.609981805 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/DrumClef.png0000644000175000017500000000032713135434035021711 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR -Ïäi*bKGDÿÿÿ ½§“ pHYs  šœtIMEá%!Ö¼ÐdIDATXÃíØA À DQéý¯<Ý·¥ÄUý®Gxjˆ"IVç8Vó @€Úg%<îì$ìf<‚Ù5lM¬ä+™9;ðõ8}[É=_ÉX„Ø í„áH~Ñ à÷€ € iO³g¿IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.1neomensural.svg0000644000000000000000000000013213135434035022120 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.609981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.1neomensural.svg0000644000175000017500000000072013135434035023770 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.smedicaea.inclinatum.svg0000644000000000000000000000013213135434035024376 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.609981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.smedicaea.inclinatum.svg0000644000175000017500000000101513135434035026244 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/LargeSeven.png0000644000000000000000000000013213135434035020370 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.619981805 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/LargeSeven.png0000644000175000017500000000711513135434035022245 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRXi‡ïT pHYs  šœtIMEÙ .ž‹:^Îûz8¾Ÿ@’)7S€$S~Óñ=Ú=fX€\Ô¯ ¯ËçdtŠøý~‡îÛû7Œ¸Êƒ fû²®ûùðž7ñËçCy$Þ~Š_ð÷XËO¿vÏä»\)÷“17ÿ¨óôiʳ ¿k!÷EâÆOyÕù€üoCÄ.fõ{ÆO±¦+ï‚´¶ŸR$u-'gR; {CøÒ}ÄÈyÙB—rhññ‰x¤ý-«‡Ô¥Ì5þ|ž°§ b¤§Ð•T®2>þÐ…€¸Ñx™á÷ Uh¦äŒt—¹×7 + n€Ä4/Æ+HÒ€,ßm|üþîiqäè“ÆÇý³ 939Y—ñÄ1ãã£{âFAv.7>î+W€¸2µÕøxI@Üysf`ŽÄ…×…-eš}q£!+?Ö T(@ZäAêçinˆ ùõ b$ý\§¯ úwš‡Ò¤‡ãoÑ™Ó ÌU€´qü޵ñ5ÍÀëqD³Ù])5׈ /~¤p‹Äè1ÄÙ_þ+íoVÍñbô:Äá†<}P3Pt»Dþ–µ‘n¤< #³ï˘}R3лDbr±£_¨¾¢™ÄÄÑÇô¸ö)o·± CGB^ý@ûê=äY³?ƒê•Ãgüë ¡ÎýÒ'úì׌äî‹zäì{µàG -Öy¨2ïz´kˆ\æë>.g_–wAÜ{º_¡ý€¾)öp¯!Ûúë~匚s ‘N¼Tû•0ÉË®5dͺ‘ÈÞ.ІH'¦[Ôƒžöp ä¹*íóðéžöpé–õy^½nhü*ECÄó˜Ö#m–D<Ÿ¬ÐÝïqWnY·½¡ªìKCÄó†Þãv¯{¸Ñ–âÚ±R4D:+ôÃ=ïáBC¾Ì;ª{ç:EC¤3_ïq ò ©*lÖŽ­¿ñ†L×{xu÷¨« o¯Ñyu÷¨›·¬ÖÛ´c…ÿNÃCº!/è=¼»{Ôņ4|¦ë½3‡tCê=<¼{Ô½†Ôô9©ëVBCº!³Nš<ÆC¼!ï›ìKÍÝ›†pCôïïTJ•á!Þ—ÇèÇ:×da!Üãfß-Ÿ‚‡8ȳµú±Œ)HHƒÔ-4œt.Ò åÇõcá2 ¤A¶¾h2èñÝ£n<ËŠß°Q?¨¾ᆼfâ¡Æâ!ÝS…{L¾&væã Üe&ªé†Îo0õüîQù†Ì3ó`÷¨xC¶_Ñf2ÊîQé†è>ÌètnÆCdÝ[f£s0¾e5ï4ú.›±„òG3U‡pC¾È;f2Ú  yò˜é# ù´¨Åd”ݣ⠙fæÁîQñ†lf6Úk»eÒjþ­@vJƒ¬ª4õðÏu ¤Áü#@¦‡YY‡ÍFÏå—Ù»Ät˜Ý£ÒϲJV›²{Tº!›L=Ø=*ݶÁ[̆;Õ°[Q¶!/™z°{Tº!MufÃá}ìV”mÈ"SvJ7¤¶à„Ùp ª;k/ÚrSu² Ù|•ù—ÁŽ–^²!ñR‹—ŒxÈ6ä¯w›³{TääeûLǶ–…½e-5÷`sœpCå7šŽßü&ë.Ú¹$™RÙ¯ÍtœÝ£² ‰—š{°{T¸!³øàmvÊ6$6Íb»GeA–ï6/Á¢KÞ²Žæ3ŸðÒ½,ºdCž°ðèu7k. ²c¹ÅvÊÞ²~²Î|¼k5»%ò¦…»GeÒråÇæÎßÇnEɆ¬´ðPâ!Ùúü#æÒœÃŠ 6ä) õ ’ ©.Œ™OðWõ`Á2ÃÂCÄC²!¯·šñáU¬·HÛ ,f ÝÄr Þ²^´òP¥¬¶`C¾*8h1£G•Ÿå–kÈo­<Ô<²ÿÒ“32j³Ym¹†Ì¶òPãðlȇ?²œ²‹ýÕr ‰[?ú1‚ ¯~`9åQ–Zî–u¢Ï~«)—~ÂOÆ’kÈbKõr 9˜ßd5%ã?üع†TXz¨qxÈ5d[ëSìèÃJK5$^jí1 9µÿ°ž3™u»e*ª¶œsñ¶+Š5ä÷Öj"b ù<¯ÞrNè@.ë,ÕǬ=ÔH<ÄòIq«õ¤MCYf©†LµáÑw«,²þ “&ñžB©[VKñëIu™¬²PCVØðPcðjÈ—yGmÌúW1‹,Ôùv<®ÆC ¤ê9;³~ÉKݲîXccRçº(k,Ó·íx¨ûñjHëÀmv¦}\ÈË4ä[×â!ÒXakéR ?³3+ç.X¤æY[ÓÆFX`™§lM›ÀúÊ<ËzßÞw8xS¡PCÚl¾[‚5äå1¶¦e×ñ“MDr|–½y÷â!òl­½y°º"·¬ºüã¶æõßÊêŠ4¤Üž‡â“ne²u½ÿ"Z×™ÕhH¼Ì¦àHçÖÕùÇO‹Zìžó¶u¬«ó ™fÛCeYoȆa¶O™õ[ÞoHk™ýS–àá<ȪJû§¼Uuü–ÕØö»ïáwÞoÈûj4Ž7doŸ˜ý3n/bUnÈÌ<úáá8È¦Õ œƒvü–Õ6xKç;ЕEu¸!/%à¡®ÃÃi¦Ù‰œï–ÔiEu œ.0’%uø1¤¶àD§»u=KêpCÊñP%¬¨Ã ٜЧsññÃÎ6$žØ§AÞ„‡Ã kßKèl£XP‡oYU…͉è:u¶!y$r²kñpüYVEN'Áz:ÿ:dé쬯“•™•™™™‘ ù|ͧšš¾j¨¯ohhhhljio denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.d5.svg0000644000000000000000000000013213135434035017753 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.619981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.d5.svg0000644000175000017500000000135513135434035021630 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.dportato.svg0000644000000000000000000000013213135434035021672 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.636648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.dportato.svg0000644000175000017500000000102313135434035023537 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/EncircleChar0000644000000000000000000000013213135434035020074 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.636648472 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/EncircleChar0000644000175000017500000000044413135434035021747 0ustar00jjbenhamjjbenham00000000000000€à?ppàÀ À € € ÀÀ8àppà?€denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/Forte.png0000644000000000000000000000013213135434035017414 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.636648472 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/Forte.png0000644000175000017500000000050013135434035021260 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR!i”¤²sBIT|dˆ÷IDATXGÅ–Áà C—©ÿÿˬ9Tʘ 8c§Í¢øÅ­ÒZ{þ¼O¨ÿU!"?ñÞ‰‹ç%Ì:¹5ö@hu̼T§@ oj³ ÑHÛ†@›gRØ®c–‚…¥oÇÌØ&32¶ëJêx ¢À¥Ñ$Òu̦Œÿ­tsF­c%…å+=phj¤Q“@±ZÅr‘é2kÒI°Ï-‰*h™èÑZ÷³Ý›ÖÓ‘™§Á3Ñ<{º·yT‡ч)¨WBÍúX áþ‹ö¦6&@8‰J€aÖXSaOÿµÿ½¹ý}ä{è`V“}ߌb!6‚ßIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.lineprall.svg0000644000000000000000000000013213135434035022020 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.636648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.lineprall.svg0000644000175000017500000000143413135434035023673 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.f.svg0000644000000000000000000000013213135434035021505 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.649981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.f.svg0000644000175000017500000000211113135434035023351 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1slash.svg0000644000000000000000000000013213135434035021677 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.649981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1slash.svg0000644000175000017500000000102413135434035023545 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.sM2neomensural.svg0000644000000000000000000000013213135434035023233 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.649981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.sM2neomensural.svg0000644000175000017500000000136113135434035025105 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.dshortfermata.svg0000644000000000000000000000013213135434035022701 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.649981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.dshortfermata.svg0000644000175000017500000000117013135434035024551 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2miFunk.svg0000644000000000000000000000013213135434035022017 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.663315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2miFunk.svg0000644000175000017500000000101213135434035023662 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0doThin.svg0000644000000000000000000000013213135434035022011 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.663315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0doThin.svg0000644000175000017500000000101513135434035023657 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d0faFunk.svg0000644000000000000000000000013213135434035021757 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.663315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/noteheads.d0faFunk.svg0000644000175000017500000000101213135434035023622 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.trilelement.svg0000644000000000000000000000013213135434035022362 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.663315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.trilelement.svg0000644000175000017500000000076413135434035024242 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.varcoda.svg0000644000000000000000000000013213135434035021455 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.679981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.varcoda.svg0000644000175000017500000000133313135434035023326 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2re.svg0000644000000000000000000000013213135434035021176 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.679981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads.u2re.svg0000644000175000017500000000073013135434035023047 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.upes.svg0000644000000000000000000000013213135434035023245 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.679981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.upes.svg0000644000175000017500000000077213135434035025124 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/arrowheads.close.1M1.svg0000644000000000000000000000013213135434035022150 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.679981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/arrowheads.close.1M1.svg0000644000175000017500000000107013135434035024017 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1laThin.svg0000644000000000000000000000013213135434035022004 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.679981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1laThin.svg0000644000175000017500000000077113135434035023662 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/LargeFour.png0000644000000000000000000000013213135434035020223 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.706648473 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/LargeFour.png0000644000175000017500000000661213135434035022101 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRXi‡ïT pHYs  šœtIMEÙ #WÚ_ñtEXtCommentCreated with The GIMPïd%n IDATxÚíÝ}pÓõÀñoš4 H[6•­ò(ìÆdn;eÌÛpSw:nÀæ?¸¡ X-ò0Žåxp­tò »CwÇ&rxŠsʰpIdz0ÜJ)â°kØ´´Mö‡nÀý>”üžúýIÞïí¶Û×$Í~¯|~¿_Ò4ñ¥y©6    HvðØýIUÅ¢õëý€x¡†±hå”RkÎ^Ÿ7^ËJÆ¢SŸý¯î‡oD_Éݱh¬öŠ¥é¿DO§¢±è¾ÃrðƒbŽ!íÝÅ}ÑXôôUþÙn@Úµ3±XtwSs–Õ^µŒÆ¢Ç®u©\@Ú£úÊhìo‰L.É„¸þ„ïÑX´*ã‹3!nEc±OL]… qs8îÿ«éëdË‹+Í{dñ„¸ÿÄðøÀ æ¯T× q©ôÃ<²xB\YµÕʵ²÷âö.ëÄÀ¸…k›˜—vXÄ/¼øŽÄC»¬“,]¯èâÎËšGŸd¹ òû¿X¼"ÇW:5Eâ!ô¸@¼òÒŸ 9Sjýº!@œoâ9ë×å,ËùÖo°qevYŽW?Qâ%ÒZ@¼²å |2^â%_Ÿ²w}N{­b¹bB<’°ý÷6Lˆ£=yD1!ÙS¦ñH˸”a­»,} Ïï3®­DH͓ƵG‡¢ $=!iX»éiŽ!Ú@^Þ÷SÞ™Ó^] µÂ¯ÑÁóm ¥g K‘¥<1ÔòÖZãÚ¼"@Läè;ãï8´7 ”ò™»¡Ó71!N4Gxèr+4ÇY–#펿¸ÃÊ-±Ër¢–oì7¬u©*øôǘ»©æb¿eFõt¥;`Bìwª¿ñ ‡T~öÙpæ&$œPLˆí&=|åÖ>«/¨±Ýë¯ׯ~ÓÚmeñ1ݱ]V|€ñ} ù‡ÿ1·Ëêy’ ±Û\á}& ,ÞX ±Û¾!Æ_~uÏ¥“%s2àb¯Öñ)á4ØòÉ+u»-ße\ûÙw,ß\{}4˸Ylýö˜›• ŸN6§‡õÛ눭Þ^g\ëcãÚØeÙ«i’°¸ÌÎn‡]–­W×~r·Dȱ…Ƶ°½w“b§’Fáˆ^ˆ.›Œk½§Ø»Mβ¬—ø•°XDÈ"á} #ï¶y£ì²,WõŒq-ï9»wŠ ±ZzR³ãGt@lôê;?GÄÈ…'\8¢s ±qDÿи6j¸bB4yÖ¸)S€è)½h\›Û] on6®õ}܉;ÄBMÒ¶/wäxÌ„XéyáU÷‘ßW€h9½Àçè€X™.|Oˬ"gîÇómþšð–'¢ ¤u²°¸Ä©7'0!¦[ý¾qíÞû š@Î϶b™DÈü×ë ˆYz÷{õ­Æ_ƒtc šþ¿¯Û)æ>MÍæ]–¹×²šú7.~mϵUͽ–u¦;’Y傇Zäø† ɰ³Å—EÞY‘ÁÃßÜ„ÔweB2jôå }šÇ6{'¤¦¿ðä‡[2ú1¦îÔù˜LšÙ,Mž­f'Hå«ÂâÈÛÜ[vY™<'ün…ày¨Ÿ ›8Á·EgÐÁC=ÔO1!z&$5ø€q±CõÍnlâF¾®âÚ­<Ô„›5möNˆø¢I^M¦¿I77!YüÑï?W ξ³cˆ™ i(Þ«˜´‹;›¸ÅÏ„\£2ÁCM=R[7.¸´‰S>&¤í jvD1!z&äDoáU¬¢Ã!·6qZ1!m6_zUq^6˜«Þ ©îßj\ìwÐÌ“&ÄÉ ™×*MM€G³¦ 94H¸Ìàݦ^ß`Bœ§¤í³(‡³¦ Ù÷uaqè{æóLˆs2WZ\ä㱬iB*¿-,Þû†«OõÒ€\½áÂç\ª½ƒÑ´ËzOò=X‘¦ ¹k›€øéÏ`Bš ÁCý¼/d]ò½­Æµ`µùÅbBœ™‚‡z´ˆÇ±® ‘N±"5þzƒ qdB¢Ò)ÖãÝyëš¼m\Ë?–¯˜=R)x¨ù<ŠuMÈ=o×¾x$O1!z&d§à¡ææñ Ö5!÷ ߿֫ÊÚg‰3!ö'ä€à¡fy ëù°Ök [LÈ‘W„Å™Øbº@žI×¾ôLÈé5ÂâTÞ§ ä9áÍŠÝÆ±½tÔ¯K"l/] KƵÈD6—.†¥Â⸮l.] +„O™ñ—²µt\\",Žæ…Ú@Ö~$,NacµGÒ‹‹éA‡Œ‹C+lýS—æÅÅ+Û"x(Ž ú&DzsÜ—«ýLˆ¦ Ù-x¨I~¼º@ ‹ŒeSé9¶^¸ØÞÚ  ¤LxÝ]=Æ–ÒuP¯/^ƶÍîá nuBV%8çõÒ„4÷ž¥Wù™M²^zÕ¤„s^]’þ–ð}?´ýFLˆÅ ‰Iß2¾#\] ÒëîÉl&] '7y°›IH¹ô¹?SÙJºêñžÂ¯nïyÓ‰ÃAÝÊ„¼,}aËLµº&$5 Êx;·+&DÓ„¼+x¨9loe b;B€BAzñé–Þɹ• á)öY€ €e¾ Ï[ ŒˆgòµÏûù *“B€ € € € €     iI™»8orp;“ÆÕ ˆ·@š$»@Κ»ø9@\®ÖÕ‹bºñÈqs?ˆËýÓÜÅârU®^üºª]þ¡9?aêò]ë|Lˆ›0ç¡Îfñ>«]@v¸~@LµÉìÞàâêóôÂV“×È« 3!îµÞ¬‡JlR€¸Vúó×Yˆ{mßüu¶ĵ™eåZsq«Í–Îa7nÏR×ϲβö½÷ç1!nì°J,~'gõ4vYn´ä%«×|a»,ç{åAë·ïÿã(&Äá^´á¡ZºGkœôK[ó—ž0ö»,窘tÐöm?û€ qäìªrÄ0ûªfİ­Lˆíª7­ÝãØõýãÛý€X™ŠÆxCCí¿ŽïßëôÛF: ¹í–¢…Ý€\¥T2Çã ñøåÿrûÎv-,(,(,,(,(ìâäòç{¥ºïøâ©Ô @Ò™;/hçæ†B¡P(ìÐ!àD:uì‰Dò¹¹¹¡`0øsü9>åS*ÕÚrñbScS²1™L6&“ÉD2™L$“Ÿþg ™ ç†sÃápøÒæþï_¹ÁŒíê÷Ûz?\s2™¸âß—þûzñ¥ÙKp !@!@!@!@!@@@@@„„„„„!@!@!@!@!@@@@@„„„„„!@!@!@!@!@aB€B€B€B€B€ € € € €     B€B€B€B€B€ € € € €     B€B€B€B€B€ € € € € €     B€B€B€B€B€ € € € €     B€B€B€B€B€ € € € €      B€B€B€B€B€ € € € €     B€B€B€B€B€ € € €›ýʶ¢F]^÷IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.M2neomensural.svg0000644000000000000000000000013213135434035022236 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.706648473 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.M2neomensural.svg0000644000175000017500000000072413135434035024112 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads_sM1neomensural.svg0000644000000000000000000000013213135434035023313 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.706648473 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads_sM1neomensural.svg0000644000175000017500000000134713135434035025171 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.sM1.svg0000644000000000000000000000013213135434035020761 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.716648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.sM1.svg0000644000175000017500000000132613135434035022634 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.medicaeaM1.svg0000644000000000000000000000013213135434035022547 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.716648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.medicaeaM1.svg0000644000175000017500000000116513135434035024423 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.vaticana0.svg0000644000000000000000000000013213135434035022467 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.716648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.vaticana0.svg0000644000175000017500000000110613135434035024336 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.hufnagel.fa_change.svg0000644000000000000000000000013213135434035023126 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.716648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.hufnagel.fa_change.svg0000644000175000017500000000131013135434035024772 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.dlongfermata.svg0000644000000000000000000000013213135434035022501 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.726648473 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.dlongfermata.svg0000644000175000017500000000110613135434035024350 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.segno.svg0000644000000000000000000000013213135434035021151 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.726648473 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.segno.svg0000644000175000017500000000167713135434035023035 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2tiFunk.svg0000644000000000000000000000013213135434035022030 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.726648473 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads.u2tiFunk.svg0000644000175000017500000000101713135434035023700 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.mensural.u1.svg0000644000000000000000000000013213135434035022352 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.726648473 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.mensural.u1.svg0000644000175000017500000000125413135434035024225 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.mirroredflat.backslash.svg0000644000000000000000000000013213135434035025245 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.733315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.mirroredflat.backslash.svg0000644000175000017500000000135213135434035027117 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1tiFunk.svg0000644000000000000000000000013213135434035022027 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.733315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1tiFunk.svg0000644000175000017500000000110313135434035023673 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.mensural.c.svg0000644000000000000000000000013213135434035021512 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.733315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.mensural.c.svg0000644000175000017500000000162313135434035023365 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1re.svg0000644000000000000000000000013213135434035021175 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.733315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1re.svg0000644000175000017500000000101613135434035023044 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensuralu26.svg0000644000000000000000000000013213135434035021626 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.753315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensuralu26.svg0000644000175000017500000000217613135434035023505 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensurald15.svg0000644000000000000000000000013213135434035021603 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.753315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensurald15.svg0000644000175000017500000000172213135434035023456 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.C_change.svg0000644000000000000000000000013213135434035021132 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.753315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.C_change.svg0000644000175000017500000000217413135434035023007 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2faThin.svg0000644000000000000000000000013213135434035021760 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.753315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2faThin.svg0000644000175000017500000000075613135434035023641 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/r.svg0000644000000000000000000000013213135434035016611 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.763315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/r.svg0000644000175000017500000000126713135434035020470 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/MezzoForte.png0000644000000000000000000000013213135434035020441 xustar0030 mtime=1500919837.913315139 30 atime=1500919923.763315139 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/MezzoForte.png0000644000175000017500000000067313135434035022320 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR.(àÈ*sBIT|dˆrIDATXGí–Ѳƒ0D›Nÿÿ—myÈ ®KB"Ä:ã}ƒå°¢½eÛ¶×ÿÞw„æ|õ“û¬nhõ+¥^¶ßûWÌú«_N¬a-øKwœA[ èüeà4Ë#´Ä—€38¯Óuˆåà š9ÚË-ïéóÖS(­¯Ê¬;ØpDïZƒRÇ¥ÑH3×wÏè ®ŽàѼ¶ ÙYÈ/§Àµ®ðVÍÌp;ǵ0³rs sLkX|X)š« Øý3ùÁ¥1&¸*·ÛñÜ? CWeÄ5¦Þ•¼uÖZ)oo Ž {O›á}Œ±~&¦àL›{†ñÔ°^ž\Èwy€=5¨«c ÎDY…=5xg6nþ“5*ª×©+&šºw¼7bÜ»?zîmá¶ôJ@t= :<:¼åfëÌ»bXúU©ââv¬†OGw2â´—3Vk>àÙ£þã8:’?Žg;Œú·uü Vtª;·ÔŒIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.tenuto.svg0000644000000000000000000000013213135434035021354 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.763315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.tenuto.svg0000644000175000017500000000071513135434035023230 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.u5.svg0000644000000000000000000000013213135434035017774 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.763315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.u5.svg0000644000175000017500000000137213135434035021650 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2laThin.svg0000644000000000000000000000013213135434035022005 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.773315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2laThin.svg0000644000175000017500000000074013135434035023657 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests_M2neomensural.svg0000644000000000000000000000013213135434035022317 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.773315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests_M2neomensural.svg0000644000175000017500000000074213135434035024173 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0doWalker.svg0000644000000000000000000000013213135434035022334 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.773315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0doWalker.svg0000644000175000017500000000103113135434035024200 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.mensural.c_change.svg0000644000000000000000000000013213135434035023017 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.773315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.mensural.c_change.svg0000644000175000017500000000163713135434035024677 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.dgrace.svg0000644000000000000000000000013213135434035020670 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.773315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.dgrace.svg0000644000175000017500000000077113135434035022546 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0diamond.svg0000644000000000000000000000013213135434035022177 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.783315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0diamond.svg0000644000175000017500000000123713135434035024053 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.vlpes.svg0000644000000000000000000000013213135434035023422 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.783315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.vlpes.svg0000644000175000017500000000077613135434035025305 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.c2_change.svg0000644000000000000000000000013213135434035023071 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.783315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.c2_change.svg0000644000175000017500000000147113135434035024745 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.flat.arrowboth.svg0000644000000000000000000000013213135434035023555 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.783315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.flat.arrowboth.svg0000644000175000017500000000175613135434035025437 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/brackettips.up.svg0000644000000000000000000000013213135434035021306 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.799981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/brackettips.up.svg0000644000175000017500000000100313135434035023151 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.0o.svg0000644000000000000000000000013213135434035020025 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.799981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.0o.svg0000644000175000017500000000077513135434035021707 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.downprall.svg0000644000000000000000000000013213135434035022040 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.799981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.downprall.svg0000644000175000017500000000154413135434035023715 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2la.svg0000644000000000000000000000013213135434035021162 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.799981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2la.svg0000644000175000017500000000073413135434035023037 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/pppp.png0000644000000000000000000000013213135434035017314 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.799981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/pppp.png0000644000175000017500000000206713135434035021172 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRCPÕò’sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ ÑŒtEXtCommentCreated with GIMPW’IDATXÃíX;në:½‹ HIuq)o dÌ”%ÈKJ—rëNjÝYm:i L›Ž^ݺ›[‘ G£q_éXXôÎ|¥ÿ=$¸SŒËå___$ l·[èºÎïµm ïïï$ ¤i »Ý®×«ß¯ª Ò4…4M¡ª*}øüüŒp—ËÅïØn·$Éç¸$I2Â]¯WØívþ¾mÛú½®ëF\C,à‚i­Qà—1XEt=Ü·Ö²û}ßcY–³8n¿ilšfg­E)åh_k½ÈqQ )% !Pk‘̲ ˲Dk-ö}òöö†€u]G{—ç9cPká”RXZk#Ò€RJWæyî…sXwOʵ(Še1ÜÃ÷}ˆès«,ËèÿTuwH]×Ñu)¥÷Å===¡”Ïçó¤)îõõ5âD#!ÏóI®Y–Í‹a­E!*¥üoîa:Q1Œ1>ºhª83ÆŒpçó™} P|ŠESÛq™â:+†ófÓ4¬wÝug\>s¤©ˆÔûa£F‡sbÑ=¡K\'»ÉÏÏ(¥ ( _‰CËó|ôÿÐ>>>Xœ»ß.Ë2 »Ržç „˜Ä=??CY–¾ã„¦”š=SJ¹®›pÞu©õ¢óM­u„s•âhŠÔu½ ÇqYËu•4Ehá¤açr—ËëÐhUw-›#Öšó!ަuÜ×ÕbPï†bXkG^šª3T ×F©÷¹zŠA»Z54¢¨S\W‰ÁyW)å=?'ÔÔÄ da‘ã$÷ÀT`ZiDeYæ2*"Ž)"¥dRá["'¢bDÆ]Ÿ«BVG#JJ9Š>Žëj1¦  ÖëºÆ²,Gm–Ñ7Æ`Ó4¶K®8ïYkgq\D9^Ƙˆ+‡]ciF¸GÄpèY3õÒlÍÍ%k þ¥‹¬Ñ×kŒ¦ÈZ£)BÇï56û ¾þrÃËÿ†!z¥öÃÐJ,7¼Ýcöûý>œÌŽÇ# ÃUUÁïïoôg÷;Ë2xyy‰¾!œN'躺®ƒãñÈâ6›M4EºIót:ù3o·[ôåv»6›ÍèKÛ¶ðýý ‡Ãa4éºû!FgNÚ\ÎM-ZŹy‚[4t¹&nqiÆu&nÑö9gÉãèãèCŒ%û Îs¶ZÈ;èÍIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.linea.punctum.svg0000644000000000000000000000013213135434035025053 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.809981806 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.linea.punctum.svg0000644000175000017500000000125613135434035026730 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.M3mensural.svg0000644000000000000000000000013213135434035021535 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.809981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.M3mensural.svg0000644000175000017500000000062713135434035023413 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/arrowheads.open.1M1.svg0000644000000000000000000000013213135434035022004 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.809981806 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/arrowheads.open.1M1.svg0000644000175000017500000000115113135434035023653 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests_M2neomensural.png0000644000000000000000000000013213135434035022304 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.809981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests_M2neomensural.png0000644000175000017500000000027513135434035024161 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR®ÒLØsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ,3¡±tEXtCommentCreated with GIMPWIDATÓcd``øÏ€01à£C]2'º”“¡IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1tiFunk.svg0000644000000000000000000000013213135434035022006 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.819981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1tiFunk.svg0000644000175000017500000000107113135434035023656 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.ustaccatissimo.svg0000644000000000000000000000013213135434035023071 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.819981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.ustaccatissimo.svg0000644000175000017500000000074213135434035024745 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.natural.svg0000644000000000000000000000013213135434035022267 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.819981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.natural.svg0000644000175000017500000000110713135434035024137 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1tiWalker.svg0000644000000000000000000000013213135434035022351 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.819981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1tiWalker.svg0000644000175000017500000000101213135434035024214 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2neomensural.svg0000644000000000000000000000013213135434035023116 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.829981806 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.s2neomensural.svg0000644000175000017500000000101213135434035024761 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.hufnagel.d1.svg0000644000000000000000000000013213135434035022274 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.829981806 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.hufnagel.d1.svg0000644000175000017500000000117113135434035024145 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.ictus.svg0000644000000000000000000000013213135434035021165 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.829981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.ictus.svg0000644000175000017500000000070113135434035023034 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.espr.svg0000644000000000000000000000013213135434035021007 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.829981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.espr.svg0000644000175000017500000000135413135434035022663 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2faWalker.svg0000644000000000000000000000013213135434035022303 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.849981806 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2faWalker.svg0000644000175000017500000000076213135434035024161 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2do.svg0000644000000000000000000000013213135434035021151 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.849981806 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2do.svg0000644000175000017500000000076413135434035023031 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d0doFunk.svg0000644000000000000000000000013213135434035021773 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.849981806 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/noteheads.d0doFunk.svg0000644000175000017500000000101713135434035023643 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2reWalker.svg0000644000000000000000000000013213135434035022323 xustar0030 mtime=1500919837.926648472 30 atime=1500919923.849981806 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2reWalker.svg0000644000175000017500000000104113135434035024170 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.flatflat.slash.svg0000644000000000000000000000013213135434035023527 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.849981806 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.flatflat.slash.svg0000644000175000017500000000206213135434035025400 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/RehearsalMark.png0000644000000000000000000000013213135434035021056 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.859981805 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/RehearsalMark.png0000644000175000017500000000045213135434035022730 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR!"Ñp°ÁsBIT|dˆáIDATXGí—IÃ0EK•û_Ù‰–è„)Vº ;Àó#qUc|Þ~¾oÌú ±ºÐ&Ú~‘NDÆDôsÉ\wEâËí@€Lñ2D¥(Æ>ú‰fí¤ ²ÅÐÀ¶vdÃ&2E4ÛLX¥õ ´ Ý ¸O*ÌçBÑD5i4þ/L4Äj[›X&N_¯ denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.umarcato.svg0000644000000000000000000000013213135434035021651 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.859981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.umarcato.svg0000644000175000017500000000104713135434035023524 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/WholeMeasureRest.png0000644000000000000000000000013213135434035021573 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.859981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/WholeMeasureRest.png0000644000175000017500000000042213135434035023442 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRA5D†’sBIT|dˆÉIDAThCíÙ1„ DQÇûß™Šp) x$aÙþîi5Zk×éë>]€çþ‰@„ò€„9"ÏŽŸ‘2!)eIOè¹ÀD0"çˆdv`‡i‘ †OcD¼zOÉvû»|™ìPP! ‚qy¢-ÚØaØ!¯f÷""·nÃ)ÿ§qëãþsq$ÆÂ H@ÂŒJv`‡‚Á7F$ ü•öC¶£`:¡2 H@B)€„ÒAcD AcT–: z*~à$E>õªIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u0doFunk.svg0000644000000000000000000000013213135434035022014 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.869981806 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u0doFunk.svg0000644000175000017500000000100613135434035023662 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u0tiFunk.svg0000644000000000000000000000013213135434035022026 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.869981806 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u0tiFunk.svg0000644000175000017500000000110313135434035023672 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/WholeMeasureRestLH.png0000644000000000000000000000013213135434035022017 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.869981806 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/WholeMeasureRestLH.png0000644000175000017500000000037013135434035023670 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR#5ËVRßsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ  ô@PtEXtCommentCreated with GIMPWSIDATXÃíÖÁ €@ A›þ{6 ðàyˆI£(Z¥ÛrÊ\9h``>i’ÙÌÓfDFÿPà¶sÀ0^¶ £À ì€a`XmæÕÜ£(GA~¹IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2reFunk.svg0000644000000000000000000000013213135434035022022 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.869981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads.u2reFunk.svg0000644000175000017500000000105313135434035023672 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0reWalker.svg0000644000000000000000000000013213135434035022340 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.879981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0reWalker.svg0000644000175000017500000000116313135434035024212 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.u7.svg0000644000000000000000000000013213135434035017776 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.879981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.u7.svg0000644000175000017500000000174313135434035021654 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/arrowheads.close.11.svg0000644000000000000000000000013213135434035022033 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.879981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/arrowheads.close.11.svg0000644000175000017500000000106413135434035023705 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.neomensural.c_change.svg0000644000000000000000000000013213135434035023521 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.879981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.neomensural.c_change.svg0000644000175000017500000000161213135434035025372 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.smedicaea.punctum.svg0000644000000000000000000000013213135434035023726 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.899981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.smedicaea.punctum.svg0000644000175000017500000000073213135434035025601 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.mensuralM1.svg0000644000000000000000000000013213135434035022645 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.899981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.mensuralM1.svg0000644000175000017500000000111013135434035024507 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/StartTupletNumbering.png0000644000000000000000000000013213135434035022477 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.899981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/StartTupletNumbering.png0000644000175000017500000000047613135434035024357 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR‰¶HbKGDÿÿÿ ½§“ pHYs  šœtIMEÙ !7@¨dËIDAT8ËíÓ¿J‚QÇñ’4éÔ&x µ"4´7¤KtÝ€7à=4¸m‚àØÞ :4´:;D‹ô×å^D(_ϼ?8Îó|yžçðßuƒg|b‰[í¼ÄíX÷øÁÃ>Ð.*¹s= O)£èô*¬>&8Û¥ð`‹×Ä""xÇV©Æ®á3|ã"e¦Ç‘écJh- ó¿T7²lo¹ÓŠ=+=ÉòºÆ†EÆ`ŠÃœwŽWôŠ>©qt›Å¿ÿÂ[x/J•*õ»Ö™"j˽tIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1reFunk.svg0000644000000000000000000000013213135434035022021 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.899981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1reFunk.svg0000644000175000017500000000113213135434035023667 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1reThin.svg0000644000000000000000000000013213135434035022020 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.906648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1reThin.svg0000644000175000017500000000102513135434035023667 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.M1.svg0000644000000000000000000000013213135434035017764 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.906648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.M1.svg0000644000175000017500000000071113135434035021634 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.M3neomensural.svg0000644000000000000000000000013213135434035022237 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.906648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.M3neomensural.svg0000644000175000017500000000105013135434035024104 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0triangle.svg0000644000000000000000000000013213135434035022371 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.906648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0triangle.svg0000644000175000017500000000130513135434035024241 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.ssolesmes.stropha.aucta.svg0000644000000000000000000000013213135434035025111 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.906648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.ssolesmes.stropha.aucta.svg0000644000175000017500000000113513135434035026762 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.flat.arrowdown.svg0000644000000000000000000000013213135434035023570 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.919981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.flat.arrowdown.svg0000644000175000017500000000151613135434035025444 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/piano_brace.svg0000644000000000000000000000013213135434035020612 xustar0030 mtime=1500919837.933315139 30 atime=1500919923.919981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/piano_brace.svg0000644000175000017500000003662713135434035022501 0ustar00jjbenhamjjbenham00000000000000 image/svg+xml denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.C44.svg0000644000000000000000000000013213135434035020342 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.949981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.C44.svg0000644000175000017500000000136413135434035022217 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.hufnagel.do_change.svg0000644000000000000000000000013213135434035023142 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.949981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.hufnagel.do_change.svg0000644000175000017500000000115513135434035025015 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.u4.svg0000644000000000000000000000013213135434035017773 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.949981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.u4.svg0000644000175000017500000000120213135434035021637 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.thumb.svg0000644000000000000000000000013213135434035021155 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.949981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.thumb.svg0000644000175000017500000000114213135434035023024 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2petrucci.svg0000644000000000000000000000013213135434035022404 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.956648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.s2petrucci.svg0000644000175000017500000000100613135434035024252 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0miWalker.svg0000644000000000000000000000013213135434035022337 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.956648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0miWalker.svg0000644000175000017500000000105013135434035024204 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.doublesharp.svg0000644000000000000000000000013213135434035023131 xustar0030 mtime=1500919837.916648473 30 atime=1500919923.956648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.doublesharp.svg0000644000175000017500000000142313135434035025002 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.uverylongfermata.svg0000644000000000000000000000013213135434035023430 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.956648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.uverylongfermata.svg0000644000175000017500000000131613135434035025302 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/two.svg0000644000000000000000000000013213135434035017161 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.969981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/two.svg0000644000175000017500000000142513135434035021034 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.usignumcongruentiae.svg0000644000000000000000000000013213135434035024131 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.969981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.usignumcongruentiae.svg0000644000175000017500000000160313135434035026002 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.medicaea.u2.svg0000644000000000000000000000013213135434035022255 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.969981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.medicaea.u2.svg0000644000175000017500000000074513135434035024134 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.lcomma.svg0000644000000000000000000000013213135434035021306 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.969981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.lcomma.svg0000644000175000017500000000105613135434035023161 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.ssolesmes.auct.desc.svg0000644000000000000000000000013213135434035024206 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.979981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.ssolesmes.auct.desc.svg0000644000175000017500000000105313135434035026056 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.vaticana.u2.svg0000644000000000000000000000013213135434035022313 xustar0030 mtime=1500919837.923315139 30 atime=1500919923.979981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.vaticana.u2.svg0000644000175000017500000000073213135434035024166 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.epiphonus.svg0000644000000000000000000000013213135434035024303 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.979981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.epiphonus.svg0000644000175000017500000000106613135434035026157 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.upbow.svg0000644000000000000000000000013213135434035021172 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.979981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.upbow.svg0000644000175000017500000000105713135434035023046 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.ssolesmes.stropha.svg0000644000000000000000000000013213135434035024015 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.999981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.ssolesmes.stropha.svg0000644000175000017500000000103113135434035025661 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.medicaea.fa_change.svg0000644000000000000000000000013213135434035023065 xustar0030 mtime=1500919837.919981805 30 atime=1500919923.999981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.medicaea.fa_change.svg0000644000175000017500000000124513135434035024740 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0reThin.svg0000644000000000000000000000013213135434035022015 xustar0030 mtime=1500919837.929981805 30 atime=1500919923.999981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0reThin.svg0000644000175000017500000000102513135434035023664 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.dpedaltoe.svg0000644000000000000000000000013213135434035021777 xustar0030 mtime=1500919837.936648473 30 atime=1500919923.999981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.dpedaltoe.svg0000644000175000017500000000110013135434035023640 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2tiWalker.svg0000644000000000000000000000013213135434035022352 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.009981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads.u2tiWalker.svg0000644000175000017500000000076613135434035024234 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.shufnagel.punctum.svg0000644000000000000000000000013213135434035023767 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.009981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.shufnagel.punctum.svg0000644000175000017500000000101513135434035025635 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensurald14.svg0000644000000000000000000000013213135434035021602 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.009981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensurald14.svg0000644000175000017500000000143413135434035023455 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1faFunk.svg0000644000000000000000000000013213135434035021760 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.009981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1faFunk.svg0000644000175000017500000000101213135434035023623 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/ppppp.png0000644000000000000000000000013213135434035017474 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.023315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/ppppp.png0000644000175000017500000000215613135434035021351 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRNT}Ë÷sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ  RÒ ÄtEXtCommentCreated with GIMPWÉIDATXÃíY½n¤0î.ŠÒD1]¶ô–i"9R^€<yö ¼’m·ƒv;hÓ-àmÓ™G`Ûíæš³e6KÈU§ÉŒ†Ïþæˆá*_–W þ1qÛíÖë5DQEQ˜û]×Áûû;DQQÁf³¾ïþt:Áf³(Š Žc¨ëÚèÚ¶…——££¶K1û¾7úõz mÛ]]×#ÌÓédôEQ@ÇÇñóíí-¸W@äyŽà¬ªª°ªªÑ}@ÆÀÃ0 b¤—Rb–e“¶K1¥”Èé”R1}úÃáàÝ‹m‡ˆ8"®i̲ ‡apŒ…¨”B)¥óÐ,Ë0MSnXÛêgÇ6I’ŘBdŒ¡”Ò90çó<÷b>??#`Y–ŽNÛ¥iÄôÇ9G!„C¢ñ¿MŬÇÇG³QDy3MSÇÖÝÜÜ,Â|xx0ŽBDã8½ô^|¶6 eY:÷…ALÎù˜8%MÓxooD)5Ê4}”RÆ–zñ;˜I’ ":‘jp Síˆæˆ8ιHo{F†}HªÓž¥¢›Y‚YU•7jôýK˜”J¸ñ—Ý û¾‡¦iL´»Oš¦À3×ÇãÑé···ç¹éH¶$Iâ\S[Îù"Ìûû{È²ÌØÚ’¦é$æëë«×N?/d'„wU_Ê”e9ª…¡”¢QC…êCuq.&¾s0išJ)ga‰£@vÞÓz¡Û¿/´é!hÊLÕŹ˜4MiSa†ê—Ú‰mL/q¾¼¶A»—4j(qÔƒº}“FMÜ0 ALJ8%NI>L˜“¦¶£…ŸF çÜ Çôð¶íRÌP§Õ5EjhX÷ Çôœ^âl1Ƽ‡bŒj!ÄÈkÚVßÅôÍ`>B(&%œ16rlÓK\hR†«ªÂ<ϱª*gLEN ¥–e´ýf¨¸K)L*”pMŽRê"¦—8úžF#cJ¦f°)YŠyi›J¸= Ï¸”¦s…¦)}Åš’¥˜—ºé\ÂõëÞWÄù¬ÔuóéÄ {3„½z¨c·Óþdå´ÿµ-?Ÿžž~ï÷{躊¢€óùì|ç:ŸÏÀƒÕjåö}u]ÃÇÇl·ÛÑ®ŸÃs¦=­/Á<°ÛíŒÝçç§£×לs¸»»s¾î÷{hÛÚ¶…Ýnçµ[­V£½N ^Z¾Pöu ߢmÜ÷²=“ÖÐкÔyCë+å%ºþs¸þs¸w%î?–?Å#êt'Ž7{IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.neomensural.c.svg0000644000000000000000000000013213135434035022214 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.023315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.neomensural.c.svg0000644000175000017500000000154113135434035024066 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.shufnagel.virga.svg0000644000000000000000000000013213135434035023404 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.023315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.shufnagel.virga.svg0000644000175000017500000000112513135434035025254 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.hufnagel.do.fa_change.svg0000644000000000000000000000013213135434035023527 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.023315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.hufnagel.do.fa_change.svg0000644000175000017500000000166213135434035025405 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d0reFunk.svg0000644000000000000000000000013213135434035021777 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.029981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d0reFunk.svg0000644000175000017500000000113013135434035023643 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1reWalker.svg0000644000000000000000000000013213135434035022343 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.029981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1reWalker.svg0000644000175000017500000000115113135434035024212 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1diamond.svg0000644000000000000000000000013213135434035022200 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.029981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1diamond.svg0000644000175000017500000000145713135434035024060 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.G.svg0000644000000000000000000000013213135434035017631 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.029981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.G.svg0000644000175000017500000000251113135434035021501 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accordion.dot.svg0000644000000000000000000000013213135434035021076 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.046648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accordion.dot.svg0000644000175000017500000000067713135434035022761 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.medicaea.d2.svg0000644000000000000000000000013213135434035022234 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.046648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.medicaea.d2.svg0000644000175000017500000000074613135434035024114 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2doWalker.svg0000644000000000000000000000013213135434035022340 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.046648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u2doWalker.svg0000644000175000017500000000100013135434035024200 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/z.svg0000644000000000000000000000013213135434035016621 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.046648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/z.svg0000644000175000017500000000140413135434035020471 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/FirstTimeBar.png0000644000000000000000000000013213135434035020670 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.046648472 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/FirstTimeBar.png0000644000175000017500000000040013135434035022533 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR"*Ö‰¯sBIT|dˆ·IDATXGí˜Q €0 C­xÿ+O÷Q˜a©3‰ ’ª_S³RÊÂp¬ &ªÁNˆˆˆ Ôʈˆ Ô[[0³Ïš°žˆ´tŽUÙß›š†ˆŒ`›‡ÁG'-š­´iŒ¨Ý©ÏO$“F%67§^fhˆ„þ#™$œ ‘t#žŸzõ³— ¬=2’9Âa#W&®î! ס°Ö—³&2ú²hƈiÇzHÓÁéZ";Š\!eM6¢ŒIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2mi.svg0000644000000000000000000000013213135434035021173 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.056648473 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2mi.svg0000644000175000017500000000101013135434035023034 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.uportato.svg0000644000000000000000000000013213135434035021713 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.056648473 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.uportato.svg0000644000175000017500000000102313135434035023560 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/hyphen.svg0000644000000000000000000000013213135434035017643 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.056648473 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/hyphen.svg0000644000175000017500000000070313135434035021514 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/f.svg0000644000000000000000000000013213135434035016575 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.056648473 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/f.svg0000644000175000017500000000140513135434035020446 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.mensural.d1.svg0000644000000000000000000000013213135434035022331 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.066648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.mensural.d1.svg0000644000175000017500000000125313135434035024203 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests_M2.svg0000644000000000000000000000013213135434035020046 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.066648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests_M2.svg0000644000175000017500000000073013135434035021717 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2faWalker.svg0000644000000000000000000000013213135434035022324 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.066648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u2faWalker.svg0000644000175000017500000000075713135434035024206 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.snappizzicato.svg0000644000000000000000000000013213135434035022734 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.066648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.snappizzicato.svg0000644000175000017500000000120713135434035024605 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2sol.svg0000644000000000000000000000013213135434035021363 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.076648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.s2sol.svg0000644000175000017500000000105213135434035023232 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.downbow.svg0000644000000000000000000000013213135434035021515 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.076648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.downbow.svg0000644000175000017500000000077613135434035023400 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.c1_change.svg0000644000000000000000000000013213135434035023070 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.076648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.c1_change.svg0000644000175000017500000000146613135434035024750 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.d3.svg0000644000000000000000000000013213135434035017751 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.076648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.d3.svg0000644000175000017500000000100713135434035021620 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1doWalker.svg0000644000000000000000000000013213135434035022337 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.076648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1doWalker.svg0000644000175000017500000000104013135434035024203 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.c3_change.svg0000644000000000000000000000013213135434035023072 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.093315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.c3_change.svg0000644000175000017500000000147613135434035024753 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.reverse.plica.svg0000644000000000000000000000013213135434035025033 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.093315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.reverse.plica.svg0000644000175000017500000000077413135434035026714 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.mensural.g_change.svg0000644000000000000000000000013213135434035023023 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.093315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.mensural.g_change.svg0000644000175000017500000000244013135434035024674 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.3neomensural.svg0000644000000000000000000000013213135434035022122 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.093315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.3neomensural.svg0000644000175000017500000000103013135434035023765 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.1.svg0000644000000000000000000000013213135434035017647 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.103315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.1.svg0000644000175000017500000000071013135434035021516 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/LargeSix.png0000644000000000000000000000013213135434035020053 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.103315139 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/LargeSix.png0000644000175000017500000001136513135434035021732 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRXi‡ïT pHYs  šœtIMEÙ - "t¶ tEXtCommentCreated with The GIMPïd%nkIDATxÚíÝyt–Å¡Çñy’†v’€„/«@B PdÑËR)¢ö´Jkñz˱¢à‘ *.Yô +PŠi„€,²ÂR„Ö„„@ÈúÞ?¬-`ÞdæÙ’ë|ÿ´ÂÌ<ã|œg{Ÿg—[ú/† @ €@!€@!€Bù…§AýêNEáµ’’’’’ÀÁ.@ê*¥Ùç/^¸pñ•‚ÂâŸþð‘%õqÕáO¸%G3ŽŸ:•u¶Ú.´ùd Îåâ®]‡2NTÕØ³Ùs|q •ûSwî<-S²÷Ê@ìûxJÊ–|é⋦º±-U;¿\{\±Î4Äž¹±}Å— Ô‹X> ësê“å'ŒÖ}ö?@¬½Ø[·x‹™úÝVÝ ˆuÉ_úV¶É&.˜éÄšœy}i‰ͼúG@,9tÌû°ÜŠv|ˆùdÏY^iICqß5áb:¯þo©5-µKk¡ÑAݦ»½¥Kææ[ÔTØ×:yØòõSÇ­j*øïÑsÉyfáî4 óoØÐÏÏUY^R\wiaOˆ¹ëÀ…s®èGÇØØØŽ‘¡Úÿ¤l9È¡){”Ú}úôéá/ˆ å¯ýIíÊ#xhâˆv0Ø’>yŸJñð±cúû``HÕ¢çÊäK73>ÞAÎOþZ¾ð]OŽkÈèÛ ²njžlQ¿qOþCo/HÙß”-êÿÄï›3ð6ƒœ·C²dàÌYÍv»Aþ>é²\Aï'^ cÐkŠWÆU/%Iz$¤/ÆÃöR8i½\ÁoŽt1ⶃuLªœë™¹Üqdã#ERå:.ëÇh;p yû>9Yûðp`†TÎZ(U.ô“$†Úëã¿’*×ï³ÖŒ´»¬üár¿MÅÉ’“˜!u-¸äq†Ù c Rˆ†|>œQväа‹2ÅÚlˆcÙ› u·$6¥%cìÄA}ç=Rÿ‡bŒ=Jº{˜Ôå`·o¸•èȾ{ dŠõØÊ;r0^j•Îø:’9Pêü*|{$ÃëÄAý\‚”GðF<¹’xJêú|m× É¥Ê½1”±u¤jÊ6©r“~ÃÐ:rPþU©b=ÒøµÖ¥¿’*Ödo;FÖ‰]Ö¶'äʽ‹‡#3äLïKRå]θ:R2p¯T¹6éWvYî'ä<\ËñpdÙÇråž̨:±ËÚßWna†V‡ƒUfHÑÃ’ e¼‡# OeÊ•{ ™1ub—µz‚\s~GÚ3¦̬’ÍÍÂÉRÿ\kÿ bH˜!oIzˆ—ñpb†dv•\7±ÃaÖep`†TM•]Çòe<œy«d[Ç1žì².t,”lkÅDÆÓò;Y¶cN@6}*ÛÔ,Ž ì²Êº“l©INÃiÿ Y,ë!¦âáÀ ¹S$ÛRf£iÿ yAÚ#@/“nhcéÀ.kÔW²íÜqÖ—Á´}†l“öãñ°Ä=[¾ÇJûAR¶I7Û‹¡´Äý’|3±2™ý ›·Ë73†‘´ÿ,ënù=VûÌÛgHš¼‡xûA^Shå>Òö]ÖáÎò]æ*Äöò†B#Cñ°$o¥B#÷2޶ƒüEå#„,Qfû1¤¢}Ž|­²9ɲ{†|¥à!ãa;Èû*mðÊ”í»¬ÓíU^_?Ã8ÚŒ¢Íõ’ð«*Mä7aí!ë”<¢ð°ä3¥º1ˆ6ƒ\ÛH½ÙXH½ù\RŸÎ²Jï(Vi ¤@òºÐ}éĉ̜¼¼¼Â²²²Ê àà ààðޱÛñ ï›óóÏU|§ä!:ÉxnݽgwîÍRôïÇê}£ï2¼WûAÖ«5Щ֙±æ•žÿ¾,#ch;|øÐ¦hT·ËrGŸPj`Þs5þõÉU+JÍ’Ojˆpß–#Šõ¿t{Nåµw#þç¤[÷üì,ëaÕ.«üýN#ÕZ;ÿJdÒ^Í'ÈÏ@RÔê{{Z©jU§_ÿS½?{M8¡5ÈíÇŠ¦EJõ#= _êoÒvÉgÆ Í˜!?eš‡¨þUϼ)C {ˆòÅQ¸ùW¶ @VÆ~dªSÅÓ“/òc¶™)œ8)ßl·Öwù+ BQ™f$­Û* ú•;úW7"£P±þí'Yîw†œ¶¦gK‡å¢¼ÇmnýÇÒÇŸ¬°ªki²Ù©X=ðÖßo/Å/µ°oGûíÓd·ê¹å.íÉ;,íÜ…A›5¹zT±zë›ÿa_ÿL‹{W?ýŸ”ûJlêáÁ1•Ú‚”V­Þâ_ÿ»#¹Ä¶.~ûºN ·Ü~?ÔEùÄôÇO¦tÅÆ>6ØÖGÓ’¡ZÛ;L!DÖ;=DÅ„"MAŽ©Önî%„¹Ãm>:9…cúÑ™v÷rågz‚(_„… !ª¦l·¿›Ï^ÓÄ­üPB˜âÅOèæÙ×tÉ-V­ÝLˆå¯8ÒÏùY‚œê »§;ÓÏDf—uñÁR‡:º&ÚÓøáÇz:[?õÝôë[ëéŽ4í@Î*×vtŒhr󽬞Öý„Ý5&:ºi`PPù•ü+Y»wí/· «Gc4inÍ/~!÷Úú¶?+Mýd­ék»éïéRîgŵ}§ ¬ö/Š×.H7×´_¶aÿçU‘3´6ðûšÞßYÕÁ\ësõza'×4GäßÕôË…×øÃ‹üÍ´¿Jƒ‡âoÉ3ÛÖ£j[rÜçé½=MlàÈ­@L΀—K|¼»ãŽß›ØÆjfˆt¥L–*çûú_¼ŒƒT"™Ð”¾²E§}ágt+gÒt1óÃuð· ß<½ÉðGAW"—JKÐ ^mt¯µÞ ˆL^LV+Ÿ¼Ðà†r2‘ÈЗTk<ý;ƒ›úV#ÃÏJû½«¾š?Ú@ ? ú‚;"Þ2-ÕdK µ%ÆÐ¥^ä"CËÍÐÄèkÈ/»¬˜<š}–- QcÕs-4¹Z2ÛèªcmŸ5Rëà/䦨¯i <Ûð'ÚŠ¢/8¸æ§Ë 1ö¢Ò$ãŸÌ ™k RåHM1ó!õ)mØgÕbè ¿{W÷ù- VƒL4µõi!€x1´–q’©­‡ÌP¯sH›³,_³µº€´¬+€T  |!dM¢©D}ŠøZÓ‡H@,±hhü[)׿QRѪŽfˆâA¤‘6 íê $jA¢êh—%©$ÒLe@êÁ ±êšYm]²ÆÚ€Ü\G j3$BW õ DÜ©XÙªU­R=HgÅÊVýT¤v©×‚b7ˆ/ ÖÌëu1CÂõ‰T¼MTX \ú€xÇý?‰ú€ˆ^j• êd†â1ùuBé=Ãh@7°êsÝe*…»ê§vz©@\q:øªýçw¡@¢uj+!ž­nB+µ·jÏÔHOÁ ñ˜\‹žêT¹âï¯H„ÚeW–5¸,_´Ao½@„ÚÛ3Çé È¥Ú-ü­pÙOh2L©öQÇgÈPÝ@Z*ý&’áô i0D71\ Äš¯GÈ_`ö ¤¦Xs%"ÿUä¡È¥µG~°¤ògωú*M‘=Vô¡TúLë^úˆQ*ÕwYчlé#у. AîSù—þ¾ÂÑCÈ¡!H¸ÊµWqº}>ynÖ_GñJýT ú°_¶ào-AÆ©ì³6[Ї}²ÿû—ïqËîÊ=[äëæ›~êF°ä¨Û~¡å QZ—òÚVÓ]8\Á©dŒÊ«j_™îÂ÷’åüÕ¤‰ÊZº5};+E²ÜÄ;tÓ8möîI¥ìëi¡-H¼ÊëŸf?à|àŠ\¹»»ë âõ¸B Ÿš|±MvõŒÐDLQ8—=¿É\ÖË‹KÖ$\åÌ÷S8+yÞü‚—Î Båk]ërÌt`ÜYZÌCBkn T¾e¦ŸÉ›ã­ ˆËà)ßF“lã+™”{2¯×./½gˆ¸Wá·¹+ïßþÛrÅæëâáq†ˆõ÷Ë7vÊè;W[ÉKÚ ‹‡ç}F*ºzHµ(:͹Õ@ç} ¯‡ô âʨ­Žô(ø£…Æ‘­Éæ_;Ñ¡.{´öPùКï»ïÙ¿+™ü}ŒÖ »,!„Ø1ÞÞC{è’±Bó¨=3ÛïÀcvvfä!í=T¿ Ùèã5¡vu%ìãuÕ ±çý}×Ìc¹ðP<†ü˜m3ZÞø=Á04C„÷.±øKi=7¥àa|†!JÞ™—gYº??Æ s B\}oq¶5;«ç8vX"DÅoî4»ùÀ 3ØWY"„øáãÕfö\wM • B”m\¹±ØPÍ®ãÆE1þ–ƒ!Jÿ±n½â•†C“¢|›@„î“[·n•ü˜HPŸþù3ò¶‚!„ÈMOOO?ZÓ;Í»Äué×€Qwäǹ’›••uþrþåËÅeåeen___ߦ¡MÃÚ´m×¶ãí81.‘!€B„ @ €@ €@!€B„B„  @ €@!€@!€B„„ @ @ €@!€B!€B„ @ €@!€@!€B„„ @ @ €@!€B!€B„ @ €@ €@!€B„B„  @ €@!€@!€B„† @ €@!€@!€B„„ @ @ €@!€B!€B„ @ €@ €@!€B„B„  @ €@!€@!€B„ @ €@ €@!€B„B„  @ €@!€@!€B„Øžÿ¢ i‰Ë<þIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.vupes.svg0000644000000000000000000000013213135434035023433 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.106648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.vupes.svg0000644000175000017500000000077313135434035025313 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/Pianissimo.png0000644000000000000000000000013213135434035020450 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.106648472 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/Pianissimo.png0000644000175000017500000000135513135434035022325 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR*¶{sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ  Î_±,tEXtCommentCreated with GIMPWHIDATHÇíWÁ±£0 }ìì9S‚S‚S¿§R‚) „P.J°K0%èŸÌ`cdwfߌ±FÖ“Ÿ$“Œˆ?¿ðCð–hUUÈóyž£ªªy_k¯¯/dY†<Ïñ|>a­íÖZ<dY†Û톮ëf[Û¶¸ßïï4MûDheY€`õ}OJ©Õ>bŒ‘sކa ÆØÊfŒIž¹ôÝÂ&QO¦®kêû~>sNHJIƆ!X–% !ˆ1FÃ0Iy_¥9ç‚s½ï)¢Æ˜À±®ëà@!DýÒv½^ç›'"’Rv¥TH`a㜟#êå1Æ‘b%œÔrEADDι]"±{•¸²øÃ¥”I"q°×ëµ Ö4MR ¿ïÑ4ÍçD}# à V×u²–ýº\.³-V"n–¸±¼§ši+˜OÀÃ7H\ƒ±)ñdˆë÷0ÑTý-w­A)%b±ì§T°˜hQ›e+±$êœ[)×ï)¢q0/½snU_˸5 œsdŒÙMâ4Ñ8cl5ý~Ü`©¹›Jš1F¯×‹Žà÷ÖÓº|›@)¥¬µÐZÃZ Î9¤”`Œíú6M!Æq„ÖÓ4s޲,••Ý7É;¼›»Ÿ"ùõd­Å8Žóo!8ç‡oSJùï>óÚ¶ ~EqøÀ?ñÝCFD4Mº®ƒµÓ4­‚1Æ ”‚”ru³ã8稵”ðj”e™¬åSØš—©åßÿ½×ekÅ“á,²ÿÿ™þ2¾’¼›ºIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.upedalheel.svg0000644000000000000000000000013213135434035022146 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.106648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.upedalheel.svg0000644000175000017500000000104013135434035024012 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.c5_change.svg0000644000000000000000000000013213135434035023074 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.106648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.c5_change.svg0000644000175000017500000000147513135434035024754 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.rcomma.svg0000644000000000000000000000013213135434035021314 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.123315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.rcomma.svg0000644000175000017500000000105113135434035023162 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.ssolesmes.oriscus.svg0000644000000000000000000000013213135434035024024 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.123315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.ssolesmes.oriscus.svg0000644000175000017500000000110013135434035025665 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.mensural22.svg0000644000000000000000000000013213135434035022002 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.123315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.mensural22.svg0000644000175000017500000000141713135434035023656 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2laWalker.svg0000644000000000000000000000013213135434035022330 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.123315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2laWalker.svg0000644000175000017500000000074213135434035024204 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/six.svg0000644000000000000000000000013213135434035017153 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.123315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/six.svg0000644000175000017500000000127213135434035021026 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1doThin.svg0000644000000000000000000000013213135434035022014 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.146648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1doThin.svg0000644000175000017500000000101513135434035023662 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2reWalker.svg0000644000000000000000000000013213135434035022344 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.146648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads.u2reWalker.svg0000644000175000017500000000103013135434035024207 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.3mensural.svg0000644000000000000000000000013213135434035021420 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.146648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.3mensural.svg0000644000175000017500000000066113135434035023274 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.vaticana.d1.svg0000644000000000000000000000013213135434035022271 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.146648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.vaticana.d1.svg0000644000175000017500000000074013135434035024143 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.dstaccatissimo.svg0000644000000000000000000000013213135434035023050 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.156648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.dstaccatissimo.svg0000644000175000017500000000073013135434035024721 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.c4_change.svg0000644000000000000000000000013213135434035023073 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.156648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.c4_change.svg0000644000175000017500000000147613135434035024754 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1mensural.svg0000644000000000000000000000013213135434035022413 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.156648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1mensural.svg0000644000175000017500000000107613135434035024270 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/pedal.Ped.svg0000644000000000000000000000013213135434035020144 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.156648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/pedal.Ped.svg0000644000175000017500000000303113135434035022012 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/pedal.M.svg0000644000000000000000000000013213135434035017630 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.166648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/pedal.M.svg0000644000175000017500000000077413135434035021511 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.hufnagelM1.svg0000644000000000000000000000013213135434035022610 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.166648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.hufnagelM1.svg0000644000175000017500000000110413135434035024455 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.lpes.svg0000644000000000000000000000013213135434035023234 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.166648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.lpes.svg0000644000175000017500000000077413135434035025115 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.circulus.svg0000644000000000000000000000013213135434035021667 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.166648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.circulus.svg0000644000175000017500000000100513135434035023534 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensuralu06.svg0000644000000000000000000000013213135434035021624 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.176648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensuralu06.svg0000644000175000017500000000216513135434035023501 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1tiThin.svg0000644000000000000000000000013213135434035022026 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.176648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1tiThin.svg0000644000175000017500000000111113135434035023671 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.mensural94.svg0000644000000000000000000000013213135434035022013 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.176648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.mensural94.svg0000644000175000017500000000116713135434035023671 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/mute.png0000644000000000000000000000013213135434035017307 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.176648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/mute.png0000644000175000017500000000154313135434035021163 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR)<û{“ÞsBIT|dˆ pHYs::þ6)QtEXtSoftwarewww.inkscape.org›î<àIDAThíšOHQÇ??‘D‹ ºTP‰Ñ¡ ‘é]:DdA‰Õ¥0‚¢0(ºH]¢A„P—ºYJ"(‚°‹‡ÊˆJÊ?á·ÃÛ wÜÝ7;ìæ°o~ﻟùýæ½™}oMi•™µIºU•4H!™Ù.à@*!Íl°QÒ H)$Ðôe?¤ÒÌöO$MdÛRif+u’žÍnO$pè 6¦ÒÌÚ€~I¿ƒçRif«5’†òHJô ¸ÔŠ©\Q Ð ,˜ áFdGÔ,⦛;’~vϽª§™/,öhŠ˜Åõ@wÈù: +Ø8\"dsÀjà.yÊ Ôç€ÀhN¹Ë¬N ov™Í¬8ê3Í4³F`¹¤ÁÌçE¸{ó°6>Yör5ÀC`1®ä§·!ž¯“ÈäEÜSå0pØ0OüTY!Íl'°h6-°[y ͬ h.K"vÒÌ WÖv ±H›x 3pq#¶©D;ÿfv·Í“¥wÈ^`³gÏ)߯jõó‡D–wÈÏ~“¾!ãˆÞ3‡*¾Tô¥ ¤/U }É;äOÏ~äà ðÉ£§wÈ1I@põàÏ=)鳤ó¸[]ÀH vÞß‚r$雤K¸ÌžÞaSžÑ-i\ÒUÜ[ûIàM„îÓe‚$MHºlÁ-©¼\@·‰DæII$ÝÄ-ž‡„':™Kš‘tØìó„ýHÅGN÷$5{`˜&©r‡IÒI­Àà0™ä"j¨$ à2šŽ-’ù„,uó;–Íó äã¼¾¯Jè_Püç@f={nÉ®g>†%}÷‹—uÏ¿®Ý¬Hz·,{Ì8f¶’4KVŠP¤™Õ-’î'Ä“WÁLž®%¦fÖŒHú’ O^ÍÎäIý‰‘„hΔFý—ÅTê/ƒŽh‘tà³IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.ulongfermata.svg0000644000000000000000000000013213135434035022522 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.196648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.ulongfermata.svg0000644000175000017500000000111013135434035024364 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/StopTupletNumbering.png0000644000000000000000000000013213135434035022327 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.196648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/StopTupletNumbering.png0000644000175000017500000000063513135434035024204 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR‰¶HbKGDÿÿÿ ½§“ pHYs  šœtIMEÙ 3j5*IDAT8ËÝÓ¿+ÅaÇñ¹X˜nIWü&‹º)3…ÁÁff±±PŠ¿À AíÃM6ÙÈ ‹®×r†o·«¸÷»ð©§§çôœ÷Óùœóð×5Þñ„-dkŽaý±öQÂA-ÐÔ%Î-½HÓŠ|@§Ò€µb'üMbC…X÷aA{xM«ì úp…OŒ¤éiOxzž&4ÐëŸ&Ô—yÙ_áNgì—Õ@{€¤fð†u´¼ˆÄI denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.coda.svg0000644000000000000000000000013213135434035020744 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.196648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.coda.svg0000644000175000017500000000142113135434035022613 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.reverseturn.svg0000644000000000000000000000013213135434035022422 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.203315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.reverseturn.svg0000644000175000017500000000140013135434035024266 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.ssolesmes.incl.parvum.svg0000644000000000000000000000013213135434035024573 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.203315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.ssolesmes.incl.parvum.svg0000644000175000017500000000101313135434035026437 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1tiWalker.svg0000644000000000000000000000013213135434035022330 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.203315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1tiWalker.svg0000644000175000017500000000100213135434035024172 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensuralu14.svg0000644000000000000000000000013213135434035021623 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.203315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensuralu14.svg0000644000175000017500000000142713135434035023500 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0mensural.svg0000644000000000000000000000013213135434035022412 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.209981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0mensural.svg0000644000175000017500000000107613135434035024267 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.flat.arrowup.svg0000644000000000000000000000013213135434035023245 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.213315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.flat.arrowup.svg0000644000175000017500000000147613135434035025126 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0harmonic.svg0000644000000000000000000000013213135434035022364 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.213315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0harmonic.svg0000644000175000017500000000104613135434035024236 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0miThin.svg0000644000000000000000000000013213135434035022014 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.213315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0miThin.svg0000644000175000017500000000105413135434035023665 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0miMirror.svg0000644000000000000000000000013213135434035022364 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.223315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0miMirror.svg0000644000175000017500000000105313135434035024234 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2solFunk.svg0000644000000000000000000000013213135434035022207 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.223315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.s2solFunk.svg0000644000175000017500000000074213135434035024063 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/Speaker_Icon_Mute.svg0000644000000000000000000000013213135434035021704 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.223315139 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/Speaker_Icon_Mute.svg0000644000175000017500000000624613135434035023565 0ustar00jjbenhamjjbenham00000000000000 image/svg+xml denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.medicaea.u0.svg0000644000000000000000000000013213135434035022253 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.223315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.medicaea.u0.svg0000644000175000017500000000074513135434035024132 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.sM1neomensural.svg0000644000000000000000000000013213135434035023232 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.243315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.sM1neomensural.svg0000644000175000017500000000132113135434035025100 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2triangle.svg0000644000000000000000000000013213135434035022354 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.243315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2triangle.svg0000644000175000017500000000114613135434035024227 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.prall.svg0000644000000000000000000000013213135434035021150 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.243315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.prall.svg0000644000175000017500000000124213135434035023020 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.neomensural64.svg0000644000000000000000000000013213135434035022512 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.243315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.neomensural64.svg0000644000175000017500000000134213135434035024363 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/dots.dot.svg0000644000000000000000000000013213135434035020106 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.253315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/dots.dot.svg0000644000175000017500000000067013135434035021762 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.prallmordent.svg0000644000000000000000000000013213135434035022541 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.253315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.prallmordent.svg0000644000175000017500000000154613135434035024420 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u1faWalker.svg0000644000000000000000000000013213135434035022323 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.253315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u1faWalker.svg0000644000175000017500000000101113135434035024165 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/eight.svg0000644000000000000000000000013213135434035017450 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.253315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/eight.svg0000644000175000017500000000134213135434035021321 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.medicaea.u1.svg0000644000000000000000000000013213135434035022254 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.259981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.medicaea.u1.svg0000644000175000017500000000074513135434035024133 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.medicaea.do_change.svg0000644000000000000000000000013213135434035023101 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.259981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.medicaea.do_change.svg0000644000175000017500000000107513135434035024755 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d0tiFunk.svg0000644000000000000000000000013213135434035022005 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.259981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d0tiFunk.svg0000644000175000017500000000107113135434035023655 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1laFunk.svg0000644000000000000000000000013213135434035022005 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.259981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1laFunk.svg0000644000175000017500000000077113135434035023663 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1cross.svg0000644000000000000000000000013213135434035021716 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.269981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1cross.svg0000644000175000017500000000155613135434035023576 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.uM2.svg0000644000000000000000000000013213135434035020764 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.269981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads.uM2.svg0000644000175000017500000000132713135434035022640 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.mensural.g.svg0000644000000000000000000000013213135434035021516 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.269981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.mensural.g.svg0000644000175000017500000000252013135434035023366 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2ti.svg0000644000000000000000000000013213135434035021204 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.269981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads.u2ti.svg0000644000175000017500000000101413135434035023051 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.hufnagel.d2.svg0000644000000000000000000000013213135434035022275 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.293315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.hufnagel.d2.svg0000644000175000017500000000117013135434035024145 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/Upbeat.png0000644000000000000000000000013213135434035017555 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.293315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/Upbeat.png0000644000175000017500000000065413135434035021433 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR34'¤’sBIT|dˆcIDAThCí–Yà DKÔû_9­#EB`p<ŠÜ¿?·´ïûç-¿í- Â0«ªÊ„2D˜œlzâk:e<”Rª:ô¿i'ãuձĘ4ˆÜ/ xÎÜTÏžJe ãe¤b·ºƒaƒ {䌷áÖ‚)£ÆAç¢Õ9KÂX•q ³Üá¯Z/…ž®Œˆ€Q'€Ü“žç½t¦eø™W­ïe.ôþ§çŒ¥@, “«á &ãw5–÷zbµ}ô0C:Ú4¯<1}â¤W)0qZÖû§)ã]–#g¬!À87%ÌzËò¨bõk?m(«Woi IJΔ (¥à0H¯*£Ð›öØè%­ýÚÝ(±®LŠ¡Â Ah0 †õP+¯<×cðô¦ç]´ Àjôr€dô´iŽót?µi>5öî¼;ÌYêg”|HŸ™"ªý†9GáÙ{IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0laFunk.svg0000644000000000000000000000013213135434035022004 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.293315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0laFunk.svg0000644000175000017500000000077113135434035023662 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.M2mensural.svg0000644000000000000000000000013213135434035021534 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.293315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.M2mensural.svg0000644000175000017500000000062713135434035023412 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.rvarcomma.svg0000644000000000000000000000013213135434035022025 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.293315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.rvarcomma.svg0000644000175000017500000000100213135434035023667 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.hufnagel.u0.svg0000644000000000000000000000013213135434035022314 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.303315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.hufnagel.u0.svg0000644000175000017500000000114613135434035024167 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensurald06.svg0000644000000000000000000000013213135434035021603 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.303315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensurald06.svg0000644000175000017500000000220213135434035023450 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.vaticana.d2.svg0000644000000000000000000000013213135434035022272 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.303315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.vaticana.d2.svg0000644000175000017500000000074013135434035024144 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1triangle.svg0000644000000000000000000000013213135434035022353 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.303315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1triangle.svg0000644000175000017500000000126213135434035024225 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.flat.slashslash.svg0000644000000000000000000000013213135434035023713 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.309981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.flat.slashslash.svg0000644000175000017500000000151313135434035025564 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/CrossSign.png0000644000000000000000000000013213135434035020247 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.309981805 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/CrossSign.png0000644000175000017500000000205213135434035022117 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRСsBIT|dˆ pHYs  »¦tEXtSoftwarewww.inkscape.org›î<§IDATH‰¥Ö[ˆUuÇñϨHH’È`T]DÌ@z0²S *ʰpŒ @!&*“ ì)˺Yv!M0'¯„—Ê»b:Þ¦4oeMÞq.6:*Ž:gÎêaÎäžÓ9ûŒºaÁþÿ÷Z¿ïí½ÖÿE„©ŒÚÅá?É!»™úJD„ë±aܼŒå[Ù³žêy!"˜Èc\ "iiù€§®XM]Ró Ù¼b5[òv’¶¯yíZ€[©/¤ù+uþ µ4ˆ#´Næž«6Óû‹Œ ìNƒ±•ã]>Â-iÀ öP§’ûhKsl#2? 8šòm4¦é´3yUDXɦRÙž m"CŠA×ów)]ÔEû¨}•8]*h- —²1["ö$™©<ð4"LfàQ.v85D%±!7wŽxŸ Iàb>¿HÔÓ‰g‰yÀóÄlÞêˆé´âx´‘L39ëE|œØÎéÿwÑHv;qwÂL˜%³&Éùß«šÃËM´}•At'VçŠj6³#B ˆ;ó|Ç& pûó‹âKÆÿHëyb÷™ö^ký†eYbJžbjÎo; ém÷xp)-7%gä²8KÔ}ÏŸ—‰ål,¦Úì• ØÏ©&bñ±¦s Ä‚öŒ¢æJf—°(M7ž ï•j§\‘y‡'Ki–„FôØÆÙ4à\jг+zݤ\eee#{”•ý0Œæ ½[0ßçžÄK¨Ç½ôÏŤj¢x¦(ëÉÑd˼™»ïMüL<–Êe;_° ½®éõÎàÅId’­P–¸¿=¯ª«ˆ‡®Œ§]5t³šÈž"úèÃRÖ½}±C»E·%T_LÈ´Ü«EÜ@ÜqE¼y§ªˆ[‰»ˆ ðÃlét); UæjbPø›qc*èó;竈EÄÈœßí?‡YLO….fáå”–¸DTЀ2<Ý7—o;|´oðãSd?e|AhoŸ/Ñø»iJß|Á”J9gãòTu‚¦¼¶Äáì8­S^ì­¥:-~cÞ÷5ïÒÎ_ðFZ LbÜ¥½‰pD°‹¦bÎYb>+»²µíåB1mê´ žf_±ÝjÇÆDŒ(¹­á$» ÍŸ ³„1&Ÿ¡ßóV5üSAÿ®d^gB~õ×Òò Ïm™™LÛÊoûhZÇáÑ”wØa«i®%³sëX5–Û ùý À½ÍNù#{IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2ti.svg0000644000000000000000000000013213135434035021163 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.309981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2ti.svg0000644000175000017500000000101413135434035023030 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/Fortissimo.png0000644000000000000000000000013213135434035020473 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.309981805 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/Fortissimo.png0000644000175000017500000000064213135434035022346 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR.%=~ÛôsBIT|dˆYIDATXGí—Û Ã0 C—±ÿÿån‚&'¶’–º·\dËnéÊqÏ¡ù¿ºsÛ:þ:éRÊÏÿy ”^®¬¦¬|«°ä-,ƒW4K΀%Ã;¸fñî,™qÜÜeW8EÓ¶œ9Åöîµû¬ ¦›&²äµŠá§À=€ ÈFEÑ ô·›Ù·Š—˜_é0ÆŸrƒá:SdÕF5§‚c!+×éQ9ÃæzFã»­ã7¸µ´7&^ËÅ’>ù-¬¢ñŠ•Á{¯:“gpJËMͽ œsæ^\™UE3*: Î*-W4mn÷?'ºI¤h˜‘½”ãf F)šåàp÷#…2 Û 9n€Ì9°î)š^<< 3è‘ÛŠázë8Aã}[+§î…¾ÇͽlbEÓų8Šþa-Ê >áÀíø„y’ô ¿ ¨3{CÝrIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accordion-accStdbase.svg0000644000000000000000000000013213135434035022343 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.323315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accordion-accStdbase.svg0000644000175000017500000000175013135434035024217 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.d7.svg0000644000000000000000000000013213135434035017755 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.323315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.d7.svg0000644000175000017500000000171213135434035021627 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.upmordent.svg0000644000000000000000000000013213135434035022053 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.323315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.upmordent.svg0000644000175000017500000000164113135434035023726 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads_sM2neomensural.png0000644000000000000000000000013213135434035023301 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.323315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads_sM2neomensural.png0000644000175000017500000000035013135434035025150 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRäsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ-ðáJtEXtCommentCreated with GIMPWCIDAT8Ëcüÿÿÿ*&FFF² €éeb `A7™"¯Q-Œ¨ê5r#ê=kC6Ö¨Q ¾À5h(m­ ;=fåêIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.hufnagel.u2.svg0000644000000000000000000000013213135434035022316 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.339981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.hufnagel.u2.svg0000644000175000017500000000114713135434035024172 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.pralldown.svg0000644000000000000000000000013213135434035022040 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.339981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.pralldown.svg0000644000175000017500000000147713135434035023722 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2do.svg0000644000000000000000000000013213135434035021172 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.339981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u2do.svg0000644000175000017500000000076413135434035023052 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2doThin.svg0000644000000000000000000000013213135434035021774 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.339981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2doThin.svg0000644000175000017500000000077013135434035023651 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/ffff.png0000644000000000000000000000013213135434035017244 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.349981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/ffff.png0000644000175000017500000000207113135434035021115 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR>9¥ ysRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ !*Á—DtEXtCommentCreated with GIMPW”IDATXÃåYíq³0 ïueg¯àèfŽàŽÀ d2FðûË>!dl§ýWßåšsüIÏ£§÷ÞÃ\ÿ~~<ÐuÜn7hšî÷; Ãp‰ùþþ†ÏÏÏæëë+yþõzÁ0 p¿ß¡i¸ÝnÐuìû~‰éºî€†áˆño¬mÛ|Û¶<xDôƯ”òàû¾?a–eñZë*Lß÷ñ<xcL|†1F´­ï8MPJùmÛ¼÷ÞOÓ¢kš&ˆ£µÎb¬µ–e‰ßÏ÷¾1æØ+LµãÔiðÓ4‰ÎQ¦éyðëºFv$ g-¨}žçd †+-`ªç)¥âgœÑ`(ݧŸñ€„ý )Pã8öƒjø>ÅД¤˜bÇ×u==ÜZ+%¨€³~GQ=r^ .µ¡mÛlpy i)v\rÂ9w8㜋R’%å¥s.î9ç.ƒžëœ‹ÌqJ…ržç“­P“Ï©"F'JÎS&%ÃS¯ÔR»x éú¸ê¹Æ@DØ÷žÏçá3D­u|ˆ ”c <ŸÏS¯UJR*¾æñxˆ6P|Î.ŽADÙ¹wŠZªï¤$D?ä±´æy>Oõê°¤¢r?·Š&7)ªmÛ^NtÒªÅPæRZ-¦Šq)§k’c‚¹ü ‹wÚÆ²>åH¯´%NðªÊoI´•¶WÚÆ~,uI‚¡¨ý–l¥B˜“ì;©Qu;ûüÖZÇŠü[NÔÚUãWSQi¥¥Óš´øXIGËÒüÎÕ*©¿^¯“sQ}‡ ŽiÛ6Ý`ß÷SE¯b;Ǹ4‰å˜à Éõb©H]õûÔE&תçLXk/™Š”µ¶ªH)¥ªbŒÉÜ*Æyåz$ÏïÛÒå'×ö¤YÞËKPISC鯼w/˃B åEŠ0ô—\Þ»s¿Øp»J‚›tœæe0–æw¸}¥”ò›ÏòŒåùÍ™“žGó‹'µ“ãôr@#K§/^l¤Ë }Ç bT m¥;4UBP `®M^:NGÒ`,uBº…&B@Öu’åRNa–e‰{’\sv寿"©‡b¡µ>ŽÔÕ30¥”òƘèe&‡¡——T‹LÙõS§£ãÛ¶ykí\¥Ç1²¬”ò}ßg{|ß÷L®‚s»´ÖÙ_ºš¿ú/¤ÿxx0¡*BTIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d0fa.svg0000644000000000000000000000013213135434035021133 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.349981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/noteheads.d0fa.svg0000644000175000017500000000100413135434035022777 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/unmute.png0000644000000000000000000000013213135434035017652 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.349981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/unmute.png0000644000175000017500000000127313135434035021526 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR)<û{“ÞsRGB®ÎébKGDÿÿÿ ½§“ pHYs::þ6)QtIMEÚ  9,ð)Óã;IDAThÞíš?hAÆï8óG‰ÁÒ"©’B,,rBHe  $ š.ÂÎ4vZÛ™.¥…`¥A! A¬,!6 ¤ZÄKÈgá$,›äλMÞÂ>¸?»o|3ûÍ›Ù5Ix 3CÏ€ûQñ ¸ßËn•LFÅ»Šî ,»;–Šn [º€LúáqQMpxœïðZÞIšë¶åÌ'é ïûmÃÉ|íÚQ ©ÿÏ Õs-cïmÇèf3ëæû@_õ´ÇdRQ3«ÀPøùGlÈ‹À÷Nïæðý °\Oþ'6d­“nŸ{çÀô1§4c[зÞ´Ìrí?T<Œ+Àg Þ&g3}Ë72ZPO+«&»É[ÉËiåÌìp3(÷²k ˆ¨d=ä1à6ð1c>Šî“f6Ì×¢šiD%1”Ë{L¡èí-dµ”%d YB–ŇüUÈ{ÀS`=úº7‡¢wx üŒR®å™ÈwxÖâ>!ykagâ«[ÈDþ¾°´ørš•y»ñ¿-é0 ÌŸÜú¤¤]I‹ÀU`øàÖÌ%íIZ ›Tw€U·3ŽþÅ Iuà° ì;.§EI¯$ÀëÜN‘`—ƒ¢Å,0²>üÖI@¾Ík3ì7FK??1³ ¸üë7°4Ã!=À%` ¥`CÒÖ‰@Ѓ ÉeÑë ð¤GÀâYW)éõ!óüòR¹9;þ©%DBv%²IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accordion.oldEE.svg0000644000000000000000000000013213135434035021300 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.349981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accordion.oldEE.svg0000644000175000017500000000260013135434035023147 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.g_change.svg0000644000000000000000000000013213135434035023013 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.359981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.g_change.svg0000644000175000017500000000244013135434035024664 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1fa.svg0000644000000000000000000000013213135434035021134 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.359981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1fa.svg0000644000175000017500000000100413135434035023000 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1miFunk.svg0000644000000000000000000000013213135434035021777 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.359981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1miFunk.svg0000644000175000017500000000104713135434035023652 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0la.svg0000644000000000000000000000013213135434035021160 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.359981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0la.svg0000644000175000017500000000076513135434035023041 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads_sM1.svg0000644000000000000000000000013213135434035021042 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.369981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads_sM1.svg0000644000175000017500000000213413135434035022713 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/zero.svg0000644000000000000000000000013213135434035017327 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.369981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/zero.svg0000644000175000017500000000105513135434035021201 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/Piano.png0000644000000000000000000000013213135434035017403 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.369981805 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/Piano.png0000644000175000017500000000041313135434035021252 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR!2jÝsRGB®Îé pHYs  šœtIMEÚ 1þX‹¬tEXtCommentCreated with GIMPWxIDAT(Ï¥’KÀ C“Ž÷¿rº¨ZDü´ºqæABaq.œÉ>@9¢ÈS-(Ç‚€Z¾Ù²øe¦úÄ‹b·„væÁ DíT_gʘð"šÔ`¬ÂzÓ¶–†ùˆðÞR÷³ ·:ÚBîÍT¿6ùÙBNªP¾ÏÜu6®…=IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1solFunk.svg0000644000000000000000000000013213135434035022206 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.369981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1solFunk.svg0000644000175000017500000000114213135434035024055 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.vaticanaM1.svg0000644000000000000000000000013213135434035022605 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.386648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.vaticanaM1.svg0000644000175000017500000000114213135434035024454 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2faFunk.svg0000644000000000000000000000013213135434035022002 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.386648472 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u2faFunk.svg0000644000175000017500000000075513135434035023662 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2faFunk.svg0000644000000000000000000000013213135434035021761 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.386648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2faFunk.svg0000644000175000017500000000076013135434035023635 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/pedal.d.svg0000644000000000000000000000013213135434035017657 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.386648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/pedal.d.svg0000644000175000017500000000120013135434035021521 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.neomensural24.svg0000644000000000000000000000013213135434035022506 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.396648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.neomensural24.svg0000644000175000017500000000125413135434035024361 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.c2.svg0000644000000000000000000000013213135434035021564 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.399981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.c2.svg0000644000175000017500000000146313135434035023441 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.sforzato.svg0000644000000000000000000000013213135434035021705 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.399981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.sforzato.svg0000644000175000017500000000106313135434035023556 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.ushortfermata.svg0000644000000000000000000000013213135434035022722 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.399981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.ushortfermata.svg0000644000175000017500000000117513135434035024577 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.2classical.svg0000644000000000000000000000013213135434035021527 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.409981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.2classical.svg0000644000175000017500000000106513135434035023402 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.prallup.svg0000644000000000000000000000013213135434035021515 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.409981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.prallup.svg0000644000175000017500000000153713135434035023374 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.0.svg0000644000000000000000000000013213135434035017646 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.409981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.0.svg0000644000175000017500000000071313135434035021520 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.2.svg0000644000000000000000000000013213135434035017650 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.409981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.2.svg0000644000175000017500000000147213135434035021525 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/LargeZero.png0000644000000000000000000000013213135434035020227 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.409981806 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/LargeZero.png0000644000175000017500000001041613135434035022102 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRXi‡ïT pHYs  šœtIMEÙ âfÊtEXtCommentCreated with The GIMPïd%n„IDATxÚíÝyt”ÕÇñ; d#l‰Y²ˆÈ¾*KAPÜ8ADŽàFm-¥žc=.UàT¸´þáÑ "V«m)TA(¢eQPÖ€ì ö–È$“éj«v’<ϼ÷r¿¿¿ï{ß{æ3Ï}÷÷ „ I¤$ñB„ RQjø×uùÁ={Ž/(((8, ƒáÔÔÔÔŒœœœœ­ZåÖä·˜€'K¿^·nÛî½ÁJš$7¿¬[nðäàÒO׿…]5øÚ ørzñÒ¥[µ µ¾ö–þÉ@Ø95oÎGÁèm0rÔ•ì]X)}ÿÍEA/´|`\}4lä¿6ýçN2ÆLh‡ ÕSç…ì fÄ$H<ƒ¬™²ÀâhnÔ/Y;i¾Ýñ$OœThSðøtûÇ• ÿ0*H4)ŸùH/cºæ&€è³uìj¿Uڭ΂D{<žÖÕ7S8rÜ*D•c÷Îów\WÌ»yVŒ8ì÷À²fdÊ’æÏ}÷0'¿ˆ,¡‡ï Æ`d¡žrñFpý”U|ÛüX î·Ï©*g†|»ÑýüçÎÊk¯©Ÿ¼q•ø»o—v¹ ꤆ÎÝ»eõ²#QŒnZ­œ«‘°*Ç» »m9ecù– }ñëh.xL ;È鮲ŸqÀÇ¡K¿ÔX/ò: §äÑoØ~IEONSï.¤¢„F‹¶JS‚•ô±½‡V${/ ä!Éï×heå£éZ Hļ.ùõ:ª²ŸéÚ]Ù;]‘‡¬í]Ru£¾ ×ûfßQ¦ùÛ( ÿÿÜR·½U7êþ/Ñõ×¹#ÊUƒ¬ŸçÎ=§Òé£|ŒÀ£ù‡²ëáÔç ï ò“<·°ê6äHO‰<¨åÂLY?Φn¥‚³òcÅ«-ü‰nÒÚ~òƒïxŒ”{˜ogé&­Ç˜²~˜§× à^Ò¬·ÑtÝ8g¬aÊú_¾ê%¸WtÆ=º5Ÿ«jÞsU ßïaõú²êF]Ö(ò8py‘ªý¬‘LYße¦ÀÃ<£}覉r³ðdòݵÍqÁŒò¹úJÒ¹6TígÞE…|û×x˜'ôWöÒ'ëÚO.¡BŒ1fSgÁy޶[¢¸ÔZÚúUû×ï¦BŒ1JÎ;MˆæÒwÍGtíŸ/§BŒYÞOÐKüÌhV^ܤPÕ~îÍTHXô/¾=*“¡ÜLOeÊ2 VHz¹3ʵÓ5ÿbó á'%´º*ʵwè¬kÿ'çA>^'é䶨ïfS}ÿ½ÐuÙ¬=,êÕߢ<–|Óñ½¬ÏEsQ“}ÑßïÙv›ªyû§+äQC=üHCtÍó6:=eíú@ÔÇ`ë¿^Ùþm§A^]ßMàaý}RuíÿräÜLQ=ëzXz]ûƒË™uBÔÅÏ<  ¿²ý{ƒ*¶ Õü­Jv{ó:g‘†^p®n©n5Ý]­¿ÈzÈõäaÒ»0gÉ@BïÈzèæqÚo¾« Ëòe=tò8‚^ÊöŽ: "œ±<ƒ¨©Zâ&HPz[G#hYO¹Àb7A–ž–uÑÜë~žv«¾8ì$ˆ´@Úx>ýªÉßå"HùûRÏCè¬]`…‹ «¤oÂhíy€ˆ_礭ö®à•.‚,’vàýk©—)Ø\èÈ‘õÒšyƒúýâ«Ý|%5ö>†Ëµ ¬sDTÈ^!A*Ä_z€Ø¨{ÏÍhŽ+Äߤ(^¢²ÂŽ€_(Rˆ¿?Km@l€Ø›8êäl¼~@lÊÊ$±@’kbÄâCJ€# çã’émàÕDy\ˆÏ Á¸UˆrÊJÄç ©E…Rý@,žsÍ$±@؆P!Õp·×"H: ¤üBIuDy>½ÄÞHÒ±P!A*¤Ú‚P!6@˜²ª/H* 6êçI¬ 9oo$Ê)+Å7å_>Ýå•Q‹S–ò=6µIŠˆrÊ$±*Äå9»b*$±*¤˜ ©¶ 5±RD…$Ö6älÜ*¤–# ) H=G@”ÇËEqÉÄgåÖ«> ‘rÆÞH’±° )*S…dÖ¤B|Þª'Q 6@NÇ $Ë´¸¨H ÚàSqÉ$±*¤! ‘s2N \Ñ^×Ûƒ.¡Bü®’X eTˆ Â88S!Ú×V`ÊòD{\Ÿ ÉJÄï Qä@ªBšâ;HH Ú "ç©_AÙñ*@"‚¨ç¬ã¶F¢ºç®©; ÚCàc¶FRˆ£ñIkHB´L¤¢±5Íí­ ¾ƒbä0 €8¢=ä:ˆ¿ u”÷ù±õLÅm™ÑžÙÛš³G˜í€Tœü؃t0€rÁ€ˆÃ”åH eûí $xÈ mâS!ŠÓø rœi©Ü…Ùó«“q $]¹ù&æ =ÜÑÎYí¼™ô( –@Âv¶êû©ä2e{¬ D>ó5näˆv§rwŒAªuDéHbd5Ñu±ÓÆ8Â{ÅM{»¢-+ âÛ²Rz9¢<ðÚiã“Ñò«g:RyÎŒ)HãHweÛ,Œc‡¸åÏÜi©¼áz«…ql–6LîíH §®¯c Ò=Ó=£ÜÙâ}!q×@¬ý»+Îñs?7¸¢œ²ŽxFDlšÝÝE¬+tlŒÈàdAÌ@]'<#«R«u¬÷<Œ/…í×¹ Ò_w]}­×Q—ö»ØM,Ýé¬-^?’ð¹´áã&ˆr#R¾Îã(VIwä&]/«cÒ§±« }ë¨zùÂÛ Ê¤ Õƪ$å:_þáíô ø Üâ,ˆ¢êeŸ·[– Û jê.È ºß{ćÂvwwAr¨ºùÔËÎ —®;Ìas»ª›¥^ưTx3ê¨t—A†«>A´s/3–Ï Ùºý¬£BXÒ¹§Ó f”/ÿòÙ,¼ÏzbÀm›U¯_ýé¬wdÍrF·A2Gkú9·8Ú„Þ–µ»?ÍqsŸª£D}T({H±æ/Œë ]»j:šíœõ–¬Ùè†Îƒ˜ñšŽŠÞnEÿ5K~Ü2Fõ†ÒÑ `¶ìÄâèV€˜ZhzútS4ë/A6LW ¤ò¯þJõ ‚?F³þ²[ïhã H Ò‡;îŸ¦èªÆŽæú£ô¾+E»X[ZQ!Æóæ¶´²©úÕ/y˜ ÎxTQ!fükšÙ¬žXn\(i•½£¾¡BŒ1Æ<¡ÙŠ”=¢]û"‘‡™âŽGU MUÇÇs—èVœ jvùxÈ÷yTuŠñ—º¯‰¼¸]ÔlZM@þ›‹§hzÛ1YÓúÀïeÊýò¨j£nLiÍó8eòg2ˇ.4k²¹Ž¡B~pð²ê¸b´ü5KÏŠ<Ì«NyT búQMC·I_¬üÉïDÍî¹É)ª§,c Ú«Þ•|ïtÑ¥Öƒ]DµÔnM†¡B~rX¦;;Ct°`ˆÈ#m–c&Y°_Ô&_õDÎò’AUÖȱA²Çà^¾Á¸–° §•§’Æ«èð°ð%iãÊî% z•Ϧ+uh̪ôѳ #eG„ý§:W ²¯kuP^\Ö±’û´Ê_ì)ó¸ô]÷½:·hZ;­èè±£›–¬’)eÞuʳo஘ +möHUÉ´-F£ªÿAHÕ9rM^LÕô£v®zÕW~,‹É+A;­t×Cb²ÝíÿÆ®lb‘îüÌxÎçç˜R^}#ÃaÝ6äÛÓ"cò}Oëwz§£ÿRü€ Cýû{<¸Þq(*ĘðkŸò§<Þèc\OR4ˆã·úñf­§6àU…cÌ¢‰[-dÜÓ áˆ®BŒ1fð¦™ÍlŽcèW3ñðR!Ƙ’iÏ[úÊgÒÈÇ:@áĘÒ9/®ñ>„zc&¶ ˆ1á•3æyê¡ß}#Òa°bŒ)~ï­%¡(—í6|D ,ƒcN.š¿PýBþôÞC†åà ˆ1&´~ÅŠâs*™½ è™Â¯ï#ˆ1Æ„÷¯ÏËËÛZZY›ÍÚuêÜùÒ$~ù€|W+‡÷íÛàDaaá©’ÒÒ`YrJJJJzVvvÖEM[´hœÌoc—#u  @ €@!€B!€B„ @ €@ €@!€B„B„  @ €@!€@!€B„„ @ @ €@!€B!€B„  @ €@!€@!€B„„ @ @ €@!€B!€B„ @ €@ €@!€B„B„  @ €@!€ÂO @ €@ €@!€B„B„  @ €@!€@!€B„„ @ @ €@!€B!€B„ @ €@ €@!€B„„ @ @ €@!€B!€B„ @ €@ €@!€Bq-ÿYöEÎÄ­EIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2tiFunk.svg0000644000000000000000000000013213135434035022007 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.419981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2tiFunk.svg0000644000175000017500000000101413135434035023654 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/OpenFirstTimeBar.png0000644000000000000000000000013213135434035021512 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.046648472 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/OpenFirstTimeBar.png0000644000175000017500000000000013135434035033414 1denemo-2.2.0/actions/bitmaps/FirstTimeBar.pngustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/LargeNine.png0000644000000000000000000000013213135434035020201 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.419981805 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/LargeNine.png0000644000175000017500000001133713135434035022057 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRXi‡ïT pHYs  šœtIMEÙ /sD¸QtEXtCommentCreated with The GIMPïd%nUIDATxÚíÝy|•ÕÇñs“¶„–@’Ð&PYD ‚K,1âµÀŒ .c¡Ã8EŠb…ª¸”P«X J,È*àX$$ìK ÈvïíêÈ ¸Éù=Ûe8ŸïŸzžçžw~çYî³ø‚Š\I‰`B„  ÄJ¢\X§ÿPQÑ¢§‹‹OWTTVTE×ŠŽ®Ý0>!¾QJjjj‚­^M|Ž^~îß²s×—»Ëªk›•Ý9‘Mï6HÙÆ5[6ŸÐmÙ­{ÏvÔŠ[ ÁmË?\W&]*é¶[û6‚Àqÿ†E‹ ­Sô|&Ž‚ìš—wØÞaE¿wÖÂó¯½ò±ƒH92 û ‡^xñ„CÈüd{0ìì›2¯ÊÉ‘übb8¬ƒN[åôXýw Ö@Î<=³Ò…ÁD?<1 ǹ¯þæ¸KÃiü?ƒ|€³mÄ'.èçH1D|µ·|Òunz¨¥ÙyTˆ¤<†ît}L÷ÏŽ¥BôüCW÷=ÔüΟQ!Z9ý«EÞŒªîü»©š³»«Gê|î” RSV>ãáÀî›[‹ ©6/äxé¡^XHu»óÉcÞŽliηLY!x|¦l½iíÚµk× A½ŠsÇïݹuK¹|lÝÞ$„ǃ/ ÖÕ«ÿVŸO®Yò–øZ}ŸeuÌ j$0V°Â¦¿=vùµ”¿ÕM:¸•AÓ¢xB0UÍ-«fEù…"¿ ri¦io¿ZJ«_•ÿÕ8™È4@.É[Ú[¯û®š×Vt³l·‹²¾¶îÆû—r«&ˆDêo7 ¤Æ£¬4ŽjÍ¥¹ÿ4Ò/i³5†ÃS1H×cñ(í=õ"ÉU‘ÝsØ{At·FÔbI].‰” qûñÝ·PÖíK˜}€|Ÿƒº7L–öû„Dä– ßÈݪ¹ÅrüÒ~+{IDþÈQÖwWÜÇèm¯–Ÿ&ˆ÷]‡Úë7n¸3‰£,¥ŠÆéþË=TóقƧÍa¯Rê±³š?îõ±Òóþ‚Æolàò»Zž£·Š¸/›Yêz_öyýÆ]6E˜^!åº×ÜkÍC¥KŽ´¶ä_!ÏiÎÛÍ ¬þŠTÒJð“UòÞÚfWÈé)škgùW½ã‹^6¼BÆO×[A“}õ,w~¶å)ýÆIuM®#³4Wð¨u#¹nxøE£+äßžÕ-²sÊv$UðÜO³ÂÚæVÈÉ4—¿ÝÖ)t³{$z6xÊšUª¹üöº%iüœ ÷û^~Ê:—¬y¡©Ñ¡h[ÝZ ZÐ×Ô yC÷Â_ÿh›Ý“´~ÞÔ)+¨}á/Çnÿ’ˆZ~ÀPºO0Eö³ÛvÉ7×P9ºK÷hh{6@Òú#AÎþEwé[í@4éíÿÀHE¥Úb=D÷–Î7Dû_íëlQ?“´^rÞ@Ãùº g5p`½%Ͼg È_µ÷œ×+¯AÔ›‚,Ö^ø:'F-znmi©q %Ú3–jëÄ"Euv~•q ïé_Ïtd]E­—²B{Ù:-BGQë÷‚†õç„VÎÜ™ÓAÔúà6Ã@öÔ^ö'Î !£>sV5 ‚f²CC¸FÔüo†þ½ƒì`mC…Q ÁW:Èù-FòD¸/ZmÈ&å=Hº¬ù@B¤Qx@>˜ò©`Ùú!QvhɃ@‚;Ë:u#¡¯¹¬ýƒ@Žž,íÔ Z ä † QÂÛQ7"™±œ«ááÚ6¿9 _I–uì=®Â–}mˆèŸêØ…péñóßÍ),ëØE%écî_â/”,[îÔ â¨ EUa©X@B€Ta‘ÞÞµ7h ÈQѲŽMYÒk0ç˜r$< â'Ý ¹\N‡ äkS@dS–Sß]•_ƒ1¦BŠÃ%]`Ÿ) %ቔ.p@þ€wg€Xqìl@üÝé3¥†€œ ÏÁ§üËÓ‡ ‘ý©:õC‘üÌC@dª•ÂV!§¨7ÏÏ*q¤BÔ^@\Þø•Cƒ8Há Áç B¾yO"¼¨´Õ¡»l‹=XÂ3á9ÈåK$\S–)gêuÂr Ò·793ˆýLY!@¤_ üØ™oÞR!UˆÿÃ0Uˆ) â÷_­tb ¥ò}H•! ‰b'nY³ð ¹³¿ÏûmWTˆS j¡cøP ò'ÏÃbÊ”%Önûç†A*$$HŠ|öߤ[háî• ¡òçJ»CÈ·°L-C@ä”:nûÅ­V^keˆÏÂKâ¦Ûœ>V*$ÒÕZ¾†+ìà³Tˆ£ jº½XúÔ Õdµ­/9û_¤öVÖñ˜ŸÖ×Xºqºž) ÙVþô¶Ì³1€?YZª¾) µ³¬¬äÉËýó Õßûý}Ž>e¹ÿU€T ÒÝÒZžÏ·Øýq‹åŽ1äKk ÞoñiªÉ?adN…dYûÞá,¯2Ûâ°ÑÓÚz–M³rò ÕæFÆ€(«ßîœ`á+œÏXþ1Å Ëߊ¹DºÄʉ AZ§Z\S`°ðP«`HšA|ý­®ªüöù­‹Ùæ¨NžéÇ,»ßÊKxMQÓš¸ßyÓ5·(@4A~ïzß™:)%ý¬R*)ÞDuï@—»îºþ»£¥ƒˆˆoN’«=ß‘ÿýSñâ)«½™ *1ÏçbÇ#ÿp;¨øúogCAT_/rÿçË?<‰òm NLÕ]æ¾ãÒŸÁ‹?UyôXùL„¡¢|óÜùc¬»ø‚³ñ ä;^Í5¼:9f™—}xáÍxb딹 ªéŠfŽw™¶¾›²ÒÅd•¹ÚéƒßŽÛ([ 7 ¢Ú¬Nv´Ã¾k.ª¹o„+HI5DµÞÐÎÁþî[vñ§¡ …kè© Q)k»¥`\^ôEÿ% }Gì Æƒ¨†+íÐIÏÌß]Òß‘ *D ¢¢ž]èÄS–Ño>ré”~ê-¾ J©ÜöÓ{ÿe¤O$ J)•ºjf¬½žZ®»I9ÒOò]ÃG¾b§£ž›/?×H¿cÕÒüµÖw¨â'a!Hz+@.ø+ÿh™µ›L›¯œâ=¢Á¯(ë Ê—³qí/Ä?[EŒÙyK¨ÿwLø(nÎÕâ“?!°î\ÑåŽÛ~÷ÓÐÿsÍÏD}×>YŸ ¹äp驯WÕ}†)bà¦åÕx¨]²¾o¾Ú=¬½M2ò¦›f~òÁªõ5ždg VÃê;d=÷¿Ú=¬LYÿ—²Ï7oÞ¾;”JÓn}nϬq7}$êò@2 5ÄÿõžoŠŠŽž.>]VYሬÓ ±IjZÛv-tvþÁÑN½Ó'W}…Ø~ndf¦¥÷˲î¹ê=T˜oøLÖ| .Gö³.€¸œÍ¢Öƒ¯~û;u[ $ˆ>úM ânv‰Mx¨Áfx„d¹¤ñC ·ó® mçëq;$Ÿí~ÔÈ•T ÉC ng‘ í¿Ö2$|‡½ÅMô¿˜w – q;ï ¾`8Æ0‚f¬:(@ÜNÉ2ý¶£›â~”i7­;NâzP WÔQÖádíÏUÕÝ×” q=¯ë>l¬Iáª`Û=ºMã ââvVk{¨ßå.9Ú-[>¤q=Çô_8µ6 îç…JÝ–]†˜åžúù–Çu‡·ézE…¸žùºj„ia©@ÖnÝCÞ=‰Š q=‹t=Ôã<ÂQ!ºÏBwÙ©¨×óŽ®GÔ«æy„$ð_º-'´7Ï# SÖë÷i6Ìú´6 æ›k|ë»èáý”õ¼î›„Æéáy…ûÉ·z ;|­¨÷3AÓ£Îkfzx ²îU͆Ïd™éáñ”UÑq§^ÃÛ—ùâ~fhz$ç™êám…ììT®wŠþQwS=<­Êazês=<™¢ù>¸»5×ÃË)ks¿V»ì ñ §:é}º%aK†ÁÞMYáz‘ öðäÙ¥zífõ1Úó)kÅz7ó>ú¼ăü½‡Þ'ˆsߌăïºO«Ýï×1ÜÛ}ÈÙ;õ<²–ïá Hù]›´Ú¥­ˆW€¸ßEÕP½÷bµÈOÁêáz·º7Éπ×ñ×”Š{õ<VµAò\½çÑ?h† '¬Ój×,? @öæè}/%? vêk»éyd|„‡ Á½Oj5ì¼! ÷§¬3h¾ïç¶…18¸_!«;hzüê¯x¸rî±Þ…z-Ÿz¥ ®OY+ÇîÕkX/ïn \)|\÷mq-—\ ÛSVñ“×èzôÚ‚‡ÛR2ûí7º{šÝ‡Ë ÇfÏÒþtgBÞl~wA>ÿßåÚ»¿É¯®‚œ}{Î&ýÖ&1]¹â_3a© }f^76½k þõo/<"ZbÌôúly—@JV-}÷„l‘ô9ýØî®€TnÍ_µ¾J¸Pä“ê±Ù9±uÓºçäË]ÿç‚v@¦în•‘Ö2éÂVgöîÙ¹c[¡¥Þ'Šd›W›êo%=˜Q¡”RM›5Ihí//9uôÀëøOjÈ·U!Ó+”RJv «;žkÍö¶W!GÒËë¨ç”^lm»2Ã1NOßæccÛ­i¥ÎtÒqâ@8¨ß;ãÑûßûÁáȧNTà€ñ]ÙÊ‚T÷‹á’±v×^wôîwðpð denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/brackettips.down.svg0000644000000000000000000000013213135434035021631 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.439981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/brackettips.down.svg0000644000175000017500000000101213135434035023474 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u2tiThin.svg0000644000000000000000000000013213135434035022027 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.449981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads.u2tiThin.svg0000644000175000017500000000102013135434035023671 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.arpeggio.arrow.1.svg0000644000000000000000000000013213135434035023123 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.449981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.arpeggio.arrow.1.svg0000644000175000017500000000124113135434035024772 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/spp.png0000644000000000000000000000013213135434035017137 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.449981806 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/spp.png0000644000175000017500000000144213135434035021011 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR&¬GîsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ 6Åá7tEXtCommentCreated with GIMPW}IDATHÇÕWËq¤0l6—Eøä³NÀUr8M¤  a&æ0ˆD"„ÞË>JH€§j÷àí*ôúý_‰Š$ññ ?ÿ‡aã8âýýUU¡®k|}}ažgœN'Ôuº®q:–û·Û­¸?MÓr>M>??QU^^^p½^—³óùŒ···B×þ÷žJ)j­B ÷žøúúJ«5 ­µÅ>*¥c\øò³»®;”%ÉÅ0cÌ¢T }ßs†å»i 1f儬®ë¨µ¦RŠÞû•"k­eŒqÅ+²+Ãòƒðéé‰$Ù÷ýŠ@k½x—ÊàóóóÊIqZ–µ–)Ò³¦iÖ†‰'¢ôããƒx¿ßI’Zë"q"]mÛ’$cŒ›ŠÓÊeW†mÕ„ÖzSqN~¹\ rçÜf¤e_àœ;6L¼Ë‹:ÆX÷}¿"Ïe$ý[‘NÓO²h‰4ÄãÔ“Ôa rïýŠ<-ƒ´†òH‹Òy–DéaªP.Þï÷ÍP ò®’‘°•Ƽèó4ãBZ?/ȶm òܰ¶mwÓœG:5,ÆXD:Í$ÏZkÃ@ç•RË ÊÉ%²1Æ¢>dÔujŒ‘!„C£Ãr%]×1„P+¥Š™$ûyClͽ-'•R¼\.EíØëÆs´ÖÒ9WtÚV¥~½÷ìû~‘Ýáa9¹õwønî=‚ÝgÏ4MÇqùÖZ£iš‡ž,é+Œ1ÿî=v>ŸWßmÛ>Lú7²‚JžÖó<ãz½bš&Ìó\+¥`­…1¦ˆÜ8ŽK”n·Û*Òí®ë`ŒRê1Ëö }o¥ónozï­¼sPýÔŸ‘ß:&D:#b•ÌIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2doWalker.svg0000644000000000000000000000013213135434035022317 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.449981806 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2doWalker.svg0000644000175000017500000000077113135434035024175 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.mensural.u2.svg0000644000000000000000000000013213135434035022353 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.459981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.mensural.u2.svg0000644000175000017500000000125413135434035024226 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2miWalker.svg0000644000000000000000000000013213135434035022341 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.459981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2miWalker.svg0000644000175000017500000000101413135434035024206 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0slash.svg0000644000000000000000000000013213135434035021676 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.459981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0slash.svg0000644000175000017500000000102413135434035023544 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.arpeggio.svg0000644000000000000000000000013213135434035021633 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.459981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.arpeggio.svg0000644000175000017500000000123613135434035023506 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.caesura.curved.svg0000644000000000000000000000013213135434035022750 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.469981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.caesura.curved.svg0000644000175000017500000000123413135434035024621 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.mensural1.svg0000644000000000000000000000013213135434035022530 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.469981806 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.mensural1.svg0000644000175000017500000000162713135434035024407 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.mirroredflat.svg0000644000000000000000000000013213135434035023313 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.469981806 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.mirroredflat.svg0000644000175000017500000000117713135434035025172 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.vaticana.u1.svg0000644000000000000000000000013213135434035022312 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.469981806 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.vaticana.u1.svg0000644000175000017500000000073213135434035024165 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.neomensural98.svg0000644000000000000000000000013213135434035022521 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.469981806 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.neomensural98.svg0000644000175000017500000000122013135434035024365 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.u6.svg0000644000000000000000000000013213135434035017775 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.489981805 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.u6.svg0000644000175000017500000000156713135434035021657 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0solFunk.svg0000644000000000000000000000013213135434035022205 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.489981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0solFunk.svg0000644000175000017500000000114213135434035024054 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0tiWalker.svg0000644000000000000000000000013213135434035022346 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.489981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0tiWalker.svg0000644000175000017500000000100213135434035024210 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/BracketedWholeMeasureRest.png0000644000000000000000000000013213135434035023400 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.489981805 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/BracketedWholeMeasureRest.png0000644000175000017500000000135513135434035025255 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRA5D†’sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ öÊ~{mIDAThÞíZÁJ[A=©ÁMwBÓŠb,M£ ¢+Ý(B)¡¿ÒU@hºtáJHÝ Ú‚Z¨? ¢‚¸RÒÆÚËHÒ$nRˆ×Ã{“÷^êÜ8Þæ’œ9÷äfæÎ›"@@½éÙµ@ÓžÐô±ƒ½Pn¬ m ã -ÿt•¼j×`ß„ãëUhîT貤`Ð"^ø+4.z}!ÖøÐ£Æ7¿·ŽQf_-Öº+´FAº HëÞXlB†è KúEtYlB@QhÞ C˜P„+ þ¾Ÿ„æ*€¾ dHiM(0a†è~”ì\]*™Èc~ í§AˆF‰›«ŠV´5¢?ÕjŸ°DbûŠLØ÷ËÉuŒ®c4Ãù?…Ykë!Ÿ Ø"\㦕0Ib§ Ì›25a„Ä.špá•›Ÿ ì=Á•B®¼ró3!ÙÁ&$›7^xFb×!;¸‡Óœ0­„§$VRX %ÃÜ(*diéRhBœäQv£ë[C‘”QBaÏI¿L+á‰õ(4iþmjÂëWhB¿Wn~&ä;Ø„¼© g$6¤Ð„!¯ÜüL8 ±´BÆ s£èp#fÕ¼BäËÖ’Á–ᾓåå…"z‰þ=¹¡q£ëÍ!_ ¸-nuë^€Ïá‹i%|&ëî´fH°”l÷d³ L`²¡š½m²‰[l@äGó0O–š·›À.iÌEA|,Hw,6A^×9ŠŠø ®¶Ð€2‡e¢\rŽyÎB6„Æ¿¤\ÇèúÀà°õ‚÷î_ðNµsÀGÕß¡Óp ä“b;\^çIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/SecondTimeBar.png0000644000000000000000000000013213135434035021014 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.499981805 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/SecondTimeBar.png0000644000175000017500000000037013135434035022665 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR$&¬È9“ pHYs  šœtIMEß þ«1Ö—IDATXÃí˜Á !D›èÿÙ=íEZÝSh denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.M1mensural.svg0000644000000000000000000000013213135434035021533 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.499981805 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.M1mensural.svg0000644000175000017500000000062713135434035023411 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2laFunk.svg0000644000000000000000000000013213135434035022006 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.499981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2laFunk.svg0000644000175000017500000000074013135434035023660 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.dM2.svg0000644000000000000000000000013213135434035020743 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.506648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.dM2.svg0000644000175000017500000000132713135434035022617 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1doThin.svg0000644000000000000000000000013213135434035021773 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.509981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1doThin.svg0000644000175000017500000000101513135434035023641 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/sf.png0000644000000000000000000000013213135434035016745 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.509981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/sf.png0000644000175000017500000000122313135434035020614 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR¹Q 1sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ !Ìš‹tEXtCommentCreated with GIMPWîIDATHǽWíê0œ<]¦„¥„PB(!-˜B ´àB ¦S‚)Á)aÞ“#@Ž+E ÇöxwgÆÐ$>ÿðáx;àívÃñxÄv»EÓ4Øl68˜¦é{ßÃ0Àüt]Ƕmçï$ù6@­uæœ#I†²1üEfÃ0Ì`1C´Ö¾8Žc€Þ{’äétÊÆC¯ŠH¶©ˆÌï¼÷óxß÷¯÷ÐSe§µÎæxïiŒaá1 sŽ]וRÔZÏ Ê~-=ÖÚjï¯RG×ëûý"ï=¦iÂn·c "èºp¹\*Æw "µPËô}_.ž8 km•QÔÚRTNs>Ÿ³OPJU§ý)»‡±Äº¶m霣÷~¦zŒØã{b_ Ü#ŒR*ÛÈS-,ç¤rX¢dcdi<ÔOrx pÇ,›Ô)R•€ã8®ŒeJ{QÚUÊäGx0µ ´t%ÝK;K׬ÔZ³m[ZkiŒ¡RŠJ©,ãÔ×–³ !d÷šÖº’CéŸÏ²s‘¥k.Ú{’ù sŽ"R•4íßÚìS&FÒ”ý»wü0nª”šË–šAüñ6À¨ÉÈÀÔòž¹VÆlD$3ê¾ïŸùj–Ã0“DDV3ò^4Ÿþoñàs0G èj»IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.u0reFunk.svg0000644000000000000000000000013213135434035022020 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.509981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.u0reFunk.svg0000644000175000017500000000113213135434035023666 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/WholeMeasureRestRH.png0000644000000000000000000000013213135434035022025 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.516648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/WholeMeasureRestRH.png0000644000175000017500000000037413135434035023702 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRA5D†’sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ  ±Ÿ è|IDAThÞí×A €0ÀFüÿ—ãÝC/B«8y qIÓvü=Ç @€pO^ö=Õ„]M0–4 @°5ašsåbLž¯m4Áï‚§´&@°5ÁaÔ @€Áb´-F7 @°-F‹ÑM€á£¹tüIåæ9PIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.downmordent.svg0000644000000000000000000000013213135434035022376 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.516648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.downmordent.svg0000644000175000017500000000170613135434035024253 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.dsignumcongruentiae.svg0000644000000000000000000000013213135434035024110 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.516648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.dsignumcongruentiae.svg0000644000175000017500000000160613135434035025764 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1sol.svg0000644000000000000000000000013213135434035021362 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.516648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1sol.svg0000644000175000017500000000134713135434035023240 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.cephalicus.svg0000644000000000000000000000013213135434035024411 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.533315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.cephalicus.svg0000644000175000017500000000112113135434035026255 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.ufermata.svg0000644000000000000000000000013213135434035021642 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.533315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.ufermata.svg0000644000175000017500000000116513135434035023516 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/OpenSecondTimeBar.png0000644000000000000000000000013213135434035021636 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.499981805 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/OpenSecondTimeBar.png0000644000175000017500000000000013135434035033664 1denemo-2.2.0/actions/bitmaps/SecondTimeBar.pngustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/four.svg0000644000000000000000000000013213135434035017323 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.533315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/four.svg0000644000175000017500000000142413135434035021175 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensurald23.svg0000644000000000000000000000013213135434035021602 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.533315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensurald23.svg0000644000175000017500000000114313135434035023452 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.flageolet.svg0000644000000000000000000000013213135434035022000 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.543315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.flageolet.svg0000644000175000017500000000104013135434035023644 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/CheckMark.png0000644000000000000000000000013213135434035020165 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.543315139 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/CheckMark.png0000644000175000017500000000175713135434035022050 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRСsBIT|dˆ pHYsPPûå"„tEXtSoftwarewww.inkscape.org›î<lIDATH‰µ—]lÓVÇÏMìø†2Û%.QÜŒ¤I… µHÀŠÖJ«¶!Pµ J &¤¶B‚²i}ß<À4:>‡VÐÆÒB¢b/tˆ"TDAZª²¶i“¢Oi°c›"Ütqä‡û?÷øçstt|/èºV?@:x¶{ø\~,6„ª<]ù ½ŠÞDÎ#hgÏ›/³Ì‚Gƒíl{h©‰T:ž¾HÄ€®xo¼ÇRhùŽr·ë'X‚Ëö©1u<ÑŸèùa䢥å¥WÑ?åŽ W„µá3áÇ6«€žVO-â¦l=OÇÄâÆ ÐR(ý1Ýb£lv£¦½Ô”xoü›ÐáPŸQ·Ê}Å•c?nÎÖ“É £{G¯eë–@ÙÏØbÁ5õ¹{Ĺö u¼oÉÖ§îOþŸ¨{«{壂FMþW~0yn²3_Lñ™.tn0®õ´®'î&JO%eV eÍe~ªœú¨%’WB?†.ÏW”©g6Ú?°ãÌúUâ•”¸“Ø÷qÓ !TÔávL©ñTO¤+ò° hÅ‘Šý•§*·™òmü'¸/7jrHî6; Š+ð º–þmÑJ?/uÎÈ40íˆ|[õ¹* ÝÂ¥‚ eMe^’#k‘¡¹5sÛøíü ï·Þrùöúê³'òLùûEß‹ÿ ‚² ìn‚%J3kÀ+]_ºþ©:_uÄÓê™/YZ²'{ÎJÃ’©Ò¼ù‰;ÙOÙïóõ²&iªUu]Ñ’šè\ì܆lo{Ny¦Lµ R‘”lJøú»\®6˜¡omNIù¨¨ÉåW£êU³@"|,Ü!=‘~ÅÌ¥OÎ'ënG#É‘.³/I$M— ω^I3Ü:®‰òS_SR«í%ö¼¬ÆÔ©Gkqº®§Š‚Íû·ž©cNà^–Ë/É×V›˜ƒÇ'zÃ'Âuñ[ñŸ5I{'=¥?-h öŠ/‡w w JD2ú4YžhÆB‡C×…na³Sc--¦g'S£EÎFî‰×ÅvMÒyD.8Ó÷¾¯øù÷U߬Vç,™ã.ø®SÄ% ñ;ù3ïût5,ƒÏaEIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0ti.svg0000644000000000000000000000013213135434035021200 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.543315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0ti.svg0000644000175000017500000000110313135434035023044 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2miMirror.svg0000644000000000000000000000013213135434035022366 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.543315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2miMirror.svg0000644000175000017500000000101613135434035024235 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.dmarcato.svg0000644000000000000000000000013213135434035021630 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.553315139 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.dmarcato.svg0000644000175000017500000000104213135434035023476 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.neomensural68alt.svg0000644000000000000000000000013213135434035023217 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.553315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.neomensural68alt.svg0000644000175000017500000000133713135434035025074 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0faWalker.svg0000644000000000000000000000013213135434035022320 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.553315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0faWalker.svg0000644000175000017500000000101413135434035024165 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1petrucci.svg0000644000000000000000000000013213135434035022403 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.553315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1petrucci.svg0000644000175000017500000000104313135434035024252 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.flat.slash.svg0000644000000000000000000000013213135434035022660 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.566648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.flat.slash.svg0000644000175000017500000000135113135434035024531 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/custodes.mensural.u0.svg0000644000000000000000000000013213135434035022351 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.566648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/custodes.mensural.u0.svg0000644000175000017500000000125413135434035024224 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.hufnagel.do.fa.svg0000644000000000000000000000013213135434035022222 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.566648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.hufnagel.do.fa.svg0000644000175000017500000000206513135434035024076 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensurald16.svg0000644000000000000000000000013213135434035021604 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.566648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensurald16.svg0000644000175000017500000000221013135434035023450 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.F.svg0000644000000000000000000000013213135434035017630 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.586648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.F.svg0000644000175000017500000000144313135434035021503 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1tiThin.svg0000644000000000000000000000013213135434035022005 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.586648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1tiThin.svg0000644000175000017500000000111113135434035023650 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0.svg0000644000000000000000000000013213135434035020643 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.586648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0.svg0000644000175000017500000000117113135434035022514 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.mensural32.svg0000644000000000000000000000013213135434035022003 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.596648473 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.mensural32.svg0000644000175000017500000000106313135434035023654 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.neomensural32.svg0000644000000000000000000000013213135434035022505 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.596648473 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.neomensural32.svg0000644000175000017500000000105113135434035024353 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/sp.png0000644000000000000000000000013213135434035016757 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.596648473 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/sp.png0000644000175000017500000000117513135434035020634 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRä‚íÅsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ &‰iÀtEXtCommentCreated with GIMPWØIDATHÇíV˱£0­>«œNÀUJ‡€C!ÈUN@¾û"B€ ‚‚¡ßeÍC¼kÞ^¶«tóiͨ%!€~¿è‡ðïˆú¾§ÓéDBÚívT–% Ã@·Û‡ !èr¹Œþ]×Ñù|&! !¨,Kz<s&Làœ3CJ ï=œs "GQ4¬µ°Öξ˜!„ijDDEQ€ˆÐ¶í·Ãï`¥BQ2"š-jê¿J´ä´Ùl°Ýnu]¿\ùÔ–eÙ:Q–e££”×ëD„ûýPJEÉ´Öc¬÷~ÖÂU¢çM÷ûýhOmÓjÒj_@ZëYÂ4QQQ\#¥Œì£¼›¦¡ªªˆ™ÉCƘHò]×Ej•RFó¦i¢yžçËò~¶Å97Û\ïý¬mSe¦Šcfxï—[—¶ãœçùbÿ§DÏcñƘtG¾‰”RR¢m[XkÁÌ`f8çfj›&3Ƽ denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accordion.freebass.svg0000644000000000000000000000013213135434035022102 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.606648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accordion.freebass.svg0000644000175000017500000000111213135434035023746 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1reWalker.svg0000644000000000000000000000013213135434035022322 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.606648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1reWalker.svg0000644000175000017500000000116313135434035024174 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.mensural68alt.svg0000644000000000000000000000013213135434035022515 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.606648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.mensural68alt.svg0000644000175000017500000000127413135434035024372 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/Barline.png0000644000000000000000000000013213135434035017711 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.606648472 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/Barline.png0000644000175000017500000000025713135434035021566 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR.%vIsBIT|dˆfIDATHKí–1 ÿÿsÕE\4K†)8YÊq "ªª)ª+†¬˜G‚¤#z9°igߢ¿–Œ(ƒ®Ž÷…Ÿ£$ûÇ­ùåÈ(ÉN²¹Þ‘dsGÈo„JòË‘Ñgo6ÝùÑ “=¼Ç';51ˆIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensurald05.svg0000644000000000000000000000013213135434035021602 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.606648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensurald05.svg0000644000175000017500000000171313135434035023455 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.sharp.svg0000644000000000000000000000013213135434035021736 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.619981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.sharp.svg0000644000175000017500000000146613135434035023616 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.shufnagel.lpes.svg0000644000000000000000000000013213135434035023237 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.619981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.shufnagel.lpes.svg0000644000175000017500000000100713135434035025106 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accordion.pull.svg0000644000000000000000000000013213135434035021264 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.619981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accordion.pull.svg0000644000175000017500000000075313135434035023142 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.neomensural34.svg0000644000000000000000000000013213135434035022507 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.619981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.neomensural34.svg0000644000175000017500000000110413135434035024354 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0re.svg0000644000000000000000000000013213135434035021172 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.643315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0re.svg0000644000175000017500000000101613135434035023041 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.punctum.cavum.svg0000644000000000000000000000013213135434035025076 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.643315139 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.punctum.cavum.svg0000644000175000017500000000116413135434035026751 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.c3.svg0000644000000000000000000000013213135434035021565 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.643315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.c3.svg0000644000175000017500000000146313135434035023442 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.tab.svg0000644000000000000000000000013213135434035020211 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.643315139 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.tab.svg0000644000175000017500000000363113135434035022065 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/glyphasn.svg0000644000000000000000000000013213135434035020175 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.656648473 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/glyphasn.svg0000644000175000017500000000061613135434035022051 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.halfopen.svg0000644000000000000000000000013213135434035021632 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.656648473 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/scripts.halfopen.svg0000644000175000017500000000141213135434035023501 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.leftparen.svg0000644000000000000000000000013213135434035022601 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.656648473 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.leftparen.svg0000644000175000017500000000107713135434035024457 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accordion.push.svg0000644000000000000000000000013213135434035021267 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.656648473 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accordion.push.svg0000644000175000017500000000105113135434035023135 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.2neomensural.svg0000644000000000000000000000013213135434035022121 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.666648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.2neomensural.svg0000644000175000017500000000103313135434035023767 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.usemicirculus.svg0000644000000000000000000000013213135434035022732 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.666648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.usemicirculus.svg0000644000175000017500000000072313135434035024605 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1reThin.svg0000644000000000000000000000013213135434035021777 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.666648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1reThin.svg0000644000175000017500000000102513135434035023646 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/LargeThree.png0000644000000000000000000000013213135434035020357 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.666648472 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/LargeThree.png0000644000175000017500000001114013135434035022225 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRXi‡ïT pHYs  šœtIMEÙ (Ù·8tEXtCommentCreated with The GIMPïd%nÖIDATxÚíÝy|ÕÝÇñ_vHÂvHX‚@bØP0FvD,B±òÔÇlµZ”j-V(ˆTQY (h(J-&²ÈÁ°ÔD6 k"\Â’å>Èó*IîrfîÌÜ!óùþî™{ÎkÞœsfæÎœ q ±SBÙ€@!€B„±QÂMøÎ GŽýáÌ™Óç].WQqqqXxDDµêÕk4¨ß >11.„½î#!†^Ëríݽ?;û„Ï2Õonݺ]§šìz“AÜßlÚ´åò·%ÝÖ­ûMô³@Ng¬ù,OóVú è[ÃArW,ߢ÷[» ZAN,Yüe€‡}Gß „! WVÌÏ,5 uF>‘EÀ ‡ÞYpưӡ{žº Œ@@Ü3>5¶%wMîÉQ—^+‹þzÀø¶¤þ%= ®·§ý`Nk†M½ ­[œŸ9ãœi͉zöé*€hÉ…Y¯å›Ú s»¢œK³ÿ|Öô=õRU@”R²ðǬhSÊ?Rœ ¢þ{ˆûãv£-ñ·ý¿ÙÓ{ЫUøè“Å Y>“÷Ü v²Äå YDá(ëdƒ ·²îÑ(zˆ}F,‘Ó+²l"sn HD›öMâ«U­Z%¤ðRáÅãGÝÿ•!?i¬;Ò„9äÿÓì°Â÷Tï~[kOO¦ܽîß§nçô§¹–³uü~IÜ#CS}]Þ(ݽzaN`í¼c ×’Ñ×Onã†ú„ tݻ˯ÒÎÓyX×ÿ¤îg é¾qýC t„öZòÝø.º×r”¥rZØþóuiªU%¼ùÍHý Íĉ|ygO-•5]ðys½ ÝÆòS â¼~ÔiQ²æú Ÿy]_CÃÎGÓCDD¼¯Ó0j£v‰ž¹XßC„%{²|ŽXa³æêÛ³oŒ×µÝ!@|ÍéË&è}Ì¿ÓúF€ÝC"W Ö_g‹µz®ˆˆÈÿ1#V ¤Ò¤ÌíDDdÇ£°9éÕÚz¾ömNâuÄzfT ÕÞ7Ió&gñ6§~)ðz_n«u‹Ë€xé!ñs Xì7â-@ô€¬xn¿¨–§ŽÕ¸A "²·â ~{Só÷-TÄ㈕ø¢A57£­|4 çô†-Õ31LSñª€xê!ýî6¬êfCÑ ry¹›iàB•i*]‘¬ò‹òŒle`Ý?«®¥tc@*N!a¿7²î*CÑR~ ÙÜÐÊ{Hè³ÆVž¦¥p" r5«ìß ^U7QË/U‘ýånm›`på!·k8ÈjHù9½U/£ko¡^´c å§_†¤“R®‡„0¼v sR_@¤ø«2ö3þvgõy¡z@ä`Ùß„2¾võ{úDRnÄŠd|í±Ê%û åæô»c‚ØCª ¤|1¡ƒˆò/"Ãj"%{Êì»tj¿¨Zp”"ÙeÖrK­DÄ€”ŸB˜Q»K±Ü$ç¼eÜÇsêu~sý_÷IðzHçŒX¾@úõ3½vÅ—½MtЋ‚;¨=bPï1Äš¨­&ðçX@ìÔCn)€X”¯U Í Ä¢ä©ô · e³B™ä©ˆUÙä¿HÄ{Ñ€X– þ‹Léà,Ý/¸7ä ×ÿ/¸C–… =Ī|è·D»…Nó*ÈRꮊ@,Ë~ËÉT]áÀdºŸÏ#WÞé< NêÇ}?W¶l°=‚ØCfúöù»#=‚×CN¶¼àó„ðý{顲²µ9yÚ§GÌŠ>ÎôZÙØÕ×§µþÕY±2E³||ÚrU²S=‚5©?ãË£ïvçz©‡¬ôõüí¯§† –&§Ã^?‹~ëqr‚ñŸñTïí?Hr´G0æüôl¯ŸýÏ6‡{¡‡\è¿ÇÛGuæ§Çòr¬«×eõï?€‡å=ä?ƒNxù¤þ›Cà°º‡¸uõæ1b?–÷SãWxù$åXXÝCÜËÚxñˆ}m–÷Í¿õv_܃¯5Âêòåà4/i[ßÇÃârå£ÙÞ^C˜4uP –‚mZ¹ä´—Ïb_ŽA™˜{qѳíß«}½>4¾i󿉭ZÖFÂdâㇿÿfçÎsŠÅk§´n{k»< 9[æ'÷ÕÂÂBW^©ŽŒ6ïìÞ€³ÜÈ…Hš÷ëß;ÊÁ Fö®7²A9XwÄg%ôÒ.Ëðf%ŒÛ9cʪì‘#~Ûʉ  YLiØÕy7ü O!×¥taÒ¤ó€ØDäêkIï»ørºž© LŸÓ”¢)_˜ÛÀ5·,DS֙܂a®0diH›ý¦72uy}@TsÊŠ}ÕdU{†,{L!?åHÚ@‚~Ð{}\ý>Äsúµ\¾çŸÌ!¶™BDD$ê_=é!þcÝØ~垀Øe ùit;ÈÉÁ…€øÛG¬lìîÇÜ€Øe ‘Å‹±Ïˆ%"òD ¶¹0²_SÈA«Û»i 6ê "òô)@l’ÿ|å ìÒÉÍ_[ßâ°­ñ’¼†þ1:¦jTD˜»ðâÅBs&à{ÿQ™Az<ãú³ÆÉ-7¬_§æ¿Ñ}ùDnnnî¾}ÆžÎ-Û׆âå kä‘&©]:¶õñ¢ÁóÛ·nÝxѸ6šˆ—”þuj÷¾½›)”¼´æ£4¨Í‡â-nõ'¯f¼¹Ú˜F¿0c’=sÁ%¾¦Ùw¡€”sÓ¦p—ÕÚʻ΀ÕÿÕj½üõýËB†,#³é—>áS;/œb\Òv<à7œÝ,€˜*3VøÔÕ?16ý¿êÐöŸ3‡ÂáŸÒì3µè!Æ&zÅ/9ÝÈetÂß™ÀÖ›1~´|õçú7Þ[YA‚ùC)º{ÞMëçbB\ÝwéÝôD%]é!¸Wéb—Õлé·Ì!f¤Ù[z·ÌÄ”<ð¨Î s1'¯'êÛî0 æ¤Ú4}ÛĤ @BfèZ¸÷, få–Qz¶*àÄдdëyK^Í|zˆYI c£« Yæå)ÛTÖ‚ì0d‰»½ö»BKè!æý¯£}›* Y&f¨öM¢11 é!¶‘a€Üè ±€˜™æš×‚­ˆ©¹¤ ô'´×zÔ”ˆ©‰l¡qƒ$@ÌÖŸÖ[b+z5±Heí 7,H{@LŽÆ[u;br¢µ¿ “£í=¸Ñ7b+a€ØjȪ¼ëòÛ¤ª¦Ò½+-Hˆ]ï.Ô2fÅœ‹¤‡˜M+Îu¯´>@\«ßµ´‡h)Ü·ÒzxY³dWFÆ–¢°ôÆ6ê(ÜŒŒÏóEDJf½jÏ!«K‚c@ Öedü÷ùÖ·Ÿ¯fYC´¬y¯8äÉ2kµý8÷-kÈ e‡Ubr“ú­eÿœ^dYC¾W/šÖÌ9 ÊþyôC;‚Œ瀔ÿ™aªeçê9W¿ÏA 5š—ý;kµýzÈÃÑ)?‰ÈŸ,ê"ê=d¬8 ¤ü˜µÕ¢wÝîT.ÙãVGƒÈkÚ±]¹ä$q6Ȇõ–´Cù=·­û9 ¤I…û^°bq+÷‰!Î i[¡‹dZÐŒlÕw¯5Xœ"í*ù½]Dy¥ê)Ni[ñh¹ùÍX¥X®Íâ4/ÜúéËXœÜªXð¥0Ç´®XæÛ7ÍnÅ'Š£âƒ*»‡‡›â¨P¨æ7uÌmEoµÅõCwÝ"Žë!žºHÁs&c)¾ìàñÊï¡"oï0µŠkÅÖž"€\;o{¬ØÄ6ÎW+÷—ZŽIñTlÏ4Û°Dí÷ôôGàáaRÏ÷øÿ0jO²YM(JQZ6¼ú¾ÆâÈçñÑ™+˜öóú<µeܧ;ÂÃÓ‹ž½øÏ fÍ /*ë?Zœ ’â¹ä+&]dœuB¥T£!B){¤õÐq3pâ¥f.©+Žñ6{ŸrÉøúÝ㕱^ì*€TÈαÆ_ˆ_é:oú3NñðôÀŽ»ºË[éç>WÎKQY ºÕ¶8qp ñ~ÆñÇ9ÆÖ^2ZÅ£Æ*çxx|`ÇÇ)àãK ­ýÙOUšøA’âmñ‘•/VzþätÄû óÀ2ÃêÞ¡t×ôäÇ)¾Ð ª³ª,¨?~²£<<>}%ºÔç6Sž3â¬yo/•—äÜ»4LßC¢ü,•ô‡\WüeOÁï9ÌÃócÑþ®´Ø)+Ðz¿èuN¡Ô"…&³oŸUH­îÙ½TN@†:ÏC_¹ü«>¼jóòè *? ?¸4BQYÛfªÞûçö¥-P)öäbzˆ¸=DñÎçV—ºµçÒójûù=_~ãÇ#H©êµ£n5W¸Aí:Hø|·3ãqÈ Q½¡aÃ]}25]’ß1°[¶J¹:™Š3ãy5 õ;L2ûÜú®òYÉöþÕžêm»£›¢å¸÷ú3î±ÆmP8Ο“ÚåSµ¯¼%QÙJ­ßÿĚ˾FF×'Õ_«þj‰Û¹ñ¼Äß!¿@TMëÞ¹“§Ù/o[·v»ú]]M–Þ!Žg¢·Å5OInÖ¤~í¸*‘âr¹.äÊ>”£éœƒæ×@*$å`pš;}Lˆ£=¼­¹˜œÖôÈëp[D¿žÙLœÏ‹`J0–V<³‰p»ôf³¢á}R?oñ…ªüæÙh0|€HÂq+ñó— ð9©[:fõùrþ@¬›Õ»¯û¬=þ&uË@zM¾ K†¬{&¥B`›;úW7 z”åîeòê—ÉãF×`÷«ƒˆ|5û½‹fÕsÿ˜;BØùÚ@D.,}g§ U†öxðþjìy "²Ñ{ÇŒ­¯ëðaõØíºADJ7øÑ ƒ*‹í3 Cöy` "RºããUû®¨]¯i‘ìp#@DDŽgdnÐ=x…uèÚ--Žm$ˆˆ¸oÞ±sÆÅÂ[wèØ±WrÍ‘’o³ö:ôÂõnJNJJnÅ>6äZ\GŽåçªõ¾lŽNG9å¨Í¹sÊQšs産4çÎQ¹‹{®ª¦~F;V:å¨Ü§ñ¾ôù½,Ú@Ê9Ö¤“jCÆ:ë¾s¬it©¦\ÒIµ!Â{.ÿQó@Pu唣4çÎ)GhÎSŽ Ðœ;§ 9wN9*@sîÜ–r7Q_ {ˆSÈIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/three.svg0000644000000000000000000000013213135434035017457 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.676648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/three.svg0000644000175000017500000000145313135434035021333 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs-G.svg0000644000000000000000000000013213135434035017630 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.696648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs-G.svg0000644000175000017500000000250113135434035021477 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/EndSecondTimeBar.png0000644000000000000000000000013213135434035021443 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.696648472 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/EndSecondTimeBar.png0000644000175000017500000000024613135434035023316 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR $èë8âsBIT|dˆ]IDATXGíØ1 DQkÜÿÊ!…ÎP`¶ù¬W$†"¢8Ou6ÏÞ@ìÃèË,#>kIÛúv6“¾Ø §Û®zÙ€ € >(^¼†ojtF¢?\›qƒIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/StartUpStems.png0000644000000000000000000000013213135434035020753 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.696648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/StartUpStems.png0000644000175000017500000000056113135434035022626 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR 2=dÙdsBIT|dˆ(IDATXGí˜ Ã „—±÷e׉æÏ3dƒ1ª©÷å¼J”R^™Ÿw¦8jÿÎr ~=¹:ËOçµ6ÄÏ6„xœ8Àº ç:€9°¸p¶ÎtàzÉö,²æ€"  £2€BŒ¶"`Ôu;¶ Ý êÂÉ…m\ ·pçB ÀöþD8ˆ7!ÓG k¹Iëàœ `$\¤9 ÑšCè ‚Òµ `…8·† ÀÝ(uå™ë2°B°]ƒ†“^«xºáj¥¦:¸EžŒÓ®Ûµàšd×–ÈG7IB£z[¶3â :p(ÿxÌ WGTâ©°  Gü.ËÀ,\:@wh¡óvªe%ÝtÓcèµÝSŸî@:À×À[i°F!‚IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accordion.stdbass.svg0000644000000000000000000000013213135434035021753 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.696648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accordion.stdbass.svg0000644000175000017500000000131113135434035023620 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.petrucci.f_change.svg0000644000000000000000000000013213135434035023012 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.696648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/clefs.petrucci.f_change.svg0000644000175000017500000000204613135434035024665 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/clefs.hufnagel.do.svg0000644000000000000000000000013213135434035021635 xustar0030 mtime=1500919837.919981805 30 atime=1500919924.706648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/clefs.hufnagel.do.svg0000644000175000017500000000127213135434035023510 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.flatflat.svg0000644000000000000000000000013213135434035022416 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.706648472 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.flatflat.svg0000644000175000017500000000157113135434035024273 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.turn.svg0000644000000000000000000000013213135434035021026 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.706648472 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.turn.svg0000644000175000017500000000137213135434035022702 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensurald24.svg0000644000000000000000000000013213135434035021603 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.716648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensurald24.svg0000644000175000017500000000143113135434035023453 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d2tiThin.svg0000644000000000000000000000013213135434035022006 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.716648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d2tiThin.svg0000644000175000017500000000102013135434035023650 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.mensurald03.svg0000644000000000000000000000013213135434035021600 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.716648472 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.mensurald03.svg0000644000175000017500000000113313135434035023447 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads_sM1neomensural.png0000644000000000000000000000013213135434035023300 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.716648472 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/noteheads_sM1neomensural.png0000644000175000017500000000033613135434035025153 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR醟sRGB®ÎébKGDÿÿÿ ½§“ pHYs±±’Þ¤ÁtIMEÛ,î—etEXtCommentCreated with GIMPW9IDAT8Ëí“Á 0Â’£û¯l‡8?…:€¨A“„‚F]›¨ % tªµÕŒÀ\uìOíEj¶Þ¬"¨¥çIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s-2.svg0000644000000000000000000000013213135434035020722 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.716648472 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s-2.svg0000644000175000017500000000136113135434035022574 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.neomensural22.svg0000644000000000000000000000013213135434035022504 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.729981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.neomensural22.svg0000644000175000017500000000126213135434035024356 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0petrucci.svg0000644000000000000000000000013213135434035022402 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.729981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0petrucci.svg0000644000175000017500000000104313135434035024251 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/EndVolta.png0000644000000000000000000000013213135434035020051 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.696648472 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/EndVolta.png0000644000175000017500000000000013135434035032526 1denemo-2.2.0/actions/bitmaps/EndSecondTimeBar.pngustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/scripts.uaccentus.svg0000644000000000000000000000013213135434035022030 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.729981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/scripts.uaccentus.svg0000644000175000017500000000076513135434035023711 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1laWalker.svg0000644000000000000000000000013213135434035022327 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.753315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1laWalker.svg0000644000175000017500000000077313135434035024207 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2.svg0000644000000000000000000000013213135434035020645 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.753315139 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2.svg0000644000175000017500000000100713135434035022514 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.mirroredflat.flat.svg0000644000000000000000000000013213135434035024240 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.753315139 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.mirroredflat.flat.svg0000644000175000017500000000150113135434035026106 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/ClosingBarline.png0000644000000000000000000000013213135434035021230 xustar0030 mtime=1500919837.913315139 30 atime=1500919924.753315139 30 ctime=1500919912.906648472 denemo-2.2.0/actions/bitmaps/ClosingBarline.png0000644000175000017500000000032713135434035023103 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRDj0®ùsBIT|dˆŽIDATXGí˜Á €0 C­øÿ¿<×Ë#G#´¼+dó% bŒ1.׺]©‹¸¤ °HrhMKÌ-?+—ÙS©·–õäϹ[nëmöçû\B>†Ö“#.-K3,tK3C¹¡* È¡5-u»ÅŠ…¢ÿ£h5ñf†Ö-.º¥Yé–f†Öíkƒÿç*èVæ/Do:u®‚D™IEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/RepeatCloseOpen.png0000644000000000000000000000013213135434035021365 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.753315139 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/RepeatCloseOpen.png0000644000175000017500000000063413135434035023241 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR78Y`“sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÚ8Ä«r=IDAThÞíšÛ„ D[ãÿÿòì«!Â"t¸eú¼Cá°êìÔºìàœà'8ÁÕ”›”ÜŽÉEŠ»/À[~«äwHÝ ¯âG&ç§NË'N‚ ‹4”Þ ‹L=CcJñFC±ØÊ†âÉÏÝçR'Lž0`5=€1yɽpÚƒžIc–`mÎC{®·ñYcÞdD%ÖòÙ†2 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.M2.svg0000644000000000000000000000013213135434035017765 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.759981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.M2.svg0000644000175000017500000000071413135434035021640 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.svaticana.reverse.vplica.svg0000644000000000000000000000013213135434035025221 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.759981806 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.svaticana.reverse.vplica.svg0000644000175000017500000000103213135434035027066 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/flags.u3.svg0000644000000000000000000000013213135434035017772 xustar0030 mtime=1500919837.923315139 30 atime=1500919924.759981806 30 ctime=1500919912.919981805 denemo-2.2.0/actions/bitmaps/flags.u3.svg0000644000175000017500000000102113135434035021635 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s1la.svg0000644000000000000000000000013213135434035021161 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.769981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s1la.svg0000644000175000017500000000076513135434035023042 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s0laWalker.svg0000644000000000000000000000013213135434035022326 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.769981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s0laWalker.svg0000644000175000017500000000077313135434035024206 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/RepeatOpen.png0000644000000000000000000000013213135434035020377 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.769981805 30 ctime=1500919912.913315139 denemo-2.2.0/actions/bitmaps/RepeatOpen.png0000644000175000017500000000055313135434035022253 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR)7‘¼csRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÚ3;‘9†ËëIDAThÞí™Q€ C™ñþW®_&„ˆÎÍ1Ñòe ÈK+CPÞÞ–2A#$! ihRJ•|BÉ»É\DN¶ßþއ„$äG§Îq0Îá¯R ‡ZçtÂÊqêw)1yGQ÷f Žg\y¿Æ×-J¶1*Ïj¯,žå†cùçË“šåöÄ$, ZΖ‹s㼾Ƒȴ‘'C7’ÕqºŠ5Žƒì£âv <Ípw¿HÇv¸å8ªË„(Ç ³ÁOÕ8áÖoKÇ-(Ð#ŽÃ[5B’‚䜴‡J’“@n£jdNyLlOIEND®B`‚denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.sharp.arrowup.svg0000644000000000000000000000013213135434035023434 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.769981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.sharp.arrowup.svg0000644000175000017500000000175413135434035025314 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2harmonic.svg0000644000000000000000000000013213135434035022366 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.769981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2harmonic.svg0000644000175000017500000000100713135434035024235 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.mensural64.svg0000644000000000000000000000013213135434035022010 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.779981806 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.mensural64.svg0000644000175000017500000000127513135434035023666 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/timesig.neomensural68.svg0000644000000000000000000000013213135434035022516 xustar0030 mtime=1500919837.936648473 30 atime=1500919924.779981806 30 ctime=1500919912.936648472 denemo-2.2.0/actions/bitmaps/timesig.neomensural68.svg0000644000175000017500000000137313135434035024373 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/rests.4neomensural.svg0000644000000000000000000000013213135434035022123 xustar0030 mtime=1500919837.933315139 30 atime=1500919924.779981806 30 ctime=1500919912.933315138 denemo-2.2.0/actions/bitmaps/rests.4neomensural.svg0000644000175000017500000000114013135434035023770 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.ssolesmes.incl.auctum.svg0000644000000000000000000000013213135434035024557 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.779981806 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.ssolesmes.incl.auctum.svg0000644000175000017500000000115413135434035026431 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.slmensural.svg0000644000000000000000000000013213135434035022506 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.799981805 30 ctime=1500919912.929981806 denemo-2.2.0/actions/bitmaps/noteheads.slmensural.svg0000644000175000017500000000132113135434035024354 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/accidentals.natural.arrowup.svg0000644000000000000000000000013213135434035023765 xustar0030 mtime=1500919837.916648473 30 atime=1500919924.799981805 30 ctime=1500919912.916648472 denemo-2.2.0/actions/bitmaps/accidentals.natural.arrowup.svg0000644000175000017500000000137513135434035025644 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.d1doWalker.svg0000644000000000000000000000013213135434035022316 xustar0030 mtime=1500919837.926648472 30 atime=1500919924.799981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.d1doWalker.svg0000644000175000017500000000103113135434035024162 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/bitmaps/PaxHeaders.19168/noteheads.s2cross.svg0000644000000000000000000000013213135434035021717 xustar0030 mtime=1500919837.929981805 30 atime=1500919924.799981805 30 ctime=1500919912.923315139 denemo-2.2.0/actions/bitmaps/noteheads.s2cross.svg0000644000175000017500000000125713135434035023575 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/actions/PaxHeaders.19168/quote.l0000644000000000000000000000013213135434036015503 xustar0030 mtime=1500919838.043315139 30 atime=1500919924.809981805 30 ctime=1500919912.906648472 denemo-2.2.0/actions/quote.l0000644000175000017500000000252113135434036017354 0ustar00jjbenhamjjbenham00000000000000A [a-zA-Z\200-\377] AA {A}|_ N [0-9] AN {AA}|{N} ANY_CHAR (.|\n) PUNCT [?!:'`] ACCENT \\[`'"^] NATIONAL [\001-\006\021-\027\031\036] TEX {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL} WORD {A}{AN}* DASHED_WORD {A}({AN}|-)* DASHED_KEY_WORD \\{DASHED_WORD} ALPHAWORD {A}+ DIGIT {N} UNSIGNED {N}+ E_UNSIGNED \\{N}+ FRACTION {N}+\/{N}+ INT -?{UNSIGNED} REAL ({INT}\.{N}*)|(-?\.{N}+) KEYWORD \\{WORD} NEWLINE [^.] ; windows and linux/unix WHITE [ ] ;space and tab! HORIZONTALWHITE [ ] BLACK [^ \n\t\f\r] ;TODO: needs fix RESTNAME [rs] NOTECOMMAND \\{A}+ MARKUPCOMMAND \\({A}|[-_])+ LYRICS ({AA}|{TEX})[^0-9 \t\n\r\f]* ESCAPED [nt\\'"] EXTENDER __ HYPHEN -- BOM_UTF8 \357\273\277 %% ;\\{ESCAPED} ( ;static char ;escaped_char (char c) ;{ ; switch (c) ; { ; case 'n': ; return '\n'; ; case 't': ; return '\t'; ; case '\'': ; case '\"': ; case '\\': ; return c; ; } ; return 0; ;} ; (lyimport::quote-append (escaped_char (string-ref yytext 1))) [^\\"]+ (lyimport::quote-append yytext) (lyimport::multilexer) \" (lyimport::pop_state) (lyimport::mtoken 'STRING lyimport::quoted_string) . (lyimport::quote-append yytext) (lyimport::multilexer) <> (lyimport::mtoken 'ERROR yytext) <> (make-lexical-token '*eoi* #f #f) denemo-2.2.0/actions/PaxHeaders.19168/denemo-modules0000644000000000000000000000013213135434035017030 xustar0030 mtime=1500919837.939981805 30 atime=1500919914.539981806 30 ctime=1500919912.939981805 denemo-2.2.0/actions/denemo-modules/0000755000175000017500000000000013135434035020756 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/deprecated.scm0000644000000000000000000000013213135434035021711 xustar0030 mtime=1500919837.939981805 30 atime=1500919924.809981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/denemo-modules/deprecated.scm0000644000175000017500000001416113135434035023565 0ustar00jjbenhamjjbenham00000000000000#!(define-module (actions denemo-modules deprecated)) !# ;;;;;;;;;;;;;; Refresh Procedures. ;;;;;;;;;;;;;; Naming convention D- is the refresh proc for tag (define (D-Anacrusis) (let ((duration (d-GetDurationInTicks))) (if (boolean? duration) (set! duration 0)) (while (d-NextObjectInMeasure) (set! duration (+ duration (d-GetDurationInTicks)))) (PrevDirectiveOfTag "Anacrusis") (set! duration (/ duration 12)) (if (equal? 0 duration) (begin (HideStandaloneDirective)) (begin (d-DirectivePut-standalone-postfix "Anacrusis" (string-append "\\partial 128*" (number->string duration) " " )))))) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; This is Denemos interface to access the MediaWiki API (http://www.mediawiki.org/wiki/API), which is used for the current Denemo-Website ;;;; Send any question to Nils Gey denemo@nilsgey.de ;;;; Currently its only used to create/overwrite a page with a new script. ;;;; It uses the User-Rights System so its very secure. Vandalism in only possible in the same degree as allowed on the website itself. ;;;; All API access is done via (d-HTTP). The C function behind it sends HTTP-POST data to the given Server/Website and returns the HTTP-header and MediaWiki Data. ;;;; The basic steps are 1)Login with Username/PW given in Denemos Preferences and 2)Create a HTTP-Cookie . ;;;; After that allowed Manipulation is possible. Currently we create request an Edit-Token and create a new Page. (define (d-UploadRoutine list) (define command (list-ref list 0)) (define name (list-ref list 1)) (define script (list-ref list 2)) (define initscript (list-ref list 3)) (define menupath (list-ref list 4)) (define label (list-ref list 5)) (define tooltip (list-ref list 6)) (define after (list-ref list 7)) ;Some constants. Change these only if the Website moves. (define HTTPHostname "www.denemo.org") ; don't use http:// . No tailing / (define HTTPSite "/api.php") ; Prepare Login. Use this only once in (CookieString) because all tokens change on any new login. (define (LogMeIn) (d-HTTP ;Parameters are hostname, site, cookies/header and POST-body HTTPHostname HTTPSite "" ; Cookie entrypoint. No Cookie for now. (string-append "format=json&action=login&lgname=" (scheme-escape(d-GetUserName)) "&lgpassword=" (scheme-escape(d-GetPassword))))) ; Actually logs you in and prepares a HTTP-Cookie you have to use in all other Media-Wiki Actions as third (d-HTTP) parameter. (define (CookieString) (define LogMeInReturn (LogMeIn)) ; Raise Error. Sorry, I don't know how to make Blocks and if/else does only allow one statement. (define (RaiseError) (begin (d-WarningDialog "Login Error - Please check your username and password in Edit->prefs->misc") (display "\nLogin Error - Please check your username and password in Denemos Preferences") ;return CookieError (string-append "CookieError")) ) ; Test if hostname is ok (if (string-ci=? LogMeInReturn "ERROR") (display "\nConnection Error - Server unavailable") ;If Server is ok check Login-Data: (if (string-ci=? (ParseJson LogMeInReturn "result") "Success") ; If login is good go ahead and build the cookie string (string-append "Cookie: "(ParseJson LogMeInReturn "cookieprefix")"UserName=" (ParseJson LogMeInReturn "lgusername") "; "(ParseJson LogMeInReturn "cookieprefix")"UserID=" (ParseJson LogMeInReturn "lguserid") "; "(ParseJson LogMeInReturn "cookieprefix")"Token=" (ParseJson LogMeInReturn "lgtoken") "; "(ParseJson LogMeInReturn "cookieprefix")"_session=" (ParseJson LogMeInReturn "sessionid") "\n") ;else (RaiseError)))) ; Prepare request Edit-Token. ; First send d-HTTP, then parse the token, then modify it to the right format. (define (GetEditToken name CookieStringReturn) (define (ReceiveRawToken) (d-HTTP HTTPHostname HTTPSite CookieStringReturn (string-append "format=json&action=query&prop=info|revisions&intoken=edit&titles="name))) ;json gives you +\\ @ Tokens end, but you need only +\ which is %2B%5C in url-endcoded format. (string-append (string-trim-both (string-trim-both (ParseJson (ReceiveRawToken) "edittoken" ) #\\) #\+) "%2B%5C")) ;This will overwrite the page named like the parameter "name". If it is not existend it will be created. ;Any OverwritePage call has to be made in (d-UploadRoutine)'s body. (define (OverwritePage CookieStringReturn) (define (GetLicenseAndBuildString) ;(define license (d-GetUserInput "License" "Please choose a license for your script. For example GPL or LGPL" "GPL")) ; This is gone. Scripts have to be GPL, too. (define (SiteString) ; Any whitespace will be send, too. (string-append "{{Script |Name = " name " |Author = " (scheme-escape(d-GetUserName)) " |Label = " label " |License = GPL |Explanation = " tooltip " |SubLabel = " menupath " |Version = " DENEMO_VERSION " }} === Script === " script " === Initscript === " initscript " === After === " after " ")) ;Send the data to let the API generate a new site! (d-HTTP HTTPHostname HTTPSite CookieStringReturn (string-append "action=edit&title=" name "&format=json&summary=" tooltip "&text=" (SiteString) "&token=" (GetEditToken name CookieStringReturn))) ;Show script in browser (d-Help (string-append "http://" HTTPHostname "/index.php/" name)) ); End of GetLicenseAndBuildString ;check if Login/Building the Cookie was correct (if (string-ci=? CookieStringReturn "CookieError") (display "\nAn error occurred while performing the task. Thats why the result of your Upload-Command is: ") (GetLicenseAndBuildString)) );;;; End of OverwritePage ;;;; The real action happens here. This is the only place where (CookieString) is called so we have only one Login at all. (display (OverwritePage (CookieString))) ;show and execute ) ; End Of (d-UploadRoutine) denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/abstractionmovement.scm0000644000000000000000000000013213135434035023675 xustar0030 mtime=1500919837.939981805 30 atime=1500919924.819981805 30 ctime=1500919912.936648472 denemo-2.2.0/actions/denemo-modules/abstractionmovement.scm0000644000175000017500000005354713135434035025564 0ustar00jjbenhamjjbenham00000000000000(use-modules (srfi srfi-1)) ; List library #!(define-module (actions denemo-modules abstractionmovement3) #:export ( CreateAbstractionMovement PasteAbstractionMovement SearchForSimultaneousInterval SearchForSimultaneousIntervalFromBase SearchForConsecutiveIntervalProgression )) !# ; This is the prototype of a system that creates an abstraction of the movement. ; In the end there is a list of list of musobj-objects which are vertically aligned. Different durations are equalized out by inserting repeated notes. ; Only notes, chords and rests are saved currently. Duration is ignored. The start-tick value is used to check if notes need repetition. ; Uses ANS (Abstract Note System, defined in actions/ans.scm) ; Uses musobj (A structure for musical objects, defined in actions/denemo.scm) ; Currently all functions are wrapped in a single big program. This way they do not pollute the global namespace, but they are called each time an Abstraction-Movement gets created, which is only needed after a score-change. ; Functions in this file. ;;(CreateListStaffTicksInMeasures) ;;(ListStaffTicksInMeasures->StaffOffsetTickList listy) ;;(insert-into-list listy position what ) ;;(duplicate-item-in-list listy position) ;;(list-equalizer! what . lists) ;;(insert-deep movement staffnumber position what) ;;(duplicate-deep movement staffnumber position) ;;(GetStartTickMinimum listy) ;;(Abstraction::CreateMusObj) ;;(createFinalList) ;;(fill-with-redundancy! movement) ;;(CreateAbstractionMovement) (define mainBlock #f)(define notMinimum #f) ;;; RTS - I don't know what these are, but for some reason they appear below in a context where they need to be defined. (define (CreateAbstractionMovement) ;Nearly any of the following functions are just crude prototypes. They are crude because they work with lists instead of a good data type like an red/black-tree. We need a data type here that is a list of list or allows simultanious items, allows refering to a single item and allows inserting. The result here is that all is done with list, appending, splitting, copying complete lists around instead of micro-changes. ;Create a list which holds a tick-sum for each measure. It counts the actual length, even if the measure is overful or underful. It assumes 100% fill for an empty measure. (define (CreateListStaffTicksInMeasures) (define return #f) (d-PushPosition) (d-MoveToBeginning) (set! return (let loop ((listy (list #f)) ) (if (EmptyMeasure?) (append! listy (list (duration::GetWholeMeasureInTicks))) (append! listy (list (GetMeasureTicks)))) (if (d-MoveToMeasureRight) (loop listy) (list-tail listy 1)))) (d-PopPosition) return) ;Wants a list created by (CreateListStaffTicksInMeasures). ;returns the tick offset for each measure. Each list position is equal to a measure number. There is no measure 0, so its #f ;The offset is each measure, added to all measure before it. (define (ListStaffTicksInMeasures->StaffOffsetTickList listy) (define lstlength (length listy)) (let loop ((counter 0)(return (list #f))) (if (= counter (1+ lstlength)) return (loop (1+ counter) (append! return (list (apply + 0 (list-head listy counter)))))))) ; list-head excludes the given position. This means if you give a measure number this measure will be included. Same counting as (lenght list) ;Create a list of OffsetTickLists. Each list is a staff, which is a staff of measures. ;All countings from 1. Positions 0 are #f for both the outer and all inner lists. (define (CreateOffsetTickListMovement) (define return (list #f)) (d-PushPosition) (d-MoveToMovementBeginning) (let loop () (append! return (list (ListStaffTicksInMeasures->StaffOffsetTickList (CreateListStaffTicksInMeasures)))) (if (and (d-MoveToStaffDown) (d-MoveToBeginning)) (loop))) (d-PopPosition) return) ;Very slow version of insert-into-list (define (insert-into-list listy position what ) (append (list-head listy position) (copy-tree (list what)) (list-tail listy position))) ;Variant of insert-into-list that duplicates an item (define (duplicate-item-in-list listy position) (append (list-head listy position) (copy-tree (list (list-ref listy position))) (list-tail listy position) )) ;Make all lists equal in length by appending 'what' to their tails ;;Usage with a list of lists: (apply list-equalizer! #f listoflists) (define (list-equalizer! what . lists) (define longest (reduce max 0 (map length lists))) (define (extend listy) (append! listy (copy-tree (make-list (- longest (length listy)) what)))) ; compare given list with longest and fill with 'what' (map extend lists) ) ;Nearly any of the following functions are just crude prototypes. They are crude because they work with lists instead of a good data type like an red/black-tree. We need a data type here that is a list of list or allows simultanious items, allows refering to a single item and allows inserting. The result here is that all is done with list, appending, splitting, copying complete lists around instead of micro-changes. ;A slow version to change one list in the list of lists. Replaces the whole inner list with a new one instead of modifying the original one. (define (insert-deep movement staffnumber position what) (list-set! movement ; outer list, the movement staffnumber (insert-into-list (list-ref movement staffnumber) position what))) ; replaced with a new staff ;Variant of insert-deep to duplicate one item in an inner list. Like insert-deep its slow. (define (duplicate-deep movement staffnumber position) (list-set! movement ; outer list, the movement staffnumber (duplicate-item-in-list (list-ref movement staffnumber) position))) ; create new list to replace the old one on the same position ;; Find the minimum value in a list of numbers. No check if only numbers! (define (GetStartTickMinimum listy) (reduce min 0 (map musobj.start listy))) ;; Create a MusObj but directly change its start-tick value to include the offset generated by (CreateOffsetTickListMovement) (define (Abstraction::CreateMusObj) (define (getCurrentOffset musobj) (list-ref (list-ref OffsetTickList (musobj.staff musobj)) (musobj.measure musobj))) ; inner list refs gets the staff as list from OffsetTickList, outer list-ref the measure (define musobj (CreateMusObj)) (set!musobj.start musobj (+ (getCurrentOffset musobj) (musobj.start musobj))) musobj) ;; creates a list of list of musobj(ects). Each first level list is one staff. ;; All append! need an additional (list) because append merges only with lists. (define (createFinalList) (define (staffLoop) ;; Subproc to gather the information for one staff and return a list. (define stafflist (list #f)) (if (or (Music?) (MeasureEmpty?)) ; if the first object is already a music item start right now. This prevents also a crash if the staff starts with a directive or else. (append! stafflist (list (Abstraction::CreateMusObj)))) (let loop () (if (d-MoveCursorRight) (begin (if (or (Music?) (MeasureEmpty?)) (append! stafflist (list (Abstraction::CreateMusObj)))) (loop)) (list-tail stafflist 1)))) ; Return list minus initial #f ;;; Body (d-MoveToMovementBeginning) (let loop ((final_list (list #f )) ) (append! final_list (list (staffLoop))) ; First Staff is guaranteed to work, after first staff test for more staffs: (if (and (d-MoveToStaffDown) (d-MoveToBeginning)) (loop final_list) (list-tail final_list 1)) ; If there is no staff, return the final list minus the initial #f ); Final Loop end ); createFinalList end (define (fill-with-redundancy! movement) ; prepare variables- (define (ansrest? musobject) (and (equal? (list +inf.0) (musobj.pitch musobject)) (not (inf? (musobj.start musobject))) )) (define positioncounter 0) (define staffcounter 0) (define MusObjectsOfCurrentPosition #f) ; All musobj of list-ref positioncounter (define minimum #f) ;The current lowest start-tick ; Two sub-procs (define (insertRestBeforeFalse musobject) (if (not musobject) ; if the object is a #f fill in a infinity rest before/to the current position (insert-deep movement staffcounter positioncounter (make-musobj 'pitch (list +inf.0) 'movement #f 'staff #f 'measure #f 'horizontal #f 'metricalp #f 'start +inf.0 'duration #f 'baseduration #f 'dots #f))) (set!musobj.pitch (list-ref (list-ref movement staffcounter) positioncounter) (musobj.pitch (list-ref (list-ref movement staffcounter) (- positioncounter 1)))) (set! staffcounter (+ staffcounter 1))) ; the next for-each iteration needs another staff (define (checkAndChange listy) ; the main program to check and alter MusObjectsOfCurrentPosition (if (ansrest? (list-ref listy positioncounter)) ; rests need to gain a real pitch (if (= 0 positioncounter) (set!musobj.pitch (list-ref listy positioncounter) (musobj.pitch (list-ref listy (+ positioncounter 1)))) ;or next object, for a leading rest in a staff (set!musobj.pitch (list-ref listy positioncounter) (musobj.pitch (list-ref listy (- positioncounter 1)))))) ;should take the pitch of the item before it (if (= (musobj.start (list-ref listy positioncounter)) minimum) ; starts on minimum tick? (set! staffcounter (+ staffcounter 1)) ;Current musobj starts at minimum tick, good. (begin notMinimum (if (not (inf? (musobj.start (list-ref listy positioncounter)))) ; if infinity-rest just change the tick (begin (duplicate-deep movement staffcounter (- positioncounter 1)) ; else copy a new musobj (set!musobj.start (list-ref listy (- positioncounter 1)) minimum)) ; change the created item to min start-tick (begin (set!musobj.pitch (list-ref listy positioncounter) (musobj.pitch (list-ref listy (- positioncounter 1)))) ; copy pitch (set!musobj.movement (list-ref listy positioncounter) (musobj.movement (list-ref listy (- positioncounter 1)))) (set!musobj.staff (list-ref listy positioncounter) (musobj.staff (list-ref listy (- positioncounter 1)))) (set!musobj.measure (list-ref listy positioncounter) (musobj.measure (list-ref listy (- positioncounter 1)))) (set!musobj.horizontal (list-ref listy positioncounter) (musobj.horizontal (list-ref listy (- positioncounter 1)))) (set!musobj.metricalp (list-ref listy positioncounter) (musobj.metricalp (list-ref listy (- positioncounter 1)))) (set!musobj.start (list-ref listy positioncounter) minimum) ) ); if end (set! staffcounter (+ staffcounter 1)) )); begin notMinimum & if minimum ); checkAndChange subProc. (let loop () (set! staffcounter 0); reset staffcounter before for-each, which loops through staffs (set! MusObjectsOfCurrentPosition (map (lambda (lst) (list-ref lst positioncounter)) movement)) (if (member #f MusObjectsOfCurrentPosition) (if (every not MusObjectsOfCurrentPosition) ; If all are #f the movement is at its end "Abstraction Movement ready" ; The End. "movement" is ready. (begin (for-each insertRestBeforeFalse MusObjectsOfCurrentPosition) (loop))) ;fill the tail with an infinity rest for each #f on current position. (begin mainBlock ; no #f on current position (set! minimum (GetStartTickMinimum MusObjectsOfCurrentPosition)) (for-each checkAndChange movement) ; always feed with the current state of the whole movement (set! positioncounter (1+ positioncounter)) (loop) )); if member #f? & begin mainBlock )); fill-with-redundancy! end ; Create the abstraction movement in multiple steps. They are all desctructive. ;;0 Create a helper list to with the tick offset for each measure. ;;1 parse everything, save the music as musobj. Notes, Chords, Rests ;;2 make all length equal by adding rests in the infinity to the ends. ;;3 one final #f to all staffs. The end is reached when all position return #f instead of a musobj ;;4 check if all start-ticks are the same, if not duplicate notes to fill the gaps ;;5 delete the tailing #f from the movement (define OffsetTickList #f) (define movement #f) (set! OffsetTickList (CreateOffsetTickListMovement)) (set! movement (createFinalList)) (apply list-equalizer! (make-musobj 'pitch (list +inf.0) 'movement #f 'staff #f 'measure #f 'horizontal #f 'metricalp #f 'start +inf.0 'duration #f 'baseduration #f 'dots #f) movement) (map (lambda (lst) (append! lst (list #f))) movement) (fill-with-redundancy! movement) (set! movement (map (lambda (lst) (drop-right lst 1)) movement)) movement) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Functions that use the abstractionmovement; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;PasteAbstractionMovement creates a new Denemo-tab and visualises the contents of an abstractionmovement there. (define (PasteAbstractionMovement abstractionmovement) ; For each staff (primary list in abstractionmovement) ; do inserting the pitch for every (for-each) object (d-NewWindow) ; creates a new movement with the same number of staffs (d-MoveToMovementBeginning) (for-each (lambda (staff) (d-AddAfter) (d-MoveToBeginning) (for-each (lambda (object) (if (not object) (d-MoveToStaffDown) ; move one down for the next iteration (ANS::InsertNotes (musobj.pitch object) 0 384))) staff)) abstractionmovement)) ;ApplyTestsToAbstractionMovementPositions takes functions and applies each to a value and returns a list of returnvalues. ;;Used in MapToAbstractionMovement (define (ApplyTestsToAbstractionMovementPositions previous current next . functions) (filter (lambda (x) (not (not x))) (concatenate (concatenate (map (lambda (proc) (call-with-values (lambda () (proc previous current next)) list)) functions))))) ;MapToAbstractionMovement wants an abstractionsmovement and functions ;; Each function will be applied to a vertical position (all notes which sound at the same time). The return values will be gathered in a list and then it advcances to the next vertical position until the end of the abstractionmovement. ;; Compatible functions must accept three parameters: Three lists of MusObjs: All notes from the previous, current and next position. Even if the functions discard one or two of these position internaly. ;; Compatible functions must return a list which members are either #f or pairs (cons 'tag data-you-like). In the end any #f will be deleted automatically. "Data-you-like" is mainly there to let Denemo find the place where the error is so you better include musobjs there. (define (MapToAbstractionMovement abstractmovement . functions) (define return #f) (set! abstractmovement (apply map list abstractmovement)) ; sync the voices vertically "in chords" by creating new list from each of the sublists. They all have the same length. (set! return (map ; this needs srfi-1 map which handles unequal list lengths (lambda (previous current next) (apply ApplyTestsToAbstractionMovementPositions previous current next functions)) (cons #f abstractmovement) abstractmovement (append (cdr abstractmovement) (list (last abstractmovement))))) (filter (lambda (x) (not (null? x))) (concatenate return))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Tests for MapToAbstractionMovement; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Basic functions ;; "AM::CapitalCamelCase" ;Find consecutive interval progressions in two pairs of notes (define* (AM::TestConsecutiveIntervalProgression previous current next proc interval tag #:optional (staffs #f)) (map (lambda (pair-current pair-next) (if (proc (car (musobj.pitch (cdr pair-current))) ;low1 (car (musobj.pitch (car pair-current))) ;high1 (car (musobj.pitch (cdr pair-next))) ;low2 (car (musobj.pitch (car pair-next))) ;high1 interval) (cons tag (cons pair-current pair-next)) #f)) (if staffs ;its possible to only check certain voices which may be in the optional staffs var. (GetUniquePairs (map (lambda (x) (list-ref current x)) staffs)) (GetUniquePairs current)) (if staffs (GetUniquePairs (map (lambda (x) (list-ref next x)) staffs)) (GetUniquePairs next)))) (define (AM::TestSimultaneousIntervalFromBaseMetricalMain previos current next interval tag) (define pairlist (GetUniquePairsFilterLowest current MusObj::minPitch)) (map (lambda (pair) (if (and (duration::MetricalMain? (musobj.metricalp (car pair))) (duration::MetricalMain? (musobj.metricalp (cdr pair))) (= interval (MusObj::GetInterval (car pair) (cdr pair)))) ; if interval and both notes are on a metrical main position (cons tag pair) #f)) pairlist)) (define (AM::TestSimultaneousIntervalFromBaseMetricalFirst previos current next interval tag) (define pairlist (GetUniquePairsFilterLowest current MusObj::minPitch)) (map (lambda (pair) (if (and (= 1 (musobj.metricalp (car pair))) (= 1 (musobj.metricalp (cdr pair))) (= interval (MusObj::GetInterval (car pair) (cdr pair)))) ; if interval and both notes are on the first metrical position (cons tag pair) #f)) pairlist)) ;AM::GenerateStaffList converts numbers and special symbols to a list of numbers which represents which of the staffs should be used for an AM::test ;;needs to know how many staffs there are and as many parameters as needed ;;parameters are plain numbers or special symbols ;; 'last the last staff ;; 'first the first staff, but better use 0. ;; '-3-5 from 3 to 5. Note the leading dash. (define (AM::GenerateStaffList staffcount . parameter) (set! parameter (delete-duplicates parameter)) parameter) ;Real Tests that can be used as MapToAbstractionMovement functions ;;"AM::lowerCamelCase" ;Just display all "chords", made of musobj ;;Debug only. Has a wrong return format. (define (AM::display previous current next) (list current)) ;Display all "chords" as lilypond pitches ;;Debug only. Has a wrong return format. (define (AM::displayLilypond previous current next) (map (lambda (x) (ANS::Ans2Ly (car (musobj.pitch x)))) current)) (define (AM::consecutive5th previous current next) (AM::TestConsecutiveIntervalProgression previous current next ANS::ConsecutiveOpen? 1 'consecutive5th)) (define (AM::consecutive8th previous current next) (AM::TestConsecutiveIntervalProgression previous current next ANS::ConsecutiveOpen? 0 'consecutive8th)) (define (AM::crossed5th previous current next) (AM::TestConsecutiveIntervalProgression previous current next ANS::ConsecutiveCrossed? 1 'crossed5th)) (define (AM::crossed8th previous current next) (AM::TestConsecutiveIntervalProgression previous current next ANS::ConsecutiveCrossed? 0 'crossed8th)) (define (AM::hidden5th previous current next) (AM::TestConsecutiveIntervalProgression previous current next ANS::ConsecutiveHidden? 1 'hidden5th)) (define (AM::hidden8th previous current next) (AM::TestConsecutiveIntervalProgression previous current next ANS::ConsecutiveHidden? 0 'hidden8th)) (define (AM::anti5th previous current next) (AM::TestConsecutiveIntervalProgression previous current next ANS::ConsecutiveAnti? 1 'anti5th)) (define (AM::anti8th previous current next) (AM::TestConsecutiveIntervalProgression previous current next ANS::ConsecutiveAnti? 0 'anti8th)) (define (AM::hiddencrossed5th previous current next) (AM::TestConsecutiveIntervalProgression previous current next ANS::ConsecutiveHiddenCrossed? 1 'hiddencrossed5th)) (define (AM::hiddencrossed8th previous current next) (AM::TestConsecutiveIntervalProgression previous current next ANS::ConsecutiveHiddenCrossed? 0 'hiddencrossed8th)) (define (AM::simultaneousFromBaseMetricalMain4th previos current next) (AM::TestSimultaneousIntervalFromBaseMetricalMain previos current next -1 'simultaneousBaseMain4th)) (define (AM::simultaneousFromBaseMetricalFirst8th previos current next) (AM::TestSimultaneousIntervalFromBaseMetricalFirst previos current next 0 'simultaneousBaseFirst8th)) (define (AM::simultaneousFromBaseMetricalFirst5th previos current next) (AM::TestSimultaneousIntervalFromBaseMetricalFirst previos current next 1 'simultaneousBaseFirst5th)) ;This function is not a test itself but generates a test-function (define (AM::generateHidden5th stafflist) (lambda (previous current next) (AM::TestConsecutiveIntervalProgression previous current next ANS::ConsecutiveHidden? 1 'hidden5th stafflist))) ;This function is not a test itself but generates a test-function (define (AM::generateHidden8thstaffs stafflist) (lambda (previous current next) (AM::TestConsecutiveIntervalProgression previous current next ANS::ConsecutiveHidden? 0 'hidden8th stafflist))) denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/notationmagick.scm0000644000000000000000000000013213135434035022620 xustar0030 mtime=1500919837.939981805 30 atime=1500919924.849981805 30 ctime=1500919912.939981805 denemo-2.2.0/actions/denemo-modules/notationmagick.scm0000644000175000017500000002116513135434035024476 0ustar00jjbenhamjjbenham00000000000000(use-modules (ice-9 optargs)) ; optional (define* ) arguments #!(define-module (actions denemo-modules notationmagick) #:export ( NotationMagick::AskNewNotationstring NotationMagick::AskNewAsciistring NotationMagick::MirrorSelection NotationMagick::ModifySelectedObjects NotationMagick::ReverseCopyBuffer NotationMagick::PutBinaryStringList NotationMagick::String->CharsAsBinary NotationMagick::ReverseStringsInList NotationMagick::InsertMemberRandomlyLy NotationMagick::RandomWithinClefRangeDiatonic NotationMagick::RandomWithinClefRangeChromatic )) !# ; Various scripts and variables for Denemos note-generation and filter section: NotationMagick ;; By Nils Gey 2010 ;; Global vars, used by several NotationMagick functions to remember the last value used (define NotationMagick::NOTATIONSTRING "c' e' g'") (define NotationMagick::ASCIISTRING "bach") ;; Ask for a new NOTATIONSTRING with an input-window, remember the value and return it as list of symbols for ANS (define (NotationMagick::AskNewNotationstring) (define new (d-GetUserInput "Enter Lilypond notes" "Please insert a list of lilypond notes, separated by Space." NotationMagick::NOTATIONSTRING)) (if new (begin (set! NotationMagick::NOTATIONSTRING new) (map string->symbol (string-tokenize NotationMagick::NOTATIONSTRING))) #f)) (define (NotationMagick::AskNewAsciistring) (define new (d-GetUserInput "Enter ASCII chars" "Please insert any kind and number of ASCII chars " NotationMagick::ASCIISTRING)) (if new (begin (set! NotationMagick::ASCIISTRING new) NotationMagick::ASCIISTRING) #f)) ; Lilypond wrappers for ANS functions ;;;;; ;Random Diatonic: Wrapper for Lilypond syntax (define* (NotationMagick::RandomDiatonicLy #:optional (from 'c,,,) (to 'b'''')) (ANS::RandomDiatonic (ANS::Ly2Ans from) (ANS::Ly2Ans to))) ;Random Chromatic: Wrapper for Lilypond syntax (define* (NotationMagick::RandomChromaticLy #:optional (from 'c,,,) (to 'b'''')) (ANS::RandomChromatic (ANS::Ly2Ans from) (ANS::Ly2Ans to))) ;Shuffled List Insert for Lilypond syntax (define (NotationMagick::InsertListRandomlyLy lylist) (ANS::InsertListRandomly (map ANS::Ly2Ans lylist))) ;Insert a random member of a list for Lilypond syntax (define (NotationMagick::InsertMemberRandomlyLy lylist) (ANS::InsertMemberRandomly (map ANS::Ly2Ans lylist))) ;; Insert a random note which is in a reasonable range according to the prevailing clef. Up to one step above/under the first Ledger line. ;; First the prototype, then one derived version for chromatic, one for diatonic. (define (NotationMagick::RandomWithinClefRange proc) (define currentclef (d-GetPrevailingClef)) (ANS::InsertNotes (cond ((string-ci=? currentclef "Treble") (proc 'b 'b'')) ((string-ci=? currentclef "Bass") (proc 'd, 'd')) ((string-ci=? currentclef "Alt") (proc 'c 'c'')) ((string-ci=? currentclef "Treble Octava bassa") (proc 'b, 'b')) ((string-ci=? currentclef "Bass Octava bassa") (proc 'd,, 'd)) ((string-ci=? currentclef "Tenor") (proc 'a, 'a')) ((string-ci=? currentclef "Soprano") (proc 'g 'g'')) ((string-ci=? currentclef "French") (proc 'd' 'd''')) ))) ;; Usable versions for diatonic and chromatic (define (NotationMagick::RandomWithinClefRangeDiatonic) (NotationMagick::RandomWithinClefRange NotationMagick::RandomDiatonicLy)) (define (NotationMagick::RandomWithinClefRangeChromatic) (NotationMagick::RandomWithinClefRange NotationMagick::RandomChromaticLy)) ; Generators and Cryptographic Functions ;;;;; ;Binary Rhythm Creation - Based on "Using Binary Numbers in Music" from Vi Hart. http://vihart.com ;Implementation by Nils Gey - Feb. 2011 #! From her paper: "Binary numbers used as rhythms (not to be confused with binary rhythms) can be used in music to create a mathematical aspect to a piece which can be heard and appreciated by mathematicians, yet still be pleasant to the ears of the uninitiated. Even someone who has never heard of binary numbers can still understand the patterns on an intuitive level. Binary numbers, especially those affiliated with computer science, have a structure which goes very well with the standard forms of music." "Binary Numbers as Rhythm. Let 1 be a note and 0 be a rest. Thus a number becomes a rhythm! In computer science, binary numbers are usually seen in groups of eight bits (a byte), which happens to fit perfectly into a 4/4 measure if we assign bits to eighth notes. Powers of two are involved in the usual form of western music, where four or eight bar phrases might make up a 16 measure section of a 64 measure song. This creates a constraint on the rhythm, but leaves the composer free to choose the melody." ASCII Code. 8bit. One 4/4 measure = one letter. The code for each lowercase letter used begins with 011, and the following five digits are the position of the letter in the alphabet. Lowercase “a,†then, is 01100001. You can reverse the ascii/binary digits to get more variation in the measure beginning. !# (define (NotationMagick::LeadingZerosFiller stringy digits) (define needed (- digits (string-length stringy))) (if (> (string-length stringy) digits) stringy (string-append (make-string needed #\0) stringy))) (define (NotationMagick::Char->binary char digits) (NotationMagick::LeadingZerosFiller (number->string (char->integer char) 2) digits)) (define (NotationMagick::String->CharsAsBinary stringy) (map (lambda (x) (NotationMagick::Char->binary x 8)) (string->list stringy))) ;Digit->binary is basically (number->string n 2) which fills with leading zeros to 4 digits. (define (NotationMagick::Digit->binary numbery) (define numberstring (number->string numbery 2)) (NotationMagick::LeadingZerosFiller numberstring 4)) (define (NotationMagick::ListOfNumbers->NumbersAsBinary listy digits) (map (lambda (x) (NotationMagick::LeadingZerosFiller (number->string x 2) digits)) listy)) ;This is of limited use because you can't access all 4-digit variations. 10-15 (decimal) are out of range. ;If you want those create your own list of numbers and use (define (NotationMagick::Number->DigitsAsBinary numbery) ; this is really awkward (define digitstringlist (map (lambda (x) (make-string 1 x)) (string->list (number->string numbery)))) (set! digitstringlist (map string->number digitstringlist)) (map NotationMagick::Digit->binary digitstringlist)) (define (NotationMagick::ReverseStringsInList listy) (map string-reverse listy)) ; Denemo connection (define (NotationMagick::PutBinaryString stringy) (define (PutBinary digit) (if (equal? digit #\0) (d-EnterRest)) (if (equal? digit #\1) (d-Enter) ; TODO: Replace this with a built-in version. #f)) (for-each PutBinary (string->list stringy))) (define (NotationMagick::PutBinaryStringList listy) (for-each NotationMagick::PutBinaryString listy)) ;TODO: Put binary as lyrics #! examples (d-Set3) (NotationMagick::PutBinaryStringList (NotationMagick::String->CharsAsBinary "bach")) ; bach (d-AddAfter) (NotationMagick::PutBinaryStringList (reverse (NotationMagick::String->CharsAsBinary "bach"))) ;hcab (d-AddAfter) (NotationMagick::PutBinaryStringList (NotationMagick::ReverseStringsInList (NotationMagick::String->CharsAsBinary "bach"))) ; bach, each ascii is reverted (d-AddAfter) (NotationMagick::PutBinaryStringList (reverse (NotationMagick::ReverseStringsInList (NotationMagick::String->CharsAsBinary "bach")))) ; hcab, each ascii is reverted !# ;Modify selections of notes. Reversing, Mirror and others. ;;;;; ;Modify a selection with a given proc ;;Example to reverse the selection: (NotationMagick::ModifySelectedObjects reverse) ;;Uses SchemeCopy and SchemePaste inside. Any sophisticated edit-proc has to deal with musobj functions (define (NotationMagick::ModifySelectedObjects proc) (if (d-MarkStatus) (let () (define position (GetPosition)) (define listy (SchemeCopy)) (d-DeleteSelectionLeaveEmpty) (SchemePaste (proc listy)) (apply d-GoToPosition position) #t) #f)) ; no selection (define (NotationMagick::MirrorSelection axis) (NotationMagick::ModifySelectedObjects (lambda (copybuffer) (ProcessSchemeCopyBufferMusObj (lambda (current) (set!musobj.pitch current ;The function to change a single ANS object which is a list/chordmembers (map (lambda (note) (+ note (* 2 (- axis note)))) (musobj.pitch current)))) copybuffer)))) (define (NotationMagick::ReverseCopyBuffer copybuffer) (set! copybuffer (reverse copybuffer)) ; reverse the entire list first. (map (lambda (current) (if (not (musobj? current)) (cond ((equal? (car current) 'TUPCLOSE) (set-car! current 'TUPOPEN)) ((equal? (car current) 'TUPOPEN) (set-car! current 'TUPCLOSE)) ; Switch tuplet end and start )) current) ; if not just return the original object copybuffer)) denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/rhythmandmeter.scm0000644000000000000000000000013213135434035022644 xustar0030 mtime=1500919837.939981805 30 atime=1500919924.863315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/denemo-modules/rhythmandmeter.scm0000644000175000017500000003037213135434035024522 0ustar00jjbenhamjjbenham00000000000000(use-modules (ice-9 optargs)) ; optional (define* ) arguments #!(define-module (actions denemo-modules rhythmandmeter) #:export ( GetPrevailingTimeSig GetMeasureTicks EmptyMeasure? UnderfullMeasure? FullDurationMeasure? OverfullMeasure? MeasureComplete? duration::GuessBaseNoteInTicks duration::CalculateTicksWithDots duration::CalculateDotsFromTicks duration::CalculateDotsFromTicks duration::GetNumberOfDotsInDenemo duration::denemo->lilypond duration::lilypond->denemo duration::denemo->ticks duration::lilypond->ticks duration::ticks->denemo duration::ticks->lilypond duration::SplitTicksToBaseDurations duration::GetNumberOfDotsInTicks duration::GetNumberOfDotsInTicks duration::GetNumberOfDotsInTicks duration::ChangeNoteDurationInTicks duration::InsertBaseDurationList duration::GetNumerator duration::GetDenominator duration::GetDenominatorInTicks duration::GetWholeMeasureInTicks duration::GetMetricalPosition duration::MetricalMain? ;d-GetStartTick )) !# (define* (GetPrevailingTimeSig #:optional (numberorstring #f) ) (if numberorstring (string->number (d-GetPrevailingTimesig)) (d-GetPrevailingTimesig))) (define GetPrevailingTimesig GetPrevailingTimeSig) ;(define (d-GetStartTick) ; (- (d-GetEndTick) (d-GetDurationInTicks))) ;Get Measure Filling Status in Ticks (define (GetMeasureTicks) (let script ((return 0)) (d-PushPosition) (GoToMeasureEnd) (set! return (d-GetEndTick)) (d-PopPosition) return)) ;;;the tick count at the end of the object at the cursor (define (GetTickCount) (let ((tick (d-GetEndTick))) (if tick tick 0))) (define (MeasureFillStatus) (define MaxTicks (* 1536 (GetPrevailingTimeSig #t) )) ; How many ticks are in a 100% filled measure? (define ActualTicks (GetMeasureTicks)) (cond ((not ActualTicks) #f) ; empty ((< ActualTicks MaxTicks) #f) ; underful ((= MaxTicks ActualTicks) 1) ; 100% filled ((< MaxTicks ActualTicks) 2) ; >100% filled (else (display "strange!")))) ; ? (define (EmptyMeasure?) (not (d-GetEndTick))) (define (ZeroDurationMeasure?) (or (EmptyMeasure?) (= (GetMeasureTicks) 0))) (define (UnderfullMeasure?) (or (EmptyMeasure?) (not (MeasureFillStatus)))) (define (FullDurationMeasure?) (and (not (UnderfullMeasure?)) (= 1 (MeasureFillStatus)))) (define (OverfullMeasure?) (eq? 2 (MeasureFillStatus))) ;;(and (not (EmptyMeasure?)) ;; (> (d-GetEndTick) (* 1536 (GetPrevailingTimeSig #t))))) (define (MeasureComplete?) (d-RefreshCache) (FullDurationMeasure?)) (define (AcceptableDurationMeasure?) (if (d-MoveToMeasureRight) (begin (d-MoveToMeasureLeft) (or (ZeroDurationMeasure?) (FullDurationMeasure?) (d-Directive-standalone? "!"))) #t)) (define (NextMeasureEmpty?) (define return #f) (d-PushPosition) (set! return (and (d-MoveToMeasureRight) (EmptyMeasure?))) (d-PopPosition) return) (define (EnsureEmptyNextMeasure all) (d-PushPosition) (if (not (NextMeasureEmpty?)) (if all (d-AddMeasure) (d-InsertMeasureAfter))) (d-PopPosition)) ;;;;;;;;;;Duration Conversions between Denemo, Lilypond and Tick syntax. ;; A table of common values ; 6 = 256 = 8 ;12 = 128 = 7 ;24 = 64 = 6 ;48 = 32 = 5 ;96 = 16 = 4 ;192 = 8 = 3 ;384 =4 = 2 ;768 = 2 = 1 ;1536 = 1 = 0 ;3072 = 0.5 = -1 ; Breve. 0.5 and -1 are not existend. Lilypond and Denemo use the string breve instead. ; Guile returns a value with .0, which should be exact but internally it's inexact. So we need this little back and forth conversion hack. ;(inexact->exact (string->number (number->string return)))) (define (duration::inexact->exact return) (define val (if return (string->number (number->string return)) 1)) ;(disp "Working with parameter " return " and val has become " val "which is " (exact? val) (inexact? val) "\n\n") (if (inexact? val) (set! val (truncate val))) (if (< return 0) 0 (if (inexact? val) (begin ;(disp "returning" (inexact->exact val) "\n\n") (inexact->exact val)) val))) ;Some functions, like Upbeat, know only a single tick-value. They need to guess the baseNote. (define (duration::GuessBaseNoteInTicks ticks) ; first guess the basic note duration. 2*x > ticks < 1*x is always true in our circumstance (cond ( (and (>= ticks 6) (< ticks 12)) 6 ) ;1/256 ( (and (>= ticks 12) (< ticks 24)) 12 ) ;1/128 ( (and (>= ticks 24) (< ticks 48)) 24) ;1/64 ( (and (>= ticks 48) (< ticks 96)) 48 ) ;1/32 ( (and (>= ticks 96) (< ticks 192)) 96) ;sixteen 1/16 ( (and (>= ticks 192) (< ticks 384)) 192 ) ; eight 1/8 ( (and (>= ticks 384) (< ticks 768)) 384 ) ; quarter 1/4 ( (and (>= ticks 768) (< ticks 1536)) 768) ; half 1/2 ( (and (>= ticks 1536) (< ticks 3072)) 1536 ) ; whole 1 ( (and (>= ticks 3072) (< ticks 6144)) 3072 ) ; breve 2*1 ( (and (>= ticks 6144) (< ticks 12288)) 6144) ; longa 4*1 ( (and (>= ticks 12288) (< ticks 24576)) 12288 ) ; maxima 8*1 (else #f))) ; Calculate a new Duration in Ticks with a basic note value and a number of augmentation-dots (define (duration::CalculateTicksWithDots baseTicks numberOfDots) ; x = basic note value ; n = number of dots ; 2x - x/2^n (- (* 2 baseTicks) (/ baseTicks (expt 2 numberOfDots)))) ; Calculate how many dots a tick value has. Needs base duration, too. (define (duration::CalculateDotsFromTicks ticks base) ; x = base , y = ticks. result is the number of dots ; log(x/(2*x-y)) / log(2) (define return (/ (log (/ base (- (* base 2) ticks))) (log 2) )) (duration::inexact->exact return)) ; Get Number of Dots from a Lilypond string like "2.". Its so basic it will work on Denemo notes, too. (define (duration::GetNumberOfDotsInLilypond input) (length (cdr (string-split input #\.)))) ; For the sake of completenes. Denemo and Lilypond dot-syntax is just the same, only the number itself is different. (define (duration::GetNumberOfDotsInDenemo input) (duration::GetNumberOfDotsInLilypond input)) (define (duration::denemo->lilypond number) (define return (expt 2 number)) return) (define (duration::lilypond->denemo number) (define return (/ (log number) (log 2)) ) (duration::inexact->exact return)) (define (duration::denemo->ticks number) ; increases with negative integers (define return (* (expt 2 (- 8 number)) 6)) return) (define (duration::lilypond->ticks number) ; increases with 0.5, 0.25 etc. (define return (* (expt 2 (- 8 (/ (log number) (log 2)))) 6)) (duration::inexact->exact return)) ;;returns a string for the shortfall in the current measure. has problems with exact/inexact stuff... (define (duration::shortfall) (define guess (duration::GuessBaseNoteInTicks (- (* 1536 (GetPrevailingTimeSig #t)) (GetMeasureTicks)))) (if guess (duration::ticks->denemo (- (* 1536 (GetPrevailingTimeSig #t)) (GetMeasureTicks)) guess) #f)) ;;;this simple version works for say a crotchet upbeat... (define (duration::shortfall) (duration::ticks->denemo (- (* 1536 (GetPrevailingTimeSig #t)) (GetMeasureTicks)) (duration::GuessBaseNoteInTicks (- (* 1536 (GetPrevailingTimeSig #t)) (GetMeasureTicks))))) ; Ticks->Denemo wants a number but returns a string because of dots (define* (duration::ticks->denemo number #:optional (basenumber number)) (define numberOfDots (duration::CalculateDotsFromTicks number basenumber)) ;n = -(log(y/3)-9*log(2))/log(2) (define return (- (/ (- (log (/ basenumber 3)) (* 9 (log 2))) (log 2)))) (set! return (duration::inexact->exact return)) (string-append (number->string return) (string-concatenate (make-list numberOfDots ".")))) ;Ticks->Lilypond wants a number but returns a string because of dots (define* (duration::ticks->lilypond number #:optional (basenumber number)) ;Equation in readable form: http://www.numberempire.com/equationsolver.php?function=y+%3D+6*2^%288-n%29&var=n&answers= (define numberOfDots (duration::CalculateDotsFromTicks number basenumber)) (define return (expt 2 (- (/ (- (log (/ basenumber 3)) (* 9 (log 2))) (log 2))))) (set! return (duration::inexact->exact return)) (string-append (number->string return) (string-concatenate (make-list numberOfDots ".")))) ;SplitTicksToBaseDurations wants a single tick value as number and splits it to the lowest count of base durations ;;Returns a list of base durations ;;TODO: if the last step is no BaseDuration return it anyway and an additional #f to signal the problem. Most likely someone tried to involve an incomplete tuplet. ;;TODO: Basic version. Duration will be correct but maybe ugly. (define (duration::SplitTicksToBaseDurations ticks) (let loop ((number ticks) (returnlist (list #f))) (define basedur (duration::GuessBaseNoteInTicks number)) (if basedur (loop (- number basedur) (append returnlist (list basedur))) (if (= number 0) (list-tail returnlist 1) (list-tail (append returnlist (list number #f)) 1))))) ;;;;;;;;;; End of duration-conversion ;; Applied duration scripts (define (duration::GetNumberOfDotsInTicks) ; Fails for tuplets (duration::CalculateDotsFromTicks (d-GetDurationInTicks) (duration::GetBaseDurationInTicks))) (define (duration::GetBaseDurationInTicks) (define ticks (d-GetBaseDurationInTicks)) (if ticks (abs ticks) #f)) (define (duration::GetSelectionDurationInTicks) (if (d-MarkStatus) (apply + (MapToSelection d-GetDurationInTicks Music?)) #f)) (define* (duration::ChangeNoteDurationInTicks ticks #:optional (dots 0)) ; First change the base-duration. The d-Change commands also delete any dots. (define (changeBase number) (case number ;((12288) (d-ChangeMaxima)) ;Maxima ((6144) (d-ChangeLonga)) ; Longa ((3072) (d-ChangeBreve)) ; Breve ((1536) (d-Change0)) ; Whole ((768) (d-Change1)) ; Half ((384) (d-Change2)) ; Quarter ((192) (d-Change3)) ; Eighth ((96) (d-Change4)) ; Sixteenth ((48) (d-Change5)) ; 1/32 ((24) (d-Change6)) ; 1/64 ((12) (d-Change7)) ; 1/128 ((6) (d-Change8)) ; 1/256 (else #f ))) ; Second step: add dots ; d-ChangeN work on appending position, but Breve and Longa not. But d-AddDot works on appending, too. So we must rule Appending out, else it will add dots without changing the duration for breve and longa. (if (and (Music?) (integer? ticks) (integer? dots) (changeBase ticks)) ; <-- the action changeBase itself needs to be a test, too. (let loop ((i 0)) (if (= dots i) #t (begin (d-AddDot) (loop (+ i 1))))) #f)) (define (duration::InsertBaseDurationList basedurlist ansNotes) (define itemnumber (length basedurlist)) (let loop ((counter 0)) (if (and (> counter 0) (= (list-ref basedurlist counter) (/ (list-ref basedurlist (1- counter)) 2))) ; current duration is half of previous one = current is a dot. First position excluded. (begin (d-MoveCursorLeft) (d-AddDot) (d-MoveCursorRight)) (begin (ANS::InsertNotes ansNotes) (d-MoveCursorLeft) (duration::ChangeNoteDurationInTicks (list-ref basedurlist counter)) (d-ToggleTie) (d-MoveCursorRight))) (if (>= counter (1- itemnumber)) (begin (d-MoveCursorLeft) (d-ToggleTie) (d-MoveCursorRight) #t) ; last item was already inserted. Undo the last tie. The End. (begin (loop (1+ counter)))))) ;; Meter related functions (define (duration::GetNumerator) (string->number (car (string-split (GetPrevailingTimeSig) #\/)))) (define (duration::GetDenominator) (string->number (cadr (string-split (GetPrevailingTimeSig) #\/)))) (define (duration::GetDenominatorInTicks) (* 1536 (/ 1 (duration::GetDenominator)))) (define (duration::GetWholeMeasureInTicks) (* 1536 (GetPrevailingTimeSig #t))) (define (duration::GetMetricalPosition) (if (MeasureEmpty?) 1 (1+ (/ (d-GetStartTick) (duration::GetDenominatorInTicks))))) (define (duration::MetricalMain? position) (integer? position)) denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/commandlist.scm0000644000000000000000000000013213135434035022123 xustar0030 mtime=1500919837.939981805 30 atime=1500919924.883315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/denemo-modules/commandlist.scm0000644000175000017500000000626413135434035024004 0ustar00jjbenhamjjbenham00000000000000#!(use-modules (srfi srfi-1)) ; List library. Needed for list-index (define-module (actions denemo-modules commandlist) #:export ( CommandListScrollUp CommandListScrollDown )) !# #! A set of functions to provide scrolling up and down through a list of commands. In other words: An extended toggle through multiple states. Intended to change a current preferences or existing object to another status. Scroll through barlines to make a double barline an open repeat and after that a close repeat or vice versa. Scroll through the prevailing duration. Works optimal with a midi modwheel or other midi controllers. Minimal button/controller use for accessing multiple commands and states. CommandListScrollUp and CommandListScrollDown want a special list: Syntax: CommandList::UPPERCASE is a list of pairs: (key command/procname) Each key only once. The key must be something that can be retrieved by a Denemo d-Get... function. It can be any data type that works with (equal? ...) Each command should be mutaly exclusive: d-Set0 revokes d-Set2 and commands about a certain lilypond directive should take care of overwriting/deleting the old version first. Example, which copies d-MoveCursorUp in a more complex way :) Used as CursorUp this will do pentatonic steps. (define CommandList::PENTATONIC (list (cons "c" d-MoveToC) (cons "d" d-MoveToD) (cons "e" d-MoveToE) (cons "g" d-MoveToG) (cons "a" d-MoveToA))) (CommandListScrollUp CommandList::CURSOR-Y (d-GetCursorNote)) !# ;This list-ref version makes a normal list a pseudo circular-list where you can give integers to list-ref out of the lists range. ;; Supports integers up to double list length ;; Supports negative integers down to negative list length. (define (CommandList:list-ref listy integer) (define listlength (length listy)) (if (>= integer listlength) ; Support integer up to double length (set! integer (- integer listlength))) (if (negative? integer) (set! integer (+ integer listlength))) ; support integer down to negative length. (list-ref listy integer)) (define (CommandListScrollUp commandlist current) ;Find the current list position with list-index, increase the position and return a new value from the same list. (; execute the resulting command (cdr (CommandList:list-ref commandlist (1+ (list-index (lambda (x) (equal? (car x) current)) commandlist)))))) (define (CommandListScrollDown commandlist current) ;Find the current list position with list-index, decrease the position and return a new value from the same list. (; execute the resulting command (cdr (CommandList:list-ref commandlist (1- (list-index (lambda (x) (equal? (car x) current)) commandlist)))))) ;Definitions of lists ;;TODO: Scroll through different barlines. Problem: You still have to enter at least one. Maybe a higher level script can take care of inserting one. ;;;In the end: Write a wrapper function for single objects (no selections!!) that gets the type of an object and scrolls afterwards. (define CommandList::PREVAILINGDURATION (list (cons -3072 d-SetBreve) (cons -6144 d-SetLonga) (cons 0 d-Set0) (cons 1 d-Set1) (cons 2 d-Set2) (cons 3 d-Set3) (cons 4 d-Set4) (cons 5 d-Set5) (cons 6 d-Set6) (cons 7 d-Set7))) denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/directives.scm0000644000000000000000000000013213135434035021752 xustar0030 mtime=1500919837.939981805 30 atime=1500919924.883315139 30 ctime=1500919912.936648472 denemo-2.2.0/actions/denemo-modules/directives.scm0000644000175000017500000004346513135434035023637 0ustar00jjbenhamjjbenham00000000000000; Prototype to insert Lilypond Standalone Directives. Wants a pair with car Tag and cdr lilypond: (cons "BreathMark" "\\breathe") (define* (StandAloneDirectiveProto pair #:optional (step? #t) (graphic #f) (displaytext #f) (minpixels #f) (data #f) (overrides #f)) (d-Directive-standalone (car pair)) (d-DirectivePut-standalone-postfix (car pair) (cdr pair)) (d-DirectivePut-standalone-minpixels (car pair) 30) (if data (d-DirectivePut-standalone-data (car pair) data)) (if graphic ;If the user specified a graphic use this, else greate a display text (begin (d-DirectivePut-standalone-graphic (car pair) graphic) (d-DirectivePut-standalone-override (car pair) DENEMO_OVERRIDE_GRAPHIC))) (if displaytext (d-DirectivePut-standalone-display (car pair) displaytext) (d-DirectivePut-standalone-display (car pair) (cdr pair))) (if minpixels (d-DirectivePut-standalone-minpixels (car pair) minpixels)) (if overrides (d-DirectivePut-standalone-override (car pair) overrides)) (if step? (d-MoveCursorRight)) (d-RefreshDisplay)) (define (EditStandaloneDirective tag display) (define (EditLilyPond) (define current (d-DirectiveGet-standalone-postfix tag)) (if tag (let ((text (d-GetUserInput (_ "Modifying the LilyPond Text") (_ "Give LilyPond syntax to be emitted by this Denemo Directive") current))) (if text (begin (d-DirectivePut-standalone-postfix tag text) (d-SetSaved #f)) (d-InfoDialog (_ "Cancelled")))) (d-InfoDialog (_ "This directive currently creates no LilyPond via its postfix field, use the Advanced Edit instead")))) (define choice (RadioBoxMenu (cons (_ "Help ") 'help) (cons (_ "Delete") 'delete) (cons (_ "Edit LilyPond") 'lilypond) (cons (_ "Advanced") 'advanced))) (case choice ((delete) (d-DirectiveDelete-standalone tag)) ((help) (d-InfoDialog (_ "This is a Directive object.\nDouble click on it to get information about it."))) ((lilypond) (EditLilyPond)) ((advanced) (d-DirectiveTextEdit-standalone tag)) ((#f) (d-InfoDialog (_ "Cancelled"))))) ; Procedure to insert Self-Editing Lilypond Standalone Directives. Takes a pair with car Tag and cdr lilypond: (cons "BreathMark" "\\breathe") with optional boolean to step right after insertion and graphic (define* (StandAloneSelfEditDirective pair #:optional (step? #t) (graphic #f) (displaytext #f) (minpixels #f) (overrides #f)) (if (d-Directive-standalone? (car pair)) (EditStandaloneDirective (car pair) displaytext) (StandAloneDirectiveProto pair step? graphic displaytext minpixels overrides))) ;Wrapper to attach any lilypond directive anywhere. ;;Wants four strings and an arbitrary number of tags (numbers) for overrides. ;;the tag parameter can be a single string or a pair. A single string is both the tag and display, a pair is (cons "tag" "display") (define (AttachDirective type field tag content . overrides) (define proc-put (string-append "d-DirectivePut-" type "-" field)) ;(define proc-get (string-append "d-DirectiveGet-" type "-" field)) ;(define proc-del (string-append "d-DirectiveDelete-" type)) (define proc-dis (string-append "d-DirectivePut-" type "-display")) (define proc-ovr (string-append "d-DirectivePut-" type "-override")) (define dis #f) (if (pair? tag) (begin (set! dis (cdr tag)) (set! tag (car tag))) (set! dis tag)) ((eval-string proc-put) tag content) (if (member DENEMO_OVERRIDE_GRAPHIC overrides) ; If DENEMO_OVERRIDE_GRAPHIC is there just go on ((eval-string proc-ovr) tag (apply logior overrides)) (if (equal? type "staff") ; if not test if its a staff directive: we must enforce graphic to make sure staff-icons work. ((eval-string proc-ovr) tag (apply logior (append (list DENEMO_OVERRIDE_GRAPHIC) overrides))) ((eval-string proc-ovr) tag (apply logior overrides)))) ; not a staff, everythings ok without DENEMO_OVERRIDE_GRAPHIC ((eval-string proc-dis) tag dis) (d-SetSaved #f) #t) (define (EditStaffDirective tag) (let ((choice #f)) (begin (set! choice (d-GetOption (string-append cue-Delete stop cue-Advanced stop))) (cond ((boolean? choice) (d-WarningDialog (_ "Operation cancelled"))) ((equal? choice cue-Advanced) (d-DirectiveTextEdit-staff tag)) ((equal? choice cue-Delete) (d-DirectiveDelete-staff tag)))))) ; ToggleDirective is a script to help you by creating and deleting Denemo-Directives with the same command. ;; return value is #t if directive was created or #f if it was deleted. This can be used as hook for further scripting. ;; example (ToggleDirective "staff" "prefix" "Ambitus" "\\with { \\consists \"Ambitus_engraver\" }") (define (ToggleDirective type field tag content . overrides) ; four strings and an arbitrary number of flags (numbers) for override field. (define proc-get (string-append "d-DirectiveGet-" type "-" field)) (define proc-del (string-append "d-DirectiveDelete-" type)) (define dis #f) (if (pair? tag) (begin (set! dis (cdr tag)) (set! tag (car tag))) (set! dis tag)) (if ((eval-string proc-get) tag) (begin ((eval-string proc-del) tag) (d-SetSaved #f) #f) (apply AttachDirective type field (cons tag dis) content overrides))) ;;;;;;provides the editing options for a standalone directive that can only be toggled off/on. (define (EditForStandaloneToggle tag) (let ((choice (RadioBoxMenu (cons (_ "Help") 'help) (cons (_ "Edit Similar") 'similar) (cons (_ "Object Inspector") 'inspect) (cons (_ "Delete") 'delete)))) (case choice ((similar) (d-EditSimilar)) ((help) (let ((thehelp (d-GetHelp tag))) (if (string? thehelp) (d-InfoDialog thehelp #f) (d-InfoDialog (_ "No help!"))))) ((inspect) (d-DisplayCurrentObject)) ((delete) (d-DirectiveDelete-standalone tag))))) ; d-DirectivePut-standalone a convenience function for standalone directives (define (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-minpixels tag 0) (d-MoveCursorLeft)) (define (d-Directive-standalone tag) (if (not (d-Directive-standalone? tag)) (d-DirectivePut-standalone tag))) (define* (d-Directive-standalone? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-standalone "")) (equal? tag (d-DirectiveGetForTag-standalone tag)))) (define (d-DirectiveGetTag-standalone) (d-DirectiveGetForTag-standalone "")) ; d-DirectivePut-score a convenience function for score directives (define (d-DirectivePut-score tag) (d-DirectivePut-score-minpixels tag 0)) (define (d-Directive-score tag) (d-DirectivePut-score tag)) ;;procedure for creating/updating a directive attached to the the score expects the parameters a test for the directive already present a procedure for putting the directive one for deleting it a tag then two fields for getting a new value a default value a proc for testing the validity of the value and information to give the user when the directive is deleted. (define (ManageSystemDirective params present? put-proc get-proc del-proc tag title prompt value test deletion-info) (if (number? params) (begin (put-proc (number->string params))) (begin (if (present? tag) (let ((choice (RadioBoxMenu (cons (_ "Help") 'help) (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete)))) (case choice ((help) (let ((thehelp (d-GetHelp tag))) (set! params 'cancel) (if (string? thehelp) (d-InfoDialog thehelp #f) (d-InfoDialog (_ "No help!"))))) ((delete) (d-SetSaved #f) (del-proc tag) (set! params 'cancel) (d-InfoDialog deletion-info #f)) ;#f => modal ((edit) (set! params (get-proc)) (if (test params) (begin (set! value params) (set! params #f)) (set! params 'cancel)))))) (if (not (eq? params 'cancel)) (let ((value (d-GetUserInput title prompt value))) (if (test value) (put-proc value))))))) (define* (d-Directive-chord? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-chord "")) (equal? tag (d-DirectiveGetForTag-chord tag)))) (define (d-DirectiveGetTag-chord) (d-DirectiveGetForTag-chord "")) (define* (d-Directive-note? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-note "")) (equal? tag (d-DirectiveGetForTag-note tag)))) (define (d-DirectiveGetTag-note) (d-DirectiveGetForTag-note "")) (define* (d-Directive-score? #:optional (tag #f)) (if tag (d-DirectiveGetForTag-score tag) (d-DirectiveGetForTag-score ""))) (define (d-DirectiveGetTag-score) (d-DirectiveGetForTag-score "")) (define* (d-Directive-scoreheader? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-scoreheader "")) (equal? tag (d-DirectiveGetForTag-scoreheader tag)))) (define (d-DirectiveGetTag-scoreheader) (d-DirectiveGetForTag-scoreheader "")) (define* (d-Directive-movementcontrol? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-movementcontrol "")) (equal? tag (d-DirectiveGetForTag-movementcontrol tag)))) (define (d-DirectiveGetTag-movementcontrol) (d-DirectiveGetForTag-movementcontrol "")) (define* (d-Directive-header? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-header "")) (equal? tag (d-DirectiveGetForTag-header tag)))) (define (d-DirectiveGetTag-header) (d-DirectiveGetForTag-header "")) (define* (d-Directive-paper? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-paper "")) (equal? tag (d-DirectiveGetForTag-paper tag)))) (define (d-DirectiveGetTag-paper) (d-DirectiveGetForTag-paper "")) (define* (d-Directive-layout? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-layout "")) (equal? tag (d-DirectiveGetForTag-layout tag)))) (define (d-DirectiveGetTag-layout) (d-DirectiveGetForTag-layout "")) (define* (d-Directive-staff? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-staff "")) (equal? tag (d-DirectiveGetForTag-staff tag)))) (define (d-DirectiveGetTag-staff) (d-DirectiveGetForTag-staff "")) (define* (d-Directive-voice? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-voice "")) (equal? tag (d-DirectiveGetForTag-voice tag)))) (define (d-DirectiveGetTag-voice) (d-DirectiveGetForTag-voice "")) (define* (d-Directive-clef? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-clef "")) (equal? tag (d-DirectiveGetForTag-clef tag)))) (define (d-DirectiveGetTag-clef) (d-DirectiveGetForTag-clef "")) (define* (d-Directive-keysig? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-keysig "")) (equal? tag (d-DirectiveGetForTag-keysig tag)))) (define (d-DirectiveGetTag-keysig) (d-DirectiveGetForTag-keysig "")) (define* (d-Directive-timesig? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-timesig "")) (equal? tag (d-DirectiveGetForTag-timesig tag)))) (define (d-DirectiveGetTag-timesig) (d-DirectiveGetForTag-timesig "")) (define* (d-Directive-stemdirective? #:optional (tag #f)) (if (equal? tag #f) (string? (d-DirectiveGetForTag-stemdirective "")) (equal? tag (d-DirectiveGetForTag-stemdirective tag)))) (define (d-DirectiveGetTag-stemdirective) (d-DirectiveGetForTag-stemdirective "")) (define (d-DirectiveDelete-standalone Tag) (if (equal? (d-DirectiveGetTag-standalone) Tag) (begin (d-DeleteObject) #t) #f)) (define* (ToggleChordDirective tag fontname lilypond #:optional (override #f) (display #f)) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (if fontname (begin (d-DirectivePut-chord-gx tag 7) (d-DirectivePut-chord-graphic tag fontname))) (if display (d-DirectivePut-chord-display tag display)) (d-DirectivePut-chord-postfix tag lilypond) (if override (d-DirectivePut-chord-override tag override)) (d-SetSaved #f)))) (define* (SetDirectiveConditional #:optional (directive #f) (type/tag #f)) (define choice (if (equal? (d-StaffProperties "query=lily_name") (d-GetLayoutName)) (RadioBoxMenu (cons (string-append (_ "Allow for Layout \"") (d-GetLayoutName) "\"") 'default) (cons (string-append (_ "Ignore for Layout \"") (d-GetLayoutName) "\"") 'ignore-default) (cons (_ "For all Layouts") 'all)) (RadioBoxMenu (cons (string-append (_ "Allow for the Layout for Part \"") (d-StaffProperties "query=lily_name") "\"") 'only) (cons (string-append (_ "Ignore for the Layout for Part \"") (d-StaffProperties "query=lily_name") "\"") 'ignore-only) (cons (string-append (_ "Allow for Layout \"") (d-GetLayoutName) "\"") 'default) (cons (string-append (_ "Ignore for Layout \"") (d-GetLayoutName) "\"") 'ignore-default) (cons (_ "For all Layouts") 'all)))) (if type/tag (case choice ((ignore-only) ((eval-string (string-append "d-DirectivePut-" (car type/tag) "-ignore")) (cdr type/tag) (d-GetCurrentStaffLayoutId)) (disp "Issued " (string-append "d-DirectivePut-" (car type/tag) "-ignore") " with tag " (cdr type/tag) " and id " (d-GetCurrentStaffLayoutId))) ((ignore-default) ((eval-string (string-append "d-DirectivePut-" (car type/tag) "-ignore")) (cdr type/tag) (d-GetLayoutId)) (disp "Issued " (string-append "d-DirectivePut-" (car type/tag) "-ignore") " with tag " (cdr type/tag) " and id " (d-GetLayoutId)) ) ((all) ((eval-string (string-append "d-DirectivePut-" (car type/tag) "-ignore")) (cdr type/tag) 0) ((eval-string (string-append "d-DirectivePut-" (car type/tag) "-allow")) (cdr type/tag) 0)) ((default) ((eval-string (string-append "d-DirectivePut-" (car type/tag) "-allow")) (cdr type/tag) (d-GetLayoutId))) ((only) ((eval-string (string-append "d-DirectivePut-" (car type/tag) "-allow")) (cdr type/tag) (d-GetCurrentStaffLayoutId)))) (if (pair? directive) (case choice ((ignore-only) (d-DirectiveNotForLayout (cons (cons (d-StaffProperties "query=lily_name") (d-GetCurrentStaffLayoutId)) directive))) ((ignore-default) (d-DirectiveNotForLayout (cons (cons (d-GetLayoutName) (d-GetLayoutId))directive))) ((all) (d-DirectiveForAllLayouts directive)) ((default) (d-DirectiveOnlyForLayout (cons (cons (d-GetLayoutName) (d-GetLayoutId)) directive))) ((only) (d-DirectiveOnlyForLayout (cons (cons (d-StaffProperties "query=lily_name") (d-GetCurrentStaffLayoutId)) directive)))) (case choice ((ignore-only) (d-NotForLayout (cons (d-StaffProperties "query=lily_name") (d-GetCurrentStaffLayoutId)))) ((ignore-default) (d-NotForLayout (cons (d-GetLayoutName) (d-GetLayoutId)))) ((all) (d-ForAllLayouts)) ((default) (d-OnlyForLayout (cons (d-GetLayoutName) (d-GetLayoutId)))) ((only) (d-OnlyForLayout (cons (d-StaffProperties "query=lily_name") (d-GetCurrentStaffLayoutId)))))))) ;;; Toggle the DENEMO_OVERRIDE_HIDDEN override of the directive at the cursor (define (ToggleHidden type tag) ;;; eg (ToggleHidden "note" "Fingering") (if (eval-string (string-append "(d-Directive-" type "? \"" tag "\")")) (let ((override (eval-string (string-append "(d-DirectiveGet-" type "-override " "\"" tag "\")")))) (eval-string (string-append "(d-DirectivePut-" type "-override " "\"" tag "\" " "(logxor DENEMO_OVERRIDE_HIDDEN " (number->string override) "))"))) #f)) (define d-DirectiveGet-standalone-graphic d-DirectiveGet-standalone-graphic_name) (define d-DirectiveGet-chord-graphic d-DirectiveGet-chord-graphic_name) (define d-DirectiveGet-note-graphic d-DirectiveGet-note-graphic_name) (define d-DirectiveGet-clef-graphic d-DirectiveGet-clef-graphic_name) (define d-DirectiveGet-keysig-graphic d-DirectiveGet-keysig-graphic_name) (define d-DirectiveGet-timesig-graphic d-DirectiveGet-timesig-graphic_name) (define d-DirectiveGet-tuplet-graphic d-DirectiveGet-tuplet-graphic_name) denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/scheme.scm0000644000000000000000000000013213135434035021055 xustar0030 mtime=1500919837.939981805 30 atime=1500919924.913315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/denemo-modules/scheme.scm0000644000175000017500000002672213135434035022737 0ustar00jjbenhamjjbenham00000000000000(use-modules (srfi srfi-1)) ; List library ;; In this file are only functions that enhance the traditional Guile functions. Nothing depends on any Denemo functions nor on anything which is not in this file. There might be dependencies between each other though. Conclusion: This file can be run from guile without any errors about functions not found. ; Create a seed for (random int) one time Denemo starts. The seed is altered by random itself afterwards. (let ((time (gettimeofday))) (set! *random-state* (seed->random-state (+ (car time) (cdr time))))) ;Blank clears the console output. Don't use in released scripts, only for debugging. (define (Blank) (system "clear")) ;disp is an advanced display. Just give anything you want to print, it appends strings automatically and does a line break in the end. Don't use in released scripts, only for debugging. (define disp (lambda args (letrec ((disp-in (lambda (arg) (if (null? arg) #f (begin (display (car arg)) (disp-in (cdr arg))))))) (disp-in args) (newline)))) ;Doublequote constant to avoid backslashing (define DBLQ "\"") ;Linefeed constant to avoid backslashing (define LFEED "\n") ;Stop constant to avoid backslashing (define stop "\0") ; A function that returns #f for cases where commands work with chunks of code. this prevents the spamming of (lambda () #f) for a function that returns #f. (define (False) #f) ; A function that returns #t. See (False) (define (True) #t) ;repeat executes a proc n times (define (Repeat proc n) (let loop ((counter 0)) (if (> n counter) (begin (proc) (loop (1+ counter)))))) ;Repeat a command until it returns #f ;Warning: Functions that do not return #f create infinity loops! (define (RepeatUntilFail proc) (let loop () (if (proc) (loop) #f))) ;Repeat a function while another (a test) returns #t. The return value of proc does NOT matter ;;Warning: From all Repeat functions this one has the highest probability to be stuck in a loop forever. Always use tests that MUST return #f in the end. Do NOT use the Denemo tests like (None?) or (Music?) for example, they know nothing about a staffs end. (define (RepeatProcWhileTest proc test) (RepeatUntilFail (lambda () (if (test) (begin (proc) #t); this is a dumb script. It will try to execute proc again even if proc itself returned #f. #f )))) ; test failed, let RepeatUntilFail fail. ; String Escaper ;; Escapes Strings ;; from brlewis http://srfi.schemers.org/srfi-13/mail-archive/msg00025.html ;;; esc should be a list of pairs, each pair is a character and a substitute string. (define (string-escaper esc) (let ((spec (char-escape-spec esc))) (lambda (str) (string-escape str spec)))) (define (string-needs-escape? str esc) (let ((len (string-length str))) (let loop ((i 0)) (if (= i len) #f (let ((c (string-ref str i))) (if (and (char>=? c (car esc)) (char<=? c (cadr esc))) #t (loop (+ 1 i)))))))) (define (string-escape str esc) (if (string-needs-escape? str esc) (list->string (reverse (let ((len (string-length str))) (let loop ((i 0) (li '())) (if (= i len) li (loop (+ 1 i) (let ((c (string-ref str i))) (if (and (char>=? c (car esc)) (char<=? c (cadr esc))) (let ((li2 (vector-ref (caddr esc) (- (char->integer c) (char->integer (car esc)))))) (if li2 (append li2 li) (cons c li))) (cons c li))))))))) str)) (define (char-escape-spec speclist) (let ((minchar (caar speclist)) (maxchar (caar speclist))) (let loop ((li (cdr speclist))) (if (not (null? li)) (begin (let ((testchar (caar li))) (if (char? testchar maxchar) (set! maxchar testchar))) (loop (cdr li))))) (list minchar maxchar (let ((specv (make-vector (+ 1 (- (char->integer maxchar) (char->integer minchar))) #f))) (map (lambda (specpair) (vector-set! specv (- (char->integer (car specpair)) (char->integer minchar)) (reverse (string->list (cdr specpair))))) speclist) specv)))) ;; examples of use (define html-escape (string-escaper '((#\< . "<") (#\> . ">") (#\& . "&")))) (define scheme-escape (string-escaper '((#\\ . "\\\\") (#\" . "\\\"")))) (define lilypond-markup-escape (string-escaper '((#\\ . "\\\\") (#\# . "\"#\"") (#\" . "\\\"")))) #! (define latex-escape (string-escaper '((#\\ . "\\\\") (#\~ . "\\~") (#\# . "\\#") (#\$ . "\\$") (#\% . "\\%") (#\^ . "\\^") (#\& . "\\&") (#\{ . "\\{") (#\} . "\\}") (#\_ . "\\_")))) !# ;;;;;;;;;; Parse strings for json values (define (ParseJson target key) (let ((theregexp #f) (thematch #f)) ;;; this is the regexp to find "key":"something" with the something being the match, ie in () (set! theregexp (string-append "\"" key "\":\"([^\"]*)\"")) ;;;;; this gets a match structure for target, so if there is a match (set! thematch (string-match theregexp target)) (if (regexp-match? thematch) ;;; if there was a match return it (match:substring thematch 1) ;;;if there was no match return #f #f))) ; Shuffling Sequences ;;; http://mumble.net/~campbell/scheme/shuffle.scm ;;; This code is written by Taylor R. Campbell and placed in the Public ;;; Domain. All warranties are disclaimed. ;;; This uses SRFIs 1 (list-lib) and 8 (receive). (use-modules (srfi srfi-1)) ; List library (use-modules (srfi srfi-8)) ; Returning and Accepting Multiple Values ;;;; Merge Shuffle ;;; Partition the list into two equal halves; shuffle the two halves, ;;; and then merge them by randomly choosing which half to select the ;;; next element from. (define (Flip-coin) (if (= 1 (random 2)) #t #f)) (define (Merge-shuffle-list list) (define (merge a b) (cond ((not (pair? a)) b) ((not (pair? b)) a) (else (if (Flip-coin) (cons (car a) (merge (cdr a) b)) (cons (car b) (merge a (cdr b))))))) (define (partition list a b) (let ((next (cdr list)) (a b) (b (cons (car list) a))) (if (null-list? next) (values a b) (partition next a b)))) (if (null-list? list) '() (let shuffle ((list list)) (if (null-list? (cdr list)) list (receive (a b) (partition list '() '()) (merge (shuffle a) (shuffle b))))))) ;;; This has *far* too many SET-CDR!s. (define (Merge-shuffle-list! list) (define (merge! a b) (cond ((null-list? a) b) ((null-list? b) a) ((Flip-coin) (%merge! a b) a) (else (%merge! b a) b))) (define (%merge! a b) (cond ((null-list? (cdr a)) (set-cdr! a b)) ((Flip-coin) (%merge! (cdr a) b)) (else (%merge! b (let ((next (cdr a))) (set-cdr! a b) next))))) (define (partition! list a b) (let ((next (cdr list))) (set-cdr! list a) (if (null-list? next) (values list b) (partition! next b list)))) (if (null-list? list) '() (let shuffle! ((list list)) (if (null-list? (cdr list)) list (receive (a b) (partition! list '() '()) (merge! (shuffle! a) (shuffle! b))))))) ;; End Shuffle ; from http://icem.folkwang-hochschule.de/~finnendahl/cm_kurse/doc/t-y-scheme/t-y-scheme-Z-H-7.html ;; needed for define-macro defstruct (define list-position (lambda (o l) (let loop ((i 0) (l l)) (if (null? l) #f (if (eqv? (car l) o) i (loop (+ i 1) (cdr l))))))) ; from http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme-Z-H-11.html#node_sec_9.2 (define-macro (defstruct s . ff) (let ((s-s (symbol->string s)) (n (length ff))) (let* ((n+1 (+ n 1)) (vv (make-vector n+1))) (let loop ((i 1) (ff ff)) (if (<= i n) (let ((f (car ff))) (vector-set! vv i (if (pair? f) (cadr f) '(if #f #f))) (loop (+ i 1) (cdr ff))))) (let ((ff (map (lambda (f) (if (pair? f) (car f) f)) ff))) `(begin (define ,(string->symbol (string-append "make-" s-s)) (lambda fvfv (let ((st (make-vector ,n+1)) (ff ',ff)) (vector-set! st 0 ',s) ,@(let loop ((i 1) (r '())) (if (>= i n+1) r (loop (+ i 1) (cons `(vector-set! st ,i ,(vector-ref vv i)) r)))) (let loop ((fvfv fvfv)) (if (not (null? fvfv)) (begin (vector-set! st (+ (list-position (car fvfv) ff) 1) (cadr fvfv)) (loop (cddr fvfv))))) st))) ,@(let loop ((i 1) (procs '())) (if (>= i n+1) procs (loop (+ i 1) (let ((f (symbol->string (list-ref ff (- i 1))))) (cons `(define ,(string->symbol (string-append s-s "." f)) (lambda (x) (vector-ref x ,i))) (cons `(define ,(string->symbol (string-append "set!" s-s "." f)) (lambda (x v) (vector-set! x ,i v))) procs)))))) (define ,(string->symbol (string-append s-s "?")) (lambda (x) (and (vector? x) (eqv? (vector-ref x 0) ',s))))))))) ;InvertedMap takes a list of functions and applies each to a single value and returns a list of returnvalues. (define (InvertedMap val . funcs) (concatenate (map (lambda (proc) (call-with-values (lambda () (proc val)) list)) funcs))) #! (define (InvertedMap2 value . functions) (define returnlist (list #f)) (for-each (lambda (x) (define return (x value)) (if return (append! returnlist (list return)))) functions) (list-tail returnlist 1)) !# denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/helpsystem.scm0000644000000000000000000000013213135434035022006 xustar0030 mtime=1500919837.939981805 30 atime=1500919924.933315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/denemo-modules/helpsystem.scm0000644000175000017500000000712713135434035023666 0ustar00jjbenhamjjbenham00000000000000(use-modules (ice-9 q)) #!(define-module (actions denemo-modules helpsystem) #:export ( Help::RemoveTag Help::TimedNotice Help::Push Help::Pop )) !# ; This help system is designed to give out messages in the second Denemo status bar. ;; You can push and pop to a message-queue. If you Pop the front message the one before that will appear again ;; Each help message consists of a tag-symbol and a help-string. Only one message of each tag is allowed in the queue. If you push a another message with an existing tag the old message gets deleted. ;; Please stick to the following tag convention ;;; 'timednotice - for a message that will delete itself after a few seconds (you might want use (Help::TimedNotice) anyway) ;;; 'doublestroketemp - for any message that tells the user that a command waits for another keypress, like a duration key. ;;; 'doublestroke - a permanent message that shows the current keybindings or give permanent info about some special mode you might be in. (define Help::queue (make-q)) ; Prepare the message queue. Only one is used for the entire system. (define (Q-remove! q obj) ; A function that replaces Guiles q-remove!. Ours works with a pair and only looks for the car. (set-car! q (filter (lambda (x) (not (equal? (car x) obj))) (car q))) (sync-q! q)) (define (Help::RemoveTag tag) ; Remove all messages with this 'tag symbol (Q-remove! Help::queue tag) (Help::UpdateWriteStatus)) (define (Help::ClearQueue) ; Clear the entire queue (set! Help::queue (make-q)) (Help::UpdateWriteStatus)) ;Take the current front message and display it. ;;Help::UpdateWriteStatus is the only function that accesses the StatusBar. ;;If there is no message left in the queue, disable showing the message area. (define (Help::UpdateWriteStatus) (if (q-empty? Help::queue) (d-WriteStatus " ") ;;; keep the status bar visible (d-WriteStatus (cdr (q-front Help::queue))))) ;Push a message to the queue. ;; Also Updates the StatusBar through UpdateWriteStatus (define (Help::Push pair) (Help::RemoveTag (car pair)) ; remove all with the same tag first. TODO: evaluate if this is a heavy performance-loss (q-push! Help::queue pair) (Help::UpdateWriteStatus)) ;Remove the current front message from the queue ;; Also Updates the StatusBar through UpdateWriteStatus (define (Help::Pop) (if (not (q-empty? Help::queue)) (begin (q-pop! Help::queue) (Help::UpdateWriteStatus)))) ; Display a message that deletes itself after timing (default 2500ms). No tag or Pop needed from the user. (define* (Help::TimedNotice string #:optional (timing 2500)) (Help::Push (cons 'timednotice string)) (Help::Push (cons 'timednotice1 (string-append string "\n\n\n"))) (Help::Push (cons 'timednotice2 (string-append string "\n\n\n"))) (Help::Push (cons 'timednotice3 (string-append string "\n\n\n\n"))) (Help::Push (cons 'timednotice4 (string-append string "\n\n\n\n\n"))) (let ((at 0) (step 250)) (set! at (+ at step)) (d-OneShotTimer at "(Help::Pop)") (set! at (+ at step)) (d-OneShotTimer at "(Help::Pop)") (set! at (+ at step)) (d-OneShotTimer at "(Help::Pop)") (set! at (+ at step)) (d-OneShotTimer at "(Help::Pop)") (set! at (+ at step)) (d-OneShotTimer (* 2 timing) "(Help::Pop)"))) (define* (TimedNotice string #:optional (timing 2500)) (Help::TimedNotice (string-append "" string "") timing)) denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/types.scm0000644000000000000000000000013213135434035020755 xustar0030 mtime=1500919837.939981805 30 atime=1500919924.933315139 30 ctime=1500919912.939981805 denemo-2.2.0/actions/denemo-modules/types.scm0000644000175000017500000001025213135434035022626 0ustar00jjbenhamjjbenham00000000000000; A set of simple tests / questions for score objects. ;;; Not Appending (define (Music?) (string=? (d-GetType) "CHORD")) (define (Note?) (and (Music?) (d-GetNoteName))) (define (Rest?) (and (not (d-GetNoteName)) (Music?))) (define (AtMusic?) (string=? (d-GetType #f) "CHORD")) ;;;On or Appending after (define (AtNote?) (and (AtMusic?) (d-GetNoteName))) (define (AtRest?) (and (not (d-GetNoteName)) (AtMusic?))) (define (Chord?) (if (Note?) (string-contains (d-GetNotes) " ") #f)) ; no note (define (AtChord?) (if (Note?) (string-contains (d-GetNotes) " ") #f)) ; no note (define (SingleNote?) (if (Note?) (not (string-contains (d-GetNotes) " ")) #f)) ; no note (define (AtSingleNote?) (if (AtNote?) (not (string-contains (d-GetNotes) " ")) #f)) ; no note (define (Directive?) (string=? (d-GetType) "LILYDIRECTIVE")) (define (Timesignature?) (string=? (d-GetType) "TIMESIG")) (define (Keysignature?) (string=? (d-GetType) "KEYSIG")) (define (Clef?) (string=? (d-GetType) "CLEF")) (define (TupletOpen?) (string=? (d-GetType) "TUPOPEN")) (define (TupletClose?) (string=? (d-GetType) "TUPCLOSE")) (define (TupletMarker?) (or (TupletOpen?) (TupletClose?))) ;;; types on or after when appending (define (AtDirective?) (string=? (d-GetType #f) "LILYDIRECTIVE")) (define (AtTimesignature?) (string=? (d-GetType #f) "TIMESIG")) (define (AtKeysignature?) (string=? (d-GetType #f) "KEYSIG")) (define (AtClef?) (string=? (d-GetType #f) "CLEF")) (define (AtTupletOpen?) (string=? (d-GetType #f) "TUPOPEN")) (define (AtTupletClose?) (string=? (d-GetType #f) "TUPCLOSE")) (define (AtTupletMarker?) (or (AtTupletOpen?) (AtTupletClose?))) (define (Tupletopen?) ;deprecated name (TupletOpen?)) (define (Tupletclose?) ;deprecated name (TupletClose)) (define (Tupletmarker?) ;deprecated name (TupletMarker?)) (define (Singlenote?) ;deprecated name (SingleNote?)) (define (StemDirective?) (string=? (d-GetType) "STEMDIRECTIVE")) (define (None?) (string=? (d-GetType) "None")) (define (MeasureEmpty?) (None?)) (define (MovementEmpty?) (and (None?) (= 1 (d-GetMeasuresInStaff)) (= 1 (d-GetStaffsInMovement)))) (define (Appending?) (string=? (d-GetType) "Appending")) (define (MeasureEnd?) (or (Appending?) (MeasureEmpty?))) (define (MeasureBeginning?) (= 1 (d-GetHorizontalPosition))) (define (ColumnEmpty?) (define return #f) (define measure (d-GetMeasure)) ; to make shure we stay in the same column all the time. (d-PushPosition) (if (not (MoveToColumnStart)) #f ; if we have unequal staff length in staff 1 stop immediatly, (let loop () (if (and (None?) (equal? measure (d-GetMeasure))) (begin (set! return #t) (if (d-MoveToStaffDown) (loop))) (set! return #f)))) (d-PopPosition) return) ;ActionChooser is a meta function to provide a simple way to react to all types of Denemo items in the score. (define (ActionChooser chord tupclose tupopen lilydirective clef timesig keysig stemdirective) (define type (string->symbol (d-GetType))) (case type ((CHORD) (chord)) ((TUPCLOSE) (tupclose)) ((TUPOPEN) (tupopen)) ((LILYDIRECTIVE) (lilydirective)) ((CLEF) (clef)) ((TIMESIG) (timesig)) ((KEYSIG) (keysig)) ((STEMDIRECTIVE) (stemdirective)) (else #f))) #! (define (ActionChooserExample) (ActionChooser (lambda () (disp "Chord")) ;chords, notes, rests (lambda () (disp "tupclose")) ; tuplet close (lambda () (disp "Tupopen")) ; tuplet open (lambda () (disp "lily")) ; lilypond directive (lambda () (disp "clef")) ; clefs (lambda () (disp "time")) ; timesignatures (lambda () (disp "key")) ; keysignatures (lambda () (disp "stem")))) ; stem directives /voice presets (MapToSelection ActionChooserExample)!# denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/fonts.scm0000644000000000000000000000013213135434035020742 xustar0030 mtime=1500919837.939981805 30 atime=1500919924.946648473 30 ctime=1500919912.939981805 denemo-2.2.0/actions/denemo-modules/fonts.scm0000644000175000017500000001322713135434035022620 0ustar00jjbenhamjjbenham00000000000000;;; Emmentaler rests (define REST0 "î„€") (define REST1 "î„") (define REST2 "") (define REST3 "") (define REST4 "") (define REST5 "î„‹") (define REST6 "") (define REST7 "î„") (define Rest0 (string-append "\n" REST0 "\nemmentaler")) (define Rest1 (string-append "\n" REST1 "\nemmentaler")) (define Rest2 (string-append "\n" REST2 "\nemmentaler")) (define Rest3 (string-append "\n" REST3 "\nemmentaler")) (define Rest4 (string-append "\n" REST4 "\nemmentaler")) (define Rest5 (string-append "\n" REST5 "\nemmentaler")) (define Rest6 (string-append "\n" REST6 "\nemmentaler")) (define Rest7 (string-append "\n" REST7 "\nemmentaler")) (define Rests (vector Rest0 Rest1 Rest2 Rest3 Rest4 Rest5 Rest6 Rest7 )) ;;; Articulation Symbols (define DENEMO_STACCATO "î…¬") (define DENEMO_STACCATISSIMO "î…­") (define DENEMO_ACCENT "î…ª") (define DENEMO_EXPRESSIVO "î…«") (define DENEMO_MARCATO "î…²") (define DENEMO_TENUTO "î…¯") (define DENEMO_PORTATO "î…±") (define DENEMO_UPBOW "î…¶") (define DENEMO_DOWNBOW "î…·") (define DENEMO_THUMB "î…©") (define DENEMO_LHEEL "î…»") (define DENEMO_RHEEL "î…¼") (define DENEMO_HARMONIC "î…´") (define DENEMO_SNAPPIZZICATO "î…©") (define DENEMO_ARPEGGIO "") (define DENEMO_ARPEGGIATODOWN "\xF0\x9D\x86\x84") (define DENEMO_ARPEGGIATOUP "\xF0\x9D\x86\x83") (define DENEMO_STOPPED "î…µ") (define DENEMO_PLUSNOTEHEAD "î…µ") (define DENEMO_FERMATA "î…¡") (define DENEMO_SHORTFERMATA "î…£") (define DENEMO_LONGFERMATA "î…¥") (define DENEMO_VERYLONGFERMATA "î…§") ;;; Ornamentation Symbols (define DENEMO_UPPRALL "\xEE\x86\x90") (define DENEMO_MORDENT "î†") (define DENEMO_TRILL "î…º") (define DENEMO_TURN "î…¹") (define DENEMO_PRALLMORDENT "î†") (define DENEMO_PRALLPRALL "") (define DENEMO_PRALL "") (define DENEMO_UPPRALL "î†") (define DENEMO_DOWNPRALL "") (define DENEMO_UPMORDENT "") (define DENEMO_DOWNMORDENT "") (define DENEMO_PRALLDOWN "") (define DENEMO_PRALLUP "") (define DENEMO_LINEPRALL "") (define DENEMO_SIGNUMCONGRUENTIAE "") (define DENEMO_REVERSETURN "î…¸") ;;; Control Flow (define DENEMO_SEGNO "") (define DENEMO_CODA "î†") (define DENEMO_VARCODA "") ;;; (define DENEMO_SHARP "") (define DENEMO_FLAT "") (define DENEMO_NATURAL "î„–") (define LG-Staccato (string-append "\n" DENEMO_STACCATO "\nemmentaler")) (define LG-Staccatissimo (string-append "\n" DENEMO_STACCATISSIMO "\nemmentaler")) (define LG-Accent (string-append "\n" DENEMO_ACCENT "\nemmentaler")) (define LG-Expressivo (string-append "\n" DENEMO_EXPRESSIVO "\nemmentaler")) (define LG-Marcato (string-append "\n" DENEMO_MARCATO "\nemmentaler")) (define LG-Tenuto (string-append "\n" DENEMO_TENUTO "\nemmentaler")) (define LG-Expressivo (string-append "\n" DENEMO_EXPRESSIVO "\nemmentaler")) (define LG-Portato (string-append "\n" DENEMO_PORTATO "\nemmentaler")) (define LG-UpBow (string-append "\n" DENEMO_UPBOW "\nemmentaler")) (define LG-DownBow (string-append "\n" DENEMO_DOWNBOW "\nemmentaler")) (define LG-Thumb (string-append "\n" DENEMO_THUMB "\nemmentaler")) (define LG-Lheel (string-append "\n" DENEMO_LHEEL "\nemmentaler")) (define LG-Rheel (string-append "\n" DENEMO_RHEEL "\nemmentaler")) (define LG-Harmonic (string-append "\n" DENEMO_HARMONIC "\nemmentaler")) (define LG-Snappizzicato (string-append "\n" DENEMO_SNAPPIZZICATO "\nemmentaler")) (define LG-Arpeggio (string-append "\n" DENEMO_ARPEGGIO "\nemmentaler")) (define LG-ArpeggiatoDown (string-append "\n" DENEMO_ARPEGGIATODOWN "\nemmentaler")) (define LG-ArpeggiatoUp (string-append "\n" DENEMO_ARPEGGIATOUP "\nemmentaler")) (define LG-Stopped (string-append "\n" DENEMO_STOPPED "\nemmentaler")) (define LG-PlusNoteHead (string-append "\n" DENEMO_PLUSNOTEHEAD "\nemmentaler")) (define LG-Fermata (string-append "\n" DENEMO_FERMATA "\nemmentaler")) (define LG-ShortFermata (string-append "\n" DENEMO_SHORTFERMATA "\nemmentaler")) (define LG-LongFermata (string-append "\n" DENEMO_LONGFERMATA "\nemmentaler")) (define LG-VeryLongFermata (string-append "\n" DENEMO_VERYLONGFERMATA "\nemmentaler")) (define LG-Upprall (string-append "\n" DENEMO_UPPRALL "\nemmentaler")) (define LG-Mordent (string-append "\n" DENEMO_MORDENT "\nemmentaler")) (define LG-Trill (string-append "\n" DENEMO_TRILL "\nemmentaler")) (define LG-Turn (string-append "\n" DENEMO_TURN "\nemmentaler")) (define LG-PrallMordent (string-append "\n" DENEMO_PRALLMORDENT "\nemmentaler")) (define LG-PrallPrall (string-append "\n" DENEMO_PRALLPRALL "\nemmentaler")) (define LG-Prall (string-append "\n" DENEMO_PRALL "\nemmentaler")) (define LG-UpPrall (string-append "\n" DENEMO_UPPRALL "\nemmentaler")) (define LG-DownPrall (string-append "\n" DENEMO_DOWNPRALL "\nemmentaler")) (define LG-UpMordent (string-append "\n" DENEMO_UPMORDENT "\nemmentaler")) (define LG-DownMordent (string-append "\n" DENEMO_DOWNMORDENT "\nemmentaler")) (define LG-PrallDown (string-append "\n" DENEMO_PRALLDOWN "\nemmentaler")) (define LG-PrallUp (string-append "\n" DENEMO_PRALLUP "\nemmentaler")) (define LG-LinePrall (string-append "\n" DENEMO_LINEPRALL "\nemmentaler")) (define LG-Signumcongruentiae (string-append "\n" DENEMO_SIGNUMCONGRUENTIAE"\nemmentaler")) (define LG-ReverseTurn (string-append "\n" DENEMO_REVERSETURN "\nemmentaler")) ;(define LG-Arpeggio (string-append "\n" DENEMO_ARPEGGIO "\nemmentaler")) ;(define LG-Grace (string-append "\n" DENEMO_GRACE "\nemmentaler")) (define LG-Segno (string-append "\n" DENEMO_SEGNO "\nemmentaler")) (define LG-Coda (string-append "\n" DENEMO_CODA "\nemmentaler")) (define LG-Varcoda (string-append "\n" DENEMO_VARCODA "\nemmentaler")) (define LG-Sharp (string-append "\n" DENEMO_SHARP "\nemmentaler")) (define LG-Flat (string-append "\n" DENEMO_FLAT "\nemmentaler")) (define LG-Natural (string-append "\n" DENEMO_NATURAL "\nemmentaler")) denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/ans.scm0000644000000000000000000000013213135434035020372 xustar0030 mtime=1500919837.939981805 30 atime=1500919924.946648473 30 ctime=1500919912.936648472 denemo-2.2.0/actions/denemo-modules/ans.scm0000644000175000017500000016554213135434035022260 0ustar00jjbenhamjjbenham00000000000000(use-modules (srfi srfi-1)) (use-modules (srfi srfi-8)) (use-modules (srfi srfi-13)) (use-modules (ice-9 optargs)) #!(define-module (actions denemo-modules ans) #:export ( ;ANS::NoteTable ;ANS::NoteTableR ;ANS::PillarOfFifthIndex ;ANS::PillarOfFifth ANS::IntervalGetSteps ANS::Ly2Ans lilynote ANS::Ans2Ly ansNote ANS::ChangeChordNotes ANS::InsertNotes ANS::GetNote ANS::GetOctave ANS::GetWhiteKey ANS::GetHalfToneDistanceFromC ANS::Alteration ;ANS::IntervalCalcPrototype ANS::IntervalCalcUp ANS::IntervalCalcDown ANS::AddIntervalAsChordnoteFromLowestUp ANS::AddIntervalAsChordnoteFromHighestDown ANS::CalculateRealOctaveUp ANS::CalculateRealOctaveDown ANS::CalculateWholeRealStepUp ANS::CalculateWholeRealStepDown ANS::CalculateHalfRealStepUp ANS::CalculateHalfRealStepDown ANS::GetDiatonic ANS::CalculateDiatonicStepUp ANS::CalculateDiatonicStepDown ANS::GetIntervall ANS::CreateIntervalsFromPairs ANS::Interval->Sound ANS::IntervalMember? ANS::ConsecutiveOpen? ANS::ConsecutiveCrossed? ANS::ConsecutiveAnti? ANS::ConsecutiveHidden? ANS::ConsecutiveHiddenCrossed? ANS::random ANS::RandomDiatonic ANS::RandomChromatic ANS::InsertListRandomly ANS::InsertMemberRandomly )) !# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;Abstract Note System for Denemo Version 3;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;by Nils Gey;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ANS makes it easy to calculate with notation while keeping in mind that ; there are basic note ("The White Keys") as well as sharp or flat notes ; and finally enharmonic notes (gisis) and all have to respect the key- ; signature or they are considered "alterated". ; Each note is represented by a number on which points to an ; absolute notename in Lilypond syntax This is especially desinged to ; make diatonic shifting, real transpostion and other modifications more ; easy for script-authors. ; System by Nils Gey 2010 (thanks to Till Hartmann for table generation) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;Beginning of Abstract Note System Version 3;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;by Nils Gey;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;0 - A tone humans cannot hear anymore. ;1420 - "Middle" c' ;2130 - Soprano-Singers high C ;3150 - Goes beyond the range of a modern piano ;+inf.0 - A rest ;<10 is reserved for microtones, in the future. ;+10 One accidental up jumps over to the next note after cisis ;+50 One diatonic step, preserve accidentals ;+350 One Octave (define ANS::NoteTable (make-hash-table 317)) (hashq-set! ANS::NoteTable 00 'ceses,,,) (hashq-set! ANS::NoteTable 10 'ces,,,) (hashq-set! ANS::NoteTable 20 'c,,,) (hashq-set! ANS::NoteTable 30 'cis,,,) (hashq-set! ANS::NoteTable 40 'cisis,,,) (hashq-set! ANS::NoteTable 50 'deses,,,) (hashq-set! ANS::NoteTable 60 'des,,,) (hashq-set! ANS::NoteTable 70 'd,,,) (hashq-set! ANS::NoteTable 80 'dis,,,) (hashq-set! ANS::NoteTable 90 'disis,,,) (hashq-set! ANS::NoteTable 100 'eeses,,,) (hashq-set! ANS::NoteTable 110 'ees,,,) (hashq-set! ANS::NoteTable 120 'e,,,) (hashq-set! ANS::NoteTable 130 'eis,,,) (hashq-set! ANS::NoteTable 140 'eisis,,,) (hashq-set! ANS::NoteTable 150 'feses,,,) (hashq-set! ANS::NoteTable 160 'fes,,,) (hashq-set! ANS::NoteTable 170 'f,,,) (hashq-set! ANS::NoteTable 180 'fis,,,) (hashq-set! ANS::NoteTable 190 'fisis,,,) (hashq-set! ANS::NoteTable 200 'geses,,,) (hashq-set! ANS::NoteTable 210 'ges,,,) (hashq-set! ANS::NoteTable 220 'g,,,) (hashq-set! ANS::NoteTable 230 'gis,,,) (hashq-set! ANS::NoteTable 240 'gisis,,,) (hashq-set! ANS::NoteTable 250 'aeses,,,) (hashq-set! ANS::NoteTable 260 'aes,,,) (hashq-set! ANS::NoteTable 270 'a,,,) (hashq-set! ANS::NoteTable 280 'ais,,,) (hashq-set! ANS::NoteTable 290 'aisis,,,) (hashq-set! ANS::NoteTable 300 'beses,,,) (hashq-set! ANS::NoteTable 310 'bes,,,) (hashq-set! ANS::NoteTable 320 'b,,,) (hashq-set! ANS::NoteTable 330 'bis,,,) (hashq-set! ANS::NoteTable 340 'bisis,,,) (hashq-set! ANS::NoteTable 350 'ceses,,) (hashq-set! ANS::NoteTable 360 'ces,,) (hashq-set! ANS::NoteTable 370 'c,,) (hashq-set! ANS::NoteTable 380 'cis,,) (hashq-set! ANS::NoteTable 390 'cisis,,) (hashq-set! ANS::NoteTable 400 'deses,,) (hashq-set! ANS::NoteTable 410 'des,,) (hashq-set! ANS::NoteTable 420 'd,,) (hashq-set! ANS::NoteTable 430 'dis,,) (hashq-set! ANS::NoteTable 440 'disis,,) (hashq-set! ANS::NoteTable 450 'eeses,,) (hashq-set! ANS::NoteTable 460 'ees,,) (hashq-set! ANS::NoteTable 470 'e,,) (hashq-set! ANS::NoteTable 480 'eis,,) (hashq-set! ANS::NoteTable 490 'eisis,,) (hashq-set! ANS::NoteTable 500 'feses,,) (hashq-set! ANS::NoteTable 510 'fes,,) (hashq-set! ANS::NoteTable 520 'f,,) (hashq-set! ANS::NoteTable 530 'fis,,) (hashq-set! ANS::NoteTable 540 'fisis,,) (hashq-set! ANS::NoteTable 550 'geses,,) (hashq-set! ANS::NoteTable 560 'ges,,) (hashq-set! ANS::NoteTable 570 'g,,) (hashq-set! ANS::NoteTable 580 'gis,,) (hashq-set! ANS::NoteTable 590 'gisis,,) (hashq-set! ANS::NoteTable 600 'aeses,,) (hashq-set! ANS::NoteTable 610 'aes,,) (hashq-set! ANS::NoteTable 620 'a,,) (hashq-set! ANS::NoteTable 630 'ais,,) (hashq-set! ANS::NoteTable 640 'aisis,,) (hashq-set! ANS::NoteTable 650 'beses,,) (hashq-set! ANS::NoteTable 660 'bes,,) (hashq-set! ANS::NoteTable 670 'b,,) (hashq-set! ANS::NoteTable 680 'bis,,) (hashq-set! ANS::NoteTable 690 'bisis,,) (hashq-set! ANS::NoteTable 700 'ceses,) (hashq-set! ANS::NoteTable 710 'ces,) (hashq-set! ANS::NoteTable 720 'c,) (hashq-set! ANS::NoteTable 730 'cis,) (hashq-set! ANS::NoteTable 740 'cisis,) (hashq-set! ANS::NoteTable 750 'deses,) (hashq-set! ANS::NoteTable 760 'des,) (hashq-set! ANS::NoteTable 770 'd,) (hashq-set! ANS::NoteTable 780 'dis,) (hashq-set! ANS::NoteTable 790 'disis,) (hashq-set! ANS::NoteTable 800 'eeses,) (hashq-set! ANS::NoteTable 810 'ees,) (hashq-set! ANS::NoteTable 820 'e,) (hashq-set! ANS::NoteTable 830 'eis,) (hashq-set! ANS::NoteTable 840 'eisis,) (hashq-set! ANS::NoteTable 850 'feses,) (hashq-set! ANS::NoteTable 860 'fes,) (hashq-set! ANS::NoteTable 870 'f,) (hashq-set! ANS::NoteTable 880 'fis,) (hashq-set! ANS::NoteTable 890 'fisis,) (hashq-set! ANS::NoteTable 900 'geses,) (hashq-set! ANS::NoteTable 910 'ges,) (hashq-set! ANS::NoteTable 920 'g,) (hashq-set! ANS::NoteTable 930 'gis,) (hashq-set! ANS::NoteTable 940 'gisis,) (hashq-set! ANS::NoteTable 950 'aeses,) (hashq-set! ANS::NoteTable 960 'aes,) (hashq-set! ANS::NoteTable 970 'a,) (hashq-set! ANS::NoteTable 980 'ais,) (hashq-set! ANS::NoteTable 990 'aisis,) (hashq-set! ANS::NoteTable 1000 'beses,) (hashq-set! ANS::NoteTable 1010 'bes,) (hashq-set! ANS::NoteTable 1020 'b,) (hashq-set! ANS::NoteTable 1030 'bis,) (hashq-set! ANS::NoteTable 1040 'bisis,) (hashq-set! ANS::NoteTable 1050 'ceses) (hashq-set! ANS::NoteTable 1060 'ces) (hashq-set! ANS::NoteTable 1070 'c) (hashq-set! ANS::NoteTable 1080 'cis) (hashq-set! ANS::NoteTable 1090 'cisis) (hashq-set! ANS::NoteTable 1100 'deses) (hashq-set! ANS::NoteTable 1110 'des) (hashq-set! ANS::NoteTable 1120 'd) (hashq-set! ANS::NoteTable 1130 'dis) (hashq-set! ANS::NoteTable 1140 'disis) (hashq-set! ANS::NoteTable 1150 'eeses) (hashq-set! ANS::NoteTable 1160 'ees) (hashq-set! ANS::NoteTable 1170 'e) (hashq-set! ANS::NoteTable 1180 'eis) (hashq-set! ANS::NoteTable 1190 'eisis) (hashq-set! ANS::NoteTable 1200 'feses) (hashq-set! ANS::NoteTable 1210 'fes) (hashq-set! ANS::NoteTable 1220 'f) (hashq-set! ANS::NoteTable 1230 'fis) (hashq-set! ANS::NoteTable 1240 'fisis) (hashq-set! ANS::NoteTable 1250 'geses) (hashq-set! ANS::NoteTable 1260 'ges) (hashq-set! ANS::NoteTable 1270 'g) (hashq-set! ANS::NoteTable 1280 'gis) (hashq-set! ANS::NoteTable 1290 'gisis) (hashq-set! ANS::NoteTable 1300 'aeses) (hashq-set! ANS::NoteTable 1310 'aes) (hashq-set! ANS::NoteTable 1320 'a) (hashq-set! ANS::NoteTable 1330 'ais) (hashq-set! ANS::NoteTable 1340 'aisis) (hashq-set! ANS::NoteTable 1350 'beses) (hashq-set! ANS::NoteTable 1360 'bes) (hashq-set! ANS::NoteTable 1370 'b) (hashq-set! ANS::NoteTable 1380 'bis) (hashq-set! ANS::NoteTable 1390 'bisis) (hashq-set! ANS::NoteTable 1400 'ceses') (hashq-set! ANS::NoteTable 1410 'ces') (hashq-set! ANS::NoteTable 1420 'c') (hashq-set! ANS::NoteTable 1430 'cis') (hashq-set! ANS::NoteTable 1440 'cisis') (hashq-set! ANS::NoteTable 1450 'deses') (hashq-set! ANS::NoteTable 1460 'des') (hashq-set! ANS::NoteTable 1470 'd') (hashq-set! ANS::NoteTable 1480 'dis') (hashq-set! ANS::NoteTable 1490 'disis') (hashq-set! ANS::NoteTable 1500 'eeses') (hashq-set! ANS::NoteTable 1510 'ees') (hashq-set! ANS::NoteTable 1520 'e') (hashq-set! ANS::NoteTable 1530 'eis') (hashq-set! ANS::NoteTable 1540 'eisis') (hashq-set! ANS::NoteTable 1550 'feses') (hashq-set! ANS::NoteTable 1560 'fes') (hashq-set! ANS::NoteTable 1570 'f') (hashq-set! ANS::NoteTable 1580 'fis') (hashq-set! ANS::NoteTable 1590 'fisis') (hashq-set! ANS::NoteTable 1600 'geses') (hashq-set! ANS::NoteTable 1610 'ges') (hashq-set! ANS::NoteTable 1620 'g') (hashq-set! ANS::NoteTable 1630 'gis') (hashq-set! ANS::NoteTable 1640 'gisis') (hashq-set! ANS::NoteTable 1650 'aeses') (hashq-set! ANS::NoteTable 1660 'aes') (hashq-set! ANS::NoteTable 1670 'a') (hashq-set! ANS::NoteTable 1680 'ais') (hashq-set! ANS::NoteTable 1690 'aisis') (hashq-set! ANS::NoteTable 1700 'beses') (hashq-set! ANS::NoteTable 1710 'bes') (hashq-set! ANS::NoteTable 1720 'b') (hashq-set! ANS::NoteTable 1730 'bis') (hashq-set! ANS::NoteTable 1740 'bisis') (hashq-set! ANS::NoteTable 1750 'ceses'') (hashq-set! ANS::NoteTable 1760 'ces'') (hashq-set! ANS::NoteTable 1770 'c'') (hashq-set! ANS::NoteTable 1780 'cis'') (hashq-set! ANS::NoteTable 1790 'cisis'') (hashq-set! ANS::NoteTable 1800 'deses'') (hashq-set! ANS::NoteTable 1810 'des'') (hashq-set! ANS::NoteTable 1820 'd'') (hashq-set! ANS::NoteTable 1830 'dis'') (hashq-set! ANS::NoteTable 1840 'disis'') (hashq-set! ANS::NoteTable 1850 'eeses'') (hashq-set! ANS::NoteTable 1860 'ees'') (hashq-set! ANS::NoteTable 1870 'e'') (hashq-set! ANS::NoteTable 1880 'eis'') (hashq-set! ANS::NoteTable 1890 'eisis'') (hashq-set! ANS::NoteTable 1900 'feses'') (hashq-set! ANS::NoteTable 1910 'fes'') (hashq-set! ANS::NoteTable 1920 'f'') (hashq-set! ANS::NoteTable 1930 'fis'') (hashq-set! ANS::NoteTable 1940 'fisis'') (hashq-set! ANS::NoteTable 1950 'geses'') (hashq-set! ANS::NoteTable 1960 'ges'') (hashq-set! ANS::NoteTable 1970 'g'') (hashq-set! ANS::NoteTable 1980 'gis'') (hashq-set! ANS::NoteTable 1990 'gisis'') (hashq-set! ANS::NoteTable 2000 'aeses'') (hashq-set! ANS::NoteTable 2010 'aes'') (hashq-set! ANS::NoteTable 2020 'a'') (hashq-set! ANS::NoteTable 2030 'ais'') (hashq-set! ANS::NoteTable 2040 'aisis'') (hashq-set! ANS::NoteTable 2050 'beses'') (hashq-set! ANS::NoteTable 2060 'bes'') (hashq-set! ANS::NoteTable 2070 'b'') (hashq-set! ANS::NoteTable 2080 'bis'') (hashq-set! ANS::NoteTable 2090 'bisis'') (hashq-set! ANS::NoteTable 2100 'ceses''') (hashq-set! ANS::NoteTable 2110 'ces''') (hashq-set! ANS::NoteTable 2120 'c''') (hashq-set! ANS::NoteTable 2130 'cis''') (hashq-set! ANS::NoteTable 2140 'cisis''') (hashq-set! ANS::NoteTable 2150 'deses''') (hashq-set! ANS::NoteTable 2160 'des''') (hashq-set! ANS::NoteTable 2170 'd''') (hashq-set! ANS::NoteTable 2180 'dis''') (hashq-set! ANS::NoteTable 2190 'disis''') (hashq-set! ANS::NoteTable 2200 'eeses''') (hashq-set! ANS::NoteTable 2210 'ees''') (hashq-set! ANS::NoteTable 2220 'e''') (hashq-set! ANS::NoteTable 2230 'eis''') (hashq-set! ANS::NoteTable 2240 'eisis''') (hashq-set! ANS::NoteTable 2250 'feses''') (hashq-set! ANS::NoteTable 2260 'fes''') (hashq-set! ANS::NoteTable 2270 'f''') (hashq-set! ANS::NoteTable 2280 'fis''') (hashq-set! ANS::NoteTable 2290 'fisis''') (hashq-set! ANS::NoteTable 2300 'geses''') (hashq-set! ANS::NoteTable 2310 'ges''') (hashq-set! ANS::NoteTable 2320 'g''') (hashq-set! ANS::NoteTable 2330 'gis''') (hashq-set! ANS::NoteTable 2340 'gisis''') (hashq-set! ANS::NoteTable 2350 'aeses''') (hashq-set! ANS::NoteTable 2360 'aes''') (hashq-set! ANS::NoteTable 2370 'a''') (hashq-set! ANS::NoteTable 2380 'ais''') (hashq-set! ANS::NoteTable 2390 'aisis''') (hashq-set! ANS::NoteTable 2400 'beses''') (hashq-set! ANS::NoteTable 2410 'bes''') (hashq-set! ANS::NoteTable 2420 'b''') (hashq-set! ANS::NoteTable 2430 'bis''') (hashq-set! ANS::NoteTable 2440 'bisis''') (hashq-set! ANS::NoteTable 2450 'ceses'''') (hashq-set! ANS::NoteTable 2460 'ces'''') (hashq-set! ANS::NoteTable 2470 'c'''') (hashq-set! ANS::NoteTable 2480 'cis'''') (hashq-set! ANS::NoteTable 2490 'cisis'''') (hashq-set! ANS::NoteTable 2500 'deses'''') (hashq-set! ANS::NoteTable 2510 'des'''') (hashq-set! ANS::NoteTable 2520 'd'''') (hashq-set! ANS::NoteTable 2530 'dis'''') (hashq-set! ANS::NoteTable 2540 'disis'''') (hashq-set! ANS::NoteTable 2550 'eeses'''') (hashq-set! ANS::NoteTable 2560 'ees'''') (hashq-set! ANS::NoteTable 2570 'e'''') (hashq-set! ANS::NoteTable 2580 'eis'''') (hashq-set! ANS::NoteTable 2590 'eisis'''') (hashq-set! ANS::NoteTable 2600 'feses'''') (hashq-set! ANS::NoteTable 2610 'fes'''') (hashq-set! ANS::NoteTable 2620 'f'''') (hashq-set! ANS::NoteTable 2630 'fis'''') (hashq-set! ANS::NoteTable 2640 'fisis'''') (hashq-set! ANS::NoteTable 2650 'geses'''') (hashq-set! ANS::NoteTable 2660 'ges'''') (hashq-set! ANS::NoteTable 2670 'g'''') (hashq-set! ANS::NoteTable 2680 'gis'''') (hashq-set! ANS::NoteTable 2690 'gisis'''') (hashq-set! ANS::NoteTable 2700 'aeses'''') (hashq-set! ANS::NoteTable 2710 'aes'''') (hashq-set! ANS::NoteTable 2720 'a'''') (hashq-set! ANS::NoteTable 2730 'ais'''') (hashq-set! ANS::NoteTable 2740 'aisis'''') (hashq-set! ANS::NoteTable 2750 'beses'''') (hashq-set! ANS::NoteTable 2760 'bes'''') (hashq-set! ANS::NoteTable 2770 'b'''') (hashq-set! ANS::NoteTable 2780 'bis'''') (hashq-set! ANS::NoteTable 2790 'bisis'''') (hashq-set! ANS::NoteTable 2800 'ceses''''') (hashq-set! ANS::NoteTable 2810 'ces''''') (hashq-set! ANS::NoteTable 2820 'c''''') (hashq-set! ANS::NoteTable 2830 'cis''''') (hashq-set! ANS::NoteTable 2840 'cisis''''') (hashq-set! ANS::NoteTable 2850 'deses''''') (hashq-set! ANS::NoteTable 2860 'des''''') (hashq-set! ANS::NoteTable 2870 'd''''') (hashq-set! ANS::NoteTable 2880 'dis''''') (hashq-set! ANS::NoteTable 2890 'disis''''') (hashq-set! ANS::NoteTable 2900 'eeses''''') (hashq-set! ANS::NoteTable 2910 'ees''''') (hashq-set! ANS::NoteTable 2920 'e''''') (hashq-set! ANS::NoteTable 2930 'eis''''') (hashq-set! ANS::NoteTable 2940 'eisis''''') (hashq-set! ANS::NoteTable 2950 'feses''''') (hashq-set! ANS::NoteTable 2960 'fes''''') (hashq-set! ANS::NoteTable 2970 'f''''') (hashq-set! ANS::NoteTable 2980 'fis''''') (hashq-set! ANS::NoteTable 2990 'fisis''''') (hashq-set! ANS::NoteTable 3000 'geses''''') (hashq-set! ANS::NoteTable 3010 'ges''''') (hashq-set! ANS::NoteTable 3020 'g''''') (hashq-set! ANS::NoteTable 3030 'gis''''') (hashq-set! ANS::NoteTable 3040 'gisis''''') (hashq-set! ANS::NoteTable 3050 'aeses''''') (hashq-set! ANS::NoteTable 3060 'aes''''') (hashq-set! ANS::NoteTable 3070 'a''''') (hashq-set! ANS::NoteTable 3080 'ais''''') (hashq-set! ANS::NoteTable 3090 'aisis''''') (hashq-set! ANS::NoteTable 3100 'beses''''') (hashq-set! ANS::NoteTable 3110 'bes''''') (hashq-set! ANS::NoteTable 3120 'b''''') (hashq-set! ANS::NoteTable 3130 'bis''''') (hashq-set! ANS::NoteTable 3140 'bisis''''') (hashq-set! ANS::NoteTable +inf.0 'r) ;;;; Reverse Assignments ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define ANS::NoteTableR (make-hash-table 317)) (hashq-set! ANS::NoteTableR 'ceses,,, 00) (hashq-set! ANS::NoteTableR 'ces,,, 10) (hashq-set! ANS::NoteTableR 'c,,, 20) (hashq-set! ANS::NoteTableR 'cis,,, 30) (hashq-set! ANS::NoteTableR 'cisis,,, 40) (hashq-set! ANS::NoteTableR 'deses,,, 50) (hashq-set! ANS::NoteTableR 'des,,, 60) (hashq-set! ANS::NoteTableR 'd,,, 70) (hashq-set! ANS::NoteTableR 'dis,,, 80) (hashq-set! ANS::NoteTableR 'disis,,, 90) (hashq-set! ANS::NoteTableR 'eeses,,, 100) (hashq-set! ANS::NoteTableR 'ees,,, 110) (hashq-set! ANS::NoteTableR 'e,,, 120) (hashq-set! ANS::NoteTableR 'eis,,, 130) (hashq-set! ANS::NoteTableR 'eisis,,, 140) (hashq-set! ANS::NoteTableR 'feses,,, 150) (hashq-set! ANS::NoteTableR 'fes,,, 160) (hashq-set! ANS::NoteTableR 'f,,, 170) (hashq-set! ANS::NoteTableR 'fis,,, 180) (hashq-set! ANS::NoteTableR 'fisis,,, 190) (hashq-set! ANS::NoteTableR 'geses,,, 200) (hashq-set! ANS::NoteTableR 'ges,,, 210) (hashq-set! ANS::NoteTableR 'g,,, 220) (hashq-set! ANS::NoteTableR 'gis,,, 230) (hashq-set! ANS::NoteTableR 'gisis,,, 240) (hashq-set! ANS::NoteTableR 'aeses,,, 250) (hashq-set! ANS::NoteTableR 'aes,,, 260) (hashq-set! ANS::NoteTableR 'a,,, 270) (hashq-set! ANS::NoteTableR 'ais,,, 280) (hashq-set! ANS::NoteTableR 'aisis,,, 290) (hashq-set! ANS::NoteTableR 'beses,,, 300) (hashq-set! ANS::NoteTableR 'bes,,, 310) (hashq-set! ANS::NoteTableR 'b,,, 320) (hashq-set! ANS::NoteTableR 'bis,,, 330) (hashq-set! ANS::NoteTableR 'bisis,,, 340) (hashq-set! ANS::NoteTableR 'ceses,, 350) (hashq-set! ANS::NoteTableR 'ces,, 360) (hashq-set! ANS::NoteTableR 'c,, 370) (hashq-set! ANS::NoteTableR 'cis,, 380) (hashq-set! ANS::NoteTableR 'cisis,, 390) (hashq-set! ANS::NoteTableR 'deses,, 400) (hashq-set! ANS::NoteTableR 'des,, 410) (hashq-set! ANS::NoteTableR 'd,, 420) (hashq-set! ANS::NoteTableR 'dis,, 430) (hashq-set! ANS::NoteTableR 'disis,, 440) (hashq-set! ANS::NoteTableR 'eeses,, 450) (hashq-set! ANS::NoteTableR 'ees,, 460) (hashq-set! ANS::NoteTableR 'e,, 470) (hashq-set! ANS::NoteTableR 'eis,, 480) (hashq-set! ANS::NoteTableR 'eisis,, 490) (hashq-set! ANS::NoteTableR 'feses,, 500) (hashq-set! ANS::NoteTableR 'fes,, 510) (hashq-set! ANS::NoteTableR 'f,, 520) (hashq-set! ANS::NoteTableR 'fis,, 530) (hashq-set! ANS::NoteTableR 'fisis,, 540) (hashq-set! ANS::NoteTableR 'geses,, 550) (hashq-set! ANS::NoteTableR 'ges,, 560) (hashq-set! ANS::NoteTableR 'g,, 570) (hashq-set! ANS::NoteTableR 'gis,, 580) (hashq-set! ANS::NoteTableR 'gisis,, 590) (hashq-set! ANS::NoteTableR 'aeses,, 600) (hashq-set! ANS::NoteTableR 'aes,, 610) (hashq-set! ANS::NoteTableR 'a,, 620) (hashq-set! ANS::NoteTableR 'ais,, 630) (hashq-set! ANS::NoteTableR 'aisis,, 640) (hashq-set! ANS::NoteTableR 'beses,, 650) (hashq-set! ANS::NoteTableR 'bes,, 660) (hashq-set! ANS::NoteTableR 'b,, 670) (hashq-set! ANS::NoteTableR 'bis,, 680) (hashq-set! ANS::NoteTableR 'bisis,, 690) (hashq-set! ANS::NoteTableR 'ceses, 700) (hashq-set! ANS::NoteTableR 'ces, 710) (hashq-set! ANS::NoteTableR 'c, 720) (hashq-set! ANS::NoteTableR 'cis, 730) (hashq-set! ANS::NoteTableR 'cisis, 740) (hashq-set! ANS::NoteTableR 'deses, 750) (hashq-set! ANS::NoteTableR 'des, 760) (hashq-set! ANS::NoteTableR 'd, 770) (hashq-set! ANS::NoteTableR 'dis, 780) (hashq-set! ANS::NoteTableR 'disis, 790) (hashq-set! ANS::NoteTableR 'eeses, 800) (hashq-set! ANS::NoteTableR 'ees, 810) (hashq-set! ANS::NoteTableR 'e, 820) (hashq-set! ANS::NoteTableR 'eis, 830) (hashq-set! ANS::NoteTableR 'eisis, 840) (hashq-set! ANS::NoteTableR 'feses, 850) (hashq-set! ANS::NoteTableR 'fes, 860) (hashq-set! ANS::NoteTableR 'f, 870) (hashq-set! ANS::NoteTableR 'fis, 880) (hashq-set! ANS::NoteTableR 'fisis, 890) (hashq-set! ANS::NoteTableR 'geses, 900) (hashq-set! ANS::NoteTableR 'ges, 910) (hashq-set! ANS::NoteTableR 'g, 920) (hashq-set! ANS::NoteTableR 'gis, 930) (hashq-set! ANS::NoteTableR 'gisis, 940) (hashq-set! ANS::NoteTableR 'aeses, 950) (hashq-set! ANS::NoteTableR 'aes, 960) (hashq-set! ANS::NoteTableR 'a, 970) (hashq-set! ANS::NoteTableR 'ais, 980) (hashq-set! ANS::NoteTableR 'aisis, 990) (hashq-set! ANS::NoteTableR 'beses, 1000) (hashq-set! ANS::NoteTableR 'bes, 1010) (hashq-set! ANS::NoteTableR 'b, 1020) (hashq-set! ANS::NoteTableR 'bis, 1030) (hashq-set! ANS::NoteTableR 'bisis, 1040) (hashq-set! ANS::NoteTableR 'ceses 1050) (hashq-set! ANS::NoteTableR 'ces 1060) (hashq-set! ANS::NoteTableR 'c 1070) (hashq-set! ANS::NoteTableR 'cis 1080) (hashq-set! ANS::NoteTableR 'cisis 1090) (hashq-set! ANS::NoteTableR 'deses 1100) (hashq-set! ANS::NoteTableR 'des 1110) (hashq-set! ANS::NoteTableR 'd 1120) (hashq-set! ANS::NoteTableR 'dis 1130) (hashq-set! ANS::NoteTableR 'disis 1140) (hashq-set! ANS::NoteTableR 'eeses 1150) (hashq-set! ANS::NoteTableR 'ees 1160) (hashq-set! ANS::NoteTableR 'e 1170) (hashq-set! ANS::NoteTableR 'eis 1180) (hashq-set! ANS::NoteTableR 'eisis 1190) (hashq-set! ANS::NoteTableR 'feses 1200) (hashq-set! ANS::NoteTableR 'fes 1210) (hashq-set! ANS::NoteTableR 'f 1220) (hashq-set! ANS::NoteTableR 'fis 1230) (hashq-set! ANS::NoteTableR 'fisis 1240) (hashq-set! ANS::NoteTableR 'geses 1250) (hashq-set! ANS::NoteTableR 'ges 1260) (hashq-set! ANS::NoteTableR 'g 1270) (hashq-set! ANS::NoteTableR 'gis 1280) (hashq-set! ANS::NoteTableR 'gisis 1290) (hashq-set! ANS::NoteTableR 'aeses 1300) (hashq-set! ANS::NoteTableR 'aes 1310) (hashq-set! ANS::NoteTableR 'a 1320) (hashq-set! ANS::NoteTableR 'ais 1330) (hashq-set! ANS::NoteTableR 'aisis 1340) (hashq-set! ANS::NoteTableR 'beses 1350) (hashq-set! ANS::NoteTableR 'bes 1360) (hashq-set! ANS::NoteTableR 'b 1370) (hashq-set! ANS::NoteTableR 'bis 1380) (hashq-set! ANS::NoteTableR 'bisis 1390) (hashq-set! ANS::NoteTableR 'ceses' 1400) (hashq-set! ANS::NoteTableR 'ces' 1410) (hashq-set! ANS::NoteTableR 'c' 1420) (hashq-set! ANS::NoteTableR 'cis' 1430) (hashq-set! ANS::NoteTableR 'cisis' 1440) (hashq-set! ANS::NoteTableR 'deses' 1450) (hashq-set! ANS::NoteTableR 'des' 1460) (hashq-set! ANS::NoteTableR 'd' 1470) (hashq-set! ANS::NoteTableR 'dis' 1480) (hashq-set! ANS::NoteTableR 'disis' 1490) (hashq-set! ANS::NoteTableR 'eeses' 1500) (hashq-set! ANS::NoteTableR 'ees' 1510) (hashq-set! ANS::NoteTableR 'e' 1520) (hashq-set! ANS::NoteTableR 'eis' 1530) (hashq-set! ANS::NoteTableR 'eisis' 1540) (hashq-set! ANS::NoteTableR 'feses' 1550) (hashq-set! ANS::NoteTableR 'fes' 1560) (hashq-set! ANS::NoteTableR 'f' 1570) (hashq-set! ANS::NoteTableR 'fis' 1580) (hashq-set! ANS::NoteTableR 'fisis' 1590) (hashq-set! ANS::NoteTableR 'geses' 1600) (hashq-set! ANS::NoteTableR 'ges' 1610) (hashq-set! ANS::NoteTableR 'g' 1620) (hashq-set! ANS::NoteTableR 'gis' 1630) (hashq-set! ANS::NoteTableR 'gisis' 1640) (hashq-set! ANS::NoteTableR 'aeses' 1650) (hashq-set! ANS::NoteTableR 'aes' 1660) (hashq-set! ANS::NoteTableR 'a' 1670) (hashq-set! ANS::NoteTableR 'ais' 1680) (hashq-set! ANS::NoteTableR 'aisis' 1690) (hashq-set! ANS::NoteTableR 'beses' 1700) (hashq-set! ANS::NoteTableR 'bes' 1710) (hashq-set! ANS::NoteTableR 'b' 1720) (hashq-set! ANS::NoteTableR 'bis' 1730) (hashq-set! ANS::NoteTableR 'bisis' 1740) (hashq-set! ANS::NoteTableR 'ceses'' 1750) (hashq-set! ANS::NoteTableR 'ces'' 1760) (hashq-set! ANS::NoteTableR 'c'' 1770) (hashq-set! ANS::NoteTableR 'cis'' 1780) (hashq-set! ANS::NoteTableR 'cisis'' 1790) (hashq-set! ANS::NoteTableR 'deses'' 1800) (hashq-set! ANS::NoteTableR 'des'' 1810) (hashq-set! ANS::NoteTableR 'd'' 1820) (hashq-set! ANS::NoteTableR 'dis'' 1830) (hashq-set! ANS::NoteTableR 'disis'' 1840) (hashq-set! ANS::NoteTableR 'eeses'' 1850) (hashq-set! ANS::NoteTableR 'ees'' 1860) (hashq-set! ANS::NoteTableR 'e'' 1870) (hashq-set! ANS::NoteTableR 'eis'' 1880) (hashq-set! ANS::NoteTableR 'eisis'' 1890) (hashq-set! ANS::NoteTableR 'feses'' 1900) (hashq-set! ANS::NoteTableR 'fes'' 1910) (hashq-set! ANS::NoteTableR 'f'' 1920) (hashq-set! ANS::NoteTableR 'fis'' 1930) (hashq-set! ANS::NoteTableR 'fisis'' 1940) (hashq-set! ANS::NoteTableR 'geses'' 1950) (hashq-set! ANS::NoteTableR 'ges'' 1960) (hashq-set! ANS::NoteTableR 'g'' 1970) (hashq-set! ANS::NoteTableR 'gis'' 1980) (hashq-set! ANS::NoteTableR 'gisis'' 1990) (hashq-set! ANS::NoteTableR 'aeses'' 2000) (hashq-set! ANS::NoteTableR 'aes'' 2010) (hashq-set! ANS::NoteTableR 'a'' 2020) (hashq-set! ANS::NoteTableR 'ais'' 2030) (hashq-set! ANS::NoteTableR 'aisis'' 2040) (hashq-set! ANS::NoteTableR 'beses'' 2050) (hashq-set! ANS::NoteTableR 'bes'' 2060) (hashq-set! ANS::NoteTableR 'b'' 2070) (hashq-set! ANS::NoteTableR 'bis'' 2080) (hashq-set! ANS::NoteTableR 'bisis'' 2090) (hashq-set! ANS::NoteTableR 'ceses''' 2100) (hashq-set! ANS::NoteTableR 'ces''' 2110) (hashq-set! ANS::NoteTableR 'c''' 2120) (hashq-set! ANS::NoteTableR 'cis''' 2130) (hashq-set! ANS::NoteTableR 'cisis''' 2140) (hashq-set! ANS::NoteTableR 'deses''' 2150) (hashq-set! ANS::NoteTableR 'des''' 2160) (hashq-set! ANS::NoteTableR 'd''' 2170) (hashq-set! ANS::NoteTableR 'dis''' 2180) (hashq-set! ANS::NoteTableR 'disis''' 2190) (hashq-set! ANS::NoteTableR 'eeses''' 2200) (hashq-set! ANS::NoteTableR 'ees''' 2210) (hashq-set! ANS::NoteTableR 'e''' 2220) (hashq-set! ANS::NoteTableR 'eis''' 2230) (hashq-set! ANS::NoteTableR 'eisis''' 2240) (hashq-set! ANS::NoteTableR 'feses''' 2250) (hashq-set! ANS::NoteTableR 'fes''' 2260) (hashq-set! ANS::NoteTableR 'f''' 2270) (hashq-set! ANS::NoteTableR 'fis''' 2280) (hashq-set! ANS::NoteTableR 'fisis''' 2290) (hashq-set! ANS::NoteTableR 'geses''' 2300) (hashq-set! ANS::NoteTableR 'ges''' 2310) (hashq-set! ANS::NoteTableR 'g''' 2320) (hashq-set! ANS::NoteTableR 'gis''' 2330) (hashq-set! ANS::NoteTableR 'gisis''' 2340) (hashq-set! ANS::NoteTableR 'aeses''' 2350) (hashq-set! ANS::NoteTableR 'aes''' 2360) (hashq-set! ANS::NoteTableR 'a''' 2370) (hashq-set! ANS::NoteTableR 'ais''' 2380) (hashq-set! ANS::NoteTableR 'aisis''' 2390) (hashq-set! ANS::NoteTableR 'beses''' 2400) (hashq-set! ANS::NoteTableR 'bes''' 2410) (hashq-set! ANS::NoteTableR 'b''' 2420) (hashq-set! ANS::NoteTableR 'bis''' 2430) (hashq-set! ANS::NoteTableR 'bisis''' 2440) (hashq-set! ANS::NoteTableR 'ceses'''' 2450) (hashq-set! ANS::NoteTableR 'ces'''' 2460) (hashq-set! ANS::NoteTableR 'c'''' 2470) (hashq-set! ANS::NoteTableR 'cis'''' 2480) (hashq-set! ANS::NoteTableR 'cisis'''' 2490) (hashq-set! ANS::NoteTableR 'deses'''' 2500) (hashq-set! ANS::NoteTableR 'des'''' 2510) (hashq-set! ANS::NoteTableR 'd'''' 2520) (hashq-set! ANS::NoteTableR 'dis'''' 2530) (hashq-set! ANS::NoteTableR 'disis'''' 2540) (hashq-set! ANS::NoteTableR 'eeses'''' 2550) (hashq-set! ANS::NoteTableR 'ees'''' 2560) (hashq-set! ANS::NoteTableR 'e'''' 2570) (hashq-set! ANS::NoteTableR 'eis'''' 2580) (hashq-set! ANS::NoteTableR 'eisis'''' 2590) (hashq-set! ANS::NoteTableR 'feses'''' 2600) (hashq-set! ANS::NoteTableR 'fes'''' 2610) (hashq-set! ANS::NoteTableR 'f'''' 2620) (hashq-set! ANS::NoteTableR 'fis'''' 2630) (hashq-set! ANS::NoteTableR 'fisis'''' 2640) (hashq-set! ANS::NoteTableR 'geses'''' 2650) (hashq-set! ANS::NoteTableR 'ges'''' 2660) (hashq-set! ANS::NoteTableR 'g'''' 2670) (hashq-set! ANS::NoteTableR 'gis'''' 2680) (hashq-set! ANS::NoteTableR 'gisis'''' 2690) (hashq-set! ANS::NoteTableR 'aeses'''' 2700) (hashq-set! ANS::NoteTableR 'aes'''' 2710) (hashq-set! ANS::NoteTableR 'a'''' 2720) (hashq-set! ANS::NoteTableR 'ais'''' 2730) (hashq-set! ANS::NoteTableR 'aisis'''' 2740) (hashq-set! ANS::NoteTableR 'beses'''' 2750) (hashq-set! ANS::NoteTableR 'bes'''' 2760) (hashq-set! ANS::NoteTableR 'b'''' 2770) (hashq-set! ANS::NoteTableR 'bis'''' 2780) (hashq-set! ANS::NoteTableR 'bisis'''' 2790) (hashq-set! ANS::NoteTableR 'ceses''''' 2800) (hashq-set! ANS::NoteTableR 'ces''''' 2810) (hashq-set! ANS::NoteTableR 'c''''' 2820) (hashq-set! ANS::NoteTableR 'cis''''' 2830) (hashq-set! ANS::NoteTableR 'cisis''''' 2840) (hashq-set! ANS::NoteTableR 'deses''''' 2850) (hashq-set! ANS::NoteTableR 'des''''' 2860) (hashq-set! ANS::NoteTableR 'd''''' 2870) (hashq-set! ANS::NoteTableR 'dis''''' 2880) (hashq-set! ANS::NoteTableR 'disis''''' 2890) (hashq-set! ANS::NoteTableR 'eeses''''' 2900) (hashq-set! ANS::NoteTableR 'ees''''' 2910) (hashq-set! ANS::NoteTableR 'e''''' 2920) (hashq-set! ANS::NoteTableR 'eis''''' 2930) (hashq-set! ANS::NoteTableR 'eisis''''' 2940) (hashq-set! ANS::NoteTableR 'feses''''' 2950) (hashq-set! ANS::NoteTableR 'fes''''' 2960) (hashq-set! ANS::NoteTableR 'f''''' 2970) (hashq-set! ANS::NoteTableR 'fis''''' 2980) (hashq-set! ANS::NoteTableR 'fisis''''' 2990) (hashq-set! ANS::NoteTableR 'geses''''' 3000) (hashq-set! ANS::NoteTableR 'ges''''' 3010) (hashq-set! ANS::NoteTableR 'g''''' 3020) (hashq-set! ANS::NoteTableR 'gis''''' 3030) (hashq-set! ANS::NoteTableR 'gisis''''' 3040) (hashq-set! ANS::NoteTableR 'aeses''''' 3050) (hashq-set! ANS::NoteTableR 'aes''''' 3060) (hashq-set! ANS::NoteTableR 'a''''' 3070) (hashq-set! ANS::NoteTableR 'ais''''' 3080) (hashq-set! ANS::NoteTableR 'aisis''''' 3090) (hashq-set! ANS::NoteTableR 'beses''''' 3100) (hashq-set! ANS::NoteTableR 'bes''''' 3110) (hashq-set! ANS::NoteTableR 'b''''' 3120) (hashq-set! ANS::NoteTableR 'bis''''' 3130) (hashq-set! ANS::NoteTableR 'bisis''''' 3140) (hashq-set! ANS::NoteTableR 'r +inf.0) ;;;; The pillar of filth ;;;; To calculate real and correct intervals you need the pillar of fifth with 35 steps for each realistic notename (and 4 unrealistic ones) ;;;;;;;;;;;;;;;;;;;;;;;; ; First the index where a notename/ANS value can be found in the pillar, which is actually a list. ; Strange pattern. it starts with 150 then for all bb its -150, +200. The transition to single b its only -140, then -150 +200 again! 140 must be the b/f change. (define ANS::PillarOfFifthIndex (make-hash-table)) (hashq-set! ANS::PillarOfFifthIndex 150 0) ;feses (hashq-set! ANS::PillarOfFifthIndex 0 1) ;ceses (hashq-set! ANS::PillarOfFifthIndex 200 2) ;geses (hashq-set! ANS::PillarOfFifthIndex 50 3) ;deses (hashq-set! ANS::PillarOfFifthIndex 250 4) ;aeses (hashq-set! ANS::PillarOfFifthIndex 100 5) ;eeses (hashq-set! ANS::PillarOfFifthIndex 300 6) ;beses (hashq-set! ANS::PillarOfFifthIndex 160 7) ;fes (hashq-set! ANS::PillarOfFifthIndex 10 8) ;ces (hashq-set! ANS::PillarOfFifthIndex 210 9) ;ges (hashq-set! ANS::PillarOfFifthIndex 60 10) ;des (hashq-set! ANS::PillarOfFifthIndex 260 11) ;aes (hashq-set! ANS::PillarOfFifthIndex 110 12) ;ees (hashq-set! ANS::PillarOfFifthIndex 310 13) ;bes (hashq-set! ANS::PillarOfFifthIndex 170 14) ;f (hashq-set! ANS::PillarOfFifthIndex 20 15) ;c (hashq-set! ANS::PillarOfFifthIndex 220 16) ;g (hashq-set! ANS::PillarOfFifthIndex 70 17) ;d (hashq-set! ANS::PillarOfFifthIndex 270 18) ;a (hashq-set! ANS::PillarOfFifthIndex 120 19) ;e (hashq-set! ANS::PillarOfFifthIndex 320 20) ;b (hashq-set! ANS::PillarOfFifthIndex 180 21) ;fis (hashq-set! ANS::PillarOfFifthIndex 30 22) ;cis (hashq-set! ANS::PillarOfFifthIndex 230 23) ;gis (hashq-set! ANS::PillarOfFifthIndex 80 24) ;dis (hashq-set! ANS::PillarOfFifthIndex 280 25) ;ais (hashq-set! ANS::PillarOfFifthIndex 130 26) ;eis (hashq-set! ANS::PillarOfFifthIndex 330 27) ;bis (hashq-set! ANS::PillarOfFifthIndex 190 28) ;fisis (hashq-set! ANS::PillarOfFifthIndex 40 29) ;cisis (hashq-set! ANS::PillarOfFifthIndex 240 30) ;gisis (hashq-set! ANS::PillarOfFifthIndex 90 31) ;disis (hashq-set! ANS::PillarOfFifthIndex 290 32) ;aisis (hashq-set! ANS::PillarOfFifthIndex 140 33) ;eisis (hashq-set! ANS::PillarOfFifthIndex 340 34) ;bisis ;The list is the actual pillar of fifth. Stepping left and right can be done by calculating a list-ref index value. (define ANS::PillarOfFifth (list 150 ;feses 0 0 ;ceses 1 200 ;geses 2 50 ;deses 3 250 ;aeses 4 100 ;eeses 5 300 ;beses 6 160 ;fes 7 10 ;ces 8 210 ;ges 9 60 ;des 10 260 ;aes 11 110 ;ees 12 310 ;bes 13 170 ;f 14 20 ;c 15 220 ;g 16 70 ;d 17 270 ;a 19 120 ;e 20 320 ;b 21 180 ;fis 22 30 ;cis 23 230 ;gis 24 80 ;dis 25 280 ;ais 26 130 ;eis 27 330 ;bis 28 190 ;fisis 29 40 ;cisis 30 240 ;gisis 31 90 ;disis 32 290 ;aisis 33 140 ;eisis 34 340 ;bisis 35 ) ) ; A table to translate the human readable "m2" for minor second into steps of fifth left or right in the pillar. ; Without octave transpositions. ; TODO: Replace with real hashtable, not cond. Just a performance tweak. (define (ANS::IntervalGetSteps target) (cond ((eq? target 'r) +inf.0) ; rests ((or (eq? target 'p1) (eq? target 'P1)) 0) ((eq? target 'm2) -5) ((eq? target 'M2) 2) ((eq? target 'm3) -3) ((eq? target 'M3) 4) ((or (eq? target 'p4) (eq? target 'P4)) -1) ((or (eq? target 't) (eq? target 'T)) 6) ((or (eq? target 'p5) (eq? target 'P5)) 1) ((eq? target 'm6) -4) ((eq? target 'M6) 3) ((eq? target 'm7) -2) ((eq? target 'M7) 5) ;Augmentend, Diminished ((or (eq? target 'a1) (eq? target 'A1)) 7) ((or (eq? target 'd1) (eq? target 'D1)) -7) ((or (eq? target 'a2) (eq? target 'A2)) 9) ((or (eq? target 'd2) (eq? target 'D2)) -12) ((or (eq? target 'a3) (eq? target 'A3)) 11) ((or (eq? target 'd3) (eq? target 'D3)) -10) ((or (eq? target 'a4) (eq? target 'A4)) 6) ((or (eq? target 'd4) (eq? target 'D4)) -8) ((or (eq? target 'a5) (eq? target 'A5)) 8) ((or (eq? target 'd5) (eq? target 'D5)) -6) ((or (eq? target 'a6) (eq? target 'A6)) 10) ((or (eq? target 'd6) (eq? target 'D6)) -11) ((or (eq? target 'a7) (eq? target 'A7)) 12) ((or (eq? target 'd7) (eq? target 'D7)) -9) ;Double Augmented, Double Diminished ((or (eq? target 'aa1) (eq? target 'AA1)) 14) ((or (eq? target 'dd1) (eq? target 'DD1)) -14) ((or (eq? target 'aa2) (eq? target 'AA2)) 16) ((or (eq? target 'dd2) (eq? target 'DD2)) -19) ((or (eq? target 'aa3) (eq? target 'AA3)) 18) ((or (eq? target 'dd3) (eq? target 'DD3)) -17) ((or (eq? target 'aa4) (eq? target 'AA4)) 13) ((or (eq? target 'dd4) (eq? target 'DD4)) -15) ((or (eq? target 'aa5) (eq? target 'AA5)) 15) ((or (eq? target 'dd5) (eq? target 'DD5)) -13) ((or (eq? target 'aa6) (eq? target 'AA6)) 17) ((or (eq? target 'dd6) (eq? target 'DD6)) -18) ((or (eq? target 'aa7) (eq? target 'AA7)) 19) ((or (eq? target 'dd7) (eq? target 'DD7)) -16) ;Triple Augmented, Triple Diminished ((or (eq? target 'aaa1) (eq? target 'AAA1)) 21) ((or (eq? target 'ddd1) (eq? target 'DDD1)) -21) ((or (eq? target 'aaa2) (eq? target 'AAA2)) 23) ((or (eq? target 'ddd2) (eq? target 'DDD2)) -26) ((or (eq? target 'aaa3) (eq? target 'AAA3)) 25) ((or (eq? target 'ddd3) (eq? target 'DDD3)) -24) ((or (eq? target 'aaa4) (eq? target 'AAA4)) 20) ((or (eq? target 'ddd4) (eq? target 'DDD4)) -22) ((or (eq? target 'aaa5) (eq? target 'AAA5)) 22) ((or (eq? target 'ddd5) (eq? target 'DDD5)) -20) ((or (eq? target 'aaa6) (eq? target 'AAA6)) 24) ((or (eq? target 'ddd6) (eq? target 'DDD6)) -25) ((or (eq? target 'aaa7) (eq? target 'AAA7)) 26) ((or (eq? target 'ddd7) (eq? target 'DDD7)) -23) ;Quadruple Augmented, Quadruple Diminished ((or (eq? target 'aaaa1) (eq? target 'AAAA1)) 28) ((or (eq? target 'dddd1) (eq? target 'DDDD1)) -28) ((or (eq? target 'aaaa2) (eq? target 'AAAA2)) 30) ((or (eq? target 'dddd2) (eq? target 'DDDD2)) -33) ((or (eq? target 'aaaa3) (eq? target 'AAAA3)) 32) ((or (eq? target 'dddd3) (eq? target 'DDDD3)) -31) ((or (eq? target 'aaaa4) (eq? target 'AAAA4)) 27) ((or (eq? target 'dddd4) (eq? target 'DDDD4)) -29) ((or (eq? target 'aaaa5) (eq? target 'AAAA5)) 29) ((or (eq? target 'dddd5) (eq? target 'DDDD5)) -27) ((or (eq? target 'aaaa6) (eq? target 'AAAA6)) 31) ((or (eq? target 'dddd6) (eq? target 'DDDD6)) -32) ((or (eq? target 'aaaa7) (eq? target 'AAAA7)) 33) ((or (eq? target 'dddd7) (eq? target 'DDDD7)) -30) ;Quintuple Augmented, Quintuple Diminished. Only feses to bisis, the Final Frontier. ((or (eq? target 'aaaaa4) (eq? target 'AAAAA4)) 34) ((or (eq? target 'ddddd5) (eq? target 'DDDDD5)) -34) ((or (eq? target 'q1) (eq? target 'Q1)) 0) ;IntervalGetSteps variation to stay in key. These can be compared to the special rest symbol. They are only an indicator for other functions. ((or (eq? target 'q2) (eq? target 'Q2)) 102) ((or (eq? target 'q3) (eq? target 'Q3)) 104) ((or (eq? target 'q4) (eq? target 'Q4)) 106) ((or (eq? target 'q5) (eq? target 'Q5)) 101) ((or (eq? target 'q6) (eq? target 'Q6)) 103) ((or (eq? target 'q7) (eq? target 'Q7)) 105) (else #f))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;Functions;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Checks if a string is a lilypond note compatible with (d-ChangeChordNotes) ;(define (ANS::IsLily?) ; ;) (define (ANS::Ly2Ans lilynote) ;wants symbol, returns number (hashq-ref ANS::NoteTableR lilynote)) (define (ANS::Ans2Ly ansNote) ;wants number, returns symbol (hashq-ref ANS::NoteTable ansNote)) ; The main function to get notes from Denemo ; Opposite is ANS::ChangeChordNotes ; For singles and chords and rests. Returns a list of ANS-numbers as chord. (define (ANS::GetChordNotes) (if (Note?) (map (lambda (value) (ANS::Ly2Ans (string->symbol value))) (string-tokenize (d-GetNotes))) (if (Rest?) ; not a note (list +inf.0) #f))) ; Change chord/note to another chord/note ; The main function to get ANS back to Denemo via (d-ChangeChordNotes) ; Opposite is ANS::GetChordNotes ; Wants a ANS-number or list of ANS numbers. (define (ANS::ChangeChordNotes ansNotes) (define newList '()) (if (list? ansNotes) ; check if it was a single note, in this case make a list. #t (set! ansNotes (list ansNotes))) (if (every inf? ansNotes) (ChangeToRest) (begin (set! newList (map (lambda (value) (symbol->string (ANS::Ans2Ly value))) (delete +inf.0 ansNotes))) ; first remove all rests, then prepare a string. (d-ChangeChordNotes (string-join newList))))) ; d-ChangeChordNotes wants a long string of notes with space between. ;Insert A note/chord on Denemos cursor position ; wants a single or a list of ANS numbers (chord). ; Optional duration and number of dots. Tick Syntax. returns #t or #f. (define* (ANS::InsertNotes ansNotes #:optional (ticks #f) (dots 0) ) ;TODO: Check if these are valid notes. (define cursorposition (GetCursorNoteAsLilypond)) ; this belongs to the hack down here. (begin ;hack ; TODO: This is a hack. There is no way to directly insert notes with lilypond syntax and let the cursor stay on the same position (d-InsertA) (d-CursorToNote cursorposition) (d-MoveCursorLeft)) (ANS::ChangeChordNotes ansNotes) (if ticks (duration::ChangeNoteDurationInTicks ticks dots)) (d-MoveCursorRight)) ; Extract the note from an ANS-number, without any octave but with the tailing zero. Return as number. ; This means we double-use the lowest octave as abstract version. ; Dividing through the octave, 350, results in the number of the octave and the note as remainder. (define (ANS::GetNote ansNote) (if (= ansNote +inf.0) +inf.0 (remainder ansNote 350))) ;Extract the octave as integer, where c,,, is in the 0 octave. (define (ANS::GetOctave ansNote) (if (= ansNote +inf.0) +inf.0 (quotient ansNote 350))) ; Return the natural, "white key" version of an ansNote. (define (ANS::GetWhiteKey ansNote) ; /50 without rest to get a multiplier that will... ; *50 return the "...eses" version which is a multiple of 50. ; +20 from "...eses" to plain. (+ 20 (* 50 (quotient ansNote 50)))) ;without enharmonic or chromatic versions. This functions simply is concerned about how it "sounds". ;Returns the half-tone step distance from C. (define (ANS::GetHalfToneDistanceFromC ansNote) (if (= ansNote +inf.0) +inf.0 (case (remainder ansNote 350) ((00) 10) ; ceses,,, -> bes ((10) 11) ; ces,,, -> b ((20) 0) ; c,,, ((30) 1) ; cis,,, ((40) 2) ; cisis,,, -> d ... ((50) 0) ; deses,,, ((60) 1) ; des,,, ((70) 2) ; d,,, ((80) 3) ; dis,,, ((90) 4) ; disis,,, ((100) 2) ; eeses,,, ((110) 3) ; ees,,, ((120) 4) ; e,,, ((130) 5) ; eis,,, ((140) 6) ; eisis,,, ((150) 3) ; feses,,, ((160) 4) ; fes,,, ((170) 5) ; f,,, ((180) 6) ; fis,,, ((190) 7) ; fisis,,, ((200) 5) ; geses,,, ((210) 6) ; ges,,, ((220) 7) ; g,,, ((230) 8) ; gis,,, ((240) 9) ; gisis,,, ((250) 7) ; aeses,,, ((260) 8) ; aes,,, ((270) 9) ; a,,, ((280) 10) ; ais,,, ((290) 11) ; aisis,,, ((300) 9) ; beses,,, ((310) 10) ; bes,,, ((320) 11) ; b,,, ((330) 0) ; bis,,, ((340) 1) ; bisis,,, (else #f)))) ;Alteration adds a sharp, flat or nothing to a ans-note. Returns an ANS ;number. Wants an ans number and a procedure that will return either 0, 1 or -1. (define (ANS::Alteration ansNote modificator) (case modificator ((0) ansNote) ; natural, no change ((1) (+ ansNote 10)) ;sharp ((-1) (- ansNote 10)) ;flat (else #f))) ; someone might introduce some insane feature in the future where you can add doublecrosses or similar to a keysig. Or maybe there is even a real usage for micotonals like turkish maqam. ;IntervalCalc wants an ANS note as root and an interval like "m2", "M6" or "p5" returns an ANS value. ;;It is also possible to use diatonic intervals which are name "q2" "q3" "q4" to "q7" ;;You can give a number like IntervalGetSteps directly instead. ;Op is needed to calc up or down. 1 is up, -1 is down. (define (ANS::IntervalCalcPrototype op ansNote interval) (define targ (if (number? interval) interval (ANS::IntervalGetSteps interval))) (define root (hashq-ref ANS::PillarOfFifthIndex (ANS::GetNote ansNote))) (if (> targ 100) ; > 100 are diatonic interval identifiers. (ANS::GetDiatonic (list-ref ANS::PillarOfFifth (+ root (* op (- targ 100))))) ; -100 is a normal interval which then is modified to become in scale. (list-ref ANS::PillarOfFifth (+ root (* op targ))))) ;Since IntervalCalcPrototype just returns a note name without octave we must check if the new note with the old octave is really above the old, if not shift it. (define (ANS::IntervalCalcUp ansNote interval) (define result (ANS::IntervalCalcPrototype 1 ansNote interval)) (define octave (* 350 (ANS::GetOctave ansNote))) ; gets us an octave counter. * 350 to make it addable. (if (>= result (ANS::GetNote ansNote)) ; test if the calulated interval, just one digit until now, will be in the same octave which means its note-value itself is higher or equal (in case of p1) compared to the root. Or it seems to be lower, in this case we need to add an octave because we really want it higher (+ octave result) ;its still in the same octave, just recalculate (+ octave 350 result))) ;+350 to go one octave up (define (ANS::IntervalCalcDown ansNote interval) (define result (ANS::IntervalCalcPrototype -1 ansNote interval)) (define octave (* 350 (ANS::GetOctave ansNote))) (if (<= result (ANS::GetNote ansNote)) (+ octave result) (+ octave -350 result))) ;-350 to go one octave down (define (ANS::AddIntervalAsChordnoteFromLowestUp interval) (if (Note?) (ANS::ChangeChordNotes (append (ANS::GetChordNotes) (list (ANS::IntervalCalcUp (ANS::Ly2Ans (string->symbol (GetLowestNote))) interval)))) #f)) (define (ANS::AddIntervalAsChordnoteFromHighestDown interval) (if (Note?) (ANS::ChangeChordNotes (append (ANS::GetChordNotes) (list (ANS::IntervalCalcDown (ANS::Ly2Ans (string->symbol (GetHighestNote))) interval)))) #f)) (define (ANS::CalculateRealOctaveUp ansNote) (+ ansNote 350)) (define (ANS::CalculateRealOctaveDown ansNote) (- ansNote 350)) (define (ANS::CalculateWholeRealStepUp ansNote) (ANS::IntervalCalcUp ansNote 'M2)) (define (ANS::CalculateWholeRealStepDown ansNote) (ANS::IntervalCalcDown ansNote 'M2)) (define (ANS::CalculateHalfRealStepUp ansNote) (ANS::IntervalCalcUp ansNote 'm2)) (define (ANS::CalculateHalfRealStepDown ansNote) (ANS::IntervalCalcDown ansNote 'm2)) ;GetDiatonic. Looks ups the prevailing keysignature and returns the correct diatonic value for a given note. ; PrevailingKeysig is either -1 (flat), 0 (natural) or 1 (sharp) (define (ANS::GetDiatonic ansNote) (define keysiglist (string-tokenize (d-GetPrevailingKeysig))) ; A list of strings! We need numbers, later (define whitekey (ANS::GetWhiteKey ansNote)) (define getkeysigfor "0") (set! getkeysigfor ; Is used by the new note to sharpen 1, flatten -1, or stay natural 0. (cond ; each list-ref position for keysiglist is one diatonic note position from c to b. ((= 20 (ANS::GetNote whitekey)) (list-ref keysiglist 0)) ; Test which note the white-key version is and send the corresponding sharp/flat/natural modificator to ANS::Alteration later. ((= 70 (ANS::GetNote whitekey)) (list-ref keysiglist 1)) ; Only one can be true because we test one note alone. ((= 120 (ANS::GetNote whitekey)) (list-ref keysiglist 2)) ((= 170 (ANS::GetNote whitekey)) (list-ref keysiglist 3)) ((= 220 (ANS::GetNote whitekey)) (list-ref keysiglist 4)) ((= 270 (ANS::GetNote whitekey)) (list-ref keysiglist 5)) ((= 320 (ANS::GetNote whitekey)) (list-ref keysiglist 6)) )) (ANS::Alteration whitekey (string->number getkeysigfor))) ; keysiglist-members are strings so we need to convert first ; Wrapper functions to make Diatonic Steps easier. (define (ANS::CalculateDiatonicStepUp ansNote) (ANS::GetDiatonic (+ ansNote 50))) ; feed the Keysig-reference with the target note (+50), not the origin one. (define (ANS::CalculateDiatonicStepDown ansNote) (ANS::GetDiatonic (- ansNote 50))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Analaysis;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Convert two ANS notes to one ANS interval, ignores octaves. ;TODO: Give out the octave between. ;If a rest is part of the pair the return value will be +inf.0 as interval step number (like 1 stands for fifth) (define (ANS::GetInterval ansNoteOne ansNoteTwo) (define higher ansNoteOne) (define lower ansNoteTwo) (if (<= ansNoteOne ansNoteTwo) ; bring the notes in right order. We want to calculate from top to bottom. (begin (set! lower ansNoteOne) (set! higher ansNoteTwo))) ;Extract the tone, without octave and feed it to the hash to get the notes position in the pillar of 5th. (if (or (equal? higher +inf.0) (equal? lower +inf.0)) ; with rests? +inf.0 (- (hashq-ref ANS::PillarOfFifthIndex (ANS::GetNote higher)) (hashq-ref ANS::PillarOfFifthIndex (ANS::GetNote lower))))) ; no rest. Return interval step. ; Wants a number from ANS::GetInterval ; Returns a number which represents the simplest "sounding" interval. ; For example: c - gis becomes c -as and therefore a minor sixth. All Tritoni are represented as augmented 4th. ; There has to be made a decision if the "higher" interval is sounding lower like diminished 1 or double diminished 2. Is C - Ces M7 or m2? For Denemo all intervals are from bottom to top so ces is M7. ; Augmented Prime and Diminished Octave have to build an Octave; so do have Augmented Octave and Diminished Prime. ; With the normal system a double diminished second has to be treated as Major Seventh! Or not? Its confusing. ;; TODO: Supplemental: No no, its all wrong. "Diminished Prime upwards" from C results ins Ces which sounds a half tone down. The flaw is in my system which cannot go octaves down while going "up" at the same time. (define (ANS::Interval->Sound interval) (case interval ((+inf.0) +inf.0) ; rests ((0) 0) ;P1 ((-5) -5) ;m2 ((2) 2) ;M2 ((-3) -3) ;m3 ((4) 4) ;M3 ((-1) -1) ;P4 ((6) 6) ;T ((1) 1) ;P5 ((-4) -4) ;m6 ((3) 3) ;M6 ((-2) -2) ;m7 ((5) 5) ;M7 ;Augmentend, Diminished ((7) -5) ;A1 ((-7) 5) ;D1 ; ALERT ((9) -3) ;A2 ((-12) 0) ;D2 ((11) -1) ;A3 ((-10) 2) ;D3 ((6) 6) ;A4 ((-8) 4) ;D4 ((8) -4) ;A5 ((-6) 6) ;D5 ((10) -2) ;A6 ((-11) 1) ;D6 ((12) 0) ;A7 ((-9) 3) ;D7 #! ;Double Augmented, Double Diminished TODO: commented out. why? ((14) ) ;AA1 ((-14) ) ;DD1 ((16) ) ;AA2 ((-19) ) ;DD2 ((18) ) ;AA3 ((-17) ) ;DD3 ((13) ) ;AA4 ((-15) ) ;DD4 ((15) ) ;AA5 ((-13) ) ;DD5 ((17) ) ;AA6 ((-18) ) ;DD6 ((19) ) ;AA7 ((-16) ) ;DD7 ;Triple Augmented, Triple Diminished ((21) ) ;AAA1 ((-21) ) ;DDD1 ((23) ) ;AAA2 ((-26) ) ;DDD2 ((25) ) ;AAA3 ((-24) ) ;DDD3 ((20) ) ;AAA4 ((-22) ) ;DDD4 ((22) ) ;AAA5 ((-20) ) ;DDD5 ((24) ) ;AAA6 ((-25) ) ;DDD6 ((26) ) ;AAA7 ((-23) ) ;DDD7 ;Quadruple Augmented, Quadruple Diminished ((28) ) ;AAAA1 ((-28) ) ;DDDD1 ((30) ) ;AAAA2 ((-33) ) ;DDDD2 ((32) ) ;AAAA3 ((-31) ) ;DDDD3 ((27) ) ;AAAA4 ((-29) ) ;DDDD4 ((29) ) ;AAAA5 ((-27) ) ;DDDD5 ((31) ) ;AAAA6 ((-32) ) ;DDDD6 ((33) ) ;AAAA7 ((-30) ) ;DDDD7 ;Quintuple Augmented, Quintuple Diminished. Only feses to bisis, the Final Frontier. ((34) ) ;AAAAA4 ((-34) ) ;DDDDD5 !# (else #f))) ; The following tests compare 2*2 notes and check if a sequcence is forbidden. ;; Used to detect often forbidden parallels of 5th or 8th or 1th etc. ;; Repetitions and Octave shifts return as #f. ANS::GetNote equalizes octaves ;; The main difference between these functions is the checking with < >. ;new system: ;; g a ;; c d ;; high1 high2 ;; low1 low2 (define (ANS::ConsecutiveOpen? low1 high1 low2 high2 forbidden) (and (= (ANS::GetInterval high1 low1) (ANS::GetInterval high2 low2)) ; same interval? (= (ANS::GetInterval high1 low1) forbidden) ; interval forbidden? (not (= (ANS::GetNote high1) (ANS::GetNote high2))) ; not the same notes, no direct repetition, , no octave jump (or ;if both first notes are higher or lower as both seconds, but higher/lower does not change. (and (> low1 low2) (> high1 high2) (< low1 high1) ;lower voice has the lower pitch (< low2 high2)) ;lower voice has the lower pitch (and (< low1 low2) (< high1 high2) (< low1 high1) (< low2 high2))))) (define (ANS::ConsecutiveCrossed? low1 high1 low2 high2 forbidden) ;cover inverted crossed also. Not the second interval but the firs is crossed. (and (= (ANS::GetInterval high1 low1) (ANS::GetInterval high2 low2)) ; same interval? (= (ANS::GetInterval high1 low1) forbidden) ; interval forbidden? (not (= (ANS::GetNote high1) (ANS::GetNote high2))) ; not the same notes, no direct repetition, no octave jump (or (and (> low1 low2) (< high1 high2) (> low1 high1) (< low2 high2)) (and (< low1 low2) (> high1 high2) (< low1 high1) (> low2 high2)) (and (< low1 low2) (< high1 high2) (< low1 high1) (> low2 high2)) (and (< low1 low2) (< high1 high2) (> low1 high1) (< low2 high2)) (and (> low1 low2) (> high1 high2) (< low1 high1) (> low2 high2)) (and (> low1 low2) (> high1 high2) (> low1 high1) (< low2 high2))))) (define (ANS::ConsecutiveAnti? low1 high1 low2 high2 forbidden) (= (ANS::GetInterval high1 low1) (ANS::GetInterval high2 low2)) ; same interval? (= (ANS::GetInterval high1 low1) forbidden) ; interval forbidden? (not (= (ANS::GetNote high1) (ANS::GetNote high2))) ; not the same notes, no direct repetition, no octave jump (or (and (> low1 low2) (< high1 high2) (< low1 high1) (< low2 high2)) (and (< low1 low2) (> high1 high2) (< low1 high1) (< low2 high2)))) ;;ANS::ConsecutiveAntiCrossed is covered by Crossed because AntiCrossed means just further octave spread. ;TODO: Sometimes it is important if one of the voices does a step or if both voices jump. Test for that, too. (define (ANS::ConsecutiveHidden? low1 high1 low2 high2 forbidden) (and (= (ANS::GetInterval high2 low2) forbidden) ; second interval forbidden? (not (= (ANS::GetInterval high1 low1) forbidden)) ; but the first is not a forbidden one? ;comparision to open variants: Hidden progression cannot have a direct repetition by definition because the intervals are different. (or (and (< low1 low2) (< high1 high2) (< low1 high1) (< low2 high2)) (and (> low1 low2) (> high1 high2) (< low1 high1) (< low2 high2))))) (define (ANS::ConsecutiveHiddenCrossed? low1 high1 low2 high2 forbidden) ;cover inverted crossed also. Not the second interval but the firs is crossed. (and (= (ANS::GetInterval high2 low2) forbidden) ; second interval forbidden? (not (= (ANS::GetInterval high1 low1) forbidden)) ; but the first is not a forbidden one? ;comparision to open variants: Hidden progression cannot have a direct repetition by definition because the intervals are different. (or (and (> low1 low2) (< high1 high2) (> low1 high1) (< low2 high2)) (and (< low1 low2) (> high1 high2) (< low1 high1) (> low2 high2)) (and (< low1 low2) (< high1 high2) (< low1 high1) (> low2 high2)) (and (< low1 low2) (< high1 high2) (> low1 high1) (< low2 high2)) (and (> low1 low2) (> high1 high2) (< low1 high1) (> low2 high2)) (and (> low1 low2) (> high1 high2) (> low1 high1) (< low2 high2))))) ; There is no Anti-Hidden or Anti-Crossed-Hidden. These become valid intervalprogressions! (define (ANS::ConsecutiveIndirect? low1 high1 low2 high2 forbidden) ; TODO: this is a paradox name. Indirect intervals are not consecutive by definition! It should probably need a complete new type of IntervalFinder, not only a special test. #f ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;Random Note Generation;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;TODO: no chords possible yet. It shouldn't matter if you are dealing with chords or single notes. ; Generates a random note within a given range. The range includes both values. (define (ANS::random from to) (let ( (from (/ from 10)) ;drop microtones, just use the chromatic/enharmonic material (to (/ to 10)) (rand 0) ) (set! to (+ 1 (- to from))) ; (- to from ) means only use the relative range, not absolute values . +1 to include the last, given value. (set! rand (+ from (random to)) ) ; get a random value in the range and then shift the relative range to start from "from" (* rand 10))) ; convert to octave scale again and return ;Random note generator, respects the keysignature. Insert an optional range, default is all 56 diatonic notes. (define* (ANS::RandomDiatonic #:optional (from 0) (to 3150)) (ANS::GetDiatonic (ANS::random from to)) ) ;Random note generator, one of each possible chromatic notes or optional range. Same probability for natural, flat or sharp. (define* (ANS::RandomChromatic #:optional (from 0) (to 3140)) (define rand (- (random 3) 1)) ; -1, 0 or 1 (ANS::Alteration (ANS::RandomDiatonic from to) rand) ) ;Takes a list of notes, shuffle the members and inserts them as new notes. (define (ANS::InsertListRandomly ansList) (define shuffledlist (Merge-shuffle-list ansList)) (for-each ANS::InsertNotes shuffledlist) ) ;Takes a list of notes and randomly pick one to insert. The member ;remains in the original list but the function returns a new list without the ;inserted value. (define (ANS::InsertMemberRandomly ansList) (define rnd (random (length ansList) )) (define ANSListcopy (list-copy ansList)) (ANS::InsertNotes (list (list-ref ansList rnd) )) (if (= rnd 0) ;delete1! cannot delete first item (list-tail ANSListcopy 1) (delete1! (list-ref ANSListcopy rnd) ANSListcopy) ) ) ;; Example to enter random triads. Uses nearly the complete featureset of ANS as of today. Creating random notes in a range, making it diatonic and then calculate intervals to add up and down and finally placing all as real Denemo notation, as chord at once. ;(define zz (ANS::RandomDiatonic 420 520 )) (ANS::InsertNotes (list zz (ANS::IntervalCalcUp zz 'p5) (ANS::GetDiatonic (ANS::IntervalCalcUp zz 'M3)) ) ) denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/moveandsearch.scm0000644000000000000000000000013213135434035022430 xustar0030 mtime=1500919837.939981805 30 atime=1500919925.006648472 30 ctime=1500919912.939981805 denemo-2.2.0/actions/denemo-modules/moveandsearch.scm0000644000175000017500000001625713135434035024314 0ustar00jjbenhamjjbenham00000000000000;Find the next object that returns #t from the given test function. Don't write the function in parentheses, just give the name (except you give a function that returns a name :)) (define (FindNextObjectAllStaffs test?) (let loopy () (if (d-NextObject) (if (test?) #t ; object found. Stop (loopy)) ; not the droids you're looking for, move on (if (d-MoveToStaffDown); no next object possible (begin (d-MoveToBeginning) ; lower staff found (if (test?) #t; object found. Stop (loopy))) ; first object of lower staff is not a member, start search again. #f) ; no staff left, final end. ); if end ));loopy end ;;finds the next note at or above the cusor satisfying test?, (define (FindNextNoteAllColumns test?) (let loop () (if (MeasureEnd?) (if (d-GoToPosition #f (1+ (d-GetStaff)) #f 1) ; try to go a staff down (begin ; there is a staff down. Loop again (d-CursorToNthNoteHeight 1) (loop)) (begin ; there is no staff down. (if (d-GoToPosition #f 1 (1+ (d-GetMeasure)) 1) ; try to go to the next column (begin (d-CursorToNthNoteHeight 1) (loop)) ; there is a next column. Start at lowest note and Loop again #f))) ; there is none, end of the movement. End of the script (if (test?) #t ; object found. stop (begin (if (d-CursorToNextNoteHeight) (loop) (if (d-MoveCursorRight) (d-CursorToNthNoteHeight 1))) (loop) ))))) ;;moves the cursor through all the objects in the current measure, followed by all the objects in the measure below, skipping empty measures, after the last staff starts in the next measure on the top staff. (define (FindNextObjectAllColumns test?) (if (not (MeasureEnd?)) (d-MoveCursorRight)) (let loop () (if (MeasureEnd?) (if (d-GoToPosition #f (1+ (d-GetStaff)) #f 1) ; try to go a staff down (loop) ; there is a staff down. Loop again (begin ; there is no staff down. (if (d-GoToPosition #f 1 (1+ (d-GetMeasure)) 1) ; try to go to the next column (loop) ; there is a next column. Loop again #f))) ; there is none, end of the movement. End of the script (if (test?) #t ; object found. stop (begin (d-MoveCursorRight) (loop)))))) (define (FindPrevObjectAllColumns test?) (define (step) (if (not (MeasureBeginning?)) (d-MoveCursorLeft) (if (d-GoToPosition #f (1- (d-GetStaff)) #f 1) ; try to go a staff up (GoToMeasureEnd) (if (and (MoveToColumnEnd) (d-GoToPosition #f #f (1- (d-GetMeasure)) 1)) ; no staff above. try to go to the previous column (GoToMeasureEnd) #f)))) ; no previous column ;;Body (step) (let loop () (if (test?) #t (if (step) (loop) (begin (d-MoveToMovementBeginning) #f))))); Beginning of Movement, end of search ;TODO: Rewrite to not use their own loop but the other functions in this file. (define (PrevDirectiveOfTag tag) (let loop () (if (d-PrevStandaloneDirective) (if (not (d-Directive-standalone? tag)) (loop) #t ) #f))) ;TODO: Rewrite to not use their own loop but the other functions in this file. (define (NextDirectiveOfTag tag) (let loop () (if (d-NextStandaloneDirective) (if (not (d-Directive-standalone? tag)) (loop) #t ) #f))) (define (NextDirectiveOfTagInMeasure tag) (d-PushPosition) (let loop () (if (d-NextStandaloneDirectiveInMeasure) (if (not (d-Directive-standalone? tag)) (loop) (begin (d-PopPushPosition) (d-PopPosition) #t)) (begin (d-PopPosition) #f)))) (define (PrevDirectiveOfTagInMeasure tag) (d-PushPosition) (let loop () (if (d-PrevStandaloneDirectiveInMeasure) (if (not (d-Directive-standalone? tag)) (loop) (begin (d-PopPushPosition) (d-PopPosition) #t)) (begin (d-PopPosition) #f)))) ; GoToMeasureEnd: Move right until "appending" or "none" which is the Measure End (define (GoToMeasureEnd) (let loop () (if (or (None?) (Appending?)) #t (begin (d-MoveCursorRight) (loop))))) ; GoToMeasureBeginning (define (GoToMeasureBeginning) (if (d-MoveToMeasureLeft) (d-MoveToMeasureRight) (d-MoveToBeginning))) ; Go to the first staff, same measure. Handle crossing unequal staff length. (define (MoveToColumnStart) (define measure (d-GetMeasure)) ; to make shure we stay in the same column all the time. (RepeatUntilFail d-MoveToStaffUp) (d-GoToPosition #f #f measure #f)) (define (MoveToColumnEnd) (define measure (d-GetMeasure)) ; to make shure we stay in the same column all the time. (RepeatUntilFail d-MoveToStaffDown) (d-GoToPosition #f #f measure #f)) (define (GetPosition) (list (d-GetMovement) (d-GetStaff) (d-GetMeasure)(d-GetHorizontalPosition))) (define (PositionEqual? position1 position2) (and (equal? (list-ref position1 0) (list-ref position2 0)) (equal? (list-ref position1 1) (list-ref position2 1)) (equal? (list-ref position1 2) (list-ref position2 2)) (equal? (list-ref position1 3) (list-ref position2 3)))) (define (Probe test moveinstruction) (define return #f) (d-PushPosition) (if (moveinstruction) (set! return (test))) (d-PopPosition) return) (define (ProbePosition test movement staff measure horizontalposition) (Probe test (lambda () (d-GoToPosition movement staff measure horizontalposition)))) (define (ProbePreviousMeasure test) (Probe test d-MoveToMeasureLeft)) (define (ProbeNextMeasure test) (Probe test d-MoveToMeasureRight)) (define (ProbeNextObject test) (Probe test d-NextObject)) (define (ProbePreviousObject test) (Probe test d-PreviousObject)) (define (ProbeNextNote test) (Probe test d-NextNote)) (define (ProbePreviousNote test) (Probe test d-PreviousNote)) (define (MoveDownStaffOrVoice) (or (d-MoveToVoiceDown) (d-MoveToStaffDown))) (define (MoveUpStaffOrVoice) (or (d-MoveToVoiceUp) (d-MoveToStaffUp))) (define (LastMovement?) (not (Probe (lambda () #t) d-NextMovement))) (define (FirstMovement?) (not (Probe (lambda () #t) d-PreviousMovement))) (define (LastMeasure?) (not (Probe (lambda () #t) d-MoveToMeasureRight))) (define (FirstMeasure?) (not (Probe (lambda () #t) d-MoveToMeasureLeft))) denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/selection.scm0000644000000000000000000000013213135434035021576 xustar0030 mtime=1500919837.939981805 30 atime=1500919925.016648472 30 ctime=1500919912.939981805 denemo-2.2.0/actions/denemo-modules/selection.scm0000644000175000017500000004773213135434035023464 0ustar00jjbenhamjjbenham00000000000000#! (define-module (actions denemo-modules selection) #:export ( MoveToEndOfSelection NextSelectedObjectAllStaffs SingleAndSelectionSwitcher MapToSelection ApplyToTaggedSelection SingleAndTaggedSelectionSwitcher NextChordInSelection DenemoPaste SchemeCopy ProcessSchemeCopyBufferMusObj SchemePaste ) #:use-module (ice-9 optargs)) !# ;;; move to selection end if cursor is in selection (define (MoveToEndOfSelection) (if (d-IsInSelection) (let loop () (if (d-MoveCursorRight) (if (d-IsInSelection) (loop) (d-MoveCursorLeft)))))) (define (MoveToSelectionBeginningInThisStaff) (define staffPosition (d-GetStaff)) (define rememberPosition (GetPosition)) (if (d-GoToSelectionStart) (begin (d-GoToPosition #f staffPosition #f 1) (if (d-IsInSelection) #t (d-GoToSelectionStart))) ; single staff selection, not at start of bar #f)) ; no selection at all. ;Next object in selection for all staffs (define (NextSelectedObjectAllStaffs) (define lastposition (GetPosition)) (if (and (d-MarkStatus) (d-IsInSelection)) (if (d-NextSelectedObject) #t ; found one. End (if (d-MoveToStaffDown) ; no selected item left in the current staff. check one down. (if (and (d-IsInSelection) (MoveToSelectionBeginningInThisStaff)) #t ; found a selection in the lower staff (begin (apply d-GoToPosition lastposition ) #f)) ; reset cursor to the last known selection position and end. #f)) ; no staff below #f)); no selection or cursor not in selection ;SingleAndSelectionSwitcher by Nils Gey Jan/2010 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Automatically applies a script to a whole selection. You can give different commands or command blocks with (begin) for single items or whole selections. You can enter a complete scheme script with (), arguments and everything you would want to run standalone. Don't forget to escape chars like \" . You can even use a complete (begin ) block. ;But attention! SingleAndSelectionSwitcher will still try to apply the given script to each of the single items alone. If you need a script which differs completly in beaviour for single/selection you have to write your own. You have to take out the (let loop () section for this and write your own selection part there. ;The applied script itself has to take care if the command can be applied to each potential item. If you want only notes/chords/rests you have to make sure the script does not abort on other objects. Its the same as giving proper return values for a single item, just return #f if a command is not possible for an item. While a single item just returns an error if you don't do it correctly, but does no harm otherwise, a script applied to a selection will stop on that item and leaves you on half on the way. ;Return values are the return values the script itself gives. ;The third, optional, parameter can prevent an object from be processed. By default this parameter is #t so the command will be will be applied to any object in the selection and let the command itself decide what to do (or just do nothing). By giving the third optional argument you can specify additional conditions, for example with GetType. In general: Insert test conditions here, if #t the current object will be processed, otherwise it will be skipped. ;Example: (SingleAndSelectionSwitcher d-AddDot d-ToggleStaccato) ; this is nonsense, but valid. It will add a dot for single notes or toggle staccato for the whole selection. (define* (SingleAndSelectionSwitcher commandsingle #:optional (commandselection commandsingle) (onlyFor True)) ; Amazingly commandsingle is already defined on spot so that it can be used again in the same line to define commandselection (if (or (not (d-HasSelection)) (d-IsInSelection)) (begin (if (string? commandsingle) ; support for old scripts. They passed the complete string of scheme as parameter (set! commandsingle (eval-string (string-append "(lambda () " commandsingle " )")))) (if (string? commandselection) (set! commandselection (eval-string (string-append "(lambda () " commandselection " )")))) (if (and DenemoPref_applytoselection (d-MarkStatus)) (ForEachToSelection commandselection onlyFor) (commandsingle))) (d-WarningDialog (_ "Cursor is not inside selection")))) ; MapToSelection is like schemes (map) mixed with ApplyToSelection. Use a proc on all selection items and gather all proc return values in a list. You can give an optional test, only items which return #t are processed. (define* (MapToSelection proc #:optional (onlyFor True)) (define return (list #f)) ; prepare return list (define (gather) (if (onlyFor) ; test the current item (append! return (list (proc))) ; execute the proc and append its return value as listmember to the returnlist #f)) (if (and DenemoPref_applytoselection (d-MarkStatus)) ; only if preferences allow it and if there is a selection at all (begin (d-PushPosition) (d-GoToSelectionStart) (gather) ; start one without selection testing. We already know we have a selection and RepeatProcWhileTest tests first which results in ignoring the first selected item. (RepeatProcWhileTest gather NextSelectedObjectAllStaffs) ; Use the proc/gather function on all items in the selection (d-PopPosition) (list-tail return 1)) #f)) ;ForEachToSelection applies the command to each item in the selection. The return value is unspecified. Faster than MapToSelection. (define* (ForEachToSelection proc #:optional (onlyFor True)) (define (apply) (if (onlyFor) ; test the current item (proc) #f)) (if (and DenemoPref_applytoselection (d-MarkStatus)) ; only if preferences allow it and if there is a selection at all (begin (d-PushPosition) (d-GoToSelectionStart) (apply) ; start one without selection testing. We already know we have a selection and RepeatProcWhileTest tests first which results in ignoring the first selected item. (RepeatProcWhileTest apply NextSelectedObjectAllStaffs) ; Use the proc/gather function on all items in the selection (d-PopPosition) (if #f #f) ; return unspecified. ) #f)) ;Three functions to tag any Denemo-object. Invisible to the user or lilypond. (define (Tag) (d-DirectivePut-object-minpixels "select" 0)) (define (Untag) (d-DirectiveDelete-object "select")) (define (Tag?) (d-DirectiveGetForTag-object "select" )) ;Search objects which were tagged by (Tag) (define (NextTaggedObjectAllStaffs) (define position (GetPosition)) (if (FindNextObjectAllStaffs Tag?) #t (begin (apply d-GoToPosition position) #f))) ;An alternative implementation of ApplyToSelection which works with (Tag) instead of the normal selection. This allows destructive changes which would normally destroy the Denemo-selection ;;Instead of a range, like the built-in selection, every item is tagged on its own. This is slower but allows items to be changed or deleted, which is not allowed otherwise (define (ApplyToTaggedSelection proc) (if (ForEachToSelection Tag) ; ForEachToSelection tests: only for selections and if preferences allow it (let () (d-GoToSelectionStart) (d-UnsetMark) (Untag) (proc) (RepeatProcWhileTest (lambda () (Untag) (proc)) ; The action happens here. Untag makes sure that we never encounter an endless loop because the of functions that move the cursor on their own and return to the tagged item so the movement instruction see below cannot advance. (lambda () ; movement/test for RepeatProc which returns #t or #f (if (Tag?) ; if the current object is already tagged stay. This is guaranteed to only happen once because next time it will be untagged by the line above. #t (NextTaggedObjectAllStaffs))))) #f)) ; no selection or not allowed by preferences ;A SingleAndSelectionSwitcherVariant that works with TaggedSelection which is more robust and works for more commands, but is slower. ;; For documentation see (SingleAndSelectionSwitcher) and (ApplyToTaggedSelection) ;; Works only with real functions, no deprecated support for string-commands like the original SingleAndSelectionSwitcher (define* (SingleAndTaggedSelectionSwitcher commandsingle #:optional (commandselection commandsingle) (onlyFor True)) (if (and DenemoPref_applytoselection (d-MarkStatus)) ; decide if single or selection. (ApplyToTaggedSelection (lambda () (if (onlyFor) (commandselection)))) (commandsingle))) (define NextChordInSelection (lambda () (if (d-NextSelectedObject) (if (Music?) #t (NextChordInSelection)) #f))) (define FirstChordInSelection (lambda () (if (d-GoToMark) (if (Music?) #t) #f))) ; Paste by Nils Gey, 2011 ;; Multistaff-Pasting always adds the complete part AFTER the current measure or fills any complete set of empty measures ;; Singlestaff-Pasting happens at the cursor position and will just paste whats in the clipboard (define* (DenemoPaste #:optional (autocreatebarlines #f)) (define (Paste) (define paste:multistaff? (d-GetClipObjType 1 0)) (define paste:howmanystaffs (let loop ((n 0)) (if (d-GetClipObjType (1+ n) 0) (loop (1+ n)) (1+ n)))) (define position:startmeasure (d-GetMeasure)) (define position:startstaff (d-GetStaff)) (define staff 0) (define count -1) (define staffcountlist (list 0)) ; used for multistaff (define (1+count!) (set! count (1+ count))) (define (1+staff!) (set! staff (1+ staff))) (define (MeasuresToPasteToEmpty?) (define position:measure (d-GetMeasure)) (not (any not (map (lambda (x) (ProbePosition None? #f (+ position:startstaff x) (1+ position:measure) 1)) staffcountlist)))) (define (SplitMeasure!) (if paste:multistaff? (let () (define position:measure (d-GetMeasure)) (define position:current (GetPosition)) (for-each (lambda (x) (if (d-GoToPosition #f (+ position:startstaff x) (1+ position:measure) 1) (d-SplitMeasure) (begin (d-GoToPosition #f (+ position:startstaff x) 1 1) (d-MoveToEnd) (d-SplitMeasure)))) ; for staff ends staffcountlist) (apply d-GoToPosition position:current) (d-MoveToMeasureRight)) ; all needed empty measures got created (d-SplitMeasure))) ; singlestaff is simple split. (define (Put!) (if (and autocreatebarlines (not paste:multistaff?) (not (UnderfullMeasure?)) (Appending?)) ; in a single-staff with AutoCreateBarlines #t Put! will create Barlines if the current measure is full, not MeasureBreak! (if (d-MoveToMeasureRight) #t (SplitMeasure!))) (d-PutClipObj staff count)) ; nothing special here. Just paste. (define (MeasureBreak!) (if (and autocreatebarlines (not paste:multistaff?)) #t ; no barline should be created by paste. Let Denemo decide if a measure is full or not. (if (or (> staff 0) (MeasuresToPasteToEmpty?)) ; only the first staff needs to check if the next measure is empty or not. In Multistaff the first paste-round created all necessary empty measures for all other staffs so its just straight-forward pasting of objects. (d-MoveToMeasureRight) (SplitMeasure!)))) (define (paste! staff count) (case (d-GetClipObjType staff count) ;In order of occurence, to boost performance. ((0) (Put!)) ;note, rest, gracenote, chord ((8) (MeasureBreak!) ) ; Measurebreak ((15) (d-PutClipObj staff count)) ;lilypond-directive ((1) (d-PutClipObj staff count)) ;tuplet open ((2) (d-PutClipObj staff count)) ;tuplet close ((5) (d-PutClipObj staff count)) ;keysignature ((4) (d-PutClipObj staff count)) ;timesignature ((3) (d-PutClipObj staff count)) ;clef ((7) (d-PutClipObj staff count)) ;stem-directive ((9) #f) ; staffbreak ((#f) #f) ; No object left. Means "no clipboard", too. (else (begin (display "Error! Object to paste unknown or unsupported\n") #f)))) ;body (d-UnsetMark) (set! staffcountlist (iota paste:howmanystaffs)) (if paste:multistaff? ; check if the staff-length of all participating staffs is equal. If not append measures. (let () (define position:current (1+ position:startmeasure)) (d-PushPosition) (for-each (lambda (x) (if (d-GoToPosition #f (+ position:startstaff x) position:current 1) #t (begin ; fill in measures up to nr. position:startmeasure (d-GoToPosition #f (+ position:startstaff x) 1 1) (d-MoveToEnd) (Repeat d-AppendMeasure (- position:current (d-GetMeasure)))))) staffcountlist) (d-PopPosition))) (if paste:multistaff? ; check if the current measure in all needed staffs is empty. If not create an empty measure to start. (if (any not (map (lambda (x) (ProbePosition None? #f (+ position:startstaff x) position:startmeasure 1)) staffcountlist)) (MeasureBreak!) (set! position:startmeasure (1- position:startmeasure)))) ;Do the first staff. It will stop on staffbreak or end of the clipboard. (RepeatUntilFail (lambda () (1+count!) (paste! staff count))) (if paste:multistaff? (let () (define position:return (GetPosition)) (Repeat ; repeat single-staff pasting for each staff > 0. (lambda () (1+staff!) (set! count -1) (if (d-GoToPosition #f (+ staff position:startstaff) (1+ position:startmeasure) 1) ; if a staff down, go there. else abort. (RepeatUntilFail (lambda () (1+count!) (paste! staff count))) "No staff left to paste to. But the beginning of the clipboard was pasted, which is probably what you wanted.")) paste:howmanystaffs) (apply d-GoToPosition position:return)))) (if (d-GetClipObjType 0 0) (Paste))) ; A copy variant in Scheme ;; Save the selection in a scheme variable ;; Music? are musobj (CreateMusObj) ;;TODO: SchemeCopy and Paste are very limited and need improvement. (define (SchemeCopy) ;If on an end-tuplet marker it gives you the startvalue (define (GetTupletFromEndTuplet) (let () (define return #f) (if (equal? (d-GetType) "TUPCLOSE") (begin (d-PushPosition) (let loop () (if (d-MoveCursorLeft) (if (equal? (d-GetType) "TUPOPEN") (set! return (d-GetTuplet)) (loop)) #f)) ; staff beginning (d-PopPosition))) return)) ;Mainfunction to gather data. (define (gather) (ActionChooser (lambda () (CreateMusObj)) ;chords, notes, rests (lambda () (cons 'TUPCLOSE (GetTupletFromEndTuplet))) ; tuplet close (lambda () (cons 'TUPOPEN (d-GetTuplet))) ; tuplet open (lambda () (disp "lily")) ; lilypond directive (lambda () (disp "clef")) ; clefs (lambda () (disp "time")) ; timesignatures (lambda () (disp "key")) ; keysignatures (lambda () (disp "stem")))) ; stem directives /voice presets (if (d-MarkStatus) (MapToSelection gather) #f)) (define (ProcessSchemeCopyBufferMusObj musobjproc copybuffer) ;modify the current musobj and then return the complete, altered, object for the map-list. (map (lambda (current) (if (musobj? current) (begin (musobjproc current) current) ; if museobj use the proc current)) ; if not just return the original object copybuffer)) ;Paste a list created by (SchemeCopy) (define (SchemePaste listy) (define (insert x) (cond ((musobj? x) (ANS::InsertNotes (musobj.pitch x) (musobj.baseduration x) (musobj.dots x))) ((equal? (car x) 'TUPCLOSE) (d-EndTuplet)) ((equal? (car x) 'TUPOPEN) (begin (d-StartTriplet) (d-SetTuplet (cdr x)))) )) (for-each (lambda (x) (insert x)) listy)) ;Apply the passed script to each movement of a score (define (ForAllMovements script) (d-PushPosition) (d-GoToPosition 1 1 1 1) (let loop () (begin (eval-string script) (if (d-NextMovement) (loop)))) (d-PopPosition)) ;Apply the passed script to each staff of a movement (define (ForAllStaffs script) (d-PushPosition) (d-GoToPosition #f 1 1 1) (let loop () (begin (eval-string script) (if (d-MoveToStaffDown) (loop)))) (d-PopPosition)) ;Execute the passed procedure on each movement of a score (define (ForAllMovementsExecute proc) (d-PushPosition) (d-GoToPosition 1 1 1 1) (let loop () (begin (proc) (if (d-NextMovement) (loop)))) (d-PopPosition)) ;Execute the passed procedure on each staff of a movement (define (ForAllStaffsExecute proc) (d-PushPosition) (d-GoToPosition #f 1 1 1) (let loop () (begin (proc) (if (d-MoveToStaffDown) (loop)))) (d-PopPosition)) ;Execute the passed procedure on each object of a staff (define (ForAllObjectsInStaffExecute proc) (d-PushPosition) (d-GoToPosition #f #f 1 1) (let loop () (begin (proc) (if (d-NextObject) (loop)))) (d-PopPosition)) ;Execute the passed procedure on each object of a score (define (ForAllObjectsInScoreExecute proc) (ForAllMovementsExecute (lambda () (ForAllStaffsExecute (lambda () (ForAllObjectsInStaffExecute (lambda () (proc)))))))) ;Execute the passed procedure on each note in at the cursor (define (ForAllNotesInChordExecute proc) (if (d-CursorToNthNoteHeight 1) (begin (proc) (while (d-CursorToNextNoteHeight) (proc))))) ;;; (define CreateScriptForDirective::clipboard #f) (define* (CreateScriptForDirective #:optional (tag #f)) (define copied #f) (define note #f) (if (Music?) (begin (if (not tag) (set! tag (d-ChooseTagAtCursor))) (if tag (begin (set! note (cdr tag)) (set! tag (car tag)) (set! copied tag) (set! CreateScriptForDirective::clipboard (d-GetScriptForDirective tag note)))))) (if (and (not copied) (not (MeasureEnd?))) (begin (d-SetMark) (set! copied (string-append (_ "Object of type ") (d-GetType))))) (if copied (begin (d-PlayMidiNote 39 255 9 200) (Help::TimedNotice (string-append "" (_ "Copied ") copied ""))))) (define (SelectStaff) (d-PushPosition) (d-GoToBeginning) (d-SetMark) (d-GoToEnd) (d-SetPoint) (d-PopPosition)) denemo-2.2.0/actions/denemo-modules/PaxHeaders.19168/wysiwyg.scm0000644000000000000000000000013213135434035021333 xustar0030 mtime=1500919837.939981805 30 atime=1500919925.049981806 30 ctime=1500919912.939981805 denemo-2.2.0/actions/denemo-modules/wysiwyg.scm0000644000175000017500000011450713135434035023214 0ustar00jjbenhamjjbenham00000000000000;;; routines for manipulating the evince widget's display for wysiwyg operations on the print view. ;;returns the nth line counting from 0, returns "" if not enough lines in text. (define (GetNthLine text n) (let ((thelist (string-split text #\newline))) (if (> (length thelist) n) (list-ref thelist n) ""))) ;;BeamCount (define (BeamCount direction n) (define tag (string-append "Beam" direction)) (if n (begin (set! n (number->string n)) (d-DirectivePut-chord-prefix tag (string-append "\\set stem" direction "BeamCount = #" n " ")) (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-display tag (string-append (if (equal? direction "Left") "[" "]") n ))) (d-DirectiveDelete-chord tag)) (d-RefreshDisplay) (d-SetSaved #f)) ;;ChopBeaming (define (ChopBeaming n) (define (chop-beam-right) (if (and (Music?) (not (Rest?))) (if (> (d-GetNoteBaseDuration) (+ 2 0)) (begin (BeamCount "Left" n) #t) (if (and (not (Music?)) (d-MoveCursorRight)) (chop-beam-right) #f)) (if (and (not (Music?)) (d-MoveCursorRight)) (chop-beam-right) #f))) (if (and (Music?) (not (Rest?)) (> (d-GetNoteBaseDuration) (+ 2 0))) (begin (d-PushPosition) (d-MoveCursorRight) (if (chop-beam-right) (begin (d-PopPosition) (BeamCount "Right" n)) (d-PopPosition))))) (define (TweakRelativeOffset tag offsetx offsety) (define oldx #f) (define oldy #f) (define data (d-DirectiveGet-standalone-data tag)) (if data (set! data (eval-string data)) (set! data '())) (set! oldx (assq-ref data 'x-offset)) (set! oldy (assq-ref data 'y-offset)) (if (not oldx) (set! oldx "0")) (if (not oldy) (set! oldy "0")) (set! offsetx (number->string (+ (string->number offsetx) (string->number oldx)))) (set! offsety (number->string (+ (string->number offsety) (string->number oldy)))) (d-DirectivePut-standalone-prefix tag (string-append " <>-\\tweak #'extra-offset #'(" offsetx " . " offsety ")")) (if (list? data) (begin (set! data (assq-set! data 'x-offset offsetx)) (set! data (assq-set! data 'y-offset offsety)) (d-DirectivePut-standalone-data tag (format #f "'~s" data))))) (define (TweakRelativeFontSize tag size) (define newvalue (ChangeValue (d-DirectiveGet-standalone-prefix tag) "-\\tweak #'font-size #" " " size)) (d-DirectivePut-standalone-prefix tag newvalue)) ; ExtraAmount ;; the parameter "what" is the LilyPond grob that is being tweaked - it may not be the tag of the DenemoDirective that is being edited ;; property is the (two values - a pair) lilypond property being altered (define* (ExtraAmount what property tag #:optional (type "chord") (context "") (offset '(0 . 0)) (override #f)) (let ((oldstr #f) (start "") (end "") (get-data-command #f) (put-data-command #f) (put-command #f) (override-command #f)) (define oldx #f) (define oldy #f) (define data #f) (define offsetx (car offset)) (define offsety (cdr offset)) ;(disp "Entered with " offset "and " type " and " context " ok") (cond ((string=? type "chord") (begin (set! put-data-command d-DirectivePut-chord-data) (set! get-data-command d-DirectiveGet-chord-data) (set! put-command d-DirectivePut-chord-prefix) (set! override-command d-DirectivePut-chord-override) )) ((string=? type "note") (begin (set! put-data-command d-DirectivePut-note-data) (set! get-data-command d-DirectiveGet-note-data) (set! put-command d-DirectivePut-note-prefix) (set! override-command d-DirectivePut-note-override))) ((string=? type "standalone") (begin (set! put-data-command d-DirectivePut-standalone-data) (set! get-data-command d-DirectiveGet-standalone-data) (set! put-command d-DirectivePut-standalone-prefix) (set! override-command d-DirectivePut-standalone-override))) ) (set! data (get-data-command tag)) (if data (set! data (eval-string data)) (set! data '())) (set! oldx (assq-ref data 'x-offset)) (set! oldy (assq-ref data 'y-offset)) (if (not oldx) (set! oldx "0")) (if (not oldy) (set! oldy "0")) (disp "working with " oldx " " oldy " and " offsetx " " offsety"\n\n") (set! offsetx (number->string (+ (string->number offsetx) (string->number oldx)))) (set! offsety (number->string (+ (string->number offsety) (string->number oldy)))) (if (list? data) (begin (set! data (assq-set! data 'x-offset offsetx)) (set! data (assq-set! data 'y-offset offsety)) (put-data-command tag (format #f "'~s" data)))) (set! start (string-append "\\once \\override " context what " #'" property " = #'(")) (set! end ")") (put-command tag (string-append start offsetx " . " offsety end)) (if override (override-command tag override)) )) ;; (define* (ExtraOffset tag what #:optional (type "chord") (context "") (offset '(0 . 0)) (override #f)) (ExtraAmount what "extra-offset" tag type context offset override)) ;; (define* (AlterPositions tag what #:optional (type "chord") (context "") (positions '(0 . 0)) (override #f)) (ExtraAmount what "positions" tag type context positions override)) ; SetRelativeFontSize ;(define* (SetRelativeFontSize what #:optional (type "chord") (context "") (override #f)) ; (SetValue ChangeRelativeFontSize " #'font-size = #" what type context override)) ; SetPadding ;(define* (SetPadding what #:optional (type "chord") (context "")) ; (SetValue ChangePad " #'padding = #" what type context)) ; SetValue (define* (SetValue change-func change-str what #:optional (type "chord") (context "") (override #f)) (let ((tag "") (oldstr #f) (start "") (end "") (pad "") (override-command d-DirectivePut-chord-override) (get-command d-DirectiveGet-chord-prefix) (put-command d-DirectivePut-chord-prefix)) (cond ((string=? type "note") (begin (set! get-command d-DirectiveGet-note-prefix) (set! override-command d-DirectivePut-note-override) (set! put-command d-DirectivePut-note-prefix))) ((string=? type "standalone") (begin (set! get-command d-DirectiveGet-standalone-prefix) (set! override-command d-DirectivePut-standalone-override) (set! put-command d-DirectivePut-standalone-prefix))) ) (set! start (string-append "\\once \\override " context what change-str)) (set! end " ") (set! tag what) (set! oldstr (get-command tag)) (if (equal? oldstr "") (set! oldstr #f)) (put-command tag (change-func oldstr start end)) (if override (override-command override)))) ; ChangeOffset ;; e.g. (define prefixstring "\\once \\override Fingering #'extra-offset = #'(") ;; (define postfix ")") ;; (ChangeOffset "something first hello 12.6 . 13.8 etc and something after" "hello " " etc" (cons "14.2" "55.5") ) (define (ChangeOffset oldstr prefixstring postfixstring offset) (let ((startbit "") (endbit "") (theregexp "") (thematch "") (oldx "") (oldy "") (xold 0) (yold 0) (xnew "") (ynew "") (xval 0) (yval 0) (xy (string-append " " (car offset) " . " (cdr offset) " "))) ;(disp "Change offset") (begin (if (boolean? oldstr) (set! oldstr (string-append prefixstring " 0.0 . 0.0 " postfixstring))) (set! startbit (regexp-quote prefixstring)) (set! endbit (regexp-quote postfixstring)) (set! theregexp (string-append startbit "[ ]*([-0-9.]+)[ ]+.[ ]+([-0-9.]+)[ ]*" endbit)) (set! thematch (string-match theregexp oldstr)) (if (boolean? thematch) (begin (string-append oldstr prefixstring xy postfixstring)) (begin ;;;get the old x y values out of oldstr (set! oldx (match:substring thematch 1)) (set! oldy (match:substring thematch 2)) (set! xold (string->number oldx)) (set! yold (string->number oldy)) ;;;add two values ;;;(set! offset (d-GetOffset)) ;(disp "Starting with " offset " which is a pair " (pair? offset) " ok?") (if (pair? offset) (begin (set! xnew (car offset)) (set! ynew (cdr offset)) (set! xval (string->number xnew)) (set! yval (string->number ynew)) (set! xnew (number->string (+ xval xold))) (set! ynew (number->string (+ yval yold))) (set! xy (string-append xnew " . " ynew))) (set! xy " 0.0 . 0.0 ")) ;(disp "the new offset will be " xy " ok?") (regexp-substitute #f thematch 'pre (string-append prefixstring xy postfixstring) 'post)) ))));;;; end of function change offset ;;;; TweakOffset ;;;Changes the offset of the something at the cursor - at the moment assume standalone or rest (define (TweakOffset grob tag offsetx offsety) (define sa-tag (d-DirectiveGetForTag-standalone "")) (if sa-tag (let () (if grob (cond ((or (equal? grob "RehearsalMark") (equal? grob "BreathingSign") (equal? grob "MetronomeMark") ) (ExtraOffset sa-tag grob "standalone" "Score." (cons offsetx offsety))) (#t (TweakRelativeOffset sa-tag offsetx offsety))) (TweakRelativeOffset sa-tag offsetx offsety))) ;;; not a standalone directive (begin (if tag (if (defined? (string->symbol (string-append "d-" tag))) (eval-string (string-append "(d-" tag " (list (cons 'offsetx \"" offsetx "\") (cons 'offsety \"" offsety "\")))")) (eval-string (string-append "(d-ToggleCustomOrnament (list \"" tag "\" (cons 'offsetx \"" offsetx "\") (cons 'offsety \"" offsety "\")))")))) (if (Rest?) (ExtraOffset "RestOffset" "Rest" "chord" "Voice." (cons offsetx offsety) DENEMO_OVERRIDE_AFFIX) (if (equal? grob "BassFigure") (d-AdjustBassFigureHeight (cons "FBHeight1" offsety)))))) (d-SetSaved #f)) ;;;;;;;;;;; (define (SetSlur control-points) (define x1 (number->string (car (list-ref control-points 0)))) (define y1 (number->string (cdr (list-ref control-points 0)))) (define x2 (number->string (car (list-ref control-points 1)))) (define y2 (number->string (cdr (list-ref control-points 1)))) (define x3 (number->string (car (list-ref control-points 2)))) (define y3 (number->string (cdr (list-ref control-points 2)))) (define x4 (number->string (car (list-ref control-points 3)))) (define y4 (number->string (cdr (list-ref control-points 3)))) (d-DirectivePut-chord-prefix "Slur" (string-append "\\once \\override Slur #'control-points = #'((" x1 " . " y1 ") (" x2 " . " y2 ") (" x3 " . " y3 ") (" x4 " . " y4 ")) ")) (d-DirectivePut-chord-display "Slur" "(") (d-DirectivePut-chord-override "Slur" DENEMO_OVERRIDE_AFFIX) ) ;;;;;;;;;;; (define (SetTie control-points) (define x1 (number->string (car (list-ref control-points 0)))) (define y1 (number->string (cdr (list-ref control-points 0)))) (define x2 (number->string (car (list-ref control-points 1)))) (define y2 (number->string (cdr (list-ref control-points 1)))) (define x3 (number->string (car (list-ref control-points 2)))) (define y3 (number->string (cdr (list-ref control-points 1)))) (define x4 (number->string (car (list-ref control-points 3)))) (define y4 (number->string (cdr (list-ref control-points 0)))) (d-DirectivePut-chord-prefix "Tie" (string-append "\\once \\override Tie #'control-points = #'((" x1 " . " y1 ") (" x2 " . " y2 ") (" x3 " . " y3 ") (" x4 " . " y4 ")) ")) (d-DirectivePut-chord-display "Tie" "~") (d-DirectivePut-chord-override "Tie" DENEMO_OVERRIDE_AFFIX) ) ;;;;;;;;; (define (GetSlurPositions) (let ((yvals #f)) (set! yvals (d-GetPositions #t)) (if yvals (SetSlurPositions (number->string (car yvals)) (number->string (cdr yvals)))))) (define (GetBeamPositions) (let ((yvals #f)) (set! yvals (d-GetPositions #f)) (if yvals (SetBeamPositions (number->string (car yvals)) (number->string (cdr yvals)))))) (define (ReshapeSlur) (let ((vals #f)) (d-InfoDialog (_"Now drag the control points to make the shape desired - when finished click away from a control point")) (set! vals (d-GetCurve)) (if vals (begin (d-InfoDialog (_"Slur Re-shaped")) (SetSlur vals) (d-SetSaved #f))))) (define GetShape::WarningGiven #f) (define (ShapeTweakWarning) (d-WarningDialog (_"To re-shape curves it is better to have the control points marked. Use the right click menu to turn these on before invoking this command. However, as this is not working well for multiple staffs, you can do without - dismiss this dialog and simply click on four points: the start of the curve, two points outside along its length and the end point.")) ) (define (GetSlurShape) (let () (define (get-control-point n) (case n ((1) (d-InfoDialog (_"Now click on the control point at the left end of the slur\nControl points are marked by red crosses"))(d-GetControlPoint 1) ) ((2) (d-InfoDialog (_"Now click second control point of the slur, the next red cross to the right"))(d-GetControlPoint 2)) ((3) (d-InfoDialog (_"Now click third control point of the slur, the next red cross to the right"))(d-GetControlPoint 3)) ((4) (d-InfoDialog (_"Now click last control point at the end of the slur, the last red cross to the right"))(d-GetControlPoint 4)))) (if (and (not GetShape::WarningGiven) (not (d-Directive-score? "ToggleCurveControl"))) (begin (set! GetShape::WarningGiven #t) (ShapeTweakWarning))) (begin (d-InfoDialog (_"First click on the center line of the staff aligning with notehead/rest (Positioning will be done with respect to this height)")) (if (d-GetReferencePoint) (begin (if (and (get-control-point 1) (get-control-point 2) (get-control-point 3) (get-control-point 4)) (ReshapeSlur))))))) (define (ReshapeTie) (let ((vals #f)) (d-InfoDialog (_"Now drag the control points to make the shape desired - when finished click away from a control point")) (set! vals (d-GetCurve)) (if vals (begin (d-InfoDialog (_"Tie Re-shaped")) (SetTie vals) (d-SetSaved #f))))) (define (GetTieShape) (let () (define (get-control-point n) (case n ((1) (d-InfoDialog (_"Now click on the control point at the left end of the tie\nControl points are marked by red crosses"))(d-GetControlPoint 1) ) ((2) (d-InfoDialog (_"Now click second control point of the tie, the next red cross to the right"))(d-GetControlPoint 2)) ((3) (d-InfoDialog (_"Now click third control point of the tie, the next red cross to the right"))(d-GetControlPoint 3)) ((4) (d-InfoDialog (_"Now click last control point at the end of the tie, the last red cross to the right"))(d-GetControlPoint 4)))) (if (and (not GetShape::WarningGiven) (not (d-Directive-score? "ToggleCurveControl"))) (begin (set! GetShape::WarningGiven #t) (ShapeTweakWarning))) (begin (d-InfoDialog (_"First click on the center line of the staff aligning with notehead/rest (Positioning will be done with respect to this height)")) (if (d-GetReferencePoint) (begin (if (and (get-control-point 1) (get-control-point 2) (get-control-point 3) (get-control-point 4)) (ReshapeTie))))))) (define RestoreSlurPrompt (cons (_ "Restore Default Slur Shape/Position") (_"Removes your customization of this slur"))) (define RestoreTiePrompt (cons (_ "Restore Default Tie Shape/Position") (_"Removes your customization of this tie"))) (define (EditSlur) (let ((choice #f) (menu #f)) (set! menu (list (cons (_ "Hint Slur Position") 'position) (cons (_ "Edit Slur Shape") 'shape))) (if (d-Directive-chord? "Slur") (set! menu (cons (cons RestoreSlurPrompt 'restore) menu))) (set! choice (d-PopupMenu menu)) (case choice ((restore) (d-DirectiveDelete-chord "Slur")) ((position) (d-InfoDialog (_"First click on the notehead of the note where the slur starts")) (if (d-GetNewTarget) (if (d-IsSlurStart) (begin (d-InfoDialog "") (GetSlurPositions)) (d-InfoDialog (_ "Not a slur start - cancelled"))) (d-InfoDialog (_ "Cancelled")))) ((shape) (GetSlurShape))))) (define (EditTie) (let ((choice #f) (menu #f)) (set! menu (list (cons (_ "Edit Tie Shape") 'shape))) (if (d-Directive-chord? "Tie") (set! menu (cons (cons RestoreTiePrompt 'restore) menu))) (set! choice (d-PopupMenu menu)) (case choice ((restore) (d-DirectiveDelete-chord "Tie")) ((shape) (GetTieShape))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define EditTarget::WarningGiven #f) (define (EditTarget) (let ((target (d-GetTargetInfo)) (target-type #f)(grob #f)(tag #f)) (define ta-tag "TextAnnotation") (define (do-offset) (let ((offset #f)) (set! offset (d-GetOffset)) (if offset (begin (TweakOffset grob tag (number->string (car offset)) (number->string (cdr offset))))))) (define (do-center-relative-offset) (let ((offset #f)) (if (and (not EditTarget::WarningGiven) (not (d-Directive-score? "ToggleWysiwygMarks"))) (begin (set! EditTarget::WarningGiven #t) (d-WarningDialog (_"To re-position stuff attached to notes accurately you need to have the locations of the objects marked with red dots. You can use the right click menu to turn these on before invoking this command. However, since this marking code is only working well for single staffs, you can go ahead without. To do this dismiss this dialog and guess at where the red spot is on the object.")))) (d-InfoDialog (_"First click on the center line of the staff aligning with notehead/rest\n(Positioning will be done with respect to this height)")) (d-GetReferencePoint) (d-InfoDialog (_"Now click on the position desired for the object")) (set! offset (d-GetOffset)) (if offset (begin (d-InfoDialog (_ "Re-positioned")) (TweakOffset grob tag (number->string (car offset)) (number->string (cdr offset))))))) (define (do-direction) (let ((direction #f) (choice #f) (menu (list (cons (_ "Up") "^") (cons (_ "Down") "_") (cons (_ "Auto") "-") )) ) (set! choice (d-PopupMenu menu)) (if choice (begin (if (defined? (string->symbol (string-append "d-" tag))) (eval-string (string-append "(d-" tag " (list (cons 'direction \"" choice "\")))")) (eval-string (string-append "(d-ToggleCustomOrnament (list \"" tag "\" (cons 'direction \"" choice "\")))"))))))) (define (do-padding) (let ((padding (d-GetUserInput (_ "Padding") (_ "Give amount of padding required around this item (in staff spaces)") "0.5"))) (if padding (begin (if (defined? (string->symbol (string-append "d-" tag))) (eval-string (string-append "(d-" tag " (list (cons 'padding \"" padding "\")))")) (eval-string (string-append "(d-ToggleCustomOrnament (list \"" tag "\" (cons 'padding \"" padding "\")))"))))))) (define (alter-text) (d-TextAnnotation 'edit)) (define (alter-font-size) (define size (d-GetUserInput (_ "Font Size") (_ "Give relative font size: ") "8.0")) (if size (d-TextAnnotation (cons 'fontsize size)))) (define (chop-beam0) (ChopBeaming 0)) (define (chop-beam1) (ChopBeaming 1)) (define (remove-slur-shaping) (d-DirectiveDelete-chord "Slur")) ;;; the procedure starts here (if target (let ((choice #f)) (set! target-type (list-ref target 0)) (set! grob (list-ref target 1)) (set! tag (list-ref target 2)) (disp "Looking at target " target-type " on grob " grob "with tag " tag " ok?") (cond ((equal? target-type "Object") (if (d-Directive-standalone?) (let ((menu "")) (set! menu (list (cons "Offset Position" do-offset))) (if (equal? ta-tag (GetNthLine (d-DirectiveGetTag-standalone) 0)) (begin (set! menu (cons (cons "Set Font Size" alter-font-size) menu)) (set! menu (cons (cons "Alter Text" alter-text) menu)))) (set! menu (cons (cons (_ "Object Editor") d-EditCursorObject) menu)) (set! menu (cons (cons (_ "Object Inspector") d-DisplayCurrentObject) menu)) (set! menu (cons (cons (_ "Play From Here") d-DenemoPlayCursorToEnd) menu)) (set! choice (d-PopupMenu menu)) (if choice (choice) (disp "cancelled"))))) ((equal? target-type "Chord") (let ((menu "")) (set! menu (list (cons (_ "Up/Down") do-direction) (cons (_ "Padding") do-padding))) ;;; FIXME the value is relative to the centre line of the staff, this gets relative to the tr sign. ;;;need to use d-GetNewTarget to find the notehead position, then use its mid_c_offset to get the centre line value ;;; beaming does not come here, it is on Note target-type this ;;;dragging rests is target = (CHORD, #f, #f) comes here ;; ornaments come here target = (Chord #f ToggleMordent) for example (set! menu (cons (cons (_ "Offset Position") (if tag do-center-relative-offset do-offset)) menu)) (set! menu (cons (cons (_ "Object Editor") d-EditCursorObject) menu)) (set! menu (cons (cons (_ "Object Inspector") d-DisplayCurrentObject) menu)) (set! menu (cons (cons (_ "Play From Here") d-DenemoPlayCursorToEnd) menu)) (set! choice (d-PopupMenu menu)) (if choice (choice) (disp "cancelled")))) ((equal? target-type "Note") (if grob ;;; is grob defined for Fingering, or should this be tag? FIXME (cond ((equal? grob "Fingering") (set! choice (d-PopupMenu (list (cons (cons "Control Fingerings Positions" "Creates a directive before this chord which can be edited to position the finger indications for each note in the chord") d-FingeringPosition)))) (if choice (choice) (disp "cancelled"))) ((equal? grob "BassFigure") (set! choice (d-PopupMenu (list (cons (cons "Offset Figure" "Choose position for this bass figure") do-center-relative-offset)))) (if choice (choice) (disp "cancelled"))) ) (let ((menu '()) (base-duration (d-GetNoteBaseDuration))) (set! menu (cons (cons (cons (_ "Line Break") (_ "Start a new line here")) d-LineBreak) menu)) (set! menu (cons (cons (cons (_"Page Break") (_"Start a new page here")) d-PageBreak) menu)) (if (> base-duration 5) (begin (set! menu (cons (cons (cons (_"Three Beams Right (Off/On)") (_"Put just three beams to the right or undo a previous invocation of this command")) d-BeamRightThree) menu)) (set! menu (cons (cons (cons (_"Three Beams Left (Off/On)") (_"Put just three beams to the left or undo a previous invocation of this command")) d-BeamLeftThree) menu)))) (if (> base-duration 4) (begin (set! menu (cons (cons (cons (_"Two Beams Right (Off/On)") (_"Put just two beams to the right or undo a previous invocation of this command")) d-BeamRightTwo) menu)) (set! menu (cons (cons (cons (_"Two Beams Left (Off/On)") (_"Put just two beams to the left or undo a previous invocation of this command")) d-BeamLeftTwo) menu)) )) (if (> base-duration 3) (begin (set! menu (cons (cons (cons (_"One Beam Right (Off/On)") (_"Put just one beam to the right or undo a previous invocation of this command")) d-BeamRightOne) menu)) (set! menu (cons (cons (cons (_"One Beam Left (Off/On)") (_"Put just one beam to the left or undo a previous invocation of this command")) d-BeamLeftOne) menu)) (set! menu (cons (cons (cons (_"Chop to One Beam") (_"Reduce the beaming between this and the next note to just one beam")) chop-beam1) menu)) )) (if (> base-duration 2) (begin (set! menu (cons (cons (cons (_"Chop Gap in Beam") (_"Remove the beaming between this and the next note")) chop-beam0) menu)) (set! menu (cons (cons (cons (_"No Beam (Off/On)") (_"Leave note/chord un-beamed or undo a previous invocation of this command")) d-NoBeam) menu)) (set! menu (cons (cons (cons (_"Change beam angle/position") (_"Allows you to drag the ends of the beam")) GetBeamPositions) menu)))) (if (d-IsSlurStart) ;;(equal? target-type "Slur") ;; (begin (set! menu (cons (cons (cons (_"Hint Slur Angle/Position") (_"Allows you to drag the ends of the slur")) GetSlurPositions) menu )) (set! menu (cons (cons (cons (_"Change Slur Shape") (_"Allows you to drag the control points of the slur")) GetSlurShape) menu )) (if (d-Directive-chord? "Slur") (set! menu (cons (cons RestoreSlurPrompt remove-slur-shaping) menu ))))) (if (d-IsTied) ;;(equal? target-type "Tie") (begin (set! menu (cons (cons (cons (_"Change Tie Shape") (_"Allows you to drag the control points of the tie")) GetTieShape) menu )) (if (d-Directive-chord? "Tie") (set! menu (cons (cons RestoreTiePrompt remove-tie-shaping) menu ))))) (set! menu (cons (cons (_ "Object Editor") d-EditCursorObject) menu)) (set! menu (cons (cons (_ "Object Inspector") d-DisplayCurrentObject) menu)) (set! menu (cons (cons (_ "Play From Here") d-DenemoPlayCursorToEnd) menu)) (set! choice (d-PopupMenu menu)) (if choice (choice) (disp "cancelled")))))))))) ;EditTarget end ;;;; Toggles a postfix annotation on a chord, with editing for direction or offset (define* (ChordAnnotation tag lilypond params graphic #:optional display (current-direction "^")) (define (set-option option) (if (not (or (equal? current-direction "^") (equal? current-direction "-") (equal? current-direction "_"))) (set! current-direction "-")) (case (car option) ((padding) (string-append " " current-direction "\\tweak #'padding #" (cdr option) " -" )) ((direction) (cdr option)) ((offsetx) (string-append " " current-direction "\\tweak #'X-offset #'" (cdr option))) ((offsety) (string-append " " current-direction "\\tweak #'Y-offset #'" (cdr option) " -" )))) ;;assumes y-offset is last (define (direction-edit) (let ((choice #f)) (set! choice (d-GetOption (string-append (_ "Up") stop (_ "Down") stop (_ "Auto") stop))) (if choice (begin (set! choice (cond ((equal? choice (_ "Up")) "^") ((equal? choice (_ "Down")) "_") ((equal? choice (_ "Auto")) "-"))) (d-DirectivePut-chord-postfix tag (string-append (string-append (if (and (AtRest?) (d-GetNonprinting)) "<>" "") choice " " lilypond " "))) (d-SetSaved #f))))) (if (and (d-Directive-chord? tag) (equal? params "edit")) (case (GetEditOption) ((edit) (direction-edit)) ((cancel) #f) ((advanced) (d-DirectiveTextEdit-chord tag)) ((delete) (d-DirectiveDelete-chord tag)) (else #f)) (if params (begin (if (and (d-Directive-chord? tag) (list? params)) (begin (d-SetSaved #f) (if (and (AtRest?) (d-GetNonprinting)) (set! current-direction (substring (string-trim (d-DirectiveGet-chord-postfix tag)) 0 1)) (set! current-direction (substring (string-trim (d-DirectiveGet-chord-postfix tag)) 3 4))) ;;;FIXME use scheme data field to store this, <>- etc (d-DirectivePut-chord-postfix tag (string-append (if (and (AtRest?) (d-GetNonprinting)) "<>" "") (string-join (map-in-order set-option params)) lilypond " "))) (d-WarningDialog "Cannot complete operation - cursor moved or bad parameter list"))) (begin ;;;no parameters, toggle annotation off/on (ToggleChordDirective tag graphic (string-append (if (and (AtRest?) (d-GetNonprinting)) "<>" "") "-" lilypond) DENEMO_OVERRIDE_ABOVE display)))) (d-RefreshDisplay)) (define* (ChordOrnament tag lilypond params graphic #:optional display) (ChordAnnotation tag lilypond params graphic display)) ; (ChordAnnotation tag (string-append "-\\tweak outside-staff-priority #50 " lilypond) params graphic display)) ; (if (d-Directive-chord? tag) ; (let ((priotag (string-append "Priority" tag))) ; (d-DirectivePut-chord-prefix priotag "\\once \\override TextScript.outside-staff-priority = #50 ") ; (d-DirectivePut-chord-override priotag DENEMO_OVERRIDE_AFFIX)) ; (d-DirectiveDelete-chord priotag))) ; SetSlurPositions (define (SetSlurPositions near far) (d-DirectivePut-chord-override "Slur" DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-prefix "Slur" (string-append "\\once \\override Slur #'direction = #" (if (or (> (string->number near) 0) (> (string->number far) 0)) "1" "-1") " " "\\once \\override Slur #'positions = #'(" near " . " far ")")) (d-SetSaved #f)) ; SetTiePositions (define (SetTiePositions near far) (d-DirectivePut-chord-override "Tie" DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-prefix "Tie" (string-append "\\once \\override Tie #'direction = #" (if (or (> (string->number near) 0) (> (string->number far) 0)) "1" "-1") " " "\\once \\override Tie #'positions = #'(" near " . " far ")")) (d-SetSaved #f)) ;;currently SetBeamPositions is just testing for offset with respect to 0, in fact it is the offset from the center staff line ;;that should be used. This would require determining which clef is in use and what the notes at start and end of the beamed notes are ; SetBeamPositions (define (SetBeamPositions near far) (d-DirectivePut-chord-override "Beam" DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-prefix "Beam" (string-append (if (or (> (string->number near) 0) (> (string->number far) 0)) "\\stemUp" "\\stemDown") " " "\\once \\override Beam #'positions = #'(" near " . " far ")")) (d-SetSaved #f)) ;;;;;;;; ChangePad ;;;(define (ChangePad oldstr prefixstring postfixstring) ;;; (ChangeValue oldstr prefixstring postfixstring d-GetPadding "0")) ;;;;;;;; ChangeRelativeFontSize ;;;(define (ChangeRelativeFontSize oldstr prefixstring postfixstring) ;;; (ChangeValue oldstr prefixstring postfixstring d-GetRelativeFontSize "0" DENEMO_OVERRIDE_AFFIX)) ; (let ((startbit "") ; (endbit "") ; (theregexp "") ; (thematch "") ; (pad "") ; ) ; (begin ; (if (boolean? oldstr) ; (set! oldstr (string-append prefixstring "0" postfixstring))) ; (set! startbit (regexp-quote prefixstring)) ; (set! endbit (regexp-quote postfixstring)) ; (set! theregexp (string-append startbit "([-0-9]+)" endbit)) ; (set! thematch (string-match theregexp oldstr)) ; (set! pad (d-GetPadding)) ; (if (boolean? pad) ; (set! pad "0")) ; (if (boolean? thematch) ; (begin ; (string-append oldstr prefixstring pad postfixstring)) ; (regexp-substitute #f thematch 'pre (string-append prefixstring pad postfixstring) 'post)) ; )));;;; end of function change pad ;;;;;;;; ChangeValue (define (ChangeValue oldstr prefixstring postfixstring val) (let ((startbit "") (endbit "") (theregexp "") (thematch "") ) (begin (set! startbit (regexp-quote prefixstring)) (set! endbit (regexp-quote postfixstring)) (set! theregexp (string-append startbit "([-0-9]+)" endbit)) (set! thematch (string-match theregexp oldstr)) (if (boolean? thematch) (begin (string-append oldstr prefixstring val postfixstring)) (regexp-substitute #f thematch 'pre (string-append prefixstring val postfixstring) 'post)) )));;;; end of function change value denemo-2.2.0/actions/PaxHeaders.19168/lyimport-lexer.scm0000644000000000000000000000013213135434035017670 xustar0030 mtime=1500919837.949981805 30 atime=1500919925.083315139 30 ctime=1500919912.903315138 denemo-2.2.0/actions/lyimport-lexer.scm0000644000175000017500000002662013135434035021547 0ustar00jjbenhamjjbenham00000000000000;"Magical Token". Wrapper to make returning a token easier, without all the positions and input ports (define (lyimport::mtoken symbol value) (make-lexical-token symbol (make-source-location (current-input-port) (lexer-get-line) (lexer-get-column) (lexer-get-offset) -1) value) ) (define (lyimport::pop_state) ;(format #t "Now popping the state ~a becomes ~a~%~%" lyimport::state (cdr lyimport::state)) (set! lyimport::state (cdr lyimport::state))) ;Accumulator for a string in double quotes (used by quote state of lexer) (define lyimport::quoted_string "") (define (lyimport::start_quote) (set! lyimport::quoted_string "") ;;(format #t "Now pushing the state ~a becomes ~a~%~%" lyimport::state (cons 'quote lyimport::state)) (set! lyimport::state (cons 'quote lyimport::state))) (define (lyimport::quote-append str) (set! lyimport::quoted_string (string-append lyimport::quoted_string str))) (define lyimport::block_string "") (define lyimport::brace_count 0) (define (lyimport::start_block) (set! lyimport::block_string "") (set! lyimport::brace_count 1) ;;(format #t "Now pushing the state ~a becomes ~a~%~%" lyimport::state (cons 'block lyimport::state)) (set! lyimport::state (cons 'block lyimport::state))) (define (lyimport::block-append str) (set! lyimport::block_string (string-append lyimport::block_string str))) (define (lyimport::start_incl) (set! lyimport::state (cons 'incl lyimport::state))) ; List of Notenames (define lyimport::list_of_notenames (list "c" "cis" "ces" "cisis" "ceses" "d" "dis" "des" "disis" "deses" "e" "eis" "es" "ees" "eisis" "eses" "eeses" "f" "fis" "fes" "fisis" "feses" "g" "gis" "ges" "gisis" "geses" "a" "ais" "as" "aes" "aisis" "aeses" "ases" "b" "bis" "bes" "bisis" "beses" "h" "his" "hes" "hisis" "heses") ) ; List of Special Identifiers (define lyimport::list_of_special_scm_identifiers (list "major" "minor" "dorian" "phrygian" "lydian" "mixolydian") ) ;Lilyponds "try_special_identifiers" is a part of scan_escaped_words in Denemo and needs this function: (define (lyimport::try_special_identifiers_scm? yytext) ;Helper function to test if the string matches any string of a list of strings, the scm identifiers. (let loop ((counter 0)) (cond ((> (+ counter 1) (length lyimport::list_of_special_scm_identifiers)) #f) ((and (<= counter (length lyimport::list_of_special_scm_identifiers)) (string-ci=? yytext (list-ref lyimport::list_of_special_scm_identifiers counter))) #t) (else (loop (+ counter 1))) ) ) ) ;Three functions to handle assignments. The creation function is in the main file and its used in the parser. The lexer only looks for already existing assignments, triggered with \user-created-keyword-through-assignment (define (lyimport::as-type key) (car (hashq-ref lyimport::AssignmentTable (string->symbol key))) ) (define (lyimport::as-value key) (cdr (hashq-ref lyimport::AssignmentTable (string->symbol key))) ) (define (lyimport::as-eval key) (lyimport::mtoken 'MUSIC_IDENTIFIER (lyimport::as-value key)) ) ;Any time the lexer gets a \keyword is looks up if its a fixed expression, a identifier or an assignment (or wrong) (define (lyimport::scan_escaped_word yytext) (cond ; Converted from Denemo ((string-ci=? "alias" yytext) (lyimport::mtoken 'ALIAS yytext)) ((string-ci=? "apply" yytext) (lyimport::mtoken 'APPLY yytext)) ((string-ci=? "arpeggio" yytext) (lyimport::mtoken 'ARPEGGIO yytext)) ((string-ci=? "autochange" yytext) (lyimport::mtoken 'AUTOCHANGE yytext)) ((string-ci=? "spanrequest" yytext) (lyimport::mtoken 'SPANREQUEST yytext)) ((string-ci=? "commandspanrequest" yytext) (lyimport::mtoken 'COMMANDSPANREQUEST yytext)) ((string-ci=? "simultaneous" yytext) (lyimport::mtoken 'SIMULTANEOUS yytext)) ((string-ci=? "sequential" yytext) (lyimport::mtoken 'SEQUENTIAL yytext)) ((string-ci=? "accepts" yytext) (lyimport::mtoken 'ACCEPTS}, yytext)) ((string-ci=? "alternative" yytext) (lyimport::mtoken 'ALTERNATIVE yytext)) ((string-ci=? "bar" yytext) (lyimport::mtoken 'BAR yytext)) ((string-ci=? "breathe" yytext) (lyimport::mtoken 'BREATHE yytext)) ;;; ((string-ci=? "break" yytext) (lyimport::mtoken 'BREAK yytext)) ((string-ci=? "break" yytext) (lyimport::multilexer));;denemo special ignore break ((string-ci=? "char" yytext) (lyimport::mtoken 'CHAR_T yytext)) ((string-ci=? "chordmodifiers" yytext) (lyimport::mtoken 'CHORDMODIFIERS yytext)) ((string-ci=? "chords" yytext) (lyimport::mtoken 'CHORDS yytext)) ((string-ci=? "clef" yytext) (lyimport::mtoken 'CLEF yytext)) ((string-ci=? "cm" yytext) (lyimport::mtoken 'CM_T yytext)) ((string-ci=? "consists" yytext) (lyimport::mtoken 'CONSISTS yytext)) ((string-ci=? "consistsend" yytext) (lyimport::mtoken 'CONSISTSEND yytext)) ((string-ci=? "context" yytext) (lyimport::mtoken 'CONTEXT yytext)) ((string-ci=? "default" yytext) (lyimport::mtoken 'DEFAULT yytext)) ((string-ci=? "denies" yytext) (lyimport::mtoken 'DENIES yytext)) ((string-ci=? "duration" yytext) (lyimport::mtoken 'DURATION yytext)) ((string-ci=? "dynamicscript" yytext) (lyimport::mtoken 'DYNAMICSCRIPT yytext)) ((string-ci=? "grobdescriptions" yytext) (lyimport::mtoken 'GROBDESCRIPTIONS yytext)) ((string-ci=? "fermata" yytext) (lyimport::mtoken 'FERMATA yytext)) ((string-ci=? "figures" yytext) (lyimport::mtoken 'FIGURES yytext)) ((string-ci=? "grace" yytext) (lyimport::mtoken 'GRACE yytext)) ((string-ci=? "glissando" yytext) (lyimport::mtoken 'GLISSANDO yytext)) ((string-ci=? "header" yytext) (lyimport::mtoken 'HEADER yytext)) ((string-ci=? "in" yytext) (lyimport::mtoken 'IN_T yytext)) ((string-ci=? "key" yytext) (lyimport::mtoken 'KEY yytext)) ((string-ci=? "mark" yytext) (lyimport::mtoken 'MARK yytext)) ((string-ci=? "new" yytext) (lyimport::mtoken 'NEWCONTEXT yytext)) ((string-ci=? "pitch" yytext) (lyimport::mtoken 'PITCH yytext)) ((string-ci=? "time" yytext) (lyimport::mtoken 'TIME_T yytext)) ((string-ci=? "times" yytext) (lyimport::mtoken 'TIMES yytext)) ((string-ci=? "layout" yytext) (lyimport::mtoken 'LAYOUT yytext)) ((string-ci=? "lyricmode" yytext) (lyimport::mtoken 'LYRICMODE yytext)) ((string-ci=? "lyrics" yytext) (lyimport::mtoken 'LYRICS yytext)) ((string-ci=? "lyricsto" yytext) (lyimport::mtoken 'LYRICSTO yytext)) ((string-ci=? "midi" yytext) (lyimport::mtoken 'MIDI yytext)) ((string-ci=? "mm" yytext) (lyimport::mtoken 'MM_T yytext)) ((string-ci=? "name" yytext) (lyimport::mtoken 'NAME yytext)) ((string-ci=? "pitchnames" yytext) (lyimport::mtoken 'PITCHNAMES yytext)) ((string-ci=? "notes" yytext) (lyimport::mtoken 'NOTES yytext)) ((string-ci=? "outputproperty" yytext) (lyimport::mtoken 'OUTPUTPROPERTY yytext)) ((string-ci=? "override" yytext) (lyimport::mtoken 'OVERRIDE yytext)) ((string-ci=? "set" yytext) (lyimport::mtoken 'SET yytext)) ((string-ci=? "rest" yytext) (lyimport::mtoken 'REST yytext)) ((string-ci=? "revert" yytext) (lyimport::mtoken 'REVERT yytext)) ((string-ci=? "partial" yytext) (lyimport::mtoken 'PARTIAL yytext)) ((string-ci=? "paper" yytext) (lyimport::mtoken 'PAPER yytext)) ((string-ci=? "penalty" yytext) (lyimport::mtoken 'PENALTY yytext)) ((string-ci=? "property" yytext) (lyimport::mtoken 'PROPERTY yytext)) ((string-ci=? "pt" yytext) (lyimport::mtoken 'PT_T yytext)) ((string-ci=? "relative" yytext) (lyimport::mtoken 'RELATIVE yytext)) ((string-ci=? "remove" yytext) (lyimport::mtoken 'REMOVE yytext)) ((string-ci=? "repeat" yytext) (lyimport::mtoken 'REPEAT yytext)) ((string-ci=? "addlyrics" yytext) (lyimport::mtoken 'ADDLYRICS yytext)) ((string-ci=? "partcombine" yytext) (lyimport::mtoken 'PARTCOMBINE yytext)) ((string-ci=? "score" yytext) (lyimport::mtoken 'SCORE yytext)) ((string-ci=? "script" yytext) (lyimport::mtoken 'SCRIPT yytext)) ((string-ci=? "stylesheet" yytext) (lyimport::mtoken 'STYLESHEET yytext)) ((string-ci=? "skip" yytext) (lyimport::mtoken 'SKIP yytext)) ((string-ci=? "tempo" yytext) (lyimport::mtoken 'TEMPO yytext)) ((string-ci=? "translator" yytext) (lyimport::mtoken 'TRANSLATOR yytext)) ((string-ci=? "transpose" yytext) (lyimport::mtoken 'TRANSPOSE yytext)) ((string-ci=? "type" yytext) (lyimport::mtoken 'TYPE yytext)) ((string-ci=? "unset" yytext) (lyimport::mtoken 'UNSET yytext)) ((string-ci=? "version" yytext) (lyimport::mtoken 'LILYVERSION yytext)) ;From parser.yy %token TOKEN "\\keyword" ((string-ci=? "change" yytext) (lyimport::mtoken 'CHANGE yytext)) ((string-ci=? "with" yytext) (lyimport::mtoken 'WITH yytext)) ((string-ci=? "book" yytext) (lyimport::mtoken 'BOOK yytext)) ((string-ci=? "bookpart" yytext) (lyimport::mtoken 'BOOKPART yytext)) ((string-ci=? "chordmode" yytext) (lyimport::mtoken 'CHORDMODE yytext)) ((string-ci=? "defaultchild" yytext) (lyimport::mtoken 'DEFAULTCHILD yytext)) ((string-ci=? "description" yytext) (lyimport::mtoken 'DESCRIPTION yytext)) ((string-ci=? "drummode" yytext) (lyimport::mtoken 'DRUMMODE yytext)) ((string-ci=? "drums" yytext) (lyimport::mtoken 'DRUMS yytext)) ((string-ci=? "figuremode" yytext) (lyimport::mtoken 'FIGUREMODE yytext)) ((string-ci=? "invalid" yytext) (lyimport::mtoken 'INVALID yytext)) ((string-ci=? "markup" yytext) (lyimport::mtoken 'MARKUP yytext)) ((string-ci=? "markuplines" yytext) (lyimport::mtoken 'MARKUPLINES yytext)) ((string-ci=? "notemode" yytext) (lyimport::mtoken 'NOTEMODE yytext)) ((string-ci=? "octave" yytext) (lyimport::mtoken 'OCTAVE yytext)) ((string-ci=? "applyContext" yytext) (lyimport::mtoken 'APPLY_CONTEXT yytext)) ; Denemo specific ;; we have to swallow # and an embedded scheme integer following barNumberCheck ((string-ci=? "barNumberCheck" yytext) (begin (let loop ((c #f)) (set! c (lexer-getc)) (if (char-whitespace? c) (loop c))) (read (make-soft-port (vector #f #f #f (lambda () (lexer-getc)) #f) "r"))(lyimport::multilexer))) ;If its not a known keyword its probably a user assignment: ((hashq-ref lyimport::AssignmentTable (string->symbol yytext)) (lyimport::as-eval yytext)) ;Next test for an try_special_identifiers ((lyimport::try_special_identifiers_scm? yytext) (lyimport::mtoken 'SCM_IDENTIFIER yytext)) ;If its not a keyword, assignment or special identifier then its wrong ; (else (begin (display (string-append "error: Unknown word: " yytext " (Line: "(number->string (lexer-get-line)) " Column: " (number->string ;(lexer-get-column)) ")\n"))(lyimport::multilexer)) ; ) (else (lyimport::multilexer) ;(else (lyimport::mtoken 'DENEMODIRECTIVE (string-append "\\" yytext)) ) ) ) (define (lyimport::scan_bare_word yytext) ;Helper function to test if the string matches any string of a list of strings, the notenames. (define (notename_pitch? yytext) (let loop ((counter 0)) (cond ((> (+ counter 1) (length lyimport::list_of_notenames)) #f) ((and (<= counter (length lyimport::list_of_notenames)) (string-ci=? yytext (list-ref lyimport::list_of_notenames counter))) #t) (else (loop (+ counter 1))) ) ) ) (cond ((notename_pitch? yytext) (lyimport::mtoken 'NOTENAME_PITCH yytext)) (else (lyimport::mtoken 'STRING yytext)) ) ) (define (lyimport::scan_fraction yytext) (lyimport::mtoken 'FRACTION yytext) ;{ ;ssize i = frac.find ('/'); ;string left = frac.substr (0, i); ;string right = frac.substr (i + 1, (frac.length () - i + 1)); ;int n = String_convert::dec2int (left); ;int d = String_convert::dec2int (right); ;return scm_cons (scm_from_int (n), scm_from_int (d)); ;} ) denemo-2.2.0/actions/PaxHeaders.19168/incl.l0000644000000000000000000000013213135434035015272 xustar0030 mtime=1500919837.946648472 30 atime=1500919925.093315139 30 ctime=1500919912.903315138 denemo-2.2.0/actions/incl.l0000644000175000017500000000234413135434035017146 0ustar00jjbenhamjjbenham00000000000000A [a-zA-Z\200-\377] AA {A}|_ N [0-9] AN {AA}|{N} ANY_CHAR (.|\n) PUNCT [?!:'`] ACCENT \\[`'"^] NATIONAL [\001-\006\021-\027\031\036] TEX {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL} WORD {A}{AN}* DASHED_WORD {A}({AN}|-)* DASHED_KEY_WORD \\{DASHED_WORD} ALPHAWORD {A}+ DIGIT {N} UNSIGNED {N}+ E_UNSIGNED \\{N}+ FRACTION {N}+\/{N}+ INT -?{UNSIGNED} REAL ({INT}\.{N}*)|(-?\.{N}+) KEYWORD \\{WORD} NEWLINE [^.] ; windows and linux/unix WHITE [ ] ;space and tab! HORIZONTALWHITE [ ] BLACK [^ \n\t\f\r] ;TODO: needs fix RESTNAME [rs] NOTECOMMAND \\{A}+ MARKUPCOMMAND \\({A}|[-_])+ LYRICS ({AA}|{TEX})[^0-9 \t\n\r\f]* ESCAPED [nt\\'"] EXTENDER __ HYPHEN -- BOM_UTF8 \357\273\277 %% ;"%{" yy_push_state (longcomment); %[^{\n\r].*[\n\r] (yycontinue) %[^{\n\r] (yycontinue);backup rule %[\n\r] (yycontinue) %[^{\n\r].* (yycontinue) {WHITE}+ (yycontinue) \"[^"]*\" (begin (lyimport::push-port (substring yytext 1 (- (string-length yytext) 1))) (lyimport::pop_state) (lyimport::multilexer)) \"[^"]* (lyimport::mtoken 'ERROR "end quote missing") <> (lyimport::mtoken 'ERROR yytext) <> (make-lexical-token '*eoi* #f #f) denemo-2.2.0/actions/PaxHeaders.19168/nwc2denemo0000644000000000000000000000013213135434036016155 xustar0030 mtime=1500919838.043315139 30 atime=1500919914.539981806 30 ctime=1500919913.013315139 denemo-2.2.0/actions/nwc2denemo/0000755000175000017500000000000013135434036020103 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/nwc2denemo/PaxHeaders.19168/nwctext.l0000644000000000000000000000013213135434036020103 xustar0030 mtime=1500919838.039981806 30 atime=1500919925.093315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/nwc2denemo/nwctext.l0000644000175000017500000000422313135434036021755 0ustar00jjbenhamjjbenham00000000000000;Macros, substitue as {macro} digit [0-9] letter [a-zA-Z] alphanum [a-zA-Z0-9\-] whitespace [ ] ;space and tab! newline [^.] ;hehe... covers windows and linux CR \n as linefeed sep \| durations Whole|Half|4th|8th|16th|32nd|64th|128th|256th clefs Treble|Bass|Alto|Percussion|Tenor ; Das klappt alles so nicht. Ich muss Duration und so alles nochmal aufspalten in Werte und das dann im Parser zusammensetzen! ; Möglichst viel eindeutig machen. Die Notendurations sind strings, also alle von hand eingeben. was ist mit punktiert? ; Position muss errechnet werden zwischen der zahl aus der quelle sowie dem clef. Also clef kriegt eine absolute zahl und dann wird addiert, oder substrahiert. Der clef markiertja ne linie ; Es muss zwei Versionen geben. Eine der Beam und Stems und Barlines und son kram ignoriert und eine version, die das alles mitbeachtet. %% ;Expressions !NoteWorthyComposer\(.*\) (yycontinue) !NoteWorthyComposer-End (yycontinue) {sep}Note (mtoken 'NEXTISNOTE yytext) {sep}Dur: (mtoken 'DURATION yytext) {sep}Pos: (mtoken 'POSITION yytext) ;Metainfo \|SongInfo.*{newline} (yycontinue) ;\|Title: (mtoken 'TITLE yytext) {durations} (mtoken 'DURATIONVALUE yytext) ,Dotted (mtoken 'DOTTED yytext) ,DblDotted (mtoken 'DOUBLEDOTTED yytext) Opts:Stem=Up (yycontinue) Opts:Stem=Down (yycontinue) Beam=First (yycontinue) Beam=End (yycontinue) Beam (yycontinue) \|Clef\|Type: (mtoken 'CLEF yytext) {clefs} (mtoken 'CLEFVALUE yytext) OctaveShift:Octave\ Up (mtoken 'CLEF8UP yytext) OctaveShift:Octave\ Down (mtoken 'CLEF8DOWN yytext) \|Bar{newline} (yycontinue) \|Bar\|Style:Double (mtoken 'BAR-DOUBLE yytext) \|AddStaff (mtoken 'STAFF yytext) \|Name: (mtoken 'STAFFNAME yytext) \|Label: (mtoken 'STAFFLABEL yytext) [0-9\-]+ (mtoken 'NUMBER yytext) [#bnvx] (mtoken 'ALT yytext) \"({alphanum}|{whitespace})+\" (mtoken 'STRING yytext) {digit} (mtoken 'INTEGER yytext) {letter} (mtoken 'LETTER yytext) \" (mtoken 'DBLQUOTE yytext) ({whitespace}|{newline}) (mtoken 'WHITESPACE yytext) <> (mtoken 'ERROR yytext) <> (make-lexical-token '*eoi* #f #f) denemo-2.2.0/actions/nwc2denemo/PaxHeaders.19168/sample.nwctext0000644000000000000000000000013213135434036021131 xustar0030 mtime=1500919838.039981806 30 atime=1500919925.109981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/nwc2denemo/sample.nwctext0000644000175000017500000001372313135434036023010 0ustar00jjbenhamjjbenham00000000000000 # This is a sample NWC Text file. As you can see, any text starting with # a '#' character is treated as a comment. # # ------------------------------------------------------------------------------ # This first non-comment line of the file should be the !NoteWorthyComposer # header line. This indicates that this file contains NoteWorthy Composer Text, # and is tageted at version 2.0 # !NoteWorthyComposer(2.0) # Blank lines can appear anywhere in the file after the # initial !NoteWorthyComposer header # ------------------------------------------------------------------------------ # The SongInfo, PgSetup, PgMargins, and Font lines can appear anywhere in # the file, but it is good form to have them at the top, prior to adding # any staff data. # It is fine to use multiple SongInfo, PgSetup, and PgMargins in a file. # If a field is specified more than once, the last one overrides any # previous assignment. |SongInfo|Title:""|Author:""|Lyricist:"" |SongInfo|Copyright1:"" |SongInfo||Copyright2:"" |SongInfo|Comments:"" |PgSetup|StaffSize:16|NtnTypeface:NWC2SwingDings|Zoom:4 |PgSetup|TitlePage:Y|JustifyVertically:Y|ExtendLastSystem:Y |PgSetup|DurationPadding:Y|PageNumbers:3|StaffLabels:First System |PgSetup|BarNumbers:Circled|StartingBar:20|AllowLayering:Y # Margins are specified in Centimeters. You can convert to # inches by dividing these values by 2.54. |PgMargins|Left:1.27|Top:1.27|Right:1.27|Bottom:1.27 |PgMargins|Mirror:Y # Unlike the other top level instructions, each Font instruction should # be defined on a single line. Each Font instruction must include the # Style option, which identifies which named font is being defined on # the line. The Size is in points. The CharSet comes from Script field # in the Font dialog. |Font|Style:Staff Italic|Typeface:"Times New Roman"|Size:10|Bold:Y|Italic:Y|CharSet:0 |Font|Style:Staff Bold|Typeface:"Times New Roman"|Size:8|Bold:Y|Italic:N|CharSet:0 |Font|Style:Staff Lyric|Typeface:"Times New Roman"|Size:7|Bold:N|Italic:N|CharSet:0 |Font|Style:Page Title Text|Typeface:"Times New Roman"|Size:24|Bold:Y|Italic:N|CharSet:0 |Font|Style:Page Text|Typeface:"Times New Roman"|Size:12|Bold:N|Italic:N|CharSet:0 |Font|Style:Page Small Text|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0 # If a particular User font is not used in the file, then it might # not appear in the file. When scanning an existing nwctxt file, # you cannot assume that any particular fields or instructions # will exist in the file. |Font|Style:User 1|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0 |Font|Style:User 2|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0 |Font|Style:User 3|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0 |Font|Style:User 4|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0 |Font|Style:User 5|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0 |Font|Style:User 6|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0 # ------------------------------------------------------------------------------ # The first AddStaff line is optional, although it is required if you want to name, # label, or group a staff |AddStaff|Name:""|Label:""|Group:"Vocal" # The various StaffProperties can be assigned using multiple instances of # the instruction. |StaffProperties|EndingBar:Section Close|Visible:Y |StaffProperties|BoundaryTop:14|BoundaryBottom:12 |StaffProperties|Lines:5|Style:Standard|Layer:N|Color:Default |StaffProperties|Muted:N|Volume:127|StereoPan:64|Device:0|Channel:2 # The StaffInstrument uses the same syntax as the Instrument instruction # used in NWC clip text |StaffInstrument|Name:"Lead 6 (voice)"|Patch:85|Trans:0|DynVel:10,30,45,60,75,92,108,127 # Lyrics can be defined anywhere after the AddStaff line, but it is good form # to place them before the notation for the staff |Lyrics|Placement:Bottom|Align:Standard Rules|Offset:0|UnderscoreAsSpace:N |Lyric1|Text:"Aaaaaaaah________\r\n" # The notation contained in the staff uses the same format as NWC2 Clip # Text from the NWC2 User Tool and clipboard mechanisms |Clef|Type:Treble |Note|Dur:Whole|Pos:1^ |Bar |TempoVariance|Style:Fermata|Pos:9 |Note|Dur:Whole|Pos:1 # ------------------------------------------------------------------------------ # Whenever an AddStaff is encountered, a new staff is created. The new # staff then becomes the target for the instructions that follow it, until # another AddStaff is encountered. |AddStaff|Name:""|Label:""|Group:"Piano" |StaffProperties|EndingBar:Section Close|Visible:Y|BoundaryTop:10|BoundaryBottom:18|Lines:5|Style:Upper Grand Staff|Layer:N|Color:Default |StaffProperties|Muted:N|Volume:127|StereoPan:64|Device:0|Channel:1 |StaffInstrument|Trans:0|DynVel:10,30,45,60,75,92,108,127 |Lyrics|Placement:Bottom|Align:Start of Accidental/Note|Offset:2 |Lyric1|Text:"1_1 1_2 1_3 1_4\r\n1_5 1_6 1_7 1_8\r\n" |Lyric2|Text:"2_1 2_2 2_3 2_4\r\n2_5 2_6 2_7 2_8\r\n" |Clef|Type:Treble |Note|Dur:4th|Pos:-4 |Note|Dur:4th|Pos:-3 |Note|Dur:4th|Pos:-2 |Note|Dur:4th|Pos:-1 |Bar |Note|Dur:4th|Pos:0 |Note|Dur:4th|Pos:1 |Note|Dur:4th|Pos:2 |TempoVariance|Style:Fermata|Pause:5|Pos:9 |Chord|Dur:4th|Pos:1,3,5 # ------------------------------------------------------------------------------ |AddStaff|Name:""|Group:"Piano" |StaffProperties|EndingBar:Section Close|Visible:Y|BoundaryTop:15|BoundaryBottom:14|Lines:5|Style:Lower Grand Staff|Layer:N|Color:Default |StaffProperties|Muted:N|Volume:127|StereoPan:64|Device:0|Channel:1 |StaffInstrument|Trans:0|DynVel:10,30,45,60,75,92,108,127 |Lyrics|Placement:Top|Align:Standard Rules|Offset:-2|UnderscoreAsSpace:N |Lyric1|Text:"1_1 1_2 1_3 1_4\r\n1_5 1_6 1_7 1_8\r\n" |Lyric2|Text:"2_1 2_2 2_3 2_4\r\n2_5 2_6 2_7 2_8\r\n" |Clef|Type:Bass |Note|Dur:4th|Pos:-1 |Note|Dur:4th|Pos:0 |Note|Dur:4th|Pos:1 |Note|Dur:4th|Pos:2 |Bar |Note|Dur:4th|Pos:3 |Note|Dur:4th|Pos:4 |Note|Dur:4th|Pos:5 |TempoVariance|Style:Fermata|Pause:0|Pos:-7 |Note|Dur:4th|Pos:6 !NoteWorthyComposer-End denemo-2.2.0/actions/nwc2denemo/PaxHeaders.19168/lyimport.dia0000644000000000000000000000013213135434036020570 xustar0030 mtime=1500919838.039981806 30 atime=1500919925.109981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/nwc2denemo/lyimport.dia0000644000175000017500000003140713135434036022446 0ustar00jjbenhamjjbenham00000000000000‹í}msG’æ÷ù íW³\ùRo‹õ\hmŽGq¶<#K·û‘„ˆä’ _æâî·_e5(“b7 ¡M[Œ{(·ºPÎÊ'3Ÿ|òßþÇoO~™]\ÎÏN¿y Æ>}2;=>;™Ÿ¾ûæéëW9ˆOÿÇŸÿôo'óé¿æÿ½»˜~x’ÿÆé¥üöÍÓ÷Ëåù¿~ýõ¯¿þj¿_N—gf1¿2—³¯ÿßt±˜~/úúéŸÿôäÉÍœL—Sù³ÕŸN—Ë‹ù›«åìÉéôÃì›§o¦Çÿxwqvuzò´»juÝñÙâìâÉ/ÓÅ7Oÿåmùyúõê6_ߺÏ=÷>Ÿ¾›½¹˜Mÿ1|k›RÚäÖ糋Ooûáüìrž/Yþ~~ç’ûÈ?o\³ºê2_túîÏÿòŒÿ¥ûH«?øã^}tp‘å‡éÅ»ùéÝuò³YtMDÄü0\ŠÉpýL>¹7ã.·w¹‹q—›_Ÿ],/¦óåÝ%ßœ-fÓÓnÕåÅÕlóu.§‹üŠÝ·­Š]¼/—g|þ·ÓÅå:èþø£µ}®å¾»˜ŸÜo¸·®¸Ë¯ó“åû£ß”Ww÷ß•îþËürþf1ëûôóÓåÖnÿûvnÿé·SNï?þzåÛÐÝmÐ=œÄ™›¹Ïwï®æ'³Ë^³Û× Üéý겯zêŸ^·îƒéþèg]–XLŸ]¬nÿ×üÕÍ.Þ]ˆŸ~²ú†WGΓéñrþËõo7ÊÙ›ÿ=;^®vû—ÅÙ¯Çï§Ë'Oþýì·§ ŒAæ'ß<ýÉÞ~\Ÿn0ß-Ÿ„wž×ùÙÇ—*|u€áÓp÷øºù›7ŸÞû"üéé»Å¬»¿7ÉÉƺ €‰äW—ÝlÑÙböáèøìâô.LØÎ®Êå,¹»³ës„MˆÓ?¾b­÷³ù»÷ËáÅÀ${ë6[ìòýÙ¯G=Èña·ø9«œOONn»ÄO¶c͆ßüröÛ§ôéñðÉ5CO¢Ã[×}‚!/—³Ó³£óùòøý˜¼çrçg§Ë¾5åÏŸ¼~˜/~ÏmzzùôÉåòw9)²‘¯’Ùâ—Ùr~<½y¢}þ'¸ó¦õ~=ñöÛf¹nÑÛÇOŸ±&CéúXˆÎÕ-wÛ7ÝÀX[·PF~ïN?Ìú¿ÓÙéÕ‡§}ŸÛîóšóØ’óø9ŸÂ'Ó‹“ì;~˜ŸÎzœU;/§ ç¸ñq¾žñÆGäUÆŠÒ¢±9Z-oLŠœ6[ûøìôôhvzR¶´ÉF{® &¡çÃÙïÙ =P~yŽÏ?ý<} èÏr5§'GÓ‹‹³_?½ñï*bå­³Ów÷ùÍÏþ?–xÀ3¯½‚|ûù5Ë&qyǧ\ÿ—'ï³­NâåY\Oþø¯ßÎ~ɯÞûÙñ?Z’@=I E^•'[Šà¡ÁÐ뵘Ÿ½?»˜ÿ3¿OÓŽÇÌ'¤¶Ï^&cyÕ¹¼z#Ì¿ÙÓ«í$á}-Ô:  { *b­¼BÆX²ˆ@­”¡üî•óðU[[Ó­D<´Düžq€äßGù°|3»8šý’OÓælµíI¢¨œ-%?ZJ>Ô»’üŤÊ%)•T Jå%qr@`¼— ^‚û”H9[wÏn.¦HU^¯eëv5[k²u^=[w¸Èø²Ïæãvà#¹ƒÁ$vbH`B¨J@­ Y@f(lÙGb" °*w÷`>Í@°!Ř\pòÑõ…HräQ². ´û€òðèõ‹ŸŸÿâð»†#õqd™R^ šÉ7 ¹mbà°cIµŽEN|Í j tMI”‘c ÅÇäÀC5)Q±¯õ<Ї „DQÕ£0yGÑ{öy©ìRšGÛ£¼øéÕá‹g?ýíù«oÿÚ¼ÊJ6E9+œqчæTÆÉN@u›kþæÐ–ŒA>ô9h:—d2œ‘Ècœ$)–è?CíÔÄðN{¯Î¥½Zfb¿2i·yDm‰PŸ–pʽ%y…’–èšK(ƒÄ1ºKª¶¶^{‰Ç[U-תZ{UÕÊ7]¶bÖxÅ,=µþ’‘á"n£šAèØB\à蔫Y‘¡{K2bäIY…Œ.] ýÕ¬Ýö_œ1#¯¼´zÖž¡F_ƒ3z{$ØH[PB"PWB¢NÌ;üMÒÖA"E%‹Œ‚oÿ¤Ý£„7pøà° “FÛOyá Ç‚„\ŸAd´~Õ5Ä›Ê.¬›ALT–ÊÿÏ#Lò«>IžNRˆÕSˆC[í½6@ð+_ÖúŽ÷ Ú*4H…«»­4þjF}¶C€XZMèò‡V9X±«uð ðfö0µìá^Ä“³e“¥Ñï83D~u´´á¨Ô%¨ï©eòÒt”Ø®yÝÄ`9F‚¥U‹O K_"Q*Ö1£ß1¨6˜gï)&Ë>¹Äб£{“ï~zÕœ‰¶3±Ý‹žÊ?iUiîD1åPÝS•¿ºä<Æ—'jf§‹J t€œ€”y­xK¬œs¸g¯} ¥M+ ŠØ’û•t€º”{¬¬CuGU‘ÔL; uª¸]Ú!ìÔµó5ûZ¶·›ñcK<ìUâá¿®f—Å^`ÔŒèMGroهѳÕS•]„‘ôQÏC;-•ÐÂ#'Uy»¨«ç"½– `r)°*ó ¡³!Gê$]Š1´ìÃè.åï¯~õü§?>{ù?›WQ÷*h¼³X¢IÏØÜÊHY¬nÊ!ƒæîÌGºÑ‰“•$Až&èÄ¿t9ÄêjëÃ;í¹ÖIV´Ä~& ªZ§ >¢ª V÷O¡6†Ä›’BŽ2|—žÎ–Dªiu ­O`#'ò‘}`Ý|—áj€ÄàcãKºüç·?<ûñ™ÀÈŸŽGšd©Su!AÑ# |«î©"mJ¦¹mÊÞd„Ä6)3ê2¾Å§kãÞö,±=ûíx1ý0m¹í±¼‡X7v¢º7OZd©?JÌ`5‰E[6…ý„d2Òª78å$ÄðV{¯ ¯ý\ÓoÙ·9PP“…@|$V÷Z_€T›î‘ ‹¶¹L ç¨Ì&ÒVp©ÙÚzcš¢Ã6—`ãÕéeƳ“Õd‚Õe\²wuAÜòéÐ`㨌tõ¾Äk·ò¡¿ÑË'‰)LND"“qäY×›xÝüC2Þ1úˆlF¥Ö¡nFÈù`]B#zjíÑ%e_ÿøï‡/žwøâÕó¿fDí©‰ˆ7§&æÆnšeº IÔšŒG $ Á3’6!ÊQ~x623X—ZBrl@Ùf&އ%£˜¨Ñ!509^¡‹l= $m¿tÓ¯D“€ŠöX>' týJÍæÖS°ä N$Çl}Ôh!b™ÄZÚ”ÒüJ…øØóïŸ7ù±œŠÍñ%¬ñ&×äÇFÊPl!Ïml7×Zç”3Þ»þp ©„-Ž„-—½NÊ~F=C1¸Ûþt†ìÒnŽShŠ=ËPT5ߗߨÈP¬aôõ“¯2˜ $5^1»€NO²âC¶" J©Ë{ß-n‘Ôm~p³½ÔH.`U†³n¿g6Ovmþá‚6Uw×”Qš†Þ‘í±HVK°Xz°œv1»b[ëÕ²c¼U˦VËÞ«ZöårvzvtruQÚ3[¬¨+æ¡|àZ1{ÄP±¾a DÞ øºkQuø¶$ÐvSë’𠬊ÙV?TÜm_EÌ8ëåbqx-TlÅì[°‘è±BÅúYùŒŽì®éÀºC’m¶¸HbãbõibMBE±$ŘÔê·ÛcõÒ2¶ºÚ5úó>JĹ4û5kõ}%E£iï]K])8NØ 2‚5”œW +v¶NИ·€7ƒìÙ2+L6Î1SðÀnœPkuÆŠ:ãë—E®µÔIæ5@©qb‹%GŠ%ëÛk2°³ž áƒ$bÒ &Eí‡WÁ¤ç4¤ÜŠ•RT&ïÙnŠ„¹Ì[XI­±oE¿ã°r ±…~üê€@9qT4 Ðר\XWn©«Ø×zŒh²M"rË®Ëùùb>;iµˆñd4Ä®œ­1zÜBw‰!­ªÍÖé&)”4Bøt]~dT/?î¶×…¢¿6úÖKÛÊúF¿^‚·@Qý}¯jî¶ã®ùUÐ}§ .ÔÕ¨+îW³¹õl6R™¤Í‚gÝi5ŽÁ£sós‹Ú´šÑÉ¿¼|ö­”"Zô¨=Ã.Š‚J 7I¿‘H®o€FŠÍ]g™UÈh˜xÎÀMdu,Éý½6£åž­öIÑ]§L[áaÏp$ÃŽãÈïæ—ç‹éï7Œ®¾¾¤. Û;ï Ø µ€•*‹é€$Ù4óa¶œ>„NæÇK]ZñäÖ"ÌÁxk &JÝìދ쌶^°[)”ÅÄñ_]Üýò‡áÀç,ñv¾X¬±ÄÛò³Ë8¾<«=‡]ƒ½sÎÝxùÔ‡-½ c†gçrzOG§gËÙ‡³“Y+GZŽr±ø 4Ìô`41ô~-æçGïÏ.æÿÌ/Ôtqï©óvº¸ÜðØ)Ëd˜"¯£Ú"—Wo.óígO7>½¶rñB®`=ÓŠš¡‰ÂòJ9à‰ÅŒrÄ“$à²Q´&‹P‰~ÈÕ¿ÕÞK€p­oמ•ëbMÄÅEõâêÆ!16Mùt_æSO—𥥔´µÓ+vµÞ\7Ø”Ó÷¸Û|þá|1;’ï'C¦©µ!µö¢$[©)§8Hž«›ÏüW¬ÉvÅ}pa ‹ÎWï¡M®ØÔ:Þ#{|lÞc½ÇqnO®}H(?†!ÝÑœÈxeÞê.³d\ Ä«8Üj–~d (•i^&ÊÓ¤¼4ÔeÒ¦B×N9 ï´YÂU´dYpßD ªÂì´ÂÏ.Žû¬½º¹ŒÐt¬=åü¢ØxqAÂ$/˜C홢Õ´Øç}ÁOØø‰_]ü2;:™_æ'p\‘†n¯ÈÆ/Òà«Û€„ДdæÍ(ïV6LPœ¼bñ!i[üÐF›Éÿ·õñq·M~Ò»ê. Ɖvt× ºF<¥Ñó$/ìɯzþ¬v qp›½&iõ97ï…lp~WMÝ}‰ÎÝÕwýxÃJQOYƒÌ¡L.)`^’Á6[»…É` g’W-üÔllÊå ¤„leÜ/±²ÔÃ{1»l=cd ÀÆ[ÓnkÚݦ]WÝ…!Å0/ʳ+t%×$ÐFB É<)Ä9Ç]À•CõŠûàV{¯•\ûªc¤%Rö®W^ùGjÚuõ„ù¯¢fdKù-âªi7ÊzV¹éªbOë„=œÏ­[“RkºÚ¯¦«ü†ÍŽÞ,ÎŽÿѰ´z«Ær(´F«Ñºu]uëE>ÔCÐ,²¿$©=I&”9‘Á);ŽŠM­ç8†›íºÐÇ>:޳“ß›ßÐöÁ§Õ©Ð<Çxž£º‡'Ç÷›J ¯å9lñ>u#†%f÷AÙoTli¿&ÅÔTöyÜåü¸¹ m—†ËÑšÃÐpû‰7)ÈÒQÆ DmA°ÁöHÐà»òY¾枪Ì=>uÉW7Ù¯tÇ8v#‚ÙuI!(¿r)¡bSkÎv·£C+%ìU)aöKð;½è–Ò/(8 Ý©Ð* ã¥\}`H>Ùëiª@‘ Ï©¼#‰'2Ø‹l4‹t,é†C[íik1\Zy¹†÷äîkbl§4å}ý,`Î/6ªÎæ0²û™Dl»ä=ëŽë­ØÜZãz‹nÊÐÑ[—9¨V]$Ù2F£ÇØJ‰cãÈ_ÿðêùчÏ~~ýòð¨‰O4 6%´T°ƒ›Ø !JUDYÝFuàŒÏeÜ“ñ1¨æ%òZ!JŸdÆi’›H¢"Z\Í·òèÔ5L‡·Ûs±4Iì;L²Ü·ã."Ë5ì>nÃîm#›X[ž¼Ø}(¡cŽ%)à„Ÿ–¤ƒšd(AÁê6ÛSe4X%eÚDÊ›lñ¸&ß/=ç«Ûd¼¤”ã-L&¢ª£ÏK¡wXjHÙÑçÈH”çÊÚ!ÇaÚ?¸×{r¡¬®C' ê1d@Îr`Í9¼jÁ£ÁîxViX™.ØúÓ LàS=²Ae°½ô79ÀhlQv‹Æ¹ÚtUn½JgI¤Íí)¼©‰Õ5±º&V7ZÌ7]•:u›d¬ŸS¯Á‚óMо©ÕíZ]¨E(µ5QÉ.%kVbhK0M°>L$ö„F!¢@™!CÒÍNVlnÀ2˜€ )ZÇ̃>Mâ™èѦd1`þ7n*ëØËÚÀòèùw‡/^=ÿËó×-Æ#q Eî¬ n!æH!f}¿‘a,˜ÊšDžT½L0>ß…˜ B˜¢|ÂHÿJ^=z¯bî¶ïâüq± ˆs8ê[„¹g˜2ìv„9dói$Iä:¼Ç!(“$cFC¥¤K„ióŸt&˜ÆàHìµÿb.ç“Ôäm¾n?nÙOn‰Õ]iX„¨ÍC7/E„'&äŒç2‰-*S[jöµ^ìèÒ-z$5f˾Ñ#¯ùEž]]µ©[ãLKR åxh$—QI.±ºÁ†d¤€¦'¡nòVè™d˜C²^¦‰JµÚª–Úë`L„ú3 ­±)bð‚eŽ7žtÝÎ-œÈ»} 9ÿú‰3B‹>tÑEUçŸ ?¿éÔ9å$°P|¿Ë¾?lª»½þI0¼ÙÞ‹}Žrh•;Ý4Ø|ÿÎÖüió`ë;r°†>ñ~mÀ)¸nP …‰x,€&¹¤÷‡÷ÚkòàC¹˜ÜßC“wiMþfÚø»ùåùbúû ³‡f_OH‡ÕM&z6ïPšÒ»YkÈGW¬oSîç‡ÙrúP¾ðd~¼T%ÄÕ=ºurÓQžÔMÑxÔÌMovïEvI[0Ø­OËb’ﻺ¸ûõg?g‰·óÅb%Þ–Ÿ]ÎÞ—gURÎÃîÁÞ9ëª5Ö(lée³h0],g§Óå<‡ò­=N“›7@Ü͈iR;–†^¯ÅüüèýÙÅüŸù}š.î=kÞN—6e™ PämT[äòêÍe¾}…Î̶Â-¬o,7Œ~…T“­R…d,vdýDÖN¶Ë¾&ÐV$ÜéÝKËTqŠ©ÅZ{kIÀ²ÛÁÖ0Gluk¶¾åMyKpƱút%&ÕÖ eyË|låó‹¬ÅdCþç¦êk2t¬õÖgúüOçCgl°ýì‡W‡/_<{õü5MK}˜-—•d`´mãH°Õ=Bá[7¥ …QSÕ2¯=¸²8Î ¤N<Ùíé'ƒí¹Ô(¢"¥¾iº¬ÈÝU B÷âOå «Ÿ¼j¸è·t  «“¼˜Q ‹ªe6ûk1 õ˜qx«=/”=i¬ ¥›É律„–ů3V7vˆ—U ‹NÓuÔˆx=-ô%’nØØ%š¢D‹·­(a¯§eBS”Péìï0[ÝÓ!”JMZW(~ÄaÉ>RpÒcî¬ryÅ®Öq"ˆ"Þd`pk1ß/-ôù‡óE«é•l‰Àr.´ó½G}wÿê MV°/ æQ(¹+Ó•å7§-QR±­5çgº&Ö$JöË|¼os!#µ•c>(t‡Có!#¬R½¨¥U¦6×T+‘ù‘:ÖQH.J[2%.:uM»öDÔl§P>oLÇjùëýì/¹/û­[°‚ú–²db¡äŠÈªÚ;DÃVš´d©ü$¯8RW¡›fÖ¯Pnµw0G1øÒc[zïjÔþ ­QC};™5ˆ1vi@VíGSvò]©C7‘µ“4‘:£F=¼Õ>æ ³4œBã5ïÉWÍXuéÑ,ëUc %—V¹š dUuc » ^= Í ü$/]àBTIŒI]6fp³}F6`A ÙÍS³ù}³ù¸Û6߯PÝÆ­PLÀG]•¨¼ yÛ-”vš`‘ê¡ô-áÆšøë“Ðz·ÙsˆXÐJ BY# gðÑÆ x¼Ôß©-²ÿÌbÔ3ϵ¹p“L€QôZÆ €2› ”?oÑ Z5hϪA§r«£l§ïf­¤NG#Cen㌭YPßÑP~5!dçFX Ü„0»α";ãFMGR³³õDë0¹CJ9"ŽT[bÉÒEœBL´é£kÜæÍË·}öâûÖ «îPHÞÉÚ°7=72»|½711ß&uÁÇšåF©ÙƒKv$%FKem½zjbp«½½t¶\[¢§&Y»wyHpUåFàÇlƒê¶*è_“KÔé<ó™ÏþA*yby)¨6ÈÕìl=I–!cH žbÀàTA$8´C:!‘Û4sÙ@äæ òðﯟýÐ0¤:†dyסÄ[‹Üh2ÖûÑ&MeP6jU Aè`Æ’žÈ²›A„>i3Ö†·Ú 7…ÎZ| ´RöÞAÈð%CÈj^º ôpš „„, Œá:©U•›†;[sx¦O>†¤=<“#{ç=øŒZ¹i,Œ!~õòù‹ï†TÇ®¼ì…Ìšßõ6:s,‰v 2•qù« ȺÒ;èVŠ„~BÙÁ så@jê²§½2xánåKcjrß dÚu9À†ÂꦇðšÄg†núºôÈO$vóò+kwÇ×ìl=içpk¾Mlò*ûEˆ:¿˜½ÿvÔºäÇî’'o¼ Ý!јQ#âGÜÆìu¥øã•ç0ËJ‘R×O“cv-Ƨ ]†v‰F¼Þ»Õ¾KM¥Ä^¡ ÓðãÎâG„º¦Ùø˜)H¤z )½êVCRÁÞv2keÔŽ †C•¬Ý0²bsë¥!ƒh¼"“ÝÚ š†ä`™šó#lBÆgCþôâÕá¾j0RFr>ö1q™Æîüí†×†#5q$×ãÈ|Ä—ô'õ‘Þy­Œãºp\äI @ØQaA¤˜¢:”Ümt„.…ÒÍíœ uCðÑ$XÐÕ›}2Ù›‡‚ì<©’Xd-Ëe­`£ÏfrH‰«R?~ÜkßÅùOЛœZ bïbHúR­Þ×ÇΟRW LU#Ig"wÎ>9±ú|6Y©DZu»Þmÿ!á¬÷«zI£¯íÝ“ûRí>lÃîKOk0–Ø)[½Û™QÆ)T|½ôÈ•f¹ä)`õ½{í÷õÁ&\Ù|YÜ?›ç·ùù%Œ_ˆüR àƒ þRî'h\†öM…ÄaGô—n”:ºÓAÆŒ.&ëZ+MøíøB˜´u‹FÕ¼õ'ƨ õ‹SÉþJшÉ P,-&&Õ¢QÍæÖã!bLÁ1 %`]êºu. Stdmˆ¾F/½8üV7­nLŒÑ—\[ZÝh¤ºÙú’s˜…\¾;Šº1%gm—’Íkú‰ÛÎÅäÔcÊ¡Íö²a‹’oçþlh1å¾å¿d8Iõ‹÷¦Ø»W®P áè0Dï-Šz;¾T""é·E7¿<_L¿qÀÇ£ žƒì¬ÔëUCJ[Ü}G  ’MñùÙ­nøê|˜-§'óã¥n¸ZñàÖ W!¼äUÄ7»÷"#Ó‡ÍìVººËb\]Üýò‡cƒÏYâí|±Xc‰·åg—úò¬J:ììƒîF'¾ZaK/Øy„³s9½§‹£ùIË&ŒQ˜¢nDl™„‡2 Co×b~~ôþìbþÏü:M÷2o§‹Ë O™²LF%ò2ª-ryõæ2ßþ@ýвMÀUßýQš÷U[½„e\Oç*€ £+W_6ärêÓ¿á†Ük«A®¹r]Ïkûpְר+™H©Ó‘nè«¡¯Ç@_*€T?~H¤‰TÕ>;éÈEDZTãó/¨¬X³«u0Q0ˆéæk€{%(è|vÒéþ-æ—ËæhÕ§¢zãÁ•Ó¡IÿH˜¨îæÌG|L¢5ƒ®3‰(üìüŽ@Dš ›E‰/H¯?Ánh§=—²m»×¹Ñ$ö¬>ë(·¶Ýþë8Vë6ÕÊOÖJ;e,ƒîälãЙ$/ðÑÁvbíѲ¶PüàV{Ì=˜TæU ¶åÔ”>÷Íâív-~4^Tu»æGXFʬ(4¢p¢7L.MdeŸºx1‡XÚ³Å6Ú“Bã#ßîÕ[·›Ñ?&Òﺼï@bˆëûé IµKÛwÒ¾Üui;g€E‹‘½ö|ˆš­­—è_Ÿ±ié¡MÝ(ÀÌßΧbÀ-A¤^‰qÉØTh˾¥ˆFLñš4¥OyEyÏñ‘êØ¡Ò•]¦Ðå¸-bštƒÅD8—s˜vàxÏn{[< ‚÷+&ŠmBû†"¹2vtÙ Íõýt!¿àIfº2eˆçUyõy-âëµ’“ ²¤ˆE!y¯Š,·³Õõ·êq1$Hu…€òOÏ#%—<·Æí±1ç<õ׆1Õ1¦Oל+m„íh ³¾ƒÓKà]”]ÑDª SÖ RœÈ±åìh² d¢Mª7qï¶ï⌀ÃÇìʦ¦ÌÝ™u-›÷aÔ@f}Ëf  TU€¼¿©äD,RQ²1éÂʚͭÅñ‡1CàŒ„Ð¡×ÕŠÞ2ùÈÒƒ¾é9Ù ä“ÚAdG?þôÝÑóï_¼zþ—ç‡/¸Ô—ÖH°VÀ%nlòÑÀåZÔ’I}çÈ«6«É´KìòÜà'%óEÂXD‚WÞlÿÅÔeW ¶lŠö[ò.bËu̾º?B&Kû¸ÒçÒFH2–¤L•¶Ý$ÉȰ[Q IÛ臷z÷Údê'ªM"Ü?“÷uoãF“ÕŒvð’ð.²W&xÔdÁ€“¢_·TŒBiÕ#SÐ ,·³ÏõÆø€Áç0Ó!ÚªŽõ5f]û„£u‘"µsôóÇ×??ÿ¶E—cöOå÷„¡S‰!"lÁåXÁeuSDC]üä]Ô,[æ³DjcZžä•™bjº¤ÞR1´Ñž+ó!î¨û¤9¨l-T{T†]„˜ë˜{uK“x5Vµ§È/cIÀ0@œÈÊ©¬l3 ‹Ú-Cí¹’ ¨{$ÍØwÖØaçãÉF WÝH!ÍQ3‚ô+…ÒF᳃uXך´^ìX³¯5¥^-ÞKÔš(öª‰b~’Aÿüí|vq4?7 õÑ»ŒºÊÙÐÚ'¶ÞÖÈœ~8ËVßçGª[(dHHÐäN;(~$Ar—‘›—w%PFŒº3Skv¶ž'I2 Ú“î2&ÕÜcr® 1€RDhTéÑ=KQmjþDÛŸ8V CK‚Èò‡–pÕ¡T÷åH#eP LV¥ L’‘æ‘ü+듪C©ÙÙzýÝÁßr(š„I21Ú›¥ MÝ¡\æWnvôfqvüæVFSòß¹•è94·2¦[©îÂq>sš5,ç:·â‹[!ãRŒùW4œ* ¿fgë¹Ç1Þp+¨êVB`†?Ü 4·2¶[É7]Í~ÉgFó*êÁJ*/|—ЀШ÷£z•êþ./G¼f©Ô‡Î«÷u"Gö*!ª+;[/û¿¬èf¿0Â`Å7¯2z°RþÝ<жG V^v,…ضï[÷(÷p¼]uCW åzJÀõ”P¦º»’þJª¬îš­)=CÞ$ÇlƒW–žˆ.‡vÙ£ˆkõ”Ñ=ÊwÏ¿þª9u‡âä]§BCrÍ¡ŒEàvÕm‚’“*RõÁç7Õ4X7ý¯^@ÏùmI¡¬Í‰µ9Ã[í‰mòGCò+6ڦݓ׹³¼NU¼N÷hÁ®ºGPÊt]ßĤš›úºt‹É{¤‰HѰˆÂdX™BÔîÚÞj?É, \›|£rïÉã—jòÕmZÞŽÒŸšN3x”¥CgòÂ$ÛÆÝÚ°éq³¾Énµ×ä!uÕrjò{gñô¥Z|u§VÈ6ߦ¤m\‚ ëäZXY‡ëèV.žœŸä¥³wÔ–ƒ¶ÞÏàN{ žS¼ÆômBÁÞÙ»ÛE{_£=ÓW·Õ%Dµ=“éF{& eŒîÌšm­Ç*·š3«p[wæîÕ|¦——«´þÑü¤Õ~´k?¢þåWYýÖ›9.—ÀW·Ò°|qš`Q€,k¬œˆë.hT)©=ìG*v¶—€}ò‰€(°8tM.GöÎ{ð1ØØ¨c»•Ÿ_½|þâûæOÔýI(ïz™fœ_õ6Æf,.¯n É_M!u§=MÉaÑaK«b]Ïk3ˆ hÌgã|çÚ)ˆá­ö"¤?RMnßR¾®¬èáÑRŽõ½ w#Фåû!¡&2œ„GÀƱÐs„F _SØgÇ(Êqº ­À° Ǻ‘¨ÍÚ«yç,ïöÆ.£‡§bCyâœÁ„|mìQÛµ÷o³—Oˆ–V¶î¨ÙúÞyvØE[_77TO Ö.0¸›'úŒQ‡læªýðÊ56$4ƒlŽª¢O «ÛóIÎFHÄ­qqôÜÐáß_?û¡¥†Ô;á…_´ ú¶.“Ñ2C¡^ZÅ îÎzšÓNå%‰ *#t>z“¸8‘'íÌÐðV{¯õ˜:¹±Þb» ý®ÈW³‹óÓéâ†ÙÃG³¯¦K §)¨ ~LEO ’±Øeˆ6Í}˜-§A†“ùñRšV<²uiÊôhì— ˆEvC.Ø­0kÊbâò¯.î~õÃ@às–x;_,ÖXâmùÙeð^žUœÃ^ÁÞ9án°¡Ôb†-½ cÆ Ë³óÅì—ÙâhöÛùÅìRÎÞAhGCcbÓ„´Œ†^¯ÅüüèýÙÅüŸù}ÊØá¾Óæítq¹áqS–ɰDÞFµE.¯Þ\æÛÏžn|jmrU÷ý`Ž|ÀjXØéåEv,•à/xU=¸õ’‚Þ€^±A¯½ôz-2þ9?;mäpu¼Eùý€äd…¸à p­‘ÕÕ—Ù¢²O/­ÏÁXV€+‹%`Ë%x±ÜЮ¨…)ZíFëû¶Û;×’ŒÍ„o vZr{g“Û6Öñãc1¡Buë%:ã\‚B6¶œ4‰ÎàŒµ¥œ%â•'ymß=‰‚’W6úá­ö˜|þ¬q•‚÷­œµwO~-~M>TÀmð¡TËY+>TWÏrIÈ×µa Ú|(ͪ“3ØGŠXo=ªò¡„4Ä,°sd©ÍyÄìcÀŠ’—¢ &O-ʉªæÀ¶¢†™Š•¦HW^ŠØÆ.ƒ‘& ‘L I.ÚBœÃ;íËÄ$Z}TˆM{wïhQ•‘cz´È‘ë1¤!è-[Y«‰& 3ŒŒ®3#i"kGà²6’v¶hx§=ib4àeö©|T¦&Óµoð±-¾û}1ý}vñç?u¿äÿ½»˜~øóŸþ?h*Òݘdenemo-2.2.0/actions/nwc2denemo/PaxHeaders.19168/import_nwctext.scm0000644000000000000000000000013213135434036022024 xustar0030 mtime=1500919838.039981806 30 atime=1500919925.126648472 30 ctime=1500919913.013315139 denemo-2.2.0/actions/nwc2denemo/import_nwctext.scm0000644000175000017500000001360613135434036023703 0ustar00jjbenhamjjbenham00000000000000;; NWC to Denemo ;; A Lexer / Parser to import NWC files into Denemo ;; By Nils Gey, July / August 2010 ;; Usage of SILex and LALR-scm ;;;;;;;;;;;;;;;;;;;;;;;; ;(hashq-set! nwc:Nwc2LyTable '0 "b'") ;;TOC ;; Libs ;; init input port ;; load and init lexer ;; lalr-parser definition ;; execute the parser ;; cleaning up (input port...) ;;;;; ;; Libs (load "/home/nils/git-denemo/actions/mxml2ly2denemo/lalr.scm") (load "/home/nils/git-denemo/actions/mxml2ly2denemo/silex.scm") ;; Input Port (set-current-input-port (open-input-file "/home/nils/sampleonestaff.nwctxt")) ;; Import Functions (define nwc:cur_pos_offset 0) (define (nwc:ChangeClef clef) ; clef is a string (define (PutDenemoClef clef) (if (d-MoveCursorLeft) (begin (d-MoveCursorRight) (d-InsertClef clef)) (d-InitialClef clef))) (cond ((string-ci=? clef "Treble") (begin (set! nwc:cur_pos_offset 0) (PutDenemoClef "Treble"))) ((string-ci=? clef "TrebleDown") (begin (set! nwc:cur_pos_offset -7) (PutDenemoClef "Treble"))) ((string-ci=? clef "TrebleUp") (begin (set! nwc:cur_pos_offset 7) (PutDenemoClef "Treble Octava bassa"))) ((string-ci=? clef "Bass") (begin (set! nwc:cur_pos_offset -12) (PutDenemoClef "Bass"))) ((string-ci=? clef "BassDown") (begin (set! nwc:cur_pos_offset -19) (PutDenemoClef "Bass"))) ((string-ci=? clef "BassUp") (begin (set! nwc:cur_pos_offset -5) (PutDenemoClef "Bass Octava bassa"))) ((string-ci=? clef "Percussion") (begin (set! nwc:cur_pos_offset -12) (PutDenemoClef "Bass"))) ((string-ci=? clef "PercussionDown") (begin (set! nwc:cur_pos_offset -19) (PutDenemoClef "Bass Octava bassa"))) ((string-ci=? clef "PercussionUp") (begin (set! nwc:cur_pos_offset -5) (PutDenemoClef "Bass"))) ((string-ci=? clef "Tenor") (begin (set! nwc:cur_pos_offset -8) (PutDenemoClef "Tenor"))) ((string-ci=? clef "TenorDown") (begin (set! nwc:cur_pos_offset -15) (PutDenemoClef "Tenor"))) ((string-ci=? clef "TenorUp") (begin (set! nwc:cur_pos_offset -1) (PutDenemoClef "Tenor"))) ((string-ci=? clef "Alto") (begin (set! nwc:cur_pos_offset -6) (PutDenemoClef "Alto"))) ((string-ci=? clef "AltoDown") (begin (set! nwc:cur_pos_offset -13) (PutDenemoClef "Alto"))) ((string-ci=? clef "AltoUp") (begin (set! nwc:cur_pos_offset 1) (PutDenemoClef "Alto"))) (else (display "NWC Import Error: Clef unknown")) ) ) (define (nwc:PutNote listy) ;position is a string (define duration (list-ref listy 0)) (define dots (list-ref listy 1)) (define position (list-ref listy 2)) (cond ((string=? duration "Whole") (d-Insert0)) ((string=? duration "Half") (d-Insert1)) ((string=? duration "4th") (d-Insert2)) ((string=? duration "8th") (d-Insert3)) ((string=? duration "16th") (d-Insert4)) ((string=? duration "32nd") (d-Insert5)) ((string=? duration "64nd") (d-Insert6)) ((string=? duration "128nd") (d-Insert7)) ((string=? duration "256nd") (d-Insert8)) (else (display "NWC Import Error: Duration unknown")) ) (if (> dots 0) (d-AddDot)) (if (= dots 2) (d-AddDot)) ;(+ nwc:cur_pos_offset (string->number position)) ) ;; Lexer (define (mtoken symbol value) (make-lexical-token symbol (make-source-location (current-input-port) (lexer-get-line) (lexer-get-column) (lexer-get-offset) -1) value) ) (lex "/home/nils/git-denemo/actions/mxml2ly2denemo/nwctext.l" "/home/nils/git-denemo/actions/mxml2ly2denemo/nwctext.l.scm" 'counters 'all) ; Oh no!! The generated scm file has comments in the language of the devil! (load "/home/nils/git-denemo/actions/mxml2ly2denemo/nwctext.l.scm") (lexer-init 'port (current-input-port)) ;; Parser Definition ;Helper to print out a value with a custom description, for console output (define (display-combo string value) (display string) (display ": ") (display value) (newline) ) (define nwctext-parser (lalr-parser ;; --- token definitions (ALT DBLQUOTE INTEGER STRING LETTER NEXTISNOTE DURATION POSITION WHITESPACE TITLE NUMBER DURATIONVALUE ERROR DOUBLEDOTTED DOTTED BAR-DOUBLE CLEFVALUE CLEF CLEF8UP CLEF8DOWN STAFF STAFFNAME STAFFLABEL) (commands (commands command) : #t (command) : #t) (command (INTEGER) : (display-combo "Int" $1) (LETTER) : (display-combo "letter" $1) (note) : (nwc:PutNote $1) (TITLE) : (display-combo "title" $1) (ERROR) : (display-combo "errorr" $1) (BAR-DOUBLE) : (display-combo "dblbar" $1) (clef) : (nwc:ChangeClef $1) (staff) : (display-combo "staff" $1) (WHITESPACE) : #f ) (note (NEXTISNOTE duration position) : (list $2 0 $3) (NEXTISNOTE duration dots position) : (list $2 $3 $4) ) (position (POSITION NUMBER) : $2 (POSITION ALT NUMBER) : (string-append $2 $3) ) (duration (DURATION DURATIONVALUE) : $2 ) (dots (DOTTED) : 1 (DOUBLEDOTTED) : 2 ) (clef (CLEF CLEFVALUE) : $2 (CLEF CLEFVALUE CLEF8UP) : (string-append $2 "Up") (CLEF CLEFVALUE CLEF8DOWN) : (string-append $2 "Down") ) (staff (STAFF STAFFNAME STRING ) : $3 (STAFF STAFFNAME STRING STAFFLABEL STRING) : (string-append $3 " " $5) ) ) ) ; Just to get this out of my way... I don't wanted to make errors anyway! (real function later) (define (displayerror arg1 arg2) (display arg1) (display arg2)(newline) ) (system "clear") (d-New) (nwctext-parser lexer displayerror) ;; Close input port (close (current-input-port)) denemo-2.2.0/actions/nwc2denemo/PaxHeaders.19168/silex.pdf0000644000000000000000000000013213135434036020051 xustar0030 mtime=1500919838.043315139 30 atime=1500919925.136648472 30 ctime=1500919913.013315139 denemo-2.2.0/actions/nwc2denemo/silex.pdf0000644000175000017500000064601713135434036021740 0ustar00jjbenhamjjbenham00000000000000%PDF-1.4 %Çì¢ 5 0 obj <> stream xœ•QËNÃ0ä¼W~`Î!Ž7~Ä>RZAH´Äq(!- ÒÒ‚¿ÇNÒTq@–½‡Ï.QpBNWË’Q†³5¼ðwK €])kìD2 ¥XL¡ @mˆ;ƒE lœ_WŸQñ ƒ†°D%Ó–"V‚[´ÎqkQkK\Ø ÜË!Éop³ÚVÜ!AržÞí¹/yO`ãðoGúØ‘4)W¨Uxƒ§³à‡È ‹€)žàžËH A\²çª®¢‡â ¤ãDNïyýþæ[ó(uÎrkØf²yYÌhfyFεP¶˜6^n/ÀºbÒ–“AßtF¤-sÅ ©1¬Ü oEø<~IWË5]¬ÃÍA`´ I>ö±'«Vë™Ì~`˜ƒÉH©}x±"6¢(㦳9™Ï#ÈŒf_ &ßì„úÛÇ]„§‘‘á?k“<Ú}*ü*ºÝ“ÐÿÜý¾Eo˜ôendstream endobj 6 0 obj 361 endobj 52 0 obj <> stream xœVMoã6½½õè(6W$%QDNNšÍºÈ&©­`8=(6«°¥¬$oºÿ¾üÖÈqÑÂÓäpæ½7oø=ˆ"õ±ÿׇѧ ^ÛQÜÈ¿×Ñ÷Öûo}.s¹ 'ê òíÈâ€G!1biF«ðª~Î9¢,üÙ”¯;õ-Civã?óßGIŒåY0M8Kå±Í(\ó¿dü$óñ§4ìxn̘BŒ̹LCm Q„Õ’ X] WWáoEUù~êh‚¢8"~ÇñÅoøuSÑP ½wŠIŠHàEY„õMù®lõM1ŠÕš¹ß¬á¥ýZ·z1C4u†¿4m§ä–ĦìʺR«4µkõV%B;—ó[ñ·>%¯uõlêñT!Wx¸>DeøÈ²°+Ô-¦0–!Öƒ7×aŒâÿ¥õDzϦ· Œuˆ( EÓª5ü©Ë5Ä(Ò§"}Q'…ë‘Z𯒙„`E2‘ ÞóÖÔ¯MqP?ÄJ˜>IK‘ûºm„Nš`ÄÓ^m½íÆ®ôw/¢:ÿf»’šr5ÖGý» ]•¹Ã~o$×m×”/ÇN_ž(L{9ÀZQm>ÕZý” ¤}mÊ­7ƒ´ñ\ÅÇj#L$ säÉTÜŠh­Å<Ñú§½þA(óÉ€´{s÷¨kÏàe7¢M±×ì`„{vŽ/ûR•ݯߖkQµ:<ÍÀ:©ÏúMEhwb£ƒsÄ*|91œxö¹{ |gX¥ͪõ-»ayF$™‰ÑH‚°/Ù‡‹¹ÔHµÑ]h´”bˆ—(e*…=F©†¸VÒýLJ­Ä +ÖÕI®/&'½ý§oUÀŸybi‰ÝùÆB ²|‹Îvm }Ð8ÈÀ õ›*ûylyÄ ãŠS‡&ÖÞ[öEgP9±öSw±ŽMYÙ¿:6;ïDî­Ü-ô-«¥•$ƒ«,Æñ9ã÷¶¼“ƒqê6e¦PÿÝÎàJ¨‡ß¶ï`¦¼—{Ý<£¸·7ÇÀc+¶ÇýĶ–[•åœtý·yþåþ1·¶R›Ý=é+âIÿ·1W¬±,œ-¦{y§ÎN¶ábv—?]h„ÿ.•^›ûãhЧ݈\²C–c?¼íKÃÍÀ"Vÿn¤ÎºyÕœ7‚‹S¨pß5p–}½^ø†¿ú"ë3yv9¿çOx¬²=í ­Ïóüîz¹ÔGàý¢L‚Z“¸_84%ºjÞ98gv:0Ð<*ýÜš-”ͨ¢òùÕãíÌDa)¼þáqñp¿¼F–ã¾Ã¥p.´õWô¶\Úú@¯[DmÝ)~k1KaˆCÝ«¿ÞƒÃèŠrßš§e ÝôŒ3ƒÌ“A†ÃÉ Î·R{£ üQvjáEÄh-ÍmjÄZ”?œŠ¤ö´Œdåêz;ŸTl¦gŸ½6Ïcèuƒw”•†ÍâH`ð¹ëH`ÐÚ ”ûù p~B˜·…b_W¯64 ]u¬u'=Ë«lª~¯5Ö ÃL&[XB¹µžÄSÕÝÄ®óÞ”æ$•5YÛ®:û‚¡ÇîpŠÃž>7ÅÓÿšâ)˜â7ÅA~ój&v\SI¸Îp²7!-ÌÜJ݉‡}±6õsˆùôƒ¬Âåñ,R”F“œ]Öm§2×äðD· xÝ}Ù71 ?"ã)¦›Xãpýú¸œé¼ÎGÈÏ?Qipendstream endobj 53 0 obj 1314 endobj 92 0 obj <> stream xœ•XÛnÜ6}ßä#}’XÑ…ºµOmÚ) MüæôAÑÒ^5ºl$®/ß!9$‡¦0 ´HgÎ9sȯû$N÷‰üÁ¿Ý¸{ý¡Úß®»dÿ;üÞî¾îRõÁÿtãþ—+ø(-ä¤lu³ÓS/Ó}“ì«<wÑ›c{|¹¸úgDz˜Õ‰üîê°‹ÒåXšÇyÚ4zì:zw‘'I—MÄ—»žß_ü}õÇ.¯’¸6Óä¬×šÒn|ɲ2.÷¬oìiót]¦Ö-èº~üyÌX’í³:Nd”r©ïþär¹<%ËEýª¶Hã̧•C°i™¤% ü¡ïÚA͇|”°8~;µÃãŠIÉc3|Ë'¾´bÖãu\ç9õÚýЪäeœºPÄŒY,](âÈ1‰ăd© ÑrÀAóÛ¿cvè´Ì·K;®¯äx‘Ò~> õqB3q£pÉÒ@îSyBU…ÝEÖ4u\¥Ñ‘e©öÑÛ°¸°Û\GïÆÓÿšä‡œ:­èçI}Zy©ŸoÔÍ›Œ0V‡ÌrÈ2ƒC–qR5ÕÔ@^ÜBÇVæ6™½ŽÆÈ«èQí èk\u±ì½è¹š[0šýû^u­ž¾‚Ù¯Þ¨¡„įh3¿œœì;bÎÂ1ú|áSÇqù"f6ׯ—Àp@a4ëúg9$ÐföJÀ“Ç@$‡õqºÀ‰¢}вPØÈm‘Ë 2³ûzº¸T±7uÄ»þeçŠ^fqåæ¾t³ŒòÞà­¢p§Q¸¬F˜»a^U@R­*,íÀ±È@ÂóÐ¥ UŸ+7UR:F8’ßë ºb7Ÿ—•«ºåeš°e)[²,V#ÛNæpÅ9´Ö£eáyºÖÁïuôYaA«½ú?D“9,ÜðPT®\Óœõæ,!‹…Hä$|ÙªÝ4Ào–6A¼‰uš||.¬4s Ø€‘¨ÈÂoÏFÀi–"þpZøºšÕ™P£çU º»¤¶$±ˆ¯©ì¬­TZO²ïÏÓÊ×Q?‚€ Í‹ ò¤ X˜(,˱W‘ 1èÄÃÂÂàÚ-Ö§¦'C*d¼¡#yÈDJ®%>ƒVn; 4E© ÚÃBsè@À…ϼæʧÑS"y¦Ÿ¯º'äµÒ<%´'~ÚNÇÃhÆäÞ#ªEíQÆœ\koʼ¶Ã0[u¾ï§[˜”hÛ³ÙKi×°GR‘•–¶F9YP´_´mKj,,á¤_° Í÷ ÍCm¿Y楯ö2±íjÕ˜ž‚ôKЯŽcdé ¿jÈÚ.¢O]ÄyA„‚ZѰptí„>'%ÇÞÊ ¤Pi¸¢_Zà¥áÜžÒ·}æ”T7#ÑZ£a¸!ñœ\<3(Êçái±ñ Þ4¤²…0¶Ì«–ô`¨e¼1GFQçÉ4 É:'MØ9©Û%[Ìéˆæù®¹ R¬ð\¬Ód’OÀ)\Ô.Zw a8`³¡e>ø2,Æ÷G>¹=ZA `^Œ½­ÙÿNL4ôöœÞyºy8ÆmgÛ ’Î<^Î/ÀúƨÓõÆYÖÔç<Ñ…$ÔZ© 8Šœ’ ×]š YŠÆ{0®‚‚Þðã;ð´ˆW”ô!Ek$}ýYÅ"ý—î¶F¦ ßœ{sž”ÈÅØ¼H•¾ù$uÉä»M­Þ\Ìs Ÿ)Oÿyà?i"TôæÝ‹Í]zßL@·nùº½AÁNu}:œþl’_ú9 =æö½ïÌ¥©H< ÛwlA/òy˜3èô}Á;,¡½ÿio2Oq½[ò¼¯(h[ÐÆ˜’BŽSœáHÉ›¤*Y,ç¶Ÿy.± ôm?W¢Äâ•Qr r `r­¶Â†AãÛ©öÁ^Šð},Ød­U®»~^¶/oN¥²Þ†š ó´k€kHì&F=ùnOý Ý\ψø óCŒŸyMHÉbçjsÀ·LÐ ƒ  )½iW¸| ôM„¾ÿaz·6Ü]C~‡ÒFšPKÍùCƒKÓ©£èõôÎ}¯R—@V<öãEkéãÿvµû ~þq™åendstream endobj 93 0 obj 1880 endobj 110 0 obj <> stream xœZ[oܺ~7ò#öå rëUt¡n=Oi›)ÚMüRø Š–^«Ù•öHÚØnÑÿÞá}FäÚI†e‰¿ùæ›!Ù$qºIÄ?ý³;^½ýXmöóU²ùüß_ýr•Ê6úGwÜüî^J ñQ¶¹½¿RŸnÓM“lª<xz¼Š²ëÛ]±„ÅE¾Ý]EŸ>ü…?‰§o?6¥ý|«ßaM\Ë×ä‡içiÓ¨/ï¢OÏÃ5K’$.‹hiŸ®¾ýóUÉ`ª$׃÷â³,›¢©õ³å‹‡`SišO×[3ïú7]»ôã ÇKÓ$fúË7® EëÜfi3¶É³8Éeë;ik³:IñYÓ4qS¯§(³¸¶ošIÒ:Îrkóý8ɇ•µ¥¿ƒsàóèÀŸú®=ÈÅ1䨨ÚÃóÌå,‹2ÉŒYØfÕqY‚ ûa–ÁKŒ¹—–ëôÚ˜¤ŽäÆä)v_Є~8•'lîc8h:HÑ­ŠÑºŒ¾Ú¹4 ¼€µgîªKg?Öæ9Ú5Ü—"FsDO ;é‚§í,éÒ ¨ÐVÝEí<.¥u½$!aEÏ9—¡º‹xÛ&T¶ ˆx›%Q¹M“ܲâ“$#¿ÿýx<òA¹¬h¢Eå­‚!ïF];èýi+ni´A•ÌAv€Diø4EЇ+BÎ.œÖ8ÚŽkÎFN|àŠ¸<ê€.kÀ âÎùdip`[úsî?Ækéý¬2É€ ÷ ¯ñšwÖC )0÷;0vgómFb¶}ƱËÈRxˆ%úeæ‡{¹«À»eˆk03Îσ‰‘wÀ:è3%ïŒë¨Ähí^¤ÃêÚâ…@U{äÍ ½›Û£Ùhô¹u¢Ë~ÐÙŠâ–y¬$WýwkrJE 49åñ~Yql¶Â9‹øÞ;šB‚Äg”%Cé{æÇ¾£\MA”Ê?}¹`âGB axjâüW*&h¢ mñ§…»YUØþóIº£Œ/±$Ú>› Ì BNðúKÜf%^½Ó5ßà*‹¯•†·eÈ×k&pQÕݽ d(K ½d)DP‘ã—k[L¨"­òp—Î=¶:òÊùèÐûs»ç eE†h”…ö,ªg›²Æ³!D4Þü0ž;­\JT -í—u²Ëñ‡–ºTz ãâ‡â²kì*À*Ì[ã90˜ÎRAwl´.ý¤Ì²«ñ lø…ðþ "3©`(2ŸíÞ9·a©0™ÌP@)Ü*Dî$!a§w—|N8@"{臽qÊeÉ,°uR®RÔ()ûÁp‰ÁÙåØ +T½#¡é'3Zw‘p€ê!£ß(Êg¸ÑøSÇO‹QTo'ß%9˜ä”ñT&¤ðªºÔ1ò †­J;>wS¯(^xJ§}(3”ö…¯bSX;d¾Ó¾Âeä±Õú´¦²¹=žT?‚e¤¶¼…þ0µì¬rØÛ( lӒɪ <«„%TZzвj*=Å_Mñ_¸> ­ü+Ò âÛàÛºÌÈGÛ½1å& Gs F&‘:íZ‚‰–Ž¥±UK‡Œ¦¥c³Ðž ÃAøo®<£l¨‘Yè_ãdJ>D×®¥Â0&cU½—áõ½Ó:BšîÊûDA×%㼘̌€óYu0Bª õmRWÍøŸÒ¸Ë±Z0q§ÒXIËWÜ.i/~¶<¯Û% X"tÓ•^µ§‘>,Ú¸ÚƒˆQ€aM4~™M‚‡šœÉðQái·eá“¢‡ÌˆÉ-$ZÃÔÉ\¨­w’yí•”H{ÈC‹šÊ äÄÑO“z‡V^–óäVzY %{¦ª h§¹ƒ½R0ŒsÃÓ%aNl‹‹„ gg„<_¡%x ÛÞÉ•îñ’¦Óú¥Òúj [ßѬ•¥ãA—i¨DÂ¥4û…SÐ8×îC\rèšuŠðð°.*KP*›ûý Ø1šZÄ^‚Úȼ®Í ¢±,W™æÆ¯& Ãös·óè_¬ž%†,c”ª&z~óJ] G/Äqì `FíÊW‡øC¿ïý< ^h\õbœ·w‡AtêëtOJÉ`’á=$ÑÄP(ͲÖËKL qº¿”a†ƒRCçb¬|_îŽã÷pÇXˆdöÖEÑ®ˆ:%ÅÈ?*Q“át°Ö¨Ï "ï‘JÿÖ?Šæ ´D•OáÊÊ`íòBµa9%Ê‹XKƒ€]+<ä6q.<îÇó¬ë/´á¶¯Rx!C±L´€¿öÓsIZSÆÜZ_µDU©¾Í!Jйžë¥“íw…ù…Se€ŠÙÅ ônœ ÔI½¢îag”Læ„´=zK}>! ¥ÏâüjØ+ð±pà$2LøÀ ·è ê—W<#üHšüau˜ÆGÛtØ=[A§ô^š+ù‚›BïõBó³HÞúÞ”ˆ¢çe(WŒË¾ÿ›v32Èß@ó¨™‘é ‘îG³W°Ùåk= Q1‹NT¨gA$FÀꎀW˜\ì,d¸côÿ…it“½p7: 5ä!^Â}{{ÿ"T8å/Ãáåö Q–ÿhÒyßvö€L—ÃZª/x.ŸV·~ž¯å¢ƒ‹Bjð•xyj<‰€ô~Ö„‹µ7í¨Ù-4½t%€½«ä¼Ï·7%ˆl­j LÝ|ç…¼pºV[J³U“€:î]¬ ò ^UkºQWtþ™K½D]#,OÑͤ)pŒêŒƒªLi™jšÜÓQ‹æÒFL¨í™.Ü'?´lƒËù— ÞÅŽmÚÅìÖ“íDgÿ`EÊ ?ÅÎ'õ4+H?À¢]i˜ü‹-áÝ|™ÚÃú|@4ŒÔ0ï¢ÛëŠÔVÀNˆÝvý¼@Ö=÷³Ì»”Êx Xãú< îµËRT+ùdw<õ8IN×ÏïζÑusˆŸ„B–æG§$üÚ›dñh^LÆ( +}S++ø£/2‘Þø…½Ó µ6F†kOr_Ý¥w¬Â2ä>Ó‘ !6-)pÂáÌ_i+/£çy1]Z°Õñ‰se…·Xu i‰ëDî:`îûa0]Œ" ”99ñ Œ‡Ž§ÉÝ{ Ž½Ýè|îC“މ—“þÂb.'Âîâ{ S¿°¿èŒ‹¦½_Ô%TZglj¥!4?˜KL¶1H]Ò>5JŽºót@ýÂ!—=)-UUŽ8Ê€p×G`êkVªRñ !<†=qØf¢*Îj­_ ½Ýˆ7›Ó´­®·[9›ã¥ÀÍ·:;¤iŒÈéU):÷Ç“’@Àõˆáºö´œ'- ý;„Ëþdptinñ¸çãQ¿íT8™ÓÞæ> Æ6P‹“!¥…Å ¢å®@nßñûö|XV²õ{à1ŸO§C¯Í}{õwø÷?_ËYendstream endobj 111 0 obj 3360 endobj 184 0 obj <> stream xœÍ[kÛÆígÕ?B ”ÛZ\’CÉh»I³‚ÖöA+;(—š]1–H™¤¼ë¦ýï÷Üጩ´(ÒM(r8sçžûà‡yÆóˆýOþ­·³ë×ùüa˜Eó?Ñff1¿a.ÿÔÛù‹[zSœ±‡’ùíýL<ºˆçe4Ï Kzu; ^®«ÝHú«Ûgi¦EÄî»]Í‚äKv-F!ŠËR\[o>µW(ŠâcõtõîöÏ3„C,éîù#Ö2ãšð‹EX ²Pë »«]' £" u󬮯¦kùz8 c%òñgþx’Fa®®!våúušê³-Ò„í"-ÃBì=ä÷$EˆÍN^“‡ý¦â'Åt5}ª€<íz2 tƒXHm‘Ñ…ÙÆFì/ßþ÷WyY–aI7Ï÷l.xÖ#}fú$Ë`E†ºoîøÁ™Å£TèôpÉiÕØm›š]GYX˜õæ@(§’Ô?€…ü¸q¨^p»&ísþD d³ ¯’²¤âÂêD,HõµîØ e˜äôVvC’‡10 ñ;Ý6V¿'Pöc')5ǺÛ7›—S–FãÛ®ç2X¤Q"ÏéS|+ìǺÛî6äIZ+Ðá9²`?Ru Þ÷Ý–ï€ÊU^ö±P-±k‰&µ*¨Öoš¶Úl>1‹àò{.¼¢<¥Öe°­ú÷Ê›H?s ªÊË\i¾WÏ%๦պûN:RZ«}MV!_fâ4ŒÒ¹R£T½´Ê,vßm6ÚÅcÓ>ˆmda™iMÕTxc¿¯G!Â@‚w‹–60T.ÐÆ—Ò×Pbœ-‰˜ÇΕœø»ù+s1éWTàý'nÔ@2s”Zc]õUÍ@ÅrçiE‡«äÝŒÒ@é4ƒ„3p²Š_Š ÃÃR)øLŸAËוÀˆˆ‡™ÄXkGZiÔm[J"`œGÎÄKÅ•êbÂ%•3B"Î?dsºzB|º •Ô†ëªm»QÂWö|'M— tRð;s8yÐÈ[‡dnü‡Ü*ÙÚßB¬¬é× K~œ3–{ûö²ëýtærøôR_\vgËË.÷¯Ë.÷‡ËÉí·—ÝÙo.lpÁ…×»ºœä~¸ìÖ~uÙå~wj9Î1P‡ Z5æu½‡õV­fGŸ¹¡ eùqÝŒªJˆ_îªIèîp'¨åØ"§È‚˜÷½&JRû•s>¶)”|Å\G;ßbƒ`´Á ÚPþDè¼³ Ÿ: Õ«¶ðý0 ÂÞ¬$Y P‡¤‚í1Ò;øx•²5ó"¨6ÍJ-ˆ’xè;"»¼!Œ†ÉƒwžmH+A(1†'5¨…ƪ[¡IWàòbŸ¶ÙàÞ’’…¤Ý^ˆ©ÔdƒÆŽP>âðØ­ŒOªhTÓCì–‰,I±Í¶2j›DBg‰ÑY°jšQº †I›°éš'Í)ñ0¶ê^ä£Ð+ éY“ªŽ(e–:Ö®îêw®z4X ¬Ì ʤJWÌVK‹ùŒ”¸:+Q~Îd¹»sÂAÎÉŽª³™Sžõ ·ú0yE(O‰ˆ›!!Ud†Ä«Ñ$9Ñ>ï–,úôUû@d.<ÚÀ§ÑÚRœA>IpˆLAè±oIFô]ŸW™ ;»ßâlD$+Yâ4KXÎùÜ"‹]S&`u(¼ï¥§êH9d>~¸k¢É‡vyÞ‚ìôI—_-þ^-þéút Y°8p¦êʇÜ:†("ÝÚÎØ7dT¥î®ÿV¦€vÖå­Xˆ%™·iìÕ­p ýЦ÷+!lj_–{•Â"+,h¶ÏjãÍþÛK«NaSvK„ðAÃT!0ë7Q& Œ®Z°ø ¥Ö®aU¾WåhÓ³Šþ…*ú³& »µÀPf¦ŽMÒ 0¸+ÓŒâ³ÃjŽ%©9µ   ²Å‚®j6`ñY ßµnª‚`AÊÇò#Mu`ªâ ÅüÏ¥Á_¢¼+·š)Ú*H½iFÜr»qÃ2©F;½è¿@8cò>WxµžtXhRôäþ鉮c—E0ªjX~> stream xœÍ[koÜÆý.øG,‚~X5^–äð  šÂ Üpë¨(©hŠ’˜pÉ5ɬ>þ{‡œ×¹œ¡ve EaN¸Ãá̽çž{îÉÇïú#ÿ.÷¿yŸnî‡ óÿçþâãE0ØÈ¿ÊýæÛ+>(ˆ§—ÂÍÕÝ…xulr“2æåüéþb]^ýxù‘‡üç«Û‹í÷oÿT}šžò×Y¨ßßÉAQîeó¸^މ"=&ö‚Ä9Ñ¿íIb/…ÃüíÄK2?þÚÖ]+ß3k3/ò\Žñ¦ßÓé-?“®êy²0òÔä}ulŠy‘,ñ2–«±Õ§C_ ƒüNzrã×Û}1–—ažg^’lªáòïW¸ˆ”]ŠixF6ÐTŸª}5"ö2³‹únz–{)_´z}|˜™™d>³,vø`\^6-ïV,‘1ô€§ùgjþ ÂUö–w,õ=? 6ãñÓ°nÇŸ0íýdå;±Fz3ƒõhž+D.À–ûÂLÜ\“ÅGûË]êûæ[á›8Õîþ]×–ÅXµÅèP²ÀNŸì¤dJ" ³€’Ÿ ‘ ˜‘‘S+‹yYÁ‹Ú#;æûÜlù¶š×à ˆzìë‘›gzkÇ/"N.éd³MXØ¥\Ú9ÉñçnÞV"È×ì‘x jaSî<ôÙÙ¨ ô`ºiìííìõV!—:? Ï_pvjÁkáHü9aq''4LNóò7^F|oß&çÍLÏE4*èbs&g û·32‚i)ÛrÆpRXÀó6רÂÖ÷âÕ° øUÈ…°¨z”Dk1¯a;jyÕþ0NËãs¥Ò³,ô’ȱ±ã¼p‚NåÊ-¨W–¯ÉàU>§A°ÌcÉf¦¡³õå @]oÿ,¬ÅÒm7Ôcý³øÏ<“TÅ=¹5Ýpì+kåÜÄÙa<™.Y­ÇtVF‰0QSÂ] T£›œ»±…zÒøEùÁôÔþyÑ4”ò4ƒ®JWÌ@|å2¡'eHJëf€ú×eÛ„“dÐA†0 -0^t]ös )¦:Ç ,WÐôðÃe&±Ôõ0üöðЛ[ùž&ÇB‰†Ÿ/»Z"”XŽCÝÞË­ƒÅx¶»Wµ0Ÿ&!|êJYl‘²»èÙÞhÑN• ¯õ[Ùi€§sùÚ²?¥Ú²8²áÁóÖOŽZäU[ªd@‡ÇŽ‹w™Âc¬1îºÞvk@ŽW\MÑ 0ë(yQt¨+á2FTX[ŠõEøT.‚ îˆ0€³K—˜ô¶h %ä %”yv¨C$ŽÅ‡FD­“¥ôÀekRTòÐ)š§Ad¼Eå»/¥/Ùîõöã±ÖÛú©‘½@nÔIà;”DÙí¸àWý“²C6ã÷„e£Ì†ø—©´œ ;£ æ"œ³íFeÌ ¤[Yö¹DixjÕÆÇâ“Ø8/µôÆM=Jeð P­¸d)«iê¾íÀ|ƒr¤4¾ ™¼AÔóìwÓ×åhk˜Çz|°Mèþ–´µ-æÏ÷ҜѼ/JÑ*àÅRÝñ:Ÿ’ÃPƒí‚xÒ»¦~¾ÙžªäNV“7—öäK¹‚¯LÿÇì8 p 2R¹Y'k$½-ªßZ[ÖÕö¤<{»=¨ú+sXh÷b°í@ÏËÎêwdÒ·£¤›ÅYÖ¸<ƒ .¥6‚Y6©P–t&3jjìûúV÷Íc»Ä$Àã¶.«ÛJr5÷VøBèò50UòÜÓ‚—wAÊË:PEΤÕùáX7·2kG!aÇĪڇÎSÑ«E›z¥!‰%+ß6¼û[Aí®vYÝ–¼öQ"#,#Înç4f—»¦aGmð&·¯í Òùòs&Xv£W…ªŽóab”­jbhÇÄ>é ŸåÇëíƒI¥îT²{–>ux§‚…[vÁtÑc3Õ²Ó*#}µ/êVû¡rsÉè‹é÷$#ÙÈtµæœjüQÁ7Žª ÌÜõ7ž±MS9z\‡Òû ýOŠ”„¥UuŠéXUÕ€Knž'C øø×ç¡1:´c¬v•[äÁaĽ€02§¥LŸ–2» .ë: Ž£dzX]_qÉÕ«ÑØ¼‡–U‚A=UÂ3v…¼0ÂH°®u³ÅòQ¨ƒ ˆ0åZnT‡%„š4ÁÚœ ®ÛÃqô¤°†õj¯Ù[­”9ä¼ÈÑ¥ÚEÜ\ü#¤£¤“‘ê.®4¾Ç‚Ÿ4a–y\ók¼|<c‰hQ…ùšÒš‹J”t2NÝãÐöù¢™I¯qàÒgˆ!ELZ± ŒüŹ#‰=Oê7–&¼2éñgÉ·zvþyů“üómu_·nÆ3]ltˇ¾£š"lêÖ>¬ RTfò°2†i¯x o³YDºÆùÄ…ºdY,¤$ ,ì£k^HwÝQvÏ|ŒXñ™Õ³ÄÜs2¼²½Ìœ‘eyt‡ÒvÉj¦×þ!w—´¼c^<öZrA@ªï·Õ2GO;àum&ÿ] €¿›JÝwÊ›ilœ:˜ (#Tµl pœæqNËÜIYÈ&º•´ÝW…Â9­VîÛ=ISàu5­7R+KCB}hŠRwF,˜@! wÅU?Qé0‹–>tŠòôE”,é h@·f(|õa<-²„iŒ03vÉåLŒ’™…¹.Qå8šø`—CÑËx&wT”mlÍA&(Ñú²¬_•…V® )¿_5B9ÒŒóV&ø!×—Å ïYà-mÇ!̦ÓxÞë,fÆù¼åV[¼,Sé­Ì5Ï_oM{­è .NVÒR0oî*¤SÝ>MùÕWoÞýþë¯Y$…3¬í WÒfw±7«H\&…Ìu…;&rŒ‰÷”`ͦïõ;-@ñ]Û<Ù {|H¸öZçÐY¸I0€)\‰ä…|þ¼Qeÿ/Ne™¦Qu’€m»­œžªR .‡Ð×xmÔE2ra_Ó¹Þ8H¡ Ô{(¦Š©÷aè]<ñÛ¶øfT,í §cxzÄC!OÝO\ÒdBÚ\䉑8ÔÝ&,¤m‹“ ûLäb‘dЉMºoÜЕqaÙÐ%ÂA_é/Lö©KE?\Ë„–ï\LM¤m„0ç›÷ïß½_ccç7}ßÙú?Ô÷.˜;ZÀ!ëb]Å”Æ:r±Ô_㸃 TKÐBJêQ¡€¶ ßUµ v¸ÙUKŠeˆj²¨ ÉÁ‡ìD’Ö–A\â@œ©OatFùȲ¼#àŸ,u¡pZ-Ìu{PDaOS4iÉÅmA˜áÔ¡É6 ÊÓ{‡kü'ì"ŠR¹ ¸yp)ùiHVáh•ÈÄXoŸmW¦Dw¶Oë¶lŽ·ª¦1T'‡&‰áΘÅÌ´7.róÊ¢›"› jƒ3mÇäTÔ}‰Ý•xòMØ4 <ôÝ(š/SšÈÌÇ-U¸ o7ø… ñŸ†¦TCG§ÇeN¢ûO5T¬¯n‡±çÑ<£áÍÕÅ_øŸÿ¥Â?‰endstream endobj 235 0 obj 3365 endobj 254 0 obj <> stream xœ½XmsÓFþîáGxh™È¤>¤Ó;00@ÓB§mȧZ¡•ås,%#+$iÈïÞ«V–€¸O&Öùön_žÝ}VÇ6qÆ6ÿ¨ÿÙzôà8ŸmGöøWø;}9bÃXýËÖãç'°Éñ¹Ÿ,GRtêŒc{º.‰au=²^¬ÒMÃêÉÉû‘G‰Ù|ßÉbdч|Íq‰ëı\›Yo¯Ê‰kÛq­&½œœžü6r(‘j)D:Ç4+&#¹q¤ÏÙn&S8Ç&vd±,¿“¥M^•â¼€'°©¿SqêÙ$Ôk>_ypìyƶ©G¹^L"©;ñ„TD‚V“g¥X ˆo ²ØeºÞÈ+°Ô×jS"¼–8DÇpÝ5$vHÜÞ¤ é„dJ혀ô˜ºÄæÞá_²ZšìÏxÌÊ·âr›ø­oRaã‘°]CA8Ýö§ÕIªÃ5žZzûêwvÉ—]pø®_˜C¢ÖH"tw°u"!@)›h(8!޶±² \1—5y–Å•¼ÙUrYU×,k„ތ˺Zó…©gsX@Üh1vek6ÚÌÒV±Uå儯1,´q= m RÆð°>å삨c ö_VíÉ ~" °Ø'³ÈêŸÄñž‘X§êjZÒrˆN`l_¯+Ï#žÉ·Mú¡=~+ô d’ÁO­S36žw¯*sÙEIäuàÁVNÇÓÅæëxFt*žFhY‰8QK§2R<‹aÍÄê|Ë–ç…r òkUJœA6á*@EjÓ±ãK%øÖGJÏ(/•êÖ¥hŒ©’Då ˆ È“ÇÆ†àiä±ùy£2 ¦¶í6W‡¸¶m™«$šR2T¤‰}U6iÝä©pIa·®˜XœêU]…D &4LKµ%íZwST½ ´§õêUÇ3ëyšMtv|¸0_Óz!@ãÛØuë4«Å.Åj×lIT:¢âP•Ò3;ñu¡Öш›f»ÈÏò¦ï™=O¿èð…jy;RéôßgÓ¿º‚Øû÷îñŸl¾&¢ËצO¯…7‡}@$àúr«bŒªùA^6ìLªà;¸]^]5ì²I&â—ÐVæQŽrs/LnØ©a ‚©Mš—²ì¸Z§Ð»)ŒÃÛµvTì vÉÖl(9}*.ŽÃ ù.Iˆþ:cG§‡ƒÉ­Ùô°}à»Í;·*tc |ÏmÒÎDZnCàð’sKp[Ïú…«¨Ê3U÷‚6,¼Èò»c¯𢃱z°,ª´‘Â~Æ1ŸF¾ ‡]§†í"«€ ?€¬-[çYºÊóà¸è–&ÿQWót.ÏëWÂX0Ó&pƒ‰ Á ŠB‰Š4¹™³³¼°fòkÄþÄÚӒוªæ¨Ã°º®jEQPP³†-„Ñ.¦+ÅÃvm‚Îèw!ÆÊ…ìh6¹-¼ZJä A jdÐã~ŽäˆªBnø^Ùv5 #¾³ƒ $ Ý=@4gE1u÷FЫ¦—53kQµJÑÐL³ÅœÝÏ O“h­$q»Ug7ÛàW„ÅÕÅú›ý+Ó´r•Ö’çÐP]òƒ"˨°…I°¬Š¢Ò§ 2' ‡ÉöÌš‹$‡–â´làŸ¾Qú'·gˆÏ=ìh µJón%Llû{ à5Ë!F"×ܸã¯C!oÁìsFÒ­è€ædò,1\Ñë ¯Ãf ¨ [ÂûAÔ¡wïƒ-“ÃÏ×7³Sò”Ë„†ÂkvÎ9#"¾õ"/ÓúJí:Ä/Û½Irw€ÔªZµ³3I¶)°ÝÀô—w5AíP¡Ù»$)O÷ˆK™·wTÞ¦’_Àø… b³ÊU{Ž:3ò¶?•}%ÕÈÿH5ó@txMb]KŽyóùïd‚Ÿ>þÂéŽyÞ~ÐO÷%¦öè'tåE/ά|ÁJ3g6ùÈÒ¡¶í˜Øa(³ÓÙé¾-îM©§Dܶô[4$½!²¶Ïþ:ÓTÑ:ÍÌ|ú¡š›AZër…£HÙ†%`|2¹¦7²ÝòrSЊ`sPƒd“󾫸šCƒN>¿Óq>|¸Ç,P¤s9»y6ž0+„i•—ýÁ0³àô§ L07EšIÄß ¢ôiúé3Ü€ã@ÊáJýÍzóË“'{”PV-÷® ? Ò«¸¦×yvk_Ò‹™êtûâ³ËO ¯wÇM°ýøøÍñ°õë«©`ðÒÖ½F¹#Ãü;ïëVÐ ˜£“ÑŸðùáµ~þendstream endobj 255 0 obj 1754 endobj 281 0 obj <> stream xœ¥ZÛŽÛÈ}ŸõGèÍÀâòҼŋ’À b+ÈÃx¥¥–ĵDjIÊãùûT߫حñ,Ã0L‘ÝÕÕU§NîßWIœ®ñGÿ»=ßýø¡Z¦»dõwø{¸ûý.•/¬ô?Ûóê/x)-ÄGÙj³¿SŸ®ÓU“¬ª<xz¾‹ÊûÍow,aq‘ÁÏ›Ý]ôñý?ù7ñôÇMi?_ëwX×òµ\¼’6qž6úò!úÈÏmŸ7 <Σ¹ÛN÷¿lþqפqR'©Ø‹/³4nÊÄÌ9¹xf•f¬érs&iœ•ßv¯¶íÜ ½/M“˜é/_¸²-u11PVkSÿÜK[«8µ3>DÝ&Ȥ©U4Œ3nþ7ËYŠ$®œ…—vœ¥ÝyœäMMÖ’¦qéžéµ¤uœ"×LÒ5r†ºv®a`ãóõâQmÖ«ü’'I.]ú¥Lcæ>ÔžI˸±vDÝ$Ÿ%±õÃŽOÛ±û,Mã<â;eX—Ì®þ±›rõ -Ê­ÔÚö»¯†™Ûor±‡qY¯Ò¦DkÌbæB¹¬r£üp=µ£Œ‹ ÿvù4Áª§Xü Ë6vnÔ@Y†1‚ë»~ÇåPEjBÌù¢Aû$†ær`vÍÆdŸŽ|ärê¬BQüý÷¾6;£õ}Ö;ãòC§ö,kl(#'סpBÇAm.dQæ…OȵkqPWØéJZÛÙ:‘ÁHî«÷ý~Ï*²„‡3ƒÊ¤"d­ðñV„{—etìúƒ‰ª"KrûŸƒ gåê¼AQðí‡Ói0QõÆŠw~üÀJw±ßõ*Oã¢h4:Å©ôLoWõ½ûz_ÊO£ötu‰S'È,ãÆ:Î=€‚ñ’ª©Lj*ÿùø“‚Au½¬`‹°¬É§óB[X/ ±a;^Of´ÜKìÔÿzÏ„ÿ«Z-ÖDrc³åñÈ{½ªÆßO íÛa„ÌP)÷tèwfW«D9Þ å<óQ­­Ák³&h\'5Ä ßÅÆHæÐgcc¶µ 1 F]O™óoX(ºyÒᛡH5~*kø×…5> ¥&-dIÄÖ`±@Cœø·nÛžtt Ú¾==M ÈXFg¯£ EK;ú ÏI X' †ÙN|”@°Î!°€^H Õ0ªM*y«BaE…R×+±Fl{þˆ¨ÓààP¬V¢aA^A·ˆÌðܽrC± 2®gÜâ›–’Ôr2Î-–Cd LÁK¯«9MË›ÎWQSÆ¥ó½è RR‘­œžÎf<£1°&Nš52£À‹~õÓÅ WFµÃ gókñ{A~·÷Á5¸Á\EhÚċޗ`Ÿ“®Ð&XB‚Óoä-†bÓ>’Ú‹‚…ët®§×cQ•F5®WIFa˜n˜µÓ=Iö¢”C5(ʬ?—[ÇX@<Ãᥚ¤XäŒvÝx|’«gVó à¶Ë݆tçç‹aT²hÆ©·¶-8Gm@‚wΟ4²9éùέ•žô„æ§£ûéë2ï ¼ãÖý ó¨ó0šÂ"ÓËÛ[C”Ä®×Ìʪ £–Ša`õÒô2h:ò•.ûÌcÚ)_Öí–§½LâÚ•÷³ŽŽèbSµ—RŽ*Ó¬ *üÂìhŸ|œ÷Þ²¸ŠË€»³ïùõô½.;È7Ž„7"kQµÄ•õ0Ëë5·é~Ь(Ëó.) ´u®pUçr_ÈùR(%“ÑÀ ˜ Oz3Oí4ë’]àøùÂýÆ‘ÖàXU•!î{¥øœcº.[@¡/3Ät}–’¥EÁŒÏ—Y÷8•§X!ìÜîx !öŽÀèv“ßõcêN¸:Ÿ @­EãÈ÷5SˆõeÂÊ•›6·eÂîlwПü“ÝÈ.õߙÞñ/ü”¦yÔ€N„ŸHšð+r¬`û€ Í,?s£ô#öŒVŽ€îÆü>š®í¸Ö¥JùÝfy‹,åºOË ûe?˜ÀÇŠªñMólA.P­…Šaç¹ÎN,c –oONïÈ*}QŽøi 5eV•RåÃЫúêd͆¨ÐRÕé)B…_'ÎÏ“äY÷å2v Y™atF鹦%%Æ¡nŽ5Cèâ|Þ$¦0u™‚pê ð© z&h(wŠ5„mÎ#ÈM*N5‡F¥É*ª¤¯|†Æ¾H |­:_"™µ|ÀÚêÚ´ÎåF þeÎüÑèâE¨”†þ*Ô/áƒ=£¬d~»ô‚ãQµa!L!Ç-ÐHš¤íu %y|Cn vÉ“…n·Â)îwݶU}|€’VDïÁôsêìÉ £zïgkh8Ò âS Úüã¾…9¨·ç·|Q¯lC³Ô¸ˆ1Û—çM ôˆd÷-IºþžŠ>ÌsÈ|=[r€av4~νcќԲª Sß. 1øâ«q œÜ˜•f´+zvq¨D¡Ï NžŽôF|HšÒªÔñzvËÇù CÝgK3?–‰ô¦ –^fA¨!o#GË1d‡ÎiýÊåÍï«ülÎmIã•ØÀmœŒÜÆÉìmœÌWÄuPÜ)@y,b¤¸!°'†i$nµ%‰¸8Q=ç‰WuBš° ÌíçëÉ^±@÷R¼ç£ÈÌ>Ö2Râd—À©¹A>°éƒÒÃ)®³ÆCàn™¬NiµÐ ÍÁÚÃh*&d Uøer|T<¡ ¢Q±fòhóHê5r}ÚÍ0?DÇQ¦Í*\SÛíöjÌ‚ÇÆ´T%·6á´8ÃÉ1eº}è”0•ÔBV¤ø: ú#_°{b ‚ÆMå²¶qj'Æn±ªþ½Ñ4½:Íí85‹Þ„›5µ ’Hì˜[…ºŠÒ¾&Mxš((ê‘9Êwû€¶¡DEQ¥ð^m$³î:p„–( =>pS“Ûh‹ëfÎ Ãç g³ Oo5Žø[àרøÉ]¨¢À;ë„|OôíR@!äÅ$Öáµ¼ó·¸P:r“õK‚¸N‚Åôs»¸B%Ý·R[õá¹2BÃÐ\)Á©Ä¿ÉM¶È2[F`ÞØqÜŒ¸Wë\ žä\Ò]Î T²“_ºÞÈ£å2 Ü ÅpE5ØR]†®…>€ƒŒqÃUù*!pàգѯ×à[zÝ©~££Ýà/ß;äþžÉѧhâxúÈ]L”>뫆ÿâ‹QÀ‡¿Z6u$Å/úœ¨Õ—öÀuN#LNÓO÷êBVšPÏE?'ïÄé˜×²HI1T­.UH'Üñ}kî¨U/Ñ#,abAiÙÍ&jÿ`£æk·3DÚ™-!GJ#Ñ5Gä+¤`fnï´…oÅ„:‰áÜÍ’¨lȱ£T×,cä ³¹ êŽâÑE–3‚®Ï¨?ýôî_ûùg¿ùúÍÍ^Ù„w¹¾!õ0<,>Àl âÆ~ˆÀ6&Gý&´ÎY¾h™Ÿ¢$p‘eqÊë--Éf ÕËwâÝæîßðç­)ãsendstream endobj 282 0 obj 3339 endobj 304 0 obj <> stream xœ­[ÛŽãÆͳ¼¡7k’—÷‹mðeOÇÙÝöA6ŽÄ1–H-IíìøëSÝ]Ý]E65c#œ8¼T×åÔ©Ó­Kß –¾øþ»=.^½Í–÷ýÂ_þþ»_|Xò†%þ³=.¿½›‚D<.oîêÑu°,üeE^W‹Õwûò4TÝÕÍqèŹ/î»Ù-VÑâZyQPêÚfõ®:–ÍUX…Wä«¡ÞöW¿Þüc‘^9>ÙÞÉ'ÙÛ†}%/æ^F^ן®Ö‘ïûžŸ¯ªmýb[uÛÈW¦¡¤~ˆ¿8ÈÇÃ0õô¥L\XÇp%]Æ…—Ë‹ÿaÙqlÖáý_}õúíÛŸß~ý5Þb=ÖçÖúÏ_Š ¹ xb}ŠWvÕ]y> âj”z‘µ´ÜÊ%ˆë¡—µîêþt(¯`¹­•ãâÀóí§Kù\{¹u\Õu­Œ,Ô¾nu¬ú¾¼—VÁ;2òýf'ïÖÏwÕpîš^”y±ý˜]“ Däñ¨M¼ÅØÄŪ=Hk᾵삯ÑÌÏaî'«?†A@ž]CR¦~Ê;‚Éã±´>^Ò»$þ٬ʾoí÷¶u9T; t…uÑC=ìåÊbòÖͪ*·º†öò)ø»ö`w>TžJmR7ë(É=±ÈWo’ì…òå:¤@*‡íU,,K“Õ¾nîå²Q†€¯‰â£ý¤žÖE¢€F׉|ÿk0^â{”ië3äõQ}!!ñ!‰9“•‘£bëîß®¤³Ób…ŽGŽ”Ð‘S¨†5K#ª°ìõM8†ß.R§y©^QÌ®´ˆ&LW+Ÿ±àZKhLŽ"&à4H® NC³tœºêÅ'i|@ÕôÍ|‚ÒPo)Ë–[ÝœÎé $#mŸÅÏslò°ã“4ØT• fÅ$Ÿ¥Z\š®TÙAÂ$¡é¿ëF!¢'ÿPF€Ä]ÿÃ^u;žGm£ó¨ Ųhû¾¾=¨ÏÄ>»ËF ݉¡³¯¬&šŠ*ð¾É+ÌMúbGóß–}õ{²Oõ`’@Q¤eoÊŠ ‘ ½™èMI1…øÎQÂ.Ã0«DÐn›_ºz;èèÚ$߬~¸Êµ;õa0.1©>•ÇÓA­‹8˜|>A´kÛ¾šr³øT/Ö'5²·IôÑ–£J§„VÁ°P¡"½¬«îχ²ÃöMîÔï€ ÷_L X µ/ƒDÕ£xⶺ¯e2]íåM¹þý׿NaRҽŚ&ˆ­ÎÜÑümº] PÒÈð}J„Ò€ÆM†Zµ÷xöÒ®­E¢@Þ­>÷T€R›Õ{•&*v9—ƒÓ4•)™‹¶âçîºTeRŠK@+ué‹®W iÛàË%³¿™0‘N2­Qð‚­>»Ò|ºRÉyT5‡ze镺mÑ’ÛÕŸA5Û›U8¦SáTRD0îI\ôQÁ¾Øy8˜Øß\eºvuiÀ}íáã¨vW±¡àŒœ 4œ€¡6Q梗D‹+åÚæ¾ê5;º¹f¦ÿ`UÁé“Ó9`³²< 0¥ñ4l…ŒÕÃïT?O=—¹vü.eGÂX£+Ñ–ÏHŸˆ#¶A ÿôý´ÏÚ»hÏçûÕ§JÑ8ˆ4! ÏÁ£§Ægñ÷Ì›Œ£O9sW…RL±%;¶Ê=$ë’^L6mõíQéQþ&ØŽÄQüæ´È0—’;Él¦Bc?ê¾Ejƒ÷­Â]2+’ŒzèÛ‡OqÒùUÓj"œeù³fuØ¿M¢å”Ãýù&“3ô7™1¯µ1z4ŽÁ«·ahípH"òÐNõ½z.¡»^•½°l盽r&g(Ûäûr#¿‡½ÆðºÓ%0Íù5ÀQäFJ„õìÇlz6IB,&Í3¨rGèr@%'kñ¾5}à¡Çú:ŸVJýŸº0‚Ì‹,f€vt.&º:¾0! @Ïì?‚¸OXÇ7x>âN“z$¢¥tØ%pNá–DR‚€0×Q*ÆSF}­²FFåѨO2ì¾jªNŠ'+|¦‡:’žÉw×ÿ¬ôˆL#âÊA>Ì»Pr³ªŽ§Á<÷¨“ÃÙ§Ó>Uæ6T52sf™ ,ºâÙH\ß9ÇÌg}?ƒ›II“U£‹‚h ²È:”D‚Ù¬70g@ûÇÖà,ImÂ~;¥™Ä›úÍ íYµHÓ÷íù C>ª¿¡üm2=hL-;YÌšvÀX^Ð_¨V:kýÙÔ¦u]vR̸Ó\êR½Âµ EIa}D ;#ºö¹ÇŽIHʼz$B´clÛÆª 7;=”¤Û€ m¦GëVî?±rÃT  c9æÀÏfS.æ[Ø|ábH~W<Óê¾”‹­W'û èÚxå†ÏÍ¥çEP3vFÆ IôŒ| s”éO™K‰Éy·êuâØ‚ˆ¦ÑŽRo/“k¶{ø"Ã:žô·S¨4OÔhrNû‘Þ—$ZÐ "Öºdèx¼8ºñ5ÝwB 1aûûêd²§²%`Ha«u8d?æxV&t临M:/ÒÙø‡]–%À´}‰0ojŒÒúÎQ>§®½ïÊãîí6a®'ºuˆír¾ý5#fTÓyÝÉõû¡=©%jçv“›þÜG(/é18ádäêªmëÚ1$„¼õ®k¥Û”2hg’çg<ÇøëPò#2“=iñ$1ÇwI³!µE¦ Û“weŠÜ!a“+Ïòõ}Ùãwb‡‹™~Zî0§I¦÷íqº§ì˜žÌñ´Ân˜™…'Þ´)gsn±óu'ö¶Jè|¯÷• Êl4"îÖ£+›g«P¢ÅÎØc>ë(M…CX×ú?Áˆ4¼>ŽCúøÐ†:¸”Ñ%¥NW&RÙõ R%ŽÝt‘pºQi |?f¯À7)(ŽÞhz<¢Û/rùá©GŒ;)5’_t³ÇL$Q¹«TgJUÖ2—v|;rúÊù“ Á”%å&ºåŽ7KmÍrÁ;yJp͉°C5ïx2ÀX»¦'mðH×$ÒŠ%ʸVÝ0j¬ŸÒ£Žš°‹4õ ½>…E²iubï¶=ZjK*ÐÊ£;Rxº<¨¡Èšð Ò&xaÍ«ODñ³töÄëmÙãhäÓdoµ“·Æ(2|sª<-dDÛ|)«ÚJ˵ÖôžêŒéì^âx ެ„šÙ•ÛÍ‚ÈÆÄEÙ ´“¤ú)ÝÙvÄoÎoÖ€Bº,'(¤ÎÛѳ3¢« šOþF šªÚá6¶Ÿ° Ñy&øÓЕˆzT_›/Ž\PÆJËÚ±Tû<›!o:©Õ;û,ÌÀ š¾Ö|7f<@ ðs'öuþªÍH;ñ[©‚ØÌ·¡òY5ÅÕÐé®‹íª¡ÚbRÆsò–ã ¤ªÍ Aë¤ïéãÄï5­ÏI•¨šNÛT½ˆÊG&aõa/:¼9]›o9ËœÙ|K&àÆ¨•õÑûp®;ô#›/ÝS!¡’—S뫺Eë´à— ¹H@ÛÛ¥(šurìsv8¿ÍëÇ(0b¿"§§ê?ÚO¢YбG¹H²²r€$ãG–§ù¬8vd†B¡QŒ„v—܆“&‡uy˜ÙÙ‹,R秈E£-~ŸÉ}S‡ŸººíjqŸ]Øa—úXëýÂ?[°:A¦¯×gpG$Óͳ7b”¤Ú+úsþª*v°àH–3Z#0ÉËÛóg˜kV(5ý™´X(ÞªÙa>¤L6r)e±UÍÍQoFçÎÌòÓ Mµ¿PéÙ TÖ¿¾Y¼Y|Xq¬~¨´ÿ/ó¢‡@|Ѫrñó¦o¯¯®ZݹZ¼z¿ ¯~ÿ÷í¿¿ƒ®¿_þeñúzùfögOôw%æwO8Y½,ð×:â·OÓ£•Z̧¿1ùW;8}£Ë¯jù¿KK,KP»J9M&Ã@7”fˆgöéHûЧ²§t+wœÕ’˜í^µÓ©.l;ñ÷BÎoϺÁ³‰QNä øë(E0ž–H[ ¿æÑý‹,›þ†Šn¢XÑw»=w=ÉÐ7‹ÿCÆK endstream endobj 305 0 obj 3656 endobj 311 0 obj <> stream xœ­Y[¯ÛÆ~Wý#¿”,š—å­}J6uP ¨# ²òP«#¼($åc÷×wöÊíê#ȵœùæ›o‡¿m£0ÞFâŸþÓoÞ,¶Ïó&Úþÿ=o~ÛÄrÁVÿ¯é·;À¢8/%ÛÃy£^ÝÇÛ*ÚiVð´ßåîðß ‹X˜%ðóá´ ~ùð/þU<}ÿ±Êíë{½†Ua)—1±$®Â4®*ýæ|àS½´Ã³ü-Š`©ú¥NâQZ„ŒEf£Û¬WfQ˜§•]+_ÎÂr}Ôñ¯mSwrm¹5Qu÷mæ“rvŸdq±m‡yÅrñáÂź$ ÙjºçE>ͱÍØ÷ã C“*Æei".±wãY>KÂtüÖ÷ÛY.…gëëË(Ÿ¥8’Ï*’Üõ@FÇ,ìä¢4»ƒû׎ë×sìŠ$` Xw4‘ å;vðƒ ÄžAà ¢àhTT…Úì¹JÊÜ.7@Á8ÈÃ`ôÇà2î’ª*Ã<^ì_ü‹ø³ «2àÓ»ÝçÃOÆBÁ^:h‹‚$yvø¢ö¤" rƒœà#C÷MzŸ†Ìw¸åb2¯±Ù¬ã_­8ñ¹™Ú'o×F‚à®/ÍìÓ² ³\9Á…“ÄpGÈbmÃ÷Eì"‚Å…pbQU!wõþ.€ë4>Ou/OÌl |¯?ÝÚNy#||6ŒU|4À.\•S†s4Ý$ÐÂKÛóÐð‡Eç“yŠ ¿î;rS«2†Ä#—^.\=*ÂXæ 2Ô±fUŽ\j@\êY/EîZø!Ú¸Ö“v£D@;}=¨‚HŠà›Ìl¯Ç|£!˜X9BÕõ»4ÎÊàÖ-õÀÇÛÜ)EŠöÒ.i€áÓx8×¶ÀK7¯•GÏp ^#_d“ÇD2Y)“ÅÖ£© Ä"$ñZ¯ò&C•ñ´ÛË äUÀåÑbÈssÕŠ˜mN¶\?HDœÚ?ñ‰¯‹E^+l„ŠÂ\ÿðÃyQM‹–Òš‡L®‚P¥• פí=ÌGU˜3€ŒaÞ2Fu¨ˆªuY%¶V„œæˆ8È„ 2$¬âÀäëhPš›ªu, æ9-"ås¼Ú†’–¸V‚Lܪ/‰×Ó…ôp½)=P!¬ATør1;AFÅËï?2†4œ$‡î«R$…±Î2¢ÅŸ®ûoI‡eÑ@ávfWã@ ÑŠM!S‘ƒNu¾ Á˜@>3‚œÎ?´ À#s…‰¡ô{ÝVŠj‹|‡ž@i¦:$u«CŽÁ¯»RÇ_×v‰3i%—¬‚ã ­²˜u¢Q÷{Õ!ÂJò¨àÂQt-S½u0÷ š1 [ ÀȧsÝp#yªE—>X£‡&#'-¶<ýWþBz•Oò ôÓ ç0ü & ÈÓ$E(Ï+(Ø€`®€N5ˆÆ"¼ŸFö}ñ'¶ždJ]®2\8E~IÐg•º‹üêZ†+ _9¡?~ ŒÖ£(«>nUò[j@«ê®Óï5ºÅF5¾¯Øâ£à/®‰}‰3šubÕ'd)MÖHæ¸n%¯íued—ñ¶ ßèv™éÌGwƒL´Øt4DÐäDi…‰YõAò¢~„e@èá)9òÏŸv®?ûXhçDùg&N1¢À5Tˆ.‰#ÌŸó2i‰&„‘šq°B|©ÛÁhñ *"‰RG„š-­«l1h¬a1ã¾"ïºö Þ´oyÏ’[æ)>œ:ô`‚Љ“ø å+ß 9'ÈVϯ„) ]nËïb¤êÜ´½½ž,öBÓN1ƒŽ¹´Í¥tÈ5Ãõê»K“mNca^|™ÚeáC¨—bÿÕâ@{“êq俢{,®W¢TÀàêà`HO{™P—ð;éVŒ)bæ&œˆR~áVSPIµê®>þ¬¬–æárns­Ÿ w£ƒ‚Ô—žÇE®kÚòÝá¢bJÁì»!Ô*ç¾²ó¯µÐ$:ôÅëJš [ Ï'žÁÂÏóq.Ê>†û´¶Xž§jòíµžÁµ°{+¥czÿ8œ›þ­áKÒÈ¡à°N#O6rËVFOÎjK²ŒÖY¡l’*‚ #u„ ‰¶ÝÇz7.sØ*öêÝôîŠìrJdä(®†ž¾iÉCòy?BsErL4Þ=ßÍæ¦q?È£,zæ/`Xqwã“åä3´2 ªƒ’¹èËžŽá9Ú`½þVø±N\íÄÝ_Pü–»TG®Oç§™663dc>Ò®Èäã§bWy)œbp=ÈñŠœhmæß…€<dZfÀ-Ï2¹,5φ6³ñI𙎂W(¼M¾Q*…U }]'vãÜZ9 Ñ$×—мFj~_Ì“’‰jõ½YnZí«è5ÑTÁÿÈë“æOv‡hÊã_nÓ`–Za A2Œw©§ºQ)ŽÉ @9›/=(î¤SâYè}$°*WM€½Ã½^Ÿ¾ì˜˜TÄUPvâ·½&ý‹ðÔD˧˜ÌŸÖQ"7t¾OYIáÔMÃç¹ÕnÖFÁy{­Ð¥enOÜÕ(Þibݬò¾K {ûA´Ýºkÿg>ï|Fsw7@¢AÏwª‰Œ&£ÏãmjÔeoŸˆ*%f»cpØjÜgä Tô­_áÆö¤@RâY ºŽ‘?ç©m}kÈÖèo¹ÞHDÁ©Ê žZõñL¿rvßèw LªIiBµ¥ú”³ ú¼èž:8µ'ðÁ0. ëñÀØONfþƒUÅþs;è9y”‡ë˜üÁ˜ï?.Zª iˆpÓ• 5uwÆr„gû8’ƒÈàÏŠpþ~Øüþýx4Ù£endstream endobj 312 0 obj 2340 endobj 351 0 obj <> stream xœZÛŽÜÆÍóÆ@~a€¼p€Šdóª7Gp ŒHÁȧw†6/#’³«Í×§ú^5ìÝUÁÅi6«ªO:Uä—MÆ›HüÑ7ýÍ›Åæ8ßD›á¿ãÍ—›X.Øè¿š~ó—;Xgâ¦dsw£nÝÅ›*ÚŒ…\ío‚w§ú¼ði{÷ÛMš„i‰uw‡› }+®Å,dqUék?òOõÒGñ[–‡©þ¡âJ‡ «J}ñ2ë…Ify”˜µâRư­¹Ôñ¯mSwâ°,·›ÖÝÓ¬lK`ëÒl\‰+o>°„Yïvi’Ãi–Êú0™Ü¯sçÔ¿ŒIiæ©5i9qù Û‰ŒJ³!]$Ä»8. „›„…‘ƒX|§·ŽÃÊíðÝ4/Ê«0rÆÝ_†fiÇAŸŠärªÕzÆv—}Ðo“ª*Ã<‡P/Û_ï~ºAHÝ‚ÏÛ‹¢(Ì«€ËßãÔ¸Öqyj,ÂçÞÎòÜá~¾t".qÚ¡]ÚºkÿS£s†6î„ÒŸ<4×ßKWâØZâ{âÀ>Ïõô$o.àì­Ë(®ÁCˆÊ T†Pú{l¶ÔaX„ð«n…[’•c…[…ÏÎýÒ.ÊÔLÿ{/SÃ5lQhÆ{¹,A×öA#LT§zªȹ9”&BEÎñ¿ñÉ`1÷J…œñÙ¾ðþÜÕ ×¨EÇá±I§"„\RÙ£²ñÂ1<)cѱ»jû­NŠ4uYÁÊJänœÛ“ >‰ìâÓN`HßÁ{GžØÊΗe·¨cͪàé¼ÝÔ«#ÎRì¦\¿6‰B÷iëÉ]€h‘obX˜]ån‚¹¶©|~ÔÝ…ÏÒj?KÂ,‰Ø·»@,¡þhf¥ ±Ç.»m’ʱód’ ?|n¦VQ„€%°%…U)Jr„±ÜÒ+!é¦r5P®s`ÿ^˜÷ë­\n¶8×Gƒr”ô4™Ú,•ãåçA¥TOTø¢‡–R hG ßaøíš½›Ÿ§ñ8ս̮àb]oêaGî7lè²i)ö»FT|˜×p`Žæý4ʧC„ÊWl%4ÆÐ/¢.Hü•yð$d*|ßHf4\ +%KqQô’-ß+&5%·ôUaÄœ*RQ"†/qŠ\Šª¸*¹9Ž2¸ ñQV•@Él´Žª1yâó¥Su¸Âg¢™539 ¸¦B҆¦d/k¥Û'÷T^Q—z19ÒfœÀ>Ä,ãpÏÈ+"&F°[sûzi,HN†\á<× T°AçkÅÂrÛÂÇOœÍL, *Åú »qvŠeœ[¥”×$[„ §_ì ?/u;(Å“’_Ûåä…a–Ⱥµ†á2{ ÂAvëh^¯iÆîÒx•)^5ÞßÏ|yÛfóïµÁjÒb÷¨=¶uÉQ»Áæu|*ÀëLó::„ýÏg±zVÌžE¸ zGÊ!Žoõ6¦0Íc¯ÖD©LW*Í“Œ&Ê•Dæ³Ù«Xë’Y‹PŒµ¾¾¢Aׯ²a\4£2› b©˜$Î2¥*´6B)…¶«?w\ >hR˼³rPÆ‘DLðú«@?Žšƒ&ã ·-¾mpËÓœt#¦Ò!êø¿ôh.àʼnUŠX?Ú¨Û@=½5uèÆHèÀX÷^WIÓ¼”Tà•]áK(>/w#Îkp½bV€Cø\à\Ì¿Cã¨ð[ŠEáDqÝÑÊm;»ÄågÚNÒªï¡2õ¼W•%ÁÇ4\ùŠøËýÉu:Oü¡/s'»2øa@Á(Ô¢óò¿·¥Ö7Ð-鬉 øæ±+XW1ùȼQ%©µÈ¥).4§Ú6Æ®ì«{3RáMƒïFzŒŸÍK ëq6b‰Wè yw¯ ¢ì%² müð`lšŸÜë <ªX«ˆKM®ò|ÎVgŒQô]§îÎñÂS=ë³ÇÂ1ÖaKÄêÆFÕ8i4EѼM;LE`)æ>Mj)¥¿e£-b è~¸UêS/”>hÐ$/¬è4”Y€‡/ hDå±þVÅAz4aÁD|!®§ïõtÓ0}v;ªd-ƒG>n$”l(³‰¢'å%€3öV uà0ÕŒû"D\/х쟟oŸ/!ZM‚øÈr¯¢Çzò…1Íÿ¥'n;Guh™k =nìUäahù‘™b«µ !¡5×W=#Ñ?®]vQzóáºR n:X%ÚMR˜NÿV3Y¹˜¶:ÍV×y]7£M#†áTÔ`ÒÈz2ù*×ùÜAƒhuXNÒáѳMkª2¢ ]˜ ÅÑ1ai=±Äž¡GÊ‚MS˜SÆý8)i7ø«ªë¢SSL$*’K}þµîÏ×UV¢¾ ÚÅ¢"Õ1øÃ rð+JiÃD<áxUxµ®†ŒŒC´¬CéôN¯ŠÖ5³ÄýdÓÌ ¢9Ÿ•À„2ž  ëëkZ ’£©/J= ­Ì뇫 ;W®Æ Ì&Ë÷OjKçżR•¢†C [þNÏ]žÚzGÉR™,¹"ÂX±mØ«¥˜L‹þÜMw9ðÕ‰§DÑ4cßCË2‡±üJÅ¿Ÿï:Þh‘~ç¢|µNœ©2Æ„€+-ç¶Ó¥Æ½B1Š…Øí¥žWjè õyÅždµ%ÒÈ5È*k7¤W@&/`<ªV-Å NÐt£Û*I*ì屨Ø%tíN(gWD;JH°&ò×?ïTq†.ëPOj`㊮…„0’ ¯¡âãû¿ó¯ºò TJ^ñ-JF•RT²¹Á+Ê‹¾n¦Q¯Et=Ô=ŸÕ ¹ðÉ?^ºzÒ«‘qü+taó,Jé­®¥×FgꉄºQ¬"‚Ðd2V© S¹= r«jWHðÐ#¢&ÕëK{¸¶‹#™xò´Ä{Ñš¶ý#“CÚr§„¸g¾¬‡ Þ—^zt9ëVMd*øR¢Ní—mA›Æˆ´Uæå­õ g÷±Uí•üÖ1üÊ|Õœ‰nÇŽŽ,GO-hAéqŽ©`4`}wmõy4mz㟠YÞ^LØF “G¥äYêA) …nÛ{ÅŒ’®{kÚA©¦ »4‚ÕiL'gú…v—niA=xš=*¯ÐV½*àÅäe×/v¡ù·t/šÑ)ù¥Ë…œ¥©ÀŠ+qQ JÌñ¨ìÙÐ`–yÚõë ¦&A“s¸'¥u’Ý"jÈZ¸gNÂʰH.‰óçÂ:?—3oÃãzØ Z›W舩ƒ#p"ŸÎÿÀûtd[`~rлTž:‰'§ikÉL:ØMqx†ÐQTh„z.I>5Ýü/ä²L¡;Õl…±&kTVß +t]¢ö|c`B…~Âv¬ú°D8Thü…‰`"Aa{%¼/—vñLÈy=?a:óË›¸,¡ý—éRñ>ÏÙµhïé2ìl‘ÒâõñrƯ´fKhư˜þüZ¿!!¨ÍàÃ÷ÁD‹/=˜…ŒŸî iüdGŠãÅöýˆj-™  çó/nuìT,œ+¸ÛÆSÏ»ýà·‹.Qø¨)-ξqm>Ôy~žu4Ù‹9&ZßÝç6&U°&K™¾Dªÿi-ÊÜ+¨wgäµwm8¿H'Z#vç êW„3Ž{©îÂ]æÔ's_˜î‚|F…ìAoÍœ=Ä„½(¥¶ð<´=ê&Ãp¿EŸ/ ŽŒ4K+Ïg[;Vâ ô~V¼º\Ѻ(„$²ÌÛchx2 PÏ[¤¹í[£V3Tð÷Aw­GÜ×Eð#GŸkužQû,ÄOÃUEÿáîæŸðç¿/yô”endstream endobj 352 0 obj 2993 endobj 363 0 obj <> stream xœµZmoÛÈîg5@ÿ‚/•‘ærùšoÉõpUÑ»6±~p”¦h›D:$•D‡üøÎ¾Ïˆ+ÅwhsÈ9^.wgçå™gfùi…l‰ÿôÏz·¸|—/ïÇE´ü þÞ/>-˜œ°Ô?êÝòÍ5Lb©x)^^ß-Ô«[–Ñ2ç<,at·X±èâú?‹$JÂ4†ç×›Åêjý÷櫽|—öý€—©˜“”a!§ýIMÁ[Äa¦×øahª©3xrV–z¼ïä +C³[?È8LŠˆé±]?Èiq&z¨êªíal†QŠ›á5ï†~'g'aÁËBNj'ó{Û=î'9­°{‡qjä»Á”zBe ¬g]*I¦@U"-ÝõÛmoŽó¥íî•“ó2× 7_«Ý£ ÅG(¨â¡°Ÿ¯¾¨8äQX¸SI” ƒ”Ö+'³Ýá±­«­z+…%ì†ýp_uí¯6öŒzïtnÉÂs»ì,lî·SX·»R0‡3€‚R¡yŽ@¼H}&Qçvþ~[• Àçd¿ô“,› ªIg1§v oçðŽ:ò®:Ê"#&îùƒ{>‹òÌÁ-Š®Fslá¾ÑøŽ£ý8!aó8ôè7ûZmtÉ»ª³~qð¸€öTuµÊ;vû;ÆÃ±ZÄŠðºãzY"†Žg. rAæX²\a”Îsƒ Z' ¸ÌmÞõ:vbçíŒè°R6Æ‚<m?´3I`7Dg·í®4¢f˜i:è©hJDnVK_;‹ ·3‚:â®°Øy; GØ‘0Š˜šŠ9i30ŠB ŽŸc_AÂR´kÍ A¬]¼Þºj'25Àr®5ʵ/ßñ˜;ŸHcp 8®T¼Xˆ–ò1ìT£¼Í#gÇèDq„·ÈcLÝê~·Ój£ÎÉ"‘q– šÄå)“ùQ ž©×ñªÓõ”'*gYZ‘³$Á¦Ó´)r´ qÂ6ÍXí­ ‡*«¥˜%i–pŠä3¼'ªê³“bœ­&¡Ð㺨VdÌ”Äe_ëpG{׺$¤þ6õsµ³'—ÉaÓÛÞEhÿqÔ$‹°µmûÑðßæ•ö^’mY ”H{?ÇN†ÌªR{ðLsõœ´:ÄÛDP£@Ø@Æ~B¯PQRã7óM…Œ‚3èU…yæêá%Æzi%ú¢BÌÝÇ@T¯É˜ñÃû‹¹PFrˆ·{ºu埔ÿ~¨$¹N¸KŠM³_jy8š‚4r°˜à².©ú+*ºn`,`‘8(5Hf>dgþ6÷Ö“vó \I ŒÚ[£9¶ó4E”»:.1(¹–ʘš1öå"¯ ðs—T³1Í”ˆ¤Ù=½§¨#ª:¶wúþ y$— á[‹ÊÞ£‰bID_Ú‹EÄž&]ž–ž¢©¼©ÆÁ'ïu…ÝÔ]5õíÆÍÇ¥5* Ðû¡­'}繸€ pýýne„}ÊKsUÞh‚oŠM¼%þËT“‹Îô㇔áìªM°¾š…eN(D¨ð&AÓ¢BÀjˆ(+½Êĉµ{;D,yÀËX—z˜\‡*Á*ÒÄú^‡ÊÌŸµ¨fÊ@ÅcÁI6RÍ™ÉÉ|oš"ð^Û¤ èL|"ÛƒêL¦§žù”[á9»Ï=²æ´Ñsæb8Ôp™àœÒôÑpÓžù; ±ÍDxÆ“¿5‚*½6ºä¾Æˆ÷ÜÏÓW$Xçø ˆ¶T·MíÛÅÖàoendstream endobj 364 0 obj 2947 endobj 378 0 obj <> stream xœÅZmoãÆþîäG÷ÅTa1\rù²—ZƒEr.òÁPš¢lö(RGRñ¹¿>³ï³Ú•u×¢(Á]ÈåÎì¼<ó̬>­’˜¬þGýÝ쯾û¥\=ÍWÉêøïéêÓ Vê¯f¿úË,"9ÿ(]Ýí®ä§²bɪ̲˜ÁÓýUô×çú°´Óúî_W4i•ðuwÛ«ˆ¾çÏHg„1õì‡vh§zé†'þ./bª^ÔÖ?IIœf¬R³Z˜Vq^$©^˱˜À¶úQß~ç/@³ÂlZ÷¯³Ô-%Eœé„ðG â’jEY\‰ÇwÏ­XšÂS}Œûè÷5e¬Š‹*ªûc;¯»û‘&Ke2ø€jõî£n8—ͲΒ$‰s½Ö›TlQD­þÜÚ5Ïâªd¥kW@šÄ•5¬Ø_-²Û€˜5t=‰£2. «Ù¶›©{\o@5gQ»êÐÊì,>J±>´ÍÒâEVÆú)©Ú?µŠÝßrÍ~»k+$9:ÔOÒ´92m±!6©ŒÇÞô@)= TNAcòhÜù6ïfqJÉ ¤ˆÍÄVÍxÖà gea;ûþ @VÇm «öÝŽçKc†ìùòÜ5ÒÍI=‹­²ÄYaå¥HˆÐª/òÄ`ð08U[|~—v/L«­5?Ç^„KFQ–ÝGû<©õZàb)–á¹{îÄ™R—ö©|FÇÝÜç¹¢hëX1`ë"”›:  µÑ¤ã¦0ç: šÜªb‚†šøð#æÖ˜Ša½¤µÄY2†Ïg#G«çyY!,ÖtQ¿¯u’ÛA–"Õún^fX•=Ýò\/*~õ£¦†Q<Ì öÍÒûèQÉ£LI ¡`Ÿ47>E_m» LÛ¿®KSÒ³›¬(+Ù +=ð¹ÝOqw„_fß‘ §— „¶JFÉ\­o?/SÝ,*&*ÀV³ÕnEœ¦:p$÷'9^Ù!ç!‘Ξ¦ïaá!G9¶û~ÔÞzá%C{ ‡^G;J´©]Ž“ á$5pÁá8d¯$àj°.òOÍUÑøò"³Ê ›ð(*Óø4ÕÂj.ü,£WDyÁ^†X²ñóÒ-Ïê¼N€„wo¥Ð{…¬”ZdM ÈsÈö\š’/~à%¸6Oí²áVÛô™>(_ËÝX\s¥@@k­ÖÂC¤âuvEÒ7Ä6cÜÁzôŸ fü,b7(xÜíævùŸ ¦:$=Áðæÿ`èãpFðq^§ ƒ € MWïè'Äò Tf Ñ“yZà ¡¨™ÚZA”'´e B ›5ˆilðÏESŒqÒnûúc»ÿôÊRœuõJC4â|\°æ¡‡ˆÓj@–³žô[æ`(äð5ãE§ËÜ™£Ãaö ’|S[œÎYÀy¢#x©{iˆÃÙ×Ç&ˆ„q–ãD˜‘ãRkfúEœF§VŒ µ(V_Kàždï#Ã.'NY\ëáU–Y'†?ÜBäÇþ €Ù¼m {„¢¼4ä°¥h­a–ˆÚ~ÀÔüÒ9Wˆ §8•Ô åŒHÜºÑ ›ö¥“Á !ISYê²(²JQÈaL5$_ƒšÅNøG¬ÈYáóŒ Ûbjçc/AL~ʬ#>ŸgXgp`\två°‡û¹4†\Nå:%Wb˜ñØ3ðN›ŒQâ4HçSûijîÂ5‡QY˜`f==÷­êF€F*®RáÈ 6ÿ’šÍFƒ"ãGSí0+ §Œ+ 1¨»A’ÚÏ5@gë×|Üïë©û·jó˜Ã\Z⃅™$ÆÁ7ºéªË Ÿ‹²¤Op˯ÂÌ…Á×J§MµU¼Çä¬-ËYepxù“×@Âó‡hÿº9Œ“ˆwF0=Dã¡6nv´&+ñ÷ïàcþæÝÃÚP ^–N(¬ºýÀ_W9.DNu-¸ÖйZ+ÌÊ)|™œÃhz–ì±X‡NÝ~ø"–Š^b:ä ‹!¥¨T)vc‰ç1váe1Þiš/ —}­±,•¼ À.üÚàròF°*Bމ6®L=‡ºíŠÕ‚ &Z¢¦®‡8(}úq<øOyÆq\ ¤"R ¬ 1nSÒŒƒ?›·Ÿþ¬^ &QI„~gW;îB|©Ûú×@µ˜ºˆÊò«« Ap™ ŒOe-sè¾vTG{Œ¬ÂœMÊÐ,† 1ÇùYÌ¡ÖÃ9p¯¡î£_\rÑîS]gÒl‡Ñh(Ón{#³cööÊKã1ÕÕ0Ô„?yUÏð,b -žlmA¡¨—Q|R“Å' :Ó¹¯K!!3×o”t4¶H nò¯&Pñ¿,•Y’e˜¶ý_Û)Rf{»¡m·ß»MB˜1§%C­&ÀíÐŒv¤¸5c0‡ð:ãó£Hè"!¨3 ãÉï•\§õp·—çì0ù|ÕZ§:9Ѭˆu~FÙüÍL (jï£pÇŌȀLÎÄl«¡–fn7X­ÒBî¤)&ÿŒ~Ò±“ø6vrâÒ´­ò1r¢±sØrøºà·ÑÕS¥’œr¸‘¢G•ŸSÛznäƒåo`$\cÛùÛ bÔ™¥ïGë@Ì÷2†+<Üv §g¿Ñ ~«ù„gþƧR$s™q NCÌ>à=c¯˜à/™i1ô4}?NÚ¼é—À®Æ—†³¨'Á·AŽ ïêg¾Ñ÷É…90RÝiœ%!2…ÅÜ1d³Y½Ád/f˜¡î!}qÿ¶傪ˆ^ÔÍT–t­ŽM·í®Ö­wajŠêb)¿â7¨‹ ÂÌÅØÉdL+oqÎŽÒ¹Ã”¥]znš{\Âgy,FÓ}«ï_)n<…ù^á^ wæº#¸‰sÉq2Ét®ˆB|Á½¾ñ·IíçØ¿ÀºÀ<6”ðã¸w4^¯èìZâÊ iEÙ€³–¶YžÇ5·–”j´Õë§êÐ,Gœ-.ÊÛyéJoô—{Î*Lü¼îõn¨޽B‚ï™þéÛO'Ù0>N€¸®dHqyGtÛsvGAây4&ÞÜç²…ÔoÄÞu¬à!ô¯*•²O÷Fƒþ„ÅùµŠÆ¡òÿí4kÊŽoJsiü9Ê™ÃNo«b g<³·ÃìÐŒð4<õo2¼ÂhvœÿWÁý¤l›v«n| çFòÑ ºbç¾"`Ç`0S̪Ø2Þ(¡{Œ7‚ƒCø¢nÜŸrSd„¸?m€ôŸ5uBh«æ„{ß®ïÁz“¾})?ä@&;ÎBæ¿–µ%8Ë\ÏÓ•¾M¿Óƒ ¿ƒ~÷¼ìû¸çSõ&ž›½x[b]c£æ˜ÌD×?dïó·»«ŸáÏ×ac£endstream endobj 379 0 obj 2653 endobj 387 0 obj <> stream xœ­ZmÛÈ þ¾Í0ÒѱNÞZ @Ò^ÛýÐÞ.p¸³¨VÖ®ÕX’O/—l}9ïÍØ»‡AÀ’fHùð!9?o¢0ÞDìü·în¾ù.ßørlzö+)»àù–¯¢ÊO–Vˆ@ò0“¿U}uzž¤©i†Lµ Ï}Õµ5XàYhFò ä‹fàKæLî _Uk» ºAªEËà ô"%:â]0å jS·oš ŽT™¾âDZ¥lÝb'!7s0‹Ý˜åÍ1µýy™¥9Œuƒéyš›N/5Ç]M5·7 ‘YAò[R–E˜eÁ2ÍBðLYÐZøëzè§öìÙ1Äaˆ%Rð›TKõ¥\VŠU0zÅè ´!3cÈ",^¶"²‚0dLÂÜXÀ·[`=‰ÂÒ°2W(â ! ‚Œ2bën’8Œò2çïCh…tp4doûZ¨Ã,shû'åLJÒá‘ •…+£û“//šPÑ›-Á½ùçŽåòž ¬(PRéj&‚¼gœÇyI&yðK{“q£Sìbóql„ì¥å!‡ö7ÍþAd@Íî·» Q†ç–[¤qH"Ráã›2˜¥±8×ßqMÀµŸ³ß>4ÕršåÛÂ*$b½Wî K.º¥ìMà‚Ù”J4¬å‡(5¹ª»x+Åg]õÈbË}µO#ßïë¡;·'îÀ<×äFþyFÄ2ÜÕŽM'ÄL¿H”˜H7žÜTÜ’¸\%…à{ëEH®‰‰ž¡@õÙC8D½‹¾éÛ¹‘€Þ­–yèªYÀ_š†«"ØÇ¼ëâ¢?i9zıå6cs› a¢D©´a£"ø JZ2lj˜ Ü<Õ\IÈD>ÍãRÏË(0+µ}þ(`²ÎiÐúhçªíÅÑb˜R*ó!†ÅZ›~énS¦ !Kœl G,‡VV=qg­•mŽÕXÕ³Z6µü{iNB\âñze”¦ŸÔ¡£ô"İùž-T {oÿÐñzò€c(ml´¿ erNYf3Ùù®íkö´¥Å}ÌQ,TœbG¬9¢Õ4ADɵê¶ÒEB'ÇÚ™C‹‘¢õ.Ÿ„™vOÈÄ•–öYäaŠˆ){ƒsq/$²áVD\lL¿H € €¶ÝùOú­ Â ÂCF%á™#Þ{QdN'B†±"š¢è žš¾¹…YˆÅkóf˜·ë•ñ!+AQØqêÅTÊËÐÝ^":6ªË·2 Ò׫ÇÈ)S1Æ!¼LB^9áЋw‰<¿2lשÈ*^ÖP$…"Á¹ñC/Ñ”úùÈõ\¨ØÑô]Bâ$—CN.¹!éÀoµGË\ vˆ)4G¼¦f¹†Õ³¡2µ í¡’DÇõqQlÄ{€©Y4aÌ÷ä ä8€¾&ux²J\Èõ»ašåq£:–ˆ{heÊVI/%q7OÄ¥±èÙ֊ᔯÉè¥×í“Ty0Å¿®ò`¬Ý¨i=¶ŒC±†wý55ÈìÚFƒ’NÀÿ™G’÷:0=´cSϪ®LT] $å»O®ûùàÒHÍÑ.-±TÂ7ü˜&ÞOF» aÒ¢Ÿì»’ƒ€*®ç±‚ÒO•©©ºÇ¡“>—â#«fI3bn•eY2LN¶Y«¨s”~//«\b¾¸æ Ð;‡¾>NEwÐêÀD© ÆÚÙÀÔwÜÞ9®îzéÍš½ ]óå·¢…Êë¼ =[•;.éÕoYͯ/èOÇ4z…¡lÓüË¥`²ž~»ß»Çf»¾kXÑÓЭ1EÉ2‹|/œ$ŽŠ¨n|sry¾ ªK©Ç+ ^fÒì‡úi¨"e')>}æ?«~ÍÄàQifçã"ÓTˆçc‚Ù'ú•³t*°6e=H€cSV.­ñçvzïRAUÔìÌ2ßB‰Ž>÷-é«å}›¬(¶Ð-Æ‘vÅO÷n™ ‰ñ+-o{²§áʽ"V öŽïËŠ^6 dÚ_n)S?/‚ê´˜:Á¶Ñƒv”gÅ1Ý4o÷H†±}jÁÃù.fÒØ&/×IaŒ©ü‡Iú*×NƒÈÙ„¬ýÈ?å¼¹¥óU¾cz·L’@zð´sË㬒_þ9|xêÛÿèúÛ¤¶pØÔ/Œ&LjGtªGä€Éß«³+-†ÚK› ùÛù½›ò þç/ô+ âäq |:ä”N låì}‹"Þ ¾ˆËã{[c_*²2Ë,%cÊ­Æá_Ýÿÿ¢¢@×¥£¤š¦ÅÚÎr;”V="§fš\˜ÇÜdÉñT@jOMµâÓìÁ”M]AåæfWÎ ÀšÂ[¹³Ð(ÆYnœÚÏÊ·5øÈMÏý*¤e©Œp$~yP¼À;Áf„\>JÑ ÚóJ§èéQ³È£,ƒ-æc©ŸÚ -ŸÞ¨åpUoÀêr7ô üúÑÑœXg~Ü)ÿˆ¾ð“½·Ù°ÓÊò)ÞÿGíI‚ƒÔcûY…àÕޣ›"LqßêŠv¶?þäŠcx¤ ^B¿ÍLÌ –^”j²JÈÔºóZ:Í”ÔÕ9}\bà9‡(R²Ë²ž¸âl78æê³AI ¡Ð„ ¹8N$m§¦7#q¥H¿;·-\Ñ86#b‘æ¸%4‡|ýõÜ*ƒ–Þó!Š‚‹H#¨Y4¨Ö¦ù‰Tå{¥¯Áëï 4ãã0v[ŽÀ,•´/xR²i—­œÁÁê³kaõÔQ7+q7±fˆ0óQ8nu55“ÈŽPg¨Ù,{òI×âY0PÙÏ…dÏ|¥~ÕÇ-S5²A hr#³M‚IˆXU«XÚ+¡æB3U%ÝÔ̂ʣ4gZOhƒS3« I‚Ïv/—µÖ  œ³œÎ*/Õ{Ô©ø‘“s*«œkŸ–a™älÂÿ »½ÐÈjYï¹S ‡9ëiRƒÓâU$⬠¤µÐÔ?K*‘¡:Ãôp‘)¯ìTwo©«wð™ ¼ñ[UÄ8¬ìñY]±k4…tîU…ˈŒÃ´Ó™BÝ£ä8”–¥Ý'}0—Âd<à‹^—«Vjc²ºÃü]Z^zê]û­çhnA¾ÄÖí4ÁyÔxÑn6C"VŒ€³ºVvçØZÀ ùIÌSDóvÁŸÅc>eWÍDÀš¯kþòmi¾jNJSÜ€èRó÷XÎßE0¶§è>Êi"¸ýU\&Ï-±ë×Éò5J‰û‰« éE&.ÎÆ²ÍÉ^ß+h²ÇñokyݾÙÍ~æ×ÌEK)NXoN>û½y¨rþê¼”9VR6ÇÎÜ‹é¿^hî@Ö=®w ›„>¹uéôšB»à:_¯" ×â¯Ô¼:!Å„þ¿2LüµÚ\ÕD?yµZ—¾½¿ù'üù/pÐuendstream endobj 388 0 obj 3406 endobj 401 0 obj <> stream xœZÛnÛH}×ä#„y1X ›lÞò6»Ød1Xì&æÁ`ª%qB‘ Ù²ãùú­¾W‹m;'d“Ýu;çT1ßÖILÖ‰ø¥¶§ÕûOåú0¯’õ¯ðû°ú¶"rÁZÿhOë¿ÝÁ"’‹‡ÒõÝ~¥Ý’u¬Ë,‹k¸zZE?6gΦÍÝŸ+šÆ´Jĺ»Ý*¢Ä5’Å©k}íW6°©áÝp÷ò"¦úF3ìÄ•”ÄiVWúâeÖ Ó*΋$5kÅ¥:&ðZs©gß»¶éÅ 8Ya_Úôϳ:[JŠ837H&.½ÿ”¥™5oKaó¤ZÓ:®Ôùc8º|cÖ¬ûè?ã|“ÖuEô¼ùãî_+ –PsÀûèl’E;(™öjtÄ•f¬Ýâ«Æz6¬ƒa±ƒ˜Áœ¯¹À!¼y-Z¼ ÇgW(¸ƒFˆ•>Ý­+¸`ˆjû4¿4½ RP5"Òêõ…%‰.¼Qh ë—x“pÃ4D(OœÔˤæO9”Æ#ÏŸX{5 ïd¸J¥$) ‡©ËHþhpùžÐ,Ù›»”ÔÐk¹ÒÌkñd†Aï<^¦–-2R̺úÑÎWž4Ó¤?âË XјÒv ü4›±†žÆ¥ŠN_ÀK$eÂ6m³Jè1OBðYsºÕêuPg)p0N ×ßÄ ÍÆ|vm9=áÔÓ!5¼kãÞtƒnËs4®YtW`j¹è®nthÇ/õkÑÖ¥“!ŠqR±BðP¹ÒjÇÓùŽÆ–3Kÿׂ"Ú1ñ]`bó¬S´$¸ÇÓ½«—ðÈôl‡°pZ¼>0º©Ñ£›&ƒçwÚ‡à]²¤ƒ*È^(JX¯›/ƒ¾DÚ™±E޳¬oþêôŒ¿ò¦KËà—þèéuºhR’á¸ÐòöØÑ|nZõ© %F¨4³CV2„•/Œê0Rž’@Q»¦Â/5;ú…úž—ì n>u9u­'Æ/“Ñ—WôçÍK_„<{Ÿ5n…M”ÝÉ„‡Œë4LúÀ»Öfê:Aye‰ŒEa!&cÚ‰ÅÚPÇó®7rƬz0ååa…¾›´èÃ;þæÉ¾]@óQI¿À?¯?l–ä18{!ìp‹2 ›„9Zéè˜*hó«Ñ×Ó¯Àáe‡×./d ú$@Ô'Ãjv¹îÄÛ#Ø> ½ Tb Q/r1jÝÌ7ÀÔææ€ü­¯coºG‡|efÈTÂùßºyØÄK õË^s¨ÿß?‚ƒÚ«ˆ£;¡–DGYënŠþŠ>*6]??9¬ö€/¤]%aU<ì Lø¨Çb^›ê£^Ï „% #–íIs‘ }ú»Õá×ÿ¥F±Ñendstream endobj 402 0 obj 2655 endobj 409 0 obj <> stream xœ•XÛnä6}oÌGô[ÔÀ˜)ê6O™ É‹äa'~ë,YM·ëÒ£ËØÞ¯ßâ½Ø’7 ’Á¨E²XuΩSúº ÝÇòù»îv·_òýyÚÅûÀçÝ×U/ìÍ_u·ÿá^¢©\Äö÷;½ô†îËxŸ' )ái·‹(?Üÿ¹ã1')ƒßïO»è·»_Ä«|zû¥ÌÜúó/I!_;FŸ/—ÃMR–%I’Hô§æõðïûÄIY˜Í>Ë'I›ýÑ]àq“,f1>VuÓŸÕÒ2'%-K³ô¥™ŸTpœP·:ªz§>6–‘ÌÙVí¸ ?)ð+¿Gô÷ƒ|'¡$.bj_ªqf-JÝMBáNÅžúew/ãxû¦z-c¥’lÚr“]GE3’úû¨†S{½«yP?ñœä~É£~HSR¸÷Ñoõ•%$"‹žD'TÊ!/Ì'à©šÔºÂÆtŒ ÆªXe$D¯Ö@Èwg½ŒÍ< U•$'÷ +²èM­£ŸõãÐ5}óuQ9K9áî§côðÔ8–’B‰ZX€'„©å÷Oj!¤7÷%ø)i&S±Ä¿^Õµ˜¦æ¡U[ñÅU³zŸ¹êÌú@úWéäö÷/øÁ$?X Saé<¤¾äúçž©þÌÇùòéöþOê‰4@±ª¯ˆ8-+QÛƒ£¦×‘‡qßaHQÈÆy™«Ÿ>è‹Óœ¤>)¬#Jì•n/ËÃíTËëÞŒâb.u['q-Ó2ºm¢TB&Í£óm{9Ê“2ô߸¦º#îs5º·Èù?*I!Iòjiüލû°,‘z· ‘àªkî¨Ò‡ 0?éÔ–K$.£NHI2*qR@¥„"Ê ý(G7[ì¾8„ š9 ËÍãÒ×s3ô“AŸ×ÈhT<Øv¸ .ʈ>©M¹Ì€‰ß`œ#5¯M]µ*)–€Rû6iZµ@Ü3ªÐa%Ά§¢KüýiM<­Ê 7¶Hb5 YŽïe÷$ë+Ûú1¬©8HN1L·£;FKù2Í:é¹W³¹z>¨ÆE$¬˜á‚á=މóÒ¼©U¼ŒôžÐ±Žl¥dó2öšz1#Œ{íRe*Õ¹3ÃóA‰E ‘-ƒò‹Êk¢ ݉SÓ g¯øQ3¯»”ÑAŠ¡øhʼnŒ ¾Ò¯‡,ÙÚB¼Võܾ™.€º—“Í á®òT¹’}k4*¿p5ßb†G£ÅHŸ·ö Àžx‘ A„¢x“Dp …e>èEÕxpA›æ‰ó+et*ÖW¹ª+›(Ãÿïr|¬vYoñª{‘ XÔÄ '¾JF\~ŸcÜœ%R‡ uj«$PƒÑö•›«F‡bi[•µxŒ­W>*$ö©£aï¼ÄÒlSµ(âRu%–Û eÝÊ~pC Ã:ùTÚ^ýóGùc&÷¤WÞÀôX꘾Ië$&××Êüµ’< ÇøÑò!æñµcÌ¥‡ôÖó};pÕa h˰òBW¹JpçÛÎUÐëÓf®à¨t夸ÂÞåS6MRó<6Ë,©Ò‡~g­Z¾’9ûЍ¦·µ¹.ËP(£˜os\)Bb˜¾É©m‚¾yŒêÁW⮾}¨ú–q‚9‹“k6¤X L³`ÀfK7¡Áø‚ÚP¨~Åu«×3g8SÓë¡…å+Îc_äUÔ9ž(Ì€Àáüaôe¼F¨›`i–ZG]`G]b]¥e‡`´º&Ò2̸Ÿ…:žGË—»ašDÙÊÊcÖ{3Œ …õ§ú½Ú»*ƒ„èïh<}g´€çžBÅŠÑ8Wl4Ó“øÐ7®Ä)èÚl ÇèÜ|sžHW È išÈ¾êÄd‰èi˜—lȂ밭ú&R4âôÚ*ØëÛ½ã÷Û±hCiùlö¢ÛãM1Ç’ ŽØZ-ÓÕM!¾A?cEð=a;uN¨rÏÓ•ù®°©‘)DÞÓõD´å0žtବ›-BÃÔt—¶y|3^jÓ,úTÁ¤i…Sš¾rÚã[ø)_ØùÉ~{àA5ü™9¢æûãWŒG@[1­$áÇ.––Ò ZUÛ~û­´œGÏ0'pyË¢°Îg¡FùkÁ£yZO°@V%øÒ6%ö9(ä¥=iLRω¶y¶—3â "¦bAq¿ý³‚òݵzg÷¨º±:iðñÜ!×p‹n 5§­l9\ƒR&óéƒ9ÆûoTe°]3š˜"tLËÅXhÃ8[¶®‰q3Ààʣ˰´†èOèñî “P3ùi²ÇæÒ770(™‹³Þ¯Õ8ëãÁw£ç¿T£¡6ˆ…Ç}Êäµa »´ídòË[+Þ¬ÑF׳9Ì®\›ÉaL,XOÅ8,“d¹ï¯Ór>‹iöý•e)IÔðÂVÍx¶OƒõL¥¬½Í÷~%ÆÅ~iÚv£8kÁñúù¸´Æý\ð̈ۦÓnC¹¸7kxýPùÎ÷;ðÄž“óXuÕˆ&à êj-‚`ˆ›™TFºßý þü¯¡endstream endobj 410 0 obj 2059 endobj 428 0 obj <> stream xœí[]oÛ6}7ö#ŒbJ;³ü”D hÑ|lØ^ŠyKZ@UÔÔ­-µ²¼¥X÷ßGR-Y”ä%vL§BÄ®(‡÷ÜsϽ$¿Ž!@c(Š¿á|ôüÜß,Fpü›ø½}!e0.þ„óññ…0BL>„ÇFù£4æp츸:9¿Ç×ÑíÑŧÅ@_˜\\Ää¥ççÜÕÏO ʯlô“ÏÏ)ÕfpL|àû)›Ÿ‹ûW hýîêqø„û4ÿ—8š Ä9T}ÄœûÀ[]%ë+¿ŽÉàíÅÊ÷+„!ΓˆSà  hM0Ä@>@\ ÇQfWN ÄXÝÂ%¶¯Žš°ó渻Ç3݇g°€ùÒÏ%ÀÈf{ÚIaO ³ÔýPX7Â0…X™N„aÂî†0Ía¯úrä«dÈî ²ËN+ï²Õ] \ê’c6]dÒ1@=îW“êT²eÅðCˆ¡ÎÇ Â,JúŸ¨ /Êàb ·M„3๰”9©×¿XgÐ…ÌÄl{kˆqñ:düZæû§2„ ðU ZQ3mŽ€­`q~éáSs¢@]Žðï.‘c™‡Â`‹ƒ™j\oúHÈîa°!Hã`pŠ”}’V”¹Àm)HíõÍa¹'r9€ 5™°^|ïLžßyö#€é~ò¬bZŸ=é+žôñØ"Éy ‹é–rÌÉ¢Û¬94r+’mõîvvƒ>FïYf`C€±~åæÕÀô¬“¯ž |5ðÕùJ§Äw{7@l€XßÚ‘[SÛÌ¥l{X.ëcÚÊ.^]ÎÏßœ› @±ÒÕ-PØ/oXè‘ýÐãnÊYáuéf×Ä ¯Ãlš² ö)ÍË$<T,ÃÝÿ‡ŠG€KJ¨à ÕG0›Ôž4xœõΨQ‚tþqx,†$÷úëY¥qMÿ:Êg9ÑÂP¯0(MÙþÈêß{ Âä2g­ëkÒ½²®#N–̧¡ŠàJÕá¤ÑÍr¤r"Ê œèöK-ÆTB‰x•¡zåÖLÞNÃKv«¿¦âéÚ/ÓõqWº¾tŽƒPÇÞçÅ,X|4Ä_SôÖ°Ýî{À~’+"­Þ¨F%–£ðÝLãxߨƒDm^_ß0ÅV+t³i¬ÖíTó¼ðÿ'tÒBp¤œÚ“r§_øÊΙPÞÂP¬@@[”é ·«%ˆ¸ÃÚµD!“Y²X¦Š‰ˆà¬?­6yV$?´S]m© çu lØEu0I¦9Ùž't¹Oz›Çuf “ëÈ"›u­ ´O¼­@à zë¢M³i2[ÎU° t†µÔ_ÎõÇ÷â•òå·¨Áâz»öVe¥…á¸Q(|äizuÛKµ“d>bY ÈyÌÌ5“lüƒÔIð²à¨ÖŸ3vìO’8 ²Hv^ò¼ç¢jþ4åÔ ¨AHQ¯‘%ö+Çrƒä_Ÿ «tfë4We´L—@—q‰RM–ïŒÌ_ó%Èd›Ë0=5õ~@eÒ–rg€k€yÒH· O’euOCjjŠšÉmÏ%ÖÈCtÜÖ‚OÒÔü1lªïÜq© ¤Ýi[}W֧ч`9Ëcµ¨ ‹: m-Êm-ïÍã–C—À•7ê—"Îi2ŸÆÓ¯KUsP·ÕÇɲr~Ϭ)©¹9Üë^»çs×ÂAÄ“Ktç…VÔÿºw²f<Éýúksn#÷îvñwÿnÝ5{û2]›Ìõñ4oB*:.%P˜FZk qD;„fÙÝ4É%ž·±M.u°¢çÂü²™Å;Vs*ϳžŽç¥s‡ÉѤ¬ÃU_Y¾›BÐ¥ñ³QqŠšWŽèïg¦þOõ¢™gíöÅ®ú€zšQ«ý”z{í,¾V“Ϋ«.&ïü”»ÑŠÄÙh- ÑuÏ.ËÀåQu‘ê´‚¥ SJÒz·å5Ì7lœmUïXå›í*f]Út©ŽÓ4MTûÓÚÎ¥CÉÚnû;XÚbwu1õ„j.>»ý)~þ @ùendstream endobj 429 0 obj 1809 endobj 537 0 obj <> stream xœí]KsÛF¾3þ<‚UádžàºU—'òJºÉ{€!HFÌW@0%í¯ß<@„$>@š¥r‰E7±{¾î¯{zš1"c¬²ßþ|ôË?­GxüQý{ý="‰À8ûåÏÇÿºSBDè‹èøîq”^:%c%cÈUïÎG±'w8æHPõÿw#ëöêSð¬ßýå†óâúi&Ã]ä$b¿f"Ì.dÔó%"ÂMî•„p]1ayëxòß»ßFTIÚ8·ðf/ë ÊoT>Œqd;˜¤r÷šL u]ÉúK’< þòxïÍ´Eª$œ"—ÈÌ>„jËL‰+‘rL(²ë†Ý,ü8\.~NîÅ ÂL?½:\¬6±¾UÆÌÞ{Œ–óä-‚œRÒk.qc§eI_‡¬ƒ’…Ökb47ˆ'BÛ@ªQ˜‹ òâpñ”øu¹Oý–ÔHÌ-aÍ‚çÐ÷f‰ ÄÔ»Ë95,Uåo°‰CµIx¦' ÅqæjÀpýÉS=ǹ’•ó-ÿ½åO(Æ1n}ó"σh]<§Ô¢¦,´}ñˆïórT-I™{9Û°Yéä¬Ñr³ÊaQqlQð´™yÉJgÄÄ@𼊂õZùÃu Z|·îl0úT°¥“!ÜÜRª\§tKW[¹ÃÕâ!XLÒ‡+öt”IƒŒkPdô6ß󒘀ªK àéOÅècøx’Z,Õ(5 ┹Z„qèÍÂÿ¥ÖQ2‚§/½lù˜G”1%þ$oŠ è ¸f²AinwqÄF‚äúpëú.ÂÈUNªj+›#Vè8‹±ãC}ÚAéö$ÄI†˜kWÈ]Æçlr9©Fä¹·Vµ\0F˜ZË(Né8¥¨'/™…‚bsu©§“vî1T¿Ïº‘ÕάÑÈŠA¬õË:æ½BÐRûô2PŽ«˜XÁþLWk›–Õ$ã¶¥H¹fÿLÙÌ R.b#lðŽ®r†[A<¥¯!@ŒtDv2L¡5­Å~ß–ûþ> Tö›ðxŒhIGüÙr½‰½ôe©¡ê{`ÛÊR­ †Q÷ø”ÊÁàÚy³¨¹>¨Š ¼àª_,òe’°Un”0¬•e(§Ò Oi)e 9·’òÈ ÆåºÑ2A$è¾üìçiC\ѺÕLåÖÍõÃëeй‚„Ûz.b›m¢à1ˆ‚…u8Øþ ÄöfF&–ÕO€ŠYj†?¼è{q> ¶ÔEŽNr/.÷d är©Ñ¤ÂÛ\®^*íJnäRë›>˜ôc#í²üåâKú€£­|ÿ.ÊU{$4«W9Óîð š_c½{kÄߖꩲ ~M‡Ò`ƒõ3îÉàf§PEÄ5fÈî$ºˆ´óÍ,gÁ3ZûÀyá vÚQ¶1ÕÇzLÉ7‹ŒÐp‚$¶ZnËqþôÒNPjWj"ʽN2pþSÎÏ +\'…k;Ù½ZÇÏÎÖﲪ2ˆ]4k8?gzéö²¥c)k±ÜUµë¨†B¹úU» `ç>àz›¸þ Ü„§õèª:µ¥2°Eq8ò-e•q°Þq½Ò®=>£‚ /rjsGî™ÊYÀf2EvÃç4>ÇPø »úx£tt×4 œŸa¬9_`(0‚·(¿%jÛÜœ%`î:TÉóuô.¼è%[™0ÔKeBÎëÇs¼ÆRç+¥?Š¡Ê5©kƒöFQøP䱕Óèà åýà.@r ÏÇ1vûHˆŽ©þ–#æ)uù¼…ºÜ+‰äq*%ñb()é>Övj~uûyÚ¶cm­›4æ*XF±÷5œ…qñÎ ”§ŠÆ ·}´Ÿìpl{ŒH*t­¯:³½K§ˆ««ÄÖ3h›Çi¤¼C˜pj0ß/¶…YˆlNAÁ½õ|˜"0'·­Œ±í+Bj‘^C(X ÕŒ½­(\ˆf%¹åÙp˜Ï]T©ÙúxÜX}îfìÍ¡…>¨cÆ­Gå(ˆã­/ÓUf­V’YqΨmsR«Á¨]cžaËÄ jWÇ}JqûP½KrŠÂpcbZ?GË8ð‹‰Ã˜-Lʭ¶~ `tc„èý›m5Ú£ÇÍn—-5¸ŽyƧÆLlQ]ï¨^ï&XM¦E‰Ãr¨®Êý˶&hn+0 ¼ÇdÀî îP tšÚµõšv íº•-®›MÊ͉ö~;¹÷V¯cä÷Ç7ߎs€J~yÉb'ë¶ÅKÒÔÆ·þ2‡žJÒì ¤%âxí[ªˆ›]…•ÁsEÇ'8x®QMÐ,‡žÅÁÝ^N›kôh&ƒS£sÏd}~:x_¹(ÙA¦j«÷ÖÚ´°~ðˡ傚¾ôT ¼1và±…n €ÆèW ßí÷p•OÒWÉÙöð0ܘA|XßvPèíÛ´ç¿ÿÀ©ò…Ût¬tÚüZ[Ѽs1³}C;wv×;ÓeÜ8qFœ/g%·q”A¯ÑAQcàäÈëáøæ~Ëz6räÖÊG¶’>®êÐcsD¼ñ½¿±I¼åëMηÝ&Sü¡89P­˜Ôò¶Û£½Ñ{NkËØ,Cu³×@z7K1.oc)=ÊZƒR|g(”ŽÂ€ÃL7úï»ÑÔÏÿ¡®¡…endstream endobj 538 0 obj 2583 endobj 586 0 obj <> stream xœíWMo›@½ó+8âC&ûûq­TUí­UTU= ŒZŒ°%ûßwwY>\Ö%§¶“XÈ/o1ïÍ›áÉG€}¤{NÞí÷絇üOê7÷žÀ)Ÿæ¨E¹ùß÷¸=s!U5dÞ÷–h2tRÖ44 ØnÓe±^”Žv¦ÚÞP¡™/ËaÎJÑÙ.m„ªÅíL™»¤fN ¡í¢šûR}¬=Ó|ªž×ÞN1gõ8"j„:”ܾ°Õ_ê†änY¿žo¸·nù;×ó,{VLë·3õv[ä¥k8¾êá=éa`þËÙ¬ÎVׯÿzÇ6þ¾7¬²ƒù«¼W/X—îiáê— 8È >ÆÞWuü*µrKendstream endobj 587 0 obj 747 endobj 599 0 obj <> stream xœ+T0Ð3T0A(œË¥d®^Ìe àÄé\…\†` P*9WÁ)¨ÈФÉH!$ ¢U×PÁÒ@ÁÜØXÏ(šË¥ah¡’Åeb`¢gj”IáÒöôI­‰º†p!Rendstream endobj 600 0 obj 106 endobj 604 0 obj <> stream xœíZMsÛ6½«ùN¨~ hëà墱ú æóÑ bš çQÃëIXMçә잜 –"‹Ò`¾œ,Âù”²,Ë"æ­ÊéŸóŸ&1‹dJÔŒðD¸¹PS0‘nl¾ÚÔS®>ÆyØ”ú:$ ›½žáù{!ú&"J$a á™~oHõ¤"bj ôÝ'3OÂÂr÷©*ÿiç’”v“Éþ3ÂÛµEj–D­–¤î€yÅ­C±$TŽð©§EŒ{¾)‹D.Ø3Ó(‹³€Ã==ÌêM¡•‚Æ­ù{U^WE¾Òf*Íë|u³/wÃì ÕÖÊ=ѹKÔ6äÒ;q´ðm¼«Mzäx?¦Ø(]Õe%±ÉÜÿG^/ØMØ™ìzÞ(=·KÏ.‡dëÀdÆRš 13à ´Nó«VùPq¢ØW‘1@#X¢’ÖmìÁ+ù'¢¾×ÇDÉI×똶Þg'½ïúûâP÷* <ˆ(£ª[‡$›7q#6…7ÊÛy…Ù‡¾J¾”6¦NÀH’&SS7ÊøÐÎØÄIgŒ‘Úí¼.‡9.¶A—!•ÊÂ/T¡úTÀ‰³ðFOŽf½à¤>åÏ=€¤>T¬ ­d§X3õG=óåÖW»²Ó¨Bà„é@É¥ØåM¯¬n†8“•Lgº¬â#1ß™:;¤LxLÍf†²öé\v‹’™5êœÁ~ hÀ²h¿â´ Á»N=Ð‡ä ™Ÿ3K®”%‰t¢Á“_ªÕ²ùÖÒŒâú¬+ÛXŠŠý[¤'´³õÙxš)é Ûµ£ÆVÒÛ‚{/Ç⥇r9ª”0̪MNú\á†$GÂÂÓòz·í5¼%‚¦Ý†@,uÙnnl´ØŽy·ÏÐTkO›(îx3ìTåcuÜ}°^ Ul×Ý ±žÀ¬Ç}àçª.l['˜Õa­ýËSÌV^*Üü°/›– ;©ZlµÙSeIØ(ê3 w²”ßgà¬RŬO;ô8íàØó(ƒEøº.6Ó™5Öm@c+ßµG¡ÄÐ¥Ýç9v§‹ñ§Qs>8 ì/•0ë6-)Cögn Óþ"üuW6ÍÔ¶aÛªJ8Ç9·»ª­»d6{h߲̀ŜÓ-¢ÎüãÀõ÷Qli$ºr˜r”¶îòôâßÖÛCcö,¬×esµé[êK/çàÍ¡A::úy€—ÿËêžR8ޤ–Žº7"\˜îMÛX„/¶¦ ¯[úe½¬ÌIÓD`ô¢MoøŒÙ[}<«üv‘–RÚ ÿªæJcT:]äÚökR,“º"_í‹çÎYÕ!ý0Õk’8=oó·4cRÀšÀ@ºˆüÏM¡Q!8£¥>-bD‹ðw+©0¹FpuЦ?‰þ¶^Ú~Ž áÐÁ£±ÝÓ"Îr©_7Rô¹×óÉoðõ/~Ií&endstream endobj 605 0 obj 1701 endobj 624 0 obj <> stream xœ+T0Ð3T0A(œË¥d®^Ìe àÄé\…\†` P*9WÁ)¨ÈФÉH!$ ¢U×PÁÒ@ÁÜØXÏ(šË¥‘™©’Åeb`¢gj”IáÒöôI­‰º†p!·»endstream endobj 625 0 obj 106 endobj 4 0 obj <> /Contents 5 0 R >> endobj 51 0 obj <> /Contents 52 0 R >> endobj 91 0 obj <> /Contents 92 0 R >> endobj 109 0 obj <> /Contents 110 0 R >> endobj 183 0 obj <> /Contents 184 0 R >> endobj 233 0 obj <> /Contents 234 0 R >> endobj 253 0 obj <> /Contents 254 0 R >> endobj 280 0 obj <> /Contents 281 0 R >> endobj 303 0 obj <> /Contents 304 0 R >> endobj 310 0 obj <> /Contents 311 0 R >> endobj 350 0 obj <> /Contents 351 0 R >> endobj 362 0 obj <> /Contents 363 0 R >> endobj 377 0 obj <> /Contents 378 0 R >> endobj 386 0 obj <> /Contents 387 0 R >> endobj 400 0 obj <> /Contents 401 0 R >> endobj 408 0 obj <> /Contents 409 0 R >> endobj 427 0 obj <> /Contents 428 0 R >> endobj 536 0 obj <> /Contents 537 0 R >> endobj 585 0 obj <> /Contents 586 0 R >> endobj 598 0 obj <> /Contents 599 0 R >> endobj 603 0 obj <> /Contents 604 0 R >> endobj 623 0 obj <> /Contents 624 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 51 0 R 91 0 R 109 0 R 183 0 R 233 0 R 253 0 R 280 0 R 303 0 R 310 0 R 350 0 R 362 0 R 377 0 R 386 0 R 400 0 R 408 0 R 427 0 R 536 0 R 585 0 R 598 0 R 603 0 R 623 0 R ] /Count 22 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 49 0 obj <> endobj 50 0 obj <> endobj 89 0 obj <> endobj 90 0 obj <> endobj 107 0 obj <> endobj 108 0 obj <> endobj 181 0 obj <> endobj 182 0 obj <> endobj 231 0 obj <> endobj 232 0 obj <> endobj 251 0 obj <> endobj 252 0 obj <> endobj 278 0 obj <> endobj 279 0 obj <> endobj 301 0 obj <> endobj 302 0 obj <> endobj 308 0 obj <> endobj 309 0 obj <> endobj 348 0 obj <> endobj 349 0 obj <> endobj 360 0 obj <> endobj 361 0 obj <> endobj 375 0 obj <> endobj 376 0 obj <> endobj 384 0 obj <> endobj 385 0 obj <> endobj 398 0 obj <> endobj 399 0 obj <> endobj 406 0 obj <> endobj 407 0 obj <> endobj 425 0 obj <> endobj 426 0 obj <> endobj 534 0 obj <> endobj 535 0 obj <> endobj 583 0 obj <> endobj 584 0 obj <> endobj 596 0 obj <> endobj 597 0 obj <> endobj 601 0 obj <> endobj 602 0 obj <> endobj 621 0 obj <> endobj 622 0 obj <> endobj 626 0 obj <> endobj 627 0 obj <> endobj 619 0 obj <>stream xœ35R0P0WÐ56T0¶P°4PH1ä*Tò €ÐÐÈPÁ\Ï$ $“s¹œ<¹ô=}JŠJS¹ôÃʸô=@ª¸ôœ€”K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+ê±³ãòtQP[q µ{rÈïÛ7ª««¿oß~ïÞß·ÿîWÿ]¿ýïû¿ÿîÿ¯þÿý÷ÿïÿÿï¯ÿkëÿÿúˆÖÿÕýõõ—ýÞ¿®¯Õ¿ô:VoË–]×½½3KEÕV:°08p¹z*rE\ž endstream endobj 615 0 obj <>stream xœ33T0P0aS3C…C®BSrMõ t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYH¹DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.O5Æý“ƒ¬˜][·þGöÿÿýúÿ_ÿÿ¯ÿ·oß¾i KNè/qÿÀÈ Àåê©Èšr@D endstream endobj 612 0 obj <>stream xœ3²P0P°bCKC…C®B ‚@ÊRÏPA×H$çr9yré{ú*”•¦ré‡e¹ô=À¤S€³‚!—¾K´!—A,—§‹?ƒýz ü õ 6 \®ž \'¦è endstream endobj 608 0 obj <>stream xœ344W0P°TÐ5R040b…C®BK  °o¤`©g”ɹ\Nž\úž¾ %E¥©\úá@U\ú E\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÇÎŽËÓEAmÁºl¶žæ,× W…#Ù6-m‘:ȶ¡Ëám¢(ãÓE1F·q˜mHn¨â|iËòeÞäKUþá×=__ªÁë—¯ÿiÿÿ×Ëõ¯ÿÙÿÿÿÿÉÕúßÿŸ‹ý]ÿ¿>»êþ×Ûë¿]/ÙöïÒýÛÞ¹º[¶]O\ºMèFfb›ÐDÖ6Õ Ó$=8Ä$Z›¹ytÚV¬sÜrÌ1nC—«§B  kÝ endstream endobj 505 0 obj <>stream xœ33U0P0b3#cc…C®B3rô t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-©HKhK<&ÈÞ’3Ãíä µ ¾'W^Ú²>i˾ËþÿZÿÕ ð岟ŠÅò®‚ûÿ¹\=¹¦ÁFú endstream endobj 502 0 obj <>stream xœ3¶P0P0VÐ5T06W06QH1ä*Ñ aSc=C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]ÔI6 8|èã±eâ}aývþÿüìãÿÿ´qœˆÚàÖßÂ}ˆûBÜôõ×åDëÿÇ¿-ÊZqèÛ¥\Ý S*’flâÑ`hààrõTä#‰9˜ endstream endobj 499 0 obj <>stream xœ32T0P0bC S#…C®BC3 ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶¬âø§¬ßÿ±—G&H?`bPàrõTä K7¸ endstream endobj 496 0 obj <>stream xœ3¶T0P0bc c#…C®BcßÄ5Ñ3TÐ5ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAm‰ëCö_äk~üã}k'ÞýÏùuÓƒ±%òn5zÚëÿ¿M¹jú°éoÖ݇su W04pp¹z*r©,4q endstream endobj 493 0 obj <>stream xœ3¶P0P0RÐ5T06U06QH1ä*T06 €DŒô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[Ð~P¡ñ¡œÁ|G¶¯{Õ¾Ìþýòëþÿ}ÿÿÿó Ûÿ?Wÿûºë¹º¯[6æÐ1äfãbP`ârõTäE5m endstream endobj 490 0 obj <>stream xœ36Q0P0RÐ5T0"…C®B#K  ‚±©‚‘ž!PH$çr9yré{ú*”•¦ré‡qé{Õpé;8+ré»DrÄré»é;;»¹66úÞ@Ý\úÎù9¥¹yÅ@-vv\ž. j Ú’2²1ø"`¾DøRl­~ü²­ò¯ìÿÿó þ{èý®wÛc·l»t˜Gè°À†„L \®ž \µŒ25 endstream endobj 487 0 obj <>stream xœ3¶T0P0Q0V06Q01VH1ä*T06PA Ò3T0Ò³THÎåròäÒ÷ôU()*MåÒªáÒ÷*áÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j+¤r”ó=¹ÊÞöíÃáÛ‡ùóóyl÷|û&'½ê‚-š.âööæÐÕQزaŠÓŠPµ \®ž \£p2o endstream endobj 484 0 obj <>stream xœ3¶T0P0bc33…C®BcS ßÄ5Ô3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶BcÿäГÙ¬ÿAöñÿZöûÿÿñÿÿχöÿßVüÿ?á|Ý| Ì§–ã“C01(p¹z*r—ï>stream xœ3¶T0P0bcsc#…C®Bc3 ßÄ5Ô3TÐ5ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmÅœþv1 Çãj+Ÿt¨ßÑ~ùë×ÿ×ÿàÓ*޶Öå?M=W04pp¹z*r¬ 7 endstream endobj 478 0 obj <>stream xœ33R0P0WÐ54P05Q°0VH1ä*T01Š(X+˜ë‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔΥSš›W ÔbgÇå颠¶sCîrñûj+ÿý}ÿí?zï/ ý–ÔïßÑŒ \®ž \bX¡ endstream endobj 475 0 obj <>stream xœ3¶T0P0V0S06U01PH1ä*T06ŠEMŒõ Lõ,’s¹œ<¹ô=}JŠJS¹ôÃj¸ô=€J¸ôœ ¹ô]¢ ¹ b¹ôÝôÝ€Ü}o] Œs~Nin^1P‹—§‹‚Ú‚g_þƒ§ŒG?eMs´†ð²˜¸\=¹c--— endstream endobj 472 0 obj <>stream xœ3¶T0P°P02Q06P01WH1ä*T02 (+Xè)=K…ä\.'O.}O_…’¢ÒT.ýp ".} $—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQPÛ(##&È.6ÿÿÿÿ~¾aûÿƒÀ·Y  \®ž \Ø(Ÿ endstream endobj 469 0 obj <>stream xœ33R0P02WÐ54P06U°0VH1ä*T°Š(X¥ô A’@29—ËÉ“KßÓW¡¤¨4•K?\Á‚KߨˆKß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+V°°³ãòtQPÛUXÿž\Õ]ÁÐÀÁåê©È\@)w endstream endobj 466 0 obj <>stream xœ3¶T0P0QÐ5S06Q05RH1ä*T06PAS =C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j+ΘqX<¹ZdüàÞïÿPPÍ?·šïßqc¡¦×P¡¯×Y6míÑ4uXÀÄ Àåê©ÈúÈ:ñ endstream endobj 463 0 obj <>stream xœ3¶T0P0QÐ5S06Q05RH1ä*T06PAS =C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j 7&ÌÑÑÛâgÅz=þ?¬:¿&´\m÷‰É‡«¡BÿkßÈ[]ðáCƒ—«§B (3:˜ endstream endobj 459 0 obj <>stream xœ36Q0P0UÐ5T06¡C®B#K  ‚±©‚©ž!PH$çr9yré{ú*”•¦ré‡qé{Õpé;8+ré»DrÄré»é;;»¹66úÞ@Ý\úÎù9¥¹yÅ@-vv\ž. j ž%·È æçdû²Þó˺ÉׯÇMÿßuÜŽ÷oýã=³–ÿz7=3oÚ­h¡Ã01(p¹z*rDJ3| endstream endobj 403 0 obj <>stream xœ³0Q0P0bs3sS…C®BsC ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(h%n˜ÔÌðà¯Ó\f‡:Þù‡ëîßßÿßýÿÿƒ@üÿ—õ__}Yá}(ŽCO»õ`AÌ+®ýÿ‘Á£ æø \®ž \~˜L¼ endstream endobj 345 0 obj <>stream xœ33U0P0b3# …C®B3rô t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(hnýÿ_m“â¼êCoË.ÝöÎÕÝõeÛ¥Û±[¶]º±nÛ¶í·ÿîû}ùº¿û÷%÷&Wù~}i¾äÞZ ñ+H™ÀÚöÿƒ—«§B >stream xœ36Q0P0bcss…C®B#Ì5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶h7‡­­ýåÿÿÿ®¿uë0·üÿÿŸT•ÿOzÿÍ1ÿÀÈ Àåê©È#Š>Y endstream endobj 339 0 obj <>stream xœ3¶P0P0b3ss…C®BßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ aN$ïÔ‡6ê-æ &_÷,½¾ôÿÖ¥¿ã$âìÿƒÀG-¦úÉ\Œîÿ1À¹Éÿÿ1(0q¹z*r¸âFk endstream endobj 336 0 obj <>stream xœ3³P0P0QÐ5T03V07SH1ä*T0µ (˜›+˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶p[†%¯Êÿÿ?Ù™ÿ‡?mM6Mmþ(üQ^pÃñÍ/í&¿´[¿ôÿÒÿÿöÇ„(S[ýÿÝÿ߯»õëíºÃþ9J>æm<‚‹n´Ž1ØÉóbrƒ—«§B žÛX" endstream endobj 333 0 obj <>stream xœ340V0P0bKKK…C®BK ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶HŠIˆq§‚„„BBãCƒyÍŽ/~šÔÌPxÈį¶ÔëÒÞ‡æœû½½¿ÌU´hýÿUÿ­ÿ$q‚Gn\ž]žmÿÿÿcP`ârõTäu6U endstream endobj 329 0 obj <>stream xœ35S0P0bS#s…C®BK ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶s‚®É£Ëÿ'‡Ìº•­ä#ùaºw®î–mÿä®ÛñÞIÛ¶ßz½×¶äç“/ë=¿æ¯¾”~)õÕ½j_öçkZ(Íåöÿr•¯ ƒ—«§B $¤B endstream endobj 326 0 obj <>stream xœ35S0P0VÐ5T05R05PH1ä*T0± (˜*ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ô.˜Àã¡§Ìa£ð¡#å ‡ô%Þj_÷ª}™ÿÞûêþÿ—þîÿS/¯Ø¶ü§iüûï7Iîü½v×Û²K·½suÛ„³qæ„IDl’fnà`hàrõTä#Y?ƒ endstream endobj 322 0 obj <>stream xœ33T0P°bS#sC…C®Bc ßĵÔ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]ÔÄÜHÚ£'Îz¢Yùçå³ì“âÿã?]ëÿ1(0q¹z*r€R@ñ endstream endobj 319 0 obj <>stream xœ340T0P0WÐ5T°4V°0VH1ä*T°0 (X˜(˜ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶pE ¯'[S…º-h|(ËÐð¡‰Ç–Eú¸”ï¹Wíë^µ/³ÿ{îÍ_~íWmþßüåÿ£ÿÿUûÿÿÿãý@âÿŸYkËöÿÿ÷õöÞú·âß.ý÷uÛôì½¹K·M» ¡xTÛx"²¶)&¶6³6³N¸¼ŠA‰ËÕS! å¥^£ endstream endobj 223 0 obj <>stream xœ36P0P°PÐ5T06V05WH1ä*T02U ›Z(Xèå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶°™yÁ×ûã_ƒ‰OSx=W´7…ÿú[¿þ:”¨é”­µ?VÿúúëKwýŠ^º‘›Gƒ¡ƒËÕS! Æ+<Æ endstream endobj 220 0 obj <>stream xœ3±P0P0bccK…C®Brõ t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨mˆªúÿõ|[ë˪¸éK·LÓÌDÉ&“—^zY²+–§fÖRF.WO…@.W™1à endstream endobj 217 0 obj <>stream xœ33S0P04PÐ5R07T03QH1ä*T03Š(˜™¥ô ’@"9—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j ®øq?1ÖŠP¸tH]Àô ï‡Ù1*·^¨Ùªm˜ü²ÊéK»©Õ/«âÅm½üúÿ’ý?^Öÿ)ýÿõ‰Ùâ¸}?MC}½·;~íõ\ýµ[o{çên˜v+:‘uሄƒ¬mЉ­nT04pp¹z*r sPR endstream endobj 214 0 obj <>stream xœ3±P0P0bSCcK…C®BSr õ t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-VfÿÿÄJÒñVb>w‰xé®èÌò襷€èMØõè↑^Üû²~ù¥½ê×¾Ì÷Ü«}õÃÔ‡ùœËÅ8zì?02p¹z*r‡;i endstream endobj 210 0 obj <>stream xœ36V0P0b#3c …C®B#C ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-äáŽÑK>rëŒ÷p¹ó‚yC—«§B æý0Ô endstream endobj 207 0 obj <>stream xœ3±P0P0b…C®BßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶pVZñ+¹~;|f­º1Ŧuõ¡ìe»äv½þõÿßþÿ`ðyÆåî'WuW04pp¹z*r´+8Œ endstream endobj 204 0 obj <>stream xœ33Q0P0b33#…C®B3C ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-䨡Æß| ˆE>Ãàùõ·¿ëÿ¯}ýÿÿ¯ëÞ__}™5ݳ*N nú„˜_1]ìçÛü1cŸþêïþÿ¿¯Õý¿ª·}üúØ —úÞ—®(leY¤è4i &.WO…@.=ïN5 endstream endobj 201 0 obj <>stream xœ³4V0P04RÐ5R040T03RH1ä*T°° (˜™åô ²@"9—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(h±h1_?¹rÂáD3!¾C‰lb×®}wýõýè׫Öß­ú¿ô–Á¾Ó—þYþïeUüý¥»âÿM_ÿ7*nýßÌÜõ³__¿¶ÿn•ßÞ¿yÓö}Yÿ+nrý¯Ø¥¿ÅMÿ¿ôeüï¥/ëeÂþ‡þ}ýëÖ¿¥Kþ02p¹z*rѾe@ endstream endobj 198 0 obj <>stream xœ3±P0P°PеP06R03VH1ä*T02 (˜*Xèå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j+n¤ ¼{rÕvùvØ_ýöûþ·ÿ«ðßýÿ@péÿß* Ô¿¾V·êº7pfº†z®âbP`ârõTä×>¼ endstream endobj 195 0 obj <>stream xœ3±P0P02PеP02W03VH1ä*T0 (˜eô r@"9—ËÉ“KßÓW¡¤¨4•K?\ÁœKߨ†Kß)ÀYH¹DrÄré»é;;»¹66úÞ º@çüœÒܼbs;;.Oµ•5ñÿ!àŸoІ.WO…@.kÏ%› endstream endobj 192 0 obj <>stream xœ3±P0P0UеP01R03VH1ä*T06 (˜*˜êå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j+˜üØ÷ÓÔÿÛÿ|0ªƒÒ ôýý7!ñ÷ïÚL \®ž \ïLE[ endstream endobj 47 0 obj <>stream xœ33W0P0²P03T05R°0QH1ä*T02ŠÅRz† fz– ɹ\Nž\úž¾ %E¥©\úá@U\ú@E\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmasŸ@Uýò¨ëצMâvÌÐÛ"â´ÒÔ1GO„Á…ËÕS! Hb%’ endstream endobj 43 0 obj <>stream xœ37T0P0VÐ52Q03W05VH1ä*T03Š(˜›+ë‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQPcìÿ?9Ð#q†_uÂþÛëc_o½·Lü-{}=ooùºëUoÄß]_!’;¾íÏþŸ $@ôÚªëk‹k3×Íu]õuÝ”YK¦{æ²ìâÌ ;t8"aƒ—«§B êS- endstream endobj 40 0 obj <>stream xœ340V0P0bKS #…C®BKC ßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(h;.ñ9l"#ciÊbÕXð§-©žíÁó·¿ëîoÿöw}Ýÿºÿõ¿ëÿÿÿþÿÿ@ "ÿÿ_ÿÿ5|ý?~ýÿ/û}ýõeoÝ^}ïK¦/}¨ÏY¡°§±PP”• hòZ¶ \®ž \¶K[9 endstream endobj 37 0 obj <>stream xœ31U0P°bcs3C…C®B#K ßĵÐ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Ô63f¯çžÌg¹|ŽÎ¬ÖÿØÁ?B%æ.WO…@.:k endstream endobj 34 0 obj <>stream xœ36S0P0bcc…C®BcC ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-¶Ñ|fÐ|Èì^çäà¥÷v¯ý;&±õÂÿ¯ÿ`¹pÄ>&.WO…@.ð6Ð endstream endobj 31 0 obj <>stream xœ3±P0P0b3cK…C®BS ßÄ5Ô3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠Ä&þgÖ1©„m Ë£KwE—Þz»tWtfy´ÜµëÕß—ßë]7¹*ürÕ> ¹äÞú%÷¶/¯Ð*äQ20ÿÃàÀÂåê©Èr: endstream endobj 28 0 obj <>stream xœ31U0P0RÐ5T01R01TH1ä*T01PA ˆ‘ž!PH$çr9yré{ú*”•¦ré‡qé{Õpé;8+ré»DrÄré»é;;»¹66úÞ@Ý\úÎù9¥¹yÅ@-vv\ž. j vÎÐgáçøÈÞ"øBáÞä*ß—æk_šÿÛþorýÿ?åÿÿÿó Ûÿ?Wÿÿ½m—þçênÙvé0Â6 o§ú \®ž \‰2;Ø endstream endobj 25 0 obj <>stream xœ36U0P0RÐ5T0²T05SH1ä*T02 (˜š+éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶Ð‡©þÿßúÿñ׿^QäŸ8Ÿå? üãSõ™õÛv_»‘´áPC—«§B =6:÷ endstream endobj 22 0 obj <>stream xœ35T0P0RÐ5´P01W01PH1ä*T01Š(˜Z(é‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔΥSš›W ÔbgÇå颠¶ØNsFBBãC…lO®5ø6ûVþ²_÷ïÿ»ÿÿ·ÿ`péÿÿ¿úõ^_zÿVïB̯D}ñÜ›>B¤/w^áþÁÐÀÁåê©È?eKþ endstream endobj 19 0 obj <>stream xœ31P0P0RÐ5T06W01TH1ä*T06U ›)éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶°ÙàƒÃ‡~ Gó%÷&Wù¾®µÛ¾äÿ뿯ü³œ‘úÿÉÕú½Äî_ûºmïÒí9ªÛ¦I$êr³q1(0q¹z*r³“9¼ endstream endobj 16 0 obj <>stream xœ35T0P0UÐ5R01U03QH1ä*T01PA33S=C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j Ú64®Èn© øË»®)ùÿê—µvëÿûËïÿûﵕýµoìJYł۪U‹ñ'¾±moû¯pàLÛ©MlÌ¿}¿Ÿß\ÿþþ¿õ×^á¥-Ë 2E$‰²‰ U`bPàrõTä9²M" endstream endobj 8 0 obj <>stream xœ34°P0P04TÐ5R°4S042PH1ä*T°0 %ŒŒ€’z i ‘œËåäÉ¥ïé«PRTšÊ¥TÆ¥ïRÅ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠzìì¸<]Ô\(e›ÌªáÏâvØžEê!ÛÇuÍ1J Ö_²y×5±]wd³UøÅa·þòK ~õ×nýÿõïÿï©ûþïûßÿùµß®öÌZ~øÁO!Vk¥ë'-¸µ‰CjgÛn•Æ™Í7ìäî¾Q ùù¼o~ÈgûÄëÉëӜ毰Du‚ÓÁ=v¿î¯>õ\üþýï÷¿Çÿšý=lûݨ[áa.µM‘ HÔäeæ Öb¼Ê¦ÕÌÕØêph‘¤›ÊUg¯ \®ž \á§z© endstream endobj 580 0 obj <>stream xœ35W0P0RÐ5R05S05TH1ä*T05 (˜+éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQPHˆ‘‘™ÕsFÆöpô·¿û÷×ïÿÿÿÿ¿ý_öÙËúPŸE\`GÌ‚?÷çßÿ=P„?ìûÿ÷Úü@Söº×Û¦ÌjÛ±F"€‘A€ËÕS! y\H€ endstream endobj 577 0 obj <>stream xœ35R0P0bsSC…C®B ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]”ž\)ÙÆ|GúÛßýùïïÿßÿÿÿÿõõÿê{_úàX#nÇ+ÿüÔ01(p¹z*rSL;D endstream endobj 574 0 obj <>stream xœ33P0P0QÐ5R05U05VH1ä*T05T ELô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j 7\0ó0ŒüØÞÂ!QÅaÞ2£Ê÷¥ù’{“ë_š¯ýòëþ/ßÿkÿ_þ/ûÿÿÿ¾a»ãÿßÛÿ}ÝõªÛÞ·l_»eÛ¥ÛÞ‰-nqóH(l8¢ÓvÊ…ÁËÕS! mOI¾ endstream endobj 571 0 obj <>stream xœ37P0P0b3SSC…C®B3C(k¢g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ @Ê%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(X1Ç®W[:Ktº¯¸÷ÿÿ·ìÿHÿÏÕÿÿíFç€ààtýÿÿåÖ‡æË ZŠ.õ˜¸\=¹@¿\» endstream endobj 456 0 obj <>stream xœ31V0P0bS#…C®Bc Ì5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶°ùÀ‘÷¨'Âÿk«þÿ¿¾þÿ_ÏzGö‡ÒYþMý7ýúõÿñëö‡þÿÿëõ×øÿÿÁÌW;Cgíïg`ärõTäy°Aê endstream endobj 453 0 obj <>stream xœ3¶P0P0QÐ5T0¶P06QH1ä*Ñ@hlª`¢g”ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ †\ú.ц\±\únúÎÎn@n€¾7P7—¾s~Nin^1P‹—§‹‚Ú‚3<>ô Tqîe‘>¾äþ¯ðõKþÍ­­_ÿÿOPü_ÏUë¯ÿ›öõVôÒmÓnEó(l8¢cÀÈ Àåê©Èˆ‰7V endstream endobj 449 0 obj <>stream xœ32T0P0aCSC…C®BCK ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Ô4' endstream endobj 446 0 obj <>stream xœ36W0P04QÐ56P06Q°4PH1ä*T02PAC#¤ž!HH&çr9yré{ú*”•¦ré‡Õqé{€”qé;8+ré»DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.O…5Âÿq%æú, \®ž \6š8% endstream endobj 443 0 obj <>stream xœ3¶T0P04F& † )†\…  A2z† º@"9—ËÉ“KßÓW¡¤¨4•K?(Í¥ï&œ ¹ô]¢ ¹ b¹<]äêêþ€@[ŽËÕS! Qžo endstream endobj 440 0 obj <>stream xœ3¶P0P0VÐ5R06Q05PH1ä*T06 (˜õ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j }d¾PáÞö…s¯Ú¯|Ç¿÷÷×Çÿöî¿þ²tÝ´¦CÜJòÍ'oóççïý}ÿÓ2ýÿ¯¦ùÄ{æ^ÏÞp醉˜Äƒ ˜¸\=¹£Ð?` endstream endobj 437 0 obj <>stream xœ35R0P04VÐ56T01Q°4PH1ä*Tò @F†@I=C4LÎåròäÒ÷ôU()*MåÒªãÒ÷)ãÒw pVR.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÇÎŽËÓEAmáôµ™™‰ººz[/]ºî½¶d¿wÜÖ¿ú—þVý­÷þ·ÿë¿ý_ÿÿeÿ~šÆýÿÿýÿ{ ªÿ»ÿþïûßþç_»ÿöý½{¿}ûþ>?Ÿ÷íÛ{˜¸\=¹nöW* endstream endobj 431 0 obj <>stream xœ3¶T0P0QÐ5S06Q05RH1ä*T06PAS =C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j ž1jþÿÿ½‰½Enžð³Ê#_Ĥ/DÝSýëÿû¬oK®ÚT³ýÆŸøÆÆ|¯·Ÿç®ûù8o~÷ýÿ¿¾/U[½¾*ºêCa´èÖ¶mb>stream xœ35T0P°TÐ5T05T03VH1ä*T01 (˜™(Xêå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶¿±sËÿ[îÿúÿÿúúÿ«þÿWž· ñ‹àÁö‡,Ò„ù—ýú2ûÕ¯¿ÿþ_ýûÿ¯k»þÿÿï¿þÒÿK¿®êÿÕ»ôEÜrË¢ÙZ‰-¢lŠŽl\ L\®ž \äùMX endstream endobj 369 0 obj <>stream xœ35S0P0SÐ5T05U0±TH1ä*Ñ@h ”Ñ3ʉä\.'O.}O_…’¢ÒT.ýp ".} .}§gC.}—hC.ƒX.}7}gg7 7ÀÆFߨ›Kß9?§47¯¨ÅÎŽËÓEAm¡GB‡œ@¿ÿ^» Ñæ÷×.û6_úïÿÿ ÷ö43|âðçnzÝâ=Ý=À¯±ŠõÃ^֯ǯÿÿu_måúìmœº¶&½OUºUÍacà¸FÒ"µƒ¡ËÕS! ÕyAò endstream endobj 366 0 obj <>stream xœ3±P0P0UÐ5T01R05WH1ä*T06 …-Lõ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[x–…µ‰½Âq]óÛ?»&ö—_æ/ï_þ÷ÿû[“Cå~ߨf?›pt"Ã4~Û=æ”Ö4µ$î±»ÿögÄ£ÿÿ³W¿ÕŽÈtlíZùdáWf­ä¨`hààrõTä›F endstream endobj 316 0 obj <>stream xœ³0T0P0QÐ56P0·P03SH1ä*T07Š(Xš)˜è‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[°%­ˆÍ„EÎÙ©ÁŸ…×FáÐËE-¥Z…Ÿ/p8ôÒ`Úä|Ï}“KGÝÈþx)ÿÿ×ýÿAàïëÿß.ý¯úŸ«»eÛ¥ÛÞÍ,[KOˆjf}¢7Ïêÿÿúû5òª ÉŠ‰ó~ø&ÏŸ,vø»;œy!Èë8Ëá—ã—Ùßû××ÿÿiõ¶|Ýõ\Ý6¡ÛÞ‰-6q§8XØpè`Ó‰ é©  \®ž \Â*p} endstream endobj 313 0 obj <>stream xœ31U0P0QÐ5R01P03TH1ä*T06 ¹Æ &z†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Ô>stream xœ3±P0P0b#Ss…C®Bcs ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ ­±C9 Âñ¡-ûòE…{Yx¿È{î›»÷õîýO®êIÄÔÇf_Û›½tÝôopLÔ%îg“Jvq/ìW[Å ÀÄåê©ÈŠZ: endstream endobj 273 0 obj <>stream xœ3±P0P0QÐ5T01V05WH1ä*T0¶ (˜Z(˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶àÉÃNÎ8*~W¦}vòï¿¿ÿw}öñëë¯{ÇêPªÕÛýðíe¶oîý}÷ÏùCüâ¿^M{åw(š·ŒGèÆÚµ­m°R`bPàrõTä˜KCw endstream endobj 270 0 obj <>stream xœ3±P0P04S02W06T05SH1ä*T04Š(Y¥ô ŒÌô,’s¹œ<¹ô=}JŠJS¹ôê¸ô=€Š¸ôœ ¹ô]¢ ¹ b¹ôÝôÝ€Ü}o] Œs~Nin^1P‹—§‹‚Ú²‚¶öïï}â÷ÿ×믯cuK6l ÊjºÕÀÁÐÀåê©ÈÂ)+• endstream endobj 267 0 obj <>stream xœ3±P0PÐ5&– & )†\… ¦ äêèY‚K °0UHÎåròäÒ÷ôU()*MåÒªåÒ÷*åÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½Vpé;çç”ææµØÙqyº(¨-Øù`yÓ©Ž-2>êbó6eõ­iûi¼å~è—Ëÿ¿Æÿÿú<ÍT8É•ùÿ¿ÚJ“+ ,\®ž \~ìI¦ endstream endobj 264 0 obj <>stream xœ3±P0B]CscK…C®B$h$ô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQPÛ©`©à•yl¿Úªßû\?ñÔÿGÿöÿúõm7 à£oïS’¢9×H(6p04p¹z*r|<< endstream endobj 261 0 obj <>stream xœ3±P0P0WÐ5T0£C®Bc  ‚‰‘‚¹ž!PH$çr9yré{ú*”•¦ré‡qé{Õpé;8+ré»DrÄré»é;;»¹66úÞ@Ý\úÎù9¥¹yÅ@-vv\ž. j ½xÄÜæ}h_·ëÅ9E[ûÿ·ƒ²f|¨¶bscßPÍÏcc>¡ê“Ç ñea6ùwÿ~ÍŒ:ØxÕ?1 ÑsUƒ—«§B _’6t endstream endobj 258 0 obj <>stream xœ344R0P0bC S…C®B Û(bâ›ê*èèX…©Br.—“'—¾§¯BIQi*—~8H-—¾P)—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+é±³ãòtQP[Èy˜•qJ€Çrž§ú͇m%'»¥|á0kd{re…¶cœ,Ë õ/kµ¿lÙïy©þñ>­}«ÿ¿Úÿÿÿ¿ÕÿñN=M&‘F6 :&.WO…@.nôZû endstream endobj 227 0 obj <>stream xœ35Q0P0UÐ5T0±T0±PH1ä*T0 €DLõ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[¸à‚0 oBs„Ë£¶-æ‡8 /ø{¾´Õ[¿×í¯ïzðÿÿ§¬úÿë³ëKw}^w7wÝ­hÕ6©h6à i Œ \®ž \u;Ý endstream endobj 189 0 obj <>stream xœ37T0P04PÐ5R07T03QH1ä*T0‰(˜™¥ô ’@"9—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j .H)4>èïâç0oæçdû"\á¹WûR¾ç^ýèKùÞÿ=÷ÖíÍ_ÿWÿݾý×ÿ¯Xúÿÿ¥ÿë½]_ýeÉÕzï×¥ï¶{_ºíý:WHæênhºíÍcÐt˜G "‰[qÁF.WO…@.ÏLé endstream endobj 186 0 obj <>stream xœ33W0P0SÐ5T03T0·PH1ä*T05 (˜[*˜éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶pÁ iqö&ö¹.Ö ·†‡/î5対¿àý~¿ÿÿÿýÛÿÿÞ¶½Ko„ö/½þ233CW§±¶ˆ{úÂ9gsƒ‡oß¾ý>ÿ÷ßýïO¦sØÍ÷_Þýÿúë«EY[/½ çÔ]²M*šmÚ¹&Cîl ¶Z&.WO…@.zÝUú endstream endobj 106 0 obj <>stream xœ3±P0P0bS3c…C®Bc ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ØNrñOS»ßÿa`ÂÔÿÿÛ¸ì¿~èË^}ïCqÓ—¾¬ª›¿^˜ók­½ï×Zó÷ßßþþû»îÝýÿUJŒæ˜ÿap`árõTäð‘Hà endstream endobj 103 0 obj <>stream xœ31U0P04V06U01T03VH1ä*T0²Š€(Cc=Cc=K…ä\.'O.}O_…’¢ÒT.ýp 4—¾˜t pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@Åvv\ž. j‹õ$¸C_mUÙ2éÕÖ¸Õ¡¯öÿ3]õÿÏ÷ydœwÿ™µúßûU‡9 01(p¹z*rh1û endstream endobj 100 0 obj <>stream xœ33S0P0b3C3S…C®BS˜ˆkªg¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmáIÆ“‡x*_¾|q©ŠeάnÇê%s_¿þõ1þë·ý/×gæ^øÿÿëÿhàQ[ý.WO…@.[³G endstream endobj 97 0 obj <>stream xœ342T0P°TÐ5R044T040PH1ä*2Œ€â`ÚRÏ($’s¹œ<¹ô=}JŠJS¹ôÃAÒ\úÊ)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææƒTÛÙqyº(¨-Ü–Å»“7XB¡]>t(Ø(8¾à¸GHìUû2û­Ú¯Zµ¯{Õ¾î›})ÿ¯Úÿk¿jóÿ™ýÿoþëÿ?ëÿ ðÓ4êÿ¿ëÿ¿¯ÿÿ?Wÿÿ½Ý±¯ÿnÙÛLTÝöÞzoÛ¥ÛÞ¹ºmB‡3€ÄDƒCÜ<Íb­mb‘¼Á’¼»01(p¹z*r‚ma endstream endobj 568 0 obj <>stream xœ3¶T0Ccs3…C®B$äè*èèX…©Br.—“'—¾§¯BIQi*—~8P)—¾P%—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[1Çh»Ì¬õO*ÿÁ“U_þÿ¿õIø¯¾÷¥/{T_VÅM¿_sùË}߯µöÛßþý]÷3´Å9Ö°ÒÔû+ƒ#—«§B qa?á endstream endobj 565 0 obj <>stream xœ3¶T0PÐ5& ÆF )†\… & >˜«k g " ’s¹œ<¹ô=}JŠJS¹ôê¸ô=€Š¸ôœ€—hC.ƒX.}7}gg7 7ÀÆFßh8—¾s~Nin^1P‹—§‹‚ÚŠŸs4âQxt¨°(k‡QÅ¢5á¯ñ¡ÿÿÿþqH8b/Ý=9dÕ&.WO…@.c=Š endstream endobj 562 0 obj <>stream xœ3¶T0P0bc3c#…C®Bc ßÄ5Ò3TÐ5ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmE›æl1 ŸY«NÌÿ7ë…Á.¹ýë_ÿM—ø“«¸\=¹ã6.¥ endstream endobj 559 0 obj <>stream xœ3¶T0P0bc33…C®BcS ßÄ5Ô3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶bw÷OÓ˜éõÿÿÿÿYü¡ù‘|í§¦µ_¼_þ×Úÿ¯Šþ­-ÿõmúúÌ‚C1á±Å7¢›8¸\=¹n<¦ endstream endobj 556 0 obj <>stream xœ3¶T0P0bc3c#…C®Bc ßÄ5Ò3TÐ5ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAm§Â¡Ëñû×.?ñÃøð¶éK·GgïŠ »ö;¶|ùºù–{µ¯þÊ÷úšïùi KI|·Ï¬%×?02p¹z*rï6´ endstream endobj 552 0 obj <>stream xœ31U0P0VÐ5T01V0¶PH1ä*T01PAcKc=C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]4ùÈÌÚüùŽùÛßu÷ïÿ‚¸éK_VxwÄèU8ü1øûïïþÿÿßÿÿÿGÿ~ÿ@–ÌÄ®É\ L\®ž \z>stream xœ³0T0P0bs #…C®BsrMô t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº((4$ÿ™Õ$Õ¸ý?V0áÊùÿkëÿÿÿõÿÿúûãöÿ‚ññ¬"ºþ7p04p¹z*rËÈL£ endstream endobj 546 0 obj <>stream xœ36Q0P0bc 2RH1ä*T0²òÁ\#=C] ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Ôö?oþ°zÉ.ïÐ_/õ½¯¿Ù²ßÛÛûÐ¥—¥_/EÅf/½ô¥é˜˜ƒ—«§B c‰05 endstream endobj 543 0 obj <>stream xœ33P0P0QÐ5R05U05VH1ä*T05T ELô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j î\ØyBpÕCö‡R\R™Ø®;²]ç4|¡~©6~½ç—ýµú÷ãׇÿÿ·ãøÿÿ'Ìõ|ÃïŸH»|ëþûûÿóßß¿ýûÛõüÛ1f=µm“6³Ìç ~ØbÉö¥ƒ¡ËÕS! :MJÈ endstream endobj 540 0 obj <>stream xœ35P0P0b3SC…C®BßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]¸Ÿ\é9Ð÷àŸô÷ÿ÷ÿ×ÿÿû‰ìÿÿÿäÿÖý°§þÏÿvøÿÿÇÿƒ€ŸÚ†‹˜¸\=¹¦Aâ endstream endobj 396 0 obj <>stream xœ3±P0P0bcS3…C®BC ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨­XÂ"PðîÉU›éŠÔçßÿŸÿâ×ÿÕç¬ðîzÝzøá÷ómòm÷×çÿÿ»$ÿëWÜ>ÎTn×­É!\ L\®ž \/(B3 endstream endobj 306 0 obj <>stream xœ3±P0P°bSs…C®BcC ̵Ô3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-xvPóßþõ¯×íˆùzü”˜¸Ú }ùÿhàó’ËÝ“C¶-`bPàrõTä];ë endstream endobj 424 0 obj <>stream xœ3±P0P0QÐ5T01V05WH1ä*T0¶ (˜Z(˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶pÎ LJ¶¶¶"Â~ù¾P¿¤hõ‹£Ê±ÖVéUÉý!ÿ&—.¿ôoþë!ÿÁ lÉÕ¸ýÿ®o_û¶vËî­w»Þ®Ýë6Þaîï³ms7lã;š›£cÚÆÍÆÅ ÀÄåê©ÈµÔMG endstream endobj 421 0 obj <>stream xœ3±P0P0UеP01R03VH1ä*T06 (˜*˜êå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j ®l½üõË~oúuÎü²m½7¦Ä>íu¾A?8¸\=¹*l?Ž endstream endobj 418 0 obj <>stream xœ33V0P°TÐ56S01W04°PH1ä*T0¶ (š˜(Xꂤdr.—“'—¾§¯BIQi*—~8P—¾H—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+ê±³ãòtQP[qô{rÈ7ùj¨}ûöý½ûÕÕß·ÿ®}ÿí¿ûß÷×ﯿ÷ÿþû¿ÿßßÿÿ¿úÿÿÿõÿ!àëÿÿ¿€øÚþ¿uû¯¿¾þuý×õñKÅ_Û›Y7=êeéÒk»¢b3A tÁ¢%W58¸\=¹Kêgý endstream endobj 414 0 obj <>stream xœ³°P0P0b #ss…C®Bm„@ÊTÏPA×@ÏÀ,L’s¹œ<¹ô=}JŠJS¹ôÃj¸ô=À¤S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+*¶³ãòtQP[¸*Á4óå ü7ÿßü—Ÿëÿæ/ÿïõ÷ë¾ùØžûŒ~ÿ/?7dü_ûåÿËø}Û/¿þWíÛ~¿u¯É‡f‹6g î L\®ž \àÿZ7 endstream endobj 411 0 obj <>stream xœ342R0P0bCC3C…C®B Ç(d0Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýpb.}Z.}§g Ï%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææƒ4ÙÙqyº(¨-ð¨áÔü7ÿßü—ÿ_B‰ó_œµÿU›¿>ìÿ˯ûöFÿ_~í××üó£__Ý]xŸýå¿öÏǯýúê~ü¾í—_×Öýºï¿öëï×µvÛ¯/»Ç!/´ÀØ# ÿÿ.WO…@.ÈBiØ endstream endobj 393 0 obj <>stream xœ31R0P04PÐ5T01T03VH1ä*T06Š(˜™¥ô ’@"9—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ôú7y_^Âÿßþø×_!ÄžùYu‚›ù—Ì~´—åþßxÿ¥_¿Žÿõ?ôëõÿkJã_Ö‡ì;2kUì¿i/˦½ÐݲM1±©ƒ¡ËÕS! ÝÕH- endstream endobj 390 0 obj <>stream xœ3³P0P0QÐ5T03V07SH1ä*T0µ (˜›+˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶HŠ9ãÿ“+»ÿÃÁ„– %ÃCü‡ø/.¸/àpø!Ûß/÷ã}ÿþþûÿûûÿÿë!ÊþÖ¿þúÿßôëÙ_oÅ.=y!³ä†÷2¡—±»xt<ô:8¸\=¹)vUà endstream endobj 359 0 obj <>stream xœ31U0P0U0S0¶T01PH1ä*T06Š€(S=C ¶THÎåròäÒ÷ôU()*MåÒJré{€I§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W TlgÇå颠¶ðäáCü6 _€à¿ÿ?ý¾Aÿoý]»víƒ ‡s1(0q¹z*r%7-= endstream endobj 356 0 obj <>stream xœ37T0P°P02T03R02UH1ä*T05 (˜(Xè*èY*$çr9yré{ú*”•¦ré‡Õpé{( §gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔagÇå颠¶ÒõäªF.WO…@.ÞÛ™ endstream endobj 353 0 obj <>stream xœ33T0P0UÐ5T05U07TH1ä*T05PAs#S=C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ô8òŸ°¬Q¨p|1'|cû‚Ùü—ÝkÞ÷×úûÿÿöÇþ[}ë“@ÉÆµU—^sfèHpçn?øÄhËÁöíÛ·ß»_¿ýÿùÍ/¿üïþýu¨Úê/Ó®L/ÙÆ«;á(wÒ†C‡¹ÙÄ{˜¸\=¹€}T… endstream endobj 179 0 obj <>stream xœ340P0P0QÐ5T°´T°0RH1ä*T°4U [+˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠µp[XsÄL¶ EY¥¼Œ?™¾þ0ø»?ÿö÷oÿþûÿÿýøõÿúë×ÿ½/}Ù«ÏYáXÉËù£õ`ÁŽšW,ì©þöïïÿßßÁj÷ƒˆ?‚ßæÿÿû?ûÞ¾ëw“|ØÊ¦Idæ„IlU[PÑèÀÂàÀåê©È4èg1 endstream endobj 176 0 obj <>stream xœ3±P0P0b#S3…C®Bcs ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶¢ƒõèµÕŽÿÇþ,‰W[éÀÂàÀåê©ÈÅ9 endstream endobj 173 0 obj <>stream xœ3±P0P0UеP01R03VH1ä*T06 (˜*˜êå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j+æµ¼à=¼£(k§@O“~ýxŸß|ÓÿFy{ëZÖE 3tõöÃebu:ÜN< Ñ4uy8…A‰ËÕS! –JCL endstream endobj 170 0 obj <>stream xœ3±P0P0VÐ52R01S01PH1ä*T01Š(˜)ë‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[ð,‘1¡±‰ßGO`׵Πš9תÿ7?úåÿÿÿǾÞú?WO"N{­ž¸ÍôfÖÇÿïW+2Kzˆ¾PUUeÂzŸ£¹ò%Û¯Šwóÿÿ»æì½õ¶w›xŠ¡ØÑÜÄÖ61‰H%&.WO…@.üðI endstream endobj 167 0 obj <>stream xœ3±P0P0Æ@ÚH!Å«D(€¹†z† º@"9—ËÉ“KßÓW¡¤¨4•K?(Í¥ï&œ ¹ô]¢ ¹ b¹<]øìÔ?¨ðÿ‚Øöø¸\=¹ü!ž endstream endobj 164 0 obj <>stream xœ3±P0P0SÐ5T0£C®BcS  ‚‰‘‚™ž!PH$çr9yré{ú*”•¦ré‡qé{Õpé;8+ré»DrÄré»é;;»¹66úÞ@Ý\úÎù9¥¹yÅ@-vv\ž. j v:lpø0Oøòå‹{™jõ½_®UÛ%[õãõÿß“Cÿ}W\líwëöhÞ ƒiÇÛ¶m8t8"aƒ—«§B ŠÚ7p endstream endobj 161 0 obj <>stream xœ31P0P0bcScK…C®Bcc(k¤g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmû³„9Z/õ&½þ²Õûúª/{ëöêýÕÕ­ºt‰õ¯ÞôøXÕõ«.}™þWõ·DĆ.WO…@.×ë5; endstream endobj 158 0 obj <>stream xœ35R0P0RÐ5T01Q07SH1ä*T0 (˜›+éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶ÀñÀùÿÿ¿þÿ[ÿ·ôoéuîu]ÿù: ¶ÿ ~Bè»zÿ¿{ïÏÕmº±Æ´mC¢ ƒ—«§B uH endstream endobj 155 0 obj <>stream xœ37U0P0QÐ5T0³T°0VH1ä*T0 (X˜(˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶`ŸNÛŠþÿÚîͨÿ'4”O¤K>hþÐü¡oq]#s€c¿ç—æ—vÓß/}ýõõÿÓÿÿ?VùgÖúÿ¿ëÿ¿ÿ¿ý×Ûuÿn½m½íøÆ QŒyЛp==ÇB L \®ž \èF^Ý endstream endobj 152 0 obj <>stream xœ33P0P0QÐ5T05¡C®BSC°©™‚‰ž!PH$çr9yré{ú*”•¦ré‡qé{Õpé;8+9.ц\±\únúÎÎn@n€¾7P7—¾s~Nin^1P‹—§‹‚Ú‚/øçÈqÈ T¸;ô;4îQ™×›ïYõõËþ¯ÙëÃö®u_ÿãÿÿÿO®VÿýÂ$uÿÚ]÷ß–{çênÙ&¨c0MbÁ†C'4”˜¸\=¹a@¹ endstream endobj 149 0 obj <>stream xœ36W0P04Fæ †æ )†\… $¤ ô tADr.—“'—¾§¯BIQi*—~8PšKßL:8+ré»DrÄré»é;;»¹66úÞ º@çüœÒܼb b;;.Oµe5/àè?ß [@ÐÀÁÐÀåê©È½£%ê endstream endobj 146 0 obj <>stream xœ3±P0P04SÐ54V06P0¶TH1ä*T04 (˜åô A²@29—ËÉ“KßÓW¡¤¨4•K?¨ŒKߨŠKß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷jçÒwÎÏ)ÍÍ+j±³ãòtQP[’{ˆßÿËÿoû³ytêÿÿÿ¯ZáøúÞÞÿõU¯ã¶Šzéê¹*6Gƒ¡ƒËÕS! ^n1à endstream endobj 86 0 obj <>stream xœ31U0P0QÐ5R01P03TH1ä*T06 ¹Æ &z†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Ô>stream xœ33R0P0bS 3#…C®BSS ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠ÕrÅ)æt^Só·?üÿýûÿÿõÿÿßþÄãþÿÿÿÿ_ÿ_¿¾õñÿg‰ÿäïßʰþÿÿ²(³þú¿ýÿ_¿¬X[£'¬¸Ø£ëC—«§B =¶N• endstream endobj 594 0 obj <>stream xœ340R0PaKK #…C®BKs ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠ª8óÿ§,™å¬Î f³qçm÷ÞŸ«{éýmï’Ýß.ÝÕû».PúnÛ¥»Õk·l{«{}DàÆ¯[÷³×~ÛõüiK ÿÿ‡Á…ËÕS! o[WC endstream endobj 591 0 obj <>stream xœ3µP0P0RÐ5R05U05TH1ä*T05 €(#=C HÎåròäÒ÷ôU()*MåÒÊré{€I§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W TlgÇå颠Èü_m± Ó³ô ƒ½ëÿã±»þ_ÏÛwénÙ¥ÛÞ‰K7Ô1äæÑ‘`dàrõTäüýCy endstream endobj 588 0 obj <>stream xœ³4Q0P0b  C…C®B c ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]ÔvÄÿÿs…{V³·âœ^Ö¶Ñ_÷Ñÿèÿÿäÿÿj×É'WL–H­ÿüs,ÿÿƒ¡ƒËÕS! ƒcS endstream endobj 533 0 obj <>stream xœ31V0P0bCSc…C®Br õ t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-œsFˆCNðá…f~ïKþž%û¿ìÏ>þN$/²Ÿ8ý÷tð+ói˜ßþ? ,\®ž \ƒD endstream endobj 530 0 obj <>stream xœ31T0P0VÐ54U01T06VH1ä*T0¶Š(˜X(ë‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔΥSš›W ÔbgÇå颠¶ ý¸†ÂuŽì/Ù®s¨Ýz)ùå×_µõ_ÿ‚É!ÿÿߎýw½ô¶›x®>oËCîÃÜÇA2mÚZþ7p04p¹z*r™æ@Å endstream endobj 527 0 obj <>stream xœ35U0P0TÐ5T05V06RH1ä*T05 (+êä€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇåé¢`êîôÿÉ•ƒóxÄCÝ}ýþvÕÿw×K×ÿÝrégýÿº[~Óÿÿýiÿ¿vÝKÛúß²K/ÿ—»ÿËõÿoM¹\=¹Åê@› endstream endobj 524 0 obj <>stream xœ31V0P0RÐ5T0¶T05RH1ä*T06 (˜+éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶¤‚‡ÿÉ•ßÿ!`Ò{Ž›ì/ÔäEîû~¹¿ýûÿý÷Á2«þÖ¿,ÿ6%xéqÇ Ó}œŽ02p¹z*råŽA endstream endobj 299 0 obj <>stream xœ31R0P0SÐ5T01Q03VH1ä*T0¶ …"z†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{usé;çç”ææµØÙqyº(¨-l~°§{yü„úûã_…{šŸ-d(ï¡ú’uU¼gÉôK¯¦V9¶^rþºêW,ËŽÖõVl5ßä›ùÃþî›ÿ>üOŸÕÿ¿¥_×­þ=þõòøW¶å^3Vš^Ht`apàrõTä%P endstream endobj 296 0 obj <>stream xœ31R0P0QÐ5´T01V01PH1ä*T0¶Š(˜õ A’@29—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷jçÒwÎÏ)ÍÍ+j±³ãòtQP[pçC„ãC³˜DµC%²Uþ^[öÙ›½>ô¿×þ¯×_Aðÿ×ë¯×_z[·Ü{Cïº[ÞmЉavû¯¿þ›ÖzˆoqÜ–-+5<=W%²¶)&t`apàrõTä‘J endstream endobj 293 0 obj <>stream xœ3¶P0P0WÐ5T01R01PH1ä*T06 (˜*˜ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ô[È|<Ä#`+}ËÌÙ…ðX…]—^‹ìú¶kÁ¡?u‹¿Nÿ··þõu8qMªƒ¡ËÕS! h‘9 endstream endobj 290 0 obj <>stream xœ31R0P04PÐ5T0"…C®BcC ¨HÄÐ@Ï( $’s¹œ<¹ô=}JŠJS¹ôê¸ô=€Š¸ôœ€”K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶ÀñS?ÇÇö|Ç Ï]±z{U¯f¿Ô_úPWaúÄÌ#"¾ íö¿þèÚ’«A_¶]ú²íPt"ë6Cn.WO…@.Ö8: endstream endobj 287 0 obj <>stream xœ37T0P0VÐ5T03W05VH1ä*T03 (˜š(ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇåé¢ ÆØÿrà\fƒ9o7Ä¿]÷õˆ¸ÿzoÙîëÙ ¢~ÝÝ*¨øúߥ¯÷¾­»þ¶DÔ]»ÂàÀÂåê©È’˜C› endstream endobj 284 0 obj <>stream xœ³0T0P0WÐ5R07V°4QH1ä*T03 (Xš)˜ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[sE2HJô!óAöúšØ5¾ porç^íËùí/ïçß}ùÿÿÿúøÿïö†]ßú6ŒGõØ~ïµz[€`CÓ‰4žá‡ì “6¨äÕúø°}ûö ¿oÿÝ÷ïïÿï¼j~ÕÚÍÿXÿëÿ¥u¾á¯ö–­n™vhíõÄ¥.D³ Ý\ãº1"1±µ[qnœ£k#ƒ—«§B š i endstream endobj 248 0 obj <>stream xœ3±P0P0bS3…C®BßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ë²Ì¬µOêœÓÿÁ¿ëýÿÿOøùòÿÿ?õÿÿŸo…Š€ÀsÉåòj«·20r¹z*ru†?˜ endstream endobj 245 0 obj <>stream xœ3±P0P0U0Q01R05TH1ä*T06Š(˜˜+˜ê*ëY*$çr9yré{ú*”•¦ré‡Õpé{•pé;8+ré»DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.OµW6ì*ذeÃ.nÎ …-š.âöæÐ3_)†ž\Å¿Çàۇ÷óçóØ‚™7*ò~{øðmâ&.WO…@.$/;z endstream endobj 242 0 obj <>stream xœ3²P0PÐ5WÐ5´T0²T03RH1ä*T06 (X*èšéY‚dõ ’s¹œ<¹ô=}JŠJS¹ôÃʸô=€ª¸ôœ€”K´!—A,—¾›¾³³`c£ï ÔΥSš›W ÔbgÇå颠¶p7‡mõúk[ûÿÿÿÉ,|Bp}ü„@ßÿ¿þÿ­_ÿÿ:*µþÿÙ:ÌzÙ쫪KÕV¨l÷æq:ÌÊ ÀÈåê©ÈŽ„CF endstream endobj 239 0 obj <>stream xœ3±P0P°PÐ5T05R0¶TH1ä*T01 (˜eô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQPfÊ^ijTp@w™øÖ¯»âãÅ®ûúúë­èÓÿM¯{Yõ·l÷õ¥ÿ—Þßýméߺ+ ,\®ž \oØ8 endstream endobj 236 0 obj <>stream xœ31U0P0b#3#…C®Brô t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-œ‘àõú׿]ÿvì­úÿ+nú¿éKÿ/}Yÿ² ¹¾~é××/kAr1áÂ+ò'èÕøÿåí?ÀÂàÀåê©ÈrÝFU endstream endobj 142 0 obj <>stream xœ32S0P0b#s3c…C®B# ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ÀÍ©=^±+þõÿÿqûÿÅA}˜ÐßÇ ÀÄåê©È  ;H endstream endobj 139 0 obj <>stream xœ36S0P0VÐ5T06W01TH1ä*T06 (˜)ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶`ç„æ÷VßL»É__ýþ÷ÿ÷o6xÒ6|“;üðáóö†Ë÷šŸçÿ¿~ÿº­ÿK_ߊ›<#‘•³#„G„Á…ËÕS! &>G endstream endobj 136 0 obj <>stream xœ35T0P0bK…C®B3 ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ ýˆ±·CãÁMü‡8?‰e¨}÷þ²¾ëç“}öëÿM_õÿÿßÒ_ëÿÿ¿g^-¹ÜyuÒÃý˜¸\=¹V³Aö endstream endobj 133 0 obj <>stream xœ35T0P0SÐ5T05T03VH1ä*T01 …MÌô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[¸vBæåŸ¼^ñ¯ÿý·ÿ?ú$¥¶“õˇþ ¥-æ/ ²üò_ý2lúúë«^ÖÇVýÿuüjý¿ý×ÿÌZÿúßËòw»³· ßv»x©í ëÃŽ8 Í L \®ž \¿ŒMù endstream endobj 129 0 obj <>stream xœ31P0P0SÐ5T01R01TH1ä*T06S EÌô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[8çB„B…{›œ€Ã=ð%➥»<3ë_š®æ^xýËþVÿÿOU¸g[·íú¥»º[¶]ºí#‘$Æ#ÂàÀÂåê©ÈÔ6P endstream endobj 126 0 obj <>stream xœ31Q0P0bC…C®Bc„oªg¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@µ\ú ¥\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÇÎŽËÓEAmAKCóÿ'Wâ~ÿ'YÍûA‰ËÕS! '3Ng endstream endobj 123 0 obj <>stream xœ³4P0P0UÐ5²P°0Q03UH1ä*T0·T‰[+˜ê‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[ÐÒpǨÍiúAæCü¶Blr‚Ö“]îÊÏÜ'\k~õËý@ø¿îÿßÿÿ÷ßÿKÿÿÿ[õÿëk ¼»>³l:¯Þ¥‡-⦠õ“ÄÛÄ7ì‘Ðgsæ9gÓðÿ£Êáüÿ Œ\®ž \ñÂ^ endstream endobj 120 0 obj <>stream xœ3±T0P0b3CC…C®BS3 „o¢g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@µ\ú ¥\úNÎ @Ê%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææõØÙqyº(¨-\âÁ©8K™åƒãC[©ÎBYæM¿T²ëËþKÿo]ʾõmÁžúÿ`ðO%Cþ¿ÚB¿ÿãŸZ÷ÿÿÇ ÀÄåê©ÈT–XC endstream endobj 117 0 obj <>stream xœ3·P0P0QÐ5T07W03SH1ä*T07 (˜™+˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶àÎ5© •ƒÌ‡ø_´É¾˜ÃQÅc¾ìþöe÷ïoÿ¿ýÿoßÿ[ßV$Vüÿÿÿ'Û›ÆÆ˜¶CsšYw¸F~p‘ˆÐwØ£°—õe÷õ×—¾þúßõÿüµŸ¦¡ïïÊøo˜¾mŠÜaN¯­ ÕvUd>l‘ãQÈVœcØÀÁÐÀåê©È:ßXV endstream endobj 114 0 obj <>stream xœ³0U0P0VÐ5²T°0T03QH1ä*T0·Š(X+ë‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQPJ\üÿϬSæH…jñߥ¯·Çí.}½·l÷õì·âß^_w·ê}캯·þo›‘¼ž½·lÿÛ¥ÿî¾­»þ¶D€è¯³¯íÍžüêoÉ_“ýÝÞ_v]÷ò ò¾ô²¬)Ú¡éÆÚµ­mb<" ,\®ž \ð/^ï endstream endobj 80 0 obj <>stream xœ33W0P0VÐ5R03S03RH1ä*T03 (˜™(ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQPJœåzà€¥©¤ƒEE†ô‡ÃîoÿþöÿÛÿßÿƒ@Üþø¸ýqM¦·ˆ7qw艳ólcŸû÷w üÿÿÿÿïÿÿÿÍY7ÿßÿý»ñ¯˜Ø°ûÛ¥ÃKÕ¬Ófap`árõTäèSo endstream endobj 77 0 obj <>stream xœ3³P0P0b33#…C®B3C ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨ùçëæÁÊÒx˜Ã`ÿ4ðÏþ_šd=º(âQxäÆáÙö¿ƒ¡ËÕS! äØK1 endstream endobj 74 0 obj <>stream xœ36U0P°TÐ52R0²T0³PH1ä*T02PAK Ò3IÉä\.'O.}O_…’¢ÒT.ýp *.} ".}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ÀmË–-[/]º¾V·êúÚzﯯðÿëøÿÿ_ÙÿÿÿÿŸoøþÿÿïïÿû/æ_÷ýöûÚ½{¿}ûöŽA‰ËÕS! 7–Hq endstream endobj 71 0 obj <>stream xœ33R0P0bS33#…C®BSßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠t`§ŸÌ¬žâü¼ÌuÒßþîÏÿ?ÿÿþÿ@ðú¿÷ÿõÞ—¾ìQ}ÐôHœõÌáàÿðO P™Yÿ ƒ—«§B ‡>CÀ endstream endobj 68 0 obj <>stream xœ37T0P0UÐ5R03U03QH1ä*T03PA33S=C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j §dðˆk²}]ÇazHCt]ÏaÆŽl×=·âì÷ü2?üÒ¯Zýð×W}­ÿ²ÿï×ÿ¯?öÿÿÿ‰MtrèÿM¼®ýÿûûÿÛÿï¿¿û÷wÝ­·¿³Û.n½‘i'‘¨~ÃÀóÃõƒ-–<‹°08p¹z*r¿WV endstream endobj 65 0 obj <>stream xœ33S0P0RÐ5T03V0¶TH1ä*T03 (˜eô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]4o®©ÿ3kƒ‹.3ë– ÙÙëî®}·÷ß×»Vÿo_úòF|þ¥¯û_þÝï}íÿòØ}¯/Õïý½Þóßßòw{Õ|½§½üÞþ—ß×ÿª}½¼ƒ¡ËÕS! ¬L¦ endstream endobj 62 0 obj <>stream xœ33S0P0b3#3C…C®BSK ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]ÔvÄÿ™#0Ǿ)CÞ;}üµÿÿÿæÿÑíÿÿ?ØPÿ |ùò‰Cý?ƒ#—«§B ’kC endstream endobj 59 0 obj <>stream xœ31U0P0a3C…C®Bc3 Ì5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Ô´5|pøÐ|ÈÆà‹@¾#Û—Ù¯¾æ{ûõ¨†ãvþÿOYÓ³ÛÄ¥®ÿº¾¶êÒkoﵺººz[À 1³êeɤK_öê{–Ø_÷²oà`hàrõTäÜ¢Dt endstream endobj 55 0 obj <>stream xœ3±P0P0RÐ5´T01U0¶TH1ä*T01Š(˜Z(é‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔΥSš›W ÔbgÇå颠ÌòÏ×gŽwfëÛüØß×gÖßzÿvéÿì½õÛ¦ÿ]÷õß­øo»¯ÿý¿õÿÖßñ룾þzVuˆ¿Ûû˾I“C½[¦ÝðNÚp¨ƒ¡ËÕS! ¼FÚ endstream endobj 620 0 obj <>stream xœ33W0P0WÐ5T0µT0·PH1ä*T05 …"z†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{usé;çç”ææµØÙqyº(¨-I09#ËÆ}ò û\G›ðØÒë@ÄÝzèÁÎg’sêÿÁŸ÷&eÆ:ù?fvýP¸Ïrøå¾ù«_î]}ü}ÝÿÿûŸþ÷_~ùèÿ¿õ×ÕVª^¿šó õ÷Ú-»×nÙ&Í£º!aÚÑÄÖ 6¤40(0q¹z*rÍGX: endstream endobj 616 0 obj <>stream xœ37V0P0b3 3c…C®B3ßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶àRŒTæËÿ@øoþ¿õ÷k¿ü]kÿË÷?2ãeü~ãã¿ù¬¿îûÿÛ~ùÿ’û¿îï›~÷õëªò¦D‹fÅ…ñ˜¸\=¹…¤OÙ endstream endobj 613 0 obj <>stream xœ33W0P0SÐ5T03P0·PH1ä*T05 ¹– fz†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{usé;çç”ææµØÙqyº(¨-œáÁ>AϘåCó!+Þ‡Ll_„«8¿4Uy/™7éÕ®ø_qûm½µõmÅë¿ÙÿœûŸTU8>stream xœ³4W0P0VÐ5T°4V05VH1ä*T°4PASc=C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]49Vóÿÿÿ)ËH"C…©©øv›Ø÷ø¿»Þ—þ¿·{yìë½×׃ès¥÷w}ý÷òzé®wóïoÙ[¿ Èÿ2ÿ=ˆ?·üˆãÝ®Ò{ÚÿæW½ü¾þWíëåÿAŒo³8¸\=¹ ÁZ€ endstream endobj 606 0 obj <>stream xœ344R0P0bCSKs…C®BKK €ˆk¦g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmƒþÿÿõx?ÛpSqÓ>nö×ubòkÝÿ¿öÿ¯ûq@ú?ßæÿÿÿ䊴Š4oýÜà‰ñÌúÿX¸\=¹_^Ù endstream endobj 521 0 obj <>stream xœ3¶T0P0bcc#…C®BcrMô t €Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[èsè?‡­­­ää Ž{Õ~Õæ/ÿ§¹ÿÿß•¦Qÿ·ÞöþÛ&tÛ;iÛ¶ ‡s1(0q¹z*r%½1* endstream endobj 518 0 obj <>stream xœ³4W0P0WÐ5T°°T°0VH1ä*T°0 (X˜(˜ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶p])³$ÛÖlÅYf[[¤©ÚÚÜÖpM@áÖÇ>ÇêK¾Ì›|©Êßó¿çËÚ—¥õ—êÿM¿ÿõÿ 9éY¯ÿÿÿÿÉÕúýŸX+ëÿoÿ¿v×ÿÒÛÿ¶]ÏÕÿvé¶wnH\ºMè0¯ngâÄÆ:F1V‡6:Ø:![}Âõk L\®ž \ `v endstream endobj 515 0 obj <>stream xœ31V0P0VÐ5T01T05RH1ä*T0¶ (˜+ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶pJÅÁÿ ÿƒŽöÙÊ)üe‘þ0YnòKû}Óÿí©I\õ÷ÿû·ëgo›wÃí¢‚yÛ!î6í6®Š.WO…@.P½D endstream endobj 512 0 obj <>stream xœ31T0P0bc S#…C®Bc3 ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶¤‚»ÿÉ•ßÿ!à'‡üÿ߬oÄìÛ«ÏYÅ}éËÞõ—õöš_ýrÿöïïßþýý»¾ªà‘sÂF.WO…@.w“A¡ endstream endobj 509 0 obj <>stream xœ31V0P0RÐ54U0¶T06VH1ä*T06Š(˜X(é‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔΥSš›W ÔbgÇå颠¶¤¢¿]Âñ¡´Âa>_Ÿàj߯µö÷·ÿÿwÿ?ÄÇÿ­ú[¶wé×ÃzÕ™Õ{ âìAâË…$Ò?02p¹z*r}b>stream xœ3¶P0P0RÐ54W06S06QH1ä*Ñ@hj¨`¤g’’ɹ\Nž\úž¾ %E¥©\úá@U\ú@E\úNÎ @Ê%ÚË –KßMßÙÙ È °±Ñ÷jçÒwÎÏ)ÍÍ+j±³ãòtQP[8MÌé‡? ¯Ä\CoNƒy“K/÷m¿üºþÿÿÿïc×}½õvé-n7uMWêÿûæÆzðmûò–ÃK¼/í·‹üÿÿmSÖÖmÓnEó¨¶I8&vD02p¹z*rVnEú endstream endobj 503 0 obj <>stream xœ31T0P0RÐ5T0¶P06RH1ä*T06 (+éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇåé¢`ÊýgÖfƒ‚è­»ãc×}ýw+þÛîëu/ë·Mÿ æ}|[wýßõ·, \®ž \æ¼4‹ endstream endobj 500 0 obj <>stream xœ36Q0P0RÐ5T0"…C®B#K  ‚±©‚‘ž!PH$çr9yré{ú*”•¦ré‡qé{Õpé;8+ré»DrÄré»é;;»¹66úÞ@Ý\úÎù9¥¹yÅ@-vv\ž. j Ï·4±/n“â}7¹ÊÿûÒ߯«þÙ÷ÕHÿŸúþ;÷ï쪷e—'ê¶ D$mHXÀÄ Àåê©È>i3g endstream endobj 497 0 obj <>stream xœ3¶T0P0bc3…C®BcrMô t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨­¸Â¡ÿäj‘üþÿè@ãHœoPC—«§B ¢&3Û endstream endobj 494 0 obj <>stream xœ31V0P0bcc…C®Bc Ì5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶¤"ýp‡ÞUœO®¼Œ;Zkþ?þoýd°lŽGáó? ,\®ž \_9, endstream endobj 491 0 obj <>stream xœ36P0P0TÐ5T02U01SH1ä*T02Q ›˜+êä€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶»ýÿÿõÿö¯½NP ýäJ9þÿpDüÛöúïÖÛÞ>stream xœ3¶T0P0TÐ5T0¶P01SH1ä*T06 (˜˜+êä€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶¢‡EÆzrȧ×åíßþþûûÿÿÿ¿u{kõ¹–^ÿ~žûÛß¿ûÿƒÀ§÷_€¤¶Û•˜°¿ž«|“$¸\=¹x@× endstream endobj 485 0 obj <>stream xœ3¶T0P0QÐ5T06Q01WH1ä*T06PA =C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]ÔÍembo‘ùÙ`®Ú¯ºùÿÍþY¾aûÿo}[&áÝŸýáÐÁ¦†.WO…@.*c7) endstream endobj 482 0 obj <>stream xœ33R0P0BS3s…C®Bs ˜‚PBÏPÁLÏR!9—ËÉ“KßÓW¡¤¨4•K?¨†Kߨ„Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-¸%6Oxn¢ŽêÒ±iQÜœ:ª 6Lk:„`^ê½3kÁ·orÒ7*òîmoƒ1Û··ÉÝ“¨®ÈÏ““ûpí ƒ —«§B p>& endstream endobj 479 0 obj <>stream xœ3¶T0P0QÐ5S06Q05RH1ä*T06PAS =C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j+nHÈ~W[}ïï{ú¥ÿ¾‡Ñ¡û÷®08°p¹z*r{A endstream endobj 476 0 obj <>stream xœ33R0P04R05S0±T07VH1ä*T06ŠÅÍRz† ¦¦z– ɹ\Nž\úž¾ %E¥©\úá@U\ú@E\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmÁÁ q‡ø9lm>4_>dµàÃd>E¶C|s^ž\Åaº¡9€‘A€ËÕS! ¨*)÷ endstream endobj 383 0 obj <>stream xœ37R0PasKss…C®Bm1W0Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp .}0éà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠŠíì¸<]ÔÎ*a=yt‚Og‡Á4*¬›äí©7ýÕ®øo[×/Ͼc°÷ø(ø§Âò_m‘SSCàÜàÏ’–4ûÿÿ01(p¹z*r~ò\û endstream endobj 380 0 obj <>stream xœ3±P0P0VÐ52P0±T01PH1ä*T01Š(˜¥ô A’@29—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-lvôãd‘ªpüÅHn—ЏCóyÏ_µú˯¿þÞ¿þÿÿ?Mã¯ïÿ»õëíØ­×æÞø¦%v=oEbEžúÿ ð§±èWýïF.WO…@.º-ET endstream endobj 346 0 obj <>stream xœ33U0P0RÐ52R03T0±PH1ä*T0µŠ(˜¥ô A’@29—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨­XÍSÿÿŸ«B[ø÷èëÙ{Ëv_Ïþw·ê}캯· Ä¿Ý¥¯Áâ{ ßÖ¿­»Bõ_×G}=ÝoË5½­¯cµ¼|Cõ&ÝâÌ »vè`SC—«§B Š0O endstream endobj 343 0 obj <>stream xœ3±P0P0QÐ5T01V05PH1ä*T0¶ (˜õ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYH¹DrÄré»é;;»¹66úÞ@Ý\úÎù9¥¹yÅ@-vv\ž. j O$5dæn±Ñë<òBÀnBÝüøåý÷ßÿ¨í‘™µÈÀøi„šÜáÕÕÕù¼î96ýd•zpÇfuáþüß_³Kk—ò¨²qºú{5s 9(04pp¹z*rç=¨ endstream endobj 340 0 obj <>stream xœ3³P0P0UÐ5T03Q0±TH1ä*T0µ …HÏ($’s¹œ<¹ô=}JŠJS¹ôʸô=€j¸ôœ ¹ô]¢ ¹ b¹ôÝôÝ€Ü}o n.}çüœÒܼb ;;.OµEÂMM…=Í=ÿÿOšpAîýlàõÿõÿvÿ]œ½+ü†WpÛ7 ï1¦‡c$4401(p¹z*rÑFå endstream endobj 337 0 obj <>stream xœ36P0P0Q04W0²P02VH1ä*T02Q ›)˜è*šéY*$çr9yré{ú*”•¦ré‡Õpé{(˜qé;8+ré»DrÄryº(ÔÿÿDÿÿÿƒ#.WO…@.Bü"À endstream endobj 221 0 obj <>stream xœ35T0P0WÐ5T05T01PH1ä*T01 (˜*˜ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ô[ðÕè(d_\Íñ°ýr†Ú× þצ¾ýú?nemýõ¯Ç×mU[¤ÿ?6{=_Êzµþ×Ú¬]ÿ¯¿ÚúoËþÿÞáÞË´yÙDX¸\=¹6pB endstream endobj 218 0 obj <>stream xœ3±P0P0bSs…C®BC ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-8ø!iþËÿÿæÛìÿÿoûe þÿ×þ×ýÿÿ—ñ¿Éõ Áÿ_þÿü`nþòÿÿ¿î›ÿg­Ç¬£Ëÿ«­4e`ärõTäƒJ: endstream endobj 215 0 obj <>stream xœ35T0P0UÐ5R05V03QH1ä*T0± (˜™)˜êå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[sÁŽÃ´E*Âý(ÿ‡[YŽ/ùå9*nýõõï—Æÿÿÿ÷ü7Ûï÷Î5$kNôàâó¶?ÙI†¦Hq~û~ÿûYöÿ¿½¶ÿÿë­¿®V¯»ôõáÒsjSr š–ñ¨:v„H„8‹4p04p¹z*rèÔU¡ endstream endobj 212 0 obj <>stream xœ³0V0P0b K3#…C®B S ßÄ5Ñ3TÐ5Ð3° hr.—“'—¾§¯BIQi*—~8P)—¾P%—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[ÈUpýËÞ"A ¡—õg´ ¦ÿ»ôÿÿ%»þ_›Z]ÿ+þeýëuÓ/×ÖMÿÿoú¿]Û¦_¿þ²þÿ˺{»^Öf†ÿÿ¿¢´þß­øÿ¿¼×ÿ5›Š®ôØ®ë×c¯¯­ÊÛ¡ðÒbÖ¡Aµ¡ö Œ\®ž \ƒ”id endstream endobj 208 0 obj <>stream xœ3±P0P0U02Q01R06TH1ä*T06 (˜+˜ê*ëY*$çr9yré{ú*”•¦ré‡Õpé{( §gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔagÇå颠¶²&Î7èC—«§B € endstream endobj 48 0 obj <>stream xœ33T0P0QÐ5T05S05UH1ä*T05 €DLô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[pg‹‡€2‹œ@•âäC,U¾/Í—üò}]åÿ}õ××õ¯þÖ×Ëÿ—[põÿÉUÿ«ÿOÈê½|ëþ¶é¿3s×ÝŠNÔ1ºa¤ep4±µ™uB€ ƒ —«§B P×B endstream endobj 45 0 obj <>stream xœ37U0P0UÐ5T07T05QH1ä*T03 …MLõ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[ÈŬ± pBÌþÿfMi®-xøˆÿÿõéÏÖ¯ß.ýÕ¨NÔ¾aà½1Æô0÷„›Kæ(04pp¹z*rlÆL endstream endobj 41 0 obj <>stream xœ33U0P0QÐ5T03Q05UH1ä*T03PAS3=C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ô¼b¬" Æ!'P¥Âñ%ƒ»}ÙýĽùÛûÿ?sÿ·½ëåÿÿÿÄ&úÄ„ñ‰¸ðAAþ&Í#/Ä[¸/ÄM_ú²*nüÇøÿ¯¿mÊÚÌýúíÒêLçÛœ­ ÕÞv|pˆ7ÅÀá ƒ—«§B ÀŒKá endstream endobj 38 0 obj <>stream xœ32U0P0bCsC…C®B ‚@Ê\ÏPA×H$çr9yré{ú*”•¦ré‡e¹ô=À¤S€³‚!—¾K´!—A,—§‹‚C}C}ÃÿbË1p¹z*r(; endstream endobj 35 0 obj <>stream xœ3±P0P0RÐ5T01U0¶TH1ä*T01 (˜eô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQPfùçë3Ç€;Ã`ßöu_ÿ»^õ?Wÿwìë¿[ö¿-_ÿíÒÿ­÷À íÿÙßö[ÀÄ Àåê©È’Å9 endstream endobj 32 0 obj <>stream xœ3³T0P0b3c3#…C®B3rõ t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº((=¸#ci*é` 'Å&ßöwþáúºûÛßûÿûûïÿÿÝÿÿÿ?Ák ¾$ã×{ÿ÷~}ýÒ—=ª/ô9 ]BDDX¸\=¹8Iz endstream endobj 12 0 obj <>stream xœ340R0P0bK ss…C®BKS ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶b #Ãþÿ@ð§¹CqvÜTÆù¥»¢3s—nÛ»tWté¶i·b×ÝŠ^ºmÚݲi·¢×Í-ݺuëþêê·o¿/_7¿ªªJý×ö%÷&ׯM~i¾ºÊ÷eÜä/÷&Wù¾®ò‰š/­ò}b›/#"ÔpÿÿÿL \®ž \ü¥\h endstream endobj 9 0 obj <>stream xœ37R0P0b33CC …C®B3C €˜oªg¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@µ\ú ¥\úNÎ @žK´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+ê±³ãòtQø¯¶pN Ï’Á?•5æÿ˜¸\=¹!+Sž endstream endobj 473 0 obj <>stream xœ31T0Pacc#…C®B# ßÄ5Ô3TÐ5ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmI–Þ®OB=gÞˆkº·íÒ[]º±nÛîûþþnvS_ÚM® _ò+|õÃ|®y¯Žíg`ärõTäðe6í endstream endobj 470 0 obj <>stream xœ%Š» Â@D-¬æ+¦JïîJ…B6 ."ÄÊB¬L:£øÈGå+õ‚S Ì9³ÞÒÐz¦žÎ1sì-žô ³š•U§uQEH<ðóšȉ²Ó¤ê-¤>[˜ ¤•Z]žËž©šð¸MãýM_ˆ5“¹ùþ“ÌårQ¢‰<â,#A endstream endobj 467 0 obj <>stream xœ31V0P0bcc…C®Bc Ì5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ðÏ'ªZr~â¹´Zôëׯÿ¯¿^µþÿ¿]Ãÿÿ3­ M[ÿø ƒ—«§B †è;^ endstream endobj 464 0 obj <>stream xœ3¶T0P04VÐ54P02S’)†\…  4Éé‚ddr.—“'—¾§¯BIQi*—~8P’KߨŠKß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷jçÒwÎÏ)ÍÍ+j±³ãòtQP[sóÿ^û÷÷üºnš8§k¨ç*VF.WO…@.¤Š%i endstream endobj 460 0 obj <>stream xœ3¶T0P0RÐ5S02V05RH1ä*T02 (˜Z(éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³ãmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]ÔVº>¹šbxÿ?:˜¢PiêÅ ÀÄåê©Èn¢0ý endstream endobj 457 0 obj <>stream xœ3¶P0P0QÐ5T0¶T06QH1ä*T06 €(=C HÎåròäÒ÷ôU()*MåÒÊré{€I§gC.}—hC.ƒX.}7}gg7 7ÀÆFߨ›Kß9?§47¯¨ØÎŽËÓEAmA[ÃLJ2U,ÒÊo׿4ß½ÿ×?Ç&#Î0Ž‹+¦sV….ýúºõÒã%«¿þ¿>9äb«÷¥ë¼-3Öv„6s,`bPàrõTälá=, endstream endobj 454 0 obj <>stream xœ32V0P0bcSSc…C®Bc˜ˆk¤g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmÁ‚ÏMüŸ«þÿ¯§ÿOøý­úÿÿúúÿPꚊÁñ†.WO…@.y:> endstream endobj 450 0 obj <>stream xœ36P0P0RÐ5T0"…C®B#K°±©‚‘ž!PH$çr9yré{ú*”•¦ré‡qé{Õpé;8+ré»DrÄré»é;;»¹66úÞ@Ý\úÎù9¥¹yÅ@-vv\ž. j Úқض$mhd¿T«þ?~Õûÿ~’¨6åN|ûöáž6Á çm?ïþýmýý—å¿3Eµxœt`apàrõTä«Ì9› endstream endobj 447 0 obj <>stream xœ3¶T0P04UÐ5S06S05RH1ä*T02Š(˜Z¥ô ’@"9—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j+]_UþG€Ÿó|ƒ8¸\=¹)˜+U endstream endobj 444 0 obj <>stream xœ33Q0P0bS3 …C®BK ßÄ5×3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶`ç ‰ ¯>8|‘TP¾¸Àà ç^µ/¢/¤kÿ~,ÿÿgÖÒ_·b׋ìºbtuõĦGÅf_úú7ûoý xüÿÿãóªê—y[G$æ:°08p¹z*r;NW endstream endobj 441 0 obj <>stream xœ33W0P°P06W0µP°4PH1ä*T05PASc =Cc3=K…ä\.'O.}O_…’¢ÒT.ýp ".} .}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶`Á ¹ùÿÿ¿­ó©ic?ÄÏaËÞòåËï̤/'Wñs–¯¯zû2±í‚c½F:â˜ØÚÌÚÌÚÄÞÄÞ"Ç1¡wA…êrT“¨Š®Í¿ö‘›wrȶ]¾ß¶m“:ÌÍ£Sø×þÿÿ[‡¹˜¸\=¹_©Lû endstream endobj 438 0 obj <>stream xœ3¶T0P04VÐ5S06R05RH1ä*T0‰(˜Z¥ô ’@"9—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-l]ÎÅí½¶d×¥¿ú—þ_úÿcýÿÿO®Úÿ¿ýÿößý·ßç×}û&wïî÷, \®ž \‹"90 endstream endobj 433 0 obj <>stream xœ32Q0P°bCs …C®B e„ –z† ºz–` œËåäÉ¥ïé«PRTšÊ¥®`Á¥ï"œœ ¹ô]¢ ¹ b¹<]dêÿÁ? .WO…@.ö4 endstream endobj 404 0 obj <>stream xœ3³P0P0QÐ52T03V0±TH1ä*T0µŠ(˜¥ô A’@29—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-’bQa+lRfh>ÄïÖ\È"Q”åÈöM¸Öüúåúºÿuÿëÿÿßþ–þÿ·ÿoUì¿é™eÓyõÅLhlÙÛwèáOJ6õ5ܘã04pp¹z*rþL endstream endobj 373 0 obj <>stream xœ³0W0P0bsKsS…C®Bm1U0Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp .}0éà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠŠíì¸<]´,XËÈðððä€å¤¿ýÝŸûÿíÿ÷ßÿ/û}ýõõË^}Ç ïƒ¬Gô¸›~^ Áþp?}þíoÿþáÿßÿÿß_ÿÿü¯¿U«~ÅMoÙ#ÔÑÊ%¢ÁËÀÄ Àåê©ÈÖIW% endstream endobj 370 0 obj <>stream xœ35S0P0TÐ5T05T03WH1ä*T05PA3 C=HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ôvò˜¼<þ)k÷ÿÿ` ¨þ ñ‡ãÿË_~ìËV?È\£ö‹ÿrmÝ}ÿï—ÿÿ¿_Ròo÷ú¿õoõ{oý²Û»M¼MèÑÎ/{×g—‰]HLâap`árõTäÎ…Mì endstream endobj 367 0 obj <>stream xœ35S0P0S0²T0±T06WH1ä*T01 (X(˜é*YèY*$çr9yré{ú*”•¦ré‡Õpé{(Xpé;8+ré»DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.OµQ…5³–ne`ärõTä-üô endstream endobj 334 0 obj <>stream xœ33P0P0QÐ5T0µT05PH1ä*T05U ›*˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ôì¼ÀãQP¡ðE®ó¿Cã^³/·ßþû»ÿÿ·o{×gÿÿ§-âL[ÉLÞ„n +ö(Ä5}_ú²þeýÑúÿëo\uF?»:Q£:ÓãÀ½ƒMþIó¤* šOXq˜H5p04p¹z*r3fK» endstream endobj 331 0 obj <>stream xœ35U0P0QÐ5T0"…C®Bs  HÄDÏ($’s¹œ<¹ô=}JŠJS¹ôʸô=€j¸ôœ€”K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶pA¿ÂÎ… Ž6å ÷šü=mU/}ý„Ù·®®—Ûgÿÿÿ“«Õÿo’¬¬Ï®ºû:Gï°wbË6 Õ6ÅÄ5‘¼ŒX¸\=¹/Ö=¤ endstream endobj 327 0 obj <>stream xœ35S0P0b 3s…C®BC ßÄ5×3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨­hfbýrÕ‰ÿ8ÁŸEûÕV:°08p¹z*rZ;> endstream endobj 324 0 obj <>stream xœ³0U0P0b s…C®Bs3 Ì5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶#þÿŸW|¥,"Ùl¸Ï]·ýuý¿íÿÿ¿®ÿÿÿÿßÑÿÿÿ4e›ÉÖÿ øÉÃZÿÿ ƒ—«§B ¥ÆL± endstream endobj 320 0 obj <>stream xœ33T0P0bSss#…C®BS ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶pU…n}léõ¯×ã¯ÇÖ»‹Ç{¿¾ôõË^ýõñÞ—~}Ù[«¿Þû:„áýúú¥/ûöêÇiwrHÿ4ek’ˆÿ?™Xëÿ08°p¹z*r‚Dñ endstream endobj 317 0 obj <>stream xœ³4P0P0UÐ5T°0Q040PH1ä*T0·T‰*˜êeDr.—“'—¾§¯BIQi*—~8P—¾H—¾S€³r‰6ä2ˆåÒwÓwvvrllô½Ú¹ôósJsóŠzìì¸<]ÔlðàTX±þÿÿO,Sßïÿž3âbü¡ð• Â_\‘¨pì÷°kªU¿T¿üú¥ÿ—þ_ÿÿWÿÿÿ~ˆŽŸ¦ñÿÿßþÿ¿þïþ¿×÷—ÞŽÝz·LÂ?×¶Mp‘Êáj6Wå6Å‚C[¶žHeWlbà`hàrõTä!Äg) endstream endobj 314 0 obj <>stream xœ³0T0P0bs3K…C®Bs# ßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶`Y…¡l}léõ¯×ã¯Ç–þ-½øõÒÿK_öê{ÿ÷¾ôeßÞZ}o þ¯¯(ü®G‡ë'äš6ÿ‡‚\ÿÿ1(0q¹z*r¯eV1 endstream endobj 277 0 obj <>stream xœ3±P0P0Æ@d©bÈU¨`h䃹†z† ºz–@`aªœËåäÉ¥ïé«PRTšÊ¥TË¥ïTÊ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]ÔÖÜn‘›ôSÖô·‰­ýÿÿÿzO ª^üäªø­m" ,\®ž \°û,Ò endstream endobj 274 0 obj <>stream xœ37S0P0UÐ5´P07P03VH1ä*T03Š(X*˜ê‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³r‰6ä2ˆåÒwÓwvvrllô½Ú¹ôósJsóŠZìì¸<]Ô\Š1žÎíkÿ5þ×zdüÿjý«ý`\Ô«ôäªNÛ…}¥ñÿWÅAøßê)™âj+SÄq?ý·úèÿ_ëÿ†ÃðÿWû¿Æƒð[SF.WO…@.ÇYÉ endstream endobj 228 0 obj <>stream xœ32W0P0b#s…C®B#C ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(<¹ÒËuý?ø7Çoá>&.WO…@.íK3“ endstream endobj 225 0 obj <>stream xœ35S0P0bScK…C®BSrõ t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-XpCãW=.?Sÿußü¿jÿÿ{îGfôûÿlP^rÿ×}ÿÛ/¿~yoß,>Å&eæú, \®ž \!íBB endstream endobj 205 0 obj <>stream xœ3±P0P0bS3c…C®B˜k¤g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmÁÁúŠ&ÿO$Íþÿÿ××ÿÿש‰Â¯ö㾡ߺFoÒñ¥õ½CÄ=+¼/ùñå§ûÃxÿ«_~Ý÷ÿþþûûµ_þ׿®Ê°˜Ë±¼dƒ—«§B g¹K endstream endobj 202 0 obj <>stream xœ3±P0Cs…C®B,$ô t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-XpF|NƒãË™D‹¦±“ž|ÒÈ?”¿~ùÿõÿöÿG‡<¿\îÞç´vÙ&.WO…@.n @ endstream endobj 199 0 obj <>stream xœ3±P0P°T01R0¶P05SH1ä*T0² (š(Xê*˜êY*$çr9yré{ú*”•¦ré‡qé{Õpé;8+ré»DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.OµmŒŠì-ró*²/’*ä0(yÈ®¶Ò´M Ñ…ÁËÕS! ;À#è endstream endobj 196 0 obj <>stream xœ3±P0P0bCSs…C®BcS ßÄ5Ó3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶Ð“ñAÇÁDö¹yó:™ì8äÙßýŸ²oÃ!ΤÞÞÞŽ™ºz[ö{¯¿¾þÿÿÿ·ŽÿÿÓ¦Ìaùÿ­? ˜¸\=¹{æ:R endstream endobj 193 0 obj <>stream xœ3±P0P04T0²T06S05WH1ä*T02Š(Y¥ô€’z– ɹ\Nž\úž¾ %E¥©\úá@U\ú@I.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶QF‚µEÂñèò[_þƒÁŸYkK~_;ÄëÀÂàÀåê©È§è+ endstream endobj 190 0 obj <>stream xœ3±P0B]CKS#cK…C®B$j ”Ô3IÉä\.'O.}O_…’¢ÒT.ýp *.} ".}§gC.}—hC.ƒX.}7}gg7 7ÀÆFߨKß9?§47¯¨ÅÎŽËÓEAmÑÄFÛÚ‡M·«ã£—~}}7oÜôú¥û_V}^}éý]qûc×_;Z¿õoÝõø¥ë£¾.eË6mOffv¨§ç*Õ[Ñ5p04p¹z*r:VCj endstream endobj 187 0 obj <>stream xœ33W0P0QÐ52U03Q05QH1ä*T03PAsK=C$LÎåròäÒ÷ôU()*MåÒªâÒ÷*âÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j /ˆññT8¶|hæ^$É9ï…€ñ—»|÷ª½ŽÎþ¶e¶ü×ýÿAàïë¿[ößÛvé¶w®Ð…µ2Ž%QK>þ­ÿýOžbÀÅ”%†ÍßÁ÷–»4XùÎ^÷÷Ü_±¾þÿïHÓ¨·åk·l“ðNli ^ó8l:Øt"ßA€‘ËÕS! }•a` endstream endobj 104 0 obj <>stream xœ31U0P0V06U06T03VH1ä*T0² €(c=Cc=K…ä\.'O.}O_…’¢ÒT.ýp ,—¾˜t pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@Åvv\ž. j78ç $²KÝý{ÿÉÕ8É}’ûeêÿ ÿÿjoØê«Y»<3U¯fí ap`árõTäªö/¶ endstream endobj 101 0 obj <>stream xœ31Q0P0bcKCC…C®Bc ˜oªg¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@µ\ú ¥\úNÎ @Ê%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææõØÙqyº(¨-<ߦȾ¼Eþå¿ùÿÿÿ»þ¶N":"1ùÿÿÿ?Y”5ÝÿÿõýþàQÛF.WO…@./àLT endstream endobj 98 0 obj <>stream xœ³0U0P0VÐ5T°0T03QH1ä*T0· (˜™*ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠”¸øÿŸYÙl›Þ¶qÿÝõõöúØ×[ïíŽÿöúzÞÞòu׫ÞÖ… âÿsõáâÿ®¿DÿoAè†.WO…@.„gN endstream endobj 29 0 obj <>stream xœ3²P0P0bc3…C®BcßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶pÎO'ö–Š{ž/ÕC—¾^ëRöñÿ`ð(KüäŠåûÿ£‚åS„ÿ1(0q¹z*r€B— endstream endobj 26 0 obj <>stream xœ31U0P0VÐ5T01Q01TH1ä*Ñ@hb¤`¬g”ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ @ŽK´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶ð,³K÷:Á‡í ÛWט}yûÿÿüìÃÜÇÿÿi+øÄ7ŸÅï‡[Ò‡Æ ï qÓ—þ_úKûÿ¯ÿ?M}ëzôsÕ.ÝöºÎc0Y´Ms„¡†.WO…@.¿cC¯ endstream endobj 23 0 obj <>stream xœ32S0P0b#3c…C®B#C ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-¶3ü3k~íœàË£RÞŒ \®ž \gŽ<8 endstream endobj 20 0 obj <>stream xœ37S0P0bs…C®BsC ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-¶8#aÌãÈ|ÈÌG9åCSŽÂìÉÁ f;šï ›ú>¶nMîßðãÃÿ_­ÿüÊ\.¼Zõ¦žôÿL \®ž \q#K" endstream endobj 17 0 obj <>stream xœ31P0P0VÐ5T06W01TH1ä*T06Q ›)ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶°Ùa‚Ç~.¹&69¡½ »–/ýúúÿ’ëmb‹ÿºÿÿÿ)kþ¿»ßíÛv=o»wnÙ!nƒi­Í¬ Œ\®ž \Øö7\ endstream endobj 581 0 obj <>stream xœ37U0P0WÐ5T03W°0VH1ä*T03PA s=C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ô.h“â±d=½ŽCê!Û.Þ‚¾F©‚l|»8$¾Ôª¿°[ùõ—_ûÿ}üý÷þ÷ûÉ|¾5-¼>3Øf+;NŸŸ²€ãðjþÄ·@ðpôÁ=…:m rŽkãœCäøÛ—gþïïÿð¿K¿ß Ûp©mŠÉ‚CÁ¯dƒE[-H dûu€…ÁËÕS! &A]Š endstream endobj 578 0 obj <>stream xœ3¶T0P0TÐ54W06S06RH1ä*T06Š(˜X*ê%dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔΥSš›W ÔbgÇå颠¶bΙCÝíEYó>stream xœ31U0P0b Sc…C®Bs ßÄ5Ô3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ÀqAûDö–Š€CùjšVžºª/ýÿIDùòÿ‡A«ù“ƒl$lààk1‰g¹ü†.WO…@.Ï`Ež endstream endobj 572 0 obj <>stream xœ340U0P0bC #…C®BK3 ˜k¢g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEA!qiõï“+”n¸',ÿþÿþyõßõÛÿ1ýG¡`âÿa‡Pÿÿ÷ƒÀ? øÿ q‡Á­÷û~02p¹z*rÇènX endstream endobj 569 0 obj <>stream xœ3¶T0P0bcc3…C®B# ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ÒõÉUÖ÷ÿÑÁ)uñÉ! ˜¸\=¹_(3< endstream endobj 566 0 obj <>stream xœ3¶T0P0bcc3…C®BcC ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-œ#Æùò嵞ûÜ«cùÿÿªÒýÓÔ[±ú?|^qùÿ­†.WO…@.Åè6º endstream endobj 563 0 obj <>stream xœ3¶T0P0RÐ5´P06W06VH1ä*T06Š(˜*é‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³r‰6ä2ˆåÒwÓwvvrllô½Ú¹ôósJsóŠZìì¸<]ÔNáV¬Qo‘ðçˆÍhŽ26˜×Ä»õÇ—_¾ÿ`Ûôì‡9 c3‹;ôyôåß§8ÄÈó;¾üüà/ ï9ëåÿGšF=l½í=…ûƃm(>ÀÂàÀåê©È C endstream endobj 560 0 obj <>stream xœ3¶T0P0bccc#…C®B# ßÄ5Õ3TÐ5ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmÑ$ƒÅŠØÒgII¶õ[“ÕVÈ+6ßôÓmo““>QkÄÌ~jÛÑýµQ‰I«– eM0XÀÄ Àåê©È"}/0 endstream endobj 557 0 obj <>stream xœ3¶T0P0Q02P0’f )†\… Æ h¦`¢g¨`h©g©œËåäÉ¥ïé«PRTšÊ¥TÃ¥ï¡`Æ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠ:ìì¸<]ÔVº~ÊšÂàÀÂåê©ÈßÕî endstream endobj 554 0 obj <>stream xœ36P0P0WÐ5´P02U05SH1ä*TòÀâ& æz† I ™œËåäÉ¥ïé«PRTšÊ¥TÅ¥ïTÄ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{µsé;çç”ææµØÙqyº(¨-Ø·eÃô¨¨—™uÓ¦¿¾¶7ûoöÿkûÿŒÿÿÿÿÉUõÿÿ¿¿~õ÷ýoßþ»wïwíý»8¸\=¹ËÄAX endstream endobj 550 0 obj <>stream xœ3¶P0P0ac …C®BcC ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(˜6?¹:³­:þ? <¬ÿÿýÿKÿ¯_ˆèoà`hàrõTäQ›3G endstream endobj 547 0 obj <>stream xœ340U0P0bKK #…C®BK˜ˆk¢g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEA5áŽþÿŸ¦,¦Ì™WÔÙÒø/}ÙËúPßHé;V€)ï qB êÒ—= `êo­=篺}ó—¿üá–ýÒüe¼È}ÿCù«_þÊ_ök}þíßß¿ýÝd¼¿ýýÛ¿¿ ÆýÛ@Æ…GE:Òÿ04pp¹z*rÚÔaø endstream endobj 544 0 obj <>stream xœ3¶P0P0VÐ5R06Q05PH1ä*T06 (˜õ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j Ï·7±/øÐÏûBá^Sþ²¯uëÃÿÿûÿ;îõÖ¥·¢yu·l“ŠØ~˜r†Ê½&Þ—æKäîû/ù'-7ÿþ÷K“C{çßöÎQÝ0M¢µMLBƒ¡ƒËÕS! û3Dr endstream endobj 541 0 obj <>stream xœ32T0P0SÐ54U" …C®BK ˜‚‘±‚™ž!H H&çr9yré{ú*”•¦ré‡+Xré{Õpé;8+ré»DrÄré»é;;»¹66úÞ@Ý\úÎù9¥¹yÅ –vv\ž. j;t-ö=¹š#ñÿ×믯ã¶^ºôŠA‰ËÕS! õj&· endstream endobj 307 0 obj <>stream xœ33P0P0WÐ5T03R01PH1ä*T05U ›*˜ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]ÔÉðD8NHbâwSþ2ÿËú]¯_/_õoïúëW3­ÿÿ8ôתÉó¯ÿ ýµ¶~ýר¬]ÿÿ_]·úoýúÿ—¾þ÷.{·ÝÍ*víÒ¶K¼-Û # [¹\=¹6ŽK< endstream endobj 271 0 obj <>stream xœ3±P0P0bcK…C®BC ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨í¼Ò˜¹\öϬµ¹¦kŒEÿö.Ùvéö_Ý®[÷³×®ûzù½ûäK_ó—}Yöeþê«{Õ>­bÉrºœ}yrȬ†.WO…@.Ë¢@y endstream endobj 268 0 obj <>stream xœ3±P0P0QÐ5T01V05WH1ä*T0¶ (˜Z(˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶`ç‡8¹yUUUêæ škí&Wù~ùußÿßäz õÿ¿ÿÿ¿Umuüÿ[ïã¿í¾þwÝ­ø·K·MÏÞp(ZtëÖ6±k<" ,\®ž \X9DŠ endstream endobj 265 0 obj <>stream xœ3±P0P0bSs…C®Bcs Ì5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ æâAö–¯—× ïe}¹VáЋúÿÿÿ[Ü›S¯¶2Eø?2øÜ˜yôSÖ´+ ,\®ž \“¢>ª endstream endobj 262 0 obj <>stream xœ3±P0P0RÐ52T01U0¶TH1ä*T01Š(˜¥ô A’@29—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨í\‘˜¹\öSÖÖ-×ÜŸˆ¿ÿ÷ºþú®û_o¯ÿýÝûßßKÿó}½ýoÿÝêµÿìoý¿õÿõW üô¶äµo­ÞôK¶íºuë0+ƒ#—«§B ¡%L endstream endobj 259 0 obj <>stream xœ31T0P0bS …C®B3 Ì5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶pЇ˜ã®…óyæ5ª/ÙåyéeýÒÿ[—þŽ“ˆ³ÿB>ú?M&°A¹¨à)ãÿÿX¸\=¹u8JÇ endstream endobj 256 0 obj <>stream xœ33W0P0b3#sK…C®BS ßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶àV­ýõØÒ¿¥×¿^¿+«¿Þûú¥__öÖ"Þ¯/}ý²o¯~<˜±$Ñõ(„ퟯãšâÿÁàŸ³Ãþÿ  \®ž \8-M¬ endstream endobj 94 0 obj <>stream xœ32U0P0bCscK…C®BCrÍõ t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨mÐQø§?9d?Ný 0}Èþ±fÖÒ‰, \®ž \®“)i endstream endobj 397 0 obj <>stream xœ3±P0P0bSS3…C®Bc ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶â•¨ëòÿj+M'}H?ýïVüÛëë¾Þz»î+ým÷õß™õ{ ßÖ]ÿwý?üsüzùòßµ+8¸\=¹¼ßEü endstream endobj 394 0 obj <>stream xœ3±P0P0QÐ5T01V05WH1ä*T0¶ (˜Z(˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶pÁõ9q—Æ/œ{õk«â&Ç]›ðu}üzëŸ sXq½óJð¼Ù¿êÞÿ4ÿÿwÿº×õ[ïê]ÏÕ»tÃÀ;iÛ¶ ‡sóh04pp¹z*rßìC¸ endstream endobj 391 0 obj <>stream xœ3±T0P0WÐ5T0±T01PH1ä*T01 (˜*˜ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]ÔÉðœpœp^ÊÐ`Þä_á¯×ǯºÿëÕþÐø«¾ž\á›ýeÿëØº]Ãÿíz°kýÿø×¯öÿ /]¿³5öPlî’—‰>aŽ+8¸\=¹†DU endstream endobj 357 0 obj <>stream xœ3±P0P0bS3…C®BC ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-hgš#ÿåòøÿkýÿS?öÌZºu¢šëü¿á`á«ÿæZÊO´‡(‚[Ù?8¸\=¹¥FÊ endstream endobj 354 0 obj <>stream xœ³4Q0P0QÐ5T°°T07UH1ä*T°0 (˜›)˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠tpóÿ'W4¯˜õ·¼­ÿO¼Ûûo÷õu÷_æþ^ºmÚ ï\Ý6¡ Ó$×hÝXc°!1á`ŠiiC—«§B ©¼Z| endstream endobj 180 0 obj <>stream xœ36W0P0bcc c…C®B# ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ó¨üŸYýûÿ<î`apàrõTä =EM endstream endobj 177 0 obj <>stream xœ3±P0P0QÐ5T0£C®Bcs  PØHÁDÏ($’s¹œ<¹ô=}JŠJS¹ôʸô=€j¸ôœ ¹ô]¢ ¹ b¹ôÝôÝ€Ü}o n.}çüœÒܼb ;;.Oµ…ÍšUUUi¨/pÜ«~Á÷÷Ëxÿõ×ßöGüõovžúï»Â}k¿ûù·n$ê6sæTGd'&¶6³20r¹z*r[Å6ë endstream endobj 174 0 obj <>stream xœ32U0P°TÐ52V"3 …C®BC (PÜPÁRÏ$ $“s¹œ<¹ô=}JŠJS¹ôê¸ô=€Š¸ôœ€”K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQøœhÿüy!ý‘A€ËÕS! &Ž1í endstream endobj 171 0 obj <>stream xœ3±P0P0RÐ5T01P05PH1ä*T0 ¹† Fz†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïତ\¢ ¹ b¹ôÝôÝ€Ü}o n.}çüœÒܼb ;;.Oµm‡Smëÿÿÿÿ¹3󸧬iNÿaà'ûyÿÿÿ¿m÷Þß&tcíºmæbP`ârõTäæ:µ endstream endobj 168 0 obj <>stream xœ3±P0P0bS3…C®Bc ßÄ5Ô3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶3Œû‚ÅŽ¢¬y÷¼O”Täß¿ýíïßý@øïïÿÿÿóÿC@|üÿ×_ÿ¯¿¾~éë—U¿â„Ω. Êjº¡ÁÐÀÁåê©ÈA‰G endstream endobj 165 0 obj <>stream xœ3±P0P0VÐ5T01W05SH1ä*T01 (˜š+ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶`ÁUÛúÚO’ûÿÁOöåMüê¾^we½àøE n¾÷÷KuûÿÉîó ­·:vÿÖÛÜ©þßžât#´M8"‘‡Á…ËÕS! ƒ€B¦ endstream endobj 162 0 obj <>stream xœ3±P0P0UÐ5T01W01TH1ä*T01 €(S=C HÎåròäÒ÷ôU()*MåÒÊré{€I§gC.}—hC.ƒX.}7}gg7 7ÀÆFߨ›Kß9?§47¯¨ØÎŽËÓEAm‘sŠ€-ûòåËϲÖ2×ý»wùmœþÿŸ¬¯OýÐç^××TÀy!ž»ëõÿ¿ù“C®oØÍ#ȶ±|“`bË7l¶ ..WO…@.‚8Õ endstream endobj 422 0 obj <>stream xœ35W0P0bS#s…C®B ßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠à(ÌÎçëqAð-3ÿáºûÛßþ®û_÷¿þwýÿÿ÷ÿƒÀßúÿKÿÿ›~}ýÒ¯õ½E%LqÑ`dàrõTä_ê={ endstream endobj 419 0 obj <>stream xœ31W0P0acs…C®BcK ßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠p°_mIëÛúÿðCÿÿ¿éÿÿ¿þ¿~ýú¥Ë¸ÿ08°p¹z*r•À6• endstream endobj 415 0 obj <>stream xœ³0S0P0SÐ5R°0Q07QH1ä*T0· (˜›)˜éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQPu\åè¸BÆÒTòŠ?¯@žÛÃý<öù·ÿýûûÿ÷ÿàßþ/û}Ù·WŸ³ŠûPœC滟2¨“þpøÛßýùÿóßÿ¯ßÿ¬ˆ+Lÿÿ¿þþÝ̯-Ò5^ ½sË.U[°a·{C—«§B k^> endstream endobj 412 0 obj <>stream xœ33P0P0bSSK …C®BSC(k¢g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ @ŽK´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQø3«éI‚þ¢Á#Wæú†.WO…@. —KF endstream endobj 300 0 obj <>stream xœ3²P0PÐ5UÐ5´T"3#…C®B# °‚…¡‚®‰ž%HVÏP!9—ËÉ“KßÓW¡¤¨4•K?¨ŒKߨŠKß)ÀYH¹DrÄré»é;;»¹66úÞ@í\úÎù9¥¹yÅ@-vv\ž. j è(ü÷ÿŸýáÐñÿÿÿ4Ë+eÿiÓ¬þ Îϵ‰Íþ›é¹*žSǬéÆ †.WO…@.Ó>?w endstream endobj 297 0 obj <>stream xœ3²P0PÐ5VÐ5´T0¶T03QH1ä*T01 (X%Œô,A²z† ɹ\Nž\úž¾ %E¥©\úá@e\ú@U\úNÎ †\ú.ц\±\únúÎÎn@n€¾7P;—¾s~Nin^1P‹—§‹‚Ú‚k…‡ø9ž|™½ê…nø—ý¿>º$ÿÿúz úÓÜòÿDÎû¿Uÿ!|ºôÿ¯þÿKgë„ÿ-þ²o•PPÖô[Ñ5p04p¹z*r›Q endstream endobj 294 0 obj <>stream xœ36W0P0SÐ5T06W01PH1ä*T06 (˜*˜éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]ÔœéÄÏñ½E ßó×®µª¯]ÿwèMõƒŸW¼ù÷îÝc>!¦§­óý¾èŽ¿ò_‹Æ˜Ô2eÖú[Ѻmœ‰Œ \®ž \tÇ= endstream endobj 291 0 obj <>stream xœ31S0B]C S…C®B$jj¡` g’’ɹ\Nž\úž¾ %E¥©\úá@U\ú@E\úNÎ †\ú.ц\±\únúÎÎn@n€¾7P;—¾s~Nin^1P‹—§‹‚Ú‚çÌóÄÙWsÜl¿œi¾núµ¦üˆ«þÍÙ·ûë߬ý?®ÿZ¿nÿ×x öþ·úzÔ×__¶þÕ»ôe Ç ÇêÌ’#ú>stream xœ37U0PasC c…C®B33 ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ó`Dý§¬ûÿpð“Gù Èƒýöœ¿ŒÕ_ä_¡þeý¥¿êÿ~¬_ÿoÿÿÿëÿc?&=š pÿÿ.WO…@.¤]X¬ endstream endobj 249 0 obj <>stream xœ33R0P0b33#…C®B3C ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-´?aÐ$ͱ…ÿðËßÿÿ¾~µÿÿÿ¯ {jëÿÿüzmÉþñÜÇ—þ9cø÷ï×±õÿœýZúEûëÿõ×V_Yÿúëª/û¦·^Ñ[bÆ.ø•A€‘ËÕS! ,M£ endstream endobj 246 0 obj <>stream xœ3±P0P0bSS3…C®Bc ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶B$þSÖN}ÅÍÿÁ ûøÿ?íçýÿÿüÿÿ¿ýÿÿ¿í©ÿÿ§±æ Xö©hÿäL \®ž \B1A endstream endobj 243 0 obj <>stream xœ33S0P°PÐ5T07P0¶TH1ä*T03 (˜eô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQмéÿjÉÕ&Å Ý–Ëܵë_ßÿ·ûÒÝú-{ë/}I¬û«{iÿ_}Ïÿ_v{ÿ²Wûÿ¥/ó¿^º½¶6oßÖÇU¯ì×®½~Ù¾mû×ÍcP`ârõTäRI endstream endobj 240 0 obj <>stream xœ37T0P0bsS3#…C®Bs# ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶Ëá¸÷O6ž¶²ú­Wô½/}Ù˺*Võ¡¾÷…¸i+K„€Ü—UQ-»âãý¯ªZïñì/ë/ß_ñ"÷¦Ê_¿ì×ß½u³ÿöÿê¾ýùÿóÿF¿þý?ú²ã‘vEÖ/¸\=¹4yP endstream endobj 237 0 obj <>stream xœ3³P0P04VÐ5R07U03RH1ä*Ñ@hf”Ò3J‰ä\.'O.}O_…’¢ÒT.ýp *.} ".}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠ɨµÏ×-@Ò¥i‹DÜ¡—ÿöÿ¿¿êÿÿ¿¥¿ÖÿÇÎüúë믻u{«½«¾ÞöÎÕ=™cÐt#ašDk›ƒ —«§B P´L³ endstream endobj 159 0 obj <>stream xœ35V0P0QÐ5T0±P05UH1ä*T01 (˜š)˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶à¹£ïNŽØ‚öÖ‹~Ì/~ù_~ýåÿ±ÿõ÷yOœR[ÑÂ+i ±¡Æ¶}ûöímîIŸÐóWÜ ç¬µGº}jâ±ïµ¿¿Ö®¿p©M¨™eYFˆÂ¡‡¤`hààrõTäçeH{ endstream endobj 156 0 obj <>stream xœ37U0P0b3K …C®B33 ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶àJ ¯dÂ'.žDåî-æ ÷*ÌkŠUù2ý¯þå«ëöÿÿ¶w=¾ü P8ÐÑÿÏ×IˆÑýþ¼àÏ3Žeöÿÿ08°p¹z*rFmYï endstream endobj 153 0 obj <>stream xœ35U0P0bSCS…C®Bs ßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶H¸ÕD$‘½En^ÿö“'-X'7}é׿u{rKÇ]wþÿÿúdp¤™Íþ ƒ—«§B =Z endstream endobj 150 0 obj <>stream xœ33W0P04¦æ æ )†\… & A×Ð@ÏPA×@ÏÀ,L’s¹œ<¹ô=}JŠJS¹ôÃj¹ô=€J¹ôœ ¹ô]¢ ¹ b¹ôÝôÝ€Ü}o] Œs~Nin^1P‹—§‹‚Ú‚„‚þÜëÄYO”ü4-üt’}ÿä€äÿøÀO‡ýÿ˜¸\=¹n¬E¯ endstream endobj 147 0 obj <>stream xœ32U0P0W06U0´P03VH1ä*T04 (Y(˜ë*›èY*$çr9yré{ú*”•¦ré‡qé{Õpé;8+9.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmãv‹÷{f­1®³ÿ·ëÿõµU×½½×V5p04p¹z*rÒ( endstream endobj 143 0 obj <>stream xœ3±P0P0VеP01Q03VH1ä*T01 (˜*ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. jKr̤5×ͪª_7ÿ|Éâý¯æÖÿúúÿÒÖK®fVü]õõÖ·I‡¹mý·õ¯þëø×ñ—þ˜Jb~ù‡üi[?ï—wÝüøøÿë×ÿ_š}oWü­×߶ͺc°€‰AËÕS! *ÞT endstream endobj 140 0 obj <>stream xœ35T0PÐ5" SC…C®BS# °‚©…‚®ž%HVÏP!9—ËÉ“KßÓW¡¤¨4•K?¨ŒKߨŠKß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷jçÒwÎÏ)ÍÍ+j±³ãòtQP[pðãÌ&YMìÜÙä[„+ÙyÛ·Ü÷¿úµÖþý«¿õõÿ£®Çÿÿõ7ûËþø_qÓ¶¾~Y6}Áno‡®qƒ¦GôyÄûö_ÿÿúoýëåÂ+L~04pp¹z*r;=H˜ endstream endobj 137 0 obj <>stream xœ32S0P0b#s3#…C®B# ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶à€ŽÂ×÷×£¿¶‰ÙÿÿÿDþ“­ÕŸÖeÿÿÖÿ}ýÿ¿½0êŸð)ÉX¸\=¹Tƒ:¹ endstream endobj 134 0 obj <>stream xœ31P0P0UÐ5T0£C®Bc3°‰‘‚©ž!PH$çr9yré{ú*”•¦ré‡qé{Õpé;8+ré»DrÄré»é;;»¹66úÞ@Ý\úÎù9¥¹yÅ@-vv\ž. j Lp|(§ðE ŸÓ|i•ï˪_¾—þÇÇÖ_Šü(M2ûÿOÓx…E¶åë®—ìö.Ùvé6gb›@D’ƒ —«§B jÁ6M endstream endobj 130 0 obj <>stream xœ36S0P0bcK…C®Bcs ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ ýXåÉ Z–ÜýŽ,Ot.½ùzL"–ÿëú¯ÿ}ýÿ}<ˆZ7Ç7თ«§B á\7 endstream endobj 127 0 obj <>stream xœ37S0P0bs…C®BsC ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-h?bÌÆsdÒ…DæÊ)n'ì9Ô9ÔOD.˜íh¾+*~if¼¨èç“áÇÿ†ÿ¿Zµêkè Xµ>4HýBæþZõrÙ¿5ÓSväÿoà`hàrõTäÜäM‡ endstream endobj 124 0 obj <>stream xœ37R0P0UÐ5T03W03SH1ä*T0 €DLõ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[8#‹IEDø ó!~·R‡÷²84¿P˜×äÏYåùé˪¿Uÿ®M›u½M¼oúÿãÿÿÿ?¹êýþï;yýþnýºÛÞ¥{s×ÝŠæQÝ6M"Qw"ÓCnÞÄÖfÖ g.1(0q¹z*rqI˜ endstream endobj 121 0 obj <>stream xœ³4P0P0b 3C…C®B C0ˆoªg¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@µ\ú ¥\úNÎ @žK´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+ê±³ãòtQP[ÐÒ !ÿ_mÑ÷ûÿ‘ÀŸFÆJ fŽ?Õužüá–xÁì/ó/„ù7õWüå÷ãÿÖýÿÿoý\à§!ÇŠüÿX¸\=¹$±eå endstream endobj 118 0 obj <>stream xœ³0U0P0b #3…C®B rô t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨­èdc¬ÿÿÿÿ„•'įœe¬.Ý6íVìÒ]Ñu·¢3˦½Ì]ºmÚý[ÑK7FGÇææoß~ïwíË—¯—/¶}i~¹ê—ïKó%÷&WÅû¾’¾/ÈürEØÇš‡-…xÿÿoà`hàrõTäªS: endstream endobj 115 0 obj <>stream xœ³4P0P0b 33S…C®B C(kªg¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ @ŽK´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[ÐÒ ÐÆÆÆÑÁ;Áñ!ûòEEn‰wfu;šïòßÅõoþ¥ýÞ¿ê¬_ÿ_ÿoÿÿÿëÿãjŠ¢¼ÿÿ7p04p¹z*r.¬Q3 endstream endobj 112 0 obj <>stream xœ³0T0P°bs#K…C®B3 ßĵÐ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶`Á É"ÉC ™ñs¾hS¨bá}!ï¹—åÞä*ß—æ'§}¹¿ûí£÷Õÿ÷ן\ÿ¶lG¢ŽÁŽëÿ¦]¿ôÚ´éQQ±º@Àz­éÒ¥ QQQ.Ü_õš^–Lºôe/ë×—zÓ—¾T]Ðô¢êõº]Q@|üúF.WO…@.L[š endstream endobj 87 0 obj <>stream xœ31U0P0QÐ5R01P03TH1ä*T06 ¹Æ &z†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Ô´5|pøÐÇcË"Qáh¾´Ö|í‡û~¿ÿ¿ý¿>ûØÖ×_ö{¯e]Ú"æ´¸ùDÆßöíÛ·ß»ÿ}ÿ÷§û9ìæéÿ÷V[Îú+ºîVtfŽÉ6^Ö6mÉ ,\®ž \YGR endstream endobj 84 0 obj <>stream xœ33Q0P0bS 3#…C®BSS ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠ôà€…¥©¤EzE†Áßýù·¿ýÿöÿ÷ÿÿõñÿý¿ôõ×—½úŽÞYˆ³Ÿo;P'ýM~ûÛßõuÿëþÿý¯¯ÿ÷~}ýÒ—=ª-‡¸”,XÀÄ Àåê©Èc•N# endstream endobj 81 0 obj <>stream xœ36P0P0T04W02Q02VH1ä*Ñ a3C= ”™ž¥Br.—“'—¾§¯BIQi*—~8P —¾‡‚—¾S€³‚!—¾K´!—A,—§‹ÂÿÿÿЗ«§B U4#² endstream endobj 78 0 obj <>stream xœ37T0P0UÐ5R03U03QH1ä*T03PA33S=C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j æðxäø·Ô|hdæç4øÐÄc«öeö¥|Ͻj_÷;”ÿWíÿµ_µùÿ¼ÿ÷ÿÿÿÿ§iÔÛúÿ_ÿݲÿ®þ·K÷vǾÎÕ¢-Û.Ýöæ1h:Ì£°á0‡Ž!·BÂF.WO…@.øªPŸ endstream endobj 75 0 obj <>stream xœ36U0P0UÐ52R02U0³PH1ä*T02PAK ”ž!HH&çr9yré{ú*”•¦ré‡Uqé{qé;8+ré»DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.O= ¥Åùù{÷îû~û}Ý÷÷ßþïÂýÿÿ ðë:¯¿„—þm}·eëkoﵺ«8¸\=¹¦IŸ endstream endobj 72 0 obj <>stream xœ3µT0P0bS3#…C®BSC ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(p?¹’ʸ¸­ñùû÷ÿ÷ÿÿýÿÿ¿û?Ù”ÿÿðÿÿúûö‰÷ÿŸÙþ£¾¾þï øøñ©ìÐøÀÈ Àåê©È®MG® endstream endobj 69 0 obj <>stream xœ3³P0P0b33#…C®B3C ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(˜6ußóu™pÊ=±õvÜuƒùoÿÿ»O*~Sÿû÷ÿ÷ïÿï›ýò‡ã_Çé01(p¹z*rúc endstream endobj 66 0 obj <>stream xœ32U0P0WÐ5´P04W0¶TH1ä*T04PASss=C$LÎåròäÒ÷ôU()*MåÒªâÒ÷*âÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½Ú¹ôósJsóŠZìì¸<]Ô6è(üÓŸ²ŸG§þ?˜>´Ø÷Ó4"¡éøÿëñ¿¾®úºnz<ƒ#—«§B m™0$ endstream endobj 63 0 obj <>stream xœ35T0P0b 3…C®B3 ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶àÎC·îÇä÷(4Wy¾dù2=~ý_ý[}ü îGêÕÛqÿýû+¸ì§æÝö¿ƒ¡ËÕS! ÚNÈ endstream endobj 60 0 obj <>stream xœ35T0P0RÐ5T01W03VH1ä*T01 (˜™(éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶ØŽWù§©ÝïÿPðS¬ŽC¾¥ ñ‡CsM0ÿ²_ù«_þû»ÿßÿïPëÿÖÿúúëÝ^½ë[vž]°wË.ƒ¦—ͬ Œ\®ž \YKj endstream endobj 56 0 obj <>stream xœ31U0P0RÐ52P01V01TH1ä*Ñ@hf¨`¤g’’ɹ\Nž\úž¾ %E¥©\úá@U\ú@E\úNÎ @Ê%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-¸Æ­ðO B!QzŽò1 G]‰ÖCþÿ—ÜHÌN¾üºþ?üûzë}tfý¶¦ ‰º-úlÜ ¯ÿßÿ~ï„„ŸjB‡oTWøs|0ø"È*|©VýÛ£½ÿÿ]ó Û»eÛ¥ÛÞ<M‡Ù8t ¹ž8°08p¹z*rÕ Oç endstream endobj 617 0 obj <>stream xœ37R0P0QÐ5R07P03TH1ä*T03 ¹Æ &z†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]”\ðrÖ™Õ3A‚?CúŽÁßýù·ÿ¿ýÿý XÿWÿß^}ïKš>xwĈv(ø#ýM~ûû·ÿJ×ÿÿþÿÿߦÿÿïÛroË툉 û6܈íša°€‰AËÕS! Õ‰T endstream endobj 614 0 obj <>stream xœ33W0P0SÐ5T03P0·PH1ä*T05 ¹– fz†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{usé;çç”ææµØÙqyº(¨-ÜÐ&¥"¡ßÄÞ"×ÅÂïи—EúR¾ç—Ù×~ÕÖï¯ÿúûÿû÷o+JÿÈÌýc²#3÷:ê†K7Ö‰º}û0>zË—]vM¼/Ù¾4Wù/‘?\åÿðKs}¡}}ýú}¾a»ã¿]º·;vË6 ïÄ–m<-—yœnæfãV\ìÁÐÀÁåê©ÈIYH endstream endobj 595 0 obj <>stream xœ3¶T0P0RÐ54W06S06RH1ä*T06Š(˜X*é‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔΥSš›W ÔbgÇå颠¶¢ÍK×þä*ß”Mi¯¿Þßõ=úÿ·iÿÿ.ÝÿïnÕÿýw«ÞŒþý?~}üúÈäŽëæV}z´m×­Ã\ L\®ž \ãL@* endstream endobj 592 0 obj <>stream xœ34¶T0P0VÐ5T046U°0RH1ä*²€Â Æ Æz†@Y ‘œËåäÉ¥ïé«PRTšÊ¥RÅ¥ïTÄ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{µsé;çç”ææƒôØÙqyº((=ôØaøÿÿ§,+¼i ®*ö—9nÞ^õû÷õòuï¿Çþz÷÷®þþ½å¯·ü¿^·Ûÿ¾÷û·á•çc×þ÷Ûý·lû{¿éß¿ízïãÿµz· ÈÛþ…ÿÿ¨áûø/¿¯ÿö­¿ cü» a8°08p¹z*r\|á endstream endobj 589 0 obj <>stream xœ35U0P0bSCJ1ä*T0±òÁ"Æz† ºz–@`aªœËåäÉ¥ïé«PRTšÊ¥TÊ¥ïTÉ¥ïତ\¢ ¹ b¹ôÝôÝ€Ü}o] Œs~Nin^1P‹—§‹‚ÚÊúÏÏýБ_ûëþÿµßÿþÿÿÿ¡ÃÿQÀò +í01(p¹z*r/ù=s endstream endobj 531 0 obj <>stream xœ3¶P0P0VÐ5R06Q05PH1ä*T06 (˜õ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j Ï·7ñ;>”7_Ð\åû2~ûÒW÷ã?ÞûÿÿþÿÉ¡ñï÷_»_º­GwËîÌ‚£‡ÖÔÖ¯s3*ûëë—%Óy· Ýhm“`dàrõTäµBi endstream endobj 528 0 obj <>stream xœ3¶P0P0QÐ5R06S05PH1ä*T06 (˜)˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQPÛYpæðóÓ¿ža.½Zõ+0tÝ•]×½×–ì÷þ²õÿ¥¿õ__ýÿÿú àÑ`hààrõTä« 9} endstream endobj 525 0 obj <>stream xœ3¶P0P0VÐ5R06Q05PH1ä*T06 (˜õ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j v~Lh>ÄïÞZÅùa‚ÿÒK_¿ìÏö¨÷þ·gúÇc=U¾/ÍEîÆÝ­}ÿµþŸoøÿÿû¾þ{}7?vÝËÜ¥.ÝXc°á  ƒ—«§B ÞÊCÄ endstream endobj 522 0 obj <>stream xœ3¶T0P0bcs3…C®BcS ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ÀÑâåÿ÷ïÿÿÿÿ'ÿ?ùÛÒ‹ ¿Ôª¿ü²oþ_ÿÿÿûiúéÛ2©·ëŽ\Y{ójâ: _.WO…@.$?X endstream endobj 519 0 obj <>stream xœ35U0P0QÐ5R05P05VH1ä*T01 ¹¦ &z†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Ôܹ ¬à¶šÃNpÁÂ5 ·.8nm™ñB}É×Ú’yÓïM¿·o×þÿkÿÿÿiwèÿ÷ïwksÿí.ݶwéþmÓ{ó¶l“ŠH8¨cÈÍ£Ó\åÀÂàÀåê©ÈæD½ endstream endobj 516 0 obj <>stream xœ31T0P0TÐ54S0¶P06RH1ä*T06Š(˜X(ê%dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔΥSš›W ÔbgÇå颠¶âŠþÿÉ3¶g—íÛvéÿÖ{ûo{ÿ»^õ¶|ý7o÷7íoû¿íÏþ²?n¿·Ö-û½#MUoE$map`árõTäúB? endstream endobj 513 0 obj <>stream xœ31V0P0bS#…C®Bc Ì5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶¤Â¨ýSVí8ñÿÿ!³Ä_œµí›ýý¿ýÿ‘Áe?‹kÒÿ˜¸\=¹‘óB, endstream endobj 510 0 obj <>stream xœ³4S0P0b  #…C®B ßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠8Å—9Á¢àÉW’Ž?ÌßþÈ¿ýû;þÿ¾ìÿõ¿ìÕçÐç¬p,änzßü<àû)Ó‡¿ý1ÿþöw}Ýý÷ÿÿÂûÿ¯ÿ[·ÿËÞº½úÜ/++T¹,XrB„ƒ¡ËÕS! êH^È endstream endobj 507 0 obj <>stream xœ31V0P0RÐ5T01P06VH1ä*T0¶ ¹& Fz†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{usé;çç”ææµØÙqyº(¨-©ùÈÓåþgÖœ¦º÷ÿ‘Á¿ýÿ_ï¿U½˜c‚ôÌ‚£‡æ)02p¹z*rÐr9 endstream endobj 504 0 obj <>stream xœ36P0P0RÐ5T02W06QH1ä*T02U ›*éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶h挅ë_pü2ÿžöý÷?’ù|ytgµ··}û¯xℾ™ôÝýﯮ½º”%´e…!W3ƒ—«§B Šÿ5f endstream endobj 501 0 obj <>stream xœ36P0P0b#scc…C®B#3(k¨g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmIAŸa‹\¿§QVÉîëÿ¥cùÿÇÿ‡‚å þ08°p¹z*rõ{.æ endstream endobj 498 0 obj <>stream xœ3¶P0P0bcCS…C®B#S ßÄ5Ó3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ eÝŽ˜Yʳt>¹¢þ|ù4¥ŽA‰ËÕS! jB7s endstream endobj 495 0 obj <>stream xœ3¶P0P0bccS…C®B#K ßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶çÐ!~åf~GóËU¾/íïû ÔÞ~ÿÓÔ3·ð믯KÅfff–.k¢bõ&EÅM_0½?6iƒ—«§B %¿8í endstream endobj 492 0 obj <>stream xœ32T0P0bC SC…C®BC3 ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Ô–å”|ùÿ?;[þÿõ‹fíû– 9ä7p04p¹z*rËÊ4O endstream endobj 381 0 obj <>stream xœ37Q0P0b3 sS…C®B3c ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠ª°øÏ¬V«¶õÿ1Á'ÞÈÿÿ׃dâÿýéÿu8ô#žµcý†.WO…@.!Ht endstream endobj 285 0 obj <>stream xœ346U0PaCcC3S…C®BC#3 ˆˆoªg¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá µ\ú@¥\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¤ÇÎŽËÓEAmAKƒB¯‹‹ƒ„sŠ@Bó!…/—/Zšøùsœ±¢Éj|ßM^ò{ÁZÖzÿ—Qá/3ôqÙ¯ñÿCÿ‰ÿ@Š082Y «ÃÕ¹þÿÿ \®ž \µ„ge endstream endobj 10 0 obj <>stream xœ344S0PaCsCC …C®B Ç(d0Ó3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýpb.}Z.}§g Ï%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææƒ4ÙÙqyº(X›òÆÿ?¹BÀ‰1ý?~ àiÿÿom=õúÿÿ¸ý@òßþ_ñ¿~ý õã¹ÖˆŸ—îø·ÿƒ—«§B ˜{^Ù endstream endobj 610 0 obj <>stream xœ31V0P04ÆÆ † )†\… Ú$l”Ñ3TÐ5ɹ\Nž\úž¾ %E¥©\úá@i.}0éà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠŠíì¸<]ÔÍ+h>TUúõñõ ¬i×®jà`hàrõTäöð%· endstream endobj 607 0 obj <>stream xœ³4P0P0UÐ5T°0Q040PH1ä*T0·T‰*˜êeDr.—“'—¾§¯BIQi*—~8P—¾H—¾S€³r‰6ä2ˆåÒwÓwvvrllô½Ú¹ôósJsóŠzìì¸<]Ô´4XÈÿW[ôýþ$ð§ù“Èþ&ö‡@øb‚F EâGóCù îsýÊ_ökýþ¿ûÿýÿûÿÿ0-ÿöÿÿï $¿ìÿ²{½÷þ-»½'\HÔ›í½L±DÂHãÜŒÖ ‰%‡^Hè8N8lÀàÀÂåê©Èó h endstream endobj 489 0 obj <>stream xœ3µP0P0bSJ1ä*T05òÁ"Æz† ºz–@`aªœËåäÉ¥ïé«PRTšÊ¥TÊ¥ïTÉ¥ïà¬ä¸DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.Oµ1Äÿ/ÿU„zó÷ÿòýÿorýëZû_÷ýÿMýýÉýÿ/Íÿm?þ«fGÆÿ¥u@Π’µ¿_þP›ã8!Æýƒ—«§B gLFä endstream endobj 486 0 obj <>stream xœ3¶T0P0bc33…C®Bc ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ÒõÉÕ”Ͳÿÿÿ[ñÿÿ„é/ÿÿ—ÿÿßFýÿßõ@N­ÒrUƒ¡ƒËÕS! f©8« endstream endobj 483 0 obj <>stream xœ3¶T0P0Q0V06Q01VH1ä*T06PA Ò3T0Ò³THÎåròäÒ÷ôU()*MåÒªáÒ÷*áÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j §l˜›˜Í™¡«£°eCÓ¥K‡¸½9tuTVï4u|¸wÁ·‡oß>ÌŸÏc»·½í=Eƒ—«§B þ}1I endstream endobj 480 0 obj <>stream xœ3¶P0P0TÐ54W01T06QH1ä*T01PASCC=°$LÎåròäÒ÷ôU()*MåÒªâÒ÷*âÒw pVR.ц\±\únúÎÎn@n€¾7P;—¾s~Nin^1P‹—§‹‚ÚÂ%bŽý,2 ÷[ Žè %êªg{n¼ôïËþÿ_½þéÝvï\]ƒi=IböÔÇÿû) ±¡Æv¯rcß„|Ï/óìöÿ­Ú²äjÐmïÕ6ˆ$1ž9&  \®ž \¸‰DW endstream endobj 477 0 obj <>stream xœ3¶T0P0W06U06T01SH1ä*T02 (*˜ë*›èY*$çr9yré{ú*”•¦ré‡qé{Õpé;8+)—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶Ð‡¥åCó!~[‹Y‰Ë9,O®òu`apàrõTä.¥"Ò endstream endobj 474 0 obj <>stream xœ33R0P0Q04T05W03VH1ä*T05 (˜)˜è*èY*$çr9yré{ú*”•¦ré‡qé{Õpé;8+ré»DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.Oµ 7Ä—/ÿ?¯lyôÓÔ;[aQ=\lëVF.WO…@.3 7d endstream endobj 471 0 obj <>stream xœ33R0P04Q0¶T01W07QH1ä*T06Š(›¥ô Œ-ô,’s¹œ<¹ô=}JŠJS¹ôê¸ô=€Š¸ôœ ¹ô]¢ ¹ b¹ôÝôÝ€Ü}o] Œs~Nin^1P‹—§‹‚ÚÆ b³ª2×ÿÿ¯¶:þ?øƒÉÿ{B_~_ap`árõTäXº4 endstream endobj 468 0 obj <>stream xœ33U0P0b3#cc…C®B3rô t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-<ÇsFàL‘‡Aóå”Cfþ|Ì>1ÙëÒÞ®K¿º~­_õÿ×úÿ¡q«öÿÿÿÿkè«Õ@ ÊýzjÍ®Óë\u`apàrõTäè0H+ endstream endobj 465 0 obj <>stream xœ32V0PÐ5SÐ54S02Q05TH1ä*T06PA3s]S=K¬ž¡Br.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔΥSš›W ÔbgÇå颠¶ AG}ù¿ý<:õÿÿ´;‘Ðÿ§­òýßúû¯ÿ öÖ?ëç\ú§tÝ”YKcUÛ[¹\=¹Î¥?& endstream endobj 461 0 obj <>stream xœ33R0P0WÐ54P05Q°0VH1ä*T01Š(X+˜ë‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔΥSš›W ÔbgÇå颠¶pÙ&^SÇÄì¨(«–EvÜÞëÿ#¿%[ê´\×P uj/Êšç”=¡È ¿v/²’ÿ¿o?øVÊ™¢´½úðÁ'&¹\=¹WKNŸ endstream endobj 458 0 obj <>stream xœ36P0P0bc#cc…C®Bc˜ˆk¤g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAm!˜Ïƒæ/ù¯šü\žì _õëEýúëëÿÿ­úÿH]S1øÇ ÀÄåê©È¨61 endstream endobj 455 0 obj <>stream xœ36Q0P0QÐ5T06U06QH1ä*T06 €DLô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ôì\èÈÞRðE Ÿ“õ’ßô]µZW꽿¾þÿxýäÐ'þ¿Û7ínnëmÇܦˆ$1.WO…@.Ž˜3­ endstream endobj 451 0 obj <>stream xœ36P0P0SÐ5T0²T01SH1ä*T02V ›˜+˜éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶ õèÒÿ¿þM½n×ËDAÆO®ô³þúúÿÿúøÿ¿¾8Ùÿÿÿzméÿ×{Ëv/½‘´áPC—«§B ‡L;ô endstream endobj 448 0 obj <>stream xœ32T0P0a#S#…C®B#rô t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-ø)Ò[çüÿýúøÿ¿¾þÿA­ñ[ÀÄ Àåê©Èn25Ô endstream endobj 445 0 obj <>stream xœ3¶T0P0bc3…C®BcrMô t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-šp¤…ŸÃF}ùY–Biÿú ¬IGT—¶lÙ"Ötéµ÷Úªÿÿÿß:þÿ“Ü—/ÿÿgg1(0q¹z*rÎ5& endstream endobj 442 0 obj <>stream xœ3¶T0P0U0W06V0¶TH1ä*T0²Š()˜ê*˜éY*$çr9yré{ú*”•¦ré‡Õpé{•pé;8+ré»DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.Oµ…gÛ—ÿÿÿ3|ÒŽö–{ z®ŒŽHLlmÈÞ"'PUhâ>™›o»Ú Ó>ûÿÿ·20r¹z*rD1B endstream endobj 405 0 obj <>stream xœ35P0P0a3 #…C®B#(k¢g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEá§)‹)Sý‚àÇ…ûX¸\=¹%ŸBo endstream endobj 374 0 obj <>stream xœ3±P0P0b3S3…C®BS ßÄ5Ô3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶b¯ÓÿÉ¡'öþ'óæßÿw}‚篸éK_VÅ }Ù«ï}éË}?«ò—ýÚ7ûå¯üÛ¿¿ýý»?_ÃQkÑå÷¯|ƒ²˜¸\=¹—?Gù endstream endobj 371 0 obj <>stream xœ35S0P°PÐ5T0±P0±TH1ä*T01PAS Œž!PH$çr9yré{ú*”•¦ré‡qé{Õpé;8+ré»DrÄré»é;;»¹66úÞ@Ý\úÎù9¥¹yÅ@-vv\ž. j Zg)ùÐü¡}Ý®O~Ìæi¾üÿÿÉU³É~ØNy8ï„AE‡ƒ÷HT2 ?ánŸpÆNÞvû²wïÿ¾õJ"Ú‹§C&4äWˆDD¢ç*‡ƒ, \®ž \j±FX endstream endobj 368 0 obj <>stream xœ35S0P0VÐ5T01W03PH1ä*T01 (˜*ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ô6'$ÍÛÿ~ž2yüÏ7è„ú˜ lkÿÿÿ¿ë×n}›v˜õÑ6 “:ÌÊ ÀÈåê©ÈU?‡ endstream endobj 365 0 obj <>stream xœ3±P0P0bS3…C®Bcc Ì5×3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ÒõSÖ4GûÿØÀ§¶E?M½˜¸\=¹M¾7M endstream endobj 347 0 obj <>stream xœ35P0P0a3K…C®B#°¨¥‚‰ž¡‚®ž%X˜*$çr9yré{ú*”•¦r釕ré{Uré;8+ré»DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.OµE³82 [äš/_|öEèäÊ ¿¯_öÿXÿ+ûÖËõòÿ_ÿG€*ÉX¸\=¹ˆx< endstream endobj 344 0 obj <>stream xœ36Q0P0bcs3…C®B#Ì5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶HЧþSVìüàŸªEþ&.WO…@.±R?ú endstream endobj 341 0 obj <>stream xœ3±P0P0RÐ5T01P0³TH1ä*T0 (˜eô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[°ó@òÿÿ¯ÿÿú·ýëu»tܳrÅÉÁð?üi?¦ïêýÿvén™T´èÖ¶ ‰, \®ž \'Fm endstream endobj 338 0 obj <>stream xœ33T0P0bSsC…C®B ßÄ5Ó3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Ôìä1>(ÈØ¡PáøòÅœÄæ š«8÷Æ;Ü~÷»âÝýßûŸ\Õ»ž½õhéÿ¥¿b³¯MŠŠŠÍÐÖ¥K/²~jzY²Ë3³ŠûÒ—éÞ—bù½cK¯Ç&¯ÀÄ Àåê©ÈVH‡ endstream endobj 335 0 obj <>stream xœ3³P0P0b3K…C®BSK ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶HŠI„™™…ŸÃÖFÙ¨Šåά©,¿—ÖÇ/ùúÿúÿøÿ_ÿc‚?'%îÿßÀÁÐÀåê©ÈîÂB endstream endobj 332 0 obj <>stream xœ33T0P0VÐ5T05W05PH1ä*T05 (˜*ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ôn˜ ­"!ØÄÞ"×É´GÁáðǽj_f_ûU›ï¹ÿë¾ùóÿÿïûj«ãÿo›þÿ}캯ۦÑaÎÜ¥¦I´¶‰ñˆ9' 02p¹z*r­µB' endstream endobj 328 0 obj <>stream xœ35S0P0SÐ5T0±¡C®Bc  ‚)PFÏ($’s¹œ<¹ô=}JŠJS¹ôʸô=€j¸ôœ ¹ô]¢ ¹ b¹ôÝôÝ€Ü}o n.}çüœÒܼb ;;.OµŽ ôYø9l¾‡ô…|»¦üå—öÍ~ùõ׿ßýòW~dYšÆ¿ÿö§-.wù¾û‰ë.ÝH,+•º±víÓ61‰ƒF.WO…@.0!>T endstream endobj 325 0 obj <>stream xœ3³P0P0b3s3…C®BSK ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶HŠ9ãÿ“+»ÿÃÁ— …:ºù-iþÔþ²ü›ú·nòÇðÿñëÿ_ÿ >*³y¶ýÿÇ ÀÄåê©È‡×PÔ endstream endobj 321 0 obj <>stream xœ36Q0P°b#SC3…C®Bm„@ÊRÏPA×H$çr9yré{ú*”•¦ré‡e¹ô=À¤S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+*¶³ãòtQP[Vñ}ùòõj+ë®]“`dàrõTäX"- endstream endobj 318 0 obj <>stream xœ³4P0P0UÐ5T°0S03UH1ä*T°0T ›™)˜êå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³ãmÈeË¥ï¦ïìì䨨è{usé;çç”ææµØÙqyº(¨-h1ÈRl‘äyòÿÿ?_× §ýw¿ûüúÿý¿ÝÿöõéÝú7õíÒêDÍ0éÞc[ÇHÄ´…mrP`hààrõTä}¥T¨ endstream endobj 315 0 obj <>stream xœ342W0P°TÐ5R04´P040PH1ä*2,â@ÚHÁRÏ($’s¹œ<¹ô=}JŠJS¹ôÃAʸô=@ª¸ôœ ¹ô]¢ ¹ b¹ôÝôÝ€Ü}o] Œs~Nin^1H“—§‹‚Ú‚uÙl͉)ÒAzÎ!¾E¼©Þ-Ršc”&XÇ(-0cÛ¥zXw€ãÖ Žý ¿8¿Ìw´›ü„Ö__òë—ÿ¿Éÿ—üýå× õÿßâ¿õÇÿÿÿÿgÖú ׂïÿ¿ÿ_aƒñßýÿ¿ÿþþÿ6~ÿöïïþúüÛ±ío×ÝßpÇôF¢ð: “ù Õ«1/?,ÐüàBAóSWç'Ò>|Žq;8¸\=¹‰‚w# endstream endobj 230 0 obj <>stream xœ3±P0P0VÐ5´P0"…C®BS ¨‚©…‚±ž!HH&çr9yré{ú*”•¦ré‡Uqé{qé;8+ré»DrÄré»é;;»¹66úÞ@í\úÎù9¥¹yÅ@-vv\ž. j vÎfnâ-èç±çd»îhþPí¯Æß/ó㽿_úÿÿÇúÿ@ðäªýÿoÿ¿Ç[öwCï:iï‰ú>stream xœ31S0P°TÐ5T01U01PH1ä*T0 (˜*Xêå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]ÔÎùá¡PáÞûE¢*nrUø’_áK_}]²ÿÒÿK×_ÿ¿fµþË~ïWK®½­Û«{é¶÷¥Û޹-ŽèHh04pp¹z*rRs=N endstream endobj 219 0 obj <>stream xœ3±P0P0acS3…C®BcK ßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶éòúÿv¼×—~}ý²¶êWth×ËÒuӣРe+¿½ú±Uq»¾ìI~rUƒ¡ƒËÕS! 2—;: endstream endobj 216 0 obj <>stream xœ3±P0P0VеP0²P03VH1ä*T02 (˜*ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j+]?emb©ÿ |šÂ?9dƒ—«§B žo5Ü endstream endobj 213 0 obj <>stream xœ3²P0P0b3…C®BC ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-œUó ùM>‡Ê—¦—±UÞ^{¿Ìˆ³_ÿÿ××ÿÿ'þŸàÿÿúúÿ«þ#Q‡*?`bPàrõTä,tB: endstream endobj 209 0 obj <>stream xœ3±P0P0U0Q01R05TH1ä*T06Š(˜˜+˜ê*ëY*$çr9yré{ú*”•¦ré‡Õpé{•pé;8+ré»DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.Oµ7LÞiêøáýÇ«ùy¶oo“»'Q]‘øöaû>齉ºM—q{sèê(lÙÐt(Š›3CGõPG(—oÐC.WO…@.‘h7ì endstream endobj 206 0 obj <>stream xœ3±P0CsS3…C®B$äè*èèX…©Br.—“'—¾§¯BIQi*—~8P)—¾P%—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQPÛ© õòøÉUï'Öÿ‚?Ýö,ò-ò-?ö?ªQh~ýòÿëÿãÿ£€9‰*¿2ÞW[v9€‘A€ËÕS! —Fs endstream endobj 203 0 obj <>stream xœ31U0P0TÐ52P0±T01TH1ä*T0±Š(˜*ê%dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³r‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j n‰9§´H”™£|DŠE¬)i‡gë¥}kÛÄ#^¿Œÿÿëõ×øÿ»âãv—îŠÊÐ;eÈåØôñÒÿÿ÷9¶ÕL扨±Ý£'ø ñ…—=§ùå—…{ë×Ç/ÍV[5íVt"ë†CÜ< Žè´+1(0q¹z*r=jLÁ endstream endobj 200 0 obj <>stream xœ3±P0P0UеP01R03VH1ä*T06 (˜*˜êå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j âæíÿß"Ç„ó„/_T”óo:¸—uß´ûÑ_o|¿þ¿:þ䪊ïßߨ'ü³mßP‘øpysEþ<ÿÃuò·¿Ÿù]ÐüÇþÿ×ÿ¾ô\õ¿êß´{{lT7F‹nÝÚ&&aaúÿÿ¾+ ,\®ž \~“T endstream endobj 197 0 obj <>stream xœ3±P0P04UеP0¶T03VH1ä*T02Š(˜¥ô ’@"9—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYH¹DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.Oµ…s­®M›Öt ^ÇmÙúúËþ8 ü§ýÿÿ?ßàÿÿ¾ÿûþwÿûÚ}ßßçƒ@âÛ·÷>\ap`árõTäjA` endstream endobj 194 0 obj <>stream xœ3±P0P0´TеP01Q03VH1ä*T02Š(˜¥ô ’@"9—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYH¹DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.Oµ•®_íXêÿ#ƒŸóÕV:°08p¹z*r¿½-r endstream endobj 191 0 obj <>stream xœ35T0P0bK3c…C®B3 ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶àà‡|E“ÿ'’fÿÿÿëëÿÿëãÿ?‰|%`×dæøÃÑ~Áì/û´¾ìÛÿëÿËÒ_ëÿÿ¿¿êÿÿ¿pæßp_‹¹‘zÒÿ˜¸\=¹œ‰Jù endstream endobj 188 0 obj <>stream xœ37T0P0b3 Sc…C®B33 ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶b ëÿÿÿ'š°ypæ6Ý^»e»÷–m¯su·l»~é¶w®î®k×ߺuûöß}_¾|½øåW¾ç^µ¯µÚ—@ô¯|ïKùa_f_Êg‘H÷üÿ€‰AËÕS! ¹fI endstream endobj 46 0 obj <>stream xœ37U0P0UÐ5T07P°0VH1ä*T0 ¹& ¦z†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{usé;çç”ææµØÙqyº(¨-ä<Rÿ)+Æþ?üäroRfè°ç°ç˜“A!ñ#‡ù¡üe¿òW¿Üÿwÿ¿ÿ¿¿ÿÿ¿¢ôöþÿooÝnï—Þê]zòÛ{™„cÉÁ¦X6Å’C/ "šU˜¸\=¹¯ XI endstream endobj 42 0 obj <>stream xœ37U0PasCS…C®B33 ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ó0+ã‚„®‚8 ·”/æjKãdYþMý¿äÿ}ѯÿ¯ÿÿÿõ?V Ä"ýÿC—«§B fýGí endstream endobj 39 0 obj <>stream xœ31U0P0VÐ5R01T03TH1ä*T0¶ (˜+ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[ØlpDÀFùˆ\ïKó%÷&Wùþ_ûÒüÿ¯ûí¶ÿÿÿÿOùP[ÿÿÿïÌú_Aä¶i_·M»™c0M¢µ™•A€‘ËÕS! ¶ïF˜ endstream endobj 36 0 obj <>stream xœ36S0P0VÐ5T06R01TH1ä*T0² (˜)ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶ç˜‡ÔC‘ GöKuóã—÷߿﷤©KC¼ië†jþü|Þ÷¿œH_vÃàßûýu믽º´eÙ‡C!­X¸\=¹<Ì:¶ endstream endobj 33 0 obj <>stream xœ35T0P0VÐ5T0±T01PH1ä*T01 (˜*ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]ÔÛ±ÈKœˆµr剸²÷»ÿ£ƒõÿ½ÿõ]oÞëêL¿Æ½mB;b$‚30r¹z*rƒ?þ endstream endobj 30 0 obj <>stream xœ35W0P0bS#3#…C®BK ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇåé¢ à¸øäŠ“ yôÿ£ñÿÿ¿~ýÿÿ×ÿÿãÿÖÖÖês·L²oà`hàrõTä±¥?x endstream endobj 27 0 obj <>stream xœ32S0P0b#c3#…C®B#rõ t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-6SQøïÿÿÛ~úÿÿOü×°ÿ3×üþðåQ ïF.WO…@.]9) endstream endobj 24 0 obj <>stream xœ35T0P0bK…C®B3 ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ØFàŒAãCiõ᢬áê¥Õ×_Ý¿~üëÿëÿÑÁËå«U×`apàrõTäÄÐ?E endstream endobj 21 0 obj <>stream xœ36V0P0bc3#…C®B# Ì5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇåé¢ðäJÆCÿq‚? \Ø~04pp¹z*riD<„ endstream endobj 18 0 obj <>stream xœ35T0P0bK3c…C®B3 ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ØŽ×ù§©ÝïÿPðS¨NÀžã¦=‡Ú_–ûKëã¥kë¿þ¿þ¼\.¼Zõpý.WO…@.Fò endstream endobj 14 0 obj <>stream xœ3³P0P0b33S…C®B3C ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-œ•`œùÿ%~–ÿ«ýý¿çþÿ—òÿ™ýÿ¯ÚdÎÿþ3Ø@Ìè—ÿ¯ýªÿºoþßüûþ‡–·Hš2=ÈÿÁÐÀÁåê©ÈQ endstream endobj 582 0 obj <>stream xœ31V0P0QÐ5R0¶P05VH1ä*T06 (˜š*˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[ès¨µ…· ùCé…äKüKþýòÿï/ýÿïþû=³–¾Qó‚%r܉†ir‡Wä+|}ÂqYáÎüÚoïäßÿþíýnm®vD¦ïñ£!Gt$Bx48¸\=¹F¿ endstream endobj 579 0 obj <>stream xœ32S0P0T04Q0’– )†\… F hª`¨4Ö³THÎåròäÒ÷ôU()*MåÒªáÒ÷P0åÒw pV0äÒw‰6ä2ˆåòtQøÿÿ2ârõTäÙ• i endstream endobj 576 0 obj <>stream xœ³4R0P0b  #…C®B rMô t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(h+ÄÌd+((W[Ð ?áôúÃu÷Ûþýý»ÿßýÿÿ¿ÿ¿þÿ_ÿo¯¾÷õK_Ä[ö45ÎqzXÓÔvæ WýðO…Ãtÿ.WO…@.åÑS¢ endstream endobj 573 0 obj <>stream xœ3µP0P0bSSSC…C®BSc ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]¬ÚºïùºN´;Ì=Ýw}þÿoÿÁøÛÆ-d__ÿ÷ïÿË5 ÷T ôÿ>`bPàrõTäºÁP endstream endobj 570 0 obj <>stream xœ3¶T0P0QÐ5T06Q01WH1ä*T06PA =C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]ÔI è(\>$·ëÅ…? µê/¿¾ÿ?ë˜oøÞöƒo^p¦mÔ±moû$Óô$ÅÄ?¿ö÷žÕGÿ›~ëV@¢Æ+‘'K®*$:°08p¹z*rö?> endstream endobj 567 0 obj <>stream xœ3¶T0P0bcs…C®B#˜ˆkªg¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmáÙ¦àËÿÿ®]SÿßnWýï'öõÿaà_Ç[ÏUX¸\=¹Ÿ4Ì endstream endobj 564 0 obj <>stream xœ3¶T0P0bcsc#…C®Bc3 ßÄ5Ô3TÐ5ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmÅœ Ânÿ¾¡Ÿbœ¿ÿGÿöÿúpèßêò6çˆDSF.WO…@.;å5y endstream endobj 561 0 obj <>stream xœ3±P0P0bSC…C®BC ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]úÕ–dH†íÿþèÿÿ·(ÿ·t“ì8¸\=¹úÔ6 endstream endobj 558 0 obj <>stream xœ3¶T0P0bccC…C®BcC ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Ôò6‹üM•ø“«"…÷ÿƒåšÿÿ¿v·L¼ë֭É, \®ž \Ã4á endstream endobj 555 0 obj <>stream xœ36P0P0QÐ5´P02R05SH1ä*Tò@âæ& &z† I ™œËåäÉ¥ïé«PRTšÊ¥TÅ¥ïTÄ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{µsé;çç”ææµØÙqyº(èqïPZœø~û½{÷ß¾ý_ý}ýþúßßÿÿßþ~Åÿÿ›ýÿÚþk{³¯¿Ì¬›6=*ê…Æª†.WO…@.$‚@Î endstream endobj 439 0 obj <>stream xœ3¶T0P0SÐ5S02U05RH1ä*T0 (˜Z(˜éå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[q !ÆzrÈ·÷îý}û~ûïúíÿ·ÿÿ]ÿÿÿÿ_ñÿ—þ_ú+~éºéQ/u5Vµª­t`apàrõTäd9:x endstream endobj 435 0 obj <>stream xœ3¶P0P0bcSSC…C®Bcc ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Ô,8ðo~z½ôõËÚª_ñqû¦__¿ôë˪¿Uqû㦯¿¾ôø‘6é'WLääÿÿÿÿצ‰ãƒ —«§B Ÿ¹?E endstream endobj 430 0 obj <>stream xœ33W0P0WÐ5W0µT°4PH1ä*T05 (Xš+˜ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[ó@ãÿÿŸ¼ŒOÄõ›Ø[äæ òY²/ˆ”üÂÍû2q߆_ÑUÑõ¿€(’¯þò¯ÿrûÿßÿ6îêÛ8‰ ¬æãíêŽßWNpm¾QûÆv/챓>\açèäûóäzþ÷w.ßk¿|ÿÇêÿûÿ½Z3kéý‡™õo¿þzû²üwU4¿w>gŽœÐM¾¦hÁˆÄÄÖ61g‹J¦Ÿÿÿ`dàrõTäàl_ endstream endobj 275 0 obj <>stream xœ3±P0P0UеT01RÐ5RH1ä*T06 (˜+˜ê¥€Dr.—“'—¾§¯BIQi*—~8P —¾‡p pV0äÒw‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@vv\ž. j+kâ|ƒ~04pp¹z*rþˆu endstream endobj 272 0 obj <>stream xœ3±P0P0QÐ5T01V05WH1ä*T0¶ (˜Z(˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶âi§˜ÿÊ7v]š2騮þ¥K¯ã¶¾öþ²ßûëë¸ý øßûÿÿ¯¯ÿAvƒ—«§B æ¼9« endstream endobj 269 0 obj <>stream xœ3±P0P0QÐ5T01V05WH1ä*T0¶ (˜Z(˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶°Ùሀ‡yóæu±}Èw4_ò×|Éÿ/wjãþÿ¿ÿ^mõÛúÜÜu‡n$æ”oZ˜£Ú&šØúD¢^Þûëë˜ÝkM/{_¿ôeê†C1a×®:ÌÍ#ÂàÀÂåê©ÈÇ=F2 endstream endobj 266 0 obj <>stream xœ3±P0B]#…C®B$j$ô A’@29—ËÉ“KßÓW¡¤¨4•K?¨ŠKߨˆKß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-¸sA¨ˆ‘}™@ár'Wm'==±„íWþò—ûæ¿_þÿýþÿ@ðú쿽Kÿg–ímÙ‘¨§½®V?±"±Â`O=HòÿçžËÝO®ê®`hààrõTäáÜIA endstream endobj 263 0 obj <>stream xœ3±P0P0QÐ5T01V01TH1ä*T0¶ …Lô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[ØìpDÀFáË—ÍO¿P¸7¹ŠÃüßäZ»í—ÿÿ ®ÿÿ?Ë7lÿÛòu×·ÞöÎÕ»žØ²M;›GwÁ†„L \®ž \$m:Ï endstream endobj 260 0 obj <>stream xœ3±P0P0bSS3…C®Bc ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶ë²¼Èøÿ@ ¶27¹ÿ?øç4ýòÿ¿+8¸\=¹Eâ:‘ endstream endobj 257 0 obj <>stream xœ340R0P0bK3 …C®BKC ßÄ5Õ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-ÜV`öòå¿ùÿæ¿ü„ †Í®ûñû¶_~][÷ë¾ÿÚ¯¿_×Úm¿þ~í—_¨Â/â_þñÃdßüèÿ˯ýªÍÿ7?úå×ý@Æú°î¹G¦³²,0ÿÿ‘A€ËÕS! "_™ endstream endobj 226 0 obj <>stream xœ31R0P0UÐ5T06W0±PH1ä*T0 (˜X*˜êå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶çk oAsŒòc¹&ö—_æ{þ}´÷ÿÛ¿%MýÛÏ5uP§CèðŠ|Þ÷k¤ùÛïç=øýïÿêèÕÑ^RÁ^3Vñh)f20r¹z*r B> endstream endobj 105 0 obj <>stream xœ35V0P0bS 3…C®BSs ßÄ5Ô3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶`ÁËOÎ8|èï’pï}È"Ñ2OÀSÝ3lR¬Öë_·~e{¿ÿ þ)e‰Ÿ\±ü@óƒãÿ±_›EO[þÿ`hààrõTä΋Xv endstream endobj 102 0 obj <>stream xœ344W0P0VÐ5T044V03QH1ä*² @ÐÌTÁXÏ( $’s¹œ<¹ô=}JŠJS¹ôÃAª¸ô=€Š¸ôœ ¹ô]¢ ¹ b¹ôÝôÝ€Ü}o v.}çüœÒܼb;;.O%·ÆúÿÿÿÌêÈbew8«Â_Æ£{oß¿»å¯wÇBè-×ëöÚï…Ò;ßíþ[¶m÷åëkÿ^^÷?víº/__×—¼Þ=;{¯mÕý»Vï¿ÞºõÞ?¦üËëýñr—ã¿ü¾þÛ·þòûø·¦ÿý÷Öo¹v9€‘A€ËÕS! ®ndh endstream endobj 99 0 obj <>stream xœ37Q0P0QÐ5T0³T03SH1ä*T03 (˜™+˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶pF «SBãCö9Á5ùí-ùž{վ̾T›¿üÚ—ýùñëÃþÿ_ûÇÿãW–³Öÿ™µþýþ÷7ÙNy·íß´ûÛ¦½Þ6íV4¯î†i ÓNd:,Ú&&aÉs7‰AËÕS! ¥þLæ endstream endobj 95 0 obj <>stream xœ³0T0P04f– –& )†\… ¦æ@¾ˆkh¤g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@µ\ú@¥\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAmÁ•³àCKìdcI±ÚñÖ=aµ…›ÿ¦lþÿ‡Á…ËÕS! \®O? endstream endobj 551 0 obj <>stream xœ31S0P0b#cK…C®Brô t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-œ³#}ùÿå¿êéïÿºoþ_íïÿ=Á µÿ×~üw=Xþoûåÿk¿ü*_¿lŽ3Kï†.WO…@.Š_=I endstream endobj 548 0 obj <>stream xœ33P0P0bS3SC…C®BS(k¤g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ @Ê%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº((2^ÿ3«ç‚ˆ”è2ñC_öê;VÅM_úN<¬µ÷¿ØòWÿR>ÖiýÊ_öëïþüÿù·ÿßþö÷ˆ¹×DÆ×Ñ£áþF.WO…@."ôGr endstream endobj 545 0 obj <>stream xœ3²P0P0aSSC…C®B#c ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]ž\IkÞúX.ßÀÁÐÀåê©Èžç5Ï endstream endobj 542 0 obj <>stream xœ340S0P0WÐ5T°´P°0VH1ä*T°4 (X˜(˜ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³ãmÈeË¥ï¦ïìì䨨è{usé;çç”ææµØÙqyº(¨-\WÊÌÆ2!;l'ÏÅ­ÙÄ9L©ÚzHó°Cv ‡Ù.Ç,òŽv“_Bý/ÿ¥¿_VíÿåÿÿWüþ_ÿ|ýøÿÿÿOYK¤ºþïÿ¿“Íkÿÿüÿ÷ÿ¢ýùÿóoû»õö7©7ö¼ë¶¤íH8äßæØêߦùá3‡ãš5m{¹\=¹¹d endstream endobj 539 0 obj <>stream xœ³0U0P0bs  C…C®BsßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]Xÿ«-h[ ÷§-mŸüáß ð÷ÿûÿÿþÿÿ_q¾>stream xœ3±P0P0UÐ5T01R05SH1ä*T06 …ÍLõ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[ÓhUõÿëù¶ôÿ`ð)ýƒãGþöû5mæ™kí9÷.¿µ'þ÷þÏöö~½šöÊ7´Ú{ëmÎ ÕÑÑÑÜ<: \®ž \ž>¿ endstream endobj 392 0 obj <>stream xœ37Q0P0WÐ5T07Q01PH1ä*T03 (˜õ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYH¹DrÄré»é;;»¹66úÞ@Ý\úÎù9¥¹yÅ@-vv\ž. j‹-øjÄíÄšYäzß(·I¸óØÍv4kÊey¡þÚëÒÞ¤-ûvü_õÕkßþ_ë_íø›µäŠëÿ«×džÿµëëÕúõk³Wè­Úÿ?4ê+Pèß–iû¿FÅÿ_7m÷Ò«†&Œ \®ž \`«Oï endstream endobj 389 0 obj <>stream xœ³0T0P0bsss…C®Bsc ßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇåé¢`]øïÉË+ÒÚÂæÉþ ÿÿ¿ÿÿO6ãÿ÷ÿÿÿÿøõÿñññÜÇÿÿ?·°Nþþýûÿ‹$?ÿÿ¿(õø×ßú×ÿÿíÛ·ÿׯÞ‡~Ä+,Hq¿~€…ÁËÕS! ¬ÿXb endstream endobj 178 0 obj <>stream xœ3±P0P0S°P01T01WH1ä*T06Š([*˜é*˜ëY*$çr9yré{ú*”•¦ré‡Õpé{•pé;8+ré»DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.Oµ;âæÍÿÿÿyO§?絯ü\¾Á—ntææÑ]c°áÐ!~[…Íåý´st¬îÌZ°áÚ¡ÃÿÿÿÀÈ Àåê©ÈM!9> endstream endobj 423 0 obj <>stream xœ³0U0Pa CC…C®Bs3 €˜oªg¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@µ\ú ¥\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÇÎŽËÓEAmAKC°üµEßïÿG'r—üå¯~å/ûõwþíÿ·¿ýÝcü2.w†)JóþÿßÀÁÐÀåê©ÈóNcñ endstream endobj 420 0 obj <>stream xœ35U0P0QÐ5T05Q01WH1ä*T05PA =C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]4¥xž\)ÅÊŸ!Q'ýíÿïï¿ÿÿÿÿëë¯/{õ½²ùðÇüíßßõ¿ë@ü`ßÿ¿¿ª­Z뤽“–\1mjà`hàrõTäýiDŒ endstream endobj 417 0 obj <>stream xœ33V0P04UÐ56S05V04°PH1ä*T0¶ŠeLL€²z† y ™œËåäÉ¥ïé«PRTšÊ¥TÇ¥ïRÆ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠzìì¸<]Ô\_›Èºn슊Í^ºnzÔ˺i{³Å/ýõuý×õ¯¯¿þ[·ÿoöÿÿëãÿÿ—ÿj«ÿÿÿûþÿÿýõ¿ÿ×ïÿ¾ÿýý÷÷þoÿ]¿¿úí¿{߾߾¿ººú-¼o“}Ç ÀÄåê©È#di endstream endobj 413 0 obj <>stream xœ37Q0P0ass…C®B3C ßÄ5Ó3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº((%Nÿi*é'5á`þõÿ˜`•ýÿÿÖÖÿÿÿëÿÿõ××ÿÛâ;|ÚªÙ?`bPàrõTäèÜHH endstream endobj 358 0 obj <>stream xœ³°T0P0WÐ5T°0T07SH1ä*T07 …ÍÌõ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[¸¬„í'ÏUn©ƒlš#\® ú±˜.pÜÚ"¼`^¿çK[õ¥—ªöíÁý/ëßÇÿ¿È:9^þÿÿ?³ÖÂiüýÿïúèëu¯ïæíý½t{tö¶i·¢3s ¦öæ1˜v°)"Å!´M1±µ™›[qù.WO…@.ßÏS2 endstream endobj 355 0 obj <>stream xœ33T0P0VÐ52V0µP0±TH1ä*T05Š(˜)ë‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[pGFŒCB½‰MøÂ. Éõ‡8 bYäÿ{nÛºmWáÿèÿ ð}ýïØ×¹úß$¼[ÄZKçˆ7³®øÿ¿þ>ÿD…d¥ÓøÛ·ß»wóaIï½&ÅòŽ_f÷¾üÿÿmÊÕì­·½suÛ„n$êÎu^cÈÍ£#¡ÓÈù€‰AËÕS! ƒÁT endstream endobj 250 0 obj <>stream xœ3±P0P0TÐ5T01W05SH1ä*T01 (˜š+êä€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶“CZCƹ]måÛ'{Z”î¯Ï¿ÿýýÿÿÿ_}ýú¥¯¼»^¯Ûý~>×ó÷ï¿¿ÿÿâêæ©ó«³ý´tM™u+[àPC—«§B 8ZKŽ endstream endobj 247 0 obj <>stream xœ3±P0P0UÐ5T01R05WH1ä*T06 …-Lõ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[È›¨Ðø}ùò姘~8~Èÿ7ÿÿÿ¾ËÿaàßõÉ¡ëÿ¿­[véaëã[·næfãbP`ârõTäŠ2> endstream endobj 244 0 obj <>stream xœ35T0P0b 3…C®B3 ßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶àÎ9‡®S=Êú9Ä[¦{_ú²·n­úø§üÓTòƒòìàåráÕª‡ë°08p¹z*rŒFO6 endstream endobj 175 0 obj <>stream xœ32U0P0TÐ52V04U0³PH1ä*T04Š(X*ê%dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³r‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. Ÿ²„ÿã?~04pp¹z*re*<' endstream endobj 172 0 obj <>stream xœ3±P0P0UеP01R03VH1ä*T06 (˜*˜êå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j §lâýÚºFo‹‡°1ËÒëÿaàõÒ¦çþ¢ ïÌz¯(Øüö=\âïÛOÓÜtß“sÖøÀÈ Àåê©È5CÉ endstream endobj 169 0 obj <>stream xœ3±P0P0bCSs…C®BcS ßÄ5Ó3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶`gCœ@ýòÿ[$&ÿÿ?ÓnÞþ}?yêÿ#…{ O®ºÕÀÁÐÀåê©ÈÇ•:M endstream endobj 166 0 obj <>stream xœ3±P0P0V0W01Q0±PH1ä*T01Š€(c=C3=K…ä\.'O.}O_…’¢ÒT.ýp $—¾˜t pVR.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ØÎŽËÓEAmãå—ÿ!à©HMœoПfy(ëF.WO…@.>,09 endstream endobj 163 0 obj <>stream xœ3±P0B]CS3…C®B$hj®` g”ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ †\ú.ц\±\únúÎÎn@n€¾7P7—¾s~Nin^1P‹—§‹‚ÚN)Íã'W½ŸXÿþôÍã°ç°÷ï¨ý¼²Bá¾ï—¿æ—ÿ~ùÿ÷;Hòoýëý×·ì«w}ÃtÕ£¥ç—îæÎ0ØÈ&ÂàÀÂåê©ÈhÇD¶ endstream endobj 160 0 obj <>stream xœ37U0P0UÐ52V02LR ¹ Ì@¢ ææ ¦z† I ™œËåäÉ¥ïé«PRTšÊ¥TÅ¥ïTÄ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]ÔršÄ¸ã `ƒ‹B…ãCáÞ‰'Wr8î1˜ýrßúe¿òÿçÿß_¿ÿÿÿÛÿ!àõõÿÿöÖÿúúë­þoï-»½·ìHd=‘!¡ú°#îЇƒF¡*ÿ ŘÚ`apàrõTäoEWÖ endstream endobj 157 0 obj <>stream xœ36W0P0bc# …C®B#˜ˆkªg¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@¥\ú@•\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAm‘<·?‡­ýåÿÿÿßú»Æ`ÛF ã„óñÿj‹ßÿÇ>*3×30r¹z*r#ÙA÷ endstream endobj 154 0 obj <>stream xœ33W0P0QÐ5T03R05UH1ä*T0µ (˜š)˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶`Á.㎃̇ø9Ú4ªXxªÉM®ò}i~ùu•ïÿµÿ—ÜÿÿºþÿŸòÿ@ ¶:þÿÞ²ýïãßÇ®ûºmÚ­èÌÜ¥E$¶ˆM8˜Ø:!À…Á…ËÕS! ÷FK endstream endobj 151 0 obj <>stream xœ34²P0P0bC#c #…C®BCCK ˆˆo¢g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá µ\ú@¥\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¤ÇÎŽËÓEA!!2ûÖ§,Î)f»]ÿ?ÏWÿÿ·KÿÿçB¨ÿ·½ÿÿݲ‰‚K‘«âÆúÿÿoýÿ»B°ð®S‘HŸp!øwüÛ&.WO…@.½÷ƒ· endstream endobj 148 0 obj <>stream xœ33W0PaSKs …C®BS# ßÄ5×3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶À‘ÇÌòF¡Âñ!û¢Æ½LlrM¼/Ծ̾TÇ÷åöûî¼ÿ·ÿÊšþ;Æ`GbáÚúµUõ¶lÙuéµ··÷Z]Ö¥K9Šó5KĽ—L›¾ôeU\S¬þÒ _¶^-½ñúC—«§B +éN endstream endobj 145 0 obj <>stream xœ32U0P0S06U04W03VH1ä*T04 (Y(˜é*›èY*$çr9yré{ú*”•¦ré‡qé{Õpé;8+9.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAm1wÜÖK—^Çm}ýÏê¿íë“«~¿æÑ`hààrõTä´J( endstream endobj 141 0 obj <>stream xœ35T0P°TÐ5T0±T01PH1ä*Ñ hb¨`©g”ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ @Ê%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[4ŸIYÑ4ôSV÷åòÿÿVÿÿÿõú«ýÿÿÇÖA™_ÿÿ[}ýúÅÖÛžö^%¼Û„Þ8=84_‚¡ƒËÕS! fË? endstream endobj 138 0 obj <>stream xœ36U0P°PÐ5T06Q05SH1ä*T02 (˜š+Xèå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶àËÿ__ýÛ¿ô×ëuâ-¼ÇÕÛÉÿÛ[ÿÿõõÿ jÂÄU±õÿÿ¯¿ÿwé¿—Uo—¶)&¶20r¹z*rç`>* endstream endobj 135 0 obj <>stream xœ35T0P0bS3…C®B Ì5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶àJ†%Ï© =Ç>4²}hÊ÷Pçd]ú2³ôë·­‰%öÿ}ýÿÏ¡ÿ¤Èן,Ÿ¸/ßÿ[·úÿÿ¯×_íÿÿ?•ùõË¡B«™‚˜¸\=¹ÈÆOú endstream endobj 131 0 obj <>stream xœ31U0P0UÐ5T01S01TH1ä*Ñ@hb¤`ªg”ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ @ŽK´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶pÁ!ÇÚ‚~…æ*νj&W…_~]·ýúúÓÿmÿèýÿÿҿᙞ«þM¿öz{Ü´[ܹº¦I$4Øp–Ù¡ƒËÕS! M=€ endstream endobj 128 0 obj <>stream xœ31U0P0QÐ5T01S01TH1ä*T01 €(=C HÎåròäÒ÷ôU()*MåÒÊré{€I§gC.}—hC.ƒX.}7}gg7 7ÀÆFߨ›Kß9?§47¯¨ØÎŽËÓEAmÁÁú,üb¹7¹Šwÿþ¯õû¿ím}´ÿúéö ‰vŽ™%»qmhú"¾ô¥Þôµ¥M—þÿ-¼²ÿSÖ¬=Z±KgšM“ætMìðM8Ä£ÁÐÀÁåê©È•D¨ endstream endobj 88 0 obj <>stream xœ31U0P0UÐ5R01V03RH1ä*T0¶ (˜™(˜êå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQPÛÙ}ŸbÀý¿Ù×cn¤Vy_úõµË{mɂձz[/½ŽÕ¿ô·êú××ñ뿾þúÿÿßúÿ@Í£ÁÐÀÁåê©Èá>ü endstream endobj 85 0 obj <>stream xœ31U0P0QÐ5R01P03TH1ä*T06 ¹Æ &z†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]ԖňˆW$ì9£õøõº1zâ†Mÿƒòü&þC™?ú~¹ïûµÖÎüïûÿ÷?Ýoâ¿gÿUD̬«÷—ìþvé­î–m—n4mãap`árõTä0½Hl endstream endobj 82 0 obj <>stream xœ³0V0P0bs 3#…C®BsßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠y8ú§©´KãáCÏ„ÝÄÿÿÿ»eÿÿÿß.ýÿŸ«ÄùÛ›XXç7m Àþ¿ö—³ñsXÌj^$ÿA‰ËÕS! 0´já endstream endobj 79 0 obj <>stream xœ3³P0P0b333#…C®B3S ßÄ5Ô3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠u8ýS–‘DšÀ ýìŠèú¥Û£³_æ^ÏÞ›»þÚ­èì¯ÛöGg‚˜ß£×ÝŠÎÞ·[ôÚïøÿpÐòIŠóÿ.WO…@.ô6FY endstream endobj 76 0 obj <>stream xœ³4V0P0RÐ5R°4P03RH1ä*T°° ¹& Fz†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]™Dÿÿ4UrÈQa;͹àзfîúßëîß_¿ÿ¾÷ÿËß¾ìÿ+qûËú“ëëvÿ­º×êý××õ—×MÿÿÒüí¯øÿKÈn>stream xœ32U0P0WÐ5´P!…C®BCC ¨‚‘…‚¹ž!HH&çr9yré{ú*”•¦ré‡Uqé{qé;8+9.ц\±\únúÎÎn@n€¾7P;—¾s~Nin^1P‹—§‹‚ÚÆíï÷ÌZc\gÿo×ÿëk«®{{¯­jà`hàrõTä,(_ endstream endobj 70 0 obj <>stream xœ3³P0P0VÐ5R03Q03RH1ä*T03 €DŒõ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. *ÿOœÄ¬±àa‹DÜõ­ÿñw{¯ÿÛ}½îõ­èk·Þ.Ý6í†w®ŽAÂ4‰Ö61.WO…@.g»O3 endstream endobj 67 0 obj <>stream xœ31U0P0UÐ52V0¶T0³PH1ä*T06Š(X*˜ê‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³r‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j .myýu=:|Yõ þ›Ž¡L>(k ƒ —«§B édJV endstream endobj 593 0 obj <>stream xœ3·T0P0TÐ5R07W05TH1ä*T07 (˜+êä€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQPbQbúÿ)Ëå£EºI™°cëïØýûãëóvý+{üßE¿cÿíÿw)·ü×ÿßž[ï¿þÿVízýúÿ[f# ï¯÷ ÿý«þþeÿ?ÍþªÿËïíù}ý¯ÚW L\®ž \CrZJ endstream endobj 590 0 obj <>stream xœ340V0P0QÐ5T°´P°0RH1ä*T°4 (X+˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠š¸øÿ“+W¤SæHèÿ'Ä_÷?öÿÚ­_¶ý÷Î-÷ÎÕݲM*:aš„Á´ƒv%væfãsܶ‚¡ƒËÕS! õ\# endstream endobj 532 0 obj <>stream xœ35R0P0bKSC…C®B3 ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]TóO®”l«{ðOúûÿûÿëÿÿ?‘xûÿÿÿjë¿~ØSÿçG|;PüÃþÿõåÿÿÿúÿÒÿë@$yQ0žA€‘ËÕS! ÕE+ endstream endobj 529 0 obj <>stream xœ3µT0P0bSSC…C®BSßÄ5Ò3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]”çÈÈÌê9#^Ý̸îþö·¿ëþ×Ýÿwÿÿïúÿÿïÿ¿õÿ×_ÿ·?nßôëKê{Šj Xè1!A€‘ËÕS! ÜÍAÄ endstream endobj 526 0 obj <>stream xœ31V0P0bCSc…C®Br õ t ô ,ÀÂT!9—ËÉ“KßÓW¡¤¨4•K?¨”Kߨ’Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-œ3GGÐ/ ŸûgÉ^}ïK¿ìÿÿ”šJ>8þøÚ,yæÿ¿ƒ¡ËÕS! ·“EÔ endstream endobj 523 0 obj <>stream xœ3¶T0P0ac#…C®BcC ßÄ5Ö3TÐ5ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ @ŽK´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[x–ɉŸÃF}ù¢¢*é—_Ö{þú»ññ« KÓ¸ï ®ßæîçÍ1ðN>‘˜pÐ…ÁËÕS! sÄ/| endstream endobj 520 0 obj <>stream xœ3¶T0P0bcc#…C®B#˜ˆkªg¨ k$’s¹œ<¹ô=}JŠJS¹ôʸô=€j¸ôœ ¹ô]¢ ¹ b¹ôÝôÝ€Ü}o] Œs~Nin^1P‹—§‹‚Ú“ì,r—¯»5}_rݱu‰mMéÿ;³Ös¬¾í_»uáh¹k×$" ¸\=¹Àä.ú endstream endobj 517 0 obj <>stream xœ3¶P0P0VÐ5R06Q05PH1ä*T06 (˜õ r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÈq‰6ä2ˆåÒwÓwvvrllô½t2Îù9¥¹yÅ@-vv\ž. j Ï·7±/nûÐÄc«ö«6ßsÿ×ý@êÿÿÖÿÁàÉÕl ™«ÿÿÞþÛÞ¹úß.æQØ¦ÍÆÅ ÀÄåê©È6== endstream endobj 514 0 obj <>stream xœ32V0P0b#sSc…C®B#3 ßÄ5Ô3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFß[A(㜟Sš›W ÔbgÇå颠¶°ù@…;ïKuÏìKÿ½¨ÿÿÔ>e¹7þG/Ÿªÿoà`hàrõTä>);° endstream endobj 511 0 obj <>stream xœ35Q0P0bKSC…C®B3 ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]”<<¹R²éá;éo÷×áÿÿÿÿí­Û«ï}éÃt]Ï3ü‘þp(“\ÿWßûú¥+¢\\ L\®ž \ãóC( endstream endobj 508 0 obj <>stream xœ31T0PacKc#…C®Bc ßÄ5Ô3TÐ5ɹ\Nž\úž¾ %E¥©\úá@E\ú@5\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEÁ”·þäJµŒ²º¯óv{çê^º½vËŽoÛ¶ý~+qoê—{“_Ý›\¾úu…ŽE›à ó? ,\®ž \\5r endstream endobj 382 0 obj <>stream xœ36Q0P°TÐ52T02S04SH1ä*T04Š(›+Xê‚$dr.—“'—¾§¯BIQi*—~8P—¾P—¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï­  ”qÎÏ)ÍÍ+j±³ãòtQP[V±ÐÖÖîÑ¿OYû¾·UÿzýßÞìk{³—þŠŠŠŠÍu`apàrõTäšX-¯ endstream endobj 298 0 obj <>stream xœ32V0P0WÐ5T02W03VH1ä*T02PA3s=C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]ÔÌÔ5ýÉÿÿúë¿uû±O¯ÿq}Õÿ¸}¾¡ú±¯“6jà`hàrõTä­˜?j endstream endobj 295 0 obj <>stream xœ3²P0P0WÐ5T0²T03TH1ä*T02 (˜)˜ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶àСºý¯ytêÿÿÿ¤–ȾXøR­öõ×W«þ_­Zÿ8nÉõ¸­¯¿áI·ýq«¯Ö¿¾Zÿ²êoÞ´£‰­ Œ\®ž \†,? endstream endobj 292 0 obj <>stream xœ31S0P°TÐ5T01S01PH1ä*T06 (˜*Xêå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³r‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ô|PáøPÆ,&QíPUàK»©™vÓÿMÍþújTü¿]×ãÿm¼Z¿Þaõÿxï¨É¡ÿCßf—þ•~½mzt"ËËÄ®¤ ‡xX¸\=¹>ú endstream endobj 289 0 obj <>stream xœ31S0P0SÐ5T01S03VH1ä*T01PA33=C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ô6?pé^?¡þßþø×_!Äžé¯êó/ýÅùEëׯÿ—~ý}µn×(þ[º> 6üߪ}«×ÿ-]õÿµ÷?[ÝKË´|K$¸\=¹‘LÓ endstream endobj 286 0 obj <>stream xœ³°P0P0b c C…C®BsK ßÄ5Ñ3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g åmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]¬ÖOpHµW¸¸¾ýÃ? øÿ»þ÷ÿÿûÿÿäùù¿~ÿÿÿÿ¿þÿoß¾}ÜÇÿÿ?ëøÿýû÷ÿÿýŸpsþÿ¿úÿÿËÿÿ·ÿëÿÿñëããÿÖÖês?¬ÑŸ`§üúƒ—«§B ±øYÿ endstream endobj 283 0 obj <>stream xœ31U0P0QÐ5R01P03TH1ä*T06 ¹Æ &z†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]ÔÎ9ã¡ð¡_ Â‘í‹pUÜB[ÕK±u{kÕö®u_ý¿÷Ÿþ?…‹Óäšx_üʳ›ýný·ÿ¯þÿ™µþÿÿÿûwý¯¿ô?oÿ]Ý]·½su7L;šØÚÆÅ ÀÄåê©ÈZIG endstream endobj 241 0 obj <>stream xœ3±P0P04SÐ54V06R04RH1ä*‰¡‘)¥g’’ɹ\Nž\úž¾ %E¥©\úá@I.} *.}§gC.}—hC.ƒX.}7}gg7 7ÀÆFߨKß9?§47¯¨ÅÎŽËÓEAmIÁC[»/ÿ÷×WTØ_Ûõ2aÚÆ ¬¦×‰, \®ž \‘«)? endstream endobj 238 0 obj <>stream xœ33R0P0b33#…C®B3C ßÄ5Ö3TÐ5Ð3° S…ä\.'O.}O_…’¢ÒT.ýp R.} J.}§g Ç%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(¨-äØ`çÕ”øD‘õüûüeÿýÝÿõ׿ÿÿ¯êíÿ·ÿËÖ_Þ¯/}Ù£ºÂ±„CO± æŒé¿½õÿ__ÿ¡þí*Tfö`dàrõTälºF= endstream endobj 125 0 obj <>stream xœ³4P0P0b CC…C®B C0ˆo¬g¨ k g` ¦ ɹ\Nž\úž¾ %E¥©\úá@µ\ú ¥\úNÎ @Ê%ÚË –KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææõØÙqyº(¨-¸•ÅôI*ë¯r„z?GÇ—l&9…{MÜ &_ŠUù2Ýû¿÷—¯Ùëÿÿ]Ÿ}ëÛžúÿ@ð§­µPþ¿ÚÂs g~ÿO øó¨ÅÑÿÿÿ \®ž \vƒjv endstream endobj 122 0 obj <>stream xœ33Q0P0UÐ5T0µP03SH1ä*T05 (˜™+˜êå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶ÀñŠåv….¦‡lⱇ¿p´ÕšÔ²ü“÷¾ú«þñ÷ßï÷“‘YÁs)«³A¢Âù”Ãö ßäîôáŠéæÌ'RWŸ0å8¸£2B&¿ìßûwûþæ­Í[¸4Q#Q“MÔó ߀D'6®Æ¹ Œ \®ž \7N2 endstream endobj 119 0 obj <>stream xœ³0T0P0QÐ5T07S03SH1ä*T07 (˜™+˜èå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶pV ÏM¦Wšñs\°Qp8|Áq¯Ú—Ù—ò=÷ª}Ý7?úRþßüÿ_fÿ’ÿûþÁŸYkëÿÿάÿ÷õß­ø÷Ñ™õۦ݊ÎÌ]ºmšD"놄i­mb<@èlîÁÐÀÁåê©È÷iO¸ endstream endobj 116 0 obj <>stream xœ33V0P0VÐ5T05V°4TH1ä*T05PAK#c=C HÎåròäÒ÷ôU()*MåÒ*âÒ÷ªáÒw pV0äÒw‰6ä2ˆåÒwÓwvvrllô½º¹ôósJsóŠZìì¸<]Ônø ñÿÿ¯ÿÿ_ÿ_ÿú®Û£Ç1Íùÿä€e ÿ£†÷!Œ_·×ÿ-_w=oÛ¥‰eÚÙ<:¦N)1(0q¹z*rÉ}Rž endstream endobj 113 0 obj <>stream xœ³4P0P°TÐ5R°0P040PH1ä*T07T‰)XêeDr.—“'—¾§¯BIQi*—~8P—¾H—¾S€³çmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠzìì¸<]Ôļ`ãÝÉË(ÎÂ[УpÃÞmÁÚ޶‚ëŽl¶,üK~9þªU¿ú«6þþúðÿ÷Üÿýïê÷û|’ﳟl¸µÉLj§(ÛnUÅ™“.è§h˜$¾±mß¾}÷oß>ü®ÈgûPÓ–èç¸"\q•ù„\à aœm~?Üý3âq}ý»ÿ_ëï_]û7ênÔáÕ^R—š9=?$jñ,ç[Ùu8D"„GKqc¬ÀéU L\®ž \йlA endstream endobj 64 0 obj <>stream xœ35T0P0VÐ5T0±P03VH1ä*T01 (˜™(ëå€Dr.—“'—¾§¯BIQi*—~8P—¾P —¾S€³‚!—¾K´!—A,—¾›¾³³`c£ï ÔͥSš›W ÔbgÇå颠¶àRMë—ÿ'Ò.×þ‡‚OÜç2èç±çP¸¿äxKóËZ»É¯_}ýÿúŸzüÉUÿ¿ÿ¿ýÝÞßënUg>ÜÐûÜáÞa΂#z<"?°08p¹z*rQš endstream endobj 61 0 obj <>stream xœ31U0P0´P01S06Q03VH1ä*T04ŠÅÍRz† &¦z– ɹ\Nž\úž¾ %E¥©\úá@U\ú@E\úNÎ †\ú.ц\±\únúÎÎn@n€¾·‚.PÆ9?§47¯¨ÅÎŽËÓEAm¡xéú¥K—^›6=ŠÛKË7èVC—«§B ÿ#Ó endstream endobj 57 0 obj <>stream xœ³4T0P0UÐ52P°0U03UH1ä*T°0PA ˆ©ž!HH&çr9yré{ú*”•¦ré‡Uqé{qé;8+ré»DrÄré»é;;»¹66úÞ º@çüœÒܼb ;;.Oµ×JØvò\¨P¨p|(ÄÜÞâ'Å|ˆ…Ç–Eú‡Á|G¶/³/å{îUû2ûå—Ù×~Õªý¿”ÿWíÿ˯ûÕæÿ›ÿÿñ¾ùÿÿÿÿ¶gÖÚúÿÙÿ¾Þú¿·lÿÛ¥ÿnÅ¿]zë}tfÙîÌܥۦ݊ÎÌ1˜v˜3±M šGµG "¥áabGDbÂÁ©/  \®ž \Rd endstream endobj 54 0 obj <>stream xœ33S0P0UÐ5R03P03QH1ä*T05 ¹f ¦z†@9 ‘œËåäÉ¥ïé«PRTšÊ¥TÄ¥ïTÃ¥ïà¬`È¥ïmÈeË¥ï¦ïìì䨨è{+èeœósJsóŠZìì¸<]ÔNñãI‘¾¶¡9ÂåÛ†FfþálG¶k“eT¾Ì›¾|É×—v»ö¿´ýú}üÿ †ÿÿÿW[}¿éßÿïwksÿ¿Û{íÖûèì[Ñ¥Ûväên˜v؛Ǡé0gbGDbŠQ?ƒ#—«§B ±¤KÆ endstream endobj 11 0 obj <>stream xœ³°P0P0UÐ5T°0R0·TH1ä*T07 (Xeô r@"9—ËÉ“KßÓW¡¤¨4•K?¨ˆKߨ†Kß)ÀYÁKß%ÚË –KßMßÙÙ È °±Ñ÷êæÒwÎÏ)ÍÍ+j±³ãòtQP[p-‹ç$Ï¡ … LJì-r‚Ú‡Xx_(¾à¸WíË|O ±7úÕ×Zý÷á¿/ýÿöõÿëëÿßï?þÏnÉ‘ú'Wëßÿÿý}×ß—·Ý^{}×íØ-Û®çênÙ&áØ$Rf¸¶ióèl8t°µ™u•k L\®ž \]ZT endstream endobj 628 0 obj <>stream xœ]O9à ìy?±\X4NãÂQ”ä‹Â€0.òû>ЬÄH;ÌìÎ’~¸FLžÞŠ7¬´‘V»yx‚YT”XjŽ.£X¸C¤¹û|à(µ÷¾y5e›©b7 +au\€çfÔÑX¬S±#ÿ¾«Ý4©K]Gõ‰´e‰ºIv`YÐ:SMÅ.¤2O>g¤%)ò™‹Í{0!ß•s§¸ÚÀuº³.¹p|è;˜]K endstream endobj 144 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 34/LastChar 125/Widths[ 48 48 48 48 0 48 48 48 48 48 48 48 48 48 48 48 48 48 0 48 48 48 0 48 48 48 48 0 48 48 48 48 48 0 48 48 48 0 0 48 0 0 0 0 0 48 0 0 48 48 48 0 0 0 0 48 48 48 48 48 48 48 0 48 48 48 48 48 48 48 48 48 0 48 48 48 48 48 48 48 48 48 48 48 0 0 48 48 48 48 48 48] /Subtype/Type3>> endobj 629 0 obj <> endobj 618 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 97/LastChar 114/Widths[ 73 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 72] /Subtype/Type3>> endobj 630 0 obj <> endobj 631 0 obj <>stream xœ]=à …wNá´R¦(KºdhUµ½1&bˆA„ ½}ü µdKÏö'?Ë~¸ l#Ègpø¦Ʋ´¸5 ÁH“eQ_@[Œ»*gå…ìïʾž -ÙôCÍ$_͵.­zƒÐiZ¼B Š'm•¢kMŠNë¿ñæÜn®ÝY+]˜cšñlæ¸ ¸†@‹ãâ(±LçSÞùLAJñ“ÂUJ endstream endobj 132 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 12/LastChar 121/Widths[ 51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 66 0 62 0 0 0 0 0 71 0 83 0 71 62 0 0 51 0 68 0 93 0 0 0 0 0 0 0 0 0 45 51 40 51 40 28 45 51 26 28 48 26 76 51 45 51 0 36 36 35 51 48 66 48 48] /Subtype/Type3>> endobj 632 0 obj <> endobj 611 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 46/LastChar 46/Widths[ 43] /Subtype/Type3>> endobj 633 0 obj <> endobj 634 0 obj <>stream xœ]=à …wNá4U¦ˆ%]2´ªÚ^€€‰b!Co_ ?C-ÙÒ³ýÉϼnÙüœzccI\܈“%V_@[wUªš¥g¼¿Kÿùz„´€fÓ9#µÍµ´ê RNãâ¥Â iBÖU)DgR†¤ÿÆ;4šs»mÄY+]˜cšñlæ¸ j )ÇÅQ6b ϧ¼ó™‚”ì•´UM endstream endobj 96 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 12/LastChar 121/Widths[ 90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 63 0 0 0 0 0 0 0 81 81 81 81 0 0 0 0 0 0 0 0 0 0 0 0 122 0 117 0 0 0 127 0 60 0 0 0 0 0 121 0 0 0 90 112 0 0 0 0 0 0 0 0 0 0 0 0 78 90 72 90 74 49 81 90 44 0 85 44 135 90 81 90 0 66 64 63 90 85 117 85 85] /Subtype/Type3>> endobj 635 0 obj <> endobj 553 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 97/LastChar 114/Widths[ 46 0 0 0 0 0 0 0 0 0 0 38 0 0 0 0 0 45] /Subtype/Type3>> endobj 636 0 obj <> endobj 58 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 0/LastChar 15/Widths[ 71 0 0 0 0 0 0 0 0 0 0 0 0 91 0 45] /Subtype/Type3>> endobj 637 0 obj <> endobj 638 0 obj <>stream xœ]1ƒ0 E÷œÂ7 u@,tahUµ½@H”' aèí›ÈPK¶ôm?ù›ãm$€?½•o   )«Ý¼D˜p6Äê (#ár•‹pŒwá>_‡Pïú!䯶¹æV½CÒ*\èÍȺ*Fßé=CRãštÙn›¾ÔJeæœ&<™9oƒÜ¼G Ùqv”ŒÂò”³.Q“ý˜LUQ endstream endobj 44 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 12/LastChar 121/Widths[ 75 0 0 0 0 0 0 67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67 0 0 0 52 52 67 0 0 0 37 0 0 67 67 67 67 67 67 0 67 0 0 0 0 0 0 64 0 102 96 97 103 88 85 106 0 50 0 105 81 128 105 101 92 0 100 75 94 103 0 139 0 102 0 37 0 0 0 0 0 65 75 60 75 61 41 67 75 37 0 0 37 112 75 67 75 0 55 53 52 75 71 97 71 71] /Subtype/Type3>> endobj 639 0 obj <> endobj 462 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 34/LastChar 124/Widths[ 62 0 0 0 0 0 0 0 0 62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62 0 62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62 62] /Subtype/Type3>> endobj 640 0 obj <> endobj 641 0 obj <>stream xœ]=Â0 …÷œÂ7H ¨SÕ¥, \ uœ*C(MnO’þ X²¥gû“Ÿe»ÞØFÏàðMŒehvK@‚FË¢>¶7U*NÊ Ùß•ÿ|=AZ ³ê‡šH¾šK]Zõ ¡Ó4{…$Ú*Eך Öã ̱ݜ»£Vº0û4ãÙÌ~p 8ÇÅQ6b™Ž§¼ó™‚”â”iUK endstream endobj 452 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 97/LastChar 120/Widths[ 38 0 34 0 34 23 38 43 21 23 0 21 65 43 38 0 0 30 30 30 0 0 0 41] /Subtype/Type3>> endobj 642 0 obj <> endobj 643 0 obj <>stream xœ]O9à ìyÅþ_qeÑ8 GQ’`X, ¸Èïø(²ÒŽ´ÇŒfh?Ü£Ч·â”6Òãj7/&œµ!eR‹pLÅ¡ýÈÝçëâª}~ðé«mê¼*w’°WÇznf$]‹u*#häß¹ÚI“º¾o’X•EÃÒª­Ù……Ì2'!)&§›÷hB‘M&oÚà•ÓY—X›üXÔY endstream endobj 15 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 11/LastChar 122/Widths[ 53 51 51 0 0 0 0 0 45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45 76 0 0 0 25 35 35 0 0 25 30 25 45 45 45 45 45 45 45 45 45 45 45 25 25 0 0 0 0 0 68 64 66 69 62 59 71 68 33 0 0 57 83 68 71 62 0 67 51 66 68 0 93 0 68 0 25 45 25 0 0 25 45 51 40 51 40 28 45 51 26 28 48 26 76 51 45 51 48 36 36 35 51 48 66 48 48 40] /Subtype/Type3>> endobj 644 0 obj <> endobj 645 0 obj <>stream xœ]=à …wNÁ Hú“)Ê’.ZUm/@Œ‰b!Co_ C-ÙÒ³ýÉÏ¢n™ÀÅÓ[xcàÚò¸ØÕò'C¬>qe ì*W˜¥c¢¿K÷ù:äqõ¦rFñj.×ܪ7¬ÂÅI@/iBÖV1ºVÇè’úïШËvsîJ­TfŽi“™ã6‡Õ{¤gGɈ!,O9ëÅc²—UO endstream endobj 436 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 11/LastChar 122/Widths[ 45 43 43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 30 0 0 21 26 0 0 38 38 38 38 38 0 38 38 38 38 0 0 0 0 0 0 0 58 54 55 59 52 50 60 0 28 0 60 48 70 58 60 52 0 57 43 55 58 0 79 0 0 0 0 0 0 0 0 0 38 43 34 43 34 23 38 43 21 0 41 21 65 43 38 43 41 30 30 30 43 41 55 41 41 34] /Subtype/Type3>> endobj 646 0 obj <> endobj 13 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 73/LastChar 120/Widths[ 72 0 0 116 0 0 0 0 0 0 108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102] /Subtype/Type3>> endobj 647 0 obj <> endobj 434 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 46/LastChar 46/Widths[ 24] /Subtype/Type3>> endobj 648 0 obj <> endobj 649 0 obj <>stream xœ]O˃ ¼óüj­IÃÅ^<Ø4ma1\â¡_ÀÇ¡›ì$û˜É ëú{&PöôV¾!PmPyXìê%Ð&ƒ¤¬¨22ìSF9 GX7÷ù: ñô6?Ä ìÕÔ·¼*7’´ '$x¶ˆÅ[‹@õw®6Ò¨Ïï«â;VeQó´j.üÄBe™ƒ“¿Ã•«÷€!‡È&“7ƒpætÖ%M~]*Y… endstream endobj 432 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 34/LastChar 125/Widths[ 39 0 39 0 0 0 39 39 39 39 39 39 39 0 0 0 0 0 0 0 0 0 0 0 0 0 39 0 39 39 0 0 0 0 0 39 39 0 0 39 0 0 0 0 0 39 0 0 39 39 0 0 0 0 0 0 0 39 39 39 39 0 0 39 39 39 39 39 39 39 0 39 0 39 39 39 39 39 39 0 39 39 39 39 0 0 39 39 0 39 39 39] /Subtype/Type3>> endobj 650 0 obj <> endobj 416 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 97/LastChar 114/Widths[ 88 0 0 0 0 0 0 0 0 0 0 74 0 0 0 0 0 86] /Subtype/Type3>> endobj 651 0 obj <> endobj 330 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 45/LastChar 120/Widths[ 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 56 0 0 56 0 0 0 0 0 0 56 0 0 0 0 0 0 56 56 0 0 0 56] /Subtype/Type3>> endobj 652 0 obj <> endobj 653 0 obj <>stream xœ]=à …wNá4j¦ˆ%]2´ªÚ^€€‰b!Co_ ?C-ÙÒ³ýÉϼnÙüœzccI\܈“%V_@[wUªš¥g¼¿Kÿùz„´€fÓ9#µ×¦´ê RNãâ¥Â iBÖU)DgR†¤ÿÆ;4šs»mÄY+]˜cšñlæ¸ j )ÇÅQ6b ϧ¼ó™‚”ì–\UN endstream endobj 323 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 11/LastChar 121/Widths[ 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34 0 34 0 0 61 61 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 87 89 0 81 0 0 0 0 0 0 74 0 0 0 84 0 0 0 85 94 0 0 0 0 0 0 0 0 0 0 0 60 68 55 68 56 38 61 68 34 0 0 34 103 68 61 68 0 50 48 48 68 0 0 65 65] /Subtype/Type3>> endobj 654 0 obj <> endobj 655 0 obj <>stream xœ]=à …wNá´J¦ˆ%]2´ªÚ^€1!Co_ ?C-ÙÒ³ýÉϼnƒ5ø38|Sm¬ ´¸5 ÁH“±¬¾€2wU*ÎÒ3Þߥÿ|=AZ ½é‡œ‰¿Ú¦)­zƒÐ)Z¼D ÒNĺ*…èt ÁȪ¿ñúÜn¯â¬•*Ì1Íx6sÜ\C ‹ãâ(1–Χ¼ó™‚”ì—¨UP endstream endobj 229 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 97/LastChar 115/Widths[ 56 0 54 57 0 0 0 0 27 0 0 47 0 0 0 0 0 55 42] /Subtype/Type3>> endobj 656 0 obj <> endobj 224 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 46/LastChar 119/Widths[ 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46 42 0 0 42 28 42 46 28 0 42 23 74 51 46 46 0 38 37 30 49 0 60] /Subtype/Type3>> endobj 657 0 obj <> endobj 211 0 obj <>/FontMatrix[1 0 0 -1 0 0]/FontBBox[0 0 1000 1000]/FirstChar 49/LastChar 49/Widths[ 33] /Subtype/Type3>> endobj 658 0 obj <> endobj 659 0 obj <>stream 2010-07-15T23:19:38+02:00 2010-07-15T23:19:38+02:00 dvips(k) 5.86 Copyright 1999 Radical Eye Software silex.dvi endstream endobj 2 0 obj <>endobj xref 0 660 0000000000 65535 f 0000054644 00000 n 0000202519 00000 n 0000054418 00000 n 0000050746 00000 n 0000000015 00000 n 0000000446 00000 n 0000054710 00000 n 0000070108 00000 n 0000107415 00000 n 0000142859 00000 n 0000182317 00000 n 0000107105 00000 n 0000195110 00000 n 0000157266 00000 n 0000191734 00000 n 0000069816 00000 n 0000118015 00000 n 0000157025 00000 n 0000069563 00000 n 0000117761 00000 n 0000156815 00000 n 0000069299 00000 n 0000117551 00000 n 0000156579 00000 n 0000069065 00000 n 0000117281 00000 n 0000156352 00000 n 0000068809 00000 n 0000117046 00000 n 0000156119 00000 n 0000068553 00000 n 0000106843 00000 n 0000155884 00000 n 0000068325 00000 n 0000106604 00000 n 0000155625 00000 n 0000068106 00000 n 0000106439 00000 n 0000155365 00000 n 0000067813 00000 n 0000106145 00000 n 0000155120 00000 n 0000067536 00000 n 0000188650 00000 n 0000105899 00000 n 0000154838 00000 n 0000067313 00000 n 0000105626 00000 n 0000054751 00000 n 0000054781 00000 n 0000050914 00000 n 0000000465 00000 n 0000001851 00000 n 0000182029 00000 n 0000097166 00000 n 0000137155 00000 n 0000181696 00000 n 0000188090 00000 n 0000096900 00000 n 0000136895 00000 n 0000181481 00000 n 0000096665 00000 n 0000136644 00000 n 0000181209 00000 n 0000096395 00000 n 0000136414 00000 n 0000174479 00000 n 0000096095 00000 n 0000136176 00000 n 0000174240 00000 n 0000095844 00000 n 0000135924 00000 n 0000174024 00000 n 0000095591 00000 n 0000135679 00000 n 0000173741 00000 n 0000095361 00000 n 0000135388 00000 n 0000173482 00000 n 0000095074 00000 n 0000135226 00000 n 0000173230 00000 n 0000087503 00000 n 0000134948 00000 n 0000172956 00000 n 0000087223 00000 n 0000134666 00000 n 0000172705 00000 n 0000054835 00000 n 0000054865 00000 n 0000051076 00000 n 0000001872 00000 n 0000003824 00000 n 0000123602 00000 n 0000163605 00000 n 0000186639 00000 n 0000078345 00000 n 0000116795 00000 n 0000163311 00000 n 0000078099 00000 n 0000116554 00000 n 0000163005 00000 n 0000077862 00000 n 0000116320 00000 n 0000162745 00000 n 0000077598 00000 n 0000054908 00000 n 0000054939 00000 n 0000051240 00000 n 0000003845 00000 n 0000007279 00000 n 0000134349 00000 n 0000180845 00000 n 0000094772 00000 n 0000134094 00000 n 0000180590 00000 n 0000094455 00000 n 0000133799 00000 n 0000180299 00000 n 0000094199 00000 n 0000133534 00000 n 0000179992 00000 n 0000093903 00000 n 0000133247 00000 n 0000179718 00000 n 0000093690 00000 n 0000132974 00000 n 0000172430 00000 n 0000093437 00000 n 0000132731 00000 n 0000172171 00000 n 0000185050 00000 n 0000093157 00000 n 0000132480 00000 n 0000171903 00000 n 0000092905 00000 n 0000132242 00000 n 0000171652 00000 n 0000092640 00000 n 0000131960 00000 n 0000171407 00000 n 0000092420 00000 n 0000131673 00000 n 0000182874 00000 n 0000171187 00000 n 0000086985 00000 n 0000131452 00000 n 0000170893 00000 n 0000086785 00000 n 0000131223 00000 n 0000170630 00000 n 0000086518 00000 n 0000130982 00000 n 0000170354 00000 n 0000086225 00000 n 0000130717 00000 n 0000170123 00000 n 0000085978 00000 n 0000130428 00000 n 0000169837 00000 n 0000085733 00000 n 0000126539 00000 n 0000169578 00000 n 0000085486 00000 n 0000126274 00000 n 0000169368 00000 n 0000085315 00000 n 0000126017 00000 n 0000169136 00000 n 0000085019 00000 n 0000125783 00000 n 0000168891 00000 n 0000084772 00000 n 0000125582 00000 n 0000168690 00000 n 0000084555 00000 n 0000125332 00000 n 0000165977 00000 n 0000084247 00000 n 0000125118 00000 n 0000054983 00000 n 0000055014 00000 n 0000051406 00000 n 0000007301 00000 n 0000010876 00000 n 0000077284 00000 n 0000115992 00000 n 0000154560 00000 n 0000076991 00000 n 0000115725 00000 n 0000154295 00000 n 0000067091 00000 n 0000115504 00000 n 0000154085 00000 n 0000066888 00000 n 0000115244 00000 n 0000153839 00000 n 0000066644 00000 n 0000115017 00000 n 0000153540 00000 n 0000066323 00000 n 0000114780 00000 n 0000153237 00000 n 0000066036 00000 n 0000114506 00000 n 0000152992 00000 n 0000065796 00000 n 0000105425 00000 n 0000152731 00000 n 0000065581 00000 n 0000200827 00000 n 0000105123 00000 n 0000152484 00000 n 0000065324 00000 n 0000104817 00000 n 0000152274 00000 n 0000065026 00000 n 0000104561 00000 n 0000152036 00000 n 0000064795 00000 n 0000104295 00000 n 0000151781 00000 n 0000064553 00000 n 0000200110 00000 n 0000114260 00000 n 0000162475 00000 n 0000076729 00000 n 0000114052 00000 n 0000199681 00000 n 0000151513 00000 n 0000055095 00000 n 0000055126 00000 n 0000051580 00000 n 0000010898 00000 n 0000014337 00000 n 0000092164 00000 n 0000130173 00000 n 0000179452 00000 n 0000091921 00000 n 0000129879 00000 n 0000179232 00000 n 0000091665 00000 n 0000129608 00000 n 0000168447 00000 n 0000091412 00000 n 0000129364 00000 n 0000168203 00000 n 0000091175 00000 n 0000129086 00000 n 0000167935 00000 n 0000055235 00000 n 0000055266 00000 n 0000051746 00000 n 0000014359 00000 n 0000016187 00000 n 0000123341 00000 n 0000162192 00000 n 0000076454 00000 n 0000123094 00000 n 0000161970 00000 n 0000076195 00000 n 0000122827 00000 n 0000161715 00000 n 0000075965 00000 n 0000122589 00000 n 0000161451 00000 n 0000075715 00000 n 0000122324 00000 n 0000161171 00000 n 0000075489 00000 n 0000122064 00000 n 0000160930 00000 n 0000075212 00000 n 0000113784 00000 n 0000160731 00000 n 0000074951 00000 n 0000113559 00000 n 0000055325 00000 n 0000055356 00000 n 0000051912 00000 n 0000016209 00000 n 0000019622 00000 n 0000178952 00000 n 0000090834 00000 n 0000142577 00000 n 0000178662 00000 n 0000090587 00000 n 0000128830 00000 n 0000178395 00000 n 0000090332 00000 n 0000128556 00000 n 0000178132 00000 n 0000090091 00000 n 0000128295 00000 n 0000177877 00000 n 0000089813 00000 n 0000128030 00000 n 0000177649 00000 n 0000089528 00000 n 0000127789 00000 n 0000055413 00000 n 0000055444 00000 n 0000052078 00000 n 0000019644 00000 n 0000023374 00000 n 0000081389 00000 n 0000121783 00000 n 0000055525 00000 n 0000055556 00000 n 0000052252 00000 n 0000023396 00000 n 0000025810 00000 n 0000074658 00000 n 0000113299 00000 n 0000151156 00000 n 0000074298 00000 n 0000112991 00000 n 0000150903 00000 n 0000064237 00000 n 0000112726 00000 n 0000150700 00000 n 0000064014 00000 n 0000198379 00000 n 0000112477 00000 n 0000150452 00000 n 0000063744 00000 n 0000112261 00000 n 0000150191 00000 n 0000063473 00000 n 0000197602 00000 n 0000112002 00000 n 0000149923 00000 n 0000063208 00000 n 0000111714 00000 n 0000149681 00000 n 0000062924 00000 n 0000104123 00000 n 0000149396 00000 n 0000062679 00000 n 0000103883 00000 n 0000149153 00000 n 0000062449 00000 n 0000103611 00000 n 0000148943 00000 n 0000062183 00000 n 0000103340 00000 n 0000148707 00000 n 0000055639 00000 n 0000055670 00000 n 0000052418 00000 n 0000025832 00000 n 0000028899 00000 n 0000083944 00000 n 0000124868 00000 n 0000167619 00000 n 0000083744 00000 n 0000124622 00000 n 0000167310 00000 n 0000083523 00000 n 0000055777 00000 n 0000055808 00000 n 0000052584 00000 n 0000028921 00000 n 0000031942 00000 n 0000148495 00000 n 0000074018 00000 n 0000111510 00000 n 0000148257 00000 n 0000073743 00000 n 0000111237 00000 n 0000147979 00000 n 0000073462 00000 n 0000110949 00000 n 0000147712 00000 n 0000055902 00000 n 0000055933 00000 n 0000052758 00000 n 0000031964 00000 n 0000034691 00000 n 0000103072 00000 n 0000142344 00000 n 0000177420 00000 n 0000102804 00000 n 0000056055 00000 n 0000056086 00000 n 0000052924 00000 n 0000034713 00000 n 0000038193 00000 n 0000165693 00000 n 0000083246 00000 n 0000124354 00000 n 0000165398 00000 n 0000082979 00000 n 0000124074 00000 n 0000165139 00000 n 0000081129 00000 n 0000123822 00000 n 0000056169 00000 n 0000056200 00000 n 0000053090 00000 n 0000038215 00000 n 0000040944 00000 n 0000061926 00000 n 0000110674 00000 n 0000147503 00000 n 0000056285 00000 n 0000056316 00000 n 0000053256 00000 n 0000040966 00000 n 0000043099 00000 n 0000082688 00000 n 0000127580 00000 n 0000167071 00000 n 0000082426 00000 n 0000127277 00000 n 0000197264 00000 n 0000166775 00000 n 0000082128 00000 n 0000127051 00000 n 0000166512 00000 n 0000081907 00000 n 0000126798 00000 n 0000166239 00000 n 0000081617 00000 n 0000056386 00000 n 0000056417 00000 n 0000053422 00000 n 0000043121 00000 n 0000045004 00000 n 0000160381 00000 n 0000073182 00000 n 0000196046 00000 n 0000110511 00000 n 0000195541 00000 n 0000160131 00000 n 0000193628 00000 n 0000072903 00000 n 0000110269 00000 n 0000159886 00000 n 0000072638 00000 n 0000109969 00000 n 0000147258 00000 n 0000072471 00000 n 0000109688 00000 n 0000147012 00000 n 0000072267 00000 n 0000109480 00000 n 0000146794 00000 n 0000072039 00000 n 0000109227 00000 n 0000146548 00000 n 0000190906 00000 n 0000071791 00000 n 0000108987 00000 n 0000146305 00000 n 0000071536 00000 n 0000108728 00000 n 0000146073 00000 n 0000061683 00000 n 0000108519 00000 n 0000145813 00000 n 0000190118 00000 n 0000061449 00000 n 0000108306 00000 n 0000145565 00000 n 0000061213 00000 n 0000108064 00000 n 0000145302 00000 n 0000061006 00000 n 0000107863 00000 n 0000145076 00000 n 0000060788 00000 n 0000107623 00000 n 0000144854 00000 n 0000060576 00000 n 0000102571 00000 n 0000144636 00000 n 0000060351 00000 n 0000102353 00000 n 0000144355 00000 n 0000060124 00000 n 0000102095 00000 n 0000144111 00000 n 0000059881 00000 n 0000101862 00000 n 0000143874 00000 n 0000059635 00000 n 0000101610 00000 n 0000143618 00000 n 0000059394 00000 n 0000101381 00000 n 0000142123 00000 n 0000059148 00000 n 0000101152 00000 n 0000141868 00000 n 0000058905 00000 n 0000100937 00000 n 0000141649 00000 n 0000058693 00000 n 0000100694 00000 n 0000141424 00000 n 0000058437 00000 n 0000100462 00000 n 0000141174 00000 n 0000058191 00000 n 0000100183 00000 n 0000140943 00000 n 0000177180 00000 n 0000099930 00000 n 0000140646 00000 n 0000176928 00000 n 0000099677 00000 n 0000140411 00000 n 0000176695 00000 n 0000099416 00000 n 0000140157 00000 n 0000176450 00000 n 0000099090 00000 n 0000139882 00000 n 0000176217 00000 n 0000098853 00000 n 0000139625 00000 n 0000175980 00000 n 0000089275 00000 n 0000139360 00000 n 0000175743 00000 n 0000089019 00000 n 0000139117 00000 n 0000175488 00000 n 0000088761 00000 n 0000138852 00000 n 0000175234 00000 n 0000088519 00000 n 0000056500 00000 n 0000056531 00000 n 0000053588 00000 n 0000045026 00000 n 0000047683 00000 n 0000164877 00000 n 0000080887 00000 n 0000121570 00000 n 0000164551 00000 n 0000080605 00000 n 0000121292 00000 n 0000164344 00000 n 0000080377 00000 n 0000120989 00000 n 0000164082 00000 n 0000080138 00000 n 0000120769 00000 n 0000163836 00000 n 0000079887 00000 n 0000187752 00000 n 0000120521 00000 n 0000159639 00000 n 0000079643 00000 n 0000120322 00000 n 0000159408 00000 n 0000079392 00000 n 0000120078 00000 n 0000159185 00000 n 0000079167 00000 n 0000119801 00000 n 0000158963 00000 n 0000078931 00000 n 0000119572 00000 n 0000158738 00000 n 0000078679 00000 n 0000119359 00000 n 0000158474 00000 n 0000071290 00000 n 0000119099 00000 n 0000158237 00000 n 0000071012 00000 n 0000118851 00000 n 0000157967 00000 n 0000070770 00000 n 0000118598 00000 n 0000157803 00000 n 0000070502 00000 n 0000118265 00000 n 0000157524 00000 n 0000056651 00000 n 0000056682 00000 n 0000053754 00000 n 0000047705 00000 n 0000048526 00000 n 0000088272 00000 n 0000138626 00000 n 0000174979 00000 n 0000088041 00000 n 0000138319 00000 n 0000174695 00000 n 0000087773 00000 n 0000138062 00000 n 0000056778 00000 n 0000056809 00000 n 0000053920 00000 n 0000048547 00000 n 0000048727 00000 n 0000056892 00000 n 0000056923 00000 n 0000054086 00000 n 0000048748 00000 n 0000050523 00000 n 0000098593 00000 n 0000143317 00000 n 0000057839 00000 n 0000098310 00000 n 0000143110 00000 n 0000186144 00000 n 0000057673 00000 n 0000098000 00000 n 0000137739 00000 n 0000057441 00000 n 0000097739 00000 n 0000137454 00000 n 0000184480 00000 n 0000057158 00000 n 0000097435 00000 n 0000056956 00000 n 0000056987 00000 n 0000054252 00000 n 0000050545 00000 n 0000050725 00000 n 0000057094 00000 n 0000057125 00000 n 0000182625 00000 n 0000184150 00000 n 0000184719 00000 n 0000184818 00000 n 0000185920 00000 n 0000186322 00000 n 0000186407 00000 n 0000187524 00000 n 0000187991 00000 n 0000188321 00000 n 0000188417 00000 n 0000189809 00000 n 0000190555 00000 n 0000190674 00000 n 0000191344 00000 n 0000191493 00000 n 0000193055 00000 n 0000193396 00000 n 0000194814 00000 n 0000195430 00000 n 0000195719 00000 n 0000195804 00000 n 0000196997 00000 n 0000197503 00000 n 0000198022 00000 n 0000198147 00000 n 0000199226 00000 n 0000199449 00000 n 0000199992 00000 n 0000200669 00000 n 0000201005 00000 n 0000201090 00000 n trailer << /Size 660 /Root 1 0 R /Info 2 0 R /ID [] >> startxref 202722 %%EOF denemo-2.2.0/actions/nwc2denemo/PaxHeaders.19168/silex.tar.gz0000644000000000000000000000013213135434036020505 xustar0030 mtime=1500919838.043315139 30 atime=1500919925.296648472 30 ctime=1500919913.013315139 denemo-2.2.0/actions/nwc2denemo/silex.tar.gz0000644000175000017500000042463013135434036022367 0ustar00jjbenhamjjbenham00000000000000‹€©‘:silex.tarì;isÛHvó¹E—3^K6Å•,ï¸ÖÚ¬©ñ1£ŠÇV$¹\³–ƒ@“ìˆfЀhŽÌÿžwt7 $+©šª¤²ü áèãõ»/X«/þîýÉ'»OwwåwRî?ÝßÇÿòé>Ýûß.¨%Á ä™[„o~zû^þ¤ ì-ëq®SùF§ª°J$°/>±3•ÉñІ¿ÆÝOÝîòµUéhRix_„<n·Ú@šRn%\J³ÀIÛåJæIÕÌn¸9W&uAkÎÌŽ1ƒÕà`Kçr¬dmÕ¤ÎFÊGg?¿{&ßþ*?žœ¾=ûõFV3oÕ•âu4Gòp˜2)ª EüòêäÅÏ0þðÇ£7Gg¿"دÎÞ¾:=•¯ßÈCy|xrvôâý›ÃyüþäøÝé«¡”§ RâftÊ ¬47€µLU‰Î-õW žòLÎ’+DL•¾€âÊ»Ð(7Å”#¼H=‘ s¹,50De6©'ê @Òá@þå¯òL!ËÊãÈ÷§‡C1±–NfºRvF*âO‘ ¡j°rkQ꨺Ý4«Œ‰.-ð`¦=Ôø!Ëbˆ«Ž*ñmuÓ#2ÿÔÿÔÿKuD$Þ3•dº˜õ ¬6õ†Y|™ê³Ë#z#R¾¾¸Òj9[™.·Ý?\ ~oaÜ@¾U_àœø;.Õ\½¡2‹Ž„zaôÛø ”‹˜”Ÿ?ÓÕƒ<Æ"³D*xx‹ð€DXN‰,àÿ¿@‚ ¥S TR$ùÊkOJ3—‰€Y;¹¾á]¨Žš:ÝŽGW›X{Õ €Ø=„ÊÁäZ< Ø{öŒÖ>tàænúÂÈ隇òtÇüâ†#0pc.qLÒ 7LQsZž…Sæ*)€ø·Íbv®`MûÙ,‘G=6éˆ Ï¸´8÷ K9þä? óì¿9|s²µ· f¨DÜ»MÉÁ] ‡“/L‘ªh_Ü-5ó9ѾT9Á…𼦗…Yæ*›'àY™å Ñ·È=[=“ÆÑ¡ÅíÄå 3êŽïáo‹ÉéÊ1:³9r¹sÈÃ* 1WhdË ~ 8®sˆ‘œzÀ)€ñ:GO›5‰HT¨da Ãÿcyé7û2Gà ævvªLÉüpm¢J´ƒ7•1Cf:Køó*s“ëlä%h+ÒÜX§ÁŒ0ÄxxXòÝX¢.ÑpázIŠ T¢±AµZ©B€ArŒ‡sA㢉záAR´r©¦5bY}Y”ÊZZ(3}š“U6!¼h‘L H5މƒ™+¯‚&Ÿ×y¥QQcŒ[á_ÐA™Ç‘¼xl—j*ôÉ­9„¼f‰|– “n’\’EÓ¥ä8’´¡–"EÀMŠ0¿t`V<Ì’32ÃÄ‹)«šY•ž>0†£­³hd'„f 0Ñ)û´ã7ÜKtFÒR%è#d+ˆeq|¾Úà9`©+ ÊÏÇ2i5Æ- oõ„µ—ÛZáÁã1s­ZŒ(¶@¬r9sþêX†bKà90E_ ø†ÀRª,áΤi½q*ÚêR©…¬Ê$½tœ-{l±™:x»uE=óð.×à=5y='ó¾Ù˜“Y®µ‘]#¢'…»CÖÄý1Tï¥Hä¤.RçÑC, Vÿݳ̺Q02µ |ÀލÁd TÐap<Ôb U$2žÈ$©Hi¿>‹¿x­ $6 *½Ä§&#%Æ œ+m6Z¢ê_…2d{'̘\pä˜$Ó›Lè§Oeu d%l™ ×€…€sƒÍn]§ÒÄËd¹Œ´ªxGü΢×(ÌZâu’ꜵ#N`–™¬SñhKtVÖKü⥚Ų¹·và/”mÑ‘a0jà'g6zÎXeœZqìðï µkøÙ³H)÷9›æÐÁàT " ¹i×Ïû~R¶ ãé7ŒÍI¤oŽ o~õ|ÀV¸ÿ0CçÙ.@ï6Šè°H×KJ£vY’ûL x£lR\Ï“´4 UàwhÖA8bM†( *k´|ôÂñ3,%h)%«0]W5Þ<)/1øÍÔõýû~ûŸ8 Å»Fµ^A[ÇÀØõ‹ÊÈ2Ë),L,’z´f®úláP°­„ÃfÝ=€!3D™¢^CJ6d9ÓéL4ÚBBЍ`‰yR¥³6Vœd®¬5©¦óÓB¨ E³|d?mƒÔUT‰óÐiE^âß@tò¿ÐÌ‚nÁýáiÁ•8ѶÇVVå“^g&õ{ƒ ¶4AÝødgïý“©ö¨¹S` ĉr×Ä"pJð_Àw«Þ§pÖ*!s\?™|É«$×H´r°;ùcyRLkLú €Ä”p!-Ù’¹ Õeü9$Æàhû@ÂK6N‚ì!Îåx5é¡5•zt¦Väã )¸ —P˜ŽÀzèó“ÀE,ÑŽAìDâáÃ, ®5$ñMa„å‰AÛHçÿB¢À{ß¿/ ‡þÄ”gÍÐR¢>r‹itcZŒ±¡0V9 ¶fv¦"X;,0Vsdu²)`qx6®5µW„!tøuÖ†xèa។ê?kd€¹¶ÈvQÎDDGiâ#þõþ—^5Ø(vzß¾Û”{Š™%‚.nÛŒiÄ›Œ[PÞ¿+XÈÙv±I2䩿ž5„­,¯KeÔI«Úê;Ò&ìGaènATh IÂH¿E›¡Ã‘ ûe~=V½²Å¦ŠAÐib¨…ÛÕ|lrÖ!"M¬ ž(Cñ*tµ mÊÖkônX®Î%ã4[ß-rÿ¾xWfi±ÔÑç¤Ôb=ÖC¯A[ëu5\3»ÑjÑ3ÿè8AÑ*Âý!Í·GTM|è胋ÇF„n\Ïð|ÃS ÔÅfzÐÆ'±×@>ׂÁ[»Ü?FlÎx’ö)öͼçéfñ:›ÒâC攳Øz‚rSÒ¶C^M!Ó\eMJ¡bµlX >®çxþ`ôãåOQ=R¼n¨<|Zk;CU»Tªm‘ò^\]R,匮gkNà°²WKÂÚÀÕÅÆôÒº(?‹jG‡a('¤x —i!ï/ÚXwÎ{æáx<ÑJ.y%“ÊUˆ<Ö91ÊŒ P—’ìŸ9",°òg¼3ÌP7ÿ’”ž(¬M,VdV€ô¥d\¹êK%Þ ø¢4¼#<`úÁ c•É1²¦‹;*[ÐàˆL_bó0¾Eê²Àìv¥P1ö­PàT—†ëb^rŒD7s4¤¤àAhø0_ú'ð;‚ÄÖ ªã,Õ(ÿĪRsï:1}ãh`6™hݸ2}q'É2Ÿ¬‘¢”¥[¹ Þýç?Ž‹óÄÅÞäµÒÕ9zµt5ºï…«áêk¸z®…«‡a™­ðl;\} W߇+ÿу/VE#lèPÉaÈ#g7Hp!5ëã%…æegáóbÍ÷Þ«m‹TïË@¸ ºÞ9û!cDaý ºŽÏ0ßJ:;‰hƬ‰n rWª<ðùfd¶Â;Ô¾ÂIÏ Nœ¨Š#œ)æŽ0´-}ÖsöÖ" ¸Ä}hd8¥/Z“ä–«Xj1@>£¥qúÎßý¨mϘAuù2–Ïè4ÛùÂAÓ ÕòÌÒ²¹…ež¬pÒð¶û’Â/+©1ê¶(Ô”êW¡aðQârßTE.ÃÂ7×Ðæ ¬ÎÅuÙª@ä[cŠÆS§×‰Mµ^3yLþæt©šºs|±¢K0 œttÐA¦gÃõíº¬ÙO5äÑìù°AwÖðCjÂ[G^:AËAǼ0Œ°z7U怢ðô´ÂÐ&Á "â–G„´oÚÃM3ÙìßDÆBÏ“)²x@l†k•” k£ .*ZüÏ€C™Ë¥)/-¥6'H{ œÀž%9Y2É2N>{ɦÖcðÁ«š¤·•½q¹aW:Ùü®9·Ç•­ çÞ¤FÏŠr󘓮([a*¼=áKblÛˆ½‚iÔY®FÏs’‘ÊÐlUü”Èp6ÂÂ* SM&xjäl8!æ%ǘtNz³?ÐQ°/î| æ˜~ ‡¡‰r¾FuÖk‚Eh0ºm­w.ÝÔWº¥Ÿ7K©ëÒåLo‰D g‰ï벉ñ…!ÿ–ƒÁÚð0 …ª ÂýÛµ#G½Ðÿßâð ä¥Ý l"Í8ît#~*M½À÷·áé8šçvÝ’ÛQ§^SF”N[’E]ß“¹’¬[ËÅa¢KŠcPY}3‚+×_݆Î/÷禊aËŽ{ÍÉwVDn?¿¿s¢µGŒ;ÞæÝzTMKz?\ôí0y˜Ý3UˆÄ ïo:Ås{ i@fo¨µžåþ–èX^aQºtVµò3Œ×f~ªÛ±ŽGŽ®LÝ •.ÑF=gßÂ`œYsñÀUí©\L®ð¸¸ØØm9oa»üb?»w¤~\D¼ø–gÿ àƒBuƒîî€ÁFx¹Ä²ÄH ÖpE‡ÃÎйoéê– }ñùs3ùÁƒ›$º$ªÄütÜñ¦çTZfèEõÛ:´o.<«9ëgûF‰)uÒI  dçß­ÚjŒÁ5qŸrÄÜI(8x)¶{z¨HßdA½/­e‚dcçxŒ¢o"¹’·NkïG˜Ì2þÍoÍ‚ÑÇÉ•Ñ"arêû ­Ü ‘¾ØÛÿ`¬Ò¤v™|*²AÔ^WxÐ}–ã¢Þ—~l]×ÜȆÅè†Ê¾? M@èc ­P˜h€ >½Ì1ábvoÅà ã/)ÐËl"ÓV'M‡ÛB5Ð?ÉuZ‰¦¦ÛÓg|ŸŽHm¹3n{öo×ÿflÞÈìQ« ʰ‰WïÁ3 îçöýÎåŠS©”¶¥šKFIö-¯bêi©ÝìähÃç}JïMAþ!ËY,ð~#ÁXþ´Ñ¢±Û*ЊŠ¯•¥ªåq^[p1“R2N;‹sÇ„r“æ‹`”Ž›»ηù†ºZHߠﻃ¨±£3èo{õîõßÿÞ ¥ÚÓæ ““w'0¬]p EÂÏŸ#Î…·$^v½Ø¤ŠŸ(gÂ5ÛQòÜ)!jåv]n–;ç]6ÌkJÊFÇ]ËXKç¢XÜSìWoRÙÄŽKå¹èw÷¼“Hâ‰~¯së?ÇrÇÞâÿ}rkõ[¢ï}‚8òŽ ]cãë'AO0¾Œë"Û,¦&Íæüí:«Á ä+Aûø3ê£ïÄŽÎ \Iß!ç²f¼ ŒWÔ¨}SzŽ}¬°€§M‹FýýUz*S"xX§äº0¯U¹Nú$8ÕqÎ¥­ü÷; DbTc"ö…(Ašä]»uQÓ¼S;no¼é¨øáÎ¥lœ«WsV×\„»JÛ­+œApñ‡7‰¸$UÕÃu"Ê@»]6À’íQ€â×û$•Ã)6ÂɤýdtÖæÓMÒ ‘ü¢Éh‘!Ò©/€”Dÿ9Ò/.ø„ß Ô?Ľ©½JQq1KM¥ý<ËÙRgj¨¹—ZIJ½UŸ² 4LðÞ8÷Ë^uҔȄ"Z†3ªJ ¾Ó7ÚÓŠWœ}ëíÝi•½ohßéVÀ‹ÐzCw`ƒ»ŸãLV4‡Ûz÷̱1Æ^䨤ïÂQiô±ŽûìÅè‚éã”;5ðb[.ú%®)“ûÂgfY´·"•¸ÏlQT±dq>ƒv= ¡%²šº~ø‹G’,P‡ø›©\p9ˆ¿Ñµ{;Zç&nb=£’ ˤÌ¿lHbµTCqC?îîüõB¸œ)?Iv~?ÜùÇ…÷ï ±ó|Ä­‚£õ#|»…EfùÀçÃV+¬lû=YÌøá:4Ŭ…¼ÛÖhì̺µûù°¹þ¨^]|Üyt½îìÁpö­èŠnÜAÕíÁ$7IÕ}êŽ)€‚­M(Íø ôYo‡MŽK3Nðë­ÄsÌZ2“aò6O¦‡[-ßךÚpP®Iç߃Mgµx¹Äpþtú±Êóýíx£èƒ¤à2݉Š4ÍàPþ‹|·®¹Dï>x'ç»» 7ƒñÖ}-O°èj-¶ÎŸnße¢û<ØÍ÷nm?ú ‘øúãÅð¹¯pîü™Äósjv@î ññÓyqÑÝ·Òv§ôÕ7ÝÛÐÃàŽ®Y°Fë¯ÿ±ÝºûwûaàË®‚6ÑX}þxñ±Ùül¿kÊ?âo8Á¿„SÈÀìéV¥·G×GkS4ÇhbàêO h°+Ý yžnƒˆ{ᡇ-/ìîœÑíºc¿S|ÿénÓA0:îáZ8›Þ&’2“íÎÜ—$KÿÅÞŸ÷Éq]W¢¨ÿåùÙòu °0Ä‘”;ÆnþžL鑲­~¾º¿. dµ (¸ª@ŠF㻿½ÖÚ'†Ì,¤¥¶nß ²ª2##"OœaŸ=¬½öåB8±Ò xé'ºËËïs>Êž^'‹ÍÙb›\±7d•.ö1'ÇþÝäõ®uÑͳŸL"°~ÉA¹Ç;q¯çÝÍËçT@ÜC™û„0Éíù¾7×WóŠ[á2_ÁÅäžHéÕs*ŽR×Y0žÀ"˜â&äŸakQvÍèÉ'Luñ{eÌ+þê±Î|Ÿ[1UóHZ‡oï¾É,œ_.ŠÛøíÙÕ›³õZšqÒÑ’ÿþ{ÆW_½¹Xúúâî|õöÍ«ƒİ.o™ò´¾!r7W”ž»L¶?\¾~-|¢›©sd$]ÀÇÍæÙ*Ðöõýþj{æF|ÑdcBéÁÑ_o[¶Å•žBP»çÖ±àê_Ìåhþ-X~´Õm¬°LóT¾ÅÁAu7ßÇõ€»åóµ=¿MÜvtÏ à€?åf 8DÂ~v/.¾3U poÏn.圳ÏÎÏ/˜À~á—àOÊGRw~N¶žX¦›è>[&Мآ 4;ÓâZ Ú¹¼åæ²\­ ´Î‰sè]DãÓZ¾]%´áqW!7\åvíj†S݈}°Í Ø&«ÂoÁU3òo/¼‰–{>|‡!8»ý܃G7s Ñ[ß¿–á°Æ©‡Ã<ͳ¢¾gæ^r”:êy¦¦s¶ÕØÜº+ ‡Oá#ãR—j^ér.-“Å{jî“[±›Ü‰Ø׬¡ÑZ r…¸¾£Žé”¯¬ën¾&9 @}ëÙ3Ïð5ØÑ»X‰,®À™ ñ.† · ;g(ð¯ îQ~ˆ;ØZgÏ·¨Û;Â*׺@Ñ%,>ç¶X¨6Á‚cßÉÎ"°xƒ:¡»¹ù<ëŒYmÏ@04Ãv/_E+I¦ûÚõòÁý1в¿ûúš17k´MÁ.èawoLÔä˜)†ùIì‹ ì¡íavõË×wòî<¿8Z¾äS|uG@â {ðÛÕ4⎰]^öú+úï®’ŸIqNJþGï’ΰüÚÔcÛÌ..žÇd[ 2ßÜÍ2è"Þ÷ïÉSöb-ÃþûíÅÅËÛŸâ¯p³Ë»MŠÍA sQ8Ÿ¼“>\Ý+8‘ÃåíêsÞϧú¬H"µ]0@‚/«4¸p3ùþæJ[婱L:› _›@½~sÇÄyß•éÎá§Ü¢3]pU´äLäb·gß»Ïÿè¡ÃñCb¥®×pˆGÊð¡º#‡ðIÓjÕÁ¾Ó̓¯çF^ÖCQº݇b3Ž š@>覻$F%¿¹¹¸ËDƒÔ¢?LÜs¶Þе‡$'üMº?\JÂFb îÂw¿µDzÑ5wDÀ«cng‹éyxod/zrŒœ†!Þ<÷´]9·¥§Ü†•'eÉ]R׬òî´˜£ƒYÛòöÛ¬[!ùÕÿ€ ö¤„äá»÷ßÔ}ç¼m8xB³Æ¿¿]ˆr^ÚêYÅ—/ÕþæCžúnAš¾߸+s&‘cKTEÂz<.¯isâüÍÚ$ˆÜ„'9|†~ð$QÕã÷ƒX#¯]IYφ³¯MäÇ ðù•IOôÄ0uó’nU.Aùbr:'‘™IW—ç—q÷Ɇ'x.”7·J@[§Êé¡£ž.Ä3õô'0ÈìKV!0¾úöòæú•¸¶fÓ¢r=rÝéѬ5=òmð‘KûG³œ´Høxh÷ËCÉ9‹Ô*>Åâ¸}x”êvÂ¥h>š­Å&á|2­ æ ¯‚Î3øøø ,XAy ¦ŠÎsa•§kïÏLœ'Ä*±ÄÆvÂ@Üþ!ªhX¶Ø©²0pb;?9X‚s¡ ÿâò9x XÏ!²£ ³$‚Sx¹#àçkÓ‡cÃÄGdŽq_˜…TìŽCÐ󭇿»pÖšL÷dyEŸÅy€Oÿ÷{è­zu­„ÙA×sÑÑÞq+HéÛ~}wûöÝ»wrЏž©¾B¯„e‡XCîg“Nla2›í‘ÙaÃ8¤‰ ÏíõÕ·žÀ2w‰ä*ü÷ ›Òwcñ£'^iÖ¬Çû0N¡òêbžNË>zø¤ ]9MsóåÑHxÐñT’<ÌëÎ «¯üÙ}ëjöw×ï¶Oë:mˆ"s„}E'»=ùõíi¿± #0Pw ñ®›ž[zöý=6÷VØ|Õa’ø¥â*­8¶çî‘AÕ|ÆJûž7%¶ýfî9Nw«N¸û˜Ùn¡¯¿yéú”@a[à¹+ÀôñYTôd¬"îÐ.3½^tAƒ­–°xÏžž•´ ‚³ìŽ–§5qÿ'HÙÌwoœ«ön†¬ÜDJ3[wç=>‚ÃÑ~}Ä çícOú1¿Â ¶OâE*â¹MQZ?bgÒüº»=pyEí0ÐÅA¶º–,wïïuW£NöûܹTXïÖ g­t½d^Q¼ƒßñP¡½Ç##öáˆÃ`jIÔ“°ƒpõÊT¸»~ ·„Ž„Å`7û sìZ`’,œþLßâ÷Ðã. ¦yp±xg|uñû™à·ìpJ[<ø6®Ç€§V½ò™ãî´ á2ÂkØ8k'<ŒëÔ°¥Ï£§èh;x–»áíÉ__ÜÜÓœ_sÉ‹À‘ÜH¿89ÑÌqj¸^ùÕÙí…“4â9~°Ã‡¨Õ¾¯GÄVqýêñå ½Æ„¤iß·NG@Üݬ’ðѰ`L‘‘rþ±›³WÓ>ÌmŒÀØÃ}tŽ7Ï$‘8øÕz¼fàÑ©ÖørìØóµÖÃŒÕ8~áú+zÿζò|Íx)ïz.Íê˜k:Æß_¾=ƒ]~}siû祙mq]Þ^þÛÅÖ’ŽQ >ðý_½‚ñ+ò·µ”ñçxu'ÞÙ͆ÄÒ;ó„ÒøÈwâ—k:üóÙ Íl2žÇO$sÝcõíþóîÿ°2!p³a£ðcÂ(Å7k•8ÞR{Ù£›Øî>‹°pù7Þ†,î¾ùtÿ}‚ˆñ(¹Ž:Î|Ô›èÒÉäiÆÊMò¿¬ò*‚°›V1 ÷´| Ý{Ÿõ¾BœãÞ(¡|¦AÙðsÃgúõU䀸»8*Úº)†ç­ûv÷Í*×W¼|6!#¿ Ü‘aþ ÷]ÁÙâA‹¨ü­h­ƒL£ùÖéºWÆy˜©*fXÑê2pƼⴟýjQ¨Í¢ôp[c }ÑIß^‚9ùìÕÅõ›ÛHf<«ËñË~N Dž‚ÙË.ï,oøÀ€X3· å òºlXÛÙC &³ùuKskÃí¡Ffáòz~šëuÅö,´h¡„V’Ðí½\±'Y q«x ŸœÞÔGÇI±áu#x‹AôÎrbÏ™%+zxoé:ôÌøfôÀ=:à3¼=Ë–.ñ³ò1óñnÅ|||^?÷£ƒ‡Ø"–׋Çá×§zã€eKd`‹ïݦÁ|ùѲ ÇD0BÐÚT¿¸›¹µ£6á’m™Ýó>ÖêÃŒ-X!~µæÚ_¥°±N·¾ŸbŒŒg¯ŸnÎ_>~Š¿5vöõÂ4ù³ix|îÑð°ŽÓüµ†kýŽg⸜~„`GaŠsØh@¦1î1ÉÕ­>]{,<` bçì°yø˜X«Þ(Õßù»µÍýû‡ï6·=¼— š'ƒL¤u<…k n”·ã#ï& ø*(¿ûÔp­()=»ÿì„Ü þÄ`À´A¯Ü—ý»•y¡µ§G zØõ?y}vk§=¹úÉòòÉíùËŸ<¼õÙ«o¯Ïg„©pÂñ¸šsœ¾4ß;ã>¸6p•rÂwÍ”x¼›,‡`'Ë~røÁùÁ¡˜‹Âh˜µŽÏ¯þ­U‡ªW[½w³ºk 4Æ×W×_]…CÞÔ¸G¿¹=Tv²)âäÌ‹ùÇaîÐO—ﻸ™ÁÛn;qØC[}qØmÇWœŠÑaõq<Ù»''!Ùß¾v1‡NÇ]!Óãa?<î£>­! nÈP9rú“QÕã/?ß~O•/Th¿Ù”æÇéµ”¿‰I3'þÇAO»|ˆ@öø­¢ˆ3O^6xãD]™dή2K8Xi»¼üÉ“'O "—>÷î‚)tÿÞVQ ïÒ-xîÐ ù-B§˜”g…F¾:Oôp/Üe„ú­¿#¬*O|¶µ]gîy· –½åîÖÇtË ñäcökzâ—Þ³eû [ïÜwß¿Ž;7¼ÛîËèøübÂöú¢9'Y0’Û6ÊŠêzÛû5¢ÞÇF7YQ×ALÕÚ¸Sî#F¦FÌÞ²¹çà€·~8=ÖRõÓíFzqs°anŸÜ™ä7¾b¾Šyà=½»^©Ï·Ñ«c™åÞ]‰5w]µx–×$67‡$1ï}Àöv‹¸ƒËZSy$ó*ŽÍ°9Cy}2€_øì۳˫3¹dûÅoèÏã8&—éÍÇ“Élß}òiÏçÇ’œ¾÷‘N`P¶éÖ+¸åË ¥Œo‚µ„!{)“Y-Uêùâ.žÝ^±€ƒjà0$èÐÂU<^ÿ…¸víÚžQ^«²;s´Þ> ŒØ£&ÀÝZ±Ü,ND(nnç¢2AˆÛè†[2z·(¶õV¹‡‡›‹yÕz›tÐy|̿˞+©îüüoØC¡ß4úe¼A ®Ø´}|ñë¡©úë×'6‡ÓVëöÒ“¸ZpÞž»'È`Ç‚[ñÔ™e@¼W6Bèm‚Òî?DŽš{vVÜ`Ÿº'éß¿¼|õÆó‹ƒ¢)3Þïl×ë>ØÝç¯_?Tüb.®NöúQð…› À?˜<ã]nijýµg;Ά㬚y±öŽ{=¢›èyÂòw™}Isˆïêz&ÇÝß¼ŠI‹WÊ9·úZpï—•âÚ[CÍ1[»ÊºH-±øóŽCe›ç;rÈlžóѪYÇγ1³ÖS{zÙ_»èªïõ ®4ZZßßb™ÌªþÿWVE½8»ý~5Ë ˜}Ì]9¬ba§ŸkªÍ”ªßù~ê·x²–œÿãת°Æ¼v ÏfP:eÚWoLÚßùªîÕ¢H©¹z”wŠÁ¥'­Î˜‹äQœ(f4s[^­=©ñXCÄ=W&ÿlÛ=_Ðα9kú¥¥£ôoC ´Ï„æÃ–#]³ñ¼¥ò«ÂÉŠ¤ð%Üms"ªbÙœ.WyPˆÖ3¼ðæ5‘àKÔãs¤ ´ulÛÝj~²¹Ûn.‚dRdæ6Uª—Ýâ[´”Dä7Xk§eèo×nÙvû`2wJ´°ùúìU4ˆ ”—çÝöÐåÀ‡ŒJE=7ù©tAÐ…oAí-á³©ð¸­æ¨gœ x5€¯. zåñÛëÝaCSæv|Ζ—ž2!vd3_ªXJK[Ö¡ò9€£gÂ4”«aÝ‚¥׺1OÃQÒ¦¨;"óS¼(DÕñÉ»uýJZSô¤»Ã#Ùæ]¾ôÿóHæoüÏÏéŸ}¹i d›w?®5?ó êü÷Ôé?Óçžÿ?NøŸ§.ùŸ«oi_¥ORÿ›ù_eZ·¯²'þ\í«/ñ';pðÆ{þvÓB~w2 ¿`T7s“QÀƒJ–±r»ÏÉ `v+¯î²ûÏñ¬ãö”6¿ÞGµo?:Üjß³¾WØ8ýÃ…¨æ{¸L â2[xMå?(œ}Ÿ¼>òâÏ÷gÝ«€º›÷¸iüÌ{,üð19¯ÿ¤—…týƒ’Ó„=?8ì‚‚ÀK¨Åý+ ×ÅÄŽMé±%ô÷}Ù&ì³î£'b•Ã9ž®âeÌþ!ôí•G±ãún>‡¨o–šY‡¾’Õ‰óá0¸Gÿ'ç ïœëýOøþ‡ÅxâÄ¿ÏÚÁÅz¿6»Yn?T^ôÙÕ•‹‰¼>óï_ëDîëvS<ä½!šm4;èãϾ<$Âú¾/²ÄÏî /ñÓûbLúôD\iþìdÔ‰íT”dÑÕWTCkúHÞ JÖàF‘ͱËÛÃUv·øøã9hÙÕÅÛug/+åêú치µÖ<þm¾¸rW®|_M³*÷)uÓuQ3¬–ã/ sa/º$@½/̰@E¶ß@y°xßm¶Œ+ßË$¾g»Xnó^Ǿo ç1ië÷&O¿f oÅŠ›/%Ò`O¥Cƒ™Ý?roÍÊÈrD9–wòlFÙúüòöüÍííJÏßÍa= ßÕKWFRÞ5o`L ^é? źxGÜJÜ%uímýñµž½"”Æ¨ÞÆ´—UÆõ*+`ñ ñ˜¼má0ÞÇ/8Ü/ÞzøÜ¨~xt¢g-}Ì©žjø1§Bò}Ô‰’'O=­Þþêh¯ùkL®óh 8‚fÓìË/WJÇ»Ss¬rù¹—‹zy•||/´Û5¸èP«H1ž ö%‚Š+ÂÌ%Œ%w,žÝ%øqÌ~X÷ˆØ^]‡˜ì¿Íxd˜îP%š ü7¦¡ß\þÛÅâÀÛh®±ñzÍÊöÁ¤¿ûÛÝp1o_ÿ\¿¾Œ;jŸ»ŸØçxñ“‡cKp‰IÉøï@xþ”wó»n/Š!·å¢í’ûìËãó}‰Ý³òN]á+ížxâŠóíƒl×ááù¾æNï^1ϦmWiâÛçš¾¸ —aX˜‚cCcS`s‡‡~ãä»|ðàâ_ÿÓD|QkÛ|µÓߣåN—ò”?¾¹£¢¸ .}ºúäÑVG|t¤Š™½z~yñÑñ¨a˜CSŸ ˆ~?Êr…¬Œ–ÆÝŒ÷¾xѦ#ÐuŠØàj£¹²bž7eîÖû+Óß³ ÐK43lÒ” ë“øŒ°Œ2¯A-TKÅÒͺÛrvüœ·øî› *n+u9íµ‰•»ïG›p‰>Äìóµ³ÿÿsq1ó£ÜƒúÛÝoõ±I¼~ô73aÖÂó½öŸÚÕ¿a{d£Æ¯^ÛªÞ'¢ ±Ý²Žgú(¯-°_ô|äˆcVY¼~äï¿ÕWHŠodù¤ˆ…’O`åÉœ]ês '“í#ÝÏß)ÍÄzlT¤ÈUAÆEÓÛºÓ£ŠwûHh‰ë9öz+Ãç ÝgL]÷Mkãñ?Üs´xŸYéŸs‘ˆ ô³MlYklÜìÀYxŒŽ”xjì<öTPé‘…ÛÌ£^¹9V[»’Oy=–zCÖºwO)ÇVõ¦}„£xÀ¼BLøübEIKVóçaóý±œTTÎW5D8»3-Âî0'<,QcG¸S¿¹{)Xª^Ða±ûé<ô?ų> ŽŽkTc§³¯‡‡ŽÝCà—ð¾í{÷Së‰û”ÉÿWJV…ž?‡799tölôí2¥Îô¬ÇÌ`1ðÒÜ¢*Û¬®Þsï–x‡•»u^ê'6œ#a²JVRç”l‰âo#ý„ß"_Nž=‹”È\1Pt®L„O/¯.゚MHú=Î$pr`÷ɤ‹Ó"ûÓè ”XºC[ÂÍÁv=#ÿý¿ »Àÿ)†‚7FëWr埣©qúŽŠLB ™6¾ÈáÎîè¢|sËJŸÍÎÑPÉ-¹x7ëî ‚ç£ël~yéè»KfgÊn™0D1†àU1·•Ùm¼{‹E3—ñÚVêôŠ8·g/Hys;o²”¶)<û]Þ‡õp0pSîâx? @ ³¥÷7ü|È,#ų=ö©Ñ>š9N4s0rÛT°%ïsÍUÏ·™€f>ý +´ù*¹T•bÁ¡5Wºbó|àîÆì¨ê'›þêß•\߬ ¦q ,·àŽñ×s}Ñ'Ά½‹‡ÈuÞ„;/aÕ}¿;œ?›yçdoôD"9Yyàw±üPd}‰Ïf–ïæ¶=|‡Ó—Œußú®o.¿F®q8ž]±*¬k(Û){Œá¨êúëW4eWl\Š>cáö¹¹¶ž~¹æµpïÃ,—ˆ¢™'ïÝæ%¢ünž¬Ñ)a]Wq"Ãg™Žªr·O*?VÇ>S¹øWáô%ý¶Ö›ÝÚ&³÷ÿÍ~þbIœ—RXÊBþ>jAsMìÙ˜ßFÎæE¥ýB^ÁD!s98W·òkãz_­ïG¬ÝCàƒó•¼¾¸!&bUŒf=!WqrÄYiâÉ!œæ<é嫃4~¢Ç‡¢Ú—Á3нæp¬¤±TÀ$ÿÇ#-Àm©‹¹´ÅqÁPöò‚CKžŸ³ÖõœVòæµu“á½EðNr®'º{Þ ñÄë}ÐIPVÒg"&;ή™W"á@^†yŵÁóp-"qQ³8ô­MÓ˜ü÷ÿnƒñü1 JÍæs­£E{A(qÎK _]~­6@¢œDqÃB°ÚR¶yqJ%š=Æ+A·K q†­E~ÊÚ¸‰Î‰È”(ãÁ]lЦ@ì5€œsÝ•ÿÖŒ„vPŒ)§á«Õö&}èè)°w>?ª'³áJº£!›ê^ë!:)ŽÍyÆHçnýÏÙÄ·j×»pòJYhÿ\"á7‡[ø½—¢û6´öýjENÌûüTs—>uøXeßjè÷û6ªúý¾†EAÿÍÊgrxÎzÖ®}+qR>X™Ê ¡÷Ê\|ýúÝÃpw–†NÕêF.²Y€z³6ð3èGw‘XÔ©ô|Ì›ÓK”óÝÖ4~q)Öh@Ï¿¸¸.“2ú£®rõ½ >¤$3u€[t+!w¨½R_-«åþNr졊Sàõ©Qw‡àÊÛsÊøÙ&}} û<*ûûr•¾‚ýÒÏëO»Ë]¯‰á7øÿmt´;«Æ˜07o¥ Î.أǤØ÷RaÞç”ôXjÜçmì’HèG°“i=`ŸÓ8Uúw!OïP{]OwO¾‰é àTT­$“h¯¿¤¥ß€@GvÇ¢åoî<å%fÔkZ=¿–Á%îñeô.UHßÕ—5 ¾Ò‰•ϸ t¯HLƒ²`®®@}·—`(½dS)dùÄ̸írztèaJ tóyV>GMÎuq:;póýœCq¶ûæÍ×AU´´_Ù¸Zûœ9>gÿv)\óŒÙ¹ÅýúR(«ùÐW!ÒÝšµéâÈU½0ù:iìÁµ²D¯®¿¦Â ª'3píöWüèÚ\çñ`sâ7¿Š ¸‘‚We³Vt¥/V˱³?Œ´/¯¹Oo| ðºáÁãI׳ K;h·¶ÕœLkò‰øté×Þæòvš†u¿ìN}Ë{‰–"QÒŒ@º:»ºJx̯´âTjÏÿðêú;û†¯é,8 Pù`©—9€ɖȶT¢õØÛ„¤‰Ûó·hÚ»éCå׬|³Ðâ—ÿúæb×]› ³Jn>qYTu®W^×v÷êtóï;›Ú”«Ls£c3b8j„¯åО–ìx·7Üœûâ‚¡»ë›ïw3e÷‹»×Ÿ>}j¿Ÿœß>Ád2)òĶÖwKQÉÚöôõ›¯žÞò^oæ{=Å}ž^½úú)žë±ë“»³›'_ÿÛ»‰¦§]!Æ…Ptò›¨ hXKöâSÕ8¿§ì„ Öžßù!„ÅLj%'ß#>ÜPîbÆ÷Z×÷¶v!áÿê{%áôщéq»ä…Dû‘@váë³Ë›Û˜Àæ(ôèܶ[ŸÝ8u·žJg<òNûÞÑdë žÛa¹À6Š›Ë¯ÞÜ-ŒY¸çƪük«ð½o™|¸cÎÁÛè'ŸcÚ±§µÆgþº Q˜ÞÜÀÅïÕ‚Ç\õâÜòû—àìÖX#Ù™d pãõÊ:«¦BÜœdOD»¥€ÁÁ¤›x]Òøh›] nÏËß{²¦Êµ±ÃÖŒ´X«T½CIz(è±Ôü BjÃVwš¢n#BOÔ}ãJêá7¬¼z®*Ò×Éþ<{õ‡ÝKª 7gÏ—êÞWfarhföË›@2è›;MF‚Õ¯±Ÿ¢—H³Åö,°ûÕÙ‡žãÈùnº¸¸ºàÍo†a¼¸¹~ƒ’_­ÚÒÿ£©>¯#UZdou«öE$AóÙ¸ X7wxÁ&5â³ÝWolKz ’]º(ͼܡ“Àº*1ûòìòêîúÓço¾ºøû¿¿¼¹~òæ¥MJ›ÄWOÎÏÞ4m÷ŸWh‰Ùð?±gr€ñïÔ®y4Úâõθ ô›WZ¶´x[k—;;p|vzCÂßõ½íõÿpñòúöÓðO7¬ògó|Ç âÍ›súÒ­+þúÿü¿~eúê«ÅÉwþêÿý÷gú‡â3|ºF„ÿé¿#M’*IvµÛåužãï®ÎùÞþ¥IžW•ÉŠ"ϲ:ÏìXQÔù_í’?}SŽÿ½A!‘ÝØÞw¸ïlO¿º¼}ùÞóþoöïç.ÖGöÙ6Þf²;óÏwÐúo.¿þæn÷ ¸Ë’$Ý톳W&ù빟Ú±¼oô@‘WêöúÅÝw¦}ü|Nf3qyëš&“ÌOMÿh¸ÇíÐRÍ@õy/ø/Ÿÿ£+öW»ß¼ùêêò|÷+Ó“_Ý¢¸0ò%pìö›e¯ŸÐ‚/½f­Ú}ù`?ßyqÕoMRãA3»‰ßñ ÔÊÁ»qãCj-ÏW>9ýèËÎ×¹‹Ü¹Cd»<²;€(ÿŸ?ûíýõ?þv×~þßvÿÜ~ñEûùoÿÛÏg²—Ç (]Ãg7(èsÌnðãýµ+Úî³_}öÛÿ†æOŸýöóñË/wÓ¯¿0“â7í¿ý¬ÿÇ_µ_ì~ó_üæ×_ޱ\È-ôó÷t®¶¹kæ˜rtu뽂ðxu.¹UÜãñq£ÆhïŠ\}øsд›áøˆÍÌÒ´O»zQ(-çOíÊýî·Ä8ÿEZ1³™ˆŸçÉ#3„nÅú‡v·K²4M§yR?Úýã—­m«?G'hÿç¶$ŸÞ—ž‰/‹zùÙî ÌK§Ù]ýô 2¹n>eä“€× *øè ×:Y]¾A6ïøÃ‹»{2¦~ŽRÍ¿µ‘ºš žhQ)`{·{þ&òfá«õçéñ—{ LÛ…õÿÿCº<Ÿ °-7r<½n´:î3ìè¸Ã]ñ/Ñq8{ÖÍý¨Ù 4‡åç?î¹~u¡bõ¼ÎèÍæû?æëã‚]î°ê‡øÀ<¾ê‡ÍñU?ÄŽàñ7¯ß]?6‘tñw»¿¾{x²-œíç7ôhîX:ýPco®ž¸É€©j”·õŽÿú7Fg¼¹º×"•8Я¯žPx½äÃÞâ«•òPï1œwÿi·L&Å‡š„»£/å¿ï^«œÜk¾ëC!ÕwËTÃí?y`¢ýÁ/w믵£¼“êõ|rO#Wgn?ä·Ì÷ç§øHœ_þݼÚn.^D±ÇÆ-"È.úäžàgl—M"{¥2}O~¬o{xo‡Óý}³M~vðþqìšUo>üˆGS{]G}.¯øŸ}1sßԞ畦÷ú{?™[øÉ½3û“ÍÛO~ø¤Õˆlçezï'ǓՇ+Uƒ=ï…÷t”%ó&;ßFGt#>äûo´ìÒGbIûßêN±~æÍû#îöáõsân'N8Ú‘îû®Ÿ÷}'N95{OœæËp½&Ov¨‚øóQ¥—µU!ðïç»á‚æø›Wfu½ùöâìÍJ9;Ù˜ø¿¸wMŸ–¦«ìhâlè{ý‡¶ *?¨ï›?´Ȇù˜ï‡9w¤ž/Cõë¯î<|B¸ÄÝÙÝ- 2Wòmàþøò¾&o5±íw9Ç{¯\DßöZ·;ß{­ÏØ(x..þð€‹Çôÿñîþg\LÍÛ݃¿~¯ñøëéá½Ã²54OHeÓ®–AKWB•ÂåòE ®Œ³O>æ«WxÙÔ<8ßE»ôá±>ôw»óã K›Úl,ÊÄœ·Ú‘ÎÚvñx±/}^²U”‡Íò¯Še¾?v¤ùœt¾ÕöyÏÞ³±F›{éP%ûmþúÅzgãwþ{aîÒ÷vÿV÷XnvâIO̪óÿ=ÆïàÙ×ùçÞEh@+9Xù›…ÿÁ-€\áS¼î·gñ­ó&p(V×Fôkx{×þ÷ÌÀ“ Àì 8T^Ѹ´îÃ[ÎÇñf˹ÿ{%×ßûÍNpÿ—ïîûþøéZ¥kä¤ípϹW·ó7ýHc`·»×Ø­Œÿ’#miÑÑj×|Êö’g/ìÞg2œøð„Õp8âÚÿÌsm»åë‚‹»ó÷[?ôk˃Ë?~oؘð«­a¾•õêüzÙÎÿ¢6‚¹÷ïóëƒmàd—}²;Õæ‘úzýðáñè„Rÿc%ëÿòÑ_¯çóC÷ÔïÝŠÿ™Aïë¤Ý¡½·«þSñÏ&þþ²&âQ‡ÝßÓGg-ÉÁœŽÔJ?;<ïD»7÷úíÿƒ„èG,ùy>(8OÚÑÑŠzï@}òÑãô'^ŠyXxvÿ°=øÛ]¶¶s!§Ž:ðâ•NõÏõÔøÄì—âV³ÎŽg<¿¸º;;ö­‡Ö .&ôÜwâÜ^žµ‘ćº’¼jÛ'¸5/f‹ƃÇS '­>A¼6J€ÕœXDßvô©ƒ4¼[6Ÿ.¨ kÜüF Üž¹tʦ‡Nº@'VñÞS'®¼SWoNºà!ÖKÔÏÜì²ÿ¡ãgüŸs¼ÿ73=×°æÒ s‹¬Ó Ø ÞlÅëxÀõµ;"‰£tp%ðÑk¹|p¨æŽ/ :üpí>²S¢–üøàèáE«pÌG<éaœë½Oykzï„…ŽŸn·ñ¶nÞI ¿\t<¼,F^.; ê²£ ‹_wtüä…òÉ/àýá‰+ç=?˜ßßÿÑ |ô ñƒS—® œýâ½sàØ5üÞYpä«==V Å¿¿‰÷~|ФÅûžFmfÌÿ‚F-žÆãFÍ–øG4gë>|oÓ¶¾¦÷6sã ¸§^Mà#›¸2l>ÜÈ•]òáf.ý¬î/ÐY¢æ7˜å ¨äÍÅËK•Ï^V¸{~Œü;&Þ¼¼Üý™6?yd#SÂO  þDðOì6¿¹¹`ÙÐÕM^œ¿¹B–À T:;¼§]ótîŠgÓ ­á?9€ôÆÚ+½wá¼wž„'»«³›¯·(ÞØ?:/ŽÉ«7WWφñÓ#7úƒ—/ÿÕ.l›çí~ú€pÚîÑ»œ±¹ÞƒñÖ‘Sy™È3㮞ƒ”ã£á<Ï·¨ÀÏ:êFQ? Ê^C¨}n®Ü³ß$âWÆùcÍX&~d™^ƒ­£v/š9ßä¾NˆÓË0¿þèˆíþX~UÙ?ª«¼JÛ¿cÒþ)eç¯.nw/bì÷ÓSùÿKò5¶2q[áfÕŸ}‰èæs¤%ÝÞþëj÷ýûÃûîãûׇî´" ¿ÿ^Ô¹Þs§zô{¹zô1w[öß?ï͹ߊΟ3á õ‡7¾UÍtöÕM,²å9 `OBmžK䪜Ý|%ÖQЙ\"'ìÔ‡L/>´jŸ§ìZ3æÍ¸ÿÜÖï.^½áWz‘Š@÷zã‹KáÛ‹ó»ëÚÊ~Ë„+åÁ/~1þzzöì±i½6úÉÓÓùô/¾øõÛ Nœžéô›7öfuêí=Éuº—»’~ÛËÍé×›+Nœ^ùéÖ÷¿Ýmþ8½Öégçç‡'Ÿ<½Áüød·76^¸ƒI£WzÀ2Ý?V•]z`ô^zøñúÒ•!:7|uéúãõe'`…‡kcõñé+ç|˜ÓW®—éѵsÎÌék×KÒ¯=\_{üñÑÅÔqv§ziùx}Ñ¢¼hùøô#ΦÓ8|xõ"1OË@=¼pIRú ì<¼tÉcú ˜ôK—MçdìIë‹VµON]´Þ~´â¾`•œ³»Ûµ$›¥íϵÈòOü¸dÓJ.ùqR3ּ߮>b¯I2g3ÖÃ7,i§ãÅcúä~úÀÊóçq4|²ðß¼yõ‡¨ÑÙ·\(“g,G]`:àÕ÷ã×EÖîÙ«õÕ› _Ì:Α}³r÷ò^“«Y?ÂÛé£oîïPö$¬z¾Åô¾»<ß¶tÙb›W{ʺ·7“j;Y¼3^³fˆÛ#~kŒ¾ç+e-.3cé}¢BLÑ•½îåYÍô‹ò“•Yãüž‹8Ôqÿ<î¨Ýª¥î·žçGGÔ¶‡ïïƒÑüÓ÷Á÷ßo3¸V=±óÏþ;Äã®þ°Gwyúý÷³“õÞ:qö_`Ÿ} ¿N8¼ÜÀ>._Ü÷­ÑMCñ“Ëï¶šnï›íy·yúž™²;îÃåt?íûï±e¼°9¹ÝŸÐ¼í'TÈcÅÒÏ÷¾Íîõ#dšNÔ“‚dGlÈaëü¨·C×?ü˘ÒÛÑúh±ø—:ZÇÒ÷O9f‹ÿ˺àÙ#÷þ}âÏ0–'·š¿¸Ñý“n5Çúß±ÓË¿ÑMèÙg^]ÿà­æ?dï8y{}4?à_δ[zõ£·„ÿ@ÿÁ¾ý‹Ò¼ºøcE÷_”,þØ>ÿKÕåGáÏ!b·²éß/e·«òß-h73ðXÖÒ‘A7>ø®Ö1ºí/o_ŸÝ³îÔxìñÅÍͦC¯.Î^Ì“Ùϳñ¯_ Î|¯–uï­âº¸»x<³ü:8ÁiŠjfq¾¢~ô,üˆ}ïD]>ÈþcgðÉGû_<¹W½t|(ûßeÖÞeö¾+³7ßQ÷O<ßäÔ<œð?Àý¡ÓõàðùÓKµíஆõo‘>ß|£j·³*`Sú¸_ŽemðØ2H+íÿ„È'U;1ί¹‹tIv|‰´†“—üÂÜ'Á/‰à-=½–KNé|g³Ê'tä«s–,pƨ³¯/P˪ s"‹×rý]7wü®íx¤»Û÷é@§ ë€$õûsv.GYtê‡/©õü„¨–Ew$ß—–øM+ÖßýÃWÄæ)·8¬Sþ£åÙOxnOÖMÏâ¹~ø2³ïÇÔûAc»û˜æ¿yœ=ÞE“ê(ð¹}´-°y ƒÞ,¥ßíš[õpâ<8¸ÉƒÕ=Ž hµò(x+%TŽz„µ>gŸxžÝ~¤6mÆÁÍî¾Õs¯Ð!§žÿ0Ê÷ÞÇÿ¸ØÝÛ'°åGpô£SgØòúütÇþiºöè±V‚àÁ<<µF?õ;µd>ÚÛ˜gQÿS÷ü|ן]¿ŠI”ÜE±˜‹)·¬nÄlLÓ¤@>“߃ÜçÏ<|xx§-üü=w:J­ùð£m¬ŽUu¿eží_ß\ß]Bù[‘§¥æ<ô¤Þá[O«Ô5;²À< Ÿ¬Qåä­`í_ (ºñz'Kl-£o7úÉßÎ0§¿;aM­3‡ÈY³fZÃÅ?péÏâÕb’¾Gý òVœÆéà’M¸üÔ©s¤ù È aàmdŸ|»»Yùe]ÿx™©>8îR&N øv˜ÝnÿA#{{ÏÈÞ¬«4«!^̓‡½=0äÜjŸûöcŸ{•°Yfë|­˜XßsüãÅù›;Fcª†ßd•N±:?&˜øÕ—°©ÌýCÖøí’ÿV$åwg_mÃr* ŒÊK ;ìH³|~uv»Í 8ßN2¯Û’Ròj·€Ì^^Ü|mƒrâ¹B¹Í¯Ð¸»¸¹~|qY6dc*C?Ž»F4eÒILY]óG– MY&Ë{^~à±luËOóùµ¯V6ÆüÙêϘ3õÕ)â{›ðwuíª}t©¬aæ¾dA`C Ôã7¯#^çéî|ccúzÃqòžgø|÷à S†¶ª·žæ<=êÒólÕ{7¨:x±{sУv¡z‚÷÷Ç=ÓÛ7ÇisÓ%ó­<Ï67HyƒÕÉš±Ñu¾æ”3J_»>š*y“Ýl/H™çŽï>ø [_³½]¶\“¹›Pì—»øU~ù|ÕB^ êF~©=Øú¬OÞÓö°Þ‰Ò_øE¸›rÏåÁY¬âÜã}bëpÙ<`ñÔ7ËWÌS÷äÇÆ¬ŸìÙ|w~wâüŸ­ŽÓejX_}R"™€{}uÿ¥ƒ<>}ùIIä_»ÚU–K~%J”¾ì£ô¾Y/Þùà²lW@ª‡ý n–E¹žq~ËÇþùÙ©æw¼V¯f×CQ¶jQ,ó‹û´`·§¦ØÝfŽý-[ àŒ9Ÿ÷:{}×öìîåëã©|0+­–[ên¾ÓÃÕËÕ*9üÌ~mLJšÇVb¨øalçó‹[ÏXÞWKOu“si?‡HŸàf±ilØ-î¹íØã–Ýœ½²eé­;ݶõQŒl¼/%Þ¬Ûà«Þd‚]ãßr°´ùCÖöǬÕ* |mÿò`q³ã›ÇƒéŽ–fúƒ û¬ÿtÎÃõ»ì@<“«twuJ{ÁqÜë*Ãç›!_©h3u‹nòÉZG[ެÎ;®æð >›´eë¸ëWÙÊÂs;jwØ9>)?üÞ«Ù>Æ7§Æw= –îš5Ì¥¿Ü­:œ'ð]|c›ÊÂÿ»Ç&'Й燳]¸d¾©¹–îQ8ÏBP§@hºx;_Ÿ›’cr;Þi¥ùÌW®¥A´Jxí ›Kó•ËôÞmîyRßúSD#bëU¯‚1 ‡ì>s§E|žU#6Ò|-.^Üí’‡šÅ|8tàþ³_ÈüŠWÌó›l‡ì/ñûÈ öËùLӾ篞ç>?æJ:n„}áÃXðå“Ý}géž7w…€úà£Í‚âäiñ¶~_)„?ý¥Ö÷·×O8yÏž ¶m¾òÃß%‘¶Y€AJ7ŸàÈü0¾\5ª§¹˜Ã"R1Æ÷²-á³cÏò}dK~ö÷ø>®%œ}Dir/Õ>;àY:yv¹œ}}@Ìt/ÑçŠÈ·ï»w=Ÿ}Dµtšfé¡Ü”÷x:ãW.rà^gçVD\º;}Yš±{Iç'+f”¿æåVžo>÷Áåìa‰îÎËYÞœfÃÞám޳‹s};yâ¡m·QîK‘{Œ_£cq<õf_¾ÿ–¿92l¼˜Ðžò{þôÍ«žÏóëçJÜúúâÕÅÍÅIg§òQœgpªü ¢²ÊTvLUvß<ôõó€wøïô Z1€®‚Q«¯:ÙÖ£E.ºù‘}xöæîúåÙ&YQ[[lZ;Û6L¦¸àNOæÝÒ–¸ºNÞscEB¤Ÿ¼ïâÿØû¢ÓOÞiž|ë;±‹ÿêÿýçÿn/­‡žò÷“×·žïH“¤J’Ý_ívyçø»«s¾·U–×ijG²¢È³¬®óÝ.Í«,û«]òçiÎößHÄÝ¿ùêâ}çëêêÂæíË÷ž÷³óŸ~óåãöùõW³'Iø›¿éo.lmÝ|º{þíåëÛx¸+Ÿ4Õ®¿~ý½k¸ûý~÷ÅÙsÛ®vã÷»/¯_Ü}wfÀßüÍo/ï®.>Ýi:Ù ìÐoξ¾¸ýt—eþú×7Ï/ìîíí9êüÍßtȈ»|õuwýÇOw‰ýW¥Ù®ÞãôñÕóþú%€·áo†úì7_þóÅW¸Ç§»ß}÷Ý“5ââû‹'ç×/ú9¸Äî_™õ‡Ø=íꂯwq®¯[É #jkÛŠíº×—¿´9ûA2“з·Ïý¬/¯ßÜœÛw¿½øÝîúÍø©³$IŸ$Ù“tÿiZç%ž úÄon®Ï¿¼¸ûtwwñÇó'¯o®Ãßü§ðÔ®.Ïïv¹-‰çxaÒ~Ryúù[;öÎ~žvo¿º4!·Ÿ?ýò­Ýç{ñ»·_†ÏßuOÛ·Ïß¼¶¿¿ýâ-ÓWgwöñåíÕíîÅ|JŸ?ýööòß.v¶Âêl÷òÍ•ù†Gš'¥ :teöúêÍí>yËëøÝoã}ùê-îöö_’Ýêœt÷8}÷öqºKß]¾ ï* 6t¿· ÅT;†/ûââöúêˆËoq䟽ºøzw‹Üñ;ÂêÖ§Ú•8[‚ö&;öÃÛÕ9ý$>*‰MûíhÐêÜõ½uÓxuº;{þœ_ñÛ/þ%ØssùÇÝù›››‚z÷¶Ýµ»fšÞ¾ùjwö•iþOû—î®îÞòû¶w/®!,tb@cý¼ü½i–º™ Õßã™­^_¼Õ°Ýݼ±Q³1ý{›Äoή^\\<Rs‹Ùòt9¬smþáìóë×—·oŸþµ^ì~g§8»û—”‹ê1ÿü>|þtêºIx,ùýçO_½²Ÿ?ýlÔßó»þ}þâñÝÙåÕ[|Þh–~¾³×R“ŸNׯî~‹½7·sñæÔU/^ÝÝüÑu¶ wöev¡ˆŸŸ~uf£ñ»ÝÙÍÍÙ÷áiwiWÙ*üÝÓîÍåÕóÞ¶ý·øÅw7Ö7ã+ÛÁÁÖ}Ž!»öíÓ×¶„/î^ØW¼Ëof‹ôµýúÖ¾ÚTþ³çöÖVë˜ø<ÿbqûŸì-^¦öR­E'í>þÄvâó·om2à¬ßéœáµÉîö§,{n·\0¾}mJ¿}c¤¸¡ms»§ýwo{kúÎ͘’3çë ~ôÍæ£"~ðÙߦY³[žÇÏñ§|¿¹<›?N³š§;çù7'¥ë¯¿ÔGУžj”¨R½ºx‹ž³“؃ö´4>Çäîž^>g_Þ|§?çüóõkM!ýù/ü½з·gßÚ„±Ý\ÛÒør×jB ¹Ù΄ÜÅùúËyfðaüÝÎ:9ާuÊMàôÜõßïúoøDxóiǬóÏÏο¹x~ñíåù>è¿árY–Ãã'©]xé÷»'ì–ßãÉúK=š]Tó~ÍîÂÁéËO?ïÛÀ£Öqö—÷Âi¿ÛÝ|÷îíqIôîò¥í]/Ïnÿ°³ÅöØ ëÊÿòö­}§Ý Ïùõë`¯¼«m\Òf÷òú¹uBêmx}¥1ArqþƦÝâìù·o­vc ?<=ÿæë·ööV7/–täæ[Ûºm}̯[œ„Ø[¡Ï¿µÛ¾2¹ãOgaßx‰)suûß9Ó²CkZˆäå2°}¡Ýeeßgeñîm€ÔÄCá8þÄCÚß뛹o$¬±›¦Þ€›ƒ¯ ‡_•5_fÓžGÔY_⌃¯ '¾çüêfþu“õº‡tªÍ+à½ålüPßêÊx¾¤ß=±¤uxëýˆÇ@«ì9°}ØÌz}õ/oíb;͆óÝòrg{Ì[M~À—!~€ÓlæóÁ›xðÆêhÞ[MVô…n:Çծ˖vds;(úž¿û}+E­¾û}þtxûô7>)a~mùÕ«E Ø©Xßè„W¯ÂÀ'_î(¹íÚöPžµóØi}؉\/oL”Ú׼?Q’uO?{{~îo{ûÕõë·`žå6ko„Åÿëëï^½ ñ½Ýíé—Ÿí(Ì>ßIE¢HyyýíÅÝõÓÚR°–µR¨›P#H|éàšðÄÔjÓ!žþÿÉÆã‹Š+‚TDô4º÷ó§ÖÐ`p)²›}±môÅÒæÝí7×ß½6ñƒ> ·a¾LxâÕ…Ëvž ÞµÎô»§ë7Á¬;(²ß>5õØœ}Œý:++íôÖKÙzÊÛ<‹lØåUÂGÏ«]4|çßÞÜÚ/nß\x쪬›ôI]ñk¤²ýn{P:íïÞ}ž¾~‹gµçüâHýùüi7\Ûvc_;Kó/þH1þÅ÷üóOom"|ñOO¿5Ùg‡~‡·û§wÝnQÁ\I7}þù{÷Ý77\TÿåÁpyûúêìû‡>¿øÝo†¿² ~óÏ7—°?Òê©™ÿvž¿ñ6þöêâø#Mé‘k)ãRj ųmÎ8…Öá;Wéu0˜õöíל¿¿ý‚» ýo¯R¬$*ãöÈöè²ЇoÑiËæ¾Ž»×»“7Òåºnzx£°lƒË|²w6ûýž¯.l¾ßj†=ÉË• ½V¬/—´wÑÎíM‚Æ@k‹ìS)q~€’|i‰m§ou¨‚,ˆyAm¸õ¿ÃÕóIÿðöËÝë O0™]+ü ‡ã›ó·‹Ý?àŽoç|qñöqÆ/`GáÅ×oûkÛ7ouàò­ÎøouÉÞêß½]ýÕÛ×;»ùwöò%^æ|iË^g|}Ã)_Ú„ÙéÕÍ[lwxuk¯tÑÝ[h xõGûŠ/Ãò%ß[2)n¦'PVš­ñå—.ñ-ªIå?fëüaÀrûÛ¶…—g¯aa|º›Îvç/ÏoÏS,œ´˧v(7k·4ýüEWñ§ÍW¿3½‡ºžÆ´¬íÕ”OSZŽi›%Y’†&IË>±Û¢©z\b‡ë&‡$É'o;2¦yÊwÕ sòÇó&Í“Çq£*ÉW§¤IÚdû´«§ÞŽî»¨IúÚT—É>«ñYߤ¿Ÿ¦ö%e:¼­&ݾ%Kë¤.»$­ñ:ŸzØ MŽÖ¦ÖΡI§iJ¬uvrÒ•I2&ž«¦>XØ#Ô}7ûgûz7ü¢«ÒlJÚÜn‘'é”ôû©·ÛØ…U_v]ÞN£µÍº£´/ÍÓ¦±sMs±'´?‰54­í{êÜ~¬?ñ½IѤe‚Ö ižOݰÍó,ê®ëóáYš4Á¾·Æ÷¦•õ|=ÒˆÞ'ù¯l0ìAŠýØ%ÖOöÓh¿§Éžyªídü4E›á¯õŒ½¬*ŒÖP¶­IwüåO¿OúfêÇ·GÜÖºÞwLö³Í†–]gÆ1ÆÄN¶Óì›FŒþ6yƒ¯(ì'Çß}™7öŒè‘<%Sc»¯zú)-lÐñäû4Ç(ôIÝUè»}kÞ$˜t_Yƒìɺ²›ðtI‘q`ú¢y–Úm†Ý°€æý©…ð•-„¯þxwWBj+á+[êE…€ù1¶ø6{T›hž½…Ÿ®Äø¤… l– †½?Á.´^I3›¡é>ͺg¶T@ËÎç%ºçú<_ÖgZ¤MZäüjLì´˜¦6·9`‹f?¡16ûóÚz“Ì^W|m + ³µÒÞº³Kí®?Љ2Ú³f¸aŸhÝb¨ÓÒž¯•pK}Ï5˜L\@žW¯íÖÖkCƒY½OØQYÖdµ}M•¶~0K|éÐØ¼±»`í”­­šÌ–@ek¦LLÖØîq$ïMÞ 5Öø[4 h•=fƒ^°µWÅÞڽǨ–}[_=bôêÞ&k^gý>ŸåÖ¼_¤ÐmìŠÖº/Ç40¡Ô@ Ø“[Gu6±§¦-ðÐö2t´ÚšD€ÁEÕX¶¸Q^æħݼÈqóºÆM e¬ÍÖ‹uZ™ÀN+{ihmkXtö;‰Bïšs˱hq¶™²ÃëÉTv’ãWì‹ÆdÚž7Iû¯­KìË]Îuü:û ûÌV8DiŠóû|ìvƒ±µ“š²3é9­-‘‹Fòó«žØùMo«­ºò7ðš7´ôÆ&úÀKyk8NÙ:¬K|>ZËì!暤âc[gÔ8ïä&„/:-AÇ©“|ä\EçfSÞ×û>³7ÍÝ:ܶYŒ5Ú†§°e¬umÓæG†æÚxñØño[4ö•5Œ6åå·m&غqÄÐê#ÜpäëQ²Êa ÉdKgó‰~<;¼}–½ý¶¸¯c—ÄçP p,å—¢3zþͧ0ò¤^™ø¶;²¨AhÒñ“”ïæ>+‡z? Ïö™É([ %GÏ=u˜rî1y(mÊÂË®áÄIÒACY’6°Ä‰éÊ móÍÎÄ,¬© @¦â]2AN¡³!,È;`V¦i]ôM>†g{¬K>W)‚ýº˜=ŸuV9ì¹)Ù:(ðÛ¿¨åt·ÙÂå`bΤ­Ì=oí!'n9—AŠåƒÆw%×pi˜x€ä›LO³Ù0 ¼Z°ÓðblvJ>QÆÚã+$(MOÄDÆ$7 ¬åfï¬Ï¥j}°Í+ã²´WÃ`“s5w­¿í¾þ_ª#ÖÕM9T%Oÿ,|´L½0™z{µ· 6­L šÙeÊt–B¢J‚ŸøpÖzm()VâhFëYkÃt껩íŒ&DÐmT 0·¬»0ä˜=¸á˜âù“”Ým?Ð&*žcRv¶åAp؇A2»JìR{YØ\0Ùš`´¨;ÚØá ´.ïFÛÈí‹ò1Ï[,0Î{n€Ópk4›a“™>Y÷mj[&µXì•èuˆSï(_¦k5¼ñHuÍf¿MÕ>à)µ¿”í¼¥Z/A^úgö¢Ze º¤l[Ø 6žY3ZÒÒÄ#Ú°;›Ä`[K‚Z*Ž5´„¢ M§L‚qÆÊ£(),3è’œ²%÷W(8Ú[÷%´ÕžŒÉ´NŸ$5¹©öÐtÈšÜÚÀ÷Ù/4nü%´…IoJMÇ433Kì1m5Óˆ†*`J^Mø¦±ßC=Ê:Îe<E‹½²™C{Z¨=¬»#tsJHZ,à=NÄ{û n¼·‹ ídù”C¿A§N0|¹¥d•ioö%fÈð)ìé°Ìl;Ø"Üz9á5ÿÚ“Ïä[ û$˜b…þs SK.·^;Ûã1ÑÊ:‰k"`âbHLñÌ´?R³¥î>&ì`û:HÍÔM ú$ +^7|Ã5À ‹’²ê+x62èKöU‰¾(¥ùšLË—W¸#—JgÃF„ï³FAgiéjÆž ÃÆ“A=¦  ëT]”÷º¤ÖÒI¢—èk ܆ê–†#Ûß³ýŸ¸²äý¥i¶J>@r¯È%ÆpmRáŽöÃ'ÕýWHëºmjÓ–Š"¸÷X /á‚K[)o˜øðŠÃSh[dжgZ9²f  !4è0yä ÂSAÒ{:¢EØáJº3Ñ ÒeË1Ú6Mc–Åb|O3Å7V}.­H&j ±• “邃ٱUxV@¤…ÑQ¥t­ÓÚ´={™c½“À¯f÷äªežîó¬n»4¸ “SïgÄ*¡K«wek²ç^$|¯3‹F«Ij ¶ûd;wÈŒ!3뺌rÓ 1ðINwN§†0c‚ÕN3ƒ $Eͽ¤Þ¢ßË/ÏÑç¦@!pÑÀ¥‹Fe*Yf[b;1MLE¼ìñ{ü¾‹å }XtyLòRЙcv ¥2Ý£ÆAA› ƒÌ„“Š:N®lÑœ.õòÄêÁÈp*v8=0|ƒImùÛ8ÜØXÙ5ºJa ˜H¦1:ÑÃe)M|Ýtí74>3lÁu"AóÎnÚË')F¨ÈNNrt”iÞýÐì•eÊQ23Ô—ñI~â(fX‚£‚ý3Í’”&›[F˜=$šG ú¼T踱 ìK_æë%NÁ`0¼e6‚˜b÷utñ´{ìòÐ9ð¡‘gƒ'ÛŽEéú$7%XârŽqsÁ¾–øÆÁáÀ´†7/g ª©ÆÃF3N îâ?Â0hZ0VÖÃ¥iÀ«æºöȼ{zfék¤šöÒY’ÄG7 X‹Y“‡!=}l9c艜t|s/¡W^ÍñÍêÒƒ¥Ô~ÙE‰Œ£#Ùò¬,äžå6Âe¹·%Cë0³ ^CÁ ŒTÄÜèñÃi=Cj#Ý~t~×XÕ6œEKEÑÎVzÉØ¿õMYä÷ÜEaLc™¢ÕÖ~°ä{hÄ«µ»ˆrE%±b±(7²ÓÈh ¼[Dµ(]kúçû4½]m +)ze´­c貃:´ gÛÎ%Û+4íe ¸GOm´ê`#s¯­ûaÏVš=Ùkÿ9Mב ‹\^˜ÁØÓ¡[óHYÓKÌèëeü¥0<ˆgÏÔØN'LÚÎÖù`7 “a·KJk0ô¢²%>gÖÅe?b].«ðc×Õá² §ÖÕ>Wʵ¨ˆc¥]Me4- ‘…hÍCFíˆÍ7ÉivTØêE"à1(–:ÛÊz-*X£°îÖ•Ùp¦Œ'41zî5¾º¬_Káêê1²Þ½Ï\¨5š}uX÷¾=¶0ý³:'² â4*ŰO…<ìëåF “Ð@X3úÑ"1eÎÿ+:;Ê4¸ö3¥ÕVŽ¿v«1LpçÓoÁÓi :\OëOÊÐ$YÐfQ*l(Mß¶™0Ÿ&T¢ôxP­RÆ—òʳ=~]£¯‡QPOÂÕö¶RÆ”¸•0 ׺?+d˜¢fkÔn¤½o ¦u3­¡¦>–7[X¸¾I3Ї„Zõ°ÀF ˜û†ÎÕ´ÁR)žn¯¬‡"UôzPO‰¤ý ã´9 INÅ€çÁߣã€Ør^=™hù(LИôbÒ`Öäƒ=}ßeEŸ~tÄ'࣓Ùb¦ÚÐÿž1R`²´tMdw=#>ö·†~ÙçÄòtpMB㞦K–—ñgyg ܹn$C˜ÁzôG3¶HÝb•‰I£}ƒ­`h_ÔPW¡æà¢JÑ>èeÝtPZ1\’È)ðpša­Œe¸¾Sõ™{úGtD2QÓ ¶~'†,ÕSIg#eõ×Ñ)£îИf‡íû©-ŠLBGp0!Ùè^‚d“¤ÖϺ§¼¯§` bÎX™xjbD¡£Ù  +%S92~Ôrþø+ˆŠå¸âe[ ø Yè2f05¢èmÞöE¢>àÃêå›é‚a"æÛÔ”ÌZ§ob”Q#ž}­F­S¥ôN¸aÆtÆ”hž5œô]=¶Z©@÷Y£6ݳ^‹=hW­O%Ê›FXŽ7MV='[=EYÕä’]mU²WpAâwRÔÔ J5u¥ÛìÉÑ+T†G¹£ØÜ$JHlrÊ|ÍnhK»{ Ø„†>sÆlgNâ*m$eí%tÏä¶áQrÚ¶ú½„—íÂy„´˜ø,9¹÷Ϛ̃s¼eˆ™}™^Ò¨Y®÷Tá[b…¤ÌÔ›-¥Ï«–PP›±¹WXÚÆ^ùÐK²ZÈ}i' òõÖ8àïhsøj aÓ}ž4Ö<àˆeì3…0¶ª„¶cÒèˆIªýäµt>†˜ ¼.`•òDáx@TèXœÚd1¤}œ)Õ;À Ì56”a»½õ´2ŇM!'¹Ù·öŒ•‰¶¥OÐ=;&ä¤!šG‡±ILùÖÍ()DS¹`SQìæüó7«¼Þ[ÛU.­Šž1±¬˜ž5„vØW=G#b0ú¼qà¤ÌSD@Ï›5|7‰P … <Ä!þ^óf½<ªpQž­¥e¯´¦eäAˆ,û”"Š-N¥¡Ç°LOt$cý“BcŒŸ m=ñ C˘‰Ð‘„âu [9¡¹ÐŽÑ?MîÙË! øªN„³y8)vk&ä hÝA Ó"I’Ãtl[Úº%àÛQ é‰-Uà<‚¾GDâ¨O5Œì*Úv@ Ñ ™Zµ°Žcµ÷îb»‰_"éþD Pž4!Irâq†p¸cháÄVopRÉ[–+{IŽ8"0ú*¥ÿ°¿ûèá¶'›Õ€Hv´C–Ñ?ÙˆuM—5©vvšËûøãä¡óX z„PÌ` ‰ˆ˜ØúÖ_Õ «¢‘Fêoò…Þa±ënâVĘOúöa/“ÁV ¶»aét÷NþìS“ošº#˜V|ŒÑ#NãPX£ ÊØâlƒA-—ökÔú”{pBl-b3i@?-#à^ýñDç¯QïÚàzŽ Ú«OÏ‘JàLr%ÛÛÞª²š8}`‡£”¡uÈk“Ä « SZ¦Žü…J œÉyœ¶PcÈͶ®VAþÇ®o•ò'Šú <\lÐ Óœ€×¸PCMø^g7ï±£a@’ÆHÍNqxFí'wïŽJ4’b¡P‹p¥˜ŽBš.yXªMC3ƒ)dQ%ÇŒHX)RÊÞ§E*ŒN¶¸+…b¡#Ëc‚JcE¯û=RJÁèíS:&oL\í‹À˜ S‰Àۮ˂¨iç#Ør¡@Cœè-s;èjiCñ>‘KdŒ%6ŽÀ;F¹>àž'gŠÎ×1Ú«Tƒ µ+iD`“3?µ¾TÚ‚«’.¦Ûž„æ¦Rß0܆˜šRã%_¥z¥¾ˆ^‚oøË GÄîŸÙÖ¸WœxPLxí\ó“ò2>iV+úDCb {¡NÅ lˆ: [Ū8R71¤A\>À–°ì.XPrN@èÂm?Ä\Ó¸8ë5®xhÙ(y× á"(e¾PjþyìgR^ ¶»ƒyDžóˆ#wÏL ‡Si„\ÉôQû”Gä´B¸w`QÀT ˜Z1á+—p?!úߦnŒ¿´S‘ãIp´|lúPAžzÐ{V–£!0¸ ¹øF—•ha¯£DÚËt9›ø‚Eè ®Ru9­Ð%@Ÿ€̪nkˆ¨F·Öiûµ{)ÊdeŒT´Ä¡ä Ì4dš¬ô&37|l\A˜¨ {ÉN(ØÜ@Úh§Øoü<îåC@Û±”P¿–½¶‰CÏÄ6n6ä!²ãa¨õs50õcÏÝ*× 1êøþ fo–wq«¬1£µÝrZ4ÚUC„–ËC™0Ͳ)1Ý-±õhƒÁ¨Д 3”Î,_Õ!u)5rÎŽ½ò]¥•øî•ÛìmyF è äSŠ7”2Ähøs-RH]¢ž ˜ ¨ý1–¹÷dW¬–š¬¾@˜$•&L œ¨"N¢NKÉbØAä V—ÆgÇ#cÀK“6“Ž ˜t¿“æ›×x4âÛ‰œÊ©@ÒÇ=0RZr-¶±šÊgƒ§ã`!&ÓYƒ”þÛT`FB†ÄBAC¥ (eòl#A¹ºv«./¦‚ Ú4H Œþд胈lšœà” q¦Z€“,Ù<•‘ˆ+Ù&§äØÇ¯ÔØ“ijèE ‚TŽYŸ¢VH=J`ÆŠI˜¹AsþUÅû|I¾Q*ÄX1=ÛL[zÁúPù6rV@î§À)‹)]Ài”Å2úA¤%A!Hˆ1ôD° ™@¤ Þ†V•”Á,Íéѳ¶ ²›Êý·ŽAjœAª0&‰Lih&râÐ2 ú^Æ59ÐåØR+ÓƒD–ð¤z΢ úé%Úã§ý䮆èóÆÚU$eÖä"“½là!I€µS" ¥w?ƒ°2£h«ØéúAê*²˜9…Òc÷€¤ëU%•ÝÖÄ)ÑRbVüä Ä (oŽi½0pÜÓ"DØD±ÿ /´ÐSk ¢BÉòQK„ï—Ѿj=ßÒÞÁ³Qû†'Bé®ÄüGOhÆØÊcŸ‰fGq SGe~Œ3¸•LÁ%¿˜ú¡5Y¨›éržDŘda [K¡‚‰êŠ7ŽøÌÄÿHçÏuïI@Æ@)§¾ËÈP¥žÉ§÷B‹1YzRò„÷§ 78³¡f‡éºþþD˜o8Ê$“®­2eü1͈­"”š&Tض'B”k‘èŠ63ýµÖ#Ó —3¡ è8ì%ìK¢ÓHsä&fÊU‘zJó3%=´ÛIHj“~ƒ­¼Ùó æ65ŠIy«ðhUÝï÷ÞŠ”J*q4í¤ámC<Ànhk²ßÔÄr3ƒ &@¹ #½öì.hBvä¹4Å(Ý¥4³³‘†³ÓoÔÜr&úQgúÂÔøÜe¬§ž"v~üÐ\ã+*M¹¼"cÛ†/A{ƒ7<჌™É[—u¤Ïà‚ñ…²þþã¯?îû‘^÷XØvÙï± ¯¡¦ÂúÑ2 /j*Z";*ÓÃb #2‰ £Ž)ak=ž },MMäi/—GÃìœd=øä¹ œ¯ÊŒÚ/{OT¯µ˜œ2 ŽKŸ ©6ÇÅ6f£=Á`O|2Wp!hs¶cÌ<™ÚJ)f¥<.](Ab€#F¢™ÛÇÌo…NM¾Õú’ÉS†óÚ&_ šQíÃðgjH/giÃ4v|uÙeY†àɰYËc)ɱB@uNóbŽÉÉÓLp&¸p/"}f:œZÛ0À­ž¸¬©@p³êTh_ N!¹¹Blòõ:ð\é- £sµoK¸XÙoéÌ¥Q>×H*ê+Ç‹¦eöíˆ6¢£Oâ˜8¹éVguíŽ<Ñ5)½¯ËA#˜å$$ ¿ Q7¶ä;\ì—ñr³s+`B&x¸ <3ÛÛE»Žëi7Z¬©}£XVVÊêµÏpŠe§I˜d|‚Ôg‚wÒëé˜SîÛ’ 3É3!QˈÄ!}0€¿|P¡’,šÐLëY©iL)6<ÄÝÁÓ’”J@¿¢ÒT¢èÃÔ#M…ù]Ø4 ’Ã<‚Ÿm‡úB ƒŠؼñȧr…òM&›<èr¨°ûTÚK#r¢ØÕ¥ÄÙ%ú]Çl9þMùÛZãfå$D èˆ ÉŒ0µ6L6BÚ ­¬²ajNZ Ůçàqåß,½IZ£^[ˬ<®û"¨3¸•lÏŽ wÚŽUGŒ³nçÚ0¥B¤°"{V#v‚ÏÑô\i Ìšˆ!€£ kïò$2׎ÝCÙN¶–!alÁÓ–ðSˆ‘øi÷ZÉ™ƒ–3ï{•{©Ÿ(k󚺇Ø<ìK(W/I*IKšÙ‘Kɇa09ˆ@Æ„9¡xmÍL³Z‰N÷½òì'÷¨3ŸÅV®‰f Ûæn øVò)rÜÁ"N¦ÙéZ·Ut½Âd•ë5(MáZl‹\ˆùÊ•…h‰ß º€–ÀY¶©‹˜©`,@Æ8ËZT4:9aÞ3È™©hº/ÂÛ?¡”™¨¸Ô«•E¤ÚqË-QÞP?r˜BßTç(‚Éc×{ì6†~€ŠËÞd-÷€6W:—É~Fº•ß? øÐ÷«'È'ÿÒ SÁO¦MbÔä’‹9ñü ÆY¨Ýé© žnå±8›°š/4áH%dSeðd=âfŠº¢Ûüsê±bÜA16Ù~=;_)oð OŒI2TÞÄä=WÆ,ŠKE—¹ÃŽJ±£`k¦~‘QŒöÑÛ(e25,§M dk¯±+rÎÈK›w÷<ãÜ@Âq@‚´­‰ú!¶—Ÿ3‘ðO !€3 ¶ËlH)´-s€fÝ,rìÄnÑiÐWzâõ1v;1^bC¦™_4J¦„¥g×O|P¬à:'ž)3PµúhVM1ÂÓÒ+¨Ñ2`«|ØÉ£ÃâÚ)¡ñvŠPÉÉ$`vËÎÖ®42!2(1ñØŽ‰0N¹æþ¨^ˆ mcŒÕÖ2Õ6î¿9CÇøÎ$¦wÕ”Z¥bH7¸±ÐQDo+rKf›6qñN+¸QŽ,€äýˆ[ä!YFÍ ¢Ò°6˜æÑq§M“rŠrL 0@Gÿ>­zRÄŸ*¨H";Y=iý“d"[2YGÌíÄÜÏ©öl¯¾á&™3®ˆH¥¡VzPëˆÀ1–‹s¤¤|1º*ñÇíÎÞW Ï+³Ñ6ÝÏA¿U‰—~YÔÜٲͣef›Ñ:€1Ÿr³öœO}Dì»Kqo´/…KŒ¦!ÓOÁHÑHj+k©ÑÂ+ÂJÄRƒ9 åUg"†=ÖÀx¼ mÈÙ>³ÉW2ÆÆ¤2'Ò?F-ÙÅT :z¹—D;PvÞ2IŒŠZ׊Z£9 s ³ÂÕõœÕ”¸i1çÄ3£—314•g-î&"ÚHe|º³--3àÐð ¸ÃùXÔçãêˬ‡$“¦VdKYîãçí?öší;•¯özlõ!v¼7ÿž?x´õ#w|]µßÚraeÌåy:M „zŽþH½€ùRMâü¦I=ÅìU³ÍHÊÔS,[¡ŒðjˆÏ.‘|l3o€üq­´òVôºÔÈf,Œ:èJ—uÄËæ &û¤D$èväâ¼ÑQûîÑœr¦F›G[QI²lkJâ)èµÜIYÅ”RvˆxõàÅ„‰l½ÔÇewtúÚš‰ž©=Ù¢µ8Å(NÜãobƒ¬n‘`ÕÉ¼Ó  €µ:×&+—ôÂðÊÑI•»`;#Dz3*ÍRnjAúiTwµ’mŸuÆHæ²2Ø.•F€ÁzœáTØèÚ¬afEQŽ*‡øžXë¸Rà¾Ë"}®Áß'ñæA¾%Ð)ÐÃmšþ–½âÑxhûx%¡s,Q³ “ ×¾.çE$5jÈÖ%íÊéŠql=ó2“ð"ÿÈ ÞëŒP¼Hä83Ö+'a‡#à7gkèl&-CE «Ê<®L±B}ŽšôˆŒíx¤oDZŽäOYÛFô2#{iÑ0'’h“gu‰¾5õÁ²U¸Þ1𜠢Ž]ô„µlOÈðŒigVœLÛÆÉè8g¦÷.ö½ënŽÚ¥öÜN6U• {ƒñˆÔ­½’%Ù!ÚÌ3jrœÈÅ…~ Õ*%£Ÿì=OAÃéP˜È $a9¶k%8‚Õ…K]åÈÉGn~»«èñËF Fä“ÇΑxrŽ­zˆçÉFBÕf¤ 5J¬çéL‰C³ž y,$«—Ö(rÅ¡eˆÀµ<“gÇìDð wÎWYÙˆM ‚¯`û9 4^áfïÜ8¨–&zyE§Á+4C ²BÔ‡©MËYoÊBCšNœdk^‡&ûjÕÉóæ o •ô³\€÷&è±~⻦U*sÔvQ¥$õñ¤DNY¼4IF”aÂ-ý¨-¯¢Yh]Dz=rž‹Ú`jÄ„1z’ YùDvgÅql7ˆUФol$DZ:*eŒÚ;Æè@^†®ñÐ%ž_Øâ^¸£M…0ÚŠ«ŒÜ,Z8“ n²'ïY*ä"-ö°T¤åóÇ» 4ºJæÃÄé󡺎«,§0 £g÷R“h`¡Ñ|!l[hýÍ|dçö (Lsn!ékÙ9k#K6QÒ¡„¸Ü.$s%H;ªŒVJÀ›B­Òø·´{g£¹ù†„¹-%#@íï³ R6,@¬|ǯ ÎfÓ"«•£ˆ‰[´Šz`Œ8ˆèë!´#ø‡Qþ•Žæ}4/l#ýƒý±4#i¦Œ¸Qtd Æ‘0@’nbä˜iÈ ,>e}ûTœÌ>ntƒ$-ÙU…5ß% ¤ûÈBVì1 ÜKd‡ú­£ü¬ãñ×ze’(m—€¾&aœxft ™÷Ëfwÿ2¸æÈR4”R‡Ý980`é”%•ѱWù¨9CGåa¨WÅž„…ét¤ìꉖ#<%5ö1’®/À×ò£àA*zÊ4+ëº$‘””«Æ4”VnMzõ©*¾‹Ÿé¼DÓ2ñ; áqIGæ°dª)Q܈¶MæT“Ä@¬»SëØ±]Q×u_åóbïÅ# ÏPŠÉ˜ˆÎl(ÒTK3lÄ]Õˆ+MÄfÓ8Ç£EV¹Ÿ3Y®Ž"|-ð|5ã‚›h®•°:1ùºþ~z@IWA!&¯9h÷(ˆ2¼‡¦Ñ$/“$R“”# F½N¯õ ƒÁ™Ù#NC_Ø|9Ú°YpqÃK"´ÆBh¥¨Ø’oÄ7Ÿ’¶sHci{ñ¿® Øõ :H¬Ó[vºGݘ4SÉIå×{ÏOJ¦Róõ4yŠÂ3 ÏJT®Ê߃p.åœR›%¸lÃÂcV¤úu`~°=S·'ñz9”&@K›I])PÑQPÀ"9˜RȨDº&ß…Jõ`'˜âOãäZbÉAÚx†/¬J9Òb6²”(nPº@^y’š7pÈ¢¼ 4Q 'À£Ž3(DÍHi?6uª¢‹› ÝÚ¾ïï ßyuÒÅ‘™ªç¬È]Ž0‡À+ Iük›fô@Mao¯È€8ru"¥üè,–3Rt™Îƒ7)—;qtg-ºz±îÊ1$ªãfºâ“nìÍÐKüDIθ¤M¹=Ã%e¯ŒßNÐDºH©aå•=ðÐ×|`žŸL õÁgR<€“ÊUŸ¨+LÅ:‹?A/l`‰Ѝj›‚>äÊz?fwú¡ùUEÏ\ý¯ßgÁë î—oƒd ™ÔÒ )÷s Lz7•Ùà™zö»'UU«±)+wày¨Rœ€ß‰Ù±,ªämÂmñ~>ì8¶Š·•ÂÐ’‚s£èŠ®î¡ÿ>« }÷¹Ý“í ³žn°&ÀbÐnyèä ¦Ÿ =2ý¸™¶¾Ñ‚ᇥ/Ç î¥1öÊÉYXqÊ,¬u&Ó™b#2`ïA÷Ç]x/¤̾¡c§ÁÐ °šîAzÅ©HH Ô[’bê‡Xã %Ó -±LLÅŠ0ØBh2’¶ðDÚß=t,äS˜Ju„f®‰æZæ™›i´í¸––¿i.S"~¾& óÑRƨD gt·'õ†-‰CÉëav³é¾BN»Rld‰¼¿Í R"Œ¿˜¦°7åŒù:\V”˜ÈÁÁÔŠ$Š[ïáIÑiöS7ªÀ‹¯Õ8‰B¤f© M¤@Ë7‹•A±»Äc¯ôïr $RÆñSœE*È2qȤjÆ dì9x’*ÃWa°Ö°IdGìûÙ¼ªÑºIð[Át¥Ùë:’XdäZý¶í¨é³jOßÚ—zŸˆûfƒ=0â%°9öä1Wî4+M2ýœfõÑ ²mðP¨‡ïts“±¶ß>«+qí챯_$Oã tn"ªÎä=Í™J±3,[zã2ì…Á:!i ûÝ@)}O'©¬FÇZ· ik{øÈðŽßζr¡ÂËW“µ$ël!À¹gú^ê|¯°ÐÁ»BieÝQÔzž²xÖ$„Œ¢Ÿ9•l[h“PÈ—f9Iû¤ Qü9òƒq\Pþ“3¶.kÊÒäÜ#1p…½,_kNK& x›igJ×xÓàæ —Ïš‚^Y€ñ¤žf;๴7XN g+cZ™-"‡¬Ô bòá¯-à®.f¸§DM4a…<|ÁX0³;• 7uŸ9[ \N‰Þön$ÕV0ú®PÑÄÒ­îU(U¥H&7õÓú@i® »´³\´¥_Ç@E¥åïˆÉ\ôO¡ˆé´ÍRšª&L´ ˆÒ"– O¾Û ÍFP÷RG`õ»{µàIعrœ •R‰8«–Š.÷Ÿæ$@h4ÌàIœ¿>'LjX]“Ø.9ÜzS{òšnÖDGÝù*3óF@à|jKÑÒúïåÑ0ÉÛÓc+¹btÕº*ñI¶eÎlµƒdf-~“ ^49ö}È®>i(M‘‚‚w¦aMü,/XÇ¥"‹\j¸ˆZ: déXûß+ö h³™ «îå‰5D…!n€ "}#™Z`g»Bßw¾bF2¡*IÇ÷cVcUÊ%è|¼–Ògö2À ¬kO¨©éÆ5ÅÙ =.%¿+‚ ¨§1w"1íˆ"¤ät4&¦ ù“kÒ”ù¨ìTµÑ*[ Ü{ B+†6:¦è4“…­uâgð5Å”¸C^©<Ð]¨„æL•“³É§ †SêM¶¦•q+ã”aÐ7²zï»Æ­EWH´ÂÅ©»Ôqrû!û<þVzÑ„&]­"C·]Ã"žV“N `•ó1{Ö p<Ù’¥7 «kpǤ\ÃdÀhX§ÄQ¯KQ8ÁKË7’‡èA³€×³fýØr•ȦKf›Ž÷¯k·ï´(¡²~+XöŽž%hq|pñ#ÃÖäJŒÌ'2dòÝlY¡²`Hg `Ø´H03µÙjÖô”Ö“ØØ€‹} Að¬÷2ÉÕ_| }2΋+É™8Û ¿g²jæt`DE@H™…ˆM2[¾xZå‘¶StV5UauMŒÁ¹Ÿ‰ñ7RjpפlQ=`"ÂÜVüHUvUTAõdmzÚ‚rbלą¦Ý³´ò(-»c†1ú>t¬Å¡E¾³²÷°TÄ .>ðc\"·ó¬öS§'?™pUÐ9Áz„¾…Ù”8–¸›¬¥^ZŽÚ$4iœ}q/²#„êé#”_{ #°„WHpõŠÈ öcr¢š&Î<ᇣ3ãTô· EŽå™D²Rìº똹«®(˜ÞݨKå²>$x*Õ%T‰¡ý¤UÒÙ¬-°–§HNˆ0)‰#¡CXŠ’TÏi™Äg—'¤l׳РP†IÞÿ²qï?¤¢vCÅ]"/ÀÑVˆIù]aözíj-Haî´ù±¼Rí¯R𱯠6nÄs€S6€†[cãh”*Dx¼5íb ׃$“©Ï©>‹™t.h/hŸØ?áC«"ýÄÜœI–Ì8ÔþÔsÙ•â8éñü`3?»§¸XÚÕùl+ž*â“1;FëW5sÁKA¯å‹,—‚['o>£1?bc‚ÊÁ7wcÊ…ÖGn ›ñ5Ô¨¥Š§Ê7Uºžé&`³²µgOãF5jÉ)º”›g§°ï ²ë72Іer÷2£”•xËrÌÓºƒã@ +m|^t•Çrîa=-§ÑÔÔà*>š÷ͰjÒ¢¹hKÕb¦æmUš w±Jò rœ«0bd¦°C±Â½v¢e‚‹•¥°¸¹%--1‰P2Fƒ™vŠ$´p}r¡Cþvó±\«Y4Ì’*ûï-zY-hÒú>D$®W[‰D”4Å•Ò%1=Ñ! ŒËƒ-ÉÞ$7ÕŽ4h$÷µDÒ„q\”ÝðÚn®TÀj{–IåVá ‹Æ‹ßp:ÔÜÊÚ:.«!Úg%Ýi&-‡±ø!ªºQá&dÜvïJØÑÕèºn‚ @×uQ΀:<¶\\Qѵþ€¸]Dábjcœ?ÄNkc÷ì8»¶à‰‘Éz²µfƩ҇Ì:ÎÉÈJk÷ÿšYDÜ))`|ƒÙ›ã(–GU¾!œÒµ—h*CÆrkJž-àÕ½ñz‰!3ÕÅX ˆ¢]i‰ö— ”£rîj/ ™ \OIü)˶JqéN,æo)¿AeP¨°r=ʘĤԔ¾ÂI[ϲª8‘!!'¬ë˜¢E@¬ôÄZç«$DÖøU´&"SpÆÞTlTÄõ;²Q&ñS#j«(òèµJ²hÝ%ª„Ô´q…P!5‹Ù‚æ¥2ò˜o•$ј„U(\kjœ°‚±Ñ¢~“º !9 BÑp CÊ8Á¸Âejà9A“e&³ÊæáØbTßϩ՘‡äceYpû#I4…;FíøA>W Y½@®!ר÷`Åf½v4ÄJÁçY bò4`Q¸BôbÙ9ÝV9cÛjLÊEVõð¸Å_f¶\ÂW—¿ŠfÌnQÓ$ý(„yvLj€6C7åÃñÖ£4À%6(>Cž} :L¬±T‘‘ƒ¿ÚN‹¶'.,P2ŶÚsqó=mý†kYÇè`•î¤Zw /Mµ„ûd*R´=—DW‘4Ë›ÕnèÚWZŠ=Ä ¨p¨˜ª‹ÞÃó1OǾ@¯YgÁ:Hâr’Ù i¢ (u_q¤¸.—ƒ½‚3)c‘î’µ êÛ„ÞUB_NÉ=láêÓªƒ3;ïPj€‚Ž9ÜPªô[Žå·M*8ˆJ™â%a},ˆ4bÆ|¹û˜Ô€Bé¶Ö™Â\+V.³=Ù ÛÀk á`¶½ n0T!²©ÑÑcQy¯ÿ”ìÕ‚’MžìË]žÚ±z—¦$¥Q^òRÉhþ9v‚ÅŒræ2 Bâg…¹¶+”ÅjFKù¢ù•—+be¸41*è B _MJƒaݾ0b›ñ^᫲:ÚîÄ€°RTc¼˜Qˆ´x90Úƒ£ãlz¤5—Í»I¬TÐNÇû˜0§?p1Ú\¨tÑ=bWI'7ÎãßÚÙPÍÑN{$œ…Wªë ¿Ô š©ø˜=,8ÑÆ=ªçÃHy;¢ è°)\&¹.’gÙîŽK’¹­£ò& ”‰å[¶!*F’’îÈߪ»vÊ«g{† fÂû?{dj”3Ïò>b¼?¬ÕÁG^¤©aõq«±b.jΘlŸcüŒvá…Ûä@½Bî¶xÔˆ€Ñ(jJ<˜Ç¼ëXÌ–ÿ„tõ|K¦€ÄKÚÍR2%_Sý§Èø‡eÑ!ï.Ö éçš!Í\3¤&]{’Kø Zml‰)óøl‘öQ™éD8‘ÕjP6Et²RCʉ”þ±céVQÇÖ¥A°(J€¤Ñ¿œÿÛB,¨ ,—à >æJC“¸kq£& K‘•¶l²¶€Ø#V|©yüJæEZ½ Ò¥„ã‹ *àwU&^€|uDŸ{ôK“;œ)1cÞÇ”äWºY‡)'ª®š^±F Ë™Öá£êv‰ØT?cT¬ØÓ…±MÎ%¿ ¡½Åì+2…¸s̓xÊÈCüI#bc&Œê3-%òÞéFéJŸJ"$U§Ì,TIžÎy$Òé4,­DK+kˆÐ~I²²Yf§{Ú/íÏÛ-IË"ÑPÌ %}-tt&e³ª#8~êÆ6ºgBpB±€eÂ# ¬®' äÉýR)s‰]M)æ`Wfr˜üˆeì“DõÈѪLï5“K»Ë~f'-v©âÉÈ’ÀåümÈhÝÈã\³Š2áê„Õ^ÛGg,ÛOpWgT|R=›0Nü­G`J˜jÉfe¶¯ë¶ÎÆùp"Ñ •ŠÃ ̶«§¥F»Wµ÷÷¤ÙôW9¹± ñÄLJ‹– ˜z¹2.º¤‡“;aLðö2U¥*[“unbý–ZláXÊó!€êŠ-æí‰~)ÑÛ;³¡ËãI2$GÒ´R1ÉUm ”Q¹„”®pçë‡b_鯬uäR³À¨#patr\²ÊÒ.ê ˆ¾1ƽ´IsêÞ“³^µ¶Í< )›$J¬Š)׽؆¼'ihÇäu1û€\€ÓÊ„EÔ+ X¡¨Ô£4ÀH³"Ò7•&aF yò§>&cäCe¾_e3£ €Aog"½è@ˆK÷_Ý“ú‡%rjj¸Ð!yy`½xJlÏÁÕy7ÒÖð/yQ#ú ›ÎÞa»câäq ºI']cÓÑ««%yqÐTÙž]Š¿,¤ºú-0"Õß ÈL¥Ò›Àµ‹E³,7È ëFÄ5X¶ôL£oÀXÝ+¨¡Bµ“#vVÊWð[×.=اªœ'„i»$AO½°0ÙÆ8!E ~©ÄÄc¥ˆ—TPA·½X„T¶ \VÀÊ”ÝV +^ç#…A›˜z¤$NÜ9ÔÐ_3*Ç1U'fåµCá 2ÑQ)%Y…$˜–8Ê…,ô‘$GÓ— t| Ú„Íïl{¬³væä'c§ ÎɈõüjНR¾ ¬º>Åü_J#Û*úÂs&CšÖ7ÖÈɰ äÒãFY¨æX¢ø™RÌWr´wP¥ì]¶V1-}‘¤©cÊ=Ô_òýшFùØ]dvGY“ƒbᘆ2o¼¬)ºÝ#×ûM"Hòùf (Læâ¸¨½î‰wWî蹄IÆI äãb•æÆ›ˆ† àCķàñ£'VBMæ \i[YÂ룘7$í£¬‡¤Gej2é¨É'R‹·•¤tŠ"QåÁ{Át£òD5®yS‡ó±Þw½ÛÉ©Þ?7¦ÆÀ:{'EòžØXPK&&emwMõ lŽÅ(k‘('rˆP[âÌb…"_™cZÑü ÓÓ­=«Èׄ”Œâ¯˜©Ýä”1¡ nQ€˜YGN2Ò¥ÇA ޵,]Ñ[5ÎZÖÞ•0˜5»¸ †¦–ëP‡B)磈EY/­òùÔ:ó„sÕ·JóbÅZmÐIì]"ŽÅþôqª‹}pÈtpНÒùÕz{Wž¶vöè@ôÊH»#cýUDqÆöd‚…¸îk/× 2 iaO¸ïFÖß H˜L÷ ©yó!©ƒ’Rh]À’‰äêÌD"Ú›Λ2&^µf®ü׋AÀìóbO)CeNXAÙ“¢¶„‹©ì³ª¦î_r)ZiQø'›°ä~Jp/ƒTôˆ†0ÇL*'<ªRŽS‚8ÆŒV$l´ ¨{D¸Õp!_•zJ*Ô ìšx3…ls•_ÊŸlEÝŒOh/IÈ<“õ:£º‘7c`s$Æ7)rÓöm]´s‹Vå€ëØÛÐFc?Û빇cßBt¡…Ôxv?j¥£†|ãZ½õ¦ú‘I¹%)–玃½ÆNV„éKÐ6°A"ZL}T©ã>šäQ­V=¸lA¥#Á[êÕs§©^sôA™m ëF"™]³ƒUëÕ!yN½AuK¦¸Ñ½Ë™ä¥^¤È-ë°2 çïªXˆù9UÎ] S²Q¡²#$YVÏ”íÐæZRY¬‰( a©0a–e¹ª´£ÃJS*bïÙ+-¸ÒAÃñ •‘á¤b6&> ,Æ$ž©úJÖoÓÚ‡WLjÍÜB9Ž>³K°T=ë)[?aaªQ ]B*šŠ‰ ò*ñb°J=༙üÚH D®DÏÚîë1¾¯5PðãQC¨rÇ8Ùˆº‚¨~jE¨>8᥆­ca°¡ÝãÊ«˜¤œ`9Jß<-+Ã",£XdÞÙ·M⽩EEV‰T`ÓWÔÙƒ$!ð¦ôN–T°ò {:õhŒ@–aA‘Á©A§ŠµŽÔk )Q˜ÐÝÀ(CÞùâÊ]È]È¥¨¨ÿôA8zæ˜øîâ!«Ü%‚Y´˜NÑrêgËIÂ4ÅrOðyEƒI¹&Òol¢±ÁÄšÄÃÁ,?!?í>|ú…Û„ë]›8³œj2"a)Sí™&‘† 5ID'%îo–ƒìñ …¬v« gÁ*úrdL* Ø êÕ0ªZë‰ÒIòœc›Mùµ¦–Ž)¦—Æ™²lÌ’—÷ïÅ÷mÅð(±(…ë0I © ˆÖÕľ‰Ú–t ¹K‡Æãh"£ð )“]¼$Œù®ÀíQ¡Ñ.<.*)7¥Qf~Ú°$i¦aµÚ5SxÒÑZ rщˆ;p—[Ï…¿ÛJ©¶;ÔöclúTéÈÀÐhªºXgÑÈ áerM÷Š<“ +za‚½>#åØ&ê,e•Ô.ì²L@NÁˆ8ƒ+púƒ$;劖W1Uª›:FY Œ•Œrq¤=C:‰4wª5œ¶Åb-#㶨ñsWMdN‚£¡‘>¯ê°4`š‚òîBû Wºr€w˜#µÊ‰C4j[•DâIJ㤊Ž*F›zÑËh”ïM4(?l<,@„qCp8 )èk”J”Òçµ÷fo‚dÿCÒE_íÎ_ÞÔî„§ö&Ý•òæQ‰¤Ž…À2#í–]â6[LŸëÚ2KŸûBúp-Ò‡9ДX#®í϶þi.z1()©Ã‹±æÂ5AtÙ’ƒäŠ 5)ã-Rå¶5y¢ºîÑL”¹+eµx™g‘‘O[üMôÍgžÎž;²/m+’WHT±˜N®c콺ZL¤€l¦Û[ØnV'΋(¿ŽÌ&ˆ%ô¼Ý¢6ëloKc]í{ìW5«Ñ‘?2äc$Dc•: áDäÂõLƒÃ%s°–1Ñvh"wÏШÀ€Ã÷mŒDÞÓr˜D‡ÀN&/(-9LÐÝ\£—I|c õN;YU”,ß 'ç0AÃf ÖETg }Í¥ŸœâãLRØömÎ2TjØDo°X~qáú1¥‹×tÂ8áüsN‰À¿fWƒ`!äd!œX,!ì7YYÔu×^ë|âÌÉW5"K©$›òŒ™—Õ@©®TÇöâÞrôÚêØƒFÁ¤ädd€pD…ïTùÀ„NöŠG†ú¢+<“Rj~Æ´D…ÉU§Ûn¤à©<†±(ŒS_E ¬Zp ͯVÖ,'†!#•et€à*wÜrãCÛ7ÈY—$r&ië%ÀÓúžuùÙ3¹»0bæe‡ßœøƒŠ‰ËK›í­—ïe‘k-Åb)‰M•.+ó¹ŽVòX®º¦¢ô‰ÅK•¥,Šm9ÄBãÜÅ5÷]»ÝP'\|9BžâèDRTtr'ÈâÑâ*‡]WµA¦umÕqíÐÍÅɾíÖ˜i2ã„+Ï€è¯c­`«bÁûª…¨man¨m½G6 ‰ÕX/§ÞËN 6ÆJ$±xÈÄðZˆ‡–/ãD(zOP¥åUD5NÅŠésŠ5x¨Y#Îj+ïÍgý5Wf€êl©6FBL¤<a#=³ ·I÷‘q}› Ëú Ÿ´‰OZˆACH‚<Îê{ž¢™Bâ‹ÐSuÅm&ïQjØ–d7u¸ ‹=¨˜òã\±Š4öÉBI·¥„†ë Ê£½}Pªå;X“*'רª6ädå#ígNZºÄ‹·¬Ÿ†Œôå*Î2;ÄÌÓ6v31Ó};_Ë´À`ä L’ìA—f>n–¦É9) ° ¨LžªÏQØÉLåöLé$Ôòlœ½Å—fdNÒÚD½Ÿt_'M—'áÙR"3…Á~ñ=–xŸÙ¶Qwû8±c@T´¹ª|2ÅÊ':{Ð/P©¯F| ®U!gà+áiPT–S]>@VÚ³´hÑE¬‚ÞÝÿ›©¢‡òYïîÿí¾)Q$kô.lRË~Ë—âfSÃDôd{¨€ìm‹spödè…\oreF q®Ö‚ôS é:H¬ñ‚rr—NÜԯ˄MR2eúYiÛAàH-bÿ·X÷ 7*­F%aÒØó½39kx"³–s(QxÑfÑpLZ2h *À*sëXÎeª ®GRš¬&!a£éßÑñ ýqÁOÊ\]#(Sf\JÌØ0Qlfä¾…J‰rNX.€¡¯ÞéÆ3Õ v¾cT託¯®å¼ásÄgâVAµ¾Ä~FM°ñœ­J-’³Šz6ŽÙ˜h¢òÅÒIHgßÃÍUËÊNiœzÖ똊TWšÜò,ôÍÅ–¤¢ ´$‡²õÏÞ#½ NÜY)Ðc¥¸y- ñèN˜°Ì!ÉN·f)êB„H ¶iëºn5j‘jQ¡W„qQ…N&¥õÉ’7¹Lk=s’ÊL åˆ6ôHLªý.U–ºh ÐÐødŠyþħ™ýQ †˜&b1ãü»Ó¹\ÙŠ¶®ÖhDx€:䪃'õ=ÌbsŸ?ìŘ¥atÖ¹ZÕè§Ä“rlÂÒòå¶"ù>Ôemm}Uö. ”Ô†Iµ^ØÉ´!În×<04öÌ™Q‚iÞkFg¬np@/ÇûÊj¡å+ÓpÞÆµ›ª§À 7Ü7rì0;É'jêµÖÑq¢ Ÿæ’E¬·+Ϙ©ªm¾ðÛU4Å'I@䢹0—Tœ}ů‰ݱdé>ñÒO»{=‡Ó—ºW¢r ë³I&î j¼`½cÔ¤CÎ3žˆ·‘+À5R&D•’Ée}$†]~DDzJŠ/´É …îÐÁÙApsYÑ ‚ƿԯ£Ôžç9ˆÆ:±`?ÂsÁÈÅH»•ÑS¢!¢Óx&W¬ßP© úïLšÆD–Úý˜éÑÄž¦ä|"Ø ­€ºá’ÕÎ Ÿ€ÓQ㇠ôjãÆ€¹üí±þõv¸‹öb>ævFå…°ö^  9ØDN¹¡|$íµqŸmýÄG{½–-Ú(%•ìNïuh–l;><¨J[í°L~(Ø=äƒÔi«Ä5Á_pärÑ ¹U9#àݤß{åðŽi|†& ²€Ék·Öžân¡Î˜DP¤›[AIbI溙]¥DÆõRD!$¯)ûsÕ¿%(0ß§k€Ô™§ãkÂû.JlP+3'fµøÐbŸ•Îx@Ë|ÇW®/Kt#}¦“YÐtk7'UÅÚÀU¨0–”ÁeëªûW«„é˜uâ{X7hR•=r’úL”)1 !™ë’PUbÂÒ‘æ¢êK9;ê´Ë½´]¤Ñî]™Jö|& {µ÷"¼`)HÊ+©¨bB`F‚ê&âµµÐN·›7\ÐO¤ªŽwÅ•.#Vaò_]—­,bí¥L#Þ>™.j øûUY3Ò×MÞ05ü Æz\˜*1‘xíG’HÏÍË}$Ê>>†RáÂ2¤=HæžÞGÝJ¹§~‚wÀFE¡*ØQ\¥’—‰´—>ª·ânšUÇxÁt®°9wƒ¸µ(êUN)š^–ar½²d®PžŽÅ,u@ÂÊ„^Q9ÀãgqÂÉ4’ÃÜì4zš¹¬+] Ôܽ€·>ÉrÛÀÛ¨)2[“¹Ó>°˜R‹þºW®k<$‘UVÎU,ñ_ !‰u£S@„]­¬Y’ªžR¬Ä)|JgÒ©-YÏšôœ½ôºC: áè±b:‚3G´@QÎO£<r»UúèPP½~cïÙZ"œõèèÄWÌzÐöoÇHå?¹á»T+ƒ°¦±hûPµ(¿]EAVh+ '^ˆAeî¼è®ªPn7ýBäÓ [o Ç®ÿÙÛ‹1'Ò¬9KgòG›q¡Âø¥#éÝC°ŠïùMÚF”(¡r&¡Àú+E ÝÂÔIê½ÍµO "‘„Ublê ³ò¼)`1 ßdHk¡j$JrpüÃ}*5Ëqû@¾¦ÈCH^BMÆéH‡ô:˜q¥-¼&Sd Qö¥`ï·uÆ@eX0¿obfJ¦mNf0‘ªdI@ ˜Î?‚‰ÝõaD2FdDf¯ƒÖƒ\¹š"·5ž1$^?F*uy\ħU¦R>Æwjþ˜¢NzÛ‰¤1`@5³hy‚NÕ,í÷¿“r%bæ3: ô‚xd¦Æ´OWù3æoñyª&f·-üÇÑ3ùDñ–O&nòIüF þ&¸Ì`‰Ó}bí&úÄQ½¥ŸýqöËWˆÙ7 ÙŽM¿nHÓY(kdcp¢îÐŒœ(ßÖÖ™ÒÔ8ÿ9¹«%= ÊGo'U¢ÑÝ´²ËP‡} s3b=Õ8˹¥FâÈOÕÜsãÁ{Þ‹UK£ocŒ®RUš)¦Éùµ¯èU{Ø8vâ:´5›)& ¨ü*E- /mwúŽÄÄ.6Ð!÷A:© W ¸jOÜÎ'Õ›KÅίjƒèÑåì6ÝQµScDRU]OÇ$ qQ¹pî1ÍLÞí™ÛÛ˜$ý¿µW½ê…šÁÆ¡ÉÄÊ>JÚžTâ>…ßbr¯¨¸À#3Êù˜ôÊÞS¸e¡7€EðfžLa³Ü9ùMŽK0ˆI’âsâëÕ1}­Ž![{*βÀ Ë"æÑn„‰6­ý ]wâê|\í[´OMp÷Œ½A{ž“Ñ´z…ììê%ËåƒDÛ>2gG@n°+C©ŽáÉð/èØÝ)@WLÁ< ·UYå.~Ž '5u€,zrWÏ×ì)´Ó)2ÃA#Kb¶‘E_ׄh¨ÊU°uj2ã9ÍÍÊMϯ¦ø k2Dåt©‹-ð_Mñ•¨Î…9ƒ^Nl"S_áÌI€NÿÊʺ’HšëЗô.4ð€¬tŠÉ£Të œEº#“‚¥0T.‰‘¼µ/êjX‚Œ¤N£"9 B2$¸~³ý­¸ä|lxÿïàÞó”h?ü[u ã; LPì%Æbbpf»hé̘Gé&ß*ö¡Þ KwÕ£ÄNì«¥;½¿½¿æ`5!Ê!ëÈã!&VÀ÷X‚[¥Ø¹ÚHÍâp‰¨ãXkÀk¢NŽØÅ‚î¤p¦,Ðg?$£µ}½û¾/VÁýßµ7ÉÖÊ—4óp§ò´Ð`Ë•ÉJäîÐäëÉ‹{ûTUQ„ê_9 «cY9Õ±‘çD>†»T ¥žb5”‰ŠIN~4ö‚²¾$ïäwå°†°Î]ôAÕÐÇt°µ™ Ì»¯WVñÖrä ¥gµÄZBH¶ƒZ¡VŒŒ¬QMF'xíUùR6äÿ…ÕóÃË'ÝDdÃdoQš3{åÇõžù ÕRuuPœ"Œf@X6gƨ3Ñ«!/€úˆ¼w¸JÞÇø²9S·÷MâÓƒFì˜x¥“>"qD³¶öØkÈPªR˜nIþì…ÓîƒfúÖ\´|ŠZY⦉%LÒæ÷Ä^þF08ö*:ëµLò|v+gWJ2èUX¼dãþ¥“C»cl´ÛVFTä‘`€·PÛV@ˆ¸»5ÌZëXÌ'È;’äÎ%ãVIgy)Ýfpßê’´ÁŸÆ3’‘:¢GW€Åkü±ëÉ5¢”áGÖu&”^´üäXcpbªIŠÜ»¯;bMBâ“ÈÚ†A6áS»+Ù=Éó©+•a Üʙܤ³¥îÎä˜Ê;4‚ÄWÌÆ“U¸ŠÜºä¶§A¡ø &ÁÁà§òð't9Œ„aÜZ¯ €œÿô²ÍC/M;Öj!%ŠR’jŸ AÍYi ÷ °²IL.É …$&1L¤06bl¥Ž9Œ¹>p“ïÝçÔJ®\ã2sCÁE5nkßÀ\ ÎȾv#'ó †i E“xPyÖ‹ )¤¹^a˜$øPe™ œ,$'-x¹·è]!`ïlA©¢fféiÞa÷‘*âúS˩ȫDÉîïô8UÄGTß OWx¡x˜Çí¦*ÖVfBr³`Ëk¿SH‘ ŽjGÊi¬” ÃJrÇz(Ðe.¿4œr’j“ÀÿÀ=¢”TN‘À@À@•¾T€ßSc4ùEØ™Ó`ë¡uax´„ƒý VîYUk]o˜ÞÊ#ÑUp¡å*Ñ˜Ç ö~Õã^åƒ7PEq&¯M¤š8h¦Hˆ‰ÊÄätÂm¦Ú”7³0*JA•f2&^v/d¶ãc¯pb}¥‰zbR‹S¡<ôƒ¢¤*4£V«ŸPø'—#T4ö4ìlô´ °æ8ë¢ÍÌâtñ›â£GE©Óiˆ«­fjk·Ñ[íåè4Ê»zîðq6f¸ó5Ú•Q¾Õ Úl˜½;ë¢Ô°~ñäKï-n qb©b˜ÁÇ€M-ƒŸ«½tš‰|]dGoj=¦ àòÊå–H¸ê.üzÙ#ä P‚ƒ;î8ÁÅ„Cvó\.)á\ëYJ8‰zeB8­“a®Ü8ReæYÏfT0jtÇ6¸Œ„ “ŽÖBíôÓZ ½|Z¾¶Ë!üøõ°]!›2 ïö½MuA+Ñ`#ôØõ¦ðKÜ÷d.¸ŽÃx·‚×¥‡Üš¯0J(¼)e1Þ-Œ’×÷;Œy÷ѹt{¦ádð[Êq¿Æ%A²yÙ­z½ýQ™ÍÛkDZ«OŒ]íô@iè+I¬”ÛpJ»ý1Êm8¥ÝÞ§ÜÆØ\~†´Q« ¹aë‘”åÉR¼)DýfbD¢ðëN½’ª2í cEj_“:'Ù·¤î)Í?f!B&NuÖèu‡ÞØÖX0.ëi‰£Ó}Ý{uµ^xo-aW°)mBX¢êø_Ãݧ³²âƒÞªÌé©Ì’Ì™‘’÷()æ+™Votêå*%=xî|p9øQ±@Ѹaš¹ã{Fý•”=’å‚Añ]0o7VP*ùÓ´ û™fþä^ú„Yzt™a†MDs5¼5®Üg©¨¨DA3DàÝV¶w>®³ˆZŠ9oýIæŸ9!ÉCí!5ÕcWj¹•ã&xcÙ–GW¨]s¤®‰FQ×$ÖI|P¶fz–Ià4 ãVÄ•%€â.¨õ,Û„WAc@ÚCj B)2(é@ÅUbN \‹)’ºÑÌñ:Ý“† ¦ˆQ+&¡ì‹¹ÚRQVÔ#}%„(]%â2¬reÂ+{Í><-øŒÝ6ÜÔ(xVJÑÍ; œ²#=^%ÅX Ap2m%B=Í@à©i›Ú&|<ðà0ÝÕt5* ¢rMäþZªh~>ÕªF3ÖîÃ$EJŸÎ$8i„iê»=º8F%lªÚˆ€‘Òš»µ¶Á>]ǘ“€žHndI¶ÏjÓiÑ#^e½´ŽuÖ±äØïRHXUÑÕ.jò€ô$bOè÷FbZ¯$Ó„ªŠ‘cö$„"ÄLÙI°¼ÎzãˆP î’㪛 Óiö¶bÔƒ’SOn›³”VKö]ÐC(ôˆ8Þ„õ7ÁÑ1·Ÿî݆P(Ë®¤€ÝÂë³#± 9<’•;ÌŽ¼ÀùRÇLQ…P…½$˜F¶¥M fá&,wxÍzªõø'8R#½¢žsô³Žÿ¡­Y3}œ¨,‚`÷rf®éã"_ïÎ_Þ^Í ‘yžÚ±¼ŠÕ;Á¶>Sš66]hQuƒWÊI7HѺã†È/Ô‡›TËP¤ð–½i —5U†´í,¬H&ŽÛÚ«f Os’u ™#E0µ X~‰ˆp¦,GMA² zÕ[”2Ê{`‰5rü'Ê¡ÇZŽÈ%H¼¸aráH…o,ÏM¾…aŽe´™Wú,P"£î÷U:>+PJŸ솂·s ÿTcáA+ñ²yù%ÔAð•oÉ‹YCòöTðn1Ϊšôfƒ¹[5«Ð¯^oR ßÌqÕDÁ«ÁæU,*Ûè~…‰°Ô@381Ó7õz³à^D|6õÂûžP\²’‰y(¢n•=JÇW6öµ˜sUå2¶?sd9F‰'•‹‚¯êbùà,é†"Q©»ALؤËLœ¼Î´í^$)A½zÝ î~¶±ð0š˜L–È‘2Y­ ^ òrôk2˜ l‚ÁÃ^½!KKã{`M±¹W9%e·p®6fc”Ijñœ¿fWHdØ!C:_Ë0£i 6grü4r\’•µ±aÆ<¢Û°"¶@®1®’£Tâ¦tˆèt\¿ƒ 83?;ݰO=w04žoY“0›¤Ú ^…òÌGEu÷¡Èêª›ŠŒùô Þˆ¼q«*¹ØIªQ`wÔ~+:[6\w{`ò€a¶d¢Q» ÄçHÕ!{? Ïž¾W%¤¶ƒÖFA9¸¬WsIÀ7?·rýaÚR5%¹ŽìBVUñ©aµºD,ÏàôIÝkò#B3¨ 5D6·*Àb’K!‘¡ u­cðÁ0hîæã³ŠÀ ô‘óT;½p¯ÈòÒ]3ÆtTƒ„Å'ÑA(þhqDdÀ^$&iD©_nZF\_X¸àèçø±GÓQüuo6‹‚Þ;à*»@-¤¬3ƒ×¤€Y 9pj°MÀåŸ}9 ¯‘[[«çJcm¤@ÇÙž¸ÊÌq†=Ë (3P‹Ïfâ{;õ˜ Vzƒg¬ìõ>Äù¶ÝñÛ&g¶<·Ê®JÈ…¤”& ÌdíKŠúY¨K>ºCm»<–`/é’ª–.‡üƒDF›ŽK{Õá|8Œ®¡Åó#°·o3+¸f½T°²§¶+Œegã‘)*)<-kd¶†Z ° ‹ "žP|EüTe*íí.e¤ýO¢Öà,«I¹fŒ²Tƒb )EDMºÜ)­¾]f*©-ÌTty6"½ ówÒ¢ÐaÃB@È:²o±ÝxRM32›häsÚW¬ø`[¿mC'K‹²n[lé0«HàEÚ"HV@gMcV½or'õ€BrÖ÷I^;è.)êU·!ÇËÒÆ­ï†PæÏjx:9‡¤u.(W5ä ß'^ÃÌн§ä’K^ÆMÇ ±r•@Ç*ò¤éúYÁèÍ,O‚ŸÙ‚NdÛsAÐ (rbÆkH`A$ämq6ëìiˆÏw¨ï˜(LÊvOtèà”ÓH ¦£ Éô·J¢ü2“‡ÞJ®O|2Ëö…»ØH„TM’å/+Rô*]ªù5ìU ÛKmˆ Ê$ÒÈ_J¢í~#Øëgõ>ª2„Ž“b(´(©Î)e€‘{&Ü$¡è$žXs?«3Ìò-ô[[@:`n#<Ï 5¡®heæÄÒ#.Þ-s¨hWZ”í Á‹žcúÙNKLUO„)¡&–¬MN¤Îè5? ñEÍ#'ƒVæXêšes;òÅeØ!ŸZm&ZQЛ33ÊlùXµ~;ýÍáÁ„¾"“U,ìªè`Á6¦·e$dçvŸ„æõÃ'4¹Ãç±|Ť߬j$OUCŠzB׋ÆkÐ2…À]"$-”…)Ò:RtŠöQR@AÏA”ˆ8J aE ¶ z¤ó‘¶:‹ú(UrhêaòWS/’‚žñÂzX‹u†âla¡Tó}ï w¦z£ÖTï&'79#K‘m¤Sî-C±Œ z‘¯„ÎùjÅr,mÅÇ€«ÔÚEšwf°äó»Z¬®a.3‰t|8”|O†õ:'Mˈ¨ªZM¥ a%âQ‚»B!®Oør¢«5)\Eë;”kP‰ÉsµpýÌìÏ1B'©až ÐDxÎÌXÉm',ž5䊯p#˜4±LÃd­ûYj–Œ&K˜~¹A²6— &([¥¼rAœ° )É“1í°g`ã³§h­#@sV‚ä«nj¬t°s–@É;zo ¹€ŠmÙ%ö€Y§ X+[Õ¶ºJÄEôŒÛF¸´5·&êbàŠPù7*B“*ŽVÆR ±wV ³ÙgØŒ(»É8,¬ý•0:·7£-°TÆÞìWqjôU õG”j4³„¢äEÀ`šhËÄHCjƲ¡g†Hm“8MŽº"L³Kð *£tørj ÝPÏšÚù×”"‰\w(¥E]N$¥ÂŠtÐÃï‰0ÐÔ¼LÙ¾°\•T{†ŸEU¦˜Ü i¥J 5=g¹¢ö¢mbFg¤P§1`+Ö†?ÒÂ1$~¡eå~•žÈa®“™Á.g+ SvŠYk›!¹${a,H‚ވѨ'Á ñR}ÛdCdAçÎÎ'›bÕäL0æ÷¬}ÖÙæ[: ^¡¬N )z œHïÈ×x ÷^Q Þ@’S€áܱޣÊ|”]“9bŸl)Ç/Lƒs#HéÛ±òJÆ9ÅФrÑmÄÿ²˜«±Ú‹õˆõájTU$|# Ö$Ô¢añ7¹IÍM–F×Â#¿\…TKr²Ü# HÿÉ#åúQOnÅücŽ@?áƒBµ{â`즺c±¹½ªô kÌm*è ]Tн•IäüŒåX©U8¥ Þ»–|!xgɼ֘˜ áó§Xâp•‡ˆléôž3ë 5y ‚éQÌðN¨‚$Ù aŸ1ë‹[ª{—ÿô ÅFùR'˜M¥8ûóåKb·&F‡dœK./¡§ji–Êl#>•Šá¹ <‡ebvÇðzŽøäÀØÔšÁrV)üÍ©Ñaj„OT~"Èøz©ah5<¢Ý–?²aÅqïÂéCFð¤IQæ*Wï[}æÉÓщlŠ:’áÏઆž‰=2¸"YÊϸ’LÅèÅh¯ŽÎ'ŠM`p.{(|žÀz;üSEÁ0î´¾Maè…H$ìv&6”,›íÛ ûŽV£«–Ó°÷T²œ)¹sLúš_!Ìi==lgÌ…¼ûD±£š‰Âå’84½^^ª5’XHsW´^øjhœ.9å}"0qbŠ:Ge壭8 Å_ò’U9Kª!2]ríºÑ£ß‘,Iƹ( ÷§ÒWsi5/ðn#ŒâÖÜg”²§ý‚CKĸO„õ„(Ã&?-Ój9: y15sZ‡©±X´Œ’$&„’ý¬Nyq\‡û=×§×PC•`„?˜yÚÙ˜O„ƒçk¾úÑù­&U™ß‹`NÜõ¢éj£U“* q$bt$-މf?ZFJ,-yô×Ó?øü"Á ÷Õ¤­/äÆyD:%b¡SNnN€çgBܶWöó«'ÑC„Ÿ0jWÌ5ŠX2¯êù`±zIZW/fÁ¿Y:F:¹HñÊZ\£*[(€¨|r“Qu]i>Ï>FÂ5yUšÆgOÙÄ ³ÐI¡‘{QZø‘„–‘Ší‡Ì>Ÿ|Mœ|AË‚³Õ%µéõL(b|Y t1¸7QˆÉÎ=YÓ@33VFeR@Û•E ?¥;Úmµå:~’ÙÞØB$ ”1ÛÉvåpJ6”Ä’ù<Ø%&Y‚áQuÉQªº$,ûB©LN§^zånäÿìéfô†NG×;G-VÀŒòc€I$j–6/ê¬^µèJÖz+E(;SLË{óÓ¯"Ž=PÎ÷3µxq D6³¹m¦­É¬x-+@ãŽ"ç4òä Ý wÌO"hXÝ+#s‹&œKí8 ^P5)r±±Àk …»eTŒx¡ÒUŠc¸F–*¢­PÑ#¬:-‹Þ N¬¡‘@ÿÒƒÐMš¯ðâ$g1;7.cгžÕšàšéÊ€€À¯ÄÖ0ÊÞ׎{prCô¤Ý•µ å=%bQœ•=T±MFaàì-ÉJÇüÝŽ4@æ ¢{ ¡0…Æ– <ð®rc\ÊÕ묷eÔ8x‰·e%é™ÂÄ,TÊ.Û“/ žH’{ž1â ‰xgjŠÙáMÞ(ŽCîuÛðUŒŸ2Ôu…˜-öŠDH¿bpl18^k2Ú7¬çAå¨4Ls‚ P†iª¹wfã™d]OòbP§š|˜Ã( –-@fØ"_&’•4ì 9xàf…O´€ÓQÝÂÈ>±ðÆ×Ü)Z²Ú'±bÓ­# !±¬,ìgr–ÇzÓ¸$%}?bÕäYcÄÕ8 v kB×",é",tìùÌH®U¥_„îQDÛnß“_ ÅH4Ázøf™_¹Sˆ'® Û7vħNh÷rR•å`*þC'¹@û¨Ð›Õ& 5= ÛÕÔ±Ûí'÷'wL)6‡“[þÿZ] 8µV©TTkmìfêš4°‡kOóÁ—Ø{:RúTI¡,ôRö5A½e?£jœ¨LÁ‹ó+üµÍÕ ¡RŒQP¡°ƒtT>†è3SG9CY÷¹­QÁ¤­mfG6†q ÖDaç„F›ýëîüåWL³]Z?Éš]ŽBÏÿj"Ú ÑjaF“"u š¢8ˆŸ&%ÁÕƒ…á€ŸÕÆY!_hÌ$Z§‹´`P\Œ<а‡Ò`¢ki™Xó{1çãw1†YX®ÍkÛ;æ@*úvº¤ô:‰cׯd]ÛZš¢ËC—;½‚ D3ðª2­Êz‹²}–f^ÍqU ·^§ûRÙ'nï’*fùÇüþtÒÑÚ3þ1šs™N+2êkÞ^І^<¿Ê-=‹Ô5ŒPXyÿJVnìZrNáÕP*ç/±ÍÔ“ ÔbÔ_Ñ.ë½X³3îåªçtü‰5™GÁ ô7ñ#þޝc·x©Ã"]¿éN!Ôg•ér)LðgªÁ;Ë8yÅÄa®ŒÐ°°‹Ï‡';…¶ÇC8гÖ+µ˜ä%é ÀGk(ýYß„вD¤h€€Ð+´iXÄš¹«ˆŽ˜ÅY€Ïd1#«üØ•h^Np­ŠÒY²#é¾H´ú#W$˜×Û¹±¦ˆï] sz¼Hø$0Z¨5ƒâ6g×ìbV›©àÜ0Î×Ë]FÕDaP«)ÜIÅ4œ¢S%Œ½ÖM¾/Ǻ†RE?ækÒ©—r0¿8ÒÊIe£*9›L¥˜“É:É6{Q.V¸bAŸ±Žåó·œ|Ÿc…áJ.%®ËÊIhƒðª*þnj w¿†™~à·l¨¦{8ÞSõJ}…)§næ—™¾#·[Ò·Ôýòbð"{lþ˜°t°=R]))ÈDYÅßø xI;Í‹‰R‚ŸŽÛ‹Ã6¡"›1ù§Hi7çH""Fëz„Ø:$wˆ¡—ìIzƒijÑÙY‘K¸àI­Åaèª.¡­vœX ÷ëöžøÔ(‰[ÿu­?´é°…m…uуÄò`ìY'¤¶¢¢ÙcêaÜmiø­5‰· î ±ú0¨ ¸¦÷=Ž|àôÌ^°¹e?šÑ€“ªá"´ÁC*h$#€.Ú‹÷Ÿ0L¦ØÚ½d”,’BÅ+­Ûoôˆ²L¡G›Æ°×CmzÜ*R<LR¡RkÐIê4ÔÄâŒISÖt°á7Ì©¦lò´%Œ·íçšai<\ü·Œ•ÆZ$»`¢¦FÏ1M›ä£¢× ;ž )Y*G%Ócœä¹ /Æú,0’&ª÷#së‚!G”QôZj k­]¸«¸BöŠ!FÆ‚RŒ> ¿÷É!k½À§OC7÷¤ÿâ+ð¥êéA0g6ÏX«`r5š³âж,Ñ_÷‰Šø±íXüÐÃÂÚ»>Bu¯Ð²X¸wâOdÞ!JÉ%IäPÒ;1b"“Úþ'[IÒQ?ÂÒ ¦¿7¶jú¹cÐò‚›ç›×˾ ¬i:h¼õ:,o;©›èªE%°r£ÃˆiWù G?¦¦eå·©Ç$ú‚éO. ÿÀÄD3"Ò,ÄÊáA@ÞL(뿴虇‡¦àáº"õžžtˆR?š¢Ô‹ŽÚJ€#$4×&fëud°bßÓ`¯›ªòªQälh*¬Á¦*º&Ã&ƒO›"‡ÇˆÎo*Xª¦6µÝ°²"7›ºdzSÉ q«šð%V·0á^USU ¬_·Ï*€uŠ¡+åÌÊFk˜ýøDúvÔ Âz,‚H~FùŠ/I[³ÒÍ š;eÈí¾+@ˆIö_ ¶Wä_¢"Í»«=f{ùH ަü-sÌ:ÙSñËgXܬ°‡øx²št²y0ÙÖ¿iFÀˆ¡yùfsŠÉÈzl•°n&Í¢2Ú²S9Ï\ óÜ8BsG3M®‰br9”`͜Ȧ‰¹SˆSÒfOBî =asöé2‹ú6̳¨CÐÃgÑô¬NÄÜ+‹>ÈÆd­³·cü,Ï«¬îGÔ u*Í"w M7lª­m3 ä#ë$ÔÕ[`@)Ät¡å°ºrhébc¦¶þj¤OšþÎJôà¶r`3±µÖ•ý>f`ÃÞç-öx…öÅ=¸™V¯;¸ú»Ò=iPE@ô‡Ð<¨“6Ùð .3̬šy©xŠ`ëáëy©mã¡Zb [Ú¸¯ºÒ³­qzQ˜1ê8†@H•,b­¥Ÿ1ÁoœV'¾‚ð"a•ϯ'iAó1PØó¯ëf˜vF'I‡­ÖùÑ44M]Ë=‘+';8rù…¶ «ŸhìÛMÄc\”ˆãI.wèœã‚<ŠƒŽS³Õ(Ð*ŸŠ{!Ô±ÊyŠÀâÔ øä\î…¾îe,*ŒbƒrMÅÃYx¹CÖL°œ\¸%¶Rv›ˆÇ @(6Êœ¨¥N7™ }ö1‹1šáW”z¤F)ùä°‚&UUµ½uê]ï€ÿ¨-7B'5‰Ó†<* Ž °#õ0{=Òž…!Uõ:„œ“>îC“Çô‘mñg×ä~'£YGE3E@©¦C«²ÒPçÌ=,"x×mÈM£Á–«Úƒ{Tæh¤‘œ±fʤ$víåb¨„Q„3¨ E#ŽHx·Òå$w[¡ÌP®:‘±jÝ!Ç£Èë Ïö¨AÙó]ØŒ5:§qiÂÌÐ©Š ¥FOxS3dGŠV/EžK=2+ë@ƒ‡)NÇX²¨LÐ¥:Ž|'HQ(onÊ´ƒ_©Î…ÕJÁv›ót¦!·c wQxˆÄÞÁØšä*”ZR)¥j̲R™öI.¤®HM-ZÏr€ªPMγ,Š(”AÐ^v(i¨ö¢Äž¡í=M‚´@̯ïÕ^ÃÌÏ¢,&³©`]•­'ñзb›35H:¸,²\„J¶™íœÇúC)#°ô(¤Axù%z¾SP])‰‘dªºP“TSÓÌŠ”p(¨SÕ^T…hå³LAçvËí¹·Þt{æÆ‰l” · 'ä@¼í(WEÅÌs?JE3æ„IBªôŽ'ÔY,ÏY ‘ýRb5IÄ­¾¢}ÌJöžÄCå£MöÕpàwH9ÍKmŸ¦(}\ BÒ6qL 0ÉÓ…{¦ZdBo›º•’{ê,X99œØsÍ€Nœ” BŠW‘¼Jaoæ@lÚ)=|- ¥ìçL¿elú½ˆ}påMB6äÀ´jÐì¤ô.H›"Të›ÚÔ¾aŸOJ³6ÅÃKûùƒyX‹@‹Ü§5ó²Éî*˜{„€Ë=ËÛÇŠ7,| ~4¿ûØ—4@¥6hŽ“8°Žîq8c¸k©p¦‚ÎJ J'ÅÇ î2 Qå$ýǺ²°®D†^DÊêQò˜Ù¼9^›òK]:­µaOyåÂäyÏÚbÄrÿÀöOi*qCÚÒibZ#2˜Ù ?ÕžIÛ¹‘@0gyÐKLrwøæÊº©Ž\}‰½pqO²çKö|^£þ*ø¸¥.Ð a¹Nò˜]•xAZÈ­)NAÉŠ—’ ÏI Å"Ÿ‘ûµ­MÚöm“xe޵õ©5hýŠrœr¦2§ÎÛÐ'Š.w V»„ñI ëÌ·ÍáÚPÌR3»Ù,µ"§¯0%¾Ï 9ã¨þ$d“™^ƒ8mTZ! ‡!¶i-úaRmyà''š¶ž2›4÷Ð9›TÜEó)¦ëaz1¹`Sˆ 1)-ìû!^öµd$ÎÁúÄ$Dh¶¢uÄ)ÐqÅV2ŽE5Ä>)âßîkÄ&MÅDY!O ³½¥3…vè$*«9i¥%¸¬'Åtñïb…Ñ^b’J9×dº®ÞöˆÙˆëŸD< ”8l_M)K#V#…îCS,)ó4ÆX «­)E%…ž|FßV3­×\<½ˆ$Ž#âUs`ñ» €f?£³A,jº»ï;Žžv1»žqb&>á¥tÕŠ<_ÃÈwH>MG47âÏòο©à½¯‘R"ˆ…$N†¡õEÑû8–ήzºC=Í.­AôÇÖù¹®õÎT‹3C¾é*¨K¤&d¶¸˜ÜácËäà$EYAËaŠkkÓ e™×M ã9q~™Èï” ] -ŒoßÎéx¸Ø¤-äªõ÷HRè -,€ :«¹öt%Òw‘w#ˆ 0:8D:mƒ U ªqzbÞ(”¶_Ø1®-á¨âîb«#50iêM§ ;Žî ?f¡/ϾNYÏæNçµµ4wÜF¦3F¤>P*‚Ìdª¹~Ó¤¥¹Ü»…|h)#–Hë8‡ [¹ðL,˜ÎM•òã¤Jadã7,eQ§Úô4}¬B2$ídýNÄŸÖÕP°ˆ¼7|˜ªŸíãÄLühƒ¬ó‘’3²Œ˜¥ù¹Ï¡rÃo$¬ D3êæ™Îä‰é¸fu/IûÜK¦Óø§q²èæ=_‹æy4ÉÑSw€¶‡žåþv:FA “˜ÂˆÿÝ곌XwŽU*¹J#ŵ)¬ZœE¶@àcŨZ¥M(µÈù…®“Je&œw¿éX¿›‰´id=LQ±‹f‘ É’ Šð+±)µ¸ÈÕ{D\EtXN•yªÐò«IDÊlVËé/U^uõæñL5ID.13lØË%Î…O%ëH°h(GÚcJ¢ƒš0B¥NJ×#M–Ö!„U#’ ⪆3¾?x j¾æ]GOÞTòRf'S‚F hqÁ5P’xhh °AÄñϾUÊ‚¼t·€“C#w¨˜ÈÁ‚ ô‚--<lv_ÿyAæ~&^µ ê ÈEóftó¦Eœ qà^¡ZU2G'艹Ö(´ƒf®CvjV`®›¹3’‘ éþ¹WØÎ3ÓŠP­”`!ÁZVѹézÜÈÏÄÙ5ŠŒÖJ¢j ¼Õ£j‚ôø3ÐËò#—ÍcªS¤ìWuÅ2PØŒ€Á¬‹Ê7Ìÿ ºÖÑÙ¼ÐEèÝc¢}Û–ŒD†éÆD>"¿àu(GD+Øeà¼Â+8üJt¬³ÏvÈgÁRßÃÛQ‘N  Íî 8æ—ÈŒwŒ-½ø*_ÿ)¾”:Q±-±ÞðøDL2ÃRí&­ûbÔ¬‘ZªX}%þöül¼ïÚœ¿3Àµƒþ¬Ð[Le2EQÝ… †ùVGÖ;;§ sßMÕ$ø%¦¦´cðlÀÍSØŸ0Ík°ï²“ô»´À_Á~ÕJ¬ ס¤ÕX¼t2z.Ý \ÿÖ5Ù€¨t >Gj~pÞ•LÓA€ÃËêdrc!¯¯c- $2€–y‰<7pXp2êÑHÓɾu—Šå&„9±&¶?ÚàÔÁš+%(ÏFéq<‡ ‹ ¥ v`ºå¬58Š¡ºïXˆÅ~`w¢WJŽ7(ðËÔÌ2©|ër.O¥™ïUNm;™Eˆ0…L€›fÿ~³‹IëDlŠÊTCEªQ9ôño(„TѷãÍú/KMM q ÓÚš¦bzW4_KpÍt ±PøA Œ"™œåt:à•ð{€ Îaô"ÈZ”<—é']!cüÛ’éyõÞ'V‹Î‚±Ög(…Ÿ6ÇJJQÅLd §¤f6Óœ¹NÄ\±FJ'PåB Ç‚Gå*DÏ´<'䎄ÑVðÐÁ1VTÅyáè5£„ÉçWõ,¦Y¥“N].’îT%;îÓ‘Ù„±€„é!ËQwæ‡^NdÕ&=бàq‘³žÍï\«€]Ûæt ˆiDÔäó@…ÆTüÇÄL+×7èJ‡öw¢tn‡ui¤ìXçs¤×MÄ«œ}ÎBK9{kkÏ‚W¹ÍàMµ§ŽÂðãù…oÀ/üýÂ/žÚ¡|—VH÷àZ$¦a …5hÂW Ü7Eý X}xˆ ©?0gª3ÁÂYåŒß«"•ˆìj%« ¬þCZ ä,À¥H”Â=Y™0 ”'SL2k´5’)Ëß¾sÆtƈ8*`ñãDçMBT­)‰¤…ʼn¼·zÊdIÄe阶PXsüe:$(’ÚœéÇö—Ù6ÙÚtd©† %X}ö mê­tÚž¯ ¤nã­–»ÇïK|W…ˆØ.ËkÖK Øš ´iiÒmDå ‰}A=faïîÕÕߥw»& 'GN2Ó¥N·±„Àr¦y§x%z™Œ‰u@#@ d i¹—²3)Kj=Ý3³ú…l›È¥¨²2+§MýÁèÊcMÊ\þ·¶¥M›UDaL¨_ÿôUŒ_Ç Z|]–ÁmëlxfFÏðñ+èvΙ*ž»²±tkÖÝxðX¢PA 5HnD Ó“ik‰5À `“¤0‰Ñšœ jÆ ¢Â¥g‹±K†VPÛ·9séÜ4ƒ»•…]ˆ §çÖšP.Ê3âük•ªt Ä ç{[ 3†¼è”"¥‚“äRw’Ú_ L!(•ªÄÀ ¨µ!·È§ÐÈ—@ „§†—Ó'R¹cR0‹†[f[O†ì­´® ûòüYH/¢©Z-e¸Üú  숿G1D•À9F¾.¦“”TÞ1ÈJ÷}¯ÊQÜ›ñ~ z¯„cõ×u” ¨d0!”£PDÌS“šÈ碒5PÜæµÛb?ímHe¡0+Y„$%“þÊ>mÄ.ÚÌ%VÖéð"B2;4Èó´UbX"ij$O?¬Ñ"²Jõí™ ^Ú¨}KD/zd¦ID Ëè´^ ÅFHd„Ú#€/æÜ¼„Y/YÍü<”;£cÛ“òИ¯Ç½Mz^PÓ”Q¸ªä«‡@L5»YšIÄȃAª.œ¹{¥èŽ Ó|ŒeìB–^@@ž=¬ÙN& T7ÉÏÓ—‘}@ûÄ:ïRIwe¿‹iw4Ó»uÒ‡|jÀÙM8ú„tÞ-{ Ý·gï©`š÷7à©È0ŒlyÚ÷«ë8ÀIŠÊ¿#+L ˆ/©ë91×[F&ò<’A-Æa@¾º¶P&Á#⛎ A]°wû‘Þ\‡. £ï‰òϹMé.òn^f äQ,xïZŸÖe#»‰{>þ¿ ë@Ü«Ø÷ÄŠs;’†ÇKŒª€ç¡þø°,ÔÄ Íäqö•øØ!ÁÀgÁ¯c—öµ³ReK‡kò,/ë&PJ €$ßò#÷/B…bG >ÿ¤ö¯®lO)Ÿ…Br†D½l°Š¶ ÊäD'1Yp:æÜåPBtF †–š‘ÐÖ¶)OňòÅÖÄbOBRn’n›‘gJˆòbšbäÏÕ3*“Õ‰—”NY4ÞIÒr¦ORÀzB¥ÿuK›7•‰êËIo0Ž õѳ^V½J¸³t޲Ïíìžd%éù{&ãc¥…‚XŠ:nÃiùÉ2Ž”ëÈ‰Ï ÛôÆP2l&­CùL¯k»`¹½\$Çë%"aÓ^åB>W.‚¥²w@Æ’åÈLG$s±”X^Ø`ì9Þt~žà€PÏ ÐC•ƒ¨ÍJ–\=Å\:nµ=ÃPµ¦¯3F@N+'<èIÇW`“W…&Ê®9³‘Å3crj ‰ ´ŒÆC¿A=L+õµ~RÑu„d;;§0V$ìUP†Èb.ÚÀ|–|Œ:;,-áâj²mÊæó!¶ÙgGÏw#©ép#ÕJÚ..•Ë1’¸Üó½¬I”˜DæÚÒICÆÕÞ…ö$‚ –à/\˜–NN~‘GL\ð|Eèžu1Õ­,(Î&ÛvÊú ε#Ð9# ÌC4ý.(PYB‘C’âOùäÚF¿hȉO¯E‰ˆ&Añ@ê&ËWs‡›Oº¤JÛH}óA¦ì4…°9/è¼ ABjËØ„FdêJiGB…‚P-ýGn0•ykÏÞ\„èRã|±ôf JR’TkT¹HB1 A-‹¹›å$HR5‰G·i+¯0ƒ]i€{H|ØÊh;j~“*¨“SÕPð‹!jêD8·r’GBP­Q§¡x@,:—O#ΫBDW˜ã,àC|¡0=Ø÷T‚º*÷N· b°™Ì_ÐB #IT„W/¼ˆé§­¯Wæl3gA)g%¡ƒ€µ#öI;EX)âLÌL³˜!a‚Ç!ÝjLzH^R¹^DÆÍ–´ï“Ù¢g–¥(’!5Ä€ì 'd†D._JÙIâ2K€aMº´ﮈ†/ÏÇ]Œ­^ÙôiÖÙÿ ¼ ibÂÝÑ’o¹-ËÉØ¦‚$ú-é"ú2ÒΕ’0õ¹)b ̬2=žXÈ7%"F>òe öæjé\çÎ%TmGÈŸŽþ"!½M7c|<›£ãJqª¹9æÕJzˆ ˆŽÍmE#*b—çM!͘áÛ<ÒÊF/h,x"ïÄe'ZÚ[€ØÐ Eõ‹‰U¬j 4%Xçsb¶CI~t0Î]tK«f,æÊŒ$n€˜Ò$MŽ ¦Š›ö:•Ð7N=¹pbˆD÷5ŽŽ Nñ(&.Ia˜½Ùdû<0ûôó¨:Œx':áíÍî\™ê¹«u¬h»†íoA/7j/·h9 ø˜—ž Ë”¸mÖ!pÅ_wªWõê¨Ý¨!izQÏøN·ùQ”«EÝ yU=«P€Ijâ¿“„Q‹Bœ-yNÁ„bÁ+Xs m‰vYø«ÆZP¯×A±“6rOý¶i=÷"ç~o‡™dÌ7OàjW^Yoþ)×8ö|v‰Òº–d˜ÐfSŽÐVª|T¸„ñ^±Jû7A×S«BtŸ6rU,Ï,œÂƒê³xwþ«l~O"=gF„&Ú™Æèm SL×f¹fem`çb"‘â©<ÜL€Íg¸[9'½Â’?Bé2£¨²ý„–xŠ~â`&ŸXN¬‹–TAYaÈZçLA gtœÏöƒ¿¶ϯš¦ÒÍpÙN iPqs Õò@®ªºÝWð†ù1ö¸½ÿnIÂöª¨ì§„ ×ÿ–IÀ/-Ñ)c®— “Õð]î+ÅT1q¸Ã®ÀÇäj`¤û€è„/ Jµxl³ˆÑxVxÑ+j…[Ä)LÒ¡<f¦f2d`U¶I¼T¨JØÊÔ³w©©Ä+"É„…ƒr–‚¨‰c®ˆ?¢zÓxVìä§äóE¨‹¾ìj¤¿”ÎPÙùï†_Ÿ’i'Éý›kF÷24;™ ûäcÃ]i=’&œ°…44c°¾FîU×ÉÇsÐ1uíàaÜw3‹ÿ*“ŽaR-ÑX-²’ ܵtˆÔñîhó÷wÈq„m‡´µuÞ.)U´mG-'Bà~!¥ÜráPÊýX!¥ÜrÈ’_¤\ÅK¾±bn›ƒ$?É&$ö\øÑ>É] ;÷Ù í<þŽ9ûžª&P&SØ(Ê&9Ž»(ÉEYºˆ2Ɖ§qecË®ÍQ„Œ.‡Òí%ÐhØV„Z‰È¥nIú%‘F š”6Stf’Èâ§Y«åòL<P|²·Íå{UÿÁôÛ×ò(™¼ Û5§¦Œ• °ðÍÖƒ'nþÁ p‰õJ€²ÅÔ®¯|J¢ß”ãŒ?ñÎxÊ9Y‚?¨ë–KÇìé°æ Ú&FýøÅˆp¯&q+‹¬B f«Æ¼M'øóìªéKN¤q³CxòÀ\Þ&k d?Ôd'Z½®ñòœÊU)kõºÁ_(9xšj/}¯î&J—dé¦ìM.€÷ÏXm3.ãÕ@´Çv=(°WrPBƒ q&J3ˆø=å%JB:M,KläÒš€AÊfQéû‰wL^ Î…ò™)7ÕLêÌ"UäKÆ ”-€Ldãæž$ïõ®æ»ºÑ»œï¦Dï˜:ExEF¼lƒ¾›ˆ¤¨g™ÄmH–%¤ öñŒ#cáŠâ ©‰Ä@Âi踖CÛK™õaÈŠŽèvS‚ÜÆ,`2yDzR‚Ä94ZQØ L¤uµ'40Ü\nÒÁud)ˆá鬃Íl-wÆ(|ùî3ËÊ27³®3³n¤²?㾕ºQ…¸ŸàM¨þ§ E"šGV'Šj›ZØ)cžHèípCë/C.59Ï„¯ïÖáJoâ¡…mËGd·rTa59†K`ÏS` µ¨*C¬³gBýé¢ÌÃ(Ç2_ܵ2E”n€º~rßë©Q“p÷9si/£Å6ÔÔô åñ¦•M½jJ{‚®Rî±=èrL`º¹59`þcTuª¨ú@»Ógâ>l­ð}›rÖ4x£»ýT¢¸MMÎ6‰JU©2¸h@á°º`R\ ²m¸v¼ÆVåH<É(`º™­j4ÁljµÁ&_¹c] ‘±ÐvŒ…èS*'ú-K¬èô7U8À|'øÌ Ò$‚óK·ì†ad8 Vš17ØX˜,ËÁŠÙiOnÇš@½õiÝ#©b=Ü|´ËR{> £ã),†I0 ”½™*TÜ÷¯2f Aía6ʈ$ l–pg ¬ˆ×5i}ö CçzÇ('¼Œ0„™öâMa“f0e¹SIàŽóÎóöËXY¥ÌÅ)Àä|rqÌlkòè¯ô÷˜ý½¦9 ~„‹«dûÞ4d¿ÅDž@«E$ì‘G3zALÙ‡ùÑøá C6ÜLKˆç¤¥B˰•4,„ë¼§3"Åñ™¦‚4ÖG)Ü‚®D´ìå–UjŠ„©£Uõ¬nI äm]¬ä9Á'¨Òù¦6ý:+ŸíS¯½L~¸:–‡$Äi„š†ím€³Æ7¥ §äTb$riÐð>Ù²L"š‘+§‚U, ™.äg.¥bOÐ×AA§2aÉ‚¯0*K~r“ ´9‰|RúÁÍQ½ºu#ðžÑ¿]J$•¦€Ø2b|1«÷¢ÍÁº (òmå0áhLœ›eÜXMžê+6†ÄI2 2SI,÷"TE43¤H—òÍ“ÐÙ€²€3ªë#W ¾bG ÿ,²æ„)épëIf±UtªS`OŽ>uÀT$f-™2ÒŠƒ®¥[\E+êóžì¿|66^)²äQõ»h•bÈ$ìÑS±¼h{b;´àP@mãüÈzì+áï%ÈĦ>sz2ÚZ ë)#fÚ¹«4ÑÁ•DzB0u4?Aˆ ØŸ¼ê`4ô<Ö¬W%·_ø®D+yôð Ž„%2•|^ÔŽ¦ö_ÉÈÐ>·îAåê˜â!¢D[yAF+Û6’`Ôk‹ÆGq¨X× !º½,äHw0ffWWå°Š¡+H6®ÛRH4‹ó+ç ¬Ò:Ø¢^¾°ä$ªÕ³²»wÀ>-B>“^•<¼(eÄîw˜WÇn{B¯…§Î#ŽÚ)Ãzlr¹²Únd S}.Zÿâ!Œs¸›É™'FÀµ„2…MÎY™+êµÂs¯1¿úõü’£Åá%`\t…²˜ù0 /"¾`Lh7Çù/Ñ<‰šøžÌŒ¹§ H*@bâ+õ¼…ÆÄ81RLšoÁs¤:Ê Ö ÷É*õºsÔ² £‘>iN®\wc¯TMLx5x1íA(MgP›’²d¼Íø¥ÉIíšÃ ×'â ^æÛ„Gšo¨œc4‹¥Ycb¸è\XB‘>Ú)ÑlÒ÷ ©¦Iœc ɵ މȻg~[£"‡¬°DõÏËR1¾îMMdð m-ª òŽì<ƒ_h ‚rSÐ`1›Ì´\ð&¨rD dPOÏs¬2©öØ~RùR0WyÀbçàÁ”I½tJNzò„x¦&ŽÐDBAH*•Ö/nÖÉ˱nDúj}P¡XÿOر&í|Jü"nt€rÏ.äÓ÷R”PÆTäÕÌj˜þÿìý{ƒÛƱ' ï¿Â§ÀÊç¬ÈXT€W_ßÑ\ÎѳI최'›rv9$HBâc‚”­\žÏþvýªª/ÈáŒdÇ9k'Ô@£Ñ]]]]÷’˜‡ ±98æEšDE ä™UyRdJŠí#÷܈ {#Ñ”õF]¼„ø&%â‡Zæ¼ ò@Ú¬>Ü.¹¤Uäab/NZ/ÓKhÖÎÙ¸ ÆdÄž@ðš;ãô¤œz Ž@f˦œ#å ˜ƒHHïÇ^@zÞdçä{iÎp¸ú5œÆT¥ªGt›ÍBlœæP8x©ëÖ8&‚3|djÊ8uòk]QnæQbP !˜WCø,öIÙ |*qÙ§Óÿ\ b ½h¯Ìžƒ‡A /mÏ«áÍc‹æPh*.Æ\–ý"œ_D¡‰cÆ'²¹(.*i¿ iLr§ÊiÉ9ˈÖ)%ŠQ¦é1‚J)dVÕž÷Y½¢•7§*y`9R†ÀHÖµˆKäP%†&Ò’ÞéÌB5a»)Mž’3!;*NÝQ÷|Ð…÷¹¹’žx(ÊŽ€_Èú2¾ä ^n`¨ VƒŠŸ¡ÚâYdþSóe¸( ]JWFÔ>ÞGBaž?"ïÎyæÈIv"ÆÈœt&:|‡6Ñ}ñ†‡ðOîÈ¿´ÞÌ>uõÐg÷I:¤(Ž\ì¹ MDÈno‘dhÉ_.±†A„t0e;ÈÚ5 —´íq’oÊCÙ‹™ÝÿÈ“qÞ—´¢>¯4µ¨Ä¯qv%ýK©«ÁŽŽ9HCSWêÙ6’ärÕ“-Ó@ÊIeF"¦œºRç±Ò ½ç}ɰßÈ’×9òHJ9ë:GeÒWseÉ-c3ËˆŠ¤“e¤IšP°æHŽ’pý#êeÎWZÐŒ¨²¸\ñÆ¡"¦ä^Bæ ÎÏ9†¨‹ŒJ2­E¹—Ø!ÕÐ増—ïmYpÄgœ’üн\áÒŠzØ$¿"ÕW†u@å"P°’6qïI|¤\°ˆ”}pÒÈ´ŽtÅš)Â>8Sí™Y÷lH98Ýr×ê Õ»äéh쒞肎AdüyÎyš ÷WÓsOiµu“§êˆ,»}8I@¢7éB™Ô}‚+Î&Cs‡ :f¾ÕÛF\l:‚¢óLȃÇZß$‡ö!C͹H'C( Xr[ß2»ù‡¼ 0È7·å žäw›á9*SlzÉtÆIÆ(ö,ãí~hÛÓ~š6¼’ƒ>ÂB9G áÚÅ«]³Œ3#d’!,»üµÐÍŽã¨f9”ˆ…DŠ…–ˆÊ6?§sL[Ô  ĆpÔ"*Rt{JvNÏE²‹§7[›ÌgØ~m. û±Ù>”‹„ê;pZcÍ;µè9ç¡cÜl_νs.‰%£MþÓ]å±P9pÜé%U™¸Æä˜Ž“' òKéR¾sD<^q®&:¶GéÙÅó1qâ玕ã–S% k@>1™èØÎ²lÜ£ý}eŽú$¡1ˆFä:嬉…9>»ì …rhÐÓÑ’AMF“ƒÓÁrÑn¦£–²”°†žÖhÕïœ!yœj¡ì‡Å…̶!©‡iurÚ¶œ½5½ä”ZYÆaÿ;´nôR›ˆê‹ë¡ƒ{¸ ‡íqéz$Wì3ûGÙ™ †~Ù˜"óÆ5 Ù=Áû`ŒWÌ¥Ah…Ñ!/]ޓ䔱'f¥(-Ë™ä3H•bv×óKJ–CÖ¤-2‡v†àµL„6`ø¦óˆØ‚Kf ÌŒÄÈ¡—D^2$'ÀìzÜjˆª´í»‹³ëc— r Oœz±a]‚åÍ0]ÒˆÑßseÉ8‡ºùkø\ƒ‚w”GN‡-5ä¿ Îâ4)=E«“!L =ÊÎD(A•”)…Y–q% -]×0œôäâŒ046º2qqÓ¦ `ô;Eº}¥=?ïIq†SNŠö:— TrXÀx2Ömb<©Ï™Œ'M.#¼=åñpßM]s*s®8ÐCe©ŒCÇ0ŠþÁÇ„s$:ø$>gŸÄŽ'‘ñd¤-ÇxßÂ'|èÖž, ¹ <7¬áhŠbö¤¦ô­p“H3âÈ ¥AJfq†4È’”‹¿$’ñЗôo2â¤A•^=ŽŸ_&ã/2*Nm¦@éPH°#SbeùœÑ†Á‰—NcËœ#Þz„d þ͘ZD¬¸ä\/*ís©¿†æü^º©&L¡kt7“bì´_Ó.×CÊ›é%Ál—!H 'ÁÑ-U2;ú.ª‚]4òò<ÏRlü”Ôò´w)W X3³ÐLì7y ‘É3®¿H{”“½âUø€K/3Ñ,=Gý< 7²k¡5ô°"ºPýŽàH¨€á]ªÇNß8ÝSBc=×4 æôÜÎé¢ÓèD1rÙø‹^O ×´bÃîÀðiƒäRÞñ뉊ÂѨç~“ί{FQèAÜɨ˞Ƥˆæ²ðÄcHs‰bŠšæEô-£ <¤ç|"#‰¬Läo&‡.â’*a 9±ˆéÔü{ΓLë¼!9·€üÍäïPÞ` “/o€p¹°ˆ)ºÀ9pä/uÑe朦†5ÄXÒŒPšþ!;£§øA75bY/¸jë4µ¸HOÉ!Ò;ÑQ0ò?r(<éZ8mþž#á/ç¼îCÅÿ©-3Nâ,Ž«pB:—"ŽH»( ûl- `Ñ_rßžSÞ3¼;ᯮ4½­±ƒÃ‹èù¹8ÇbsAMAxLCÄ'R9"¤Ë&¬f?.¸9ÇÅ(¢p¯ìb8rý -3%û(‚9B²-J Îa[”œU1c} ¥¸ WUËÎ9a±EHn`ÈÈóë9ÈšF«8oÚ®áæpàKn2PH6ðÔOÝ.‡kñm÷M‹pk a"?‰ Η®#Ël•õËpñàš,\€¤s}ªìŒã,í \<¯&(îLàÉ–…£š„}Ò%Ê_ŽW&“XkrH-×cÞ%Hq§àäÿé‹Ù”³+ÎIÆ¹ŽªÛµyº Áéõ$îþ‘¨-Pgcn÷þžšé"£\¨ˆ4Ùç°8Ò~äHwX¾a>îrZ„Eˆ%5ë}>`Ý5—>FÞkkØ+ XʨuéÓ3Îí…ÚÅäºÜ#–¦K%xzä·Ü%0) ÆÒÐåXŽ '3ówPã]jæqþ——»/jX&ê<÷d§[´In%4?ƒœÁvƒ£ÌÀòùÆNi…i€”Öƒó©!y [$I;Gñî}xVhº>NVi‹Åœ‡TŒW0Sédp˜.`Ë€$9æèhIî0 )aŒ[U§ƒ+>ÅÎÙéƒõW‡äˆ( -^Ÿ–`ÉøFi6ÎEëÚEŠ.“8âD|½Q„Ïx¸e¶I2É_Ø_dR‚j5OÌ•hKU](rIØJÊ8–% 84k1Ërv»L©͆ðs‘`£uQa('8&8r¤ì –ØQ–tÇ£+ÚEtmŒâ±ô e±)MÃó.²“¢jÌÔˆH°ë"A’9°¬dU$mú § 09ØÃDüλ\µêœ³ÕKÚÃ+%þC!þ U¬5\Ä)©'â—=“IyŸžÂ`ËJê¢s,:4u¤×@–z¡oˆÇ13Ëà0=ä:†–Žpþ÷‰|yAª3B‡«®KØ@ßu)é1õ`Ñá\ib„I`ýyÆñ˜#ÎϬ%¡y!l"·O$Û¢-hkb÷"™Êb•íVs„ÙSü¡­™ »I_‚áéqE:~º0¨1ðv@å ëö¦W¡¼ÏN„é$ ÃyEꊪÁËͺÑ+¦nÈÄ!£¢­Ñî€?”\‚J€´ÂW‹dJË{Èf·KØw‰ÿ¦œfªH7 Ê ðíS(3—Ë„78<<Ô‡µ†Ò¢9irÉÕ½H&]tt)©™ÊÒŽFÁïTt©dÕ‡H9㆗D¹úÐláZÂbëUDΑÝKö¥VÝ®ó"¥¥éJCN0EÖî„ÌyçJâ(å8£¢@ ó¾ôšÃ!ó®.A§!ÛQÎùo¥…®8ð_]'Á1 `Dò8&cφÇ8zÑ §{dÚEžM½”<(®z)¢a|l¾´Ø|ÎÎË#fjØUóõí(`”>„MÎe=½@¡#ü‹â±(6‚ÅIƒ<t Œ v?§X­³>|ŸºÜ’4#dÐ@1C É €ZBJÕgüíÁ¯ {@N'L#Æ:*Ÿ© ^_â/E¥¬!Wd-’™ÑFAv2I#q˜Y ˆr9˜ ‹`F!N#úAd@šW¸'²9`Èy¼(Á0(j$àvX|ÚZ]¤¼LΞ@ÝRÜ#Õ)mG$jGA$MÞ‘]é*á¹R9BÎÕ4¶^LSWœ@àœ©PR¸áµFì nöÃÅÅ8‚ËLÓ9¿ÈÈHA1ìgü>‹ŽØ¤Ä@  õ )C®8‘€ˆd?€¯á,û¬î0tà9Uøâ•D‚(ÇàZ˜’S>çã/§ïÐWÂr…;á÷ ߯˜Ä«ñ¾7"ÝùðÜí|¸ÿ:X±Ù%¥QQ î¹ìÿ‘Ûÿ¥U bSfÿ«gIMRp'c‡†Ë®äc!"¥ Ž…,_TF“•*äL©eM97 I†‘…g²#{x+cÆù âðBþÎ9¼0ë´4IÎEFOô9”d,Ï!8@§ð,l ÂäžzÏp¶R2ß“_2òÙëÈ£(:޾ þE&õôÀÉS…é Í~ƒcÊ‚@ÞçæEæUÔ¸ œ~rá§KÊ`v4‚¸a3øµæC¾Á‰þÇä\®F¬áª a‡¢)ôÂBÈe• Ø 7s¦¹þøeBRl&å29ôþêy³± œ #°¼tÁE5¯Äó°Ë2QWÒÌEÈidhá/ú¤–ÞØŒÂä,Åb·±®œqpl!­ûˆ¢Ë†C®X—q͈a˜?XÉuôg–§Š(ð¯¾qš.€Knüà¾.qç'‰—œ½ôP‰ð“*Âk^㡟VR’J96–IÊ%1"0ÐMbG²Þ °ž[kžP˜±Ç"º!PǯT·áhCÓ¡_KŒàçzsP¶Pv!cû:1ç h¡-%$¤  ëË"ØúÁðн_ÏÕH‹T(ÌØYÖÀ‚c×r4È=û§Ó¼d›=;Ðꛪ3=ŒíW Lã#gÚH‹Ã÷/ €ŸkÂ\¸¹‰s‚Bg×i6p‹¹Ú;ò1É#‡‘ŠMOɱ<–&6þnµÄ@sâë ?ò9÷ˆóŸë#Dš¹ 3wÉesØí¦ÇA)'/6dt蟞ØhYß?ë‘Ô%ìî"?¸5¨7xè‚Þv”ïãRy3þ—r! ¸Z…›¨ñÑvÉn[ð÷ }B%—´¸ŠAkf¯ˆqiŒs kTib‰‡2o’GþM(ï¥ùP’åUŠ7ç¦Ákò4SN-²9éùa8ðs®Ç¡ã{ÕQ 7Ñ“a—j¹rÛq/âs´Tô9%WE²ž¤!±>|…°KJÎiõ&DúäsΓwMAˬ=I\È•R«v`ØfÍ àð#Vég7¼TÅ!§ÑDñ«‘ª 8ÚÓþB`'"›Ï¹DiÄ釥05—Yè^Jþ.I£™hérR£0¹0A³DËr…DœÎšäŒC9<ÌPí國 J©™ öÙb/ü—<Ø–!Ιw€—˜ôÆÈX„`ÜæÝg$BG̰"{YWTf’Þe?ÎŽ@ð&%-ú¹Ä‰žÂ,1bî•4¡XØ~o$LlŸüša'KHœGó„#ø†¿ ïªs}€c㮕ôï¶0 xŸ„K)Q‡®ÇÎn$ÀÁˆ;„…/Õ“šjÚÁ¶c nm¨E’–\ò/vs»©S!XHdóæ„nW¢ Ï*®^€ˆ$s°¶ƒ‚'×M¤ ßâ³—qr N+$3Óãs Cæ]r eãò%‘M“u—äƒ0î^RŠD8Pt|O¸ÓhÝ%‡ºãT Éy&1íÀ×¢êÉ³Ó ¼RÉ«$Âeœ«’‰2Ÿ¹vI–M©vr!µ;Ι5ä"qfm/ùJßÁ¬näu8X )¾ZìîmpÉ¥”!Nˆ¬öËdÔãê1 gw¼âŠ*@!m U’0RW»!¥ªE”÷g¦y•¡²OFrë¥IàÒšg¬ÅÇ6KÇé™!#YØ‘Hº'=9FHqø<''XÊÄ:žZ³–9/8Ѧfé’sÙIýsoŸMC²t.HMˆ2#fþgT5Y.@Î3d³Ó À B y$x†cÀåpÔ! #Ê(# ²œN‚Ô­MQ›ù‚]âTîŸ÷$½«³+ú¢!(óB‰5ݲ zi©†ÅÅ/‰ù„2´Ÿ@\`å#yßDâôœ£ïÁ1"‰ìP¬Œ¬7l BpMÖÛ½kß%Ä¢L2È䀓M*«:/,$A!1(¯Ì_2'ŠM93ÆMÓÕX NtÈŽiÖ\©eààÕMôE¸Ã•hc†ì¥Î€gÃKÝv¬úa ZWÈæ=và…Y¾@r&]ÝXŠDð,;ËD*~\òÎI™àuäÓ*ªúQ©+ÒêÑTÌz—l}e÷)àh–ð’ô#¶mŠ 1*âr óK9†J]¿PŽª® -Qc’áK7c–R›È뀗ä16ÞbØ ÊqŒT„ƒ³ª¤YJõ¼diQb€³ÇLMH!†ç( ! @ œ ‹ð³:gÆé Q5(wÉ®!좮NÖìšçé,•šÉÉ9^ì\ι3`O=ÅŽ„5&ËåÅ¥è6Hì2A¢Cöœé*¹* ºL`¿ì¢VÒ³‘š^¹Æ:!Oÿ\ý ÎRˆ2qjM è¨%¢rÅÙ´$·1gpÖº}Óz!b7&GªõÅ2R=‰æY÷JLˆ«ar‘…º¨¾q9¢$V) ?ˆ¬?çbl0RR9g,n'c(™J]£Â9XØsÏ5Kƒ7Î` ÐV„Å£2 ÒHàŽÃsø08‘"DpÝ9®ZÈBr†Ç!=»d§(rÿñ~“DDn¶F`ìñÁ ¸d\PİXÄ]ôÅ1ùŠ5ì$¼"X²'A)ìéò©F̃íÜú2éIMÉÚ)êèpR.\AÊKU•̵ÆFbÁŽ*ìHv®s[Äœ|«2„]“·U¡Ø2pÍ>†šŸÔû¢öB†SP›qy„Á£d ™}ù©H uÒó>¥“ƒªÈŒ05Tga÷Øœƒ@×#Ù˜ °H(ü4-éÁpA©;†Œ…œ1J%3.v™$›ß£dvÎŒ¤hxÆM¯quÚñ92tqä,ÊCµNа+,1Õ\Â[‚®µîáqÉ‚¾š¾Q‘˜mà‘Qúis\{çú%äœ=Dï%²l', 4b‡§ÛUˆ¿½s_ñ`8x¥Ùº+'3;L”/ÙI/ñ\Õغk JxC¤~àHØuT(¦Ì™`0{p ¾:s¹]ëþ›°8  :’‹™Öæf‰óæoCœæ$Ö^vå,IŒíªèÊlf¡Gr®³Ê©s]‚€í¼b¶\'4pºØaWç¼ÖDqÙ9ö»Žù’퀬'ø,cUßi'i@œu„ ¼¦0ž\CIØÎFFe:¹H èœyΈ3Ý€}‡óªD^Xg¶Oz‘ÑŒy¡»pçO¸–"…VJ‰Aë²+<½’sË”]êÒC 6ÔÊQ¨{Fva˜ú(ì¯'UðΘõ=‘؇<•Ì£H[؈.x͉<†Ÿ1dÈx·$Â]Þ‰) '!t÷ »¹†(üÅl ‚âGä!FÇnŸ',Öš Gôè9Q6.ÑËñwY—v0„½Ô·€¥£ý*¥óg˜ö8G×IÕ¤u#ÈSHÆÃÁ¾]ÄêE(Ú@•é<Ñ´Ãe“ÆJþ2BÛP¤Ås«Ê$Ü@v•ä.>Û3ÉkÄé¬ÅêŽÐ,mÃòÞCÕzy•á@®DÇÊ–1ÞsÌÓÂö Ṩ@€h-²‘dä¹þ¿Ç©k’sx.’Ùa.R¦’†˜¼Ã9Wª¢krzg—"€Ô–¼é ì¡ #—8E yvÙ;ŒÌÁA$n˜J™Å„Òõ˜¶‚¹ËDÈDÖInˆ2ìÃE0ƒÄB¨JJÌóÖ2JžÚ½ä„;„*_“ÓH•w&˜A£x™Ž-u¥cÉ98TïEñ‡ûUw„Íæ‚½·.*bD×^(zy±râ ~ãH¬Ê92ª‚˜'ò ?²‘€'Gùg#Ã0i¤³‚ãÈЉ@ÝKŽä%¡0}<`c™¹pΠN¬`êAìÌF’†šeÊã(ѯ”á,ÍèbÌUÏPÈÖ` ±?C83qXj„ž_^Ð8)ß{(PréÑP]uH!IöŽ=䔣ìx@ ×f¢–‹.\—-0H¢pÁáyHèÃñ‰)¢ª¶HÊæ Á¤Ùzðˆ™¡D˜¡®-;G-).™·1ËÕi§tš\@UÏI«)D#Ò“–››—±„Ïù;Ê0VQl6~‘<†2gĶ™-ñœRŸé1IuÈ/)5 k‘ÄüÉþ_âò ¡+ixÅùïh›QÑ Ó”ó¨wš(’í1z\¤T;ÑbvBóFˆ„i@m…ê^ौÈ#V+^¹}Áۀ扊m°Ùû˜OjTPEÂ-ïúå ñ€ß6Ðö•œsÐ܉z\!ÙžTƒ—Ï{r–Rõ\F.¿cŠþ%ô’b²³s ý…ŽR<ÇÙÌÀa&ŽIÙ*I’üÆìE“\F¨V›&°ßÒ1‚ß=&ÎÈm…$MÄîC 5Ÿ„ø¸²ë‘µ±åþ9×Å$–šËÞâx"l`ÌÒ'é 5…&g`¥6BÛ±4ª§ %ÍŠt§G×ïãéÍõI§ÝgÃlSxý>¦èú„¢ë© Y€9á?¥SÝžk‹ìb8>¿2gõC*pøœRà¸~LÀçúÜÙøª¶¬—\˜hÁœ_ð%íæ“ H‘”‡Ý0Ô©ÔVè zü/ýoŒ4–Dýé<d\´ÂÀeD¹¾©î ׃œR ØYÐ7#<»ê{ìC‰ö™œ’ j‡sQ»—râ"}ØX¨Û³"ò÷ ºBTõ‰Àp Pœs–Ã.WCCí æí8{ÿHª×"ÐÙSÎëŠ`´qW³~’’IÈ'r~¡^"€¦îþfæo¡FÌ"B3 "Ôшêb¦ò/¼iH)C‰;(Åà’MáD:èàg ËŒrÙEü’ÓÞ_qÅYöÑ%ÿÆÕ©½"*dÔ§°k\£^jO>ýÁEDÿŒú\èß(­wÏŒ¤‡ÁœöTc’}4hÒHkΪc8þ“ãÚ%ªæpⲌÙp²Q¹*f‚£QTÔ„xXÚ4}š<¥]¤ÍrF‚@DUùàˆŠ´Tñ¾“kZÂYÊ)uô;ô!‰œ(/L ®®ð—B©2d— Y ©‚ÓCp1ÜÝ”ë%#ßiª)òeÄÉoHÄPÔ¿¢5”•œõŽ\Ñå_¯zÏáÊ7BÕŽ>ªH‘hN"Ò4÷‡gÃþ•yâ‹m52O%7{ÇÒð†W¢Ä>ãlž0«SyÔ'¸B3tÔ¢¦”°ÒÿtQZ9á}Ë%”!­!M Н\ò_$̰¿è/g€£,)IçcNnEù,©òÒ´ö8ƒ?Šû€[F,X~~”fóî8AöÔ ¡p#¢PÂBýyÖ3ëmpÏ@Ûtr•"†rŸ!æâRJ7Œ)#{2„ºÏ\dWZVë4*®–ƒå–SêPtÄ%bÇ¿ˆ~HÃÙ°8S"­&cáúáØâC®ë¦.0`½FZ'‡,×'=¾`çLô…Áéçç—ýÑfß Õã¡~Å_p„ÄìY—ŸI=B Ø­«%T¦\J—R†iëè/;‡"±Ìù°+ÙÖ9ßåH¦ôùP_^ò_ÔÀ¹Â¯²Ý!óq—¬ X[ÿ9ç\ HÙå!íEϯ\²‹lªƒ„þv¹¶W £H©+†DÕȸ67Ÿ$BÀðâü rc¼þ‹d¨>†Øªç’ˆ¦.ÝoúKEl#4BIçÞqP#No7B9 å" ¾cWöïsýÅ-hõ"ä>¥Ê|æœO W¡õ©ÌÚ…9÷_˜£;¾8püæëYô¯tãëífµY˜ïÏóE±~™ïö·æÇU>Ùí·ù'ñ¯¾ÉËÍj¿+6ëØP¶Ùm}›ÿÏ‹bº‹¯é}ðëÉm¾}YüÅ<ò›|·Ë·ÑŠÿðKônÄ¿õ5_Oæ$N¢$îÆ×›ÛØPàØˆÃxbøÖË¿ÉhëÕQgf q֋߯i/¥‚Õ£.µÜµÎÚY_·^NÛ7­e~“·­7·+ómm®ì&4vÞÚÌÛE‹úL cnΘÑ(~׺شËÖt4]´æ›m{.#X´Þš[ù¶ä[ɳn;¡ŠžÝy>¾*[“õº½j½k÷úfûkÓü•Ù.íΠg.ä2‡¾aÔ"ÌÁÌðmœo ×¥ Š+â©onMoï¶ÅbIãkº)Ý홑OÛýá0BS3Œ­yeÒog’ômt3[ Í߯žšŽLæß?¼øöß¿úý·æÛÙïþhúC»“РϾéð`Fýqô®õÍÙï¾ý£Ojn}oÀ³1ç­C_ Àç­ÂЉŒk*0Þb®;Ì7£]düíå7æÊù¿›.þgÏ_üæÅ·4Mh1C®^|û»Ë—/±†7­¯¾áµ.gæE_˃ߘß¾8ÿýoÌ7P­¯ÿÍ×_½¼|F8Ÿçvë2-2Í›iŽ¥»ÙléY¾›«ò'ÃŽ˜ÿQ±¥Ò«J„!ÝrbÆH´ßd›æ~ÌÌk&¦«)z¿™þB@E#ZÖ±{æc÷j³^˜[o5x¾)wÔ †™¥©Á¢ßÊÙb˜Õ$éLL ÿò왡ê> OâÌœc©%á$ _NniÛ`&Ÿ´{ÔßW¼…Þù÷†@&4ÆïMÇc"çß™Ÿ£.7\iÃ^š™qet'´7K£kÞeÚŸùÅØ2YOVïÊœ¨Ú+¶…+‹›b5Ùt7€~#€Æ!$ì5}˜k²dåS³ר9„l4ÀA–Ïžµ†Î'f¯^a<ZåÎtÒÌÄå•;š— G33êàf9é%˜bJ{l Âyc)‘LÄJyI›—®ÐcéœhlmÕ.f…9Þ²|›¯§yIäeGgÔæY;› }kº¢éŽF4’ò÷ó.oK” _Sê¨7UÞ~¬r >M¿iÌù°š®6Ø*æe &{ î‘Y Z„9áY»Oôç+Ù'SC–‰^ó$idcœŠ“)½¶4ó»1#Üã°¾ªJ›jgm@[”Ý*ò"³ûˆìÒÍógæÛ·<­|ǧÅÂì¾ÅžÆL&ÿáv›—%Þ¶àÉܘ ³z‡Ñ$I—†CƒKi–àF×Lál-ŒÅ k³Ý ]KÀ}ÒÍ)ÃôˆŠ;ZðW»‚¶òŒpl»38lþîrŒhMô˹·„"&)ŽE^‹™yË-Ñ’Ï¢ÓþZÐb²ZmˆÌ†’åÁ;±G¤Sšùgò#Ų´±Šõ-Ž©ùvs£œ Á,Ê~;Æ+ÉRÑ……€‚ýƒ>hM‰iy-ë™Û×Ó>Åq-XˆÎ[»âç9€lÖéÚ¬ÌLwÆÌ{KØkÚ¥S€œñfÍx•ô2ð6tªálqt%÷¡Á#Œes Y¯2ÝAƒ½[On¨3$ÐcÞåIÇ£P²Œ9;:™ŠYîïU36°7†ž°hbÞÞOe“bw˜öÅb&àOék$†Ð…Ý·†Ñ‹0åÁp¬ÈKÝé¦Zð" üu±×f@ß/óµð…KseÖŽäͼûy·2OxÏÍhC-ă4$bª·[PeðÆÓ=€š¨ {väå MX‚Áä·´ô[¼æ /¥Ù«ÌC0&"þXÆk)8ŠK áj G×-ûþ¦ÝðÔ-XùîªXѦF6¼Y ÑÂGcà†PÍгÈ#Þþ`Âì\˜‚Û;Ä÷• ;‡(”é,j é ^—8JlPξù~=ÁƒèOx<âdív‰”+ º^á5±œ"¿å˜ Îr ÈšøÕ -÷„èÏ­!8ÅäÐìLZÖ‰;íoZ˜n?a‰‡ 6–X_l~·Cr¦üU’ШhÇÌü±=¥Fr õhWÅZöéüi;Y¹í ÖSz`V€ãµÂú1»WPE ™k+¢ˆ>ÝÜÜ«œW5MÓ¡á„Ì`^"6¿ €Oæ“ÒÐãO5Bº¾Šv¼éf?¡Ç¸`[_¨ÅmE\îq9kàµRCFR·üC•†Êtöò ët”÷i™¬Lª°«œæv?rõf½Î˜Ñl8ýçÚžUË€+óà@`Ø0KQ0ΖØ_³òCád…³addú[C§Xsszɺ`žlHg/=×NǬ =9†È<»Ýƒ%á6·Ô@ôoõÀ®€¨Ô–O­Ü\)×cR1èf²5D'¾Ú˜y÷úôÑÎ-ñ_ 2€%³ûRPl8ï°ÁTu~;ì¬ËöŽºý”ÇŒÍc„wåÚÌ6†Áp4æ0,é¨å.7@UåbrŸ‰1ûu¨ˆ‹åÌÍ’bˆàFp8ŒÆtb¬9÷Z¬gfA!90¿a¹¤€Iš‹¢_`ãÜ Kê ëÎ}yì5Oèf²ã'–XÉ<²lÙ+ oÝ)…õ.K#ÖIÎ}3_>Ú¯}þMNߤOŠŸóÍÕÊÌ*›Óàf¾å#\bC‰!@Íé$ƒài&·cf˜®C'“[.ŠÅÊ¥,0—æ„ßÊâSTQÀ’—¡ÖÝ®ÌWs³X=ð‰—t yáoá©7™%ÄcÀô’eÄœ¢'ÁôùÌ5H…0^;áÒ†4:@dA{U„ ¢çÔonøšÍ [ÿÿîo ’b <±³Î0L8Ä¡ý-#¬rn>ã0‘“Õ ÇòUÐRß°PA¯0¸ÒépLV…À°Ç ÌF¸ú7žòf½ØúY>ÅÆ0¯G¼àfO?U3 gòƒ ²é@œ3Ú;àŸ±ßY6†yÊb«Ì#ÇšGÖÑÈD ·A?Ç,… +ùé [†`Ô‚Eý{ÉC…ˆqA‘~É[Y$/z?Ÿ‘ÿ0Íow"¤ÊNŽšIAÌîa&‹ÌïôHk˜Ï鶆Ì̹LëBQåÍj­ü‡ t†aÙÈ %MÒ1+”ÓgI{@8ù[P|¨•C¢/DŠN¥4S#·¤v©t >€X?¯r{^EÁT´þ’o‰A.&>–áPžñ©zÆgmÊ¿Ï[¾Ü ›ÉȾ–-¹fµÓ²ö$ñºóg!çÏ\ÈĂɱ^³^´eVà›ÞÛ×7©l`2Jm$ä\84‰ÂÏX®Òó\YÀ¹ˆùÉ[ 0×ËÐwȸ#ÂăœL¹°`¡«càïx+ó¢w$xÒ˜7+ï ƒ5”¹ŠçLFØÚRŠÂ“uiL´y¤lD#Yt ŽgӪ϶Œ³‚˜Où8Ÿ\OgLÇ §O>Ö_Kúõì™áÉ"üFó‹bAŒ´2h3õ9®mY;HÀ']`<8ŸÜŸŠ”ÁœXãÕØìó'פ§Ï‰<Ì<úNËaúsJOך™z¦g5ÇŒõ-¹ÃöeE³²/ibsáBÐ%°ß2"õ‰ÓÛ´þ`eÉ0e2ðÊ ©°]/ó©°¥é³Ìtý§oä‹@óç§ ( šdöªís†8k§¢§_ZlÕYVvi?¦«ýLõ*<²tDp›ßÒBS˺QžÚ¨î;`V—NôTîšD<Ùîi¬êOÃYo›½ÚÑÁÇìŽ_1j¢¡ÝfÐóFY6¦Ñ13ƒãŸ×œ'¸¨!Æt³5`ƒ Fˆ±ˆ™³¼uMŒázþçÐtŠJ`)1~7Ä”w>ÉE"ïñ±— z´!.ÍcÄæ#­,ì0ô¾× 6ñèxí8KõÔIùÔùã…­§LÜK²;eRbîyZ ]¥Š<ÌÜð=s ß³¥¯•½ÉR‚Ž—B­±©©c>×afI{ÄLX`¸5\3åa+ç¹;q•+Ua†¶jd9êfùH»Õ§Ï¿ä!s êjw÷ùT,™ý>Û> {ßZvyC•"{æf{Y˪åüsxPšæœÄ)Âëëö:¬î¯--è ⦧û­ê;_+Ð…ˆ”æîìæç3t/õÔ3Í3( ü*å=91ø³Ðí1bÔÏœhauæÀ¢aJcãc ¡œç)ÿ¿æCg3·ÖfY¤"ÄHD¥Y2?™-°µæ›9ÏwРid‘liuj½q…ÁîÂ4ø0eXY¼ÆÁñ*ªy¡-T$¬pNØÝãa?REìҪÖ¢3;¼Ì­éXÊ<™‰º‹ÔS%YRßA‚¼…ŠÖ’¿‘È”~š÷¼^(~Dýîˆ6ÈšáE’íôr#Zf‚£;E…:gÉ®‘ƒ7vÍ  ã¨9 ½=o `SKÍ‘ô®õ;Ù f0†lÁr¤|İš sàÆ,E•ÙÖ¤aò†xÉ™p(/Ä&/ëC Fý¬Q É|²_‘Ž@:JQîoa±®êÄÌ,"³wÙS±?¾´0ÄiìiwI ÉhD‹‘±¼2¶âJ&‡ÐC>SÃ8f豌`º’óá­âJî‹Q–û™ì ä¦fl¤¶t4šŒ¿4/#šÅ’ ½Y þ2çu»ÞFÎFLK¡;ë‚"mˆùýÁ#ꋊ.Gì9Às’""¢Ì¥Ð–ªrVOç‚5dð–P}áªý–MHñ)6Ϭ'„{îèâÓn»ŸîˆÆM¶J+È'l³$PÓQ8m÷ ¯¶†/™lßñ^ T×à⟵‡}Þ˘Mý€óåsKWTL}+`ü¾—<†A­UÂüƒêsf|sJï+¨º':÷D·#Š•g¢X!Òúhà†£ye¯-´Ù_í%ûäãú“ª?ø·ú¥/þ"'i_ÔêWõ_µÂkl»>²ÿ¨÷ö/õ'­J  4ÿ±}nîCc 9;—©îmi_Éê¨:ÓÄÆ;µjˆ;‰â?À–é€Ëá;„U¹QcÏf {è„5U¢Oà­šõØ"!LÖ­‘Gaú…}dÖÝ´þÌõ{D"þôgï!Q„°ØEî™”ûêxÏÌŸ±ï‰²áÏüljÏ£aÎ- ÄÉ:5ŒF©›wØB ŠÛhÒ2«½o;÷5ø9:9[9–á@ž1¶ŒGÄö9­=œb­Ö^µ >ó`yÝÉõôÏnͽ±ðPr^!ÎÞ>Kzíˆ3Er}*ןµûc¡[kÞ‡B·x½î˜(#]°\1Y/r#< «€åPØó¶§©½öDEÿ‘§l£&ð6”¡Ùód)Cß%2&`P)Ë}³dðÉ(’úà-´ß?uþפó ΩÎ7 ÎH,2mò«/œ¿ÚiÔAn³e+8Æ“%¤ƒ ±¾QbR,ö¤Ð.œkãë*WJ®š uN Y7þE]ÿd”Ãêžõzɸ˜’…Ö©Y»×‚ñsC*¶8S8’2Uz¤j_<ê¡UÇ>µð©˜!²›%¾Œ+8©§~JÞý!À%~VþzÕD!gŽÈ½ŽÄël_îAÌ…}'§5†Î6Ì VèaÊ4ÀkÔwÐwu©¸ˆ½æE$ìÄCæÅ\¼o–a¼MÈmµWQ5IÇ[·;O§6†ýBΧê*{4j7iH€sß®px"¥#-¾üÊsPÔÌ«‚¤Ùâp°¸£>8Ì –ñÕ ˜Çž4…‚j±f…?Ë¢‰˜(ßG:¾n_Óý-{EšÕJ™iÝ‚ËUÓ%ù‚‘`æ–ýòý{ž±·)ŸX#Î ŸŠê&´íI,¬hBʨÝ'f†AùGbŠp#E`ßHS¤Â#¦^Õ”ŒïÑ §{#Ô—ìÐXˆë†x]—* y^ŒA”ÝI9Qî­«–beþN‹ö¶U8xãpLÔ–Ž‘Ùæßí‹­Òu÷1‰ÑDÝ5 ¡¯Kzæ¶ùn¿…ñB3G¼Ôˆ ÂÎÃtÆ»¸?èE:¢äfYˆó8߬É=m= ¬Y‰Êð¨ð#¾Ól_*\Ș¿µlGeÕO‚†=fìÊ¥2Ô4J¡æËS/#Ö½CöåÐÛ—0Èã…Ã.ò @4JÝz³½üKÓy“%ÖA³Cèò!ÀŽgAR‘‰4G¡~G~!x¯‡~s» Lº":<Æá±í¼>ðhK½g³Mº,Ü{“úØMêk:üÉë›õ³©›roH™ˆ=à˜DŽã‚'ýˆ®gʶÕd87™‰JÐ¥ˆ@ ×ÁáttÀ~y$d3'CÔ±®‹üËÝÁøØ³Õ_í$ë*ù•ƒÌ_‰3çÃÃBDvGÁÔ­´øéxhöÚØO¹â¶VÐT(ˆ––ÌÛ0œÖDw½² ‹&-êÞWMŠBÍ+ª ^Â:ò Ò*òˆF¥`uãß%Ø ³ÍŠÈonãéßÕ.ÕV‹¸ÞнU^·Kî8eõà¨*¶|| oËž÷;/Úô?tÔí)jS:ÌC‰ ªû­ªäÕ« ûÇÜ?ë-!GÛdÿ¿¢á§ù–L° JB (nØ~. JÅ- Ëøêkf-T[9³[ÉÆk¨3³;óŒØÈªJkSoúŽ×í×ͽ-~³mKà‰9’Ùü0ìA ’©öyäñ¯P˜ß@Ÿ˜Mv–ª‡xï-*ßç–‘›¦ö†_„ l†–s Òc®ñ²…ÿ²wÜÓC`Ç‘†«œD¸9wÜëóM۷΄N qCÏ´íÒ´÷Š™¼"³¯ÅçW,øo"íŸñ}zÙ¶Ñ‘¼¦Ø$ ‹‡mÞRWïMA…½ff¬ÛE.šÒ1 ‚JýJ©(Ž“î«öSå(§# »ah“8ïÛï6†(l(˜ŒÌ 2oF!(kÙUns[àÞ¬§_Ìhׇ°¬ä¦ÇÚUo+Ы| eÛ‹6‰–.øa®úðeËð‰0جÞiÈ÷tn–5ï ²а$tÇaXó8öšIlŽZýè Ë”P¡˜Zω¹UÜ¥CˆÈ®ë7~h½zŽYŬ¨*Gdq¶Aþ¾j·³^â(c¨=õ-´8³{•3»¢Ññ”×s«¼&¿»¥T]%þ=‘rsÖ#@‹U {éy m‹YîŒA¤¬Í§ùL‚7=°» bŽÅ+)K²±5nÃ/~4^KÑq.!ÏA J %‰x’gE–,[¹÷{v.΀aM·O‰KðÜWçÌ,•(³‡"Ò„gOnùQEåp YLeHdº}¨W¯<Ä{Lú(kV3µíXäWî¢& ba¬3Òn™ö;¦2„“Øàëxep¿pL( ;–ѹ†3¿Hm„ürÎÁ«o&…|tö|'Fö«™K,áÒ†:ߌw¬ñ#¿vÀê[ÐQ_±ÏjåM­Š·ɼž?R/š×¡Ä æ§ ÊÀß3ÑÜ&…Xx`6ìºÖ¤®³¬«ššWíL—ïà(ìIZy=¿–ž£¬Ÿ b>þ•é»ýñßþú÷?ýùÙ—|ÞÕ|MG8û–Ï…n½zõ¸½è•ù[>ã <æQ´õ§ÿxõjýç&hIÐ ·s•îKâVD Á™NàwVñçázŠ1­¿2iúûßþ÷«¶ÿëofÿÒ7Ì67ï#íÀhUw.™Õ|0:hEh&ã¾ú;ýùOnSjøàñ¯Ö2`« 3Äý»=:ךºÇàaƒiؽD]¿ÉoóWô²ö_Ó¿µèù»ž¶Ð“­i !½ ¼øè?þÄ>æQÕÕÄàƒy½¥.s3àב›ì ž]h#¼ÐÒ f¼Qz=Ž8õ k |bIqD‹‘„`X¯?ùú_þƒÜU{Q=ñ$ÈÜŠxŽ>wšáì °'ßÌ y 5s}_€6!,]„'?‡Ó\òÊyw GY\aòaÅ Uì»hžyOŸœ ¼÷0çb»4;a—à ^g¢AôÖïÞ-rp?ó»wû5_Œý‹à‰ÃKNi/I·y·áÝ»Í|N~…¾•U£¯Ù‚ íöf-:-Ì0Øäsì·O¼$)Q8)±¹ÚÄ%…×Bø#"!àèugU­KÑ™ ˆú}™‹b˜7 C·Å¦*ã TPß–oÚš»TÈ”D¤j‚qø–ÖÿÖ&6Œ)öÏÚG Ň¹$gŠ4;ÓRCqY—£qåÀ3±£ÂúqÖŠÌüDK¼¯§ Ãnˆ<´ÜŸ2*jTª¨òÔ§[èCù¦¸½u5Ä^Ê©¼×j0FONEÁHI´’A^„K8‰èëË+NUn}Û.‹_Éó)Z¦+¶’B=7¸ Kl–g}`Ÿf¶"Wë•nH`Œ«aóx®7pn]h®rކ÷暊· £;“ÊĹEÏcÍåb¸‹•ÄB ½`é8÷걈NQ* "/«d0¨âÔÌ|-;$ø °4ÏÍXÓì»à¿F*Pº…±°èšÙ\ÈøìYA è$dW(¨…Pe¢u^–A1û.|SBX&3utaÃ#ŒUá*‹5†2¡°8ÞqêŸÎdiú|Ƽ‘fdÄ~)ÖNÙÄyB ºp(ã×Â$Kºõ‘ÌÙúÎ…ç6’eÙZlàç-1³EgäÄJ@xc $˜X‚ÖyÌ'<hNoÌãªj…FwÎI2áˆÌ‘Ð<í¸¹µ)®n&³\ žvεÊbÅØ¼zÇ–i³@jìÊ”—S#§‘ ñú*YÎbq‹FôÛ¢ÞI’$ŽÆÏ(Å–õ‚ÿ³®¥V!ÌåÇDò_ì%:/Êz@Hæ>shoÙ^„0rsþžé} a¨¶ðÜå’ OÎÀ1=_;ŸuÿÔ¦8É-;ªlÙkŒ*‘ams“ſtã×ð´çr¡©'$ÑËh`׬Ã5N™°£iE!huh^RǶÍ'’;''†1â”óLSØáÍúªýSws>Gï\Úbä Ò%4]Jæ|ë\aK7ìþpê§‘òü3' ô “óB¼b¥|…áG á¼R÷¹¨Ÿp®Éí ä`èrÄM•-£P/ƒa÷ï#4jUL H‘ø"TDæšÄì<Þ99Ôr¬M&ÕYªyS ã»bÅ›Õtt¤F@j³ÊÁ§¸ÉëD¾•oÚ’6r¯®ú¨bà)O¦F¬(rÑI…ÙœY7IˆùƒÞÒ ¹A~,ÌA}.:IÜç%Æ[ ³Î´–ö|„çmáªB,¯úÔPPšYT Xá´T…¤Tâ\ E¥¸d€fà“õš•azáÊ졯IF‘ÈJÜøry t‘Ht q«jöøBÚ”‹øvK˜•{`;Èüüç_‰¦­×;Ù™¡¢<ŸìÆk=>H%¼ëÀóRt°Á7úúD&ç4É](ú­0º›ä­:–Q«“¸dè¡C"çŒÔ V^w\¢É^Ô•·~X:d¢/}-žSšó\Sûaco©ÊŸ†7‰¨ÙöÝ µôL v^îB¼–TŒbÒÇU³xkq†'ÖÎåÖ´wý.lZ\¤aæXÑZŽÁP†lÛàW»l;dà6ÆêH${©$C¨Àt:—•x.¬6œ¤9 W[+•5£™ïÇæ¹Cø…Ê6SŠ Bþ`È †ï7ð¸!dÕµÏ?†­iÖÌ'žs{¡…J\ž°¾ãlQ‰exMŠA@™º‘<Ää£òN43<2/sŠxmkn?!;9–5ä¨áƒ8…ºpÂÀzªjþ ~ãì-EèL0CuNÛqP¯D —?ÐyB¹ /4w¥õ²öÕ+$SñõS 磋Ò´ëeš_o`ŸX/D{¦Ë‰B#ug'øš {;;˜Ó}árº/˜˜×޼ˆ9!"ä%ÍÞ1çÊ[—ûXx%Kf¡!3.ÆÛ +ö ‰sõ ‡‡Ø‹KÚ'²«5ä«XÛ UíݲM'¦}±“)„ÜrºV³Ú«ÚA ŸÂg~¤JûÝ/<ܱåhx/k—÷åRUž4H]ûb­qõDYìöR°Ni„ï3[”AH1½\3?¹xâ­µ®6Ø–ž‹¯ìÃqOS…uôt>é,¦¨ 3÷`ìP/Å—hÃЈªÄ¡[QÇ õS—Îe®‚S›õ=套Ï_k\šˆVoÇ·Š©Ò²ì¯#ëÍjfOpYõ¸Ò;¼2Rïæ©GðHŠ>ªEa½(Æ"ÏP\+¬{µ§ñgì#B /Ï+È9ž¿~é¯\‚—/| QÎWüÒÊz!³m3ÅZhñËvõA£ÜVù´Z}NýƒKÞ¹!º@lÊÝæVlyyµ øä9tñ e¯§^šbÑs(¡§ç^¦Xr~ùü˜2^xì)«0 λ“_§3S+bBà@R©yÍá["K€hó ;l»``OÒ*$-àÙœg¦á›[7-Åуh+ã`uÅDÃ8Ä9œ“s_ÉÖñÞ¸ö Åiþ½fHª[=ÄÏÊ—#¤Š$ÛLä–SÞ‹ë¯iú­ŠDüfKkµÝk?¢`¿p’¬±(º¹a³‚ Æ¤Íz)+QAU _c%8ôa…VÃkNJ‰‡hKA†¦J˜¤2L6uõ vS(~û•¯æÞêiJ›†5_δ$êºSYEδà£ÍÊÖÈBÌbžÏ¤21'[š¬µªÃnÛ`žÄní-Ä6MýM=e¢ég-Êü…_K΂ÆÏ59G×¼ôÅ2‡Q&PÂXWQM¤P¯ü…>ÿ@ôH2!¶çu÷¶ÔSç¼N3'B… g4+´ ¶"¾CJ‚ÈÒö².%õÓü)êó”ß\K8ê{1ƒ6÷ùmÊÄÎÅPÎ8H¥~",ÛÕ½œ×2p›- %:ý,.’ô•x(¶Åf[8 ¸)$í¤¥õÄtüER°³™Þê†mŒh5•ªBys½gY“×p)EpZ„§'C‘Ų{‘ý˜ÜC%”Lk¡ß‘ì&rÉn~GQ½½ž:â(¯¼Ð¬Ê ®›'r›¨D"Ï‹#Ø?ÐFåž2ÀÀ`º÷S0@“ w9(Võ|º"ŽªýËý"Ž¡’s'Ýh´œ£#®~=võû7—J¶Ï!g œÌýøåå^»ùqµ:¯,F-ÑNò«ì†ž!…}‘W¹â½pÅ]$À h «â–÷b-eéR1XJMXe|i .kâ (ëLØï[„Oû)×Å`kÇ¥êk..H^Ê8Ÿür¹T³'pJ.ŒÈÆéÅÇÚìÀwqÒð™›ú뀬CÚî‘£­¸Éý`¬èZSAïÁ•{lm,ä鯽Ô/k?÷YνͽB^Z`˜EêÓNÖùf_r̘«\SHh—çm-¸¤(좥¸œŸ¯ý`ß<âq8Ôs…ÅŠšÊ/‹Ò•g(r`]:—²R·RmÉZÝÂ2ˆ7\_Ò0+8"«„„çC=[üÒb1‡ hU™…ºçÕÆ©šñÌlÍÔ5aH£Üƒ3&•a6r-4É–Áv3{Ü÷’sÑz:´eh~àJ}ŠÀškÉö8?¼¡¬&rdsÎü…ÈBT¢ê¦#Ú¸.òwJ–i!ïk_Ý¢T~ÎUÑ-ç-œ;¢U9p°°)§\tõ†À3ZìRBÄW¯o@‚hi É#n)Ò4çQ¨N :“õŨ҂ýò½>ÓXÓ‡ãVΩ¢ÍRwÓ߈‘Z6!ü­Å×¢úÍpjÍI5—°öÏ_ÃNp]ξtÞK¬GÂŒ=¤Õ¥ÙÙ£ ÀîÑb8ƒ>‡œ‡Sè9É8k_Ìš›^XEÄúç‹Ïç1à ξ ™×+X6°4K!Ý’ï¨VfL xäÁöÇK¡÷ôÕ*þFW¹èÈFkM´K2ÑšßâÔ]d“kéª$QMÞ¨Ëå¹°…¤[4Å3N9ߎ¼•µ4î¥>*AMòøvRšÇž­›©ØÏÊéÍcƒãy'¤áNð|.¶Ù«W…”%ËF#GYfnaêâÄ\ç0¯†ÂId#àå­ÅjsmÞS+ägYI†ì΢½§úeª;DhŒXþXð­J­J&D;íOÚÅŽ¡æ[uSÎÄ;F¨ì°Ç2ß…·Ä½CÜ™%—„D°¹V¾#sµ ëF]¸Ëâ2gý¡_»[fËXh–‘5\'‘j¢JËnU‰y࣬ŷúIuÌÖ7«×E]ÔÚœQ«(†÷d¦œÙv(öbÙzÝÀÖƒ«°ò‹®®Sè¶5s’^¡ª[¼¿§‘U_ Õ›³Ö<Q80Ú6‚¾)±Ó¸Ë™^l…•ÂR‘»_ˆòhQh•ÌeÈhóØŠ ÌÙ:)aµŸqÑ:B…ñ2¤pÍ߬o™ „nÚÌ„l[J¹ÎU ;¬æ ½Kˆ9“õm›Ð5²ñlnðL½›0ŽµÉœËˆy¬fGd¯Þhé•]qADmÉŠuUgÆ%²ùªR“*¦k‘J{Ä÷ÚyXŒ!ü×C‚Znræ-­µ‹«uKÚI´b0x·u æÒ¨6€Ü¥Ñ«–Ð"ÝáÚÚù4ÿkœ¤63•G=ýDìÃ’m: ¨³¢e\PkÏ5 $1\DÔcˆ¹– «Œ¬"…h¿cµ‘Ó²H×±Îã[Wg€¥ •wœNt×~¯¦~±/½Ó)êɃüÂRs)ÛÀÉpN@ ’&“Ê¿Á¥¸rX£HG>ë8Á˜7{÷™s<&y änkºèváJª‡ ”‚úZÍñk¾œ[å&…f(‹<½½5{}ᘄ—©¢B;½=É}-é6'µ¼Íi—!–G¦­¦ ˉ}¤ ©Dš†ÎŠDÃ=fˆj­ÍîL¿n¡ZBÏW¬Àüóæ2«Ö1ªnñ-•¦¢à· q ){µS"-#ŒŽXÍuÑ¡ RNŠv¢°£ž^oi+¨äÁSêu™W¦ÄJU bc™»`Éxq wW‹¦ÑoÓUŠP ›?vW-[”e2Ò¡úÈ„µÞ'Ï«¢Ú¥¼”MCʫﳻå"ÌV¥ Ó’S©ZÇŒD½oa²n”pŠ Åó–-3Ê`š{î`6,\ÈÿÆ-.$ Mrü±_'ëñ ROA¨Ð=[D¾:¬ + ÊI{%&‚zÈT¨g‚ *K¶sÙ:bFñëYÿV–ì‡êæä©É‡{²ž¨:ËK”ëÇòšÌ¥–• <ßN@œÐ;ƒ<~$µ(†c«IKU§|NÏCZ뤵zaam4´Üª–ç”uü|RZ‡Y“%h{î-²žŽÐ>#8WQ…‡ç”µn;ÇOð\ÝÈ,zE%neã âtõêã=?ÉkÎ¥è[IÊU³Éy7ìéG»¥o-¨´Ÿ“¡ÝÏç_…†ÜË&€Rd3ÝOÙ£Y S2ŠMÔÓ78¿$Õ [g,éô·’— [JÊÏµÔ Åîך[ËR9÷çJFY ³^4Ûâ¨)<óø '}C'’ÎÊž¤ÝB@¡©ÙžìÃk~dí¤ êB ©ÖßÚ#¸ëÿM²ñý w£„ýÈëwÇÊEƒTÍ/^&ía‚‘/SJeG¯{©Ý÷Q¸³Þů&ø0|Üáÿì_³ª$ºÿ­Ý’¢ðc¾õ1?3 Ð!gmü›ži—q§¦=žKGüî›6ÉNdgk2ã&ÀúžˆÓߌRO­XÓ‘ÌÉÏÖ99îÉ×”¥¯n沌E×êõJ'Ï ’ºŠÿ’z`ÿ%ŒÔó_òƒu#)Ë;÷BÉuÁ ±)ø8Öç…`ž ùœTíáß̆PQ†4²lHÚhÚVš»¬X¸£´?ör3¥¾ °Æ~ÁCÀí,6Ü‘šW|›—ÉÚ?P¾#d¡Ç¼‡ÝDýZýΙ¦G¶–ÐʘfKX)¿ pbmõ}©wðTìâ™=Ü:°[¼®X°çñ#|tÐ?KÁŸF#¼ªßs'ê»\¾ðèñ âjEZsBä0§aÝ\àƒA³IÞU× c3Æf <¤:,u8[œé=’sF®¹f:sqô)c„lŽžu·­©c´ÑÒ%Ž`rè.%váf–°vÝ[7–‚næª üx#Ú°ÂÈŸÛÜe·?~—äÛ¸hWÈKÎSõz>¢ÉÇV‡ZQ¡š#ì¿´1HdxŠ»@td—xnÙ iÚ=¢~§ä8°4ù2!¢kê?À^Μ÷© ٧̃ϵjFO+ ¨m¾ž‹ÅkÂMtõB\€‚d:ª¬ LÉyÊëlVáe‰ÈyÎÁ#@\‘Uǰ÷ï0«y£X0uçó|·¬ʆ•Üûc¦M`sŠ“¯-B®6“'œ‡âYã#ßP!#Ãn:ÊÏ Ýƒs÷ ËH„%í¹X¨bQB”šæ ÎÍŽ·â ÃÑ•=8¦UÓJˆž¬j~ÚÙí|mͯ®Xª7cî›üY™6wËWßBÆç"·ª0è’}Æ?‰r©ã–"wú‘ J!ÑLßœ•>’ Dhxá}Û¸Ð𹑬êŸ*Ÿ¾¤WìyˆïS[ ÁW™Eõ;ßvŒ¸w^¼¬V §©T˜G¡ªÜðDqí±Z„ÇjoÜÍBƒˆ¾,š6›NH®pä0º R:ù`Âï¦iÅ ›”€~ÍÑ$ï¼\‹ÕgÐEÝ€ŒLÄ‚åëÒ1,G唋ÈrßR˜,4²VåOå¡Äºp@útâÀk‰r],*œ¡¾E¦´q8¤dÀ DM-býz.á¡Ý¢¦…Hâ$‹èßôÇulè ‰Ð$‰—ܺ ¦òtàÂÜI\‘:‡]Ì‹6˜Ê¥0“ž±[Ê#g*Ïí ›ù©c*â âý'õNClÕ| ¡¸š=ã9#úÍm0pEõÚ…Â’ýHΜ ¸ëPå’YQN÷e©³äX¢:Û³]ºÉJJ˜9&õ¬¬Èë*yñ"íl•?ÊZlëã’.Ÿ %¹Ê¢;µù÷D0¡ý9@0Çï9 YÃ}›¯o÷Î9"FÂmTTX7m›?-©ª.ØáƒÆ‘þH¯dn„ÀyÊðyHë•Jxv’v°ÀIª9«‘¦ÿò­ìôfv›ãJŠá²ü8kņ?÷+&z<¬¹·Ž>›táøX{X\ïîx8í¦MÃAîŽG3–ÙªŠwÝá‡9÷mOÂh~#¤ƒýÈ<é¸ñÜ›«&Ì9±WÎ=ÏwóŸ>¬í")O…–²½)û¼ñ=†ªC„‹å'šc¶ßpþñKQ¾OwìUgÏÉ©þË­5=7Ñí4íjäb+Ÿµ‡£¼ò½ÃðpGx¬DÅ}šÝAÌùÑ`Îâp|{°"›qdõïª)Ö¼ÖïFy)‰ç÷ÒáYçÓ<ò¼ÊúZ¡%sè ±yi5‰í¢Àþ`‹¥ÈYï%Hmkà·—ïH½˜$¹óû µs¯LM¹¿¹1òß_˜Ý·‰–0jøªU"аùÀ1 Üûdí)yĉ$ëzÔa÷+&d¯8Sû-å'ÍÀ>¾2òcN!–´˜T]…³U=6­è—‘ ú Ó^”öºL.ÌÃyÙ?óát_è‹\}¬DιW³ø `­/]q:’„RiX<=LþÓBªž–;áÓ#äÑѧ§|M4¬6ðqÚÓ‡…RiÞüf:Ví ë¦#íÀcvºÕ%`’€4-y7¿–ŽÈ¨gI–dJ} ]W›Í- •æ„©óð%ò`”DYšÙ‚.3y"ÿîË6ç{Zh•±á‘³,³YºP @lÕ}$ªoHƾ!¢ß“¦‚p8AHøp$½:£o ±ÒÅýØm·áñÖi'­Gé´÷BÌÙ@dSûê ÉB+vÈwê× 9>YMfó7FibliA›ÜRü%¹ ú LlHi>%nýFÈL©Š|=…àɱ°usÏ™­×…ÍŒ8&u[ û ²TÄsœWÓ%õkθã«ÕÀ¡¦YªJ™L-Ñ¿Áü$Í¥^™b*ˆOéYŸ5µðÆjáåÔŠ5ÃFÚG#'’Ãz£Îúª§m)¸1ó.Š-Rœ#d¢a‡µoÙ­ƒ Á¢†¶gãô8ëò©õ4"'°—~År‹ÕŠ[VL`'9›PÆ^“ʼP–;Žõ Ñ !ÚǪb®!ßÜ¥åK#ápëN *øk8IѤ&×’²½‘:4V€_Ù|šK»¨V¯¹Íƒ2.1“Z)½Ìâ4dQ­77ó„äU Ùhš'öÈM¡ƒfpdíXÝ? Vp(æï¥¯wþ2"ß›!Pqi -É‚b3ƈ7/ϰÝP2Ò*ºÕyV'²H†].£'<ØÙš¸O(Ö€#F2.” v~¡«•yå–]عkñ$óòH2Ö0GÑO³Ç…Jü×rw£Ñ_üº[êæ‰Š9h i ´©aÉ#ú7kòMHCߎAÖ%o®7ÊB¾û:e¾'có†V´ž8¯æ¨Цy•£¡ÌR²T ú‘Ö\‰Ûå{¥„S$™.t·iòÕÈ:8Qäu“õÍ•¤ßŠ?‹Œ–eiTK*™².*…ÏEZŒ¬²y»Ëek§¹ðÕÕ7[݃U_뫬Ñ{èN1 ^z§´SÞS±„‹·ø>Rï%Ç&Mï›Ès¿ašR zöŽÐ²=‚¯1ôOÚƒ§jf¦Ê%AõžÔ̱(ÀU ½ ü³ÚÏ e¸ÏWìàøÏrgxÛfé#7´Ì6D5!VUA‰\£TÂBSð®Ó§ÐŸ`—ÿ)R|;3Ÿ÷òÍX‚lë;„íß¶ào±Ó0¸´‡À÷¡Ûñ}jû™€èi[6 ˜Lm\y……ïÚ¥Ýù)oq+ò°¿’gɲ^½z%¶5Ì1£¥}l0Z=çUkîCéÔÄ‘Z9Ũo…ÔÐÜåp “ÚS7\OØ).)ØÙÂØ©f¦¹ê^VSèç‘K *(î«p€¢NXRÀ/¾š¢ÇPÈùn¶Å‚ò|‰S vQæf‹\ÉÁgZxÕ“bšŒï¯¡Ôr‹5´UÚA¸0–E{Á³kµyœ_J–`ë•fµ¸Á¯ÉÇ2ì˦à θ¶dé èK6n¬~Ì2;¥£Æ#ætOn‰[Ä ÉÜ†Ý ‰Xb3p•Mv]“ˆØ)ù€±«=èó4Ç.<ë9力’x3ÛŠ‘;Û½aa;ž»^ ˆ{’ùö„¤¦bÑ ¦Åy æÛÿªŒBÒù9:Ë~%)¶Ÿ¼îO(V¬B„-g‡Ðb A/m†¨¥ä(­ú_±ŒO‡U}Q´¼’Ó€HΚ¸Nœ û0xëÜïß>zÂtù„yÊÔv³†[&1Ù»§–ibWXøçò}ÏÂÎ#òÔÇœðÛ §gÎ4Q ¦œòN´¼YÇÑ r¿àRK•0<ñ)AžZ»¸?Ä1•´±KÄpèàçR[n¥®¸ª3ƒ¡Ùrñ.YØ!P±Øoö%×q1Ûê© &S÷ röaÊ>æQcÑÉvÞ„)m—­Mb+]Ö³Î2”càVó²ŸÕ¡ƒ|´pA¾Ev(;Ma}³ñ@ ºo¸LÔ²N l~)ÇU«ëõKNÇ9ˆ-W- !5!cÕßpÙšó›ÔÜÌÚ¡o¯ —’R7 <1¶Dx^Í™Õ(|V#ʃmèÓÚJàÜ—Ê=¾ó_ŒTʃþ«É]}Ì"¾93ë«WÕf¹Q>v‚Ëh8ì) p:'­ÁN2yõ8«KíĵE 3‹›¿D°®”ƒ:ÿ͹㋺³Î°/eFBIŒ¸RÏþãÄOUþ¶ªÅ1œ;Ç5ÝjŽÎQ«Z®å!Í0ë bV¤}‡s„5=âg®®±êÆ«Cr«´QÒµ«·—Üžnf¾ªJKIÌTTôÊH¸õôåæ¹ïYyˆM¤BC˜-PÓ;×;YÔ•T™‡pXÉ8œkŒßÊ&­¤M~pä8öJàü/5,V»Xqé)¨¼(þ½Ê¡ŠŠ+ D½qÚ¯ë¨àezΧh@P¿#„C7=Œ‚æ+É2U{¥³â‰®%Ù\{‰}­ÞפíH7½F-9}tXtô©¤Qô²Ý%23o¶m©ólÝ¢¾Mq‹„&ÎN¬¶2ázfõ¢¶€‡?“ê8âsÁeÆãêÒK »ðÁ¡åQz#Ðy/Ù¿ëµ÷`ÍDjtˆ‹ÍbàË&â­ÎÈYÙÿŽb‘=çuä¼sÆAA:^•yxxÂ+6ØÔÄ„Í.x(Ë`‹XnD ‚‡¶›i>3l ²ªƒ,Hª2L+‰A>vs6Q¾”S¿ìÄ¥Ãz` ƒqæ»|yiÑzüBÈWž=+GÚUü†~†­´ÎanURàB3á¡âåÿö„0›üÇÚ¯}×e.ÓËŠ8¡^QÎ$Ì3-˺-çídý©yX\¸Xä{É»^Ô ôꤦÀ‚«—"/N:¿Ä.sdœv¨=ÓÔ=¾ç‘—Xr)f>Ñ4ºzÚº1S?ý`ÎXÒ²sÎn– wm/†ò¡/J§%ûr@éÙ½P¬y¾¼€f™ü$ù7r©ë:{/×MªÐS§8p?õFœö!Ÿ®s[߀2:°=SU3+Ž!É>ØV1Í™é”Ä,¬¤eRq~•ÏEâV•Ÿtnœœ[kõÕm"!¡Â¹CÔvé’4ˆqßó›À[áVt0¸!2jÍ—À³*¨ÜÅYì­v¯Ÿj‚„$xþÓÂÁ³MÛ–ÓÐêæV WdÕù•̾EíŸ휥¤šV‚Ó§ÍkÞ­AÔ±—¼Ùid£Pï*lŽË'7b YoÚSJ|Åï³)&4 °H +#n%íUÖxég5E½ló\S¢¯© c™˜*Õ~°”Ïùy¦Ûw·N1à–´D §¿¶Ñ?Œ˜ ç½?G>4RùMþR¬8j˜žgZž à2sšÖÆ+>Ÿ¥‰-ýC˜ë%Ý»¡¥âƒùpA÷¶¦Àfæß+¶›Ô~î%µ ]%Ý’qh2ï,3Ü¡dó†§V­|;qä€çi^m°Mel½¤9‚Ð ^èR5¹rá¬eÒ2£H؉R–ZŒäY§bauVœÌ¯ƒWàfç~Õ¾Šã‰­di ÙG,9A¯dþ2$*%£!K†é6×À¯‡~¹ºŸQ—…W¯+͆ʼnªYø¬— "ú·ßäxÑ /?ÿ™‘ˆv¨¡óC»Ÿ!Gš¾ üNœ:Û¦çùŠk˜³r²‚ö;ËĬiÎ$aËÊ= µfþ™iðº˜Âjµ²Ïíä¹…>gý”7¨EÌ¥F|=WX“~î|*_rAq7ÅwÈó|³—:K[Þ\|,|‹£Ç½I³š¸d© ¿ÌñKéø&×Ü{›-±&“{JÍw·Ÿüú׿ßgÓò-¤!–Ï 7ØNF’ºÚ;‰ ¨îËÚ{ F£Ö¯o÷׿.§ôÂÎ6¿•wý"Цõë•þ¦µøõªMžM†{2\éÔœ{C¶æßg‹¿žòaàÎà,CºT¥:Èûª¹Ãõ)’Ø&ßõiÊÎí"÷™G>a…Є}\òƒ½ãƒÀnÌU{àhT$f[ú>ÜIäI¶³¹ïO¯´¡ðD±ºwRDN³#`‚lŒ’öÑUâÕœ™/ŽîµdÑ…ðÕª¤¡TÊ¢VõF‹š*%HœÌB|Âg€-¹E¸f·‘̪L§Ç6UÙr€´¼ü€T±ÞfädM$Ézøo¯6kÍêÅ3GæÕÓ‰MsíEôxÑ‚ÂP¥§§â:3‹\::?† ª ë•°¤iNgö]¶D†MÜI¹Œ ¿t½ßå-N‰‘Fj§óã)z½«Û¸LòaTlf `ˆªŒÒÏ‘_ ¼TÂt ª¸v¡OvÒŽÆÍƒb›¢·@4Ò„×[²°’…í©KS㎑ÈâÍk[x-šd©”7÷è!û)Dji˜WBh§ŒBoZš—s`²à`YN† ¼ù¼¼Rô^4üHÎÒõ azœ‡m[?'áCêÌnë«Í³š£gº¬¸ðkކcb^Ül’$‘º™Y¾ÞS2¯¨uKe?9Ã$ÊSw´š´òp‹„íèfR¬v›OfûëüÿWl7Ïö7›5‰;+:’§“v$NÑ-}ßl™ˆþ40l/Ö3òå¤5I?dØø&aÚ€ý”­q¾¡ñÕ’~"¤Ë–Üååsq)¨~ݸ×÷Èûñ>E$$ÆWóVOt¶ƒ1OòUË;išæg(o·§Ñ¡ÉÞëõч„ÑC 9ToÞÊDCIL‘™£ô žâ¯î·’ø}€ `!Þw%{¨àl'9¶ Iº‚®Ïî˜dôÀ÷W¿G‡n¼Ž(ºfâ¢×týR(i_°õKî³”r‰ßkç“70šäŸXÞîv_‘”!GÌ· €'G²µ§ )#ÓðÏí±]ò€‘ÿT@ Ï.·`YÆ©(f­¿ª? å_y.ýYvÓUyëu»¤_¿sø?Íö<‹³¿~Š$zsD:‘O,è̦wt\ÁƒPò¾»›âìTF¼¿f”ŸŽ#äº<µ¿Ýƒtþ(æÁÑhBªÒ“ØßY뱤Õå-Kó (UþÊKÐ-·”‰+SrÊß{ež¦ÁêŽ!o¶Yëc‰+gæõñ>ÿûûî²{SÈÃ_? Šþÿ¯%ýþOpðõÚi7íÇÂŒÎZ¯^ñ…!g_¶Ø-šì}ib§ë*Ï}Ðõ¼«³‡­g¦ë‰‰Iþ271#­[ìžôu†¹<üó"4îðÃTƃ®Neí‘‹YÓØï ÉŸdŸV–&AH;aágr!Ê ?ûìò««/¾ðîè^÷5…€èú‡µl¬¤7Lì¾ùæ«oÌ$•IÌß÷ýwI>'#&¹Á#zXÅ3¹0âÊróÖ™¤ C--zvú¾€<´»´!–ñ¤R™Ãx”òŠPhqÒÓŨ®ÂÏL°ÆLº<“$ᩤ]ä<[¡6¹z®[ð‚õIÁOäcß9nsR±‘~êŒÈîæ¦˜²õV½Ú—¾W»wÂf6¨â!œ@#z}\Fúë‹ô÷\.ôÇ=Æöç’‚Þ”«I¹DÚÂàØÿ ûö½”ꌰÛ<· ¡q=÷”&oû†fkN÷è§û©8ÖÄ%¢â€Í 8ôM[Q×ÉøDž²‘cRÐ$]~}ÖeÂ\¶Î-³”‹tÎ]U)–‚§+rÚL†UÉê§¥bØHY°¼‡:ž¯6%9®i5É9 æÍûɲpËc›æ”C1†céuÇÌüÃÔ™dú"R?ý‰|×d¢ÊKäpÈúI72 å„) LÄîoÌ?×í-m”×ÿ^xÐnê 1AP1è|sC&Š59lÄp%ŽC—G8§42kÎo“d‘Ç©¼Ï9(QÞ Y3²qÈ”ô¤^^Ùº Y*Ǩ†u0©wäérË·ÇT·!{Šó y)HŠŸ”5¹¤xËñ¾Kr/e¡,§g¯o€Hã3›Ýn†â¡“od8u@˜àäˆzº^ðIÏp¶¹P^k’MÄ2 ØÁ÷9#ÈqŸ†1€Ž»Â\ò…~7~¹P¶-Ç¥Ôr¡ø|êi´á¡ºÕNéÕOñrí‡:Z§>ÇÞÍ¢Sƒ:ì~×çù(Uò¸6Z°¢þXóÐ8¦*ù|(Ô¼,dP%•ò%œ›p6xCÚ¶Y9ûÁØ“Bô(½ªz`$öˆþ69:–­+Žý를®Ú$ã,wa’ÖŠü¼hèObÒ´¢qÊjZäý¡QG¶ÈüS§âˆ ‰K˜4œ@MkpÒ¡yõHeײRyÄ`-[ÿ†ŸcÎ';÷CùÀQì˜u¥ñK´?œ·kTë ÞÄf`‰Ë%–;´:ä?* ðý^@UégÀÎ^ ç­Ûnö·vœMBO(®ßûØÀH†m¼7’MóB2Ù5äìþMØZ”Z·K™£tÚõB…é;¥á`¾›=¾ÄáEX\ùî…øæ¹]¬øû€Ï]]ͱøyõ[ù fù*NÁâÿîØÔv àbn Ó Q€–¥i2Ö¾éë[¬¦Cœºp5õÆ%¡{ÞæÉÁCØI=ÃÆâ_‚±/DúáZµæäeîðr SÈåóУôdLP9aÈÎH}@{ÿ¿‹ÇÈ8ã½ÿßWFx”{SÑÐ8,?¸ãÒô«:„¨ÀöqÉÀ O­Ãé\N1™o‡I³–áØòÔ–AÁô$ú‡³^"ÿÇ{݃là„ÎE.Õ„$ZHmÉ^ ‹´wÂaõÞGþÉØ.']ÒÔ¦3Ü"ÂÁ?¨ŸâIú//©´y†¬×[€ùH}ɹ o?8@ÕRŽ*@.[¹dxv†&tˆ &ñAp[ Šàµä`õèçOÇp¥;y%TäT”E †Á ³»É#9ÀR=–õÂèi`‡­ãî½/™Êzá&«Éº9êÙa¢÷Z¾¦ T–¯×£‰ûJ\êIp€?.›0ôu³Ó;^ošp'•Þi$ ŸFýê(eéî ?[Ò‡^6W8…pô`~ø½ÎˆCߣP.6gGÏ5’=¤ýøŽQÍ=,ì‘ç:êõÇ-Ö$îìžµê~Gwè‡á„²pg »Ym˜rH[Eûë&œ½(O×PýÁE½QwèÎÖ 9Ñøã@ПµÕSljy N™úè,Þw ÌѨ醵Å&¬Âë¢@ •±`Á£jˆµ²ßÁ Ò{¢¢ û‘U¤þV`¢ãûídºÝø\¾Ëú^DëG1ã(-Qc _:âKªå9QÄtä¯ËCõFŒéÃãÁ:¼ˆÔsÊÛ4ÍÛûÈô¡ï”|g¡ÿƦ›ßZ£‚%Éouø£J§t ¬¢˜HF0çüv²ƒ‚Ø©‹MÝ—?<³xçYØó­êÑÚp9wض5óÂÅ‘¡<zG1+ =’nO¸ð ošÞáÙñA ơセ•ÄQ7GÑß©Ûk_tà¿£è”Tò°Cµ¢t›…>õ« \ѧlɵ°25 ÔÜÏ}éÇ ¸¸ka³Qø^$£TTy_©³ë@|/¾Ò¢OI¢ìÀò¡¨[òûο™iw@ª'®N†Z‘Ñus*dçä¦vƒ÷‚{u<Ö‹u0°ã)lÖoïujW¿W=tÒt@åW–ß¾c»”oâkrgxйrŸï™ ¾á‘f¨˜óˆÆv[ÌlVLI'Çe™è„Oú¾)àÎU¿,]Ø“xÕö$ökõdÂ÷qn.¬[ì,V÷V}Сð^s¸«¡*G…}JG#ò}¤9 1n±*Èî]ÝÛîN2õ£Ç>Y—Ž}<’ÓÒ¦ovÖ-ãyê{¼5ÕNÃÁg]ŠH`ÀS9±t–#+/[ˆ¶õ~?x‹öº¡û${ñíïÀƒaþ÷ŸÔß, =ˆ³tD‰Ð8·ñZ“Ì®9­±-{d‹0ñ³x¤è­áXü¸G€r³£„ÝÊ–rÚ3*7aôÆúe½rƒAè}£Ž»cqûFaÎ’èÖ™Ö~ïuÞÞ…iƒwÖÏ)d(÷yöÎylÈǦÙW>@ç{Sì*æ‘Çö›=l|ôvÈÊ–K[Gvó½¡Û4‡,Œšê¥Ãz/ÕA¶+‡ÞKʨ¹UŠÅÛäÏGrø"Ш.^¬æ×qŸ øƒV`ë`ûpˆ™SZÚÝÓÒó7”Ôœf̶Hß”ý_ õœœ½Ÿ3§š Ô—x÷—oŠÛ[ËÀPªÛQç?¹×¾¸ïÆRåÎ@üp‡ð‡‰µ ÀÂyZ2wF?ÜÛ¥¦ñÞ±¹ôB­OoWù—œj5P>=h3´N<'¼³è{…ºöÆÈ÷R×B¶ÑDÛRWlò Zqg.›£G@žS¢‘}ùŽ}Ú~àÓ«ÒXÖqg)æLkhs¯1ùÑ*Tü]‡FàèßÑy™†¡¿ë·¬éÏ$¼õ[öwݼam…åå_Ÿ2ôXäêª>T-íý{v:ͺ<·ß“ùâ ogÏ·dÎßc§‰ –RÂ6#ä÷k—ÒwŽœã|:ϧÎÐkwQ}ÇC¸ uèË´,*Ø¿/†LÝq½„ÊïG¾Oâ(+º)ç¤([Ìý¬õ™·þ°¤º¢,²Pd}ããA„3 )OåQSÄ£.¸–.|q<öë^ûOG £AU?P¹_Ýéd;;U9ôýCxCÚ `A¨‡ŒÄõ𢌧ú]”²ãÝ;q´qgõ=Eà-Ä¢é .iœˆS mèÓ>÷>ðîzðŒB®‰¨D¢Ã†UøDíã?4Ï[6 l•I’¦:¶Ÿ¬A}/êï;‡4íéÄÙåTìÿÇx&†Ø%Y:Ðñ# Ô=µØb=î}„*z{ÑÄGâ!èÇ“i¯A…Å)Õ‡ŽI‰[›…qSá³$N“ˆþíâÙlh°Ó=\„é@ Ÿ nË~Oc Ï7œ¿]Îrös OLÌ¡N¼ÑWoÍÍ|û¶È¿?xpš4ÂùÐßZ›C`»óÁ*"€¿.qvÈS:I+H½~„S bW•ÊmKͤÌLDé4Ö°i‚fà{Sý¼ïLôÓ8“ê>¿ëÃúS;[¶f¥Ï2^BUG¢ò“Ï8ææLÜÝûÌâ(î3“ý1/`ÆSʆ<¥Oél­³A±‹¶­c¶«_GkªõUuÃXT½kÒb}û]^–¾DÁ%"Zgºë¡Ž[±:®7Ї7¾M‹ž%ºñiF­;Hš’°aŸ7û€a:ä´§ƺÙ/ýbÞ9ÇѵŸÝ\ÃôÆ0Þ¹Ì?êvÉWd^#Ø¡3lvP°h£$Ua`øn÷.¸ä»àN tʧ– «‹¤ŽöÐæf³CO°È‹‘íq$2•»àâqË@D÷êײŸÄÉ¡0< Ùg<éO ¿ZÛ¢‘´ývA9%–°o¤¿å]q_Z÷ …`çÚ™¥èL³>½ÌthBÄm –°È«§k&w3Y«ô{ó“£µ|?|X0xƒàYäï•ÝXx%-šªÎï¤ü‡–¥/`d0ý¡&cHŠvHk‚>ðí'}Ž¿?b˜…H ×Óóÿ·’\ý]*tpbðÁÖþ¡; ?ˆdŽX .`æ¨H}Žœ!¨‚Ls$cÿ9L:³±Åïµý4öÇ5î¦2®´q³iœß<ò÷ÜØç)?Z`; j$]Œ/ë&:¾Œ÷“KÀ6rúÚÖâ¬×ñ ª><ÇFhÉD¨jC„*<Aµ~/RxÑ^ÊR2 Pad>^Õß‹+nî\)*fXPz(IÇ^·Ž ' ôA é –$¼âYOf ;…\ꥱ( RÍi£N‚TrOÝHî©‘âg~`¤'-ªVÆÖ‘qÝx™ì•K¯w:Š‚’ÙìÕ³Ô„@N’ŸÆ12VÝ" í¾'åá p¼ÔÀÆÖðj`£ú–W{†Q½VOŸ–FïEæ º?Á²ˆ †Žpp•ßË`1›æðÅÈ¢i$ï«æiÔ5ë€mª“’ô«:³Ô°Ýý›4èÛŠ¢e˜X¨oûv;)Vù62hí͚Ίé.þµùÕYn6oâ7ëÍ÷ë¿êÏ¿sóÈåWWÑyØ%¹àÿºTGüörü¿¤Ût»ñ‰ãl˜eô7fømþt‡ýnß\I{=s*u»½˜ýä¿ÄÝe4•ÿöån²ãÿBµ’޵3Œªí­Šòæh»²ÿ>}q'~‰êŽñ ’oò5'÷‰7óØÜŽ´Yò¬k¾Ÿonßm‹År·ÎÛqJ•Vâ‹Ézý.¾0P|bZ˜ÿS=ÂX*]Åæë|›çq¹™ï¾ŸlóOãw›}<¬ãm>+J©»ØœØ¿ÞlÍó7›Y1G—ö†lcs0ņ*Þ”4&úño¿û}Ìbó*þz½*¦ñoŠi¾.sóôļ›®•Ë|_¿ÃW4‚—2÷š~1ÉOã¼ òuñ[ÃФSÓ¼Dz|o¶±aŒhØÛxÕxÍXßÅ«ÉÎ=ù¬yên†³¸X£ßåæÖLgiz4¤"bñusõ°§¦Ó6þËoÿý«ßŸýîñξùæìwßþñÓ˜N‚¹›¿Í¹'TŒ3›Im'ëÝ;3rÓÁo/¿9ÿwóÄÙó¿yñíiøW/¾ýÝåË—ñÕWßÄgñ×gß|ûâü÷¿9û&þú÷ß|ýÕËËgqü2§Aü7ž›¾¨Ò_<Ëw†T•2é?šåòêñrò6¹`¶Ø$ž|9mÕV›õSŒw ?‹y¼ÞìžÆT[Õ qS_Oó´[ѧñ‹õôÙÓ¸?Ž¿Í ¡ã¯W“iNX¾§²¬û4~¾)wÔô·gqÜM“$é$Ywø4þý˳gp3Û›'÷»bE¤‘®™«ÿcŸ¯¾ÛçfQóy!jtóÝÌqm(Éz——¦YÔÂÝÜôygg¨vð_·mï/¯W“õ›J“ÄÝÛt?u÷o‹Û¼ö‚Ìݧ‘Òƒ6=ïùÕ¾¬=ßw÷‰8ÖîÜýÕmÃý¡»¿mº?r÷g›]>c¯ÿëídZ™Ò­ÝßúÍ’¤vjľ(Ik÷oеƒCâÁ¯Ü_—Õ&>ü6ßçÕ &}~Åóïö›[¦ÄƒßtY‡OâÁ/¸Þà·ZU{H<øI‰ AÚ îsõ¯EêÁï6ßš½¹ëè_j•zð+fõåK=ømÖ/õà^ï{ð3„1_LVáø ü ݼ1D#ž,¶ùÂì9 0Êj^ípè#4ù"Vdj¬÷7×fIyßÒÒ±7ÿž\ :Ó¥y®…Õû¢X£ÌJüÑ+¹Ûv¯3r·›Ú?j×V’×ZþK» 3éµÖ²Ó®Aÿ@ŸnWñìPŸÿÑö@@[PŽQR-¦È2~R¬ç¸Õñ!”˜Ç=zÄ Z‡·ðÄÇí gΣÜaûDd"«5¹½5 oüXÌ÷¥y¬­|ø·k}êF¸«ï'­î=º”½sW§­k*UðØ£¡gºjg· ¯p»š¼‹_=F†ÖOÌIöv²*f1ÐñÙ«ÇíÓúÑË'µ~Â¥®´¥5Šøô»š\o ¶cÑ¡ÇjúFÞì¦KÿðC¶ ½Á B‚Ñjrs=›˜÷É͉O8$ mGú*7XÕz·ÐÁÛ|º3Zk»6·”¶«®Z-î ÿâµ ÏÐZïW«/åZôˆžxËxIø»ùÅ/é”ùî¿ÆæÅÓ‰‘ ø)ócf´íüÎéÌÞáÿ 6¢Å'àÜLÖÅí~¥`+y-ˬÌe@ægg÷Îð‰ìP¯°S¡ÚŠŸÅTUZf6ÃÌ@&‹ëܬb××8飥>Êó¡çOî€`¥Ïp_ùʰr÷š¾Ú··º°à#;aè;µíâmó9½Ë°WÞfÕgñMšž•!ßõlÚø^žç]ÏfMÏ,Ns¯éÙt=ãç?Û? gK ­9hWyiÉëcíJøÞ/c•/ãëA­œþ¡£ú‡ÛXRäGÞ΋O}*þh^à ]`;ºN˜®Ô±OãÍ'<]Ã~š‡|çÓ5 ÁÓ˜é ï®áˆŒü´§kX‚§¶w>Ýo|Z–äΧO³Gà—w>= ¼<:tA–v…¤óô¦7˜òèTS›zèͦÞ§ËÕvCoC{ÓÛ¿Ûäû™Ý{fädy[FZ6`JNNu7'ÄTo¤>7<±í=®R¡\ö˜u+Lns_Fd–››WEédØ®€dls¦íÏH›Ò|ª­êÇš<Õp„­Î0}Nœ•`¹'OTN«Õ¡ãJñçXAí&R”ƒf'GŸª“ ~*=úTz:sBº˜æëžä»É$ÿSÇ’Í,Ÿ*ï7Ë÷?4´µ¨UvH€Ø_™˜ëiÓúš[ ô'­pYÐ>¸á fw ¯ u¾¶µKõJÚ¶<›¾ï³Ø<°KÑ’.ë@u¨~Žï·ZŸWÚCš¡w6<(ßR ?Ï£­¼Šá· ú4¾(æ’ÛÉ€v·=Ê3óȲ¶øÐ@öF®û ´ëí=¸5ƒíBaX§áï~-RÝ}@« ü‡€#>¶Çž¼“ùÑÔ{´àŒÓùt³¿,òÓ ^æ·‡aî‰{|ƒ†jn£‰¹ Ì6ã¿[üµÂ¢“íbø—R'Þ å7””4ûFti»ïSïû¶ížÁ¸0Ä«x*°²ëÛsçÀ«d©Kva®™ÑLã­÷H3Ñ­**=:€FGßlZÊ+]ó:5ôàÂö4m‡ýxhu'Íl¶>rtž?a-ÅTBs9ÓÎ77d×+Jyöz³]+A¦ß’Á¯ªZü<ο{û¥wÜóåÏ>÷‘ö:‰¯+d"ÿÎÈ4 ëÉÚñG;!¸œŠ2¬r9±—çõÖw™ ·>û<æ×†Üï‹{ ¯6Ž´yÔIuÕÉÃûâØð>»ß莃ã~ àƒÝýVö80îh]08ÆZßF;{²×Á敱õ×ÿ´NH§ h$ ìäý sÊò4¾î… ™>eúÛ2Å™Êa¶å†¸¶Õk¤ÅWj(/tÎùQ¥ZeðâVGnljOM0§©>‰Gý~ñb³RHG³ s×'ÜC3e W ÆDL l8Îè2HfJ·ãÖþÐÑ5­\SïôЃi_9P¦BPÑ·;Nèç¾~ MÏ#ß48èÊÞ?{Û.Mk›ÚWz;‚æ‰Ã‘°ÿ‰ ¯Ô=¡‡·öŸÇú2éÂçƒh+}ç7[$yÔÃ}[îµ,nî$Œ<þ+¢C?èI‡€ 5wAÅþ®p“£‡ì@¥¥®·gu*鍸³ªAå ;.‚Nê¶Vóûe*iT¾8 ‚hܶ£³ã7Ý •ʬŽó³§Ð [{"8™¡=NÌÎú‹Saf§Í¼ì}HGûó"Áøì©^Ч§’ †{¢´éä0 ó1µ¤åß}¾ºENë‹ …9¸‡šlS9ð+ O%Z>Âùp ©%njÛv0­Š™ø`¥€¦M•¬`8h(í:+Kqì8°Éìê3ˆ×›öfH[gÕ¨ˆgÅb;¹]²´o¯>–Ë V—äµÏ6k‡ý:Æ ògØtÂoÌ=RT­ÙCÃÝlwWþÛÉ*ßoÉas:YMÉsKþ¡fàßís~&^MâÇ%Õ° m?B=™XÑÐ,¶y‡éDØ2Dœ{A©w‹Åš}-&1»[`CNm§Å³8þ} Æ@h1‰'··+*ôMˆon)¤'§š¦{çôíÍ´À¯‰yŸ Ñt´ÚlËïöOrÒƒÄ%Áb2›ÁçqçpüüÍè©s÷NàeL½ÈŒòí¦(‹µá— Îþ@I„óò)5™ìYÁmzQ \¸“Zî Öº!ãe33yó’rW}‹tap‚:p”FQÀÃåÉvÊï2݇h½¾^oh•Ôz²Ê׋Ý2¦C L¾‹¥­\¾Ý›ÐcEûê$ú¨ÙõÓ7ÍȬ-nÉž‡¯˜Ëáö¾Ì6Ÿ’NÔ4É;xŒØ«CÍWóŽé×ÀhŸ ¡rL§åø‰¨}›vÒ‡‚zã`«’̦CO$mǰûÆM@EžUÀi;40ÏÚžgHvøä¸ŠiÏú·¦Ù®Còg¿öfܲ°0Ó³¯x탠ք'núXÛÛv.»¹ÔžãÉ„@®]{O Ym¶ë€Ù¡%»†âRk Fæ·|páŽÊ?oO½^y‰Ú޳@§ŸÇܲ#ì[jlÛ6€®uSA¾Îý(órt@#˜xOÉõƒ½ æøÝ:‹Aâ »<å†A‡{ÁÛ_z£qPŠ˜þr®ÉÞk…¥ÏÌ”B£Ÿ´GG†ÃëQÁvA ™àǦëD€8óx·-wž|»È;Da;øxõ1Åp„7·Ï>o´Ï‹ùkZ¿ä§Þ®Ù¾–"ê­Ôôµ1oå[¾ …àÕ±y`É&樃ê¸yW$`Ú!û¤ ¬„4ïµ(CV‡O™*Ž7]™w®< 6vr~ ®-^Õ¥gÃÊã4ŒU(S'Žäùܪéœ}T]œЗÿè“õ7V[¨€!W˜yl±8C¬,è*b ­éL^ÊcÁ®4Ï4ÎBΗ%´<²û›ýd²"½¶[çsʺØfëŠd$¶%yÚÄœ.Ö¬‚±M°&§*žQ·L?£ùyûË?⸄L¸AªËp³ÇðcoBÖ+Ø]×ßÊè ôU†yÇ„ÞÒ^HÌ–Áþä#|û³¡Vr÷ñý‰'û•ºhÃÅ]ûÏ“Zæ¿æ¶`>œÑ4~Fþaúz¾û)]ͪWñ̽Կ·“þä¾ö¬ý$ŽÉ•Æ^GÞÍ#­² ‹‡Œÿî1¶B¦‡gěǭ3[ ZÄ­®ùÛµCòy·Fý$”åFüB”ú…þ¸›7„¶7õ³"1á(½è­Ÿß(‘Á0èùD->sÿa£œ‹bWê8åûŒÁ–³Ÿû(7R¥ŒÇù#ÒæÃMOµŸjúóU[Ž'>Ý:tI:p¬â§û£ê‰Ù5ŸÄ|RóȨ́g>}ó˜ÏÐ|Fæ3¦'‡Õ'1ªAõ¬íœÚ§Ž¨ß0âƒs8y´ããpò£I÷0 ª÷7ð$@›:tß„?‰-‡b¾õS÷M‡‘1Å–»1ßzŒfönÈÙ ZN³ÁÕgÓÈÔØÿ~án><åk”îN…øOJ£¥¼ŸùH›‚ôV#å#Ï lÓ?«‘Z˜6%ø±EéÚÁúiã¡éɶƒê½mû›¯šËÿ•R˜Ï3Ÿ_™Ï¯ÍçóùÌ|>7Ÿ/ÌçKó93Ÿçæsn>æsé@óÑ«+óù7óùwóya>ÿùüwóùùüÖ|~g>_™Ï׿ó?Ìçóyi>ßšÏïýŽþ_óùƒùüOóù£ùü/óùóùßæ31Ÿkó™šÏÌ|Hʦ‰Q<úÒ| ¿£×æóÆ|VæsC1ŸùÜšÏwæC¹ Jó!¦bo>oÍç{óùÁ|ÞùýÅ|þ?·Ïì·švàãØòR•;Ïtöì·ª—Gïþ‹?ªµßþ›ýö+ûícû­c¿=óÿµýö‰ýö©ýö™ýö¹ýö…ÿø—öÛ™ýöÜ~;·ß.ì· ¶è·³ßþÝ~{a¿ý?öÛ÷ÿýö[ûíwöÛWöÛ×öÛÿðÿÆ~{i¿}k¿ýÞ~ûí·?øÿOûíöÛÿ²ßþÃ~ûßöÛÄüÚ~›Úo3û-·ßæöÛÂ|i¿öÛkûíý¶²ßnüÇ×öÛÆ~»µß¾³ß¶ö[é?¾³ßööÛ[ûí{ûíû­²•ô[ã†:"\<«0½áýØQ±%Ã~¤‡c¦j,²?¾ªqŒ…úù=ˆ ÆBýBd{Œ…úù=ˆ ÆG¨Ÿ/Æø eXŠõzó sÒºÐrøxðºÐrø=x]h9ü޼.´~G?ÚºÓ§wl¶¤ªÙdM‹ùÓn²_á¾Ç6Rƒ^Åé@ªÚCßXë¢}:Í‹ûæzoÒº¸vMZÎQS»ðå°EÉÿï˜"æ5̤€n^€º^æç$—x]MóO2ðzêÎ’×sŠþ“ ¼žìôŸdàõ,¬ÿ$¯§‡ý'x=oí?ÉÀë uÿI^ÏôûÏ5ðŸ³ÇÆÑ{)†ÿ¹þsö> ®æ8r‡ÿý3 œs\ßüÓ¼S¬=°ÿ3 |íßûyüˆáìŸdàõTí?ï7ù·ýS@¼É™ì—ÿøãþ)îÚkuþI^/Ððóx“wâ?ÅÀ-Äë%/þy^©Åñc;œ$Í'É1—“¤æsò7\îW/‰Ëu 1ò/ á#òß]n íÝÀ ¤e¿µí·_ÙoÎ ä™ýö©ÿ¸sôp²ß^ÙoΫá¯þãsèæÌ%µuú¬¬ã.7Ùôë_|ã´†'»¾¦µ±Á]'MÂ%y€—qzЩ7n¶ØäeåÃ:°gß×èæwسïktó; ìÙ÷5ºùµ¾¥µ}hݬÒÚfd?«Ún<Az54…Û{Öm;;‡Îóéè$4¾×—†hµ#2—hpĨ2 ²zPÜéÏöàïhP[²û¬Måѧè±_.° Ö®óF¯ÝØ·¿XÚ]GÜÒžO= Žì YÔ¯p»}û Ú½GÜćÚ>ÒõÒö½÷Aï.79C6zõ™\áú¡Qö?ì(yiµ—}ëM8Œ¾¾ùÁúÚâzÿH¼ 7ð‡ÚVžØ‹Öíó¡|ë1E2ß2æIü»É(` [É9ç¸5J×F`<éÛÌ&}s‘7.ʦç3’þMQ:M¾"i°@ö·ùÖeÆô5f¦ÌîØ7;ÔYtó-a®Ü|ë2#~`4 s^îíÚ—k“ôXL®e,#œ8®>ËÍ­“ -§õ•xs³ Å#²øØp•´šÖüùEmã¿_¼j~ô èªùg§}8¬9þ¹µAåúËPß{¨ úàŸëPô‘?‚nìñÑéÇz鮸èš0{2CUœ:5ÅÓƒ4MÛƒùÜ:köˆæÐëX¿j°s°VM®½Ì–YöòfUÆ­ ½_íŠUþƒWKüߨ‘yA_¬o÷»øå»r—ß”AM“ Je¾¥ÔŸñêɾœ,òí'sQ}Ém‡Ï‹—Oå'U›ï×Sú2­]äùÔ{ÜÞ¢½Tk/[”…7xËrnÕo'døµ <1RTkÝų}|½§²VTíÉB]ùmtHu¸ %Ü4ü$é¨Þþ&ßn¨›÷V‹×ºà„»ªV=Rš4Ö†OÛKîÐ'/^Æ×Ûý®Òåvò½)@1“¹lóɬs»Ûš)›…ëÌãéf im¡Èo§7ír¡Wþû4¾ä<ªæc‰´pò&÷_¨=k~Ž;úÑý§E‰%—©t™çì,ô?½À·‘¦Ø¿ŸÔ_.#øídK9o‘ÿšV]ËÖzai´#ïº-°Z¹Î†ë]ɸ‡{Ҁ̢V†s»)Ö'Îë7”Ó×´Æs{³ ƒ÷Ÿòzݰ®:a\÷à\÷à €Àõý­á0;³ eTþh×n °}JYw)±y—ù~õÌžÍHËið‹ uLÀ^oÜPãJ¥¥Y~»zâuƒÉ–šA[vŠKZ¨iS™dmÒçêK±Áõå¥Ô¤¾l¯”_›%0EµvÛåÒô_« 45Ýfó ½–áM¼Åö»HPi(Îç_ÚÝF¾^²1¸ ô¶KÕIoJPwÝjÉôÊm~[û ÀH²<ö‚G”¤6øÝQÐxÐlŸq¤y¬A=’’ÀeƒÿèëÑx[â áC/Yœ\4ú)HÚ‡V{™6Ú©ûGÉÐáÞŽî C½55À$l—‡_x"Vº;‚¤á ÒîW çvöQçÈüj÷em<êÛ®åÇ®‘™C¨mñŠÑÛï#;ÂG1ûÑ]xûèþHË+âerðNYe¹i§òbÛ³ððJ+-±‡¬í†¯pG˜äñŽÜ)]#K|þy=°ìá}BowÞÔN¤C/¼sÿ<ì} Mš°·¡™lCO65«² 6I¾aé™á YúJ(åÖ›ýÛ|²÷˜³FpÊìC{º™šz'X ñztÑï;eî5‚cXpßL‚4Ò‡ßOâ\=wKõÕ5U»P)µ¤j­$ “oCC9±ð]ŒxÇŸt¤/|VäÎ£Ï Æ*áÉó7Æsês ½ÑÁ9ú%VHKPñåWWíƒË š T™ÊØEK<¢ŠAÑãw,¹#ƒžpöè”W{Ø/0U.m×ù!®©S9°øP³Â"‹˜~–ïm¾Ù.&ëâ/yÇÉ—‚—(FuXò*%(¶:‘lW"œï´}à`U™Û4~’oæÚ *gØEÀ;ßg,H‚?ä=\g 3mÀªéŽõ«ÌÝäµ¼ŽhWRÙùÁÆ¿ó*÷× Ãay–Þj*Yõ…hT òõG0°‘°ª€*óâHõ4ªŒîî#çôGÎá÷2]?úf[¤úÐËãCï×»>K¯{¤Qv8ÐÖ/#÷Pa ŽÊ±'´ÈKj,šQ­E…í²MÂG&/ÄÇD††› RCuÅù4þ‘q-<òù|7=.Ü÷µƲòøégC Â{GƒíÊ@Õ~wÃôguØ>ì÷Ê1вGqÓ˜O¡úü½Ý®¯þ LýC)ëO¾úþ~žVÕS!P{Pµâÿ5t Hq•ŽÕŠ?ùûy!b `‡!]kå’ NË íÀ;pêãvjnÿçÿEDô„-`çs'á¨6 —¨¶£Ž.Ô£“×éï?¶yßÍ |qx VöE'Øo»óè9ò¶ºBûЫµÑ½vù]8RCŠN…D˜ò]$îg<〿kþ í–|~˜¶iWuÖ¸9:ÕÍ(/*t&öþC¡úÉÊ\ÜìãÉb;YÏ #læ¢;N¢Ö¯âÔ—s‘cÀ£Xª`¾æ¦rŸgMwÌqŠ©™[k‹Y¾ÚMêº1iEàšo77Úñ¢U@‰« êQ^^Ä…#M×x#jëÅ:JQ#oáU³J<œp Âo«Ý' Kp×yeP©sýÁ [: jjê\'<{oSCO;Õñ~45uþþ•–Á)û]oÅøs½ÿ“¬Ï«…ú”\÷ñIÅÙ@;MþÝ—Öõ)~ñ8nr"ÑUª<ÀÑ=M 0'L\ìpÛW™¦5«%nW®VòÌ1'Ì´jç::˪­éè +f¡úìB»Œ5¼xø5¿Tªš«©å¥òXÕ<ÈÕŒ.ò\ízレ“wÐïjCOyö÷ᨸ6½Ñô¨çRq'F|4?ŠuÕðQ,¨éj›ñÀc(ÞˆoW†äÔ¸G`ÌO0(§i¬ÊJâ' 'TZ¨k::Ì@p`€ÌIŸ:DO°¹{ž\r÷0GoÙ}ç:[ìÈxïû,Gì*¹Ío vTžÜ[a<Û˜¶øf®ÝñãÛÍv÷ø©ù»ÝLóÙ~›?&õ1ÀM7_oÍ^¤î]'óÉtoΧ9û¿ÛÕ>Í3 Ô+Í;4\qé7iß›—…ÉݻۜåÊøY¼šl¡¯Â‡ÛUj+skâ"žÔÔè­›üæ;©“Œvñ“Ü! GL´ìò#¯Eð¼V`–®ÅÝË ýKKèÍã A¸­S£rÛâ›2ð–G õf§lß…ZpÓSKX½‰ú;{¹³±ê0âÓPªÎÖÊ€ô°Æ4m'‡€ èe`¿ÿ¾ðGœ0º­¬ìÝS–wr{KûM~zÓsTfyСü0ˆRæCBÁ–’?<·÷@Ú9`¥¿ÉËx®¶ßOšâ/~’x&ïö)ã‹—m.ßš”åwÞé›;4£ýÈùuWOÜ쎾Àsé)`îèKØ£SzïO yJ¢¼‘þj¡?è¸ä8š«Éõ¶˜NÔ ·â s»‚bU&ÛkòL‚÷ý´(M³¦3Ž"I <‘+”Lð‡üþ[8ÖwùzWNb4ŒàÄí|º8À²²tÙÅNiiê-Ãt&@󿿉m. ¯¼š§Ü|»7?¼¦åÁdÜ¿:ëó÷‡ÇÞšo‚'š¤¹pÙѺH‡{róÉtZmÜØœ¢ÛL{oAöf½¨Cu*B/óݪ·nòhEè­>Z½í?ê ¢vàÞ£þmÿ±·ÂêÞðn7?iãašŸô·iíY3Óü¬¿%åÙ'AÿÙúíÚÃa4uíaÜörŒQãCîvó­KSóííêÓŽb6.K… VtAJwÒÎê£.ŽéN2)ºC§B•3ÉHΗCùÇï¸oò2FéS2KÅ ú$KîÈu¦M]’ëä/›—Þž—ë†`OVL¡Ýu Ã?–›Í ‡¾ xÙÈBPf³]ù~¹_¿QþÊ>÷ ‹˜há® +Þ2<àê]G_W³ øêÙ•ÿt`4¸[#5™sX¾ñÔ½è‹Ödeù#š¼ýHè³€’$Õã'¡÷®˜†#uÇ‚ŽÙ;S|hH"‹ãƒà …yNÞª¶Ã#¯diÑa†ƒßÙÅT•íCÙ²™òðãÇž~™×ùÈCXj=?뀊½‘ŠÞÚâV“®ðØÚÇa ÍŽão„„Äøÿ,"öÎ M C¨¡õÏfwÀ«Aá%®ê¸dsÚ£Á@£º’KzóÐí¶ŸØ›ó<=‚)q†®¹4ã´§›Æã¾G±7°uÆRÚÚ³/8½@Ó¸¡$ìh±ú†TG'Weü|ûçÒájL®«U§¾rÍÿù-Ý©üç½rÇωa-šŸÝê~У¦N ß㤩Ӈ45„>åœYoî}ÔüCÎŽÆîù–àÏíTO>þ4þNØþ¬8ïˆO%Ý?+Z|*Ì®¼|u~ Ò¦÷§²á®|oB``ÖB‘5>åÿYù6¨í‹òv²›.} êµN¾Ý]哹Ef¹6µØøÑ¼²8¶Ÿõþæ:?Ò•î‹][Æ=eÓ©‡ja'÷EÑÊ|…¸hÎ0ì{â¨=|¤²¢u§kÈ$ŠW4-I,5Üe@ÛQ6Žâ³PG·Íóp SFî¯~wl ßêëÜÚ‹¥´©4IÛµU»6ˆ<Ó+Aã®ïp9g;VÜ0b4¶Ãòl§ž:ð¨,YgÄ{sc¼ñxØå¿pªŠÂ&þ`§wƒ8»ˆ“Ÿˆ?ÿà FÞ¾CPV˜ÍNÕÀþ¬š7¦ß„)0´Ä¸?ùü೟º0݆'-L霙ÓåæèJØ5Pû 'iìw3mŸtBì¶“uY0A$PüßâŦMöüÖäš\{üÉÀF´6 ų‘‘7O(€ih–òíT “Å\+½{íküÍàðX«Ñµ#Îç`'JرF5ÂŽ oyæQ–oŽ/Õ“ÙPZ"Ë0s6+…ñ#æ3Î0 “)rì¹A—ñ6‰·©NVV =T–ÉG ßh,Fè²í¡¡ëß²b´ï5q-Pì½Çr–:×Ä;¬½ç¼Nù?÷i˜÷;3Àuˆœá´edUû©oRÕ­^3RWÍÚÒp/Y¢HÄ7Þ´ÇÙ¢dÔ-iêåzU‹‚UyN„¿›m j:m3-oÌrÊ}aá\8÷ѹåÇ^õ¸a7´Ã˜ò¨Ž(jO¹÷¸n½k÷–füEõ*´¼nmdÆÉÆ  é¬˜ÏuƒGÔ“±ðŒ>ˆ¨îFúÅàÆ©ýÄÈíA©~)ýÏ‚µ‡ŸL=™> ßË …•|P| jVþrè}ÑõŽðŒ žª…‹ë-ë¯`‘žodµÒ²À›ëîZÊN¸æÉãþ·”¹‘õ1 ¿,ˆø‘´þs |&WQðú#$"ÈH›7{¤‰ç›X–½#×Óü&_ï$cÔdaX¢xVPr"s^Kÿ]ÛÞ®G—Çx &h3¯8$ÑUéØé®¢2Êý·”ŸDªY¢«Ñw7¹ŒÂ÷ýwD0ËЫIäæÞ =*k™ª?×ý·™y?¡Þ½Ö6>eñŸ]Ï&ïúÇb%’J?Þ­´r+ŒÞzÞÊ€&ÖÀMÓ]lN >ÉöÞÀ;òƒ¹†˜ç:×8šú3i [Ž®§#kr*²#mz&ý ü K`‹0=ô³V4KãšCuÅ]ðóX·É£¸‰Z¹MNnßA±o·ÅzZÜNØ]{a¤ª>酎;t°•* ¾ÒÏ­ZEœV¥“–×G]€æQÖ ‰‡GÉD¥>К¯uÅ9»a>ñƒ§¤Îœ6£ò"«îóæíy‡4Í¿jå;:ýÓAƒoyͽÖÔº-׼ϛûa@[›–GZÖxX›QØJ“ŒÔ~d¡š]?–®qÙî06íÑ;­~M[æ.Ó^Ü€gÊÿ1x>Ï'«éž¨ŠòÖ*“W¨<©eùb@f5L¹æL~ÀG0®ÇÏ´ÛÕžB÷ó#=ÕBkîžZ uxÕA~Šy• +ˆùÕ£HBk¡9m ÚAo%¬’Ÿ‰‘¦=ò½Ê‘·µd7ˆ¡h+õNBÉèmÀŸüʺ9}Ù Mù‘CÈYãgòÝÅïxôc}:HL¢æ{¸ŒµÍ~:ôH`.ojj-Í#3#`ò6ÞzzYñ®ïÄš™êÎugf¢iÁÃe¹ý^+[XÙ²¶²ÂÒxKªZÍÊdËŠ 'R«wyê¼½¸€`›ùñ!™ðû¼ü!Ÿîw°þj¨†tâ…Sxí5ÀD.x/ÁPïŒý£¨ñrÇÁ^’r¸3«×ˆŒÊ. PvH³<]MÊ0‚bž¬ë†„ÌÞfs!%ëØ9™ÝäÛ…Y”ª‰ge(ðÍ5 î/ùvÓÉWšeƒeLŽ£§%ÔÛzÚÑŠ&:Ñàï qG™¸ßx¼¢¢k©×å£j¥¥–1Ñ_ïYo|P©x0–s:þÍÒBuöëªÅkšÄÓ@Æ”ýF×))ï4¥ûqk¡õæÙL“H§©½mþÖœ™y¼¯@Ô<È@ÿ2Ý ÿÜ·ëëtê"h”Ó4è A^cÆXUEMýœƒ¬Œâ×úWÞÄ­mø@‚8wzwåFê?v—ºgRQ2û<ÖWÉãö)—¼šR7â¥fb~«GG a&+@dþ/¢>0”G’ÅJqýèèè1»`Útï^aQ·qu0þ̾°½Ó Sžaûp2¢4œÙÇgæMEÖ­ÛvÒnÖüšSfæÃ{î7&–äÌÑDW!uD ªq31Su5ži]=Œõ‰ú¶æ *ƒÀåÐcè:‰¯íN÷øgsýI±žÜv*¾žâz§v=±×w í?ö®Cej˜_ÝH‘ »]>@”ÁÈÃËÇ/o¤DòZïTq|¬E©l{¥Þ[óÚ‹nÛz$€dË ¶nSú']vä~%Ù)ã·>Ë{ØÕæ”­¼)~…hPlàØ¯ Ü‚«cÌÔžufü®ðMlws[Gå V0¸®ë‹ÛžÚÞWo—L;_˜µ§Ë•áï0JZ*ÜÔqÎòR"–Ãë<Ò&0ñ4Ýø±D|‡:Ó¡a`%õ¶>²ídm¶¥Œ®ylþUZYí ZŠF?ü1È®74Á<#o©líÏï³·OÙ«÷¥²·?¯ln®:<\LbüqÔ‰ø ü¸MÛÿ•VøÁúš¬’xÕĽÐuêk•Òý`É=ͦnáNù<š»âµ«WshéܘAsœ¯ o±J= Oˆ*®GÐôCúö✩  c-¼f©4[ɹJ+çÀýyœ÷öK!ëUJÞúZ• 0å±Ü?DÂú6Ÿþ*8ö<€¶}é#okÖ)©à¦:c¹óXÆ&tþàrýJ§ÁË"ou|ÉÒÇ>ï:6³»^]Êð,X†‹Óx,‰¦»y< §±lZ_ ¸,‡éÆñyì ðK˜CÅåÿ ȱ¡“5ïÌi„>!câPMŸº+q¶D›Ñò6u‹€û†É1t[{ò8û¤O T*Á³sƒKöI‡ÞqÐg#9.e*DصöàíM6 qÙýB”:o5÷©S>ßQ]pvš%|¨*H¨«3žÂ¿‘¢šý Ý`*uSÌ|µÛÇ^o$Uô ïCn°ÏmKÃ}ÛW[ÜÇmì¤ú Ì ÛZðåQ|¨÷Ùz%uçÔ,¡hl¦ÝJ¿Ì>ù\ëÃã•}ÞـǼòîw1É&, EJ‚;tÅNF¶+¯js.&'Xh*Fýï`¶%ºW×,J¶$­+ÚãC¹–¨u-¥ÉÁTKt¯’g©±ußµÞT3L´\aòöXßCÛº–j©9ÍR›Õ”4úJG*;CQTÕ²-°[@ãùÈËŒRÑk!=naPX ‹ª; Koš3€ÑÙ!cV쮇ȣ—B3] ­8—4÷^Ã×t=ù‡[_ü~‹±2²Y†7$Yv½/I­žßÜîÞq1ÛJƒ¥éq³}ǯk¼ÿàímøZë=œ¦Èì¼/NÎüDýÿôE,OtÕìÑP­P¸·¡œ ݵ†Úp¥«ã?x|Çz, ÙgU™pqè%%†²¾°fKåëÒg]gyg²ž.7à‘s¸²«WëfçÝ*…§vi]`æa¶¼³™ëãÎ\p(æxb’‡;R¡Ìs•3£Û¬V¢t9ÐB¸Üä@ ÑçR­,«ãùhW7-izv…³s´r·Áœ¯Ö KÝáhä¥wÄݱ†W <~ y祸#…ORl3߬.µ,DHˆ§A®®“¾V¥$NfoF¬ïP£’ |nÛ»5j—ÝÂXÁKq·Ä³Y»©2sèâj¨üö›Lv„ùlûm.uSë6 kRÚ=~HyôÏö+®Øò¸ŠBʼn‡qnê?ˆÅ½>qÏï­aÎîîãÝÒöóÒÅ7{³W®sª'7‹'+*Ñæ=)Ú¬ u›ÌÉþ_ÿõÙãvàÇ2÷þ>ƒ®DönQ,ÕW‚8^²æO޽è¹B¯ÚL;щm׬åq—ÑAàíð¤¾Å™¨5!½ZŽñàà+ÃýštX¿¤ŽqÁÔÝ0¬Mˆ¿…µ„FñéäÿF^Dró{yù‘`0 Ãj$×êÒÖ4féØüu¯S_¿P»¨>*¶S¥:æJ{yìܰÝ–6=€ ®¿Ü'm$·<àd˜0="Çš‡÷Áüéž7vGúq/úhÞ®oUßWv³ê–Ù[µëÝy$ï7ûñ¶, ¹0_ÛaÔtå=œ¹âϦ^¼¦¥dØð^ýײs£}#z¥¿áU3 úÛÐL}—aU}Ëçsg²ÛÜ8®ÉWmÁ­³Î4ÑXë|SÈ/­nœÃ’G¯ì:±Æ†äZÁ Êýu­;>³µ»gïLo-˜ HBÉÒûC·kÄýÍÚGîñ>µN|qì‚·3¸/øB›6SV¨øÓ}ÄHrûr9;Èu¹aà^ûNNÂÃǦ¹õx¿~³Þ|¿æů?®>“R9n“>õ걓~ÊØÜ|¼gê sìY°¢âWÒ k`2vY?y8Š`‡ËÃ.Q¸>½,­¹ LjFTÈŸO¨‚I mu¸í0€¡q\§àœ¨íäîãòÝz7ùÓ[ÄÅšT·{sª>èv›—äA¢8VW8$»‹=±=¿K>²Oë¾@>µt‚ t%Òº RÕS)Ÿ¾éX;O³Êfh^ë8VwoñLC-!#¦<_\¤•"ÿ² Æuõ™:…ÓOôå8»{}­îãb=Ýl·†lÛŠÎ>§0]VO‡Lpù‚†Ó¹]íÖ× *OˆaTmjVhÊÈláBáÈkèÙÊ«D"Ÿ&Ð|aZywˆ]t”6à%4vÑ­¸–I¥¥ŒÄµ´ÎòU@öºýrû.µËÞÆLƒ¦W„ÇÙIpTØî»=¹»c^³»f0VֆȰY×±EÙzê¿*óDP9ô².ÌÅwáVFhX}×£ãé-BÐÿA&mnÈI¨ÚÚÜ>@­å³hä;Ö5‰6Šob´»šºË…H¼é Öq¨°Ž¨¯ÐkÎS·jìj¢*¶Û]Rùô]PÍ€TIMõ–@‚:r’d'hÐŽ«Àt=í)â«¿¶yõM¡ÞÄ_K+bNöaxÂgÚ#Åæ=ÚtJgŠ3Íy$ñ¤‘)Ž…½U·ÿðxõX£Ú‹ŽoÁªÈ؈¼!ê&Ü¥]|w͉º¾B¦Ž¹þÝsÝaLt’Ĭ®H½-ns ]ÿÆöÖIöBVy4žö$þ4>Ûïȱ•f›ï·eEŸÂϤЀ#usu°y$û:õ¡ã¥|ô” >~©„knÉ~b>i»†Ö³}ÏÕ¦ø3Zý敯rÎ>ƒ×é5­êÆÛ`XÓÞ©kºÙ6®hÏ]AÍ­ÕKø{dÙðòºWVˉæÍ¿eR]ùch>ä<¸¥5Li8ášwAõf¯Nò‚Yàø0öŽžÞ0Ý ÌB ØB«`Ò£v·òt£ …`'yµ§åPyެ‰µ¡²§âgÏ3ôÑß%F•Ïh¨ùz·Ì˼dÃCÓQ®š¹{œáÞÖÑU $À{Õf·<zÒx m+Ód)AŽä3óçú„‰·šË—£“nW§6.¯ÌFØ–‡b‰ä§ñïPÀ‚\LÈ}‰ÜÅÔ>Ñ„"wï¢Fãåk£¯"àËb×q5® ¨‡ðíéÜN¶žqN—×ç•eÖ³JÓmCS§© 1¡3gnßÜŽœÝW{—¸µ¼Ú*È›i‰¯JM}å¢îr˜à?C|"þyÜjÇ›ëU±0Ìw±…aÞ‘yÍì^w­ !Ðd1¶z)¤?£¦Ù´Ƴ_å§ŸØdShUÌl5Û™7hÂ9z¨£Î…æ{1>8·Ô§ç³Ë¼µ(” /%žYîó°5¿Éw›ýÖ@c]h퓆l†$‚p~4¢ó ÚÁ›BI “Ùä–ßj_èB°o9­ ‡—-¼ómú ±³‡sü ݪØ)¹¿€Lщá¹îÜ©³õdõ®´Ù §ËLÜõ0Âå[v8 vï!wÏ{ ª>ö8™¥¸$:"¸ýÖÝöf;DÝYÖ)SÞXç;Žô‡žW»SVU0j´PybLê½Þ]õoZÏFÿ¢A¬ËueØé²X,Éu{iHµÏáW$„ÈÙÝ0s¼·ÃÄÛkóž7È‚›!‚è ÜE}×A0Jƒ»á¨ «€Œ'áAë²ÚŪx“ǯw~xõø©ùûC§óê±áOðõÏæërRV^zçk8s‰¼<À“³Jü°±Ç¿Êt›ÿÏ ÃÍQ"òû%}'âDn°áÀ&qÖ“L=œ?jÇ?dÄ?¶\ „1?®/S°<'-K¸6WÄ^“ÊMq«vßjå¢éwÙeµÊÉÜF2 {„\îèªóo! ›yr1˜Œ -ßotØæ®…¤WÿBMþ—55þ—r|æWœîôó¢ÊkÛ]•0¿t*oÕ% ƒ´é%¬e^?áhOê©b§hˆ¤;ü¸oÜh†ð½ Û@‰U ªböá[þwÉù'˜ Û>ò«cÞa:‘GtvÍϽmz®‰WºC¥ß=S×꺘A‰T³Ô€ åv¢Gް a¯ÖF m`·aãÚ~GÛ€ý¸n¡ï«²ªjÚ&íB#y?udŒ«A=Rq8âƒQeÆîÊ&ðÑÜ÷–a׉çuÑäähÕ$X—`âž)•-åäÆà_2{7(}±¾^Ú[Wšè )³qþÐaZ#•#‡!àú®8XŠGJÈKªˆ;|]’EUGxœÒêerè#uYkck§Xßîw>iµ­ð”ÔªC¾dòãÕ ê÷ùm\‹cÈ+KúH±À=/ËÕ†ÒWâ…6ƒš¯ÜsÙb—†ÍZŽoÿ”öøi}|€–D›_nn Ɉ?UâŸZžûЏ¦0¤m®Þmž®çMÔÿ&w~1¨õ^’Ë0'å7‚Ëp3¸¾­Ë‚ýIö1õ`>_N(²Ü{Ž|ã¨ä¥¹ž ­‰’G0TykŽsýÞ/mKótl8éJ~b^g$Cñ^E(˜uô•|ü ÕjŠ5ì8míÙ«&Èò!«â—åëý nÝjÄT©Ïñ/nf(ÿº6¤§¦aL‡æ¿âì-9&ë m–_ïwfhÇeHqùîæz³‚Ÿa÷’Ó̈cÛØmÍY>Íowl¢9Ïòé–Ý·þK(ùx17ÄdeÞ$?ÖúÝÆ ÿ}¾¢xˆøíd[pž»Åjs=YyNOÛtÝ‘êänê_~Û᪵À;TnM§îpx=½ÿ›wŠRë?Þ9ÚN‡’¨UFÞ±jRxÇ/M̘µ…e‡ü63ù, *Ì ³&6?l—pÈù;ÒB¿=¬z Û² Äª¾HIÝÕÑû¹øõ)WêP›Ò,šZ~ä§< ’]u•B#¥•‚k›ã ¿üþÞàŠ°†¬ƒyáq ÏšÑ6>J×½'5©§&¢ *yos#jlbzµïmj@px)u¼¢¢¥Ž6-3J›ÉïZ覥ô0÷Ž¥ Zžº–úÀÿ«‚ +z¾Íµò=Á:JYð0‡œí^‚*}Rãï––¿áÛÉU{Õ®X»D…I÷3qM}ˆ;pß$YaÀ[1ÃfŸD¥\¯7ætAÕ ªiçÏ~2›´ý¹;§žÒ úmê=е†MÏ ™J ªnÆ+- /+dÚm÷ê¥jx©Jû%2JÑ5S¸Þ«YGœäï]ö¦¬U»èôå¸Ú¨¡Û0ö©¡Ga„)Š |{^"!¿±ûx·Rܲ ì^%q<•Ô›¤~ˆzó¨«{ÍãþÕÑ9ß+oƒ ž7&V0e:45î÷ÈÔ¨—÷Ÿ^“4ß»ŸÞ9¿Tâž[ÉK]³ôp³Ô!æA€JCyãx5¤ø§‚Wz¯fwÃKÁv^.üÛþ®)äÝ{»êŒupt^æ–SÇÇ{ûòÔí7=ˆLž±Þ÷Î}¯qmóȼûëÎ|Ï%g:o-ƒ_?+H¢H}xT4¼ê^ /Yªôg ý!@Ó´&Eí˜Ö˯¢U%GÇc8ÕœmŸþý<¼ŸWïãªä9DÖøIÒo‡-ÂlnN·e&f³BWùO»ŠäÞνñèk7„…h‰{*Ô]nvÈ',ˆÿ¸W•®Úà +wÇÜã ¡B:e¤ krüÝVX‚NÕRþDIä¯b½ò¡¥ŠÃz{Ñ£¹IàE’“7L'·¨š½¢uÈÔbf¯{ýÂp·e´=Yˆ{weÛ†y ¯ìØfOƒ$`e‚¶[j ÕðtmØj±t,Vô‚ëA «Ôê]ñcÔ6}·/â|UÜpFhâÉoó]Á•ó/ÐE‡‹¡&›*EÆêãXK&¥ŽãXo{9hD•V7Ž[»°¬qì¿é³Ø4·™&Õ'!Üñ†ŌռNvš{=ì:–.¼Š¿òtZ}º±@rµ| ©$6Eið…4“$~n×y öo¨zèm »‚u½ÞÌêSÛ !lÐFÉs¬À¯*&ê9ÐL¬õ‰f­„>˜Ò’Ò»ÃZ{<ªƒ¸cWY×·ÔP#»:¾¼Êš:ÜÜ}µš‡$r«ò_™½ãnØ”b|Ù³ ÊøõE‚Òè(O÷Fô¶m…ãêÚcb6À¹í·ÄÐ3œ@ùãxjT¤´o#ÎLV¤ÅR'ûŒ©j[ßc¨«FŒiVcÝ YüµÅ{¬SƒÆ©ǶV‰˜é!÷ĪóÍwh6BؘÙÍXãQO<+¦ëbÓ<àž"•4ÈZÏPÞ€ÍØØ„Šö-u¤ósØž}E%zó6ÍË"b,3@Öm¢M+ËÓº¼<ÝhY{±OØ.q8$uÆ¥’ #á2øÀo<Ö°ÓòNf7+ÛÉíR±>yŒµè6µÖfŒºþž¨4#k¡4Žƒ¾ƒ‚Íí«y—R…¶eüÖ›cx¬Åõp½€7&£•-‚º½wì5UW¶DèðÉ:cÞÕÝØ©ém,Ž[Îʜ풆N¸óc)—E20­5-ËèVìÉæ6ßN`v>²h›['à“eÓPæHÀ‡Û,âÊ[nXœÒØ}Ûæ‘w3õnJCåÕhÖô*ÿ }{ABHê4z¬ ·#%ÊMÚö«+BîÍ\£™6R€}Ã6êÍÎÑJ¶Ñ·>š3à`UŸ(k¾mûÙ0˜”^>“3+„ð–^àïŠe‚zÖ'l ¯y@)ïÅÈ@ïÜ¿b4¨PD@¼¶<÷,ŸÌ¾¤óp?Y} sÉØ3I”îo4½c³0ÕuÉçC>ƒ‰Wû®'pãÆ~è/àà²oúçêZÈë¡C”£XïwÅÊú;(wƒ›•µG–oéË€­qAŽOüxÍj&Œ‰‹¡”£«¬ŸWÔºíänjdW@gG›ì x'P"éÊr¸Éƒ€°|Üwõ¾*B8¸®…·ºcxšŽ•3·ü;¥æ6/Ó‚—!Pty< „ÛV¡Ä‡´t­p á^eçºûÈÓ§ƒlðfOuŒV!W…÷jÕs³›YìõÞÆ  ~µ°8kaq|§ù &^ám@\d´¼+ÍëκS!´_«—A*P`0yû´¼šƒÔYˆ2ûÔÝEÞG8sÑÙëµBdÑŒécÍ› ®÷ñ6ì êø2=Càž$N˜a5œ¡Háó•vñ„ é(¸a&¤޽cϱÄ ×³Ûr24ïXo8œ}$jÈ«Ègw=¥b(Àx4É^ôöF]€ñð®WŸQ®Úßv[ ˆâ`U%Þ¼ÜÅZÿ Ý {áª{ë>²Š7tû–ªnu>IgžÓå7ùt³¿U—2óÿýq¨Hg´.&Ô, ±ô;±‡‹•:ùâ,¼ˆÆ©mœºÆ©mœVqŠ“”ùm,ïâ^‚>W¡vœŸìM¦MM‘m›šxƒ\™S0±¿¦ô$x ayc¢®ø§¬£æ6Sç|­;CCo;NgEÅçþɸ⫠Ué`êu0­u0å«Ç:ØzlklùªâÔ‹u™o­ ±¡oªp6F*`oÒ„ XOwyˆazªº >ÇΫÎõ¸mA|Ë Ðf·Ì·>GáÝS4³H{CðšŸGÑLE4mtÕìÖïpwø€©úÚåo×z«­·®õ¶­jáÜh&!$PȽÎë*\&<3,=Œ:Ò¶uåbë‘Ñ›qgrmø5rt57&ûø†ŠÊ–›}ÙÉÍëoà^‘"hl”õz³%V÷~L³ùÝ9Àó´ˆ #Éx#Z)ÊÕ‡‡ëºxÌϦdo V¡ÊÊúúÔáM <Ý$v§Tau-ÄSnÀ“õ :ºô ¶ó¬ws“ø÷héM/ŽëP®>Ä ¢b'·•áqSw“›Î0go츿I|-ðÆi€U¿.ç›í8¾”ë»}¾2}Àk=_;<½“¢ñåž(—ÇÒŒS¦‚HpÇS¬yÔ:À]ÃlˆdìÏO»÷«ÃkyêƒÀÌ`bzñ‚em^ÂFæ# iØ%­&ˆ:ŒMx Ì·þ½1™™Qî¸õÿÍò]¾5L:Ͳl !³‡ˆX“I©ŠºÞý¹CeŒ±{´zðss¿;oøsU¹6‘¹‰}>›Ì³ñèÉç±m ïKNæ•ÛóÊý$Å{Ì~;•¨XRU™[”…aäöž6óéËïéKì./õ¯-¯\1øÕöIèâ/òÝ)*ÑPl½O»?¯‰Ýèí4RiÔgÕ¬Ú8bAõ™N†åýN"_%iý'ëéÇšj(X,_»x)ÃÑ"Îl¥ Ìl³›¯øô WÚÀÂ95÷'f#þå™i½nWù[’ZÄಂ,`s¹†÷R^÷Œî]\n}¶–ãeõ|em®6HýCåj-ëx_(Õ®?¢þ7kª{Õ¬âS9fžµö×olcíÈíƒóÍÍ5ÙYXfhI3wÂu SÍefð¦ã.V>ûM‘†ë|Š0F¿Ÿ×r].ÙAïµYÄ=%7wÛh›Ss]’›Gã“¿ÛìÌ3ùúmQN{¼PxoèÇõ³ÿqü_½ÿ‚M%Ãoä% ž(Óf.‹o&b¾L¥©j¾péç%ž`šTÍÝ“ö®mLõó7^÷d$Üîn=:ŠV5VÌB¶¹ ÚvíÛaÖ§1þy™K~¤üæv³åTöo‹œÒ P‰!öÍ\äëœ ßñl>ÁsžC2{‘ÔLËݳ˜”Mf™’ Ò}sÑG™ÞæèÁrpP+T¥¾g:Dü=Súiì£ ôl(5P´©„‹6ݲEPäÝêšX2$J§õErIÇ̃†×)g*¤vï|³— W"‹ ©ÂëôIr+åIX‹=¼ç«aÄ“¼¢ÛfëõÁLä)}$û ³æiãHkÓ)3Sd½Í»k\9âÆîRqóÐÕ=-Z8Ä„ßÓ½ŽiZ"2Û‹Íü”É sF!FaÀÍí,b6Ý´…|ìð/),°”(ùXHÏKø µ80Þ¦°á`Xx)ÎÊÓŽ‹þÔžÛU&Ó<íØÌpNÚµr™òëß¶7Bmöê#8W¿\`ø2¯›ìª,…‰øÏpÈ5ž#@ð“ &\€òl·[>U)ËæÞ Â„ËÈݵ*Xá÷ðö!4JÙG^ëF%U.%Þ+Jnî¼8»27$`y7øªèå\[ÁêÄÜ£wº+ÔïÄGºB ˆr?hFz 9×L^þ¨úè²…Úptþã¦äà"6åÈyáæñ¤”˜Ð „ÈXÝC5©^dXú«UÅOÏ <<Š˜çOìÙ³£*k3rr3¹­?à.2Áéò膬šj0ãôë]õ8תTÞ}‚÷°%nò£;b¿]ŇÌk`›³™Ü9àI¦ëZ÷% ç.o2ÅßüÉŽ‚”"Ú ˆwÁµº¦SoM=ž].?òÕñÛ_";Õê;ìàËpðpo7œ'KOš£A13'z¯ãŸ6œ¹¨wõö‹à䇺wg…VÙM&Få£mßû'_Â)'©êwê7“méŽRÒö¡¾Ùptm®yŸÞïºz9Ÿ“ÌKë=a7"¢J“† µYîÓ¤FiÙ®û Þ‚u&³Æ¦­:³rëùv ¾ð»Û†nÝw£ÌgÇPæþ§¥#Í¥mBð)™x»S¿Ý¤V4;—ÝýG! ¯Œ@àäx¿‰•Œ\s×4\%ú!¢Ñ} ¤6(Ù¼ް‚BiÎqE[S+Áͦ[;›n?†JG£Ÿ‘«ñ ²íª-àø‚³û˜šín%Û¡C÷_ç³nw(×NR­5õwOµÚ1^,ª+ÔšÕimäUÚŠ´Ø‰wªÑš•h 8¨BkóQ?¢3šTggGd_o*™“ã®K”,eTã²bIO¶=ñjæŸ eTU‘fT‹RÈO†Ð¨\ãttb[-–(2ä6ÎKæã+°)dÛÕt')¤Ž¨£”QÍBUT-3TU uŠê¡*¨ÓPѽ”O‡UOUÅ““y§rNQ9 j §ÚðïP6Q5ÕMxãq5StªŠ©QÁt¢zé?iU{(’ÕH5%Ru#N½J¢@z¨ú(º¯êè€âè qšÒè*£³ Ê¢»øƒ#Š¢“ÕD÷Qª"ºƒ)y/åPU5t?ņUç¡&q øÍ;uE÷ÒÝ[Ot³uDÐÝ©zOíЩº¡5C÷Ó =P+t—Nè>¡“ôAµAŽê‚îÒÝ¥jÒ¡”Â}µ@’ývë 7AÅó–RäÝRYÚí¤Ø!±ç[ÒͬžäÓmA‰Î¸8aó˜yîkÎ ¨y¯oÌh‹ŽA‹E.eiäfc†ˆ»–hÐ8h°/ÊeïQ©FK‚3 ù'JpZã 62áÁ¶Pt=ã/ !ŸyD^áñËT Éåâ2ÛxkSæ+CW(—´Ío C9͘ÌjçÛÊÜ0­ÎgŸ’ ]Kbü±e8‘¿ó³Ïir$ž IÛÿ•ê ¾ÉonWÅN*ylö%¥k¼)ð›¡h.ŸºA?η[3ÔÇáÈæÅjÕ1w6ÛÚØòòJÇrÛ´ãâµÅzÞ ˜Ò™r¹Ïc׿cÅpNÙˆÆ*“-ýmèBAÈë$~bÆÛ–](#â;¶W[šÔ¹¨¡H}KŸîÄ­¥`wØä.{ÒvY*ÙÒcK›FÞêÄK"Mc_¶ƒ‡e žoÂÆòîýŸÇ´¸òÝP¨;âoüíZËŠ,®~³|ZFÏ$¥ã›|·ÜÌòO âêa“•O±=&EI£ÿÌ3é¶.;_òóˆñÚ_#{~U©‚gu¥æ‹aêíÁk¶ÙîòYçûb·ì,7(|Ì%Òè†.A°I«ÏÆ­ÊN‰k}ºG|‚Èc±Á¡˜·®ž?I 45æœõ_hi!IüÊšéA7æ*ŸïP³k[,–»†j<è»­ÞÊõâ1<âYGgabRµlÖ-óÖ›Âç»ýfWä¬×qýQ鬴b—ä Q“¦îMOÎÌ#ÈÎÌLè-Ií.]å‘{È}ÔN)£¾EìÛ܈ͻÐú±?¿ÛO †M'ñd¶Y¯ë§—¢y³à|/? ÁŽÞ÷Fö}û=Ѻ ©O@éû"´¢3½Œ¼Q¦mû^{Vàî1¬Uuq ‘"¹×gþÝÛ/ïš•žÍ­ìΑj’´5Ÿ|Î ¿lPÜoìð®û<,ÿuw¾¨‘صýp! íó¸,ÀzNØÖ9‰¯órS@NVSs~mãwïv†=÷1eÄ7ìºÜòY¢ 7”Ø’®ån[¬Š‘†-„:.wîʺ²æ…¹Ÿ©Ù(iñù—¶xªSÙÖ^½k{<Œ­Bú:îû¼ˆ¼àóø5^ ×?r8xø%(|ÿº-œ…ï1Ïÿ±ÜÕÉ#è˜W%BúÅÔ¥Uâ˜mdÊj$?<‘lMc¾Í+,dI+X_Ȧõ#ù´x²‚_úKH׃mÒ'Dj<$аí[1‚>q_g€/2Ȇéxe÷0«’¦µ½Œ)]ôis+M®coªÌÇMO.Ì××0w9uèì^•2|¡Ó@âv¿óÄÎß™wSäœ>[€‘“«À*gÉVŠÅÚü¹^MÖÓe®2)•Û0£ƒª2ÝwJ’ŒŒœÜ¡tBå¡]LÇ˺¾}¢§óò¬Ü±ûŽÖqí6¤“mtë5on#”ÓèÂL•Õö×Ü8¶²ÃǼKì~SõC!õIeÙ·z­ÚZ™ñšø03âäîöåk"yÉa°ÖG» ¬:ß/ ³Qn'Ó¼µvó¤ÍœËÊŠn“)÷Qém1s•[ ÑŠTžÀÇPFÒß¼Í=x† õmˆË1ß4üÐæöKš{CVuyþQP^:à#“[ؽæÙAZ•uDÓP¸änœl)#bÓ;Îf›|¾ZaÆ<ÌKž³jd vœ¹]H>8éà,Èž—¤g.Ë|_æ‰ïyS:ðM'† ªZ=G]Ï…ÊYß,à6¡¸¥}¬ýcFM6Åè²6Ü Æé¶ƒo•´ý¨¡‚ÛX«EÛ+UD4„ë¡ðœ" T,W•¢§½!+#‘º»“|¤'ž”BãòÛšÝHÂ÷iüüÍÖ¢u“›ªÍoå÷=àŽ¥ÍY …P.Þ¬ œ%ÒZr-$R$ÝðØoo;“ý¼ü9™ëæÁýMhÇ÷´ßRï~Øý7Ã?5‰¢»Uén›[hßÅ·Õ¤d% ŸP¨§é€AÍ31w#]ä ûP®g\P`-Õ1¬ðú|7΋m¹«1â­!i3;¿.Qeû®JŸt&tA}5h<¦wŒLÔæ·jP°¦þ8Û¿êü…ÕÖP7vP ÜöO­k ”€{‚ðÈp UÍ_¸"F»|-¶Ü %),0ch~Œê³öúGsÛ¢#UmÂãÇx˜{l‡Çš}WÛM€NXdGX#¦X¾ª‘:<Ó÷›ª·Žï9kþúØü¿yS€d‚OƒWBú!ôµsr*ÈGÜ}Ô€ºsC\×WeÝþG ûG€¤%˜øTîŠbÔrp·„×’V¯ŒàG-6=³ìó}1Û-©B¹|£×ó7390ÚU*l©³O†•r=éèÀ›¿¤8n}OoílŽIó7¼_•LäcÛZm¦ý‚3u„/@ßB™I—uª.Ÿ= Z­Ïœ–šžöÕ^¦Ž÷옳Γ§N”ü™ììn¶ØîÑ¿ãmÇqöfêŽÚPz··­ OÏ‹ZW©âô Ü#ï¾Ù…”ަ( ß" }:Emã‘d‡%Ý.û4íj¿T]â¥HVëtp‹ä7ð?·ýÙ¯\fÛNÙ°¾±†¾…ÿyRÊÁpZ]Õx ÿó5¶™ž†Dˆˆ†>Ú˜bAÑe‚¨ßĽÀ"¿no+ºòúf‰j$Ü¢‡9lÿbK@Ðd°È ¸Šä*¥Å(ù«µÑld¿TM |S¿"q¸114”í¡lGPT²vª®ë¬p {¶¾&6`[Œ>IxüŠÕÛ‚‹LœÚÃÖûn‘ØÖSR©[ƃ]àÌ”BÞ#eÐ-åm1VŠI1Ÿ)K[ÏU]ìËã|G,ÿx@/™áæY`óúõÞ­]N#Ƥ¶°çZyî\šËðdÛÝ6QåíÞ¶gTgˆ+íÞÎ#«â/Úè;P«íÑ'»E š*aWÁ:ý½º4öø!s z­ßŽÁ™»)k3“›Ýÿ*êêÇxñOÂ~Qc(àPi•¤Å3F`þpóÙ2x˜-íÙâEÉÝçÌgŸ`Ò Ò“æñï5i6íS4k÷Z¿ÃYã"¹xÇÑ|’_›íc\Ù˜åCÙP߉á¸-3Àš-“oH§°®ÉM>—¸{12>cÓ<#£çæGÕŰ_%öÚôg}T MwEö‹= \fÑn ó¯ PwƒŒWcÌ ,: $JèŠ&LGãkVÈ¢ZÁ*Ùë Ë Ôí2u>/G¸‡¾ÄôrÜp^äKƒQåÖ¢Uœ+0k ¯‘»‘RÈò %üFakxF§H=Ïû²¦¯ì¡n1§å@¿ÁÀ¯zÈqkà³þ¿fn,ªö¼žJ«ªã‰óÿ¼"®o fóÁ;Ú²¥#Ö“A?ƈã|4J@@H¬ƒž3Ö¨:Aïø^€;.·Bís‡[§÷ã-çȼö¦cÔ Ù>ð zÁnÐ{ÑéKý^½Àiw§>d$ìpÓ´7æx¿Ë# /Ur<·ØåÒ‹—.û{"‚7&Þ¼O«”sâÖ|ÛÞAÛÝÖ suÝ8 ýÛ4li÷¶ZÆÛN„>[ƒöêæèø§à@ÕõØ$‘éȸzó¾ 呱›hÚš,´–9Õ}j‹ñœy# U¤£kvFÈËDƒžÝüR…Òìlߺyy°vhé÷Lr6Eu8œ‹/j9ƒ¡ÚÕ Œ"ÁZÉ¢òÈpeþ¯½]#Òç$ôHXnÁïÈ`j‘J‹X;݇•¤.áoÌVbÝUÛm6#˜­Ž­ìÔZ~ÙøE5%oNÅtôÓÉZ¶6ÌJ0*ŽÅ5þ°9 0P©IÒÈÆ€täQÁ×›Á\ /ÌŒŠ-…P­ÌÝ jèq+0â߬ÔSF5‹GgÍœÛÙµ,c÷þ¯åB[ÆØ¥Ç„ 2¦%„Tµ”mïiDVÖ½=@‹Sά'EH´?Ï8xV¸\Mµlú5 DŽ×/:SÙj‹ë9m÷sJµÔ§ów.mtçÓËpóê¨Æ °¡×†NCŸk*bå5¸2¹³ þú×£7/~øÁ¦ÃÏ““7'þåGSɵ{á©Ô¼Ò`ãrR¸„lÚa‘7Í?Ì¿7Û!œû³|Z´kùo©šì/ý(Õ¸Æ|”´1û%zTM ì£Ém=[$ÑŽ°U.{v{fG<ë8ƦʳªøÇ&ÀÀìÌ*í§ð«ãTA¿,:ëúš~Úòd‚>1;ùd–€xñþ¨ÆcðÊ\°,‰n¿¹„q¤m.^” ž¨†ù1jíC%„'IB(X¥ZÁ‰ $o:ÞS?(7µß[2f}”@'ÒF,ÕÆÈÉúúÁ±hA5·Ü¤wn$ tíÜPÀ𔢠xÂv0ïЖ½®<Æ3#lÙ½Hí‘ó‡D,ÓVrLrÓÕ(/$Ÿð>z™. õd[ w _úÒr#ژ㮾q]MÍâe¼ßN×ᑆiίÍéñËâ£9Øt3l6)¾tô9Ö%§ ŽŠs<"ÍËèV;VNwôN ¹ ïøde'Zøâ)( ü=_ÈzV÷àRΫn·dv¢F®jL¶eÕM°ôwQ€¹U|¨ëÊ¢Naàfʶ¨Ñ%Š9`å!ü³œá½ ¾1!TÞF–,›’}›· ªUøÓ[Ý‹5”Ä=ƒ”®K'(üKÒQ‰ìû¥dáR5Fj×Èo„«êQIGM&§È&³Q^ªE÷|b"™ÞC"NŒÜ(ɕǘÛtp1`Ü.7 0@Em´±ˆÙ<…mõð[ˆuÜMøh5Xè›Ý%HfìèÛJ jŸE…;ù¬wƒ6‡Íæ“´°)ùPÜÕÑM㋽tô ·‡… úò>Q*·W0ŸôÚSçÆÂGÚŠ6‹)•HÛ+“Ú:s‘Ë¢zŒ ìúM]c‚Žï:»~´PΠõZzOjdXÝK½Õ8Fi”/òû!‰,jÒŸ‘†®©áM5#¾?­‰Žž8“êÞ ]ò& Ô<^¦jõ@Í)éÅzôŽ%ÅÎ;NYc?­Ž·šLøF2;Ú>ùè3½ÛsÅyy¶‰Röû³4ÂÓ¿¸'e¯5 ÝX5™žNñÊqx†]Ò³ƒC·)57œ´r":üîÛ ,‡mmÌÒÆíTûIkÐ ä½!Cûõ–æ.8)þº™•¼°gÅÓ±q%)çM,cà'5W½¸çEpÇA_)Ášµ Ýkwç}áͳr%Öa‘$zbæw:J«M¶M…XᎠ.Ô¾Rhò⢠Sþo-ÏXKý^ÍêϤLã"xPŽ>í†Î ³Ëù’¶LÇoý@½Qú~# ~cüYtiYÙ²²Ñ²28%¹-ýî쌃Œ1AÜÇ›¶ªûqÕÛµ¹‰ªèÓ¤ê?TU¬²RD%Ê=ÈÖP¶þDשhÑJ[Eò)ˆÜiq;ñ‰øÖÇZ|NÁ0´É€bO Õ²²í?‡´‘t%ÔÓÅTðïˆÆó ú¸É^¸ÃnªŒ’îvù´[í“ù86“x¿m’Å[+Ùᤰ¼±2;ß·0ãœûaº1›²7f,z+Ûä×ÉáC‰+Ãö%-ž#v!ð}ï{(/îøãM€w1‘D):m3ª=ú”T;ø”TÛhHÚT#©°j6~¯Ù ØPK² hr(ipIÄÒÐ$]MЃߋ È÷±l\!š¼S¬†ÂíЩ‹œM§^®JÍ@ÑrÐ54[7aGÀQÄs º³s>õ+ŒØÜv};ŒÿÙŒâÄJ¯,òv­ïÊÒn{U7*E[`o³²Û«ºw@p#ü6@ovNº³û¬üî(Ž­º™{âJoÏi6Šç4©xÎýxȼ7õ7`ø†4þ$eåŠ] ÇcÓyÆÝ|¡G¿(~ÀxùùŸÞxÉG¼ ¥‘üy{Æ”»@m´cW‚@Œ,ÒK?ƦßßóÝÝeSØ5­¾Œf>Ý’18©M®ˆ‘Š$MÏ«uˆ¤×ŸÊÎõ…îê•îȪŸ+|·½oìï>\Ó¬"%é…þEÕ_T}Ì 3-—Ø«C•·WÎ\³¹¼ÙŒAÍ+Ðw›âW»t•äøˆnž<›à «Ý©}ÌYa¢RùMÛªÝ ¢ãnŠ‚T»'$X¿Þ ©v'$æEñ[·RF1Ö° íjwÇ‚’aݳ1TíN­;“÷f­ûj÷Ä8Ëå@š›°«v'4H¾Óšÿˆà«Ý½uN5¸qëRm}ûm›!i¬Â3Tì·µnZ‰ QÙ¤õ[KªeCIò+ѰIëMÜ~¬ck染Šb‰ýNtl Î+º•e×aÔÙ¢±Y·ABQ×Å…WÐÚD#—%µ>Èá£Ò¬:r‚¶SY‡B¶RX­jµmyÞ XÒë”] njÕtÀXC‹ŒÆýQå4Ù´Ó+ûœv`¢ü¬uÚ‡®¦¿EHÄî–#. âÖméÒºÔÍvþ{¿¨ì%gÃaðaVÉ·Qm/,_%TÚk+ºdsw™"üq êdréŽ_DOiÍÁc\n 7ÒÀCKñg:‹;»%Òçwu¶¬æµM*ª€m„{Ž]¢ÅÕq;°7ÕvWuÜŽ†Û{¼X…¾aÝÇó.à_whE\ý8…O'>Vî´ÜìžIÊñgÎï|O}X¸zÜuqñ.Öê`믄­ýx|•Žçw×ZA?Wþê(¹ùŒé`ðx7‚‡é÷I¦ßfœ{»Yö#$z­kæÿ3NC}5Rpé]+¦Ñy–TÙ–\ùŸbÕix Frôn=«×*éVšGÊ içÙ¯Ž6·×}|*޵Ðxqf6´7P®Y²½aWJÞ~9Ä_X¾ ¹\<±*Ê«±úž¥Žq¢ N$äLsÅtMY‚®x”zʽí;!@Âl’ (¢¯¼I)‹[`Ô‰Ô-¡á]Gí€n/Múí…qÇÝëpß•(?iZɓ뻤²G¤…MCA©DAwpHÌa9ÏEPó‹•ri\Îò ­æl´Ëíî2©KÎøE¥Àtç>Ø7 Å’¸“N˜XÓ†“ødÅp}ª+¡¤êŽò´ðµ¹%kðÎ'“»¡}¬é£Ëi­²Ý pYôj­žÝ/Á·;jùHäÇl4µÝ,~×þÊ][ål„GâöE‡ªrBÌfâfU‰{ä¾3é@ÙßÿÞ59w)£&±lе&s¯ )é§[by ~1J- Ýn¡"I‚äzEH„ûK¥ùƒ¡"uy¬ã•{èê¢î×-o¡vÁC›u©30£SÜBÚ”ïÎÈ"aÓGÜ ÎÒr•L̸oxxíçf}¤sj;ÛÐ ±åíµ-k# +ø¡³Ûkb3?©nùI/p ½©åØxPlƒm©E°Um‰¡ÛÚj7µˆXE+$Y¥Êæ_Ü4g1¤R9î2 ÐqRßP¯º¹[Îæ0Çé4úóæÖLôãSü Ñ¡ôføƒ^sÔNG·Ë¢a ÉSH£ê…¨n×iE6&ÕlrºÅÌká®gß®ƒ²É§ýmÛpá}NM{ìZ#ëÑD©,@Ái£ ¼²)ëßDM©\¿5M%§y²-;Õã¶\:ÕÝøP ¸ ³E=Tn ëUÌCí#wg6‚*7îxEgs„ªæhZ­>÷pÀ"­”;ëÀž©ˆ÷»'>X?¦ÎGýìVóbÖçNôéÀ5©í·P— ±d~ Zj}L[¸A+*ÙšÌÞdª—³þ¢œ‚Ð)ϻ禇mû1šþ–!6[|åHøb±ìZÛÉ”té¶Ml ú>'USØa£AUÜm^U£åIJæ`¿N÷#¦§ÓÝæe~Aö«²f,åÓ¦¬ÍïÊvUÆàçŸnÎ.ˆOñ# j9à‹6æªÄ=?ˆÐµ©Ætô_º(â[JŠØ-l%(ºb÷àÄgöeß²9ÆÑ¢# ‰&Ð4|¦ Äç×rwÞ³ž:=5/Þœ˜CóöðäìøÙ»—‡'æí»“·oNö9-)¤_7qq‡ Np?º.ê¥-¸6?î$‹`ÖùДh[kq+¡„‘ù¢wÁÇ„ìG÷È‹ž‰ž'æˆhpñ€jÖ\Ü’øE«.T~J_l-¤¢21Â0asÞõÂ>öæ`ºú~Ðn\0x•×ѧ¯Ò‚ä6 Ú[ïÞ»Ý;Ñ{·¡f¿ÇÄîFÙs8<:”µ°Y¿^¢2+ùfNPÕíoÒ¼±‚¢ƒí0½WtÞ+:XBpüoŽ) “ º'=‰ qû°°÷Lñ ó¦)–“}+ÆU góöÑõS°¼Xâ£l&û$½¦ÔY»õÚ­(ºÐ#yž™dU7J3¼ –Šl#,ÕÞ ¯WÁ2¹Úá{£›µ 6:»¹¤*~¤V|úÚqB·L`BNÉ ÌÍqÑXlJn£D¸½ägXì¢8¾žøÖ+ýKô»oi£ÈÙÛ€äœü“=“ÛJˆ™Ã•ÃO< ÉÏ‚ˆBáÞÇLŽ Iš\Àôº†f3NµMgDÝÐVΡ.h©Ô ²»Á Y0·‚K•èóÅ`ÔbїتÐÝ¿Öw%íæ‡‚¦‹·c1ëv}°j«“µ·Ö1îÖ-¸–‡$d̃Î/mn•ñŽRþVµ•&NϪ¾a@ÔËÕ€¼¢n &Ùêè!m0œþÞÚú ”€–(ÐRJ] ®@·k/Q$ž‰b2ƒôŒD±Ø ‘þ©œ ÐŠÀÏä —|9Ïkù¯\ôöY’²q¦cR§Å©Òa-ÆK"ºrÐoеn„Á*.¸)&ߤýÄV~=ToÎà¸YO3é(ÅÅÔñqÚ…rhŒ…m1ã­®ée_XW|Ï•um:žöù®>ê#Jw?›¦4Go^ô:‡%t6bÙ^ÝÙg!ë…ªË@]3ä^ *ÿlk“¦•öZvj$WæÀ û;ìuhVëv{‚š¢[0Ÿµfs[?n;ޤ+ÉX¢§ ®þkŒ_ÔwMÈO5¼‰:&þZä¯S2t»´ØªS±XÕ~4«B+80i¸h@l¼xÑk£»õ*gó†•ÓÝ.Ëõ•-KŽpw㦫}ûUÛôvŽ$‡Ž²­ 8·ðŒétŒòZ¤‘–‰æ1j•ˆÌ.W$¬rK‡Á¬ònC<䬎?1³…:ߥ˭v nÚldYFÕ7W¯tƒTu{Í0üSi‡`·"pGz I²-“Ây±Ï÷zíÑßÀª¿­hýÝG_Oèa+B¹„ -þ_ÃB+©dbQÚI«OÁŒŸLþÉX±E±nR·Jy]qµÍàúK\.¸vëŸÿÉÑM&ëÐZÙ Ǩ5§VŽÔÖÆuÏ3¿×›?tOÂhfôƒ™‘lm­úYÑZ;¬ÝÕ´-t£y¾–IZ\ѤdGŸ×I¹?s—£|åË|Ü-Þ,¨¶KN~<=‚F$jŒzèä|‚7¦/MN;ÓJÚäqî²Vh#Ú#£Ü/çŒK‡DâÝ9XT¾s¯ñ ¼³£ÅyæÒ¶Ä¨˜,òvˆL­ø]t1mWA‡/• „q< Jø2z– ©2aÔ³/Û<……ÔÀ[WˆêZ x·Öú*éB–à«ÏÏäÜF0,é‰P(UÔ'Q¨…ßTA¤ê«©¢>3BÏQ)(Ú?t¼-ÇÊñþ3î×®ÜL…¡ªø e lÅIö©t;JɳíS© @Řv2‰{:ŠÔ´^ÄãSL¢JjUfƒžÆË]+{/9­ìa´:Ôî]¸|#¸FÂ;«ØU˜¨R¼*W³ 0Qµx•«µÖ^¤^û‹TEÍû tbGTPÅðéƒ?Ω³6Üêƒ;.2QU¥V¬åˆÏÆ+y !^É­mš”Aqw;?G(ùhî ¤ŽùòñÆ6RÎß0ˆ¸µ0â´Í Ð ›Ò›¢¨\›õH*Ïd=šÞ¤wö¾O¢¥ú }9ã¤Éº˜–œ³œO1ÁÐŒ*(KÁ»ii~ÝÆ]¿nïá_u5,F˺øuÔ_·Y ÿº ÀÞÖx²4âAóár‚ÛÆæË2† u~ÝF:0lì¤ }˜a¢¯dOëßÖÀ}3ÁÍ É-Âr'±=Yh9™ühK£E±¹ÜPfZLÿÁÇsr9³³KäSHL]^_"¨/ë´Þ–"—=ãq8U?èîçžíþÏŽ÷¬1ïìÕÀhOçj™Õ¨*Láâ(6 Zùêê¼vÁÃÏ»ÑLç`[k¬3ñšúé€tQÁ2Z/˜‘¿ÿJ„-~Â3Ö=kØ®ïkx¢œüÔýó¢nvfšwsDiî“ úïŽÎÝ…oïc+K_ê+P¾KmÍø]¶r´7¤»¶µt<>í™—ôºàˆ>[)ØTÚ‹l°si ,1—6¦/ é„'ÔÜž¾û£×ÞD€Þbó"?¯Ëans”xGxŽoQÖé{âz÷˜ðnrß‚4œ‚£»¤æÅl\dºe"åg§‚>·šAÒÑ3©s…ÒÅ\ñÖ <©â.Ót ó˜‹Ë~y»¯´÷¯‚âUP#Qük).vO¢ø7\œOï6k‹ÿ;òÇ–QB%m!sõ#'˜m5wIÕÄUFk¯,’ª‰ˆVÞ4$ÕÙ†ë.jÕt;eÖßëÓªëvÓ¬¿ŽGê&r7¸EGW¯¥YqùTJÜe³âΚV]¦Ó&WͨÚ^b&‡%¨qE¿}i­ìŒ«úNkŤTõJ'I¡H'éJáý4+Õϸ“¢!o£Ñ’ÌI1òGµÈ’/òže“’Kò¾á›ý#ïõ9Pî=¡¡ÃeUýFèà|{üή”Ѩo³--à/—³ß¬DÁ?_‘]N*áߊ5¾ Vàäºo›k­èpíD׿yYƒO”ZßaG… ŽÉÄÙGØypÑýs°—ülQwìqbHÔrbêÕ‚ÅYéM퀩BfbÌ pæ a¡ž´jWW4©o–5!¡©‰Ålh[SÙ™™RoªQgéÕh°­m“Ê(\%’í8ˆÆß0v½ÕT°«œ÷O923M w æŸ$²ú©(’8»r%Rg]þù¨¶†b‰0˜8º6ò%S¼k¦ˆfíЗ@S,·Šã7„æÓRWðŠiÓЗb|õÏæ"'©ô–‚àž0$Ûæ¥”u0Ða·lú>§Ž{›2Yšká±åðàú½?K‡£µ±hü³ŽV[ßç˜yþçºMEøŸ{äVkŠO0–IUó§Ý{U5m}MÓ–·W4-†ÞDÏ̪«š?Dw$Áó'×Á?Ûyªn¬þ@¿–¶*Û»EâME÷ŸJoJó?«-§±¡lº»” gåmÀmYKá æãù@½òCÁû²™ç‹á¥&ª}×/ê: è¤ÈÇŽ™åÝÐqãgãhp> ½”‹Â†x>*V Ü”E#tX\âg„ö yÔ‘+wÁž:‹ïÜaÉ!1R-ñ• í°Lbñ×0RWE8Y¦³Á eã¹kA] ô.–Èe¢"ƒ^kÔÎñ;û&(üH§aŽy5Ë$0¦Â-µ‚JhP­ŽJQ²ˆg$§shIÏ Å]ºÁ¡ ¦Hüý­Iu}kx¹ôR.p¥ ÌД3“ùÐKÝV½ ¶Âñ80Í*(eUã(- ß |âNÿÌÞª¾ù”Òüé. jËw‰¼°Ðmß|F½ ³±Rñ#ß÷Dô¨IÖ€2qV×ͧ´¬w£±5› 0=n.'|-î!x™L_uV,äe fí†MÈ­”òŽAÓÞEÓëÅÂ$ôZlÖw-ð:Ôí!ŸÓ ´öeµ(ÑøµªHv¶6èôdëAø û+¹Ž¡³azÙVx‡õnßÐå@2ÜmÖüäàÓ7ÏèC`Ÿ|îÒœ~LxSzÿ\ ígƒN_S5¸VÚ°•qÁ£é<¬,—§Šº•æh‘…àH4ù`j—•û¾»zí¸³1‘ðp˜Åo¿ÑÈ6#Û´FVL5¤6ªu¶‰9ñZ]¿›Mû­vÓLïÅ„†yô±.´úk7lµ©B•·ÛLäExö;qÿx³à-€êóE~qÃ’Ú HÇ-ûÍ€°£3˜‡“¼ ÷Q CÍ:KœÖ¬&›ßX23>ÉlZÔ0(ñÏonZ —éé_ƒÈlÉäÀLRÖ ¾GX“~†\™hî²¥m4ÿF•k_õ°kûÆšŸàü^l‹É@yx"@,¡LLac’[ívÆë½i¡Š ¤ØDædé%"÷÷¦øÇ‡E O&} ò¶ÇªIД?ùÞ%…¶5--xz@m×è–ššmI*¼i“±¼>ÜDÎw×ç¶<,Òª·K.5÷©÷4™ýûx(C]pNR\¢L÷ýØ »q™_Íž\ÎÂôx|oÁ©ý²?@©øSq r²•9Œ¹I¨ ß@jjén…³‚\…¦ˆ·¡úFÈm IY>®¦–Ö+¡ºcà%WÓ³· `&Åq#½°N„kEoÕ Z“”Ý$haû£¤¹–NÅxaõ$iù! |’eªE5Ó™ñ0TÐÏ–RÓr¤ÃnQÐЫäµGg„}ïJ‚õíšv¼OŸi&µ‘€{ö2˜-ÓUŠaö¨( ÖvÍ Šd1 Và²A¸ó½8ÖÝøJ$̵· Éõm±ÈF à _ðëŒLWÕô‰LÞ±°4Ú§óÌ%üÖŽ,w¹$¥£èq׉KXºu°IçKø-:m)Yú+_ºŠŽgê «®&ÙÃÒ]EZl'®Œvñ‹¬1ïc@Þr køØàY¤ UíB8ïÂ3Vp¥Ea•¾„7ø5t~9¶€ãJ²<®*!H5„§ž¶ i+`»TA¡Õeä{¦ P£û!4ja%F:ä+-ªENÕÀ޳hÛþ 5q‹Î$¿6Û/‹œ"ôݶûèòª¢Â‰¾Ú"ÒG_¢ÑÂv|øÊö¾§ø[‚7#ôHtí;³˜Sîà2Š’E‹MaǵÍ].Š©]¸QŽ€m?‡QÌâË î|fµe´q0 ëÀŽ\”üÁá5H¶ÅÏ~mæùÐä-Ьæœ•èxµ®©Ó5S…fþx7ª«†ÉèÞÖ Ð)ÇH d, Ÿ`¢ÌsŽª™¼¾Xb®mKÖPìoÃõñøì c»,0¸.?õÔ.²mÉÙ’†y¸öKµäÅXgá”Öt *ñóy,¶>ä“å=·7öOSØT<38¨\†ß9K\±&ó»œVN!g±îî6×S½h¼½ª8¡Èy…žë©ó¢T€ÑÃÿÛ>ÏGàAÓx"ãìo[•aÐqèØVbèº.g¾¨…þëö6Úþu{e#jl||Y…s *GͬBÓ/ø®FsqYjÎTcŸA¬(+g\#­Ú°aÄKÄÜšÇL¡f-f;WJ<„¦Ì”b‘Ï93³£<‚±bŠhh®bNíÑYÓZ¦b9”«f÷ª.’Ò‡95¦/ÔK°ŒJT‘ŒÙ%Þ­eÄ:jYkyÎF%r8¬û"Ÿ—×}$yÕ•ˆü\¢lXˆ,b!°Ë}•ÞGýÜ¢ÿ†²@hŠ £ëЄޢu1˜syÛ2™߀|ƒÕ䓈ç:q­GÝtŒ‹„ÔTO«¨ ,$"qÑÇ®h+LýÒ¥ØáJ¾rE‡C³ºè׬ðø÷g…YUÌç^k×ÚP§y3NÄ!_Þ€C?pÈ=rÈ—¿?‡4WE1¿)‡|uùòCî‘C¾údÈ8Œ@ŸÜG¾ŽÍÎ~NŽAÀ'ÌšêÄmù¨êºÑf2i iííëÛ1&¼bHºÏAC›P-,%…ÀuÁ{“üÀZ^[Ù¶Áj~”¶>[Ä|ùM‡;4׺U..ûÃe–qàkfB?©‡¾¨mBEµÚ.jGÁΈ[dvck”=Azª®Ý¤ëÈËž‡wW"”´þ:šnOÌVÈßÜ/¶¼¬Üî ¿É*vÔÛ:Æú½f_|:ïÊ~ü&r;±K ¬€!Šc%;Þ¹¦uÈç>}ÙvÕ°iù—2‹E+,ÉqÜDT[wëÌx}gTÐ`³üÛ?ïÓ@§>~qrtøüÕѧjãàÑ£¯=2ÿfÌão?ÆÍ7é7=ƒ/¿þ Þ ¾üòñà1ü¿1ƒo¾|ôoæÑ§BH?K”ÆüÛhy^¬*‡%L&°Õte¹²ç¤ÈG2§Ì¸ªÍé1†ª1O¥ðÁþ£ìY5¿–Ô‹g=3xôèÀ˜çùlvmžÉv²ì첤Շ‹:ŸøsŒË¨M5^\åuñÄ\WK3ÌÁ:*@.êò|¹ÀP­Ég£/ª:›V£rŒñ]³œp%ç&`QO íàŸ^¿3?ád>1o—ç“rh^–ÃbÖYíâ›æ²™ók*þ[?•ÖA^TÒ(OL: °}dÒ€@Û3˜—’/áZæw°¼6“|áëí·;ìû52(ªæe5‡n\4èØU9™˜óï}/'{”4¿ŸýüæÝ™9|ýÞürxrrøúìýƒjEMñ¡`8%ˆ¯ÀBgê|¶¸¢d¯ŽNžý 埿<>{h¿8>{}tzj^¼91‡æíáÉÙñ³w/OÌÛw'oßœísŠg§]Y79iü§^*Y,òrÒ@WßÃà5€Òdd.ó â°A:2¹_l2F“jvAƒ’žnO ûQ-ö kÄEÕ½ÌÞž9ž ÷÷ÌWßš³Eºy;ɇ…é›Ó%VüøÑžyZ5 ,úêИGƒƒƒƒþÁãGßì™w§‡Ð•çE3¬KÖ¬ïŸ,c–ÔrTA%Ø30êùä#i´òã*>õ 7P¬Žß€Á¯g‹ü#Àå«£Ž_GeM‹²×ßeËÕ­-âœcûÙÅ|²¿ø¸Àw«è¶ŸMA‘¢pÆ%Ë­1`|p-s?#¹½?o¶žWC ׳Ùì÷¨pJ=µ¥¶Æ•°ÁÎ,·N凅ëA ò ÊÌÆtöp Zg–t5§WH?% èÓå° ödÑŠ&ß´hšüŒP”0%L°Êße[(ÿ{YWûË)´.òÉþ0ϲã1 +`~䑨Þ:òxÚÍEœ¹M1ï9¡vq}Clüôœâµ¦®ËÒ Âär±˜÷ÅWWWû1>_üˆæ?³¾Öÿ”Ÿ¨ÕúÿËǬþ|3øôÿã/ôÿïñðz(É¡£×G'‡/Ae<}yüÌÀÿ½>=òÉ»³zsÏü%˜ëß~{e&4¾ý÷o÷èS§"fQn®ø‰üÞzùnP¾gæôó5ž\:ì‡rêDé)LÐTæ”=d¦ø±DƒÄÔœˆ*´"pÏ ²^æ³ ÌWe…p‘ x¡º*F ç$»ò-ˆˆ)®`BÏP, ¤F´*8#Ö$29©Ø¦¼˜1†‹ôI~Ž" ° í§Q5Å/˜[ò„ÚM ÊŸâr<Ȥ¼üÒê7³:½D™úiÄM],s´#`dÈÊYÕ~Ë,Îý> _ijYÖ,t]w¬É‡ÅùKøxÍW³”(›¬ÃÜÀ »%˜>"Š»L€FQpF½AãŒõŠÕW—Uc¥yƒ` d¶lxø¥ÝSþ\­‹GƒÎ AÍÔd`f–Ø/Ëó:¯¯» ©rÖ,À®Þïó^íN6Œ ‘^0n`+Ô¬Æür FßUë—ùoHÀÞÃOˆQ]Œ‹š²g€2€{ȓټ†ö¡‡o|³¦Å{zLÙöÍÈÐÞ*îPs‡§L ?N‚Æä® b…Œæ°Áh=Rã`ª÷ö\SÖœ4¬ž9á3&Es—‹¬Tú¿\¨ªXF85àF¨ÌgÇ!c‰@fxäãkéþ„™È‚ûmV]9¸#2F„ tnhtÎ*#Q'ž:$ó•Y¡hYc¶M)AÄ8/G0+Š'$f1£©.0$DYºù?U8*¸¡M|".µ&W·‚gê¡“B⮨ÁxGw«™ÃÇò¼œ”‹RäBfŠfÉÕ”$HÈïœ4"Å øP|ÌQJïÙIpÍrˆ6³huYà´Ë.ðÎAê1É 3. 6Ù¦ ÍE)üÜQÎK²­Q®x*]q‘S²Ï³ŒêFì U®i‚í9VSìå Câ<€s,áð¿ç ËL-3WÚo\3ÃÀ_eÙ¡Á9\¤¸DÜŸ+ÓE1o¾3»¸Ö)ÎêÀ–Ùî ôÃÛ®™M”fºº,¨H£†>NŠ ˜æ¤ñÒÏ¢òöô³¯m‡Q·GXN ŽE‘㈑øÜilW*N´®‰á5ŽÔ†Ëˆà…ÕÂä̃i55n(XœÎ*ïÍb“Ô»@ÙÀ@[:†/ÙÑo@„c+´­Q›ã>_Àp†øe"-ÍA€®  se™ƒ½ZÑéØbC‚gDìAÜ%T2@PíSÒ¥5x`CFƒ”HÃþ=ªXŒ'8ôÕ,€•‰>ÚAhÉn³Ë ü<¹Þ£F´xB”—`R€ê†¶0]h¹B½å8ÏÉóÜ'¾CÙJäCUŽØCéXsUô5#LΜ‰î4'v¢œÊåh‰H™êœ 7âì™=ô¡ àÍ!Í6ÒC— ü j¨›úz_„&34ÌÄ¢ ÐpRä‚!@:ÄÓïÜÙP#fMa­17PÊÃk¤»+—“a¶om°9Ž¿›¹¤Ÿ*è!KÍ1¥æÏ¯¡{^| ¯sXÊæóŒ+´öö³ÿ'[k.Ã׳£“W§æðõsóìÍëçÇgÇo^sdæÙ›·ï_ÿ´gžŸž?}‡Ÿ¨à«7Ï_?;Ĉü£}²œR¦’°#Û¹ÕWUý›H´ aØš,GÒ î£!íâc^ì\VT.M~-¦í,ÐóB‡³²dLëZ0Ù·ß2~Û`=@¸½Œl‡>©ÕÄžäðä6uå<çÙL-[hÙ´=gÃxê Â@¸€jùF ø‹ 0ò¾Ã“üê;žÓ%á=‡f¹¬MØ9€LɉÈdLìe>ŽÈ>„ i–i¬ÈuºCƒÔ±lss™_ ÉvÉ‚` $Þs(ô‚g8Y¢ñnCƒ“LZ™ÉìȘmÝú6ZžG(ÊefˆËG#0 hš4ftÇ6t@¼`¡º¢aÕ5/‚N’1‰†§·™;„ž°ˆ%«l¹hJšò Aºe•¥å8«—³éE([K§í‰ÅFÐpt\WS]%SÆz5Cs{L m„ŽÄh¹ hZŒ–Ù–wA ¸Š„²$"w^€}N‚ ú™À¸·ŸýÂŽqLV/étÚÕ ´bõŽëä¨*Xì³C©ÖkVk« ˜FÛ18¼Ú¸F³W;a†LA ,ÁÃÐYI.¡5ú‘4ór¸¬–Í„[™C²xÞHœ;A6‚ ©Ke~¦‰ä‘N 'y9ªÒVó?1¿aú L ä±î2®ÖX…öÅ…µ$dÏbvçM1ã¨%öÍΰ ‘Þ?T†@Hº íÛ ÃÖ®´DÄi”ØÓ!ãUìµ—× ‡ìÏâd¶î·ÄÞµ@ —Äæs摲¿Pé~´ž¹5š‰sžsľ#ˆÜ«:Í0VbŠdËX²áu大Œn§(Þ]Ê|ª Mí¡ ŸZÞ9•Îdù9ÌÛ_k€Á=- fîES(=þŸõ•÷¼0Ì— {ÎfÄØ;Éü!Ж }Äé-,G0è¢6šÓÖÇ$z³ÌaVÐÛÆãRûŒÇy âM$€«èÄ‘™%®­ä­_r¦¯d€áI6¢Ö ‡ÚIÕa¿"(ËÙóXÌîjŒNP`Qå¸ÜÁ­äHËϨ¢h6–õÈAAê²Üz'Õ÷¬éîHoý øŠìJ¼ñ…c3äPæ©|9#/0™j¦|B&%ò(}¤œ€m¥0Îd=ª®’‘(1Ž1Õ#д5J r )_›«‘óä³Yµ´§Ž³¦IH<“”x9ݾÞÈ€þËžµÀÈ,`<\…žXPtf|°¨ª—Bh¸x D4aD“‰Õ_γ[™eqÉD‚â-¼Ý£Ã‚ÄÕw¨`•½ÀÕs´cp..PבJwœÀÄç(Á, ù ±@ÙÞ´-„,ËšC0 1¶ßËÝÆM¨ì”ƒ “mâø•ÚôÓƒœÑ¬D[¾ÓŽô¦À ÝIªÂÆPçÔÜ#½$ë^0šjÐ(”‹¦QM¢·;°pƒ‡ "ŸaØ{S ñô×´Hìç ,Z<4E÷0ŽE±jßÏ T›CŸ¦R$(Þ‘7QÓt^.\…,b:>9Ú‚ÅUy=äc²ˆaׄ–Xýf±RáÕSepŠÒbÖ)”ZV e!8ìÃ!ìç±`að!>bH\†>á­¥kd.I[p8^óÉݪ‹‹¼2 ñ‡Jæ Õ4ÇΠâžZ& 5|²>À:‘2BÃHÅÿÈPm™A1öîj\Ñ+€å@”{b`”.ÉqðM‘{“aF»¿6pƱ! aL’ÄVTUg´ŸqèÜ©&i @ŸgèZ”¼¶3EI—_\ •,Xñy¸H• ,¶µH@ʪ{§%ÒÃß¹ù€ûQ!ƒ×Û,ªšVvë°lûz)t^[ù§°c±I<^JRË=^mªÇ]ˆ±G’•©5=ÔQÕùbLÅÆÀ :è”ä Zd ý›Úw@8 YQ]F ™ÉœâPÀÛO‡CÌ–Cs…rVd4lüQsL™áfXPt}›Û¸§œ=™óvÖê™nKuMØ`¼!@«¦y]ÿ/m`È Qé°5öH¸ç,²vÏr7ŸÈäÞÃÝd%ƒšM@:/(þÆýº.òšj¼[A „ë=1ÈÅ‚šUœDCŽ4-è‘a$+\ÖC@íWÔÖÖÂi~Ý#-Ì´'1Ńœpp‚q ÃðfcÐMîÉ-Æ`ØÅ]˜VÆMå³’}*Š™ˆu´ÕÑe´Q(z–O(Á–$˜˜1²lËá1…gh‰¢¤·­î°aTzXßá§m­õ“—úë ÔÜqºå@—šÃ;ætynµÃ9SLJ²ÑîýØ Žˆ1.´,ÈÃ1uš ábœDjCÏ èI+¢/ÈiÐHsDÎM}n=£Ö¹I»Ó ÞsŠRCá]ñZÀ³›,òLò¦©†¥ ˆÁÀ4.Êæ+«ÈÏ’ò,‡1•©aV­fõ"WJœŒÌŒO&¹6| —?ÃÀ@¢£m—ÉÑíèT³1»×êž.´Ä‡ZCâq¸šG‹ƒ.ÔãŒZ]mÝv d Ñ9y ŽSÏÏ„iþŸdL£É:Ýå"Æ¿6Mã=éa:ªf§µ¹np=™Pð†ýGO ¨ºœ‘ÝB8»¦21Ûs™¡h©GyX±µ  £‰¥f®ÖHœŒðË:5- dç²MÜ0ç|²jm-ƒæ:XFZÜgÍm2F oñFƒ4K™•””ŒËjyq©d{)+æäœÎÁiRI% H.RÄÀUc¾ô6]ÂG ×€ÿGAt—ƒš¶%2æTäÞâã¹ä@‰ª·â\™*¸š‰&àŠù"#犬Áª³ùîÖQ~âºó ­ÉþfQf¨EJÈ`Ý3Vææ¡%0šÐar)Ǭˆv™†5„µÐTLЭ¿ÙÌ…²öé71š:4LèÞ ,¶€?ˆ ]¸`9aÉ2)ñÊ12÷¾â¡³îö6‘%ç‹ÈkJ JÚÅibI· aëºF1±8®a^ ‹ÏaÛp)×%<Æ>— ø Ç­}pî z¼ö,1Z/¬«Ëò¼\p¨~’_¹Õ{qÛýa8 \*\›>¿–|mD<0°£àý®;ƒì=îà‚ãÐq ·ŸÏ†-Ûtep™#Ž6Íè& {Œ±C?‹ˆ¹8’êðõ>¯£Pî-(«Lý5=^褆h óS²ÍÇ‘–Ù…dù™"<‰ÃX¢Zà·xÁì&Y´Àåì¢c1Ô¦Pˆx*A3Här¼¬i½*H8ÌÕwŒs6E¸Š ¾R\Ò×~Î$ÉP‘­Ú‚C>ÈÎ@YRRâ˜úydßì›ã1+v §Àu+¨ÀkÿÏåè‚byl¤(ï”ל3°DQã¶ÐXÆÓ®`¼†¯æ£8 7åâo7Ë¢éíeŠ É&:# ïìJþ vбË,p—mÃ^R÷¬žÆT?˜& ±ô]ÑÙãå6žË¨.0ø‰í:ÕØ]—S.$ÿ «ë˜~%ÖxƒY;À^M‰¹éù¬àÅ"^Àr!v¥—ú™^¶QÙzŒ%…ßU5Qý­ADÓÛ2fÇÜ“eÿvfRnG×eÏÐVÅ9¢¦®®ÁM¸îSJšÜÊN°­€ðc³·¢4œÊ-°É 'þO8;}æ~IVôƒ»H’‡ IùDf¬,yÏH²A&”Œü9 C\Q¯Qi¹p ò ôÙ†S‹>­€üyYLÐ’fg3éf<) ²òXõœŒÃåÏ/ëárÚÔf wžO¼/4x•‰šqPÒ®§ØBjY"Ê\•ʳP¦›ÅÔã ä6_Ö$Á17™¥ègúų^eŸ¨Ý èV½–è…ël¢žÄê8pPÒÎBÑl.ù$lü2{§0´«|’ICW¿Ôq!i˜ÞÁ†˜þ=_Íp¿IVñsNϰÜ?§<̘W4ŽE…©Ö.%'£ý.0­YêH3οÂ%|>³ûZ(£Ìr;‰.ñI(Qäy5ã€wC‚“òZ†ÊgËÁX¢JO$ˆºœ»å^J¢úbTÍxðÃe–Rª•i.‰gÐ$õ ®?/ŒIN?qù"E² ¾¬J² Ï¢Y£Ù”RâQl£û”àt%Nâ9¡øÀà¼hk+֪͢%žÉ‰ø÷}»¸Ç)¾¬×Hb•JŸÀå›JŽQBK¼SäÏýç×~eKûé,£½9ÒÊ%B©H®WàÑvH¢ç£Ç `¸/ ,>¿¤ô ‹*éô¯Åe,ˆ]Wö853_„UƒíΙ‘0W ó„`ѱl¤b„*qÆ‹Sܵ«’Å`äW0ƒkºÃkAùþE˜çÀ•6À(ËçÕ¨•e@ÆË·û” Ó™ŠŽ”²Ùuñ¡¤Õ[rLj–m‰ÝÍØµ·l´bq:Á¿¸%û¦aÐäAÆ _¢pÜ›yYSÚº 3Ñ–-©ÁÛ#Ë…xó ‰xN8¢&\%/s#R $×vG&ã«oÄ!„1^B§Q.Ú||¤Ïµ¾±=ò µGX¶åH°¨T u¢i·Qx;=·÷¼G*Ûæhøà¹  †µM³+„©ª¶YASém¬Y‚Z}÷ L„ë ¢E²k—ÃRY;ßVAßtͦZµ'ƒS—í[ãÑæ ªÙA¶B+ÿ„ráXþê,ÔFÖï‚Õ#{[´u”õC&9ôh¾{OZLC§Üz¤sk(¿j§j°Ï·pTÓ'Y“‘>pAÆÆe<Ë6 { ¯Û# ,?ò¸`ÊøE•OhvÓÜ«?X¶c³DÎ’Óy¡¾Ð+»Ã'Ø7êiå|vÜùù #0¢F\Þ ªßêôúÛ²Lã°ož=;|wzdÎ~>2oOÞütrøÊŸÚ¬ØçæÅÉÑ‘yóÂ<ûùðä§£=,wr„%4,Ì‘U Ôú}ô÷³£×gæíÑÉ«ã³3€öô½9|û€>}yd^þÔ<úû³£·gæ—Ÿ^goü/Ç€ÏéÙ!V8~m~99>;~ýÄDÜ“ãŸ~>3?¿yùü脲u¿€Ö©"ïŸ>:Í¿?;µ}x ho»ýÛyìîåþŸÇ¯Ÿï™£ctô÷·'G§Ðÿ `¿Œàãñëg/ß=§Dà§áõ›3 ô ð<{C¤±e-t@à·6~cæð;¿‰„~r|ú?Íái&„ýw‡P`¼:|ýŒ*Hì®yÿæj è÷ËçX ³PGæùÑ‹£ggǃᅒÐÌé»WGBïÓ3"ÐË—æõÑ3À÷ðä½9=:ùÛñ3¤CvrôöðÈ9Ò''åÍk–-ƒ}<à’£¿!¼{ý{{rôï ? N@‡?·!1Õ¸g¿Cã8BñàïQøàÿ=°Ñóêð='f¿ö4]ævÈÀž;Ÿ¾A<|Ž -@ ‚CôüðÕáOG§{™cjZ’É÷ÌéÛ£gÇø|Öƒ±~ÉTYôïpá…1‡0œØ5äC2œƒÈk¯-@Ûñ¼ÜõmGü‡|ñòÍ)24rvhcø÷é–>9z ô¢étøìÙ»˜ZXk6§ï`²¿¦Aɰ¿4›OžÛùDt6/_¾;iñ´üHˆ ‰×Ü€X&;íí˜ãÐÔ³ŸeôL0kß›Ÿa(žA±Ãç;FÉÃíd0N…&o‚Бm>…þQùD?æþc‘Ÿ9Mê¼Qްž‘þ‡—ïQà¾cG´\ƒ,šqŠuRÍA9‹5äó(Õþ6ÉÒeyAû?šE>‡É–Ó?ìÚ‰Ç.(&}‰.=œçN:¨\d¡.`è6ì´ŽèP[AÝb± Úq6$»Xä²ääM#—Ìk-GCEÈjò1v 1vµ§¶0ŸI…kLøEÖX茻Y”w pÎ ŠkY³ã½3Í'S ‚"ú@ »ÚO6ü¶3¶ù,qv çy@”ŠC™|ÔÑ%/:ÐîFÔë@$I‚ü+Ò“êÛŒE€†Ðçà{Œ ¨üœ“‰øÀÊ ÿ`…Û«ÿŠ™?@ µ>=?p»w:ˆEbÇœAy‹ÃXLt‹ËÖÛü@Ûˆ:…OvÚäP–nz0 ¥‹Üípq·ZÜ£iÁw?¨…Ó#nX Ö_{`ËÆûù³ 7%Rˆ@çˆ`%0¥ð6K´– LU««tˆ÷Îñ´ Ç=ƒt =uÏŠG»«$G:Ö.£—{¡X6e?B9N o©]a’NõÓ ,ìlÚ[þþúÛ½h:ãl6áTnÕ‚+!HŸž¾y ¦ÇË÷Úl~B,!Ü`èÆŒÿC[W¯vöý¬ˆÅW=¤ Š ¶ƒt¤AT.xdý±'º¹áŽFdŸóV.¯çèåÑ"—Où¶ø®¶°¯Ývl- œÈÎÍgoÆ´®"K!¾=Z7n0ÄyÑ \p£å`pÒ(¼ v>%Q“L¦§é^dÓ @ö‡€ÁoÕ˜³%]AÐôû(ÈÉ“n–%/ëº ÿá¡J”™‡{‘©N”êºà{6È,p¹ÈR{ZÔ=ùë¬Aÿ} 3NgÇ•fÜEç#s~ÿͶߦbÍrœÍpŸ|ÃÛ5–4õ“(`Î>á*ªƒlÊ›-ÞW×ÕèzVØ)Ž*ñüÚ5ÄÉAš!h ˆ–ÆÐÿQ|¾ƒ«c”0³±áý¼‘4Ì‚iz.¢ýÄÆüœ+j’€å<Üù \rv 3­šý°gÀT«Ë L‚6 ØÃã:šÒnðúp„u;¤® ²È²‘p ÿèñ¥ÐF¦¶ÁºÜ[­EQŽ+´u… Ô(lè\ ¡Élr8mÏD©ÏªŠÖ°3(µK·¨ÂêKJɸ ±P¸²9¢vO÷ì9»}&qÔE–>ê¢Ùü£¶yxž‡çáyxž‡çáyxž‡çáyxž‡çáyxž‡çáyxž‡çáyxž‡çáyxž‡çáyxž‡çáùþÙ39ødenemo-2.2.0/actions/PaxHeaders.19168/AllCommands.commands0000644000000000000000000000013213135434035020105 xustar0030 mtime=1500919837.913315139 30 atime=1500919925.383315138 30 ctime=1500919912.903315138 denemo-2.2.0/actions/AllCommands.commands0000644000175000017500000136733013135434035021773 0ustar00jjbenhamjjbenham00000000000000 A Denemo Command Set AT, JRR, RTS 104 116 102 146 NewScore /MainMenu/FileMenu <_label>New <_tooltip>Start a new musical score for a named instrument/voice. NewWindow /MainMenu/FileMenu <_label>New Tab <_tooltip>Create working area (tab with an empty score in it) Open /MainMenu/FileMenu/OpenMenu <_label>Open <_tooltip>Open a file containing a music score for editing Save /MainMenu/FileMenu/SaveMenu <_label>Save <_tooltip>Save the score. The score is saved to disk in XML format. BookmarkNamed /MainMenu/NavigationMenu/Bookmarks <_label>Add Named Bookmark <_tooltip>Adds a Denemo bookmark combined with a custom Lilypond Rehearsal Mark DeleteObject /MainMenu/EditMenu/Delete <_label>Delete Object <_tooltip>Delete the object at the cursor ToggleReduceToDrawingArea /MainMenu/ViewMenu <_label>Hide/Show Menus <_tooltip>Hides/Shows menus, panes etc. The ones shown are those checked in the view menu. SharpenEnharmonicSet /MainMenu/InputMenu/MIDI <_label>Shift Accidentals Sharpwise <_tooltip>Shifts the set of accidentals one step sharper Play /MainMenu/PlaybackMenu <_label>Play <_tooltip>Playback from start marker to end marker (Set these markers in the playback controls) MoreCommands /MainMenu/MoreMenu <_label>More Commands <_tooltip>Allows choosing standard extra commands/menu items Ab-Pentascale /MainMenu/Educational/AuralTraining/Identify-Scale-Note <_label>Ab Pentascale <_tooltip>Identify Scale Notes that are sounded Help /MainMenu/HelpMenu <_label>Browse Manual <_tooltip>Opens a browser on the user manual EditScoreProperties /ObjectMenu/Score <_label>Score Properties Editor <_tooltip>Opens a dialog to edit the score properties. EditMovementProperties /ObjectMenu/MovementMenu <_label>Movement Properties Editor <_tooltip>Opens a dialog to edit the movement properties. EditStaffProperties /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Staff Properties Editor <_tooltip>Opens a dialog to edit the current staff properties. PianoStaff /ObjectMenu/StaffMenu/InsertStaff <_label>Add Piano Staff <_tooltip>Adds two staff braced together for keyboard instrument. DeleteStaff /ObjectMenu/StaffMenu <_label>Delete Current Staff <_tooltip>Deletes the current staff InitialClef /ObjectMenu/ClefMenu <_label>Initial Clef <_tooltip>Change the initial clef of the current staff InitialKey /ObjectMenu/Key <_label>Initial Key <_tooltip>Set the initial key signature of the current staff InitialTimeSig /ObjectMenu/TimeSig <_label>Inital Time Signature <_tooltip>Set the initial time signature of the current staff MoveToMeasureLeft /ObjectMenu/MeasureMenu <_label>Move to Measure Left <_tooltip>Moves the cursor to the first object in the next measure leaving selection, if any, unchanged AddA /ObjectMenu/ChordMenu/ChordNoteMenu <_label>Add A <_tooltip>Adds note A to the chord at cursor Cursor height determines which octave A /ObjectMenu/NotesRests/EditNote <_label>Change/Append A <_tooltip>Changes the note the cursor is on to the note A. If the cursor is in the appending position, appends a note using the prevailing duration. Ottava /ObjectMenu/Directives/Markings/Spanning <_label>Ottava <_tooltip>Inserts an 8va mark (transposing the notes accordingly) or terminates one already started. AddVerse /ObjectMenu/Lyrics <_label>Add Lyric Verse <_tooltip>Add a verse of lyrics CursorLeft /MainMenu/EditMenu/Select/ExtendSelect <_label>Selection Cursor Left <_tooltip>Moves the cursor one object left, altering the selection if any MoveCursorLeft /MainMenu/NavigationMenu/Cursor <_label>Move Cursor Left <_tooltip>Moves the cursor one object left, without altering the selection CursorDown /MainMenu/NavigationMenu/Cursor <_label>Cursor Down <_tooltip>Moves the cursor one scale step down CursorUp /MainMenu/NavigationMenu/Cursor <_label>Cursor Up <_tooltip>Moves the cursor one scale step up CursorRight /MainMenu/EditMenu/Select/ExtendSelect <_label>Selection Cursor Right <_tooltip>Moves the cursor one object right, altering the selection if any MoveCursorRight /MainMenu/NavigationMenu/Cursor <_label>Move Cursor Right <_tooltip>Moves the cursor one object right, without altering the selection GoToMark /MainMenu/NavigationMenu/Cursor <_label>To Mark <_tooltip>Moves the cursor to the Mark without altering the selection SwapPointAndMark /MainMenu/EditMenu/Select <_label>Swap Ends of Selection <_tooltip>Swaps the active end of the selection GoToSelectionStart <_label>To Selection Start <_tooltip>Moves the cursor to the first object in the selection without altering the selection. returns #f if no selection PushPosition /MainMenu/NavigationMenu/Cursor <_label>Push Position <_tooltip>Pushes the current cursor position onto a stack PopPosition /MainMenu/NavigationMenu/Cursor <_label>Pop Position <_tooltip>Pops a position from the stack of cursor positions, moving the cursor there PopPushPosition /MainMenu/NavigationMenu/Cursor <_label>Pop and Push Position <_tooltip>Pops a position from the stack of cursor positions, pushes the current position, then moves the cursor to the popped position StaffUp /MainMenu/EditMenu/Select/ExtendSelect <_label>Selection Staff Up <_tooltip>Moves the cursor to the staff above, extending selection if any StaffDown /MainMenu/EditMenu/Select/ExtendSelect <_label>Selection Staff Down <_tooltip>Moves the cursor to the staff below, extending selection if any MoveToStaffUp /MainMenu/NavigationMenu/Cursor <_label>Move to Staff Up <_tooltip>Moves the cursor to the staff above without altering selection. On the top staff it adds space above the staffs. MoveToStaffDown /MainMenu/NavigationMenu/Cursor <_label>Move to Staff Down <_tooltip>Moves the cursor to the staff below without altering selection MeasureLeft /MainMenu/NavigationMenu/Cursor <_label>Selection Measure Left <_tooltip>Moves the cursor to the first object in the next measure, extending selection if any MeasureRight /MainMenu/NavigationMenu/Cursor <_label>Selection Measure Right <_tooltip>Moves the cursor to the first object in the previous measure, extending selection if any MoveToMeasureRight /ObjectMenu/MeasureMenu <_label>Move to Measure Right <_tooltip>Moves the cursor to the first object in the previous measure leaving selection, if any, unchanged B /ObjectMenu/NotesRests/EditNote <_label>Change/Append B <_tooltip>Changes the note the cursor is on to the note B. If the cursor is in the appending position, appends a note using the prevailing duration. C /ObjectMenu/NotesRests/EditNote <_label>Change/Append C <_tooltip>Changes the note the cursor is on to the note C. If the cursor is in the appending position, appends a note using the prevailing duration. D /ObjectMenu/NotesRests/EditNote <_label>Change/Append D <_tooltip>Changes the note the cursor is on to the note D. If the cursor is in the appending position, appends a note using the prevailing duration. E /ObjectMenu/NotesRests/EditNote <_label>Change/Append E <_tooltip>Changes the note the cursor is on to the note E. If the cursor is in the appending position, appends a note using the prevailing duration. F /ObjectMenu/NotesRests/EditNote <_label>Change/Append F <_tooltip>Changes the note the cursor is on to the note F. If the cursor is in the appending position, appends a note using the prevailing duration. G /ObjectMenu/NotesRests/EditNote <_label>Change/Append G <_tooltip>Changes the note the cursor is on to the note G. If the cursor is in the appending position, appends a note using the prevailing duration. OctaveUp /ObjectMenu/NotesRests/EditNote <_label>Octave Up <_tooltip>Changes the note at the cursor to an octave higher OctaveDown /ObjectMenu/NotesRests/EditNote <_label>Octave Down <_tooltip>Changes the note at the cursor to an octave lower WholeNote <_label>WholeNote <_tooltip>Insert ð… HalfNote <_label>HalfNote <_tooltip>Insert ð…ž QuarterNote <_label>QuarterNote <_tooltip>Insert ð…Ÿ EighthNote <_label>EighthNote <_tooltip>Insert ð…  SixteenthNote <_label>SixteenthNote <_tooltip>Insert ð…¡ ThirtysecondNote <_label>ThirtysecondNote <_tooltip>Insert ð…¢ SixtyfourthNote <_label>SixtyfourthNote <_tooltip>Insert ð…£ OneHundredTwentyEighthNote <_label>OneHundredTwentyEighthNote <_tooltip>Insert ð…¤ TwoHundredFiftySixthNote <_label>TwoHundredFiftySixthNote <_tooltip>Insert ð…¥ AddDot /ObjectMenu/NotesRests/EditDuration <_label>Add Dot <_tooltip>Lengthen the chord, note or rest at the cursor by dotting it. RemoveDot /ObjectMenu/NotesRests/EditDuration <_label>Remove Dot <_tooltip>Reduce the dotting of the chord note or rest at the cursor. Augment /ObjectMenu/NotesRests/ChangeDuration <_label>Augment <_tooltip>Doubles the duration of the note/chord/rest at the cursor or the selection. E.g. Quarter Note becomes Half Note. PendingSharpen /ObjectMenu/NotesRests/InsertNote <_label>Sharpen Next Note <_tooltip>Increases the sharpness of the next entered note. The status bar shows the current state. PendingFlatten /ObjectMenu/NotesRests/InsertNote <_label>Flatten Next Note <_tooltip>Increases the flatness of the next entered note. The status bar shows the current state. InsertWholeRest /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð„» <_tooltip>Insert ð„» rest InsertHalfRest /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð„¼ <_tooltip>Insert ð„¼ rest InsertQuarterRest /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð„½ <_tooltip>Insert ð„½ rest InsertEighthRest /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð„¾ <_tooltip>Insert ð„¾ rest InsertSixteenthRest /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð„¿ <_tooltip>Insert ð„¿ rest InsertThirtysecondRest /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð…€ <_tooltip>Insert ð…€ rest InsertSixtyfourthRest /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð… <_tooltip>Insert ð… rest InsertBlankWholeNote /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð„» Spacer <_tooltip>Insert a non-printing ð„» rest InsertBlankHalfNote /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð„¼ Spacer <_tooltip>Insert a non-printing ð„¼ rest InsertBlankQuarterNote /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð„½ Spacer <_tooltip>Insert a non-printing ð„½ rest InsertBlankEighthNote /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð„¾ Spacer <_tooltip>Insert a non-printing ð„¾ rest InsertBlankSixteenthNote /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð„¿ Spacer <_tooltip>Insert a non-printing ð„¿ rest InsertBlankThirtysecondNote /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð…€ Spacer <_tooltip>Insert a non-printing ð…€ rest InsertBlankSixtyfourthNote /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð… Spacer <_tooltip>Insert a non-printing ð… rest InsertBlankOneHundredTwentyEighthNote /ObjectMenu/NotesRests/RestEntry <_label>Insert a ð…‚ Spacer <_tooltip>Insert a non-printing ð…‚ rest InsertBlankTwoHundredFiftySixthNote <_label>Insert a ð…ƒ Spacer <_tooltip>Insert a non-printing ð…ƒ rest NextRhythm /ObjectMenu/NotesRests/SelectDuration <_label>Next Snippet <_tooltip>Make next snippet the current snippet. Notes entered will follow the rhythmic pattern of this snippet InsertDuplet /ObjectMenu/NotesRests/Tuplets <_label>Insert Duplet <_tooltip>No Tooltip yet InsertTriplet /ObjectMenu/NotesRests/Tuplets <_label>Insert Triplet <_tooltip>Inserts a Start Triplet object and an End Tuplet object and places the cursor between these two StartTriplet /ObjectMenu/NotesRests/Tuplets <_label>Start Triplet <_tooltip>Inserts an Start Triplet object, which makes the notes following take 2/3 of their written duration. Later in this measure there should be an End Tuplet object. EndTuplet /ObjectMenu/NotesRests/Tuplets <_label>End Tuplet <_tooltip>Inserts an End Tuplet object, which terminates a tuplet started earlier in this measure. InsertQuadtuplet /ObjectMenu/NotesRests/Tuplets <_label>Insert Quadruplet <_tooltip>No Tooltip yet InsertQuintuplet /ObjectMenu/NotesRests/Tuplets <_label>Insert Quintuplet <_tooltip>No Tooltip yet InsertSextuplet /ObjectMenu/NotesRests/Tuplets <_label>Insert Sextuplet <_tooltip>No Tooltip yet InsertSeptuplet /ObjectMenu/NotesRests/Tuplets <_label>Insert Septuplet <_tooltip>No Tooltip yet AddNoteToChord /ObjectMenu/ChordMenu <_label>Add note <_tooltip>Add a note to the current chord The cursor position determines which note to add RemoveNoteFromChord /ObjectMenu/ChordMenu <_label>Remove note <_tooltip>Remove a note from the current chord, based on the cursor position Sharpen /ObjectMenu/NotesRests/EditNote <_label>Sharpen <_tooltip>Sharpen the note at the cursor Flatten /ObjectMenu/NotesRests/EditNote <_label>Flatten <_tooltip>Flatten the note at the cursor StemUp <_label>StemUp <_tooltip>Alters a StemNeutral object to stem up. StemDown <_label>StemDown <_tooltip>Alters a StemNeutral object to stem down. InsertTiedNote /ObjectMenu/NotesRests/EditNote <_label>Tied note <_tooltip>Inserts a duplicate of the current note, tied ToggleTie /ObjectMenu/NotesRests/TiedNotes <_label>Tie (Off/On) <_tooltip>Ties/unties the note at the cursor. The following note should be the same pitch. DeletePreviousObject /MainMenu/EditMenu/Delete <_label>Delete Previous Object <_tooltip>Delete to the left of the cursor. InsertMeasure /ObjectMenu/MeasureMenu <_label>Insert Measure Before <_tooltip>Insert a blank measure before the current one (in all staffs) AddMeasure /ObjectMenu/MeasureMenu <_label>Insert Measure After <_tooltip>Insert a blank measure after the current one (in all staffs) InsertMeasureBefore /ObjectMenu/MeasureMenu <_label>Staff Insert Measure Before <_tooltip>Insert a blank measure before the current one (in current staff) InsertMeasureAfter /ObjectMenu/MeasureMenu <_label>Staff Insert Measure After <_tooltip>Insert a blank measure in current staff after the current measure AppendMeasure /ObjectMenu/MeasureMenu <_label>Staff Append Measure <_tooltip>Append an empty measure at the end of the current staff DeleteMeasure /ObjectMenu/MeasureMenu <_label>Staff Delete Measure <_tooltip>Delete the current measure in this staff, leaving the staff short DeleteMeasureAllStaffs /ObjectMenu/MeasureMenu <_label>Delete Measure All Staffs <_tooltip>Delete the current measure in all staffs ShrinkMeasures /ObjectMenu/MeasureMenu/DisplayEffects <_label>Shrink Measure <_tooltip>No Tooltip yet WidenMeasures /ObjectMenu/MeasureMenu/DisplayEffects <_label>Widen Measures <_tooltip>No Tooltip yet ShorterStaffs /ObjectMenu/StaffMenu/DisplayEffects <_label>Shorter Staffs <_tooltip>No Tooltip yet TallerStaffs /ObjectMenu/StaffMenu/DisplayEffects <_label>Taller Staffs <_tooltip>No Tooltip yet InsertTrebleClef <_label>New Treble Clef <_tooltip>No Tooltip yet InsertBassClef <_label>New Bass Clef <_tooltip>No Tooltip yet Insertg8clef <_label>New G8 Clef <_tooltip>No Tooltip yet InsertAltoClef <_label>New Alto Clef <_tooltip>No Tooltip yet InsertTenorClef <_label>New Tenor Clef <_tooltip>No Tooltip yet InsertSopranoClef <_label>New Soprano Clef <_tooltip>No Tooltip yet SetInitialTrebleClef <_label>Set Treble Clef <_tooltip>No Tooltip yet SetInitialBassClef <_label>Set Bass Clef <_tooltip>No Tooltip yet SetInitialg8clef <_label>Set G8 Clef <_tooltip>No Tooltip yet SetInitialAltoClef <_label>Set Alto Clef <_tooltip>No Tooltip yet SetInitialTenorClef <_label>Set Tenor Clef <_tooltip>No Tooltip yet SetInitialSopranoClef <_label>Set Soprano Clef <_tooltip>No Tooltip yet Insert22Time <_label>Insert 2/2 Time <_tooltip>No Tooltip yet Insert32Time <_label>Insert 3/2 Time <_tooltip>No Tooltip yet Insert42Time <_label>Insert 4/2 Time <_tooltip>No Tooltip yet Insert44Time <_label>Insert 4/4 Time <_tooltip>No Tooltip yet Insert34Time <_label>Insert 3/4 Time <_tooltip>No Tooltip yet Insert24Time <_label>Insert 2/4 Time <_tooltip>No Tooltip yet Insert64Time <_label>Insert 6/4 Time <_tooltip>No Tooltip yet Insert38Time <_label>Insert 3/8 Time <_tooltip>No Tooltip yet Insert68Time <_label>Insert 6/8 Time <_tooltip>No Tooltip yet Insert128Time <_label>Insert 12/8 Time <_tooltip>No Tooltip yet Insert98Time <_label>Insert 9/8 Time <_tooltip>No Tooltip yet Set22Time <_label>Set 2/2 Time <_tooltip>No Tooltip yet Set32Time <_label>Set 3/2 Time <_tooltip>No Tooltip yet Set42Time <_label>Set 4/2 Time <_tooltip>No Tooltip yet Set44Time <_label>Set 4/4 Time <_tooltip>No Tooltip yet Set34Time <_label>Set 3/4 Time <_tooltip>No Tooltip yet Set24Time <_label>Set 2/4 Time <_tooltip>No Tooltip yet Set64Time <_label>Set 6/4 Time <_tooltip>No Tooltip yet Set38Time <_label>Set 3/8 Time <_tooltip>No Tooltip yet Set68Time <_label>Set 6/8 Time <_tooltip>No Tooltip yet Set128Time <_label>Set 12/8 Time <_tooltip>No Tooltip yet Set98Time <_label>Set 9/8 Time <_tooltip>No Tooltip yet InsertCmaj <_label>Insert Cmaj <_tooltip>No Tooltip yet InsertGmaj <_label>Insert Gmaj <_tooltip>No Tooltip yet InsertDmaj <_label>Insert Dmaj <_tooltip>No Tooltip yet InsertAmaj <_label>Insert Amaj <_tooltip>No Tooltip yet InsertEmaj <_label>Insert Emaj <_tooltip>No Tooltip yet InsertBmaj <_label>Insert Bmaj <_tooltip>No Tooltip yet InsertFSharpmaj <_label>Insert F# Major <_tooltip>No Tooltip yet InsertCSharpmaj <_label>Insert C# Major <_tooltip>No Tooltip yet InsertFmaj <_label>Insert F Major <_tooltip>No Tooltip yet InsertBflatmaj <_label>Insert Bb Major <_tooltip>No Tooltip yet InsertEflatmaj <_label>Insert Eb Major <_tooltip>No Tooltip yet InsertAflatmaj <_label>Insert Ab Major <_tooltip>No Tooltip yet InsertDflatmaj <_label>Insert Db Major <_tooltip>No Tooltip yet InsertGflatmaj <_label>Insert Gb Major <_tooltip>No Tooltip yet InsertCflatmaj <_label>Insert Cb Major <_tooltip>No Tooltip yet InsertAmin <_label>Insert A Minor <_tooltip>No Tooltip yet InsertEmin <_label>Insert E Minor <_tooltip>No Tooltip yet InsertBmin <_label>Insert B Minor <_tooltip>No Tooltip yet InsertFSharpmin <_label>Insert F# Minor <_tooltip>No Tooltip yet InsertCSharpmin <_label>Insert C# Minor <_tooltip>No Tooltip yet InsertGSharpmin <_label>Insert G# Minor <_tooltip>No Tooltip yet InsertDSharpmin <_label>Insert D# Minor <_tooltip>No Tooltip yet InsertASharpmin <_label>Insert A# Minor <_tooltip>No Tooltip yet InsertDmin <_label>Insert D Minor <_tooltip>No Tooltip yet InsertGmin <_label>Insert G Minor <_tooltip>No Tooltip yet InsertCmin <_label>Insert C Minor <_tooltip>No Tooltip yet InsertFmin <_label>Insert F Minor <_tooltip>No Tooltip yet InsertBflatmin <_label>Insert Bb Minor <_tooltip>No Tooltip yet InsertEflatmin <_label>Insert Eb Minor <_tooltip>No Tooltip yet InsertAflatmin <_label>Insert Ab Minor <_tooltip>No Tooltip yet SetInitialCmaj <_label>Set Initial Keysig to C Major <_tooltip>No Tooltip yet SetInitialGmaj <_label>Set Initial Keysig to G Major <_tooltip>No Tooltip yet SetInitialDmaj <_label>Set D Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialAmaj <_label>Set A Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialEmaj <_label>Set E Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialBmaj <_label>Set B Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialFSharpmaj <_label>Set F# Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialCSharpmaj <_label>Set C# Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialFmaj <_label>Set F Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialBflatmaj <_label>Set Bb Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialEflatmaj <_label>Set Eb Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialAflatmaj <_label>Set Ab Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialDflatmaj <_label>Set Db Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialGflatmaj <_label>Set Gb Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialCflatmaj <_label>Set Cb Major as Initial Keysig <_tooltip>No Tooltip yet SetInitialAmin <_label>Set A Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialEmin <_label>Set E Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialBmin <_label>Set B Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialFSharpmin <_label>Set F# Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialCSharpmin <_label>Set C# Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialGSharpmin <_label>Set G# Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialDSharpmin <_label>Set D# Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialASharpmin <_label>Set A# Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialDmin <_label>Set D Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialGmin <_label>Set G Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialCmin <_label>Set C Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialFmin <_label>Set F Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialBflatmin <_label>Set Bb Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialEflatmin <_label>Set Eb Minor as Initial Keysig <_tooltip>No Tooltip yet SetInitialAflatmin <_label>Set Ab Minor as Initial Keysig <_tooltip>No Tooltip yet SetMark /MainMenu/EditMenu/Select <_label>Set Mark <_tooltip>Sets the start point for a selection, the end point of the selection is unaltered UnsetMark /MainMenu/EditMenu/Select <_label>Unset Mark <_tooltip>Gets rid of the selection. SetPoint /MainMenu/EditMenu/Select <_label>Set Point <_tooltip>Extends the selection to the current cursor position ToggleBeginSlur /ObjectMenu/NotesRests/Slurs <_label>Begin Slur (Off/On) <_tooltip>Insert/delete begin slur on this note ToggleEndSlur /ObjectMenu/NotesRests/Slurs <_label>End Slur (Off/On) <_tooltip>Insert/delete end slur on this note ToggleStartCrescendo /ObjectMenu/NotesRests/Markings/Dynamics <_label>Start Crescendo (Off/On) <_tooltip>Marks/Unmarks the chord or note at the cursor as the start of a crescendo. ToggleEndCrescendo /ObjectMenu/NotesRests/Markings/Dynamics <_label>End Crescendo (Off/On) <_tooltip>Marks/Unmarks the chord or note at the cursor as the end of a crescendo. ToggleStartDiminuendo /ObjectMenu/NotesRests/Markings/Dynamics <_label>Start Diminuendo (Off/On) <_tooltip>Marks/Unmarks the chord or note at the cursor as the start of a diminuendo. ToggleEndDiminuendo /ObjectMenu/NotesRests/Markings/Dynamics <_label>End Diminuendo (Off/On) <_tooltip>Marks/Unmarks the chord or note at the cursor as the end of a diminuendo. ToggleGrace /ObjectMenu/NotesRests/GraceNotes <_label>Grace Note Off/On <_tooltip>Makes the note at the cursor an appogiatura grace note, if it is one, makes it normal ToggleAcciaccatura /ObjectMenu/NotesRests/GraceNotes <_label>Acciaccatura Off/On <_tooltip>Makes the note at the cursor an acciaccatura grace note, if it is one, makes it normal ForceCaution <_label>Force Cautionary Accidental <_tooltip>Give a cautionary accidental to the note at the cursor ChangePitch <_label>Change Pitch <_tooltip>Changes the pitch of the note at the cursor to the cursor height InsertRhythm /ObjectMenu/NotesRests/EditDuration <_label>Insert Snippet <_tooltip>Inserts the current music snippet, or if none is selected prompts for a number 1,2... for the snippet to insert. AppendMeasureAllStaffs /ObjectMenu/MeasureMenu <_label>Append Measure All Staffs <_tooltip>Appends a blank measure to every staff in this movement Preferences /MainMenu/EditMenu <_label>Change Preferences <_tooltip>Set and save your preferences for how Denemo operates on startup. Advanced users can edit .denemo-XXXX/denemorc for missing ones FlattenEnharmonicSet /MainMenu/InputMenu/MIDI <_label>Shift Accidentals Flatwise <_tooltip>Shifts the set of accidentals one step flatter New <_label>Empty Score <_tooltip>Start a new musical score AddStaffs /MainMenu/FileMenu/OpenMenu <_label>Add Staffs <_tooltip>Add staffs from a Denemo file AddMovements /MainMenu/FileMenu/OpenMenu <_label>Add Movement <_tooltip>Add movements from a Denemo file MovementProps <_label>Change Properties <_tooltip>Change properties of this movement OpenNewWindow /MainMenu/FileMenu/OpenMenu <_label>Open In New <_tooltip>Open a file containing a music score for editing in a separate working area (tab) SaveAs /MainMenu/FileMenu/SaveMenu <_label>Save As <_tooltip>Save the score under a new name SaveCopy /MainMenu/FileMenu/SaveMenu <_label>Create Copy <_tooltip>Save a copy of the score OpenTemplate /MainMenu/FileMenu/OpenMenu <_label>Open Standard Template <_tooltip>Start a new score from a built-in template file OpenExample /MainMenu/FileMenu/OpenMenu <_label>Open Example <_tooltip>Start a new score from a built-in example OpenMyTemplate /MainMenu/FileMenu/OpenMenu <_label>Open Custom Template <_tooltip>Start a new score from one of your own template files SaveTemplate /MainMenu/FileMenu/SaveMenu <_label>Save Template <_tooltip>Save the score as a template for re-use as a starting point for new scores InsertMovementBefore /ObjectMenu/MovementMenu/InsertMovement <_label>Insert Movement Before <_tooltip>Insert a new movement before the current one InsertMovementAfter /ObjectMenu/MovementMenu/InsertMovement <_label>Insert Movement After <_tooltip>Insert a new movement after the current one NewMovement /ObjectMenu/MovementMenu/InsertMovement <_label>New Movement <_tooltip>Create a new movement, using any default template SaveParts /MainMenu/FileMenu/SaveMenu <_label>Save Parts <_tooltip>Save Parts: each staff becomes a file in lilypond format ExportMUDELA /MainMenu/FileMenu/Export <_label>Export Lilypond <_tooltip>Export the score as a lilypond file ExportPDF /MainMenu/FileMenu/Export <_label>Export PDF <_tooltip>Export the score as a PDF document file ExportPNG /MainMenu/FileMenu/Export <_label>Export Score as PNG <_tooltip>Export the score as a PNG image file ExportMIDI /MainMenu/FileMenu/Export <_label>Export MIDI <_tooltip>Export the score as a MIDI file ImportLilypond /MainMenu/FileMenu/Import <_label>Import Lilypond (Limited) <_tooltip>Import a Lilypond file ImportMidi /MainMenu/FileMenu/Import <_label>Import Midi (Limited) <_tooltip>Try to Import a Midi file ImportMusicXml /MainMenu/FileMenu/Import <_label>Import MusicXml <_tooltip>Import a MusicXml file PrintView /MainMenu/FileMenu/PrintMenu <_label>Print Preview <_tooltip>Typesets the score If you have a score layout selected it will use that otherwise all movements staffs and lyrics are typeset by default. Be patient! It takes time to create a beautifully laid out score. Once complete you can view and then send to your printer or to a file as a .pdf document. PrintSelection /MainMenu/FileMenu/PrintMenu <_label>Print Selection <_tooltip>Displays selected music from score in your pdf viewer PrintExcerptPreview /MainMenu/FileMenu/Export <_label>Export Selection as PNG <_tooltip>Displays a musical excerpt in your image viewer PrintMovement /MainMenu/FileMenu/PrintMenu <_label>Print Movement <_tooltip>Typesets the current movement and opens a print dialog Print /MainMenu/FileMenu/PrintMenu <_label>Print <_tooltip>Typesets the score using LilyPond and opens a print dialog PrintPart /MainMenu/FileMenu/PrintMenu <_label>Print Part <_tooltip>Typesets the current part (the one containing the cursor). Close /MainMenu/FileMenu <_label>Close Score <_tooltip>Close the current score. Other scores (tabs) will stay open Quit /MainMenu/FileMenu <_label>Quit <_tooltip>Quit the Denemo program - closes tabs one at a time. Undo /MainMenu/EditMenu <_label>Undo <_tooltip>Undoes one (more) step of your edits to the current score. Redo /MainMenu/EditMenu <_label>Redo <_tooltip>Redoes the next of the steps you have Undone Copy /MainMenu/EditMenu <_label>Copy <_tooltip>Copy the music selected to the Denemo clipboard Cut /MainMenu/EditMenu <_label>Cut <_tooltip>Cut the music selected to the Denemo clipboard Paste /MainMenu/EditMenu <_label>Paste <_tooltip>Paste the Denemo clipboard into the score where the cursor is positioned PasteClipboard /MainMenu/EditMenu <_label>Paste LilyPond notes <_tooltip>Paste LilyPond notes from the text clipboard This will import music written as LilyPond syntax You open the LilyPond file in a texteditor, copy the stretch of notes (control-c command in your texteditor usually) and then use this command. PasteComment /MainMenu/EditMenu <_label>Paste a Comment <_tooltip>Paste the text clipboard as a comment inserted at the cursor. ScoreProperties <_label>Score Properties <_tooltip>Change built-in properties of the current score. This will start up a dialog window SaveSelection <_label>Save Selection <_tooltip>Save the selected music. Not sure if this is working SaveAccels <_label>Save Command Set <_tooltip>Save the current commands and keyboard shortcuts as the default CommandManagement <_label>Manage Command Set <_tooltip>View help, change and save keyboard shortcuts SwapStaffs /ObjectMenu/StaffMenu <_label>Swap Staffs <_tooltip>Swap this staff with the one higher up. Be aware that if you have inserted directives to move a voice to another staff these may need re-making. SplitVoices /ObjectMenu/StaffMenu/Voices <_label>Split Voices <_tooltip>Split off the next voice as a separate staff JoinVoices /ObjectMenu/StaffMenu/Voices <_label>Join Voices <_tooltip>Merge this staff as a voice on the previous staff SwapMovements /ObjectMenu/MovementMenu <_label>Swap Movements <_tooltip>Swap this movement with the one before VoiceUp /MainMenu/EditMenu/Select/ExtendSelect <_label>Selection Voice Up <_tooltip>Go to the higher numbered voice on staff, extending selection if any VoiceDown /MainMenu/EditMenu/Select/ExtendSelect <_label>Selection Voice Down <_tooltip>Go to the lower numbered voice on this staff, extending selection if any MoveToVoiceUp /MainMenu/NavigationMenu/Cursor <_label>Move to Voice Up <_tooltip>Go to the higher numbered voice on staff without altering selection MoveToVoiceDown /MainMenu/NavigationMenu/Cursor <_label>Move to Voice Down <_tooltip>Go to the lower numbered voice on this staff without altering selection AddBefore /ObjectMenu/StaffMenu/InsertStaff <_label>Add Staff Before <_tooltip>Inserts a new staff before the current staff AddAfter /ObjectMenu/StaffMenu/InsertStaff <_label>Add Staff After <_tooltip>Inserts/Adds a new staff after the current staff AddInitial /ObjectMenu/StaffMenu/InsertStaff <_label>Add Initial Staff <_tooltip>Inserts a new staff at the top of the score AddLast /ObjectMenu/StaffMenu/InsertStaff <_label>Add Last Staff <_tooltip>Inserts a new staff at the end of the score DeleteBefore <_label>Delete Staff Before <_tooltip>Deletes the staff before the current staff DeleteAfter <_label>Delete Staff After <_tooltip>Deletes the staff after the current staff AddVoice <_label>Add Voice <_tooltip>Adds a new voice (part), to the current staff. It is tricky to switch between the voices. Suggest to use merge staffs StaffProperties /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Built-in Staff Properties <_tooltip>Change the built-in properties of the current staff InsertClef /ObjectMenu/ClefMenu <_label>Clef Change <_tooltip>Insert/Edit a change of clef at the cursor InsertKey /ObjectMenu/Key <_label>Key Signature Change <_tooltip>Insert/Edit a key change at the cursor position InsertTimeSig /ObjectMenu/TimeSig <_label>Time Signature Change <_tooltip>Edit/Insert a time signature change for the current measure ChangeNotehead /ObjectMenu/NotesRests/NoteheadControl <_label>Set Notehead <_tooltip>Change the type of notehead for the current note InsertStem /ObjectMenu/NotesRests/StemControl <_label>Auto Stemming <_tooltip>Inserts a stem neutral object. After this automatic stem directions are active. You can click on this tag and use Sharpen/StemUp etc commands to change stem direction DeleteVerse /ObjectMenu/Lyrics <_label>Delete Verse <_tooltip>Deletes current verse of lyrics from current voice EditFiguredBass /ObjectMenu/NotesRests/Markings/FiguredBass <_label>Insert/Edit Figured Bass <_tooltip>Add a bass figure to the current note. Use | sign to split the duration of a note so as to have multiple figures on one note. See Lilypond docs for other notation DeleteFiguredBass /ObjectMenu/NotesRests/Markings/FiguredBass <_label>Delete Figures <_tooltip>Delete the figured bass on the current staff DeleteChordSymbols /ObjectMenu/NotesRests/Markings/ChordSymbols <_label>Delete Chord Symbols <_tooltip>Delete the chord symbols on the current staff HideFiguredBass /ObjectMenu/NotesRests/Markings/FiguredBass <_label>Hide Figures (Print) <_tooltip>Hide the figured bass on the current staff on printing ShowFiguredBass /ObjectMenu/NotesRests/Markings/FiguredBass <_label>Show Figures (Print) <_tooltip>Show the figured bass on the current staff on printing EditChords /ObjectMenu/NotesRests/Markings/ChordSymbols <_label>Edit Chord Symbols <_tooltip>Allows chord symbols to be added to the current note. E.G.cis:dim7 for c-sharp diminished 7th. See Lilypond docs for notation EditObject /MainMenu/EditMenu <_label>Edit at Cursor <_tooltip>Edit in the context of the object at the cursor. EditVoiceProperties /ObjectMenu/StaffMenu/Voices <_label>Voice Properties Editor <_tooltip>Opens a dialog to edit the voice properties of the current staff. EditDirective <_label>Edit Directives <_tooltip>Edit any directives attached to chord/note at cursor. EditStaffDirective /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Edit Staff Directives <_tooltip>Edit any directives attached to staff. EditVoiceDirective /ObjectMenu/StaffMenu/Voices <_label>Edit Voice Directives <_tooltip>Edit any directives attached to voice. EditScoreDirective <_label>Edit Score Directives <_tooltip>Edit any directives attached to score. EditMovementDirective <_label>Edit Movement Directives <_tooltip>Edit any directives attached to movement. EditClefDirective <_label>Edit Clef Directives <_tooltip>Edit any directives attached to clef. EditTimesigDirective <_label>Edit Time Signature Directives <_tooltip>Edit any directives attached to time signature. EditKeysigDirective <_label>Edit Key Signature Directives <_tooltip>Edit any directives attached to key signature. DeleteDirective <_label>Delete a Directive <_tooltip>Delete a directive attached to chord/note at cursor. GoToMeasure /MainMenu/NavigationMenu/Cursor <_label>Go to Measure <_tooltip>Opens a dialog for going to a numbered measure GoToBeginning /MainMenu/EditMenu/Select/ExtendSelect <_label>Go to Beginning <_tooltip>Cursor to start of staff/voice, extending selection if any GoToEnd /MainMenu/EditMenu/Select/ExtendSelect <_label>Go to End <_tooltip>Cursor to end of staff/voice, extending selection if any MoveToBeginning /MainMenu/NavigationMenu/Cursor <_label>Move to Staff/Voice Beginning <_tooltip>Cursor to start of staff/voice, without extending selection if any MoveToEnd /MainMenu/NavigationMenu/Cursor <_label>Move to Staff/Voice End <_tooltip>Cursor to end of staff/voice, without extending selection if any NextMovement /ObjectMenu/MovementMenu <_label>Next Movement <_tooltip>Go to the next movement PreviousMovement /ObjectMenu/MovementMenu <_label>Previous Movement <_tooltip>Go to the previous movement DeleteMovement /ObjectMenu/MovementMenu <_label>Delete Movement <_tooltip>Delete the current movement Stop /MainMenu/PlaybackMenu <_label>Stop <_tooltip>Stop Playback PlaybackProperties <_label>Playback Properties <_tooltip>Allows you to specify properties used in playing back (midi) About /MainMenu/HelpMenu <_label>About <_tooltip>Gives the version number etc of this program Shortcuts /MainMenu/HelpMenu <_label>Shortcuts <_tooltip>Gives a list of shortcuts currently available. Explains how to set them too. MyCommands /MainMenu/MoreMenu <_label>My Commands <_tooltip>Allows choosing extra commands/menu items from your own collection of extras FetchCommands <_label>Update Commands from Internet <_tooltip>Refreshes the set of commands available from Denemo.org. Use More Commands after this has finished ClearOverlay /MainMenu/EditMenu/Delete <_label>Clear Overlay <_tooltip>Clear the list of pitches that overlay the notes CreateRhythm <_label>Create Snippet <_tooltip>Copy selection as music snippet or rhythm pattern for notes to follow as they are entered DeleteRhythm <_label>Delete Snippet <_tooltip>Delete the selected music snippet/rhythm pattern InsertA /ObjectMenu/NotesRests/InsertNote <_label>Insert A <_tooltip>Inserts note A before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddNoteA <_label>Insert A After <_tooltip>Inserts note A after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm ChangeToA <_label>Change to A <_tooltip>Changes note at cursor to nearest note A Rhythm is unchanged MoveToA /MainMenu/NavigationMenu/Cursor/CursorToNote <_label>Move to A <_tooltip>Moves cursor to nearest note A InsertB /ObjectMenu/NotesRests/InsertNote <_label>Insert B <_tooltip>Inserts note B before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddNoteB <_label>Insert B After <_tooltip>Inserts note B after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddB /ObjectMenu/ChordMenu/ChordNoteMenu <_label>Add B <_tooltip>Adds note B to the chord at cursor Cursor height determines which octave ChangeToB <_label>Change to B <_tooltip>Changes note at cursor to nearest note B Rhythm is unchanged MoveToB /MainMenu/NavigationMenu/Cursor/CursorToNote <_label>Move to B <_tooltip>Moves cursor to nearest note B InsertC /ObjectMenu/NotesRests/InsertNote <_label>Insert C <_tooltip>Inserts note C before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddNoteC <_label>Insert C After <_tooltip>Inserts note C after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddC /ObjectMenu/ChordMenu/ChordNoteMenu <_label>Add C <_tooltip>Adds note C to the chord at cursor Cursor height determines which octave ChangeToC <_label>Change to C <_tooltip>Changes note at cursor to nearest note C Rhythm is unchanged MoveToC /MainMenu/NavigationMenu/Cursor/CursorToNote <_label>Move to C <_tooltip>Moves cursor to nearest note C InsertD /ObjectMenu/NotesRests/InsertNote <_label>Insert D <_tooltip>Inserts note D before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddNoteD <_label>Insert D After <_tooltip>Inserts note D after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddD /ObjectMenu/ChordMenu/ChordNoteMenu <_label>Add D <_tooltip>Adds note D to the chord at cursor Cursor height determines which octave ChangeToD <_label>Change to D <_tooltip>Changes note at cursor to nearest note D Rhythm is unchanged MoveToD /MainMenu/NavigationMenu/Cursor/CursorToNote <_label>Move to D <_tooltip>Moves cursor to nearest note D InsertE /ObjectMenu/NotesRests/InsertNote <_label>Insert E <_tooltip>Inserts note E before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddNoteE <_label>Insert E After <_tooltip>Inserts note E after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddE /ObjectMenu/ChordMenu/ChordNoteMenu <_label>Add E <_tooltip>Adds note E to the chord at cursor Cursor height determines which octave ChangeToE <_label>Change to E <_tooltip>Changes note at cursor to nearest note E Rhythm is unchanged MoveToE /MainMenu/NavigationMenu/Cursor/CursorToNote <_label>Move to E <_tooltip>Moves cursor to nearest note E InsertF /ObjectMenu/NotesRests/InsertNote <_label>Insert F <_tooltip>Inserts note F before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddNoteF <_label>Insert F After <_tooltip>Inserts note F after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddF /ObjectMenu/ChordMenu/ChordNoteMenu <_label>Add F <_tooltip>Adds note F to the chord at cursor Cursor height determines which octave ChangeToF <_label>Change to F <_tooltip>Changes note at cursor to nearest note F Rhythm is unchanged MoveToF /MainMenu/NavigationMenu/Cursor/CursorToNote <_label>Move to F <_tooltip>Moves cursor to nearest note F InsertG /ObjectMenu/NotesRests/InsertNote <_label>Insert G <_tooltip>Inserts note G before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddNoteG <_label>Insert G After <_tooltip>Inserts note G after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythm AddG /ObjectMenu/ChordMenu/ChordNoteMenu <_label>Add G <_tooltip>Adds note G to the chord at cursor Cursor height determines which octave ChangeToG <_label>Change to G <_tooltip>Changes note at cursor to nearest note G Rhythm is unchanged MoveToG /MainMenu/NavigationMenu/Cursor/CursorToNote <_label>Move to G <_tooltip>Moves cursor to nearest note G 0 /ObjectMenu/NotesRests/EditDuration <_label>Insert/Append a ð… <_tooltip>When appending, appends a ð… With the cursor on a note inserts a ð… before the current note If MIDI-in is active, the note will be pitchless (displays yellow, percussion-sounding) - the MIDI keyboard will provide the pitch. Changes prevailing duration. Change0 <_label>Change to ð… <_tooltip>Change the current note to a ð… Insert0 /ObjectMenu/NotesRests/InsertNote/InsertDuration <_label>ð… <_tooltip>Insert a ð… InsertRest0 <_label>Insert a ð„» <_tooltip>Inserts a rest at cursor position Sets prevailing rhythm to ð… Set0 /ObjectMenu/NotesRests/SelectDuration <_label>Set Prevailing Duration to ð… <_tooltip>Set the prevailing duration to ð… (subsequent notes entered will have this duration) 1 /ObjectMenu/NotesRests/EditDuration <_label>Insert/Append a ð…ž <_tooltip>When appending, appends a ð…ž With the cursor on a note inserts a ð…ž before the current note If MIDI-in is active, the note will be pitchless (displays yellow, percussion-sounding) - the MIDI keyboard will provide the pitch. Changes prevailing duration. Change1 <_label>Change to ð…ž <_tooltip>Change the current note to a ð…ž Insert1 /ObjectMenu/NotesRests/InsertNote/InsertDuration <_label>ð…ž <_tooltip>Insert a ð…ž InsertRest1 <_label>Insert a ð„¼ <_tooltip>Inserts a rest at cursor position Sets prevailing rhythm to ð…ž Set1 /ObjectMenu/NotesRests/SelectDuration <_label>Set Prevailing Duration to ð…ž <_tooltip>Set the prevailing duration to ð…ž (subsequent notes entered will have this duration) 2 /ObjectMenu/NotesRests/EditDuration <_label>Insert/Append a ð…Ÿ <_tooltip>When appending, appends a ð…Ÿ With the cursor on a note inserts a ð…Ÿ before the current note If MIDI-in is active, the note will be pitchless (displays yellow, percussion-sounding) - the MIDI keyboard will provide the pitch. Changes prevailing duration. Change2 <_label>Change to ð…Ÿ <_tooltip>Change the current note to a ð…Ÿ Insert2 /ObjectMenu/NotesRests/InsertNote/InsertDuration <_label>ð…Ÿ <_tooltip>Insert a ð…Ÿ InsertRest2 <_label>Insert a ð„½ <_tooltip>Inserts a rest at cursor position Sets prevailing rhythm to ð…Ÿ Set2 /ObjectMenu/NotesRests/SelectDuration <_label>Set Prevailing Duration to ð…Ÿ <_tooltip>Set the prevailing duration to ð…Ÿ (subsequent notes entered will have this duration) 3 /ObjectMenu/NotesRests/EditDuration <_label>Insert/Append a ð…  <_tooltip>When appending, appends a ð…  With the cursor on a note inserts a ð…  before the current note If MIDI-in is active, the note will be pitchless (displays yellow, percussion-sounding) - the MIDI keyboard will provide the pitch. Changes prevailing duration. Change3 <_label>Change to ð…  <_tooltip>Change the current note to a ð…  Insert3 /ObjectMenu/NotesRests/InsertNote/InsertDuration <_label>ð…  <_tooltip>Insert a ð…  InsertRest3 <_label>Insert a ð„¾ <_tooltip>Inserts a rest at cursor position Sets prevailing rhythm to ð…  Set3 /ObjectMenu/NotesRests/SelectDuration <_label>Set Prevailing Duration to ð…  <_tooltip>Set the prevailing duration to ð…  (subsequent notes entered will have this duration) 4 /ObjectMenu/NotesRests/EditDuration <_label>Insert/Append a ð…¡ <_tooltip>When appending, appends a ð…¡ With the cursor on a note inserts a ð…¡ before the current note If MIDI-in is active, the note will be pitchless (displays yellow, percussion-sounding) - the MIDI keyboard will provide the pitch. Changes prevailing duration. Change4 <_label>Change to ð…¡ <_tooltip>Change the current note to a ð…¡ Insert4 /ObjectMenu/NotesRests/InsertNote/InsertDuration <_label>ð…¡ <_tooltip>Insert a ð…¡ InsertRest4 <_label>Insert a ð„¿ <_tooltip>Inserts a rest at cursor position Sets prevailing rhythm to ð…¡ Set4 /ObjectMenu/NotesRests/SelectDuration <_label>Set Prevailing Duration to ð…¡ <_tooltip>Set the prevailing duration to ð…¡ (subsequent notes entered will have this duration) 5 /ObjectMenu/NotesRests/EditDuration <_label>Insert/Append a ð…¢ <_tooltip>When appending, appends a ð…¢ With the cursor on a note inserts a ð…¢ before the current note If MIDI-in is active, the note will be pitchless (displays yellow, percussion-sounding) - the MIDI keyboard will provide the pitch. Changes prevailing duration. Change5 <_label>Change to ð…¢ <_tooltip>Change the current note to a ð…¢ Insert5 /ObjectMenu/NotesRests/InsertNote/InsertDuration <_label>ð…¢ <_tooltip>Insert a ð…¢ InsertRest5 <_label>Insert a ð…€ <_tooltip>Inserts a rest at cursor position Sets prevailing rhythm to ð…¢ Set5 /ObjectMenu/NotesRests/SelectDuration <_label>Set Prevailing Duration to ð…¢ <_tooltip>Set the prevailing duration to ð…¢ (subsequent notes entered will have this duration) 6 /ObjectMenu/NotesRests/EditDuration <_label>Insert/Append a ð…£ <_tooltip>When appending, appends a ð…£ With the cursor on a note inserts a ð…£ before the current note If MIDI-in is active, the note will be pitchless (displays yellow, percussion-sounding) - the MIDI keyboard will provide the pitch. Changes prevailing duration. Change6 <_label>Change to ð…£ <_tooltip>Change the current note to a ð…£ Insert6 /ObjectMenu/NotesRests/InsertNote/InsertDuration <_label>ð…£ <_tooltip>Insert a ð…£ InsertRest6 <_label>Insert a ð… <_tooltip>Inserts a rest at cursor position Sets prevailing rhythm to ð…£ Set6 /ObjectMenu/NotesRests/SelectDuration <_label>Set Prevailing Duration to ð…£ <_tooltip>Set the prevailing duration to ð…£ (subsequent notes entered will have this duration) 7 /ObjectMenu/NotesRests/EditDuration <_label>Insert/Append a ð…¤ <_tooltip>When appending, appends a ð…¤ With the cursor on a note inserts a ð…¤ before the current note If MIDI-in is active, the note will be pitchless (displays yellow, percussion-sounding) - the MIDI keyboard will provide the pitch. Changes prevailing duration. Change7 <_label>Change to ð…¤ <_tooltip>Change the current note to a ð…¤ Insert7 /ObjectMenu/NotesRests/InsertNote/InsertDuration <_label>ð…¤ <_tooltip>Insert a ð…¤ InsertRest7 <_label>Insert a ð…‚ <_tooltip>Inserts a rest at cursor position Sets prevailing rhythm to ð…¤ Set7 /ObjectMenu/NotesRests/SelectDuration <_label>Set Prevailing Duration to ð…¤ <_tooltip>Set the prevailing duration to ð…¤ (subsequent notes entered will have this duration) 8 <_label>Insert/Append a ð…¥ <_tooltip>When appending, appends a ð…¥ With the cursor on a note inserts a ð…¥ before the current note If MIDI-in is active, the note will be pitchless (displays yellow, percussion-sounding) - the MIDI keyboard will provide the pitch. Changes prevailing duration. Change8 <_label>Change to ð…¥ <_tooltip>Change the current note to a ð…¥ Insert8 <_label>ð…¥ <_tooltip>Insert a ð…¥ InsertRest8 <_label>Insert a ð…ƒ <_tooltip>Inserts a rest at cursor position Sets prevailing rhythm to ð…¥ Set8 <_label>Set Prevailing Duration to ð…¥ <_tooltip>Set the prevailing duration to ð…¥ (subsequent notes entered will have this duration) MovementTitles /ObjectMenu/MovementMenu/Titles/SimpleTitles <_label>Set Titles <_tooltip>Set titles for this movement. The names of the various titles are just suggestions, any sort of title can be placed in any field. See the manual for the default positioning of each title. MovementComposer /ObjectMenu/MovementMenu/Titles/SimpleTitles <_label>Composer <_tooltip>Prints a composer name for current movement. HideMovement /ObjectMenu/MovementMenu/Typesetter <_label>(Print) Hide/Un-hide Movement <_tooltip>Stops the current movement from being typeset. At least one movement must be typeset. HideBarlines /ObjectMenu/MovementMenu/Typesetter <_label>(Print) Hide Barlines <_tooltip>Omits barlines when printing. DeleteCurrentStaff DeleteStaff /ObjectMenu/StaffMenu <_label>Delete Current Staff/Voice <_tooltip>Deletes current staff (if the action is confirmed by the user). SlurLonga /ObjectMenu/NotesRests/EditDuration/Slurred <_label> âœ ð…› <_tooltip>Inserts a ð…› and slurs to it, extending previous slur. SlurBreve /ObjectMenu/NotesRests/EditDuration/Slurred <_label> âœ ð…œ <_tooltip>Inserts a ð…œ and slurs to it, extending previous slur. Slur0 /ObjectMenu/NotesRests/EditDuration/Slurred <_label> ✠ð… <_tooltip>Inserts a ð… and slurs to it, extending previous slur. Slur1 /ObjectMenu/NotesRests/EditDuration/Slurred <_label> âœ ð…ž <_tooltip>Inserts a ð…ž and slurs to it, extending previous slur. Slur2 /ObjectMenu/NotesRests/EditDuration/Slurred <_label> âœ ð…Ÿ <_tooltip>Inserts a ð…Ÿ and slurs to it, extending previous slur. Slur3 /ObjectMenu/NotesRests/EditDuration/Slurred <_label> âœ ð…  <_tooltip>Inserts a ð…  and slurs to it, extending previous slur. Slur4 /ObjectMenu/NotesRests/EditDuration/Slurred <_label> âœ ð…¡ <_tooltip>Inserts a ð…¡ and slurs to it, extending previous slur. Slur5 /ObjectMenu/NotesRests/EditDuration/Slurred <_label> âœ ð…¢ <_tooltip>Inserts a ð…¢ and slurs to it, extending previous slur. Slur6 /ObjectMenu/NotesRests/EditDuration/Slurred <_label> âœ ð…£ <_tooltip>Inserts a ð…£ and slurs to it, extending previous slur. Slur7 /ObjectMenu/NotesRests/EditDuration/Slurred <_label> âœ ð…¤ <_tooltip>Inserts a ð…¤ and slurs to it, extending previous slur. AllowLineBreak LineBreak /ObjectMenu/Directives/Typesetter/PrintLayout <_label>Allow Page/Line Break <_tooltip>Permits the typesetter to break the line at this point. VoiceSetting /ObjectMenu/Directives/Typesetter/Voices <_label>Choose Voice <_tooltip>The Voice 1,2,3,4 commands set up the voices so that first and third voices get stems up, second and fourth voices get stems down, third and fourth voice note heads are horizontally shifted, and rests in the respective voices are automatically moved to avoid collisions. The Automatic Voice command returns all the voice settings to the neutral default directions. The Denemo display shows automatic stem directions, use StemDown and StemUp commands if you wish to affect the display. TabFull UnHideNotes /ObjectMenu/Directives/Typesetter/Tablature <_label>Full Tab Notation On <_tooltip>Typeset beaming etc with Tablature from the cursor position on. CloseLilyBlock /ObjectMenu/Directives/Typesetter/Transposition <_label>(Print) Close } a LilyPond Block <_tooltip>Closes a LilyPond Block (there must be a matching open, {, earlier) AutoAccidentals TypesettingOff /ObjectMenu/Directives/Typesetter <_label>(Print) Accidental Printing <_tooltip>Prints accidentals according to a chosen style. Affects following notes only. Ambitus /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>(Print) Ambitus (On/Off) <_tooltip>Toggle the ambitus engraver for this staff on or off HideClef ClefChooser /ObjectMenu/ClefMenu <_label>(Print) Hide <_tooltip>On printing, omit the clef change at the cursor, or the initial clef if the cursor is not on a clef change. HideKeysig InsertKey /ObjectMenu/Key <_label>(Print) Hide <_tooltip>On printing, omit the key signature change at the cursor, or the initial key signature if the cursor is not on a key signature change. HideTimesig ChooseTimeSignature /ObjectMenu/TimeSig <_label>(Print) Hide <_tooltip>On printing, omit the time signature change at the cursor, or the initial time signature if the cursor is not on a time signature change. Hide /ObjectMenu/Directives/Typesetter <_label>(Print) Hide Object <_tooltip>Hides the object at cursor position with a lilypond directive. Currently only Notes and the three Signatures. No rests! SwitchMensuralBarlines /ObjectMenu/MovementMenu/Typesetter <_label>(Print) Mensural Barlines (On/Off) <_tooltip>Draw the barlines only between the staves but not inside. TextAnnotation /ObjectMenu/Directives/Markings/TextMarks <_label>Textual Annotation <_tooltip>Allows placing arbitrary text on the score which can then be dragged in the final typeset view for fine control over positioning. DaCapo /ObjectMenu/Directives/Markings/TextMarks <_label>D.C al fine <_tooltip>Inserts D.C. al fine marking as a standalone Denemo Directive. Ornament BreathMark /ObjectMenu/Directives/Markings/Ornaments <_label>Insert/Edit Ornament <_tooltip>Select an ornament to insert as an object at the cursor (it will be typeset on the following note), or edit the ornament already present. Ornament here includes accidentals to be placed over or under other ornaments, as well as multiple ornaments stacked on one note/chord. NoBarline ClosingBarline /ObjectMenu/Directives/Barlines <_label>(Print) Omit Barline <_tooltip>Skips the printing of any automatic barline here - allows line break. OpenOctaveDown OpenOctaveUp /ObjectMenu/Directives/Typesetter/Transposition <_label>(Print) Open { Octave Down <_tooltip>Opens a block printing an octave lower: must be terminated with CloseLilyBlock OpenOctaveUp /ObjectMenu/Directives/Typesetter/Transposition <_label>(Print) Open { Octave Up <_tooltip>Opens a block to be transposed up one octave This must be followed by a CloseBlock "}" to end the transposed section. SetBarNumber /ObjectMenu/Directives/Typesetter <_label>(Print) Set Bar Number <_tooltip>Enter a number to change the lilypond bar number. The printout will continue to count up from there. ShiftNext Hide /ObjectMenu/Directives/Typesetter <_label>(Print) Shift Object <_tooltip>Asks for horizontal and vertical offsets and inserts a directive to displace the object at the cursor on printing. SingleDigitTimeSig HideTimesig /ObjectMenu/TimeSig <_label>(Print) Single Digit <_tooltip>Makes the time signature at the cursor typeset as a single digit; if no time signature at cursor this applies to initial timesig of staff. Run the command again to delete/inspect the time signature directive. OpenFirstTimeBar /ObjectMenu/Directives/Markings/AlternativeBars <_label>Start a First Time Bar <_tooltip>(Print) start (a) first time bar(s), use the End Volta command at the end of the first time bar(s) OpenSecondTimeBar OpenFirstTimeBar /ObjectMenu/Directives/Markings/AlternativeBars <_label>Start a Second Time Bar <_tooltip>(Print) start (a) second time bar(s), use the End Volta command at the end of the first time bar(s) OpenNthTimeBar OpenSecondTimeBar /ObjectMenu/Directives/Markings/AlternativeBars <_label>Start an Nth Time Bar <_tooltip>Start passage to be played on one or more of the repeats as indicated by the text given by the user (e.g. 3 for third time bar). Finish the passage using the End Volta command. EndVolta OpenNthTimeBar /ObjectMenu/Directives/Markings/AlternativeBars <_label>End Volta (1st, 2nd ... Time Bar) <_tooltip>Ends a volta, that is a n'th time bar; without this the opening of a first (Nth) time bar will not be printed. FreeFermata /ObjectMenu/Directives/Markings <_label>(Print) Standalone Fermata (for Barlines) <_tooltip>Adds a standalone fermata which has no playback effect. Can be used to place a Fermata on a barline. UnHideNotes HideNotes /ObjectMenu/Directives/Typesetter <_label>(Print) Start Drawing Notes (Again) <_tooltip>Reverts the "Stop drawing notes" command StartStaff StopStaff /ObjectMenu/Directives/Typesetter <_label>(Print) Start Drawing Staff (Again) <_tooltip>Reverts the "Stop Drawing Staff" command HideNotes /ObjectMenu/Directives/Typesetter <_label>(Print) Stop Drawing Notes <_tooltip>Stops the Lilypond engraving of notes StopStaff /ObjectMenu/Directives/Typesetter <_label>(Print) Stop Drawing Staff <_tooltip>Stop drawing the staff and barlines in Lilypond. Notes are still drawn. TransposeStaffPrint /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>(Print) Transpose <_tooltip>Prints this staff (only) transposed. This is in addition to any score-wide transposition MarkupSystemSpacingDist /ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing <_label>Markup to System Spacing <_tooltip>Sets the basic distance between a (title or top-level) markup and the system that follows it. ScoreMarkupSpacingDist /ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing <_label>Score to Title Spacing <_tooltip>Set the distance between the last system of a score and the (title or top-level) markup that follows it. SystemSystemSpacingDist /ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing <_label>System to System Spacing <_tooltip>Set the distance between systems. MarkupMarkupSpacingDist /ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing <_label>Title to Title Spacing <_tooltip>Set the distance between two (title or top-level) markups. TopSystemSpacingDist /ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing <_label>Top to System Spacing <_tooltip>Set the distance from the top of the printable area (i.e. the bottom of the top margin) to the first system on a page, when there is no (title or top-level) markup between the two. LastBottomSpacingDist /ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing <_label>Last System to Bottom Spacing <_tooltip>Set the distance from the last system or top-level markup on a page to the bottom of the printable area (i.e. the top of the bottom margin). ScoreSystemSpacingDist /ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing <_label>Movement to First System Spacing <_tooltip>Set the distance between the last system of a movement and the first system of the movement that follows it, when no (title or top-level) markup exists between them. TopMarkupSpacingDist /ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing <_label>Top to Title Spacing <_tooltip>Set the distance from the top of the printable area (i.e. the bottom of the top margin) to the first (title or top-level) markup on a page, when there is no system between the two. SetFontSize /ObjectMenu/Score/Typesetter/PrintLayout <_label>(Print)Set Overall Score Size <_tooltip>Choose the font size of for the score, and hence how much space it takes up. CriticalCommentary /ObjectMenu/Score/Titles/BookTitles/Epilog <_label>(Re)Create Epilog - Critical Commentary <_tooltip>Collects together any critical comments from the score and places them in an epilog at the end of the music. The Title and text of the Epilog are created with the CriticalCommentaryIntro command, and critical comments are added with the CriticalComment command. ChangeModwheel ChangeVolume /ObjectMenu/Directives/Playback/MIDI <_label>1 Modwheel <_tooltip>Change the Modwheel value of a channel/staff ChangePan ChangeBalance /ObjectMenu/Directives/Playback/MIDI <_label>10 Pan <_tooltip>Where in the stereo field the channel sound will be placed. ChangeExpression ChangePan /ObjectMenu/Directives/Playback/MIDI <_label>11 Expression <_tooltip>Aka "Sub Volume" or "Percent Volume". The "real" volume. Use Volume as initial value for each staff/channel and change further cresc/dim with expression. ChangeHoldPedal ChangeExpression /ObjectMenu/Directives/Playback/MIDI <_label>64 Hold Pedal (Right Piano Pedal) <_tooltip>Hold Pedal On/Off (Right Piano Pedal). Deactivates Note-Off until set to "Off" ChangePortamento ChangeHoldPedal /ObjectMenu/Directives/Playback/MIDI <_label>65 Portamento (On/Off) <_tooltip>Slides between 2 notes. Can be adjusted with 5 - Portamento Time ChangeSustenutoPedal ChangePortamento /ObjectMenu/Directives/Playback/MIDI <_label>66 Sostenuto Pedal (On/Off) (Middle Grand Piano Pedal) <_tooltip>Middle Grand Piano Pedal. All Notes currently active (without a note off) will not have a note-off until Sostenuto Off. ChangeSoftPedal ChangeSustenutoPedal /ObjectMenu/Directives/Playback/MIDI <_label>67 Soft Pedal (On/Off) (Left Piano Pedal) <_tooltip>Left Piano Pedal. Lowers the volume of any notes played. ChangeLegatoPedal ChangeSoftPedal /ObjectMenu/Directives/Playback/MIDI <_label>68 Legato Pedal (On/Off) <_tooltip>Skips the attack portion of the VCA's envelope. For phrasing like wind or brass or guitar hammer-on. ChangeHold2Pedal ChangeLegatoPedal /ObjectMenu/Directives/Playback/MIDI <_label>69 Hold Pedal #2 (On/Off) <_tooltip>Longer release time but notes will fade out eventually. ChangeBalance ChangeModwheel /ObjectMenu/Directives/Playback/MIDI <_label>8 Balance <_tooltip>Balance. Typically used for a stereo signal tweak without changing the pan itself. Like a CD player. AccentSelectionSwitcher ToggleAccent /ObjectMenu/NotesRests/Markings/Articulations <_label>Accent (Off/On) <_tooltip>Adds the > accent ToggleAccent ToggleMarcato /ObjectMenu/NotesRests/Markings/Articulations <_label>Accent (Off/On) <_tooltip>Mark/Unmark the current chord accented AddLowestUpAugmented4 AddLowestUpPerfect4 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Augmented 4th above base <_tooltip>Add a tritone/augmented fourth as chordnote relative to the lowest note upwards. AddHighestDownAugmented4 AddHighestDownPerfect4 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Augmented 4th below top <_tooltip>Add a augmented fourth as chordnote relative to the highest note downwards. AddLowestUpDiminished5 AddLowestUpAugmented4 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Diminished 5th above base <_tooltip>Add a diminished fifth as chordnote relative to the lowest note upwards. AddLowestUpAugmented5 AddLowestUpDiminished5 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Augmented 5th above base <_tooltip>Add an augmented fifth as a chord note above the lowest note at the cursor. AddHighestDownDiminished5 AddHighestDownAugmented4 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Diminished 5th below top <_tooltip>Add a tritone/diminished fifth as chordnote relative to the highest note downwards. AddDotSelectionSwitcher /ObjectMenu/NotesRests/EditNote <_label>Add Dot <_tooltip>Adds an Augmentation Dot to current note/chord/rest. AddLowestUpMajor2 AddLowestUpPerfect1 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Major 2nd above base <_tooltip>Add a major second as chordnote relative to the lowest note upwards. AddHighestDownMajor2 AddHighestDownPerfect1 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Major 2nd below top <_tooltip>Add a major second as chordnote relative to the highest note downwards. AddLowestUpMajor3 AddLowestUpMinor2 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Major 3rd above base <_tooltip>Add a major third as chordnote relative to the lowest note upwards. AddHighestDownMajor3 AddHighestDownMinor2 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Major 3rd below top <_tooltip>Add a major third as chordnote relative to the highest note downwards. AddLowestUpMajor6 AddLowestUpPerfect5 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Major 6th above base <_tooltip>Add a major sixth as chordnote relative to the lowest note upwards. AddHighestDownMajor6 AddHighestDownPerfect5 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Major 6th below top <_tooltip>Add a major sixth as chordnote relative to the highest note downwards. AddLowestUpMajor7 AddLowestUpMinor6 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Major 7th above base <_tooltip>Add a major seventh as chordnote relative to the lowest note upwards. AddHighestDownMajor7 AddHighestDownMinor6 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Major 7th below top <_tooltip>Add a major seventh as chordnote relative to the highest note downwards. AddLowestUpMinor2 AddLowestUpMajor2 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Minor 2nd above base <_tooltip>Add a minor second as chordnote relative to the lowest note upwards. AddHighestDownMinor2 AddHighestDownMajor2 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Minor 2nd below top <_tooltip>Add a minor second as chordnote relative to the highest note downwards. AddLowestUpMinor3 AddLowestUpMajor3 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Minor 3rd above base <_tooltip>Add a minor third as chordnote relative to the lowest note upwards. AddHighestDownMinor3 AddHighestDownMajor3 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Minor 3rd below top <_tooltip>Add a minor third as chordnote relative to the highest note downwards. AddLowestUpMinor6 AddLowestUpMajor6 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Minor 6th above base <_tooltip>Add a minor sixth as chordnote relative to the lowest note upwards. AddHighestDownMinor6 AddHighestDownMajor6 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Minor 6th below top <_tooltip>Add a minor sixth as chordnote relative to the highest note downwards. AddLowestUpMinor7 AddLowestUpMajor7 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Minor 7th above base <_tooltip>Add a minor seventh as chordnote relative to the lowest note upwards. AddHighestDownMinor7 AddHighestDownMajor7 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Minor 7th below top <_tooltip>Add a minor seventh as chordnote relative to the highest note downwards. BookmarkNonPrinting /MainMenu/NavigationMenu/Bookmarks <_label>Add Non-Printing Bookmark <_tooltip>Adds a custom Denemo bookmark without Lilypond output. AddLowestUpPerfect1 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Perfect 1st above base <_tooltip>Add a perfect prime as chordnote relative to the lowest note upwards. AddHighestDownPerfect1 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Perfect 1st below top <_tooltip>Add a perfect prime as chordnote relative to the highest note downwards. AddLowestUpPerfect4 AddLowestUpMinor3 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Perfect 4th above base <_tooltip>Add a perfect fourth as chordnote relative to the lowest note upwards. AddHighestDownPerfect4 AddHighestDownMinor3 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Perfect 4th below top <_tooltip>Add a perfect fourth as chordnote relative to the highest note downwards. AddLowestUpPerfect5 AddLowestUpDiminished5 /ObjectMenu/ChordMenu/AddAboveBase <_label>Add Perfect 5th above base <_tooltip>Add a perfect fifth as chordnote relative to the lowest note upwards. AddHighestDownPerfect5 AddHighestDownDiminished5 /ObjectMenu/ChordMenu/AddBelowTop <_label>Add Perfect 5th below top <_tooltip>Add a perfect fifth as chordnote relative to the highest note downwards. MarksStaff PianoStaff /ObjectMenu/StaffMenu/InsertStaff <_label>Add Staff for Marks <_tooltip> This staff is purely for holding marks that should appear once at the top of the system - avoiding having to put the marks in each part. It must have a blank part name, so that it is typeset with every part. The marks should be spaced using either dummy notes or spacers. WARNING: Do not place clef changes or other non-duration items in this staff - it may trigger the creation of a separate staff on typesetting! RehearsalMark /ObjectMenu/Directives/Markings <_label>Add Rehearsal/Bookmark <_tooltip>Adds a Denemo bookmark combined with a default Rehearsal Mark NewVoice EditVoiceDirective /ObjectMenu/StaffMenu/Voices <_label>Add Voice <_tooltip>Adds a voice to the current staff, initially displayed on a staff of its own, for readability. It will print on the staff above, and can be displayed there using Join Voices command if desired. DynamicsStaff MarksStaff /ObjectMenu/StaffMenu/InsertStaff <_label>Add a Separate Line for Dynamics <_tooltip>This line ("staff") is for holding cresc. dim hairpins and dynamic markings so that they can be positioned (using dummy notes, colored blue) and will align with each other.\nCreate this between the staffs for a piano work or on any staff where alignment of hairpins and dynamic marks is needed. WARNING: Do not place clef changes or other non-duration items in this staff - it may trigger the creation of a separate staff on typesetting! This Dynamics "staff" must have the same part name as the staff the dynamics should appear on. ReBar /ObjectMenu/MovementMenu <_label>Adjust the Measure Lengths <_tooltip>Removes gaps in duration of measures, redistributes the notes according to the time signature. Allegro /ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications <_label>Allegro <_tooltip>Print Allegro in bold italics above the chord. AllegroAssai /ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications <_label>Allegro Assai <_tooltip>Gives Allegro Assai tempo indication Upbeat /ObjectMenu/MeasureMenu <_label>Anacrusis (Upbeat, Pickup) <_tooltip>Convert the current measure to a partial measure so that it is complete with just the beats already inserted. Andante /ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications <_label>Andante <_tooltip>Print Andante in bold italics above the chord. AngryDelete /MainMenu/InputMenu/MIDI <_label>Angry Delete <_tooltip>MIDI notes struck loudly delete the previous note before taking effect. ApplyToSelection /MainMenu/EditMenu/Select <_label>Apply Shortcut to Objects in Selection <_tooltip>Followed by a keyboard shortcut: applies the shortcut with the cursor successively on each object in the selection. ShiftRealDialogDown ShiftRealDialogUp /ObjectMenu/NotesRests/Transpose <_label>Arbitrary transpose down <_tooltip>Transpose/shift the cursor note or selection an arbitrary number of tones down. User can specify interval through a dialog. ShiftRealDialogUp ShiftRealHalfDown /ObjectMenu/NotesRests/Transpose <_label>Arbitrary transpose up <_tooltip>Transpose/shift the cursor note or selection an arbitrary number of tones up. User can specify interval through a dialog. ArpeggioSelectionSwitcher /ObjectMenu/NotesRests/Markings/Articulations <_label>Arpeggio (Off/On) <_tooltip>Mark/Unmark the selected notes arpeggio BookArranger /ObjectMenu/Score/Titles/BookTitles <_label>Arranger <_tooltip>Prints the arranger name on title page ScoreTitles /ObjectMenu/Score/Titles/SimpleTitles <_label>Set Titles <_tooltip>Set titles for whole score. ScoreArranger /ObjectMenu/Score/Titles/SimpleTitles <_label>Arranger <_tooltip>Name of the arranger, flush-right below the composer. InsertTiedNoteDuration /ObjectMenu/NotesRests/TiedNotes <_label>Attach Tied Note <_tooltip>Attaches a tied note: you must give the duration after invoking this function. ToggleStemSupport StringNum /ObjectMenu/NotesRests/Markings/Strings <_label>Avoid Collisions with Stems <_tooltip>Fingerings and String numbers will be moved to avoid colliding with stems on typesetting. AvoidSlurAccidentalCollision ToggleBeginDownSlur /ObjectMenu/NotesRests/Slurs <_label>Avoid Slur Collision <_tooltip>Avoids slur colliding with accidental (Print) BarNumbers /ObjectMenu/Score/Typesetter/Numbering <_label>Bar Numbers (On/Off) <_tooltip>Turns bar numbering on/off in print out. MovementNoteheadsBaroque MovementNoteheadsDefault /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Baroque <_tooltip>Baroque note head style for the current movement. BassClefNoteNameSpeedTest /MainMenu/Educational/Note-Reading <_label>Bass Clef Note Name Speed Recognition <_tooltip>%tests your ability to read the notes of the bass clef staff Bb-Pentascale /MainMenu/Educational/AuralTraining/Identify-Scale-Note <_label>Bb Pentascale <_tooltip>Identify Scale Notes that are sounded ToggleBeginPhrasingSlur ReduceSlur /ObjectMenu/NotesRests/Slurs <_label>Begin Phrasing Slur <_tooltip>Begin a phrasing slur on the current note. You can have normal slurs (partially) inside a phrasing slur. ToggleBeginDownSlur ToggleBeginUpSlur /ObjectMenu/NotesRests/Slurs <_label>Begin Slur Below (Off/On) <_tooltip>Starts (or deletes) a slur below the chord at the cursor. If deleting be sure to delete the end slur as well. ToggleBeginUpSlur ToggleEndPhrasingSlur /ObjectMenu/NotesRests/Slurs <_label>Begin Slur Up (Off/On) <_tooltip>Starts (or deletes) a slur above the chord at the cursor. Follow with End Slur on a later chord. BreathMark /ObjectMenu/Directives/Markings/TextMarks <_label>Breath Mark <_tooltip>Inserts a Breath Mark at the cursor position Breve InsertRhythm /ObjectMenu/NotesRests/EditDuration <_label>Breve <_tooltip>Append/Insert Breve ChangeBreve /ObjectMenu/NotesRests/ChangeDuration <_label>Breve <_tooltip>Change current note duration to Breve InsertBreve /ObjectMenu/NotesRests/InsertNote/InsertDuration <_label>Breve <_tooltip>Insert a Breve SetBreve Set7 /ObjectMenu/NotesRests/SelectDuration <_label>Breve <_tooltip>Sets Prevailing Duration to Breve InsertBreveRest /ObjectMenu/NotesRests/RestEntry <_label>Breve Rest <_tooltip>Insert a rest with breve duration C-Major /MainMenu/Educational/AuralTraining/Identify-Scale-Note <_label>C Major <_tooltip>Identify Scale Notes that are sounded C-Pentascale /MainMenu/Educational/AuralTraining/Identify-Scale-Note <_label>C Pentascale <_tooltip>Identify Scale Notes that are sounded CautionaryAccidental /ObjectMenu/NotesRests/EditNote <_label>Cautionary Accidental <_tooltip>Forces the accidental on the note to be printed. ChangePrintDuration2 /ObjectMenu/ChordMenu/ChangePrintDuration <_label>Change Chordmember to Quarter <_tooltip>Change one chord member to appear like a quarter-note duration without changing the original logic like measure calculation or the duration of newly added chord members. ChangeEnharmonicUp /ObjectMenu/ChordMenu <_label>Change Enharmonic + <_tooltip>Shift through enharmonic variants of the same sounding note in the direction of higher diatonic base notes. ChangeEnharmonicDown ChangeEnharmonicUp /ObjectMenu/ChordMenu <_label>Change Enharmonic - <_tooltip>Switch through enharmonic variants of the same sounding note in the direction of lower diatonic base notes ChangePrintDurationBreve ChangePrintDuration0 /ObjectMenu/ChordMenu/ChangePrintDuration <_label>Change chord-member to breve <_tooltip>Change one chord member to appear like a breve duration without changing the original logic like measure calculation or the duration of newly added chord members. ChangePrintDuration1 ChangePrintDuration2 /ObjectMenu/ChordMenu/ChangePrintDuration <_label>Change chord-member to half note <_tooltip>Change one chord member to appear like a half-note duration without changing the original logic like measure calculation or the duration of newly added chord members. ChangePrintDurationLonga ChangePrintDurationBreve /ObjectMenu/ChordMenu/ChangePrintDuration <_label>Change chord-member to longa <_tooltip>Change one chord member to appear like a longa duration without changing the original logic like measure calculation or the duration of newly added chord members. ChangePrintDuration0 ChangePrintDuration1 /ObjectMenu/ChordMenu/ChangePrintDuration <_label>Change chord-member to whole note <_tooltip>Change one chord member to appear like a whole-note duration without changing the original logic like measure calculation or the duration of newly added chord members. LoadSelectDurationComposerNumberkeys /MainMenu/MoreMenu <_label>Change to 'Select Duration' Number Keys in Composer Mode <_tooltip>Change the number keys to select the prevailing duration in composer mode. ChangeChannel MidiTempo /ObjectMenu/Directives/Playback/MIDI <_label>Channel <_tooltip>Change the Channel of a staff IRC Shortcuts /MainMenu/HelpMenu <_label>Chat to Other Users <_tooltip>Runs your browser on a page giving access to denemo's internet relay chat CheckBeamsInMeasure CheckTupletsInMeasure /ObjectMenu/MeasureMenu <_label>Check Beaming <_tooltip>Checks the current measure for beaming errors. ToggleCheckChords AngryDelete /MainMenu/InputMenu/MIDI <_label>Check Chords (On/Off) <_tooltip>Advances through the current movement as you play the notes, stopping for wrong or missing notes in MIDI in. CheckPitches /MainMenu/Educational/MIDI <_label>Check Note Pitches <_tooltip>Compares note from MIDI with current note, if equal in pitch, advances to next note, else beeps. CheckScore /ObjectMenu/Score <_label>Check Score <_tooltip>Checks score for wrong measure durations, unterminated tuplets, slurs, wrong ties etc. CheckScoreSkipping CheckScore /ObjectMenu/Score <_label>Check Score Skipping Some Errors <_tooltip>Checks the score ignoring the first so many errors. Use this to skip errors that are ok to leave in. RefreshDynamicDirectives /ObjectMenu/Score <_label>Refresh Dynamic Directives <_tooltip>Re-runs any directives that may have become stale. CheckTupletsInMeasure SplitMeasure /ObjectMenu/MeasureMenu <_label>Check Tuplets <_tooltip>Checks that start/end tuplets match in the current measure. SearchPattern /MainMenu/NavigationMenu/Seek <_label>Search Rhythmic Pattern <_tooltip>With a selection, searches from the cursor for the next occurrence of the rhythmic patterm of the selection. With no selection, continues the previous search. When a match is found it offers to continue, stop or execute the script in the Scheme Window. SearchMusic /MainMenu/NavigationMenu/Seek <_label>Search Note Sequence <_tooltip>With a selection, searches from the cursor for the next occurrence of the notes of the selection. With no selection, continues the previous search. When a match (ignoring rests and duration) is found it offers to continue, stop or execute the script in the Scheme Window. CheckForIncompleteMeasures /ObjectMenu/MovementMenu <_label>Check for Irregular Measures <_tooltip>Checks each Denemo measure in the current movement for complete number of beats. Unless you explicitly set otherwise, on typesetting the notes will be re-distributed to the correct measures, which can lead to strange effects. ChoirStaffStart /ObjectMenu/StaffMenu/StaffGroupings <_label>ChoirStaff Start <_tooltip>Start grouping single staves together in order to form multi-stave systems. In a ChoirStaff, the group starts with a bracket, but bar lines are not connected. GrandStaffStart ChoirStaffStart /ObjectMenu/StaffMenu/StaffGroupings <_label>GrandStaff Start <_tooltip>Start grouping single staves together in order to form multi-stave systems. In a GrandStaff, the group begins with a brace, and bar lines are connected between the staves. GroupStaffStart /ObjectMenu/StaffMenu/StaffGroupings <_label>GroupStaff Start <_tooltip>Start grouping single staves together in order to form multi-stave systems. In the GroupStaff context, the group is started with a bracket and bar lines are drawn through all the staves. PianoStaffStart GroupStaffStart /ObjectMenu/StaffMenu/StaffGroupings <_label>PianoStaff Start <_tooltip>Start grouping single staves together in order to form multi-stave systems. The PianoStaff is identical to a GrandStaff, except that it supports printing the instrument name directly. BraceEnd PianoStaffStart /ObjectMenu/StaffMenu/StaffGroupings <_label>Brace End <_tooltip>Add or remove end of staff group marks, or move them to an adjacent staff. DeleteStaffGroupings PianoStaffName /ObjectMenu/StaffMenu/StaffGroupings <_label>Delete all staff contexts <_tooltip>Clear the staff from all groupings ChooseBarline /ObjectMenu/Directives/Barlines <_label>Choose Barline <_tooltip>Choose a barline ChooseCondition ForAllLayouts /ObjectMenu/Directives/Conditional-Directives <_label>Choose Condition <_tooltip>Gives a menu for choosing whether the directive at the cursor should apply to the current part only or the default score or all layouts, ChooseTimeSignature /ObjectMenu/TimeSig <_label>Choose Typical Time Signature <_tooltip>Choose from a set of typical time signatures ChordStaff TabStaff /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Chord Symbols (Off/On) <_tooltip>Typesets the music on this staff as chord symbols (off/on). ChordsForBar ChordsOverBass /MainMenu/InputMenu/MIDI <_label>Chords for Bar <_tooltip>Plays the context of the current bar. Then listens for you to play each note in current bar with added chord(s). As you do this it notates the chords on a staff above. When the bar is finished it re-plays the bar. Allows you to repeat (pitch bend down) or go on to next bar (pitch bend up). ExecuteScheme /MainMenu/EditMenu <_label>Execute Scheme <_tooltip>Execute the scheme code from the scripting window NotationMagick-RandomWithinClefRangeChromatic /MainMenu/EditMenu/NotationMagick/SingleRandomNote <_label>Chromatic within Clef Range <_tooltip>Insert a random note within clef range. Full chromatic spectrum. ClefChooser InsertClef /ObjectMenu/ClefMenu <_label>Clef Chooser <_tooltip>Choose any sort of clef. If the cursor is at the start change initial clef, else insert chosen clef. CloseSourceAudioFile SynchronizeAudio /MainMenu/PlaybackMenu/Audio <_label>Close Source Audio File <_tooltip>Drops the audio track attached to the current movement. CloseRepeat OpenRepeat /ObjectMenu/MeasureMenu/Repeats <_label>Close a Repeat Section <_tooltip>Closes a section that starts with an Open Repeat. Not needed with 1st and 2nd time bars. (Printing) CloseReopenRepeat CloseRepeat /ObjectMenu/MeasureMenu/Repeats <_label>Close and Reopen Repeat <_tooltip>Closes and open repeat block and opens a new one. ClosingBarline /ObjectMenu/Directives/Barlines <_label>Closing Barline <_tooltip>Inserts a closing barline (a double bar with last one thicker). ToggleCoda /ObjectMenu/NotesRests/Markings/TextMarks <_label>Coda (Off/On) <_tooltip>No Tooltip yet MvntComment /ObjectMenu/MovementMenu <_label>Comment <_tooltip>Stores textual comments for this movement StaffComment /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Comment <_tooltip>Saves textual comments for this staff BookComposer /ObjectMenu/Score/Titles/BookTitles <_label>Composer <_tooltip>Prints a composer name on title page ScoreComposer /ObjectMenu/Score/Titles/SimpleTitles <_label>Composer <_tooltip>Name of the composer, flush-right below the subsubtitle. Congruentia ToggleFermata /ObjectMenu/NotesRests/Markings/TextMarks <_label>Congruentia <_tooltip>Print congruentia / canon symbol ConvertDrum2GmSingleSelection ReloadDrumHash /MainMenu/EditMenu <_label>Convert GM-Drum to User-Drum <_tooltip>Converts between the midi-drum notation and a user-drum notation. The user can set his/her drummap in a template in ~/.denemo/templates or choose any other copy he made of the template file to have drummaps for different drummers avaible. BookCopyright /ObjectMenu/Score/Titles/BookTitles <_label>Copyright <_tooltip>Prints a copyright notice on title page ScoreCopyright /ObjectMenu/Score/Titles/SimpleTitles <_label>Copyright <_tooltip>Copyright notice, centered at the bottom of the first page. To insert the copyright symbol, see Lilypond Text encoding. ChordsOverBass CheckPitches /MainMenu/InputMenu/MIDI <_label>Create Chords Over Bass Line <_tooltip>Place the cursor on a bass note and invoke this command. It creates a treble staff above and for each note in the bass staff, as you play it, it switches to the treble staff and allows you to enter a chord. Use the Pitch Bend wheel to stop/start the process. Hold a chord while moving to the next bass note to extend the chord over more than one bass note. DottedRhythm RemoveDot /ObjectMenu/NotesRests/ChangeDuration <_label>Create Dotted Rhythm <_tooltip>In appending position, dots the note or rest at the cursor and appends a note of half the duration so as to create a dotted rhythm. CreateIntro MovementPageBreak /ObjectMenu/MovementMenu <_label>Create Intro <_tooltip>Creates a new staff with a bar for nothing (an intro of the right number of beats) CreateOssiaStaff /ObjectMenu/StaffMenu/Ossia <_label>Create Ossia Staff <_tooltip>Creates a small staff above the current staff for inserting cues, ossia passages etc. Use Show Ossia and Hide Ossia to show specific measures. CreateParts CreateIntro /ObjectMenu/StaffMenu/Voices <_label>Create Parts <_tooltip>Create three parts from the current staff. CreatePartsFromTop CreateParts /ObjectMenu/StaffMenu/Voices <_label>Create Parts (Treble First) <_tooltip>Creates a set of parts extracting the highest part first. CreateTripletSlurred CreateTriplet /ObjectMenu/NotesRests/Tuplets <_label>Create Slurred Triplet <_tooltip>If a MIDI controller is active duplicates the current note twice making a triplet and slurring all three notes, otherwise same as Toggle Tripleting command. DottedRhythmSlurred DottedRhythm /ObjectMenu/NotesRests/ChangeDuration <_label>Create Slurred, Dotted Rhythm <_tooltip>In appending position, dots the note or rest at the cursor and appends a note of half the duration so as to create a dotted rhythm. Slurs the two notes together. CreateTriplet ToggleTupletBracketsIfBeamed /ObjectMenu/NotesRests/Tuplets <_label>Create Triplet <_tooltip>If a MIDI controller is active takes the current note and appends two more making all three a triplet, otherwise same as Toggle Tripleting command. CriticalComment FreeFermata /ObjectMenu/Directives <_label>Critical Comment <_tooltip>Adds a comment which can be printed in a critical commentary at the end of all the movements (see CriticalCommentary command to create this). MovementNoteheadsCross MovementNoteheadsDiamond /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Cross <_tooltip>Cross note head style for the current movement. MuteStaff /ObjectMenu/StaffMenu/Playback <_label>Mute <_tooltip>Mutes the current staff. Affects only playback. DeleteFromCursorToEnd StaffDeleteEmptyMeasures /ObjectMenu/StaffMenu <_label>Delete Measures From Cursor <_tooltip>Deletes all measures from the cursor to the end, either in one or all staffs. DeleteMeasuresBeforeCursor DeleteFromCursorToEnd /ObjectMenu/StaffMenu <_label>Delete Measures Before Cursor <_tooltip>Deletes all the measures before the measure containing the cursor, either current staff or all staffs as chosen by user. CrossStaffArpeggio /ObjectMenu/StaffMenu <_label>Cross Staff Arpeggio <_tooltip>(Print) Allow arpeggio sign to extend across staffs. Piano staffs obey this by default, other staff groups need the Span_arpeggio_engraver including in the Score context for it to work. ChangeStaff /ObjectMenu/StaffMenu <_label>Change Staff <_tooltip>(Print) the current voice moves to the staff you name. ToggleCursorHighlight /MainMenu/ViewMenu <_label>Cursor Highlighting (Off/On) <_tooltip>Shows up the position of the cursor more clearly (off/on) CursorToHighestNote /MainMenu/NavigationMenu/Cursor <_label>Cursor to Highest Note <_tooltip>Moves the cursor to the highest note on current horizontal position (in a chord or on a single note) CursorToLowestNote /MainMenu/NavigationMenu/Cursor <_label>Cursor to Lowest Note <_tooltip>Moves the cursor to the lowest note on current horizontal position (in a chord or on a single note) Custos MovementPageBreak /ObjectMenu/MovementMenu/Typesetter <_label>Custos (On/Off) <_tooltip>Prints a custos at the end of each line for the current movement. Repeat command to turn custos off. DCAlFine Glissando /ObjectMenu/NotesRests/Markings/TextMarks <_label>D. C. al fine <_tooltip>Puts Da Capo al fine over the chord at the cursor. DalSegno D.C.AlFine /ObjectMenu/NotesRests/Markings/TextMarks <_label>Dal Segno <_tooltip>Prints Dal Segno below the chord at the cursor. BookDate BookPoet /ObjectMenu/Score/Titles/BookTitles <_label>Date <_tooltip>Prints a date on the title page. Db-Pentascale /MainMenu/Educational/AuralTraining/Identify-Scale-Note <_label>Db Pentascale <_tooltip>Identify Scale Notes that are sounded ScoreDedication /ObjectMenu/Score/Titles/SimpleTitles <_label>Dedication <_tooltip>The dedicatee of the music, centered at the top of the first page. MovementNoteheadsDefault /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Default <_tooltip>Default note head style for the current movement. DeleteDynamic MezzoForte /ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings <_label>Delete <_tooltip>Deletes a dynamic attached to the chord at the cursor. DeleteBeamingDirective EndBeam /ObjectMenu/NotesRests/Beaming <_label>Delete Beaming Directive <_tooltip>Deletes a ] or [ (end or start beam) directive on the current chord. InsertNoteDirective /ObjectMenu/NotesRests/Directives <_label>Attach/Edit LilyPond to Note <_tooltip>Inserts LilyPond syntax you give before and after the note at the cursor height, also allows editing/deleting. ChordComment /ObjectMenu/NotesRests <_label>Comment <_tooltip>Attach a textual comment to the chord at the cursor DeleteEmptyMeasures DeleteMeasure /ObjectMenu/MeasureMenu <_label>Delete Empty Measures <_tooltip>Deletes all empty measures from the cursor until the next music. MovementNoteheadsDelete MovementNoteheadsSlash /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Delete Movement Notehead Settings <_tooltip>Delete note head style of this movement. Reset to whatever Score or Lilypond has set as default. DeleteSelectionLeaveEmpty /MainMenu/EditMenu/Select <_label>Delete Selected Objects <_tooltip>Delete all selected objects and leave empty measures behind StagedDelete DeletePreviousObject /MainMenu/EditMenu/Delete <_label>Delete in Stages <_tooltip>Deletes the object at/before the cursor. For Notes/Chords/Rests it deletes stage by stage. First it removes notes until just a non-printing rest remains, then deletes that. IntelligentDelete StagedDelete /MainMenu/EditMenu/Delete <_label>Delete Selection/Object/Empty Measure <_tooltip>Deletes a single object at the cursor, an empty measure or the complete selection. RemoveSchemeInit /MainMenu/EditMenu/Delete <_label>Destroy Button Customization <_tooltip>Removes the file that creates customized buttons on the title bar (and any other scheme you have added to the startup script). MovementNoteheadsDiamond MovementNoteheadsHarmonic-mixed /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Diamond <_tooltip>Diamond note head style for the current movement. DiatonicInterval /MainMenu/Educational/Note-Reading <_label>Diatonic Interval Detection <_tooltip>%tests your ability to find the diatonic interval name between two notes NotationMagick-RandomWithinClefRangeDiatonic /MainMenu/EditMenu/NotationMagick/SingleRandomNote <_label>Diatonic within Clef Range <_tooltip>Insert a random note within clef range, only diatonic notes according to current keysignature. Diminish /ObjectMenu/NotesRests/ChangeDuration <_label>Diminish <_tooltip>Halves the duration of the note/chord/rest at the cursor or the selection. E.g. Quarter Note becomes Eighth Note. DiminishedOrAugmented MajorOrMinor /MainMenu/Educational/AuralTraining/Chord-Comparison <_label>DiminishedAugmented <_tooltip>Determine if the chord sounded is Diminished or Augmented DiminishedOrMinor DiminishedOrAugmented /MainMenu/Educational/AuralTraining/Chord-Comparison <_label>DiminishedMinor <_tooltip>Determine if the chord sounded is Diminished or Minor DisplaceRestHorizontally MoveRest /ObjectMenu/NotesRests/RestEntry <_label>Displace Rest Horizontally <_tooltip>Asks for a horizontal shift and moves the rest at the cursor by that much when printing. MoveRest InsertLongaRest /ObjectMenu/NotesRests/RestEntry <_label>Displace Rest Vertically <_tooltip>Turns the rest at the cursor into a polyphonic rest at the cursor height. SetDisplayClef HideClef /ObjectMenu/ClefMenu <_label>Display Only Clef <_tooltip>Inserts a clef that affects only the display, not the printed form. Use this if, after a Change Staff, the staff the voice will be on is in a different clef (avoiding too many ledger lines in the display, making it hard to read). Also useful to display in a familiar clef music which you want to be printed in a less familiar one (e.g. display in treble or bass clef music to be printed for viola). DotDoubleDotNoDot Change7 /ObjectMenu/NotesRests/ChangeDuration <_label>Dot <_tooltip>Adds a dot to the note/rest/chord at the cursor, or removes them if double dotted. Dottify RemoveDot /ObjectMenu/NotesRests/ChangeDuration <_label>Dottify <_tooltip>Turns the note on or before the cursor into a dotted rhythm with the same total duration. DoubleBarline /ObjectMenu/Directives/Barlines <_label>Double Bar <_tooltip>Insert a double barline at cursor position. ToggleTieDown ToggleTie /ObjectMenu/NotesRests/TiedNotes <_label>Down Tie (Off/On) <_tooltip>Ties to the following note/chord with tie downwards. DownbowSelectionSwitcher UpBowSelectionSwitcher /ObjectMenu/NotesRests/Markings/Articulations <_label>DownBow (Off/On) <_tooltip>Mark/Unmark selection or current object ToggleDownBow ToggleUpBow /ObjectMenu/NotesRests/Markings/Articulations <_label>DownBow (Off/On) <_tooltip>Mark/Unmark chord with a Down Bow DuplicateChord /ObjectMenu/NotesRests/InsertNote <_label>Duplicate Note/Chord <_tooltip>Duplicate a note or chord. Not for rests. DynamicText /ObjectMenu/Directives/Markings <_label>Dynamics <_tooltip>Choose dynamics and midi volume level. Eb-Pentascale /MainMenu/Educational/AuralTraining/Identify-Scale-Note <_label>Eb Pentascale <_tooltip>Identify Scale Notes that are sounded EditSimilar EditObject /MainMenu/EditMenu <_label>Edit Here (and ...) <_tooltip>Seek and edit Denemo Directives starting with the one at the cursor and optionally similar ones following. Position the cursor on a particular notehead to edit directives attached to individual noteheads (such as fingering), otherwise you will edit directives attached at the chord level (such as beaming). EnableAccordion16v InsertDefinedLilyPond /ObjectMenu/Directives <_label>Enable Accordion 16' <_tooltip>Defines the accordions shifts for this score. The command Menu of Objects to Insert will allow them to be inserted. EndBeam /ObjectMenu/NotesRests/Beaming <_label>End Beam <_tooltip>Instructs LilyPond engraver to stop previously started manual beaming. Print effect only. ToggleEndPhrasingSlur ToggleBeginPhrasingSlur /ObjectMenu/NotesRests/Slurs <_label>End Phrasing Slur <_tooltip>End a phrasing slur on the current note. EvenOutStaffLengths ReBar /ObjectMenu/MovementMenu <_label>Even Up the Staffs <_tooltip>Appends empty measures to any staffs that are too short. OnlyForLayout NotForLayout /ObjectMenu/Directives/Conditional-Directives <_label>Exclusive to Current Layout <_tooltip>The Denemo Directive at the cursor will only apply to the current Score Layout (see View->Score Layout) ExportAudio ExportMIDI /MainMenu/FileMenu/Export <_label>Export Audio <_tooltip>Exports recorded audio output. ExtendSlur SlurTwo /ObjectMenu/NotesRests/Slurs <_label>Extend Slur <_tooltip>Extends the slur finishing at the cursor. F-Major /MainMenu/Educational/AuralTraining/Identify-Scale-Note <_label>F Major <_tooltip>Identify Scale Notes that are sounded F-Pentascale /MainMenu/Educational/AuralTraining/Identify-Scale-Note <_label>F Pentascale <_tooltip>Identify Scale Notes that are sounded FermataSelectionSwitcher ToggleAccent /ObjectMenu/NotesRests/Markings/Articulations <_label>Fermata (Off/On) <_tooltip>Mark/Unmark current selection or object with a fermata ToggleFermata ToggleStaccato /ObjectMenu/NotesRests/Markings/Articulations <_label>Fermata (Off/On) <_tooltip>Mark/Unmark the chord with a fermata Ficta SuggestNatural /ObjectMenu/NotesRests/EditNote <_label>Ficta Accidental <_tooltip>Prints the accidental above rather than before the note. In European music from before about 1600, singers were expected to chromatically alter notes at their own initiative according to certain rules. This is called musica ficta. In modern transcriptions, these accidentals are usually printed over the note. FiguredBassFilterOn /MainMenu/InputMenu/MIDI <_label>Figured Bass Filter On <_tooltip>Start filtering MIDI events, First note is bass, hold this down while entering notes for figures. Pedal changes harmony on same bass. FindEditPoint NextHigher /MainMenu/NavigationMenu/Seek <_label>Find Edit Point <_tooltip>Searches backward for the start of non-printing notes. FindNextSimilar NextHigher /MainMenu/NavigationMenu/Seek <_label>Find Next Similar <_tooltip>Finds the next object similar to the one at the cursor. ToggleFine DCAlFine /ObjectMenu/NotesRests/Markings/TextMarks <_label>Fine (end). (Off/On) <_tooltip>Prints the musical instruction "fine", in italics. Fingering /ObjectMenu/NotesRests/Markings/Strings/Fingerings <_label>Set Finger <_tooltip>Attaches a fingering to the note at the cursor. Blank deletes the fingering. Finger0 /ObjectMenu/NotesRests/Markings/Strings/Fingerings <_label>Finger 0 <_tooltip>Inserts fingering for open string Finger1 /ObjectMenu/NotesRests/Markings/Strings/Fingerings <_label>Finger 1 <_tooltip>Inserts fingering for finger 1 Finger2 /ObjectMenu/NotesRests/Markings/Strings/Fingerings <_label>Finger 2 <_tooltip>Inserts fingering for finger 2 Finger3 /ObjectMenu/NotesRests/Markings/Strings/Fingerings <_label>Finger 3 <_tooltip>Inserts fingering for finger 3 Finger4 /ObjectMenu/NotesRests/Markings/Strings/Fingerings <_label>Finger 4 <_tooltip>Inserts fingering for finger 4 Finger5 /ObjectMenu/NotesRests/Markings/Strings/Fingerings <_label>Finger 5 <_tooltip>Inserts fingering for finger 5 FingeringPosition /ObjectMenu/NotesRests/Markings/Strings <_label>Fingering Position <_tooltip>Allows you to specify the position of the fingering relative to the note at the cursor. FingeringsDoublestroke /ObjectMenu/NotesRests <_label>Fingerings <_tooltip>Place a fingering instruction on a note FirstTimeBar CloseRepeat /ObjectMenu/MeasureMenu/Repeats <_label>First Time Bar <_tooltip>Closes a repeated section and starts a first time bar (printing) FixSlursInStaff SimplifyTies /ObjectMenu/StaffMenu <_label>Fix Slurs <_tooltip>Removes incorrectly placed slur start/end markers on current voice/staff. CheckTiesInStaff FixSlursInStaff /ObjectMenu/StaffMenu <_label>Check Ties <_tooltip>Checks for wrongly tied notes in the current voice/staff. FlattenNote Flatten /ObjectMenu/NotesRests/EditNote <_label>Flatten or Append Flattened <_tooltip>Flatten note at cursor, or if appending flatten next note entered. DenemoLink /MainMenu/NavigationMenu <_label>Follow Link to Source <_tooltip>Follows the link at the cursor to a source document. FootPedalConductor AngryDelete /MainMenu/InputMenu/MIDI <_label>Foot Pedal Conductor <_tooltip>Press the foot pedal at the start of each measure. The bar number is displayed and the beats are interpolated following the timesignature set. Two quick presses of the foot pedal stops the conductor. Footnote D.C.AlFine /ObjectMenu/NotesRests/Markings/TextMarks <_label>Footnote <_tooltip>Prints a footnote at the bottom of the current page. The mark is placed above the note at the cursor. NoteColumnShift ShiftOn /ObjectMenu/StaffMenu/Voices <_label>Change Note Shift <_tooltip>On printing the current note/chord will be shifted from notes in other voices by the amount you give. Use this to alter which voice is shifted leftwards/rightwards. Forte Fortissimo /ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings <_label>Forte <_tooltip>Attaches Forte to chord and MIDI volume Fortissimo /ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings <_label>Fortissimo <_tooltip>Places a ff sign on the chord at the cursor ChangeGeneric ChangeChannel /ObjectMenu/Directives/Playback/MIDI <_label>Generic Control Change <_tooltip>Generic 0xB Control Change - User can give the midi bytes, too. Glissando /ObjectMenu/NotesRests/Markings/TextMarks <_label>Glissando <_tooltip>Inserts a glissando (portamento, slide), a line joining the notehead of this and the next note. GoToEmptyMeasure /MainMenu/NavigationMenu/Seek <_label>Go To Next Empty Measure <_tooltip>Move cursor to the next point in the current staff where the music ends. GraceAfter /ObjectMenu/NotesRests/GraceNotes <_label>Grace After <_tooltip>Print the grace note(s) at the cursor attached to the previous note. Beware! You must reissue this command if you change the notes in any way, only the pitch and duration when this command was issued will be printed. GraceNoteSwitcher /ObjectMenu/NotesRests/GraceNotes <_label>Grace Note (On/Off) <_tooltip>Transforms the current selected notes into grace notes. MakeGrace ToggleGrace /ObjectMenu/NotesRests/GraceNotes <_label>Grace/UnGrace <_tooltip>Changes the note at the cursor to/from being a grace note. Gives audio feedback. HalfBarline /ObjectMenu/Directives/Barlines <_label>Half Barline <_tooltip>Insert a barline with only half of its original size ShiftRealHalfDown ShiftRealHalfUp /ObjectMenu/NotesRests/Transpose <_label>Half tone down <_tooltip>Transpose/shift the cursor note or selection one half tone down ShiftRealHalfUp ShiftRealWholeDown /ObjectMenu/NotesRests/Transpose <_label>Half tone up <_tooltip>Transpose/shift the cursor note or selection one half tone up FiguredBassExercises /MainMenu/Educational/MIDI <_label>Handel's Figured Bass Exercises <_tooltip>Allows you to play in chords - a continuo realization - to Handel's continuo-practice exercises. Your continuo realization can optionally be marked to show consecutives. MovementNoteheadsHarmonic MovementNoteheadsPetrucci /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Harmonic <_tooltip>Harmonic note head style for the current movement. HarmonicSelectionSwitcher DownbowSelectionSwitcher /ObjectMenu/NotesRests/Markings/Articulations <_label>Harmonic (Off/On) <_tooltip>Mark/Unmark current selection or object with a harmonic ToggleHarmonic ToggleDownBow /ObjectMenu/NotesRests/Markings/Articulations <_label>Harmonic (Off/On) <_tooltip>Mark/Unmark chord with a harmonic MovementNoteheadsHarmonic-black MovementNoteheadsHarmonic /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Harmonic-black <_tooltip>Harmonic-black note head style for the current movement. MovementNoteheadsHarmonic-mixed MovementNoteheadsHarmonic-black /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Harmonic-mixed <_tooltip>Harmonic-mixed note head style for the current movement. Chapter /ObjectMenu/MovementMenu/Titles/BookTitles <_label>Heading <_tooltip>Prints a heading in upper case for the current movement. AdjustBassFigureHeight EditFiguredBass /ObjectMenu/NotesRests/Markings/FiguredBass <_label>Height of Bass Figure <_tooltip>Sets the height of the bass figure above the note. The unit is the distance between adjacent lines in the staff. AdjustFiguredBassHeights AdjustBassFigureHeight /ObjectMenu/NotesRests/Markings/FiguredBass <_label>Heights of Groups <_tooltip>Allows several groups of figures to be individually adjusted for height. HelpAllFeatures IRC /MainMenu/HelpMenu <_label>Browse Feature-Packed Score <_tooltip>Opens a score with examples of many things you can create with Denemo with Explanations attached. Click on the explanations in the Print View window. Or copy and paste useful objects to your score. HelpForReturnKey About /MainMenu/HelpMenu <_label>Help for Return Keypress <_tooltip>Does nothing except explain what the Return key is used for in Denemo, and how to make it an ordinary shortcut if you prefer. HideAccidental Ficta /ObjectMenu/NotesRests/EditNote <_label>Hide Accidental <_tooltip>Hides the accidental on the note at the cursor on printing. Does not affect the pitch. HideEmptyStaffs /ObjectMenu/MovementMenu/Typesetter <_label>Hide Empty Staffs (Off/On) <_tooltip>Controls whether staffs containing only rests are printed in the current movement. All staffs are printed on the first system (line) thereafter any staff that has only rests for a entire system is dropped. Use this in large scores to fit more systems per page. HideOssia ShowOssia /ObjectMenu/StaffMenu/Ossia <_label>Hide Ossia <_tooltip>Place this at the end of the music to be printed from the Ossia staff LineNumber LineOrSpace /MainMenu/Educational/Note-Reading <_label>Identify Line Number <_tooltip>Identify the line number in which the note is displayed SpaceNumber LineNumber /MainMenu/Educational/Note-Reading <_label>Identify Space Number <_tooltip>Identify the space number in which the note is display on NotForLayout PageBreak /ObjectMenu/Directives/Conditional-Directives <_label>Ignore for Current Layout <_tooltip>The Denemo Directive at the cursor will be ignored when printing from the current score layout (See View->Score Layout) Import-Lilypond Import-Midi /MainMenu/FileMenu/Import <_label>Import Lilypond (Limited) <_tooltip>Try to Import a Lilypond File Import-Midi ImportMusicXml /MainMenu/FileMenu/Import <_label>Import Midi (Limited) <_tooltip>Try to Imports a Midi File Import-MusicXml Import-Lilypond /MainMenu/FileMenu/Import <_label>Import MusicXml <_tooltip>Import a MusicXml file IncipitFromSelection BookCopyright /ObjectMenu/Score/Titles/BookTitles <_label>Incipit from Selection <_tooltip>Creates an incipit from the selection. This music will be printed on the title page. Only one voice is supported. Indent /ObjectMenu/MovementMenu/Typesetter/PrintLayout <_label>Indent <_tooltip>Alter the indent of the opening system for the current movement. ScoreIndent /ObjectMenu/Score/Typesetter/PrintLayout <_label>Indent <_tooltip>Indent the first system of every movement by the given amount. ToggleNoteDownTie ToggleNoteTie /ObjectMenu/NotesRests/TiedNotes <_label>Individual Note Down-Tie (Off/On) <_tooltip>Ties the individual note at the cursor the tie going down; repeat to remove. ToggleNoteTie InsertTiedNoteDuration /ObjectMenu/NotesRests/TiedNotes <_label>Individual Note Tie (Off/On) <_tooltip>Ties the note at the cursor leaving other notes in the current chord unchanged. ToggleNoteUpTie ToggleNoteTie /ObjectMenu/NotesRests/TiedNotes <_label>Individual Note Up-Tie (Off/On) <_tooltip>Ties the individual note in a chord the tie being above; repeat command to remove. InitialVoiceOne JoinVoices /ObjectMenu/StaffMenu/Voices <_label>Initial Voice One <_tooltip>Sets the (initial) voice of the staff to be voice one (this affects stems up, slurs etc on printing) InitialVoiceTwo InitialVoiceOne /ObjectMenu/StaffMenu/Voices <_label>Initial Voice Two <_tooltip>Sets the (initial) voice of the staff to be voice two (this affects stems down, slurs etc on printing) InitialVoiceThree InitialVoiceTwo /ObjectMenu/StaffMenu/Voices <_label>Initial Voice Three <_tooltip>Sets the (initial) voice of the staff to be voice three (this affects stems up, slurs etc on printing) InitialVoiceFour InitialVoiceThree /ObjectMenu/StaffMenu/Voices <_label>Initial Voice Four <_tooltip>Sets the (initial) voice of the staff to be voice four (this affects stems down, slurs etc on printing) InitialVoiceAuto InitialVoiceFour /ObjectMenu/StaffMenu/Voices <_label>Initial Automatic Voice <_tooltip>Undoes the effect of the VoiceOne, Two ... commands. The voice has variable stem direction, slur placement etc. InitialVoice InitialVoiceAuto /ObjectMenu/StaffMenu/Voices <_label>Choose Initial Voice <_tooltip>Choose which voice this staff will initially be set to. To change voice during music see the Directives->Voices menu. ForceBarline /ObjectMenu/Directives/Barlines <_label>Insert Barline <_tooltip>Insert barline at cursor, Denemo's measure count is unaffected. AddDuplicateMeasure AddMeasure /ObjectMenu/MeasureMenu <_label>Insert Duplicate Measure After <_tooltip>Inserts a copy of the current measure after the present measure. InsertStandaloneDirective /ObjectMenu/Directives <_label>Insert Lilypond <_tooltip>Insert or edit a directive in the LilyPond music typesetting language. This can be used for extra spacing, transposing or almost anything. See LilyPond documentation for ideas. InsertOneNote /ObjectMenu/NotesRests/InsertNote/InsertDuration <_label>Insert Note <_tooltip>Inserts a note in the prevailing duration. EnterRest /ObjectMenu/NotesRests/RestEntry <_label>Insert Rest <_tooltip>Inserts a rest in the prevailing duration NotationMagick-InsertReversedStringAsBinaryRhythm NotationMagick-InsertStringAsBinaryRhythm /MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString <_label>Insert Reversed String as Binary Rhythm <_tooltip>Give a string to generate a rhythm out of its ascii chars in binary encoding. The string gets reversed before converting. NotationMagick-InsertReversedStringAsReversedBinaryRhythm NotationMagick-InsertStringAsReversedBinaryRhythm /MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString <_label>Insert Reversed String as Reversed Binary Rhythm <_tooltip>Give a string to generate a rhythm out of its ascii chars in binary encoding. The string gets reversed before converting. The rhythm for each letter gets reversed before inserting. NotationMagick-InsertPoolShuffled /MainMenu/EditMenu/NotationMagick <_label>Insert Shuffled Pool <_tooltip>Inserts all notes, shuffled, from a user-specified pool of notes in Lilypond syntax NotationMagick-InsertStringAsBinaryRhythm /MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString <_label>Insert String as Binary Rhythm <_tooltip>Give a string to generate a rhythm out of its ascii chars in binary encoding NotationMagick-InsertStringAsReversedBinaryRhythm NotationMagick-InsertReversedStringAsBinaryRhythm /MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString <_label>Insert String as Reversed Binary Rhythm <_tooltip>Give a string to generate a rhythm out of its ascii chars in binary encoding. The rhythm for each letter gets reversed before inserting. InsertTwoGraceNotesBeamed ToggleGrace /ObjectMenu/NotesRests/GraceNotes <_label>Insert Two <_tooltip>Inserts two grace notes at the cursor beaming them together. Follow with a duration key. InsertWholeMeasureRest WholeMeasureRest /ObjectMenu/NotesRests/RestEntry <_label>Insert Whole Measure Rest <_tooltip>Inserts/Appends a rest measure; if the current measure is empty, it simply places the whole measure rest in it. InstallGraceNoteHints UnGraceAfter /ObjectMenu/NotesRests/GraceNotes <_label>Install Grace Note Hints <_tooltip>Where a grace note occurs at a boundary the LilyPond typesetter requires extra hints about positioning. This command installs them for the whole movement. It is usually run in the Check Score routine. ScoreInstrument /ObjectMenu/Score/Titles/SimpleTitles <_label>Instrument <_tooltip>Name of the instrument, centered below the subsubtitle. Also centered at the top of pages (other than the first page). InstrumentName SmallerStaff /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Instrument Name <_tooltip>Print Instrument name before staff at start of score, BookInstrumentation BookComposer /ObjectMenu/Score/Titles/BookTitles <_label>Instrumentation <_tooltip>Prints the instrumentation on the title page. This can be edited for layouts that print just one part or section. JoinChords SplitChord /ObjectMenu/NotesRests/ChangeDuration <_label>Join music objects <_tooltip>Joins all notes, chords and rests in the selection and inserts a new, longer note instead. May create tied notes. Uses the cursor position as pitch. JoinChordsToMergedChord JoinChords /ObjectMenu/NotesRests/ChangeDuration <_label>Join music objects to new chord <_tooltip>Joins all notes, chords and rests in the selection and inserts all selected notes as chord. May create tied notes. Largo Andante /ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications <_label>Largo <_tooltip>Attaches Largo to chord MarkupAtEnd InsertSpaceBeforeMovement /ObjectMenu/MovementMenu/Titles <_label>Text after Movement <_tooltip>Inserts the given Lilypond syntax after the current movement. LilyPondDefinition LilyPondInclude /ObjectMenu/Score <_label>LilyPond Definition <_tooltip>Create a definition at the head of the LilyPond output. This can then be referenced in the music. See LilyPond documentation. LilyPondInclude ScoreBlockProlog /ObjectMenu/Score <_label>LilyPond Include File <_tooltip>Allows specification of a LilyPond include file from the Denemo provided include files. ScoreBlockProlog ScoreProlog /ObjectMenu/Score <_label>LilyPond Score Block Prolog <_tooltip>Inserts LilyPond at the start of every score block (movement). ScoreProlog EditScoreDirective /ObjectMenu/Score <_label>LilyPond Score Prolog <_tooltip>Inserts LilyPond syntax for include files etc at head of score. LimitInterSystemSpace ScoreIndent /ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing <_label>Limit Space Between Systems <_tooltip>Limits the extent to which the lines are spaced apart to fill the page. LineBreak /ObjectMenu/Directives/Typesetter/PrintLayout <_label>Line Break <_tooltip>(Print) Start a new line (i.e. system) at this measure. This will be ignored if it breaks a beam or tuplet. Use Allow Line Break to break mid-measure. LineOrSpace /MainMenu/Educational/Note-Reading <_label>Line and Space Recognition <_tooltip>%tests your ability to recognize the difference between line and space ChangeLonga /ObjectMenu/NotesRests/ChangeDuration <_label>Longa <_tooltip>Change current note duration to Longa InsertLonga /ObjectMenu/NotesRests/InsertNote/InsertDuration <_label>Longa <_tooltip>Insert a Longa Longa Breve /ObjectMenu/NotesRests/EditDuration <_label>Longa <_tooltip>Append/Insert Longa duration SetLonga SetBreve /ObjectMenu/NotesRests/SelectDuration <_label>Longa <_tooltip>Sets Longa as the prevailing duration, installing it as a musical snippet. InsertLongaRest /ObjectMenu/NotesRests/RestEntry <_label>Longa Rest <_tooltip>Insert a rest with longa duration MidiAdvanceOnEdit /MainMenu/InputMenu/MIDI <_label>MIDI Advance on Edit <_tooltip>Advances the cursor on MIDI note entry. Use in Edit mode. MidiFilterOff /MainMenu/InputMenu/MIDI <_label>MIDI Filter Off <_tooltip>Turn off any MIDI filter script currently active. SetMovementTempo /ObjectMenu/MovementMenu/Playback <_label>Initial Tempo <_tooltip>Sets the (initial) playback tempo in quarter notes per minute. Major7Minor7OrDominant7 MajorMinorAugmentedOrDiminished /MainMenu/Educational/AuralTraining/Chord-Comparison <_label>Major7Minor7Dominant7 <_tooltip>Determine which seventh chord is sounded MajorOrAugmented DiminishedOrMinor /MainMenu/Educational/AuralTraining/Chord-Comparison <_label>MajorAugmented <_tooltip>Determine if chord sounded is Major or Augmented MajorOrMinor /MainMenu/Educational/AuralTraining/Chord-Comparison <_label>MajorMinor <_tooltip>Determine if the chord played is major or minor MajorMinorAugmentedOrDiminished MajorOrAugmented /MainMenu/Educational/AuralTraining/Chord-Comparison <_label>MajorMinorAugmentedDiminished <_tooltip>Determine if the chord sounded is Major Minor Augmented or Diminished MarcatoSelectionSwitcher ToggleFermata /ObjectMenu/NotesRests/Markings/Articulations <_label>Marcato (Off/On) <_tooltip>Mark/Unmark the selected notes marcato ToggleMarcato /ObjectMenu/NotesRests/Markings/Articulations <_label>Marcato (Off/On) <_tooltip>Mark/Unmark the current chord marcato MarkingInsideSlur MarkingInsideSlur /ObjectMenu/NotesRests/Slurs <_label>Marking Inside Slur <_tooltip>(Print) Next marking will be placed inside the slur. MovementNoteheadsMensural MovementNoteheadsNeomensural /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Mensural <_tooltip>Mensural note head style for the current movement. InsertDefinedLilyPond InsertStandaloneDirective /ObjectMenu/Directives <_label>Menu of Objects to Insert <_tooltip>Gives a menu of previously created LilyPondDefinition commands (see Score->LilyPond Definition menu for this) MergeRests CreateParts /ObjectMenu/StaffMenu/Voices <_label>Merge Rests <_tooltip>Merges rests where two voices have a common rest. Applies to the whole movement. For multi-measure rests you need to additionally suppress one of the multi-measure rest counts. MergeWithNextMeasure /ObjectMenu/MeasureMenu <_label>Merge with Next Measure <_tooltip>Joins two measures together. ScoreMeter /ObjectMenu/Score/Titles/SimpleTitles <_label>Meter <_tooltip>Meter string, flush-left below the poet. MezzoForte Fortissimo /ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings <_label>Mezzo Forte <_tooltip>Attach mf indication to a chord. MezzoPiano MezzoForte /ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings <_label>Mezzo Piano <_tooltip>prints mp and outputs MIDI vol change# MinimumFret DynamicText /ObjectMenu/Directives/Typesetter/Tablature <_label>Minimum Fret Number Allowed <_tooltip>In a Tab staff, restrict the frets available to larger than the given value. NotationMagick-MirrorSelectedObjects NotationMagick-ReverseSelectedObjects /MainMenu/EditMenu/NotationMagick <_label>Mirror Selected Objects (Axis=Cursor) <_tooltip>Mirror the selected notes. Axis is the cursor position. ToggleMordent /ObjectMenu/NotesRests/Markings/Ornaments <_label>Mordent (Off/On) <_tooltip>Adds/Removes a Mordent to the note MouseDefault /MainMenu/InputMenu/Mouse <_label>Mouse Default Action <_tooltip>Mouse left click positions the cursor, right click edits, left-click with caps-lock does nothing.. MouseInsertion /MainMenu/InputMenu/Mouse <_label>Mouse Note Insertion <_tooltip>Changes the mouse use when CapsLock is on: left click inserts note in the prevailing duration. The shortcuts for number keys 0, 1, 2 ... are set to change the prevailing duration. MoveToMovementBeginning MoveToBeginning /MainMenu/NavigationMenu/Cursor <_label>Move To Movement Beginning <_tooltip>Moves the cursor to the beginning of the movement without altering the selection MoveToMovementEnd MoveToMovementBeginning /MainMenu/NavigationMenu/Cursor <_label>Move To Movement End <_tooltip>Move the cursor to last measure, last staff without altering the selection. MoveToPreviousEmptyMeasure GoToEmptyMeasure /MainMenu/NavigationMenu/Seek <_label>Move To Previous Empty Measure <_tooltip>Move the cursor left until it finds an empty measure or the staffs beginning MultiMeasureRests InsertWholeMeasureRest /ObjectMenu/NotesRests/RestEntry <_label>Multi-Measure Rests <_tooltip>Creates a multi-measure rest from the whole measure rests after the cursor, or inserts the number of rests you specify after the cursor, making them a multi-measure rest. Multi-measure rests will be typeset as individual whole measure rests in any other part being typeset has music during them. StaffMultiMeasureRests CreateCuesForStaff /ObjectMenu/StaffMenu <_label>Multi-Measure Rests <_tooltip>Groups of whole measure rests of two or more are changed to multi-measure rests for the whole staff. NeoMensuralNotehead ChangeNotehead /ObjectMenu/NotesRests/NoteheadControl <_label>Neo-mensural <_tooltip>Prints note with neomensural style notehead. MovementNoteheadsNeomensural MovementNoteheadsBaroque /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Neomensural <_tooltip>Neomensural note head style for the current movement. NewStaffAfter /ObjectMenu/StaffMenu/InsertStaff <_label>New Staff After Current <_tooltip>Creates a new staff with the given name, after the current staff. Use the staff to voice command if you want to make this staff a voice on the previous staff. NewStaffBefore /ObjectMenu/StaffMenu/InsertStaff <_label>New Staff Before Current <_tooltip>Creates a new staff with the given name, before the current staff. NextBookmark /MainMenu/NavigationMenu/Bookmarks <_label>Next Bookmark <_tooltip>Seach forward for bookmarks in the current staff. NextHigher FindNextLowerNote /MainMenu/NavigationMenu/Seek <_label>Next Higher <_tooltip>Move cursor to next note higher than cursor posiiton FindNextLowerNote /MainMenu/NavigationMenu/Seek <_label>Next Lower <_tooltip>Moves cursor to next note that is lower than the cursor. NoBeam Beam1234 /ObjectMenu/NotesRests/Beaming <_label>No Beam <_tooltip>(Print) Removes beam from current note BeamLeftNone BeamRightNone /ObjectMenu/NotesRests/Beaming <_label>No Beam Left <_tooltip>Typeset the note at the cursor with no beam to the left. BeamRightNone NoBeam /ObjectMenu/NotesRests/Beaming <_label>No Beam Right <_tooltip>Typeset the note at the cursor with no beam to the right. ShiftOff VoicesDoublestroke /ObjectMenu/StaffMenu/Voices <_label>No Horizontal Shifts <_tooltip>Turns off horizontal displacement of notes (which avoid collisions between parts) NoLineBreak LineBreak /ObjectMenu/Directives/Typesetter/PrintLayout <_label>No Line Break <_tooltip>Disallow a line break at this measure. ReadingNoteNames /MainMenu/Educational/Note-Reading <_label>Note Name Recognition <_tooltip>%tests your ability to name the notes of the scale NoteNameSpeedTest /MainMenu/Educational/Note-Reading <_label>Note Name Speed Recognition <_tooltip>%tests your ability to name the notes of the scale NoteNamesDefault /MainMenu/InputMenu/Keyboard <_label>Note Names Default Action <_tooltip>Changes the shortcuts for note names a, b, c, d, e, f, g so that they edit the note at the cursor, or append a note when in the appending position. NoteNamesMove /MainMenu/InputMenu/Keyboard <_label>Note Names Move Cursor <_tooltip>Changes the shortcuts for note names a, b, c, d, e, f, g so that they move the cursor to the nearest note of that name. NotationMagick-InsertNoteFromPool /MainMenu/EditMenu/NotationMagick/SingleRandomNote <_label>Note from Pool <_tooltip>Inserts one note from a user-specified pool of notes in Lilypond syntax ShiftRealOctaveDown /ObjectMenu/NotesRests/Transpose <_label>Octave Down <_tooltip>Shifts current notes/selection down one octave while preserving accidental status. This means real transposition JumpUpOctave MoveCursorRight /MainMenu/NavigationMenu/Cursor <_label>Octave Up <_tooltip>Moves cursor up one octave. JumpDownOctave JumpUpOctave /MainMenu/NavigationMenu/Cursor <_label>Octave Down <_tooltip>Moves cursor down an octave. ShiftRealOctaveUp /ObjectMenu/NotesRests/Transpose <_label>Octave Up <_tooltip>Shifts current notes/selection up one octave while preserving accidental status. This means real transposition BeamLeftOne BeamRightOne /ObjectMenu/NotesRests/Beaming <_label>One Beam Left <_tooltip>Prints with just one beam linking to left. BeamRightOne NoBeam /ObjectMenu/NotesRests/Beaming <_label>One Beam Right <_tooltip>Prints with just one beam linking to the right. OpEight /MainMenu/MoreMenu <_label>OpEight <_tooltip>Wrapper/Dummy for Keypresses OpFive /MainMenu/MoreMenu <_label>OpFive <_tooltip>Wrapper/Dummy for Keypresses OpFour /MainMenu/MoreMenu <_label>OpFour <_tooltip>Wrapper/Dummy for Keypresses OpNine /MainMenu/MoreMenu <_label>OpNine <_tooltip>Wrapper/Dummy for Keypresses OpOne /MainMenu/MoreMenu <_label>OpOne <_tooltip>Wrapper/Dummy for Keypresses OpSeven /MainMenu/MoreMenu <_label>OpSeven <_tooltip>Wrapper/Dummy for Keypresses OpSix /MainMenu/MoreMenu <_label>OpSix <_tooltip>Wrapper/Dummy for Keypresses OpThree /MainMenu/MoreMenu <_label>OpThree <_tooltip>Wrapper/Dummy for Keypresses OpTwo /MainMenu/MoreMenu <_label>OpTwo <_tooltip>Wrapper/Dummy for Keypresses OpZero /MainMenu/MoreMenu <_label>OpZero <_tooltip>Wrapper/Dummy for Keypresses OpenMyDefaultTemplate OpenMyTemplate /MainMenu/FileMenu/OpenMenu <_label>Open Default Template <_tooltip>Opens the template Default.denemo in the user's custom template folder. OpenRepeat /ObjectMenu/MeasureMenu/Repeats <_label>Open Repeat Section <_tooltip>Marks the point where a repeat will start. A correspond close, or first and second time bars are needed. OpenAudio OpenSourceDialog /MainMenu/FileMenu/OpenMenu <_label>Open Source Audio <_tooltip>Opens an audio file which will be mixed with the current movement. OpenSourceDialog OpenNewWindow /MainMenu/FileMenu/OpenMenu <_label>Open Source for Transcribing <_tooltip>Opens a dialog to fetch a source facsimile or manuscript. Links can be placed in the Denemo score to this source file so that the source passage for a given bar can be re-displayed when reviewing the score. PageBreak LineBreak /ObjectMenu/Directives/Typesetter/PrintLayout <_label>Page Break <_tooltip>(Print) Forces a new page at this barline. MovementPageBreak /ObjectMenu/MovementMenu/Typesetter <_label>Page Break Before <_tooltip>Prints this movement starting on a new page ParenthesizeChord /ObjectMenu/ChordMenu <_label>Parenthesize Chord <_tooltip>Enclose the chord in ( ) on printing. ParenthesizeNote /ObjectMenu/NotesRests <_label>Parenthesize Note <_tooltip>Enclose the note at the cursor in ( ) when printed. PartCombine /ObjectMenu/StaffMenu/Voices/Part-Combining <_label>Part Combine Two Voices <_tooltip>The two voices will be printed only once when they are the same, otherwise they will be printed as parts. (Off/On) PasteReplaceSelection Paste /MainMenu/EditMenu <_label>Paste and Replace Selection <_tooltip>Paste the clipboard. Replace any selected objects. This paste-version also creates new barlines instead of strictly using the copied ones. Performance Play /MainMenu/PlaybackMenu <_label>Performance (Start/Stop) <_tooltip>Plays the current movement, observing repeats, Da Capo, fine and Dal Segno. If playing stops the performance MovementNoteheadsPetrucci MovementNoteheadsMensural /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Petrucci <_tooltip>Petrucci note head style for the current movement. MovementPiece /ObjectMenu/MovementMenu/Titles/SimpleTitles <_label>Piece <_tooltip>Prints the name given above and to the left at the start of the movement. Piece /ObjectMenu/MovementMenu/Titles/BookTitles <_label>Piece <_tooltip>Prints a piece name for the Movement PlayAll Play /MainMenu/PlaybackMenu <_label>Play All <_tooltip>Plays the current movement from the start, observing any mute objects placed in the staffs. DenemoPlayCursorToEnd /MainMenu/PlaybackMenu <_label>Play from Cursor to End <_tooltip>Playback all staffs from the current cursor position to the end of the movement. PlayAtCursor DenemoPlayCursorToEnd /MainMenu/PlaybackMenu <_label>Play Chord at Cursor <_tooltip>Sounds the note or chord at the cursor, using the current staffs instrument. PlayAllAtCursor PlayAtCursor /MainMenu/PlaybackMenu <_label>Play Music at Cursor <_tooltip>Plays the score for the duration of the note/chord at the cursor, starting at that note. RecreateTimebase /MainMenu/PlaybackMenu <_label>Create Timebase <_tooltip>Recalculates the timing of each note. ConvertMidiForBass /MainMenu/PlaybackMenu <_label>Convert MIDI Chords Over Bass <_tooltip>Takes a MIDI recording over a bass line and inserts the chords by matching the bass notes. Each chord must include the bass note. ScorePoet /ObjectMenu/Score/Titles/SimpleTitles <_label>Poet <_tooltip>Name of the poet, flush-left below the subsubtitle. BookPoet /ObjectMenu/Score/Titles/BookTitles <_label>Poet/Lyricist <_tooltip>Prints the poet or lyricist name on title page TransposeOnPrint /ObjectMenu/Score/Typesetter <_label>Transpose on Print (Graphical Interface) <_tooltip>Gets an interval from the user: the entire score is transposed by this interval on typesetting - key signatures are transposed as well as notes and chord symbols. TransposeScorePrint /ObjectMenu/Score/Typesetter <_label>Transpose on Print (Text Input) <_tooltip>Typesets the score transposed by the interval you give - key signatures are transposed as well as notes and chord symbols. PointAndClick /ObjectMenu/Score/Typesetter <_label>Point and Click (Off/On) <_tooltip>When on, clicking on a note in the Print Preview window takes the cursor to that note. This works also for Rehearsal Marks and many other objects in the score. The only reason to turn it off is for export to PDF file via the Export menu or the PDF button in the Print View. However, using print to file is a better way of doing this (if your operating system supports it) as then it is not needed. PortatoSelectionSwitcher TogglePortato /ObjectMenu/NotesRests/Markings/Articulations <_label>Portato (Off/On) <_tooltip>Marks/Unmaks the selection with the Portato TogglePortato /ObjectMenu/NotesRests/Markings/Articulations <_label>Portato (Off/On) <_tooltip>Mark/Unmark the chord Portato TogglePrall /ObjectMenu/NotesRests/Markings/Ornaments <_label>Prall (Off/On) <_tooltip>Adds/Removes a prall to the note TogglePrallPrall /ObjectMenu/NotesRests/Markings/Ornaments <_label>PrallPrall (Off/On) <_tooltip>Adds/Removes a PrallPrall to the note Presto /ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications <_label>Presto <_tooltip>Print Presto in bold italics above the chord. PrevBookmark /MainMenu/NavigationMenu/Bookmarks <_label>Prev Bookmark <_tooltip>Seach backward for bookmarks in the current staff. PrintAccompanistsScore PrintSelection /MainMenu/FileMenu/PrintMenu <_label>Print Accompanist's Score <_tooltip>Prints out the score with the topmost staff in tiny size and puts page breaks before each movement. PrintBassPartWithoutFigures PrintAccompanistsScore /MainMenu/FileMenu/PrintMenu <_label>Print Bass Part Omitting Figures <_tooltip>Prints the Bass part omitting any figured bass figures. PrintPartWithTitlePage PrintPart /MainMenu/FileMenu/PrintMenu <_label>Print Part with Title Page <_tooltip>Prints part with part name on title page PrintScoreAndParts Print /MainMenu/FileMenu/PrintMenu <_label>Print Score and Parts <_tooltip>Creates score layouts for the current layout (full score) and parts (named after instrument name). Set instrument names before use. PrintThreeReduced PrintTwoReduced /MainMenu/FileMenu/PrintMenu <_label>Print Three Parts as Cue for Accompanist <_tooltip>Prints top three parts on one staff as cues. PrintTwoReduced PrintAccompanistsScore /MainMenu/FileMenu/PrintMenu <_label>Print Two Parts as Cue for Accompanist <_tooltip>Prints the top two staffs on a single staff as cue. PrintWithAmbitus PrintAccompanistsScore /MainMenu/FileMenu/PrintMenu <_label>Print with Ambitus <_tooltip>Prints the score printing the range (ambitus) of each part at the start of the staff PrintAllLayouts Print /MainMenu/FileMenu/PrintMenu <_label>Prints All Layouts <_tooltip>Prints the score using all the defined score layouts. ChangeProgram ChangeChannel /ObjectMenu/Directives/Playback/MIDI <_label>Program <_tooltip>Change the Program of the current channel/staff QuickLilyPondExport ExportMUDELA /MainMenu/FileMenu/Export <_label>Quick LilyPond Export <_tooltip>Exports as LilyPond to a file named the same as the .denemo file but with .ly suffix. QuickLilyPondPart QuickLilyPondExport /MainMenu/FileMenu/Export <_label>Quick LilyPond Part <_tooltip>Writes a file containing the music of the current staff in LilyPond format. The filename is the current file name with \"-denemo\" and the movement and staff numbers appended (and the .ly suffix). RaggedBottom LimitInterSystemSpace /ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing <_label>Ragged Bottom <_tooltip>This turns ragged bottom off/on. If set, systems will not spread vertically down the page. This does not affect the last page. This should be set for pieces that have only two or three systems per page, for example orchestral scores. PlayAndRecordMidiIn MouseOrMidiDrivenPlayback /MainMenu/PlaybackMenu <_label>Playback and Record MIDI (Off/On) <_tooltip>Starts (or stops) playing the score from the playhead start (green marker bar) and simultaneously records your playing from MIDI in. You can stop the playback at any time and then the first MIDI note you entered is marked. Entering duration keys now enters the notes you played into the score. If you have no click track at the top one is created - set the keysignature/enharmonic range before you start. ReduceSystemSpacing /ObjectMenu/MovementMenu/Typesetter <_label>Reduce Space Between Systems (On/Off) <_tooltip>Reduces the gap between the systems of staffs on a page for the current movement. ReloadDrumHash /MainMenu/EditMenu <_label>Reload the "Drum GM to User" map <_tooltip>Reloads the drum map which is needed for DrumGm2User ReminderAccidental /ObjectMenu/NotesRests/EditNote <_label>Reminder Accidental <_tooltip>Shows the accidental in the print out inside (). Display shows accidental but plain. RemoveDotSelectionSwitcher /ObjectMenu/NotesRests/EditNote <_label>Remove Dot <_tooltip>Remove one dot for each note in the selection or single note RepeatEnd /ObjectMenu/Directives/Barlines <_label>Repeat End Barline <_tooltip>Insert a barline indicating the end of a repeated section. RepeatEndStart /ObjectMenu/Directives/Barlines <_label>Repeat End-Start <_tooltip>Inserts a barline ending one repeated section and starting another RepeatStart /ObjectMenu/Directives/Barlines <_label>Repeat Start Barline <_tooltip>Insert a barline indicating the start of a repeated section. InsertFirstAndSecondTimeBars RepeatEndStart /ObjectMenu/Directives/Barlines <_label>Insert 1st & 2nd Time Bars <_tooltip>Inserts first and second time bars each with a whole measure rest. You can then edit this to suit your music, e.g by inserting extra bars, deleting the repeat start etc. EndSecondTimeBar SecondTimeBar /ObjectMenu/MeasureMenu/Repeats <_label>Close Second Time Bar <_tooltip>Closes the second time bar peviously opened (printing) ReplaceChord Tremolo /ObjectMenu/NotesRests <_label>Replace LilyPond <_tooltip>Suppresses the normal LilyPond typetting for the current note/chord/rest replacing it with syntax provided by user. LoadDefaultComposerNumberkeys /MainMenu/MoreMenu <_label>Reset Keys in Composer Mode <_tooltip>Wrapper/Dummy for Keypresses ForAllLayouts OnlyForLayout /ObjectMenu/Directives/Conditional-Directives <_label>Reset for All Layouts <_tooltip>Clears conditional behaviour of this layout. The Directive will apply to all score layouts. RestrainOpenStrings MinimumFret /ObjectMenu/Directives/Typesetter/Tablature <_label>Restrain Open Strings <_tooltip>Restrains the use of open strings in Tablature. NotationMagick-ReverseSelectedObjects /MainMenu/EditMenu/NotationMagick <_label>Reverse Selected Objects <_tooltip>Revert selected objects ToggleReverseTurn ToggleTurn /ObjectMenu/NotesRests/Markings/Ornaments <_label>Reverse Turn (Off/On) <_tooltip>Add/Removes a Reverse Turn to the note RHFinger LHFinger /ObjectMenu/NotesRests/Markings/Strings <_label>Right Hand Fingering <_tooltip>Asks for a finger number and typesets p,m,i as appropriate. Use cancel to delete. ScoreVersion ScoreTagline /ObjectMenu/Score/Titles <_label>Score Version <_tooltip>Prints a tiny text in top left corner of the first page and optionally on subsequent pages. The score layout name can also be optionally included. If only on first page it comes below the title. SearchBookmark /MainMenu/NavigationMenu/Bookmarks <_label>Search Bookmark <_tooltip>Searches for a named Bookmark in the current staff. SecondTimeBar FirstTimeBar /ObjectMenu/MeasureMenu/Repeats <_label>Second Time Bar <_tooltip>Closes first time bars and starts second time bar(s) (printing) ToggleSegno /ObjectMenu/NotesRests/Markings/TextMarks <_label>Segno (Off/On) <_tooltip>No Tooltip yet SelectAll UnsetMark /MainMenu/EditMenu/Select <_label>Select All Music In Movement <_tooltip>Creates a selection for all the music in the current movement. SelectAllStaffs SelectStaff /MainMenu/EditMenu/Select <_label>Select All Staffs <_tooltip>Selects the whole movement / All staffs SelectColumn /MainMenu/EditMenu/Select <_label>Select Column <_tooltip>Selects the whole column SelectLeft SelectRight /MainMenu/EditMenu/Select <_label>Select Left <_tooltip>Move cursor left, selecting the object moved to. SelectMeasure SelectColumn /MainMenu/EditMenu/Select <_label>Select Measure <_tooltip>Create a selection for the entire current measure SelectRight /MainMenu/EditMenu/Select <_label>Select Right <_tooltip>Move cursor right, selecting the object moved to. SelectStaff UnsetMark /MainMenu/EditMenu/Select <_label>Select Staff <_tooltip>Selects the whole staff ChoosePalette UnhidePalettes /MainMenu/ViewMenu/Palettes <_label>Select a Palette to Show <_tooltip>Offers the available palettes to un-hide. SelectionToEmptyMeasure /MainMenu/EditMenu/Select <_label>Selection to Next Empty Measure <_tooltip>Creates a selection to the next empty measure in the current staff ZoomDialog /MainMenu/ViewMenu/Zoom <_label>Set Display Scale <_tooltip>Scales the display by value given by user. SetTabStrings TabStaff /ObjectMenu/StaffMenu/StaffPropertiesMenu/Tablature <_label>Set Open Strings <_tooltip>Sets the open strings for tablature to the notes of the current chord. StaffSize TinyStaff /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Set Staff Size <_tooltip>Sets the size of the staff on printing relative to the default 0. Value -3 is tiny 3 is large. MidiTempo /ObjectMenu/Directives/Playback/MIDI <_label>Set Tempo <_tooltip>Send a Midi command to change the tempo to a new bpm. No printout. TrillIsPlus /ObjectMenu/Score/Typesetter <_label>Set Trill Style as + <_tooltip>Prints trills with the common 18th c. notation: a plus sign. StaccatoStaccatissimo TrillIsPlus /ObjectMenu/Score/Typesetter <_label>Staccato as ' <_tooltip>Typesets staccato in 18th c. style, similar to modern stacattissimo. Applies to whole score. SetTuningAllStaffs SetTuningStaff /ObjectMenu/Directives/Playback <_label>Set Tuning Across All Staffs <_tooltip>At this time during playback switch to the temperament set when this command was invoked. SetTuningStaff TypesettingOn /ObjectMenu/Directives/Playback <_label>Set Tuning for Current Staff <_tooltip>At this time in playback the current staff's tuning will switch to the temperament selected when this command is invoked. SharpenNote Sharpen /ObjectMenu/NotesRests/EditNote <_label>Sharpen or Append Sharpened <_tooltip>Sharpens the note at the cursor, or if appending sharpen next entered note. PitchShift ConvertMidiForBass /MainMenu/PlaybackMenu <_label>Shift Pitch <_tooltip>Outputs a pitch bend signal to the synthesizer for the value +/- 64 given. ShortInstrumentName InstrumentName /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Short Instrument Name <_tooltip>Prints shortened form of instrument name before this staff for second and subsequent systems PianoStaffName ShortInstrumentName /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Piano Staff Name <_tooltip>Prints the name given at the start of the Piano staff which must be where the cursor is. Remove instrument names on the individual staffs by setting them blank. ShortMeasure /ObjectMenu/MeasureMenu <_label>Short Measure <_tooltip>Allow too few notes/rests in this measure. LilyPond will engrave this measure (in all staffs) with the short duration given by notes already present when this command was issued. ReduceSlur ExtendSlur /ObjectMenu/NotesRests/Slurs <_label>Shorten Slur from End <_tooltip>Shorten a slur that ends at the cursor. UnhidePalettes /MainMenu/ViewMenu/Palettes <_label>Show Hidden Palettes <_tooltip>Un-hides all non-empty palettes. EditCursorObject /MainMenu/EditMenu <_label>Run Object Editor <_tooltip>Opens a dialog to edit the object at the cursor. ShowLastChange PasteComment /MainMenu/EditMenu <_label>Show Last Change <_tooltip>Shows the last change recorded on the Undo stack. ShowOssia CreateOssiaStaff /ObjectMenu/StaffMenu/Ossia <_label>Show Ossia <_tooltip>Place this at the start of the music to be printed from the Ossia staff NotationMagick-ShuffleSelectedObjects NotationMagick-MirrorSelectedObjects /MainMenu/EditMenu/NotationMagick <_label>Shuffle Selected Objects <_tooltip>Shuffle the selected objects SimplifyTies TransposeStaffPrint /ObjectMenu/StaffMenu <_label>Simplify Ties <_tooltip>Converts tied notes to longer notes and removes spurious ties. MovementNoteheadsSlash MovementNoteheadsXcircle /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Slash <_tooltip>Slash note head style for the current movement. SlurTwo /ObjectMenu/NotesRests/Slurs <_label>Slur with Next Note <_tooltip>Creates a slur from current note to next note. SmallFontStart /ObjectMenu/Directives/Typesetter <_label>Small Size <_tooltip>Music after this is printed in a small size. SmallFontEnd SmallFontStart /ObjectMenu/Directives/Typesetter <_label>End Small Size <_tooltip>Printing resumes normal size music. SmallerStaff /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Smaller Staff <_tooltip>The current staff will print in a smaller size. Use this for the solo part above a piano accompaniment ReadingNoteNamesSolfege /MainMenu/Educational/Note-Reading <_label>Solfege Note Name Recognition <_tooltip>%tests your ability to name the notes of the scale NotationMagick-SortSelectionAscending NotationMagick-ShuffleSelectedObjects /MainMenu/EditMenu/NotationMagick <_label>Sort Selection (Ascending) <_tooltip>Sort all notes in the selection, ascending order. NotationMagick-SortSelectionDescending NotationMagick-SortSelectionAscending /MainMenu/EditMenu/NotationMagick <_label>Sort Selection (Descending) <_tooltip>Sort all notes in the selection, descending order. SplitMeasure /ObjectMenu/MeasureMenu <_label>Split Measure at Cursor <_tooltip>Split the current measure into two at the cursor. SplitChord /ObjectMenu/NotesRests/ChangeDuration <_label>Split Note/Chord <_tooltip>Split a chord into a specific amount of smaller notes while preserving original duration, generating tuplets if necessary. Not for rests. StaccatissimoSelectionSwitcher ToggleStaccatissimo /ObjectMenu/NotesRests/Markings/Articulations <_label>Staccatissimo (Off/On) <_tooltip>Toggles Staccatissimo ToggleStaccatissimo ToggleStaccato /ObjectMenu/NotesRests/Markings/Articulations <_label>Staccatissimo (Off/On) <_tooltip>Mark/Unmark chord as Staccatissimo StaccatoSelectionSwitcher ToggleStaccato /ObjectMenu/NotesRests/Markings/Articulations <_label>Staccato (Off/On) <_tooltip>Adds the staccato dot or removes it ToggleStaccato ToggleAccent /ObjectMenu/NotesRests/Markings/Articulations <_label>Staccato (Off/On) <_tooltip>Mark/Unmark the chord staccato SetCurrentStaffAsVoice MoveToVoiceDown /ObjectMenu/StaffMenu/Voices <_label>Staff to Voice <_tooltip>The current staff will be typeset as a voice on the staff above. StartTuplet StartTriplet /ObjectMenu/NotesRests/Tuplets <_label>Start Arbitrary Tuplet <_tooltip>Asks for ratio of tuplet and then puts in a start for that. Use EndTuplet command after entering tuplet notes. Note that the Denemo display will not automatically group the tuplet, but it will print with expected beaming etc. StartBeam /ObjectMenu/NotesRests/Beaming <_label>Start Beam <_tooltip>Instructs the LilyPond engraver to start a beam here. (Print effect only) CadenzaOn Tempo /ObjectMenu/Directives/Markings/Spanning <_label>Start Cadenza <_tooltip>Inserts Cadenza start at the current cursor position, which should be the start of a (Denemo) bar. Turns off automatic barlines, beaming etc and sets small sized notes for a cadenza. You can break up the cadenza in the Denemo Display into Denemo "bars" if the cadenza is too long. You will need to insert barlines or use the Allow Page/Line break command to let the typesetter break lines. Add Ignore Measure Duration Error directives in each bar if you want to use Check Score. FinishCadenza CadenzaOn /ObjectMenu/Directives/Markings/Spanning <_label>End Cadenza <_tooltip>Inserts Cadenza end at the current cursor position which should be at the start of a (Denemo) bar. See Start Cadenza for details. HelpForStemControl /ObjectMenu/NotesRests/StemControl <_label>Help for Stem Control <_tooltip>Stem direction (up, down or automatic - depending on the note height on the staff- is normally controlled by selecting the LilyPond voice for the music on the staff. This menu is for primitive commands that force stems in one direction without altering slur, tie, ornament directions. Use right-click More Commands to un-hide these primitives if needed. StartDownStems /ObjectMenu/NotesRests/StemControl <_label>Stems Down <_tooltip>Stems from now on point downward. StartUpStems /ObjectMenu/NotesRests/StemControl <_label>Stems Up <_tooltip>Stems from now on point upward. CountSteps /MainMenu/Educational/Note-Reading <_label>Step Counting Exercise <_tooltip>%tests your ability to find the number of diatonic notes between two notes StepSkipOrSame /MainMenu/Educational/Note-Reading <_label>Step, Skip, or Same? <_tooltip>%tests your ability to determine if note is moving by a step or skip BeamingOff PageBreak /ObjectMenu/Directives/Typesetter <_label>Stop Beaming <_tooltip>(Print)Stop automatic beaming from current position in score. BeamingOn BeamingOff /ObjectMenu/Directives/Typesetter <_label>Start Beaming <_tooltip>(Print) Start automatic beaming at this point in score. (Used after turning beaming off). StoppedSelectionSwitcher /ObjectMenu/NotesRests/Markings/Articulations <_label>Stopped (Off/On) <_tooltip>Mark/Unmark the selected notes stopped StringNum /ObjectMenu/NotesRests/Markings/Strings <_label>String Number <_tooltip>Followed by a number, places string number on note. Section /ObjectMenu/MovementMenu/Titles/BookTitles <_label>Sub-Title <_tooltip>Prints a subtitle for the current movement MovementSubtitle /ObjectMenu/MovementMenu/Titles/SimpleTitles <_label>Subtitle <_tooltip>Prints the given name below the title of the current movement. SuggestFlat SuggestSharp /ObjectMenu/NotesRests/EditNote <_label>Suggest Flat <_tooltip>Prints flat sign over the note at the cursor SuggestNatural SuggestFlat /ObjectMenu/NotesRests/EditNote <_label>Suggest Natural <_tooltip>Prints a natural over the note at the cursor SuggestSharp ReminderAccidental /ObjectMenu/NotesRests/EditNote <_label>Suggest Sharp <_tooltip>Prints a sharp above the note at the cursor SustainOff SustainOn /ObjectMenu/Directives/Markings/Spanning <_label>Sustain Off <_tooltip>Prints a Sustain Off Mark SustainOn BreathMark /ObjectMenu/Directives/Markings/Spanning <_label>Sustain On <_tooltip>Prints a Sustain Pedal On Mark SynchronizeAudio PlayAndRecordMidiIn /MainMenu/PlaybackMenu/Audio <_label>Synchronize Audio <_tooltip>Plays the audio attached to the current movement. Creates a timing bar for each space bar press. Music written in the staffs below will synchronize with the audio. SystemSystemPadding ScoreIndent /ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing <_label>System to System Padding <_tooltip>Allows control over the padding between successive systems down the page. (A system is all the staffs representing the music at one time, sometimes called a "line" of music). TabStaff TinyStaff /ObjectMenu/StaffMenu/StaffPropertiesMenu/Tablature <_label>Tablature <_tooltip>Converts to tablature notation (print only) TocTitle BookPoet /ObjectMenu/Score/Titles/BookTitles <_label>Table of Contents Title <_tooltip>Gives a heading for a table of contents, inserting the table in the book. ScoreTagline /ObjectMenu/Score/Titles <_label>Tagline <_tooltip> Centered at the bottom of the last page. TaglineLink ScoreTagline /ObjectMenu/Score/Titles <_label>Tagline with Link <_tooltip>Creates a tagline with a link in PDF output. MetronomeMark /ObjectMenu/Directives/Markings <_label>Tempi and Metronome Marks <_tooltip>Insert tempi and/or metronome marks, printed or not, adjust playback tempo to suit TenutoSelectionSwitcher ToggleTenuto /ObjectMenu/NotesRests/Markings/Articulations <_label>Tenuto (Off/On) <_tooltip>Toggles the Tenuto Line _ On/Off ToggleTenuto ToggleFermata /ObjectMenu/NotesRests/Markings/Articulations <_label>Tenuto (Off/On) <_tooltip>Mark/Unmark the chord Tenuto TextInsideSlur AvoidSlurAccidentalCollision /ObjectMenu/NotesRests/Slurs <_label>Text Inside Slur <_tooltip>(Print) Next text marking will be placed inside the slur. AttachedText /ObjectMenu/NotesRests/Markings/TextMarks <_label>Multi-line Text and Music <_tooltip>Attaches multi-line text which can include music snippets, transposing note/chord names, fret-diagrams, with control over bold, italic font size and more. Double quotes and {} must be paired - check with the Preview button before okaying the markup. Newlines are triggered by the paragraph sign. BeamLeftThree /ObjectMenu/NotesRests/Beaming <_label>Three Beams Left <_tooltip>Prints with just three beams linking to the left. BeamRightThree /ObjectMenu/NotesRests/Beaming <_label>Three Beams Right <_tooltip>Prints with just three beams linking to the right. TimesigWithBeatStructure InsertTimeSig /ObjectMenu/TimeSig <_label>Time Signature with Beaming Rule <_tooltip>Inserts a time signature with indication for how to beam the notes. Insert at beginning of staff in order to replace the initial time signature. TinyStaff SmallerStaff /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Tiny Staff <_tooltip>Prints current staff in a tiny font. TinyStaffAllMovements TinyStaff /ObjectMenu/Score/Typesetter <_label>Tiny Staff in All Movements <_tooltip>Gets a staff number 1 ... n from user and makes that staff tiny in all movements. BookTitle /ObjectMenu/Score/Titles/BookTitles <_label>Title <_tooltip>Prints a title on title page MovementTitle /ObjectMenu/MovementMenu/Titles/SimpleTitles <_label>Title <_tooltip>Prints the name given as a title above the current movement. ScoreTitle /ObjectMenu/Score/Titles/SimpleTitles <_label>Title <_tooltip>Prints the name given as a title centered at the start of the score. TitledPiece /ObjectMenu/MovementMenu/Titles/BookTitles <_label>Title <_tooltip>Prints title for the current movement, which will get a page reference in a table of contents. CriticalCommentaryIntro TocTitle /ObjectMenu/Score/Titles/BookTitles/Epilog <_label>Title and Introduction <_tooltip>A button is created for putting a title and introductory text for a critical commentary at the end of the score. MoveNoteToCursor /ObjectMenu/NotesRests/EditNote <_label>To Cursor <_tooltip>Moves the nearest note to join the cursor ToggleImmediatePlayback /MainMenu/PlaybackMenu <_label>Toggle Immediate Playback <_tooltip>Toggle on/off if you want to hear the note directly after inserting/changing. ToggleTripleting ToggleTupletNumbering /ObjectMenu/NotesRests/Tuplets <_label>Toggle Triplet Entry (Off/On) <_tooltip>Inserts a start triplet or end tuple alternately. ShiftDown ShiftUp /ObjectMenu/NotesRests/Transpose <_label>Tonal step down <_tooltip>Transpose/shift the cursor note or selection one step down, stay in the keysignature. ShiftUp /ObjectMenu/NotesRests/Transpose <_label>Tonal step up <_tooltip>Transpose/shift the cursor note or selection one step up, stay in the keysignature. UpDownOrSame /MainMenu/Educational/Note-Reading <_label>Trace Note Direction <_tooltip>%tests your note tracking ability Tremolo /ObjectMenu/NotesRests <_label>Tremolo <_tooltip>Prints the note at the cursor with the tremolo marking for the subdivisions specified. ToggleTrill /ObjectMenu/NotesRests/Markings/Ornaments <_label>Trill (Off/On) <_tooltip>Adds/Removes a trill to the note Tripletize ToggleTripleting /ObjectMenu/NotesRests/Tuplets <_label>Triplet-ize <_tooltip>Turns the note on or before the cursor into a triplet of notes with the same total duration. TripletizeSlurred Tripletize /ObjectMenu/NotesRests/Tuplets <_label>Triplet-ize (Slurred) <_tooltip>Turns the note at or before the cursor into a triplet of the same total duration, slurring the triplet. ToggleTupletBracketsIfBeamed ToggleTupletNumbering /ObjectMenu/NotesRests/Tuplets <_label>Tuplet Brackets if not Beamed <_tooltip>Turns tuplet brackets off for beamed notes. Affects tuplets from the cursor onwards. ToggleTupletNumbering /ObjectMenu/NotesRests/Tuplets <_label>Tuplet Numbering (On/Off) <_tooltip>Control whether tuplet numbers will be printed over tuplets. ToggleTurn TogglePrallPrall /ObjectMenu/NotesRests/Markings/Ornaments <_label>Turn (Off/On) <_tooltip>Add/Removes a Turn to the note SetNewbieStatus HelpForReturnKey /MainMenu/HelpMenu <_label>Turn Excessive Tooltips (Off/On) <_tooltip>Sets your status as a newbie on or off. This affects the tooltips and palettes. Note you can also independently delay tooltips, indefinitely if you wish, via the preferences dialog. See Edit->Change Preferences->Command Behavior NotationMagick-TwelveToneRow /MainMenu/EditMenu/NotationMagick <_label>Twelve Tone Row <_tooltip>Generates twelve notes of the prevailing duration, each is unique so the whole chromatic range gets inserted in a random manner. BeamLeftTwo /ObjectMenu/NotesRests/Beaming <_label>Two Beams Left <_tooltip>Prints with just two beams linking to the left. BeamRightTwo /ObjectMenu/NotesRests/Beaming <_label>Two Beams Right <_tooltip>Prints with just two beams linking to the right. TwoTimeSignatures TimesigWithBeatStructure /ObjectMenu/TimeSig <_label>Two Time Signatures <_tooltip>Prints two time-signatures, the second is active. DenemoBar /ObjectMenu/Score/Typesetter <_label>Typeset Barlines Literally (Off/On) <_tooltip>Advanced: Typesets the Denemo barlines, regardless of the timing. Turns off automatic beaming. DeactivateTimeSignatureStencil /ObjectMenu/Score/Typesetter <_label>(Print) Don't Engrave Time Signatures <_tooltip>Deactivates the stencil for Time Signatures for the whole score, which prevents them from getting drawn and taking space. But the logic is still active. TypesetVersesAtEnd DeleteVerse /ObjectMenu/Lyrics <_label>Typeset Verses at End <_tooltip>Let's you choose a number of verses to print at the end of the piece (movement), instead of underlaying the music. The verses are copied to the end so can be deleted once copied to prevent them from appearing beneath the music in addition. TypesettingOff /ObjectMenu/Directives/Typesetter <_label>TypesettingOff <_tooltip>Turns off typesetting from that point until turned on. TypesettingOn TypesettingOff /ObjectMenu/Directives/Typesetter <_label>TypesettingOn <_tooltip>Turns on typesetting from this point forward in all staffs. UnGraceAfter GraceAfter /ObjectMenu/NotesRests/GraceNotes <_label>Un-Grace After <_tooltip>Make the grace note at the cursor closer to the following rather than preceding note. ToggleUpPrall /ObjectMenu/NotesRests/Markings/Ornaments <_label>Up Prall (Off/On) <_tooltip>Adds/Removes Up Prall ornament ToggleTieUp ToggleTieDown /ObjectMenu/NotesRests/TiedNotes <_label>Up Tie (Off/On) <_tooltip>Ties to next note, tie upwards, or removes tie. ToggleUpBow ToggleTenuto /ObjectMenu/NotesRests/Markings/Articulations <_label>UpBow (Off/On) <_tooltip>Mark/Unmark chord with an Up Bow UpBowSelectionSwitcher MarcatoSelectionSwitcher /ObjectMenu/NotesRests/Markings/Articulations <_label>UpBow (Off/On) <_tooltip>Mark/Unmark current selection or note with UpBow ShiftOn ShiftOff /ObjectMenu/StaffMenu/Voices <_label>Use Horizontal Shifts <_tooltip>Turns on horizontal displacements of notes where needed. VoicesDoublestroke /ObjectMenu/Directives/Typesetter/Voices <_label>Voice Preset <_tooltip>Choose a preset for four voices or automatic voice. VoicePreset1 VoicePresetAutomatic /ObjectMenu/Directives/Typesetter/Voices <_label>Voice Preset 1 (Stems Up) <_tooltip>Preset for first voice. Stems up VoicePreset2 VoicePreset1 /ObjectMenu/Directives/Typesetter/Voices <_label>Voice Preset 2 (Stems Down) <_tooltip>Preset for second voice. Stems down. VoicePreset3 VoicePreset2 /ObjectMenu/Directives/Typesetter/Voices <_label>Voice Preset 3 (Stems Up) <_tooltip>Preset for third voice. Stems up. VoicePreset4 VoicePreset3 /ObjectMenu/Directives/Typesetter/Voices <_label>Voice Preset 4 (Stems Down) <_tooltip>Preset for voice four. Stems down. VoicePresetAutomatic /ObjectMenu/Directives/Typesetter/Voices <_label>Voice Preset Automatic <_tooltip>Automatic voice preset. Resets to normal behaviour. SetCurrentVoiceAsStaff SetCurrentStaffAsVoice /ObjectMenu/StaffMenu/Voices <_label>Voice to Staff <_tooltip>The current voice will be typeset on its own staff. ChangeVolume ChangeProgram /ObjectMenu/Directives/Playback/MIDI <_label>Volume <_tooltip>Change the Volume of a channel/staff WholeMeasureRepeat ParenthesizeNote /ObjectMenu/MeasureMenu <_label>Whole Measure Repeat <_tooltip>Inserts a whole measure repeat sign. WholeMeasureRest EnterRest /ObjectMenu/NotesRests/RestEntry <_label>Whole Measure Rest <_tooltip>Inserts a whole measure rest at the cursor ShiftRealWholeDown ShiftRealWholeUp /ObjectMenu/NotesRests/Transpose <_label>Whole tone down <_tooltip>Transpose/shift the cursor note or selection one whole tone down ShiftRealWholeUp /ObjectMenu/NotesRests/Transpose <_label>Whole tone up <_tooltip>Transpose/shift the cursor note or selection one whole tone up MovementNoteheadsXcircle MovementNoteheadsCross /ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles <_label>Xcircle <_tooltip>Xcircle note head style for the current movement. ZoomIn /MainMenu/ViewMenu/Zoom <_label>Zoom In <_tooltip>Zoom In ZoomOut /MainMenu/ViewMenu/Zoom <_label>Zoom Out <_tooltip>Zoom Out ZoomReset /MainMenu/ViewMenu/Zoom <_label>Zoom to 100% <_tooltip>Zoom to 100%, restore the original size FlattenKeysig SharpenKeysig /ObjectMenu/Key <_label>â™­ <_tooltip>Flattens the key signature by one degree. If no key signature at the cursor, operates on the initial key signature. FlattenInitialKeysigs SharpenInitialKeysigs /ObjectMenu/Key <_label>â™­ Initial <_tooltip>Flattens the inital key signature by one degree on all staffs/voices. SharpenKeysig InitialKey /ObjectMenu/Key <_label>♯ <_tooltip>Sharpens the key signature by one degree. If no key signature at cursor, sharpens the initial key signature. SharpenInitialKeysigs InitialKey /ObjectMenu/Key <_label>♯ Initial <_tooltip>Sharpens the inital key signature by one degree on all staffs/voices. NewStructuredStaff NewStaffBefore /ObjectMenu/StaffMenu/InsertStaff <_label>New Structured Staff <_tooltip>Creates a new staff below the current staff with the same time signature changes inserted. CreateClickStaffForMidi /ObjectMenu/StaffMenu/InsertStaff/MIDI <_label>Create Click Track Staff <_tooltip>Creates a staff at the top of this score from the imported MIDI using tempo and time signature information (if present). The measures are filled with drum beats so that pitches in the MIDI tracks can be displayed above them. When you have finished the import you can delete this staff. LoadMidiTrack CreateClickStaffForMidi /ObjectMenu/StaffMenu/InsertStaff/MIDI <_label>Insert Staff for MIDI Track <_tooltip>Creates a staff below the click track for the MIDI track selected. The staff is empty except for time signature and tempo changes. The MIDI pitches from the track are displayed above the click track and notes can be inserted by double-clicking on a MIDI pitch and entering the rhythm. GuidedMidiImport OpenAudio /MainMenu/FileMenu/OpenMenu <_label>Open Source MIDI <_tooltip>Opens a MIDI file for transcribing. Load each track in turn and insert the MIDI notes by playing the durations. NextNoteOnset DenemoLink /MainMenu/NavigationMenu/MIDI <_label>Next Note Onset <_tooltip>Moves to the next MIDI note onset in the current recorded or imported MIDI track. Inserted durations will take their pitch from this note. PreviousNoteOnset NextNoteOnset /MainMenu/NavigationMenu/MIDI <_label>Previous Note Onset <_tooltip>Moves the marked MIDI note onset to the one before the current one. FirstNoteOnset PreviousNoteOnset /MainMenu/NavigationMenu/MIDI <_label>First Note Onset <_tooltip>The first recorded or imported MIDI note onset in the current track becomes marked so that entered durations will be given its pitch. UnmarkNoteOnset FirstNoteOnset /MainMenu/NavigationMenu/MIDI <_label>Un-mark Note Onsets <_tooltip>Removes the mark from the MIDI note onset, so that inserting durations have their normal meaning. InsertMarkedMidi Tremolo /ObjectMenu/NotesRests/MIDI <_label>Insert Marked MIDI <_tooltip>Inserts the marked MIDI note from the current track, using the duration suggested. Use duration keys to insert the same note with a different duration. SelectMidiImportStrategy Import-MusicXml /MainMenu/FileMenu/Import <_label>Import MIDI <_tooltip>Import Music from a MIDI file, either guided or (in simple cases) automatically. PreviousMidiTrack NewStructuredStaff /ObjectMenu/StaffMenu/InsertStaff/MIDI <_label>Load Previous MIDI Track <_tooltip>Creates a staff for the imported MIDI track previous to the current one, making that the current one. NextMidiTrack PreviousMidiTrack /ObjectMenu/StaffMenu/InsertStaff/MIDI <_label>Load Next Midi Track <_tooltip>Creates a staff for the next MIDI track after the current one, making that the current one. DeleteRecordedMidi DeletePreviousObject /MainMenu/EditMenu/Delete <_label>Delete Imported/Recorded Midi <_tooltip>Deletes the MIDI that has been imported or recorded via MIDI in. NonPrintingStaff /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Non Printing Staff <_tooltip>Turns the on/off whether this staff will be typeset. The staff still displays normally but will be dropped for the print view. CursorToMarkedMidiNotePosition UnmarkNoteOnset /MainMenu/NavigationMenu/MIDI <_label>Cursor to Marked Onset <_tooltip>Moves the Denemo cursor to the note to which the marked MIDI note onset belongs. ChangeTo0 RemoveDot /ObjectMenu/NotesRests/ChangeDuration <_label>Change Duration To ð… <_tooltip>Changes the note or rest at the cursor to ð… duration. Works also in appending position. ChangeTo1 ChangeTo0 /ObjectMenu/NotesRests/ChangeDuration <_label>Change Duration To ð…ž <_tooltip>Changes the note or rest at the cursor to ð…ž duration. Works also in appending position. ChangeTo2 ChangeTo1 /ObjectMenu/NotesRests/ChangeDuration <_label>Change Duration To ð…Ÿ <_tooltip>Changes the note or rest at the cursor to ð…Ÿ duration. Works also in appending position. ChangeTo3 ChangeTo2 /ObjectMenu/NotesRests/ChangeDuration <_label>Change Duration To ð…  <_tooltip>Changes the note or rest at the cursor to ð…  duration. Works also in appending position. ChangeTo4 ChangeTo3 /ObjectMenu/NotesRests/ChangeDuration <_label>Change Duration To ð…¡ <_tooltip>Changes the note or rest at the cursor to ð…¡ duration. Works also in appending position. ChangeTo5 ChangeTo4 /ObjectMenu/NotesRests/ChangeDuration <_label>Change Duration To ð…¢ <_tooltip>Changes the note or rest at the cursor to ð…¢ duration. Works also in appending position. ChangeTo6 ChangeTo5 /ObjectMenu/NotesRests/ChangeDuration <_label>Change Duration To ð…£ <_tooltip>Changes the note or rest at the cursor to ð…£ duration. Works also in appending position. ChangeTo7 ChangeTo6 /ObjectMenu/NotesRests/ChangeDuration <_label>Change Duration To ð…¤ <_tooltip>Changes the note or rest at the cursor to ð…¤ duration. Works also in appending position. ApparentTimeSignature SingleDigitTimeSig /ObjectMenu/TimeSig <_label>Apparent Time Signature <_tooltip>Typesets a time signature which is not the one actually being used. This is used in polymetric music, often in conjunction with a tuplet spanning the whole staff. ScoreComment EditScoreDirective /ObjectMenu/Score <_label>Comment <_tooltip>Stores any textual commentary you may have for this score. SetThumbnail /MainMenu/FileMenu/SaveMenu <_label>Set Thumbnail from Selection <_tooltip>Sets the thumbnail for opening this file to the selection. (The selection must be in the first movement). AccompanistsScore /ObjectMenu/Score/Typesetter <_label>Accompanist's Score (Off/On) <_tooltip>Sets/Unsets the top staff of each movement to a tiny font, with the lower staffs - the accompaniment - at the normal font. Print effect only. BarNumberingInterval /ObjectMenu/Score/Typesetter/Numbering <_label>Bar Numbering Interval <_tooltip>Sets the interval at which bar numbers will be printed on typesetting. MMRExpandLimit AutoAccidentals /ObjectMenu/Directives/Typesetter <_label>Multi-Measure Rest Expand Limit <_tooltip>In Multi-Measure rests: controls how many measures rest are notated as church rests before numbers are used. TieShape /ObjectMenu/NotesRests/TiedNotes/Shape <_label>Tie Shape <_tooltip>Gives a choice of modifications to make to the following tie. ShapeTieFlatter /ObjectMenu/NotesRests/TiedNotes/Shape <_label>Flatter/More Curved <_tooltip>Makes the next tie more or less curved depending on the value given. The change is relative to the current shape, not the default shape. ShapeTieHigher ShapeTieFlatter /ObjectMenu/NotesRests/TiedNotes/Shape <_label>Higher/Lower. <_tooltip>Moves the next tie higher/lower by the amount given from the current position. ShapeTieWider ShapeTieHigher /ObjectMenu/NotesRests/TiedNotes/Shape <_label>Widen/Make Narrower <_tooltip>Makes the next tie wider/narrower by the amount given. The change is relative to the default value. Void DenemoDurationInTicks /MainMenu/EditMenu <_label>(Print) Void Object <_tooltip>On typesetting the current object will be evaluated, but otherwise ignored. CheckAndPrint Print /MainMenu/FileMenu/PrintMenu <_label>Check and Print <_tooltip>Checks the score for errors, if none are found proceeds to typeset and print the current layout. PartCombineChords InitialVoice /ObjectMenu/StaffMenu/Voices/Part-Combining <_label>Part Combine Chords <_tooltip>From the cursor onwards chords will be combined from the parts included in the part combine command. PartCombineUnisono PartCombineChords /ObjectMenu/StaffMenu/Voices/Part-Combining <_label>Unisono <_tooltip>Combine parts as unison. PartCombineAutomatic PartCombineUnisono /ObjectMenu/StaffMenu/Voices/Part-Combining <_label>Automatic <_tooltip>Reverts to the default part combining. PartCombineApart PartCombineAutomatic /ObjectMenu/StaffMenu/Voices/Part-Combining <_label>Keep Voices Apart <_tooltip>When part combining, from this point the parts will be kept apart even though they could be combined. AdvancedEdit EditSimilar /MainMenu/EditMenu <_label>Advanced Edit <_tooltip>Edits a Denemo Directive at the lowest level. Advanced users only! FillEmptyMeasures StaffMultiMeasureRests /ObjectMenu/StaffMenu <_label>Fill Empty Measures <_tooltip>Replaces empty measures from the cursor position onwards with non-printing whole measure rests. ChooseSeekEditDirectives EditObject /MainMenu/EditMenu <_label>Choose, Seek & Edit <_tooltip>Creates a menu of all the types of objects that can be searched for in this movement. Selecting one moves the cursor to the next object of that type which can then be edited, or further searches made. MultiMeasureRestNumber MultiMeasureRests /ObjectMenu/NotesRests/RestEntry <_label>Multi-Measure Rest Number (Off/On) <_tooltip>Turns the printing of the multi-measure rest number off or on. Use this when merging rests to avoid the number appearing twice. ResumeEdit EditSimilar /MainMenu/EditMenu <_label>Resume Seek/Edit <_tooltip>Resumes seeking and optionally editing the last sought type of object. DeleteSlur ToggleEndSlur /ObjectMenu/NotesRests/Slurs <_label>Delete Slur <_tooltip>Deletes the slur that includes the current cursor position. WrapToNextStaff MoveToVoiceDown /MainMenu/NavigationMenu/Cursor <_label>Next Staff, Wrapping <_tooltip>Moves to the next staff, wrapping to the first staff when on the last staff. FingeringSwap Finger5 /ObjectMenu/NotesRests/Markings/Strings/Fingerings <_label>Fingering Swap <_tooltip>Prints two fingerings joined to indicate a change of fingering on one note. SetMargin ScoreIndent /ObjectMenu/Score/Typesetter/PrintLayout <_label>Adjust Margins <_tooltip>Allows the left, right, top and bottom margins to be set to a value in millimeters. EditLyricAtCursor DeleteVerse /ObjectMenu/Lyrics <_label>Edit Lyric at Cursor <_tooltip>Switches keyboard input to the lyrics pane, placing the cursor on the syllable that belongs to the cursor note. DisplaceHorizontally ParenthesizeNote /ObjectMenu/NotesRests <_label>Displace Horizontally <_tooltip>Shifts the next note, chord or rest and its markings horizontally by the amount given. Use this to refine the positioning, but be aware that notes in other staffs will not be affected. For polyphony, see NoteColumnShift under the Voices menu instead. FretBoards StaffSize /ObjectMenu/StaffMenu/StaffPropertiesMenu/FretDiagrams <_label>Fret Diagrams (Off/On) <_tooltip>Chords on this staff will typeset as fret diagrams (off/on). Choose from several instruments. MergeDifferentlyDottedOn ShiftOn /ObjectMenu/StaffMenu/Voices <_label>Differently Dotted Merge On <_tooltip>From this point in the music notes in different voices beginning at the same time will be merged onto the same stem even if they differ in the dotting. MergeDifferentlyDottedOff MergeDifferentlyDottedOn /ObjectMenu/StaffMenu/Voices <_label>Merge Differently Dotted Off <_tooltip>From this point notes in different voices that begin at the same time will not be merged onto the same stem if they differ in the dotting. TweakFingeringPosition FingeringSwap /ObjectMenu/NotesRests/Markings/Strings/Fingerings <_label>Tweak Position <_tooltip>Shifts the position of the fingering indication by the amounts given. TremoloDownward Tremolo /ObjectMenu/NotesRests <_label>Tremolo Downward <_tooltip>Slopes the tremolo slash downwards instead of upwards. TremoloUpward TremoloDownward /ObjectMenu/NotesRests <_label>Tremolo Upward <_tooltip>Slopes tremolo mark on stem upward. CouleStaff NewStructuredStaff /ObjectMenu/StaffMenu/InsertStaff <_label>Add Staff for Coulés <_tooltip>Adds a voice to the current staff which typesets notes as a slanting line - a coulé. The main voice provides the chord notes, and this provides the coulé between them. IndividualNoteheadSize NeoMensuralNotehead /ObjectMenu/NotesRests/NoteheadControl <_label>Individual Note Head Size <_tooltip>Allows the notehead that the cursor is on to be made larger of smaller than normal. ToggleDownPrall ToggleUpPrall /ObjectMenu/NotesRests/Markings/Ornaments <_label>Down Prall (Off/On) <_tooltip>Typesets a down prall on the current note/chord. Removes that ornament if already present. OrnamentSharp ToggleDownPrall /ObjectMenu/NotesRests/Markings/Ornaments <_label>Attach ♯ <_tooltip>Places a sharp above the ornament on the note at the cursor. OrnamentFlat OrnamentSharp /ObjectMenu/NotesRests/Markings/Ornaments <_label>Attach â™­ <_tooltip>Places a flat above the ornament on the note at the cursor. OrnamentAccidentalBelow OrnamentSharp /ObjectMenu/NotesRests/Markings/Ornaments <_label>Accidental Below <_tooltip>Places the accidental on the ornament below rather than above. FreeSegno FreeFermata /ObjectMenu/Directives/Markings <_label>Standalone Segno (for barlines) <_tooltip>Typesets a segno over the barline. DisplayEditingTime /MainMenu/ViewMenu <_label>Display Time Spent Editing <_tooltip>Displays the cumulative time spent editing this score. The time counts any period between starting to edit and saving to disk. The time is accumulated over different editing sessions. BeatChange BreathMark /ObjectMenu/Directives/Markings <_label>Beat Change (e.g. ð…ž = ð…Ÿ .) <_tooltip>Insert a change of beat at the cursor position. The playback tempo is adjusted to match. RepeatTie InsertTiedNoteDuration /ObjectMenu/NotesRests/TiedNotes <_label>Repeat Tie <_tooltip>The note at the cursor ends a tie that has begun elsewhere, usually in a first time bar. That is it is a repeat of the tie ending. ToggleSuspension OrnamentFlat /ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste <_label>Suspension <_tooltip>Suspension ornament (Off/On) IgnoreMeasureDurationError /ObjectMenu/MeasureMenu <_label>Ignore Measure Duration Error <_tooltip>Allow too few notes/rests in this measure. Only affects the Denemo display and error checking, the typesetting will place barlines according to the actual durations of notes as usual. StaffSpacer /ObjectMenu/Directives/Typesetter/PrintLayout <_label>Staff/System/Titles Spacer <_tooltip>Forces extra space between this staff and the adjacent one at this point in the score. If in the top staff of a system, forces the systems apart in the line at the cursor. If in the top staff on the top line gives more room below the titles. ArticulationOutsideSlur /ObjectMenu/NotesRests/Markings/Articulations <_label>Articulation Outside Slur (Off/On) <_tooltip>The articulation(s) on this note will be placed outside the slur (furthest from the note). Repeat the command to return the slur to the outside. MusicGlyph /ObjectMenu/Directives/Markings/TextMarks <_label>Music Glyph <_tooltip>Allows placing any musical glyph which can then be dragged in the final typeset view for fine control over positioning. The complete list of glyphs is in the LilyPond documentation. Note! Do not place this directive at the end of a staff as it will not be typeset, place it before the last note and then right-click on it in the typeset (print) view to adjust its position if needed. ChangeNoteEnharmonicUp /ObjectMenu/NotesRests/EditNote <_label>Change Note Enharmonic + <_tooltip>Changes the note at the cursor to its enharmonic equivalent one step higher. Use for individual notes in chords. ChangeNoteEnharmonicDown ChangeNoteEnharmonicUp /ObjectMenu/NotesRests/EditNote <_label>Change Note Enharmonic - <_tooltip>Changes the note at the cursor to its enharmonic equivalent one step lower. Use for individual notes in chords. Cresc ToggleEndDiminuendo /ObjectMenu/NotesRests/Markings/Dynamics <_label>Cresc (Off/On) <_tooltip>Starts textual cresc. (or deletes one already present at cursor). Terminate with End Crescendo or with a dynamic. Dim Cresc /ObjectMenu/NotesRests/Markings/Dynamics <_label>Dim (Off/On) <_tooltip>Starts a textual diminuendo. Terminate with End Diminuendo or a dynamic. CrescendoTextSpanner Cresc /ObjectMenu/NotesRests/Markings/Dynamics <_label>Crescendo Text Spanner <_tooltip>Prints text to start or continue a crescendo extending over a passage. Use for cresc. poco a poco, for example. Terminate with End Crescendo marking or a dynamic mark, else nothing will be printed. LilyPond markup, such as \\bold can be used. DecrescendoTextSpanner Dim /ObjectMenu/NotesRests/Markings/Dynamics <_label>Diminuendo Text Spanner <_tooltip>Prints text to start or continue a diminuendo extending over a passage. Use for dim. poco a poco, for example. Terminate with End Diminuendo marking or a dynamic mark, else nothing will be printed. LilyPond markup, such as \\bold can be used. TextSpanStart ToggleCoda /ObjectMenu/NotesRests/Markings/TextMarks/Spanning <_label>Text Span Start <_tooltip>Starts text which spans several notes, e.g. rallentando poco a poco. Terminate with Stop Text Span command. TextSpanStop TextSpanStart /ObjectMenu/NotesRests/Markings/TextMarks/Spanning <_label>Text Span Stop <_tooltip>Stops the spanning text started earlier. InsertHighlightedLyricSyllable EditLyricAtCursor /ObjectMenu/Lyrics <_label>Insert a Highlighted Lyric <_tooltip>Inserts a syllable which can be bold and/or italic. InsertStanzaNumber InsertHighlightedLyricSyllable /ObjectMenu/Lyrics <_label>Insert Stanza Number <_tooltip>Inserts a stanza number (or other text that is not part of the lyrics) in the current verse at the cursor position. InsertMelisma InsertStanzaNumber /ObjectMenu/Lyrics <_label>Melismata <_tooltip>Extends a syllable over the next note with hyphenated line (within word) or extender line (at end of word). LyricVerseDynamic InsertMelisma /ObjectMenu/Lyrics <_label>Dynamic <_tooltip>Inserts a dynamic marking in the current verse at the insertion point in the lyrics pane. Use this to indicate dynamics which change from one verse to another. InsertLyricTie InsertMelisma /ObjectMenu/Lyrics <_label>Lyric Tie <_tooltip>Inserts a lyric tie between two words at the cursor. Use this instead of a space between two words that are sung to the same note (do not leave a space as well). It will be typeset as a tie or space between the words. LaissezVibrer RepeatTie /ObjectMenu/NotesRests/TiedNotes <_label>Laissez Vibrer <_tooltip>Places a tie after the note at the cursor, tying to nothing. Use for laissez vibrer or when a tie comes at a final repeat. AppendPostscript TaglineLink /ObjectMenu/MovementMenu/Titles <_label>Append Encapsulated Postscript <_tooltip>Places text/graphics from an encapsulated postscript file at the end of the current movement. Use this for columns of text or images, fancy titles etc. prepared in other programs which are to appear after the music. PrependPostscript AppendPostscript /ObjectMenu/MovementMenu/Titles <_label>Prepend Encapsulated Postscript <_tooltip>Places text/graphics from an encapsulated postscript file at the start of the current movement. Use this for columns of text or images, fancy titles etc. prepared in other programs which are to appear before the music. GraphicTitlePage BookTitle /ObjectMenu/Score/Titles/BookTitles <_label>Create or Edit Graphic Title Page <_tooltip>Places text/graphics from an encapsulated postscript file at the start of the score. Use this for a title page prepared in your vector graphics editor. CustomOrnamentDefinition /ObjectMenu/NotesRests/Markings/Ornaments <_label>Create/Load Custom Ornament <_tooltip>Allows the user to create a customized ornament (or load one previously created) into this score's definitions. Ornament names should be start in lower case and have no numerals. If a standard ornament is used, e.g. trill, then this will replace the standard ornament throughout the score. ToggleCustomOrnament /ObjectMenu/NotesRests/Markings/Ornaments <_label>Attach Custom Ornament (Off/On) <_tooltip>Typesets a custom ornament on the current note/chord. Removes that ornament if already present. BarNumberAlignment BarNumberingInterval /ObjectMenu/Score/Typesetter/Numbering <_label>Bar Number Alignment <_tooltip>Allow choice of alignment of bar numbers with the barline. EditCustomOrnamentDefinition CustomOrnamentDefinition /ObjectMenu/NotesRests/Markings/Ornaments <_label>Edit Custom Ornament Definition <_tooltip>Edit the definition (size or appearance) of a custom ornament definition. The definition must already have been created/loaded in this score. ToggleTremblement ToggleSuspension /ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste <_label>Tremblement <_tooltip>Attach a tremblement to the current note/chord or remove it if already present. ToggleTremblementAppuye ToggleTremblement /ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste <_label>Tremblement Appuyé <_tooltip>Attaches tremblement appuyé to the note/chord at the cursor, or removes it if already present. TogglePince /ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste <_label>Pincé <_tooltip>Pincé ornament (Off/On) MultiLineTextAnnotation TextAnnotation /ObjectMenu/Directives/Markings/TextMarks <_label>Multi-line Text and Music <_tooltip>Inserts multi-line text object which can include music snippets, Fret Diagrams and Note Names/Chord Symbols. LilyPond Markup can be used and a preview button is available to check the syntax. DynamicUp AutoAccidentals /ObjectMenu/Directives/Typesetter <_label>Dynamics Above <_tooltip>Inserts a directive to cause dynamics to be printed above the staff. NumericTimeSig InsertTimeSig /ObjectMenu/TimeSig <_label>Numeric Time Signature <_tooltip>Typesets common and cut time numerically rather than the traditional C and C cut. AddBassInversion ParenthesizeChord /ObjectMenu/ChordMenu <_label>Add Bass Inversion <_tooltip>Adds a bass note to a chord, while keeping the current lowest note as the root of the chord. Use this on Chord Symbol staffs to create an inversion of the chord entered. ChordChartStaff ChordStaff /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Chord Chart Staff <_tooltip>Prints Chord symbols separated by bar lines. Repeats, time signatures and text are also printed for this staff. CustomRehearsalMark RehearsalMark /ObjectMenu/Directives/Markings <_label>Add Mark (Text/Rehearsal/Book) <_tooltip>Inserts a Mark in the score at the cursor. Marks can be placed in each part and will appear only once (above the top part) in the score (provided they occur at the same moment in each part and are identical). Any size, font, effect can be chosen. A preview button allows you to check the appearance/syntax used. The text position can be dragged in the print view if needed. If there is any slight difference in the text of multiple text marks at the same moment a warning will be given on manually typesetting the score, to avoid this copy and paste or clone the mark you want to place in each part. CustomBarline /ObjectMenu/Score/Typesetter <_label>Custom Barline <_tooltip>Create a custom barline. These can be named, or can simply override a standard LilyPond bar line type. A bar line is defined by four forms, which describe 1) the appearance normally (during a line), 2) appearance when the barline is at the beginning or 3) end of a line , and 4) what to show when joining staffs together as with a Piano Staff. Barline forms are made of characters including |,:,.,[,],: and others in the LilyPond documentation. RaggedLast /ObjectMenu/Score/Typesetter/PrintLayout <_label>Ragged Last <_tooltip>When set the last line will not be stretched to fill the line. ProportionalNotation DenemoBar /ObjectMenu/Score/Typesetter/PrintLayout <_label>Proportional Note Spacing <_tooltip>Spaces notes in proportion to duration, based on the duration given. NewSpacing /ObjectMenu/Directives/Typesetter <_label>Start New Spacing <_tooltip>Spaces notes from cursor onwards based on the spacing given. RevertSpacing NewSpacing /ObjectMenu/Directives/Typesetter <_label>Revert Spacing <_tooltip>Spaces notes from cursor onwards in default manner. ChordNameOffset AddBassInversion /ObjectMenu/ChordMenu <_label>Offset Chord Name <_tooltip>Offsets the Chord symbol generated by the chord at the cursor. CheckBraces /ObjectMenu/StaffMenu/StaffGroupings <_label>Check Braces <_tooltip>Checks the braces (staff groupings) for this movement. AdjustCustomOrnament EditCustomOrnamentDefinition /ObjectMenu/NotesRests/Markings/Ornaments <_label>Adjust Ornament <_tooltip>Place the ornament attached to the note at the cursor above/below or adjust padding around it. StaffDeleteEmptyMeasures FillEmptyMeasures /ObjectMenu/StaffMenu <_label>Delete Empty Measures <_tooltip>Deletes any measures that are empty from the measure after the cursor to end of staff. ScoreHeader ScoreProlog /ObjectMenu/Score <_label>LilyPond Score Header <_tooltip>Inserts LilyPond syntax at the head of the output. OrnamentWithAccidentals ToggleDownPrall /ObjectMenu/NotesRests/Markings/Ornaments <_label>Ornament with Accidentals <_tooltip>Create an ornament with accidentals above and/or below the ornament. BeamHalfMeasure SingleDigitTimeSig /ObjectMenu/TimeSig <_label>Beam at Half Measure (Off/On) <_tooltip>In time signatures 3/N prevent beaming across the beat. Repeat the command to allow such beaming. ActivatePaletteButtonByLabel ShowLastChange /MainMenu/EditMenu <_label>Activate Palette Button <_tooltip>Allows you "click" a palette button by typing the label. Use a keyboard shortcut to start this command, then type the label followed by Return. The last used palette is the active one. Click on the menu item for this command for more help. AccidentalStyle ScoreIndent /ObjectMenu/Score/Typesetter <_label>Accidental Style <_tooltip>Choose the style for typesetting accidentals. Determines whether or not an accidental is printed in particular circumstances (such as repeated notes in different measures, octaves, voices etc). LyricFont /ObjectMenu/Lyrics <_label>Change Font <_tooltip>Inserts into the current lyric verse a change of font. Keep this code on a line of its own. LyricFontSize LyricFont /ObjectMenu/Lyrics <_label>Larger/Smaller Font Size <_tooltip>Inserts a code in the current lyric verse to change to larger or smaller font size. Keep this code on a separate line. InstallCue AutoAccidentals /ObjectMenu/Directives/Typesetter <_label>Install Cue <_tooltip>Starts quoting music from another staff as a cue. The end cue marker is placed at the end of the measure, but can be moved with cut and paste to the desired position. NumbersSelectDuration NoteNamesMove /MainMenu/InputMenu/Keyboard <_label>Numbers Select Duration <_tooltip>Changes the action of keys 0,1,2... to select the prevailing duration instead of inserting notes of the duration. NumbersDefault NoteNamesDefault /MainMenu/InputMenu/Keyboard <_label>Numbers Default Action <_tooltip>Sets key shortcuts 0,1,2... to the default action, inserting notes of the duration. MeasureCountDelimeter SetBarNumber /ObjectMenu/Directives/Typesetter <_label>Measure Count Start or End <_tooltip>Inserts a directive to start or stop the printing of a counter above each measure. Use for repeated measures to assist the performer count the number of repetitions. CheckTimeSignatures EvenOutStaffLengths /ObjectMenu/MovementMenu <_label>Check Time Signatures <_tooltip>Checks the movement for miss-matched or miss-placed time signature changes. ChordChartTimeSignature NumericTimeSig /ObjectMenu/TimeSig <_label>Chord Chart Time Signature <_tooltip>Inserts a time signature (for use in Chord Charts) CompactChordSymbol EditChords /ObjectMenu/NotesRests/Markings/ChordSymbols <_label>Chord Chart Symbol <_tooltip>Attaches an arbitrary chord type to the note at the cursor - used in compact chord charts for uncommon chords. SystemsPerPage SystemSystemPadding /ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing <_label>Systems Per Page <_tooltip>Forces a specific number of systems (lines of music) per page. SetPageSize SetMargin /ObjectMenu/Score/Typesetter/PrintLayout <_label>Page Size <_tooltip>Set the page size - this overrides the default page size set in score properties. MeasuresPerLine SystemSystemPadding /ObjectMenu/Score/Typesetter/PrintLayout <_label>Measures Per Line <_tooltip>Forces a fixed number of measures per line. DoubleBarRepeatStart RepeatStart /ObjectMenu/Directives/Barlines <_label>Double Bar Repeat Start <_tooltip>Prints a repeat start, with double bar on previous line if at a line break. CompactChordScale ChordNameOffset /ObjectMenu/ChordMenu <_label>Scale Next Chord <_tooltip>The next chord symbol will be scaled to the values given. FilledTitleLine ScoreVersion /ObjectMenu/Score/Titles <_label>Filled Title Line <_tooltip>Prints three pieces of text left, right and centered on a single line. Each field can be a different size etc. WholeMeasureSpacer InsertBlankOneHundredTwentyEighthNote /ObjectMenu/NotesRests/RestEntry <_label>Insert Whole Measure Spacer <_tooltip>Inserts a non-printing whole measure after the current measure with a directive to omit the barline. This gives a one measure spacer. DottedBarline HalfBarline /ObjectMenu/Directives/Barlines <_label>Dotted Barline <_tooltip>Prints dotted barline InsertGraphic MusicGlyph /ObjectMenu/Directives/Markings/TextMarks <_label>Insert Graphic <_tooltip>Inserts a graphic in the music. This should be created as an encapsulated postscript file. SetFonts SetMargin /ObjectMenu/Score/Typesetter/PrintLayout <_label>Set Fonts <_tooltip>Select the default fonts used for titles, chord names etc. for the whole score. ColorChordSymbol StopStaff /ObjectMenu/Directives/Typesetter/ChordSymbols <_label>Color Next Symbol <_tooltip>Typesets the next chord symbol in a color you choose. FretDiagram InsertGraphic /ObjectMenu/Directives/Markings <_label>Fret Diagram <_tooltip>Creates a dialog for you to enter a description of the fret diagram to be typeset at the cursor position. InsertSpaceBeforeMovement PrependPostscript /ObjectMenu/MovementMenu/Titles <_label>Space Above <_tooltip>Inserts blank space above the movement. ArtificialHarmonic ChangeNotehead /ObjectMenu/NotesRests/NoteheadControl <_label>Artificial Harmonic <_tooltip>Places a diamond shape notehead at the cursor. Invoke this command with the cursor above the note to be fingered/fretted to notate an artificial harmonic. Caesura BreathMark /ObjectMenu/Directives/Markings/TextMarks <_label>Caesura <_tooltip>Prints a caesura (pause) at the cursor position. PageBreaksBeforeMovements DenemoBar /ObjectMenu/Score/Typesetter/PrintLayout <_label>Page Breaks (On/Off) <_tooltip>Movements will start on a new page (Off/On) IgnoreClashingNoteColumns PartCombineApart /ObjectMenu/StaffMenu/Voices/Part-Combining <_label>Clashing Note Column Warnings (Off/On) <_tooltip>Turns warnings from the LilyPond typesetter about clashing note columns off or on. These can be harmless but can cause a warning to check the score. ToggleCurrentStaffDisplay TinyStaffAllMovements /ObjectMenu/StaffMenu/DisplayEffects <_label>Staff Hidden (Off/On) <_tooltip>Shows/Hides the current staff in the Denemo Display. Does not affect the typesetting. ToggleDisplayAllStaffs ToggleCurrentStaffDisplay /ObjectMenu/StaffMenu/DisplayEffects <_label>Display All (Other) Staffs (Off/On) <_tooltip>If the current staff is hidden show all other staffs else hide all other staffs. HideNotSelectedStaffs ToggleDisplayAllStaffs /ObjectMenu/StaffMenu/DisplayEffects <_label>Hide Non-Selected Staffs. <_tooltip>Hides staffs that are not selected in the Denemo Display. Does not affect the typesetting. HideSelectedStaffs HideNotSelectedStaffs /ObjectMenu/StaffMenu/DisplayEffects <_label>Hides Selected Staffs <_tooltip>Hides the selected staffs in the Denemo Display. Does not affect the Typesetting. VisibleStaffUp MoveToStaffUp /MainMenu/NavigationMenu/Cursor <_label>Move to Visible Staff Up <_tooltip>Moves to the next staff or voice up skipping ones that are hidden in the display. VisibleStaffDown MoveToStaffDown /MainMenu/NavigationMenu/Cursor <_label>Move to Visible Staff Down <_tooltip>Moves to the next staff or voice down skipping ones that are hidden in the display. DuplicateOrMergeMovements DeleteMovement /ObjectMenu/MovementMenu <_label>Duplicate or Merge <_tooltip>Offers choice to duplicate the current movement or merge this movement with the previous one. PushCursorPosition SearchBookmark /MainMenu/NavigationMenu/Bookmarks <_label>Store Position <_tooltip>Stores the current cursor position for returning to later. PopCursorPosition PushCursorPosition /MainMenu/NavigationMenu/Bookmarks <_label>Move to Stored Position <_tooltip>Moves the cursor to the last stored position. You can store a sequence of positions and then return to them in one by one (a stack of positions). Agrement Ornament /ObjectMenu/Directives/Markings/Ornaments <_label>Agréments <_tooltip>Insert a (French 18th c) agrément on the note at the cursor. DynamicsExtraSpace DecrescendoTextSpanner /ObjectMenu/NotesRests/Markings/Dynamics <_label>Extra Spacing <_tooltip>Music is spaced out by the extra amount given to avoid textual dynamic markings colliding. Not for hairpins. BassInversionSequence AddBassInversion /ObjectMenu/ChordMenu <_label>Bass Sequence <_tooltip>Typesets a sequence of bass inversion notes. OpenProofReadDialog OpenNewWindow /MainMenu/FileMenu/OpenMenu <_label>Open Proof Read PDF <_tooltip>Opens a dialog to fetch a PDF file generated by Denemo which has had proof reading annotations added to it. Clicking on notes in this file moves the cursor to the correct point in the Denemo display. EditScoreAndMovementDirectives ResumeEdit /MainMenu/EditMenu <_label>Edit Score/Movement Directives <_tooltip>Collects together all the Score Directives and the Movement Directives for the current movement and allows advanced (low-level) edit of any of them. This is a convenience command if you do not know the directive you are looking for. Comment InsertStandaloneDirective /ObjectMenu/Directives <_label>Insert Comment <_tooltip>Inserts a comment at the cursor position. The music typesetting is unaffected. ToggleFingeringVisibility TweakFingeringPosition /ObjectMenu/NotesRests/Markings/Strings/Fingerings <_label>Hide/Show Fingering <_tooltip>Hides/Shows the fingering on the note at the cursor height in the typeset score. SplitMovementAtCursor DuplicateOrMergeMovements /ObjectMenu/MovementMenu <_label>Split Movement <_tooltip>Splits the movement at the cursor. Place the cursor after any time signature or key signature change that applies to the split-off movement. ToggleNonprintingSelection SelectionToEmptyMeasure /MainMenu/EditMenu/Select <_label>Selection Non-printing (Off/On) <_tooltip>Sets/Unsets all objects in the selection to be non-printing. Dottify2 Dottify /ObjectMenu/NotesRests/ChangeDuration <_label>Dottify2 <_tooltip>As Dottify command but dotted rhythm created is dotted note plus two notes of a quarter the duration. Total duration is unchanged. StartTrillSpan SustainOn /ObjectMenu/Directives/Markings/Spanning <_label>Start Trill <_tooltip>Starts a spanning trill from the note at the cursor. StopTrillSpan StartTrillSpan /ObjectMenu/Directives/Markings/Spanning <_label>Stop Trill <_tooltip>Ends a previously started trill at the next note. EditAll ResumeEdit /MainMenu/EditMenu <_label>Edit All of Type <_tooltip>Edits/Deletes all objects of the last searched for type this and all succeeding movements. TypesetOnlyClef DisplayOnlyClef /ObjectMenu/ClefMenu <_label>Typeset Only Clef <_tooltip>Inserts a clef that affects only the typesetting, not the display. Use this for music transposed on typesetting (avoiding too many ledger lines in the display, making it hard to read). Also useful to enter music in a familiar clef which you want to be printed in a less familiar one (e.g. enter music in treble or bass clef music to be printed for viola). CheckDirectivePairs Comment /ObjectMenu/Directives <_label>Check Paired Directives <_tooltip>Checks that paired directives match from the cursor to the end of the staff. FirstPageNumber SetPageSize /ObjectMenu/Score/Typesetter/Numbering <_label>Set/Unset First Page Number <_tooltip>Allows setting the first page number. PrintFirstPageNumber FirstPageNumber /ObjectMenu/Score/Typesetter/Numbering <_label>Print First Page Number (Off/On) <_tooltip>Control if the first page number is typeset. ScoreRehearsalMarkFormat ReduceSystemSpacing /ObjectMenu/Score/Typesetter <_label>(Print) Format of rehearsal marks <_tooltip>Select the format of rehearsal marks (alphabetic, numeric, boxed, etc.) GraceTermination UnGraceAfter /ObjectMenu/NotesRests/GraceNotes <_label>Termination <_tooltip>Appends two grace notes, slurred to current note. Follow with a duration key to set duration of grace notes to be appended. InsertNthSnippet ActivatePaletteButtonByLabel /MainMenu/EditMenu <_label>Insert Nth Snippet <_tooltip>Pastes the Nth snippet into the score at the cursor position. Follow with the number 1,2,... of the snippet to be inserted ConvertIncorrectSlursToTies ToggleNoteDownTie /ObjectMenu/NotesRests/TiedNotes <_label>Convert Incorrect Slurs to Ties <_tooltip>Corrects for the slur/tie error common in imported scores. Scans entire score for pairs of identical notes slurred together as a pair. Changes these to a tied note. Do not use in the unusual case of identical notes slurred (e.g. across strings). DisplayCurrentObject /MainMenu/ViewMenu <_label>Object Inspector <_tooltip>Pops up a window which displays the object at the cursor, including anything attached to it. DeleteTextAnnotationsFromCursor /ObjectMenu/StaffMenu <_label>Delete Text Annotations <_tooltip>Deletes standalone text annotations from the cursor to the end of the staff. InsertChordDirective /ObjectMenu/ChordMenu/Directives <_label>Attach/Edit LilyPond to Chord <_tooltip>Inserts LilyPond syntax you give before and after the chord at the cursor, also allows editing/deleting. SetBeamExceptions HideMovement /ObjectMenu/Score/Typesetter <_label>Set Beaming Rules <_tooltip>Sets the rules to be used for beaming. With no selection gets the beat for beams to be divided for the prevailing time signature at the cursor. If a there is a selection this will set exceptions to the regular rule. In this case indicate the beaming desired using the manual beam commands [ and ]. InsertBeamingRule /ObjectMenu/TimeSig <_label>Beaming Rule Change <_tooltip>Inserts a (hidden) time signature with rules to be used for beaming. With no selection gets the beat for beams to be divided for the prevailing time signature at the cursor. If a there is a selection this will be used as the set of rules. In this case indicate the beaming desired using the manual beam commands [ and ], giving all the beaming rules wanted using several measures if needed (no other rules are used). Repeat with different selections to add further rules. MovementBeamingRules /ObjectMenu/MovementMenu/Typesetter <_label>Beaming Rules <_tooltip>Add/Replace rules to be used for beaming in the current movement. With no selection gets the beat for beams to be divided for the prevailing time signature at the cursor. If a there is a selection this will be used as the set of rules. In this case indicate the beaming desired using the manual beam commands [ and ], giving all the beaming rules wanted using several measures if needed (no other rules are used). Repeat with different selections to add further rules. ChooseNotehead ChangeNotehead /ObjectMenu/NotesRests/NoteheadControl <_label>Choose Notehead <_tooltip>(Print) Gives a choice between all the notehead types available. ScoreChooseNotehead AccidentalStyle /ObjectMenu/Score/Typesetter <_label>Set Notehead Style <_tooltip>Sets the type of notehead to be used score-wide. ToggleFingeringVisibilityInScore DeactivateTimeSignatureStencil /ObjectMenu/Score/Typesetter <_label>Fingerings (Off/On) <_tooltip>Turns on/off visibilty of fingerings on typesetting for whole score. ToggleCurveControl /ObjectMenu/Score/Typesetter <_label>Typeset Curve Control Points (Off/On) <_tooltip>Typesets with curve control points marked. Use these for accurate tweaking of shape via clicking and dragging with mouse on final typeset score. ToggleWysiwygMarks /ObjectMenu/Score/Typesetter <_label>Typeset Red Dots (Off/On) <_tooltip>Typesets with red dots on the graphical objects. Use these for accurate tweaking of positions via clicking and dragging with mouse on final typeset score. FillMeasure DuplicateChord /ObjectMenu/NotesRests/InsertNote <_label>Fill Measure <_tooltip>Duplicates the note/chord/rest at or before the cursor until the measure is full or over-full. In a full measure duplicates the measure, in an empty measure insert the current duration QuickLilyPondParts QuickLilyPondPart /MainMenu/FileMenu/Export <_label>Quick LilyPond Parts <_tooltip>Runs Quick LilyPond Part on all the staffs of the current movement. QuickLilyPondPartsAllMovements QuickLilyPondParts /MainMenu/FileMenu/Export <_label>Quick LilyPond Parts All Movements <_tooltip>Runs Quick LilyPond Parts on all movemnts. FreeCoda FreeSegno /ObjectMenu/Directives/Markings <_label>Standalone Coda (for barlines) <_tooltip>Coda symbol attached to the net object, for example a barline. But shown between notes. DuplicateRestNoteChord DuplicateChord /ObjectMenu/NotesRests/InsertNote <_label>Duplicate Rest, Note, Chord <_tooltip>Duplicates the rest, note or chord at or before the cursor. SetStaffLines StaffSize /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Set Staff Lines <_tooltip>Sets the number of lines for the current staff. SetStaffRangeFromChord /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Set Staff Range <_tooltip>Sets the highest and lowest notes playable on the current staff to the highest and lowest pitches of the chord at the cursor. AddInstrumentStaff PianoStaff /ObjectMenu/StaffMenu/InsertStaff <_label>Add Staff for Instrument <_tooltip>Adds a staff at the bottom for the instrument selected from the templates/instruments directory. The name and range of the instrument is set with any transposition for playback if needed. ChordChangesOnly RevertSpacing /ObjectMenu/Directives/Typesetter <_label>Chord Changes Only <_tooltip>From the cursor position on only chord changes are typeset (either Chord Symbols or Fret Diagrams), except at the beginning of the line. SubstituteMusic NonPrintingStaff /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Substitute Music (Borrowed/Mirrored) <_tooltip>Typesets this staff with the music from another staff, ignoring any music entered on this staff. Use this e.g. to create a staff with two divisi parts, while keeping the second part as a separate staff, or to typeset both Fret Diagrams and Chord Symbols from the same music. Note that initial clef/key/time are copied not mirrored. PlaybackView Play /MainMenu/PlaybackMenu <_label>Playback View <_tooltip>Displays the music fully typeset on one long page (the Playback View). Click on a note to play from there or drag to loop play. TupletBrackets TripletizeSlurred /ObjectMenu/NotesRests/Tuplets <_label>Tuplet Brackets <_tooltip>Choose whether tuplets should have brackets. Affects tuplets from the cursor onwards. MidiInstrumentName PianoStaffName /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>MIDI Instrument <_tooltip>Sets the MIDI instrument for this staff for use in the Playback View ToggleTypesetOfLyrics LyricFontSize /ObjectMenu/Lyrics <_label>Typeset Lyrics (Off/On) <_tooltip>Turns Off/On typesetting of lyrics for the entire score. InsertBreakInStaff SplitMeasure /ObjectMenu/MeasureMenu <_label>Create Gap <_tooltip>Creates a gap between the previous measure and the current one. The clef is re-instated after the gap. The gap size can be adjusted by inserting or deleting empty measures in between. RaggedRight Indent /ObjectMenu/MovementMenu/Typesetter/PrintLayout <_label>Ragged Right (On/Off) <_tooltip>If the current movement has only one system it will be stretched to the right margin. Run the command again to turn this off. OpenEnharmonicSharpen OpenOctaveUp /ObjectMenu/Directives/Typesetter/Transposition <_label>Open Enharmonic Sharpen <_tooltip>Opens a block of music that will be sharpened enharmonically (E-flat becomes D-sharp etc). The block should be close with a curly brace } OpenEnharmonicFlatten OpenEnharmonicSharpen /ObjectMenu/Directives/Typesetter/Transposition <_label>Open Enharmonic Flatten <_tooltip>Opens a block of music that will be sharpened enharmonically (D-sharp becomes E-flat etc). The block should be closed with a curly brace } DirectiveOnlyForLayout InsertNoteDirective /ObjectMenu/NotesRests/Directives/Conditional-Directives <_label>Exclusive to Current Layout <_tooltip>Makes a (chosen) directive on the note/chord at the cursor take effect only for typesetting the current layout. The cursor should be positioned at the note height if a directive attached to the note is intended. DirectiveNotForLayout DirectiveOnlyForLayout /ObjectMenu/NotesRests/Directives/Conditional-Directives <_label>Ignore for Current Layout <_tooltip>Makes a (chosen) directive on the note/chord at the cursor be ignored for typesetting the current layout. The cursor should be positioned at the note height if a directive attached to the note is intended. DirectiveForAllLayouts DirectiveNotForLayout /ObjectMenu/NotesRests/Directives/Conditional-Directives <_label>Reset for All Layours <_tooltip>Makes a (chosen) directive on the note/chord at the cursor be typeset normally, i.e for all layouts. The cursor should be positioned at the note height if a directive attached to the note is intended. CenterPageNumber PrintFirstPageNumber /ObjectMenu/Score/Typesetter/Numbering <_label>Center Page Numbers <_tooltip>Prints page numbers at center bottom of the page, or revert to default positioning. TwoSidedMargins SetMargin /ObjectMenu/Score/Typesetter/PrintLayout <_label>Two Sided Margins <_tooltip>Uses different margins for left and right hand pages. MuteStaffs PlayAtCursor /MainMenu/PlaybackMenu <_label>Mute Stafffs <_tooltip>Select which staffs should be muted during playback. LengthenHairpin DynamicsExtraSpace /ObjectMenu/NotesRests/Markings/Dynamics <_label>Lengthen Hairpin <_tooltip>Inserts a directive to lengthen the following cresc or dim hairpin. InsertSyllableSkips InsertStanzaNumber /ObjectMenu/Lyrics <_label>Skip Syllables in Selection <_tooltip>Inserts blanks for the syllables from the start of the notes selected in the Denemo Display to the cursor. With no selection asks for a number of syllables to skip and inserts the skip at the lyric cursor. AddMirrorVoice NewVoice /ObjectMenu/StaffMenu/Voices <_label>Add Voice (Borrowed/Mirrored Music) <_tooltip>Adds a voice whose music is automatically mirrored from another staff of your choice. Use this e.g. to create a staff with two divisi parts, while keeping the second part as a separate staff, or to typeset both Fret Diagrams and Chord Symbols from the same music. Note that initial clef/key/time are copied not mirrored. AddMirrorStaff NewStructuredStaff /ObjectMenu/StaffMenu/InsertStaff <_label>Add Staff (Borrowed/Mirrored Music) <_tooltip>Adds a staff whose music is automatically mirrored from another staff of your choice. Use this e.g. to create a staff with two divisi parts, while keeping the second part as a separate staff, or to typeset both Fret Diagrams and Chord Symbols from the same music. Note that initial clef/key/time are copied not mirrored. TransposeMovementPrint HideMovement /ObjectMenu/MovementMenu/Typesetter <_label>Transpose on Print <_tooltip>The current movement will be printed transposed by the interval given. TupletPosition ToggleTupletNumbering /ObjectMenu/NotesRests/Tuplets <_label>Tuplet Position <_tooltip>Sets the positioning of the following tuplet (up/down/auto) to your choice. CurvedTupletBrackets TupletPosition /ObjectMenu/NotesRests/Tuplets <_label>Curved Tuplet Brackets (Off/On) <_tooltip>Tuplet brackets will have a curved shape (like a slur) with the tuplet number inside. Note these cannot be re-shaped like slurs, so turn tuplet brackets off and place slurs manually if you need to reshape them. HideStems BeamingOn /ObjectMenu/Directives/Typesetter <_label>Hide Stems <_tooltip>Hides stems on notes from this point on. ShowStems HideStems /ObjectMenu/Directives/Typesetter <_label>Show Stems <_tooltip>This directive turns on typesetting of stems on notes. InsertLyricAlignment InsertStanzaNumber /ObjectMenu/Lyrics <_label>Syllable Alignment <_tooltip>Inserts some syntax into the lyric verse to determine the alignment of syllables under notes. Lyrics to be affected should be on the following lines. CadenzaTime NumericTimeSig /ObjectMenu/TimeSig <_label>Start Cadenza Time <_tooltip>Inserts a non-printing timesignature to indicate a cadenza follows. You must insert any barlines and beaming you require (otherwise none will typeset). End the cadenza by inserting an End Cadenza Time in a new Denemo bar. EndCadenzaTime CadenzaTime /ObjectMenu/TimeSig <_label>End Cadenza Time <_tooltip>Inserts a non-printing time signature to resume normal measured music. BlankPage MovementPageBreak /ObjectMenu/MovementMenu/Typesetter <_label>Blank Page Before <_tooltip>Inserts a blank page (with optional text) before the current movement. ToggleArpeggio /ObjectMenu/NotesRests/Markings/Articulations <_label>Arpeggio (Off/On) <_tooltip>Mark/Unmark chord with an arpeggio ToggleStopped /ObjectMenu/NotesRests/Markings/Articulations <_label>Stopped (Off/On) <_tooltip>Mark/Unmark the current chord stopped Tongue ToggleStopped /ObjectMenu/NotesRests/Markings/Articulations <_label>Tongue <_tooltip>Adds a tonguing indication, (a number of staccato dots) to the current note. CreateClickStaff DynamicsStaff /ObjectMenu/StaffMenu/InsertStaff <_label>Create/Populate Click Staff <_tooltip>Creates a staff at the top as a click track. Suggests a pattern of drum beats for the first bar, and offers to copy these to the following bars. The cursor height determines which drum sounds are suggested from the General MIDI set. Invoked in a click track it will copy your own set of drum beats to subsequent (empty) measures. FillUpMeasure FillMeasure /ObjectMenu/NotesRests/InsertNote <_label>Duplicate to Fill Measure <_tooltip>Duplicates the notes in the current measure until the measure is full or over-full. If already full, duplicates the current measure. SimpleChapter ScoreTitle /ObjectMenu/Score/Titles/SimpleTitles <_label>Book Chapter <_tooltip>Asks for a Chapter Title and end movement number. Makes the current movement the start of a chapter which ends at a later movement. CreateButtonForObject UnhidePalettes /MainMenu/ViewMenu/Palettes <_label>Create Button for Object <_tooltip>Creates a palette button to insert a clone of the object at the cursor when the button is pressed. AlternateNote ChangeEnharmonicDown /ObjectMenu/ChordMenu <_label>Alternate Note <_tooltip>If there are two notes at the cursor height this command swaps them round. This affects which note will be acted on by commands such as fingering, string-number, sharpen, flatten etc. Vibrato Glissando /ObjectMenu/NotesRests/Markings/TextMarks <_label>Vibrato <_tooltip>Start or Stop a wavy line above the notes. The waves can be made longer/shorter via the wavelength given and can be made to swell and or diminish, several times if desired by giving one or more amplitudes. DisplayMeasureNumber WidenMeasures /ObjectMenu/MeasureMenu/DisplayEffects <_label>Measure Number <_tooltip>Changes the bar number displayed for this and subsequent bars. Does not affect the print out, see Set Bar Number command for that. Fine DaCapo /ObjectMenu/Directives/Markings/TextMarks <_label>Fine (i.e. end) <_tooltip>Inserts Fine marking as standalone Denemo Directive. AssignInstrument StaffComment /ObjectMenu/StaffMenu/StaffPropertiesMenu <_label>Assign Instrument <_tooltip>Assigns the current staff to an instrument selected by the user. SaveAsTemplate SaveParts /MainMenu/FileMenu/SaveMenu <_label>Save Template <_tooltip>Saves the current score as a template, offering to remove the music if desired. LigatureStart EndVolta /ObjectMenu/Directives/Markings/Spanning <_label>Start Ligature <_tooltip>Starts drawing a square bracket above the notes from the cursor. Use End Ligature to mark the place where the bracket should end. Used in transcribing mensural music notation. LigatureEnd LigatureStart /ObjectMenu/Directives/Markings/Spanning <_label>End Ligature <_tooltip>End drawing a square bracket above the notes. Must be preceded by a Start Ligature earlier in the same staff. AllStaffsHidden /ObjectMenu/MovementMenu/DisplayEffects <_label>Hide All Staffs <_tooltip>Makes all the staffs hidden in the display except for the one with the cursor. AllStaffsVisible /ObjectMenu/MovementMenu/DisplayEffects <_label>Show All Staffs <_tooltip>Makes all the staffs visible in the display. TerminateHairpinAtBarline DynamicsExtraSpace /ObjectMenu/NotesRests/Markings/Dynamics <_label>Terminate Hairpin at Barline <_tooltip>Ends a cresc. or dim, hairpin at the barline following the current note/chord. This command inserts a standalone Denemo Directive after the note/chord at the cursor. SetPageCount SetPageSize /ObjectMenu/Score/Typesetter/PrintLayout <_label>Set Total Number of Pages <_tooltip>Forces the score to be typeset onto the number of pages you choose. ChordEntry /MainMenu/InputMenu/MIDI <_label>Chord Entry Without Pedal <_tooltip>Playing notes on the MIDI keyboard will enter all notes played as a chord until no notes are on. CreateButtonForChordType CreateButtonForObject /MainMenu/ViewMenu/Palettes <_label>Create Button for Chord Type <_tooltip>Creates a palette button which will insert the type of chord at the cursor, transposed to the cursor position when invoked. Use prepending sharp or flat to insert a chord with sharpened or flattened root note. Use for chord symbol chords. PageNumbersWithInstrument CenterPageNumber /ObjectMenu/Score/Typesetter/Numbering <_label>Bold Page Numbers <_tooltip>Page numbers typeset in a distinct font. The instrumentation is printed too, centered above each page after the first. PercentRepeat FillUpMeasure /ObjectMenu/NotesRests/InsertNote <_label>Insert Percent Style Repeat <_tooltip>Creates a repeat from the selection, typeset in \"percent\" style. UseAddPrefix AddBassInversion /ObjectMenu/ChordMenu <_label>Use "add" Prefix <_tooltip>Inserts the word "add" as a prefix for added notes in chord symbols after the cursor. ScoreShortIndent ScoreIndent /ObjectMenu/Score/Typesetter/PrintLayout <_label>Short Indent <_tooltip>Sets the indent to be used on systems after the first. DenemoDurationInTicks EditAll /MainMenu/EditMenu <_label>(Display) Set Object Duration <_tooltip>Sets the duration of the object at the cursor for display purposes. Value is pulses per quarter note - ie MIDI ticks. No effect on typesetting. PolymetricStaffs HideEmptyStaffs /ObjectMenu/MovementMenu/Typesetter <_label>Polymetric Staffs (Off/On) <_tooltip>Turns on/off independent time signatures and barline on the staffs. Use for polymetric notation. HiddenMeasure InsertBreakInStaff /ObjectMenu/MeasureMenu <_label>Hidden Measure <_tooltip>Inserts a dummy whole measure rest. The measure is not seen by the LilyPond typesetter, it just takes up space in the display. Use for polymetric music to even up the staff lengths for the display. OpenParenthesizeChord ParenthesizeChord /ObjectMenu/ChordMenu <_label>Open Parenthesis (Off/On) <_tooltip>Prints an open parenthesis before the chord at the cursor. CloseParenthesizeChord OpenParenthesizeChord /ObjectMenu/ChordMenu <_label>Close Parenthesis (Off/On) <_tooltip>Prints a close parenthesis after the chord at the cursor. TieWaitForNote StaccatoStaccatissimo /ObjectMenu/Score/Typesetter <_label>Ties Extend to Matching Note <_tooltip>Ties will extend over intermediate notes until the note tied to occurs. Use for written-out arpeggio styles. MoveViewportRight DenemoLink /MainMenu/NavigationMenu <_label>Move Display Right <_tooltip>Moves the view port (the Denemo Display) to the right, leaving the cursor on the same object as long as it is still in view. MoveViewportLeft MoveViewportRight /MainMenu/NavigationMenu <_label>Move Display Left <_tooltip>Moves the view port (the Denemo Display) to the left, leaving the cursor on the same object as long as it is still in view. HelpForRepeats CheckTupletsInMeasure /ObjectMenu/MeasureMenu/Repeats <_label>Help for Repeats <_tooltip>Explains the different ways of creating repeats. Unmeasured NumericTimeSig /ObjectMenu/TimeSig <_label>Unmeasured Staff <_tooltip>Makes the staff accept any duration per Denemo measure. Equivalent to Cadenza Time from the first bar. InsertMirroredVerse InsertMelisma /ObjectMenu/Lyrics <_label>Insert Mirrored Verse <_tooltip>Inserts special syntax to typeset a verse from another staff under this staff. This syntax should be on a line of its own. NonPrintingStaffs CheckAndPrint /MainMenu/FileMenu/PrintMenu <_label>Select Staffs to Print <_tooltip>Makes selected staffs non-printing. ConnectArpeggios ScoreChooseNotehead /ObjectMenu/Score/Typesetter <_label>Connect Arpeggios (Off/On) <_tooltip>Any arpeggios inserted on chords in different voices will be drawn across the voices. InsertHyphenBetweenSyllables InsertMelisma /ObjectMenu/Lyrics <_label>Divide Syllables with Hyphen <_tooltip>Typesets a hyphen between the syllables at the cursor, if there is sufficient room. AutoBassFigureHeight AdjustBassFigureHeight /ObjectMenu/NotesRests/Markings/FiguredBass <_label>Adjust All Heights <_tooltip>Sets the heights of the bass figures above the notes throughout the score to avoid ungainly positions. The bass figures must be on the lowest staff TransposeVoices /ObjectMenu/StaffMenu/Voices <_label>(Print) Transpose <_tooltip>Prints the voices transposed by the interval given. This is in addition to any score-wide transposition and any staff-wide transposition DeleteCurrentVerse AddVerse /ObjectMenu/Lyrics <_label>Delete Verse <_tooltip>Deletes the current verse - copy the text first if needed. SimulateMidi NumbersSelectDuration /MainMenu/InputMenu/Keyboard <_label>Simulate MIDI <_tooltip>Makes the second and third rows of the pc-keyboard behave like a MIDI piano keyboard: asdfg... creates the scale from Middle C, while the qwerty row provides sharps/flats (with gaps). To customize these key assignments for your keyboard use Ctrl-Esc. Tab key toggles chord entry off/on. PgUp key starts entering notes an octave higher, PgDn an octave lower. Use with rhythm entry for MIDI in checked in preferences. NewStaffAllMovements MarksStaff /ObjectMenu/StaffMenu/InsertStaff <_label>Add in All Movements <_tooltip>Adds a new structured staff after the current staff in this and succeeding movments. FiguredBassTweak AutoBassFigureHeight /ObjectMenu/NotesRests/Markings/FiguredBass <_label>Tweak Default Appearance <_tooltip>Alters the default figured bass appearance to a more 18th c. look. AllowVoltaHook ScoreRehearsalMarkFormat /ObjectMenu/Score/Typesetter <_label>Barline to end Repeat Alternative <_tooltip>Choose an additional type of barline to close a second (or n'th) time bar with a downward tick. TieStyle ToggleNoteDownTie /ObjectMenu/NotesRests/TiedNotes <_label>Dashed or Dotted <_tooltip>Make the tie on this note dashed or dotted. SlurStyle MarkingInsideSlur /ObjectMenu/NotesRests/Slurs <_label>Dashed or Dotted <_tooltip>Make the slur starting from this note dashed or dotted. ShowVirtualKeyboard /MainMenu/InputMenu <_label>Virtual MIDI Keyboard <_tooltip>Displays a piano style keyboard that can be clicked on to enter notes like a real MIDI device. Right click adds notes to the chord. ToggleFigures ToggleFingeringVisibilityInScore /ObjectMenu/Score/Typesetter <_label>Bass Figures (Off/On) <_tooltip>Turns on/off visibility of figured bass on typesetting for whole score. denemo-2.2.0/actions/PaxHeaders.19168/lalr.scm0000644000000000000000000000013213135434035015626 xustar0030 mtime=1500919837.949981805 30 atime=1500919925.713315139 30 ctime=1500919912.903315138 denemo-2.2.0/actions/lalr.scm0000644000175000017500000016561713135434035017517 0ustar00jjbenhamjjbenham00000000000000;;; ;;;; An Efficient and Portable LALR(1) Parser Generator for Scheme ;;; ;; Copyright 1993, 2010 Dominique Boucher ;; ;; This program is free software: you can redistribute it and/or ;; modify it under the terms of the GNU Lesser General Public License ;; as published by the Free Software Foundation, either version 3 of ;; the License, or (at your option) any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU Lesser General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . (define *lalr-scm-version* "2.4.1") (cond-expand ;; -- Gambit-C (gambit (define-macro (def-macro form . body) `(define-macro ,form (let () ,@body))) (def-macro (BITS-PER-WORD) 28) (def-macro (logical-or x . y) `(bitwise-ior ,x ,@y)) (def-macro (lalr-error msg obj) `(error ,msg ,obj)) (define pprint pretty-print) (define lalr-keyword? keyword?)) ;; -- (bigloo (define-macro (def-macro form . body) `(define-macro ,form (let () ,@body))) (define pprint (lambda (obj) (write obj) (newline))) (define lalr-keyword? keyword?) (def-macro (BITS-PER-WORD) 29) (def-macro (logical-or x . y) `(bit-or ,x ,@y)) (def-macro (lalr-error msg obj) `(error "lalr-parser" ,msg ,obj))) ;; -- Chicken (chicken (define-macro (def-macro form . body) `(define-macro ,form (let () ,@body))) (define pprint pretty-print) (define lalr-keyword? symbol?) (def-macro (BITS-PER-WORD) 30) (def-macro (logical-or x . y) `(bitwise-ior ,x ,@y)) (def-macro (lalr-error msg obj) `(error ,msg ,obj))) ;; -- STKlos (stklos (require "pp") (define (pprint form) (pp form :port (current-output-port))) (define lalr-keyword? keyword?) (define-macro (BITS-PER-WORD) 30) (define-macro (logical-or x . y) `(bit-or ,x ,@y)) (define-macro (lalr-error msg obj) `(error 'lalr-parser ,msg ,obj))) ;; -- Guile (guile (use-modules (ice-9 pretty-print)) (use-modules (srfi srfi-9)) (define pprint pretty-print) (define lalr-keyword? symbol?) (define-macro (BITS-PER-WORD) 30) (define-macro (logical-or x . y) `(logior ,x ,@y)) (define-macro (lalr-error msg obj) `(error ,msg ,obj))) ;; -- Kawa (kawa (require 'pretty-print) (define (BITS-PER-WORD) 30) (define logical-or logior) (define (lalr-keyword? obj) (keyword? obj)) (define (pprint obj) (pretty-print obj)) (define (lalr-error msg obj) (error msg obj))) ;; -- SISC (sisc (import logicops) (import record) (define pprint pretty-print) (define lalr-keyword? symbol?) (define-macro BITS-PER-WORD (lambda () 32)) (define-macro logical-or (lambda (x . y) `(logor ,x ,@y))) (define-macro (lalr-error msg obj) `(error "~a ~S:" ,msg ,obj))) (else (error "Unsupported Scheme system"))) (define-record-type lexical-token (make-lexical-token category source value) lexical-token? (category lexical-token-category) (source lexical-token-source) (value lexical-token-value)) (define-record-type source-location (make-source-location input line column offset length) source-location? (input source-location-input) (line source-location-line) (column source-location-column) (offset source-location-offset) (length source-location-length)) ;; - Macros pour la gestion des vecteurs de bits (define-macro (lalr-parser . arguments) (define (set-bit v b) (let ((x (quotient b (BITS-PER-WORD))) (y (expt 2 (remainder b (BITS-PER-WORD))))) (vector-set! v x (logical-or (vector-ref v x) y)))) (define (bit-union v1 v2 n) (do ((i 0 (+ i 1))) ((= i n)) (vector-set! v1 i (logical-or (vector-ref v1 i) (vector-ref v2 i))))) ;; - Macro pour les structures de donnees (define (new-core) (make-vector 4 0)) (define (set-core-number! c n) (vector-set! c 0 n)) (define (set-core-acc-sym! c s) (vector-set! c 1 s)) (define (set-core-nitems! c n) (vector-set! c 2 n)) (define (set-core-items! c i) (vector-set! c 3 i)) (define (core-number c) (vector-ref c 0)) (define (core-acc-sym c) (vector-ref c 1)) (define (core-nitems c) (vector-ref c 2)) (define (core-items c) (vector-ref c 3)) (define (new-shift) (make-vector 3 0)) (define (set-shift-number! c x) (vector-set! c 0 x)) (define (set-shift-nshifts! c x) (vector-set! c 1 x)) (define (set-shift-shifts! c x) (vector-set! c 2 x)) (define (shift-number s) (vector-ref s 0)) (define (shift-nshifts s) (vector-ref s 1)) (define (shift-shifts s) (vector-ref s 2)) (define (new-red) (make-vector 3 0)) (define (set-red-number! c x) (vector-set! c 0 x)) (define (set-red-nreds! c x) (vector-set! c 1 x)) (define (set-red-rules! c x) (vector-set! c 2 x)) (define (red-number c) (vector-ref c 0)) (define (red-nreds c) (vector-ref c 1)) (define (red-rules c) (vector-ref c 2)) (define (new-set nelem) (make-vector nelem 0)) (define (vector-map f v) (let ((vm-n (- (vector-length v) 1))) (let loop ((vm-low 0) (vm-high vm-n)) (if (= vm-low vm-high) (vector-set! v vm-low (f (vector-ref v vm-low) vm-low)) (let ((vm-middle (quotient (+ vm-low vm-high) 2))) (loop vm-low vm-middle) (loop (+ vm-middle 1) vm-high)))))) ;; - Constantes (define STATE-TABLE-SIZE 1009) ;; - Tableaux (define rrhs #f) (define rlhs #f) (define ritem #f) (define nullable #f) (define derives #f) (define fderives #f) (define firsts #f) (define kernel-base #f) (define kernel-end #f) (define shift-symbol #f) (define shift-set #f) (define red-set #f) (define state-table #f) (define acces-symbol #f) (define reduction-table #f) (define shift-table #f) (define consistent #f) (define lookaheads #f) (define LA #f) (define LAruleno #f) (define lookback #f) (define goto-map #f) (define from-state #f) (define to-state #f) (define includes #f) (define F #f) (define action-table #f) ;; - Variables (define nitems #f) (define nrules #f) (define nvars #f) (define nterms #f) (define nsyms #f) (define nstates #f) (define first-state #f) (define last-state #f) (define final-state #f) (define first-shift #f) (define last-shift #f) (define first-reduction #f) (define last-reduction #f) (define nshifts #f) (define maxrhs #f) (define ngotos #f) (define token-set-size #f) (define driver-name 'lr-driver) (define (glr-driver?) (eq? driver-name 'glr-driver)) (define (lr-driver?) (eq? driver-name 'lr-driver)) (define (gen-tables! tokens gram ) (initialize-all) (rewrite-grammar tokens gram (lambda (terms terms/prec vars gram gram/actions) (set! the-terminals/prec (list->vector terms/prec)) (set! the-terminals (list->vector terms)) (set! the-nonterminals (list->vector vars)) (set! nterms (length terms)) (set! nvars (length vars)) (set! nsyms (+ nterms nvars)) (let ((no-of-rules (length gram/actions)) (no-of-items (let loop ((l gram/actions) (count 0)) (if (null? l) count (loop (cdr l) (+ count (length (caar l)))))))) (pack-grammar no-of-rules no-of-items gram) (set-derives) (set-nullable) (generate-states) (lalr) (build-tables) (compact-action-table terms) gram/actions)))) (define (initialize-all) (set! rrhs #f) (set! rlhs #f) (set! ritem #f) (set! nullable #f) (set! derives #f) (set! fderives #f) (set! firsts #f) (set! kernel-base #f) (set! kernel-end #f) (set! shift-symbol #f) (set! shift-set #f) (set! red-set #f) (set! state-table (make-vector STATE-TABLE-SIZE '())) (set! acces-symbol #f) (set! reduction-table #f) (set! shift-table #f) (set! consistent #f) (set! lookaheads #f) (set! LA #f) (set! LAruleno #f) (set! lookback #f) (set! goto-map #f) (set! from-state #f) (set! to-state #f) (set! includes #f) (set! F #f) (set! action-table #f) (set! nstates #f) (set! first-state #f) (set! last-state #f) (set! final-state #f) (set! first-shift #f) (set! last-shift #f) (set! first-reduction #f) (set! last-reduction #f) (set! nshifts #f) (set! maxrhs #f) (set! ngotos #f) (set! token-set-size #f) (set! rule-precedences '())) (define (pack-grammar no-of-rules no-of-items gram) (set! nrules (+ no-of-rules 1)) (set! nitems no-of-items) (set! rlhs (make-vector nrules #f)) (set! rrhs (make-vector nrules #f)) (set! ritem (make-vector (+ 1 nitems) #f)) (let loop ((p gram) (item-no 0) (rule-no 1)) (if (not (null? p)) (let ((nt (caar p))) (let loop2 ((prods (cdar p)) (it-no2 item-no) (rl-no2 rule-no)) (if (null? prods) (loop (cdr p) it-no2 rl-no2) (begin (vector-set! rlhs rl-no2 nt) (vector-set! rrhs rl-no2 it-no2) (let loop3 ((rhs (car prods)) (it-no3 it-no2)) (if (null? rhs) (begin (vector-set! ritem it-no3 (- rl-no2)) (loop2 (cdr prods) (+ it-no3 1) (+ rl-no2 1))) (begin (vector-set! ritem it-no3 (car rhs)) (loop3 (cdr rhs) (+ it-no3 1)))))))))))) (define (set-derives) (define delts (make-vector (+ nrules 1) 0)) (define dset (make-vector nvars -1)) (let loop ((i 1) (j 0)) ; i = 0 (if (< i nrules) (let ((lhs (vector-ref rlhs i))) (if (>= lhs 0) (begin (vector-set! delts j (cons i (vector-ref dset lhs))) (vector-set! dset lhs j) (loop (+ i 1) (+ j 1))) (loop (+ i 1) j))))) (set! derives (make-vector nvars 0)) (let loop ((i 0)) (if (< i nvars) (let ((q (let loop2 ((j (vector-ref dset i)) (s '())) (if (< j 0) s (let ((x (vector-ref delts j))) (loop2 (cdr x) (cons (car x) s))))))) (vector-set! derives i q) (loop (+ i 1)))))) (define (set-nullable) (set! nullable (make-vector nvars #f)) (let ((squeue (make-vector nvars #f)) (rcount (make-vector (+ nrules 1) 0)) (rsets (make-vector nvars #f)) (relts (make-vector (+ nitems nvars 1) #f))) (let loop ((r 0) (s2 0) (p 0)) (let ((*r (vector-ref ritem r))) (if *r (if (< *r 0) (let ((symbol (vector-ref rlhs (- *r)))) (if (and (>= symbol 0) (not (vector-ref nullable symbol))) (begin (vector-set! nullable symbol #t) (vector-set! squeue s2 symbol) (loop (+ r 1) (+ s2 1) p)))) (let loop2 ((r1 r) (any-tokens #f)) (let* ((symbol (vector-ref ritem r1))) (if (> symbol 0) (loop2 (+ r1 1) (or any-tokens (>= symbol nvars))) (if (not any-tokens) (let ((ruleno (- symbol))) (let loop3 ((r2 r) (p2 p)) (let ((symbol (vector-ref ritem r2))) (if (> symbol 0) (begin (vector-set! rcount ruleno (+ (vector-ref rcount ruleno) 1)) (vector-set! relts p2 (cons (vector-ref rsets symbol) ruleno)) (vector-set! rsets symbol p2) (loop3 (+ r2 1) (+ p2 1))) (loop (+ r2 1) s2 p2))))) (loop (+ r1 1) s2 p)))))) (let loop ((s1 0) (s3 s2)) (if (< s1 s3) (let loop2 ((p (vector-ref rsets (vector-ref squeue s1))) (s4 s3)) (if p (let* ((x (vector-ref relts p)) (ruleno (cdr x)) (y (- (vector-ref rcount ruleno) 1))) (vector-set! rcount ruleno y) (if (= y 0) (let ((symbol (vector-ref rlhs ruleno))) (if (and (>= symbol 0) (not (vector-ref nullable symbol))) (begin (vector-set! nullable symbol #t) (vector-set! squeue s4 symbol) (loop2 (car x) (+ s4 1))) (loop2 (car x) s4))) (loop2 (car x) s4)))) (loop (+ s1 1) s4))))))))) (define (set-firsts) (set! firsts (make-vector nvars '())) ;; -- initialization (let loop ((i 0)) (if (< i nvars) (let loop2 ((sp (vector-ref derives i))) (if (null? sp) (loop (+ i 1)) (let ((sym (vector-ref ritem (vector-ref rrhs (car sp))))) (if (< -1 sym nvars) (vector-set! firsts i (sinsert sym (vector-ref firsts i)))) (loop2 (cdr sp))))))) ;; -- reflexive and transitive closure (let loop ((continue #t)) (if continue (let loop2 ((i 0) (cont #f)) (if (>= i nvars) (loop cont) (let* ((x (vector-ref firsts i)) (y (let loop3 ((l x) (z x)) (if (null? l) z (loop3 (cdr l) (sunion (vector-ref firsts (car l)) z)))))) (if (equal? x y) (loop2 (+ i 1) cont) (begin (vector-set! firsts i y) (loop2 (+ i 1) #t)))))))) (let loop ((i 0)) (if (< i nvars) (begin (vector-set! firsts i (sinsert i (vector-ref firsts i))) (loop (+ i 1)))))) (define (set-fderives) (set! fderives (make-vector nvars #f)) (set-firsts) (let loop ((i 0)) (if (< i nvars) (let ((x (let loop2 ((l (vector-ref firsts i)) (fd '())) (if (null? l) fd (loop2 (cdr l) (sunion (vector-ref derives (car l)) fd)))))) (vector-set! fderives i x) (loop (+ i 1)))))) (define (closure core) ;; Initialization (define ruleset (make-vector nrules #f)) (let loop ((csp core)) (if (not (null? csp)) (let ((sym (vector-ref ritem (car csp)))) (if (< -1 sym nvars) (let loop2 ((dsp (vector-ref fderives sym))) (if (not (null? dsp)) (begin (vector-set! ruleset (car dsp) #t) (loop2 (cdr dsp)))))) (loop (cdr csp))))) (let loop ((ruleno 1) (csp core) (itemsetv '())) ; ruleno = 0 (if (< ruleno nrules) (if (vector-ref ruleset ruleno) (let ((itemno (vector-ref rrhs ruleno))) (let loop2 ((c csp) (itemsetv2 itemsetv)) (if (and (pair? c) (< (car c) itemno)) (loop2 (cdr c) (cons (car c) itemsetv2)) (loop (+ ruleno 1) c (cons itemno itemsetv2))))) (loop (+ ruleno 1) csp itemsetv)) (let loop2 ((c csp) (itemsetv2 itemsetv)) (if (pair? c) (loop2 (cdr c) (cons (car c) itemsetv2)) (reverse itemsetv2)))))) (define (allocate-item-sets) (set! kernel-base (make-vector nsyms 0)) (set! kernel-end (make-vector nsyms #f))) (define (allocate-storage) (allocate-item-sets) (set! red-set (make-vector (+ nrules 1) 0))) ; -- (define (initialize-states) (let ((p (new-core))) (set-core-number! p 0) (set-core-acc-sym! p #f) (set-core-nitems! p 1) (set-core-items! p '(0)) (set! first-state (list p)) (set! last-state first-state) (set! nstates 1))) (define (generate-states) (allocate-storage) (set-fderives) (initialize-states) (let loop ((this-state first-state)) (if (pair? this-state) (let* ((x (car this-state)) (is (closure (core-items x)))) (save-reductions x is) (new-itemsets is) (append-states) (if (> nshifts 0) (save-shifts x)) (loop (cdr this-state)))))) (define (new-itemsets itemset) ;; - Initialization (set! shift-symbol '()) (let loop ((i 0)) (if (< i nsyms) (begin (vector-set! kernel-end i '()) (loop (+ i 1))))) (let loop ((isp itemset)) (if (pair? isp) (let* ((i (car isp)) (sym (vector-ref ritem i))) (if (>= sym 0) (begin (set! shift-symbol (sinsert sym shift-symbol)) (let ((x (vector-ref kernel-end sym))) (if (null? x) (begin (vector-set! kernel-base sym (cons (+ i 1) x)) (vector-set! kernel-end sym (vector-ref kernel-base sym))) (begin (set-cdr! x (list (+ i 1))) (vector-set! kernel-end sym (cdr x))))))) (loop (cdr isp))))) (set! nshifts (length shift-symbol))) (define (get-state sym) (let* ((isp (vector-ref kernel-base sym)) (n (length isp)) (key (let loop ((isp1 isp) (k 0)) (if (null? isp1) (modulo k STATE-TABLE-SIZE) (loop (cdr isp1) (+ k (car isp1)))))) (sp (vector-ref state-table key))) (if (null? sp) (let ((x (new-state sym))) (vector-set! state-table key (list x)) (core-number x)) (let loop ((sp1 sp)) (if (and (= n (core-nitems (car sp1))) (let loop2 ((i1 isp) (t (core-items (car sp1)))) (if (and (pair? i1) (= (car i1) (car t))) (loop2 (cdr i1) (cdr t)) (null? i1)))) (core-number (car sp1)) (if (null? (cdr sp1)) (let ((x (new-state sym))) (set-cdr! sp1 (list x)) (core-number x)) (loop (cdr sp1)))))))) (define (new-state sym) (let* ((isp (vector-ref kernel-base sym)) (n (length isp)) (p (new-core))) (set-core-number! p nstates) (set-core-acc-sym! p sym) (if (= sym nvars) (set! final-state nstates)) (set-core-nitems! p n) (set-core-items! p isp) (set-cdr! last-state (list p)) (set! last-state (cdr last-state)) (set! nstates (+ nstates 1)) p)) ; -- (define (append-states) (set! shift-set (let loop ((l (reverse shift-symbol))) (if (null? l) '() (cons (get-state (car l)) (loop (cdr l))))))) ; -- (define (save-shifts core) (let ((p (new-shift))) (set-shift-number! p (core-number core)) (set-shift-nshifts! p nshifts) (set-shift-shifts! p shift-set) (if last-shift (begin (set-cdr! last-shift (list p)) (set! last-shift (cdr last-shift))) (begin (set! first-shift (list p)) (set! last-shift first-shift))))) (define (save-reductions core itemset) (let ((rs (let loop ((l itemset)) (if (null? l) '() (let ((item (vector-ref ritem (car l)))) (if (< item 0) (cons (- item) (loop (cdr l))) (loop (cdr l)))))))) (if (pair? rs) (let ((p (new-red))) (set-red-number! p (core-number core)) (set-red-nreds! p (length rs)) (set-red-rules! p rs) (if last-reduction (begin (set-cdr! last-reduction (list p)) (set! last-reduction (cdr last-reduction))) (begin (set! first-reduction (list p)) (set! last-reduction first-reduction))))))) ; -- (define (lalr) (set! token-set-size (+ 1 (quotient nterms (BITS-PER-WORD)))) (set-accessing-symbol) (set-shift-table) (set-reduction-table) (set-max-rhs) (initialize-LA) (set-goto-map) (initialize-F) (build-relations) (digraph includes) (compute-lookaheads)) (define (set-accessing-symbol) (set! acces-symbol (make-vector nstates #f)) (let loop ((l first-state)) (if (pair? l) (let ((x (car l))) (vector-set! acces-symbol (core-number x) (core-acc-sym x)) (loop (cdr l)))))) (define (set-shift-table) (set! shift-table (make-vector nstates #f)) (let loop ((l first-shift)) (if (pair? l) (let ((x (car l))) (vector-set! shift-table (shift-number x) x) (loop (cdr l)))))) (define (set-reduction-table) (set! reduction-table (make-vector nstates #f)) (let loop ((l first-reduction)) (if (pair? l) (let ((x (car l))) (vector-set! reduction-table (red-number x) x) (loop (cdr l)))))) (define (set-max-rhs) (let loop ((p 0) (curmax 0) (length 0)) (let ((x (vector-ref ritem p))) (if x (if (>= x 0) (loop (+ p 1) curmax (+ length 1)) (loop (+ p 1) (max curmax length) 0)) (set! maxrhs curmax))))) (define (initialize-LA) (define (last l) (if (null? (cdr l)) (car l) (last (cdr l)))) (set! consistent (make-vector nstates #f)) (set! lookaheads (make-vector (+ nstates 1) #f)) (let loop ((count 0) (i 0)) (if (< i nstates) (begin (vector-set! lookaheads i count) (let ((rp (vector-ref reduction-table i)) (sp (vector-ref shift-table i))) (if (and rp (or (> (red-nreds rp) 1) (and sp (not (< (vector-ref acces-symbol (last (shift-shifts sp))) nvars))))) (loop (+ count (red-nreds rp)) (+ i 1)) (begin (vector-set! consistent i #t) (loop count (+ i 1)))))) (begin (vector-set! lookaheads nstates count) (let ((c (max count 1))) (set! LA (make-vector c #f)) (do ((j 0 (+ j 1))) ((= j c)) (vector-set! LA j (new-set token-set-size))) (set! LAruleno (make-vector c -1)) (set! lookback (make-vector c #f))) (let loop ((i 0) (np 0)) (if (< i nstates) (if (vector-ref consistent i) (loop (+ i 1) np) (let ((rp (vector-ref reduction-table i))) (if rp (let loop2 ((j (red-rules rp)) (np2 np)) (if (null? j) (loop (+ i 1) np2) (begin (vector-set! LAruleno np2 (car j)) (loop2 (cdr j) (+ np2 1))))) (loop (+ i 1) np)))))))))) (define (set-goto-map) (set! goto-map (make-vector (+ nvars 1) 0)) (let ((temp-map (make-vector (+ nvars 1) 0))) (let loop ((ng 0) (sp first-shift)) (if (pair? sp) (let loop2 ((i (reverse (shift-shifts (car sp)))) (ng2 ng)) (if (pair? i) (let ((symbol (vector-ref acces-symbol (car i)))) (if (< symbol nvars) (begin (vector-set! goto-map symbol (+ 1 (vector-ref goto-map symbol))) (loop2 (cdr i) (+ ng2 1))) (loop2 (cdr i) ng2))) (loop ng2 (cdr sp)))) (let loop ((k 0) (i 0)) (if (< i nvars) (begin (vector-set! temp-map i k) (loop (+ k (vector-ref goto-map i)) (+ i 1))) (begin (do ((i 0 (+ i 1))) ((>= i nvars)) (vector-set! goto-map i (vector-ref temp-map i))) (set! ngotos ng) (vector-set! goto-map nvars ngotos) (vector-set! temp-map nvars ngotos) (set! from-state (make-vector ngotos #f)) (set! to-state (make-vector ngotos #f)) (do ((sp first-shift (cdr sp))) ((null? sp)) (let* ((x (car sp)) (state1 (shift-number x))) (do ((i (shift-shifts x) (cdr i))) ((null? i)) (let* ((state2 (car i)) (symbol (vector-ref acces-symbol state2))) (if (< symbol nvars) (let ((k (vector-ref temp-map symbol))) (vector-set! temp-map symbol (+ k 1)) (vector-set! from-state k state1) (vector-set! to-state k state2)))))))))))))) (define (map-goto state symbol) (let loop ((low (vector-ref goto-map symbol)) (high (- (vector-ref goto-map (+ symbol 1)) 1))) (if (> low high) (begin (display (list "Error in map-goto" state symbol)) (newline) 0) (let* ((middle (quotient (+ low high) 2)) (s (vector-ref from-state middle))) (cond ((= s state) middle) ((< s state) (loop (+ middle 1) high)) (else (loop low (- middle 1)))))))) (define (initialize-F) (set! F (make-vector ngotos #f)) (do ((i 0 (+ i 1))) ((= i ngotos)) (vector-set! F i (new-set token-set-size))) (let ((reads (make-vector ngotos #f))) (let loop ((i 0) (rowp 0)) (if (< i ngotos) (let* ((rowf (vector-ref F rowp)) (stateno (vector-ref to-state i)) (sp (vector-ref shift-table stateno))) (if sp (let loop2 ((j (shift-shifts sp)) (edges '())) (if (pair? j) (let ((symbol (vector-ref acces-symbol (car j)))) (if (< symbol nvars) (if (vector-ref nullable symbol) (loop2 (cdr j) (cons (map-goto stateno symbol) edges)) (loop2 (cdr j) edges)) (begin (set-bit rowf (- symbol nvars)) (loop2 (cdr j) edges)))) (if (pair? edges) (vector-set! reads i (reverse edges)))))) (loop (+ i 1) (+ rowp 1))))) (digraph reads))) (define (add-lookback-edge stateno ruleno gotono) (let ((k (vector-ref lookaheads (+ stateno 1)))) (let loop ((found #f) (i (vector-ref lookaheads stateno))) (if (and (not found) (< i k)) (if (= (vector-ref LAruleno i) ruleno) (loop #t i) (loop found (+ i 1))) (if (not found) (begin (display "Error in add-lookback-edge : ") (display (list stateno ruleno gotono)) (newline)) (vector-set! lookback i (cons gotono (vector-ref lookback i)))))))) (define (transpose r-arg n) (let ((new-end (make-vector n #f)) (new-R (make-vector n #f))) (do ((i 0 (+ i 1))) ((= i n)) (let ((x (list 'bidon))) (vector-set! new-R i x) (vector-set! new-end i x))) (do ((i 0 (+ i 1))) ((= i n)) (let ((sp (vector-ref r-arg i))) (if (pair? sp) (let loop ((sp2 sp)) (if (pair? sp2) (let* ((x (car sp2)) (y (vector-ref new-end x))) (set-cdr! y (cons i (cdr y))) (vector-set! new-end x (cdr y)) (loop (cdr sp2)))))))) (do ((i 0 (+ i 1))) ((= i n)) (vector-set! new-R i (cdr (vector-ref new-R i)))) new-R)) (define (build-relations) (define (get-state stateno symbol) (let loop ((j (shift-shifts (vector-ref shift-table stateno))) (stno stateno)) (if (null? j) stno (let ((st2 (car j))) (if (= (vector-ref acces-symbol st2) symbol) st2 (loop (cdr j) st2)))))) (set! includes (make-vector ngotos #f)) (do ((i 0 (+ i 1))) ((= i ngotos)) (let ((state1 (vector-ref from-state i)) (symbol1 (vector-ref acces-symbol (vector-ref to-state i)))) (let loop ((rulep (vector-ref derives symbol1)) (edges '())) (if (pair? rulep) (let ((*rulep (car rulep))) (let loop2 ((rp (vector-ref rrhs *rulep)) (stateno state1) (states (list state1))) (let ((*rp (vector-ref ritem rp))) (if (> *rp 0) (let ((st (get-state stateno *rp))) (loop2 (+ rp 1) st (cons st states))) (begin (if (not (vector-ref consistent stateno)) (add-lookback-edge stateno *rulep i)) (let loop2 ((done #f) (stp (cdr states)) (rp2 (- rp 1)) (edgp edges)) (if (not done) (let ((*rp (vector-ref ritem rp2))) (if (< -1 *rp nvars) (loop2 (not (vector-ref nullable *rp)) (cdr stp) (- rp2 1) (cons (map-goto (car stp) *rp) edgp)) (loop2 #t stp rp2 edgp))) (loop (cdr rulep) edgp)))))))) (vector-set! includes i edges))))) (set! includes (transpose includes ngotos))) (define (compute-lookaheads) (let ((n (vector-ref lookaheads nstates))) (let loop ((i 0)) (if (< i n) (let loop2 ((sp (vector-ref lookback i))) (if (pair? sp) (let ((LA-i (vector-ref LA i)) (F-j (vector-ref F (car sp)))) (bit-union LA-i F-j token-set-size) (loop2 (cdr sp))) (loop (+ i 1)))))))) (define (digraph relation) (define infinity (+ ngotos 2)) (define INDEX (make-vector (+ ngotos 1) 0)) (define VERTICES (make-vector (+ ngotos 1) 0)) (define top 0) (define R relation) (define (traverse i) (set! top (+ 1 top)) (vector-set! VERTICES top i) (let ((height top)) (vector-set! INDEX i height) (let ((rp (vector-ref R i))) (if (pair? rp) (let loop ((rp2 rp)) (if (pair? rp2) (let ((j (car rp2))) (if (= 0 (vector-ref INDEX j)) (traverse j)) (if (> (vector-ref INDEX i) (vector-ref INDEX j)) (vector-set! INDEX i (vector-ref INDEX j))) (let ((F-i (vector-ref F i)) (F-j (vector-ref F j))) (bit-union F-i F-j token-set-size)) (loop (cdr rp2)))))) (if (= (vector-ref INDEX i) height) (let loop () (let ((j (vector-ref VERTICES top))) (set! top (- top 1)) (vector-set! INDEX j infinity) (if (not (= i j)) (begin (bit-union (vector-ref F i) (vector-ref F j) token-set-size) (loop))))))))) (let loop ((i 0)) (if (< i ngotos) (begin (if (and (= 0 (vector-ref INDEX i)) (pair? (vector-ref R i))) (traverse i)) (loop (+ i 1)))))) ;; ---------------------------------------------------------------------- ;; operator precedence management ;; ---------------------------------------------------------------------- ;; a vector of precedence descriptors where each element ;; is of the form (terminal type precedence) (define the-terminals/prec #f) ; terminal symbols with precedence ; the precedence is an integer >= 0 (define (get-symbol-precedence sym) (caddr (vector-ref the-terminals/prec sym))) ; the operator type is either 'none, 'left, 'right, or 'nonassoc (define (get-symbol-assoc sym) (cadr (vector-ref the-terminals/prec sym))) (define rule-precedences '()) (define (add-rule-precedence! rule sym) (set! rule-precedences (cons (cons rule sym) rule-precedences))) (define (get-rule-precedence ruleno) (cond ((assq ruleno rule-precedences) => (lambda (p) (get-symbol-precedence (cdr p)))) (else ;; process the rule symbols from left to right (let loop ((i (vector-ref rrhs ruleno)) (prec 0)) (let ((item (vector-ref ritem i))) ;; end of rule (if (< item 0) prec (let ((i1 (+ i 1))) (if (>= item nvars) ;; it's a terminal symbol (loop i1 (get-symbol-precedence (- item nvars))) (loop i1 prec))))))))) ;; ---------------------------------------------------------------------- ;; Build the various tables ;; ---------------------------------------------------------------------- (define expected-conflicts 0) (define (build-tables) (define (resolve-conflict sym rule) (let ((sym-prec (get-symbol-precedence sym)) (sym-assoc (get-symbol-assoc sym)) (rule-prec (get-rule-precedence rule))) (cond ((> sym-prec rule-prec) 'shift) ((< sym-prec rule-prec) 'reduce) ((eq? sym-assoc 'left) 'reduce) ((eq? sym-assoc 'right) 'shift) (else 'none)))) (define conflict-messages '()) (define (add-conflict-message . l) (set! conflict-messages (cons l conflict-messages))) (define (log-conflicts) (if (> (length conflict-messages) expected-conflicts) (for-each (lambda (message) (for-each display message) (newline)) conflict-messages))) ;; --- Add an action to the action table (define (add-action state symbol new-action) (let* ((state-actions (vector-ref action-table state)) (actions (assv symbol state-actions))) (if (pair? actions) (let ((current-action (cadr actions))) (if (not (= new-action current-action)) ;; -- there is a conflict (begin (if (and (<= current-action 0) (<= new-action 0)) ;; --- reduce/reduce conflict (begin (add-conflict-message "%% Reduce/Reduce conflict (reduce " (- new-action) ", reduce " (- current-action) ") on '" (get-symbol (+ symbol nvars)) "' in state " state) (if (glr-driver?) (set-cdr! (cdr actions) (cons new-action (cddr actions))) (set-car! (cdr actions) (max current-action new-action)))) ;; --- shift/reduce conflict ;; can we resolve the conflict using precedences? (case (resolve-conflict symbol (- current-action)) ;; -- shift ((shift) (if (glr-driver?) (set-cdr! (cdr actions) (cons new-action (cddr actions))) (set-car! (cdr actions) new-action))) ;; -- reduce ((reduce) #f) ; well, nothing to do... ;; -- signal a conflict! (else (add-conflict-message "%% Shift/Reduce conflict (shift " new-action ", reduce " (- current-action) ") on '" (get-symbol (+ symbol nvars)) "' in state " state) (if (glr-driver?) (set-cdr! (cdr actions) (cons new-action (cddr actions))) (set-car! (cdr actions) new-action)))))))) (vector-set! action-table state (cons (list symbol new-action) state-actions))) )) (define (add-action-for-all-terminals state action) (do ((i 1 (+ i 1))) ((= i nterms)) (add-action state i action))) (set! action-table (make-vector nstates '())) (do ((i 0 (+ i 1))) ; i = state ((= i nstates)) (let ((red (vector-ref reduction-table i))) (if (and red (>= (red-nreds red) 1)) (if (and (= (red-nreds red) 1) (vector-ref consistent i)) (if (glr-driver?) (add-action-for-all-terminals i (- (car (red-rules red)))) (add-action i 'default (- (car (red-rules red))))) (let ((k (vector-ref lookaheads (+ i 1)))) (let loop ((j (vector-ref lookaheads i))) (if (< j k) (let ((rule (- (vector-ref LAruleno j))) (lav (vector-ref LA j))) (let loop2 ((token 0) (x (vector-ref lav 0)) (y 1) (z 0)) (if (< token nterms) (begin (let ((in-la-set? (modulo x 2))) (if (= in-la-set? 1) (add-action i token rule))) (if (= y (BITS-PER-WORD)) (loop2 (+ token 1) (vector-ref lav (+ z 1)) 1 (+ z 1)) (loop2 (+ token 1) (quotient x 2) (+ y 1) z))))) (loop (+ j 1))))))))) (let ((shiftp (vector-ref shift-table i))) (if shiftp (let loop ((k (shift-shifts shiftp))) (if (pair? k) (let* ((state (car k)) (symbol (vector-ref acces-symbol state))) (if (>= symbol nvars) (add-action i (- symbol nvars) state)) (loop (cdr k)))))))) (add-action final-state 0 'accept) (log-conflicts)) (define (compact-action-table terms) (define (most-common-action acts) (let ((accums '())) (let loop ((l acts)) (if (pair? l) (let* ((x (cadar l)) (y (assv x accums))) (if (and (number? x) (< x 0)) (if y (set-cdr! y (+ 1 (cdr y))) (set! accums (cons `(,x . 1) accums)))) (loop (cdr l))))) (let loop ((l accums) (max 0) (sym #f)) (if (null? l) sym (let ((x (car l))) (if (> (cdr x) max) (loop (cdr l) (cdr x) (car x)) (loop (cdr l) max sym))))))) (define (translate-terms acts) (map (lambda (act) (cons (list-ref terms (car act)) (cdr act))) acts)) (do ((i 0 (+ i 1))) ((= i nstates)) (let ((acts (vector-ref action-table i))) (if (vector? (vector-ref reduction-table i)) (let ((act (most-common-action acts))) (vector-set! action-table i (cons `(*default* ,(if act act '*error*)) (translate-terms (lalr-filter (lambda (x) (not (and (= (length x) 2) (eq? (cadr x) act)))) acts))))) (vector-set! action-table i (cons `(*default* *error*) (translate-terms acts))))))) ;; -- (define (rewrite-grammar tokens grammar k) (define eoi '*eoi*) (define (check-terminal term terms) (cond ((not (valid-terminal? term)) (lalr-error "invalid terminal: " term)) ((member term terms) (lalr-error "duplicate definition of terminal: " term)))) (define (prec->type prec) (cdr (assq prec '((left: . left) (right: . right) (nonassoc: . nonassoc))))) (cond ;; --- a few error conditions ((not (list? tokens)) (lalr-error "Invalid token list: " tokens)) ((not (pair? grammar)) (lalr-error "Grammar definition must have a non-empty list of productions" '())) (else ;; --- check the terminals (let loop1 ((lst tokens) (rev-terms '()) (rev-terms/prec '()) (prec-level 0)) (if (pair? lst) (let ((term (car lst))) (cond ((pair? term) (if (and (memq (car term) '(left: right: nonassoc:)) (not (null? (cdr term)))) (let ((prec (+ prec-level 1)) (optype (prec->type (car term)))) (let loop-toks ((l (cdr term)) (rev-terms rev-terms) (rev-terms/prec rev-terms/prec)) (if (null? l) (loop1 (cdr lst) rev-terms rev-terms/prec prec) (let ((term (car l))) (check-terminal term rev-terms) (loop-toks (cdr l) (cons term rev-terms) (cons (list term optype prec) rev-terms/prec)))))) (lalr-error "invalid operator precedence specification: " term))) (else (check-terminal term rev-terms) (loop1 (cdr lst) (cons term rev-terms) (cons (list term 'none 0) rev-terms/prec) prec-level)))) ;; --- check the grammar rules (let loop2 ((lst grammar) (rev-nonterm-defs '())) (if (pair? lst) (let ((def (car lst))) (if (not (pair? def)) (lalr-error "Nonterminal definition must be a non-empty list" '()) (let ((nonterm (car def))) (cond ((not (valid-nonterminal? nonterm)) (lalr-error "Invalid nonterminal:" nonterm)) ((or (member nonterm rev-terms) (assoc nonterm rev-nonterm-defs)) (lalr-error "Nonterminal previously defined:" nonterm)) (else (loop2 (cdr lst) (cons def rev-nonterm-defs))))))) (let* ((terms (cons eoi (cons 'error (reverse rev-terms)))) (terms/prec (cons '(eoi none 0) (cons '(error none 0) (reverse rev-terms/prec)))) (nonterm-defs (reverse rev-nonterm-defs)) (nonterms (cons '*start* (map car nonterm-defs)))) (if (= (length nonterms) 1) (lalr-error "Grammar must contain at least one nonterminal" '()) (let loop-defs ((defs (cons `(*start* (,(cadr nonterms) ,eoi) : $1) nonterm-defs)) (ruleno 0) (comp-defs '())) (if (pair? defs) (let* ((nonterm-def (car defs)) (compiled-def (rewrite-nonterm-def nonterm-def ruleno terms nonterms))) (loop-defs (cdr defs) (+ ruleno (length compiled-def)) (cons compiled-def comp-defs))) (let ((compiled-nonterm-defs (reverse comp-defs))) (k terms terms/prec nonterms (map (lambda (x) (cons (caaar x) (map cdar x))) compiled-nonterm-defs) (apply append compiled-nonterm-defs)))))))))))))) (define (rewrite-nonterm-def nonterm-def ruleno terms nonterms) (define No-NT (length nonterms)) (define (encode x) (let ((PosInNT (pos-in-list x nonterms))) (if PosInNT PosInNT (let ((PosInT (pos-in-list x terms))) (if PosInT (+ No-NT PosInT) (lalr-error "undefined symbol : " x)))))) (define (process-prec-directive rhs ruleno) (let loop ((l rhs)) (if (null? l) '() (let ((first (car l)) (rest (cdr l))) (cond ((or (member first terms) (member first nonterms)) (cons first (loop rest))) ((and (pair? first) (eq? (car first) 'prec:)) (if (and (pair? (cdr first)) (null? (cddr first)) (member (cadr first) terms)) (if (null? rest) (begin (add-rule-precedence! ruleno (pos-in-list (cadr first) terms)) (loop rest)) (lalr-error "prec: directive should be at end of rule: " rhs)) (lalr-error "Invalid prec: directive: " first))) (else (lalr-error "Invalid terminal or nonterminal: " first))))))) (define (check-error-production rhs) (let loop ((rhs rhs)) (if (pair? rhs) (begin (if (and (eq? (car rhs) 'error) (or (null? (cdr rhs)) (not (member (cadr rhs) terms)) (not (null? (cddr rhs))))) (lalr-error "Invalid 'error' production. A single terminal symbol must follow the 'error' token.:" rhs)) (loop (cdr rhs)))))) (if (not (pair? (cdr nonterm-def))) (lalr-error "At least one production needed for nonterminal:" (car nonterm-def)) (let ((name (symbol->string (car nonterm-def)))) (let loop1 ((lst (cdr nonterm-def)) (i 1) (rev-productions-and-actions '())) (if (not (pair? lst)) (reverse rev-productions-and-actions) (let* ((rhs (process-prec-directive (car lst) (+ ruleno i -1))) (rest (cdr lst)) (prod (map encode (cons (car nonterm-def) rhs)))) ;; -- check for undefined tokens (for-each (lambda (x) (if (not (or (member x terms) (member x nonterms))) (lalr-error "Invalid terminal or nonterminal:" x))) rhs) ;; -- check 'error' productions (check-error-production rhs) (if (and (pair? rest) (eq? (car rest) ':) (pair? (cdr rest))) (loop1 (cddr rest) (+ i 1) (cons (cons prod (cadr rest)) rev-productions-and-actions)) (let* ((rhs-length (length rhs)) (action (cons 'vector (cons (list 'quote (string->symbol (string-append name "-" (number->string i)))) (let loop-j ((j 1)) (if (> j rhs-length) '() (cons (string->symbol (string-append "$" (number->string j))) (loop-j (+ j 1))))))))) (loop1 rest (+ i 1) (cons (cons prod action) rev-productions-and-actions)))))))))) (define (valid-nonterminal? x) (symbol? x)) (define (valid-terminal? x) (symbol? x)) ; DB ;; ---------------------------------------------------------------------- ;; Miscellaneous ;; ---------------------------------------------------------------------- (define (pos-in-list x lst) (let loop ((lst lst) (i 0)) (cond ((not (pair? lst)) #f) ((equal? (car lst) x) i) (else (loop (cdr lst) (+ i 1)))))) (define (sunion lst1 lst2) ; union of sorted lists (let loop ((L1 lst1) (L2 lst2)) (cond ((null? L1) L2) ((null? L2) L1) (else (let ((x (car L1)) (y (car L2))) (cond ((> x y) (cons y (loop L1 (cdr L2)))) ((< x y) (cons x (loop (cdr L1) L2))) (else (loop (cdr L1) L2)) )))))) (define (sinsert elem lst) (let loop ((l1 lst)) (if (null? l1) (cons elem l1) (let ((x (car l1))) (cond ((< elem x) (cons elem l1)) ((> elem x) (cons x (loop (cdr l1)))) (else l1)))))) (define (lalr-filter p lst) (let loop ((l lst)) (if (null? l) '() (let ((x (car l)) (y (cdr l))) (if (p x) (cons x (loop y)) (loop y)))))) ;; ---------------------------------------------------------------------- ;; Debugging tools ... ;; ---------------------------------------------------------------------- (define the-terminals #f) ; names of terminal symbols (define the-nonterminals #f) ; non-terminals (define (print-item item-no) (let loop ((i item-no)) (let ((v (vector-ref ritem i))) (if (>= v 0) (loop (+ i 1)) (let* ((rlno (- v)) (nt (vector-ref rlhs rlno))) (display (vector-ref the-nonterminals nt)) (display " --> ") (let loop ((i (vector-ref rrhs rlno))) (let ((v (vector-ref ritem i))) (if (= i item-no) (display ". ")) (if (>= v 0) (begin (display (get-symbol v)) (display " ") (loop (+ i 1))) (begin (display " (rule ") (display (- v)) (display ")") (newline)))))))))) (define (get-symbol n) (if (>= n nvars) (vector-ref the-terminals (- n nvars)) (vector-ref the-nonterminals n))) (define (print-states) (define (print-action act) (cond ((eq? act '*error*) (display " : Error")) ((eq? act 'accept) (display " : Accept input")) ((< act 0) (display " : reduce using rule ") (display (- act))) (else (display " : shift and goto state ") (display act))) (newline) #t) (define (print-actions acts) (let loop ((l acts)) (if (null? l) #t (let ((sym (caar l)) (act (cadar l))) (display " ") (cond ((eq? sym 'default) (display "default action")) (else (if (number? sym) (display (get-symbol (+ sym nvars))) (display sym)))) (print-action act) (loop (cdr l)))))) (if (not action-table) (begin (display "No generated parser available!") (newline) #f) (begin (display "State table") (newline) (display "-----------") (newline) (newline) (let loop ((l first-state)) (if (null? l) #t (let* ((core (car l)) (i (core-number core)) (items (core-items core)) (actions (vector-ref action-table i))) (display "state ") (display i) (newline) (newline) (for-each (lambda (x) (display " ") (print-item x)) items) (newline) (print-actions actions) (newline) (loop (cdr l)))))))) ;; ---------------------------------------------------------------------- (define build-goto-table (lambda () `(vector ,@(map (lambda (shifts) (list 'quote (if shifts (let loop ((l (shift-shifts shifts))) (if (null? l) '() (let* ((state (car l)) (symbol (vector-ref acces-symbol state))) (if (< symbol nvars) (cons `(,symbol . ,state) (loop (cdr l))) (loop (cdr l)))))) '()))) (vector->list shift-table))))) (define build-reduction-table (lambda (gram/actions) `(vector '() ,@(map (lambda (p) (let ((act (cdr p))) `(lambda ,(if (eq? driver-name 'lr-driver) '(___stack ___sp ___goto-table ___push yypushback) '(___sp ___goto-table ___push)) ,(let* ((nt (caar p)) (rhs (cdar p)) (n (length rhs))) `(let* (,@(if act (let loop ((i 1) (l rhs)) (if (pair? l) (let ((rest (cdr l))) (cons `(,(string->symbol (string-append "$" (number->string (+ (- n i) 1)))) ,(if (eq? driver-name 'lr-driver) `(vector-ref ___stack (- ___sp ,(- (* i 2) 1))) `(list-ref ___sp ,(+ (* (- i 1) 2) 1)))) (loop (+ i 1) rest))) '())) '())) ,(if (= nt 0) '$1 `(___push ,n ,nt ,(cdr p) ,@(if (eq? driver-name 'lr-driver) '() '(___sp))))))))) gram/actions)))) ;; Options (define *valid-options* (list (cons 'out-table: (lambda (option) (and (list? option) (= (length option) 2) (string? (cadr option))))) (cons 'output: (lambda (option) (and (list? option) (= (length option) 3) (symbol? (cadr option)) (string? (caddr option))))) (cons 'expect: (lambda (option) (and (list? option) (= (length option) 2) (integer? (cadr option)) (>= (cadr option) 0)))) (cons 'driver: (lambda (option) (and (list? option) (= (length option) 2) (symbol? (cadr option)) (memq (cadr option) '(lr glr))))))) (define (validate-options options) (for-each (lambda (option) (let ((p (assoc (car option) *valid-options*))) (if (or (not p) (not ((cdr p) option))) (lalr-error "Invalid option:" option)))) options)) (define (output-parser! options code) (let ((option (assq 'output: options))) (if option (let ((parser-name (cadr option)) (file-name (caddr option))) (with-output-to-file file-name (lambda () (pprint `(define ,parser-name ,code)) (newline))))))) (define (output-table! options) (let ((option (assq 'out-table: options))) (if option (let ((file-name (cadr option))) (with-output-to-file file-name print-states))))) (define (set-expected-conflicts! options) (let ((option (assq 'expect: options))) (set! expected-conflicts (if option (cadr option) 0)))) (define (set-driver-name! options) (let ((option (assq 'driver: options))) (if option (let ((driver-type (cadr option))) (set! driver-name (if (eq? driver-type 'glr) 'glr-driver 'lr-driver)))))) ;; -- arguments (define (extract-arguments lst proc) (let loop ((options '()) (tokens '()) (rules '()) (lst lst)) (if (pair? lst) (let ((p (car lst))) (cond ((and (pair? p) (lalr-keyword? (car p)) (assq (car p) *valid-options*)) (loop (cons p options) tokens rules (cdr lst))) (else (proc options p (cdr lst))))) (lalr-error "Malformed lalr-parser form" lst)))) (define (build-driver options tokens rules) (validate-options options) (set-expected-conflicts! options) (set-driver-name! options) (let* ((gram/actions (gen-tables! tokens rules)) (code `(,driver-name ',action-table ,(build-goto-table) ,(build-reduction-table gram/actions)))) (output-table! options) (output-parser! options code) code)) (extract-arguments arguments build-driver)) ;;; ;;;; -- ;;;; Implementation of the lr-driver ;;; (cond-expand (gambit (declare (standard-bindings) (fixnum) (block) (not safe))) (chicken (declare (uses extras) (usual-integrations) (fixnum) (not safe))) (else)) ;;; ;;;; Source location utilities ;;; ;; This function assumes that src-location-1 and src-location-2 are source-locations ;; Returns #f if they are not locations for the same input (define (combine-locations src-location-1 src-location-2) (let ((offset-1 (source-location-offset src-location-1)) (offset-2 (source-location-offset src-location-2)) (length-1 (source-location-length src-location-1)) (length-2 (source-location-length src-location-2))) (cond ((not (equal? (source-location-input src-location-1) (source-location-input src-location-2))) #f) ((or (not (number? offset-1)) (not (number? offset-2)) (not (number? length-1)) (not (number? length-2)) (< offset-1 0) (< offset-2 0) (< length-1 0) (< length-2 0)) (make-source-location (source-location-input src-location-1) (source-location-line src-location-1) (source-location-column src-location-1) -1 -1)) ((<= offset-1 offset-2) (make-source-location (source-location-input src-location-1) (source-location-line src-location-1) (source-location-column src-location-1) offset-1 (- (+ offset-2 length-2) offset-1))) (else (make-source-location (source-location-input src-location-1) (source-location-line src-location-1) (source-location-column src-location-1) offset-2 (- (+ offset-1 length-1) offset-2)))))) ;;; ;;;; LR-driver ;;; (define *max-stack-size* 500) (define (lr-driver action-table goto-table reduction-table) (define ___atable action-table) (define ___gtable goto-table) (define ___rtable reduction-table) (define ___lexerp #f) (define ___errorp #f) (define ___stack #f) (define ___sp 0) (define ___curr-input #f) (define ___reuse-input #f) (define ___input #f) (define (___consume) (set! ___input (if ___reuse-input ___curr-input (___lexerp))) (set! ___reuse-input #f) (set! ___curr-input ___input)) (define (___pushback) (set! ___reuse-input #t)) (define (___initstack) (set! ___stack (make-vector *max-stack-size* 0)) (set! ___sp 0)) (define (___growstack) (let ((new-stack (make-vector (* 2 (vector-length ___stack)) 0))) (let loop ((i (- (vector-length ___stack) 1))) (if (>= i 0) (begin (vector-set! new-stack i (vector-ref ___stack i)) (loop (- i 1))))) (set! ___stack new-stack))) (define (___checkstack) (if (>= ___sp (vector-length ___stack)) (___growstack))) (define (___push delta new-category lvalue) (set! ___sp (- ___sp (* delta 2))) (let* ((state (vector-ref ___stack ___sp)) (new-state (cdr (assoc new-category (vector-ref ___gtable state))))) (set! ___sp (+ ___sp 2)) (___checkstack) (vector-set! ___stack ___sp new-state) (vector-set! ___stack (- ___sp 1) lvalue))) (define (___reduce st) ((vector-ref ___rtable st) ___stack ___sp ___gtable ___push ___pushback)) (define (___shift token attribute) (set! ___sp (+ ___sp 2)) (___checkstack) (vector-set! ___stack (- ___sp 1) attribute) (vector-set! ___stack ___sp token)) (define (___action x l) (let ((y (assoc x l))) (if y (cadr y) (cadar l)))) (define (___recover tok) (let find-state ((sp ___sp)) (if (< sp 0) (set! ___sp sp) (let* ((state (vector-ref ___stack sp)) (act (assoc 'error (vector-ref ___atable state)))) (if act (begin (set! ___sp sp) (___sync (cadr act) tok)) (find-state (- sp 2))))))) (define (___sync state tok) (let ((sync-set (map car (cdr (vector-ref ___atable state))))) (set! ___sp (+ ___sp 4)) (___checkstack) (vector-set! ___stack (- ___sp 3) #f) (vector-set! ___stack (- ___sp 2) state) (let skip () (let ((i (___category ___input))) (if (eq? i '*eoi*) (set! ___sp -1) (if (memq i sync-set) (let ((act (assoc i (vector-ref ___atable state)))) (vector-set! ___stack (- ___sp 1) #f) (vector-set! ___stack ___sp (cadr act))) (begin (___consume) (skip)))))))) (define (___category tok) (if (lexical-token? tok) (lexical-token-category tok) tok)) (define (___value tok) (if (lexical-token? tok) (lexical-token-value tok) tok)) (define (___run) (let loop () (if ___input (let* ((state (vector-ref ___stack ___sp)) (i (___category ___input)) (attr (___value ___input)) (act (___action i (vector-ref ___atable state)))) (cond ((not (symbol? i)) (___errorp "Syntax error: invalid token: " ___input) #f) ;; Input succesfully parsed ((eq? act 'accept) (vector-ref ___stack 1)) ;; Syntax error in input ((eq? act '*error*) (if (eq? i '*eoi*) (begin (___errorp "Syntax error: unexpected end of input") #f) (begin (___errorp "Syntax error: unexpected token : " ___input) (___recover i) (if (>= ___sp 0) (set! ___input #f) (begin (set! ___sp 0) (set! ___input '*eoi*))) (loop)))) ;; Shift current token on top of the stack ((>= act 0) (___shift act attr) (set! ___input (if (eq? i '*eoi*) '*eoi* #f)) (loop)) ;; Reduce by rule (- act) (else (___reduce (- act)) (loop)))) ;; no lookahead, so check if there is a default action ;; that does not require the lookahead (let* ((state (vector-ref ___stack ___sp)) (acts (vector-ref ___atable state)) (defact (if (pair? acts) (cadar acts) #f))) (if (and (= 1 (length acts)) (< defact 0)) (___reduce (- defact)) (___consume)) (loop))))) (lambda (lexerp errorp) (set! ___errorp errorp) (set! ___lexerp lexerp) (___initstack) (___run))) ;;; ;;;; Simple-minded GLR-driver ;;; (define (glr-driver action-table goto-table reduction-table) (define ___atable action-table) (define ___gtable goto-table) (define ___rtable reduction-table) (define ___lexerp #f) (define ___errorp #f) ;; -- Input handling (define *input* #f) (define (initialize-lexer lexer) (set! ___lexerp lexer) (set! *input* #f)) (define (consume) (set! *input* (___lexerp))) (define (token-category tok) (if (lexical-token? tok) (lexical-token-category tok) tok)) (define (token-attribute tok) (if (lexical-token? tok) (lexical-token-value tok) tok)) ;; -- Processes (stacks) handling (define *processes* '()) (define (initialize-processes) (set! *processes* '())) (define (add-process process) (set! *processes* (cons process *processes*))) (define (get-processes) (reverse *processes*)) (define (for-all-processes proc) (let ((processes (get-processes))) (initialize-processes) (for-each proc processes))) ;; -- parses (define *parses* '()) (define (get-parses) *parses*) (define (initialize-parses) (set! *parses* '())) (define (add-parse parse) (set! *parses* (cons parse *parses*))) (define (push delta new-category lvalue stack) (let* ((stack (drop stack (* delta 2))) (state (car stack)) (new-state (cdr (assv new-category (vector-ref ___gtable state))))) (cons new-state (cons lvalue stack)))) (define (reduce state stack) ((vector-ref ___rtable state) stack ___gtable push)) (define (shift state symbol stack) (cons state (cons symbol stack))) (define (get-actions token action-list) (let ((pair (assoc token action-list))) (if pair (cdr pair) (cdar action-list)))) ;; get the default action (define (run) (let loop-tokens () (consume) (let ((symbol (token-category *input*)) (attr (token-attribute *input*))) (for-all-processes (lambda (process) (let loop ((stacks (list process)) (active-stacks '())) (cond ((pair? stacks) (let* ((stack (car stacks)) (state (car stack))) (let actions-loop ((actions (get-actions symbol (vector-ref ___atable state))) (active-stacks active-stacks)) (if (pair? actions) (let ((action (car actions)) (other-actions (cdr actions))) (cond ((eq? action '*error*) (actions-loop other-actions active-stacks)) ((eq? action 'accept) (add-parse (car (take-right stack 2))) (actions-loop other-actions active-stacks)) ((>= action 0) (let ((new-stack (shift action attr stack))) (add-process new-stack)) (actions-loop other-actions active-stacks)) (else (let ((new-stack (reduce (- action) stack))) (actions-loop other-actions (cons new-stack active-stacks)))))) (loop (cdr stacks) active-stacks))))) ((pair? active-stacks) (loop (reverse active-stacks) '()))))))) (if (pair? (get-processes)) (loop-tokens)))) (lambda (lexerp errorp) (set! ___errorp errorp) (initialize-lexer lexerp) (initialize-processes) (initialize-parses) (add-process '(0)) (run) (get-parses))) (define (drop l n) (cond ((and (> n 0) (pair? l)) (drop (cdr l) (- n 1))) (else l))) (define (take-right l n) (drop l (- (length l) n)))denemo-2.2.0/actions/PaxHeaders.19168/multilex.scm0000644000000000000000000000013213135434036016540 xustar0030 mtime=1500919838.039981806 30 atime=1500919925.773315139 30 ctime=1500919912.906648472 denemo-2.2.0/actions/multilex.scm0000644000175000017500000011650313135434036020417 0ustar00jjbenhamjjbenham00000000000000; SILex - Scheme Implementation of Lex ; Copyright (C) 2001 Danny Dube' ; ; This program is free software; you can redistribute it and/or ; modify it under the terms of the GNU General Public License ; as published by the Free Software Foundation; either version 2 ; of the License, or (at your option) any later version. ; ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with this program; if not, write to the Free Software ; Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA ; ; Gestion des Input Systems ; Fonctions a utiliser par l'usager: ; lexer-make-IS, lexer-get-func-getc, lexer-get-func-ungetc, ; lexer-get-func-line, lexer-get-func-column et lexer-get-func-offset ; ; Taille initiale par defaut du buffer d'entree (define lexer-init-buffer-len 1024) ; Numero du caractere newline (define lexer-integer-newline (char->integer #\newline)) ; Constructeur d'IS brut (define lexer-raw-IS-maker (lambda (buffer read-ptr input-f counters) (let ((input-f input-f) ; Entree reelle (buffer buffer) ; Buffer (buflen (string-length buffer)) (read-ptr read-ptr) (start-ptr 1) ; Marque de debut de lexeme (start-line 1) (start-column 1) (start-offset 0) (end-ptr 1) ; Marque de fin de lexeme (point-ptr 1) ; Le point (user-ptr 1) ; Marque de l'usager (user-line 1) (user-column 1) (user-offset 0) (user-up-to-date? #t)) ; Concerne la colonne seul. (letrec ((start-go-to-end-none ; Fonctions de depl. des marques (lambda () (set! start-ptr end-ptr))) (start-go-to-end-line (lambda () (let loop ((ptr start-ptr) (line start-line)) (if (= ptr end-ptr) (begin (set! start-ptr ptr) (set! start-line line)) (if (char=? (string-ref buffer ptr) #\newline) (loop (+ ptr 1) (+ line 1)) (loop (+ ptr 1) line)))))) (start-go-to-end-all (lambda () (set! start-offset (+ start-offset (- end-ptr start-ptr))) (let loop ((ptr start-ptr) (line start-line) (column start-column)) (if (= ptr end-ptr) (begin (set! start-ptr ptr) (set! start-line line) (set! start-column column)) (if (char=? (string-ref buffer ptr) #\newline) (loop (+ ptr 1) (+ line 1) 1) (loop (+ ptr 1) line (+ column 1))))))) (start-go-to-user-none (lambda () (set! start-ptr user-ptr))) (start-go-to-user-line (lambda () (set! start-ptr user-ptr) (set! start-line user-line))) (start-go-to-user-all (lambda () (set! start-line user-line) (set! start-offset user-offset) (if user-up-to-date? (begin (set! start-ptr user-ptr) (set! start-column user-column)) (let loop ((ptr start-ptr) (column start-column)) (if (= ptr user-ptr) (begin (set! start-ptr ptr) (set! start-column column)) (if (char=? (string-ref buffer ptr) #\newline) (loop (+ ptr 1) 1) (loop (+ ptr 1) (+ column 1)))))))) (end-go-to-point (lambda () (set! end-ptr point-ptr))) (point-go-to-start (lambda () (set! point-ptr start-ptr))) (user-go-to-start-none (lambda () (set! user-ptr start-ptr))) (user-go-to-start-line (lambda () (set! user-ptr start-ptr) (set! user-line start-line))) (user-go-to-start-all (lambda () (set! user-ptr start-ptr) (set! user-line start-line) (set! user-column start-column) (set! user-offset start-offset) (set! user-up-to-date? #t))) (init-lexeme-none ; Debute un nouveau lexeme (lambda () (if (< start-ptr user-ptr) (start-go-to-user-none)) (point-go-to-start))) (init-lexeme-line (lambda () (if (< start-ptr user-ptr) (start-go-to-user-line)) (point-go-to-start))) (init-lexeme-all (lambda () (if (< start-ptr user-ptr) (start-go-to-user-all)) (point-go-to-start))) (get-start-line ; Obtention des stats du debut du lxm (lambda () start-line)) (get-start-column (lambda () start-column)) (get-start-offset (lambda () start-offset)) (peek-left-context ; Obtention de caracteres (#f si EOF) (lambda () (char->integer (string-ref buffer (- start-ptr 1))))) (peek-char (lambda () (if (< point-ptr read-ptr) (char->integer (string-ref buffer point-ptr)) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer point-ptr c) (set! read-ptr (+ point-ptr 1)) (char->integer c)) (begin (set! input-f (lambda () 'eof)) #f)))))) (read-char (lambda () (if (< point-ptr read-ptr) (let ((c (string-ref buffer point-ptr))) (set! point-ptr (+ point-ptr 1)) (char->integer c)) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer point-ptr c) (set! read-ptr (+ point-ptr 1)) (set! point-ptr read-ptr) (char->integer c)) (begin (set! input-f (lambda () 'eof)) #f)))))) (get-start-end-text ; Obtention du lexeme (lambda () (substring buffer start-ptr end-ptr))) (get-user-line-line ; Fonctions pour l'usager (lambda () (if (< user-ptr start-ptr) (user-go-to-start-line)) user-line)) (get-user-line-all (lambda () (if (< user-ptr start-ptr) (user-go-to-start-all)) user-line)) (get-user-column-all (lambda () (cond ((< user-ptr start-ptr) (user-go-to-start-all) user-column) (user-up-to-date? user-column) (else (let loop ((ptr start-ptr) (column start-column)) (if (= ptr user-ptr) (begin (set! user-column column) (set! user-up-to-date? #t) column) (if (char=? (string-ref buffer ptr) #\newline) (loop (+ ptr 1) 1) (loop (+ ptr 1) (+ column 1))))))))) (get-user-offset-all (lambda () (if (< user-ptr start-ptr) (user-go-to-start-all)) user-offset)) (user-getc-none (lambda () (if (< user-ptr start-ptr) (user-go-to-start-none)) (if (< user-ptr read-ptr) (let ((c (string-ref buffer user-ptr))) (set! user-ptr (+ user-ptr 1)) c) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer user-ptr c) (set! read-ptr (+ read-ptr 1)) (set! user-ptr read-ptr) c) (begin (set! input-f (lambda () 'eof)) 'eof)))))) (user-getc-line (lambda () (if (< user-ptr start-ptr) (user-go-to-start-line)) (if (< user-ptr read-ptr) (let ((c (string-ref buffer user-ptr))) (set! user-ptr (+ user-ptr 1)) (if (char=? c #\newline) (set! user-line (+ user-line 1))) c) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer user-ptr c) (set! read-ptr (+ read-ptr 1)) (set! user-ptr read-ptr) (if (char=? c #\newline) (set! user-line (+ user-line 1))) c) (begin (set! input-f (lambda () 'eof)) 'eof)))))) (user-getc-all (lambda () (if (< user-ptr start-ptr) (user-go-to-start-all)) (if (< user-ptr read-ptr) (let ((c (string-ref buffer user-ptr))) (set! user-ptr (+ user-ptr 1)) (if (char=? c #\newline) (begin (set! user-line (+ user-line 1)) (set! user-column 1)) (set! user-column (+ user-column 1))) (set! user-offset (+ user-offset 1)) c) (let ((c (input-f))) (if (char? c) (begin (if (= read-ptr buflen) (reorganize-buffer)) (string-set! buffer user-ptr c) (set! read-ptr (+ read-ptr 1)) (set! user-ptr read-ptr) (if (char=? c #\newline) (begin (set! user-line (+ user-line 1)) (set! user-column 1)) (set! user-column (+ user-column 1))) (set! user-offset (+ user-offset 1)) c) (begin (set! input-f (lambda () 'eof)) 'eof)))))) (user-ungetc-none (lambda () (if (> user-ptr start-ptr) (set! user-ptr (- user-ptr 1))))) (user-ungetc-line (lambda () (if (> user-ptr start-ptr) (begin (set! user-ptr (- user-ptr 1)) (let ((c (string-ref buffer user-ptr))) (if (char=? c #\newline) (set! user-line (- user-line 1)))))))) (user-ungetc-all (lambda () (if (> user-ptr start-ptr) (begin (set! user-ptr (- user-ptr 1)) (let ((c (string-ref buffer user-ptr))) (if (char=? c #\newline) (begin (set! user-line (- user-line 1)) (set! user-up-to-date? #f)) (set! user-column (- user-column 1))) (set! user-offset (- user-offset 1))))))) (reorganize-buffer ; Decaler ou agrandir le buffer (lambda () (if (< (* 2 start-ptr) buflen) (let* ((newlen (* 2 buflen)) (newbuf (make-string newlen)) (delta (- start-ptr 1))) (let loop ((from (- start-ptr 1))) (if (< from buflen) (begin (string-set! newbuf (- from delta) (string-ref buffer from)) (loop (+ from 1))))) (set! buffer newbuf) (set! buflen newlen) (set! read-ptr (- read-ptr delta)) (set! start-ptr (- start-ptr delta)) (set! end-ptr (- end-ptr delta)) (set! point-ptr (- point-ptr delta)) (set! user-ptr (- user-ptr delta))) (let ((delta (- start-ptr 1))) (let loop ((from (- start-ptr 1))) (if (< from buflen) (begin (string-set! buffer (- from delta) (string-ref buffer from)) (loop (+ from 1))))) (set! read-ptr (- read-ptr delta)) (set! start-ptr (- start-ptr delta)) (set! end-ptr (- end-ptr delta)) (set! point-ptr (- point-ptr delta)) (set! user-ptr (- user-ptr delta))))))) (list (cons 'start-go-to-end (cond ((eq? counters 'none) start-go-to-end-none) ((eq? counters 'line) start-go-to-end-line) ((eq? counters 'all ) start-go-to-end-all))) (cons 'end-go-to-point end-go-to-point) (cons 'init-lexeme (cond ((eq? counters 'none) init-lexeme-none) ((eq? counters 'line) init-lexeme-line) ((eq? counters 'all ) init-lexeme-all))) (cons 'get-start-line get-start-line) (cons 'get-start-column get-start-column) (cons 'get-start-offset get-start-offset) (cons 'peek-left-context peek-left-context) (cons 'peek-char peek-char) (cons 'read-char read-char) (cons 'get-start-end-text get-start-end-text) (cons 'get-user-line (cond ((eq? counters 'none) #f) ((eq? counters 'line) get-user-line-line) ((eq? counters 'all ) get-user-line-all))) (cons 'get-user-column (cond ((eq? counters 'none) #f) ((eq? counters 'line) #f) ((eq? counters 'all ) get-user-column-all))) (cons 'get-user-offset (cond ((eq? counters 'none) #f) ((eq? counters 'line) #f) ((eq? counters 'all ) get-user-offset-all))) (cons 'user-getc (cond ((eq? counters 'none) user-getc-none) ((eq? counters 'line) user-getc-line) ((eq? counters 'all ) user-getc-all))) (cons 'user-ungetc (cond ((eq? counters 'none) user-ungetc-none) ((eq? counters 'line) user-ungetc-line) ((eq? counters 'all ) user-ungetc-all)))))))) ; Construit un Input System ; Le premier parametre doit etre parmi "port", "procedure" ou "string" ; Prend un parametre facultatif qui doit etre parmi ; "none", "line" ou "all" (define lexer-make-IS (lambda (input-type input . largs) (let ((counters-type (cond ((null? largs) 'line) ((memq (car largs) '(none line all)) (car largs)) (else 'line)))) (cond ((and (eq? input-type 'port) (input-port? input)) (let* ((buffer (make-string lexer-init-buffer-len #\newline)) (read-ptr 1) (input-f (lambda () (read-char input)))) (lexer-raw-IS-maker buffer read-ptr input-f counters-type))) ((and (eq? input-type 'procedure) (procedure? input)) (let* ((buffer (make-string lexer-init-buffer-len #\newline)) (read-ptr 1) (input-f input)) (lexer-raw-IS-maker buffer read-ptr input-f counters-type))) ((and (eq? input-type 'string) (string? input)) (let* ((buffer (string-append (string #\newline) input)) (read-ptr (string-length buffer)) (input-f (lambda () 'eof))) (lexer-raw-IS-maker buffer read-ptr input-f counters-type))) (else (let* ((buffer (string #\newline)) (read-ptr 1) (input-f (lambda () 'eof))) (lexer-raw-IS-maker buffer read-ptr input-f counters-type))))))) ; Les fonctions: ; lexer-get-func-getc, lexer-get-func-ungetc, ; lexer-get-func-line, lexer-get-func-column et lexer-get-func-offset (define lexer-get-func-getc (lambda (IS) (cdr (assq 'user-getc IS)))) (define lexer-get-func-ungetc (lambda (IS) (cdr (assq 'user-ungetc IS)))) (define lexer-get-func-line (lambda (IS) (cdr (assq 'get-user-line IS)))) (define lexer-get-func-column (lambda (IS) (cdr (assq 'get-user-column IS)))) (define lexer-get-func-offset (lambda (IS) (cdr (assq 'get-user-offset IS)))) ; ; Gestion des lexers ; ; Fabrication de lexer a partir d'arbres de decision (define lexer-make-tree-lexer (lambda (tables IS) (letrec (; Contenu de la table (counters-type (vector-ref tables 0)) (<>-pre-action (vector-ref tables 1)) (<>-pre-action (vector-ref tables 2)) (rules-pre-actions (vector-ref tables 3)) (table-nl-start (vector-ref tables 5)) (table-no-nl-start (vector-ref tables 6)) (trees-v (vector-ref tables 7)) (acc-v (vector-ref tables 8)) ; Contenu du IS (IS-start-go-to-end (cdr (assq 'start-go-to-end IS))) (IS-end-go-to-point (cdr (assq 'end-go-to-point IS))) (IS-init-lexeme (cdr (assq 'init-lexeme IS))) (IS-get-start-line (cdr (assq 'get-start-line IS))) (IS-get-start-column (cdr (assq 'get-start-column IS))) (IS-get-start-offset (cdr (assq 'get-start-offset IS))) (IS-peek-left-context (cdr (assq 'peek-left-context IS))) (IS-peek-char (cdr (assq 'peek-char IS))) (IS-read-char (cdr (assq 'read-char IS))) (IS-get-start-end-text (cdr (assq 'get-start-end-text IS))) (IS-get-user-line (cdr (assq 'get-user-line IS))) (IS-get-user-column (cdr (assq 'get-user-column IS))) (IS-get-user-offset (cdr (assq 'get-user-offset IS))) (IS-user-getc (cdr (assq 'user-getc IS))) (IS-user-ungetc (cdr (assq 'user-ungetc IS))) ; Resultats (<>-action #f) (<>-action #f) (rules-actions #f) (states #f) (final-lexer #f) ; Gestion des hooks (hook-list '()) (add-hook (lambda (thunk) (set! hook-list (cons thunk hook-list)))) (apply-hooks (lambda () (let loop ((l hook-list)) (if (pair? l) (begin ((car l)) (loop (cdr l))))))) ; Preparation des actions (set-action-statics (lambda (pre-action) (pre-action final-lexer IS-user-getc IS-user-ungetc))) (prepare-special-action-none (lambda (pre-action) (let ((action #f)) (let ((result (lambda () (action ""))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-special-action-line (lambda (pre-action) (let ((action #f)) (let ((result (lambda (yyline) (action "" yyline))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-special-action-all (lambda (pre-action) (let ((action #f)) (let ((result (lambda (yyline yycolumn yyoffset) (action "" yyline yycolumn yyoffset))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-special-action (lambda (pre-action) (cond ((eq? counters-type 'none) (prepare-special-action-none pre-action)) ((eq? counters-type 'line) (prepare-special-action-line pre-action)) ((eq? counters-type 'all) (prepare-special-action-all pre-action))))) (prepare-action-yytext-none (lambda (pre-action) (let ((get-start-end-text IS-get-start-end-text) (start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda () (let ((yytext (get-start-end-text))) (start-go-to-end) (action yytext)))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-yytext-line (lambda (pre-action) (let ((get-start-end-text IS-get-start-end-text) (start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda (yyline) (let ((yytext (get-start-end-text))) (start-go-to-end) (action yytext yyline)))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-yytext-all (lambda (pre-action) (let ((get-start-end-text IS-get-start-end-text) (start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda (yyline yycolumn yyoffset) (let ((yytext (get-start-end-text))) (start-go-to-end) (action yytext yyline yycolumn yyoffset)))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-yytext (lambda (pre-action) (cond ((eq? counters-type 'none) (prepare-action-yytext-none pre-action)) ((eq? counters-type 'line) (prepare-action-yytext-line pre-action)) ((eq? counters-type 'all) (prepare-action-yytext-all pre-action))))) (prepare-action-no-yytext-none (lambda (pre-action) (let ((start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda () (start-go-to-end) (action))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-no-yytext-line (lambda (pre-action) (let ((start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda (yyline) (start-go-to-end) (action yyline))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-no-yytext-all (lambda (pre-action) (let ((start-go-to-end IS-start-go-to-end) (action #f)) (let ((result (lambda (yyline yycolumn yyoffset) (start-go-to-end) (action yyline yycolumn yyoffset))) (hook (lambda () (set! action (set-action-statics pre-action))))) (add-hook hook) result)))) (prepare-action-no-yytext (lambda (pre-action) (cond ((eq? counters-type 'none) (prepare-action-no-yytext-none pre-action)) ((eq? counters-type 'line) (prepare-action-no-yytext-line pre-action)) ((eq? counters-type 'all) (prepare-action-no-yytext-all pre-action))))) ; Fabrique les fonctions de dispatch (prepare-dispatch-err (lambda (leaf) (lambda (c) #f))) (prepare-dispatch-number (lambda (leaf) (let ((state-function #f)) (let ((result (lambda (c) state-function)) (hook (lambda () (set! state-function (vector-ref states leaf))))) (add-hook hook) result)))) (prepare-dispatch-leaf (lambda (leaf) (if (eq? leaf 'err) (prepare-dispatch-err leaf) (prepare-dispatch-number leaf)))) (prepare-dispatch-< (lambda (tree) (let ((left-tree (list-ref tree 1)) (right-tree (list-ref tree 2))) (let ((bound (list-ref tree 0)) (left-func (prepare-dispatch-tree left-tree)) (right-func (prepare-dispatch-tree right-tree))) (lambda (c) (if (< c bound) (left-func c) (right-func c))))))) (prepare-dispatch-= (lambda (tree) (let ((left-tree (list-ref tree 2)) (right-tree (list-ref tree 3))) (let ((bound (list-ref tree 1)) (left-func (prepare-dispatch-tree left-tree)) (right-func (prepare-dispatch-tree right-tree))) (lambda (c) (if (= c bound) (left-func c) (right-func c))))))) (prepare-dispatch-tree (lambda (tree) (cond ((not (pair? tree)) (prepare-dispatch-leaf tree)) ((eq? (car tree) '=) (prepare-dispatch-= tree)) (else (prepare-dispatch-< tree))))) (prepare-dispatch (lambda (tree) (let ((dicho-func (prepare-dispatch-tree tree))) (lambda (c) (and c (dicho-func c)))))) ; Fabrique les fonctions de transition (read & go) et (abort) (prepare-read-n-go (lambda (tree) (let ((dispatch-func (prepare-dispatch tree)) (read-char IS-read-char)) (lambda () (dispatch-func (read-char)))))) (prepare-abort (lambda (tree) (lambda () #f))) (prepare-transition (lambda (tree) (if (eq? tree 'err) (prepare-abort tree) (prepare-read-n-go tree)))) ; Fabrique les fonctions d'etats ([set-end] & trans) (prepare-state-no-acc (lambda (s r1 r2) (let ((trans-func (prepare-transition (vector-ref trees-v s)))) (lambda (action) (let ((next-state (trans-func))) (if next-state (next-state action) action)))))) (prepare-state-yes-no (lambda (s r1 r2) (let ((peek-char IS-peek-char) (end-go-to-point IS-end-go-to-point) (new-action1 #f) (trans-func (prepare-transition (vector-ref trees-v s)))) (let ((result (lambda (action) (let* ((c (peek-char)) (new-action (if (or (not c) (= c lexer-integer-newline)) (begin (end-go-to-point) new-action1) action)) (next-state (trans-func))) (if next-state (next-state new-action) new-action)))) (hook (lambda () (set! new-action1 (vector-ref rules-actions r1))))) (add-hook hook) result)))) (prepare-state-diff-acc (lambda (s r1 r2) (let ((end-go-to-point IS-end-go-to-point) (peek-char IS-peek-char) (new-action1 #f) (new-action2 #f) (trans-func (prepare-transition (vector-ref trees-v s)))) (let ((result (lambda (action) (end-go-to-point) (let* ((c (peek-char)) (new-action (if (or (not c) (= c lexer-integer-newline)) new-action1 new-action2)) (next-state (trans-func))) (if next-state (next-state new-action) new-action)))) (hook (lambda () (set! new-action1 (vector-ref rules-actions r1)) (set! new-action2 (vector-ref rules-actions r2))))) (add-hook hook) result)))) (prepare-state-same-acc (lambda (s r1 r2) (let ((end-go-to-point IS-end-go-to-point) (trans-func (prepare-transition (vector-ref trees-v s))) (new-action #f)) (let ((result (lambda (action) (end-go-to-point) (let ((next-state (trans-func))) (if next-state (next-state new-action) new-action)))) (hook (lambda () (set! new-action (vector-ref rules-actions r1))))) (add-hook hook) result)))) (prepare-state (lambda (s) (let* ((acc (vector-ref acc-v s)) (r1 (car acc)) (r2 (cdr acc))) (cond ((not r1) (prepare-state-no-acc s r1 r2)) ((not r2) (prepare-state-yes-no s r1 r2)) ((< r1 r2) (prepare-state-diff-acc s r1 r2)) (else (prepare-state-same-acc s r1 r2)))))) ; Fabrique la fonction de lancement du lexage a l'etat de depart (prepare-start-same (lambda (s1 s2) (let ((peek-char IS-peek-char) (eof-action #f) (start-state #f) (error-action #f)) (let ((result (lambda () (if (not (peek-char)) eof-action (start-state error-action)))) (hook (lambda () (set! eof-action <>-action) (set! start-state (vector-ref states s1)) (set! error-action <>-action)))) (add-hook hook) result)))) (prepare-start-diff (lambda (s1 s2) (let ((peek-char IS-peek-char) (eof-action #f) (peek-left-context IS-peek-left-context) (start-state1 #f) (start-state2 #f) (error-action #f)) (let ((result (lambda () (cond ((not (peek-char)) eof-action) ((= (peek-left-context) lexer-integer-newline) (start-state1 error-action)) (else (start-state2 error-action))))) (hook (lambda () (set! eof-action <>-action) (set! start-state1 (vector-ref states s1)) (set! start-state2 (vector-ref states s2)) (set! error-action <>-action)))) (add-hook hook) result)))) (prepare-start (lambda () (let ((s1 table-nl-start) (s2 table-no-nl-start)) (if (= s1 s2) (prepare-start-same s1 s2) (prepare-start-diff s1 s2))))) ; Fabrique la fonction principale (prepare-lexer-none (lambda () (let ((init-lexeme IS-init-lexeme) (start-func (prepare-start))) (lambda () (init-lexeme) ((start-func)))))) (prepare-lexer-line (lambda () (let ((init-lexeme IS-init-lexeme) (get-start-line IS-get-start-line) (start-func (prepare-start))) (lambda () (init-lexeme) (let ((yyline (get-start-line))) ((start-func) yyline)))))) (prepare-lexer-all (lambda () (let ((init-lexeme IS-init-lexeme) (get-start-line IS-get-start-line) (get-start-column IS-get-start-column) (get-start-offset IS-get-start-offset) (start-func (prepare-start))) (lambda () (init-lexeme) (let ((yyline (get-start-line)) (yycolumn (get-start-column)) (yyoffset (get-start-offset))) ((start-func) yyline yycolumn yyoffset)))))) (prepare-lexer (lambda () (cond ((eq? counters-type 'none) (prepare-lexer-none)) ((eq? counters-type 'line) (prepare-lexer-line)) ((eq? counters-type 'all) (prepare-lexer-all)))))) ; Calculer la valeur de <>-action et de <>-action (set! <>-action (prepare-special-action <>-pre-action)) (set! <>-action (prepare-special-action <>-pre-action)) ; Calculer la valeur de rules-actions (let* ((len (quotient (vector-length rules-pre-actions) 2)) (v (make-vector len))) (let loop ((r (- len 1))) (if (< r 0) (set! rules-actions v) (let* ((yytext? (vector-ref rules-pre-actions (* 2 r))) (pre-action (vector-ref rules-pre-actions (+ (* 2 r) 1))) (action (if yytext? (prepare-action-yytext pre-action) (prepare-action-no-yytext pre-action)))) (vector-set! v r action) (loop (- r 1)))))) ; Calculer la valeur de states (let* ((len (vector-length trees-v)) (v (make-vector len))) (let loop ((s (- len 1))) (if (< s 0) (set! states v) (begin (vector-set! v s (prepare-state s)) (loop (- s 1)))))) ; Calculer la valeur de final-lexer (set! final-lexer (prepare-lexer)) ; Executer les hooks (apply-hooks) ; Resultat final-lexer))) ; Fabrication de lexer a partir de listes de caracteres taggees (define lexer-make-char-lexer (let* ((char->class (lambda (c) (let ((n (char->integer c))) (list (cons n n))))) (merge-sort (lambda (l combine zero-elt) (if (null? l) zero-elt (let loop1 ((l l)) (if (null? (cdr l)) (car l) (loop1 (let loop2 ((l l)) (cond ((null? l) l) ((null? (cdr l)) l) (else (cons (combine (car l) (cadr l)) (loop2 (cddr l)))))))))))) (finite-class-union (lambda (c1 c2) (let loop ((c1 c1) (c2 c2) (u '())) (if (null? c1) (if (null? c2) (reverse u) (loop c1 (cdr c2) (cons (car c2) u))) (if (null? c2) (loop (cdr c1) c2 (cons (car c1) u)) (let* ((r1 (car c1)) (r2 (car c2)) (r1start (car r1)) (r1end (cdr r1)) (r2start (car r2)) (r2end (cdr r2))) (if (<= r1start r2start) (cond ((< (+ r1end 1) r2start) (loop (cdr c1) c2 (cons r1 u))) ((<= r1end r2end) (loop (cdr c1) (cons (cons r1start r2end) (cdr c2)) u)) (else (loop c1 (cdr c2) u))) (cond ((> r1start (+ r2end 1)) (loop c1 (cdr c2) (cons r2 u))) ((>= r1end r2end) (loop (cons (cons r2start r1end) (cdr c1)) (cdr c2) u)) (else (loop (cdr c1) c2 u)))))))))) (char-list->class (lambda (cl) (let ((classes (map char->class cl))) (merge-sort classes finite-class-union '())))) (class-< (lambda (b1 b2) (cond ((eq? b1 'inf+) #f) ((eq? b2 'inf-) #f) ((eq? b1 'inf-) #t) ((eq? b2 'inf+) #t) (else (< b1 b2))))) (finite-class-compl (lambda (c) (let loop ((c c) (start 'inf-)) (if (null? c) (list (cons start 'inf+)) (let* ((r (car c)) (rstart (car r)) (rend (cdr r))) (if (class-< start rstart) (cons (cons start (- rstart 1)) (loop c rstart)) (loop (cdr c) (+ rend 1)))))))) (tagged-chars->class (lambda (tcl) (let* ((inverse? (car tcl)) (cl (cdr tcl)) (class-tmp (char-list->class cl))) (if inverse? (finite-class-compl class-tmp) class-tmp)))) (charc->arc (lambda (charc) (let* ((tcl (car charc)) (dest (cdr charc)) (class (tagged-chars->class tcl))) (cons class dest)))) (arc->sharcs (lambda (arc) (let* ((range-l (car arc)) (dest (cdr arc)) (op (lambda (range) (cons range dest)))) (map op range-l)))) (class-<= (lambda (b1 b2) (cond ((eq? b1 'inf-) #t) ((eq? b2 'inf+) #t) ((eq? b1 'inf+) #f) ((eq? b2 'inf-) #f) (else (<= b1 b2))))) (sharc-<= (lambda (sharc1 sharc2) (class-<= (caar sharc1) (caar sharc2)))) (merge-sharcs (lambda (l1 l2) (let loop ((l1 l1) (l2 l2)) (cond ((null? l1) l2) ((null? l2) l1) (else (let ((sharc1 (car l1)) (sharc2 (car l2))) (if (sharc-<= sharc1 sharc2) (cons sharc1 (loop (cdr l1) l2)) (cons sharc2 (loop l1 (cdr l2)))))))))) (class-= eqv?) (fill-error (lambda (sharcs) (let loop ((sharcs sharcs) (start 'inf-)) (cond ((class-= start 'inf+) '()) ((null? sharcs) (cons (cons (cons start 'inf+) 'err) (loop sharcs 'inf+))) (else (let* ((sharc (car sharcs)) (h (caar sharc)) (t (cdar sharc))) (if (class-< start h) (cons (cons (cons start (- h 1)) 'err) (loop sharcs h)) (cons sharc (loop (cdr sharcs) (if (class-= t 'inf+) 'inf+ (+ t 1))))))))))) (charcs->tree (lambda (charcs) (let* ((op (lambda (charc) (arc->sharcs (charc->arc charc)))) (sharcs-l (map op charcs)) (sorted-sharcs (merge-sort sharcs-l merge-sharcs '())) (full-sharcs (fill-error sorted-sharcs)) (op (lambda (sharc) (cons (caar sharc) (cdr sharc)))) (table (list->vector (map op full-sharcs)))) (let loop ((left 0) (right (- (vector-length table) 1))) (if (= left right) (cdr (vector-ref table left)) (let ((mid (quotient (+ left right 1) 2))) (if (and (= (+ left 2) right) (= (+ (car (vector-ref table mid)) 1) (car (vector-ref table right))) (eqv? (cdr (vector-ref table left)) (cdr (vector-ref table right)))) (list '= (car (vector-ref table mid)) (cdr (vector-ref table mid)) (cdr (vector-ref table left))) (list (car (vector-ref table mid)) (loop left (- mid 1)) (loop mid right)))))))))) (lambda (tables IS) (let ((counters (vector-ref tables 0)) (<>-action (vector-ref tables 1)) (<>-action (vector-ref tables 2)) (rules-actions (vector-ref tables 3)) (nl-start (vector-ref tables 5)) (no-nl-start (vector-ref tables 6)) (charcs-v (vector-ref tables 7)) (acc-v (vector-ref tables 8))) (let* ((len (vector-length charcs-v)) (v (make-vector len))) (let loop ((i (- len 1))) (if (>= i 0) (begin (vector-set! v i (charcs->tree (vector-ref charcs-v i))) (loop (- i 1))) (lexer-make-tree-lexer (vector counters <>-action <>-action rules-actions 'decision-trees nl-start no-nl-start v acc-v) IS)))))))) ; Fabrication d'un lexer a partir de code pre-genere (define lexer-make-code-lexer (lambda (tables IS) (let ((<>-pre-action (vector-ref tables 1)) (<>-pre-action (vector-ref tables 2)) (rules-pre-action (vector-ref tables 3)) (code (vector-ref tables 5))) (code <>-pre-action <>-pre-action rules-pre-action IS)))) (define lexer-make-lexer (lambda (tables IS) (let ((automaton-type (vector-ref tables 4))) (cond ((eq? automaton-type 'decision-trees) (lexer-make-tree-lexer tables IS)) ((eq? automaton-type 'tagged-chars-lists) (lexer-make-char-lexer tables IS)) ((eq? automaton-type 'code) (lexer-make-code-lexer tables IS)))))) denemo-2.2.0/actions/PaxHeaders.19168/LilyPond.shortcuts0000644000000000000000000000013213135434035017702 xustar0030 mtime=1500919837.913315139 30 atime=1500919925.813315139 30 ctime=1500919912.903315138 denemo-2.2.0/actions/LilyPond.shortcuts0000644000175000017500000003510113135434035021553 0ustar00jjbenhamjjbenham00000000000000 A Denemo Command Set AT, JRR, RTS 101 116 102 146 CursorLeft true MoveCursorLeft Left CursorDown Down CursorUp Up CursorRight true MoveCursorRight Right SwapPointAndMark true PushPosition true PopPosition true PopPushPosition true ToggleReduceToDrawingArea Escape StaffUp true StaffDown true MoveToStaffUp Ctrl+Up MoveToStaffDown Ctrl+Down MeasureLeft true MeasureRight true MoveToMeasureLeft Ctrl+Left MoveToMeasureRight Ctrl+Right A a B b C c D d E e F f G g OctaveUp apostrophe OctaveDown comma InsertWholeRest Alt+0 InsertHalfRest Alt+1 InsertQuarterRest Alt+2 InsertEighthRest Alt+3 InsertSixteenthRest Alt+4 InsertThirtysecondRest Alt+5 InsertSixtyfourthRest Alt+6 AddNoteToChord Insert RemoveNoteFromChord Ctrl+Insert Sharpen Add Shft+equal Flatten Subtract minus AddDot Decimal period RemoveDot Ctrl+Decimal Ctrl+period DeleteObject Ctrl+delete DeletePreviousObject BackSpace InsertMeasure m AddMeasure n DeleteMeasure Ctrl+m DeleteMeasureAllStaffs Ctrl+M UnsetMark return ToggleStartCrescendo PrsL-Shift-CapsLock ToggleEndCrescendo RlsL-Shift-CapsLock ToggleStartDiminuendo PrsL-CapsLock-AltGr ToggleEndDiminuendo RlsL-CapsLock-AltGr ToggleStaccato semicolon ToggleTenuto _ ToggleTrill backslash ToggleStaccatissimo Shft+semicolon ToggleArpeggio % SetGrace true ToggleGrace slash InsertRhythm Ctrl+space NextRhythm Shft+space SharpenEnharmonicSet Shft+Add FlattenEnharmonicSet Shft+Subtract Save Ctrl+s SaveAs Ctrl+S NewWindow Ctrl+t PrintPreview Ctrl+p Close Ctrl+w Quit Ctrl+q Undo Ctrl+z Redo Ctrl+Z Copy Ctrl+c Cut Ctrl+x Paste Ctrl+v MoveToVoiceUp Page_Up MoveToVoiceDown Page_Down StaffProperties Alt+Return InsertDynamic Ctrl+d EditObject PrsR GoToMeasure Alt+m GoToBeginning home GoToEnd end MoveToBeginning Home MoveToEnd End NextMovement Shft+Right PreviousMovement Shft+Left Play F5 Stop F6 Help f1 InsertA A AddA Alt+a InsertB B AddB Alt+b InsertC C AddC Alt+c InsertD D AddD Alt+d InsertE E AddE Alt+e InsertF F AddF Alt+f InsertG G AddG Alt+g 0 0 Change0 Shft+0 1 1 Change1 Shft+1 2 2 Change2 Shft+2 3 3 Change3 Shft+3 4 4 Change4 Shft+4 5 5 Change5 Shft+5 6 6 Change6 Shft+6 MoveNoteToCursor MveL-Shift InsertTiedNoteDuration t StartBeam bracketleft EndBeam bracketright Anacrusis u TmbalesStyle true CautionaryAccidental Shft+slash ToggleTripleting Tab DrumGM2Custom true RehearsalMark F9 InsertWholeMeasureRest space FindNextLowerNote Ctrl+f FindEditPoint Alt+Left AddDotSelectionSwitcher true StaccatoSelectionSwitcher true StaccatissimoSelectionSwitcher true TenutoSelectionSwitcher true AccentSelectionSwitcher true ReloadDrumHash true ConvertDrum2GmSingleSelection true SelectStaff true SelectAllStaffs true GraceNoteSwitcher true ToggleCursorHighlight grave IntelligentDelete true SlurTwo 7 ExtendSlur 8 ReduceSlur 9 StagedDelete Delete OpenMyDefaultTemplate Ctrl+n AddDuplicateMeasure Enter NoOp true Tremolo Alt+t OpOne true OpTwo true OpThree true OpFour true OpFive true OpSix true OpSeven true OpEight true OpNine true OpZero true denemo-2.2.0/actions/PaxHeaders.19168/menus0000644000000000000000000000013213135434035015242 xustar0030 mtime=1500919837.969981805 30 atime=1500919914.539981806 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/0000755000175000017500000000000013135434035017170 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/PaxHeaders.19168/ObjectMenu0000644000000000000000000000013213135434036017276 xustar0030 mtime=1500919838.039981806 30 atime=1500919914.539981806 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/0000755000175000017500000000000013135434036021224 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/PaxHeaders.19168/Directives0000644000000000000000000000013213135434150021374 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.539981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/0000755000175000017500000000000013135434150023322 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/InsertDefinedLilyPond.scm0000644000000000000000000000013213135434035026355 xustar0030 mtime=1500919837.976648473 30 atime=1500919925.829981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/InsertDefinedLilyPond.scm0000644000175000017500000000205413135434035030227 0ustar00jjbenhamjjbenham00000000000000;;;InsertDefinedLilyPond (let ((directives '()) (definitions #f) (choice #f)) (define (get-second-line text) (let ((thelist (string-split text #\newline))) (if (> (length thelist) 1) (list-ref thelist 1) ""))) (define (extract-menuitem tag) (define name (get-second-line tag)) (cons name (lambda () (d-DirectivePut-standalone name) (d-DirectivePut-standalone-grob name "TextScript") (d-DirectivePut-standalone-postfix name (string-append "\\" name " ")) (d-DirectivePut-standalone-display name name)(d-DirectivePut-standalone-minpixels name 30)(d-MoveCursorRight)))) (set! directives (GetDefinitionDirectives)) (if (not (null? directives)) (set! definitions (map extract-menuitem directives))) (if definitions (set! choice (d-PopupMenu definitions)) (d-WarningDialog (_ "No Definitions have been created for this score"))) (if choice (begin (choice) (d-RefreshDisplay) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/CriticalComment.scm0000644000000000000000000000013213135434035025234 xustar0030 mtime=1500919837.976648473 30 atime=1500919925.839981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/CriticalComment.scm0000644000175000017500000000240413135434035027105 0ustar00jjbenhamjjbenham00000000000000;; CriticalComment (let* ((tag "CriticalComment") (lilypond "") ( current (d-DirectiveGet-standalone-data tag)) ( position (GetPosition))) (if (not current) ;;;backward compatibilty (begin (set! current (d-DirectiveGet-standalone-display tag)) (if current (set! current (substring current (string-length (GetNthLine current 0))))))) (let script ((answer (d-GetUserInputWithSnippets (_ "Critical Comment") (_ "Give Comment") (if current current "") #f ))) (if answer (begin (set! lilypond (cdr answer)) (set! answer (car answer)) (if (not (PositionEqual? position (GetPosition))) (begin (if (not (equal? (_ "y") (d-GetUserInput (_ "Cursor has Moved") (_ "Apply Command to new position of cursor?") (_ "y")))) (apply d-GoToPosition position)))))) (if (and answer (not (string=? answer ""))) (begin (d-Directive-score "CriticalCommentsAmended") (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-override tag (logior DENEMO_OVERRIDE_HIDDEN DENEMO_OVERRIDE_EDITOR)) (d-DirectivePut-standalone-display tag (_ "Critical Comment")) (d-DirectivePut-standalone-data tag answer) (d-DirectivePut-standalone-postfix tag lilypond) (d-RefreshDisplay) (d-SetSaved #f)) #f))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/InsertDefinedLilyPond.xml0000644000000000000000000000013213135434035026373 xustar0030 mtime=1500919837.976648473 30 atime=1500919925.839981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/InsertDefinedLilyPond.xml0000644000175000017500000000076213135434035030251 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertStandaloneDirective InsertDefinedLilyPond <_label>Menu of Objects to Insert <_tooltip>Gives a menu of previously created LilyPondDefinition commands (see Score->LilyPond Definition menu for this) denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/Typesetter0000644000000000000000000000013213135434150023544 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.539981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/0000755000175000017500000000000013135434150025472 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/MeasureCountDelimeter.x0000644000000000000000000000013213135434035030261 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.839981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/MeasureCountDelimeter.xml0000644000175000017500000000103213135434035032457 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MeasureCountDelimeter SetBarNumber <_label>Measure Count Start or End <_tooltip>Inserts a directive to start or stop the printing of a counter above each measure. Use for repeated measures to assist the performer count the number of repetitions. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/MMRExpandLimit.scm0000644000000000000000000000013213135434035027121 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.846648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/MMRExpandLimit.scm0000644000175000017500000000140213135434035030767 0ustar00jjbenhamjjbenham00000000000000;;;MMRExpandLimit (let ((tag "MMRExpandLimit") (limit #f)) (if (d-Directive-standalone? tag) (set! limit (d-DirectiveGet-standalone-data tag))) (if (not limit) (set! limit "10")) (set! limit (d-GetUserInput (_ "Multi-Measure Rests") (_ "Give limit for use of church rests") limit)) (if (and limit (string->number limit)) (begin (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag)) (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-display tag (_ "MMR Limit")) (d-DirectivePut-standalone-postfix tag (string-append "\\override MultiMeasureRest #'expand-limit = #" limit " ")) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-data tag limit) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/HideStems.scm0000644000000000000000000000013213135434035026214 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.846648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/HideStems.scm0000644000175000017500000000061613135434035030070 0ustar00jjbenhamjjbenham00000000000000;;;HideStems (let ((tag "HideStems")) (if (d-Directive-standalone? tag) (d-InfoDialog (_ "This directive turns off stems")) (begin (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-postfix tag "\\hide Staff.Stem ") (d-DirectivePut-standalone-graphic tag "\n|x\nDenemo\n20") (d-DirectivePut-standalone-minpixels tag 20) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/SmallFontStart.scm0000644000000000000000000000013213135434035027244 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.846648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/SmallFontStart.scm0000644000175000017500000000027113135434035031115 0ustar00jjbenhamjjbenham00000000000000;;;SmallFontStart (StandAloneDirectiveProto (cons "SmallFontStart" "% Start small notes \\override NoteHead #'font-size = #-4 \\override Accidental #'font-size = #-4 ") #t "\nt") denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/HideStems.xml0000644000000000000000000000013213135434035026232 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.846648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/HideStems.xml0000644000175000017500000000057613135434035030113 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HideStems BeamingOn <_label>Hide Stems <_tooltip>Hides stems on notes from this point on. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/TypesettingOff.scm0000644000000000000000000000013213135434035027301 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.846648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/TypesettingOff.scm0000644000175000017500000000020313135434035031145 0ustar00jjbenhamjjbenham00000000000000 (StandAloneDirectiveProto (cons "TypesetOff" " \\set Score.skipTypesetting = ##t ")) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/ShiftNext.scm0000644000000000000000000000013213135434035026243 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.853315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/ShiftNext.scm0000644000175000017500000000104013135434035030107 0ustar00jjbenhamjjbenham00000000000000;;ShiftNext (let (( lilytype (GetTypeAsLilypond))) (if lilytype (let (( lilycontext (GetContextAsLilypond)) ( X (d-GetUserInput (_ "X-Y shift") (_ "Give horizontal shift required") "1.5")) ( Y (d-GetUserInput (_ "X-Y shift") (_ "Give vertical shift required") "0.0"))) (if (and X Y) (StandAloneDirectiveProto (cons "ShiftNext" (string-append "\\once \\override " lilycontext "." lilytype " #'extra-offset = #'(" X " . " Y")" ))) #f)) (d-WarningDialog (_ "This type of object cannot be shifted by this method")))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/BeamingOn.xml0000644000000000000000000000013213135434035026204 xustar0030 mtime=1500919837.979981805 30 atime=1500919925.853315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/BeamingOn.xml0000644000175000017500000000066313135434035030062 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BeamingOff BeamingOn <_label>Start Beaming <_tooltip>(Print) Start automatic beaming at this point in score. (Used after turning beaming off). denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/SmallFontEnd.scm0000644000000000000000000000013213135434035026655 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.853315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/SmallFontEnd.scm0000644000175000017500000000027713135434035030534 0ustar00jjbenhamjjbenham00000000000000;;;SmallFontEnd (StandAloneDirectiveProto (cons "SmallFontEnd" "%Restore normal note size \\revert NoteHead #'font-size \\revert Accidental #'font-size ") #t "\ns") denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/SmallFontEnd.xml0000644000000000000000000000013213135434035026673 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.853315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/SmallFontEnd.xml0000644000175000017500000000060513135434035030545 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SmallFontStart SmallFontEnd <_label>End Small Size <_tooltip>Printing resumes normal size music. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/TypesettingOff.xml0000644000000000000000000000013213135434035027317 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.853315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/TypesettingOff.xml0000644000175000017500000000056413135434035031175 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TypesettingOff <_label>TypesettingOff <_tooltip>Turns off typesetting from that point until turned on. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/ShowStems.scm0000644000000000000000000000013213135434035026263 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.863315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/ShowStems.scm0000644000175000017500000000064513135434035030141 0ustar00jjbenhamjjbenham00000000000000;;;ShowStems (let ((tag "ShowStems")) (if (d-Directive-standalone? tag) (d-InfoDialog (_ "This directive turns on typesetting of stems on notes.")) (begin (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-postfix tag "\\undo \\hide Staff.Stem ") (d-DirectivePut-standalone-graphic tag "\n|\nDenemo\n20") (d-DirectivePut-standalone-minpixels tag 20) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/NewSpacing.scm0000644000000000000000000000013213135434035026365 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.863315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/NewSpacing.scm0000644000175000017500000000162513135434035030242 0ustar00jjbenhamjjbenham00000000000000;;;NewSpacing (let* ((tag "NewSpacing")(params NewSpacing::params)(count (d-DirectiveGet-standalone-data tag))) (if (not count) (set! count "4")) (set! count (d-GetUserInput (_ "Spacing") (_ "Give new spacing: ") count)) (if (and (string? count) (string->number count)) (begin (d-SetSaved #f) (StandAloneDirectiveProto (cons tag (string-append "\\newSpacingSection\n\\override Score.SpacingSpanner.spacing-increment = #" count "\n")) #f "\n<-\nDenemo\n48") (d-DirectivePut-standalone-data tag count)) (begin (if (d-Directive-standalone? tag) (d-InfoDialog (_ "To restore the prevailing music spacing delete this directive object.")) (d-InfoDialog (_ "Note spacing unaltered.")))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/StartStaff.xml0000644000000000000000000000013213135434035026426 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.863315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/StartStaff.xml0000644000175000017500000000063013135434035030276 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StopStaff StartStaff <_label>(Print) Start Drawing Staff (Again) <_tooltip>Reverts the "Stop Drawing Staff" command denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/BeamingOff.xml0000644000000000000000000000013213135434035026342 xustar0030 mtime=1500919837.979981805 30 atime=1500919925.863315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/BeamingOff.xml0000644000175000017500000000062713135434035030220 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PageBreak BeamingOff <_label>Stop Beaming <_tooltip>(Print) Stop automatic beaming from current position in score. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/RevertSpacing.xml0000644000000000000000000000013213135434035027121 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.863315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/RevertSpacing.xml0000644000175000017500000000062213135434035030772 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RevertSpacing NewSpacing <_label>Revert Spacing <_tooltip>Spaces notes from cursor onwards in default manner. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/HideNotes.scm0000644000000000000000000000013213135434035026211 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.869981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/HideNotes.scm0000644000175000017500000000007413135434035030063 0ustar00jjbenhamjjbenham00000000000000(StandAloneDirectiveProto (cons "HideNotes" "\\hideNotes" ))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/ShowStems.xml0000644000000000000000000000013213135434035026301 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.869981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/ShowStems.xml0000644000175000017500000000061413135434035030153 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShowStems HideStems <_label>Show Stems <_tooltip>This directive turns on typesetting of stems on notes. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/InstallCue.xml0000644000000000000000000000013213135434035026410 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.869981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/InstallCue.xml0000644000175000017500000000100213135434035030252 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StartCue AutoAccidentals <_label>Install Cue <_tooltip>Starts quoting music from another staff as a cue. The end cue marker is placed at the end of the measure, but can be moved with cut and paste to the desired position. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/RevertSpacing.scm0000644000000000000000000000013213135434035027103 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.869981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/RevertSpacing.scm0000644000175000017500000000074113135434035030756 0ustar00jjbenhamjjbenham00000000000000;;;RevertSpacing (let ((tag "RevertSpacing")) (d-SetSaved #f) (if (d-Directive-standalone? tag) (begin (d-DirectiveDelete-standalone tag) (d-NewSpacing #f)) (begin (if (d-Directive-standalone? "NewSpacing") (d-DirectiveDelete-standalone "NewSpacing") (StandAloneDirectiveProto (cons tag "\\newSpacingSection\n\\revert Score.SpacingSpanner.spacing-increment\n") #f "\n->\nDenemo\n48"))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/SmallFontStart.xml0000644000000000000000000000013213135434035027262 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.873315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/SmallFontStart.xml0000644000175000017500000000054613135434035031140 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SmallFontStart <_label>Small Size <_tooltip>Music after this is printed in a small size. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/PrintLayout0000644000000000000000000000013213135434150026036 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.539981806 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/0000755000175000017500000000000013135434150027764 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/PaxHeaders.19168/NoLineBreak0000644000000000000000000000013213135434035030171 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.873315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/NoLineBreak.xml0000644000175000017500000000060113135434035032636 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LineBreak NoLineBreak <_label>No Line Break <_tooltip>Disallow a line break at this measure. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/PaxHeaders.19168/StaffSpacer0000644000000000000000000000013213135434035030241 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.873315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/StaffSpacer.scm0000644000175000017500000000215413135434035032675 0ustar00jjbenhamjjbenham00000000000000;;StaffSpacer (let ((tag "StaffSpacer")(data #f) (direction "^")(value "10")(raise "raise")) (if (d-Directive-standalone? tag) (set! data (d-DirectiveGet-standalone-data tag))) (if data (set! data (eval-string data))) (if data (begin (set! direction (car data)) (set! value (cdr data)))) (set! value (d-GetUserInput (_ "Spacing for Staff") (_ "Give value for extra space: ") value)) (if value (begin (set! direction (RadioBoxMenu (cons (_ "Space Above Staff") "^") (cons (_ "Space Below Staff") "_"))) (if (equal? direction "_") (set! raise "lower")) (StandAloneDirectiveProto (cons tag (string-append "<>" direction "\\markup { \\" raise " #" value " \" \" }")) #f "\nâ¬\nDenemo\n20") (d-DirectivePut-standalone-gy tag -44) (d-DirectivePut-standalone-data tag (string-append "(cons " "\"" direction "\" \"" value "\")")) (d-MoveCursorRight) (d-RefreshDisplay) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/PaxHeaders.19168/PageBreak.s0000644000000000000000000000013213135434035030122 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.873315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/PageBreak.scm0000644000175000017500000000242613135434035032317 0ustar00jjbenhamjjbenham00000000000000;;;;;;PageBreak (let ((tag "PageBreak")) (if (d-Directive-standalone? tag) (d-InfoDialog "This sign denotes a Page Break. The music after this point will start on new page. This page break must be on a bar line. Use the Conditional Directives menu to make the page break applicable only to specific layouts. Delete using Del or Backspace key.") (begin (if (d-IsVoice) (begin (d-WarningDialog "The cursor is on a voice. Put line breaks in the main staff that the voice belongs to.")) (begin (if (and (not (Appending?)) (not (d-Directive-standalone?))) (d-WarningDialog (_ "This Page Break will have no effect if there is no barline at this point. You can use Allow Line/Page Break to insert an invisible one if you need it"))) (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-postfix tag "\\pageBreak") (d-DirectivePut-standalone-minpixels tag 50) (d-DirectivePut-standalone-gy tag -25) (d-DirectivePut-standalone-graphic tag " â‹ Denemo 26") (d-DirectivePut-standalone-minpixels tag 10) (d-RefreshDisplay) (SetDirectiveConditional) (d-SetSaved #f)))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/PaxHeaders.19168/AllowLineBr0000644000000000000000000000013213135434035030212 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.883315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/AllowLineBreak.scm0000644000175000017500000000160113135434035033323 0ustar00jjbenhamjjbenham00000000000000;;AllowLineBreak (let ((tag "AllowLineBreak")(params AllowLineBreak::params)) (if (d-Directive-standalone? tag) (d-InfoDialog (_ "This sign allows a Line Break. The bar can be broken across a line at this point. Delete using Del or Backspace key.")) (begin (if (d-IsVoice) (begin (d-WarningDialog (_ "The cursor is on a voice. Put line breaks in the main staff that the voice belongs to."))) (let ((choice #f)) (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-postfix tag "\\bar \"\"") (d-DirectivePut-standalone-graphic tag "\n|\nDenemo\n24") (d-DirectivePut-standalone-minpixels tag 10) (d-RefreshDisplay) (if (not params) (SetDirectiveConditional)) (d-SetSaved #f) ))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/PaxHeaders.19168/StaffSpacer0000644000000000000000000000013213135434035030241 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.883315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/StaffSpacer.xml0000644000175000017500000000110113135434035032702 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StaffSpacer <_label>Staff/System/Titles Spacer <_tooltip>Forces extra space between this staff and the adjacent one at this point in the score. If in the top staff of a system, forces the systems apart in the line at the cursor. If in the top staff on the top line gives more room below the titles. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/PaxHeaders.19168/NoLineBreak0000644000000000000000000000013213135434035030171 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.883315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/NoLineBreak.scm0000644000175000017500000000133513135434035032625 0ustar00jjbenhamjjbenham00000000000000 ;;;;;;;;NoLineBreak (let ((tag "NoLineBreak")(params NoLineBreak::params)) (if (d-Directive-standalone? tag) (d-InfoDialog "This sign denotes No Line Break. The typesetter will keep this measure with the previous one. Use the Conditional Directives menu to make it applicable only to specific layouts. Delete using Del or Backspace key.") (begin (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-postfix tag "\\noBreak") (d-DirectivePut-standalone-gy tag -40) (d-DirectivePut-standalone-graphic tag " LX Denemo 36") (d-DirectivePut-standalone-minpixels tag 10) (d-SetSaved #f) (d-RefreshDisplay) (if (not params) (SetDirectiveConditional))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/PaxHeaders.19168/LineBreak.s0000644000000000000000000000013213135434035030135 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.883315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/LineBreak.scm0000644000175000017500000000251213135434035032326 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;LineBreak (let ((tag "LineBreak")(params LineBreak::params)) (if (d-Directive-standalone? tag) (d-InfoDialog "This sign denotes a Line Break. The music after this point will start on new line. This line break must be on a bar line. Use the Conditional Directives menu to make the line break applicable only to specific layouts. Delete using Del or Backspace key.") (begin (if (d-IsVoice) (begin (d-WarningDialog "The cursor is on a voice. Put line breaks in the main staff that the voice belongs to.")) (begin (if (and (not params) (not (Appending?)) (not (d-Directive-standalone?))) (d-WarningDialog (_ "This Line Break will have no effect if there is no barline at this point. You can use Allow Line/Page Break to insert an invisible one if you need it"))) (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-postfix tag "\\break") (d-DirectivePut-standalone-gy tag -25) (d-DirectivePut-standalone-graphic tag " L Denemo 26") (d-DirectivePut-standalone-minpixels tag 10) (d-RefreshDisplay) (if params (d-MoveCursorRight) (SetDirectiveConditional)) (d-SetSaved #f)))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/PaxHeaders.19168/AllowLineBr0000644000000000000000000000013213135434035030212 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.903315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/AllowLineBreak.xml0000644000175000017500000000063513135434035033347 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LineBreak AllowLineBreak <_label>Allow Line/Page Break <_tooltip>Permits the typesetter to break the line at this point. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/PaxHeaders.19168/PageBreak.x0000644000000000000000000000013213135434035030127 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.903315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/PageBreak.xml0000644000175000017500000000060013135434035032325 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LineBreak PageBreak <_label>Page Break <_tooltip>(Print) Forces a new page at this barline. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/PaxHeaders.19168/LineBreak.x0000644000000000000000000000013213135434035030142 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.903315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PrintLayout/LineBreak.xml0000644000175000017500000000071313135434035032345 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LineBreak <_label>Line Break <_tooltip>(Print) Start a new line (i.e. system) at this measure. This will be ignored if it breaks a beam or tuplet. Use Allow Line Break to break mid-measure. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/Voices0000644000000000000000000000013213135434150024774 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.539981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/0000755000175000017500000000000013135434150026722 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoicePreset4.scm0000644000000000000000000000013213135434035030073 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.903315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoicePreset4.scm0000644000175000017500000000045313135434035031746 0ustar00jjbenhamjjbenham00000000000000;;;VoicePreset4 (let ((tag "VoiceSetting")) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-graphic tag " v4 Serif 24 1 1") (d-DirectivePut-standalone-postfix "VoiceSetting" "\\voiceFour ") (d-MoveCursorRight) (d-SetSaved #f) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoiceSetting.scm0000644000000000000000000000013213135434035030162 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.913315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoiceSetting.scm0000644000175000017500000000123213135434035032031 0ustar00jjbenhamjjbenham00000000000000;;;VoiceSetting (let ( (choice (d-GetOption (string-append (_ "Voice 1") stop (_ "Voice 2") stop (_ "Voice 3") stop (_ "Voice 4") stop (_ "Automatic Voice") stop)))) (if choice (cond ((string=? choice (_ "Voice 1")) (d-VoicePreset1)) ((string=? choice (_ "Voice 2")) (d-VoicePreset2)) ((string=? choice (_ "Voice 3")) (d-VoicePreset3)) ((string=? choice (_ "Voice 4")) (d-VoicePreset4)) ((string=? choice (_ "Automatic Voice")) (d-VoicePresetAutomatic))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoicePreset3.scm0000644000000000000000000000013213135434035030072 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.913315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoicePreset3.scm0000644000175000017500000000045413135434035031746 0ustar00jjbenhamjjbenham00000000000000;;;VoicePreset3 (let ((tag "VoiceSetting")) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-graphic tag " v3 Serif 24 1 1") (d-DirectivePut-standalone-postfix "VoiceSetting" "\\voiceThree ") (d-MoveCursorRight) (d-SetSaved #f) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoicePreset3.xml0000644000000000000000000000013213135434035030110 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.913315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoicePreset3.xml0000644000175000017500000000061413135434035031762 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS VoicePreset2 VoicePreset3 <_label>Voice Preset 3 (Stems Up) <_tooltip>Preset for third voice. Stems up. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoicePreset1.xml0000644000000000000000000000013213135434035030106 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.913315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoicePreset1.xml0000644000175000017500000000062313135434035031760 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS VoicePresetAutomatic VoicePreset1 <_label>Voice Preset 1 (Stems Up) <_tooltip>Preset for first voice. Stems up denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoicePreset2.scm0000644000000000000000000000013213135434035030071 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.919981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoicePreset2.scm0000644000175000017500000000045213135434035031743 0ustar00jjbenhamjjbenham00000000000000;;;VoicePreset2 (let ((tag "VoiceSetting")) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-graphic tag " v2 Serif 24 1 1") (d-DirectivePut-standalone-postfix "VoiceSetting" "\\voiceTwo ") (d-MoveCursorRight) (d-SetSaved #f) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoicePreset2.xml0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.919981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoicePreset2.xml0000644000175000017500000000062113135434035031757 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS VoicePreset1 VoicePreset2 <_label>Voice Preset 2 (Stems Down) <_tooltip>Preset for second voice. Stems down. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoicePresetAutom0000644000000000000000000000013213135434035030234 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.919981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoicePresetAutomatic.scm0000644000175000017500000000045213135434035033530 0ustar00jjbenhamjjbenham00000000000000;;;VoicePresetAutomatic (let ((tag "VoiceSetting")) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-graphic tag " vAuto Serif 24 1 1") (d-DirectivePut-standalone-postfix tag "\\oneVoice ") (d-MoveCursorRight) (d-SetSaved #f) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoicesDoublestro0000644000000000000000000000013213135434035030271 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.919981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoicesDoublestroke.scm0000644000175000017500000000041013135434035033236 0ustar00jjbenhamjjbenham00000000000000(Doublestroke #f (cons "Voice one preset" d-VoicePreset1) ;1 (cons "Voice two preset" d-VoicePreset2) ;2 (cons "Voice three preset" d-VoicePreset3) ;3 (cons "Voice four preset" d-VoicePreset4) ;4 (cons "Automatic voice or single voice" d-VoicePresetAutomatic) ;5 )denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoicePresetAutom0000644000000000000000000000013213135434035030234 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.923315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoicePresetAutomatic.xml0000644000175000017500000000057713135434035033556 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS VoicePresetAutomatic <_label>Voice Preset Automatic <_tooltip>Automatic voice preset. Resets to normal behaviour. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoicesDoublestro0000644000000000000000000000013213135434035030271 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.933315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoicesDoublestroke.xml0000644000175000017500000000056313135434035033265 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS VoicesDoublestroke <_label>Voice Preset <_tooltip>Choose a preset for four voices or automatic voice. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoicePreset4.xml0000644000000000000000000000013213135434035030111 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.933315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoicePreset4.xml0000644000175000017500000000061713135434035031766 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS VoicePreset3 VoicePreset4 <_label>Voice Preset 4 (Stems Down) <_tooltip>Preset for voice four. Stems down. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoiceSetting.xml0000644000000000000000000000013213135434035030200 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.933315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoiceSetting.xml0000644000175000017500000000143713135434035032056 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS VoiceSetting <_label>Choose Voice <_tooltip>The Voice 1,2,3,4 commands set up the voices so that first and third voices get stems up, second and fourth voices get stems down, third and fourth voice note heads are horizontally shifted, and rests in the respective voices are automatically moved to avoid collisions. The Automatic Voice command returns all the voice settings to the neutral default directions. The Denemo display shows automatic stem directions, use StemDown and StemUp commands if you wish to affect the display. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/PaxHeaders.19168/VoicePreset1.scm0000644000000000000000000000013213135434035030070 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.933315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Voices/VoicePreset1.scm0000644000175000017500000000045213135434035031742 0ustar00jjbenhamjjbenham00000000000000;;;VoicePreset1 (let ((tag "VoiceSetting")) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-graphic tag " v1 Serif 24 1 1") (d-DirectivePut-standalone-postfix "VoiceSetting" "\\voiceOne ") (d-MoveCursorRight) (d-SetSaved #f) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/Void.xml0000644000000000000000000000013213135434035025246 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.933315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Void.xml0000644000175000017500000000073513135434035027124 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Void AutoAccidentals <_label>Hide Next <_tooltip>On printing the next music item will be omitted from the score. Use with conditional directives to leave out music for certain layouts. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/AutoAccidentals.scm0000644000000000000000000000013213135434035027372 xustar0030 mtime=1500919837.979981805 30 atime=1500919925.953315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/AutoAccidentals.scm0000644000175000017500000000111513135434035031241 0ustar00jjbenhamjjbenham00000000000000;;AutoAccidentals (let ((tag "AutoAccidentals")) (if AutoAccidentals::params (d-InfoDialog (_ "This directive sets the style of typesetting for accidentals")) (let ((choice (RadioBoxMenu (cons (_ "Default") "default") (cons (_ "Modern") "modern") (cons (_ "Modern Cautionary") "modern-cautionary") (cons (_ "Neo-Modern") "neo-modern") (cons (_ "Teaching") "teaching") (cons (_ "Forget") "forget")))) (if choice (begin (d-SetSaved #f) (d-DirectivePut-layout-postfix tag (string-append "\\accidentalStyle Score." choice "\n")))))))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/SetBarNumber.xml0000644000000000000000000000013213135434035026676 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.953315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/SetBarNumber.xml0000644000175000017500000000066413135434035030555 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetBarNumber <_label>(Print) Set Bar Number <_tooltip>Enter a number to change the bar number in the typeset score. The printout will continue to count up from there. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/ChordSymbols0000644000000000000000000000013213135434150026154 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.539981806 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/ChordSymbols/0000755000175000017500000000000013135434150030102 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/ChordSymbols/PaxHeaders.19168/ColorChord0000644000000000000000000000013213135434035030214 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.953315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/ChordSymbols/ColorChordSymbol.scm0000644000175000017500000000140413135434035034033 0ustar00jjbenhamjjbenham00000000000000;;;;;;ColorChordSymbol (let ((tag "ColorChordSymbol")(params ColorChordSymbol::params)(color #f)) (if (equal? params "edit") (set! params #f)) (set! color params) (if (not color) (set! color (d-SelectColor (_ "Color for Next Chord")))) (if color (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag (format #f "\\once \\override ChordName.color = #(rgb-color ~s ~s ~s) " (list-ref color 0) (list-ref color 1) (list-ref color 2))) (d-DirectivePut-standalone-data tag (format #f "'~s" color)) (d-DirectivePut-standalone-display tag (_ "Color")) (d-DirectivePut-standalone-minpixels tag 50) (d-SetSaved #f) (d-RefreshDisplay))))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/ChordSymbols/PaxHeaders.19168/ColorChord0000644000000000000000000000013213135434035030214 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.953315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/ChordSymbols/ColorChordSymbol.xml0000644000175000017500000000063113135434035034052 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ColorChordSymbol StopStaff <_label>Color Next Symbol <_tooltip>Typesets the next chord symbol in a color you choose. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/TypesettingOn.xml0000644000000000000000000000013213135434035027161 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.963315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/TypesettingOn.xml0000644000175000017500000000063513135434035031036 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TypesettingOff TypesettingOn <_label>TypesettingOn <_tooltip>Turns on typesetting from this point forward in all staffs. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/Hide.xml0000644000000000000000000000013213135434035025216 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.963315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Hide.xml0000644000175000017500000000066013135434035027071 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Hide <_label>(Print) Hide object <_tooltip>Hides the object at cursor position with a lilypond directive. Currently only Notes and the three Signatures. No rests! denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/UnHideNotes.xml0000644000000000000000000000013213135434035026532 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.963315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/UnHideNotes.xml0000644000175000017500000000063113135434035030403 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HideNotes UnHideNotes <_label>(Print) Start Drawing Notes (Again) <_tooltip>Reverts the "Stop drawing notes" command denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/HideNotes.xml0000644000000000000000000000013213135434035026227 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.963315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/HideNotes.xml0000644000175000017500000000055213135434035030102 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HideNotes <_label>(Print) Stop Drawing Notes <_tooltip>Stops the Lilypond engraving of notes denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/Void.scm0000644000000000000000000000013213135434035025230 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.963315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Void.scm0000644000175000017500000000036613135434035027106 0ustar00jjbenhamjjbenham00000000000000;;;"Void" (let ((tag "Void")) (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag "\\void ") (d-DirectivePut-standalone-display tag (_ "Hide")) (d-DirectivePut-standalone-minpixels tag 30) (d-SetSaved #f) (d-RefreshDisplay))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/TypesettingOn.scm0000644000000000000000000000013213135434035027143 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.976648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/TypesettingOn.scm0000644000175000017500000000015113135434035031011 0ustar00jjbenhamjjbenham00000000000000 (StandAloneDirectiveProto (cons "TypesetOn" " \\set Score.skipTypesetting = ##f ")) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/Tablature0000644000000000000000000000013213135434150025467 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.539981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/0000755000175000017500000000000013135434150027415 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/PaxHeaders.19168/TabFull.scm0000644000000000000000000000013213135434035027603 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.976648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/TabFull.scm0000644000175000017500000000115713135434035031460 0ustar00jjbenhamjjbenham00000000000000;;;TabFull (let ((tag "TabFull")) (if (d-Directive-standalone? tag) (begin (d-InfoDialog (_ "This directive causes the tab to be notated fully with beaming and other notation added\nDelete the directive to undo the effect."))) (begin (if (d-Directive-staff? "TabStaff") (begin (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-postfix tag "\\tabFullNotation") (d-DirectivePut-standalone-display tag tag) (d-DirectivePut-standalone-minpixels tag 30) (d-SetSaved #t) (d-RefreshDisplay)) (begin (d-WarningDialog (_ "This Directive can only be added in a Tab Staff. See Staff menu."))))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/PaxHeaders.19168/MinimumFret.s0000644000000000000000000000013213135434035030166 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.976648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/MinimumFret.scm0000644000175000017500000000127413135434035032363 0ustar00jjbenhamjjbenham00000000000000;;MinimumFret (let ((tag "MinimumFret") (value #f)) (set! value (d-DirectiveGet-standalone-display tag)) (if (not value) (set! value "4")) (set! value (d-GetUserInput (_ "Minimum Fret Number") (_ "Give lowest fret number wanted: ") value)) (if value (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag (string-append "\\set TabVoice.minimumFret = #" value " ")) (d-DirectivePut-standalone-graphic tag (string-append "\n" (_ "F") "\nDenemo 24")) (d-DirectivePut-standalone-display tag value) (d-DirectivePut-standalone-tx tag 10) (d-DirectivePut-standalone-minpixels tag 30) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/PaxHeaders.19168/MinimumFret.x0000644000000000000000000000013213135434035030173 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.976648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/MinimumFret.xml0000644000175000017500000000066713135434035032406 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DynamicText MinimumFret <_label>Minimum Fret Number Allowed <_tooltip>In a Tab staff, restrict the frets available to larger than the given value. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/PaxHeaders.19168/RestrainOpenS0000644000000000000000000000013213135434035030225 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.986648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/RestrainOpenStrings.xml0000644000175000017500000000063413135434035034127 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MinimumFret RestrainOpenStrings <_label>Restrain Open Strings <_tooltip>Restrains the use of open strings in Tablature. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/PaxHeaders.19168/RestrainOpenS0000644000000000000000000000013213135434035030225 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.986648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/RestrainOpenStrings.scm0000644000175000017500000000024513135434035034107 0ustar00jjbenhamjjbenham00000000000000;;;RestrainOpenStrings (let ((tag "RestrainOpenStrings")) (StandAloneDirectiveProto (cons tag "\\set TabVoice.restrainOpenStrings = ##t ") #f "\n⨂\nDenemo\n30")) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/PaxHeaders.19168/TabFull.xml0000644000000000000000000000013213135434035027621 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.986648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Tablature/TabFull.xml0000644000175000017500000000063713135434035031500 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS UnHideNotes TabFull <_label>Full Tab Notation On <_tooltip>Typeset beaming etc with Tablature from the cursor position on. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/NewSpacing.xml0000644000000000000000000000013213135434035026403 xustar0030 mtime=1500919837.983315139 30 atime=1500919925.986648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/NewSpacing.xml0000644000175000017500000000064513135434035030261 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NewSpacing ProportionalNotation <_label>Start New Spacing <_tooltip>Spaces notes from cursor onwards based on the spacing given. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/BeamingOff.scm0000644000000000000000000000013213135434035026324 xustar0030 mtime=1500919837.979981805 30 atime=1500919925.986648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/BeamingOff.scm0000644000175000017500000000041113135434035030171 0ustar00jjbenhamjjbenham00000000000000 ;;;;;;;;BeamingOff (d-DirectivePut-standalone "BeamingOff") (d-DirectivePut-standalone-postfix "BeamingOff" "\\autoBeamOff") (d-DirectivePut-standalone-display "BeamingOff" (_ "No Beaming")) (d-DirectivePut-standalone-minpixels "BeamingOff" 10) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/MMRExpandLimit.xml0000644000000000000000000000013213135434035027137 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.006648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/MMRExpandLimit.xml0000644000175000017500000000074213135434035031013 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MMRExpandLimit AutoAccidentals <_label>Multi-Measure Rest Expand Limit <_tooltip>In Multi-Measure rests: controls how many measures rest are notated as church rests before numbers are used. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/Hide.scm0000644000000000000000000000013213135434035025200 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.006648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Hide.scm0000644000175000017500000000036513135434035027055 0ustar00jjbenhamjjbenham00000000000000(let () (define lilytype (GetTypeAsLilypond)) (define lilycontext (GetContextAsLilypond)) (if lilytype (StandAloneDirectiveProto (cons "HideNext" (string-append "\\once \\override " lilycontext "." lilytype " #'stencil = ##f" ))) #f ) )denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/BeamingOn.scm0000644000000000000000000000013213135434035026166 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.006648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/BeamingOn.scm0000644000175000017500000000040613135434035030037 0ustar00jjbenhamjjbenham00000000000000 ;;;;;;;;BeamingOn (d-DirectivePut-standalone "BeamingOn") (d-DirectivePut-standalone-postfix "BeamingOn" "\\autoBeamOn") (d-DirectivePut-standalone-display "BeamingOn" "Automatic Beaming") (d-DirectivePut-standalone-minpixels "BeamingOn" 10) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/StopStaff.xml0000644000000000000000000000013213135434035026256 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.006648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/StopStaff.xml0000644000175000017500000000061413135434035030130 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StopStaff <_label>(Print) Stop Drawing Staff <_tooltip>Stop drawing the staff and barlines in Lilypond. Notes are still drawn. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/ChordChangesOnly.xml0000644000000000000000000000013213135434035027537 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.006648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/ChordChangesOnly.xml0000644000175000017500000000076113135434035031414 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChordChangesOnly RevertSpacing <_label>Chord Changes Only <_tooltip>From the cursor position on only chord changes are typeset (either Chord Symbols or Fret Diagrams), except at the beginning of the line. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/DynamicUp.xml0000644000000000000000000000013213135434035026236 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.016648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/DynamicUp.xml0000644000175000017500000000064413135434035030113 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DynamicUp AutoAccidentals <_label>Dynamics Above <_tooltip>Inserts a directive to cause dynamics to be printed above the staff. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/StartStaff.scm0000644000000000000000000000013213135434035026410 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.016648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/StartStaff.scm0000644000175000017500000000007613135434035030264 0ustar00jjbenhamjjbenham00000000000000(StandAloneDirectiveProto (cons "StartStaff" "\\startStaff" ))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/SetBarNumber.scm0000644000000000000000000000013213135434035026660 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.016648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/SetBarNumber.scm0000644000175000017500000000123513135434035030532 0ustar00jjbenhamjjbenham00000000000000(let () (define result (d-GetUserInput (_ "Change Barnumber in typeset score") (_ "Please enter a number to set the current bar number. The typeset score will continue to count up from there.") "1")) (if result (let ((barnumberstring (string-append "\\set Score.currentBarNumber = #" result ) )) (d-Directive-standalone "BarNumber") (d-DirectivePut-standalone-display "BarNumber" (string-append (_ "BarNumber = ") result)) (d-DirectivePut-standalone-minpixels "BarNumber" 30) (d-SetMeasureNumberOffset (- (string->number result) (d-GetMeasure))) (d-DirectivePut-standalone-postfix "BarNumber" barnumberstring ) (d-RefreshDisplay) ) #f ; cancel ) )denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/ShiftNext.xml0000644000000000000000000000013213135434035026261 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.016648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/ShiftNext.xml0000644000175000017500000000071513135434035030135 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Hide ShiftNext <_label>(Print) Shift Object <_tooltip>Asks for horizontal and vertical offsets and inserts a directive to displace the object at the cursor on printing. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/ChordChangesOnly.scm0000644000000000000000000000013213135434035027521 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.026648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/ChordChangesOnly.scm0000644000175000017500000000071513135434035031375 0ustar00jjbenhamjjbenham00000000000000;;ChordChangesOnly (let ((tag "ChordChangesOnly")) (if (d-Directive-standalone? tag) (d-InfoDialog (_ "This Directive turns off repeations of the chord except at the start of a new line")) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag "\\set chordChanges = ##t ") (d-DirectivePut-standalone-display tag (_ "Chord Changes Only")) (d-DirectivePut-standalone-minpixels tag 30) (d-SetSaved #f)(d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/Transposition0000644000000000000000000000013213135434150026420 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.539981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/0000755000175000017500000000000013135434150030346 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/PaxHeaders.19168/CloseLily0000644000000000000000000000013213135434035030321 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.026648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/CloseLilyBlock.xml0000644000175000017500000000062313135434035033745 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CloseLilyBlock <_label>(Print) Close } a LilyPond Block <_tooltip>Closes a LilyPond Block (there must be a matching open, {, earlier) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/PaxHeaders.19168/OpenOctav0000644000000000000000000000013213135434035030320 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.026648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/OpenOctaveUp.scm0000644000175000017500000000115513135434035033426 0ustar00jjbenhamjjbenham00000000000000;;;;OpenOctaveUp (let ((tag "OpenOctaveUp")(params "OpenOctaveUp::params")) (if (equal? params "edit") (d-InfoDialog (_ "This Denemo Directive starts block of music that will be transposed up one octave. The block of music should be closed with a curly brace }.t")) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag "\\transpose c c'{") (d-DirectivePut-standalone-display tag (_ "Up8va")) (d-DirectivePut-standalone-graphic tag " { denemo 40") (d-DirectivePut-standalone-minpixels tag 30) (d-RefreshDisplay) (d-DirectivePut-standalone-gy tag 10) (d-RefreshDisplay) (d-SetSaved #f))))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/PaxHeaders.19168/OpenOctav0000644000000000000000000000013213135434035030320 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.026648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/OpenOctaveDown.scm0000644000175000017500000000116513135434035033752 0ustar00jjbenhamjjbenham00000000000000;;;;OpenOctaveDown (let ((tag "OpenOctaveDown")(params "OpenOctaveDown::params")) (if (equal? params "edit") (d-InfoDialog (_ "This Denemo Directive starts block of music that will be transposed up one octave. The block of music should be closed with a curly brace }.t")) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag "\\transpose c c,{") (d-DirectivePut-standalone-display tag (_ "Down8va")) (d-DirectivePut-standalone-graphic tag " { denemo 40") (d-DirectivePut-standalone-minpixels tag 30) (d-RefreshDisplay) (d-DirectivePut-standalone-gy tag 10) (d-RefreshDisplay) (d-SetSaved #f))))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/PaxHeaders.19168/OpenOctav0000644000000000000000000000013213135434035030320 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.039981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/OpenOctaveUp.xml0000644000175000017500000000067413135434035033451 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenOctaveUp <_label>(Print) Open { Octave Up <_tooltip>Opens a block to be transposed up one octave This must be followed by a CloseBlock "}" to end the transposed section. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/PaxHeaders.19168/OpenEnhar0000644000000000000000000000013213135434035030301 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.039981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/OpenEnharmonicSharpen.scm0000644000175000017500000000121213135434035035276 0ustar00jjbenhamjjbenham00000000000000;;;;OpenEnharmonicSharpen (let ((tag "OpenEnharmonicSharpen")(params "OpenEnharmonicSharpen::params")) (if (equal? params "edit") (d-InfoDialog (_ "This Denemo Directive starts block of music that will be enhamonically sharpened. The block of music should be closed with a curly brace }.t")) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag "\\transpose d cisis{") (d-DirectivePut-standalone-display tag (_ "Enh+")) (d-DirectivePut-standalone-graphic tag " {# denemo 40") (d-DirectivePut-standalone-minpixels tag 30) (d-RefreshDisplay) (d-DirectivePut-standalone-gy tag 10) (d-RefreshDisplay) (d-SetSaved #f))))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/PaxHeaders.19168/OpenEnhar0000644000000000000000000000013213135434035030301 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.039981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/OpenEnharmonicFlatten.scm0000644000175000017500000000121213135434035035273 0ustar00jjbenhamjjbenham00000000000000;;;;OpenEnharmonicFlatten (let ((tag "OpenEnharmonicFlatten")(params "OpenEnharmonicFlatten::params")) (if (equal? params "edit") (d-InfoDialog (_ "This Denemo Directive starts block of music that will be enhamonically flattened. The block of music should be closed with a curly brace }.t")) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag "\\transpose d eeses{") (d-DirectivePut-standalone-display tag (_ "Enh-")) (d-DirectivePut-standalone-graphic tag " {b denemo 40") (d-DirectivePut-standalone-minpixels tag 30) (d-RefreshDisplay) (d-DirectivePut-standalone-gy tag 10) (d-RefreshDisplay) (d-SetSaved #f))))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/PaxHeaders.19168/CloseLily0000644000000000000000000000013213135434035030321 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.039981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/CloseLilyBlock.scm0000644000175000017500000000111413135434035033723 0ustar00jjbenhamjjbenham00000000000000;;;;CloseLilyBlock (let ((tag "CloseLilyBlock")(params "CloseLilyBlock::params")) (if (equal? params "edit") (d-InfoDialog (_ "This Denemo Directive closes a block of music with a close curly brace }. It must be preceded earlier in the save voice by a corresponding open {, otherwise the music will not typeset")) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag "}") (d-DirectivePut-standalone-graphic tag " } denemo 40") (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-gy tag 10) (d-RefreshDisplay) (d-SetSaved #f))))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/PaxHeaders.19168/OpenEnhar0000644000000000000000000000013213135434035030301 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.059981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/OpenEnharmonicSharpen.xml0000644000175000017500000000077413135434035035330 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenEnharmonicSharpen OpenOctaveUp <_label>Open Enharmonic Sharpen <_tooltip>Opens a block of music that will be sharpened enharmonically (E-flat becomes D-sharp etc). The block should be close with a curly brace } denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/PaxHeaders.19168/OpenEnhar0000644000000000000000000000013213135434035030301 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.059981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/OpenEnharmonicFlatten.xml0000644000175000017500000000100513135434035035311 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenEnharmonicFlatten OpenEnharmonicSharpen <_label>Open Enharmonic Flatten <_tooltip>Opens a block of music that will be sharpened enharmonically (D-sharp becomes E-flat etc). The block should be closed with a curly brace } denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/PaxHeaders.19168/OpenOctav0000644000000000000000000000013213135434035030320 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.059981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/Transposition/OpenOctaveDown.xml0000644000175000017500000000067413135434035033774 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenOctaveUp OpenOctaveDown <_label>(Print) Open { Octave Down <_tooltip>Opens a block printing an octave lower: must be terminated with CloseLilyBlock denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/DynamicUp.scm0000644000000000000000000000013213135434035026220 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.059981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/DynamicUp.scm0000644000175000017500000000011013135434035030061 0ustar00jjbenhamjjbenham00000000000000;;DynamicUp (StandAloneDirectiveProto (cons "DynamicUp" "\\dynamicUp")) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/InstallCue.scm0000644000000000000000000000013213135434035026372 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.059981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/InstallCue.scm0000644000175000017500000001203413135434035030243 0ustar00jjbenhamjjbenham00000000000000;;;;InstallCue (let ((tag "InstallCue")(params InstallCue::params)(cuename #f)(clef (d-GetPrevailingClef))) (define (get-cuenames theclef) (define cuenames '()) (define this-movement (number->string (d-GetMovement))) (define this-staff (d-GetStaff)) (define transpose #f) (define (unique-staff-name) (string-append (d-StaffProperties "query=denemo_name") (_ " on Staff ") (number->string (d-GetStaff)))) (if (d-Directive-score? "GlobalTranspose") (set! transpose (d-GetUserInput (_ "Transpose Cue") (_ "Give note (in LilyPond notation) that middle C should transpose to\nin this cue:") "c'"))) (d-PushPosition) (while (d-MoveToStaffUp)) (let loop ((count 0)) (define clef (d-GetPrevailingClef)) (if (not (= this-staff (d-GetStaff))) (set! cuenames (cons (cons (unique-staff-name) (cons (if (d-Directive-score? "GlobalTranspose") (begin (if transpose (if (equal? clef theclef) (string-append "\\transposedCueDuring #\"" (unique-staff-name) " Mvmnt " this-movement "\" #1 " transpose " {") (string-append "\\transposedCueDuringWithClef #\"" (unique-staff-name) " Mvmnt " this-movement "\"#1 " transpose " #\"" (string-downcase clef) "\" {")))) (begin (if (equal? clef theclef) (string-append "\\cueDuring #\"" (unique-staff-name) " Mvmnt " this-movement "\"#1 {") (string-append "\\cueDuringWithClef #\"" (unique-staff-name) " Mvmnt " this-movement "\"#1 #\"" (string-downcase clef) "\" {")))) (string-append "\\addQuote \"" (unique-staff-name) " Mvmnt " this-movement "\" \\"(d-GetVoiceIdentifier) "\n"))) cuenames))) (if (d-MoveToStaffDown) (loop (1+ count)))) (d-PopPosition) cuenames) (if (equal? params "edit") (begin (if (equal? "}" (d-DirectiveGet-standalone-postfix tag)) (d-InfoDialog (_ "This marks the end of a cue - where notes from another part are printed.\nThis marker can be cut and pasted to another position to alter the extent of the cue.")) (d-InfoDialog (_ "This marks the start of a cue - if you make an alteration to the number of staffs you will need to delete this cue and remake it. Watch out that you do not end up with two End Cue directives as this will not typeset.")))) (let ((deftag "CuesUsed")) (d-DirectivePut-score-prefix deftag (string-append "\ntransposedCueDuringWithClef = #(define-music-function (parser location what dir pitch clef main-music) (string? ly:dir? ly:pitch? string? ly:music?) (make-music 'QuoteMusic 'element main-music 'quoted-context-type 'CueVoice 'quoted-context-id \"cue\" 'quoted-music-name what 'quoted-music-clef clef 'quoted-voice-direction dir 'quoted-transposition pitch))\n")) (d-DirectivePut-score-display deftag deftag) (d-DirectivePut-score-override deftag DENEMO_OVERRIDE_AFFIX) (set! cuename (get-cuenames clef)) (if (null? cuename) (begin (d-WarningDialog (_ "There are no other staffs for this one to take a cue from."))) (begin (set! cuename (RadioBoxMenuList cuename)) (if cuename (begin (d-DirectivePut-score-prefix (cdr cuename) (cdr cuename)) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-postfix tag (car cuename)) (d-DirectivePut-standalone-display tag (_ "Start Cue")) (d-DirectivePut-standalone-graphic "InstallCue" " [ Denemo 48") (d-PushPosition) (GoToMeasureEnd) (if (d-Directive-standalone? tag) (if (d-MoveToMeasureRight) (GoToMeasureEnd) (d-WarningDialog (_ "Nowhere to place the End Cue marker")))) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-display tag (_ "End Cue")) (d-DirectivePut-standalone-graphic "InstallCue" " ] Denemo 48") (d-DirectivePut-standalone-postfix tag "}"))) (d-SetSaved #f) (d-RefreshDisplay) (d-PopPosition)))))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/MeasureCountDelimeter.s0000644000000000000000000000013213135434035030254 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.073315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/MeasureCountDelimeter.scm0000644000175000017500000000367213135434035032455 0ustar00jjbenhamjjbenham00000000000000;;MeasureCountDelimeter (let ((tag "MeasureCountDelimeter")(params MeasureCountDelimeter::params)(deftag "EnableMeasureCounter")(start #f)) (if params (d-InfoDialog (_ "This directive instructs the LilyPond typesetter to start/stop placing a count above the measures.")) (begin (if (not (d-Directive-score? deftag)) (begin (d-DirectivePut-score-prefix deftag " \\layout { \\context { \\Staff \\consists #Measure_counter_engraver } }") (d-DirectivePut-score-display deftag deftag) (d-DirectivePut-score-override deftag DENEMO_OVERRIDE_AFFIX))) (d-PushPosition) (while (and (d-MoveCursorLeft) (not (d-Directive-standalone? tag)))) (if (d-Directive-standalone? tag) (set! start (eval-string (d-DirectiveGet-standalone-data tag)))) (d-PopPosition) (if start (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-data tag "#f") (d-DirectivePut-standalone-display tag (_ "Stop Count")) (d-DirectivePut-standalone-graphic tag " ] Denemo 24") (d-DirectivePut-standalone-postfix tag "\\stopMeasureCount")) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-data tag "#t") (d-DirectivePut-standalone-display tag (_ "Start Count")) (d-DirectivePut-standalone-graphic tag " [ Denemo 24") (d-DirectivePut-standalone-postfix tag "\\startMeasureCount"))) (d-DirectivePut-standalone-gy tag -50) (d-DirectivePut-standalone-minpixels tag 30) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/StopStaff.scm0000644000000000000000000000013213135434035026240 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.073315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/StopStaff.scm0000644000175000017500000000007413135434035030112 0ustar00jjbenhamjjbenham00000000000000(StandAloneDirectiveProto (cons "StopStaff" "\\stopStaff" ))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/UnHideNotes.scm0000644000000000000000000000013213135434035026514 xustar0030 mtime=1500919837.983315139 30 atime=1500919926.083315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/UnHideNotes.scm0000644000175000017500000000010013135434035030354 0ustar00jjbenhamjjbenham00000000000000(StandAloneDirectiveProto (cons "UnHideNotes" "\\unHideNotes" ))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/PaxHeaders.19168/AutoAccidentals.xml0000644000000000000000000000013213135434035027410 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.083315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Typesetter/AutoAccidentals.xml0000644000175000017500000000064513135434035031266 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TransposeScorePrint AutoAccidentals <_label>(Print) Accidental Printing <_tooltip>Prints accidentals according to a chosen style denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/CheckDirectivePairs.scm0000644000000000000000000000013213135434035026032 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.083315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/CheckDirectivePairs.scm0000644000175000017500000000315413135434035027706 0ustar00jjbenhamjjbenham00000000000000;;;CheckDirectivePairs (define-once CheckScore::error-position #f) (define CheckDirectivePairs::return #f) (d-PushPosition) (d-MoveToBeginning) (let ((last-start #f) (InCue #f)) (let loop () (let ((tag (d-DirectiveGetForTag-standalone))) (if (equal? tag "InstallCue") (begin (set! last-start (GetPosition)) (if (equal? (d-DirectiveGet-standalone-postfix tag) "}") (if InCue (set! InCue #f) (begin (set! CheckDirectivePairs::return (_ "Bad End Cue Marker")) (set! CheckScore::error-position (GetPosition)))) (if InCue (begin (set! CheckDirectivePairs::return (_ "Bad Start Cue Marker")) (set! CheckScore::error-position (GetPosition))) (set! InCue #t))))) ;;; other paired tags here (if (and (not CheckDirectivePairs::return) (d-NextStandaloneDirective)) (loop)))) (if InCue (begin (set! CheckScore::error-position last-start) (set! CheckDirectivePairs::return (_ "Start Cue without End Cue Marker"))))) (d-PopPosition) (if (and (not CheckDirectivePairs::params) CheckDirectivePairs::return) (begin (apply d-GoToPosition CheckScore::error-position) (d-WarningDialog CheckDirectivePairs::return)))denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/Barlines0000644000000000000000000000013213135434150023133 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.543315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/0000755000175000017500000000000013135434150025061 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/InsertFirstAndSecondTimeB0000644000000000000000000000013213135434035030111 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.093315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/InsertFirstAndSecondTimeBars.xml0000644000175000017500000000105313135434035033266 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RepeatEndStart InsertFirstAndSecondTimeBars <_label>Insert 1st & 2nd Time Bars <_tooltip>Inserts first and second time bars each with a whole measure rest. You can then edit this to suit your music, e.g by inserting extra bars, deleting the repeat start etc. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/ChooseBarline.scm0000644000000000000000000000013213135434035026433 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.093315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/ChooseBarline.scm0000644000175000017500000000075113135434035030307 0ustar00jjbenhamjjbenham00000000000000(Doublestroke #f (cons "Double barline" d-DoubleBarline) ;1 (cons "Repeat start" d-RepeatStart) ;2 (cons "Repeat end" d-RepeatEnd) ;3 (cons "Repeat end and start" d-RepeatEndStart) ;4 (cons "First time bar open" d-OpenFirstTimeBar) ;5 (cons "Second time bar open" d-OpenSecondTimeBar) ;6 (cons "End first/second time section" d-EndVolta) ;7 (cons "Closing barline" d-ClosingBarline) ;8 (cons "Half-sized barline" d-HalfBarline) ;9 (cons "Force normal barline" d-ForceBarline) ;0 )denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/RepeatEnd.scm0000644000000000000000000000013213135434035025565 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.093315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/RepeatEnd.scm0000644000175000017500000000023613135434035027437 0ustar00jjbenhamjjbenham00000000000000;;;RepeatEnd (StandAloneSelfEditDirective (cons "RepeatEnd" "\\bar \":|.\"") #f "RepeatEnd") (d-DirectivePut-standalone-gx "RepeatEnd" 10) (d-MoveCursorRight)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/ChooseBarline.xml0000644000000000000000000000013213135434035026451 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.093315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/ChooseBarline.xml0000644000175000017500000000051613135434035030324 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChooseBarline <_label>Choose Barline <_tooltip>Choose a barline denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/RepeatEndStart.xml0000644000000000000000000000013213135434035026621 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.093315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/RepeatEndStart.xml0000644000175000017500000000060213135434035030470 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RepeatEndStart <_label>Repeat End-Start <_tooltip>Inserts a barline ending one repeated section and starting another denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/ForceBarline.scm0000644000000000000000000000013213135434035026251 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.116648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/ForceBarline.scm0000644000175000017500000000234613135434035030127 0ustar00jjbenhamjjbenham00000000000000;;;ForceBarline (define-once ForceBarline::warned (_ "Warning: Do not use this command to create an upbeat (or pickup) bar.\nIt does not affect which notes appear in which measures.\nIt simply draws a barline at the point in question, if no other barline will be drawn.\nUse the Measures->Anacrusis (Upbeat) command for a short measure.")) (disp "have " ForceBarline::params "\n\n") (let ((tag "ForceBarline")) (if (or (d-Directive-standalone? tag) (equal? ForceBarline::params "edit")) (d-InfoDialog (_ "This object instructs the LilyPond typesetter to draw a barline here.\nThe timing is not altered, use a hidden time signature change or the short measure or anacrusis command to do that.")) (begin (if ForceBarline::warned (begin (d-WarningDialog ForceBarline::warned) (set! ForceBarline::warned #f))) (d-DirectivePut-standalone-minpixels tag 20) (d-MoveCursorLeft) (d-DirectivePut-standalone-postfix tag " \\bar \"|\"") (d-DirectivePut-standalone-gx tag 13) (d-DirectivePut-standalone-gy tag 0) (d-DirectivePut-standalone-graphic tag "Barline") (d-MoveCursorRight) (d-RefreshDisplay) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/RepeatEndStart.scm0000644000000000000000000000013213135434035026603 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.116648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/RepeatEndStart.scm0000644000175000017500000000027113135434035030454 0ustar00jjbenhamjjbenham00000000000000;;;RepeatEndStart (StandAloneSelfEditDirective (cons "RepeatEndStart" "\\bar \":..:\"") #f "RepeatEndStart" #f 50) (d-DirectivePut-standalone-gx "RepeatEndStart" 25) (d-MoveCursorRight)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/DottedBarline.xml0000644000000000000000000000013213135434035026454 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.116648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/DottedBarline.xml0000644000175000017500000000056513135434035030333 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DottedBarline HalfBarline <_label>Dotted Barline <_tooltip>Prints dotted barline denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/ClosingBarline.scm0000644000000000000000000000013213135434035026611 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.116648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/ClosingBarline.scm0000644000175000017500000000015313135434035030461 0ustar00jjbenhamjjbenham00000000000000;;;ClosingBarline (StandAloneSelfEditDirective (cons "ClosingBarline" "\\bar \"|.\"") #t "ClosingBarline") denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/RepeatStart.xml0000644000000000000000000000013213135434035026172 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.116648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/RepeatStart.xml0000644000175000017500000000057513135434035030052 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RepeatStart <_label>Repeat Start Barline <_tooltip>Insert a barline indicating the start of a repeated section. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/NoBarline.scm0000644000000000000000000000013213135434035025567 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.126648473 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/NoBarline.scm0000644000175000017500000000127313135434035027443 0ustar00jjbenhamjjbenham00000000000000;;NoBarline (let ((tag "NoBarline")) (if (d-Directive-standalone? tag) (let ((choice (RadioBoxMenu (cons (_ "Object Inspector") 'help) (cons (_ "Delete") 'delete)))) (case choice ((help) (d-DisplayCurrentObject)) ((delete) (d-DirectiveDelete-standalone tag)))) (begin (StandAloneDirectiveProto (cons tag "\\bar \"\"") #f "\nâ‹‚\nDenemo\n24") ;(StandAloneSelfEditDirective (cons tag "\\bar \"\"") #f tag) (d-DirectivePut-standalone-graphic tag "\nâ‹‚\nDenemo\n24") (d-DirectivePut-standalone-gx tag 20) (d-DirectivePut-standalone-gy tag -20))))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/DoubleBarline.scm0000644000000000000000000000013213135434035026425 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.126648473 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/DoubleBarline.scm0000644000175000017500000000014713135434035030300 0ustar00jjbenhamjjbenham00000000000000;;;DoubleBarline (StandAloneSelfEditDirective (cons "DoubleBarline" "\\bar \"||\"") #t "DoubleBarline")denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/DoubleBarRepeatStart.scm0000644000000000000000000000013213135434035027734 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.126648473 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/DoubleBarRepeatStart.scm0000644000175000017500000000017013135434035031603 0ustar00jjbenhamjjbenham00000000000000;;;DoubleBarRepeatStart (StandAloneSelfEditDirective (cons "DoubleBarRepeatStart" "\\bar \".|:-||\"") #t "RepeatStart") denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/RepeatStart.scm0000644000000000000000000000013213135434035026154 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.126648473 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/RepeatStart.scm0000644000175000017500000000014313135434035030023 0ustar00jjbenhamjjbenham00000000000000;;;RepeatStart (StandAloneSelfEditDirective (cons "RepeatStart" "\\bar \".|:\"") #t "RepeatStart") denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/ForceBarline.xml0000644000000000000000000000013213135434035026267 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.136648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/ForceBarline.xml0000644000175000017500000000057313135434035030145 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ForceBarline <_label>Insert Barline <_tooltip>Insert barline at cursor, Denemo's measure count is unaffected. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/RepeatEnd.xml0000644000000000000000000000013213135434035025603 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.136648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/RepeatEnd.xml0000644000175000017500000000056713135434035027464 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RepeatEnd <_label>Repeat End Barline <_tooltip>Insert a barline indicating the end of a repeated section. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/DottedBarline.scm0000644000000000000000000000013213135434035026436 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.136648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/DottedBarline.scm0000644000175000017500000000046213135434035030311 0ustar00jjbenhamjjbenham00000000000000;;;DottedBarline (d-Directive-standalone "DottedBarline") (d-DirectivePut-standalone-postfix "DottedBarline" "\\bar \"!\" ") (d-DirectivePut-standalone-display "DottedBarline" "\\bar \"!\" ") (d-DirectivePut-standalone-minpixels "DottedBarline" 30) (d-SetSaved #f)(d-RefreshDisplay) ;;;End of scheme scriptdenemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/ClosingBarline.xml0000644000000000000000000000013213135434035026627 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.136648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/ClosingBarline.xml0000644000175000017500000000057613135434035030510 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ClosingBarline <_label>Closing Barline <_tooltip>Inserts a closing barline (a double bar with last one thicker). denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/HalfBarline.xml0000644000000000000000000000013213135434035026103 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.136648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/HalfBarline.xml0000644000175000017500000000055513135434035027761 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HalfBarline <_label>Half Barline <_tooltip>Insert a barline with only half of its original size denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/InsertFirstAndSecondTimeB0000644000000000000000000000013213135434035030111 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.146648473 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/InsertFirstAndSecondTimeBars.scm0000644000175000017500000000074313135434035033255 0ustar00jjbenhamjjbenham00000000000000;;;InsertFirstAndSecondTimeBars (d-PushPosition) (if (and (not (d-MoveToMeasureRight)) (Appending?)) (begin (d-OpenFirstTimeBar) (d-InsertWholeMeasureRest) (d-RepeatEnd) (d-EndVolta) (d-OpenSecondTimeBar) (d-InsertWholeMeasureRest) (d-EndVolta) (d-RepeatStart)) (d-WarningDialog (_ "Only for appending to music - use the individual first and second time bar commands to insert within music."))) (d-PopPosition) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/DoubleBarRepeatStart.xml0000644000000000000000000000013213135434035027752 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.146648473 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/DoubleBarRepeatStart.xml0000644000175000017500000000067313135434035031631 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DoubleBarRepeatStart RepeatStart <_label>Double Bar Repeat Start <_tooltip>Prints a repeat start, with double bar on previous line if at a line break. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/HalfBarline.scm0000644000000000000000000000013213135434035026065 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.146648473 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/HalfBarline.scm0000644000175000017500000000020713135434035027735 0ustar00jjbenhamjjbenham00000000000000;;;Half Barline (StandAloneDirectiveProto (cons "HalfBarline" "\\once \\override Staff.BarLine #'bar-extent = #'(-1 . 1) \\bar \"|\""))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/DoubleBarline.xml0000644000000000000000000000013213135434035026443 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.146648473 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/DoubleBarline.xml0000644000175000017500000000054413135434035030317 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DoubleBarline <_label>Double Bar <_tooltip>Insert a double barline at cursor position. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/PaxHeaders.19168/NoBarline.xml0000644000000000000000000000013213135434035025605 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.146648473 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Barlines/NoBarline.xml0000644000175000017500000000065213135434035027461 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ClosingBarline NoBarline <_label>(Print) Omit Barline <_tooltip>Skips the printing of any automatic barline here - allows line break. denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/Comment.scm0000644000000000000000000000013213135434035023561 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.166648473 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Comment.scm0000644000175000017500000000203113135434035025426 0ustar00jjbenhamjjbenham00000000000000;;; Comment (let ((tag "Comment")(params Comment::params)) (define current (d-DirectiveGet-standalone-display tag)) (define position (GetPosition)) (if (equal? params "edit") (begin (d-WarningDialog (string-append (_ "Comment is currently set to: \n") current)) (set! params #f))) (if params (set! current params) (set! current (d-GetUserInput (_ "Insert Comment") (_ "Give comment text ") (if current current "") #f))) (if (and current (not (string-null? current))) (begin (if (not (PositionEqual? position (GetPosition))) (begin (if (not (equal? (_ "y") (d-GetUserInput (_ "Cursor has Moved") (_ "Insert comment at new position of cursor?") (_ "y")))) (apply d-GoToPosition position)))) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-graphic tag "\nC\nDenemo\n24") (d-DirectivePut-standalone-override tag DENEMO_OVERRIDE_EDITOR) (d-DirectivePut-standalone-display tag current) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/CriticalComment.xml0000644000000000000000000000013213135434035025252 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.166648473 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/CriticalComment.xml0000644000175000017500000000076113135434035027127 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FreeFermata CriticalComment <_label>Critical Comment <_tooltip>Adds a comment which can be printed in a critical commentary at the end of all the movements (see CriticalCommentary command to create this). denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/Comment.xml0000644000000000000000000000013213135434035023577 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.166648473 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Comment.xml0000644000175000017500000000066613135434035025460 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Comment InsertStandaloneDirective <_label>Insert Comment <_tooltip>Inserts a comment at the cursor position. The music typesetting is unaffected. denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/InsertStandaloneDirective.xml0000644000000000000000000000013213135434035027311 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.166648473 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/InsertStandaloneDirective.xml0000644000175000017500000000077713135434035031175 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertStandaloneDirective <_label>Insert/Edit Lilypond <_tooltip>Insert or edit a directive in the LilyPond music typesetting language. This can be used for extra spacing, transposing or almost anything. See LilyPond documentation for ideas. denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/EnableAccordion16v.scm0000644000000000000000000000013213135434035025524 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.166648473 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/EnableAccordion16v.scm0000644000175000017500000000422013135434035027373 0ustar00jjbenhamjjbenham00000000000000;;;EnableAccordion16v (d-LilyPondDefinition (cons "Diskant" "\\markup { \\musicglyph #\"accordion.discant\" }")) (d-LilyPondDefinition (cons "punkt" "\\markup { \\musicglyph #\"accordion.dot\" }")) (d-LilyPondDefinition (cons "accBasson" "^\\markup { \\combine \\Diskant \\raise #0.5 \\punkt }")) (d-LilyPondDefinition (cons "accPiccolo" "^\\markup { \\combine \\Diskant \\raise #2.5 \\punkt }")) (d-LilyPondDefinition (cons "accBandon" "^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #1.5 \\punkt }")) (d-LilyPondDefinition (cons "accVCello" "^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\translate #'(0.6 . 0) \\raise #1.5 \\punkt }")) (d-LilyPondDefinition (cons "accHarmon" "^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt }")) (d-LilyPondDefinition (cons "accOrgel" "^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\raise #2.5 \\punkt }")) (d-LilyPondDefinition (cons "accHaupt" "^\\markup { \\combine \\Diskant \\combine \\raise #0.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt }")) (d-LilyPondDefinition (cons "accCelesta" "^\\markup { \\combine \\Diskant \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt }")) (d-LilyPondDefinition (cons "accOboe" "^\\markup { \\combine \\Diskant \\combine \\raise #1.5 \\punkt \\raise #2.5 \\punkt }")) (d-LilyPondDefinition (cons "accClarin" "^\\markup { \\combine \\Diskant \\raise #1.5 \\punkt }")) (d-LilyPondDefinition (cons "accGeige" "^\\markup { \\combine \\Diskant \\combine \\translate #'(-0.6 . 0) \\raise #1.5 \\punkt \\combine \\translate #'(0.6 . 0) \\raise #1.5 \\punkt \\raise #2.5 \\punkt }")) denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/Conditional-Directives0000644000000000000000000000013213135434150025736 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.543315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/0000755000175000017500000000000013135434150027664 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/PaxHeaders.19168/NotForLayou0000644000000000000000000000013213135434035030161 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.176648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/NotForLayout.xml0000644000175000017500000000074213135434035033020 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PageBreak NotForLayout <_label>Ignore for Current Layout <_tooltip>The Denemo Directive at the cursor will be ignored when printing from the current score layout (See View->Score Layout) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/PaxHeaders.19168/NotForLayou0000644000000000000000000000013213135434035030161 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.176648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/NotForLayout.scm0000644000175000017500000000331013135434035032774 0ustar00jjbenhamjjbenham00000000000000;;;;;;; NotForLayout (let ((tag (d-DirectiveGetTag-standalone)) (params NotForLayout::params) (layout (d-GetLayoutName))(id (d-GetLayoutId))) (define (d-InfoDialog string) (Help::TimedNotice (string-append string "\n") 5000)) (define (put-cond) (d-DirectivePut-standalone-ignore tag id) ;(d-DirectivePut-standalone-display tag (string-append (_ "Not for ") layout)) (d-DirectivePut-standalone-ty tag 60) (d-DirectivePut-standalone-tx tag -30)) (define (do-rest) (d-PushPosition) (while (d-NextObject) (if (d-Directive-standalone? tag) (put-cond))) (d-PopPosition)) (if tag (begin (if (pair? params) (begin (set! layout (car params)) (set! id (cdr params)))) (put-cond) (if (RadioBoxMenu (cons (_ "Just for this one") #f) (cons (_ "Apply condition to all further cases in this staff") 'yes)) (begin (do-rest) (d-InfoDialog (string-append (_ "Standalone Directives ") "\"" tag "\"" (_ " in this staff from the cursor onwards will not be typeset for the layout ") "\"" layout "\"" ))) (d-InfoDialog (string-append (_ "This Directive ") "\"" tag "\"" (_ " will not be typeset for the layout ") "\"" layout"\""))) (d-SetSaved #f) (d-RefreshDisplay)) (begin (if (Music?) (d-DirectiveNotForLayout #f) (d-WarningDialog (_ "The cursor is not on a Denemo Directive.\nYou can place the \"Void\" Denemo Directive before the object you wish to omit\nand then make that directive conditional.")))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/PaxHeaders.19168/ChooseCondi0000644000000000000000000000013213135434035030135 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.186648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/ChooseCondition.scm0000644000175000017500000000010513135434035033455 0ustar00jjbenhamjjbenham00000000000000;;;ChooseCondition (SetDirectiveConditional ChooseCondition::params) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/PaxHeaders.19168/OnlyForLayo0000644000000000000000000000013213135434035030155 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.189981806 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/OnlyForLayout.xml0000644000175000017500000000072413135434035033201 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotForLayout OnlyForLayout <_label>Exclusive to Current Layout <_tooltip>The Denemo Directive at the cursor will apply for the current Score Layout (see View->Score Layout) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/PaxHeaders.19168/ChooseCondi0000644000000000000000000000013213135434035030135 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.189981806 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/ChooseCondition.xml0000644000175000017500000000075613135434035033507 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ForAllLayouts ChooseCondition <_label>Choose Condition <_tooltip>Gives a menu for choosing whether the directive at the cursor should apply to the current part only or the default score or all layouts, denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/PaxHeaders.19168/OnlyForLayo0000644000000000000000000000013213135434035030155 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.189981806 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/OnlyForLayout.scm0000644000175000017500000000331513135434035033162 0ustar00jjbenhamjjbenham00000000000000;;;;;;;; OnlyForLayout (let ((tag (d-DirectiveGetTag-standalone)) (params OnlyForLayout::params) (layout (d-GetLayoutName))(id (d-GetLayoutId))) (define (d-InfoDialog string) (Help::TimedNotice (string-append string "\n") 5000)) (define (put-cond) (d-DirectivePut-standalone-allow tag id) ;(d-DirectivePut-standalone-display tag (string-append (_ " for ") layout)) (d-DirectivePut-standalone-ty tag 60) (d-DirectivePut-standalone-tx tag -30)) (define (do-rest) (d-PushPosition) (while (d-NextObject) (if (d-Directive-standalone? tag) (put-cond))) (d-PopPosition)) (if tag (begin (if (pair? params) (begin (set! layout (car params)) (set! id (cdr params)))) (put-cond) (if (RadioBoxMenu (cons (_ "Just for this one") #f) (cons (_ "Apply condition to all further cases in this staff") 'yes)) (begin (do-rest) (d-InfoDialog (string-append (_ "Standalone Directives ") "\"" tag "\"" (_ " in this staff from the cursor onwards will be typeset for the layout ") "\"" layout "\"" ))) (d-InfoDialog (string-append (_ "This Directive ") "\"" tag "\"" (_ " will be typeset for the layout ") "\"" layout "\""))) (d-SetSaved #f) (d-RefreshDisplay)) (begin (if (Music?) (d-DirectiveOnlyForLayout #f) (d-WarningDialog (_ "The cursor is not on a Denemo Directive.\nYou can place the \"Hide Next\" Denemo Directive before the object you wish to omit\nand then make that directive conditional.")))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/PaxHeaders.19168/ForAllLayou0000644000000000000000000000013213135434035030131 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.189981806 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/ForAllLayouts.scm0000644000175000017500000000267213135434035033141 0ustar00jjbenhamjjbenham00000000000000;;;;;;;; ForAllLayouts (let ((tag (d-DirectiveGetTag-standalone)) ) (define (d-InfoDialog string) (Help::TimedNotice (string-append string "\n") 5000)) (define (do-rest) (d-PushPosition) (while (d-NextObject) (if (d-Directive-standalone? tag) (begin (d-DirectivePut-standalone-display tag "")(d-DirectivePut-standalone-ignore tag 0)(d-DirectivePut-standalone-allow tag 0)))) (d-PopPosition)) (if tag (begin ;(d-DirectivePut-standalone-display tag "") (d-DirectivePut-standalone-allow tag 0) (d-DirectivePut-standalone-ignore tag 0) (if (RadioBoxMenu (cons (_ "Just for this one") #f) (cons (_ "Apply condition to all further cases in this staff") 'yes)) (begin (do-rest) (d-InfoDialog (string-append (_ "Standalone Directives ") "\"" tag "\"" (_ " in this staff from the cursor onwards will be typeset for all layouts ")))) (d-InfoDialog (string-append (_ "This Directive ") "\"" tag "\"" (_ " will be typeset for all layouts ")))) (d-SetSaved #f) (d-RefreshDisplay)) (begin (if (Music?) (d-DirectiveForAllLayouts #f) (d-WarningDialog (_ "The cursor is not on a Denemo Directive.\nYou can place the \"Void\" Denemo Directive before the object you wish to omit\nand then make that directive conditional.")))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/PaxHeaders.19168/ForAllLayou0000644000000000000000000000013213135434035030131 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.196648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Conditional-Directives/ForAllLayouts.xml0000644000175000017500000000070413135434035033151 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OnlyForLayout ForAllLayouts <_label>Reset for All Layouts <_tooltip>Clears conditional behaviour of this layout. The Directive will apply to all score layouts. denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/CheckDirectivePairs.xml0000644000000000000000000000013213135434035026050 xustar0030 mtime=1500919837.973315139 30 atime=1500919926.199981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/CheckDirectivePairs.xml0000644000175000017500000000066713135434035027732 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CheckDirectivePairs Comment <_label>Check Paired Directives <_tooltip>Checks that paired directives match from the cursor to the end of the staff. denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/Playback0000644000000000000000000000013213135434150023122 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.543315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/0000755000175000017500000000000013135434150025050 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/PaxHeaders.19168/SetTuningStaff.xml0000644000000000000000000000013213135434035026627 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.199981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/SetTuningStaff.xml0000644000175000017500000000075213135434035030504 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TypesettingOn SetTuningStaff <_label>Set Tuning for Current Staff <_tooltip>At this time in playback the current staff's tuning will switch to the temperament selected when this command is invoked. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/PaxHeaders.19168/SetTuningAllStaffs.xml0000644000000000000000000000013213135434035027443 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.223315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/SetTuningAllStaffs.xml0000644000175000017500000000071713135434035031321 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetTuningStaff SetTuningAllStaffs <_label>Set Tuning Across All Staffs <_tooltip>At this time during playback switch to the temperament set when this command was invoked. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/PaxHeaders.19168/MIDI0000644000000000000000000000013213135434150023644 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.543315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/0000755000175000017500000000000013135434150025572 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeSoftPedal.scm0000644000000000000000000000013213135434035027416 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.223315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeSoftPedal.scm0000644000175000017500000000002613135434035031265 0ustar00jjbenhamjjbenham00000000000000(ChangeSoftPedal::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeVolume.xml0000644000000000000000000000013213135434035027022 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.223315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeVolume.xml0000644000175000017500000000057513135434035030702 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeProgram ChangeVolume <_label>Volume <_tooltip>Change the Volume of a channel/staff denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeSustenutoPedal0000644000000000000000000000013213135434035027733 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.223315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeSustenutoPedal.xml0000644000175000017500000000101113135434035032374 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangePortamento ChangeSustenutoPedal <_label>66 Sostenuto Pedal On/Off (Middle Grand Piano Pedal) <_tooltip>Middle Grand Piano Pedal. All Notes currently active (without a note off) will not have a note-off until Sostenuto Off. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeSustenutoPedal0000644000000000000000000000013213135434035027733 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.233315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeSustenutoPedal.scm0000644000175000017500000000003313135434035032361 0ustar00jjbenhamjjbenham00000000000000(ChangeSustenutoPedal::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeHold2Pedal.scm0000644000000000000000000000013213135434035027453 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.233315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeHold2Pedal.scm0000644000175000017500000000002713135434035031323 0ustar00jjbenhamjjbenham00000000000000(ChangeHold2Pedal::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangePan.xml0000644000000000000000000000013213135434035026271 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.233315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangePan.xml0000644000175000017500000000062113135434035030141 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeBalance ChangePan <_label>10 Pan <_tooltip>Where in the stereo field the channel sound will be placed. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeModwheel.scm0000644000000000000000000000013213135434035027301 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.233315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeModwheel.scm0000644000175000017500000000002513135434035031147 0ustar00jjbenhamjjbenham00000000000000(ChangeModwheel::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeHold2Pedal.xml0000644000000000000000000000013213135434035027471 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.233315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeHold2Pedal.xml0000644000175000017500000000065113135434035031344 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeLegatoPedal ChangeHold2Pedal <_label>69 Hold Pedal #2 On/Off <_tooltip>Longer release time but notes will fade out eventually. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeSoftPedal.xml0000644000000000000000000000013213135434035027434 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.243315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeSoftPedal.xml0000644000175000017500000000067413135434035031314 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeSustenutoPedal ChangeSoftPedal <_label>67 Soft Pedal On/Off (Left Piano Pedal) <_tooltip>Left Piano Pedal. Lowers the volume of any notes played. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeModwheel.xml0000644000000000000000000000013213135434035027317 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.243315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeModwheel.xml0000644000175000017500000000061213135434035031167 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeVolume ChangeModwheel <_label>1 Modwheel <_tooltip>Change the Modwheel value of a channel/staff denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeChannel.scm0000644000000000000000000000013213135434035027105 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.243315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeChannel.scm0000644000175000017500000000002413135434035030752 0ustar00jjbenhamjjbenham00000000000000(ChangeChannel::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ClarinetInA.xml0000644000000000000000000000013213135434035026576 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.243315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ClarinetInA.xml0000644000175000017500000000064213135434035030451 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ClarinetInBb ClarinetInA <_label>Clarinet in A <_tooltip>MIDI playback minor third lower than printed, marks as Clarinet in A denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeLegatoPedal.sc0000644000000000000000000000013213135434035027541 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.243315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeLegatoPedal.scm0000644000175000017500000000003013135434035031560 0ustar00jjbenhamjjbenham00000000000000(ChangeLegatoPedal::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/Temperament0000644000000000000000000000013213135434150026125 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.543315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/Temperament/0000755000175000017500000000000013135434150030053 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/Temperament/PaxHeaders.19168/StartEqu0000644000000000000000000000013213135434035027677 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.256648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/Temperament/StartEqualTemperament.xml0000644000175000017500000000066613135434035035076 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CloseTransposingInstrument StartEqualTemperament <_label>Equal Temperament Start <_tooltip>MIDI tuning becomes equal temperament from this point. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/Temperament/PaxHeaders.19168/StartEqu0000644000000000000000000000013213135434035027677 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.256648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/Temperament/StartEqualTemperament.scm0000644000175000017500000000024413135434035035050 0ustar00jjbenhamjjbenham00000000000000(d-DirectivePut-standalone-midibytes "EqualTemp" "0xf0 0x7f 0x7f 0x08 0x08 0x03 0x7f 0x7f 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0xf7") denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/Temperament/PaxHeaders.19168/StartQCM0000644000000000000000000000013213135434035027565 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.256648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/Temperament/StartQCMeanTone.scm0000644000175000017500000000024113135434035033526 0ustar00jjbenhamjjbenham00000000000000 ;;;;; mean tone: (d-DirectivePut-standalone-midibytes "QCMeanTone" "0xf0 0x7f 0x7f 0x08 0x08 0x03 0x7f 0x7f 0x40 40 57 74 50 67 44 61 37 54 71 47 0xf7") denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/Temperament/PaxHeaders.19168/StartQCM0000644000000000000000000000013213135434035027565 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.256648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/Temperament/StartQCMeanTone.xml0000644000175000017500000000065313135434035033553 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StartEqualTemperament StartQCMeanTone <_label>Quarter Comma Meantone <_tooltip>MIDI output becomes 1/4 comma mean tone from this point denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeLegatoPedal.xm0000644000000000000000000000013213135434035027560 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.256648472 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeLegatoPedal.xml0000644000175000017500000000072413135434035031610 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeSoftPedal ChangeLegatoPedal <_label>68 Legato Pedal On/Off <_tooltip>Skips the attack portion of the VCA's envelope. For phrasing like wind or brass or guitar hammer-on. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ClarinetInA.scm0000644000000000000000000000013213135434035026560 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.279981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ClarinetInA.scm0000644000175000017500000000064113135434035030432 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;OpenClarinetInA (d-Directive-standalone "transposing") (d-DirectivePut-standalone-postfix "transposing" "\\markup {Clarinet in A}") (d-DirectivePut-standalone-display "transposing" "Clarinet in A") (d-DirectivePut-standalone-override "transposing" DENEMO_OVERRIDE_TRANSPOSITION) (d-DirectivePut-standalone-midibytes "transposing" "-3") (d-DirectivePut-standalone-minpixels "transposing" 30) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChannelChange.xml0000644000000000000000000000013213135434035027123 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.279981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChannelChange.xml0000644000175000017500000000060713135434035030777 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MidiTempo ChannelChange <_label>Change Midi Channel <_tooltip>Changes the MIDI channel of a staff denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeProgram.scm0000644000000000000000000000013213135434035027144 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.279981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeProgram.scm0000644000175000017500000000002413135434035031011 0ustar00jjbenhamjjbenham00000000000000(ChangeProgram::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChannelChange.scm0000644000000000000000000000013213135434035027105 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.279981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChannelChange.scm0000644000175000017500000000002413135434035030752 0ustar00jjbenhamjjbenham00000000000000(ChangeChannel::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeHoldPedal.xml0000644000000000000000000000013213135434035027407 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.279981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeHoldPedal.xml0000644000175000017500000000071013135434035031256 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeExpression ChangeHoldPedal <_label>64 Hold Pedal (Right Piano Pedal) <_tooltip>Hold Pedal On/Off (Right Piano Pedal). Deactivates Note-Off until set to "Off" denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/MidiTempo.scm0000644000000000000000000000013213135434035026316 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.289981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/MidiTempo.scm0000644000175000017500000000200313135434035030162 0ustar00jjbenhamjjbenham00000000000000;;; Tempo Change, Midi only. (let ((DurationFromInput "1" ) (TempoFromInput "120")) (set! DurationFromInput (d-GetOption (string-append "Quarter" stop "Dotted Quarter" stop))) (set! TempoFromInput (d-GetUserInput "MidiTempo" "Please enter a tempo value" "120")) (if TempoFromInput (begin (d-Directive-standalone "MidiTempo") (d-DirectivePut-standalone-minpixels "MidiTempo" 20) (d-DirectivePut-standalone-override "MidiTempo" (logior DENEMO_OVERRIDE_TEMPO DENEMO_OVERRIDE_STEP)) ;Calculate the dotted tempo but display the userone (if (string-ci=? DurationFromInput "Dotted Quarter" ) (d-DirectivePut-standalone-midibytes "MidiTempo" (number->string (* 1.5 (string->number TempoFromInput)))) (d-DirectivePut-standalone-midibytes "MidiTempo" TempoFromInput) ) (format #t "Displaying ~A ~%" (string-append DurationFromInput " = " TempoFromInput) ) (d-DirectivePut-standalone-display "MidiTempo" (string-append DurationFromInput " = " TempoFromInput)) (d-DirectivePut-standalone-ty "MidiTempo" -20) ))) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeExpression.scm0000644000000000000000000000013213135434035027674 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.289981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeExpression.scm0000644000175000017500000000002713135434035031544 0ustar00jjbenhamjjbenham00000000000000(ChangeExpression::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/MidiTempo.xml0000644000000000000000000000013213135434035026334 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.289981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/MidiTempo.xml0000644000175000017500000000056613135434035030214 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MidiTempo <_label>Set Tempo <_tooltip>Send a Midi command to change the tempo to a new bpm. No printout. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangePortamento.xml0000644000000000000000000000013213135434035027703 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.289981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangePortamento.xml0000644000175000017500000000065513135434035031562 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeHoldPedal ChangePortamento <_label>65 Portamento On/Off <_tooltip>Slides between 2 notes. Can be adjusted with 5 - Portamento Time denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeBalance.scm0000644000000000000000000000013213135434035027062 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.299981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeBalance.scm0000644000175000017500000000002413135434035030727 0ustar00jjbenhamjjbenham00000000000000(ChangeBalance::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeVolume.scm0000644000000000000000000000013213135434035027004 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.299981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeVolume.scm0000644000175000017500000000002313135434035030650 0ustar00jjbenhamjjbenham00000000000000(ChangeVolume::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeProgram.xml0000644000000000000000000000013213135434035027162 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.299981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeProgram.xml0000644000175000017500000000061213135434035031032 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeChannel ChangeProgram <_label>Program <_tooltip>Change the Program of the current channel/staff denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ClarinetInBb.xml0000644000000000000000000000013213135434035026741 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.299981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ClarinetInBb.xml0000644000175000017500000000066513135434035030621 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MidiTempo ClarinetInBb <_label>Clarinet in B flat <_tooltip>MIDI output is one tone lower than printed, inscribes clarinet in B flat above music denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeBalance.xml0000644000000000000000000000013213135434035027100 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.299981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeBalance.xml0000644000175000017500000000070313135434035030751 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeModwheel ChangeBalance <_label>8 Balance <_tooltip>Balance. Typically used for a stereo signal tweak without changing the pan itself. Like a CD player. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeChannel.xml0000644000000000000000000000013213135434035027123 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.309981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeChannel.xml0000644000175000017500000000056413135434035031001 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MidiTempo ChangeChannel <_label>Channel <_tooltip>Change the Channel of a staff denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/CloseTransposingInst0000644000000000000000000000013213135434035030001 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.309981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/CloseTransposingInstrument.xml0000644000175000017500000000067013135434035033707 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ClarinetInA CloseTransposingInstrument <_label>Close Transposing Instrument <_tooltip>Returns MIDI output to transposition set on staff properties. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeExpression.xml0000644000000000000000000000013213135434035027712 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.309981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeExpression.xml0000644000175000017500000000077213135434035031571 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangePan ChangeExpression <_label>11 Expression <_tooltip>AKA "Sub Volume" or "Percent Volume". The "real" volume. Use Volume as initial value for each staff/channel and change further cresc/dim with expression. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangePan.scm0000644000000000000000000000013213135434035026253 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.309981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangePan.scm0000644000175000017500000000002013135434035030114 0ustar00jjbenhamjjbenham00000000000000(ChangePan::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/init.scm0000644000000000000000000000013213135434035025372 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.309981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/init.scm0000644000175000017500000001547313135434035027255 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;; Midi Commands By Nils Gey 01/2010 ;MenuCommand or another script call the procedure by (ChangeXXX::Set optional values) and this calls the parent function. Three steps but this avoids redundancy and makes it most easy for the user who must not be let in direct contact with midi bytes ;Either the values are given directly or the script will pop up a dialog to ask for more information which will be the cause if the command is called as menuversion. ;Parent function. Builds the executed function (define* (ChangeMidi::Parent DirectiveName DirectiveDisplayName Bytes UserValue #:optional (Flags #f)) (define (realAction) (d-Directive-standalone DirectiveName) (if Flags (d-DirectivePut-standalone-override DirectiveName Flags)) (d-DirectivePut-standalone-midibytes DirectiveName (string-append Bytes " " (number->string (- (abs UserValue) 1 )))) (d-DirectivePut-standalone-minpixels DirectiveName 20) (d-DirectivePut-standalone-display DirectiveName (string-append DirectiveDisplayName (number->string (abs UserValue) ))) (d-DirectivePut-standalone-ty DirectiveName -20) (d-RefreshDisplay) ) (if (and (number? UserValue)(> (abs UserValue) 0) ) (realAction) (display (string-append "Wrong value: "UserValue ". " DirectiveName " parameter must be a non-negative number. Start with 1, not with 0.\n"))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;;Change the Channel of a staff (define* (ChangeChannel::Set #:optional (UserValue (string->number (d-GetUserInput "Change Midi Channel" "Please enter a channel number. Normally 1-16" "1")))) (define override (logior DENEMO_OVERRIDE_CHANNEL DENEMO_OVERRIDE_STEP) ) (ChangeMidi::Parent "ChannelChange" "chan" "" UserValue override) ) ;;Change the Program of the current channel/staff (define* (ChangeProgram::Set #:optional (UserValue (string->number (d-GetUserInput "Change Midi Program Number" "Please enter a program number. Normally 1-128" "1")))) (ChangeMidi::Parent "ProgramChange" "prog" "0xC$" UserValue) ) ;;Change the Volume of a channel/staff (define* (ChangeVolume::Set #:optional (UserValue (string->number (d-GetUserInput "Change Midi Volume" "Please enter a volume value. Normally 1-128. 1 means off" "100")))) (ChangeMidi::Parent "VolumeChange" "vol" "0xB$ 0x07" UserValue) ) ;;Generic 0xB Control Change - User can give the midi bytes, too. (define* (ChangeGeneric::Set #:optional (UserBytes (d-GetUserInput "Generic Control Change" "Please enter the controller number in hex (0x01 for modwheel) or decimal (1 for modwheel)" "0x01") ) (UserValue (string->number (d-GetUserInput "Enter Databyte Value" "Please enter the databyte pedal value. Normally 1-128." "65")))) (ChangeMidi::Parent "GenericChange" UserBytes (string-append "0xB$ " UserBytes) UserValue) ) ;;Number 1 - Change the Modwheel value of a channel/staff (define* (ChangeModwheel::Set #:optional (UserValue (string->number (d-GetUserInput "Change Modwheel Value" "Please enter a modwheel value. Normally 1-128. 1 means off" "100")))) (ChangeMidi::Parent "ModwheelChange" "mod" "0xB$ 0x01" UserValue) ) ;;Number 2 - Breath Controller Todo: 14-bit coarse/fine resolution. 0x000 to 0x3FFF where 0/1 is minimum. ;(define* (ChangeVolume::Set #:optional (UserValue (string->number (d-GetUserInput "Breath Controller Value" "Please enter a breath pressure value. Normally 1-128. 1 means off" "100")))) ;(ChangeMidi::Parent "BreathControlChanger" "mod" "0xB$ 0x02" UserValue) ;) ;;Number 8 - Balance. Typically used for a stereo signal tweak without changing the pan itself. Like a CD player. (define* (ChangeBalance::Set #:optional (UserValue (string->number (d-GetUserInput "Change Balance Value" "Please enter a balance value. Normally 1-128. 65 is center, 1 is leftmost emphasis and 128 is rightmost emphasis" "65")))) (ChangeMidi::Parent "BalanceChange" "bal" "0xB$ 0x08" UserValue) ) ;;Number 10 - Pan. Where in the stereo field the channel sound will be placed. (define* (ChangePan::Set #:optional (UserValue (string->number (d-GetUserInput "Change Pan Value" "Please enter a pan value. Normally 1-128. 65 is center, 1 is hard left and 128 is hard right" "65")))) (ChangeMidi::Parent "PanChange" "pan" "0xB$ 0xA" UserValue) ) ;;Number 11 - Expression. Aka "Sub Volume" or "Percent Volume". The "real" volume. Use Volume as initial value for each staff/channel and change further cresc/desc with expression. (define* (ChangeExpression::Set #:optional (UserValue (string->number (d-GetUserInput "Change Expression Value" "Please enter an expression value. Normally 1-128. 65 is 50%, 1 is 0% and 128 is 100% of Volume." "128")))) (ChangeMidi::Parent "ExpressionChange" "expr" "0xB$ 0xB" UserValue) ) ;;Number 64 - Hold Pedal On/Off (Right Piano Pedal) (define* (ChangeHoldPedal::Set #:optional (UserValue (string->number (d-GetUserInput "Hold Pedal Value" "Please enter a hold pedal value. Normally 1-128. 1 to 64 is off, 65 to 128 is on" "1")))) (ChangeMidi::Parent "HoldPedalChange" "hold" "0xB$ 0x40" UserValue) ) ;;Number 65 - Portamento On/Off (define* (ChangePortamento::Set #:optional (UserValue (string->number (d-GetUserInput "Portamento Value" "Please enter a portamento value. Normally 1-128. 1 to 64 is off, 65 to 128 is on" "1")))) (ChangeMidi::Parent "PortamentoChange" "port" "0xB$ 0x41" UserValue) ) ;;Number 5 - Portamento Time. Slides between 2 notes. Todo: 14-bit coarse/fine resolution. 0x000 to 0x3FFF where 0/1 the slowest rate. ;;Number 66 - Sustenuto Pedal On/Off (Middle Grand Piano Pedal). All Notes active (without an note off yet) are taken. (define* (ChangeHoldPedal::Set #:optional (UserValue (string->number (d-GetUserInput "Sustenuto Pedal Value" "Please enter a sustenuto pedal value. Normally 1-128. 1 to 64 is off, 65 to 128 is on" "1")))) (ChangeMidi::Parent "SustenutoPedalChange" "hold" "0xB$ 0x42" UserValue) ) ;;Number 67 - Soft Pedal On/Off (Left Piano Pedal). Lowers the volume of any notes played. (define* (ChangeSoftPedal::Set #:optional (UserValue (string->number (d-GetUserInput "Soft Pedal Value" "Please enter a soft pedal value. Normally 1-128. 1 to 64 is off, 65 to 128 is on" "1")))) (ChangeMidi::Parent "SoftPedalChange" "hold" "0xB$ 0x43" UserValue) ) ;;Number 68 - Legato Pedal On/Off. Skips the attack portion of the VCA's envelope. For phrasing like wind or brass or guitar hammer-on. (define* (ChangeLegatoPedal::Set #:optional (UserValue (string->number (d-GetUserInput "Legato Pedal Value" "Please enter a legato pedal value. Normally 1-128. 1 to 64 is off, 65 to 128 is on" "1")))) (ChangeMidi::Parent "LegatoPedalChange" "hold" "0xB$ 0x44" UserValue) ) ;;Number 69 - Hold Pedal 2 On/Off. Longer release time but notes will fade out eventually. (define* (ChangeHold2Pedal::Set #:optional (UserValue (string->number (d-GetUserInput "Hold2/Release Pedal Value" "Please enter a hold2/release pedal value. Normally 1-128. 1 to 64 is off, 65 to 128 is on" "1")))) (ChangeMidi::Parent "Hold2PedalChange" "hold" "0xB$ 0x45" UserValue) ) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeHoldPedal.scm0000644000000000000000000000013213135434035027371 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.329981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeHoldPedal.scm0000644000175000017500000000002613135434035031240 0ustar00jjbenhamjjbenham00000000000000(ChangeHoldPedal::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeGeneric.scm0000644000000000000000000000013213135434035027111 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.329981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeGeneric.scm0000644000175000017500000000002413135434035030756 0ustar00jjbenhamjjbenham00000000000000(ChangeGeneric::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ClarinetInBb.scm0000644000000000000000000000013213135434035026723 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.343315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ClarinetInBb.scm0000644000175000017500000000063213135434035030575 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;OpenClarinetInBflat (d-Directive-standalone "transposing") (d-DirectivePut-standalone-postfix "transposing" "\\markup {Clarinet in B\\flat}") (d-DirectivePut-standalone-display "transposing" "Clarinet in Bb") (d-DirectivePut-standalone-override "transposing" DENEMO_OVERRIDE_TRANSPOSITION) (d-DirectivePut-standalone-midibytes "transposing" "-2") (d-DirectivePut-standalone-minpixels "transposing" 30) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/CloseTransposingInst0000644000000000000000000000013213135434035030001 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.343315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/CloseTransposingInstrument.scm0000644000175000017500000000064513135434035033673 0ustar00jjbenhamjjbenham00000000000000;;;CloseTransposingInstrument (d-Directive-standalone "transposing") (d-DirectivePut-standalone-postfix "transposing" "}") (d-DirectivePut-standalone-display "transposing" "End Transposing") (d-DirectivePut-standalone-override "transposing" DENEMO_OVERRIDE_TRANSPOSITION) (d-DirectivePut-standalone-midibytes "transposing" (d-StaffProperties "query=transposition")) (d-DirectivePut-standalone-minpixels "transposing" 15)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangeGeneric.xml0000644000000000000000000000013213135434035027127 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.343315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangeGeneric.xml0000644000175000017500000000065213135434035031003 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeChannel ChangeGeneric <_label>Generic Control Change <_tooltip>Generic 0xB Control Change - User can give the midi bytes, too. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/PaxHeaders.19168/ChangePortamento.scm0000644000000000000000000000013213135434035027665 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.343315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/MIDI/ChangePortamento.scm0000644000175000017500000000002713135434035031535 0ustar00jjbenhamjjbenham00000000000000(ChangePortamento::Set)denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/PaxHeaders.19168/SetTuningStaff.scm0000644000000000000000000000013213135434035026611 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.343315139 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/SetTuningStaff.scm0000644000175000017500000000067413135434035030471 0ustar00jjbenhamjjbenham00000000000000 ;;;;;SetTuningForStaff (d-Directive-standalone "Tuning") (d-DirectivePut-standalone-midibytes "Tuning" (string-append "0xf0 0x7f 0x7f 0x08 0x08 0x0 0x0 0x0$ " (d-GetMidiTuning) "0xf7")) (d-DirectivePut-standalone-display "Tuning" (string-append (_ "This Staff: ") (d-GetTemperament) " " (d-GetFlattest) "-" (d-GetSharpest))) (d-DirectivePut-standalone-ty "Tuning" -25) (d-DirectivePut-standalone-minpixels "Tuning" 15) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/PaxHeaders.19168/SetTuningAllStaffs.scm0000644000000000000000000000013213135434035027425 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.349981805 30 ctime=1500919912.969981805 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Playback/SetTuningAllStaffs.scm0000644000175000017500000000067513135434035031306 0ustar00jjbenhamjjbenham00000000000000;;;;;SetTuningAllStaffs (d-Directive-standalone "Tuning") (d-DirectivePut-standalone-midibytes "Tuning" (string-append "0xf0 0x7f 0x7f 0x08 0x08 0x03 0x7f 0x7f " (d-GetMidiTuning) "0xf7")) (d-DirectivePut-standalone-display "Tuning" (string-append (_ "All Staffs: ") (d-GetTemperament) " " (d-GetFlattest) "-" (d-GetSharpest))) (d-DirectivePut-standalone-ty "Tuning" -25) (d-DirectivePut-standalone-minpixels "Tuning" 15) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/Markings0000644000000000000000000000013213135434150023147 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.543315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/0000755000175000017500000000000013135434150025075 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/StandaloneFootnote.xml0000644000000000000000000000013213135434035027556 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.349981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/StandaloneFootnote.xml0000644000175000017500000000075513135434035031436 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TextAnnotation StandaloneFootnote <_label>Insert Footnote <_tooltip>Inserts a footnote at the cursor position as a standalone object. WARNING does not appear if followed by a chord, single notes only! denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/FreeFermata.scm0000644000000000000000000000013213135434035026113 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.349981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/FreeFermata.scm0000644000175000017500000000125513135434035027767 0ustar00jjbenhamjjbenham00000000000000;;;Fermata attached to the next object, for example a barline. But shown between notes (let ((tag "FreeFermata")) (if (d-Directive-standalone? tag) (let ((choice (RadioBoxMenu (cons (_ "Object Inspector") 'help) (cons (_ "Delete") 'delete)))) (case choice ((help) (d-DisplayCurrentObject)) ((delete) (d-DirectiveDelete-standalone tag)))) (StandAloneDirectiveProto (cons tag "\\once \\override Score.RehearsalMark #'break-visibility = #begin-of-line-invisible \\mark \\markup\\scale #'(0.75 . 0.75) { \\musicglyph #\"scripts.ufermata\" } ")))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/TextMarks0000644000000000000000000000013213135434150025071 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.543315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/0000755000175000017500000000000013135434150027017 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/BreathMark.xml0000644000000000000000000000013213135434035027712 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.359981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/BreathMark.xml0000644000175000017500000000051413135434035031563 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BreathMark <_label>Breath Mark <_tooltip>Inserts a Breath Mark denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/InsertGraphic.s0000644000000000000000000000013213135434035030076 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.359981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/InsertGraphic.scm0000644000175000017500000000403513135434035032271 0ustar00jjbenhamjjbenham00000000000000;;;InsertGraphic (let ((tag "InsertGraphic")(params InsertGraphic::params)(file "")(data #f)(x-offset "0")(y-offset "0")(scale "1")) (set! data (d-DirectiveGet-standalone-data tag)) (if data (begin (set! data (eval-string data)) (set! file (assq-ref data 'file)) (set! scale (assq-ref data 'scale)) (set! x-offset (assq-ref data 'x-offset)) (set! y-offset (assq-ref data 'y-offset)))) (if (equal? params "edit") (begin (set! scale (d-GetUserInput (_ "Scaling Graphic") (_ "Give scale to be used: ") (if scale scale "1.0"))) (set! params 'finished)) (if params (begin (set! file (assq-ref params 'file)) (set! scale (assq-ref params 'scale)) (set! x-offset (assq-ref params 'x-offset)) (set! y-offset (assq-ref params 'y-offset))))) (if (and (not (eq? params 'finished)) (not params)) (set! file (d-ChooseFile (_ "Graphic File") DENEMO_GRAPHICS_DIR (list "*.eps" "*.EPS")))) (if (not scale) (set! scale "1")) (if file (begin (set! data (assq-set! data 'file file)) (set! data (assq-set! data 'scale scale)) (if x-offset (set! data (assq-set! data 'x-offset x-offset))) (if y-offset (set! data (assq-set! data 'y-offset y-offset))) (d-Directive-standalone tag) (d-DirectivePut-standalone-data tag (format #f "'~s" data)) (if (and x-offset y-offset) (d-DirectivePut-standalone-prefix tag (string-append "<>-\\tweak #'extra-offset #'(" x-offset " . " y-offset ")"))) (d-DirectivePut-standalone-postfix tag (string-append "^\\markup\\epsfile #X #" scale " #\"" file "\" ")) (d-DirectivePut-standalone-graphic tag "\nG\nDenemo\n30") (d-DirectivePut-standalone-minpixels tag 30) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/MusicGlyph.xml0000644000000000000000000000013213135434035027756 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.359981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/MusicGlyph.xml0000644000175000017500000000133513135434035031631 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CriticalComment MusicGlyph <_label>Music Glyph <_tooltip>Allows placing any musical glyph which can then be dragged in the final typeset view for fine control over positioning. The complete list of glyphs is in the LilyPond documentation. Note! Do not place this directive at the end of a staff as it will not be typeset, place it before the last note and then right-click on it in the typeset (print) view to adjust its position if needed. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/TextAnnotation.0000644000000000000000000000013213135434035030130 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.359981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/TextAnnotation.xml0000644000175000017500000000126413135434035032525 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CriticalComment TextAnnotation <_label>Textual Annotation <_tooltip>Allows placing arbitrary text on the score which can then be dragged in the final typeset view for fine control over positioning. Note! Do not place this directive at the end of a staff as it will not be typeset, place it before the last note and then right-click on it in the typeset (print) view to adjust its position if needed. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/Fine.scm0000644000000000000000000000013213135434035026535 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.383315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/Fine.scm0000644000175000017500000000016113135434035030404 0ustar00jjbenhamjjbenham00000000000000(d-MultiLineTextAnnotation (list (cons 'display "fine")(cons 'scale "1") (cons 'text "\\bold\\italic {fine}")))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/Fine.xml0000644000000000000000000000013213135434035026553 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.383315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/Fine.xml0000644000175000017500000000060713135434035030427 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Fine DaCapo <_label>Fine (i.e. end) <_tooltip>Inserts Fine marking as standalone Denemo Directive. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/MultiLineTextAn0000644000000000000000000000013213135434035030121 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.383315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/MultiLineTextAnnotation.scm0000644000175000017500000002277213135434035034341 0ustar00jjbenhamjjbenham00000000000000;;;MultiLineTextAnnotation (let ((text #f) (params MultiLineTextAnnotation::params) (tag "MultiLineTextAnnotation")(markup #f)(scale #f) (x-offset #f) (y-offset #f) (prefix "<>") (direction #f) (display-text #f) (dimensions "") (dim #f) (data #f) (modal "nonmodal")) (define (get-display) (set! display-text (d-GetUserInput (_ "Text") (_ "Give text for Denemo Display") display-text))) (define (get-text) ;;(disp "modal is " modal " on entry") (if (string? text) (set! text (d-GetUserInputWithSnippets #f #f text 'format)) (set! text (d-GetUserInputWithSnippets (_ "Text") (_ "Type the text in the lower pane. The preview pane above will show the typeset appearance. You can type any text, however the characters \\, \", ¶, { and } have a special meaning in the text. New lines will be started from the ¶ character (if allowed). The backslash \\ starts some LilyPond syntax called 'markup', the {} and \"\" have to surround other text in pairs - one on its own will not typeset. The Insert menu and Selection menu contain pre-packaged markup for various effects.\nFor other possible markup commands \\wordwrap, \\circle, \\tiny etc, see LilyPond documentation.") (if text (car text) "") modal)))) (define (get-scale) (if (not scale) (set! scale "1")) (set! scale (d-GetUserInput (_ "Scaling Text") (_ "Give text size: ") scale))) (set! data (d-DirectiveGet-standalone-data tag)) (if data (set! data (eval-string data)) (set! data '())) (set! dim (assq-ref data 'dimensions)) (set! direction (assq-ref data 'direction)) (set! text (assq-ref data 'text)) (set! display-text (assq-ref data 'display)) (set! scale (assq-ref data 'scale)) (set! x-offset (assq-ref data 'x-offset)) (set! y-offset (assq-ref data 'y-offset)) (if (equal? params "edit") (set! modal "modal")) (if (list? params) (begin (if (assq-ref params 'dimensions) (set! dim (assq-ref params 'dimensions))) (if (assq-ref params 'direction) (set! dim (assq-ref params 'direction))) (if (assq-ref params 'text) (set! text (assq-ref params 'text))) (if (assq-ref params 'display) (set! display-text (assq-ref params 'display))) (if (assq-ref params 'scale) (set! scale (assq-ref params 'scale))) (if (assq-ref params 'x-offset) (set! x-offset (assq-ref params 'x-offset))) (if (assq-ref params 'y-offset) (set! y-offset (assq-ref params 'y-offset))) (set! params 'finished))) (if (and (d-Directive-standalone? tag) text) (set! prefix (d-DirectiveGet-standalone-prefix tag))) (if (string? text) (get-text)) ;;; get the markup (if (equal? "edit" params) (let ((choice (RadioBoxMenu (cons (_ "Edit Text") 'text) (cons (_ "Edit Space Occupied") 'space) (cons (_ "Edit Size") 'scale) (cons (_ "Up/Down") 'position) (cons (_ "Edit Position") 'offset) (cons (_ "Edit Display Text") 'display) (cons (_ "Edit Others") 'more) (cons (_ "Delete") 'delete)))) (set! params #f) (case choice ((text) (set! params 'finished) (get-text)) ((display) (set! params 'finished) (get-display)) ((scale) (set! params 'finished) (get-scale)) ((position) (set! params 'finished) (set! direction (GetLilyPondDirection))) ((space) (begin (set! params 'finished) (set! dim (d-GetUserInput (_ "Space Occupied by Text/Music") (_ "Give space:\n(0 prevents dragging position\nBlank for natural size.)") dim))) (if (not (and dim (string->number dim) (>= (string->number dim) 0))) (set! dim #f))) ((offset) (set! params 'finished) (set! x-offset (d-GetUserInput (_ "Offsets") (_ "Give horizontal displacement required") x-offset)) (set! y-offset (d-GetUserInput (_ "Offsets") (_ "Give vertical displacement required") y-offset)) (if (not (and x-offset (string->number x-offset) y-offset (string->number y-offset))) (begin (set! x-offset #f) (set! y-offset #f)))) ((more) (set! params 'abort) (d-EditSimilar)) ((delete) (set! params 'abort) (d-DirectiveDelete-standalone tag))))) (if (not (eq? params 'abort)) (begin (if (and y-offset x-offset) (set! prefix (string-append "<>-\\tweak #'extra-offset #'(" x-offset " . " y-offset ") "))) (if dim (set! dimensions (string-append "\\with-dimensions #'(-" dim " . " dim ") #'(-" dim " . " dim ")"))) (if (not dimensions) (set! dimensions "")) (if (not direction) (set! direction "^")) (if (string? text) (begin (set! params 'finished) (set! text (cons text "")) (get-text))) (if (not (eq? params 'finished)) (get-text)) (if text (begin (if (not scale) (set! scale "1")) (if (not display-text) (set! display-text (car text))) (if scale (begin (set! markup (cdr text)) (set! text (car text)) (set! data (assq-set! data 'text text)) (if display (set! data (assq-set! data 'display display-text))) (set! data (assq-set! data 'scale scale)) (if dim (set! data (assq-set! data 'dimensions dim)) (set! data (assq-remove! data 'dimensions))) (set! data (assq-set! data 'direction direction)) (if x-offset (set! data (assq-set! data 'x-offset x-offset))) (if y-offset (set! data (assq-set! data 'y-offset y-offset))) (if (not (d-Directive-standalone? tag)) (d-DirectivePut-standalone tag)) ;; (d-DirectivePut-standalone-data tag (format #f "'~s" data)) (let ((text (string-append "(list (cons 'text \"" (scheme-escape text) "\")(cons 'scale \"" scale "\")" (if dim (string-append "(cons 'dimensions \"" dim "\")") "") "(cons 'direction \"" direction "\")" (if display (string-append "(cons 'display \"" (scheme-escape display-text) "\")") "") (if x-offset (string-append "(cons 'x-offset \"" x-offset "\")") "") (if y-offset (string-append "(cons 'y-offset \"" y-offset "\")") "") ")"))) (d-DirectivePut-standalone-data tag text)) (if display (d-DirectivePut-standalone-display tag display-text) (d-DirectivePut-standalone-display tag text)) (d-DirectivePut-standalone-postfix tag (string-append direction "\\markup"dimensions"\\scale #'(" scale " . " scale ")\\column{" markup "}")) (d-DirectivePut-standalone-prefix tag prefix) (d-DirectivePut-standalone-minpixels tag 30) (d-RefreshDisplay) (d-SetSaved #f)))) (begin (if (not params) (let ((confirm (d-GetUserInput (d-DirectiveGet-standalone-display tag) (_ "Delete this text?") (_ "y")))) (if (and confirm (equal? confirm (_ "y"))) (begin (d-DirectiveDelete-standalone tag) (d-SetSaved #f)) (d-InfoDialog (_ "Cancelled")))))))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/DaCapo.scm0000644000000000000000000000013213135434035027003 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.393315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/DaCapo.scm0000644000175000017500000000020113135434035030645 0ustar00jjbenhamjjbenham00000000000000(d-MultiLineTextAnnotation (list (cons 'display "D.C al fine")(cons 'scale "1") (cons 'text "\\bold\\italic {D. C. al fine}")))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/BreathMark.scm0000644000000000000000000000013213135434035027674 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.393315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/BreathMark.scm0000644000175000017500000000104713135434035031547 0ustar00jjbenhamjjbenham00000000000000;;;BreathMark (let ((tag "BreathMark")) (if (d-Directive-standalone? tag) (EditForStandaloneToggle tag) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons tag "\\breathe") #f "\n,\nDenemo\n48") (d-DirectivePut-standalone-gy tag -44) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight) (d-RefreshDisplay) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/DaCapo.xml0000644000000000000000000000013213135434035027021 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.403315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/DaCapo.xml0000644000175000017500000000063413135434035030675 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DaCapo CustomRehearsalMark <_label>D.C al fine <_tooltip>Inserts D.C. al fine marking as a standalone Denemo Directive. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/MusicGlyph.scm0000644000000000000000000000013213135434035027740 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.403315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/MusicGlyph.scm0000644000175000017500000007144113135434035031620 0ustar00jjbenhamjjbenham00000000000000;;;MusicGlyph (let ((tag "MusicGlyph")(choice #f)) (set! choice (RadioBoxMenu (cons (_ "rests") (list (cons (_ "0") "rests.0") (cons (_ "1") "rests.1") (cons (_ "0o") "rests.0o") (cons (_ "1o") "rests.1o") (cons (_ "M3") "rests.M3") (cons (_ "M2") "rests.M2") (cons (_ "M1") "rests.M1") (cons (_ "M1o") "rests.M1o") (cons (_ "2") "rests.2") (cons (_ "2classical") "rests.2classical") (cons (_ "3") "rests.3") (cons (_ "4") "rests.4") (cons (_ "5") "rests.5") (cons (_ "6") "rests.6") (cons (_ "7") "rests.7") )) (cons (_ "accidentals") (list (cons (_ "sharp") "accidentals.sharp") (cons (_ "sharp.arrowup") "accidentals.sharp.arrowup") (cons (_ "sharp.arrowdown") "accidentals.sharp.arrowdown") (cons (_ "sharp.arrowboth") "accidentals.sharp.arrowboth") (cons (_ "sharp.slashslash.stem") "accidentals.sharp.slashslash.stem") (cons (_ "sharp.slashslashslash.stemstem") "accidentals.sharp.slashslashslash.stemstem") (cons (_ "sharp.slashslashslash.stem") "accidentals.sharp.slashslashslash.stem") (cons (_ "sharp.slashslash.stemstemstem") "accidentals.sharp.slashslash.stemstemstem") (cons (_ "natural") "accidentals.natural") (cons (_ "natural.arrowup") "accidentals.natural.arrowup") (cons (_ "natural.arrowdown") "accidentals.natural.arrowdown") (cons (_ "natural.arrowboth") "accidentals.natural.arrowboth") (cons (_ "flat") "accidentals.flat") (cons (_ "flat.arrowup") "accidentals.flat.arrowup") (cons (_ "flat.arrowdown") "accidentals.flat.arrowdown") (cons (_ "flat.arrowboth") "accidentals.flat.arrowboth") (cons (_ "flat.slash") "accidentals.flat.slash") (cons (_ "flat.slashslash") "accidentals.flat.slashslash") (cons (_ "mirroredflat.flat") "accidentals.mirroredflat.flat") (cons (_ "mirroredflat") "accidentals.mirroredflat") (cons (_ "mirroredflat.backslash") "accidentals.mirroredflat.backslash") (cons (_ "flatflat") "accidentals.flatflat") (cons (_ "flatflat.slash") "accidentals.flatflat.slash") (cons (_ "doublesharp") "accidentals.doublesharp") (cons (_ "rightparen") "accidentals.rightparen") (cons (_ "leftparen") "accidentals.leftparen") )) (cons (_ "arrowheads") (list (cons (_ "open.01") "arrowheads.open.01") (cons (_ "open.0M1") "arrowheads.open.0M1") (cons (_ "open.11") "arrowheads.open.11") (cons (_ "open.1M1") "arrowheads.open.1M1") (cons (_ "close.01") "arrowheads.close.01") (cons (_ "close.0M1") "arrowheads.close.0M1") (cons (_ "close.11") "arrowheads.close.11") (cons (_ "close.1M1") "arrowheads.close.1M1") )) (cons (_ "dots") (list (cons (_ "dot") "dots.dot") )) (cons (_ "scripts") (list (cons (_ "ufermata") "scripts.ufermata") (cons (_ "dfermata") "scripts.dfermata") (cons (_ "ushortfermata") "scripts.ushortfermata") (cons (_ "dshortfermata") "scripts.dshortfermata") (cons (_ "ulongfermata") "scripts.ulongfermata") (cons (_ "dlongfermata") "scripts.dlongfermata") (cons (_ "uverylongfermata") "scripts.uverylongfermata") (cons (_ "dverylongfermata") "scripts.dverylongfermata") (cons (_ "thumb") "scripts.thumb") (cons (_ "sforzato") "scripts.sforzato") (cons (_ "espr") "scripts.espr") (cons (_ "staccato") "scripts.staccato") (cons (_ "ustaccatissimo") "scripts.ustaccatissimo") (cons (_ "dstaccatissimo") "scripts.dstaccatissimo") (cons (_ "tenuto") "scripts.tenuto") (cons (_ "uportato") "scripts.uportato") (cons (_ "dportato") "scripts.dportato") (cons (_ "umarcato") "scripts.umarcato") (cons (_ "dmarcato") "scripts.dmarcato") )) (cons (_ "more scripts") (list (cons (_ "open") "scripts.open") (cons (_ "halfopen") "scripts.halfopen") (cons (_ "halfopenvertical") "scripts.halfopenvertical") (cons (_ "stopped") "scripts.stopped") (cons (_ "upbow") "scripts.upbow") (cons (_ "downbow") "scripts.downbow") (cons (_ "reverseturn") "scripts.reverseturn") (cons (_ "turn") "scripts.turn") (cons (_ "trill") "scripts.trill") (cons (_ "upedalheel") "scripts.upedalheel") (cons (_ "dpedalheel") "scripts.dpedalheel") (cons (_ "upedaltoe") "scripts.upedaltoe") (cons (_ "dpedaltoe") "scripts.dpedaltoe") (cons (_ "flageolet") "scripts.flageolet") (cons (_ "segno") "scripts.segno") (cons (_ "varsegno") "scripts.varsegno") (cons (_ "coda") "scripts.coda") (cons (_ "varcoda") "scripts.varcoda") (cons (_ "rcomma") "scripts.rcomma") (cons (_ "lcomma") "scripts.lcomma") (cons (_ "rvarcomma") "scripts.rvarcomma") (cons (_ "lvarcomma") "scripts.lvarcomma") )) (cons (_ "and more scripts") (list (cons (_ "arpeggio") "scripts.arpeggio") (cons (_ "trill_element") "scripts.trill_element") (cons (_ "arpeggio.arrow.M1") "scripts.arpeggio.arrow.M1") (cons (_ "arpeggio.arrow.1") "scripts.arpeggio.arrow.1") (cons (_ "trilelement") "scripts.trilelement") (cons (_ "prall") "scripts.prall") (cons (_ "mordent") "scripts.mordent") (cons (_ "prallprall") "scripts.prallprall") (cons (_ "prallmordent") "scripts.prallmordent") (cons (_ "upprall") "scripts.upprall") (cons (_ "upmordent") "scripts.upmordent") (cons (_ "pralldown") "scripts.pralldown") (cons (_ "downprall") "scripts.downprall") (cons (_ "downmordent") "scripts.downmordent") (cons (_ "prallup") "scripts.prallup") (cons (_ "lineprall") "scripts.lineprall") (cons (_ "caesura.curved") "scripts.caesura.curved") (cons (_ "caesura.straight") "scripts.caesura.straight") (cons (_ "tickmark") "scripts.tickmark") (cons (_ "snappizzicato") "scripts.snappizzicato") (cons (_ "ictus") "scripts.ictus") (cons (_ "uaccentus") "scripts.uaccentus") (cons (_ "daccentus") "scripts.daccentus") (cons (_ "usemicirculus") "scripts.usemicirculus") (cons (_ "dsemicirculus") "scripts.dsemicirculus") (cons (_ "circulus") "scripts.circulus") (cons (_ "augmentum") "scripts.augmentum") (cons (_ "usignumcongruentiae") "scripts.usignumcongruentiae") (cons (_ "dsignumcongruentiae") "scripts.dsignumcongruentiae") (cons (_ "barline.kievan") "scripts.barline.kievan") )) (cons (_ "clefs") (list (cons (_ "C") "clefs.C") (cons (_ "C_change") "clefs.C_change") (cons (_ "F") "clefs.F") (cons (_ "F_change") "clefs.F_change") (cons (_ "G") "clefs.G") (cons (_ "G_change") "clefs.G_change") (cons (_ "percussion") "clefs.percussion") (cons (_ "percussion_change") "clefs.percussion_change") (cons (_ "tab") "clefs.tab") (cons (_ "tab_change") "clefs.tab_change") )) (cons (_ "more clefs") (list (cons (_ "vaticana.do") "clefs.vaticana.do") (cons (_ "vaticana.do_change") "clefs.vaticana.do_change") (cons (_ "vaticana.fa") "clefs.vaticana.fa") (cons (_ "vaticana.fa_change") "clefs.vaticana.fa_change") (cons (_ "medicaea.do") "clefs.medicaea.do") (cons (_ "medicaea.do_change") "clefs.medicaea.do_change") (cons (_ "medicaea.fa") "clefs.medicaea.fa") (cons (_ "medicaea.fa_change") "clefs.medicaea.fa_change") (cons (_ "neomensural.c") "clefs.neomensural.c") (cons (_ "neomensural.c_change") "clefs.neomensural.c_change") (cons (_ "petrucci.c1") "clefs.petrucci.c1") (cons (_ "petrucci.c1_change") "clefs.petrucci.c1_change") (cons (_ "petrucci.c2") "clefs.petrucci.c2") (cons (_ "petrucci.c2_change") "clefs.petrucci.c2_change") (cons (_ "petrucci.c3") "clefs.petrucci.c3") (cons (_ "petrucci.c3_change") "clefs.petrucci.c3_change") (cons (_ "petrucci.c4") "clefs.petrucci.c4") (cons (_ "petrucci.c4_change") "clefs.petrucci.c4_change") (cons (_ "petrucci.c5") "clefs.petrucci.c5") (cons (_ "petrucci.c5_change") "clefs.petrucci.c5_change") )) (cons (_ "more clefs") (list (cons (_ "mensural.c") "clefs.mensural.c") (cons (_ "mensural.c_change") "clefs.mensural.c_change") (cons (_ "blackmensural.c") "clefs.blackmensural.c") (cons (_ "blackmensural.c_change") "clefs.blackmensural.c_change") (cons (_ "petrucci.f") "clefs.petrucci.f") (cons (_ "petrucci.f_change") "clefs.petrucci.f_change") (cons (_ "mensural.f") "clefs.mensural.f") (cons (_ "mensural.f_change") "clefs.mensural.f_change") (cons (_ "petrucci.g") "clefs.petrucci.g") (cons (_ "petrucci.g_change") "clefs.petrucci.g_change") (cons (_ "mensural.g") "clefs.mensural.g") (cons (_ "mensural.g_change") "clefs.mensural.g_change") (cons (_ "hufnagel.do") "clefs.hufnagel.do") (cons (_ "hufnagel.do_change") "clefs.hufnagel.do_change") (cons (_ "hufnagel.fa") "clefs.hufnagel.fa") (cons (_ "hufnagel.fa_change") "clefs.hufnagel.fa_change") (cons (_ "hufnagel.do.fa") "clefs.hufnagel.do.fa") (cons (_ "hufnagel.do.fa_change") "clefs.hufnagel.do.fa_change") (cons (_ "kievan.do") "clefs.kievan.do") (cons (_ "kievan.do_change") "clefs.kievan.do_change") )) (cons (_ "timesig") (list (cons (_ "C44") "timesig.C44") (cons (_ "C22") "timesig.C22") )) (cons (_ "mensural timesig") (list (cons (_ "mensural44") "timesig.mensural44") (cons (_ "mensural22") "timesig.mensural22") (cons (_ "mensural32") "timesig.mensural32") (cons (_ "mensural64") "timesig.mensural64") (cons (_ "mensural94") "timesig.mensural94") (cons (_ "mensural34") "timesig.mensural34") (cons (_ "mensural68") "timesig.mensural68") (cons (_ "mensural98") "timesig.mensural98") (cons (_ "mensural48") "timesig.mensural48") (cons (_ "mensural68alt") "timesig.mensural68alt") (cons (_ "mensural24") "timesig.mensural24") (cons (_ "neomensural44") "timesig.neomensural44") (cons (_ "neomensural22") "timesig.neomensural22") (cons (_ "neomensural32") "timesig.neomensural32") (cons (_ "neomensural64") "timesig.neomensural64") (cons (_ "neomensural94") "timesig.neomensural94") (cons (_ "neomensural34") "timesig.neomensural34") (cons (_ "neomensural68") "timesig.neomensural68") (cons (_ "neomensural98") "timesig.neomensural98") (cons (_ "neomensural48") "timesig.neomensural48") (cons (_ "neomensural68alt") "timesig.neomensural68alt") (cons (_ "neomensural24") "timesig.neomensural24") )) (cons (_ "pedal") (list (cons (_ "*") "pedal.*") (cons (_ "M") "pedal.M") (cons (_ ".") "pedal..") (cons (_ "P") "pedal.P") (cons (_ "d") "pedal.d") (cons (_ "e") "pedal.e") (cons (_ "Ped") "pedal.Ped") )) (cons (_ "brackettips") (list (cons (_ "up") "brackettips.up") (cons (_ "down") "brackettips.down") )) (cons (_ "accordion") (list (cons (_ "discant") "accordion.discant") (cons (_ "dot") "accordion.dot") (cons (_ "freebass") "accordion.freebass") (cons (_ "stdbass") "accordion.stdbass") (cons (_ "bayanbass") "accordion.bayanbass") (cons (_ "oldEE") "accordion.oldEE") (cons (_ "push") "accordion.push") (cons (_ "pull") "accordion.pull") )) (cons (_ "ties") (list (cons (_ "lyric.short") "ties.lyric.short") (cons (_ "lyric.default") "ties.lyric.default") )) (cons (_ "noteheads") (list (cons (_ "uM2") "noteheads.uM2") (cons (_ "dM2") "noteheads.dM2") (cons (_ "sM1") "noteheads.sM1") (cons (_ "sM1double") "noteheads.sM1double") (cons (_ "s0") "noteheads.s0") (cons (_ "s1") "noteheads.s1") (cons (_ "s2") "noteheads.s2") (cons (_ "s0diamond") "noteheads.s0diamond") (cons (_ "s1diamond") "noteheads.s1diamond") (cons (_ "s2diamond") "noteheads.s2diamond") (cons (_ "s0triangle") "noteheads.s0triangle") (cons (_ "d1triangle") "noteheads.d1triangle") (cons (_ "u1triangle") "noteheads.u1triangle") (cons (_ "u2triangle") "noteheads.u2triangle") (cons (_ "d2triangle") "noteheads.d2triangle") (cons (_ "s0slash") "noteheads.s0slash") (cons (_ "s1slash") "noteheads.s1slash") (cons (_ "s2slash") "noteheads.s2slash") (cons (_ "s0cross") "noteheads.s0cross") (cons (_ "s1cross") "noteheads.s1cross") (cons (_ "s2cross") "noteheads.s2cross") (cons (_ "s2xcircle") "noteheads.s2xcircle") (cons (_ "s0do") "noteheads.s0do") (cons (_ "d1do") "noteheads.d1do") (cons (_ "u1do") "noteheads.u1do") (cons (_ "d2do") "noteheads.d2do") (cons (_ "u2do") "noteheads.u2do") (cons (_ "s0doThin") "noteheads.s0doThin") (cons (_ "d1doThin") "noteheads.d1doThin") (cons (_ "u1doThin") "noteheads.u1doThin") (cons (_ "d2doThin") "noteheads.d2doThin") (cons (_ "u2doThin") "noteheads.u2doThin") (cons (_ "s0re") "noteheads.s0re") (cons (_ "u1re") "noteheads.u1re") (cons (_ "d1re") "noteheads.d1re") (cons (_ "u2re") "noteheads.u2re") (cons (_ "d2re") "noteheads.d2re") )) (cons (_ "noteheads") (list (cons (_ "s0reThin") "noteheads.s0reThin") (cons (_ "u1reThin") "noteheads.u1reThin") (cons (_ "d1reThin") "noteheads.d1reThin") (cons (_ "u2reThin") "noteheads.u2reThin") (cons (_ "d2reThin") "noteheads.d2reThin") (cons (_ "s0mi") "noteheads.s0mi") (cons (_ "s1mi") "noteheads.s1mi") (cons (_ "s2mi") "noteheads.s2mi") (cons (_ "s0miMirror") "noteheads.s0miMirror") (cons (_ "s1miMirror") "noteheads.s1miMirror") (cons (_ "s2miMirror") "noteheads.s2miMirror") (cons (_ "s0miThin") "noteheads.s0miThin") (cons (_ "s1miThin") "noteheads.s1miThin") (cons (_ "s2miThin") "noteheads.s2miThin") (cons (_ "u0fa") "noteheads.u0fa") (cons (_ "d0fa") "noteheads.d0fa") (cons (_ "u1fa") "noteheads.u1fa") (cons (_ "d1fa") "noteheads.d1fa") (cons (_ "u2fa") "noteheads.u2fa") (cons (_ "d2fa") "noteheads.d2fa") (cons (_ "u0faThin") "noteheads.u0faThin") (cons (_ "d0faThin") "noteheads.d0faThin") (cons (_ "u1faThin") "noteheads.u1faThin") (cons (_ "d1faThin") "noteheads.d1faThin") (cons (_ "u2faThin") "noteheads.u2faThin") (cons (_ "d2faThin") "noteheads.d2faThin") (cons (_ "s0sol") "noteheads.s0sol") (cons (_ "s1sol") "noteheads.s1sol") (cons (_ "s2sol") "noteheads.s2sol") (cons (_ "s0la") "noteheads.s0la") (cons (_ "s1la") "noteheads.s1la") (cons (_ "s2la") "noteheads.s2la") (cons (_ "s0laThin") "noteheads.s0laThin") (cons (_ "s1laThin") "noteheads.s1laThin") (cons (_ "s2laThin") "noteheads.s2laThin") (cons (_ "s0ti") "noteheads.s0ti") (cons (_ "u1ti") "noteheads.u1ti") (cons (_ "d1ti") "noteheads.d1ti") (cons (_ "u2ti") "noteheads.u2ti") (cons (_ "d2ti") "noteheads.d2ti") (cons (_ "s0tiThin") "noteheads.s0tiThin") (cons (_ "u1tiThin") "noteheads.u1tiThin") (cons (_ "d1tiThin") "noteheads.d1tiThin") (cons (_ "u2tiThin") "noteheads.u2tiThin") (cons (_ "d2tiThin") "noteheads.d2tiThin") )) (cons (_ "Funk noteheads") (list (cons (_ "u0doFunk") "noteheads.u0doFunk") (cons (_ "d0doFunk") "noteheads.d0doFunk") (cons (_ "u1doFunk") "noteheads.u1doFunk") (cons (_ "d1doFunk") "noteheads.d1doFunk") (cons (_ "u2doFunk") "noteheads.u2doFunk") (cons (_ "d2doFunk") "noteheads.d2doFunk") (cons (_ "u0reFunk") "noteheads.u0reFunk") (cons (_ "d0reFunk") "noteheads.d0reFunk") (cons (_ "u1reFunk") "noteheads.u1reFunk") (cons (_ "d1reFunk") "noteheads.d1reFunk") (cons (_ "u2reFunk") "noteheads.u2reFunk") (cons (_ "d2reFunk") "noteheads.d2reFunk") (cons (_ "u0miFunk") "noteheads.u0miFunk") (cons (_ "d0miFunk") "noteheads.d0miFunk") (cons (_ "u1miFunk") "noteheads.u1miFunk") (cons (_ "d1miFunk") "noteheads.d1miFunk") (cons (_ "s2miFunk") "noteheads.s2miFunk") (cons (_ "u0faFunk") "noteheads.u0faFunk") (cons (_ "d0faFunk") "noteheads.d0faFunk") )) (cons (_ "Funk noteheads") (list (cons (_ "u1faFunk") "noteheads.u1faFunk") (cons (_ "d1faFunk") "noteheads.d1faFunk") (cons (_ "u2faFunk") "noteheads.u2faFunk") (cons (_ "d2faFunk") "noteheads.d2faFunk") (cons (_ "s0solFunk") "noteheads.s0solFunk") (cons (_ "s1solFunk") "noteheads.s1solFunk") (cons (_ "s2solFunk") "noteheads.s2solFunk") (cons (_ "s0laFunk") "noteheads.s0laFunk") (cons (_ "s1laFunk") "noteheads.s1laFunk") (cons (_ "s2laFunk") "noteheads.s2laFunk") (cons (_ "u0tiFunk") "noteheads.u0tiFunk") (cons (_ "d0tiFunk") "noteheads.d0tiFunk") (cons (_ "u1tiFunk") "noteheads.u1tiFunk") (cons (_ "d1tiFunk") "noteheads.d1tiFunk") (cons (_ "u2tiFunk") "noteheads.u2tiFunk") (cons (_ "d2tiFunk") "noteheads.d2tiFunk") )) (cons (_ "Walker noteheads") (list (cons (_ "s0doWalker") "noteheads.s0doWalker") (cons (_ "u1doWalker") "noteheads.u1doWalker") (cons (_ "d1doWalker") "noteheads.d1doWalker") (cons (_ "u2doWalker") "noteheads.u2doWalker") (cons (_ "d2doWalker") "noteheads.d2doWalker") (cons (_ "s0reWalker") "noteheads.s0reWalker") (cons (_ "u1reWalker") "noteheads.u1reWalker") (cons (_ "d1reWalker") "noteheads.d1reWalker") (cons (_ "u2reWalker") "noteheads.u2reWalker") (cons (_ "d2reWalker") "noteheads.d2reWalker") (cons (_ "s0miWalker") "noteheads.s0miWalker") (cons (_ "s1miWalker") "noteheads.s1miWalker") (cons (_ "s2miWalker") "noteheads.s2miWalker") (cons (_ "s0faWalker") "noteheads.s0faWalker") (cons (_ "u1faWalker") "noteheads.u1faWalker") (cons (_ "d1faWalker") "noteheads.d1faWalker") (cons (_ "u2faWalker") "noteheads.u2faWalker") (cons (_ "d2faWalker") "noteheads.d2faWalker") (cons (_ "s0laWalker") "noteheads.s0laWalker") (cons (_ "s1laWalker") "noteheads.s1laWalker") (cons (_ "s2laWalker") "noteheads.s2laWalker") (cons (_ "s0tiWalker") "noteheads.s0tiWalker") (cons (_ "u1tiWalker") "noteheads.u1tiWalker") (cons (_ "d1tiWalker") "noteheads.d1tiWalker") (cons (_ "u2tiWalker") "noteheads.u2tiWalker") (cons (_ "d2tiWalker") "noteheads.d2tiWalker") )) (cons (_ "mensural noteheads") (list (cons (_ "uM3neomensural") "noteheads.uM3neomensural") (cons (_ "dM3neomensural") "noteheads.dM3neomensural") (cons (_ "uM2neomensural") "noteheads.uM2neomensural") (cons (_ "dM2neomensural") "noteheads.dM2neomensural") (cons (_ "sM1neomensural") "noteheads.sM1neomensural") (cons (_ "urM3neomensural") "noteheads.urM3neomensural") (cons (_ "drM3neomensural") "noteheads.drM3neomensural") (cons (_ "urM2neomensural") "noteheads.urM2neomensural") (cons (_ "drM2neomensural") "noteheads.drM2neomensural") (cons (_ "srM1neomensural") "noteheads.srM1neomensural") (cons (_ "s0neomensural") "noteheads.s0neomensural") (cons (_ "s1neomensural") "noteheads.s1neomensural") (cons (_ "s2neomensural") "noteheads.s2neomensural") (cons (_ "s0harmonic") "noteheads.s0harmonic") (cons (_ "s2harmonic") "noteheads.s2harmonic") (cons (_ "uM3mensural") "noteheads.uM3mensural") (cons (_ "dM3mensural") "noteheads.dM3mensural") (cons (_ "sM3ligmensural") "noteheads.sM3ligmensural") (cons (_ "uM2mensural") "noteheads.uM2mensural") (cons (_ "dM2mensural") "noteheads.dM2mensural") (cons (_ "sM2ligmensural") "noteheads.sM2ligmensural") (cons (_ "sM1mensural") "noteheads.sM1mensural") (cons (_ "urM3mensural") "noteheads.urM3mensural") (cons (_ "drM3mensural") "noteheads.drM3mensural") (cons (_ "srM3ligmensural") "noteheads.srM3ligmensural") (cons (_ "urM2mensural") "noteheads.urM2mensural") (cons (_ "drM2mensural") "noteheads.drM2mensural") (cons (_ "srM2ligmensural") "noteheads.srM2ligmensural") )) (cons (_ "more mensural noteheads") (list (cons (_ "srM1mensural") "noteheads.srM1mensural") (cons (_ "uM3semimensural") "noteheads.uM3semimensural") (cons (_ "dM3semimensural") "noteheads.dM3semimensural") (cons (_ "sM3semiligmensural") "noteheads.sM3semiligmensural") (cons (_ "uM2semimensural") "noteheads.uM2semimensural") (cons (_ "dM2semimensural") "noteheads.dM2semimensural") (cons (_ "sM2semiligmensural") "noteheads.sM2semiligmensural") (cons (_ "sM1semimensural") "noteheads.sM1semimensural") (cons (_ "urM3semimensural") "noteheads.urM3semimensural") (cons (_ "drM3semimensural") "noteheads.drM3semimensural") (cons (_ "srM3semiligmensural") "noteheads.srM3semiligmensural") (cons (_ "urM2semimensural") "noteheads.urM2semimensural") (cons (_ "drM2semimensural") "noteheads.drM2semimensural") (cons (_ "srM2semiligmensural") "noteheads.srM2semiligmensural") (cons (_ "srM1semimensural") "noteheads.srM1semimensural") (cons (_ "uM3blackmensural") "noteheads.uM3blackmensural") (cons (_ "dM3blackmensural") "noteheads.dM3blackmensural") (cons (_ "sM3blackligmensural") "noteheads.sM3blackligmensural") (cons (_ "uM2blackmensural") "noteheads.uM2blackmensural") (cons (_ "dM2blackmensural") "noteheads.dM2blackmensural") (cons (_ "sM2blackligmensural") "noteheads.sM2blackligmensural") (cons (_ "sM1blackmensural") "noteheads.sM1blackmensural") (cons (_ "s0mensural") "noteheads.s0mensural") (cons (_ "s1mensural") "noteheads.s1mensural") (cons (_ "s2mensural") "noteheads.s2mensural") (cons (_ "s0blackmensural") "noteheads.s0blackmensural") )) (cons (_ "ancient noteheads") (list (cons (_ "s0petrucci") "noteheads.s0petrucci") (cons (_ "s1petrucci") "noteheads.s1petrucci") (cons (_ "s2petrucci") "noteheads.s2petrucci") (cons (_ "s0blackpetrucci") "noteheads.s0blackpetrucci") (cons (_ "s1blackpetrucci") "noteheads.s1blackpetrucci") (cons (_ "s2blackpetrucci") "noteheads.s2blackpetrucci") (cons (_ "svaticana.punctum") "noteheads.svaticana.punctum") (cons (_ "svaticana.punctum.cavum") "noteheads.svaticana.punctum.cavum") (cons (_ "svaticana.linea.punctum") "noteheads.svaticana.linea.punctum") (cons (_ "svaticana.linea.punctum.cavum") "noteheads.svaticana.linea.punctum.cavum") (cons (_ "svaticana.inclinatum") "noteheads.svaticana.inclinatum") (cons (_ "svaticana.lpes") "noteheads.svaticana.lpes") (cons (_ "svaticana.vlpes") "noteheads.svaticana.vlpes") (cons (_ "svaticana.upes") "noteheads.svaticana.upes") (cons (_ "svaticana.vupes") "noteheads.svaticana.vupes") (cons (_ "svaticana.plica") "noteheads.svaticana.plica") (cons (_ "svaticana.vplica") "noteheads.svaticana.vplica") (cons (_ "svaticana.epiphonus") "noteheads.svaticana.epiphonus") (cons (_ "svaticana.vepiphonus") "noteheads.svaticana.vepiphonus") (cons (_ "svaticana.reverse.plica") "noteheads.svaticana.reverse.plica") (cons (_ "svaticana.reverse.vplica") "noteheads.svaticana.reverse.vplica") (cons (_ "svaticana.inner.cephalicus") "noteheads.svaticana.inner.cephalicus") (cons (_ "svaticana.cephalicus") "noteheads.svaticana.cephalicus") (cons (_ "svaticana.quilisma") "noteheads.svaticana.quilisma") )) (cons (_ "more ancient noteheads") (list (cons (_ "ssolesmes.incl.parvum") "noteheads.ssolesmes.incl.parvum") (cons (_ "ssolesmes.auct.asc") "noteheads.ssolesmes.auct.asc") (cons (_ "ssolesmes.auct.desc") "noteheads.ssolesmes.auct.desc") (cons (_ "ssolesmes.incl.auctum") "noteheads.ssolesmes.incl.auctum") (cons (_ "ssolesmes.stropha") "noteheads.ssolesmes.stropha") (cons (_ "ssolesmes.stropha.aucta") "noteheads.ssolesmes.stropha.aucta") (cons (_ "ssolesmes.oriscus") "noteheads.ssolesmes.oriscus") (cons (_ "smedicaea.inclinatum") "noteheads.smedicaea.inclinatum") (cons (_ "smedicaea.punctum") "noteheads.smedicaea.punctum") (cons (_ "smedicaea.rvirga") "noteheads.smedicaea.rvirga") (cons (_ "smedicaea.virga") "noteheads.smedicaea.virga") (cons (_ "shufnagel.punctum") "noteheads.shufnagel.punctum") (cons (_ "shufnagel.virga") "noteheads.shufnagel.virga") (cons (_ "shufnagel.lpes") "noteheads.shufnagel.lpes") )) (cons (_ "kievan noteheads") (list (cons (_ "sM2kievan") "noteheads.sM2kievan") (cons (_ "sM1kievan") "noteheads.sM1kievan") (cons (_ "s0kievan") "noteheads.s0kievan") (cons (_ "d2kievan") "noteheads.d2kievan") (cons (_ "u2kievan") "noteheads.u2kievan") (cons (_ "s1kievan") "noteheads.s1kievan") (cons (_ "sr1kievan") "noteheads.sr1kievan") (cons (_ "d3kievan") "noteheads.d3kievan") (cons (_ "u3kievan") "noteheads.u3kievan") )) (cons (_ "flags") (list (cons (_ "u3") "flags.u3") (cons (_ "u4") "flags.u4") (cons (_ "u5") "flags.u5") (cons (_ "u6") "flags.u6") (cons (_ "u7") "flags.u7") (cons (_ "d3") "flags.d3") (cons (_ "d4") "flags.d4") (cons (_ "d5") "flags.d5") (cons (_ "d6") "flags.d6") (cons (_ "d7") "flags.d7") (cons (_ "ugrace") "flags.ugrace") (cons (_ "dgrace") "flags.dgrace") )) (cons (_ "rests") (list (cons (_ "M3neomensural") "rests.M3neomensural") (cons (_ "M2neomensural") "rests.M2neomensural") (cons (_ "M1neomensural") "rests.M1neomensural") (cons (_ "0neomensural") "rests.0neomensural") (cons (_ "1neomensural") "rests.1neomensural") (cons (_ "2neomensural") "rests.2neomensural") (cons (_ "3neomensural") "rests.3neomensural") (cons (_ "4neomensural") "rests.4neomensural") (cons (_ "M3mensural") "rests.M3mensural") (cons (_ "M2mensural") "rests.M2mensural") (cons (_ "M1mensural") "rests.M1mensural") (cons (_ "0mensural") "rests.0mensural") (cons (_ "1mensural") "rests.1mensural") (cons (_ "2mensural") "rests.2mensural") (cons (_ "3mensural") "rests.3mensural") (cons (_ "4mensural") "rests.4mensural") )) (cons (_ "custodes") (list (cons (_ "hufnagel.u0") "custodes.hufnagel.u0") (cons (_ "hufnagel.u1") "custodes.hufnagel.u1") (cons (_ "hufnagel.u2") "custodes.hufnagel.u2") (cons (_ "hufnagel.d0") "custodes.hufnagel.d0") (cons (_ "hufnagel.d1") "custodes.hufnagel.d1") (cons (_ "hufnagel.d2") "custodes.hufnagel.d2") (cons (_ "medicaea.u0") "custodes.medicaea.u0") (cons (_ "medicaea.u1") "custodes.medicaea.u1") (cons (_ "medicaea.u2") "custodes.medicaea.u2") (cons (_ "medicaea.d0") "custodes.medicaea.d0") (cons (_ "medicaea.d1") "custodes.medicaea.d1") (cons (_ "medicaea.d2") "custodes.medicaea.d2") (cons (_ "vaticana.u0") "custodes.vaticana.u0") (cons (_ "vaticana.u1") "custodes.vaticana.u1") (cons (_ "vaticana.u2") "custodes.vaticana.u2") (cons (_ "vaticana.d0") "custodes.vaticana.d0") (cons (_ "vaticana.d1") "custodes.vaticana.d1") (cons (_ "vaticana.d2") "custodes.vaticana.d2") (cons (_ "mensural.u0") "custodes.mensural.u0") (cons (_ "mensural.u1") "custodes.mensural.u1") (cons (_ "mensural.u2") "custodes.mensural.u2") (cons (_ "mensural.d0") "custodes.mensural.d0") (cons (_ "mensural.d1") "custodes.mensural.d1") (cons (_ "mensural.d2") "custodes.mensural.d2") )) (cons (_ "accidentals") (list (cons (_ "medicaeaM1") "accidentals.medicaeaM1") (cons (_ "vaticanaM1") "accidentals.vaticanaM1") (cons (_ "vaticana0") "accidentals.vaticana0") (cons (_ "mensural1") "accidentals.mensural1") (cons (_ "mensuralM1") "accidentals.mensuralM1") (cons (_ "hufnagelM1") "accidentals.hufnagelM1") (cons (_ "kievan1") "accidentals.kievan1") (cons (_ "kievanM1") "accidentals.kievanM1") )) (cons (_ "flags") (list (cons (_ "mensuralu03") "flags.mensuralu03") (cons (_ "mensuralu13") "flags.mensuralu13") (cons (_ "mensuralu23") "flags.mensuralu23") (cons (_ "mensurald03") "flags.mensurald03") (cons (_ "mensurald13") "flags.mensurald13") (cons (_ "mensurald23") "flags.mensurald23") (cons (_ "mensuralu04") "flags.mensuralu04") (cons (_ "mensuralu14") "flags.mensuralu14") (cons (_ "mensuralu24") "flags.mensuralu24") (cons (_ "mensurald04") "flags.mensurald04") (cons (_ "mensurald14") "flags.mensurald14") (cons (_ "mensurald24") "flags.mensurald24") (cons (_ "mensuralu05") "flags.mensuralu05") (cons (_ "mensuralu15") "flags.mensuralu15") (cons (_ "mensuralu25") "flags.mensuralu25") (cons (_ "mensurald05") "flags.mensurald05") (cons (_ "mensurald15") "flags.mensurald15") (cons (_ "mensurald25") "flags.mensurald25") (cons (_ "mensuralu06") "flags.mensuralu06") (cons (_ "mensuralu16") "flags.mensuralu16") (cons (_ "mensuralu26") "flags.mensuralu26") (cons (_ "mensurald06") "flags.mensurald06") (cons (_ "mensurald16") "flags.mensurald16") (cons (_ "mensurald26") "flags.mensurald26") )) (cons (_ "dots") (list (cons (_ "dotvaticana") "dots.dotvaticana") (cons (_ "dotkievan") "dots.dotkievan") )) (cons (_ "...") (list (cons (_ "space") "space") (cons (_ "plus") "plus") (cons (_ "comma") "comma") (cons (_ "hyphen") "hyphen") (cons (_ "period") "period") (cons (_ "zero") "zero") (cons (_ "one") "one") (cons (_ "two") "two") (cons (_ "three") "three") (cons (_ "four") "four") (cons (_ "five") "five") (cons (_ "six") "six") (cons (_ "seven") "seven") (cons (_ "eight") "eight") (cons (_ "nine") "nine") (cons (_ "f") "f") (cons (_ "m") "m") (cons (_ "p") "p") (cons (_ "r") "r") (cons (_ "s") "s") (cons (_ "z") "z") )) )) (if choice (set! choice (RadioBoxMenuList choice))) (if choice (begin (StandAloneDirectiveProto (cons tag (string-append "^\\markup {\\musicglyph #\"" choice "\"} ")) #f #f choice) (d-DirectivePut-standalone-prefix tag "<>") (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/MultiLineTextAn0000644000000000000000000000013213135434035030121 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.443315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/MultiLineTextAnnotation.xml0000644000175000017500000000107013135434035034343 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TextAnnotation MultiLineTextAnnotation <_label>Multi-line Text and Music <_tooltip>Inserts multi-line text object which can include music snippets, Fret Diagrams and Note Names/Chord Symbols. LilyPond Markup can be used and a preview button is available to check the syntax. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/Caesura.xml0000644000000000000000000000013213135434035027255 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.443315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/Caesura.xml0000644000175000017500000000060213135434035031124 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Caesura BreathMark <_label>Caesura <_tooltip>Prints a caesura (pause) at the cursor position. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/InsertGraphic.x0000644000000000000000000000013213135434035030103 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.443315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/InsertGraphic.xml0000644000175000017500000000067113135434035032311 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertGraphic MusicGlyph <_label>Insert Graphic <_tooltip>Inserts a graphic in the music. This should be created as an encapsulated postscript file. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/TextAnnotation.0000644000000000000000000000013213135434035030130 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.456648473 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/TextAnnotation.scm0000644000175000017500000001046513135434035032512 0ustar00jjbenhamjjbenham00000000000000;TextAnnotation (let ((tag "TextAnnotation") (text "pizz.") (oldtext #f) (oldtag #f)) (define (do-direction) (let () (define choice (RadioBoxMenu (cons (_ "Up") 'up) (cons (_ "Down") 'down) (cons (_ "Auto") 'auto))) (case choice ((up) "^") ((down) "_") (else "-")))) (define (do-bold) (let () (define choice (RadioBoxMenu (cons (_ "Bold") 'bold) (cons (_ "Light") 'light))) (case choice ((bold) "\\bold ") (else "")))) (define (do-italic) (let () (define choice (RadioBoxMenu (cons (_ "Italic") 'italic) (cons (_ "Normal") 'normal))) (case choice ((italic) "\\italic ") (else "")))) (if (equal? "edit" TextAnnotation::params) (begin (let ((choice (RadioBoxMenu (cons (_ "Help") 'help) (cons (_ "Edit") 'edit) (cons (_ "Advanced") 'advanced)))) (case choice ((edit) (set! TextAnnotation::params 'edit)) ((advanced) (d-DirectiveTextEdit-standalone tag) (set! TextAnnotation::params 'finished)) (else (d-InfoDialog "This places text tied to the position of the following note or chord.\nIt can't be placed after all music, but the positioning can be altered in the typeset (print) view by right-clicking on the text.") (set! TextAnnotation::params 'finished))))) (if (and (not TextAnnotation::params) (Appending?)) (set! TextAnnotation::params 'abort))) (cond ((equal? TextAnnotation::params 'abort) (set! TextAnnotation::params 'unchanged) (d-InfoDialog (_ "This directive has to be placed before a note, chord or rest.\nThe text itself can be re-positioned by right-clicking in the typeset (print) view"))) ((equal? TextAnnotation::params 'finished) (set! TextAnnotation::params 'unchanged)) ((string? TextAnnotation::params) (let ((text TextAnnotation::params)) (StandaloneText tag text))) ((and (pair? TextAnnotation::params) (equal? (car TextAnnotation::params) 'fontsize)) (let ((value (cdr TextAnnotation::params))) (set! tag (d-DirectiveGetTag-standalone)) (if value (TweakRelativeFontSize tag value)))) ((equal? TextAnnotation::params 'edit) (set! oldtag (d-DirectiveGetTag-standalone)) (set! oldtext (d-DirectiveGet-standalone-display oldtag)) (d-MoveCursorRight) (if (Appending?) (begin (set! TextAnnotation::params 'unchanged) (d-InfoDialog (_ "This directive must be placed before a note to work"))) (begin (d-DeletePreviousObject) (d-TextAnnotation (cons 'default oldtext))))) ((and (pair? TextAnnotation::params) (equal? (car TextAnnotation::params) 'default)) (set! text (d-GetUserInput (_ "Text Annotation") (_ "Give text to be placed in score at cursor\n(it can be dragged in the typeset view)") (cdr TextAnnotation::params))) (if text (StandaloneText tag text (do-direction) (do-bold) (do-italic)) (StandaloneText tag (cdr TextAnnotation::params) "-" "" ""))) ((not TextAnnotation::params) (d-TextAnnotation (cons 'default "pizz.")))) (if (not (equal? TextAnnotation::params 'unchanged)) (begin (d-RefreshDisplay) (d-SetSaved #f))) (set! TextAnnotation::params #f)) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/PaxHeaders.19168/Caesura.scm0000644000000000000000000000013213135434035027237 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.456648473 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/TextMarks/Caesura.scm0000644000175000017500000000150513135434035031111 0ustar00jjbenhamjjbenham00000000000000;;;Caesura (let ((tag "Caesura")) (if (d-Directive-standalone? tag) (let ((choice (RadioBoxMenu (cons (_ "Object Inspector") 'help) (cons (_ "Delete") 'delete)))) (case choice ((help) (d-DisplayCurrentObject)) ((delete) (d-DirectiveDelete-standalone tag)))) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons tag "\\once \\override BreathingSign.text= \\markup \\musicglyph #\"scripts.caesura.straight\" \\breathe") #f "\n//\nDenemo\n24") (d-DirectivePut-standalone-gy tag -44) (d-DirectivePut-standalone-grob tag "BreathingSign") (d-MoveCursorRight))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/AlternativeBars0000644000000000000000000000013213135434150026235 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.543315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/0000755000175000017500000000000013135434150030163 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/PaxHeaders.19168/OpenNthTi0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.466648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/OpenNthTimeBar.xml0000644000175000017500000000103613135434035033526 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenSecondTimeBar OpenNthTimeBar <_label>Start an Nth Time Bar <_tooltip>Start passage to be played on one or more of the repeats as indicated by the text given by the user (e.g. 3 for third time bar). Finish the passage using the End Volta command. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/PaxHeaders.19168/OpenSecon0000644000000000000000000000013213135434035030130 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.466648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/OpenSecondTimeBar.scm0000644000175000017500000000150713135434035034175 0ustar00jjbenhamjjbenham00000000000000;;;OpenSecondTimeBar (let ((tag "OpenNthTimeBar")) (if (d-Directive-standalone? tag) (begin (begin (d-OpenNthTimeBar "edit"))) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 50) (d-DirectivePut-standalone-postfix tag " \\set Score.repeatCommands = #'((volta \"2\")) ") (d-DirectivePut-standalone-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-standalone-gx tag 25) (d-DirectivePut-standalone-gy tag -34) (d-DirectivePut-standalone-graphic tag "SecondTimeBar") (d-DirectivePut-standalone-data tag (format #f "'~s" (list (cons 'volta 2)))) (d-MoveCursorRight) (d-RefreshDisplay) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/PaxHeaders.19168/OpenSecon0000644000000000000000000000013213135434035030130 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.466648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/OpenSecondTimeBar.xml0000644000175000017500000000072513135434035034214 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenFirstTimeBar OpenSecondTimeBar <_label>Start a Second Time Bar <_tooltip>(Print) start (a) second time bar(s), use the End Volta command at the end of the first time bar(s) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/PaxHeaders.19168/EndVolta.0000644000000000000000000000013213135434035030031 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.466648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/EndVolta.xml0000644000175000017500000000073713135434035032432 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenNthTimeBar EndVolta <_label>End Volta (1st, 2nd ... Time Bar) <_tooltip>Ends a volta, that is a n'th time bar; without this the opening of a first (Nth) time bar will not be printed. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/PaxHeaders.19168/OpenFirst0000644000000000000000000000013213135434035030150 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.466648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/OpenFirstTimeBar.xml0000644000175000017500000000072013135434035034063 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ClosingBarline OpenFirstTimeBar <_label>Start a First Time Bar <_tooltip>(Print) start (a) first time bar(s), use the End Volta command at the end of the first time bar(s) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/PaxHeaders.19168/OpenNthTi0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.489981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/OpenNthTimeBar.scm0000644000175000017500000001411413135434035033511 0ustar00jjbenhamjjbenham00000000000000;;;OpenNthTimeBar (let ((tag "OpenNthTimeBar") (params OpenNthTimeBar::params) (text "1, 2.") (data #f) (choice #f) (size "1") (bold #t) (italic #f)) (define (create-volta size italic bold text) (define instring #f) (define result "") (define (nameof adigit) (case adigit ((#\0) "\"zero\"") ((#\1) "\"one\"") ((#\2) "\"two\"") ((#\3) "\"three\"") ((#\4) "\"four\"") ((#\5) "\"five\"") ((#\6) "\"six\"") ((#\7) "\"seven") ((#\8) "\"eight\"") ((#\9) "\"nine\""))) (let loop ((n 0)) (if (< n (string-length text)) (let () (define thischar (string-ref text n)) (if (char-set-contains? char-set:digit thischar) (begin (if instring (begin ;( to balance (set! result (string-append result "\")")) (set! instring #f))) (set! result (string-append result "(make-musicglyph-markup " (nameof thischar) ")(make-hspace-markup -0.5)"))) (begin (if instring (set! result (string-append result (make-string 1 thischar))) (set! result (string-append result "(make-text-markup \"" (make-string 1 thischar)))) ;) to balance (set! instring #t))) (loop (1+ n))) (if instring ;( to balance (set! result (string-append result "\")"))))) (string-append "#(list (list 'volta (make-scale-markup '(" size " . " size ")" (if bold "(make-bold-markup" "") (if italic "(make-italic-markup" "") "(make-line-markup (list " result (if bold ")" "") (if italic ")" "") ")))))")) (set! data (d-DirectiveGet-standalone-data tag)) (if data (begin (set! data (eval-string data)) (set! size (assq-ref data 'size)) (set! bold (assq-ref data 'bold)) (set! italic (assq-ref data 'italic)) (set! text (assq-ref data 'text)))) (if (equal? params "edit") (let ((choice (RadioBoxMenu (cons (_ "Help") 'help) (cons (_ "1st Time Bar") 'first) (cons (_ "2nd Time Bar") 'second) (cons (_ "Arbitrary Text") 'nth)))) (case choice ((help) (set! params 'finished) (d-InfoDialog (_ "This marks the start of one or more measures to be played on one or more of the repeats. There must be a later End Volta mark else nothing prints")) ) ((first) (d-DirectiveDelete-standalone tag) (d-OpenFirstTimeBar #f) (set! params 'finished)) ((second) (d-DirectiveDelete-standalone tag) (d-OpenSecondTimeBar #f) (set! params 'finished)) ((nth) (d-DirectiveDelete-standalone tag)) (else (set! params 'finished))))) (if (equal? params "edit") (let ((choice (RadioBoxMenu (cons (_ "Edit Text") 'text) (cons (_ "Set/Unset Bold") 'bold) (cons (_ "Set/Unset Italic") 'italic) (cons (_ "Edit Size") 'size)))) (case choice ((text) (if (not text) (set! text "3 & 4")) (set! text (d-GetUserInput (_ "Nth Time Bar Text") (_ "Give text: ") text)) ) ((size) (if (not size) (set! size "1")) (set! size (d-GetUserInput (_ "Nth Time Bar Text") (_ "Give size: ") size))) ((bold) (set! bold (not bold))) ((italic) (set! italic (not italic)))))) (if (not (eq? params 'finished)) (begin (if (or (not params) (not text)) (begin (if (not text) (set! text "3 & 4")) (set! text (d-GetUserInput (_ "Nth Time Bar Text") (_ "Give text: ") text)))) (if text (begin (set! data (assq-set! '() 'text text)) (if size (set! data (assq-set! data 'size size))) (if bold (set! data (assq-set! data 'bold bold))) (if italic (set! data (assq-set! data 'italic italic))) (d-Directive-standalone tag) (d-DirectivePut-standalone-data tag (format #f "'~s" data)) (if (not size) (set! size "1")) (d-DirectivePut-standalone-minpixels tag 50) (d-DirectivePut-standalone-postfix tag (string-append " \\set Score.repeatCommands = " (create-volta size italic bold text))) (d-DirectivePut-standalone-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-standalone-gx tag 8) (d-DirectivePut-standalone-gy tag -40) (d-DirectivePut-standalone-graphic tag "NthTimeBar") (d-DirectivePut-standalone-display tag text) (d-MoveCursorRight) (d-RefreshDisplay) (d-SetSaved #f)))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/PaxHeaders.19168/EndVolta.0000644000000000000000000000013213135434035030031 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.489981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/EndVolta.scm0000644000175000017500000000216313135434035032407 0ustar00jjbenhamjjbenham00000000000000;;;EndVolta (let ((tag "EndVolta")) (if (d-Directive-standalone? tag) (let ((choice (d-GetOption (string-append (_ "Help") stop (_ "Delete") stop (_ "Advanced") stop)))) (if choice (if (equal? choice (_ "Delete")) (d-DirectiveDelete-standalone tag) (if (equal? choice (_ "Help")) (d-InfoDialog (_ "This closes a 1st, 2nd, ... n'th time bar")) (if (not (d-DirectiveTextEdit-standalone tag)) (d-DirectiveDelete-standalone tag)))))) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 50) (d-DirectivePut-standalone-postfix tag " \\set Score.repeatCommands = #'((volta #f)) ") (d-DirectivePut-standalone-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-standalone-gx tag 18) (d-DirectivePut-standalone-gy tag -36) (d-DirectivePut-standalone-graphic tag "EndSecondTimeBar") (d-MoveCursorRight))) (d-SetSaved #f) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/PaxHeaders.19168/OpenFirst0000644000000000000000000000013213135434035030150 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.496648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/AlternativeBars/OpenFirstTimeBar.scm0000644000175000017500000000145713135434035034055 0ustar00jjbenhamjjbenham00000000000000;;;OpenFirstTimeBar (let ((tag "OpenNthTimeBar")) (if (d-Directive-standalone? tag) (begin (d-OpenNthTimeBar "edit")) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 50) (d-DirectivePut-standalone-postfix tag " \\set Score.repeatCommands = #'((volta \"1\")) ") (d-DirectivePut-standalone-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-standalone-gx tag 25) (d-DirectivePut-standalone-gy tag -34) (d-DirectivePut-standalone-graphic tag "FirstTimeBar") (d-DirectivePut-standalone-data tag (format #f "'~s" (list (cons 'volta 1)))) (d-MoveCursorRight) (d-RefreshDisplay) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/FreeFermata.xml0000644000000000000000000000013213135434035026131 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.496648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/FreeFermata.xml0000644000175000017500000000067213135434035030007 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FreeFermata <_label>(Print) Standalone Fermata (for Barlines) <_tooltip>Adds a standalone fermata which has no playback effect. Can be used to place a Fermata on a barline. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/FreeCoda.scm0000644000000000000000000000013213135434035025402 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.496648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/FreeCoda.scm0000644000175000017500000000152413135434035027255 0ustar00jjbenhamjjbenham00000000000000;;;Coda symbol attached to the next object, for example a barline. But shown between notes (let ((tag "FreeCoda")) (if (d-Directive-standalone? tag) (let ((choice (RadioBoxMenu (cons (_ "Object Inspector") 'help) (cons (_ "Delete") 'delete)))) (case choice ((help) (d-DisplayCurrentObject)) ((delete) (d-DirectiveDelete-standalone tag)))) (let ((choice (RadioBoxMenu (cons (_ "Show if at end of line") "begin") (cons (_ "Show if at start of line") "end")))) (if choice (StandAloneDirectiveProto (cons tag (string-append "\\tweak break-visibility #" choice "-of-line-invisible \\mark \\markup\\scale #'(1 . 1) { \\musicglyph #\"scripts.coda\" } ")) #t LG-Coda "" ))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/FreeCoda.xml0000644000000000000000000000013213135434035025420 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.496648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/FreeCoda.xml0000644000175000017500000000070013135434035027266 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FreeCoda FreeSegno <_label>Standalone Coda (for barlines) <_tooltip>Coda symbol attached to the net object, for example a barline. But shown between notes. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/MetronomeMark.scm0000644000000000000000000000013213135434035026512 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.506648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/MetronomeMark.scm0000644000175000017500000002013413135434035030363 0ustar00jjbenhamjjbenham00000000000000;MetronomeMark ;;Tempo-script by DW tweaked by RTS (let ( (tag "MetronomeMark") (TempoChoice #f) (replace #f) (input "") (AboveBelow? "^") (MidiBPM 60) (ShowBPM? #f)(ValidBPM? #f) (BPMString "") (Go? #t) (LilyString #f) (TempoAdjust #f)(DisplayString "") (InQuotes "")(duration "4") (bpm 60) (OldLily (not (d-CheckLilyVersion "2.12.0"))) ) (define (GetBPM BaseBeat ) ;sets MidiBPM, ValidBPM?, BPMString (let ((dotted #f) (MetronomeMarkVisible #f)(defaultBPM "60") (len 1)) (set! defaultBPM (cond ( (equal? TempoChoice "Presto" ) "168" ) ( (equal? TempoChoice "Vivace" ) "140" ) ( (equal? TempoChoice "Allegro" ) "120" ) ( (equal? TempoChoice "Moderato" ) "108" ) ( (equal? TempoChoice "Andante" ) "84" ) ( (equal? TempoChoice "Adagio" ) "72" ) ( (equal? TempoChoice "Largo" ) "60" ) ( (equal? TempoChoice "Lento" ) "40" ) (else "60" ) ) ) (if (equal? "" BaseBeat) (set! BaseBeat (d-GetUserInput (_ "Metronome Marking") (_ "Give unit beat duration (e.g., 4. for dotted-quarter) \n or enter n for none:") "4" ))) (if (or (equal? BaseBeat (_ "n") ) (equal? #f BaseBeat)) (begin (set! ValidBPM? #f) ;if user doesn't want to use BPM. (if (not BaseBeat) (set! Go? #f)) ) (begin ; if user wants to use bpm... (set! len (string-length BaseBeat) ) (set! dotted (equal? "." (substring BaseBeat (- len 1) len )) ) ;see if a dot at end (if dotted (set! duration (substring BaseBeat 0 (- len 1))) ;if there's a dot, cut it off from BaseBeat to get base duration. (set! duration BaseBeat) ) (if replace (set! defaultBPM (d-DirectiveGet-standalone-midibytes tag ))) ;use old BPM if there. Bug: Only good for 4=... (set! bpm (d-GetUserInput (_ "Metronome Marking") (string-append (_ "Give number of these ") BaseBeat (_ " beats per minute:")) defaultBPM ) ) (set! ValidBPM? (not (equal? (and (string->number duration) (string->number bpm) ) #f))) ;don't go unless both are numbers. ;don't go unless base duration is valid lilypond: (could go higher if wanted): (set! ValidBPM? (and ValidBPM? (or (equal? duration "1")(equal? duration "2")(equal? duration "4")(equal? duration "8") (equal? duration "16")) ) ) (if (and bpm (equal? ValidBPM? #t)) (begin (if dotted (set! MidiBPM (number->string (floor (* (/ (string->number bpm) (string->number duration)) 6 ) ) ) ) (set! MidiBPM (number->string (floor (* (/ (string->number bpm) (string->number duration) ) 4)) ) ) );want * 3/2 for dotted,*4 since midi uses quarters and divide by duration, (if (not ShowBPM? ) (set! ShowBPM? (d-GetOption (string-append (_ "BPM Printed") stop (_ "BPM Not Printed") stop)))) (if (not ShowBPM?) (set! Go? #f)) (set! ShowBPM? (equal? ShowBPM? (_ "BPM Printed"))) (set! BPMString (string-append BaseBeat "=" bpm )) ) ;begin (d-WarningDialog (_ "Incorrect BPM syntax.")) ) ) ) );let );define GetBPM ;procedure begins here. ;see if there's already one there: (if (d-Directive-standalone? tag) ;if we want to REPLACE an existing directive... (let ((choice #f)) (set! replace 'edit) (set! choice (d-GetOption (string-append "Change"stop"Delete" stop cue-Advanced stop))) (cond ;((boolean? choice) ; (d-WarningDialog "Operation cancelled")) ((equal? choice "Change") (set! replace #t )) ((equal? choice cue-Advanced) (if (not (d-DirectiveTextEdit-standalone tag)) (d-DirectiveDelete-standalone tag))) ((equal? choice "Delete") (d-DirectiveDelete-standalone tag)) ) ) ) (if (boolean? replace) ;as long as we're not just editing an existing directive, we continue from here. (begin ;get tempo text from user: (set! TempoChoice (d-GetOption (string-append "Presto" stop "Vivace" stop "Allegro" stop "Moderato" stop "Andante" stop "Adagio" stop "Largo" stop "Lento" stop "Tempo Adjust (ritardando, etc.)" stop "Custom tempo (e.g., Allegro assai)" stop "Beat Change (e.g., 4=4.)" stop "No Tempo Text-Metronome Only" stop))) (if (not TempoChoice) (set! Go? #f)) (if (equal? TempoChoice "No Tempo Text-Metronome Only") (set! TempoChoice #f ) ) (if (equal? TempoChoice "Custom tempo (e.g., Allegro assai)") ;read input if user wants custom: (begin (set! InQuotes "\"") (set! TempoChoice (d-GetUserInput "Tempo setting" "Enter tempo text:" "Allegro assai" ) ) (if (not TempoChoice) (set! Go? #f)) ) ) (if (equal? TempoChoice "Tempo Adjust (ritardando, etc.)") ;for custom italic tempo adjustments (begin (set! TempoAdjust #t) (set! InQuotes "\"") (set! TempoChoice (d-GetUserInput "Tempo adjust" "Enter text:" "rit." )) (if (not TempoChoice) (set! Go? #f)) (if Go? (set! AboveBelow? (d-GetOption (string-append "Neutral" stop "Above" stop "Below" stop )))) (if (not AboveBelow?) (set! Go? #f)) (set! AboveBelow? (cond ((equal? AboveBelow? "Above") "^" ) ((equal? AboveBelow? "Below") "_" ) (else "-") ) ) ) ) (if (equal? TempoChoice "Beat Change (e.g., 4=4.)" ) (begin (set! Go? #f) (d-BeatChange) ) ) (if (equal? TempoChoice "") (set! TempoChoice #f)) ;TempoChoice should now have the desired text to be shown, or #f is nothing is to be shown. ;TempoAdjust = #t if italics should be used. (if Go? (GetBPM "" )) ;find out what bpm the user wants and whether to print it(but not if user cancelled) ; now set DisplayString-what denemo shows. (if ShowBPM? (begin ;if we print the BPM: (if TempoChoice (set! DisplayString (string-append TempoChoice "(" BPMString ")" )) (set! DisplayString BPMString) ) ) ;if NOT showing BPM... (if ValidBPM? (set! DisplayString (string-append (if TempoChoice TempoChoice "") "[" BPMString "]" )) (set! DisplayString TempoChoice) ) ) ;now need to set LilyString... (if TempoChoice (set! TempoChoice (string-append InQuotes TempoChoice InQuotes) )) ;if more than 1 word, may need quotes. (if TempoAdjust (begin ;if we want to REPLACE an existing tempo directive... (if TempoChoice (set! LilyString (string-append "s8*0" AboveBelow? "\\markup { \\italic " TempoChoice "} " ))) (if ValidBPM? (set! LilyString (string-append LilyString "\\tempo " BPMString " "))) ) ;if TempoAdjust=#t. (begin ;when TempoAdjust = #f... (if ShowBPM? (if OldLily ;if using OldLily syntax.... (if TempoChoice (set! LilyString (string-append "s8*0" AboveBelow? "\\markup \\bold { " TempoChoice " (\\smaller \\general-align #Y #DOWN" " \\note #\"" duration "\" #.75 = " bpm ")} \\once \\override Score.MetronomeMark #'transparent = ##t \\tempo " BPMString " ") ) (set! LilyString (string-append "\\tempo " BPMString " ")) ) ;if we're NOT using OldLily syntax: (set! LilyString (string-append "\\tempo " (if TempoChoice (string-append TempoChoice " ") "") BPMString " ")) ) ;if we're NOT showing BPM... (if OldLily (set! LilyString (if TempoChoice (string-append " s8*0" AboveBelow? "\\markup \\bold { " TempoChoice " } " ))) (if TempoChoice (set! LilyString (string-append "\\tempo " TempoChoice " "))) ) ) ) ) ;now make the directive... (if Go? (begin (if (not replace) (d-DirectivePut-standalone tag ) ) (if LilyString (d-DirectivePut-standalone-postfix tag LilyString ) ) (d-DirectivePut-standalone-grob tag "MetronomeMark") (d-DirectivePut-standalone-graphic tag (string-append "\n" DisplayString "\nDenemo\n12")) (d-DirectivePut-standalone-gy tag -25) (d-DirectivePut-standalone-minpixels tag 10 ) (d-DirectivePut-standalone-ty tag 85 ) ;;try -40 instead of 85 for above-the-staff (if (equal? ValidBPM? #t) (begin (d-DirectivePut-standalone-override tag (logior DENEMO_OVERRIDE_TAGEDIT DENEMO_OVERRIDE_TEMPO DENEMO_OVERRIDE_STEP)) (d-DirectivePut-standalone-midibytes tag MidiBPM) ) ) (d-SetSaved #f) (d-RefreshDisplay) (d-ChooseCondition) ;;; this did not fire using d-PopUpMenu so changed to RadioBoxMenu (d-MoveCursorRight))))))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/StandaloneFootnote.scm0000644000000000000000000000013213135434035027540 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.513315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/StandaloneFootnote.scm0000644000175000017500000000261613135434035031416 0ustar00jjbenhamjjbenham00000000000000;;;StandAloneFootnote (let ((tag "StandaloneFootnote")) (define (set-footnote mark text) (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag (string-append "\\override Score.FootnoteItem.annotation-line = ##f \\footnote \"" mark "\" #'(0 . 2) \\markup { \\super \"" mark "\" \\teeny \"" text "\"} ")) (d-DirectivePut-standalone-graphic tag (string-append "\n" mark "\nDenemo\n16")) (d-DirectivePut-standalone-data tag (string-append "(cons \"" text "\" \"" mark "\")")) (d-DirectivePut-standalone-gy tag -40) (d-DirectivePut-standalone-minpixels tag 20) (d-SetSaved #f) (d-RefreshDisplay)) (define (choose-footnote mark text) (set! text (d-GetUserInput (_ "Footnote") (_ "Give footnote text") text)) (set! mark (d-GetUserInput (_ "Footnote") (_ "Give footnote marker") mark)) (if (and mark text) (set-footnote mark text))) (if (d-Directive-standalone? tag) (let ((mark "*") (text (_ "Orig. ")) (choice #f) (current (eval-string (d-DirectiveGet-standalone-data tag) ))) (if current (begin (set! mark (cdr current)) (set! text (car current)))) (set! choice (GetEditOption)) (case choice ((edit) (choose-footnote mark text)) ((delete) (d-DirectiveDelete-standalone tag)) ((advanced) (d-DirectiveTextEdit-standalone tag)) (else (disp "A problem with eqv ...")))) (begin (choose-footnote "*"(_ "Orig. "))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/RehearsalMark.scm0000644000000000000000000000013213135434035026453 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.513315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/RehearsalMark.scm0000644000175000017500000000346113135434035030330 0ustar00jjbenhamjjbenham00000000000000;;; Bookmark + RehearsalMark ;;; by Nils Gey Modified RTS (let ((tag "RehearsalMark")) (if (d-Directive-standalone? tag) (let ((choice (RadioBoxMenu (cons (_ "Nudge Position") 'nudge) (cons (_ "Restore Position") 'restore) (cons (_ "Delete") 'delete) (cons (_ "More Editing Options") 'more) (cons (_ "Advanced") 'advanced)))) (case choice ((more) (set! choice #f) (d-EditSimilar)) ((advanced) (set! choice #f) (if (not (d-DirectiveTextEdit-standalone tag)) (d-DirectiveDelete-standalone tag))) ((delete) (d-DirectiveDelete-standalone tag)) ((nudge) (let ((amount (GetNudge))) (if amount (TweakOffset tag tag (car amount) (cdr amount));;(TweakRelativeOffset tag (car amount) (cdr amount)) (d-WarningDialog (_ "Operation cancelled"))))) ((restore) (d-DirectivePut-standalone-prefix tag "") (d-DirectivePut-standalone-data tag "")) (else (set! choice #f) (d-WarningDialog (_ "Operation cancelled")))) (if choice (begin (d-SetSaved #f) (d-RefreshDisplay)))) ;;not present already (begin (d-Directive-standalone tag) ;(d-DirectivePut-standalone-display tag "") (d-DirectivePut-standalone-grob tag "RehearsalMark") (d-DirectivePut-standalone-postfix tag " \\mark \\default" ) (d-DirectivePut-standalone-gx tag 14) (d-DirectivePut-standalone-gy tag -35) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-graphic tag "RehearsalMark") (d-MoveCursorRight) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/Spanning0000644000000000000000000000013213135434150024724 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.543315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/0000755000175000017500000000000013135434150026652 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/LigatureStart.xm0000644000000000000000000000013213135434035030143 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.513315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/LigatureStart.xml0000644000175000017500000000101413135434035032164 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LigatureStart EndVolta <_label>Start Ligature <_tooltip>Starts drawing a square bracket above the notes from the cursor. Use End Ligature to mark the place where the bracket should end. Used in transcribing mensural music notation. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/StopTrillSpan.sc0000644000000000000000000000013213135434035030110 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.519981806 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/StopTrillSpan.scm0000644000175000017500000000110313135434035032131 0ustar00jjbenhamjjbenham00000000000000;;;StartTrillSpan (let ((tag "StopTrillSpan")) (if (d-Directive-standalone? tag) (d-InfoDialog (_ "This marks the end of a trill spanning several notes")) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons "StopTrillSpan" "\\stopTrillSpan") #f LG-UpPrall) (d-DirectivePut-standalone-gx tag 10) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/CadenzaOn.scm0000644000000000000000000000013213135434035027351 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.519981806 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/CadenzaOn.scm0000644000175000017500000000030313135434035031216 0ustar00jjbenhamjjbenham00000000000000;;;CadenzaOn (d-CadenzaTime) (d-SmallFontStart) (d-MultiLineTextAnnotation (list (cons 'text "Cadenza \\italic {ad lib.} ") (cons 'scale "1") '())) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/StartTrillSpan.s0000644000000000000000000000013213135434035030115 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.519981806 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/StartTrillSpan.scm0000644000175000017500000000212513135434035032306 0ustar00jjbenhamjjbenham00000000000000;;;StartTrillSpan (if (not (Note?)) (d-MoveCursorLeft)) (if (Note?) (let ((tag "StartTrillSpan")) (d-MoveCursorRight) (if (d-Directive-standalone? tag) (let ((choice (RadioBoxMenu (cons (_ "Help") 'help)(cons (_ "No \"tr\" at start.") 'start) (cons (_ "Delete") 'delete)))) (case choice ((help) (d-InfoDialog (_ "This marks the start of a trill extending over several notes. The leading \"tr\" can be omitted if desired."))) ((start) (d-DirectivePut-standalone-prefix tag "-\\tweak bound-details.left.text #'() ")) ((delete) (d-DirectiveDelete-standalone tag)))) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons "StartTrillSpan" "\\startTrillSpan") #f LG-Prall) (d-DirectivePut-standalone-gx tag 10) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight))) (d-RefreshDisplay) (d-SetSaved #f)) (d-WarningDialog (_ "Cursor must be on the note where the trill is to start"))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/LigatureStart.sc0000644000000000000000000000013213135434035030124 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.519981806 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/LigatureStart.scm0000644000175000017500000000057213135434035032156 0ustar00jjbenhamjjbenham00000000000000;LigatureStart (let ((tag "LigatureStart")) (StandAloneDirectiveProto (cons tag "\\[ ") #f) (d-DirectivePut-standalone-graphic tag "\n[\nDenemo\n40") (d-DirectivePut-standalone-gy tag 10) (d-DirectivePut-standalone-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-standalone-display tag (_ "Ligature Start")) (d-RefreshDisplay) (d-SetSaved #f))denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/Ottava.scm0000644000000000000000000000013213135434035026745 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.529981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/Ottava.scm0000644000175000017500000000067513135434035030626 0ustar00jjbenhamjjbenham00000000000000;;;OttavaStart (let ( (val (d-GetUserInput "Ottava" (_ "Give -1 for ottava bassa, 1 for ottava alta and 0 for end ottava") "0"))) (if (and val (string->number val)) (StandAloneDirectiveProto (cons "Ottava" (string-append "\\ottava #" val " ")) #t #f (if (equal? val "0") (_ "End Ottava") (if (equal? val "1") "8va --------------" (if (equal? val "-1") "8va bassa -----------" (string-append "Ottava" val))))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/LigatureEnd.xml0000644000000000000000000000013213135434035027730 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.533315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/LigatureEnd.xml0000644000175000017500000000071313135434035031602 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LigatureEnd LigatureStart <_label>End Ligature <_tooltip>End drawing a square bracket above the notes. Must be preceded by a Start Ligature earlier in the same staff. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/SustainOff.scm0000644000000000000000000000013213135434035027570 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.533315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/SustainOff.scm0000644000175000017500000000112713135434035031442 0ustar00jjbenhamjjbenham00000000000000 ;;;SustainOff (let ((tag "SustainOff")) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons "SustainOff" "\\sustainOff") #f "\n!P\nDenemo\n24") (d-DirectivePut-standalone-midibytes tag "0xB$ 0x40 0x00") (d-DirectivePut-standalone-gy tag 44) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/LigatureEnd.scm0000644000000000000000000000013213135434035027712 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.533315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/LigatureEnd.scm0000644000175000017500000000056513135434035031571 0ustar00jjbenhamjjbenham00000000000000;LigatureEnd (let ((tag "LigatureEnd")) (StandAloneDirectiveProto (cons tag "\\] ") #f) (d-DirectivePut-standalone-graphic tag "\n]\nDenemo\n40") (d-DirectivePut-standalone-gy tag 10) (d-DirectivePut-standalone-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-standalone-display tag (_ "Ligature End")) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/SustainOn.scm0000644000000000000000000000013213135434035027432 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.533315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/SustainOn.scm0000644000175000017500000000112113135434035031276 0ustar00jjbenhamjjbenham00000000000000;;;SustainOn (let ((tag "SustainOn")) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons "SustainOn" "\\sustainOn") #f "\nP\nDenemo\n24") (d-DirectivePut-standalone-midibytes tag "0xB$ 0x40 0x7F") (d-DirectivePut-standalone-gy tag 44) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/StartTrillSpan.x0000644000000000000000000000013213135434035030122 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.543315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/StartTrillSpan.xml0000644000175000017500000000062013135434035032322 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StartTrillSpan SustainOn <_label>Start Trill <_tooltip>Starts a spanning trill from the note at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/CadenzaOn.xml0000644000000000000000000000013213135434035027367 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.543315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/CadenzaOn.xml0000644000175000017500000000132013135434035031234 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Tempo CadenzaOn <_label>Start Cadenza <_tooltip>Turns off automatic barlines, beaming etc and sets small sized notes for a cadenza. You can break up the cadenza in the Denemo Display into Denemo "bars" if the cadenza is too long. You will need to insert barlines or use the Allow Page/Line break command to let the typesetter break lines. Add Ignore Measure Duration Error directives in each bar if you want to use Check Score. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/SustainOn.xml0000644000000000000000000000013213135434035027450 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.543315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/SustainOn.xml0000644000175000017500000000056513135434035031327 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BreathMark SustainOn <_label>Sustain On <_tooltip>Prints a Sustain Pedal On Mark denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/FinishCadenza.sc0000644000000000000000000000013213135434035030040 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.543315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/FinishCadenza.scm0000644000175000017500000000007013135434035032063 0ustar00jjbenhamjjbenham00000000000000;;FinishCadenza (d-SmallFontEnd) (d-EndCadenzaTime) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/StopTrillSpan.xm0000644000000000000000000000013213135434035030127 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.553315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/StopTrillSpan.xml0000644000175000017500000000062013135434035032152 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StopTrillSpan StartTrillSpan <_label>Stop Trill <_tooltip>Ends a previously started trill at the next note. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/FinishCadenza.xm0000644000000000000000000000013213135434035030057 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.553315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/FinishCadenza.xml0000644000175000017500000000073413135434035032110 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CadenzaOn FinishCadenza <_label>End Cadenza <_tooltip>Inserts Cadenza end at the current cursor position which should be at the start of a (Denemo) bar. See Start Cadenza for details. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/SustainOff.xml0000644000000000000000000000013213135434035027606 xustar0030 mtime=1500919837.979981805 30 atime=1500919926.553315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/SustainOff.xml0000644000175000017500000000056113135434035031461 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SustainOn SustainOff <_label>Sustain Off <_tooltip>Prints a Sustain Off Mark denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/PaxHeaders.19168/Ottava.xml0000644000000000000000000000013213135434035026763 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.553315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Spanning/Ottava.xml0000644000175000017500000000076613135434035030645 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BreathMark Ottava <_label>Ottava <_tooltip>Inserts an 8va mark (transposing the notes accordingly) or terminates one already started. Combine with a Print Transposition if you want to see the notes as typeset. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/BeatChange.xml0000644000000000000000000000013213135434035025731 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.553315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/BeatChange.xml0000644000175000017500000000070713135434035027606 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BreathMark BeatChange <_label>Beat Change (e.g. ð…ž = ð…Ÿ .) <_tooltip>Insert a change of beat at the cursor position. The playback tempo is adjusted to match. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/FretDiagram.xml0000644000000000000000000000013213135434035026135 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.573315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/FretDiagram.xml0000644000175000017500000000070713135434035030012 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FretDiagram InsertGraphic <_label>Fret Diagram <_tooltip>Creates a dialog for you to enter a description of the fret diagram to be typeset at the cursor position. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/DynamicText.xml0000644000000000000000000000013213135434035026201 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.573315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/DynamicText.xml0000644000175000017500000000053313135434035030053 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DynamicText <_label>Dynamics <_tooltip>Choose dynamics and midi volume level. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/FretDiagram.scm0000644000000000000000000000013213135434035026117 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.573315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/FretDiagram.scm0000644000175000017500000001566713135434035030007 0ustar00jjbenhamjjbenham00000000000000;;;;FretDiagram (let ((tag "FretDiagram") (params FretDiagram::params) (data #f) (number-of-strings #f) (scale 1) (x-offset #f) (y-offset #f) (dimensions #f) (prefix "<>") (capo #f) (strings '())) (define (get-fret string-num fret) (define prompt (string-append (_ "String: ") (number->string string-num) " " (_ "Give Fret Number\nor o or x") )) (if (not fret) (set! fret "x")) (set! fret (d-GetUserInput (_ "Fret Diagram") prompt fret)) (if fret fret "x")) (define (do-capo) (define lowest (if capo (list-ref capo 0) 1)) (define highest (if capo (list-ref capo 1) number-of-strings)) (define fret (if capo (list-ref capo 2) 1)) (set! lowest (d-GetUserInput (_ "Fret Diagram") (_ "Barre from string (or cancel for none) ") (number->string lowest))) (if (and lowest (string->number lowest)) (begin (set! highest (d-GetUserInput (_ "Fret Diagram") (_ "Barre to string (or cancel for none) ") (number->string highest))) (if (and highest (string->number highest)) (begin (set! fret (d-GetUserInput (_ "Fret Diagram") (_ "Barre at fret (or cancel for none) ") (number->string fret))) (if (and fret (string->number fret)) (set! capo (list (string->number lowest) (string->number highest) (string->number fret))) (set! capo #f))) (set! capo #f))) (set! capo #f))) (define (do-scale) (set! scale (d-GetUserInput (_ "Fret Diagram") (_ "Give size for diagram ") (number->string scale))) (if (and scale (string->number scale)) (set! scale (string->number scale)) (set! scale 1))) (set! data (d-DirectiveGet-standalone-data tag)) (if data (begin (set! data (eval-string data)) (set! number-of-strings (assq-ref data 'number-of-strings)) (set! capo (assq-ref data 'capo)) (set! scale (assq-ref data 'scale)) (set! dimensions (assq-ref data 'dimensions)) (set! x-offset (assq-ref data 'x-offset)) (set! y-offset (assq-ref data 'y-offset)) (set! strings (assq-ref data 'strings)))) (if (equal? "edit" params) (begin (set! params (RadioBoxMenu (cons (_ "Edit Fret Diagram") #f) (cons (_ "Edit Space Occupied") 'space) (cons (_ "Edit Position") 'position))) (case params ((space) (begin (set! dimensions (d-GetUserInput (_ "Space Occupied by Text/Music") (_ "Give space:\n(0 prevents dragging position\nBlank for natural size.)") dimensions)) (if (and dimensions (string->number dimensions)) (set! dimensions (string->number dimensions)) (set! dimensions #f)))) ((position) (set! x-offset (d-GetUserInput (_ "Offsets") (_ "Give horizontal displacement required") x-offset)) (set! y-offset (d-GetUserInput (_ "Offsets") (_ "Give vertical displacement required") y-offset)) (if (not (and x-offset (string->number x-offset) y-offset (string->number y-offset))) (begin (set! x-offset #f) (set! y-offset #f))))))) (if (list params) (begin (if (assq-ref params 'number-of-strings) (set! number-of-strings (assq-ref params 'number-of-strings))) (if (assq-ref params 'strings) (set! strings (assq-ref params 'strings))) (if (assq-ref params 'scale) (set! scale (assq-ref params 'scale))) (if (assq-ref params 'dimensions) (set! dimensions (assq-ref params 'dimensions))) (if (assq-ref params 'capo) (set! capo (assq-ref params 'capo))))) (if (not number-of-strings) (begin (set! number-of-strings (d-GetUserInput (_ "Fret Diagram") (_ "Give Number of Strings ") "6")) (if (and number-of-strings (string->number number-of-strings)) (set! number-of-strings (string->number number-of-strings)) (set! number-of-strings #f)))) (if (and y-offset x-offset) (set! prefix (string-append "<>-\\tweak #'extra-offset #'(" x-offset " . " y-offset ") "))) (if (and number-of-strings (< number-of-strings 10)) (begin (if (not params) (begin (do-capo) (do-scale) (let loop ((count number-of-strings)) (if (> count 0) (begin (set! strings (assq-set! strings count (get-fret count (assq-ref strings count)))) (loop (1- count))))))) (set! data '()) (if x-offset (set! data (assq-set! data 'x-offset x-offset))) (if y-offset (set! data (assq-set! data 'y-offset y-offset))) (if dimensions (set! data (assq-set! data 'dimensions dimensions))) (set! data (assq-set! data 'number-of-strings number-of-strings)) (set! data (assq-set! data 'strings strings)) (set! data (assq-set! data 'scale scale)) (if capo (set! data (assq-set! data 'capo capo))) (if dimensions (set! dimensions (format #f "-\\markup\\with-dimensions #'(~s . ~s) #'(~s . ~s) " (- dimensions) dimensions (- dimensions) dimensions)) (set! dimensions "-\\markup")) (let ((markup (format #f "w:~s;f:1;" number-of-strings))) (if capo (set! markup (string-append markup (format #f "c:~s-~s-~s;" (list-ref capo 0) (list-ref capo 1) (list-ref capo 2))))) (let loop ((count number-of-strings)) (if (> count 0) (begin (set! markup (string-append markup (number->string count) "-" (assq-ref strings count) ";")) (loop (1- count))))) (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag (format #f "~A\\scale #'(~s . ~s) \\fret-diagram #~s " dimensions scale scale markup)) (d-DirectivePut-standalone-prefix tag prefix) (d-DirectivePut-standalone-data tag (format #f "'~s" data)) (d-DirectivePut-standalone-graphic tag "\nF\nDenemo\n24") (d-DirectivePut-standalone-minpixels tag 30) (d-SetSaved #f) (d-RefreshDisplay))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/DynamicText.scm0000644000000000000000000000013213135434035026163 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.583315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/DynamicText.scm0000644000175000017500000001054113135434035030035 0ustar00jjbenhamjjbenham00000000000000;;;;DynamicText ;; Standalone Dynamics - by Dan Wilckens. Tweaked by RTS. Note that for custom text the tag should be different. (define-once DenemoDynamicList #f) (let ((tag "DynamicText")(params DynamicText::params)(choice #f)(replace #f)(X 0) (level "63")(LilyString "")(Graphic "") (DynamicList "") ) ; format: dynamics, midi volume, image filename (define DefaultDynamicList '(("fff" "127" "Fortississimo")("ff" "111" "Fortissimo") ("f" "95" "Forte") ("mf" "79" "MezzoForte")("mp" "63" "MezzoPiano") ("p" "47" "Piano") ("pp" "31" "Pianissimo") ("ppp" "15" "Pianississimo") ("More" "60" "") ("ppppp" "5" "ppppp")("pppp" "7" "pppp")("ffff" "127" "ffff") ("fp" "" "fp") ("sf" "" "sf") ("sff" "" "sff") ("sp" "" "sp" ) ("spp" "" "spp") ("sfz" "" "sfz") ("rfz" "" "rfz") ("Custom" "" ""))) (define (firstmenu choices thelist) (if (and (not (null? thelist)) (not (equal? (car (car thelist)) (_ "More")))) (begin (set! choices (string-append choices (car (car thelist)) stop)) (firstmenu choices (cdr thelist))) (set! choice (d-GetOption (string-append choices (_ "More") stop))))) (if (equal? params "edit") (set! params #f)) (if (d-Directive-standalone? tag) (set! replace #t)) (d-PushPosition) (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (begin (d-PopPosition) (d-MoveCursorLeft) (set! replace #t)) (begin (d-PopPosition)))) (if params (begin (set! choice params) (set! DynamicList DefaultDynamicList)) (begin (if DenemoDynamicList (set! DynamicList DenemoDynamicList) (set! DynamicList DefaultDynamicList)) (firstmenu "" DynamicList))) (let loop () (if (and choice (equal? choice (_ "More")) ) (begin (if (not (equal? DenemoDynamicList DefaultDynamicList)) ;;we used a custom list, switch to using the Default list and try again (begin (set! DenemoDynamicList DefaultDynamicList) (set! DynamicList DefaultDynamicList) (firstmenu "" DynamicList) (loop)))))) (if (and choice (equal? choice (_ "More")) ) (begin (set! DynamicList DefaultDynamicList) (set! choice (d-GetOption (string-append "ppppp" stop "pppp" stop "ffff" stop "fp" stop "sf" stop "sff" stop "sp" stop "spp" stop "sfz" stop "rfz" stop "Custom" stop))))) (if choice (begin (set! LilyString (string-append " \\" choice )) (set! X (assoc choice DynamicList) ) (if X (begin (set! level (car (cdr X)) ) ;(set! Graphic (car (cdr (cdr X) ) ) ) (if (equal? choice "Custom" ) (begin (set! choice (d-GetUserInput (_ "Custom dynamic") (_ "Enter dynamic text:") "" ) ) (if choice (set! LilyString (string-append " $(make-dynamic-script (markup #:normal-text #:bold #:italic \"" choice "\")) " ))))) (if (equal? level "") (begin (if params (set! level "63") (set! level (d-GetUserInput (_ "Dynamic setting") (_ "Enter loudness level (0-127):") "63" ))) (let ( (a 0)) (set! a (string->number level) ) (if (or (boolean? a) (> a 127) (< a 0) )(set! level #f) ))))) (begin (set! level "127") (set! LilyString (string-append " $(make-dynamic-script (markup #:normal-text #:bold #:italic \"" choice "\")) " )))))) (if choice (begin (if (not replace) (d-DirectivePut-standalone tag)) (d-DirectivePut-standalone-prefix tag "<>") (d-DirectivePut-standalone-postfix tag LilyString) (d-DirectivePut-standalone-graphic tag (string-append "\n" choice "\nSerif\n24\n1\n1")) (d-DirectivePut-standalone-gy tag 40) (d-DirectivePut-standalone-gx tag 12) (if level (begin (d-DirectivePut-standalone-override tag (logior DENEMO_OVERRIDE_STEP DENEMO_OVERRIDE_VOLUME)) (d-DirectivePut-standalone-midibytes tag level))) (d-DirectivePut-standalone-minpixels tag 10) (d-SetSaved #f) (d-MoveCursorRight)))) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/RehearsalMark.xml0000644000000000000000000000013213135434035026471 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.583315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/RehearsalMark.xml0000644000175000017500000000102013135434035030333 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RehearsalMark <_label>Add Rehearsal/Bookmark <_tooltip>Inserts a rehearsal mark in the score. The default is to typeset as the letters A, B, ... The display shows simply A for all bookmarks. This mark also acts as a Denemo bookmark which can be searched for. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/CustomRehearsalMark.xml0000644000000000000000000000013213135434035027664 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.593315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/CustomRehearsalMark.xml0000644000175000017500000000171713135434035031543 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CustomRehearsalMark RehearsalMark <_label>Add Mark (Text/Rehearsal/Book) <_tooltip>Inserts a Mark in the score at the cursor. Marks can be placed in each part and will appear only once (above the top part) in the score (provided they occur at the same moment in each part and are identical). Any size, font, effect can be chosen. A preview button allows you to check the appearance/syntax used. The text position can be dragged in the print view if needed. If there is any slight difference in the text of multiple text marks at the same moment a warning will be given on manually typesetting the score, to avoid this copy and paste or clone the mark you want to place in each part. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/FreeSegno.scm0000644000000000000000000000013213135434035025607 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.593315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/FreeSegno.scm0000644000175000017500000000153113135434035027460 0ustar00jjbenhamjjbenham00000000000000;;;Segno symbol attached to the next object, for example a barline. But shown between notes (let ((tag "FreeSegno")) (if (d-Directive-standalone? tag) (let ((choice (RadioBoxMenu (cons (_ "Object Inspector") 'help) (cons (_ "Delete") 'delete)))) (case choice ((help) (d-DisplayCurrentObject)) ((delete) (d-DirectiveDelete-standalone tag)))) (let ((choice (RadioBoxMenu (cons (_ "Show if at end of line") "begin") (cons (_ "Show if at start of line") "end")))) (if choice (StandAloneDirectiveProto (cons tag (string-append "\\tweak break-visibility #" choice "-of-line-invisible \\mark \\markup\\scale #'(1 . 1) { \\musicglyph #\"scripts.segno\" } ")) #t LG-Segno "" ))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/CustomRehearsalMark.scm0000644000000000000000000000013213135434035027646 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.593315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/CustomRehearsalMark.scm0000644000175000017500000000274013135434035031522 0ustar00jjbenhamjjbenham00000000000000;;; CustomRehearsalMark (let ((value CustomRehearsalMark::params) (tag "CustomRehearsalMark")) (if (equal? value "edit") (set! value #f)) (if (and (not value) (d-Directive-standalone? tag)) (begin (set! value (d-DirectiveGet-standalone-data tag)) (if value (begin (set! value (eval-string value)) (set! value (assq-ref value 'value)))))) (if (not value) (set! value "ral.")) (set! value (d-GetUserInputWithSnippets (_ "Text or Custom Rehearsal Mark") (_ "Give text to use for Mark") value)) (if value ;in case the user pressed Escape do nothing (let ((text (cdr value))(data (car value))(position (RadioBoxMenu (cons (_ "left") "left") (cons (_ "center") "center") (cons (_ "right") "right")))) (if position (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-display tag data) (d-DirectivePut-standalone-graphic tag "RehearsalMark") (d-DirectivePut-standalone-gx tag 15) (d-DirectivePut-standalone-postfix tag (string-append " \\once \\override Score.RehearsalMark #'self-alignment-X = #" position " \\mark \\markup \\column {" text "}" ) ) (d-DirectivePut-standalone-grob tag "RehearsalMark") (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-data tag (string-append "(list (cons 'value \"" (scheme-escape data) "\"))")) (d-SetSaved #f) (d-RefreshDisplay)))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/Ornaments0000644000000000000000000000013213135434150025115 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.543315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Ornaments/0000755000175000017500000000000013135434150027043 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Ornaments/PaxHeaders.19168/Ornament.xml0000644000000000000000000000013213135434035027501 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.599981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Ornaments/Ornament.xml0000644000175000017500000000116113135434035031351 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Ornament BreathMark <_label>Insert/Edit Ornament <_tooltip>Select an ornament to insert as an object at the cursor (it will be typeset on the following note), or edit the ornament already present. Ornament here includes accidentals to be placed over or under other ornaments, as well as multiple ornaments stacked on one note/chord. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Ornaments/PaxHeaders.19168/Ornament.scm0000644000000000000000000000013213135434035027463 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.599981805 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Ornaments/Ornament.scm0000644000175000017500000001605013135434035031336 0ustar00jjbenhamjjbenham00000000000000;;;Ornament (let ((appending (Appending?))(tag "Ornament")(ornament #f)(params Ornament::params)(type #f)(lilypond #f)(graphic #f)(priority "0")(direction #f)(data #f)) (if appending (set! appending (d-MoveCursorLeft))) (if (d-Directive-standalone? tag) (let ((choice #f)(action (RadioBoxMenu (cons (_ "Add Accidental/Ornament") 'add) (cons (_ "Up/Down") 'direction)(cons (_ "Re-order Accidentals/Ornaments") 'position)))) (set! data (d-DirectiveGet-standalone-data tag)) (if data (begin (set! data (eval-string data)) (set! direction (assq-ref data 'direction)) (set! ornament (assq-ref data 'ornament)) (set! priority (assq-ref data 'priority)))) (case action ((direction) (set! direction #f)) ((add) (if (d-MoveCursorRight) (begin (set! ornament #f) (d-DirectivePut-standalone tag)) (d-WarningDialog (_ "No Note to apply ornament to"))))) (if (or (eq? action 'add) (eq? action 'position)) (begin (set! choice (RadioBoxMenu (cons (_ "Further from Staff") 'upper)(cons (_ "Closer to Staff") 'lower))) (case choice ((upper) (set! priority (number->string (+ (string->number priority) 7)))) ((lower) (set! priority (number->string (- (string->number priority) 7))))) (if (eq? action 'position) (d-WarningDialog (string-append (_ "Priority now ") priority (_ " you may need to repeat this command to get a suitable value to re-order this ornament with respect to other ornaments on the same note."))))))) (d-DirectivePut-standalone tag)) (if (list? params) (begin (set! direction (assq-ref params 'direction)) (set! ornament (assq-ref params 'ornament)) (set! priority (assq-ref params 'priority)))) (if (not ornament) (if (symbol? params) (set! ornament params) (set! ornament (RadioBoxMenu (cons (_ "Trill") 'trill) (cons (_ "Sharp") 'sharp) (cons (_ "Flat") 'flat) (cons (_ "Natural") 'natural) (cons (_ "Mordent") 'mordent) (cons (_ "Turn") 'turn) (cons (_ "Reverse Turn") 'reverseturn) (cons (_ "Prall") 'prall) (cons (_ "Up Prall") 'upprall) (cons (_ "Down Prall") 'downprall) (cons (_ "Prall Up") 'prallup) (cons (_ "Prall Down") 'pralldown) (cons (_ "Prall Prall") 'prallprall) (cons (_ "Prall Mordent") 'prallmordent) (cons (_ "Up Mordent") 'upmordent) (cons (_ "Down Mordent") 'downmordent) )))) (if ornament (begin (case ornament ((sharp) (set! lilypond "\\markup\\tiny\\sharp ") (set! graphic LG-Sharp)) ((flat) (set! lilypond "\\markup\\tiny\\flat ") (set! graphic LG-Flat)) ((natural) (set! lilypond "\\markup\\tiny\\natural ") (set! graphic LG-Natural)) ((trill) (set! lilypond "\\trill ") (set! graphic LG-Trill)) ((mordent) (set! lilypond "\\mordent ") (set! graphic LG-Mordent)) ((turn) (set! lilypond "\\turn ") (set! graphic LG-Turn)) ((reverseturn) (set! lilypond "\\reverseturn ") (set! graphic LG-ReverseTurn)) ((prall) (set! lilypond "\\prall ") (set! graphic LG-Prall)) ((upprall) (set! lilypond "\\upprall ") (set! graphic LG-UpPrall)) ((prallup) (set! lilypond "\\prallup ") (set! graphic LG-PrallUp)) ((downprall) (set! lilypond "\\downprall ") (set! graphic LG-DownPrall)) ((pralldown) (set! lilypond "\\pralldown ") (set! graphic LG-PrallDown)) ((prallmordent) (set! lilypond "\\prallmordent ") (set! graphic LG-PrallMordent)) ((prallprall) (set! lilypond "\\prallprall ") (set! graphic LG-PrallPrall)) ((upmordent) (set! lilypond "\\upmordent ") (set! graphic LG-UpMordent)) ((downmordent) (set! lilypond "\\downmordent ") (set! graphic LG-DownMordent)) (else (AllowOrnament ornament) (if (not priority) (set! priority "0")) (set! lilypond (assq-ref params 'lilypond)) (if (not lilypond) (set! lilypond (string-append "\\" ornament " "))) (set! graphic (assq-ref params 'graphic)) (if (not graphic) (set! graphic ornament)))) (if (not direction) (set! direction (RadioBoxMenu (cons (_ "Above Note") "^") (cons (_ "Below Note") "_") (cons (_ "Auto Position") "-")))) (if (not direction) (set! direction "-")) (d-DirectivePut-standalone-minpixels tag 20) (d-DirectivePut-standalone-gx tag 20) (d-DirectivePut-standalone-gy tag (if (equal? direction "_") (+ 60 (- (string->number priority) 30)) (- -30 (string->number priority)))) (d-DirectivePut-standalone-prefix tag (string-append "<>-\\tweak outside-staff-priority " priority)) (set! data (assq-set! '() 'priority priority)) (set! data (assq-set! data 'direction direction)) (set! data (assq-set! data 'ornament ornament)) (d-DirectivePut-standalone-data tag (format #f "'~s" data)) (d-DirectivePut-standalone-postfix tag (string-append direction lilypond)) (d-DirectivePut-standalone-graphic tag graphic) (if appending (d-MoveCursorRight)) (d-SetSaved #f) (d-RefreshDisplay)) (begin (d-WarningDialog (_ "Cancelled"))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Ornaments/PaxHeaders.19168/Agrement.scm0000644000000000000000000000013213135434035027442 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.636648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Ornaments/Agrement.scm0000644000175000017500000000052513135434035031315 0ustar00jjbenhamjjbenham00000000000000;;;agrements (let ((choice (RadioBoxMenu (cons "Tremblement" "tremblement") (cons "Pincé" "pince") (cons "Tremblement Appuyé" "tremblement_appuye") (cons "Suspension" "suspension")))) (if choice (d-Ornament (list (cons 'ornament choice)(cons 'direction "^"))))) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Ornaments/PaxHeaders.19168/Agrement.xml0000644000000000000000000000013213135434035027460 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.636648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/Ornaments/Agrement.xml0000644000175000017500000000062113135434035031330 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Agrement Ornament <_label>Agréments <_tooltip>Insert a (French 18th c) agrément on the note at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/MetronomeMark.xml0000644000000000000000000000013213135434035026530 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.636648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/MetronomeMark.xml0000644000175000017500000000063213135434035030402 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MetronomeMark <_label>Tempi and Metronome Marks <_tooltip>Insert tempi and/or metronome marks, printed or not, adjust playback tempo to suit denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/BeatChange.scm0000644000000000000000000000013213135434035025713 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.636648472 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/BeatChange.scm0000644000175000017500000001137113135434035027567 0ustar00jjbenhamjjbenham00000000000000;;;BeatChange (let ((tag "BeatChange")(i 0)(Beat1 #f) (Beat2 #f) (LilyString #f) (DisplayString #f) (Input #f) (NewBPM 100) (ValidBPM? #f)(MidiBPM 100) (initial-text "(") (final-text ")")) ;GetBPM: ;sets MidiBPM, ValidBPM? based on user input. This will allow denemo's midi to respect the beat change. (define (GetBPM BaseBeat ) (let ((dotted #f)(defaultBPM "60") (len 1)(duration 1)(bpm 60)) ;if BaseBeat is not specified, must query the user as to what should be the first beat unit: (if (equal? "" BaseBeat) (set! BaseBeat (d-GetUserInput (_ "Metronome Marking") (_ "Give unit beat duration (e.g., 4. for ð…Ÿ. ) \n or enter n for none:") "4" ))) (if (or (equal? BaseBeat (_ "n") ) (equal? #f BaseBeat)) ;if user doesn't want to use BPM. (set! ValidBPM? #f) ; if user wants to use bpm... (begin (set! len (string-length BaseBeat) ) (set! dotted (equal? "." (substring BaseBeat (- len 1) len )) ) ;see if a dot at end (if dotted (set! duration (substring BaseBeat 0 (- len 1))) ;if there's a dot, cut it off from BaseBeat to get base duration. (set! duration BaseBeat) ) (set! bpm (d-GetUserInput (_ "Metronome Marking") (string-append (_ "Give number of these ") BaseBeat (_ " beats per minute:")) defaultBPM ) ) (set! ValidBPM? (not (equal? (and (string->number duration) (string->number bpm) ) #f))) ;don't go unless both are numbers. ;don't go unless base duration is valid lilypond: (could go higher if wanted): (set! ValidBPM? (and ValidBPM? (or (equal? duration "1")(equal? duration "2")(equal? duration "4")(equal? duration "8") (equal? duration "16")) ) ) (if (and bpm (equal? ValidBPM? #t)) (if dotted (set! MidiBPM (number->string (floor (* (/ (string->number bpm) (string->number duration)) 6 ) ) ) ) (set! MidiBPM (number->string (floor (* (/ (string->number bpm) (string->number duration) ) 4)) ) ) ) ;want * 3/2 for dotted,*4 since midi uses quarters and divide by duration, (d-WarningDialog "Incorrect BPM syntax.") ) ) ) );let );define GetBPM ;Begin of main function ;Input from the user what kind of beat change they want: (set! Input (d-GetUserInput (_ "Beat Change") (string-append (_ "Enter beat change as [beat1]=[beat2] with the beats in LilyPond syntax,") (_ "\ni.e. 4 for ð…Ÿ, 8. for dotted ð… , etc.") (_ "\nPlace immediately after a barline to center the beat change over the barline.")) "4=4.")) ;Input from the user text to be placed before (set! initial-text (d-GetUserInput (_ "Beat Change") (_ "Enter text (if any) to appear before the [beat1]=[beat2]") initial-text)) (set! final-text (d-GetUserInput (_ "Beat Change") (_ "Enter text (if any) to appear after the [beat1]=[beat2]") final-text)) (if (not initial-text) (set! initial-text "")) (if (not final-text) (set! final-text "")) ;remove spaces from Input: (set! DisplayString Input) (set! i (string-index Input #\=)) (set! Beat1 (substring Input 0 i)) (set! Beat2 (substring Input (+ 1 i))) ;now we want to get the new bpm from the user. Because e.g., if we had 4=100, and now 4. is the beat, we want the midi to be at a bpm of 4=150. ;This could be done automatically by a smart script that learned the current BPM and modified it appropriately. (set! MidiBPM (GetBPM Beat2)) ;set the string that tells lilypond how to make a beat change: (set! LilyString (string-append "\\mark \\markup \\tiny {" initial-text " \\general-align #Y #DOWN \\note #\"" Beat1 "\" #UP = \\general-align #Y #DOWN \\note #\"" Beat2 "\" #UP " final-text " } ")) ;now put in all the info into the denemo directive, including a midi bpm change if we have a valid one: (if (not (d-Directive-standalone? tag)) (d-DirectivePut-standalone tag)) (d-DirectivePut-standalone-postfix tag LilyString) (d-DirectivePut-standalone-display tag DisplayString) (d-DirectivePut-standalone-minpixels tag 15) (if (equal? ValidBPM? #t) (begin (d-DirectivePut-standalone-override tag (logior DENEMO_OVERRIDE_TAGEDIT DENEMO_OVERRIDE_TEMPO DENEMO_OVERRIDE_STEP)) (d-DirectivePut-standalone-midibytes tag MidiBPM) ) ) (d-SetSaved #f) (d-RefreshDisplay) ) denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/PaxHeaders.19168/FreeSegno.xml0000644000000000000000000000013213135434035025625 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.653315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/Markings/FreeSegno.xml0000644000175000017500000000061713135434035027502 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FreeSegno FreeFermata <_label>Standalone Segno (for barlines) <_tooltip>Typesets a segno over the barline. denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/EnableAccordion16v.xml0000644000000000000000000000013213135434035025542 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.653315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/EnableAccordion16v.xml0000644000175000017500000000075013135434035027415 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertDefinedLilyPond EnableAccordion16v <_label>Enable Accordion 16' <_tooltip>Defines the accordions shifts for this score. The command Menu of Objects to Insert will allow them to be inserted. denemo-2.2.0/actions/menus/ObjectMenu/Directives/PaxHeaders.19168/InsertStandaloneDirective.scm0000644000000000000000000000013213135434035027273 xustar0030 mtime=1500919837.976648473 30 atime=1500919926.653315139 30 ctime=1500919912.966648472 denemo-2.2.0/actions/menus/ObjectMenu/Directives/InsertStandaloneDirective.scm0000644000175000017500000000211113135434035031137 0ustar00jjbenhamjjbenham00000000000000;;;InsertStandaloneDirective (let ((replace #f)(choice 'new)(current (d-DirectiveGet-standalone-postfix (d-DirectiveGetTag-standalone)))) (if current (begin (set! choice (RadioBoxMenu (cons (_ "New LilyPond Directive") 'new) (cons (string-append (_ "Edit ") current) 'edit) (cons (_ "Advanced") 'advanced))) (case choice ((advanced) (d-DirectiveTextEdit-standalone (d-DirectiveGetTag-standalone)) (set! choice #f)) ((edit) (set! replace current))))) (if choice (let ((answer (d-GetUserInput "Insert Lilypond" "Give Lilypond text to insert" (if current current "")))) (if (and answer (not (string=? answer ""))) (begin (if replace (d-DirectivePut-standalone-postfix (d-DirectiveGetTag-standalone) (string-append answer " ")) (StandAloneDirectiveProto (cons (d-GetChecksum answer) (string-append answer " "))))))))) denemo-2.2.0/actions/menus/ObjectMenu/PaxHeaders.19168/TimeSig0000644000000000000000000000013213135434150020634 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/0000755000175000017500000000000013135434150022562 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/CadenzaTime.scm0000644000000000000000000000013213135434036023604 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.669981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/CadenzaTime.scm0000644000175000017500000000236613135434036025464 0ustar00jjbenhamjjbenham00000000000000;;;CadenzaTime (let ((tag "CadenzaTime")) (if (not (d-Directive-timesig? tag)) (GoToMeasureBeginning)) (if (d-Directive-timesig? tag) (d-InfoDialog (_ "Inserts a non-printing timesignature to indicate a cadenza follows. You must insert any barlines and beaming you require (otherwise none will typeset). End the cadenza by inserting an End Cadenza Time in a new Denemo bar.")) (let () (define (insert-timesig) (if (Timesignature?) (begin (d-DirectivePut-timesig-postfix tag "\\cadenzaOn ") (d-DirectivePut-timesig-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND)) (d-DirectivePut-timesig-gy tag 35) (d-DirectivePut-timesig-display tag (_ "Cadenza")) (d-DirectivePut-timesig-graphic tag "\nT\nSerif\n40\nbold\nitalic")))) (d-InsertTimeSig "256/1") (d-MoveCursorLeft) (d-PushPosition) (while (d-MoveToStaffUp)) (insert-timesig) (while (d-MoveToStaffDown (insert-timesig))) (d-PopPosition) (d-MoveCursorRight) (d-SetSaved #f))))denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/Unmeasured.xml0000644000000000000000000000013213135434036023546 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.669981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/Unmeasured.xml0000644000175000017500000000071013135434036025415 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Unmeasured NumericTimeSig <_label>Unmeasured Staff <_tooltip>Makes the staff accept any duration per Denemo measure. Equivalent to Cadenza Time from the first bar. denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/SingleDigitTimeSig.xml0000644000000000000000000000013213135434036025122 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.669981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/SingleDigitTimeSig.xml0000644000175000017500000000107313135434036026774 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HideTimesig SingleDigitTimeSig <_label>(Print) Single Digit <_tooltip>Makes the time signature at the cursor typeset as a single digit; if no time signature at cursor this applies to initial timesig of staff. Run the command again to delete/inspect the time signature directive. denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/ChordChartTimeSignature.xml0000644000000000000000000000013213135434036026160 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.686648472 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/ChordChartTimeSignature.xml0000644000175000017500000000065313135434036030035 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChordChartTimeSignature NumericTimeSig <_label>Chord Chart Time Signature <_tooltip>Inserts a time signature (for use in Chord Charts) denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/Unmeasured.scm0000644000000000000000000000013213135434036023530 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.686648472 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/Unmeasured.scm0000644000175000017500000000051713135434036025404 0ustar00jjbenhamjjbenham00000000000000;Unmeasured (let ((tag "Unmeasured")) (d-InitialTimeSig "256/1") (d-DirectivePut-timesig-postfix tag "\\cadenzaOn ") (d-DirectivePut-timesig-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND)) (d-DirectivePut-timesig-graphic tag "\n \n") (d-SetSaved #f))denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/ChooseTimeSignature.scm0000644000000000000000000000013213135434036025341 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.686648472 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/ChooseTimeSignature.scm0000644000175000017500000000111513135434036027210 0ustar00jjbenhamjjbenham00000000000000;ChooseTimeSignature (Doublestroke #f (cons "4/4" (lambda () (d-InsertTimeSig "4/4"))) ; 1 (cons "2/4" (lambda () (d-InsertTimeSig "2/4"))) ; 2 (cons "3/4" (lambda () (d-InsertTimeSig "3/4"))) ; 3 (cons "12/8" (lambda () (d-InsertTimeSig "12/8"))) ; 4 (cons "5/4" (lambda () (d-InsertTimeSig "5/4"))) ; 5 (cons "6/8" (lambda () (d-InsertTimeSig "6/8"))) ; 6 (cons "7/8" (lambda () (d-InsertTimeSig "7/8"))) ; 7 (cons "8/4" (lambda () (d-InsertTimeSig "8/4"))) ; 8 (cons "9/8" (lambda () (d-InsertTimeSig "9/8"))) ; 9 (cons "4/2" (lambda () (d-InsertTimeSig "4/2"))) ; 0 ) (d-SetSaved #f)denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/TwoTimeSignatures.xml0000644000000000000000000000013213135434036025073 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.686648472 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/TwoTimeSignatures.xml0000644000175000017500000000064713135434036026753 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TimesigWithBeatStructure TwoTimeSignatures <_label>Two Time Signatures <_tooltip>Prints two time-signatures, the second is active. denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/TimesigWithBeatStructure.scm0000644000000000000000000000013213135434036026372 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.686648472 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/TimesigWithBeatStructure.scm0000644000175000017500000000125513135434036030246 0ustar00jjbenhamjjbenham00000000000000;;;TimesigWithBeatStructure (let ((tag "TimesigWithBeatStructure") (spec '())) (GoToMeasureBeginning) (if (not (Timesignature?)) (begin (d-InsertTimeSig (d-GetPrevailingTimesig)) (d-MoveCursorLeft))) (set! spec (assoc-set! spec 'delete d-DirectiveDelete-timesig)) (set! spec (assoc-set! spec 'get d-DirectiveGet-timesig-data)) (set! spec (assoc-set! spec 'put d-DirectivePut-timesig-data)) (set! spec (assoc-set! spec 'proc d-DirectivePut-timesig-prefix)) (set! spec (assoc-set! spec 'layout "")) (set! spec (assoc-set! spec 'tag tag)) (d-SetBeamExceptions spec) (d-DirectivePut-timesig-display tag (_ "Beam"))) denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/NumericTimeSig.xml0000644000000000000000000000013213135434036024322 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.719981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/NumericTimeSig.xml0000644000175000017500000000067413135434036026202 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NumericTimeSig InsertTimeSig <_label>Numeric Time Signature <_tooltip>Typesets common and cut time numerically rather than the traditional C and C cut. denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/ChordChartTimeSignature.scm0000644000000000000000000000013213135434036026142 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.719981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/ChordChartTimeSignature.scm0000644000175000017500000000203613135434036030014 0ustar00jjbenhamjjbenham00000000000000;;ChordChartTimeSignature (let ((tag "ChordChartTimeSignature")(params ChordChartTimeSignature::params) (numerator (car (string-split (d-GetPrevailingTimesig) #\/))) (denominator (cadr (string-split (d-GetPrevailingTimesig) #\/)))) (d-InsertTimeSig (d-GetPrevailingTimesig)) (d-Directive-standalone tag) (d-DirectivePut-standalone-prefix tag "<>") (d-DirectivePut-standalone-postfix tag (string-append "^\\markup\\with-dimensions #'(-0 . 1) #'(-0 . 1) {\\scale #'(1.5 . 1.8) \\column{\\bold "numerator" \\raise #2 \\bold "denominator"}}\n\\once \\override ChordName.extra-offset =#'(2 . -2.5)\n")) ; (d-DirectivePut-standalone-data tag "(list (cons 'x-offset \"-3\") (cons 'y-offset \"-8\"))") (d-DirectivePut-standalone-graphic tag (string-append "\n"numerator"/"denominator"\nDenemo\n24")) (d-DirectivePut-standalone-minpixels tag 50) (d-DirectivePut-standalone-gx tag 15) (d-SetSaved #f) (d-RefreshDisplay))denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/CadenzaTime.xml0000644000000000000000000000013213135434036023622 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.719981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/CadenzaTime.xml0000644000175000017500000000110213135434036025465 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CadenzaTime NumericTimeSig <_label>Start Cadenza Time <_tooltip>Inserts a non-printing timesignature to indicate a cadenza follows. You must insert any barlines and beaming you require (otherwise none will typeset). End the cadenza by inserting an End Cadenza Time in a new Denemo bar. denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/ChooseTimeSignature.xml0000644000000000000000000000013213135434036025357 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.719981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/ChooseTimeSignature.xml0000644000175000017500000000057613135434036027240 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChooseTimeSignature <_label>Choose Typical Time Signature <_tooltip>Choose from a set of typical time signatures denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/ApparentTimeSignature.xml0000644000000000000000000000013213135434036025711 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.729981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/ApparentTimeSignature.xml0000644000175000017500000000103213135434036027556 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ApparentTimeSignature SingleDigitTimeSig <_label>Apparent Time Signature <_tooltip>Typesets a time signature which is not the one actually being used. This is used in polymetric music, often in conjunction with a tuplet spanning the whole staff. denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/BeamHalfMeasure.scm0000644000000000000000000000013213135434036024401 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.729981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/BeamHalfMeasure.scm0000644000175000017500000000065013135434036026253 0ustar00jjbenhamjjbenham00000000000000;;;;;;BeamHalfMeasure (let ((tag "BeamHalfMeasure")) (if (d-Directive-timesig? tag) (begin (d-InfoDialog (_ "Beaming at half measure allowed")) (d-DirectiveDelete-timesig tag)) (begin (d-DirectivePut-timesig-display tag (_ "Beaming breaks at half-measure")) (d-DirectivePut-timesig-postfix tag " \\set Timing.beamHalfMeasure = ##f "))) (d-SetSaved #f))denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/HideTimesig.scm0000644000000000000000000000013213135434036023613 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.729981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/HideTimesig.scm0000644000175000017500000000116113135434036025463 0ustar00jjbenhamjjbenham00000000000000;;;HideTimesig ;(let ((lilycontext (d-GetOption (string-append "Score" stop "Staff" stop "Voice" stop)))) (let ((lilycontext "Staff")) (if lilycontext (begin (if (d-Directive-timesig? "HideTimesig") (d-DirectiveDelete-timesig "HideTimesig") (begin (d-DirectivePut-timesig-prefix "HideTimesig" (string-append "\\once \\override " lilycontext ".TimeSignature #'stencil = ##f " )) (d-DirectivePut-timesig-gy "HideTimesig" 60) (d-DirectivePut-timesig-graphic "HideTimesig" "\n⋃\nDenemo\n24"))) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/TimesigWithBeatStructure.xml0000644000000000000000000000013213135434036026410 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.729981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/TimesigWithBeatStructure.xml0000644000175000017500000000102113135434036030253 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertTimeSig TimesigWithBeatStructure <_label>Time Signature with Beaming Rule <_tooltip>Inserts a time signature with indication for how to beam the notes. Insert at beginning of staff in order to replace the initial time signature. denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/TwoTimeSignatures.scm0000644000000000000000000000013213135434036025055 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.739981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/TwoTimeSignatures.scm0000644000175000017500000000155713135434036026736 0ustar00jjbenhamjjbenham00000000000000(let ((tag "TwoTimeSignatures") (num1 #f) (den1 #f) (text "")) (define (numerator) (car (string-split (d-GetPrevailingTimesig) #\/))) (define (denominator) (cadr (string-split (d-GetPrevailingTimesig) #\/))) (if (d-Directive-timesig? tag) (begin (d-DirectiveDelete-timesig tag) (d-InfoDialog (_ "Double time signature removed"))) (begin (d-LilyPondInclude "time-signatures.ily") (d-InsertTimeSig) (d-MoveCursorLeft) (set! num1 (numerator)) (set! den1 (denominator)) (set! text (string-append "\\once \\override Staff.TimeSignature #'stencil = #(alternate-time \"" num1 "\" \"" den1 "\" ")) (d-InsertTimeSig) (d-MoveCursorLeft) (set! text (string-append text "\"" (numerator) "\" \"" (denominator) "\")\n")) (d-DirectivePut-timesig-prefix tag text) (d-DirectivePut-timesig-display tag (string-append num1 "/" den1)))))denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/HideTimesig.xml0000644000000000000000000000013213135434036023631 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.739981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/HideTimesig.xml0000644000175000017500000000075513135434036025511 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChooseTimeSignature HideTimesig <_label>(Print) Hide <_tooltip>On printing, omit the time signature change at the cursor, or the initial time signature if the cursor is not on a time signature change. denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/NumericTimeSig.scm0000644000000000000000000000013213135434036024304 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.739981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/NumericTimeSig.scm0000644000175000017500000000060313135434036026154 0ustar00jjbenhamjjbenham00000000000000;;;NumericTimeSig (let ((tag "NumericTimeSig")) (if (d-Directive-timesig? tag) (d-DirectiveDelete-timesig tag) (begin (d-DirectivePut-timesig-prefix tag "\\numericTimeSignature\n") (d-DirectivePut-timesig-graphic tag "\nN\nDenemo\n12") (d-DirectivePut-timesig-gy tag 0) (d-DirectivePut-timesig-minpixels tag 30))) (d-SetSaved #f) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/InsertBeamingRule.xml0000644000000000000000000000013213135434036025015 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.739981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/InsertBeamingRule.xml0000644000175000017500000000143513135434036026671 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertBeamingRule <_label>Beaming Rule Change <_tooltip>Inserts a (hidden) time signature with rules to be used for beaming. With no selection gets the beat for beams to be divided for the prevailing time signature at the cursor. If a there is a selection this will be used as the set of rules. In this case indicate the beaming desired using the manual beam commands [ and ], giving all the beaming rules wanted using several measures if needed (no other rules are used). Repeat with different selections to add further rules. denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/ApparentTimeSignature.scm0000644000000000000000000000013213135434036025673 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.753315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/ApparentTimeSignature.scm0000644000175000017500000000077713135434036027557 0ustar00jjbenhamjjbenham00000000000000;;ApparentTimeSignature (let ((real (d-GetPrevailingTimesig))) (d-InsertTimeSig) (d-MoveCursorLeft) (if (equal? (d-GetType) "TIMESIG") (let ((timesig (d-GetPrevailingTimesig))) (d-InsertTimeSig real) (d-DirectivePut-timesig-postfix "ApparentTimeSignature" (string-append "\\set Staff.timeSignatureFraction = " timesig " ")) (d-DirectivePut-timesig-override "ApparentTimeSignature" DENEMO_OVERRIDE_LILYPOND) (d-DirectivePut-timesig-display "ApparentTimeSignature" timesig) (d-SetSaved #f))))denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/InsertBeamingRule.scm0000644000000000000000000000013213135434036024777 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.753315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/InsertBeamingRule.scm0000644000175000017500000000141113135434036026645 0ustar00jjbenhamjjbenham00000000000000;;;InsertBeamingRule (let ((tag "InsertBeamingRule")(spec '())) (GoToMeasureBeginning) (if (not (Timesignature?)) (begin (d-InsertTimeSig (d-GetPrevailingTimesig)) (d-MoveCursorLeft) (d-HideTimesig))) (set! spec (assoc-set! spec 'delete d-DirectiveDelete-timesig)) (set! spec (assoc-set! spec 'get d-DirectiveGet-timesig-data)) (set! spec (assoc-set! spec 'put d-DirectivePut-timesig-data)) (set! spec (assoc-set! spec 'proc d-DirectivePut-timesig-prefix)) (set! spec (assoc-set! spec 'layout "")) (set! spec (assoc-set! spec 'tag tag)) (d-SetBeamExceptions spec) (d-DirectivePut-timesig-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-timesig-display tag (_ "Beam"))) denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/BeamHalfMeasure.xml0000644000000000000000000000013213135434036024417 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.753315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/BeamHalfMeasure.xml0000644000175000017500000000073113135434036026271 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BeamHalfMeasure SingleDigitTimeSig <_label>Beam at Half Measure (Off/On) <_tooltip>In time signatures 3/N prevent beaming across the beat. Repeat the command to allow such beaming. denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/EndCadenzaTime.scm0000644000000000000000000000013213135434036024233 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.753315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/EndCadenzaTime.scm0000644000175000017500000000173213135434036026107 0ustar00jjbenhamjjbenham00000000000000;;EndCadenzaTime (let ((tag "EndCadenzaTime")) (define (insert-timesig time) (if (not (d-Directive-standalone? "ForceBarline")) (d-ForceBarline)) (d-HideTimesig) (d-DirectivePut-timesig-prefix tag "\\cadenzaOff " ) (d-DirectivePut-timesig-gy tag -15) (d-DirectivePut-timesig-gx tag -5) (d-DirectivePut-timesig-display tag (_ "End Cad.")) (d-DirectivePut-timesig-graphic tag "\nT\nSerif\n40\nbold\nitalic")) (if (d-Directive-timesig? tag) (d-InfoDialog (_ "Inserts a time signature to resume normal measured music.")) (begin (if (not (ZeroDurationMeasure?)) (d-AddMeasure)) (d-InsertTimeSig) (GoToMeasureBeginning) (if (Timesignature?) (let ((time (d-GetPrevailingTimesig))) (d-PushPosition) (while (d-MoveToStaffUp)) (insert-timesig time) (while (d-MoveToStaffDown) (insert-timesig time)) (d-PopPosition) (d-SetSaved #f)))))) denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/EndCadenzaTime.xml0000644000000000000000000000013213135434036024251 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.753315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/EndCadenzaTime.xml0000644000175000017500000000065113135434036026124 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EndCadenzaTime CadenzaTime <_label>End Cadenza Time <_tooltip>Inserts a non-printing time signature to resume normal measured music. denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/PaxHeaders.19168/SingleDigitTimeSig.scm0000644000000000000000000000013213135434036025104 xustar0030 mtime=1500919838.039981806 30 atime=1500919926.773315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/TimeSig/SingleDigitTimeSig.scm0000644000175000017500000000163113135434036026756 0ustar00jjbenhamjjbenham00000000000000;;;SingleDigitTimeSig (if (d-Directive-timesig? "SingleDigitTimeSig") (let ((choice (RadioBoxMenu (cons (_ "Inspect/Edit Single Digit Directive") 'help) (cons (_ "Delete") 'delete)))) (case choice ((help) (if (Appending?) (d-MoveCursorLeft)) (if (Timesignature?) (d-DisplayCurrentObject) (d-EditStaffProperties))) ((delete) (d-DirectiveDelete-timesig "SingleDigitTimeSig")))) (begin (d-DirectivePut-timesig-prefix "SingleDigitTimeSig" "\\once \\override Staff.TimeSignature #'style = #'single-digit\n") (d-DirectivePut-timesig-graphic "SingleDigitTimeSig" "\n1-Digit\nDenemo\n12") (d-DirectivePut-timesig-gy "SingleDigitTimeSig" 0) (d-DirectivePut-timesig-minpixels "SingleDigitTimeSig" 30))) (d-SetSaved #f) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/PaxHeaders.19168/NotesRests0000644000000000000000000000013213135434150021404 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/0000755000175000017500000000000013135434150023332 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/Directives0000644000000000000000000000013213135434150023505 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/0000755000175000017500000000000013135434150025433 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/PaxHeaders.19168/InsertNoteDirective.scm0000644000000000000000000000013213135434035030221 xustar0030 mtime=1500919837.996648472 30 atime=1500919926.773315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/InsertNoteDirective.scm0000644000175000017500000000345213135434035032076 0ustar00jjbenhamjjbenham00000000000000;;;InsertNoteDirective (let ((params InsertNoteDirective::params) (replace #f)(choice 'new) (currentpost (d-DirectiveGet-note-postfix (d-DirectiveGetTag-note))) (currentpre (d-DirectiveGet-note-prefix (d-DirectiveGetTag-note)))) (if(or currentpre currentpost) (begin (if (not currentpre) (set! currentpre "")) (if (not currentpost) (set! currentpost "")) (set! choice (RadioBoxMenu (cons (_ "New LilyPond Directive") 'new) (cons (string-append (_ "Edit ") currentpre " | " currentpost) 'edit) (cons (string-append (_ "Delete ") currentpre " | " currentpost) 'delete) (cons (_ "Advanced") 'advanced))) (case choice ((advanced) (d-DirectiveTextEdit-note (d-DirectiveGetTag-note)) (set! choice #f)) ((delete) (set! choice #f) (d-DirectiveDelete-note (d-DirectiveGetTag-note))) ((edit) (set! replace choice))))) (if choice (let ((answer1 (d-GetUserInput "Insert Lilypond" "Give Lilypond text to insert before note" currentpre)) (answer2 (d-GetUserInput "Insert Lilypond" "Give Lilypond text to insert after note" currentpost))) (if (or answer1 answer2) (let ((tag (d-GetChecksum (string-append answer1 answer2)))) (if replace (set! tag (d-DirectiveGetTag-note))) (if answer1 (d-DirectivePut-note-prefix tag answer1)) (if answer2 (d-DirectivePut-note-postfix tag answer2)) (d-DirectivePut-note-display tag (string-append answer1 "|" answer2)) (d-SetSaved #f)))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/PaxHeaders.19168/DeleteLilyPondOnNote.sc0000644000000000000000000000013213135434035030113 xustar0030 mtime=1500919837.996648472 30 atime=1500919926.783315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/DeleteLilyPondOnNote.scm0000644000175000017500000000006613135434035032143 0ustar00jjbenhamjjbenham00000000000000(d-AttachLilyToNote "prefix= \0postfix= \0display= ") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/PaxHeaders.19168/InsertNoteDirective.xml0000644000000000000000000000013213135434035030237 xustar0030 mtime=1500919837.996648472 30 atime=1500919926.783315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/InsertNoteDirective.xml0000644000175000017500000000070713135434035032114 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertNoteDirective <_label>Attach/Edit LilyPond to Note <_tooltip>Inserts LilyPond syntax you give before and after the note at the cursor height, also allows editing/deleting. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/PaxHeaders.19168/DeleteLilyPondOnNote.xm0000644000000000000000000000013213135434035030132 xustar0030 mtime=1500919837.996648472 30 atime=1500919926.783315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/DeleteLilyPondOnNote.xml0000644000175000017500000000061313135434035032157 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteLilyPondOnNote <_label>Delete LilyPond on Note <_tooltip>Deletes the LilyPond attached to the note where the cursor is. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/PaxHeaders.19168/Conditional-Directives0000644000000000000000000000013213135434150030047 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/0000755000175000017500000000000013135434150031775 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/PaxHeaders.19168/0000644000000000000000000000032113135434035030130 xustar00119 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/DirectiveForAllLayouts.scm 30 mtime=1500919837.993315139 30 atime=1500919926.783315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/DirectiveForAllLa0000644000175000017500000000345713135434035035226 0ustar00jjbenhamjjbenham00000000000000;;;;;;;; DirectiveForAllLayouts (let ((params DirectiveForAllLayouts::params) (tag (d-DirectiveGetTag-standalone)) (text #f) (note #f)) (define (d-InfoDialog string) (Help::TimedNotice (string-append string "\n") 5000)) (define (do-rest) (d-PushPosition) (while (d-NextObject) (if note (if (d-Directive-note? tag) (begin (d-DirectivePut-note-ignore tag 0)(d-DirectivePut-note-allow tag 0))) (if (d-Directive-chord? tag) (begin (d-DirectivePut-chord-ignore tag 0)(d-DirectivePut-chord-allow tag 0))))) (d-PopPosition)) (if tag (d-ForAllLayouts #f) (begin (if (not (pair? params)) (set! params (d-ChooseTagAtCursor))) (if (pair? params) (begin (set! tag (car params)) (set! note (cdr params)) (if note (begin (d-DirectivePut-note-ignore tag 0)(d-DirectivePut-note-allow tag 0)) (begin (d-DirectivePut-chord-ignore tag 0)(d-DirectivePut-chord-allow tag 0))) (if (RadioBoxMenu (cons (_ "Just for this one") #f) (cons (_ "Apply condition to all further cases in this staff") 'yes)) (begin (do-rest) (d-InfoDialog (string-append (_ "Directive ") "\"" tag "\"" (_ " on ") (if note (_ "Notes") (_ "Chords")) (_ " in this staff from the cursor onwards will be typeset for all layouts ")))) (d-InfoDialog (string-append (_ "Directive ") "\"" tag "\"" (_ " on ") (if note (_ "Note") (_ "Chord")) (_ " will be typeset for all layouts ")))) (d-SetSaved #f)) (begin (d-WarningDialog (_ "Cancelled"))))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/PaxHeaders.19168/0000644000000000000000000000032113135434035030130 xustar00119 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/DirectiveForAllLayouts.xml 30 mtime=1500919837.993315139 30 atime=1500919926.793315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/DirectiveForAllLa0000644000175000017500000000110213135434035035207 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DirectiveForAllLayouts DirectiveNotForLayout <_label>Reset for All Layouts <_tooltip>Makes a (chosen) directive on the note/chord at the cursor be typeset normally, i.e for all layouts. The cursor should be positioned at the note height if a directive attached to the note is intended. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/PaxHeaders.19168/0000644000000000000000000000032013135434035030127 xustar00118 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/DirectiveNotForLayout.xml 30 mtime=1500919837.993315139 30 atime=1500919926.793315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/DirectiveNotForLa0000644000175000017500000000111313135434035035241 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DirectiveNotForLayout DirectiveOnlyForLayout <_label>Ignore for Current Layout <_tooltip>Makes a (chosen) directive on the note/chord at the cursor be ignored for typesetting the current layout. The cursor should be positioned at the note height if a directive attached to the note is intended. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/PaxHeaders.19168/0000644000000000000000000000032113135434035030130 xustar00119 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/DirectiveOnlyForLayout.xml 30 mtime=1500919837.996648472 30 atime=1500919926.793315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/DirectiveOnlyForL0000644000175000017500000000111113135434035035257 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DirectiveOnlyForLayout InsertNoteDirective <_label>Allow for Current Layout <_tooltip>Makes a (chosen) directive on the note/chord at the cursor take effect for typesetting the current layout. The cursor should be positioned at the note height if a directive attached to the note is intended. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/PaxHeaders.19168/0000644000000000000000000000032013135434035030127 xustar00118 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/DirectiveNotForLayout.scm 30 mtime=1500919837.993315139 30 atime=1500919926.793315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/DirectiveNotForLa0000644000175000017500000000367213135434035035255 0ustar00jjbenhamjjbenham00000000000000;;;;;;;; DirectiveNotForLayout (let ((params DirectiveNotForLayout::params)(tag (d-DirectiveGetTag-standalone)) ( id (d-GetLayoutId)) (text #f) (note #f)) (define (d-InfoDialog string) (Help::TimedNotice (string-append string "\n") 5000)) (define (do-rest) (d-PushPosition) (while (d-NextObject) (if note (if (d-Directive-note? tag) (d-DirectivePut-note-ignore tag id)) (if (d-Directive-chord? tag) (d-DirectivePut-chord-ignore tag id)))) (d-PopPosition)) (if tag (d-NotForLayout #f) (begin (if (not (pair? params)) (begin (set! params (d-ChooseTagAtCursor)) (if params (set! params (cons (cons (d-GetLayoutName) id) params))))) (if (pair? params) (let ((layout (car params))) (set! id (cdr layout)) (set! params (cdr params)) (set! tag (car params)) (set! note (cdr params)) (if note (d-DirectivePut-note-ignore tag id) (d-DirectivePut-chord-ignore tag id)) (if (RadioBoxMenu (cons (_ "Just for this one") #f) (cons (_ "Apply condition to all further cases in this staff") 'yes)) (begin (do-rest) (d-InfoDialog (string-append (_ "Directives ") "\"" tag "\"" (_ " on ") (if note (_ "Notes") (_ "Chords")) (_ " in this staff from the cursor onwards will not be typeset for the layout ") "\"" (car layout) "\"" ))) (d-InfoDialog (string-append (_ "Directive ") "\"" tag "\"" (_ " on ") (if note (_ "Note") (_ "Chord")) (_ " will not be typeset for the layout ") "\"" (car layout) "\""))) (d-SetSaved #f)) (begin (d-WarningDialog (_ "Cancelled"))))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/PaxHeaders.19168/0000644000000000000000000000032113135434035030130 xustar00119 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/DirectiveOnlyForLayout.scm 30 mtime=1500919837.993315139 30 atime=1500919926.803315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Directives/Conditional-Directives/DirectiveOnlyForL0000644000175000017500000000374013135434035035271 0ustar00jjbenhamjjbenham00000000000000;;;;;;;; DirectiveOnlyForLayout (let ((params DirectiveOnlyForLayout::params)(tag (d-DirectiveGetTag-standalone)) ( id (d-GetLayoutId)) (text #f) (note #f)) (define (d-InfoDialog string) (Help::TimedNotice (string-append string "\n") 5000)) (define (do-rest) (d-PushPosition) (while (d-NextObject) (if note (if (d-Directive-note? tag) (d-DirectivePut-note-allow tag id)) (if (d-Directive-chord? tag) (d-DirectivePut-chord-allow tag id)))) (d-PopPosition)) (if tag (d-OnlyForLayout #f) (begin (if (not (pair? params)) (begin (set! params (d-ChooseTagAtCursor)) (if params (set! params (cons (cons (d-GetLayoutName) id) params))))) (if (pair? params) (let ((layout (car params))) (set! id (cdr layout)) (set! params (cdr params)) (set! tag (car params)) (set! note (cdr params)) (if note (d-DirectivePut-note-allow tag id) (d-DirectivePut-chord-allow tag id)) (if (RadioBoxMenu (cons (_ "Just for this one") #f) (cons (_ "Apply condition to all further cases in this staff") 'yes)) (begin (do-rest) (d-InfoDialog (string-append (_ "Directives ") "\"" tag "\"" (_ " on ") (if note (_ "Notes") (_ "Chords")) (_ " in this staff from the cursor onwards will be typeset for the layout ") "\"" (car layout) "\"" ))) (d-InfoDialog (string-append (_ "Directive ") "\"" tag "\"" (_ " on ") (if note (_ "Note") (_ "Chord")) (_ " will be typeset for the layout ") "\"" (car layout) "\""))) (d-SetSaved #f)) (begin (d-WarningDialog (_ "Cancelled"))))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/ParenthesizeNote.scm0000644000000000000000000000013213135434036025457 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.803315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ParenthesizeNote.scm0000644000175000017500000000121213135434036027324 0ustar00jjbenhamjjbenham00000000000000;;; ParenthesizeNote (let ((tag "ParenthesizeNote")) (if (Note?) (begin (if (d-Directive-note? tag) (let ((choice (RadioBoxMenu (cons (_ "Object Inspector") 'help) (cons (_ "Delete") 'delete)))) (case choice ((help) (d-DisplayCurrentObject)) ((delete) (d-DirectiveDelete-note tag)))) (begin (d-DirectivePut-note-prefix tag "\\parenthesize ") (d-DirectivePut-note-display tag "()"))) (d-SetSaved #f)) (begin (if (Music?) (d-ParenthesizeChord) (begin (d-WarningDialog (_ "Applies to Note, Chord or Rest"))))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/FingeringsDoublestroke.scm0000644000000000000000000000013213135434035026645 xustar0030 mtime=1500919837.996648472 30 atime=1500919926.803315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/FingeringsDoublestroke.scm0000644000175000017500000000046013135434035030516 0ustar00jjbenhamjjbenham00000000000000 (Doublestroke #f (cons "Finger 1" d-Finger1) ;1 (cons "Finger 2" d-Finger2) ;2 (cons "Finger 3" d-Finger3) ;3 (cons "Finger 4" d-Finger4) ;4 (cons "Finger 5" d-Finger5) ;5 (cons "" False) (cons "" False) (cons "" False) (cons "" False) (cons "Finger 0 / Open String" d-Finger0) ; 0 - Open String )denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/MIDI0000644000000000000000000000013213135434150022126 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/MIDI/0000755000175000017500000000000013135434150024054 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/MIDI/PaxHeaders.19168/InsertMarkedMidi.scm0000644000000000000000000000013213135434035026104 xustar0030 mtime=1500919837.999981805 30 atime=1500919926.823315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/MIDI/InsertMarkedMidi.scm0000644000175000017500000000005413135434035027754 0ustar00jjbenhamjjbenham00000000000000;;;InsertMarkedMidi (d-InsertMarkedMidiNote)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/MIDI/PaxHeaders.19168/InsertMarkedMidi.xml0000644000000000000000000000013213135434035026122 xustar0030 mtime=1500919837.999981805 30 atime=1500919926.823315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/MIDI/InsertMarkedMidi.xml0000644000175000017500000000077213135434035030001 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertMarkedMidi Tremolo <_label>Insert Marked MIDI <_tooltip>Inserts the marked MIDI note from the current track, using the duration suggested. Use duration keys to insert the same note with a different duration. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/GraceNotes0000644000000000000000000000013213135434150023436 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/0000755000175000017500000000000013135434150025364 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/UnGraceAfter.scm0000644000000000000000000000013213135434035026527 xustar0030 mtime=1500919837.999981805 30 atime=1500919926.823315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/UnGraceAfter.scm0000644000175000017500000000157413135434035030407 0ustar00jjbenhamjjbenham00000000000000;;UnGraceAfter (d-PushPosition) (if (Appending?) (d-MoveCursorLeft)) (while (and (d-IsGrace) (d-MoveCursorLeft)) #t) (if (and (Note?) (d-Directive-chord? "MainGraceAfter")) (begin (while (and (d-MoveCursorRight) (d-IsGrace)) #t) (if (not (d-IsGrace)) (d-MoveCursorLeft)) ;; on last grace note (let loop () (if (d-IsGrace) (let ((beam (d-DirectiveGet-chord-postfix "Beam"))) (if beam (d-DirectivePut-chord-override "Beam" 0);;really should just 0 the HIDDEN bit ) (d-DirectiveDelete-chord "GraceAfter" ) (if (d-MoveCursorLeft) (loop))))) ; now on main note (d-DirectiveDelete-chord "MainGraceAfter") (d-PopPosition) (d-SetSaved #f)) (begin (d-PopPosition) (d-WarningDialog (_ "The cursor is not on a grace note after a main note or chord\n")))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/InsertTwoGraceNotesBeam0000644000000000000000000000013213135434035030136 xustar0030 mtime=1500919837.999981805 30 atime=1500919926.823315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/InsertTwoGraceNotesBeamed.xml0000644000175000017500000000070013135434035033114 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleGrace InsertTwoGraceNotesBeamed <_label>Insert Two <_tooltip>Inserts two grace notes at the cursor beaming them together. Follow with a duration key. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/InsertTwoGraceNotesBeam0000644000000000000000000000013213135434035030136 xustar0030 mtime=1500919837.999981805 30 atime=1500919926.833315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/InsertTwoGraceNotesBeamed.scm0000644000175000017500000000213113135434035033076 0ustar00jjbenhamjjbenham00000000000000 ;;;;;;;;;;;TwoGraceInsert with beaming into the score ;(Help::Push (cons 'doublestroketemp (_ "Press a duration key to get two, beamed, grace notes"))) (Help::Push (cons 'doublestroketemp (string-append " " (_ "Press a duration key to get two, beamed, grace notes") ""))) (let () (define command #f) (define duration (d-GetCommand)) (cond ((equal? duration "d-0") (set! command d-0)) ((equal? duration "d-1") (set! command d-1)) ((equal? duration "d-2") (set! command d-2)) ((equal? duration "d-3") (set! command d-3)) ((equal? duration "d-4") (set! command d-4)) ((equal? duration "d-5") (set! command d-5)) ((equal? duration "d-6") (set! command d-6)) ((equal? duration "d-7") (set! command d-7))) (if command (begin (command) (d-ToggleGrace) (d-StartBeam) (d-RefreshDisplay) (command) (d-ToggleGrace) (d-EndBeam) (Help::Pop)) (begin (Help::Pop) (Help::TimedNotice (_ "To use this function correctly you need to give a duration.\nThis will insert two grace notes, beamed together if needed, with the given duration"))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/GraceNoteSwitcher.scm0000644000000000000000000000013213135434035027601 xustar0030 mtime=1500919837.996648472 30 atime=1500919926.833315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/GraceNoteSwitcher.scm0000644000175000017500000000005513135434035031452 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleGrace) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/MakeGrace.scm0000644000000000000000000000013213135434035026040 xustar0030 mtime=1500919837.999981805 30 atime=1500919926.836648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/MakeGrace.scm0000644000175000017500000000015313135434035027710 0ustar00jjbenhamjjbenham00000000000000;MakeGrace (d-ToggleGrace) (if (d-IsGrace) (d-PlayMidiNote 84 255 9 100) (d-PlayMidiNote 35 255 9 100))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/GraceAfter.scm0000644000000000000000000000013213135434035026224 xustar0030 mtime=1500919837.996648472 30 atime=1500919926.836648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/GraceAfter.scm0000644000175000017500000000363013135434035030077 0ustar00jjbenhamjjbenham00000000000000;;GraceAfter (d-PushPosition) (if (Appending?) (d-MoveCursorLeft)) (while (and (d-IsGrace) (d-MoveCursorLeft)) #t) (if (and (Note?) (not (d-IsGrace))) (begin (while (and (d-MoveCursorRight) (Note?) (d-IsGrace)) #t) (if (or (Appending?) (not (Note?)) (not (d-IsGrace))) (d-MoveCursorLeft)) (if (d-IsGrace) (begin ;; on last grace note (let loop ((close "}")) (if (d-IsGrace) (let ((beam (d-DirectiveGet-chord-postfix "Beam"))) (if beam (d-DirectivePut-chord-override "Beam" (logior (d-DirectiveGet-chord-override "Beam") DENEMO_OVERRIDE_HIDDEN)) (set! beam "")) (d-DirectivePut-chord-postfix "GraceAfter" (string-append (d-GetNote) (d-GetNoteDuration) beam (if (d-IsSlurStart) "(" "") (if (d-IsSlurEnd) ")" "") close)) (d-DirectivePut-chord-override "GraceAfter" DENEMO_OVERRIDE_LILYPOND) (if (d-MoveCursorLeft) (loop ""))))) (d-MoveCursorRight) (d-DirectivePut-chord-prefix "GraceAfter" "{") (d-MoveCursorLeft) ; now on main note (d-DirectivePut-chord-display "MainGraceAfter" "Grace After" ) (d-DirectivePut-chord-prefix "MainGraceAfter" "\\afterGrace ") (d-DirectivePut-chord-override "MainGraceAfter" DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-minpixels "MainGraceAfter" 20) (d-PopPosition) (d-SetSaved #f)) (begin (d-PopPosition) (d-WarningDialog (_ "The cursor is not on a grace note after a main note or chord\nFirst create the main note, then follow it with the grace note(s) then invoke this command with the cursor on the grace note"))))) (begin (d-PopPosition) (d-WarningDialog (_ "The cursor is not on a grace note after a main note or chord\nFirst create the main note, then then follow it with the grace note(s) then invoke this command with the cursor on the grace note"))))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/GraceTermination.xml0000644000000000000000000000013213135434035027472 xustar0030 mtime=1500919837.996648472 30 atime=1500919926.846648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/GraceTermination.xml0000644000175000017500000000073413135434035031347 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GraceTermination UnGraceAfter <_label>Termination <_tooltip>Appends two grace notes, slurred to current note. Follow with a duration key to set duration of grace notes to be appended. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/GraceTermination.scm0000644000000000000000000000013213135434035027454 xustar0030 mtime=1500919837.996648472 30 atime=1500919926.846648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/GraceTermination.scm0000644000175000017500000000046513135434035031332 0ustar00jjbenhamjjbenham00000000000000;;;GraceTermination (d-PushClipboard) (d-InsertTwoGraceNotesBeamed) (d-MoveCursorLeft) (d-SetMark) (d-MoveCursorLeft) (d-SetPoint) (d-Cut) (d-MoveCursorLeft) (d-Paste) (d-MoveCursorLeft) (d-MoveCursorLeft) (d-MoveCursorLeft) (d-SlurTwo) (d-ExtendSlur) (d-MoveCursorRight) (d-MoveCursorRight) (d-PopClipboard) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/InstallGraceNoteHints.x0000644000000000000000000000013213135434035030112 xustar0030 mtime=1500919837.999981805 30 atime=1500919926.846648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/InstallGraceNoteHints.xml0000644000175000017500000000107313135434035032315 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS UnGraceAfter InstallGraceNoteHints <_label>Install Grace Note Hints <_tooltip>Where a grace note occurs at a boundary the LilyPond typesetter requires extra hints about positioning. This command installs them for the whole movement. It is usually run in the Check Score routine. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/InstallGraceNoteHints.s0000644000000000000000000000013213135434035030105 xustar0030 mtime=1500919837.999981805 30 atime=1500919926.846648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/InstallGraceNoteHints.scm0000644000175000017500000000576613135434035032314 0ustar00jjbenhamjjbenham00000000000000;;InsertGraceNoteHints FIX FOR EMPTY MEASURES (let ((last-object 'none) (notice #f)) (define (GetStartTick) (define tick (d-GetStartTick)) (if tick tick 0)) (define (clean-measure) (let loop () (if (and (Rest?) (d-IsGrace)) (begin (d-DeleteObject) (loop))) (if (d-NextObjectInMeasure) (loop)))) (define (get-grace) (define str "(d-InsertBlankWholeNote)(d-MoveCursorLeft)(d-ToggleGrace)") (let ((duration (d-GetNoteBaseDuration)) ) (set! str (string-append str "(d-Change" (number->string duration) ")(d-MoveCursorRight)"))) (let loop () (if (d-NextChordInMeasure) (if (d-IsGrace) (begin (set! str (string-append str "(d-InsertBlankWholeNote)(d-MoveCursorLeft)(d-ToggleGrace)" "(d-Change" (number->string (d-GetNoteBaseDuration)) ")(d-MoveCursorRight)")) (loop))))) str) (define (no-grace-at-tick start-tick) (define ret #t) (d-PushPosition) (let loop () (if (= start-tick (GetStartTick)) (if (d-IsGrace) (set! ret #f) (if (d-NextObjectInMeasure) (loop))))) (d-PopPosition) (if (not (Music?)) (d-NextObjectInMeasure)) ret) (define (ensure-grace start-tick grace) (let loop () (if (and (> start-tick (GetStartTick)) (d-NextObjectInMeasure)) (loop) (begin (if (= (GetStartTick) start-tick) (if (no-grace-at-tick start-tick) (eval-string grace))))))) (define (dangerous-grace?) (let loop () (if (not (and (d-IsGrace) (not (d-GetNonprinting)) last-object)) (begin (set! last-object (not (Music?))) (if (d-NextObjectInMeasure) (loop))))) (d-IsGrace)) (define (fix-measure) (set! last-object 'beginning) (if (and (MeasureComplete?) (dangerous-grace?)) (let ((start-tick (GetStartTick)) (grace (get-grace))) (set! notice (_ "Grace note hints installed")) (d-PushPosition) (while (MoveUpStaffOrVoice)) (while (d-PrevObjectInMeasure)) ;;if it doesn't go up a staff we may not be at the start. (ensure-grace start-tick grace) (let loop () (if (MoveDownStaffOrVoice) (begin (if (MeasureComplete?) (ensure-grace start-tick grace)) (loop)))) (d-PopPosition)))) (define (action-staff action) (d-MoveToBeginning) (action) (while (d-MoveToMeasureRight) (action))) (define (action-movement action) (action-staff action) (while (MoveDownStaffOrVoice) (action-staff action))) ;;;actual procedure follows (d-PushPosition) (while (MoveUpStaffOrVoice)) (action-movement clean-measure) (while (MoveUpStaffOrVoice)) (action-movement fix-measure) (if notice (TimedNotice notice)) (d-PopPosition)) ;;;;;;;;;;;;;;;;;;;;;; denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/GraceAfter.xml0000644000000000000000000000013213135434035026242 xustar0030 mtime=1500919837.996648472 30 atime=1500919926.856648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/GraceAfter.xml0000644000175000017500000000101713135434035030112 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GraceAfter <_label>Grace After <_tooltip>Print the grace note(s) at the cursor attached to the previous note. Beware! You must reissue this command if you change the notes in any way, only the pitch and duration when this command was issued will be printed. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/GraceNoteSwitcher.xml0000644000000000000000000000013213135434035027617 xustar0030 mtime=1500919837.996648472 30 atime=1500919926.856648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/GraceNoteSwitcher.xml0000644000175000017500000000057513135434035031477 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GraceNoteSwitcher <_label>Grace Note (On/Off) <_tooltip>Transforms the current selected notes into grace notes. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/UnGraceAfter.xml0000644000000000000000000000013213135434035026545 xustar0030 mtime=1500919837.999981805 30 atime=1500919926.856648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/UnGraceAfter.xml0000644000175000017500000000066313135434035030423 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GraceAfter UnGraceAfter <_label>Un-Grace After <_tooltip>Make the grace note at the cursor closer to the following rather than preceding note. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/PaxHeaders.19168/MakeGrace.xml0000644000000000000000000000013213135434035026056 xustar0030 mtime=1500919837.999981805 30 atime=1500919926.856648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/GraceNotes/MakeGrace.xml0000644000175000017500000000065313135434035027733 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleGrace MakeGrace <_label>Grace/UnGrace <_tooltip>Changes the note at the cursor to/from being a grace note. Gives audio feedback. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/NoteheadControl0000644000000000000000000000013213135434150024474 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/0000755000175000017500000000000013135434150026422 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/PaxHeaders.19168/IndividualNotehead0000644000000000000000000000013213135434036030237 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.879981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/IndividualNoteheadSize.xml0000644000175000017500000000071713135434036033547 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS IndividualNoteheadSize NeoMensuralNotehead <_label>Individual Note Head Size <_tooltip>Allows the notehead that the cursor is on to be made larger of smaller than normal. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/PaxHeaders.19168/NeoMensuralNotehea0000644000000000000000000000013213135434036030233 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.879981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/NeoMensuralNotehead.xml0000644000175000017500000000062313135434036033050 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeNotehead NeoMensuralNotehead <_label>Neo-mensural <_tooltip>Prints note with neomensural style notehead. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/PaxHeaders.19168/IndividualNotehead0000644000000000000000000000013213135434036030237 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.879981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/IndividualNoteheadSize.scm0000644000175000017500000000107013135434036033522 0ustar00jjbenhamjjbenham00000000000000;;;IndividualNoteheadSize (let ((tag "NoteHeadSize") (current #f)(size #f)(data #f)) (if (d-Directive-note? tag) (begin (set! data (d-DirectiveGet-note-data tag)))) (if data (set! current data) (set! current "-2")) (set! size (d-GetUserInput (_ "Notehead Font Magnification") (_ "Give size required: ") current)) (if size (begin (d-DirectivePut-note-prefix tag (string-append " \\tweak font-size #" size " ")) (d-DirectivePut-note-data tag size) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/PaxHeaders.19168/NeoMensuralNotehea0000644000000000000000000000013213135434036030233 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.879981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/NeoMensuralNotehead.scm0000644000175000017500000000033613135434036033033 0ustar00jjbenhamjjbenham00000000000000(d-DirectivePut-chord-prefix "NoteHead" "\\once \\override NoteHead #'style = #'neomensural ") (d-DirectivePut-chord-display "NoteHead" "nm") (d-DirectivePut-chord-override "NoteHead" DENEMO_OVERRIDE_AFFIX) (d-SetSaved #f)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/PaxHeaders.19168/ChooseNotehead.xml0000644000000000000000000000013213135434036030166 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.893315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/ChooseNotehead.xml0000644000175000017500000000064513135434036032044 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChooseNotehead ChangeNotehead <_label>Choose Notehead <_tooltip>(Print) Gives a choice between all the notehead types available. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/PaxHeaders.19168/ArtificialHarmonic0000644000000000000000000000013213135434036030227 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.893315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/ArtificialHarmonic.scm0000644000175000017500000000142413135434036032662 0ustar00jjbenhamjjbenham00000000000000;;;;;;ArtificialHarmonic (let ((tag "ArtificialHarmonic") (params ArtificialHarmonic::params)) (if (or (equal? params "edit") (d-Directive-note? tag)) (let ((choice (RadioBoxMenu (cons (_ "Help") 'help) (cons (_ "Delete") 'delete)))) (case choice ((help) (d-InfoDialog (_ "This note will typeset with a diamond notehead, to indicate a harmonic\nYou can sharpen or flatten this note using the standard commands."))) ((delete) (d-RemoveNoteFromChord)))) (begin (d-AddNoteToChord) (d-DirectivePut-note-postfix tag "\\harmonic ") (d-DirectivePut-note-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-note-gx tag -10) (d-DirectivePut-note-graphic tag "\n\nemmentaler\n36"))))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/PaxHeaders.19168/ArtificialHarmonic0000644000000000000000000000013213135434036030227 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.893315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/ArtificialHarmonic.xml0000644000175000017500000000100713135434036032675 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ArtificialHarmonic ChangeNotehead <_label>Artificial Harmonic <_tooltip>Places a diamond shape notehead at the cursor. Invoke this command with the cursor above the note to be fingered/fretted to notate an artificial harmonic. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/PaxHeaders.19168/ChooseNotehead.scm0000644000000000000000000000013213135434036030150 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.893315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadControl/ChooseNotehead.scm0000644000175000017500000000246213135434036032025 0ustar00jjbenhamjjbenham00000000000000;;;ChooseNotehead (let ((tag "ChooseNotehead") (params ChooseNotehead::params) (choice (RadioBoxMenu (cons (_ "Baroque") "baroque") (cons (_ "Neo-mensural") "neomensural") (cons (_ "Mensural") "mensural") (cons (_ "Petrucci") "petrucci") (cons (_ "Harmonic") "harmonic") (cons (_ "Harmonic Black") "harmonic-black") (cons (_ "Harmonic Mixed") "harmonic-mixed") (cons (_ "Diamond") "diamond") (cons (_ "Cross") "cross") (cons (_ "XCircle") "xcircle") (cons (_ "Triangle") "triangle") (cons (_ "Slash") "slash") (cons (_ "Default") "default") (cons (_ "AltDefault") "altdefault")))) (if (equal? params "edit") (set! params #f)) (if choice (begin (d-SetSaved #f) (if params (begin ;; eq 'score (d-DirectivePut-score-prefix "ScoreChooseNotehead" (string-append "\\layout {\\override NoteHead #'style = #'" choice " }\n"))) (begin (d-DirectivePut-chord-prefix tag (string-append "\\once \\override NoteHead #'style = #'" choice " ")) (d-DirectivePut-chord-display tag (substring choice 0 3)) (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX)))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/ChordComment.scm0000644000000000000000000000013213135434035024551 xustar0030 mtime=1500919837.993315139 30 atime=1500919926.899981805 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChordComment.scm0000644000175000017500000000122013135434035026415 0ustar00jjbenhamjjbenham00000000000000;;; ChordComment (let () (define current (d-DirectiveGet-chord-display "ChordComment")) (define position (GetPosition)) (let script ((answer (d-GetUserInput (_ "Insert Comment") (_ "Comment this chord") (if current current "") #f))) (if (and answer (not (string=? answer ""))) (begin (if (not (PositionEqual? position (GetPosition))) (begin (if (not (equal? (_ "y") (d-GetUserInput (_ "Cursor has Moved") (_ "Apply Command to new position of cursor?") (_ "y")))) (apply d-GoToPosition position)))) (d-DirectivePut-chord-override "ChordComment" DENEMO_OVERRIDE_EDITOR) (d-DirectivePut-chord-display "ChordComment" answer)) #f)))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/RestEntry0000644000000000000000000000013213135434150023343 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/0000755000175000017500000000000013135434150025271 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/InsertWholeMeasureRest.x0000644000000000000000000000013213135434036030237 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.899981805 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/InsertWholeMeasureRest.xml0000644000175000017500000000075013135434036032443 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS WholeMeasureRest InsertWholeMeasureRest <_label>Insert Whole Measure Rest <_tooltip>Inserts/Appends a rest measure; if the current measure is empty, it simply places the whole measure rest in it. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/MoveRest.scm0000644000000000000000000000013213135434036025673 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.899981805 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/MoveRest.scm0000644000175000017500000000156113135434036027547 0ustar00jjbenhamjjbenham00000000000000;;;MoveRest (let ((tag "MoveRest")) (if (d-Directive-chord? tag) (begin (d-DirectiveDelete-chord tag) (d-StagedDelete))) (if (Rest?) (let* ((duration (string->number (d-GetNoteDuration)))(which (duration::lilypond->denemo duration ))) (d-AddNoteToChord) (if (> duration 4) (begin (d-DirectivePut-standalone-minpixels "BeamingDisplayFix" 10) (d-MoveCursorRight) (d-DirectivePut-standalone-minpixels "BeamingDisplayFix" 10) (d-MoveCursorLeft) (d-MoveCursorLeft) (d-RefreshDisplay))) (d-DirectivePut-chord-postfix tag "\\rest") (d-DirectivePrioritizeTag-chord tag) (d-DirectivePut-chord-graphic tag (vector-ref Rests which)) (d-DirectivePut-chord-override tag (logior DENEMO_OVERRIDE_VOLUME DENEMO_OVERRIDE_GRAPHIC DENEMO_ALT_OVERRIDE)))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/InsertLongaRest.xml0000644000000000000000000000013213135434036027230 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.913315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/InsertLongaRest.xml0000644000175000017500000000053413135434036031103 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertLongaRest <_label>Longa Rest <_tooltip>Insert a rest with longa duration denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/InsertLongaRest.scm0000644000000000000000000000013213135434036027212 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.913315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/InsertLongaRest.scm0000644000175000017500000000013513135434036031062 0ustar00jjbenhamjjbenham00000000000000(d-InsertWholeRest) (if (Appending?) (d-MoveCursorLeft)) (d-ChangeLonga) (d-MoveCursorRight)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/InsertBreveRest.scm0000644000000000000000000000013213135434036027215 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.913315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/InsertBreveRest.scm0000644000175000017500000000013513135434036031065 0ustar00jjbenhamjjbenham00000000000000(d-InsertWholeRest) (if (Appending?) (d-MoveCursorLeft)) (d-ChangeBreve) (d-MoveCursorRight)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/DisplaceRestHorizontally0000644000000000000000000000013213135434036030347 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.913315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/DisplaceRestHorizontally.scm0000644000175000017500000000046213135434036033003 0ustar00jjbenhamjjbenham00000000000000;;DisplaceRestHorizontally (let ( (X (d-GetUserInput (_ "Horizontal shift") (_ "Give horizontal shift required") "1.5"))) (if X (StandAloneDirectiveProto (cons "DisplaceRestHorizontally" (string-append "\\once \\override Voice.Rest #'extra-offset = #'(" X " . 0.0)" )) #t "\n⬌\nDenemo\n24") #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/MultiMeasureRestNumber.x0000644000000000000000000000013213135434036030237 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.913315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/MultiMeasureRestNumber.xml0000644000175000017500000000100213135434036032432 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MultiMeasureRestNumber MultiMeasureRests <_label>Multi-Measure Rest Number (Off/On) <_tooltip>Turns the printing of the multi-measure rest number off or on. Use this when merging rests to avoid the number appearing twice. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/MoveRest.xml0000644000000000000000000000013213135434036025711 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.943315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/MoveRest.xml0000644000175000017500000000066213135434036027566 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertLongaRest MoveRest <_label>Displace Rest Vertically <_tooltip>Turns the rest at the cursor into a polyphonic rest at the cursor height. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/WholeMeasureSpacer.xml0000644000000000000000000000013213135434036027703 xustar0030 mtime=1500919838.016648472 30 atime=1500919926.943315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/WholeMeasureSpacer.xml0000644000175000017500000000102113135434036031546 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS WholeMeasureSpacer InsertBlankOneHundredTwentyEighthNote <_label>Insert Whole Measure Spacer <_tooltip>Inserts a non-printing whole measure after the current measure with a directive to omit the barline. This gives a one measure spacer. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/EnterRest.scm0000644000000000000000000000013213135434036026042 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.943315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/EnterRest.scm0000644000175000017500000000014413135434036027712 0ustar00jjbenhamjjbenham00000000000000(eval-string (string-append "(d-InsertRest" (number->string (abs (d-GetPrevailingDuration))) ")" )) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/WholeMeasureRest.scm0000644000000000000000000000013213135434036027365 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.943315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/WholeMeasureRest.scm0000644000175000017500000000271113135434036031237 0ustar00jjbenhamjjbenham00000000000000;;;WholeMeasureRest (if (or (d-IsAppending) (d-Directive-chord? DenemoWholeMeasureRestTag)) (let ((timesig #f)) (set! timesig (GetPrevailingTimeSig)) (if (not (d-Directive-chord? DenemoWholeMeasureRestTag)) (d-InsertWholeRest) (TimedNotice (_ "Duration of whole measure rest has been re-calculated") 5000)) (d-SetDurationInTicks (* 1536 (GetPrevailingTimeSig #t))) (d-DirectivePut-chord-graphic DenemoWholeMeasureRestTag "\n\x20") (d-DirectivePut-chord-gx DenemoWholeMeasureRestTag 60) (d-DirectivePut-chord-display DenemoWholeMeasureRestTag (string-append (_ "Rest ") timesig)) (d-DirectivePut-chord-tx DenemoWholeMeasureRestTag 55) (d-DirectivePut-chord-ty DenemoWholeMeasureRestTag 15) (d-DirectivePut-chord-minpixels DenemoWholeMeasureRestTag 100) (d-DirectivePut-chord-override DenemoWholeMeasureRestTag (logior DENEMO_OVERRIDE_LILYPOND DENEMO_OVERRIDE_GRAPHIC DENEMO_ALT_OVERRIDE)) (if (and (equal? DenemoWholeMeasureRestParams "edit") (d-GetNonprinting)) (set! DenemoWholeMeasureRestParams 'nonprinting)) ;;preserve non-printing status on right-click (if (eq? DenemoWholeMeasureRestParams 'nonprinting) (d-DirectivePut-chord-postfix DenemoWholeMeasureRestTag (string-append "s1*" timesig)) (d-DirectivePut-chord-postfix DenemoWholeMeasureRestTag (string-append "R1*" timesig))) (d-SetObjectDisplayWidth 100) (d-RefreshDisplay) (d-SetSaved #f))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/WholeMeasureSpacer.scm0000644000000000000000000000013213135434036027665 xustar0030 mtime=1500919838.016648472 30 atime=1500919926.953315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/WholeMeasureSpacer.scm0000644000175000017500000000050513135434036031536 0ustar00jjbenhamjjbenham00000000000000;;;WholeMeasureSpacer (if (not (None?)) (while (not (Appending?)) (d-MoveCursorRight))) (if (not (None?)) (d-InsertMeasureAfter)) (d-InsertWholeMeasureRest) (d-MoveCursorLeft) (d-SetNonprinting) (set! DenemoWholeMeasureRestParams "edit") (d-WholeMeasureRest) (if (not (Appending?)) (d-MoveCursorRight)) (d-NoBarline)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/WholeMeasureRest.xml0000644000000000000000000000013213135434036027403 xustar0030 mtime=1500919838.016648472 30 atime=1500919926.953315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/WholeMeasureRest.xml0000644000175000017500000000061713135434036031260 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EnterRest WholeMeasureRest <_label>Whole Measure Rest <_tooltip>Inserts a whole measure rest at the cursor denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/MultiMeasureRests.scm0000644000000000000000000000013213135434036027564 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.953315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/MultiMeasureRests.scm0000644000175000017500000001546513135434036031450 0ustar00jjbenhamjjbenham00000000000000;;MultiMeasureRests (let ((WMRtag DenemoWholeMeasureRestTag)(MMRtag "MultiMeasureRests")) (define count 1) (define (count-grouped-rests) (let outer-loop () (if (d-MoveToMeasureRight) (let loop () (if (d-Directive-standalone? MMRtag) (begin (set! count (1+ count)) (outer-loop) ) (if (d-NextObjectInMeasure) (loop))))))) (define (re-calculate) (d-PushPosition) (count-grouped-rests) (d-PopPosition) (if (zero? count) (begin (disp "Need to delete and do wholemeasurerest")) (begin (d-SetSaved #f) (d-DirectivePut-standalone-display MMRtag (string-append "Rest " (number->string count))) (d-DirectivePut-standalone-postfix MMRtag (string-append "\\set Score.skipBars = ##t R1*" (GetPrevailingTimeSig) "*" (number->string count)))))) (define (ungroup) (if (d-Directive-standalone? MMRtag) (begin (d-DeleteObject) (d-WholeMeasureRest))) (let outer-loop () (if (d-MoveToMeasureRight) (let loop () (if (d-Directive-standalone? MMRtag) (begin (d-DeleteObject) (d-WholeMeasureRest) (outer-loop)) (if (d-NextObjectInMeasure) (loop))))))) (define (next-chord-good) (let loop () (if (and (or (d-NextObjectInMeasure) (and (d-MeasureRight) (not (EmptyMeasure?)))) (not (d-Directive-standalone?)) (not (Timesignature?)) (not (Music?))) (loop) (Music?)))) (define (groupable-wholemeasure-rest?) (and (d-Directive-chord? WMRtag) (not (d-GetNonprinting)) (not (d-DirectiveGetNthTag-chord 1)))) ;;; procedure starts here (if (Appending?) (d-MoveCursorLeft)) (cond ((groupable-wholemeasure-rest?) (set! count 1) (d-DeleteObject) (d-Directive-standalone MMRtag) (d-DirectivePut-standalone-minpixels MMRtag 100) (d-DirectivePut-standalone-graphic MMRtag "MultiMeasureRests") (d-DirectivePut-standalone-gx MMRtag 50) (d-DirectivePut-standalone-gy MMRtag -2) (d-PushPosition) (let loop () (if (next-chord-good) (begin (if (groupable-wholemeasure-rest?) (begin (set! count (1+ count)) (d-DeleteObject) (d-Directive-standalone MMRtag) (d-SetDurationInTicks (* 1536 (GetPrevailingTimeSig #t))) (d-DirectivePut-standalone-graphic MMRtag "BracketedWholeMeasureRest") (d-DirectivePut-standalone-gx MMRtag 50) (d-DirectivePut-standalone-gy MMRtag -2) (d-DirectivePut-standalone-postfix MMRtag "%{ grouped rest %}") (d-DirectivePut-standalone-override MMRtag DENEMO_OVERRIDE_LILYPOND) (d-DirectivePut-standalone-display MMRtag (_ "Grouped in mm rest")) (d-DirectivePut-standalone-tx MMRtag 25) (d-DirectivePut-standalone-ty MMRtag -30) (d-DirectivePut-standalone-minpixels MMRtag 100) (loop)))))) (d-PopPosition) (if (d-Directive-standalone? MMRtag) (begin (d-SetDurationInTicks (* 1536 (GetPrevailingTimeSig #t))) (d-DirectivePut-standalone-display MMRtag (string-append "Rest " (number->string count))) (d-DirectivePut-standalone-ty MMRtag -28) (d-DirectivePut-standalone-postfix MMRtag (string-append "\\set Score.skipBars = ##t R1*" (GetPrevailingTimeSig) "*" (number->string count))))) (d-SetSaved #f)) ((d-Directive-standalone? MMRtag) (if (equal? (d-DirectiveGet-standalone-postfix MMRtag) "%{ grouped rest %}") (begin (d-InfoDialog (_ "This whole measure rest is grouped with adjacent ones to form a multi-measure rest.\nThe first of the group should be the multi-measure rest itself. Place the cursor on that object to do editing.") #f)) (begin (if (not (equal? MultiMeasureRests::params "edit")) (re-calculate) (let ((choice (d-PopupMenu (list (cons (_ "Help") 'help) (cons (_ "Recalculate") 'recalculate) (cons (_ "Un-group") 'ungroup))))) (cond ((equal? choice 'help) (d-InfoDialog (_ "This represents a number of whole measure rests.\nThe following measure rests are grouped with this one when typeset on their own. In full score they are typeset separately to match the other parts.\nIf you add further grouped whole measure rests, this Directive will need re-calculating.\nThe check score routine that is run before printing will do this for you.") #f)) ((equal? choice 'recalculate) (re-calculate)) ((equal? choice 'ungroup) (ungroup)))))))) (else (let ((number (d-GetUserInput (_ "Creating Mulit-Measure Rests") (_ "Give number of whole measure rests to insert") "2"))) (if number (let ( (meas #f) (merge (d-GetDurationInTicks)) (oldvol (d-MasterVolume))) (if merge (set! merge (zero? merge))) ;; we will create mm rests in following bars and then merge the initial empty duration one (set! number (string->number number)) (if (not (EmptyMeasure?)) (d-AddMeasure)) (set! meas (d-GetMeasure)) (d-MasterVolume 0) (while (positive? number) (if (not (EmptyMeasure?)) (d-InsertMeasure)) (d-InsertWholeMeasureRest) (set! number (1- number))) (d-MasterVolume oldvol) (d-GoToPosition #f #f meas 1) (d-MultiMeasureRests) (if (and merge (d-MoveToMeasureLeft)) (d-MergeWithNextMeasure))) (d-WarningDialog (_ "Cancelled"))))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/EnterRest.xml0000644000000000000000000000013213135434036026060 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.963315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/EnterRest.xml0000644000175000017500000000053713135434036027736 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EnterRest <_label>Insert Rest <_tooltip>Inserts a rest in the prevailing duration denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/InsertBreveRest.xml0000644000000000000000000000013213135434036027233 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.963315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/InsertBreveRest.xml0000644000175000017500000000053413135434036031106 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertBreveRest <_label>Breve Rest <_tooltip>Insert a rest with breve duration denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/InsertWholeMeasureRest.s0000644000000000000000000000013213135434036030232 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.963315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/InsertWholeMeasureRest.scm0000644000175000017500000000147013135434036032425 0ustar00jjbenhamjjbenham00000000000000;;;;InsertWholeMeasureRest (let ((duration (d-GetPrevailingDuration))) (if (or (None?) (zero? (d-GetDurationInTicks))) (begin (DenemoWholeMeasureRestCommand) (d-MoveCursorRight) (d-GetPrevailingDuration duration)) (begin (if (d-MoveToMeasureRight) (if (or (None?) (zero? (d-GetDurationInTicks))) (DenemoWholeMeasureRestCommand) (begin (d-MoveToMeasureLeft) (let loop () (if (d-Directive-chord? DenemoWholeMeasureRestTag) (DenemoWholeMeasureRestCommand) (if (d-NextObjectInMeasure) (loop)))))) (begin (d-AppendMeasureAllStaffs) (d-MoveCursorRight) (DenemoWholeMeasureRestCommand) (d-GetPrevailingDuration duration) (d-MoveCursorRight)))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/DisplaceRestHorizontally0000644000000000000000000000013213135434036030347 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.963315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/DisplaceRestHorizontally.xml0000644000175000017500000000071413135434036033021 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MoveRest DisplaceRestHorizontally <_label>Displace Rest Horizontally <_tooltip>Asks for a horizontal shift and moves the rest at the cursor by that much when printing. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/MultiMeasureRests.xml0000644000000000000000000000013213135434036027602 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.973315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/MultiMeasureRests.xml0000644000175000017500000000123313135434036031452 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertWholeMeasureRest MultiMeasureRests <_label>Multi-Measure Rests <_tooltip>Creates a multi-measure rest from the whole measure rests after the cursor, or inserts the number of rests you specify after the cursor, making them a multi-measure rest. Multi-measure rests will be typeset as individual whole measure rests in any other part being typeset has music during them. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/PaxHeaders.19168/MultiMeasureRestNumber.s0000644000000000000000000000013213135434036030232 xustar0030 mtime=1500919838.013315139 30 atime=1500919926.973315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/RestEntry/MultiMeasureRestNumber.scm0000644000175000017500000000076713135434036032435 0ustar00jjbenhamjjbenham00000000000000;;;MultiMeasureRestNumber (let ((tag "MultiMeasureRestNumber")) (if (d-MoveCursorLeft) (if (not (d-Directive-standalone? tag)) (d-MoveCursorRight))) (if (d-Directive-standalone? tag) (d-EditSimilar) (begin (StandAloneDirectiveProto (cons tag "\\once \\override MultiMeasureRestNumber #'transparent = ##t ") #f "\nNx\nDenemo\n48") (d-DirectivePut-standalone-gy tag -44) (d-DirectivePut-standalone-grob tag tag) (d-RefreshDisplay) (d-SetSaved #f) (d-MoveCursorRight)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/ChangeDuration0000644000000000000000000000013213135434150024277 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/0000755000175000017500000000000013135434150026225 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo3.xml0000644000000000000000000000013213135434035026653 xustar0030 mtime=1500919837.993315139 30 atime=1500919926.973315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo3.xml0000644000175000017500000000063413135434035030527 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeTo3 <_label>Change Duration To ð…  <_tooltip>Changes the note or rest at the cursor to ð…  duration. Works also in appending position. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo2.scm0000644000000000000000000000013213135434035026634 xustar0030 mtime=1500919837.993315139 30 atime=1500919926.973315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo2.scm0000644000175000017500000000032213135434035030502 0ustar00jjbenhamjjbenham00000000000000;;;ChangeTo2 (let ((shift #f)) (if (Appending?) (begin (set! shift #t) (d-MoveCursorLeft))) (if (Music?) (d-Change2)) (if shift (d-MoveCursorRight))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo5.scm0000644000000000000000000000013213135434035026637 xustar0030 mtime=1500919837.993315139 30 atime=1500919926.996648473 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo5.scm0000644000175000017500000000032213135434035030505 0ustar00jjbenhamjjbenham00000000000000;;;ChangeTo5 (let ((shift #f)) (if (Appending?) (begin (set! shift #t) (d-MoveCursorLeft))) (if (Music?) (d-Change5)) (if shift (d-MoveCursorRight))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo0.xml0000644000000000000000000000013213135434035026650 xustar0030 mtime=1500919837.993315139 30 atime=1500919926.996648473 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo0.xml0000644000175000017500000000067313135434035030527 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeTo0 Change0 <_label>Change Duration To ð… <_tooltip>Changes the note or rest at the cursor to ð… duration. Works also in appending position. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/JoinChordsToMergedC0000644000000000000000000000013213135434035030075 xustar0030 mtime=1500919837.993315139 30 atime=1500919926.996648473 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/JoinChordsToMergedChord.scm0000644000175000017500000000051213135434035033402 0ustar00jjbenhamjjbenham00000000000000(if (d-MarkStatus) (let () (define basedurationlist (duration::SplitTicksToBaseDurations (duration::GetSelectionDurationInTicks))) (define newchord (concatenate (MapToSelection ANS::GetChordNotes Note?))) (d-DeleteSelectionLeaveEmpty) (duration::InsertBaseDurationList basedurationlist (delete-duplicates newchord)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/SplitChord.scm0000644000000000000000000000013213135434035027135 xustar0030 mtime=1500919837.993315139 30 atime=1500919926.996648473 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/SplitChord.scm0000644000175000017500000000106713135434035031012 0ustar00jjbenhamjjbenham00000000000000 (if SplitChord::params (SplitChord SplitChord::params) (Doublestroke SplitChord (cons "Split into 1 :)" (lambda () (SplitChord 1))) ;1 (cons "Split into 2" (lambda () (SplitChord 2))) ;2 (cons "Split into 3" (lambda () (SplitChord 3))) ;3 (cons "Split into 4" (lambda () (SplitChord 4))) ;4 (cons "Split into 5" (lambda () (SplitChord 5))) ;5 (cons "Split into 6" (lambda () (SplitChord 6))) ;6 (cons "Split into 7" (lambda () (SplitChord 7))) ;7 (cons "Split into 8" (lambda () (SplitChord 8))) ;8 (cons "Split into 9" (lambda () (SplitChord 9))) ;9 )) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/Dottify.xml0000644000000000000000000000013213135434035026522 xustar0030 mtime=1500919837.993315139 30 atime=1500919926.996648473 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/Dottify.xml0000644000175000017500000000065213135434035030376 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RemoveDot Dottify <_label>Dottify <_tooltip>Turns the note on or before the cursor into a dotted rhythm with the same total duration. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/Dottify2.xml0000644000000000000000000000013213135434035026604 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.006648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/Dottify2.xml0000644000175000017500000000072313135434035030457 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Dottify2 Dottify <_label>Dottify2 <_tooltip>As Dottify command but dotted rhythm created is dotted note plus two notes of a quarter the duration. Total duration is unchanged. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/split.scm0000644000000000000000000000013213135434035026215 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.006648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/split.scm0000644000175000017500000000615213135434035030072 0ustar00jjbenhamjjbenham00000000000000; Splits the current chord/note to several others of the same pitch. Their sum equals the original duration. Will create tuplets if necessary ; So far only (assuming quarter) 8th, 8th-triplet, 16th, 16-fifthlet, 16th-sextlet, 16th-Seventhlet, 32th and 32th-ninthlet ; TODO: What about if someone tries to divide too small? The score will get broken. (define* (SplitChord #:optional (howmany #f)) (define (split-divide) (duration::ChangeNoteDurationInTicks (/ (duration::GetBaseDurationInTicks) 2) (d-GetDots))) (if (Note?) ; DuplicateChord only works ON notes, not in the appending position. (begin (if (not howmany) (begin (set! howmany (d-GetUserInput "Split in how many notes?" "Enter the number of notes to split into:" "2" ) ) (if howmany (set! howmany (string->number howmany)) #f))) ; If the user pressed "Abort" or Esc howmany will be #f which must be caught here (case howmany ((1) #t) ; Already original duration in one note. ((2) (begin ;8th (split-divide) (d-DuplicateChord) (d-MoveCursorRight) #t)) ((3) (if (= 1 (d-GetDots)) (begin (d-RemoveDot) (d-Diminish) (d-DuplicateChord) (d-DuplicateChord) (d-MoveCursorRight) #t) (begin ;8th-triplet (d-StartTriplet) (split-divide) (d-DuplicateChord) (d-DuplicateChord) (d-MoveCursorRight) (d-EndTuplet) #t))) ((4) (begin ;16th (split-divide) (split-divide) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-MoveCursorRight) #t)) ((5) (begin ;16-fifthlet (split-divide) (split-divide) (d-StartTriplet) (d-MoveCursorLeft) (d-SetTuplet "4/5") (d-MoveCursorRight) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-MoveCursorRight) (d-EndTuplet) #t)) ((6) (begin ;16th-sextlet, (split-divide) (split-divide) (d-StartTriplet) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-MoveCursorRight) (d-EndTuplet) #t)) ((7) (begin ;16-Seventhlet (split-divide) (split-divide) (d-StartTriplet) (d-MoveCursorLeft) (d-SetTuplet "4/7") (d-MoveCursorRight) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-MoveCursorRight) (d-EndTuplet) #t)) ((8) (begin ;32th (split-divide) (split-divide) (split-divide) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-MoveCursorRight) #t)) ((9) (begin ;32th-ninthlet (split-divide) (split-divide) (split-divide) (d-StartTriplet) (d-MoveCursorLeft) (d-SetTuplet "8/9") (d-MoveCursorRight) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-DuplicateChord) (d-MoveCursorRight) (d-EndTuplet) #t)) (else #f); out of range )) #f ; it was no note )) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo6.scm0000644000000000000000000000013213135434035026640 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.006648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo6.scm0000644000175000017500000000032213135434035030506 0ustar00jjbenhamjjbenham00000000000000;;;ChangeTo6 (let ((shift #f)) (if (Appending?) (begin (set! shift #t) (d-MoveCursorLeft))) (if (Music?) (d-Change6)) (if shift (d-MoveCursorRight))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/Dottify.scm0000644000000000000000000000013213135434035026504 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.016648473 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/Dottify.scm0000644000175000017500000000033013135434035030351 0ustar00jjbenhamjjbenham00000000000000;;;Dottify (if (Appending?) (d-MoveCursorLeft)) (if (Note?) (begin (d-Diminish) (d-SetMark) (d-Copy) (d-AddDot) (d-MoveCursorRight) (d-Paste) (d-MoveCursorLeft) (d-Diminish) (d-MoveCursorRight))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeBreve.scm0000644000000000000000000000013213135434035027233 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.016648473 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeBreve.scm0000644000175000017500000000110213135434035031076 0ustar00jjbenhamjjbenham00000000000000;;;ChangeBreve (d-SetBreve) (if (Music?) (begin (if (Rest?) ; Test if its a note with a name or not, then its a rest (d-DirectivePut-chord-graphic "Duration" "rests_M1neomensural") ;rest (begin ;note (d-Change0) ; Change to a full note first to get rid of note-stems (d-DirectivePut-chord-graphic "Duration" "  emmentaler") ) ) (d-DirectivePut-chord-override "Duration" (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_ALT_OVERRIDE)) (d-DirectivePut-chord-prefix "Duration" "\\breve ") (d-SetDurationInTicks (* 2 1536)) (d-RefreshDisplay) ) #f ; not music )denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/SplitChord.xml0000644000000000000000000000013213135434035027153 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.016648473 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/SplitChord.xml0000644000175000017500000000070513135434035031026 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SplitChord <_label>Split Note/Chord <_tooltip>Split a chord into a specific amount of smaller notes while preserving original duration, generating tuplets if necessary. Not for rests. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo7.scm0000644000000000000000000000013213135434035026641 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.016648473 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo7.scm0000644000175000017500000000032213135434035030507 0ustar00jjbenhamjjbenham00000000000000;;;ChangeTo7 (let ((shift #f)) (if (Appending?) (begin (set! shift #t) (d-MoveCursorLeft))) (if (Music?) (d-Change7)) (if shift (d-MoveCursorRight))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo4.xml0000644000000000000000000000013213135434035026654 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.016648473 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo4.xml0000644000175000017500000000063413135434035030530 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeTo4 <_label>Change Duration To ð…¡ <_tooltip>Changes the note or rest at the cursor to ð…¡ duration. Works also in appending position. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/DottedRhythmSlurred0000644000000000000000000000013213135434035030261 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.026648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/DottedRhythmSlurred.scm0000644000175000017500000000073613135434035032721 0ustar00jjbenhamjjbenham00000000000000;;DottedRhythmSlurred (if (Appending?) (let ((duration (d-GetNoteBaseDuration)) (nonprinting (MidiInput?))) (if duration (begin (d-AddDot) (d-ToggleBeginSlur) (eval-string (string-append "(d-" (number->string (+ 1 duration)) ")")) (d-MoveCursorLeft) (d-ToggleEndSlur) (d-PlayMidiNote 53 80 9 10) (if (and nonprinting (not (d-GetMarkedMidiNote))) (d-SetNonprinting)) (d-MoveCursorRight))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo1.scm0000644000000000000000000000013213135434035026633 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.026648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo1.scm0000644000175000017500000000032213135434035030501 0ustar00jjbenhamjjbenham00000000000000;;;ChangeTo1 (let ((shift #f)) (if (Appending?) (begin (set! shift #t) (d-MoveCursorLeft))) (if (Music?) (d-Change1)) (if shift (d-MoveCursorRight))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeBreve.xml0000644000000000000000000000013213135434035027251 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.026648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeBreve.xml0000644000175000017500000000052713135434035031126 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeBreve <_label>Breve <_tooltip>Change current note duration to Breve denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo1.xml0000644000000000000000000000013213135434035026651 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.026648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo1.xml0000644000175000017500000000063413135434035030525 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeTo1 <_label>Change Duration To ð…ž <_tooltip>Changes the note or rest at the cursor to ð…ž duration. Works also in appending position. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo6.xml0000644000000000000000000000013213135434035026656 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.026648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo6.xml0000644000175000017500000000063413135434035030532 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeTo6 <_label>Change Duration To ð…£ <_tooltip>Changes the note or rest at the cursor to ð…£ duration. Works also in appending position. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/Dottify2.scm0000644000000000000000000000013213135434035026566 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.046648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/Dottify2.scm0000644000175000017500000000047513135434035030445 0ustar00jjbenhamjjbenham00000000000000;;;Dottify2 (if (Appending?) (d-MoveCursorLeft)) (if (Note?) (begin (d-Diminish) (d-SetMark) (d-Copy) (d-AddDot) (d-MoveCursorRight) (d-Paste) (d-MoveCursorLeft) (d-Diminish) (d-Diminish) (d-MoveCursorRight) (d-Paste) (d-MoveCursorLeft) (d-Diminish) (d-Diminish) (d-MoveCursorRight))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo4.scm0000644000000000000000000000013213135434035026636 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.046648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo4.scm0000644000175000017500000000032213135434035030504 0ustar00jjbenhamjjbenham00000000000000;;;ChangeTo4 (let ((shift #f)) (if (Appending?) (begin (set! shift #t) (d-MoveCursorLeft))) (if (Music?) (d-Change4)) (if shift (d-MoveCursorRight))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/DottedRhythm.scm0000644000000000000000000000013213135434035027501 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.046648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/DottedRhythm.scm0000644000175000017500000000057513135434035031361 0ustar00jjbenhamjjbenham00000000000000;;DottedRhythm (if (Appending?) (let ((duration (d-GetNoteBaseDuration)) (nonprinting (MidiInput?))) (if duration (begin (d-AddDot) (eval-string (string-append "(d-" (number->string (+ 1 duration)) ")")) (d-MoveCursorLeft) (if (and nonprinting (not (d-GetMarkedMidiNote))) (d-SetNonprinting)) (d-MoveCursorRight))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/Augment.scm0000644000000000000000000000013213135434035026462 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.046648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/Augment.scm0000644000175000017500000000026013135434035030331 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher (lambda () (if (duration::GetBaseDurationInTicks) (duration::ChangeNoteDurationInTicks (* (duration::GetBaseDurationInTicks) 2) (d-GetDots))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo3.scm0000644000000000000000000000013213135434035026635 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.046648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo3.scm0000644000175000017500000000032213135434035030503 0ustar00jjbenhamjjbenham00000000000000;;;ChangeTo3 (let ((shift #f)) (if (Appending?) (begin (set! shift #t) (d-MoveCursorLeft))) (if (Music?) (d-Change3)) (if shift (d-MoveCursorRight))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo2.xml0000644000000000000000000000013213135434035026652 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.059981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo2.xml0000644000175000017500000000063413135434035030526 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeTo2 <_label>Change Duration To ð…Ÿ <_tooltip>Changes the note or rest at the cursor to ð…Ÿ duration. Works also in appending position. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/DottedRhythmSlurred0000644000000000000000000000013213135434035030261 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.059981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/DottedRhythmSlurred.xml0000644000175000017500000000104013135434035032724 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DottedRhythm DottedRhythmSlurred <_label>Create Slurred, Dotted Rhythm <_tooltip>In appending position, dots the note or rest at the cursor and appends a note of half the duration so as to create a dotted rhythm. Slurs the two notes together. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/JoinChordsToMergedC0000644000000000000000000000013213135434035030075 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.059981805 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/JoinChordsToMergedChord.xml0000644000175000017500000000075413135434035033430 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS JoinChords JoinChordsToMergedChord <_label>Join music objects to new chord <_tooltip>Joins all notes, chords and rests in the selection and inserts all selected notes as chord. May create tied notes. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/Augment.xml0000644000000000000000000000013213135434035026500 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.059981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/Augment.xml0000644000175000017500000000064013135434035030351 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Augment <_label>Augment <_tooltip>Doubles the duration of the note/chord/rest at the cursor or the selection. E.g. Quarter Note becomes Half Note. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo5.xml0000644000000000000000000000013213135434035026655 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.059981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo5.xml0000644000175000017500000000063413135434035030531 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeTo5 <_label>Change Duration To ð…¢ <_tooltip>Changes the note or rest at the cursor to ð…¢ duration. Works also in appending position. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/DotDoubleDotNoDot.s0000644000000000000000000000013213135434035030036 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.066648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/DotDoubleDotNoDot.scm0000644000175000017500000000041013135434035032222 0ustar00jjbenhamjjbenham00000000000000;DotDoubleDotNoDot (let ((dots (d-GetDots))) (if dots (cond ((or (= dots 0) (= dots 1)) (d-AddDot)) ((= dots 1) (d-RemoveDot)) (else (d-RemoveDot) (d-RemoveDot))) (d-InfoDialog (_ "Cursor must be on a chord/note/rest")))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/Diminish.scm0000644000000000000000000000013213135434035026626 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.066648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/Diminish.scm0000644000175000017500000000025713135434035030503 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher (lambda () (if (duration::GetBaseDurationInTicks) (duration::ChangeNoteDurationInTicks (/ (duration::GetBaseDurationInTicks) 2) (d-GetDots))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo0.scm0000644000000000000000000000013213135434035026632 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.066648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo0.scm0000644000175000017500000000031313135434035030500 0ustar00jjbenhamjjbenham00000000000000;;;ChangeTo0 (let ((shift #f)) (if (Appending?) (begin (set! shift #t) (d-MoveCursorLeft))) (if (Music?) (d-Change0)) (if shift (d-MoveCursorRight)))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeLonga.scm0000644000000000000000000000013213135434035027230 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.066648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeLonga.scm0000644000175000017500000000114213135434035031077 0ustar00jjbenhamjjbenham00000000000000;;;ChangeLonga (d-SetLonga) (if (Music?) (begin ; its a chord, means note or rest! (if (Rest?) ; Test if its a note with a name or not, then its a rest (d-DirectivePut-chord-graphic "Duration" " î„… emmentaler") ;rest (begin ;note (d-Change0) ; Change to a full note first to get rid of note-stems (d-DirectivePut-chord-graphic "Duration" "  emmentaler") ) ) (d-DirectivePut-chord-prefix "Duration" "\\longa ") (d-DirectivePut-chord-override "Duration" (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_ALT_OVERRIDE)) (d-SetDurationInTicks (* 4 1536)) (d-RefreshDisplay) ) #f ; not a chord )denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeLonga.xml0000644000000000000000000000013213135434035027246 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.076648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeLonga.xml0000644000175000017500000000052713135434035031123 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeLonga <_label>Longa <_tooltip>Change current note duration to Longa denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/Diminish.xml0000644000000000000000000000013213135434035026644 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.076648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/Diminish.xml0000644000175000017500000000064413135434035030521 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Diminish <_label>Diminish <_tooltip>Halves the duration of the note/chord/rest at the cursor or the selection. E.g. Quarter Note becomes Eighth Note. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/JoinChords.xml0000644000000000000000000000013213135434035027142 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.076648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/JoinChords.xml0000644000175000017500000000076413135434035031022 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SplitChord JoinChords <_label>Join music objects <_tooltip>Joins all notes, chords and rests in the selection and inserts a new, longer note instead. May create tied notes. Uses the cursor position as pitch. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/init.scm0000644000000000000000000000013213135434035026025 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.076648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/init.scm0000644000175000017500000000002413135434035027672 0ustar00jjbenhamjjbenham00000000000000(load "split.scm") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/DotDoubleDotNoDot.x0000644000000000000000000000013213135434035030043 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.076648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/DotDoubleDotNoDot.xml0000644000175000017500000000064713135434035032254 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Change7 DotDoubleDotNoDot <_label>Dot <_tooltip>Adds a dot to the note/rest/chord at the cursor, or removes them if double dotted. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/DottedRhythm.xml0000644000000000000000000000013213135434035027517 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.103315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/DottedRhythm.xml0000644000175000017500000000074613135434035031377 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RemoveDot DottedRhythm <_label>Create Dotted Rhythm <_tooltip>In appending position, dots the note or rest at the cursor and appends a note of half the duration so as to create a dotted rhythm. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/JoinChords.scm0000644000000000000000000000013213135434035027124 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.103315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/JoinChords.scm0000644000175000017500000000045113135434035030775 0ustar00jjbenhamjjbenham00000000000000(if (d-MarkStatus) (let () (define basedurationlist (duration::SplitTicksToBaseDurations (duration::GetSelectionDurationInTicks))) (d-DeleteSelectionLeaveEmpty) (duration::InsertBaseDurationList basedurationlist (ANS::GetDiatonic (ANS::Ly2Ans (string->symbol (GetCursorNoteAsLilypond)))))))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/PaxHeaders.19168/ChangeTo7.xml0000644000000000000000000000013213135434035026657 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.103315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChangeDuration/ChangeTo7.xml0000644000175000017500000000063413135434035030533 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeTo7 <_label>Change Duration To ð…¤ <_tooltip>Changes the note or rest at the cursor to ð…¤ duration. Works also in appending position. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/TremoloDownward.scm0000644000000000000000000000013213135434036025317 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.103315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TremoloDownward.scm0000644000175000017500000000053713135434036027175 0ustar00jjbenhamjjbenham00000000000000;;;TremoloDownward (let ((tag "TremoloDirection")) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-prefix tag "\\once \\override StemTremolo.slope =#-0.4 ") (d-DirectivePut-chord-display tag "\\") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-SetSaved #f))) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/ChordComment.xml0000644000000000000000000000013213135434035024567 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.103315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ChordComment.xml0000644000175000017500000000062013135434035026436 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ParenthesizeNote ChordComment <_label>Comment <_tooltip>Attach a textual comment to the chord at the cursor denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/InsertNote0000644000000000000000000000013213135434150023476 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/0000755000175000017500000000000013135434150025424 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PaxHeaders.19168/FillMeasure.xml0000644000000000000000000000013213135434035026507 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.113315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/FillMeasure.xml0000644000175000017500000000103013135434035030352 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FillMeasure DuplicateChord <_label>Fill Measure <_tooltip>Duplicates the note/chord/rest at or before the cursor until the measure is full or over-full. In a full measure duplicates the measure, in an empty measure insert the current duration. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PaxHeaders.19168/DuplicateChord.xml0000644000000000000000000000013213135434035027171 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.113315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/DuplicateChord.xml0000644000175000017500000000060613135434035031044 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DuplicateChord <_label>Duplicate Note/Chord <_tooltip>Duplicates the current note or chord at the cursor. Not for rests. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PaxHeaders.19168/PercentRepeat.scm0000644000000000000000000000013213135434035027022 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.113315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PercentRepeat.scm0000644000175000017500000000670113135434035030677 0ustar00jjbenhamjjbenham00000000000000;;;PercentRepeat ;;;repeats the selection the given number of times (if PercentRepeat::params (d-InfoDialog (_ "This Denemo Directive is part of a set of four creating a \"Percent Repeat\". Be sure to delete them all if you delete one of them.")) (if (d-IsInSelection) (let ((tag "PercentRepeat") (start-measurenum #f)(num_repeats (d-GetUserInput (_ "Percent Repeat") (_ "Give number of further repeats 1,2,...") "1"))) (d-GoToMark) (set! start-measurenum (d-GetMeasure)) (MoveToEndOfSelection) (set! start-measurenum (not (= start-measurenum (d-GetMeasure)))) (if num_repeats (let ((numbering (if (and (FullDurationMeasure?) start-measurenum) (d-GetUserInput (_ "Percent Repeat") (_ "Give frequency of numbering 0, 1,...") "1") #f)) (freq "\\set countPercentRepeats = ##f ")) (if numbering (begin (set! numbering (string->number numbering)) (if (and numbering (positive? numbering)) (set! freq (string-append "\\set countPercentRepeats = ##t \\set repeatCountVisibility = #(every-nth-repeat-count-visible " (number->string numbering) ") "))))) (set! num_repeats (string->number num_repeats)) (d-Copy) (d-PushPosition) (d-GoToMark) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 40) (d-DirectivePut-standalone-postfix tag (string-append freq "\\repeat percent " (number->string (1+ num_repeats)) "{ ")) (d-DirectivePut-standalone-display tag (string-append "% " (number->string (1+ num_repeats)))) (d-DirectivePut-standalone-graphic tag (string-append "\nR{\nDenemo\n36")) (d-DirectivePut-standalone-gy tag 10) (d-PopPosition) (if (not start-measurenum) (d-MoveCursorRight)) ;;we have inserted one object so when in the same measure we move right (d-MoveCursorRight) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 60) (d-DirectivePut-standalone-postfix tag "} %{ ") (d-DirectivePut-standalone-graphic tag "\n}%{\nDenemo\n36") (d-DirectivePut-standalone-gy tag 10) (d-MoveCursorRight) (let loop ((count num_repeats)) (if (FullDurationMeasure?) (begin (EnsureEmptyNextMeasure 'all) (d-MoveToMeasureRight))) (d-Paste) (if (> count 1) (loop (1- count)))) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 40) (d-DirectivePut-standalone-postfix tag " %} ") (d-DirectivePut-standalone-graphic tag "\n%}\nDenemo\n36") (d-DirectivePut-standalone-gy tag 10) (d-MoveCursorRight) (d-RefreshDisplay) (d-SetSaved #f)))) (d-WarningDialog (_ "Cursor not in selection")))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PaxHeaders.19168/InsertDuration0000644000000000000000000000013213135434150026450 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/0000755000175000017500000000000013135434150030376 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/PaxHeaders.19168/InsertBr0000644000000000000000000000013213135434035030202 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.123315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/InsertBreve.scm0000644000175000017500000000010213135434035033325 0ustar00jjbenhamjjbenham00000000000000(d-Insert0) (d-MoveCursorLeft) (d-ChangeBreve) (d-MoveCursorRight)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/PaxHeaders.19168/InsertLo0000644000000000000000000000013213135434035030211 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.123315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/InsertLonga.xml0000644000175000017500000000050013135434035033342 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertLonga <_label>Longa <_tooltip>Insert a Longa denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/PaxHeaders.19168/InsertOn0000644000000000000000000000013213135434035030213 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.123315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/InsertOneNote.xml0000644000175000017500000000054413135434035033661 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertOneNote <_label>Insert Note <_tooltip>Inserts a note in the prevailing duration. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/PaxHeaders.19168/InsertOn0000644000000000000000000000013213135434035030213 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.123315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/InsertOneNote.scm0000644000175000017500000000034013135434035033635 0ustar00jjbenhamjjbenham00000000000000;;;InsertOneNote (if (and (Appending?) (d-GetNonprinting)) (eval-string (string-append "(d-" (string-upcase (d-GetCursorNote)) ")")) (eval-string (string-append "(d-Insert" (number->string (d-GetPrevailingDuration)) ")")))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/PaxHeaders.19168/InsertBr0000644000000000000000000000013213135434035030202 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.136648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/InsertBreve.xml0000644000175000017500000000047613135434035033361 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertBreve <_label>Breve <_tooltip>Insert Breve denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/PaxHeaders.19168/InsertLo0000644000000000000000000000013213135434035030211 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.136648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/InsertDuration/InsertLonga.scm0000644000175000017500000000010213135434035033322 0ustar00jjbenhamjjbenham00000000000000(d-Insert0) (d-MoveCursorLeft) (d-ChangeLonga) (d-MoveCursorRight)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PaxHeaders.19168/PercentRepeat.xml0000644000000000000000000000013213135434035027040 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.136648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PercentRepeat.xml0000644000175000017500000000066113135434035030714 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PercentRepeat FillUpMeasure <_label>Insert Percent Style Repeat <_tooltip>Creates a repeat from the selection, typeset in \"percent\" style. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PaxHeaders.19168/FillUpMeasure.scm0000644000000000000000000000013213135434035026776 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.136648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/FillUpMeasure.scm0000644000175000017500000000370713135434035030656 0ustar00jjbenhamjjbenham00000000000000;;;FillUpMeasure (let ((appending (Appending?)) (position (GetPosition))) (define (play-rhythm) (let ((channel (d-StaffProperties "query=midi_channel")) (ticks #f) (time 0) (prognum (d-StaffProperties "query=midi_prognum"))) (define command (number->string (logior (string->number channel) #xC0))) (d-OutputMidiBytes (string-append command " " prognum)) (apply d-GoToPosition position) ;(d-MoveCursorRight) (let loop () (set! ticks (d-GetDurationInTicks)) (d-OneShotTimer time (string-append "(d-PlayMidiNote 60 127 9 " (number->string ticks) ")")) (set! time (+ time ticks)) (if (d-NextChordInMeasure) (loop))))) (define (play) (let ((channel (d-StaffProperties "query=midi_channel")) (ticks #f) (time 0)(key #f) (prognum (d-StaffProperties "query=midi_prognum"))) (define command (number->string (logior (string->number channel) #xC0))) (d-OutputMidiBytes (string-append command " " prognum)) (apply d-GoToPosition position) ;(d-MoveCursorRight) (let loop () (set! ticks (d-GetDurationInTicks)) (set! key (d-GetNoteAsMidi)) (if (and ticks key) (begin (d-OneShotTimer time (string-append "(d-PlayMidiNote " (number->string key) " 127 " channel " " (number->string ticks) ")")) (set! time (+ time ticks)))) (if (d-NextChordInMeasure) (loop))))) (if (FullDurationMeasure?) (d-AddDuplicateMeasure 'play) (if (ZeroDurationMeasure?) (d-PutNote #f) (begin (while (d-PrevChordInMeasure)) (d-SetMark) (while (d-NextChordInMeasure)) (d-SetPoint) (d-Copy) (d-MoveCursorRight) (while (UnderfullMeasure?) (d-Paste)) (if (d-GetNonprinting) (play-rhythm) (play)) (d-MoveCursorRight))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PaxHeaders.19168/FillMeasure.scm0000644000000000000000000000013213135434035026471 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.156648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/FillMeasure.scm0000644000175000017500000000104513135434035030342 0ustar00jjbenhamjjbenham00000000000000;;;FillMeasure (let ((appending (Appending?))) (if (FullDurationMeasure?) (d-AddDuplicateMeasure 'play) (if (ZeroDurationMeasure?) (d-PutNote #f) (begin (if appending (d-MoveCursorLeft)) (if (and (Music?) (> (d-GetDurationInTicks) 0)) (while (not (MeasureFillStatus)) (d-DuplicateRestNoteChord)) (d-PutNote #f)) (if appending (d-MoveCursorRight)))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PaxHeaders.19168/DuplicateRestNoteChord.0000644000000000000000000000013213135434035030134 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.156648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/DuplicateRestNoteChord.scm0000644000175000017500000000042213135434035032506 0ustar00jjbenhamjjbenham00000000000000;;;Duplicate Note, Chord or Rest (let ((appending (Appending?))) (if appending (d-MoveCursorLeft)) (if (Music?) (begin (d-PushClipboard) (d-SetMark) (d-Copy) (d-Paste) (d-PopClipboard) (d-RefreshDisplay))) (if appending (d-MoveCursorRight))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PaxHeaders.19168/FillUpMeasure.xml0000644000000000000000000000013213135434035027014 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.156648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/FillUpMeasure.xml0000644000175000017500000000075713135434035030676 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FillUpMeasure FillMeasure <_label>Duplicate to Fill Measure <_tooltip>Duplicates the notes in the current measure until the measure is full or over-full. If already full, duplicates the current measure. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PaxHeaders.19168/DuplicateChord.scm0000644000000000000000000000013213135434035027153 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.156648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/DuplicateChord.scm0000644000175000017500000000023613135434035031025 0ustar00jjbenhamjjbenham00000000000000 ;;;Duplicate Note or Chord, not for rests (if (Note?) (begin (d-PushClipboard) (d-SetMark) (d-Copy) (d-Paste) (d-PopClipboard))) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/PaxHeaders.19168/DuplicateRestNoteChord.0000644000000000000000000000013213135434035030134 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.156648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/InsertNote/DuplicateRestNoteChord.xml0000644000175000017500000000066413135434035032534 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DuplicateRestNoteChord DuplicateChord <_label>Duplicate Rest, Note, Chord <_tooltip>Duplicates the rest, note or chord at or before the cursor. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/DisplaceHorizontally.xml0000644000000000000000000000013213135434035026350 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.166648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/DisplaceHorizontally.xml0000644000175000017500000000114413135434035030221 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DisplaceHorizontally ParenthesizeNote <_label>Displace Horizontally <_tooltip>Shifts the next note, chord or rest and its markings horizontally by the amount given. Use this to refine the positioning, but be aware that notes in other staffs will not be affected. For polyphony, see NoteColumnShift under the Voices menu denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/Beaming0000644000000000000000000000013213135434150022746 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/0000755000175000017500000000000013135434150024674 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamRightThree.scm0000644000000000000000000000013213135434035026363 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.166648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamRightThree.scm0000644000175000017500000000005013135434035030227 0ustar00jjbenhamjjbenham00000000000000;;; BeamRightThree (BeamCount "Right" 3)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamLeftTwo.xml0000644000000000000000000000013213135434035025720 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.166648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamLeftTwo.xml0000644000175000017500000000055213135434035027573 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BeamLeftTwo <_label>Two Beams Left <_tooltip>Prints with just two beams linking to the left. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamRightTwo.xml0000644000000000000000000000013213135434035026103 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.166648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamRightTwo.xml0000644000175000017500000000055513135434035027761 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BeamRightTwo <_label>Two Beams Right <_tooltip>Prints with just two beams linking to the right. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/StartBeam.scm0000644000000000000000000000013213135434035025413 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.179981806 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/StartBeam.scm0000644000175000017500000000041613135434035027265 0ustar00jjbenhamjjbenham00000000000000;;; StartBeam (let ((tag "Beam")) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-postfix tag "[") (d-DirectivePut-chord-display tag "[") (d-DirectivePut-chord-tx tag 6) (d-RefreshDisplay) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/Beam1234.xml0000644000000000000000000000013213135434035024725 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.179981806 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/Beam1234.xml0000644000175000017500000000053713135434035026603 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Beam1234 <_label>Beam 4 Beats <_tooltip>Beams end on each quarter note (up to 4). denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/Beam1234.scm0000644000000000000000000000013213135434035024707 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.179981806 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/Beam1234.scm0000644000175000017500000000061513135434035026562 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;Beam1234 (if (d-Directive-standalone? "Beam1234") (d-DirectiveDelete-standalone "Beam1234") (StandAloneDirectiveProto (cons "Beam1234" " #(override-auto-beam-setting '(end * * * *) 1 4) #(override-auto-beam-setting '(end * * * *) 2 4) #(override-auto-beam-setting '(end * * * *) 3 4) #(override-auto-beam-setting '(end * * * *) 4 4)"))) ;;(d-MoveCursorRight) ;;(d-RefreshDisplay))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/DeleteBeamingDirective.xml0000644000000000000000000000013213135434035030073 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.179981806 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/DeleteBeamingDirective.xml0000644000175000017500000000066313135434035031751 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EndBeam DeleteBeamingDirective <_label>Delete Beaming Directive <_tooltip>Deletes a ] or [ (end or start beam) directive on the current chord. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamLeftThree.xml0000644000000000000000000000013213135434035026216 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.179981806 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamLeftThree.xml0000644000175000017500000000056013135434035030070 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BeamLeftThree <_label>Three Beams Left <_tooltip>Prints with just three beams linking to the left. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/NoBeam.scm0000644000000000000000000000013213135434035024672 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.189981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/NoBeam.scm0000644000175000017500000000065513135434035026551 0ustar00jjbenhamjjbenham00000000000000;;;NoBeam (if (> (d-GetNoteBaseDuration) 2) (let ((tag "NoBeam")) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-postfix tag "\\noBeam") (d-DirectivePut-chord-display tag "noBeam") (d-DirectivePut-chord-graphic tag "NoBeam") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX))) (d-SetSaved #f) (d-RefreshDisplay)) (d-WarningDialog (_ "No beam possible here"))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamLeftOne.scm0000644000000000000000000000013213135434035025652 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.189981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamLeftOne.scm0000644000175000017500000000004413135434035027521 0ustar00jjbenhamjjbenham00000000000000;;; BeamLeftOne (BeamCount "Left" 1)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/StartBeam.xml0000644000000000000000000000013213135434035025431 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.189981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/StartBeam.xml0000644000175000017500000000057613135434035027312 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StartBeam <_label>Start Beam <_tooltip>Instructs the LilyPond engraver to start a beam here. (Print effect only) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamLeftTwo.scm0000644000000000000000000000013213135434035025702 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.189981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamLeftTwo.scm0000644000175000017500000000004413135434035027551 0ustar00jjbenhamjjbenham00000000000000;;; BeamLeftTwo (BeamCount "Left" 2)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamLeftNone.scm0000644000000000000000000000013213135434035026030 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.189981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamLeftNone.scm0000644000175000017500000000004513135434035027700 0ustar00jjbenhamjjbenham00000000000000;;; BeamLeftNone (BeamCount "Left" 0)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamRightNone.xml0000644000000000000000000000013213135434035026231 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.216648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamRightNone.xml0000644000175000017500000000062313135434035030103 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NoBeam BeamRightNone <_label>No Beam Right <_tooltip>Typeset the note at the cursor with no beam to the right. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/EndBeam.scm0000644000000000000000000000013213135434035025024 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.216648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/EndBeam.scm0000644000175000017500000000041413135434035026674 0ustar00jjbenhamjjbenham00000000000000;;; EndBeam (let ((tag "Beam")) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-postfix tag "]") (d-DirectivePut-chord-display tag "]") (d-DirectivePut-chord-tx tag 6) (d-RefreshDisplay) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamLeftNone.xml0000644000000000000000000000013213135434035026046 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.216648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamLeftNone.xml0000644000175000017500000000062713135434035027724 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BeamRightNone BeamLeftNone <_label>No Beam Left <_tooltip>Typeset the note at the cursor with no beam to the left. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/EndBeam.xml0000644000000000000000000000013213135434035025042 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.216648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/EndBeam.xml0000644000175000017500000000061213135434035026712 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EndBeam <_label>End Beam <_tooltip>Instructs LilyPond engraver to stop previously started manual beaming. Print effect only. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamRightOne.scm0000644000000000000000000000013213135434035026035 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.216648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamRightOne.scm0000644000175000017500000000004613135434035027706 0ustar00jjbenhamjjbenham00000000000000;;; BeamRightOne (BeamCount "Right" 1)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamRightThree.xml0000644000000000000000000000013213135434035026401 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.226648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamRightThree.xml0000644000175000017500000000056313135434035030256 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BeamRightThree <_label>Three Beams Right <_tooltip>Prints with just three beams linking to the right. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamLeftThree.scm0000644000000000000000000000013213135434035026200 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.226648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamLeftThree.scm0000644000175000017500000000004613135434035030051 0ustar00jjbenhamjjbenham00000000000000;;; BeamLeftThree (BeamCount "Left" 3)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamRightTwo.scm0000644000000000000000000000013213135434035026065 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.226648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamRightTwo.scm0000644000175000017500000000004613135434035027736 0ustar00jjbenhamjjbenham00000000000000;;; BeamRightTwo (BeamCount "Right" 2)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamLeftOne.xml0000644000000000000000000000013213135434035025670 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.226648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamLeftOne.xml0000644000175000017500000000061013135434035027536 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BeamRightOne BeamLeftOne <_label>One Beam Left <_tooltip>Prints with just one beam linking to left. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamRightNone.scm0000644000000000000000000000013213135434035026213 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.226648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamRightNone.scm0000644000175000017500000000004713135434035030065 0ustar00jjbenhamjjbenham00000000000000;;; BeamRightNone (BeamCount "Right" 0)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/DeleteBeamingDirective.scm0000644000000000000000000000013213135434035030055 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.236648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/DeleteBeamingDirective.scm0000644000175000017500000000020613135434035031724 0ustar00jjbenhamjjbenham00000000000000;;; DeleteBeamingDirective (d-DirectiveDelete-chord "Beam") (d-DirectiveDelete-chord "BeamLeft") (d-DirectiveDelete-chord "BeamRight")denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/NoBeam.xml0000644000000000000000000000013213135434035024710 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.239981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/NoBeam.xml0000644000175000017500000000056513135434035026567 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Beam1234 NoBeam <_label>No Beam <_tooltip>(Print) Removes beam from current note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/PaxHeaders.19168/BeamRightOne.xml0000644000000000000000000000013213135434035026053 xustar0030 mtime=1500919837.993315139 30 atime=1500919927.239981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Beaming/BeamRightOne.xml0000644000175000017500000000061113135434035027722 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NoBeam BeamRightOne <_label>One Beam Right <_tooltip>Prints with just one beam linking to the right. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/Tremolo.scm0000644000000000000000000000013213135434036023611 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.239981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tremolo.scm0000644000175000017500000000400613135434036025462 0ustar00jjbenhamjjbenham00000000000000;;;Tremolo (let ((duration #f) (dur #f)(stripes #f)(tag "Tremolo")(params #f)) (if (Note?) (begin (if (d-Directive-chord? tag) (let ((choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Object Inspector") 'help) (cons (_ "Delete") 'delete)))) (set! params 'finished) (case choice ((edit) (set! params #f)) ((help) (d-DisplayCurrentObject)) ((delete) (d-SetSaved #f) (d-DirectiveDelete-chord tag))))) (if (not params) (let ((choice (RadioBoxMenu (cons (_ "divide ð…  1/8") 'eighth) (cons (_ "divideð…¡ 1/16") 'sixteenth) (cons (_ "divide ð…£ 1/32 ") 'thir) (cons (_ "divide ð…£ 1/64") 'six) (cons (_ "divide ð…£ 1/128") 'hun)))) (case choice ((eighth) (set! dur ":8")(set! stripes "ð…ª")) ((sixteenth) (set! dur ":16")(set! stripes "ð…«")) ((thir) (set! dur ":32")(set! stripes "ð…¬")) ((six) (set! dur ":64")(set! stripes "ð…ªð…«")) ((hun) (set! dur ":128")(set! stripes "ð…«ð…«"))) (if (string? dur) (begin (d-SetSaved #f) (d-DirectivePut-chord-display tag stripes) (d-DirectivePut-chord-postfix tag dur))))) (d-RefreshDisplay)) (d-WarningDialog (_ "Cursor must be on a note or chord for tremolo")))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/ReplaceChord.scm0000644000000000000000000000013213135434036024523 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.249981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ReplaceChord.scm0000644000175000017500000000130513135434036026373 0ustar00jjbenhamjjbenham00000000000000;;;;ReplaceChord (let ((tag "ReplaceChord") (lily #f)) (set! lily (d-DirectiveGet-chord-prefix tag)) (if lily (begin (if (> (string-length lily) 2) (set! lily (string-drop-right lily 2)))) (set! lily "r")) (set! lily (d-GetUserInput "Replace Note/Rest" "Give LilyPond syntax to replace the note or rest at the cursor or blank to delete" lily)) (if (and lily (> (string-length lily) 0)) (begin (d-DirectivePut-chord-prefix tag (string-append lily "%{")) (d-DirectivePut-chord-postfix tag " %}\n") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-display tag "customized")) (d-DirectiveDelete-chord tag))) (d-SetSaved #f)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/EditDuration0000644000000000000000000000013213135434150023777 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/0000755000175000017500000000000013135434150025725 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/PaxHeaders.19168/Breve.xml0000644000000000000000000000013213135434035025643 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.249981805 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Breve.xml0000644000175000017500000000054313135434035027516 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertRhythm Breve <_label>Breve <_tooltip>Append/Insert Breve denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/PaxHeaders.19168/Longa.xml0000644000000000000000000000013213135434035025640 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.249981805 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Longa.xml0000644000175000017500000000054513135434035027515 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Breve Longa <_label>Longa <_tooltip>Append/Insert Longa duration denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/PaxHeaders.19168/Breve.scm0000644000000000000000000000013213135434035025625 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.249981805 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Breve.scm0000644000175000017500000000045013135434035027475 0ustar00jjbenhamjjbenham00000000000000;;Breve (let ((appending (or (None?) (Appending?)))) (d-0) (if (Appending?) (d-MoveCursorLeft)) (d-ChangeBreve); (if (and (defined? 'Snippet::Breve) (> Snippet::Breve 0)) (d-SelectSnippet Snippet::Breve) (d-CreateSnippetFromObject "Breve")) (if appending (d-MoveCursorRight))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/PaxHeaders.19168/Slurred0000644000000000000000000000013213135434150025417 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/0000755000175000017500000000000013135434150027345 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur1.scm0000644000000000000000000000013213135434035027210 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.269981805 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur1.scm0000644000175000017500000000003213135434035031054 0ustar00jjbenhamjjbenham00000000000000(d-1) (SlurToCurrentChord)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur4.xml0000644000000000000000000000013213135434035027231 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.269981805 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur4.xml0000644000175000017500000000055013135434035031102 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Slur4 <_label> âœ ð…¡ <_tooltip>Inserts a ð…¡ and slurs to it, extending previous slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur0.xml0000644000000000000000000000013213135434035027225 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.269981805 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur0.xml0000644000175000017500000000055013135434035031076 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Slur0 <_label> ✠ð… <_tooltip>Inserts a ð… and slurs to it, extending previous slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur2.xml0000644000000000000000000000013213135434035027227 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.269981805 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur2.xml0000644000175000017500000000055013135434035031100 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Slur2 <_label> âœ ð…Ÿ <_tooltip>Inserts a ð…Ÿ and slurs to it, extending previous slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur7.scm0000644000000000000000000000013213135434035027216 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.283315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur7.scm0000644000175000017500000000003213135434035031062 0ustar00jjbenhamjjbenham00000000000000(d-7) (SlurToCurrentChord)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/SlurBreve.scm0000644000000000000000000000013213135434035030113 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.283315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/SlurBreve.scm0000644000175000017500000000003613135434035031763 0ustar00jjbenhamjjbenham00000000000000(d-Breve) (SlurToCurrentChord)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur3.xml0000644000000000000000000000013213135434035027230 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.283315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur3.xml0000644000175000017500000000055013135434035031101 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Slur3 <_label> âœ ð…  <_tooltip>Inserts a ð…  and slurs to it, extending previous slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur6.scm0000644000000000000000000000013213135434035027215 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.283315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur6.scm0000644000175000017500000000003213135434035031061 0ustar00jjbenhamjjbenham00000000000000(d-6) (SlurToCurrentChord)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur7.xml0000644000000000000000000000013213135434035027234 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.283315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur7.xml0000644000175000017500000000055013135434035031105 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Slur7 <_label> âœ ð…¤ <_tooltip>Inserts a ð…¤ and slurs to it, extending previous slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur3.scm0000644000000000000000000000013213135434035027212 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.293315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur3.scm0000644000175000017500000000003213135434035031056 0ustar00jjbenhamjjbenham00000000000000(d-3) (SlurToCurrentChord)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur2.scm0000644000000000000000000000013213135434035027211 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.293315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur2.scm0000644000175000017500000000003213135434035031055 0ustar00jjbenhamjjbenham00000000000000(d-2) (SlurToCurrentChord)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur0.scm0000644000000000000000000000013213135434035027207 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.293315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur0.scm0000644000175000017500000000003213135434035031053 0ustar00jjbenhamjjbenham00000000000000(d-0) (SlurToCurrentChord)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/SlurBreve.xml0000644000000000000000000000013213135434035030131 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.293315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/SlurBreve.xml0000644000175000017500000000055413135434035032006 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SlurBreve <_label> âœ ð…œ <_tooltip>Inserts a ð…œ and slurs to it, extending previous slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur6.xml0000644000000000000000000000013213135434035027233 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.293315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur6.xml0000644000175000017500000000055013135434035031104 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Slur6 <_label> âœ ð…£ <_tooltip>Inserts a ð…£ and slurs to it, extending previous slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur5.scm0000644000000000000000000000013213135434035027214 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.306648473 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur5.scm0000644000175000017500000000003213135434035031060 0ustar00jjbenhamjjbenham00000000000000(d-5) (SlurToCurrentChord)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur1.xml0000644000000000000000000000013213135434035027226 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.306648473 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur1.xml0000644000175000017500000000055013135434035031077 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Slur1 <_label> âœ ð…ž <_tooltip>Inserts a ð…ž and slurs to it, extending previous slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/init.scm0000644000000000000000000000013213135434035027145 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.306648473 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/init.scm0000644000175000017500000000077313135434035031025 0ustar00jjbenhamjjbenham00000000000000(define (SlurToCurrentChord) (if (d-PrevChord) (begin (if (Note?) (begin ;;; there is a note before, if it is end slur then remove that, else start slur (if (d-IsSlurEnd) (begin (d-ToggleEndSlur)) (begin ;;; there is a note before it is to be the start of the slurred notes (d-ToggleBeginSlur))) (d-NextChord) (d-PlayMidiNote 53 80 9 10) (d-ToggleEndSlur)) (begin ;;; there is a rest before (d-NextChord))) (d-MoveCursorRight)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur4.scm0000644000000000000000000000013213135434035027213 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.306648473 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur4.scm0000644000175000017500000000003213135434035031057 0ustar00jjbenhamjjbenham00000000000000(d-4) (SlurToCurrentChord)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/Slur5.xml0000644000000000000000000000013213135434035027232 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.306648473 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/Slur5.xml0000644000175000017500000000055013135434035031103 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Slur5 <_label> âœ ð…¢ <_tooltip>Inserts a ð…¢ and slurs to it, extending previous slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/SlurLonga.scm0000644000000000000000000000013213135434035030110 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.326648473 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/SlurLonga.scm0000644000175000017500000000003613135434035031760 0ustar00jjbenhamjjbenham00000000000000(d-Longa) (SlurToCurrentChord)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/PaxHeaders.19168/SlurLonga.xml0000644000000000000000000000013213135434035030126 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.326648473 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Slurred/SlurLonga.xml0000644000175000017500000000055413135434035032003 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SlurLonga <_label> âœ ð…› <_tooltip>Inserts a ð…› and slurs to it, extending previous slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/PaxHeaders.19168/Longa.scm0000644000000000000000000000013213135434035025622 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.326648473 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditDuration/Longa.scm0000644000175000017500000000044713135434035027500 0ustar00jjbenhamjjbenham00000000000000;;Longa (let ((appending (or (None?) (Appending?)))) (d-0) (if (Appending?) (d-MoveCursorLeft)) (d-ChangeLonga) (if (and (defined? 'Snippet::Longa) (> Snippet::Longa 0)) (d-SelectSnippet Snippet::Longa) (d-CreateSnippetFromObject "Longa")) (if appending (d-MoveCursorRight))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/Percussion0000644000000000000000000000013213135434150023536 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/0000755000175000017500000000000013135434150025464 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/DrumGM2Custom.scm0000644000000000000000000000013213135434036026732 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.326648473 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/DrumGM2Custom.scm0000644000175000017500000001524213135434036030607 0ustar00jjbenhamjjbenham00000000000000(define (DrumGM2Custom) ;This is not very usefull currently. ;GM Midi Drumtable (define gmAcousticBasedrum "b,,") ;35 (define gmBassDrum "c,") ;36 low c c, (define gmSideStick "cis,") ;37 (define gmAcousticSnare "d,") ;38 (define gmHandClap "dis,") ;39 (define gmElectricSnare "e,");40 (define gmLowFloorTom "f,") ;41 (define gmClosedHighHat "fis,") ;42 (define gmHighFloorTom "g,") ;43 (define gmPedalHighHat "gis,") ;44 (define gmLowTom "a,") ;45 (define gmOpenHighHat "ais,") ;46 (define gmLowMidTom "b,") ;47 (define gmHighMidTom "c") ;48 "small c" c (define gmCrashCymbal1 "cis") ;49 (define gmHighTom "d") ;50 (define gmRideCymbal1 "dis") ;51 (define gmChineseCymbal1 "e") ;52 (define gmRideBell "f") ;53 (define gmTambourine "fis") ;54 (define gmSplashCymbal "g") ;55 (define gmCowbell "gis") ;56 (define gmCrashCymbal2 "a") ;57 (define gmVibraslap "ais") ;58 (define gmRideCymbal2 "b") ;59 (define gmHighBongo "c'") ;60 Middle C c' (define gmLowBongo "cis'") ;61 (define gmMuteHighConga "d'") ;62 (define gmOpenHighConga "dis'") ;63 (define gmLowConga "e'") ;64 (define gmHighTimbale "f'") ;65 (define gmLowTimbale "fis'") ;66 (define gmHighAgogo "g'") ;67 (define gmLowAgogo "gis'") ;68 (define gmCabasa "a'") ;69 (define gmMaracas "ais'") ;70 (define gmShortWhistle "b'") ;71 (define gmLongWhistle "c") ;72 "high c" c (define gmShortGuiro "cis''") ;73 (define gmLongGuiro "d''") ;74 (define gmClaves "dis''") ;75 (define gmHighWoodBlock "e''") ;76 (define gmLowWoodBlock "f''") ;77 (define gmMuteCuica "g''") ;78 (define gmOpenCuica "gis''") ;79 (define gmMuteTriangle "a''") ;80 (define gmOpenTriangle "ais''") ;81 a' ;Custom DrumTable (define AcousticBasedrum "b,,") ;35 (define BassDrum "c,") ;36 low c c, (define SideStick "cis,") ;37 (define AcousticSnare "d,") ;38 (define HandClap "dis,") ;39 (define ElectricSnare "e,");40 (define LowFloorTom "f,") ;41 (define ClosedHighHat "fis,") ;42 (define HighFloorTom "g,") ;43 (define PedalHighHat "gis,") ;44 (define LowTom "a,") ;45 (define OpenHighHat "ais,") ;46 (define LowMidTom "b,") ;47 (define HighMidTom "c") ;48 "small c" c (define CrashCymbal1 "cis") ;49 (define HighTom "d") ;50 (define RideCymbal1 "dis") ;51 (define ChineseCymbal1 "e") ;52 (define RideBell "f") ;53 (define Tambourine "fis") ;54 (define SplashCymbal "g") ;55 (define Cowbell "gis") ;56 (define CrashCymbal2 "a") ;57 (define Vibraslap "ais") ;58 (define RideCymbal2 "b") ;59 (define HighBongo "c'") ;60 Middle C c' (define LowBongo "cis'") ;61 (define MuteHighConga "d'") ;62 (define OpenHighConga "dis'") ;63 (define LowConga "e'") ;64 (define HighTimbale "f'") ;65 (define LowTimbale "fis'") ;66 (define HighAgogo "g'") ;67 (define LowAgogo "gis'") ;68 (define Cabasa "a'") ;69 (define Maracas "ais'") ;70 (define ShortWhistle "b'") ;71 (define LongWhistle "c") ;72 "high c" c (define ShortGuiro "cis''") ;73 (define LongGuiro "d''") ;74 (define Claves "dis''") ;75 (define HighWoodBlock "e''") ;76 (define LowWoodBlock "f''") ;77 (define MuteCuica "g''") ;78 (define OpenCuica "gis''") ;79 (define MuteTriangle "a''") ;80 (define OpenTriangle "ais''") ;81 a' (cond ((string-ci=? (d-GetNotes) gmAcousticBasedrum) (d-PutNoteName AcousticBasedrum)) ((string-ci=? (d-GetNotes) gmBassDrum) (d-PutNoteName BassDrum)) ((string-ci=? (d-GetNotes) gmSideStick) (d-PutNoteName SideStick)) ((string-ci=? (d-GetNotes) gmAcousticSnare) (d-PutNoteName AcousticSnare)) ((string-ci=? (d-GetNotes) gmHandClap) (d-PutNoteName HandClap)) ((string-ci=? (d-GetNotes) gmElectricSnare) (d-PutNoteName ElectricSnare)) ((string-ci=? (d-GetNotes) gmLowFloorTom) (d-PutNoteName LowFloorTom)) ((string-ci=? (d-GetNotes) gmClosedHighHat) (d-PutNoteName ClosedHighHat)) ((string-ci=? (d-GetNotes) gmHighFloorTom) (d-PutNoteName HighFloorTom)) ((string-ci=? (d-GetNotes) gmPedalHighHat) (d-PutNoteName PedalHighHat)) ((string-ci=? (d-GetNotes) gmLowTom) (d-PutNoteName LowTom)) ((string-ci=? (d-GetNotes) gmOpenHighHat) (d-PutNoteName OpenHighHat)) ((string-ci=? (d-GetNotes) gmLowMidTom) (d-PutNoteName LowMidTom)) ((string-ci=? (d-GetNotes) gmHighMidTom) (d-PutNoteName HighMidTom)) ((string-ci=? (d-GetNotes) gmCrashCymbal1) (d-PutNoteName CrashCymbal1)) ((string-ci=? (d-GetNotes) gmHighTom) (d-PutNoteName HighTom)) ((string-ci=? (d-GetNotes) gmRideCymbal1) (d-PutNoteName RideCymbal1)) ((string-ci=? (d-GetNotes) gmChineseCymbal1) (d-PutNoteName ChineseCymbal1)) ((string-ci=? (d-GetNotes) gmRideBell) (d-PutNote NameRideBell)) ((string-ci=? (d-GetNotes) gmTambourine) (d-PutNoteName Tambourine)) ((string-ci=? (d-GetNotes) gmSplashCymbal) (d-PutNoteName SplashCymbal)) ((string-ci=? (d-GetNotes) gmCowbell) (d-PutNoteName Cowbell)) ((string-ci=? (d-GetNotes) gmCrashCymbal2) (d-PutNoteName CrashCymbal2)) ((string-ci=? (d-GetNotes) gmVibraslap) (d-PutNoteName Vibraslap)) ((string-ci=? (d-GetNotes) gmRideCymbal2) (d-PutNoteName RideCymbal2)) ((string-ci=? (d-GetNotes) gmHighBongo) (d-PutNoteName HighBongo)) ((string-ci=? (d-GetNotes) gmLowBongo) (d-PutNoteName LowBongo)) ((string-ci=? (d-GetNotes) gmMuteHighConga) (d-PutNoteName MuteHighConga)) ((string-ci=? (d-GetNotes) gmOpenHighConga) (d-PutNoteName OpenHighConga)) ((string-ci=? (d-GetNotes) gmLowConga) (d-PutNoteName LowConga)) ((string-ci=? (d-GetNotes) gmHighTimbale) (d-PutNoteName HighTimbale)) ((string-ci=? (d-GetNotes) gmLowTimbale) (d-PutNoteName LowTimbale)) ((string-ci=? (d-GetNotes) gmHighAgogo) (d-PutNoteName HighAgogo)) ((string-ci=? (d-GetNotes) gmLowAgogo) (d-PutNoteName LowAgogo)) ((string-ci=? (d-GetNotes) gmCabasa) (d-PutNoteName Cabasa)) ((string-ci=? (d-GetNotes) gmMaracas) (d-PutNoteName Maracas)) ((string-ci=? (d-GetNotes) gmShortWhistle) (d-PutNoteName ShortWhistle)) ((string-ci=? (d-GetNotes) gmLongWhistle) (d-PutNoteName LongWhistle)) ((string-ci=? (d-GetNotes) gmShortGuiro) (d-PutNoteName ShortGuiro)) ((string-ci=? (d-GetNotes) gmLongGuiro) (d-PutNoteName LongGuiro)) ((string-ci=? (d-GetNotes) gmClaves) (d-PutNoteName Claves)) ((string-ci=? (d-GetNotes) gmHighWoodBlock) (d-PutNoteName HighWoodBlock)) ((string-ci=? (d-GetNotes) gmLowWoodBlock) (d-PutNoteName LowWoodBlock)) ((string-ci=? (d-GetNotes) gmMuteCuica) (d-PutNoteName MuteCuica)) ((string-ci=? (d-GetNotes) gmOpenCuica) (d-PutNoteName OpenCuica )) ((string-ci=? (d-GetNotes) gmMuteTriangle) (d-PutNoteName MuteTriangle)) ((string-ci=? (d-GetNotes) gmOpenTriangle) (d-PutNoteName OpenTriangle)) (else (newline)) ) ); End of DrumGM2Custom (DrumGM2Custom) (d-NextNote) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/RideBell.xml0000644000000000000000000000013213135434036026022 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.339981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/RideBell.xml0000644000175000017500000000053713135434036027700 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RideBell <_label>Ride Bell <_tooltip>Insert Ride Bell in the prevailing duration. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/HiTom.xml0000644000000000000000000000013213135434036025360 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.339981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/HiTom.xml0000644000175000017500000000052613135434036027234 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HiTom <_label>Hi Tom <_tooltip>Insert Hi Tom in the prevailing duration. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/BassDrum.scm0000644000000000000000000000013213135434036026042 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.349981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/BassDrum.scm0000644000175000017500000000005013135434036027706 0ustar00jjbenhamjjbenham00000000000000 (d-InsertF) (d-PutNoteName "f''") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/HiTom.scm0000644000000000000000000000013213135434036025342 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.349981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/HiTom.scm0000644000175000017500000000005013135434036027206 0ustar00jjbenhamjjbenham00000000000000 (d-InsertF) (d-PutNoteName "e''") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/HiHatFoot.scm0000644000000000000000000000013213135434036026147 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.349981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/HiHatFoot.scm0000644000175000017500000000010513135434036030014 0ustar00jjbenhamjjbenham00000000000000 (d-InsertG) (d-PutNoteName "d''") (d-ChangeNotehead "Cross") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/TimbalesStyle.scm0000644000000000000000000000013213135434036027103 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.349981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/TimbalesStyle.scm0000644000175000017500000000135113135434036030754 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;; TimbalesStyle (d-DirectivePut-staff-prefix "TimbalesStyle" "<< { \\new DrumStaff \\with {\n drumStyleTable = #timbales-style \\override StaffSymbol #'line-count = #2 \\override BarLine #'bar-size = #2 }\n") (d-DirectivePut-staff-override "TimbalesStyle" 1) (d-DirectivePut-staff-display "TimbalesStyle" "DrumStaff") (d-DirectivePut-voice-postfix "TimbalesStyle" "\\drummode ") (d-DirectivePut-voice-override "TimbalesStyle" 1) (d-DirectivePut-clef-postfix "TimbalesStyle" "{ }\n ") (d-DirectivePut-clef-override "TimbalesStyle" 1) (d-DirectivePut-clef-graphic "TimbalesStyle" "DrumClef") (d-DirectivePut-keysig-postfix "TimbalesStyle" "{ }\n ") (d-DirectivePut-keysig-override "TimbalesStyle" 1) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/HiHatFoot.xml0000644000000000000000000000013213135434036026165 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.349981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/HiHatFoot.xml0000644000175000017500000000055513135434036030043 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HiHatFoot <_label>Hi Hat with Foot <_tooltip>Insert HiHat with foot in the prevailing duration. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/HiHat.scm0000644000000000000000000000013213135434036025317 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.363315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/HiHat.scm0000644000175000017500000000010613135434036027165 0ustar00jjbenhamjjbenham00000000000000 (d-InsertG) (d-PutNoteName "d''") (d-ChangeNotehead "Cross") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/Ride.xml0000644000000000000000000000013213135434036025223 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.363315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/Ride.xml0000644000175000017500000000052113135434036027072 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Ride <_label>Ride <_tooltip>Insert Ride in the prevailing duration. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/BassDrum.xml0000644000000000000000000000013213135434036026060 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.363315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/BassDrum.xml0000644000175000017500000000053713135434036027736 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BassDrum <_label>Bass Drum <_tooltip>Insert Bass Drum in the prevailing duration. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/Ride.scm0000644000000000000000000000013213135434036025205 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.363315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/Ride.scm0000644000175000017500000000010713135434036027054 0ustar00jjbenhamjjbenham00000000000000 (d-InsertG) (d-PutNoteName "f'''") (d-ChangeNotehead "Cross") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/DrumGM2Custom.xml0000644000000000000000000000013213135434036026750 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.363315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/DrumGM2Custom.xml0000644000175000017500000000072213135434036030622 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TimbalesStyle DrumGM2Custom <_label>Drum GM2 Custom <_tooltip>Convert General Midi drum-staffs to user-notation drum-staffs. Please edit the script to enter your own values. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/HiHat.xml0000644000000000000000000000013213135434036025335 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.383315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/HiHat.xml0000644000175000017500000000055513135434036027213 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HiHatFoot <_label>Hi Hat with Foot <_tooltip>Insert HiHat with foot in the prevailing duration. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/RideBell.scm0000644000000000000000000000013213135434036026004 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.383315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/RideBell.scm0000644000175000017500000000010713135434036027653 0ustar00jjbenhamjjbenham00000000000000 (d-InsertG) (d-PutNoteName "f''") (d-ChangeNotehead "Diamond") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/PaxHeaders.19168/TimbalesStyle.xml0000644000000000000000000000013213135434036027121 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.383315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Percussion/TimbalesStyle.xml0000644000175000017500000000056513135434036031000 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TimbalesStyle <_label>Timbales Style Staff <_tooltip>Changes to print as a drum staff in timbales style denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/TremoloDownward.xml0000644000000000000000000000013213135434036025335 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.383315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TremoloDownward.xml0000644000175000017500000000062613135434036027212 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TremoloDownward Tremolo <_label>Tremolo Downward <_tooltip>Slopes the tremolo slash downwards instead of upwards. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/TremoloUpward.scm0000644000000000000000000000013213135434036024774 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.383315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TremoloUpward.scm0000644000175000017500000000053313135434036026646 0ustar00jjbenhamjjbenham00000000000000;;;TremoloUpward (let ((tag "TremoloDirection")) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-prefix tag "\\once \\override StemTremolo.slope =#0.4 ") (d-DirectivePut-chord-display tag "/") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-SetSaved #f))) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/SelectDuration0000644000000000000000000000013213135434150024331 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/SelectDuration/0000755000175000017500000000000013135434150026257 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/SelectDuration/PaxHeaders.19168/SetBreve.scm0000644000000000000000000000013213135434036026634 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.396648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/SelectDuration/SetBreve.scm0000644000175000017500000000076413135434036030514 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;; SetBreve (if (and (defined? 'Snippet::Breve) (> Snippet::Breve 0)) (d-SelectSnippet Snippet::Breve) (begin (d-PushPosition) (d-InsertMeasureBefore) (d-Insert0) (d-DirectivePut-chord-graphic "Duration" "  emmentaler") (d-DirectivePut-chord-override "Duration" (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_ALT_OVERRIDE)) (d-DirectivePut-chord-prefix "Duration" "\\breve ") (d-SetDurationInTicks (* 2 1536)) (d-CreateSnippetFromObject "Breve") (d-DeleteMeasure) (d-PopPosition))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/SelectDuration/PaxHeaders.19168/SetLonga.scm0000644000000000000000000000013213135434036026631 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.396648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/SelectDuration/SetLonga.scm0000644000175000017500000000076213135434036030507 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;; SetLonga (if (and (defined? 'Snippet::Longa) (> Snippet::Longa 0)) (d-SelectSnippet Snippet::Longa) (begin (d-PushPosition) (d-InsertMeasureBefore) (d-Insert0) (d-DirectivePut-chord-graphic "Duration" "  emmentaler") (d-DirectivePut-chord-override "Duration" (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_ALT_OVERRIDE)) (d-DirectivePut-chord-prefix "Duration" "\\longa ") (d-SetDurationInTicks (* 4 1536)) (d-CreateSnippetFromObject "Longa") (d-DeleteMeasure) (d-PopPosition))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/SelectDuration/PaxHeaders.19168/SetBreve.xml0000644000000000000000000000013213135434036026652 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.396648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/SelectDuration/SetBreve.xml0000644000175000017500000000055413135434036030527 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Set7 SetBreve <_label>Breve <_tooltip>Sets Prevailing Duration to Breve denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/SelectDuration/PaxHeaders.19168/SetLonga.xml0000644000000000000000000000013213135434036026647 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.396648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/SelectDuration/SetLonga.xml0000644000175000017500000000063113135434036030520 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetBreve SetLonga <_label>Longa <_tooltip>Sets Longa as the prevailing duration, installing it as a musical snippet. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/FingeringsDoublestroke.xml0000644000000000000000000000013213135434035026663 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.406648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/FingeringsDoublestroke.xml0000644000175000017500000000055013135434035030534 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FingeringsDoublestroke <_label>Fingerings <_tooltip>Place a fingerin instruction on a note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/TiedNotes0000644000000000000000000000013213135434150023302 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/0000755000175000017500000000000013135434150025230 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/RepeatTie.scm0000644000000000000000000000013213135434036025750 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.406648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/RepeatTie.scm0000644000175000017500000000074613135434036027630 0ustar00jjbenhamjjbenham00000000000000;;RepeatTie (let ((tag "RepeatTie")) (if (Appending?) (d-MoveCursorLeft)) (if (Note?) (begin (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-postfix tag "\\repeatTie") (d-DirectivePut-chord-gy tag -20) (d-DirectivePut-chord-graphic tag "\n⌣ð…Ÿ\nDenemo\n18"))) (d-RefreshDisplay) (d-SetSaved #f)) (d-InfoDialog (_ "This command only applies to notes or chords.")))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/ConvertIncorrectSlursToT0000644000000000000000000000013213135434036030256 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.406648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/ConvertIncorrectSlursToTies.xml0000644000175000017500000000117213135434036033430 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ConvertIncorrectSlursToTies ToggleNoteDownTie <_label>Convert Incorrect Slurs to Ties <_tooltip>Corrects for the slur/tie error common in imported scores. Scans entire score for pairs of identical notes slurred together as a pair. Changes these to a tied note. Do not use in the unusual case of identical notes slurred (e.g. across strings). denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/InsertTiedNoteDuration.x0000644000000000000000000000013213135434036030161 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.406648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/InsertTiedNoteDuration.xml0000644000175000017500000000071113135434036032362 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertTiedNoteDuration <_label>Attach Tied Note <_tooltip>Toggles a tie on the note at the cursor and moves right for inserting a note to tie to with duration key. Gives audible feedback. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/ToggleNoteTie.scm0000644000000000000000000000013213135434036026577 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.416648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/ToggleNoteTie.scm0000644000175000017500000000105713135434036030453 0ustar00jjbenhamjjbenham00000000000000;;ToggleNoteTie (let ((tag "Tie")) (if (Chord?) (begin (if (d-Directive-note? tag) (d-DirectiveDelete-note tag) (begin (d-DirectivePut-note-postfix tag "~") ;;for some reason we do not have â in the font (d-DirectivePut-note-graphic tag "\n~ Denemo 30"))) (d-RefreshDisplay) (d-SetSaved #f)) (d-WarningDialog (_ "Individual Ties only apply to notes within chords.")))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/ToggleNoteDownTie.scm0000644000000000000000000000013213135434036027427 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.416648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/ToggleNoteDownTie.scm0000644000175000017500000000113213135434036031275 0ustar00jjbenhamjjbenham00000000000000;;ToggleNoteDownTie (let ((tag "Tie")) (if (Chord?) (begin (if (d-Directive-note? tag) (d-DirectiveDelete-note tag) (begin (d-DirectivePut-note-postfix tag "_~ ") (d-Chordize #t) ;;for some reason we do not have â in the font (d-DirectivePut-note-graphic tag "\n~ Denemo 30"))) (d-RefreshDisplay) (d-SetSaved #f)) (d-WarningDialog (_ "Individual Ties only apply to notes within chords.")))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/LaissezVibrer.scm0000644000000000000000000000013213135434036026652 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.416648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/LaissezVibrer.scm0000644000175000017500000000076113135434036030527 0ustar00jjbenhamjjbenham00000000000000;;LaissezVibrer (let ((tag "LaissezVibrer")) (if (Appending?) (d-MoveCursorLeft)) (if (Note?) (begin (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-postfix tag "\\laissezVibrer") (d-DirectivePut-chord-gy tag -30) (d-DirectivePut-chord-graphic tag "\nð…ŸâŒ£\nDenemo\n18"))) (d-RefreshDisplay) (d-SetSaved #f)) (d-InfoDialog (_ "This command only applies to notes or chords.")))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/ToggleTieUp.xml0000644000000000000000000000013213135434036026274 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.416648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/ToggleTieUp.xml0000644000175000017500000000062013135434036030143 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTieDown ToggleTieUp <_label>Up Tie (Off/On) <_tooltip>Ties to next note, tie upwards, or removes tie. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/ToggleTieDown.xml0000644000000000000000000000013213135434036026617 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.416648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/ToggleTieDown.xml0000644000175000017500000000062513135434036030473 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTie ToggleTieDown <_label>Down Tie (Off/On) <_tooltip>Ties to the following note/chord with tie downwards. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/InsertTiedNoteDuration.s0000644000000000000000000000013213135434036030154 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.436648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/InsertTiedNoteDuration.scm0000644000175000017500000000042613135434036032347 0ustar00jjbenhamjjbenham00000000000000;InsertTiedNoteDuration ; Toggles a tie and moves right for insert with duration key. Gives audible feedback (d-ToggleTie) (if (d-IsTied) (begin (d-PlayMidiNote 59 255 9 10) (d-PendingMidi 71)) (d-PlayMidiNote 41 255 9 10)) (if (not (d-IsAppending)) (d-MoveCursorRight))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/LaissezVibrer.xml0000644000000000000000000000013213135434036026670 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.436648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/LaissezVibrer.xml0000644000175000017500000000073013135434036030541 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LaissezVibrer RepeatTie <_label>Laissez Vibrer <_tooltip>Places a tie after the note at the cursor, tying to nothing. Use for laissez vibrer or when a tie comes at a final repeat. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/ToggleTieUp.scm0000644000000000000000000000013213135434036026256 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.436648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/ToggleTieUp.scm0000644000175000017500000000042513135434036030130 0ustar00jjbenhamjjbenham00000000000000;;ToggleTieUp (let ((tag "Tie")) (if (d-IsTied) (begin (d-DirectiveDelete-chord tag) (d-ToggleTie)) (begin (d-ToggleTie) (d-DirectivePut-chord-postfix tag "^") (d-DirectivePut-chord-graphic tag "\n^ Denemo 30"))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/TieStyle.xml0000644000000000000000000000013213135434036025646 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.436648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/TieStyle.xml0000644000175000017500000000061613135434036027522 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TieStyle ToggleNoteDownTie <_label>Dashed or Dotted <_tooltip>Make the tie on this note dashed or dotted. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/TieStyle.scm0000644000000000000000000000013213135434036025630 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.436648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/TieStyle.scm0000644000175000017500000000073413135434036027505 0ustar00jjbenhamjjbenham00000000000000;;;TieStyle (let ((tag "TieStyle") (choice (RadioBoxMenu (cons (_ "Dashed") "\\tieDashed") (cons (_ "Dotted") "\\tieDotted") (cons (_ "Default") "\\tieSolid")))) (if choice (begin (d-SetSaved #f) (d-DirectivePut-chord-prefix tag (string-append "\\once" choice " ")) (d-DirectivePut-chord-display tag (substring choice 4)) (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/ToggleNoteTie.xml0000644000000000000000000000013213135434036026615 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.443315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/ToggleNoteTie.xml0000644000175000017500000000071013135434036030464 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertTiedNoteDuration ToggleNoteTie <_label>Individual Note Tie (Off/On) <_tooltip>Ties the note at the cursor leaving other notes in the current chord unchanged. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/ToggleNoteUpTie.scm0000644000000000000000000000013213135434036027104 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.443315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/ToggleNoteUpTie.scm0000644000175000017500000000112413135434036030753 0ustar00jjbenhamjjbenham00000000000000;;ToggleNoteUpTie (let ((tag "Tie")) (if (Chord?) (begin (if (d-Directive-note? tag) (d-DirectiveDelete-note tag) (begin (d-DirectivePut-note-postfix tag "^~ ") (d-Chordize) ;;for some reason we do not have â in the font (d-DirectivePut-note-graphic tag "\n~ Denemo 30"))) (d-RefreshDisplay) (d-SetSaved #f)) (d-WarningDialog (_ "Individual Ties only apply to notes within chords.")))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/ToggleNoteUpTie.xml0000644000000000000000000000013213135434036027122 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.443315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/ToggleNoteUpTie.xml0000644000175000017500000000070713135434036030777 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleNoteTie ToggleNoteUpTie <_label>Individual Note Up-Tie (Off/On) <_tooltip>Ties the individual note in a chord the tie being above; repeat command to remove. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/RepeatTie.xml0000644000000000000000000000013213135434036025766 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.443315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/RepeatTie.xml0000644000175000017500000000074513135434036027645 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RepeatTie InsertTiedNoteDuration <_label>Repeat Tie <_tooltip>The note at the cursor ends a tie that has begun elsewhere, usually in a first time bar. That is it is a repeat of the tie ending. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/ToggleNoteDownTie.xml0000644000000000000000000000013213135434036027445 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.443315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/ToggleNoteDownTie.xml0000644000175000017500000000070513135434036031320 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleNoteTie ToggleNoteDownTie <_label>Individual Note Down-Tie (Off/On) <_tooltip>Ties the individual note at the cursor the tie going down; repeat to remove. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/Shape0000644000000000000000000000013213135434150024342 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/0000755000175000017500000000000013135434150026270 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/PaxHeaders.19168/ShapeTieHigher.scm0000644000000000000000000000013213135434036027757 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.453315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/ShapeTieHigher.scm0000644000175000017500000000264213135434036031634 0ustar00jjbenhamjjbenham00000000000000;;ShapeTieHigher (let ((tag "TieShape")(amount "0")(data #f)(height #f)) (set! data (d-DirectiveGet-standalone-data tag)) (if data (begin (set! data (eval-string data))) (begin (set! data '((0 . 0) (0 . 0) (0 . 0) (0 . 0))))) (set! amount (d-GetUserInput (_ "Height of Tie") (_ "Give amount to raise (unit = staff line space):") amount)) (if (and amount (string->number amount)) (begin (set! amount (string->number amount)) ;modify y offsets by the amount (list-set! data 0 (cons (car (list-ref data 0)) (+ amount (cdr (list-ref data 0))))) (list-set! data 1 (cons (car (list-ref data 1)) (+ amount (cdr (list-ref data 1))))) (list-set! data 2 (cons (car (list-ref data 2)) (+ amount (cdr (list-ref data 2))))) (list-set! data 3 (cons (car (list-ref data 3)) (+ amount (cdr (list-ref data 3))))) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-display tag "~") (d-DirectivePut-standalone-data tag (format #f "'~A" data)) (d-DirectivePut-standalone-postfix tag (string-append "\\shape #'" (format #f "~A" data) " Tie ")))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/PaxHeaders.19168/ShapeTieHigher.xml0000644000000000000000000000013213135434036027775 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.453315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/ShapeTieHigher.xml0000644000175000017500000000066113135434036031651 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShapeTieHigher ShapeTieFlatter <_label>Higher/Lower <_tooltip>Moves the next tie higher/lower by the amount given from the current position. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/PaxHeaders.19168/TieShape.xml0000644000000000000000000000013213135434036026646 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.453315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/TieShape.xml0000644000175000017500000000062713135434036030524 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TieShape ShapeTieFlatter <_label>Tie Shape <_tooltip>Gives a choice of modifications to make to the following tie. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/PaxHeaders.19168/ShapeTieWider.scm0000644000000000000000000000013213135434036027623 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.463315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/ShapeTieWider.scm0000644000175000017500000000251413135434036031476 0ustar00jjbenhamjjbenham00000000000000;;ShapeTieWider (let ((tag "TieShape")(amount 0.0)(data #f)(width #f)) (set! data (d-DirectiveGet-standalone-data tag)) (if data (begin (set! data (eval-string data)) (set! width (* 2 (car (list-ref data 3))))) (begin (set! data '((0 . 0) (0 . 0) (0 . 0) (0 . 0))))) (if (not width) (set! width 0.0)) (set! amount (number->string width)) (set! amount (d-GetUserInput (_ "Width of Tie") (_ "Give additional width (unit = staff line space):") amount)) (if (and amount (string->number amount)) (begin (set! amount (exact->inexact (/ (string->number amount) 2))) ;modify the (car (list-ref data 3)) to become amount ... (list-set! data 3 (cons amount (cdr (list-ref data 3)))) (list-set! data 0 (cons (- amount) (cdr (list-ref data 0)))) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-display tag "~") (d-DirectivePut-standalone-data tag (format #f "'~A" data)) (d-DirectivePut-standalone-postfix tag (string-append "\\shape #'" (format #f "~A" data) " Tie ")))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/PaxHeaders.19168/TieShape.scm0000644000000000000000000000013213135434036026630 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.463315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/TieShape.scm0000644000175000017500000000065513135434036030507 0ustar00jjbenhamjjbenham00000000000000;;;;TieShape (let ((tag "TieShape")) (define choice (RadioBoxMenu (cons (_ "Widen/Narrow") 'widen) (cons (_ "Flatten/Bend More") 'flatten) (cons (_ "Raise/Lower") 'raise) (cons (_ "Advanced") 'advanced))) (case choice ((widen) (d-ShapeTieWider)) ((raise) (d-ShapeTieHigher)) ((flatten) (d-ShapeTieFlatter)) ((advanced) (d-DirectiveTextEdit-standalone tag))))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/PaxHeaders.19168/ShapeTieFlatter.xm0000644000000000000000000000013213135434036030014 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.463315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/ShapeTieFlatter.xml0000644000175000017500000000075513135434036032050 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShapeTieFlatter ToggleTie <_label>Flatter/More Curved <_tooltip>Makes the next tie more or less curved depending on the value given. The change is relative to the current shape, not the default shape. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/PaxHeaders.19168/ShapeTieWider.xml0000644000000000000000000000013213135434036027641 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.463315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/ShapeTieWider.xml0000644000175000017500000000071313135434036031513 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShapeTieWider ShapeTieHigher <_label>Widen/Make Narrower <_tooltip>Makes the next tie wider/narrower by the amount given. The change is relative to the default value. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/PaxHeaders.19168/ShapeTieFlatter.sc0000644000000000000000000000013213135434036027775 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.463315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/Shape/ShapeTieFlatter.scm0000644000175000017500000000230013135434036032016 0ustar00jjbenhamjjbenham00000000000000;;ShapeTieFlatter (let ((tag "TieShape")(amount "0.2")(data #f)(height #f)) (set! data (d-DirectiveGet-standalone-data tag)) (if data (begin (set! data (eval-string data))) (begin (set! data '((0 . 0) (0 . 0) (0 . 0) (0 . 0))))) (set! amount (d-GetUserInput (_ "Convexity of Tie") (_ "Give extra to flatten by (+/-):") amount)) (if (and amount (string->number amount)) (begin (set! amount (string->number amount)) ;modify middle y offsets by the amount (list-set! data 1 (cons (car (list-ref data 1)) (+ amount (cdr (list-ref data 1))))) (list-set! data 2 (cons (car (list-ref data 2)) (+ amount (cdr (list-ref data 2))))) (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-display tag "~") (d-DirectivePut-standalone-data tag (format #f "'~A" data)) (d-DirectivePut-standalone-postfix tag (string-append "\\shape #'" (format #f "~A" data) " Tie ")))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/ToggleTieDown.scm0000644000000000000000000000013213135434036026601 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.483315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/ToggleTieDown.scm0000644000175000017500000000042713135434036030455 0ustar00jjbenhamjjbenham00000000000000;;ToggleTieDown (let ((tag "Tie")) (if (d-IsTied) (begin (d-DirectiveDelete-chord tag) (d-ToggleTie)) (begin (d-ToggleTie) (d-DirectivePut-chord-postfix tag "_") (d-DirectivePut-chord-graphic tag "\n_ Denemo 30"))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/PaxHeaders.19168/ConvertIncorrectSlursToT0000644000000000000000000000013213135434036030256 xustar0030 mtime=1500919838.016648472 30 atime=1500919927.483315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TiedNotes/ConvertIncorrectSlursToTies.scm0000644000175000017500000000155113135434036033413 0ustar00jjbenhamjjbenham00000000000000;;;ConvertIncorrectSlursToTies (d-PushPosition) (let ((note #f)) (define (do-staff) (d-MoveToBeginning) (let loop () (set! note (d-GetNoteName)) (if (and note (d-IsSlurStart)) (let ((nextnote #f)) (d-NextChord) (set! nextnote (d-GetNoteName)) (if (and (d-IsSlurEnd) nextnote (equal? note nextnote)) (begin (d-ToggleEndSlur) (d-PrevChord) (d-ToggleBeginSlur) (d-ToggleTie))))) (if (d-NextChord) (loop)))) (define (do-movement) (while (d-StaffUp)) (do-staff) (while (d-StaffDown) (do-staff))) (while (d-PreviousMovement)) (do-movement) (while (d-NextMovement) (do-movement))) (d-PopPosition)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/EditNote0000644000000000000000000000013213135434150023117 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/0000755000175000017500000000000013135434150025045 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/RemoveDotSelectionSwitche0000644000000000000000000000013213135434035030222 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.483315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/RemoveDotSelectionSwitcher.scm0000644000175000017500000000005213135434035033033 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-RemoveDot) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/RemoveDotSelectionSwitche0000644000000000000000000000013213135434035030222 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.493315138 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/RemoveDotSelectionSwitcher.xml0000644000175000017500000000060213135434035033052 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RemoveDotSelectionSwitcher <_label>Remove Dot <_tooltip>Remove one dot for each note in the selection or single note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/ReminderAccidental.xml0000644000000000000000000000013213135434035027435 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.493315138 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/ReminderAccidental.xml0000644000175000017500000000054313135434035031310 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ReminderAccidental <_label>Reminder Accidental <_tooltip>Prints the accidental in (). denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/FlattenNote.xml0000644000000000000000000000013213135434035026143 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.493315138 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/FlattenNote.xml0000644000175000017500000000065113135434035030016 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Flatten FlattenNote <_label>Flatten or Append Flattened <_tooltip>Flatten note at cursor, or if appending flatten next note entered. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/ReminderAccidental.scm0000644000000000000000000000013213135434035027417 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.493315138 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/ReminderAccidental.scm0000644000175000017500000000041113135434035031264 0ustar00jjbenhamjjbenham00000000000000;;;ReminderAccidental (if (d-DirectiveGet-note-postfix "WarnAccidental") (d-DirectiveDelete-note "WarnAccidental") (begin (d-DirectivePut-note-postfix "WarnAccidental" "?") (d-DirectivePrioritizeTag-note "WarnAccidental"))) (d-RefreshDisplay) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/SuggestFlat.scm0000644000000000000000000000013213135434035026132 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.493315138 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/SuggestFlat.scm0000644000175000017500000000031113135434035027776 0ustar00jjbenhamjjbenham00000000000000(d-DirectivePut-chord-postfix "SuggestedAccidental" "^\\markup \\flat") (d-DirectivePut-chord-gy "SuggestedAccidental" -100) (d-DirectivePut-chord-graphic "SuggestedAccidental" " \xE2\x99\xAD Sans 30")denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/HideAccidental.scm0000644000000000000000000000013213135434035026523 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.503315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/HideAccidental.scm0000644000175000017500000000034413135434035030375 0ustar00jjbenhamjjbenham00000000000000(let ((tag "HideAccidental")) (if (d-Directive-note? tag) (d-DirectiveDelete-note tag) (begin (d-DirectivePut-note-prefix tag "\\tweak Accidental #'stencil ##f ") (d-DirectivePut-note-display tag " x")))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/CautionaryAccidental.xml0000644000000000000000000000013213135434035030006 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.503315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/CautionaryAccidental.xml0000644000175000017500000000057313135434035031664 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CautionaryAccidental <_label>Cautionary Accidental <_tooltip>Forces the accidental on the note to be printed. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/SuggestFlat.xml0000644000000000000000000000013213135434035026150 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.503315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/SuggestFlat.xml0000644000175000017500000000056713135434035030031 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SuggestSharp SuggestFlat <_label>Suggest Flat <_tooltip>Prints flat sign over note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/CautionaryAccidental.scm0000644000000000000000000000013213135434035027770 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.503315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/CautionaryAccidental.scm0000644000175000017500000000041513135434035031641 0ustar00jjbenhamjjbenham00000000000000;;;CautionaryAccidental (if (d-DirectiveGet-note-postfix "WarnAccidental") (d-DirectiveDelete-note "WarnAccidental") (begin (d-DirectivePut-note-postfix "WarnAccidental" "!") (d-DirectivePrioritizeTag-note "WarnAccidental"))) (d-SetSaved #f) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/AddDotSelectionSwitcher.s0000644000000000000000000000013213135434035030100 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.503315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/AddDotSelectionSwitcher.scm0000644000175000017500000000005013135434035032264 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-AddDot) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/SharpenNote.xml0000644000000000000000000000013213135434035026146 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.516648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/SharpenNote.xml0000644000175000017500000000066213135434035030023 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Sharpen SharpenNote <_label>Sharpen or Append Sharpened <_tooltip>Sharpens the note at the cursor, or if appending sharpen next entered note. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/Ficta.scm0000644000000000000000000000013213135434035024730 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.516648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/Ficta.scm0000644000175000017500000000062213135434035026601 0ustar00jjbenhamjjbenham00000000000000;;;Ficta (let ((tag "Ficta")) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-prefix tag "\\once \\set suggestAccidentals = ##t") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-minpixels "Ficta" 20) (d-DirectivePut-chord-display tag "Ficta"))) (d-RefreshDisplay) (d-SetSaved #f))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/ChangeNoteEnharmonicUp.sc0000644000000000000000000000013213135434035030051 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.516648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/ChangeNoteEnharmonicUp.scm0000644000175000017500000000154513135434035032104 0ustar00jjbenhamjjbenham00000000000000;ChangeNoteEnharmonicUp ;; This script switches through enharmonic variants of the same in the direction of higher diatonic base notes (if (Note?) (if (not (Chord?)) (d-ChangeEnharmonicUp) (let ((target (d-GetNoteAtCursor))) (define old (ANS::GetChordNotes)) (define (proc ansNote thetarget) (if (eq? thetarget ansNote) (cond ((= (ANS::GetHalfToneDistanceFromC ansNote) (ANS::GetHalfToneDistanceFromC (+ ansNote 40 ))) (+ ansNote 40 )) ; special rule for irregular notes ((= (ANS::GetHalfToneDistanceFromC ansNote) (ANS::GetHalfToneDistanceFromC (+ ansNote 30 ))) (+ ansNote 30)) ; all other notes (else ansNote)) ansNote)) ; else just stay on the same note ;body (if target (set! target (ANS::Ly2Ans (string->symbol target)))) (ANS::ChangeChordNotes (map (lambda (x) (proc x target)) old))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/AddDotSelectionSwitcher.x0000644000000000000000000000013213135434035030105 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.516648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/AddDotSelectionSwitcher.xml0000644000175000017500000000051113135434035032304 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddDotSelectionSwitcher <_label>Add Dot <_tooltip>Adds dots denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/ChangeNoteEnharmonicUp.xm0000644000000000000000000000013213135434035030070 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.516648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/ChangeNoteEnharmonicUp.xml0000644000175000017500000000075213135434035032121 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeNoteEnharmonicUp ChangeEnharmonicUp <_label>Change Note Enharmonic + <_tooltip>Changes the note at the cursor to its enharmonic equivalent one step higher. Use for individual notes in chords. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/SharpenNote.scm0000644000000000000000000000013213135434035026130 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.536648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/SharpenNote.scm0000644000175000017500000000010313135434035027773 0ustar00jjbenhamjjbenham00000000000000;;SharpenNote (if (d-IsAppending) (d-PendingSharpen) (d-Sharpen))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/HideAccidental.xml0000644000000000000000000000013213135434035026541 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.536648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/HideAccidental.xml0000644000175000017500000000066213135434035030416 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Ficta HideAccidental <_label>Hide Accidental <_tooltip>Hides the accidental on the note at the cursor on printing. Does not affect the pitch. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/Ficta.xml0000644000000000000000000000013213135434035024746 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.536648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/Ficta.xml0000644000175000017500000000123213135434035026615 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SuggestNatural Ficta <_label>Ficta Accidental <_tooltip>Prints the accidental above rather than before the note. In European music from before about 1600, singers were expected to chromatically alter notes at their own initiative according to certain rules. This is called musica ficta. In modern transcriptions, these accidentals are usually printed over the note. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/MoveNoteToCursor.scm0000644000000000000000000000013213135434035027137 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.536648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/MoveNoteToCursor.scm0000644000175000017500000000020113135434035031001 0ustar00jjbenhamjjbenham00000000000000(define cursor (string-upcase (d-GetCursorNote))) (define command (string-append "(d-ChangeTo" cursor ")")) (eval-string command)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/SuggestSharp.xml0000644000000000000000000000013213135434035026337 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.536648472 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/SuggestSharp.xml0000644000175000017500000000061013135434035030205 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ReminderAccidental SuggestSharp <_label>Suggest Sharp <_tooltip>Prints a sharp above the note/chord denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/FlattenNote.scm0000644000000000000000000000013213135434035026125 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.543315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/FlattenNote.scm0000644000175000017500000000010313135434035027770 0ustar00jjbenhamjjbenham00000000000000;;FlattenNote (if (d-IsAppending) (d-PendingFlatten) (d-Flatten))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/ChangeNoteEnharmonicDown.0000644000000000000000000000013213135434035030046 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.543315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/ChangeNoteEnharmonicDown.scm0000644000175000017500000000155213135434035032425 0ustar00jjbenhamjjbenham00000000000000;ChangeNoteEnharmonic Down ;; This script switches through enharmonic variants of the same in the direction of lower diatonic base notes (if (Note?) (if (not (Chord?)) (d-ChangeEnharmonicDown) (let ((target (d-GetNoteAtCursor))) (define old (ANS::GetChordNotes)) (define (proc ansNote thetarget) (if (eq? thetarget ansNote) (cond ((= (ANS::GetHalfToneDistanceFromC ansNote) (ANS::GetHalfToneDistanceFromC (- ansNote 40 ))) (- ansNote 40 )) ; special rule for irregular notes ((= (ANS::GetHalfToneDistanceFromC ansNote) (ANS::GetHalfToneDistanceFromC (- ansNote 30 ))) (- ansNote 30)) ; all other notes (else ansNote)) ansNote)) ; else just stay on the same note ;body (if target (set! target (ANS::Ly2Ans (string->symbol target)))) (ANS::ChangeChordNotes (map (lambda (x) (proc x target)) old))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/ChangeNoteEnharmonicDown.0000644000000000000000000000013213135434035030046 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.543315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/ChangeNoteEnharmonicDown.xml0000644000175000017500000000075513135434035032447 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeNoteEnharmonicDown ChangeEnharmonicDown <_label>Change Note Enharmonic - <_tooltip>Changes the note at the cursor to its enharmonic equivalent one step lower. Use for individual notes in chords. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/MoveNoteToCursor.xml0000644000000000000000000000013213135434035027155 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.543315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/MoveNoteToCursor.xml0000644000175000017500000000054413135434035031031 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MoveNoteToCursor <_label>To Cursor <_tooltip>Moves the nearest note to join the cursor denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/SuggestNatural.xml0000644000000000000000000000013213135434035026670 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.543315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/SuggestNatural.xml0000644000175000017500000000061613135434035030544 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SuggestFlat SuggestNatural <_label>Suggest Natural <_tooltip>Prints a natural over the note at the cursor denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/SuggestSharp.scm0000644000000000000000000000013213135434035026321 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.553315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/SuggestSharp.scm0000644000175000017500000000031213135434035030166 0ustar00jjbenhamjjbenham00000000000000(d-DirectivePut-chord-postfix "SuggestedAccidental" "^\\markup \\sharp") (d-DirectivePut-chord-gy "SuggestedAccidental" -100) (d-DirectivePut-chord-graphic "SuggestedAccidental" " \xE2\x99\xAF Sans 30")denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/PaxHeaders.19168/SuggestNatural.scm0000644000000000000000000000013213135434035026652 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.553315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/EditNote/SuggestNatural.scm0000644000175000017500000000031413135434035030521 0ustar00jjbenhamjjbenham00000000000000(d-DirectivePut-chord-postfix "SuggestedAccidental" "^\\markup \\natural") (d-DirectivePut-chord-gy "SuggestedAccidental" -100) (d-DirectivePut-chord-graphic "SuggestedAccidental" " \xE2\x99\xAE Sans 30")denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/NoteheadSizes0000644000000000000000000000013213135434150024151 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/0000755000175000017500000000000013135434150026077 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/PaxHeaders.19168/NormalSizeNotehead.s0000644000000000000000000000013213135434036030150 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.553315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/NormalSizeNotehead.scm0000644000175000017500000000010513135434036032335 0ustar00jjbenhamjjbenham00000000000000(d-InsertLilyDirective "directive=\\normalsize\0display=NormalSize") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/PaxHeaders.19168/TinyNotehead.scm0000644000000000000000000000013213135434036027330 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.553315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/TinyNotehead.scm0000644000175000017500000000010213135434036031172 0ustar00jjbenhamjjbenham00000000000000(d-InsertLilyDirective "directive=\\tiny\0display=TinyNoteheads") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/PaxHeaders.19168/NormalSizeNotehead.x0000644000000000000000000000013213135434036030155 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.563315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/NormalSizeNotehead.xml0000644000175000017500000000055413135434036032363 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NormalSizeNotehead <_label>(Print) Normal Size <_tooltip>Prints out note heads in normal size denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/PaxHeaders.19168/SmallNotehead.xml0000644000000000000000000000013213135434036027473 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.563315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/SmallNotehead.xml0000644000175000017500000000054513135434036031350 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SmallNotehead <_label>(Print) Small Size <_tooltip>Prints out note heads in small size denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/PaxHeaders.19168/SmallNotehead.scm0000644000000000000000000000013213135434036027455 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.563315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/SmallNotehead.scm0000644000175000017500000000034513135434036031330 0ustar00jjbenhamjjbenham00000000000000;;;SmallNotehead (let ((tag "SmallNotehead")) (if (d-Directive-note? tag) (d-DirectiveDelete-note tag) (begin (d-DirectivePut-note-display tag "Small") (d-DirectivePut-note-prefix tag "\\small "))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/PaxHeaders.19168/TinyNotehead.xml0000644000000000000000000000013213135434036027346 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.563315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/NoteheadSizes/TinyNotehead.xml0000644000175000017500000000054113135434036031217 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TinyNotehead <_label>(Print) Tiny Size <_tooltip>Prints out note heads in tiny size denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/Tuplets0000644000000000000000000000013213135434150023044 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/0000755000175000017500000000000013135434150024772 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/TripletizeSlurred.xml0000644000000000000000000000013213135434036027342 xustar0030 mtime=1500919838.023315139 30 atime=1500919927.583315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/TripletizeSlurred.xml0000644000175000017500000000072113135434036031213 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Tripletize TripletizeSlurred <_label>Triplet-ize (Slurred) <_tooltip>Turns the note at or before the cursor into a triplet of the same total duration, slurring the triplet. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/ToggleTupletNumbering.xml0000644000000000000000000000013213135434036030134 xustar0030 mtime=1500919838.023315139 30 atime=1500919927.583315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/ToggleTupletNumbering.xml0000644000175000017500000000061213135434036032004 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTupletNumbering <_label>Tuplet Numbering On/Off <_tooltip>Control whether tuplet numbers will be printed over tuplets. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/StartTuplet.xml0000644000000000000000000000013213135434036026141 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.583315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/StartTuplet.xml0000644000175000017500000000111013135434036030003 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StartTriplet StartTuplet <_label>Start Arbitrary Tuplet <_tooltip>Asks for ratio of tuplet and then puts in a start for that. Use EndTuplet command after entering tuplet notes. Note that the Denemo display will not automatically group the tuplet, but it will print with expected beaming etc. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/CurvedTupletBrackets.xml0000644000000000000000000000013213135434036027753 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.583315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/CurvedTupletBrackets.xml0000644000175000017500000000111513135434036031622 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CurvedTupletBrackets TupletPosition <_label>Curved Tuplet Brackets (Off/On) <_tooltip>Tuplet brackets will have a curved shape (like a slur) with the tuplet number inside. Note these cannot be re-shaped like slurs, so turn tuplet brackets off and place slurs manually if you need to reshape them. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/TupletPosition.scm0000644000000000000000000000013213135434036026632 xustar0030 mtime=1500919838.023315139 30 atime=1500919927.583315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/TupletPosition.scm0000644000175000017500000000124713135434036030507 0ustar00jjbenhamjjbenham00000000000000;;;TupletPosition (let ((tag "TupletPosition")(choice (RadioBoxMenu (cons (_ "Up") (cons "UP " "â–²")) (cons (_ "Down") (cons "DOWN " "â–¼")) (cons (_ "Auto") (cons "'tuplet-number::calc-direction " "▼▲"))))) (if choice (begin (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-graphic tag (string-append "\n3" (cdr choice) "\nSerif\n20\n" DENEMO_WEIGHT_BOLD "\n" DENEMO_SLANT_ITALIC)) (d-DirectivePut-standalone-minpixels tag 30) (d-DirectivePut-standalone-postfix tag (string-append "\\once \\override TupletBracket #'direction = #" (car choice)))) (d-InfoDialog (_ "Cancelled"))) (d-SetSaved #f) (d-RefreshDisplay))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/Tripletize.scm0000644000000000000000000000013213135434036025763 xustar0030 mtime=1500919838.023315139 30 atime=1500919927.596648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/Tripletize.scm0000644000175000017500000000042613135434036027636 0ustar00jjbenhamjjbenham00000000000000;;;Tripletize (if (Appending?) (d-MoveCursorLeft)) (if (Note?) (begin (d-StartTriplet) (d-Diminish) (d-SetMark) (d-Copy) (d-Paste) (d-Paste) (d-MoveCursorRight) (d-EndTuplet)) (d-WarningDialog (_ "This command needs a note or chord to turn into a triplet"))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/ToggleTupletNumbering.scm0000644000000000000000000000013213135434036030116 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.596648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/ToggleTupletNumbering.scm0000644000175000017500000000225613135434036031774 0ustar00jjbenhamjjbenham00000000000000;;;tuplet numbering toggle (let ((current "")) (set! current (d-DirectiveGet-standalone-postfix "ToggleTupletNumbering")) (if (boolean? current) (begin (d-DirectivePut-standalone-minpixels "ToggleTupletNumbering" 20) (d-MoveCursorLeft) (set! current "\\override TupletNumber #'transparent = ##f ") (d-DirectivePut-standalone-postfix "ToggleTupletNumbering" "\\override TupletNumber #'transparent = ##f ") )) (if (equal? current "\\override TupletNumber #'transparent = ##t ") (begin (d-DirectivePut-standalone-postfix "ToggleTupletNumbering" "\\override TupletNumber #'transparent = ##f ") (d-DirectivePut-standalone-gx "ToggleTupletNumbering" 3) (d-DirectivePut-standalone-gy "ToggleTupletNumbering" -40) (d-DirectivePut-standalone-graphic "ToggleTupletNumbering" "StartTupletNumbering")) (begin (d-DirectivePut-standalone-postfix "ToggleTupletNumbering" "\\override TupletNumber #'transparent = ##t ") (d-DirectivePut-standalone-gx "ToggleTupletNumbering" 3) (d-DirectivePut-standalone-gy "ToggleTupletNumbering" -40) (d-DirectivePut-standalone-graphic "ToggleTupletNumbering" "StopTupletNumbering"))) ;; (d-MoveCursorRight) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/ToggleTupletBracketsIfBeam0000644000000000000000000000013213135434036030211 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.596648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/ToggleTupletBracketsIfBeamed.xml0000644000175000017500000000073413135434036033176 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTupletNumbering ToggleTupletBracketsIfBeamed <_label>Tuplet Brackets if not Beamed <_tooltip>Turns tuplet brackets off for beamed notes. Affects tuplets from the cursor onwards. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/NoTupletNumbers.xml0000644000000000000000000000013213135434036026754 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.596648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/NoTupletNumbers.xml0000644000175000017500000000056613135434036030634 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NoTupletNumbers <_label>No Tuplet Numbers <_tooltip>Stop the printing of tuplet numbers from this point. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/ToggleTripleting.scm0000644000000000000000000000013213135434036027113 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.606648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/ToggleTripleting.scm0000644000175000017500000000043413135434036030765 0ustar00jjbenhamjjbenham00000000000000;;;;ToggleTripleting (if ToggleTripleting::InsideTriplet (begin (d-PendingMidi 72) (d-StartTriplet)) (begin (d-PlayMidiNote 77 255 9 100) (d-EndTuplet))) (set! ToggleTripleting::InsideTriplet (not ToggleTripleting::InsideTriplet)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/CreateTripletSlurred.xml0000644000000000000000000000013213135434036027756 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.606648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/CreateTripletSlurred.xml0000644000175000017500000000101513135434036031624 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CreateTriplet CreateTripletSlurred <_label>Create Slurred Triplet <_tooltip>If a MIDI controller is active duplicates the current note twice making a triplet and slurring all three notes, otherwise same as Toggle Tripleting command. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/CreateTriplet.xml0000644000000000000000000000013213135434036026415 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.606648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/CreateTriplet.xml0000644000175000017500000000100413135434036030261 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTupletBracketsIfBeamed CreateTriplet <_label>Create Triplet <_tooltip>If a MIDI controller is active takes the current note and appends two more making all three a triplet, otherwise same as Toggle Tripleting command. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/StartTuplet.scm0000644000000000000000000000013213135434036026123 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.606648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/StartTuplet.scm0000644000175000017500000000141313135434036027773 0ustar00jjbenhamjjbenham00000000000000;;StartTuplet (let ((top #f) (bottom #f) (directiveText #f)) (if StartTuplet::params (set! directiveText StartTuplet::params) (begin (set! top (d-GetUserInput (_ "Enter tuplet numerator ") (_ "Enter the fraction to multiply the duration by,\nnumerator first. E.g., for triplets, enter 2, then 3. \nNumerator:") "2")) (if top (begin (set! bottom (d-GetUserInput (_ "Enter tuplet denominator") (_ "Enter the fraction's denominator:") "3" )) (if bottom (set! directiveText (string-append top "/" bottom ))))))) (if directiveText (begin (if (not (d-GetTuplet)) (d-StartTriplet)) (if (not (d-GetTuplet)) (d-MoveCursorLeft)) (d-SetTuplet directiveText) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/TupletPosition.xml0000644000000000000000000000013213135434036026650 xustar0030 mtime=1500919838.023315139 30 atime=1500919927.616648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/TupletPosition.xml0000644000175000017500000000066713135434036030532 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TupletPosition ToggleTupletNumbering <_label>Tuplet Position <_tooltip>Sets the positioning of the following tuplet (up/down/auto) to your choice. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/ToggleTripleting.xml0000644000000000000000000000013213135434036027131 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.616648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/ToggleTripleting.xml0000644000175000017500000000065613135434036031011 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTupletNumbering ToggleTripleting <_label>Toggle Triplet Entry (Off/On) <_tooltip>Inserts a start triplet or end tuplet alternately. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/ToggleTupletBrackets.scm0000644000000000000000000000013213135434036027726 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.616648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/ToggleTupletBrackets.scm0000644000175000017500000000172713135434036031606 0ustar00jjbenhamjjbenham00000000000000;;;tuplet Brackets toggle (let ((current "")) (set! current (d-DirectiveGet-standalone-postfix "ToggleTupletBrackets")) (if (boolean? current) (begin (d-DirectivePut-standalone-minpixels "ToggleTupletBrackets" 20) (d-MoveCursorLeft) (set! current "\\override TupletBracket #'bracket-visibility = ##f") (d-DirectivePut-standalone-postfix "ToggleTupletBrackets" "\\override TupletBracket #'bracket-visibility = ##f") )) (if (equal? current "\\override TupletBracket #'bracket-visibility = ##t ") (begin (d-DirectivePut-standalone-postfix "ToggleTupletBrackets" "\\override TupletBracket #'bracket-visibility = ##f ") (d-DirectivePut-standalone-graphic "ToggleTupletBrackets" "StartTupletBrackets")) (begin (d-DirectivePut-standalone-postfix "ToggleTupletBrackets" "\\override TupletBracket #'bracket-visibility = ##t ") (d-DirectivePut-standalone-graphic "ToggleTupletBrackets" "StopTupletBrackets"))) ;; (d-MoveCursorRight) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/Tripletize.xml0000644000000000000000000000013213135434036026001 xustar0030 mtime=1500919838.023315139 30 atime=1500919927.616648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/Tripletize.xml0000644000175000017500000000067313135434036027660 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTripleting Tripletize <_label>Triplet-ize <_tooltip>Turns the note on or before the cursor into a triplet of notes with the same total duration. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/CreateTriplet.scm0000644000000000000000000000013213135434036026377 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.616648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/CreateTriplet.scm0000644000175000017500000000143213135434036030250 0ustar00jjbenhamjjbenham00000000000000;;CreateTriplet (let ((nonprinting (MidiInput?))) (if (and nonprinting (Appending?)) (begin (d-MoveCursorLeft) (if (Music?) (let ((duration (d-GetNoteBaseDuration))) (d-StartTriplet) (d-MoveCursorRight) (eval-string (string-append "(d-" (number->string duration) ")")) (if (and nonprinting (not (d-GetMarkedMidiNote))) (d-SetNonprinting)) (eval-string (string-append "(d-" (number->string duration) ")")) (if (and nonprinting (not (d-GetMarkedMidiNote))) (d-SetNonprinting)) (d-EndTuplet)) (begin (d-MoveCursorRight) (d-ToggleTripleting)))) (d-ToggleTripleting))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/TupletBrackets.xml0000644000000000000000000000013213135434036026602 xustar0030 mtime=1500919838.023315139 30 atime=1500919927.643315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/TupletBrackets.xml0000644000175000017500000000071013135434036030451 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TupletBrackets ToggleTupletBracketsIfBeamed <_label>Tuplet Brackets <_tooltip>Choose whether tuplets should have brackets. Affects tuplets from the cursor onwards. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/ToggleTupletBracketsIfBeam0000644000000000000000000000013213135434036030211 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.643315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/ToggleTupletBracketsIfBeamed.scm0000644000175000017500000000102513135434036033152 0ustar00jjbenhamjjbenham00000000000000;;;ToggleTupletBracketsfBeamed (let ((tag "TupletBrackets")) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons tag "\\override TupletBracket #'bracket-visibility = #'if-no-beam") #f "\n[x\nDenemo\n24") (d-DirectivePut-standalone-gy tag -44) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/NoTupletNumbers.scm0000644000000000000000000000013213135434036026736 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.643315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/NoTupletNumbers.scm0000644000175000017500000000014313135434036030605 0ustar00jjbenhamjjbenham00000000000000(d-DirectivePut-standalone-postfix "NoTupletNumbers" "\\override TupletNumber #'transparent = ##t")denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/init.scm0000644000000000000000000000013213135434036024573 xustar0030 mtime=1500919838.023315139 30 atime=1500919927.643315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/init.scm0000644000175000017500000000006113135434036026441 0ustar00jjbenhamjjbenham00000000000000(define-once ToggleTripleting::InsideTriplet #t) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/CurvedTupletBrackets.scm0000644000000000000000000000013213135434036027735 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.653315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/CurvedTupletBrackets.scm0000644000175000017500000000462213135434036031612 0ustar00jjbenhamjjbenham00000000000000;;;;CurvedTupletBrackets (d-LilyPondDefinition (cons "tupletBracketToSlur" "{ % Use slur-stencil \\override TupletBracket.stencil = #ly:slur::print %% Use 'thickness from Slur \\override TupletBracket.thickness = #1.2 %% 'control-points need to be set \\override TupletBracket.control-points = #(lambda (grob) (let* ((x-pos (ly:grob-property grob 'X-positions)) (pos (ly:grob-property grob 'positions)) (x-ln (interval-length x-pos)) (dir (ly:grob-property grob 'direction)) ;; read out the height of the TupletBracket, maybe negative! (height (- (cdr pos) (car pos))) ;; height-corr is introduced because sometimes the shape of the ;; slur needs to be adjusted. ;; It is used in the 2nd/3rd control-point. ;; The value of 0.3 is found by trial and error (height-corr (* 0.3 dir height)) (edge-height (ly:grob-property grob 'edge-height '(0.7 . 0.7))) (pad 1.0)) (list ;; first cp (cons (+ (car x-pos) 0.5) (- (+ (* dir pad) (+ (car pos) (* -1 dir (car edge-height)))) (if (= dir -1) (if (> height 3) (/ dir 2.0) 0.0) (if (< height -3) (/ dir 2.0) 0.0)))) ;; second cp (cons (+ (car x-pos) (* x-ln 1/4)) (+ (* dir pad) (+ (car pos) (* dir (+ 0.5 height-corr))))) ;; third cp (cons (+ (car x-pos) (* x-ln 3/4)) (+ (* dir pad) (+ (cdr pos) (* dir (- 0.5 height-corr))))) ;; fourth cp (cons (- (cdr x-pos) 0.5) (+ (* dir pad) (+ (cdr pos) (* -1 dir (cdr edge-height))))) ))) \\override TupletBracket.staff-padding = #'() #(define (invert-direction x) (if (eq? UP (ly:tuplet-bracket::calc-direction x)) DOWN UP)) \\override TupletBracket.direction = #invert-direction }")) (let ((tag "CurvedTupletBrackets")) (if (d-Directive-score? tag) (begin (d-DirectiveDelete-score tag) (d-InfoDialog (_ "Square Tuplet Brackets re-instated"))) (begin (d-DirectivePut-score-prefix tag "\n\\layout { \\tupletBracketToSlur }\n") (d-InfoDialog (_ "Tuplet Brackets Curved")))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/TripletizeSlurred.scm0000644000000000000000000000013213135434036027324 xustar0030 mtime=1500919838.023315139 30 atime=1500919927.653315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/TripletizeSlurred.scm0000644000175000017500000000051213135434036031173 0ustar00jjbenhamjjbenham00000000000000;;;TripletizeSlurred (if (Appending?) (d-MoveCursorLeft)) (if (Note?) (begin (d-StartTriplet) (d-Diminish) (d-SetMark) (d-Copy) (d-ToggleBeginSlur) (d-MoveCursorRight) (d-Paste) (d-Paste) (d-ToggleEndSlur) (d-EndTuplet) ) (d-WarningDialog (_ "This command needs a note or chord to turn into a triplet"))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/CreateTripletSlurred.scm0000644000000000000000000000013213135434036027740 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.653315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/CreateTripletSlurred.scm0000644000175000017500000000160513135434036031613 0ustar00jjbenhamjjbenham00000000000000;;CreateTripletSlurred (let ((nonprinting (MidiInput?))) (if (and nonprinting (Appending?)) (begin (d-MoveCursorLeft) (if (Music?) (let ((duration (d-GetNoteBaseDuration))) (d-StartTriplet) (d-MoveCursorRight) (d-ToggleBeginSlur) (eval-string (string-append "(d-" (number->string duration) ")")) (if (and nonprinting (not (d-GetMarkedMidiNote))) (d-SetNonprinting)) (eval-string (string-append "(d-" (number->string duration) ")")) (if (and nonprinting (not (d-GetMarkedMidiNote))) (d-SetNonprinting)) (d-ToggleEndSlur) (d-PlayMidiNote 53 80 9 10) (d-EndTuplet)) (begin (d-MoveCursorRight) (d-ToggleTripleting)))) (d-ToggleTripleting))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/ToggleTupletBrackets.xml0000644000000000000000000000013213135434036027744 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.653315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/ToggleTupletBrackets.xml0000644000175000017500000000063113135434036031615 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTupletNumbering ToggleTupletBrackets <_label>Tuplet Brackets On/Off <_tooltip>Turns tuplet brackets off or on. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/PaxHeaders.19168/TupletBrackets.scm0000644000000000000000000000013213135434036026564 xustar0030 mtime=1500919838.023315139 30 atime=1500919927.663315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tuplets/TupletBrackets.scm0000644000175000017500000000102413135434036030432 0ustar00jjbenhamjjbenham00000000000000;;TupletBrackets (let ((tag "TupletBrackets")(choice (RadioBoxMenu (cons (_"No Brackets") "#f") (cons (_ "Always Brackets") "#t") (cons (_ "Bracket if not beamed") "'if-no-beam") ))) (if choice (begin (d-Directive-standalone tag) (StandAloneDirectiveProto (cons tag (string-append "\\override TupletBracket #'bracket-visibility = #" choice "")) #f "\n[\nDenemo\n24") (d-DirectivePut-standalone-gy tag -44) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight) (d-RefreshDisplay) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/DisplaceHorizontally.scm0000644000000000000000000000013213135434035026332 xustar0030 mtime=1500919837.996648472 30 atime=1500919927.663315139 30 ctime=1500919912.983315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/DisplaceHorizontally.scm0000644000175000017500000000102613135434035030202 0ustar00jjbenhamjjbenham00000000000000;;DisplaceHorizontally (let* ((tag "DisplaceHorizontally") (X (d-DirectiveGet-standalone-data tag))) (if (not X) (set! X "0.5")) (set! X (d-GetUserInput (_ "Horizontal shift") (_ "Give horizontal shift required") X)) (if X (begin (StandAloneDirectiveProto (cons tag (string-append "\\once \\override NoteColumn.X-offset = #" X " " )) #f "\n⬌\nDenemo\n24" X #f X ) (d-DirectivePut-standalone-ty tag -20) (d-MoveCursorRight) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/TremoloUpward.xml0000644000000000000000000000013213135434036025012 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.663315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/TremoloUpward.xml0000644000175000017500000000060713135434036026666 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TremoloUpward TremoloDownward <_label>Tremolo Upward <_tooltip>Slopes tremolo mark on stem upward. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/Transpose0000644000000000000000000000013213135434150023362 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/0000755000175000017500000000000013135434150025310 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealDialogUp.scm0000644000000000000000000000013213135434036027454 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.663315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealDialogUp.scm0000644000175000017500000000065613135434036031334 0ustar00jjbenhamjjbenham00000000000000;;;ShiftRealDialogUp (let ((interval (AskForInterval))) (SingleAndSelectionSwitcher (lambda () (if (Note?) (begin (ANS::ChangeChordNotes (map (lambda (x) (ANS::IntervalCalcUp x interval)) (ANS::GetChordNotes))) (if (d-Directive-chord? "ChordName") (d-DirectivePut-chord-display "ChordName" (DenemoGetNoteAndAccidental)))) #f)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftDown.xml0000644000000000000000000000013213135434036026071 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.676648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftDown.xml0000644000175000017500000000065613135434036027751 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShiftUp ShiftDown <_label>Tonal step down <_tooltip>Transpose/shift the cursor note or selection one step down, stay in the keysignature. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftUp.xml0000644000000000000000000000013213135434036025546 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.676648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftUp.xml0000644000175000017500000000061113135434036027415 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShiftUp <_label>Tonal step up <_tooltip>Transpose/shift the cursor note or selection one step up, stay in the keysignature. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftDown.scm0000644000000000000000000000013213135434036026053 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.676648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftDown.scm0000644000175000017500000000033413135434036027724 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher (lambda () (ShiftProto ANS::CalculateDiatonicStepDown) (if (d-Directive-chord? "ChordName") (d-DirectivePut-chord-display "ChordName" (DenemoGetNoteAndAccidental))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealOctaveDown.scm0000644000000000000000000000013213135434036030021 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.676648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealOctaveDown.scm0000644000175000017500000000030613135434036031671 0ustar00jjbenhamjjbenham00000000000000;in reality this is not shift but transpose. But there are too many functions with the name transpose already... (SingleAndSelectionSwitcher (lambda () (ShiftProto ANS::CalculateRealOctaveDown))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealWholeDown.xml0000644000000000000000000000013213135434036027674 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.676648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealWholeDown.xml0000644000175000017500000000065313135434036031551 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShiftRealWholeUp ShiftRealWholeDown <_label>Whole tone down <_tooltip>Transpose/shift the cursor note or selection one whole tone down denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealOctaveDown.xml0000644000000000000000000000013213135434036030037 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.699981806 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealOctaveDown.xml0000644000175000017500000000066013135434036031712 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShiftRealOctaveDown <_label>Octave Down <_tooltip>Shifts current notes/selection down one octave while preserving accidental status. This means real transposition denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftUp.scm0000644000000000000000000000013213135434036025530 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.699981806 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftUp.scm0000644000175000017500000000033213135434036027377 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher (lambda () (ShiftProto ANS::CalculateDiatonicStepUp) (if (d-Directive-chord? "ChordName") (d-DirectivePut-chord-display "ChordName" (DenemoGetNoteAndAccidental))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealHalfUp.scm0000644000000000000000000000013213135434036027127 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.699981806 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealHalfUp.scm0000644000175000017500000000033413135434036031000 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher (lambda () (ShiftProto ANS::CalculateHalfRealStepUp) (if (d-Directive-chord? "ChordName") (d-DirectivePut-chord-display "ChordName" (DenemoGetNoteAndAccidental))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealDialogDown.scm0000644000000000000000000000013213135434036027777 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.699981806 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealDialogDown.scm0000644000175000017500000000066013135434036031652 0ustar00jjbenhamjjbenham00000000000000;;;ShiftRealDialogDown (let ((interval (AskForInterval))) (SingleAndSelectionSwitcher (lambda () (if (Note?) (begin (ANS::ChangeChordNotes (map (lambda (x) (ANS::IntervalCalcDown x interval)) (ANS::GetChordNotes))) (if (d-Directive-chord? "ChordName") (d-DirectivePut-chord-display "ChordName" (DenemoGetNoteAndAccidental)))) #f)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealHalfUp.xml0000644000000000000000000000013213135434036027145 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.699981806 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealHalfUp.xml0000644000175000017500000000064413135434036031022 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShiftRealWholeDown ShiftRealHalfUp <_label>Half tone up <_tooltip>Transpose/shift the cursor note or selection one half tone up denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealHalfDown.xml0000644000000000000000000000013213135434036027470 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.706648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealHalfDown.xml0000644000175000017500000000064713135434036031350 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShiftRealHalfUp ShiftRealHalfDown <_label>Half tone down <_tooltip>Transpose/shift the cursor note or selection one half tone down denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealOctaveUp.scm0000644000000000000000000000013213135434036027476 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.706648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealOctaveUp.scm0000644000175000017500000000030413135434036031344 0ustar00jjbenhamjjbenham00000000000000;in reality this is not shift but transpose. But there are too many functions with the name transpose already... (SingleAndSelectionSwitcher (lambda () (ShiftProto ANS::CalculateRealOctaveUp))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealDialogDown.xml0000644000000000000000000000013213135434036030015 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.706648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealDialogDown.xml0000644000175000017500000000076113135434036031672 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShiftRealDialogUp ShiftRealDialogDown <_label>Arbitrary transpose down <_tooltip>Transpose/shift the cursor note or selection an arbitrary number of tones down. User can specify interval through a dialog. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealHalfDown.scm0000644000000000000000000000013213135434036027452 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.706648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealHalfDown.scm0000644000175000017500000000033613135434036031325 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher (lambda () (ShiftProto ANS::CalculateHalfRealStepDown) (if (d-Directive-chord? "ChordName") (d-DirectivePut-chord-display "ChordName" (DenemoGetNoteAndAccidental))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealDialogUp.xml0000644000000000000000000000013213135434036027472 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.706648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealDialogUp.xml0000644000175000017500000000075313135434036031350 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShiftRealHalfDown ShiftRealDialogUp <_label>Arbitrary transpose up <_tooltip>Transpose/shift the cursor note or selection an arbitrary number of tones up. User can specify interval through a dialog. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealOctaveUp.xml0000644000000000000000000000013213135434036027514 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.716648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealOctaveUp.xml0000644000175000017500000000065213135434036031370 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShiftRealOctaveUp <_label>Octave Up <_tooltip>Shifts current notes/selection up one octave while preserving accidental status. This means real transposition denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealWholeDown.scm0000644000000000000000000000013213135434036027656 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.716648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealWholeDown.scm0000644000175000017500000000033713135434036031532 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher (lambda () (ShiftProto ANS::CalculateWholeRealStepDown) (if (d-Directive-chord? "ChordName") (d-DirectivePut-chord-display "ChordName" (DenemoGetNoteAndAccidental))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealWholeUp.scm0000644000000000000000000000013213135434036027333 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.716648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealWholeUp.scm0000644000175000017500000000033513135434036031205 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher (lambda () (ShiftProto ANS::CalculateWholeRealStepUp) (if (d-Directive-chord? "ChordName") (d-DirectivePut-chord-display "ChordName" (DenemoGetNoteAndAccidental))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/PaxHeaders.19168/ShiftRealWholeUp.xml0000644000000000000000000000013213135434036027351 xustar0030 mtime=1500919838.019981806 30 atime=1500919927.716648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Transpose/ShiftRealWholeUp.xml0000644000175000017500000000057513135434036031231 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShiftRealWholeUp <_label>Whole tone up <_tooltip>Transpose/shift the cursor note or selection one whole tone up denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/ParenthesizeNote.xml0000644000000000000000000000013213135434036025475 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.716648472 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ParenthesizeNote.xml0000644000175000017500000000056613135434036027355 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ParenthesizeNote <_label>Parenthesize Note <_tooltip>Enclose the note at the cursor in ( ) when printed. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/Markings0000644000000000000000000000013213135434036023162 xustar0030 mtime=1500919838.009981805 30 atime=1500919914.543315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/0000755000175000017500000000000013135434036025110 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/PaxHeaders.19168/Articulations0000644000000000000000000000013213135434150026000 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/0000755000175000017500000000000013135434150027726 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/FlageoletSe0000644000000000000000000000031213135434035030174 xustar00112 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/FlageoletSelectionSwitcher.scm 30 mtime=1500919837.999981805 30 atime=1500919927.729981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/FlageoletSelectionSwitcher.s0000644000175000017500000000006113135434035035372 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleFlageolet) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleAccen0000644000000000000000000000013213135434035030155 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.729981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleAccent.scm0000644000175000017500000000015113135434035032770 0ustar00jjbenhamjjbenham00000000000000;;;ToggleAccent (ChordAnnotation "ToggleAccent" "\\accent" ToggleAccent::params LG-Accent) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/Signumcongr0000644000000000000000000000032313135434035030277 xustar00121 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/SignumcongruentiaeSelectionSwitcher.xml 30 mtime=1500919837.999981805 30 atime=1500919927.729981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/SignumcongruentiaeSelectionS0000644000175000017500000000062113135434035035511 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SignumcongruentiaeSelectionSwitcher <_label>Signumcongruentiae (Off/On) <_tooltip>Mark/Unmark the selected notes signumcongruentiae denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleLheel0000644000000000000000000000013213135434036030176 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.746648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleLheel.xml0000644000175000017500000000047013135434036032647 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS <_label>Lheel (Off/On) <_tooltip>Mark/Unmark the current note lheel denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleRtoe.0000644000000000000000000000013213135434036030134 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.746648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleRtoe.xml0000644000175000017500000000046613135434036032534 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS <_label>Rtoe (Off/On) <_tooltip>Mark/Unmark the current note rtoe denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleDownB0000644000000000000000000000013213135434035030155 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.749981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleDownBow.xml0000644000175000017500000000060313135434035033172 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleUpBow ToggleDownBow <_label>DownBow (Off/On) <_tooltip>Mark/Unmark chord with a Down Bow denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/LtoeSelecti0000644000000000000000000000013213135434035030216 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.749981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/LtoeSelectionSwitcher.xml0000644000175000017500000000055413135434035034740 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LtoeSelectionSwitcher <_label>Ltoe (Off/On) <_tooltip>Marks/Unmaks the selection with the Ltoe denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/Signumcongr0000644000000000000000000000032313135434035030277 xustar00121 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/SignumcongruentiaeSelectionSwitcher.scm 30 mtime=1500919837.999981805 30 atime=1500919927.749981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/SignumcongruentiaeSelectionS0000644000175000017500000000007213135434035035511 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleSignumcongruentiae) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleStopp0000644000000000000000000000013213135434036030252 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.756648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleStopped.xml0000644000175000017500000000054413135434036033236 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleStopped <_label>Stopped (Off/On) <_tooltip>Mark/Unmark the current chord stopped denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleSignu0000644000000000000000000000013213135434036030232 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.756648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleSignumcongruentiae.xml0000644000175000017500000000060513135434036035464 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleSignumcongruentiae <_label>Signumcongruentiae (Off/On) <_tooltip>Mark/Unmark the current chord signumcongruentiae denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/PortatoSele0000644000000000000000000000013213135434035030243 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.756648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PortatoSelectionSwitcher.xml0000644000175000017500000000063213135434035035462 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TogglePortato PortatoSelectionSwitcher <_label>Portato (Off/On) <_tooltip>Marks/Unmaks the selection with the Portato denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleStacc0000644000000000000000000000013213135434036030202 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.756648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleStaccatissimo.scm0000644000175000017500000000021413135434036034402 0ustar00jjbenhamjjbenham00000000000000;;;ToggleStaccatissimo (ChordAnnotation "ToggleStaccatissimo" "\\staccatissimo" ToggleStaccatissimo::params LG-Staccatissimo) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleRheel0000644000000000000000000000013213135434036030204 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.756648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleRheel.xml0000644000175000017500000000047013135434036032655 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS <_label>Rheel (Off/On) <_tooltip>Mark/Unmark the current note rheel denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleStacc0000644000000000000000000000013213135434036030202 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.769981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleStaccato.scm0000644000175000017500000000016313135434036033340 0ustar00jjbenhamjjbenham00000000000000;;;ToggleStaccato (ChordAnnotation "ToggleStaccato" "\\staccato" ToggleStaccato::params LG-Staccato) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleVeryL0000644000000000000000000000013213135434036030206 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.769981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleVeryLongFermata.xml0000644000175000017500000000060313135434036034661 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleVeryLongFermata <_label>VeryLongFermata (Off/On) <_tooltip>Mark/Unmark the current chord with very long fermata denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/UpBowSelect0000644000000000000000000000013213135434036030177 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.769981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/UpBowSelectionSwitcher.xml0000644000175000017500000000064613135434036035074 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MarcatoSelectionSwitcher UpBowSelectionSwitcher <_label>UpBow (Off/On) <_tooltip>Mark/Unmark current selection or note with UpBow denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleHarmo0000644000000000000000000000013213135434036030213 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.769981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleHarmonic.xml0000644000175000017500000000060713135434036033360 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleDownBow ToggleHarmonic <_label>Harmonic (Off/On) <_tooltip>Mark/Unmark chord with a harmonic denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/StoppedSele0000644000000000000000000000013213135434035030231 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.769981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/StoppedSelectionSwitcher.scm0000644000175000017500000000005713135434035035433 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleStopped) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleFerma0000644000000000000000000000013213135434035030176 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.779981806 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleFermata.scm0000644000175000017500000000037713135434035033164 0ustar00jjbenhamjjbenham00000000000000;;;ToggleFermata (if (d-Directive-chord? "WholeMeasureRest") (ChordAnnotation "ToggleFermata" "\\fermataMarkup" ToggleFermata::params LG-Fermata) (ChordAnnotation "ToggleFermata" "\\fermata" ToggleFermata::params LG-Fermata)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleFerma0000644000000000000000000000013213135434035030176 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.779981806 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleFermata.xml0000644000175000017500000000061113135434035033171 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleStaccato ToggleFermata <_label>Fermata (Off/On) <_tooltip>Mark/Unmark the chord with a fermata denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/Tongue.xml0000644000000000000000000000013213135434036030043 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.779981806 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/Tongue.xml0000644000175000017500000000063713135434036031722 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Tongue ToggleStopped <_label>Tongue <_tooltip>Adds a tonguing indication, (a number of staccato dots) to the current note. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/StoppedSele0000644000000000000000000000013213135434035030231 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.779981806 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/StoppedSelectionSwitcher.xml0000644000175000017500000000056013135434035035450 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StoppedSelectionSwitcher <_label>Stopped (Off/On) <_tooltip>Mark/Unmark the selected notes stopped denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/DownbowSele0000644000000000000000000000013213135434035030232 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.779981806 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/DownbowSelectionSwitcher.xml0000644000175000017500000000063713135434035035456 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS UpBowSelectionSwitcher DownbowSelectionSwitcher <_label>DownBow (Off/On) <_tooltip>Mark/Unmark selection or current object denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/HarmonicSel0000644000000000000000000000031113135434035030205 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/HarmonicSelectionSwitcher.xml 30 mtime=1500919837.999981805 30 atime=1500919927.799981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/HarmonicSelectionSwitcher.xm0000644000175000017500000000066313135434035035422 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DownbowSelectionSwitcher HarmonicSelectionSwitcher <_label>Harmonic (Off/On) <_tooltip>Mark/Unmark current selection or object with a harmonic denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleLheel0000644000000000000000000000013213135434036030176 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.799981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleLheel.scm0000644000175000017500000000014413135434036032627 0ustar00jjbenhamjjbenham00000000000000;;;ToggleLheel (ChordAnnotation "ToggleLheel" "\\lheel" ToggleLheel::params LG-Lheel) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleFlage0000644000000000000000000000013213135434036030163 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.799981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleFlageolet.xml0000644000175000017500000000054513135434036033523 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleFlageolet <_label>Flageolet (Off/On) <_tooltip>Mark/Unmark chord with a Flageolet denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/Staccatissi0000644000000000000000000000031613135434035030260 xustar00116 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/StaccatissimoSelectionSwitcher.scm 30 mtime=1500919837.999981805 30 atime=1500919927.799981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/StaccatissimoSelectionSwitch0000644000175000017500000000006613135434035035513 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleStaccatissimo) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ThumbSelect0000644000000000000000000000013213135434035030221 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.799981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ThumbSelectionSwitcher.xml0000644000175000017500000000055713135434035035117 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ThumbSelectionSwitcher <_label>Thumb (Off/On) <_tooltip>Marks/Unmaks the selection with the Thumb denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/FermataSele0000644000000000000000000000013213135434035030172 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.809981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/FermataSelectionSwitcher.xml0000644000175000017500000000064413135434035035414 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleAccent FermataSelectionSwitcher <_label>Fermata (Off/On) <_tooltip>Mark/Unmark current selection or object with a fermata denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleThumb0000644000000000000000000000013213135434036030224 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.809981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleThumb.xml0000644000175000017500000000047113135434036032676 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS <_label>Thumb (Off/On) <_tooltip>Mark/Unmark the current chord thumb denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleArpeg0000644000000000000000000000013213135434035030202 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.809981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleArpeggio.scm0000644000175000017500000000032513135434035033333 0ustar00jjbenhamjjbenham00000000000000;;;ToggleArpeggio (ChordAnnotation "ToggleArpeggio" "\\arpeggio" ToggleArpeggio::params LG-Arpeggio) (if (d-Directive-chord? "ToggleArpeggio") (d-DirectivePut-chord-gx "ToggleArpeggio" -5))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/FermataSele0000644000000000000000000000013213135434035030172 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.809981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/FermataSelectionSwitcher.scm0000644000175000017500000000005713135434035035374 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleFermata) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/UpBowSelect0000644000000000000000000000013213135434036030177 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.809981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/UpBowSelectionSwitcher.scm0000644000175000017500000000005513135434036035050 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleUpBow) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleLongF0000644000000000000000000000013213135434036030152 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.819981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleLongFermata.xml0000644000175000017500000000056013135434036034015 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleLongFermata <_label>LongFermata (Off/On) <_tooltip>Mark/Unmark the current chord longfermata denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleAccen0000644000000000000000000000013213135434035030155 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.819981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleAccent.xml0000644000175000017500000000060213135434035033007 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Marcato ToggleAccent <_label>Accent (Off/On) <_tooltip>Mark/Unmark the current chord accented denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleVeryL0000644000000000000000000000013213135434036030206 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.819981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleVeryLongFermata.scm0000644000175000017500000000022013135434036034636 0ustar00jjbenhamjjbenham00000000000000;;;VeryLongFermata (ChordAnnotation "ToggleVeryLongFermata" "\\verylongfermata" ToggleVeryLongFermata::params LG-VeryLongFermata) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleStacc0000644000000000000000000000013213135434036030202 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.819981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleStaccatissimo.xml0000644000175000017500000000062313135434036034424 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleStaccato ToggleStaccatissimo <_label>Staccatissimo (Off/On) <_tooltip>Mark/Unmark chord as Staccatissimo denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleLtoe.0000644000000000000000000000013213135434036030126 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.819981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleLtoe.scm0000644000175000017500000000013113135434036032475 0ustar00jjbenhamjjbenham00000000000000;;;Ltoe (ChordAnnotation "ToggleLtoe" "\\ltoe" ToggleLtoe::params LG-Ltoe) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ThumbSelect0000644000000000000000000000013213135434035030221 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.829981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ThumbSelectionSwitcher.scm0000644000175000017500000000005613135434035035073 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleThumb ) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/MarcatoSele0000644000000000000000000000013213135434035030201 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.829981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/MarcatoSelectionSwitcher.xml0000644000175000017500000000062513135434035035422 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleFermata MarcatoSelectionSwitcher <_label>Marcato (Off/On) <_tooltip>Mark/Unmark the selected notes marcato denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/RheelSelect0000644000000000000000000000013213135434035030201 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.829981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/RheelSelectionSwitcher.xml0000644000175000017500000000055713135434035035077 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RheelSelectionSwitcher <_label>Rheel (Off/On) <_tooltip>Marks/Unmaks the selection with the Rheel denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleRtoe.0000644000000000000000000000013213135434036030134 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.829981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleRtoe.scm0000644000175000017500000000013713135434036032511 0ustar00jjbenhamjjbenham00000000000000;;;ToggleRtoe (ChordAnnotation "ToggleRtoe" "\\rtoe" ToggleRtoe::params LG-Rtoe) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleThumb0000644000000000000000000000013213135434036030224 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.829981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleThumb.scm0000644000175000017500000000014413135434036032655 0ustar00jjbenhamjjbenham00000000000000;;;ToggleThumb (ChordAnnotation "ToggleThumb" "\\thumb" ToggleThumb::params LG-Thumb) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleSignu0000644000000000000000000000013213135434036030232 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.856648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleSignumcongruentiae.scm0000644000175000017500000000024513135434036035446 0ustar00jjbenhamjjbenham00000000000000;;;ToggleSignumcongruentiae (ChordAnnotation "ToggleSignumcongruentiae" "\\signumcongruentiae" ToggleSignumcongruentiae::params LG-Signumcongruentiae) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/RtoeSelecti0000644000000000000000000000013213135434035030224 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.856648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/RtoeSelectionSwitcher.xml0000644000175000017500000000055413135434035034746 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RtoeSelectionSwitcher <_label>Rtoe (Off/On) <_tooltip>Marks/Unmaks the selection with the Rtoe denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/Articulatio0000644000000000000000000000013213135434035030262 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.856648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ArticulationOutsideSlur.scm0000644000175000017500000000053513135434035035300 0ustar00jjbenhamjjbenham00000000000000;;;ArticulationOutsideSlur (let ((tag "ArticulationOutsideSlur")) (d-SetSaved #f) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-prefix tag "\\once \\override Script.avoid-slur = #'outside ") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleTenut0000644000000000000000000000013213135434036030244 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.856648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleTenuto.scm0000644000175000017500000000015113135434036033052 0ustar00jjbenhamjjbenham00000000000000;;;ToggleTenuto (ChordAnnotation "ToggleTenuto" "\\tenuto" ToggleTenuto::params LG-Tenuto) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleShort0000644000000000000000000000013213135434036030244 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.856648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleShortFermata.scm0000644000175000017500000000020713135434036034175 0ustar00jjbenhamjjbenham00000000000000;;;ToggleShortFermata (ChordAnnotation "ToggleShortFermata" "\\shortfermata" ToggleShortFermata::params LG-ShortFermata) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleLtoe.0000644000000000000000000000013213135434036030126 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.866648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleLtoe.xml0000644000175000017500000000046613135434036032526 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS <_label>Ltoe (Off/On) <_tooltip>Mark/Unmark the current note ltoe denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/RtoeSelecti0000644000000000000000000000013213135434035030224 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.866648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/RtoeSelectionSwitcher.scm0000644000175000017500000000005513135434035034724 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleRtoe ) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/MarcatoSele0000644000000000000000000000013213135434035030201 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.866648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/MarcatoSelectionSwitcher.scm0000644000175000017500000000005713135434035035403 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleMarcato) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/HarmonicSel0000644000000000000000000000031113135434035030205 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/HarmonicSelectionSwitcher.scm 30 mtime=1500919837.999981805 30 atime=1500919927.866648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/HarmonicSelectionSwitcher.sc0000644000175000017500000000006013135434035035372 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleHarmonic) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/StaccatoSel0000644000000000000000000000031113135434035030206 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/StaccatoSelectionSwitcher.scm 30 mtime=1500919837.999981805 30 atime=1500919927.866648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/StaccatoSelectionSwitcher.sc0000644000175000017500000000006013135434035035373 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleStaccato) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/LtoeSelecti0000644000000000000000000000013213135434035030216 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.876648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/LtoeSelectionSwitcher.scm0000644000175000017500000000005513135434035034716 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleLtoe ) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleRheel0000644000000000000000000000013213135434036030204 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.876648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleRheel.scm0000644000175000017500000000014413135434036032635 0ustar00jjbenhamjjbenham00000000000000;;;ToggleRheel (ChordAnnotation "ToggleRheel" "\\rheel" ToggleRheel::params LG-Rheel) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/TenutoSelec0000644000000000000000000000013213135434035030234 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.876648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/TenutoSelectionSwitcher.scm0000644000175000017500000000005713135434035035273 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleTenuto ) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleFlage0000644000000000000000000000013213135434036030163 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.876648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleFlageolet.scm0000644000175000017500000000023213135434036033476 0ustar00jjbenhamjjbenham00000000000000;;;ToggleFlageolet (ChordAnnotation "ToggleFlageolet" "\\flageolet" ToggleFlageolet::params LG-Flageolet) ;(d-DirectivePut-chord-gy "Flageolet" 12) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/PortatoSele0000644000000000000000000000013213135434035030243 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.876648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PortatoSelectionSwitcher.scm0000644000175000017500000000006013135434035035437 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-TogglePortato ) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleLongF0000644000000000000000000000013213135434036030152 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.886648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleLongFermata.scm0000644000175000017500000000017413135434036034000 0ustar00jjbenhamjjbenham00000000000000;;;LongFermata (ChordAnnotation "ToggleLongFermata" "\\longfermata" ToggleLongFermata::params LG-LongFermata) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/AccentSelec0000644000000000000000000000013213135434035030153 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.886648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/AccentSelectionSwitcher.xml0000644000175000017500000000060013135434035035222 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleAccent AccentSelectionSwitcher <_label>Accent (Off/On) <_tooltip>Adds the > accent denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/Tongue.scm0000644000000000000000000000013213135434036030025 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.886648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/Tongue.scm0000644000175000017500000000307013135434036031676 0ustar00jjbenhamjjbenham00000000000000;;;;Tongue (d-LilyPondDefinition (cons "tongue" " #(define-music-function (parser location dots) (integer?) (let ((script (make-music 'ArticulationEvent 'articulation-type \"staccato\"))) (set! (ly:music-property script 'tweaks) (acons 'stencil (lambda (grob) (let ((stil (ly:script-interface::print grob))) (let loop ((count (1- dots)) (new-stil stil)) (if (> count 0) (loop (1- count) (ly:stencil-combine-at-edge new-stil X RIGHT stil 0.2)) (ly:stencil-aligned-to new-stil X CENTER))))) (ly:music-property script 'tweaks))) script)) ")) (let ((tag "Tongue")) (if (d-Directive-chord? tag) (begin (d-DirectiveDelete-chord tag) (d-InfoDialog (_ "Deleted"))) (let ((repeats (d-GetUserInput (_ "Tonguing Indication") (_ "Give number of dots required: ") "3"))) (if (and repeats (string->number repeats)) (let ((number (string->number repeats))) (if (and (positive? number) (< number 10)) (let ((text (make-string number #\.))) (d-DirectivePut-chord-prefix tag (string-append "-\\tongue #" repeats " ")) (d-DirectivePut-chord-display tag text)) (d-InfoDialog (_ "Cancelled")))) (d-InfoDialog (_ "Cancelled"))))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/StaccatoSel0000644000000000000000000000031113135434035030206 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/StaccatoSelectionSwitcher.xml 30 mtime=1500919837.999981805 30 atime=1500919927.886648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/StaccatoSelectionSwitcher.xm0000644000175000017500000000062513135434035035421 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleStaccato StaccatoSelectionSwitcher <_label>Staccato (Off/On) <_tooltip>Adds the staccato dot or removes it denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ArpeggioSel0000644000000000000000000000031113135434035030202 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ArpeggioSelectionSwitcher.xml 30 mtime=1500919837.999981805 30 atime=1500919927.886648472 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ArpeggioSelectionSwitcher.xm0000644000175000017500000000056313135434035035416 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ArpeggioSelectionSwitcher <_label>Arpeggio (Off/On) <_tooltip>Mark/Unmark the selected notes arpeggio denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/FlageoletSe0000644000000000000000000000031213135434035030174 xustar00112 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/FlageoletSelectionSwitcher.xml 30 mtime=1500919837.999981805 30 atime=1500919927.909981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/FlageoletSelectionSwitcher.x0000644000175000017500000000060613135434035035404 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FlageoletSelectionSwitcher <_label>Flageolet (Off/On) <_tooltip>Mark/Unmark current selection of object with a Flageolet denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleStopp0000644000000000000000000000013213135434036030252 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.909981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleStopped.scm0000644000175000017500000000015613135434036033217 0ustar00jjbenhamjjbenham00000000000000;;;ToggleStopped (ChordAnnotation "ToggleStopped" "\\stopped" ToggleStopped::params LG-Stopped) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/Staccatissi0000644000000000000000000000031613135434035030260 xustar00116 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/StaccatissimoSelectionSwitcher.xml 30 mtime=1500919837.999981805 30 atime=1500919927.909981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/StaccatissimoSelectionSwitch0000644000175000017500000000062613135434035035515 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleStaccatissimo StaccatissimoSelectionSwitcher <_label>Staccatissimo (Off/On) <_tooltip>Toggles Staccatissimo denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/TogglePorta0000644000000000000000000000013213135434036030232 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.909981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/TogglePortato.xml0000644000175000017500000000053413135434036033247 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TogglePortato <_label>Portato (Off/On) <_tooltip>Mark/Unmark the chord Portato denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/LheelSelect0000644000000000000000000000013213135434035030173 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.909981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/LheelSelectionSwitcher.xml0000644000175000017500000000055713135434035035071 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LheelSelectionSwitcher <_label>Lheel (Off/On) <_tooltip>Marks/Unmaks the selection with the Lheel denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleMarca0000644000000000000000000000013213135434036030170 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.919981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleMarcato.xml0000644000175000017500000000054413135434036033206 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleMarcato <_label>Marcato (Off/On) <_tooltip>Mark/Unmark the current chord marcato denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/TenutoSelec0000644000000000000000000000013213135434035030234 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.919981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/TenutoSelectionSwitcher.xml0000644000175000017500000000061413135434035035310 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTenuto TenutoSelectionSwitcher <_label>Tenuto (Off/On) <_tooltip>Toggles the Tenuto Line _ On/Off denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleStacc0000644000000000000000000000013213135434036030202 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.919981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleStaccato.xml0000644000175000017500000000060313135434036033355 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleAccent ToggleStaccato <_label>Staccato (Off/On) <_tooltip>Mark/Unmark the chord staccato denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleMarca0000644000000000000000000000013213135434036030170 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.919981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleMarcato.scm0000644000175000017500000000015113135434036033162 0ustar00jjbenhamjjbenham00000000000000;;;Marcato (ChordAnnotation "ToggleMarcato" "\\marcato" ToggleMarcato::params LG-Marcato) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleDownB0000644000000000000000000000013213135434035030155 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.919981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleDownBow.scm0000644000175000017500000000015613135434035033157 0ustar00jjbenhamjjbenham00000000000000;;;ToggleDownBow (ChordAnnotation "ToggleDownBow" "\\downbow" ToggleDownBow::params LG-DownBow) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleUpBow0000644000000000000000000000013213135434036030201 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.929981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleUpBow.scm0000644000175000017500000000014413135434036032632 0ustar00jjbenhamjjbenham00000000000000;;;ToggleUpBow (ChordAnnotation "ToggleUpBow" "\\upbow" ToggleUpBow::params LG-UpBow) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleHarmo0000644000000000000000000000013213135434036030213 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.929981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleHarmonic.scm0000644000175000017500000000030613135434036033336 0ustar00jjbenhamjjbenham00000000000000;;;ToggleHarmonic (ChordAnnotation "ToggleHarmonic" "\\flageolet" ToggleHarmonic::params LG-Harmonic) ;(d-DirectivePut-chord-gy "Harmonic" 12) ;(d-DirectivePut-chord-gx "Harmonic" -2) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleShort0000644000000000000000000000013213135434036030244 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.929981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleShortFermata.xml0000644000175000017500000000056313135434036034220 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleShortFermata <_label>ShortFermata (Off/On) <_tooltip>Mark/Unmark the current chord shortfermata denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleTenut0000644000000000000000000000013213135434036030244 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.929981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleTenuto.xml0000644000175000017500000000057613135434036033103 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleFermata ToggleTenuto <_label>Tenuto (Off/On) <_tooltip>Mark/Unmark the chord Tenuto denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/LheelSelect0000644000000000000000000000013213135434035030173 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.929981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/LheelSelectionSwitcher.scm0000644000175000017500000000005613135434035035045 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleLheel ) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ArpeggioSel0000644000000000000000000000031113135434035030202 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ArpeggioSelectionSwitcher.scm 30 mtime=1500919837.999981805 30 atime=1500919927.939981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ArpeggioSelectionSwitcher.sc0000644000175000017500000000006013135434035035367 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleArpeggio) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleArpeg0000644000000000000000000000013213135434035030202 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.939981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleArpeggio.xml0000644000175000017500000000054313135434035033353 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleArpeggio <_label>Arpeggio (Off/On) <_tooltip>Mark/Unmark chord with an arpeggio denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/Articulatio0000644000000000000000000000013213135434035030262 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.939981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ArticulationOutsideSlur.xml0000644000175000017500000000075313135434035035320 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ArticulationOutsideSlur <_label>Articulation Outside Slur (Off/On) <_tooltip>The articulation(s) on this note will be placed outside the slur (furthest from the note). Repeat the command to return the slur to the outside. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/RheelSelect0000644000000000000000000000013213135434035030201 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.939981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/RheelSelectionSwitcher.scm0000644000175000017500000000005613135434035035053 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleRheel ) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/TogglePorta0000644000000000000000000000013213135434036030232 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.939981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/TogglePortato.scm0000644000175000017500000000015613135434036033231 0ustar00jjbenhamjjbenham00000000000000;;;TogglePortato (ChordAnnotation "TogglePortato" "\\portato" TogglePortato::params LG-Portato) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/AccentSelec0000644000000000000000000000013213135434035030153 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.959981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/AccentSelectionSwitcher.scm0000644000175000017500000000005613135434035035211 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleAccent) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/DownbowSele0000644000000000000000000000013213135434035030232 xustar0030 mtime=1500919837.999981805 30 atime=1500919927.959981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/DownbowSelectionSwitcher.scm0000644000175000017500000000005713135434035035434 0ustar00jjbenhamjjbenham00000000000000(SingleAndSelectionSwitcher d-ToggleDownBow) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/PaxHeaders.19168/ToggleUpBow0000644000000000000000000000013213135434036030201 xustar0030 mtime=1500919838.003315139 30 atime=1500919927.959981805 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Articulations/ToggleUpBow.xml0000644000175000017500000000057713135434036032662 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTenuto ToggleUpBow <_label>UpBow (Off/On) <_tooltip>Mark/Unmark chord with an Up Bow denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/PaxHeaders.19168/TextMarks0000644000000000000000000000013213135434150025101 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/0000755000175000017500000000000013135434150027027 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/Glissando.xml0000644000000000000000000000013213135434036027626 xustar0030 mtime=1500919838.009981805 30 atime=1500919927.959981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Glissando.xml0000644000175000017500000000062313135434036031500 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Glissando <_label>Glissando <_tooltip>Inserts a glissando (portamento, slide), a line joining the notehead of this and the next note. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/Vibrato.scm0000644000000000000000000000013213135434036027273 xustar0030 mtime=1500919838.013315139 30 atime=1500919927.969981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Vibrato.scm0000644000175000017500000000446413135434036031154 0ustar00jjbenhamjjbenham00000000000000;;;Vibrato (let ((tag "Vibrato")(amplitudes "")(wavelength "1")(thickness "0.2") (input #f)(message (_ "Cancelled")) (choice (list (cons (_ "Start a vibrato") 'start) (cons (_ "Stop a vibrato") 'stop)))) (d-LilyPondInclude "vibrato.ily") (if (d-Directive-chord? tag) (set! choice (cons* (cons (_ "Delete") 'delete) choice))) (set! choice (RadioBoxMenuList choice)) (case choice ((delete) (set! message (_ "Deleted")) (d-DirectiveDelete-chord tag)) ((stop) (set! message #f) (d-DirectivePut-chord-display tag (_"Vibrato End")) (d-DirectivePut-chord-postfix tag "\\stopTrillSpan ") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-SetSaved #f)) ((start) (let loop () (set! input (d-GetUserInput (_ "Vibrato") (_ "Give amplitude or 0 to finish giving amplitudes") "0.5")) (if (and input (string->number input)) (begin (if (positive? (string->number input)) (begin (set! amplitudes (string-append amplitudes " " input)) (loop)))))) (if (not (null? amplitudes)) (begin (set! wavelength (d-GetUserInput (_ "Vibrato") (_ "Give wavelength for wavy line ") "1.0")) (if (and wavelength (string->number wavelength)) (begin (set! thickness (d-GetUserInput (_ "Vibrato") (_ "Give thickness for wavy line ") "0.2")) (if (and thickness (string->number thickness)) (begin (set! message #f) (d-DirectivePut-chord-display tag "Vibrato") (d-DirectivePut-chord-prefix tag (string-append " \\vibrato #'(" amplitudes ") #" wavelength " #" thickness " ")) (d-DirectivePut-chord-postfix tag "\\startTrillSpan ") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-SetSaved #f))))))))) (if message (d-WarningDialog message)))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/DCAlFine.scm0000644000000000000000000000013213135434036027232 xustar0030 mtime=1500919838.009981805 30 atime=1500919927.969981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DCAlFine.scm0000644000175000017500000000356713135434036031116 0ustar00jjbenhamjjbenham00000000000000;;DCAlFine (let ((tag "DCAlFine")) (if (d-Directive-chord? tag) (begin (let ((choice #f) (edit-text #f) (newtext "") (place-above "")) (begin (set! edit-text (lambda () (begin (set! newtext (d-GetUserInput (_ "Replacing Text") (_ "Give new text") (_ "D.C. Al Fine") )) (d-DirectivePut-chord-postfix tag (string-append "^\\markup \\italic \\bold {" newtext "}")) (d-DirectivePut-chord-display tag newtext) ))) (set! place-above (lambda (above) (begin (set! newtext (d-DirectiveGet-chord-postfix tag)) (cond (above (string-set! newtext 0 #\^)) ((not above) (string-set! newtext 0 #\_))) (d-DirectivePut-chord-postfix tag newtext)))) (set! choice (d-GetOption (string-append cue-PlaceAbove stop cue-PlaceBelow stop cue-SetRelativeFontSize stop cue-EditText stop cue-RestorePosition stop cue-Delete stop cue-Advanced stop))) (cond ((boolean? choice) (d-WarningDialog "Operation cancelled")) ((equal? choice cue-PlaceAbove) (place-above #t)) ((equal? choice cue-PlaceBelow) (place-above #f)) ((equal? choice cue-SetRelativeFontSize) (SetRelativeFontSize tag )) ((equal? choice cue-EditText) (edit-text)) ((equal? choice cue-RestorePosition) (d-DirectivePut-chord-prefix tag "")) ((equal? choice cue-Delete) (d-DirectiveDelete-chord tag)) ((equal? choice cue-Advanced) (d-DirectiveTextEdit-chord tag))) (d-SetSaved #f) (d-RefreshDisplay)))) (begin (if (Music?) (begin (d-DirectivePut-chord-display tag "D.C. al fine" ) (d-DirectivePut-chord-postfix tag "^\\markup \\italic \\bold {D. C. al fine}") (d-DirectivePut-chord-minpixels tag 20) (d-SetSaved #f) (d-RefreshDisplay)) (begin (d-WarningDialog (_ "No note or rest at cursor")))))))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/ToggleCoda.xml0000644000000000000000000000013213135434036027713 xustar0030 mtime=1500919838.009981805 30 atime=1500919927.969981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/ToggleCoda.xml0000644000175000017500000000053013135434036031562 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleCoda <_label>Coda (Off/On) <_tooltip>Adds/Removes a Coda to the note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/ParenthesizeNot0000644000000000000000000000013213135434036030226 xustar0030 mtime=1500919838.009981805 30 atime=1500919927.979981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/ParenthesizeNote.scm0000644000175000017500000000022713135434036033026 0ustar00jjbenhamjjbenham00000000000000;;; ParenthesizeNote (d-DirectivePut-note-prefix "Parenthesize" "\\parenthesize ") (d-DirectivePut-note-display "Parenthesize" "()") (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/AttachedText.sc0000644000000000000000000000013213135434036030072 xustar0030 mtime=1500919838.009981805 30 atime=1500919927.979981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/AttachedText.scm0000644000175000017500000000532313135434036032123 0ustar00jjbenhamjjbenham00000000000000;;;AttachedText (let ((text #f) (tag "AttachedText") (params AttachedText::params) (markup #f)(current #f) (position #f) (shift "")) (set! current (d-DirectiveGet-chord-data tag)) (if (not current) (set! current (d-DirectiveGet-chord-display tag))) (if (and params (not (equal? "edit" params))) (begin (if (string? params) (set! text (cons params (string-append "\"" params "\""))) (let ((choice (caar params))) ;;; params is a list of pairs ;(set! text (cons current (string-append "\"" current "\""))) (case choice ((padding) (set! shift (string-append "-\\tweak #'padding #" (cdar params) " "))) ((direction) (set! position (cdar params))) ((offsetx) (set! position (string-append "-\\tweak #'X-offset #'" (cdar params) " -\\tweak #'Y-offset #'" (cdadr params) " -")))))))) (if (not position) (begin (set! position (RadioBoxMenuList (list (cons (_ "Above") "^") (cons (_ "Below") "_") (cons (_ "Auto Position") "-")))))) (if (not current) (set! current "")) (if (not text) (set! text (d-GetUserInputWithSnippets (_ "Text") (_ "Give text to appear with note/chord:\nThe characters \\, \", §, { and } have a special meaning in the text,\nthe backslash \\ starts some LilyPond sytax, the others must be paired.\nTo apply italic or bold to a group of words enclose them in {}, e.g. \\bold {These words are bold}.\nOther markup commands \\super, \\tiny etc, see LilyPond documentation.") current)));;cannot popup menu after this, it runs gtk_main (if text (if (string-null? (car text)) (begin (let ((confirm (d-GetUserInput (d-DirectiveGet-chord-display tag) (_ "Delete this text?") (_ "y")))) (if (equal? confirm (_ "y")) (begin (d-DirectiveDelete-chord tag) (d-SetSaved #f)) (d-InfoDialog (_ "Cancelled"))))) (begin (if position (begin (set! markup (cdr text)) (set! text (car text)) (d-DirectivePut-chord-display tag (string-pad-right text 5)) (d-DirectivePut-chord-data tag text) (d-DirectivePut-chord-postfix tag (string-append shift position "\\markup\\scale #'(.5 . .5)\\column{" markup "}")) (d-DirectivePut-chord-minpixels tag 20) (d-SetSaved #f))))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/Footnote.scm0000644000000000000000000000013213135434036027462 xustar0030 mtime=1500919838.009981805 30 atime=1500919927.979981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Footnote.scm0000644000175000017500000000577413135434036031350 0ustar00jjbenhamjjbenham00000000000000;;;Footnote (let ((tag "Footnote")(params "Footnote::params")(data #f)(mark #f)(text #f)(line #f)(x 0)(y 0)) (define (set-footnote) (d-Chordize #t) (d-DirectivePut-chord-prefix tag "\\override Score.FootnoteItem #'annotation-line = ##f ") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-note-data tag (format #f "'~s" data)) (d-DirectivePut-note-prefix tag (string-append "\\footnote \"" mark "\" #'(" x " . " y ") \\markup { \\super \"" mark "\" \\teeny \"" text "\"} ")) (d-DirectivePut-note-display tag (string-append (_ "Fn") "\n" mark "\n" text)) (d-DirectivePut-note-ty tag -30) (d-RefreshDisplay) (d-SetSaved #f)) (define (choose-footnote) (set! mark (d-GetUserInput (_ "Footnote") (_ "Give footnote marker") mark)) (if mark (begin (set! text (d-GetUserInput (_ "Footnote") (_ "Give footnote text") text)) (if text (begin (set! x (d-GetUserInput (_ "Footnote Mark") (_ "Give horizontal offset for the marker") x)) (if (and x (string->number x)) (begin (set! y (d-GetUserInput (_ "Footnote Mark") (_ "Give vertical offset for the marker") y)) (if (and y (string->number y)) #f (set! y #f)))))))) (if (and mark text x y) (begin (set! data (assq-set! data 'mark mark)) (set! data (assq-set! data 'text text)) (set! data (assq-set! data 'x x)) (set! data (assq-set! data 'y y)) (set! data (assq-set! data 'line line)) (set-footnote)))) (if (Appending?) (d-MoveCursorLeft)) (set! data (d-DirectiveGet-note-data tag)) (if data (begin (set! data (eval-string data)) (set! mark (assq-ref data 'mark)) (set! text (assq-ref data 'text)) (set! x (assq-ref data 'x)) (set! y (assq-ref data 'y)) (set! line (assq-ref data 'line))) (begin (set! mark "(*)") (set! text "N.B.") (set! x "0") (set! y "3.5") (set! line #f))) (if (not data) (set! data '())) (if (or (Chord?) (Note?)) (if (d-Directive-note? tag) (let ((choice (GetEditOption))) (case choice ((edit) (choose-footnote)) ((delete) (begin (d-DirectiveDelete-chord tag)(d-DirectiveDelete-note tag))) ((advanced) (d-DirectiveTextEdit-note tag)))) (let () (choose-footnote))) (d-InfoDialog (_ "No note or chord at cursor to attach footnote to")))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/Spanning0000644000000000000000000000013213135434150026656 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Spanning/0000755000175000017500000000000013135434150030604 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Spanning/PaxHeaders.19168/TextSp0000644000000000000000000000013213135434036030110 xustar0030 mtime=1500919838.009981805 30 atime=1500919927.989981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Spanning/TextSpanStop.xml0000644000175000017500000000061113135434036033743 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TextSpanStop TextSpanStart <_label>Text Span Stop <_tooltip>Stops the spanning text started earlier. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Spanning/PaxHeaders.19168/TextSp0000644000000000000000000000013213135434036030110 xustar0030 mtime=1500919838.009981805 30 atime=1500919927.989981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Spanning/TextSpanStart.xml0000644000175000017500000000071313135434036034116 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TextSpanStart ToggleCoda <_label>Text Span Start <_tooltip>Starts text which spans several notes, e.g. rallentando poco a poco. Terminate with Stop Text Span command. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Spanning/PaxHeaders.19168/TextSp0000644000000000000000000000013213135434036030110 xustar0030 mtime=1500919838.009981805 30 atime=1500919927.989981805 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Spanning/TextSpanStart.scm0000644000175000017500000000437113135434036034104 0ustar00jjbenhamjjbenham00000000000000;TextSpanStart (if (Music?) (let ((tag "TextSpanStart")(text "rall.")(params TextSpanStart::params) (direction "")) (if (equal? params "edit") (set! params (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Advanced") 'advanced)))) (if (d-Directive-chord? tag) (cond ((not params) (set! params 'delete)) ((list? params) (let ((type (car (list-ref params 0))) (params (cdr (list-ref params 0)))) (if (eq? type 'direction) (set! direction params) (begin (set! direction #f) (d-WarningDialog (_ "Sorry, not yet implemented")))))) ((string? params) (set! text params)) ((eq? params 'edit) (set! direction (GetLilyPondDirection))) ((eq? params 'advanced) (if (not (d-DirectiveTextEdit-chord tag)) (set! params 'delete))) (else (set! text (d-DirectiveGet-chord-display tag))))) (if (eq? params 'delete) (begin (d-DirectiveDelete-chord tag) (d-InfoDialog (_ "Text Span Start deleted. The end text span later should also be deleted ..."))) (if direction (begin (set! direction (cond ((equal? direction "^") "\\textSpannerUp")((equal? direction "_") "\\textSpannerDown")(else ""))) (set! text (d-GetUserInput (_ "Text Spanner") (_ "Give text ") text)) (if text (begin (d-DirectivePut-chord-prefix tag (string-append (string-append direction "\\override TextSpanner.bound-details.left.text = \"" text "\" "))) (d-DirectivePut-chord-postfix tag "\\startTextSpan") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-display tag text)))))) (d-SetSaved #f))) (set! TextSpanStart::params #f) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Spanning/PaxHeaders.19168/TextSp0000644000000000000000000000013213135434036030110 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.013315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Spanning/TextSpanStop.scm0000644000175000017500000000051013135434036033723 0ustar00jjbenhamjjbenham00000000000000;;;TextSpanStop (if (Music?) (let ((tag "TextSpanStop")(text "...|")) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-postfix tag "\\stopTextSpan") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-display tag text))) (d-SetSaved #f)))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/ParenthesizeCho0000644000000000000000000000013213135434036030177 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.013315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/ParenthesizeChord.scm0000644000175000017500000000023313135434036033155 0ustar00jjbenhamjjbenham00000000000000 ;;; ParenthesizeChord (d-DirectivePut-chord-prefix "Parenthesize" "\\parenthesize ") (d-DirectivePut-chord-display "Parenthesize" "()") (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/DalSegno.xml0000644000000000000000000000013213135434036027377 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.013315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DalSegno.xml0000644000175000017500000000060413135434036031250 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS D.C.AlFine DalSegno <_label>Dal Segno <_tooltip>Prints Dal Segno below the chord at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/ToggleCoda.scm0000644000000000000000000000013213135434036027675 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.013315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/ToggleCoda.scm0000644000175000017500000000014013135434036031541 0ustar00jjbenhamjjbenham00000000000000;;;ToggleCoda (ChordAnnotation "ToggleCoda" "\\coda " ToggleCoda::params LG-Coda) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/ToggleSegno.scm0000644000000000000000000000013213135434036030102 xustar0030 mtime=1500919838.013315139 30 atime=1500919928.013315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/ToggleSegno.scm0000644000175000017500000000014513135434036031753 0ustar00jjbenhamjjbenham00000000000000;;;ToggleSegno (ChordAnnotation "ToggleSegno" "\\segno " ToggleSegno::params LG-Segno) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/Congruentia.scm0000644000000000000000000000013213135434036030143 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.023315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Congruentia.scm0000644000175000017500000000020513135434036032011 0ustar00jjbenhamjjbenham00000000000000(if (Music?) (ToggleDirective "chord" "postfix" "Congruentia" "^\\markup { \\musicglyph #\"scripts.usignumcongruentiae\" }\n") #f)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/ArbitraryTextAb0000644000000000000000000000013213135434036030153 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.023315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/ArbitraryTextAbove.xml0000644000175000017500000000056113135434036033337 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ArbitraryTextAbove <_label>Arbitrary Text Above <_tooltip>Prints the text you give above the chord. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/ToggleFine.scm0000644000000000000000000000013213135434036027710 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.023315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/ToggleFine.scm0000644000175000017500000000017013135434036031557 0ustar00jjbenhamjjbenham00000000000000;;ToggleFine (ChordAnnotation "ToggleFine" "\\markup\\bold\\italic \"fine\"" ToggleFine::params #f "fine") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/Vibrato.xml0000644000000000000000000000013213135434036027311 xustar0030 mtime=1500919838.013315139 30 atime=1500919928.023315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Vibrato.xml0000644000175000017500000000103713135434036031163 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Vibrato Glissando <_label>Vibrato <_tooltip>Start or Stop a wavy line above the notes. The waves can be made longer/shorter via the wavelength given and can be made to swell and or diminish, several times if desired by giving one or more amplitudes. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/Congruentia.xml0000644000000000000000000000013213135434036030161 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.023315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Congruentia.xml0000644000175000017500000000057513135434036032041 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleFermata Congruentia <_label>Congruentia <_tooltip>Print congruentia / canon symbol denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/DalSegno.scm0000644000000000000000000000013213135434036027361 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.029981806 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DalSegno.scm0000644000175000017500000000047613135434036031241 0ustar00jjbenhamjjbenham00000000000000;;;DalSegno (if (d-Directive-chord? "DalSegno") (d-DirectiveDelete-chord "DalSegno") (begin (d-DirectivePut-chord-postfix "DalSegno" "-\\markup { \\italic \"D.S. \" \\tiny \\raise #1 \\musicglyph #\"scripts.segno\"}") (d-DirectivePut-chord-display "DalSegno" "D.S."))) (d-SetSaved #f) ;;;End of scheme scriptdenemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/AttachedText.xm0000644000000000000000000000013213135434036030111 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.029981806 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/AttachedText.xml0000644000175000017500000000122613135434036032137 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TextAbove AttachedText <_label>Multi-line Text and Music <_tooltip>Attaches multi-line text which can include music snippets, transposing note/chord names, fret-diagrams, with control over bold, italic font size and more. Double quotes and {} must be paired - check with the Preview button before okaying the markup. Newlines are triggered by the paragraph sign. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/ArbitraryTextAb0000644000000000000000000000013213135434036030153 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.029981806 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/ArbitraryTextAbove.scm0000644000175000017500000000064613135434036033325 0ustar00jjbenhamjjbenham00000000000000;;;ArbitraryTextAbove (let ((thetext #f)) (set! thetext (d-GetUserInput (_ "Give string") (_ "give your text") " ")) (if thetext (begin (d-DirectivePut-chord-postfix "ArbitraryTextAbove" (string-append "^\\markup \\bold \"" thetext "\"")) (d-DirectivePut-chord-display "ArbitraryTextAbove" thetext) (d-DirectivePut-chord-ty "ArbitraryTextAbove" -100) (d-RefreshDisplay)))) ;;;End of scheme scriptdenemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/ToggleFine.xml0000644000000000000000000000013213135434036027726 xustar0030 mtime=1500919838.013315139 30 atime=1500919928.029981806 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/ToggleFine.xml0000644000175000017500000000062213135434036031577 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DCAlFine ToggleFine <_label>Fine (end). (Off/On) <_tooltip>Prints the musical instruction "fine", in italics. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/DynamicMarkings0000644000000000000000000000013213135434150030161 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/0000755000175000017500000000000013135434150032107 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.043315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/Fortissimo.scm0000644000175000017500000000006413135434036034754 0ustar00jjbenhamjjbenham00000000000000 ;;; ff (Dynamics::Put "Fortissimo" "\\ff" "120") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000031113135434036030163 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/DeleteDynamic.scm 30 mtime=1500919838.009981805 30 atime=1500919928.043315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/DeleteDynamic.sc0000644000175000017500000000011413135434036035144 0ustar00jjbenhamjjbenham00000000000000 ;;; delete a dynamic (d-DirectiveDelete-chord "Dynamic") (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.043315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/MezzoForte.scm0000644000175000017500000000006113135434036034717 0ustar00jjbenhamjjbenham00000000000000 ;;; mf (Dynamics::Put "MezzoForte" "\\mf" "80") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.043315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/Largo.scm0000644000175000017500000000033113135434036033657 0ustar00jjbenhamjjbenham00000000000000;;;Tempo (d-DirectivePut-chord-postfix "Tempo" "^\\markup \\italic \\bold {Largo}") (d-DirectivePut-chord-display "Tempo" "Largo") (d-DirectivePut-chord-midibytes "Tempo" "") (d-RefreshDisplay) ;;;End of scheme scriptdenemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.043315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/MezzoPiano.scm0000644000175000017500000000006113135434036034706 0ustar00jjbenhamjjbenham00000000000000 ;;; mp (Dynamics::Put "MezzoPiano" "\\mp" "30") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.063315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/Forte.xml0000644000175000017500000000056513135434036033721 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Fortissimo Forte <_label>Forte <_tooltip>Attaches Forte to chord and MIDI volume denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.063315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/Forte.scm0000644000175000017500000000005613135434036033676 0ustar00jjbenhamjjbenham00000000000000 ;;; f (Dynamics::Put "Forte" "\\f" "100") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.063315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/Largo.xml0000644000175000017500000000055613135434036033706 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MezzoForte Largo <_label>Largo <_tooltip>Print Largo above note at cursor denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.063315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/Fortissimo.xml0000644000175000017500000000056213135434036034775 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Fortissimo <_label>Fortissimo <_tooltip>Places a ff sign on the chord at the cursor denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.063315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/MezzoPiano.xml0000644000175000017500000000057713135434036034740 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MezzoForte MezzoPiano <_label>Mezzo Piano <_tooltip>prints mp and outputs MIDI vol change# denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000031113135434036030163 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/DeleteDynamic.xml 30 mtime=1500919838.009981805 30 atime=1500919928.073315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/DeleteDynamic.xm0000644000175000017500000000061513135434036035171 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MezzoForte DeleteDynamic <_label>Delete <_tooltip>Deletes a dynamic attached to the chord at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.073315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/init.scm0000644000175000017500000000101413135434036033555 0ustar00jjbenhamjjbenham00000000000000 ;;;;;;;;;;; dynamics init.scm (define* (Dynamics::Put graphic lily #:optional (midi-vol #f)) (d-DirectivePut-chord-graphic "Dynamic" graphic) (d-DirectivePut-chord-gx "Dynamic" -10) (d-DirectivePut-chord-gy "Dynamic" 50) (d-DirectivePut-chord-postfix "Dynamic" lily) (d-DirectivePut-chord-minpixels "Dynamic" 20) (if (string? midi-vol) (begin (d-DirectivePut-chord-override "Dynamic" (logior DENEMO_OVERRIDE_VOLUME DENEMO_OVERRIDE_STEP)) (d-DirectivePut-chord-midibytes "Dynamic" midi-vol))) (d-RefreshDisplay))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/PaxHeaders.191680000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.073315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DynamicMarkings/MezzoForte.xml0000644000175000017500000000057113135434036034743 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Fortissimo MezzoForte <_label>Mezzo Forte <_tooltip>Attach mf indication to a chord. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/TextAbove.xml0000644000000000000000000000013213135434036027604 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.073315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TextAbove.xml0000644000175000017500000000054713135434036031463 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TextAbove <_label>Arbitrary Text <_tooltip>Prints your text above the music at this point denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/DCAlFine.xml0000644000000000000000000000013213135434036027250 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.083315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/DCAlFine.xml0000644000175000017500000000061213135434036031120 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Glissando DCAlFine <_label>D. C. al fine <_tooltip>Puts Da Capo al fine over the chord at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/ParenthesizeNot0000644000000000000000000000013213135434036030226 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.083315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/ParenthesizeNote.xml0000644000175000017500000000056613135434036033052 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ParenthesizeNote <_label>Parenthesize Note <_tooltip>Enclose the note at the cursor in ( ) when printed. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/Footnote.xml0000644000000000000000000000013213135434036027500 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.083315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Footnote.xml0000644000175000017500000000067113135434036031355 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS D.C.AlFine Footnote <_label>Footnote <_tooltip>Prints a footnote at the bottom of the current page. The mark is placed above the note at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/TempoIndication0000644000000000000000000000013213135434150030167 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/0000755000175000017500000000000013135434150032300 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/PaxHeaders.19160000644000000000000000000000013213135434036030265 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.083315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/Presto.scm0000644000175000017500000000023113135434036034257 0ustar00jjbenhamjjbenham00000000000000;;; Presto (d-DirectivePut-chord-postfix "Tempo" "^\\markup \\italic \\bold {Presto}") (d-DirectivePut-chord-display "Tempo" "Presto") (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/PaxHeaders.19160000644000000000000000000000013213135434036030265 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.083315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/Largo.scm0000644000175000017500000000022613135434036034053 0ustar00jjbenhamjjbenham00000000000000;;; Largo (d-DirectivePut-chord-postfix "Tempo" "^\\markup \\italic \\bold {Largo}") (d-DirectivePut-chord-display "Tempo" "Largo") (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/PaxHeaders.19160000644000000000000000000000031113135434036030264 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/AllegroAssai.xml 30 mtime=1500919838.009981805 30 atime=1500919928.093315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/AllegroAssai.xm0000644000175000017500000000053713135434036035224 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AllegroAssai <_label>Allegro Assai <_tooltip>Gives Allegro Assai tempo indication denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/PaxHeaders.19160000644000000000000000000000013213135434036030265 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.093315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/Allegro.xml0000644000175000017500000000053613135434036034416 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Allegro <_label>Allegro <_tooltip>Print Allegro in bold italics above the chord. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/PaxHeaders.19160000644000000000000000000000013213135434036030265 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.093315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/Andante.xml0000644000175000017500000000053613135434036034403 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Andante <_label>Andante <_tooltip>Print Andante in bold italics above the chord. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/PaxHeaders.19160000644000000000000000000000013213135434036030265 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.093315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/Largo.xml0000644000175000017500000000054213135434036034072 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Andante Largo <_label>Largo <_tooltip>Attaches Largo to chord denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/PaxHeaders.19160000644000000000000000000000031113135434036030264 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/AllegroAssai.scm 30 mtime=1500919838.009981805 30 atime=1500919928.093315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/AllegroAssai.sc0000644000175000017500000000027513135434036035204 0ustar00jjbenhamjjbenham00000000000000;;;Tempo (d-DirectivePut-chord-postfix "Tempo" "^\\markup \\italic \\bold {Allegro Assai}") (d-DirectivePut-chord-display "Tempo" "Allegro Assai") (d-RefreshDisplay) ;;;End of scheme scriptdenemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/PaxHeaders.19160000644000000000000000000000013213135434036030265 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.113315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/Allegro.scm0000644000175000017500000000023413135434036034373 0ustar00jjbenhamjjbenham00000000000000;;; Allegro (d-DirectivePut-chord-postfix "Tempo" "^\\markup \\italic \\bold {Allegro}") (d-DirectivePut-chord-display "Tempo" "Allegro") (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/PaxHeaders.19160000644000000000000000000000013213135434036030265 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.113315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/Presto.xml0000644000175000017500000000053313135434036034302 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Presto <_label>Presto <_tooltip>Print Presto in bold italics above the chord. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/PaxHeaders.19160000644000000000000000000000013213135434036030265 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.113315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TempoIndications/Andante.scm0000644000175000017500000000023413135434036034360 0ustar00jjbenhamjjbenham00000000000000;;; Andante (d-DirectivePut-chord-postfix "Tempo" "^\\markup \\italic \\bold {Andante}") (d-DirectivePut-chord-display "Tempo" "Andante") (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/ToggleSegno.xml0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.013315139 30 atime=1500919928.113315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/ToggleSegno.xml0000644000175000017500000000060413135434036031771 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleReverseTurn ToggleSegno <_label>Segno (Off/On) <_tooltip>Adds/Removes a Segno to the note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/Glissando.scm0000644000000000000000000000013213135434036027610 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.113315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/Glissando.scm0000644000175000017500000000241513135434036031463 0ustar00jjbenhamjjbenham00000000000000;;;Glissando (let ((tag "Glissando")(params Glissando::params)(length #f)) (if (equal? params "edit") (let ((choice (RadioBoxMenu (cons (_ "Minimum Length") 'length) (cons (_ "Delete") 'delete) (cons (_ "Advanced") 'advanced)))) (case choice ((length) (set! params #f) (set! length (d-GetUserInput (_ "Glissando") (_ "Give minimum length for glissando line: ") "2"))) ((delete) (d-DirectiveDelete-chord tag)) ((advanced) (d-DirectiveTextEdit-chord tag))))) (if (not params) (begin (if (and length (string->number length)) (begin (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-prefix tag (string-append "\\once \\override Glissando #'minimum-length = #" length " \\once \\override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods ")))) (d-DirectivePut-chord-display tag "Gliss" ) (d-DirectivePut-chord-postfix tag "\\glissando") (d-DirectivePut-chord-minpixels tag 20))) (d-SetSaved #f) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/TextAbove.scm0000644000000000000000000000013213135434036027566 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.123315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/TextAbove.scm0000644000175000017500000000161413135434036031441 0ustar00jjbenhamjjbenham00000000000000;;TextAbove (let ((text #f) (tag "TextAbove")(markup #f)(current #f)) (set! current (d-DirectiveGet-chord-display tag)) (if (not current) (set! current "")) (set! text (d-GetUserInputWithSnippets (_ "Text") (_ "Give text to appear above music: ") current)) (if text (begin (set! markup (cdr text)) (set! text (car text)) (d-DirectivePut-chord-display tag text ) (d-DirectivePut-chord-postfix tag (string-append "^\\markup { \\override #'(line-width . 40) " markup "}")) (d-DirectivePut-chord-minpixels tag 20) (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-Chordize) (d-SetSaved #f)) (begin (let ((confirm (d-GetUserInput (d-DirectiveGet-chord-display tag) (_ "Delete this text?") (_ "y")))) (if (and confirm (equal? confirm (_ "y"))) (begin (d-DirectiveDelete-chord tag) (d-SetSaved #f)) (d-InfoDialog (_ "Cancelled"))))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/PaxHeaders.19168/ParenthesizeCho0000644000000000000000000000013213135434036030177 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.123315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/TextMarks/ParenthesizeChord.xml0000644000175000017500000000055213135434036033177 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ParenthesizeChord <_label>Parenthesize Chord <_tooltip>Enclose the chord in ( ) on printing. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/PaxHeaders.19168/Strings0000644000000000000000000000013213135434150024610 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/0000755000175000017500000000000013135434150026536 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/PaxHeaders.19168/FingeringPosition0000644000000000000000000000013213135434036030250 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.123315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/FingeringPosition.xml0000644000175000017500000000063413135434036032723 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FingeringPosition <_label>Fingering Position <_tooltip>Allows you to specify the position of the fingering relative to the note at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/PaxHeaders.19168/RHFinger.scm0000644000000000000000000000013213135434036027040 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.133315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/RHFinger.scm0000644000175000017500000000073313135434036030714 0ustar00jjbenhamjjbenham00000000000000;;;;;; RHFinger (let ((tag "RHFinger") (num "0")) (set! num (d-GetUserInput "Right Hand Fingering" "Give finger number" "1")) (if (and num (string->number num)) (begin (d-DirectivePut-note-display tag num) (d-DirectivePut-note-postfix tag (string-append "-\\rightHandFinger #" num " ")) (d-DirectivePut-note-minpixels tag 20) (d-DirectivePut-note-tx tag 10) (d-Chordize #t)) (begin (d-DirectiveDelete-note tag))) (d-SetSaved #f) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/PaxHeaders.19168/StringNum.scm0000644000000000000000000000013213135434036027322 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.133315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/StringNum.scm0000644000175000017500000000167113135434036031200 0ustar00jjbenhamjjbenham00000000000000(let () (define (stringnr stringy) (if (Note?) ;force chordizise. Ugly lilypond output, but guaranteed to work for all instruments (begin (d-Chordize) (AttachDirective "note" "postfix" (cons "StringNumber" (string-append "s" stringy)) (string-append "\\" stringy " "))) #f)) ; not a note. Abort. (Doublestroke (lambda () (stringnr (string-trim-both (d-GetUserInput "String Number" "Please enter a string number" "1")))) ;Ask the user which string (cons "1st string" (lambda () (stringnr "1"))) (cons "2nd string" (lambda () (stringnr "2"))) (cons "3rd string" (lambda () (stringnr "3"))) (cons "4th string" (lambda () (stringnr "4"))) (cons "5th string" (lambda () (stringnr "5"))) (cons "6th string" (lambda () (stringnr "6"))) (cons "7th string" (lambda () (stringnr "7"))) (cons "8th string" (lambda () (stringnr "8"))) (cons "9th string" (lambda () (stringnr "9"))) (cons "10th string" (lambda () (stringnr "10")))));; d-StringNumdenemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/PaxHeaders.19168/FingeringPosition0000644000000000000000000000013213135434036030250 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.133315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/FingeringPosition.scm0000644000175000017500000000452413135434036032707 0ustar00jjbenhamjjbenham00000000000000;;;FingeringPosition (let ((fingering-tag "Fingering")) (define finger #f) (define (get-direction text) (if text text "up")) ;puts posn as data field of note directive (define (do-position posn) (d-DirectivePut-note-data fingering-tag posn)) ;;;gets the position from the data field of the note (define (get-position) (define posn (d-DirectiveGet-note-data fingering-tag)) (if posn posn "up")) (define (do-up) (do-position "up")) (define (do-down) (do-position "down")) (define (do-left) (do-position "left")) (define (do-right) (do-position "right")) (define (do-finger-positions) (define tag "FingeringPositions") (define directions "") (d-Chordize #t) (let loop ((count 1)) (if (d-CursorToNote (d-GetNote count)) (begin (set! directions (string-append directions " " (get-direction (get-position)))) (loop (+ 1 count))))) (d-DirectivePut-chord-prefix tag (string-append "\\set fingeringOrientations = #'(" directions ") ")) (d-DirectivePut-chord-override tag (logior DENEMO_OVERRIDE_DYNAMIC DENEMO_OVERRIDE_AFFIX)) (d-RefreshDisplay) (d-SetSaved #f)) (define value #f) (set! value (d-PopupMenu (list (cons (cons (_ "Above") (_ "Places the fingering above the chord")) do-up) (cons (cons (_ "Below") (_ "Places the fingering below the chord")) do-down) (cons (cons (_ "Left") (_ "Places the fingering to the left of the chord")) do-left) (cons (cons (_ "Right") (_ "Places the fingering to the right of the chord")) do-right)))) (if value (let ((initial (d-GetCursorNoteWithOctave))) (value) (do-finger-positions) (d-CursorToNote initial) ))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/PaxHeaders.19168/ToggleStemSupport0000644000000000000000000000013213135434036030262 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.133315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/ToggleStemSupport.scm0000644000175000017500000000062413135434036032716 0ustar00jjbenhamjjbenham00000000000000;;;ToggleStemSupport (let ((tag "StemSupport")) (if (d-Directive-voice? tag) (begin (d-InfoDialog "Collisions of fingerings etc with stems allowed") (d-DirectiveDelete-voice tag)) (begin (d-DirectivePut-voice-postfix tag "\\override Fingering #'add-stem-support = ##t \\override StringNumber #'add-stem-support = ##t \\override StrokeFinger #'add-stem-support = ##t ")))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/PaxHeaders.19168/RHFinger.xml0000644000000000000000000000013213135434036027056 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.143315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/RHFinger.xml0000644000175000017500000000065713135434036030737 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LHFinger RHFinger <_label>Right Hand Fingering <_tooltip>Asks for a finger number and typesets p,m,i as appropriate. Use cancel to delete. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/PaxHeaders.19168/ToggleStemSupport0000644000000000000000000000013213135434036030262 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.143315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/ToggleStemSupport.xml0000644000175000017500000000071013135434036032730 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StringNum ToggleStemSupport <_label>Avoid Collisions with Stems <_tooltip>Fingerings and String numbers will be moved to avoid colliding with stems on typesetting. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/PaxHeaders.19168/Fingerings0000644000000000000000000000013213135434150026703 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/0000755000175000017500000000000013135434150030631 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.143315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/FingeringSwap.xml0000644000175000017500000000064713135434036034130 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FingeringSwap Finger5 <_label>Fingering Swap <_tooltip>Prints two fingerings joined to indicate a change of fingering on one note. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.143315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Finger1.scm0000644000175000017500000000023013135434036032626 0ustar00jjbenhamjjbenham00000000000000(ToggleDirective "note" "postfix" "Fingering" "-1 ") (if (d-Directive-note? "Fingering") (d-DirectivePut-note-display"Fingering" "1")) (d-Chordize #t) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.163315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Finger2.xml0000644000175000017500000000051713135434036032655 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Finger2 <_label>Finger 2 <_tooltip>Inserts fingering for finger 2 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Toggle0000644000000000000000000000031613135434036030133 xustar00116 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/ToggleFingeringVisibility.xml 30 mtime=1500919838.009981805 30 atime=1500919928.163315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/ToggleFingeringVisibili0000644000175000017500000000071413135434036035326 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleFingeringVisibility TweakFingeringPosition <_label>Hide/Show Fingering <_tooltip>Hides/Shows the fingering on the note at the cursor height in the typeset score. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.163315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Finger4.xml0000644000175000017500000000051713135434036032657 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Finger4 <_label>Finger 4 <_tooltip>Inserts fingering for finger 4 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.163315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Finger3.xml0000644000175000017500000000051713135434036032656 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Finger3 <_label>Finger 3 <_tooltip>Inserts fingering for finger 3 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.163315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Finger1.xml0000644000175000017500000000051713135434036032654 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Finger1 <_label>Finger 1 <_tooltip>Inserts fingering for finger 1 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/TweakF0000644000000000000000000000031313135434036030070 xustar00113 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/TweakFingeringPosition.xml 30 mtime=1500919838.009981805 30 atime=1500919928.173315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/TweakFingeringPosition.0000644000175000017500000000066013135434036035270 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TweakFingeringPosition FingeringSwap <_label>Tweak Position <_tooltip>Shifts the position of the fingering indication by the amounts given. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.173315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/FingeringSwap.scm0000644000175000017500000000071613135434036034107 0ustar00jjbenhamjjbenham00000000000000(let ((finger1 #f)(finger2 #f)) (set! finger1 (d-GetUserInput (_ "Fingering Swap") (_ "Give first fingering") "1")) (if finger1 (begin (set! finger2 (d-GetUserInput (_ "Fingering Swap") (_ "Give second fingering") "2")) (d-DirectivePut-note-postfix "Fingering" (string-append "\\finger \\markup \\tied-lyric #\"" finger1 "~" finger2 "\" ")) (d-DirectivePut-note-display"Fingering" (string-append finger1 "~" finger2)))) (d-SetSaved #f) (d-Chordize #t)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.173315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Finger2.scm0000644000175000017500000000023013135434036032627 0ustar00jjbenhamjjbenham00000000000000(ToggleDirective "note" "postfix" "Fingering" "-2 ") (if (d-Directive-note? "Fingering") (d-DirectivePut-note-display"Fingering" "2")) (d-Chordize #t) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.173315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Finger5.scm0000644000175000017500000000023013135434036032632 0ustar00jjbenhamjjbenham00000000000000(ToggleDirective "note" "postfix" "Fingering" "-5 ") (if (d-Directive-note? "Fingering") (d-DirectivePut-note-display"Fingering" "5")) (d-Chordize #t) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.173315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Fingering.xml0000644000175000017500000000064013135434036033266 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Fingering Finger0 <_label>Set Finger <_tooltip>Attaches a fingering to the note at the cursor. Blank deletes the fingering. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.183315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Finger5.xml0000644000175000017500000000051713135434036032660 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Finger5 <_label>Finger 5 <_tooltip>Inserts fingering for finger 5 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.183315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Finger0.xml0000644000175000017500000000052213135434036032647 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Finger0 <_label>Finger 0 <_tooltip>Inserts fingering for open string denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/TweakF0000644000000000000000000000031313135434036030070 xustar00113 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/TweakFingeringPosition.scm 30 mtime=1500919838.009981805 30 atime=1500919928.183315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/TweakFingeringPosition.0000644000175000017500000000177613135434036035301 0ustar00jjbenhamjjbenham00000000000000;;;TweakFingeringPosition (let ((tag "Fingering")(x #f) (y #f) (current #f)(finger #f)(data #f)) (if (d-Directive-note? tag) (begin (set! data (d-DirectiveGet-note-data tag)) (if data (set! finger (car (eval-string data))) (set! finger (d-GetUserInput (_ "Fingering") (_ "Give finger number: ") "1"))) (if data (set! current (cadr (eval-string data))) (set! current "1")) (set! x (d-GetUserInput (_ "Fingering Position") (_ "Give horizontal shift required: ") current)) (if x (begin (if data (set! current (caddr (eval-string data))) (set! current "1")) (set! y (d-GetUserInput (_ "Fingering Position") (_ "Give vertical shift required: ") current)) (if y (begin (d-DirectivePut-note-postfix tag (string-append "- \\tweak extra-offset #'(" x " . " y ")-" finger " ")) (d-DirectivePut-note-display tag finger) (d-DirectivePut-note-data tag (string-append "(list \"" finger "\" \"" x "\" \"" y "\")")))))))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.183315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Finger0.scm0000644000175000017500000000023013135434036032625 0ustar00jjbenhamjjbenham00000000000000(ToggleDirective "note" "postfix" "Fingering" "-0 ") (if (d-Directive-note? "Fingering") (d-DirectivePut-note-display"Fingering" "0")) (d-Chordize #t) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.183315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Finger4.scm0000644000175000017500000000023013135434036032631 0ustar00jjbenhamjjbenham00000000000000(ToggleDirective "note" "postfix" "Fingering" "-4 ") (if (d-Directive-note? "Fingering") (d-DirectivePut-note-display"Fingering" "4")) (d-Chordize #t) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Toggle0000644000000000000000000000031613135434036030133 xustar00116 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/ToggleFingeringVisibility.scm 30 mtime=1500919838.006648472 30 atime=1500919928.193315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/ToggleFingeringVisibili0000644000175000017500000000032413135434036035323 0ustar00jjbenhamjjbenham00000000000000;;;ToggleFingeringVisibility (let ((params ToggleFingeringVisibility::params)) (if (ToggleHidden "note" "Fingering") (d-SetSaved #f) (if (not params) (d-InfoDialog (_ "No fingering on note at cursor")))))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.193315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Fingering.scm0000644000175000017500000000124713135434036033254 0ustar00jjbenhamjjbenham00000000000000;;;;;; Fingering (let ((tag "Fingering") (num "0")) (set! num (d-GetUserInput (_ "Fingering") (_ "Give finger number" )"1")) (if (and num (string->number num)) (begin (d-DirectivePut-note-display tag num) (d-DirectivePut-note-postfix tag (string-append "-" num " ")) ;;(d-DirectivePut-note-minpixels tag 20) (d-DirectivePut-note-tx tag 10) (d-Chordize #t)) (let ((confirm (d-GetUserInput (_ "Fingering") (_ "Delete this fingering?") (_ "y")))) (if (and confirm (equal? confirm (_ "y"))) (d-DirectiveDelete-note tag)))) (d-SetSaved #f) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/PaxHeaders.19168/Finger0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.193315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/Fingerings/Finger3.scm0000644000175000017500000000023013135434036032630 0ustar00jjbenhamjjbenham00000000000000(ToggleDirective "note" "postfix" "Fingering" "-3 ") (if (d-Directive-note? "Fingering") (d-DirectivePut-note-display"Fingering" "3")) (d-Chordize #t) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/PaxHeaders.19168/StringNum.xml0000644000000000000000000000013213135434036027340 xustar0030 mtime=1500919838.009981805 30 atime=1500919928.193315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Strings/StringNum.xml0000644000175000017500000000055313135434036031214 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StringNum <_label>String Number <_tooltip>Followed by a number, places string number on note. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/PaxHeaders.19168/Dynamics0000644000000000000000000000013213135434150024726 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/0000755000175000017500000000000013135434150026654 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/Dim.scm0000644000000000000000000000013213135434036026223 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.213315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/Dim.scm0000644000175000017500000000144213135434036030075 0ustar00jjbenhamjjbenham00000000000000;;;Dim (if (Music?) (let ((tag "Dim")) (if (equal? Dim::params "edit") (set! Dim::params #f));not yet implemented (if (d-Directive-chord? tag) (if Dim::params (let ((type (car (list-ref Dim::params 0))) (params (cdr (list-ref Dim::params 0)))) (if (eq? type 'direction) (d-DirectivePut-chord-postfix tag (string-append params "\\dim")) (d-WarningDialog (_ "Not yet implemented")))) (begin (d-DirectiveDelete-chord tag) (d-InfoDialog (_ "dim. start deleted. The end diminuendo should also be deleted ...")))) (begin (d-DirectivePut-chord-postfix tag "-\\dim") (d-DirectivePut-chord-display tag "dim."))) (d-SetSaved #f))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/Cresc.scm0000644000000000000000000000013213135434036026551 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.213315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/Cresc.scm0000644000175000017500000000151713135434036030426 0ustar00jjbenhamjjbenham00000000000000;;;Cresc (if (Music?) (let ((tag "Cresc")) (if (equal? Cresc::params "edit") (set! Cresc::params #f));not yet implemented (if (d-Directive-chord? tag) (if Cresc::params (let ((type (car (list-ref Cresc::params 0))) (params (cdr (list-ref Cresc::params 0)))) (if (eq? type 'direction) (d-DirectivePut-chord-postfix tag (string-append params "\\cresc")) (d-WarningDialog (_ "Not yet implemented")))) (begin (d-DirectiveDelete-chord tag) (d-InfoDialog (_ "cresc. start deleted. The end crescendo should also be deleted ...")))) (begin (d-DirectivePut-chord-postfix tag "-\\cresc") (d-DirectivePut-chord-display tag "cresc."))) (d-SetSaved #f))) ;;;End of scheme script denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/LengthenHairpin.0000644000000000000000000000013213135434036030066 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.213315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/LengthenHairpin.scm0000644000175000017500000000075413135434036032450 0ustar00jjbenhamjjbenham00000000000000;;LengthenHairpins (let ((tag "LengthenHairpins") (amount #f)) (set! amount (d-DirectiveGet-standalone-data tag)) (set! amount (d-GetUserInput (_ "Hairpin Length") (_ "Give extra length required") (if amount amount "10") )) (if (and (string? amount) (string->number amount)) (begin (StandAloneDirectiveProto (cons tag (string-append "\\once \\override Hairpin.minimum-length = #" amount " ")) #f "\nH\nDenemo" ) (d-DirectivePut-standalone-data tag amount) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/DynamicsExtraSpa0000644000000000000000000000013213135434036030150 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.213315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/DynamicsExtraSpace.scm0000644000175000017500000000100613135434036033107 0ustar00jjbenhamjjbenham00000000000000;;DynamicsExtraSpace (let ((tag "DynamicsExtraSpace") (amount #f)) (set! amount (d-DirectiveGet-standalone-data tag)) (set! amount (d-GetUserInput (_ "Dynamics Spacing") (_ "Give extra spacing required") (if amount amount "10") )) (if (and (string? amount) (string->number amount)) (begin (StandAloneDirectiveProto (cons tag (string-append "\\override DynamicText.extra-spacing-width = #'(-" amount " . " amount ") ")) #f "\nS\nDenemo" ) (d-DirectivePut-standalone-data tag amount) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/CrescendoTextSpa0000644000000000000000000000013213135434036030147 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.223315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/CrescendoTextSpanner.xml0000644000175000017500000000113313135434036033500 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CrescendoTextSpanner Cresc <_label>Crescendo Text Spanner <_tooltip>Prints text to start or continue a crescendo extending over a passage. Use for cresc. poco a poco, for example. Terminate with End Crescendo marking or a dynamic mark, else nothing will be printed. LilyPond markup, such as \\bold can be used. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/Dim.xml0000644000000000000000000000013213135434036026241 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.223315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/Dim.xml0000644000175000017500000000062613135434036030116 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Dim Cresc <_label>Dim (Off/On) <_tooltip>Starts a textual diminuendo. Terminate with End Diminuendo or a dynamic. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/TerminateHairpin0000644000000000000000000000013213135434036030174 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.223315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/TerminateHairpinAtBarline.scm0000644000175000017500000000047513135434036034416 0ustar00jjbenhamjjbenham00000000000000(let ((tag "TerminateHairpinAtBarline")) (d-MoveCursorRight) (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag "<>\\! ") (d-DirectivePut-standalone-display tag (_ "End Hairpin")) (d-DirectivePut-standalone-minpixels tag 30) (d-MoveCursorRight) (d-ChooseBarline) (d-SetSaved #f) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/TerminateHairpin0000644000000000000000000000013213135434036030174 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.223315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/TerminateHairpinAtBarline.xml0000644000175000017500000000104713135434036034430 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TerminateHairpinAtBarline DynamicsExtraSpace <_label>Terminate Hairpin at Barline <_tooltip>Ends a cresc. or dim, hairpin at the barline following the current note/chord. This command inserts a standalone Denemo Directive after the note/chord at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/DecrescendoTextS0000644000000000000000000000013213135434036030137 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.223315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/DecrescendoTextSpanner.xml0000644000175000017500000000113513135434036034013 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DecrescendoTextSpanner Dim <_label>Diminuendo Text Spanner <_tooltip>Prints text to start or continue a crescendo extending over a passage. Use for cresc. poco a poco, for example. Terminate with End Diminuendo marking or a dynamic mark, else nothing will be printed. LilyPond markup, such as \\bold can be used. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/Cresc.xml0000644000000000000000000000013213135434036026567 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.236648473 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/Cresc.xml0000644000175000017500000000072113135434036030440 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Cresc ToggleEndDiminuendo <_label>Cresc (Off/On) <_tooltip>Starts textual cresc. (or deletes one already present at cursor). Terminate with End Crescendo or with a dynamic. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/LengthenHairpin.0000644000000000000000000000013213135434036030066 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.236648473 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/LengthenHairpin.xml0000644000175000017500000000065613135434036032467 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LengthenHairpin DynamicsExtraSpace <_label>Lengthen Hairpin <_tooltip>Inserts a directive to lengthen the following cresc or dim hairpin. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/DecrescendoTextS0000644000000000000000000000013213135434036030137 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.236648473 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/DecrescendoTextSpanner.scm0000644000175000017500000000400513135434036033774 0ustar00jjbenhamjjbenham00000000000000;;;DecrescendoTextSpanner (if (Music?) (let ((tag "DecrescendoTextSpanner")(params DecrescendoTextSpanner::params)(text (_ "\\bold cresc. (or poco if continuing the dim.)"))) (if (equal? params "edit") (set! params (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Advanced") 'advanced)))) (if (d-Directive-chord? tag) (cond ((not params) (set! params 'delete)) ((list? params) (begin (d-WarningDialog (_ "Sorry, this operation needs to be applied to the start of the Decrescendo.")) (set! params 'abandon))) ((string? params) (set! text params)) ((eq? params 'advanced) (if (not (d-DirectiveTextEdit-chord tag)) (set! params 'delete))) (else (set! text (d-DirectiveGet-chord-display tag))))) (if (not (eq? params 'abandon)) (begin (if (eq? params 'delete) (begin (d-DirectiveDelete-chord tag) (d-InfoDialog (_ "Deleted"))) (begin (if (and (string? params) (not (equal? params "edit"))) (set! text params) (set! text (d-GetUserInput (_ "Decrescendo Text Spanner") (_ "Give text for start or continuation") text))) (if text (begin (d-DirectivePut-chord-prefix tag (string-append "\\once\\set decrescendoText = \\markup {\\italic { " text "}}\\once\\set decrescendoSpanner = #'text ")) (d-DirectivePut-chord-postfix tag "\\>") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-display tag text))))) (d-SetSaved #f))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/CrescendoTextSpa0000644000000000000000000000013213135434036030147 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.243315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/CrescendoTextSpanner.scm0000644000175000017500000000401713135434036033466 0ustar00jjbenhamjjbenham00000000000000;;;CrescendoTextSpanner (if (Music?) (let ((tag "CrescendoTextSpanner")(params CrescendoTextSpanner::params)(text (_ "\\bold cresc. (or poco if continuing the cresc.)"))) (if (equal? params "edit") (set! params (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Advanced") 'advanced)))) (if (d-Directive-chord? tag) (cond ((not params) (set! params 'delete)) ((list? params) (begin (d-WarningDialog (_ "Sorry, this operation needs to be applied to the start of the crescendo.")) (set! params 'abandon))) ((string? params) (set! text params)) ((eq? params 'advanced) (if (not (d-DirectiveTextEdit-chord tag)) (set! params 'delete))) (else (set! text (d-DirectiveGet-chord-display tag))))) (if (not (eq? params 'abandon)) (begin (if (eq? params 'delete) (begin (d-DirectiveDelete-chord tag) (d-InfoDialog (_ "Deleted"))) (begin (if (and (string? params) (not (equal? params "edit"))) (set! text params) (set! text (d-GetUserInput (_ "Crescendo Text Spanner") (_ "Give text for start or continuation") text))) (if text (begin (d-DirectivePut-chord-prefix tag (string-append "\\once\\set crescendoText = \\markup {\\italic { " text "}}\\once\\set crescendoSpanner = #'text ")) (d-DirectivePut-chord-postfix tag "\\<") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-display tag text))))) (d-SetSaved #f))))) ;;;End of scheme script denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/PaxHeaders.19168/DynamicsExtraSpa0000644000000000000000000000013213135434036030150 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.243315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Dynamics/DynamicsExtraSpace.xml0000644000175000017500000000073313135434036033133 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DynamicsExtraSpace DecrescendoTextSpanner <_label>Extra Spacing <_tooltip>Music is spaced out by the extra amount given to avoid textual dynamic markings colliding. Not for hairpins. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/PaxHeaders.19168/ChordSymbols0000644000000000000000000000013213135434150025567 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/ChordSymbols/0000755000175000017500000000000013135434150027515 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/ChordSymbols/PaxHeaders.19168/CompactChord0000644000000000000000000000013213135434036030140 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.243315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/ChordSymbols/CompactChordSymbol.scm0000644000175000017500000000563713135434036033773 0ustar00jjbenhamjjbenham00000000000000;;;CompactChordSymbol (let ((tag "CompactChordSymbol") (params CompactChordSymbol::params)(symbol "9add13")(x-scale "0.4")(y-scale "0.4")(x-offset "-2")(y-offset "0")) (define (put-data) (define data (d-DirectiveGet-standalone-data tag)) (if data (set! data (eval-string data)) (set! data '())) (set! data (assq-set! data 'symbol symbol)) (set! data (assq-set! data 'x-scale x-scale)) (set! data (assq-set! data 'y-scale y-scale)) (set! data (assq-set! data 'x-offset x-offset)) (set! data (assq-set! data 'y-offset y-offset)) (d-DirectivePut-standalone-data tag (format #f "'~s" data))) (define (put-symbol) (d-DirectivePut-standalone-postfix tag (string-append "_\\markup\\scale #'(" x-scale " . " y-scale") \\sans \\fontsize #10 { \\hspace #" (number->string (/ 5 (string->number x-scale))) " \\bold " symbol "}")) (d-DirectivePut-standalone-graphic tag (string-append "\n" symbol "\nDenemo\n18")) (d-DirectivePut-standalone-gx tag -50) (d-DirectivePut-standalone-gy tag 20) (d-DirectivePut-standalone-minpixels tag 30) (put-data) (d-SetSaved #f) (d-RefreshDisplay)) (define (get-data) (set! symbol (d-GetUserInput (_ "Chord Symbol") (_ "Give text of chord symbol") symbol)) (if symbol (begin (set! x-scale (d-GetUserInput (_ "Chord Symbol") (_ "Give horizontal scale") x-scale)) (set! y-scale (d-GetUserInput (_ "Chord Symbol") (_ "Give vertical scale") y-scale))))) (if (d-Directive-standalone? tag) (let ((data (eval-string (d-DirectiveGet-standalone-data tag)))) (set! symbol (assq-ref data 'symbol)) (set! x-scale (assq-ref data 'x-scale)) (set! y-scale (assq-ref data 'y-scale)) (set! x-offset (assq-ref data 'x-offset)) (set! y-offset (assq-ref data 'y-offset)) (set! x-offset (d-GetUserInput (_ "Chord Symbol") (_ "Give horizontal shift") x-offset)) (if (and (string? x-offset) (string->number x-offset)) (begin (set! y-offset (d-GetUserInput (_ "Chord Symbol") (_ "Give vertical shift") y-offset)) (if (and (string? y-offset) (string->number y-offset)) (d-DirectivePut-standalone-prefix tag (string-append "-\\tweak #'extra-offset #'(" x-offset " . " y-offset ")"))))) (get-data) (if symbol (put-symbol))) (if (Note?) (begin (get-data) (d-MoveCursorRight) (d-DirectivePut-standalone-prefix tag (string-append "-\\tweak #'extra-offset #'(" x-offset " . " y-offset ")")) (put-symbol)) (d-WarningDialog (_ "Insert Root note of chord for symbol to attach to"))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/ChordSymbols/PaxHeaders.19168/CompactChord0000644000000000000000000000013213135434036030140 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.263315139 30 ctime=1500919912.986648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/ChordSymbols/CompactChordSymbol.xml0000644000175000017500000000074213135434036034001 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CompactChordSymbol EditChords <_label>Chord Chart Symbol <_tooltip>Creates an arbitrary chord symbol text for the root note at the cursor - used in compact chord charts for uncommon chords. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/PaxHeaders.19168/FiguredBass0000644000000000000000000000013213135434150025355 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/0000755000175000017500000000000013135434150027303 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/PaxHeaders.19168/AdjustBassFig0000644000000000000000000000013213135434036030051 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.263315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/AdjustBassFigureHeight.xml0000644000175000017500000000074413135434036034373 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EditFiguredBass AdjustBassFigureHeight <_label>Height of Bass Figure <_tooltip>Sets the height of the bass figure above the note. The unit is the distance between adjacent lines in the staff. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/PaxHeaders.19168/AdjustFigured0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.263315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/AdjustFiguredBassHeights.xml0000644000175000017500000000070113135434036034713 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AdjustBassFigureHeight AdjustFiguredBassHeights <_label>Heights of Groups <_tooltip>Allows several groups of figures to be individually adjusted for height. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/PaxHeaders.19168/AutoBassFigur0000644000000000000000000000013213135434036030076 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.263315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/AutoBassFigureHeight.xml0000644000175000017500000000101113135434036034035 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AdjustBassFigureHeight AutoBassFigureHeight <_label>Adjust All Heights <_tooltip>Sets the heights of the bass figures above the notes throughout the score to avoid ungainly positions. The bass figures must be on the lowest staff denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/PaxHeaders.19168/AdjustBassFig0000644000000000000000000000013213135434036030051 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.269981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/AdjustBassFigureHeight.scm0000644000175000017500000000203313135434036034346 0ustar00jjbenhamjjbenham00000000000000;;;AdjustBassFigureHeight (let ((tag "FBHeight1") (offset #f)(params AdjustBassFigureHeight::params)) (if (and params (not (equal? params "edit"))) (begin (set! tag (car AdjustBassFigureHeight::params)) (set! offset (cdr AdjustBassFigureHeight::params)))) (if (not offset) (begin (set! offset (d-DirectiveGet-note-display tag)) (if (not offset) (set! offset 7.0)) (set! offset (d-GetUserInput (_ "Figured Bass Height") (_ "Give height adjustment (unit = staff space): ") offset)))) (if (and (string? offset) (string->number offset)) (begin (d-DirectivePut-note-prefix tag (string-append "\\once \\override Staff.BassFigureAlignmentPositioning #'Y-offset = #'" offset " ")) (d-DirectivePut-note-override tag DENEMO_ALT_OVERRIDE) (d-DirectivePut-note-display tag offset) (d-DirectivePut-note-ty tag -10)) (d-DirectiveDelete-note tag)) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/PaxHeaders.19168/PlaceFiguredB0000644000000000000000000000013213135434036030014 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.269981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/PlaceFiguredBassBelow.xml0000644000175000017500000000103413135434036034162 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShowFiguredBass PlaceFiguredBassBelow <_label>Place Figures Below Bass Notes <_tooltip>Places an instruction (between $ ... $) which tells the engraver to place the figures below from this note on. Any figure for this note should follow the last $ denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/PaxHeaders.19168/PlaceFiguredB0000644000000000000000000000013213135434036030014 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.269981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/PlaceFiguredBassBelow.scm0000644000175000017500000000016513135434036034150 0ustar00jjbenhamjjbenham00000000000000;;;PlaceFiguredBassBelow (d-EditFiguredBass "$\\override Staff.BassFigureAlignmentPositioning #'direction = #DOWN $")denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/PaxHeaders.19168/AutoBassFigur0000644000000000000000000000013213135434036030076 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.269981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/AutoBassFigureHeight.scm0000644000175000017500000001274513135434036034037 0ustar00jjbenhamjjbenham00000000000000(let ((transpose 0)) (define (AdjustFigures) (define (GetNoteStaffPosition) (define height (d-GetNoteStaffPosition)) (if height (+ transpose height) #f)) (d-MoveToBeginning) (while (d-MoveToStaffDown)) (while (d-NextNote) (let ((fig (d-GetBassFigure)) (beamed (if (> (d-GetNoteBaseDuration) 2) (* 1.3 (d-GetNoteBaseDuration)) #f)) (height (GetNoteStaffPosition))) (define (multiple fig) (string-index fig #\|)) (define (adjust height thelist) (define count 0) (if (< height 4) (set! height 4)) (while (pair? thelist) (set! count (1+ count)) ;(disp "the list " thelist "\n") (d-AdjustBassFigureHeight (cons (string-append "FBHeight" (number->string count)) (number->string (+ (* 1.75 (car thelist)) -1.250 (/ (+ 5 height) 2))))) (set! thelist (cdr thelist)))) (define (skip-over-spaces fig count len) (let loop () (define this (string-ref fig count)) (if (and (equal? this #\space) (< count (string-length fig))) (begin (set! count (1+ count)) (if (< count len) (loop))))) (1- count)) (define (skip-over-figures fig count len) (let loop () (define this (string-ref fig count)) (if (not (or (equal? this #\space)(equal? this #\|))) (begin (set! count (1+ count)) (if (< count len) (loop))))) (1- count)) (define (figure-heights fig) ;; returns a list of the number of figures stacked vertically for each group in the string fig (define thelist '()) (define num 1) ;the number of figures stacked vertically in the current group (define len (1- (string-length fig))) (let loop ((count (1+ (skip-over-spaces fig 0 len)))) (define this (string-ref fig count)) ;(disp "looping with <" fig "> char " this " count" count " num =" num "\n") (if (equal? this #\|) (begin (set! thelist (cons (1- num) thelist)) (set! count (skip-over-spaces fig (1+ count) len)) (set! num 1)) (if (equal? this #\space) (begin (set! num (1+ num)) (set! count (skip-over-spaces fig count len))) (begin (set! count (skip-over-figures fig count len))))) (set! this (string-ref fig count)) (if (and (= len 0) (= num 1)) (set! num (+ (if (equal? this #\+) 0.5 (if (equal? this #\-) 0.35 0)) num))) ;sharp and flat glyph are not on baseline (if (< count len) (loop (1+ count)) (set! thelist (cons num thelist)))) (reverse thelist)) ;;;end create figure heights list ;;;procedure (if (and fig height (not (equal? fig "_"))) (let ((thelist (figure-heights fig))(before 0)(after 0)(after-fig "~")) (if (d-MoveCursorLeft) (begin (set! before (GetNoteStaffPosition)) (if (or (not before) (< before 5)) (set! before height)) (d-MoveCursorRight) (if (d-MoveCursorRight) (begin (set! after (GetNoteStaffPosition)) (set! after-fig (d-GetBassFigure)) (if (or (not after) (< after 5)) (set! after height)) (d-MoveCursorLeft))))) (if (not (equal? after-fig "~")) (if (and (> before height)(> after height)) ;this note is in a trough (begin ;(disp "the list " thelist "\n") (set! before (if (> before after) after before)) (adjust before thelist)) (begin (if (multiple fig) (begin (if beamed (set! height (+ beamed height))) (adjust (if (d-IsTied) (1+ height) height) thelist))))))))))) ;;;end of AdjustFigures for whole movement (if (d-Directive-score? "TransposeOnPrint") (begin (set! transpose (d-GetUserInput "Transposed Score" "Give transposition steps (e.g. -2 for down a second)" "3")) (if (and transpose (string->number transpose)) (set! transpose (1- (string->number transpose))) (set! transpose 0)))) (d-PushPosition) (while (d-PreviousMovement)) (AdjustFigures) (while (d-NextMovement) (AdjustFigures)) (d-PopPosition)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/PaxHeaders.19168/FiguredBassTw0000644000000000000000000000013213135434036030071 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.279981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/FiguredBassTweak.scm0000644000175000017500000000612013135434036033203 0ustar00jjbenhamjjbenham00000000000000(let ((tag "FiguredBassTweak")) (d-DirectivePut-score-prefix tag "#(define-public (format-bass-figures figure event context) (let* ((fig (ly:event-property event 'figure)) (fig-markup (if (number? figure) ;; this is not very elegant, but center-aligning ;; all digits is problematic with other markups, ;; and shows problems in the (lack of) overshoot ;; of feta-alphabet glyphs. ((if (<= 10 figure) (lambda (y) (make-translate-scaled-markup (cons -0.7 0) y)) identity) (cond ((eq? #t (ly:event-property event 'diminished)) (markup #:slashed-digit figure)) ((eq? #t (ly:event-property event 'augmented-slash)) (markup #:backslashed-digit figure)) (else (markup #:number (number->string figure 10))))) #f)) (alt (ly:event-property event 'alteration)) (alt-markup (if (number? alt) (markup #:general-align Y DOWN #:fontsize (if (not (= alt DOUBLE-SHARP)) ;-2 2 ;; is the default (if (not fig-markup) 0 -2) 4 ;; changed ) (alteration->text-accidental-markup alt)) #f)) (plus-markup (if (eq? #t (ly:event-property event 'augmented)) (markup #:number \"+\") #f)) (alt-dir (ly:context-property context 'figuredBassAlterationDirection)) (plus-dir (ly:context-property context 'figuredBassPlusDirection))) (if (and (not fig-markup) alt-markup) (begin (set! fig-markup (markup #:left-align #:pad-around 0.3 alt-markup)) (set! alt-markup #f))) (if (and (eqv? 0 (ly:duration-log (ly:event-property event 'duration))) (markup? fig-markup)) (set! fig-markup (markup #:translate (cons 1.0 0) #:center-align fig-markup))) (if alt-markup (set! fig-markup (markup #:put-adjacent X (if (number? alt-dir) alt-dir LEFT) fig-markup #:pad-x 0.2 #:raise (if (= alt FLAT) 0.1 -0.1) alt-markup))) ;changed (if plus-markup (set! fig-markup (if fig-markup (markup #:put-adjacent X (if (number? plus-dir) plus-dir LEFT) fig-markup #:pad-x 0.2 plus-markup) plus-markup))) (if (markup? fig-markup) (markup #:fontsize -2 fig-markup) empty-markup))) \\layout { \\context { \\Score figuredBassFormatter = #format-bass-figures } } ")) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/PaxHeaders.19168/AdjustFigured0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.289981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/AdjustFiguredBassHeights.scm0000644000175000017500000000211113135434036034672 0ustar00jjbenhamjjbenham00000000000000;;;AdjustBassFigureHeights (let ((tagbase "FBHeight")(number #f)(offset #f)) (set! number (d-GetUserInput (_ "Figured Bass Height") (_ "Give number of groups: ") "2")) (if (and (string? number) (string->number number)) (let () (set! number (string->number number)) (let loop ((count 1)) (define tag (string-append tagbase (number->string count))) (set! offset (d-DirectiveGet-note-display tag)) (if (not offset) (set! offset 7.0)) (set! offset (d-GetUserInput (_ "Figured Bass Height") (_ "Give height adjustment (unit = staff space): ") offset)) (if (and (string? offset) (string->number offset)) (begin (d-DirectivePut-note-prefix tag (string-append "\\once \\override Staff.BassFigureAlignmentPositioning #'Y-offset = #'" offset " ")) (d-DirectivePut-note-override tag DENEMO_ALT_OVERRIDE) (d-DirectivePut-note-display tag offset) ;(d-DirectivePut-note-ty tag -10) (if (< count number) (loop (1+ count)))))))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/PaxHeaders.19168/FiguredBassTw0000644000000000000000000000013213135434036030071 xustar0030 mtime=1500919838.003315139 30 atime=1500919928.289981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/FiguredBass/FiguredBassTweak.xml0000644000175000017500000000066713135434036033233 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FigureBassTweak AutoBassFigureHeight <_label>Tweak Default Appearance <_tooltip>Alters the default figured bass appearance to a more 18th c. look. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/PaxHeaders.19168/Ornaments0000644000000000000000000000013213135434150025125 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/0000755000175000017500000000000013135434150027053 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/Trill+Below.xml0000644000000000000000000000013213135434036030061 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.289981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Trill+Below.xml0000644000175000017500000000054413135434036031735 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Trill+Below <_label>18th c Trill Below <_tooltip>Inserts 18th c style trill below note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/OrnamentAcciden0000644000000000000000000000013213135434036030162 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.309981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/OrnamentAccidentalBelow.scm0000644000175000017500000000052113135434036034304 0ustar00jjbenhamjjbenham00000000000000;;;AccidentalBelow (let ((tag "AccidentalBelow")) (d-SetSaved #f) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-prefix tag "\\once \\override TextScript.script-priority = #-100 ") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX))))denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleUpPrall.s0000644000000000000000000000013213135434036030112 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.309981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleUpPrall.scm0000644000175000017500000000023113135434036032277 0ustar00jjbenhamjjbenham00000000000000;;;ToggleUpPrall (ChordAnnotation "ToggleUpPrall" "\\upprall" ToggleUpPrall::params LG-UpPrall) ;;(d-DirectivePut-chord-gy "UpPrall" -100) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleTrill.xml0000644000000000000000000000013213135434036030157 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.309981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleTrill.xml0000644000175000017500000000053313135434036032031 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTrill <_label>Trill (Off/On) <_tooltip>Adds/Removes a trill to the note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleTurn.xml0000644000000000000000000000013213135434036030021 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.309981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleTurn.xml0000644000175000017500000000057713135434036031703 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TogglePrallPrall ToggleTurn <_label>Turn (Off/On) <_tooltip>Add/Removes a Turn to the note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/CustomOrnamentD0000644000000000000000000000013213135434036030212 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.309981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/CustomOrnamentDefinition.xml0000644000175000017500000000116113135434036034566 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CustomOrnamentDefinition <_label>Create Custom Ornament <_tooltip>Allows the user to create a customized ornament (or load one previously created) into this score's definitions. Ornament names should be start in lower case and have no numerals. If a standard ornament is used, e.g. trill, then this will replace the standard ornament throughout the score. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/Trill+Above.xml0000644000000000000000000000013213135434036030045 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.319981806 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Trill+Above.xml0000644000175000017500000000054513135434036031722 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Trill+Above <_label>18th c. Trill Above <_tooltip>Inserts 18th c style trill above note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/OrnamentSharp.x0000644000000000000000000000013213135434036030157 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.319981806 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/OrnamentSharp.xml0000644000175000017500000000064613135434036032367 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OrnamentSharp ToggleDownPrall <_label>Attach ♯ (Off/On) <_tooltip>Places a sharp above the ornament on the note at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleReverseTu0000644000000000000000000000013213135434036030216 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.319981806 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleReverseTurn.xml0000644000175000017500000000062613135434036033232 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TogglePrallPrall ToggleReverseTurn <_label>Reverse Turn (Off/On) <_tooltip>Add/Removes a Reverse Turn to the note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/Claveciniste0000644000000000000000000000013213135434150027536 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/0000755000175000017500000000000013135434150031464 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/PaxHeaders.19168/To0000644000000000000000000000031213135434036030123 xustar00112 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/ToggleTremblement.scm 30 mtime=1500919838.006648472 30 atime=1500919928.319981806 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/ToggleTremblement.s0000644000175000017500000000011713135434036035272 0ustar00jjbenhamjjbenham00000000000000;;;ToggleTremblement (ToggleOrnament "tremblement" ToggleTremblement::params) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/PaxHeaders.19168/To0000644000000000000000000000031213135434036030123 xustar00112 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/ToggleTremblement.xml 30 mtime=1500919838.006648472 30 atime=1500919928.329981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/ToggleTremblement.x0000644000175000017500000000065713135434036035310 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Tremblement ToggleSuspension <_label>Tremblement <_tooltip>Attach a tremblement to the current note/chord or remove it if already present. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/PaxHeaders.19168/To0000644000000000000000000000013213135434036030123 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.329981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/TogglePince.xml0000644000175000017500000000051313135434036034410 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TogglePince <_label>Pincé <_tooltip>Pincé ornament (Off/On) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/PaxHeaders.19168/To0000644000000000000000000000032013135434036030122 xustar00118 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/ToggleTremblementAppuye.scm 30 mtime=1500919838.006648472 30 atime=1500919928.329981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/ToggleTremblementAp0000644000175000017500000000014213135434036035310 0ustar00jjbenhamjjbenham00000000000000;;ToggleTremblementAppuye (ToggleOrnament "tremblement_appuye" ToggleTremblementAppuye::params) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/PaxHeaders.19168/To0000644000000000000000000000031113135434036030122 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/ToggleSuspension.scm 30 mtime=1500919838.006648472 30 atime=1500919928.329981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/ToggleSuspension.sc0000644000175000017500000000011213135434036035320 0ustar00jjbenhamjjbenham00000000000000;;ToggleSuspension (ToggleOrnament "suspension" ToggleSuspension::params) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/PaxHeaders.19168/To0000644000000000000000000000013213135434036030123 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.329981805 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/TogglePince.scm0000644000175000017500000000007313135434036034373 0ustar00jjbenhamjjbenham00000000000000;;TogglePince (ToggleOrnament "pince" TogglePince::params) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/PaxHeaders.19168/To0000644000000000000000000000031113135434036030122 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/ToggleSuspension.xml 30 mtime=1500919838.006648472 30 atime=1500919928.339981806 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/ToggleSuspension.xm0000644000175000017500000000057413135434036035353 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleSuspension OrnamentFlat <_label>Suspension <_tooltip>Suspension ornament (Off/On) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/PaxHeaders.19168/To0000644000000000000000000000032013135434036030122 xustar00118 path=denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/ToggleTremblementAppuye.xml 30 mtime=1500919838.006648472 30 atime=1500919928.339981806 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Claveciniste/ToggleTremblementAp0000644000175000017500000000072413135434036035316 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTremblementAppuye ToggleTremblement <_label>Tremblement Appuyé <_tooltip>Attaches tremblement appuyé to the note/chord at the cursor, or removes it if already present. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleMordent.s0000644000000000000000000000013213135434036030143 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.339981806 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleMordent.scm0000644000175000017500000000015213135434036032332 0ustar00jjbenhamjjbenham00000000000000;;;ToggleMordent (ChordAnnotation "ToggleMordent" "\\mordent" ToggleMordent::params LG-Mordent) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleDownPrall0000644000000000000000000000013213135434036030174 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.339981806 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleDownPrall.scm0000644000175000017500000000017113135434036032625 0ustar00jjbenhamjjbenham00000000000000;;;ToggleDownPrall (ChordAnnotation "ToggleDownPrall" "\\downprall" ToggleDownPrall::params LG-DownPrall) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/TogglePrall.xml0000644000000000000000000000013213135434036030143 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.339981806 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/TogglePrall.xml0000644000175000017500000000053313135434036032015 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TogglePrall <_label>Prall (Off/On) <_tooltip>Adds/Removes a prall to the note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/AdjustCustomOrn0000644000000000000000000000013213135434036030234 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.356648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/AdjustCustomOrnament.scm0000644000175000017500000000362413135434036033720 0ustar00jjbenhamjjbenham00000000000000;;;AdjustCustomOrnament ;;;choose a custom ornament at the cursor, change direction/padding (let ((tag #f)(params AdjustCustomOrnament::params)) (define (do-direction) (let ((direction #f) (choice #f) (menu (list (cons (_ "Up") "^") (cons (_ "Down") "_") (cons (_ "Auto") "-") )) ) (set! choice (RadioBoxMenuList menu)) (if choice (begin (if (defined? (string->symbol (string-append "d-" tag))) (eval-string (string-append "(d-" tag " (list (cons 'direction \"" choice "\")))")) (eval-string (string-append "(d-ToggleCustomOrnament (list \"" tag "\" (cons 'direction \"" choice "\")))"))))))) (define (do-padding) (let ((padding (d-GetUserInput (_ "Padding") (_ "Give amount of padding required around this item (in staff spaces)") "0.5"))) (if padding (begin (if (defined? (string->symbol (string-append "d-" tag))) (eval-string (string-append "(d-" tag " (list (cons 'padding \"" padding "\")))")) (eval-string (string-append "(d-ToggleCustomOrnament (list \"" tag "\" (cons 'padding \"" padding "\")))"))))))) ;;;;;;;; actual procedure (if params (set! tag (d-DirectiveGetForTag-chord params)) (set! tag (d-DirectiveGetForTag-chord))) (if tag (let ((menu "")(choice #f)) (set! menu (list (cons (_ "Up/Down") do-direction) (cons (_ "Padding") do-padding) )) (set! choice (RadioBoxMenuList menu)) (if choice (choice) (disp "cancelled"))) (d-WarningDialog (_ "No Custom Ornaments at cursor position")))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleTrill.scm0000644000000000000000000000013213135434036030141 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.356648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleTrill.scm0000644000175000017500000000123213135434036032010 0ustar00jjbenhamjjbenham00000000000000 ;;;ToggleTrill (let ((tag "ToggleTrill") (note (d-GetNoteAsMidi)) (lower #f)(upper #f) ) (ChordAnnotation tag "\\trill" ToggleTrill::params LG-Trill) (if (d-Directive-chord? tag) (begin (set! lower (string-append "(d-PlayMidiNote " (number->string note) " 255 0 60)")) (set! upper (string-append "(d-PlayMidiNote " (number->string (+ 2 note)) " 255 0 60)")) (eval-string upper) (d-OneShotTimer 60 lower) (d-OneShotTimer 120 upper) ;(d-OneShotTimer 180 lower) ;(d-OneShotTimer 240 upper) (d-OneShotTimer 180 (string-append "(d-PlayMidiNote " (number->string note) " 255 0 300)"))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/TogglePrall.scm0000644000000000000000000000013213135434036030125 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.356648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/TogglePrall.scm0000644000175000017500000000014413135434036031775 0ustar00jjbenhamjjbenham00000000000000;;;TogglePrall (ChordAnnotation "TogglePrall" "\\prall" TogglePrall::params LG-Prall) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/Trill+Below.scm0000644000000000000000000000013213135434036030043 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.356648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Trill+Below.scm0000644000175000017500000000007513135434036031716 0ustar00jjbenhamjjbenham00000000000000(d-InsertLilyDirective "directive=_\"+\"\0display=Tr+Below") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleTurn.scm0000644000000000000000000000013213135434036030003 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.366648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleTurn.scm0000644000175000017500000000013713135434036031655 0ustar00jjbenhamjjbenham00000000000000;;;ToggleTurn (ChordAnnotation "ToggleTurn" "\\turn" ToggleTurn::params LG-Turn) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/OrnamentWithAcc0000644000000000000000000000013213135434036030156 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.366648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/OrnamentWithAccidentals.xml0000644000175000017500000000067513135434036034362 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OrnamentWithAccidentals ToggleDownPrall <_label>Ornament with Accidentals <_tooltip>Create an ornament with accidentals above and/or below the ornament. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/Trill+Above.scm0000644000000000000000000000013213135434036030027 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.366648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/Trill+Above.scm0000644000175000017500000000007513135434036031702 0ustar00jjbenhamjjbenham00000000000000(d-InsertLilyDirective "directive=^\"+\"\0display=Tr+Above") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleCustomOrn0000644000000000000000000000013213135434036030223 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.366648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleCustomOrnament.xml0000644000175000017500000000066413135434036033726 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleCustomOrnament <_label>Attach Custom Ornament (Off/On) <_tooltip>Typesets a custom ornament on the current note/chord. Removes that ornament if already present. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/OrnamentWithAcc0000644000000000000000000000013213135434036030156 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.366648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/OrnamentWithAccidentals.scm0000644000175000017500000001164413135434036034342 0ustar00jjbenhamjjbenham00000000000000;;;OrnamentWithAccidentals (let* ((tag "OrnamentWithAccidentals") (params OrnamentWithAccidentals::params) (data (d-DirectiveGet-chord-data tag)) (direction "-") (ornament #f)(above #f)(below #f) (markup #f) (base-markup "\\tweak baseline-skip #1 ^\\markup {\\center-column {\\tiny \\sharp \\musicglyph #\"scripts.turn\" \\tiny \\flat}}" )) (define (get-accidental prompt) (RadioBoxMenu (cons prompt #f) (cons "♯" "sharp") (cons "â™­" "flat") (cons "â™®" "natural") )) (define (get-data) (set! ornament (RadioBoxMenu (cons (_ "Trill") "trill") (cons (_ "Turn") "turn") (cons (_ "Reverse Turn") "reverseturn") (cons (_ "Mordent") "mordent") (cons (_ "Prall") "prall") (cons (_ "Up Prall") "upprall") (cons (_ "Down Prall") "downprall") (cons (_ "Custom") 'custom))) (if ornament (begin (set! direction (RadioBoxMenu (cons (_ "Up") "^") (cons (_ "Down") "_") (cons (_ "Auto") "-"))) (set! above (get-accidental (_ "No accidental above"))) (set! below (get-accidental (_ "No accidental below"))) (if (eq? ornament 'custom) (let ((data (GetDefinitionDataFromUser))) (if data (let ((epsfile (list-ref (eval-string data) 1))(size (list-ref (eval-string data) 2))) (set! ornament (list-ref (eval-string data) 0)) (set! markup (string-append "\\tweak self-alignment-X #-0.8 \\tweak TextScript.padding #2.5 \\tweak baseline-skip #1 " direction "\\markup {\\center-column {" (if above (string-append "\\tiny \\" above) "") " \\epsfile #X #" size " #\"" epsfile "\"" (if below (string-append "\\tiny \\" below) "") "}}" ))) (begin (d-WarningDialog (_ "No Definitions have been created for this score")) #f))) (begin (set! markup (string-append "\\tweak self-alignment-X #-0.8 \\tweak baseline-skip #1 " direction "\\markup {\\center-column {" (if above (string-append "\\tiny \\" above) "") " \\musicglyph #\"scripts." ornament "\"" (if below (string-append "\\tiny \\" below) "") "}}"))))))) (if data (begin (set! data (eval-string data)) (set! direction (list-ref data 0)) (set! above (list-ref data 1)) (set! ornament (list-ref data 2)) (set! below (list-ref data 3)) (set! base-markup (list-ref data 4)) (if (not params) (let ((choice (RadioBoxMenu (cons (_ "Delete") 'delete) (cons (_ "Edit") 'edit)))) (case choice ((delete) (d-DirectiveDelete-chord tag) (set! params 'finished)) ((edit) (set! params "edit")) (else (set! params 'finished))))))) (if (not markup) (set! markup base-markup)) (if (list? params) (let ((offsetx #f) (offsety #f)(padding #f)) (cond ((eq? (car (list-ref params 0)) 'offsetx) (set! offsetx (cdr (list-ref params 0))) (set! offsety (cdr (list-ref params 1))) (set! markup (string-append "\\tweak #'X-offset #" offsetx " -\\tweak #'Y-offset #" offsety " -" base-markup))) ( (eq? (car (list-ref params 0)) 'direction) (set! direction (cdr (list-ref params 0)))) ( (eq? (car (list-ref params 0)) 'padding) (set! padding (cdr (list-ref params 0))) (set! markup (string-append "\\tweak padding #" padding " " base-markup)))) (d-DirectivePut-chord-postfix tag (string-append direction markup))) (if (equal? params "edit") (begin (set! params 'finished) (d-AdjustCustomOrnament tag)) (begin (if (and (not (eq? params 'finished)) (get-data)) (begin (set! base-markup markup) (ChordAnnotation tag markup #f #f "~" direction)) (set! params 'finished))))) (if (and (not (eq? params 'finished)) (d-Directive-chord? tag)) (d-DirectivePut-chord-data tag (format #f "(list ~s ~s ~s ~s ~s)" direction above ornament below base-markup)))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleReverseTu0000644000000000000000000000013213135434036030216 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.376648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleReverseTurn.scm0000644000175000017500000000020213135434036033202 0ustar00jjbenhamjjbenham00000000000000;;;ToggleReverseTurn (ChordAnnotation "ToggleReverseTurn" "\\reverseturn" ToggleReverseTurn::params LG-ReverseTurn) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/EditCustomOrnam0000644000000000000000000000013213135434036030205 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.376648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/EditCustomOrnamentDefinition.xml0000644000175000017500000000103213135434036035371 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EditCustomOrnamentDefinition CustomOrnamentDefinition <_label>Edit Custom Ornament Definition <_tooltip>Edit the definition (size or appearance) of a custom ornament definition. The definition must already have been created/loaded in this score. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleDownPrall0000644000000000000000000000013213135434036030174 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.376648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleDownPrall.xml0000644000175000017500000000070313135434036032644 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleDownPrall ToggleUpPrall <_label>Down Prall (Off/On) <_tooltip>Typesets a down prall on the current note/chord. Removes that ornament if already present. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/OrnamentFlat.xm0000644000000000000000000000013213135434036030145 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.386648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/OrnamentFlat.xml0000644000175000017500000000064113135434036032173 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OrnamentFlat OrnamentSharp <_label>Attach â™­ (Off/On) <_tooltip>Places a flat above the ornament on the note at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/TogglePrallPral0000644000000000000000000000013213135434036030163 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.386648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/TogglePrallPrall.scm0000644000175000017500000000017513135434036032774 0ustar00jjbenhamjjbenham00000000000000;;;TogglePrallPrall (ChordAnnotation "TogglePrallPrall" "\\prallprall" TogglePrallPrall::params LG-PrallPrall) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/AdjustCustomOrn0000644000000000000000000000013213135434036030234 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.386648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/AdjustCustomOrnament.xml0000644000175000017500000000072713135434036033737 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AdjustCustomOrnament EditCustomOrnamentDefinition <_label>Adjust Ornament <_tooltip>Place the ornament attached to the note at the cursor above/below or adjust padding around it. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleMordent.x0000644000000000000000000000013213135434036030150 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.386648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleMordent.xml0000644000175000017500000000054113135434036032352 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleMordent <_label>Mordent (Off/On) <_tooltip>Adds/Removes a Mordent to the note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/TogglePrallPral0000644000000000000000000000013213135434036030163 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.386648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/TogglePrallPrall.xml0000644000175000017500000000055213135434036033011 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TogglePrallPrall <_label>PrallPrall (Off/On) <_tooltip>Adds/Removes a PrallPrall to the note denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/OrnamentFlat.sc0000644000000000000000000000013213135434036030126 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.406648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/OrnamentFlat.scm0000644000175000017500000000333413135434036032157 0ustar00jjbenhamjjbenham00000000000000;;;OrnamentFlat (let* ((tag "OrnamentFlat") (params OrnamentFlat::params) (data (d-DirectiveGet-chord-data tag)) (direction "-") (markup #f) (base-markup "\\tweak self-alignment-X #-1.5 \\tweak outside-staff-priority #50 -\\markup { \\tiny \\flat }" )) (if data (begin (set! data (eval-string data)) (set! direction (list-ref data 0)) (set! markup (list-ref data 1)))) (if (not markup) (set! markup base-markup)) (if (list? params) (let ((offsetx #f) (offsety #f)(padding #f)) (cond ((eq? (car (list-ref params 0)) 'offsetx) (set! offsetx (cdr (list-ref params 0))) (set! offsety (cdr (list-ref params 1))) (set! markup (string-append "\\tweak #'X-offset #" offsetx " -\\tweak #'Y-offset #" offsety " -" base-markup))) ( (eq? (car (list-ref params 0)) 'direction) (set! direction (cdr (list-ref params 0)))) ( (eq? (car (list-ref params 0)) 'padding) (set! padding (cdr (list-ref params 0))) (set! markup (string-append "\\tweak padding #" padding " " base-markup)))) (d-DirectivePut-chord-postfix tag (string-append direction markup))) (if (equal? params "edit") (begin (set! params 'finished) (d-AdjustCustomOrnament tag)) (ChordAnnotation tag (string-append direction markup) #f LG-Flat))) (if (and (not (eq? params 'finished)) (d-Directive-chord? tag)) (d-DirectivePut-chord-data tag (format #f "(list ~s ~s)" direction markup)))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/OrnamentSharp.s0000644000000000000000000000013213135434036030152 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.406648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/OrnamentSharp.scm0000644000175000017500000000334113135434036032344 0ustar00jjbenhamjjbenham00000000000000;;;OrnamentSharp (let* ((tag "OrnamentSharp") (params OrnamentSharp::params) (data (d-DirectiveGet-chord-data tag)) (direction "-") (markup #f) (base-markup "\\tweak self-alignment-X #-1.5 \\tweak outside-staff-priority #50 -\\markup { \\tiny \\sharp }" )) (if data (begin (set! data (eval-string data)) (set! direction (list-ref data 0)) (set! markup (list-ref data 1)))) (if (not markup) (set! markup base-markup)) (if (list? params) (let ((offsetx #f) (offsety #f)(padding #f)) (cond ((eq? (car (list-ref params 0)) 'offsetx) (set! offsetx (cdr (list-ref params 0))) (set! offsety (cdr (list-ref params 1))) (set! markup (string-append "\\tweak #'X-offset #" offsetx " -\\tweak #'Y-offset #" offsety " -" base-markup))) ( (eq? (car (list-ref params 0)) 'direction) (set! direction (cdr (list-ref params 0)))) ( (eq? (car (list-ref params 0)) 'padding) (set! padding (cdr (list-ref params 0))) (set! markup (string-append "\\tweak padding #" padding " " base-markup)))) (d-DirectivePut-chord-postfix tag (string-append direction markup))) (if (equal? params "edit") (begin (set! params 'finished) (d-AdjustCustomOrnament tag)) (ChordAnnotation tag (string-append direction markup) #f LG-Sharp))) (if (and (not (eq? params 'finished)) (d-Directive-chord? tag)) (d-DirectivePut-chord-data tag (format #f "(list ~s ~s)" direction markup)))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleCustomOrn0000644000000000000000000000013213135434036030223 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.406648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleCustomOrnament.scm0000644000175000017500000000577413135434036033717 0ustar00jjbenhamjjbenham00000000000000;;;ToggleCustomOrnament (let ((directives '()) (definitions #f) (choice #f) (params ToggleCustomOrnament::params)) (define (get-second-line text) (let ((thelist (string-split text #\newline))) (if (> (length thelist) 1) (list-ref thelist 1) ""))) (define (extract-menuitem tag) (define name (get-second-line tag)) (cons name (lambda () (ChordAnnotation (string-append "Toggle" (string-upcase name 0 1)) (string-append "\\" name) params "custom" ;(_ "Custom") name )))) (define (edit-ornament tag) (define data (eval-string (d-DirectiveGet-score-data (string-append "Allow\n" params)))) (define choice (RadioBoxMenu (cons (_ "Edit this individual ornament") 'instance) (cons (_ "Edit the ornament definition") 'all))) (case choice ((instance) (d-InfoDialog (_ "Position editing not implemented"))) ((all) (d-CustomOrnamentDefinition data)))) (define (edit-directive tag) (define choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Advanced") 'advanced))) (case choice ((delete) (d-DirectiveDelete-chord tag)) ((edit) (edit-ornament tag)) ((advanced) (d-DirectiveTextEdit-chord tag)))) (define (get-name togglename) ;;; get the name from the current chord (string-downcase (substring togglename (string-length "Toggle")) 0 1)) ;;; procedure starts here (set! directives (GetDefinitionDirectives)) (if (not (null? directives)) (set! definitions (map extract-menuitem directives))) (disp "params in togllecustomorn " params "\n\n") (if definitions (begin (if (string? params) (let ((tag (string-append "Toggle" (string-upcase params 0 1)))) (set! choice (lambda () (edit-directive tag)))) (if (list? params) ;call ChordAnnotation with params (set! choice (lambda () (ChordAnnotation (string-append "Toggle" (string-upcase (get-name (car params)) 0 1)) (string-append "\\" (get-name (car params))) (cdr params) "custom" (get-name (car params)) ;(_ "Custom") ;(get-name (car params)) ))) (set! choice (d-PopupMenu definitions))))) (d-WarningDialog (_ "No Definitions have been created for this score"))) (if choice (begin (choice) (d-RefreshDisplay) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/CustomOrnamentD0000644000000000000000000000013213135434036030212 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.416648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/CustomOrnamentDefinition.scm0000644000175000017500000002235613135434036034561 0ustar00jjbenhamjjbenham00000000000000;;CustomOrnamentDefinition (let ((tag "CustomOrnamentDefinition") (def-tag #f) (name #f) (filename #f)(width #f) (warning (_ "Wait for your vector graphics editor to start. It will open an SVG file of the same name, if available, but be sure to save as encapsulated postscript (eps), using the name given. You will need to refresh the print view to see your changes. When saving your eps it is good to save as SVG file format as well, as this will give better editing later. Quit your graphics editor before quitting this dialog to return to work in Denemo.")) (params CustomOrnamentDefinition::params)) (define (edit) (let ((choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Advanced") 'advanced)))) (disp "def-tag " def-tag "\n\n") (case choice ((delete) (d-DirectiveDelete-score def-tag)(set! params 'finished)) ((edit) (if (RadioBoxMenu (cons (string-append (_ "Edit the file ") filename) #t) (cons (_ "Edit width ") #f)) (d-EditGraphics filename #f) (set-params)) (set! params 'referesh)) ((advanced) (d-DirectiveTextEdit-score def-tag)(set! params 'finished)) (else (set! params 'finished)(d-WarningDialog (_ "Cancelled")))))) (define (set-params) (set! width (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give width required:") width))) (define (set-def-tag name) (set! def-tag (string-append "Allow\n" name))) (define (scale val) (number->string (/ (* 16 (string->number val)) (string->number (d-ScoreProperties "query=fontsize"))))) (define (get-second-line text) (let ((thelist (string-split text #\newline))) (if (> (length thelist) 1) (list-ref thelist 1) ""))) (define (extract-menuitem tag) (define orn-name (get-second-line tag)) (cons orn-name (eval-string (d-DirectiveGet-score-data tag)))) (define (get-definition) (let ((directives '()) (definitions #f) (choice #f)) (set! directives (GetDefinitionDirectives)) (if (not (null? directives)) (begin (set! definitions (map extract-menuitem directives)) (set! params (d-PopupMenu definitions))) (begin (d-WarningDialog (_ "No definitions created for this score")) #f)))) (define (use-params) (set! name (list-ref params 0)) (set-def-tag name) (set! filename (list-ref params 1)) (set! width (list-ref params 2))) (if (equal? params "edit") (begin (if (get-definition) (begin (if (list? params) (begin (use-params) (edit)) (begin (d-WarningDialog "Nothing selected?") (set! params 'finished)))) (begin (set! params 'finished) (d-WarningDialog (_ "No definitions selected"))))) (begin (if (list? params) (use-params) (begin (set! name (d-GetUserInput (_ "Custom Ornament") (_ "Give Ornament Name") "")) (if (string-index name char-set:digit) (begin (d-WarningDialog "Numerals are not allowed in ornament names") (set! name #f))) (if name (begin (set! name (string-downcase name 0 1)) (set-def-tag name) (if (d-Directive-score? def-tag) (let ((data (eval-string (d-DirectiveGet-score-data def-tag)))) (set! filename (list-ref data 1)) (set! width (list-ref data 2))))) (set! params 'finished)))) (if (and (not (equal? params 'finished)) (not filename)) (let ((scorename (d-GetFilename))) (if scorename (set! filename (string-append (d-PathFromFilename scorename) "//" "drawing.eps")) (set! filename (string-append DENEMO_HOME_DIR "//" "drawing.eps"))) (set! width "2"))) (if (not (list? params)) (cond ((equal? params "edit") (begin (disp "this condition is redundant, edit is already done earlier!!!\n") (edit))) ((equal? params 'refresh)) ((equal? params 'finished)) (else ; (if filename ; (d-WarningDialog (_ "This will replace the current definition"))) (case (RadioBoxMenu (cons (_ "Start From Template") 'template) (cons (_ "Choose Custom Template") 'custom) (cons (_ "Choose File") 'choose)) ((template) (set! filename (d-EditGraphics #f name)) (if filename (begin (set! filename (string-append filename ".eps")) (d-WarningDialog warning)) (set! params 'finished))) ((custom) (set! filename (d-ChooseFile (_ "Encapsulated Postscript File") (string-append DENEMO_LOCAL_ACTIONS_DIR "//graphics") (list "*.eps" "*.EPS"))) (if filename (set-params) (begin (d-WarningDialog (_ "Cancelled")) (set! params 'finished)))) ((choose) (set! filename (d-ChooseFile (_ "Encapsulated Postscript File") (d-PathFromFilename filename) (list "*.eps" "*.EPS"))) (if filename (begin (set-params) (if (RadioBoxMenu (cons (string-append (_ "Edit the file ") filename) #t) (cons (_ "Use the file unedited") #f)) (begin (d-EditGraphics filename #f) (d-WarningDialog warning)))) (set! params 'finished)))))) (edit)))) (if (not (eq? params 'finished)) (if (and (d-FileExists filename) width) (begin (d-CreatePaletteButton "Custom Ornaments" name (_ "Attaches (or removes) this ornament from the current note/chord.") (string-append "(if (CheckForLilyPondDefine \"" name "\") (ChordOrnament \"Toggle" (string-upcase name 0 1) "\" \"\\\\" name "\" #f \"" name "\") (d-WarningDialog \"Not Defined\"))")) (d-LilyPondDefinition (cons name (string-append "\\tweak outside-staff-priority #50 -\\markup {\\epsfile #X #" (scale width) " #\"" (scheme-escape filename) "\" }"))) (d-DirectivePut-score-override def-tag (logior DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_DYNAMIC)) ;;call with 'refresh to re-scale for score size change (d-DirectivePut-score-data def-tag (string-append "(list \"" name "\" \"" (scheme-escape filename) "\" \"" width "\")"))) (let ((message (string-append (_ "The file \"") filename (_ "\"\ndoes not (yet) exist, or no longer exists.\nTypesetting will silently fail until the file exists.\nEither create the file or delete the Graphic Title Page now")))) (d-WarningDialog message) (if (equal? (_ "y") (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Delete Custom Ornament?") (_ "n"))) (begin (d-DirectiveDelete-score def-tag) (d-InfoDialog (_ "Custom Ornament Definition Deleted")))))))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/EditCustomOrnam0000644000000000000000000000013213135434036030205 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.426648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/EditCustomOrnamentDefinition.scm0000644000175000017500000000010313135434036035351 0ustar00jjbenhamjjbenham00000000000000;;;EditCustomOrnamentDefinition (d-CustomOrnamentDefinition "edit")denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/OrnamentAcciden0000644000000000000000000000013213135434036030162 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.426648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/OrnamentAccidentalBelow.xml0000644000175000017500000000065413135434036034331 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OrnamentAccidentalBelow OrnamentSharp <_label>Accidental Below <_tooltip>Places the accidental on the ornament below rather than above. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/PaxHeaders.19168/ToggleUpPrall.x0000644000000000000000000000013213135434036030117 xustar0030 mtime=1500919838.006648472 30 atime=1500919928.426648472 30 ctime=1500919912.989981805 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Markings/Ornaments/ToggleUpPrall.xml0000644000175000017500000000053613135434036032325 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleUpPrall <_label>Up Prall (Off/On) <_tooltip>Adds/Removes Up Prall ornament denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/ReplaceChord.xml0000644000000000000000000000013213135434036024541 xustar0030 mtime=1500919838.013315139 30 atime=1500919928.426648472 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/ReplaceChord.xml0000644000175000017500000000072213135434036026413 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Tremolo ReplaceChord <_label>Replace LilyPond <_tooltip>Suppresses the normal LilyPond typesetting for the current note/chord/rest replacing it with syntax provided by user. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/StemControl0000644000000000000000000000013213135434150023655 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/0000755000175000017500000000000013135434150025603 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/PaxHeaders.19168/DesignateVoice.scm0000644000000000000000000000013213135434036027332 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.436648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/DesignateVoice.scm0000644000175000017500000000260013135434036031201 0ustar00jjbenhamjjbenham00000000000000;;;DesignateVoice (let ((choice #f)(label #f) (OneVoice (_ "OneVoice: Default-For a single voice on a staff")) (VoiceOne (_ "VoiceOne: Designate as upper voice")) (VoiceTwo (_ "VoiceTwo: Designate as lower voice"))(VoiceThree (_ "VoiceThree: Horizontally offset upper voice")) (VoiceFour (_ "VoiceFour: Horizontally offset lower voice")) ) (set! choice (d-GetOption (string-append OneVoice stop VoiceOne stop VoiceTwo stop VoiceThree stop VoiceFour stop) ) ) (cond ( (equal? choice VoiceOne ) (begin (set! choice "voiceOne") (set! label (_ "Voice1")) )) ( (equal? choice VoiceTwo ) (begin (set! choice "voiceTwo") (set! label (_ "Voice2")) )) ( (equal? choice VoiceThree ) (begin (set! choice "voiceThree") (set! label (_ "Voice3")) )) ( (equal? choice VoiceFour ) (begin (set! choice "voiceFour") (set! label (_ "Voice4")) )) ( (equal? choice OneVoice ) (begin (set! choice "oneVoice") (set! label (_ "1Voice")) ) ) ) (if choice (begin (d-DirectivePut-standalone "Voice" ) (d-DirectivePut-standalone-display "Voice" label ) (d-DirectivePut-standalone-ty "Voice" 60 ) (d-DirectivePut-standalone-postfix "Voice" (string-append "\" choice ) ) (d-DirectivePut-standalone-minpixels "Voice" 10 ) (d-MoveCursorRight) ) ) )denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/PaxHeaders.19168/StartDownStems.scm0000644000000000000000000000013213135434036027402 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.436648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/StartDownStems.scm0000644000175000017500000000011513135434036031250 0ustar00jjbenhamjjbenham00000000000000 (d-InsertStem) (d-MoveCursorLeft) (d-StemDown) (d-MoveCursorRight) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/PaxHeaders.19168/HelpForStemControl.scm0000644000000000000000000000013213135434036030172 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.436648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/HelpForStemControl.scm0000644000175000017500000000061513135434036032045 0ustar00jjbenhamjjbenham00000000000000;;;HelpForStemControl (d-InfoDialog (_ "Stem direction (up, down or automatic - depending on the note height on the staff- is normally controlled by selecting the LilyPond voice for the music on the staff. This menu is for primitive commands that force stems in one direction without altering slur, tie, ornament directions. Use right-click More Commands to un-hide these primitives if needed.")) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/PaxHeaders.19168/DesignateVoice.xml0000644000000000000000000000013213135434036027350 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.456648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/DesignateVoice.xml0000644000175000017500000000123513135434036031222 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StartUpStems DesignateVoice <_label>Designate Voice <_tooltip>These commands are used when entering several voices per staff. VoiceOne is for the upper voice-it sets the direction of slurs, beams, etc. up to avoid clashes. VoiceTwo is for the lower voice, and it sets the directions down. Additional voices beyond two are offset slightly to the right. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/PaxHeaders.19168/StartDownStems.xml0000644000000000000000000000013213135434036027420 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.456648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/StartDownStems.xml0000644000175000017500000000053313135434036031272 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StartDownStems <_label>Stems Down <_tooltip>Stems from now on point downward. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/PaxHeaders.19168/HelpForStemControl.xml0000644000000000000000000000013213135434036030210 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.456648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/HelpForStemControl.xml0000644000175000017500000000125213135434036032061 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HelpForStemControl <_label>Help for Stem Control <_tooltip>Stem direction (up, down or automatic - depending on the note height on the staff- is normally controlled by selecting the LilyPond voice for the music on the staff. This menu is for primitive commands that force stems in one direction without altering slur, tie, ornament directions. Use right-click More Commands to un-hide these primitives if needed. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/PaxHeaders.19168/StartUpStems.scm0000644000000000000000000000013213135434036027057 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.456648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/StartUpStems.scm0000644000175000017500000000011313135434036030723 0ustar00jjbenhamjjbenham00000000000000 (d-InsertStem) (d-MoveCursorLeft) (d-StemUp) (d-MoveCursorRight) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/PaxHeaders.19168/StartUpStems.xml0000644000000000000000000000013213135434036027075 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.456648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/StemControl/StartUpStems.xml0000644000175000017500000000052513135434036030750 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StartUpStems <_label>Stems Up <_tooltip>Stems from now on point upward. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/Slurs0000644000000000000000000000013213135434150022514 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/0000755000175000017500000000000013135434150024442 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/SlurDown.scm0000644000000000000000000000013213135434036025055 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.466648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/SlurDown.scm0000644000175000017500000000040113135434036026721 0ustar00jjbenhamjjbenham00000000000000;Slur Down: (d-DirectivePut-standalone-display "SlurDirection" "SlurDown") (d-MoveCursorLeft) (d-DirectivePut-standalone-postfix "SlurDirection" " \\slurDown" ) (d-DirectivePut-standalone-minpixels "SlurDirection" 60) (d-MoveCursorRight) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/MarkingInsideSlur.xml0000644000000000000000000000013213135434036026710 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.466648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/MarkingInsideSlur.xml0000644000175000017500000000064313135434036030564 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MarkingInsideSlur MarkingInsideSlur <_label>Marking Inside Slur <_tooltip>(Print) Next marking will be placed inside the slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/TextInsideSlur.xml0000644000000000000000000000013213135434036026244 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.466648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/TextInsideSlur.xml0000644000175000017500000000065513135434036030123 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AvoidSlurAccidentalCollision TextInsideSlur <_label>Text Inside Slur <_tooltip>(Print) Next text marking will be placed inside the slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/ToggleBeginDownSlur.scm0000644000000000000000000000013213135434036027164 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.466648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/ToggleBeginDownSlur.scm0000644000175000017500000000047113135434036031037 0ustar00jjbenhamjjbenham00000000000000;;ToggleNoteDownSlur (let ((tag "Slur")) (if (d-IsSlurStart) (d-ToggleBeginSlur) (begin (d-ToggleBeginSlur) (d-DirectivePut-chord-postfix tag "_") ;;for some reason we do not have â in the font (d-DirectivePut-note-graphic tag "\n_ Denemo 30"))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/SlurThree.xml0000644000000000000000000000013213135434036025233 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.476648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/SlurThree.xml0000644000175000017500000000053413135434036027106 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SlurThree <_label>Slur with Next Two Notes <_tooltip>Slur over next two notes. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/ReduceSlur.xml0000644000000000000000000000013213135434036025373 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.476648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/ReduceSlur.xml0000644000175000017500000000061213135434036027243 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ExtendSlur ReduceSlur <_label>Shorten Slur from End <_tooltip>Shorten a slur that ends at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/ExtendSlur.scm0000644000000000000000000000013213135434036025375 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.476648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/ExtendSlur.scm0000644000175000017500000000107713135434036027253 0ustar00jjbenhamjjbenham00000000000000;;;ExtendSlur (if (and (d-IsSlurEnd) (not (d-IsSlurStart))) (begin (d-ToggleEndSlur) (d-NextChord) (d-ToggleEndSlur) (if (not (d-IsSlurEnd)) (d-ToggleEndSlur)));;that is, either put the end slur back or put it on the next chord (begin (if (d-IsSlurStart) (begin (d-NextChord) (d-ToggleEndSlur)) (if (d-PrevChord) (if (d-IsSlurEnd) (begin (d-ToggleEndSlur) (d-NextChord) (d-ToggleEndSlur)) (if (d-IsSlurStart) (begin (d-NextChord) (d-ToggleEndSlur)) (d-NextChord))))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/ToggleEndPhrasingSlur.scm0000644000000000000000000000013213135434036027512 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.476648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/ToggleEndPhrasingSlur.scm0000644000175000017500000000011013135434036031353 0ustar00jjbenhamjjbenham00000000000000(ToggleDirective "chord" "postfix" (cons "PhrasingSlur" "phr)") "\\)" )denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/SlurStyle.xml0000644000000000000000000000013213135434036025264 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.476648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/SlurStyle.xml0000644000175000017500000000063313135434036027137 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SlurStyle MarkingInsideSlur <_label>Dashed or Dotted <_tooltip>Make the slur starting from this note dashed or dotted. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/MarkingInsideSlur.scm0000644000000000000000000000013213135434036026672 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.486648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/MarkingInsideSlur.scm0000644000175000017500000000103513135434036030542 0ustar00jjbenhamjjbenham00000000000000;;MarkingInsideSlur (let ((tag "MarkingInsideSlur")) (if (equal? MarkingInsideSlur::params "edit") (begin (d-InfoDialog (_ "This makes the next marking on a note etc move inside the slur."))) (begin (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-postfix tag "\\once \\override Script #'avoid-slur = #'inside \\once \\override Script #'outside-staff-priority = ##f ") (d-DirectivePut-standalone-display tag (_ "Inside Slur ")) (d-DirectivePut-standalone-minpixels tag 30) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/SlurThree.scm0000644000000000000000000000013213135434036025215 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.486648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/SlurThree.scm0000644000175000017500000000014313135434036027064 0ustar00jjbenhamjjbenham00000000000000 (d-ToggleBeginSlur) (d-MoveCursorRight) (d-MoveCursorRight) (d-ToggleEndSlur) (d-MoveCursorRight) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/AvoidSlurAccidentalCollision0000644000000000000000000000013213135434036030253 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.486648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/AvoidSlurAccidentalCollision.scm0000644000175000017500000000213613135434036032707 0ustar00jjbenhamjjbenham00000000000000;;AvoidSlurAccidentalCollision ;;;http://code.google.com/p/lilypond/issues/detail?id=796 (let ((tag "AvoidSlurAccidentalCollision")) (if (d-Directive-chord? tag) (begin (d-DirectiveDelete-chord tag) (d-InfoDialog (_ "Slur/Accidental avoidance removed"))) (begin (if (d-IsSlurStart) (let ((value (d-GetUserInput "Collision Avoidance" "Give edge attraction factor for slur" "0.5"))) (if (and value (string->number value)) (begin (d-DirectivePut-chord-prefix tag (string-append "\\once \\override Slur #'details #'edge-attraction-factor = #" value " ")) (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-display tag "(X")) ; here ) to match the string paren open (d-InfoDialog (_ "Cancelled")))) (d-InfoDialog (_ "Use only on a slur start to make the slur avoid accidentals on following notes"))))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/EndPhrasingSlur.scm0000644000000000000000000000013213135434036026350 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.486648472 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/EndPhrasingSlur.scm0000644000175000017500000000007413135434036030222 0ustar00jjbenhamjjbenham00000000000000(d-MoveCursorRight) (d-InsertLilyDirective "directive=\\)") denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/SlurDown.xml0000644000000000000000000000013213135434036025073 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.506648473 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/SlurDown.xml0000644000175000017500000000055113135434036026745 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleEndSlur SlurDown <_label>Slur Down <_tooltip>Prints slur below denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/BeginPhrasingSlur.xml0000644000000000000000000000013213135434036026704 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.506648473 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/BeginPhrasingSlur.xml0000644000175000017500000000057513135434036030564 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BeginPhrasingSlur <_label>Begin Phrasing Slur <_tooltip>Begins a phrasing slur (which can have slurs within it) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/SlurNeutral.xml0000644000000000000000000000013213135434036025576 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.506648473 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/SlurNeutral.xml0000644000175000017500000000056513135434036027455 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SlurUp SlurNeutral <_label>Auto Slur Directions <_tooltip>Prints slurs as normal denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/EndPhrasingSlur.xml0000644000000000000000000000013213135434036026366 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.506648473 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/EndPhrasingSlur.xml0000644000175000017500000000056713135434036030247 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EndPhrasingSlur <_label>End Phrasing Slur <_tooltip>Ends a phrasing slur (which can have slurs within it) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/ToggleBeginUpSlur.xml0000644000000000000000000000013213135434036026657 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.506648473 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/ToggleBeginUpSlur.xml0000644000175000017500000000072613135434036030535 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleEndPhrasingSlur ToggleBeginUpSlur <_label>Begin Slur Up (Off/On) <_tooltip>Starts (or deletes) a slur above the chord at the cursor. Follow with End Slur on a later chord. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/SlurTwo.xml0000644000000000000000000000013213135434036024735 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.513315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/SlurTwo.xml0000644000175000017500000000055213135434036026610 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SlurTwo <_label>Slur with Next Note <_tooltip>Creates a slur from current note to next note. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/SlurNeutral.scm0000644000000000000000000000013213135434036025560 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.513315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/SlurNeutral.scm0000644000175000017500000000042113135434036027426 0ustar00jjbenhamjjbenham00000000000000 ;SlurNeutral: (d-DirectivePut-standalone-display "SlurDirection" "Auto Slur Direction") (d-MoveCursorLeft) (d-DirectivePut-standalone-postfix "SlurDirection" " \\slurNeutral" ) (d-DirectivePut-standalone-minpixels "SlurDirection" 75) (d-MoveCursorRight) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/AvoidSlurAccidentalCollision0000644000000000000000000000013213135434036030253 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.513315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/AvoidSlurAccidentalCollision.xml0000644000175000017500000000065213135434036032726 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleBeginDownSlur AvoidSlurAccidentalCollision <_label>Avoid Slur Collision <_tooltip>Avoids slur colliding with accidental (Print) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/ExtendSlur.xml0000644000000000000000000000013213135434036025413 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.513315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/ExtendSlur.xml0000644000175000017500000000057713135434036027275 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SlurTwo ExtendSlur <_label>Extend Slur <_tooltip>Extends the slur finishing at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/SlurUp.scm0000644000000000000000000000013213135434036024532 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.513315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/SlurUp.scm0000644000175000017500000000037113135434036026404 0ustar00jjbenhamjjbenham00000000000000;SlurUp (d-DirectivePut-standalone-display "SlurDirection" "SlurUp") (d-MoveCursorLeft) (d-DirectivePut-standalone-postfix "SlurDirection" " \\slurUp" ) (d-DirectivePut-standalone-minpixels "SlurDirection" 40) (d-MoveCursorRight) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/ToggleBeginPhrasingSlur.xml0000644000000000000000000000013213135434036030046 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.523315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/ToggleBeginPhrasingSlur.xml0000644000175000017500000000072613135434036031724 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ReduceSlur ToggleBeginPhrasingSlur <_label>Begin Phrasing Slur <_tooltip>Begin a phrasing slur on the current note. You can have normal slurs (partially) inside a phrasing slur. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/ToggleBeginUpSlur.scm0000644000000000000000000000013213135434036026641 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.523315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/ToggleBeginUpSlur.scm0000644000175000017500000000046713135434036030521 0ustar00jjbenhamjjbenham00000000000000;;ToggleNoteUpSlur (let ((tag "Slur")) (if (d-IsSlurStart) (d-ToggleBeginSlur) (begin (d-ToggleBeginSlur) (d-DirectivePut-chord-postfix tag "^") ;;for some reason we do not have â in the font (d-DirectivePut-note-graphic tag "\n^ Denemo 30"))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/ToggleBeginDownSlur.xml0000644000000000000000000000013213135434036027202 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.523315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/ToggleBeginDownSlur.xml0000644000175000017500000000074413135434036031060 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleBeginUpSlur ToggleBeginDownSlur <_label>Begin Slur Below (Off/On) <_tooltip>Starts (or deletes) a slur below the chord at the cursor. If deleting be sure to delete the end slur as well. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/ToggleEndPhrasingSlur.xml0000644000000000000000000000013213135434036027530 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.523315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/ToggleEndPhrasingSlur.xml0000644000175000017500000000063713135434036031407 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleBeginPhrasingSlur ToggleEndPhrasingSlur <_label>End Phrasing Slur <_tooltip>End a phrasing slur on the current note. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/ToggleBeginPhrasingSlur.scm0000644000000000000000000000013213135434036030030 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.523315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/ToggleBeginPhrasingSlur.scm0000644000175000017500000000011013135434036031671 0ustar00jjbenhamjjbenham00000000000000(ToggleDirective "chord" "postfix" (cons "PhrasingSlur" "(phr") "\\(" )denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/ReduceSlur.scm0000644000000000000000000000013213135434036025355 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.533315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/ReduceSlur.scm0000644000175000017500000000051713135434036027231 0ustar00jjbenhamjjbenham00000000000000 ;;;ReduceSlur (if (d-IsSlurEnd) (begin (d-ToggleEndSlur) (d-PrevChord) (if (d-IsSlurStart) (d-ToggleBeginSlur) (d-ToggleEndSlur))) (begin (if (d-PrevChord) (if (d-IsSlurEnd) (begin (d-ToggleEndSlur) (d-PrevChord) (if (d-IsSlurStart) (d-ToggleBeginSlur) (d-ToggleEndSlur))))))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/TextInsideSlur.scm0000644000000000000000000000013213135434036026226 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.533315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/TextInsideSlur.scm0000644000175000017500000000104113135434036030073 0ustar00jjbenhamjjbenham00000000000000;;TextInsideSlur (let ((tag "TextInsideSlur")) (if (equal? TextInsideSlur::params "edit") (begin (d-InfoDialog (_ "This makes the next text marking on a note etc move inside the slur."))) (begin (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-postfix tag "\\once \\override TextScript #'avoid-slur = #'inside \\once \\override TextScript #'outside-staff-priority = ##f ") (d-DirectivePut-standalone-display tag (_ "Inside Slur ")) (d-DirectivePut-standalone-minpixels tag 30) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/SlurTwo.scm0000644000000000000000000000013213135434036024717 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.533315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/SlurTwo.scm0000644000175000017500000000020313135434036026563 0ustar00jjbenhamjjbenham00000000000000;;;SlurTwo (if (Music?) (begin (d-ToggleBeginSlur) (if (d-NextChord) (d-ToggleEndSlur) (d-ToggleBeginSlur)) (d-NextChord))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/SlurStyle.scm0000644000000000000000000000013213135434036025246 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.533315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/SlurStyle.scm0000644000175000017500000000074113135434036027121 0ustar00jjbenhamjjbenham00000000000000;;;SlurStyle (let ((tag "SlurStyle") (choice (RadioBoxMenu (cons (_ "Dashed") "\\slurDashed") (cons (_ "Dotted") "\\slurDotted") (cons (_ "Default") "\\slurSolid")))) (if choice (begin (d-SetSaved #f) (d-DirectivePut-chord-prefix tag (string-append "\\once" choice " ")) (d-DirectivePut-chord-display tag (substring choice 5)) (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/BeginPhrasingSlur.scm0000644000000000000000000000013213135434036026666 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.533315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/BeginPhrasingSlur.scm0000644000175000017500000000007313135434036030537 0ustar00jjbenhamjjbenham00000000000000(d-MoveCursorRight) (d-InsertLilyDirective "directive=\\(")denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/DeleteSlur.scm0000644000000000000000000000013213135434036025350 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.553315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/DeleteSlur.scm0000644000175000017500000000134713135434036027226 0ustar00jjbenhamjjbenham00000000000000;;DeleteSlur (let () (define (delete-from-end) (while (d-IsSlurEnd) (d-ReduceSlur)) (TimedNotice (_ "Slur Deleted"))) (define (find-slur-end) (let loop () (if (d-IsSlurStart) (begin (TimedNotice (_ "Not on a slur")) #f) (if (d-IsSlurEnd) #t (if (d-MoveCursorRight) (loop) (begin (TimedNotice (_ "Not on a slur")) #f)))))) (if (and (d-IsSlurStart) (d-MoveCursorRight) (find-slur-end)) (delete-from-end) (if (find-slur-end) (delete-from-end)))) denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/DeleteSlur.xml0000644000000000000000000000013213135434036025366 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.553315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/DeleteSlur.xml0000644000175000017500000000062713135434036027244 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteSlur ToggleEndSlur <_label>Delete Slur <_tooltip>Deletes the slur that includes the current cursor position. denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/PaxHeaders.19168/SlurUp.xml0000644000000000000000000000013213135434036024550 xustar0030 mtime=1500919838.016648472 30 atime=1500919928.553315139 30 ctime=1500919912.996648472 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Slurs/SlurUp.xml0000644000175000017500000000053613135434036026425 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SlurDown SlurUp <_label>Slur Up <_tooltip>Prints slurs up denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/PaxHeaders.19168/Tremolo.xml0000644000000000000000000000013213135434036023627 xustar0030 mtime=1500919838.019981806 30 atime=1500919928.553315139 30 ctime=1500919912.993315139 denemo-2.2.0/actions/menus/ObjectMenu/NotesRests/Tremolo.xml0000644000175000017500000000060613135434036025502 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Tremolo <_label>Tremolo <_tooltip>Prints the note at the cursor with the tremolo marking for the subdivisions specified. denemo-2.2.0/actions/menus/ObjectMenu/PaxHeaders.19168/StaffMenu0000644000000000000000000000013213135434150021163 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/0000755000175000017500000000000013135434150023111 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/StaffDeleteEmptyMeasures.scm0000644000000000000000000000013213135434036026661 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.566648473 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffDeleteEmptyMeasures.scm0000644000175000017500000000015213135434036030530 0ustar00jjbenhamjjbenham00000000000000(while (d-MoveToMeasureRight) (if (EmptyMeasure?) (begin (d-DeleteMeasure) (d-MoveToMeasureLeft))))denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/DeleteCurrentStaff.scm0000644000000000000000000000013213135434036025500 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.566648473 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DeleteCurrentStaff.scm0000644000175000017500000000026513135434036027354 0ustar00jjbenhamjjbenham00000000000000;;DeleteCurrentStaff (let ((delete (RadioBoxMenu (cons (_"Cancel") #f) (cons (_ "Delete Current Staff") 'delete)))) (if delete (d-DeleteStaff) (d-InfoDialog (_ "Cancelled")))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/DisplayEffects0000644000000000000000000000013213135434150024070 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/0000755000175000017500000000000013135434150026016 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/PaxHeaders.19168/HideNotSelectedStaff0000644000000000000000000000013213135434036030062 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.566648473 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/HideNotSelectedStaffs.scm0000644000175000017500000000063013135434036032676 0ustar00jjbenhamjjbenham00000000000000;;;HideNotSelectedStaffs (let ((params HideNotSelectedStaffs::params)) (if (d-MarkStatus) (begin (d-PushPosition) (while (d-MoveToStaffUp)) (d-StaffHidden (not (d-IsInSelection))) (while (d-MoveToStaffDown) (d-StaffHidden (not (d-IsInSelection)))) (d-PopPosition) (d-StaffHidden #f)))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/PaxHeaders.19168/ToggleDisplayAllStaf0000644000000000000000000000013213135434036030111 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.566648473 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/ToggleDisplayAllStaffs.xml0000644000175000017500000000075613135434036033122 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleDisplayAllStaffs ToggleCurrentStaffDisplay <_label>Display All (Other) Staffs (Off/On) <_tooltip>Show the current staff in the display and hide/show all other staffs. Typesetting is not affected. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/PaxHeaders.19168/ToggleCurrentStaffDi0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.576648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/ToggleCurrentStaffDisplay.scm0000644000175000017500000000031113135434036033616 0ustar00jjbenhamjjbenham00000000000000;;;ToggleCurrentStaffDisplay (d-StaffHidden (not (d-StaffHidden))) (while (and (d-StaffHidden) (d-MoveToStaffDown))) (while (and (d-StaffHidden) (d-MoveToStaffUp))) (d-RefreshDisplay) (d-SetSaved #f)denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/PaxHeaders.19168/HideNotSelectedStaff0000644000000000000000000000013213135434036030062 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.576648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/HideNotSelectedStaffs.xml0000644000175000017500000000073613135434036032723 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleDisplaySelectedStaffs ToggleDisplayAllStaffs <_label>Hide Non-Selected Staffs. <_tooltip>Hides staffs that are not selected in the Denemo Display. Does not affect the typesetting. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/PaxHeaders.19168/ToggleCurrentStaffDi0000644000000000000000000000013213135434036030120 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.576648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/ToggleCurrentStaffDisplay.xml0000644000175000017500000000072213135434036033642 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleCurrentStaffDisplay TinyStaffAllMovements <_label>Staff Hidden (Off/On) <_tooltip>Shows/Hides the current staff in the Denemo Display. Does not affect the typesetting. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/PaxHeaders.19168/HideSelectedStaffs.x0000644000000000000000000000013213135434036030032 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.576648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/HideSelectedStaffs.xml0000644000175000017500000000072213135434036032235 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShowDisplaySelectedStaffs HideDisplaySelectedStaffs <_label>Hides Selected Staffs <_tooltip>Hides the selected staffs in the Denemo Display. Does not affect the Typesetting. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/PaxHeaders.19168/HideSelectedStaffs.s0000644000000000000000000000013213135434036030025 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.576648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/HideSelectedStaffs.scm0000644000175000017500000000056013135434036032217 0ustar00jjbenhamjjbenham00000000000000;;;HideSelectedStaffs (let ((params HideSelectedStaffs::params)) (if (d-MarkStatus) (begin (d-PushPosition) (while (d-MoveToStaffUp)) (d-StaffHidden (d-IsInSelection)) (while (d-MoveToStaffDown) (d-StaffHidden (d-IsInSelection))) (d-PopPosition) (d-StaffHidden #t)))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/PaxHeaders.19168/ToggleDisplayAllStaf0000644000000000000000000000013213135434036030111 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.586648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DisplayEffects/ToggleDisplayAllStaffs.scm0000644000175000017500000000110213135434036033066 0ustar00jjbenhamjjbenham00000000000000;;;ToggleDisplayAllStaffs (let ((params ToggleDisplayAllStaffs::params)) (if (d-StaffHidden) (begin (d-PushPosition) (while (d-MoveToStaffUp)) (d-StaffHidden #f) (while (d-MoveToStaffDown) (d-StaffHidden #f)) (d-PopPosition)) (let ((hide #t)) (d-PushPosition) (while (d-MoveToStaffUp) (if (d-StaffHidden) (set! hide #f))) (d-PopPosition) (while (d-MoveToStaffDown) (if (d-StaffHidden) (set! hide #f))) (d-StaffHidden hide) (while (d-MoveToStaffUp) (d-StaffHidden hide)) (d-PopPosition) (d-StaffHidden #f)))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/StaffMultiMeasureRests.xml0000644000000000000000000000013213135434036026406 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.586648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffMultiMeasureRests.xml0000644000175000017500000000073113135434036030260 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CreateCuesForStaff StaffMultiMeasureRests <_label>Multi-Measure Rests <_tooltip>Groups of whole measure rests of two or more are changed to multi-measure rests for the whole staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/ChangeStaff.xml0000644000000000000000000000013213135434036024136 xustar0030 mtime=1500919838.029981805 30 atime=1500919928.586648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/ChangeStaff.xml0000644000175000017500000000055713135434036026016 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeStaff <_label>Change Staff <_tooltip>(Print) the current voice moves to the staff you name. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/DeleteTextAnnotationsFromCursor.xml0000644000000000000000000000013213135434036030274 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.586648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DeleteTextAnnotationsFromCursor.xml0000644000175000017500000000072113135434036032145 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteTextAnnotationsFromCursor DeleteFromCursorToEnd <_label>Delete Text Annotations <_tooltip>Deletes standalone text annotations from the cursor to the end of the staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/CheckTiesInStaff.scm0000644000000000000000000000013213135434036025064 xustar0030 mtime=1500919838.029981805 30 atime=1500919928.586648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CheckTiesInStaff.scm0000644000175000017500000000412413135434036026736 0ustar00jjbenhamjjbenham00000000000000;;CheckTiesInStaff (define-once CheckScore::ignore 0) (define-once CheckScore::error-position #f) (define CheckTiesInStaff::return #f) (let ((position (GetPosition))) (d-MoveToBeginning) (let ((ok #t)) (let loop () (if (and (d-IsTied) (Singlenote?)) (let ((note (d-GetNote))) (if (and (d-NextNote) (Singlenote?)) (let ((nextnote (d-GetNote))) (if (equal? note nextnote) (loop) (begin (if (positive? CheckScore::ignore) (set! CheckScore::ignore (1- CheckScore::ignore)) (begin (set! position (GetPosition)) (set! CheckTiesInStaff::return (_ "Tied notes not the same")) (set! ok #f)))))) (if (Singlenote?) (begin (if (positive? CheckScore::ignore) (begin (set! CheckScore::ignore (1- CheckScore::ignore)) (loop)) (begin (set! position (GetPosition)) (set! CheckTiesInStaff::return "No note to tie to") (set! ok #f)))))))) (if (and ok (d-NextNote)) (loop))) (if CheckTiesInStaff::return (set! CheckScore::error-position position)) (if (not CheckTiesInStaff::params) ;;interactive (begin (if CheckTiesInStaff::return (apply d-GoToPosition position) (set! CheckTiesInStaff::return (_ "All ties in this staff are correctly placed"))) (d-InfoDialog CheckTiesInStaff::return))))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/FillEmptyMeasures.xml0000644000000000000000000000013213135434036025377 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.606648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/FillEmptyMeasures.xml0000644000175000017500000000072313135434036027252 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FillEmptyMeasures StaffMultiMeasureRests <_label>Fill Empty Measures <_tooltip>Replaces empty measures from the cursor position onwards with non-printing whole measure rests. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/CrossStaffArpeggio.xml0000644000000000000000000000013213135434036025520 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.606648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CrossStaffArpeggio.xml0000644000175000017500000000104113135434036027365 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TabStaff CrossStaffArpeggio <_label>Cross Staff Arpeggio <_tooltip>(Print) Allow arpeggio sign to extend across staffs. Piano staffs obey this by default, other staff groups need the Span_arpeggio_engraver including in the Score context for it to work. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/SimplifyTies.xml0000644000000000000000000000013213135434036024406 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.606648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/SimplifyTies.xml0000644000175000017500000000064413135434036026263 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TransposeStaffPrint SimplifyTies <_label>Simplify Ties <_tooltip>Converts tied notes to longer notes and removes spurious ties. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/StaffMultiMeasureRests.scm0000644000000000000000000000013213135434036026370 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.606648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffMultiMeasureRests.scm0000644000175000017500000000700213135434036030240 0ustar00jjbenhamjjbenham00000000000000;;;StaffMultiMeasureRests (let ((end-position #f)(count 0)(position #f)(WMRtag "WholeMeasureRest")) (define (whole-measure-rest) (and (not (d-GetNonprinting))(d-Directive-chord? DenemoWholeMeasureRestTag) (not (d-DirectiveGetNthTag-chord 1)) )) ;;; find-block looks at the measures from the cursor onwards returning with the cursor on the first of a block of wmrs (#t) or at the end if none (#f) (define (find-block) (set! position #f) (set! end-position #f) (set! count 0) (let loop () (if (whole-measure-rest) (begin (if position (set! end-position (GetPosition)) (begin (d-SetMark) (set! position (GetPosition)))) (set! count (+ count 1)) (if (d-MoveToMeasureRight) (loop))) (begin ;; not on a whole measure rest (if (zero? count) (if (d-MoveToMeasureRight) (loop))) (if (< count 2) ;;; do not MM less than 2 (begin (set! count 0) (set! position #f) (if (d-MoveToMeasureRight) (loop)))))) (if position (apply d-GoToPosition position) #f))) (define (enough-empty-measures? num) (if (or (EmptyMeasure?) (d-Directive-chord? WMRtag)) (if (positive? num) (begin (if (d-Directive-chord? WMRtag) (d-DeleteObject));delete any whole measure rest (if (EmptyMeasure?) (d-MoveToMeasureRight)) (enough-empty-measures? (1- num))) (EmptyMeasure?)) #f)) (define (paste-into-voices) ;;; if voice(s) below has/have empty measures (while (d-MoveToVoiceDown) (apply d-GoToPosition position) (if (enough-empty-measures? (1- count)) (begin (apply d-GoToPosition position) (d-Paste))))) (define (paste-into-dynamics) ;;; if Dynamics staff below has empty measures (if (and (d-MoveToStaffDown) (d-Directive-staff? "DynamicsStaff")) (begin (apply d-GoToPosition position) (if (enough-empty-measures? (1- count)) (begin (apply d-GoToPosition position) (d-Paste)))))) ;;; actual code (while (d-MoveToVoiceUp)) (d-PushPosition) (d-GoToBeginning) (while (and (not (whole-measure-rest)) (d-NextChord))) (while (and (not (whole-measure-rest)) (d-MoveToMeasureRight))) (let loop () (if (find-block) (begin (d-MultiMeasureRests) ;;;set staff element of position and end-position to #f (list-set! position 0 #f) (list-set! end-position 0 #f) (list-set! position 1 #f) (list-set! end-position 1 #f) (list-set! position 3 1);;first position, either first object or Appending position (list-set! end-position 3 1) (apply d-GoToPosition position) (d-SetMark) (apply d-GoToPosition end-position) (d-SetPoint) (d-Copy) (apply d-GoToPosition position) (d-PushPosition) (paste-into-voices) (paste-into-dynamics) (d-PopPosition) (apply d-GoToPosition end-position) (while (d-MoveToMeasureRight) (while (and (not (whole-measure-rest)) (d-NextChord))) (if (whole-measure-rest) (loop)))))) (d-PopPosition)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/StaffGroupings0000644000000000000000000000013213135434150024124 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/0000755000175000017500000000000013135434150026052 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/DeleteStaffGroupings0000644000000000000000000000013213135434036030213 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.619981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/DeleteStaffGroupings.scm0000644000175000017500000000063313135434036032647 0ustar00jjbenhamjjbenham00000000000000(d-DirectiveDelete-staff "GroupStaffStart") (d-DirectiveDelete-staff "PianoStaffStart") (d-DirectiveDelete-staff "ChoirStaffStart") (d-DirectiveDelete-staff "GrandStaffStart") (d-DirectiveDelete-staff "BraceEnd") ;;;legacy tags (d-DirectiveDelete-staff "ContextGrandStaff") (d-DirectiveDelete-staff "ContextGroupStaff") (d-DirectiveDelete-staff "ContextPianoStaff") (d-DirectiveDelete-staff "ContextChoirStaff")denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/CheckBraces.scm0000644000000000000000000000013213135434036027045 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.619981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/CheckBraces.scm0000644000175000017500000000320413135434036030715 0ustar00jjbenhamjjbenham00000000000000;;;CheckBraces (define CheckBraces::Return #f) (define CheckBraces::ErrorPosition #f) (define-once CheckScore::ignore 0) (if (zero? CheckScore::ignore) (let ((excess 0) (CP "PianoStaffStart") (CG "GrandStaffStart") (CC "ChoirStaffStart") (CR "GroupStaffStart") (EB "BraceEnd") (FirstError #f) (params CheckBraces::params) (endbraces "0") ) (if (not params) (d-PushPosition)) (while (d-MoveToStaffUp)) (let loop () (disp "excess so far " excess "\n") (if (or (d-Directive-staff? CP) (d-Directive-staff? CG) (d-Directive-staff? CC) (d-Directive-staff? CR)) (begin (set! excess (+ 1 excess)))) (if (d-Directive-staff? EB) (begin (set! endbraces (d-DirectiveGet-staff-data EB)) (if (zero? excess) (set! FirstError (d-GetStaff))) (set! excess (- excess (string->number endbraces))))) (if (d-MoveToStaffDown) (loop))) (if FirstError (set! CheckBraces::Return (format #f "~a~a" (_ "Too few staff braces open at staff number ") FirstError)) (if (> excess 0) (set! CheckBraces::Return (_ "More staff braces started than are ended.")) (if (< excess 0) (set! CheckBraces::Return (_ "More staff braces ended than are started."))))) (if (not params) (begin (d-PopPosition) (if CheckBraces::Return (d-WarningDialog CheckBraces::Return)))))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/GroupStaffStart.scm0000644000000000000000000000013213135434036030006 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.626648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/GroupStaffStart.scm0000644000175000017500000000042013135434036031653 0ustar00jjbenhamjjbenham00000000000000(let ((tag "GroupStaffStart")) (if (d-Directive-staff? tag) (d-DirectiveDelete-staff tag) (AttachDirective "staff" "prefix" `(,tag . "Group Staff Start") " \\new StaffGroup <<\n" DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_TAGEDIT))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/CheckBraces.xml0000644000000000000000000000013213135434036027063 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.626648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/CheckBraces.xml0000644000175000017500000000055713135434036030743 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CheckBraces <_label>Check Braces <_tooltip>Checks the braces (staff groupings) for this movement. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/ChoirStaffStart.scm0000644000000000000000000000013213135434036027756 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.626648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/ChoirStaffStart.scm0000644000175000017500000000042013135434036031623 0ustar00jjbenhamjjbenham00000000000000(let ((tag "ChoirStaffStart")) (if (d-Directive-staff? tag) (d-DirectiveDelete-staff tag) (AttachDirective "staff" "prefix" `(,tag . "Choir Staff Start") " \\new ChoirStaff <<\n" DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_TAGEDIT))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/BraceEnd.scm0000644000000000000000000000013213135434036026353 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.626648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/BraceEnd.scm0000644000175000017500000000536713135434036030237 0ustar00jjbenhamjjbenham00000000000000(let ((tag "BraceEnd")(choice 'add) (number #f)) (define (write-brace-ends number) (define brace " >>%Brace End\n") (d-DirectivePut-staff-data tag (number->string number)) (d-DirectivePut-staff-display tag (_ "Brace End") ) (d-DirectivePut-staff-postfix tag (xsubstring brace 0 (* (string-length brace) number))) (d-DirectivePut-staff-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_TAGEDIT))) (set! number (d-DirectiveGet-staff-data tag)) (if number (set! choice (RadioBoxMenu (cons (string-append (_ "Add an End Brace Marker") " (" number "->" (number->string (+ (string->number number) 1)) ")") 'add) (cons (string-append (_ "Delete an End Brace Marker") " (" number "->" (number->string (- (string->number number) 1)) ")") 'delete) (cons (_ "Move End Brace Marker Up") 'up) (cons (_ "Move End Brace MarkerDown") 'down) (cons (_ "Cancel") #f))) (set! number "0")) (case choice ((delete) (set! number (string->number number)) (if (= 1 number) (d-DirectiveDelete-staff tag) (write-brace-ends (- number 1)))) ((up) (set! number (string->number number)) (if (= 1 number) (d-DirectiveDelete-staff tag) (write-brace-ends (- number 1))) (if (d-MoveToStaffUp) (begin (set! number (d-DirectiveGet-staff-data tag)) (if (not number) (set! number "0")) (write-brace-ends (+ 1 (string->number number)))) (d-WarningDialog (_ "No staff above")))) ((down) (set! number (string->number number)) (if (= 1 number) (d-DirectiveDelete-staff tag) (write-brace-ends (- number 1))) (if (d-MoveToStaffDown) (begin (set! number (d-DirectiveGet-staff-data tag)) (if (not number) (set! number "0")) (write-brace-ends (+ 1 (string->number number)))) (d-WarningDialog (_ "No staff below")))) ((add) (if number (set! number (string->number number)) (set! number 0)) (write-brace-ends (+ number 1))))) (d-CheckBraces) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/GrandStaffStart.xml0000644000000000000000000000013213135434036027763 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.636648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/GrandStaffStart.xml0000644000175000017500000000102113135434036031626 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChoirStaffEnd GrandStaffStart <_label>GrandStaff Start <_tooltip>Start grouping single staves together in order to form multi-stave systems. In a GrandStaff, the group begins with a brace, and bar lines are connected between the staves. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/BraceEnd.xml0000644000000000000000000000013213135434036026371 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.636648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/BraceEnd.xml0000644000175000017500000000064413135434036030246 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChoirStaffStart BraceEnd <_label>Brace End <_tooltip>Add or remove end of staff group marks, or move them to an adjacent staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/GrandStaffStart.scm0000644000000000000000000000013213135434036027745 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.636648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/GrandStaffStart.scm0000644000175000017500000000042013135434036031612 0ustar00jjbenhamjjbenham00000000000000(let ((tag "GrandStaffStart")) (if (d-Directive-staff? tag) (d-DirectiveDelete-staff tag) (AttachDirective "staff" "prefix" `(,tag . "Grand Staff Start") " \\new GrandStaff <<\n" DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_TAGEDIT))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/PianoStaffStart.xml0000644000000000000000000000013213135434036027776 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.636648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PianoStaffStart.xml0000644000175000017500000000103513135434036031646 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GroupStaffEnd PianoStaffStart <_label>PianoStaff Start <_tooltip>Start grouping single staves together in order to form multi-stave systems. The PianoStaff is identical to a GrandStaff, except that it supports printing the instrument name directly. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/DeleteStaffGroupings0000644000000000000000000000013213135434036030213 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.659981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/DeleteStaffGroupings.xml0000644000175000017500000000062713135434036032670 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GrandStaffEnd DeleteStaffGroupings <_label>Delete all staff groupings <_tooltip>Clear the staff from all groupings denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/PianoStaffStart.scm0000644000000000000000000000013213135434036027760 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.659981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PianoStaffStart.scm0000644000175000017500000000042013135434036031625 0ustar00jjbenhamjjbenham00000000000000(let ((tag "PianoStaffStart")) (if (d-Directive-staff? tag) (d-DirectiveDelete-staff tag) (AttachDirective "staff" "prefix" `(,tag . "Piano Staff Start") " \\new PianoStaff <<\n" DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_TAGEDIT))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/GroupStaffStart.xml0000644000000000000000000000013213135434036030024 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.659981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/GroupStaffStart.xml0000644000175000017500000000077413135434036031705 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GroupStaffStart <_label>GroupStaff Start <_tooltip>Start grouping single staves together in order to form multi-stave systems. In the GroupStaff context, the group is started with a bracket and bar lines are drawn through all the staves. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/PaxHeaders.19168/ChoirStaffStart.xml0000644000000000000000000000013213135434036027774 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.659981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffGroupings/ChoirStaffStart.xml0000644000175000017500000000100513135434036031641 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PianoStaffEnd ChoirStaffStart <_label>ChoirStaff Start <_tooltip>Start grouping single staves together in order to form multi-stave systems. In a ChoirStaff, the group starts with a bracket, but bar lines are not connected. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/Voices0000644000000000000000000000013213135434150022413 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/0000755000175000017500000000000013135434150024341 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/ShiftOn.scm0000644000000000000000000000013213135434036024551 xustar0030 mtime=1500919838.039981806 30 atime=1500919928.673315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/ShiftOn.scm0000644000175000017500000000055213135434036026424 0ustar00jjbenhamjjbenham00000000000000;;;ShiftOn (if (d-Directive-standalone? "ShiftForVoices") (d-DirectiveDelete-standalone "ShiftForVoices")) (d-DirectivePut-standalone "ShiftForVoices") (d-DirectivePut-standalone-postfix "ShiftForVoices" "\\shiftOn") (d-DirectivePut-standalone-display "ShiftForVoices" (_ "Shift")) (d-DirectivePut-standalone-minpixels "ShiftForVoices" 30) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/MergeDifferentlyDottedOff.xm0000644000000000000000000000013213135434036030073 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.673315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/MergeDifferentlyDottedOff.xml0000644000175000017500000000102213135434036032113 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MergeDifferentlyDottedOff MergeDifferentlyDotttedOn <_label>Merge Differently Dotted Off <_tooltip>From this point notes in different voices that begin at the same time will not be merged onto the same stem if they differ in the dotting. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/NewVoice.scm0000644000000000000000000000013213135434036024716 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.673315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/NewVoice.scm0000644000175000017500000000010413135434036026562 0ustar00jjbenhamjjbenham00000000000000;;NewVoice (d-NewStructuredStaff 'voice) (d-InheritStaffProperties) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/InitialVoiceFour.scm0000644000000000000000000000013213135434036026412 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.673315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/InitialVoiceFour.scm0000644000175000017500000000074613135434036030272 0ustar00jjbenhamjjbenham00000000000000;;;InitialVoiceFour (let ((tag "InitialVoice") (move-right #f)) (d-PushPosition) (d-DirectivePut-voice-display tag (_ "Voice Four")) (d-DirectivePut-voice-postfix tag "\\voiceFour") (d-DirectivePut-voice-override tag DENEMO_OVERRIDE_GRAPHIC) (d-MoveToBeginning) (if (StemDirective?) (d-DeleteObject) (set! move-right #t)) (d-StartDownStems) (d-MoveCursorLeft) (d-PopPosition) (if move-right (d-MoveCursorRight));;to compensate for the insertion of the stem directive (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/ShiftOff.scm0000644000000000000000000000013213135434036024707 xustar0030 mtime=1500919838.039981806 30 atime=1500919928.679981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/ShiftOff.scm0000644000175000017500000000055713135434036026567 0ustar00jjbenhamjjbenham00000000000000;;;ShiftOff (if (d-Directive-standalone? "ShiftForVoices") (d-DirectiveDelete-standalone "ShiftForVoices")) (d-DirectivePut-standalone "ShiftForVoices") (d-DirectivePut-standalone-postfix "ShiftForVoices" "\\shiftOff") (d-DirectivePut-standalone-display "ShiftForVoices" (_ "No Shift")) (d-DirectivePut-standalone-minpixels "ShiftForVoices" 30) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/InitialVoiceFour.xml0000644000000000000000000000013213135434036026430 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.679981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/InitialVoiceFour.xml0000644000175000017500000000072413135434036030304 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InitialVoiceThree InitialVoiceFour <_label>Initial Voice Four <_tooltip>Sets the (initial) voice of the staff to be voice four (this affects stems down, slurs etc on printing) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/CreateParts.xml0000644000000000000000000000013213135434036025432 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.679981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/CreateParts.xml0000644000175000017500000000060613135434036027305 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CreateIntro CreateParts <_label>Create Parts <_tooltip>Create three parts from the current staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/SetCurrentStaffAsVoice.scm0000644000000000000000000000013213135434036027533 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.679981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/SetCurrentStaffAsVoice.scm0000644000175000017500000000020113135434036031375 0ustar00jjbenhamjjbenham00000000000000;;;SetCurrentStaffAsVoice (if (not (d-StaffToVoice)) (d-WarningDialog (_ "Current staff is already a voice or not suitable"))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/Part-Combining0000644000000000000000000000013213135434150025224 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/0000755000175000017500000000000013135434150027152 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PaxHeaders.19168/PartCombineAu0000644000000000000000000000013213135434036027720 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.679981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PartCombineAutomatic.scm0000644000175000017500000000125413135434036033735 0ustar00jjbenhamjjbenham00000000000000;;;partcombineAutomatic (let ((tag "PartCombineAutomatic")(help (_ "This directive instructs the LilyPond typesetter to combine notes from the voices using the default part combining.\nUse with the Part Combine command.\nYou can delete the directive as any other object."))) (if (d-Directive-standalone? tag) (d-InfoDialog help) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-InfoDialog help) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons tag "\\partcombineAutomatic") #f "\npA\nDenemo\n48") (d-DirectivePut-standalone-gy tag -44) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PaxHeaders.19168/IgnoreClashin0000644000000000000000000000013213135434036027754 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.689981806 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/IgnoreClashingNoteColumns.scm0000644000175000017500000000111513135434036034742 0ustar00jjbenhamjjbenham00000000000000;;;IgnoreClashingNoteColumns (let ((tag "IgnoreClashingNoteColumns")) (if (d-Directive-score? tag) (begin (d-DirectiveDelete-score tag) (d-InfoDialog (_ "Clashing Note Columns will generate a warning from the LilyPond typesetter"))) (begin ;(d-DirectivePut-score-prefix tag "\\layout {\\override NoteColumn #'ignore-collision = ##t }\n") (d-DirectivePut-score-prefix tag "\n#(ly:expect-warning \"ignoring too many clashing note columns\")\n") (d-DirectivePut-score-display tag (_ "Ignore Clashing Columns")) (d-DirectivePut-score-override tag 4))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PaxHeaders.19168/PartCombine.x0000644000000000000000000000013213135434036027700 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.689981806 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PartCombine.xml0000644000175000017500000000073213135434036032104 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InitialVoice PartCombine <_label>Part Combine Two Voices <_tooltip>The two voices will be printed only once when they are the same, otherwise they will be printed as parts. (Off/On) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PaxHeaders.19168/PartCombineAp0000644000000000000000000000013213135434036027713 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.689981806 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PartCombineApart.xml0000644000175000017500000000072413135434036033075 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PartCombineApart PartCombineAutomatic <_label>Keep Voices Apart <_tooltip>When part combining, from this point the parts will be kept apart even though they could be combined. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PaxHeaders.19168/PartCombineUn0000644000000000000000000000013213135434036027735 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.689981806 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PartCombineUnisono.xml0000644000175000017500000000057413135434036033463 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PartCombineUnisono PartCombineChords <_label>Unisono <_tooltip>Combine parts as unison. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PaxHeaders.19168/PartCombineAu0000644000000000000000000000013213135434036027720 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.713315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PartCombineAutomatic.xml0000644000175000017500000000061713135434036033755 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PartCombineAutomatic PartCombineUnisono <_label>Automatic <_tooltip>Reverts to the default part combining. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PaxHeaders.19168/PartCombineCh0000644000000000000000000000013213135434036027705 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.713315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PartCombineChords.xml0000644000175000017500000000071613135434036033251 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PartCombineChords InitialVoice <_label>Part Combine Chords <_tooltip>From the cursor onwards chords will be combined from the parts included in the part combine command. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PaxHeaders.19168/PartCombineAp0000644000000000000000000000013213135434036027713 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.713315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PartCombineApart.scm0000644000175000017500000000124513135434036033056 0ustar00jjbenhamjjbenham00000000000000;;;partcombineApart (let ((tag "PartCombineApart")(help (_ "This directive instructs the LilyPond typesetter not to combine notes from the voices when part combining has been set..\nUse with the Part Combine command.\nYou can delete the directive as any other object."))) (if (d-Directive-standalone? tag) (d-InfoDialog help) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-InfoDialog help) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons tag "\\partcombineApart") #f "\npX\nDenemo\n48") (d-DirectivePut-standalone-gy tag -44) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PaxHeaders.19168/PartCombineCh0000644000000000000000000000013213135434036027705 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.713315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PartCombineChords.scm0000644000175000017500000000121613135434036033227 0ustar00jjbenhamjjbenham00000000000000;;;partcombineChords (let ((tag "PartCombineChords")(help (_ "This directive instructs the LilyPond typesetter to combine notes from the voices into chords.\nUse with the Part Combine command.\nYou can delete the directive as any other object."))) (if (d-Directive-standalone? tag) (d-InfoDialog help) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-InfoDialog help) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons tag "\\partcombineChords") #f "\npC\nDenemo\n48") (d-DirectivePut-standalone-gy tag -44) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PaxHeaders.19168/PartCombineUn0000644000000000000000000000013213135434036027735 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.713315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PartCombineUnisono.scm0000644000175000017500000000121713135434036033440 0ustar00jjbenhamjjbenham00000000000000;;;partcombineUnisono (let ((tag "PartCombineUnisono")(help (_ "This directive instructs the LilyPond typesetter to combine notes from the voices as unison.\nUse with the Part Combine command.\nYou can delete the directive as any other object."))) (if (d-Directive-standalone? tag) (d-InfoDialog help) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-InfoDialog help) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons tag "\\partcombineUnisono") #f "\npU\nDenemo\n48") (d-DirectivePut-standalone-gy tag -44) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PaxHeaders.19168/IgnoreClashin0000644000000000000000000000013213135434036027754 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.719981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/IgnoreClashingNoteColumns.xml0000644000175000017500000000103513135434036034761 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS IgnoreClashingNoteColumns PartCombineApart <_label>Clashing Note Column Warnings (Off/On) <_tooltip>Turns warnings from the LilyPond typesetter about clashing note columns off or on. These can be harmless but can cause a warning to check the score. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PaxHeaders.19168/PartCombine.s0000644000000000000000000000013213135434036027673 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.723315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/Part-Combining/PartCombine.scm0000644000175000017500000000237113135434036032067 0ustar00jjbenhamjjbenham00000000000000;;;PartCombine (let ((tag "PartCombine")) (define (install-combine) (if (d-Directive-voice? tag) (begin (d-DirectiveDelete-voice tag) (d-MoveToVoiceDown) (d-DirectiveDelete-voice tag) (d-InfoDialog (_ "Parts are now uncombined"))) (begin (d-DirectivePut-voice-prefix tag " \\set Staff.soloText = #\"\" \\set Staff.soloIIText = #\"\" \\set Staff.aDueText = #\"\" \\partcombine { ") (d-DirectivePut-voice-display tag (_ "Part Combine ")) (d-DirectivePut-voice-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND)) (d-MoveToVoiceDown) (d-DirectivePut-voice-prefix tag " } %{next voice is combined with previous part %} ") (d-DirectivePut-voice-display tag (_ "Part Combine ")) (d-DirectivePut-voice-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND)))) (d-SetSaved #f)) (d-PushPosition) (if (d-MoveToVoiceDown) (if (d-MoveToVoiceDown) (d-WarningDialog (_ "Can only part-combine two voices")) (begin (d-MoveToVoiceUp) (install-combine))) (if (d-MoveToVoiceUp) (if (d-MoveToVoiceUp) (d-WarningDialog (_ "Only two voices can be part-combined")) (install-combine)) (d-WarningDialog (_ "Must be on a staff with two voices")))) (d-PopPosition)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/InitialVoiceThree.scm0000644000000000000000000000013213135434036026546 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.723315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/InitialVoiceThree.scm0000644000175000017500000000074713135434036030427 0ustar00jjbenhamjjbenham00000000000000;;;InitialVoiceThree (let ((tag "InitialVoice") (move-right #f)) (d-PushPosition) (d-DirectivePut-voice-display tag (_ "Voice Three")) (d-DirectivePut-voice-postfix tag "\\voiceThree") (d-DirectivePut-voice-override tag DENEMO_OVERRIDE_GRAPHIC) (d-MoveToBeginning) (if (StemDirective?) (d-DeleteObject) (set! move-right #t)) (d-StartUpStems) (d-MoveCursorLeft) (d-PopPosition) (if move-right (d-MoveCursorRight));;to compensate for the insertion of the stem directive (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/SetCurrentVoiceAsStaff.scm0000644000000000000000000000013213135434036027533 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.723315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/SetCurrentVoiceAsStaff.scm0000644000175000017500000000015613135434036031406 0ustar00jjbenhamjjbenham00000000000000;;;SetCurrentVoiceAsStaff (if (not (d-VoiceToStaff)) (d-WarningDialog (_ "The current staff is not voice")))denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/InitialVoiceOne.xml0000644000000000000000000000013213135434036026236 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.733315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/InitialVoiceOne.xml0000644000175000017500000000071013135434036030105 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS JoinVoices InitialVoiceOne <_label>Initial Voice One <_tooltip>Sets the (initial) voice of the staff to be voice one (this affects stems up, slurs etc on printing) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/TransposeVoices.scm0000644000000000000000000000013213135434036026326 xustar0030 mtime=1500919838.039981806 30 atime=1500919928.733315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/TransposeVoices.scm0000644000175000017500000000204313135434036030176 0ustar00jjbenhamjjbenham00000000000000;;;;; TransposeStaffPrint (define-once Transpose::Interval "c ees") (let ((lily #f) (text #f)(params TransposeStaffPrint::params)) (if (and params (not (equal? params "edit"))) (set! Transpose::Interval params) (set! Transpose::Interval (d-GetNoteNamesFromUser 2 Transpose::Interval (_ "<-- Transpose to -->") ))) (if Transpose::Interval (begin (set! lily (string-append "\\transpose " Transpose::Interval " ")) (set! text (string-append (_ "Print transposed: ") Transpose::Interval " ")) (d-PushPosition) (while (d-MoveToVoiceUp)) (let loop () (d-DirectivePut-voice-override "TransposeStaffPrint" DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-voice-display "TransposeStaffPrint" text) (d-DirectivePut-voice-prefix "TransposeStaffPrint" lily) (if (d-MoveToVoiceDown) (loop))) (d-PopPosition) (d-SetSaved #f)) (d-WarningDialog (_ "Cancelled")))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/MergeDifferentlyDottedOn.scm0000644000000000000000000000013213135434036030073 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.733315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/MergeDifferentlyDottedOn.scm0000644000175000017500000000077413135434036031754 0ustar00jjbenhamjjbenham00000000000000;;;MergeDifferentlyDottedOn (let ((tag "MergeDifferentlyDotted")) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons tag "\\mergeDifferentlyDottedOn ") #f "\n÷\nDenemo\n48") (d-DirectivePut-standalone-gy tag -44) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/InitialVoiceAuto.scm0000644000000000000000000000013213135434036026407 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.733315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/InitialVoiceAuto.scm0000644000175000017500000000050013135434036030253 0ustar00jjbenhamjjbenham00000000000000;;;InitialVoiceAuto (let ((tag "InitialVoice") (move-left #f)) (d-PushPosition) (d-DirectiveDelete-voice tag) (d-MoveToBeginning) (if (StemDirective?) (begin (d-DeleteObject) (set! move-left #t))) (d-PopPosition) (if move-left (d-MoveCursorLeft));;to compensate for the deletion of the stem directive (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/CreatePartsFromTop.scm0000644000000000000000000000013213135434036026723 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.739981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/CreatePartsFromTop.scm0000644000175000017500000000235613135434036030602 0ustar00jjbenhamjjbenham00000000000000;;;CreatePartsFromTop (let () (define (delete-highest-notes) ;delete highest note of each chord (d-MoveToBeginning) (let loop () (if (d-NextChord) (begin (if (d-CursorToNote (d-GetNoteFromTop)) (d-StagedDelete)) (loop))))) (define (delete-lower-notes) (d-MoveToBeginning) (let loop ((continue #f)) (if (d-NextChord) (begin (if (d-CursorToNote (d-GetNoteFromTop 2)) (begin (d-RemoveNoteFromChord) (set! continue #t) (loop continue)) (loop continue))) (if continue (begin (d-MoveToBeginning) (loop #f)))))) (define (pause) (disp "Pausing..." "Press any key" " ")) (d-MoveToBeginning) (d-GoToEnd) (d-Copy) (d-AddAfter) (d-Paste) (d-MoveToBeginning) (d-VoicePreset1) (d-MoveCursorLeft) (delete-highest-notes);;delete part 3 (delete-highest-notes);;delete part 2 (d-AddAfter) (d-Paste) (pause) (d-MoveToBeginning) (d-VoicePreset2) (d-MoveCursorLeft) (delete-highest-notes);;delete part 3 (delete-lower-notes);;delete part 1 (and anything extra) (d-AddAfter) (d-Paste) (pause) (d-MoveToBeginning) (d-VoicePreset3) (d-MoveCursorLeft) (delete-lower-notes);;delete parts 2 and 1 (and anything extra) (d-SimplifyTies) (d-MoveToStaffUp) (d-SimplifyTies) (d-MoveToStaffUp) (d-SimplifyTies) ) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/AddMirrorVoice.scm0000644000000000000000000000013213135434036026050 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.739981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/AddMirrorVoice.scm0000644000175000017500000000043513135434036027723 0ustar00jjbenhamjjbenham00000000000000;;AddMirrorVoice (let ((params AddMirrorVoice::params)(name (d-StaffProperties "query=denemo_name"))) (d-AddAfter) (d-StaffProperties (string-append "denemo_name=" name) ) (if (not params) (d-SetCurrentStaffAsVoice)) (d-SubstituteMusic) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/SetCurrentStaffAsVoice.xml0000644000000000000000000000013213135434036027551 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.739981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/SetCurrentStaffAsVoice.xml0000644000175000017500000000065513135434036031430 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MoveToVoiceDown SetCurrentStaffAsVoice <_label>Staff to Voice <_tooltip>The current staff will be typeset as a voice on the staff above. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/InitialVoiceThree.xml0000644000000000000000000000013213135434036026564 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.739981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/InitialVoiceThree.xml0000644000175000017500000000072313135434036030437 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InitialVoiceTwo InitialVoiceThree <_label>Initial Voice Three <_tooltip>Sets the (initial) voice of the staff to be voice three (this affects stems up, slurs etc on printing) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/CreateParts.scm0000644000000000000000000000013213135434036025414 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.739981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/CreateParts.scm0000644000175000017500000000232413135434036027266 0ustar00jjbenhamjjbenham00000000000000;;;CreateParts (let () (define (delete-lowest-notes) ;delete lowest note of each chord (d-MoveToBeginning) (let loop () (if (d-NextChord) (begin (if (d-CursorToNote (d-GetNote)) (d-StagedDelete)) (loop))))) (define (delete-upper-notes) (d-MoveToBeginning) (let loop ((continue #f)) (if (d-NextChord) (begin (if (d-CursorToNote (d-GetNote 2)) (begin (d-RemoveNoteFromChord) (set! continue #t) (loop continue)) (loop continue))) (if continue (begin (d-MoveToBeginning) (loop #f)))))) (define (pause) (disp "Pausing..." "Press any key" " ")) (d-MoveToBeginning) (d-GoToEnd) (d-Copy) (d-AddAfter) (d-Paste) (d-MoveToBeginning) (d-VoicePreset1) (d-MoveCursorLeft) (delete-lowest-notes);;delete part 3 (delete-lowest-notes);;delete part 2 (d-AddAfter) (d-Paste) (pause) (d-MoveToBeginning) (d-VoicePreset2) (d-MoveCursorLeft) (delete-lowest-notes);;delete part 3 (delete-upper-notes);;delete part 1 (and anything extra) (d-AddAfter) (d-Paste) (pause) (d-MoveToBeginning) (d-VoicePreset3) (d-MoveCursorLeft) (delete-upper-notes);;delete parts 2 and 1 (and anything extra) (d-SimplifyTies) (d-MoveToStaffUp) (d-SimplifyTies) (d-MoveToStaffUp) (d-SimplifyTies) ) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/MergeDifferentlyDottedOff.sc0000644000000000000000000000013213135434036030054 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.759981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/MergeDifferentlyDottedOff.scm0000644000175000017500000000077713135434036032115 0ustar00jjbenhamjjbenham00000000000000;;;MergeDifferentlyDottedOff (let ((tag "MergeDifferentlyDotted")) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (begin (if (d-MoveCursorLeft) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (d-MoveCursorRight))) (StandAloneDirectiveProto (cons tag "\\mergeDifferentlyDottedOff ") #f "\n÷x\nDenemo\n48") (d-DirectivePut-standalone-gy tag -44) (d-DirectivePut-standalone-grob tag tag) (d-MoveCursorRight))) (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/InitialVoiceTwo.scm0000644000000000000000000000013213135434036026250 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.759981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/InitialVoiceTwo.scm0000644000175000017500000000074313135434036030125 0ustar00jjbenhamjjbenham00000000000000;;;InitialVoiceTwo (let ((tag "InitialVoice") (move-right #f)) (d-PushPosition) (d-DirectivePut-voice-display tag (_ "Voice Two")) (d-DirectivePut-voice-postfix tag "\\voiceTwo") (d-DirectivePut-voice-override tag DENEMO_OVERRIDE_GRAPHIC) (d-MoveToBeginning) (if (StemDirective?) (d-DeleteObject) (set! move-right #t)) (d-StartDownStems) (d-MoveCursorLeft) (d-PopPosition) (if move-right (d-MoveCursorRight));;to compensate for the insertion of the stem directive (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/MergeRests.xml0000644000000000000000000000013213135434036025275 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.759981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/MergeRests.xml0000644000175000017500000000101213135434036027140 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CreateParts MergeRests <_label>Merge Rests <_tooltip>Merges rests where two voices have a common rest. Applies to the whole movement. For multi-measure rests you need to additionally suppress one of the multi-measure rest counts. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/InitialVoiceTwo.xml0000644000000000000000000000013213135434036026266 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.759981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/InitialVoiceTwo.xml0000644000175000017500000000071713135434036030144 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InitialVoiceOne InitialVoiceTwo <_label>Initial Voice Two <_tooltip>Sets the (initial) voice of the staff to be voice two (this affects stems down, slurs etc on printing) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/CreatePartsFromTop.xml0000644000000000000000000000013213135434036026741 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.773315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/CreatePartsFromTop.xml0000644000175000017500000000065313135434036030616 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CreateParts CreatePartsFromTop <_label>Create Parts (Treble First) <_tooltip>Creates a set of parts extracting the highest part first. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/TransposeVoices.xml0000644000000000000000000000013213135434036026344 xustar0030 mtime=1500919838.039981806 30 atime=1500919928.773315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/TransposeVoices.xml0000644000175000017500000000071213135434036030215 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TransposeVoices <_label>(Print) Transpose <_tooltip>Prints the voices transposed by the interval given. This is in addition to any score-wide transposition and any staff-wide transposition denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/InitialVoice.xml0000644000000000000000000000013213135434036025574 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.773315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/InitialVoice.xml0000644000175000017500000000074213135434036027450 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InitialVoiceAuto InitialVoice <_label>Choose Initial Voice <_tooltip>Choose which voice this staff will initially be set to. To change voice during music see the Directives->Voices menu. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/ShiftOn.xml0000644000000000000000000000013213135434036024567 xustar0030 mtime=1500919838.039981806 30 atime=1500919928.773315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/ShiftOn.xml0000644000175000017500000000062613135434036026444 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShiftOff ShiftOn <_label>Use Horizontal Shifts <_tooltip>Turns on horizontal displacements of notes where needed. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/InitialVoiceAuto.xml0000644000000000000000000000013213135434036026425 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.773315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/InitialVoiceAuto.xml0000644000175000017500000000074713135434036030306 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InitialVoiceFour InitialVoiceAuto <_label>Initial Automatic Voice <_tooltip>Undoes the effect of the InitialVoiceOne, Two ... commands. The voice has variable stem direction, slur placement etc. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/NewVoice.xml0000644000000000000000000000013213135434036024734 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.783315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/NewVoice.xml0000644000175000017500000000103613135434036026605 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EditVoiceDirective NewVoice <_label>Add Voice <_tooltip>Adds a voice to the current staff, initially displayed on a staff of its own, for readability. It will print on the staff above, and can be displayed there using Join Voices command if desired. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/InitialVoiceOne.scm0000644000000000000000000000013213135434036026220 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.783315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/InitialVoiceOne.scm0000644000175000017500000000074113135434036030073 0ustar00jjbenhamjjbenham00000000000000;;;InitialVoiceOne (let ((tag "InitialVoice") (move-right #f)) (d-PushPosition) (d-DirectivePut-voice-display tag (_ "Voice One")) (d-DirectivePut-voice-postfix tag "\\voiceOne") (d-DirectivePut-voice-override tag DENEMO_OVERRIDE_GRAPHIC) (d-MoveToBeginning) (if (StemDirective?) (d-DeleteObject) (set! move-right #t)) (d-StartUpStems) (d-MoveCursorLeft) (d-PopPosition) (if move-right (d-MoveCursorRight));;to compensate for the insertion of the stem directive (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/AddMirrorVoice.xml0000644000000000000000000000013213135434036026066 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.783315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/AddMirrorVoice.xml0000644000175000017500000000126313135434036027741 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddMirrorVoice NewVoice <_label>Add Voice (Borrowed/Mirrored Music) <_tooltip>Adds a voice whose music is automatically mirrored from another staff of your choice. Use this e.g. to create a staff with two divisi parts, while keeping the second part as a separate staff, or to typeset both Fret Diagrams and Chord Symbols from the same music. Note that initial clef/key/time are copied not mirrored. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/InitialVoice.scm0000644000000000000000000000013213135434036025556 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.783315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/InitialVoice.scm0000644000175000017500000000125413135434036027431 0ustar00jjbenhamjjbenham00000000000000;;;InitialVoiceSetting (let ( (choice (d-GetOption (string-append (_ "Voice 1") stop (_ "Voice 2") stop (_ "Voice 3") stop (_ "Voice 4") stop (_ "Automatic Voice") stop)))) (if choice (cond ((string=? choice (_ "Voice 1")) (d-InitialVoiceOne)) ((string=? choice (_ "Voice 2")) (d-InitialVoiceTwo)) ((string=? choice (_ "Voice 3")) (d-InitialVoiceThree)) ((string=? choice (_ "Voice 4")) (d-InitialVoiceFour)) ((string=? choice (_ "Automatic Voice")) (d-InitialVoiceAuto))))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/NoteColumnShift.scm0000644000000000000000000000013213135434036026260 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.793315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/NoteColumnShift.scm0000644000175000017500000000103313135434036030126 0ustar00jjbenhamjjbenham00000000000000;;NoteColumnShift (let* ( (tag "NoteColumnShift") (val (d-DirectiveGet-chord-display tag))) (if (not val) (set! val "1.2")) (set! val (d-GetUserInput (_ "Horizontal Shift") (_ "Give amount (staff spaces)") val)) (if val (begin (if (string-null? val) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-prefix tag (string-append "\\once \\override NoteColumn #'force-hshift = #" val " ")) (d-DirectivePut-chord-display tag val) (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX))) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/NoteColumnShift.xml0000644000000000000000000000013213135434036026276 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.793315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/NoteColumnShift.xml0000644000175000017500000000100513135434036030143 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShiftOn NoteColumnShift <_label>Change Note Shift <_tooltip>On printing the current note/chord will be shifted from notes in other voices by the amount you give. Use this to alter which voice is shifted leftwards/rightwards. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/MergeRests.scm0000644000000000000000000000013213135434036025257 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.793315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/MergeRests.scm0000644000175000017500000000102613135434036027127 0ustar00jjbenhamjjbenham00000000000000;;MergeRests (let ((tag "MergeRests")) (if (d-Directive-layout? tag) (begin (if (not MergeRests::params) (d-InfoDialog (_ "Turning off merging of rests, use Merge Rests command to turn it on"))) (d-DirectiveDelete-layout tag)) (begin (d-LilyPondInclude "merge-rests.ily") (d-DirectivePut-layout-postfix tag " \\context { \\Staff \\override RestCollision #'positioning-done = #merge-rests-on-positioning \\override MultiMeasureRest #'Y-offset = #merge-multi-measure-rests-on-Y-offset }" )))) (d-SetSaved #f)denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/SetCurrentVoiceAsStaff.xml0000644000000000000000000000013213135434036027551 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.793315139 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/SetCurrentVoiceAsStaff.xml0000644000175000017500000000064713135434036031431 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetCurrentStaffAsVoice SetCurrentVoiceAsStaff <_label>Voice to Staff <_tooltip>The current voice will be typeset on its own staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/MergeDifferentlyDottedOn.xml0000644000000000000000000000013213135434036030111 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.809981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/MergeDifferentlyDottedOn.xml0000644000175000017500000000101413135434036031756 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MergeDifferentlyDotttedOn ShiftOn <_label>Differently Dotted Merge On <_tooltip>From this point in the music notes in different voices beginning at the same time will be merged onto the same stem even if they differ in the dotting. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/PaxHeaders.19168/ShiftOff.xml0000644000000000000000000000013213135434036024725 xustar0030 mtime=1500919838.039981806 30 atime=1500919928.809981805 30 ctime=1500919913.013315139 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Voices/ShiftOff.xml0000644000175000017500000000067113135434036026602 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS VoicesDoublestroke ShiftOff <_label>No Horizontal Shifts <_tooltip>Turns off horizontal displacement of notes (which avoid collisions between parts) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/InsertStaff0000644000000000000000000000013213135434150023413 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/0000755000175000017500000000000013135434150025341 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/DynamicsStaff.scm0000644000000000000000000000013213135434036026732 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.809981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/DynamicsStaff.scm0000644000175000017500000000421513135434036030605 0ustar00jjbenhamjjbenham00000000000000;;DynamicsStaff (let ((tag "DynamicsStaff") (interactive (not (eq? DynamicsStaff::params 'noninteractive))) (name (d-StaffProperties "query=denemo_name"))) (if (not (d-Directive-staff? tag)) (begin (d-SetSaved #f) (d-PushPosition) (if interactive (d-NewStructuredStaff)) (d-InitialClef "Alto") (d-SetStaffRangeHi 0) (d-SetStaffRangeLo 0) (d-StaffProperties (string-append "denemo_name=" name)) (d-SetColorOfStaff #x20A0E000) (d-SetLinesInStaff 1) (d-ShortenStaffHeight 40) (if interactive (d-StartUpStems)) (d-DirectivePut-clef-graphic tag "\nD\nDenemo\n48") (d-DirectivePut-clef-gy tag 36) (d-DirectivePut-clef-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND )) (d-DirectivePut-keysig-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND)) (d-DirectivePut-timesig-override tag DENEMO_OVERRIDE_LILYPOND) (d-DirectivePut-staff-prefix tag " \\new Dynamics <<\n" ) (d-DirectivePut-staff-graphic tag "Dynamics Staff" ) (d-DirectivePut-staff-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND )) (d-DirectivePut-voice-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND )) (d-StaffMasterVolume #f) (d-PopPosition) (d-MoveToStaffDown) (d-CursorToNote "c'") (GoToMeasureEnd))) (if (not DynamicsStaff::params) (d-InfoDialog (_ "This line (\"staff\") is for holding cresc. dim hairpins and dynamic markings so that they can be positioned (using dummy notes, colored blue) and will align with each other. Create this between the staffs for a piano work or on any staff where alignment of hairpins and dynamic marks is needed.\nWARNING: Do not place clef changes or other non-duration items in this staff - it may trigger the creation of a separate staff on typesetting!\nThis Dynamics \"staff\" must have the same part name as the staff the dynamics should appear on.")))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/AddMirrorStaff.scm0000644000000000000000000000013213135434036027046 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.819981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/AddMirrorStaff.scm0000644000175000017500000000005313135434036030715 0ustar00jjbenhamjjbenham00000000000000;;AddMirrorStaff (d-AddMirrorVoice 'staff) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/MarksStaff.xml0000644000000000000000000000013213135434036026256 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.819981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MarksStaff.xml0000644000175000017500000000140113135434036030123 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PianoStaff MarksStaff <_label>Add Staff for Marks <_tooltip> This staff is purely for holding marks that should appear once at the top of the system - avoiding having to put the marks in each part. It must have a blank part name, so that it is typeset with every part. The marks should be spaced using either dummy notes or spacers.\nWARNING: Do not place clef changes or other non-duration items in this staff - it may trigger the creation of a separate staff on typesetting! denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/CreateClickStaff.scm0000644000000000000000000000013213135434036027334 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.819981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/CreateClickStaff.scm0000644000175000017500000001001213135434036031177 0ustar00jjbenhamjjbenham00000000000000;;;CreateClickStaff (let ((old_highlight (d-HighlightCursor #f)) (old_volume (d-MasterVolume))) (define (insert-duration str) (if (and str (string->number str) (not (string-suffix? "." str))) (eval-string (string-append "(d-" str ")")) (d-InfoDialog (_ "Fill in the upbeat in the click track before playing")))) (define (duplicate-measures) (let loop () (if (and (FullDurationMeasure?) (d-MoveToMeasureRight) (EmptyMeasure?)) (begin (d-MoveToMeasureLeft) (d-AddDuplicateMeasure) (GoToMeasureBeginning) (if (not (Music?)) (d-DeleteObject)) (loop)))) (Timesignature?)) (define (play-clicks-and-recurse) ;;;play this measure in the click staff (d-StaffToPlay 1) (d-SetPlaybackInterval (CurrentMeasureOnTime) (CurrentMeasureOffTime)) (d-Play "(d-StaffToPlay)(d-CreateClickStaff)")) ;;;procedure adds beats to the bar and plays it the recursively call the procedure to ask if it should be duplicated. (define (populate-measure) (d-DirectiveDelete-standalone "Blank") (let* ((numerator (duration::GetNumerator)) (denominator (duration::lilypond->denemo (duration::GetDenominator))) (put-beat (eval-string (string-append "d-" (number->string denominator))))) (put-beat) (d-CursorUp) (d-CursorUp) (d-AddNoteToChord) (d-CursorDown) (d-CursorDown) (if (> numerator 1) (let loop ((n (- numerator 2))) (put-beat) (if (positive? n) (loop (1- n))))) (play-clicks-and-recurse))) ;;main procedure (if (equal? DenemoClickTrack (d-StaffProperties "query=denemo_name")) (begin (if (ZeroDurationMeasure?) (populate-measure) (if (FullDurationMeasure?) (let ((choice (RadioBoxMenu (cons (_ "Populate with these clicks") 'populate) (cons (_ "Play clicks again") 'play) (cons (_ "Edit clicks") 'edit)))) (case choice ((populate) (if (duplicate-measures) (begin (d-MoveCursorRight) (populate-measure)))) ((play) (play-clicks-and-recurse)) ((edit) (d-InfoDialog (_ "Edit the clicks and then re-run this command to populate the subsequent empty measures up to any time signature change. Then repeat for each change of time signature.")))))))) (begin (d-MoveToBeginning) (d-MasterVolume 0) (d-NewStructuredStaff 'initial) (while (d-StaffUp)) (d-StaffHidden #t) (d-StaffProperties "midi_channel=9") (d-DirectivePut-clef-graphic "DrumClef" "DrumClef") (d-DirectivePut-clef-override "DrumClef" DENEMO_OVERRIDE_GRAPHIC) (d-NonPrintingStaff) (d-MuteStaff "unmute") (d-StaffProperties (string-append "denemo_name=" DenemoClickTrack)) (if (d-Directive-standalone? "Upbeat") (begin (d-MoveCursorRight) (insert-duration (duration::shortfall)) (d-MoveToMeasureRight))) (populate-measure))) (d-MasterVolume old_volume) (d-HighlightCursor old_highlight) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/NewStaffBefore.scm0000644000000000000000000000013213135434036027037 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.829981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/NewStaffBefore.scm0000644000175000017500000000040713135434036030711 0ustar00jjbenhamjjbenham00000000000000;;;NewStaffBefore (let ((name #f)) (d-NewStructuredStaff) (d-SwapStaffs) (d-InstrumentName 'once) (set! name (d-DirectiveGet-staff-display "InstrumentName")) (if name (d-StaffProperties (string-append "denemo_name=" name)))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/MIDI0000644000000000000000000000013213135434150024135 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/0000755000175000017500000000000013135434150026063 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/PaxHeaders.19168/LoadMidiTrack.scm0000644000000000000000000000013213135434036027370 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.829981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/LoadMidiTrack.scm0000644000175000017500000000133613135434036031244 0ustar00jjbenhamjjbenham00000000000000;;;;LoadMidiTrack (let ((n "1")(max (d-GetImportedMidiTracks))) (if max (begin (if LoadMidiTrack::params (set! n LoadMidiTrack::params) (begin (if (= max 1) (set! n "1") (begin (set! n (d-GetUserInput (_ "MIDI Track Selection") (string-append (_ "Select track to import") " 1 ... " (number->string max) ":") "1")))))) (if n (begin (set! n (string->number n)) (if (and (<= n max) (> n 0)) (begin (while (d-MoveToStaffUp)) (d-NewStructuredStaff) (d-GetImportedMidiTrack n) (d-AdvanceMarkedMidi 0)) (d-WarningDialog (_ "Out of range")))) (d-InfoDialog (_ "Cancelled")))) (d-WarningDialog (_ "No MIDI file loaded")))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/PaxHeaders.19168/NextMidiTrack.scm0000644000000000000000000000013213135434036027427 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.829981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/NextMidiTrack.scm0000644000175000017500000000044613135434036031304 0ustar00jjbenhamjjbenham00000000000000;;;NextMidiTrack (let ((max (d-GetImportedMidiTracks))) (if max (if (< (d-GetCurrentMidiTrack) max) (d-LoadMidiTrack (number->string (1+ (d-GetCurrentMidiTrack)))) (d-WarningDialog (_ "This is the last track"))) (d-WarningDialog (_ "No MIDI file loaded")))) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/PaxHeaders.19168/LoadMidiTrack.xml0000644000000000000000000000013213135434036027406 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.829981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/LoadMidiTrack.xml0000644000175000017500000000122513135434036031257 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LoadMidiTrack CreateClickStaffForMidi <_label>Insert Staff for MIDI Track <_tooltip>Creates a staff below the click track for the MIDI track selected. The staff is empty except for time signature and tempo changes. The MIDI pitches from the track are displayed above the click track and notes can be inserted by double-clicking on a MIDI pitch and entering the rhythm. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/PaxHeaders.19168/PreviousMidiTrack.0000644000000000000000000000013213135434036027622 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.839981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/PreviousMidiTrack.scm0000644000175000017500000000044713135434036032203 0ustar00jjbenhamjjbenham00000000000000;;;PreviousMidiTrack (let ((max (d-GetImportedMidiTracks))) (if max (if (> (d-GetCurrentMidiTrack) 1) (d-LoadMidiTrack (number->string (1- (d-GetCurrentMidiTrack)))) (d-WarningDialog (_ "This is the first track"))) (d-WarningDialog (_ "No MIDI file loaded")))) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/PaxHeaders.19168/CreateClickStaffFo0000644000000000000000000000013213135434036027562 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.839981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/CreateClickStaffForMidi.scm0000644000175000017500000001045713135434036033210 0ustar00jjbenhamjjbenham00000000000000;;;CreateClickStaffForMidi (let () (define (writeBar numerator denominator) (let loop ((count numerator)) (if (positive? count) (begin (eval-string (string-append "(d-" (number->string (duration::lilypond->denemo denominator)) ")")) (loop (- count 1)))))) (define (writeBars count numer denom) (if (positive? count) (begin (writeBar numer denom) (writeBars (1- count) numer denom)))) (define (writeAllBars duration tempo old_tempo) (if (and duration tempo) (let* ( (numer (list-ref tempo 1)) (denom (list-ref tempo 2)) (spqn (list-ref tempo 3)) (seconds_per_bar (* spqn (* numer (* (/ 4 denom))))) (bars (round (/ duration seconds_per_bar))) (thetimesig (string-append (number->string numer) "/" (number->string denom)))) (if (not (None?)) (d-AddMeasure)) (if (not (equal? (d-GetPrevailingTimesig) thetimesig)) (d-InsertTimeSig thetimesig)) (if (or (not old_tempo) (not (equal? (list-ref tempo 3) (list-ref old_tempo 3)))) (let ((tag "MetronomeMark")(bpm (* 60 (/ 1 (list-ref tempo 3))))) (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-override tag (logior DENEMO_OVERRIDE_TAGEDIT DENEMO_OVERRIDE_TEMPO DENEMO_OVERRIDE_STEP)) (d-DirectivePut-standalone-midibytes tag (number->string bpm)) (d-DirectivePut-standalone-display tag (string-append (number->string (round bpm)) " = ð…Ÿ " )) (d-DirectivePut-standalone-minpixels tag 30) (d-MoveCursorRight) )) (writeBars bars numer denom)))) (define duration #f) (define old-time 0) (define tempo #f) (define old_highlight (d-HighlightCursor #f)) (define old_volume (d-MasterVolume)) (define next-tempo #f) (define old_tempo #f) ;;; the procedure (if (d-GetImportedMidiTracks) (begin (d-MasterVolume 0) (d-AddInitial) (d-NonPrintingStaff) (d-CursorToNote "c'") (d-StaffProperties (string-append "denemo_name=" DenemoClickTrack)) (let loop ((count 0)) (set! tempo (d-GetRecordedMidiTempo count)) (set! next-tempo #f) (if tempo (begin (set! next-tempo (d-GetRecordedMidiTempo (1+ count))) (if next-tempo (begin (set! duration (- (list-ref next-tempo 0) old-time)) (set! old-time (list-ref next-tempo 0))) (begin (set! duration (- (d-GetRecordedMidiDuration) old-time))))) (begin (set! duration (d-GetRecordedMidiDuration)))) (writeAllBars duration tempo old_tempo) (set! old_tempo tempo) (if next-tempo (loop (1+ count)))) (d-MuteStaff "unmute")) ;;No MIDI file loaded - create click staff for recording (let ((number "16") (timesig (d-InitialTimeSig "query=timesigname"))) (define numerator (car (string-split timesig #\/))) (define denominator (cadr (string-split timesig #\/))) (set! number (d-GetUserInput (_ "Click Track Creation") (_ "Give number of measures required: ") number)) (if (and number (string->number number)) (begin (d-MasterVolume 0) (d-AddInitial) (d-CursorToNote "c'") (d-NonPrintingStaff) (d-StaffProperties (string-append "denemo_name=" DenemoClickTrack)) (writeBars (string->number number) (string->number numerator)(string->number denominator)) (d-MuteStaff "unmute")) (d-WarningDialog (_ "Cancelled"))))) (d-MoveToBeginning) (d-MasterVolume old_volume) (d-HighlightCursor old_highlight)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/PaxHeaders.19168/CreateClickStaffFo0000644000000000000000000000013213135434036027562 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.839981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/CreateClickStaffForMidi.xml0000644000175000017500000000125613135434036033223 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CreateClickStaffForMidi NewStructuredStaff <_label>Create Click Track Staff <_tooltip>Creates a staff (a click track) at the top of this score from the imported MIDI file, using tempo and time signature information (if present). The measures are filled with drum beats so that pitches in the MIDI tracks can be displayed above them. When you have finished the import you can delete this staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/PaxHeaders.19168/PreviousMidiTrack.0000644000000000000000000000013213135434036027622 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.859981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/PreviousMidiTrack.xml0000644000175000017500000000073213135434036032216 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PreviousMidiTrack NewStructuredStaff <_label>Load Previous MIDI Track <_tooltip>Creates a staff for the imported MIDI track previous to the current one, making that the current one. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/PaxHeaders.19168/NextMidiTrack.xml0000644000000000000000000000013213135434036027445 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.859981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MIDI/NextMidiTrack.xml0000644000175000017500000000070713135434036031322 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NextMidiTrack PreviousMidiTrack <_label>Load Next Midi Track <_tooltip>Creates a staff for the next MIDI track after the current one, making that the current one. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/NewStaffBefore.xml0000644000000000000000000000013213135434036027055 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.859981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/NewStaffBefore.xml0000644000175000017500000000061213135434036030725 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NewStaffBefore <_label>New Staff Before Current <_tooltip>Creates a new staff with the given name, before the current staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/NewStructuredStaff.xml0000644000000000000000000000013213135434036030017 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.859981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/NewStructuredStaff.xml0000644000175000017500000000071013135434036031666 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NewStructuredStaff NewStaffBefore <_label>New Structured Staff <_tooltip>Creates a new staff below the current staff with the same time signature changes inserted. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/PianoStaff.scm0000644000000000000000000000013213135434036026231 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.859981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PianoStaff.scm0000644000175000017500000000125513135434036030105 0ustar00jjbenhamjjbenham00000000000000;;;PianoStaff (let ((name #f) (del (and (None?) (equal? (d-StaffProperties "query=denemo_name") "Unnamed")))) (d-TakeSnapshot) (d-IncreaseGuard) (if del (set! del (RadioBoxMenu (cons (_ "Replace Current Staff?") 'replace) (cons (_ "Keep Current Staff") #f)))) (d-AddAfter) (d-StaffProperties (_ "Piano")) (d-PianoStaffStart) (d-PianoStaffName) (d-AddAfter) (d-InitialClef "Bass") (d-StaffProperties (_ "Piano")) (d-BraceEnd) (if del (begin (d-MoveToStaffUp) (d-MoveToStaffUp) (d-DeleteStaff))) (d-DecreaseGuard)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/MarksStaff.scm0000644000000000000000000000013213135434036026240 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.869981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/MarksStaff.scm0000644000175000017500000000303113135434036030106 0ustar00jjbenhamjjbenham00000000000000;;MarksStaff (let ((tag "MarksStaff")) (if (not (d-Directive-staff? tag)) (begin (d-SetSaved #f) (d-PushPosition) (d-NewStructuredStaff) (d-StaffProperties (string-append "denemo_name=" "")) (d-DirectivePut-clef-graphic tag "\nM\nDenemo\n48") (d-DirectivePut-clef-gy tag 36) (d-DirectivePut-clef-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND )) (d-DirectivePut-keysig-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND ) ) (d-DirectivePut-timesig-override tag DENEMO_OVERRIDE_LILYPOND ) (d-DirectivePut-staff-prefix tag " \\new Dynamics <<\n" ) (d-DirectivePut-staff-graphic tag "Marks Staff" ) (d-DirectivePut-staff-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND )) (d-DirectivePut-voice-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND )) (d-MuteStaff #t) (d-PopPosition) (d-MoveToStaffDown) (d-SwapStaffs))) (d-InfoDialog (_ "This staff is purely for holding marks that should appear once at the top of the system - avoiding having to put the marks in each part. It must have a blank part name, so that it is typeset with every part. The marks should be spaced using either dummy notes or spacers.\nWARNING: Do not place clef changes or other non-duration items in this staff - it may trigger the creation of a separate staff on typesetting!"))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/CouleStaff.scm0000644000000000000000000000013213135434036026232 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.869981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/CouleStaff.scm0000644000175000017500000000135313135434036030105 0ustar00jjbenhamjjbenham00000000000000;;;;CouleStaff (let ((tag "CouleStaff")) (if (d-Directive-standalone? tag) (d-InfoDialog (_ "This staff creates notes drawn as a diagonal line. Use these to create a coule between two notes another part.")) (begin (d-SetSaved #f) (d-AddAfter) (d-SetCurrentStaffAsVoice) (d-StaffProperties "denemo_name=Coulés") (d-DirectivePut-standalone-postfix tag " \\override NoteHead.stencil = #(ly:make-stencil (list 'draw-line 0.15 -0.5 -0.4 2 0.4) '(-0.1 . 0.1) '(0.1 . 1)) \\override Stem.stencil = ##f \\override Flag.stencil = ##f") (d-DirectivePut-standalone-minpixels 50) (d-DirectivePut-standalone-display tag "coulé"))))denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/AddMirrorStaff.xml0000644000000000000000000000013213135434036027064 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.869981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/AddMirrorStaff.xml0000644000175000017500000000127513135434036030742 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddMirrorStaff NewStructuredStaff <_label>Add Staff (Borrowed/Mirrored Music) <_tooltip>Adds a staff whose music is automatically mirrored from another staff of your choice. Use this e.g. to create a staff with two divisi parts, while keeping the second part as a separate staff, or to typeset both Fret Diagrams and Chord Symbols from the same music. Note that initial clef/key/time are copied not mirrored. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/NewStaffAllMovements.sc0000644000000000000000000000013213135434036030066 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.879981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/NewStaffAllMovements.scm0000644000175000017500000000037213135434036032116 0ustar00jjbenhamjjbenham00000000000000;;NewStaffAllMovements (let ((staff (d-GetStaff))) (d-PushPosition) (d-MoveToBeginning) (d-NewStructuredStaff) (while (d-NextMovement) (if (d-GoToPosition #f staff #f #f) (d-NewStructuredStaff))) (d-PopPosition)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/CouleStaff.xml0000644000000000000000000000013213135434036026250 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.879981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/CouleStaff.xml0000644000175000017500000000102413135434036030116 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CouleStaff NewStructuredStaff <_label>Add Staff for Coulés <_tooltip>Adds a voice to the current staff which typesets notes as a slanting line - a coulé. The main voice provides the chord notes, and this provides the coulé between them. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/NewStaffAllMovements.xm0000644000000000000000000000013213135434036030105 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.879981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/NewStaffAllMovements.xml0000644000175000017500000000070013135434036032127 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NewStaffAllMovements MarksStaff <_label>Add in All Movements <_tooltip>Adds a new structured staff after the current staff in this and succeeding movments. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/DynamicsStaff.xml0000644000000000000000000000013213135434036026750 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.879981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/DynamicsStaff.xml0000644000175000017500000000160413135434036030622 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PianoStaff DynamicsVoice <_label>Add Staff for Dynamics <_tooltip>This line ("staff") is for holding cresc. dim hairpins and dynamic markings so that they can be positioned (using dummy notes, colored blue) and will align with each other.\nCreate this between the staffs for a piano work or on any staff where alignment of hairpins and dynamic marks is needed. WARNING: Do not place clef changes or other non-duration items in this staff - it may trigger the creation of a separate staff on typesetting! This Dynamics "staff" must have the same part name as the staff the dynamics should appear on. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/AddInstrumentStaff.xml0000644000000000000000000000013213135434036027762 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.879981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/AddInstrumentStaff.xml0000644000175000017500000000105113135434036031630 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddInstrumentStaff PianoStaff <_label>Add Staff for Instrument <_tooltip>Adds a staff at the bottom for the instrument selected from the templates/instruments directory. The name and range of the instrument is set with any transposition for playback if needed. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/NewStaffAfter.xml0000644000000000000000000000013213135434036026714 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.889981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/NewStaffAfter.xml0000644000175000017500000000074413135434036030572 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NewStaffAfter <_label>New Staff After Current <_tooltip>Creates a new staff with the given name, after the current staff. Use the staff to voice command if you want to make this staff a voice on the previous staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/PianoStaff.xml0000644000000000000000000000013213135434036026247 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.889981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PianoStaff.xml0000644000175000017500000000063013135434036030117 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NewStaffBefore PianoStaff <_label>Add Piano Staff <_tooltip>Adds two staff braced together for keyboard instrument. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/CreateClickStaff.xml0000644000000000000000000000013213135434036027352 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.889981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/CreateClickStaff.xml0000644000175000017500000000127313135434036031226 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CreateClickStaff DynamicsStaff <_label>Create/Populate Click Staff <_tooltip>Creates a staff at the top as a click track. Suggests a pattern of drum beats for the first bar, and offers to copy these to the following bars. The cursor height determines which drum sounds are suggested from the General MIDI set. Invoked in a click track it will copy your own set of drum beats to subsequent (empty) measures. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/AddInstrumentStaff.scm0000644000000000000000000000013213135434036027744 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.889981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/AddInstrumentStaff.scm0000644000175000017500000000115113135434036031613 0ustar00jjbenhamjjbenham00000000000000;;AddInstrumentStaff (let ( (num-staffs (d-GetStaffsInMovement)) (key (d-InitialKey "query=keysigname")) (time (d-InitialTimeSig "query=timesigname")) (staff (d-GetStaff))) (d-AddStaffs DENEMO_INSTRUMENTS_DIR) (while (d-MoveToStaffDown)) (if (> (d-GetStaff) num-staffs) (begin (while (and (> (d-GetStaff) num-staffs) (d-InitialKey key) (d-InitialTimeSig time) (d-MoveToStaffUp))) (while (d-MoveToStaffDown))) (d-WarningDialog (_ "Cancelled")))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/NewStructuredStaff.scm0000644000000000000000000000013213135434036030001 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.909981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/NewStructuredStaff.scm0000644000175000017500000000233113135434036031651 0ustar00jjbenhamjjbenham00000000000000;;;; NewStructuredStaff (let ((params NewStructuredStaff::params)) (define (copy-this) (d-PushPosition) (d-UnsetMark) (d-SetMark) (d-Copy) (if (not params) (d-MoveToStaffDown) (d-MoveToStaffUp)) (d-Paste) (d-PopPosition)) (d-MoveToBeginning) (case params ((initial) (d-AddInitial)) ((before) (d-AddBefore)) (else (d-AddAfter))) (if (eq? params 'voice) (begin (set! params #f) (d-SetCurrentStaffAsVoice))) (if (not params) (d-MoveToStaffUp) (d-MoveToStaffDown)) (if (or (Timesignature?) (d-Directive-standalone? "Upbeat") (d-Directive-standalone? "Blank") (d-Directive-standalone? "ShortMeasure")) (copy-this)) (while (d-MoveCursorRight) (if (or (Timesignature?) (d-Directive-standalone? "Upbeat") (d-Directive-standalone? "Blank") (d-Directive-standalone? "ShortMeasure")) (copy-this))) (if (not params) (d-MoveToStaffDown) (d-MoveToStaffUp)) (d-SetSaved #f) (d-MoveToBeginning)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/PaxHeaders.19168/NewStaffAfter.scm0000644000000000000000000000013213135434036026676 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.909981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/InsertStaff/NewStaffAfter.scm0000644000175000017500000000036113135434036030547 0ustar00jjbenhamjjbenham00000000000000;;;NewStaffAfter (let ((name #f)) (d-NewStructuredStaff) (d-InstrumentName 'once) (set! name (d-DirectiveGet-staff-display "InstrumentName")) (if name (d-StaffProperties (string-append "denemo_name=" name)))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/DeleteMeasuresBeforeCursor.scm0000644000000000000000000000013213135434036027177 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.909981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DeleteMeasuresBeforeCursor.scm0000644000175000017500000000140313135434036031046 0ustar00jjbenhamjjbenham00000000000000;;;DeleteMeasuresBeforeCursor (let ((choice DeleteMeasuresBeforeCursor::params)) (if (not choice) (set! choice (RadioBoxMenu (cons (_ "Cancel") #f) (cons (_ "All Staffs - Delete all measures from cursor?") 'all) (cons (_ "This Staff/Voice only?") 'this)))) (case choice ((all) (d-SetSaved #f) (d-EvenOutStaffLengths) (while (d-MoveToMeasureLeft) (d-DeleteMeasureAllStaffs))) ((this) (d-SetSaved #f) (while (d-MoveToMeasureLeft) (d-DeleteMeasure))) (else (d-InfoDialog (_ "Cancelled"))))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/CheckTiesInStaff.xml0000644000000000000000000000013213135434036025102 xustar0030 mtime=1500919838.029981805 30 atime=1500919928.909981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CheckTiesInStaff.xml0000644000175000017500000000063413135434036026756 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FixSlursInStaff CheckTiesInStaff <_label>Check Ties <_tooltip>Checks for wrongly tied notes in the current voice/staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/DeleteCurrentStaff.xml0000644000000000000000000000013213135434036025516 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.919981806 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DeleteCurrentStaff.xml0000644000175000017500000000066013135434036027371 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteCurrentStaff DeleteStaff <_label>Delete Current Staff/Voice <_tooltip>Deletes current staff (if the action is confirmed by the user). denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/PrintEffects0000644000000000000000000000013213135434150023557 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PrintEffects/0000755000175000017500000000000013135434150025505 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PrintEffects/PaxHeaders.19168/TransposeStaffOutput.s0000644000000000000000000000013213135434036030206 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.919981806 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PrintEffects/TransposeStaffOutput.scm0000644000175000017500000000063513135434036032403 0ustar00jjbenhamjjbenham00000000000000;; transpose output (define start (d-GetNote)) (d-MoveCursorRight) (define end (d-GetNote)) (if (or (string=? start "") (string=? end "")) (d-GetUserInput (_ "No Transposition Interval") (_ "To use this function you need to place the cursor\non the first of two notes which define\nthe transposition required") (_ "Ok")) (d-StaffProperties (string-append "staff-prolog-insert \\transpose " start " " end))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PrintEffects/PaxHeaders.19168/ClearStaffProlog.xml0000644000000000000000000000013213135434036027556 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.919981806 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PrintEffects/ClearStaffProlog.xml0000644000175000017500000000060313135434036031426 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ClearStaffProlog <_label>Normal Staff <_tooltip>Deletes the extra staff prolog - restoring the normal staff settings. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PrintEffects/PaxHeaders.19168/ClearStaffProlog.scm0000644000000000000000000000013213135434036027540 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.919981806 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PrintEffects/ClearStaffProlog.scm0000644000175000017500000000012413135434036031406 0ustar00jjbenhamjjbenham00000000000000;;clears any extras in the staff-prolog (d-StaffProperties "staff-prolog-insert=\n")denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PrintEffects/PaxHeaders.19168/TransposeStaffOutput.x0000644000000000000000000000013213135434036030213 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.929981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PrintEffects/TransposeStaffOutput.xml0000644000175000017500000000075513135434036032424 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TransposeStaffOutput /ObjectMenu/StaffMenu <_label>Transpose Output <_tooltip>Transpose this staff in the print out. The cursor must be on the first of two notes that define the interval to use. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/StaffPropertiesMenu0000644000000000000000000000013213135434150025130 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/0000755000175000017500000000000013135434150027056 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/InstrumentName.0000644000000000000000000000013213135434036030162 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.929981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/InstrumentName.xml0000644000175000017500000000063013135434036032553 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SmallerStaff InstrumentName <_label>Instrument Name <_tooltip>Print Instrument name before staff at start of score, denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/SubstituteMusic0000644000000000000000000000013213135434036030307 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.929981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/SubstituteMusic.xml0000644000175000017500000000131013135434036032752 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SubstituteMusic NonPrintingStaff <_label>Substitute Music (Borrowed/Mirrored) <_tooltip>Typesets this staff with the music from another staff, ignoring any music entered on this staff. Use this e.g. to create a staff with two divisi parts, while keeping the second part as a separate staff, or to typeset both Fret Diagrams and Chord Symbols from the same music. Note that initial clef/key/time are copied not mirrored. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/ChordStaff.scm0000644000000000000000000000013213135434036027737 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.929981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/ChordStaff.scm0000644000175000017500000000220013135434036031602 0ustar00jjbenhamjjbenham00000000000000;;;;;ChordStaff (let ((tag "ChordStaff")) (if (and ChordStaff::params (d-Directive-voice? tag)) (begin (d-InfoDialog "Use the Staffs/Voices Chord Names command to turn off the typestting of chord names for this staff")) (begin (if (d-Directive-staff? tag) (d-DirectiveDelete-staff tag) (begin (ToggleDirective "staff" "prefix" tag ""(logior DENEMO_OVERRIDE_LILYPOND DENEMO_OVERRIDE_AFFIX)) (ToggleDirective "staff" "postfix" tag ""(logior DENEMO_OVERRIDE_LILYPOND DENEMO_OVERRIDE_AFFIX)))) (d-DirectiveDelete-staff "InstrumentName") (ToggleDirective "voice" "prefix" tag "\\new ChordNames \n" DENEMO_OVERRIDE_LILYPOND DENEMO_OVERRIDE_GRAPHIC) (ToggleDirective "clef" "postfix" tag "\n" DENEMO_OVERRIDE_LILYPOND) (if (d-Directive-clef? tag) (d-DirectivePut-clef-display tag "")) (ToggleDirective "keysig" "postfix" tag "\n" DENEMO_OVERRIDE_LILYPOND DENEMO_OVERRIDE_AFFIX) (if (d-Directive-keysig? tag) (d-DirectivePut-keysig-display tag "")) (ToggleDirective "timesig" "postfix" tag "\n" DENEMO_OVERRIDE_LILYPOND)))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/SetStaffLines.x0000644000000000000000000000013213135434036030113 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.936648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/SetStaffLines.xml0000644000175000017500000000061613135434036032320 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetStaffLines StaffSize <_label>Set Staff Lines <_tooltip>Sets the number of lines for the current staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/StaffOctaveUp.x0000644000000000000000000000013213135434036030113 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.936648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/StaffOctaveUp.xml0000644000175000017500000000063113135434036032315 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SmallerStaff StaffOctaveUp <_label>(Print) Octave Up <_tooltip>Prints out the music of this staff one octave higher. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/StaffSize.scm0000644000000000000000000000013213135434036027612 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.936648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/StaffSize.scm0000644000175000017500000000145513135434036031470 0ustar00jjbenhamjjbenham00000000000000;;;StaffSize (let ((tag "StaffSize") (size #f)) (set! size (exact->inexact (/ (d-DirectiveGet-staff-minpixels tag) 10))) (set! size (d-GetUserInput (_ "Setting Staff Size") (_ "Give Staff Size (for printing), 0 for default") (if size (number->string size) "0"))) (if (and size (string->number size)) (begin (if (d-Directive-staff? tag) (d-DirectiveDelete-staff tag)) (ToggleDirective "staff" "prefix" tag (string-append " fontSize = #" size " \\override VerticalAxisGroup #'minimum-Y-extent = #'(0 . 0) \\override StaffSymbol #'staff-space = #(magstep " size ")\n ") (logior DENEMO_OVERRIDE_AFFIX DENEMO_ALT_OVERRIDE)) (set! size (inexact->exact (* (string->number size) 10))) (d-DirectivePut-staff-minpixels tag size)))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/SetStaffLines.s0000644000000000000000000000013213135434036030106 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.936648472 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/SetStaffLines.scm0000644000175000017500000000101313135434036032272 0ustar00jjbenhamjjbenham00000000000000;;;SetStaffLines (let ((tag "SetStaffLines") (lines #f) (params SetStaffLines::params)) (set! lines (d-GetUserInput (_ "Staff Lines") (_ "Give Number of Staff Lines for current staff") "5")) (if (and (string? lines) (string->number lines)) (begin (d-SetSaved #f) (d-SetLinesInStaff (string->number lines)) (d-DirectivePut-voice-postfix "StaffLines" (string-append " \\override Staff.StaffSymbol #'line-count = #" lines " "))) (d-WarningDialog (_ "Cancelled"))))denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/ShortInstrument0000644000000000000000000000013213135434036030323 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.959981806 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/ShortInstrumentName.xml0000644000175000017500000000071413135434036033576 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InstrumentName ShortInstrumentName <_label>Short Instrument Name <_tooltip>Prints shortened form of instrument name before this staff for second and subsequent systems denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/Ambitus.scm0000644000000000000000000000013213135434036027320 xustar0030 mtime=1500919838.033315139 30 atime=1500919928.959981806 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/Ambitus.scm0000644000175000017500000000013113135434036031164 0ustar00jjbenhamjjbenham00000000000000(ToggleDirective "staff" "prefix" "Ambitus" "\\with { \\consists \"Ambitus_engraver\" }")denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/StaffOctaveUp.s0000644000000000000000000000013213135434036030106 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.959981806 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/StaffOctaveUp.scm0000644000175000017500000000024413135434036032277 0ustar00jjbenhamjjbenham00000000000000 ;;;StaffOctaveUp (d-DirectivePut-staff-prefix "StaffOctaveUp" "\\transpose c c'") (d-DirectivePut-staff-graphic "StaffOctaveUp" "StaffOctaveUp") (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/ChordStaff.xml0000644000000000000000000000013213135434036027755 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.959981806 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/ChordStaff.xml0000644000175000017500000000063513135434036031632 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TabStaff ChordStaff <_label>Chord Symbols (Off/On) <_tooltip>Typesets the music on this staff as chord symbols (off/on). denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/Ambitus.xml0000644000000000000000000000013213135434036027336 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.959981806 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/Ambitus.xml0000644000175000017500000000056313135434036031213 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Ambitus <_label>(Print) Ambitus On/Off <_tooltip>Toggle the ambitus engraver for this staff on or off denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/PianoStaffName.0000644000000000000000000000013213135434036030044 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.969981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PianoStaffName.scm0000644000175000017500000000115313135434036032420 0ustar00jjbenhamjjbenham00000000000000;;;PianoStaffName (let ((tag "PianoStaffStart") (name "Piano")) (if (d-DirectiveGet-staff-prefix tag) (begin (set! name (d-GetUserInput (_ "Instrument Name") (_ "Give name of instrument for staff group starting here:") name)) (if name (set! name (string-append "\\set PianoStaff.instrumentName = #\"" name "\" ")) (set! name "")) (AttachDirective "staff" "prefix" "PianoStaffStart" (string-append " \\new PianoStaff << " name " \n") DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_AFFIX)) (begin (d-WarningDialog "This command must be issued on the first staff of a piano staff group")))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/NonPrintingStaf0000644000000000000000000000013213135434036030216 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.969981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/NonPrintingStaff.scm0000644000175000017500000000155213135434036033021 0ustar00jjbenhamjjbenham00000000000000;;;NonPrintingStaff (let ((tag "NonPrintingStaff")(params NonPrintingStaff::params))(disp "params " params " so eq set? " (eq? params 'set) (eq? params 'unset) "\n") (if (eq? params 'unset) (begin (disp "deleting for " params "\n") (d-DirectiveDelete-staff tag)) (begin (if (eq? params 'set) (d-DirectiveDelete-staff tag)) (if (d-DirectiveGetForTag-staff tag) (begin (if (not params) (d-InfoDialog (_ "Staff will be printed"))) (d-DirectiveDelete-staff tag)) (begin (d-DirectivePut-staff-prefix tag " \\void { ") (d-DirectivePut-staff-postfix tag " }\n ") (d-DirectivePut-staff-override tag (logior DENEMO_ALT_OVERRIDE DENEMO_OVERRIDE_GRAPHIC)) (d-DirectivePut-staff-display tag "Hidden Staff") (if (not params) (SetDirectiveConditional #f (cons "staff" tag))))) (d-SetSaved #f))))denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/PianoStaffName.0000644000000000000000000000013213135434036030044 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.969981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PianoStaffName.xml0000644000175000017500000000101413135434036032432 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteStaffGroupings PianoStaffName <_label>Piano Staff Name <_tooltip>Prints the name given at the start of the Piano staff which must be where the cursor is. Remove instrument names on the individual staffs by setting them blank. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/ChordChartStaff0000644000000000000000000000013213135434036030140 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.969981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/ChordChartStaff.scm0000644000175000017500000002034313135434036032574 0ustar00jjbenhamjjbenham00000000000000;;;;;ChordChartStaff (let ((tag "ChordChartStaff") (params ChordChartStaff::params)(choice #f)) (define (create-chart compact) (if (and ChordStaff::params (d-Directive-voice? tag)) (begin (d-InfoDialog "Use the Staffs/Voices Chord Chart command to turn off the typesetting of chord names for this staff")) (let () (if (d-Directive-staff? tag) (begin (d-DirectiveDelete-timesig tag) (d-DirectiveDelete-keysig tag) (d-DirectiveDelete-clef tag) (d-DirectiveDelete-staff tag) (d-DirectiveDelete-voice tag)) (begin (while (d-DirectiveGetForTag-staff) (d-DirectiveDelete-staff (d-DirectiveGetForTag-staff))) (while (d-DirectiveGetForTag-voice) (d-DirectiveDelete-voice (d-DirectiveGetForTag-voice))) (ToggleDirective "staff" "prefix" tag ""(logior DENEMO_OVERRIDE_LILYPOND DENEMO_OVERRIDE_AFFIX)) (ToggleDirective "staff" "postfix" tag ""(logior DENEMO_OVERRIDE_LILYPOND DENEMO_OVERRIDE_AFFIX)))) (ToggleDirective "voice" "prefix" (cons tag (_ "Chord Chart")) (string-append "\\new ChordNames \\with {" (if compact "chordNameExceptions = #(sequential-music-to-chord-exceptions CompactChordSymbols #t)\n" "") " \\consists \"Bar_engraver\" \\consists \"Script_engraver\" \\consists \"Text_engraver\"" (if compact "" "\\consists \"Time_signature_engraver\"\n") " \\consists \"Multi_measure_rest_engraver\" " (if compact " \\override ChordName.Y-extent = ##f \\override ChordName.extra-spacing-width=#'(+inf.0 . -inf.0) \\override ChordName.extra-offset = #'(0 . -2.5) \\override BarLine.bar-extent = #'(-3.5 . 4.2) \\override BarLine #'hair-thickness = #1.2 " " \\override ChordName.extra-offset = #'(0 . -2.5) \\override BarLine.bar-extent = #'(-3.5 . 3.5) \\override BarLine #'hair-thickness = #1.2 " )" } ") DENEMO_OVERRIDE_LILYPOND DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-score-display "CustomBarline" (_ "Custom Barlines")) (d-DirectivePut-score-override tag (logior DENEMO_OVERRIDE_AFFIX)) (d-DirectivePut-score-prefix tag "\n\\defineBarLine \"|\" #'(\"|\" \"|\" \"|\")\n") (d-CustomBarline (format #f "'~s" (list (_ "Single") "|" "|" "|" ""))) (d-CustomBarline (format #f "'~s" (list (_ "Double") "||" "||" "||" ""))) (d-CustomBarline (format #f "'~s" (list (_ "RepeatStart") "[|:" "[|:" "||" ""))) (d-CustomBarline (format #f "'~s" (list (_ "RepeatEnd") "|" ":|]" ":|]" ""))) (d-CustomBarline (format #f "'~s" (list (_ "RepeatEndFirstTime") "" ":|]" ":|]" ""))) (d-Set0) (d-ScoreIndent 0) (if compact (begin (d-MeasuresPerLine) (d-SetPageSize "(cons \"5\" \"8.1\")") (d-SetFontSize "7.2"))) (let ((stag "CompactChordChartSettings")) (d-DirectivePut-paper-postfix stag " system-system-spacing = #'((basic-distance . 2) (minimum-distance . 2) (padding . 2))\n") (set! stag "LeftMargin") (d-DirectivePut-paper-data stag 0.07) (d-DirectivePut-paper-postfix stag "left-margin=0.07\\cm\n") (set! stag "RightMargin") (d-DirectivePut-paper-data stag 0.07) (d-DirectivePut-paper-postfix stag "right-margin=0.07\\cm\n") ) (d-DirectivePut-score-override "ChordNamer" (logior DENEMO_OVERRIDE_AFFIX)) (d-DirectivePut-layout-postfix "ChordNamer" (string-append " \\context { \\Score\n" (if compact "chordCompactScale = #'(2.5 . 3.0)\n" "") "\\remove \"Bar_number_engraver\" } ")) (d-DirectivePut-layout-postfix tag "\\set noChordSymbol = \\markup \\fontsize #6 \\bold \"/\"") (if (d-Directive-staff? tag) (begin (d-ProportionalNotation 4) (let ((btag "TextScript")) (d-Directive-standalone btag) (d-DirectivePut-standalone-postfix btag "\\BarSingle") (d-DirectivePut-standalone-display btag "BarSingle") (d-DirectivePut-standalone-minpixels btag 30) (d-AppendMeasure) (d-AppendMeasure) (d-AppendMeasure) (d-AppendMeasure) (d-MoveToEnd) ;(d-LineBreak #t) (d-MoveToBeginning) (if compact (begin (d-InitialTimeSig) (d-ChordChartTimeSignature))) (d-MoveCursorRight) (d-MoveCursorRight)) (if compact (d-DirectivePut-score-display "CompactChordChart" (_ "Compact Chord Chart Marker"))) ;;;(d-BarNumberingInterval 10000) ;; no bar numbers (ToggleDirective "clef" "postfix" (cons tag "") "\n" DENEMO_OVERRIDE_LILYPOND) (ToggleDirective "keysig" "postfix" (cons tag "") "\n" DENEMO_OVERRIDE_LILYPOND DENEMO_OVERRIDE_AFFIX) (ToggleDirective "timesig" "postfix" (cons tag "") "\n" DENEMO_OVERRIDE_LILYPOND DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-timesig-display tag (d-GetPrevailingTimesig))))))) (if params (set! choice params) (set! choice (RadioBoxMenu (cons (_ "Compact Chord Chart") 'compact) (cons (_ "Paper Chord Chart") 'new) (cons (_ "Convert Staff") 'convert) (cons (_ "Customizable Chord Chart") 'custom) (cons (_ "Cancel") 'cancel)))) (case choice ((cancel) (d-InfoDialog (_ "Cancelled"))) ((convert) (create-chart #f)) ((compact) (if (d-New) (begin (create-chart #t) (d-LilyPondInclude "compact-chord-symbols.ily")))) ((custom) (if (d-New) (d-OpenTemplate "filename=ChordChart.denemo"))) ((new) (if (d-New) (create-chart #f) (d-InfoDialog (_ "Cancelled")))))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/SubstituteMusic0000644000000000000000000000013213135434036030307 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.979981806 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/SubstituteMusic.scm0000644000175000017500000001012213135434036032735 0ustar00jjbenhamjjbenham00000000000000;;;SubstituteMusic (let ((params SubstituteMusic::params)(tag "SubstituteMusic")) (if (and (not params)(d-Directive-voice? tag)) (begin (d-MoveToBeginning) (d-DirectiveDelete-standalone tag) (d-SetColorOfStaff 0) (d-DirectiveDelete-clef tag) (d-DirectiveDelete-keysig tag) (d-DirectiveDelete-timesig tag) (d-DirectiveDelete-voice tag)) (let ((cuename #f)) (define (get-voicenames) (define voicenames '()) (define this-movement (number->string (d-GetMovement))) (define this-staff (d-GetStaff)) (define (unique-staff-name) (string-append (d-StaffProperties "query=denemo_name") (_ " on Staff ") (number->string (d-GetStaff)))) (d-PushPosition) (while (d-MoveToStaffUp)) (let loop ((count 0)) (set! voicenames (cons (cons (unique-staff-name) (cons (unique-staff-name) (cons (if (d-Directive-staff? "DynamicsStaff") "(d-DynamicsStaff 'noninteractive)" #f) (string-append "{" (d-GetPrevailingClefAsLilyPond)(d-GetPrevailingTimesigAsLilyPond)(d-GetPrevailingKeysigAsLilyPond) "\\" (d-GetVoiceIdentifier) " } \\void ")))) voicenames)) (if (d-MoveToStaffDown) (loop (1+ count)))) (d-PopPosition) (reverse voicenames)) ;;;transform to mirrored music (set! cuename (get-voicenames)) (if (null? cuename) (begin (d-WarningDialog (_ "There are no other staffs for this one to mirror."))) (begin (set! cuename (RadioBoxMenuList cuename)) (if cuename (let ((dynamics-staff (cadr cuename))) (if dynamics-staff (eval-string dynamics-staff)) (d-DirectivePut-voice-prefix tag (cddr cuename)) (d-DirectivePut-voice-override tag (logior DENEMO_ALT_OVERRIDE DENEMO_OVERRIDE_GRAPHIC)) (d-DirectivePut-voice-display tag (car cuename)) (d-SetColorOfStaff #xF0202000) (d-DirectivePut-clef-graphic tag "\nS\nDenemo\n48") (d-DirectivePut-clef-gy tag 36) (d-DirectivePut-clef-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND )) (d-DirectivePut-keysig-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND)) (d-DirectivePut-timesig-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND)) (d-MoveToBeginning) (d-Directive-standalone tag) (if (not dynamics-staff) (begin (d-DirectivePut-standalone-display tag (_ "Right click to update clef/time/key")) ;;to update clef etc (d-DirectivePut-standalone-override tag DENEMO_OVERRIDE_DYNAMIC))) (d-DirectivePut-standalone-minpixels tag 50) (d-DirectivePut-standalone-graphic tag (string-append "\n" (_ "Music here is mirrored from ") (d-DirectiveGet-voice-display tag) "\nDenemo\n20")) ;;;(d-ToggleCurrentStaffDisplay) dynamics staffs don't display well when hidden (d-SetSaved #f)))))))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/ShortInstrument0000644000000000000000000000013213135434036030323 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.989981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/ShortInstrumentName.scm0000644000175000017500000000250613135434036033561 0ustar00jjbenhamjjbenham00000000000000;ShortInstrumentName (let ((current "") (thematch "")) (if (d-Directive-staff? "DynamicsStaff") (begin (d-WarningDialog (_ "Instrument Name should not be set on a Dynamics Line")) (d-DirectiveDelete-staff tag)) (begin (set! current (d-DirectiveGet-staff-postfix "ShortInstrumentName" )) (if (boolean? current) (set! current "Vln") (begin (set! thematch (string-match "\\\\set Staff.shortInstrumentName = \"([^\"]*)\"" current)) (if (regexp-match? thematch) (set! current (match:substring thematch 1)) (set! current "Vln")))) (set! current (d-GetUserInput (_ "Short Instrument Name") (_ "Give Short Instrument Name:") current)) (if current (let ((indent "0")( size (/ (string->number (d-ScoreProperties "query=fontsize")) 10.0))) (d-DirectivePut-staff-display "ShortInstrumentName" current) (d-DirectivePut-staff-override "ShortInstrumentName" (logior DENEMO_ALT_OVERRIDE DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_GRAPHIC)) (d-DirectivePut-staff-prefix "ShortInstrumentName" (string-append " shortInstrumentName = \"" current "\"")) (set! indent (max (string->number indent) (* size (string-length current)))) (d-ScoreShortIndent indent) (d-SetSaved #f)))))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/TransposeStaffP0000644000000000000000000000013213135434036030215 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.989981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/TransposeStaffPrint.scm0000644000175000017500000000147613135434036033554 0ustar00jjbenhamjjbenham00000000000000;;;;; TransposeStaffPrint (define-once Transpose::Interval "c ees") (let ((tag "TransposeStaffPrint")(lily #f) (text #f)(params TransposeStaffPrint::params)) (if (and params (not (equal? params "edit"))) (set! Transpose::Interval params) (set! Transpose::Interval (d-GetNoteNamesFromUser 2 Transpose::Interval (_ "--> Transpose to -->") ))) (if Transpose::Interval (begin (set! lily (string-append "\\transpose " Transpose::Interval " ")) (set! text (string-append (_ "Print transposed: ") Transpose::Interval " ")) (d-DirectivePut-staff-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-staff-display tag text) (d-DirectivePut-staff-postfix tag lily) (d-SetSaved #f)) (d-WarningDialog (_ "Cancelled")))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/MidiInstrumentN0000644000000000000000000000013213135434036030224 xustar0030 mtime=1500919838.036648472 30 atime=1500919928.989981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/MidiInstrumentName.xml0000644000175000017500000000066213135434036033363 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MidiInstrumentName ShortInstrumentName <_label>MIDI Instrument <_tooltip>Sets the MIDI instrument for this staff for use in the Playback View denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/TinyStaff.xml0000644000000000000000000000013213135434036027641 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.009981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/TinyStaff.xml0000644000175000017500000000057513135434036031521 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SmallerStaff TinyStaff <_label>Tiny Staff <_tooltip>Prints current staff in a tiny font. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/MidiInstrumentN0000644000000000000000000000013213135434036030224 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.009981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/MidiInstrumentName.scm0000644000175000017500000000134013135434036033337 0ustar00jjbenhamjjbenham00000000000000;;;MidiInstrumentName (let ((params MidiInstrumentName::params) (tag "MidiInstrumentName") (current "")) (if (equal? params "edit") (set! params #f)) (if (string? params) (begin (set! current params) (set! params #f)) (begin (set! current "violin") (set! current (d-GetUserInput (_ "MIDI Instrument Name") (_ "Give name of MIDI instrument for current staff:") current)))) (if (string? current) (begin (d-DirectivePut-staff-display tag current) (d-DirectivePut-staff-override tag (logior DENEMO_ALT_OVERRIDE DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_GRAPHIC)) (d-DirectivePut-staff-prefix tag (string-append " midiInstrument = #\"" current "\" "))))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/ChordChartStaff0000644000000000000000000000013213135434036030140 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.009981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/ChordChartStaff.xml0000644000175000017500000000072313135434036032612 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChordChartStaff ChordStaff <_label>Chord Chart Staff <_tooltip>Prints Chord symbols separated by bar lines. Repeats, time signatures and text are also printed for this staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/Tablature0000644000000000000000000000013213135434150027053 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/Tablature/0000755000175000017500000000000013135434150031001 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/Tablature/PaxHeaders.19168/TabSt0000644000000000000000000000013213135434036030073 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.009981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/Tablature/TabStaff.scm0000644000175000017500000000052313135434036033202 0ustar00jjbenhamjjbenham00000000000000;;;TabStaff (let ((tag "TabStaff")) (ToggleDirective "staff" "postfix" tag " \\new TabStaff <<\n" DENEMO_OVERRIDE_LILYPOND) (ToggleDirective "voice" "postfix" tag "\n" (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND)) (ToggleDirective "clef" "postfix" tag "{} \n" (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/Tablature/PaxHeaders.19168/TabSt0000644000000000000000000000013213135434036030073 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.019981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/Tablature/TabStaff.xml0000644000175000017500000000057713135434036033231 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TinyStaff TabStaff <_label>Tablature <_tooltip>Converts to tablature notation (print only) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/Tablature/PaxHeaders.19168/SetTa0000644000000000000000000000013213135434036030076 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.019981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/Tablature/SetTabStrings.xml0000644000175000017500000000064513135434036034267 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TabStaff SetTabStrings <_label>Set Open Strings <_tooltip>Sets the open strings for tablature to the notes of the current chord. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/Tablature/PaxHeaders.19168/SetTa0000644000000000000000000000013213135434036030076 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.019981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/Tablature/SetTabStrings.scm0000644000175000017500000000211313135434036034241 0ustar00jjbenhamjjbenham00000000000000;;;SetTablatureTunings (let ((tunings "")) (if (Chord?) (begin (d-DuplicateChord) ;;; to ensure chord has no duration in LilyPond (set! tunings (d-GetLilyPond)) (d-DeleteObject) (d-MoveCursorLeft) (StandAloneDirectiveProto (cons "SetTabStrings" (string-append "\\set Staff.stringTunings = \\stringTuning " tunings "\n")) #t "\nh" ) (d-MoveCursorLeft) (d-DirectivePut-standalone-display "SetTabStrings" tunings) (d-TabStaff)) (begin (if (d-Directive-standalone "SetTabStrings") (begin (set! tunings (d-GetUserInput "Re-Entrant Tunings" "Re-order the strings" (d-DirectiveGet-standalone-display "SetTabStrings"))) (if tunings (begin (StandAloneDirectiveProto (cons "SetTabStrings" (string-append "\\set Staff.stringTunings = \\stringTuning " tunings "\n")) #t "\nh" ) (d-MoveCursorLeft) (d-DirectivePut-standalone-display "SetTabStrings" tunings)))) (d-WarningDialog "To use this command create a chord\nwith one note for each open string on your instrument\nand position the cursor on it"))))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/NonPrintingStaf0000644000000000000000000000013213135434036030216 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.019981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/NonPrintingStaff.xml0000644000175000017500000000075513135434036033043 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NonPrintingStaff ShortInstrumentName <_label>Non Printing Staff <_tooltip>Turns the on/off whether this staff will be typeset. The staff still displays normally but will be dropped for the print view. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/SmallerStaff.sc0000644000000000000000000000013213135434036030122 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.029981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/SmallerStaff.scm0000644000175000017500000000034213135434036032147 0ustar00jjbenhamjjbenham00000000000000;;;SmallerStaff (ToggleDirective "staff" "prefix" "StaffSize" " fontSize = #-3\n \\override StaffSymbol #'staff-space = #(magstep -3)\n " (logior DENEMO_OVERRIDE_AFFIX DENEMO_ALT_OVERRIDE)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/TransposeStaffP0000644000000000000000000000013213135434036030215 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.029981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/TransposeStaffPrint.xml0000644000175000017500000000063613135434036033567 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TransposeStaffPrint <_label>(Print) Transpose <_tooltip>Prints this staff (only) transposed. This is in addition to any score-wide transposition denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/InstrumentName.0000644000000000000000000000013213135434036030162 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.029981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/InstrumentName.scm0000644000175000017500000000674713135434036032554 0ustar00jjbenhamjjbenham00000000000000;;;InstrumentName (let ((tag "InstrumentName") (current "") (thematch "") (indent "0.0") (size 16.0) (nextmovement #f) (staff (number->string (d-GetStaff)))) (if (equal? InstrumentName::params "edit") (set! InstrumentName::params #f)) (if (or (d-Directive-staff? "DynamicsStaff") (d-Directive-staff? "ChordStaff")) (begin (d-WarningDialog (_ "Instrument Name should not be set on a Dynamics Line or Chord Symbols")) (d-DirectiveDelete-staff tag)) (begin (if (string? InstrumentName::params) (begin (set! current InstrumentName::params) (set! InstrumentName::params #f)) (begin (if (d-NextMovement) (begin (set! nextmovement (d-GetMovement)) (d-PreviousMovement))) ;so nextmovement is 2 if there is more than one movement and the name setting is on a staff in the first movement. (set! current (d-DirectiveGet-staff-display tag )) (if (not current) (set! current "Violin")) (set! current (d-GetUserInput (_ "InstrumentName") (_ "Give name of instrument/voice/part\nfor current staff:") current)))) (if (string? current) (let ((transparent-start "") (transparent-end "")(movement (number->string (d-GetMovement)))) (d-DirectivePut-staff-display tag current) (d-DirectivePut-staff-override tag (logior DENEMO_ALT_OVERRIDE DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_GRAPHIC)) (if (equal? current (_ "Unnamed")) (begin (set! transparent-start "\\transparent {") (set! transparent-end "}"))) (d-DirectivePut-staff-prefix tag (string-append "instrumentName = \\markup { \\with-url #'\"scheme:(d-GoToPosition " movement " " staff " 1 1)(let ((choice (d-PopupMenu (list (cons (_ \\\"Change Name\\\") d-InstrumentName) (cons (_ \\\"Change Indent\\\") d-ScoreIndent))))) (if choice (choice))) \" " transparent-start "\"" current "\" " transparent-end"}")) (if (> (string-length current) 0) (d-StaffProperties (string-append "denemo_name=" current)) (d-StaffProperties "denemo_name=unnamed")) ;;if this is the first of several movements, ask to set the rest if called directly (if (and (not InstrumentName::params) (equal? nextmovement 2)) (let ((do-all (d-GetUserInput (_ "Instrument Name") (_ "This sets the name in Movement 1\nSet this name for the same staff in other movements?") (_ "y")))) (if (equal? do-all (_ "y")) (let ((staffnum (d-GetStaff))) (d-PushPosition) (while (d-NextMovement) (if (d-GoToPosition #f staffnum 1 1) (d-InstrumentName current))) (d-PopPosition))))) (set! size (/ (string->number (d-ScoreProperties "query=fontsize")) 10.0)) (set! indent (max (string->number indent) (* size (string-length current)))) (d-ScoreIndent indent)))))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/StaffSize.xml0000644000000000000000000000013213135434036027630 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.029981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/StaffSize.xml0000644000175000017500000000067013135434036031504 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TinyStaff StaffSize <_label>Set Staff Size <_tooltip>Sets the size of the staff on printing relative to the default 0. Value -3 is tiny 3 is large. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/AssignInstrumen0000644000000000000000000000013213135434036030264 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.039981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/AssignInstrument.scm0000644000175000017500000000076713135434036033114 0ustar00jjbenhamjjbenham00000000000000;;;AssignInstrument (let ((num-staffs (d-GetStaffsInMovement)) (staff (d-GetStaff))) (SelectStaff) (d-Copy) (d-AddInstrumentStaff) (if (> (d-GetStaffsInMovement) (1+ num-staffs)) (d-WarningDialog (_ "Copy and Paste the music from the old staffs to the new, and then delete the old staffs")) (if (>= (d-GetStaff) (1+ staff)) (begin (while (and (> (d-GetStaff) (1+ staff)) (d-SwapStaffs))) (d-Paste) (d-MoveToStaffUp) (d-DeleteStaff)) (d-WarningDialog (_ "Cancelled"))))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/AssignInstrumen0000644000000000000000000000013213135434036030264 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.039981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/AssignInstrument.xml0000644000175000017500000000064713135434036033127 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AssignInstrument StaffComment <_label>Assign Instrument <_tooltip>Assigns the current staff to an instrument selected by the user. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/FretDiagrams0000644000000000000000000000013213135434150027500 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/FretDiagrams/0000755000175000017500000000000013135434150031426 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/FretDiagrams/PaxHeaders.19168/Fr0000644000000000000000000000013213135434036030052 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.039981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/FretDiagrams/FretBoards.scm0000644000175000017500000000144113135434036034170 0ustar00jjbenhamjjbenham00000000000000;;;FretBoards (let ((tag "FretBoards")(choice #f)) (if (not (d-Directive-staff? tag)) (set! choice (RadioBoxMenu (cons (_ "Guitar") #f) (cons (_ "Mandolin") "mandolin") (cons (_ "Ukulele") "ukulele")))) (ToggleDirective "voice" "postfix" tag "\n" (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND)) (if choice (begin (d-LilyPondInclude (string-append "predefined-" choice "-fretboards.ly")) (ToggleDirective "staff" "postfix" tag (string-append " \\new FretBoards <<\n\\set Staff.stringTunings = #" choice "-tuning\n") DENEMO_OVERRIDE_LILYPOND)) (ToggleDirective "staff" "postfix" tag " \\new FretBoards <<\n" DENEMO_OVERRIDE_LILYPOND))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/FretDiagrams/PaxHeaders.19168/Fr0000644000000000000000000000013213135434036030052 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.039981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/FretDiagrams/FretBoards.xml0000644000175000017500000000070013135434036034203 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FretBoards StaffSize <_label>Fret Diagrams (Off/On) <_tooltip>Chords on this staff will typeset as fret diagrams (off/on). Choose from several instruments. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/SetStaffRangeFr0000644000000000000000000000013213135434036030117 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.063315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/SetStaffRangeFromChord.xml0000644000175000017500000000075713135434036034114 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetStaffRangeFromChord ShortInstrumentName <_label>Set Staff Range <_tooltip>Sets the highest and lowest notes playable on the current staff to the highest and lowest pitches of the chord at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/SetStaffRangeFr0000644000000000000000000000013213135434036030117 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.063315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/SetStaffRangeFromChord.scm0000644000175000017500000000027013135434036034064 0ustar00jjbenhamjjbenham00000000000000;;;SetStaffRangeFromChord (if (Chord?) (d-SetStaffRange) (d-WarningDialog (_ "The cursor must be on a chord with the highest note and lowest note set to the range desired."))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/SmallerStaff.xm0000644000000000000000000000013213135434036030141 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.063315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/SmallerStaff.xml0000644000175000017500000000064113135434036032167 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SmallerStaff <_label>Smaller Staff <_tooltip>The current staff will print in a smaller size. Use this for the solo part above a piano accompaniment denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/StaffComment.sc0000644000000000000000000000013213135434036030125 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.063315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/StaffComment.scm0000644000175000017500000000032713135434036032155 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;;;;; (d-DirectivePut-staff-override "StaffComment" (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_EDITOR)) (d-DirectivePut-staff-display "StaffComment" (_ "Click to edit comment")) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/StaffComment.xm0000644000000000000000000000013213135434036030144 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.063315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/StaffComment.xml0000644000175000017500000000060213135434036032167 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NonPrintingStaff StaffComment <_label>Comment <_tooltip>Saves textual comments for this staff denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/PaxHeaders.19168/TinyStaff.scm0000644000000000000000000000013213135434036027623 xustar0030 mtime=1500919838.036648472 30 atime=1500919929.073315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffPropertiesMenu/TinyStaff.scm0000644000175000017500000000042113135434036031471 0ustar00jjbenhamjjbenham00000000000000;;;TinyStaff (ToggleDirective "staff" "prefix" "StaffSize" " fontSize = #-7 \\override VerticalAxisGroup #'minimum-Y-extent = #'(0 . 0) \\override StaffSymbol #'staff-space = #(magstep -7)\n "(logior DENEMO_OVERRIDE_AFFIX DENEMO_ALT_OVERRIDE))denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/FixSlursInStaff.xml0000644000000000000000000000013213135434036025017 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.073315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/FixSlursInStaff.xml0000644000175000017500000000064713135434036026677 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SimplifyTies FixSlursInStaff <_label>Fix Slurs <_tooltip>Removes incorrectly placed slur start/end markers on current voice/staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/DeleteMeasuresBeforeCursor.xml0000644000000000000000000000013213135434036027215 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.073315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DeleteMeasuresBeforeCursor.xml0000644000175000017500000000077613135434036031100 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteMeasuresBeforeCursor DeleteFromCursorToEnd <_label>Delete Measures Before Cursor <_tooltip>Deletes all the measures before the measure containing the cursor, either current staff or all staffs as chosen by user. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/SimplifyTies.scm0000644000000000000000000000013213135434036024370 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.073315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/SimplifyTies.scm0000644000175000017500000000457413135434036026253 0ustar00jjbenhamjjbenham00000000000000;;;;SimplifyTies (let () (define (common-notes? this that) (define list1 (if this (string-split this #\space) '())) (define list2 (if that (string-split that #\space) '())) (let loop () (if (or (null? list1) (null? list2)) #f (if (not (member (car list1) list2)) (begin (set! list1 (list-tail list1 1)) (loop)) #t)))) (define (amalgamate-ties) (define this-dur (string->number(car (string-split (d-GetNoteDuration) #\.)))) (define this-dots (d-GetDots)) (define continuing #t) (define this-note (d-GetNotes)) (if (d-NextChordInMeasure) (let ((next-note (d-GetNotes))(next-dur (string->number (car (string-split (d-GetNoteDuration) #\.)))) (next-dots (d-GetDots))) (if (common-notes? this-note next-note) (if (equal? this-note next-note) (begin (cond ((and (= this-dur next-dur) (= this-dots next-dots)) (d-DeletePreviousObject) (d-Augment)) ((and (= 1 this-dots) (= 0 next-dots) (= (/ next-dur 2) this-dur)) (d-DeletePreviousObject) (d-RemoveDot) (d-Augment) (d-Augment)) ((and (= (/ next-dur 2) this-dur) (= 0 this-dots) (= 0 next-dots)) (d-DeletePreviousObject) (d-Augment) (d-AddDot)) (else (disp "else case\n")))) (begin (d-PrevChord) (d-ToggleTie) (set! continuing #f))) (begin ;;no notes in common for next in measure, delete tie and stop (d-PrevChord) (d-ToggleTie) (set! continuing #f)))) (if (d-NextChord) ;;; no next chord in measure, try next measure (let ((next-note (d-GetNotes))) (if (not (common-notes? this-note next-note)) (begin (d-PrevChord) (d-ToggleTie) (set! continuing #f)) (begin ;;; first chord in subsequent measure has some common notes (set! continuing #f) (d-PrevChord) ))))) (if (and continuing (d-IsTied)) (amalgamate-ties))) ;;;;actual code (d-MoveToBeginning) (let loop () (if (d-IsTied) (let ((this-note (d-GetNotes))) (if (d-NextChord) (if (common-notes? this-note (d-GetNotes)) (begin (if (equal? this-note (d-GetNotes)) (begin (d-PrevChord) (amalgamate-ties)))) (begin (d-PrevChord) (d-ToggleTie) (d-NextChord))) (begin ;;; no next chord so remove tie (d-ToggleTie) )))) (if (d-NextChord) (loop)))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/DeleteTextAnnotationsFromCursor.scm0000644000000000000000000000013213135434036030256 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.079981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DeleteTextAnnotationsFromCursor.scm0000644000175000017500000000025113135434036032125 0ustar00jjbenhamjjbenham00000000000000;;;DeleteTextAnnotationsFromCursor (let ((thunk (lambda () (d-DirectiveGetForTag-standalone "TextAnnotation")))) (while (d-NextObject) (if (thunk) (d-DeleteObject))))denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/FillEmptyMeasures.scm0000644000000000000000000000013213135434036025361 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.079981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/FillEmptyMeasures.scm0000644000175000017500000000037013135434036027232 0ustar00jjbenhamjjbenham00000000000000;;;FillEmptyMeasures (d-PushPosition) (let loop () (if (EmptyMeasure?) (begin (DenemoWholeMeasureRestCommand 'nonprinting) (d-SetNonprinting))) (if (d-MoveToMeasureRight) (loop))) (d-PopPosition) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/DeleteFromCursorToEnd.xml0000644000000000000000000000013213135434036026143 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.079981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DeleteFromCursorToEnd.xml0000644000175000017500000000071713135434036030021 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteFromCursorToEnd StaffDeleteEmptyMeasures <_label>Delete Measures From Cursor <_tooltip>Deletes all measures from the cursor to the end, either in one or all staffs. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/ChangeStaff.scm0000644000000000000000000000013213135434036024120 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.079981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/ChangeStaff.scm0000644000175000017500000000203313135434036025767 0ustar00jjbenhamjjbenham00000000000000;Change staff-by DRW modified by RTS can take a denemo-staff name to move to (let ((tag "ChangeStaff") (Name #f)(Choices "")) (define (GetNames) (let ((Dummy "")) (set! Dummy (d-StaffProperties "query=denemo_name")) (if Dummy (set! Choices (string-append Choices Dummy stop))) (if (d-MoveToStaffDown) (GetNames)))) (if (equal? ChangeStaff::params "edit") (set! ChangeStaff::params #f)) (set! Name ChangeStaff::params) (begin (if (not Name) (begin (d-PushPosition) (while (d-MoveToStaffUp)) (GetNames) (d-PopPosition) (set! Name (d-GetOption Choices )))) (if Name (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-minpixels tag 50) (d-DirectivePut-standalone-postfix tag (string-append "\\change Staff=\"" Name "\" " )) (d-DirectivePut-standalone-graphic tag (string-append "\n⇒" Name "\nDenemo\n12")) (d-DirectivePut-standalone-gy tag -1))) (d-SetSaved #f) (d-RefreshDisplay))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/CreateCuesForStaff.xml0000644000000000000000000000013213135434036025443 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.089981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CreateCuesForStaff.xml0000644000175000017500000000067213135434036027321 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StaffComment CreateCuesForStaff <_label>Create Cues <_tooltip>Goes through the staff looking for long rests. Creates a cue in the whole measure rest. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/CaptureScore0000644000000000000000000000013213135434150023562 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/0000755000175000017500000000000013135434150025510 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/PaxHeaders.19168/DeleteCapturedMeasureF0000644000000000000000000000013213135434036030107 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.089981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/DeleteCapturedMeasureForStaff.scm0000644000175000017500000000005313135434036034064 0ustar00jjbenhamjjbenham00000000000000(d-DeleteScreenshot #t) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/PaxHeaders.19168/CaptureMeasuresForStaf0000644000000000000000000000013213135434036030162 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.089981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/CaptureMeasuresForStaff.scm0000644000175000017500000000036613135434036032767 0ustar00jjbenhamjjbenham00000000000000;;;CaptureMeasuresForStaff (d-PushPosition) (let loop ((measure-created #f)) (if (d-UserScreenshot #t) (begin (d-AppendMeasure) (loop #t)) (begin (d-MoveToEnd) (if measure-created (d-DeleteMeasure))))) (d-PopPosition) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/PaxHeaders.19168/InsertCaptureMeasureFo0000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.089981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/InsertCaptureMeasureForStaff.scm0000644000175000017500000000011313135434036033757 0ustar00jjbenhamjjbenham00000000000000;;;InsertCaptureMeasureForStaff (d-UserScreenshot #t (- (d-GetMeasure) 1)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/PaxHeaders.19168/DeleteCapturedMeasureF0000644000000000000000000000013213135434036030107 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.089981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/DeleteCapturedMeasureForStaff.xml0000644000175000017500000000072613135434036034111 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CaptureMeasuresForStaff DeleteCapturedMeasureForStaff <_label>Delete Captured Measure. <_tooltip>Deletes the captured measure image for the current measure of the current staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/PaxHeaders.19168/InsertCaptureMeasureFo0000644000000000000000000000013213135434036030164 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.109981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/InsertCaptureMeasureForStaff.xml0000644000175000017500000000076713135434036034014 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CaptureMeasuresForStaff InsertCaptureMeasureForStaff <_label>Capture and Insert One Measure <_tooltip>Capture the image of a single measure (as screenshot) inserting at the current measure in the current staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/PaxHeaders.19168/CaptureMeasuresForStaf0000644000000000000000000000013213135434036030162 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.109981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CaptureScore/CaptureMeasuresForStaff.xml0000644000175000017500000000145713135434036033007 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CheckTiesInStaff CaptureMeasuresForStaff <_label>Capture Measures (one staff) <_tooltip>Creates blank measures one for each measure captured as a screenshot from one of a set of parts. Display the source score on the screen using any program. Click on opposite corners of each measure in turn to capture that measure as an image into Denemo. Right-click or scroll-wheel to switch corners to adjust. Press any key to finish. This command is for capturing in parts form; to capture in full score use CaptureMeasures command denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/Playback0000644000000000000000000000013213135434150022711 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Playback/0000755000175000017500000000000013135434150024637 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Playback/PaxHeaders.19168/SetInitialVolumeToZero.scm0000644000000000000000000000013213135434036030075 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.109981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Playback/SetInitialVolumeToZero.scm0000644000175000017500000000134213135434036031746 0ustar00jjbenhamjjbenham00000000000000;;;SetInitialVolumeToZero (d-PushPosition) (d-MoveToBeginning) (if (and (d-Directive-standalone? "Mute") (> (d-DirectiveGet-standalone-override "Mute") 0)) (begin (d-SetSaved #f) (d-DirectivePut-standalone-midibytes "Mute" "") (d-DirectivePut-standalone-override "Mute" 0) (d-DirectivePut-standalone-graphic "Mute" "Speaker_Icon")) (begin (d-DirectivePut-standalone "Mute") (d-DirectivePut-standalone-graphic "Mute" "Speaker_Icon_Mute") (d-DirectivePut-standalone-midibytes "Mute" "0") (d-DirectivePut-standalone-minpixels "Mute" 50) (d-DirectivePut-standalone-gx "Mute" 20) (d-DirectivePut-standalone-override "Mute" (logior DENEMO_OVERRIDE_VOLUME DENEMO_OVERRIDE_STEP)) (d-SetSaved #f))) (d-PopPosition) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Playback/PaxHeaders.19168/MuteStaff.xml0000644000000000000000000000013213135434036025411 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.119981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Playback/MuteStaff.xml0000644000175000017500000000053613135434036027266 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MuteStaff <_label>Mute <_tooltip>Mutes the current staff. Affects only playback. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Playback/PaxHeaders.19168/SetInitialVolumeToZero.xml0000644000000000000000000000013213135434036030113 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.119981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Playback/SetInitialVolumeToZero.xml0000644000175000017500000000066013135434036031766 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MoveToVoiceDown SetInitialVolumeToZero <_label>Mute <_tooltip>Mutes playback on this staff by placing a volume=zero directive at the start. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Playback/PaxHeaders.19168/MuteStaff.scm0000644000000000000000000000013213135434036025373 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.119981805 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Playback/MuteStaff.scm0000644000175000017500000000345013135434036027246 0ustar00jjbenhamjjbenham00000000000000;;;MuteStaff (let ((tag "MuteStaff")) (if (equal? MuteStaff::params "delete") (begin (d-LockDirective #f) (set! MuteStaff::params #f) (d-DirectiveDelete-standalone tag) (d-StaffMasterVolume #t)) (let ((pos (d-GetHorizontalPosition))(measure (d-GetMeasure))(mute (negative? (d-StaffMasterVolume)))) (if (not (and (= pos 1) (= measure 1))) (begin (d-PushPosition) (d-MoveToBeginning) (set! pos #f))) (if (not (d-Directive-standalone? tag)) (begin (d-Directive-standalone tag) (d-LockDirective #t))) (d-DirectivePut-standalone-minpixels tag 50) (d-DirectivePut-standalone-gx tag 20) (if (equal? MuteStaff::params "unmute") (d-StaffMasterVolume #t) ;;pass #t to force un-mute (if (not mute) (begin (d-StaffMasterVolume #f)) (begin (d-StaffMasterVolume #t) (if (< (d-StaffMasterVolume) 0.2) (d-WarningDialog (_ "The volume set on this staff is very low, you may not hear it.\nSee Staff->Staff Properties->Built-in Staff Properties, MIDI tab.")))))) (set! mute (negative? (d-StaffMasterVolume))) (if mute (d-DirectivePut-standalone-graphic tag "Speaker_Icon_Mute") (d-DirectivePut-standalone-graphic tag "Speaker_Icon")) (d-SetSaved #f) (if (not pos) (d-PopPosition)))) (if (d-Directive-standalone? tag) (d-MoveCursorRight)) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/DeleteFromCursorToEnd.scm0000644000000000000000000000013213135434036026125 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.119981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/DeleteFromCursorToEnd.scm0000644000175000017500000000166713135434036030010 0ustar00jjbenhamjjbenham00000000000000;;;DeleteFromCursorToEnd (let ((choice DeleteFromCursorToEnd::params)) (if (not choice) (set! choice (RadioBoxMenu (cons (_ "Cancel") #f) (cons (_ "All Staffs - Delete all measures from cursor?") 'all) (cons (_ "This Staff/Voice only?") 'this)))) (case choice ((all) (d-SetSaved #f) (d-EvenOutStaffLengths) (while (d-MoveToMeasureRight) (d-MoveToMeasureLeft) (d-DeleteMeasureAllStaffs)) (d-DeleteMeasureAllStaffs)) ((this) (d-SetSaved #f) (while (d-MoveToMeasureRight) (d-MoveToMeasureLeft) (d-DeleteMeasure)) (d-DeleteMeasure)) (else (d-InfoDialog (_ "Cancelled"))))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/FixSlursInStaff.scm0000644000000000000000000000013213135434036025001 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.133315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/FixSlursInStaff.scm0000644000175000017500000000077313135434036026661 0ustar00jjbenhamjjbenham00000000000000;;;FixSlursInStaff (d-PushPosition) (d-MoveToBeginning) (let () (define start #f) (let loop () (if (d-IsSlurStart) (if start (d-ToggleBeginSlur) (set! start (GetPosition)))) (if (d-IsSlurEnd) (if start (begin (set! start #f) (if (d-IsSlurStart) (begin (d-ToggleBeginSlur) (d-ToggleEndSlur)))) (d-ToggleEndSlur))) (if (d-NextChord) (loop))) (if start (begin (apply d-GoToPosition start) (d-ToggleBeginSlur)))) (d-PopPosition)denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/Ossia0000644000000000000000000000013213135434150022241 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/0000755000175000017500000000000013135434150024167 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/PaxHeaders.19168/CreateOssiaStaff.scm0000644000000000000000000000013213135434036026213 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.133315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/CreateOssiaStaff.scm0000644000175000017500000000200513135434036030061 0ustar00jjbenhamjjbenham00000000000000;;;;;; CreateOssiaStaff (let ((current "voice 1")(tag "ossia")) (set! current (d-StaffProperties "query=denemo_name")) (d-NewStructuredStaff) (d-SwapStaffs) (d-StaffProperties (string-append "denemo_name=" current "_ossia")) (d-DirectivePut-score-prefix "HideEmptyStaffs" "\\layout { \\context { \\RemoveEmptyStaffContext } }") (d-DirectivePut-staff-prefix tag " \\remove \"Time_signature_engraver\" \\remove \"Key_engraver\" \\remove \"Clef_engraver\" fontSize = #-2 \\override StaffSymbol #'staff-space = #(magstep -2) firstClef = ##f ") (d-DirectivePut-voice-postfix tag "\\stopStaff \\hideNotes ") (d-DirectivePut-voice-display tag "Ossia") (d-DirectivePut-voice-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-staff-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_ALT_OVERRIDE DENEMO_OVERRIDE_AFFIX)) (d-DirectivePut-staff-display tag "Ossia") (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/PaxHeaders.19168/HideOssia.scm0000644000000000000000000000013213135434036024675 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.133315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/HideOssia.scm0000644000175000017500000000104213135434036026543 0ustar00jjbenhamjjbenham00000000000000 ;;;HideOssia (let ((tag "HideOssia")) (if (d-Directive-standalone? tag) (d-InfoDialog (_ "This marks the end of the passage to be shown on the ossia staff")) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag "\\stopStaff \\hideNotes ") (d-DirectivePut-standalone-display tag (_ "Hide")) (d-DirectivePut-standalone-ty tag 40) (d-DirectivePut-standalone-minpixels tag 30) (d-MoveCursorRight) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/PaxHeaders.19168/ShowOssia.xml0000644000000000000000000000013213135434036024762 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.133315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/ShowOssia.xml0000644000175000017500000000064413135434036026637 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CreateOssiaStaff ShowOssia <_label>Show Ossia <_tooltip>Place this at the start of the music to be printed from the Ossia staff denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/PaxHeaders.19168/CreateOssiaStaff.xml0000644000000000000000000000013213135434036026231 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.143315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/CreateOssiaStaff.xml0000644000175000017500000000072213135434036030103 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CreateOssiaStaff <_label>Create Ossia Staff <_tooltip>Creates a small staff above the current staff for inserting cues, ossia passages etc. Use Show Ossia and Hide Ossia to show specific measures. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/PaxHeaders.19168/HideOssia.xml0000644000000000000000000000013213135434036024713 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.143315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/HideOssia.xml0000644000175000017500000000063313135434036026566 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShowOssia HideOssia <_label>Hide Ossia <_tooltip>Place this at the end of the music to be printed from the Ossia staff denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/PaxHeaders.19168/ShowOssia.scm0000644000000000000000000000013213135434036024744 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.143315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/Ossia/ShowOssia.scm0000644000175000017500000000103713135434036026616 0ustar00jjbenhamjjbenham00000000000000;;; ShowOssia (let ((tag "ShowOssia")) (if (d-Directive-standalone? tag) (d-InfoDialog (_ "This marks the start of a passage to be shown on the ossia staff")) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag "\\startStaff \\unHideNotes") (d-DirectivePut-standalone-display tag (_ "Show")) (d-DirectivePut-standalone-ty tag 40) (d-DirectivePut-standalone-minpixels tag 30) (d-MoveCursorRight) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/CrossStaffArpeggio.scm0000644000000000000000000000013213135434036025502 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.143315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CrossStaffArpeggio.scm0000644000175000017500000000113313135434036027351 0ustar00jjbenhamjjbenham00000000000000;;CrossStaffArpeggio (disp "Entered with " CrossStaffArpeggio::params " ok") (let ((tag "CrossStaffArpeggio")) (if (d-Directive-staff? tag) (begin (d-DirectiveDelete-staff tag) (d-InfoDialog (_ "Arpeggios will not cross staffs"))) (begin (d-InfoDialog (_ "Arpeggios will cross staffs")) (d-DirectivePut-staff-display tag (_ " Cross Staff Arpeggios ")) (d-DirectivePut-staff-override tag (logior DENEMO_ALT_OVERRIDE DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_GRAPHIC)) (d-DirectivePut-staff-prefix tag " connectArpeggios = ##t ")))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/StaffDeleteEmptyMeasures.xml0000644000000000000000000000013213135434036026677 xustar0030 mtime=1500919838.033315139 30 atime=1500919929.163315139 30 ctime=1500919913.009981805 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/StaffDeleteEmptyMeasures.xml0000644000175000017500000000071613135434036030554 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StaffDeleteEmptyMeasures FillEmptyMeasures <_label>Delete Empty Measures <_tooltip>Deletes any measures that are empty from the measure after the cursor to end of staff. denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/PaxHeaders.19168/CreateCuesForStaff.scm0000644000000000000000000000013213135434036025425 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.163315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/StaffMenu/CreateCuesForStaff.scm0000644000175000017500000000475113135434036027305 0ustar00jjbenhamjjbenham00000000000000;;;CreateCues (let () (define (whole-measure-rest) (d-Directive-chord? "WholeMeasureRest")) ;;; find-block looks at the measures from the cursor onwards returning with the cursor on the last of a block of wmrs (#t) or at the end if none (#f) (define (find-block) (define count 0) (disp "find-block called") (let loop () (if (whole-measure-rest) (begin (set! count (+ 1 count)) (if (d-MoveToMeasureRight) (loop))) (begin ;; not on a whole measure rest (if (zero? count) (if (d-MoveToMeasureRight) (loop))) (if (< count 3) ;;; do not cue for two or less rests (begin (set! count 0) (if (d-MoveToMeasureRight) (loop)))))) (if (< count 3) #f (begin ;;;we have found a block of whole measure rests and are one beyond or at the end (if (not (whole-measure-rest)) (d-MoveToMeasureLeft)) #t)))) (define (copy-measure);;;FIXME get prevailing clef and insert it before the copy and remove it after (while (d-PrevObjectInMeasure)) (d-SetMark) (while (d-NextObjectInMeasure)) (d-SetPoint) (d-Copy)) ;;; get-cue goes through the staffs from the top down looking for one (not the starting one) with music ;;; if it finds it it copies the measure to the clipboard and returns the staff-name (define (get-cue staff-name) (define cue-name #f) (disp "get-cue called for " staff-name "\n") (d-PushPosition) (while (d-MoveToStaffUp)) (let loop () (if (equal? staff-name (d-StaffProperties "query=denemo_name")) (if (d-MoveToStaffDown) (loop)) (if (not (whole-measure-rest)) (begin ;; we have a measure that we can use as a cue so copy it (copy-measure) (set! cue-name (d-StaffProperties "query=denemo_name"))) (if (d-MoveToStaffDown) (loop))))) (d-PopPosition) cue-name) ;;; actual code (d-EvenOutStaffLengths) (d-PushPosition) (d-GoToBeginning) (while (find-block) (let ((staff-name (d-StaffProperties "query=denemo_name"))) (define cue (get-cue staff-name)) (disp "found block with cue " cue "\n") (if cue (begin (d-DeleteObject) (StandAloneDirectiveProto (cons "CueName" (string-append " s1*0^\\markup \\italic { "cue "}")) #t "\ne" ) (d-SmallFontStart) (d-Paste) (d-SmallFontEnd)) ;;;FIXME Insert the previously prevailing clef, or delete the one at the start of the cue if it is the same (disp "No cue possible\n"))) (d-MoveToMeasureRight)) (d-PopPosition)) denemo-2.2.0/actions/menus/ObjectMenu/PaxHeaders.19168/MovementMenu0000644000000000000000000000013213135434150021712 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/0000755000175000017500000000000013135434150023640 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/CreateIntro.xml0000644000000000000000000000013213135434035024732 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.163315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CreateIntro.xml0000644000175000017500000000066413135434035026611 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementPageBreak CreateIntro <_label>Create Intro <_tooltip>Creates a new staff with a bar for nothing (an intro of the right number of beats) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/MvntComment.scm0000644000000000000000000000013213135434035024744 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.163315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/MvntComment.scm0000644000175000017500000000043213135434035026614 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;MvntComment (let ((tag "MvmntComment")) (d-DirectivePut-movementcontrol-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_EDITOR)) (d-DirectivePut-movementcontrol-display tag (_ "Click to edit comment")) (d-DisplayDirectiveTextEditor "movementcontrol" tag))denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/DisplayEffects0000644000000000000000000000013213135434150024617 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/DisplayEffects/0000755000175000017500000000000013135434150026545 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/DisplayEffects/PaxHeaders.19168/AllStaffsHidden.s0000644000000000000000000000013213135434035030055 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.173315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/DisplayEffects/AllStaffsHidden.scm0000644000175000017500000000005113135434035032242 0ustar00jjbenhamjjbenham00000000000000;;;AllStaffsHidden (StaffsVisibility #f) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/DisplayEffects/PaxHeaders.19168/AllStaffsVisible.0000644000000000000000000000013213135434035030074 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.173315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/DisplayEffects/AllStaffsVisible.scm0000644000175000017500000000005113135434035032444 0ustar00jjbenhamjjbenham00000000000000;;;AllStaffsHidden (StaffsVisibility #t) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/DisplayEffects/PaxHeaders.19168/AllStaffsVisible.0000644000000000000000000000013213135434035030074 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.173315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/DisplayEffects/AllStaffsVisible.xml0000644000175000017500000000055513135434035032473 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AllStaffsVisible <_label>Show All Staffs <_tooltip>Makes all the staffs visible in the display. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/DisplayEffects/PaxHeaders.19168/AllStaffsHidden.x0000644000000000000000000000013213135434035030062 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.173315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/DisplayEffects/AllStaffsHidden.xml0000644000175000017500000000061613135434035032267 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AllStaffsHidden <_label>Hide All Staffs <_tooltip>Makes all the staffs hidden in the display except for the one with the cursor. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/EvenOutStaffLengths.xml0000644000000000000000000000013213135434035026411 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.183315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/EvenOutStaffLengths.xml0000644000175000017500000000063413135434035030265 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ReBar EvenOutStaffLengths <_label>Even Up the Staffs <_tooltip>Appends empty measures to any staffs that are too short. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/CreateIntro.scm0000644000000000000000000000013213135434035024714 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.183315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CreateIntro.scm0000644000175000017500000000434713135434035026575 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;CreateIntro (let ( (position (GetPosition)) (timesig (d-InitialTimeSig "query=timesigname")) (numerator #f)(denominator #f)) (define (createIntroStaff) (d-NewStructuredStaff 'initial) (d-InitialClef "Treble") (d-StaffHidden #t) (d-StaffProperties "midi_channel=9") (d-DirectivePut-clef-graphic "DrumClef" "DrumClef") (d-DirectivePut-clef-override "DrumClef" DENEMO_OVERRIDE_GRAPHIC) (d-NonPrintingStaff) (d-StaffProperties "denemo_name=Intro")) (define (writeIntroBar numerator denominator) ;;;write an intro bar (let loop ((count (string->number numerator))) (if (positive? count) (begin (eval-string (string-append "(d-" (number->string (duration::lilypond->denemo (string->number denominator))) ")")) (loop (- count 1))))) (d-MuteStaff "unmute")) (define (deleteToEnd) (d-SetMark) (d-GoToEnd) (d-Cut)) (define firstmeasure #t) (define measurenum (list-ref position 2)) (while (d-MoveToStaffUp)) (if (equal? "Intro" (d-StaffProperties "query=denemo_name")) (begin (set! firstmeasure #f);;we will not need to add an initial intro measure, as there will be one already (if (not (None?)) (if (equal? (_ "y") (d-GetUserInput (_ "Non Empty Intro staff") (_ "Remove the previous transcription from this measure on?") (_ "y"))) (deleteToEnd) (set! firstmeasure 'abort)))) (begin (createIntroStaff))) (if (not (eq? firstmeasure 'abort)) (begin (if firstmeasure (begin (d-GoToBeginning) (set! measurenum (+ 1 measurenum)) (d-InsertMeasure) (set! numerator (car (string-split timesig #\/))) (set! denominator (cadr (string-split timesig #\/))) (writeIntroBar numerator denominator))) (while (d-MoveToStaffDown) (if (EmptyMeasure?) (begin (d-DirectivePut-standalone-graphic "Blank" "\nBlank\nDenemo\n20") (d-SetDurationInTicks (* 1536 (GetPrevailingTimeSig #t)))))) (d-GoToPosition #f #f measurenum (list-ref position 3))))) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/Typesetter0000644000000000000000000000013213135434150024062 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/0000755000175000017500000000000013135434150026010 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/MovementBeamingRules.0000644000000000000000000000013213135434035030232 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.183315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/MovementBeamingRules.scm0000644000175000017500000000073113135434035032607 0ustar00jjbenhamjjbenham00000000000000;;;MovementBeamingRules (let ((tag "MovementBeamingRules")(spec '())) (set! spec (assoc-set! spec 'delete d-DirectiveDelete-layout)) (set! spec (assoc-set! spec 'get d-DirectiveGet-layout-data)) (set! spec (assoc-set! spec 'put d-DirectivePut-layout-data)) (set! spec (assoc-set! spec 'proc d-DirectivePut-layout-postfix)) (set! spec (assoc-set! spec 'layout "")) (set! spec (assoc-set! spec 'tag tag)) (d-SetBeamExceptions spec)) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/NoteHeadStyles0000644000000000000000000000013213135434150026755 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/0000755000175000017500000000000013135434150030703 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031513135434035030212 xustar00115 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsDiamond.xml 30 mtime=1500919837.989981805 30 atime=1500919929.193315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsDiamon0000644000175000017500000000065113135434035035407 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsHarmonic-mixed MovementNoteheadsDiamond <_label>Diamond <_tooltip>Diamond note head style for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031613135434035030213 xustar00116 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsHarmonic.xml 30 mtime=1500919837.989981805 30 atime=1500919929.193315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsHarmon0000644000175000017500000000064613135434035035430 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsPetrucci MovementNoteheadsHarmonic <_label>Harmonic <_tooltip>Harmonic note head style for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031613135434035030213 xustar00116 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsHarmonic.scm 30 mtime=1500919837.989981805 30 atime=1500919929.193315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsHarmon0000644000175000017500000000020713135434035035421 0ustar00jjbenhamjjbenham00000000000000(AttachDirective "layout" "postfix" "MovementNoteheads" "\t\\context { \t\\Score \t\\override NoteHead #'style = #'harmonic }\n")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031613135434035030213 xustar00116 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsPetrucci.xml 30 mtime=1500919837.993315139 30 atime=1500919929.193315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsPetruc0000644000175000017500000000064613135434035035446 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsMensural MovementNoteheadsPetrucci <_label>Petrucci <_tooltip>Petrucci note head style for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000032413135434035030212 xustar00122 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsHarmonic-mixed.scm 30 mtime=1500919837.989981805 30 atime=1500919929.213315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsHarmon0000644000175000017500000000021513135434035035420 0ustar00jjbenhamjjbenham00000000000000(AttachDirective "layout" "postfix" "MovementNoteheads" "\t\\context { \t\\Score \t\\override NoteHead #'style = #'harmonic-mixed }\n")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031313135434035030210 xustar00113 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsSlash.scm 30 mtime=1500919837.993315139 30 atime=1500919929.213315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsSlash.0000644000175000017500000000020413135434035035322 0ustar00jjbenhamjjbenham00000000000000(AttachDirective "layout" "postfix" "MovementNoteheads" "\t\\context { \t\\Score \t\\override NoteHead #'style = #'slash }\n")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031313135434035030210 xustar00113 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsCross.scm 30 mtime=1500919837.989981805 30 atime=1500919929.213315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsCross.0000644000175000017500000000020413135434035035341 0ustar00jjbenhamjjbenham00000000000000(AttachDirective "layout" "postfix" "MovementNoteheads" "\t\\context { \t\\Score \t\\override NoteHead #'style = #'cross }\n")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031513135434035030212 xustar00115 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsBaroque.xml 30 mtime=1500919837.989981805 30 atime=1500919929.213315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsBaroqu0000644000175000017500000000064213135434035035431 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsDefault MovementNoteheadsBaroque <_label>Baroque <_tooltip>Baroque note head style for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000032413135434035030212 xustar00122 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsHarmonic-mixed.xml 30 mtime=1500919837.989981805 30 atime=1500919929.213315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsHarmon0000644000175000017500000000067613135434035035433 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsHarmonic-black MovementNoteheadsHarmonic-mixed <_label>Harmonic-black <_tooltip>Harmonic-black note head style for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031513135434035030212 xustar00115 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsXcircle.xml 30 mtime=1500919837.993315139 30 atime=1500919929.223315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsXcircl0000644000175000017500000000064413135434035035426 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsXcircle MovementNoteheadsXcircle <_label>Triangle <_tooltip>Triangle note head style for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000032413135434035030212 xustar00122 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsHarmonic-black.xml 30 mtime=1500919837.989981805 30 atime=1500919929.226648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsHarmon0000644000175000017500000000067013135434035035425 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsHarmonic MovementNoteheadsHarmonic-black <_label>Harmonic-black <_tooltip>Harmonic-black note head style for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031613135434035030213 xustar00116 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsPetrucci.scm 30 mtime=1500919837.993315139 30 atime=1500919929.226648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsPetruc0000644000175000017500000000020713135434035035437 0ustar00jjbenhamjjbenham00000000000000(AttachDirective "layout" "postfix" "MovementNoteheads" "\t\\context { \t\\Score \t\\override NoteHead #'style = #'petrucci }\n")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031513135434035030212 xustar00115 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsDiamond.scm 30 mtime=1500919837.989981805 30 atime=1500919929.226648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsDiamon0000644000175000017500000000020613135434035035403 0ustar00jjbenhamjjbenham00000000000000(AttachDirective "layout" "postfix" "MovementNoteheads" "\t\\context { \t\\Score \t\\override NoteHead #'style = #'diamond }\n")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031313135434035030210 xustar00113 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsCross.xml 30 mtime=1500919837.989981805 30 atime=1500919929.226648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsCross.0000644000175000017500000000063413135434035035350 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsDiamond MovementNoteheadsCross <_label>Cross <_tooltip>Cross note head style for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031513135434035030212 xustar00115 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsXcircle.scm 30 mtime=1500919837.993315139 30 atime=1500919929.233315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsXcircl0000644000175000017500000000020713135434035035421 0ustar00jjbenhamjjbenham00000000000000(AttachDirective "layout" "postfix" "MovementNoteheads" "\t\\context { \t\\Score \t\\override NoteHead #'style = #'triangle }\n")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031413135434035030211 xustar00114 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsDelete.xml 30 mtime=1500919837.989981805 30 atime=1500919929.233315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsDelete0000644000175000017500000000075013135434035035402 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsSlash MovementNoteheadsDelete <_label>Delete Movement Notehead Settings <_tooltip>Delete note head style of this movement. Reset to whatever Score or Lilypond has set as default. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031513135434035030212 xustar00115 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsDefault.scm 30 mtime=1500919837.989981805 30 atime=1500919929.233315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsDefaul0000644000175000017500000000020613135434035035374 0ustar00jjbenhamjjbenham00000000000000(AttachDirective "layout" "postfix" "MovementNoteheads" "\t\\context { \t\\Score \t\\override NoteHead #'style = #'default }\n")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031613135434035030213 xustar00116 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsMensural.xml 30 mtime=1500919837.993315139 30 atime=1500919929.233315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsMensur0000644000175000017500000000065113135434035035451 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsNeomensural MovementNoteheadsMensural <_label>Mensural <_tooltip>Mensural note head style for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000032113135434035030207 xustar00119 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsNeomensural.xml 30 mtime=1500919837.993315139 30 atime=1500919929.233315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsNeomen0000644000175000017500000000065613135434035035426 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsBaroque MovementNoteheadsNeomensural <_label>Neomensural <_tooltip>Neomensural note head style for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000032413135434035030212 xustar00122 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsHarmonic-black.scm 30 mtime=1500919837.989981805 30 atime=1500919929.243315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsHarmon0000644000175000017500000000021513135434035035420 0ustar00jjbenhamjjbenham00000000000000(AttachDirective "layout" "postfix" "MovementNoteheads" "\t\\context { \t\\Score \t\\override NoteHead #'style = #'harmonic-black }\n")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031413135434035030211 xustar00114 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsDelete.scm 30 mtime=1500919837.989981805 30 atime=1500919929.243315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsDelete0000644000175000017500000000005613135434035035401 0ustar00jjbenhamjjbenham00000000000000(d-DirectiveDelete-layout "MovementNoteheads")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031513135434035030212 xustar00115 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsBaroque.scm 30 mtime=1500919837.989981805 30 atime=1500919929.243315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsBaroqu0000644000175000017500000000020613135434035035425 0ustar00jjbenhamjjbenham00000000000000(AttachDirective "layout" "postfix" "MovementNoteheads" "\t\\context { \t\\Score \t\\override NoteHead #'style = #'baroque }\n")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031513135434035030212 xustar00115 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsDefault.xml 30 mtime=1500919837.989981805 30 atime=1500919929.243315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsDefaul0000644000175000017500000000056213135434035035401 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsDefault <_label>Default <_tooltip>Default note head style for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031313135434035030210 xustar00113 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsSlash.xml 30 mtime=1500919837.993315139 30 atime=1500919929.243315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsSlash.0000644000175000017500000000063413135434035035331 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementNoteheadsXcircle MovementNoteheadsSlash <_label>Slash <_tooltip>Slash note head style for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000032113135434035030207 xustar00119 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsNeomensural.scm 30 mtime=1500919837.993315139 30 atime=1500919929.266648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsNeomen0000644000175000017500000000021213135434035035412 0ustar00jjbenhamjjbenham00000000000000(AttachDirective "layout" "postfix" "MovementNoteheads" "\t\\context { \t\\Score \t\\override NoteHead #'style = #'neomensural }\n")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/PaxHeaders.19168/Moveme0000644000000000000000000000031613135434035030213 xustar00116 path=denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsMensural.scm 30 mtime=1500919837.989981805 30 atime=1500919929.266648472 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/NoteHeadStyles/MovementNoteheadsMensur0000644000175000017500000000020713135434035035446 0ustar00jjbenhamjjbenham00000000000000(AttachDirective "layout" "postfix" "MovementNoteheads" "\t\\context { \t\\Score \t\\override NoteHead #'style = #'mensural }\n")denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/Custos.scm0000644000000000000000000000013213135434035026125 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.266648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/Custos.scm0000644000175000017500000000050213135434035027773 0ustar00jjbenhamjjbenham00000000000000;;;Custos (let ((tag "Custos")) (if (d-Directive-layout? tag) (begin (d-DirectiveDelete-layout tag) (d-InfoDialog "Custos now turned off")) (begin (d-DirectivePut-layout-postfix tag " \\context { \\Staff \\consists \"Custos_engraver\" \\override Custos #'style = #'mensural }"))))denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/HideEmptyStaffs.xml0000644000000000000000000000013213135434035027722 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.266648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/HideEmptyStaffs.xml0000644000175000017500000000116213135434035031573 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreIndent HideEmptyStaffs <_label>Hide Empty Staffs (Off/On) <_tooltip>Controls whether staffs containing only rests are printed in the current movement. All staffs are printed on the first system (line) thereafter any staff that has only rests for a entire system is dropped. Use this in large scores to fit more systems per page. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/HideBarlines.xml0000644000000000000000000000013213135434035027214 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.266648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/HideBarlines.xml0000644000175000017500000000060413135434035031065 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HideMovement HideBarlines <_label>(Print) Hide Barlines <_tooltip>Omits barlines when printing. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/SwitchMensuralBarline0000644000000000000000000000013213135434035030331 xustar0030 mtime=1500919837.993315139 30 atime=1500919929.279981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/SwitchMensuralBarlines.xml0000644000175000017500000000062313135434035033165 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SwitchMensuralBarlines <_label>(Print) Mensural Barlines (On/Off) <_tooltip>Draw the barlines only between the staves but not inside. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/HideMovement.scm0000644000000000000000000000013213135434035027231 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.279981805 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/HideMovement.scm0000644000175000017500000000165213135434035031106 0ustar00jjbenhamjjbenham00000000000000;;;HideMovement (let ((tag "HideMovement")) ;delete obsolete directives (d-DirectiveDelete-layout "HiddenMovement") (d-DirectiveDelete-header "HiddenMovement") (if HideMovement::params (d-DirectiveDelete-movementcontrol tag)) (if (d-Directive-movementcontrol? tag) (begin (d-DirectiveDelete-movementcontrol tag) (d-InfoDialog (_ "Movement will be typeset normally"))) (begin (d-DirectivePut-movementcontrol-prefix tag "\\void ") (d-DirectivePut-movementcontrol-display tag (_ "Non-printing Movement")) (if (not HideMovement::params) (d-InfoDialog (_ "This movement will not be typeset. You must have at least one movement that is typeset")))))) ;;; Reset the movement indicator so it shows red (if (= 1 (d-GetMovement)) (begin (d-NextMovement) (d-PreviousMovement)) (begin (d-PreviousMovement) (d-NextMovement))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/ReduceSystemSpacing.s0000644000000000000000000000013213135434035030246 xustar0030 mtime=1500919837.993315139 30 atime=1500919929.279981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/ReduceSystemSpacing.scm0000644000175000017500000000046613135434035032445 0ustar00jjbenhamjjbenham00000000000000;;;ReduceSystemSpacing (let ((tag "ReduceSystemSpacing" )) (if (d-Directive-layout? tag) (d-InfoDialog (_ "Normal System Spacing is restored") #f)) (ToggleDirective "layout" "postfix" tag " between-system-padding = #0.1 between-system-space = #0.1 ragged-last-bottom = ##f ragged-bottom = ##f ")) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/SwitchMensuralBarline0000644000000000000000000000013213135434035030331 xustar0030 mtime=1500919837.993315139 30 atime=1500919929.279981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/SwitchMensuralBarlines.scm0000644000175000017500000000250313135434035033146 0ustar00jjbenhamjjbenham00000000000000; SwitchMensuralBarlines // "Mensurstriche" layout for one movement ; Consist of two independent, Denemo Directives. (if (d-DirectiveGet-layout-postfix "MensuralBarlines") (begin ;If there is a directive, delete all (d-DirectiveDelete-layout "MensuralBarlines") (d-DirectiveDelete-score "MensuralBarlines")) (begin ;If there is no directive present, create one ; Make barlines transparent only within the staff-lines range (d-DirectivePut-layout-postfix "MensuralBarlines" " \\context { \\Score \\override BarLine #'transparent = ##t } ") ; Override the automatically placed \EndMovementBarline with a explicitly drawn end-barline. ; This will enable the final Mensural Barline, but will not disturb other movements. (d-DirectivePut-score-prefix "MensuralBarlines" " EndMovementBarline = { \\once \\override Score.BarLine #'transparent = ##f \\bar \"|.\" } ") (d-DirectivePut-score-override "MensuralBarlines" DENEMO_OVERRIDE_AFFIX) (d-PushPosition) ; Surround all Staffs with a StaffGroup, which draws the barlines between the staffs. (while (d-StaffUp)) (d-GroupStaffStart) (while (d-StaffDown)) (d-BraceEnd) (d-PopPosition))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/BlankPage.scm0000644000000000000000000000013213135434035026471 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.289981806 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/BlankPage.scm0000644000175000017500000000305413135434035030344 0ustar00jjbenhamjjbenham00000000000000;;; BlankPage (let* ((tag "BlankPage") (params BlankPage::params)(text #f)(data (d-DirectiveGet-movementcontrol-data tag))) (if (equal? params "edit") (set! params #f)) (if (not params) (set! params data)) (if (and (not data) (not params)) (begin (set! params (d-GetUserInput (_ "Blank Page") (_ "Give text to appear on blank page, if any ") (_ "This page is intentionally left blank"))) (if params (set! params (string-append "\\vspace #20 \\bold \\fontsize #8 {" params " }"))))) (if (not params) (set! params "")) (if data (let ((choice (RadioBoxMenu (cons (_ "Edit Text") 'edit) (cons (_ "Delete") 'delete)))) (case choice ((edit) (set! params (d-GetUserInputWithSnippets (_ "Blank Page") (_ "Give text to appear on blank page, if any ") data)) (if params (set! params (car params)))) ((delete) (set! params #f) (d-DirectiveDelete-movementcontrol tag)) (else (d-InfoDialog (_ "Cancelled")))))) (if params (begin ;;; (d-DirectivePut-movementcontrol-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_TAGEDIT)) (d-DirectivePut-movementcontrol-data tag params) (d-DirectivePut-movementcontrol-display tag params) (d-DirectivePut-movementcontrol-prefix tag (string-append "\n\\pageBreak \\markup \\with-url #'\"scheme:(d-BlankPage)\"{" params "} \\pageBreak\n")))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/PrintLayout0000644000000000000000000000013213135434150026354 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PrintLayout/0000755000175000017500000000000013135434150030302 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PrintLayout/PaxHeaders.19168/Indent.sc0000644000000000000000000000013213135434035030203 xustar0030 mtime=1500919837.993315139 30 atime=1500919929.289981806 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PrintLayout/Indent.scm0000644000175000017500000000136413135434035032235 0ustar00jjbenhamjjbenham00000000000000;;;;;; Indent (let ((tag "Indent")(amount "0.0") (current "0.0")(thematch #f)) (set! current (d-DirectiveGet-layout-data tag)) (if (not current) (set! current "15.0")) (set! amount (d-GetUserInput (_ "Choose indent for Current Movement") (_ "Give indent or Cancel to unset movement indent") current)) (if (and amount (string->number amount)) (begin (d-DirectivePut-layout-data tag amount) (d-DirectivePut-layout-postfix tag (string-append "indent = " amount "\n")) (d-DirectivePut-layout-display tag (string-append (_ "Indent= ") amount))) (begin (d-DirectiveDelete-layout tag) (if (not Indent::params) (d-WarningDialog (_ "Movement indent dropped. Score indent will be used for this movement"))))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PrintLayout/PaxHeaders.19168/RaggedRig0000644000000000000000000000013213135434035030211 xustar0030 mtime=1500919837.993315139 30 atime=1500919929.289981806 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PrintLayout/RaggedRight.scm0000644000175000017500000000057213135434035033203 0ustar00jjbenhamjjbenham00000000000000;;;RaggedRight (let ((tag "RaggedRight")) (if (d-Directive-layout? tag) (d-DirectiveDelete-layout tag) (begin (d-DirectivePut-layout-postfix tag "ragged-right=##f\n") (d-DirectivePut-layout-display tag (_ "Flush Right")) (d-DirectivePut-layout-override tag DENEMO_OVERRIDE_AFFIX))) (d-SetSaved #f))denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PrintLayout/PaxHeaders.19168/Indent.xm0000644000000000000000000000013213135434035030222 xustar0030 mtime=1500919837.993315139 30 atime=1500919929.289981806 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PrintLayout/Indent.xml0000644000175000017500000000055613135434035032255 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Indent <_label>Indent <_tooltip>Alter the indent of the opening system for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PrintLayout/PaxHeaders.19168/RaggedRig0000644000000000000000000000013213135434035030211 xustar0030 mtime=1500919837.993315139 30 atime=1500919929.299981805 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PrintLayout/RaggedRight.xml0000644000175000017500000000073513135434035033222 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RaggedRight Indent <_label>Ragged Right (On/Off) <_tooltip>If the current movement has only one system it will be stretched to the right margin. Run the command again to turn this off. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/HideBarlines.scm0000644000000000000000000000013213135434035027176 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.303315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/HideBarlines.scm0000644000175000017500000000047113135434035031051 0ustar00jjbenhamjjbenham00000000000000;;HideBarlines (if (d-Directive-score? "HideBarlines") (d-DirectiveDelete-score "HideBarlines") (begin (d-SetSaved #f) (d-DirectivePut-score-postfix "HideBarlines" "\\override Score.BarLine #'stencil = ##f") (d-DirectivePut-score-display "HideBarlines" (_ "Hide Barlines")))) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/TransposeMovementPrin0000644000000000000000000000013213135434035030406 xustar0030 mtime=1500919837.993315139 30 atime=1500919929.303315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/TransposeMovementPrint.xml0000644000175000017500000000066413135434035033250 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TransposeMovementPrint HideMovement <_label>Transpose on Print <_tooltip>The current movement will be printed transposed by the interval given. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/MovementPageBreak.scm0000644000000000000000000000013213135434035030201 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.303315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/MovementPageBreak.scm0000644000175000017500000000225513135434035032056 0ustar00jjbenhamjjbenham00000000000000;;; MovementPageBreak (let ((tag "MovementPageBreak") (params MovementPageBreak::params) (Removed (_ "Page Break Removed before Movement Title")) (Inserted (_ "Page Break Inserted before Movement Title")) (TitledPiece "TitledPiece")) (define (put-break) (d-DirectivePut-movementcontrol-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_TAGEDIT)) (d-DirectivePut-movementcontrol-display tag "Page Break before Movement") (d-DirectivePut-movementcontrol-prefix tag "\n\\pageBreak\n") (SetDirectiveConditional #f (cons "movementcontrol" tag)) (TimedNotice Inserted) (d-DirectivePrioritizeTag-movementcontrol tag)) (if (d-Directive-movementcontrol? tag) (let ((choice (RadioBoxMenu (cons (_ "Make Conditional") 'conditional) (cons (_ "Delete Page Break") 'delete)))) (if (eq? choice 'delete) (begin (TimedNotice Removed) (d-DirectiveDelete-movementcontrol tag)) (SetDirectiveConditional #f (cons "movementcontrol" tag)))) (put-break)) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/TransposeMovementPrin0000644000000000000000000000013213135434035030406 xustar0030 mtime=1500919837.993315139 30 atime=1500919929.323315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/TransposeMovementPrint.scm0000644000175000017500000000234013135434035033223 0ustar00jjbenhamjjbenham00000000000000;;;; TransposeMovementPrint (define-once Transpose::Interval "c ees") (let ((text #f) (tag "TransposeOnPrint")) (if (and TransposeScorePrint::params (not (equal? TransposeScorePrint::params "edit"))) (set! Transpose::Interval TransposeScorePrint::params) (set! Transpose::Interval (d-GetUserInput (_ "Set Transpose Interval") (_ "Give Interval to transpose by as two note names, for example \"c g\" means transpose 5th up. Note names are in Dutch!!! a,b,c ... are the same but \"es\" = flat, so e.g. bes means b-flat \"is\" = sharp so e.g fis means f-sharp Use commas for octave(s) down, single-quotes for octave(s) up e.g. c c' means octave up. You do not have to start with c e.g. d e means a tone higher. ") Transpose::Interval))) (if Transpose::Interval (begin (d-DirectivePut-movementcontrol-prefix tag (string-append "\\transpose " Transpose::Interval " ")) (set! text (string-append "Print transposed: " Transpose::Interval " ")) (d-DirectivePut-movementcontrol-display tag text) (d-DirectivePut-movementcontrol-override tag DENEMO_OVERRIDE_AFFIX) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/HideEmptyStaffs.scm0000644000000000000000000000013213135434035027704 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.323315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/HideEmptyStaffs.scm0000644000175000017500000000063013135434035031554 0ustar00jjbenhamjjbenham00000000000000 ;;;;;;;;;;;;;;;Toggle HideEmptyStaffs (let ((tag "HideEmptyStaffs")) (if (d-Directive-layout? tag) (d-DirectiveDelete-layout tag) (begin (d-DirectivePut-layout-postfix tag " \\context { \\Staff \\RemoveEmptyStaves } ") (d-DirectivePut-layout-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-layout-display tag (_ "Empty Systems Hidden")))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/MovementPageBreak.xml0000644000000000000000000000013213135434035030217 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.323315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/MovementPageBreak.xml0000644000175000017500000000055713135434035032077 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementPageBreak <_label>Page Break Before <_tooltip>Prints this movement starting on a new page denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/Custos.xml0000644000000000000000000000013213135434035026143 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.323315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/Custos.xml0000644000175000017500000000070413135434035030015 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementPageBreak Custos <_label>Custos (On/Off) <_tooltip>Prints a custos at the end of each line for the current movement. Repeat command to turn custos off. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/HideMovement.xml0000644000000000000000000000013213135434035027247 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.323315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/HideMovement.xml0000644000175000017500000000064013135434035031120 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HideMovement <_label>(Print) Hide/Un-hide Movement <_tooltip>Stops the current movement from being typeset. At least one movement must be typeset. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/BlankPage.xml0000644000000000000000000000013213135434035026507 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.333315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/BlankPage.xml0000644000175000017500000000065313135434035030364 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BlankPage MovementPageBreak <_label>Blank Page Before <_tooltip>Inserts a blank page (with optional text) before the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/PolymetricStaffs.xml0000644000000000000000000000013213135434035030161 xustar0030 mtime=1500919837.993315139 30 atime=1500919929.333315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PolymetricStaffs.xml0000644000175000017500000000072313135434035032034 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PolymetricStaffs HideEmptyStaffs <_label>Polymetric Staffs (Off/On) <_tooltip>Turns on/off independent time signatures and barline on the staffs. Use for polymetric notation. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/PolymetricStaffs.scm0000644000000000000000000000013213135434035030143 xustar0030 mtime=1500919837.993315139 30 atime=1500919929.333315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PolymetricStaffs.scm0000644000175000017500000000162313135434035032016 0ustar00jjbenhamjjbenham00000000000000;;;PolymetricStaffs (let ((tag "PolymetricStaffs")) (if (d-Directive-layout? tag) (begin (d-DirectiveDelete-layout tag) (d-WarningDialog (_ "Polymetric Staffs will no longer typeset"))) (begin (d-DirectivePut-layout-postfix tag "\\context { \\Score \\remove \"Timing_translator\" \\remove \"Default_bar_line_engraver\" \\remove \"Repeat_acknowledge_engraver\" \\remove \"Volta_engraver\" } \\context{ \\Staff \\consists \"Timing_translator\" \\consists \"Default_bar_line_engraver\" \\consists \"Repeat_acknowledge_engraver\" \\consists \"Volta_engraver\" }") (d-WarningDialog (_ "Staffs can have differing time signatures"))))) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/ReduceSystemSpacing.x0000644000000000000000000000013213135434035030253 xustar0030 mtime=1500919837.993315139 30 atime=1500919929.333315139 30 ctime=1500919912.979981805 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/ReduceSystemSpacing.xml0000644000175000017500000000072413135434035032460 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NormalBeamEndings ReduceSystemSpacing <_label>Reduce Space Between Systems (On/Off) <_tooltip>Reduces the gap between the systems of staffs on a page for the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/PaxHeaders.19168/MovementBeamingRules.0000644000000000000000000000013213135434035030232 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.343315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Typesetter/MovementBeamingRules.xml0000644000175000017500000000142713135434035032630 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementBeamingRules <_label>Beaming Rules <_tooltip>Add/Replace rules to be used for beaming in the current movement. With no selection gets the beat for beams to be divided for the prevailing time signature at the cursor. If a there is a selection this will be used as the set of rules. In this case indicate the beaming desired using the manual beam commands [ and ], giving all the beaming rules wanted using several measures if needed (no other rules are used). Repeat with different selections to add further rules. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/DuplicateOrMergeMovements.xml0000644000000000000000000000013213135434035027604 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.343315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/DuplicateOrMergeMovements.xml0000644000175000017500000000072013135434035031454 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DuplicateOrMergeMovements DeleteMovement <_label>Duplicate or Merge <_tooltip>Offers choice to duplicate the current movement or merge this movement with the previous one. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/CheckForIncompleteMeasures.xml0000644000000000000000000000013213135434035027724 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.343315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CheckForIncompleteMeasures.xml0000644000175000017500000000114113135434035031572 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GoToEmptyMeasure CheckForIncompleteMeasures <_label>Check for Irregular Measures <_tooltip>Checks each Denemo measure in the current movement for complete number of beats. Unless you explicitly set otherwise, on typesetting the notes will be re-distributed to the correct measures, which can lead to strange effects. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/EvenOutStaffLengths.scm0000644000000000000000000000013213135434035026373 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.343315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/EvenOutStaffLengths.scm0000644000175000017500000000132413135434035030244 0ustar00jjbenhamjjbenham00000000000000;;EvenOutStaffLengths (d-PushPosition) (d-GoToPosition #f 1 1 1) (let ((maxmeasures (d-GetMeasuresInStaff)) (uneven #f)) (let loop () (define measures (d-GetMeasuresInStaff)) (if (not (= maxmeasures measures)) (begin (set! uneven measures) (if (> measures maxmeasures) (set! maxmeasures measures)))) (if (d-MoveToStaffDown) (loop))) (d-GoToPosition #f 1 1 1) (if uneven (begin (let loop () (define needed (- maxmeasures (d-GetMeasuresInStaff))) (let addloop ((num needed)) (if (positive? num) (begin (d-MoveToEnd) (d-SetSaved #f) (d-InsertMeasureAfter) (addloop (- num 1))))) (if (d-MoveToStaffDown) (loop)))))) (d-PopPosition) ;;;;;; denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/SplitMovementAtCursor.xml0000644000000000000000000000013213135434035027004 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.343315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/SplitMovementAtCursor.xml0000644000175000017500000000100213135434035030646 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SplitMovementAtCursor DuplicateOrMergeMovements <_label>Split Movement <_tooltip>Splits the movement at the cursor. Place the cursor after any time signature or key signature change that applies to the split-off movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/CheckTimeSignatures.scm0000644000000000000000000000013213135434035026376 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.353315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CheckTimeSignatures.scm0000644000175000017500000000536713135434035030262 0ustar00jjbenhamjjbenham00000000000000;;;CheckTimeSignatures (define-once CheckScore::ignore 0) (define CheckTimeSignatures::return #f) (define-once CheckScore::error-position #f) (let () (define position (GetPosition)) (define (check-down timesig) (define result #f) (d-PushPosition) (disp "check-down") (if (d-MoveToStaffDown) (begin (while (d-NextObjectInMeasure)) (if (not (equal? timesig (d-GetPrevailingTimesig))) (if (positive? CheckScore::ignore) (set! CheckScore::ignore (1- CheckScore::ignore)) (begin (set! result (string-append (_ "Time Signature does not match ") timesig " : " (d-GetPrevailingTimesig))) (set! CheckScore::error-position (GetPosition))))))) (d-PopPosition) (disp "returning " result "\n") result) (while (d-MoveToStaffUp)) (if (not (d-Directive-layout? "PolymetricStaffs")) (let outer-loop ((first #t)) (d-MoveToBeginning) (let measure () (define result #f) (while (and (not result) (d-NextObjectInMeasure)) (if (and (Timesignature?) (not (zero? (d-GetStartTick)))) (if (positive? CheckScore::ignore) (set! CheckScore::ignore (1- CheckScore::ignore)) (begin (set! result #t) (set! CheckScore::error-position (GetPosition)) (set! CheckTimeSignatures::return (_ "Time Signature not at start of measure")))))) (if (not result) (let ((timesig (d-GetPrevailingTimesig))) (begin (set! result (check-down timesig)) (if result (set! CheckTimeSignatures::return result) (if (d-MoveToMeasureRight) (measure))))))) (if (and (not CheckTimeSignatures::return) (d-MoveToStaffDown)) (outer-loop #f)))) (if (not CheckTimeSignatures::params) ;;; interactive when #f (begin (if CheckTimeSignatures::return (begin (apply d-GoToPosition CheckScore::error-position) (d-WarningDialog CheckTimeSignatures::return)) (d-InfoDialog (if (d-Directive-layout? "PolymetricStaffs") (_ "Polymetric Staffs not checked") (_ "No problem detected with time signature changes"))))))) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/MvntComment.xml0000644000000000000000000000013213135434035024762 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.353315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/MvntComment.xml0000644000175000017500000000060213135434035026631 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SwapMovements MvntComment <_label>Comment <_tooltip>Stores textual comments for this movement denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/SplitMovementAtCursor.scm0000644000000000000000000000013213135434035026766 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.353315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/SplitMovementAtCursor.scm0000644000175000017500000000100513135434035030633 0ustar00jjbenhamjjbenham00000000000000;;;SplitMovementAtCursor (if (d-GetSaved) (let ((timesig (d-GetPrevailingTimesigAsLilyPond)) (keysig (d-GetPrevailingKeysigAsLilyPond))) (while (d-MoveToStaffUp)) (d-SetMark) (d-GoToEnd) ;;;extends selection (while (d-StaffDown)) ;;;extends selection (d-Cut) (d-InsertMovementAfter) (while (d-MoveToStaffUp)) (d-InitialTimeSig timesig) (d-InitialKey keysig) (d-Paste)) (d-WarningDialog (_ "Score is not saved")))denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/ReBar.scm0000644000000000000000000000013213135434035023470 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.376648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/ReBar.scm0000644000175000017500000005611513135434035025351 0ustar00jjbenhamjjbenham00000000000000;Rebar ;Fixed for tuplets giving inexact numbers of ticks ;Rebar-repartitions the measures, searches for under/overfull, pad with rests, by DW, trivial mods by RTS ;FIXME-currently no support for nested tuplets ;notes: (d-GetType) returns CHORD TIMESIG LILYDIRECTIVE TUPOPEN TUPCLOSE (tuplets) Appending ;Variable descriptions: ;SplitAll set to #f allows user to decide whether to split across barlines; set to #t, splits always. ;TupletScaleFactor: e.g. if we're inside a triplet, scale durations by 2/3 ;IgnoreDurationError set if a measure is marked as having an allowable duration discrepancy, marking is done with a directive of tag "!" (define ReBar::return #f) (define-once CheckScore::error-position #f) (let ( (Input1 #f) (Input2 #f) (InitialTimeSig 1) (ScanAllStaffs #f) (TupletScaleFactor 1) (SplitAll #f)(IgnoreDurationError #f)) ;MakeBlankRestDuration: makes a tied rest conglomerate of total duration Duration. ;IsConsecutive is set to #t when it recurses in order to make it add a dot instead of adding the next TryDuration. Externally, call it always set to #f ;externally, call with TryDuration=0 to start with trying out whole notes. Internally it will crank this up as it recurses. (define (MakeRest Duration TryDuration Type) ;set Type to "Blank" to get blanks. (begin (if (not (equal? TupletScaleFactor 1)) (begin (d-InfoDialog (_ "There are unclosed tuplets in this bar.\n Please fix - see CheckTuplets command.")) #f ;terminate ) ) (if (and (> Duration 0) (equal? (remainder 256 (denominator Duration)) 0) ) ;check for valid Duration (begin ;when Duration is a valid duration... (if (<= (expt 1/2 TryDuration) Duration) ;see if we should add note of length TryDuration (begin (InsertRest TryDuration Type) (set! Duration (- Duration (* (expt 1/2 TryDuration) TupletScaleFactor)));now modify true Duration by what we just added. ) ) (if (<= TryDuration 8) (MakeRest Duration (+ 1 TryDuration) Type) ) ) #f ) );let ) (define (InsertRest Duration Type) ;inserts a rest of duration TryDuration, and makes it tied. denom of Duration must be power of 2. (if (equal? Type "Blank") (d-InsertBlankWholeNote) (d-InsertWholeRest) ) ;Insert correct type (if (equal? (d-GetType) "Appending") (d-MoveCursorLeft)) ;now we're on it. (Don't need to go left if we're not appending) (while (> Duration 0) ;we keep diminishing until we got it. (begin (d-Diminish) (set! Duration (- Duration 1)) ) ) ;(d-MoveCursorRight) ) ;SplitIntoNext:splits a measure by inserting a barline, ending in next bar (define (SplitIntoNext) ;custom version of SplitIntoNext used here (begin (d-SetMark) (if (d-MeasureRight) (begin (d-CursorLeft) (d-Cut) (d-CursorRight) (d-InsertMeasureBefore) ) (begin (d-GoToEnd) (d-Cut) (d-AppendMeasure) (d-MoveToMeasureRight) ) ) (d-Paste) ;now, position the cursor at begin of new bar: (d-MoveToMeasureLeft) (d-MoveToMeasureRight) (d-UnsetMark) )) (define (CustomDeleteBarline) (let ((type (d-GetType)) );don't try it if not at the end of bar (if (or (equal? type "Appending" ) (equal? type "None" ) ) (begin (d-SetMark) (if (d-MoveToMeasureRight) ;;we don't want to delete next bar if there isn't one! (begin (d-MeasureLeft) ;; Now we're at the beginning of that measure (d-Cut) (d-DeleteMeasure) (d-Paste) ) (d-UnsetMark) ;this is to clear the mark if we set it, but were at end of staff ))))) ;MakeDuration: makes a tied note conglomerate of total duration Duration. ;set Side to "Left" to have the shorter component durations on left, "Right" for other way. ;note that using "Left will leave the rightmost note tied since we will tie into next bar. ;IsConsecutive is set to #t when it recurses in order to make it add a dot instead of adding the next TryDuration. Externally, call it always set to #f ;externally, call with TryDuration=0 to start with trying out whole notes. Internally it will crank this up as it recurses. (define (MakeDuration Duration Side TryDuration IsConsecutive) (let ((EffectiveDuration 0)) (set! EffectiveDuration (/ Duration TupletScaleFactor)) ;if inside a tuplet, need to ;account for that by extending the effective duration proportionately. (if (and (> Duration 0) (equal? (remainder 256 (denominator EffectiveDuration)) 0) ) ;check for valid Duration (begin ;when EffectiveDuration is a valid duration... (if (<= (expt 1/2 TryDuration) EffectiveDuration) ;see if we should add note of length TryDuration (begin (if IsConsecutive (begin (if (equal? Side "Right") (d-MoveCursorLeft));b/c when adding on the Right, we moved the cursor Right already (d-AddDot) ;if previous duration was there, just add a dot. (if (equal? Side "Right") (d-MoveCursorRight));returning it to its former position ) (begin ;if previous duration wasn't... (set! IsConsecutive #t) ;so that next smaller duration will know to just add a dot if it's there (InsertOn Side TryDuration) ) ) (set! Duration (- Duration (* (expt 1/2 TryDuration) TupletScaleFactor)));now modify true Duration by what we just added. (if (and (equal? Duration 0) (equal? Side "Right")) ;rightmost note entered on Side=Right, don't leave tied. (begin (d-MoveCursorLeft) (d-ToggleTie) (d-MoveCursorRight) ) ) ) (set! IsConsecutive #f) ;when we don't add this TryDuration, set this to #f. ) (if (<= TryDuration 8) (MakeDuration Duration Side (+ 1 TryDuration) IsConsecutive) ) ) #f ) );let ) (define (InsertOn Side Duration) ;inserts a note of duration TryDuration, and makes it tied. denom of Duration must be power of 2. (d-Paste) ;paste, but then must get on top of the notes just pasted... (d-MoveCursorLeft) ;now we're on it. (d-Change0) ;start with whole, (while (> Duration 0) ;and keep diminishing until we got it. (begin (d-Diminish) (set! Duration (- Duration 1)) ) ) (d-ToggleTie) (if (equal? Side "Right") (d-MoveCursorRight) ) ) ;Now here's the function, it returns #f if there is a problem in a measure in the current staff that is not fixed else returns true (define (AuditThisStaff TimeSig Pad? Blank? MergeAndSplit?) ;;set Pad? to #t if we should add blanks to underfull bars. (let ( (Counter 0) (Excess 0) (LeftOver 0)(Inquiry #f)) ;Counter keeps track of the duration of the notes of the bar as we proceed chord by chord. ;Debugger can be useful for bug-fixing (define (Debugger) (begin (d-RefreshDisplay) (if (not (d-GetUserInput "Debug Message" (string-append "Counter:" (number->string Counter) "\nTupletScaleFactor:" (number->string TupletScaleFactor) "\nTimeSig:" (number->string TimeSig) ) "Hit OK when ready" ) ) (#f) ) )) (define (GetTimeSigChange) (set! TimeSig (GetPrevailingTimesig #t)) );GetTimeSig (define (NextBreakInMeasure) ;move to next object in measure, skipping objects of no duration, return #t if we found something with nonzero duration (let ((GNB 0)(Moved #f)) (while (and (d-NextObjectInMeasure) (set! Moved #t) ;make sure we know we moved (equal? (GetNoteBeat) 0) ;do this so we don't run GetNoteBeat twice on same object (it could mess up counts?) ) ) (and Moved (not (equal? (GetNoteBeat) 0))) ;return #t if we Moved and found something with nonzero duration ) ) (define (GetNoteBeat ) ;get duration of a note as a fraction of a whole note, e.g. dotted quarter = 3/8 (let ((note 0) (len 0 ) (DotIndex 0) (NumDots 0) (NoteBeat 0)) (begin (if (equal? (d-GetType) "TIMESIG") (if (equal? Counter 0) ;encountering a TimeSig change mid-measure requires user intervention (GetTimeSigChange) (begin (d-InfoDialog "This time signature change is in the middle of the bar.\n Please run the command again after you've fixed this.") (set! NoteBeat #f) ;this should halt the script after it's returned. ) ) ) (if (equal? (d-GetType) "LILYDIRECTIVE") (begin (set! NoteBeat (/ (d-GetDurationInTicks) 1536)) (set! IgnoreDurationError (d-Directive-standalone? "!"))) ;;This tag tells Denemo to ignore duration errors in this measure. ) (if (equal? (d-GetType) "CHORD" ) (if (not (d-ToggleGrace "query=")) ;if it's not a grace, continue; otherwise, leave it as 0. (set! NoteBeat (/ (d-GetDurationInTicks) 1536)) ) ) NoteBeat ;return NoteBeat ) ) );GetNoteBeat (define (R-StartTuplet TupletFactor) ;note: doesn't modify TupletScaleFactor. (begin (d-StartTriplet) (if (boolean? (d-GetTuplet)) (d-MoveCursorLeft)) (d-SetTuplet (number->string TupletFactor ) ) (d-MoveCursorRight) ) ) (define (LoopThroughBar) ;stops once we've met or surpassed the measure size, or run out of new notes. (if (and (< Counter TimeSig) (d-NextObjectInMeasure) ) ;as long as the Counter is less than a full bar, and there's more stuff to process... (begin (set! Counter (+ Counter (GetNoteBeat)) ) ;we increment the Counter, (LoopThroughBar) ;and keep going until done with the bar. ) ) (set! CheckScore::error-position (GetPosition)) ) ;here's the actual algorithm (set! IgnoreDurationError #f) (while (d-PrevObjectInMeasure)) ;go to beginning of measure (set! Counter (+ Counter (GetNoteBeat)) );read the first note in to get started...NOTE: if GetNoteBeat= #f this will terminate execution. (LoopThroughBar) ;then loop through the rest of the bar until counter equals or overshoots the measure size in TimeSig, ; or the measure's done being processed ;(disp "check Counter " Counter " and time sig " TimeSig "and " IgnoreDurationError " ok") ;;ticks have granularity of 1 so we cannot accept a 1 discrepancy as meaning anything once we have reached a certain number of ticks - how many I am not sure, but try 383, fails with septuplet, try 255 (if (and (None?) (not Pad?)) (set! Counter TimeSig)) (if (= Counter 0) (set! Counter TimeSig));;;allow empty measures (if IgnoreDurationError (begin (set! Counter TimeSig))) (let ((top (numerator Counter)) (bottom (denominator Counter))) ;(disp "We have top " top " bottom " bottom " div " (/ (1+ top) bottom) " ok") (if (and (> top 254) (equal? TimeSig (/ (1+ top) bottom))) (set! Counter (/ (1+ top) bottom)))) ;(disp "Set Counter " Counter "\n") (if (< Counter TimeSig) ;if measure too small, (going back first) (if Pad? ; and the user wants us to pad, (begin (if (not (or (equal? (d-GetType) "None") (equal? (d-GetType) "Appending"))) (d-MoveCursorRight) ) ;Get to end of bar, past last object. (if Blank? (MakeRest (- TimeSig Counter) 0 "Blank") ;fill 'er up (MakeRest (- TimeSig Counter) 0 "" ) ) (if (d-MoveToMeasureRight) (AuditThisStaff TimeSig Pad? Blank? MergeAndSplit?) ;if not done, move on and go from there. #t ;otherwise return true ) ) (if MergeAndSplit? ;if user wants to merge/split, (if (d-MoveToMeasureRight) ;we see if there is a next measure; if so we want to merge the two and redo this measure. (begin (d-MoveCursorLeft) ;move onto the barline (CustomDeleteBarline) ;delete it (AuditThisStaff TimeSig Pad? Blank? MergeAndSplit?);now do the measure again ) #t ;return true if there's no more, we're done with staff. ) ;if NOT supposed to merge/split... (if (d-MoveToMeasureRight) ;see if at end of staff. (begin ;if not at end of staff... (d-MoveToMeasureLeft) #f ;if we're not supposed to pad or merge/split, stop here. This measure had prob's ) #t ;otherwise, staff is good. ))) ;if it wasn't too small... (if (and (not IgnoreDurationError) (equal? Counter TimeSig)) ; and if measure is exactly full now (and not just because we are ignoring the duration error) (if (NextBreakInMeasure) ;see if there's extra stuff that has duration, (if MergeAndSplit? ;if there IS and we're supposed to merge/split... (begin (if (not (= TupletScaleFactor 1)) (d-EndTuplet)) ;if need be, end the tuplet in this bar, then restart it in next (SplitIntoNext) ;cut off extra stuff (ending up in next bar) (if (not (= TupletScaleFactor 1)) (R-StartTuplet TupletScaleFactor)) ;restart the tuplet in following bar if needed (AuditThisStaff TimeSig Pad? Blank? MergeAndSplit?) ; rebar from that point onward. ) #f ;if user doesn't want us to split,return false. ; this bar is over-full, user will fix. ) (begin ;if there's NOT extra stuff in this measure... (if (not (None?)) (d-MoveCursorRight)) (if (not (= TupletScaleFactor 1)) (d-EndTuplet)) ;if need be, end the tuplet in this bar, then restart it in next (if (d-MoveToMeasureRight) ;if there's another measure... (begin (if (not (= TupletScaleFactor 1)) (R-StartTuplet TupletScaleFactor)) ;restart the tuplet in following bar if needed (AuditThisStaff TimeSig Pad? Blank? MergeAndSplit?);having gone on to next measure, rebar again. ) #t ;make sure we return true-done with staff. ) ) ) ;;;measure not exact or we are ignoring the duration error (if (and MergeAndSplit? (> Counter TimeSig)) ; if the measure is overfull, see if want to split. (begin (set! Excess (- Counter TimeSig)) ;this is how much of that note to put in next measure, (if (equal? (remainder 256 (denominator (/ Excess TupletScaleFactor))) 0) ;if we don't have to start a tuplet, we're good. (begin ;query the user: should we split the note, or let him/her do it? (if (not SplitAll) (set! Inquiry (d-GetOption (string-append (_ "Split This Note") stop (_ "Split All") stop (_ "Stop Here") stop))) ) ;need to stop if we hit cancel (if (equal? Inquiry (_ "Split All")) (set! SplitAll #t)) (if (or SplitAll (equal? Inquiry (_ "Split This Note")) (equal? Inquiry (_ "Split All"))) (begin ;we're going to split across the barline and march on. (set! LeftOver (- (GetNoteBeat) Excess)) ;duration that stays in left measure. (if (d-NextObjectInMeasure) ;if there're more stuff after the current stuff, chop it off to deal with it next bar (begin (SplitIntoNext) ;now go back onto the note that should be split by barline. (d-MoveToMeasureLeft) (d-MoveToMeasureRight) (d-MoveCursorLeft) ;now on barline. (d-MoveCursorLeft) ;now we're back on the last note of that bar. ) ) ;now we gotta get a copy of the note to split. (d-SetMark) (d-Cut) ;now the right note's cut onto the clipboard... (MakeDuration LeftOver "Left" 0 #f) ;syntax to add custom duration to each measure, shortest durations to left. (if (not (= TupletScaleFactor 1)) ;end the tuplets in this bar if need be, restart in next... (begin (d-MoveCursorRight) (d-EndTuplet)) ) (if (not (d-MoveToMeasureRight)) (d-InsertMeasureAfter)) ;need to add a new measure if it ain't there. (if (not (= TupletScaleFactor 1)) ;start the tuplets in next bar if need be. (R-StartTuplet TupletScaleFactor) ) (MakeDuration Excess "Right" 0 #f) ;add with shortest durations on right (AuditThisStaff TimeSig Pad? Blank? MergeAndSplit?) ;continue ) #f ;if user cancelled or Stopped Here, return false ) ) (begin (d-InfoDialog (_ "This measure's discrepancy requires a tuplet.\nPlease adjust manually and run this script again.")) #f ;return false ) ) ) ;;; measure is not exact and merging is not asked for IgnoreDurationError ;just return #f as they don't want to Merge/Split, unless it is to be ignored ) ) ) ) ) ;define AuditThisStaff ;now actually do it: (if ReBar::params (begin (d-MoveToBeginning) (set! ReBar::return (AuditThisStaff (GetPrevailingTimesig #t) #f #f #f)) ) (let ((Pad #f) (Blank #f)(MergeAndSplit #f)) (set! Input1 (d-GetOption (string-append (_ "Search for under/overfull bars") stop (_ "Pad underfull bars with rests") stop (_ "Pad underfull bars with blank rests") stop (_ "Rebar-Merge underfull, split overfull bars") stop))) (set! Blank (equal? Input1 (_ "Pad underfull bars with blank rests"))) (set! Pad (or (equal? Input1 (_ "Pad underfull bars with rests"))(equal? Input1 (_ "Pad underfull bars with blank rests") ))) (set! MergeAndSplit (equal? Input1 (_ "Rebar-Merge underfull, split overfull bars"))) (if Input1 (set! Input2 (d-GetOption (string-append (_ "Entire Staff") stop (_ "This Point Onwards") stop (_ "Entire Movement") stop ))) ) (if (and Input1 Input2) ;don't go if user cancelled (let ((position #f)(spillover (d-GetBooleanPref "spillover"))) (d-SetPrefs "0") (if (equal? Input2 (_ "Entire Movement")) (set! ScanAllStaffs #t)) (set! position (GetPosition)) ;let's try to return cursor to here when done. (if ScanAllStaffs (while (d-MoveToStaffUp))) ;Start at top staff, top voice (if (not (equal? Input2 (_ "This Point Onwards"))) (d-MoveToBeginning)) (set! InitialTimeSig (GetPrevailingTimesig #t)) (let ((AllOK #t)) (if (not (AuditThisStaff InitialTimeSig Pad Blank MergeAndSplit)) (set! AllOK #f)) (while (and ScanAllStaffs AllOK (or (d-MoveToVoiceDown) (d-MoveToStaffDown))) ;RebarAll if appropriate. (begin (d-MoveToBeginning) (if (not (AuditThisStaff InitialTimeSig Pad Blank MergeAndSplit) ) (set! AllOK #f)) ;if AuditThisStaff returns #f, need to stop. ) ) (set! ReBar::return AllOK) (if AllOK (apply d-GoToPosition position) ;end where we began, unless there were problems. )) (if spillover (d-SetPrefs "1")) ))))) ;let (if ReBar::params (begin ;; non-interactive (if ReBar::return (set! ReBar::return #f) (set! ReBar::return (_ "Problem with measure length"))))) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/Titles0000644000000000000000000000013213135434150023156 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/0000755000175000017500000000000013135434150025104 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/PaxHeaders.19168/PrependPostscript.scm0000644000000000000000000000013213135434035027431 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.396648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/PrependPostscript.scm0000644000175000017500000001272013135434035031304 0ustar00jjbenhamjjbenham00000000000000;;PrependPostscript (let ((tag "PrependPostscript")(filename #f)(width #f)(space-below #f)(space-left #f)(params PrependPostscript::params) (warning (_ "Wait for your vector graphics editor to start. It will open an SVG file of the same name, if available, but be sure to save as encapsulated postscript (eps). You will need to refresh the print view to see your changes. When saving your eps it is good to save as SVG file format as well, as this will give better editing later. Quit your graphics editor before quitting this dialog to return to work in Denemo."))) (define (edit) (define choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Advanced") 'advanced))) (case choice ((delete) (d-DirectiveDelete-movementcontrol tag)(set! params 'finished)) ((edit) (if (RadioBoxMenu (cons (string-append (_ "Edit the file ") filename) #t) (cons (_ "Edit width and position ") #f)) (d-EditGraphics filename #f #f) (set-params))) ((advanced) (d-DirectiveTextEdit-movementcontrol tag)))) (define (set-params) (set! width (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give width required:") width)) (set! space-below (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give space below required:") space-below)) (set! space-left (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give space to the left required:") space-left))) (define (scale val) (number->string (/ (* 16 (string->number val)) (string->number (d-ScoreProperties "query=fontsize"))))) (if (list? params) (begin (set! filename (list-ref params 0)) (set! width (list-ref params 1)) (set! space-below (list-ref params 2)) (set! space-left (list-ref params 3))) (if (d-Directive-movementcontrol? tag) (let ((data (eval-string (d-DirectiveGet-movementcontrol-data tag)))) (set! filename (list-ref data 0)) (set! width (list-ref data 1)) (set! space-below (list-ref data 2)) (set! space-left (list-ref data 3))))) (if (not filename) (let ((name (d-GetFilename))) (if name (set! filename (string-append (d-PathFromFilename name) "//" "drawing.eps")) (set! filename (string-append DENEMO_HOME_DIR "//" "drawing.eps"))) (set! width "100") (set! space-below "14") (set! space-left "0"))) (if (not (list? params)) (cond ((equal? params "edit") (begin (edit))) ((equal? params 'refresh)) ((equal? params 'finished)) (else (if (RadioBoxMenu (cons (_ "Start From Template") #t) (cons (_ "Choose File") #f)) (begin (set! filename (d-EditGraphics #f #f)) (if filename (begin (set! filename (string-append filename ".eps")) (d-WarningDialog warning)))) (begin (set! filename (d-ChooseFile (_ "Encapsulated Postscript File") (d-PathFromFilename filename) (list "*.eps" "*.EPS"))) (if filename (begin (set! width (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give width required:") width)) (set! space-below (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give space below required:") space-below)) (set! space-left (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give space to the left required:") space-left)) (if (RadioBoxMenu (cons (string-append (_ "Edit the file ") filename) #t) (cons (_ "Use the file unedited") #f)) (begin (d-EditGraphics filename #f) (d-WarningDialog warning)))))))))) (if (not (eq? params 'finished)) (if (and filename width space-below space-left) (begin (if (d-FileExists filename) (begin (d-DirectivePut-movementcontrol-override tag DENEMO_OVERRIDE_DYNAMIC) ;;call with 'refresh to re-scale for score size change (d-DirectivePut-movementcontrol-prefix tag (string-append "\\markup {\\hspace #" (scale space-left) " \\with-url #'\"scheme:(d-PrependPostscript \\\"edit\\\")\" \\epsfile #X #" (scale width) " #\"" (scheme-escape filename) "\" \\vspace #" (scale space-below) " }")) (d-DirectivePut-movementcontrol-data tag (string-append "(list \"" (scheme-escape filename) "\" \"" width "\" \"" space-below "\" \"" space-left "\")"))) (begin (d-WarningDialog (string-append (_ "The file ") filename (_ "does not exist\nPerhaps you saved to a different directory?")))))) (begin (if (equal? (_ "y") (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Delete prepended postscript?") (_ "n"))) (begin (d-DirectiveDelete-movementcontrol tag) (d-InfoDialog (_ "Prepended Postscript Deleted")))))))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/PaxHeaders.19168/MarkupAtEnd.xml0000644000000000000000000000013213135434035026132 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.409981805 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/MarkupAtEnd.xml0000644000175000017500000000065513135434035030011 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementPageBreak MarkupAtEnd <_label>Text after Movement <_tooltip>Inserts the given Lilypond markup syntax after the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/PaxHeaders.19168/BookTitles0000644000000000000000000000013213135434150025235 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/0000755000175000017500000000000013135434150027163 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/PaxHeaders.19168/Chapter.scm0000644000000000000000000000013213135434035027406 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.409981805 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/Chapter.scm0000644000175000017500000000017313135434035031260 0ustar00jjbenhamjjbenham00000000000000;;;Chapter (MovementBookTitles::Do "Chapter" "chapter" "My Heading" (_ "Give heading or blank out to delete: ")) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/PaxHeaders.19168/Section.xml0000644000000000000000000000013213135434035027442 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.433315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/Section.xml0000644000175000017500000000052413135434035031314 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Section <_label>Sub-Title <_tooltip>Prints a subtitle for the Movement denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/PaxHeaders.19168/Section.scm0000644000000000000000000000013213135434035027424 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.433315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/Section.scm0000644000175000017500000000022013135434035031267 0ustar00jjbenhamjjbenham00000000000000;;;Section (MovementBookTitles::Do "Section" "section" "My Sub-title" (_ "Give name for movement sub-title or blank out to delete: ")) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/PaxHeaders.19168/Chapter.xml0000644000000000000000000000013213135434035027424 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.433315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/Chapter.xml0000644000175000017500000000052513135434035031277 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Chapter <_label>Heading <_tooltip>Prints a heading the current movement denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/PaxHeaders.19168/TitledPiece.xm0000644000000000000000000000013213135434035030055 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.433315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/TitledPiece.xml0000644000175000017500000000056413135434035032107 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Piece TitledPiece <_label>Title <_tooltip>Prints title for the current movement denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/PaxHeaders.19168/TitledPiece.sc0000644000000000000000000000013213135434035030036 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.433315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/TitledPiece.scm0000644000175000017500000000024513135434035032065 0ustar00jjbenhamjjbenham00000000000000;;;TitledPiece (MovementBookTitles::Do "TitledPiece" "titledPiece" "My Movement Title" (_ "Give title for the movement or blank out to delete: ")) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/PaxHeaders.19168/Piece.scm0000644000000000000000000000013213135434035027045 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.443315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/Piece.scm0000644000175000017500000000024113135434035030713 0ustar00jjbenhamjjbenham00000000000000;;;Piece (MovementBookTitles::Do "Piece" "piece " "My Piece" (_ "Give name for this piece of the current movement or blank out to delete: ")) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/PaxHeaders.19168/init.scm0000644000000000000000000000013213135434035026763 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.443315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/init.scm0000644000175000017500000000202513135434035030633 0ustar00jjbenhamjjbenham00000000000000(define (MovementBookTitles::Do field lilyfield initial help) (define (get-current tag) (let ((value (d-DirectiveGet-movementcontrol-data tag))) (if value value (d-DirectiveGet-movementcontrol-display tag)))) (d-LilyPondInclude "simplified-book-titling.ily") (let ((chapter (get-current field))) (if (not chapter) (set! chapter initial)) (set! chapter (d-GetUserInput initial help chapter)) (if chapter (begin (d-SetSaved #f) (if (string-null? chapter) (d-DirectiveDelete-movementcontrol field) (begin (d-DirectivePut-movementcontrol-data field chapter) (d-DirectivePut-movementcontrol-display field (DenemoAbbreviatedString chapter)) (d-DirectivePut-movementcontrol-override field (logior DENEMO_OVERRIDE_TAGEDIT DENEMO_OVERRIDE_GRAPHIC)) (d-DirectivePut-movementcontrol-prefix field (string-append "\\" lilyfield " \\markup { \\with-url #'\"scheme:(d-" field ")\" " "\"" chapter "\"}\n")))))))) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/PaxHeaders.19168/Piece.xml0000644000000000000000000000013213135434035027063 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.443315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/BookTitles/Piece.xml0000644000175000017500000000052013135434035030731 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Piece <_label>Piece <_tooltip>Prints a piece name for the Movement denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/PaxHeaders.19168/InsertSpaceBeforeMovement0000644000000000000000000000013213135434035030236 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.443315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/InsertSpaceBeforeMovement.xml0000644000175000017500000000062613135434035032712 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertSpaceBeforeMovement PrependPostscript <_label>Space Above <_tooltip>Inserts blank space above the movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/PaxHeaders.19168/AppendPostscript.scm0000644000000000000000000000013213135434035027243 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.443315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/AppendPostscript.scm0000644000175000017500000001235013135434035031115 0ustar00jjbenhamjjbenham00000000000000;;AppendPostscript (let ((tag "AppendPostscript")(filename #f)(width #f)(space-above #f)(space-left #f)(params AppendPostscript::params) (warning (_ "Wait for your vector graphics editor to start. It will open an SVG file of the same name, if available, but be sure to save as encapsulated postscript (eps). You will need to refresh the print view to see your changes. When saving your eps it is good to save as SVG file format as well, as this will give better editing later. Quit your graphics editor before quitting this dialog to return to work in Denemo."))) (define (edit) (define choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Advanced") 'advanced))) (case choice ((delete) (d-DirectiveDelete-movementcontrol tag)(set! params 'finished)) ((edit) (if (RadioBoxMenu (cons (string-append (_ "Edit the file ") filename) #t) (cons (_ "Edit width and position ") #f)) (d-EditGraphics filename #f) (set-params))) ((advanced) (d-DirectiveTextEdit-movementcontrol tag)))) (define (set-params) (set! width (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give width required:") width)) (set! space-above (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give space above required:") space-above)) (set! space-left (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give space to the left required:") space-left))) (define (scale val) (number->string (/ (* 16 (string->number val)) (string->number (d-ScoreProperties "query=fontsize"))))) (if (list? params) (begin (set! filename (list-ref params 0)) (set! width (list-ref params 1)) (set! space-above (list-ref params 2)) (set! space-left (list-ref params 3))) (if (d-Directive-movementcontrol? tag) (let ((data (eval-string (d-DirectiveGet-movementcontrol-data tag)))) (set! filename (list-ref data 0)) (set! width (list-ref data 1)) (set! space-above (list-ref data 2)) (set! space-left (list-ref data 3))))) (if (not filename) (let ((name (d-GetFilename))) (if name (set! filename (string-append (d-PathFromFilename name) "//" "drawing.eps")) (set! filename (string-append DENEMO_HOME_DIR "//" "drawing.eps"))) (set! width "100") (set! space-above "14") (set! space-left "0"))) (if (not (list? params)) (cond ((equal? params "edit") (begin (edit))) ((equal? params 'refresh)) ((equal? params 'finished)) (else (if (RadioBoxMenu (cons (_ "Start From Template") #t) (cons (_ "Choose File") #f)) (begin (set! filename (d-EditGraphics #f #f)) (if filename (begin (set! filename (string-append filename ".eps")) (d-WarningDialog warning)))) (begin (set! filename (d-ChooseFile (_ "Encapsulated Postscript File") (d-PathFromFilename filename) (list "*.eps" "*.EPS"))) (if filename (begin (set-params) (if (RadioBoxMenu (cons (string-append (_ "Edit the file ") filename) #t) (cons (_ "Use the file unedited") #f)) (begin (d-EditGraphics filename #f) (d-WarningDialog warning)))))))))) (if (not (eq? params 'finished)) (if (and filename width space-above space-left) (begin (if (d-FileExists filename) (begin (d-DirectivePut-movementcontrol-override tag DENEMO_OVERRIDE_DYNAMIC) ;;call with 'refresh to re-scale for score size change (d-DirectivePut-movementcontrol-postfix tag (string-append "\\markup { \\hspace #" (scale space-left) " \\vspace #" (scale space-above) " \\with-url #'\"scheme:(d-AppendPostscript \\\"edit\\\")\" \\epsfile #X #" (scale width) " #\"" (scheme-escape filename) "\" }")) (d-DirectivePut-movementcontrol-data tag (string-append "(list \"" (scheme-escape filename) "\" \"" width "\" \"" space-above "\" \"" space-left "\")"))) (begin (d-WarningDialog (string-append (_ "The file ") filename (_ "does not exist\nPerhaps you saved to a different directory?")))))) (begin (if (equal? (_ "y") (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Delete prepended postscript?") (_ "n"))) (begin (d-DirectiveDelete-movementcontrol tag) (d-InfoDialog (_ "Prepended Postscript Deleted")))))))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/PaxHeaders.19168/AppendPostscript.xml0000644000000000000000000000013213135434035027261 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.456648473 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/AppendPostscript.xml0000644000175000017500000000111213135434035031125 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AppendPostscript TaglineLink <_label>Append Encapsulated Postscript <_tooltip>Places text/graphics from an encapsulated postscript file at the end of the current movement. Use this for columns of text or images, fancy titles etc. prepared in other programs which are to appear after the music. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/PaxHeaders.19168/MarkupAtEnd.scm0000644000000000000000000000013213135434035026114 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.456648473 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/MarkupAtEnd.scm0000644000175000017500000000217613135434035027773 0ustar00jjbenhamjjbenham00000000000000;;;MarkupAtEnd (let* ((tag "MarkupAtEnd")(themarkup #f)(data (d-DirectiveGet-movementcontrol-data tag))) (disp "eneter with " data "\n\n") (d-DirectivePut-movementcontrol-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_TAGEDIT)) (d-DirectivePut-movementcontrol-display tag (_ "Markup At End")) (if data (set! data (eval-string data)) (set! data '())) (disp "so data is " data "\n\n") (set! themarkup (assq-ref data 'text)) (if (not themarkup) (set! themarkup "")) (set! themarkup (d-GetUserInputWithSnippets (_ "Markup At End") (_ "Edit markup:") themarkup)) (if themarkup (begin (set! data (string-append "(list (cons 'text \" " (scheme-escape (car themarkup)) "\"))")) (d-DirectivePut-movementcontrol-data tag data) (set! themarkup (cdr themarkup)) (d-DirectivePut-movementcontrol-postfix tag (string-append "\\markup \\column { " themarkup " }")) (d-SetSaved #f)) (d-InfoDialog "Cancelled"))) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/PaxHeaders.19168/InsertSpaceBeforeMovement0000644000000000000000000000013213135434035030236 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.466648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/InsertSpaceBeforeMovement.scm0000644000175000017500000000173113135434035032672 0ustar00jjbenhamjjbenham00000000000000;;InsertSpaceBeforeMovement (let ((tag "InsertSpaceBeforeMovement")(params InsertSpaceBeforeMovement::params)(space #f)) (set! space (d-DirectiveGet-movementcontrol-data tag)) (if params (set! space params)) (if (not space) (set! space "0.5")) (set! space (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give space between title and score:") space)) (if (and space (string->number space)) (begin (d-DirectivePut-movementcontrol-prefix tag (string-append "\\markup {\\vspace #" space " }")) (d-DirectivePut-movementcontrol-data tag space) (d-SetSaved #f)) (let ((confirm (d-GetUserInput (d-DirectiveGet-standalone-display tag) (_ "Delete spacer?") (_ "y")))) (if (equal? confirm (_ "y")) (begin (d-DirectiveDelete-movementcontrol tag) (d-SetSaved #f)) (d-InfoDialog (_ "Cancelled")))))) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/PaxHeaders.19168/PrependPostscript.xml0000644000000000000000000000013213135434035027447 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.466648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/PrependPostscript.xml0000644000175000017500000000112413135434035031316 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PrependPostscript AppendPostscript <_label>Prepend Encapsulated Postscript <_tooltip>Places text/graphics from an encapsulated postscript file at the start of the current movement. Use this for columns of text or images, fancy titles etc. prepared in other programs which are to appear before the music. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/PaxHeaders.19168/SimpleTitles0000644000000000000000000000013213135434150025574 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/0000755000175000017500000000000013135434150027522 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/PaxHeaders.19168/MovementTitl0000644000000000000000000000013213135434035030225 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.466648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/MovementTitles.xml0000644000175000017500000000103513135434035033224 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementTitles MovementComposer <_label>Set Titles <_tooltip>Set titles for this movement. The names of the various titles are just suggestions, any sort of title can be placed in any field. See the manual for the default positioning of each title. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/PaxHeaders.19168/MovementTitl0000644000000000000000000000013213135434035030225 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.489981805 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/MovementTitle.scm0000644000175000017500000000044513135434035033027 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-header? "MovementTitle") (begin (SetHeaderField "subtitle") (d-DirectivePut-header-postfix "SuppressTitleRepeats" "title = ##f\ninstrument = ##f\n") (DenemoPrintAllHeaders) (d-SetSaved #f)) (DenemoSetTitles "MovementTitles" 'title #f)) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/PaxHeaders.19168/MovementComp0000644000000000000000000000013213135434035030207 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.489981805 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/MovementComposer.xml0000644000175000017500000000061313135434035033550 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementPiece MovementComposer <_label>Composer <_tooltip>Prints a composer name for current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/PaxHeaders.19168/MovementSubt0000644000000000000000000000013213135434035030226 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.489981805 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/MovementSubtitle.xml0000644000175000017500000000055013135434035033554 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap RTS MovementSubtitle <_label>Subtitle <_tooltip>Prints the name given below the title of this movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/PaxHeaders.19168/MovementPiec0000644000000000000000000000013213135434035030171 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.489981805 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/MovementPiece.xml0000644000175000017500000000057513135434035033015 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementPiece <_label>Piece <_tooltip>Prints the name given above and to the left at the start of the movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/PaxHeaders.19168/MovementTitl0000644000000000000000000000013213135434035030225 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.489981805 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/MovementTitle.xml0000644000175000017500000000056013135434035033043 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MovementTitle <_label>Title <_tooltip>Prints the name given as a title above the current movement. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/PaxHeaders.19168/MovementSubt0000644000000000000000000000013213135434035030226 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.496648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/MovementSubtitle.scm0000644000175000017500000000032013135434035033531 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-header? "MovementSubtitle") (begin (SetHeaderField "subsubtitle") (DenemoPrintAllHeaders) (d-RefreshDisplay)) (DenemoSetTitles "MovementTitles" 'subtitle #f)) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/PaxHeaders.19168/MovementPiec0000644000000000000000000000013213135434035030171 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.496648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/MovementPiece.scm0000644000175000017500000000030413135434035032765 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-header? "MovementPiece") (begin (SetHeaderField "piece") (DenemoPrintAllHeaders) (d-RefreshDisplay)) (DenemoSetTitles "MovementTitles" 'piece #f)) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/PaxHeaders.19168/MovementComp0000644000000000000000000000013213135434035030207 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.496648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/MovementComposer.scm0000644000175000017500000000031213135434035033526 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-header? "MovementComposer") (begin (SetHeaderField "composer") (DenemoPrintAllHeaders) (d-SetSaved #f)) (DenemoSetTitles "MovementTitles" 'composer #f)) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/PaxHeaders.19168/MovementTitl0000644000000000000000000000013213135434035030225 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.496648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Titles/SimpleTitles/MovementTitles.scm0000644000175000017500000000007613135434035033212 0ustar00jjbenhamjjbenham00000000000000;;;SetMovementTitles (DenemoSetTitles "MovementTitles" #f #f) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/CaptureScore0000644000000000000000000000013213135434150024311 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/0000755000175000017500000000000013135434150026237 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/PaxHeaders.19168/DeleteCapturedMeasu0000644000000000000000000000013213135434035030200 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.506648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/DeleteCapturedMeasure.scm0000644000175000017500000000005313135434035033157 0ustar00jjbenhamjjbenham00000000000000(d-DeleteScreenshot #f) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/PaxHeaders.19168/CaptureMeasures.xml0000644000000000000000000000013213135434035030222 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.506648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/CaptureMeasures.xml0000644000175000017500000000144713135434035032101 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SwapMovements CaptureMeasures <_label>Capture Measures (Score) <_tooltip>Creates blank measures one for each measure captured as a screenshot from a source score. Display the source score using any program. Click on opposite corners of each measure in turn to capture that measure as an image into Denemo. Right-click or scroll-wheel to switch corners to adjust. Press any key to finish. This command is for capturing in score form; to underlay each part with its own source measure use CaptureMeasuresPartPerStaff denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/PaxHeaders.19168/DeleteCapturedMeasu0000644000000000000000000000013213135434035030200 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.506648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/DeleteCapturedMeasure.xml0000644000175000017500000000067613135434035033210 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CaptureMeasures DeleteCapturedMeasure <_label>Delete Captured Measure <_tooltip>Deletes the captured image of the source measure for the current measure. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/PaxHeaders.19168/InsertCaptureMeasur0000644000000000000000000000013213135434035030260 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.506648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/InsertCaptureMeasure.xml0000644000175000017500000000072213135434035033076 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CaptureMeasures InsertCaptureMeasure <_label>Capture and Insert One Measure <_tooltip>Capture the image of a single measure (as screenshot) inserting at the current measure. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/PaxHeaders.19168/CaptureMeasures.scm0000644000000000000000000000013213135434035030204 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.506648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/CaptureMeasures.scm0000644000175000017500000000040013135434035032047 0ustar00jjbenhamjjbenham00000000000000;;;CaptureMeasures (d-PushPosition) (let loop ((measure-created #f)) (if (d-UserScreenshot #f) (begin (d-AppendMeasureAllStaffs) (loop #t)) (begin (d-MoveToEnd) (if measure-created (d-DeleteMeasureAllStaffs))))) (d-PopPosition) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/PaxHeaders.19168/InsertCaptureMeasur0000644000000000000000000000013213135434035030260 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.516648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CaptureScore/InsertCaptureMeasure.scm0000644000175000017500000000010313135434035033051 0ustar00jjbenhamjjbenham00000000000000;;;InsertCaptureMeasure (d-UserScreenshot #f (- (d-GetMeasure) 1)) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/Playback0000644000000000000000000000013213135434150023440 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.543315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Playback/0000755000175000017500000000000013135434150025366 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Playback/PaxHeaders.19168/SetMovementTempo.scm0000644000000000000000000000013213135434035027476 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.516648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Playback/SetMovementTempo.scm0000644000175000017500000000046713135434035031356 0ustar00jjbenhamjjbenham00000000000000;;;SetMovementTempo (define MovementTempo:value (number->string (d-MovementTempo))) (set! MovementTempo:value (d-GetUserInput (_ "Tempo of Movement") (_ "Give quarter notes per minute:") MovementTempo:value)) (set! MovementTempo:value (number->string (d-MovementTempo MovementTempo:value))) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Playback/PaxHeaders.19168/SetMovementTempo.xml0000644000000000000000000000013213135434035027514 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.516648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/Playback/SetMovementTempo.xml0000644000175000017500000000062613135434035031371 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SwapMovements SetMovementTempo <_label>MIDI Tempo <_tooltip>Sets the (initial) tempo in quarter notes per minute. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/CheckForIncompleteMeasures.scm0000644000000000000000000000013213135434035027706 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.516648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CheckForIncompleteMeasures.scm0000644000175000017500000000172113135434035031560 0ustar00jjbenhamjjbenham00000000000000;; CheckForIncompleteMeasures (d-PushPosition) (d-MoveToBeginning) (while (d-MoveToStaffUp)) (let loop () (while (and (d-Directive-voice? "SubstituteMusic") (d-MoveToStaffDown))) (if (not (d-Directive-voice? "SubstituteMusic")) (begin (while (and (AcceptableDurationMeasure?) (d-MoveToMeasureRight)) (if (and (AcceptableDurationMeasure?) (d-MoveToStaffDown)) (begin (while (and (d-Directive-voice? "SubstituteMusic") (d-MoveToStaffDown))) (d-MoveToBeginning) (if (not (d-Directive-voice? "SubstituteMusic")) (loop)))))))) (if (or (d-Directive-voice? "SubstituteMusic") (AcceptableDurationMeasure?)) (begin (d-PopPosition) (d-WarningDialog (_ "All measures appear complete."))) (begin (d-PopPushPosition) (d-PopPosition) (d-WarningDialog (_ "This measure has the wrong duration.")))) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/ReBar.xml0000644000000000000000000000013213135434035023506 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.539981806 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/ReBar.xml0000644000175000017500000000063713135434035025365 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ReBar <_label>Adjust the Measure Lengths <_tooltip>Removes gaps in duration of measures, redistributes the notes according to the time signature. denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/DuplicateOrMergeMovements.scm0000644000000000000000000000013213135434035027566 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.539981806 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/DuplicateOrMergeMovements.scm0000644000175000017500000000271713135434035031446 0ustar00jjbenhamjjbenham00000000000000;;;DuplicateOrMergeMovements (if (d-GetSaved) (let ((timesig (d-InitialTimeSig "query=timesigname")) (keysig (d-InitialKey "query=keysigname")) (choice (RadioBoxMenu (cons (_ "Duplicate Movement") 'dup) (cons (_ "Merge with Previous Movement") 'merge)))) (d-SelectAll) (d-Copy) (d-UnsetMark) (if choice (case choice ((merge) (if (d-PreviousMovement) (begin (d-MoveToEnd) (while (d-MoveToStaffUp)) (d-AppendMeasureAllStaffs) (d-MoveCursorRight) (d-InsertTimeSig timesig) (d-InsertKey keysig) (d-Paste) (d-PushPosition) (d-NextMovement) (d-DeleteMovement) (d-PopPosition)) (begin (d-WarningDialog (_ "No Movement Before"))))) ((dup) (d-InsertMovementAfter) (d-IncreaseGuard) (d-InitialTimeSig timesig) (d-InitialKey keysig) (d-Paste) (d-DecreaseGuard))) (d-InfoDialog (_ "Cancelled")))) (d-WarningDialog (_ "Score is not saved"))) denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/PaxHeaders.19168/CheckTimeSignatures.xml0000644000000000000000000000013213135434035026414 xustar0030 mtime=1500919837.989981805 30 atime=1500919929.539981806 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MovementMenu/CheckTimeSignatures.xml0000644000175000017500000000070013135434035030262 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CheckTimeSignatures EvenOutStaffLengths <_label>Check Time Signatures <_tooltip>Checks the movement for miss-matched or miss-placed time signature changes. denemo-2.2.0/actions/menus/ObjectMenu/PaxHeaders.19168/Key0000644000000000000000000000013213135434150020023 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.543315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Key/0000755000175000017500000000000013135434150021751 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Key/PaxHeaders.19168/SharpenInitialKeysigs.scm0000644000000000000000000000013213135434035025057 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.539981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Key/SharpenInitialKeysigs.scm0000644000175000017500000000030113135434035026722 0ustar00jjbenhamjjbenham00000000000000;;;SharpenInitialKeysigs (d-PushPosition) (while (MoveUpStaffOrVoice)) (d-IncrementInitialKeysig) (while (MoveDownStaffOrVoice) (d-IncrementInitialKeysig)) (d-PopPosition) denemo-2.2.0/actions/menus/ObjectMenu/Key/PaxHeaders.19168/FlattenInitialKeysigs.scm0000644000000000000000000000013213135434035025054 xustar0030 mtime=1500919837.983315139 30 atime=1500919929.549981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Key/FlattenInitialKeysigs.scm0000644000175000017500000000030713135434035026725 0ustar00jjbenhamjjbenham00000000000000;;;FlattenInitialKeysigs (d-PushPosition) (while (MoveUpStaffOrVoice)) (d-IncrementInitialKeysig -1) (while (MoveDownStaffOrVoice) (d-IncrementInitialKeysig -1)) (d-PopPosition) denemo-2.2.0/actions/menus/ObjectMenu/Key/PaxHeaders.19168/SharpenKeysig.scm0000644000000000000000000000013213135434035023362 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.549981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Key/SharpenKeysig.scm0000644000175000017500000000002313135434035025226 0ustar00jjbenhamjjbenham00000000000000(d-IncrementKeysig)denemo-2.2.0/actions/menus/ObjectMenu/Key/PaxHeaders.19168/HideKeysig.xml0000644000000000000000000000013213135434035022651 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.549981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Key/HideKeysig.xml0000644000175000017500000000073713135434035024531 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertKey HideKeysig <_label>(Print) Hide <_tooltip>On printing, omit the key signature change at the cursor, or the initial key signature if the cursor is not on a key signature change. denemo-2.2.0/actions/menus/ObjectMenu/Key/PaxHeaders.19168/SharpenKeysig.xml0000644000000000000000000000013213135434035023400 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.549981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Key/SharpenKeysig.xml0000644000175000017500000000070013135434035025246 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InitialKey SharpenKeysig <_label>♯ <_tooltip>Sharpens the key signature by one degree. If no key signature at cursor, sharpens the initial key signature. denemo-2.2.0/actions/menus/ObjectMenu/Key/PaxHeaders.19168/FlattenKeysig.xml0000644000000000000000000000013213135434035023375 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.549981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Key/FlattenKeysig.xml0000644000175000017500000000071213135434035025246 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SharpenKeysig FlattenKeysig <_label>â™­ <_tooltip>Flattens the key signature by one degree. If no key signature at the cursor, operates on the initial key signature. denemo-2.2.0/actions/menus/ObjectMenu/Key/PaxHeaders.19168/FlattenInitialKeysigs.xml0000644000000000000000000000013213135434035025072 xustar0030 mtime=1500919837.983315139 30 atime=1500919929.559981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Key/FlattenInitialKeysigs.xml0000644000175000017500000000066413135434035026751 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SharpenInitialKeysigs FlattenInitialKeysigs <_label>â™­ Initial <_tooltip>Flattens the inital key signature by one degree on all staffs/voices. denemo-2.2.0/actions/menus/ObjectMenu/Key/PaxHeaders.19168/HideKeysig.scm0000644000000000000000000000013213135434035022633 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.559981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Key/HideKeysig.scm0000644000175000017500000000114413135434035024504 0ustar00jjbenhamjjbenham00000000000000;;;HideKeysig ;(let ((lilycontext (d-GetOption (string-append "Score" stop "Staff" stop "Voice" stop)))) (let ((lilycontext "Staff")) (if lilycontext (begin (if (d-Directive-keysig? "HideKeysig") (d-DirectiveDelete-keysig "HideKeysig") (begin (d-DirectivePut-keysig-prefix "HideKeysig" (string-append "\\once \\override " lilycontext ".KeySignature #'stencil = ##f" )) (d-DirectivePut-keysig-gy "HideKeysig" 60) (d-DirectivePut-keysig-graphic "HideKeysig" "\n⋃\nDenemo\n24"))) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Key/PaxHeaders.19168/FlattenKeysig.scm0000644000000000000000000000013213135434035023357 xustar0030 mtime=1500919837.983315139 30 atime=1500919929.559981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Key/FlattenKeysig.scm0000644000175000017500000000002613135434035025226 0ustar00jjbenhamjjbenham00000000000000(d-IncrementKeysig -1)denemo-2.2.0/actions/menus/ObjectMenu/Key/PaxHeaders.19168/SharpenInitialKeysigs.xml0000644000000000000000000000013213135434035025075 xustar0030 mtime=1500919837.986648472 30 atime=1500919929.559981806 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Key/SharpenInitialKeysigs.xml0000644000175000017500000000065113135434035026750 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InitialKey SharpenInitialKeysigs <_label>♯ Initial <_tooltip>Sharpens the inital key signature by one degree on all staffs/voices. denemo-2.2.0/actions/menus/ObjectMenu/PaxHeaders.19168/Score0000644000000000000000000000013213135434150020346 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/0000755000175000017500000000000013135434150022274 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/EditProlog.scm0000644000000000000000000000013213135434036023202 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.569981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/EditProlog.scm0000644000175000017500000000054713135434036025061 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;Edit score prolog (let ((lily "") (current "")) (set! current (d-ScoreProperties "query=lilypond")) (set! lily (d-GetUserInput (_ "Edit Score Prolog") (_ "Edit LilyPond to apply to whole score") current)) (d-ScoreProperties (string-append "lilypond=" lily "\0"))) ;;;;;;;;;;;;;;;;;denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/ScoreComment.xml0000644000000000000000000000013213135434036023546 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.569981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/ScoreComment.xml0000644000175000017500000000063113135434036025417 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EditScoreDirective ScoreComment <_label>Comment <_tooltip>Stores any textual commentary you may have for this score. denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/ScoreBlockProlog.scm0000644000000000000000000000013213135434036024343 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.569981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/ScoreBlockProlog.scm0000644000175000017500000000111413135434036026211 0ustar00jjbenhamjjbenham00000000000000;;;;;;;; ScoreBlockProlog (let ((prolog "")) (if ScoreBlockProlog::params (set! prolog ScoreBlockProlog::params) (set! prolog (d-DirectiveGet-score-postfix "ScoreBlockProlog"))) (if (not prolog) (set! prolog "%{Insert LilyPond syntax here %}\n")) (if (not ScoreBlockProlog::params) (set! prolog (d-GetUserInput "LilyPond Score Prolog" "Give LilyPond:" prolog))) (if prolog (begin (d-SetSaved #f) (d-DirectivePut-score-postfix "ScoreBlockProlog" prolog) (d-DirectivePut-score-display "ScoreBlockProlog" prolog)) (d-WarningDialog "Prolog unchanged")))denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/Typesetter0000644000000000000000000000013213135434150022516 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/0000755000175000017500000000000013135434150024444 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ConnectArpeggios.xml0000644000000000000000000000013213135434036026552 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.569981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ConnectArpeggios.xml0000644000175000017500000000071413135434036030425 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ConnectArpeggios ScoreChooseNotehead <_label>Connect Arpeggios (Off/On) <_tooltip>Any arpeggios inserted on chords in different voices will be drawn across the voices. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/NormalBeamEndings.xml0000644000000000000000000000013213135434036026645 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.593315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/NormalBeamEndings.xml0000644000175000017500000000063513135434036030522 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AccompanistsScore NormalBeamEndings <_label>Use Normal Beam Endings <_tooltip>Ends beams in the expected places (print). denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/AllowVoltaHook.scm0000644000000000000000000000013213135434036026207 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.593315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/AllowVoltaHook.scm0000644000175000017500000000103113135434036030053 0ustar00jjbenhamjjbenham00000000000000;;;AllowVoltaHook (let ((tag "AllowVoltaHook") (choice (RadioBoxMenu (cons "End at double barline ||" "||") (cons "End at barline |" "|") (cons "End at custom barline" 'custom)))) (if (eq? choice 'custom) (set! choice (d-GetUserInput (_ "Ending a Repeat Alternative") (_ "Give barline to end at: ") "[|:"))) (if choice (begin (d-DirectivePut-scoreheader-postfix tag (string-append "\n\\allowVoltaHook \"" choice "\"\n")))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/TinyStaffAllMovements.xml0000644000000000000000000000013213135434036027556 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.593315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/TinyStaffAllMovements.xml0000644000175000017500000000070413135434036031430 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TinyStaff TinyStaffAllMovements <_label>Tiny Staff in All Movements <_tooltip>Gets a staff number 1 ... n from user and makes that staff tiny in all movements. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ToggleFigures.xml0000644000000000000000000000013213135434036026066 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.593315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ToggleFigures.xml0000644000175000017500000000070313135434036027737 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleFigures ToggleFingeringVisibilityInScore <_label>Bass Figures (Off/On) <_tooltip>Turns on/off visibility of figured bass on typesetting for whole score. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/DeactivateTimeSignatureStenc0000644000000000000000000000013213135434036030270 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.593315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/DeactivateTimeSignatureStencil.scm0000644000175000017500000000104013135434036033242 0ustar00jjbenhamjjbenham00000000000000;;;DeactivateTimeSignatureStencil (let ((tag "DeactivateTimeSignatureStencil") (params DeactivateTimeSignatureStencil::params)) (if (d-Directive-score? tag) (let ((choice (RadioBoxMenu (cons (_ "Delete") 'delete)))) (case choice ((delete) (d-SetSaved #f) (d-DirectiveDelete-score tag)))) (begin (d-SetSaved #f) (d-InfoDialog (_ "Time Signatures will not be typeset for this score")) (d-DirectivePut-score-postfix tag "\\override Score.TimeSignature #'stencil = ##f\n")))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/TransposeScorePrint.xml0000644000000000000000000000013213135434036027307 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.603315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/TransposeScorePrint.xml0000644000175000017500000000076113135434036031164 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetFontSize TransposeScorePrint <_label>Transpose on Print (Text Input) <_tooltip>Typesets the score transposed by the interval you give - key signatures are transposed as well as notes and chord symbols. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/DeactivateTimeSignatureStenc0000644000000000000000000000013213135434036030270 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.603315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/DeactivateTimeSignatureStencil.xml0000644000175000017500000000077513135434036033276 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeactivateTimeSignatureStencil <_label>(Print) Don't Engrave Time Signatures <_tooltip>Deactivates the stencil for Time Signatures for the whole score, which prevents them from getting drawn and taking space. But the logic is still active. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/SetBeamExceptions.scm0000644000000000000000000000013213135434036026664 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.603315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/SetBeamExceptions.scm0000644000175000017500000002537713135434036030553 0ustar00jjbenhamjjbenham00000000000000;;;SetBeamExceptions (let ((tag "SetBeamExceptions") (params SetBeamExceptions::params) (DeleteProc d-DirectiveDelete-score) (GetData d-DirectiveGet-score-data) (PutData d-DirectivePut-score-data) (PutProc d-DirectivePut-score-prefix) (layout "\\layout") (exceptions #f) (data #f) (timeSignatureFraction #f) (beatStructure #f) (baseMomentFraction #f) (DefaulttimeSignatureFraction #f) (DefaultbeatStructure #f) (DefaultbaseMomentFraction #f)) (define (set-exceptions) (d-SetSaved #f) (PutData tag (format #f "'~s" data)) (let ((prefix "")) (define (do-append alist) (let ((time (car alist)) (value (cdr alist))) (define notes (assoc-ref value 'notes)) (define baseMomentFraction (assoc-ref value 'baseMomentFraction)) (define beatStructure (assoc-ref value 'beatStructure)) (define timeSignatureFraction (assoc-ref value 'timeSignatureFraction)) (if (> (string-length notes) 0) (set! notes (string-append "\\beamExceptions {" notes "}\n")) (set! notes "#'()\n")) (set! prefix (string-append prefix layout "{ \\overrideTimeSignatureSettings " timeSignatureFraction " " baseMomentFraction " #'(" beatStructure ") " notes "}\n")))) (for-each do-append (eval-string (GetData tag))) (PutProc tag prefix))) (define (timesig val) (let* ((index (string-index val #\/)) (numerator (string->number (substring val 0 index))) (denominator (string->number (substring val (+ index 1))))) (set! DefaulttimeSignatureFraction val) (set! DefaultbaseMomentFraction (string-append "1/" (substring val (+ index 1)))) (set! DefaultbeatStructure (DenemoDefaultBeatStructure numerator)) (cons numerator denominator))) (define (get-lilypond) (define lily (d-GetLilyPond)) (if lily (let ((position (string-contains lily "\\noBeam"))) (if position (string-append (substring lily 0 position) "[]") lily)) #f)) (define (get-exceptions) (d-PushPosition) (if (MoveToSelectionBeginningInThisStaff) (let ((time #f)(measure (d-GetMeasure))) (set! time (format #f "~s" (timesig (d-GetPrevailingTimesig)))) (set! exceptions (get-lilypond)) (if exceptions (begin (let loop ((num (d-GetMeasure))) (if (d-NextSelectedObject) (begin (if (not (= num (d-GetMeasure))) (set! exceptions (string-append exceptions " | "))) (set! exceptions (string-append exceptions (get-lilypond))) (loop (d-GetMeasure))))) (set! exceptions (cons time exceptions)))))) (d-PopPosition)) ;;;;;;;;;routine starts here (if (equal? params "edit") (begin ;(d-WarningDialog "Not implemented") (set! params #f) (exit))) (if params (begin (set! tag (assoc-ref params 'tag)) (set! layout (assoc-ref params 'layout)) (set! DeleteProc (assoc-ref params 'delete)) (set! GetData (assoc-ref params 'get)) (set! PutData (assoc-ref params 'put)) (set! PutProc (assoc-ref params 'proc)))) (set! data (GetData tag)) (if data (set! data (eval-string data)) (set! data '())) (if (d-CheckLilyVersion "2.19.25") (get-exceptions)) (if exceptions (let ((value (assoc-ref data (car exceptions)))) (if value (let ((choice (RadioBoxMenu (cons (_ "Add to current rules") 'add) (cons (_ "Replace current rules") 'replace) (cons (_ "Delete (and revert to default rules)") 'delete)))) (set! baseMomentFraction (assoc-ref value 'baseMomentFraction)) (if (not baseMomentFraction) (set! value (assoc-set! value 'baseMomentFraction DefaultbaseMomentFraction))) (if (not beatStructure) (set! value (assoc-set! value 'beatStructure DefaultbeatStructure))) (set! timeSignatureFraction (assoc-ref value 'timeSignatureFraction)) (if (not timeSignatureFraction) (set! value (assoc-set! value 'timeSignatureFraction DefaulttimeSignatureFraction))) (case choice ((add) (let ((this (assoc-ref value 'notes))) (if this (set! this (string-append this " | "(cdr exceptions))) (set! this (cdr exceptions))) (set! value (assoc-set! value 'notes this))) (set! data (assoc-set! data (car exceptions) value)) (set-exceptions) (d-InfoDialog (_ "Beaming Rules added from the selection"))) ((replace) (set! value (assoc-set! value 'notes (cdr exceptions))) (set! data (assoc-set! data (car exceptions) value)) (set-exceptions) (d-InfoDialog (_ "Beaming Rules replaced with ones from the selection"))) ((delete) (d-SetSaved #f) (set! data (assoc-remove! data (car exceptions))) (set-exceptions) (d-InfoDialog (_ "Beaming Rules added from the selections have been dropped"))) (else (d-InfoDialog (_ "Cancelled"))))) (begin (if (not baseMomentFraction) (set! baseMomentFraction DefaultbaseMomentFraction)) (if (not beatStructure) (set! beatStructure DefaultbeatStructure)) (if (not timeSignatureFraction) (set! timeSignatureFraction DefaulttimeSignatureFraction)) (set! value (assoc-set! value 'notes (cdr exceptions))) (set! value (assoc-set! value 'baseMomentFraction baseMomentFraction)) (set! value (assoc-set! value 'beatStructure beatStructure)) (set! value (assoc-set! value 'timeSignatureFraction timeSignatureFraction)) (set! data (assoc-set! data (car exceptions) value)) (set-exceptions) (d-InfoDialog (_ "Beaming Rules replaced with ones from the selection"))))) (let* ((time (timesig (d-GetPrevailingTimesig))) (choice (RadioBoxMenu (cons (string-append (_ "Set Beaming rule for ") DefaulttimeSignatureFraction) 'set) (cons (string-append (_ "Delete Beaming rule for ") DefaulttimeSignatureFraction) 'delete) (cons (_ "Delete All (and revert to default rules)") 'deleteAll)))) (case choice ((set) (let ((value '()) (numbeats #f)) (let loop () (set! baseMomentFraction (DenemoGetDuration (_ "Give beat"))) (if baseMomentFraction (begin (set! numbeats (* (car time) (/ (/ 1 (cdr time)) (string->number baseMomentFraction)))) (if (not (integer? numbeats)) (begin (d-WarningDialog (_ "Chosen duration does not fit time signature")) (loop)))))) (if baseMomentFraction (begin (set! beatStructure (d-GetUserInput (_ "Beat Structure") (string-append (_ "Give groupings for ") (number->string numbeats) (_ " beats: ")) (DenemoDefaultBeatStructure numbeats))) (set! value (assoc-set! value 'baseMomentFraction baseMomentFraction)) (set! value (assoc-set! value 'beatStructure beatStructure)) (set! value (assoc-set! value 'timeSignatureFraction DefaulttimeSignatureFraction)) (set! value (assoc-set! value 'notes "")) (set! data (assoc-set! data (format #f "~s" time) value)) (set-exceptions)) (d-InfoDialog (_ "Cancelled"))))) ((delete) (set! data (assoc-remove! data (format #f "~s" time))) (set-exceptions)) ((deleteAll) (d-SetSaved #f) (DeleteProc tag)) (else (d-WarningDialog (_ "Cancelled"))))))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/PointAndClick.scm0000644000000000000000000000013213135434036025764 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.613315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PointAndClick.scm0000644000175000017500000000123213135434036027633 0ustar00jjbenhamjjbenham00000000000000;;;;;;;; PointAndClick (if (d-Directive-score? "PointAndClick") (begin (d-DirectiveDelete-score "PointAndClick") (d-InfoDialog (_ "Point-and-click is now On.\nThis means that you will be able to click on the typeset score to move the cursor to a given note, or do editing etc.\nGenerated PDF files will be larger though."))) (begin (d-InfoDialog (_ "Point-and-click is now Off.\nThis means that you will be not able to click on the typeset score to move the cursor to a given note, or do editing etc.\nGenerated PDF files will be smaller. Use this for pdf export")) (d-DirectivePut-score-prefix "PointAndClick" "\n\\pointAndClickOff\n"))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/AllowVoltaHook.xml0000644000000000000000000000013213135434036026225 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.623315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/AllowVoltaHook.xml0000644000175000017500000000074013135434036030077 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AllowVoltaHook ScoreRehearsalMarkFormat <_label>Barline to end Repeat Alternative <_tooltip>Choose an additional type of barline to close a second (or n'th) time bar with a downward tick. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/AccidentalStyle.scm0000644000000000000000000000013213135434036026352 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.623315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/AccidentalStyle.scm0000644000175000017500000000263313135434036030227 0ustar00jjbenhamjjbenham00000000000000;;;AccidentalStyle (let ((tag "AccidentalStyle")(style #f) (params AccidentalStyle::params)) (if (equal? params "edit") (set! params #f)) (if (string? params) (set! style params) (set! style (RadioBoxMenu (cons (_ "Default") "default") (cons (_ "Voice") "voice") (cons (_ "Modern") "modern") (cons (_ "Modern Cautionary") "modern-cautionary") (cons (_ "Modern Voice") "modern-voice") (cons (_ "Piano") "piano") (cons (_ "Piano Cautionary") "piano-cautionary") (cons (_ "Neo-Modern") "neo-modern") (cons (_ "Neo-Modern Cautionary") "neo-modern-cautionary") (cons (_ "Neo-Modern Voice Cautionary") "neo-modern-voice-cautionary") (cons (_ "Dodecaphonic") "dodecaphonic") (cons (_ "Teaching") "teaching") (cons (_ "No Reset") "no-reset") (cons (_ "Forget") "forget")))) (if style (begin (d-SetSaved #f) (d-DirectivePut-score-prefix tag (string-append " \\layout{\\context { \\Score \\accidentalStyle " style " }} ")) (d-DirectivePut-score-display tag style))))denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ScoreChooseNotehead.scm0000644000000000000000000000013213135434036027166 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.623315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ScoreChooseNotehead.scm0000644000175000017500000000026513135434036031042 0ustar00jjbenhamjjbenham00000000000000;;;ScoreChooseNotehead (let ((tag "ScoreChooseNotehead") (params ChooseNotehead::params)) (if (equal? params "edit") (set! params #f)) (d-ChooseNotehead 'score)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/TransposeOnPrint.xml0000644000000000000000000000013213135434036026610 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.623315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/TransposeOnPrint.xml0000644000175000017500000000106213135434036030460 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TransposeOnPrint DeactivateTimeSignatureStencil <_label>Transpose on Print (Graphical Interface) <_tooltip>Gets an interval from the user: the entire score is transposed by this interval on typesetting - key signatures are transposed as well as notes and chord symbols. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/TinyStaffAllMovements.scm0000644000000000000000000000013213135434036027540 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.646648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/TinyStaffAllMovements.scm0000644000175000017500000000020413135434036031405 0ustar00jjbenhamjjbenham00000000000000;;;TinyStaffAllMovements (ForAllMovements (string-append "(d-GoToPosition #f " (number->string (d-GetStaff)) " 1 1)(d-TinyStaff)")) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/DenemoBar.scm0000644000000000000000000000013213135434036025136 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.646648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/DenemoBar.scm0000644000175000017500000000410413135434036027006 0ustar00jjbenhamjjbenham00000000000000;;;DenemoBar (let ((tag "DenemoBar")) (if (d-Directive-score? tag) (begin (d-InfoDialog (_ "Automatic barlines and beaming rules re-instated")) (d-DirectiveDelete-score tag) (d-DirectiveDelete-score "ScoreTiming")) (begin (d-InfoDialog (_ "Literal Barlines now ON. Execute the command a second time to turn it off. This command is for un-metered music. You will have to manually beam the music. Do not use this for an upbeat (pickup, anacrusis), there is a proper command for that.")) (d-DirectivePut-score-prefix tag "\n increaseBarNumber = \\applyContext #(lambda (x) (let ((measurepos (ly:context-property x 'measurePosition))) ; Only increase bar number if not at start of measure. ; This way we ensure that you won't increase bar number twice ; if two parallel voices call increaseBarNumber simultanously: (if (< 0 (ly:moment-main-numerator measurepos)) ; ugh. ignore grace part (begin (ly:context-set-property! (ly:context-property-where-defined x 'internalBarNumber) 'internalBarNumber (1+ (ly:context-property x 'internalBarNumber))) (ly:context-set-property! (ly:context-property-where-defined x 'currentBarNumber) 'currentBarNumber (1+ (ly:context-property x 'currentBarNumber))) ; set main part of measurepos to zero, leave grace part as it is: (ly:context-set-property! (ly:context-property-where-defined x 'measurePosition) 'measurePosition (ly:make-moment 0 1 (ly:moment-grace-numerator measurepos) (ly:moment-grace-denominator measurepos))))))) % Named Increasing BAR nibar = #(define-music-function (parser location x) (string?) #{ \\bar $x \\increaseBarNumber #}) AutoBarline = \\nibar \"|\"\n") (d-DirectivePut-score-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-score-postfix "ScoreTiming" " \\set Score.timing = ##f \n"))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/TrillIsPlus.scm0000644000000000000000000000013213135434036025530 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.646648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/TrillIsPlus.scm0000644000175000017500000000013113135434036027374 0ustar00jjbenhamjjbenham00000000000000;;;TrillIsPlus (d-LilyPondDefinition (cons "trill" "#(make-articulation \"stopped\") ")) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/CustomBarline.scm0000644000000000000000000000013213135434036026051 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.646648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/CustomBarline.scm0000644000175000017500000000577013135434036027733 0ustar00jjbenhamjjbenham00000000000000;;;CustomBarline (let* ((tag "CustomBarline")(params CustomBarline::params) (defines (d-DirectiveGet-score-data tag)) (name "A")(start "|")(end "|")(mid "|")(span "|")) (define (createTag name) (string-append "Bar" name)) (define (setBarline) ;;; sets the LilyPond to define all the defines listed in Directive-score-data (d-SetSaved #f) (d-DirectivePut-score-display tag (_ "Custom Barlines")) (d-DirectivePut-score-override tag (logior DENEMO_OVERRIDE_AFFIX)) (let ((prefix "")) (define (do-append def) (set! name (list-ref def 0)) (set! start (list-ref def 1)) (set! mid (list-ref def 2)) (set! end (list-ref def 3)) (set! span (list-ref def 4)) (if (not (string-null? name)) (let ((deftag (createTag name))) (d-DirectiveDelete-score (string-append "Allow\n" deftag)) ;; remove old definition (set! name (string-append "-" name)) (d-LilyPondDefinition (cons deftag (string-append "\\bar \"" (string-append mid name) "\"\n"))))) (set! prefix (string-append prefix "\n\\defineBarLine \"" mid name "\" #'(\"" end "\" \"" start "\" \"" span "\")\n"))) (for-each do-append (eval-string (d-DirectiveGet-score-data tag))) (d-DirectivePut-score-prefix tag prefix))) (define (remove name) (set! defines (delete #f (map (lambda (el) (if (not (equal? name (list-ref el 0))) el #f)) defines)))) (define (update-data def) ;; if def is not in defines: adds def to the Directive-score-data and updates LilyPond (remove (list-ref def 0)) (set! defines (cons def defines)) (d-DirectivePut-score-data tag (string-append "'" (format #f "~s" defines))) (setBarline)) (define (get-data) (set! name (d-GetUserInput (_ "Custom Barline") (_ "Give name (blank to re-define a standard barline)") name)) (set! mid (d-GetUserInput (_ "Custom Barline") (_ "Give barline char(s) - | : . [ ] ; etc, for the normal appearance of the barline") mid)) (set! start (d-GetUserInput (_ "Custom Barline") (_ "Give char(s) for line start appearance") start)) (set! end (d-GetUserInput (_ "Custom Barline") (_ "Give char(s) for line end appearance") end)) (set! span (d-GetUserInput (_ "Custom Barline") (_ "Give char(s) for appearance when spanning staffs") span)) (if (and name start mid end span) (list name start mid end span) #f)) ;;;;;start of procedure (if defines (set! defines (eval-string defines)) (set! defines '())) (let ((def #f)) (if params (set! def (eval-string params)) (set! def (get-data))) (if def (update-data def) (d-WarningDialog (_ "Custom Bar Lines unchanged"))))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/AccompanistsScore.scm0000644000000000000000000000013213135434036026722 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.656648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/AccompanistsScore.scm0000644000175000017500000000012113135434036030565 0ustar00jjbenhamjjbenham00000000000000;;;;;;;AccompanistsScore (ForAllMovements "(while (d-StaffUp) #t) (d-TinyStaff)")denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/CustomBarline.xml0000644000000000000000000000013213135434036026067 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.656648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/CustomBarline.xml0000644000175000017500000000137413135434036027745 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CustomBarline <_label>Custom Barline <_tooltip>Create a custom barline. These can be named, or can simply override a standard LilyPond bar line type. A bar line is defined by four forms, which describe 1) the appearance normally (during a line), 2) appearance when the barline is at the beginning or 3) end of a line , and 4) what to show when joining staffs together as with a Piano Staff. Barline forms are made of characters including |,:,.,[,],: and others in the LilyPond documentation. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/PrintLayout0000644000000000000000000000013213135434150025010 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.543315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/0000755000175000017500000000000013135434150026736 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/SetFontSize.scm0000644000000000000000000000013213135434036030011 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.656648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/SetFontSize.scm0000644000175000017500000000113013135434036031655 0ustar00jjbenhamjjbenham00000000000000;;SetFontSize (let* ((tag "SetFontSize") (newsize (d-DirectiveGet-score-data tag)) (size (d-ScoreProperties "query=fontsize"))) (if (not newsize) (set! newsize size)) (set! newsize (d-GetUserInput "Overall Score Sizing" "Give font size to use" newsize)) (if newsize (begin (d-DirectivePut-paper-data tag newsize) (d-DirectivePut-paper-postfix tag (string-append "\n} #(set-global-staff-size " newsize ") {\n" )) ;this cheats, placing the setting *outside* the paper block. It seems we don't have a score-nfix override setting to place stuff here. FIXME (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/SetPageSize.xml0000644000000000000000000000013213135434036027775 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.666648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/SetPageSize.xml0000644000175000017500000000065013135434036031647 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetPageSize SetMargin <_label>Page Size <_tooltip>Set the page size - this overrides the default page size set in score properties. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/ScoreShortIndent0000644000000000000000000000013213135434036030250 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.666648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/ScoreShortIndent.scm0000644000175000017500000000153413135434036032705 0ustar00jjbenhamjjbenham00000000000000;;;; ScoreShortIndent Set indent (let ((tag "ScoreShortIndent")(amount #f) (current "0.0")(thematch #f)(params ScoreShortIndent::params)) (set! current (d-DirectiveGet-score-data tag)) (if (not current) (set! current "4.0")) (if (and params (not (equal? params "edit"))) (set! amount (number->string params)) (set! amount (d-GetUserInput (_ "Choose indent of subsequent systems") (_ "Give amount in decimal") current))) (if (and (string? amount) (string->number amount)) (begin (d-DirectivePut-score-prefix tag (string-append "\\layout {short-indent = " amount "}\n")) (d-DirectivePut-score-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-score-data tag amount) (d-DirectivePut-score-display tag (string-append (_ "short indent=") amount))) (d-DirectiveDelete-score tag)) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/ScoreIndent.scm0000644000000000000000000000013213135434036030011 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.666648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/ScoreIndent.scm0000644000175000017500000000150613135434036031664 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;; ScoreIndent Set indent (let ((tag "ScoreIndent")(amount #f) (current "0.0")(thematch #f)(params ScoreIndent::params)) (set! current (d-DirectiveGet-score-data tag)) (if (not current) (set! current "4.0")) (if (and params (not (equal? params "edit"))) (set! amount (number->string params)) (set! amount (d-GetUserInput (_ "Choose indent of first system") (_ "Give amount in decimal") current))) (if (and (string? amount) (string->number amount)) (begin (d-DirectivePut-score-prefix tag (string-append "\\layout {indent = " amount "}\n")) (d-DirectivePut-score-override tag DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-score-data tag amount) (d-DirectivePut-score-display tag (string-append (_ "indent=") amount))) (d-DirectiveDelete-score tag)) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/ScoreShortIndent0000644000000000000000000000013213135434036030250 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.666648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/ScoreShortIndent.xml0000644000175000017500000000062713135434036032725 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreShortIndent ScoreIndent <_label>Short Indent <_tooltip>Sets the indent to be used on systems after the first. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/SetFontSize.xml0000644000000000000000000000013213135434036030027 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.679981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/SetFontSize.xml0000644000175000017500000000062613135434036031704 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetFontSize <_label>(Print)Set Overall Score Size <_tooltip>Choose the font size of for the score, and hence how much space it takes up. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/MeasuresPerLine.0000644000000000000000000000013213135434036030134 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.679981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/MeasuresPerLine.scm0000644000175000017500000000403413135434036032511 0ustar00jjbenhamjjbenham00000000000000;;;MeasuresPerLine (let ((tag "MeasuresPerLine")(params MeasuresPerLine::params)(value #f)) (if (d-Directive-score? tag) (let ((choice (RadioBoxMenu (cons (_ "Revert to Optimal") 'delete) (cons (_ "Edit") 'edit)))) (case choice ((delete) (d-DirectiveDelete-score tag) (d-SetSaved #f) (set! params 'delete))))) (if (and params (not (equal? params "edit"))) (set! value params) (set! value (d-GetUserInput (_ "Measures per line") (_ "Give required measures per line: ") "4"))) (if (and (string? value) (string->number value)) (begin (d-DirectivePut-score-display tag (_ "Measures per line")) (d-DirectivePut-score-override tag (logior DENEMO_OVERRIDE_AFFIX)) (d-DirectivePut-score-prefix tag (string-append " #(define ((bars-per-line-engraver bar-list) context) (let* ((working-copy bar-list) (total (1+ (car working-copy)))) `((acknowledgers (paper-column-interface . ,(lambda (engraver grob source-engraver) (let ((internal-bar (ly:context-property context 'internalBarNumber))) (if (and (pair? working-copy) (= (remainder internal-bar total) 0) (eq? #t (ly:grob-property grob 'non-musical))) (begin (set! (ly:grob-property grob 'line-break-permission) 'force) (if (null? (cdr working-copy)) (set! working-copy bar-list) (begin (set! working-copy (cdr working-copy)))) (set! total (+ total (car working-copy)))))))))))) \\layout { \\context { \\Score %use the line below to insist on your layout %\\override NonMusicalPaperColumn.line-break-permission = ##f \\consists #(bars-per-line-engraver '( " value "))}} ")) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/RaggedLast.xml0000644000000000000000000000013213135434036027627 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.679981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/RaggedLast.xml0000644000175000017500000000063113135434036031500 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RaggedLast RaggedBottom <_label>Ragged Last <_tooltip>When set the last line will not be stretched to fill the line. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/MeasuresPerLine.0000644000000000000000000000013213135434036030134 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.679981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/MeasuresPerLine.xml0000644000175000017500000000063013135434036032525 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MeasuresPerLine SystemSystemPadding <_label>Measures Per Line <_tooltip>Forces a fixed number of measures per line. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/TwoSidedMargins.0000644000000000000000000000013213135434036030134 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.699981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/TwoSidedMargins.scm0000644000175000017500000000046413135434036032514 0ustar00jjbenhamjjbenham00000000000000;;;TwoSidedMargins (let ((tag "TwoSidedMargins")) (if (d-Directive-paper? tag) (begin (d-DirectiveDelete-paper tag) (d-InfoDialog (_ "Single-sided margins will be used"))) (d-DirectivePut-paper-postfix tag " two-sided = ##t ")) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/SetPageSize.scm0000644000000000000000000000013213135434036027757 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.699981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/SetPageSize.scm0000644000175000017500000000270313135434036031632 0ustar00jjbenhamjjbenham00000000000000;;;SetPageSize (let ((tag "SetPageSize")(width #f)(height #f)(params SetPageSize::params)) (define data (d-DirectiveGet-paper-data tag)) (define (set-size data) (d-DirectivePut-paper-postfix tag (string-append " #(set! paper-alist (cons '(\"custom-size\" . (cons (* " (car data) " cm) (* " (cdr data) " cm))) paper-alist)) #(set-paper-size \"custom-size\")")) (d-DirectivePut-paper-data tag (format #f "(cons ~s ~s)" width height))) (define (do-resize data) (set! width (d-GetUserInput (_ "Page Size") (_ "Give page width in cm ") (car data))) (if width (begin (set! height (d-GetUserInput (_ "Page Size") (_ "Give page height in cm ") (cdr data))) (if height (set-size (cons width height)))))) (if data (set! data (eval-string data))) (if (equal? params "edit") (set! params #f)) (if params (set-size (eval-string params)) (begin (if data (begin (let ((choice (RadioBoxMenu (cons (_ "Revert to Default") 'default) (cons (_ "Re-size") 'resize)))) (case choice ((default) (d-DirectiveDelete-paper tag)) ((resize) (do-resize data))))) (do-resize (cons 21.6 27.9)))))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/RaggedLast.scm0000644000000000000000000000013213135434036027611 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.699981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/RaggedLast.scm0000644000175000017500000000042213135434036031460 0ustar00jjbenhamjjbenham00000000000000;;;RaggedLast (let ((tag "RaggedLast")) (if (d-Directive-paper? tag) (d-DirectiveDelete-paper tag) (begin (d-DirectivePut-paper-postfix tag "\nragged-last = ##t") (d-DirectivePut-paper-override tag DENEMO_OVERRIDE_GRAPHIC) ) ) (d-SetSaved #f) )denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/VerticalSpacing0000644000000000000000000000013213135434150030066 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.546648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/0000755000175000017500000000000013135434150032014 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000013213135434036030150 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.699981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/RaggedBottom.xml0000644000175000017500000000112113135434036035112 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LimitInterSystemSpace RaggedBottom <_label>Ragged Bottom <_tooltip>This turns ragged bottom off/on. If set, systems will not spread vertically down the page. This does not affect the last page. This should be set for pieces that have only two or three systems per page, for example orchestral scores. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032013135434036030147 xustar00118 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/LimitInterSystemSpace.xml 30 mtime=1500919838.029981805 30 atime=1500919929.709981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/LimitInterSystemS0000644000175000017500000000067413135434036035361 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreIndent LimitInterSystemSpace <_label>Limit Space Between Systems <_tooltip>Limits the extent to which the lines are spaced apart to fill the page. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032013135434036030147 xustar00118 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/LastBottomSpacingDist.xml 30 mtime=1500919838.029981805 30 atime=1500919929.709981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/LastBottomSpacing0000644000175000017500000000074013135434036035340 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LastBottomSpacingDist <_label>Last System to Bottom Spacing <_tooltip>Set the distance from the last system or top-level markup on a page to the bottom of the printable area (i.e. the top of the bottom margin). denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000031713135434036030155 xustar00117 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/TopMarkupSpacingDist.xml 30 mtime=1500919838.029981805 30 atime=1500919929.709981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/TopMarkupSpacingD0000644000175000017500000000077613135434036035307 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TopMarkupSpacingDist <_label>Top to Title Spacing <_tooltip>Set the distance from the top of the printable area (i.e. the bottom of the top margin) to the first (title or top-level) markup on a page, when there is no system between the two. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000031113135434036030147 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/SystemsPerPage.xml 30 mtime=1500919838.029981805 30 atime=1500919929.709981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/SystemsPerPage.xm0000644000175000017500000000065113135434036035302 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SystemsPerPage SystemSystemPadding <_label>Systems Per Page <_tooltip>Forces a specific number of systems (lines of music) per page. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000031713135434036030155 xustar00117 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/TopSystemSpacingDist.scm 30 mtime=1500919838.029981805 30 atime=1500919929.709981805 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/TopSystemSpacingD0000644000175000017500000000015413135434036035322 0ustar00jjbenhamjjbenham00000000000000(DenemoSetVerticalSpacingDist "TopSystemSpacingDist" "top-system-spacing" (_ "Top to System Spacing") "1") denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032213135434036030151 xustar00120 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/MarkupMarkupSpacingDist.xml 30 mtime=1500919838.029981805 30 atime=1500919929.719981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/MarkupMarkupSpaci0000644000175000017500000000061113135434036035337 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MarkupMarkupSpacingDist <_label>Title to Title Spacing <_tooltip>Set the distance between two (title or top-level) markups. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032113135434036030150 xustar00119 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/ScoreSystemSpacingDist.scm 30 mtime=1500919838.029981805 30 atime=1500919929.719981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/ScoreSystemSpacin0000644000175000017500000000017413135434036035362 0ustar00jjbenhamjjbenham00000000000000(DenemoSetVerticalSpacingDist "ScoreSystemSpacingDist" "score-system-spacing" (_ "Movement to First System Spacing") "14") denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032213135434036030151 xustar00120 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/MarkupMarkupSpacingDist.scm 30 mtime=1500919838.029981805 30 atime=1500919929.719981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/MarkupMarkupSpaci0000644000175000017500000000016413135434036035342 0ustar00jjbenhamjjbenham00000000000000(DenemoSetVerticalSpacingDist "MarkupMarkupSpacingDist" "markup-markup-spacing" (_ "Title to Title Spacing") "12") denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032213135434036030151 xustar00120 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/MarkupSystemSpacingDist.scm 30 mtime=1500919838.029981805 30 atime=1500919929.719981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/MarkupSystemSpaci0000644000175000017500000000016513135434036035370 0ustar00jjbenhamjjbenham00000000000000(DenemoSetVerticalSpacingDist "MarkupSystemSpacingDist" "markup-system-spacing" (_ "Markup to System Spacing") "5") denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032213135434036030151 xustar00120 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/SystemSystemSpacingDist.scm 30 mtime=1500919838.029981805 30 atime=1500919929.719981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/SystemSystemSpaci0000644000175000017500000000016613135434036035416 0ustar00jjbenhamjjbenham00000000000000(DenemoSetVerticalSpacingDist "SystemSystemSpacingDist" "system-system-spacing" (_ "System to System Spacing") "12") denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000031713135434036030155 xustar00117 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/TopMarkupSpacingDist.scm 30 mtime=1500919838.029981805 30 atime=1500919929.733315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/TopMarkupSpacingD0000644000175000017500000000015313135434036035274 0ustar00jjbenhamjjbenham00000000000000(DenemoSetVerticalSpacingDist "TopMarkupSpacingDist" "top-system-spacing" (_ "Top to Title Spacing") "0") denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032013135434036030147 xustar00118 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/LastBottomSpacingDist.scm 30 mtime=1500919838.029981805 30 atime=1500919929.733315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/LastBottomSpacing0000644000175000017500000000016613135434036035342 0ustar00jjbenhamjjbenham00000000000000(DenemoSetVerticalSpacingDist "LastBottomSpacingDist" "last-bottom-spacing" (_ "Last System to Bottom Spacing") "1") denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032113135434036030150 xustar00119 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/ScoreSystemSpacingDist.xml 30 mtime=1500919838.029981805 30 atime=1500919929.733315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/ScoreSystemSpacin0000644000175000017500000000077513135434036035371 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreSystemSpacingDist <_label>Movement to First System Spacing <_tooltip>Set the distance between the last system of a movement and the first system of the movement that follows it, when no (title or top-level) markup exists between them. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032213135434036030151 xustar00120 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/SystemSystemSpacingDist.xml 30 mtime=1500919838.029981805 30 atime=1500919929.733315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/SystemSystemSpaci0000644000175000017500000000056213135434036035416 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SystemSystemSpacingDist <_label>System to System Spacing <_tooltip>Set the distance between systems. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000031613135434036030154 xustar00116 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/SystemSystemPadding.scm 30 mtime=1500919838.029981805 30 atime=1500919929.733315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/SystemSystemPaddi0000644000175000017500000000155113135434036035377 0ustar00jjbenhamjjbenham00000000000000;;;SystemSystemPadding (let ((tag "SystemSystemPadding") (value #f)) (define (SystemSystemPadding::set value) (d-DirectivePut-paper-display tag value) (d-DirectivePut-paper-postfix tag (string-append " system-system-spacing #'padding = #" value "\n"))) (if (or (not SystemSystemPadding::params) (equal? SystemSystemPadding::params "edit")) (begin (set! SystemSystemPadding::params #f) (set! value (d-DirectiveGet-paper-display tag)))) (if SystemSystemPadding::params (begin (SystemSystemPadding::set (number->string SystemSystemPadding::params))) (begin (if (not value) (set! value "5")) (set! value (d-GetUserInput (_ "Padding Between Systems") (_ "Give extra padding (1=no extra space, staff units)") value)))) (disp "value is " value "\n") (if (and (string? value) (string->number value)) (SystemSystemPadding::set value))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000031613135434036030154 xustar00116 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/SystemSystemPadding.xml 30 mtime=1500919838.029981805 30 atime=1500919929.753315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/SystemSystemPaddi0000644000175000017500000000103613135434036035375 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreIndent SystemSystemPadding <_label>System to System Padding <_tooltip>Allows control over the padding between successive systems down the page. (A system is all the staffs representing the music at one time, sometimes called a "line" of music). denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000031113135434036030147 xustar00111 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/SystemsPerPage.scm 30 mtime=1500919838.029981805 30 atime=1500919929.753315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/SystemsPerPage.sc0000644000175000017500000000075013135434036035263 0ustar00jjbenhamjjbenham00000000000000;;;SystemsPerPage (let ((tag "SystemsPerPage")(params SystemsPerPage::params)(value #f)) (if (and params (not (equal? params "edit"))) (set! value params) (set! value (d-GetUserInput (_ "Systems Per Page") (_ "Give required systems (lines) per page: ") "10"))) (if (and value (string->number value)) (begin (d-DirectivePut-paper-display tag (_ "Systems Per Page")) (d-DirectivePut-paper-postfix tag (string-append " systems-per-page = " value "\n")) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000031713135434036030155 xustar00117 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/TopSystemSpacingDist.xml 30 mtime=1500919838.029981805 30 atime=1500919929.753315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/TopSystemSpacingD0000644000175000017500000000077713135434036035335 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TopSystemSpacingDist <_label>Top to System Spacing <_tooltip>Set the distance from the top of the printable area (i.e. the bottom of the top margin) to the first system on a page, when there is no (title or top-level) markup between the two. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032213135434036030151 xustar00120 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/MarkupSystemSpacingDist.xml 30 mtime=1500919838.029981805 30 atime=1500919929.753315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/MarkupSystemSpaci0000644000175000017500000000065613135434036035375 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MarkupSystemSpacingDist <_label>Markup to System Spacing <_tooltip>Sets the basic distance between a (title or top-level) markup and the system that follows it. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000013213135434036030150 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.763315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/RaggedBottom.scm0000644000175000017500000000043013135434036035076 0ustar00jjbenhamjjbenham00000000000000;;;RaggedBottom (let ((tag "RaggedBottom")) (if (d-Directive-paper? tag) (d-DirectiveDelete-paper tag) (begin (d-DirectivePut-paper-postfix tag "\nragged-bottom = ##t") (d-DirectivePut-paper-override tag DENEMO_OVERRIDE_GRAPHIC) ) ) (d-SetSaved #f) )denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032013135434036030147 xustar00118 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/LimitInterSystemSpace.scm 30 mtime=1500919838.029981805 30 atime=1500919929.763315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/LimitInterSystemS0000644000175000017500000000174713135434036035363 0ustar00jjbenhamjjbenham00000000000000;;;LimitInterSystemSpace (let* ((tag "LimitInterSystemSpace") (params LimitInterSystemSpace::params) (value "1.2") (lilypond-proc (lambda (pvalue) (d-DirectivePut-paper-data tag pvalue) (d-DirectivePut-paper-postfix tag (string-append "\npage-limit-inter-system-space = ##t\npage-limit-inter-system-space-factor = " pvalue))))) (if (number? params) (set! value (number->string params))) (ManageSystemDirective params d-Directive-paper? lilypond-proc (lambda () (d-DirectiveGet-paper-data tag)) d-DirectiveDelete-paper tag (_ "Spacing Between Systems") (_ "Give spacing limit (1=no extra space)") value (lambda (value) (and value (string->number value))) (_ "Customized spacing limit removed"))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032113135434036030150 xustar00119 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/ScoreMarkupSpacingDist.xml 30 mtime=1500919838.029981805 30 atime=1500919929.763315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/ScoreMarkupSpacin0000644000175000017500000000066613135434036035343 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreMarkupSpacingDist <_label>Score to Title Spacing <_tooltip>Set the distance between the last system of a score and the (title or top-level) markup that follows it. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/PaxHeaders.19168/0000644000000000000000000000032113135434036030150 xustar00119 path=denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/ScoreMarkupSpacingDist.scm 30 mtime=1500919838.029981805 30 atime=1500919929.763315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/VerticalSpacing/ScoreMarkupSpacin0000644000175000017500000000016213135434036035332 0ustar00jjbenhamjjbenham00000000000000(DenemoSetVerticalSpacingDist "ScoreMarkupSpacingDist" "score-markup-spacing" (_ "Score to Title Spacing") "12") denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/SetPageCount.xml0000644000000000000000000000013213135434036030153 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.763315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/SetPageCount.xml0000644000175000017500000000065513135434036032032 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetPageCount SetPageSize <_label>Set Total Number of Pages <_tooltip>Forces the score to be typeset onto the number of pages you choose. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/ProportionalNota0000644000000000000000000000013213135434036030325 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.773315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/ProportionalNotation.xml0000644000175000017500000000066413135434036033675 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ProportionalNotation DenemoBar <_label>Proportional Note Spacing <_tooltip>Spaces notes in proportion to duration, based on the duration given. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/SetFonts.scm0000644000000000000000000000013213135434036027341 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.773315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/SetFonts.scm0000644000175000017500000000415713135434036031221 0ustar00jjbenhamjjbenham00000000000000;;;SetFonts (let ((tag "SetFonts") (params SetFonts::params)(data #f) (values '())) (define (set-values) (define serif (assq-ref values 'serif)) (define sans (assq-ref values 'sans)) (define mono (assq-ref values 'mono)) (d-DirectivePut-paper-data tag (format #f "'~s" values)) (disp "Have " sans " and " serif "\n\n") (d-DirectivePut-paper-postfix tag (string-append "\n#(define fonts (make-pango-font-tree \"" serif "\" \""sans"\" \""mono"\" (/ staff-height pt 20)))\n"))) (set! data (d-DirectiveGet-paper-data tag)) (if data (set! values (eval-string data)) (begin (set! values (assq-set! values 'serif "Times New Roman")) (set! values (assq-set! values 'sans "Nimbus Sans")) (set! values (assq-set! values 'mono "Luxi Mono")))) (if params (let ((serif (assq-ref params 'serif)) (sans (assq-ref params 'sans)) (mono (assq-ref params 'mono))) (set! params #f) (if serif (set! values (assq-set! values 'serif serif))) (if sans (set! values (assq-set! values 'sans sans))) (if mono (set! values (assq-set! values 'mono mono)))) (let ((choice (RadioBoxMenu (cons (_ "Titles, Lyrics etc.") 'serif) (cons (_ "Chord Names, etc. (sans serif)") 'sans) (cons (_ "Mono-spaced font") 'mono)))) (if choice (let ((font (d-SelectFont))) (if font (set! values (assq-set! values choice font)) (set! params 'abort))) (set! params 'abort)))) (if (not params) (begin (d-SetSaved #f) (set-values) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/ScoreIndent.xml0000644000000000000000000000013213135434036030027 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.773315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/ScoreIndent.xml0000644000175000017500000000056113135434036031702 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreIndent <_label>Indent <_tooltip>Indent the first system of every movement by the given amount. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/ProportionalNota0000644000000000000000000000013213135434036030325 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.773315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/ProportionalNotation.scm0000644000175000017500000000110013135434036033641 0ustar00jjbenhamjjbenham00000000000000;;;ProportionalNotation (let ((tag "ProportionalNotation")(count ProportionalNotation::params)) (d-DirectiveDelete-score tag) (if count (set! count (number->string count)) (set! count (d-GetUserInput (_ "Proportional Notation") (_ "Give base duration: ") "4"))) (if (and (string? count) (string->number count)) (ToggleDirective "score" "postfix" tag (string-append "\\set Score.proportionalNotationDuration = #(ly:make-moment 1/" count ")\n")) (begin (d-InfoDialog (_ "Default music spacing restored."))))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/PageBreaksBefore0000644000000000000000000000013213135434036030142 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.783315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PageBreaksBeforeMovements.scm0000644000175000017500000000052613135434036034475 0ustar00jjbenhamjjbenham00000000000000;;;PageBreaksBeforeMovements (let ((params PageBreaksBeforeMovements::params)) (if (not params) (set! params (d-Directive-movementcontrol? "MovementPageBreak"))) (d-PushPosition) (while (d-PreviousMovement)) (while (d-NextMovement) (d-MovementPageBreak #t) (if (not (eq? params #t)) (d-MovementPageBreak #f))) (d-PopPosition))denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/SetMargin.xml0000644000000000000000000000013213135434036027503 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.783315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/SetMargin.xml0000644000175000017500000000065713135434036031364 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetMargin ScoreIndent <_label>Adjust Margins <_tooltip>Allows the left, right, top and bottom margins to be set to a value in millimeters. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/PageBreaksBefore0000644000000000000000000000013213135434036030142 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.783315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PageBreaksBeforeMovements.xml0000644000175000017500000000063313135434036034512 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PageBreaksBeforeMovements DenemoBar <_label>Page Breaks (On/Off) <_tooltip>Movements will start on a new page (Off/On) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/TwoSidedMargins.0000644000000000000000000000013213135434036030134 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.783315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/TwoSidedMargins.xml0000644000175000017500000000063013135434036032525 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TwoSidedMargins SetMargin <_label>Two Sided Margins <_tooltip>Uses different margins for left and right hand pages. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/SetMargin.scm0000644000000000000000000000013213135434036027465 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.783315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/SetMargin.scm0000644000175000017500000000610013135434036031333 0ustar00jjbenhamjjbenham00000000000000;;;SetMargin (let ((tag #f) (value #f)(two-sided (d-Directive-paper? "TwoSidedMargins"))) (define (set-value tag margin value) (d-DirectivePut-paper-data tag value) (d-DirectivePut-paper-postfix tag (string-append margin value "\\mm\n"))) (define (do-choice choice) (define margin #f) (define tag #f) (case choice ((left) (begin (set! tag "LeftMargin") (set! margin "left-margin = ") (set! value (d-DirectiveGet-paper-data tag)))) ((right) (begin (set! tag "RightMargin") (set! margin "right-margin = ") (set! value (d-DirectiveGet-paper-data tag)))) ((inner) (begin (set! tag "InnerMargin") (set! margin "inner-margin = ") (set! value (d-DirectiveGet-paper-data tag)))) ((outer) (begin (set! tag "OuterMargin") (set! margin "outer-margin = ") (set! value (d-DirectiveGet-paper-data tag)))) ((top) (begin (set! tag "TopMargin") (set! margin "top-margin = ") (set! value (d-DirectiveGet-paper-data tag)))) ((bottom) (begin (set! tag "BottomMargin") (set! margin "bottom-margin = ") (set! value (d-DirectiveGet-paper-data tag))))) (if (not value) (set! value "20")) (case choice ((left) (set! value (DenemoGetUserNumberAsString (_ "Left Margin") "Give Left Margin (mm)" value))) ((inner) (set! value (DenemoGetUserNumberAsString (_ "Inner Margin") "Give Inner Margin (mm)" value))) ((outer) (set! value (DenemoGetUserNumberAsString (_ "Outer Margin") "Give Outer Margin (mm)" value))) ((right) (set! value (DenemoGetUserNumberAsString (_ "Right Margin") "Give Right Margin (mm)" value))) ((top) (set! value (DenemoGetUserNumberAsString (_ "Top Margin") "Give Top Margin (mm)" value))) ((bottom) (set! value (DenemoGetUserNumberAsString (_ "Bottom Margin") "Give Bottom Margin (mm)" value)))) (if value (set-value tag margin value))) (define choice (RadioBoxMenu (if two-sided (cons (_ "Inner Margin") 'inner) (cons (_ "Left Margin") 'left)) (if two-sided (cons (_ "Outer Margin") 'outer) (cons (_ "Right Margin") 'right)) (cons (_ "Top Margin") 'top) (cons (_ "Bottom Margin") 'bottom))) (do-choice choice) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/SetFonts.xml0000644000000000000000000000013213135434036027357 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.803315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/SetFonts.xml0000644000175000017500000000064313135434036031233 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetFonts SetMargin <_label>Set Fonts <_tooltip>Select the default fonts used for titles, chord names etc. for the whole score. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/PaxHeaders.19168/SetPageCount.scm0000644000000000000000000000013213135434036030135 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.803315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PrintLayout/SetPageCount.scm0000644000175000017500000000066213135434036032012 0ustar00jjbenhamjjbenham00000000000000(let ((tag "SetPageCount")(count (d-GetUserInput (_ "Total Page Count") (_ "Give Pages Required: ") "4"))) (if (and count (string->number count)) (begin (d-DirectivePut-score-prefix tag (string-append "\\paper { page-count=" count "}")) (d-DirectivePut-score-display tag (string-append (_ "Page Count") count)) (SetDirectiveConditional #f (cons "score" tag)) (d-SetSaved #f)) (d-WarningDialog (_ "Cancelled")))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/TransposeOctaveUp.scm0000644000000000000000000000013213135434036026727 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.803315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/TransposeOctaveUp.scm0000644000175000017500000000036513135434036030604 0ustar00jjbenhamjjbenham00000000000000(d-DirectivePut-score-postfix "TransposeScore" "\\transpose c c' ") (d-DirectivePut-score-display "TransposeScorePrint" (_ "Print out 8va up")) (d-DirectivePut-score-override "TransposeScorePrint" DENEMO_OVERRIDE_GRAPHIC) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/TransposeScorePrint.scm0000644000000000000000000000013213135434036027271 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.813315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/TransposeScorePrint.scm0000644000175000017500000000776413135434036031160 0ustar00jjbenhamjjbenham00000000000000;;;; TransposeScorePrint (define-once Transpose::Interval "c ees") (let ((text #f) (global-tag "GlobalTranspose")(tag "TransposeOnPrint")) (define (get-step note) (let ((step #f)) (case (string-ref note 0) ((#\c) (set! step 0)) ((#\d) (set! step 1)) ((#\e) (set! step 2)) ((#\f) (set! step 3)) ((#\g) (set! step 4)) ((#\a) (set! step 5)) ((#\b) (set! step 6))) step)) (define (get-accidental note) (define NATURAL 0) (define FLAT (/ -1 2)) (define SHARP (/ 1 2)) (define DOUBLE-FLAT -1) (define DOUBLE-SHARP 1) (if (string-contains note "isis") DOUBLE-SHARP (if (string-contains note "eses") DOUBLE-FLAT (if (string-contains note "is") SHARP (if (string-contains note "es") DOUBLE-FLAT NATURAL))))) (define (step-diff base note) (define step1 (get-step base)) (define step2 (get-step note)) (set! step1 (- step2 step1)) (while (< step1 0) (set! step1 (+ step1 7))) step1) (define (acc-diff base note) (define acc1 (get-accidental base)) (define acc2 (get-accidental note)) (/ (- acc2 acc1) 2)) (if (and TransposeScorePrint::params (not (equal? TransposeScorePrint::params "edit"))) (set! Transpose::Interval TransposeScorePrint::params) (set! Transpose::Interval (d-GetLilyPondSyntaxFromUser (_ "Set Transpose Interval") (_ "Give Interval to transpose by as two note names, for example \"c g\" means transpose 5th up. Note names are in Dutch!!! a,b,c ... are the same but \"es\" = flat, so e.g. bes means b-flat \"is\" = sharp so e.g fis means f-sharp Use commas for octave(s) down, single-quotes for octave(s) up e.g. c c' means octave up. You do not have to start with c e.g. d e means a tone higher. ") (string-append "\\score {<< {\\clef treble \\key c \\major c' d' e' f' g' a' b'} >>} _\\markup\\huge \"" (_ "Will be transposed to:") "\" \\score{<<\\transpose ") " {\\clef treble \\key c \\major c'^\\markup\\huge{C} d'^\\markup\\huge{D} e'^\\markup\\huge{E} f'^\\markup\\huge{F} g'^\\markup\\huge{G} a'^\\markup\\huge{A} b'^\\markup\\huge{B}} >>}" Transpose::Interval ))) (if Transpose::Interval (let ((base #f)(note (string-tokenize Transpose::Interval)) (choice (RadioBoxMenu (cons "Global (includes quoted music)\n(and any layout)" 'global) (cons "Main Score Only\n(overrides global for layout)" 'score)))) (d-DirectiveDelete-score "TransposeScorePrint") ;;;get rid of old style transpose directive (d-DirectiveDelete-score tag) (d-DirectiveDelete-score global-tag) (set! base (car note)) (set! note (cadr note)) (case choice ((global) (d-DirectivePut-score-override global-tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePrioritizeTag-score global-tag) (d-DirectivePut-score-prefix global-tag (string-append "#(define DenemoTransposeStep " (number->string (step-diff base note)) ")\n" "#(define DenemoTransposeAccidental " (number->string (acc-diff base note)) ")\n" "\nDenemoGlobalTranspose = #(define-music-function (parser location arg)(ly:music?) #{\\transpose " Transpose::Interval "#arg #})\n")) (d-DirectivePut-score-postfix tag "\\DenemoGlobalTranspose ")) (else (d-DirectivePut-score-postfix tag (string-append "\\transpose " Transpose::Interval " ")))) (set! text (string-append "Print transposed: " Transpose::Interval " ")) (d-DirectivePut-score-display tag text) (d-DirectivePut-score-override tag DENEMO_OVERRIDE_GRAPHIC) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ScoreChooseNotehead.xml0000644000000000000000000000013213135434036027204 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.813315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ScoreChooseNotehead.xml0000644000175000017500000000063613135434036031062 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreChooseNotehead AccidentalStyle <_label>Set Notehead Style <_tooltip>Sets the type of notehead to be used score-wide. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/TieWaitForNote.xml0000644000000000000000000000013213135434036026163 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.813315139 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/TieWaitForNote.xml0000644000175000017500000000074513135434036030042 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TieWaitForNote StaccatoStaccatissimo <_label>Ties Extend to Matching Note <_tooltip>Ties will extend over intermediate notes until the note tied to occurs. Use for written-out arpeggio styles. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ToggleWysiwygMarks.xml0000644000000000000000000000013213135434036027142 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.826648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ToggleWysiwygMarks.xml0000644000175000017500000000102113135434036031005 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LilyPondDefinition ToggleWysiwygMarks <_label>Typeset Red Dots (Off/On) <_tooltip>Typesets with red dots on the graphical objects. Use these for accurate tweaking of positions via clicking and dragging with mouse on final typeset score. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ToggleWysiwygMarks.scm0000644000000000000000000000013213135434036027124 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.826648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ToggleWysiwygMarks.scm0000644000175000017500000000115313135434036030775 0ustar00jjbenhamjjbenham00000000000000;;;;;;;; ToggleWysiwygMarks (let ((tag "ToggleWysiwygMarks")) (d-SetSaved #f) (if (d-Directive-score? tag) (d-DirectiveDelete-score tag) (begin (d-LilyPondInclude "red-dot.ly") (d-DirectivePut-score-prefix tag "\\layout { \\context { \\Score \\printRefpoint ##f #'all-grobs } } " ) (d-DirectivePut-score-display tag (_ "Wysiwyg Marks On")) (d-InfoDialog (_ "Typeset score will have graphical objects marked with red dots\nUse these for accurate tweaking of positions via wysiwyg operations on the typeset score with mouse"))))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ToggleFigures.scm0000644000000000000000000000013213135434036026050 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.826648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ToggleFigures.scm0000644000175000017500000000067613135434036027732 0ustar00jjbenhamjjbenham00000000000000;;;ToggleFigures (let ((tag "ToggleFigures")(params ToggleFigures::params)) (if (d-Directive-score? tag) (begin (d-DirectiveDelete-score tag) (if (not params) (d-InfoDialog (_ "Bass Figures will be typeset")))) (begin (d-DirectivePut-score-prefix tag "\n\\layout { \\context { \\Staff \\omit BassFigure }\n}\n") (if (not params) (d-InfoDialog (_ "Bass Figures will not be typeset")))))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/AccidentalStyle.xml0000644000000000000000000000013213135434036026370 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.826648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/AccidentalStyle.xml0000644000175000017500000000104513135434036030241 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AccidentalStyle ScoreIndent <_label>Accidental Style <_tooltip>Choose the style for typesetting accidentals. Determines whether or not an accidental is printed in particular circumstances (such as repeated notes in different measures, octaves, voices etc). denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ConnectArpeggios.scm0000644000000000000000000000013213135434036026534 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.826648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ConnectArpeggios.scm0000644000175000017500000000053613135434036030411 0ustar00jjbenhamjjbenham00000000000000(let ((tag "ConnectArpeggios")) (if (d-Directive-score? tag) (d-DirectiveDelete-score tag) (begin (d-DirectivePut-score-prefix tag "\\layout { \\context { \\Score \\consists \"Span_arpeggio_engraver\" connectArpeggios = ##t } }") (d-DirectivePut-score-display tag (_ "Connect Arpeggios")))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/Numbering0000644000000000000000000000013213135434150024444 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.546648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/0000755000175000017500000000000013135434150026372 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/CenterPageNumber.x0000644000000000000000000000013213135434036030103 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.836648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/CenterPageNumber.xml0000644000175000017500000000070413135434036032306 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CenterPageNumber PrintFirstPageNumber <_label>Center Page Numbers <_tooltip>Prints page numbers at center bottom of the page, or revert to default positioning. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/BarNumberAlignment0000644000000000000000000000013213135434036030163 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.836648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/BarNumberAlignment.xml0000644000175000017500000000065613135434036032642 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BarNumberAlignment BarNumberingInterval <_label>Bar Number Alignment <_tooltip>Allow choice of alignment of bar numbers with the barline. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/BarNumbers.xml0000644000000000000000000000013213135434036027306 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.836648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/BarNumbers.xml0000644000175000017500000000054613135434036031164 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BarNumbers <_label>Bar Numbers On/Off <_tooltip>Turns bar numbering on/off in print out. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/FirstPageNumber.sc0000644000000000000000000000013213135434036030110 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.836648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/FirstPageNumber.scm0000644000175000017500000000145413135434036032142 0ustar00jjbenhamjjbenham00000000000000;;;FirstPageNumber (let ((tag "FirstPageNumber")) (define (FirstPageNumber::set value) (d-DirectivePut-paper-postfix tag (string-append " first-page-number = " value "\n"))) (if (equal? FirstPageNumber::params "edit") (begin (set! FirstPageNumber::params #f) (d-DirectiveDelete-paper tag))) (if FirstPageNumber::params (begin (FirstPageNumber::set (number->string FirstPageNumber::params))) (if (d-Directive-paper? tag) (begin (d-DirectiveDelete-paper tag) (d-InfoDialog (_ "Default First Page Number"))) (let ((value (d-GetUserInput (_ "First Page Number") (_ "Give number for first page") "2"))) (if (and (string? value) (string->number value)) (FirstPageNumber::set value))))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/PageNumbersWithIns0000644000000000000000000000013213135434036030165 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.856648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PageNumbersWithInstrument.xml0000644000175000017500000000075213135434036034260 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PageNumbersWithInstrument CenterPageNumber <_label>Bold Page Numbers <_tooltip>Page numbers typeset in a distinct font. The instrumentation is printed too, centered above each page after the first. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/PrintFirstPageNumb0000644000000000000000000000013213135434036030172 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.856648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PrintFirstPageNumber.xml0000644000175000017500000000065113135434036033173 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FirstPageNumber PrintFirstPageNumber <_label>Print First Page Number (Off/On) <_tooltip>Control if the first page number is typeset. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/FirstPageNumber.xm0000644000000000000000000000013213135434036030127 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.856648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/FirstPageNumber.xml0000644000175000017500000000062413135434036032156 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetPageSize FirstPageNumber <_label>Set/Unset First Page Number <_tooltip>Allows setting the first page number. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/BarNumberingInterv0000644000000000000000000000013213135434036030212 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.856648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/BarNumberingInterval.scm0000644000175000017500000000211213135434036033155 0ustar00jjbenhamjjbenham00000000000000;;;BarNumberingInterval (let* ((tag "BarNumberingInterval")(params BarNumberingInterval::params) (value "5") (lilypond-proc (lambda (pvalue) (d-DirectivePut-score-data tag pvalue) (d-DirectivePut-score-postfix tag (string-append "\\override Score.BarNumber.break-visibility = #end-of-line-invisible \\set Score.barNumberVisibility = #(every-nth-bar-number-visible " pvalue") "))))) (if (number? params) (set! value (number->string params))) (ManageSystemDirective params d-Directive-score? lilypond-proc (lambda () (d-DirectiveGet-score-data tag)) d-DirectiveDelete-score tag (_ "Regular Bar Numbering") (_ "Give interval at which to place bar numbers: ") value (lambda (value) (and value (string->number value))) (_ "Default bar numbering restored"))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/PrintFirstPageNumb0000644000000000000000000000013213135434036030172 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.866648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PrintFirstPageNumber.scm0000644000175000017500000000116113135434036033152 0ustar00jjbenhamjjbenham00000000000000;;;PrintFirstPageNumber (let ((tag "PrintFirstPageNumber")) (if (and (d-DirectiveGet-paper-data tag) (eval-string (d-DirectiveGet-paper-data tag))) (begin (d-DirectivePut-paper-data tag "#f") (d-DirectivePut-paper-postfix tag "\nprint-first-page-number = ##f") (d-InfoDialog (_ "No number will be printed on the first page"))) (begin (d-DirectivePut-paper-data tag "#t") (d-DirectivePut-paper-postfix tag "\nprint-first-page-number = ##t") (d-InfoDialog (_ "Page number will be printed on the first page")))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/BarNumberingInterv0000644000000000000000000000013213135434036030212 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.866648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/BarNumberingInterval.xml0000644000175000017500000000062213135434036033177 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BarNumberingInterval <_label>Bar Numbering Interval <_tooltip>Sets the interval at which bar numbers will be printed on typesetting. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/PageNumbersWithIns0000644000000000000000000000013213135434036030165 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.866648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PageNumbersWithInstrument.scm0000644000175000017500000000152313135434036034237 0ustar00jjbenhamjjbenham00000000000000;;;PageNumbersWithInstrument (let ((tag "PageNumbersWithInstrument")) (if (d-Directive-paper? tag) (begin (d-DirectiveDelete-paper tag) (d-InfoDialog (_ "Default Page Numbering Restored"))) (d-DirectivePut-paper-postfix tag " oddHeaderMarkup = \\markup \\fill-line { \"\" \\on-the-fly #not-part-first-page \\fromproperty #'header:instrumentation \\on-the-fly #print-page-number-check-first \\number \\fromproperty #'page:page-number-string } %% evenHeaderMarkup would inherit the value of %% oddHeaderMarkup if it were not defined here evenHeaderMarkup = \\markup \\fill-line { \\on-the-fly #print-page-number-check-first \\number \\fromproperty #'page:page-number-string \\on-the-fly #not-part-first-page \\fromproperty #'header:instrumentation \"\" } ")) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/BarNumberAlignment0000644000000000000000000000013213135434036030163 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.866648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/BarNumberAlignment.scm0000644000175000017500000000074213135434036032620 0ustar00jjbenhamjjbenham00000000000000;;;BarNumberingAlignment (let ((tag "BarNumberingAlignment")(choice (RadioBoxMenu (cons (_ "Center on barline") "CENTER")(cons (_ "Align to right") "RIGHT") (cons (_ "Align to left") "LEFT")))) (d-DirectiveDelete-score tag) (if (string? choice) (ToggleDirective "score" "postfix" tag (string-append "\\override Score.BarNumber.self-alignment-X = #" choice " ")) (begin (d-InfoDialog (_ "Default bar number alignment restored"))))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/CenterPageNumber.s0000644000000000000000000000013213135434036030076 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.866648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/CenterPageNumber.scm0000644000175000017500000000115213135434036032266 0ustar00jjbenhamjjbenham00000000000000;;;CenterPageNumber (let ((tag "CenterPageNumber")) (if (d-Directive-paper? tag) (begin (d-DirectiveDelete-paper tag) (d-InfoDialog (_ "Default page number position reinstated"))) (d-DirectivePut-paper-postfix tag " print-page-number = ##t print-first-page-number = ##t oddHeaderMarkup = \\markup \\null evenHeaderMarkup = \\markup \\null oddFooterMarkup = \\markup { \\fill-line { \\on-the-fly \\print-page-number-check-first \\fromproperty #'page:page-number-string } } evenFooterMarkup = \\oddFooterMarkup ")) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/PaxHeaders.19168/BarNumbers.scm0000644000000000000000000000013213135434036027270 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.876648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/Numbering/BarNumbers.scm0000644000175000017500000000044013135434036031137 0ustar00jjbenhamjjbenham00000000000000(let ((tag "BarNumbers") (params BarNumbers::params)) (if params (d-DirectivePut-score-postfix tag "\\context Score \\applyContext #(set-bar-number-visibility 4000)" ) (ToggleDirective "score" "postfix" "BarNumbers" "\\context Score \\applyContext #(set-bar-number-visibility 4000)" )))denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/TransposeOnPrint.scm0000644000000000000000000000013213135434036026572 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.876648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/TransposeOnPrint.scm0000644000175000017500000000056113135434036030445 0ustar00jjbenhamjjbenham00000000000000;;;TransposeOnPrint (define-once Transpose::Interval #f) (let ((action (RadioBoxMenu (cons (_ "Transpose Score") d-TransposeScorePrint) (cons (_ "Transpose Staff") d-TransposeStaffPrint)))) (if action (let ((interval (d-GetNoteNamesFromUser 2 Transpose::Interval (_ "--- Transpose to -->") ))) (if interval (action interval))))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/TransposeOctaveUp.xml0000644000000000000000000000013213135434036026745 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.876648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/TransposeOctaveUp.xml0000644000175000017500000000064513135434036030623 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TransposeOctaveUp <_label>(Print) Transpose Octave Up <_tooltip>Instructs the LilyPond Engraver to transpose this score one octave up. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ScoreRehearsalMarkFormat.xml0000644000000000000000000000013213135434036030206 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.876648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ScoreRehearsalMarkFormat.xml0000644000175000017500000000071513135434036032062 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreRehearsalMarkFormat ReduceSystemSpacing <_label>(Print) Format of rehearsal marks <_tooltip>Select the format of rehearsal marks (alphabetic, numeric, boxed, etc.) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/TieWaitForNote.scm0000644000000000000000000000013213135434036026145 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.886648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/TieWaitForNote.scm0000644000175000017500000000022213135434036030012 0ustar00jjbenhamjjbenham00000000000000;;;TieWaitForNote (d-DirectivePut-score-prefix "TieWaitForNote" "\\layout { \\context { \\Score tieWaitForNote = ##t } }" ) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/NormalBeamEndings.scm0000644000000000000000000000013213135434036026627 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.886648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/NormalBeamEndings.scm0000644000175000017500000000021613135434036030477 0ustar00jjbenhamjjbenham00000000000000;;;;;;;; NormalBeamEndings ;;removes old syntax no longer valid for current LilyPond version (d-ScoreBlockProlog "") (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ToggleCurveControl.scm0000644000000000000000000000013213135434036027071 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.886648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ToggleCurveControl.scm0000644000175000017500000000140013135434036030735 0ustar00jjbenhamjjbenham00000000000000;;;;;;;; ToggleCurveControl (let ((tag "ToggleCurveControl")) (d-SetSaved #f) (if (d-Directive-score? tag) (d-DirectiveDelete-score tag) (begin (d-LilyPondInclude "control-points.ly") (d-DirectivePut-score-prefix tag "\\layout { \\override Slur #'stencil = #(display-control-points #t) \\override Tie #'stencil = #(display-control-points #t) \\override PhrasingSlur #'stencil = #(display-control-points #t) } " ) (d-DirectivePut-score-display tag (_ "Curve Control Points On")) (d-InfoDialog (_ "Typeset score will have curves marked with control points\nUse these for accurate reshaping of curves via wysiwyg operations on the typeset score with mouse"))))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/PaperSize.scm0000644000000000000000000000013213135434036025204 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.886648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaperSize.scm0000644000175000017500000000124313135434036027055 0ustar00jjbenhamjjbenham00000000000000 ;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;; PaperSize (let ((size "A4") (orientation "portrait")) (set! size (d-GetOption (string-append "a4" stop "letter" stop))) (set! orientation (d-GetOption (string-append (_ "Portrait") stop (_ "Landscape") stop))) (if (equal? orientation (_ "Portrait")) (set! orientation " ") (set! orientation " 'landscape")) (d-DirectivePut-score-prefix "PaperSize" (string-append "#(set-default-paper-size \"" size "\"" orientation")\n")) (d-DirectivePut-score-override "PaperSize" DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-score-display "PaperSize" (string-append (_ "Paper Size =") size orientation)) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/SetBeamExceptions.xml0000644000000000000000000000013213135434036026702 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.886648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/SetBeamExceptions.xml0000644000175000017500000000137513135434036030561 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SetBeamExceptions <_label>Set Beaming Rules <_tooltip>Sets the rules to be used for beaming. With no selection gets the beat for beams to be divided for the prevailing time signature at the cursor. If a there is a selection this will be used as the set of rules. In this case indicate the beaming desired using the manual beam commands [ and ], giving all the beaming rules wanted using several measures if needed (no other rules are used). Repeat with different selections to add further rules. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ToggleFingeringVisibilityInS0000644000000000000000000000013213135434036030255 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.906648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ToggleFingeringVisibilityInScore.scm0000644000175000017500000000055413135434036033564 0ustar00jjbenhamjjbenham00000000000000;;;ToggleFingeringVisibilityInScore (let ((tag "ToggleFingeringVisibilityInScore")) (if (d-Directive-score? tag) (begin (d-DirectiveDelete-score tag) (d-InfoDialog (_ "Fingerings will be typeset"))) (begin (d-DirectivePut-score-prefix tag "\n\\layout { \\omit Fingering }\n") (d-InfoDialog (_ "Fingerings will be not typeset"))))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ToggleFingeringVisibilityInS0000644000000000000000000000013213135434036030255 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.906648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ToggleFingeringVisibilityInScore.xml0000644000175000017500000000072013135434036033575 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleFingeringVisibilityInScore DeactivateTimeSignatureStencil <_label>Fingerings (Off/On) <_tooltip>Turns on/off visibility of fingerings on typesetting for whole score. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/StaccatoStaccatissimo.xml0000644000000000000000000000013213135434036027610 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.906648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/StaccatoStaccatissimo.xml0000644000175000017500000000070313135434036031461 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StaccatoStaccatissimo TrillIsPlus <_label>Staccato as ' <_tooltip>Typesets staccato in 18th c. style, similar to modern stacattissimo. Applies to whole score. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ToggleCurveControl.xml0000644000000000000000000000013213135434036027107 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.906648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ToggleCurveControl.xml0000644000175000017500000000102313135434036030754 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LilyPondDefinition ToggleCurveControl <_label>Typeset Curve Control Points (Off/On) <_tooltip>Typesets with curve control points marked. Use these for accurate tweaking of shape via clicking and dragging with mouse on final typeset score. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/TrillIsPlus.xml0000644000000000000000000000013213135434036025546 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.916648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/TrillIsPlus.xml0000644000175000017500000000064713135434036027426 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LilyPondDefinition TrillIsPlus <_label>Set Trill Style as + <_tooltip>Prints trills with the common 18th c. notation: a plus sign. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/PaperSize.xml0000644000000000000000000000013213135434036025222 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.916648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaperSize.xml0000644000175000017500000000062113135434036027072 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreIndent PaperSize <_label>Paper Size and Orientation <_tooltip>Specifies how the printed page should be. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/PointAndClick.xml0000644000000000000000000000013213135434036026002 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.916648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PointAndClick.xml0000644000175000017500000000137413135434036027660 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreBlockProlog PointAndClick <_label>Point and Click (Off/On) <_tooltip>When on, clicking on a note in the Print Preview window takes the cursor to that note. This works also for Rehearsal Marks and many other objects in the score. The only reason to turn it off is for export to PDF file via the Export menu or the PDF button in the Print View. However, using print to file is a better way of doing this (if your operating system supports it) as then it is not needed. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/StaccatoStaccatissimo.scm0000644000000000000000000000013213135434036027572 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.916648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/StaccatoStaccatissimo.scm0000644000175000017500000000015413135434036031443 0ustar00jjbenhamjjbenham00000000000000;;;StaccatoStaccatissimo (d-LilyPondDefinition (cons "staccato" "#(make-articulation \"staccatissimo\") ")) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/DenemoBar.xml0000644000000000000000000000013213135434036025154 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.916648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/DenemoBar.xml0000644000175000017500000000071313135434036027026 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Ambitus DenemoBar <_label>Typeset Barlines Literally (Off/On) <_tooltip>Advanced: Typesets the Denemo barlines, regardless of the timing. Turns off automatic beaming. denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/ScoreRehearsalMarkFormat.scm0000644000000000000000000000013213135434036030170 xustar0030 mtime=1500919838.029981805 30 atime=1500919929.926648472 30 ctime=1500919913.006648472 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/ScoreRehearsalMarkFormat.scm0000644000175000017500000000146113135434036032043 0ustar00jjbenhamjjbenham00000000000000;ScoreRehearsalMarkFormat (let ((tag "ScoreRehearsalMarkFormat") (choice (RadioBoxMenu (cons (_ "Default") "#format-mark-letters") (cons (_ "Alphabetic") "#format-mark-alphabet") (cons (_ "Numeric") "#format-mark-numbers") (cons (_ "Boxed alphabetic") "#format-mark-box-alphabet") (cons (_ "Boxed numeric") "#format-mark-box-numbers") (cons (_ "Circled alphabetic") "#format-mark-circle-alphabet") (cons (_ "Circled numeric") "#format-mark-circle-numbers")))) (if choice (begin (d-DirectivePut-score-postfix tag (string-append "\n\\set Score.markFormatter = " choice)) (d-DirectivePut-score-override tag DENEMO_OVERRIDE_GRAPHIC) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/PaxHeaders.19168/AccompanistsScore.xml0000644000000000000000000000013213135434036026740 xustar0030 mtime=1500919838.026648472 30 atime=1500919929.926648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Typesetter/AccompanistsScore.xml0000644000175000017500000000102213135434036030604 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeactivateTimeSignatureStencil AccompanistsScore <_label>Accompanist's Score (Off/On) <_tooltip>Sets/Unsets the top staff of each movement to a tiny font, with the lower staffs - the accompaniment - at the normal font. Print effect only. denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/ScoreComment.scm0000644000000000000000000000013213135434036023530 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.926648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/ScoreComment.scm0000644000175000017500000000036513135434036025405 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;; (d-DirectivePut-score-override "ScoreComment" (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_EDITOR)) (d-DirectivePut-score-display "ScoreComment" (_ "Click to edit comment")) (d-DisplayDirectiveTextEditor "score" "ScoreComment")denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/RefreshDynamicDirectives.xml0000644000000000000000000000013213135434036026075 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.926648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/RefreshDynamicDirectives.xml0000644000175000017500000000065613135434036027755 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreBlockProlog RefreshDynamicDirectives <_label>Refresh Dynamic Directives <_tooltip>Re-runs any directives that may have become stale. denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/ScoreHeader.scm0000644000000000000000000000013213135434036023316 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.926648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/ScoreHeader.scm0000644000175000017500000000101413135434036025163 0ustar00jjbenhamjjbenham00000000000000;;;;;;;; ScoreHeader (let ((tag "ScoreHeader") (prolog "")) (set! prolog (d-DirectiveGet-score-prefix tag)) (if (not prolog) (set! prolog "%{Insert LilyPond syntax here %}\n")) (set! prolog (d-GetUserInput (_ "LilyPond Score Header") (_ "Give LilyPond:") prolog)) (if prolog (begin (d-SetSaved #f) (d-DirectivePut-score-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-score-prefix tag prolog) (d-DirectivePut-score-display tag prolog)) (d-WarningDialog (_ "Prolog unchanged"))))denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/RefreshDynamicDirectives.scm0000644000000000000000000000013213135434036026057 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.936648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/RefreshDynamicDirectives.scm0000644000175000017500000000204013135434036027724 0ustar00jjbenhamjjbenham00000000000000;;RefreshDynamicDirectives (let loop ((number 0)) (define tag (d-DirectiveGetNthTag-score number)) (if tag (let ((command (string-append "d-" tag))) ; (disp "looking at " tag "and " command "\n") (if (positive? (logand (d-DirectiveGet-score-override tag) DENEMO_OVERRIDE_DYNAMIC)) (let ((sym (string->symbol command))) (if (defined? sym) (eval-string (string-append "(" command " 'refresh)"))))) (loop (+ 1 number))))) (let loop ((number 0)) (define tag (d-DirectiveGetNthTag-movementcontrol number)) (if tag (let ((command (string-append "d-" tag))) ; (disp "looking at " tag "and " command "\n") (if (positive? (logand (d-DirectiveGet-movementcontrol-override tag) DENEMO_OVERRIDE_DYNAMIC)) (let ((sym (string->symbol command))) (if (defined? sym) (eval-string (string-append "(" command " 'refresh)"))))) (loop (+ 1 number))))) ;;; FIXME there are 13 other types of directive to refresh ,,, denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/ScoreBlockProlog.xml0000644000000000000000000000013213135434036024361 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.936648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/ScoreBlockProlog.xml0000644000175000017500000000065613135434036026241 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreProlog ScoreBlockProlog <_label>LilyPond Score Block Prolog <_tooltip>Inserts LilyPond at the start of every score block (movement). denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/LilyPondInclude.scm0000644000000000000000000000013213135434036024170 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.936648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/LilyPondInclude.scm0000644000175000017500000000510213135434036026037 0ustar00jjbenhamjjbenham00000000000000;;;LilyPondInclude (define-once LilyPondInclude::return #f) (let* ((tag "LilyPondInclude")(params LilyPondInclude::params) (includes (d-DirectiveGet-score-data tag))) (define (setinclude) ;;; sets the LilyPond to include all the files listed in Directive-score-data (d-SetSaved #f) (d-DirectivePut-score-display tag (_ "Included LilyPond Files")) (d-DirectivePut-score-override tag (logior DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_DYNAMIC)) (let ((prefix "")) (define (do-append str) (set! prefix (string-append prefix "\\include \"" str "\"\n"))) (for-each do-append (eval-string (d-DirectiveGet-score-data tag))) (d-DirectivePut-score-prefix tag prefix))) (define (update-data include) ;; if include is not in includes: adds include to the Directive-score-data and updates LilyPond (if (not (member include includes)) (begin (set! includes (cons include includes)) (d-DirectivePut-score-data tag (string-append "'" (format #f "~s" includes))) (setinclude)))) (define (delete-include name) ;; removes name from the Directive-score-data and updates LilyPond (if (member name includes) (begin (set! includes (delete name includes)) (if (null? includes) (d-DirectiveDelete-score tag) (begin (d-DirectivePut-score-data tag (string-append "'" (format #f "~s" includes))) (setinclude)))))) ;;;;;start of procedure (set! LilyPondInclude::return #f) ;;; "return" value (if includes (set! includes (eval-string includes)) (set! includes '())) (cond ((equal? params "edit") (d-DirectiveTextEdit-score tag)) ((string? params) (update-data params)) ((equal? params 'refresh) (setinclude)) ((and (pair? params) (eq? (car params) 'query)) (set! LilyPondInclude::return (member (cdr params) includes))) ((and (pair? params) (eq? (car params) 'delete)) (delete-include (cdr params))) (else (let ((include (d-ChooseFile (_ "Include LilyPond File") DENEMO_LILYPOND_DIR (list "*.ily" "*.ly")))) (if include (begin (set! include (d-FilenameFromPath include)) (update-data include)) (d-WarningDialog (_ "LilyPond include files unchanged"))))))) denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/LilyPondDefinition.xml0000644000000000000000000000013213135434036024713 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.956648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/LilyPondDefinition.xml0000644000175000017500000000075113135434036026567 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LilyPondInclude LilyPondDefinition <_label>LilyPond Definition <_tooltip>Create a definition at the head of the LilyPond text. This can then be referenced in the music. See LilyPond documentation. denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/CheckScore.xml0000644000000000000000000000013213135434036023161 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.956648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/CheckScore.xml0000644000175000017500000000066713135434036025043 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EditScoreDirective CheckScore <_label>Check Score <_tooltip>Checks score for wrong measure durations, unterminated tuplets, slurs, wrong ties etc. denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/LilyPondInclude.xml0000644000000000000000000000013213135434036024206 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.956648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/LilyPondInclude.xml0000644000175000017500000000070513135434036026061 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreBlockProlog LilyPondInclude <_label>LilyPond Include File <_tooltip>Allows specification of a LilyPond include file from the Denemo provided include files. denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/Titles0000644000000000000000000000013213135434150021612 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.546648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/0000755000175000017500000000000013135434150023540 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/PaxHeaders.19168/BookTitles0000644000000000000000000000013213135434150023671 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.546648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/0000755000175000017500000000000013135434150025617 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookDate.scm0000644000000000000000000000013213135434036026145 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.966648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookDate.scm0000644000175000017500000000042713135434036030021 0ustar00jjbenhamjjbenham00000000000000;;BookDate (let ((edit (d-Directive-scoreheader? "BookDate"))) (if BookDate::params (BookTitles::Do "Date" "date" BookDate::params #f edit) (BookTitles::Do "Date" "date" (_ "My Date") (_ "Give name for date/opus number etc or blank out to delete: ") edit))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookTitle.xml0000644000000000000000000000013213135434036026367 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.966648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookTitle.xml0000644000175000017500000000056713135434036030250 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TransposeScorePrint BookTitle <_label>Title <_tooltip>Prints a title on title page denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookPoet.scm0000644000000000000000000000013213135434036026177 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.966648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookPoet.scm0000644000175000017500000000043713135434036030054 0ustar00jjbenhamjjbenham00000000000000;;BookPoet (let ((edit (d-Directive-scoreheader? "BookPoet"))) (if BookPoet::params (BookTitles::Do "Poet" "poet" BookPoet::params #f edit) (BookTitles::Do "Poet" "poet" (_ "My Poet") (_ "Give name for poet/lyricist/librettist etc or blank out to delete: ") edit))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/TocTitle.scm0000644000000000000000000000013213135434036026204 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.966648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/TocTitle.scm0000644000175000017500000000274613135434036030066 0ustar00jjbenhamjjbenham00000000000000;;TocTitle (d-LilyPondInclude "book-titling.ily") (d-PushPosition) (while (d-PreviousMovement)) (let ((tag "TableOfContents") (title "Contents") (pb 3) (mc " \\markuplist \\table-of-contents\n")) (if (d-Directive-paper? tag) (set! title (d-DirectiveGet-paper-display tag))) (set! title (d-GetUserInput (_ "Table of Contents Title") (_ "Give title for the table of contents\nBlank to delete") title)) ;(set! pb (d-GetUserInput (_ "Table of Contents Page Break Control") (_ "Give 0 - No page breaks\n1 - Page Break before Table of Contents\n2 - Page Break after\n3 - Both") pb)) (set! pb (RadioBoxMenu (cons (_ "Page Break before Table of Contents") 'before) (cons (_ "Page Break after Table of Contents") 'after) (cons (_ "Page Break before and after") 'both) (cons (_ "No page breaks") #f))) (case pb ((before) (set! mc (string-append "\n\\pageBreak\n" mc))) ((after) (set! mc (string-append mc "\n\\pageBreak\n"))) ((both) (set! mc (string-append "\n\\pageBreak\n" mc "\\pageBreak\n")))) (if (string-null? title) (begin (d-WarningDialog (_ "Deleted")) (d-DirectiveDelete-paper tag) (d-DirectiveDelete-movementcontrol tag)) (begin (d-DirectivePut-paper-postfix tag (string-append "\ntocTitle = \"" title "\"\n")) (d-DirectivePut-paper-display tag title) (d-DirectivePut-movementcontrol-prefix tag mc))) (d-SetSaved #f)) (d-PopPosition) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookPoet.xml0000644000000000000000000000013213135434036026215 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.966648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookPoet.xml0000644000175000017500000000054513135434036030072 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BookPoet <_label>Poet/Lyricist <_tooltip>Prints the poet or lyricist name on title page denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookCopyright.scm0000644000000000000000000000013213135434036027240 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.976648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookCopyright.scm0000644000175000017500000000047513135434036031117 0ustar00jjbenhamjjbenham00000000000000;;BookCopyright (let ((edit (d-Directive-scoreheader? "BookCopyright"))) (if BookCopyright::params (BookTitles::Do "Copyright" "copyright" BookCopyright::params #f edit) (BookTitles::Do "Copyright" "copyright" (_ "My Copyright") (_ "Give name for copyright etc or blank out to delete: ") edit))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookTitle.scm0000644000000000000000000000013213135434036026351 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.976648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookTitle.scm0000644000175000017500000000201513135434036030220 0ustar00jjbenhamjjbenham00000000000000;;BookTitle (let ((tag "TopMargin")(edit (d-Directive-scoreheader? "BookTitle"))) (if (equal? BookTitle::params "edit") (set! BookTitle::params #f)) (if BookTitle::params (BookTitles::Do "Title" "title" BookTitle::params #f edit) (let ((space (d-DirectiveGet-score-data tag))) (d-LilyPondInclude (cons 'delete "simplified-book-titling.ily")) (BookTitles::Do "Title" "title" (_ "My Title") (_ "Give a title for the whole score or blank out to delete: ") edit) (if (not space) (set! space "0")) (set! space (DenemoGetUserNumberAsString (_ "Space Above Title") (_ "Give amount of space at top of title page") space)) (if (not space) (set! space "0")) (d-SetSaved #f) (d-DirectivePut-score-prefix tag (string-append "#(define denemo-top-margin " space ")\n")) (d-DirectivePut-score-data tag space) (d-DirectivePut-score-override tag DENEMO_OVERRIDE_AFFIX)))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/Epilog0000644000000000000000000000013213135434150025110 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.546648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/Epilog/0000755000175000017500000000000013135434150027036 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/Epilog/PaxHeaders.19168/CriticalCommen0000644000000000000000000000013213135434036030004 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.976648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/Epilog/CriticalCommentary.scm0000644000175000017500000001007713135434036033343 0ustar00jjbenhamjjbenham00000000000000;;CriticalCommentary (if CriticalCommentary::params (begin (if (equal? CriticalCommentary::params "edit") (let ((choice #f)) (set! choice (RadioBoxMenu (cons (_ "Advanced") 'advanced) (cons (_ "Delete") 'delete))) (case choice ((advanced) (if (not (d-DirectiveTextEdit-score "CriticalCommentary")) (d-DirectiveDelete-score "CriticalCommentary"))) ((delete) (d-DirectiveDelete-score "CriticalCommentary")))))) (let ((intro (d-DirectiveGet-score-display "CriticalCommentaryIntro"))) (define Title "Critical Commentary") (define Prolog "Key: m = Movement, v = voice, b = bar") (if intro (begin (set! Title (substring intro 0 (string-index intro #\nl))) (set! Prolog (substring intro (string-index intro #\nl))))) (d-PushPosition) (while (d-PreviousMovement)) (let ((thecomments '()) (tag "CriticalComment")) ;;;format-commentary numbers the strings in the list (define (format-commentary thelist) (define ret " \\markup \\vspace #1 \\markup \\column {\n") (let loop ((count 0)) (if (< count (length thelist)) (begin (set! ret (string-append ret " \\vspace #0.5 \n\\column { \\line \\large {" (number->string (+ 1 count)) ". " (list-ref thelist count) "}\n")) (loop (+ 1 count))))) (string-append ret "}\n")) (let movement () (define movement-number (number->string (d-GetMovement))) (define voice 1) (while (d-MoveToStaffUp)) (d-MoveToBeginning) ;;; for each measure go through all the staffs accumulating a list of comments with the movement/staff/bar location prepended to each. (let measure () (define measure-number (number->string (d-GetMeasure))) (define thecomment #f) (let loop () (if (d-Directive-standalone? tag) (begin (set! thecomment (d-DirectiveGet-standalone-postfix tag)) ; (if (equal? (string-ref thecomment 0) #\\) ; (begin ; (set! thecomment (substring thecomment 19)) ; (set! thecomment (string-drop-right thecomment 1)))) (set! thecomments (cons* (string-append (_ "At m") movement-number (_ " v") (number->string voice) (_ " b") measure-number ":} " thecomment " %end of critical comment\n") thecomments)))) (if (NextDirectiveOfTagInMeasure tag) (loop))) (if (or (d-MoveToVoiceDown) (d-MoveToStaffDown)) (begin (set! voice (+ 1 voice)) (measure)) (begin (if (d-MoveToMeasureRight) (begin (while (d-MoveToStaffUp)) (set! voice 1) (measure)))))) (if (d-NextMovement) (movement) (begin (d-SetSaved #f) ;(d-LilyPondInclude "book-titling.ily") (d-LilyPondInclude "simplified-book-titling.ily") (d-DirectivePut-score-override "CriticalCommentary" DENEMO_OVERRIDE_AFFIX) (if (null? thecomments) (begin (d-DirectivePut-score-postfix "CriticalCommentary" (string-append "\\pageBreak\n\\titledPiece \\markup \"" (scheme-escape Title) "\"\n\\markup {\\vspace #1 \\fill-line {\\postscript #\"-12 3 moveto 24 0 rlineto stroke\"}}\n\\markup {\\italic \\wordwrap-string #\"" (scheme-escape Prolog) "\"}\n" ))) (begin (d-DirectivePut-score-postfix "CriticalCommentary" (string-append "\\pageBreak\n\\titledPiece \\markup \"" (scheme-escape Title) "\"\n\\markup { \\vspace #0.8 \\fill-line {\\postscript #\"-16 3 moveto 24 0 rlineto stroke\"}}\n\\markup {\\italic \\wordwrap-string #\"" (scheme-escape Prolog) "\" \\vspace #1 }\n" (format-commentary (reverse thecomments)))))))))) (d-PopPosition) (d-DirectiveDelete-score "CriticalCommentsAmended"))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/Epilog/PaxHeaders.19168/CriticalCommen0000644000000000000000000000013213135434036030004 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.986648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/Epilog/CriticalCommentary.xml0000644000175000017500000000114013135434036033350 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CriticalCommentary <_label>(Re)Create Epilog - Critical Commentary <_tooltip>Collects together any critical comments from the score and places them in an epilog at the end of the music. The Title and text of the Epilog are created with the CriticalCommentaryIntro command, and critical comments are added with the CriticalComment command. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/Epilog/PaxHeaders.19168/CriticalCommen0000644000000000000000000000013213135434036030004 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.986648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/Epilog/CriticalCommentaryIntro.scm0000644000175000017500000000063713135434036034360 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;CriticalCommentaryIntro (if (not (d-Directive-score? "CriticalCommentaryIntro")) (begin (d-DirectivePut-score-override "CriticalCommentaryIntro" (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_EDITOR)) (d-DirectivePut-score-display "CriticalCommentaryIntro" "Critical Commentary\nKey: m = Movement, v = voice, b = bar\n"))) (d-DirectiveActivate-score "CriticalCommentaryIntro" ) (d-SetSaved #f)denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/Epilog/PaxHeaders.19168/CriticalCommen0000644000000000000000000000013213135434036030004 xustar0030 mtime=1500919838.023315139 30 atime=1500919929.986648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/Epilog/CriticalCommentaryIntro.xml0000644000175000017500000000073713135434036034377 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS TocTitle CriticalCommentaryIntro <_label>Title and Introduction <_tooltip>A button is created for putting a title and introductory text for a critical commentary at the end of the score. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/IncipitFromSelection.0000644000000000000000000000013213135434036030043 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.006648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/IncipitFromSelection.scm0000644000175000017500000000167013135434036032423 0ustar00jjbenhamjjbenham00000000000000;;;IncipitFromSelection (let ((lily "")) (define (accum) (let ((this (d-GetLilyPond))) (if this (set! lily (string-append lily this))))) ;;if no selection select the first two measures of the top staff of the first movement (d-DirectiveDelete-scoreheader "ScoreIncipit") (if (not (d-GoToSelectionStart)) (begin (while (d-PreviousMovement)) (while (d-MoveToStaffUp)) (d-MoveToBeginning) (d-SetMark) (d-MeasureRight) (RepeatProcWhileTest d-CursorRight (lambda () (not (Appending?)))))) (SingleAndSelectionSwitcher accum) (set! lily (string-append (d-GetPrevailingClefAsLilyPond) " " (d-GetPrevailingTimesigAsLilyPond) " " (d-GetPrevailingKeysigAsLilyPond) " " lily)) (set! lily (string-append "\n\\markup \\score {\\DenemoGlobalTranspose\n{" lily "\n}\n\\layout {\nindent = 0.0\\cm\n #(layout-set-staff-size 18)\n}}")) (d-SetSaved #f) (SetScoreHeaderField "incipit" (_ "Incipit") #f lily)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/GraphicTitlePage.xml0000644000000000000000000000013213135434036027647 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.009981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/GraphicTitlePage.xml0000644000175000017500000000101313135434036031513 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GraphicTitlePage BookTitle <_label>Create or Edit Graphic Title Page <_tooltip>Places text/graphics from an encapsulated postscript file at the start of the score. Use this for a title page prepared in your vector graphics editor. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/GraphicTitlePage.scm0000644000000000000000000000013213135434036027631 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.009981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/GraphicTitlePage.scm0000644000175000017500000001331713135434036031507 0ustar00jjbenhamjjbenham00000000000000;;GraphicTitlePage (let ((tag "GraphicTitlePage") (filename #f)(width #f)(space-below #f)(space-left #f) (warning (_ "Wait for your vector graphics editor to start. It will open an SVG file of the same name, if available, but be sure to save as encapsulated postscript (eps). When saving your eps it is good to save as SVG file format as well, as this will give better editing later. Quit your graphics editor before quitting this dialog to return to work in Denemo. If you are saving to a new file you will be asked to open it later.")) (params GraphicTitlePage::params)) (define (edit) (define choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Advanced") 'advanced))) (case choice ((delete) (d-DirectiveDelete-score tag)(set! params 'finished)) ((edit) (if (RadioBoxMenu (cons (string-append (_ "Edit the file ") filename) #t) (cons (_ "Edit width and position ") #f)) (d-EditGraphics filename #f) (set-params))) ((advanced) (d-DirectiveTextEdit-score tag)))) (define (set-params) (set! width (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give width required:") width)) (set! space-below (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give space below required:") space-below)) (set! space-left (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Give space to the left required:") space-left))) (define (scale val) (number->string (/ (* 16 (string->number val)) (string->number (d-ScoreProperties "query=fontsize"))))) (if (list? params) (begin (set! filename (list-ref params 0)) (set! width (list-ref params 1)) (set! space-below (list-ref params 2)) (set! space-left (list-ref params 3))) (if (d-Directive-score? tag) (let ((data (eval-string (d-DirectiveGet-score-data tag)))) (set! filename (list-ref data 0)) (set! width (list-ref data 1)) (set! space-below (list-ref data 2)) (set! space-left (list-ref data 3))))) (if (not filename) (let ((name (d-GetFilename))) (if name (set! filename (string-append (d-PathFromFilename name) "//" "drawing.eps")) (set! filename (string-append DENEMO_HOME_DIR "//" "drawing.eps"))) (set! width "135") (set! space-below "14") (set! space-left "0"))) (if (not (list? params)) (cond ((equal? params "edit") (begin (edit))) ((equal? params 'refresh)) ((equal? params 'finished)) (else (if (RadioBoxMenu (cons (_ "Start From Template") #t) (cons (_ "Choose File") #f)) (begin (set! params 'template) (set! filename (d-EditGraphics #f #f)) (if filename (begin (set! filename (string-append filename ".eps")) (d-WarningDialog warning) (d-SetSaved #f)))) (begin (set! filename (d-ChooseFile (_ "Encapsulated Postscript File") (d-PathFromFilename filename) (list "*.eps" "*.EPS"))) (if filename (begin (set-params) (if (RadioBoxMenu (cons (string-append (_ "Edit the file ") filename) #t) (cons (_ "Use the file unedited") #f)) (begin (d-EditGraphics filename #f) (d-WarningDialog warning) (d-SetSaved #f)))))))))) (if (not (eq? params 'finished)) (begin (if (eq? params 'template) (let ((tempname #f)) (d-WarningDialog (_ "Now dismiss this dialog and select the .eps file you have just saved in the graphics editor program.")) (set! tempname (d-ChooseFile (_ "Encapsulated Postscript File") (d-PathFromFilename filename) (list "*.eps" "*.EPS"))) (if tempname (set! filename tempname)) )) (if (and (d-FileExists filename) width space-below space-left) (begin (d-DirectivePut-score-override tag DENEMO_OVERRIDE_DYNAMIC) ;;call with 'refresh to re-scale for score size change (d-DirectivePut-score-prefix tag (string-append "\\markup {\\hspace #" (scale space-left) " \\with-url #'\"scheme:(d-GraphicTitlePage \\\"edit\\\")\" \\epsfile #X #" (scale width) " #\"" (scheme-escape filename) "\" \\vspace #" (scale space-below) " }")) (d-DirectivePut-score-data tag (string-append "(list \"" (scheme-escape filename) "\" \"" width "\" \"" space-below "\" \"" space-left "\")"))) (let ((message (string-append (_ "The file \"") filename (_ "\"\ndoes not (yet) exist, or no longer exists.\nTypesetting will silently fail until the file exists.\nEither create the file or delete the Graphic Title Page now")))) (d-WarningDialog message) (if (equal? (_ "y") (d-GetUserInput (_ "Encapsulated Postscript File") (_ "Delete Graphic Title Page?") (_ "n"))) (begin (d-DirectiveDelete-score tag) (d-InfoDialog (_ "Graphic Title Page Deleted"))))))))) (d-SetSaved #f) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookInstrumentation.x0000644000000000000000000000013213135434036030160 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.019981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookInstrumentation.xml0000644000175000017500000000073113135434036032363 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BookComposer BookInstrumentation <_label>Instrumentation <_tooltip>Prints the instrumentation on the title page. This can be edited for layouts that print just one part or section. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/IncipitFromSelection.0000644000000000000000000000013213135434036030043 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.019981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/IncipitFromSelection.xml0000644000175000017500000000074213135434036032440 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BookCopyright IncipitFromSelection <_label>Incipit from Selection <_tooltip>Creates an incipit from the selection. This music will be printed on the title page. Only one voice is supported. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookDate.xml0000644000000000000000000000013213135434036026163 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.019981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookDate.xml0000644000175000017500000000055613135434036030042 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BookPoet BookDate <_label>Date <_tooltip>Prints a date on the title page. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookComposer.xml0000644000000000000000000000013213135434036027075 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.019981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookComposer.xml0000644000175000017500000000053213135434036030746 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BookComposer <_label>Composer <_tooltip>Prints a composer name on title page denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookInstrumentation.s0000644000000000000000000000013213135434036030153 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.029981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookInstrumentation.scm0000644000175000017500000000056313135434036032350 0ustar00jjbenhamjjbenham00000000000000;;BookInstrumentation (let ((edit (d-Directive-scoreheader? "BookInstrumentation"))) (if BookInstrumentation::params (BookTitles::Do "Instrumentation" "instrumentation" BookInstrumentation::params #f edit) (BookTitles::Do "Instrumentation" "instrumentation" "Full Score" (_ "Give instrumentation for the default layout or blank out to delete: ") edit))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/TocTitle.xml0000644000000000000000000000013213135434036026222 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.029981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/TocTitle.xml0000644000175000017500000000065213135434036030076 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BookPoet TocTitle <_label>Table of Contents Title <_tooltip>Gives a heading for a table of contents, inserting the table in the book. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookCopyright.xml0000644000000000000000000000013213135434036027256 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.029981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookCopyright.xml0000644000175000017500000000053713135434036031134 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BookCopyright <_label>Copyright <_tooltip>Prints a copyright notice on title page denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookArranger.xml0000644000000000000000000000013213135434036027047 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.029981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookArranger.xml0000644000175000017500000000053413135434036030722 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BookArranger <_label>Arranger <_tooltip>Prints the arranger name on title page denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookComposer.scm0000644000000000000000000000013213135434036027057 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.029981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookComposer.scm0000644000175000017500000000046313135434036030733 0ustar00jjbenhamjjbenham00000000000000;;BookComposer (let ((edit (d-Directive-scoreheader? "BookComposer"))) (if BookComposer::params (BookTitles::Do "Composer" "composer" BookComposer::params #f edit) (BookTitles::Do "Composer" "composer" (_ "My Composer") (_ "Give name for composer etc or blank out to delete: ") edit))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/init.scm0000644000000000000000000000013213135434036025420 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.039981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/init.scm0000644000175000017500000000410413135434036027270 0ustar00jjbenhamjjbenham00000000000000(define (BookTitles::Do field lilyfield initial help edit) (define tag (string-append "Book" field)) (define (get-current tag) (let ((value (d-DirectiveGet-scoreheader-data tag))) (if value value (d-DirectiveGet-scoreheader-display tag)))) (DenemoUseBookTitles) (if (equal? initial "edit") (eval-string (string-append "(d-" tag " #f)")) (let ((chapter (if help (get-current tag) initial)) (simple-tag (string-append "Score" (string-capitalize field)))) (define simple-title (get-current simple-tag)) (if simple-title (begin (d-DirectiveDelete-scoreheader simple-tag) (set! chapter simple-title))) (if (not chapter) (set! chapter initial)) (if help (set! chapter (if edit (let ((response (d-GetUserInputWithSnippets (_ "Book Titles") (string-append (_ "Give ") field) chapter))) (if response (car response) #f)) (let ((response (d-GetUserInput initial help chapter))) (if response (string-append "\"" (scheme-escape response) "\"") #f))))) (if chapter (begin (d-SetSaved #f) (if (string-null? chapter) (d-DirectiveDelete-scoreheader tag) (begin (d-DirectivePut-scoreheader-data tag chapter) (d-DirectivePut-scoreheader-display tag (DenemoAbbreviatedString chapter)) (d-DirectivePut-scoreheader-override tag (logior DENEMO_OVERRIDE_TAGEDIT DENEMO_OVERRIDE_GRAPHIC)) (d-DirectivePut-scoreheader-postfix tag (string-append lilyfield " = \\markup { \\with-url #'\"scheme:(d-Book" field ")\" " "{" chapter "}}\n"))))))))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/PaxHeaders.19168/BookArranger.scm0000644000000000000000000000013213135434036027031 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.039981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/BookTitles/BookArranger.scm0000644000175000017500000000047413135434036030707 0ustar00jjbenhamjjbenham00000000000000;;BookArranger (let ((edit (d-Directive-scoreheader? "BookArranger"))) (if BookArranger::params (BookTitles::Do "Arranger" "arranger" BookArranger::params #f edit) (BookTitles::Do "Arranger" "arranger" (_ "My Arranger") (_ "Give name for arranger etc or blank out to delete: ") edit))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/PaxHeaders.19168/TaglineLink.xml0000644000000000000000000000013213135434036024615 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.039981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/TaglineLink.xml0000644000175000017500000000061613135434036026471 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreTagline TaglineLink <_label>Tagline with Link <_tooltip>Creates a tagline with a link in PDF output. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/PaxHeaders.19168/FilledTitleLine.xml0000644000000000000000000000013213135434036025425 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.039981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/FilledTitleLine.xml0000644000175000017500000000072413135434036027301 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FilledTitleLine ScoreVersion <_label>Filled Title Line <_tooltip>Prints three pieces of text left, right and centered on a single line. Each field can be a different size etc. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/PaxHeaders.19168/ScoreVersion.scm0000644000000000000000000000013213135434036025017 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.056648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/ScoreVersion.scm0000644000175000017500000000330513135434036026671 0ustar00jjbenhamjjbenham00000000000000;;;ScoreVersion (let* ((tag "ScoreVersion")(current (d-DirectiveGet-score-data tag ))) (if (not current) (set! current (_ "v 1.0"))) (set! current (d-GetUserInput (_ "Version") (_ "Give a version for this edition:") current)) (if current (begin (d-DirectivePut-score-display tag current) (d-DirectivePut-score-data tag current) (case (RadioBoxMenu (cons (_ "Version number only on first page") 'first) (cons (_ "Version number on every page") 'all) (cons (_ "Delete Version Numbering") 'delete)) ((first) (d-DirectivePut-score-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-score-prefix tag (string-append "\\markup \\teeny \"" current "\""))) ((all) (let ((layout (RadioBoxMenu (cons (_ "Include Layout Name") " \\fromproperty #'header:DenemoLayoutName ") (cons (_ "Do not include Layout Name") "")))) (d-DirectivePut-score-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-score-prefix tag (string-append "\\paper { oddHeaderMarkup = \\markup \\fill-line {\\line{\\teeny {" current layout "}}\\line { \\on-the-fly \\print-page-number-check-first \\fromproperty #'page:page-number-string }} evenHeaderMarkup = \\markup \\fill-line { \\line { \\on-the-fly \\print-page-number-check-first \\fromproperty #'page:page-number-string }\\line{\\teeny {" current layout "}}}\n}")))) ((delete) (d-DirectiveDelete-score tag))) (d-SetSaved #f)) (d-InfoDialog (_ "Cancelled"))))denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/PaxHeaders.19168/ScoreTagline.scm0000644000000000000000000000013213135434036024755 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.056648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/ScoreTagline.scm0000644000175000017500000000016613135434036026631 0ustar00jjbenhamjjbenham00000000000000;ScoreTagline (SetScoreHeaderField "tagline" #f #f) (DenemoPrintAllHeaders) (d-SetSaved #f) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/PaxHeaders.19168/ScoreVersion.xml0000644000000000000000000000013213135434036025035 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.056648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/ScoreVersion.xml0000644000175000017500000000104113135434036026702 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreTagline ScoreVersion <_label>Score Version <_tooltip>Prints a tiny text in top left corner of the first page and optionally on subsequent pages. The score layout name can also be optionally included. If only on first page it comes below the title. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/PaxHeaders.19168/FilledTitleLine.scm0000644000000000000000000000013213135434036025407 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.056648473 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/FilledTitleLine.scm0000644000175000017500000000537313135434036027270 0ustar00jjbenhamjjbenham00000000000000;;;FilledTitleLine (let* ((tag "FilledTitleLine")(params FilledTitleLine::params)(first #f)(second #f)(third #f)(data (d-DirectiveGet-score-data tag))) (define (get-element prompt current) (define spacer (cdr current)) (set! current (car current)) (if spacer (begin (set! spacer (d-GetUserInput (_ "Space Above") (_ "Extra space above this line: ") spacer)) (if (or (not spacer) (not (string->number spacer))) (set! spacer "0")))) (let ((value (d-GetUserInputWithSnippets (_ "Text") prompt current))) (if value (let ((stripped #f)) (set! value (car value)) (set! stripped (string-copy value)) (if spacer (set! stripped (string-append "\\vspace #" spacer " " stripped))) (list value spacer stripped)) #f))) (if data (begin (set! data (eval-string data)) (set! first (assq-ref data 'first)) (set! second (assq-ref data 'second)) (set! third (assq-ref data 'third))) (begin (set! first (cons "v.1" "0")) (set! second (cons "MyTitle" #f)) (set! third (cons "MyComposer" #f)))) (if (string? first) ;backward compatibility (begin (set! first (cons first "0")) (set! second (cons second #f)) (set! third (cons third #f)))) (set! first (get-element (_ "Give text to appear at the left\nLilyPond syntax can be included.") first)) (if first (begin (set! second (get-element (_ "Give text to appear in the center\nLilyPond syntax can be included.") second)) (if second (begin (set! third (get-element (_ "Give text to appear at the right\nLilyPond syntax can be included.") third)) (if third (let ((data '())) (set! data (assq-set! data 'first (cons (car first) (cadr first)))) (set! data (assq-set! data 'second (cons (car second) (cadr second)))) (set! data (assq-set! data 'third (cons (car third) (cadr third)))) (d-SetSaved #f) (d-DirectivePut-score-data tag (format #f "'~s" data)) (d-DirectivePut-score-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-score-prefix tag (string-append "\\markup \\fill-line {\\line{" (caddr first) "}\\line{" (caddr second) "}\\line{" (caddr third) "}}"))))))))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/PaxHeaders.19168/TaglineLink.scm0000644000000000000000000000013213135434036024577 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.069981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/TaglineLink.scm0000644000175000017500000000260313135434036026451 0ustar00jjbenhamjjbenham00000000000000;;;TaglineLink (let* ((tag "TaglineLink")(link (d-DirectiveGet-scoreheader-data tag))(text #f)) (if link (begin (set! link (eval-string link)) (set! text (car link)) (set! link (cdr link))) (begin (set! text (_ "Source file at http://denemo.org")) (set! link "http://www.denemo.org"))) (set! link (d-GetUserInput (_ "Tagline with Link") (_ "Give URL to link to") link)) (set! text (d-GetUserInput (_ "Tagline with Link") (_ "Give text for tagline") text)) (if link (begin (if (not text) (set! text "Link")) (if (string-null? text) (begin (d-WarningDialog (_ "Tagline deleted")) (d-DirectiveDelete-scoreheader tag)) (begin (d-DirectivePut-scoreheader-override tag (logior DENEMO_OVERRIDE_TAGEDIT DENEMO_OVERRIDE_GRAPHIC)) (d-DirectivePut-scoreheader-display tag (DenemoAbbreviatedString text)) (d-DirectivePut-scoreheader-data tag (string-append "(cons \"" (scheme-escape text) "\" \"" (scheme-escape link) "\")")) (d-DirectivePut-scoreheader-postfix tag (string-append "tagline = \\markup { \\with-url #\"" link "\" \"" text "\"}\n")))) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/PaxHeaders.19168/ScoreTagline.xml0000644000000000000000000000013213135434036024773 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.069981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/ScoreTagline.xml0000644000175000017500000000053613135434036026650 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreTagline <_label>Tagline <_tooltip> Centered at the bottom of the last page. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/PaxHeaders.19168/SimpleTitles0000644000000000000000000000013213135434150024230 xustar0030 mtime=1500919912.806648472 30 atime=1500919914.546648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/0000755000175000017500000000000013135434150026156 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScorePoet.scm0000644000000000000000000000013213135434036026717 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.079981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScorePoet.scm0000644000175000017500000000062013135434036030566 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-header? "ScorePoet") (begin (if (d-PreviousMovement) (d-WarningDialog "Returning to the first Movement to set this.")) (while (d-PreviousMovement) (display "Seeking first movement")) (SetHeaderField "poet") (DenemoPrintAllHeaders) (d-RefreshDisplay)) (DenemoSetTitles "ScoreTitles" 'poet #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreArranger.xml0000644000000000000000000000013213135434036027567 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.079981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreArranger.xml0000644000175000017500000000055413135434036031444 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreArranger <_label>Arranger <_tooltip>Name of the arranger, flush-right below the composer. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreSubtitle.scm0000644000000000000000000000013213135434036027603 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.079981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreSubtitle.scm0000644000175000017500000000062313135434036031455 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-header "MovementTitle") (begin (if (d-PreviousMovement) (d-WarningDialog "Returning to the first Movement to set this,")) (while (d-PreviousMovement) (display "Seeking first movement")) (SetHeaderField "subtitle") (DenemoPrintAllHeaders) (d-RefreshDisplay)) (DenemoSetTitles "ScoreTitles" 'subtitle #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreInstrument.xml0000644000000000000000000000013213135434036030176 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.079981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreInstrument.xml0000644000175000017500000000070213135434036032046 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreInstrument <_label>Instrument <_tooltip>Name of the instrument, centered below the score title. Also centered at the top of pages (other than the first page). denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreSubsubtitle.xm0000644000000000000000000000013213135434036030157 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.079981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreSubsubtitle.xml0000644000175000017500000000056713135434036032214 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreSubsubtitle <_label>Subsubtitle <_tooltip>Subsubtitle, centered below the subtitle. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreBreakbefore.sc0000644000000000000000000000013213135434036030042 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.089981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreBreakbefore.scm0000644000175000017500000000043013135434036032065 0ustar00jjbenhamjjbenham00000000000000;;;ScoreBreakbefore (if (d-PreviousMovement) (d-WarningDialog "Returning to the first Movement to set this.")) (while (d-PreviousMovement) (display "Seeking first movement")) (SetHeaderField "opus") (DenemoPrintAllHeaders) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreBreakbefore.xm0000644000000000000000000000013213135434036030061 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.089981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreBreakbefore.xml0000644000175000017500000000061713135434036032112 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreBreakbefore <_label>Breakbefore <_tooltip>This forces the title to start on a new page (set to ##t or ##f). denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreTitles.xml0000644000000000000000000000013213135434036027272 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.089981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreTitles.xml0000644000175000017500000000052213135434036031142 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreTitles <_label>Set Titles <_tooltip>Set titles for whole score. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreSubtitle.xml0000644000000000000000000000013213135434036027621 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.089981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreSubtitle.xml0000644000175000017500000000055413135434036031476 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreSubtitle <_label>Subtitle <_tooltip> Subtitle, centered below the title. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreCopyright.xml0000644000000000000000000000013213135434036027776 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.089981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreCopyright.xml0000644000175000017500000000066013135434036031651 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreCopyright <_label>Copyright <_tooltip>Copyright notice, centered at the bottom of the first page. To insert the copyright symbol, see Lilypond Text encoding. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/SimpleChapter.xml0000644000000000000000000000013213135434036027572 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.109981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/SimpleChapter.xml0000644000175000017500000000074013135434036031444 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SimpleChapter ScoreTitle <_label>Book Chapter <_tooltip>Asks for a Chapter Title and end movement number. Makes the current movement the start of a chapter which ends at a later movement. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreTitles.scm0000644000000000000000000000013213135434036027254 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.109981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreTitles.scm0000644000175000017500000000007313135434036031125 0ustar00jjbenhamjjbenham00000000000000;;;SetMovementTitles (DenemoSetTitles "ScoreTitles" #f #f) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreArranger.scm0000644000000000000000000000013213135434036027551 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.109981805 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreArranger.scm0000644000175000017500000000064113135434036031423 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-header? "ScoreArranger") (begin (if (d-PreviousMovement) (d-WarningDialog "Returning to the first Movement to set the arranger")) (while (d-PreviousMovement) (display "Seeking first movement")) (SetHeaderField "arranger") (DenemoPrintAllHeaders) (d-RefreshDisplay)) (DenemoSetTitles "ScoreTitles" 'arranger #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreMeter.xml0000644000000000000000000000013213135434036027102 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.109981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreMeter.xml0000644000175000017500000000055213135434036030755 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreMeter <_label>Meter <_tooltip>Meter string, flush-left below the poet. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreComposer.scm0000644000000000000000000000013213135434036027577 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.109981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreComposer.scm0000644000175000017500000000063313135434036031452 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-header? "ScoreComposer") (begin (if (d-PreviousMovement) (d-WarningDialog "Returning to the first Movement to set this composer")) (while (d-PreviousMovement) (display "Seeking first movement")) (SetHeaderField "composer") (DenemoPrintAllHeaders) (d-RefreshDisplay)) (DenemoSetTitles "ScoreTitles" 'composer #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreMeter.scm0000644000000000000000000000013213135434036027064 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.116648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreMeter.scm0000644000175000017500000000061713135434036030741 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-header? "ScoreMeter") (begin (if (d-PreviousMovement) (d-WarningDialog "Returning to the first Movement to set this.")) (while (d-PreviousMovement) (display "Seeking first movement")) (SetHeaderField "meter") (DenemoPrintAllHeaders) (d-RefreshDisplay)) (DenemoSetTitles "ScoreTitles" 'meter #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreDedication.scm0000644000000000000000000000013213135434036030053 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.116648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreDedication.scm0000644000175000017500000000063113135434036031724 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-header? "ScoreDedication") (begin (if (d-PreviousMovement) (d-WarningDialog "Returning to the first Movement to set this.")) (while (d-PreviousMovement) (display "Seeking first movement")) (SetHeaderField "dedication") (DenemoPrintAllHeaders) (d-RefreshDisplay)) (DenemoSetTitles "ScoreTitles" 'dedication #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreCopyright.scm0000644000000000000000000000013213135434036027760 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.116648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreCopyright.scm0000644000175000017500000000036313135434036031633 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-scoreheader? "ScoreCopyright") (begin (SetScoreHeaderField "copyright" #f #f) (DenemoPrintAllHeaders) (d-SetSaved #f) (d-RefreshDisplay)) (DenemoSetTitles "ScoreTitles" 'copyright #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreDedication.xml0000644000000000000000000000013213135434036030071 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.116648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreDedication.xml0000644000175000017500000000061613135434036031745 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreDedication <_label>Dedication <_tooltip>The dedicatee of the music, centered at the top of the first page. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreTitle.scm0000644000000000000000000000013213135434036027071 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.116648472 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreTitle.scm0000644000175000017500000000053413135434036030744 0ustar00jjbenhamjjbenham00000000000000(let ((tag "ScoreTitle") (title ScoreTitle::params)) (if (d-Directive-scoreheader? tag) (begin (SetScoreHeaderField "title" title) (d-DirectivePut-header-postfix "SuppressTitleRepeats" "title = ##f\ninstrument = ##f\n") (DenemoPrintAllHeaders)) (DenemoSetTitles "ScoreTitles" 'title #f))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreComposer.xml0000644000000000000000000000013213135434036027615 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.129981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreComposer.xml0000644000175000017500000000055713135434036031475 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreComposer <_label>Composer <_tooltip>Name of the composer, flush-right below the subsubtitle. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreTitle.xml0000644000000000000000000000013213135434036027107 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.129981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreTitle.xml0000644000175000017500000000056513135434036030766 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreTitle <_label>Title <_tooltip>Prints the name given as a title centered at the start of the score. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScorePoet.xml0000644000000000000000000000013213135434036026735 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.129981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScorePoet.xml0000644000175000017500000000054213135434036030607 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScorePoet <_label>Poet <_tooltip>Name of the poet, flush-left below the subsubtitle. denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreSubsubtitle.sc0000644000000000000000000000013213135434036030140 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.129981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreSubsubtitle.scm0000644000175000017500000000063313135434036032170 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-header "MovementSubtitle") (begin (if (d-PreviousMovement) (d-WarningDialog "Returning to the first Movement to set this.")) (while (d-PreviousMovement) (display "Seeking first movement")) (SetHeaderField "subsubtitle") (DenemoPrintAllHeaders) (d-RefreshDisplay)) (DenemoSetTitles "ScoreTitles" 'subsubtitle #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/SimpleChapter.scm0000644000000000000000000000013213135434036027554 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.129981805 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/SimpleChapter.scm0000644000175000017500000001100313135434036031420 0ustar00jjbenhamjjbenham00000000000000;;;SimpleChapter (let* ((tag "SimpleChapter")(thetitle (d-DirectiveGet-movementcontrol-data tag))) (define (get-title title) (let ((input (d-GetUserInputWithSnippets (_ "Chapter")(_ "Give chapter title::") title))) (if input (begin (set! input (car input)) (if (zero? (string-length input)) ;; if empty title string => cancel (set! input #f)))) input)) (define (put-chapter-start title) (set! title (get-title title)) (if title (begin (d-DirectivePut-movementcontrol-data tag title) (d-DirectivePut-movementcontrol-display tag title) (d-DirectivePut-movementcontrol-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_TAGEDIT)) (d-DirectivePut-movementcontrol-prefix tag (string-append "\\bookpart { %start of chapter\n \\header {\n title = \\markup { " title " }\n }\n")) (d-SetSaved #f)) (begin (set! title 'finished) (d-InfoDialog "Cancelled"))) title) (define (put-chapter-end) (let ((end (d-GetUserInput (_ "Chapter") "Give Chapter End Movement Number: " (number->string (1+ (d-GetMovement)))))) (d-PushPosition) (if (and (d-NextMovement) end (string->number end) (>= (string->number end) (d-GetMovement))) (begin (set! end (string->number end)) (while (and (> end (d-GetMovement)) (d-NextMovement))) (if (> end (d-GetMovement)) (begin (d-WarningDialog (_ "Setting End Chapter at last movement")) (set! end (d-GetMovement)))) (if (d-Directive-movementcontrol? tag) (begin (d-WarningDialog (string-append (_ "A Chapter start/end is already present at movement #") (number->string (d-GetMovement)))) (set! end #f))) (if (and end (= end (d-GetMovement))) (begin (d-DirectivePut-movementcontrol-display tag (_ "End Chapter")) (d-DirectivePut-movementcontrol-override tag (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_TAGEDIT)) (d-DirectivePut-movementcontrol-postfix tag "\n} %end of chapter\n")))) (set! end #f)) (d-PopPosition) end)) (define (delete-chapter-end) (d-PushPosition) (while (and (d-NextMovement) (not (d-Directive-movementcontrol? tag)))) ;;look for a chapter directive (if (d-DirectiveGet-movementcontrol-postfix tag) ;;; it is an end (d-DirectiveDelete-movementcontrol tag) (d-WarningDialog (_ "Miss-matched Chapter Start/End, use Movement Properties Editor to fix this"))) (d-PopPosition)) (define (delete-chapter) (if (or (not (d-Directive-movementcontrol? tag)) (d-DirectiveGet-movementcontrol-postfix tag)) (d-WarningDialog (_ "Miss-matched Chapter Start/End, use Movement Properties Editor to fix this")) (begin (d-SetSaved #f) (d-DirectiveDelete-movementcontrol tag) (delete-chapter-end)))) ;;;;;;; procedure starts here (if thetitle ;;;already at a chapter start (let ((choice (RadioBoxMenu (cons (_ "Re-title") 'retitle) (cons (_ "Delete") 'delete)))) (case choice ((delete) (set! thetitle 'finished) (delete-chapter)) ((retitle) (d-SetSaved #f) (set! thetitle (put-chapter-start thetitle)) (set! thetitle 'finished)) (else (set! thetitle 'finished) (d-InfoDialog "Cancelled"))))) (if (not (eq? thetitle 'finished)) (begin (if (d-DirectiveGet-movementcontrol-postfix tag) (d-WarningDialog (_ "This is the end of a Chapter, start the next chapter on the next movement")) (let ((end (put-chapter-end))) (if end (begin (set! thetitle (put-chapter-start (_ "Chapter Title"))) (if (eq? thetitle 'finished) (delete-chapter-end))))))))) denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/PaxHeaders.19168/ScoreInstrument.scm0000644000000000000000000000013213135434036030160 xustar0030 mtime=1500919838.026648472 30 atime=1500919930.143315139 30 ctime=1500919913.003315139 denemo-2.2.0/actions/menus/ObjectMenu/Score/Titles/SimpleTitles/ScoreInstrument.scm0000644000175000017500000000036313135434036032033 0ustar00jjbenhamjjbenham00000000000000(if (d-Directive-scoreheader? "ScoreInstrument") (begin (SetScoreHeaderField "instrument" #f #f) (DenemoPrintAllHeaders) (d-SetSaved #f) (d-RefreshDisplay)) (DenemoSetTitles "ScoreTitles" 'instrument #f)) denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/ScoreHeader.xml0000644000000000000000000000013213135434036023334 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.143315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/ScoreHeader.xml0000644000175000017500000000062713135434036025212 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreHeader ScoreProlog <_label>LilyPond Score Header <_tooltip>Inserts LilyPond syntax at the head of the output. denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/EditProlog.xml0000644000000000000000000000013213135434036023220 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.143315139 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/EditProlog.xml0000644000175000017500000000065313135434036025075 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Edit-Prolog <_label>Edit Prolog <_tooltip>Allows you to edit the LilyPond score prolog; here you can set transposition for the printed version and much more. denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/ScoreProlog.xml0000644000000000000000000000013213135434036023406 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.166648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/ScoreProlog.xml0000644000175000017500000000065313135434036025263 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EditScoreDirective ScoreProlog <_label>LilyPond Score Prolog <_tooltip>Inserts LilyPond syntax for include files etc at head of score. denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/CheckScore.scm0000644000000000000000000000013213135434036023143 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.166648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/CheckScore.scm0000644000175000017500000001310513135434036025014 0ustar00jjbenhamjjbenham00000000000000;;;CheckScore (define CheckScore::return #f) (define-once CheckScore::ignore 0) (define-once CheckScore::error-position #f) (let ((old-volume (d-MasterVolume))) (d-MasterVolume 0) (if CheckScore::params (set! CheckScore::ignore CheckScore::params)) (if (d-Directive-score? "CriticalCommentsAmended") (d-CriticalCommentary)) (while (d-PreviousMovement)) (let movement () (d-EvenOutStaffLengths) (while (d-MoveToStaffUp)) (let staff () (d-FixSlursInStaff) (d-CheckTiesInStaff 'noninteractive) (if CheckTiesInStaff::return (set! CheckScore::return CheckTiesInStaff::return)) (if (not CheckScore::return) (begin (d-CheckDirectivePairs 'noninteractive) (if CheckDirectivePairs::return (set! CheckScore::return CheckDirectivePairs::return)))) (if (not CheckScore::return) (if (or (d-MoveToVoiceDown) (d-MoveToStaffDown)) (staff)))) (if (not CheckScore::return) (begin (while (d-MoveToStaffUp)) (let staff () (d-MoveToBeginning) (let measure () (d-CheckTupletsInMeasure 'noninteractive) (set! CheckScore::return CheckTupletsInMeasure::return) (if (not CheckScore::return) (begin (d-CheckBeamsInMeasure 'noninteractive) (set! CheckScore::return CheckBeamsInMeasure::return))) (if (not CheckScore::return) (if (d-MoveToMeasureRight) (measure) (if (or (d-MoveToVoiceDown) (d-MoveToStaffDown)) (staff)))))))) (if (not CheckScore::return) (begin (d-CheckTimeSignatures #t) (set! CheckScore::return CheckTimeSignatures::return))) (if (and (not CheckScore::return) (not (d-Directive-layout? "PolymetricStaffs"))) (begin (while (d-MoveToStaffUp)) (let staff () (while (and (d-Directive-voice? "SubstituteMusic") (d-MoveToStaffDown))) (if (not (d-Directive-voice? "SubstituteMusic")) (begin (d-MoveToBeginning) (let measure () (if (not (LastMeasure?)) (if (AcceptableDurationMeasure?) (begin (d-MoveToMeasureRight) (measure)) (begin (if (positive? CheckScore::ignore) (begin (set! CheckScore::ignore (1- CheckScore::ignore)) (d-MoveToMeasureRight) (measure)) (begin (if (eq? (d-GetMeasure) 1) (set! CheckScore::return (_ "Incorrect measure duration; If you are trying to create an upbeat (pickup/'anacrusis) use the Anacrusis command")) (set! CheckScore::return (_ "Incorrect measure duration"))) (set! CheckScore::error-position (GetPosition)))))))) (if (not CheckScore::return) (begin (if (or (d-MoveToVoiceDown) (d-MoveToStaffDown)) (staff))))))))) (if (not CheckScore::return) (begin (d-CheckBraces 'noninteractive) (set! CheckScore::return CheckBraces::Return))) (if (not CheckScore::return) (begin (while (d-MoveToStaffUp)) (d-MoveToEnd) (let ((ticks (GetMeasureTicks))) (while (and (d-MoveToStaffDown) (eq? ticks (GetMeasureTicks)))) (if (not (eq? ticks (GetMeasureTicks))) (begin (set! CheckScore::error-position (GetPosition)) (set! CheckScore::return (_ "Final Measures not all equal duration"))))))) (if (not CheckScore::return) (d-InstallGraceNoteHints)) (if (and (not CheckScore::return) (d-NextMovement)) (movement))) (if (not CheckScore::params);; interactive (begin (if (not CheckScore::return) (begin (set! CheckScore::error-position #f) (d-InfoDialog (_ "No problem detected in this score"))) (begin (if CheckScore::error-position (apply d-GoToPosition CheckScore::error-position)) (d-InfoDialog CheckScore::return)))) (disp "Error location " CheckScore::error-position "\n")) (d-MasterVolume old-volume)) denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/CheckScoreSkipping.xml0000644000000000000000000000013213135434036024666 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.176648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/CheckScoreSkipping.xml0000644000175000017500000000073213135434036026541 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CheckScoreSkipping CheckScore <_label>Check Score Skipping Some Errors <_tooltip>Checks the score ignoring the first so many errors. Use this to skip errors that are ok to leave in. denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/ScoreProlog.scm0000644000000000000000000000013213135434036023370 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.176648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/ScoreProlog.scm0000644000175000017500000000071413135434036025243 0ustar00jjbenhamjjbenham00000000000000;;;;;;;; score prolog (let ((prolog "")) (set! prolog (d-DirectiveGet-score-prefix "Prolog")) (if prolog #t (set! prolog "%{Insert LilyPond syntax here %}\n")) (set! prolog (d-GetUserInput (_ "LilyPond Score Prolog") (_ "Give LilyPond:") prolog)) (if prolog (begin (d-SetSaved #f) (d-DirectivePut-score-prefix "Prolog" prolog) (d-DirectivePut-score-display "Prolog" prolog)) (d-WarningDialog (_ "Prolog unchanged"))))denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/CheckScoreSkipping.scm0000644000000000000000000000013213135434036024650 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.176648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/CheckScoreSkipping.scm0000644000175000017500000000237513135434036026530 0ustar00jjbenhamjjbenham00000000000000;;CheckScoreSkipping (define-once CheckScoreSkipping::number 1) (define-once CheckScore::ignore 0) (let ((saved (d-GetSaved))(skip (d-GetUserInput (_ "Check Score Skipping Some Errors") (_ "Give number of errors to skip") (number->string CheckScoreSkipping::number)))) (d-IncreaseGuard) (if skip (begin (set! skip (string->number skip)) (if skip (begin (set! CheckScoreSkipping::number skip) (set! CheckScore::ignore skip) (d-CheckScore #f) ;;;interactive call (if CheckScore::return (begin (if CheckScore::error-position (apply d-GoToPosition CheckScore::error-position)) (d-InfoDialog (string-append (_ "Error number: ") (number->string (+ 1 skip)) ": " CheckScore::return))) (begin (set! CheckScore::error-position #f) (d-InfoDialog (_ "No problem detected in this score"))))))) (d-WarningDialog (_ "Cancelled"))) (d-DecreaseGuard) (d-SetSaved saved)) denemo-2.2.0/actions/menus/ObjectMenu/Score/PaxHeaders.19168/LilyPondDefinition.scm0000644000000000000000000000013213135434036024675 xustar0030 mtime=1500919838.023315139 30 atime=1500919930.176648472 30 ctime=1500919912.999981805 denemo-2.2.0/actions/menus/ObjectMenu/Score/LilyPondDefinition.scm0000644000175000017500000000154213135434036026550 0ustar00jjbenhamjjbenham00000000000000;;;LilyPondDefinition (let ((name #f)(def #f)) (if (and (defined? 'LilyPondDefinition::params) (pair? LilyPondDefinition::params)) (begin (set! name (car LilyPondDefinition::params)) (set! def (cdr LilyPondDefinition::params))) (begin (set! name (d-GetUserInput (_ "Creating LilyPond Definition") (_ "Give name (alphabetical only): ") "Barline")) (if name (set! def (d-GetUserInput (_ "Creating LilyPond Definition") (_ "Give valid LilyPond syntax for this definition: ") "\\bar \"||\""))))) (if def (let ( (tag (string-append "Allow\n" name))) (set! def (string-trim-both def char-set:whitespace)) (if (string-null? def) (set! def "{}")) (d-DirectivePut-score-prefix tag (string-append name " = " def "\n")) (d-DirectivePut-score-display tag name) (d-DirectivePut-score-override tag DENEMO_OVERRIDE_AFFIX) (d-SetSaved #f))))denemo-2.2.0/actions/menus/ObjectMenu/PaxHeaders.19168/ClefMenu0000644000000000000000000000013213135434150020771 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/0000755000175000017500000000000013135434150022717 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/PaxHeaders.19168/HideClef.xml0000644000000000000000000000013213135434035023235 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.186648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/HideClef.xml0000644000175000017500000000070413135434035025107 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ClefChooser HideClef <_label>(Print) Hide <_tooltip>On printing, omit the clef change at the cursor, or the initial clef if the cursor is not on a clef change. denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/PaxHeaders.19168/TypesetOnlyClef.scm0000644000000000000000000000013213135434035024645 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.186648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/TypesetOnlyClef.scm0000644000175000017500000000244513135434035026523 0ustar00jjbenhamjjbenham00000000000000;;;;TypesetOnlyClef (let ((tag "TypesetOnlyClef") (choice (RadioBoxMenu (cons (_ "Treble") "treble") (cons (_ "Bass") "bass") (cons (_ "Alto") "alto") (cons (_ "Tenor") "tenor") (cons (_ "Treble Octava Bassa") "treble_8") (cons (_ "Bass Octava Bassa") "bass_8") (cons (_ "Soprano") "soprano") (cons (_ "French") "french") (cons (_ "LilyPond") 'lilypond)))) (if (eq? choice 'lilypond) (set! choice (d-GetUserInput (_ "Custom Clef") (_ "Give LilyPond syntax for clef name") "treble^8"))) (if choice (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag (string-append "\\clef \"" choice "\" ")) (d-DirectivePut-standalone-graphic tag "\nD\nDenemo\n24") (d-DirectivePut-standalone-minpixels tag 50) (d-InfoDialog (_ "N.B.The Denemo display will show notes using prevailing Denemo clef,\nbut they will be typeset in the clef given")) (d-SetSaved #f) (d-RefreshDisplay)) (d-InfoDialog (_ "Cancelled")))) denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/PaxHeaders.19168/SetDisplayClef.scm0000644000000000000000000000013213135434035024427 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.186648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/SetDisplayClef.scm0000644000175000017500000000027213135434035026301 0ustar00jjbenhamjjbenham00000000000000;;;SetDisplayClef (let ((type (d-GetType))) (if (not (string=? type "CLEF")) (begin (d-InsertClef) (d-MoveCursorLeft))) (d-SetNonprinting (not (d-GetNonprinting))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/PaxHeaders.19168/ClefChooser.xml0000644000000000000000000000013213135434035023766 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.186648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/ClefChooser.xml0000644000175000017500000000071013135434035025635 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertClef ClefChooser <_label>Clef Chooser<_tooltip>Choose any sort of clef. If the cursor is at the start change initial clef, else insert chosen clef. denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/PaxHeaders.19168/HideClef.scm0000644000000000000000000000013213135434035023217 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.196648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/HideClef.scm0000644000175000017500000000110613135434035025066 0ustar00jjbenhamjjbenham00000000000000;;;HideClef ;(let ((lilycontext (d-GetOption (string-append "Score" stop "Staff" stop "Voice" stop)))) (let ((lilycontext "Staff")) (if lilycontext (begin (if (d-Directive-clef? "HideClef") (d-DirectiveDelete-clef "HideClef") (begin (d-DirectivePut-clef-prefix "HideClef" (string-append "\\once \\override " lilycontext ".Clef #'stencil = ##f" )) (d-DirectivePut-clef-gy "HideClef" 60) (d-DirectivePut-clef-graphic "HideClef" "\n⋃\nDenemo\n24"))) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/PaxHeaders.19168/SetDisplayClef.xml0000644000000000000000000000013213135434035024445 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.196648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/SetDisplayClef.xml0000644000175000017500000000135713135434035026324 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HideClef SetDisplayClef <_label>Display Only Clef <_tooltip>Inserts a clef that affects only the display, not the printed form. Use this if, after a Change Staff, the staff the voice will be on is in a different clef (avoiding too many ledger lines in the display, making it hard to read). Also useful to display in a familiar clef music which you want to be printed in a less familiar one (e.g. display in treble or bass clef music to be printed for viola). denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/PaxHeaders.19168/TypesetOnlyClef.xml0000644000000000000000000000013213135434035024663 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.196648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/TypesetOnlyClef.xml0000644000175000017500000000131413135434035026533 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DisplayOnlyClef TypesetOnlyClef <_label>Typeset Only Clef <_tooltip>Inserts a clef that affects only the typesetting, not the display. Use this for music transposed on typesetting (avoiding too many ledger lines in the display, making it hard to read). Also useful to enter music in a familiar clef which you want to be printed in a less familiar one (e.g. enter music in treble or bass clef music to be printed for viola). denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/PaxHeaders.19168/ClefChooser.scm0000644000000000000000000000013213135434035023750 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.196648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ClefMenu/ClefChooser.scm0000644000175000017500000000514013135434035025621 0ustar00jjbenhamjjbenham00000000000000;;;;ClefChooser (let ((choice (RadioBoxMenu (cons (_ "Treble") "treble") (cons (_ "Bass") "bass") (cons (_ "Alto") "alto") (cons (_ "Tenor") "tenor") (cons (_ "Treble Octava Bassa") "Treble Octava bassa") (cons (_ "Bass Octava Bassa") "Bass Octava bassa") (cons (_ "Soprano") "Soprano") (cons (_ "French") "French") (cons (_ "Drum") 'drum) (cons (_ "LilyPond") 'lilypond)))) (if choice (begin (case choice ((lilypond) (let ((clef (d-GetUserInput (_ "Custom Clef") (_ "Give LilyPond syntax for clef name") "treble^8")) (tag "ClefChooser")) (if clef (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag (string-append "\\clef \"" clef "\" ")) (d-DirectivePut-standalone-graphic tag "\nC\nDenemo\n24") (d-DirectivePut-standalone-minpixels tag 50) (d-InfoDialog (_ "N.B.The Denemo display will show notes using prevailing Denemo clef,\nbut they will be typeset in the clef given")))))) ((drum) (d-InitialClef "Bass") (d-DirectivePut-clef-override "DrumClef" (logior DENEMO_OVERRIDE_GRAPHIC DENEMO_OVERRIDE_LILYPOND)) (d-DirectivePut-clef-postfix "DrumClef" "\\clef percussion\n ") (d-DirectivePut-clef-graphic "DrumClef" "DrumClef") (d-DirectivePut-clef-gy "DrumClef" -5) (d-StaffProperties "midi_channel=9") (d-DirectivePut-voice-display "DrumClef" (_ "Drum Clef")) (d-DirectivePut-voice-override "DrumClef" DENEMO_OVERRIDE_GRAPHIC) (d-DirectivePut-voice-prefix "DrumClef" "\\new Voice \\with { middleCPosition = #6 }")) (else (d-DirectiveDelete-voice "DrumClef") (d-DirectiveDelete-clef "DrumClef") (if (d-MoveCursorLeft) (begin (d-MoveCursorRight) (d-InsertClef choice)) (begin (if (equal? (d-DirectiveGetTag-clef ) "DrumClef" ) (d-DirectiveDelete-clef "DrumClef") ) (d-InitialClef choice))))) (d-SetSaved #f) (d-RefreshDisplay)))) denemo-2.2.0/actions/menus/ObjectMenu/PaxHeaders.19168/Lyrics0000644000000000000000000000013213135434150020540 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/0000755000175000017500000000000013135434150022466 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertLyricAlignment.xml0000644000000000000000000000013213135434035025447 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.216648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertLyricAlignment.xml0000644000175000017500000000100713135434035027316 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertLyricAlignment InsertStanzaNumber <_label>Syllable Alignment <_tooltip>Inserts some syntax into the lyric verse to determine the alignment of syllables under notes. Lyrics to be affected should be on the following lines. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertHighlightedLyricSyllable.xml0000644000000000000000000000013213135434035027441 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.216648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertHighlightedLyricSyllable.xml0000644000175000017500000000066613135434035031322 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertHighlightedLyricSyllable EditLyricAtCursor <_label>Insert a Highlighted Lyric <_tooltip>Inserts a syllable which can be bold and/or italic. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/DeleteCurrentVerse.xml0000644000000000000000000000013213135434035025113 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.216648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/DeleteCurrentVerse.xml0000644000175000017500000000063213135434035026765 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteCurrentVerse AddVerse <_label>Delete Verse <_tooltip>Deletes the current verse - copy the text first if needed. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/LyricVerseDynamic.scm0000644000000000000000000000013213135434035024717 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.226648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/LyricVerseDynamic.scm0000644000175000017500000000052313135434035026570 0ustar00jjbenhamjjbenham00000000000000;;;LyricVerseDynamic ;(let ((choice (d-GetUserInput (_ "Lyric Dynamic") (_ "Give dynamic to insert between syllables:") "f"))) (let ((choice (RadioBoxMenu "ff" "f" "p" "pp"))) (if choice (begin (d-InsertTextInVerse (string-append "\\set stanza = \\markup { \" \" \\dynamic \"" choice "\" \" \"}\n")) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertLyricTie.scm0000644000000000000000000000013213135434035024234 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.226648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertLyricTie.scm0000644000175000017500000000034213135434035026104 0ustar00jjbenhamjjbenham00000000000000;InsertLyricTie (let ((choice (RadioBoxMenu (cons (_ "Printed as \"ˬ\" (lyric tie symbol)") "~") (cons (_ "Printed as space") "_")))) (if choice (begin (d-InsertTextInVerse choice) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertHyphenBetweenSyllables.scm0000644000000000000000000000013213135434035027130 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.226648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertHyphenBetweenSyllables.scm0000644000175000017500000000011213135434035030773 0ustar00jjbenhamjjbenham00000000000000;InsertHyphenBetweenSyllables (d-InsertTextInVerse " -- ") (d-SetSaved #f)denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/LyricFont.xml0000644000000000000000000000013213135434035023252 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.226648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/LyricFont.xml0000644000175000017500000000066413135434035025131 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LyricFont DeleteVerse <_label>Change Font <_tooltip>Inserts into the current lyric verse a change of font. Keep this code on a line of its own. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertHighlightedLyricSyllable.scm0000644000000000000000000000013213135434035027423 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.226648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertHighlightedLyricSyllable.scm0000644000175000017500000000163313135434035031277 0ustar00jjbenhamjjbenham00000000000000;InsertHighlightedLyricSyllable (let ((text #f)) (define (do-bold) (let () (define choice (RadioBoxMenu (cons (_ "Bold") 'bold) (cons (_ "Light") 'light))) (case choice ((bold) "\\bold ") (else "")))) (define (do-italic) (let () (define choice (RadioBoxMenu (cons (_ "Italic") 'italic) (cons (_ "Normal") 'normal))) (case choice ((italic) "\\italic ") (else "")))) (set! text (d-GetUserInput (_ "Highlighted Syllable") (_ "Give syllable to insert:") "")) (if text (d-InsertTextInVerse (string-append (if (zero? (d-SyllableCount)) "" " ") "\\markup " (do-bold) (do-italic) "\n\"" text "\" ")) (d-SetSaved #f))) denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/EditLyricAtCursor.xml0000644000000000000000000000013213135434035024714 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.236648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/EditLyricAtCursor.xml0000644000175000017500000000073113135434035026566 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EditLyricAtCursor DeleteVerse <_label>Edit Lyric at Cursor <_tooltip>Switches keyboard input to the lyrics pane, placing the cursor on the syllable that belongs to the cursor note. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/TypesetVersesAtEnd.scm0000644000000000000000000000013213135434035025064 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.236648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/TypesetVersesAtEnd.scm0000644000175000017500000000555113135434035026743 0ustar00jjbenhamjjbenham00000000000000;;;TypesetVersesAtEnd ;creates a MarkupAtEnd directive on the movement (let* ((theverses "") (tag "MarkupAtEnd") (data (d-DirectiveGet-movementcontrol-data tag)) (choice #f)) (if data (begin (set! choice (RadioBoxMenu (cons (_ "Append verses to current text") 'append) (cons (_ "Edit current end-of-movement text") 'edit) (cons (_ "Replace with verses") 'replace) (cons (_ "Cancel") 'cancel))) (case choice ((append) (set! data (eval-string data)) (set! data (assq-ref data 'text))) ((edit) (set! data #f) (d-MarkupAtEnd)) ((replace) (set! data "")) ((cancel) (set! data #f)) (else (set! data #f)))) (set! data "")) (if (and data (d-GetVerse 1)) (begin (let loop ((num 0)) (define theverse #f) (begin (if (zero? num) (begin (set! num (d-GetUserInput (_ "Typesetting Verses at End") (_ "Which verse to start at?") "2")) (if num (begin (set! num (string->number num)) (if (not (d-GetVerse num)) (set! num #f)))))) (if num (begin (set! theverse (d-GetVerse num)) (if theverse (let ((theoutput "{\\vspace #0.5 }") (thelines (string-split theverse #\newline))) (define (output-line theline) (set! theline (string-map (lambda (c) (if (or (eq? c #\\) (eq? c #\42) (eq? c #\~)(eq? c #\_)) #\space c)) theline)) (set! theoutput (string-append theoutput "\\line{" theline "}\n"))) (for-each output-line thelines) (set! theverses (string-append theverses (string-append "\n\\line\\bold {\\vspace #3 {" (_ "Verse ") (number->string num) "}}\n" theoutput))) (loop (+ num 1)))))))) (if theverses (begin ;(disp "Have the verses " theverses "\nAnd data " data "\n\n\n") (set! theverses (string-append "\\column{" data theverses "}")) (d-DirectivePut-movementcontrol-data tag (string-append "(list (cons 'text \"" (scheme-escape theverses) "\"))")) (d-DirectivePut-movementcontrol-postfix tag (string-append "\\markup" theverses )) (d-SetSaved #f)) (d-WarningDialog (_ "No verses found")))) (if (eq? choice 'cancel) (d-InfoDialog (_ "Cancelled"))))) denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/LyricFont.scm0000644000000000000000000000013213135434035023234 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.236648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/LyricFont.scm0000644000175000017500000000056713135434035025115 0ustar00jjbenhamjjbenham00000000000000;LyricFont (let ((text #f)) (set! text (d-GetUserInput (_ "Font Name") (_ "Give font name") "Times")) (if text (begin (d-InsertTextInVerse (string-append "\n\\override LyricText.font-name = #\"" text "\"\n"))) (d-SetSaved #f))) denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertLyricAlignment.scm0000644000000000000000000000013213135434035025431 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.236648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertLyricAlignment.scm0000644000175000017500000000046213135434035027304 0ustar00jjbenhamjjbenham00000000000000;InsertLyricAlignment (let ((text (RadioBoxMenu (cons (_ "Center") "CENTER") (cons (_ "Left") "LEFT")(cons (_ "Right") "RIGHT")))) (if text (d-InsertTextInVerse (string-append "\n\\override LyricText.self-alignment-X = #" text " %{" (_ "Note: start lyrics on a new line") " %}\n")))) denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertMirroredVerse.scm0000644000000000000000000000013213135434035025300 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.246648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertMirroredVerse.scm0000644000175000017500000000542113135434035027153 0ustar00jjbenhamjjbenham00000000000000;;;InsertMirroredVerse (let ((params InsertMirroredVerse::params) (current (d-GetStaff)) (verse #f)(staff (d-GetStaff))(initial (d-GetVerseNumber))) (define (get-versenames) (define versenames '()) (define this-movement (number->string (d-GetMovement))) (define this-staff (d-GetStaff)) (define (unique-staff-name) (string-append (d-StaffProperties "query=denemo_name") (_ " on Staff ") (number->string (d-GetStaff)))) (while (d-MoveToStaffUp)) (let loop ((count 0)) (if (> current (d-GetStaff)) (let verseloop ((num 1)) (define thisverse (d-GetVerse num)) (if thisverse (let* ((len (string-length thisverse)) (short (substring thisverse 0 (min 10 len)))) (set! versenames (cons (cons (string-append (unique-staff-name) " Verse " (number->string num) ": \"" short "...\"") (string-append "\\" (d-GetVoiceIdentifier) "LyricsVerse" (d-RomanNumeral (number->string num)) " %" (_ "this inserts the verse ") (number->string num) ": \"" short "...\"" (_ " from ") (unique-staff-name) "\n")) versenames)) (verseloop (1+ num)))) (if (d-MoveToStaffDown) (loop (1+ count)))))) (reverse versenames)) (set! verse (get-versenames)) (if (not (= staff (d-GetStaff))) (while (and (d-MoveToStaffUp) (not (= staff (d-GetStaff)))))) ;;PopPosition does not alter verse (d-GetVerseNumber initial); (if (null? verse) (begin (d-WarningDialog (_ "There are no verses above this one to mirror from."))) (begin (set! verse (RadioBoxMenuList verse)) (if verse (begin (if (not (d-GetVerse 1)) (d-AddVerse)) (d-InsertTextInVerse (string-append verse "\n")) (d-SetSaved #f)))))) denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertSyllableSkips.scm0000644000000000000000000000013213135434035025271 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.246648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertSyllableSkips.scm0000644000175000017500000000126213135434035027143 0ustar00jjbenhamjjbenham00000000000000;InsertSyllableSkips (let ((count #f)(end #f)) (d-SetPoint) (set! end (d-SyllableCount)) (d-GoToMark) (set! count (+ 1 (- end (d-SyllableCount)))) (if (<= count 1) (begin (set! count (d-GetUserInput (_ "Skip Syllables") (_ "Give number of syllables to skip") "10")) (if count (set! count (string->number count)))) (d-SynchronizeLyricCursor -1)) (if count (begin (set! count (number->string count)) (d-InsertTextInVerse (string-append "\n\\repeat unfold " count " \\skip 1\n")) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/TypesetVersesAtEnd.xml0000644000000000000000000000013213135434035025102 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.246648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/TypesetVersesAtEnd.xml0000644000175000017500000000113313135434035026751 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteVerse TypesetVersesAtEnd <_label>Typeset Verses at End <_tooltip>Let's you choose a number of verses to print at the end of the piece (movement), instead of underlaying the music. The verses are copied to the end so can be deleted once copied to prevent them from appearing beneath the music in addition. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/EditLyricAtCursor.scm0000644000000000000000000000013213135434035024676 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.266648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/EditLyricAtCursor.scm0000644000175000017500000000022013135434035026541 0ustar00jjbenhamjjbenham00000000000000(if (not (d-SynchronizeLyricCursor)) (d-WarningDialog (_ "No verse has been created for this staff. Use Add Lyric Verse in Lyrics menu."))) denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/LyricVerseDynamic.xml0000644000000000000000000000013213135434035024735 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.266648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/LyricVerseDynamic.xml0000644000175000017500000000100013135434035026575 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LyricVerseDynamic InsertMelismata <_label>Dynamic <_tooltip>Inserts a dynamic marking in the current verse at the insertion point in the lyrics pane. Use this to indicate dynamics which change from one verse to another. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/DeleteCurrentVerse.scm0000644000000000000000000000013213135434035025075 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.266648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/DeleteCurrentVerse.scm0000644000175000017500000000030013135434035026737 0ustar00jjbenhamjjbenham00000000000000;;DeleteCurrentVerse (let ((delete (RadioBoxMenu (cons (_"Cancel") #f) (cons (_ "Delete Current Verse (no undo!)") 'delete)))) (if delete (d-DeleteVerse) (d-InfoDialog (_ "Cancelled")))) denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertMelisma.xml0000644000000000000000000000013213135434035024115 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.266648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertMelisma.xml0000644000175000017500000000072013135434035025765 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertMelisma InsertStanzaNumber <_label>Melismata <_tooltip>Extends a syllable over the next note with hyphenated line (within word) or extender line (at end of word). denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/LyricFontSize.xml0000644000000000000000000000013213135434035024105 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.266648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/LyricFontSize.xml0000644000175000017500000000073613135434035025764 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LyricFontSize LyricFont <_label>Larger/Smaller Font Size <_tooltip>Inserts a code in the current lyric verse to change to larger or smaller font size. Keep this code on a separate line. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/ToggleTypesetOfLyrics.xml0000644000000000000000000000013213135434035025613 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.276648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/ToggleTypesetOfLyrics.xml0000644000175000017500000000111213135434035027457 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleTypesetOfLyrics LyricFontSize <_label>Typeset Lyrics (Off/On) <_tooltip>Turns Off/On typesetting of lyrics for the entire score. The score will revert to typesetting verses when reloaded (except for any custom score layouts created) - the command does not count as a change in the score. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/ToggleTypesetOfLyrics.scm0000644000000000000000000000013213135434035025575 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.276648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/ToggleTypesetOfLyrics.scm0000644000175000017500000000110413135434035027442 0ustar00jjbenhamjjbenham00000000000000;;ToggleTypesetLyrics (d-PushPosition) (let ((note #f)) (define (do-staff) (d-TypesetLyricsForStaff (not (d-TypesetLyricsForStaff)))) (define (do-movement) (while (d-MoveToStaffUp)) (do-staff) (while (d-MoveToStaffDown) (do-staff))) (while (d-PreviousMovement)) (do-movement) (while (d-NextMovement) (do-movement))) (if (d-TypesetLyricsForStaff) (d-InfoDialog (_ "Lyrics will appear in the Print View for the default layout")) (d-InfoDialog (_ "Lyrics will be omitted in the Print View for the default layout"))) (d-PopPosition)denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertHyphenBetweenSyllables.xml0000644000000000000000000000013213135434035027146 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.276648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertHyphenBetweenSyllables.xml0000644000175000017500000000072213135434035031020 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertHyphenBetweenSyllables InsertMelisma <_label>Divide Syllables with Hyphen <_tooltip>Typesets a hyphen between the syllables at the cursor, if there is sufficient room. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertStanzaNumber.xml0000644000000000000000000000013213135434035025137 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.276648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertStanzaNumber.xml0000644000175000017500000000076113135434035027014 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertStanzaNumber InsertHighlightedLyricSyllable <_label>Insert Stanza Number <_tooltip>Inserts a stanza number (or other text that is not part of the lyrics) in the current verse at the cursor position. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertSyllableSkips.xml0000644000000000000000000000013213135434035025307 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.276648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertSyllableSkips.xml0000644000175000017500000000110713135434035027157 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertSyllableSkips InsertStanzaNumber <_label>Skip Syllables in Selection <_tooltip>Inserts blanks for the syllables from the start of the notes selected in the Denemo Display to the cursor. With no selection asks for a number of syllables to skip and inserts the skip at the lyric cursor. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertMelisma.scm0000644000000000000000000000013213135434035024077 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.289981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertMelisma.scm0000644000175000017500000000052513135434035025752 0ustar00jjbenhamjjbenham00000000000000;InsertMelisma (let ((choice (RadioBoxMenu (cons (_ "During Word, with Slur") " -- ") (cons (_ "Word End, with Slur") " __ ") (cons (_ "During Word, no Slur") " -- _ ") (cons (_ "Word End, no Slur") " __ _ ") (cons (_ "Extend Melisma") " _ ")))) (if choice (begin (d-InsertTextInVerse choice) (d-SetSaved #f))))denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertStanzaNumber.scm0000644000000000000000000000013213135434035025121 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.289981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertStanzaNumber.scm0000644000175000017500000000170013135434035026770 0ustar00jjbenhamjjbenham00000000000000;InsertStanzaNumber (let ((text "1. ")) (define (do-bold) (let () (define choice (RadioBoxMenu (cons (_ "Bold") 'bold) (cons (_ "Light") 'light))) (case choice ((bold) "\\bold ") (else "\\medium ")))) (define (do-italic) (let () (define choice (RadioBoxMenu (cons (_ "Italic") 'italic) (cons (_ "Normal") 'normal))) (case choice ((italic) "\\italic ") (else "")))) (set! text (d-GetUserInput (_ "Stanza Number") (_ "Give non-lyric text to insert") "1.")) (if text (begin (d-InsertTextInVerse (string-append (if (zero? (d-SyllableCount)) "" " ") "\\set stanza = \\markup {" (do-bold) (do-italic) text "}\n"))) (d-SetSaved #f))) denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertLyricTie.xml0000644000000000000000000000013213135434035024252 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.289981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertLyricTie.xml0000644000175000017500000000107213135434035026123 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertLyricTie InsertMelisma <_label>Lyric Tie <_tooltip>Inserts a lyric tie between two words at the cursor. Use this instead of a space between two words that are sung to the same note (do not leave a space as well). It will be typeset as a tie or space between the words. denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/LyricFontSize.scm0000644000000000000000000000013213135434035024067 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.289981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/LyricFontSize.scm0000644000175000017500000000067713135434035025752 0ustar00jjbenhamjjbenham00000000000000;LyricFontSize (let ((text #f)) (set! text (d-GetUserInput (_ "Font Size") (_ "Give font size magnification (0 = default, negative = smaller)") "-4")) (if (and text (string->number text)) (begin (d-InsertTextInVerse (string-append "\n\\override LyricText.font-size = #" text "\n"))) (d-SetSaved #f))) denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/PaxHeaders.19168/InsertMirroredVerse.xml0000644000000000000000000000013213135434035025316 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.299981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/Lyrics/InsertMirroredVerse.xml0000644000175000017500000000075413135434035027175 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertMirroredVerse InsertMelisma <_label>Insert Mirrored Verse <_tooltip>Inserts special syntax to typeset a verse from another staff under this staff. This syntax should be on a line of its own. denemo-2.2.0/actions/menus/ObjectMenu/PaxHeaders.19168/ChordMenu0000644000000000000000000000013213135434150021157 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/0000755000175000017500000000000013135434150023105 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/Directives0000644000000000000000000000013213135434150023260 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/Directives/0000755000175000017500000000000013135434150025206 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/Directives/PaxHeaders.19168/InsertChordDirective.xml0000644000000000000000000000013213135434035030144 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.299981805 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/Directives/InsertChordDirective.xml0000644000175000017500000000067213135434035032022 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap RTS InsertChordDirective <_label>Attach/Edit LilyPond to Chord <_tooltip>Inserts LilyPond syntax you give before and after the chord at the cursor, also allows editing/deleting. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/Directives/PaxHeaders.19168/DeleteLilyPondOnChord.xm0000644000000000000000000000013213135434035030037 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.299981805 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/Directives/DeleteLilyPondOnChord.xml0000644000175000017500000000061013135434035032061 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteLilyPondOnChord <_label>Delete LilyPond on Chord <_tooltip>Deletes the LilyPond attached to the chord at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/Directives/PaxHeaders.19168/InsertChordDirective.scm0000644000000000000000000000013213135434035030126 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.323315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/Directives/InsertChordDirective.scm0000644000175000017500000000351513135434035032003 0ustar00jjbenhamjjbenham00000000000000;;;InsertChordDirective (let ((params InsertChordDirective::params) (replace #f)(choice 'new) (currentpost (d-DirectiveGet-chord-postfix (d-DirectiveGetTag-chord))) (currentpre (d-DirectiveGet-chord-prefix (d-DirectiveGetTag-chord)))) (if(or currentpre currentpost) (begin (if (not currentpre) (set! currentpre "")) (if (not currentpost) (set! currentpost "")) (set! choice (RadioBoxMenu (cons (_ "New LilyPond Directive") 'new) (cons (string-append (_ "Edit ") currentpre " | " currentpost) 'edit) (cons (string-append (_ "Delete ") currentpre " | " currentpost) 'delete) (cons (_ "Advanced") 'advanced))) (case choice ((advanced) (d-DirectiveTextEdit-chord (d-DirectiveGetTag-chord)) (set! choice #f)) ((delete) (set! choice #f) (d-DirectiveDelete-chord (d-DirectiveGetTag-chord))) ((edit) (set! replace choice))))) (if choice (let ((answer1 (d-GetUserInput "Insert Lilypond" "Give Lilypond text to insert before chord" currentpre)) (answer2 (d-GetUserInput "Insert Lilypond" "Give Lilypond text to insert after chord" currentpost))) (if (or answer1 answer2) (let ((tag (d-GetChecksum (string-append answer1 answer2)))) (if replace (set! tag (d-DirectiveGetTag-chord))) (if answer1 (d-DirectivePut-chord-prefix tag answer1)) (if answer2 (d-DirectivePut-chord-postfix tag answer2)) (d-DirectivePut-chord-display tag (string-append answer1 "|" answer2)) (d-SetSaved #f)))))) denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/Directives/PaxHeaders.19168/DeleteLilyPondOnChord.sc0000644000000000000000000000013213135434035030020 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.323315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/Directives/DeleteLilyPondOnChord.scm0000644000175000017500000000007013135434035032043 0ustar00jjbenhamjjbenham00000000000000(d-AttachLilyToChord "prefix= \0postfix= \0display= ") denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/AddBassInversion.xml0000644000000000000000000000013213135434035025156 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.323315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBassInversion.xml0000644000175000017500000000102613135434035027026 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddBassInversion ParenthesizeChord <_label>Add Bass Inversion <_tooltip>Adds a bass note to a chord, while keeping the current lowest note as the root of the chord. Use this on Chord Symbol staffs to create an inversion of the chord entered. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/OpenParenthesizeChord.scm0000644000000000000000000000013213135434035026205 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.323315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/OpenParenthesizeChord.scm0000644000175000017500000000112713135434035030057 0ustar00jjbenhamjjbenham00000000000000;;; OpenParenthesizeChord (let ((tag "OpenParenthesizeChord")) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-LilyPondDefinition (cons "startParenthesize" "\\once \\override ParenthesesItem.stencils = #(lambda (grob) (let ((par-list (parentheses-item::calc-parenthesis-stencils grob))) (list (car par-list) point-stencil )))")) (d-DirectivePut-chord-prefix tag "\\startParenthesize\\parenthesize ") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-display tag "("))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/UseAddPrefix.xml0000644000000000000000000000013213135434035024303 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.333315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/UseAddPrefix.xml0000644000175000017500000000067313135434035026162 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS UseAddPrefix AddBassInversion <_label>Use "add" Prefix <_tooltip>Inserts the word "add" as a prefix for added notes in chord symbols after the cursor. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/AddAboveBase0000644000000000000000000000013213135434150023417 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/0000755000175000017500000000000013135434150025345 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpPerfect5.xm0000644000000000000000000000013213135434035027635 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.333315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpPerfect5.xml0000644000175000017500000000070213135434035031661 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpDiminished5 AddLowestUpPerfect5 <_label>Add Perfect 5th above base <_tooltip>Add a perfect fifth as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMinor6.scm0000644000000000000000000000013213135434035027470 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.333315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMinor6.scm0000644000175000017500000000005513135434035031341 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'm6)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpPerfect4.sc0000644000000000000000000000013213135434035027615 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.333315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpPerfect4.scm0000644000175000017500000000005513135434035031643 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'p4)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMinor2.xml0000644000000000000000000000013213135434035027502 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.346648473 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMinor2.xml0000644000175000017500000000067013135434035031356 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpMajor2 AddLowestUpMinor2 <_label>Add Minor 2nd above base <_tooltip>Add a minor second as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMajor2.scm0000644000000000000000000000013213135434035027450 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.346648473 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMajor2.scm0000644000175000017500000000005513135434035031321 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'M2)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMajor2.xml0000644000000000000000000000013213135434035027466 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.346648473 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMajor2.xml0000644000175000017500000000067213135434035031344 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpPerfect1 AddLowestUpMajor2 <_label>Add Major 2nd above base <_tooltip>Add a major second as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpAugmented5.0000644000000000000000000000013213135434035027611 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.346648473 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpAugmented5.xml0000644000175000017500000000071413135434035032205 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpDiminished5 AddLowestUpAugmented5 <_label>Add Augmented 5th above base <_tooltip>Add an augmented fifth as a chord note above the lowest note at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMajor7.scm0000644000000000000000000000013213135434035027455 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.346648473 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMajor7.scm0000644000175000017500000000005513135434035031326 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'M7)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMajor3.scm0000644000000000000000000000013213135434035027451 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.356648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMajor3.scm0000644000175000017500000000005513135434035031322 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'M3)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMajor6.scm0000644000000000000000000000013213135434035027454 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.356648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMajor6.scm0000644000175000017500000000005513135434035031325 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'M6)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpAugmented5.0000644000000000000000000000013213135434035027611 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.356648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpAugmented5.scm0000644000175000017500000000005613135434035032166 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'a5) denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpAugmented4.0000644000000000000000000000013213135434035027610 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.356648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpAugmented4.scm0000644000175000017500000000005513135434035032164 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'a4)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMinor6.xml0000644000000000000000000000013213135434035027506 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.356648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMinor6.xml0000644000175000017500000000066713135434035031370 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpMajor6 AddLowestUpMinor6 <_label>Add Minor 6th above base <_tooltip>Add a minor sixth as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMinor2.scm0000644000000000000000000000013213135434035027464 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.376648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMinor2.scm0000644000175000017500000000005513135434035031335 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'm2)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMinor7.scm0000644000000000000000000000013213135434035027471 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.376648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMinor7.scm0000644000175000017500000000005513135434035031342 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'm7)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpPerfect1.xm0000644000000000000000000000013213135434035027631 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.376648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpPerfect1.xml0000644000175000017500000000062413135434035031660 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpPerfect1 <_label>Add Perfect 1st above base <_tooltip>Add a perfect prime as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpPerfect5.sc0000644000000000000000000000013213135434035027616 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.376648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpPerfect5.scm0000644000175000017500000000005513135434035031644 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'p5)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMajor7.xml0000644000000000000000000000013213135434035027473 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.376648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMajor7.xml0000644000175000017500000000067113135434035031350 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpMinor6 AddLowestUpMajor7 <_label>Add Major 7th above base <_tooltip>Add a major seventh as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpAugmented4.0000644000000000000000000000013213135434035027610 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.389981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpAugmented4.xml0000644000175000017500000000071713135434035032207 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpPerfect4 AddLowestUpAugmented4 <_label>Add Augmented 4th above base <_tooltip>Add a tritone/augmented fourth as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMinor3.xml0000644000000000000000000000013213135434035027503 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.389981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMinor3.xml0000644000175000017500000000067013135434035031357 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpMajor3 AddLowestUpMinor3 <_label>Add Minor 3rd above base <_tooltip>Add a minor third as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMinor3.scm0000644000000000000000000000013213135434035027465 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.389981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMinor3.scm0000644000175000017500000000005513135434035031336 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'm3)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMajor6.xml0000644000000000000000000000013213135434035027472 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.389981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMajor6.xml0000644000175000017500000000067113135434035031347 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpPerfect5 AddLowestUpMajor6 <_label>Add Major 6th above base <_tooltip>Add a major sixth as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpDiminished50000644000000000000000000000013213135434035027677 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.389981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpDiminished5.xml0000644000175000017500000000071213135434035032347 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpAugmented4 AddLowestUpDiminished5 <_label>Add Diminished 5th above base <_tooltip>Add a diminished fifth as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMinor7.xml0000644000000000000000000000013213135434035027507 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.399981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMinor7.xml0000644000175000017500000000067113135434035031364 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpMajor7 AddLowestUpMinor7 <_label>Add Minor 7th above base <_tooltip>Add a minor seventh as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpDiminished50000644000000000000000000000013213135434035027677 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.399981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpDiminished5.scm0000644000175000017500000000005513135434035032331 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'd5)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpPerfect4.xm0000644000000000000000000000013213135434035027634 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.399981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpPerfect4.xml0000644000175000017500000000067613135434035031672 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpMinor3 AddLowestUpPerfect4 <_label>Add Perfect 4th above base <_tooltip>Add a perfect fourth as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpMajor3.xml0000644000000000000000000000013213135434035027467 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.399981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpMajor3.xml0000644000175000017500000000066713135434035031351 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddLowestUpMinor2 AddLowestUpMajor3 <_label>Add Major 3rd above base <_tooltip>Add a major third as chordnote relative to the lowest note upwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/PaxHeaders.19168/AddLowestUpPerfect1.sc0000644000000000000000000000013213135434035027612 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.399981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddAboveBase/AddLowestUpPerfect1.scm0000644000175000017500000000005513135434035031640 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromLowestUp 'p1)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/HideLilyPond.xml0000644000000000000000000000013213135434035024304 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.409981806 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/HideLilyPond.xml0000644000175000017500000000062513135434035026160 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ParenthesizeChord HideLilyPond <_label>Hide on Printing <_tooltip>Comments out the chord in the LilyPond output. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/ParenthesizeChord.scm0000644000000000000000000000013213135434035025363 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.409981806 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ParenthesizeChord.scm0000644000175000017500000000045513135434035027240 0ustar00jjbenhamjjbenham00000000000000;;; ParenthesizeChord (let ((tag "ParenthesizeChord")) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-prefix tag "\\parenthesize ") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-display tag "()"))) (d-SetSaved #f))denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/CompactChordScale.xml0000644000000000000000000000013213135434035025276 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.409981806 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/CompactChordScale.xml0000644000175000017500000000064313135434035027152 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CompactChordScale ChordNameOffset <_label>Scale Next Chord <_tooltip>The next chord symbol will be scaled to the values given. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/ChordNameOffset.scm0000644000000000000000000000013213135434035024751 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.409981806 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChordNameOffset.scm0000644000175000017500000000240513135434035026623 0ustar00jjbenhamjjbenham00000000000000;;ChordNameOffset (let* ((tag "ChordNameOffset") (params ChordNameOffset::params)(x "2")(y "0")(data (d-DirectiveGet-chord-data tag))) (if data (begin (set! data (eval-string data)) (set! x (car data)) (set! y (cdr data)))) (if (equal? params "edit") (set! params #f)) (if (pair? params) (begin (set! x (number->string (car params))) (set! y (number->string (cdr params))) (set! params 'finished))) (if (not params) (set! x (d-GetUserInput (_ "Chord Symbol Offset") (_ "Give horizontal displacement required") x))) (if (and (not params) x (string->number x)) (set! y (d-GetUserInput (_ "Chord Symbol Offset") (_ "Give vertical displacement required") y))) (if (and y (string->number y)) (begin (d-DirectivePut-chord-data tag (format #f "(cons ~s ~s)" x y)) (set! y (number->string (- (string->number y) 2.5)));; -2.5 is the standard ChordName Y-Offset in ChordChartStaff.scm (d-DirectivePut-chord-prefix tag (string-append "\\once \\override ChordName.extra-offset =#'(" x " . " y ") ")) (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-display tag "<-->"))) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/HideLilyPond.scm0000644000000000000000000000013213135434035024266 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.409981806 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/HideLilyPond.scm0000644000175000017500000000040513135434035026136 0ustar00jjbenhamjjbenham00000000000000;;;;;;HideLilyPond (d-DirectivePut-chord-prefix "HideLilyPond" "%{") (d-DirectivePut-chord-postfix "HideLilyPond" "%}") (d-DirectivePut-chord-display "HideLilyPond" (_ "hide")) (d-DirectivePut-chord-override "HideLilyPond" DENEMO_OVERRIDE_AFFIX) (d-SetSaved #f)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/ChordNameOffset.xml0000644000000000000000000000013213135434035024767 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.433315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChordNameOffset.xml0000644000175000017500000000065013135434035026641 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChordNameOffset AddBassInversion <_label>Offset Chord Name <_tooltip>Offsets the Chord symbol generated by the chord at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/AlternateNote.xml0000644000000000000000000000013213135434035024525 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.433315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AlternateNote.xml0000644000175000017500000000104013135434035026371 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AlternateNote ChangeEnharmonicDown <_label>Alternate Note <_tooltip>If there are two notes at the cursor height this command swaps them round. This affects which note will be acted on by commands such as fingering, string-number, sharpen, flatten etc. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/AddBassInversion.scm0000644000000000000000000000013213135434035025140 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.433315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBassInversion.scm0000644000175000017500000000215213135434035027011 0ustar00jjbenhamjjbenham00000000000000;;;AddBassInversion (let ((tag "AddBassInversion")(note AddBassInversion::params)) (if (equal? note "edit") (set! note #f)) (if (Appending?) (d-MoveCursorLeft)) (if (Note?) (begin (d-CursorToNthNoteHeight 1) ;;attach to lowest note only (if (not note) (begin (set! note (d-DirectiveGet-note-data tag)) (if (not note) (set! note "Bes")) (set! note (d-GetUserInput (_ "Add Bass Note") (_ "Give bass note to add below root\nUse \"es\" for flat, \"is\" for sharp") note)))) (if (string? note) (begin (if (string-null? note) (d-DirectiveDelete-note tag) (begin (d-DirectivePut-note-data tag note) (set! note (string-downcase note)) (d-DirectivePut-note-postfix tag (string-append "\\withMusicProperty bass ##t " note " ")) (d-DirectivePut-note-display tag (string-append "/" (string-upcase note))) (d-DirectivePut-note-tx tag -7) (d-DirectivePut-note-ty tag 30) (d-Chordize #t))) (d-SetSaved #f)))))) denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/ChangeEnharmonicDown.xml0000644000000000000000000000013213135434035026001 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.433315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangeEnharmonicDown.xml0000644000175000017500000000074013135434035027653 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeEnharmonicUp ChangeEnharmonicDown <_label>Change Enharmonic Down <_tooltip>Switch through enharmonic variants of the same sounding note in the direction of lower diatonic base notes denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/AlternateNote.scm0000644000000000000000000000013213135434035024507 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.443315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AlternateNote.scm0000644000175000017500000000007313135434035026360 0ustar00jjbenhamjjbenham00000000000000;;AlternateNote (d-SwapNotesAtCursorHeight) (d-SetSaved #f)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/BassInversionSequence.scm0000644000000000000000000000013213135434035026220 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.443315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/BassInversionSequence.scm0000644000175000017500000000450413135434035030074 0ustar00jjbenhamjjbenham00000000000000(let ((tag "BassInversionSequence")(notes "")(notenames "")(good #f)) (if (d-Directive-standalone? tag) (begin (d-InfoDialog (_ "This directive places a sequence of bass note names after the next chord. You can delete it with the usual backspace and del commands."))) (begin (if (Appending?) (if (d-MoveCursorLeft) (if (Note?) (set! good #t))) (if (Note?) (set! good #t))) (if good (begin (d-MoveCursorLeft) (d-LilyPondInclude "note-name-markup.ily") (let loop () (define note (d-GetUserInput (_ "Note Name") (_ "Give Next Note or Blank to finish") "c")) (if (and note (not (string-null? note))) (begin (set! notenames (string-append notenames "/" note)) (set! notes (string-append notes (string-append " #(denemo-bass-inversion (ly:pitch-transpose (ly:make-pitch -1 " (number->string (GetStep note)) " " (number->string (GetAccidental note)) " ) (ly:make-pitch -1 DenemoTransposeStep DenemoTransposeAccidental))) "))) (loop)))) (if (and notes (not (string-null? notes))) (begin (d-SetSaved #t) (StandAloneDirectiveProto (cons tag (string-append "-\\tweak word-space 0.1 _\\markup\\with-dimensions #'(-2 . 2) #'(-2 . 2) \\line {" notes "}")) #f (string-append "\n" notenames "\nDenemo 8") "\\BASS INV") (d-DirectivePut-standalone-prefix tag "<>-\\tweak #'extra-offset #'(4 . -2)") (d-DirectivePut-standalone-data tag "'((x-offset . \"4\") (y-offset . \"-2\"))") (d-DirectivePut-standalone-gx tag 20) (d-DirectivePut-standalone-gy tag 60) (d-MoveCursorRight) (d-MoveCursorRight)))) (d-WarningDialog (_ "Place the cursor on chord to which bass sequence belongs")))))) denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/ChangePrintDuration0000644000000000000000000000013213135434150025067 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/0000755000175000017500000000000013135434150027015 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/PaxHeaders.19168/ChangePrintDura0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.446648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/ChangePrintDurationBreve.scm0000644000175000017500000000003213135434035034412 0ustar00jjbenhamjjbenham00000000000000(ChangePrintDuration -1 0)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/PaxHeaders.19168/ChangePrintDura0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.456648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/ChangePrintDuration2.scm0000644000175000017500000000003113135434035033507 0ustar00jjbenhamjjbenham00000000000000(ChangePrintDuration 2 0)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/PaxHeaders.19168/ChangePrintDura0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.456648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/ChangePrintDurationBreve.xml0000644000175000017500000000104413135434035034434 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangePrintDuration0 ChangePrintDurationBreve <_label>Change chord-member to breve <_tooltip>Change one chord member to appear like a breve duration without changing the original logic like measure calculation or the duration of newly added chord members. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/PaxHeaders.19168/ChangePrintDura0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.456648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/ChangePrintDuration1.scm0000644000175000017500000000003113135434035033506 0ustar00jjbenhamjjbenham00000000000000(ChangePrintDuration 1 0)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/PaxHeaders.19168/ChangePrintDura0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.456648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/ChangePrintDuration2.xml0000644000175000017500000000100213135434035033524 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangePrintDuration2 <_label>Change chord-member to quarter note <_tooltip>Change one chord member to appear like a quarter-note duration without changing the original logic like measure calculation or the duration of newly added chord members. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/PaxHeaders.19168/ChangePrintDura0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.456648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/ChangePrintDuration1.xml0000644000175000017500000000105013135434035033526 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangePrintDuration2 ChangePrintDuration1 <_label>Change chord-member to half note <_tooltip>Change one chord member to appear like a half-note duration without changing the original logic like measure calculation or the duration of newly added chord members. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/PaxHeaders.19168/ChangePrintDura0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.466648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/ChangePrintDurationLonga.scm0000644000175000017500000000003213135434035034407 0ustar00jjbenhamjjbenham00000000000000(ChangePrintDuration -2 0)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/PaxHeaders.19168/ChangePrintDura0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.466648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/ChangePrintDuration0.xml0000644000175000017500000000105213135434035033527 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangePrintDuration1 ChangePrintDuration0 <_label>Change chord-member to whole note <_tooltip>Change one chord member to appear like a whole-note duration without changing the original logic like measure calculation or the duration of newly added chord members. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/PaxHeaders.19168/ChangePrintDura0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.466648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/ChangePrintDurationLonga.xml0000644000175000017500000000105013135434035034426 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangePrintDurationBreve ChangePrintDurationLonga <_label>Change chord-member to longa <_tooltip>Change one chord member to appear like a longa duration without changing the original logic like measure calculation or the duration of newly added chord members. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/PaxHeaders.19168/init.scm0000644000000000000000000000013213135434035026615 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.466648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/init.scm0000644000175000017500000000070113135434035030464 0ustar00jjbenhamjjbenham00000000000000(define (ChangePrintDuration number duration) (define stringnumber (number->string number)) (if (Note?) (begin (AttachDirective "note" "prefix" (cons "Duration" "") (string-append "\\tweak #'duration-log #" stringnumber " ")) (AttachDirective "note" "graphic" (cons "Duration" "") (string-append "noteheads.s" stringnumber) DENEMO_OVERRIDE_GRAPHIC) ;(AttachDirective "note" "midibytes" (cons "Duration" "") DENEMO_OVERRIDE_DURATION) ))) denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/PaxHeaders.19168/ChangePrintDura0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.486648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangePrintDuration/ChangePrintDuration0.scm0000644000175000017500000000003113135434035033505 0ustar00jjbenhamjjbenham00000000000000(ChangePrintDuration 0 0)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/OpenParenthesizeChord.xml0000644000000000000000000000013213135434035026223 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.486648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/OpenParenthesizeChord.xml0000644000175000017500000000066313135434035030101 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenParenthesizeChord ParenthesizeChord <_label>Open Parenthesis (Off/On) <_tooltip>Prints an open parenthesis before the chord at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/AddBelowTop0000644000000000000000000000013213135434150023323 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/0000755000175000017500000000000013135434150025251 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMajor6.xm0000644000000000000000000000013213135434035027663 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.486648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMajor6.xml0000644000175000017500000000070113135434035031706 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownPerfect5 AddHighestDownMajor6 <_label>Add Major 6th below top <_tooltip>Add a major sixth as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownPerfect4.0000644000000000000000000000013213135434035027634 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.486648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownPerfect4.scm0000644000175000017500000000006013135434035032204 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'p4)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMajor2.xm0000644000000000000000000000013213135434035027657 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.496648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMajor2.xml0000644000175000017500000000070213135434035031703 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownPerfect1 AddHighestDownMajor2 <_label>Add Major 2nd below top <_tooltip>Add a major second as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMinor2.sc0000644000000000000000000000013213135434035027654 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.496648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMinor2.scm0000644000175000017500000000006013135434035031676 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'm2)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMajor7.sc0000644000000000000000000000013213135434035027645 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.496648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMajor7.scm0000644000175000017500000000006013135434035031667 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'M7)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMinor7.sc0000644000000000000000000000013213135434035027661 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.496648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMinor7.scm0000644000175000017500000000006013135434035031703 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'm7)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownPerfect5.0000644000000000000000000000013213135434035027635 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.496648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownPerfect5.xml0000644000175000017500000000071213135434035032227 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownDiminished5 AddHighestDownPerfect5 <_label>Add Perfect 5th below top <_tooltip>Add a perfect fifth as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMinor6.sc0000644000000000000000000000013213135434035027660 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.506648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMinor6.scm0000644000175000017500000000006013135434035031702 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'm6)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownAugmented0000644000000000000000000000013213135434035030013 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.506648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownAugmented4.xml0000644000175000017500000000071613135434035032553 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownPerfect4 AddHighestDownAugmented4 <_label>Add Augmented 4th below top <_tooltip>Add a augmented fourth as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMinor2.xm0000644000000000000000000000013213135434035027673 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.506648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMinor2.xml0000644000175000017500000000070013135434035031715 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownMajor2 AddHighestDownMinor2 <_label>Add Minor 2nd below top <_tooltip>Add a minor second as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMinor3.xm0000644000000000000000000000013213135434035027674 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.506648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMinor3.xml0000644000175000017500000000067713135434035031733 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownMajor3 AddHighestDownMinor3 <_label>Add Minor 3rd below top <_tooltip>Add a minor third as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownAugmented0000644000000000000000000000013213135434035030013 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.506648472 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownAugmented4.scm0000644000175000017500000000006013135434035032525 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'a4)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownDiminishe0000644000000000000000000000013213135434035030013 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.519981805 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownDiminished5.xml0000644000175000017500000000073213135434035032716 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownAugmented4 AddHighestDownDiminished5 <_label>Add Diminished 5th below top <_tooltip>Add a tritone/diminished fifth as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMajor3.xm0000644000000000000000000000013213135434035027660 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.519981805 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMajor3.xml0000644000175000017500000000067713135434035031717 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownMinor2 AddHighestDownMajor3 <_label>Add Major 3rd below top <_tooltip>Add a major third as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMinor3.sc0000644000000000000000000000013213135434035027655 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.519981805 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMinor3.scm0000644000175000017500000000006013135434035031677 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'm3)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownPerfect1.0000644000000000000000000000013213135434035027631 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.519981805 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownPerfect1.scm0000644000175000017500000000006013135434035032201 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'p1)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMinor7.xm0000644000000000000000000000013213135434035027700 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.519981805 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMinor7.xml0000644000175000017500000000070113135434035031723 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownMajor7 AddHighestDownMinor7 <_label>Add Minor 7th below top <_tooltip>Add a minor seventh as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMajor7.xm0000644000000000000000000000013213135434035027664 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.539981805 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMajor7.xml0000644000175000017500000000070113135434035031707 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownMinor6 AddHighestDownMajor7 <_label>Add Major 7th below top <_tooltip>Add a major seventh as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMajor6.sc0000644000000000000000000000013213135434035027644 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.539981805 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMajor6.scm0000644000175000017500000000006013135434035031666 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'M6)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMajor3.sc0000644000000000000000000000013213135434035027641 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.539981805 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMajor3.scm0000644000175000017500000000006013135434035031663 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'M3)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownPerfect5.0000644000000000000000000000013213135434035027635 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.539981805 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownPerfect5.scm0000644000175000017500000000006013135434035032205 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'p5)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownPerfect1.0000644000000000000000000000013213135434035027631 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.539981805 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownPerfect1.xml0000644000175000017500000000063113135434035032223 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownPerfect1 <_label>Add Perfect 1st below top <_tooltip>Add a perfect prime as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownDiminishe0000644000000000000000000000013213135434035030013 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.553315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownDiminished5.scm0000644000175000017500000000006013135434035032672 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'd5)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownPerfect4.0000644000000000000000000000013213135434035027634 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.553315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownPerfect4.xml0000644000175000017500000000070613135434035032231 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownMinor3 AddHighestDownPerfect4 <_label>Add Perfect 4th below top <_tooltip>Add a perfect fourth as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMinor6.xm0000644000000000000000000000013213135434035027677 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.553315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMinor6.xml0000644000175000017500000000067713135434035031736 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddHighestDownMajor6 AddHighestDownMinor6 <_label>Add Minor 6th below top <_tooltip>Add a minor sixth as chordnote relative to the highest note downwards. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/PaxHeaders.19168/AddHighestDownMajor2.sc0000644000000000000000000000013213135434035027640 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.553315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/AddBelowTop/AddHighestDownMajor2.scm0000644000175000017500000000006013135434035031662 0ustar00jjbenhamjjbenham00000000000000(ANS::AddIntervalAsChordnoteFromHighestDown 'M2)denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/ChangeEnharmonicUp.scm0000644000000000000000000000013213135434035025440 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.553315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangeEnharmonicUp.scm0000644000175000017500000000114313135434035027310 0ustar00jjbenhamjjbenham00000000000000;enharmonic + ;; This script switches through enharmonic variants of the same in the direction of higher diatonic base notes (if (Note?) (let () (define old (ANS::GetChordNotes)) (define (proc ansNote) (cond ((= (ANS::GetHalfToneDistanceFromC ansNote) (ANS::GetHalfToneDistanceFromC (+ ansNote 40 ))) (+ ansNote 40 )) ; special rule for irregular notes ((= (ANS::GetHalfToneDistanceFromC ansNote) (ANS::GetHalfToneDistanceFromC (+ ansNote 30 ))) (+ ansNote 30)) ; all other notes (else ansNote))) ; else just stay on the same note ;body (ANS::ChangeChordNotes (map (lambda (x) (proc x)) old))))denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/ChangeEnharmonicDown.scm0000644000000000000000000000013213135434035025763 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.563315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangeEnharmonicDown.scm0000644000175000017500000000116213135434035027634 0ustar00jjbenhamjjbenham00000000000000;enharmonic - ;; This script switches through enharmonic variants of the same sounding note in the direction of lower diatonic base notes (if (Note?) (let () (define old (ANS::GetChordNotes)) (define (proc ansNote) (cond ((= (ANS::GetHalfToneDistanceFromC ansNote) (ANS::GetHalfToneDistanceFromC (- ansNote 40 ))) (- ansNote 40 )) ; special rule for irregular notes ((= (ANS::GetHalfToneDistanceFromC ansNote) (ANS::GetHalfToneDistanceFromC (- ansNote 30 ))) (- ansNote 30)) ; all other notes (else ansNote))) ; else just stay on the same note ;body (ANS::ChangeChordNotes (map (lambda (x) (proc x)) old))))denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/UseAddPrefix.scm0000644000000000000000000000013213135434035024265 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.563315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/UseAddPrefix.scm0000644000175000017500000000114313135434035026135 0ustar00jjbenhamjjbenham00000000000000(let ((tag "UseAddPrefix")(params UseAddPrefix::params)) (if (equal? params "edit") (set! params #f)) (d-Directive-standalone tag) (if params (d-DirectivePut-standalone-graphic tag "\nAx\nDenemo\n24") (d-DirectivePut-standalone-graphic tag "\nA\nDenemo\n24")) (if (not params) (set! params "add")) (d-DirectivePut-standalone-postfix tag (string-append " \\set additionalPitchPrefix = #\"" params "\" ")) (d-DirectivePut-standalone-display tag "add prefix") (d-DirectivePut-standalone-minpixels tag 30) (d-SetSaved #f) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/CloseParenthesizeChord.xml0000644000000000000000000000013213135434035026367 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.563315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/CloseParenthesizeChord.xml0000644000175000017500000000067013135434035030243 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CloseParenthesizeChord OpenParenthesizeChord <_label>Close Parenthesis (Off/On) <_tooltip>Prints a close parenthesis after the chord at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/CompactChordScale.scm0000644000000000000000000000013213135434035025260 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.563315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/CompactChordScale.scm0000644000175000017500000000272713135434035027141 0ustar00jjbenhamjjbenham00000000000000;;;CompactChordScale (let* ((tag "CompactChordScale")(params CompactChordScale::params)(scalex "2.0") (scaley "2.0") (data (d-DirectiveGet-standalone-data tag))) (if data (begin (d-DirectiveDelete-standalone tag) (set! data (eval-string data)) (set! scalex (car data)) (set! scaley (cdr data)))) (if (equal? params "edit") (set! params #f)) (if params (begin (set! scalex (number->string (car params))) (set! scaley (number->string (cdr params))) (set! params 'finished))) (if (not params) (set! scalex (d-GetUserInput (_ "Chord Symbol Scale") (_ "Give horizontal scaling for next chord") scalex))) (if scalex (begin (if (not params) (set! scaley (d-GetUserInput (_ "Chord Symbol Scale") (_ "Give vertical scaling for next chord") scaley))) (if scaley (begin (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-postfix tag (string-append "\\once \\set Score.chordCompactScale = #'(" scalex " . " scaley ") ")) (d-DirectivePut-standalone-display tag "Scale") (d-DirectivePut-standalone-data tag (format #f "'~s" (cons scalex scaley))) (d-DirectivePut-standalone-minpixels tag 30) (d-SetSaved #f) (d-RefreshDisplay))))))denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/ChangeEnharmonicUp.xml0000644000000000000000000000013213135434035025456 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.573315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ChangeEnharmonicUp.xml0000644000175000017500000000066313135434035027334 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChangeEnharmonicUp <_label>Change Enharmonic Up <_tooltip>Shift through enharmonic variants of the same sounding note in the direction of higher diatonic base notes. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/CloseParenthesizeChord.scm0000644000000000000000000000013213135434035026351 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.573315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/CloseParenthesizeChord.scm0000644000175000017500000000106713135434035030226 0ustar00jjbenhamjjbenham00000000000000;;; CloseParenthesizeChord (let ((tag "CloseParenthesizeChord")) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-LilyPondDefinition (cons "endParenthesize" " \\once \\override ParenthesesItem.stencils = #(lambda (grob) (let ((par-list (parentheses-item::calc-parenthesis-stencils grob))) (list point-stencil (cadr par-list))))")) (d-DirectivePut-chord-prefix tag "\\endParenthesize\\parenthesize ") (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-chord-display tag ")"))) (d-SetSaved #f))denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/ParenthesizeChord.xml0000644000000000000000000000013213135434035025401 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.573315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/ParenthesizeChord.xml0000644000175000017500000000055213135434035027254 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ParenthesizeChord <_label>Parenthesize Chord <_tooltip>Enclose the chord in ( ) on printing. denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/PaxHeaders.19168/BassInversionSequence.xml0000644000000000000000000000013213135434035026236 xustar0030 mtime=1500919837.973315139 30 atime=1500919930.573315139 30 ctime=1500919912.963315139 denemo-2.2.0/actions/menus/ObjectMenu/ChordMenu/BassInversionSequence.xml0000644000175000017500000000063013135434035030106 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BassInversionSequence AddBassInversion <_label>Bass Sequence <_tooltip>Typesets a sequence of bass inversion notes. denemo-2.2.0/actions/menus/ObjectMenu/PaxHeaders.19168/MeasureMenu0000644000000000000000000000013213135434150021521 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.546648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/0000755000175000017500000000000013135434150023447 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/DeleteEmptyMeasures.xml0000644000000000000000000000013213135434035026250 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.593315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/DeleteEmptyMeasures.xml0000644000175000017500000000065713135434035030131 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteMeasure DeleteEmptyMeasures <_label>Delete Empty Measures <_tooltip>Deletes all empty measures from the cursor until the next music. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/DisplayEffects0000644000000000000000000000013213135434150024426 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.546648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/DisplayEffects/0000755000175000017500000000000013135434150026354 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/DisplayEffects/PaxHeaders.19168/DisplayMeasureNumb0000644000000000000000000000013213135434035030201 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.593315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/DisplayEffects/DisplayMeasureNumber.xml0000644000175000017500000000075313135434035033205 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DisplayMeasureNumber WidenMeasures <_label>Measure Number <_tooltip>Changes the bar number displayed for this and subsequent bars. Does not affect the print out, see Set Bar Number command for that. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/DisplayEffects/PaxHeaders.19168/DisplayMeasureNumb0000644000000000000000000000013213135434035030201 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.593315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/DisplayEffects/DisplayMeasureNumber.scm0000644000175000017500000000061613135434035033165 0ustar00jjbenhamjjbenham00000000000000(let () (define result (d-GetUserInput (_ "Display Measure Number") (_ "Enter the number you wish to display as the bar number for the current bar. Does not affect the typeset score.") "1")) (if (and result (string->number result)) (let ((baroffset (- (string->number result) (d-GetMeasure) ))) (d-SetMeasureNumberOffset baroffset) (d-RefreshDisplay)) (d-WarningDialog (_ "Cancelled"))))denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/IgnoreMeasureDurationError.scm0000644000000000000000000000013213135434035027571 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.593315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/IgnoreMeasureDurationError.scm0000644000175000017500000000143713135434035031447 0ustar00jjbenhamjjbenham00000000000000;;;IgnoreMeasureDurationError (if IgnoreMeasureDurationError::params (d-InfoDialog (_ "This Directive tells Denemo not to signal an error if there are too many notes or rests after this point (or too few) for a complete measure.")) (let ((tag "!")) (d-PushPosition) (while (d-PrevObjectInMeasure)) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (begin (d-Directive-standalone tag) (d-DirectivePut-standalone-postfix tag (string-append "%{" (_ "Partial Measure is Acceptable") "%}")) (d-DirectivePut-standalone-display tag (_ "Partial Measure")) (d-DirectivePut-standalone-minpixels tag 30))) (d-PopPosition) (d-SetSaved #f) (d-RefreshDisplay))) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/AddDuplicateMeasure.xml0000644000000000000000000000013213135434035026167 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.603315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/AddDuplicateMeasure.xml0000644000175000017500000000066513135434035030047 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AddMeasure AddDuplicateMeasure <_label>Insert Duplicate Measure After <_tooltip>Inserts a copy of the current measure after the present measure. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/CheckTupletsInMeasure.xml0000644000000000000000000000013213135434035026531 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.603315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/CheckTupletsInMeasure.xml0000644000175000017500000000064313135434035030405 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SplitMeasure CheckTupletsInMeasure <_label>Check Tuplets <_tooltip>Checks that start/end tuplets match in the current measure. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/AddDuplicateMeasure.scm0000644000000000000000000000013213135434035026151 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.603315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/AddDuplicateMeasure.scm0000644000175000017500000000212613135434035030023 0ustar00jjbenhamjjbenham00000000000000;;;AddDuplicateMeasure (d-PushClipboard) (d-SelectMeasure) (d-Copy) (if (d-MoveToMeasureRight) (if (None?) #t ; Empty measure (d-InsertMeasureBefore)); create empty measure (begin ; End of staff (d-AppendMeasureAllStaffs) (d-MoveToMeasureRight))) (d-Paste) (d-PopClipboard) (if AddDuplicateMeasure::params (begin (d-PushPosition) (while (d-PrevChordInMeasure)) (let ((channel (d-StaffProperties "query=midi_channel")) (ticks #f) (time 0)(key #f) (prognum (d-StaffProperties "query=midi_prognum"))) (define command (number->string (logior (string->number channel) #xC0))) (d-OutputMidiBytes (string-append command " " prognum)) (let loop () (set! ticks (d-GetDurationInTicks)) (if (d-GetNonprinting) (begin (set! channel "9") (set! key 60)) (set! key (d-GetNoteAsMidi))) (if (and ticks key) (begin (d-OneShotTimer time (string-append "(d-PlayMidiNote " (number->string key) " 127 " channel " " (number->string ticks) ")")) (set! time (+ time ticks)))) (if (d-NextChordInMeasure) (loop)))) (d-PopPosition)))denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/HiddenMeasure.xml0000644000000000000000000000013213135434035025037 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.603315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/HiddenMeasure.xml0000644000175000017500000000105413135434035026710 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HiddenMeasure InsertBreakInStaff <_label>Hidden Measure <_tooltip>Inserts a dummy whole measure rest. The measure is not seen by the LilyPond typesetter, it just takes up space in the display. Use for polymetric music to even up the staff lengths for the display. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/CheckTupletsInMeasure.scm0000644000000000000000000000013213135434035026513 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.613315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/CheckTupletsInMeasure.scm0000644000175000017500000000310413135434035030362 0ustar00jjbenhamjjbenham00000000000000;;;CheckTupletsInMeasure (define-once CheckScore::ignore 0) (define CheckTupletsInMeasure::return #f) (let () (define (get-pos) (string-append "\nAt movement " (number->string (d-GetMovement)) ", voice " (number->string (d-GetStaff)) ", measure " (number->string (d-GetMeasure)) ".")) (define start '()) (while (d-PrevObjectInMeasure)) (let loop () ; (disp "loop " start " \n") (if (TupletOpen?) (begin (if (not (null? start)) (disp "Nested Tuplets")) (set! start (cons (GetPosition) start)))) (if (TupletClose?) (if (null? start) (begin (if (positive? CheckScore::ignore) (begin (set! CheckScore::ignore (1- CheckScore::ignore)) (set! start '()) (if (d-NextObjectInMeasure) (loop))) (set! CheckTupletsInMeasure::return (string-append (_ "End Tuplet with no start") (get-pos))))) (begin (set! start (cdr start)) (if (d-NextObjectInMeasure) (loop)))) (if (d-NextObjectInMeasure) (loop)))) (if (not (null? start)) (begin (if (positive? CheckScore::ignore) (begin (set! CheckScore::ignore (1- CheckScore::ignore))) (begin (apply d-GoToPosition (car start)) (set! CheckTupletsInMeasure::return (string-append (_ "Start Tuplet with no end") (get-pos))))))) (if (not CheckTupletsInMeasure::params) (begin ;; interactive (if (not CheckTupletsInMeasure::return) (begin (set! CheckTupletsInMeasure::return (_ "All tuplets in measure are terminated")))) (d-InfoDialog CheckTupletsInMeasure::return)))) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/MergeWithNextMeasure.scm0000644000000000000000000000013213135434035026360 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.613315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/MergeWithNextMeasure.scm0000644000175000017500000000072013135434035030230 0ustar00jjbenhamjjbenham00000000000000(let () (define position (d-GetHorizontalPosition)) (define measure (d-GetMeasure)) (if (d-MoveToMeasureRight) (let () (define count -1) (d-PushClipboard) (d-UnsetMark) (d-SetMark) (GoToMeasureEnd) (d-SetPoint) (d-Cut) (d-DeleteMeasure) (d-GoToPosition #f #f measure #f) (GoToMeasureEnd) (RepeatUntilFail (lambda () (set! count (1+ count)) (d-PutClipObj 0 count))) ; paste (d-GoToPosition #f #f measure position) (d-PopClipboard))))denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/Upbeat.scm0000644000000000000000000000013213135434035023524 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.613315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Upbeat.scm0000644000175000017500000001076313135434035025404 0ustar00jjbenhamjjbenham00000000000000;;;Upbeat (let ((upbeat "Upbeat") (ok #t)(params Upbeat::params)) ; How many ticks are in a 100% filled measure? (define MaxTicks (* 1536 (GetPrevailingTimeSig #t) )) (define EndTick #f) ;Upbeat is only for underful measures (define (warning) (d-InfoDialog (_ "Upbeat/Short Measure can only be used in an underfull, non-empty measure")) (set! ok #f) #f) ; create upbeat directive and reduce display measure number by one (define (createUpbeat) (define remainingTicks (- MaxTicks EndTick)) (define partialDuration (number->string (/ EndTick 6 ))) (GoToMeasureBeginning) (StandAloneDirectiveProto (cons upbeat (string-append "\\partial 256*" partialDuration " ")) #f #f upbeat) (d-SetDurationInTicks remainingTicks) (d-DirectivePut-standalone-override upbeat DENEMO_OVERRIDE_DYNAMIC) (d-DirectivePut-standalone-graphic upbeat "\nî…¶\nemmentaler\n62") (d-DirectivePut-standalone-gx upbeat 20) (d-DirectivePut-standalone-gy upbeat 15) (d-LockDirective) (d-SetMeasureNumberOffset -1)) (define (ComputeAndCreate) (begin ; Save how many ticks are in this measure (GoToMeasureEnd) (set! EndTick (d-GetEndTick)) ; Cond what to do, only create Upbeat if the measure is not full, else give warning. (cond ((not EndTick) (warning)) ((zero? EndTick) (warning)) ((not EndTick) (warning)) ; empty ((< EndTick MaxTicks) (createUpbeat)) ; underful ((= MaxTicks EndTick) (warning)) ; 100% filled ((< MaxTicks EndTick) (warning)) ; >100% filled (else (warning)) ; ? ))) (define (DeleteUpbeat) (if (d-Directive-standalone? upbeat) (begin (d-LockDirective #f) ;; unlock (d-DirectiveDelete-standalone upbeat) (d-SetMeasureNumberOffset 0)))) (if (equal? params "delete") (DeleteUpbeat) (begin (GoToMeasureBeginning) (if Upbeat::params ;;; non-interactive call, this used to take the params as the tag to be used - is that useful? (DeleteUpbeat)) (if (d-Directive-standalone? upbeat) (let ( (choice (d-GetOption (string-append (_ "Help") stop (_ "Re-calculate") stop (_ "Delete") stop (_ "Advanced") stop)))) (cond ((boolean? choice) (d-WarningDialog (_ "Operation cancelled"))) ((equal? choice (_ "Help")) (d-InfoDialog (_ "This object fills up the duration of this measure, so that the notes in the measure form an upbeat. It needs to be renewed if you change the duration of the notes in the measure - use Re-calculate for this, or simply delete it and re-run the Upbeat command."))) ((equal? choice (_ "Re-calculate")) (DeleteUpbeat) (ComputeAndCreate)) ((equal? choice (_ "Delete")) (DeleteUpbeat)) ((equal? choice (_ "Advanced")) (if (not (d-DirectiveTextEdit-standalone upbeat)) (DeleteUpbeat))))) ;;;if upbeat not already present (ComputeAndCreate)) (if (d-Directive-standalone? upbeat) (begin (d-SetMark) (d-Copy) (d-UnsetMark) (d-PushPosition) (while (d-MoveToStaffUp)) (let loop () (DeleteUpbeat) (d-Paste) (d-LockDirective) (d-SetMeasureNumberOffset -1) (if (d-MoveToStaffDown) (loop))) (d-PopPosition) (d-RefreshDisplay) (if Upbeat::params (disp "Upbeat recalculated\n") (begin (if ok (begin (GoToMeasureEnd) (if (not (d-MoveToMeasureRight)) (d-AddMeasure))))))))))) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/CheckBeamsInMeasure.xml0000644000000000000000000000013213135434035026120 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.623315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/CheckBeamsInMeasure.xml0000644000175000017500000000063513135434035027775 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CheckTupletsInMeasure CheckBeamsInMeasure <_label>Check Beaming <_tooltip>Checks the current measure for beaming errors. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/Repeats0000644000000000000000000000013213135434150023124 xustar0030 mtime=1500919912.803315139 30 atime=1500919914.546648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/0000755000175000017500000000000013135434150025052 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/CloseRepeat.xml0000644000000000000000000000013213135434035026133 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.623315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/CloseRepeat.xml0000644000175000017500000000071013135434035030002 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenRepeat CloseRepeat <_label>Close a Repeat Section <_tooltip>Closes a section that starts with an Open Repeat. Not needed with 1st and 2nd time bars. (Printing) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/EndSecondTimeBar.xml0000644000000000000000000000013213135434035027033 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.623315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/EndSecondTimeBar.xml0000644000175000017500000000064313135434035030707 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SecondTimeBar EndSecondTimeBar <_label>Close Second Time Bar <_tooltip>Closes the second time bar previously opened (printing) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/FirstTimeBar.scm0000644000000000000000000000013213135434035026242 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.623315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/FirstTimeBar.scm0000644000175000017500000000054513135434035030117 0ustar00jjbenhamjjbenham00000000000000 ;;;FirstTimeBar (d-Directive-standalone "Repeat") (d-DirectivePut-standalone-minpixels "Repeat" 30) (d-DirectivePut-standalone-postfix "Repeat" " } \\alternative{{ ") (d-DirectivePut-standalone-graphic "Repeat" "FirstTimeBar") (d-DirectivePut-standalone-gx "Repeat" 32) (d-DirectivePut-standalone-gy "Repeat" -34) (d-MoveCursorRight) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/SecondTimeBar.scm0000644000000000000000000000013213135434035026366 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.646648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/SecondTimeBar.scm0000644000175000017500000000053213135434035030237 0ustar00jjbenhamjjbenham00000000000000;;;SecondTimeBar (d-Directive-standalone "Repeat") (d-DirectivePut-standalone-minpixels "Repeat" 30) (d-DirectivePut-standalone-postfix "Repeat" " }{ ") (d-DirectivePut-standalone-graphic "Repeat" "SecondTimeBar") (d-DirectivePut-standalone-gx "Repeat" 3) (d-DirectivePut-standalone-gy "Repeat" -34) (d-MoveCursorRight) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/HelpForRepeats.xml0000644000000000000000000000013213135434035026610 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.646648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/HelpForRepeats.xml0000644000175000017500000000063513135434035030465 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HelpForRepeats CheckTupletsInMeasure <_label>Help for Repeats <_tooltip>Explains the different ways of creating repeats. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/HelpForRepeats.scm0000644000000000000000000000013213135434035026572 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.646648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/HelpForRepeats.scm0000644000175000017500000000051313135434035030442 0ustar00jjbenhamjjbenham00000000000000(d-InfoDialog (_ "Repeats are usually inserted using commands to insert repeat barlines and to insert first/second/nth time bar markings from the Directives menu - look these up in the Command Center. This menu is just for those that want the normal LilyPond syntax for repeats - use right-click->More Commands to un-hide these."))denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/OpenRepeat.scm0000644000000000000000000000013213135434035025751 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.646648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/OpenRepeat.scm0000644000175000017500000000055213135434035027624 0ustar00jjbenhamjjbenham00000000000000 ;;;;;;;;;;OpenRepeat (d-Directive-standalone "Repeat") (d-DirectivePut-standalone-postfix "Repeat" " \\repeat volta 2 {\n") (d-DirectivePut-standalone-minpixels "Repeat" 25) (d-DirectivePut-standalone-gx "Repeat" -2) (d-DirectivePut-standalone-gy "Repeat" -1) (d-DirectivePut-standalone-graphic "Repeat" "RepeatOpen") (d-MoveCursorRight) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/OpenRepeat.xml0000644000000000000000000000013213135434035025767 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.646648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/OpenRepeat.xml0000644000175000017500000000071513135434035027643 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RepeatEndStart OpenRepeat <_label>Open Repeat Section <_tooltip>Marks the point where a repeat will start. A correspond close, or first and second time bars are needed. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/CloseRepeat.scm0000644000000000000000000000013213135434035026115 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.656648473 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/CloseRepeat.scm0000644000175000017500000000053213135434035027766 0ustar00jjbenhamjjbenham00000000000000 ;;;;;;;;;;CloseRepeat (d-Directive-standalone "Repeat") (d-DirectivePut-standalone-postfix "Repeat" "}\n") (d-DirectivePut-standalone-minpixels "Repeat" 25) (d-DirectivePut-standalone-gx "Repeat" 20) (d-DirectivePut-standalone-gy "Repeat" -2) (d-DirectivePut-standalone-graphic "Repeat" "RepeatClose") (d-MoveCursorRight) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/CloseReopenRepeat.xml0000644000000000000000000000013213135434035027304 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.656648473 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/CloseReopenRepeat.xml0000644000175000017500000000063513135434035031161 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CloseRepeat CloseReopenRepeat <_label>Close and Reopen Repeat <_tooltip>Closes an open repeat block and opens a new one. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/SecondTimeBar.xml0000644000000000000000000000013213135434035026404 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.656648473 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/SecondTimeBar.xml0000644000175000017500000000064113135434035030256 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FirstTimeBar SecondTimeBar <_label>Second Time Bar <_tooltip>Closes first time bars and starts second time bar(s) (printing) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/CloseReopenRepeat.scm0000644000000000000000000000013213135434035027266 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.656648473 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/CloseReopenRepeat.scm0000644000175000017500000000057113135434035031142 0ustar00jjbenhamjjbenham00000000000000 ;;;;;;;;;;CloseReopenRepeat (d-Directive-standalone "Repeat") (d-DirectivePut-standalone-postfix "Repeat" "}\n\\repeat volta 2 {\n") (d-DirectivePut-standalone-minpixels "Repeat" 25) (d-DirectivePut-standalone-gx "Repeat" 20) (d-DirectivePut-standalone-gy "Repeat" -1) (d-DirectivePut-standalone-graphic "Repeat" "RepeatCloseOpen") (d-MoveCursorRight) (d-RefreshDisplay) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/FirstTimeBar.xml0000644000000000000000000000013213135434035026260 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.656648473 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/FirstTimeBar.xml0000644000175000017500000000063713135434035030137 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CloseRepeat FirstTimeBar <_label>First Time Bar <_tooltip>Closes a repeated section and starts a first time bar (printing) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/PaxHeaders.19168/EndSecondTimeBar.scm0000644000000000000000000000013213135434035027015 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.666648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Repeats/EndSecondTimeBar.scm0000644000175000017500000000054313135434035030670 0ustar00jjbenhamjjbenham00000000000000;;;EndSecondTimeBar (d-DirectivePut-standalone "Repeat") (d-DirectivePut-standalone-minpixels "Repeat" 30) (d-DirectivePut-standalone-postfix "Repeat" " }} ") (d-DirectivePut-standalone-graphic "Repeat" "EndSecondTimeBar") (d-DirectivePut-standalone-gy "Repeat" -15) (d-DirectivePut-standalone-gy "Repeat" -36) (d-MoveCursorRight) (d-RefreshDisplay)denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/ShortMeasure.scm0000644000000000000000000000013213135434035024725 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.666648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/ShortMeasure.scm0000644000175000017500000000673113135434035026605 0ustar00jjbenhamjjbenham00000000000000;;;ShortMeasure (let ((upbeat "ShortMeasure") (ok #t)) ; How many ticks are in a 100% filled measure? (define MaxTicks (* 1536 (GetPrevailingTimeSig #t) )) (define EndTick #f) ;Upbeat is only for underful measures (define (warning) (d-InfoDialog (_ "Upbeat/Short Measure can only be used in an underfull, non-empty measure")) (set! ok #f) #f) ; Define Upbeat-Directive Subprogram (define (createUpbeat) (define remainingTicks (- MaxTicks EndTick)) (define partialDuration (number->string (/ EndTick 6 ))) (GoToMeasureBeginning) (StandAloneDirectiveProto (cons upbeat (string-append "\\set Timing.measurePosition = #(ly:make-moment -" (number->string (/ (GetMeasureTicks) 1536)) ") ")) #f #f upbeat) (d-SetDurationInTicks remainingTicks) (d-DirectivePut-standalone-override upbeat (logior DENEMO_OVERRIDE_DURATION DENEMO_OVERRIDE_DYNAMIC)) (d-DirectivePut-standalone-graphic upbeat "\nî…¶\nemmentaler\n36") (d-DirectivePut-standalone-gx upbeat 20) (d-DirectivePut-standalone-gy upbeat 15)) (define (ComputeAndCreate) (begin ; Save how many ticks are in this measure (GoToMeasureEnd) (set! EndTick (d-GetEndTick)) ; Cond what to do, only create Upbeat if the measure is not full, else give warning. (cond ((not EndTick) (warning)) ; empty ((< EndTick MaxTicks) (createUpbeat)) ; underful ((= MaxTicks EndTick) (warning)) ; 100% filled ((< MaxTicks EndTick) (warning)) ; >100% filled (else (warning)) ; ? ))) (GoToMeasureBeginning) (if Upbeat::params ;;; non-interactive call, this used to take the params as the tag to be used - is that useful? (d-DirectiveDelete-standalone upbeat)) (if (d-DirectiveGet-standalone-display upbeat); if upbeat is present (let ( (choice (d-GetOption (string-append (_ "Help") stop (_ "Re-calculate") stop (_ "Delete") stop (_ "Advanced") stop)))) (cond ((boolean? choice) (d-WarningDialog (_ "Operation cancelled"))) ((equal? choice (_ "Help")) (d-InfoDialog (_ "This object fills up the duration of this measure, without taking space in the typeset score. Use if for partial measures in first and second repeats. It needs to be renewed if you change the duration of the notes in the partial measure - use Re-calculate for this, or simply delete it and re-run the Short command."))) ((equal? choice (_ "Re-calculate")) (d-DirectiveDelete-standalone upbeat) (ComputeAndCreate)) ((equal? choice (_ "Delete")) (d-DeleteObject)) ((equal? choice (_ "Advanced")) (if (not (d-DirectiveTextEdit-standalone upbeat)) (d-DirectiveDelete-standalone upbeat)) ))) ;;;if upbeat not already present (ComputeAndCreate)) (d-SetMark) (d-Copy) (d-UnsetMark) (d-PushPosition) (while (d-MoveToStaffUp)) (let loop () (if (d-Directive-standalone? upbeat) (d-DirectiveDelete-standalone upbeat)) (d-Paste) (if (d-MoveToStaffDown) (loop))) (d-PopPosition) (d-RefreshDisplay) (if Upbeat::params (disp "Short recalculated\n") (begin (if ok (begin (GoToMeasureEnd) (if (not (d-MoveToMeasureRight)) (d-AddMeasure))))))) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/SplitMeasure.xml0000644000000000000000000000013213135434035024737 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.666648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/SplitMeasure.xml0000644000175000017500000000056613135434035026617 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SplitMeasure <_label>Split Measure at Cursor <_tooltip>Split the current measure into two at the cursor. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/ShortMeasure.xml0000644000000000000000000000013213135434035024743 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.679981805 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/ShortMeasure.xml0000644000175000017500000000075513135434035026623 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShortMeasure <_label>Short Measure <_tooltip>Allow too few notes/rests in this measure. LilyPond will engrave this measure (in all staffs) with the short duration given by notes already present when this command was issued. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/CheckBeamsInMeasure.scm0000644000000000000000000000013213135434035026102 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.679981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/CheckBeamsInMeasure.scm0000644000175000017500000000470613135434035027762 0ustar00jjbenhamjjbenham00000000000000;;CheckBeamsInMeasure (define-once CheckScore::ignore 0) (define CheckBeamsInMeasure::return #f) (let ((tag "Beam")) (define (get-pos) (string-append "\nAt movement " (number->string (d-GetMovement)) ", voice " (number->string (d-GetStaff)) ", measure " (number->string (d-GetMeasure)) ".")) (define (hasBeamStart?) (equal? "[" (d-DirectiveGet-chord-postfix tag))) (define (hasBeamEnd?) (equal? "]" (d-DirectiveGet-chord-postfix tag))) (define start '()) (while (d-PrevObjectInMeasure)) (let loop () ;(disp "loop" start "\n") (if (hasBeamStart?) (begin (if (< (d-GetNoteBaseDuration) 3) (begin (if (positive? CheckScore::ignore) (set! CheckScore::ignore (1- CheckScore::ignore)) (set! CheckBeamsInMeasure::return (_ "Beam Start command on a note with no beam"))))) (if (not (null? start)) (begin (if (positive? CheckScore::ignore) (set! CheckScore::ignore (1- CheckScore::ignore)) (set! CheckBeamsInMeasure::return (string-append (_ "Second start Beam"))))) (set! start (cons (GetPosition) start))))) (if (hasBeamEnd?) (begin (if (< (d-GetNoteBaseDuration) 3) (begin (if (positive? CheckScore::ignore) (set! CheckScore::ignore (1- CheckScore::ignore)) (set! CheckBeamsInMeasure::return (_ "Beam End command on a note with no beam")))) (if (null? start) (begin (if (positive? CheckScore::ignore) (set! CheckScore::ignore (1- CheckScore::ignore)) (set! CheckBeamsInMeasure::return (string-append (_ "End Beam with no start") (get-pos))))) (begin (set! start (cdr start)) (if (d-NextObjectInMeasure) (loop))))))) (if (and (not CheckBeamsInMeasure::return) (d-NextObjectInMeasure)) (loop))) (if (and (not CheckBeamsInMeasure::return) (not (null? start))) (begin (apply d-GoToPosition (car start)) (set! CheckBeamsInMeasure::return (string-append (_ "Start Beam with no end") (get-pos))))) (if (not CheckBeamsInMeasure::params) (begin ;; interactive (if (not CheckBeamsInMeasure::return) (begin (set! CheckBeamsInMeasure::return (_ "No problem detected with beams in measure")))) (d-InfoDialog CheckBeamsInMeasure::return)))) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/Upbeat.xml0000644000000000000000000000013213135434035023542 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.679981805 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/Upbeat.xml0000644000175000017500000000065713135434035025423 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Upbeat <_label>Anacrusis (Upbeat, Pickup) <_tooltip>Convert the current measure to a partial measure so that it is complete with just the beats already inserted. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/MergeWithNextMeasure.xml0000644000000000000000000000013213135434035026376 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.679981805 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/MergeWithNextMeasure.xml0000644000175000017500000000055113135434035030250 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MergeWithNextMeasure <_label>Merge with Next Measure <_tooltip>Joins two measures together. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/IgnoreMeasureDurationError.xml0000644000000000000000000000013213135434035027607 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.703315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/IgnoreMeasureDurationError.xml0000644000175000017500000000102013135434035031451 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS IgnoreMeasureDurationError <_label>Ignore Measure Duration Error <_tooltip>Allow too few notes/rests in this measure. Only affects the Denemo display and error checking, the typesetting will place barlines according to the actual durations of notes as usual. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/HiddenMeasure.scm0000644000000000000000000000013213135434035025021 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.703315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/HiddenMeasure.scm0000644000175000017500000000100713135434035026670 0ustar00jjbenhamjjbenham00000000000000;;;;HiddenMeasure (DenemoWholeMeasureRestCommand) (d-MoveCursorLeft) (if (d-Directive-chord? DenemoWholeMeasureRestTag) (begin (d-DirectivePut-chord-display DenemoWholeMeasureRestTag "") (d-DirectivePut-chord-display "HiddenMeasure" (_ "Hidden Measure")) (d-DirectivePut-chord-prefix "HiddenMeasure" "%{ ") (d-DirectivePut-chord-postfix "HiddenMeasure" "%} ") (d-DirectivePut-chord-graphic "HiddenMeasure" "\nH\nDenemo") (d-DirectivePut-chord-override "HiddenMeasure" DENEMO_OVERRIDE_LILYPOND))) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/InsertBreakInStaff.scm0000644000000000000000000000013213135434035025770 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.703315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/InsertBreakInStaff.scm0000644000175000017500000000141613135434035027643 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;; (let ((tag1 "StartBreak")(tag2 "StopBreak")) (d-InsertMeasureBefore) (d-DirectivePut-standalone tag1) (d-DirectivePut-standalone-minpixels tag1 30) (d-DirectivePut-standalone-graphic tag1 "\nGAP\nDenemo\n48") (d-DirectivePut-standalone-postfix tag1 "\\hideNotes \\stopStaff ") (d-WholeMeasureSpacer) (d-DirectivePut-standalone tag2) (d-DirectivePut-standalone-postfix tag2 (string-append "\\unHideNotes \\startStaff \\set Staff.forceClef = ##t \\bar "" \\set Staff.forceClef = ##t \\once \\override Staff.Clef.full-size-change = ##t \\clef " (d-GetPrevailingClef) " ")) (d-DirectivePut-standalone-minpixels tag2 30) (d-DirectivePut-standalone-graphic tag1 "\n->\nDenemo\n48") (d-RefreshDisplay) (d-SetSaved #f)) denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/DeleteEmptyMeasures.scm0000644000000000000000000000013213135434035026232 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.703315139 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/DeleteEmptyMeasures.scm0000644000175000017500000000015313135434035030102 0ustar00jjbenhamjjbenham00000000000000;;;DeleteEmptyMeasures (while (and (EmptyMeasure?) (> (d-GetMeasuresInStaff) 1)) (d-DeleteMeasure))denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/SplitMeasure.scm0000644000000000000000000000013213135434035024721 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.703315139 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/SplitMeasure.scm0000644000175000017500000000077513135434035026603 0ustar00jjbenhamjjbenham00000000000000;SplitMeasure:splits a measure ;leave cursor at the beginning of the new measure (after the barline) (let split () (define count -1) (d-PushClipboard) (d-UnsetMark) (d-SetMark) (if (d-MeasureRight) (begin (d-CursorLeft) (d-Cut) (d-CursorRight) (d-InsertMeasureBefore)) (begin (d-GoToEnd) (d-Cut) (d-AppendMeasure) (d-MoveToMeasureRight))) (d-UnsetMark) (RepeatUntilFail (lambda () (set! count (1+ count)) (d-PutClipObj 0 count))) (GoToMeasureBeginning) (d-PopClipboard))denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/WholeMeasureRepeat.scm0000644000000000000000000000013213135434035026045 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.716648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/WholeMeasureRepeat.scm0000644000175000017500000000250213135434035027715 0ustar00jjbenhamjjbenham00000000000000;;;WholeMeasureRepeat (if (d-Directive-score? "CompactChordChart") (let ((tag "WholeMeasureRepeat")(timesig (GetPrevailingTimeSig #t))) (d-InsertWholeRest) (d-SetDurationInTicks (* 1536 timesig)) (d-DirectivePut-chord-override tag (logior DENEMO_OVERRIDE_LILYPOND DENEMO_OVERRIDE_GRAPHIC DENEMO_ALT_OVERRIDE)) (d-DirectivePut-chord-gy tag 15) (d-DirectivePut-chord-graphic tag " ð„Ž Denemo 48") (d-DirectivePut-chord-postfix tag (string-append "s1*" (number->string timesig) " -\\tweak #'extra-offset #'(5 . 2) -\\markup \\scale #'(0.5 . -0.5){ \\translate-scaled #'(4 . 0.5) \\draw-circle #1 #0 ##t \\translate-scaled #'(-2 . 4) \\beam #4 #-1.5 #2 \\translate-scaled #'(0 . 0.5) \\draw-circle #1 #0 ##t } ")) (d-SetObjectDisplayWidth 100) (d-SetSaved #f)) (let () (d-WholeMeasureRest) (d-DirectivePut-chord-gx "WholeMeasureRest" 40) (d-DirectivePut-chord-gy "WholeMeasureRest" 15) (d-DirectivePut-chord-display "WholeMeasureRest" (_ "Measure Repeat")) (d-DirectivePut-chord-graphic "WholeMeasureRest" " ð„Ž Denemo 48") (d-DirectivePut-chord-prefix "WholeMeasureRepeat" "\\once \\override MultiMeasureRest #'extra-offset = #'(0 . -1) \\override MultiMeasureRest #'stencil = #ly:multi-measure-rest::percent \\override MultiMeasureRest #'thickness = #0.48 ") (d-SetSaved #f)))denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/InsertBreakInStaff.xml0000644000000000000000000000013213135434035026006 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.716648472 30 ctime=1500919912.973315139 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/InsertBreakInStaff.xml0000644000175000017500000000103113135434035027652 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertBreakInStaff SplitMeasure <_label>Create Gap <_tooltip>Creates a gap between the previous measure and the current one. The clef is re-instated after the gap. The gap size can be adjusted by inserting or deleting empty measures in between. denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/PaxHeaders.19168/WholeMeasureRepeat.xml0000644000000000000000000000013213135434035026063 xustar0030 mtime=1500919837.986648472 30 atime=1500919930.716648472 30 ctime=1500919912.976648472 denemo-2.2.0/actions/menus/ObjectMenu/MeasureMenu/WholeMeasureRepeat.xml0000644000175000017500000000055413135434035027740 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS WholeMeasureRepeat <_label>Whole Measure Repeat <_tooltip>Inserts a whole measure repeat sign. denemo-2.2.0/actions/menus/PaxHeaders.19168/MainMenu0000644000000000000000000000013213135434035016753 xustar0030 mtime=1500919837.969981805 30 atime=1500919914.546648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/0000755000175000017500000000000013135434035020701 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/PaxHeaders.19168/NavigationMenu0000644000000000000000000000013213135434150021675 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/0000755000175000017500000000000013135434150023623 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/PaxHeaders.19168/MoveViewportRight.scm0000644000000000000000000000013213135434035026124 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.729981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MoveViewportRight.scm0000644000175000017500000000004513135434035027774 0ustar00jjbenhamjjbenham00000000000000;;;MoveViewportRight (d-ScrollRight) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/PaxHeaders.19168/MIDI0000644000000000000000000000013213135434150022417 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/0000755000175000017500000000000013135434150024345 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/PaxHeaders.19168/NextNoteOnset.scm0000644000000000000000000000013213135434035025757 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.729981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/NextNoteOnset.scm0000644000175000017500000000040513135434035027627 0ustar00jjbenhamjjbenham00000000000000;;;NextNoteOnset (let ((max (d-GetImportedMidiTracks))) (if max (begin (if (d-GetMarkedMidiNote) (d-AdvanceMarkedMidi 1) (d-WarningDialog (_ "No Onset has been marked")))) (d-WarningDialog (_ "No MIDI file has been loaded")))) (d-RefreshDisplay)denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/PaxHeaders.19168/PreviousNoteOnset.scm0000644000000000000000000000013213135434035026655 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.729981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/PreviousNoteOnset.scm0000644000175000017500000000041613135434035030527 0ustar00jjbenhamjjbenham00000000000000;;;PrevioustNoteOnset (let ((max (d-GetImportedMidiTracks))) (if max (begin (if (d-GetMarkedMidiNote) (d-AdvanceMarkedMidi -1) (d-WarningDialog (_ "No Onset has been marked")))) (d-WarningDialog (_ "No MIDI file has been loaded")))) (d-RefreshDisplay)denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/PaxHeaders.19168/FirstNoteOnset.xml0000644000000000000000000000013213135434035026146 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.729981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/FirstNoteOnset.xml0000644000175000017500000000075613135434035030027 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FirstNoteOnset PreviousNoteOnset <_label>First Note Onset <_tooltip>The first recorded or imported MIDI note onset in the current track becomes marked so that entered durations will be given its pitch. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/PaxHeaders.19168/FirstNoteOnset.scm0000644000000000000000000000013213135434035026130 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.739981806 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/FirstNoteOnset.scm0000644000175000017500000000024713135434035030004 0ustar00jjbenhamjjbenham00000000000000;;;FirstNoteOnset (let ((max (d-GetImportedMidiTracks))) (if max (d-AdvanceMarkedMidi 0) (d-WarningDialog (_ "No MIDI file has been loaded")))) (d-RefreshDisplay)denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/PaxHeaders.19168/UnmarkNoteOnset.scm0000644000000000000000000000013213135434035026276 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.739981806 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/UnmarkNoteOnset.scm0000644000175000017500000000025313135434035030147 0ustar00jjbenhamjjbenham00000000000000;;;UnmarkNoteOnset (let ((max (d-GetImportedMidiTracks))) (if max (d-AdvanceMarkedMidi #f) (d-WarningDialog (_ "No MIDI file has been loaded")))) (d-RefreshDisplay) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/PaxHeaders.19168/CursorToMarkedMidiNotePosit0000644000000000000000000000013213135434035027775 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.739981806 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/CursorToMarkedMidiNotePosition.xml0000644000175000017500000000071513135434035033156 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CursorToMarkedMidiNotePosition UnmarkNoteOnset <_label>Cursor to Marked Onset <_tooltip>Moves the Denemo cursor to the note to which the marked MIDI note onset belongs. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/PaxHeaders.19168/NextNoteOnset.xml0000644000000000000000000000013213135434035025775 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.739981806 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/NextNoteOnset.xml0000644000175000017500000000075213135434035027652 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NextNoteOnset DenemoLink <_label>Next Note Onset <_tooltip>Moves to the next MIDI note onset in the current recorded or imported MIDI track. Inserted durations will take their pitch from this note. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/PaxHeaders.19168/CursorToMarkedMidiNotePosit0000644000000000000000000000013213135434035027775 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.739981806 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/CursorToMarkedMidiNotePosition.scm0000644000175000017500000000055313135434035033140 0ustar00jjbenhamjjbenham00000000000000;;;CursorToMarkedMidiNotePosition (let ((marked (d-GetMarkedMidiNoteSeconds))) (if marked (begin ;(while (d-MoveToStaffUp)) (d-MoveToBeginning) (let loop () (define start (d-GetMidiOnTime)) (define end (d-GetMidiOffTime)) (if (and start end (>= marked start) (<= marked end)) #t (if (d-NextObject) (loop) #f)))))) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/PaxHeaders.19168/UnmarkNoteOnset.xml0000644000000000000000000000013213135434035026314 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.763315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/UnmarkNoteOnset.xml0000644000175000017500000000071313135434035030166 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS UnmarkNoteOnset FirstNoteOnset <_label>Un-mark Note Onsets <_tooltip>Removes the mark from the MIDI note onset, so that inserting durations have their normal meaning. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/PaxHeaders.19168/PreviousNoteOnset.xml0000644000000000000000000000013213135434035026673 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.763315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MIDI/PreviousNoteOnset.xml0000644000175000017500000000065613135434035030553 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PreviousNoteOnset NextNoteOnset <_label>Previous Note Onset <_tooltip>Moves the marked MIDI note onset to the one before the current one. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/PaxHeaders.19168/MoveViewportLeft.scm0000644000000000000000000000013213135434035025741 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.763315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MoveViewportLeft.scm0000644000175000017500000000004313135434035027607 0ustar00jjbenhamjjbenham00000000000000;;;MoveViewportLeft (d-ScrollLeft) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/PaxHeaders.19168/Cursor0000644000000000000000000000013213135434150023152 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/0000755000175000017500000000000013135434150025100 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/WrapToNextStaff.scm0000644000000000000000000000013213135434035026774 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.763315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/WrapToNextStaff.scm0000644000175000017500000000012013135434035030636 0ustar00jjbenhamjjbenham00000000000000;;;WrapToNextStaff (if (not (d-MoveToStaffDown)) (while (d-MoveToStaffUp)))denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/JumpUpOctave.scm0000644000000000000000000000013213135434035026317 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.773315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/JumpUpOctave.scm0000644000175000017500000000003113135434035030162 0ustar00jjbenhamjjbenham00000000000000(Navigation::CursorUpN 7)denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/CursorToHighestNote.scm0000644000000000000000000000013213135434035027657 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.773315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/CursorToHighestNote.scm0000644000175000017500000000004113135434035031523 0ustar00jjbenhamjjbenham00000000000000(d-CursorToNote (GetHighestNote))denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/MoveToMovementBeginning.x0000644000000000000000000000013213135434035030167 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.773315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/MoveToMovementBeginning.xml0000644000175000017500000000071213135434035032371 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MoveToBeginning MoveToMovementBeginning <_label>Move To Movement Beginning <_tooltip>Moves the cursor to the beginning of the movement without altering the selection denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/JumpDownOctave.xml0000644000000000000000000000013213135434035026660 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.773315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/JumpDownOctave.xml0000644000175000017500000000057313135434035030536 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS JumpUpOctave JumpDownOctave <_label>Octave Down <_tooltip>Moves cursor down an octave. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/VisibleStaffDown.scm0000644000000000000000000000013213135434035027146 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.773315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/VisibleStaffDown.scm0000644000175000017500000000021713135434035031017 0ustar00jjbenhamjjbenham00000000000000;;;VisibleStaffDown (while (and (d-MoveToStaffDown) (d-StaffHidden))) (if (d-StaffHidden) (while (and (d-MoveToStaffUp) (d-StaffHidden)))) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/MoveToMovementBeginning.s0000644000000000000000000000013213135434035030162 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.783315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/MoveToMovementBeginning.scm0000644000175000017500000000007213135434035032352 0ustar00jjbenhamjjbenham00000000000000;d-MoveToMovementBeginning (d-GoToPosition #f 1 1 1) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/CursorToLowestNote.xml0000644000000000000000000000013213135434035027557 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.783315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/CursorToLowestNote.xml0000644000175000017500000000065413135434035031435 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CursorToLowestNote <_label>Cursor to Lowest Note <_tooltip>Moves the cursor to the lowest note on current horizontal position (in a chord or on a single note) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/WrapToNextStaff.xml0000644000000000000000000000013213135434035027012 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.783315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/WrapToNextStaff.xml0000644000175000017500000000067013135434035030666 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS WrapToNextStaff MoveToVoiceDown <_label>Next Staff, Wrapping <_tooltip>Moves to the next staff, wrapping to the first staff when on the last staff. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/JumpLeft.scm0000644000000000000000000000013213135434035025463 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.783315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/JumpLeft.scm0000644000175000017500000000014713135434035027336 0ustar00jjbenhamjjbenham00000000000000(if (d-PrevObjectInMeasure) (if (d-MoveToMeasureLeft) (d-MoveToMeasureRight)) (d-MoveToMeasureLeft))denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/JumpDownOctave.scm0000644000000000000000000000013213135434035026642 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.783315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/JumpDownOctave.scm0000644000175000017500000000003213135434035030506 0ustar00jjbenhamjjbenham00000000000000(Navigation::CursorUpN -7)denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/MoveToMovementEnd.scm0000644000000000000000000000013213135434035027310 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.796648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/MoveToMovementEnd.scm0000644000175000017500000000006713135434035031164 0ustar00jjbenhamjjbenham00000000000000(RepeatUntilFail d-MoveToStaffDown) (d-MoveToEnd) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/VisibleStaffUp.xml0000644000000000000000000000013213135434035026641 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.796648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/VisibleStaffUp.xml0000644000175000017500000000067613135434035030523 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS VisibleStaffUp MoveToStaffUp <_label>Move to Visible Staff Up <_tooltip>Moves to the next staff or voice up skipping ones that are hidden in the display. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/JumpUpOctave.xml0000644000000000000000000000013213135434035026335 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.796648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/JumpUpOctave.xml0000644000175000017500000000057113135434035030211 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MoveCursorRight JumpUpOctave <_label>Octave Up <_tooltip>Moves cursor up one octave. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/JumpRight.xml0000644000000000000000000000013213135434035025664 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.796648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/JumpRight.xml0000644000175000017500000000060013135434035027531 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS JumpLeft JumpRight <_label>JumpRight <_tooltip>Moves cursor to start of next bar or to end. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/JumpRight.scm0000644000000000000000000000013213135434035025646 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.796648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/JumpRight.scm0000644000175000017500000000005713135434035027521 0ustar00jjbenhamjjbenham00000000000000(if (not (d-MoveToMeasureRight)) (d-MoveToEnd))denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/CursorToLowestNote.scm0000644000000000000000000000013213135434035027541 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.816648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/CursorToLowestNote.scm0000644000175000017500000000004013135434035031404 0ustar00jjbenhamjjbenham00000000000000(d-CursorToNote (GetLowestNote))denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/JumpLeft.xml0000644000000000000000000000013213135434035025501 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.816648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/JumpLeft.xml0000644000175000017500000000061113135434035027350 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CursorUp JumpLeft <_label>JumpLeft <_tooltip>Jumps to beginning of this measure or previous measure. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/VisibleStaffUp.scm0000644000000000000000000000013213135434035026623 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.816648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/VisibleStaffUp.scm0000644000175000017500000000021513135434035030472 0ustar00jjbenhamjjbenham00000000000000;;;VisibleStaffUp (while (and (d-MoveToStaffUp) (d-StaffHidden))) (if (d-StaffHidden) (while (and (d-MoveToStaffDown) (d-StaffHidden)))) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/CursorToHighestNote.xml0000644000000000000000000000013213135434035027675 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.816648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/CursorToHighestNote.xml0000644000175000017500000000065713135434035031556 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CursorToHighestNote <_label>Cursor to Highest Note <_tooltip>Moves the cursor to the highest note on current horizontal position (in a chord or on a single note) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/VisibleStaffDown.xml0000644000000000000000000000013213135434035027164 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.816648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/VisibleStaffDown.xml0000644000175000017500000000070613135434035031040 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS VisibleStaffDown MoveToStaffDown <_label>Move to Visible Staff Down <_tooltip>Moves to the next staff or voice down skipping ones that are hidden in the display. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/init.scm0000644000000000000000000000013213135434035024700 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.826648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/init.scm0000644000175000017500000000027113135434035026551 0ustar00jjbenhamjjbenham00000000000000(define (Navigation::CursorUpN n) (begin (if (> n 0) (begin (d-CursorUp) (Navigation::CursorUpN (- n 1)))) (if (< n 0) (begin (d-CursorDown) (Navigation::CursorUpN (+ n 1))))))denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/PaxHeaders.19168/MoveToMovementEnd.xml0000644000000000000000000000013213135434035027326 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.826648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Cursor/MoveToMovementEnd.xml0000644000175000017500000000070113135434035031175 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MoveToMovementBeginning MoveToMovementEnd <_label>Move To Movement End <_tooltip>Move the cursor to last measure, last staff without altering the selection. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/PaxHeaders.19168/Seek0000644000000000000000000000013213135434150022564 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/0000755000175000017500000000000013135434150024512 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/NextHigher.scm0000644000000000000000000000013213135434035025414 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.829981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/NextHigher.scm0000644000175000017500000000042413135434035027265 0ustar00jjbenhamjjbenham00000000000000 ;;;;;;;; FindNextNoteHigher (d-MoveCursorRight) (let loop ((lowest (d-GetCursorNoteAsMidi)) (current 0)) (set! current (d-GetNoteAsMidi)) (if (or (zero? current) (<= current lowest)) (begin (if (d-MoveCursorRight) (loop lowest current) #t)))) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/SearchPattern.xml0000644000000000000000000000013213135434035026130 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.829981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/SearchPattern.xml0000644000175000017500000000110213135434035027773 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SearchPattern <_label>Search Rhythmic Pattern <_tooltip>With a selection, searches from the cursor for the next occurrence of the rhythmic patterm of the selection. With no selection, continues the previous search. When a match is found it offers to continue, stop or execute the script in the Scheme Window. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/SearchMusic.scm0000644000000000000000000000013213135434035025555 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.839981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/SearchMusic.scm0000644000175000017500000000737713135434035027444 0ustar00jjbenhamjjbenham00000000000000;;;SearchMusic (define-once SearchMusic::pattern '()) (define-once SearchMusic::MatchEnd #f) (let ((params SearchMusic::params) (pattern '())) (if (d-GoToMark) (let ((choice (if (not (null? SearchMusic::pattern)) (RadioBoxMenu (cons (_ "New search music from selection") 'new) (cons (_ "Resume previous music search") 'resume)) 'new))) (case choice ((new) (let loop () (if (d-IsInSelection) (if (Note?) (begin (set! pattern (cons (d-GetNote) pattern)) (if (d-NextObject) (loop))) (if (d-NextObject) (loop))))) (set! pattern (reverse pattern)) (set! SearchMusic::pattern pattern)) ((resume) (set! pattern SearchMusic::pattern)) (else (set! SearchMusic::pattern '())))) (set! pattern SearchMusic::pattern)) (set! SearchMusic::MatchEnd #f) (d-UnsetMark) (if (null? pattern) (d-WarningDialog (_ "Make a selection to search for")) (while (d-NextObject) (let ((outer-position #f)) (let loop ((index 0)) (while (and (not (Note?)) (d-NextObject)) #f) (if (= index 0) (set! outer-position (GetPosition))) (let inner-loop () (define position (GetPosition)) (if (Note?) (begin (if (equal? (list-ref pattern index) (d-GetNote)) (if (< index (1- (length pattern))) (begin (if (d-NextObject) (loop (1+ index)))) (begin (set! SearchMusic::MatchEnd (GetPosition)) (apply d-GoToPosition outer-position) (d-MoveCursorLeft) (break))) (begin (apply d-GoToPosition outer-position) (if (d-NextObject) (loop 0))))) (if (d-NextObject) (inner-loop)))))))) (if SearchMusic::MatchEnd (let ((choice (RadioBoxMenu (cons (_ "Continue") 'continue) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop)))) (d-NextObject) (case choice ((continue) (apply d-GoToPosition SearchMusic::MatchEnd) (d-SearchMusic)) ((execute) (d-ExecuteScheme)))) (let ((choice (RadioBoxMenu (cons (_ "Wrap to start of staff") 'staff) (cons (_ "Wrap to next staff") 'below) (cons (_ "Stop") 'stop)))) (case choice ((staff) (d-MoveToBeginning) (d-SearchMusic 'continue)) ((below) (if (d-WrapToNextStaff) (begin (d-MoveToBeginning) (d-SearchMusic 'continue)))))))) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/SearchMusic.xml0000644000000000000000000000013213135434035025573 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.839981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/SearchMusic.xml0000644000175000017500000000116513135434035027447 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SearchMusic SearchPattern <_label>Search Note Sequence <_tooltip>With a selection, searches from the cursor for the next occurrence of the notes of the selection. With no selection, continues the previous search. When a match (ignoring rests and duration) is found it offers to continue, stop or execute the script in the Scheme Window. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/NextHigher.xml0000644000000000000000000000013213135434035025432 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.839981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/NextHigher.xml0000644000175000017500000000062413135434035027305 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FindNextLowerNote NextHigher <_label>Next Higher <_tooltip>Move cursor to next note higher than cursor position denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/FindNextSimilar.scm0000644000000000000000000000013213135434035026407 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.849981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/FindNextSimilar.scm0000644000175000017500000000031213135434035030254 0ustar00jjbenhamjjbenham00000000000000;;FindNextSimilar (let () (define target (d-DirectiveGetTag-standalone)) (if target (begin (FindNextObjectAllColumns (lambda () (d-Directive-standalone? target)))) (begin #f)))denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/GoToMeasureEnd.xml0000644000000000000000000000013213135434035026206 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.849981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/GoToMeasureEnd.xml0000644000175000017500000000047213135434035030062 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GoToMeasureEnd <_label>Go To End of Measure <_tooltip/> denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/FindEditPoint.xml0000644000000000000000000000013213135434035026065 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.849981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/FindEditPoint.xml0000644000175000017500000000062613135434035027742 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NextHigher FindEditPoint <_label>Find Edit Point <_tooltip>Searches backward for the start of non-printing notes. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/MoveToPreviousEmptyMeasure.0000644000000000000000000000013213135434035030153 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.849981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/MoveToPreviousEmptyMeasure.scm0000644000175000017500000000010713135434035032525 0ustar00jjbenhamjjbenham00000000000000(RepeatUntilFail (lambda () (and (not (None?)) (d-MoveToMeasureLeft))))denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/FindNextLowerNote.xml0000644000000000000000000000013213135434035026743 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.849981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/FindNextLowerNote.xml0000644000175000017500000000056513135434035030622 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FindNextLowerNote <_label>Next Lower <_tooltip>Moves cursor to next note that is lower than the cursor. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/FindEditPoint.scm0000644000000000000000000000013213135434035026047 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.873315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/FindEditPoint.scm0000644000175000017500000000031513135434035027717 0ustar00jjbenhamjjbenham00000000000000 ;;;;;; FindEditPoint (let loop ( ) (define current (d-PrevNote)) (if (and current (d-GetNonprinting)) (loop))) (if (not (d-GetNonprinting)) (d-NextNote)) (d-RefreshDisplay) ;;;;;;;;;;;;;;;;; denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/GoToMeasureEnd.scm0000644000000000000000000000013213135434035026170 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.873315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/GoToMeasureEnd.scm0000644000175000017500000000013513135434035030040 0ustar00jjbenhamjjbenham00000000000000 (let loop () (if (or (None?) (Appending?)) #t (begin (d-MoveCursorRight) (loop)))) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/GoToEmptyMeasure.xml0000644000000000000000000000013213135434035026576 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.873315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/GoToEmptyMeasure.xml0000644000175000017500000000066513135434035030456 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GoToMeasure GoToEmptyMeasure <_label>Go To Next Empty Measure <_tooltip>Move cursor to the next point in the current staff where the music ends. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/MoveToPreviousEmptyMeasure.0000644000000000000000000000013213135434035030153 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.873315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/MoveToPreviousEmptyMeasure.xml0000644000175000017500000000071613135434035032551 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GoToEmptyMeasure MoveToPreviousEmptyMeasure <_label>Move To Previous Empty Measure <_tooltip>Move the cursor left until it finds an empty measure or the staffs beginning denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/FindNote.scm0000644000000000000000000000013213135434035025055 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.873315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/FindNote.scm0000644000175000017500000000106213135434035026725 0ustar00jjbenhamjjbenham00000000000000;;;;;; FindNote (define-once FindNote::sought "des") (let loop ((sought #f)) (define (note-equal? needle haystack) (= (string-prefix-length needle haystack) (string-length needle))) ;(format #t "in the loop with ~a ~a\n\n" sought (d-GetNote)) (if sought (if (and (d-NextNote) (not (note-equal? sought (d-GetNote)))) (loop sought)) (begin (set! sought (d-GetUserInput "Find Note" "Give the note to find" FindNote::sought)) (if sought (begin (set! FindNote::sought sought) (loop sought)))))) (d-RefreshDisplay) ;;;;;;;;;;;;;;;;; denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/FindNote.xml0000644000000000000000000000013213135434035025073 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.886648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/FindNote.xml0000644000175000017500000000063313135434035026746 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FindEditPoint FindNote <_label>Find Note <_tooltip>Moves the cursor forward until it is on the note given by the user. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/GoToEmptyMeasure.scm0000644000000000000000000000013213135434035026560 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.886648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/GoToEmptyMeasure.scm0000644000175000017500000000013413135434035030427 0ustar00jjbenhamjjbenham00000000000000;;;GoToEmptyMeasure (RepeatUntilFail (lambda () (and (not (None?)) (d-MoveToMeasureRight))))denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/FindNextSimilar.xml0000644000000000000000000000013213135434035026425 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.886648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/FindNextSimilar.xml0000644000175000017500000000063313135434035030300 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NextHigher FindNextSimilar <_label>Find Next Similar <_tooltip>Finds the next object similar to the one at the cursor. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/SearchPattern.scm0000644000000000000000000000013213135434035026112 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.886648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/SearchPattern.scm0000644000175000017500000001060513135434035027765 0ustar00jjbenhamjjbenham00000000000000;;;SearchPattern (define-once SearchPattern::pattern '()) (define-once SearchPattern::MatchEnd #f) (let ((params SearchPattern::params) (pattern '())) (if (d-GoToMark) (let ((choice (if (not (null? SearchPattern::pattern)) (RadioBoxMenu (cons (_ "New search pattern from selection") 'new) (cons (_ "Resume previous search") 'resume)) 'new))) (case choice ((new) (let loop () (if (d-IsInSelection) (begin (if (Music?) (begin (set! pattern (cons (cons (d-GetNote) (if (d-IsTied) (- 0 (d-GetDurationInTicks))(d-GetDurationInTicks))) pattern)) (if (d-NextObject) (loop))) (if (d-NextObject) (loop)))))) (set! pattern (reverse pattern)) (set! SearchPattern::pattern pattern)) ((resume) (set! pattern SearchPattern::pattern)) (else (set! SearchPattern::pattern '())))) (set! pattern SearchPattern::pattern)) (set! SearchPattern::MatchEnd #f) (d-UnsetMark) (if (null? pattern) (d-WarningDialog (_ "Make a selection to search for")) (let outermost-loop () (define continuing #t) (let ((outer-position #f)) (let loop ((index 0)) (while (and (not (Music?)) (d-MoveCursorRight))) (if (= index 0) (set! outer-position (GetPosition))) (let inner-loop () (define position (GetPosition)) (if (Music?) (let ((step (list-ref pattern index))) (if (and (equal? (if (car step) #t #f) (if (d-GetNote) #t #f)) (= (cdr step) (if (d-IsTied) (- 0 (d-GetDurationInTicks))(d-GetDurationInTicks)))) (if (< index (1- (length pattern))) (begin (if (d-NextObject) (loop (1+ index)))) (begin (set! SearchPattern::MatchEnd (GetPosition)) (apply d-GoToPosition outer-position) (if (> (length pattern) 1) (d-MoveCursorLeft)) (set! continuing #f))) (begin (apply d-GoToPosition outer-position) (if (d-NextObject) (loop 0))))) (if (and continuing (d-NextObject)) (inner-loop)))))) (if (and continuing (d-NextObject)) (outermost-loop)))) (if SearchPattern::MatchEnd (let ((choice (RadioBoxMenu (cons (_ "Continue") 'continue) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop)))) (if (> (length pattern) 1) (d-MoveCursorRight)) (case choice ((continue) (apply d-GoToPosition SearchPattern::MatchEnd) (if (= 1 (length SearchPattern::pattern)) (d-NextObject)) (d-SearchPattern)) ((execute) (d-ExecuteScheme)))) (let ((choice (RadioBoxMenu (cons (_ "Wrap to start of staff") 'staff) (cons (_ "Wrap to next staff") 'below) (cons (_ "Stop") 'stop)))) (case choice ((staff) (d-MoveToBeginning) (d-SearchPattern 'continue)) ((below) (if (d-WrapToNextStaff) (begin (d-MoveToBeginning) (d-SearchPattern 'continue)))))))) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/PaxHeaders.19168/FindNextLowerNote.scm0000644000000000000000000000013213135434035026725 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.896648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Seek/FindNextLowerNote.scm0000644000175000017500000000042313135434035030575 0ustar00jjbenhamjjbenham00000000000000 ;;;;;;;; FindNextNoteLower (d-MoveCursorRight) (let loop ((lowest (d-GetCursorNoteAsMidi)) (current 0)) (set! current (d-GetNoteAsMidi)) (if (or (zero? current) (>= current lowest)) (begin (if (d-MoveCursorRight) (loop lowest current) #t)))) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/PaxHeaders.19168/MoveViewportLeft.xml0000644000000000000000000000013213135434035025757 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.896648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MoveViewportLeft.xml0000644000175000017500000000075013135434035027632 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MoveViewportLeft MoveViewportRight <_label>Move Display Right <_tooltip>Moves the view port (the Denemo Display) to the left, leaving the cursor on the same object as long as it is still in view. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/PaxHeaders.19168/DenemoLink.xml0000644000000000000000000000013213135434035024523 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.896648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/DenemoLink.xml0000644000175000017500000000056513135434035026402 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DenemoLink <_label>Follow Link to Source <_tooltip>Follows the link at the cursor to a source document. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/PaxHeaders.19168/Bookmarks0000644000000000000000000000013213135434150023625 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/0000755000175000017500000000000013135434150025553 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/BookmarkNamed.xml0000644000000000000000000000013213135434035027140 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.906648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/BookmarkNamed.xml0000644000175000017500000000060613135434035031013 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BookmarkNamed <_label>Add Named Bookmark <_tooltip>Adds a Denemo bookmark combined with a custom Lilypond Rehearsal Mark denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/PopCursorPosition.xml0000644000000000000000000000013213135434035030107 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.906648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PopCursorPosition.xml0000644000175000017500000000100513135434035031754 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PopCursorPosition PushCursorPosition <_label>Move to Stored Position <_tooltip>Moves the cursor to the last stored position. You can store a sequence of positions and then return to them in one by one (a stack of positions). denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/BookmarkNamed.scm0000644000000000000000000000013213135434035027122 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.906648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/BookmarkNamed.scm0000644000175000017500000000176613135434035031005 0ustar00jjbenhamjjbenham00000000000000 ;;; BookMarkRNamed ;;; Named RehearsalMark searchable as bookmark. ;;; by Nils Gey. RTS Modified to avoid poluting the global namespace with the variable user-input (let ((user-input "XXX")) (set! user-input (d-GetUserInput "Named Bookmark" "Give a name" "X")) (if user-input ;in case the user pressed Escape do nothing (begin (d-Directive-standalone "RehearsalMark") (d-DirectivePut-standalone-display "RehearsalMark" user-input) (d-DirectivePut-standalone-ty "RehearsalMark" -40) (d-DirectivePut-standalone-tx "RehearsalMark" 10) (d-DirectivePut-standalone-postfix "RehearsalMark" (string-append " \\once \\override Score.RehearsalMark #'self-alignment-X = #left" "\r \\mark \\markup {\\bold " user-input "}" ) ) (d-DirectivePut-standalone-gx "RehearsalMark" 15) (d-DirectivePut-standalone-gy "RehearsalMark" -40) (d-DirectivePut-standalone-minpixels "RehearsalMark" 10) (d-DirectivePut-standalone-graphic "RehearsalMark" "RehearsalMark") )) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/RehearsalMark.scm0000644000000000000000000000013213135434035027131 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.906648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/RehearsalMark.scm0000644000175000017500000000234513135434035031006 0ustar00jjbenhamjjbenham00000000000000;;; Bookmark + RehearsalMark ;;; by Nils Gey Modified RTS (if (d-Directive-standalone? "RehearsalMark") (let ((choice #f)) (begin (set! choice (d-GetOption (string-append cue-Delete stop cue-RestorePosition stop cue-Advanced stop))) (cond ((boolean? choice) (d-WarningDialog "Operation cancelled")) ((equal? choice cue-Advanced) (d-DirectiveTextEdit-standalone "RehearsalMark")) ((equal? choice cue-Delete) (d-DirectiveDelete-standalone "RehearsalMark")) ((equal? choice cue-RestorePosition) (d-DirectivePut-standalone-prefix "RehearsalMark" ""))) (if choice (begin (d-SetSaved #f) (d-RefreshDisplay))))) ;;not present already (begin (d-Directive-standalone "RehearsalMark") ;(d-DirectivePut-standalone-display "RehearsalMark" "") (d-DirectivePut-standalone-grob "RehearsalMark" "RehearsalMark") (d-DirectivePut-standalone-postfix "RehearsalMark" " \\mark \\default" ) (d-DirectivePut-standalone-gx "RehearsalMark" 14) (d-DirectivePut-standalone-gy "RehearsalMark" -35) (d-DirectivePut-standalone-minpixels "RehearsalMark" 30) (d-DirectivePut-standalone-graphic "RehearsalMark" "RehearsalMark") (d-MoveCursorRight) (d-SetSaved #f) (d-RefreshDisplay))) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/SearchBookmark.scm0000644000000000000000000000013213135434035027303 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.929981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/SearchBookmark.scm0000644000175000017500000000140013135434035031147 0ustar00jjbenhamjjbenham00000000000000(let ((user-input (d-GetUserInput "Find Bookmark" "What are you after? Case insensitive" "X"))) (define start (GetPosition)) (define (test?) (FindNextObjectAllColumns (lambda () (and (string? (d-DirectiveGet-standalone-display "RehearsalMark")) ;Condition 1 (string-ci=? (d-DirectiveGet-standalone-display "RehearsalMark") user-input))))) ; Condition 2 ;;Body (if user-input ;in case the user pressed Escape do nothing (if (test?) #t ; Object found (begin ; no object found from startpoint to end, return to movement beginning, search again. (d-MoveToMovementBeginning) (if (test?) #t ; Object found (begin (apply d-GoToPosition start) #f)))) ; no object even in the second round. Go to start position. #f)) ; user abortdenemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/PushCursorPosition.xml0000644000000000000000000000013213135434035030270 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.929981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PushCursorPosition.xml0000644000175000017500000000064213135434035032143 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PushCursorPosition SearchBookmark <_label>Store Position <_tooltip>Stores the current cursor position for returning to later. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/SearchBookmark.xml0000644000000000000000000000013213135434035027321 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.929981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/SearchBookmark.xml0000644000175000017500000000056213135434035031175 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SearchBookmark <_label>Search Bookmark <_tooltip>Searches for a named Bookmark in the current staff. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/NextBookmark.scm0000644000000000000000000000013213135434035027014 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.929981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/NextBookmark.scm0000644000175000017500000000013213135434035030661 0ustar00jjbenhamjjbenham00000000000000(FindNextObjectAllColumns (lambda () (d-DirectiveGet-standalone-display "RehearsalMark")))denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/PrevBookmark.scm0000644000000000000000000000013213135434035027012 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.929981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PrevBookmark.scm0000644000175000017500000000013213135434035030657 0ustar00jjbenhamjjbenham00000000000000(FindPrevObjectAllColumns (lambda () (d-DirectiveGet-standalone-display "RehearsalMark")))denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/NextBookmark.xml0000644000000000000000000000013213135434035027032 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.943315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/NextBookmark.xml0000644000175000017500000000055413135434035030707 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NextBookmark <_label>Next Bookmark <_tooltip>Seach forward for bookmarks in the current staff. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/BookmarkNonPrinting.xm0000644000000000000000000000013213135434035030205 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.943315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/BookmarkNonPrinting.xml0000644000175000017500000000060413135434035032232 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BookmarkNonPrinting <_label>Add Non-Printing Bookmark <_tooltip>Adds a custom Denemo bookmark without Lilypond output. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/PopCursorPosition.scm0000644000000000000000000000013213135434035030071 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.943315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PopCursorPosition.scm0000644000175000017500000000012013135434035031733 0ustar00jjbenhamjjbenham00000000000000(if (not (d-PopPosition)) (d-WarningDialog (_ "No more positions are stored")))denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/RehearsalMark.xml0000644000000000000000000000013213135434035027147 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.943315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/RehearsalMark.xml0000644000175000017500000000060213135434035031016 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RehearsalMark <_label>Add Rehearsal/Bookmark <_tooltip>Adds a Denemo bookmark combined with a default Rehearsal Mark denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/PrevBookmark.xml0000644000000000000000000000013213135434035027030 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.943315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PrevBookmark.xml0000644000175000017500000000055513135434035030706 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PrevBookmark <_label>Prev Bookmark <_tooltip>Seach backward for bookmarks in the current staff. denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/PushCursorPosition.scm0000644000000000000000000000013213135434035030252 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.953315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PushCursorPosition.scm0000644000175000017500000000002013135434035032113 0ustar00jjbenhamjjbenham00000000000000(d-PushPosition)denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/PaxHeaders.19168/BookmarkNonPrinting.sc0000644000000000000000000000013213135434035030166 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.953315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/Bookmarks/BookmarkNonPrinting.scm0000644000175000017500000000106213135434035032213 0ustar00jjbenhamjjbenham00000000000000;;;RehearsalMarkNonPrinting ;;;Non Printing Bookmark ;;;by Nils Gey RTS Modified to avoid poluting the global namespace with the variable user-input (let ((user-input "XXX")) (set! user-input (d-GetUserInput "Named Bookmark" "Give a name" "X")) (if user-input ;in case the user pressed Escape do nothing (begin (d-Directive-standalone "RehearsalMark") (d-DirectivePut-standalone-display "RehearsalMark" user-input) (d-DirectivePut-standalone-ty "RehearsalMark" -40) (d-DirectivePut-standalone-tx "RehearsalMark" -10) )) (d-RefreshDisplay)) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/PaxHeaders.19168/DenemoLink.scm0000644000000000000000000000013213135434035024505 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.953315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/DenemoLink.scm0000644000175000017500000000154313135434035026361 0ustar00jjbenhamjjbenham00000000000000;;;DenemoLink (let ((tag "DenemoLink")(params DenemoLink::params)) (if (equal? params "delete") (let ((choice (RadioBoxMenu (cons (_ "Delete") 'delete) (cons (_ "Cancel") 'cancel)))) (case choice ((delete) (d-LockDirective #f) (d-DirectiveDelete-standalone tag)) (else (d-WarningDialog (_ "Cancelled"))))) (if (d-Directive-standalone? tag) (let ((link (d-DirectiveGet-standalone-data tag))) (if (not link) (begin (set! link (d-DirectiveGet-standalone-postfix tag)) (if link (set! link (string-trim-both link (lambda (c)(or (eqv? c #\{) (eqv? c #\%)))))))) (if link (begin (d-OpenSource link) (d-MoveCursorRight)) (d-WarningDialog (_ "There is no link here, open the source document and click on it to place one."))))))) denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/PaxHeaders.19168/MoveViewportRight.xml0000644000000000000000000000013213135434035026142 xustar0030 mtime=1500919837.966648472 30 atime=1500919930.953315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/NavigationMenu/MoveViewportRight.xml0000644000175000017500000000074313135434035030017 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MoveViewportRight DenemoLink <_label>Move Display Right <_tooltip>Moves the view port (the Denemo Display) to the right, leaving the cursor on the same object as long as it is still in view. denemo-2.2.0/actions/menus/MainMenu/PaxHeaders.19168/HelpMenu0000644000000000000000000000013213135434150020466 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/HelpMenu/0000755000175000017500000000000013135434150022414 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/HelpMenu/PaxHeaders.19168/IRC.scm0000644000000000000000000000013213135434035021666 xustar0030 mtime=1500919837.963315139 30 atime=1500919930.966648473 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/HelpMenu/IRC.scm0000644000175000017500000000074613135434035023546 0ustar00jjbenhamjjbenham00000000000000;;; IRC on freenode (d-InfoDialog (_ "Your browser may take a few moments to start - be patient! When it has started you have to type in some anti-spam words and click connect Then you get a page with a place to type your question at the bottom. Type hello in there and hit Enter If no one is there to help you can use the mailing list denemo-devel@gnu.org")) (d-Help (string-append "http://webchat.freenode.net/?nick=" (d-GetUserName) "_" DENEMO_VERSION "&channels=denemo"))denemo-2.2.0/actions/menus/MainMenu/HelpMenu/PaxHeaders.19168/SetNewbieStatus.scm0000644000000000000000000000013213135434035024342 xustar0030 mtime=1500919837.963315139 30 atime=1500919930.966648473 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/HelpMenu/SetNewbieStatus.scm0000644000175000017500000000136613135434035026221 0ustar00jjbenhamjjbenham00000000000000;;;ToggleNewbieStatus (let ((status (d-SetNewbie #f))) (if (not status) (begin (d-SetNewbie #t) (d-InfoDialog (_ "Newbie status is now on - re-start Denemo to see extra tooltips"))) (begin (d-ShowPalettes "Select Duration" #f) (d-ShowPalettes "Insert or Append Duration" #f) (d-ShowPalettes "Edit Duration" #f) (d-ShowPalettes "Change or Append Notes" #f) (d-InfoDialog (_ "Newbie status is now off - re-start Denemo to avoid excessive tooltips.\nNote you can also increase the time before the remaining ones appear via the Preferences\nSome Newbie Palettes have been hidden, use the View menu to choose ones to re-instate."))))) denemo-2.2.0/actions/menus/MainMenu/HelpMenu/PaxHeaders.19168/Tutorial.xml0000644000000000000000000000013213135434035023072 xustar0030 mtime=1500919837.963315139 30 atime=1500919930.966648473 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/HelpMenu/Tutorial.xml0000644000175000017500000000055513135434035024750 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS IRC Tutorial <_label>Tutorial <_tooltip>Steps through the basic commands denemo-2.2.0/actions/menus/MainMenu/HelpMenu/PaxHeaders.19168/HelpAllFeatures.scm0000644000000000000000000000013213135434035024271 xustar0030 mtime=1500919837.963315139 30 atime=1500919930.966648473 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/HelpMenu/HelpAllFeatures.scm0000644000175000017500000000027713135434035026150 0ustar00jjbenhamjjbenham00000000000000;;HelpAllFeatures (d-NewWindow) (if (d-OpenExample "AllFeaturesExplained.denemo") (d-PrintView) (begin (d-WarningDialog "System Example file not found. Check Installation") (d-Close)))denemo-2.2.0/actions/menus/MainMenu/HelpMenu/PaxHeaders.19168/HelpForReturnKey.scm0000644000000000000000000000013213135434035024461 xustar0030 mtime=1500919837.963315139 30 atime=1500919930.989981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/HelpMenu/HelpForReturnKey.scm0000644000175000017500000000124213135434035026331 0ustar00jjbenhamjjbenham00000000000000;;;HelpForReturnKey (d-InfoDialog (_ "The Return keypress can be used as a special instantly movable shortcut,\nyou can set it to any menu action you wish by pressing it while you have the item selected\nAny one-key shortcut can be set this way, but with Return you do not get told if you are taking the shortcut away from another command.\nAlso the setting is not saved.\nThe idea is to set it for your current activity (e.g. applying tenuto marks).\nYou can make it \"normal\" by setting a preference - see Edit->Preferences->Command Behavior.\nNote that the Enter key on the numeric keypad is a separate key (or should be!) and can be used as a shortcut independently")) denemo-2.2.0/actions/menus/MainMenu/HelpMenu/PaxHeaders.19168/IRC.xml0000644000000000000000000000013213135434035021704 xustar0030 mtime=1500919837.963315139 30 atime=1500919930.989981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/HelpMenu/IRC.xml0000644000175000017500000000063513135434035023561 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Help IRC <_label>Chat to Other Users <_tooltip>Runs your browser on a page giving access to denemo's internet relay chat denemo-2.2.0/actions/menus/MainMenu/HelpMenu/PaxHeaders.19168/HelpAllFeatures.xml0000644000000000000000000000013213135434035024307 xustar0030 mtime=1500919837.963315139 30 atime=1500919930.989981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/HelpMenu/HelpAllFeatures.xml0000644000175000017500000000105513135434035026161 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Help HelpAllFeatures <_label>Browse Feature-Packed Score <_tooltip>Opens a score with examples of many things you can create with Denemo with Explanations attached. Click on the explanations in the Print View window. Or copy and paste useful objects to your score. denemo-2.2.0/actions/menus/MainMenu/HelpMenu/PaxHeaders.19168/SetNewbieStatus.xml0000644000000000000000000000013213135434035024360 xustar0030 mtime=1500919837.963315139 30 atime=1500919930.989981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/HelpMenu/SetNewbieStatus.xml0000644000175000017500000000114713135434035026234 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS HelpForReturnKey SetNewbieStatus <_label>Turn Excessive Tooltips (Off/On) <_tooltip>Sets your status as a newbie on or off. This affects the tooltips and palettes. Note you can also independently delay tooltips, indefinitely if you wish, via the preferences dialog. See Edit->Change Preferences->Command Behavior denemo-2.2.0/actions/menus/MainMenu/HelpMenu/PaxHeaders.19168/HelpForReturnKey.xml0000644000000000000000000000013213135434035024477 xustar0030 mtime=1500919837.963315139 30 atime=1500919930.993315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/HelpMenu/HelpForReturnKey.xml0000644000175000017500000000074413135434035026355 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS About HelpForReturnKey <_label>Help for Return Keypress <_tooltip>Does nothing except explain what the Return key is used for in Denemo, and how to make it an ordinary shortcut if you prefer. denemo-2.2.0/actions/menus/MainMenu/HelpMenu/PaxHeaders.19168/Tutorial.scm0000644000000000000000000000013213135434035023054 xustar0030 mtime=1500919837.963315139 30 atime=1500919930.993315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/HelpMenu/Tutorial.scm0000644000175000017500000000502213135434035024724 0ustar00jjbenhamjjbenham00000000000000(d-New) (d-InfoDialog "Tutorial: Dismiss this box and hit a Duration key 0, 1, 2, 3,4,5,6\nOr hit some other key to get on with creating a score") (define thechar (d-GetChar)) (define thenumber (string->number thechar)) (if thenumber (if (< thenumber 7) (begin (eval-string (string-append "(d-" thechar ")")) (d-InfoDialog "Tutorial: You see a note of that duration\nAnd you hear a drum beat\nThe note is brown, because it has no pitch yet\nDismiss this box and hit a note name key a,b,c,d,e,f,g") (set! thechar (d-GetChar)) (if (string-contains "abcdefg" thechar) (begin (eval-string (string-append "(d-" (string-upcase thechar) ")")) (d-InfoDialog "Tutorial: The note has acquired a pitch\nDismiss this box and hit a few note name keys a,b,c,d,e,f,g finishing with some other letter, say x") (let loop () (set! thechar (d-GetChar)) (if (string-contains "abcdefg" thechar) (begin (eval-string (string-append "(d-" (string-upcase thechar) ")")) (loop)))) (d-InfoDialog "Tutorial: The notes are entered with the same duration\nDismiss this box and change duration with a 0,1,2,3,4,5,6 keypress") (set! thechar (d-GetChar)) (set! thenumber (string->number thechar)) (if (< thenumber 7) (begin (eval-string (string-append "(d-" thechar ")")) (d-InfoDialog "Tutorial: Again you see a note indicating the duration\nAnd you hear a drum beat so you can tell by ear which duration it is\nDismiss this box and hit a note name key a,b,c,d,e,f,g") (set! thechar (d-GetChar)) (if (string-contains "abcdefg" thechar) (begin (eval-string (string-append "(d-" (string-upcase thechar) ")")) (d-InfoDialog "Tutorial: Once more you can continue entering notes of that duration\nYou can also edit notes or their durations using the same keys. Use the shift key to switch between editing and inserting.\nDismiss this box and Press the key 'x' to finish.") (set! thechar (d-GetChar)) ))))) )))) (if (equal? thechar "x") (d-InfoDialog "Tutorial is Over!\nTo re-run it go to the Help menu, Tutorial\nSome useful keypresses: Use + and - for sharp and flat\nUse , and ' for up and down octave\nUse Ins for adding notes to a chord\nDismiss this box and consult Help menu, denemo.org and chat on irc freenode#denemo for more help") (d-InfoDialog "That wasn't the expected key\nThe tutorial will exit now.\nTo re-run it go to the Help menu, Tutorial\nConsult Help menu, or chat on irc freenode#denemo for more help")) (d-SetSaved) (d-New)denemo-2.2.0/actions/menus/MainMenu/PaxHeaders.19168/ViewMenu0000644000000000000000000000013213135434150020510 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/0000755000175000017500000000000013135434150022436 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/ViewMenu/PaxHeaders.19168/ToggleCursorHighlight.xml0000644000000000000000000000013213135434035025560 xustar0030 mtime=1500919837.969981805 30 atime=1500919930.993315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/ToggleCursorHighlight.xml0000644000175000017500000000065413135434035027436 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OctaveDown ToggleCursorHighlight <_label>Cursor Highlighting Off/On <_tooltip>Shows up the position of the cursor more clearly (off/on) denemo-2.2.0/actions/menus/MainMenu/ViewMenu/PaxHeaders.19168/Palettes0000644000000000000000000000013213135434150022271 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/0000755000175000017500000000000013135434150024217 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/PaxHeaders.19168/CreateButtonForChordType.scm0000644000000000000000000000013213135434035027744 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.013315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/CreateButtonForChordType.scm0000644000175000017500000000224313135434035031616 0ustar00jjbenhamjjbenham00000000000000;;;CreateButtonForChordType (define-once CreateButtonForChord::palette #f) (let ((notes (d-GetNotes))(interval #f)(cursorNote #f)(root-note (GetLowestNote))) (if root-note (begin (if (not CreateButtonForChord::palette) (set! CreateButtonForChord::palette (d-SelectPalette #f))) (if CreateButtonForChord::palette (let ((label (d-GetUserInput (_ "Create Palette Button") (_ "Give a name for the chord") notes))) (if label (d-CreatePaletteButton CreateButtonForChord::palette label "Inserts chord" (string-append "(DenemoInsertChordTransposed \"" notes "\" '" root-note ") (d-DirectivePut-chord-display \"ChordName\" (DenemoGetNoteAndAccidental)) (d-DirectivePut-chord-gx \"ChordName\" " (number->string (* -5 (string-length label))) ") (d-DirectivePut-chord-graphic \"ChordName\" \"\n" label "\nDenemo\n20\")\n(d-MoveCursorRight)")) (d-WarningDialog (_ "Cancelled")))) (d-WarningDialog (_ "Cancelled")))) (d-WarningDialog (_ "Not on a chord")))) denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/PaxHeaders.19168/ChoosePalette.scm0000644000000000000000000000013213135434035025613 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.013315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/ChoosePalette.scm0000644000175000017500000000004513135434035027463 0ustar00jjbenhamjjbenham00000000000000;;;Choose Palette (d-ShowPalettes #t)denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/PaxHeaders.19168/CreateButtonForChordType.xml0000644000000000000000000000013213135434035027762 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.013315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/CreateButtonForChordType.xml0000644000175000017500000000116113135434035031632 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CreateButtonForChordType CreateButtonForObject <_label>Create Button for Chord Type <_tooltip>Creates a palette button which will insert the type of chord at the cursor, transposed to the cursor position when invoked. Use prepending sharp or flat to insert a chord with sharpened or flattened root note. Use for chord symbol chords. denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/PaxHeaders.19168/UnhidePalettes.scm0000644000000000000000000000013213135434035025772 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.013315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/UnhidePalettes.scm0000644000175000017500000000004513135434035027642 0ustar00jjbenhamjjbenham00000000000000;;UnhidePalettes (d-ShowPalettes #f) denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/PaxHeaders.19168/UnhidePalettes.xml0000644000000000000000000000013213135434035026010 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.023315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/UnhidePalettes.xml0000644000175000017500000000054413135434035027664 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS UnhidePalettes <_label>Show Hidden Palettes <_tooltip>Un-hides all non-empty palettes. denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/PaxHeaders.19168/CreateButtonForObject.scm0000644000000000000000000000013213135434035027251 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.023315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/CreateButtonForObject.scm0000644000175000017500000001532513135434035031130 0ustar00jjbenhamjjbenham00000000000000;;;;CreateButtonForObject (let ((script "")(tag (d-DirectiveGetForTag-standalone))(palette #f)) (define (list-io direction type) (list (string-append "d-Directive" direction "-" type "-prefix") (string-append "d-Directive" direction "-" type "-postfix") (string-append "d-Directive" direction "-" type "-display") (string-append "d-Directive" direction "-" type "-tx") (string-append "d-Directive" direction "-" type "-ty") (string-append "d-Directive" direction "-" type "-graphic") (string-append "d-Directive" direction "-" type "-gx") (string-append "d-Directive" direction "-" type "-gy") (string-append "d-Directive" direction "-" type "-grob") (string-append "d-Directive" direction "-" type "-midibytes") (string-append "d-Directive" direction "-" type "-override") (string-append "d-Directive" direction "-" type "-minpixels"))) (define (create-args type) (cons (list-io "Put" type) (list-io "Get" type))) (define (clone-directive tag theargs) (let loop ((n (- (length (car theargs)) 1))) (define put (list-ref (car theargs) n)) (define get (eval-string (list-ref (cdr theargs) n))) (define val #f) (set! val (get tag)) (if val (begin (if (number? val) (begin (set! val (number->string val)) (set! script (string-append script "(" put " \"" tag "\" " val ")\n"))) (set! script (string-append script "(" put " \"" tag "\" \"" (scheme-escape val) "\")\n"))))) (if (> n 0) (loop (- n 1))))) (define (clone-note-directives m) (set! script (string-append script "(d-CursorToNthNoteHeight " (number->string m) ")\n")) (let loop ((n 0)) (define tag (d-DirectiveGetNthTag-note n)) (if tag (begin (clone-directive tag (create-args "note")) (loop (1+ n)))))) (if tag ;;;standalone directive (begin (set! script (string-append "(d-Directive-standalone \"" tag "\")\n")) (clone-directive tag (create-args "standalone"))) (begin (if (Music?) (begin (set! script (string-append "(d-InsertChord \"" (d-GetNotes) "\")(d-MoveCursorLeft)\n")) ;;;clone chord directives (let loop ((n 0)) (define tag (d-DirectiveGetNthTag-chord n)) (if tag (begin (clone-directive tag (create-args "chord")) (loop (1+ n))))) ;;;clone note directives (let loop ((n 1)) (if (d-CursorToNthNoteHeight n) (begin (clone-note-directives n) (if (d-SwapNotesAtCursorHeight #f) (begin (d-SwapNotesAtCursorHeight) (set! script (string-append script "(d-SwapNotesAtCursorHeight)")))) (loop (1+ n)))))) (if (Keysignature?) (begin (set! script (string-append "(d-InsertKey \"" (d-GetPrevailingKeysigName) "\")(d-MoveCursorLeft)\n")) (let loop ((n 0)) (define tag (d-DirectiveGetNthTag-keysig n)) (if tag (begin (clone-directive tag (create-args "keysig")) (loop (1+ n))))) ) (if (Timesignature?) (begin (set! script (string-append "(d-InsertTimeSig \"" (d-GetPrevailingTimesig) "\")(d-MoveCursorLeft)\n")) (let loop ((n 0)) (define tag (d-DirectiveGetNthTag-timesig n)) (if tag (begin (clone-directive tag (create-args "timesig")) (loop (1+ n))))) ) (if (Clef?) (begin (set! script (string-append "(d-InsertClef \"" (d-GetPrevailingClef) "\")(d-MoveCursorLeft)\n")) (let loop ((n 0)) (define tag (d-DirectiveGetNthTag-clef n)) (if tag (begin (clone-directive tag (create-args "clef")) (loop (1+ n))))) ) (if (TupletOpen?) (begin (set! script (string-append "(d-StartTriplet)(d-MoveCursorLeft)(d-SetTuplet \"" (d-GetTuplet) "\")\n")) (let loop ((n 0)) (define tag (d-DirectiveGetNthTag-clef n)) (if tag (begin (clone-directive tag (create-args "tuplet")) (loop (1+ n)))))) (if (TupletClose?) (begin (set! script "(d-EndTuplet)(d-MoveCursorLeft)") (let loop ((n 0)) (define tag (d-DirectiveGetNthTag-clef n)) (if tag (begin (clone-directive tag (create-args "tuplet")) (loop (1+ n)))))))))))))) (if (or tag (Music?) (Keysignature?)(Timesignature?)(Clef?)(TupletMarker?)) (begin (set! palette (d-SelectPalette #f)) (set! script (string-append script "(d-RefreshDisplay)(d-MoveCursorRight)")) (let ((label (d-GetUserInput (_ "Object Clone") (_ "Give (unique) label for button: ") (_ "mylabel")))) (if label (let ((tooltip (d-GetUserInput (_ "Object Clone") (_ "Give tooltip for button: ") (_ "Inserts object")))) (if (not tooltip) (set! tooltip "No tooltip")) (if (not (d-CreatePaletteButton palette label tooltip script)) (d-WarningDialog (_ "Failed - duplicate label, no palette?"))))))) (d-WarningDialog (_ "Not implemented yet")))) denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/PaxHeaders.19168/CreateButtonForObject.xml0000644000000000000000000000013213135434035027267 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.043315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/CreateButtonForObject.xml0000644000175000017500000000072713135434035031146 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CreateButtonForObject UnhidePalettes <_label>Create Button for Object <_tooltip>Creates a palette button to insert a clone of the object at the cursor when the button is pressed. denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/PaxHeaders.19168/ChoosePalette.xml0000644000000000000000000000013213135434035025631 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.043315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Palettes/ChoosePalette.xml0000644000175000017500000000062613135434035027506 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS UnhidePalettes ChoosePalette <_label>Select a Palette to Show <_tooltip>Offers the available palettes to un-hide. denemo-2.2.0/actions/menus/MainMenu/ViewMenu/PaxHeaders.19168/DisplayCurrentObject.scm0000644000000000000000000000013213135434035025372 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.043315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/DisplayCurrentObject.scm0000644000175000017500000000005713135434035027245 0ustar00jjbenhamjjbenham00000000000000;;;;DisplayCurrentObject (d-DisplayObject) denemo-2.2.0/actions/menus/MainMenu/ViewMenu/PaxHeaders.19168/ToggleCursorHighlight.scm0000644000000000000000000000013213135434035025542 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.043315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/ToggleCursorHighlight.scm0000644000175000017500000000005313135434035027411 0ustar00jjbenhamjjbenham00000000000000;;ToggleCursorHighlight (d-HighlightCursor)denemo-2.2.0/actions/menus/MainMenu/ViewMenu/PaxHeaders.19168/DisplayEditingTime.scm0000644000000000000000000000013213135434035025023 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.043315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/DisplayEditingTime.scm0000644000175000017500000000021413135434035026671 0ustar00jjbenhamjjbenham00000000000000;DisplayEditTime (d-InfoDialog (string-append (_ "This score has taken\n") (d-GetEditingTime) (_ "to create, not counting unsaved edits.")))denemo-2.2.0/actions/menus/MainMenu/ViewMenu/PaxHeaders.19168/DisplayCurrentObject.xml0000644000000000000000000000013213135434035025410 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.056648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/DisplayCurrentObject.xml0000644000175000017500000000064213135434035027263 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DisplayCurrentObject <_label>Object Inspector <_tooltip>Pops up a window which displays the object at the cursor, including anything attached to it. denemo-2.2.0/actions/menus/MainMenu/ViewMenu/PaxHeaders.19168/Zoom0000644000000000000000000000013213135434150021434 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/0000755000175000017500000000000013135434150023362 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/PaxHeaders.19168/ZoomIn~.xml0000644000000000000000000000013213135434035023646 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.056648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/ZoomIn~.xml0000644000175000017500000000046613135434035025525 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ZoomIn <_tooltip>Zoom In <_label>Zoom In denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/PaxHeaders.19168/ZoomDialog.scm0000644000000000000000000000013213135434035024263 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.056648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/ZoomDialog.scm0000644000175000017500000000042313135434035026133 0ustar00jjbenhamjjbenham00000000000000(let ((scale "100")) (set! scale (d-GetUserInput (_ "Scale Display") (_ "Give % scaling required") "100")) (if (string? scale) (begin (set! scale (/ (string->number scale) 100.0)) (format #t "Scaling by ~A~%" scale) (d-Zoom scale) (d-RefreshDisplay) )))denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/PaxHeaders.19168/ZoomOut.xml0000644000000000000000000000013213135434035023651 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.056648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/ZoomOut.xml0000644000175000017500000000047113135434035025524 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ZoomOut <_label>Zoom Out <_tooltip>Zoom Out denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/PaxHeaders.19168/ZoomIn.xml0000644000000000000000000000013213135434035023450 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.066648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/ZoomIn.xml0000644000175000017500000000046613135434035025327 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ZoomIn <_label>Zoom In <_tooltip>Zoom In denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/PaxHeaders.19168/ZoomReset.xml0000644000000000000000000000013213135434035024164 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.066648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/ZoomReset.xml0000644000175000017500000000053613135434035026041 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ZoomReset <_label>Zoom to 100% <_tooltip>Zoom to 100%, restore the original size denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/PaxHeaders.19168/ZoomReset.scm0000644000000000000000000000013213135434035024146 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.066648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/ZoomReset.scm0000644000175000017500000000001313135434035026011 0ustar00jjbenhamjjbenham00000000000000(d-Zoom 1) denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/PaxHeaders.19168/ZoomOut.scm0000644000000000000000000000013213135434035023633 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.066648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/ZoomOut.scm0000644000175000017500000000005513135434035025504 0ustar00jjbenhamjjbenham00000000000000(d-Zoom (- (d-Zoom) 0.2 )) (d-RefreshDisplay)denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/PaxHeaders.19168/ZoomDialog.xml0000644000000000000000000000013213135434035024301 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.066648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/ZoomDialog.xml0000644000175000017500000000054713135434035026160 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ZoomDialog <_label>Set Display Scale <_tooltip>Scales the display by value given by user. denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/PaxHeaders.19168/ZoomIn~.scm0000644000000000000000000000013213135434035023630 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.079981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/ZoomIn~.scm0000644000175000017500000000003213135434035025474 0ustar00jjbenhamjjbenham00000000000000(d-Zoom (+ (d-Zoom) 0.2 ))denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/PaxHeaders.19168/ZoomIn.scm0000644000000000000000000000013213135434035023432 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.079981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/Zoom/ZoomIn.scm0000644000175000017500000000005513135434035025303 0ustar00jjbenhamjjbenham00000000000000(d-Zoom (+ (d-Zoom) 0.2 )) (d-RefreshDisplay)denemo-2.2.0/actions/menus/MainMenu/ViewMenu/PaxHeaders.19168/DisplayEditingTime.xml0000644000000000000000000000013213135434035025041 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.079981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/ViewMenu/DisplayEditingTime.xml0000644000175000017500000000104713135434035026714 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DisplayEditingTime CheckScore <_label>Display Time Spent Editing <_tooltip>Displays the cumulative time spent editing this score. The time counts any period between starting to edit and saving to disk. The time is accumulated over different editing sessions. denemo-2.2.0/actions/menus/MainMenu/PaxHeaders.19168/PlaybackMenu0000644000000000000000000000013213135434150021324 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/0000755000175000017500000000000013135434150023252 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/PlaybackView.scm0000644000000000000000000000013213135434035024470 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.079981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PlaybackView.scm0000644000175000017500000000723113135434035026344 0ustar00jjbenhamjjbenham00000000000000;;;PlaybackView (if (d-ContinuousTypesetting) (d-WarningDialog (_ "Please turn continuous typsetting off first")) (let ((params PlaybackView::params)(tag "Temp")(tag2 "Temp2")(pagebreak (d-Directive-header? "MovementPageBreak"))(booktitles #f)(data #f)(width "20")(height "100") (part #f)(changecount (d-Changecount))(saved (d-GetSaved))) (define (no-tempo-at-start) (define no-tempo #t) (d-PushPosition) (d-MoveToBeginning) (let loop () (if (Music?) (set! no-tempo #t) (if (d-Directive-standalone? "MetronomeMark") (set! no-tempo #f) (if (d-NextObjectInMeasure) (loop) (set! no-tempo #t))))) (d-PopPosition) no-tempo) ;;;procedure starts here ;(disp "starting " changecount "\n\n") (set! part (eq? params 'part)) (if (string? params) (set! params (eval-string params))) (if (list? params) (begin (set! part (list-ref params 0)) (set! width (list-ref params 1)) (set! height (list-ref params 2)))) (disp "Have " part " and " (d-GetMovement) " and layout " (d-GetLayoutName) "\n") (if (> (d-GetMovement) 1) (let ((layout (string-append "Movement " (number->string (d-GetMovement))))) (if (not (equal? layout (d-GetLayoutName))) (d-WarningDialog (_ "You should typeset this movement first in the Print View, otherwise positioning may not work."))))) (d-IncreaseGuard) (set! booktitles (DenemoHasBookTitles)) (if booktitles (DenemoHideBookTitles)) (if pagebreak (begin (set! pagebreak (d-DirectiveGet-header-override "MovementPageBreak")) (d-DirectivePut-header-override "MovementPageBreak" DENEMO_OVERRIDE_HIDDEN))) (d-DirectivePut-score-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-score-prefix tag "\n\\include \"live-score.ily\"\n") (if (no-tempo-at-start) (d-DirectivePut-voice-postfix tag (string-append " \\set Score.tempoHideNote = ##t \\tempo 4=" (number->string (d-MovementTempo)) " "))) (d-DirectivePut-score-prefix tag2 "\n\\header { tagline = #f }\n") (d-DirectivePut-score-postfix tag2 " \\applyContext #(override-color-for-all-grobs (x11-color 'black)) ") (d-DirectivePut-movementcontrol-postfix tag "\n\\midi {}\n") (d-DirectivePut-movementcontrol-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectivePut-layout-postfix tag "%{For Performance View%}") (d-DirectivePut-paper-postfix tag (string-append " ragged-bottom = ##t #(set! paper-alist (cons '(\"custom-size\" . (cons (* " width " cm) (* " height " cm))) paper-alist)) #(set-paper-size \"custom-size\")")) (d-SetSaved saved) (d-Changecount changecount) (d-DisplayTypesetSvg (/ (string->number (d-ScoreProperties "query=fontsize"))18.0) part) (if pagebreak (d-DirectivePut-header-override "MovementPageBreak" pagebreak)) (d-DirectiveDelete-movementcontrol tag) (d-DirectiveDelete-paper tag) (d-DirectiveDelete-score tag) (d-DirectivePut-score-prefix tag "\n%\\include \"live-score.ily\"\n") ;;to keep the same line numbers we don't delete this line but insert it commented it out (d-DirectivePut-score-override tag DENEMO_OVERRIDE_AFFIX) (d-DirectiveDelete-voice tag) (d-DirectiveDelete-score tag2) (d-DirectivePut-score-prefix tag2 "\n%\\header { tagline = #f }\n") ;;to keep the same line numbers we don't delete this line but comment it out (if booktitles (DenemoUseBookTitles)) (d-SetSaved saved);(disp "Resetting " changecount "\n\n") (d-Changecount changecount) (d-DecreaseGuard) )) denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/RecreateTimebase.xml0000644000000000000000000000013213135434035025331 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.103315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/RecreateTimebase.xml0000644000175000017500000000054613135434035027207 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS RecreateTimebase <_label>Create Timebase <_tooltip>Recalculates the timing of each note. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/PitchShift.scm0000644000000000000000000000013213135434035024154 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.103315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PitchShift.scm0000644000175000017500000000071613135434035026031 0ustar00jjbenhamjjbenham00000000000000;;;PitchShift (let ((val (d-GetUserInput (_ "Pitch Change") (_ "Give amount =/-") "10"))) (if val (begin (set! val (string->number val)) (set! val (+ 66 val)) (if (> val 127) (set! val 127)) (if (< val 0) (set! val 0)) (set! val (number->string val)) (let loop ((channel 0)) (if (< channel 16) (let ((chan (number->string (+ #xE0 channel)))) (d-OutputMidiBytes (string-append chan " 0x00 " val)) (loop (+ channel 1)))))))) denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/ConvertMidiForBass.xml0000644000000000000000000000013213135434035025630 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.103315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/ConvertMidiForBass.xml0000644000175000017500000000100113135434035027471 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleImmediatePlayback ConvertMidiForBass <_label>Convert MIDI Chords Over Bass <_tooltip>Takes a MIDI recording over a bass line and inserts the chords by matching the bass notes. Each chord must include the bass note. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/ToggleImmediatePlayback.xml0000644000000000000000000000013213135434035026634 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.113315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/ToggleImmediatePlayback.xml0000644000175000017500000000063713135434035030513 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleImmediatePlayback <_label>Toggle Immediate Playback <_tooltip>Toggle on/off if you want to hear the note directly after inserting/changing. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/PlayAllAtCursor.scm0000644000000000000000000000013213135434035025130 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.113315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PlayAllAtCursor.scm0000644000175000017500000000020013135434035026771 0ustar00jjbenhamjjbenham00000000000000;;;PlayAllAtCursor (DenemoSetPlaybackStart) (if (not (d-NextObject)) (d-MoveCursorRight)) (DenemoSetPlaybackEnd) (d-Play) denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/ConvertMidiForBass.scm0000644000000000000000000000013213135434035025612 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.113315139 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/ConvertMidiForBass.scm0000644000175000017500000004002013135434035027457 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;DenemoConvertForBass (let () (d-PushPosition) (defstruct note name start duration) (define Notes '()) (define (find-note key) ;searches forward from index through Notes looking for a note with pitch key returns the index where this is found or #f (let loop ((current-index 0)) (if (< current-index (length Notes)) (let ((current (car (list-ref Notes current-index)))) (if (not (eq? (note.name current) key)) (loop (+ current-index 1)) current-index)) #f))) (if (d-RewindRecordedMidi) (let looprecordednotes ((note #f)(tick 0)) (set! note (d-GetRecordedMidiNote)) (if note (begin (set! tick (d-GetRecordedMidiOnTick)) (if (< tick 0) (let ((note-index (find-note note))) (if note-index (let ((thenote (car (list-ref Notes note-index)))) (set!note.duration thenote (- (- tick) (note.start thenote))) (looprecordednotes note tick)) (let ((firstnotestart (note.start (car (list-ref Notes 0))))) ;;; no note-on for this note-off, put one at the start (disp "no on for " note " \nUsing " (- (- tick) firstnotestart) "\n") (set! Notes (cons (list (make-note 'name note 'start firstnotestart 'duration (- (- tick) firstnotestart) )) Notes)) (looprecordednotes note tick)) )) (begin ;;; a note onset, put it in the list Notes. (set! Notes (cons (list (make-note 'name note 'start tick 'duration 384)) Notes)) (looprecordednotes note tick)))) (begin ;;;;;; finished generating Notes as a list of lists each with one note struct in it ; (disp Notes) (if (> (length Notes) 0) (let () ;;;;;;; we have at least one note in the Notes list, define to procs to create a denemo chord and add a note to it (define (add-note note) (if (note? note) (begin (eval-string (string-append "(d-InsertNoteInChord \"" (d-GetNoteForMidiKey (note.name note)) "\")"))) (format #t "\tNo note to add note ~a ~a to\n" (note.name note) (note.duration note)))) (define (get-durationInsert ticks) (cond ( (= ticks 6) "(d-Insert8)") ;1/256 ( (= ticks 9) "(d-Insert8)(d-AddDot)") ;1/256. ( (= ticks 12) "(d-Insert7)") ;1/128 ( (= ticks 18) "(d-Insert7)(d-AddDot)") ;1/128. ( (= ticks 24) "(d-Insert6)") ;1/64 ( (= ticks 36) "(d-Insert6)(d-AddDot)") ;1/64. ( (= ticks 48) "(d-Insert5)") ;1/32 ( (= ticks 72) "(d-Insert5)(d-AddDot)") ;1/32. ( (= ticks 96) "(d-Insert4)") ;sixteen 1/16 ( (= ticks 144) "(d-Insert4)(d-AddDot)") ;sixteen 1/16. ( (= ticks 192) "(d-Insert3)" ) ; eight 1/8 ( (= ticks 288) "(d-Insert3)(d-AddDot)" ) ; eight 1/8. ( (= ticks 384) "(d-Insert2)") ; quarter 1/4 ( (= ticks 576) "(d-Insert2)(d-AddDot)") ; quarter 1/4. ( (= ticks 768) "(d-Insert1)") ; half 1/2 ( (= ticks 1152) "(d-Insert1)(d-AddDot)") ; half 1/2. ( (= ticks 1536) "(d-Insert0)" ) ; whole 1 ( (= ticks 2304) "(d-Insert0)(d-AddDot)" ) ; whole 1. ( (= ticks 3072) "(d-Breve)" ) ; breve 2*1 ( (= ticks 4608) "(d-Breve)(d-AddDot)" ) ; breve 2*1. ( (= ticks 6144) "(d-Longa)") ; longa 4*1 ( (= ticks 9216) "(d-Longa)(d-AddDot)") ; longa 4*1. ( (= ticks 12288) "(d-Maxima)") ; maxima 8*1 ( (= ticks 18432) "(d-Maxima)(d-AddDot)") ; maxima 8*1. (else "(d-Insert3)(d-ToggleGrace)"))) (define (insert-note name dur) (eval-string (string-append (get-durationInsert dur)"\n")) (d-PutNoteName (d-GetNoteForMidiKey name))) ;;;;;;;;;;;;;; end of defining procs ;;; notes has been set up by pre-pending so it is backwards... (set! Notes (reverse Notes)) (disp "The set of notes recorded was " Notes "\n") ;;;;;; take the Notes and seek out bass notes, remove them and form chords, insert chords in staff above (let () ;;;no loop here we drive it via the loopforbasskey ;;;;;;;;;;; overlap decides if two notes should be a chord ;;;;;;;;;;; the criterion is simply if they start close together (define (overlap n1 n2) (< (abs (- (note.start n1) (note.start n2))) 50)) ;;;;;;;;;;;;;;;;;; end of overlap ;(format #t "Number of notes ~a\n" index) ;;;;;;;Step through notes in current (bass) staff, placing chords in (empty) staff above (let loopforbasskey () ;;;;;;;;;;;;; copy non-notes to the empty staff above and stop with the cursor on the first bass note (let loop () ;;;;first copy anything that are not a bass note to the staff above (if (or (Rest?) (Tupletmarker?)) (begin (d-SetMark) (d-Copy) (d-PushPosition)(d-MoveToStaffUp) (GoToMeasureEnd)(d-Paste)(d-PopPosition)) (begin (if (and (not (Note?)) (d-NextObject)) (loop))))) ;;;;;;;;;;;;; cursor is on the first/next bass note (if any) (if (Note?) (let ((bass-key (d-GetNoteAsMidi)) (bass-duration (d-GetDurationInTicks))) ;;;midi number and duration of current note ;; now loop through the Notes list looking for a note the same MIDI key number, which should be before ticks move on too much... once found, consecutive notes are taken to make a chord or chords for the bass note, an (define notes-belonging '());the notes belonging to the bass note (define bass-note #f);a bass note (list) selected from Notes ;;;;;;;;;;;;;;;;;; these procs: make-chords takes a list which has each note in a separate list and puts all the (consecutive) ones that overlap into a single list, that is it turns a sequence of list-of-note into a list-of-notes which represents a chord. It returns the list. (define (make-chords notes) (let loop ((index 0)) (let ((note1 (list-ref notes index)) (note2 #f)) (if (> (length notes) (+ 1 index)) (begin (set! note2 (list-ref notes (+ 1 index))) (if (overlap (car note1) (car note2)) (begin (list-set! notes index (cons (car note2) note1)) (set! notes (delq note2 notes)) ;;so we loop with same index ) (set! index (+ 1 index))) (loop index))))) notes) ;;;;;;; insert-chord takes a list of note structs and puts a chord in the staff above with those notes. (define (insert-chord chord duration) (disp "making a chord " duration "\n") (insert-note (note.name (car chord)) duration) (for-each add-note (cdr chord))) (define (make-tied) (disp "tying ...\n") (d-PrevNote) (d-ToggleTie) (d-NextNote)) ;;;;;;;;push back the chord as a set of notes with the given start and duration (define (push-back chord thestart theduration) (let ((names '())) (set! names (map note.name chord)) (let loop ((index 0)) (if (> (length names) index) (begin ;(disp "Notes before " Notes "\n") (set! Notes (cons (list (make-note 'name (list-ref names index) 'start thestart 'duration theduration)) Notes)) ;(disp "Notes after " Notes "\n") (loop (+ index 1))))))) ;;;;;;;;;;; suggest duration returns a number of ticks that should be used when dur ticks are found in a bass note of bass-dur ;; (define (suggest-duration dur bass-dur) ;; (let ((fraction (/ dur bass-dur))) ;; (disp "suggesting for fraction " fraction "\n") ;; (cond ;; ( (< (abs (- fraction 1)) 0.1) bass-dur) ;; ( (< (abs (- fraction 0.5)) 0.1) (/ bass-dur 2)) ;; ( (< (abs (- fraction (/ 1 3))) 0.05) (/ bass-dur 3)) ;; ( (< (abs (- fraction 0.25)) 0.05) (/ bass-dur 4)) ;; ( (< (abs (- fraction 0.75)) 0.1) (/ bass-dur (/ 4 3))) ;; (else bass-dur) ;; ) ;; )) (define (suggest-duration dur bass-dur) (let ((fraction (/ dur bass-dur)) (thelist #f)) (disp "suggesting for fraction " fraction "\n") (set! thelist (list (cons (abs (- fraction 1)) bass-dur) (cons (abs (- fraction 0.5)) (/ bass-dur 2)) ; (cons(abs (- fraction (/ 1 3))) (/ bass-dur 3)) (cons (abs (- fraction 0.25)) (/ bass-dur 4)) (cons (abs (- fraction 0.75)) (/ bass-dur (/ 4 3))))) (let loop () (if (> (length thelist) 1) (let ((poss1 (list-ref thelist 0)) (poss2 (list-ref thelist 1))) (disp "poss 1 " poss1 "and poss2 " poss2 "\n") (if (< (car poss1) (car poss2)) (set! thelist (delq poss2 thelist)) (set! thelist (delq poss1 thelist))) (loop)) (cdr (list-ref thelist 0)))))) ;;;;;;; insert-chords takes a list of lists of note structs and the duration of the denemo bass note they have been assigned to. It inserts a chord for each of the lists assigning durations to fit the bass note.If enough of the last chord duration remains a tie is issued on the chord and then the chord is pushed back onto the global Notes list with start and duration modified to suit, so that it will be suspended over the next bass note (define (insert-chords notes bass-duration) ;(disp "insert-chords called with " notes "\n") (let ((chords (make-chords notes)) (remaining bass-duration)) ;;;loop through the chords, getting a good duration value, the duration from one to the next and inserting ; (disp "We have chords " chords "\n") (let loop ((index 0)) (if (> (length chords) (+ 1 index)) (let ((chord1 (list-ref chords index)) (chord2 #f) (duration #f)) (set! chord2 (list-ref chords (+ 1 index)));;move this into the init ;;;if chord1 hangs on into chord2 shorten it (if (contains (car chord1) (car chord2)) (set!note.duration (car chord1) (- (note.start (car chord2)) (note.start (car chord1))))) (set! duration (- (note.start (car chord2)) (note.start (car chord1)))) (set! duration (suggest-duration duration bass-duration)) (set! remaining (- remaining duration)) ;; (if (< remaining 50) ;; (begin ;; (set! duration (+ duration remaining)) ;; (set! remaining 0))) ;(disp "Insert chord " chord1 " With duration " duration "\n") (insert-chord chord1 duration) (loop (+ index 1))) (begin (if (= (length chords) (+ 1 index)) (let ((chord (list-ref chords index)) (duration #f)) ;(disp "the remaining duration is " remaining " for chord " chord" \n") (if (positive? remaining) (begin (set! duration (suggest-duration remaining bass-duration)) (set! remaining (- remaining duration)) (insert-chord chord duration) (disp "if remaining is still too much push back " remaining "\n") (if (positive? remaining) (let ((n2 (car chord))) (if (> (/ (- (note.duration n2) remaining) (note.duration n2)) 0.2) (begin (make-tied) (push-back chord (+ (note.start n2) remaining) (- (note.duration n2) remaining))))) ) ) (begin ;;;remaining is negative emit a grace (insert-chord chord 0)) ) ) (begin (d-WarningDialog "We have no chord")))))))) ;;;;; procedure "contains" decides if a note n2 belongs to a bass-note, at least in part ;;;;; if n2 starts after the bass-note ends then #f ;;;;; else if n2 ends before the bass-note ends then #t ;;;;; else if overlap of n2 with bass-note is fair proportion of n2 #t more that one fifth, 0.2, say ;;;;; else #f (define (contains bass-note n2) (disp "contains " bass-note " and " n2 "\n") (let ((bass-note.end (+ (note.start bass-note) (note.duration bass-note))) (n2.end (+ (note.start n2) (note.duration n2)))) (cond ((> (note.start n2) bass-note.end) #f) ((> bass-note.end n2.end) #t) ((> (/ (- n2.end bass-note.end) (note.duration n2)) 0.75) #f) (else #t)))) ;;;;;;;;;;;;;;;;;;;;;;;;; now the actual processing to loop through Notes finding an equivalent to bass-key and processing the notes belong. These are removed from Notes and then the outer loop to move on in the bass staff is taken. ;;; first loop through Notes from the start (previous chords have been deleted) and seek the bass-note (disp "The notes recorded were:\n" Notes "\n") (let loopgetbassnote ((index 0)) ;(disp "now index " index "bass-key " bass-key "\n") (set! bass-note #f) (if (> (length Notes) index) (if (= bass-key (note.name (car (list-ref Notes index)))) (begin (set! bass-note (list-ref Notes index)) (set! Notes (delq bass-note Notes)) ) (loopgetbassnote (+ index 1))))) ;;;; if bass-note then that note will have been removed from Notes, next get chord notes (disp "We have bass-note " bass-note "\n") (set! notes-belonging '()) (if bass-note (let loop ((index 0)) (if (> (length Notes) index) (let ( (next-note (list-ref Notes index))) (if (contains (car bass-note) (car next-note)) (begin (set! notes-belonging (cons* next-note notes-belonging)) ;(append! notes-belonging next-note) (set! Notes (delq next-note Notes)) (loop index))))))) ;;;;;;;;;;;;;;;;;;; finished creating notes-belonging, all these notes are now removed from Notes (d-PushPosition) (d-MoveToStaffUp) (GoToMeasureEnd) (if (> (length notes-belonging) 0) (begin (set! notes-belonging (reverse notes-belonging)) (disp "notes-belonging looks like this: " notes-belonging "for bass dur " bass-duration "\n") (insert-chords notes-belonging bass-duration) ;(disp "insert-chords finished\n") ) (begin (eval-string (string-append (get-durationInsert bass-duration) "(d-MoveCursorLeft)(d-StagedDelete)")) )) (d-PopPosition) (if (d-NextObject) (loopforbasskey) (d-WarningDialog "finished bass staff")));;;if there is a note in the bass clef (d-WarningDialog "No more bass notes"))))) (begin (d-WarningDialog "The Notes list is empty")))))) (format #t "No notes found in recording\n")) ;;;register the end of the transcription - or perhaps select everything transcribed an go through the selected bars???? (d-PopPosition) ;;;;;;; now go through the staff above looking for overfull bars and remove dots on the shortest notes until it becomes the right length. (d-PushPosition) (d-MoveToStaffUp) (define (d-NextChordInMeasure) (let loop ((this (d-NextObjectInMeasure))) (if this (if (not (Music?)) (loop) #t) #f))) (define (removeDot smallest-dotted) (apply d-GoToPosition smallest-dotted) (d-RemoveDot) (GoToMeasureBeginning)) (define (shorterDotted shortest) (define duration (d-GetDurationInTicks)) (if shortest (if (and (positive? (d-GetDots)) (< duration shortest)) duration shortest) duration)) (define (fixMeasure) (define shortest #f) (define smallest-dotted #f) (if (not (Music?)) (d-NextChord)) (if (Music?) (begin (let loop () (set! shortest (shorterDotted shortest)) (if (and shortest (= shortest (d-GetDurationInTicks))) (set! smallest-dotted (GetPosition))) (if (d-NextChordInMeasure) (loop))) (if smallest-dotted (begin (removeDot smallest-dotted) (if (OverfullMeasure?) (fixMeasure))))))) (define (fixMeasures) (if (OverfullMeasure?) (fixMeasure)) (if (d-MoveToMeasureRight) (fixMeasures))) ;(fixMeasures) loops infinitely? (d-PopPosition))denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/Audio0000644000000000000000000000013213135434150022365 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/0000755000175000017500000000000013135434150024313 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/PaxHeaders.19168/SynchronizeAudio.scm0000644000000000000000000000013213135434035026445 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.136648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/SynchronizeAudio.scm0000644000175000017500000000044013135434035030314 0ustar00jjbenhamjjbenham00000000000000;; SynchronizeAudio (let () (define name #f) (while (d-MoveToStaffUp)) (set! name (d-StaffProperties "query=denemo_name")) (if (equal? name "Timing") (d-MoveToBeginning) (begin (d-AddBefore) (d-StaffProperties "denemo_name=Timing"))) (d-StartAudioPlay #t)) denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/PaxHeaders.19168/CloseSourceAudioFile.xml0000644000000000000000000000013213135434035027176 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.136648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/CloseSourceAudioFile.xml0000644000175000017500000000065413135434035031054 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SynchronizeAudio CloseSourceAudioFile <_label>Close Source Audio File <_tooltip>Drops the audio track attached to the current movement. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/PaxHeaders.19168/SynchronizeAudio.xml0000644000000000000000000000013213135434035026463 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.136648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/SynchronizeAudio.xml0000644000175000017500000000102113135434035030326 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PlayAndRecordMidiIn SynchronizeAudio <_label>Synchronize Audio <_tooltip>Plays the audio attached to the current movement. Creates a timing bar for each space bar press. Music written in the staffs below will synchronize with the audio. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/PaxHeaders.19168/AudioPlay.scm0000644000000000000000000000013213135434035025037 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.156648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/AudioPlay.scm0000644000175000017500000000004213135434035026704 0ustar00jjbenhamjjbenham00000000000000;;AudioPlay (d-StartAudioPlay) denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/PaxHeaders.19168/CloseSourceAudioFile.scm0000644000000000000000000000013213135434035027160 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.156648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/CloseSourceAudioFile.scm0000644000175000017500000000053513135434035031034 0ustar00jjbenhamjjbenham00000000000000;;;CloseSourceAudioFile (if (d-CloseSourceAudio) (begin (d-InfoDialog "The source audio is now dropped from this score.\nIt will not automatically be re-opened with the score if you save.") (d-SetSaved #f)) (d-InfoDialog "There is no source audio for this movement.\nUse File->Open->Open Source Audio to attach audio to the movement.")) denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/PaxHeaders.19168/AudioPlay.xml0000644000000000000000000000013213135434035025055 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.156648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Audio/AudioPlay.xml0000644000175000017500000000066113135434035026731 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SynchronizeAudio AudioPlay <_label>Play <_tooltip>Plays the audio attached to the current movement. Use File->Open Audio to attach audio. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/TogglePlayAlongPlayback.scm0000644000000000000000000000013213135434035026606 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.156648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/TogglePlayAlongPlayback.scm0000644000175000017500000000005613135434035030460 0ustar00jjbenhamjjbenham00000000000000;;;TogglePlayAlongPlayback (d-TogglePlayAlong)denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/MuteStaffs.scm0000644000000000000000000000013213135434035024170 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.156648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/MuteStaffs.scm0000644000175000017500000000153413135434035026044 0ustar00jjbenhamjjbenham00000000000000;;MuteStaffs (let ((tag "MuteStaffs") (mute "MuteStaff") (numstaffs (d-GetStaffsInMovement)) (thelist '())) (d-PushPosition) (d-MoveToMovementBeginning) (let loop () (if (not (d-Directive-standalone? mute)) (d-MuteStaff)) (set! thelist (cons (cons (d-StaffProperties "query=denemo_name") (> (d-StaffMasterVolume) 0)) thelist)) (if (d-MoveToStaffDown) (loop))) (set! thelist (reverse thelist)) (set! thelist (d-CheckBoxes thelist (_ "Choose Staffs to Play"))) (if thelist (begin (d-MoveToMovementBeginning) (let loop () (if (not (eq? (cdar thelist) (> (d-StaffMasterVolume) 0))) (d-MuteStaff)) (set! thelist (cdr thelist)) (if (d-MoveToStaffDown) (loop)))) (d-WarningDialog (_ "Cancelled")))) denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/Performance.scm0000644000000000000000000000013213135434035024350 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.166648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Performance.scm0000644000175000017500000001014313135434035026220 0ustar00jjbenhamjjbenham00000000000000; d-Performance (d-CreateTimebase) (d-MoveToBeginning) (define Performance::timings '()) (define (Performance::play) (if (not (null? Performance::timings)) (begin (d-SetPlaybackInterval (car (car (car Performance::timings))) (cdr (car Performance::timings))) (apply d-GoToPosition (cdr (car (car Performance::timings)))) (set! Performance::timings (list-tail Performance::timings 1)) (d-Play "(Performance::play)")))) (if (d-AudioIsPlaying) (begin (d-Stop) (d-OneShotTimer 10 "(d-Stop)") (d-OneShotTimer 15 "(d-Stop)") (d-OneShotTimer 20 "(d-Stop)")) (let ((beginning (GetPosition))(position #f)(s1 #f)(e1 #f)(s2 #f)(e2 #f)(fine #f)(segno #f)(segno-position #f)(timing 0.0)(first-time #f)) (set! s1 (cons 0.0 beginning)) (while (d-NextObject) (if (and (d-GetMidiOffTime) (> (d-GetMidiOffTime) 0)) (set! timing (d-GetMidiOffTime))) ;(disp "MIDI off time " timing " ok") (set! position (GetPosition)) (set! first-time (d-DirectiveGet-standalone-data "OpenNthTimeBar")) (if first-time (begin (set! first-time (eval-string first-time)) (set! first-time (assq-ref first-time 'volta)))) ;;;(disp "first time is " first-time "\n\n") (cond ((Music?) (if (d-Directive-chord? "DCAlFine") (begin ;(disp "DC al fine performing " s1 " to " timing "first") (set! Performance::timings (cons (cons s1 timing) Performance::timings)) (set! s1 (cons 0.0 beginning)) (set! e1 timing) (if fine (set! e1 fine) (d-InfoDialog (_ "No fine found, assuming all"))))) (if (d-Directive-chord? "DalSegno") (begin (set! Performance::timings (cons (cons s1 timing) Performance::timings)) (set! s1 (cons 0.0 beginning)) ;; in case no segno found (if segno (set! s1 (cons segno segno-position)) (d-InfoDialog (_ "Dal Segno with no Segno - assuming Da Capo"))) (set! e1 timing) (if fine (set! e1 fine) (d-InfoDialog (_ "No fine found, assuming all"))))) (if (d-Directive-chord? "ToggleFine") (set! fine timing)) (if (d-Directive-chord? "ToggleSegno") (begin (set! segno-position (GetPosition)) (set! segno (d-GetMidiOnTime)))) ) ((or (d-Directive-standalone? "RepeatEnd") (d-Directive-standalone? "RepeatEndStart")) (set! e1 timing) ;(disp "Midi repeat from " e1 " ok") (set! Performance::timings (cons (cons s1 e1) Performance::timings)) ;(disp "timings at repeat end " Performance::timings " ok") (if (not e2) (set! e2 e1)) (if (not s2) (set! s2 s1)) (set! Performance::timings (cons (cons s2 e2) Performance::timings)) ;(disp "timings at repeat " Performance::timings " ok") (set! s1 (cons timing (GetPosition))) (set! e1 #f) (set! s2 #f) (set! e2 #f) (if (d-Directive-standalone? "RepeatStart") (set! s2 (cons timing (GetPosition)))) ) ((d-Directive-standalone? "RepeatStart") (set! s2 (cons timing (GetPosition)))) ((and first-time (= first-time 1)) (set! e2 timing) ;(disp "Midi 2 repeat to " e2 " ok") (if (not s2) (set! s2 (cons 0.0 beginning))) ) ) ) (if (not e1) (set! e1 timing)) (if (not (equal? (car s1) timing)) (set! Performance::timings (cons (cons s1 e1) Performance::timings))) (set! Performance::timings (reverse Performance::timings)) (disp "Playing with " Performance::timings "\n\n") (Performance::play))) denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/DenemoPlayCursorToEnd.scm0000644000000000000000000000013213135434035026274 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.166648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/DenemoPlayCursorToEnd.scm0000644000175000017500000000027513135434035030151 0ustar00jjbenhamjjbenham00000000000000;Play from Cusor to End (d-PushPosition) (DenemoSetPlaybackStart) (d-MoveToEnd) (d-MoveCursorRight) (DenemoSetPlaybackEnd) (DenemoGoForward) (d-PopPosition) (d-OneShotTimer 500 "(d-Play)") denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/PlayAtCursor.scm0000644000000000000000000000013213135434035024477 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.166648472 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PlayAtCursor.scm0000644000175000017500000000071313135434035026351 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;PlayAtCursor (let ((channel (d-StaffProperties "query=midi_channel")) (prognum (d-StaffProperties "query=midi_prognum"))) (define command (number->string (logior (string->number channel) #xC0))) (d-OutputMidiBytes (string-append command " " prognum)) (let loop ((count 1)) (define key (d-GetNoteFromTopAsMidi count)) (if key (begin (d-PlayMidiNote key 127 (string->number channel) 1000) (loop (+ count 1))))))denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/PlayAndRecordMidiIn.xml0000644000000000000000000000013213135434035025706 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.179981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PlayAndRecordMidiIn.xml0000644000175000017500000000146513135434035027565 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MouseOrMidiDrivenPlayback PlayAndRecordMidiIn <_label>Playback and Record MIDI (Off/On) <_tooltip>Starts (or stops) playing the score from the playhead start (green marker bar) and simultaneously records your playing from MIDI in. You can stop the playback at any time and then the first MIDI note you entered is marked. Entering duration keys now enters the notes you played into the score. If you have no click track at the top one is created - set the keysignature/enharmonic range before you start. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/PlayAll.scm0000644000000000000000000000013213135434035023445 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.179981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PlayAll.scm0000644000175000017500000000005613135434035025317 0ustar00jjbenhamjjbenham00000000000000(d-MoveToBeginning) (d-DenemoPlayCursorToEnd) denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/ToggleConduct.xml0000644000000000000000000000013213135434035024666 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.179981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/ToggleConduct.xml0000644000175000017500000000067113135434035026543 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Stop TogglePlayAlongPlayback <_label>Mouse Conductor (Off/On) <_tooltip>Turns on/off moving the playback on by moving the mouse over the score area. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/ToggleImmediatePlayback.scm0000644000000000000000000000013213135434035026616 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.179981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/ToggleImmediatePlayback.scm0000644000175000017500000000022213135434035030463 0ustar00jjbenhamjjbenham00000000000000(if DenemoPref_immediateplayback (d-SetPrefs "0") (d-SetPrefs "1")) denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/TogglePlayAlongPlayback.xml0000644000000000000000000000013213135434035026624 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.189981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/TogglePlayAlongPlayback.xml0000644000175000017500000000100113135434035030465 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Stop TogglePlayAlongPlayback <_label>Play Along Playback (Off/On) <_tooltip>Turns off play along playback: when this is on the playback does not advance past the cursor unless you play along the correct note via Midi In. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/PlayAndRecordMidiIn.scm0000644000000000000000000000013213135434035025670 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.189981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PlayAndRecordMidiIn.scm0000644000175000017500000000301313135434035027536 0ustar00jjbenhamjjbenham00000000000000;;PlayAndRecordMidiIn (define-once PlayAndRecordMidiIn::position #f) (if (d-AudioIsPlaying) (d-Stop) (begin (let ((position (GetPosition))) (define success #f) (set! PlayAndRecordMidiIn::position position) (while (d-MoveToStaffUp)) (if (not (equal? DenemoClickTrack (d-StaffProperties "query=denemo_name"))) (begin (d-InitialTimeSig) (d-CreateClickStaffForMidi) (set! success (equal? DenemoClickTrack (d-StaffProperties "query=denemo_name"))) (if success (d-GoToPosition #f (+ 1 (list-ref position 1)) (list-ref position 2) (list-ref position 3)))) (begin (set! success #t) (d-GoToPosition #f (list-ref position 1) (list-ref position 2) (list-ref position 3)))) (if success (begin (d-MoveToMeasureLeft) (d-MidiRecord "(d-ComputeMidiNoteDurations) (d-FirstNoteOnset) (while (d-MoveToStaffUp)) (d-CursorToMarkedMidiNotePosition) (d-MoveToStaffDown) (if (not (None?)) (begin (while (d-NextObjectInMeasure))(d-MoveCursorRight)))")))))) denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/PlaybackView.xml0000644000000000000000000000013213135434035024506 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.189981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PlaybackView.xml0000644000175000017500000000072613135434035026364 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PlaybackView Play <_label>Playback View <_tooltip>Displays the music fully typeset on one long page (the Playback View). Click on a note to play from there or drag to loop play. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/PlayAll.xml0000644000000000000000000000013213135434035023463 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.189981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PlayAll.xml0000644000175000017500000000065013135434035025335 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Play PlayAll <_label>Play All <_tooltip>Plays the current movement from the start, observing any mute objects placed in the staffs. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/MuteStaffs.xml0000644000000000000000000000013213135434035024206 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.209981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/MuteStaffs.xml0000644000175000017500000000062013135434035026055 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PlayAtCursor MuteStaffs <_label>Mute Stafffs <_tooltip>Select which staffs should be muted during playback. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/PlayAllAtCursor.xml0000644000000000000000000000013213135434035025146 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.209981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PlayAllAtCursor.xml0000644000175000017500000000070113135434035027015 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PlayAtCursor PlayAllAtCursor <_label>Play Music at Cursor <_tooltip>Plays the score for the duration of the note/chord at the cursor, starting at that note. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/PlayAtCursor.xml0000644000000000000000000000013213135434035024515 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.209981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PlayAtCursor.xml0000644000175000017500000000067313135434035026374 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DenemoPlayCursorToEnd PlayAtCursor <_label>Play Chord at Cursor <_tooltip>Sounds the note or chord at the cursor, using the current staffs instrument. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/DenemoPlayCursorToEnd.xml0000644000000000000000000000013213135434035026312 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.209981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/DenemoPlayCursorToEnd.xml0000644000175000017500000000063613135434035030170 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DenemoPlayCursorToEnd <_label>Play from Cursor to End <_tooltip>Playback all staffs from the current cursor position to the end of the movement. denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/ToggleConduct.scm0000644000000000000000000000013213135434035024650 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.209981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/ToggleConduct.scm0000644000175000017500000000004213135434035026515 0ustar00jjbenhamjjbenham00000000000000;;;ToggleConduct (d-ToggleConduct)denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/RecreateTimebase.scm0000644000000000000000000000013213135434035025313 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.219981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/RecreateTimebase.scm0000644000175000017500000000007313135434035027164 0ustar00jjbenhamjjbenham00000000000000;;;(d-UnsetMark) Why was this here???? (d-CreateTimebase) denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/Performance.xml0000644000000000000000000000013213135434035024366 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.219981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/Performance.xml0000644000175000017500000000071513135434035026242 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Play Performance <_label>Performance (Start/Stop) <_tooltip>Plays the current movement, observing repeats, Da Capo, fine and Dal Segno. If playing stops the performance denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PaxHeaders.19168/PitchShift.xml0000644000000000000000000000013213135434035024172 xustar0030 mtime=1500919837.969981805 30 atime=1500919931.219981805 30 ctime=1500919912.959981805 denemo-2.2.0/actions/menus/MainMenu/PlaybackMenu/PitchShift.xml0000644000175000017500000000065313135434035026047 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ConvertMidiForBass PitchShift <_label>Shift Pitch <_tooltip>Outputs a pitch bend signal to the synthesizer for the value +/- 64 given. denemo-2.2.0/actions/menus/MainMenu/PaxHeaders.19168/Educational0000644000000000000000000000013213135434035021203 xustar0030 mtime=1500919837.956648473 30 atime=1500919914.546648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/0000755000175000017500000000000013135434035023131 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/Educational/PaxHeaders.19168/MIDI0000644000000000000000000000013213135434150021723 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/0000755000175000017500000000000013135434150023651 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/PaxHeaders.19168/Conductor.scm0000644000000000000000000000013213135434035024446 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.219981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/Conductor.scm0000644000175000017500000000457713135434035026334 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;; ;;The Conductor (let ( (loop 0) (show-graphic 0) (graphic "One")) (begin (set! show-graphic (lambda (count) (cond ((zero? count) (set! graphic "LargeZero")) ((= 1 count) (set! graphic "LargeOne")) ((= 2 count) (set! graphic "LargeTwo")) ((= 3 count) (set! graphic "LargeThree")) ((= 4 count) (set! graphic "LargeFour")) ((= 5 count) (set! graphic "LargeFive")) ((= 6 count) (set! graphic "LargeSix")) ((= 7 count) (set! graphic "LargeSeven")) ((= 8 count) (set! graphic "LargeEight")) ((= 9 count) (set! graphic "LargeNine"))) (d-DirectivePut-standalone-graphic "Conductor" graphic) (d-DirectivePut-standalone-minpixels "Conductor" (d-DirectiveGet-standalone-width "Conductor")) ;;(display (d-DirectiveGet-standalone-width "Conductor")) )) (set! loop (lambda (measure) (let* ( (oldtens 0) (oldunits 0) (tens 0) (units 0) (beat 0) (graphic "One") (midi (d-GetMidi)) (velocity (bit-extract midi 16 24)) (note (bit-extract midi 8 16)) (command (bit-extract midi 0 8))) ;; body of the let* (begin ;;(display command) ;; (display note) (display velocity) (if (and (= command #xB0) (= note #x40) (= velocity #x7F)) (begin ;;(display "Pedal down") (set! measure (1+ measure)) ;;(display measure) (if (> measure 99) (begin (set! measure 0) (set! tens 0) (set! oldtens -1) )) (set! tens (floor (/ measure 10))) (if (> tens oldtens) (begin (set! oldtens tens) ;;; step to previous measure and show tens (d-MoveToMeasureLeft) (show-graphic tens) (d-MoveToMeasureRight) );;end begin );;end if (set! units (- measure (* oldtens 10))) (show-graphic units) (d-RefreshDisplay) )) (if (not (= command 0)) (loop measure)) ));; end of let, the body of the loop proc )) ;;; loop definition (d-InsertMeasure) (d-InsertMeasure) (d-MoveToMeasureLeft) (loop 0) )) denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/PaxHeaders.19168/FiguredBassExercises.scm0000644000000000000000000000013213135434035026557 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.229981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/FiguredBassExercises.scm0000644000175000017500000000467313135434035030442 0ustar00jjbenhamjjbenham00000000000000;;;FiguredBassExercises (define (FiguredBassExercises::help) (d-InfoDialog (_ "The music below is the first of Handel's exercises for figured bass. The staff marked \"Chords\" at the top is a sample (inadequate) realization of the figures. When you click Start you will be asked if you want to delete this version, and when you say yes you can start creating your own. The screen becomes green to remind you that your MIDI controller is now expecting you to play the ticked bass note plus chord. The bass note expected is marked with a tick, play this note plus the chord notes. You can hold down the bass note and change chords over the same bass note. Note, you must distinguish enharmonic differences (e.g. D-sharp from E-flat), check that the set of accidentals showing in the MIDI-in controls suits the piece you are working on. Press shift-sharpwise or flatwise as needed. You can hold down the chord while going on to the next bass note so as to carry the chord over. You can use the sustain pedal to tie the chord you are entering with the chord for the next bass note by putting the pedal down on the chord you want to tie and releasing it after going on to the next bass note. Putting pedal down before the bass note will tie the last chord to the one you enter next. You can also use the sustain pedal to place a chord on a rest before a bass note (depress the pedal before striking the bass note). You can click Start a second time to stop, and you can re-start from any bar you like. You can edit, playback etc while working, but don't remove or add staffs. You can also use the pitch bend wheel to stop entering chords. ") )) (if (d-OpenExample "HandelFiguredBassExercises.denemo") (begin (let loop () (if (d-PreviousMovement) (loop))) (CreateButton "Help" "Help") (d-SetDirectiveTagActionScript "Help" "(FiguredBassExercises::help)") (CreateButton "Start" "Start/Stop") (d-SetDirectiveTagActionScript "Start" "(d-ChordsOverBass)") (CreateButton "Next" "Next Exercise") (d-SetDirectiveTagActionScript "Next" "(if (not (d-NextMovement)) (d-InfoDialog \"This is the last one\"))") (CreateButton "Prev" "Previous Exercise") (d-SetDirectiveTagActionScript "Prev" "(if (not (d-PreviousMovement)) (d-InfoDialog \"This is the first one\"))")) (d-WarningDialog (_ "You have unsaved work"))) denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/PaxHeaders.19168/CheckPitches.xml0000644000000000000000000000013213135434035025061 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.229981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/CheckPitches.xml0000644000175000017500000000107713135434035026737 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CheckPitches <_label>Check Note Pitches <_tooltip>Compares note from MIDI with current note, if equal in pitch, advances to next note, else beeps. Note: holding down the shift key on the pc keyboard while playing notes on the MIDI in achieves the same effect instantly, so this filter is largely obsolete. denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/PaxHeaders.19168/CheckPitches.scm0000644000000000000000000000013213135434035025043 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.229981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/CheckPitches.scm0000644000175000017500000000205613135434035026717 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;; ;;;CheckPitches (d-Note) (d-EditMode) (define-once CheckPitches::Active #f) (if CheckPitches::Active (begin (d-PutMidi 0) (set! CheckPitches::Active #f)) ;;; not active (let ( (midi 0) (command 0) (note 0) (velocity 0) (loop 0)) (begin (set! CheckPitches::Active #t) (d-PlayMidiKey #x202001) (d-PlayMidiKey #x202601) (d-PlayMidiKey #x202201) (d-InputFilterNames "Check Pitches Filter") (d-SetMidiCapture #t) (set! loop (lambda () (begin (set! midi (d-GetMidi)) (set! velocity (bit-extract midi 16 24)) (set! note (bit-extract midi 8 16)) (set! command (bit-extract midi 0 8)) (if (= command #x80) (loop)) (if (= command #x90);; only check on channel 0 (begin (d-PlayMidiKey midi) (if (= (d-GetNoteAsMidi) note) (begin (d-NextNote)(d-RefreshDisplay)) (begin (d-PlayMidiKey #xF06001)) ) (loop)))))) (loop)))) (d-SetMidiCapture #f) (display "End of script") denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/PaxHeaders.19168/Conductor.xml0000644000000000000000000000013213135434035024464 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.236648473 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/Conductor.xml0000644000175000017500000000056113135434035026337 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Conductor <_label>The Conductor <_tooltip>Conducts as you press the sustain pedal for each measure. denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/PaxHeaders.19168/FiguredBassExercises.xml0000644000000000000000000000013213135434035026575 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.236648473 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/FiguredBassExercises.xml0000644000175000017500000000077613135434035030460 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FiguredBassExercises <_label>Handel's Figured Bass Exercises <_tooltip>Allows you to play in chords - a continuo realization - to Handel's continuo-practice exercises. Your continuo realization can optionally be marked to show consecutives. denemo-2.2.0/actions/menus/MainMenu/Educational/PaxHeaders.19168/AuralTraining0000644000000000000000000000013213135434035023743 xustar0030 mtime=1500919837.956648473 30 atime=1500919914.546648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/0000755000175000017500000000000013135434035025671 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/PaxHeaders.19168/Identify-Scale-Note0000644000000000000000000000013213135434150027444 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/0000755000175000017500000000000013135434150031372 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/F0000644000000000000000000000013213135434035027633 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.236648473 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/F-Pentascale.scm0000644000175000017500000000011513135434035034337 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "F G A Bb C" "f' g' a' b' c''"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/D0000644000000000000000000000013213135434035027631 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.259981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Db-Major.xml0000644000175000017500000000052713135434035033515 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Db-Major <_label>Db Major <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/A0000644000000000000000000000013213135434035027626 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.259981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Ab-Pentascale.scm0000644000175000017500000000013213135434035034473 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "Ab Bb C Db Eb" "aes' bes' c'' des'' ees''"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/D0000644000000000000000000000013213135434035027631 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.259981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Db-Pentascale.xml0000644000175000017500000000054113135434035034520 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Db-Pentascale <_label>Db Pentascale <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/F0000644000000000000000000000013213135434035027633 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.259981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/F-Major.xml0000644000175000017500000000052513135434035033353 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS F-Major <_label>F Major <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/C0000644000000000000000000000013213135434035027630 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.259981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/C-Pentascale.xml0000644000175000017500000000053713135434035034362 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS C-Pentascale <_label>C-Pentascale <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/C0000644000000000000000000000013213135434035027630 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.269981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/C-Major.scm0000644000175000017500000000012513135434035033326 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "C D E F G A B" "c' d' e' f' g' a' b'"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/D0000644000000000000000000000013213135434035027631 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.269981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Db-Pentascale.scm0000644000175000017500000000012713135434035034502 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "Db Eb F Gb Ab" "des' ees' f' ges' aes'"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/C0000644000000000000000000000013213135434035027630 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.269981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/C-Major.xml0000644000175000017500000000052513135434035033350 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS C-Major <_label>C Major <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/E0000644000000000000000000000013213135434035027632 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.269981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Eb-Pentascale.xml0000644000175000017500000000054113135434035034521 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Eb-Pentascale <_label>Eb Pentascale <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/A0000644000000000000000000000013213135434035027626 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.269981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Ab-Major.scm0000644000175000017500000000014613135434035033471 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "Ab Bb C Db Eb F G" "aes' bes' c'' des'' ees'' f'' g''"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/B0000644000000000000000000000013213135434035027627 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.279981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Bb-Major.scm0000644000175000017500000000014113135434035033465 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "Bb C D Eb F G A" "bes' c'' d'' ees'' f'' g'' a''"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/E0000644000000000000000000000013213135434035027632 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.279981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Eb-Pentascale.scm0000644000175000017500000000012413135434035034500 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "Eb F G Ab Bb" "ees' f' g' aes' bes'"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/F0000644000000000000000000000013213135434035027633 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.279981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/F-Major.scm0000644000175000017500000000013313135434035033330 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "F G A Bb C D E" "f' g' a' bes' c'' d'' e''"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/E0000644000000000000000000000013213135434035027632 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.279981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Eb-Major.scm0000644000175000017500000000014613135434035033475 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "Eb F G Ab Bb C D" "ees' f' g' aes' bes' c'' d'' ees''"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/F0000644000000000000000000000013213135434035027633 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.279981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/F-Pentascale.xml0000644000175000017500000000053713135434035034365 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS F-Pentascale <_label>F Pentascale <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/C0000644000000000000000000000013213135434035027630 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.289981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/C-Pentascale.scm0000644000175000017500000000011313135434035034332 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "C D E F G" "c' d' e' f' g'"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/E0000644000000000000000000000013213135434035027632 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.289981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Eb-Major.xml0000644000175000017500000000052713135434035033516 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Eb-Major <_label>Eb Major <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/B0000644000000000000000000000013213135434035027627 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.289981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Bb-Major.xml0000644000175000017500000000052713135434035033513 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Bb-Major <_label>Bb Major <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/F0000644000000000000000000000031413135434035027635 xustar00114 path=denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/F-sharp-Pentascale.xml 30 mtime=1500919837.956648473 30 atime=1500919931.289981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/F-sharp-Pentascale0000644000175000017500000000054613135434035034701 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS F-sharp-Pentascale <_label>F# Pentascale <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/D0000644000000000000000000000013213135434035027631 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.289981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Db-Major.scm0000644000175000017500000000014413135434035033472 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "Db Eb F Gb Ab Bb C" "des' ees' f' ges' aes' bes' c'"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/F0000644000000000000000000000031413135434035027635 xustar00114 path=denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/F-sharp-Pentascale.scm 30 mtime=1500919837.956648473 30 atime=1500919931.313315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/F-sharp-Pentascale0000644000175000017500000000013013135434035034666 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "F# G# A# B C#" "fis' gis' ais' b' cis''"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/F0000644000000000000000000000013213135434035027633 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.313315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/F-sharp-Major.scm0000644000175000017500000000015213135434035034444 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "F# G# A# B C# D# E#" "fis' gis' ais' b' cis'' dis'' eis''"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/B0000644000000000000000000000013213135434035027627 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.313315139 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Bb-Pentascale.scm0000644000175000017500000000012513135434035034476 0ustar00jjbenhamjjbenham00000000000000(IdentifyScaleNote::IdentifyScaleNotes (cons "Bb C D Eb F" "bes' c'' d'' ees'' f''"))denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/B0000644000000000000000000000013213135434035027627 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.313315139 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Bb-Pentascale.xml0000644000175000017500000000054113135434035034516 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Bb-Pentascale <_label>Bb Pentascale <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/F0000644000000000000000000000013213135434035027633 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.313315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/F-sharp-Major.xml0000644000175000017500000000053413135434035034466 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS F-sharp-Major <_label>F# Major <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/i0000644000000000000000000000013213135434035027676 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.326648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/init.scm0000644000175000017500000001442213135434035033046 0ustar00jjbenhamjjbenham00000000000000(define IdentifyScaleNote::Scale (cons "F# G# A# B C#" "fis' gis' ais' b' cis''")) (define IdentifyScaleNote::notelist '()) (define IdentifyScaleNote::buttonlist '()) (define IdentifyScaleNote::ArpTimer 0) (define IdentifyScaleNote::score 0) (define IdentifyScaleNote::CurrentNote "") (define IdentifyScaleNote::CurrentNoteNum 0) (define IdentifyScaleNote::NoteIndex 0) (let ((time (gettimeofday))) (set! *random-state* (seed->random-state (+ (car time) (cdr time))))) (define (IdentifyScaleNote::gotoEnd) (d-CursorRight) (if (d-NextObject) (IdentifyScaleNote::gotoEnd) (d-CursorRight))) (define (IdentifyScaleNote::lilyname->midikey lilyname) (let ( (naturual_notenum '(0 2 4 5 7 9 11)) (accidental 0) (octave 48) (notename 0) (notenum 0) (loop 0)) (set! notename (lambda (char) (modulo (- (char->integer char) 99) 7))) (set! loop (lambda (x) (if (< x (string-length lilyname)) (begin (if (= x 0) (set! notename (notename (string-ref lilyname x)))) (if (> x 0) (begin (if (equal? #\i (string-ref lilyname x)) (set! accidental (+ accidental 1))) (if (equal? #\e (string-ref lilyname x)) (set! accidental (- accidental 1))) (if (equal? #\' (string-ref lilyname x)) (set! octave (+ octave 12))) (if (equal? #\, (string-ref lilyname x)) (set! octave (- octave 12))))) (loop (+ 1 x))) );end of if ) );end of loop (loop 0) (set! notenum (list-ref naturual_notenum notename)) (+ (+ octave notenum) accidental) );end of let ) (define (IdentifyScaleNote::NewNote) (set! IdentifyScaleNote::CurrentNoteNum (random (length IdentifyScaleNote::notelist))) (set! IdentifyScaleNote::CurrentNote (list-ref IdentifyScaleNote::notelist IdentifyScaleNote::CurrentNoteNum)) ) (define (IdentifyScaleNote::showscore) (d-DirectivePut-score-display "IdentifyScaleNote::GameScore" (string-append "Score: " (number->string IdentifyScaleNote::score)))) (define (IdentifyScaleNote::PlayScaleNote note) (let ( (newnote "") ) (set! newnote (number->string (IdentifyScaleNote::lilyname->midikey note))) (d-OneShotTimer IdentifyScaleNote::ArpTimer (string-append "(PlayNote " "\"" newnote "\"" " 1000)")) (set! IdentifyScaleNote::ArpTimer (+ IdentifyScaleNote::ArpTimer 1000)))) (define (IdentifyScaleNote::PlayScaleNoteNow note) (let ( (newnote "") ) (set! newnote (number->string (IdentifyScaleNote::lilyname->midikey note))) (d-OneShotTimer 0 (string-append "(PlayNote " "\"" newnote "\"" " 1000)")) )) (define (IdentifyScaleNote::PlayScale) (set! IdentifyScaleNote::ArpTimer 0) (map IdentifyScaleNote::PlayScaleNote IdentifyScaleNote::notelist) ) (define (IdentifyScaleNote::DrawNote) (d-CursorToNote IdentifyScaleNote::CurrentNote) (d-Insert0) (d-ChangeChordNotes IdentifyScaleNote::CurrentNote) ) ;TODO perhaps inherit this from EducationGames (define (IdentifyScaleNote::PlaceAnswerStatus gfx) (begin (d-DirectivePut-note-minpixels "IdentifyScaleNote::tick" 30) (d-DirectivePut-note-gx "IdentifyScaleNote::tick" -10) (d-DirectivePut-note-gy "IdentifyScaleNote::tick" 40) (d-DirectivePut-note-graphic "IdentifyScaleNote::tick" gfx))) (define (IdentifyScaleNote::OfferChord) (IdentifyScaleNote::showscore) (IdentifyScaleNote::NewNote) (set! IdentifyScaleNote::ArpTimer 0) (IdentifyScaleNote::PlayScaleNote IdentifyScaleNote::CurrentNote) ) (define (IdentifyScaleNote::Go) (IdentifyScaleNote::showscore) (IdentifyScaleNote::PlayScale) (IdentifyScaleNote::NewNote) (set! IdentifyScaleNote::ArpTimer (+ IdentifyScaleNote::ArpTimer 1000)) (IdentifyScaleNote::PlayScaleNote IdentifyScaleNote::CurrentNote) ) (define (IdentifyScaleNote::notechosen NoteListPosition) (IdentifyScaleNote::DrawNote) (IdentifyScaleNote::gotoEnd) (if (= IdentifyScaleNote::CurrentNoteNum (string->number NoteListPosition)) (begin (set! IdentifyScaleNote::score (+ IdentifyScaleNote::score 1)) (IdentifyScaleNote::PlaceAnswerStatus "CheckMark") ) (begin (set! IdentifyScaleNote::score (- IdentifyScaleNote::score 1)) (IdentifyScaleNote::PlaceAnswerStatus "CrossSign") )) (d-OneShotTimer 1000 "(IdentifyScaleNote::OfferChord)") ) (define (IdentifyScaleNote::createbutton note) (CreateButton (string-append "IdentifyScaleNote::" note) (string-append " " note "")) (d-SetDirectiveTagActionScript (string-append "IdentifyScaleNote::" note) (string-append "(IdentifyScaleNote::notechosen \"" (number->string IdentifyScaleNote::NoteIndex) "\")")) (set! IdentifyScaleNote::NoteIndex (+ IdentifyScaleNote::NoteIndex 1)) ) (define (IdentifyScaleNote::help) (d-InfoDialog "After listening to the scale, there will be a random scale note played. You are determine which note was sounded.") ) ;;;;main procedure to call for IdentifyScaleNote (define (IdentifyScaleNote::IdentifyScaleNotes Scale) (set! IdentifyScaleNote::Scale Scale) (set! IdentifyScaleNote::buttonlist (string-split (car IdentifyScaleNote::Scale) #\space)) (set! IdentifyScaleNote::notelist (string-split (cdr IdentifyScaleNote::Scale) #\space)) (CreateButton "IdentifyScaleNote::GameScore" "Click to start") (d-SetDirectiveTagActionScript "IdentifyScaleNote::GameScore" "(IdentifyScaleNote::Go)") (CreateButton "IdentifyScaleNote::GameHelp" "Help") (d-SetDirectiveTagActionScript "IdentifyScaleNote::GameHelp" "(IdentifyScaleNote::help)") (map IdentifyScaleNote::createbutton IdentifyScaleNote::buttonlist) (CreateButton "IdentifyScaleNote::replay" "Re-Play") (d-SetDirectiveTagActionScript "IdentifyScaleNote::replay" "(IdentifyScaleNote::PlayScaleNoteNow IdentifyScaleNote::CurrentNote)" ) (CreateButton "IdentifyScaleNote::play_scale" "Play Scale") (d-SetDirectiveTagActionScript "IdentifyScaleNote::play_scale" "(IdentifyScaleNote::PlayScale)" ) ) denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/A0000644000000000000000000000013213135434035027626 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.326648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Ab-Pentascale.xml0000644000175000017500000000054113135434035034515 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Ab-Pentascale <_label>Ab Pentascale <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/PaxHeaders.19168/A0000644000000000000000000000013213135434035027626 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.336648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Identify-Scale-Note/Ab-Major.xml0000644000175000017500000000052713135434035033512 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Ab-Major <_label>Ab Major <_tooltip>Identify Scale Notes that are sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/PaxHeaders.19168/Chord-Comparison0000644000000000000000000000013213135434150027110 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/0000755000175000017500000000000013135434150031036 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Dimi0000644000000000000000000000031413135434035027776 xustar00114 path=denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/DiminishedOrAugmented.xml 30 mtime=1500919837.953315139 30 atime=1500919931.336648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/DiminishedOrAugmented0000644000175000017500000000064713135434035035202 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MajorOrMinor DiminishedOrAugmented <_label>DiminishedAugmented <_tooltip>Determine if the chord sounded is Diminished or Augmented denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Half0000644000000000000000000000032213135434035027765 xustar00120 path=denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/HalfDiminished7OrDiminshed7.xml 30 mtime=1500919837.953315139 30 atime=1500919931.336648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/HalfDiminished7OrDimi0000644000175000017500000000066413135434035035034 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Major7Minor7OrDominant7 HalfDiminished7OrDiminshed7 <_label>HalfDiminished7Diminished7 <_tooltip>Determine the type of diminished chord sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Dimi0000644000000000000000000000013213135434035027774 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.336648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/DiminishedOrMinor.scm0000644000175000017500000000014013135434035035122 0ustar00jjbenhamjjbenham00000000000000 (ChordComparison::ChordComparison (list ChordComparison::Diminished ChordComparison::Minor)) denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Majo0000644000000000000000000000032613135434035030005 xustar00124 path=denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/MajorMinorAugmentedOrDiminished.scm 30 mtime=1500919837.953315139 30 atime=1500919931.346648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/MajorMinorAugmentedOr0000644000175000017500000000022213135434035035167 0ustar00jjbenhamjjbenham00000000000000 (ChordComparison::ChordComparison (list ChordComparison::Major ChordComparison::Minor ChordComparison::Augmented ChordComparison::Diminished)) denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Majo0000644000000000000000000000013213135434035030000 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.346648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/MajorOrAugmented.xml0000644000175000017500000000063113135434035034765 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DiminishedOrMinor MajorOrAugmented <_label>MajorAugmented <_tooltip>Determine if chord sounded is Major or Augmented denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Dimi0000644000000000000000000000031413135434035027776 xustar00114 path=denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/DiminishedOrAugmented.scm 30 mtime=1500919837.953315139 30 atime=1500919931.346648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/DiminishedOrAugmented0000644000175000017500000000014413135434035035172 0ustar00jjbenhamjjbenham00000000000000 (ChordComparison::ChordComparison (list ChordComparison::Diminished ChordComparison::Augmented)) denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Majo0000644000000000000000000000013213135434035030000 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.346648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/MajorOrMinor.xml0000644000175000017500000000054713135434035034146 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MajorOrMinor <_label>MajorMinor <_tooltip>Determine if the chord played is major or minor denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Majo0000644000000000000000000000031613135434035030004 xustar00116 path=denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/Major7Minor7OrDominant7.xml 30 mtime=1500919837.953315139 30 atime=1500919931.346648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/Major7Minor7OrDominan0000644000175000017500000000065513135434035035033 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MajorMinorAugmentedOrDiminished Major7Minor7OrDominant7 <_label>Major7Minor7Dominant7 <_tooltip>Determine which seventh chord is sounded denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Half0000644000000000000000000000032213135434035027765 xustar00120 path=denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/HalfDiminished7OrDiminshed7.scm 30 mtime=1500919837.953315139 30 atime=1500919931.369981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/HalfDiminished7OrDimi0000644000175000017500000000015313135434035035025 0ustar00jjbenhamjjbenham00000000000000 (ChordComparison::ChordComparison (list ChordComparison::HalfDiminished7 ChordComparison::Diminished7)) denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Majo0000644000000000000000000000013213135434035030000 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.369981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/MajorOrMinor.scm0000644000175000017500000000031313135434035034117 0ustar00jjbenhamjjbenham00000000000000 (define ChordComparison::Major (cons "Major" "c e g")) (define ChordComparison::Minor (cons "Minor" "c ees g")) (ChordComparison::ChordComparison (list ChordComparison::Major ChordComparison::Minor)) denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Majo0000644000000000000000000000013213135434035030000 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.369981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/MajorOrAugmented.scm0000644000175000017500000000013713135434035034750 0ustar00jjbenhamjjbenham00000000000000 (ChordComparison::ChordComparison (list ChordComparison::Major ChordComparison::Augmented)) denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Majo0000644000000000000000000000032613135434035030005 xustar00124 path=denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/MajorMinorAugmentedOrDiminished.xml 30 mtime=1500919837.953315139 30 atime=1500919931.369981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/MajorMinorAugmentedOr0000644000175000017500000000071313135434035035174 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MajorOrAugmented MajorMinorAugmentedOrDiminished <_label>MajorMinorAugmentedDiminished <_tooltip>Determine if the chord sounded is Major Minor Augmented or Diminished denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/init0000644000000000000000000000013213135434035030055 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.369981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/init.scm0000644000175000017500000003721613135434035032520 0ustar00jjbenhamjjbenham00000000000000 (define ChordComparison::Major (cons "Major" "c e g")) (define ChordComparison::Minor (cons "Minor" "c ees g")) (define ChordComparison::Augmented (cons "Augmented" "c e gis")) (define ChordComparison::Diminished (cons "Diminished" "c ees ges")) (define ChordComparison::Major7 (cons "Major7" "c e g b")) (define ChordComparison::Dominant7 (cons "Dominant7" "c e g bes")) (define ChordComparison::Minor7 (cons "Minor7" "c ees g bes")) (define ChordComparison::HalfDiminished7 (cons "HalfDiminished7" "c ees ges bes")) (define ChordComparison::Diminished7 (cons "Diminished7" "c ees ges beses")) (define ChordComparison::ChordPossibilities (list ChordComparison::Major ChordComparison::Minor)) (define ChordComparison::HighestNote 80) (define ChordComparison::LowestNote 55) (define ChordComparison::ChordChordComparison::LowestNote 60) (define ChordComparison::ChordQuality 0) (define ChordComparison::ArpTimer 0) (define TransposedChordNotes '()) (define ChordComparison::score 0) (let ((time (gettimeofday))) (set! *random-state* (seed->random-state (+ (car time) (cdr time))))) (define (ChordComparison::gotoEnd) (d-CursorRight) (if (d-NextObject) (ChordComparison::gotoEnd) (d-CursorRight))) (define (ChordComparison::gotoLastObject) (d-CursorRight) (if (d-NextObject) (ChordComparison::gotoLastObject))) (define (ChordComparison::lilyname->midikey lilyname) (let ( (naturual_notenum '(0 2 4 5 7 9 11)) (accidental 0) (octave 48) (notename 0) (notenum 0) (loop 0)) (set! notename (lambda (char) (modulo (- (char->integer char) 99) 7))) (set! loop (lambda (x) (if (< x (string-length lilyname)) (begin (if (= x 0) (set! notename (notename (string-ref lilyname x)))) (if (> x 0) (begin (if (equal? #\i (string-ref lilyname x)) (set! accidental (+ accidental 1))) (if (equal? #\e (string-ref lilyname x)) (set! accidental (- accidental 1))) (if (equal? #\' (string-ref lilyname x)) (set! octave (+ octave 12))) (if (equal? #\, (string-ref lilyname x)) (set! octave (- octave 12))))) (loop (+ 1 x))) );end of if ) );end of loop (loop 0) (set! notenum (list-ref naturual_notenum notename)) (+ (+ octave notenum) accidental) );end of let ) (define (ChordComparison::midinum->lilyname num) (let ( (octave 0) (notename "") (OctaveString "") (sharplist '("c" "cis" "d" "dis" "e" "f" "fis" "g" "gis" "a" "ais" "b")) ) (set! octave (- (quotient num 12) 4)) (set! notename (list-ref sharplist (remainder num 12))) (if (> octave 0) (set! OctaveString (string-pad "" (abs octave) #\')) (set! OctaveString (string-pad "" (abs octave) #\,))) (string-append notename OctaveString) )) (define (ChordComparison::showscore) (d-DirectivePut-score-display "ChordComparison::GameScore" (string-append "Score: " (number->string ChordComparison::score)))) (define (ChordComparison::GetRandom) (set! ChordComparison::ChordChordComparison::LowestNote (random ChordComparison::HighestNote)) (if (> ChordComparison::LowestNote ChordComparison::ChordChordComparison::LowestNote) (ChordComparison::GetRandom) )) (define (ChordComparison::GetChordQuality) (car (list-ref ChordComparison::ChordPossibilities ChordComparison::ChordQuality))) (define (ChordComparison::GetChordSpelling) (cdr (list-ref ChordComparison::ChordPossibilities ChordComparison::ChordQuality))) (define (ChordComparison::GetNewChord) (ChordComparison::GetRandom) (set! ChordComparison::ChordQuality (random (length ChordComparison::ChordPossibilities)))) (define (ChordComparison::GetIntervalList) (let ( (SetOctave 0) (IntervalList 0) (ChordNoteList '()) ) (set! SetOctave (lambda (lilystring) (- (ChordComparison::lilyname->midikey lilystring) 48))) (set! ChordNoteList (string-split (ChordComparison::GetChordSpelling) #\space)) (set! IntervalList (map SetOctave ChordNoteList)) IntervalList )) (define (ChordComparison::PlayChord note) (PlayNote (number->string (+ ChordComparison::ChordChordComparison::LowestNote note)) 1000)) (define (ChordComparison::Play) (map ChordComparison::PlayChord (ChordComparison::GetIntervalList))) (define (ChordComparison::ArpegChord note) (let ( (newnote "") ) (set! newnote (number->string (+ ChordComparison::ChordChordComparison::LowestNote note))) (d-OneShotTimer ChordComparison::ArpTimer (string-append "(PlayNote " "\"" newnote "\"" " 1000)")) ) (set! ChordComparison::ArpTimer (+ ChordComparison::ArpTimer 1000))) (define (ChordComparison::PlayArpeggio) (map ChordComparison::ArpegChord (ChordComparison::GetIntervalList)) (set! ChordComparison::ArpTimer 0)) (define (ChordComparison::OfferChord) (ChordComparison::showscore) (ChordComparison::GetNewChord) (usleep 10000) (ChordComparison::Play)) ;;; Initialize Transpose routines. (define-once Transpose::init #f) (if (not Transpose::init) (begin ;;;; public variables (define Transpose::SetTransposeInterval 0) (define Transpose::TransposeNote 0) (define Transpose::TransposeNoteList 0) (define Transpose::Note "b,") (define Transpose::Interval "c b,") ;;;;;;;;;;; private variables ;original note (define Transpose::original-pitch '(0 0 0)) ;transposition amount (define Transpose::original-delta '(0 0 0)) (define Transpose::transpose-origin '(0 0 0)) (define Transpose::transpose-delta '(0 0 0)) ;;;;;;;;;; code (define (Transpose::SetTransposeInterval note) (begin (set! Transpose::transpose-delta (Transpose::lilyname->pitch note)) (Transpose::get-delta))) (define (Transpose::get-interval-from-selection) (let ((first-note "") (second-note "")) (set! first-note (d-GetNote)) (NextChordInSelection) (set! second-note (d-GetNote)) (string-append first-note " " second-note) )) (define (Transpose::GetTransposeInterval) (d-GetUserInput "Setting a Transposition Interval" "Enter a note, a space, and the note you wish this to transpose to" "c d")) (define Transpose::pitch->lilyname (lambda (pitch) (let ((octave->text 0)(accidental->text 0)(pitch->text 0)) (begin (set! octave->text (lambda (octave_num) (let ((octave_string "") (apply_octave 0)) (set! apply_octave (lambda (string value) (begin (if (< value 0) (begin (set! octave_string (string-append octave_string ",")) (apply_octave string (+ value 1)))) (if (> value 0) (begin (set! octave_string (string-append octave_string "'")) (apply_octave string (- value 1)))) ))) (apply_octave octave_string octave_num) octave_string ))) (set! accidental->text (lambda (accidental_num) (let ((accidental_string "") (apply_accidental 0)) (set! apply_accidental (lambda (string value) (begin (if (> value 0) (begin (set! accidental_string (string-append accidental_string "is")) (apply_accidental string (- value 1)))) (if (< value 0) (begin (set! accidental_string (string-append accidental_string "es")) (apply_accidental string (+ value 1)))) ))) (apply_accidental accidental_string accidental_num) accidental_string ))) (set! pitch->text (lambda (pitch_num) (let ((pitch_string "")) (set! pitch_string (integer->char (+ (modulo (+ pitch_num 2) 7) 97))) (string pitch_string) ))) (string-append (pitch->text (cadr pitch)) (accidental->text (caddr pitch)) (octave->text (car pitch))) ) ))) (define Transpose::lilyname->pitch (lambda (lilyname) (let ((accidental 0) (octave 0) (notename 0) (loop 0)) (begin (set! notename (lambda (char) (modulo (- (char->integer char) 99) 7) )) (set! loop (lambda (x) (if (< x (string-length lilyname)) (begin (if (= x 0) (set! notename (notename (string-ref lilyname x)))) (if (> x 0) (begin (if (equal? #\i (string-ref lilyname x)) (set! accidental (+ accidental 1))) (if (equal? #\e (string-ref lilyname x)) (set! accidental (- accidental 1))) (if (equal? #\' (string-ref lilyname x)) (set! octave (+ octave 1))) (if (equal? #\, (string-ref lilyname x)) (set! octave (- octave 1))))) (loop (+ 1 x)) ) );end of if ) );end of loop (loop 0) ) `(,octave ,notename ,accidental) );end of let )) ;;;;copied from chord-name.scm in lilypond-1.6.5 (define Transpose::semitone-vec (list->vector '(0 2 4 5 7 9 11))) (define Transpose::semitone (lambda (pitch) (+ (* (car pitch) 12) (vector-ref Transpose::semitone-vec (modulo (cadr pitch) 7)) (caddr pitch)))) (define Transpose::transpose (lambda (pitch delta) (let ((simple-octave (+ (car pitch) (car delta))) (simple-notename (+ (cadr pitch) (cadr delta)))) (let ((octave (+ simple-octave (quotient simple-notename 7))) (notename (modulo simple-notename 7))) (let ((accidental (- (+ (Transpose::semitone pitch) (Transpose::semitone delta)) (Transpose::semitone `(,octave ,notename 0))))) `(,octave ,notename ,accidental)))))) (define Transpose::get-delta (lambda () (begin (set! Transpose::original-delta (Transpose::transpose Transpose::transpose-origin Transpose::transpose-delta))))) ;check to see if this is really needed (define Transpose::transposed (lambda () (begin (Transpose::transpose Transpose::original-pitch Transpose::original-delta )))) ;This is in use by the Edit->Transpose->Transpose Selection script. (define Transpose::TransposeNote (lambda () (let ( (numofnotes 0) (notelist '()) (eachnote 0) (process_notelist 0) (transposed_notelist "")) (begin (set! process_notelist (lambda (note) (set! Transpose::original-pitch (Transpose::lilyname->pitch note)) (set! transposed_notelist (string-append transposed_notelist (Transpose::pitch->lilyname(Transpose::transposed)))) (set! transposed_notelist (string-append transposed_notelist " ")) )) (set! notelist (d-GetNotes)) (if (string? notelist) (set! notelist (string-split (d-GetNotes) #\space)) (set! notelist '())) (set! numofnotes (length notelist)) ;(display "numofnotes = ") ;(display numofnotes) ;(newline) (if (= numofnotes 1) (begin (set! Transpose::original-pitch (Transpose::lilyname->pitch (d-GetNotes))) (d-ChangeChordNotes (Transpose::pitch->lilyname(Transpose::transposed))))) (if (> numofnotes 1) (begin (map process_notelist notelist) (d-ChangeChordNotes transposed_notelist) )) )))) (define Transpose::TransposeNoteList (lambda (string_of_notes) (let ( (numofnotes 0) (outputlist '()) (eachnote 0) (process_notelist 0) (transposed_notelist "")) (begin (set! process_notelist (lambda (note) (set! Transpose::original-pitch (Transpose::lilyname->pitch note)) (set! transposed_notelist (string-append transposed_notelist (Transpose::pitch->lilyname(Transpose::transposed)))) (set! transposed_notelist (string-append transposed_notelist " ")) )) (set! outputlist (string-split string_of_notes #\space)) (set! numofnotes (length outputlist)) (display "numofnotes = ") (display numofnotes) (newline) (if (= numofnotes 1) (begin (set! Transpose::original-pitch (Transpose::lilyname->pitch string_of_notes)) (set! transposed_notelist (string-append (Transpose::pitch->lilyname(Transpose::transposed)))) )) (if (> numofnotes 1) (map process_notelist outputlist)) transposed_notelist )))) (define Transpose::init #t))) (define (ChordComparison::TransposeChord notestring lilyname) (set! Transpose::Note lilyname) (Transpose::SetTransposeInterval Transpose::Note) (set! TransposedChordNotes (string-split (Transpose::TransposeNoteList notestring) #\space)) ) ;(set! TransposedChordNotes (Transpose::TransposeNoteList notestring))) (define (ChordComparison::AddNoteToChord notes) (ChordComparison::gotoLastObject) (d-ChangeChordNotes notes)) (define (ChordComparison::DrawAnimatedArpeggio) (let ( (addnotes 0) (tindex 0) (currentnotes "") ) (set! addnotes (lambda (note) (begin (set! currentnotes (string-append currentnotes " " note)) (d-OneShotTimer tindex (string-append "(ChordComparison::AddNoteToChord " "\"" currentnotes "\"" ")")) (if (not (string=? note "")) (d-OneShotTimer tindex (string-append "(PlayNote " "\"" (number->string (ChordComparison::lilyname->midikey note)) "\"" " 1000)"))) (set! tindex (+ tindex 1000)) ))) (set! tindex 0) (ChordComparison::gotoEnd) (d-CursorToNote (list-ref TransposedChordNotes 0)) (d-Insert0) (map addnotes TransposedChordNotes) )) ;TODO perhaps inherit this from EducationGames (define (ChordComparison::PlaceAnswerStatus gfx) (begin (d-DirectivePut-note-minpixels "ChordComparison::tick" 30) (d-DirectivePut-note-gx "ChordComparison::tick" -10) (d-DirectivePut-note-gy "ChordComparison::tick" 40) (d-DirectivePut-note-graphic "ChordComparison::tick" gfx))) ;;;;;;;;; callback when user chooses a chord (define (ChordComparison::chordchosen chord) (ChordComparison::TransposeChord (ChordComparison::GetChordSpelling) (ChordComparison::midinum->lilyname ChordComparison::ChordChordComparison::LowestNote)) (ChordComparison::DrawAnimatedArpeggio) (ChordComparison::gotoEnd) (if (string=? (ChordComparison::GetChordQuality) chord) (begin (set! ChordComparison::score (+ ChordComparison::score 1)) (ChordComparison::PlaceAnswerStatus "CheckMark") ) (begin (set! ChordComparison::score (- ChordComparison::score 1)) (ChordComparison::PlaceAnswerStatus "CrossSign") )) (d-OneShotTimer (* 1000 (length TransposedChordNotes)) "(ChordComparison::OfferChord)") ) (define (ChordComparison::createbuttons chord) (CreateButton (string-append "ChordComparison::" (car chord)) (string-append " " (car chord) "")) (d-SetDirectiveTagActionScript (string-append "ChordComparison::" (car chord)) (string-append "(ChordComparison::chordchosen \"" (car chord) "\")"))) ;;;;main procedure to call for ChordComparison (define (ChordComparison::ChordComparison chordlist) (set! ChordComparison::ChordPossibilities chordlist) (CreateButton "ChordComparison::GameScore" "Click to start") (d-SetDirectiveTagActionScript "ChordComparison::GameScore" "(ChordComparison::OfferChord)") (map ChordComparison::createbuttons ChordComparison::ChordPossibilities) (CreateButton "ChordComparison::replay" "Re-Play") (d-SetDirectiveTagActionScript "ChordComparison::replay" "(ChordComparison::Play)" ) (CreateButton "ChordComparison::play_arpeggio" "Arpeggio") (d-SetDirectiveTagActionScript "ChordComparison::play_arpeggio" "(ChordComparison::PlayArpeggio)" ) ) denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Majo0000644000000000000000000000031613135434035030004 xustar00116 path=denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/Major7Minor7OrDominant7.scm 30 mtime=1500919837.953315139 30 atime=1500919931.393315139 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/Major7Minor7OrDominan0000644000175000017500000000017013135434035035023 0ustar00jjbenhamjjbenham00000000000000 (ChordComparison::ChordComparison (list ChordComparison::Major7 ChordComparison::Minor7 ChordComparison::Dominant7)) denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/PaxHeaders.19168/Dimi0000644000000000000000000000013213135434035027774 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.393315139 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/Educational/AuralTraining/Chord-Comparison/DiminishedOrMinor.xml0000644000175000017500000000064413135434035035151 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DiminishedOrAugmented DiminishedOrMinor <_label>DiminishedMinor <_tooltip>Determine if the chord sounded is Diminished or Minor denemo-2.2.0/actions/menus/MainMenu/Educational/PaxHeaders.19168/Note-Reading0000644000000000000000000000013213135434150023455 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/0000755000175000017500000000000013135434150025403 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/BassClefNoteNameSpeedT0000644000000000000000000000013213135434035027675 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.403315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/BassClefNoteNameSpeedTest.scm0000644000175000017500000001467713135434035033062 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;; ;;BassClefNoteNameSpeedTest NEW VERSION ;; tests note name recognition. (define BassClefNoteNameSpeedTest::score 0) (define BassClefNoteNameSpeedTest::note_position -4) ;0 = middle c (define BassClefNoteNameSpeedTest::note_highest 1) (define BassClefNoteNameSpeedTest::note_lowest -12) (define BassClefNoteNameSpeedTest::clef "Bass") (define BassClefNoteNameSpeedTest::start 0) (define BassClefNoteNameSpeedTest::end 0) (define BassClefNoteNameSpeedTest::TimeLimit 120) (define BassClefNoteNameSpeedTest::notewas #f) (define BassClefNoteNameSpeedTest::LastNoteCorrect? #t) (define BassClefNoteNameSpeedTest::ExtraChances 2) (define BassClefNoteNameSpeedTest::acceptable_list (list "a" "b" "c" "d" "e" "f" "g")) (define (BassClefNoteNameSpeedTest::ElapsedTime) (- BassClefNoteNameSpeedTest::end BassClefNoteNameSpeedTest::start)) (define (BassClefNoteNameSpeedTest::showscore) (d-DirectivePut-score-display "BassClefNoteNameSpeedTest::GameScore" (string-append "Score: " (object->string BassClefNoteNameSpeedTest::score) " in " (object->string (BassClefNoteNameSpeedTest::ElapsedTime)) " Secs."))) (define (BassClefNoteNameSpeedTest::GameOverDialog) (d-InfoDialog (string-append "Game Over\n" "Your Score = " (number->string BassClefNoteNameSpeedTest::score)))) (define (BassClefNoteNameSpeedTest::ScoreBoard) (d-InfoDialog (EducationGames::Scoreboard_Pretty_Print (EducationGames::ScoreboardFile "BassClefNoteNameSpeedTest")))) ;#t give differnt note (define (BassClefNoteNameSpeedTest::AnotherChance?) (and (not BassClefNoteNameSpeedTest::LastNoteCorrect?) (>= BassClefNoteNameSpeedTest::ExtraChances 0))) ;;;;;;;;; callback when user chooses a note (define (BassClefNoteNameSpeedTest::notechosen usernote) (begin (set! BassClefNoteNameSpeedTest::end (current-time)) (d-MoveToEnd) (if (string=? BassClefNoteNameSpeedTest::notewas usernote) (begin (set! BassClefNoteNameSpeedTest::score (+ BassClefNoteNameSpeedTest::score 1)) (set! BassClefNoteNameSpeedTest::LastNoteCorrect? #t) (EducationGames::PlaceAnswerStatus "CheckMark")) (begin (set! BassClefNoteNameSpeedTest::score (- BassClefNoteNameSpeedTest::score 1)) (set! BassClefNoteNameSpeedTest::LastNoteCorrect? #f) (set! BassClefNoteNameSpeedTest::ExtraChances (- BassClefNoteNameSpeedTest::ExtraChances 1)) (EducationGames::PlaceAnswerStatus "CrossSign")) ) (BassClefNoteNameSpeedTest::offerNote))) (define (BassClefNoteNameSpeedTest::print) (d-DeletePreviousObject) (SetHeaderField "title" "Note Naming Game") (SetHeaderField "subtitle" (string-append "Score was: " (object->string BassClefNoteNameSpeedTest::score) " in " (object->string (- BassClefNoteNameSpeedTest::end BassClefNoteNameSpeedTest::start)) " Seconds")) (SetHeaderField "piece" "user: anonymous") (DenemoPrintAllHeaders) (d-PrintPreview) (d-DirectiveDelete-header "Movement-title") (d-DirectiveDelete-header "Movement-subtitle") (d-DirectiveDelete-header "Movement-piece") (BassClefNoteNameSpeedTest::offerNote) (d-SetSaved)) (define (BassClefNoteNameSpeedTest::help) (d-InfoDialog "Identify the note that appears on the staff. Then hit the notename on the keyboard. Be quick because you have a time limit!!!")) ;;; (define (BassClefNoteNameSpeedTest::GetKeyBoardInput) (if (>= (BassClefNoteNameSpeedTest::ElapsedTime) BassClefNoteNameSpeedTest::TimeLimit) (begin (BassClefNoteNameSpeedTest::GameOver)) (begin (BassClefNoteNameSpeedTest::notechosen (EducationGames::GetAcceptableKeyInput BassClefNoteNameSpeedTest::acceptable_list)) (BassClefNoteNameSpeedTest::GetKeyBoardInput))) ) (define (BassClefNoteNameSpeedTest::go) (if (not (zero? BassClefNoteNameSpeedTest::score)) (let ((response #f)) (set! response (d-GetUserInput "Reset Score" "Do you want to reset your score" "y")) (if (equal? response "y") (set! BassClefNoteNameSpeedTest::score 0)))) (d-DeletePreviousObject) (d-InitialClef BassClefNoteNameSpeedTest::clef) (EducationGames::Chime) (set! BassClefNoteNameSpeedTest::start (current-time)) (set! BassClefNoteNameSpeedTest::end (current-time)) (BassClefNoteNameSpeedTest::offerNote) (BassClefNoteNameSpeedTest::GetKeyBoardInput)) (define (BassClefNoteNameSpeedTest::offerNote) (let ( (outofrange? 0) (seed 0) ) (set! outofrange? (lambda () (or (> BassClefNoteNameSpeedTest::note_position BassClefNoteNameSpeedTest::note_highest) (> BassClefNoteNameSpeedTest::note_lowest BassClefNoteNameSpeedTest::note_position)) )) (set! seed (lambda () (if (= (random 2) 0) (set! BassClefNoteNameSpeedTest::note_position (+ BassClefNoteNameSpeedTest::note_position 1)) (set! BassClefNoteNameSpeedTest::note_position (- BassClefNoteNameSpeedTest::note_position 1))) (if (outofrange?) (seed)) )) (d-MoveToEnd) (if (BassClefNoteNameSpeedTest::AnotherChance?) (begin (d-Insert1)) (begin (seed) (d-CursorToNote (EducationalGames::middle_c_offset->lily BassClefNoteNameSpeedTest::note_position)) (d-Insert1) (set! BassClefNoteNameSpeedTest::ExtraChances 2))) (set! BassClefNoteNameSpeedTest::notewas (d-GetNoteName)) (BassClefNoteNameSpeedTest::showscore) )) (CreateButton "BassClefNoteNameSpeedTest::GameScore" "Score") (d-SetDirectiveTagActionScript "BassClefNoteNameSpeedTest::GameScore" "(BassClefNoteNameSpeedTest::ScoreBoard)") (CreateButton "BassClefNoteNameSpeedTest::GameHelp" "Help") (d-SetDirectiveTagActionScript "BassClefNoteNameSpeedTest::GameHelp" "(BassClefNoteNameSpeedTest::help)") (CreateButton "BassClefNoteNameSpeedTest::GameGo" "Start") (d-SetDirectiveTagActionScript "BassClefNoteNameSpeedTest::GameGo" "(BassClefNoteNameSpeedTest::go)") (CreateButton "BassClefNoteNameSpeedTest::GamePrint" "Print") (d-SetDirectiveTagActionScript "BassClefNoteNameSpeedTest::GamePrint" "(BassClefNoteNameSpeedTest::print)") (define (BassClefNoteNameSpeedTest::GameOver) (EducationGames::Chime) (if (not (EducationGames::Write_Scoreboard_File (EducationGames::ScoreboardFile "BassClefNoteNameSpeedTest") BassClefNoteNameSpeedTest::score)) (BassClefNoteNameSpeedTest::GameOverDialog) (BassClefNoteNameSpeedTest::ScoreBoard) )) denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/UpDownOrSame.xml0000644000000000000000000000013213135434035026601 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.423315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/UpDownOrSame.xml0000644000175000017500000000054313135434035030454 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS UpDownOrSame <_label>Trace Note Direction <_tooltip>%tests your note tracking ability denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/ReadingNoteNames.xml0000644000000000000000000000013213135434035027441 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.423315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/ReadingNoteNames.xml0000644000175000017500000000057113135434035031315 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ReadingNoteNames <_label>Note Name Recognition <_tooltip>%tests your ability to name the notes of the scale denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/LineOrSpace.scm0000644000000000000000000000013213135434035026404 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.423315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/LineOrSpace.scm0000644000175000017500000001347713135434035030271 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;; ;;LineOrSpace ;; tests note name recognition. (define LineOrSpace::positionwas #t) (define LineOrSpace::acceptable_input (list "l" "space")) (define LineOrSpace::userinput #t) (define LineOrSpace::start (current-time)) (define LineOrSpace::end (current-time)) (define LineOrSpace::score 0) (define LineOrSpace::steps 0) (define LineOrSpace::position 6) ;in middle c offset (define LineOrSpace::note_highest 12) (define LineOrSpace::note_lowest 0) (define LineOrSpace::span 8) ;; how many LineOrSpace::steps of the scale to test. (define LineOrSpace::num-goes 30) ;; how many notes to present for the whole test (define LineOrSpace::input_device 1) ;0 = mouse 1 = keyboard (define (LineOrSpace::showscore) (d-DirectivePut-score-display "LineOrSpace::GameScore" (string-append "Score: " (object->string LineOrSpace::score) " in " (object->string (- LineOrSpace::end LineOrSpace::start)) " Secs."))) (define (LineOrSpace::help) (d-InfoDialog "Click on the *Spacebar* if the note is on a space and the *L* key if it is on a line.") ) (define (LineOrSpace::GameOver) (d-InfoDialog (string-append "Game Over\n" "Your Score = " (number->string LineOrSpace::score))) ) (define (LineOrSpace::ScoreBoard) (d-InfoDialog (EducationGames::Scoreboard_Pretty_Print (EducationGames::ScoreboardFile "LineOrSpace"))) ) (CreateButton "LineOrSpace::GameScore" "Score") (d-SetDirectiveTagActionScript "LineOrSpace::GameScore" "(LineOrSpace::ScoreBoard)") (CreateButton "LineOrSpace::GameHelp" "Help") (d-SetDirectiveTagActionScript "LineOrSpace::GameHelp" "(LineOrSpace::help)") (define (LineOrSpace::offerNote) (let ( (outofrange? 0) (seed 0) (interval 0) ) (set! outofrange? (lambda () (or (> LineOrSpace::position LineOrSpace::note_highest) (> LineOrSpace::note_lowest LineOrSpace::position)) )) (set! seed (lambda () (set! interval (random 4)) (if (= (random 2) 0) (set! LineOrSpace::position (+ LineOrSpace::position interval)) (set! LineOrSpace::position (- LineOrSpace::position interval))) (if (outofrange?) (seed)) )) (seed) (d-MoveToEnd) (d-CursorToNote (EducationalGames::middle_c_offset->lily LineOrSpace::position)) (d-Insert1) (if (or (even? LineOrSpace::position) (= 0 LineOrSpace::position)) (set! LineOrSpace::positionwas "line") (set! LineOrSpace::positionwas "space")) (LineOrSpace::showscore) )) ;;;;;;;;; callback when user chooses a note (define (LineOrSpace::positionchosen userinput) (if (> LineOrSpace::num-goes 0) (begin (set! LineOrSpace::end (current-time)) (d-MoveToEnd) (if (string=? LineOrSpace::positionwas userinput) (begin (set! LineOrSpace::score (+ LineOrSpace::score 1)) (EducationGames::PlaceAnswerStatus "CheckMark")) (begin (set! LineOrSpace::score (- LineOrSpace::score 1)) (EducationGames::PlaceAnswerStatus "CrossSign"))) (if (= LineOrSpace::input_device 0) (begin (set! LineOrSpace::num-goes (- LineOrSpace::num-goes 1)) (if (= LineOrSpace::num-goes 0) (LineOrSpace::EndGame)) )) (if (> LineOrSpace::num-goes 0) (LineOrSpace::offerNote)) ))) ;;;;;;;; the main function to run the test (define LineOrSpace::runtest (lambda (n) (if (> n 0) (begin (set! LineOrSpace::userinput (EducationGames::GetAcceptableKeyInput LineOrSpace::acceptable_input)) (if (string=? LineOrSpace::userinput "l") (set! LineOrSpace::userinput "line")) (LineOrSpace::positionchosen LineOrSpace::userinput) (LineOrSpace::runtest (- n 1)))))) (define (LineOrSpace::createbuttons position) (CreateButton (string-append "LineOrSpace::" position) (string-append " " position "")) (d-SetDirectiveTagActionScript (string-append "LineOrSpace::" position) (string-append "(LineOrSpace::positionchosen \"" position "\")"))) (define (LineOrSpace::EndGame) (EducationGames::Chime) (if (not (EducationGames::Write_Scoreboard_File (EducationGames::ScoreboardFile "LineOrSpace") LineOrSpace::score)) (LineOrSpace::GameOver) (LineOrSpace::ScoreBoard) )) ;;; (define (LineOrSpace::go) (if (not (zero? LineOrSpace::score)) (let ((response #f)) (set! response (d-GetUserInput "Reset Score" "Do you want to reset your score" "y")) (if (equal? response "y") (begin (set! LineOrSpace::start (current-time)) (set! LineOrSpace::end (current-time)) (set! LineOrSpace::score 0))))) (d-DeletePreviousObject) (if (= LineOrSpace::input_device 0) (begin ;mouse (LineOrSpace::createbuttons "line") (LineOrSpace::createbuttons "space") (EducationGames::Chime) (LineOrSpace::offerNote) ) (begin ;keyboard (EducationGames::Chime) (LineOrSpace::offerNote) (LineOrSpace::runtest LineOrSpace::num-goes) (LineOrSpace::EndGame)) ) ) (CreateButton "LineOrSpace::GameScore" "Click to start") (d-SetDirectiveTagActionScript "LineOrSpace::GameScore" "(LineOrSpace::go)") (define (LineOrSpace::Input_Select) (if (= LineOrSpace::input_device 0) (begin (set! LineOrSpace::input_device 1) (d-DirectivePut-score-display "LineOrSpace::SetInput" "Input:keyboard") ) (begin (set! LineOrSpace::input_device 0) (d-DirectivePut-score-display "LineOrSpace::SetInput" "Input:mouse") ) )) (CreateButton "LineOrSpace::SetInput" "Input:keyboard") (d-SetDirectiveTagActionScript "LineOrSpace::SetInput" "(LineOrSpace::Input_Select)") denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/NoteNameSpeedTest.xml0000644000000000000000000000013213135434035027605 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.429981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/NoteNameSpeedTest.xml0000644000175000017500000000062113135434035031455 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NoteNameSpeedTest <_label>Note Name Speed Recognition <_tooltip>%tests your ability to name the notes of the scale denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/BassClefNoteNameSpeedT0000644000000000000000000000013213135434035027675 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.429981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/BassClefNoteNameSpeedTest.xml0000644000175000017500000000065513135434035033067 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS BassClefNoteNameSpeedTest <_label>Bass Clef Note Name Speed Recognition <_tooltip>%tests your ability to read the notes of the bass clef staff denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/CountSteps.scm0000644000000000000000000000013213135434035026347 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.429981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/CountSteps.scm0000644000175000017500000001321513135434035030222 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;; ;;CountSteps ;; tests interval recognition. (define CountSteps::score 0) (define CountSteps::interval 3) (define CountSteps::start (current-time)) (define CountSteps::end (current-time)) (define CountSteps::num-goes 30) (define CountSteps::intervalwas #t) (define CountSteps::acceptable_list (list "0" "1" "2" "3" "4" "5" "6" "7" "8" "9")) (define CountSteps::note_highest 12) (define CountSteps::note_lowest 0) (define CountSteps::note_position 6) (define CountSteps::userinput #t) (define CountSteps::direction 0) (define (CountSteps::showscore) (d-DirectivePut-score-display "CountSteps::GameScore" (string-append "Score: " (object->string CountSteps::score) " in " (object->string (- CountSteps::end CountSteps::start)) " Secs."))) (define (CountSteps::help) (d-InfoDialog "Count how many steps it takes to get to the next note. Enter this number on they keyboard..... ") ) (define (CountSteps::GameOver) (d-InfoDialog (string-append "Game Over\n" "Your Score = " (number->string CountSteps::score))) ) (define (CountSteps::ScoreBoard) (d-InfoDialog (EducationGames::Scoreboard_Pretty_Print (EducationGames::ScoreboardFile "CountSteps"))) ) (CreateButton "CountSteps::GameScore" "Score") (d-SetDirectiveTagActionScript "CountSteps::GameScore" "(CountSteps::ScoreBoard)") (CreateButton "CountSteps::GameHelp" "Help") (d-SetDirectiveTagActionScript "CountSteps::GameHelp" "(CountSteps::help)") ;;;;;;;; the main function to run the test - just goes to end and places a note at a random height above the cursor, returning the cursor to where it was. (define (CountSteps::offerNote) (let ( (outofrange? 0) (seed 0) (steps 0) (position 0) ) (set! outofrange? (lambda () (or (> position CountSteps::note_highest) (> CountSteps::note_lowest position)) )) (set! seed (lambda () (set! steps (random CountSteps::interval)) (if (= steps 0) (set! steps 1)) (if (= (random 2) 0) (set! position (+ position steps)) (set! position (- position steps))) (if (outofrange?) (begin (set! position CountSteps::note_position) (seed)) (begin (set! CountSteps::note_position position))) )) (if (>= CountSteps::num-goes 0) (begin (set! position CountSteps::note_position) (seed) (d-MoveToEnd) (d-CursorToNote (EducationalGames::middle_c_offset->lily CountSteps::note_position)) (d-Insert2) (set! CountSteps::intervalwas steps) (CountSteps::showscore) (set! CountSteps::num-goes (- CountSteps::num-goes 1)) )) ;if )) ;;;;;;;;; callback when user chooses a note (define (CountSteps::intervalchosen interval) (begin (set! CountSteps::end (current-time)) (d-MoveToEnd) (if (= CountSteps::intervalwas interval) (begin (set! CountSteps::score (+ CountSteps::score 1)) (EducationGames::PlaceAnswerStatus "CheckMark")) (begin (set! CountSteps::score (- CountSteps::score 1)) (EducationGames::PlaceAnswerStatus "CrossSign"))) (CountSteps::offerNote) )) ;;;;;;;; the main function to run the test (define CountSteps::runtest (lambda (n) (if (>= n 0) (begin (set! CountSteps::userinput (EducationGames::GetAcceptableKeyInput CountSteps::acceptable_list)) (set! CountSteps::userinput (string->number CountSteps::userinput)) (CountSteps::intervalchosen CountSteps::userinput) (CountSteps::runtest CountSteps::num-goes))))) (define (CountSteps::plus) (set! CountSteps::interval (+ CountSteps::interval 1)) (if (> CountSteps::interval 9) (set! CountSteps::interval 9)) (d-DirectivePut-score-display "CountSteps::GameInterval" (string-append "Interval: " (object->string CountSteps::interval) ""))) (define (CountSteps::minus) (set! CountSteps::interval (- CountSteps::interval 1)) (if (< CountSteps::interval 2) (set! CountSteps::interval 2)) (d-DirectivePut-score-display "CountSteps::GameInterval" (string-append "Interval: " (object->string CountSteps::interval) ""))) (define (CountSteps::setInterval) (set! CountSteps::interval (string->number (d-GetUserInput "Interval" "Give number of steps you want to name note over" (object->string CountSteps::interval)))) (if (boolean? CountSteps::interval) (set! CountSteps::interval 8)) (if (< CountSteps::interval 2) (set! CountSteps::interval 2)) (if (> CountSteps::interval 9) (set! CountSteps::interval 9)) (d-DirectivePut-score-display "CountSteps::GameInterval" (string-append "Interval: " (object->string CountSteps::interval) ""))) (CreateButton "CountSteps::GameMinus" "-") (d-SetDirectiveTagActionScript "CountSteps::GameMinus" "(CountSteps::minus)") (CreateButton "CountSteps::GameInterval" (string-append "Interval: " (object->string CountSteps::interval) "")) (d-SetDirectiveTagActionScript "CountSteps::GameInterval" "(CountSteps::setInterval)") (CreateButton "CountSteps::GamePlus" "+") (d-SetDirectiveTagActionScript "CountSteps::GamePlus" "(CountSteps::plus)") (EducationGames::Chime) (d-CursorToNote (EducationalGames::middle_c_offset->lily CountSteps::note_position)) (d-Insert2) (CountSteps::offerNote) (set! CountSteps::start (current-time)) (CountSteps::runtest CountSteps::num-goes) (if (not (EducationGames::Write_Scoreboard_File (EducationGames::ScoreboardFile "CountSteps") CountSteps::score)) (CountSteps::GameOver) (CountSteps::ScoreBoard) ) (EducationGames::Chime) ;;;;;;;;;;;;;;;;;;;;;;;;;; denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/LineNumber.xml0000644000000000000000000000013213135434035026316 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.439981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/LineNumber.xml0000644000175000017500000000063213135434035030170 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LineOrSpace LineNumber <_label>Identify Line Number <_tooltip>Identify the line number in which the note is displayed denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/ReadingNoteNamesSolfeg0000644000000000000000000000013213135434035030002 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.439981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/ReadingNoteNamesSolfege.xml0000644000175000017500000000063113135434035032617 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ReadingNoteNamesSolfege <_label>Solfege Note Name Recognition <_tooltip>%tests your ability to name the notes of the scale denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/CountSteps.xml0000644000000000000000000000013213135434035026365 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.439981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/CountSteps.xml0000644000175000017500000000061413135434035030237 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CountSteps <_label>Step Counting Exercise <_tooltip>%tests your ability to find the number of diatonic notes between two notes denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/DiatonicInterval.scm0000644000000000000000000000013213135434035027477 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.439981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/DiatonicInterval.scm0000644000175000017500000001434113135434035031353 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;; ;;DiatonicInterval ;; tests interval recognition. (define DiatonicInterval::score 0) (define DiatonicInterval::interval 3) (define DiatonicInterval::acceptable_list (list "0" "1" "2" "3" "4" "5" "6" "7" "8" "9")) (define DiatonicInterval::start (current-time)) (define DiatonicInterval::end (current-time)) (define DiatonicInterval::num-goes 30) (define DiatonicInterval::intervalwas #t) (define DiatonicInterval::userinput #t) (define DiatonicInterval::note_highest 12) (define DiatonicInterval::note_lowest 0) (define DiatonicInterval::note_position 6) (define DiatonicInterval::direction 0) (define (DiatonicInterval::showscore) (d-DirectivePut-score-display "DiatonicInterval::GameScore" (string-append "Score: " (object->string DiatonicInterval::score) " in " (object->string (- DiatonicInterval::end DiatonicInterval::start)) " Secs."))) (define (DiatonicInterval::help) (d-InfoDialog "Enter the interval value that the note changes. If the note moves by a 2nd hit 2, by a 3rd hit 3 etc..... ") ) (define (DiatonicInterval::GameOver) (d-InfoDialog (string-append "Game Over\n" "Your Score = " (number->string DiatonicInterval::score))) ) (define (DiatonicInterval::ScoreBoard) (d-InfoDialog (EducationGames::Scoreboard_Pretty_Print (EducationGames::ScoreboardFile "DiatonicInterval"))) ) (CreateButton "DiatonicInterval::GameScore" "Score") (d-SetDirectiveTagActionScript "DiatonicInterval::GameScore" "(DiatonicInterval::ScoreBoard)") (CreateButton "DiatonicInterval::GameHelp" "Help") (d-SetDirectiveTagActionScript "DiatonicInterval::GameHelp" "(DiatonicInterval::help)") ;;;;;;;; the main function to run the test - just goes to end and places a note at a random height above the cursor, returning the cursor to where it was. (define (DiatonicInterval::offerNote) (let ( (outofrange? 0) (seed 0) (steps 0) (position 0) ) (set! outofrange? (lambda () (or (> position DiatonicInterval::note_highest) (> DiatonicInterval::note_lowest position)) )) (set! seed (lambda () (set! steps (random DiatonicInterval::interval)) (if (= steps 0) (set! steps 1)) (if (= (random 2) 0) (set! position (+ position steps)) (set! position (- position steps))) (if (outofrange?) (begin (set! position DiatonicInterval::note_position) (seed)) (begin (set! DiatonicInterval::note_position position))) )) (if (>= DiatonicInterval::num-goes 0) (begin (set! position DiatonicInterval::note_position) (seed) (d-MoveToEnd) (d-CursorToNote (EducationalGames::middle_c_offset->lily DiatonicInterval::note_position)) (d-Insert2) (set! DiatonicInterval::intervalwas (+ 1 steps)) (DiatonicInterval::showscore) (set! DiatonicInterval::num-goes (- DiatonicInterval::num-goes 1)) )) ;if )) ;;;;;;;;; callback when user chooses a note (define (DiatonicInterval::intervalchosen interval) (begin (set! DiatonicInterval::end (current-time)) (d-MoveToEnd) (if (= DiatonicInterval::intervalwas interval) (begin (set! DiatonicInterval::score (+ DiatonicInterval::score 1)) (EducationGames::PlaceAnswerStatus "CheckMark")) (begin (set! DiatonicInterval::score (- DiatonicInterval::score 1)) (EducationGames::PlaceAnswerStatus "CrossSign"))) (DiatonicInterval::offerNote) )) ;;;;;;;; the main function to run the test (define DiatonicInterval::runtest (lambda (n) (if (>= n 0) (begin (set! DiatonicInterval::userinput (EducationGames::GetAcceptableKeyInput DiatonicInterval::acceptable_list)) (set! DiatonicInterval::userinput (string->number DiatonicInterval::userinput)) (DiatonicInterval::intervalchosen DiatonicInterval::userinput) (DiatonicInterval::runtest DiatonicInterval::num-goes))))) (define (DiatonicInterval::plus) (set! DiatonicInterval::interval (+ DiatonicInterval::interval 1)) (if (> DiatonicInterval::interval 9) (set! DiatonicInterval::interval 9)) (d-DirectivePut-score-display "DiatonicInterval::GameInterval" (string-append "Interval: " (object->string DiatonicInterval::interval) ""))) (define (DiatonicInterval::minus) (set! DiatonicInterval::interval (- DiatonicInterval::interval 1)) (if (< DiatonicInterval::interval 2) (set! DiatonicInterval::interval 2)) (d-DirectivePut-score-display "DiatonicInterval::GameInterval" (string-append "Interval: " (object->string DiatonicInterval::interval) ""))) (define (DiatonicInterval::setInterval) (set! DiatonicInterval::interval (string->number (d-GetUserInput "Interval" "Give number of steps you want to name note over" (object->string DiatonicInterval::interval)))) (if (boolean? DiatonicInterval::interval) (set! DiatonicInterval::interval 8)) (if (< DiatonicInterval::interval 2) (set! DiatonicInterval::interval 2)) (if (> DiatonicInterval::interval 9) (set! DiatonicInterval::interval 9)) (d-DirectivePut-score-display "DiatonicInterval::GameInterval" (string-append "Interval: " (object->string DiatonicInterval::interval) ""))) (CreateButton "DiatonicInterval::GameMinus" "-") (d-SetDirectiveTagActionScript "DiatonicInterval::GameMinus" "(DiatonicInterval::minus)") (CreateButton "DiatonicInterval::GameInterval" (string-append "Interval: " (object->string DiatonicInterval::interval) "")) (d-SetDirectiveTagActionScript "DiatonicInterval::GameInterval" "(DiatonicInterval::setInterval)") (CreateButton "DiatonicInterval::GamePlus" "+") (d-SetDirectiveTagActionScript "DiatonicInterval::GamePlus" "(DiatonicInterval::plus)") (EducationGames::Chime) (d-CursorToNote (EducationalGames::middle_c_offset->lily DiatonicInterval::note_position)) (d-Insert2) (DiatonicInterval::offerNote) (set! DiatonicInterval::start (current-time)) (DiatonicInterval::runtest DiatonicInterval::num-goes) (if (not (EducationGames::Write_Scoreboard_File (EducationGames::ScoreboardFile "DiatonicInterval") DiatonicInterval::score)) (DiatonicInterval::GameOver) (DiatonicInterval::ScoreBoard) ) (EducationGames::Chime) ;;;;;;;;;;;;;;;;;;;;;;;;;; denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/StepSkipOrSame.xml0000644000000000000000000000013213135434035027127 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.453315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/StepSkipOrSame.xml0000644000175000017500000000061013135434035030775 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StepSkipOrSame <_label>Step, Skip, or Same? <_tooltip>%tests your ability to determine if note is moving by a step or skip denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/DiatonicInterval.xml0000644000000000000000000000013213135434035027515 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.453315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/DiatonicInterval.xml0000644000175000017500000000062513135434035031371 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DiatonicInterval <_label>Diatonic Interval Detection <_tooltip>%tests your ability to find the diatonic interval name between two notes denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/UpDownOrSame.scm0000644000000000000000000000013213135434035026563 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.473315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/UpDownOrSame.scm0000644000175000017500000001027113135434035030435 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;; ;;UpDownOrSame (define UpDownOrSame::score 0) (define UpDownOrSame::interval 2) (define UpDownOrSame::start (current-time)) (define UpDownOrSame::end (current-time)) (define UpDownOrSame::num-goes 30) (define UpDownOrSame::directionwas #t) (define UpDownOrSame::userinput #t) (define UpDownOrSame::acceptable_list (list "Up" "Down" "Right")) (define (UpDownOrSame::showscore) (d-DirectivePut-score-display "UpDownOrSame::GameScore" (string-append "Score: " (object->string UpDownOrSame::score) " in " (object->string (- UpDownOrSame::end UpDownOrSame::start)) " Secs."))) (define (UpDownOrSame::help) (d-InfoDialog "Click on the Up arrow if the note goes up, Down arrow if the note goes down, and Right arrow if the note stays the same") ) (define (UpDownOrSame::GameOver) (d-InfoDialog (string-append "Game Over\n" "Your Score = " (number->string UpDownOrSame::score))) ) (define (UpDownOrSame::ScoreBoard) (d-InfoDialog (EducationGames::Scoreboard_Pretty_Print (EducationGames::ScoreboardFile "UpDownOrSame"))) ) (CreateButton "UpDownOrSame::GameScore" "Score") (d-SetDirectiveTagActionScript "UpDownOrSame::GameScore" "(UpDownOrSame::ScoreBoard)") (CreateButton "UpDownOrSame::GameHelp" "Help") (d-SetDirectiveTagActionScript "UpDownOrSame::GameHelp" "(UpDownOrSame::help)") ;;;;;;;; the main function to run the test - just goes to end and places a note at a random height above the cursor, returning the cursor to where it was. (define (UpDownOrSame::offerNote) (if (>= UpDownOrSame::num-goes 0) (let ( (steps 0) (direction 0) ) (d-MoveToEnd) (set! steps (+ 1 (random UpDownOrSame::interval))) (set! direction (random 3)) (cond ((= direction 0) (EducationGames::shiftdown steps) (d-Insert2) (set! UpDownOrSame::directionwas "Down")) ((= direction 1) (EducationGames::shiftup steps) (d-Insert2) (set! UpDownOrSame::directionwas "Up")) ((= direction 2) (d-Insert2) (set! UpDownOrSame::directionwas "Same"))) (UpDownOrSame::showscore) (set! UpDownOrSame::num-goes (- UpDownOrSame::num-goes 1)) ) )) ;;;;;;;;; callback when user chooses a note (define (UpDownOrSame::directionchosen usernote) (begin (set! UpDownOrSame::end (current-time)) (d-MoveToEnd) (if (string=? UpDownOrSame::directionwas usernote) (begin (set! UpDownOrSame::score (+ UpDownOrSame::score 1)) (EducationGames::PlaceAnswerStatus "CheckMark")) (begin (set! UpDownOrSame::score (- UpDownOrSame::score 1)) (EducationGames::PlaceAnswerStatus "CrossSign"))) (UpDownOrSame::offerNote) )) ;;;;;;;; the main function to run the test (define UpDownOrSame::runtest (lambda (n) (if (>= n 0) (begin (set! UpDownOrSame::userinput (EducationGames::GetAcceptableKeyInput UpDownOrSame::acceptable_list)) (if (string=? UpDownOrSame::userinput "Right") (set! UpDownOrSame::userinput "Same")) (UpDownOrSame::directionchosen UpDownOrSame::userinput) (UpDownOrSame::runtest UpDownOrSame::num-goes))))) (EducationGames::Chime) (define (UpDownOrSame::createbuttons direction) (CreateButton (string-append "UpDownOrSame::" direction) (string-append " " direction "")) (d-SetDirectiveTagActionScript (string-append "UpDownOrSame::" direction) (string-append "(UpDownOrSame::directionchosen \"" direction "\")"))) (UpDownOrSame::createbuttons "Up") (UpDownOrSame::createbuttons "Down") (UpDownOrSame::createbuttons "Same") (EducationGames::shiftup 6) (d-Insert2) (UpDownOrSame::offerNote) (set! UpDownOrSame::start (current-time)) (UpDownOrSame::runtest UpDownOrSame::num-goes) (if (not (EducationGames::Write_Scoreboard_File (EducationGames::ScoreboardFile "UpDownOrSame") UpDownOrSame::score)) (UpDownOrSame::GameOver) (UpDownOrSame::ScoreBoard) ) (EducationGames::Chime) ;;;;;;;;;;;;;;;;;;;;;;;;;; denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/NoteNameSpeedTest.scm0000644000000000000000000000013213135434035027567 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.473315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/NoteNameSpeedTest.scm0000644000175000017500000001317313135434035031445 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;; ;;NoteNameSpeedTest NEW VERSION ;; tests note name recognition. (define NoteNameSpeedTest::score 0) (define NoteNameSpeedTest::note_position 6) ;0 = middle c (define NoteNameSpeedTest::note_highest 11) (define NoteNameSpeedTest::note_lowest 0) (define NoteNameSpeedTest::start 0) (define NoteNameSpeedTest::end 0) (define NoteNameSpeedTest::TimeLimit 120) (define NoteNameSpeedTest::notewas #f) (define NoteNameSpeedTest::LastNoteCorrect? #t) (define NoteNameSpeedTest::ExtraChances 2) (define NoteNameSpeedTest::acceptable_list (list "a" "b" "c" "d" "e" "f" "g")) (define (NoteNameSpeedTest::ElapsedTime) (- NoteNameSpeedTest::end NoteNameSpeedTest::start)) (define (NoteNameSpeedTest::showscore) (d-DirectivePut-score-display "NoteNameSpeedTest::GameScore" (string-append "Score: " (object->string NoteNameSpeedTest::score) " in " (object->string (NoteNameSpeedTest::ElapsedTime)) " Secs."))) (define (NoteNameSpeedTest::GameOverDialog) (d-InfoDialog (string-append "Game Over\n" "Your Score = " (number->string NoteNameSpeedTest::score)))) (define (NoteNameSpeedTest::ScoreBoard) (d-InfoDialog (EducationGames::Scoreboard_Pretty_Print (EducationGames::ScoreboardFile "NoteNameSpeedTest")))) ;#t give differnt note (define (NoteNameSpeedTest::AnotherChance?) (and (not NoteNameSpeedTest::LastNoteCorrect?) (>= NoteNameSpeedTest::ExtraChances 0))) ;;;;;;;;; callback when user chooses a note (define (NoteNameSpeedTest::notechosen usernote) (begin (set! NoteNameSpeedTest::end (current-time)) (d-MoveToEnd) (if (string=? NoteNameSpeedTest::notewas usernote) (begin (set! NoteNameSpeedTest::score (+ NoteNameSpeedTest::score 1)) (set! NoteNameSpeedTest::LastNoteCorrect? #t) (EducationGames::PlaceAnswerStatus "CheckMark")) (begin (set! NoteNameSpeedTest::score (- NoteNameSpeedTest::score 1)) (set! NoteNameSpeedTest::LastNoteCorrect? #f) (set! NoteNameSpeedTest::ExtraChances (- NoteNameSpeedTest::ExtraChances 1)) (EducationGames::PlaceAnswerStatus "CrossSign"))) (NoteNameSpeedTest::offerNote))) (define (NoteNameSpeedTest::print) (d-DeletePreviousObject) (SetHeaderField "title" "Note Naming Game") (SetHeaderField "subtitle" (string-append "Score was: " (object->string NoteNameSpeedTest::score) " in " (object->string (- NoteNameSpeedTest::end NoteNameSpeedTest::start)) " Seconds")) (SetHeaderField "piece" "user: anonymous") (DenemoPrintAllHeaders) (d-PrintPreview) (d-DirectiveDelete-header "Movement-title") (d-DirectiveDelete-header "Movement-subtitle") (d-DirectiveDelete-header "Movement-piece") (NoteNameSpeedTest::offerNote) (d-SetSaved)) (define (NoteNameSpeedTest::help) (d-InfoDialog "Identify the note that appears on the staff. Then hit the notename on the keyboard. Be quick because you have a time limit!!!")) ;;; (define (NoteNameSpeedTest::GetKeyBoardInput) (if (>= (NoteNameSpeedTest::ElapsedTime) NoteNameSpeedTest::TimeLimit) (begin (NoteNameSpeedTest::GameOver)) (begin (NoteNameSpeedTest::notechosen (EducationGames::GetAcceptableKeyInput NoteNameSpeedTest::acceptable_list)) (NoteNameSpeedTest::GetKeyBoardInput))) ) (define (NoteNameSpeedTest::go) (if (not (zero? NoteNameSpeedTest::score)) (let ((response #f)) (set! response (d-GetUserInput "Reset Score" "Do you want to reset your score" "y")) (if (equal? response "y") (set! NoteNameSpeedTest::score 0)))) (d-DeletePreviousObject) (EducationGames::Chime) (set! NoteNameSpeedTest::start (current-time)) (set! NoteNameSpeedTest::end (current-time)) (NoteNameSpeedTest::offerNote) (NoteNameSpeedTest::GetKeyBoardInput)) (define (NoteNameSpeedTest::offerNote) (let ( (outofrange? 0) (seed 0) ) (set! outofrange? (lambda () (or (> NoteNameSpeedTest::note_position NoteNameSpeedTest::note_highest) (> NoteNameSpeedTest::note_lowest NoteNameSpeedTest::note_position)) )) (set! seed (lambda () (if (= (random 2) 0) (set! NoteNameSpeedTest::note_position (+ NoteNameSpeedTest::note_position 1)) (set! NoteNameSpeedTest::note_position (- NoteNameSpeedTest::note_position 1))) (if (outofrange?) (seed)) )) (d-MoveToEnd) (if (NoteNameSpeedTest::AnotherChance?) (begin (d-Insert1)) (begin (seed) (d-CursorToNote (EducationalGames::middle_c_offset->lily NoteNameSpeedTest::note_position)) (d-Insert1) (set! NoteNameSpeedTest::ExtraChances 2))) (set! NoteNameSpeedTest::notewas (d-GetNoteName)) (NoteNameSpeedTest::showscore) )) (CreateButton "NoteNameSpeedTest::GameScore" "Score") (d-SetDirectiveTagActionScript "NoteNameSpeedTest::GameScore" "(NoteNameSpeedTest::ScoreBoard)") (CreateButton "NoteNameSpeedTest::GameHelp" "Help") (d-SetDirectiveTagActionScript "NoteNameSpeedTest::GameHelp" "(NoteNameSpeedTest::help)") (CreateButton "NoteNameSpeedTest::GameGo" "Start") (d-SetDirectiveTagActionScript "NoteNameSpeedTest::GameGo" "(NoteNameSpeedTest::go)") (CreateButton "NoteNameSpeedTest::GamePrint" "Print") (d-SetDirectiveTagActionScript "NoteNameSpeedTest::GamePrint" "(NoteNameSpeedTest::print)") (define (NoteNameSpeedTest::GameOver) (EducationGames::Chime) (if (not (EducationGames::Write_Scoreboard_File (EducationGames::ScoreboardFile "NoteNameSpeedTest") NoteNameSpeedTest::score)) (NoteNameSpeedTest::GameOverDialog) (NoteNameSpeedTest::ScoreBoard) )) denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/StepSkipOrSame.scm0000644000000000000000000000013213135434035027111 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.479981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/StepSkipOrSame.scm0000644000175000017500000001436413135434035030772 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;; ;;StepSkipOrSame ;;StepSkipOrSame ;; tests interval recognition. (define StepSkipOrSame::score 0) (define StepSkipOrSame::interval 3) (define StepSkipOrSame::start (current-time)) (define StepSkipOrSame::end (current-time)) (define StepSkipOrSame::num-goes 30) (define StepSkipOrSame::intervalwas #t) (define StepSkipOrSame::acceptable_list (list "a" "k" "t")) (define StepSkipOrSame::stepstring #t) (define StepSkipOrSame::userinput #t) (define StepSkipOrSame::direction 0) (define (StepSkipOrSame::showscore) (d-DirectivePut-score-display "StepSkipOrSame::GameScore" (string-append "Score: " (object->string StepSkipOrSame::score) " in " (object->string (- StepSkipOrSame::end StepSkipOrSame::start)) " Secs."))) (define (StepSkipOrSame::help) (d-InfoDialog "Is the music moving by a step, skip or staying the same. If the note is going up by skip hit the *k* key. If it is moving by step hit the *t* key. If it is staying the same hit the *a* key") ) (define (StepSkipOrSame::GameOver) (d-InfoDialog (string-append "Game Over\n" "Your Score = " (number->string StepSkipOrSame::score))) ) (define (StepSkipOrSame::ScoreBoard) (d-InfoDialog (EducationGames::Scoreboard_Pretty_Print (EducationGames::ScoreboardFile "StepSkipOrSame"))) ) (CreateButton "StepSkipOrSame::GameScore" "Score") (d-SetDirectiveTagActionScript "StepSkipOrSame::GameScore" "(StepSkipOrSame::ScoreBoard)") (CreateButton "StepSkipOrSame::GameHelp" "Help") (d-SetDirectiveTagActionScript "StepSkipOrSame::GameHelp" "(StepSkipOrSame::help)") ;;;;;;;; the main function to run the test - just goes to end and places a note at a random height above the cursor, returning the cursor to where it was. (define (StepSkipOrSame::offerNote) (if (>= StepSkipOrSame::num-goes 0) (let ( (steps 0) ) (d-MoveToEnd) (set! steps (random StepSkipOrSame::interval)) (if (= StepSkipOrSame::direction 0) (begin (EducationGames::shiftup steps) (set! StepSkipOrSame::direction 1)) (begin (EducationGames::shiftdown steps) (set! StepSkipOrSame::direction 0))) (d-Insert2) (if (= steps 0) (begin (set! StepSkipOrSame::stepstring "a"))) (if (= steps 1) (begin (set! StepSkipOrSame::stepstring "t"))) (if (>= steps 2) (begin (set! StepSkipOrSame::stepstring "k"))) (StepSkipOrSame::showscore) (set! StepSkipOrSame::num-goes (- StepSkipOrSame::num-goes 1)) ) )) ;;;;;;;;; callback when user chooses a note (define (StepSkipOrSame::intervalchosen interval) (begin (set! StepSkipOrSame::end (current-time)) (d-MoveToEnd) (if (string=? StepSkipOrSame::stepstring interval) (begin (set! StepSkipOrSame::score (+ StepSkipOrSame::score 1)) (EducationGames::PlaceAnswerStatus "CheckMark")) (begin (set! StepSkipOrSame::score (- StepSkipOrSame::score 1)) (EducationGames::PlaceAnswerStatus "CrossSign"))) (StepSkipOrSame::offerNote) )) ;;;;;;;; the main function to run the test (define StepSkipOrSame::runtest (lambda (n) (if (>= n 0) (begin (set! StepSkipOrSame::userinput (EducationGames::GetAcceptableKeyInput StepSkipOrSame::acceptable_list)) (StepSkipOrSame::intervalchosen StepSkipOrSame::userinput) (StepSkipOrSame::runtest StepSkipOrSame::num-goes))))) (define (StepSkipOrSame::plus) (set! StepSkipOrSame::interval (+ StepSkipOrSame::interval 1)) (if (> StepSkipOrSame::interval 32) (set! StepSkipOrSame::interval 32)) (d-DirectivePut-score-display "StepSkipOrSame::GameInterval" (string-append "Interval: " (object->string StepSkipOrSame::interval) ""))) (define (StepSkipOrSame::minus) (set! StepSkipOrSame::interval (- StepSkipOrSame::interval 1)) (if (< StepSkipOrSame::interval 2) (set! StepSkipOrSame::interval 2)) (d-DirectivePut-score-display "StepSkipOrSame::GameInterval" (string-append "Interval: " (object->string StepSkipOrSame::interval) ""))) (define (StepSkipOrSame::setInterval) (set! StepSkipOrSame::interval (string->number (d-GetUserInput "Interval" "Give number of steps you want to name note over" (object->string StepSkipOrSame::interval)))) (if (boolean? StepSkipOrSame::interval) (set! StepSkipOrSame::interval 8)) (if (< StepSkipOrSame::interval 2) (set! StepSkipOrSame::interval 2)) (if (> StepSkipOrSame::interval 32) (set! StepSkipOrSame::interval 32)) (d-DirectivePut-score-display "StepSkipOrSame::GameInterval" (string-append "Interval: " (object->string StepSkipOrSame::interval) ""))) (CreateButton "StepSkipOrSame::GameMinus" "-") (d-SetDirectiveTagActionScript "StepSkipOrSame::GameMinus" "(StepSkipOrSame::minus)") (CreateButton "StepSkipOrSame::GameInterval" (string-append "Interval: " (object->string StepSkipOrSame::interval) "")) (d-SetDirectiveTagActionScript "StepSkipOrSame::GameInterval" "(StepSkipOrSame::setInterval)") (CreateButton "StepSkipOrSame::GamePlus" "+") (d-SetDirectiveTagActionScript "StepSkipOrSame::GamePlus" "(StepSkipOrSame::plus)") (define (StepSkipOrSame::createbuttons position ustring) (CreateButton (string-append "StepSkipOrSame::" position) (string-append " " position "")) (d-SetDirectiveTagActionScript (string-append "StepSkipOrSame::" position) (string-append "(StepSkipOrSame::intervalchosen \"" ustring "\")"))) (StepSkipOrSame::createbuttons "step" "t") (StepSkipOrSame::createbuttons "skip" "k") (StepSkipOrSame::createbuttons "same" "a") (EducationGames::Chime) (EducationGames::shiftup 6) (d-Insert2) (StepSkipOrSame::offerNote) (set! StepSkipOrSame::start (current-time)) (StepSkipOrSame::runtest StepSkipOrSame::num-goes) (if (not (EducationGames::Write_Scoreboard_File (EducationGames::ScoreboardFile "StepSkipOrSame") StepSkipOrSame::score)) (StepSkipOrSame::GameOver) (StepSkipOrSame::ScoreBoard) ) (EducationGames::Chime) ;;;;;;;;;;;;;;;;;;;;;;;;;; denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/SpaceNumber.scm0000644000000000000000000000013213135434035026444 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.486648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/SpaceNumber.scm0000644000175000017500000000613213135434035030317 0ustar00jjbenhamjjbenham00000000000000(define SpaceNumber::Scale (cons "1 2 3 4" "f' a' c'' e''")) (define SpaceNumber::notelist '()) (define SpaceNumber::buttonlist '()) (define SpaceNumber::score 0) (define SpaceNumber::CurrentNote "") (define SpaceNumber::CurrentNoteNum 0) (define SpaceNumber::NoteIndex 0) (let ((time (gettimeofday))) (set! *random-state* (seed->random-state (+ (car time) (cdr time))))) (define (SpaceNumber::gotoEnd) (d-CursorRight) (if (d-NextObject) (SpaceNumber::gotoEnd) (d-CursorRight))) (define (SpaceNumber::NewNote) (SpaceNumber::gotoEnd) (set! SpaceNumber::CurrentNoteNum (random (length SpaceNumber::notelist))) (set! SpaceNumber::CurrentNote (list-ref SpaceNumber::notelist SpaceNumber::CurrentNoteNum)) (d-CursorToNote SpaceNumber::CurrentNote) (d-Insert0) ) (define (SpaceNumber::showscore) (d-DirectivePut-score-display "SpaceNumber::GameScore" (string-append "Score: " (number->string SpaceNumber::score)))) ;TODO perhaps inherit this from EducationGames (define (SpaceNumber::PlaceAnswerStatus gfx) (begin (d-DirectivePut-note-minpixels "SpaceNumber::tick" 30) (d-DirectivePut-note-gx "SpaceNumber::tick" -10) (d-DirectivePut-note-gy "SpaceNumber::tick" 40) (d-DirectivePut-note-graphic "SpaceNumber::tick" gfx))) (define (SpaceNumber::OfferChord) (SpaceNumber::showscore) (SpaceNumber::NewNote) ) (define (SpaceNumber::Go) (SpaceNumber::showscore) (SpaceNumber::gotoEnd) (SpaceNumber::OfferChord) ) (define (SpaceNumber::notechosen NoteListPosition) (if (= SpaceNumber::CurrentNoteNum (string->number NoteListPosition)) (begin (set! SpaceNumber::score (+ SpaceNumber::score 1)) (SpaceNumber::PlaceAnswerStatus "CheckMark") ) (begin (set! SpaceNumber::score (- SpaceNumber::score 1)) (SpaceNumber::PlaceAnswerStatus "CrossSign") )) (SpaceNumber::OfferChord) ) (define (SpaceNumber::createbutton note) (CreateButton (string-append "SpaceNumber::" note) (string-append " " note "")) (d-SetDirectiveTagActionScript (string-append "SpaceNumber::" note) (string-append "(SpaceNumber::notechosen \"" (number->string SpaceNumber::NoteIndex) "\")")) (set! SpaceNumber::NoteIndex (+ SpaceNumber::NoteIndex 1)) ) (define (SpaceNumber::help) (d-InfoDialog "After you see the note appear on the screen hit the number that corresponds with the line that it is on.") ) ;;;;main procedure to call for SpaceNumber (define (SpaceNumber::SpaceNumbers Scale) (set! SpaceNumber::Scale Scale) (set! SpaceNumber::buttonlist (string-split (car SpaceNumber::Scale) #\space)) (set! SpaceNumber::notelist (string-split (cdr SpaceNumber::Scale) #\space)) (CreateButton "SpaceNumber::GameScore" "Click to start") (d-SetDirectiveTagActionScript "SpaceNumber::GameScore" "(SpaceNumber::Go)") (CreateButton "SpaceNumber::GameHelp" "Help") (d-SetDirectiveTagActionScript "SpaceNumber::GameHelp" "(SpaceNumber::help)") (map SpaceNumber::createbutton SpaceNumber::buttonlist) ) (SpaceNumber::SpaceNumbers SpaceNumber::Scale) denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/LineNumber.scm0000644000000000000000000000013213135434035026300 xustar0030 mtime=1500919837.956648473 30 atime=1500919931.486648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/LineNumber.scm0000644000175000017500000000603313135434035030153 0ustar00jjbenhamjjbenham00000000000000(define LineNumber::Scale (cons "1 2 3 4 5" "e' g' b' d'' f''")) (define LineNumber::notelist '()) (define LineNumber::buttonlist '()) (define LineNumber::score 0) (define LineNumber::CurrentNote "") (define LineNumber::CurrentNoteNum 0) (define LineNumber::NoteIndex 0) (let ((time (gettimeofday))) (set! *random-state* (seed->random-state (+ (car time) (cdr time))))) (define (LineNumber::gotoEnd) (d-CursorRight) (if (d-NextObject) (LineNumber::gotoEnd) (d-CursorRight))) (define (LineNumber::NewNote) (LineNumber::gotoEnd) (set! LineNumber::CurrentNoteNum (random (length LineNumber::notelist))) (set! LineNumber::CurrentNote (list-ref LineNumber::notelist LineNumber::CurrentNoteNum)) (d-CursorToNote LineNumber::CurrentNote) (d-Insert0) ) (define (LineNumber::showscore) (d-DirectivePut-score-display "LineNumber::GameScore" (string-append "Score: " (number->string LineNumber::score)))) ;TODO perhaps inherit this from EducationGames (define (LineNumber::PlaceAnswerStatus gfx) (begin (d-DirectivePut-note-minpixels "LineNumber::tick" 30) (d-DirectivePut-note-gx "LineNumber::tick" -10) (d-DirectivePut-note-gy "LineNumber::tick" 40) (d-DirectivePut-note-graphic "LineNumber::tick" gfx))) (define (LineNumber::OfferChord) (LineNumber::showscore) (LineNumber::NewNote) ) (define (LineNumber::Go) (LineNumber::showscore) (LineNumber::gotoEnd) (LineNumber::OfferChord) ) (define (LineNumber::notechosen NoteListPosition) (if (= LineNumber::CurrentNoteNum (string->number NoteListPosition)) (begin (set! LineNumber::score (+ LineNumber::score 1)) (LineNumber::PlaceAnswerStatus "CheckMark") ) (begin (set! LineNumber::score (- LineNumber::score 1)) (LineNumber::PlaceAnswerStatus "CrossSign") )) (LineNumber::OfferChord) ) (define (LineNumber::createbutton note) (CreateButton (string-append "LineNumber::" note) (string-append " " note "")) (d-SetDirectiveTagActionScript (string-append "LineNumber::" note) (string-append "(LineNumber::notechosen \"" (number->string LineNumber::NoteIndex) "\")")) (set! LineNumber::NoteIndex (+ LineNumber::NoteIndex 1)) ) (define (LineNumber::help) (d-InfoDialog "After you see the note appear on the screen hit the number that corresponds with the line that it is on.") ) ;;;;main procedure to call for LineNumber (define (LineNumber::LineNumbers Scale) (set! LineNumber::Scale Scale) (set! LineNumber::buttonlist (string-split (car LineNumber::Scale) #\space)) (set! LineNumber::notelist (string-split (cdr LineNumber::Scale) #\space)) (CreateButton "LineNumber::GameScore" "Click to start") (d-SetDirectiveTagActionScript "LineNumber::GameScore" "(LineNumber::Go)") (CreateButton "LineNumber::GameHelp" "Help") (d-SetDirectiveTagActionScript "LineNumber::GameHelp" "(LineNumber::help)") (map LineNumber::createbutton LineNumber::buttonlist) ) (LineNumber::LineNumbers LineNumber::Scale) denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/LineOrSpace.xml0000644000000000000000000000013213135434035026422 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.499981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/LineOrSpace.xml0000644000175000017500000000061513135434035030275 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LineOrSpace <_label>Line and Space Recognition <_tooltip>%tests your ability to recognize the difference between line and space denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/init.scm0000644000000000000000000000013213135434035025203 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.499981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/init.scm0000644000175000017500000001220313135434035027052 0ustar00jjbenhamjjbenham00000000000000(use-modules (ice-9 rdelim)) ;; set the random seed up using time of day (let ((time (gettimeofday))) (set! *random-state* (seed->random-state (+ (car time) (cdr time))))) (define (EducationGames::gotoEnd) (d-CursorRight) (if (d-NextObject) (EducationGames::gotoEnd) (d-CursorRight))) (define (EducationGames::gotoLastObject) (d-CursorRight) (if (d-NextObject) (ChordComparison::gotoLastObject))) (define EducationGames::shiftup (lambda (n) (if (> n 0) (begin (d-CursorUp) (EducationGames::shiftup (- n 1)))))) (define EducationGames::shiftdown (lambda (n) (if (> n 0) (begin (d-CursorDown) (EducationGames::shiftdown (- n 1)))))) (define (EducationGames::PlaceAnswerStatus gfx) (begin (d-DirectivePut-note-minpixels "EducationGames::tick" 30) (d-DirectivePut-note-gx "EducationGames::tick" -10) (d-DirectivePut-note-gy "EducationGames::tick" 40) (d-DirectivePut-note-graphic "EducationGames::tick" gfx))) ;;; Returns a lilypond string when givin a integer middle_c_offset ;;; 0 returns c' 1, returns d', -1 returns b (define (EducationalGames::middle_c_offset->lily num) (let ( (octave 0) (note 0) (anotenames '("c" "d" "e" "f" "g" "a" "b")) (lily "") (pad 0) ) (if (>= num 0) (set! octave (+ (quotient num 7) 1)) (set! octave (quotient (+ num 1) 7)) ) (set! note (modulo num 7)) (set! lily (list-ref anotenames note)) (set! pad (+ (abs octave) 1)) (if (> octave 0) (string-pad-right lily pad #\') (string-pad-right lily pad #\,)) )) ;;;; Read File ;;;; (define (EducationGames::ScoreboardFile game_name) (string-append (d-LocateDotDenemo) "/" game_name "_scoreboard") ) (define EducationGames::ReadScoreboard (lambda (scoreboard_file) (let ( (load_scoretable 0) (in_port 0) (scoretable '()) (higherscore 0)) (set! in_port (open-input-file scoreboard_file)) (set! load_scoretable (lambda () (let ( (line "") (uname 0) (uscore 0) ) (set! line (read-line in_port)) (if (not (eof-object? line)) (begin (set! line (string-split line #\:)) (set! uname (car line)) (set! uscore (string->number (cadr line))) (set! scoretable (acons uname uscore scoretable)) (load_scoretable)))))) (set! higherscore (lambda (paira pairb) (> (cdr paira) (cdr pairb)))) (load_scoretable) ;sort table (set! scoretable (sort scoretable higherscore)) scoretable ))) (define EducationGames::Scoreboard_Pretty_Print (lambda (scoreboard_file) (let ( (loop 0) (output_string "") ) (set! loop (lambda (score) (set! output_string (string-append output_string (string-pad-right (car score) 15 #\space) "\t\t" (number->string (cdr score)) "\n")) )) (map loop (EducationGames::ReadScoreboard scoreboard_file)) output_string ))) ;;;; Write File ;;;; (define EducationGames::Write_Scoreboard_File (lambda (scoreboard_file score) (let ( (scorefile 0) (write_user_score 0) (scoretable '()) (getusername 0) (TopTen? 0) (OnlyTenInList 0) (AboveLowestScore? 0) ) (set! write_user_score (lambda (score) (display (car score) scorefile) (write-char #\: scorefile) (display (cdr score) scorefile) (newline scorefile) )) (set! getusername (lambda () (let ( (username "") ) (set! username (d-GetUserInput "****Congratulations!!!!****" "Your score has made it to the top 10!!!\nEnter your name here\n" "")) username ))) (set! AboveLowestScore? (lambda () (let ( (findlowest 0) (lowest 0) ) (set! findlowest (lambda (uscore) (if (< (cdr uscore) score) (set! lowest (cdr uscore))))) (map findlowest scoretable) (> score lowest) ))) (set! TopTen? (lambda () (or (< (length scoretable) 10) (AboveLowestScore?)) )) (set! OnlyTenInList (lambda (lst) (let ( (list_truncate 0) (TheList '()) ) (set! list_truncate (lambda (n) (if (< (length TheList) 10) (set! TheList (append TheList (cons n '()))) ))) (map list_truncate lst) TheList ))) (if (file-exists? scoreboard_file) (set! scoretable (EducationGames::ReadScoreboard scoreboard_file))) (display "TopTen? =") (display (TopTen?)) (newline) (if (TopTen?) (begin (set! scorefile (open-output-file scoreboard_file)) (set! scoretable (acons (getusername) score scoretable)) ;;truncate scoretable (set! scoretable (OnlyTenInList scoretable)) (map write_user_score scoretable) (close-output-port scorefile)#t)#f) ))) (define (EducationGames::GetAcceptableKeyInput acceptable_list) (let ( (input 0) (getinput 0) ) (set! getinput (lambda () (set! input (d-GetKeypress)) (if (not (or (boolean? input) (member input acceptable_list))) (getinput)) )) (getinput) input )) (define (EducationGames::Chime) (d-PlayMidiKey #xF03001) (d-PlayMidiKey #xF02A01) (d-PlayMidiKey #xF04001)) denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/SpaceNumber.xml0000644000000000000000000000013213135434035026462 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.513315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/SpaceNumber.xml0000644000175000017500000000063513135434035030337 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LineNumber SpaceNumber <_label>Identify Space Number <_tooltip>Identify the space number in which the note is display on denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/ReadingNoteNames.scm0000644000000000000000000000013213135434035027423 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.513315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/ReadingNoteNames.scm0000644000175000017500000001774413135434035031311 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;; ;;ReadingNoteNames NEW VERSION ;; tests note name recognition. (define ReadingNoteNames::score 0) (define ReadingNoteNames::interval 8) (define ReadingNoteNames::start (current-time)) (define ReadingNoteNames::end (current-time)) (define ReadingNoteNames::note_position 0) (define ReadingNoteNames::notewas #f) (define ReadingNoteNames::LastNoteCorrect? #t) (define ReadingNoteNames::ExtraChances 2) (define (ReadingNoteNames::showscore) (d-DirectivePut-score-display "ReadingNoteNames::GameScore" (string-append "Score: " (object->string ReadingNoteNames::score) " in " (object->string (- ReadingNoteNames::end ReadingNoteNames::start)) " Secs."))) ;#t give differnt note (define (ReadingNoteNames::AnotherChance?) (and (not ReadingNoteNames::LastNoteCorrect?) (>= ReadingNoteNames::ExtraChances 0))) ;;;;;;;;; callback when user chooses a note (define (ReadingNoteNames::notechosen usernote) (begin (set! ReadingNoteNames::end (current-time)) ;(let gotoEnd () (if (d-NextObject) (gotoEnd))) (EducationGames::gotoEnd) (if (string=? ReadingNoteNames::notewas usernote) (begin (set! ReadingNoteNames::score (+ ReadingNoteNames::score 1)) (set! ReadingNoteNames::LastNoteCorrect? #t) (EducationGames::PlaceAnswerStatus "CheckMark")) (begin (set! ReadingNoteNames::score (- ReadingNoteNames::score 1)) (set! ReadingNoteNames::LastNoteCorrect? #f) (set! ReadingNoteNames::ExtraChances (- ReadingNoteNames::ExtraChances 1)) (EducationGames::PlaceAnswerStatus "CrossSign")) ) (ReadingNoteNames::offerNote))) (define (ReadingNoteNames::print) (d-DeletePreviousObject) (SetHeaderField "title" "Note Naming Game") (SetHeaderField "subtitle" (string-append "Score was: " (object->string ReadingNoteNames::score) " in " (object->string (- ReadingNoteNames::end ReadingNoteNames::start)) " Seconds")) (SetHeaderField "piece" "user: anonymous") (DenemoPrintAllHeaders) (d-PrintPreview) (d-DirectiveDelete-header "Movement-title") (d-DirectiveDelete-header "Movement-subtitle") (d-DirectiveDelete-header "Movement-piece") (ReadingNoteNames::offerNote) (d-SetSaved)) (define (ReadingNoteNames::quit) (d-Close)) (define (ReadingNoteNames::help) (d-InfoDialog "Click on the bottom of the range of notes you want to learn. Use the Interval button to choose how many notes above that you want to try. Print out your score when you have finished.") ) (define (ReadingNoteNames::plus) (set! ReadingNoteNames::interval (+ ReadingNoteNames::interval 1)) (if (> ReadingNoteNames::interval 32) (set! ReadingNoteNames::interval 32)) (d-DirectivePut-score-display "ReadingNoteNames::GameInterval" (string-append "Interval: " (object->string ReadingNoteNames::interval) ""))) (define (ReadingNoteNames::minus) (set! ReadingNoteNames::interval (- ReadingNoteNames::interval 1)) (if (< ReadingNoteNames::interval 2) (set! ReadingNoteNames::interval 2)) (d-DirectivePut-score-display "ReadingNoteNames::GameInterval" (string-append "Interval: " (object->string ReadingNoteNames::interval) ""))) (define (ReadingNoteNames::setInterval) (set! ReadingNoteNames::interval (string->number (d-GetUserInput "Interval" "Give number of steps you want to name note over" (object->string ReadingNoteNames::interval)))) (if (boolean? ReadingNoteNames::interval) (set! ReadingNoteNames::interval 8)) (if (< ReadingNoteNames::interval 2) (set! ReadingNoteNames::interval 2)) (if (> ReadingNoteNames::interval 32) (set! ReadingNoteNames::interval 32)) (d-DirectivePut-score-display "ReadingNoteNames::GameInterval" (string-append "Interval: " (object->string ReadingNoteNames::interval) ""))) ;;; (define (ReadingNoteNames::go) (if (not (zero? ReadingNoteNames::score)) (let ((response #f)) (set! response (d-GetUserInput "Reset Score" "Do you want to reset your score" "y")) (if (equal? response "y") (begin (set! ReadingNoteNames::start (current-time)) (set! ReadingNoteNames::end (current-time)) (set! ReadingNoteNames::score 0))))) (d-DeletePreviousObject) (ReadingNoteNames::offerNote)) ;;;;;;;; the main function to run the test - just goes to end and places a note at a random position relative to ReadingNoteNames::note_position. (define (ReadingNoteNames::offerNote) (if #t (let ( (usernote #t) (steps 0) ) (EducationGames::gotoEnd) (if (ReadingNoteNames::AnotherChance?) (begin ;(d-CursorToNote (EducationalGames::middle_c_offset->lily ReadingNoteNames::note_position)) (d-Insert2)) (begin (set! steps (+ 1 (random ReadingNoteNames::interval))) ;(EducationGames::shiftup steps) (set! ReadingNoteNames::note_position (+ ReadingNoteNames::note_position steps)) (d-CursorToNote (EducationalGames::middle_c_offset->lily ReadingNoteNames::note_position)) (d-Insert2) (set! ReadingNoteNames::ExtraChances 2))) (set! ReadingNoteNames::notewas (d-GetNoteName)) (ReadingNoteNames::showscore) (if ReadingNoteNames::LastNoteCorrect? (set! ReadingNoteNames::note_position (- ReadingNoteNames::note_position steps))) ) )) (EducationGames::Chime) (d-New) (d-InitialClef) (let ((clef (d-GetPrevailingClef))) (cond ((equal? clef "Alto") (set! ReadingNoteNames::note_position -6)) ((equal? clef "Tenor") (set! ReadingNoteNames::note_position -8)) ((equal? clef "Bass") (set! ReadingNoteNames::note_position -11)) ((equal? clef "French") (set! ReadingNoteNames::note_position 3)) )) (d-DestroyButtons) (CreateButton "ReadingNoteNames::GameScore" "Click to start") (CreateButton "ReadingNoteNames::GameHelp" "Help") (d-SetDirectiveTagActionScript "ReadingNoteNames::GameHelp" "(ReadingNoteNames::help)") (CreateButton "ReadingNoteNames::GamePlus" "+") (d-SetDirectiveTagActionScript "ReadingNoteNames::GamePlus" "(ReadingNoteNames::plus)") (CreateButton "ReadingNoteNames::GameInterval" (string-append "Interval: " (object->string ReadingNoteNames::interval) "")) (d-SetDirectiveTagActionScript "ReadingNoteNames::GameInterval" "(ReadingNoteNames::setInterval)") (CreateButton "ReadingNoteNames::GameMinus" "-") (d-SetDirectiveTagActionScript "ReadingNoteNames::GameMinus" "(ReadingNoteNames::minus)") (CreateButton "ReadingNoteNames::GameGo" "Re-start") (d-SetDirectiveTagActionScript "ReadingNoteNames::GameGo" "(ReadingNoteNames::go)") (d-SetDirectiveTagActionScript "ReadingNoteNames::GameScore" "(ReadingNoteNames::go)") (CreateButton "ReadingNoteNames::GamePrint" "Print") (d-SetDirectiveTagActionScript "ReadingNoteNames::GamePrint" "(ReadingNoteNames::print)") (CreateButton "ReadingNoteNames::Close" "Quit") (d-SetDirectiveTagActionScript "ReadingNoteNames::Close" "(ReadingNoteNames::quit)") (define (ReadingNoteNames::createbuttons note) (CreateButton (string-append "ReadingNoteNames::" note) (string-append " " note "")) (d-SetDirectiveTagActionScript (string-append "ReadingNoteNames::" note) (string-append "(ReadingNoteNames::notechosen \"" note "\")"))) (CreateButton "ReadingNoteNames::spacer1" " ") (d-SetDirectiveTagActionScript "ReadingNoteNames::spacer1" "(d-PlayMidiKey #xF03001)") (ReadingNoteNames::createbuttons "a") (ReadingNoteNames::createbuttons "b") (ReadingNoteNames::createbuttons "c") (ReadingNoteNames::createbuttons "d") (ReadingNoteNames::createbuttons "e") (ReadingNoteNames::createbuttons "f") (ReadingNoteNames::createbuttons "g") (CreateButton "ReadingNoteNames::spacer2" " ") (d-SetDirectiveTagActionScript "ReadingNoteNames::spacer2" "(d-PlayMidiKey #xF03001)") (EducationGames::Chime) denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/PaxHeaders.19168/ReadingNoteNamesSolfeg0000644000000000000000000000013213135434035030002 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.523315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/Educational/Note-Reading/ReadingNoteNamesSolfege.scm0000644000175000017500000002112213135434035032577 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;; ;;ReadingNoteNamesSolfege NEW VERSION ;; tests solfege note name recognition. (define ReadingNoteNamesSolfege::score 0) (define ReadingNoteNamesSolfege::interval 8) (define ReadingNoteNamesSolfege::start (current-time)) (define ReadingNoteNamesSolfege::end (current-time)) (define ReadingNoteNamesSolfege::note_position 0) (define ReadingNoteNamesSolfege::notewas #f) (define ReadingNoteNamesSolfege::LastNoteCorrect? #t) (define ReadingNoteNamesSolfege::ExtraChances 2) (define (ReadingNoteNamesSolfege::showscore) (d-DirectivePut-score-display "ReadingNoteNamesSolfege::GameScore" (string-append "Score: " (object->string ReadingNoteNamesSolfege::score) " in " (object->string (- ReadingNoteNamesSolfege::end ReadingNoteNamesSolfege::start)) " Secs."))) ;#t give differnt note (define (ReadingNoteNamesSolfege::AnotherChance?) (and (not ReadingNoteNamesSolfege::LastNoteCorrect?) (>= ReadingNoteNamesSolfege::ExtraChances 0))) ;;;;;;;;; callback when user chooses a note (define (ReadingNoteNamesSolfege::notechosen usernote) (begin (set! ReadingNoteNamesSolfege::end (current-time)) ;(let gotoEnd () (if (d-NextObject) (gotoEnd))) (EducationGames::gotoEnd) (if (string=? ReadingNoteNamesSolfege::notewas usernote) (begin (set! ReadingNoteNamesSolfege::score (+ ReadingNoteNamesSolfege::score 1)) (set! ReadingNoteNamesSolfege::LastNoteCorrect? #t) (EducationGames::PlaceAnswerStatus "CheckMark")) (begin (set! ReadingNoteNamesSolfege::score (- ReadingNoteNamesSolfege::score 1)) (set! ReadingNoteNamesSolfege::LastNoteCorrect? #f) (set! ReadingNoteNamesSolfege::ExtraChances (- ReadingNoteNamesSolfege::ExtraChances 1)) (EducationGames::PlaceAnswerStatus "CrossSign")) ) (ReadingNoteNamesSolfege::offerNote))) (define (ReadingNoteNamesSolfege::print) (d-DeletePreviousObject) (SetHeaderField "title" "Note Naming Game") (SetHeaderField "subtitle" (string-append "Score was: " (object->string ReadingNoteNamesSolfege::score) " in " (object->string (- ReadingNoteNamesSolfege::end ReadingNoteNamesSolfege::start)) " Seconds")) (SetHeaderField "piece" "user: anonymous") (DenemoPrintAllHeaders) (d-PrintPreview) (d-DirectiveDelete-header "Movement-title") (d-DirectiveDelete-header "Movement-subtitle") (d-DirectiveDelete-header "Movement-piece") (ReadingNoteNamesSolfege::offerNote) (d-SetSaved)) (define (ReadingNoteNamesSolfege::quit) (d-Close)) (define (ReadingNoteNamesSolfege::help) (d-InfoDialog "Click on the bottom of the range of notes you want to learn. Use the Interval button to choose how many notes above that you want to try. Print out your score when you have finished.") ) (define (ReadingNoteNamesSolfege::plus) (set! ReadingNoteNamesSolfege::interval (+ ReadingNoteNamesSolfege::interval 1)) (if (> ReadingNoteNamesSolfege::interval 32) (set! ReadingNoteNamesSolfege::interval 32)) (d-DirectivePut-score-display "ReadingNoteNamesSolfege::GameInterval" (string-append "Interval: " (object->string ReadingNoteNamesSolfege::interval) ""))) (define (ReadingNoteNamesSolfege::minus) (set! ReadingNoteNamesSolfege::interval (- ReadingNoteNamesSolfege::interval 1)) (if (< ReadingNoteNamesSolfege::interval 2) (set! ReadingNoteNamesSolfege::interval 2)) (d-DirectivePut-score-display "ReadingNoteNamesSolfege::GameInterval" (string-append "Interval: " (object->string ReadingNoteNamesSolfege::interval) ""))) (define (ReadingNoteNamesSolfege::setInterval) (set! ReadingNoteNamesSolfege::interval (string->number (d-GetUserInput "Interval" "Give number of steps you want to name note over" (object->string ReadingNoteNamesSolfege::interval)))) (if (boolean? ReadingNoteNamesSolfege::interval) (set! ReadingNoteNamesSolfege::interval 8)) (if (< ReadingNoteNamesSolfege::interval 2) (set! ReadingNoteNamesSolfege::interval 2)) (if (> ReadingNoteNamesSolfege::interval 32) (set! ReadingNoteNamesSolfege::interval 32)) (d-DirectivePut-score-display "ReadingNoteNamesSolfege::GameInterval" (string-append "Interval: " (object->string ReadingNoteNamesSolfege::interval) ""))) ;;; (define (ReadingNoteNamesSolfege::go) (if (not (zero? ReadingNoteNamesSolfege::score)) (let ((response #f)) (set! response (d-GetUserInput "Reset Score" "Do you want to reset your score" "y")) (if (equal? response "y") (begin (set! ReadingNoteNamesSolfege::start (current-time)) (set! ReadingNoteNamesSolfege::end (current-time)) (set! ReadingNoteNamesSolfege::score 0))))) (d-DeletePreviousObject) (ReadingNoteNamesSolfege::offerNote)) ;;;;;;;; the main function to run the test - just goes to end and places a note at a random height above the cursor, returning the cursor to where it was. (define (ReadingNoteNamesSolfege::offerNote) (if #t (let ( (usernote #t) (steps 0) ) ;; (d-GoToEnd) ;(let gotoEnd () (if (d-NextObject) (gotoEnd))) (EducationGames::gotoEnd) (if (ReadingNoteNamesSolfege::AnotherChance?) (begin ;(d-CursorToNote (EducationalGames::middle_c_offset->lily ReadingNoteNamesSolfege::note_position)) (d-Insert2)) (begin (set! steps (+ 1 (random ReadingNoteNamesSolfege::interval))) ;(EducationGames::shiftup steps) (set! ReadingNoteNamesSolfege::note_position (+ ReadingNoteNamesSolfege::note_position steps)) (d-CursorToNote (EducationalGames::middle_c_offset->lily ReadingNoteNamesSolfege::note_position)) (d-Insert2) (set! ReadingNoteNamesSolfege::ExtraChances 2))) (set! ReadingNoteNamesSolfege::notewas (d-GetNoteName)) (ReadingNoteNamesSolfege::showscore) ;(EducationGames::shiftdown steps) (if ReadingNoteNamesSolfege::LastNoteCorrect? (set! ReadingNoteNamesSolfege::note_position (- ReadingNoteNamesSolfege::note_position steps))) ) )) (EducationGames::Chime) (d-New) (CreateButton "ReadingNoteNamesSolfege::GameScore" "Click to start") (CreateButton "ReadingNoteNamesSolfege::GameHelp" "Help") (d-SetDirectiveTagActionScript "ReadingNoteNamesSolfege::GameHelp" "(ReadingNoteNamesSolfege::help)") (CreateButton "ReadingNoteNamesSolfege::GamePlus" "+") (d-SetDirectiveTagActionScript "ReadingNoteNamesSolfege::GamePlus" "(ReadingNoteNamesSolfege::plus)") (CreateButton "ReadingNoteNamesSolfege::GameInterval" (string-append "Interval: " (object->string ReadingNoteNamesSolfege::interval) "")) (d-SetDirectiveTagActionScript "ReadingNoteNamesSolfege::GameInterval" "(ReadingNoteNamesSolfege::setInterval)") (CreateButton "ReadingNoteNamesSolfege::GameMinus" "-") (d-SetDirectiveTagActionScript "ReadingNoteNamesSolfege::GameMinus" "(ReadingNoteNamesSolfege::minus)") (CreateButton "ReadingNoteNamesSolfege::GameGo" "start") (d-SetDirectiveTagActionScript "ReadingNoteNamesSolfege::GameGo" "(ReadingNoteNamesSolfege::go)") (d-SetDirectiveTagActionScript "ReadingNoteNamesSolfege::GameScore" "(ReadingNoteNamesSolfege::go)") (CreateButton "ReadingNoteNamesSolfege::GamePrint" "Print") (d-SetDirectiveTagActionScript "ReadingNoteNamesSolfege::GamePrint" "(ReadingNoteNamesSolfege::print)") (CreateButton "ReadingNoteNamesSolfege::Close" "Quit") (d-SetDirectiveTagActionScript "ReadingNoteNamesSolfege::Close" "(ReadingNoteNamesSolfege::quit)") (define (ReadingNoteNamesSolfege::createbuttons solfege note) (CreateButton (string-append "ReadingNoteNamesSolfege::" solfege) (string-append " " solfege "")) (d-SetDirectiveTagActionScript (string-append "ReadingNoteNamesSolfege::" solfege) (string-append "(ReadingNoteNamesSolfege::notechosen \"" note "\")"))) (CreateButton "ReadingNoteNamesSolfege::spacer1" " ") (d-SetDirectiveTagActionScript "ReadingNoteNamesSolfege::spacer1" "(d-PlayMidiKey #xF03001)") (ReadingNoteNamesSolfege::createbuttons "do" "c") (ReadingNoteNamesSolfege::createbuttons "re" "d") (ReadingNoteNamesSolfege::createbuttons "me" "e") (ReadingNoteNamesSolfege::createbuttons "fa" "f") (ReadingNoteNamesSolfege::createbuttons "so" "g") (ReadingNoteNamesSolfege::createbuttons "la" "a") (ReadingNoteNamesSolfege::createbuttons "si" "b") (CreateButton "ReadingNoteNamesSolfege::spacer2" " ") (d-SetDirectiveTagActionScript "ReadingNoteNamesSolfege::spacer2" "(d-PlayMidiKey #xF03001)") (EducationGames::Chime) denemo-2.2.0/actions/menus/MainMenu/PaxHeaders.19168/EditMenu0000644000000000000000000000013213135434150020463 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/0000755000175000017500000000000013135434150022411 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/AdvancedEdit.xml0000644000000000000000000000013213135434035023577 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.533315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/AdvancedEdit.xml0000644000175000017500000000064013135434035025450 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AdvancedEdit EditSimilar <_label>Advanced Edit <_tooltip>Edits a Denemo Directive at the lowest level. Advanced users only! denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/PasteReplaceSelection.xml0000644000000000000000000000013213135434035025502 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.533315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/PasteReplaceSelection.xml0000644000175000017500000000077113135434035027360 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Paste PasteReplaceSelection <_label>Paste and Replace Selection <_tooltip>Paste the clipboard. Replace any selected objects. This paste-version also creates new barlines instead of strictly using the copied ones. denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/DenemoDurationInTicks.xml0000644000000000000000000000013213135434035025466 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.533315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/DenemoDurationInTicks.xml0000644000175000017500000000100213135434035027330 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DenemoDurationInTicks EditAll <_label>(Display) Set Object Duration <_tooltip>Sets the duration of the object at the cursor for display purposes. Value is pulses per quarter note - ie MIDI ticks. No effect on typesetting. denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/Select0000644000000000000000000000013213135434150021702 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/0000755000175000017500000000000013135434150023630 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectStaff.scm0000644000000000000000000000013213135434035024670 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.539981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectStaff.scm0000644000175000017500000000013013135434035026533 0ustar00jjbenhamjjbenham00000000000000(d-PushPosition) (d-UnsetMark) (d-GoToBeginning) (d-SetMark) (d-GoToEnd) (d-PopPosition)denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectionToEmptyMeasure.scm0000644000000000000000000000013213135434035027256 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.539981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectionToEmptyMeasure.scm0000644000175000017500000000024413135434035031127 0ustar00jjbenhamjjbenham00000000000000;;;SelectionToEmptyMeasure (if (not (None?)) (begin (d-CursorRight) (let gotoEnd () (if (and (d-CursorRight) (not (None?))) (gotoEnd))) (d-RefreshDisplay)))denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/ToggleNonprintingSelection.scm0000644000000000000000000000013213135434035030002 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.539981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/ToggleNonprintingSelection.scm0000644000175000017500000000027113135434035031653 0ustar00jjbenhamjjbenham00000000000000;;;SetSelectionNonprinting (d-PushPosition) (d-GoToMark) (let loop() (if (d-IsInSelection) (d-SetNonprinting (not (d-GetNonprinting)))) (if (d-NextObject) (loop))) (d-PopPosition)denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectLeft.scm0000644000000000000000000000013213135434035024517 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.539981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectLeft.scm0000644000175000017500000000015213135434035026366 0ustar00jjbenhamjjbenham00000000000000(if (and (not (d-MarkStatus)) (not (Appending?))) (begin (d-MoveCursorLeft) (d-SetMark)) (d-CursorLeft))denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/DeleteSelectionLeaveEmpty.scm0000644000000000000000000000013213135434035027531 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.559981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/DeleteSelectionLeaveEmpty.scm0000644000175000017500000000004713135434035031403 0ustar00jjbenhamjjbenham00000000000000(ApplyToTaggedSelection d-DeleteObject)denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/ApplyToSelection.xml0000644000000000000000000000013213135434035025741 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.559981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/ApplyToSelection.xml0000644000175000017500000000071313135434035027613 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ApplyToSelection <_label>Apply Shortcut to Objects in Selection <_tooltip>Followed by a keyboard shortcut: applies the shortcut with the cursor successively on each object in the selection. denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/ApplyToSelection.scm0000644000000000000000000000013213135434035025723 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.559981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/ApplyToSelection.scm0000644000175000017500000000076613135434035027605 0ustar00jjbenhamjjbenham00000000000000;;;ApplyToSelection (if (not DenemoKeypressActivatedCommand) (d-WarningDialog "Close this dialog, then press a shortcut key/shortcut keys to apply the command to every object in the selection\n\nThis command will execute the command you give once with the cursor on each object in the selection. E.g. if you select 8 notes and give a shortcut for ZoomIn it will zoom 8 times.")) (let () (define var (d-GetCommandFromUser)) (if var (ApplyToTaggedSelection (eval-string (string-append "d-" var))))) denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectAll.scm0000644000000000000000000000013213135434035024335 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.559981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectAll.scm0000644000175000017500000000016113135434035026204 0ustar00jjbenhamjjbenham00000000000000;;;SelectAll (d-MoveToBeginning) (while (d-StaffUp)) (d-SetMark) (d-MoveToEnd) (while (d-StaffDown)) (d-SetPoint)denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectAllStaffs.scm0000644000000000000000000000013213135434035025504 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.559981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectAllStaffs.scm0000644000175000017500000000021313135434035027351 0ustar00jjbenhamjjbenham00000000000000(d-PushPosition) (d-MoveToMovementBeginning) (d-UnsetMark) (let laststaff () (if (d-StaffDown) (laststaff))) (d-GoToEnd) (d-PopPosition)denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectStaff.xml0000644000000000000000000000013213135434035024706 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.566648473 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectStaff.xml0000644000175000017500000000056113135434035026561 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS UnsetMark SelectStaff <_label>Select Staff <_tooltip>Selects the whole staff denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectionToEmptyMeasure.xml0000644000000000000000000000013213135434035027274 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.566648473 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectionToEmptyMeasure.xml0000644000175000017500000000063213135434035031146 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SelectionToEmptyMeasure <_label>Selection to Next Empty Measure <_tooltip>Creates a selection to the next empty measure in the current staff denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectAll.xml0000644000000000000000000000013213135434035024353 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.566648473 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectAll.xml0000644000175000017500000000064613135434035026232 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS UnsetMark SelectAll <_label>Select All Music In Movement <_tooltip>Creates a selection for all the music in the current movement. denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectRight.scm0000644000000000000000000000013213135434035024702 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.566648473 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectRight.scm0000644000175000017500000000012013135434035026544 0ustar00jjbenhamjjbenham00000000000000(if (and (not (d-MarkStatus)) (not (Appending?))) (d-SetMark) (d-CursorRight))denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectRight.xml0000644000000000000000000000013213135434035024720 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.566648473 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectRight.xml0000644000175000017500000000055213135434035026573 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SelectRight <_label>Select Right <_tooltip>Move cursor right, selecting the object moved to. denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectMeasure.xml0000644000000000000000000000013213135434035025244 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.573315139 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectMeasure.xml0000644000175000017500000000062213135434035027115 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SelectColumn SelectMeasure <_label>Select Measure <_tooltip>Create a selection for the entire current measure denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/ToggleNonprintingSelection.xml0000644000000000000000000000013213135434035030020 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.576648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/ToggleNonprintingSelection.xml0000644000175000017500000000071513135434035031674 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ToggleNonprintingSelection EditScoreAndMovementDirectives <_label>Selection Non-printing (Off/On) <_tooltip>Sets/Unsets all objects in the selection to be non-printing. denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/DeleteSelectionLeaveEmpty.xml0000644000000000000000000000013213135434035027547 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.576648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/DeleteSelectionLeaveEmpty.xml0000644000175000017500000000061513135434035031422 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteSelectionLeaveEmpty <_label>Delete Selected Objects <_tooltip>Delete all selected objects and leave empty measures behind denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectLeft.xml0000644000000000000000000000013213135434035024535 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.576648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectLeft.xml0000644000175000017500000000061213135434035026405 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SelectRight SelectLeft <_label>Select Left <_tooltip>Move cursor left, selecting the object moved to. denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectAllStaffs.xml0000644000000000000000000000013213135434035025522 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.576648472 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectAllStaffs.xml0000644000175000017500000000061413135434035027374 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SelectStaff SelectAllStaffs <_label>Select All Staffs <_tooltip>Selects the whole movement / All staffs denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectColumn.xml0000644000000000000000000000013213135434035025100 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.583315139 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectColumn.xml0000644000175000017500000000052313135434035026751 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SelectColumn <_label>Select Column <_tooltip>Selects the whole column denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectColumn.scm0000644000000000000000000000013213135434035025062 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.583315139 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectColumn.scm0000644000175000017500000000022713135434035026734 0ustar00jjbenhamjjbenham00000000000000(d-PushPosition) (d-UnsetMark) (let loop () (if (d-MoveToStaffUp) (loop) #t)) (let loop2 () (if (d-StaffDown) (loop2) #t)) (d-PopPosition)denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/PaxHeaders.19168/SelectMeasure.scm0000644000000000000000000000013213135434035025226 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.583315139 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Select/SelectMeasure.scm0000644000175000017500000000026513135434035027102 0ustar00jjbenhamjjbenham00000000000000(if (None?) (d-SetMark) (begin (d-PushPosition) (d-UnsetMark) (GoToMeasureBeginning) (RepeatProcWhileTest d-CursorRight (lambda () (not (Appending?)))) (d-PopPosition)))denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/ConvertDrum2GmSingleSelection.scm0000644000000000000000000000013213135434035027074 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.583315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/ConvertDrum2GmSingleSelection.scm0000644000175000017500000000160513135434035030747 0ustar00jjbenhamjjbenham00000000000000 (if (defined? 'DrumHash) #t (begin (display "\nNo DrumHash existent. Force Reload!\n") (d-ReloadDrumHash) )) (define (ConvertDrumGm2UserSingleNote) (if (and (d-GetNotes) (hashq-ref DrumHash (string->symbol (GetHighestNote))) (hashq-ref DrumHash (string->symbol (GetLowestNote)))) (let ((newDrumList (string-tokenize(d-GetNotes)) )) (let transformChordList ((i 0)) (if (<= i (-(length newDrumList )1)) (begin (set! newDrumList (Replace-nth newDrumList i (hashq-ref DrumHash (string->symbol (list-ref newDrumList i))))) (transformChordList (+ i 1) ) ) ) (d-ChangeChordNotes (string-join newDrumList))) ) )) (if (defined? 'DrumHash) (SingleAndSelectionSwitcher ConvertDrumGm2UserSingleNote) (begin (display "No DrumHash was loaded. Please copy and use the template that comes with Denemo. Abort.\n")#f) ) (d-RefreshDisplay) denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/Delete0000644000000000000000000000013213135434150021665 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/0000755000175000017500000000000013135434150023613 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/PaxHeaders.19168/RemoveSchemeInit.scm0000644000000000000000000000013213135434035025656 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.603315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/RemoveSchemeInit.scm0000644000175000017500000000006013135434035027523 0ustar00jjbenhamjjbenham00000000000000;;;RemoveCustomizedButtons (d-DestroySchemeInit)denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/PaxHeaders.19168/StagedDelete.xml0000644000000000000000000000013213135434035025020 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.603315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/StagedDelete.xml0000644000175000017500000000102613135434035026670 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeletePreviousObject StagedDelete <_label>Delete in Stages <_tooltip>Deletes the object at/before the cursor. For Notes/Chords/Rests it deletes stage by stage. First it removes notes until just a non-printing rest remains, then deletes that. denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/PaxHeaders.19168/DeleteRecordedMidi.scm0000644000000000000000000000013213135434035026125 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.603315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/DeleteRecordedMidi.scm0000644000175000017500000000005513135434035027776 0ustar00jjbenhamjjbenham00000000000000;;;DeleteMidiRecording (d-DeleteImportedMidi)denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/PaxHeaders.19168/StagedDelete.scm0000644000000000000000000000013213135434035025002 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.603315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/StagedDelete.scm0000644000175000017500000000057413135434035026661 0ustar00jjbenhamjjbenham00000000000000;;;;StagedDelete (if (Appending?) (d-MoveCursorLeft)) (if (Music?) (if (d-GetNonprinting) ;;; non-printing (if (d-GetNotes) (d-RemoveNoteFromChord) (d-DeleteObject)) ;;; an ordinary black note or rest (if (d-GetNotes) (d-RemoveNoteFromChord) (d-SetNonprinting))) ;;; not a music object (d-DeleteObject)) (d-SetSaved #f) (d-RefreshDisplay)denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/PaxHeaders.19168/IntelligentDelete.scm0000644000000000000000000000013213135434035026051 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.603315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/IntelligentDelete.scm0000644000175000017500000000031413135434035027720 0ustar00jjbenhamjjbenham00000000000000;;;;Intelligent Delete. If selection present it deletes the whole selection. For single notes it deletes the note on the cursor (SingleAndSelectionSwitcher d-DeleteObject d-DeleteSelectionLeaveEmpty) denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/PaxHeaders.19168/RemoveSchemeInit.xml0000644000000000000000000000013213135434035025674 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.613315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/RemoveSchemeInit.xml0000644000175000017500000000076113135434035027551 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ExecuteScheme RemoveSchemeInit <_label>Destroy Button Customization <_tooltip>Removes the file that creates customized buttons on the title bar (and any other scheme you have added to the startup script). denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/PaxHeaders.19168/IntelligentDelete.xml0000644000000000000000000000013213135434035026067 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.613315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/IntelligentDelete.xml0000644000175000017500000000065213135434035027743 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS IntelligentDelete <_label>Delete Selection/Object/Empty Measure <_tooltip>Deletes a single object at the cursor, an empty measure or the complete selection. denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/PaxHeaders.19168/DeleteRecordedMidi.xml0000644000000000000000000000013213135434035026143 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.613315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Delete/DeleteRecordedMidi.xml0000644000175000017500000000067513135434035030024 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS DeleteRecordedMidi DeletePreviousObject <_label>Delete Imported/Recorded Midi <_tooltip>Deletes the MIDI that has been imported or recorded via MIDI in. denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/ResumeEdit.scm0000644000000000000000000000013213135434035023314 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.613315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/ResumeEdit.scm0000644000175000017500000000004613135434035025165 0ustar00jjbenhamjjbenham00000000000000;;ResumeEdit (d-EditSimilar 'continue)denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/ActivatePaletteButtonByLabel.xml0000644000000000000000000000013213135434035026772 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.613315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/ActivatePaletteButtonByLabel.xml0000644000175000017500000000115213135434035030642 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ActivatePaletteButtonByLabel PasteClipboard <_label>Activate Palette Button <_tooltip>Allows you "click" a palette button by typing the label. Use a keyboard shortcut to start this command, then type the label followed by Return. The last used palette is the active one. Click on the menu item for this command for more help. denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/EditScoreAndMovementDirectives.xml0000644000000000000000000000013213135434035027325 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.619981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/EditScoreAndMovementDirectives.xml0000644000175000017500000000115013135434035031173 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EditScoreAndMovementDirectives ResumeEdit <_label>Edit Score/Movement Directives <_tooltip>Collects together all the Score Directives and the Movement Directives for the current movement and allows advanced (low-level) edit of any of them. This is a convenience command if you do not know the directive you are looking for. denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/ReloadDrumHash.xml0000644000000000000000000000013213135434035024126 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.619981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/ReloadDrumHash.xml0000644000175000017500000000060413135434035025777 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ReloadDrumHash <_label>Reload the "Drum GM to User" Map <_tooltip>Reloads the drum map which is needed for DrumGm2User denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/ReloadDrumHash.scm0000644000000000000000000000013213135434035024110 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.619981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/ReloadDrumHash.scm0000644000175000017500000000117113135434035025761 0ustar00jjbenhamjjbenham00000000000000;;;;Prepares a Hash Table from a .denemo file where a user can put his own drum notation. ;;;;Format: Each drum instrument has its own staff. Two notes in each: First note/value=GM-note, second user-note ;;;;by Nils Gey, 01/2010 (d-NewWindow) (if (d-OpenMyTemplate) (begin ;;Go to first Staff (let gotoTopStaff () (if (d-MoveToStaffUp) (gotoTopStaff))) (define DrumHash (make-hash-table 50)) (let createDrumHashTable () (d-MoveToBeginning) (hashq-set! DrumHash (string->symbol (GetLowestNote)) (begin (d-NextNote) (GetLowestNote) )) (if (and (d-MoveToStaffDown) (GetLowestNote) ) (createDrumHashTable)) ) )) (d-Close)denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/NotationMagick0000644000000000000000000000013213135434150023372 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/0000755000175000017500000000000013135434150025320 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-TwelveTo0000644000000000000000000000013213135434035030052 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.629981806 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-TwelveToneRow.scm0000644000175000017500000000016013135434035033514 0ustar00jjbenhamjjbenham00000000000000 (NotationMagick::InsertListRandomlyLy (list 'c' 'des' 'd' 'ees' 'e' 'f' 'fis' 'g' 'aes' 'a' 'bes' 'b')) denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/GenerateRhythmFromStrin0000644000000000000000000000013213135434150030164 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/0000755000175000017500000000000013135434150032261 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/PaxHeaders.19160000644000000000000000000000036613135434035030256 xustar00156 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-InsertReversedStringAsReversedBinaryRhythm.scm 30 mtime=1500919837.953315139 30 atime=1500919931.629981806 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-0000644000175000017500000000032113135434035035166 0ustar00jjbenhamjjbenham00000000000000(let ((return (NotationMagick::AskNewAsciistring))) (if return (NotationMagick::PutBinaryStringList (reverse (NotationMagick::ReverseStringsInList (NotationMagick::String->CharsAsBinary return)))) #f))denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/PaxHeaders.19160000644000000000000000000000035613135434035030255 xustar00148 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-InsertReversedStringAsBinaryRhythm.xml 30 mtime=1500919837.953315139 30 atime=1500919931.629981806 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-0000644000175000017500000000106413135434035035173 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-InsertStringAsBinaryRhythm NotationMagick-InsertReversedStringAsBinaryRhythm <_label>Insert Reversed String as Binary Rhythm <_tooltip>Give a string to generate a rhythm out of its ascii chars in binary encoding. The string gets reversed before converting. denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/PaxHeaders.19160000644000000000000000000000035613135434035030255 xustar00148 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-InsertStringAsReversedBinaryRhythm.xml 30 mtime=1500919837.953315139 30 atime=1500919931.629981806 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-0000644000175000017500000000111313135434035035166 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-InsertReversedStringAsBinaryRhythm NotationMagick-InsertStringAsReversedBinaryRhythm <_label>Insert String as Reversed Binary Rhythm <_tooltip>Give a string to generate a rhythm out of its ascii chars in binary encoding. The rhythm for each letter gets reversed before inserting. denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/PaxHeaders.19160000644000000000000000000000036613135434035030256 xustar00156 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-InsertReversedStringAsReversedBinaryRhythm.xml 30 mtime=1500919837.953315139 30 atime=1500919931.653315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-0000644000175000017500000000121013135434035035164 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-InsertStringAsReversedBinaryRhythm NotationMagick-InsertReversedStringAsReversedBinaryRhythm <_label>Insert Reversed String as Reversed Binary Rhythm <_tooltip>Give a string to generate a rhythm out of its ascii chars in binary encoding. The string gets reversed before converting. The rhythm for each letter gets reversed before inserting. denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/PaxHeaders.19160000644000000000000000000000034613135434035030254 xustar00140 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-InsertStringAsBinaryRhythm.scm 30 mtime=1500919837.953315139 30 atime=1500919931.653315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-0000644000175000017500000000023513135434035035172 0ustar00jjbenhamjjbenham00000000000000(let ((return (NotationMagick::AskNewAsciistring))) (if return (NotationMagick::PutBinaryStringList (NotationMagick::String->CharsAsBinary return)) #f))denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/PaxHeaders.19160000644000000000000000000000035613135434035030255 xustar00148 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-InsertStringAsReversedBinaryRhythm.scm 30 mtime=1500919837.953315139 30 atime=1500919931.653315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-0000644000175000017500000000030413135434035035167 0ustar00jjbenhamjjbenham00000000000000(let ((return (NotationMagick::AskNewAsciistring))) (if return (NotationMagick::PutBinaryStringList (NotationMagick::ReverseStringsInList (NotationMagick::String->CharsAsBinary return))) #f))denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/PaxHeaders.19160000644000000000000000000000034613135434035030254 xustar00140 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-InsertStringAsBinaryRhythm.xml 30 mtime=1500919837.953315139 30 atime=1500919931.653315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-0000644000175000017500000000066513135434035035201 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-InsertStringAsBinaryRhythm <_label>Insert String as Binary Rhythm <_tooltip>Give a string to generate a rhythm out of its ascii chars in binary encoding denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/PaxHeaders.19160000644000000000000000000000035613135434035030255 xustar00148 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-InsertReversedStringAsBinaryRhythm.scm 30 mtime=1500919837.953315139 30 atime=1500919931.653315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/GenerateRhythmFromString/NotationMagick-0000644000175000017500000000025013135434035035167 0ustar00jjbenhamjjbenham00000000000000(let ((return (NotationMagick::AskNewAsciistring))) (if return (NotationMagick::PutBinaryStringList (reverse (NotationMagick::String->CharsAsBinary return))) #f))denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-SortSele0000644000000000000000000000031213135434035030041 xustar00112 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-SortSelectionDescending.scm 30 mtime=1500919837.953315139 30 atime=1500919931.666648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-SortSelectionDescending.s0000644000175000017500000000025213135434035035173 0ustar00jjbenhamjjbenham00000000000000(NotationMagick::ModifySelectedObjects (lambda (selection) (sort-list selection (lambda (x y) (> (list-ref (musobj.pitch x) 0) (list-ref (musobj.pitch y) 0)))))) denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-ReverseS0000644000000000000000000000031113135434035030036 xustar00111 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-ReverseSelectedObjects.xml 30 mtime=1500919837.953315139 30 atime=1500919931.666648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-ReverseSelectedObjects.xm0000644000175000017500000000056613135434035035202 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-ReverseSelectedObjects <_label>Reverse Selected Objects <_tooltip>Revert selected objects denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-SortSele0000644000000000000000000000031113135434035030040 xustar00111 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-SortSelectionAscending.xml 30 mtime=1500919837.953315139 30 atime=1500919931.666648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-SortSelectionAscending.xm0000644000175000017500000000071713135434035035213 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-ShuffleSelectedObjects NotationMagick-SortSelectionAscending <_label>Sort Selection (Ascending) <_tooltip>Sort all notes in the selection, ascending order. denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-SortSele0000644000000000000000000000031213135434035030041 xustar00112 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-SortSelectionDescending.xml 30 mtime=1500919837.953315139 30 atime=1500919931.666648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-SortSelectionDescending.x0000644000175000017500000000072213135434035035202 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-SortSelectionAscending NotationMagick-SortSelectionDescending <_label>Sort Selection (Descending) <_tooltip>Sort all notes in the selection, descending order. denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-TwelveTo0000644000000000000000000000013213135434035030052 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.666648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-TwelveToneRow.xml0000644000175000017500000000071613135434035033541 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-TwelveToneRow <_label>Twelve Tone Row <_tooltip>Generates twelve notes of the prevailing duration, each is unique so the whole chromatic range gets inserted in a random manner. denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-ShuffleS0000644000000000000000000000031113135434035030017 xustar00111 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-ShuffleSelectedObjects.xml 30 mtime=1500919837.953315139 30 atime=1500919931.676648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-ShuffleSelectedObjects.xm0000644000175000017500000000066713135434035035165 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-MirrorSelectedObjects NotationMagick-ShuffleSelectedObjects <_label>Shuffle Selected Objects <_tooltip>Shuffle the selected objects denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-InsertPo0000644000000000000000000000013213135434035030044 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.676648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-InsertPoolShuffled.scm0000644000175000017500000000025113135434035034510 0ustar00jjbenhamjjbenham00000000000000;;; Part of NotationMagick (let ((return (NotationMagick::AskNewNotationstring))) (if return (NotationMagick::InsertListRandomlyLy return) #f)) denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-MirrorSe0000644000000000000000000000013213135434035030043 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.676648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-MirrorSelectedObjects.xml0000644000175000017500000000073713135434035035215 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-ReverseSelectedObjects NotationMagick-MirrorSelectedObjects <_label>Mirror Selected Objects (Axis=Cursor) <_tooltip>Mirror the selected notes. Axis is the cursor position. denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-ShuffleS0000644000000000000000000000031113135434035030017 xustar00111 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-ShuffleSelectedObjects.scm 30 mtime=1500919837.953315139 30 atime=1500919931.676648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-ShuffleSelectedObjects.sc0000644000175000017500000000007213135434035035134 0ustar00jjbenhamjjbenham00000000000000(NotationMagick::ModifySelectedObjects Merge-shuffle-list)denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-SortSele0000644000000000000000000000031113135434035030040 xustar00111 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-SortSelectionAscending.scm 30 mtime=1500919837.953315139 30 atime=1500919931.676648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-SortSelectionAscending.sc0000644000175000017500000000024713135434035035172 0ustar00jjbenhamjjbenham00000000000000(NotationMagick::ModifySelectedObjects (lambda (selection) (sort-list selection (lambda (x y) (< (list-ref (musobj.pitch x) 0) (list-ref (musobj.pitch y) 0))))))denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-InsertPo0000644000000000000000000000013213135434035030044 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.689981806 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-InsertPoolShuffled.xml0000644000175000017500000000065213135434035034533 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-InsertPoolShuffled <_label>Insert Shuffled Pool <_tooltip>Inserts all notes, shuffled, from a user-specified pool of notes in Lilypond syntax denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-ReverseS0000644000000000000000000000031113135434035030036 xustar00111 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-ReverseSelectedObjects.scm 30 mtime=1500919837.953315139 30 atime=1500919931.689981806 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-ReverseSelectedObjects.sc0000644000175000017500000000011113135434035035145 0ustar00jjbenhamjjbenham00000000000000(NotationMagick::ModifySelectedObjects NotationMagick::ReverseCopyBuffer)denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/SingleRandomNote0000644000000000000000000000013213135434150026602 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/0000755000175000017500000000000013135434150030530 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/PaxHeaders.19168/Notati0000644000000000000000000000034213135434035030045 xustar00136 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/NotationMagick-RandomWithinClefRangeChromatic.xml 30 mtime=1500919837.953315139 30 atime=1500919931.689981806 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/NotationMagick-RandomWi0000644000175000017500000000065213135434035035105 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-RandomWithinClefRangeChromatic <_label>Chromatic within Clef Range <_tooltip>Insert a random note within clef range. Full chromatic spectrum. denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/PaxHeaders.19168/Notati0000644000000000000000000000034113135434035030044 xustar00135 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/NotationMagick-RandomWithinClefRangeDiatonic.xml 30 mtime=1500919837.953315139 30 atime=1500919931.689981806 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/NotationMagick-RandomWi0000644000175000017500000000065713135434035035112 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-RandomWithinClefRangeDiatonic <_label>asd <_tooltip>Insert a random note within clef range, only diatonic notes according to current keysignature. denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/PaxHeaders.19168/Notati0000644000000000000000000000032613135434035030047 xustar00124 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/NotationMagick-InsertNoteFromPool.xml 30 mtime=1500919837.953315139 30 atime=1500919931.713315138 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/NotationMagick-InsertNo0000644000175000017500000000063013135434035035122 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NotationMagick-InsertNoteFromPool <_label>Note from Pool <_tooltip>Inserts one note from a user-specified pool of notes in Lilypond syntax denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/PaxHeaders.19168/Notati0000644000000000000000000000032613135434035030047 xustar00124 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/NotationMagick-InsertNoteFromPool.scm 30 mtime=1500919837.953315139 30 atime=1500919931.713315138 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/NotationMagick-InsertNo0000644000175000017500000000025313135434035035123 0ustar00jjbenhamjjbenham00000000000000;;; Part of NotationMagick (let ((return (NotationMagick::AskNewNotationstring))) (if return (NotationMagick::InsertMemberRandomlyLy return) #f)) denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/PaxHeaders.19168/Notati0000644000000000000000000000034213135434035030045 xustar00136 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/NotationMagick-RandomWithinClefRangeChromatic.scm 30 mtime=1500919837.953315139 30 atime=1500919931.713315138 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/NotationMagick-RandomWi0000644000175000017500000000011013135434035035072 0ustar00jjbenhamjjbenham00000000000000;Part of NotationMagick (NotationMagick::RandomWithinClefRangeChromatic)denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/PaxHeaders.19168/Notati0000644000000000000000000000034113135434035030044 xustar00135 path=denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/NotationMagick-RandomWithinClefRangeDiatonic.scm 30 mtime=1500919837.953315139 30 atime=1500919931.713315138 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/SingleRandomNote/NotationMagick-RandomWi0000644000175000017500000000010713135434035035100 0ustar00jjbenhamjjbenham00000000000000;Part of NotationMagick (NotationMagick::RandomWithinClefRangeDiatonic)denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/PaxHeaders.19168/NotationMagick-MirrorSe0000644000000000000000000000013213135434035030043 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.713315138 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/NotationMagick/NotationMagick-MirrorSelectedObjects.scm0000644000175000017500000000013213135434035035164 0ustar00jjbenhamjjbenham00000000000000(NotationMagick::MirrorSelection (ANS::Ly2Ans (string->symbol (GetCursorNoteAsLilypond))))denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/EditAll.scm0000644000000000000000000000013213135434035022564 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.723315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/EditAll.scm0000644000175000017500000000110413135434035024431 0ustar00jjbenhamjjbenham00000000000000;;;EditAll (define-once EditSimilar::last #f) (let ((choice #f)) (if EditSimilar::last (let ((type (cdr EditSimilar::last))) (set! choice (RadioBoxMenu (cons (string-append (_ "Delete All ") type) 'delete) (cons (string-append (_ "Execute Scheme on all ") type) 'execute)))) (begin (set! choice 'menu) (d-WarningDialog (_ "You must choose a type of object to edit first")))) (if choice (begin (d-MoveToMovementBeginning) (d-EditSimilar choice)))) denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/ActivatePaletteButtonByLabel.scm0000644000000000000000000000013213135434035026754 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.723315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/ActivatePaletteButtonByLabel.scm0000644000175000017500000000052013135434035030622 0ustar00jjbenhamjjbenham00000000000000(if (not DenemoKeypressActivatedCommand) (d-InfoDialog (_ "Select a palette by clicking on one of its buttons.\nThereafter use a keyboard shortcut to invoke this command\nand then type any label from the palette followed by \nYou can cut the label short (it clicks the first button that matches).")) (d-ActivatePaletteButton))denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/EditSimilar.scm0000644000000000000000000000013213135434035023454 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.723315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/EditSimilar.scm0000644000175000017500000010123613135434035025330 0ustar00jjbenhamjjbenham00000000000000;;EditSimilar (define-once EditSimilar::last #f) (let ((target #f) (continuations (if (eq? EditSimilar::params 'once) (begin (set! EditSimilar::params #f) #f) 'menu))) (define (get-tag-list get-command) ;;;get-command is d-DirectiveGetNthTag-note (let loop ((tags '())(n 0)) (define tag #f) (set! tag (get-command n)) (if tag (begin (set! tags (cons tag tags)) (loop tags (+ 1 n))) tags))) (define (select-directive type) (let ((tags '())) (case type ((note) (set! tags (get-tag-list d-DirectiveGetNthTagStrictNote))) ((chord) (set! tags (get-tag-list d-DirectiveGetNthTag-chord)))) (if (null? tags) #f (if (> (length tags) 1) (RadioBoxMenuList tags) (list-ref tags 0))))) (define (edit-tag tag default-action) (let ((command (with-input-from-string (string-append "d-" tag) read))) (if (defined? command) ((eval command (current-module)) "edit") (default-action tag)))) (define (edit) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (string-append (_ "Continue Seeking ") "\""target"\"" (_ " Directives")) 'continue) (cons (_ "Delete") 'delete) (cons (_ "Edit") 'edit) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop) (cons (_ "Advanced") 'advanced))) (set! choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Execute Scheme") 'execute) (cons (_ "Advanced") 'advanced))))) (case choice ((delete) (d-DirectiveDelete-standalone target)(d-MoveCursorLeft)) ((edit) (d-EditObject)) ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((advanced) (d-DirectiveTextEdit-standalone target)) ((#f) (set! target #f)))) (define (edit-note) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (string-append (_ "Continue Seeking ") "\""target"\"" (_ " on Noteheads")) 'continue) (cons (_ "Delete") 'delete) (cons (string-append (_ "Edit ") "\""target"\"" (_ " on Notehead")) 'edit) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop) (cons (_ "Advanced") 'advanced))) (set! choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Execute Scheme") 'execute) (cons (_ "Advanced") 'advanced))))) (case choice ((delete) (d-DirectiveDelete-note target)) ((edit) (edit-tag target d-DirectiveTextEdit-note)) ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((advanced) (d-DirectiveTextEdit-note target)) ((#f) (set! target #f))) (d-CursorUp)) (define (edit-chord) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (string-append (_ "Continue Seeking ") "\""target"\"" (_ " on Chords/Notes/Rests")) 'continue) (cons (_ "Delete") 'delete) (cons (string-append (_ "Edit ") "\""target"\"" (_ " Directive") (_ " on this Chord/Note/Rest")) 'edit) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop) (cons (_ "Advanced") 'advanced))) (set! choice (RadioBoxMenu (cons (string-append (_ "Edit ") "\""target"\"" (_ " Directive") (_ " on this Chord/Note/Rest")) 'edit) (cons (_ "Delete") 'delete) (cons (_ "Execute Scheme") 'execute) (cons (_ "Advanced") 'advanced))))) (case choice ((delete) (d-DirectiveDelete-chord target)) ((edit) (edit-tag target d-DirectiveTextEdit-chord)) ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((advanced) (d-DirectiveTextEdit-chord target)) ((#f) (set! target #f)))) (define (edit-nonprinting) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (string-append (_ "Continue Seeking ") "\""target"\"" (_ " Objects")) 'continue) (cons (_ "Change to Printing") 'switch) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop))) (set! choice (RadioBoxMenu (cons (_ "Change to Printing") 'switch) (cons (_ "Execute Scheme") 'execute))))) (case choice ((switch) (if (d-Directive-chord? DenemoWholeMeasureRestTag) (DenemoWholeMeasureRestCommand 'printing)) (d-SetNonprinting #f)) ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((#f) (set! target #f)))) (define (edit-slurstart) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (_ "Continue seeking slur start positions") 'continue) (cons (_ "Delete Slur") 'delete) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop))) (set! choice (RadioBoxMenu (cons (_ "Delete Slur") 'delete) (cons (_ "Execute Scheme") 'execute))))) (case choice ((delete) (d-DeleteSlur)) ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((#f) (set! target #f)))) (define (edit-slurend) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (_ "Continue seeking slur end positions") 'continue) (cons (_ "Delete Slur") 'delete) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop))) (set! choice (RadioBoxMenu (cons (_ "Delete Slur") 'delete) (cons (_ "Execute Scheme") 'execute))))) (case choice ((delete) (d-DeleteSlur)) ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((#f) (set! target #f)))) (define (edit-tied) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (_ "Continue seeking tied notes") 'continue) (cons (_ "Delete Tie") 'delete) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop))) (set! choice (RadioBoxMenu (cons (_ "Delete Tie") 'delete) (cons (_ "Execute Scheme") 'execute))))) (case choice ((delete) (d-ToggleTie)) ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((#f) (set! target #f)))) (define (edit-tupletstart) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (_ "Continue seeking tuplet start objects") 'continue) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop))) (set! choice (RadioBoxMenu (cons (_ "Execute Scheme") 'execute))))) (case choice ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((#f) (set! target #f)))) (define (edit-tupletend) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (_ "Continue seeking tuplet end objects") 'continue) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop))) (set! choice (RadioBoxMenu (cons (_ "Execute Scheme") 'execute))))) (case choice ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((#f) (set! target #f)))) (define (edit-timesig) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (_ "Continue seeking time signature change objects") 'continue) (cons (_ "Edit") 'edit) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop))) (set! choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Execute Scheme") 'execute))))) (case choice ((stop) (set! target #f)(set! continuations #f)) ((edit) (d-InsertTimeSig)) ;;;better - offer to add beat structure, invisibility etc ((execute) (d-ExecuteScheme)) ((#f) (set! target #f)))) (define (edit-clef) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (_ "Continue seeking clef change objects") 'continue) (cons (_ "Edit") 'edit) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop))) (set! choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Execute Scheme") 'execute))))) (case choice ((stop) (set! target #f)(set! continuations #f)) ((edit) (d-InsertClef)) ;;;better - offer invisibility etc ((execute) (d-ExecuteScheme)) ((#f) (set! target #f)))) (define (edit-keysig) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (_ "Continue seeking key signature change objects") 'continue) (cons (_ "Sharpen") 'sharpen) (cons (_ "Flatten") 'flatten) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop))) (set! choice (RadioBoxMenu (cons (_ "Sharpen") 'sharpen) (cons (_ "Flatten") 'flatten) (cons (_ "Execute Scheme") 'execute))))) (case choice ((stop) (set! target #f)(set! continuations #f)) ((sharpen) (begin (d-SharpenKeysig)(edit-keysig))) ((flatten) (begin (d-FlattenKeysig)(edit-keysig))) ((execute) (d-ExecuteScheme)) ((#f) (set! target #f)))) (define (edit-stemdirection) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (_ "Continue seeking stem direction change objects") 'continue) (cons (_ "Edit") 'edit) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop))) (set! choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Execute Scheme") 'execute))))) (case choice ((stop) (set! target #f)(set! continuations #f)) ((edit) (d-VoiceSetting)) ;;;offer other options ((execute) (d-ExecuteScheme)) ((#f) (set! target #f)))) (define (edit-timesigdir) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (string-append (_ "Continue Seeking ") "\""target"\"" (_ " on Time Signature Change Objects")) 'continue) (cons (_ "Delete") 'delete) (cons (_ "Edit") 'edit) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop) (cons (_ "Advanced") 'advanced))) (set! choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Execute Scheme") 'execute) (cons (_ "Advanced") 'advanced))))) (case choice ((delete) (d-DirectiveDelete-timesig target)) ((edit) (edit-tag target d-DirectiveTextEdit-timesig)) ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((advanced) (d-DirectiveTextEdit-timesig target)) ((#f) (set! target #f)))) (define (edit-clefdir) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (string-append (_ "Continue Seeking ") "\""target"\"" (_ " on Clef Change Objects")) 'continue) (cons (_ "Delete") 'delete) (cons (_ "Edit") 'edit) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop) (cons (_ "Advanced") 'advanced))) (set! choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Execute Scheme") 'execute) (cons (_ "Advanced") 'advanced))))) (case choice ((delete) (d-DirectiveDelete-clef target)) ((edit) (edit-tag target d-DirectiveTextEdit-clef)) ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((advanced) (d-DirectiveTextEdit-clef target)) ((#f) (set! target #f)))) (define (edit-keysigdir) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (string-append (_ "Continue Seeking ") "\""target"\"" (_ " on Key Change Objects")) 'continue) (cons (_ "Delete") 'delete) (cons (_ "Edit") 'edit) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop) (cons (_ "Advanced") 'advanced))) (set! choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Execute Scheme") 'execute) (cons (_ "Advanced") 'advanced))))) (case choice ((delete) (d-DirectiveDelete-keysig target)) ((edit) (edit-tag target d-DirectiveTextEdit-keysig)) ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((advanced) (d-DirectiveTextEdit-keysig target)) ((#f) (set! target #f)))) (define (edit-stemdirectiondir) (define choice (if (eq? continuations 'menu) #f continuations)) (if (not choice) (if continuations (set! choice (RadioBoxMenu (cons (string-append (_ "Continue Seeking ") "\""target"\"" (_ " on Voice Change objects")) 'continue) (cons (_ "Delete") 'delete) (cons (_ "Edit") 'edit) (cons (_ "Execute Scheme") 'execute) (cons (_ "Stop") 'stop) (cons (_ "Advanced") 'advanced))) (set! choice (RadioBoxMenu (cons (_ "Edit") 'edit) (cons (_ "Delete") 'delete) (cons (_ "Execute Scheme") 'execute) (cons (_ "Advanced") 'advanced))))) (case choice ((delete) (d-DirectiveDelete-stemdirective target)) ((edit) (edit-tag target d-DirectiveTextEdit-stemdirective)) ((stop) (set! target #f)(set! continuations #f)) ((execute) (d-ExecuteScheme)) ((advanced) (d-DirectiveTextEdit-stemdirective target)) ((#f) (set! target #f)))) ;;; the actual procedure (let ((type #f)) (case EditSimilar::params ((menu) (set! continuations 'menu) (set! EditSimilar::params #f)) ((execute delete) (if EditSimilar::last (begin (set! continuations EditSimilar::params) (set! EditSimilar::params 'continue)) (begin (d-WarningDialog (_ "Must choose type of object to be edited/deleted")) (set! continuations 'menu) (set! EditSimilar::params #f))))) (if (eq? EditSimilar::params 'continue) (if EditSimilar::last (begin (set! EditSimilar::params #f) (set! type (car EditSimilar::last)) (set! target (cdr EditSimilar::last))) (begin (set! EditSimilar::params #f) (set! continuations 'menu) (d-WarningDialog (_ "Cannot resume - no previous search.\nOffering a menu of all possible searches instead."))))) (if EditSimilar::params (case (cdr EditSimilar::params) ((standalone) (set! type 'standalone) (set! target (car EditSimilar::params)) (if (not (d-Directive-standalone? target)) (FindNextObjectAllColumns (lambda () (d-Directive-standalone? target))))) ((note) (set! type 'note) (set! target (car EditSimilar::params)) (if (not (d-DirectiveGetForTagStrictNote target)) (FindNextNoteAllColumns (lambda () (d-DirectiveGetForTagStrictNote target))))) ((chord) (set! type 'chord) (set! target (car EditSimilar::params)) (if (not (d-Directive-chord? target)) (FindNextObjectAllColumns (lambda () (d-Directive-chord? target))))) ((nonprinting) (set! type 'nonprinting) (set! target (car EditSimilar::params)) (if (not (d-GetNonprinting target)) (FindNextObjectAllColumns (lambda () (d-GetNonprinting target))))) ((slurstart) (set! type 'slurstart) (set! target (car EditSimilar::params)) (if (not (d-IsSlurStart)) (FindNextObjectAllColumns (lambda () (d-IsSlurStart))))) ((slurend) (set! type 'slurend) (set! target (car EditSimilar::params)) (if (not (d-IsSlurEnd)) (FindNextObjectAllColumns (lambda () (d-IsSlurEnd))))) ((tied) (set! type 'tied) (set! target (car EditSimilar::params)) (if (not (d-IsTied)) (FindNextObjectAllColumns (lambda () (d-IsTied))))) ((tupletstart) (set! type 'tupletstart) (set! target (car EditSimilar::params)) (if (not (TupletOpen?)) (FindNextObjectAllColumns (lambda () (TupletOpen?))))) ((tupletend) (set! type 'tupletend) (set! target (car EditSimilar::params)) (if (not (TupletClose?)) (FindNextObjectAllColumns (lambda () (TupletClose?))))) ((timesig) (set! type 'timesig) (set! target (car EditSimilar::params)) (if (not (Timesignature?)) (FindNextObjectAllColumns (lambda () (Timesignature?))))) ((keysig) (set! type 'keysig) (set! target (car EditSimilar::params)) (if (not (Keysignature?)) (FindNextObjectAllColumns (lambda () (Keysignature?))))) ((stemdirection) (set! type 'stemdirection) (set! target (car EditSimilar::params)) (if (not (Keysignature?)) (FindNextObjectAllColumns (lambda () (StemDirective?))))) ((clef) (set! type 'clef) (set! target (car EditSimilar::params)) (if (not (Clef?)) (FindNextObjectAllColumns (lambda () (Clef?))))) ((stemdirectiondir) (set! type 'stemdirectiondir) (set! target (car EditSimilar::params)) (if (not (d-Directive-stemdirective? target)) (FindNextObjectAllColumns (lambda () (d-Directive-stemdirective? target))))) ((keysigdir) (set! type 'keysigdir) (set! target (car EditSimilar::params)) (if (not (d-Directive-keysig? target)) (FindNextObjectAllColumns (lambda () (d-Directive-keysig? target))))) ((timesigdir) (set! type 'timesigdir) (set! target (car EditSimilar::params)) (if (not (d-Directive-timesig? target)) (FindNextObjectAllColumns (lambda () (d-Directive-timesig? target))))) ((clefdir) (set! type 'clefdir) (set! target (car EditSimilar::params)) (if (not (d-Directive-clef? target)) (FindNextObjectAllColumns (lambda () (d-Directive-clef? target))))) (else (disp "Not handling " EditSimilar::params " yet.") (set! EditSimilar::params #f)))) (if (not type) (begin (set! target (d-DirectiveGetTag-standalone)) (if target (set! type 'standalone) (begin (set! target (select-directive 'note)) (if target (set! type 'note) (begin (set! target (select-directive 'chord)) (if target (set! type 'chord) (if (d-IsSlurStart) (set! type 'slurstart) (if (d-IsSlurEnd) (set! type 'slurend) (if (d-IsTied) (set! type 'tied) (if (d-GetNonprinting) (set! type 'nonprinting) (if (TupletOpen?) (set! type 'tupletstart) (if (TupletClose?) (set! type 'tupletend) (if (Timesignature?) (set! type 'timesig) (if (Clef?) (set! type 'clef) (if (Keysignature?) (set! type 'keysig) (if (StemDirective?) (set! type 'stemdirection) (if (and (Timesignature?) (d-Directive-timesig? target)) (set! type 'timesigdir) (if (and (Keysignature?) (d-Directive-keysig? target)) (set! type 'keysigdir) (if (and (StemDirective?) (d-Directive-stemdirective? target)) (set! type 'stemdirectiondir) (if (and (Clef?) (d-Directive-clef? target)) (set! type 'clefdir)))))))))))))))))))))) (set! EditSimilar::last (cons type target)) (case type ((standalone) (edit) (if continuations (while (and target (FindNextObjectAllColumns (lambda () (d-Directive-standalone? target)))) (edit)))) ((note) (edit-note) (while (and continuations (FindNextNoteAllColumns (lambda () (d-DirectiveGetForTagStrictNote target)))) (edit-note))) ((chord) (edit-chord) (while (and continuations (FindNextObjectAllColumns (lambda () (d-Directive-chord? target)))) (edit-chord))) ((nonprinting) (edit-nonprinting) (while (and continuations (FindNextObjectAllColumns (lambda () (d-GetNonprinting)))) (edit-nonprinting))) ((slurstart) (edit-slurstart) (while (and continuations (FindNextObjectAllColumns (lambda () (d-IsSlurStart)))) (edit-slurstart))) ((slurend) (edit-slurend) (while (and continuations (FindNextObjectAllColumns (lambda () (d-IsSlurEnd)))) (edit-slurend))) ((tied) (edit-tied) (while (and continuations (FindNextObjectAllColumns (lambda () (d-IsTied)))) (edit-tied))) ((tupletstart) (edit-tupletstart) (while (and continuations (FindNextObjectAllColumns (lambda () (TupletOpen?)))) (edit-tupletstart))) ((tupletend) (edit-tupletend) (while (and continuations (FindNextObjectAllColumns (lambda () (TupletClose?)))) (edit-tupletend))) ((timesig) (edit-timesig) (while (and continuations (FindNextObjectAllColumns (lambda () (Timesignature?)))) (edit-timesig))) ((clef) (edit-clef) (while (and continuations (FindNextObjectAllColumns (lambda () (Clef?)))) (edit-clef))) ((keysig) (edit-keysig) (while (and continuations (FindNextObjectAllColumns (lambda () (Keysignature?)))) (edit-keysig))) ((stemdirection) (edit-stemdirection) (while (and continuations (FindNextObjectAllColumns (lambda () (StemDirective?)))) (edit-stemdirection))) ((timesigdir) (edit-timesigdir) (while (and continuations (FindNextObjectAllColumns (lambda () (and (Timesignature?) (d-Directive-timesig? target))))) (edit-timesigdir))) ((keysigdir) (edit-keysigdir) (while (and continuations (FindNextObjectAllColumns (lambda () (and (Keysignature?) (d-Directive-keysig? target))))) (edit-keysigdir))) ((stemdirectiondir) (if (eq? continuations 'menu) (edit-stemdirectiondir)) (while (and continuations (FindNextObjectAllColumns (lambda () (and (StemDirective?) (d-Directive-stemdirective? target))))) (edit-stemdirectiondir))) ((clefdir) (edit-clefdir) (while (and continuations (FindNextObjectAllColumns (lambda () (and (Clef?) (d-Directive-clef? target))))) (edit-clefdir))) (else (if continuations (if (eq? continuations 'menu) (d-ChooseSeekEditDirectives) (d-InfoDialog (_ "Attributes and Directives attached to noteheads, chords (including notes and rests) and standalone objects are supported - position the cursor on a notehead for directives on that notehead or off the noteheads for directives on a chord/note/rest, or on any other sort of object in the music. \nAlternatively, use \"Choose, Seek and Edit\" command to select from a list of types of directives in the movement to seek for."))) (d-EditObject)))) (if continuations (let ((choice #f)) (if (eq? continuations 'menu) (set! choice (RadioBoxMenu (if (LastMovement?) (if (FirstMovement?) (cons (_ "Stop") 'stop) (cons (_ "Wrap to first movement") 'first)) (cons (_ "Wrap to next movement") 'wrapmovement)) (cons (_ "Wrap to beginning") 'wrap))) (set! choice 'wrapmovement)) (case choice ((wrap) (d-MoveToMovementBeginning) (d-EditSimilar (cons target type))) ((first) (while (d-PreviousMovement)) (d-MoveToMovementBeginning) (d-EditSimilar (cons target type))) ((wrapmovement) (if (d-NextMovement) (begin (d-MoveToMovementBeginning) (if (or (eq? continuations 'execute) (eq? continuations 'delete)) (d-EditSimilar continuations) (d-EditSimilar (cons target type)))))) (else (TimedNotice (_ "Finished")))))))) denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/Void.xml0000644000000000000000000000013213135434035022165 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.779981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Void.xml0000644000175000017500000000066113135434035024041 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Void DenemoDurationInTicks <_label>(Print) Void Object <_tooltip>On typesetting the current object will be evaluated, but otherwise ignored. denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/ChooseSeekEditDirectives.scm0000644000000000000000000000013213135434035026126 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.779981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/ChooseSeekEditDirectives.scm0000644000175000017500000001114413135434035030000 0ustar00jjbenhamjjbenham00000000000000;;;;;;;ChooseSeekEditDirectives (let ((measurenum (d-GetMeasure))) (define tags '()) (define tag #f) (define (get-tags) (d-CursorToNthNoteHeight 1) (let outer-loop () (let loop ((n 0)) (set! tag (d-DirectiveGetNthTagStrictNote n)) (if tag (begin (set! tags (assoc-set! tags (string-append tag " (N)") (cons tag 'note))) (loop (+ 1 n))))) (if (d-CursorToNextNoteHeight) (outer-loop))) (let loop ((n 0)) (set! tag (d-DirectiveGetNthTag-chord n)) (if tag (begin (set! tags (assoc-set! tags (string-append tag " (CRN)") (cons tag 'chord))) (loop (+ 1 n))))) (if (Timesignature?) (let loop ((n 0)) (set! tag (d-DirectiveGetNthTag-timesig n)) (if tag (begin (set! tags (assoc-set! tags (string-append tag " (T)") (cons tag 'timesigdir))) (loop (+ 1 n)))))) (if (Keysignature?) (let loop ((n 0)) (set! tag (d-DirectiveGetNthTag-keysig n)) (if tag (begin (set! tags (assoc-set! tags (string-append tag " (K)") (cons tag 'keysigdir))) (loop (+ 1 n)))))) (if (Clef?) (let loop ((n 0)) (set! tag (d-DirectiveGetNthTag-clef n)) (if tag (begin (set! tags (assoc-set! tags (string-append tag " (C)") (cons tag 'clefdir))) (loop (+ 1 n)))))) (if (StemDirective?) (let loop ((n 0)) (set! tag (d-DirectiveGetNthTag-stemdirective n)) (if tag (begin (set! tags (assoc-set! tags (string-append tag " (V)") (cons tag 'voicedir))) (loop (+ 1 n)))))) (if (d-GetNonprinting) (set! tags (assoc-set! tags (string-append (_ "Non Printing") " (O)") (cons "Non Printing" 'nonprinting)))) (if (d-IsSlurStart) (set! tags (assoc-set! tags (string-append (_ "Slur Start") " (O)") (cons "Slur Start" 'slurstart)))) (if (d-IsSlurEnd) (set! tags (assoc-set! tags (string-append (_ "Slur End") " (O)") (cons "Slur End" 'slurend)))) (if (d-IsTied) (set! tags (assoc-set! tags (string-append (_ "Tied Note") " (CN)") (cons "Tied Note" 'tied)))) (if (TupletOpen?) (set! tags (assoc-set! tags (string-append (_ "Tuplet Start") " (O)") (cons "StartTuplet" 'tupletstart)))) (if (TupletClose?) (set! tags (assoc-set! tags (string-append (_ "Tuplet End") " (O)") (cons "EndTuplet" 'tupletend)))) (if (Keysignature?) (set! tags (assoc-set! tags (string-append (_ "Key Change") " (O)") (cons "KeySig" 'keysig)))) (if (Timesignature?) (set! tags (assoc-set! tags (string-append (_ "Time Signature Change") " (O)") (cons "TimeSig" 'timesig)))) (if (StemDirective?) (set! tags (assoc-set! tags (string-append (_ "Stems Direction") " (O)") (cons "StemDir" 'stemdirection)))) (if (Clef?) (set! tags (assoc-set! tags (string-append (_ "Clef Change") " (O)") (cons "ClefChange" 'clef)))) (set! tag (d-DirectiveGetForTag-standalone)) (if tag (set! tags (assoc-set! tags (string-append tag " (O)") (cons tag 'standalone))))) ;;;actual procedure (d-PushPosition) (d-MoveToBeginning) (let loop ((staffnum (d-GetStaff))) (get-tags) (if (d-NextObject) (loop staffnum) (if (d-GoToPosition #f (+ 1 staffnum) measurenum 1) (loop (+ 1 staffnum))))) (d-PopPosition) (d-MoveCursorLeft) ; to include the original position if possible. (if (null? tags) (d-InfoDialog (_ "Nothing in this movement can be searched for (no ties, slurs, time signature changes, tuplets, directives etc).")) (let ((choice (RadioBoxMenuList tags))) (if choice (d-EditSimilar choice))))) denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/ShowLastChange.xml0000644000000000000000000000013213135434035024136 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.779981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/ShowLastChange.xml0000644000175000017500000000061513135434035026011 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Undo ShowLastChange <_label>Show Last Change <_tooltip>Shows the last change recorded on the Undo stack. denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/EditAll.xml0000644000000000000000000000013213135434035022602 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.789981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/EditAll.xml0000644000175000017500000000075013135434035024455 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EditAll ResumeEdit <_label>Edit All of Type <_tooltip>Resumes the last Seeking/Editing/Deleting operation. All objects of the type last searched for will be sought again, from the cursor onwards. denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/EditSimilar.xml0000644000000000000000000000013213135434035023472 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.789981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/EditSimilar.xml0000644000175000017500000000122413135434035025342 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS EditObject EditSimilar <_label>Edit Here (and ...) <_tooltip>Seek and edit Denemo Directives starting with the one at the cursor and optionally similar ones following. Position the cursor on a particular notehead to edit directives attached to individual noteheads (such as fingering), otherwise you will edit directives attached at the chord level (such as beaming). denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/KeyBindings0000644000000000000000000000013213135434150022671 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/KeyBindings/0000755000175000017500000000000013135434150024617 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/EditMenu/KeyBindings/PaxHeaders.19168/StartEmacs2KeyShortcut.xml0000644000000000000000000000013213135434035030027 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.789981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/KeyBindings/StartEmacs2KeyShortcut.xml0000644000175000017500000000067013135434035031703 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS StartEmacs2KeyShortcut Control+x Control+c <_label>Start Emacs 2-key Shortcut <_tooltip>Initiates a 2-key sequence, emacs style. denemo-2.2.0/actions/menus/MainMenu/EditMenu/KeyBindings/PaxHeaders.19168/StartEmacs2KeyShortcut.scm0000644000000000000000000000013213135434035030011 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.789981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/KeyBindings/StartEmacs2KeyShortcut.scm0000644000175000017500000000115413135434035031663 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;; emacs commands (define first (d-GetCommandKeypress)) (define second (d-GetKeypress)) (define command (lambda () (d-GetUserInput (string-append first ", " second) "Undefined combination." "OK") )) (define cancel (lambda () (d-GetUserInput first "Cancelled." "OK") )) (cond ((equal? first "x") (cond ((equal? second "s") (set! command d-Save)) ((equal? second "k") (set! command d-Close)) ((equal? second "g") (set! command cancel)) )) ((equal? first "c") (cond ((equal? second "g") (set! command cancel)) )) ) (command) denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/Void.scm0000644000000000000000000000013213135434035022147 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.799981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/Void.scm0000644000175000017500000000214513135434035024022 0ustar00jjbenhamjjbenham00000000000000 (let ((tag "Void")) (cond ((Music?) (if (d-Directive-chord? tag) (d-DirectiveDelete-chord tag) (begin (d-DirectivePut-chord-prefix tag "\\void ") (d-DirectivePut-chord-display tag "Void"))) (d-SetSaved #f)) ((d-Directive-standalone?) (if (d-Directive-standalone? tag) (d-DirectiveDelete-standalone tag) (begin (d-DirectivePut-standalone tag) (d-DirectivePut-standalone-prefix tag "\\void ") (d-DirectivePut-standalone-display tag "Void"))) (d-SetSaved #f)) ((Clef?) (if (d-Directive-clef? tag) (d-DirectiveDelete-clef tag) (begin (d-DirectivePut-clef-prefix tag "\\void ") (d-DirectivePut-clef-display tag "Void"))) (d-SetSaved #f)) ((Timesignature?) (if (d-Directive-timesig? tag) (d-DirectiveDelete-timesig tag) (begin (d-DirectivePut-timesig-prefix tag "\\void ") (d-DirectivePut-timesig-display tag "Void"))) (d-SetSaved #f)) ((Keysignature?) (if (d-Directive-keysig? tag) (d-DirectiveDelete-keysig tag) (begin (d-DirectivePut-keysig-prefix tag "\\void ") (d-DirectivePut-keysig-display tag "Void"))) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/ResumeEdit.xml0000644000000000000000000000013213135434035023332 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.799981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/ResumeEdit.xml0000644000175000017500000000064513135434035025210 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ResumeEdit EditSimilar <_label>Resume Seek/Edit <_tooltip>Resumes seeking and optionally editing the last sought type of object. denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/PasteReplaceSelection.scm0000644000000000000000000000013213135434035025464 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.799981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/PasteReplaceSelection.scm0000644000175000017500000000016713135434035027341 0ustar00jjbenhamjjbenham00000000000000(if (d-MarkStatus) (d-DeleteSelectionLeaveEmpty)) ;; Goes to the beginning of the selection afterwards (DenemoPaste #t)denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/DenemoDurationInTicks.scm0000644000000000000000000000013213135434035025450 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.799981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/DenemoDurationInTicks.scm0000644000175000017500000000070313135434035027321 0ustar00jjbenhamjjbenham00000000000000(let ((tag "DenemoDurationInTicks")(params DenemoDurationInTicks::params)) (if (equal? params "edit") (set! params #f)) (if (not params) (begin (set! params (d-GetUserInput (_ "Set Denemo Duration") (_ "Give duration desired in ticks (PPQN) ") (if (d-GetDurationInTicks) (number->string (d-GetDurationInTicks)) "0"))))) (if params (d-SetDurationInTicks (string->number params))) (d-SetSaved #f) (d-RefreshDisplay))denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/ChooseSeekEditDirectives.xml0000644000000000000000000000013213135434035026144 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.819981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/ChooseSeekEditDirectives.xml0000644000175000017500000000107413135434035030017 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChooseSeekEditDirectives EditObject <_label>Choose, Seek & Edit <_tooltip>Creates a menu of all the types of objects that can be searched for in this movement. Selecting one moves the cursor to the next object of that type which can then be edited, or further searches made. denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/ConvertDrum2GmSingleSelection.xml0000644000000000000000000000013213135434035027112 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.819981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/ConvertDrum2GmSingleSelection.xml0000644000175000017500000000116113135434035030762 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ReloadDrumHash ConvertDrum2GmSingleSelection <_label>Convert GM-Drum to User-Drum <_tooltip>Converts between the midi-drum notation and a user-drum notation. The user can set his/her drummap in a template in ~/.denemo/templates or choose any other copy he made of the template file to have drummaps for different drummers available. denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/ShowLastChange.scm0000644000000000000000000000013213135434035024120 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.819981805 30 ctime=1500919912.946648472 denemo-2.2.0/actions/menus/MainMenu/EditMenu/ShowLastChange.scm0000644000175000017500000000027713135434035025777 0ustar00jjbenhamjjbenham00000000000000;;;;ShowLastChange (let ((last (d-GetLastChange))) (if last (d-InfoDialog (string-append (_ "The last change was:\n") last)) (d-InfoDialog (_ "No change recorded in Undo stack")))) denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/InsertNthSnippet.scm0000644000000000000000000000013213135434035024527 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.819981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/InsertNthSnippet.scm0000644000175000017500000000071713135434035026405 0ustar00jjbenhamjjbenham00000000000000 ;;;InsertNthSnippet (Help::Push (cons 'doublestroketemp (string-append " " (_ "Type Snippet Number 1,2...") ""))) (let ((duration (d-GetKeypress))) (if (and duration (string->number duration)) (begin (d-InsertSnippet (string->number duration) #f) (Help::Pop)) (begin (Help::Pop) (Help::TimedNotice (_ "To use this function correctly you need to give the number of the snippet to be inserted"))))) denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/InsertNthSnippet.xml0000644000000000000000000000013213135434035024545 xustar0030 mtime=1500919837.953315139 30 atime=1500919931.819981805 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/InsertNthSnippet.xml0000644000175000017500000000075313135434035026423 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS InsertNthSnippet PasteReplaceSelection <_label>Insert Nth Snippet <_tooltip>Pastes the Nth snippet into the score at the cursor position. Follow with the number 1,2,... of the snippet to be inserted denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/EditScoreAndMovementDirectives.scm0000644000000000000000000000013213135434035027307 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.833315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/EditScoreAndMovementDirectives.scm0000644000175000017500000000007113135434035031156 0ustar00jjbenhamjjbenham00000000000000;;;EditScoreAndMovementDirectives (d-EditSystemDirective)denemo-2.2.0/actions/menus/MainMenu/EditMenu/PaxHeaders.19168/AdvancedEdit.scm0000644000000000000000000000013213135434035023561 xustar0030 mtime=1500919837.949981805 30 atime=1500919931.833315139 30 ctime=1500919912.943315139 denemo-2.2.0/actions/menus/MainMenu/EditMenu/AdvancedEdit.scm0000644000175000017500000000035113135434035025431 0ustar00jjbenhamjjbenham00000000000000;;;AdvancedEdit (if (d-Directive-standalone?) (if (not (d-DirectiveTextEdit-standalone)) (d-DeleteObject)) (d-InfoDialog (_ "To edit a directive attached to the object at the cursor\nright click and choose Run Object Editor"))) denemo-2.2.0/actions/menus/MainMenu/PaxHeaders.19168/FileMenu0000644000000000000000000000013213135434035020457 xustar0030 mtime=1500919837.963315139 30 atime=1500919914.546648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/0000755000175000017500000000000013135434035022405 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/FileMenu/PaxHeaders.19168/Import0000644000000000000000000000013213135434150021727 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/0000755000175000017500000000000013135434150023655 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/PaxHeaders.19168/Import-MusicXml.xml0000644000000000000000000000013213135434035025541 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.833315139 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/Import-MusicXml.xml0000644000175000017500000000060413135434035027412 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Import-Lilypond Import-MusicXml <_label>Import MusicXml <_tooltip>Try to Import a MusicXml file denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/PaxHeaders.19168/SelectMidiImportStrategy.xml0000644000000000000000000000013213135434035027470 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.839981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/SelectMidiImportStrategy.xml0000644000175000017500000000067413135434035031350 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SelectMidiImportStrategy Import-MusicXml <_label>MIDI Import <_tooltip>Import Music from a MIDI file, either guided or (in simple cases) automatically. denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/PaxHeaders.19168/SelectMidiImportStrategy.scm0000644000000000000000000000013213135434035027452 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.839981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/SelectMidiImportStrategy.scm0000644000175000017500000000051613135434035031325 0ustar00jjbenhamjjbenham00000000000000;;;SelectMidiImportStrategy (let ((choice (d-GetOption (string-append (_ "Guided Import") stop (_ "Automatic Import") stop)))) (cond ((boolean? choice) (d-InfoDialog (_ Cancelled))) ((equal? choice (_ "Guided Import") ) (d-GuidedMidiImport)) ((equal? choice (_ "Automatic Import")) (d-ImportMidi)))) denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/PaxHeaders.19168/Import-Midi.scm0000644000000000000000000000013213135434035024644 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.839981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/Import-Midi.scm0000644000175000017500000000003413135434035026512 0ustar00jjbenhamjjbenham00000000000000(d-NewWindow) (d-ImportMidi)denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/PaxHeaders.19168/Import-Midi.xml0000644000000000000000000000013213135434035024662 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.839981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/Import-Midi.xml0000644000175000017500000000060113135434035026530 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ImportMusicXml Import-Midi <_label>Import Midi (Limited) <_tooltip>Try to Import a Midi File denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/PaxHeaders.19168/Import-MusicXml.scm0000644000000000000000000000013213135434035025523 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.839981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/Import-MusicXml.scm0000644000175000017500000000004013135434035027366 0ustar00jjbenhamjjbenham00000000000000(d-NewWindow) (d-ImportMusicXml)denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/PaxHeaders.19168/Import-Lilypond.scm0000644000000000000000000000013213135434035025554 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.849981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/Import-Lilypond.scm0000644000175000017500000000012513135434035027423 0ustar00jjbenhamjjbenham00000000000000(if (d-GetSaved) (d-ImportLilypond) (d-WarningDialog (_ "You have unsaved work.")))denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/PaxHeaders.19168/Import-Lilypond.xml0000644000000000000000000000013213135434035025572 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.849981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Import/Import-Lilypond.xml0000644000175000017500000000061213135434035027442 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Import-Midi Import-Lilypond <_label>Import Lilypond (Limited) <_tooltip>Try to Import a Lilypond File denemo-2.2.0/actions/menus/MainMenu/FileMenu/PaxHeaders.19168/Export0000644000000000000000000000013213135434150021736 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/0000755000175000017500000000000013135434150023664 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/PaxHeaders.19168/QuickLilyPondParts.xml0000644000000000000000000000013213135434035026300 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.849981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/QuickLilyPondParts.xml0000644000175000017500000000066413135434035030157 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS QuickLilyPondParts QuickLilyPondPart <_label>Quick LilyPond Parts <_tooltip>Runs Quick LilyPond Part on all the staffs of the current movement. denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/PaxHeaders.19168/QuickLilyPondExport.scm0000644000000000000000000000013213135434035026452 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.849981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/QuickLilyPondExport.scm0000644000175000017500000000043613135434035030326 0ustar00jjbenhamjjbenham00000000000000;;QuickLilyPondExport (d-ExportMUDELA (let ((f (d-Open "query=filename"))) (if f (substring f 0 (- (string-length f) 7)) (d-WarningDialog (_ "The score does not have a file name, so no file name for the output LilyPond file can be constructed. Save the score first."))))) denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/PaxHeaders.19168/QuickLilyPondPartsAllMovements.0000644000000000000000000000013213135434035030106 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.849981805 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/QuickLilyPondPartsAllMovements.xml0000644000175000017500000000066613135434035032510 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS QuickLilyPondPartsAllMovements QuickLilyPondParts <_label>Quick LilyPond Parts All Movements <_tooltip>Runs Quick LilyPond Parts on all movemnts. denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/PaxHeaders.19168/QuickLilyPondParts.scm0000644000000000000000000000013213135434035026262 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.866648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/QuickLilyPondParts.scm0000644000175000017500000000007513135434035030135 0ustar00jjbenhamjjbenham00000000000000;;;QuickLilyPondParts (ForAllStaffs "(d-QuickLilyPondPart)") denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/PaxHeaders.19168/ExportAudio.xml0000644000000000000000000000013213135434035025002 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.866648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/ExportAudio.xml0000644000175000017500000000057113135434035026656 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ExportMIDI ExportAudio <_label>Export Audio <_tooltip>Exports recorded audio output. denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/PaxHeaders.19168/QuickLilyPondPart.scm0000644000000000000000000000013213135434035026077 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.866648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/QuickLilyPondPart.scm0000644000175000017500000000225713135434035027756 0ustar00jjbenhamjjbenham00000000000000;;;QuickLilyPondPart (d-PushPosition) (d-MoveToBeginning) (let ((current "-1")(name (d-Open "query=filename"))) (if name (let* ((filename (string-append (substring name 0 (- (string-length name) 7)) "-denemo-" (number->string (d-GetMovement)) "-" (number->string (d-GetStaff)) ".ly")) (port (open-file filename "w"))) (if port (begin (format port "%Movement ~A Staff ~A" (d-GetMovement) (d-GetStaff)) (let loop () (define measure-number (d-GetMeasure)) (begin (if (not (equal? measure-number current)) (begin (set! current measure-number) (format port "\n") (if (zero? (modulo current 10)) (format port "%Measure ~A\n" measure-number)))) (let ((lily (d-GetLilyPond))) (if lily (format port "~A " (d-GetLilyPond)) (format port "%Empty Measure\n"))) (if (d-NextObject) (loop) (close-port port))))) (d-WarningDialog (_ "The score does not have a file name, so no file name for the output LilyPond file can be constructed. Save the score first.")))))) (d-PopPosition) denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/PaxHeaders.19168/ExportAudio.scm0000644000000000000000000000013213135434035024764 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.866648472 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/ExportAudio.scm0000644000175000017500000000002713135434035026634 0ustar00jjbenhamjjbenham00000000000000(d-ExportRecordedAudio)denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/PaxHeaders.19168/QuickLilyPondPartsAllMovements.0000644000000000000000000000013213135434035030106 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.876648473 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/QuickLilyPondPartsAllMovements.scm0000644000175000017500000000011513135434035032457 0ustar00jjbenhamjjbenham00000000000000;;;QuickLilyPondPartsAllMovements (ForAllMovements "(d-QuickLilyPondParts)") denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/PaxHeaders.19168/QuickLilyPondPart.xml0000644000000000000000000000013213135434035026115 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.876648473 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/QuickLilyPondPart.xml0000644000175000017500000000106513135434035027770 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS QuickLilyPondExport QuickLilyPondPart <_label>Quick LilyPond Part <_tooltip>Writes a file containing the music of the current staff in LilyPond format. The filename is the current file name with \"-denemo\" and the movement and staff numbers appended (and the .ly suffix). denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/PaxHeaders.19168/QuickLilyPondExport.xml0000644000000000000000000000013213135434035026470 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.876648473 30 ctime=1500919912.949981805 denemo-2.2.0/actions/menus/MainMenu/FileMenu/Export/QuickLilyPondExport.xml0000644000175000017500000000070313135434035030341 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ExportMUDELA QuickLilyPondExport <_label>Quick LilyPond Export <_tooltip>Exports as LilyPond to a file named the same as the .denemo file but with .ly suffix. denemo-2.2.0/actions/menus/MainMenu/FileMenu/PaxHeaders.19168/SaveMenu0000644000000000000000000000013213135434150022200 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/SaveMenu/0000755000175000017500000000000013135434150024126 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/FileMenu/SaveMenu/PaxHeaders.19168/SaveAsTemplate.scm0000644000000000000000000000013213135434035025641 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.876648473 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/SaveMenu/SaveAsTemplate.scm0000644000175000017500000000200013135434035027502 0ustar00jjbenhamjjbenham00000000000000;;SaveAsTemplate (let ((warning #f)) (d-GoToPosition 1 1 1 1) (if (not (EmptyMeasure?)) (if (d-SetSaved) (let ((choice (RadioBoxMenu (cons (_ "Remove All Music?") 'remove) (cons (_ "Keep Music?") 'keep)))) (case choice ((remove) (begin (if (d-Directive-standalone? "DenemoLink") (begin (d-SetMark) (d-Copy))) (let loop () (d-DeleteFromCursorToEnd 'all) (if (and (d-NextMovement) (d-GoToPosition #f 1 1 1)) (loop))) (d-GoToPosition 1 1 1 1) (d-Paste))))) (set! warning (string-append (_ "Cancelled: ") (_ "Score is not saved"))))) (if warning (d-WarningDialog warning) (d-SaveTemplate))) denemo-2.2.0/actions/menus/MainMenu/FileMenu/SaveMenu/PaxHeaders.19168/SetThumbnail.scm0000644000000000000000000000013213135434035025362 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.886648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/SaveMenu/SetThumbnail.scm0000644000175000017500000000141613135434035027235 0ustar00jjbenhamjjbenham00000000000000;;;ThumbnailSelection (if (d-GetSaved) (begin (if (d-PreviousMovement) (d-WarningDialog (_ "Returning to the first Movement for thumbnail selection"))) (while (d-PreviousMovement) (display "Seeking first movement")) (if (d-GoToSelectionStart) (let ((response "y")) (d-SetThumbnailSelection) (d-Save) (set! response (d-GetUserInput (_ "Thumbnail Selection Complete") (_ "Create thumbnail now?") response)) (if (and response (equal? response "y")) (d-CreateThumbnail #f))) (d-WarningDialog (_ "No Selection to set the thumbnail to\nCreate a selection and re-run the command.")))) (d-WarningDialog (_ "Save the score before trying to set the thumbnail"))) denemo-2.2.0/actions/menus/MainMenu/FileMenu/SaveMenu/PaxHeaders.19168/SetThumbnail.xml0000644000000000000000000000013213135434035025400 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.886648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/SaveMenu/SetThumbnail.xml0000644000175000017500000000072613135434035027256 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ScoreProlog SetThumbnail <_label>Set Thumbnail from Selection <_tooltip>Sets the thumbnail for opening this file to the selection. (The selection must be in the first movement). denemo-2.2.0/actions/menus/MainMenu/FileMenu/SaveMenu/PaxHeaders.19168/SaveAsTemplate.xml0000644000000000000000000000013213135434035025657 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.886648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/SaveMenu/SaveAsTemplate.xml0000644000175000017500000000065513135434035027536 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SaveAsTemplate SaveParts <_label>Save Template <_tooltip>Saves the current score as a template, offering to remove the music if desired. denemo-2.2.0/actions/menus/MainMenu/FileMenu/PaxHeaders.19168/OpenMenu0000644000000000000000000000013213135434150022203 xustar0030 mtime=1500919912.796648472 30 atime=1500919914.546648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/0000755000175000017500000000000013135434150024131 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/PaxHeaders.19168/OpenAudio.scm0000644000000000000000000000013213135434035024651 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.886648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/OpenAudio.scm0000644000175000017500000000304513135434035026524 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;;;;;OpenAudio (let ((seconds (d-OpenSourceAudioFile))) (define old_volume (d-MasterVolume)) (if (and seconds (EmptyMeasure?) (not (d-MoveToMeasureRight)) (not (d-MoveToStaffDown))) (let ( (timesig (d-InitialTimeSig "query=timesigname")) (numerator #f)(denominator #f)) (set! numerator (string->number (car (string-split timesig #\/)))) (set! denominator (string->number (cadr (string-split timesig #\/)))) (d-MasterVolume 0) (d-CursorToNote "c'") (d-NonPrintingStaff) (d-StaffProperties (string-append "denemo_name=" DenemoClickTrack)) (let loop ((count numerator)) (if (> count 0) (begin (eval-string (string-append "(d-" (number->string (duration::lilypond->denemo denominator)) ")")) (d-SetNonprinting) (d-CursorUp) (loop (- count 1))))) (d-RecreateTimebase) (let loop ((count (/ seconds (d-GetMidiOffTime)))) (if (> count 0) (begin (d-AddDuplicateMeasure) (loop (- count 1))))) (d-MuteStaff "unmute") (d-MoveToBeginning) (d-MasterVolume old_volume) (d-SetPlaybackInterval 0.0 seconds) (d-NewStaffAfter)))) (d-RecreateTimebase) denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/PaxHeaders.19168/GuidedMidiImport.scm0000644000000000000000000000013213135434035026165 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.896648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/GuidedMidiImport.scm0000644000175000017500000000253213135434035030040 0ustar00jjbenhamjjbenham00000000000000;;;GuidedMidiImport (if (or (MovementEmpty?) (d-New)) (begin (d-ImportMidi "guided=true") (if (d-GetImportedMidiTracks) (begin (d-CreateClickStaffForMidi) (d-MoveToStaffDown) (d-DeleteStaff) (d-LoadMidiTrack) (d-InfoDialog (_ "You can now insert the notes from the MIDI track into the staff beneath the (top) click track staff. The MIDI notes detected are displayed above the top staff, and the first is marked ready to be entered. The Return key will enter the note using the duration calculated from the time until the next note - override this by playing a duration key 0, 1 .... or clicking a duration button. Use the Ins key to insert a note in the chord if the MIDI notes are not sequential. You can use the Navigation commands to move the marked MIDI note around if you need to back up or re-start (or you can double-click on the MIDI note marker itself - above the blue line at the top - to make it the marked MIDI note). When you have finished with this MIDI track use the button (or use the Staff->Add Staff->MIDI menu) to load another track. It is best to work up from the lowest numbered track so that the staffs are in order without having to swap them afterwards.")) (d-ShowPalettes "Midi Import") (d-AddKeybinding "InsertMarkedMidi" "Return"))))) denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/PaxHeaders.19168/OpenMyDefaultTemplate.scm0000644000000000000000000000013213135434035027176 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.896648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/OpenMyDefaultTemplate.scm0000644000175000017500000000037713135434035031056 0ustar00jjbenhamjjbenham00000000000000;;;OpenMyDefaultTemplate (if (not (d-GetSaved)) (d-New)) (if (d-OpenMyTemplate "Default.denemo") (d-SetSaved #t) (d-WarningDialog (_ "Failed to open Default.denemo in your custom templates directory\nHave you saved a template called Default yet?"))) denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/PaxHeaders.19168/OpenSourceDialog.scm0000644000000000000000000000013213135434035026170 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.899981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/OpenSourceDialog.scm0000644000175000017500000000004713135434035030042 0ustar00jjbenhamjjbenham00000000000000;;;OpenSourceDialog (d-OpenSourceFile) denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/PaxHeaders.19168/OpenMyDefaultTemplate.xml0000644000000000000000000000013213135434035027214 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.899981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/OpenMyDefaultTemplate.xml0000644000175000017500000000067113135434035031071 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenMyTemplate OpenMyDefaultTemplate <_label>Open Default Template <_tooltip>Opens the template Default.denemo in the user's custom template folder. denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/PaxHeaders.19168/OpenProofReadDialog.xml0000644000000000000000000000013213135434035026627 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.919981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/OpenProofReadDialog.xml0000644000175000017500000000110313135434035030473 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenNewWindow OpenProofReadDialog <_label>Open Proof Read PDF <_tooltip>Opens a dialog to fetch a PDF file generated by Denemo which has had proof reading annotations added to it. Clicking on notes in this file moves the cursor to the correct point in the Denemo display. denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/PaxHeaders.19168/OpenProofReadDialog.scm0000644000000000000000000000013213135434035026611 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.919981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/OpenProofReadDialog.scm0000644000175000017500000000005713135434035030464 0ustar00jjbenhamjjbenham00000000000000;;;OpenProofReadDialog (d-OpenProofReadFile) denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/PaxHeaders.19168/GuidedMidiImport.xml0000644000000000000000000000013213135434035026203 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.919981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/GuidedMidiImport.xml0000644000175000017500000000072213135434035030055 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS GuidedMidiImport OpenAudio <_label>Open Source MIDI <_tooltip>Opens a MIDI file for transcribing. Load each track in turn and insert the MIDI notes by playing the durations. denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/PaxHeaders.19168/OpenSourceDialog.xml0000644000000000000000000000013213135434035026206 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.919981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/OpenSourceDialog.xml0000644000175000017500000000110513135434035030054 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenNewWindow OpenSourceDialog <_label>Open Source for Transcribing <_tooltip>Opens a dialog to fetch a source facsimile or manuscript. Links can be placed in the Denemo score to this source file so that the source passage for a given measure can be re-displayed when reviewing the score. denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/PaxHeaders.19168/OpenAudio.xml0000644000000000000000000000013213135434035024667 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.933315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/OpenMenu/OpenAudio.xml0000644000175000017500000000064613135434035026546 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpenSourceDialog OpenAudio <_label>Open Source Audio <_tooltip>Opens an audio file which will be mixed with the current movement. denemo-2.2.0/actions/menus/MainMenu/FileMenu/PaxHeaders.19168/PrintMenu0000644000000000000000000000013213135434150022376 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/0000755000175000017500000000000013135434150024324 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintAllLayouts.scm0000644000000000000000000000013213135434035026267 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.933315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintAllLayouts.scm0000644000175000017500000000166113135434035030144 0ustar00jjbenhamjjbenham00000000000000;;;;;;;PrintAllLayouts (define-once PrintAllLayouts::Finished #f) (if PrintAllLayouts::Finished (begin (disp "printalllayouts not #finished\n") (if (d-SelectNextLayout) (begin (disp "selected next\n") (set! FinalizeTypesetting (lambda () (set! FinalizeTypesetting DefaultFinalizeTypesetting)(d-PrintTypesetPDF))) (d-TypesetForScript "(d-PrintView)")) (begin (disp "didn't select next") (set! PrintAllLayouts::Finished #f) (d-SelectDefaultLayout) (set! FinalizePrint DefaultFinalizePrint)))) (begin (disp "printalllayouts is #f\n") (if (d-SelectFirstLayout) (begin (disp "selected first\n") (set! FinalizePrint (lambda () (set! PrintAllLayouts::Finished #t) (d-PrintAllLayouts))) (set! FinalizeTypesetting (lambda () (set! FinalizeTypesetting DefaultFinalizeTypesetting)(d-PrintTypesetPDF))) (d-TypesetForScript "(d-PrintView)") ) (begin (d-WarningDialog (_ "No Layouts Available?")))))) denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/CheckAndPrint.xml0000644000000000000000000000013213135434035025654 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.933315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/CheckAndPrint.xml0000644000175000017500000000067313135434035027533 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CheckAndPrint Print <_label>Check and Print <_tooltip>Checks the score for errors, if none are found proceeds to typeset and print the current layout. denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintScoreAndParts.scm0000644000000000000000000000013213135434035026706 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.933315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintScoreAndParts.scm0000644000175000017500000000235213135434035030561 0ustar00jjbenhamjjbenham00000000000000;PrintScoreAndParts (let ((initial #f)) (d-PushPosition) (while (d-PreviousMovement)) (d-SelectDefaultLayout) (set! initial (d-Directive-scoreheader? "BookTitle")) (if (and initial (not (d-Directive-scoreheader? "BookInstrumentation"))) (d-BookInstrumentation (_ "Full Score"))) (d-ReduceLayoutToLilyPond) (set! initial (d-DirectiveGet-scoreheader-display "BookInstrumentation")) (while (d-MoveToStaffUp)) (let loop1 () (if (not (d-DirectiveGet-staff-display "InstrumentName")) (d-InstrumentName)) (if (d-MoveToStaffDown) (loop1))) (let loop2 () (let ((thename (scheme-escape (GetNthLine (d-DirectiveGet-staff-display "InstrumentName") 0)))) (if initial (d-BookInstrumentation thename)) (d-LilyPondForPart) (d-ReduceLayoutToLilyPond);this fixes the instrumentation for this layout ) (if (d-MoveToStaffUp) (loop2))) (d-PrintAllLayouts) ;; this works asynchronously (if initial (d-BookInstrumentation initial)) (d-PopPosition)) (d-WarningDialog "A set of custom layouts was created for this command.\nYou can continue to use these if you do not make structural changes to the layout. Otherwise, once you have finished printing from these layouts delete them so that you can alter the titles, add new staffs etc.")denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/NonPrintingStaffs.xml0000644000000000000000000000013213135434035026613 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.943315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/NonPrintingStaffs.xml0000644000175000017500000000062113135434035030463 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NonPrintingStaffs CheckAndPrint <_label>Select Staffs to Print <_tooltip>Makes selected staffs non-printing. denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintAccompanistsScore.scm0000644000000000000000000000013213135434035027616 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.943315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintAccompanistsScore.scm0000644000175000017500000000207013135434035031466 0ustar00jjbenhamjjbenham00000000000000;;;PrintAccompanistsScore (let ((saved (d-GetSaved)) (count (d-GetUserInput (_ "Print Accompanist's Score") (_ "How many staffs to make small?") "1"))) (if (and count (string->number count)) (let ((staffscript "")) (set! count (string->number count)) (let loop ((number 1)) (set! staffscript (string-append staffscript "(d-GoToPosition #f " (number->string number) " 1 1) (d-SmallerStaff)")) (if (< number count) (loop (1+ number)))) (let ((name (string-append (_ "Accompanist with ") (number->string count) (_ " cue part") ))) (d-DeleteLayout name) (d-SelectDefaultLayout) (ForAllMovements staffscript) (d-RefreshLilyPond) (d-CreateLayout name) (d-SelectDefaultLayout) (ForAllMovements staffscript) (d-WarningDialog (string-append (_ "Use Typeset->") name (_ " in the Print View to typeset your new layout")))) (d-SetSaved #f)))) denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintPartWithTitlePage.scm0000644000000000000000000000013213135434035027537 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.943315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintPartWithTitlePage.scm0000644000175000017500000000100713135434035031406 0ustar00jjbenhamjjbenham00000000000000;;;PrintPartWithTitlePage (if (and (d-Directive-scoreheader? "BookTitle") (d-Directive-staff? "InstrumentName")) (let ((saved (d-GetSaved)) (datefield (d-DirectiveGet-scoreheader-display "BookDate")) (instrument (d-DirectiveGet-staff-display "InstrumentName"))) (d-BookDate instrument) (d-PrintPart) (if datefield (d-BookDate datefield) (d-DirectiveDelete-scoreheader "BookDate")) (d-SetSaved saved)) (begin (d-WarningDialog (_ "No Book Title, see Score->Titles->Book Titles")))) denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/Preview4Bars.xml0000644000000000000000000000013213135434035025514 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.943315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/Preview4Bars.xml0000644000175000017500000000056313135434035027371 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Preview4Bars <_label>Preview Four Measures <_tooltip>Print preview of current bar and the next three. denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintWithAmbitus.scm0000644000000000000000000000013213135434035026436 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.953315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintWithAmbitus.scm0000644000175000017500000000164113135434035030311 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;PrintWithAmbitus (let ((tag "Ambitus")) (define (toggleAmbitus) (while (d-PreviousMovement)) (let movement () (while (d-MoveToStaffUp)) (let staff () (if (d-Directive-staff? tag) (d-DirectiveDelete-staff tag) (begin (d-DirectivePut-staff-prefix tag "\\consists \"Ambitus_engraver\"\n") (d-DirectivePut-staff-override tag (logior DENEMO_ALT_OVERRIDE DENEMO_OVERRIDE_AFFIX DENEMO_OVERRIDE_GRAPHIC)))) (if (or (d-MoveToVoiceDown) (d-MoveToStaffDown)) (staff))) (if (d-NextMovement) (movement)))) (d-PushPosition) (let ((name (_ "Ambitus"))) (d-DeleteLayout name) (d-SelectDefaultLayout) (toggleAmbitus) (d-RefreshLilyPond) (d-CreateLayout name) (d-SelectDefaultLayout) (toggleAmbitus) (d-WarningDialog (string-append (_ "Use Typeset->") name (_ " in the Print View to typeset your new layout"))) (d-SetSaved #f)) (d-PopPosition)) denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/NonPrintingStaffs.scm0000644000000000000000000000013213135434035026575 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.953315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/NonPrintingStaffs.scm0000644000175000017500000000404413135434035030450 0ustar00jjbenhamjjbenham00000000000000;;;NonPrintingStaffs (let ((tag "NonPrintingStaff") (ptr #f)(allmovements #f) (layout #f)(numstaffs (d-GetStaffsInMovement)) (initial-list '()) (thelist '())) (define (SetNonPrintingStaffs stafflist) (let movement-loop () (set! ptr stafflist);(disp "Setting to " ptr "\n") (d-MoveToMovementBeginning) (let loop () (if (cdar ptr) (d-NonPrintingStaff 'unset) (d-NonPrintingStaff 'set)) (set! ptr (cdr ptr)) (if (d-MoveToStaffDown) (loop) (if (and allmovements (d-NextMovement)) (movement-loop)))))) (d-SelectDefaultLayout) (d-PushPosition) (d-MoveToMovementBeginning) (let loop () (set! thelist (cons (cons (d-StaffProperties "query=denemo_name") (not (d-DirectiveGetForTag-staff tag))) thelist)) (if (d-MoveToStaffDown) (loop))) (set! thelist (reverse thelist)) (set! initial-list (reverse thelist)) (set! thelist (cons (cons (_ "Do Not Create Layout for this selection") #t) thelist)) (set! thelist (cons (cons (_ "Apply to All Movements") #t) thelist)) (set! thelist (d-CheckBoxes thelist (_ "Choose Staffs to Print"))) (set! allmovements (cdar thelist)) (set! thelist (cdr thelist)) (set! layout (cdar thelist)) (set! thelist (cdr thelist)) (if thelist (begin (if allmovements (while (d-PreviousMovement))) (SetNonPrintingStaffs thelist) (d-RefreshLilyPond) ; (disp "Now we have " thelist "and " initial-list "for layout " layout "\n") (if (not layout) (let ((name (d-GetUserInput (_ "Creating Layout") (_ "Give Layout Name") (_ "Woodwind")))) (if (and name (positive? (string-length name))) (begin (d-CreateLayout name) (if allmovements (while (d-PreviousMovement))) (SetNonPrintingStaffs initial-list) (d-SelectDefaultLayout) (d-WarningDialog (string-append (_ "Use Typeset->") name (_ " in the Print View to typeset your new layout")))))))) (d-WarningDialog (_ "Cancelled"))) (d-PopPosition)) denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintBassPartWithoutFigures.0000644000000000000000000000013213135434035030123 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.953315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintBassPartWithoutFigures.scm0000644000175000017500000000211013135434035032471 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;PrintBassPartWithoutFigures (let ((tag "PrintBassPartWithoutFigures")) (define (HideOtherStaffs) (ForAllMovements "(ForAllStaffs \" (if (not (d-HasFigures)) (d-NonPrintingStaff 'set)) \")")) (define (ShowOtherStaffs) (ForAllMovements "(ForAllStaffs \" (if (not (d-HasFigures)) (d-NonPrintingStaff 'unset)) \")")) (let ((name (_ "Bass without figures"))) (d-DeleteLayout name) (d-SelectDefaultLayout) (d-ToggleFigures 'noninteractive) (HideOtherStaffs) (d-RefreshLilyPond) (d-CreateLayout name) (d-SelectDefaultLayout) (d-ToggleFigures 'noninteractive) (ShowOtherStaffs) (d-WarningDialog (string-append (_ "Use Typeset->") name (_ " in the Print View to typeset your new layout"))) (d-SetSaved #f))) denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintBassPartWithoutFigures.0000644000000000000000000000013213135434035030123 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.976648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintBassPartWithoutFigures.xml0000644000175000017500000000070213135434035032514 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PrintAccompanistsScore PrintBassPartWithoutFigures <_label>Print Bass Part Omitting Figures <_tooltip>Prints the Bass part omitting any figured bass figures. denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/CheckAndPrint.scm0000644000000000000000000000013213135434035025636 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.976648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/CheckAndPrint.scm0000644000175000017500000000037513135434035027514 0ustar00jjbenhamjjbenham00000000000000;;;CheckAndPrint (d-CheckScore 0) (if CheckScore::return (d-InfoDialog (string-append (_ "You may need to fix this warning:\n\"") CheckScore::return (_ "\"\nbefore printing."))) (begin ;;;d-Typeset then PrintView ??? (d-Print))) denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintPartWithTitlePage.xml0000644000000000000000000000013213135434035027555 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.976648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintPartWithTitlePage.xml0000644000175000017500000000063313135434035031430 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PrintPart PrintPartWithTitlePage <_label>Print Part with Title Page <_tooltip>Prints part with part name on title page denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintWithAmbitus.xml0000644000000000000000000000013213135434035026454 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.976648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintWithAmbitus.xml0000644000175000017500000000070613135434035030330 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PrintAccompanistsScore PrintWithAmbitus <_label>Print with Ambitus <_tooltip>Prints the score printing the range (ambitus) of each part at the start of the staff denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintAllLayouts.xml0000644000000000000000000000013213135434035026305 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.976648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintAllLayouts.xml0000644000175000017500000000062513135434035030161 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Print PrintAllLayouts <_label>Prints All Layouts <_tooltip>Prints the score using all the defined score layouts. denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintAccompanistsScore.xml0000644000000000000000000000013213135434035027634 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.986648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintAccompanistsScore.xml0000644000175000017500000000073213135434035031507 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PrintSelection PrintAccompanistsScore <_label>Print Accompanist's Score <_tooltip>Prints out the score with the topmost staff in tiny size and puts page breaks before each movement. denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintThreeReduced.scm0000644000000000000000000000013213135434035026541 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.986648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintThreeReduced.scm0000644000175000017500000000135513135434035030416 0ustar00jjbenhamjjbenham00000000000000;;;PrintThreeReduced (d-PushPosition) (let ((saved (d-GetSaved))) (ForAllMovements "(d-GoToPosition #f 1 1 1) (d-SmallerStaff) (d-VoicePreset1) (d-GoToPosition #f 2 1 1) (d-SmallerStaff) (d-VoicePreset2) (d-SetCurrentStaffAsVoice) (d-GoToPosition #f 3 1 1) (d-SmallerStaff) (d-SetCurrentStaffAsVoice) ") (d-TypesetForScript "(d-PrintThreeReduced)") (ForAllMovements "(d-GoToPosition #f 1 1 1) (d-SmallerStaff) (if (StemDirective?) (d-DeleteObject)) (d-GoToPosition #f 2 1 1) (d-SmallerStaff) (if (StemDirective?) (d-DeleteObject)) (d-SetCurrentVoiceAsStaff) (d-GoToPosition #f 3 1 1) (d-SmallerStaff) (if (StemDirective?) (d-DeleteObject)) (d-SetCurrentVoiceAsStaff) ") (d-SetSaved saved)) (d-PopPosition) denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintThreeReduced.xml0000644000000000000000000000013213135434035026557 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.986648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintThreeReduced.xml0000644000175000017500000000065613135434035030437 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PrintTwoReduced PrintThreeReduced <_label>Print Three Parts as Cue for Accompanist <_tooltip>Prints top three parts on one staff as cues. denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/Preview4Bars.scm0000644000000000000000000000013213135434035025476 xustar0030 mtime=1500919837.959981805 30 atime=1500919931.986648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/Preview4Bars.scm0000644000175000017500000000162113135434035027347 0ustar00jjbenhamjjbenham00000000000000 (let ((N 4)(Extra? #t)) ;set N to be number of bars to preview (define (MoveRightNBars NumBars) (if (> NumBars 0) (begin (d-MoveToMeasureRight) (MoveRightNBars (- NumBars 1))) )) (d-PushPosition) (while (d-MoveToStaffUp)) (while (d-PrevObjectInMeasure)) ;make sure we get to start o' bar. (d-TypesettingOn) (d-MoveCursorLeft) ;get on the typesetting directive (d-PushPosition) (MoveRightNBars N) (d-TypesettingOff) (d-MoveCursorLeft) (d-PushPosition) (d-MoveToBeginning) (if (d-DirectiveGet-standalone-postfix "TypesetOn") (set! Extra? #f)) ;if going to the beginning, we ended up on top of the TypesettingOn, we don't do this TypeOff: (if Extra? (begin (d-TypesettingOff) (d-MoveCursorLeft))) (d-PrintPreview) (d-DirectiveDelete-standalone "TypesetOff") (d-PopPosition) (d-DirectiveDelete-standalone "TypesetOff") (d-PopPosition) (d-DirectiveDelete-standalone "TypesetOn") (d-PopPosition) ) ;letdenemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintTwoReduced.scm0000644000000000000000000000013213135434035026243 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.986648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintTwoReduced.scm0000644000175000017500000000111513135434035030112 0ustar00jjbenhamjjbenham00000000000000;;;PrintTwoReduced (d-PushPosition) (let ((saved (d-GetSaved))) (ForAllMovements "(d-GoToPosition #f 1 1 1) (d-SmallerStaff) (d-InitialVoiceOne) (d-GoToPosition #f 2 1 1) (d-SmallerStaff) (d-InitialVoiceTwo) (d-SetCurrentStaffAsVoice)") (d-TypesetForScript "(d-PrintTwoReduced)") (ForAllMovements "(d-GoToPosition #f 1 1 1) (d-SmallerStaff) (d-InitialVoiceAuto) (if (StemDirective?) (d-DeleteObject)) (d-GoToPosition #f 2 1 1) (d-SmallerStaff) (d-InitialVoiceAuto) (if (StemDirective?) (d-DeleteObject)) (d-SetCurrentVoiceAsStaff)") (d-SetSaved saved)) (d-PopPosition)denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintScoreAndParts.xml0000644000000000000000000000013213135434035026724 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.999981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintScoreAndParts.xml0000644000175000017500000000075113135434035030600 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS Print PrintScoreAndParts <_label>Print Score and Parts <_tooltip>Creates score layouts for the current layout (full score) and parts (named after instrument name). Set instrument names before use. denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PaxHeaders.19168/PrintTwoReduced.xml0000644000000000000000000000013213135434035026261 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.999981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/FileMenu/PrintMenu/PrintTwoReduced.xml0000644000175000017500000000067013135434035030135 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS PrintAccompanistsScore PrintTwoReduced <_label>Print Two Parts as Cue for Accompanist <_tooltip>Prints the top two staffs on a single staff as cue. denemo-2.2.0/actions/menus/MainMenu/PaxHeaders.19168/MoreMenu0000644000000000000000000000013213135434150020500 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/0000755000175000017500000000000013135434150022426 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpThree.scm0000644000000000000000000000013213135434035022631 xustar0030 mtime=1500919837.966648472 30 atime=1500919931.999981806 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpThree.scm0000644000175000017500000000002013135434035024472 0ustar00jjbenhamjjbenham00000000000000((cdr wrap:Op3))denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpSix.xml0000644000000000000000000000013213135434035022343 xustar0030 mtime=1500919837.966648472 30 atime=1500919931.999981806 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpSix.xml0000644000175000017500000000050613135434035024215 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpSix <_label>OpSix <_tooltip>Wrapper/Dummy for Keypress denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpTwo.scm0000644000000000000000000000013213135434035022333 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.009981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpTwo.scm0000644000175000017500000000002013135434035024174 0ustar00jjbenhamjjbenham00000000000000((cdr wrap:Op2))denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpNine.scm0000644000000000000000000000013213135434035022453 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.009981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpNine.scm0000644000175000017500000000002013135434035024314 0ustar00jjbenhamjjbenham00000000000000((cdr wrap:Op9))denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpZero.xml0000644000000000000000000000013213135434035022517 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.009981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpZero.xml0000644000175000017500000000051013135434035024364 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpZero <_label>OpZero <_tooltip>Wrapper/Dummy for Keypress denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpEight.scm0000644000000000000000000000013213135434035022622 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.009981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpEight.scm0000644000175000017500000000002013135434035024463 0ustar00jjbenhamjjbenham00000000000000((cdr wrap:Op8))denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/LoadSelectDurationComposerNumberkeys.x0000644000000000000000000000013213135434035030252 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.009981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/LoadSelectDurationComposerNumberkeys.xml0000644000175000017500000000071013135434035032452 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LoadSelectDurationComposerNumberkeys <_label>Change to 'Select Duration' Number Keys in Composer Mode <_tooltip>Change the number keys to select the prevailing duration in composer mode. denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/NoOp.scm0000644000000000000000000000013213135434035022136 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.033315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/NoOp.scm0000644000175000017500000000000213135434035023777 0ustar00jjbenhamjjbenham00000000000000#fdenemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpSix.scm0000644000000000000000000000013213135434035022325 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.033315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpSix.scm0000644000175000017500000000002013135434035024166 0ustar00jjbenhamjjbenham00000000000000((cdr wrap:Op6))denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpFive.xml0000644000000000000000000000013213135434035022471 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.033315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpFive.xml0000644000175000017500000000051013135434035024336 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpFive <_label>OpFive <_tooltip>Wrapper/Dummy for Keypress denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpTwo.xml0000644000000000000000000000013213135434035022351 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.033315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpTwo.xml0000644000175000017500000000050613135434035024223 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpTwo <_label>OpTwo <_tooltip>Wrapper/Dummy for Keypress denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpSeven.xml0000644000000000000000000000013213135434035022660 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.033315139 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpSeven.xml0000644000175000017500000000051213135434035024527 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpSeven <_label>OpSeven <_tooltip>Wrapper/Dummy for Keypress denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpOne.xml0000644000000000000000000000013213135434035022321 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.046648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpOne.xml0000644000175000017500000000050613135434035024173 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpOne <_label>OpOne <_tooltip>Wrapper/Dummy for Keypress denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpEight.xml0000644000000000000000000000013213135434035022640 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.046648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpEight.xml0000644000175000017500000000051213135434035024507 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpEight <_label>OpEight <_tooltip>Wrapper/Dummy for Keypress denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpZero.scm0000644000000000000000000000013213135434035022501 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.046648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpZero.scm0000644000175000017500000000002013135434035024342 0ustar00jjbenhamjjbenham00000000000000((cdr wrap:Op0))denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpFour.xml0000644000000000000000000000013213135434035022513 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.046648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpFour.xml0000644000175000017500000000051013135434035024360 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpFour <_label>OpFour <_tooltip>Wrapper/Dummy for Keypress denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/NoOp.xml0000644000000000000000000000013213135434035022154 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.046648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/NoOp.xml0000644000175000017500000000053013135434035024023 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NoOp <_label>NoOp <_tooltip>Does absolutely nothing. Use to "blank" a key. denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpThree.xml0000644000000000000000000000013213135434035022647 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.056648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpThree.xml0000644000175000017500000000051213135434035024516 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpThree <_label>OpThree <_tooltip>Wrapper/Dummy for Keypress denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpNine.xml0000644000000000000000000000013213135434035022471 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.056648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpNine.xml0000644000175000017500000000051013135434035024336 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS OpNine <_label>OpNine <_tooltip>Wrapper/Dummy for Keypress denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/LoadDefaultComposerNumberkeys.xml0000644000000000000000000000013213135434035027242 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.056648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/LoadDefaultComposerNumberkeys.xml0000644000175000017500000000062713135434035031120 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS LoadDefaultComposerNumberkeys <_label>Load Default Composer Number Keys <_tooltip>Loads the default composer numberkeys (Notes and Rests) denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/LoadDefaultComposerNumberkeys.scm0000644000000000000000000000013213135434035027224 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.056648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/LoadDefaultComposerNumberkeys.scm0000644000175000017500000000066313135434035031102 0ustar00jjbenhamjjbenham00000000000000 (set-cdr! wrap:Op0 (car wrap:Op0)) (set-cdr! wrap:Op1 (car wrap:Op1)) (set-cdr! wrap:Op2 (car wrap:Op2)) (set-cdr! wrap:Op3 (car wrap:Op3)) (set-cdr! wrap:Op4 (car wrap:Op4)) (set-cdr! wrap:Op5 (car wrap:Op5)) (set-cdr! wrap:Op6 (car wrap:Op6)) (set-cdr! wrap:Op7 (car wrap:Op7)) (set-cdr! wrap:Op8 (car wrap:Op8)) (set-cdr! wrap:Op9 (car wrap:Op9)) (Help::RemoveTag 'doublestroke) denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpFour.scm0000644000000000000000000000013213135434035022475 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.056648472 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpFour.scm0000644000175000017500000000002013135434035024336 0ustar00jjbenhamjjbenham00000000000000((cdr wrap:Op4))denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpFive.scm0000644000000000000000000000013213135434035022453 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.069981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpFive.scm0000644000175000017500000000002013135434035024314 0ustar00jjbenhamjjbenham00000000000000((cdr wrap:Op5))denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpSeven.scm0000644000000000000000000000013213135434035022642 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.069981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpSeven.scm0000644000175000017500000000002013135434035024503 0ustar00jjbenhamjjbenham00000000000000((cdr wrap:Op7))denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/OpOne.scm0000644000000000000000000000013213135434035022303 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.069981805 30 ctime=1500919912.956648472 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/OpOne.scm0000644000175000017500000000002013135434035024144 0ustar00jjbenhamjjbenham00000000000000((cdr wrap:Op1))denemo-2.2.0/actions/menus/MainMenu/MoreMenu/PaxHeaders.19168/LoadSelectDurationComposerNumberkeys.s0000644000000000000000000000013213135434035030245 xustar0030 mtime=1500919837.966648472 30 atime=1500919932.069981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/MoreMenu/LoadSelectDurationComposerNumberkeys.scm0000644000175000017500000000050213135434035032433 0ustar00jjbenhamjjbenham00000000000000 (set-cdr! wrap:Op0 d-Set0) (set-cdr! wrap:Op1 d-Set1) (set-cdr! wrap:Op2 d-Set2) (set-cdr! wrap:Op3 d-Set3) (set-cdr! wrap:Op4 d-Set4) (set-cdr! wrap:Op5 d-Set5) (set-cdr! wrap:Op6 d-Set6) (set-cdr! wrap:Op7 d-Set7) (set-cdr! wrap:Op8 d-SetBreve) (set-cdr! wrap:Op9 d-SetLonga) (Help::RemoveTag 'doublestroke)denemo-2.2.0/actions/menus/MainMenu/PaxHeaders.19168/InputMenu0000644000000000000000000000013213135434150020675 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/0000755000175000017500000000000013135434150022623 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/InputMenu/PaxHeaders.19168/Mouse0000644000000000000000000000013213135434150021765 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Mouse/0000755000175000017500000000000013135434150023713 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/InputMenu/Mouse/PaxHeaders.19168/MouseInsertion.scm0000644000000000000000000000013213135434035025533 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.089981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Mouse/MouseInsertion.scm0000644000175000017500000000651113135434035027407 0ustar00jjbenhamjjbenham00000000000000;;MouseInsertion (d-AddKeybinding "InsertOneNote" "PrsL-Shift") (d-AddKeybinding "AddNoteToChord" "PrsL-Shift-Alt") (d-AddKeybinding "StagedDelete" "PrsL-Control") (d-CreatePaletteButton "Select Duration" "ð…" "Selects ð… as the duration for inserting notes or rests" "(d-Set0)") (d-CreatePaletteButton "Select Duration" "ð…ž" "Selects ð…ž as the duration for inserting notes or rests" "(d-Set1)") (d-CreatePaletteButton "Select Duration" "ð…Ÿ" "Selects ð…Ÿ as the duration for inserting notes or rests" "(d-Set2)") (d-CreatePaletteButton "Select Duration" "ð… " "Selects ð…  as the duration for inserting notes or rests" "(d-Set3)") (d-CreatePaletteButton "Select Duration" "ð…¡" "Selects ð…¡ as the duration for inserting notes or rests" "(d-Set4)") (d-CreatePaletteButton "Select Duration" "ð…£" "Selects ð…£ as the duration for inserting notes or rests" "(d-Set5)") (d-CreatePaletteButton "General" "♯" "Sharpen the note at the cursor or next entered note if the cursor is in the appending position" "(d-SharpenNote)") (d-CreatePaletteButton "General" "â™­" "Flatten the note at the cursor or next entered note if the cursor is in the appending position" "(d-FlattenNote)") (d-CreatePaletteButton "General" "•" "Dot, double dot or undot the note at the cursor" "(d-DotDoubleDotNoDot)") (d-CreatePaletteButton "General" "(" "Begin Slur from note/chord at cursor, or remove a Begin Slur" "(d-ToggleBeginSlur)") (d-CreatePaletteButton "General" ")" "End Slur at note/chord at cursor, or remove an End Slur" "(d-ToggleEndSlur)") (d-CreatePaletteButton "General" "☊" "Tie from the note/chord at the cursor - will be ignored if next note is not at the same pitch" "(d-ToggleTie)") (d-CreatePaletteButton "General" "3" "Alternates inserting start triplet and end triplet markers" "(d-ToggleTripleting)") (d-CreatePaletteButton "General" "Allegro" "Insert a tempo change at cursor" "(d-MetronomeMark)") (d-CreatePaletteButton "Dynamics" "f p" "Insert a Dynamic Marking at the cursor" "(d-DynamicText)") (d-CreatePaletteButton "Dynamics" "<" "Start Crescrendo from note/chord at cursor" "(d-ToggleStartCrescendo)") (d-CreatePaletteButton "Dynamics" "<|" "End Crescendo on note/chord at cursor" "(d-ToggleEndCrescendo)") (d-CreatePaletteButton "Dynamics" ">" "Start Diminuendo from note/chord at cursor " "(d-ToggleStartDiminuendo)") (d-CreatePaletteButton "Dynamics" ">|" "End Diminuendo from note/chord at cursor" "(d-ToggleEndDiminuendo)") (if DenemoPref_newbie (d-InfoDialog (_ "To insert notes hold down Shift key while left-clicking the mouse. To add to a chord hold down Shift and Alt, to delete hold down Control. Or use keys a,b,c,d,e,f,g, 0,1,2,3,4 (with Shift, Control or Alt). Or use palettes. To hide palettes right-click on a button and choose Edit Palette (saves space). To cut out excessive messages like this use Help menu ->Turn Excessive Tooltips Off/On."))) denemo-2.2.0/actions/menus/MainMenu/InputMenu/Mouse/PaxHeaders.19168/MouseDefault.scm0000644000000000000000000000013213135434035025145 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.089981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Mouse/MouseDefault.scm0000644000175000017500000000232213135434035027015 0ustar00jjbenhamjjbenham00000000000000;;MouseDefault (d-AddKeybinding "NoOp" "PrsL-Shift") (d-AddKeybinding "A" "a") (d-AddKeybinding "B" "b") (d-AddKeybinding "C" "c") (d-AddKeybinding "D" "d") (d-AddKeybinding "E" "e") (d-AddKeybinding "F" "f") (d-AddKeybinding "G" "g") (d-AddKeybinding "Change0" "Shft+0") (d-AddKeybinding "Change1" "Shft+1") (d-AddKeybinding "Change2" "Shft+2") (d-AddKeybinding "Change3" "Shft+3") (d-AddKeybinding "Change4" "Shft+4") (d-AddKeybinding "Change5" "Shft+5") (d-AddKeybinding "Change6" "Shft+6") (d-DirectiveDelete-score "Note0") (d-DirectiveDelete-score "Note1") (d-DirectiveDelete-score "Note2") (d-DirectiveDelete-score "Note3") (d-DirectiveDelete-score "Note4") (d-DirectiveDelete-score "Note5") (d-DirectiveDelete-score "Note6") (d-DirectiveDelete-score "SharpenNext") (d-DirectiveDelete-score "FlattenNext") (d-DirectiveDelete-score "Dot - Double Dot - No Dot") (d-DirectiveDelete-score "BeginSlur") (d-DirectiveDelete-score "EndSlur") (d-DirectiveDelete-score "Tie") (d-DirectiveDelete-score "Triplets") (d-DirectiveDelete-score "Dynamics") (d-DirectiveDelete-score "Tempo") (d-DirectiveDelete-score "StartCresc") (d-DirectiveDelete-score "EndCresc") (d-DirectiveDelete-score "StartDim") (d-DirectiveDelete-score "EndDim") denemo-2.2.0/actions/menus/MainMenu/InputMenu/Mouse/PaxHeaders.19168/MouseDefault.xml0000644000000000000000000000013213135434035025163 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.099981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Mouse/MouseDefault.xml0000644000175000017500000000064413135434035027040 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MouseDefault <_label>Mouse Default Action <_tooltip>Mouse left click positions the cursor, right click edits, left-click with caps-lock does nothing.. denemo-2.2.0/actions/menus/MainMenu/InputMenu/Mouse/PaxHeaders.19168/MouseInsertion.xml0000644000000000000000000000013213135434035025551 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.099981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Mouse/MouseInsertion.xml0000644000175000017500000000076713135434035027434 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MouseInsertion <_label>Mouse Note Insertion <_tooltip>Changes the mouse use when CapsLock is on: left click inserts note in the prevailing duration. The shortcuts for number keys 0, 1, 2 ... are set to change the prevailing duration. denemo-2.2.0/actions/menus/MainMenu/InputMenu/PaxHeaders.19168/ShowVirtualKeyboard.xml0000644000000000000000000000013213135434035025446 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.099981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/ShowVirtualKeyboard.xml0000644000175000017500000000076113135434035027323 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ShowVirtualKeyboard SimulateMidi <_label>Virtual MIDI Keyboard <_tooltip>Displays a piano style keyboard that can be clicked on to enter notes like a real MIDI device. Right click adds notes to the chord. denemo-2.2.0/actions/menus/MainMenu/InputMenu/PaxHeaders.19168/MIDI0000644000000000000000000000013213135434150021417 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/0000755000175000017500000000000013135434150023345 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/ToggleCheckChords.scm0000644000000000000000000000013213135434035025524 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.099981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/ToggleCheckChords.scm0000644000175000017500000000473713135434035027410 0ustar00jjbenhamjjbenham00000000000000;;;ToggleCheckChords (define-once ToggleCheckChords::Active #f) (if (not ToggleCheckChords::Active) (let ( (PedalDown #f)) (define (GetNoteOn) (let* ( (midi (d-GetMidi)) (velocity (bit-extract midi 16 24)) (note (bit-extract midi 8 16)) (command (bit-extract midi 0 8))) (cond ((and (= command #xB0) (= note #x40) (= velocity #x7F));;PedalDown (set! PedalDown #t) (disp "Short Octave Enabled") (GetNoteOn)) ((and (= command #xB0) (= note #x40) (= velocity 0));;PedalUp (set! PedalDown #f) (disp "Split Sharp Enabled") (GetNoteOn)) ((= command #x90) (if (and PedalDown (= note 40)) (set! note 36)) (if (and PedalDown (= note 42)) (set! note 38)) (if (and PedalDown (= note 44)) (set! note 40)) note) ((= command #x80) (GetNoteOn)) (else #f)))) (define (burp) (PlayNote "32" 500 "127") (PlayNote "31" 500 "127"));!!!!!!!!! what if there is no such note on the current chan 0 instrument??? (define (move-cursor thetime) (define current (d-GetMidiOnTime)) (if current (if (< current thetime) (if (d-NextNote) (move-cursor thetime))) (if (d-NextNote) (move-cursor thetime)))) (define start (d-GetMidiOnTime)) ;;;;;;;; start of the code (set! ToggleCheckChords::Active #t) (if start (set! start (- (d-GetMidiOnTime) 0.0001)) (set! start 0.0));;;FIXME warn or seek next note (d-InputFilterNames (_ "Checking Chords Filter")) (d-SetBackground #xD0E0E0) (d-RewindMidi start) (let nextchord () (define InitialNotes (d-NextMidiNotes 0.001)) (define Notes #f) (define thetime #f) (set! thetime (cdr InitialNotes)) (set! Notes (car InitialNotes)) (move-cursor thetime) (d-RefreshDisplay) (if (not (null? Notes)) (let nextnote () (define note (GetNoteOn)) (if note (if (member note Notes) (begin (PlayNote (number->string note) 500 "127") (set! Notes (delq note Notes)) (if (null? Notes) (nextchord) (nextnote))) (begin (disp "Note played was " note " Notes awaited were " Notes "\n") (set! Notes (car InitialNotes)) (disp "Replay " Notes " please\n") (burp) (nextnote) )))))))) (d-InputFilterNames (_ "No active MIDI Filter")) (set! ToggleCheckChords::Active #f) (d-PutMidi 0);;; to swallow up the last d-GetMidi?? (d-SetMidiCapture #f) (d-SetBackground #xFFFFFF) denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/AngryDelete.xml0000644000000000000000000000013213135434035024423 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.109981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/AngryDelete.xml0000644000175000017500000000060013135434035026270 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AngryDelete <_label>Angry Delete <_tooltip>MIDI notes struck loudly delete the previous note before taking effect. denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/ChordsOverBass.scm0000644000000000000000000000013213135434035025071 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.109981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/ChordsOverBass.scm0000644000175000017500000003633313135434035026752 0ustar00jjbenhamjjbenham00000000000000;;;;ChordsOverBass (pure filter version) (define-once ChordsOverBass::active #f) (if ChordsOverBass::active (begin ;;;;Filter is already running stop it (disp "Turning off\n") (set! ChordsOverBass::active #f) (d-PutMidi 0) (d-SetBackground #xFFFFFF) ) (begin ;;;;Filter is not already running so run it (set! Pitchbend::commandUp "(disp \"disabled\n\")") (set! Pitchbend::commandDown "(disp \"disabled\n\")") (let ((ons '())(suspension #f) (chord-position #f) (pedal #f)) (define (noteOn? midi) (= #x90 (bit-extract midi 0 8))) (define (noteOff? midi) (= #x80 (bit-extract midi 0 8))) (define (pedalDown? midi) (and (= #xB0 (bit-extract midi 0 8)) (= (bit-extract midi 8 16) #x40) (= (bit-extract midi 16 24) #x7F))) (define (pedalUp? midi) (and (= #xB0 (bit-extract midi 0 8)) (= (bit-extract midi 8 16) #x40) (= (bit-extract midi 16 24) #x0))) (define (pause) (d-GetUserInput "Pausing..." "Press any key" " ")) ;;;start on a tied note. Amalgamate the note(s) tied to with the main note (define (amalgamate-ties) (define this-dur (string->number(car (string-split (d-GetNoteDuration) #\.)))) (define this-dots (d-GetDots)) (define continuing #t) (if (d-NextChordInMeasure) (let ((next-dur (string->number (car (string-split (d-GetNoteDuration) #\.)))) (next-dots (d-GetDots))) (cond ((and (= this-dur next-dur) (= this-dots next-dots)) (d-DeletePreviousObject) (d-Augment)) ((and (= 1 this-dots) (= 0 next-dots) (= (/ next-dur 2) this-dur)) (d-DeletePreviousObject) (d-RemoveDot) (d-Augment) (d-Augment)) ((and (= (/ next-dur 2) this-dur) (= 0 this-dots) (= 0 next-dots)) (d-DeletePreviousObject) (d-Augment) (d-AddDot)) (else (disp "else case\n")))) (if (not (d-NextChord)) (set! continuing #f))) (if (and continuing (d-IsTied)) (amalgamate-ties))) ;;starts on a rest, amalgamates with previous object if it is another rest (define (amalgamate-rests) (define this-dur (string->number(car (string-split (d-GetNoteDuration) #\.)))) (define this-dots (d-GetDots)) (if (d-PrevChordInMeasure) (if (Rest?) (let ((prev-dur (string->number(car (string-split (d-GetNoteDuration) #\.)))) (prev-dots (d-GetDots))) (cond ((and (= this-dur prev-dur) (= this-dots prev-dots)) (d-Augment) (d-NextChordInMeasure) (d-DeleteObject)) ((and (= (/ this-dur 2) prev-dur) (= 0 this-dots) (= 0 prev-dots)) (d-Augment) (d-AddDot) (d-NextChordInMeasure) (d-DeleteObject)) (else (disp "Case not handled -did not join rests") (d-NextChordInMeasure)))) (d-NextChordInMeasure)))) ;;;;seek back to the chord started but not finished (ie before the rests) (define (find-suspended-chord) (let loop () (disp "looping") (if (and (d-PrevChord) (Rest?)) (loop)))) ;;;start with cursor on the rest to be turned into a chord, end back at the same rest or rather the chord that has replaced it (define (continue-chord) (define position #f) (find-suspended-chord) (set! position (GetPosition)) (let loop () (define denemodur #f) (define numdots 0) (d-SetMark) (d-Copy) (d-ToggleTie) (d-NextChord) (set! denemodur (number->string (duration::lilypond->denemo (string->number (car (string-split (d-GetNoteDuration) #\.)))))) (set! numdots (d-GetDots)) (d-Paste) (d-DeleteObject) (if (not (Appending?)) (d-PrevChord)) (eval-string (string-append "(d-Change" denemodur ")" (if (> numdots 0) "(d-AddDot)" ""))) (if (d-NextChord) (begin (d-PrevChord) (loop)))) (apply d-GoToPosition position) (amalgamate-ties)) (define (add-note note) (set! suspension #t) (eval-string (string-append "(d-InsertNoteInChord \"" (d-GetNoteForMidiKey note) "\")")) (PlayNote (number->string note) 400)) (define (GetChords bass-key) (define chord-created #f) (define triggerPedal #f) (set! chord-position (GetPosition)) (if suspension (continue-chord) (for-each add-note ons)) (let loop () (let* ( (midi (d-GetMidi)) (velocity (bit-extract midi 16 24)) (note (bit-extract midi 8 16)) (command (bit-extract midi 0 8))) ;(disp "waiting for the release of " bass-key "\n") (cond ((noteOn? midi) (set! ons (cons note ons));; use (null? ons) to test if empty (set! chord-created #t) (add-note note) (loop)) ((noteOff? midi) ;(disp "A note off with chord-created=" chord-created "and suspension=" suspension "\n") (if (= note bass-key) (begin (cond ((null? ons) (continue-chord)) (else #t;(disp "the else case\n" ons " and rest =" (Rest?) "\n") )));;;finished getting chords for this bass note (begin ;;; a note-off which is not the bass note (set! ons (delq note ons)) (if (null? ons) (begin (set! suspension #f) (set! chord-created #f) ;;; creating a new chord over the same note. (if (and pedal chord-position) (d-ToggleTie)) (cond ((Rest?) (d-Diminish) (d-SetMark) (d-Copy) ;(d-DirectiveDelete-chord "ChordsOverBass") (d-Paste) ) ((> (d-GetDots) 0) (d-SplitChord 3) (d-MoveCursorLeft) (d-MoveCursorLeft) (d-MoveCursorLeft) (d-Augment) (d-MoveCursorRight) (d-DeleteObject) (ChangeToRest);on a whole chord: we remove notes all down to the Rest ) (else (d-SplitChord 2) (d-MoveCursorLeft) (ChangeToRest) )) (loop)) (loop))))) ((or (zero? midi) (and (= command #xE0) (> note 32))) (d-SetBackground #xFFFFFF) (disp "Abandoning getting chord\n")) ((pedalUp? midi) (set! triggerPedal #t) (if (d-IsTied) (d-ToggleTie)) (set! pedal #f) (loop)) ((pedalDown? midi) (set! pedal #t) (loop)) (else (loop))))) (if (d-IsTied) (d-ToggleTie)) (set! chord-position (GetPosition))) ;;; end of GetChords (define (createChordStaff) (d-AddBefore) (d-InitialClef "Treble") (d-StaffProperties "denemo_name=Chords")) (define (deleteToEnd) (d-SetMark) (d-GoToEnd) (d-Cut)) (define (checkForContent) (if (not (None?)) (if (equal? (_ "y") (d-GetUserInput (_ "Non Empty Chords staff") (_ "Remove the previous transcription from this measure on?") (_ "y"))) (deleteToEnd) (set! ChordsOverBass::active #f))) (d-MoveToStaffDown)) ;;;;;;;; actual code (set! ChordsOverBass::active #t) (if (equal? "Chords" (d-StaffProperties "query=denemo_name")) (set! ChordsOverBass::active (d-MoveToStaffDown))) (if (and ChordsOverBass::active (d-MoveToStaffUp) (equal? "Chords" (d-StaffProperties "query=denemo_name"))) (checkForContent) (begin (if (equal? "Chords" (d-StaffProperties "query=denemo_name")) (checkForContent) (begin (d-MoveToStaffDown) (createChordStaff) (d-MoveToStaffDown))))) (if ChordsOverBass::active (let ((bass-position (GetPosition))) (d-SetBackground #xB0E0B0) (if (not (None?)) (let loop ((bass-key (d-GetNoteAsMidi))) (d-PushPosition) (d-SetMark) (d-Copy) (d-DirectivePut-chord-graphic "ChordsOverBass" "CheckMark") (d-DirectivePut-chord-gy "ChordsOverBass" -120) (if (zero? bass-key) (begin ;;;; if it is a rest we are copying we need to remove the tick, and set chord-position #f since we cannot tie over it ;;;; we could also flag the situation to allow the pedal to put the chord on the whole beat including this rest. (if (Rest?) (begin (d-DirectiveDelete-chord "ChordsOverBass") (set! chord-position #f) )) (d-MoveToStaffUp) (GoToMeasureEnd) (d-Paste)) (let listening () (let* ((midi (d-GetMidi)) (velocity (bit-extract midi 16 24)) (note (bit-extract midi 8 16)) (command (bit-extract midi 0 8))) (apply d-GoToPosition bass-position) (cond ((and (= command #x90) (= note bass-key)) (if (and pedal chord-position) (begin (apply d-GoToPosition chord-position) (d-ToggleTie) (apply d-GoToPosition bass-position))) (d-DirectiveDelete-chord "ChordsOverBass") ;(d-PlayMidiKey midi) (PlayNote (number->string note) 30 "127") (d-MoveToStaffUp) (GoToMeasureEnd) (d-Paste) (d-MoveCursorLeft) (if (d-IsTied) (d-ToggleTie)) (d-StagedDelete) (if (and pedal (not chord-position)) (amalgamate-rests)) (GetChords bass-key) ) ((= command #x90) (d-PlayMidiKey midi) (set! ons (cons note ons)) (listening) ) ((or (zero? midi) (and (= command #xE0) (> note 32))) (disp "Finishing by abort") (d-SetBackground #xFFFFFF) (d-DirectiveDelete-chord "ChordsOverBass") (d-MoveToMeasureLeft) ;(d-PopPosition) ; (d-MoveToStaffUp) ;(GoToMeasureEnd) ;(d-InfoDialog "Chords over Bass\nQuitting ...") ; (eval-string (string-append "(d-" (d-GetCommandFromUser) ")")) (set! ChordsOverBass::active #f)) ((= command #x80) (set! ons (delq note ons)) (if (null? ons) (set! suspension #f)) (listening) ) ((pedalUp? midi) (if chord-position (begin (apply d-GoToPosition chord-position) (if (d-IsTied) (d-ToggleTie)) (apply d-GoToPosition bass-position))) (set! pedal #f) (listening)) ((pedalDown? midi) (set! pedal #t) (listening)) (else (d-PlayMidiKey #xF06001) (disp "Ignoring " command " " note " " velocity " waiting for " bass-key "\n") (listening)))))) (if ChordsOverBass::active (begin ; (pause) ; (d-DirectiveDelete-chord "ChordsOverBass") (d-PopPosition) ;(d-DirectiveDelete-chord "ChordsOverBass") (if (d-NextObject) (begin (set! bass-position (GetPosition)) (loop (d-GetNoteAsMidi))))))) (disp "Finished ChordsOverBass")))) (set! ChordsOverBass::active #f) (d-SetBackground #xFFFFFF) (set! Pitchbend::commandUp "(d-CursorRight)") (set! Pitchbend::commandDown "(d-CursorLeft)")) ;;;CreateParts (if (and (not (d-MoveToMeasureRight)) (d-GetUserInput "Chordal Accompaniment" "Mark consecutive 5ta and 8va?" "y")) (let () (define (mark-positions pos) (define musobj (caar (cdr pos))) (d-GoToPosition #f #f (musobj.measure musobj) (musobj.horizontal musobj)) (d-DirectivePut-chord-graphic "Consecutives" "CrossSign")) (define (delete-lowest-notes) ;delete lowest note of each chord (d-MoveToBeginning) (let loop () (if (d-NextChord) (begin (if (d-CursorToNote (d-GetNote)) (d-StagedDelete)) (loop))))) (define (delete-upper-notes) (d-MoveToBeginning) (let loop ((continue #f)) (if (d-NextChord) (begin (if (d-CursorToNote (d-GetNote 2)) (begin (d-RemoveNoteFromChord) (set! continue #t) (loop continue)) (loop continue))) (if continue (begin (d-MoveToBeginning) (loop #f)))))) (define (pause) (d-GetUserInput "Pausing..." "Press any key" " ")) (d-MoveToStaffUp) (d-MoveToBeginning) (d-GoToEnd) (d-Copy) (d-AddAfter) (d-Paste) (d-MoveToBeginning) (d-VoicePreset1) (d-MoveCursorLeft) (delete-lowest-notes);;delete part 3 (delete-lowest-notes);;delete part 2 (d-AddAfter) (d-Paste) (d-MoveToBeginning) (d-VoicePreset2) (d-MoveCursorLeft) (delete-lowest-notes);;delete part 3 (delete-upper-notes);;delete part 1 (and anything extra) (d-AddAfter) (d-Paste) (d-MoveToBeginning) (d-VoicePreset3) (d-MoveCursorLeft) (delete-upper-notes);;delete parts 2 and 1 (and anything extra) (d-MoveToStaffUp) (d-MoveToStaffUp) (d-MoveToBeginning) (d-PushPosition);remember which movement we were in (disp "Pusing the right movement " (GetPosition) "?\n") (d-SetMark) (d-MoveToStaffDown) (d-MoveToStaffDown) (d-MoveToStaffDown) (d-MoveToEnd) (d-SetPoint) (d-Copy) (d-NewWindow) (d-AddAfter) (d-AddAfter) (d-AddAfter) (d-MoveToMovementBeginning) (d-Paste) ;(pause) (let ((movement(CreateAbstractionMovement)) (consecutives '())) ;(disp "starting \n" movement "and " consecutives "\n") (set! consecutives (MapToAbstractionMovement movement AM::consecutive5th AM::consecutive8th)) ;(disp "consecs 5 " consecutives " \n") ;(disp "consecs octave " consecutives " \n") (d-SetSaved #t) (d-Close) (d-PopPosition); return to the same movement ;(disp "Popped to the right movement?" (GetPosition) "?\n") (d-MoveToMovementBeginning) (d-DeleteAfter) (d-DeleteStaff) (d-DeleteStaff) (d-MoveToMovementBeginning) (for-each mark-positions consecutives)))))) denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/MidiFilterOff.scm0000644000000000000000000000013213135434035024665 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.143315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/MidiFilterOff.scm0000644000175000017500000000027213135434035026537 0ustar00jjbenhamjjbenham00000000000000;;;MidiFilterOff (d-PutMidi 0);;; Our own Reset, this makes the filter toggle off/on (d-InputFilterNames (_ "No MIDI filter active")) (d-PlayMidiKey #x204001) (d-PlayMidiKey #x202201) denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/CheckPitches.xml0000644000000000000000000000013213135434035024555 xustar0030 mtime=1500919837.963315139 30 atime=1500919931.229981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/CheckPitches.xml0000644000175000017500000000000013135434035042650 1denemo-2.2.0/actions/menus/MainMenu/Educational/MIDI/CheckPitches.xmlustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/ChordsOverBass.xml0000644000000000000000000000013213135434035025107 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.143315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/ChordsOverBass.xml0000644000175000017500000000132413135434035026760 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS CheckPitches ChordsOverBass <_label>Create Chords Over Bass Line <_tooltip>Place the cursor on a bass note and invoke this command. It creates a treble staff above and for each note in the bass staff, as you play it, it switches to the treble staff and allows you to enter a chord. Use the Pitch Bend wheel to stop/start the process. Hold a chord while moving to the next bass note to extend the chord over more than one bass note. denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/ChordEntry.scm0000644000000000000000000000013213135434035024263 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.143315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/ChordEntry.scm0000644000175000017500000000443113135434035026136 0ustar00jjbenhamjjbenham00000000000000;;;;ChordEntry (define-once ChordEntry::active #f) (define-once ChordEntry::ignore_ties (d-GetBooleanPref "ignore_ties")) (if ChordEntry::active (begin ;;;;Filter is already running stop it (disp "Turning off Chord without pedal entry\n") (d-InputFilterNames (_ "No MIDI Filter")) (d-SetPrefs (string-append "" (if ChordEntry::ignore_ties "1" "0") "")) (set! ChordEntry::active #f) (d-PutMidi 0) (d-SetPrefs "0") (d-SetBackground #xFFFFFF)) (let ((ons '())) ;;;;Filter is not already running so run it (define (noteOn? midi) (= #x90 (bit-extract midi 0 8))) (define (noteOff? midi) (= #x80 (bit-extract midi 0 8))) (define (add-note note) (d-InsertNoteInChord (d-GetNoteForMidiKey note)) (PlayNote (number->string note) 400)) (define (GetChords) (let loop () (let* ( (midi (d-GetMidi)) (velocity (bit-extract midi 16 24)) (note (bit-extract midi 8 16)) (command (bit-extract midi 0 8))) (cond ((noteOn? midi) (if (null? ons) (begin (d-PutMidi midi) (if (not (Appending?)) (d-PrevChord))) (add-note note)) (set! ons (cons note ons)) (loop)) ((noteOff? midi) (set! ons (delq note ons)) (if (null? ons) (d-NextChord)) (loop)) ((or (zero? midi) (and (= command #xE0) (> note 32))) (d-SetBackground #xFFFFFF) (d-SetPrefs (string-append "" (if ChordEntry::ignore_ties "1" "0") "")) (disp "Abandoning getting chords\n")) (else (DenemoPutMidi midi)(loop)))))) ;;; end of GetChords ;;;;;;;; actual code (set! ChordEntry::active #t) (d-InputFilterNames (_ "Chord entry without pedal")) (d-SetBackground #xC0E0E0) (set! ChordEntry::ignore_ties (d-GetBooleanPref "ignore_ties")) (d-SetPrefs "1") (GetChords))) denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/MidiFilterOff.xml0000644000000000000000000000013213135434035024703 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.153315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/MidiFilterOff.xml0000644000175000017500000000055713135434035026563 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MidiFilterOff <_label>MIDI Filter Off <_tooltip>Turn off any MIDI filter script currently active. denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/FootPedalConductor.xml0000644000000000000000000000013213135434035025756 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.153315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/FootPedalConductor.xml0000644000175000017500000000106213135434035027626 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AngryDelete FootPedalConductor <_label>Foot Pedal Conductor <_tooltip>Press the foot pedal at the start of each measure. The bar number is displayed and the beats are interpolated following the timesignature set. Two quick presses of the foot pedal stops the conductor. denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/AngryDelete.scm0000644000000000000000000000013213135434035024405 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.153315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/AngryDelete.scm0000644000175000017500000000132313135434035026255 0ustar00jjbenhamjjbenham00000000000000;;; Angry Delete filter (let ((midi 0) (command 0) (note 0) (velocity 0) (loop 0)) (d-InputFilterNames (_ "Angry Delete MIDI Filter")) (d-SetMidiCapture #t) (set! loop (lambda () (begin (set! midi (d-GetMidi)) (set! velocity (bit-extract midi 16 24)) (set! command (bit-extract midi 0 8)) (if (and (= command #x90)(> velocity 90)) (begin (d-PlayMidiKey #xF06001) (if (d-GetNonprinting) (d-PrevNote) (d-DeletePreviousObject)))) (d-PutMidi midi) (if (= command 0) (display "Filter stopping") (loop))))) (loop)) (d-SetMidiCapture #f) denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/FiguredBassFilterOn.xml0000644000000000000000000000013213135434035026061 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.153315139 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/FiguredBassFilterOn.xml0000644000175000017500000000072013135434035027731 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS FiguredBassFilterOn <_label>Figured Bass Filter On <_tooltip>Start filtering MIDI events, First note is bass, hold this down while entering notes for figures. Pedal changes harmony on same bass. denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/FiguredBassFilterOn.scm0000644000000000000000000000013213135434035026043 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.166648473 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/FiguredBassFilterOn.scm0000644000175000017500000001636013135434035027722 0ustar00jjbenhamjjbenham00000000000000;;; Figured Bass filter (define-once ToggleFiguredBassMode::Active #f) (if (not ToggleFiguredBassMode::Active) (let ((Figures 0) (PedalDown #f) (Notes '())) (define (InsertDummyFigureIfNeeded) (if (d-PrevNote) (let ((fig (d-EditFiguredBass "query"))) (if (not fig) (d-EditFiguredBass "figures=0") (d-NextNote))))) (define (AddFigure note bassnote) (let ((fig (d-BassFigure bassnote note))) (if (car fig);extreme interval - warn (d-PlayMidiNote note 255 15 350)) (set! Notes (cons note Notes)) ; (disp Notes "\n") (set! Figures (cons (cdr fig) Figures)))) (define (GetFigures) (string-append "figures=" (string-join (reverse Figures)))) (define (AddFiguresLoop bassnote lastnote) (let* ( (midi (d-GetMidi)) (velocity (bit-extract midi 16 24)) (note (bit-extract midi 8 16)) (command (bit-extract midi 0 8))) ;; body of the let* (if (boolean? (d-GetNoteName)) (d-NextNote)) (if (or (= command #x90) (= command #x80)) (begin (if (and (= command #x90)(= bassnote 0)) (begin (set! bassnote note) (set! Figures '()) (set! Notes '()) (if (or (d-GetNonprinting) (= bassnote (d-GetNoteAsMidi))) (begin;; note ok (PlayNote (number->string note) 500 "127") (if PedalDown (begin (d-PlayMidiNote 60 255 9 100) (set! Figures (cons "~" Figures)) (d-EditFiguredBass (GetFigures)) (set! Figures '()) (set! Notes '()) (set! bassnote 0) (if (boolean? (d-GetNoteName)) (d-NextNote))))) (begin ;; note wrong (set! bassnote 0) (d-PlayMidiNote 35 255 9 100))));;; end of noteon while we have no bass note ;;; not attempted bass note on (begin (if (and (= command #x80)(= note bassnote)) (begin ;;;bass note off get the figures (moves on) and AddFiguresLoop (if (not (d-SpellCheckMidiChord (cons bassnote Notes))) (d-PlayMidiNote 30 255 9 100)) (set! bassnote 0) (d-EditFiguredBass (GetFigures)) (if (boolean? (d-GetNoteName)) (d-NextNote)));;; end of received bassnote off ;;; not bass note off (begin (if (= command #x90) ;;; note on (begin (if (= note lastnote) (begin ;; we have no bass note or if we do we have figures already (d-PlayMidiNote 71 255 9 100) (set! Figures (cons " | " Figures))) (begin (AddFigure note bassnote) (if (< note bassnote) (begin (InsertDummyFigureIfNeeded) (d-PlayMidiNote 46 255 9 100)) (PlayNote (number->string note) 500 "127")) )))))))));; end of if noteon or noteoff (begin ;not noteon/off (if (and (= command #xB0) (= note #x40) (= velocity #x7F)) (begin;; Pedal Down (set! PedalDown #t) (display "Pedal down") (if (and (> bassnote 0) (null? Figures)) ;;; we have a bass note but no figures yet (begin (InsertDummyFigureIfNeeded) ;check if the previous note has a figure, if not put a 0 figure to be able to continue it (d-PlayMidiNote 49 255 9 100) (set! Figures (cons "~" Figures)) (d-EditFiguredBass (GetFigures)) (set! Figures '()) (set! Notes '()) (set! bassnote 0)) (begin ;; we have no bass note or if we do we have figures already (d-PlayMidiNote 71 255 9 100) (set! Figures (cons " | " Figures)))))) (if (and (= command #xB0) (= note #x40) (= velocity #x0)) (set! PedalDown #f)) (if (and (= command #xB0) (= note 1)) (let ((thestep (round(/ (- velocity 64) 16)))) (PlayNote (number->string (+ 60 (* 4 thestep) )) 100) (eval-string (string-append "(d-SetEnharmonicPosition " (number->string thestep) ")")))))) (if (= midi 0) (set! ToggleFiguredBassMode::Active #f)) (if ToggleFiguredBassMode::Active (AddFiguresLoop bassnote note)))) ;;; end of procedure AddFigures which loops adding figures ;;;if not active procedure begins here (d-SetBackground #xB0E0B0) (d-InputFilterNames "Figured Bass MIDI Filter") (set! ToggleFiguredBassMode::Active #t) (d-SetMidiCapture #t) (AddFiguresLoop 0 0)));;; end of if not active, ends when again not active. (d-InputFilterNames "No active MIDI Filter") (set! ToggleFiguredBassMode::Active #f) (d-PutMidi 0);;; to swallow up the last d-GetMidi?? (d-SetMidiCapture #f) (d-SetBackground #xFFFFFF) denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/ChordEntry.xml0000644000000000000000000000013213135434035024301 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.166648473 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/ChordEntry.xml0000644000175000017500000000065613135434035026161 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChordEntry <_label>Chord Entry Without Pedal <_tooltip>Playing notes on the MIDI keyboard will enter all notes played as a chord until no notes are on. denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/ChordsForBar.scm0000644000000000000000000000013213135434035024520 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.176648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/ChordsForBar.scm0000644000175000017500000003023613135434035026375 0ustar00jjbenhamjjbenham00000000000000;;;;ChordsForBar ;;;allows you to play chords (over a bass) for the current bar - plays the bar first, goes on to next bar when you press space (if (not (defined? 'ChordsForBar::active)) (d-InfoDialog (_ "This command expects you to play the notes of the current bar together with chords. It will notate the chords in a new staff above the current staff. You can hold chords over several notes, change chords on one note. To temporarily switch to listening so as to try out a chord depress the foot pedal. It will play you two bars of the music at the start and after you have entered the chords. Use the pitch bend control to go on to the next bar or to try again in the current bar."))) (define-once ChordsForBar::active #f) (if ChordsForBar::active (begin ;;;;Filter is already running stop it (disp "Turning off\n") (set! ChordsForBar::active #f) (d-PutMidi 0) (d-SetBackground #xFFFFFF) ) (begin ;;;;Filter is not already running so run it ;;set up the pitch bend commands to re-run this ChordsForBar script (with the pitchbend command disabled because they flood) (set! Pitchbend::commandDown "(set! Pitchbend::commandDown \"(disp \\\"pitchbend down is disabled\n\\\")\") (d-ChordsForBar)") (set! Pitchbend::commandUp "(set! Pitchbend::commandUp \"(disp \\\"pitchbend up is disabled\n\\\")\") (d-MoveToMeasureRight)(d-ChordsForBar)") (let ((ons '())(suspension #f) (chord-position #f) (pedal #f)) (define (noteOn? midi) (= #x90 (bit-extract midi 0 8))) (define (noteOff? midi) (= #x80 (bit-extract midi 0 8))) (define (pedalDown? midi) (and (= #xB0 (bit-extract midi 0 8)) (= (bit-extract midi 8 16) #x40) (= (bit-extract midi 16 24) #x7F))) (define (pedalUp? midi) (and (= #xB0 (bit-extract midi 0 8)) (= (bit-extract midi 8 16) #x40) (= (bit-extract midi 16 24) #x0))) (define (pause) (d-GetUserInput "Pausing..." "Press any key" " ")) (define* (PlayCurrentMeasure #:optional (start 0)) (define ontime #f) (define offtime #f) (d-CreateTimebase) (if (> start 0) (begin (d-PushPosition) (let loop ((count start)) (if (> count 0) (begin (d-MoveToMeasureLeft) (loop (- count 1))))) (set! ontime (CurrentMeasureOnTime)) (d-PopPosition)) (begin (set! ontime (CurrentMeasureOnTime)))) (set! offtime (CurrentMeasureOffTime)) (d-SetPlaybackInterval ontime offtime) (d-RestartPlay)) (define (amalgamate-ties) ;;;start on a tied note. Amalgamate the note(s) tied to with the main note (define this-dur (string->number(car (string-split (d-GetNoteDuration) #\.)))) (define this-dots (d-GetDots)) (define continuing #t) (if (d-NextChordInMeasure) (let ((next-dur (string->number (car (string-split (d-GetNoteDuration) #\.)))) (next-dots (d-GetDots))) (cond ((and (= this-dur next-dur) (= this-dots next-dots)) (d-DeletePreviousObject) (d-Augment)) ((and (= 1 this-dots) (= 0 next-dots) (= (/ next-dur 2) this-dur)) (d-DeletePreviousObject) (d-RemoveDot) (d-Augment) (d-Augment)) ((and (= (/ next-dur 2) this-dur) (= 0 this-dots) (= 0 next-dots)) (d-DeletePreviousObject) (d-Augment) (d-AddDot)) (else (disp "else case\n")))) (if (not (d-NextChordInMeasure)) (set! continuing #f))) (if (and continuing (d-IsTied)) (amalgamate-ties))) ;;starts on a rest, amalgamates with previous object if it is another rest (define (amalgamate-rests) (define this-dur (string->number(car (string-split (d-GetNoteDuration) #\.)))) (define this-dots (d-GetDots)) (if (d-PrevChordInMeasure) (if (Rest?) (let ((prev-dur (string->number(car (string-split (d-GetNoteDuration) #\.)))) (prev-dots (d-GetDots))) (cond ((and (= this-dur prev-dur) (= this-dots prev-dots)) (d-Augment) (d-NextChordInMeasure) (d-DeleteObject)) ((and (= (/ this-dur 2) prev-dur) (= 0 this-dots) (= 0 prev-dots)) (d-Augment) (d-AddDot) (d-NextChordInMeasure) (d-DeleteObject)) (else (disp "Case not handled -did not join rests") (d-NextChordInMeasure)))) (d-NextChordInMeasure)))) ;;;;seek back to the chord started but not finished (ie before the rests) (define (find-suspended-chord) (let loop () (disp "looping") (if (and (d-PrevChord) (Rest?)) (loop)))) ;;;start with cursor on the rest to be turned into a chord, end back at the same rest or rather the chord that has replaced it (define (continue-chord) (define position #f) (find-suspended-chord) (set! position (GetPosition)) (let loop () (define denemodur #f) (define numdots 0) (d-SetMark) (d-Copy) (d-ToggleTie) (d-NextChordInMeasure) (set! denemodur (number->string (duration::lilypond->denemo (string->number (car (string-split (d-GetNoteDuration) #\.)))))) (set! numdots (d-GetDots)) (d-Paste) (d-DeleteObject) (if (not (Appending?)) (d-PrevChord)) (eval-string (string-append "(d-Change" denemodur ")" (if (> numdots 0) "(d-AddDot)" ""))) (if (d-NextChordInMeasure) (begin (d-PrevChordInMeasure) (loop)))) (apply d-GoToPosition position) (amalgamate-ties)) (define (add-note note) (set! suspension #t) (eval-string (string-append "(d-InsertNoteInChord \"" (d-GetNoteForMidiKey note) "\")")) (PlayNote (number->string note) 400)) (define (GetChords bass-key) (define chord-created #f) (define triggerPedal #f) (set! chord-position (GetPosition)) (if suspension (continue-chord) (for-each add-note ons)) (let loop () (let* ( (midi (d-GetMidi)) (velocity (bit-extract midi 16 24)) (note (bit-extract midi 8 16)) (command (bit-extract midi 0 8))) (cond ((noteOn? midi) (set! ons (cons note ons));; use (null? ons) to test if empty (set! chord-created #t) (add-note note) (loop)) ((noteOff? midi) ;(disp "A note off with chord-created=" chord-created "and suspension=" suspension "\n") (if (= note bass-key) (begin (cond ((null? ons) (continue-chord)) (else #t;(disp "the else case\n" ons " and rest =" (Rest?) "\n") )));;;finished getting chords for this bass note (begin ;;; a note-off which is not the bass note (set! ons (delq note ons)) (if (null? ons) (begin (set! suspension #f) (set! chord-created #f) ;;; creating a new chord over the same note. (if (and pedal chord-position) (d-ToggleTie)) (cond ((Rest?) (d-Diminish) (d-SetMark) (d-Copy) ;(d-DirectiveDelete-chord "ChordsForBar") (d-Paste) ) ((> (d-GetDots) 0) (d-SplitChord 3) (d-MoveCursorLeft) (d-MoveCursorLeft) (d-MoveCursorLeft) (d-Augment) (d-MoveCursorRight) (d-DeleteObject) (ChangeToRest);on a whole chord: we remove notes all down to the Rest ) (else (d-SplitChord 2) (d-MoveCursorLeft) (ChangeToRest) )) (loop)) (loop))))) ((or (zero? midi) (and (= command #xE0) (> velocity 32))) (d-SetBackground #xFFFFFF) (disp "Abandoning getting chord\n")) ((pedalUp? midi) (set! triggerPedal #t) (if (d-IsTied) (d-ToggleTie)) (set! pedal #f) (loop)) ((pedalDown? midi) (set! pedal #t) (loop)) (else (loop))))) (if (d-IsTied) (d-ToggleTie)) (set! chord-position (GetPosition))) ;;; end of GetChords (define (createChordStaff) (d-AddBefore) (d-InitialClef "Treble") (d-StaffProperties "denemo_name=Chords")) (define (EmptyContent) (while (d-PrevObjectInMeasure)) (while (not (None?)) (d-DeleteObject)) (d-MoveToStaffDown)) (define (midi-thru) (d-SetMidiThru #t) (d-SetBackground #xB020B0) (let loop ((midi (d-GetMidi))) (if (not (pedalUp? midi)) (begin (d-OutputMidi midi) (loop (d-GetMidi))) (d-SetMidiThru #f))) (d-SetBackground #xB0E0B0)) ;;;;;;;; actual code (set! ChordsForBar::active #t) (if (equal? "Chords" (d-StaffProperties "query=denemo_name")) (set! ChordsForBar::active (d-MoveToStaffDown))) (if (and ChordsForBar::active (d-MoveToStaffUp) (equal? "Chords" (d-StaffProperties "query=denemo_name"))) (EmptyContent) (begin (if (equal? "Chords" (d-StaffProperties "query=denemo_name")) (EmptyContent) (begin (d-MoveToStaffDown) (createChordStaff) (d-MoveToStaffDown))))) (if ChordsForBar::active (let ((bass-position (GetPosition))) (d-SetBackground #xB0E0B0) (PlayCurrentMeasure 1) (if (not (None?)) (let loop ((bass-key (d-GetNoteAsMidi))) (d-PushPosition) (d-SetMark) (d-Copy) (d-DirectivePut-chord-graphic "ChordsForBar" "CheckMark") (d-DirectivePut-chord-gy "ChordsForBar" -120) (if (zero? bass-key) (begin ;;;; if it is a rest we are copying we need to remove the tick, and set chord-position #f since we cannot tie over it ;;;; we could also flag the situation to allow the pedal to put the chord on the whole beat including this rest. (if (Rest?) (begin (d-DirectiveDelete-chord "ChordsForBar") (set! chord-position #f) )) (d-MoveToStaffUp) (GoToMeasureEnd) (d-Paste)) ;;;; listening waits for the bass-note to be played, meantime collecting up other notes in a list (let listening () (let* ((midi (d-GetMidi)) (velocity (bit-extract midi 16 24)) (note (bit-extract midi 8 16)) (command (bit-extract midi 0 8))) (apply d-GoToPosition bass-position) (cond ((and (= command #x90) (= note bass-key)) (if (and pedal chord-position) (begin (apply d-GoToPosition chord-position) (d-ToggleTie) (apply d-GoToPosition bass-position))) (d-DirectiveDelete-chord "ChordsForBar") (PlayNote (number->string note) 30 "127") (d-MoveToStaffUp) (GoToMeasureEnd) (d-Paste) (d-MoveCursorLeft) (if (d-IsTied) (d-ToggleTie)) (d-StagedDelete) (if (and pedal (not chord-position)) (amalgamate-rests)) (GetChords bass-key)) ;;; a note on that is not the bass-note, put it in the list and go back to listening for bass note ((= command #x90) (d-PlayMidiKey midi) (set! ons (cons note ons)) (listening)) ;;; our synthetic 0 midi message - abort ((zero? midi) ;; (d-PutMidi 0) ;;this clears the queue of intercepted events (d-SetBackground #xFFFFFF) (d-DirectiveDelete-chord "ChordsForBar") (set! ChordsForBar::active #f)) ((= command #x80) (set! ons (delq note ons)) (if (null? ons) (set! suspension #f)) (listening)) ((pedalUp? midi) (disp "Warning pedal up ignored\n") (listening)) ((pedalDown? midi) (midi-thru) (listening)) (else ;;!!!!!! create a quiet drum sound hmm what about using the pitchbend to play the two bars... (d-PlayMidiKey #x5000) (d-PlayMidiKey #x702709) (disp "Ignoring " command " " note " " velocity " waiting for " bass-key "\n") (listening)))))) (disp "finished with an object in the measure chords for bar is active is " ChordsForBar::active "\n") (if ChordsForBar::active (begin (d-PopPosition) (if (d-NextObjectInMeasure) (begin (set! bass-position (GetPosition)) (loop (d-GetNoteAsMidi))) (begin (d-PutMidi 0) (PlayCurrentMeasure 1)))) (begin (d-PopPosition) (d-MoveToMeasureRight)))) (disp "Finished ChordsForBar")))) (set! ChordsForBar::active #f) (d-SetBackground #xFFFFFF) ;;(set! Pitchbend::commandUp "(d-CursorRight)") ;;(set! Pitchbend::commandDown "(d-CursorLeft)") ))) ;;;;;;;;End of ChordsForBar denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/MidiAdvanceOnEdit.xml0000644000000000000000000000013213135434035025467 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.196648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/MidiAdvanceOnEdit.xml0000644000175000017500000000060013135434035027334 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS MidiAdvanceOnEdit <_label>MIDI Advance on Edit <_tooltip>Advances the cursor on MIDI note entry. Use in Edit mode. denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/CheckPitches.scm0000644000000000000000000000013213135434035024537 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.196648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/CheckPitches.scm0000644000175000017500000000205013135434035026405 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;; ;;;CheckPitches (d-Note) (d-EditMode) (define-once CheckPitches::Active #f) (if CheckPitches::Active (begin (d-PutMidi 0) (set! CheckPitches::Active #f)) ;;; not active (let ( (midi 0) (command 0) (note 0) (velocity 0) (loop 0)) (begin (set! CheckPitches::Active #t) (d-PlayMidiKey #x202001) (d-PlayMidiKey #x202601) (d-PlayMidiKey #x202201) (d-InputFilterNames "Check Pitches Filter") (d-SetMidiCapture #t) (set! loop (lambda () (begin (set! midi (d-GetMidi)) (set! velocity (bit-extract midi 16 24)) (set! note (bit-extract midi 8 16)) (set! command (bit-extract midi 0 8)) (if (= command #x80) (loop)) (if (= command #x90);; only check on channel 0 (begin (d-PlayMidiKey midi) (if (= (d-GetNoteAsMidi) note) (begin (d-NextNote)(d-RefreshDisplay)) (begin (d-PlayMidiKey #xF06001)) ) (loop)))))) (loop)))) (d-SetMidiCapture #f) (display "End of script") denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/ChordsForBar.xml0000644000000000000000000000013213135434035024536 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.206648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/ChordsForBar.xml0000644000175000017500000000120413135434035026404 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS ChordsOverBass ChordsForBar <_label>Chords for Bar <_tooltip>Plays the context of the current bar. Then listens for you to play each note in current bar with added chord(s). As you do this it notates the chords on a staff above. When the bar is finished it re-plays the bar. Allows you to repeat (pitch bend down) or go on to next bar (pitch bend up). denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/FootPedalConductor.scm0000644000000000000000000000013213135434035025740 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.206648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/FootPedalConductor.scm0000644000175000017500000000557113135434035027621 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;;FootPedalConductor (define (FootPedalConductor::display text) (if (positive? (d-DirectiveGet-standalone-gy "Conductor")) (begin (d-DirectivePut-standalone-graphic "Conductor" (string-append "\n" text "\nDenemo\n620")) (d-RefreshDisplay)))) (let ((start #f) (number #f) (numerator (string->number (car (string-split (d-InsertTimeSig "query=timesigname") #\/))))) (define (pedalDown? midi) (and (= #xB0 (bit-extract midi 0 8)) (= (bit-extract midi 8 16) #x40) (= (bit-extract midi 16 24) #x7F))) (define (pedalUp? midi) (and (= #xB0 (bit-extract midi 0 8)) (= (bit-extract midi 8 16) #x40) (= (bit-extract midi 16 24) #x0))) (define (thetime) (/ (get-internal-real-time) internal-time-units-per-second)) ;;; time in seconds (d-SetBackground #xB0B0E0) (d-DirectivePut-standalone-gy "Conductor" 480) (d-MoveCursorLeft) (let loop ((number -1)) (FootPedalConductor::display (string-append (number->string number) " ⬇")) (let ((midi (d-GetMidi))) (disp midi) (if (pedalDown? midi) (begin (if start (let* ((now (thetime)) (interval (- now start))) (if (> interval (/ 1 2)) (begin (set! start now) (if (> number -1) (let ( (at #f) (text (string-append (number->string (+ 1 number)) " " "⬆"))) (cond ((or (= numerator 2) (= numerator 6)) (set! text (string-append (number->string (+ 1 number)) " " "⬆")) (set! at (round (* interval 500))) (d-OneShotTimer at (string-append "(FootPedalConductor::display \"" text "\")"))) ((or (= numerator 3) (= numerator 9)) (set! text (string-append (number->string (+ 1 number)) " " " ➨")) (set! at (round (* interval 333))) (d-OneShotTimer at (string-append "(FootPedalConductor::display \"" text "\")")) (set! text (string-append (number->string (+ 1 number)) " " " ⇖")) (set! at (round (* interval 666))) (d-OneShotTimer at (string-append "(FootPedalConductor::display \"" text "\")"))) ((or (= numerator 4) (= numerator 12)) (set! text (string-append (number->string (+ 1 number)) " " "↩")) (set! at (round (* interval 250))) (d-OneShotTimer at (string-append "(FootPedalConductor::display \"" text "\")")) (set! text (string-append (number->string (+ 1 number)) " " " ➨")) (set! at (round (* interval 500))) (d-OneShotTimer at (string-append "(FootPedalConductor::display \"" text "\")")) (set! text (string-append (number->string (+ 1 number)) " " "⇖")) (set! at (round (* interval 750))) (d-OneShotTimer at (string-append "(FootPedalConductor::display \"" text "\")")) )))) (loop (+ 1 number))) (disp "finished"))) (begin ;;; not started yet (set! start (thetime)) (loop (+ 1 number))))) (begin (if (pedalUp? midi) (loop number))))))) (d-SetBackground #xFFFFFF) (d-DirectiveDelete-standalone "Conductor") denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/ToggleCheckChords.xml0000644000000000000000000000013213135434035025542 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.206648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/ToggleCheckChords.xml0000644000175000017500000000072713135434035027421 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS AngryDelete ToggleCheckChords <_label>Check Chords (On/Off) <_tooltip>Advances through the current movement as you play the notes, stopping for wrong or missing notes in MIDI in. denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/PaxHeaders.19168/MidiAdvanceOnEdit.scm0000644000000000000000000000013213135434035025451 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.206648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/MIDI/MidiAdvanceOnEdit.scm0000644000175000017500000000152013135434035027320 0ustar00jjbenhamjjbenham00000000000000;;;;;;;;;; ;;;MidiAdvance on Edit (d-Note) (d-EditMode) (define-once MidiAdvanceOnEdit::Active #f) (if MidiAdvanceOnEdit::Active (begin (d-PutMidi 0) (set! MidiAdvanceOnEdit::Active #f)) ;;; not active (let ((midi 0) (command 0) (velocity 0) (loop 0)) (begin (set! MidiAdvanceOnEdit::Active #t) (d-PlayMidiKey #x203001) (d-PlayMidiKey #x203401) (d-PlayMidiKey #x203701) (d-InputFilterNames "Advance on Edit MIDI Filter") (set! loop (lambda () (begin (set! midi (d-GetMidi)) (set! velocity (bit-extract midi 16 24)) (set! command (bit-extract midi 0 8)) (if (or (= command #x90) (= command #x80)) (begin (if (= command #x90) (begin (d-PutMidi midi) ) (begin (d-NextNote) (d-RefreshDisplay)) ) (loop)))))) (loop)))) denemo-2.2.0/actions/menus/MainMenu/InputMenu/PaxHeaders.19168/Keyboard0000644000000000000000000000013213135434150022435 xustar0030 mtime=1500919912.799981805 30 atime=1500919914.546648472 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/0000755000175000017500000000000013135434150024363 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/PaxHeaders.19168/NumbersDefault.xml0000644000000000000000000000013213135434035026156 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.219981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/NumbersDefault.xml0000644000175000017500000000070113135434035030025 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NumbersDefault NoteNamesDefault <_label>Numbers Default Action <_tooltip>Sets key shortcuts 0,1,2... to the default action, inserting notes of the duration. denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/PaxHeaders.19168/NoteNamesDefault.scm0000644000000000000000000000013213135434035026416 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.219981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/NoteNamesDefault.scm0000644000175000017500000000031013135434035030261 0ustar00jjbenhamjjbenham00000000000000;;NoteNamesDefault (d-AddKeybinding "A" "a") (d-AddKeybinding "B" "b") (d-AddKeybinding "C" "c") (d-AddKeybinding "D" "d") (d-AddKeybinding "E" "e") (d-AddKeybinding "F" "f") (d-AddKeybinding "G" "g")denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/PaxHeaders.19168/NumbersSelectDuration.xml0000644000000000000000000000013213135434035027517 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.219981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/NumbersSelectDuration.xml0000644000175000017500000000074413135434035031375 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NumbersSelectDuration NoteNamesMove <_label>Numbers Select Duration <_tooltip>Changes the action of keys 0,1,2... to select the prevailing duration instead of inserting notes of the duration. denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/PaxHeaders.19168/NoteNamesMove.xml0000644000000000000000000000013213135434035025756 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.219981805 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/NoteNamesMove.xml0000644000175000017500000000067413135434035027636 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NoteNamesMove <_label>Note Names Move Cursor <_tooltip>Changes the shortcuts for note names a, b, c, d, e, f, g so that they move the cursor to the nearest note of that name. denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/PaxHeaders.19168/SimulateMidi.xml0000644000000000000000000000013213135434035025624 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.229981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/SimulateMidi.xml0000644000175000017500000000140713135434035027477 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS SimulateMidi NumbersSelectDuration <_label>Simulate MIDI <_tooltip>Makes the second and third rows of the pc-keyboard behave like a MIDI piano keyboard: asdfg... creates the scale from Middle C, while the qwerty row provides sharps/flats (with gaps). To customize these key assignments for your keyboard use Ctrl-Esc. Tab key toggles chord entry off/on. PgUp key starts entering notes an octave higher, PgDn an octave lower. Use with rhythm entry for MIDI in checked in preferences. denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/PaxHeaders.19168/NoteNamesMove.scm0000644000000000000000000000013213135434035025740 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.229981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/NoteNamesMove.scm0000644000175000017500000000035713135434035027616 0ustar00jjbenhamjjbenham00000000000000;;NoteNamesMove (d-AddKeybinding "MoveToA" "a") (d-AddKeybinding "MoveToB" "b") (d-AddKeybinding "MoveToC" "c") (d-AddKeybinding "MoveToD" "d") (d-AddKeybinding "MoveToE" "e") (d-AddKeybinding "MoveToF" "f") (d-AddKeybinding "MoveToG" "g")denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/PaxHeaders.19168/SimulateMidi.scm0000644000000000000000000000013213135434035025606 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.229981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/SimulateMidi.scm0000644000175000017500000001234413135434035027463 0ustar00jjbenhamjjbenham00000000000000;;;SimulateMidi ;use the PC keyboard rows asdfghjkl;'# and qwertyuiop[] as a piano keyboard (naturals/accidentals), mimicking the effect of MIDI in. The assignments are for UK keyboard, the script needs updating to allow for re-assigning MIDI keys to PC keypresses. (define-once SimulateMidi::active #f) (define-once SimulateMidi::alist-uk '(("a" . 0) ("w" . 1) ("s" . 2) ("e" . 3) ("d" . 4) ("f" . 5) ("t" . 6) ("g" . 7) ("y" . 8) ("h" . 9) ("u" . 10) ("j" . 11) ("k" . 12) ("o" . 13) ("l" . 14) ("p" . 15) ("semicolon" . 16) ("apostrophe" . 17) ("bracketright" . 18) ("numbersign" . 19))) (define-once SimulateMidi::alist SimulateMidi::alist-uk) (if (not SimulateMidi::alist) (set! SimulateMidi::alist SimulateMidi::alist-uk)) (let ((startmidiin (d-GetBooleanPref "startmidiin"))) (define (append-to-scm filename) (define port (open-file filename "a")) ;not needed (seek port 0 SEEK_END) (display "(define SimulateMidi::alist '" port) (write SimulateMidi::alist port) (display ")" port) (close-port port)) (define (setup-keys) (d-WarningDialog (_ "Dismiss this dialog then press 20 keys for the 20 notes c'' - g'''. Esc to cancel.")) (set! SimulateMidi::alist '()) (let loop ((count 0)) (define key (d-GetKeypress)) (if (equal? key "Escape") (begin (set! SimulateMidi::alist SimulateMidi::alist-uk)) (begin (set! SimulateMidi::alist (assoc-set! SimulateMidi::alist key count)) (if (< count 19) (loop (1+ count)) (append-to-scm (string-append DENEMO_LOCAL_ACTIONS_DIR "denemo.scm")) ))))) (if SimulateMidi::active (d-InfoDialog (_ "Press Escape in the Denemo Main Window to end MIDI keyboard simulation.")) (let ((pedal #f)(octave 0)) (set! SimulateMidi::active #t) (d-InputFilterNames (_ "Simulated MIDI Filter: Esc to end.")) (d-SetBackground #xFFF0D0) (d-SetPrefs "1") (let loop () (define value #f) (define key (if SimulateMidi::active (d-GetKeypress) "Escape")) (set! value (assoc-ref SimulateMidi::alist key)) (cond ((number? value) (d-PutMidi (+ (* (+ value octave) 256) #xFF3C90)) (loop)) ((equal? key "Page_Up") (set! octave (+ octave 12)) (d-InputFilterNames (string-append (_ "Octave:") (number->string (/ octave 12)))) (if (zero? octave) (begin (d-SetBackground #xFFF0D0) (d-InputFilterNames (_ "Simulated MIDI Filter: Esc to end."))) (if (positive? octave) (d-SetBackground #xFFF8E0) (d-SetBackground #xEFE0C0))) (loop)) ((equal? key "Page_Down") (set! octave (- octave 12)) (d-InputFilterNames (string-append (_ "Octave:") (number->string (/ octave 12)))) (if (zero? octave) (begin (d-SetBackground #xFFF0D0) (d-InputFilterNames (_ "Simulated MIDI Filter: Esc to end."))) (if (positive? octave) (d-SetBackground #xFFF8E0) (d-SetBackground #xEFE0C0))) (loop)) ((equal? key "Tab") (set! pedal (not pedal)) (if pedal (begin (d-PutMidi #x7F40B0) (d-SetBackground #xD0F0FF) (loop)) (begin (d-PutMidi #x0040B0) (d-SetBackground #xFFF0D0) (loop)))) ((equal? key "Ctrl+Escape") (setup-keys)) ((not (equal? key "Escape")) (d-GetKeypress #f) ;;puts the last keypress back for normal processing (loop))) (set! SimulateMidi::active #f) (d-SetBackground #xFFFFFF) (d-PutMidi #x0040B0) ;;pedal up (d-InputFilterNames "No Input Filter") (d-SetPrefs (string-append "" (if startmidiin "1" "0") "")) (TimedNotice (_ "MIDI simulator end")))))) denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/PaxHeaders.19168/NumbersSelectDuration.scm0000644000000000000000000000013213135434035027501 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.249981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/NumbersSelectDuration.scm0000644000175000017500000000030513135434035031350 0ustar00jjbenhamjjbenham00000000000000;;NumbersSelectDuration (d-AddKeybinding "Set0" "0") (d-AddKeybinding "Set1" "1") (d-AddKeybinding "Set2" "2") (d-AddKeybinding "Set3" "3") (d-AddKeybinding "Set4" "4") (d-AddKeybinding "Set5" "5")denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/PaxHeaders.19168/NoteNamesDefault.xml0000644000000000000000000000013213135434035026434 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.249981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/NoteNamesDefault.xml0000644000175000017500000000073613135434035030313 0ustar00jjbenhamjjbenham00000000000000 A Denemo Keymap AT, JRR, RTS NoteNamesDefault <_label>Note Names Default Action <_tooltip>Changes the shortcuts for note names a, b, c, d, e, f, g so that they edit the note at the cursor, or append a note when in the appending position. denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/PaxHeaders.19168/NumbersDefault.scm0000644000000000000000000000013213135434035026140 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.249981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/Keyboard/NumbersDefault.scm0000644000175000017500000000025413135434035030012 0ustar00jjbenhamjjbenham00000000000000;;NumbersDefault (d-AddKeybinding "0" "0") (d-AddKeybinding "1" "1") (d-AddKeybinding "2" "2") (d-AddKeybinding "3" "3") (d-AddKeybinding "4" "4") (d-AddKeybinding "5" "5")denemo-2.2.0/actions/menus/MainMenu/InputMenu/PaxHeaders.19168/ShowVirtualKeyboard.scm0000644000000000000000000000013213135434035025430 xustar0030 mtime=1500919837.963315139 30 atime=1500919932.249981806 30 ctime=1500919912.953315139 denemo-2.2.0/actions/menus/MainMenu/InputMenu/ShowVirtualKeyboard.scm0000644000175000017500000000013113135434035027274 0ustar00jjbenhamjjbenham00000000000000;;;ShowVirtualKeyboard (d-SetPrefs "1") (d-VirtualKeyboard 8) denemo-2.2.0/actions/PaxHeaders.19168/Composer.scm0000644000000000000000000000013213135434035016463 xustar0030 mtime=1500919837.909981805 30 atime=1500919932.259981805 30 ctime=1500919912.903315138 denemo-2.2.0/actions/Composer.scm0000644000175000017500000000121113135434035020327 0ustar00jjbenhamjjbenham00000000000000;Composer Mode hardcoded default number keys to "Insert Note" ;;car is the default value, cdr is the current one. Various scripts alter the cdr to temporarily change the number keys. (define wrap:Op0 (cons d-Insert0 d-Insert0)) (define wrap:Op1 (cons d-Insert1 d-Insert1)) (define wrap:Op2 (cons d-Insert2 d-Insert2)) (define wrap:Op3 (cons d-Insert3 d-Insert3)) (define wrap:Op4 (cons d-Insert4 d-Insert4)) (define wrap:Op5 (cons d-Insert5 d-Insert5)) (define wrap:Op6 (cons d-Insert6 d-Insert6)) (define wrap:Op7 (cons d-Insert7 d-Insert7)) (define wrap:Op8 (cons d-InsertBreve d-InsertBreve)) (define wrap:Op9 (cons d-InsertLonga d-InsertLonga)) denemo-2.2.0/actions/PaxHeaders.19168/palettes.xml0000644000000000000000000000013213135434036016534 xustar0030 mtime=1500919838.043315139 30 atime=1500919932.259981805 30 ctime=1500919912.906648472 denemo-2.2.0/actions/palettes.xml0000644000175000017500000022222513135434036020412 0ustar00jjbenhamjjbenham00000000000000

ëÖ¬B©T’‘™Å}MÁd2²zÅrDQä–þý™1óer/]öx}©Œ$·Âj­AërÛ  غ—®ë_=ºu#00ý"Š"F£‘=û÷3dÐ «i*éìI‘—1FV¯ýŒ©NÆÇÇGR¿¤Ž95-+W¯òðC“Q«Õ¨Õj” ヒä½ûÜ›+ʰ6¾Üï$A@­V£×ëyôá)\º|™s.Ðn]ºðþÂEìÜÌÉ”T–.ÿ˜ä½{òwE6är®³íJÛÌf3z½³ÙLFV&{öíçܹsÄÇÅ¡T*Üë›u¸mð t:†æÍÊ»}(jµFC«–å+”u:Çê‹+uª­ÖöZ;ꇢ”ˆ¢ÈAÙ½gGŽÃ`0Ø\15têÞ}ûÉ/(`ôÈUŠßP¸z5Al7E‘˜èht:× mÒ7¦Ø*S“ï1Ñm,Û+4ÈËËC4›y{Á|ºvéÌ;ïÀ3Ógp1;›G§N 8è¯÷¹Ñ#Gòå§køñû”i˘5÷uO»äRüüü,ÿ¯˜ºóóõµÛ&xm}©Ö4†vÔåæWˆ0ý¥—)U©HÞ·ýoA¡PT\TÛc×ÅžÔÔ%†Í[·2xà@|}}]^õÍ¿âi:«`:½(¯àîŒÍ•zUå{Åÿ+_ÕV|"&((Q ð÷繯¡T*1 (•JV®YKxXAA.õݓֶ/]¾LvN}zõB§Ó¡Óé±£FñÖ»ïÙL‰¹Û7wÚ«ø×l¶o¿D×—ªü–2/g4°>¦!·£à†"@·.]hBòÞ½ìÝ¿ŸÛjt#‹ÚÄ_PÀ‘£Ç:dp£ˆ3&ºü^GjZšÍö”ÔSÙ<ÛØb³ÆßOœL©ôû$€e´üÁ¢Å9zŒ’’´Z-*•Š=ûöÓëÆuåü…tfΚCñõE#PÞ•”” P(ÜþbCE®/ö4ôvÔ¥÷+þo2™2x«×~†Ñ`¤WÏ*¥«¿M)}¯o ‡ SÇ$IýqUÌmããéÚ¥3Ë?YE~A¢(râd ßmúãF²¹×áÊØ\Q†Ö5ùðõƤœ:…(ŠddfñÉšµ ¼uÍ¢¢ð÷÷çÌÙs,ûx¥*f³™M?üÈ™³g™pçø_Îuµ-V²}ã = aù'«Ð^Q§gd²áÛ èßÏr5ïßÜ©‹#[Ž|¨øí©úâJj«Aåÿ7¤vÔ.œ2µR8o6~Lja·#B¹SØ Wo«ås=7›<á÷#GiG`@€ÄþTáe=mFf¾0ƒç_x‰ûšJÓ¦M)..ææ¾}ytê›üÝ›«òuÆ÷û'MâÙé/\þö•ؘž}ršå¾È«3_â¹/pÏ€¶¬ŒéÏ>CRb‚ËWÀ¹£.9°jg;009/Ïdî‚7Ù91™à  ŠKJèÛ»7/<ÿ/·ˆÖ½ºØ6òöÛ,[0›Í­/vžK¦“ó”okí(€PîƒÈù³©ì;p˜#FÔ;ã¦M›b2™P«ÕøøøÐ´iSôz=*•Êf[qqq½Ÿ-Ùºu+€$¾WP×BBBP*•6SJ®@ʘ•J%þ?þ× ‰‹‹%¡}{T*•Metel®(Ckªó]©TJYY× IIM%´i(=ºwC«ÕZy¥R‰R©äø‰hµ:ºvîL“&!–{®ÀÕºTGhh(ƒFc³ÝÏÏ“ÙLZÚiJJKiG\l,jµÚm¢»u C«ÕÚ”uDD*•Êò˜JE=ªh»—{‡†7G«ÕI ?òYWÊÊÊ(((°™h,¾×o‹ÙÛâ‘ YÇȺ8‡¬“c¬u).¼ Tórï3gΠÑhèׯŸÛ­ f³™´´4‚‚‚•ïuÅÛbö¶x¤BÖÅ1².Î!ëäk]Z4 ³Ùg7B<|ä£GÆßß¿Q,ÓNÇæÍ›E±Qù^W¼-fo‹G*d]#ëâ²Nޱ֥WÏ®@5#DN‡ŸŸŸÛ?òYWDQÄÏÏÏ2/Þ˜|¯+Þ³·Å#².Ž‘uqY'ÇTÖŇæ76Ѭ¯x›ïuÅÛbö¶x¤BÖÅ1².Î!ë䘪FÉò›j¼o‹ÙÛâ‘ YÇȺ8‡¬SÍÈ¢àm1{[fÔtLL¬—ŸÖ¸¢¼Ö|ö9k?_Gûví臘¥ñï>äëßa2YòÁ.±-užÎ”iTd¤å÷˳ç0røpî?Ž•«× Ñ”ñêÌÈÌÊbæ¬9ääæˆF£aäða¼4c: Œ–­iHuÛšÅË–K‡öíl¶§¤¦2{Þ|  F¥R1 æÎ~_‡MOhˆíUUšÔ6”4Dr‡X‰^={²gÇ6»í_þg=[·mãæ¾}¸tùŠSör/]¢]Ûx>]µÒnŸÙdª—ŸÖH]^?ýü k>ûœÇ}„¿?<³ÙŒ(Š( ~Þ¶Ys_§{·®4iÒ(:Dgʴ¦ÙlæBzI ˆ¢È…Œ Ý:Q1Ìœ5›ÐÐ0V-ÿˆ¨¨Hv%ïáÅW^%)1‘»Ç“ÔïÊ4¤º­Õj9{î»’÷rà×_io“^E¼ó.±11|ýå„„„°ÿàAžþë¿ÚÀäûî­W,Ö4”öª&MœMã*ŠN —uˆ;vï¦cB"yùìÞ³?__FßqÑmZ³mÇNN¤¤ÆØÑ£l®ÎëK}}E¡RY³Y»î >^²¨"ÑõÌlß¹‹ã'NÄí0c IDATÐ!ƒißîÏ«½ìœb¢£í:?©+¦”ùFV®YË-ýnæá‡D£ÑXö]¹z•Uk×2ùþûX÷åØð ýnºI2Û¸BŸšÊTEL&Y/¢×뉉‰Æh4r!=)“'c2›9vü²sry}ö,ü)--å¦>½?f [¶þÌ]ãÆJê·£8ê{¼Tu{߃,\²…Bˆ6þ]¾r…‹ÙÙ<ÿìÓ”––Ò³GnèÑ“©©’–±+úº´_5iâlWáÉ1#3“í;wQTTLt›ÖÜ1b8M›6õ˜?Uá²qÅÊÕÄDG“—ŸÏ =º³39™¶üDnÝ(,,$1¡7mbÛŽ|ºrJ¥²Þ6Aß+çñÞ‡ ™8ánâãâ0™Lˆ”ï_¸t9¹¹tíÜ…ßfý†¯™7{ýûÝ @Nî%ºvîÌ¡ß'##“ˆˆúÝÔ×á‡)¥ô·>¤>M^~>3_˜nój£ââ^ž=‡žžn]:óÃæÍìÝ€›ûö•ÌvîuV.Ósç/ðØÓ,ûÇÜ5Áòÿç_|‰0èÖDFFZÞúa0ˆ‰‰fã¦M |$œ ¬))ò¨kÝ~ûPÆ À'ÙåÌ{o¿IǤ$‹Vz½ž‚‚ktLJlðb]Ú¯š4šus%žê÷8ÀœyoCÛø8¾úæ[þûÍ7,[ø¡ÓÓòîÂe¢ äåç³nÍ*”J%™YÜ÷ÐL&#«W,GEnéߟ3_&÷Òe¢Û´®·M¾ÐwìÞÍùôtÞY0£Ñhc£¨¨˜¯Ö}Npp0F£‘§ž{ž%Ë?¦Oï^øøø“ÃÙsgÙôã4‹Šäbváá¼³à âb¥[\ e̳sl¦rÊÊÊxyÎ{äºvî„Á` m\Y½šÌ¬‹Ìm{÷ïgÉGËYÿùgœ=w€Si§éÛ»—%¿ãœÀl6SXT$élGeRÝÖëõèõú?}«ä_Hp0}{÷Æh4rúÌY~=tˆÃGŽ¢R©xðþû|‡X—ö«&M§Ò¸ OtˆƒÅË–3xà@Þ˜;€R•Š©œUk?eæŒén÷©:Ž6Š¢Xï?€ÛB§Ó¡ÑhhÞ¬|ß°Û‡¢V«Ñh4´jY¾ŠM§ÓIbO*ß+þŒF#«×~ÆÔ'ãããcgïþ{'!jµ½^Ï£OáÒåËœ»pNGDx8÷OšÄŽŸ6óÕëØðå(•JÞü÷»’i,ũÁò{ö¼ùŒ3†þ7ß„Á`@EBC›¢×$µíŠxœ-S³ÙŒ ”/šIJJD ëâE:´oGÅZ™„„tëÒ…÷.bçîdN¦¤²tùÇ$ïÝ `¹×*õ_C«Ûý«´Íl6£×ë1›Ídde²gß~Î;G|\J¥¢Áêbw}Ú/GšÔ%MCש¦¿Ô´4®\½ÊÃMF­V£V«Q*L¼û.’÷îóˆO•u©±C” ???ËÿM×ï£ùùúÚmsñâ¼:³gß~ò =r„Cc¢ÛX¶‹¢hY~Ÿ——‡ŸŸÿùl-N‚J¥¢´´”ð°P¦L~€3gÏ’——çÖXœ%""€+W¯ Š" Þù7}zõbÔÈ–Îàj^áážr³ÎTU¦yùùdçäpîÂB›6%;'‡Si§‰ŒŒ$;'§üBÀlæíóéÚ¥3ï¼ÿÏLŸÁÅìl:€à `O…UkêS·kËè‘#ùòÓ5üøýFÊ´eÌšûzýœw½ýj\½š‡ 6ðTÔ'NǵÂBzgËW™ZŸTf³}ï,ŠÒÙ”Ò÷Í[·2xà@|}}í®´àÏ+à *î¹!Š"%%%6ù™L&š_Ÿ3Wi4D5À˜»tê„B¡`߃ü°y -[¶dò}÷ÚÜO¼vígΞãÑ©S$µ]+ò¬ ª2ý÷ûr*- MY+W¯aåõÑQ`@;w'³lá´iÝšÞ˜ûJ¥ƒÁ€R©dåšµ„‡…èRßRݮɿK—/““CŸ^½Ðétèt:A`ì¨Q¼õî{¨5‚$úr»;4¯kûåŒo®ôßv¬©øþ¢N§Ãßßß²]§×åm¢'üª —Ž3ù9zŒ¡CWY`'N¦Tú}€˜èhÿ~„§þ5Ýî (33…BA+'zv7¡¡M¹mð ¾üïWhu:žú¿Ú}7ìãU«Q(Ü1b¸‡¼¬Õ•éÒ…ðîÛoáïïÏŽ­[ØüýFA`õŠÙõóO–+Ú-æÈÑc”\`_¥R±gß~zÝxcƒ:±«£¾uÛÎ_Hgæ¬9[¶U\$* IŸC”i¸ÄD· 5-Íf{Jê)‚‚‚l^ˆÑpé=Dgæ²¥´'U^¢(røÈ:uLªÒÞ×7’rê¢(’‘™Å'kÖ2ðÖ4‹Š¢SÇŽddf²hé2Ô ¢(ræìYÖ­ÿ/£Fް\95¤˜E±üуvmÛ–¿%%•í;wYîf]ÌfÞ›o±}ç.^xþ9š„„HjÛñ8[¦¥¥¥œLI¡Cûv”””püøøúøAQQ&“ Μ=DzWPªRa6›ÙôÜ9{– wŽw™ß ­n;J/VòïÆzÂòOV¡½>ÚLÏÈd÷пŸedÚt±‹É {UÙw¤I]Ò4ÄúS›¿¶ññtíҙ埬"¿ Q9q2…ï6ýq£G¹ì¾{mt±ÆÅS¦¶•Æ~›e‹d6¥Êç÷#GiG`@@•yÞ?iÏNààò·pÄÆÄðì“Ó0™L²`îk¼òÚ\&Ü{?A””–Òÿæ›yfÚ’~¬Sºò‚ã'Npð×ßøê‹Ïy÷Ã…Ì™7…Ba™"lÅ[óçÑ料èt:ÉìZ#e<ÖÔT¦éthßQIÏÌ m[û‡Í_ùÏÍx{x€€´eeLö’,+5]EC©Û<³ó/009/Ïdî‚7Ù91™à  ŠKJèÛ»7/<ÿ¯[ÿ+å\öË^GùלF:ÜeÇ£ÑÈÌfðü /qßCSiÚ´)ÅÅÅÜÜ·¯Ën¹ÔEQäüÙTö8̈#êqXXZ­Öfº-""•JeYv¬T* ¥¸¸¸ŠÍy¶nÝ ‰ï!!!(•J›)Ÿ *ü.++ãZa!)©©„6 ¥G÷nhµZËÉîëë‹B©äø'(.)¦]|<íÚ¶E¥RIR¤ŽÊ—›—?0\~¿(/?ŸÓ§Ï 7hݺ’’Ðjµ6KÇ¥ÂñXS]™œOO'<,Œˆðp._¹‚Ñh$ºM›4J¥¥RÉñ'ÐjutíÜ™&MB즕¥¤!ÖmkBCC1 6/q€òE)&³™´´Ó””–Ò6>ޏØXÔjµ$¢+ëK}Û¯ª4©m)põyUJ¥ÿ€Žÿƒk……ÄÅŒо½dí`]Ùºu+·ôë @ò®m<òø3®!:X=TPP`óÛh4Úm«/R \ZZZå>k¿ƒéwÓMˆ¢ˆZ­¶I§×ë®;!f³Ùn¡HY©¬§JJJ  w¯òÇ ªêL¤ÄU'Iue Ø¡¢X>mܺU+A°õFL&ݺt±ì/++s‰¿•iHuÛš¢¢"‡Û+Òtꘄ ˜L¦_ÿ+¨oûU•&µM#%žê|ŒF#&µšN“P(.«R ¿Ë´ž˜L¦jG·¢(ºd4UÙ†«ò«)>Wà©úgýXIuÓŸî(Óªìº)ʾ1ÖoÅ“:yꜩ-ò*Sä¢Wàm1{[Mbbb£O§ÓqæÌâââ•ïuÅÛbö¶x¤BÖÅ1².Î!ëä˜ÊºXc×!víÚ•””Ž;æÒ÷3JE@@ñññtéÒ Qù^W¼-fo‹G*d]#ëâ²NޱÖårn¦Í>»—{‡†7G«ÕI Dðt%eeeØL 4ß늷ÅìmñH…¬‹cd]œCÖÉ1Öº^ªy¹÷™3gÐh4ôë×ÏíŽÖ³ÙLZZAAAÊ÷ºâm1{[r‚Ñ£G[>`ÛÐNÇæÍ›E±Qù^W¼-fo‹G*d]#ëâ²Nޱ֥WÏ®@5#DN‡ŸŸŸ¤ðt%¢(âççg™oL¾×o‹ÙÛâ‘ YÇȺ8‡¬“c*ëbÃó›hÖW<Í÷ºâm1{[^²È’Æd2‘uñ"z½ž˜˜hŒF#ÒÓ™2y2&³… “CLt´]çç­\a£.ç~Muåò•+\ÌÎæùgŸ ´´”ž=zpCîœLMu¹Vr‡X3.í¯’‘™É“ÿüƒ½^¯¯/ú÷cà€[Ðét’رFÊB_±r51ÑÑäåçsCîìLNæ‡-?Ñ£[7 ILèÀÆM›Ø¶c'Ÿ®\AqI‰Ûã…úÇìL9iyã…Á` &&š›6a0ð‘hÊÇ]'îðÛ‡2nÌhîœ8É¡mgÒ¸ w\@¾÷áB&N¸›ø¸8L&çÎ_à±'¦Yö¹k‚åÿÏ¿ø `î¬WÈɽD×Î9ôûïdddA¿›ú:ü««c‚ÚžûJ¥²ÆºÌ{o¿IǤ$Ë9¤×ë)(¸FǤĿD‡¸úÓϸcøpZµjéiWâÒ1;'€œK—Xö\ÈÈ €‘Ãnçÿ ___IìX#e¡ ‚@^~>ëÖ¬B©T’‘™Å}MÁd2²zÅrDQä–þý™1óer/]¦°¨po¼Pÿ˜)§è6m8•vš¾½{YŽ=þÇ Ìf3…EE6÷›êƒ»N\½^^¯ÿÓ®ÛΤq®¶»c÷nΧ§ó΂ùF:´oÇö-›ùdõj2³.2ÿµ9ìÝ¿Ÿ%-gýçŸ!å~eçäpöÜY6ýø#Í¢"¹˜CDx8ï,xƒ¸X×.q….µ=÷£Û´®±®„Ó·woŒF#§Ïœå×C‡8|ä(*•Šï¿ÿ/Ñ!þôó/ôíÝ›–-[xÚ‡¸´CÔhÊXþÉJú={ÜÀ©Ói,ùh9 …‚iÿü‡$v¬‘ºÐo<È2²kÞ¬|Åݰۇ¢V«hu½`u:Gâ…úÇìŒß èÖ¥ ï/\Ä?þþ(Í¢¢Ø½gÉ{÷å÷˜¤ÒÞc'®èÄt¨3i\„+íšL&V¯ýŒ©NÆÇÇÇbKEA 3+‹¤¤$².^¤CûvT¬£ÒétD„‡3hÜXþñ÷Gìœ\žxúÞü÷»|´èC—ù]á£+¨Í¹ïЇJuEEK‡™‘•Éž}ûÉÉÉ¡KçÎ(•Š¿D‡ˆ X.¢".]Ö¤T*xø¡¹wâDL&I‰ ¨TjV¬ZÍßy??WºPoü¬ü3]¿?âg5Ò«Ø&7^gý~{Á|ÞýàCÞyÿôz=}zÝÈ£S§°bÕj‚ƒ‚=…L}سo?ùŒ9¦±ÊËÏG¯×sîÂúöéCvN§ÒNIvN-š7ÇÏÏÿ|¶ƒÁ€J¥ <,”)“àí÷Þ'//fÍšy*´:S›s¿¶Œ9’»ÇG¥VóÔsÿbÖÜ×Y¾xQýn€hÊÊHK;mùmÐëI;s–²²ò/M´hÞœ6mZ{Ê=;\:BŒ/ÿøbçN-ŸÚ0 $&tÀl6séÒ%âbc%±U+ï³ü¹âÎ~” Šž‰×Ú¯ºâ¬ßþþ¼1÷5”J%ƒ¥RÉÊ5k  #((°ñ´í#ÄÍ[·2xà@|}}mìüûý9•–†¦¬Œ•«×°RP«Õ°sw2Ë~@›Ö­)))±ÉÏd2Ñüú3Š*†(úîJ]œ=÷«òÁzû¥Ë—ÉÎÉ¡O¯^èt:t:‚ 0vÔ(Þz÷=Ô A.üš½'êíÕ«WY´ì#ËïR•Š ß|k¹Ø¸cÄpî™p·Ûýª …+3‰Ž& €Ì¬‹6Ûsrsˆˆˆp¥y·ÓXãuÆoNÇ‹säè1J®?”­R©Ø³o?½n¼±ÁNÈÔL~AGŽcèÁvå¸tá¼ûö[øûû³cë6¿AX½âcvýü1ÑÑþýOýk:× mŽÍÌÌD¡PЪEü_änÎ_Hgæ¬9__ åTII …ÂåÏ!z‚vmÛòÍú/-‘Ì{m¶å÷ƒ÷ßçimpØ!Š×ç¾ëûW±òêÓÏבž‘‰(Šdfe±îËõÜÒ¯MBB$³%µïÖW†5Ù©øíÎx¥ŒÙ¿ýýý9söË>^A©J…ÙlfÓ?ræìY&Ü9¾AÅSç²®Á¶3i\å›+u9|ä:&Ùí+--ådJ Ú·£¤¤„ãÇÿÀ×LJ¨ÈŠŠŠ0™LtêØ‘ŒÌL-]†Z£AEΜ=˺õÿeÔÈ–¯´7&]j{î;SWn¼¡!!!,ÿdÚë÷Ó32ÙðíFôïg7&jú3[þD@[¦µüÖjµñËZk\:e*Š"O<þ.¤óØÓhÚ¤ %¥¥té܉—_œá’VJå»UŽ6ß~›e f³ÙíñÚúU÷ãñûÕ™/ñÜŒ¸ç @[VÆôgŸ!)1Á²*Q ¤/C§¬:aÛ™4®ÃUv?r”¶ñq8´‘ž‘A‡öíËðÌ Ú¶µ}à<((s_ã•׿2áÞû ¤¤´”þ7ßÌ3Óžpù‡i]WΟûö>Ø×•ÀÀ@æ¼<“¹ ÞdçÄd‚ƒ‚(.)¡oïÞ¼ðü¿±NµÃ±^ EQäüÙTö8̈#¤3 s*í4¹—.ѺU+:wêˆZ­–´lݺ@RßÃÂÂÐjµ–ûjP>}¨R©,«Å”J%¡¡¡c2™Ü/H³3~+•J”J%ÇOœ@«Õѵsgš4 ±Ñ§>¸¢ %44ƒÁ€F£©WWàj]BBBP*•6SyÖœOO'<,Œˆðp._¹‚Ñh´<†S¯¯/ ¥’㜠¸¤˜vññ´kÛ•Jå²ÆÏ•ºÔåÜ·¦ªºâçç‡Él&-í4%¥¥´#.6Ö%íCž<¯*£R« D©péÝ:§Øºu+·ôë @ò®m<òø3®S(–O»ÄÇÅÒ¾][L&“Ý x)‘Ò÷ÂJ÷D l~F›m¦yÔä·ÑhÄd2Ñ­KAÀh4RVVVoÛŽ|q7EEE’¤q%®Ò¥´´´Úý‰: Šåo¬iݪ•¥ì­Ñëõ‚@×γÙìòz_+t©Ë¹oMUu¥b!M§ŽI‚à–ö¡‚†0*kÚ¤‰¤hIÛ¾va00 ’ç[™†"´»âic®ÉoQm>v ¥ žÒź>T75Q•ÝÆÄ_Y')o­¸Ï[edddddò‚½o‹ÙÛâ‘ YÇȺ8‡¬SÍÈ¢àm1{[>ž.]º4*ß늷ÅìmñH…¬‹cd]œCÖÉ1Öº\ÎÍ´Ùg÷rïÐðæhµZ"## táÇ*¥¢¬¬Œ‚‚›iÆâ{]ñ¶˜½-©uqŒ¬‹sÈ:9ÆZ—â«@5/÷>sæ †~ýú¹ÝѺ`6›IKK#(( Qù^W¼-fo‹G*d]#ëâ²Nޱ֥E³0›}v#ÄÃGN0zôhËG=:‚  Ó騼y3¢(6*ß늷ÅìmñH…¬‹cd]œCÖÉ1ÖºôêÙ¨f„¨ÓéðóósùÇ*¥BEüüü,óâÉ÷ºâm1{[ÞÎ?gÒHyzªŽºOøëŒŽ—._±l¯ÊGwžk-WA„ê}°Jã©6È¥¢(Š•òʺ˜ÍÚu_ðñ’E’Ú²¶);vï¦cB"yùìÞ³?__FßqÑmZ³mÇNN¤¤ÆØÑ£ˆŠŒôH¼®ÈóØñ?ÈÎÉåõٳ𧴴”›úôfü˜1lÙú3w+©½ÊÔ7gËÁd2‘uñ"z½ž˜˜hŒF#ÒÓ™2y2&³… °ïÀA.Y €B¡D;ÿœI#Räé¬6f³™]É{HMKC!ôèÖ[ú—¿ó§_~¡kçÎD·icÉãÄÉ´Z-}z÷¨öx©‘BWœë\ß/Šf¶ïÜÅñ' bèÁ´oW>ƒàÎsMª:™’zŠƒ¿ýFqq1‘‘‘Ü6x01ÑmlÒ9vŒýbEúß|“•¢Si<Õ¹|QMå¼Þûp!'ÜM|\&“I2;UÙ«+V®&&:š¼ü|nèÑÉÉü°å'ztëFaa!‰ ظiÛvìäÓ•+P*•n¤ï‹Š‹ˆŒŒ´¼ÝÂ`0!™7 ½{¹õ\“B§o¾ûž»Æã¥éÏc6›E‘»'ÝÇþƒéоù¬ùìs&ýmÏ?û f³™ŒÌLzô1EÑ©4žjƒÜÖ!šL&V¯ýŒ©NÆÇÇÇe®ÔùÞ6x:€æÍÊWß »}(jµ€V-ËWét:Û9!¡ݺtáý…‹øÇߥYT»÷ì!yï^ˉà*¤Ì»ªrEAÈÌÊ")) A(ï:´oGÅýz‡~ˆNL‡:“¦HgUÚ(Jÿ~„íÚáëëË£S§ð?FIII5þ”ÇíìñR!•.RŸëÿÞï$A@­V#><…'Ÿýç.\ cR’ÛÎ5)òùxÉ"üüüP©T@ù·+¾!Š"ý ³ÙÌ£O¥´´€–-Z0üö¡ìÙ·ßé4žjƒ’çX{öí'¿ €Ñ#G4ª›ö~~~–ÿWLyúùúÚm«¼è©±Æ šÍ¼½`>]»tæ÷?à™é3¸˜Í£S§ìa§ªrÈËÏ';'‡s.Ú´)Ù99œJ;Mdd$Ù99 zíªÒ&:º LyˆÏ¾ø’;ï¹—3_aÝ—ÿ!÷Ò%§ò­ïñžÂUçzLt›N²âѼ¼¼Fw®•••ñÕ7ßòú‚7y|Ú“L¸÷~òòó-û¯\½JË-ðQ*-ÛL&ñqqµJã)]Ü6Bܼu+ƒÄ××·ÑŒ.*çùçÊDû€(ÚÚvW¼Ö~II€¿?oÌ} ¥R‰Á`@©T²rÍZÂàl4eXU9üûý9•–†¦¬Œ•«×°òú|`@;w'³lá6÷Èjë_c!V¥Édâ‘)qߤ{Ø»o?‡?ºõëÙ¸é¬XºØâ‹õ1‹•ª;¾âƒµRáŠ5Rœëÿ¯<¢¬øìPPP¢(ºí\«o>†Ç¦=…RÉÄ wsÏß&Ð))‰§ŸŸnÉ?00^o÷eŠ‘·³iÀ3m[Fˆù9zŒ¡C7ºÑR]hìñêt:>X´˜#GQrýAu•JÅž}ûéuã&¦êÊaéÂx÷í·ð÷÷gÇÖ-lþ~#‚ °zÅÇìúù'·½„ÀST§Í™³gùdõE†Ì+/½ÀªåqùÊN¦–H¼ò± éµ:Þ[pæ\?q2¥Òï“ÄDG7ªs-åÔ)òòòøàßo3ñî»èÒ©¢(¢R©-i¢Û´!??ßn6àdJj­ÒxJ‡bÅÕŸT‡ SÇ$Éó®|¥*užÎØ©üÛñº*fQñ÷÷çÌÙs,ûx¥*f³™M?üÈ™³g™pçøFOuåPZZÊÉ”:´oGII Çÿ¯Q‘YV[Ú•s þ9“ÆÓºÔ¤N¯çÓu_°eëÏèt:Ôj5¿þv€Ö­Zƾƒ1ˆ¢È[~âÜùó–¸k:¾!êâªsàëI9u QÉÈÌâ“5kxëšEE¹å\“J§°ÐPÒ32Ðjµèõz¾Þ¸‘ŒÌLôz¢XþøDDD8ï}¸ˆâ’Ìf3¿lßÁ¯‡Y|p&;u±Æ-S¦¿9JÛø8$Ï»2Òço{"Øo³l±lsg¼¶~I—ß«3_â¹/pÏ€¶¬ŒéÏ>CRb‚KWÌVØ—‚šÊ!=#ƒíÛ#Š"é™´m_ƒíÊõ ®iꆔyV§MnÝ?v ï/Z̪µŸ Öhø¿Ç#&º S'Oþÿöîç'Ž2Žãø{È,îlw!m“ªÀbÚ•Š­Vhc¬z⦉66ÖƒÖ/šØƒ1šÆTôÿ0éѤ!é¡ib¼ÔŠi ]¤^ =ÐåÇÈΠØÍ;¥Ï 2ý¾nì>žïgæ™a†yføñ§Ÿ¹ðÑEš››Ù—Éðþ¹÷˜¼¥TÃåuO?Ò—K4cýÂùó\úêkÒé4ŽãÐÙÑÁ¥/>¯å×X{Òœ GŽðæÙ×¹|å:žŽÙ¹yŽö¼È[oœå×k×8xðï¾ó6ß}û —¯|Ϲ>¤µµ•¦¦&>½ø1¿\½ŠR«7³5j³[û PJ)&î­ž®þöû-†††´þÛ¶1M“¹µ¹%QÐÚ÷\.‡ëºµkþííí8ŽS»ÍÞ4M²Ù,sssµ <Žz!šš«LÓÄ4Mþºs×­Ðw왌½. Ýt×Óh=LLNÒ–ËÑÞÖÆƒ‡ñQ›ÇÅzn”M:fjzš‰¿'iiiæhOÛ¦\.cYJ%î‹d2Nô÷«ÛLõ®Áí–×Eg.QŒõjûr¹Ì£R‰Ñ±1²û²¼Ô×ukÿC‹z¬éÌɶmî‹LMOÓÏóBw7Žó/·nÿAgGöï§¥¥…¥¸ýç+++¼rò–eaY³³³¡ÚÄ‘ËkgNpóÆu>ùìËxΫƒ$:û^*•6}633³îgÏó6}g½ÍÙˆçyø¾ÏñÞ^ ÃÀó<­;³í誧Ñz(>ŒR«7<{èP­Î­Têv´Ù)ë¹Q6ŽãЖË1øêêÃó¼ÚAÞu]2¶Íé”Rµi a—×MG.QŒõúöÏ´¶rfp00¯¸ÆšŽœèêì¤;ŸÇ÷}æçç1 ƒÓø¾ïû,--a§^> Pû±~ý‡i³û yýSDU³RjÝ„ó¸Äµë§VD}X‡¸·mÏó¶Ìe»ï§{aÌW[‰c¬éÊiã”$¥TíÑí> êO˜6qîƒb›‡(„BüŸÉb$­æ¤Õ£‹äLr GrjLˆ ´š“V.’K0É%É©1¹d*„B gˆ‰´š“V.’K0É%É©19 &@ÒjNZ=ºH.Á$—p$§Æä’©BAÀb*•Âu],ËÚþìH¥R!•Jì¹¾ïTÒjNZ=ºH.Á$—p$§`õ¹ÔÛt@ìêê¢X,R(öDx•J…ññqºÖÞ¥µ—ú¾SI«9iõè"¹“\‘œ‚mÌ¥Þ¦b__£££ŒŒŒDúÜJ]R©ù|žÞÞ^€=Õ÷JZÍI«GÉ%˜äŽä¬>—Sÿ¬ûnÓý…Bˆ§IõáÞrSBÁÚ%Ó‰{cܼq}·û"„BìƒêM…Bˆ§Ø'5æmuRÿIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/DenemoDirectives.png0000644000000000000000000000013213135434036020665 xustar0030 mtime=1500919838.093315139 30 atime=1500919916.179981805 30 ctime=1500919913.333315139 denemo-2.2.0/docs/images/DenemoDirectives.png0000644000175000017500000022241713135434036022546 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR¢Ø(ÚsBITÛáOàtEXtSoftwaregnome-screenshotï¿> IDATxœìw\ÇÀß^áŽÞ¤—¨4Q@ì`#vc/I¬1¶-þ¬±ÅØb4Å‚-‰‰š¨h¬1š ¢bAEEºôrýn÷÷ÇȺÞqH¹æÝ|åãgwfvæÍìÞ¾™7oˆ’’À`0&ÿNœ8ÉÒÒB¡PP¥oq0Œváè[ £SBCÃ,,,d2™¾Á`0ºà¥šwppЯ FlݺeÊ”© …\ß‚`0ÁÒ· F§X[[ã±z ÆtÀƒöŒiA’$VóŒé€{óŒiu<cR`5Á˜XÍc0&´Ç`L Š¢°¦Ç`LÜ›Ç`L ¬ã1“÷æ1Ó‚¢HÀšƒÑk¿ú*##ã—ýûu“9VóŒi‡ì1˰aÃïÝ»¾¾¾ÀÂÂÜÇÇwʔ۵k§oÑÔ¢P(úõëÿìÙ3Š¢Z´h!‹y<Þ»ï¾;kÖ§VVVµ^’ŸŸ_PPÈ7·‰„uäL’äÿÅ÷ìÙC)¼ÿ=€ÀÀÀ£GðùüÇÏœ9óÉ“§>>>~~¾J™ãA{ Æ´ H¬å1ÊoÙ²%$$$$%%=ûg‹-ÆŒyÿ»ï¾×·hja³Ùÿ}‰}íÚµ[·nM›6mïÞ½_|±‚ ˆZ/ùî»ïÎ;§.–&11qêÔ©Žroüܹ?àÛo¿upp__ß¹sçùúú&$$ìÞ½G)sÜ›Ç`L Š¢ð =Æp©y8…‚j›õ¿…ŸmÛ¶­W¯žÁAAú­(’D"¡`ô¨‘ßlÞÏãñÄ"‘jb6‹…RÖñK”J¥»wï>ß¼ºªR)vè!iiiÇŽóóóE™œ:ujè!EI%bñZæ¸7Á˜hÐÿá?ƒý{ù P$E}8öCŠ¢Nž<Åb³)€øË—ßÿàƒþFFu[ðùÂ’ÒR àÄÉ“ã'Lðhõ×ùó'}Ö.úÝÞ·““Q&µ^rþÂß“>šìÐêR\Ü”©ÓÂ#Úzï½”{÷¿ûþ‡N»ôìM_žrïþä§ :¬ÿ€ãÆO¸yëVÝbËär¡HdooÏfs~ضmè°áþ­ŠKJ†>rÔècÇÿ1r”ŸIQuˆ=û³9 àêêêë矓›Ë,ë½Áï±X¬?þø€ Ê+*âãã‡ñÛo¿Ñ™ÓÇjƒ1-ðÔ<æíâwÞ€‡r¹Ü„„„?ž²hÑ⸸¸¿þúëüùó«V­&bÈ!……/H’ôôôš8qbtttVVÖŽ;Ùl¶ºKvïÞ@’äÔ©Óâââ***>L>|ø?üP\\œ½sg ›ÍNKK=z´››Û¹sç.^¼èåå5nÜøÔÔÔZEU(¹¹¹Ë–-‰DcÇŽ¥(jÖ¬YB¡$ÉY³fs8œqãÆUUUQemmS‡Ø11;}||       U«@땾vrrŠŠŠ***JLL€ .·lÙrèÐ!tætÅñ =cZù†)A Æ ¿G) „B!‹Åúå—_)Š5j*>>žÏç‹„BôýÚ©S'¡@бC‡“'Oæææš™ñÔ]{ôH¿þ233oÞ¼iggwüøñE‹yzzž?þÚµkS¦LÉÉÉ13ãíÞ½G.—Ï›7 @,M:åèÑ£?ÿ¼ÿ›Í_+ %‘=<<ÌÍÍ›7gݺu“&M’ɤPã¦âøñãb±8;;˜ŸÚ5±ªb‹„²f" ª²Bµy†òßÿ;v¬s§ŽgNŸ>l˜B¡ »KÓÇjƒ1-(Š‚7Ùþ`0z‡tz–•¾¾¾Dqq1<|øÐÎÎîUÊ×G¨ä ¹¹…9$Éb±ê¸éQ//¯êêª!C/Z´ˆÇãÙÛÛGFv¥/úô)¸¹¹I$ ÀÕÕ233¹f<¹Š|AAÊœ$I©T"•Jé(333±Xäíí%¿š­¯ClfT­ãoÑÑÑ–––þùçܹs“nßÞµ{·L&e¦¤+Ží1Ó⥠þÆùÇxRÑß_À˜1cHRáïïqqqU••å诪²¢– k¨Ï%¤BÁb|û2½½¼ //T@Q/  E‹,«V±Qæ‚ê*©D¢Z#Š$r93DØô±L&«µ¡ø<Þ€ýE"Ñܹs###œšÉ¤ÒZ+ŽÕ<cZà¹yŒ!Ã|>+*+×oØxâäÉÉ“'wïÞ]&•N›:•Ëå.^¼øØ±ãiiiÿý÷¤&×a#.a2yòGl6{Û¶mI’»÷ìåp8Ÿ~ú)=¢®=¸\.üöÛoyyù2™L5ÁÐ!C ))iôèQr™\é§MWœ½hÑ"077×¶Ä Fï$&^kÒ–`áï{Œ!2bÄÈŒŒ 8}úôÎ1"IrõêÕ3fÌɤ©ÔÎÞ¾GOž<‰=}úL~~Á˜1£Û¶ Ýôõ¦ÿþ‹W(ééé}úô™?Á£GP(ìÛ·¯ºKâã/+Šôë×ï³Ïædff …B77·¿ÿþçúõëB¡P$½7ø½Î»œ?þÇŸ~:rô¨\.ÿî»ïÂÃÃE"!Y£V'Ož|ÿþŠ¢ììíš7oN×èë¯7'$$(ŠÔÔT??{{û={ö\ºô¯\.—J¥W®^Q'v‡Ž¸\NjjÚ7?~Õ-ÊŒÇSj.W7·“'O’$¹e˹B® Ifæ}úôA'JJJÀÁÁAG·ƒÁè­[·L?Ãaë[ ¦v¬¬mØl6( äã…$I©DÌìβÙl¾¹L*•ȤR>ßœÇç€L& –\33ˆÅb±Hí%<„L& ª-,-¹\3 (‘HH°X|¾9P”D"‹E‡Ç7GòP)‰ 9SlK++‡ r¹\"ËÒòÍÍy<$˜L,‘ ÇçñùAHÄb¨Cl33ŠU(ä´™¡Ö6¶ATUV Xfæ¨â؃1-(ŠÀjc ¨º‚QE¡Pª«”ÅbÓºM(€PаK€W— ŒËår•Ë™ª«ÕE‰E"%'9‰X"y•ybK¥©TRG¹ b‡¯”¹B¡Àjƒ1-°O{ ƤÀjƒ1-°³[ ƤÀ–8Œi;óŒI{óŒiAQx؃1!poƒ1-x*Ër0ŒƒÕ<ƒÁ`0F ´Ç`L 7€P3ƒðF©”p¹\w÷þ}ûŒ>Œ^¬”†fæôiï©þF©º½ÛG]­ãÿ¹ .Jäææ]¸xñýQ#ÍÍÍÕ¥©»v¨­,--OÅár¹J™0qœ8rØÁÁ^ãÂkЦ7Ôö๻¹ êßoôȪ? íÂfN›VÇ )j{Ì.¬æ1Ó‚ ¤^UíïÐáªåKmmm@"‘&ß¹³g¯L&÷ÁûJùlýzcÝF|¹y¹?ýòëàAù|åmñ:D„“$IoîÍ¿Q*¥B¡èvròÞŸ~¾ÿ uíªµfBãåé©TèK1Þ$ÕÖ¯7¢ƒ‡é»öî[³b¹µµ5ƒºÑ9¨Íäó•?­ ~µCm%®&^ïÙ•u1.Ž™•¦e×Mo¨i‡•Ë–ÚÙÙ€T"½}çNÌÞ}2¹lÜèW’¤²³³>p°¸dýÖMÕššvôØq¬æ1Ó‚ €$IŠ¢RÓ¶lÅŒBï—à  ºƒÙ¥3A±ü1öý1JùX[[‡‡…¡¬ÞX¨j¹\Îáp€´B]Vo”J5A÷¨È®]:/X´äÂÅ‹½{õª5 ¹j¡tHR…‡…¡…B!AÁt§Š$É76ˆPw_ÞX;âïçwñÒ¥¨®]˜QÿÆÅùûùeë³Ä7º½ÛçEQ QT4wáÿú üÑ´wSî¡ Ñ0ã°Ñï÷èÓO©¬ë7o¡^ IQÀèǨR·Tꄇ…uéÜé쟩ËÞªêÊ­C*:Ф”r>ýç¹w ª®®¦OžþɈÆöèÓïÉÓ§ŸÎß{à{c'M>ÿÏ?Ì Ož93vÒä>ƒOùdæ•«×PàãÌÌÿ-]þÞ𑃆X´lyvvNÝé_µù˜ZÚ¼žµC=ËÞ½z^M¼. éðgYYOž>ëÝ«'Ô|ývøÈ˜qz4qÊ´‹—â(Šúbõš)ŸÌ¤/!Irä‡c7oý¶VÑ“““3çó…} ž8eê»)RÓ¦Îü´÷À÷ÆOžróVRõ¥¼y õ}oðGÓfܽ÷úƒ×„F Û¤^{®‚[·.+/ …‰d×Þ}LœÔgÐà!£F/ZþÅãÌLZª´ôôÙó̘õ™ö„‘ËåæææêÚ‡.«y Æ´ @ª­u«Vµ¾k”Brrsù|>g†† 7oý.¸M›S?¦—¡ƒ5ë6tlß~ñçó…"ášõëѵÓ>ž «¿X¾eÓ¥l_ÍÍ¿>\©î ¨N*u  Eûðð´ôtZ‘€X, EôŸD*UW]µ:¤zMŸ7÷ó¹sKJKW®][GzUG›×¿vЩcGA\N¸B^¼×¢ù;ÍßyÕ÷è±ã»ü©G÷n_,]âçëûåú ·nßîÙ½ûãÌ'……/Ð%©—ôëÓ§VÑTô«¿ŒìÒyñç $éŠ5_®\»¶oïÞK~.“ÉÖ}½¹Žú¢Ë׬[ß¡}Ä¢ D"Ñ—ë6h°¨Z¼¼<>ŸÇãñöý¼ÿ؉“ƒú÷_³bù'S§æç,Z¾‚¢($UÍÏdŠf…‹ÄB¡P( ‚ŒÇ?ݳ'ÇS÷< ¢ñ =cZðòUbccM½>ክMhÛ¶‡cu‹Œœ9}EQÝ£"?;ïÀo¿‡¶ ‘Ëåû˜òѤFBQ2™lÿCŸL›R^QñýÜϼ½¼ÀÓÃãä™32™ jMß!"ü|| ¸M{{å6¯gíPÌ̸‘]»\Œ‹ëÝ …_ú/¾_ŸÞ$E€L*;xøÈ¨áÃfN›JQTnQ¥e¥¿ú}ÃÚ5\.÷jbâ÷Àå„+.ÎÎþ~ËV­Rø£ ãàýQ#û÷íCQ”\._·éëe3ÿ×çÝhú´¢¢Ò¼Öú¢Ë»têTóà)¾Ú¸©¼¢ÂÖÆ¦é@·ƒX, … •ÉîÝpè÷Ã=ºuC§3§O6x0I’AØØX/]±ª¬¬ ]õÞÀÿG’$I’füǯ=ÀînnŸÏ#“ÉÔ=¨h¬æ1Ó‚åK}˜ÞºU3 ½_&|<•Ø>¼ÒL(6´mÒ4JʵCD8 ·±±¹BÞ¼€Æ•Ä@sóUci¯Þø¨n©T%aÔTÙåȺ5«ìlíè´ú¯µÄº¥b$~­tܵs§ßÆ"påj·¨H‹€è=P+@Ÿèè»÷Põ,+«¢¢²mpPeeŠêØ>âë­ßº»¹ñùü-ßÿ0bèжÁA-[4GïôÌ'OjM¯P(X,–‚$@AÖÒæõ¬]£^=º±úËòòr[[ÛG3srs{t‹ÊÉÍ€¼‚üŠŠŠݺÑÕéÕ½û¶˜]f\n‡ˆˆ+‰‰ƒ €ËW®öŽîõäéSu@HPÊÄÖÖB‚Ú0Oå ¹ºöA—+=x ôà5¹èvPyðÂ?>¢¨y³gQ%•JËÊʲsrÏÿM‡„†„Ð-£Aa˜pvnÎŽ]{¶~ÿð!ƒÕµ*«y Æ´ ½àUTTÔúB¡_%...Ž2™ŒNiffƼŠ>¦U¦ªÒ­õÍu3év§í¡æýE1¨»n©j-åEQdz°° Ã}Z¶læèXÇ%¯*U?© ¦Jɺtê¸{ßRÓœfd|üÑD¹LÌ{{{±X\]]]U] Ÿ|6W)c3.÷û-›÷ÿz`ͺõ …",´íŒ)Sš¿ã­.½P(´´´¬Už†Õ®&‡ˆvíÌÍÍã._täHjZšµ—§§¥¥EM¶ é$¥ölº0̸U€EyÅžŸ~îѽ{­í# ÑUXÍc0¦Ah¶ºU€­/”–-ZЯJeOL¥×}¬d!üF5Ïf±(FA¨µ1®Tµ–’tûv›ÖÌÀZÇT¡(ŠöJVÿ¥Ìdžžî‰7n888ØØØ·i“|ç.””–º8;£4%%%è+ÄÑÁV,]âââÌÌÓÌ̬eóæ_­^%—ËSîßß÷óþe+WøiŸºô<¯î6oPíPx¨¨KÿÅ¿7`@\üåáC‡ÐcÎhYAiYÙ«ê”–ñxŸ¿õûmû÷#IòfRRʽûp÷Þ}++K¥«´'ŒÏ ªuíCáA{ Æ¡ÝãTTT*½P4®æüüBCB¶Åì²07?|àfn·n'wlQ35ÿf¼7ªùßlE§ÇÃÝmêG“† ,—Ëë™I­4ÎÑ*ÀßÆÆ†EÁmÚБkV,ÿõào§Îœurj¶xá‚ж!è+dè{ƒärù‰S§Ÿ<éîæ6Îì>ÑÑr¹|Ýê•ÛwíÞüíw|>/<,lÆ”)(#uéàe›ïŒQmózÖŽY#Š¢zv‹:vâdÏîÝЈ=;bØP¹BqêìÙSgÎzzx¬Z¾´M` ªN§íI’ mÛ–v’X«À7n%ÁkO¨;mèåMo„:î,X[Y­[³j×Þ}ß|û­Mßw{ÏùtæŒÏæ\K¼þnt/¥«´'Œ»›$Þ¸1îƒ÷k}^••””€ƒƒCec0ã`ëÖ-Bï~“º:BZQYikcÃŒe³Ù|>_(Öú¢QŠ¥OY,V­áEÁãñÐy´*‰&)ùNxX(׌÷Ýßù úy9Ïžÿy›ÀV3¦N€ä;w—­Z}ð§ÝÜ\Ùl6I’2™Œþ .—ËápX,3ŠÍfs¹\ÔT(R©”.¥ÖôPG›×³vJ5233ãr¹R©¥dÆr¹\.—‹f”•d°°°P(b±¸Ž ª{¢j=mÐåMo„ºï,Š53{éL=l|>=xJWiOÔÎèÖ¨{~ø|>îÍc0¦ yc%Ik++¥U¼è¡îB¥XúyS—¬Ö÷„µ A«Šé×:}c¹HPÏ4ÌÄÌãº×ªË97//óÉ“S>F—#gr…\]ƒH$U»Â:Ä®5=B]tžÌcÕÚ)*‹™Úš[‡ UUUoXÝUëiC/ob#¨føÆX@€T¯Òž0t;×ñü`5Á˜ ’bQÔÃŒG­üýô%†\¡à°Ùô¤!ìJCKÒh©Nž9{íúu77×Ö­^¾µ5k  š^;#À AÛÂ`5Á˜IQ„úuóº!évr‡ˆpêå2ãú­Pׯ†[+Õ§N›q¹Kÿ·Piýž!Ô±éµ3 ª´- VóŒiÖͳ(*ÀÏOo74UI‘$m‚WÏê:€5m´T‡Ýb±˜VóíÂBÿýëO´ŸEmM¯`P ma°šÇ`L‹—[×Åta¦{ÂÚ†P5€a¼mi˜ÆS“ªººZ)D&“Õß8@«4½vF€A5‚¶…Ájƒ1-^®›ª °$)7WÚ÷»n ( ùA½Ü‡¶^›ÄèŒW6P†$•¦0îÚÕƒjm ƒÕ<cr 5ogg÷,+ËÎÎ֜Ϛ&‰‚Zš››kû85í!›Ã6çóUÝãˆÊ1L©4…q×®žT#h[¬æ1Ó‚Í"¤2— f\®¿¯/PÕ:°ŠÕÁq c[¼j±Â’Ç‹ÅtW§G‚Éef\3ƒ’JSwíê‰A5‚„Ájƒ1-ZºXÄ?®îákV¯ÔËÝÔ jN•ÞAõú%$ÅôÊI¨{cQ@%>—µki v¶vÅ¥Åö¶öÈL}PãoFŠá¤¯‚¨¬®tvvnœTõµžQo¼¤×j£vµÊÖèõ¼¶)ù4¥ôÔÕç‘ÓøQ-«y Æ´èh‰¢Ž$W $µïÕF€öj'X <}OPó¯& A/¯}-}yM®ÀÌÌ×Õ²{+;…\ææêFQTÁ‹¦c8ÁæA­&µ¦QMY#oÍ ªI v¶vînî2Y½¤ªCUy}U—¿]©¯WŽIkW«Àêäoâåon´šº¿:®‰PMÀ¤AÀ”§Ž§®ŽGŽ`>d*·«)w¤>í†Ýb0&ÄÖ­[&NœdffÆápêó.nPŸ©,äÀ¿íRiªt-eB£ÁÚÑhcÄ[«£èh„úËÓPÉ5uGÔ•‹{óŒÉ!•Jé׊ဥҨ† IDAT=Æ]»zbP  að~ó ƒÁ-XÍc0 c´`5Á`0ŒÑ‚Õ<ƒÁ`0F Vó ƒÁ-ØÒƒ1-zöí¯o0ŒîÀjƒ1-îÞ¼®o0ŒîÀƒö ƒÁ-XÍc0 c´`5Á`0ŒÑ‚Õ<ƒÁ`0F Vó ƒÁ-XÍc0 c´`5Á`0ŒÑ‚Õ<ƒÁ`0F Vó ƒÁ-XÍc0 c´`5Á`0ŒÑ‚Õ<ƒÁ`0F Vó ƒÁ-XÍc0 c´`5Á`0ŒÑ‚Õ<ƒÁ`0F Vó ƒÁ-XÍc0 c´`5Á`0ŒÑ‚Õ<ƒÁ`0F Vó ƒÁ-XÍc0 c´`5Á`0ŒÑ‚Õ<ƒÁ`0F VóÆLYY™¾EÀ`0Œ>áè[Œæ)..~öìÙ©S§çÌ™£oq0 £7°š7BN:õñÇÀ?ÿü£oY0 £Oð ½’’’‚ÂÂÂô+ ƒÁ`ô VóFRó^^^ú–ƒÁ`0ú«y#äÞ½{€»ò ƒÁjÞøÈÏÏ/..¬æ1 ƒÕ¼ñ'æ1 CƒÕ¼±A«ùÐÐPxðàÁüùó£££ûöí»ÿþœœœ &„„„Œ9òéÓ§z•ƒÁ`0Z/¨{ë9þüÏ?ÿ\TTäïïÿÑG¡‰y{{{’$?øà¡PyôèÑœœœ .´oß~Ïž=cÆŒ™0aÂåË—õ->ƒÁ`´Vóo7;vì¸uëÖÆoÞ¼¹jÕ*´V^*•~øá‡7nìÖ­TTT|õÕW0uêTww÷ˆˆˆ¬¬, =KÁ`0-ÓT5W÷Wå_¥VzX÷ègÓO{ù¿íüúë¯W¯^%¢¢¢:v숔wTTÔÙ³gY¬—“2÷ïßG]ºt9pà@VV¸ººêIj ƒÁ舦ªùDAâÆ‚¥V h5/“É\]] 9<ñ’ªªªªª*@pþüù;w*  u<\»v ,,,ZµjuêÔ)8vìX½Èl8$Y\^\-¨+K«fv͘†Á`0F€fô¥/æÿ[Ü»Oª‚””GGÇvíÚÕ?“ò²²K—. 6 õMˆï$‹¯Ó±"‘hõêÕ¥¥¥ØhøòË/£££­¬¬,--ûöí…íýõ×Y³fùúúÀ£G^¼xmÛ¶e³ÙcÇŽ=}ú´Ï’%Kô,½^É{‘÷àñ±TL‡ðÍøm|Û¸;»ëQ* ƒÑ,šQóï€Où5jì„)tg(¹:ùÀÃz|XÿL²Ê²¯¥ ðAM&­æ:4iÒ$™L¦i‰aÆ 6Œ>B§mÛ¶õòòrqq€ÈÈÈk×®‘$ 2™läÈ‘>>>(™½½=899iP$SƒËåJ¥RŠ¢rssmll ¬¬,-- ø|~ëÖ­õ- AP\ö†NOQY‘n$Á`šˆX,vvvFC§ñññúcˆhRÍ/[¶ M«[XX ƒh×®]zzú;w >|ȼÄÃÃCƒ`BCC¯\¹’——G[Ô_½zõ\CBBð „T&¥ª…Õ¶ÊûøÑ 0'%%éx‚ а(£„&í]k`êxŠ¢6oÞËãñºví:iÒ$æ%fff³víZooï;wöìÙîܹãááѼyóÈÈH}Kg(˜q_>u…%…hY‡ºŒ“””„¬­­õ+ Æ0Ñz÷®   33ÓÝÝ]¡Pøøø W¬-Ñ£G‚‚fȲeË–-[¦/y “föÍr rÊ*ËÀÞÆ^5“=ž9¼Ðj[Þ`Ô¡u5Ïçó ‚ÈËË;zô¨H$B¦àOŸ>U7€\XXèææ¦m©0¦Œ§ÏÓœ§¥¥^®^ª±Aøxùè^* ¦Ðj>""B¿’` ­ûü:}ú4š¦(êÂ… 3fÌðôôüå—_TSº¸¸¸ºº®_¿^Û"aLk+k6‹í`ëPëà|ß6Ö–xðó ‹i?Ö¸7Q‡fzóÙ¼'Q۪ܣ^RRr“w z½<üT¼½Ålo¸ ©^â7ÏÀý@ù.È(¯lŽˆˆ¨cS$E¦e¦ed@½­}û öwÓï>Ï.‹HŠ433ótöìÜÁÝÙ$Éûïç¾Èe,OWÏÖ-[£)ü¥/R3S…"¡¥…e°_0²Ý+¯*¿œtyP÷A(Ò)£=îÝ»'—ËAÅþN$q8.—‹N¥R©@ @K™0&ˆfÔ|†$UU+p:¿pnc×#“ñ,£ ¸ ¼u¸D&9w¦]›vîÎîùEù•‚J{[{'{'‹%–ˆ‘§Ûôgé‘ SH'¹\~ïÑ=Á l(—ËoÝ¿å×ÜÏÕÑõYÞ³;éwzuèõÆr1CQúˆT²¿«¬¬Ü½{÷?þøðáC.—Û»wï 6¬X±âìÙ³R©´sçÎGŽñôôÔ«ì=ÐT5ßúÇ µF¥¦¦* Î{xxäææŽ3º]X}ݱu²ìÔD 1Š¢žæªòVRRRÂb±ð qSHKK0`ÀW_}µmÛ¶ÒÒÒÄÄÄõë×gff¢ØØØØêêê .@NNÎöíÛ 22rÍš5Û·oŸ7ožL&CÐSC[–öÿþûêEùã?¾ÿþûлwï?ÿü3---00PKEc0J =-‹?Ü5¬+ÒñPWï\Í/Êg±XÎÎ>^>Wï\EáÉf³•òi׺]µ°úE鋲вGYš{4l©ü#š»wïöíÛ×ÃÃ#11‘ž-Æ4”]»vÍš5küøñàææÖ¦M›Q£FÙÙÙ¡gûàÁƒè‹@N¯ {÷î•••sçÎESøÍš5Ó‡ì=£-Kûþù‡Þºæ“O>AO'ôéÓ:¤¥r ŸÅ‹ë[ãaäÈ‘£Fzc 9ÏœÅb]»{Í×Û×Òܲ¤¼äÒK¡ ´¢´o;k;kKk¹BÎL,WÈ­,¬¬,¬ª…ÕÏóŸ€D*I{’feaÕÒ³ex›ðv­Û¡±ôÑ  èòÒŠW{%ã{}ùòåîݻ޾}íM…i999eee$IR•——·oß¾èèhÚ$¹C‡tJŠ¢˜‹éKJJŽæn–ÓA[jž~ÎÜÜÜ6mÚD‡ÀñãǵT®á³qãF}‹`$ˆÅâ¿þúkøðáo d±X<./§0Çʪ´¢ôþãûh5‹`–JeÒ’ò’™ ¬²ŒÅby»yß{t¯´¢´¨¬èÞ£{h’žËáfåe=|ú°²º²¬²ìyþs+àóøA¤f¦VVWfd?/xN—kâ÷úáÇ}ûö­¨¨@§k×®½}û¶~Ez{™={vLLŒ³³³½½}@@À… |}}éØùóçÓ*?++«¤¤‡‡‡7oÞ¼mÛ¶5gÎÝKŽÑ;ÚRóôjÎåË—[YYÑášššŸŸ¯¥¢1&Â… d2ÙÀß( ¤"Ä?ävêí÷oØZÙ¶ñicÆ5 mZP\•—UTVÔ!¨ƒ•ÍÝô»Ðºek[kÛë)דӒ½\½Zx´‹QTZ”œpãÞ ‚ Â[‡ÏŒ×6 í‹Ò—o_Î.È À~Å ŤI“D""—ËñðF£éÞ½{NNN\\\zzzeeåáÇ-,,PÔÀãããiÛ:º‹Õ¬Y3///‚ RSSÿûï?æ«c:hkní|lkk;qâDf8ŸÏGW®\9r¤–Jǘ'NœèÕ«s…Z) î<¼ã÷Ž_KÏ–J9x¸xD´‰H3Oóõöµ²°êÑ…³Ùì°VaÐJ¹Äfv͢£T%ñrõb:Ô{¯Ç{M¨–‘°eË–ëׯ+þý÷ßÉÉÉaaazémÇÒÒ2((ˆ>¥Õù€¢¢¢vïÞ=fÌxÝý-Zwgee…m¡Lmõæ+++`РA–––Ìpúë>5µ¶uöLýP(§OŸVšk¬5Í ·ðl¡SùL‰D¢êÎ’Ãá°Ùlæ¦Ñ$I¿BÛ·oߣG””tzëÖ-t€ýâaÚRóÈe=2¸cBOÔeggk©hL­ÙxéåË—KKK‡ Rw @$xüü1½‚£Μ9SVVÆ ¹qãF×®]9òüùsubêIQQmãìããÃåríìì@ÅþNoòi“;wîtêÔÉ××÷ûᅧ¢–/_TZZúÆËMm©y4o„L?˜ëƒFžX¼¿qpâĉ–-[ª ÄÃõz„žz'b÷îÝÌáe´B*•ÆÇÇ+-zÄ4”3f„……GFFÚÚÚ¢À>úhùòåAäååéWŸÿÛo¿1;úoä½÷Õ?±:NŸ>ÓôLêÆ××·U+•× ‚ ô1ª ¯rëO=%|üø±ŸŸßÝ»wCBBj ˆW’¯t ëZŸ®üãçÓž¤ùzûªz§o:Zjó~ýú?~ñâŶ¶¶K–,ÑxþM„ö1oÞ<¥¨gÏž¡ƒ¬¬,]Šd²TWW?|ø0""Bß‚hÜ•o4¯­Oðœ¹[zóx<  æ;€¤( íÆ!•ÊÊÊ*žg‹²²ˆ…ŽbQ3Šb@VÖBÕ|}|| ;;›Vóÿüó½š.<<¼A:žIÍÕî%ƒåĉ-[¶dêxf ®×;ÈU›ÍîÚµ«RVó:æ›o¾Y·nD"Ñ· M…R™•ÿ÷ß52+o ¼Òµ,BneE˜ñx©”¢H’$IФH’¤H ^öKìímmmmš9¦¦åd=¥D"gPcßdggçì윑‘N¥Réáï6Ÿ0`€VkÕhÒÓÓ.\ˆz`FilüñǪ6öt ¶®×;HÍ7oÞ\u?:Ú§=Ó .F{H¥RãX$†»òMáUëP@‘IQ$I*¤£½‚TÈäRHPRZL”¯O‹Öæ®î9<^]¾Zµj•žžŽŽ;F¯æTíŠ$IîØ±¯ô3d •Ô<ˆ­ë ¤æÑx“‚‚‚óçÏ£c¼#*¦þ¨vå5e`o"0Ô}zSÄÕ{÷î …Ÿþy=ßeÝSYYùï¿ÿžräH©Tºk×.:$66–ž˜·²²úñÇU»ûo5IIIÓ§O_°`Auc¶oß¾ÿ~æÐ#wîÜ™2eÊÞ½{i»ìú?þ|hݺ5r¢L+‘Õ«W÷êÕK#²‰D¢¨¨¨áÇë~°yàÀ………'Ožôðð€ ÐNäMw¢ÌìÍE‘PðJÇHe²â¢¢ŠŠ >ŸgaaÉå:‰„"¹Bff&f±Ôöæ ]»vgμZÃ6fÌTCãÎ;—/_nß¾}ûöíõ- F-666ª6õb4Ž¿¿ýX—.]:äëë‹Ü¶”””0݈N›6-22R+RêÔ›oP+é7770çö¨‰|||ê/EQÓ¦MCÇ›6mŠˆˆ¸téú^ ^°`¦Fì‘ÿ;OOOÝ·ò„\{©ú‡mº¹˜’ £g.š§H’”ˆÅ999eee„\.·³³kÞ¢¹“““™‹¢dÌEöL ÅãÇéÓ–-[Ž5ª‰âj™LÃáp¦NªoY0cMØ!#)X²d mKÄÌ™3õ&æ­âÌ™3H©GDD 0Ø7Ž×ææ)’¤é…"aAA>‹Å¶²´â°9Í›ùúø=žU^VæáéinnÎæp(J‘’rbcc™vvªŸ¿eË= †y‹À]yMñú‚:Š" ‚B&“—WTØØØ¸º¸VUU —Ãas\\\ØlNII ‹`½\s§Beeå7ß|CGÑ­[7U¨ÄÄÄ /¼´ŽÇ`0M„ËåöíÛ÷éÓ§}ûöenF·víZ???= †y[PíÊÇÅÅá®|ãPvC‹Åf±X¤‚$XËÁÁÑÓÃËÕÕÍËÓËÒÒ‚ÍæÈår‰TÊ"ä,O5ÓíÛ·ÓSqVVVEݹsGGjW¯^MJJ 2د æ-m@÷äÉ:¤S§NsçÎÕŸD˜· Ü•× ŒÆ¢(Ф‚Åb±Y,6‡Ã±¶±©ª®*))vttôöö¶±¶•Ë2¹ŒÅf‘$)‘JI´Ðþuâãã¯^½ú2wkÙ²eÎÎÎôZƒbÏž=,Ë`×øa0o/)))ÌS[[Û_~ù…ÍfëKÌÛErr²‹‹KÛ¶mwïÞM„X,ÎÉÉqssûä“OpW¾¡¼¶ Ž$)€EÀfóù|GÇÒ’’œÜ\333GG…‚¬®®¢€²±±‘J¥99ÙB¡"ٕ͘——ÇÄÄЧcÇŽ MJJÒ]ê ZÐ?{öìZci<#óãÁh›˜˜˜o¾ù†>%â÷ßÇÃõ˜ú³bÅŠ+VÐ§æææ™™™z”ç­†¡æ¢(ˆ—p¹\kk77÷ü¼¼çÏŸ—””€D"¶¶±öt÷tqv)..~ñâEy2³Ûµk=ŠVÐ………]¸p!++ëwÞÑaÕ0ŒÆŸÿá‡jG.e Úzœ ‹Õè0 Ú!¦þ­¤D"I’úÀP›,ÉV®\©Ÿz mÜÚ®];4¡ôÛ€‡6±%g·½žÅb™››»¸¸pØœ’’‰DB‘dUuUUU—Ãõôôrqv),,´°`QÔËéù´´´„„tlmm=oÞ<´š¨mÛ¶A$''ššW×MoŠ¥=c”ìÚµ«cÇŽoL–šš:fÌfH``àéÓ§µ½T2''g÷îÝgΜ©¬¬lÙ²¥§§§D"IOOwttüòË/Ñ?­rýúõ?ü°ž­¤36oÞ¼k×®[·né[Cm"„P( ž3gŽî½§DFFæç矟þüù7j¼PŠ¢æÌ™C·pTT”ÒGÕ¡C‡èŽ~UUÕ©S§>øà‹Á8¯Ô|~þüüÆ8± ‚š¾?ÇcŽŒýùçŸ{öìA–4G½páœ9s³#\S¼Ýê™L¶lÙ²-[¶(/mD"ÑÑ£G //ÏÝÝ]÷"é 1ùѦ|¯ ªªjìØ±LOY;vì@Óv|>¿[·n.\ÈÏÏG»¥i‹/Ò;‘€¯¯¯R¥]6Ž=ŠÕ<Æy©ægÎ÷Ü IDATÌØÀØL®ap¹7ïß¿ŽûõëGï£wéÒ¥;wª»ª¢¢bݺu‹/6(«Ëôôô… ¢O–¦XÚ …ÂAƒ1'2˜ÄÆÆ~öÙgÎÜ0 7LïÚÆïµ_~ùe^^}:fÌæxÞ»ï¾{áÂ… .0÷¼ÐÌM®@u{¥…[¾§£%^þ ÆŽ]tñb#³ÈÊZHGGG£ƒÒÒR¦ŸœZ‘Ëå›7oþá‡\]]Y¶F!IrÇŽ<O,71«Ñ£G«{ï€H$jbþpî݆†øœûa?: ‚ pÐð¶Ê†éèPèà^2YYYß~û-}êååµsçNæàù»ï¾ çϟ׸šOLLdžªªù3f;vŒ>}ÿý÷5+óV I7^^^-Z´@ǧOŸFëj8ÎàÁƒ{öìioo?~üøqãÆyzz;v,##Äbñ¶mÛÖ®]«A1Í™3gž‰Dº— ÍvUTT ¢é_SÚ&¡I5&éÈO‹ÅZ¾|yxøKÒ¼yó‚‚‚Ñ£GwêÔiß¾}§N€»wïfddøûûkP’FPZZzðàA77·¡C‡6QÍ×1U>>>½{÷nJþõA <{ö¬¨¨H$q8qƒe|Â½Ö ƒ~cŠ¢êXŸ²páBuQaÉ’%u$&%%Í›7O«@ýZI÷ÔÏß0›±råJmûWPG»víÔE=x𠉙krŸÚY@ (((€ÁƒÓ:‘_b‹5uêÔ¨¨(~á ŠÑ8öîÝ+ §NÚt_J›v0ár¹?ÿü³V7ð (*---..îéÓ§ÕÕÕ …B"‘äççCͧ½nøë¯¿>ýôÓ+W®è¬D½ ß{­K.]ºD©ðçŸÒ ìììJJJè¨?þøÃÆÆ¦Ž íìì~ýõWÕ<ë’Ë´ùµVÉÉÉ¡ç%ëßJzdéÒ¥,«éù$‰\#,--?ýôÓ†f‚æ¶ôØDo¼}›6mÒ½TÈù]ff&:2dˆ’TÌþsãФšGãP38}úôa& |þü9mx?cÆ ´ŒµŽw¥n¸sçÎåË—Û·oßËTçfffGމŒŒlzêP(‰‰‰è‰QEÊ^«”””lÞ¼ú÷ï¿cÇŽ¿ÿþ[Û%ê=ÞkC€yçÏŸO÷OŸ>=bĈÊÊÊ:®-//?~|SVÿÓÖ¾m{JöìY—.].6ÚˆémföìÙÚó#¢LùöiRÍÓ®'è¥%4-[¶”Ëå´²±±±ACšùùùR©Tƒ’4™LÃáp4åÍøã?V ô÷÷¿zõª¶Ýý&%%•””¨‹e.yÒãÆóððÐöجA¡Ç{mܽ{°ÙlÚº^(NŸ>½žÛ’%K˜Vr ¢yóæÌSz5£6J¥ýû÷GîZÕÁáp›ê}Á0yöìÙ[½A\=o_=t%‘NÑÀ÷oJÊut0þ|¥¨Z7ž9s¦jàˆ#ê[^SÁ×ùA:mÚ´×Ójòë5###""Bƒ6‚4HKƒ48g&Á$çðàA¥Õ«WÓNÊêƒqxÁÓͽ6/x………è _¿~ô7ýwß}GÊ;::Μ9³wïÞ‹-JLLLHH¸~ýzLL ²ÀELž<¹[·nNNN -½S§Nׯ_§Oë^ÔPQQœ‘‘ÁçóZlÛ¶í…µoßžÑÔ Eedd­[Í9r¤¼¼¼Ñ;è?~üijíÕè’$?¾iÓ&¦÷I‹e4 =šˆß>m£±A{‚ ÒÓÓéÓ!C†qäȉDÂLæåå…¬óè nkí#•J'OžÜ¸o|ƒ¢Ž©P‚ BCCµÔWfêø°°°íÛ·À?ü NÇËd²ÿýï­[·þþûïÓÓÓE"rŒL/+ÃÇÖÖÐVb±î:99=z”v‰ ‰‘s‡³dÉ’ýû_}¤îÞ½[ÉWf}ˆŽŽf~R?Vïá‹¢¨}ûö 8°Ñ?{÷îÕÀßß__~rssûôé3jÔ(%Ó$I&''kéÓùúõë]ºtY°`62×8†|ût€ÆÔ¼··÷ÿýG?R-Z´:thvvö† ˜ÞÍš5cö8‘£{www½hÙ«W¯&%%uëÖM÷¥kuFÝ,+<<\{‹j‚@Ë’’’nß¾]ë¤ P(ìÛ·ï×_]ëLª’wRŒCÀy{{£ƒ'Ož Ï¾3f4kÖŒNÉÉÉtȸqã转ÊÊÊnܸÑÐÒ ‚øî»ïhÍ N¥íܹóÖ­[ÿûßÿZMÝ‹½¼¼Î;§ÕÍvÕ¡KË2™Lvúôé‘#G ‚[·n]»v­Ñv:Æ`oŸnИšoÕªUaa!ÓýäG}Ô»wï[·nÍž=;77:::–——Ói=zÌEwºdÏž=,kúôéz)]ã …JXZZvíÚU«~9’••u.ý¤1qŸqF†§§': ?"é¤×iZ·nmff¦ä*ñ믿¦ß­´5_ƒèÓ§½Ð9''GÉ/âÊ•+ ,X¿~½’H bôèÑê¢zöìyåʽì¡^Ë2.—Ûô½B¡ÈÎÎöððûì³ÀÀÀäååyxx€Šš¿xñ"AýúõÓ” ¢¸¸fÏž]k,m‚×çöº¤U«VæææYYYB¡ÍfÛÚÚº»»{zzjÛ®­þÛx›ŽÏ8ã#??_Éë0VôÒ¦mEYXX…ÂgÏž)¥÷÷÷OIIÉÈÈ`®|ëСÃåË— 55U5ÿú0~üx‹µzõj…B1zôèmÛ¶£(©TºwïÞ;wΟ?ĈË1nܸŒŒŒ#GŽ0§¨‚ƒƒ§NÚ¿™LÖ”Ì;}ûÞhYÖ¦M›§OŸ6ºˆÓ§OïÛ· z#ǦLœœœÔUœ¢¨§OŸ>zô(++ËÉÉ)<<fÖú iü}4]•NR‚¦/!ÑäJÓ1cÆÜ»woÅŠk×®¥?Žz÷îÍtfeeE÷ØîܹsåÊ•~ýúÑ#~˜ú ÁÊft@s€æo¾¶èÂHPÓñg|,X°@ÕI=¡Þ¯_?Ú¯š|X,ïÙ³'77·n;õ´ m¢H˜SRRRRR’M%$4ò/2²®Í0ŒX¼xq}öÉØ²¥Áû» M êØqäÊ•+l6ÛÝÝ=''‡~øða;;»¥K—¢S©TÊf³»téB'xöìêîܹ³¡Ra(Š’ËåÓ¦MSÚÕ7""âðáÃÌfšÎÀèÓZ·®ùæ›oÞø”vîÜYƒRoܺfذaM,âew×Ój–Æ4˜ßMH¸¸xñâõë׿1ñýû÷CCCá SD?ì ×ßtP]FóÀ€\+f¨Î¬™¶¶¶ªžyÂÂÂF5mÚ4GGG½HUOÞF/x6lX²dI=q: K—.«W¯^þöî;¾‰òøsMÓ´MÒ=¡Œ–Q(«P ²‘åWe‰àÀïW•! (øÙ в‚_T„»@™e”2 º÷JšÜÝïÎ3iCÚ\šÑÏûåËWr¹{žÏI?7ž±páСCSRR˜îòãÆ=z4sÓX(ÆÄÄà>´!š¦?üðC“É”œœl6Î4°ŸÏß´iÓܹsSSSKJJZµjß¶m[§ ÝÄGšse?›·E¿‚4ÿ£)ê›6m^\¶ŒY‚’’þ~ýø¿þ&“84tû† ÿX€ãE"ÑK/½„ºråÊ‚ \<Ç®,X°`Ú´i7oÞìÖ­{œyoooöï=66¶¬¬L¡P „-Z´cÇŽ~øÁìzÔKëÖ­_}õÕyóæ3¦]»v“ã Å–-[Nž<É,iâ#͹²Æþu™L&;[SŸ={633³®³B¦·ŸÏöÙg™áµA#XµjUAAÁöíÛhl<ï›o¾™7o^nnnrrò”)Sjz·ÂÛ·oßðáÃ?ýôÓ¨¨¨S§NÙß4’$=j0¶oß>eÊöm˜&>Òœ+kì4o4íœúèÑ£2™ÌòOÃùóçÿóŸÿ4oÞœYÒ½{÷Ë—/ãKà8sæÌÁƒÔΙ3.ß›,‚ –/_~ôèÑV­ZmÙ²%66¶k×®sçÎýꫯ¶mÛ¶nݺŋã^“'O>xðà°aÃΞ=Û¦ëv l555|ðALLÌàÁƒq§hô¸¥-ÖÄGšse7E¿qãÆ¬Y³RSSÃÂÂV¬X1vìX³T*•=èNž}zäÈ‘öÔ¬[µj•³Cwùòe›Ô¬]»öøñãÇŽKOOgbÏèØ±ãË/¿Ü©S§ÌÌLö|WÀ)ŠãÇŸ={¶ªªÊ²-ˆÉd:zô(~œœLJJb/©ªªŠŒŒüá‡Æ?`Àf9ÈÝžÇ ”¶kÙNî/wv ®nóæÍ~~~¶¯Ïãñôz½Á` (J …B½^ÿàÁƒªª*®†¥Ž–‘‘Á\»›ñóóóññ™?>{a||¼J¥2"‘H,{{{ßl¼åï¾ûN"‘Øù„¯_¿~éééf÷íµZíÖ­[“““ñÙØÕ«Wy<ÞSO=eOuÀFiiiÎ8‡Z­3fŒÙ¤¨ëÖ­KII1[kÁîp4.Óü+¯¼‚ ‰D:tØ»woÿþý™OKKK—/_þÚk¯ÙÙ¡nàÀJ¥òÎ;Ì’ìì숈ˆW_}µ¢¢" €Y~ñâÅ®]»Êd2{ªXwúôéZû³˜5¿Eá‘n͚ЊË4?hР!C†Puþüùëׯ>œùH£ÑŒ;–¦é ØYK¯^½Ú´iÃ?™$Éáǧ¤¤Ü¹s‡™‘‰¢¨½{÷¾öÚkvV°Ž}ÎÍVPP`¶äÒ¥KèñXxÀ}µlÙ2&&ÆÙQ[q<<ÎO?ýÔ«W¯¤¤¤™3gNœ8166Öd2:ujá…ׯ_ß±c3­EƒñöÛooÚ´éÃ?ÄK²²²,;饤¤¨Õê—_~ÙÎêÖÕ5ôa—.]Ì–àŽ¯ðÍÝ¥§§Ã4n„ãª3gÎ$%%­^½ºk×®~~~r¹üÙgŸ½uëÖš5k&NœÈI-¯¿þºF£aF_ªµ#þ_|±`Á;‡âÂí½/]º”››;{öl®jÔ%66¶{÷îiii<·¢ïß¿ÿÆÙÏàiš~ÿý÷Bfƒ¦·0}útg‡Žû4=zôèÑ*!4tèСC‡Z.ÿúë¯B‰‰‰Ž«À¶|ùòRµyóæI“&‰Åb³–-[vúôéaÆ9ôÏÀÜ{ØkÀ€¸÷ìÔ©S—,Yž²¸¸xÊ”)~øa\\Ü?þ÷{hdŽºš4) .”J¥sçÎ]ºtéÚµk{ö윟Ÿþüy’$ûöí»sçÎÐÐPg‡ @“ÃAšÇÓçáÿÍ5qAÌœ9sôèÑŸþùŸþ‰g¸ðòòêׯß믿>a¸ŽÀ)8Hó¹¹¹ÌÿŽæÊ¿¸˜˜˜uëÖ­[·N«ÕªÕꀀÈî8Ü´pO,[6Ä4>8Ñ<¤yÀcAš<¤yÀcAš<¤yÀcAš<¤yÀcAš<¤yÀcAš<cÚúìú Gç‰Ë„ý¥™¡»Ñ!…B±qãÆk×®‰D¢¼øâ‹ŒÆ<7É2ú‹.±±±/½ôA¡êêêÔÔÔðððØ^Hiié®]»¦M›ÆLiõBn?übݺu …bÑ¢EÕÕÕëׯ/¾ø"'‘ŒËkbœ¡¥R)I’'Nœà¤XNwñâÅÕ«WÇÅÅ!„4ÍO?ýix"GÝú …&“ ¿V«Õ§N*(( I2  W¯^QQQ¥¥¥{÷î}zÔ¨Q …¢¤¤déÒ¥‹-rvD49\¦ùqãÆá&x"‘ÈÇLJYÞºuëüüüTWWççç³7 ´±ðÜÜÜ¥K—ªTª?þ¸S§N† €{iÙ²%óWvçΡC‡jµZüvÉ’%£FêÚµ«s£ ©áò¦½L&“Ëår¹œãišþý÷ßÏœ9# Ûµk7pà@ö&6ö‹ËÎΞ={v\\܆ ºuëÆa̸ÜN…i­âšH’|õÕW™2™LóçÏwbH4M§ººº¸¸˜¦iŠ¢ÂÃÃö|nýúõ£Gž5k–ŸŸç8÷Å_\¸pÁlá‘#G®^½ê”xh²žæ…B!B¨²²òÌ™3iiigΜA•””Ôµ¾B¡0[¢R©²²²úõëWÄâИöÐëõË–-3[(ø|þÊ•+M–ÃÓüÅ‹ñ š¦¯\¹2lذÀÀÀãÇ[®)“Éd2ÙÎ;Í–WUUÆ·Þzë ’$9 aöïßoÖë5!!áâÅ‹ÉÉÉ;wîÌÍÍuV`4AÜ4ÁÓjµÌèuŒüüüÛ·o3oM&SAAÁ„ ð[³þñ^^^–½éBÑÑÑûöíã$N@#غu+ûíœ9s>ûì3//¯ž:ujïÞ½o¿ý¶³b ©á&Í—xg;º³=wm-ŸúÇ»ãh'‚Sy<MÓ)))ÌÛ)S¦¬\¹÷ÁÁÍì÷íÛi€FÃAš_vdÙ‚ æÏŸoö4îÂ… K–,a/iÕªÕýû÷gÍšÕ¿ûë¸ …BQSSƒ_÷íÛwÆ 8Ç#„ðà)))555М€ÆáÀgó`^óùü¹sç.Z´H üõ×_Ž«à\Ì£w‚ 6oÞìååÅ|„¿2 §NrNp4=ŽJójµ:##ƒyûÎ;ïôíÛW.—wîÜ9333//ÏAõœ‹éG3jÔ¨6mÚ°?*++Ã/›³gÏNš4ÉAUœH"‘ „ø|~rr²ÙGœæÕjõüùó™F ©ÿþ¯¼òг£õæ¨4ÏüŒÇÏœÝ#„p»›¼¼¼ÊÊÊ€€ÕpœæcbbðÐXlW®\Á/؃àz†´´´ï¿ÿÞóö‹íðáÃæÝ‘£Ò¼R©DI$’°—3íqnß¾my²pw8Í[Î]\\|èÐ!ü:((¨±Ãr<¡PèÙiÞN%%%/¾ø¢gßðÀD"ÑöíÛcbbœÈ#ŽJó!Ô½{wö¥ýôÓ)))Ë—/w£z›2;æ'N´Ìܵ¢i!tèÐ!³ zö™ý¦M›¶mÛÆm„Î…'ã° ´hš¦iÚÕŠ¢(Š¢(Ë›4¶ÓjµjµÚþH\ŸF£yë­·Þÿ}[VÖjµ4M‹Åb<¼„^¯7Ê}„ kÖ¬±'G¥y‘H„j;g/..Æ/t:ƒªveçkÀ¶A¬X±¢aúUoSæaÇ|ñâŶÏ=f̃ÁÀžŸb÷îÝÌîøúúîܹӯ“wqéÒ¥7ß|sæÌ™qqqvuöìÙíÛ·ÿ÷¿ÿµ¿õÒÞ½{:ôõ×_ÛYBhúôé!Ë9Gl÷Ë/¿¬^½ÚþH\MÓÆ ›1c†-+1¢¤¤äÏ?ÿÄíÓgÏžmÖíîÝ»vÆãØ4l¶œijkÙ<à²âââlOó½{÷þùçŸ[·n-•JB›7of>}ã7úôéã(?r}ä) IDAT~öÙgŸ~úi;‹ÂOv'OžÜ¬Y3;‹ÊÏÏ?|øð´iÓì,=Nó¶,á˜b±ßëå~àëëËIQœ”CQ”F£‰‰‰±ñXáöj:thÙ²%zÛ.4ÍA!öèÙ³'BhÞ¼yM¤Þ¦¬)ó=z „<8räÈÝ»wûí·ÌG#FŒ°çù.pwáááø²•C\ÈI9.ØþàQš'êŸEy”3÷ï?‚Z¾|¹åõ‡•Çoû÷ï¯oöãä\Á~ 8Ún½mSæ¸cnö‹³œ;ʉzöì)•J<˜••5eÊf¹··÷_|áÄÀh‚þ¾šÿbMQ›¶%Í¢!ïqkYš¦F‹ ɼ\‰¢:Ìh|t§}ñbâÌ™GÆÅu=sæø˜1cØ#'äåå8p`äÈ‘¸YBˆ$É;và~¥B¡ðÕW_­WûÏQ£FÚµ£!„öísø¹EëÖ­Û¶mke‚ è†ÞUpÇmm´|ùò 4lÛùóç/_¾ÜÑ6€ƒŽù°aÃ:4þ|©TÚàƒæPB¡pèС;wî:t(»Ÿô’%Kð[@£ù;Í‹DU‘DëV-APIÓEÑEjµZ™Tã狀s§ ¢<Òd²é™:þ¢ªªŠIówîÜaÆŽˆŽŽnpÅ‹c€=FŒ±sçNö5={ö|÷ÝwMÓßiž¢<>B§Ó˜HIšL$I‘¤Z­–úÉ:d¶^W TÆP”—•1±XìççWZZŠßšL&fœK„Pûöí9ßN”––îÙ³_EM:ÕÙá4!M¹ÁšGbOP‰’J¥Û¶mã°‰5ÀF¬4ORISi"M$I’$E‘¤‰$uz]MM¾¯ÄO*¥BB«4Zƒ>Ì–¢CCC™Q“®]»Æ ŒÄ\⻚¦OŸ>-ŒF£³ciršrƒ5ϳqãÆÏ?ÿœyKÄ/¿üÒ·ë)ŠÊÈÈÈÊÊ*//‰D:tèÖ­'ƒÃà¾Xiž"IЦiŠÄ(’¤(Š&Z­.*©ñ÷“Êd ÌÆ4ž••¥V«išNOOg–ãV¸.èÆååå=zô¸xñ¢³cÀµ0sI7MÓÏ<ó ‡Á¸,{Ž’™æÍ›sU‡ígí/ŠÃCÄàj9|8»OQ‡Nž<éО[¶l™7ožÉdŠŠŠÚ²e 3,‰Á`سgÏG}4eÊGß(JMM=z´Gɺ;v̘1####**Ê΢–,Y²víÚòòr;ËAá!ù˜ñ€ÃCÄaTì¢8)çÖ­[}úôÙºuë¨Q£lY¿cÇŽW®\ÁcàOš4éÀ쬷鶅ùÕ<¢M#DÓ5Êš’’¡Ð‹4Q½>$4ÄßÏ_$‘$icš÷óó“J¥iiiÌožÇã¹ìèWçÎ3  €Ç‡Xòóó“ËåÖש¨¨˜4i’Y¿á‡J$ûGòªË'Ÿ|²øq#Û;wöêÕ‹ýéÔ©S‡šœœœ˜˜Xß ¬zÁSlÛr”žÈÇÇ!$•Jí/ Ïf9 {Šâð™áª@NÊñ÷÷GI$KÕ˜nËñaíêô÷ö$IQ$…2ôeeåz½Þ××O&•¤Z¥áñøEQYwi梣£Ù¿ù®]»âÁ/]MAAÁýû÷›7oÎá2šŠ¢&OžÌžŸ&66vêÔ©jµú Óû–kGŽùä“OðëÈÈH܃Ò'Ÿ|’˜˜XXX8eÊ·€Fðwš§(Ф(„PEEeöÇUUUB¡@¯×‰Åb_‰ŸF£åñxäãulAQ{ºÀÀ@Ë ë\I’©©©<¯wïÞÎŽwµ|ùòƒ2oårùþýûLJb¦™çMÓï¼ó3ºÀSO=eöhàçŸ^¼xqEEB¨¦¦fïÞ½ŽÇz6O‘E¡V«)Šö£X,‰¼«««iŠâñxEQmö-#ãBh÷îÝ»wï¶^ÙÖ­[íØžNðÖŸ•˜ýpÜ8}î8’]㌂çúÖ—CGÁkpÉœKIIù裘·à·ß~‹‹‹kÖ¬™··÷¡C‡V¬XÁy¥ÇŽ»}û6ó¶uëÖf+˜ýEÚµk׋/¾Èy¸8óuAÈårUJäííççï+ñ•Jý««+Šªòòr’$)ŠæÿóOBBÒå˧ÍFÁ+((øë¯¿˜í>}úÄÇÇÛ(3 ž=ÃãXŽ‚§T*wíÚ%‰ÆÏ<Ù´ijh¿y¯Á\?Âúj"£àÕÔÔ¼ôÒKë>ßúõëqƒjooï¾}û>|¸¨¨¨¾ÓX<‘Ù‰¸åÐÚÁ?æìpÁoÀü¦=Ç Óét55Ê¢‚¬¬{b±X"ñÍʺWXO‘O~6¯ÓéŽ?ÎþQYžh»ˆÔÔT“ÉÔ³gO˜€†ùôÓO ™·ãÇÿ÷¿ÿͼ4hBèðáÜ×{þüyö[Ë4ÿæ›o²ßN˜0óp}ì&x$ER<‚'ö·ˆiÓ¢…···PèUQQQXX$ +«ª¢zÂãùÓ§O3ƒáà¶ŽÛ‡{øða^^^DD„Ëž…àârrrÖ®]Ë¼ŽŽÞ°aûqNóŽx<ŸÍ~kÙGfРA{÷î2dHRRÒ¦M›pCšÖM-šo4i‰DÞÞ"o??"Ñ4**.¼yóFaaAxxDË-5jÊ WZ)1++‹Èš ˆ¡C‡ž8q"//óÉíwöìY‚ ’““®®¦¦¦ªªÊrùÊ•+™Q# ‚X¿~=Bˆ½fDD„ŸŸßÿýßÿ­^½:$$¤Y³f;väddºêêê'FاO¦¯ÙúÜÂ3ôÔu”¬ iúþýû·oß~øðaHHHRR¾FR(ö¥ÓéÐ?ÿ9ìdOQ >D Ë´?*6NÊQ*•!µZmciøióÏm9«ý›þNó/ìáÃ{GÈcøœøÑ uÑUPXPUUÕ²E•O¸¿¿oeEµjµÚÔÔTæm÷îÝÃÃÃ###ÙÝl\‡J¥BíÚµ«ÖOñzƒÛ€ÐèÑ£Ÿ¸MÓV†™;w.§™[¸páÂ… ZÅÙr”l”ÀUQx )ŠÃCÄàj9í`gY¡3gÎèõzü:** ÷ ‹ŠŠºsçNee%‡ИNœ8§b;xðàðáÃñk™Lvÿþ}æ7¾gÏžW^y_ÙÔJ&“­[·nÒ¤I ),,Œ™5!ôå—_Μ9³Á¥Ù)%%¥ÿþµ¥Z¼òÊ+ÇŽ«k…œœœfÍšÙ_A”ͽ ­Àbì¹²¬ï!b<ñXqÒ¸’«f¼×¯_OHHؽ{÷ /¼`ËúÍš5ËËË»ÿ>¾áý¯ýëÏ?ÿd¯Ð¡ƒ½©ùQš?}š®ûÚª¸¸øþýûøµ··73vqTTAùùù®–æëºL·§¥=MÇ‘#G˜×³fÍb~àûöí{á…¬g—êêêÉ“'çççÏŸ?¿aµÇÄİÓ\à°(ä’Ý8ÜÁÆlöèj¸¹#“Éð‹víÚ1CNÞ½{÷ôéÓuêtºC‡™cåt¥¥¥›7oÞ´iÓi¾ñi4š¡C‡®ZµªÖ–ÃÖOíÙÖõyöÞ¹£¨¨(ü‚icϼ0Ë©íÛ·÷òòºrå {áªU«˜¿ÑLk¾úZ´hÑúõëñ€‰'²ëõú¥K—6ì³Ï>³³×¾ÝØ9u±2_ÿþýÏœ9cûHbåšÝ¸ÚAÛ*ÚX”K=¤çæjÞßß¿hÓ¦ ~¡Ñhž8É4EQÇŽ;v,³¹sÑ4}úôi@`9Qc7n܉'êúÔz;#{¶u}ž½w.îîÝ»~~~f [´h_\¼x'lš¦}||4ÍÍ›7ÍîÕµjÕ*##ãÂ… ì›ó]ºtÁCÓ_¹råòåË ‹­G¿ýöÛÖ­[>ܽ{÷–-[†……ÆÛ·o·iÓfÛ¶mÍš5kpáØŽ;žØ¬]»vLb+FŽyãÆ={ö°/Ú·o?yòä––––––Ú‡EÙ²ƒ;v4;Q«Üî²Ö/R]¸ÚAÿùlÙ;‹*((°qˆwƒÁ€ºqãÏr¬Fûó7i?e—ËåxÉõë×qô<¯cÇŽqqq>>>Û¶mKLL”ËåéééøŸÇd2:ujäÈ‘œ„a§7n”——÷èÑãâŋΊ᧟~ú믿¬¬Ð©S'Glëú<{ï\ßâÅ‹-ç†1™LøÅ„ ˜ÉŸpoš+V0mñ°²²2£Ñ8fÌ///f!Óˆï÷ß?~ü¸A†„„H¥R•Ju÷î]<ÙfUUÕœ9sì,!Äž›§.ùùù¶›©ÓéH’ …^^^:îÛo¿ýöÛo'Eq¾ƒ–ð‰x­_$ëìßA÷Žó…o¿ý6þ±‡‚À˜Á㌛4OäÙMâÈ‚6lXtt4^PSSÓµkט˜˜sçÎáæ¥¥¥¶tu(µZ}éÒ%ÿ„„Ó¼ec1ëë[o%ÔªU«Áƒ;b[¶úÆÜ8¸Ú;DZ縹æ1gûùçŸk¼¬[·nW®\ùàƒ˜éà222:wî¬ÓévîÜÙ­[7fͯ¾úêwÞY¹r%{Ò÷ï¾ûî?ÿùBhÍš5/¿ü²c÷ÁR©ÔzŸû¸¸¸ŒŒ ®:ì5¾FØA< ^]_$‡âpï8?Px¼”””ºFÁcî‘77Ïæqw ¦ÅÁ`Àí&:vìÈäx„PhhhYYBˆ ˆÞ½{3]Ÿx¤œ;wÎ`0ôîÝ»Á=ûÍÆ÷ß¿}ûö_}õUff¦V«-..f‹ÕµUFFF] …ÂüÑJxölkOÌÃþ½s{Ž›+s[Ì›7!´uëVæ¹fBBÂÒ¥KM&ÓèÑ£o߾ͬ‰ÇÒ0ëöÆì£•1½]õÖõmìæ‚<{9Ü;wP*•Nš$ÉÔÔT×€þÍeP€zš?þ²eËž¸Úš5_¼÷Þ¬z•üùçŸÏ™3ÇúÄbŸ}öÙÂ… ãããSRRØÝåu:H$b†¬iݺµR©ÄÍoišžË `Ëðp^^^Ý»wo´ÆYr5557oÞdZÌ&%%éõú;wîìÞ½{øðá¸9žD"a_ôãÛÎú©Ÿ={– ÎG%|ýõ×W¬Xa¶0..îçŸfw#v)î³+°ç¸¹×1OIIÁ¿Ö'Z´hQjjjjjjzz:{{F»víÆŽþüy<ðû÷ïb×蘘˜4N<îB£Ñ „8ŠjëF[ëÅ@½p–æ ‚èÖ­ÛÅ‹CCCñL6Aôë×/444-- ?CI$vûáÌÌL‚ Ú·oÏUõ¢R©B¸²%fXûú>¤_ºtiTTÔ¦M›îß¿/‘Hºté2a„—_~Ù)w,läŽ1»{Ž›»ó¾}ûöèÑãĉO¾š-444 @«Õêt:“Éäåå%‰4Íõë×M&ÓÙ³g™øÀ3°g¨ MÓõ ÎãµlÙ2&&æ?þÀ-Tø|¾ÙY>ÓÒ¥Á¸üƒÒµk×ÂÂÂŒ1‚imÛ¶m[vïy‘HČЛŸŸÿàÁƒöíÛËårÃp:÷öÛo¿ýöÛΤ?f×÷Íö7wùžtïÞýÂ… œ•––Ö£G‰'.v·I#Á™uŸ¶äîº/.Óh9qd£©ë2Ýž–öà‰`2Ù&K"‘ .nBÄí¬¸€C÷c‰D#FŒˆˆˆ8}úôo¿ýöðáC³qoÉdJKKÛ³g¿¿ÿðáÃ]í%p(÷ ÔJ©T®Zµjܸq¯¼òÊo¿ýVë:>>>èñÃHàaÜqx¸&‚û+ ‡~÷îÝóçÏ>|X „„„H$>Ÿ¯ÓéT*EQéééíÛ·OJJjHŽ_¼!t98xglìŠ:ïݓɾêÔií©S|wë‡íñ<`Ü7`éÊ•+£FbZmÛ¶mÆŒ_}õ•Ùjø‡ )°?þ¸¸¸ø»ï¾cO›˜˜8wîÜ1cƸËÐéÑ(xM@NN‹øúë×ùå.ƒÔ“ãFÁ{"µZݱcLJš-·ï,##£S§Nï¾ûîš5k¸¸(Ð=º˜ŽŠBQQ ,"9ùûÿýï{WÎÉÉ™9s¦Ù`~6a}WöÅÄnÖlÝ©Søíœ>}V§¦š­ž´,1qëÑ£ÞìñyàâÞ©\a¬=À¹Ó§O[æx„О={ÌÒü½{÷BÖä°¹×ðpM„n¤4ð䎦ñ4Eý5th¿3˜%()éï×ÿK()ñ :±wï?–§ò¤qߣ®ÞÒ–3Oâ>Wf`ª±Ó¤¹sçNAAA]íóñ\y!׳gÏ£GÚSà–ËN& ìXëò.]º˜-Á÷rÜ´ó$nÊ iÞÎ+¶ôôt‰DbÙí*33sݺuS¦La–ÄÆÆfeeAï×ᲓÉ{ôìÙÓraDD„Ùô²çÏŸ?yòdRRRTƒêã–ö999ß}÷Ý­[·ärù«¯¾jy}¦Õjíœ$æÆ-[¶dßù¯¨¨˜>}z^^nÏÏ,oÕªEQ·nÝ‚Q”]„»Œûê%66¶{÷îiii<ÿ0û÷ï¿qãFö3xš¦ßÿ}„Ðüùó(M—^ Þÿ}Ü)¶¤¤dÕªUaaafÍ1´Z­“Ñ·iÓ†½D¥R¾óÎ;O=õÔ‡~È,ÇeŠ‹‹í©pÈ]Æ}ól·oßæ¼L<4›Á`0«ˆ=ÚêÂåMûü‘=ðEQ¿üò‹Ù:J¥‘Ñ` …Â××—½¤yóæ«W¯4hÙKxµêêj{ªÜ—iÞ²5î?ÃVTT„çá± mæpyÓÞÄz<Û;wÌn¹×—L&³±U®]&“ÙSÀTUUçæç«Õj¸ãòjÞrÔ ³ó555·oßf&¤o˜°°°ªª*[ÖÄ·ëí¿yp •UU·îÜQ©Tã`p™æÍ¦¤ãñx/½ô{É¡C‡¼½½;vìhO-:txðàÙÏØ`0;vìý÷ßgÆuÿþ}‚ âããí©à.òòó.‡Ë4?`À„T* …Í›7ÿ裘O ÅîÝ» äååeO-:uÒh4ù¬ßsIIÉË/¿¼víZ¥RÉnw÷îÝÖ­[ã¹/O«Õ9;\—Ïæ;wîÜ¥K—¬¬¬Õ«W›Í9¨×ë—/_Ž;v¬µ´mÛ622òܹsÑÑÑx EQ‰‰‰Ã† ëСÜ9sðBš¦/^¼8~üx;«¸ ±XlÙ€&ŽãQðfÏž-‘HfÏžýÃ?ûºœàñø|¾Á``¯æëçÌçóÕÕ555R©?³'ÀËË+<<œÏçWUUÑŠKL‹1-ZÔ•ã­„PYi©ÑhŒŠŽÖj4¡j…µF#•JAR‰/8쉢¨Z£L&£) !TZRB‘$r^3“¿¿@` ~ÍÎñÌ=|÷Wó€M#„j”J„PQQ³\§Õ²WÃ×ÙÞÞÞjµ·n«k¦@Tt4ÇS«Õåå <"B§Ó••–âÍ MÓR©o+•ÉT*•R© f×[×wš¦ÙoñÔAAE……Æõ“®+N€¿TŠ’Éå4E :Ù·<28lŠ¢ª*+¥2YDd$B(22–à`D"‘(??_­RI¥R{"|âa G4m´£A"îÅßߟ}ïããã¦9AšvÂ-×ð¥!I’Ȇ&*ìOŸ¸ ¾öóó«(/'‚ÏçK$’2¦vƒ!Ä|¹ŒW¶lL' u:Ð4M’¤åí}ô8ÙãÀžç£x<ô8UÛìðà²ÒR…B¡R©ƒ‚þ11A „B!ŸÏÇûkO„O<ŒA ‚pÙ™9àœR©dràWTWS%—ËíŒÐÏßߖÀ=jmÇI—N;ÛÜ™¡(ŠÉñøy<“õ++*|}}Ý®ÿ•W^ŽnÖÌÙa7PTXˆÛ¬©5Eu5¾Ž ôœø|¾Xl0Õ*~ÆìçëëååUUU…¯2F£D"Á-Ëhš¦iZ"‘XßÄ`0H|}™MF£Áwàišöõõõ‹5jµR©¬©©A1ÍÔÍà w…RY]U¥Óéüüü™6e5J%EQZ­V¥Rñx¼à|«|œðêÚ5¡P(ôò2èõ555:N ˆ}|ð-nƒ^¯×ëFã£%!„L&SiI‰Éd¢(J¯× †ºŽŒX,Öét …B©T …ÂÀ  Ülž U©PFy@€ŸŸŸ•ƒoK„~~~bËÃXUYÉü+x‰D8¦ººÚr¡CnÔZ¦%3ÝM™6w"‘ˆÇçãß‚T&³rÖž——×¢EˆÕë8ÄñcG{'';; \ I’|>?/7W(†…‡;;œ¿á&x0¬ ŽÓàQðΞ9ÓÀ@‡ÆÖpÓs555U••$I2ýjMD­¹ÜíîÕ3Ü5nÇ[$âñxÕÕÕAAA‰ÄÙáü­¢¢7”ÃwþÀ ÀÕ<æ„^^QÑÑÎŽ¢pwPp5x,Hó€Ç‚4x,Hó€Ç‚4x,Hó€Ç „jjTyyee–uÀ ‘H劽pNóyy­¦k§Îbo±³ã܉V«Ë̺›—Ÿçì@jÇC•–•¶m9¨/±Ø;¶e+…Ráì@jÇC™H“·w-“zà‰x|×mèæº‘ÀN<„A4M;;p ®æ»ˆ@„³ƒ¨\Ív"ÂEóü£4ïì0wE¹êÅ2!¾×€ƒ•–•í;ø—N§snj:óÞ]i²åS§Äl=B€ËÞ‡«yœO­ÖÜͺGšÈ|Ú8\!@<ºšwÙÓÀŹòÕ²¹v|4ŽÒ²² —.î?ðjFzUuµOB|‡y€²Fy;óNUu5BH.“uh/‘HðÊO÷é›qózµB!öÇµŽŠŒdJËÉ͹ÿð¡V§õõõmÊ|”›óàá­Nç+‘Ķjºpé"Bèðñ£¡QÏŒ0‹­ÖO5ZÍ•kW«ª«%>’ŽññO¬ÚúžâO³ÜÏÎÍÑëõŸØÖ±‘áVbxb]4Ü´À\N¿”С£Édº|õªÉd:wñ‚ÉDvŒïÐ1¾ƒN§¿tõ2³òùKeRY—„N~~~W3ÒË+*ðò윜·nF„‡wéÔÙßÏïÒ•Ë¥e¥ÌG×oÞ íÚ©‹T*»œ~oÕ6® B¨kç.I‰=,£ªõÓ«×Òƒƒ‚;uH0‘¦+éWŸXµõ=Å d?¼y'<4¬KB'?ÿ+éWË*ÊëŠÁöºN$@Ÿ†8;\@HpHl«Ö!š¦Ó3®•WT †„¤~¾~!‰$'/‡¢(¼rXhh|»ö¡ˆðˆÔsgïÝ¿HÑtfÖÝ6qmZ·l…Š §(*óÞ½àš¦3³î¶hƒ·  «©©)(, ”úKBA"Q-ÃN×úi³èf8T„è«× ƒ@(¬«ê'î©Á`÷îgµŒiÁì”Þ ¿—u/80È2+»ÉÍ¿nÅ•[²3Wóç@¡³”ÈK„òñóùü·n–”–˜L&™TÚ©C÷hP©Èð¿ïÒGEFâûªšƒÁh"Mø¿à¥RAÓtªÆ`0D<¾ ŽêÕ#©}Ûvv†êå%BÑ4m¥ê'î)MÓ­Ö`0D„‡3ëD„GT+jŸ£^uàñ\ù¦¸¹öiÉËË‹ýVä%êÔónVÖ¥«Whš Šo×_Ù#„Ø×ÖÞ"I’F“É`4"„RÏ1+ÙD’ƒÑl+@ÀU¨!+U -*²Ü\¯×¡Ç' ˜ÈëÑNYn^¯ºh\õšà`L*ëÑ-‘$ÉʪªÌ{w/\Jôôün§Æ¼æóùBÀÛÛ!ÔµS±Ø›]ŸÏÇó@ f+µFm0å2'¡Z©Ú–ÍE"o„ÁÀÚ)ãâ¼.@£a»uv ¸…RyäÄ1“ÉÄç󃃂ZÆÄhµZ’|Ôw¼°¨Y3¿°Pêïò‹½„^F“1@€ÿS*k ‹Šxá#ö …ì­®]ÏxððWÑZ©ÚÆÍ…BaaQ³¤°¨?’ç¼.< A¸îmqæ<ò<æ$Ф®¤_ŽŠ6™Œ÷îß—ËäÌkn~ÁãÉ¥Ò¢¢ÊªJÜÇãŶn}óÖMN'•JJEÖýû :>ú¨UëÛ™wAÈäeåe••½z$!„*)-•H|˜®q ëŸ2¬Tm ׺e+ž\*+.).¯¨èÕ£g­1ØYž‡¦i×LôpÓ€: ø‚îݺݺsûjFº€Ï b·˜KìÒõÞý¬ìœlooïÎ B‚ƒñò–1-hšÎÎɾÿðÄÇ'!¾c³¨hüQ«-išÎÎÍÉÎÉö•øvëÒ5(0!$—ʯߺ!à †l†õOÙ¬Tm‹Ö-[Ñ4“—›ýPò(¼Àºb°³.@ã Ž;*yuŒ …Î÷ÀŒ0ƒQš8’$/]¹BPtÿ‹¹G]ƒàÙ<Ð0®|SFÁì岃F0Ѻh|h0h‚@½…[N0h²\9B¿yÀcñB.Û©öà9;8 !Äãñhšrv$€[Ò ^Bóé \„!$“ʲss[ÆÄXNZš Æìò¸ªFmÂÚ?h“âQöujØ÷៿[7¬û·å_E³à âK¬¿õl4Måä冄„æç;;–ZBáaá…E…×oÞ4™LÎŽÔ¹m8T»+7LuN9DœWêúº‘úÍŽbúŸn…ëâm Ø_™TáºiÞd2EEFÅ4iÊ¿€¹ì ‰€o pG$I gGQ»G3Ô —  -íiðXæiðXæiðXæ%@Q•WWVQ¦×ëàND"Qp`ptT´³©!”W' û?Õ_ 8;À˜L¦;÷îäåç9;Ú B¥e¥ú  i®æ€záñxmZ·9{ᬳ©!d"M<»ê‹$I‚çº3Âü}—fŒêËÅg} „‚ iÒ<Ð.œ?]ÍCš†  ‚ \3‰ÂÕ<`7W½si° MÓ.{ß^€"  pgÒÒæ.ø½$ ±k—éo¼ ·§ä‚‚ÂÃÇŽM;F,3ýö¿Ÿƒƒƒì)öòÕ«»~ûýæí;µZ&—uëÜeâ„q1Í›ãO­Ôbgf»Ská–Ë{%%­øìÓºÖß³ó×{÷³˜¨¬W€§rÙ<WóÀà–®‹>ü@&“"„(ŠÎËËûqûŽòŠekV®°§äü‚-Û~=b„··7b5©µç÷òý[·íø¹wÏžo¿9U*•—ÿuðÐëS§-\0ïé¾}­×Ò®M›5«VÈdÒ†`¶;fÌ#C&•ÕZ';*ëUày%PWM¡®æ)Š‚4Üþö&tèÀ\ãöHìæååµjÍZ­VËI¾ÁU0ÿoðïåÄÉSÛvü]º|玟ÌJ~ãõ)›¿ÿá“úùù2?“ÏV¬|vÔÈgGŽøö‡-Ÿ.[¾ëçí¡=ûö¯ß´ùÅñãâZ·N={î£OþûÙ'uïÎ.­´´,'7wúÔÿ˜L&˽:xðÎß~gjùdÉÒáÆŽ}þùc'N|¾öË™¬WÏ$&~š¦­Ô¸gßþuë7ŒóBB‡ø³ç.|ºl¹L*íÜ)Álw¬F†P(Ä^üº{÷?mþÙg;wJ8qòäºõB4¢ÙQYV±û÷?6ÿ°eܘâÛµ;•zæÓeËýýýºué‚·Z½æË¤î‰=áOŽ @!úÍ÷†¯C'¿þoöˆðð9モž‘X·ñš4ýèÒµwϞǣiš$ÉÏV¬¬V(¤þþìBb[µBuŒ—ËeEá­F·¢izÉòÕ …ÄÇgëöíÿ~íÕÇ¥iºßS}ŒFãÖí?÷HLd—V\R‚ŠŒˆ¨õçÖ,:Z¡Ph4\ËàA§O}—öÖ»ïmÿå—žI=˜øFc]5’$¹mûŽçÿõìô7þCÓôSÉɳ³?Þ)¡£ÙîØrB¸£Ñø¿_w9âÝoQÕï©>3fÍθ~ƒ9˜ø€˜Ua2™vüºsìóÏá`žîûTeUåO?ÿÒµsg¼Õ¨ß=Š¢(Ëxp®œ@ájxüå]úßÅ2© /É+È_¿éÛ5_­{º_?ÄNó4zü!„z$v3!?„I’f?’¢B$E’$ÉlÎlåçç‹·ÊÎÉQ(”:vP*kð†IÝW­YK’$Ç3‹–"k²Ž’$‰?øôÓ¸„п޸‰¢(&~+5>ÌΩV(ú÷ëËlþŪ&“‰¦i³ÝyâaÄ‚ƒƒhš.,*RÖÔ 8€™ÿbð€ÒüßGÕ¼ŠÂ¢"…Bñtß¿ƒЯß×71[uNH`>ÀM¹r}ÔÒº±LSu´z3k WÇV5*BhÚÌwÍâÒh4‰„yŒÊÉË ³Ü‰Ü¼<___‰D‚kñ÷÷c‚‘ËåƒA­V3ñX©±FUƒ’úû3›óyÔ¼Y³ÿ;|$©û?næãà=Ö³GwæÞuEeehÈ£Ò***Äb1sÆ`½Æ@yB¨ªªšÙ¼°¨H©¬iÛ&Îún2‘Ôz­G (/¯`EU‰X“],óoUYUõ÷V•U"‘ˆ½/ðǸ;š¦a<èщô?¿Æ|>!„³fuµçÅ iiÖüç&µ–`¹¼®·¡!!Rÿêêê§’{ã ÷îÿ+7??þ»4š~íåÉ‹—|öçþ¿FÎ^¾~Ó·EÅÅŸ|ô!ý8¶”“§Ûµiƒ?=|ìX‡öí˜ÆÖk õ÷ó;yút›¸XüÑç_~%—É?œ7·®Ý´r!ÁÁR©ô؉íÛµÅKާœ´<˜f…„†„øûù¥œ:Ý6îÑIƉ“'ÛÄŲ÷þøwçÊßa˜ºxúñswöרKä…’ɤ|>ÿëŸ=êæ­;÷<@ÿ|TÿøEíw³ñ“õsÓ"ÃÃ;vˆ¯k+7ù¥‰ë7[RZÛ*ëÁû›5s†åÏ*¹WÏ—_šøÍÆMÓÒú$÷–úKKËJ;ñ ;û£ó"#"˜Îô)§Oóø¼6±±'OŸ¾}'síê•ì°­ÔHĤ‰/nØü-Pû¶m¯\½zãæ­ÕË–â8Ù»SëaLϸŽ[*°%víÊãñ&Œ³é»ï ¯c|ü™sç Š -¦Y<oâøq›¾ÿ ˆ¶qqgÏ¿–qý‹•Ë-ÿ p_øûìš×óp5<» ³0"<!t/ëþû³Þû~ë¶Õk¾ìžØíýY³Þz÷=fEv²±,!Ô&6¶sBÂ×6úˆÅ¿nßfe«i2™öìÝ÷ûŸF„‡ÏzgÆ-;ΙL¦—_šØ©cÇ]¿ÿñý–­­Fê/íÚ¥óóæFFDàõi±ré’Ï×~µwÿ_a¡¡° m\» žõŸ=Š$É={÷í?p0*2rñÂ:vˆ'IÒlwj=Œ+¿Xcy„þùBhÌsÿÒétû8qüØQÈ«Mlhì ÜŸÏ÷ööÖh4ì„A„Á` iÚËË !D’¤Ñh‹Å†Çã±7©µ\ˆH$âóù4Mk4³ÕÌÞâþå<¢(£ÑXkçx&`¡PÈãñðI6Œy*‹Õjµ"‘Ȭ´«é×>\üÉO?|‡ŸAX©„Ëg>2ÛZc­«Õj¦X¡PˆÂ5âÝgÌZ«À[áf@L0usÜŽH$ʸ‘APtÿ‹¹G7í¡Ó*pk8yX.¯©yÔÙŒéÆ,Ä™õ‰% „ØéÐl5³·z½^¯×Û°Ù§–' $E"ÖÖJu}d™ÝmŒªÖbñúfÓ²ŠZƒ±¥:Ü‚+'P¸i€ÛÈÎÉ9žr’G¾ ü`p.ÿlúÍà~ÙõÛ­Û·§½ñ¡P?X\‡+ÿ¡ß<ncч ø|¾Á``?ƒ8Ü´‡4€ë³òXàD®œ@aêÀ.®~5 ë*ÐP®œ@!÷xö-× pAAMF/¡—É%ÍB2©¬¼²\.•[Θ @Ã4µSƦ¶¿žÍAÿšð%ñTA(UÊÂü|gÇR B(<,œ¦éâÒb+ƒv'"göÆtPíÎÝ)·à”CÄy¥®_ !ê5 š ëÖ¯Ààºx›vÆD&•E„G¸nš7™LQ‘Q1Ícšòï`pÁœ ¾À‘$é²Ý\5Áƒž¸€ç‡ñ€Ç‚4x,Hó€Ç‚4x,Hó€Ç‚4x,Hó€Ç „œ¸Wó€Ç‚4x,Hó€Ç‚4x,Hó€Ç‚4x,Hó€Ç‚4x,Hó€Ç‚4x,Hó€Ç‚4x,Hó€Ç‚4x,Hó€Ç‚4x,Hó€Çª=ÍwêžTס3çÎuêžTRZÚ¸¡rÏcvÄ¡róò7lþV£ÑÚ_”#8.³¼¢‚Ã2Àcj]ºþ«µøÅ­Ûw¾Þ°qù’Oýýý1ªFß®Ýú¯ÖÊe2gâÒòòó6~ûÝØž÷ñ;;õS{šOîÕ‹ý¶{b· ÀÀF‰§QÉd2³=}Zî³Õ9~òTXx„ó€AÖt×÷ñóøø1¯¾òIÄrB®b•Xê´š IDAT¯¿­Í:¿¿kjkVùùó6ß½'êÔéƆ-YàUXT¼`‰w³h2ì$H”.œ?6·r~²—ùŽá»ï艨Ýûö;õï°n¼¼\è¶í‚<Å`0 $%&°s÷þ}SKëOee¼…ûF»W®]7µ´¦Ñh ŽÎƒ>BÔ\±Ú×cš'—ÌÆÆÆ~.®›B·%Ó<»›ZZ(-åÒ‹6Nž>ƒÊŸ¥¥™ZZ¿ÉÍE»/_½ZÄ`0 †£ó ­Û™3çÍ÷œ=—EHàuäCi© ±œ•›TAäòÕk( \ê‚6‡F:Mì&&'›ZZ——Wü¤!ÃN"D)›g ü|/óŽữ¾¾Þa ó†À`´Ëb±¦ÍšÍ;D1 æ÷CžOÿâ_Í;ØõEíÚ©@#“™›—G§Ó­,-kkëП½mVv6‹Åâlø&/F£¹ r!JöEìZ¾d1‰.k+´¡­¥-++»iËÖÛwîÔÔÔ®óó¥R©Å%%t:Ý•C¦›‹Ë«¬,^ |$–³N“*ˆ€¨ª¶CáÒâë³Òcâ6›]VV–ò4õÚ›Àbÿ1´‡($–ÊóJhR)'?ß˼#Gøî+*.©¬ªæ>íR(w77¾vb0 -Áežê••U0ÅsWymm­‚‚Â÷jôJPåXÓ'//O¾’_^^m´k§rpOäÞ‡V¬ömll´±¶Zé½T¯kײ²rh§¢B4QUU­«««®®æ’ÀAb9ë4©‚7 \¤¤¦8|äyzº’’Ry99Þ:bh!»m¿þD šuç•@¢”³ã„Q÷½šà^É¢-Ú¨ U€šÚw±jjj€Á`0ˆŸæyiß^6lÔèØ‘³¼M›6œ»êêj@£Ñµ45QIAaÑ‹—œuètº -ÆFF;ÿÙZ__Ÿšö|÷Þ} –xß¼z}îWÐh„ÌòŠ Þ,%’XÎ ?©¢¼¢ÂkÑ÷!ƒC‚•àÞƒ IÉ\ÕÄÐBö#û÷%µuµ|%ˆ¤´{Y ÔÕÔ ¬¬ü{Mü‹y ƒLs>¯s§NÊJJŸ«?÷îe†þ²srbã㥤~ø2¡Ù¹³’¢b\BQ²> ðÄ©Ó@£ÑP‰ dYÙÙ.C†ÖÔÔÈÈÈØÚXOž4áý‡uuu;uRRTŒåX~3.ÎØÈPHˉåòîgT¼}÷®žÁ˜ê1 åxxšúŒ·šZÈÃNöîeF"Ax¥?ÓËÇNDý¤44”••¯ÅÄ%1±q‚üÂ`0Ls^ÍS©ÔÙ3g„nÛ^ZúÑØÈ0+ûõÁ#G×úþÍ[m–çôí»ÂBéejúàáÃÔ´´k׬ Úºuò¤‰iÏŸg¿~ÍW…¶–6ƒÁðñ_3rذꚚƒ‡›™˜ÈÊʀ紿ÂÂ#$$%M{'&ßJyšº?2BHËIÄršý3*ôtueeeƒBB'ŒÃd²îÞ¿–?MMuuù~OZ -B†\‰RIIIø÷Î]mm-KsóŸéå¿&{å—é…÷šJ¥N›29,Œ·ÚÔÉLæÙóçÏž‹ÖÑÑ äì‘{÷ù¯ß`gk»~ÿ_3fñ6”““ݱu˶°0ÿõdeÛØXY-û¶voúÔ)ç/^:u欎¶vhp•¥…f“ˆåägT(++‡mÛ¶+ÂýFeåáCÝÏž<1eúŒ¤[·9Ó¼xZ„ ; $JMŒ-Í̓C·ÈËÉÝNˆ^o/ËËËñMó"y=}ê”/_¾œ¿tùâå+ÖÖV!Ažsæ¢C™™^‹—Æ]¿Ú¡}{‘ÜÇ`0˜Ö %)1aÀ@§?mƒÁ`0ÿm’“[`>Åo¨Ã`0 ¦Õ‚Ó<ƒÁ`0­œæ1 ƒiµà4Á`0L«§y ƒÁ`Z-8Íc0 ÓjÁiƒÁ`0˜V Nó ƒÁ´Z$§MûKW÷‡W±:söøÉS¥?ššôD%EÅÅ›C’’ìú.ß¹ûüÅËL&“Éb…nÛþ&7×ÊâëcËêêꊊ‹¿|ùÒöÛ«G²sr¸êj^E?)PH~µ $?/?ßÒÜœ÷èŸòºEÑBüi¨ÿqÛăÉdÞ¾s÷üÅ‹7bc_¼Ì Ó+»èèHHüp…Àf³ëëë¹Þk€Áü¿ñ6?Ÿ+Ÿ¶ø\Í744ÄÆÇ_¸ôýýlž<‰¿Ÿþâ%*a³Ù§Îœ§R¥ÊÊÊbãã>~BÔOMK9n‚ÿº D oa5 ¯¢Ÿ($¿Z’ÿøI ߣÊëE ñW¤¡þ›á;ND%çMî¨ñ—®Xyüä©«×o:zÌÇÏðð‘ÏÒžsVsì~ãfìÏÙ‹Á`~ |¾}[ZXÀ·7ªÉHKqJ§¦¥Y[Y@QqqMm-…B±èÝ"wîPl«(žƆ†?Óóÿ 6¿ššš…K½?”–v×ï6nôhuuõ¢ââ³Ñç —®XyåB4ñºÅ2ü:` ¦¥Â'Í÷0è®  P]]ýæÍc##H{žŽ¥>KCÙ¯s@·Keeå윜ËW¯ëvÑ1éiŒŽ:r róóWùú÷25ñ˜8~çî½äÛÿÊ´‘quqîej ¥Ÿ>q6ÏÎÉ9xøh/Sí¤ä[222ƒ]] É\(â« Q[[wñÊåììE%EWggAÂ5µµ/_yý:GEEÙÁÞŽk]ŠÊªª —.çåç+(( ì×x òN·‹Ž±‘aBb²³ÓG{{t¨¼¢âü…‹ï ÛÈÈp½»ý÷{Í×qÂøùsf¾èuÕ;k&‰_Ÿ¤Ü{ð€N§wîÔiäˆáíÕÕ&J\Æ\/䪅~ âPGßM#È rÛ„7 |ÏÞ¥¥½LM÷ïŽ ^ú7bèÐQã'”•—_»qcòĉ‚Úb0˜Ÿ4/!!Ñ»—Ù»÷2³_••—u×ïVXTœþò%“É”””ÌÎÉK sø6KÙËÌ }ú@Jj*Ðh´Øøx >_Ò_¼Xè½ mŸ:svOøÎ>ÖÖ\ÍÑî­ÿ­¯¯ÿZóì¹½á»Ð,‚ Òeååž³ço/=ur‘×üYžÓùFçÓ§2Ï9s ‹ŠÐî‘ã'fyN_ä5Ÿ\EaQ‘çœyŸ>}B‡Nž>3wÖL¯¹sï¨TjCCèéuE ¬ °pÚ¬Ù4¾füf¯9nÞ»oOYš›Ï5S_ëƒ.^¾Bˆ=tìøÙ¨ãÚZZâE‰®aC¢ˆ—&U 9ü@Ä¡.jGCâ‰mÂÐØØxùê5Xµbç‹}ÛFîÜQúñcǹš°X¬'OŸÞˆ¹i××v³3_§0Ìo†ÿJ{tÍš• ß.åííì,Í{×ÕÕefe@vök°4ïÍ·ùÂùó@¿›^äÎ3=§å,˶͖MÁ½LMÙl6çç2õõõ¨¦™‰ ‹Å:é’HŠHt…lÝVPXhÞ»WHPàÜY3¥¤¤ÂwïÉÌÊæ+?d۶¢¢›6.œ?OBBâÐÑcJKÉU‡nùôé“aƒMgyN—Øwð &¢¡¡Á¼w¯õþ~û÷C%›B**h]uuƒ7®Ÿ1í/ …"(2¿Áë&—_yùù/_‘‘–^µÜ{û–^¦¦uuu'OŸ;J‚ WÄK“ª…~ úPµ#HŒiÒ ¾¶ oÀÛwïjjj”•”Œ QIäÞ} ½—-ô^¶k÷ž³ç/ÄÄÅqÖ¿|õš‹û°9^ /]½V]]Câƒùð_keñ=Í?KK€>ÖVjªíîÜ»Ÿú,­§±qöë×`Áo8ö%E%;[[Îò6mÚlݬ   %%•¶rÉý<Κނk R$H×çÏŸ’’ÛFìØ!'' ãð±ã1±±†= ¸$|þü91ù–„„ÄŽ­¡;@úË—ÿÞ¹›ú,MIIQ öàá#IIɰm[Ñ[ÏËÊË/]¹×Ãà« yyù=á»d¾]!•WTüCi©Ž¶¶šªªHʺèè(((€ŒŒ4»jŠ$!7/Åb±XìU~~¨Zii)óJÈÍÏg±Xº]º T›êêêäåŸ>{&HEþÛwl6[G[ }ø€µ¥Å¥+WóÞ¾ýn›¶6gözûîhki¡}ûؤù_ê5‰ãÏÓÓÉ­âò«G÷î;¾ÿðÁÅ}˜‘¡¡mŸ93gtÒб¢D‰"^„R݆¹(a¼àE$¤e¤€óº|ÅÒ%U3fÀ㔔Ƚû¸ê÷sp˜;k†±‘‘™• ‰  æ7Ã?ÍKHHôîÕëîýû™ÙÙYÙÙ–ææ2ÒÒ]u»tìÐáYÚst•Ï÷'Ýä¯,¯¦Hê ¨®®¾s÷gymm-ŸÊõõ +û]޼œœ¼œ¹ŠÆÆF‘‘!Jdee Á J¨?f/f#“KšØîÿ¼× Øq.á,&‹«!—_mÚ´9~èàÞƒ’’_fd¼ÌÈ8uroÄ.31¢D‰"Þʨn Ã\”0^ü¤]´µ °¨¨¬¬LMM ôº~ýA0úšËEG´bƒÁ´(>μ÷Ýû÷Ï¿Àd2ûX[¡Â>6Ö—®\½ üoÌ·dÐêkŽ7lD%ï ž>{fƱš«rQqqcc#zîGXxÄ…K—çÍž¥­Ím´o¯…EÅ -\z“›íÕÛ jÒ±c(,,üòå úLGMš ‘¼ÁŽ]’Íþzm[TLv …EE§Îœµ¶´ðóYõúÍ›ýÅ'&E:cfb"F”ÄSÄÇ»fU-¢v™(±¼Éeeå^¦¦iéé‡_¹Ì›(¯g0¢/^Õ` ó§ø°[ô /ôÈ ›oi¾o¢°É«y›ûjï!¼¢.::44Þøð*+³§±‘––æésç®\»® //¨rUÕçȽûòòßž»p‘^Y©¯ßD…޶v' êêêˆ={^ç¼9uö,Øö8“©¥©Ù¹S§šÚÚí;wÕ3¯sÞœ:{®I_~‘× ØqSÈû¶¬¼üã§O'ÏœmRuÔé3á»÷VWWwïÖ­‹Ž Å…bDIŒøQ– 4;w65éù® ÀÑyµ½ãþC‡)ÊÐÁƒA¬(‰§ˆ¯wͨZ¤¾µ#ÈE5é¯m¢`ÛÇf‘×|‹¹wŸ£“‹C?·á#þ½sW·KÞÊ IÉc&zL˜ò—¨¾`0˜_ŠÀ4/))ÙËÌ ¬,,‰çW++)yª3éÙsäða²²²•••mÛ¶mVƒV‘‹ÓÀBC {HJJª©©1³¼°¨pÏþµuµ$%-±mkÉNa0 # di>.>ABBbÙ’ÅEÅÅ/32~›M ƒÁ`š²4gß×v˜ûYYÙ›ô^‹—€“Û3+A%õ FXx„ûÈÑÖvý\\.õÎÎÉ!$œ‰Ž:jŒµÃØI±ññ¨°¤äýŒ9ó¬íFO˜”’šJT>wþ°Ñc¬íÆOžzëß;D9›ÍÞ³ÿ€Ó`wk{G¯ÅK?”–òõ‚×68|ì¸Ûð–}íGŸx3.^ø†¢É…HŽó5ÍÉg¼z5}öižäqø70 óB`š/.)IñÒ}ð`G{û¸ø6›-œ?6DîÜ!¨$|÷ž¨S§G ´dWaQñ‚%ÞèÐésÑ›B·öwtØhlhèã·æIÊSð]»Î®¯íZ?ßÚºZ¿5DåÍ[·¹89nX¯ßMÏ{åª;÷î£CGODíÞ·ß©ÿ€ukäååB·mçë¯mÇOž p0 hÃ:ƒîú>~þ?¦¡Fr"’ãäFn 631Y¼`>yŒ #wîPQVæ ƒÁ´~’Øü8pøHßþ¿Ô׳Ù설$SKëÔgièÐÝû÷M-­?•••yK‚6‡F:Mì&&'›ZZ——W466ösqݺ…8ä1ÍÓi°»©¥õþC‡QÉ•k×M-­i4ZCCƒ£ó ƒ‡•W¬öõ˜æÉf³ëëë:o Få,kÚ¬Ù\6ðµÁ`8: Ùº¨0sÞ|ÏÙsy#ÀÕíŠd$'"9Nb$2ãäé3¨\ø8`0 æ—"(ŸþY^ÍÇÄÆö³·g62kkë,z÷–••%&™…Á×g¥ÇÄ l6»¬¬,åiêµ7€Åf½ÉË£Ñhnƒ\ˆšû"v-_²ìú¢’víT ‘ÉÌÍË£ÓéV––µµuèÏÞÎ6+;›Åb—TVU s‚šP(w77a +.)¡Ó鮸¹¸¼ÊÊÒ/‘Œäl(’ãMicm…6ÄŽƒÁ`þàÿêšÜ¼¼œ7¹9or¯ß¼IÆ'&­Z¾LBB¨ŸÚ§¤¦8|äyzº’’Ry99T^I¯UUU¢¦¼¼¼¢b[Pæ™[®¬¬€)ž3¸Êkkk+h ¦ö]Žššš0†•••@;¢DUUµ®®®ººZAA¡Éæ"É)P$ÇIŒ$Ú¢ ±ã€Á`0˜ÿø§ù˜Ø8™È;$%$QIZzúŽ]á)OS­­,›Z^Qáµh‰ûÁ!AJŠŠpïÁƒ„¤dPWW®¥©‰*½xÉûöê°)`£FÇŽœåmÚ´QWS€²²rBN¹p¿G±‚FûÞ°¢BFFF˜/ª‘œ»"9.¼‘bǃÁ`0ÿð¿4¿oß·¯¥¹yï^fèoÂØ±ÒÒÒBÎÛ¿}÷®žÁ˜ê1 åxxšú mhv¨—ð}Ýþú€Àc'¢øÊéÜ©“²’ÒçêÏ„Ù99±ññRRR44”••¯ÅÄ•cbㄱ­s§NJŠŠ±«ëoÆÅ ÓVT#9«‰ê¸FŠ ƒÁü?ÀçjþeFFaQÑ‚ys9 åädûØX'$ßòõY%)) ÿÞ¹«­­ein\%zºº²²²A!¡ÆŽa2YwïßGKÊŸ¦¦ºº¸Ìòœ¾}W8P(½LM<|˜š–ö×d£ü•J=sFè¶í¥¥ ³²_ š>uÊ—/_Î_º|ñòkk« @Ï9sy%pÙ†666ž¿xéÔ™³:ÚÚ¡ÁAV–Â4‰‘œˆä¸F’Ç!#3ÓkñÒ¸ëW;´oOb?ƒÁ`Z+”¤Ä„þ´ ƒÁü·INJlù¿¡ƒÁ`0˜V Nó ƒÁ´ZpšÇ`0 ¦Õ‚Ó<ƒÁ`0­œæ1 ƒiµà4Á`0L«§y ƒÁ`Z-8Íc0 ÓjÁiƒÁ`0˜V Nó ƒÁ´ZpšÇ`0 ¦Õ‚Ó<ƒÁ`0­œæ1 ƒiµà4Á`0L«§y ƒÁ`Z-R|K‡ÂPbÛWÁ*A…"Un±Z¬a­CB‹5¬uHh±†µd ÌÿüÓüu¸Nl+€I¡H•[¬„kXëÐb kZ¬a-Yóÿÿ4îÛê NR(Rå+¡ÅÖ:$´XÃZ‡„kXK–€Áüÿ@IJL0ÐéO›Á`0Ì›ä¤Ä˜Oñ< ƒÁ`Z-8Íc0 ÓjÁiƒÁ`0˜V Nó ƒÁ´ZpšÇ`0 ¦Õ‚Ó<ƒÁ`0­œæ1 ƒiµà4Á`0L«§y ƒÁ`Z-8Íc0 ÓjÁiƒÁ`0˜V ÿW×`þÈÎÉ9xø¨nú<|T¯«îÜY3`•¯¿ &½LM<&N 5ÎlÎm®C‚ÄF_¸øìùóµ~¾2ÒÒœå?~ôøÉ§²2YYY}}§ýUTT¸Ú_¼|¥ôãÇ>ÖÖC‡ &)€´çÏOž9·pþ\m--‘´ðåÆÍØ;÷îù¬X®¬¤Ä ®¨b0Ìo†š¿÷à×â¥Ä.•JÕÒÔ1lè”I¥¤¤ˆ qׯvhßþç((,º3mÊ99ÙæÎb±¶í»zý£¡áá¿·~ÞÈÿ((˜‰7o¨©ªò­PVVßËÌÌÔ¤gl|¼¥¹9JH±ññ$bù¦yBÔü9³9·¹ñ˜›—·yë¶CÝ9s|éÇ+Vÿþâ%gÍÂv®ð^:z䢄^Y9yš'½²Œ”Ñù".^¾rÿáÃàëEÒ"“žÆþë7HII¬[Ë ®¨b0Ìo†ìj>xãzeee¨­­Kyú4|÷žçé/¶o cCÃÈ;T”•›ÅˆÂ¢Â=ûŒ3¥ùfþ"#ãÄ©ÓófÏ2éiÜ,F¶V¨RT R¥ˆ T¹sÚx•™¾{~7=ïÅ‹P‰šš_Q¨ãÛ*ŠaÆ–¶3™ÌYžžDIUÕgÏÙs‹KJ:vè0aì]]ÝêêêäÛÿ&&'o –9|ª™ýú5½²²“†ÆªåË:uÒ )‹uëÎ]G;;ô…Ux-‚ÐÒÔt4èʵëÇ562B…‚¢ŠÁ`0¿²OK âzÚÅi ƒ½Ý¥ˮ߼éîæ¦¬¬lgkû‹ljáÕÕÕ0nÌhAW±DWÝ.е‹.ÚÐÕÕEå\] ¤¨ÄUBÌK&$&;; èСÃå«×u»èˆúÕ*7/ïÁ£Ç6VV‰ÂȽ{‹KJ ºw?¸'²mÛ¶¨p˜û³ÑçƒBBC¶mпŸ’¢"ì;pê¾|‰‰ëejb ¯/¨RÓÒètúÀýEÒ‚œíej¢££”|KFFf°«+áæˆaî×cb¢NŸ%fEƒÁ`~3",Á³ïÛ×ÁÞîÂÅËpïÁ3+›ÒÑFÆ«WÓgÏñ˜öõRìÜù ÃF±¶s?yê­ïp 9=tÔk;‡±“<ˆiatƒÀÉmˆ™• !ÜcšçøÉS‰†l6ÛeÈÐA›ÈåpÉD>vÜmø˾ö£ÆO¼÷U;_š´™\ZAaá̹ó­íFŸ’ššþâå„)YÙ9Œ;þÁÃGÂÔAÒꌰð÷‘£­íú¹¸.\ê“ÃÿYó½¬íÇLôH}–FjÏþNƒÝ­í½/ýPZJL´âôNMMMµ]»îúݾntëÆ7ž¼ yéƒGŽ.ò^~ùÚµü·ïPÉÃÇO„”@páÒepäB”0™Ì%žñ IDAT+×®À:¿¿‰ì‹?vŒµ•emm]Ll*IIMŸ–þ‚¤P’¶³í#’äÚŽð¯ÅK£/^Š:}毙³?IA•­,,ÔTUãjjjP‰ØQÅ`0˜æE´•ö}ûôy‘‘Áf³¹Ê7›™˜,^0NŸ‹Þ¼u›‹“Sà†õúÝô¼W®ºsï>ªvú\ô¦Ð­ý‚6úø­y’òΟ›ˆ‰bpq˜ýúõûÐî‹—?}râF"Ÿ^™ÇOž p0 hÃ:ƒîú>~þ?æë'‚l&—¶tÅ*Gûuþ¾u_¾,[é³ÜgõÐÁnëý}ëõ~ëÖ _'|÷ž¨S§G ´dWaQñ‚%Þ„–U¾þ¶66ëüþ®©­Yå÷uÅÜÑQ»÷íwêß?`Ýyy¹ÐmÛ‰ú‚î†$ÅÆŒ= mŒ1œ7˜$444˜÷îµÞßo`ÿ~"5ääÁ£Ç`aÞ›(ÉÍ˯©­m¯®NLƒsâ̵֭ٙ>ÔØE뚬£¬¤Tÿ¥~颅Äz7ee%ï•>4´ë`×wæôiÀd²ÖlØH§Óåää9:fäH_Ÿ•0ÈÙÙsÎÜgiÏ¿5oþ[-òòò{Âw¡us……bH¨¬ªÊÍËSPPÐÑÖ& ét:tèÀ fÇ ‚VvQ_sÝVà[˜™•ýþý¯9sÄÐmÚ´Ùº)XAAAJJÊ{媲òrâPO#ÃÄää§©Ïú98ˆà<ƒÁübD»š§P(ÄNl¬­ÐFn^N·²´¬­­Cöv¶YÙÙ,ëM^F㜘ݱkù’%‚tÉËËÙ򯆼ý/ÚML¾5ØÍ5/?_|rË‹KJètº+‡v7—WYY¼.p"Èæ&¥YYZ  ô%ƒk·±±QÈ:¾>+=&N`³Ùeee)OS¯Ý¸ ,öWg‰/7ªªí ‘É,*.©¬ªæ>•S(w77òÈü$]´µ¹~ÿ&*¥¥@µ];ÎÂ6mÚ@MM-ß&µµuÐFFFT]I·nIJJöstOK‘‘à˜ÕRWW€¥ƒÁ`Z¢]Í—~üئMyyy®r¢¤²² ¦xÎàªP[[[I¯UŽëu^9\¸8 \T]]]\RRT\uJccãù‹—N9«£­D¬z#AÍâI eeå°m[ÂvEø¯ß¨¢¬<|¨ûÙ“'¦LŸ‘të6Z“Ï—éS§|ùòåü¥Ë/_±¶¶ ôœ3ÊÈÌlÆG7#–æq é/_r-Sì:¨‡A÷£'¢>~\VV.//ß½[·áÆw"!!ÚêѲ²²/3{qÿ`²¹´¤¿| hl`0LË’”˜0` h÷81˜æ%éÖmï•«Fºaíš?m‹8»ÝÓØ8êÈ¡?m ƒùc$'%¶À|Š_D‹ùóôwtÐÐ蟔\__ÿ§m‡ë17Àc¸?mƒÁpƒÓ<æÏ#!!±pÞ¼ššôÔÛÿõõõg£ÏwÓÓsuqiº6ƒÁü^pšÇ´†lÛÇæÀ‘£õ ÆŸ¶E4Μ‹® ÑÖùù6ùs ƒùýà{ó ƒÁ4øÞ<ƒÁ`0˜ß Nó ƒÁ´ZpšÇ`0 ¦Õ‚Ó<ƒÁ`0­¼6óßfó–­4º÷â…GŸ¨ ÑWx/!˜ØØØ¸1h“‘‘áÄqc‰úï ný{çÝ»&³±S§Núõë®ßWàJï¥èÅE\l ÝB£Wz/^Èõò$1((,d2™ÚZZèaÏœÚÕTÛ­Z¾Œ«þùK—=N€åKÿ¢ç{ûöm>rØÐ¾¶}8+ ó„4€¯ƒbƒT»RRR;i v$Æ‹ 9ÃHÎqõ‹ú‹Õ|‡Y3BxOŸ&Ïÿ("’œ–KRbûGîÞ¿ojiÝ·ÿÀúúz®Cï M-­M-­?••±›¤ôCiióŠ}WP¹w_MMm³ka2™¡ÛþqèlãÐï7Xø‹âÓbAþ69Ì>þlfecÞ§oyy…™•e_û††âè™sѦ–Öé/^¢Ýªªª¿ýךYÙ 1Œþ̬lvì 'šT×Ô˜YÙ8:¹0™Lu¼§†¨ Q\#í¦–Ö–}í¹ øTVfãÐÏÔÒÚÂÖŽÁ`ü¤vA ˆ=xô™1qê_œG‘yBÀ×A±!"ÃõgÞ§ï£ÇOÄ+ž‘ĸúEý…Äö¶±ýÂo˜5ã $‡óôæÜù"Ò ÿÀa³Ù¼ù´% ðj¾ººúν{NpÞŒké¯;㢰¨pÏþãÆŒFo;564ŒÜ¹C…ç5íbð"#ãÄ©ÓófÏ"y‘® ¢-oM¼ÉÍe³Ù†= Øl¶‘¡!ñãõzcÿ¡ÃŽö¨ƒÊ+*fÌ™÷öÝ»öêêcGÒïÖ­¾¾>ùö¿±ññ‡ŽÓÑÖFoFÈÌÊb³Ù6ÖÖ|ŸfO‘ˆÛÞ¦M›Ÿ÷OfV6›ÍÖïÖó×öH»””ƒÁ(yÿ^³sgâÐî}û …BÑï¦G¥RR;_ˆˆIII±Ùlx•™•ò4ÕÒâëÛ¤23³Øl¶ðuPlPdºêê®ð^‚Jjjj:’“s=&ÆÚÊR\±"É9®RRSE!g»uí*Ão˜5ã $ÓM!Ïÿ("’œ–Œ@{ÄÄÆq¥ùØø„YÙÙ¿Þ°_‚²²²­m³ˆª®®€qcFÿžw6£å­ ô,Á®ƒˆ âйó>••…ÏûX,ÖÊÕ¾oß½ëkÛgÛæÍÄ7ªÁ®ƒ:vhôDÔÑQè£êÕ«L°µ±¾zýFJjj[…ÆéwÓCõ>zŸh×·EïÞ„¢‚¢ë11%ïßktì8~Ìh5µ¦ú ‹®Ý¸ñáC©†FǑÇ¡YÖ¢ââí»Â ¢¢b•¯ÿ°!ƒìíí½ÌLSž¦¾+( ÒÆÛwï.^¾ÒËÔôé³gF=zèMLNŽOæ>¤´´ôEF†šªê¤ ãÕTUQ¹]ß>#†%ª9ÚÛ 2˜7b?! FEiþUf&¼É͉+ýø±½ºúÈáõµ4‰V‚$ ƒÁˆOx••Uÿ¥ÞÀ@Ôðáœi E¦·™çY—ÿ6;'§M›6âId$¹%œãJ¤þÊË›”Tòþ½Œ´´~·nC‡ F–£¾èïèPYYùâeƬžH,ñ¶Ã£'¢2^e**¶õ^´P^^žs ênŽå_½óñãÇöíÛ$$%.¤›ÂŸ;|}ɛߔ…üÃBHØ¿ßçÏŸ_fdÈÉË>\£c‡‹—¯¼ÉÍSUS0vLÇQ"äUPpH>pZ2Óü`×A‘{öÖÔÖÊËÉ¡’¼üü7¹¹Þ‹iþÜù Ç¢¢JK?véÒÅkîœþŽ÷<@ï@ó[·>ýÅK-MM?ŸUu_ê8_Œ†ê$Þ¼A’ ;~&:º¬¬\KSsnƒ¾?FôLtôñ¨S?~ÔÖÖš=ÃÓÕÅ¥žÁسo\Bâ§OŸdåäLŒ-ð2ÐׯÅKÀÉm<òˆ0YÂW _Ì{÷â²K2‰ÙHàÉ£‡·lßÁ`4œ1éÀîHbEÆÈ°QR__Ÿ”övvâIæk$¹%\ãJøþ:xähøî=D¸ êôés'£¤¤¤P_dfeÀ ï¥H¬±¡!“ÉܼéÒ•«;tˆÜ¹C^^~„‚ºÍEE_¼´9„P*!!Áb±P§ ïfLlœça§/ä’„…Ÿ˜HTˆ‰“’’úôéÚ‹O¸z!‰õŒ@­D‚>pZ8WÚ÷wt HH$%ß"JbbãºêêW6§ÏEoÞºÍÅÉ)pÃzýnzÞ+WݹwZåëokc³ÎïïšÚšU~þ¢Útüä©°ðç‚6¬3è®ïãçÿðñcBé¦Ð­ý‚6úø­y’ò4|÷ž¨S§G ´dWaQñ‚%Þ¨þÂùó`s`@äÎÂkÆ^Éä7›™˜,^Àý"T¾ú®]g××v­Ÿom]­ß/m«©©™»`QÝ—:??ŸUŸ>}ZîÃçè|Õ¤‘KW¬rt°_çï[÷å˲•>Ë}Vì¶Þß·žQï·n½ðuHzDPlžˆÚ½o¿SÿþëÖÈËË…nÛNÔ'¹aaÛÇæéƒ{ÊÊʶ}lRîßURTDå'OŸ¡ÑéóçÌA»g¢£`æôé \ÚµSAënÐ×óŒW™ð8%eÞìYÁ×kht¬g0ŽŸ<…*gfeG²yþâEÀ¦Í222‹¼æ‡êwÓ£WV>z }ñ2ccP0…B™;kæ–MÁ]uukjj®Ýˆ€^f¦***°ÖïïÈ;,ͿΠd¼Ê”••ESï PaZzzÒ­Û£F ÿPZ F= IôffeJJJææç¯^±|‘×|Èû¶²²’Ërt]nüíz‘+b(3¦Më®ßÍf:ÉÙʨ‡áã')ÿ„í”””œ;kææÀÝ.]jkëŽ}«&ÈA³6m.,*rt°ß²yÞìYð$åi]]!™tñÊÕ…ÞËz/›·p‘Ûð9or9;9ØõO2_#É-áWÂ÷×ΈH99¹ÞKwþ³uù’Å—ÿ¶ôãGÔe åýûsfÍܾ%¤];älEÞË/]¹ªßMïøáƒz]»þ0 IºÒ_¼  %ú¨«n”,ÑÞMáϾ¾XHÂSee%?ŸUès’F£±Y,ÿÕ>HTQqqUUùÐ"1@Œ1 è§…#ðj^VV¶¿£ÃØXâ›øÍ¸øaߦøwïÛ¿`îœÓ§À g'£aÏþ^sg€ƒ]ߙӧ“ÉZ³a#N „ ñ˜0~…÷Rpuq)+/ßwàPkk&“¹gÿ‰ãÆ¢CμÉË¿##-³tÑB‰ee%ï•>´víTИ¶²´àš9 Ñ‚*ðº ücšá’ܤÀQ#†Oš0ž×_¾Ž5ig³Ùþë7p0çÍvpO$:íµµµ¢/\lhhà¼ÿ'(P½ÌLÉœê1iÔˆáÐÈd®Ý°n-z±=Ú¥WV SGYI©þK=ß[99¹CGŽŽ9Ò×g% rvöœ3÷YÚóoÍE»aQSSsäø‰!n®]u»@mmÝóôRRRÎðV®¨ 1™Lii%EÅššô~­ïßÈ©††ÆuyùoàóçÏ…EÅRRRúݾ®.Ü´™Éd†oÿMH´Uh;ñ’œ7¹èhÀ¦ÍL&s¿/š'/yÿ~ûÎ]•UU ¬¤D§Ó¥¥¥G JÜÛCÚzôè¤Ñ8ÒÆö°]ÒÒÒ³gxΞ¿@ZZZ¿›Þ¤¿¦ñÕ[]]]XTÌf³C‚ìlmi4Ú®ÈÝT*•ÍNË?þ\XT$--MdΈ!3¤¤¤ºwןêá±fÃÆ«×o,œ?J¥#ÆOžÊb±6¬ñGQ€Õþkróòˆ¨òu$\=¯9s {8Øõ-ýø‘B¡ÈÈÈpF^fdpö„„Äâ^bKæk$I}®q%|]¼|ÅÆÊjìèQƒœà­ö»ma;©Tj{uu¢Ë¶o EÆÎnÞºíMn®¥¹yض-DŠEõ¥¤¤ôõôu7ª¸9„søQ(?iiénzz»)ü¹CØÆé ¹…¯_ç ÑÂwl764¤Óéá»÷P(”È; ºw§Óé?8+` ÆøB¶|`°«ë²U>4MEE%3+» °ÐÍu‚¹yyt:ÝÊÒ²¶öë@{;ÛA›XL8ØõE…ªªí ‘ÉÞ â’:îÊ1Kïæâ²uG¼ÉË£Ñhœøû"v1™,EŶÀf³ËËËß¾+¸vã&°Ø,ÙBiAˆêB“m8&H›„ÐÞ® —vm-mYYÙM[¶Nõ˜dinnlhhìgÈÕ\P š4ÒÊÒm ï\»hBL˜:([ êÞØ—TVU_()Š»›‘æEåXÔÉêšô5 ‹‹X,VçNx/G ùßÛ`jjB¡P^ef±ÙìŽ:ÙKNNdÛ´oKuºéé¡»tyùù¯sÞHKK:vìбcPUYmÛ¶tÛøõkuuõáî_EM7vèÁhn“瘝]O¯«ªª*•J}[PI·n¥¥§{Lœ M¥¾}÷ÎØÐ° °P^$A[K}+By®{·n9¹oØl¶^×®Èr4'Ì©3b_ÍèÚUFZz°ë °ˆÈ²²²Óç¢-z÷f³Ùúzzï róò:´oOô—´48ïìò:H.ÍÎ ‹<¦M740pt°_8ç·^dRW]ݵ¾£’/õõÛwîÊ~ýúÚWgñ$óí’ú\ãJÈþ’’’=r„ššÚ£'O.]¹ZXTTT\ ÝôºR©ÔgiÏÙlvâ¶  ors@W· ç¸EGÑ L{žÎ·»©T*~í9†•*úzzÈY!ÝþÜ!lãõ…¯…@¢­~7=cCC¢­A÷îèv ÚÕï¦'%%E2´È c üG!Kóv¶}äääb'Ž{3.ÎȰ‡¶–Jó••U0ÅsW“ÚºZPþ‰áeeåÐNE…(QUU­«««®®®¤W¢]âºY•’šzàð‘çééJJJ]ttˆÅâiA»¢ºÐ¤@dªho×NåàžÈ½­XíÛØØhcmµÒ{)qY†¨×99äFr- æ»BX˜:ä=Âë]­ÔÔ¾̵Mx*«ªŽŸ<5rØ0-ͯ+ àû&{&“}á"¸»¹Á·ügaþýÖ;ú¨E¤\·‡ÑW~ƒqçî=N™ÚÚZððÑ#°²0GŸ€Ð¦MbmÑ×›Üwš ùz]»R(”öêêï?|¨­­ ”‘‘™9}ZjÚsd ‰^$ÁÊÂ’S‹¡aW™?XþâepÌØsEŒÓM*•ê1aüΈÈ3ÑçѽL##ÃÇORÀÊÒ‚píuÎèѽ;a ¯ƒäáÚ¹'éöíŒÌÌŒÌÌsç/\<{}}'LêmfÖ»—ÑðQ›ìׯ †Ø’ùö‚ ú¼ãJÈþ¢Óés,Ê~ýÔTUµ´4%%%óß¾5êñ}Põ23åöv}ÿ½s÷f\üÊeÞÄ’{â¶=±ÍÛÝðmøY˜÷æê#ÃoÎ é¦ðç‰/|-$ Ѷ§±1gÛžÆFœ»F††@:´H øQŽPc€7ÿÈÒ<•Ju8 &6n⸱± “ÆŸsnß^6läz>CÕçª&U’Ïá£Ïú 8Ê+*dddÐãJh4:q¨ °(/?Õß¾îC‡¢¹£{$$%“Û@¢¥Iû@ŒŒvþ³µ¾¾>5íùî½û,ñ¾yõ‡×´ó Teeåï1²¼¢ÂkÑ‘zD]M ЪÀ¯BÊËÅÓ~äø‰†††9³¾ÕìÜ™B¡|üô)#3}>lùgû«Ì¬®º]ÐÚctO”XgT__n¥»:;G‰…Óå0iü8bmcbrreUÕ¨áÉ£ŠmÛ¢ÆNòø\]s.ꄺºÚ×¼Ûã‡$}cÓèØ±¸¤dgDÄÛwïþš2YMU5íùsÔ¤¸¤DÞ‡À7࿦„€a`³Ùq ‰œÚ¹"†Ì 5nôèý‡Óh´£ÇO V%ï߀¼Üׯ­ 7nÞçï/æâu$\—®\}“ã½xцµþiÏÓWû¯)+/þâ1ëó5ò?~—¼MÍÎ%%ïÅ“Ìk$I}Þq%dí?t8ûõk{»U˼µµ´`Ѳåùoß~ýî˜ù=msŠ]¼ÀkÂØ±Nƒþü91)yˆ›ë5ìÁµÍ% E»í·áרØGÞMáϾ¾XHÞÞiÒY‘În …🥉‡Ývô<=ýf\ü‡¥®.ÎDyçN”•”>WîÝË ýeçäÄÆÇóý¡¤„$Ðh_oÍ+õøÒ¹S'%EÅØ¸x¢äf\ºòÐìÜYIQ1.!8´> pcPp=ƒ1Õc±âiê3r§ÈµˆG³ DVv¶Ë¡555222¶6Ö“'Mxÿáçb%¨cQQ¿ÇÈ·ïÞ‰Ú#44”••¯ÅÄ%èSIT**h§Îœ3j$çÏl”••ûöé+Wû>IyŠž‘™•í½rÕ©³çÚ¶m„æ$Ð’ŸûVTÐètújÿµÅ%%¶}lÐ%E&ºÌý.4—‘™Ùµ«nOc£Ô´´ã'O½ÌÈè¦×TÛµ€ûVTÐjkëÖ™ô4FßÀÐZ6ÃÓ<ÒÞ­kWèØ±œ>-++;㯩ðìùs062$ÑûêÇ‹d°±‘ỂB`62 ÆŽ]áè }öñFŒs…(*¶9l(ÔÔÖ"i**ÊpïÁƒòŠŠêêêuA…E½ÌÌÌLL_x$1ûZLLÔé3/22¨TsÒ\z IDATjÛ¶ õ †„„„^×ï϶C&þ˜æsÞ¼€bKæ5RP}¾ãJÈþBK_ÔÖÒ¢Ñh;#"ÑEg÷nÝ8ÏA$ÖÚÊRNNå­ËW¯qökšçßÝD´ï?xXV^^SS³!(-@.¼›ÂŸ;|}!±<,¼Ò¾îþ°‹ÜãŒà¶Pˆ1ÿešøi¿•……j»vÁ!¡f¦¦œCœJ¥Îž9#tÛöÒÒÆF†YÙ¯9JÜ9ãBW·‹¤¤ä¦Ð­“'ML{þ}Ê‚J¥zNû+,lfb‚îørè½»šÝk¾èéêÊÊÊòíAÓT*uÚ”ÉaáR’’æ½’nGétzFf¦•…E“Ï9xä›Ížå9«Ü×gå´YsŠKJfÍ÷BßDÑÍη…lBìD+ì ¸¤Äiðô‰¦¦¦°ví·£Ehé’éâ4pgddú‹—ýœIHH0™LYYÙÀõëÐä¶³ÓÀ‘» ‹º ¦P(,«];•¿W®6›nC.\ê­  p9ú,¡]NN% t®±ÙìIÆ«¨¨Ô××gfeËHKëuíªÚ®_½hé•JíαÎ5A?RÙöÏÖa,KMMísUZŠÅ1d•J%܀ɓ&ž‰>Ïb±4%%¥»‹Š‹»rmsàFb~˜¯ƒ$áꢣó$å©÷ÊU222h~xÒ„ñ44¸L"âÛ¤‚œx’ù)¨þ–¶s+áû«S'윜u‚CB9g¿/\¾¬ÛEu±¨“ËÙQ#†_¼|åqJÊû4:vD}ŠŽrnsu7mÔGhø€Ì·õw»)ä¹CÀã‹@ IÂbjÒ“KÑÙϵ+hœ$•|4þGiâj^BBb‹seUçz.Ä”Iy͉[í¿6!)Ùµ g!uhß~½¿_éÇþë7¼ÿPº~M?±›>uÊ‚ys“þ^³.çMnhp±ÎkêdE^ó’’|׬Mù248ÈÕÅ%lÛ–ºÚ:ÿõwì 嵐qöä -Mͤ[·ÀÄØØÒÜ<8tËòUÜ¿:#Ñ"â $±/rr²;¶n¡Óéþë7„…‡m ÙÄ[7P6VVb)ÊÊÊ$="ˆéS§Ì53!ù–ÿº µuµ!AÄ¡ŒÌL¯ÅKiMý^ãÓ§²sç/L7–w½ŒfçÎgN›8nl' …"++ÛËÌlÕrïó§Oö00@uÐbƒîÝÑÝVw7·¨#‡¾^ge±þÔÔÔ"ÃÂzS©T•!n®'16úzï°½ºzDØvcCC*•ª®¦6rø°3'Ž£ …2u²‡‚‚BÕçÏÄ#‘ö®º]Q²D÷Âäåä¦O/_½jhhÐ××—’’¤ýR™XÁ„vQ“•Ë–šô4–‘‘ÑìÜyõÊ•••úúú’’’¼û¶Ì°+ç7*-MÍýúÒ:vè°ëŸm†= $%%‡¹9uì(çÍ;¾’„ká¼¹û÷——““””0ìa°æïÕ>χ'LâZ‚¾N•WTˆ'™¯‘|ëóWÂ÷—ÿjŸAÎNJŠŠmdd,-Ìwï ÐÏQNN¶µ5ÑeD´¹œ531骫Ëb±Ð=g“t7ŠöÎmÛÐ 5}==ô”3“ž=ÑQáÝòÜá´Ó IÂÂ+«-¯³¢ž¢ŽøCIJL0ЩéŠÌÿ1‡ß±+|ÌÈ‘kýøOYa0-„‚Â"¯ÅKÔÕÕïÛ‹J/[qûÎåKÿ5eòŸµ­Õ“œ”Øóéày¼ÌÝw0ú‹-0˜æ†]XTT\R’›—§¥©yþÒåÛwîÈËË6ôO†ù3à4Á‘’šê½rUUÕg*•ÚßÁþO›ƒÁ4–¦¦fçÎEÅÅ£'L’””d2™à³b™²’ÒŸ6 óghâÞ<óN^^~ý—zƒîÝwl û×üÌoƒB¡ì ßigkÛ¶mÛ622½{™…mÛŠž…‡ùÿß›Ç`0 ¦h™÷æñÕ<ƒÁ`0­œæ1 ƒiµà4Á`0L«§y ƒÁ`Z-8Íc0 ÓjáŸæÍ¬lýÀ½̬lJ?~O¥¨ÍÅPÇb±¶ü³ÝÑÉ¥cqLüFAaÑî}ûkkëͤ•"PÆóú¸f —ßÉϨþɘ4ËÙTV^Þ¼ƒ³ÙG>>w0˜?ÿÇãDîÜ6^ef…ïÞ³90à¿õ¶Ý'Nž7{ñ¤bñ(,*ܳÿÀ¸1£‰—“bøÒ,úƒÑþª…”ilh¹sz»ÌÏÐ\r\Æÿ¼ðæ5ƒÁÿ4ogk˹keiÁû:–Luu5Œ3ú¿e6æÿeee®ÓíÏÊùE©y †ñïÍ—”¼Ÿ1gžµÃè “RRS‰òsç/ =ÆÚÎaüä©·þ½ÓŒÍѼߛÜÜi3g[Ù9 =æÚÁ^‹—€“Ût—qøØq·á#,ûÚ?ñæ·w®#™¯^MŸ=Çcš§0r~Òñ3ÑÑCG±¶s;É#6þû«ßIÌ+(,œ9w¾µÃ¨ñRRSÓ_¼œ0å/+;‡cÇ?xøH˜:HZ=ƒá>r´µC?×…K½³sr€cBuÖ|/k{Ç1=RŸ¥¡&l6{ÏþNƒÝ­í½/ýPZ*|ÀùJ ‚„‡Žo÷ êQU ’Ó¼1áœÍÎÎÉñZ¼ÔÁÉÙ~ ó‚%Þèá\ÒNÈ)&|£Êk<’é1Ísü䩜–¸ º1h¹|.óHÜÄû̯@ü4ï»v]_Ûµ~¾µuµ>~kPáésÑ›·nsqr ܰ^¿›ž÷ÊUwîÝoÞæó-1éi¸~m7½n~ëÖ?~’Â+|áüy°90€¸ûpüä©°ðç‚6¬3è®ïãçÿðñc¢þ†À`3“Å æ7)ç'?}.zSèÖþŽÁ }üÖ w¢›·tÅ*Gûuþ¾u_¾,[é³ÜgõÐÁnëý}ëõ~ëÖ _'|÷ž¨S§G ´dWaQñ‚%Þ„–U¾þ¶66ëüþ®©­Yå÷õeÁGODíÞ·ß©ÿ€ukäååB·mçuJ¤@‘ØÀWH“¡ãê>’ŽI5‰œf ¢¦¦fî‚Eu_êü||ü|V}úôi¹Ÿw ©]ȘŠ*_ã]œf¿~ýþôûâeÆÇOŸÜ‡¸ Ö“»‰'ö1˜_BRb[0wïß7µ´þTVÆ[¸ÿÐa´{åÚuSKkÖÐÐàè<èàá#DÍ«}=¦yò•)|sTÿCi)Ú EGY,ÖTÏ™3çÍoÒlƒáè<(dë6¢ÂÌyó=gÏ%jž<}F÷ÒñÆÆÆ~.®›B·%Ó<×n hÒ¼ —.£òKW¯šZZ_¾zs÷ZLL“uht:›ÍÚuê4¡%19ÙÔÒº¼¼‚˯ËW¯!¿êëë:o &>mÖlÞñ | Hlà"L踺¼#„WM"§ÙcB ïgii¦–ÖorsQ…—¯^­ b0œ2I´s&ÂÄDPTŸ›—oÙ×þ䙳¨pÛŽ0סÃÑèò¬ÒM æ? y>ýSˆ5ï`×m´k§Lfn^N·²´¬­­Cöv¶YÙÙ,ë§š3h>ØÍmP(÷!n/3^5ijqI NwäB”¸¹¸¼ÊÊ"vm¬­~ƒãoòòh4š‡û"v-_²¤Ió¬,-ÐZjÀµÛØØ(d_Ÿ•'°Ùì²²²”§©×nÜ›Åå—ªj;äWQqIeUÕ0÷!¨œB¡¸»¹ýL š´A‚B‡¶‰î#ïáU“Èù1AhkiËÊÊnÚ²õö;555Ɔ†ëü|©T*gsáµ ò¨ò"//gkcsëö¿h71ùÖ`7×¼ü|áÏz!ÝÄ`0͈ø/¢Uæ™[«¬¬€)ž3¸ÊkkkÄo^W˹«Ú®Ýÿڻϸ&’6à8ME{D”D¤H Š D)Ö³žˆ*ôD=EŨ`/`¹SéMì"ŠžQOA8 M€„@Þ{ïS6›sÏÿLJÍî̳ÏÌ,™ìf“àËÚZÚ uuu¼ñ9UVV!„4ÔÕ¿ÑÔÄ*b••• ª‹Ÿù· ÿTû Û5¾Ûïó’âô¸žù>'’)SPX8¡èáC55µ^={*S©Äíª®©Fii}MX¤Ÿhã (4Au×2ñ@ß5Aœ¶èŒ††úÁý{ÄZ¾2”ÅbYÐ̓ƒûöéÃY†üÞÉô q¯òåä`±1²®®®¼¢âmy¹ËØ1UUÕ‚âóý¯$ÓL€Iò÷æ;wÖFmÞ°^§kWÎõŠŠŠ­©þùŸÏœ«ª«{tïþïrU•‚‚‚Ðç&ìi±º¦ækÅêjâä‘l¸¶¶B¨¦¦O£´ìí§OŸÚ:=<æÂ%ãÇݹQMU!týæÍÌì‚*ÚZZ¡ÊÊ*ÎoçþÍD@×q#‘vMGâ}ÂÉÐÀ`×oÛ í;»( (õ‹œÄØ;Q[ô*ÁÇPíl¬)ʵ7_þõ×Àþýûöé#+++(¾ØÍH$¿O·[7ššÚ?uÿ jŒý—”¤edtêDêÅÉêø]èl6ûrjªþ A Ehd5UÕ´ô¯·µ§¦§è‹Ø¾ÖfÞ]WWMU5=3_±aã‘ãÇÛ:=Ìë7o™Ì™^žØ$‡ºWxŸ¸J7v)åëÇRÒÒÛ9Œ ®ã*F0"íš ŽÄû÷¬¸Øiœ ƒÁPPP°´ Ïðœö÷»w ß|c{'h É^åôÓO?Y˜›çäåefe7–8¾ØÍH$ÏæåääæÎöÚ¾ãýû†úÏŠŸLH\ºJ²ÕÏ_ü½S§NF†iY÷ñ½+›7²ŸÏ¬è=12²²CfåäÜ+ŒÛ#´"v¦r5ÿšž^3“Vf.''7ÇÏwÇî=ˆB:dÈÍ[· <8³[ìôDÒ·wo%%¥È-QÓ&{47·\»q»§ú^a¡ Ërrr>Þ3¢÷Ät’•55–™[ZVÆ·$ÉŽ"ÈÁÙɉ ˆ ®Ãî9à,&h DÚ5A‰÷ N¯‡“É _íîêZÇ`<|ØØÈHI雯Ö!¿w2}"¨W‰“wr°ÜÅb±Æ:&Ž/j3kkk?}jnj*///´»$IršGy{Ng±X§Ï&=q²»®nøÊw7×VV¿~ó&g™m¿nŽ?œpêÌÙ.;¯_»šäwnøÎôf±XÉç/œ<}¦§ž^Ô¦Hü&5F††f&&›¢¶*S©y™D§M$>s†«¹ùLrò™³I={êEmŠ´07;=‘Ðh´èí[£wÇ„G¬W§ÑÜ\ÆŸ9qÌÛ×?;7ÏÍe¼ Z¾3½¿|ù’|áâù‹¿Óéæ["7úÍ›Ï[ŒdGäàìäD„o×qHð@ˆºk‚•lŸà¨T¥Û¶nŽX§¤¤han¾,`)o1’{'Ó'‚z•8ùQv¶ë7m635鬭-4¾HÍ|üôéÂ¥é—ÿèÒ¹³ÐîDÉÎÊeïð½Ó åúÍ›ð, cÊÉÎê€ó)üB µ`š¤Ló€Ô’ð-xmÊÊÒ²èîíïðÀ³y@jÁ4H-˜æ©Ó< µ`š¤Ló€Ôâ?Í›[¬ ç\àÔÒÒâ0v¼±¹ÅÏKÈìcEh¸±¹Ek ðšâ5ãÞýûX†\ô‘6Þ~þÙ¹y"HÀ¸ó=Ú-“ñ?´q>7§  ²²!tûÎÝÚÚZ&鬄(-{[UU=ÌØ{8hà@×ñã°e6›ýñãÇË)©AÁ+vl²·³mçÜ:¦¡áiB¿u xYP¯žzm¹‚´©ŽŸ!ðÅš§R•”•©œ œ®¤¤!„¬GZå_»žž™5u²G[gÉ%+'g”­ŒÌ¿—"zêéy{Nç,àíå9aò”ƒ ‰0Í‹„«Akÿ@ûàѾoŸ>}z÷æ\À52™™99µµ—-]‚JIþ ›—•“ãhoOP ³¶¶¡AIII»¥‚"h7üÏæû÷ëׯo_ÎÜÕük ÃÝÕ¥OïÞ=õôî?(z÷þ}×.]ðÕÕ5»öîÍËϯ«côîÙsŽ¿/Wpâ---IçΟ»x±´ì­¬¬LŸ^½gûúØXÄ ¼ÿð¡´´Lèϱ+**vêôoëâNËÈ|ÿღ††õ¼9³554BÆæsýý† 5Þ½wßËW©ÓhÓ§Nñ÷™u%5í`BbiY™†ºº»›ë‚¹s( ­öÓ§}bsò®VUWkjhØÙØ,œ?—F£…®‰¸œ’rù¹xó.¾_T”™rYMU• ¡­æRôèѸƒÅÏŸþçMM‘#F,^0_л'ø}ØvåÙØÜÂÙÉi¶ï¬u7=-.¾û&¾2jÓFâ¾%ŽLÐE"A=~òdÛÎèÇOž*+S­,-—àA:“ï.œœ–,\°9jÛý¢ŠŠŠ#GŒø%0€¦¦F&aAç@ðOí†ÿ4¿6,”kw%5 !4ÚÉ!dog{øÈÑ´ŒLïØÖºº:Ÿ9sJËÞÚÙXêë?ñbEh¸¦¦&^]h-Û¶Ÿ:›dfjâ7k&‹ÅJËÈ X·7ÆÌÔ+“kc=ŸÂùb±X%%/ ˆjjjš¿hɳââ±cœ{tï^VVvîâï9yW'ÖÖÖBݺsçÔÙ¤ .ãmF޳ç¾~óÆÉÁ~@¿~%/_žNJº}÷î‰# cG_NIÉÈÊö›5K£ªºúî½{ŽööjªªÄim5§òŠŠ‹—P©Ên.ãRQ)zôèlò¹òŠŠ}»¢ùöFð² ?._yV\¼,ˆs}Åßó/5:”àõ1¾‘ ºH™ÊçÚµ ô^¼|9oÑ;»Çç_»þÇå+uuu;·mE$Æ”WmmíÜ…‹,ÌÌüfͺzíÚï—.×Õ1vlÝB&a¾ ÍàŸÚOvV&›´ÏŸ?›9z¼kKK ›Í¾_T4ÄŒ>Í{&^`瞘!fôC‰Gð5GŽbFbF'YÀÂÚv¦ßl|ëûF³gß~|ÿüÙ¹yøÃ!fôÅAËÊ+*°¿·åå÷‹Š–¯ fayçn›Í>|ä¨ùˆ‘OŸ=ëüùä‰ùˆ‘k7lĪ› oýóñc¾k°Âl6{÷Þ}CÌè§Ï&áÑNž9;ÄŒ¾gß~‹eã8Ús–/¾éÄ©ÓCÌè×oÜš†ÐVs:“”<ÄŒþçãÇ_ûdÞSK+¾…1Á«ÂðÆûÍØÜ¢ °keðª0ήe2‘ ºH¤ô†˜Ñ3²²±‡MMM®“&ÓGÚ`‰;“W4&“9Þ}L¼Šš@ê‰4Ÿ¶Ñ>7Ÿ™Ãd2ì±+ØCÖÔÐxú¬øMié¿/rrµ´´fÍð«xMŸÆy‚%´€¦†FÅ»¿‹ÿÿ¶zgmíì´”E æckkkŸ?a9œ3««ùׯº¹cã&Lô™=7=3s¶Ÿ/vaÿJjÚ UUU+þþûS§Ñô º[p«n2l(vÞÒ4ˆïšúúìaVNn×.]&Ošˆï}ªÇ¤ÎÚÚÙ¹y²²²NöŸ<ùûÝ;lSjzF—·[Ð…¦AÜj.Ýï\Ï740À6773›˜MMM| Ð4ÐtØ0Qk EÐE"ÅéÝ«—£ý(l¹S§Nôÿòå öPè˜G“““Ó4&^ÂbäíO´Ô]NME 12ªøûolɰ¡YÙ©éóçÌF•WT˜™šÈÊÊâUdeeûõéóñc%öPhðU+W­^3ÕË»»®®±‘‘©é°Q6¶êØÖìܼÇ+ÈËsf5l¨ñ¬3ð‡ #-336þ ¶¦æÔɯ߼illëæÎÕ%%%lA¦Ž¯ÄîÞç]ƒ+//755á\)##Ó·OïûEBãœÏ&ŸËÌÊž9ÃëïwïŠ=šãç‹&Nƒ¸Õ\dddª«ªsóóKJ^¼-/þâŧOŸø–$ÖMGGŒZBwy½{õä|H¡| (tLEŠ&^ÂbäíO„iþÃÇ÷ ï#„‚Wq¿×˜’–ŽMó2ÿ¿O…ó TXK zÚ¥ßoݾ}÷^á£G¦efným熵kœìBY9¹n.㸪wÖîÌõÁ¹ñcǸLôH8zlêd6›mh`0ÇÏ—{§ü2ŠÍo¥ŒŒ,»¥!4l¨q×.]2²²gÎðJËÈd³Ùn..ÿV$Lƒ¸Õ\.üþǺÈM½{õrvrnAïß¯ï¾Øø´Œ QÛ"++η&EÜEäÉÉÉ Ú$ƘEã·RhÂ’=® ˆðDŸš–ÞÒÒâ0j”˸±œë7nþõ¯×¯‹Ÿ?8`@÷îÝK^¼lnnÆÏ×[ZZ^¼x‰ZàÑŸ»vébkmmkmªª®ö™=wëo;œìëêêîmݼIhª222ôϽšê®Û­¡¡ëuÀ›·É·ýkþºÝ^½ú«¥¥?ùkiiyùêU·nÝB eÌh§ÄcÇßøšžn:l˜^îxE‚4ZÍ›CÌþ½zê>vDNN[ÓÔÄ£-m„¸‹$µ‹vÓöÉÚˆïÍ_NMCÍõ÷³·³åüÃfý”´t„Ð([›ÊÊÊÄcÇñZ§Îœýðñ#þPhàU¡ë"#ñ‡êꪪªŒúz„PÞµkf&&T*©‹¢òòò---Øë’Wý•šþõd· °pa@à‚òmçÈßöÝû÷IçÎãkN'%¿{ÿº7Æ™ÍfJH|ú¬ØÝÍ/FœA«y1 †Ïñ¯ß¼¹}Wœ¶´¡]Ôzí<¦í´²gó½~ý¬¸Ø@þ \›&NpK4Ô×/yù*3;ÛP_ÿñÓ§Xa¡Æq>˜øóÒ“¡C[ZZ®ß¸ùøÉì#jYÙ¹ø]TBQ©T„PuMŸÏ¬¬œÜU«×äåç÷ïׯ¼¢âÒ•”žzz^Ó¦‘ ÅÉßgVFVvä–¨;ú÷/yñ"=3K¯GŸYXôîÕëtR²2•Êy.NœA«y°ž‘•¼*Là€òŠŠô¬¬žz=ž<}öë¶ícGñV‘——CÅNÐÒÒrwu£á‚ðFÚE­O¯Ç”o†’ÍÚÙiû¸¼Çĉ¼›z÷ê5tÈ=|8ÔØ81>v÷Þ}y×®_¿y«w¯žÛ~ÝôòÕ_ø,þÓO?X8ÞO?ýôû¥Ëåä:õêÙsÃÚ5®ãÇ566Þ¾{7"<ŒdÂúõC¥gdzMŸ–»/6.'7/#+»³¶öD7×¹³ýUU"Š“ŠŠÊ‘ƒq{cãró®fçæijhLì±hþ<¼Ì8çÑ1bG;9rÞ¥L¥¤!¨Õ|sXºJ™J½zýúÕk×L† Ý¿g·’¢bÀ/ËϿгG¾ÓüäIÿ|üdïØŸTT$;ÍóF&ÓE­L¸3EE&aÞ %›´JvVæ({‡ïðcËÉÎê€ó)üÞ< µ`š¤Ló€Ô‚iZ0ÍR ¦y@jÁ4H-˜æ©Ó< µ`š¤ÿiþúÍ›Ææï?|´^P®’øŸ©¥•û”i‰ÇŽ·ˆø£ãÄñ+«ªÈ¤-A¥eo÷ÅÆÕ×7ˆQ÷{åÌoCZZZ¶þ¶ÃÆÁi¸‰‰Ý3\…{¢Æ'§•» èñ"›[p-á3{"‘v$*¾ùpþ¿‹º•+¬HíílÞP_ï®ê4Éò›ÖGìݵsï®[7o²²¾s÷žC‰GDO²­ÒCÙÛ²ýqñõ ü"V í3_¼ yôøñ±“§<§MÝöë&1»gHVl‡Žjå.Òž£ì;kæá#G‰Ë´ÅrtŒÛ³#'NžšžÁÎÏ é#m<¦{Þ€mb³ÙûãâÆŽ§´Y¸4ðÝû÷é ŠS\R²pi µƒãH{ÇEAoJKñºg“ϹNò [YO13÷j>gÀÇOžøÎçåã‡Z¸4!ä0fçùߺ’Ê™·ð‹—/}fÏ5·²väqéJ gUód IDAT¾½Ê·Õ¼ áZƒçSp¯p(}øí»w±b™Ù9¦–VÏK^p寷gøæC¦bEÅßþóЭ¬'Mó,(,Dß{ã(´70¯þzí;wž¹•õ¸ “/\à ì¡ aENJr™èA·²žìé•–‘AÐÞÈ$“…B™5Ã+áè1¾[ñËæÄØ««kBÂÂGÚ;Ú:9;yŠ«:\TàÒª[ðlm¬›››oܺ…=,-{û¼ä…³££ òoËË•”ž8½'ÆqÔ¨Èukè~ëμ؊ÐpK ‹µa«õŒaáØÊÄcÇ÷ÅÆ9ØÙmX»ZY™µ}‡Ðô¸â0Œù‹–4|i YññãÇ_BVb%OMúuÛv'‡ë"ú÷ë¼"ÿú <κ›ŒŒ–.ú!´øç¡_7nØ»k§Ðº­Ï™o™Ÿ— 6ܱ¦_ß~ak#îÜ-ÀÖóíUA­æm©É—ñ‘¿F1™LF}ý–mÛý}f èß++ÞêÄ£LP!ºf­ÕË5a¡õ õ!a«9ËŒ#'aÇXè`ƒk°>rs^~>Wu‚a=u6isÔ6;ëMÖê뇄­¾[p ÅHƒŸ4‹zöì2n컕••|cbш¯¢¯ _man~é\Rò©¥¥e¼ÕÛ‚Øíí¢=-MM£Á†yù×F;:"„2³³ijjts¼À—/_°sw&³±ðÁƒC ‰Žö£X,Vüá¯iS—"„œœ*«ªbã §Ó±ZÖV#fûú „š›[V¯[_[[K¥R%$z¸»‡†#„F;:úÍ›ÿûŒ¸âÜ)¸WSSspÿÞ¾}ú „ôôz$;ßÔÔD¡PöÅÆ-š?Ïß×!4ÚÑÉlÚom5‹3q‚›ç´©Ø²þ „¹™)ve›Åb ªËd2[Ÿsmm-ç ]{;[¬ëF;:úÌž{èÝܬ©©‰o¯.]ô3ßVs5„·iœ–¸O™z(ñÈçÏŸUT”çúûñfÎU]P>ø( ªˆñ˜èŽõ›ÍXW[[‹o*yñ‚o‹äääð2B÷>ÎÙ™³ã¶µ¶Æ« kssóþ¸øéS&cÕíG½xõ×¥”s3S‚)ùÖ“““›â1éØÉSK‹a8Ý|’ûl;€?¨Ö~ ÎÎÆæÚõØýóY9¹ö£ìdeeñ­nS,mí,mílœƒ‚C ô/ *¯¨¨­­uí„ãäôäÙ3ü!>¿jjj „XÍÍoË+>}þì:~¶žB¡Œ3Fhn\qt»uSRRÚ¼u[^~>ƒÁ0Ô×_*''÷òÕ«ÚÚZs3³úúìo¤•å³âbüCœ/\¸Ô•HάæfÞ2cÇ89nÌŸŸ „õª^=¾­š '5UÕà  ƒ ‰§“’#V‡ËËË ­"t”‰áý ¡¡Ž¾í2-ºw®>|þ¼„Ífã[ †õÅ«W555c8"ÇÆìþ% €d»$2dLõ˜”’–Î`0Ä«>ÚIà59À¥Ugó¡Q¶6»bö>|ôHGGçñ“'ØuKÜŽ­[Ôiê! éèè`·ã½xñ!¤¡®ŽÓÔÔlhhÀßãç=­®©Fii}=IÒÒÒšW õƒû÷ˆ?´|e(‹Å² ›öíÓçÓ§Ï!o?®êõõÿÞ2­¬¬,hu%’3_šø²¶–6Öu••Uˆ_¯ÊËËñmµÐ½pqvrŒúm‡:MmÈàÁdÊ Ê§®®NEEEhu‚~4Ž$÷þïÃoû°‘Éäœ †õSí',¾’àð/y’8ß ç½Ê­¢¢2f´Ó™äs~³fмk—.bÔt@­æûôî­×£{^þ5m--555º™)çVCüN{6óU×ÔôèÞ[SU]­  @ð쯭¥…ª¬¬úZåÛOŸ“dh`°ë·m…Šöˆ]”úÇÅεB›7¬×éÚ•³°¢¢¢Ð€u%•3¯ªêjΘ ÊÊʽʷբî4ñØqY™òòŠ ¿ÿ1q‚›ÐòbŒ2yB[$tï\}H¥*q&F4¬ÚZ¡ššZ¼ziÙÛOŸ> 6”Tò$ }ÛÛÓsÖì9ÞžÓŸZЩSkŸ„¾ÏÖÆ&/ÿZfvŽƒÝ7WìÑíÖMMU5ãÎçÔôtC}‚*Ýtth4Ú¥”¯w•§¤¥‹šç³âb§q. CAAÁÒ‚>ÃsÚßïÞ544èvëFSSû§îŸaC±¿â’’´Œ 2Ïtu%’3_øMãl6ûrjªþ A EP¯ jµH{,-+Û²ü?ŸY;ví®©©ZEŒQ&‰L‹„î³ÿ¸|ÅØÈˆ«º aí®««¦ªšž™‰ŽØ°ñÈñãL^R´µµèf¦—SRy7)((42™m±S„2•Jð-IÄ[G4“¥gf©ªþ„?¤*Q©T%Þb£lmŽ?!##3o÷EN¾äääü|fE‘•2Ø0+'·à^aÜÞâ*>Þ3¢÷Ät’•55–™[ZVFPž/½zL&3$|µ»«kƒqððac##%%%„ÐÜÙþQÛw¼ÿÁÐ@ÿYñóƒ ‰kBWñ ‚½Ž¹šMO¯‡™‰‰œœœ ºÉ™¯óïÔ©“‘¡AZFÖýEØ}Ý‚zUP«¹B°;6›±!ÒÔÔd´£C#ÓúÒ•”íÑ»6F¬Ú3$G™|&‚qÄïB¡`s¶‘¡AjzÆÃ?ÿ‰R—_¼|q`»««™é73o@’£L> Á8r"Ø;…B‰Ù¹sã¯[N9ÛMGgKä“aC¹ª ëÌ^¬ææ3ÉÉgÎ&õ쩵)ÒÂÜœdCH&/)}z÷ꮫ›—ÍÎÆšsý²€€M[¢ÖoÚÜÒÒBþÓkœwà˼Ճ—…®^»=z›Íu+@â(ÙY™£ìZeª—·‘Ñ`¾/€]¿ysáÒÀôËðÞñZO*»÷AQÑŽÝ1‰ñ±ß;¤_NvVëçS‰“Àu³7¥¥Å%%ߊÀ¡¥…-¼Ðf¨±1Ìñü—µö~Úc'Oeåät×Õ庄 ÀåyÉ‹+©©222jªªß;˜ÖNó‰GÉËËoÚ°n¨?´Øƒ ï?ø%0€Ì)àG!™÷æ€ÿ8©}oLó€Ô‚iZ0ÍR ¦y@jÁ4H-˜æ©Ó< µ`š¤Ló€Ô‚iZüºÆÅåë² Z±BàJ‘ wØ61éˆÐa“Ž6±Ž€ÿþÓüåË_—UTˆVŠT¸ÃFè°‰IG„›˜tDè°‰uäüwðŸæóó¿.kk­©p‡Ða“Ž61éˆÐaë鿕ۢ$~ˆí ¦y@jÁ4H-˜æ©Ó< µ`š¤Ló€Ô‚iZ0ÍR ¦y@jÁ4H-˜æH7o߉ÚþÛ÷΀VÀvÀš76·ô‡º~󦱹Åû¸j Z/A¥eo÷ÅÆÕ×7|÷h­©ÛÈdް³oMG=úóÏã§N Ú*Ò@),vc¹*¶Ã"õ°>¬¬ªâ])FÇv´ÃŽ$Žÿ4¿w×NìoñÏ B¿nÜ€¯!ˆe¨¯¿w×Nu­M2E!Tö¶l\|}CýwÖšº GŽ2 1*’DA„…B!S˜Ì¨‰ÝXÉŽ¸Žv‹tèÈàÿ{óV––œÍÍLµ45…Æ¢Ñh\—»÷¤gf•WT´é^ttºÊËË“2£D×v‡±H‡.€ ñß›¯¨øÛÞº•õ¤iž……èÛ nÅ%% —Z;8Ž´w\ô¦´”«:^xÎÏ é#m<¦{Þ€o=|äè· f#FNœ:=5=_¿pi BÈaÌ8ìíÌÙäs®“<èVÖSgÌ̽šÏ7[¾ùðFkd2£÷ÄŒwŸD·²¶ur^T\R‚gûøÉß¹ó¼|üøÖÚd„PŸÞ½'Otwwu©«EÕSOÏÐ@_FF†LVø@Œßn4FœøVä=r0BÇ˰´¬löüŸéVÖ§N+(,|øèÏi޳̭¬'LžzóÖm¡Ñ 1߾⺆Œ_0ç=ÈäO°w‚Îg³ÙûãâÆŽ§´Y¸4ðÝû÷|#‹Ñ:¾ô}c‘]âOó¡kÖZ°\ZßP¶šsƒÁ˜¿hI׆°°?~ü%d%ß +BÃ--,Ö†­bÔ3V„…c+ž8½'ÆqÔ¨Èukè~ëÎlç›ØšSg“~ݶÝÉÁa㺈þýú¯È¿~ƒk/‚òá¶gßþã'OMpuÙ²)2`Ѳ·å‹‚ð8ë6n262ZºègÞº$›ìæ2Þß×g´“£-:™„¸XòYqâ;"¼E0Fœx+"G™qÄ._ac=rmxh×/Ë‚C~ Yé2vLDxh#³1lm„Ðh‚†XŒ¾â<HæO|€ñíüÄcÇ÷ÅÆ9ØÙmX»ZY™µ}AJ¢¶®£Æ­9t|ñ¿hO†ÇD÷Ù¾>!6›±®¶¶ßTòâEMMÍÁý{ûöéƒÒÓë‘tî|SS“œœWk«Xææ–ÕëÖ×ÖÖ*++ÇNðš6uyP BÈÙÉ©²ª*6þÐp:!d ?q¼‰Àb±öÅÆ-š?Ïß×!4ÚÑÉlÚom5‚s/‚òኆjüÒ¸d±×ôiØCM-(8¤ºº{8q‚›ç´©Ø2W]òMnObdÅ;"4«±MMMcĉ·‡¿#GEE…Ì8bfzyNœà†b57¯Y·aÃÚ5n.ãñ‡µŸ>©(+D4Ä¥e¥üúŠEнøñ@ò8$Ø» Î§R©‡=ÜÝCC‚B£ýæÍ¿ÿ HPJ"¶Žû_ ãÆ'~tâŸÍãOaê!Vs3¾I¯‡ž’’Òæ­Ûòòó †¡¾þÚ°P¾ÿŸxMM ,HyEEmm­óh'¼Ì'§'ÏžñÍáå«Wµµµæffõõ ØßH+ËgÅÅ---œÅÈçì5}›Í®¬¬,¸WxéJ*B¨…ýo4 º¹ Þ ¿‹ö$FV¼#Â[F¤1"Ø~äGŒ¹™)¶€ÍL\Y,q4AC, ¯ˆ^ãÇùü‰0ÞÎ[^ñéóg×ñã°õ eü˜1)‰Ø:î#¡ãÆ'~tâŸÍÓß›­¡¡~pÿÞñ‡–¯ e±Xtóà @ìU¹Ð ••U! uu|¦¦fCCC]]ŠŠ WáOŸ>#„¼ýü¹Ö×××s&ŸOAaaüá„¢‡ÕÔÔzõì©L¥rnUVVn}“Û“Y +N¤1"³ ’ãˆáz®ç}ê'Ž&hˆùöqCðã|þÄoÏT×T#„´´¾^ ÑÒÒ"HI¤Öñ ç0î8™ð£š'fh`°ë·m…Šöˆ]”úÇE2±g´êššÝ»ckªª«øÎ;k#„6oX¯Óµ+çzEEE1ò©ª®^¸$`ü¸±["7ª©ª"„®ß¼™™CªÁ­h26›ýôYñí»wK^¼üðñCccãO*?õéÝ‹ü‹Û"+‘ƈ òãØÊhÄCÌÛW«C¿y?˜ó)1òãÓÖÒBUVV}íêo?1ÿMü*ÑZÇ÷Hè8‡q[dÀP›| Þ³âb§q. CAAÁÒ‚>ÃsÚßïÞ54ú ÝnÝÔTUÓ8îÜNMO74ÐT˜¦¦öOÝ?ÆcÅ%%i:}óò…d>¯ß¼id2gzybO‘¡{…÷Û¡É|5558uÚÍc²ç,Ÿ»÷\NI¹[pïá£?¯ß¼yôÄÉô̬ï’F¤1"Ì8¶>Áóí«ÆF&B¨¦æß÷ÎÝH21°n::4íRJ ¾&%-]PaQ[Ç{$tœÃ¸]þƒÚäl^¯‡“É _íîêZÇ`<|ØØÈHII‰L]999?ŸYÑ{bdde‡ 6ÌÊÉ-¸W·7Û*++‹ºšMO¯‡™‰‰œœÜÜÙþQÛw¼ÿÁÐ@ÿYñóƒ ‰kBW‘̇+ZßÞ½•””"·DM›ìÑÜÜríÆ»÷B÷ yÏS¹ê¶¦É¼^¼|¼¢´ì-AìCGÄ$•o·ŒAEAñIŽ#IцØÚj$o_èËÊÊnŽÚ6Ãsúƒ¢¢âçÏ[“¿HÙÇ{Fôž˜N²²¦&Ã2³sKËÊ5¼oÑZÇû/Ðqc‚Ljkk?}jnj*///^bü§´É4O¥*íܶu{ttxÄ:%%E sóeKÉW÷éÍb±’Ï_8yúLO=½¨M‘ømVF††f&&›¢¶*S©y™é!oÏé,ëôÙ¤£'Nv×Õ _âîæJ2®h4-zûÖèÝ1áëÕi47—ñgNóöõÏÎÍÃîåæÄU·•MæôÏ?ÿÌ_´¤RðµY ™³gIeÅÛícD\Q2ãHž hCììäÄÛWµµ#ÂÃöˆ Xgei±:|–ÿ±óéÃùÎôþòåKò…‹ç/þN§›o‰Üè7o>ß’¢¶uàØ “ÇOŸ.\˜~ù.;‹—ÿ)”ì¬ÌQöß; ðU^~þÒeˉËÐh´{v 8°}R@Tpƒÿ œì¬8ŸÂ/Ôu8úƒ©sÜÄÎENNn‚‹ËÙÇàÉtdpÐA´Õö@lµµ“NO:w>/?ÿmy9ƒQ¯¤¤Ô¥sç~}ûÒÍÍGÙ‘ùÌ߯tpѸh€vÓ< µ`š¤Ló€Ô‚iZ0ÍR‹ÿ4oln!è!týæMcs ò?’ÆKP|½Ð]`ð?SK+÷)Óçû åbg(ô«:ÅPZöv_l\}½ÔþGkÈ·Û[¼aÇ-ç‚I<¦Ï칊Š$“ ßœ¹þÍEÚʶ-ú þ_³w×NláÉÓg{öíÿuãUÕŸÚ!C}ý½»vª“þÞŒMë#°/ÙhldÞ+,ܹ{OSSÓ?ß6L±ÕÊޖ틟â1‰JóA:8‰7PÔ£âGç;kæá#G£·”16·(º{[²ûÅò¤‰·:,þÓ¼•¥%çCs3S-MÍvȆF£q횘™©)þóöv¶¡ã§NuðiˆJÔ£âGggc½+fï_¯_÷îÕ«v!ñ—€Kü÷æ+*þöŸ·€ne=išgAa!¾þlò9×It+ë©3fæ^Í)&×åÙäóL-­êêêðS¼f¬Ý°QPõaC‡VW×`—‹9:Æm‚Ùˆ‘§NOýÿ/£ãñçü¼>ÒÆcºWáýØ&6›½?.ÞaìxúH›…Kß½ÏwÅ%% —Z;8Ž´w\ô¦´4ùŸ$ǹÚÑÂ¥!‡1ãð³¢F&3zOÌx÷It+k['çÅAÅ%%¡‚{…CéÃoß½‹ËÌÎ1µ´z^ò‚7«£ÇO8»¸ÑGÚü²¼à^!çuoÞá è¾åñ*Ÿ<ñ;ÏËÇ g¾ –d·s¼ýÏ[F‚^ýõ:à—å#ììéVÖ^>~×nÜh‡sY …2k†WÂÑc|·â—͉/°WWׄ„…´w´ur>vòWu8#à¿Cüi>tÍZ«–kÂBëêCÂVc+OMúuÛv'‡ë"ú÷ë¼"ÿú ±wakcÝÜÜ|ãÖ-ìaiÙÛç%/œ•[^®¨¨¨¤¤xôÄÉè=1Ž£FE®[;p@ÿ°ð[wîàÅV„†[ZX¬ [Ũg¬ ÇV&;¾/6ÎÁÎnÃÚÕÊÊÔ¨í;xã3Œù‹–4|i YññãÇ_BVÚZóMÒAÐŽÿ¼!ôëÆ ø;#{öí?~òÔW—-›"-,{[¾( !dfj2Áe|ä¯QL&“Q_¿eÛvŸYú÷ãÊ*éü…íÑ»íGmŒXC¥RW®^ƒo"¾¹ߺ›ŒŒ–.ú™ g¾ $K¦Û‰ûÛD|a?yé,¶ìíÛù‹[YZþžt&ýÊ¥iSuJð² ,óy üø!Äb±øÇÂùsùv‚Ðá›8ÁÍsÚT¡9s5PPÖV#˜L&™n'îÿ¦¦&99¹¶¸°¿/6ÞÛËsêdìá—º:FÔöß$»¾äää¦xL:vòTà’ÅâEN7Ÿä>[ƺðß$þÙ<þ쯡¡Žb57¿|õª¶¶ÖÜ̬¾¾ûieù¬¸¸5w¿ÛÙØ\»~‹•“k?ÊNVVßêæ1ÅÒÖÎÒÖÎÖÉ9(8Ä@Pð² òŠŠÚÚZçÑNx±1NNOž=ãÍ\SSËümyŧϟ]ÇÃÖS(”ñcÆð&£×COIIióÖmyùù ÃP_mX¨œœœ $ywÄ·¡!Á^Ó§±ÙìÊÊÊ‚{…—®¤"„ZØ-!5UÕà  ƒ ‰§“’#V‡ËËËsÕ-¯øûÃÇc8;ÚñßN8Í-|s:|œ/°ræB–d· í‚*­qëöm'{Î5£lmÚh_¼¦zLJIKg0âUí$ð¢à?Eü³yÞß‘üôé3BÈÛÏŸk}}}½ŠŠŠx{ek³+fïÃGttt?y‚]ÆíغE¦Ž¢PŽŽv;Þ‹/B¿u­©©ÙÐЀ¿}ΛyuM5BHKëëm†ZZZ¼Éhh¨Ü¿÷@ü¡å+CY,–Ý<8(°oŸ>¼I¶´4óÝ_……ñ‡Š>TSSëÕ³§2•ʹÕÙÉ1ê·ê4µ!ƒóÖýðñBHSCƒ³±Ø‚Àáh¨ç›Áða ÊÊÊ$s&–d·ãõ?A•Ö¨©­ÕüöÎSM‰ÞˆÊù9ïUn•1£Î$Ÿó›5SŒà]»tiUri!Éß›ïÜY!´yÃz®]9×+**гOïÞz=ºçå_ÓÖÒRSS£›™rn540Àï´ÇaÓFuMMîݱ5UÕÕ /5´µ´B••U_«øÄ¼¡Á®ß¶566>(Úw vQ@Pêy“ä¼€XUuõÂ%ãÇݹQMU!týæÍÌì¼@â±ã²22åå~ÿcâ7®êØ_U]gŽÍHðp|þç3ßLȟМI†%ßí8¾ýO\Elê4ÚÇ»ëêâk„¦'¡o`{{zΚ=ÇÛsºW,:u’ä¿6àÇ%ÉoÁÓíÖ¦¦öOÝ?ÆcÅ%%i­|Ʊµ±ÉË¿–™ã`÷Í{‚4ÔTUÓþw=B(5=ÝÐ@Ÿ J7v)%_“’–Î[ìYq±Ó8ƒ¡  `iAŸá9íïwïÄH÷úÍ›F&s¦—'6_"„îÞÇ·––•í Yþ‹ŸÏ¬»v×ÔÔpUﮫKSSKåÈ6#+[u8È—'Ι|X’ÝŽ#èÿ¶0œNOÏÌâ\“•“ÛFûâK[[‹nfz9%•w“‚‚B#“ÙFûU¦R ¾Ýˆx+ £‘äK~99¹¹³ý£¶ïxÿþƒ¡þ³âçׄ®T>=3‹ó[w¨JT¾_¨2ÊÖæèñ222óæp_ø”†ŸÏ¬è=12²²CfåäÜ+ŒÛC\ÅÇ{Fôž˜N²²¦&Ã2³sKËÊx‹éõÐc2™!á«Ý]]댃‡)))‰”$ö"àjþ5=½f&&}{÷VRRŠÜ5m²Gss˵7îÜCÝ+,íè±!ÒÔÔd´£C#ÓúÒ•”íÑ»6F¬åÊ|Ž¿ßöѲ²²ÆCŒr¯^Ãn«¦P(³4~6IDAT¢ùò9;;9q5 ,Én'ÓÿµµµŸ>575å½}Al æÍõ›7ŸJ¥:޲““—Ï»š0!QRÁIò™9sùÊU\]( çúžz=®¤¤º¹Œé5%IúÉçÏÏðœ.#Ãç4€x+ £‘ð•=oÏé,ëôÙ¤£'Nv×Õ _âîæ*¨ð¶;9êèt]½j%o±aÆÆ455ŠŒ ÝÌŒd¾3½Y,Vòù 'OŸé©§µ)ÒüÛ«ý|«|ùò%ùÂÅó§ÓÍ·Dnô›7Ÿ« •ª´sÛÖíÑÑáë””-ÌÍ—,5I#CC3“MQ[•©Ô¼Ìt½}kôî˜ðˆõê4š›Ëø3'Žyûúgçæ}úôùÏÇ“OŸD)È˯ ^¾80ÈÝÕÕÌÔ„3 ·çô/_¾œ:s6ùÂűΣ-˜º&B^N Žë7o ÊäðäììäÄÕ@â°dºLÿ?~útáÒÀôËð¾‰#6½ÝccvGïÙ»kO ‹Åêם߿ ë. T|2úôîÕ]W7/ÿš5çúe›¶D­ß´¹¥¥…ü§×8ïÀ—y«/ ]½v{ô.6›-êV@GCÉÎÊeïð½Óbª—·‘Ñ`¾/:Žï•䓧ϺuÓ¡©©aO'%mýmçÝëù\ç õþzýzQ@Е‹çÛs§ŠŠvìŽIŒmÏÄ“ÕçÓà²Û›ÒÒâ’‚oÅé¾c’+BÃq\Lοv]Ð@˜ã%ÂÞ‚ôÌÌ÷>466>}V¼.rþÍíf¨±1Ìñ±uôÛq<••“Ó]W—ëJu‡ò}“œä>a_lœªªjO=½·nå_¿±~íêöOC*-˜;'þpBxÄz%EÅžzz3<§9;9 ¯FGŸæ“——ß´a]G¾ßçû&é;Ó»¹¹ùÜ…‹>~ìÚ¥Kà’Å\\Ú? ©D77£›“½#: ã½y ƒƒ÷æЮ`š¤Ló€Ô‚iZ0ÍR ¦y@jÁ4H-˜æ©Ó< µ`š¤Ló€Ô‚iZ0ÍR ¦y@jÁ4H-˜æ©Ó< µ`š¤Ló€Ô‚iZ0ÍR ¦y@jÁ4H-˜æ©Ó< µ`š¤Ló€Ô‚iZ0ÍR ¦y@jÁ4H-˜æ©Ó< µ`š¤Ló€Ô‚iZ0ÍR«B¨ºªò{§Éë„***úÞi@òþRIDATxÚìÝu\S]ðs7VÔF©¤J‰„H€`wa÷c£>v÷c'v'*֣ˆ’Ø((‚ Ò±±¼ïWÇ\1B@ü}?|t;÷ÜS÷Ü»³scXYYB!´wo@!4zô,77÷ôéS­[·nÛ¶¦¦f] u¯¤¤$)) Û¹sÇèÑcÔÕÕ…BŽãu]*Ô= Ã0Œ¤Öºuuuu€_×å@}ã8Ž ±¢¢"552Ì"@ †ãxiiI] GAAÁCBBÖ¯_çëë[×Åüq0@PVÆ©ëbÐM˜0ñÎ;®®.d²ZQQÑŒ3||¼UYqæÌ™ÃÂ-,, …BA]WE¾3fü÷ßM777 ÄBŽŽn`à¬æÍ›×u¹Õ…q¹\[×Å ³²jcnn9~üøçÏŸ‘Édå«…BWW×+W®6kÖ! ÇE"‘¨®ëQqqˆˆ˜9sæ¹sg­­­ëº\€j! …B„ãðð÷kÿBqË8öv¶<Ã)Û²y‹«kû¨;Q]}»nß¶áxò›ä±cÇ 0ðÊå+ǧM›^PPعsç^½z üׯ^K.­põýûö·oï¶sÇÎ#F::¶ž:u*Âñ‚‚ÀÀÀE  ðàþ}¢lR+"?tèÐ!C&N˜8lè°ÊV°ŒÃöpï0yÒ¤-[¶’0’Š“vìèÑnvíÚ5lX@ëÖmÖ­]w>øüàÁCZµrܶm±Ê‡´´I'Íš5kÌè1ïRRê~+Ãü5¸?¬¸¸Çëï†æÍ[Ü»wOMMm÷îÝ qqq¥¥%VVÍûöí+ Ûµk7vì˜îÝ{ìØ±ÅÒñööNJJÄq¼yó111VVVÀÏÏOvi…«Ÿ9s¦E‹æ7nÜX½zÍ«W¯–-[fjj:wîGÇÖÇ œ%úõë/¹bNNNûönwîÜiÑ¢ÅÔ©S÷îÝËf—ªRÁ˜˜CÃ&ĄǣG¦OŸñôéS6»T*}¹#“Ir£?ÞÞÞþàÁƒ»v튉‰ÑÒÒÚ·oßõë×ããã¸\nÿþý§L™Ò»wŸ7®ïÞ½ç߯Õçé~Gj"¡au] þ^^^êêê­[·>|ø0ŽãÄçÙßÿÝ´iS„PNNÎË—/}}»‘óòòY,&ñº¤¤8//OîÒ WoÚ´©žžÞСÃV­Z››yêÔI¡Px÷n”®®ŸÏ—·"«U«VC† ™2å¯õë׉D"ÕïÂqœˆŒã8™L&“ɪŒF£Êfll¬®Îð÷÷Ûµk—••UIIqÏž=÷ï߯¦FùòåËóç/¼½}ø|ž³³óË—/9œ2*•R×Û€EM(’ɤº. 1+€ã¸P(d—–"\wV\?ÿnÄ‹Ð[7åWGD½=|ÔªU+„p%%ÿ©`\ž’h$ ûñZ¨F&!„H$’P D‘ÉdŸO,Æ0 Cîë ‘„B!NìÚðð÷ËþÅÅÅEE…¥¥%B‘PHDÐ70066 ÊËˉ‰NKKþ˜<¯p©*®®®[·nÍþö­¤´ôþƒ‡rW|ŸšzùÊå!Coܸ1##CCSS\‹[·nÆÆÆÆÆÆjjiË­ ŽÇoGÞ9yêä‚ ¡ŠS1šäk]=Ý-Zܽ{G(.>ÞÞÞ^OO¯Î74üÁ_û#Ï3GM­‚k­Õ±lùò—/_}ýú•Édš‡‰‹‹+**²··ÓÔÐÀ0¬U+‡ýìÙ³'?¿ «o×£GŽÆ'$äååµiÓZC]]jé‰'”¯~êä©ØØØœœœÎ;íܱóQb"›Íž;wnDDÄæÍ›ÃÃÛ[Yµliã¸ÔŠ"¡0hネˆˆ»wï.Z¸°E‹\n™¸.<.—ø“¬à¬ÀÙïÞ½{ûöí•+—O:ýþýûõëÖµm×–Íf#™ôåÌÛ»‹CË–r£ùøx¯Y³&%å›ÍníØjÝú ïÞ½c0Ž­\œ]‚öî½u÷é“§6¬×ÓÓçIP}X~^n]—€†O]]ƒJ£ñù‡]J£Ñé †8‚ÔR*¦|u"ŸÇ+--¡3t:ƒÇã–q8êšd2Y$qËʈ¡¥VÄ0L]CÇq øe>¿â'¸khhR¨T¢j†‰DxYG(øþ€U Æ.-UHŸ[VVVÆQW× P©›[VF&“ uŽcÆá°EBa]oj,F G Á•>G ®€\jƒÛ    Œ Œ Œ ŸZ]ür´3g(wî 2¹d÷nD¥VŸôáíôiÒçÏ‚N¸ƒ×uñåÃØlRf&Î`ˆLLˆò‹Œ;„Í›s,¨ëÒ5¿W{Êö‡ºMG•ˆha‰uH"}}~ÇŽü®]öÛüßïÕO@À(¡áclÝJúø!DíӇ׽»òÈX^Ó×ËËCa<^½%¨ÅÇk ,pw/ú÷_"„”•E½rEàê G«ñ{µ§l¨ÃtT܉ˆ– ¤8À÷ô,9}×Ô¬íF¬’ß«Ÿ€*€QB§öè1D@Q¯\©p” öâ–—'23c¯_/45­ëâW‚ uëâ p«® Ò@@{VY¥v"¡ {õj„âóÕ^¿¦ïÛG‰ŽÖ˜1£äرº®!D^À¾gZb¢ÐÎŽôíéãGî”)ˆBQ_sÆ Ò§OˆBÁJK1‘HЮŽ•–Ò£?N‰Ç™L‘‘BH#0"lÙ×ÑÁrs5gΤþû¯ÀÉ ×Ò"efjÌ™Cýï?ž¿?"É¿üËϧ:D;y’ƒèt‘™N~ñBcñbòÛ·”øxÚ©SÔ»w™,²°ø©œ¤OŸ0GíéSÒׯ‚víÈ©©ôDZÂB‡‡*链~Å {öPîÞÅY,¢FJt4ýØ1ê¥Kj¯^‰ÌÍq--Ù—'’—Ç ¢Þº…YZR¯\¡ïßO¹wg0Ä9–—çøqÚùóÔ›7ÕÞ¼ãL&íÂÆöí›-lÙòû&Û¿Ÿ¾?N§‹,-åfJ~ý+-eìØÈd‘••¢­#™/ãÀÚ‰Ô¨(Rn.cçNrr²ÀÝ]2A¢Ñ¾¿MN¸»K¶§¢|+̺š%—KîÖ‘íÊ›]Q‘”¤£bïU²I·IZíâE‘¥%gÙ2‘……ÈÊJàæÆïуvú´ÚË—¼=ðF”7r…=YíºJjZ^ îðán;ð;Ârsáw.‘ˆÕ²%)+«øÚ5É“I_¿–9ÂëÛWɺzzâ×¼~ýJF‘²³µzô §¦Šq–.åÌž­5l%,¬t×.îðá”;w´D•?ÎëÕ‹zíšæ¸qgç¢[·äfDJKÓîÙ“ôõkyšóæq.DQnßÖ’™¤åÌ™ÃY²DI9‰µ®®Eÿý§Jú8Ž•ýøý@©øòe¾§'BHcÖ,ÚéÓâµpuõ¢»w…?QÊ I¥"O(ptT{úTü¶88˜ïëK¼&§¥i{{c……åIÐhE!!XQ‘Öðá–- ïÞE!¡PÇÆËË+Œ‰ÚÚ*Ï”½jUÙô銶Î÷šedhwëFúüY2ñŒºT£}ëî^ôï¿’‹ä櫤cÈnî*”\.E[Gn¿UÒì‚äIQ:ª÷^¤`'RÔ&âÆ/¯ãܹ´ãÇ9óçsøJZIyOV´b¥º®òš*©h0à‡†ŒKÊÊóÝÝy}ú „dσJ!>‰…vvÅ.p‰@õ… É©©7·’C‡8óæ! …±nÚ³güÎBÄÁ…üò%¢R†‘Ÿ?G‘Ÿ=Cñ»tQ”‘Æüù¤¯_­Z•8À™=‘HŒ-[ˆµÄ„%”MŠblßN~ñBy9+•>VVÆïܹäèQ³3‰h'O"„ÈÉÉ´Ó§q½~}ÉÉ“ŒÍ¦8 °½x<^%ÇŽ \\ˆ¦àõî-~K»pA‘±q#VXÈïØ±äØ±’cÇøžžˆË¥=*èÔ g0È/^䔸8,/OØ¢…ìA2S›[éμ=”lñ¶#}þ,´¶.Ù·X­Ëâ~笫YrYJ¶Ž¢þ ¨Ù©Â~¥JïR1EÎÎ!ò›7*6²Üž\ñŠªu]UöSаÁu õÒ%„oà@„a¼~ýèPÂñ’%F B¸ŽßÛ›Á ©7nà,Vñùó¸†Bãré»vQ/]"æÉOŸ"„Ô^¾ÚØ`ÅÅj/^ „Ôž?GÃYXNåΤ¦Vræ 1 JÊΦ9C»|™ÝªÕ÷Hdrñ©S"SSÞÀ¤ìljHíÒ%öiyÙrV6}œÁ(9z×ÖFŠæÈ‘XVQY„®¯ÏëÛWÔ¸±ÈÄ„vô¨xv]–ÈÀ äðaD¥"55Í‘#EMš”<ˆ(â-‘æ÷ì´´ø^^¥Û¶‰š5C!.—MÊÎÆét~§NÔ›7)¡¡Ü±c©×¯#„ˆ!"¸–Vñ¥K8¦|ëZµÂ ¨¡¡ˆD*>sFdnŽ"}ýJ ®Zw’̷¬«YrùÝFñÖQÔ5»¢J)ïW*ö.UQB¤£#®¬*­¤¨'+Z‘ïå¥b×Ui?RWÿ $%4\|>ñ‘£v÷®Ö°aÄb\.åæMÞ Aª'C~ó …H$Òœ0!ef"„HiiÂ-DÆÆä/PH~ùRЪÆf«=|ˆ"?{†3™‚¶må§™’‚p\ha!>‡Ê÷ð 9C~ûVGhi)úqåßÛ›"¹´‚2«¾¨ys\[!ôýC‹ÈÔÁAdbBÊÈ`98ùÞÞœ¹s¥NÄJYX7—‰ˆ,-‰Ë>$Ó$”nÚD‰Œ¤ùZa™UIŸÁ]g0ŠBC[¶P¯_WKJRKJ¢_¾LLWŽkŽI½y!„³XB ‘¡¡Z\±ïç‡H$µèhʽ{¤¬,¡µµÐÆFYjŸjÊ·Î÷ÏÉïyÊ¿ó …*æ[aÖÕ,9Ar®¡QVÙ­£´ÙåVJªô®ê >ƒ…M›ªØJr{rU¶N•jŠ!%4h0Jh°h—/#„xƒ—M„SR4)wî`……ÄeÞª ö‘‰IÉÓóä÷ïÕââˆó—Ä(zñ"âó…-[">!D;{)>Ý N“üáâñˆ/4ÄYXÉc 9- ãr‰o6ä—/Ño-ª—Yyúr‘ÒÒè‡ñ=××G<Uâà[!¡••ÈÌŒ”‘¡öô© m[‘…íðaZp0q¿cG„aßkvvĹRê… H饋BKK‘™VT¤¾~=âñÈ/_ÒD?,°âbƺuˆÇS{ò„~ø°üE¢*§¯ýÀÆúõXQ‘ÐÞ^H\‘Píá_ìpChm0ŒüêcÓ¦e"„xݺ!âAE§*µu„-Zˆš4ÁJJ+V`\.ùåKúÏ×Û“4ä”Rv6éË¢•j$ëY]ÜuíÛÛ¢‚­ós¨°ÙRЯ¾¯ZÞ¥)=]sÜ8ò»wB++žOu¹š[§R5Í÷Ž;n\5ëê-%4L”[·06[Ô¸±ÀÕµ<”D">*¼Óá'Æ^µ a˜ú⟦¦,;;µgÏ„ü=B¸žžÀÁ”“#jÒ×ÓÃõõEFF¤œÉ« ä§¹bBˆ¾{·®©)ÓË‹”“#hÛVêk4=(H×ÔTÛÛËË´i#¹”¸SíÁVË–S¦T-}Y¢fÍNNä÷ïu¬¬tÛ¶! ãVæ\–-E¦¦¤¯_Y66ºFFLOOâ*qµøxÚÅ‹!~·nßcZ[ ­­kjë ‰¸Þž~䈎™ÓË ËÉ‘*®£ƒåç³Z¶d98HÞ5WݬÁêJ¶ŽÜþPa³Ëª _‰K^¥Þ%—Ú£G:ææ:ææ:¦¦¬6m¨ÿû®­]zð RS«V#Wsë¨\Sʽ{:ææZõõ!­ ú`”Ð0w7ð{ö”z¢¯gO„åÞ=¬2ÏÉàõî]rò¤ U+D&‹7æŽQ|áBùeá]º „„öößß::"¾Wñúö-9vLز%"‘p}}îèÑÅ!!ߌ!„DM› ÚµC$®­Í<¸øÂÉ¥‚ví¸Ã‡ãêêX^žÜ³'¦/†•?Îë×O¤§‡S(‚víJNžäwíZÍÍÓhÅ!!|œÉÄ1LСCqH¿cG\]¸ ]ؼ9ñH†JM$¨²u¸¥»v --B8‹%5áŒkiŸ9#hÝWSZYqæÎ­Á¬k~uÅ[Gn¨°ÙeUد¾—¼j½K.¡+*ŠŠ0Gd`À4¨(2’؉ªÙÈÕÜ:ªÖ”ÏÇŠŠ*u¹ø½ÀS•@½ó'>§E(dÙÙ‘rr ãã…-Züº|$Ÿ›T×uüàêEê)-òð!)'GhkûK‡PY0J Ž±œœˆeãÇ×uYà'p]uLhcƒkj–MœÈ3¦®Ë?ë Ì%@>%@>%@>%@>%@>x^üAøB|GTQÂG•~çšËǹÕ’ál®JLGÅ\9¿§e IîÝ’ØI›B®îï«wBÀdÛ‚§_„n- ¸B•>ÔÅhruò¥ªa$¥?¯* ï¼Ìng¬ØIÕßµµæàò¿—¥ý\Mé45z]—D ‰Lviapõþ'%Ô+ªŽD"Ñ»ÔwyùyÆ8ªhˆŠ# âi,.Êü JÓÖ3ÄEŒ…ÕQ‘ªz%^ôøõ[nIÇq°â† …¸¯BR¿¢×Õ`«ÁNUa©T=ãðöý[6›mgc‡aªž1R#«©Y™L&‘^VÉårŸ½|Æåri4Z¥ÊSk(j”º.BÕ©©Uq«©è×m¾*÷7Õ)\_åêI'¬‘îTWmH"‘Ȥjͱ× ÃÔªö³Ô?ãr¹ÿKxyé½^È”úû£b÷½`™ëçl­ú†®ro§P®ø½×ñ¸4ê¯íuµ¼«*©²"ªö¼/_¿´iÕáÏüÀò~Q=-šZ<|üÐÖÚ¶Rå©5\¡J—ÕO\î//ü/Ú|¿®¿ÕÏú*WO:aMu§:iC‘P$@u9o÷+Pµ ÍtëÝ1S’™.…ªeX© ]åÞ®¼~ïumm¯«å]µ »¤J_Œø|¾P(¤QiµY%Èd2B¨þ”TÊŸ¶ùþ´úþ І5¥€ƒLuêÅ<“"¦:”N]!„FCÕ“ù¤:¤Ò(Ía«3êÑy¬úVP)ÚæûÓêû+@Ö”ÜR1‹Z×¥PƘEÍ-­/S8ê u6‡]×¥¨c*q`³Ù £®‹Z®¬¬¬^•TÊŸ¶ùþ´úþ І5%Ÿ-è C­‡—s‰éP§Õ—QƒÁ(++ÓÖÒ®ë‚Ô%Uçè´zt× §ŒÃ Ã!ãwõ§m¾?­¾¿´aMÉ+2ëõ‰C&-¯ÞÌ%0è NYý8ÿQwT%p8:]þ(ántŒï¾Ï_¼” ¿vãþ½û~þòåQR’ï¾995ù즲²2Eå!ˆD¢7oÍœ;¯ïà¡FÌ™¿0:6ö×6ä/@4]~~¾Üpñ_·>ý†»3hoIII…©UCT?å›Oªvâ¿åkÖ*Ió󗯧Ïs8eÕ¬]%Z@åÇ‘UØ] —-÷ïÝ÷ØÉSª¤ùùË—Óç‚9e•®¯Ü¶%þj¡éª\#%mHlŽCø|¾lšDÕòóókü@$NðWâ~¼^fÅg¦Î têà±gßþ*d—pß©ƒGnnñ";;»R«7aRóJä\‰ü}C.oC%6t^~>úy•:žôì?pÒ´/_‘¼WÉM§ÓËôIé”û ˜8uzÈ•«"‘ý|œTeoU±)<<®V~x¬âá‚ ÚÛ@߀¨¼§vt:ýnt´½­dxl\¼¥…y“ÆÕŒ5Ë—iiiÊ]½j8eœÆ+IpÝÆM‰ŸôîÑ}ÈÀþ¥¥ì„Ömܦ6SIŽ™Ÿ3OŸ îæ×•Fûåç\‰ŠDª¶d…Ý!”Ÿ_ðìù ƒq7:fôˆá¦™™ùùô¹àn]»Ò¨•«ïšåˈ)ïߟŸ?dàÉþ¦ÊÞªb/’ÊTŒÉTzx¬êá‚ êu 4hJ)T*µ½‹sL|Â_'ˆÏu½xõjÔðǵ´´Ú¶i-Þ5‚ÍQX„PdÔÝ„·þ³¡¹•%âݹÓî}û<åÓ¥³¦¦fMãW#î½Á.US"ÜÁÞ^_Oiï⢮®~øØq.GUp;ì÷Ôp¼š¢úTùæ#Â[JÔNj‘’µª_;UT6/åõ%Ü‹!aØøÑ£öì?üöm‹æÍ+(ƒ‚¾Q!bÛ‰ShÕ²¥‹%Y¯º¢¼FJÚXÑÒÂüntt‡ö®’‹îÆÄZZ˜¿OMÃQ͈Êw¨Ú³jAN ÏH…KÃ#o“H¤ÀéÓÖoÚüòÕ+{;»ªeÇb1¥¶ˆŠŒXÔœž©ÎOgFˆæµ´°ˆºíæúS²÷bb--,Þ§¦â? [DöxâîÖÞ©]Û•k×GÞ½ÛÙË )Ý£i4›ÃVÒñ¤ŽÃ¡k×o Ð_²¿©²·ªØ‹d3•je‰WþpA¨x” „"!E¢(ƒŽžQ÷¢Ÿ½xѪeK"$áÁC‘HäÑÁ ÇñÄÇW¬YwüТV7CÃ.ÿûonN®‰‰ñð¡C\ç-^Âd2—.˜zùêõ‚¥Ëºtì8gÖ „ÐÃÄÄUë6ìںż™8;¡P(‰””çÒÕk;zYYZHFзOvö·Ó‰9KW®þïVh^~¾‘a“¡ƒyy¸#„ˆ¢ Ú½kï¾·oS7n&.>//Π·hÞ|ôðófÍÄ ²mçî7oß6i2uÒD¢T8ŽŸ»pñVXxIi©ƒ½=±ƒÉö¹}Z[K Ã0ô#P¶‰ð¬¬ìÍÛv¼MIiÒ¤ÉÔI[ÚÛ)*êÙó³²³vmÝ"ÎtÌÄÉNíÚvhï*¹A•´äöMÿ:vœÏlßôê›OÉûüÅËÅ+V®]¹ÜÑÁ!Ÿ°iÛö›7™7kJL¸;!tãrÿfhØ•ÿÍÉÉ511>tˆ«³“lÙF ò}sìÚý&ù§Íñs³0¬›[`Ѭ™d S?|8qêLrÊ[G¶ÖÖÇ162’,s…õ%ܽÓ®mÛ.:>~ünLls++qQÅMM¼=uô°‹%·¾r·…"²í±ïà¡3'Ži¨¿›`úì¹EÅÅyyyA;¶íÙàÝûT}}½aƒuéØQœŽlOC¥}øp¼¼YZL7VÜ,rã#„äÖH•6$½<<Μ –¼Î:ýSÆÇôô±£F¾OMÃqüQR’¸1•ï·B¯þ{=77×ÈÈpÈÀžî-Õ€8Žsy¼ÊîòJDùÎ%·W(©!¿„oĪøÒÅÐðw·ö=»wÛ¾{OøíÈ–öö¡¸„„³çþwíJãFÄoÃnü«§§‡ãø¡£Ç.]½Z\\Ò®M›.:"„0 Åß¿/¹Ê‰Óg.^ºœ“›kjb|üØÁÕU*¼q£F+—.¶µ±‰DWþ½~üô7W—Ù3¦7kÚtÓ¶íŸ<uí?›œÛµ›>å/.—»n㦠›¶tôòœ1å/¿u×.Uâ9žùº’Ø‚?æ'KKK—®\]Æ-›2q┉rss7lÞ"U ë+‰¾|ýúæíÛN^jjjÎíÚÅÄÆ»ƒdSK½-¯ï’ÅÊ·…Âvþ9q‘HäÔ®­P$JLzL¼ÍüüùÃÇ܈£L +«ÀéÓš™™mÛ¹ûÉÓgJöè¢YÊʦLœ0eâ„ܼ¼õ›¶(‰¯¨F*¶!Q§v‰› ¿mjbÒÔÔ”¨¦¸¾ïÐa§vsfÍ´²°Ü´mÇÓgÏ•ïP’)Wa—WÒ Êw.Ùí¨¤^by¥¼ÆÌ .‘Éüüåù‹—Ýýýh4š§{‡ðÛ‘~=uöÜÃG:wì¸réuuõ-;vÊÆ9|~÷Þ}]:u\½|Y «æ‹—¯¸ÿð¡¢3éy¥<¹GbCÇÅ—oè¨{Ѧ&&MÍLÑÏgd_Kjã蘜’ò}GS‡À 3ض*{±/Óh4 …¢|o•ÓÓž¿Pt|–ÍT|ðãóùJº™T¤ŽÏrw|w77q¦Ï%”²Kétº’ŽB"‘:´oÿþä ãH$RYYÙ“gφü}ÔC<² ÇÁ¹ó†< o_„P‡öíù|þ¹ ÇuîÂÅ韚š™¾NNnÕ²å³/róòtut^¾~M|k”̸”RQy²²³BŠ"‚‹—.÷ìÖmÜèQ!nùÁ!!­ZEíݳ»o—.!P°+h߬iS‰¡1ñ¶¨¸¸â8EEZZZ<.wôˆá=»w#òÕÒÔܰykAA‘K»6môë‹ …;ƒö1èô+W»úxO?!äîÖ~ñò•¯Þ¼‘3—€p„Д™³$Œ= Çq¡P(·† Buõö&òÅq|Çž Â¢"mEmÑÜŠB¡Üø°‡¿?B(.!Á@_ßÖÆúñÓ§ÄåóùÊ[Ò§K—žÝü+µùÄ‘ÿš1K*|TÀ°ýúŽ5rZàì+WKJJÔÕƒú÷û1iŽjio§Ãbpöü…áC•uwkÏãñÏ]¸Ø®Mk"¾¯w—ÝüBIOž „Úµi= o„P(Ú´÷ÇäýÔ,ZÄ,>íÇ¢¢¢¿&,735E6¹Îçó%¦[a}B÷bbÕÕÕÚµÃqÜÝÍ-:6îÕ›7v66â}GrW"úƒT}•ôj…í,3ÃÉb2[4·zø(‘8»Ÿ ¥¥ÕªeËoüÏÕÅ™HÙÝ­ýÂ¥ËÏ_ºäÐÒ^QO?zTaQÑÚ•+ÌLMB†MšÜ çóù†Éß®MkÙ-(YTåmHT„F¥º8µ»CÌ!#„¢cã:yyJ@8þáÃGEÅ ¾p±»ŸQS7W—Ÿ>ݹwÏÖÆZÉ…$R®ì.¯¡®®¨A*yúL2ŸÏ?zâÄÐÁƒæÌš‰êêã“—{øèqɉI™´Ÿ‹åΡÒh4§vwcb:wôï>]:zÉÎHuo©Ôôtuy<^ii©†††¢8:Îápd×A´<—Ëåp8D;¼zý:äÊÕ®®HâƒOvo …²=¸†FîñY6S©ƒ?BhÔðaæÍšÉífÚZZR:>#„äíøöâÖ¨x”À)ãШœUõòèñìÅ G‡GII|>ß½½ÛÍF´ú˜ž^T\ÜÒΞhS„PÛÖ­ƒ´´0Wg0^¼zefj’œüvú”¿Þ¼}ûêõkg'§wïSý||¤².ã–))1JRS#+Šð5+«¨¸Ø£C{q7·c'O‰»“ƒÝ÷Öa1YDËJ¾%®ŒU‡/à8>iü8„H$*((Ìüü9ê^4BH(¹ˆ?®˜L&‘ì׬¬’’’Î^žâ‚yyºË%à!´ðï¹Lm-„Çß§¦ >èȱ™Ó¦(jg¡P$™/q-@qQ©TjëV­î?xÔÝÏ!wÿ>1á)Þ ¶¤d?Sqó¡;ê¿ç0µ:œ5jd€ã¸¦†ÆøÑ£wïÛ/‰Ö­Z¡¦¦&>: ‰ƒÂÇôôâââ–ööâ»Ú¶qÜ{àP($"8ü(ñ¯ÄæÐ–Ø‚c4KAæç/wî[P(^Ѱ‰!1åÓ»G÷–vv–ææÓ&OB?k*¬/Bè^L¬s»¶B€#ØÙÚÐi´˜Ø8[kkqSÿ¼+•÷ñ+%Û!$y‘¶øN©ÎíÚ]»ñ?‘H„aXüýí]œ‰ß­ðrwGëèéqâôÇõ´ÆÑi´ƒGŽöîÙÝÞÎÎÒâ{³¤}ø  g I$’Üò¨´Ëÿh%Ow÷[·jkk¿OKûüå‹G‡_³²PùG*Âqdؤ‰Üâ}øø±°¨ÈÃÝMœÑªeKD"‘ò ÇË PÙ]^qÊ w.Ù^¡¨^’íVÂhWpä­°pO÷¡PÀá´mÝšÁ`„ED(%dffõìö}l„aX7??©QÂç/_ »úx‹CºúxoßµGQšÚ´—iEgZ=ÝÝÿÙ²õû†NMûòõ«‡{‡/_¿¢ŸG JÎ8H%«<J+ã–É."¦Ì ” lÝÊaÜè‘R›Iªo§ú$ÛÓ“’¶îÜ-÷ø,›©øà/ÖÈ ÑÇOŸäv3ÙÈŸåîø•%°ÙlâÜŒ’86ÖÖººº1qñööq ZXYééé«à¸!$ÂEÄ·ðùK–J­Ëår[ÚÛ½xùÒÁÞ¾¸¤ÄÎÆºEs«—¯ßhkk …BG‡–RY—qË4ŠÊ£««ƒúòå+q&LÒñÓgšššè#„´´´Ä)0™Ì2.·¤¤„(*‰L’,9™ôÓ[¢á*ˆ#‰D¢—¯__ºríÍÛ·ZššÆFF XDÄÑÔÔ”Z%¿ ý|©*1æ Rû¹£ˆB–æzººDˆ­µ5›Í¾tõÚ”Iµ3‡Ã–›¯’¢º¹º8XRR’•ý-++ÛËÃ]ô£ü"\”›—§¼%étºìfR¾ùÄ-lia!®±V‡ö®‡ŸÐÖÒlni)NGrÎ!TT$¿Øìï"‰ËF¼•h–òt^¾~råjòÛ·ZZZF††ÄyPÉùI-–æêeK.\º²iÛ¡PèÐÒ~ܨ‘¦&&•ª/qVõczúÝèq`lÂýq£G‰›Zv“I¾F)ÙêêêCG§|9ø¬d/’ê]ÎíÚ>üúM²þ»÷ï† "–jk—§Ìb±ˆ”õ4 Emõòe/_&š¥UË–cG051QŸÍf«««Ë-*m(n¥Ö­ètZt\\·®]£cb--Ì›4nôåë$±ß‰p‘––¦Üâ!„˜ÚÚâŒè4BHù%ÂËS~þòe¥vy% RáÎ%Û+´XÚrë%™rI__[Ù‡÷©iïÞ¿÷þýÍÐ0q`Ĩ¿g*Z…¸ùP_¿üb:Ù ëˆüt%nvÐÓÕãp8%%%r/'×צ—”ñeŽ{ß÷»Ö­ Ft\|·®¾Ñ±±–æ5úüå ªèŒÃOEÊÍ¥Ñh4MIœïýYRÊ)•]D´ü‚¹³‰g.af` Oµ$“²{«ÜžF\— ÷ø,›©äÁ_ìCúGE)H¥&{|V´ãT%pØôUxjÊÝ­}ÔÝ{cGŽHzòxÈ€Rs88Žë²tBÓ§Iö'„•JmåàrùÊ›ädccƒagcó01‰©­mfjÊd2¥²ær¹º,]Eå1Ð×722Œ‰wlå þùË—oüoÄÐ!-¬¬B……âaDAA•Je0R#JEoU‰“_P°zý?=<ìÞIìŸ>¿ÿ@vÜ*þ—Åd"„òòóÅË/ÈGòF¸rG¾¦&&|>¿¬¬LQ;—––V¶¨NíÚb–øøIFff³¦f&ÆÆ’«ë0Y*¶¤ê›OQí$]½~ƒL"eg»}'Ê»s'¹kƒÅÀéÓ¤XT*Uõ-¸fý?^žsfÎÐÔÐP´--,Í›Ëãñ^'¿=1dí?›öïþé¤l…õ½G¥R—.œ/þµÉä·)§Îž{þò¥TÙŠŠŠÄo¥)ßkW.—j^EílblÔ¤I㇉‰:::Zššö¶¶Ï^¼ R“è–T*•N§+Ù£--ÌþM4Kòù‹—Öü³ñÀî]Jâ+ÿ>§¼ Å+’Éäö..ѱqþ¾¾±ñ ÝüºÊÝÝp—[<â^ÂÂ"qM¿~Í*.)Vq‡ªÂ.¯¤ATß¹${…ÜzI¦\Â.Óצ+¹z14<‚F£íÙ±ü£7>}ö|gÐÞ¤ÇOˆµ0 #^o ô B¹¹¹âI^^ždL à ôõBùùâ8ùùù4Mëçét1}mz [úëûÏÚ9:6Îß×'6!¡[Wé ­Ê\ÂÓgÏZ4·’í²…¡Ñhyyòæä|Ÿ‘»Iï­òzÚÛ”wHñqI¶•Gn ÊzHÞŽ/™~ÅW/²9lñn¬„g·â’’Óç‚Ëʸní]%–|¯€¾–¦fii©M‹Ä߇cãâI$’£CË‚ÂÂÛQwmZ´ÀqÜÖÚúczzâã'Ž­d3*ã–)/O¯nÝîܽ—øø±8D$ >O"‘Ú»ºèkjjÆÆÅ‹—ÆÄÅ[Z˜Kõç’ÿ<Ç‹ðŠãà(óóg>Ÿß³»?qÒ ÇñW¯ßüˆ)?}}--­»Ñ1âѱñ?'.ݤ’>¦§kij2 ÅíL–›¯’¢ª3-í'G¼¡+%ˆ=}þüab’o—ÎJâˆQ©T⌃’ŽWÑÒŸú¶Üžöïÿ)ýdQ%S%Ÿ_r?§~"³ã—«`.A(òù|5²š¨¢†4kÚÔ°I“›aá-¬¬tX,‰©`BH$‘H¤þ}û=y*'7×ÂÜüÃÇW¯ß˜4n¬H$jܨ‘¾þ›ädïNE"‘••%†aoSRè'•¯H$ÊËÓ¥SLJ‰I6oíо½u‹2çaRÒÛ”wúöid`€êÓ³ÇÙó0 kneùàQâËׯ—/ZX>Gôó´ŒÌÌ^a.264¤Ñh‡ŽïêÓE$=~úŒøŒyñꕺ:Cn $©w÷ngÎ_ ‘Hv6Ö÷>úúõ+’÷œ b•/_iiiÛþÃÇWþý·o¯^JÚYQ픵C{×öη„ÜÚÿ´¢HD"‘TlÉJm>¢ ¿xùRö{†£ƒÃ¾ƒ‡mmmÚ»8óø­ïFÇœ8s–8ùJ|ky”˜dhØÄÎÆ†h„c'OçääZYZ¤}øxåßë“Ç“]”ûÇq¢Y=æçã-áŸ>%šåå«WÄÜ H$jܨ1ŸÏß¾'¨³—›Ã¹ríZ ++ ¥üô\…õ}÷>õkVÖý%#P©ÔV-í>ìÛ«'™L>|ìDw¿ä·)i>Šû ÃB“ 7±³µQ²-·óO]WÌ©mÛëÿÝÄ0l@ß>âMyûN‰D²²´Œ¿ÿMròâù+éi5âóøÛwuîèÉæp®\»N\ ‹Rt@IÕHõ>#ÙÙlm¬™ÚÚ‡ŽoÑÜJWGGrâWMIñúõîuú\0ÂqëÍŸ>ñ:9™˜ãQ¾C/ŒŒª°Ë+j%ÔȰ‰Ü^¡¨^âv+âpõµ•=,áÅ«W™™S'O’ Tg0\]]"£îŽ=ŠL&oܲ5`ȧϞ%¿M!"P(”QÃví%“ÉíÚ´¾}çî§Œ ©”)ʘ‘#víÝG"‘ZÚEFÝ}”ôxÿžÝJ £¯M-âpõÈåWQHÖÖLmíCGµhÞüdžþ¾çÊ=ã >žp¹¼WoÞDDÞqsumïâ"÷ E¬&x¶O¶ã)ï–²{«lOëÙ½Ûõÿý§è“E*YñÁ_–ܤ ·äR;þO-€”âp8tZWh‹¹»µ¹rµ½«‹d|ÉaKw¿® ,âöÿn6nÜx˜Ñ~\¬çÐÒ>2êns++Ç©Š…y³éŸˆ¯>’Yp¹Ü Pƒú;pføíȨ蘇‰‰B¦¦&Ó&Oòòø~V¯îÝÁí;Q7Ú4 œ>ÕÎÖFj„%Uòò·?_®hMMÍù³Ïœ¿tà––fGëÖ,Y±êÁ£ÄŽžŠRèÕ£;—Ç»}'*2ꮃ½Ý¬iSV¬]_>öû¹Iwÿxx*†aúzz}zöì×»Sn;?yö¼²EusuqjÛöàÑcö¶¶â+Ï*°j-Y©ÍG,ݽï€ì¢ñ£G½{ÿ~ó†u8ŽSÔÔÆŽùÏ–­<=ílm¬,,ìllŽœ8É Óï ’l„ÿÝ md`0q좳I~o@é·šššóçž ¾tà–¦f'/ÏëÖ,]¹Zr ÒhÔ¿g:wnÏþt:­¥ÝˆaC%kWa}câã)jjmZ·–Šãâ䔸øIÆçϓǻpérЃ­[9ü5qü²Ukˆ¢ZZ˜ÛÙØ9^^_EÛBq;ËßF-š[iijb&¹)gÏœ~åßë·Â#ôtu¦Lšàèà ¤§!„þž=ëÔÙà=ûÒi´–öåÍ¢ä [#ÛP²"†¹¹ºÜ ïо½LwE?¶MQñzøû …ÂðÛ‘¡· ›4 œ>µ¥¢—Ä…BššUØå•4ˆ¢ ª«£#·W(©¡„Ã7PzQ­°p*…"û˜ ïN¢cb?|ü¸|ñ¢}‡-_½¦ƒ[ûK™ø}<1jx@YYÙåk×®þ{ÝÕÙiÚÕãÿš"•ȨÃBÁ¥«×‚/^ljfúÏÚ5ÎíÚ*)Œ6½„Ã×Õ(ÖH¹µw½FL$H-•}->ž¨©©5iÜhèÀÝýýÄ#uE£Ñ¸\®Ô3ÂíA²Keû¶lO£Ó×ÿ÷Ÿ¢O©dwË{rö¢y+êfR›¸ÔŽ/™2–«ôqôÙß²?¦431CõCaqaAaAS“¦u]PÚæûMë»`鲿–VÆŽF=}ö|Ö­{wlÓ•¹Zªvü¦mX%. 04ý]«ø ÅZvëþ+>§ÄÚˆU×A¡YLS‹Y×ùµ$w|IÌ%°9l5JŧjMYY™äø½üi›ïw¬ï—¯_?¦1l(QlÑ÷ÉI¼®jñ;¶aýÄáòš4bÔçߌ–¤§ÅH+È«'ÛB¡”••iihU?©zKjÇ—Tñ(B®àá²µ‰/àÓ(ŸqõÓŸ¶ù~»úÞ ˜ÔÈÀÀÖÚZêD[]Õâ·kÃz‹Çêh©W?Ú¡£¥žÌÖ“íN!S¸|n=)̯ »ãKªh”ÀfkihÕŸÖáñxšêšõ§< Rþ´Í÷ÛÕ÷Æ­PŠšÚ”Iøž®ŠNÙþj¿]Ö[Ÿ©É¨ëR¨Š©Éøõd»S(”âÒâzR˜_AÎŽ/¡âQ‚.S·žLû „¸§,MuŸG¯óT*•Ë媑+þMƒ†GY˸ejdµú3Šç øõª< Rþ´Í÷§Õ÷W€6¬)>Ÿ¥ÃªëRTSS½ ¿ žl}5²¿Þ\MY˾?U),2¬ÚI¨§÷ü{qÀqüÂå u] 1J:ph]õEpHpÝ_> €ú F F F F F ïWbãã]ÅíÜÜûrâôâ1jÄÒ¬ììj¦_~ER’Ò?eì;xˆÍæÔl²r Ÿ“›[¯ ü‹š´ Í¢bIT¬{× j™ô³K9¥’bÞ}x+ ¥‘Hd«f-Úµvß};çîë¼uƒ,œ-XÊS_¿z%‹ÅBq¹¼Ä¤¤»÷ðùü cÇÔu­kçŒOû4 ¿ºúïñk­5X`{[Û½»vè°Xu]'UKòÛm,¨Ò£„Ä' eeemmÛ“Éd©EB¡03ç˘=:¶4aÑñ=ÿ½=1ÝEyêNíÚ5nÔˆxÝ¥SG„Йàà?d”ð'c±Xînnu]ŠúUøIŸqÈøòѤI3##cCC#©?m½&‡µ»ØëˆÈ4™BÃø•ͬMëÖyyù’óº\oçž }û»¸{vôõ›8;9%åÒÕ«íÜÜKJJÄÑ _±f­l‚©iÆLœäìîÙ½O¿KW¯*OV¼ô|HHÏ~\Ü=  —LË厛ôW¿ÁC e³»xér¯þ\Ü=u/ILAO˜2ÕÅÃkÀЀ¤ÇOˆÈSg"„¼ý»;:»*IAœÈËW¯ÆLœ0z¬’˜!Ç÷:ìÝ­‡‹‡×Ô™_³²dË©¤T¡c'Où÷îãÔÁ£ßà¡·ÂÊ«¯z“SR¦Î ôôöñèâ3mÖìééŠ @¼Hÿôiüä).îžýy””ôìù‹!#F9»{ö88>á¾*q”—GI³Hž#PÒ+T¯;BèÒUû'üî¤G d²ƒ®N¥RÕ~VÄEgÞõs6ü˜Ë}õ™œ’2ÁǪ²™edfÒétƒ.Ù³oÿ™sÁ}zõܸ~ݬiS?edN›5»£§§P(ŒKH â¤Êx›òÎÏÇG6Áù‹·´³[»r¹u‹«×m¸­$YbQðÅ ›¶tòò\¿fµ½­í‚%Ë>J$ …¹ }ùúõ`Г)•WðŶlõõö^»jes+ËÙóæGÇÆý(ÆR7W×K•²Kç/YJNŸòB蟵köîÚQa ¡Uk×;:8Ìœ6Ey̧Ïì;xÈ»S§5+–ih¨oÚº]QkË-Õ©³çvî òéÜyݪÖ-š/X²4áÁƒJ¸´´tò´œ2Î’ –,˜ÿíÛ·¹ *ßîÏ÷òôX±t1§¬lμs,ìÙÍåÒÅ\wÉŠ•ªÇ©f³(é•ÚX½TíŸðÛËÍÍÍÍÍ=wñŽã8Ž_þßÙôôôü‚‚YÇŸ·^uãᇂ‚W¾ú®=õné…×CwÆÙM>uóa®TL\\+'—?––²KKÙùùù·ïÜñìâ³xù ñÒ¯YYëþÙtæ\°x­Ûwî´rrÉÍÍ1vÇñ#ÇOxyû Ùô×oÜD¼‰D#ÇŽ>f,ñVQ² £¯ß†M›Å‹FõîÖ£•“Ë—¯_.]ÖůÛÇôO²Õáóù^>];.ù{áâ€Ñc‰b:zŒ¼výF+'—üü|q ¿åä(OAólðù cr¹\Ï.>«Ö®×zô„‰’¹H6Žl©x<ž—O×[¶ŠcŽÿkÊØ‰“%ת°ÀŸ5µ  ÀÙÉ‰Íæîno’“EBBÈÓ½MOO!$ +‘‚HDDpuq®0fFæç¢¢^=º—×Úß_QãË–*óóç‚‚?‰êûûú¾zóFîꊊablÌ`06lÞr7:º´´ÔÞÖvÅ’Åв߀wvjG¼Ð×Ó“}+T‰SýfQÔ+*»¹B*öOøÝI_½H¡P©TZI–Ŧqû»™Å¾Líkû*KXÂæFÜ»?Ã_¿K3Sß¾y£K!„aÈÐÐP|%£Ø£¤¤ÃÇŽ?}öŒÉd6kÚTC]ïÜÑkWÐÞgÏŸ¾|õŠ˜–¥§«+~m oÀåñJKK555%[XPˆÒÓÓ¯¥¡¡¡­­…zöüù¤ ã>’ðàA{é«2 ‹B#ÆŽ“ gsØ!– ó+LÍ—¤Â˜yùy!}ýòòëëë+ÊQ¶T99¹!]òÔÓãp8%%%ššš*˜N§Ù¿÷Àá£/\,\]œçÍ´´°PRw©1„Ü!E…qªß,ŠzE%6çûÆR±ÀïNf” F¥Ñhí­µ4°2 ,â »³­é“Ï—zçþ±¹]Åɪ§nog';2ËÍÍ›:cVîÝ6®[ËÔÖFÅÆÇGDÞAY˜››™šÜŽ1Ð×g2™.?¾YJ§—gjbò#µ\uu†¦¦fnžÂd ôBùùâµÒ?e<ñ!´uÓ?Žqñ ›¶n¿xö´ÔWÃF BÖ¬6lÒD2¼¨¸HŦP”NW=¦¾>B(''W²Öªoâs4/?¿|õ¼<&;DP^ {;»]Û¶p¹Ü¤'O÷88mÖì[ׯ©^Œª©f³(éªç%ÞÜ*öOøÝIŸq R( …J!ŸžÛù¿Û±ZTôïs6—]uÿü²ÞìM¨Jç–+åÃÇ\odÀ0â¨JLz,^ÚÑËëntLDäïN §sÅ—èã8~ýÿ9:8(OÖÄØ˜©­!Naåšµ'OŸA6i‚aØÂ¿ç¦¦¥¿"•‘±‘‹É,.)nÓÚ‘øKNI WSSCªQ=%1 Y,Ö›7Å‘o††©ÞàÆFFLmíP‰ûn……ÙÛÙVªÀïÞ¿÷íÞ³´´”F£¹¹º 6äËׯί}xTõ›Eyg«ÂÆR¥ÀïNú#ŠF£ã¸!ä`n¼´÷ÀÕ×L›¼ÎÍ»²²¯ƒ¹ŸÏ£ÑèUÉGK sƒ±nã¦!…¢˜¸8âvƒÄ¤$?_ßνN9K"‘&M'wu È·ƒ½Ý­°ðg/^=°!di®,Ù cÇlß½aXëV­â’ž<5<àÄé3Dš-í{õè¾÷à¡îþ~’3ö eâøq›¶nÏÊʶ·³}“üöÈñË/RR;â“ã^tŒ™™©SÛ¶ª§ $&…B=bøÎ=Ajdr»¶m""£Ò?}R½Á)ÊØÑ£vî "‘É­ZÚß¾õ(1éÐÞ JØÌÔŒÇã-Xº¬o¯^%¥¥GŽstp`0~ùȪÙ,Ê{E6V…ýéQ‚~“/ÙŸ›¨©©9·hrmU¿kqïFùz›7a ‚/ÙŸ ô›T)#9X,Öέ›wîZºrµ‹Õ»g gO3.2ꮟ¯oGG“‰‘H.NNrWÇ0,hÇŽµÿl ¾pÑÈÐpãº5mÛ´®0Ù‘ÃBá…K—.\ iÚÔlÓúuêâQBhÖôi·#ïìÞ»oÙÏŸ #† ç/†œ:{ÎÄØxéÂ}{÷ŠWT;{{§¶m×oÚ¬¡®~7"LQ r×UsÌÈeee—®^»rí_çëÖŽ4Yõ63r„@ ¸tåê¹óšš™mZ¿N| êÞ±eóÖ;—®\Å`Ð]çÌšYS]B¹ê4‹ò^¡bÝ%7w…ýŒ8ƒ6tàP„@ÀÏúö¥ (Ÿ¸Y২ÆÒÖil`¨¦Vc'”0ÂÁ¡å²E «Ÿ5ú' a  –žKPS£šªzïó1==9%åïÙu]ä€þ ø¨zñ]-;}.øö;&ÆÆNíÚÖuYýð‡¨§£„§NS©ÔõkV‘H¿ê·­¨2蟀?D=%„ÿw£®‹€BÐ?ø&ù`”ù`”ù`”ù`”ùêé=(!‰’S’3¿dÖ¯LýF †±¡±u k£@Í€Qøý$§$çäè ¼ú‰©ª¨¨HûÇïIÖÏ4qÏþ–a˜M ›Úk@ƒ£ðûÉÈÌ036ÓÒҪ͇Ñét&“YŸÓÄqœN§çäæÔZ›<%€ßÏc2™ ðÚË”ÇSWW¯Ïiâ8Ž#ü[Þ·Zk@ƒç/Áo©–‡¿ ÃÈdr]—РÀ\øý`?Ô~¦õ—Ë7é¯~ƒ‡"„.^ºÜ«ÿwÏÁÃGFÝ‹F]ºzµ›{II‰x•AÃW¬Y+•NrJÊÔ™žÞ>]|¦Íšý1=]¼èØÉSþ½û'Dn……Rg=ÄÝâð S¦ºxx ôø Çñý‡{wëáâá5ufà׬,E•Rž£lÊbDœôOŸÆOžââîÙoðGIIÏž¿2b”³»gŸƒãî‹#˶Õ÷&åñvî êÑ·¿‹»gG_¿é³“SRµ’òvxùêÕ˜‰“FUž£Ùh5Òª埬ÅÅ%Ûwïž5m*1rMÿô !dkmM,µµ±.((`Kôð†Ã0‡É@‘%tòòÄH¤È;Q⛡aææÍ­,+•n‡ö퟿|©ÊK(Î]¸èËׯƒö°˜Ìà‹!ÿlÙêëí½vÕÊæV–³çÍŽëèé) ãˆUÒ?e¼MyG|5+--v<`Èà¿g"„ü|}srs>ÚÞÅEy<Ý;Œ3!$Š–­Z]PP ®®~ôø‰}û.^0!ÔÕÇgì¤ÉŸ<•Z‘Ïç+ÏQ6eâªI#†õëÓ!$ —¯Z³fÅòÞ={ˆßjjhÈm+O÷!n7pÆô€¡CˆÔX,æìy òòòÓ?¥Ëk%R¬_ŸÞÆ F)Ú:DŽbŠ¢M<±:­*IÉ7æééWþ½¾qÝñ祆††x"áþƒ‡§ÎžëêÝ¥¡Þ1ˆ!%j’œç%tóó›3A~~¾ŽŽÎë7ÉéŸ>ùûuý”‘Q©t1Õîh߸e[dTTGOO3S„ÐûÔÔ‚‚g''6ûû/{¸»­^·A$uòò:yúŒH$"‘H·ïDuéÜIêa´f¦f cÃæ-#†9µmkokk¿Ä!ôáãÇ‚‚¿®¾â˜þ¾¾[v쬰 â?==]„@(ÌÈü\XT$?aÖÃß_öó,óógå9ʦ,›»³S;â…¾žžì[@ ¤­H$ñ‰‹ãxnnî‡é7þ»…á"¹­¯¤Ä£1å9Šã+Œ&U§U¥z—¢ïÍÇOnneééî.^Êfí?pùêµfM›Îœ>­ ß¹•|Sß¹{›’g͘S#iîÚ³½Â41 ƒ«5HÎ(ÁÝ­½ººzhÄí¡ƒÞ ³³µ135­ì(!+;›N§khh(öìùóIÆ<|$áÁƒö..……E¡cÇIEc³Ù;zí ÚûìùsCCׯ^MŸò—T]]#û÷8|ôï…‹«‹ó¼Ù–99¹!]qL===‡#y•ƒ\²ßïóòóBúúzâ}}}Ù+ÌQ6eY EÉ[„’¶ÒÔÔ|””tøØñ§Ïž1™ÌfM›jüøI!¹­¤¼$â¨<ÇŠ ÆaW§U%)úd-,*Šˆ¼8cšTxÊ»÷ó/ùüåKWïsçH–¶3€š%g”@¡P|ºt¾6tÐÀЈˆaƒW!Ý„û÷[9´¬ð˜µuÓ?Žqñ ›¶n¿xö4qëÚ†5« ›4‘ŒF§Ó-ÌÍÍLMîFÇèë3™L—ß­%ÙÛÙíÚ¶…Ëå&=yºïÀÁi³fߺ~øøÉËÏ751!¢åæåÑh4ÙŠ‚‚å¥5Ð×Gåää–'%ïž~Õs¬%m•›—7uƬÝ»m\·–©­Šˆ¼£¨•–-þéÒEí $GU¢U§U%)š©"®íêã#¹(óó穳fq¹¼ÕË—ùKLðT¢þ8sî/MsÇ®­*æ£@Í’v¶›_×§ÏžÝ ÿú5ËÏ×§’i¢„¢îEê߯˜†Mš`¶ð﹩iiç/†±˜Ìâ’â6­‰¿ä””Ððp555„PG/¯»Ñ1‘w¼;u’ýí»7ÉɾÝ{–––Òh47W—áÆ|ùú•Ãá1µµCÜe€ºfog‹"‘È¡üü|"\î…x’Œ Y,Ö›7Å!7Cålè“§O“ß¾U^N …2zÄð{‚ÔÈävmÛDDFwÙÉFS”c ¢P(ŠÚÊÒÜœÁ`¬Û¸iÈÀB¡(&.îá£D„PbR’§»‡l+ÙÛÙªÒJr¬B´Ê¶ªÙ3ú%%%/_¿ž0vŒTøƒ‡H$“©-y›‰SÛ¶²'q*›cõU*MUb6Ô«2uEþ(D"uõõ9|^ů_‹—¯$^P(SãSþ>lh¥Ê1kú´Û‘wvïÝ·lñ"@pþbÈ©³çLŒ—.\зw/"NGG“‰‘H.NN²)¨«3vlÙ¼uçÎ¥+W1tWgç9³f‹ÆŒ!.]¹zîü…¦ff›Ö¯#.lܨÑÊ¥Kö8¸tå*w7·•Ë–Ž7Ay9ÇŒQVVvéêµ+×þuqqÞ¸níØI“åF“›cÍ1l¨Ü¶b±X;·nÞ¹;héÊÕ:,Vïž=.œ==b̸Ȩ»~¾¾²­ÔÈÀ@ÅvP”£*Ñ”\#©b«ŠÉ½ÇáQR’H$jåà ž“›+‰æÌÿé¬Ê­ë×ôtuk|‹Ô 0•¨9q8,2lèÀÊ}®×‰Á#Z.[´°úIßWL\LÇ6T*µ63%îú©çi …¸„¸.ºÔf˪ààßi~òczzrJŠŸÊ'2@CO€Ú¡Vý$jÇésÁ·ïÜ116vj×¶®ËꘊOã¨ñLëöºUÀu €šõÛŒNœ:M¥RׯYÇA÷û)¿ã¨A¿Í(!ü¿u]P_À\‚ò–€šßËÁo> €Q fý6s ˆÁ\Ô˜K€|0—~?$ Çq˜KÅåqiTZm6  aƒQøýèêè¾O{oÝÜšF«±ODÉ[¤n Þ …B¡Pˆª}±:ñ/Çãr¹rÓ¬B.8Ž¿K}ghhXSm0J¿ófæiÒ&>äóùUX]öë»8Dö…êIÉ}]q‚%Rûñ¼(‰ÿ0ÉÅ’‹äÒÕѵ0·¨‰6„`”~G$ÉÒÂÒÒ²®  \½ù`.á ‰’S’3¿dr8œº.K=Â`0Œ ­[X“0.€0Jø#$§$çäèÔæÏ ikk×ç4qÏþ–a˜M ›Úkø}À(á‘™afl¦¥¥U›¿‚A§Ó™Lf}NÇq:ž“›Skm¿%üx|“Éd0µùŒ§®®^ŸÓÄqGø·¼oµÖ&ð{Ó±ŠZ"ü0 #“Éu] ¨¿`.á€ýPû™Öó4aäJÀ\ø£aÃkó’Nø­À\Â~DQ‘Ú¼œ~;pˆü#À¼º20• ü4Jˆwtvÿµssï;hȉÓgD"‘xiVv6B(ýSƾƒ‡Øle葌¯Ç;}.xPÀp·Ž:ûùŸ<å^LLuª$ÎWöE4™H$ºr)`ôØö^<½}FŸq»RU®qæ‹•_™ðŸïÛ£×·œÉÀˆÈ;î½%ÿö:Œ5\pÆ‘sÆaýê•, !Äåò“’vìÞÃçó'Œcok»w× !ô)ãÓþC‡ 诮Ψf æ/^òàᣀ¡Clm¬KKÙ÷bbfÌž;îìáC‡ÖT%%K^}/\—0lÈà cÇ”””ܹ{oÞ¢ÅYY³F¨©×8Es gγÙl©ÀŒÌLcã9³fˆCŒŒêº¿ @9£§ví7jD¼îÒ©#BèLpð„±cX,–»›[ÍfŸöáû÷¶múÇ»sg"¤wÏ+Ö¬=xøhÀ!55O^ƒ%¿ñßͨ{÷N;bok+.ðšõvì êÓ«WÍ6N Âd®KÚ 2êîç/_ÌÉþÏŸ¿XZ˜»¹ºV?ÓšÚ‚•MóóçL„‘‘qÅ ’à\ (Tñu mZ·ÎËËg³9’ÓÚSg"„¼ý»;:—–œ éÙo€‹»çÀa¡ááDàçÏ_ÆMúËÅݳÿa’’¤ÏËÏG553“ < çN¹\.ú1—þîýûÑã':»{öê?àÆ7%#_¼t¹Wÿ.‡Œº-· ²§&L™êâá5`h@Òã'âh§ÎœõëÙÛÅÃkÖÜ¿%&9:»æäæJ%uâôé^Ý»‰‡„1£Fº8;½{ÿ^I•¹<ÞÎ=A=úöwq÷ìèë7=pvrJŠdÙ$‹¤¼œªTYŠì'«y³f}{õìÙÍ_6ræ—ÏFFF!¡PXÉîôûÁ0 Ça2ä«x”‘™I§Ó ºdàô)!„þY»fï®DHðÅ ›¶tòò\¿fµ½­í‚%Ë>JD-^¾Â½ƒÛò%‹Ùö‚%ˤ·nÞœ©­½pé²È¨¨²²2"ÐÞÎnåÒ%tzyŽSfÌrhi¿vår+K«%+V>xøHœé?[¶úz{¯]µ²¹•åìyó£cã*¬ÑüÅKÝ\]W,YTÊ.¿d)råêÖ»|ºt^»r¹ººúÂeËeWÌÊÎ~›òΧK©pS“}»v¶mÓšx+·Ê{öí?s.¸O¯žׯ›5mê§ŒÌi³f+/’ÜÀªUYöº„ÝüGîãÝ!ée™™ïß§>£‹O¯/\º\×WTÚ÷ZW&2YrÎ8”••—%òxܤ'OŽ?áÓ¥³ÔÁÔÎÖ!äìÔN_O!$ ÷:B(?¿ÀÔäûÇgú§Œç/^V¸âã'OÇMþëâÙÓV––â@[ëÉ&,X²´ôÇMz¹yyâ”sssi4š††F£F¡ kV6i"™fQqQe[Hæ’—Ÿ'ÍÈаYÓ¦¡ÜÚK†LO?yú̬iSõå-ˆ”§Î˜Õ£{·ëÖ2µµB±ññ‘w*[Î*WSðìEq¸xQVvö—/_[;¶*ƒ0„•J«Âª¢UgέlR¦ijZ~ ì§OéR!•M ª©g/š3µµÃ""Ä!+׬=yúL…+¶hnEQS»rY*üù‹â/ܷ¾ß1ãøÿnݲµ±Á0ÌØÈˆÅd—·iíHü%§¤„†‡«©Uú±Ó&ÆÆ,&óVh˜8$üv¤Ü˜#†ý{ã’ â8¾+h/‰DòñöV”þ‡¹<ÞÈ€aÄ!”˜ô¸ í\å*«þY˜ü6eÒ´éOž>‡Ü‹‰mѼyõŒQoÁS•@‘*þŽqiá½è33S§¶m)Ê„±c¶ïÞƒ0¬u«Vñ IOžŒp¢¢‚††Æ´)mÛ¹ëkVV—Nõtu‹JŠãâþ»º~õ*q´+×þUSSs°· ¿ýøÉSâÆ …2qü¸M[·geeÛÛÙ¾I~{äø‰å‹U¡: e¸±[wì$“ÉŽ­¢îŤ§Bò>\ôë=sÎ\?_Ÿ6­KKÙQwï=}þ|Òøqf¦&ŸdN,ÍÍ ƺ›†  Šbââˆ@“’455+UÎ*WYî}Ù¹n-¬¬-[>nÌh]{1±‘QQÛ7o¬ÚDBS¯TšªÄ„ßq%ª8Jp°·wjÛvý¦Íêêw#ÂB#‡„ —.]¸Ò´©Ù¦õë44Ô+% „FÞÂÊêÌùóÛwï)..ÖÖÖnÕ²åþ=»\Åq¶ü³áð±ãÁ.6nÔhõŠeâG$6T œ¿rêì9c㥠ôíÝ+6>¾ 51lhYYYð…‹—®^ëæ×uÚ_“/_I¥P¤¢a¶sËæ !—®Ý¸uÃ0+K˵+WôêÑ]Iâ,kçÖÍ;w-]¹Z‡ÅêݳDž³§GŒu·wÏ•-gª¬ú=d2yÏŽí;öì9züDQqqsKËí›7vhß^•uW0• `¹¹¹¡°È°¡kì‰È5(6>~êÌÀ°ÿ]¯ì¥•õêõ##CÖ ô·„lÞ¶ãaltÃ8oÓÆ± •J­~RªËÏÏ×ÑÑ©çi …¸„¸.ºT?)h`‚C‚aºõ»ù‹—=~Bü6:&ÖÖÆºa <@•TñŒCÃÓ¿oŸ}ikk753‹KHˆŽ[½bYõ“­'Ýãð«3­ÛëT×%€0JønÌÈB¡ðòÕkÙß¾5iÜ8pÆô>={Öu¡jLƒ™ùàw@‘ú>Jpws{úð~-dD"‘&Ž;qÜØº®ñ/s Ê[€\0Ýúg€B`”JÔ÷¹P#`.@À\䃹„?‰DÂqædqy\•V›Í¿%ütutß§½·nnM£ÕØ'¢ä­R· o…B¡P(DÕ¾‰€Xø—Çãq¹\¹iV!Çߥ¾344¬©6€F ófæiÒ&>äóùUX]Ñ@È}¡zRr_WœàG‰Ô~GÇã©««×ç4qÇþ-ï[­µ Ô[pæõVËC„߆ad2¹®KõÌ%ü¹°j?Ózž&Œœ€s HÃ†×æ%P_Á\Ÿ ~(R‘Ú¼œê38þ¹`^]˜J©¹„Øøø©3Ë—©©™š˜ôëÓ{dÀ0‰D, ûßõÆ¥ÊøßÍ›£GŒPWg(JZ2¾’ðx¼ —._»~=#3“N§[43=r¸—‡G•«$Î÷Ýû÷R/”—DõÄ5Ql’Zƒ!ù×%py¼}ûŸ=q¬‘8°C§.r‰‹Š¬\¦¿Ã\†Á@Hî‡õ«W²X,„—ËKLJÚ±{ŸÏŸ0vŒ½­íÞ];tX,„ЧŒOû4 ¿’Q‚Šæ/^òàᣀ¡Clm¬KKÙ÷bbfÌž;îìáC‡ÖT%%K^#5QM¥_;}²ž9Ìf³¥·múG*dWоF PCƒ;Jpj×Nü»K§Ž¡3ÁÁÆŽa±Xînn5›}Ú‡wîÞÛ¶éïΉÞ={¬X³öàá£C†ÔÔÄ/¹¢&ªÙÆùÕd¯KÚ 2êîç/_Ìt7WWÉuÃoGfû¶c˦Ên£:œKØ´!4cZ`Å ’à\ ¤Êu mZ·ÎËËg³9±ññŽÎ®YÙÙ!bÖÝÛ¿»£sù‡Çùžý¸¸{N~þüeܤ¿\Ü=ûö()I*ñ¼ü|„PS33ÉÀÁúwîÔ‘Ëå"„ˆLß½?züDgwÏ^ýÜøï¦dä‹—.÷ê?ÀÅÝsðð‘Q÷¢åVA\rñ‹ S¦ºxx ôø‰8Ú©3gýzövñðš5÷ïG‰IŽÎ®9¹¹ª4¢T½|õjÌÄI£ÇK<åß»S~ƒ‡Þ —\Qn޲‰py¼{‚zôíïâîÙÑ×ozàìä”q½Ò?}?yŠ‹»g¿ÁC%%={þbȈQÎîž}ŽO¸¯¤Ø²Ÿ¬æÍšõíÕ³g7åõ-..Ù¾{÷¬iS«§~Â0 Ça2T%— 0tÉÀéSþBý³vÍÞ];ˆà‹!6méäå¹~Íj{[ÛK–=|”ˆZ¼|…{·åK³9ìK–I%nݼ9S[{áÒe‘QQeeeD ½ÝÊ¥Kèôò§Ì˜åÐÒ~íÊåV–VKV¬|ðð‘8Ó¶lõõö^»jes+ËÙóæGÇÆUX£ù‹—º¹º®X²¨”]:ÉR"0äÊÕ­;wùté¼våruuõ…Ë–«ÞˆRM´jízG‡™Ó¦ „N=·sOOçÎëV­°nÑ|Á’¥ ¨’£d"{öí?s.¸O¯žׯ›5mê§ŒÌi³f‹cþ=ßËÓcÅÒÅœ²²9óÌ]°°g7ÿ•KsyÜ%+V*)6VþÄ„ïztó5b¸w„d–I8x䈾®^ïž=°ßÊ÷ZW&2üáäœq(++c³9!›ôäÉÑã'|ºt–:nÚÙÚ „œÚéëé!„„BáþC‡‡ø÷ì@„O—ÎïRÓnܼ…Яïø1£B8Ž/]¹ª  €%q}€¦¦æ¾Ý;ÿÙ²uö¼jjj¶6ÖmZ·vuvrsu•|þ]—N‰”»úøŒ?ñàÑ£.ÎN`ßÁCÓ&O7f4B¨«7ÇßèðÔÉ•×ÙÓ½Q$¡P´lÕê‚‚--­‡½‡ Œâóù‡2˜(¼Ÿ¯oNnîÁÃGÛ»¸…Bå9ŠAq˸3¦ B¼e±˜³ç-ÈËË'ÞŽ Ö¯Oo„@(\¾jÍšË{÷ì!~[PXÈRðUûÆü1=ýÊ¿×7®[Ó€?J1Ô`«•"g”Ð{À É·n®.Ä'™ïRSóóóý»úŠCí¾»pé2O÷Dˆ®®BH J­kogwêè‘oßr%%%>~|/:æäé3ÆFFÛ·l²nÞœˆÓÍßxaXîþÛwíA½OM-((pvr">°Bîn«×m EÊK+.’žž.Q¤ÌÏ_²¿}“,Wïû*JAy¹º8/2?.((ð“HÖß×wËŽ¡ s'‚Z¼`BÇñÜÜÜÓoüw !$¿WÓÙ©ñ‚±I½Šj¡ü{³¢EÇOnneééDIŽ;woS²â¬sj$Í]{¶W˜&†apõ" ¹£„í›7ê°tB† U9÷\XPˆÒÓÓ‡hhhhkk!„XªÝY`` ßͯk7¿®¡×o’/_¾pÉÒ+ÎKõtuËcêp8œ’’’ÂÂ"„Ј±ã¤’bsØÊó’-Rö·l©\$ëRÙ&ÒÐÐ ^äää"„tut$“% _aŽâDB’’;þôÙ3&“Ù¬iSŸÙˆB¡(y«D& ‹Š""ïΘVÙ/ xš*EÎ(ÁÞή²W¥è#„òó LMLˆôOÏ_¼¬pÅÇOžŽ›ü×ų§­,-Ŷ6Ö“'LX°diéûñróòÄ)çææÒh4 â6¼ kV6i"™fQqQe[ø´–Ì%/?OI|›H__!”—Ÿ_^ø¼<¦©©©z޹yySgÌêÑ½ÛÆuk™ÚÚ¡ØøøˆÈ;•­£,LÁ³Å᲋ˆ«/»úøTçsTѺ3çþÒ4wìÚªb.0JBÍ<ÈÄØ˜©­!Y¹fíÉÓg*\±Es+ŠšÚ…ËRáÏ_¼000i߀ãøÿnݲµ±Á0ÌØÈˆÅd—·iíHü%§¤„†‡«©Uú±Ó&ÆÆ,&óVh˜8$üvå$—±‘S[;T⾆[aaöv¶•ÊñÃÇ\odÀ0bˆ€JLz\ý²¡*}†GÜnãè(.IOUTåßq .-¼cffêÔ¶-…B™0vÌöÝ{†µnÕ*>!!éÉ“QÃNT4PÐÐИ6å¯m;w}ÍÊêÒ©£ž®nQIq\|·Bׯ^%ŽvåÚ¿jjjöv¡á·?yJÜXA¡P&Ž·iëö¬¬l{;Û7Éo?±|ñ¢*T‡B¡L7vëŽd2Ù±•CÔ½˜ôôO¨Úß))ÊØÑ£vî "‘É­ZÚß¾õ(1éÐÞ JåhinÎ`0ÖmÜ4dà¡PGÜ<’˜”¤©©Yâ!ŠæJJJ^¾~=aì˜jN$Ôø7õJ¥©JÌßî1šð‹Tq”à`oïÔ¶íúM›5ÔÕïF„!„F….]ºp1¤iS³Më×ih¨W8J@1¼…•Õ™óç·ïÞS\\¬­­ÝªeËý{v¹:—_¾·åŸ ‡¾p±q£F«W,?"iİ¡àüÅSgÏ™/]¸ oï^±ññU¨ÑˆaCËÊÊ‚/\¼tõZ7¿®Óþš´xùJªÊçø3r„@ ¸tåê¹óšš™mZ¿N|u¡Š9²X¬[7ïÜ´tåj«wÏΞ1f\dÔ]â^†*«ì=’’D"Q+‡j¶Éï¦!,77!6t`=¹©øcÕ÷êõ##CñMƒçCB6oÛñ06ú×¢®ý¥ÄÄÅ´qlC¥Rk';B~~¾ŽÄåœõ3M¡P—×EÁOWÀ"8$fV¿›¿xÉÑã'Äo£cbmm¬évíç(ž @¹*žqhxú÷í³ïà!mmí¦ffq ѱq«W,«~²õ*G)ŠîqøÕ™Öíu ª€ë€£„ïÆŒ! /_½–ýí[“ÆgLïÓ³gËQ Üï§üŽ ú?Jpws{úð~õÓ©‰Dš8nìÄqck­jµŸ£˜KPÞ2`fõ… À(õ}.ü:0—@9˜K€|0—ðç"‘H8ŽÃ\‚,.K£Òj³Y ~‚QŸKWG÷}Ú{ëæÖ4Z}"JÞ u›ñV( …BT훈Չy<—Ë•›frÁqü]ê;CCÚjø}Á(áÏeÞÌ<íCÚÃć|>¿ «+ú¹/TOJîëŠü(‘ÚçEIü‡I.–\$—®Ž®…¹EM´1üÞ`”ðç"‘H––––ÕO @ƒW/@>˜K „H$JNIÎü’Éápêº,õƒÁ064¶naMÂà+ Ò`”ˆä”äü‚|]ƒÚüÑ碢"mmíúœ&ŽãÙß²1 ³iaS{íh(`”ˆŒÌ 3c3--­Úü­&:ÎüñÛßõ3MÇétzNnN­µ  !Qh x|“Éd0µù§®®^ŸÓÄqGø·¼oµÖ&€†NU‚†£–‡¿ ÃÈdr]—𻂹Ð@`?Ô~¦õô„Il¶ü‡ÕÄÆÇ;:»ºwöæñxR‹Ò?e8:»::»æäæŠcfeg‹_‹ÿœ:xô<ôø©Ó@*e"¾ÜLå.RRHåÙզʖ!$‰.„\ =¶½W'OoŸÑã'†EÜ®“Â×Iõ+„•_™ðŸïÛ£×·œ©ðÛw¢†ŽÝů۸É%=~¢â¢ßœqTMù>Ÿ?gþým›6nݱcÕÚõ»¶m! >߯w/uu†’„JJJ¢cc½;w– ¼¦<ûõ«W²X,„›Íy”˜¸gßþ§Ïžoß¼±ÂrÛÛÚîݵC‡ÅªTm«œ]«Bùÿ^¸8.!aØÁÆŽ)))¹s÷Þ¼E‹³²fPûå¯ýêWHÑ\™sÁl6[*ðÁ£Ä•k× è×·mkÇ[aá/Z|âðA3SSå‹~c0HTIù(!åÝûOÿ¬]ÝÒÞ¾  `õú |>ŸB¡äççGÇÄÚ¤55//ÏÙ©]… uòòÄH¤È;Q⛡aææÍ­*÷ÃÄÚ·þòeejó/usu]±dQ)»tþ’¥UÈ®£§§P(ŒKH ÂÓ?e¼Myççã­(ñ=ûöŸ9ܧWÏë×Íš6õSFæ´Yå_7ÿžïåé±bébNYÙœy æ.Xس›ÿÊ¥‹¹<î’+¥Ê|1dæ-¼<ׯYmok»`É2©¥¬ìì·)ï|ºt‘ZÑÔÄdß®mÛ´F:{nçž ŸÎ×­ZaÝ¢ù‚%K<¨ly¦Ì˜åÐÒ~íÊåV–VKV¬|ðð‘xѪµëfN›BøŸ-[}½½×®ZÙÜÊrö¼ùѱq¥¥¥“§Íà”q–,X°dÁüoß¾Í]°Pn T-”—\õ-+{]Bnþ£F ÷ñî‚ÐOË222E"‘y³¦âófM?ù"‰”,ªëK ¤}¯ue"@e•Ÿq “É;·n^¶rußAC:´w]¶xBh瞽Ϟ¥JB £“—ç¡¡½zt'Bn……÷êÞ­²jܨ—Ë-))ÑÒªÄ,º§{‡ñcF#„„BѲU« Xªóg§¯§çÐÒþntLW„PDd$‹Étuq>}.XnâÜ2nàŒéC‡é°XÌÙóäååoG ë×§7BH ._µfÍŠå½{ö¿-(,@(î?txè ÏDùtéü.5íÆÍ›’#³ÏŸ¿ „ŒŒ Õ‚Ïç>v<`È`"?_ßœÜ܃‡¶wq©TyºtêH¤ÐÕÇgôø‰uqv"õëÓ{ØÁ!@°ïà¡i“'3!ÔÕÇ›Çãï?txÞìYùùùGöïµ´°@™™™†\¾òêõÙ@>Ÿ¯zÉUß²ªc.*.Bii–w0-M-‘HÄfs”,ÒÒÒT½CÖ+‚Q Š~z^‚™©é‰#‡ÄocããMMŒÍLMÓ?e¬Z·.%å«‹ó²E‹ïæç7gþ‚üü|×o’Ó?}ò÷ëú)#£RÂÜõ.y‡…ìu”žîˆzzº!PX…ì:yy<}F$‘H¤Ûw¢ºtîD<ÚVnâ‹ÌCá8ž››ûácúÿn!„Dø÷›HÅŸñúzz²o%o¬x—ššŸŸïßÕWr0h·PøÓͨć…BUT‹ÌÏŸ ü$ñ÷õݲc§ø­Šåéæï'n–Ýý·ïÚ#NÁÕÅ™xñ>5µ  ÀÙÉI¼E<ÜÝV¯Û`blÌ`06lÞ22`˜SÛ¶ö¶¶öKlóòòe+UrÕ·¬òïÍRß¿ú>ùð½…‰«û0)NVÊÎÝÛb³fÌQ^¹‹22>IoúÌòýËÄÄTQ‚põ" j^m ‰;>y¡P8kî\M [6ü˜¾fÃE«¸»µWWW¸ºfgkS…+ó²³étº†††T¸[ÇNâ?ÙµTœ9Pž]çŽ^……Ïž?ÏÊÎ~ùê1© (ñGII͘١SçãÆ>~\ê¨N¡P”¼•TXPˆÒÓÓ‡hhhHÚ4iŒÊ7ÞÚºs×µ7rrrBº::âp===‡#¾ÌBÅòèéêŠ_èH¦ Þ"……E¡clj7ÇòUkN?²¯:Cýï…‹=ºøü5cæûÔT]]Ù@É+,¹ê[Võyum-m„ä5(%%¥$IÁP²HÅÄë!8ã¨2…Ï^¼xù²o—.ÚÚZ¯ß$§¦}غñ só1£F.[µZ ¨©ÉY‘B¡øté|34l蠡îBîßoåÐRö¸vüÐÁ_QÉì,ÌÍÍLMîFÇèë3™L§v’'È%åæåM1«G÷n×­ejk#„bãã#"ïT¡ú¡üüS"$ýSFaa¡CK{q#CÃfM›†FDtpk/¹îÇôô“§ÏÌš6ÕÑÁ!”—Ÿ/N$7/F£ijVn’<7/¯<…Ü\&;\kÔÈ!´aÍjÃ&M$Ãétº½Ý®m[¸\nÒ“§ûœ6kö­ë×äŠ×Ò×׫‘’#ųPâpñ"Sc‰ôácz‹æÍ´ù'#CC …¢d‘ò|eΜ[Ù*T˜¦©©™øõ§OéR!•M *$.¡¤¤äfhØàÄ!ee\„—ËÅq\Éûùu}úìÙ­°ð¯_³ü|}*[š„¢îEêßOvQ›ÖŽâ¿šª¼lv½¼îFÇDDÞñîÔIÉ/é}øø‘Ëã F B‰I«Vcc¦¶vXD„8dåšµ'Ïœ‘Š62`Ø¿7þ'Áq|WÐ^‰äãímldÄÔÖ +¿9âVX˜½mE™Kß_€ãøÿnݲµ±‘ý€162b1™Å%ÅâÍ‘œ’þîý{ßî=KKKi4š›«ËðaC¾|ýúøÉSÙ@‡#™Z”Uæ³PCC£¥]øíïϤ‰D‘Qw‰+!”,ú­ÁS•U#.áà‘£ãF"& š[Y6kÚtã–­C ~rùJWñT«0»Î½N9K"‘&M§$Kssƒ±nã¦!…¢˜¸8⮄Ĥ¤Ê~ ¦P(ÆŽÙ¾{°֭ZÅ'$$=yr h·T´ýúFEGÏœ3×Ï×§MkÇÒRvÔÝ{OŸ?Ÿ4~œ™© BhìèQ;÷‘ÈäV-ío߉z”˜thoP¥J‚ºrí_555{»ÐðÛŸ<Ý»k‡ÜO?nÓÖíYYÙöv¶o’ß9~bùâEf¦f<oÁÒe}{õ*)-=r옣ƒƒu‹² ‰Ù{ …R#%'È=£/;—€7fôìyó·ïÚݶM››¡¡YÙÙÇ !"(Y¤bŽÕT©4U‰ ¿ã¨29£„ŒÌÌÔ´´9³f~¡¦¶sëæ•k×­ýgc{—åK)IŽD"uõõ9|^òr<%/_I¼ &{gLùkø°¡¿®¶f×ÆÑ‘Ådb$’‹““’tX,Öέ›wîZºrµ‹Õ»g gO3.2ê.qï@¥Œ  /\ºtábHÓ¦f›Ö¯suv–ŠƒaØÎ-›/„\ºvãFdÔ] ì,-×®\!¾£dÌÈàÒ•«çÎ_hjf¶iý:Uî_•²åŸ ‡¾p±q£F«W,Sôà£Æ ‚óCN=gbl¼tႾ½{!„vlÙ¼uçÎ¥+W1tWgç9³fª«3d¥R«‘’£J>ÀÝ­ýŠ%‹?r媥…ùŽ-›LŒ+\ôƒ©@•`¹¹aœÄ\.IDAT¹¡°È°¡áÇóodpÀ‡–Ë-¬~R¿‘Øøø©3Ãþw]ülÊßNL\LÇ6J&º~⎞zž¦P(ŒKˆëÒ©Kõ“üQ‚C‚a*ò'ÓÓ“SRü~Ù)ðëÀS Æ©U?‰ãô¹àÛwî˜;µk[×e•¦è‡_iÝ^—  ¸.Pe0J(wâÔi*•º~Í*8ªþŽà~?%àwU£„ráÿݨë"Ôw7·§ï×u)ªæ”· T|i |*£@•Á\h `.jÌ%@>˜K ‰DÂqædqy\•V›Íh0`”]Ý÷iï­›[Óh5ö‰(yk€ÔmÄ[¡P( Qµo" V'þåñx\.WnšUÈÇñw©ï kªM%€¼™yÚ‡´‡‰ù|~VWôr_¨ž”Ü×'øQ"µÏ‹’ø“\,¹H.]] s‹šhcÀF   ‘H––––u]h8àêEȣȣȣȣÈW~CpHp]õHù(aèÀ¡u]ÔÁ!ÁpÆòÁ(òÁ(òÁ(òÁ(òÁ(òÁ(òÉ%Lš:ÝÑÙugÐÞ*¤ïèìš“›K¼ÈÊήԊªÇ¯¤äV­f“ê'9£„œÜ܇‰‰êêaáÕIÚÞÖvï®:,V]×U!g”A"‘æÌ𙑙ùâåË*'Íb±ÜÝܨTj]×U!g”p3,Ì£ƒ[¯Ý Æ­Ó Rsø’sï8Žï?tØ»[¯©3¿feÉ]åØÉSþ½û8uðè7xè­°pEJMû0fâ$gwÏî}ú]ºzUÎåñvî êÑ·¿‹»gG_¿é³“SRÄKχ„ôì7ÀÅÝsà°€ÐðŸçr¹ã&ýÕoðЂÂB„ÐÅK—{õàâî9xøÈ¨{Ñ’åœ0eª‹‡×€¡IŸë*ªð'%d~þüìù‹ݺÑh4/°ðÇ•'qâô™}ywê´fÅ2 õM[·ËÆ9uöÜÎ=A>;¯[µÂºEóK–&½zn\¿nÖ´©Ÿ22§ÍšM, ¾²aÓ–N^žë׬¶·µ]°dÙÃG‰Ä"¡P8wá¢/_¿ ÚÃb2ƒ/†ü³e«¯·÷ÚU+›[YΞ7?:6îG¾KÝ\]W,YTÊ.¿d©êU*5©÷·ÂÂ555;zy"„ü|½CÃß<}Ö¦µ£¢õy<ÞÑã'ôí»xÁ<„PWŸ±“&?~òT2ŸÏ?|ìxÀÁÏDùùúæäæ<|´½‹‹l‚Ýýüˆh]}|FŸxè豎žž!n7pÆô€¡Cˆh,sö¼yyùL¦öþC‡‡H¬åÓ¥ó»Ô´7o!„p_ºrÕë×oŽ:h` /ö<4mò¤qcF#„ºúxóxüý‡O<!äéÞaü˜Ñ!¡P´lÕê‚‚uuõ «4`Òs 7CC;zxB6›Ó®Mƒ!5/%#ósaQQ¯݉·†õð÷—Š“ùùsAA_W_qˆ¿¯ï«7oä&ØÍ߯<©îþoߦ“‹Ì :ÇñœœœG‰I7þ»…á¢w©©ùùùþ‰ Ú=wÖL„ÐÆ-Ûþ»joggfj‚zŸšZPPàìäÄfsˆ?w·7ÉÉ"¡!äéÞX]OO!$ U©Ѐý4—ð>55åÝû”wïÿwë–80üväü¹s­Ÿ—Ÿ‡Ò×ׇèëëKÅÉÉÉEéêèˆCôôô8NII‰¦¦¦Td=]]ñk}.WZZª©©ù()éð±ãOŸ=c2™Íš6ÕPW'â Š×ÒÐÐÐÖÖB={þ|Ò„ñIx𠽋KaaBhÄØqR9²9l„Kæ^ Uª4`?n††Ñh´½»vId"äɳg;vïy”˜$µZAAñÂ@_!”““kjbB„äÊS|ÑŸ‘¡!‹Åºqó¦8‘›¡aRy1µµC%îk¸fog+·@âÛp¿þ¿ÿB>~äòx#†C„PbÒcâ…‰±1S[;,¢üÑ+׬=yú BȰI Ãþ=75-íüÅc##“Y\R,®]rJJhx¸šššÜ’¨R5 +ÿ€|ñòå§ŒŒiM–\¬®Îhïêq'jüØ1d2yæ-Ç }òôiòÛ·D …2zÄð{‚ÔÈävmÛDDF¥ú$•…B;zÔÎ=A$2¹UKûÛw¢%&Ú$[ Èm{»[aáÏ^¼8z`?BÈÒÜœÁ`¬Û¸iÈÀB¡(&.ޏ‹!1)ÉÏ×wÂØ1ÛwïAÖºU«ø„„¤'OF 8qú ‘¦CKû^=ºï=x¨»¿ßÄñã6mÝž••mogû&ùí‘ã'–/^¤¨iT©Ѐ•Ï%Ü £R©^žR1¼;w.((HûðaåÒ%YÙÙKW®úò5kå²¥âcFŽ˜—€ýP×E5ïWlYè*ÐàÁ% Š0„áp¥+4h?Í% ø‚Ø@ýй¸Ê¼ò=Œ@¥ÁT4h£„ò+¾»ÿð¡{goñ_G_¿€ÑcÏ]¸ˆã8V™Ÿ?=q²¬¬LvѬ¹óÜ;{ï?t¸R J//?Ÿxñ-'§ ‰€ê€3аIŸqµbÉ"âV{÷øÉÓ½òùüÑ#†«žGFfæ‘ã'úöîÅ`0$Ãsóò’žŸ/Îçó_½~Éår•¬[×½À¯õÓ¹_ ËÊʈ™.÷ä鳓gÎvîè%Nœ:=xÀ€YÓ§!„|ºtÉÍÍ;z⤳S;b­Þ=z Пxmcmj×¶ž®®8ÙðÛ‘šžîB>]:EDF>{þ±•ƒ¢‚òùü“gÎöéÕsÞì@„wçÎ͘ùôÙs©8ÊKd½{Ÿy'âÅ‹gýú RiD ǽrõRVvŽã-íåobp SúìE C >Rrg§Ù3f|ùúµ °Ð×»‹8¾¯w—{‚0 #ÖrvjWž”¼ëÂ"n{¸w‰DeeemZ·fÐéwî´vl%ùÇÛÏ_¾õð÷Ç~„øûú>}ö\œ#†aÊJõgSòÕߺ…ÍËW/²²¾^¹v¹_ß4*Ëã^¹v9+;«qã&Ö-l­ˆa\½ [Å÷8l\·öûí2lÒ„¸’ñ}j*BHGGGMOO—SVVRZJ¼ÕÐÐP’kjZÚûÔÔ÷©©·ÂÂÅ‘w¢æÌœ¡h•¼ü|„žžž8D__O*Nnnž¢Ri*-ÏŸŒJ¥öë;àÊÕKYY_¯\½Ô£[¯ÿݼž•õµqã&ýú R©ŠV„±4xÊïq@!{[ÛF ¤V#>¡ LMŒ‰¼ü|¦¥©ù} •yý1)Pv;’F£íܺYüü¾çÏ_ìÞ·ÿñ“§R«ëèë#„rórÅ9ææåÿHöû*JJU×í\÷”|¨Óiôþý^¾’•õõøÉ#"‘¨qã&ýû ¤ý8QÙ4 U|ö¢‘¡¡¶¶vøíÛâ°ˆÛ¶6Ö*®q»C{×¶­[·nÕŠøØ¿•B ¿I"‘BùD̸øâ…a“&,&óVhXyŽá5[ª?Jëßo`ãÆMT"à©Jа©I¾‘:{-yï€ÔjT*uôˆá{öí'“É-ííîܽ—ôøÉÞ];0 “]K¬†Љ‹731iÛ¦õËW¯323ÿš8A2YuuuWç;wïŽ5’L&oÞ¾}ØàÁOŸ?û.…( •J0lϾýd5µ¶­#£î}ÊÌ$‰sTRªºnç:¦Ê- t}Ѐ!yùyº:º ¥Â4áw Á«øEF W®ý{>ä’™©éúÕ«œÚ¶•ÓÞζm›Ö›¶nSWWøïFhD•B!înÔ¹cÇèØ¸?.]´àÀ¡#+×®skïºlÑBâ¡ DŽeeeWÿ½~íú §vëV­˜4uz•KdQ(”ÆWb˜J€ ËÍÍE…E†™™´ql£äj5ðûÊÏÏ—¼¨³F…¸„¸.ºÔuåüÁ!Á?=U©®Ë€zDÙ= ÁøJ„ë Á«â= „àw aƒ¹„?¯˜K€® žÄ¤1óAeÀ(<˜Kø#ÀO8¨¸ ò•Ï%H$Çágƒô+æ¸<®*Oqðû*%èêè¾O{oÝÜšF«ãC¿¢+çk*¼Š­Êë:/3‘Žãâ²D"‘Ü¥8Ž¿K}ghhXk¥PûÊG æÍÌÓ>¤=L|Èçó]~~£•Š üm @6¼ÂjûùAV2o0¹ëÈ\¡ââbÙ’c?H†K’GâŸé@!]] s‹ê´€zî§3––––u]$Ô põ"äƒQäƒQäƒQäƒQä“3J¸ÿðáŒ9s;úú9uðèÚ£×Ò•«RÓÒTI+ýSƾƒ‡ØlNu T©Dbãã]srs+› ±bVvvÍ´"ÐI‚ö˜4u:Žã³gLßòφ±£F¾OM<|dXÄí Óú”ñiÿ¡Ãl»:ª‘D*dok»w×ë—æüÖÔ$ß„EDå/„Ð?k×ìݵC8eÆ,‡–ökW.·²´Z²b僇ªˆØ‰Ógö<äݩӚË44Ô7mÝ.^|1äŸ-[}½½×®ZÙÜÊrö¼ùѱq¾Þ]’ß¾ýòõ+çù‹—Ùß¾õèî/™fðÅ ›¶tòò\¿fµ½­í‚%Ë>JT”`]o/ ö”Ÿqøüå B¨YÓfrãYZ˜(¿¨ÐÎÖ!äìÔN_OOØ¥SÇ¿g"„ºúøŒ?ñàÑ£.ÎN•M„ÀãñŽ?1 oßÅ æ Ž4ùñ“§!@°ïà¡i“'3!ÔÕÇ›Çãï?tøàÞ=T*5ê^ô°ÁƒB‘‘†Mš´mÝ:.!HS(î?txè D!}ºt~—švãæÍ6­å&èéÞ¡®7PKdïqÿ›„ÄoÿˆDÂÊfÐÍßOœBîþ/^¾ªrY32?õêѽ|ÔÒÒÒÔÔ¬lzººâ×ú§¤¤¤jeÍËÏCéë—Ï1èëë/ ‹B#ÆŽ“Z…ÍfûzwY¹v]IIIæçÏ™™=»ýtº¡° !¤'1o¡¡¡z“œ¬(Á*4ð;*%6±0ovõßë==¥" …ÂëÿûÏ£ƒœ› ”g›—gjbòýun.F#>†+•Á@_!”““+™ ñ¢Q#„І5« ›4‘\…N§wòòÄ0,&.þ}Zšuóæ–?ýر>B(?¿@œfú§ŒÂÂB% þâ-Ô?q˜2ibdÔÝà‹!’8Žoܲ-óóç‰ãÆ"„H$2B(??ŸXZá}·ÂÂÅéüïÖ-[ Ã*›ÁÈÐÅbݸySr34ŒxaldÄb2‹KŠÛ´v$þ’SRBÃÃÕÔÔ´´´\ïܽq;²G÷nRiš3µµÃ""Ä!+׬=y挒ëz“µä§Ï¼®>>oSÞmØ´9:&Ö×»‹Žëó—¯×oüïí»wëW¯$¾…[˜7#“É6m>lè“§O“ß¾¯N&“B÷¢cÌÌLÚ¶%¯\ûWMMÍÁÞ.4üöã'O‰;*›B¡Œ1|çž 52¹]Û6‘QéŸ>‰M?nÓÖíYYÙöv¶o’ß9~bùâEÄR_ï.ë6nÝüºJÕŸB¡L;fûî=ÃZ·jŸôäÉ ÝÊþ1i6tàP"(þþƒ3ÁÁÏŸ¿()-ÕÑÑqqr7z¤•¥¥xoüoïƒyùùînncF5nÂí[ÿéëé•––Μó÷ÓçÏ5ÔÕïF„ÅÆÇO¸gÇöÃÇŽ¿|õªq£F“&ŒëÓ³g¥‘*®H$Úèð¥«×Š‹Š\\œÇ5vÒdbE„ÐñS§Ï_ ÉÉÍ5160¬ß>ÄZ…EE»ú·kÛæÐÞ "„([Øÿ®7nÔÇñc'O]¸t)/7¯iS³‰ãÆuõñ&¢)Jhð‚C‚åŒjŠä'q]ו ¿ ù`”ù`”ù~á}}înnOÞ¯ë  Š`.òÁ(ò•Ÿq‰DÉ)É™_29N5ƒalhlÝš„Á@¬òQBrJr~A¾®‚_…¿±¢¢"mmíLÇñìoنٴ°©ëÊøUÊG ™fÆfZZZ$|;lhèt:“ɬÁq§Óé9¹9u]3¿Pù(Çç1™LƒaX]— Ô0§®®^ƒ â8Ž#ü[Þ·º®€_è§i"aFü.€¬|.û¡®‹jޯزÐU ÁƒK@aÃáJWhÐ~šK@ð±ús p•+4xåz€Jƒ©hÐ$F åW&H›5wž{gïý‡K…ßøÐ½³÷·œ©p@páÒåÑ&útïÙ³ÿ€ésâTOVEÙáyùùâ×â¿N]ýFü¿½ûk"iþn $¡WPP E±wìýìg/ø)*bïbkíÎ;±bÅr6lØPéd³ûý±ºÆ4zõý=<ß³™™¼¹Ï:ìÐÑcR©´ U«ªNVÜ—/»öîËÍÍ-JËÙ¿–~mû zøØqš¦Ù<4MŸúëï?ÆŒõm×Á¿s×Ñã'\¹z-?Åæ3ªEwB¨r“¿ã (9%%úÑ#mmíË‘‘cFŽÈO¡AÁ!> èѽŽ]NNÎͨÛÓÿ7{ÒŸãzö(J±ù7oöÿ˜å„Baô£ÇÛvî|úìÙ’!Å^õ縸{övíÜI ½µb±øá£Ç›¶n“H$ƒôÿÌùwîÞëÙ½Ûàý³²²¯ß¼<üØ1}zoÐ ; !T©å=/!"ò*‡Ã?fô²U«_¼Œqt¨«xˆìQ>~¼~óæ’!­Zx1)Úù/Z¶|÷¾ý={°9Õ«ŠÒêäÒ™íF..UÌ̘½Þ­Zyz4ø¿ðK—Ûúùæ¿jUÕ4Ož-—mmK// ˆc'N 8Î…‡_¿ykûæööl0—­\µyÛöNíÛå٢؟qàà-*„ªäòž—pñÒew·vmÛøüKy–˜ššÖÕ«É&vïÒ¹…Ws‘HœŸboß½ëѲuBb±­ØãáîÞ̣陳g ÷Øöü9iJ«6þý‡ {ôä ³kòô@èØ­‡GËÖlþSgþêÕo@K¿¶ƒ†¸~óVA[ë\¿~jjó6CG޶kÓ†í"0ôëÛ¸‘ËÛØØâŠOá0wCʶ !„JTó¾~ûöôùsÿ6mø|¾g³f—¯D‚ÌU;¿\Ä3ììjëëëÏ Yxõú ‘HÄ$::8Ìœ!ðóS¬CݺkW,762’o  ‰r%K~®¬IA4us{þâ%äñªc7æÌqsmò¿éÓr„9sæ/`²Œþc8„̳vÅr&åÄéÓ«×­÷iÝjÞìYµmkÍ šu玪V)Mÿòõ+ŸÏ‰IIoÞ¾kݪ¥\†jVV¡+W¸8;ç+ y‰DÏ_<“H$ré‰äù‹gì/¨ B¡J,µÃ/]nîÙŒ¢¨ÜÜ\—† |þ¥+W:7`e÷¼vnÙœ””ýèñÃÇoFE:zÔÒÂbùâ…vµkç]¬*Ë-424”M~úüùº›~\œ+o‡C‡Ã)@ÕìÝ}‚O¦Lc (J±ºØ÷ÒÒÓ›4rÉÍÍeÊhæá¾dùJЦ”¶Š9\î4ïæÚdòøñlNž––Ê«ö¼"÷ã*-þNÝgÏŸÆÇ;uæd·®=xZ<‘XtêÌÉø„xsóªöuêª: œ½ˆB•›ºgÞÅÆ¾}÷îí»wçÃ/²‰W"§LŸŸuLMMÛøú´ñõ€˜W¯æ†, 9z`_‹ut¨ËÎõcä…y•Èçóãã ]µ¡aÞïTÌÈÌ€a£ÆÈ¥çä¨káÏÓ<U«²ßÎܼ |þW­š•Ü!ë6nªUˆé¯. ,--­n]{œ:}">þÛ©Ó':´ëôϹ¿ãã¿™›WíÖµ‡–––ªñŽBUzêžq¿ÁãñBW­`Ï ÿý÷týæ-=nÒ¸|¿”ý>¡=êÑ“'£ÿœppÏnÛZ6lb]{û?† ž/ ó,V¥ÕýL— QÌs÷þýzNŽ# PµLQ¿”©¤º[ÌÙzÁ¼¹Ì ž•™™©¦åNUª˜K ‹ÖÖ—#"=ÜÝeÓ?~útðÈÑq£G™š˜¨ȯ‰*Oê|¿{·ž'O…ÅÇÛ³o'EQææU»wëÉûqBÅϽ„ªäÔ=ãpñÒåfMÝ5lذAæ¯g÷nZ\îÅËêž °³µÕÔÔ|ôèäé3¾ÞÞ–yV­¼º_ë•­NSCnÜŠ²®V­‘KC--­áƒ¯]Ÿäè`óêõžýf͘žGËUOèÞ¥ó›7§ÎôóñnØ AvNÎÕë7þ{útøÁÖÕ«ÅÅÅ©/Vé/« ŸÇïÕ£wJjб‘1÷×È+…ïq@¡JOå3.]Òâr™gdµnÙòúÍ[wïÝ÷hú}|ͺõ²,ªVýëÄñÚµm[¿isfV–¾ž^='§ kV»6i¼zÝú<‹}ñâå„©Óþ9uRé8|~Ì YÀlp¹ÜjV–cFìÐ+tã¦|~£üsrthäÒpùªÕÚÚÚ—þ= }{Réñ“'9bee5sú´Î;DݾS¸/BÄÊ¥KÂN>ûï¿‘×®a[Ë&8hv‡vþ…+P=.—k^żàPBUjDrr2„G„W³¬æâì¢f¶ª¸RSSŒŒŠ·L©Tzëö-ïVÞeýåB•ˆ#aG~YU©¬ÛƒB¡r$ï÷8 J $–JÄy !Téåý„TÁ÷8 „På†c ¿…’KÀÿTB¨Ò“4ÆóQA`/!„*=Kø-à+BN@C!„r?Ç8MÓxÅY)•ÄX‚H,ÊÏ*Î!„*®Ÿ½c#ã·±oííìy¼2þ§_ÕÌùâJ/…fçg»ÌÛÌÔEÓ4»¡˜¢(¥{iš~óî……E©µ!„PéûÙK°©iû>öÞƒ{‰¤äêËóŠVý› ‹~A¬ªÅôJQš9OÌK)åZþãµ–ò¯{P™þó¥ÆFƵlj%!„ʹ_î8ØÖ²µ­e[ÖMB!„P¹€³B!¤œfÑ‹¨ô(ŠŠy÷5N(–u[**@`eae_ÇžC`Ç!„* ì%ä-æuLjZª™±Y¹}QrFF†¾¾~y.“¦é„Ä‚ êÖ©[ÚÑA!TXØKÈÛç¸ÏÖVÖzzzåöýF|>ßÀÀ <—IÓ4ŸÏOJN*íÐ „*ì%äM,‚r»˜„X,ÖÖÖ.ÏeÒ4M˜’XÚ¡A!Tåô⸼)Ï]„  ²nB¡‚Á±„¼)®PÞ”Ð+‹·Ìò@„BJáX*%t¹ÿ‰BHKÈ[ù[f…K(·s?B©‚ÿpç­<÷*J@¡ å—^‚X,>pøH¯~ý=Z¶jÝÖø¨1×nÜ(…FÜŒŠrvuOH(‰Â?~ú¼yÛöœœÂ/ˆDÈ¿ßà÷££=[û¤¤¦æs—X"ñëÐ)1)I.óå+‘}önÛnبÑÑåsWÅ‚wB¨bù¥—0cÖìM[¶¶ôòZ}þ´eûŽaN¡K T%…¹KW¬*Юƒ‡ääÈ7æîýÁ 5uw ž3»ª¹ù´ÿÍúøéSž»*ì$ „P…òs^Bìû÷W®^[½|©OëÖLJçŽæ-X¸mÇ®~½{¿ñ¨;¡z^ÂæmÛÒÓÓAÙ]|Å]·lˆ¼úåëWÅü»öìõôh:eÂxðòôì7xèѰ3¦LV¿K¶…Åþå³Ìõ×Àøq“ò.óûþ'„BÔϱ„”ÔT¨am-»; G÷Ö­ZŠD"æ£H,ݰ±C×înž^-ýÚþ9irÌë×ðã–ÁÇOŸ†ãæéÕ- ÷ýèè'ÿ=í=`«§W—žQ·ï°ÙÞ¼};xøWO¯NÝ{œý÷œb›ŽŸ8Ù©{7O¯€þ#¯]WÌÀ”óìùó!#FöwÙÔ¬ÙµSÇŽíüå2ç…OŸ?÷óña>jhh´nÙâÞýêwU8AÐ4& „PEò³—`ogg ¯?3hNDddnn.“èäè4›Ïç37lÞrðð‘.:.[¼h⸱Ÿ>Ç›øó¢vÒ´-¼šÏ š%ÌÍ2=pjàÌŽíüƒƒf‰Ä¢Ùó‚ÙlcÆO¬_ÏiaðÜÚ¶µgÏ ¾{ï¾lƒŽ[ºr•ŸÏÂùÁvµm'OŸqýæ-¥MŸ¿p±sýúÆQß°?ÇŒ€¥ lZ·¶ U0”ÎK‹Å‹—¯>xMÍŸ]ÚùÐß×Ç[.ÿçÏqEÙÔ¬Á¦ØÔ¬ñåëWŠ¢Ôì*ë9„ì`C2#„ª(~ÞqÐÕÕݼ>téÊU“§jjj:ÔµwiØÐݵ‰‡»;»jž(W4iüŸýúôf>Lž˜’’Ê|دo·.€”JçÎ_°`ÞÜÎ;°ÓÒÓ™lÞ­ZN›< Úøú>bÛ®]C dv‘$¹yÛöq£F2ÚøúˆÅ’-Ûwxy6Slz·.ûöPß0cc#G‡ºàÚ¤±©‰IA«`(½Þºs—¶¶ ß>÷<Èÿ.¥223@OWMÑÓÕ£(*'G¨f—žžn©üRlÀ^BU0¿¬—àäè¸×ÎÄĤûÑÑ>¼výƾ­,-׬\nog³§MÓÉÉÉï?|<ûïy hŠ9ܵIcfƒ9Ë}$I’ùØÎ¿-³AD‡öþkÖm`ðöÝ»´´4×&MØGš{z„,ZBQ”âÓöîn®ì¶ú†É*Pl;å.…Ÿ¿xqâä©[7kjjÊæQ¿K±Lvàû“òýY"»TWÁ]¿ZÍÏ?qüU» Tæº kò,“ œ½ˆB‹’U•ÌÌLÛµmÓ®mxñ2fÖܹ3g:vîGGïØ½çñ“'5kÔÐùõm@\.WÍG–‰±ñϺLÍ„BaVVó1== •¿ÓŸ““£«+鬣£Ãn«o˜¬UÁP>ÁÉÑáeÌ«{öÎõ?õªiX[??fêåµë7¬­«7iÔ¨pUÈݤoèÜ€Ýæ  ž“#s'EÍ.¶(Ň öÞƒ{‰¤(å(½4—Md· t¯øN¥•V”‡2‡³s8‰_—™"ä÷ªbld\˦VQˆB¨”a/!oǶ–­m-Û¢…BU 8{!„BÊáXEQ1¯câ¾Æ …²nK¹&¬,¬ìëØsì_"„P函€˜×1©i©fÆfeûj㌌ }}ýò\&MÓ ‰ AÔ­S·´£ƒB¨Ôa/àsÜgk+k==½²}#ŸÏ700(ÏeÒ4Íçó“’“J;4!„Êöı@ (ÛEÄb±¶¶vy.“¦ièÄ”ÄÒ B¡²€w—¿+ó.B…@„††FY·!„P)Á±€ë –y/¡B,¡XæQB!Tjp, ]¶“<B•K(7o}¬c e;Á!„PiÂñÊAÿ ‚Á¡„ú=üÒK¸åìêÎþ5öðìÚ«÷Þ)ŠÊ‰L!ñ jsTRrrÉU¡ñsfÂO)©©3ƒæø´ëоK·[¶RŤ_ЏâÙÚGöoËöìQOŸ?õçxŸvzõvòQá„úM(¹ã°8$ØÐÐD"ñƒèèµë7H$’?†Ég‰N›Ö­524,¹F{JÇB-‰ýð~Ú¤‰ÉÉÉ;÷îÓÑÑ:h |Ž‹«fe5eâx6§•¥%³ûþý„)ÓÚøúôïÓçÕëס7iëhwð÷/¹P” ì$ „ÐïAI/¡IãÆæUª0ÛÞ­ZÀÁ#GòßK044ôôð(ÑF{Šó’SRî=xyúŒu«Wyy6c²Í_¸Ø£©»GSwÙsçþC‡C7lзOýzNW®^ œdhhÐÔÍ ö8¸yÛöÞ={6nÔðRÄ•å«Ö(V=jÜx›š5fÒ4½{ᄅ3Ã’ͳiÝZv{ÅêµZ\.¨oª"v^›bog·{ûV+KK&ñÍÛw<Yyés\œW+ ÿ€OŸãLMMöë×»gˆûòE(¦¥g 6üÍÛwúúýûô4 þŒ2K`3K„B•ƒ’^Bnn.3r ‹¢=Úµg¯¯wk©TºyÛöq£F2ÚøúˆÅ’-Ûw°§Þn]:÷í7£¢˜‰D²c÷ž~½¦Mžmýü’’“·íØÕÔÍM,ïÚ³·G×®³§@_ß¡#G=|ôX®%¯ß¼IMMݹe“m­Z`m]=ìä)‰D"›‡½õpú¯¿ãâïÛK’¤ú¦*R¼>ÖÑÑaîܽ·ÿÐá6>ÞG$%'§ð´xƒô751‰¼~}ͺõ‚èÕ£{Jj*¬Û¸±o@À¸Ñ£¢>Ú²c§‘‘Q§íËúW.N`/!„~Jz {ô’ýèáî6}Êä·ïÞ¥¥¥¹6iÂt  ¹§GÈ¢%ìãîn®råÄ}ù’––Ö¶›âïç·rm(|Žû’ž‘Áž> ‚èàï¯ØK°®n-–¬X9°_ß&9988ÍvPú5â¾|Y¾jõìÀÀš5jļz¥ª©ªžõggïË¥gçälܲõäé35kÔ˜ðç8&ϲE ë99š€g3ììœ=ôì!‘0tРAýû@³¦MÓÒÓ÷8عc‡|þj®ûCׯVsàÄñSŠ¥ÌuÖäY&A8{!„~Jz kV,324‚ f&ã«W¯`ÀÐar™™[õ ££#·+))ŒŒØ¡P˜•••’š¦¦&ì.SSSÅ–íܲiëŽ]ÓfÎ"IÒÝÍuúäI̸‚,Š¢fÍ öõöîØ¾¤§g¨jª®®®Ò((=¾~óvƬÙ_¾~mãë8u s,ÇkéÕ\6[ /ÏËW®¤§§ |hÞìç´JwW׳ÿžËÍÍåóù%ü;–¼ã€B¿%½'GGöV•*f°dAˆEÕª²éjÎL' %5µzµjLJrJ ÇÓÕÕ535€¤¤äŸ»T¬”àäè¸nõJ‘Hýèñæ­ÛÆMœ|þï3ryvíÝ—‘‘>+p]¡›ªøŒCÜ—/c'N‰Ä!sçøË ‡Ä'$|ýú­¡sƒŸÇZZ¼j–– ‘l9R©”¦éb™0iBágAæ§ÌµëVå³ì% „Ðï#¿k/ZYZdfeº4tfþb^¿¾pñ¢¦¦¦šC ôõ/È<×p><ÜÉÑ,-, Ïž;Çî:w!\±„—11~í;fggóx<w·þ}{ýöM(ÊåÙ½oÿŠ%‹ÙN@!šªxæÛèpFFæÌiSe»óêõÈq>zü„M¹vãf;;mm‰‰IÍ5.^¾ÌŒ´¯S§2 $0pU%„úMä÷=\.wÄðaËW­‰Oprtxójçž½sgýOý!C ݰ‘£¡Ñ žÓå+‘÷Doß´‘Ù5x@ÿÐ 5547r¹Éeݘ2sãÖ g--­²mFjjª‘ÌdÏòY¦T*½uû–w+ïR B¡Rw$ìŽà!„2¸ãP‰)>ãPVÍ(Ûy ùóBè÷ÿ┃þAÅ‚ïq@¡ßŽ%àXB ,Õ  „*;8–€Óò{ !ôûÀ±K@!„”Á±„B)‡c ‡yáBÙ6£BŒ%ˆÄ"ž¯Tã‚B¨Œ`/ÀØÈømì[{;{¯8ÏrÏäù‘$I’$‹^#[2MÓb±8777϶å¿ü7ïÞXXXc”B•[ØK°©iû>öÞƒ{‰¤p%(½^g7 T`žÛù,ög~fº&ñërR„Ì.P9£ÓØÈ¸–M-@!ôÀ^‡Ã±­ek[˶¬‚B•#8{!„BÊáXª<(ŠŠy÷5N(–u[P‘+ +û:ö¯d*KØK@•GÌë˜Ô´T3c3|·µzúúúå¹L𦂍[§niG!${ ¨òø÷ÙÚÊZOO_I¥ŸÏ700(ÏeÒ4Íçó“’“J;4¡_a/Ub‰ØÀÀ@ ”ùÒåœX,ÖÖÖ.ÏeÒ4M˜’XÚ¡Aý /¹P¥‚]„Ê  ²nBÇP%BüPÖ )ï*Ä*Ÿø;"TàXB¨<"€ q*Be ÇPåQNÞíYþUˆ±œ‚ŠPy€ÿ?D•ö*J@¨¬ýì%ÜŒŠrvu÷lí#‹å2}üôÙÙÕÝÙÕ=)9¹ 0ÅÆ'$”þwcª–ýóño?knp!¾E±´$)9¹£!÷Õdÿ „Ã.‹{õ럒’ b±øÀá#½úõ÷hÙªu[ÿá£Æ\»q£Øk|òßÓ±&噸93áb‰Ä¯C§Ä¤$¹ôËW"û ìݶݰQ££>"P9ƒw*sòw²²²®ß¼éÓºµlâùððBWàäà°iÝZ#Còú†‹C‚ €¢è?îØ½'1)qû¦eÒ˜bŒÆ¦uk™ç/^nؼeéÂúúz%Q‘¢í;wy¸»ÀŒY³ï޻߯Oo‡ºöÙÙ9×nÜ?yꌩ“û÷éSŒ56¨_¢©ðK—ÚøúªÉF¨K8xøHNNŽ\âÝû‚.êÑ­k£†ÎçÃ/Nû߬½;¶YW¯^C…„„Êš|/¡®½ý¹ ár½„ /Õµ·Sˆ ==<Êð6iÜØ¼JfÛ˳ŸÇ[¸t™P(¥ß˜bŒ†\9®M›š˜”DEr²³³9zìЈ}ÿþÊÕk«—/eÿƒéܱü ·íØÕ¯wo¢XÇÿzôؼm[~z ²õnܲ5"òê—¯_AáÆù®={==šN™0¼<=û z4ìÄŒ)“K"hå\(J³Ìõ×Àøq“ò.ƒ÷*{òóÚµmsíúl™ ¯w±±oÞ¾m×¶ óQ$‡nØØ¡kw7O¯–~mÿœ49æõk¸ÿ º¡[Ó;÷î1Ù.E\iìáùêõvè›ÙøøéÓðQcÜ<½ºô¾ýä¿§½ rõôêÒ3 êö¹qr¹zõÇæó ëêê²ÿ–?q²S÷nž^ýF^».›íhXXÇn=Ü<½zöíwáâE6}÷¾ýþ»4iÖ¼[@ŸóáeÛùìùó!#Fö<hšÞ²}‡O»nÍ[Œ0é[|¼lN6ñ ŒëÖ¼E>ý¢>bkÙðPÛŽÝš·˜8uÚýÑ…¸×S °³G© 믳ÿØØØT³²€”ÔT¨am-›! G÷Ö­ZŠD¢ü«ç˜×¯ÇN˜äåãÛÜÛwÜÄÉ>~dr6oæñåë·‡«ùÖŠg)›š5»vêØ±¿\zŽPøôùs?棆†Fë–-îÝP  £EMã`BeL¾—Ъ…ÁáD\‰dSÎ]¯eccWûû[•7lÞrðð‘.:.[¼h⸱Ÿ>Ç›8š4nÔ¥c‡EK—‹Åâ윜e+W <¨Ž]m¹ò'M›Ñ«ù¼ YÂÜÜ)Ó§ÎìØÎ?8h–H,š=/X}[ wlnnnNŽ0'G˜ý2&f߃mý|Á‘ãaKW®òóñY8?Ø®¶íäé3®ß¼ÅräxØ’å+[µðZ¼ ÄÉÁ!pöæü±ÿÐáÐ }[·^4ž}»ÀÙA·ïÞe+š¿p±sýúÆ€½n޶ݧU«óæèèh/_µFiÛfÌ òpwŸ7ûÙ9Ù3f1‰a§N¯ ]çëÝzað\mmí™sæýgÎOèÔDVÄÕ«n®M˜m{;;}ý™As""#sss™D'GÇà Ù|>?Ïbã|åêµQãÆ s…³gÎHLLœ8“ɬ¥¥åâÜ âêU5_Sq^B‡vþƒô÷õñøeßçÏqEÙÔ¬Á¦ØÔ¬ñåëWŠ¢Êú^|%÷ý—*Hf„P’¿ã Zµðú÷Â…NÚ3)çÃ/vjßŽÍ ÊMÿg¿>½™††“§¦¤¤M™4±k¯€]{÷eddèêêŒ6T±¾ýúvëÒH©tîü æÍíܱû1-=]M[ó<ÖPÙ2ò{ô’ýXÍÊjî¬Y$InÞ¶}ܨ‘Æ €6¾>b±dËö^žÍ¤Ré–í;úôê9mò$ðõnýæ]ìÙsç:7ر{O¿ÞLz[?¿¤ääm;v5uscJîÖ¥sßÞ ‹wíÙÛ£k×YÓ ¯ïБ£”^{y6>d0H¥Ôœù!iiizzz[·ïèÐkú”É̱#Çþ™˜XÔujó ®ŽŽª€È–#‘H?ù¯wÏžÌG]]ÝÍëC—®\5yz ¦¦¦C]{—† Ý]›x¸»3 ç4Îk×oHMMݹe“m­Z`m]=ìä)‰DÂårÀÑÁáêuuS#‰|_}fdf€žîÏ™zºzEåäõôt‹mT,À^BeOÉz íÚ¶2#055ÕÈÈèÅ˘Ÿ>ù·móéógf/sæ£i:99ùý‡gÿ=M€¾þôÉ“ç-XHQÔ®m[´´´ wmÒ˜Ù`n¢Ë}$IRM[ wìšËŒ ˜íŸ>­Y·~ÙÊ•ýúôNKKsmÒ$'çû+†›{z„,ZBQÔ›wïRSSýÛø±%lÛ¸^*¥â¾|IKKk+“îïç·rm(ûÑÝÍ•Ùø÷%=#ƒífÑÁß_U/Ù011R*ûò5!1Q¶ö6¾>ì}œBË3toß½SÙÇÖã¾|‰DUÙ'GÇý»v&&&ÝŽ~ððáµë7ö8hei¹får{;;5Å*sbRRŸƒ—¬X9°_ß&9988Ív`3XZX¼‹Uó5Õ_ƒÊ]Ë||`R¾O§'~‹Ç)ÕD)týj5N?¥XÊ\·aMže³*sJz žMµµµ/\ºÜ§WÏóááŽu­«Wg{ ÷££wìÞóøÉƒš5jèüú~—¶~¾ËW¯124hP¯žÒú˜‹BUÕ+ܱNŽŽììE—†Îiii·lmë熓˜“““ž–&23uttàÕë×`ldĦ›˜˜…¬¬,Ùl’š¦¦?K055UÚ6C…gÀÄØX¶–ü‡¨Ð¡KOÏP]ÝŸ×ÖÌÓúzzrÙÌÌLÛµmÃL^yñ2fÖܹ3g:vTM±J㬣£³s˦­;vM›9‹$Iw7×é“'1ã  ¯¯'‹³²²d›$+ÿ'x}=}`;ÈÊÊæp8Úe1§)õ;t×*ÿ”ô¸\®¯wësÂûôêyáÒ¥¾ì®ä””±ã'vhßnÙ¢…úúp3*êRÄ6ÃÞ58œ¸¸/§ÿú›â.Š´´´bÿÂ65kˆÅbæ‡% B,ªV•ÝËçóÍÌL 55­zµjLâÇOŸÓÓÓ™³~Jj*›žœ’ÂãñÏXf¦¦””ü3g¾ç2ýƒä”öX¦ÏQÒªT1SÅÌì þÃG‡}üÐÚ¶¶ì^‡ºö£þø#pvPvNŽšbUŹ~=§u«WŠD¢èG7oÝ6nâäóŸùqjî)*Ö^dÓÙ]Õ«Yq8œ÷>Ö±³ûQû'K ‹u[+4UçàI¦–h™k×­Êg-ØK@¨üâ·oñmý~>{öáÑX<°__¦‹¢²{?~ú´eÛöÀiS‡´fÝúÔÔÔ‚¶Fƒ£ìJgÏW“ ææU 2³2]:31¯__¸xQSS³š••¾~ø¥Kì!Á î;xÐÊÒÒ@_ÿBøÏç·‡;9:(VaiaahhxöÜ96åÜ…ü.8QÍÊÊÐÀà¼Lþ‹—#Š=Ь,-UD6³FBffó±Ž]m®¦æ±°“r¥ý÷ô©™™™Ž¶¶šb•ÆyÖܹ~í;fggóx<w·þ}{ýöM(ü~·"#3SKKKOa$ƒ•ÿóŠŽŽN=GÇ‹—/3)ŠŠˆ¼ÊN1A宪„P™SþׯMŒ/[îÜ AUss6½–@ X´lyïž=¤RêÆ­[ÌäÿÑÑm|}ƒ,jܸQ_‘Øëì¿çV…®[<¯@­±±©©¡¡±dùÊþ}ûå³y\.÷aCW­ ÕÐÐpnP?òÚ?AÉ_Wq¹\U‘eeiÉãñ¾|ýæäè:::ãÆŒ^ºî[|¼w«–&ÆÆY™·¢nÿ{þÂâùê‹Uç5+–/X4§k§NYÙÙ;wïv®_Ÿ]ÙâÛ·o65kªÿ"JïŽ+Ž%À°!ƒ'OŸ±fÝúF..ç.\ˆOHèß·˜×x(·Jâ ‚•™Ÿœø„Ê彇ӯÏ÷Б£²“ËÀÐÐ0tÕŠÐõƒ‚CŒ ;wìpìÐC†ED^MOÏxúìÙ‰£‡€§¥5sú´?'MîÚ©SZc^¥JpÐìM[·Ï÷ôðž4hØÅû…kÔ°€«×¯ÿ1tI’G‡í?t¸š•UÐÌÀ®¿·v`ÿ~¤TzìĉcÇÃjÔ°^¾x‘»«+ 8€$ɧN>z¬†µõòÅ‹Øi€r† ››{âô™Sgþrss]¶háБ£òÙÂ}ûäææ9vüÄé3íÚ¶7z䬹ÁZ%?> oUaq¹\çõŸ¿xáçãͤ пNíÚ]³~Cff¦¾¾~ƒzõ¶lXÇDL}±Šqnݲ…¡ÁŠU¡¡AÁ󾻫딉ØÚŸ>Î>„©TþŸqO¦ófÏÚ¹gOةӶµlÖ®\Î,ÊJ@¨¬Ì-óðˆð>=‹sI]ThÏ_¼´´´`Ÿê<¶bõÚ{7¯—“ËÜÃGýýÏ¿‡öí)åz%Ië¶íÖ­ZÙÈ¥¡ª<7nÝpqvQúp ’Å<ÁTÎË”J¥·nßònå]ª¡AÉ8vÇôʳfïÚ³—ýxýÆM‡ºö夋;vxÿáûÌK©¹u»ªy5]À'ìB¨¸i½T¼ºwí²yÛv}}ýÖÖ·nß¾~óVȼ9eݨŸtttúõé}ìÄÉ©2÷JÁ±°J×é’¥ê$§Ìç%äÎK@¨<À^B¹3dà©Tzòô™„ÄÄªææ“ÆÿÙ¥cDznÔ/F :`è0fÁÍÒ©ñÉO€YåB ìT2ø„Êöʇ3bØÐ<¯›ËÇ;~è`iÖØ ~=öMÙjàXB>Uˆ±ü*pLU"xZ©D°—€Py€c ¨òÀ±„|ªc ¡òÇB!¤Ž% ÊƒÃáÐ4W´yªc "±ˆ§Å+Õ¸ „`/UÆFÆocßÚÛÙóxevvQ5-¿@é%=·Ÿ$IöMë²u±ÛJÕåÜÜ\öEGÓô›wo,,,J4¡ßrúIQ@Ó4 4ÐàÛÄvîe%šPu}\ЈÑ4ýúmLrJ¢Ò½f¦Ulmêä9zQþ)öB¨+µ+cRJm8yoÁH>OJ$ 9ä’]çæ ö*ë0¨ŠŽ²´FŒ¦é·±¯ø|¾okÅžMÓÏ_>{ó.¦rt#†½„ªÀJº—ðöKªMUC‡ ( tøW}S„ˆ‘”ðiX¦Ëé=~f¸£ˆ£iúmìk>Ÿï`ï˜E’¹ šššöN/^={óî•­]…î((®½ˆBüB/vW}»ê‚øÑ iŠ b’–Hi IçŠ%œ']9÷££ƒætìÞÓÛ¿}÷Þ}.]ûþ½l†Ûwïzùø%$&Ê&®ß´¹¥_Ûóá‹ÞxPÚMÈÄ(Šz÷þgáíÖ­ÿ›þcdÂþýklúfó–ìì,‡:N|žÖÛØWE©*M*•žúë¯cÿôëЩ}×nc&LŒˆ¼ZB?œœï¡NHTŸMiÄp,!„*°K iØõÏ£ˆ‡ïsÅR¦p€¦iŠ’)$EH)HKÏeÏ ìܳwßÁCÍ<šþ9z”Á·oßþ½paøè±³g´nÙ‚mùº¾¾c÷žã'OÍœ6Õ¿3tQ„öÓtÑÆhš~ÿñ––ÓEx·}ÇÛù!-ml´8)I2Ù"ѳù!@Ó¶cÆÔµ¯÷ìů߾¬]Ë^éˆÂÜwï?èÕ½Ûв²³¯Ý¸1oÁ„„‘={ïo§ô+Ë…:ÿÃ^BU`Ìõk1–)‘ó÷\‘0e ï´5§Ø«L€¢ )b)dfçj§š5AáÜyíÚ¾ƒ‡§NéܱÓ6‚ ºwí²rmè’å+ljÖ¨amÍÅž°9ºÿÐái“'¶÷o+•J‹þ-TÅ$Ÿ{ÿá­O˱n½ìì¬Ø;ßÌ nbl¬E”TJÿ0àihÔÕÐx9?€®5z´“C½GO¾ˆyê`_O®´ðK—oFÝÞ¾ycÚµ)Š"¿ߊÕk¶îÜåß¶ž®n1þ|ªB‘gßHé^ì% „PVìc _’2gn‹t¨]Ý×ÍžÇÕïIؽ“×ü„Ÿ«ÝÌÞIéY pvÙ½oK/¯íüåV.š8nìƒè‡ýßôil"Óø§Ïlßµ{¸±;t I²X¾ˆª°ä3bI)‰¾­ý³³³bwíz5g®‹ž@J’ÌŠéhP— l^‡H¥”Íè‘ ê9Ÿ<}¼n'¹ÒކðoãW«fM‰äç̆>½¾~‹[·N=ûD^¿žœœ"ðëÚÛ:ĶV­»÷ïΞsìàþ%ËW>ùÂÒÂrÒøq ê}ùûì±'“’“«YYèÛ—¤ù럎…LLJ²®^mèÀÍ<š2#4äÝKPÌ€½„ªÀŠ·—ýêÛÂý·ü½\jU}ý5˹¦ÁÆ™šÐÔ ´4€ÇÕàir<®®6 9=G*¥8B¶öø„„?9Réɾ­Ÿïñ“§ØK[æÏž;·aó–‘ÇõèÚ¥¸ºÅ1‚’”ü7iJcSS.AHI’ið÷n‚TJQMQZ4mC’1³ƒ,ÔÓÕK$r…'&%½}÷nÔðar·QÌ«TY¹t±T*Ý´uÛé¿ÏÐß¶–MZZú¡£Çƒæ?¸Ÿ™B²x‰§‡G§í·íܵ`ñÒc÷Àé¿Ï®ß´9 gõœnEÝY°d©¡ACç§ÿ>»ië¶¾½êÔ®}ãVÔœù!‹B‚58PØ'f±—€BQlë%|võU@ûæºÚ‚7_²´4áùÇt-M‚Ë®&ð4 ®ÁÓ®&X›kj¯?%Z™2']¶ø„°²²RÚ¤ÖÕÓÓÓsr„ŸÉpñÒå]ûö3K&oAeLò±S6i.MKI’¹½ÏNldz Mš¦iš”J¥%Qè%|‹33S¹tš¦™á±D2vÔˆn;37#ôõõfÍ NMMe¦ 4kÚ´_ïfþã¢eËÓÒÓuutö8ؽk—±#GÐ4íåéûþýň'G‡½ü1tH߀^4M·ôj.‘Hö84tÐÀ;!ô*®±„E¢b„};·ÊQï…ÚZÁá0 ûÓMK)à4IGÊŒ]š‘„hi(ÖNQR5M’JI¶Í;÷î œ65öýûý‡»»ºÚÕ¶-®È¨œ—ïˆÑ4MQ4H¥Ræü ìÃláLjó½(©T"ËNÓ ¡¡¡ªÒÉãÿdz ©©©Ÿ>Ç»p¨mtkÒ˜¹O¡¯¯Ç4&öý‡´ôôÖ-[°÷/V¯XF’äûÒÓ3œë×ËÈÈdÒÝ]›¬X³–™ç½„úíP<½1)(‰”K)M)‡KÓ³IhM-à|.Áçr˜ š¢|÷[r¦µ¹líULÍàÃÇU«*Öòáã']]]ö‰ŽóónMJ¥·¢n/_½fSèšâz¡³Êgò1𦤠R’üþ˜A°ÏPþNJ™[ ¤TJJIÅ;¦¦¦ðåËWŘlݹ˦Fªææ‡Ž{þâ…¾ž~õjÕtt´´Ÿ]]Ýïwg¨ï÷h2³2À@_Ÿ­HƒÃÑäñ2³²`Ì„Irµ…¹Ï^>ã€B• AÏ3ó5;tùÅ‘¿";ûzX›h¿OÈÎIxÀç|.Ar€äÉ¡IH9 ¥(mM®Ž`Ó‰;-œ«ËÖnffZ³†õ…‹—Ü]]åªJ¥á—.7us•½=ßÔÍ•¹Ñ0súÔ?'MÙsààðÁƒŠ%24M«Z{1?#I’¢())e¶e×.f{ ìˆÂ÷/H’R’T¼ãPÅÌ̺zõ«×o4ri(›þ9..ìä©]»„nÜÔÆÇ'dî=]]š¦ïܽwõú ¶¹ÖÒ4mbd ©©iæUª0‰_¾~ÍÈÈ416€¹³þgn^E¶¢ÔÔTÈg/A!b¸ªBU`„ŠE ¡¯wÝI=\Nž¿þ51¹n5= áã\µe}sOGs÷ºUÛUq¶­âXÓ¬vuÓœ\òÉÛoK\hitlj+[EQC¸q+êÌÙäÒ7mÝþ->¾ŸÞl"H¥RfÛÎÖ¶wÏÇOœ|S\ߨ(‹%E‘R’ ¡D"%åIIfb‚ ¤RRB’±D®(Š¢zuïváâÅ;÷îË&îÞ·ŸÃáÔ²±‹Å=»wåjj …ÂÜÜ܇È\Úÿü>ß?V­j®¯§wõúuvϪÐua§N›W©b ¯Ÿ––V§vmæïå˘ðK—544~)§ ñ„ªØÔœ ÊÕ¾êª1­‚vÞHI«éébGÑ0}u˜\‚#=¾¥‰^·ævN–Š·³==<õï·qËÖ»÷î{y630ÐOH¼t9"öÇ ™3¬,-™3+ýëCüR©tЀþ7£n¯Xº1t—[raÉOÄ$±D"!ÂvÉÂ÷óV‰x*|âó-gN'8"±Hq,üÛøÝº}gnÈ‚–^Íë9:æ…Qwî¼x3¨¿¦în|>ͺ ÚùSuïÁƒ'ÿ=€Çÿ=ÕÕÕv lö ‚ЯïæmÛiǺu£>|úìùÊ%‹9ÎÀþý6mÛŸXÇÎöÍ»Øca'¦LÿãÀ<ÖÒVì% „PVìë%X™ênœä»pÿí¿#Ò»ù4€–¨\Pi½$Iê߯AýúÇOžÜ±{OŽPh` ß¨¡Ë¬Àé–ìŠIr½ÆÌiSÿœòù&“'˜öé­£­sýÆ5ž¿e‹ÖªâÃår555Ùg%$ 3'CCCCKK‹I'IR"‘ðù|Š¢H’” ‘\ÄØÒd‹bÓ9EQLºÒPç3b8–€B›ìº¢õý¦»TÚ­©•¹¾ÆÎ IIIÌ^支ñƒ¦¦&s6RU”ú3±Ò Eeff×w)bÄêÚ;=yúèVÔM×&®¦=¥”ôÝü…L_ h‡c2qœq@w%2‚Ïx5o©æ’]$‰D¢ü„";;›ÙM—˦ª4Åô< 5Ã^BU`ÅxǹŠeÿ—$IGKþĶ©©©Eq8MMMf„€é0ZZZß'Ç•3ªÂR ˆÕwr~øèÁõ×ÜÝššôì®×¹#MÿòÖG MM®Ö•+<ž e‹ÖPŒwÊCİ—€BXq­—į€ÃáT7ÓfߨÄáp˜‘6††‡Ã)ŸçE•Ï8$b$IÚÖ²{ôäÁÕë‘M›ñx|Š¢(š¢)š¦)©TJ’äåK—55¹nMÜI’,®ÅÊOÄ*ð÷A!T\ë%0Eiiiq¹\ÇÌ$`Ñ4ÍÜeàp8ÌÓi€r|é¬êžBþ#–““# …B¡¹™å«7/>Ä<ÁȬÌLS´”’ÒmfjæäR?==], mmí²þêÅ1ì% „PVŒ½súÏó>B¹í¨o^þ#&´~p®ï"‘H˜{1ÌÙ”¹Ãår™~•@ j–a.ÿp,!„*â{ÛS%£r~bA"ÆápttttttòYi…þ!p,!„*!ì%(¥&&1¥p,!„*‡Ã¾ñ¯¬ÛRŽ!!%Z\Åe0bÊ©ŠöB¨340LJI220RµnAåy*-–s­l!Å53#+£J•*Š»0bJ©ŠöB¨³¨jAÓô·„oìÒ{… ¸V lJ~VZ,h9ù)“`^PHÈlËìû%›²Â --,Wˆ(b¸B3BUlZZZ캿ŢD‡âKmœ_*•ªZæ#¦”Òˆa/!„BÊ•È]„BUØK@!„rØK@!„rØK@!„rØK@!„rØK@!„rÿLRÉÉü·%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/PreferencesDialog.png0000644000000000000000000000013213135434036021015 xustar0030 mtime=1500919838.099981806 30 atime=1500919916.263315139 30 ctime=1500919913.366648472 denemo-2.2.0/docs/images/PreferencesDialog.png0000644000175000017500000014727013135434036022701 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR¼9‰ËgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>€IDATxÚìÝwXIðIOh R¤«€…&*M¤IÇÞ±€õÎ žgù¬ØÏÞì¢b÷±"ÕVTz¨H—$¤î÷Çzk I êû{òð$»³3ïÌÎn&³›@ªªªBÿÚ²e3@!!û’T\\Œ:p`»ví:tpÒÒÒjèÐð*++³²²îÞÍ6l8¾„T\\|àÀþðð ‰DŒaXC €†G"‘H$2ŸÏÛ·oßСÃBT„P»ví544ÄbQC‡€ÆÃ0 “0 GGG| ÅȨi·nÝðU ]]Ý}ûöµk׎ŠÒÖÖær+:$€eeeÛ·ÇÄÇÇ/]º$00°¡ÃüŠX,þ„Š’H$ ?¹Ñ£Ç\»vÍÍÍ•B¡VTTLš4) À_ çÍ›6ÄÇÇÛÒÒŠB¡J$↮Šb“&M:þ‚»»;‰D’HĺºM¢¢"[¶lÙÐq¾¥Ïƒ¸6ÀwµcGŒµuËÕ«×´hÑâêÕ«£Fzøð…BQ½•D"IMMýóÏiÍ›7Cˆ$•6ÞCuÆ çÏ·\¹re‹-0 »|ùòÀƒ>Ôºuë† ðÍ>Ó€að€<¾ï!„ Šogk# ùüªU+W¹¹u¼~ízP`ÐÚ5k†å<Í1bd¿~ýOž8‰0l„‰eeå¾¾¾=zô”ˆEO?‘][ãæÛ¶nëØÑ}ýºõC‡stl7~üx„aåeeQQQÿ›ù¿ÁƒÃnݼ‰Ç&·!°;v 4hÌè1ƒC×¶‚U|ž§G§ßÆŽ]µj5™DV3°êÉbwïîäÞiÆ ƒ‡µk×~Éâ%G⎠8¨m[Ç5kÖà›¼zùr옱‘‘‘áy¹¹ ¿—áŸõBˆ´fÍê1cÆb˜´¡‡/üäZ¶luãÆ *•ºqãÆŒŒŒ´´4.·ÒÚºeïÞ½%‰““Óˆ]»v[·n-‡£ëï•‰aXË–­RRR¬­­Åbqpppõµ5n~ðàÁV­Zž;wnáÂE?ž;w®¹¹ùÔ©8:¶2dHTT¤X,îÓ§¯ì†EEE;º_»v­U«VãÇß²e ÇU§‚)))ÆÆFR©!tçΉ'Ý¿ŸÇãÊå¯00 …¬0Ù‘#Gìììbbb6lØ’’¢­­½uëÖ³gϦ§§ ‚¾}ûŽ7®gÏ^çÎݸqÓ™3§ñÒßÖÎ;ÃÃ#¨!©D‚H ¿ooo víÚíܹÃ0üííÏ?ÿlÖ¬B¨¨¨(;;;00O\RRÊá°ñç••ŸJJJ®­qófÍšééé…†^°`aqqñÕ«W÷ïß'‘H’’®7i¢'‰mÈiÛ¶í AƒÆû}éÒ%R©TýË"öù«X†Q( …RVV¦N` ]a2SSS VHHð† ¬­­++?uïÞ}Û¶mT*íÝ»w>ò÷‰„...ÙÙÙ|~Nkèý ÀOëó=  ¹¡#àç‡Ï`&‘Hx\.1ã'¨ª’J%•Ÿ*B999lö¿c…OŸ·Ä ªJÙÚ7—J¤òçOB¡ðÓ§J±HD§ÑðÕs®(/Û¿oß™³g·lÙrö칸Lj*‡tÁŸ\L¸ ¸’Âëuçö¶mÛ"„©ˆü«ÀBÉÈ$Ò¿Ï%T !D&“%b BˆB¡ˆE"|5‰D"!ÔhïüàG÷ùž ?Òáx|·îÓ§Oå\n¥D*!â ô LMM7oÞ\RRœ’’üòå É¿3í5®U'ÎÍÍmõêÕ…?Vr¹7oÝV¸áó/Nœ<1hÐÀåË—¿}ûVSK‹¨EBÂ…ÔÔÔÔÔT-m…Ä’bØ•«×öíß7cÆ ±X¢f`j&“}ÞD¯I«V­’’’0„ÒÒÓíììôôô|GÃ?åG ¶·³§Rk¸‹PsçÍËÎ~üþý{6›mfjŠ/ܹsWZZZEE…­–¦&‰DjÛÖaÛöí›6m*-- Ú½kwzFFIIIûöí454äÖîÝ»Wõæû÷íOMM-**òõí¼~Ýú;™™<oêÔ©—/_^¹rå¥K—ZZ[ÛÛÛa&·¡T"Ù¼eëåË—“’’þ7sf«V­‚/ÿÙN(àÙ FFMÉËË{öìÙÉ“'öï?ðüùó¥K–tpêÀãñPµüæïïç`o¯0Y@€ÿ¢E‹rsóx<^;ǶK–.ËËËc±XŽm\]\7oÙ’t=éþ½ûË–-ÕÓÓÊ„ øVîÞ»×®];Òš5«GDD4t0üü444é †H$T ˆ_mg0™,–†P(¬âóð[¨Tª††&‰L‰D|—Á`2Y,"ÜZ:ƒ¡zs߉Õ;/@¸<.·Úwªªªdÿ==BH$—W”/ùU|~_ÙÚ7—MÀçóùüÏY}"î–P²!°êiT«äV"åß±P30Édó—}.–H>U~ªÿÔˆŠBpÓjBEî4@ͨ!D‚ï[ 0\€Z`еÀ jAÔBmèÀqð íÚ5D¡Tn܈èôÓ“_½b8@.(wî,8°¡ÃWŒÄã‘ÿùc±¤fføÊ£G¬uë$-[ògÌhèè~?V{Vï ›:ÞÂ2Û¥úú"QP"ý0ÿEðÇê' ž`ÐðK`­^M~ý!DïÕKص«êĤ’v` ©¤!D í šž®=p ØÃ£âÌ| ùÃúÉ“b778y}?V{Vï ˜šÞÂr ™Û·‹¼¼*À´´þëF¬“«Ÿ€z‚AÃÏzç>b@ÑOž¬qÐ@}ôˆTR"µ°à-]*17oèðkAܮݧ£G1§¡ùI@{ÖY­"I›6¼… BH$¢>yÂܺ•–œ¬9iRellC×y”àààvíÚ5tà;bnÚDÍÌ”ØÚ’?~$¿~-7Ñh*ÒkMšD~óÑh$.—$•Šœðå$.—ËØ³‡–žŽ±ÙR„fT#>^boéê’Š‹µ&O¦Ÿ9#vvÆ´µÉÿü£ùÇôóç…!!ˆ¬øîRi)sÇƾ}´”ÄdJ-,ðå”G4gÍ¢<{FKOgìßOOJBŠÔÒò«8£¢ÈoÞø|êýûä÷ïÅNN”/˜;w’ÊËÅžžêäO~ÿžTVÆÚ´‰–”„q8xp´ädfl,ýøqêãÇÒ-0míêÁɤ¤„µy3=!!$µ²¢Ÿ<ÉܶvãÆb%~‰gÏÆ‘#ô ¨OŸJMM16›qô(kíZ'±·ÿ¼Ë¶mcnÛ†1™R++……Rž±«+‰Çclß®´½„Ba·n•±±bWW¼)„={/G YË—“ÊËE>>•±±•±±"//$0wïwX”Gð÷uZZ©¤DÒªUõƒl¡bwwîúõÂnÝTìbß‘ $­[WnÝÊŠª×v_—[cÑõŒ¼:{GYPÖìÊBª±_©Ó»ÔÌD±‹ Bˆòô©š¬°'×¼¡z]Wãü:àž†Ÿýøq„°D" ûôanßN»t‰TY©â+±£#BÓÕùûãKHååôsç0çÓ‘#˜¦&Bˆ$07l ?ŽOHRîßGQ³³%mÚ>}¢>z„¢>|ˆÂGÕ‘ŠŠh×®!*µòàA|Ê”\XÈ8xqâ¯mÛω(”Oû÷KÍÍ…ýû“ éññŒãÇyÿÎáW³¶ùc,VåîݘŽ¢Ñ´† #}ø€W!„éë {÷–6m*53cìÞMLÅW'50¨Ü¹ÑéˆJÕ6LjdTƒh4ü%žççâ´µEÞÞÜ5k¤Í›#„@@KN&bL¦¨sgú… ´‹#FÐÏžEá#^vm 1«‘¿´eKLG!ôù= /ÔÁAjfF~û–ãà vtùûó§N•»ˆ+Kji‰‹ÏDje…ß2"›'Ž»bíêUfL %7—òò%qw*BHÔ¥ ýÂúÅ‹‚ˆÚ¹s!Õ—$VVÄ›œŠ½ƒ¢ää ©TbmB"Ÿ:dË­±èzFŽÓ<øK+¹» ÆŒ©ÕÞQÝì +¥uzW}„b±Ôl%…=YÕ†ø A®«Öqdd„’“ºƒF ?3ÚÕ«¤²2„õÞ=Ù匓'k5hÀOa¤Š ZbâWË++B¢ÎR=¢<{&< ôÓ§)Ož?~öè(ÅyŠÅ!ŒÉü²HS!„ðÓ%Brk?Ž!.ÜÖ³:ù³XÕ7ÄX¬Š‹Y«VÑÏž¥feQ³²˜›7:qŸ1®; Ó6Œ~áBãp$––RccjZ¾RŒÈdjr2íÆ ò‡’Ö­%mÚ¨ÊMæMNõÞùüö#û)Põ'B‰DÍrk,ºž‘ãdWaššUµÝ;*›]a¥Ô¡Nïªü-YÒ¬™š­¤°'×eïÔ©¦˜‰ ‚AÃ/ ?3Ɖ!áÀUááøJn®fTíÚ5Ry9~¹:ðÓÔ̬òßKû”çÏ©iiøµO|Ð@?v ‰D{{$!„‡!å×&ˆ<)¯^!¡ÿ¸ƒ_Á•=õP^¾$ øçJv6ú÷3ú1«Î_!òË—Ì;DžžÜ•+)ÙÙ¬Õ«égÎ0·o¯¬ß ’M¿pc³+÷ïuê„H$ú… Zÿ¾{IõõÅÎÎÔ[·4þ÷?TÓµ‰Zí©¡!Bˆüâ‰ÏÇßZ(Ož(ÈÃ>o[íƒx‹þ&›Wüý÷—õõk»wT7{Õ¹w©E,¦;†ãóumäzîõkŠ1˜®®úÇ&ø¡Á?-ŸO;!T5|¸¸cGü!2Ó×GB!]æ\\#‰µµÔ‚üö-õþ}q‡RKKÆÎŒ¸8ü«n"D"}>ÍÙÚâ×YéG"•wAJ¬¬¤¤Š ¥K‘PHÉÎfÄÄ ¯Ç¤OŸXK– ¡zïsçNÅJ¥uÎ_æöí¬¥KI;; ~7C½žÿ؇±X’Ö­‰Dyü˜µbÅ¿±JBÂ.]~5¡¦kµÚ;’V­¤FF¤ÊJÖüù$€’ÍüúN~| ‡’›K.,$¿{‡·Ò7)ú›lNt]qÇŽø¾¨aï|Ýjlv¥”ô«Ï›Ö£w©FÎÏ×9’’—'±¶Ô§‘ë¹wjUÓÒ¼<ÁÈ‘õ¬;ø!À á§EKH ñxÒ¦MÅnn_–’Éø›Sß¡ø ‰Ä[°‘H³f517çØÚR<88ˆºuCazzbrQ‘ÔÈÓÓÃôõ¥&&ä¢"Ù;ç9>Bˆ¹qcss¶·7¹¨HÜ¡ƒÜ‡lææÍMÌÍuüýI%%âöíe×â÷rRoÝâØÛkŽW·ü«“6o.vv¦<®kmÝÄÔ”µf "‘µ¹š£ÄÞ^jnN~ÿžÓ¦M¶—~ÿ95=qìBHÔ¥Ëç”­[KZ·þV{‘ÉøüÌ]»t-,ØÞÞ¤¢"¹À0]]Ri)ÇÞžãà ûõ¼úý6W±wö‡›½ºúyz—BÔ;wt[´ÐmÑB×ܜӾ=ýï¿1nL ¢RëÕÈõÜ;j×”vã†n‹Úõ§cÁ·ƒ†Ÿþ½ Q÷îr?¬$ìÞ!D»qƒT\¬~nž=+÷í·m‹(iÓ¦‚¡C?=úå†s??„ÄÎîóKGG¤Æ§.aïÞ•±±{{D&cúú‚ððOññŸO”!„¤Íš‰œ™Œéèütô¨ìZ±““`ÈLCƒTR¢ðRKù+F"UîÙ#ìÓGª§‡Ñhb'§Ê}ûDAAõ܃ñ)>^‚±Ù‰$îÔéS|¼ÈÇÓÐÀo•—´l‰ÿD­¦ÔÙ;‚°0î† ++„ÆáÈÍNcÚÚŸ·k‡Q©kkþÔ©ß°èo¿¹ò½£°?ÔØìÕÕØ¯>G^·Þ¥DBª¨ UTø|©pÀ€Š«Wñƒ¨ž\Ͻ£nME"REE­n•?.øq'ÐýŠ?#‘plmÉEEåéé’V­¾_9²?ßÔÐuü0ðw‚!hxä—/i·o“‹Š$66ßuÄõƒÇÙR5jTCÇJÁ= 4üýê« ‘¨uû7ÍßÚ7éN Ò†!2™L!Sþ›²T#‘¾Í­gKÖóÌVcg¨sxu ŒL&S(J÷ïÐëH$•òŸ§u;E¢/Ô ÷C…ȼIãz#´hB£kcR CßëóA $5ß.Úh ß=xËf–·ïÞ¶é`ómwŸP"üÞ‘7ªúªö½¦jé[u§iC©D*F 9«÷=Ô§%ëyfS§3Ô-¼ïtÊýzDüŸ§u; ñ\ÝÏL…"3Nã4˜ëÒÊø ¨¼ 6’ÏpPß´á·ÒÈ[²Q…ר‚i$Ô4UŠLÙ Á”C/æþl~, Ÿ×ÐQ@}$ІßJ#oÉF^£ ¦1PwÐP\)2Ñ¥“]z) ?*‹UUUÕÐQ@}$ІßJ#oÉF^£ ¦1PwÐP³j&þo³%0ÓðÃb1Yüª_èòÒ¯VßïÚð[iä-Ù¨ÂkTÁ4êÏ4Øt…«/_qîä™u÷žÜò#Çâ;y¾yû6-ã¦s'ÏÂÂÂoº›^R©ôÆ7©TzîBÂä©Óz í6ôé3“SS¿_;~'w²²Bzö.--U¸œxtéÕgpøˆõ›·TVVÖ˜[QQñ7‰ªžù0™Leãw¹Úy‹«È°àÝû‡ãøüÿâ3Áç(®E ¨¨/aæÜy!={ÇîÛ¯N†ïÞ8ǯýg …m‹?þƒ¦«O”µ!¾;ú…†ÉÞãMä‰W­´´ô[õ¹r‹ŠŠ¿yÎßÛ7ï [¦Îm^ÃŽéÞ·ÿØ “Ž8)ûOG´úgªî}ú?1þä)üŒ²uWçhU³­”žª>=Öñt!'tX¸Zßžà $4’T‹©8±·§‹Å¼tåJ‡öíd—_MJjݪ•¹™™¶–ö†5«9ººõ WŽ“J#K+«ÄtCŸ%ËWd޽׳[×Aýûr¹¼Œ[·–,_9fÄÇ>½z~Û0¾+üëÅR)&÷=Z|ùŸS"ÙÚ:!¡Høâå«§Ï”——Ï™9£†Ü0ißÊUÍÚÒrѼ¹ÚÚZõɇÉ`¾¯z¯0üëòÓ¦DêèèÈ.gë°U”øOÁ?Çu b0èè;Ã#”JkÑ’*ê‹+--{ðð‹ÅJJN :¤Æ ÿù§àÀá¸.AA zíê»hÞ\üIîóçûš>uж¦¾¤ž£žj¬‘²6Ä;6—Ç˸uÛý£ìªëI7þ­öMúmõr¥˜ô[Yÿ™oÞ·L]Û\éŽÆ0„—˽yûv§Ž_íèkIID©T*{„ÊOøüª‡í=pðñ“§sÿ7C6g…G´ª3UµóðÃGÙ»÷î‰Dƒú÷“­»:G«š½H®P›­òôX×Ó…oOµ E•"SŽÒ’˜L¦—וëIÓþ˜B|…½¬¬üî½ûã‹âpØ:ºÕ'PeL8ô¢J¡¹®üu“«×“2nÝ^ýײ–ÖVøßηn‹Ý·?ÀÏWKKë{ó=à_òÁ&÷³3ør;;}==|IGWW ±{B!FS•†ÕóGl´µµñb}òa0<>OaøB{™ÚÉ­R\;ìÛÔNu(KE}q7RSÈ$Ò¨ðá›¶mÏyö¬UË–5Ä ¤oÔˆÜã9´µ·×åpdëÕPj¬‘²6Ä7´²l‘”œ,wªIJIµ²lñüÅK aߤß*þՑõŸùæ½QqËԵ͕îh ßÑ–×o$»»}µ£o¤¤ZYZ>ñûúwT?Ÿx¸wtvê½xéÕ¤$_oo¤òˆVu¦RtF>{n`¿¾²uWçhU³U/T®}Tï‘zvÑñ¿UkÐPR)0æ0Tü"D—  „ÄKwïÝwvêðy¦¦H¥Ò ‰”–‘1iÊÔó§O654DÅŸ¢QiR©T,WÿqðÃGÙ³æG/Žžçèà€JMÏX±fíº•+Z4o†ÏÎ 1 !tîD<žþÂÅÄ“gΛ™™ äæâ\=¶¡ƒ}Þ6>Íùjw|Ý,¬Ö-­‡ ³lÞ\6¯^íÝ0'÷†!›Ö­ÇŒŒ051©ÞWUÔ—t#Å©C¿Î>;÷ìIJImimM„J45þrÿÂú*ÜÊToç‹—.oÙqpo¬¦Æçß~8ejŧO%%%›×­Ù´m{Þóúúzƒðóñ!ò©ÞÓB/_½Úó¥YZ9‚h…éB k¤Nâñ{{z<ÇãñX,¾<ÿÍÛ×ùù#†{þâ%†aw²²ˆÆTÞß O9[\\lbb<¨?/eaË5 †a¡°¶‡¼ŠQ}p)ì*êõ]{£²—l›«ß?kÚÑÇqy<wô›·ÄŽV:h;Ÿ8µoïìÔábâåÎ^^ªÏ9µ=SÙ´isêì9>ŸŸýä Qw…}[®§ihh %çç Å©èfrÈCªø-­­"'Œ¯¾wÔº§¡´RØTå]Ý\utt/_!–\»~ÃÖ¦©©|=|åšµ~¾‹æÏµ¶¶úsæÿRÓÒÝ\]îÞ¿7ÁýB÷îßÇÓß½¿I“&­¬­–Û”Í,á ¥_+üøñÕë×ÜÜä–754Œž3˦Mk©TzòÌÙ=º»¹N™4±y³f+Ö¬½{ï¾Túyšqñ_+\œœ&Žû] ,Y¾bÙŠU>Þ^“Æý.ŠVoØ N¼Ä}9÷·¿oçiD öîÝûù‹—¥,_½¦][‡‰¿ÿÆçó—¯YƒorüÔéCGŽvtsœ0žÉdÆìŽEÿNšÉÂsàó«x<Ç++/¿wÿÁá£Çü};S(©Tzöü…m;wy¸»O™<±™…Åâ¿Vܺ“‰oµjýúí'üþ[UUÕò5kU„Ú©£Û‹—¯>âižæ<+.)éìåõïÜ£´Æ–ܰek›V­†‡ –*Âb²x|ž‚ÚaB¨ªªŠËåÉ>D"‘­gŸÍÛb—Njٵ»ŸÞÍ,Ì¥RéÐÁ¡¡?£"£çÌÂóÁ¡SÇŽQ“&6³0_²|Å­;™Dþ6omÓªÕ°°PüåòÕkÛµm;ñ÷±<>Ø2Í2exØà‚wï£ñ=øïd&—˽°JP5n̘qcF/[¹Jª„²úJ¥Òwïß?}ö¬³·'•JuqrJIM“H$D3Êíwüù—úΞ¥z_(#—¹T*uvê ‘J3³îâ/ÿ)(xõúµg'wü¤ÓÊÚ:jâ„ækÖo¼wÿl#Ëõ´J¼YªªÆ=nÌèâ’’¥+V©H¯¬Fj¶!^Wg'™œš‘A,OJN673kfnŽW“¨o áíØéêìôGädkK«kÖÝðPõ%›sy ¢úાUÔë{÷Fe'.uεØÑØ—–þeG_¿‘lnfÖÌÂ}}I¢úsYísrs?WMIÕmUýÂ[Á`Ðh4ÕG«‚žöð‘²ósõB‰“?A$©èfrÈŸøîîD¡²o»jÍ4”s…Æú:*P©Ô?߫ׯϜ6•L&óøü›·nûm¬\2±X¼}×®qcFG † ðó …Ûwíž9)f×î/_ZYZÞøÐÅÙéöÌEEúúwïÝwsqV6ÉÑ”Íx]ðInÀõ¡°!d`` lF,;~¢{—.#Ç#„<;¹—–•ÅÅÇ·u°Ççpzvïèç‡KÄ6oœ0Þ¯³ñ²âÓ§šÓTThkk ‚ð¡Cºwí‚—«­¥µlåê²²2¼§öíûõé’H$ë7o)¯¨`1™ñ'Oøÿ6j$BÈýã¬yÑŸ>U0Ó€0„иɑ² F†Ç0L"‘>rtHèÀ~½{#„:uì(‰=6hB(Èß/ðu›6—WTè( µUKkvóöín!!¡´Œ }}›6­ïâC: ‰Dª[2Àϯ{—¤dÞŒÉdòù| –ü?4Áÿ>)Rnùð°ÁýúôŽ>lBÔ”ø“§*++54XúöùwÒ²BÈÞÎÿÜ#‘H9:dÐ@¼²î…BÑá£ÇœÚ·ÃÓúûuë‚ʺw!äÔ¾]¿Þ½B‰týæ-ÿîAáWÍ¢ïÁr¢:/_½ª¨¨ø}ô< ss„±±QBâ%‘H¤ð•Õ!t#%UCCÃÙÉ Ã0w÷äÔ´ÇOŸÚ¶ióùGèˆOK2˜rõUÑ«•¶Õ§C9lv«–Ö·ïdâw¤¦ghkk·µ·?sîo7WxôhÞ¬Y>ºwÿ—çã§Oûö饬PFöKù3ƒ¡¨TвóÎû*>}òìÔ‘Hàéî»o?Ñ»l?7‡ÍÁZö%~Ï­ê4"±ð±£F"„¤RiYYù?×o$#„$R)^ ñîÅf³ñlßøPYYéëíEæíå¡xЀ!„ÐÌ?§²u´BR {þâ塸#;vÅNž0îu~~ŧOö¶vüÛ¹C»v›·ÇH$RÙrñÛ‚ÄÊC¥ÓéíÚ¶½yëN×à`„PÚÍ›øt"öùX¨¹%•u;ƒÎ¨T)»r9óÏ?Ø:_ýSCC ô45G…‡oܺM*•.Y0ŸJ¥' $sŽxŸÿéÓ'{;;âûÚ;nÙ¾C"‘à þ ÿ+³;tdöàˆ›¥ìŸ‚w×’ð=(!6462Æ?WõìÖÕÞÖÖªE‹ ¿EJN=Êꋺ‘’êâÔA"óÅb[›6L#%5ͦuk¢©ÿ-¡/§E$[_û!${û7“É”íEr½ËÅÉéô¹¿¥R)‰DJ¿y«£« ~£’·‡‘ÌÇËs)ëiM ™ FÌ®Ý=»wµ³µµ²üÜ,/_½RÒ3%d2Ya<ê´!ÑJ^ËW¯)//×ÑÑyþòeÁ»wž:½ÿð}y§C†ŒŒ†÷êõëòŠ Ow"ÿsgK¥RÕ†}  ¶‡¼òœ%5\Õ{…²z}ïÞ¨òÄõyÕýSíýù¸óòðøkÕêÏ;úÅËwïß{ztz÷þ=úzРâò„\¶ªÓ(?S!„иÉQ² Ûµu>Ln7Éõíü7oª÷´Ì¬¬Õë7*{¦­¥ejbÂb1ñUx---¹MJËÊÐ×7ÁâC¬Ú¾‰•e ½&Mð%6­[óx¼ã§N;Ÿ ™>{Ž\õù|žÂrU„êîæºy{Leeå‡Â>z{zHÿ_ŠI‹KJT·$“É”*¿¡—F¥qù\©’{¤­,-‰ÚðÄ:ºíܳWG[«¥•±¹ì#B¨¢Bq#ðxŸïi"bÃ_Ê4Ë—|²Ÿ<‰?y*çÙ3mmmccüªìd¦6GkáÜÙGŸ\±fD"q°·9|˜¹™Y­ê‹_‘}ŸŸ”œB,L͸92|8ÑÔÕw™ìs„Š}¡¡¡:<‚ÈùDÜ!Ù^$×»\œœŽ{ò4ÇÀ@?ïùó°Aðµ::_ræp8xÎÊzF]8oî±'ðfiko?bøPs33eéy<ž†††ÂxÔiC¢•Úµu`2Éii]‚‚’SR­,[55|÷þ’9T[[Kaxå!¶Ž‘?“Á@©> ¤Ø—œfg×êWÑ 5\Õ{…6GGa½¾woTqâRç\¡¡¡¡fxÄq×®­‹ÅJNKšjeÙ¢©¡aÁ»w¨¦Ë²¹3 ƒ¡"ê¶Âk7cêm„‰D20ÐÇÏZ²çÉêG«Âž†·ƒÂósõBeOþ„Wù¯•å —[õó³²_Ζ˜j *¸|}¦êE¡P‚Ξ?ÿgTdjZúocFéñ'$ _² ÚØ¨©ì¶,«£«ëŽÝ±>²lÑ\[[Û©}û¤ÉMš4±¶²Ò××WV¨¾³’'?4Ð×711NIOwlë »¼àÝ»3çþ:¿C¢¬¼œU”••Ñét‹%7ÞTöR4¥ee —þåãé¹}ãzüûwïßO¿y«ú¨–øËa³B%¥¥D`¥e¥HÑøWá¸ØÜÌL$UUU5áè"„¢&NÐ×ÿêöZ.—[ÛP:H¤Ì»÷ÞþóOóff¦¦²›ë²9j¶¤B £¤¬DÙLƒŠmO=G!“ ?^¹vÝß·³Â­ð±cÔÄ r÷Óétõ÷ࢥy{yþ1y’–¦¦²=heiù¿iS…BᓜgGŽÅ/þkŶëkUß©it:}ÎÌéÄ—ržåî?tøav¶\lÄK¹Uª÷ÅâèyrÍ«¬ÍLMŒŒšÞÎÌÔÕÕÕÖÒ²³±yðèž›L·,£ÓéL&SYO£ÓéV–-fþ‰7KΑcÇýµ|ûÆ *Ò«ó‰PYR(”Ž®®É©i!©é]‚ƒn†) ÿIyyQÓ÷ï?|ªü¤æU‡C^Eƒ¨pÉö …õúÞ½±Æ—:çŠÚïh—äÔ´À€ÔŒŒ.Aò;Z™†û´ji]½o¨ßV ?Þ(<¾äVE=íYnR~^ªÞ5ž9UP=“ê¾Â¦HJN©ùFÈ*¡˜NÆ45ÿã‰.Áååå·lãñùþþÕ˜˜³ÙìO••íñdzܼ‹—¯P©ÔŽn®Å%%§ÎžslÛ!ÔÞÑñY^^JZš»›«Š54:U %Ø×ztér-éFæÝ»Ä©Tz0î™Lîèæj` ¯¥¥•š–N¬MIK·²lA4 LNøË¯'„Vs ýSP ‰ºw Á/˜aöøÉÓS*.Å@__[[;)9…X‘œšþuær›|åu~¾¶–‹Å20Ð×ÖÒâr¹mZµÂ¯^½NMK'“) ËUª‹å`owëNfúÍ[øµléµiIèt:>éWŠm Þ½;|Äða½{öØwðPyy¹Â­ ôõµµ´*¹•mZ·Â¯òóSÓÓ‰97Åá/ÿ)(ŠDÝ»„hjhà˳?‘;ð^¼|9füDG£ÑÚÚÛuëü±¨¨ªJq¥”Õ75-½½££m›6Äþ ð§Ñh©i$!DÔ1óî=™þðUÇS¹/0"ç6­ZUïrñ¸tèp'ënÆÍ[®.ÎÄUƒ”s–J¥7RR-›7G)ëi¯óóÇL šÅ¾kHpQQqUU•òžIVmø¥³yº»ç<ËMIK+*.îÔÑíëlÑ—½¦(ÿvVֳܼ~½{ „zuïvèÈQ‰ÔÒÚêÖÌì'Oæýoæ— ¥¯çpªMÇa5¦‘bRSccƒ±c÷ž ?©Tz÷þü-çÑãÇ,…9Éäž]»ÿäéÓ­¬­i4šÂZ+¬oÞóï?|Ô¿¯ì&t:½­½]ÆíÛ½{t§P(;c÷v Îy–ûòÕk¢?I$„Ðí¬Lã¦F¶6mTì eí/×u Î:œ=D"õë݋ؕW®]'“ÉÖVVé7o>ÍÉ™5ýO=­©¡¡H(Z»q³¯Ï?yú,~S-BHaz<¹©ßgd;›M›Öl±{Zµ´n¢«+;KL$S^Ÿž=ŽCÖºUËû=ÉÉÁ?s«> ð'¦&&u8ä•5ˆŠjbl¤°W(«×÷î*N\êœ+j³£¿ª6­[³utvìŽmÕ²å¿;úó‘«ðòq>„Ÿ>½|õš»›[GWW…'µÏTªÎr²k«­Õ{Z÷®]Îþ}^Ù;‹\¶ÄÉ¿:…9È 0r¹_Ùy£æACOPã „ À˜]»N3àÂB‰ÄâcÇO8tØÌÌlÖŒi½ztÇWutu=yæ ~MÉdÚ´iý,7¯C»vªK4ÐaVòEM4åªáϨɗ®\½žœr;3“„¹¹Ù„߯z{~¾™«G×.b±øÊµë/™EMokÓFnü…ªÝ)V}¦Ai ÓÒÒš>%êà‘£›·ïÐÖÖòñô\¾dÑìù nÝÉôñòT–Cn]Bá•kׯ^Or°³œ0nþâ¥rc=b“[·á/I$’¾ž^¯îÝûôì§ì$‹/_9wþBÓ¦MGG„wööº÷àamCuwsuîÐ!fw¬ qOûW«×’Ê0 @@Üš÷oí0„ÐÆ­Û«§><ïùó•Ë–`F£RG öתս¼lmÚX[ZÚ¶i³kï>“¹sëfÙFø;ᢡÁ˜½½ä>U ™Q‚ÜK--­éDŠ;ºyûm-­ÎÞ^Ë—,š½Pv2ô?£"÷>¼iÛv&“aok;tp¨Š*W¯oJz:Jmß®ÜV®ÎΙwï½-(ømÔÈ£ÇOlÞÓ®­ÃïcFÍ]°Õʲ…m›6»ö|©¯²}¡,eû¨UKkm--‰$»+§LžxòÌÙ„K—õšèŽ;ÚÑÁAEOCý9%rÿ¡¸MÛb˜ †½Ý—fQ˜û<Í+_#5ÛP¶"$ÉÝÍõBâ¥N;Vë®èß½ÆP^·`‰DréÊÕ‹—¯EMook‹aXMBiiiÖáWÑ Êvh]]…½BE½¾woT~âªù\Q›ýåP%‘HîÝ.\LħäÖVNœO¨TªQSÃÐþýº†¥ËÔ FÅT}mõ¾]½§1™¬³ŸWöÎ"—-qò—õ¿i*ëfr(Ì\îÀW¶_HkÖ¬@ÊeåÄ(ÄÍ5J 7‹ø•­M8 ¨‹×o_sض6»¡ú~eÆœ¹-­¬GGÝðpÙªÕ[Ö­iRíÆ«ñ£´aã×È[²Q…ר‚ù~d|YM›6EíÝ»'<<¢æ™¿Ê° Gõ] HO›õ²¬DÅ\ hÌh4ZUU•¶¦vý³ú!üõ}÷þýëü7C‡â‡•ôóL&ÖH޲¢ ¼%Ux*˜ïDîÀWFAƒ@W[£Æd EW[#G$Q=-…& ~Ý×øë›xéVf–¡MëÖrWåIØ¿ ¼%Ux*˜ï¡ú¯L̓†ª*>[‹ÕÐ5RŠ­Å‹E?ñ¾ü¹Ñh´OÜO¿Îîküõ=—p‘F¥Ž;_Sã›ÿ¥Æß†?ŠFÞ’*¼FÌ÷ àÀWBA­ÕxgØZB¡ ‘Lœ‚Ú¢Qi‚_i÷5þú®_¹Biog»ogŒì’†ÕøÛðGÑÈ[²Q…ר‚ùªøÊÔ0hŠÄ42Æ ×ü# …A§ÑÈR‘XB¥¨õÏ·@£B¡PÄb1þÛ¥  Ô÷Çmø­4ò–lTá5ª`V ƒŸÏÑf5òfâh³B!…©ÖI€Æ†F¥ EB:^ÿ¬~¿Z}¿hÃo¥‘·d£ ¯QÓ€j4ð«øœF|mÇÑÒŠ„ÌF<T Óé€JQëÍ¿Z}¿hÃo¥‘·d£ ¯QÓ€jºC/Éf%›P   •ÅÔ ÓéÔ¯UPÔÁ¼>.Ư‹ x9¹¹£¬k, ªªŠÇãË>¡\šø“§V¯ßàç»8zž††ÆÌ¹ód×Κ7ߣ“û¼Ù³x|ÞŒÙs–R‡&Žû!ô×âE[6¬«ž¡Âµ ó‰;ÿתÕþþ‹D·´¶š2mzrjZõ ãŽÅ/[±ª³·×ÒE íllfÌž{ûN¦Šv[°x©£ƒÃä ã¸\îo&ñ«ø³g̘=cúǧΘ‰§ÙèðúM›|}—,˜ßºU˳çdܺU=‡oÕWüâ\ž Óh :“B¡EŸz“”S¼¸osÏVœ‚ÒªÈØÃ|­žŠÞ–cg®íéÚºiôì7@u‰D²}ÇÎЦý1!0vüÄ¿üS~}zŠGa6'zAYYYýsàp8¶6mB.ÎNúzzÕ£R¸¶z>ZZZ[cvLømìȈp„PP€¿P(Ú¶c§—G'¹·íØ: ÿŸS¢B~¾y/^ž» ¢Yúôê9xÐ@„нû÷KKKwmÛbei‰²°0?qR$!„vÆî 4Ï380°¨¸8fç®r9ß„‚AFg0è/> ÎfDuiséeI…Qì•ámžJ‹Ê·îíšÚͯ½…:¬]¹\—£+»äá£G«×o ^¼+üø1$(Xàóömâ%ñܤ‰.BH,‘¿=³þ9¨©z>Ï_¼(++sqv&¾gáéá¾pÉ2©TJ&™ÅÉ{ñ¢´´T6˜Ío¤¤Îœ3WYYn®.ø s ‹µlåªaaƒ;t°³±±›mƒzõúuYYY°Lž!«Ö­¯žðM(4ÐéŒÊ*>IR•úRÐ×Ý"5;?<ÐæñI%OpùÆÍI!újŽBv¶¶M e—ðø<Ù—>"„ôš4!–è}ýÑŸSÓ—#ꟃšªçS^^:b¤Ür§¥¥õ%YY¹\Tššš::Ú*ÊÒÔÔÄŸ4i¢»kÛ–í;wÿ9s–X,vsu™6%ÊÊÒ²¨¨!ÔD÷Ë€LOOÏçWVVÊå|Š T:ƒÁèØZ[“Te Iºü”çkc~¯@,ð/^»;5Hü)çF€¿Ù—”˜›™áKJJKþãêÌÐÐ!´lÑBc##ÙåL&Sö¥>B¨´´Œˆ0ÿÍÛ‡²eÓT¿ìB°³µÝ°f•@ Ⱥwëö˜ ‘SΞÖ××C•”–y—”0 ÙÁ ð )¸’N£Ñh4:r`ªïù+©Úttæ!OÀ«¼xý摹=;Ù™Ñi´o™©)‡ÍN¸˜H,¹tåêœC™š˜pØìO•ŸÚ·sÄ9¹¹/]¢R¿™™š²ut/_&–D/Z|àpB¨´´_¢ðöI„ÐÓœœÀ®Ý¹\.ƒÁpws2xл÷ïù|¾©‰ [Gçâ¿ß˜@%$&ÚÙÚü7ð R0ÓÀ`01LŠrha7§gÿ…§Í ž—œŒîíÐÂ@$2ÌZ—£F=rÄêuë)Šc[‡ë7Ròóß „H$ÒwÍÿŠÉ)æÎ:Ôj­lÑcF\±z퇅v¶6OsžíÚ³wÞ¬ÿ)ˆpDÄÚ›‰Ô®mÛôŒŒ¬{÷Λ½xɲ«† ½wÿ~γg ‹°0· …3æÌíÝ£G%—»+6ÖÑÁÅb!„F„_¿i3™BikowåÚõ;™Y;¶lþ†»¥`Ð` oô®°À¤©•JuietzAŸÓiyÃý[±Åbñ»Â}£Ú¤ÊÐÁ¡UUUqG?uºKpЄßÇΚ]«ùŒ:äà`gçÜ¡ÃÒ+554’.'Öj­\Ñb±øÈ±øý‡›™šÎ™9£wÏÕ“ &–HŽ?~ôX|³f+–. ðGmÙ3'z‡»{ôÜ9ÃGŽ®¾¡†kݪ•«×¯Ÿ½€Åbº¹¸ü9_1l¨X,>~òÔá#G›YX¬XºÄÅÙéÛî€@Z³fuxxB(ñjbhÿP„X,úðñ]YE)†aò©I$ŽŽnSc*õ[^¡xü䩉‰1‡ÍÆ_‰_¹fÝíÔdõ'êŸäÄÅÇù!„öîÝ¡`¦J¥™[˜«ûýˆú›>k¶_gâtrJªM›Öµz¿¯PZÿ,ê¯oï^[cvèèè4³°HËÈHNM[8îœTkƒ†ˆaC%ɉS§ ?~4jÚ4jÒÄ^Ý»ÿÇ9@µF1h “ÉcFŽ3²îÿZ©þ9@5rý³À¯ P  4@-0h€Z`еÀ jAÔƒ¨ P  4@-ßqКžîèâF<œ;yöºgÿ±X,›àCaaÝr®Ã†–²å¿y»5fǯÎ?_£ø)ø/—\>÷VVJÞ«gR©Dn™L±nÞʵƒ§&KSÍ–.Œæp8!'3sÓÖm÷<\»r9BÈÎÆfˆuºNC7Bãõæí›m;vè×WCƒÕбøÕ)4dÞ˨ªªê`Ó‘B¡È­’H$…¥™÷2¼ÝýÕ,ÀÙÉ©©¡!þ<ÐßÏËÓcbÔ'$t áp8îî ÝP‹‚Ëoß½63jnbbjll"÷01153jþöÝë:—çÙ©“—§Ç‰“§Ñ×sò9¹¹ã'GyùxúLˆœò:?ŸH÷üyø¨1.^=úö;wþ‚ln¡pý¦ÍÝz÷uõðò ž5%'7÷ø©SNî•••D²aCæ/Z\=˜ýwïéêé9õÏ;™YŽ.nEÅÅøªcÇOôèÛÏÕÃkàa×o$ËF;zÜxWOï~¡aYwïYUOOl’ýøqʱaá#”¬¢¹ÆOŽBù‡tutq#ÆîÛÒ³~¹'!ñ’lz«p/^¾Š3ÖÅëk¯>ÇORÝ’ «à—¥`Ð@¡PYL :N­†N§³˜ µö}Ñ©cLJÙÙ†K¸\îo&ñ«ø³g̘=cúǧΘI¬7)ÒÁÞnqô :F¯O‘$‰ø‹³0·`±XËV®JJNær¹v66ógÏ¢ý;4éLlØ­kÈ£ìÇófL „aXQQÑ̬sçBRLÚÙÛ;%5M*•"„®\»îçÛYîþŒ Þ~üH, ø|—Æó/ÊÊÊ\œy<>þðôpš“#•HBÄP@O¯ BH,‘(M/•â)eÇ+ÊV³éþ)((++ – ;$0ðñÓ§ªWÉ’kÌgÏrñ)ÕÉ ¹üšÌ4Ðht:¡l¦NgÔsÐð¡°Édjj~ùþE“&º»¶mÙ¾s÷Ÿ3g‰Åb7W—iS¢ðY„^“&DJ}>ŸOÌRÜÉÊÚ»çþƒl6»y³fšør_ï ›·?/.f0ø{XqqÉøI‘ݺvY¾d1[G!”šž~ùê5„e‹æfIÉ)úúl6ÛÕÙI.ü½S6ç’Òü‰¡¡BhÙ¢…ÆFF²›T|ªPXeé™L¦\Ê⥫I__!TRZú¥AJJ †–––ŠUr1È6¦†KKK«þøé½|ùRÁå :F£ÑÈJÐh´úÜÓqëÖõÉúö‘]ø4''°kw.—Ë`0ÜÝ\‡ ôîý{>ÿó/ßÀ0ìï„›6mðǫׯBá°°ÁøûB(3ë.‘§·wRrÊå«×ü;w®þÝQ3SS›p1‘XréÊUü‰©‰ ‡ÍþTù©};Gü‘“›{ñÒ%e£(õÓ«X¦&&l‹2_‹HHL´³µQ½J–lcžýû¼£ƒÃ7 À¯@Á!ƒÁÄ”_eÇ0)ƒÁDj»“™‰OéóùU™wïÆŸ8ôõw,Ì-„BáŒ9s{÷èQÉåîŠutp`±>ÿœÑÉÓg¨TªƒíÅKWîÞ»O|Àʲ‹ÅZ²|Å þý$iJZÚí;™¡Ì¬¬àÀ@_ïý‘Éä±£GVŠF£9bõºõ ű­Ãõ)ùùoB$‰F£5rÅêµ>ÚÙÚ<Íy¶kÏÞy³þ§¬‚ê§·j¡4`¹ù>ܹ‘œbaaîÜ¡F>|ý¦Íd ¥­½Ý•k×ïdfíØ²Cá*¡HHäF"‘ðÑŒƒmBâ¥íÞ¾­nø)4è½+,0ijVý³²X,~WX` o¤VÞ!„f͋ƟÐh4s3ÓIã~28T.†kݪ•«×¯Ÿ½€Åbº¹¸ü9™X»ê¯e;c÷Ä=ÖÔÐpáü¹îî©éé!‡³~õÊõ7ω^¨ËáôìÞíè¡C#F^½žØÞÑ‘Ãf“ÈdWgg… ZUUwôØñS§»Mø}ì¬yÑø$ÊÐÁ¡b±øÈ±øý‡›™šÎ™9£wÏx¡Ê²ªž¾z2÷ìÞMaÎvvÎ:,]±RSC#ér"B(bØP±X|üä©ÃGŽ6³°X±t‰Ë¿_®’ ›D"m^·nñ_ËãŽ316^¾dQ‡öíê€_iÍšÕáá¡Ä«‰¡ýCBb±èÃÇwe¥²?¥ð95‰ÄÑÑmj`¬ì6Éo+5=}üä¨Ä¿Ï¿)Y+Æ:8ØÏýßL…k?yjbbÌa³ñ—GâãW®Yw;5Yîf à—ä„Ú»w··‚™*•fjlajlÑСÖËëüüœÜ\ü7 š>k¶_gbJ#9%Õ¦Mk1ÊÔë·­‡ã®\»ffjêìÔAYš¾½{mÙ¡££ÓÌÂ"-##95máü¹ 8Ðxýœƒ†½ûÐéô¥‹ÉJÿ÷wİ¡‰äĩӅ?5m5ib¯îÝ:p ñjÔƒw÷û·oÖaÃKçÏÕ˜†L&9bÌHø'L€ZÈõÏ¿4@-0h€Z`еÀ jAÔƒ¨ P  4@-0h€Z`е|ÇACjzº£‹ñpîäÙg`èžýÄb±l‚……u˹Ê‘J¥G㇅èèÝÙË? |Ô˜ÄËWê“aþ›·[cvðxüïZ©TºrÍZoÿÀŽÞëí·jÆ,ÏÇÃ×_(Ê­ÊóïxEÅÅr%ÖØ3ká÷hÉÜ; Œ‚ÿrÉåsoe¥ä½z&•JäV‘Éëæ­œÚyl¼R”ô¤dÉKKŽê–.Œæp8!'3sÓÖm÷<\»r9BÈÎÆfˆuºœrø~þœ9+-#cð £GDTVV^Kº1í³>|ˆ6$¬n¾yûfÛŽúõÕÐ`}¿°fg8÷û˜Ñöv Ópõömw}eeerjª¿¯¯ì„ÄDÕ[©è™ [h´ 2ïeTUUu°éH¡PäVI$’ŠÞElºåcoÆab›Î?Û;ÑUuÎNNM ñçþ~^ž£þø;!¡[H‡Ãñpwo¨šŸ;áúûcwÙÙØàKzvï¶hé²u›6÷êÑCGG»¡«Qee%Bh@¿¾úzz K}Û]ߦuë å /]nÓºõÓœe[©è™ [h´\žxûîµ™QsScc¹‡ŽžÑŽL?;])…A¦Ð$QmËóìÔÉËÓãÄÉÓèë ØœÜÜñ“£¼ü<ý&DNyŸO$È{þ<|Ô¯}û;A67P¸~Óæn½ûºzxùOŒš’“›{üÔ)'wü7 lÈüE‹å"Ù{à@®]ˆ.bø0Wç¼çÏñ—±ûö‡ôì…O_'$^Âa7ÞÕÓ»_hXÖÝ{øªñ“£Bþ!]]܈”ÙGŒ>BEž…í G®”C•  :5B‰ïÞ§Ÿ«‡WÿÁa/]R§Äü7oFý6ÎÕëÏÀAw²²<|4hèp¯^ý¦gÜ”-QuÑû îÞÓÕÓ;rêŸw2³ˆk rºÝHNáòxÄ’/_æ=Þ%8¨n=SïÉ cVQM…}¸½þ   •ÅÔ ÓéÔ¯UPÔÁ¼>.Ư‹ x9¹¹£¬ëPd§ŽfgcF,ár¹¿M˜Ä¯âÏž1cöŒé?~œ:c&±vܤH{»ÅÑó¬­¬gϾuû±jÓÖmÇõêÑ}ùÒ%‘Æ¿yûÏ„È)>^^‰$-#O“ÿæí³Ü¼à€Ù>>ËÍ ðó“‹ÍÜÌlë†õÚ·Cí?txý¦Í¾¾KÌoݪåŒÙs2nÝ"RNŸ5ÇÝÍmþìÿqyÜé³çà 'Žû!ô×âE[6¬#R.X¼ÔÑÁaò„q5橺ÕKQ­l*(¬Qܱøe+VuööZºh¡ÍŒÙsoßɬ±Ä¨?§{{yΟ3‹_UõÇ´SgÌìÞ%$zÎ,P0{~´šEÇŸ<µzý†?ßÅÑó444fΧ,òÎÞ^$2ùêµëÄ’ -[´himUÏž)§Æ¤:f…ÕT؇kU(üg\ž Óh :“B¡EŸz“”S¼¸osÏVœ‚ÒªÈØÃ|­žŠÞ–cg®íéÚºiŠljh(dgróòJKKwmÛbei‰²°0?qR$ú<á×ÙçÏ)Q¡ €€ðQcbvï1|¾JP%ˆš41,tþ’ÃaO™6ƒL";ØÛ%%§ „._½Êa³Ý\]dc((x‡211V¤H$Ú»'lÐ@¼èàÀÀ¢â☻;º~¾ãåÑiTD8BH"‘Î]°°¬¬ŒÃáØÚ´A¹8;É^8èÓ«çàAUä9jD¸êv Ñh²±É•Rc¨DªU¯‘¶¶ö¶;CôÇsðóÍ{ñòÜ… íÛª.qXØà>½z"„Äɼ‹͟׳{7âeYy¹:Eoß±3tà€iLÁwýØñ?~ü¨0r‹ÕÙÛëüÅ‹=ºuÅ—$$^êѵK{¦¶¶â‹Sª;ªD"Q³Â>£°—””ÖX¨\¯€ÿ€‚™Î`Ð_|œÍ,éeséå™;ï&Ädélý´+,dܺ·ñ7ïçæu+’D"qæ,kÙÊUIÉÉ\.×ÎÆfþìYÄ9±KH0±a·®!²Κ1-,t†aEEEw2³ÎO@I1igoï”Ô4©TŠºríºŸog¹û3ðO“4]Yÿ”••KB?}J¼ôòè„?ÑÓk‚K$ʲ"Æ+5橺êªÜ€I™ê5Ê{ñ¢´´4D&ç˜Í§FFÖX¢‹³þÖȽ”ý’‚²¢ÿ)xWøñ£lÑAþ*‚ï|óÖíÒÒR„Г§9ùoÞ„ÔæÚ®zÏ”£zÔ³Â>£¬«Y(ü—ètFe•„$©J})èën‘úä}x ÍãÒ²JÁå7'…èûµ·¨s‘ ™L¦¦¦&±¤IÝ]Û¶h°4þœ9ËÓ/à÷I“Ÿ¿xA¬ÕkÒ„xn oÀçó‰YŠ;YY¿OšÜ©³ïБ£vîÙCœí}}¼ËÊË<|ø¡°0ûñã ¯¯M „ŒŒš"„Þ¾}[=¼Õë7œ>w®¨¨!ÔDW÷Kzz²EsÔ¾Už¨iyªnejÌV¶©U¨^£ò²r<7Ùºèèh×X¢Ü[ZïpÕ‹.üXˆ¾Þõz*ïúôp﨡¡qñò„PBb¢­M ss5w¡zÏ”£z}¨)f…}FYV³Pø/)4Pé £ckCMR•&éòSž«ù½q%wñZZìÔ vÍuêSdÆÍ›mìå>ÏÙÙÚnX³*åêå-Öó¸<Ù˺Å%%_ž3 ü´^\\2~R¤±‘QÂÙ3 gNoÛ¸¡oï^x2Ë-,ÌÍ’’S®\½Æf³]ÿý¤K016nÞ¬ÙÅË—å–¿ÎÏßwà`qQ±¾¾B¨¤´T6 ƒ¡¥¥U犫“§Šv¨O¶uc` *--#–ä¿yûðQö÷+‘€¿õÊîú’Òéi4Z€Ÿï…‹‰¡‹—/‡Õzš)é™rTì ÚÆŒ'VÖ‡Õ,þK  tF£Ñi”S}Ï_IÕ¦£3y^åÅë7ÌíÙÉÎŒ^©ÑŒ[·®ßHзì§99]»s¹\ƒáîæ:dð wïßóùŸ"‰¸3ð¿lÚ´ÁOë¯^¿…óu>b2³îyúx{'%§\¾zÍ¿sçêßE |æÜßÉ©iÄ Ã6lÞB&“üýMMLØ::e¾Ý˜hgkƒê¡ÆLLÛÔ­WÀ÷ `Ð` oô®°À¤©•JuietzAŸÓiyÃý[±Åbñ»Â}#õ ˜5/B£ÑÌÍL'û}ÈàP¹4¬u«V®^¿~Nô‹éæâòGädbíª¿–íŒÝwôXSCÃ…óçz¸»§¦§#„8ÎúÕ+×oÜ<'z¡.‡Ó³{·£‡ yõzRp``{GG›M"“]F"‘Ö¯Zy4þøésç®^O"‘HÖVV‹£çwàG *‹ŸDV· ß¼}³mÇÎýújh°¾_س³Žû}Ìh{»úçFì @˜™•µnã&‘H4zDÄ÷‹ÀJÁ !ó^FUUU›Ž En•D"ù§è]Ħ[>öf&¶éü³½]UàìäÔÔÐèïçåé11꿺…„p8w÷†ªù¹ó®ß¸±?v— ¾¤g÷n‹–.[·is¯=tt´*°UVV"„ô뫯§WÿÜdw_g„ÐÁ¸84¨NÁ剷ï^›5711566‘{èèíÈÔñ³Ó•Rd AÕ¶<ÏN¼<=Nœ<¾žÎÉÍ?9ÊË?ÀÓ/`Bä”×ùùD‚¼çÏÃGqñðêÑ·ß¹óds…ë7mîÖ»¯«‡—O`ðĨ)9¹¹ÇOrr÷ÀßYq†Ì_´X.’½ôèÚ…1à"†suqÎ{þ»oHÏ^ø…•„ÄKøB"ìÑãÆ»zz÷ ˺{_5~rBÈ?¤«£‹‘2ûñãˆ1cÃÂG¨È“ °äÈ•Rc¨r¨Ö¾]»’’RÙ+,uhä/_EŒëâáÕµWŸã§N©ÎŠX{$>¾{Ÿ~®^ý‡]¼ôUË‚‘cï30´¬¼¼¶]À·¢`Ð@¡PYL :NýZ…EÌëãbüºX𸀗“›;:ÀºEvêØñav6†aÄ.—ûÛ„Iü*þì3fϘþñãÇ©3fkÇMŠt°·[=ÏÚÊzöüè[·ï«6mÝvðp\¯Ý—/]9aü›·ÿLˆœâãå%‘HÒ22ð4ùoÞ>ËÍ áCaá³Ü¼??¹ØÌÍ̶nXß¡};„ÐþC‡×oÚàë»dÁüÖ­ZΘ='ãÖ-"åôYsÜÝÜæÏþ—Ç>{¾pâ¸ßB-^´eÃ:"å‚ÅK&OWcžªÛP½ÕÙÊP£·ÿüÃd2Y,f}yú¬Yö¶¶‹£çµnÕjá’eIÉÉ*²ÂWÅ‹_¶bUgo¯¥‹ÚÙØÌ˜=÷öL|•D"™:óïÞ¿Ù¼‰ÃfסËø&\ž Óh :“B¡EŸz“”S¼¸osÏVœ‚ÒªÈØÃ|­žŠÞ–cg®íéÚºiŠljh(d?¤ææå•––îÚ¶ÅÊÒ!daaâ¤Hôyï³ÏŸS¢BAá£ÆÄìÞ=bø0|• J5ibXè ü%‡Ãž2m™Dv°·KJN @]¾z•Ãf»¹ºÈÆPPð!dbb¬,H‘H´3vOØ xÑÁEÅÅ1;wwtý|9ÆË£Ó¨ˆp„D"»`aYY‡Ã±µiƒrqv’½pЧWÏÁƒªÈsÔˆpÕí@£Ñdc“+¥ÆP‰ªªªÂç„BAÖ½{»÷ì ðó%‘HD‚Z52>Xé,»ËvìŽõñòR–UII)›­³mÇÎÐýñ­ü|ó^¼^^æf56€ïJñ NgTVñI’ªÔ—‚¾î©Ùùá6?H*y‚Ë7nN ѯóˆ!ô¡°ÉdjjjKš4ÑݵmËö»ÿœ9K,»¹ºL›…ÚFé5iB¤4Ð7àóùÄ,Ŭ¬±{î?xÀf³›7k¦©¡/÷õñÞ°y˃‡³?Æçóe5E½}û¶ú[Ñêõ¬­,MMBMtu‰åzzz²EsÔþÒQÓ¢¢bÕyªnejÌV¶©«[»r¹.G!D"!cccâ¦HBYn— „B.—«¥¥¥,«ò²r² ŸæävíÎår †»›ëÁƒÞ½Ï羟ø.†a'$Ø´iƒ8^½~- ‡… fë|ÄdfÝ%òôñöNJN¹|õšçÎÕ¿;Š6øÌ¹¿“SÓˆ%†mؼ…L&øû›š˜°ut.Ê|»!!1Ñζæ‹*Ô˜§êv¨s¶õQ·F–Ýegÿ>ïèà :+3SS¶ŽN¢Ì.zÑâ}"„ŒŒH$ÒÌ?§¾xùòȱøoR)u£àòƒÁÄ0)BÈ¡…AÜœžýž672xR\r2º·C ‘HÈ`0Õ/àNf&>“ÏçWeÞ½âdP@@Ð×ße°0· …3æÌíÝ£G%—»+6ÖÑÁÅúüûH'OŸ¡R©v¶/]¹{ï>ñ•+Ë,kÉòƒú÷“H¤)iiøýö™YYÁ¾>Þû"“ÉcGTX¿>½¯''Oþcjp`@ûvŽ\.ïzÒûŽ5¿f1"|øúM›ÉJ[{»+×®ßÉÌÚ±e³êÊâoœ7’S,,Ì;t[K£Ñæ) Õie”eûMúG™D"]¼t ße ‰—~òÔá#G›YX¬XºÄ¥Úe9vvÎ:,]±RSC#érbõ óÄ«Sc;¨P‡PÕT‡F&‘H›×­[ü×ò¸£ÇLŒ—/Y„…UuVÆ„‰%’£Ç=߬™ÅŠ¥K455ˆAB(râ„+W¯mܲuî¬ÿ}“ª¨-Òš5«ÃÃ#B‰WCû‡"„ÄbчïÊ*JeJásj‰££ÛÔÀ˜J­û õ¥¦§Ÿ•ø÷Ùê×ÚÕ10l¨ƒƒýÜÿͬö@MÐÈð‹‹ ò BíÝ»ÇÛÛGÁL•J35¶05®û÷#ƒ×ùù9¹¹ø÷þÁw ¿jý³h„Ž»ríš™©©³S‡úç‚F€_ÍÏ9hØ»ÿN_ºh™üÿ÷÷/~5zÐàáî~ÿöÍ:lxéü¹†Žýç ¿øŒµÀ jAÔƒ¨ P  4@-0h€Z`еÀ jAÔƒ¨å;RÓÓ]܈‡s'Ï>C÷ì? ‹e|(,¬[ÎuذÁý¸‘ þË%—Ͻ••’÷ê™T*‘[E&S¬›·rjç±ñJQÒ“’%,],9ª Xº0šÃá „x<þÌÌM[·ÝðpíÊå!;›-ÖérjÈ‚AC潌ªªª6)ŠÜ*‰DòOÑ»ˆM·|ìÍ8LlÓùg{'ºª.ÀÙÉ©©¡!þ<ÐßÏËÓcbÔ'$t áp8îî ÝP‹‚Ëoß½63jnbbjll"÷ÐÑ3Ú‘©ãg§+¥0ȃ$ªmyž:yyzœ8y}=WŸ“›;~r”—€§_À„È)¯óó‰yÏŸ‡ãâáÕ£o¿sç/Èæ& ×oÚÜ­w_W/ŸÀà‰QSrrsŸ:åäîQYYI$6dþ¢ÅÕƒ9ß½O?W¯þƒÃ.^ºD,Ý·?¤g/üzJBâçåD´£Çwõôî–u÷ž²ÈUä#ëØñ=úösõð8dØõÉÕ¨n…ÕWªš… )4P(TSƒN§S¿V!@Qóú¸¿.<.àåäæŽ°®C‘:v|˜a±„Ëåþ6a¿Š?{ÆŒÙ3¦üøqꌙÄÚq“"ìíGϳ¶²ž=?úÖí;ĪM[·<׫G÷åK—DNÿæí?"§øxyI$’´Œ Ÿ˜¥¸“•µ3vÏýØlvófÍ454ðå¾>Þ6oyð𡱱qöãÇÇý.CyY9BHOOX‚Çó,7!ÔDW—X®§§'["çëïz(‹¼¨¨Xu>åå¡¡#FÊÆãñ´´´ä*l---eÕWjm ä(4Pé £ckmMR•&éòSž¯ù½±PÀ¿xífìÔ ñ§œú™qóf[{Ù™„­í†5«AÖ½û[·ÇLˆœ’pö4¾ª¸¤ÄÜÌìóóâbƒ¿Á—ŒŸÙ­k—åK³utB©éé—¯^CY¶haan–”œb ¯Ïf³]äb00ÐG•––9ç¿y[^^®¯¯‡*)-ýRbI ƒÁPñžª0òó144@-[´ÐØÈH67&“Y½…-P\¢´úÊÔªP@Ž‚ËtF£Ñi”S}Ï_IÕ¦£3y^åÅë7ÌíÙÉÎŒþï…ƒ:ȸuëúä}ûÈ.|š“ص;—Ëe0în®Cz÷þ=ŸÏÇ×ß;À0ìï„›6mðǫׯBá°°Áø[&B(3ë.‘§·wRrÊå«×ü;w®þÝQ3SS¶ŽNâåËÄ’èE‹÷~òÔá#G›YX¬XºÄ¥ÚÕ u"W˜9nèàP±X|äXüþC‡ÍLMç̜ѻg…¥ToÕÕïÙ½›²€Õ/CZ³fuxxB(ñjbhÿP„X,úðñ]YE©ìO)|NM"qtt›S©u¿B¡¾Ôôôñ“£ÿ>Kü¦d­ êà`?÷3ë°m#QÏê#.>.È/!´wïoo3 T*ÍÔØÂÔ¸îßh ^çççäæâ?o€úû9ï€;p8îʵkf¦¦ÎN:à'ñsöî?@§Ó—.Z@&Çÿý üRõ ÁÃÝýþí›uØðÒùs {·ðÍÁq¨ P  4@-0h€Z`еÀ jAÔƒ¨ P  4@-ßqКžîèâF<œ;yöºgÿ±X,›àCaaÝr®Ã†uÈ¡þe?ÿå’ËçÞÊJÉ{õL*•È­"“)ÖÍ[9µóØx¥(éIÉ’–.–Õ,]ÍápB<ÿNf榭Ûî?x¸vår„Í– ët95äа~ˆ €ÿ€‚AC潌ªªª6)ŠÜ*‰DòOÑ»ˆM·|ìÍ8LlÓùg{'ºª.ÀÙÉ©©¡!þ<ÐßÏËÓcbÔ'$t áp8îî Ý5ø!‚þ .O¼}÷Ų́¹‰‰©±±‰ÜCGÏhG¦ŽŸ®” Sh ’¨¶åyvêäåéqâäiôõÌNnîøÉQ^þž~"§¼ÎÏ'ä=>jŒ‹‡W¾ýο ››@(\¿is·Þ}]=¼|ƒ'FMÉÉÍ=~ꔓ»Gee%‘l@Øù‹WæøI)ºvwtqË~ü8bÌØ°ðr—'ŽÄÇwïÓÏÕëÿà°‹—.)‹\–êZ(¬‚lãŒ7ÞÕÓ»_hXÖÝ{ÄVÇŽŸèÑ·Ÿ«‡×À!îßHn Îà×¢`Ð@¡PYL :NýZ…EÌëãbüºX𸀗“›;:ÀºEvêØñav6†aÄ.—ûÛ„Iü*þì3fϘþñãÇ©3fkÇMŠt°·[=ÏÚÊzöüè[·ï«6mÝvðp\¯Ý—/]9aü›·ÿLˆœâãå%‘HÒ22ð4ùoÞ>ËÍ ¨‰·Â”þ¡‹—::8Lž0N6}ܱøe+VuööZºh¡ÍŒÙs¯%ÝP¹,eµPXb«é³æ¸»¹ÍŸý?.;}ö"Œ¿V­ô÷_¼ º¥µÕ”iÓ“SÓþ£þà¦àòFcЙ -úÔ›¤œâÅ}›{¶â”VEÆ>ækõ¬Pô¶{ð8sõhO×ÖMëPdSCC@ ûù>7/¯´´t×¶-V––! óø'E¢ÏÓ~}þœ… 5&f÷îÇá«U‚¨IÃBá/9ö”i3È$²ƒ½]RrJP@BèòÕ«6ÛÍÕ¥z$úzz S8×§WÏÁƒ"„RÓÓñĉdÛŽ¡úãÁøùæ½x¹nã&…‘Óh4¹²ª×ÂÕÅYYJJJñ—^FE„#„$éÜ ËÊÊ´´´¶Æì˜ðÛØ‘á¡ ¡P´mÇN/N Ô…ü*Ì4Ðhtƒþâ£àlfÁH/“˜K/ÏÜy7!&sHgë§…Xa¹ ãÖ½¿y‡87¯[‘$‰ø‹³0·`±XËV®JJNær¹v66ógÏ"Þw»„vëò(û1±á¬ÓÂBaVTTt'3ëÜù„“vööNIM“J¥¡+×®ûùv®~NYÊꃌ¼/JKKC‚‰%1›7®_½REä²”ÕBYðµÄP@O¯ BH,‘<ñ¢¬¬ÌÅÙ™ÇããO÷§99x€ïGÁLF§Ó•U|’¤*õ¥ ¯»Ejv~x Íã’Jžàò›“BôýÚ[Թȅ…L&SSS“XÒ¤‰î®m[¶ïÜýçÌYb±ØÍÕeÚ”(ü³;BH¯I"¥¾ŸÏ'f)îdeíŒÝsÿÁ6›Ý¼Y3M |¹¯÷†Í[<|hllœýøñÄq¿+ ¦zJü;#²ááÊËÊBzzzÄMMMMMM‘ËRX ---eUÀqª}k£¼¼!4tÄH¹å<OKK«Î;¨‘¢A•Î`0:¶ÖÖ$Uh’.?åùÚ˜ß+ ü‹×nÆN Ê©O‘7o¶u°—i@ÙÙÚnX³J dÝ»¿u{Ì„È) gO㫊KJÌÍÌ>?/.f0ø;zqqÉøI‘ݺvY¾d1[G!”šž~ùê5„e‹æfIÉ)úúl6ÛÕÙIY0ÕSfܺ¥0¥>B¨´´Œ&ÿÍÛòòr{;e‘ËRX‹â¥UPÆÐÐ!´lÑBc##ÙåL&³>;¨‘‚ËtF£Ñi”S}Ï_IÕ¦£3y^åÅë7ÌíÙÉÎŒ®hú]M·n]¿‘< oÙ…Osr»vçr¹ ÃÝÍuÈàAïÞ¿çóùøÚ„ÄKø ÃþNH°iÓp¼zýZ  Œ¿Ý"„2³îyúx{'%§\¾zÍ¿³ÒkµJifjÊÖÑI¼|™X½hñ¬yóTD.Ka-TWA!S›ý©òSûvŽø#'7÷â¥KT*ß“‚wƒ‰aR„C ƒ¸9=û/jŒ‹‡W¾ýο ››@(\¿is·Þ}]=¼|ƒ'FMÉÉÍ=~ꔓ»Gee%‘l@Øù‹ËE2~rBÈ?¤«£‹›\0r«ä;~¢Gß~®^‡ »~#_¨0þ‰ïÞ§Ÿ«‡WÿÁa/]"–ÇîÛÒ³~A'!ñór"ÂÑãÆ»zz÷ ˺{OE]²?Ž36,|„Š< jƯ°îÊZLYíü  (*‹©A§Ó©_« ¨ƒy}\Œ_ ðrrsGXסÈN;>ÌÎÆ0ŒXÂår›0‰_ÅŸ=cÆìÓ?~ü8uÆLbí¸I‘öv‹£çY[YÏž}ëöbÕ¦­ÛÌß.©M|IDATŽëÕ£ûò¥K"'ŒóöŸ ‘S|¼¼$IZFž&ÿÍÛg¹yÁraL÷;Bè¯Å‹¶lX§þª¸cñ­Zèï¿xAtKk«)Ó¦'§¦©Ž_™¸cñËV¬êìíµtÑB;›³çÞ¾“‰ÚèðúM›|}—,˜ßºU˳çdܺEl5}Öw7·ù³ÿÇåq§Ïž£"à‹—::8Lž0®Æ<ÕŒ_aÝ• ¬v~\ .OÐi4I¡Ð¢O½IÊ)^Ü·¹g+NAiUdìƒa¾VÏ Eo˱3WötmÝ´E654²3¹yy¥¥¥»¶m±²´DYX˜ÇŸ8)}žÆðëìóç”(„PP@@ø¨11»w> _%¨DMš:Éá°§L›A&‘ìí’’S‚B—¯^å°Ùn®.raØÚ´A¹8;éë驹J,oÙ1á·±##ÂBAþB¡hÛŽÓ¦D*ŒŸF£)k‰D²mÇÎÐýñªøùæ½xyîÂ…vŽmwÆî 4_XT\³swG×Ï—¼<:ŠGI$Ò¹ –••q8…÷éÕsð !‘H¤0ÏQ#ÂU·¿lüÊêîåÑ©z‹)«‹³Ó·é¶‚‚™Î`Ð_|œÍ,éeséå™;ï&Ädélý´+,dܺ·ñ7ïçæu+’D"qæ,kÙÊUIÉÉ\.×ÎÆfþìYÄ;V—`bÃn]Ce?&6œ5cZXè ÃŠŠŠîdf;Ÿ€’bÒÎÞÞ)©iR©!tåÚu?ßÎÕïϨƒç/^”••¹8;óx|üáéáþ4'ÇÌÔTEü å½xQZZH,‰Ù¼qjdä?eeeÁ2ËC?}J¼ÄߤBzzMBb‰DYÄ8©ÆŸ˜¥¸“•µ3vÏýØlvófÍ454ðå¾>Þ6oyð𡱱qöãÇøäyý•—W „†Ž)·œÉdªˆ_qVeå!=™‰¼Ažåæ"„šèêËõôôd«ÌQûË&D «ÎSuû«®;ÇÓÒÒR³v~hŠ T:ƒÁèØZ[“Te Iºü”çkc~¯@,ð/^»;5Hü)§>EfܼÙÖÁ^v¦!dgk»aÍ*@uïþÖí1"§$œ=¯*.)173ûü¼¸˜Á`àï@ÅÅ%ã'EvëÚeù’Ål„Pjzúå«×B–-ZX˜›%%§èë³Ùl×o4+nhh€Z¶h¡±‘‘ìr&“©"~… ôB¥¥eDÕòß¼-//×××C•”–~©rI ƒÁ¨þƬ>uò¬1~uW¿vövßdGh .OÐi4F§QLõ=%U›ŽÎ<ä x•¯ß<2·g';3ºÊ‰wÕ2nݺ~#y@ß>² ŸæävíÎår †»›ëÁƒÞ½Ïçþ¥ âV ÃþNH°iÓp¼zýZ  ŒB™Yw‰<}¼½“’S._½æßùÛ\›@™š˜pØìO•ŸÚ·sÄ9¹¹/]Ê{þ\Eü ™™š²ut/_&–D/Z¼ïàAS¶ŽÎE™o7$$&ÚÙÚÔ3lÕyªnÕu§RŒ;•Õî›ì EÁŸÁ`b˜!äРnNÏþ O›<).9ÝÛ¡…H$d0˜êp'3ŸQçó«2ïÞ?q2( èëï2X˜[…ÂsæöîÑ£’ËÝëèàÀb}þ™ “§ÏP©T;Û‹—®Ü½wŸ¸?ßʲ‹ÅZ²|Å þý$iJZ~~fVVp` ¯÷þƒ‡ÈdòØÑ#†$n$§XX˜;wè Î*6fÔÈ«×~øPhgkó4çÙ®={çÍúŸŠøË+*eg#„\œœètºlV£GD¬Ý¸ ‘HíÚ¶MÏÈȺwoûæ4mDøðõ›6“)”¶övW®]¿“™µcËfÕ¬¢.xY óŠ„ê´¿êº+ @Yí¾Q§Ð0  ôÞ˜45£R©.­ŒN/ès:-ox  #¶X,~WX` o¤~³æEãOh4š¹™é¤q¿*—FCƒµnÕÊÕë×ω^Àb1Ý\\þˆœL¬]õײ±{âŽkjh¸pþ\w÷Ôôt„‡ÃY¿zåú›çD/ÔåpzvïvôС#¯^O  lïèÈa³Id²«³³ÂÀììœ;tXºb¥¦†FÒåD5W *‹‹ßè°™©éœ™3z÷ìRnnþ‰Ÿ%~ä 7lH˜X"9züøÑcñÍšY¬XºÄÍÅ!1l¨X,>~òÔá#G›YX¬Xº¤Æ/¨§0O¼klÿë®0eµðã"­Y³:<<!”x51´(BH,}øø®¬¢Tö§>§&‘8:ºM Œ©Ôº_¡P_jzúøÉQÕßnÕ40l¨ƒƒýÜÿÕü“ ßÕ””IS¦^:ÎÐÀ a#j%.>.È/!´wïoo3 T*ÍÔØÂÔ¸îßh ^çççäæâ¿Ѐ$ÉÝûÈd2‡Ínè&ê…Zÿ,¡‡ã®\»ffjêìÔ¡þ¹ÕÇÝ{÷wïÙ1l¨ì Àèç4ìÝ€N§/]´€LþŽÿû[6mZ'œ9ml\‹»@€Æ©Q<ÜÝïß¾Y‡ /?×ᦩ© ¿kàçÐÀÄð£€AÔƒ¨ P  4@-0h€Z`еÀ jAÔƒ¨ PËw4¤¦§;º¸çNž}†îÙ@,Ë&øPXX·œë°¡\¾þB¡PnUþ›·xÀEÅÅß5*¡PxàpÜ€°!î>}ƒCFý6îFJÊ÷®¸ ùoÞnÙÁãñ¿Gæ~ þË%—Ͻ••’÷ê™T*‘[E&S¬›·rjç±ñJQÒ“’%,],9ª Xº0šÃá „x<þÌÌM[·ÝðpíÊå!;›-ÖérjÈáû©¬¬LNMõ÷õ•]˜˜X·Üj[é³fߺ}',tM›Ö\.ïFJʤ)S§O2$4ô[Q+oÞ¾Ù¶cç€~}54Xß#?:ƒ†Ì{UUUl:R(¹U‰äŸ¢w›nùØ›q˜Ø¦óÏöNtU]€³“SSCCüy ¿Ÿ—§ÇĨ?þNHèÂáp<ÜݰòmZ·¾p1QnÐpñÒå6­[?ÍÉ©mnµªÎËW¯®%ÝX³â/¢ôžÝ»Í_´8fçî°AƒH$Rý‹¾-—'Þ¾{mfÔÜÄÄÔØØDî¡£g´#SÇÏNWJa)4ITÛò<;uòòô8qò4úz²='7wüä(/ÿO¿€ ‘S^çç òž?5ÆÅëGß~çÎ_ÍM ®ß´¹[ï¾®^>Á£¦ääæ?uÊÉÝ£²²’H6 lÈüE‹«Ó%8èFr —Ç#–¼xù2ïùó.ÁA¨Úµü%~ÍBE´Dú#ññÝûôsõðê?8ìâ¥KrE—”–"„šYXÈ.د¯og@@d5zÜxWOï~¡aYwïÉ¡¢ejl´cÇOôèÛÏÕÃkàa×o$ËÇOŽBù‡tutq×(¬&€_–‚A…Be15èt:õku0¯‹ñëbÁã^Nnîèë:Ù©cLJÙÙ†K¸\îo&ñ«ø³g̘=cúǧΘI¬7)ÒÁÞnqô _%¨DMš:Éá°§L›A&‘ìí’’S‚B—¯^å°Ùn®.Õ#a±X½½Î_¼Ø£[W|IBâ¥]»¨Ž_u´!‰D²mÇÎÐýñ°ü|ó^¼ir§Î¾CGŽÚ¹g1ñõñ.+/ððá‡ÂÂìǃ]›Ày¸wÔÐиxù B(!1ÑÖ¦…¹¹êøUG‹*/+GéééK455ut´æf` ß%8hÎ̧ãÆíßÇ`Ðgþ{%‚SÓ·$T´ŒÂUåå¡¡#FºûtÆó,‹Å<™»:Ô¯&€_¢A•Î`0:¶6Ô$Uh’.?å¹Ú˜ß+Wòx¯¥ÅN j×\§>EfܼÙÖÁ^î v¶¶Ö¬J¹zyˆõ<.oBäbUqIÉ—çÅÅ p—ŒŸild”pöL™ÓÛ6nèÛ»žÌ²E s³¤ä”+W¯±ÙlW™ëò•¥Ñü|/\LD]¼|9$Hé4ƒìÕÑ"„ ôB¥¥_Òç¿yûðQ¶lš»÷î·wsÏ{þ\v¡M›Ö¿ýâå+.WÁ»xuÊZFÙ*CC„вE ÷숑}wQÈQ]M¿ƒ:F£Ñè4Ê©¾ç¯¤jÓÑ™‡<¯òâõ›GæöìdgF¯ÇuÆ­[×o$èÛGváÓœœÀ®Ý¹\.ƒÁpws2xл÷ïùüÏ¿2”øù«†ý`Ó¦ >àxõúµ@(6˜­óy“™u—ÈÓÇÛ;)9åòÕkþ•^›Àu ºÿàABâ¥÷ï?~™“ )!üÊBˆ¸aPu´!3SS¶ŽNâåËÄ’èE‹÷<([h«–Ö4*õhü ¹`>zd`` ©©¡Nc*ke«LML8lö§ÊOíÛ9âœÜÜ‹—.Q© nm©±š~5 Þ- &†IB- âæôì¿ð´¹‘Á“⒓ѽZˆDBƒ©~w23ñiv>¿*óîÝø'ƒä®X˜[…ÂsæöîÑ£’ËÝëèàÀb}þ‰¡“§ÏP©T;Û‹—®Ü½w¿·!deÙ‚Åb-Y¾bPÿ~‰4%- ÿ†BfVVp` ¯÷þƒ‡ÈdòØÑ#UGèâä¤×¤ÉÒå+Û¶5júåÖÎ-šS(”e+V zïþýœgÏÔ‰!D£ÑFˆX»q"‘Úµm›ž‘‘uïÞöÍe ÕÔÔœ0î÷5ë7¼ÿðÁ¯³^“&•ŸÒÒ3Î'\\ºpšm«¬e”­¢ÑhcF\±z퇅v¶6OsžíÚ³wÞ¬ÿá›àC«É)æÎ:ÔXM¿ƒ}£w…&MͨTªK+£Ó úœNËè߈-‹ßè©_À¬yÑøfnf:iÜïCËÿ⡆kݪ•«×¯Ÿ½€Åbº¹¸ü9™X»ê¯e;c÷Ä=ÖÔÐpáü¹îî©éé!‡³~õÊõ7ω^¨ËáôìÞíè¡C#F^½žØÞÑ‘Ãf“ÈdWggÕ’Éä À€CqGdo]D554Œž3{Ëö˜9Ñ <ÜÝ£çÎ>rtÑ↠K$G?z,¾Y3‹K—¸¹È}#|èVÖÖY»qÓ§OŸtttÚÚÛoÛ´ÁÍů`ª·L«†‹ÅGŽÅï?tØÌÔtÎ̽{öÀW9ØÙ9wè°tÅJM ¤Ë‰êTÀ/…´fÍêðð„PâÕÄÐþ¡!±Xôá㻲ŠRÙŸRøœšDâèè650¦Rÿ‹»èSÓÓÇOŽJüû,ñ›’µ20l¨ƒƒýÜÿý„¿. ¢eêÙh!.>.È/!´wïoo3 T*ÍÔØÂÔ¸îßh ^çççäæâ¿U€ú£Ö?‹FèÀá¸+×®™™š:;uhèX€ŸÄÏ9hØ»ÿN_ºh™üÿ÷7ðKiÔƒw÷û·oÖaÃKçÏ5tìß—Š–©s£ªÁq¨ P  4@-0h€Z`еÀ jAÔƒ¨ P  4@-ßqКžîèâF<œ;yöºgÿ±X,›àCaaÝr®Ã†œT*]¹f­·`GïÎߤ5êÙPùoÞnÙÁãñÿƒ­†ý³îhøA)ø/—\>÷VVJÞ«gR©Dn™L±nÞÊ©ÇÆ+EIOJ– °t±ä¨.`éÂh‡ƒâñøw237mÝvÿÁõ+—#„ìll¶lX§Ë©!‡_ÇÃìì‡ã~3ÚÁÞî›dXÏ~óöͶ;ôë«¡ÁúÞ[ø{÷ÅñÆ|öŽã8º*U;* ˆ€”Ä^bWÔÄÅŽ±b/‘ÄÞ½›joAÅŠÆD#blt”vw[~¬^Îk¬€Ròý<>ænfwvæ½<î{³³{eŸŽ¤áÆ­ËMê7‹ÅU Ã}Õ¨ïܽ;xØð~!C>ôQÐGGÒ ÉLLÞ÷ZNÆï|ÐÍËþiºüîó¼ø„„¯ká-š7ÿëÎŽãT%¹¹¹#ÆŒÍ/ÈŸ6#ljjjꤰiªÚQcC=ºG…Ï®åVkÆœð«×®«ªV®Y»s÷ž.:.š?/tÌè¤ägcB'øù1 séòe~›Ä¤äû Új÷düä©þ~-çÌœž_P0qJؤ°i?Ÿ9]®Ï˜Îo³gÿ…K—µm^»–Û„)Sc.^⫦NŸéÓ¬ÙœßææåN1Sàð·ïÚ½rU`ëÖó"æÔ­S;lÆÌËW¯òUߌIY5wõ÷+>hGBÈÔéÓ6h>»n:‘óœ‰ÑØÝÀ@öì?°`ñÒVþ~óçFº×¯6cÖµë7´ûcøcRÑ…ž”á¡éüôU{EDÍoäá1n̨"ü/ :é¸÷âãY†%„øù¶à·¯\Ù†B3 )̳çϳ²²Ú· R•ݽw¯ø;jDéþýõ¹½aÙeff«µ¼~Õ“BCµû`øc*BÏFCßÐô}úüÆ:ÓD(3 ‰±±±4§ Ÿb .>–w÷q¹x'1$¨þÝWLNžüÔWÆÛ¶iìRäC¾JI111133S•ØØTÚ´võº›'O›NÓt3o¯)Æó_g !•mlT[ÚÙÚåçç«f)®ÇÅmܲõÏÛ·­¬¬jT¯nfjÊ—·ðÿ~ÕêÛýeooçî]~Â\×H%ÞB²³_B ªQž—ŸG±þð»ÒÒÒ !6•*©J*W®ÌÈÜܼh;ꌒ\¡ÈÍÍ-| yyÙYÙ|kªBõFá©=/tP†fnn®ïÓ7< (2]Iƒ‘±T*m^×ÂŒ*°3£NÝËk]ßùÖsZ!Ï?~öÊ–Iíè7ñÅ9äå+W>óh¨>Ó@qoÐàûåKåryÜ­?׬[?&t±_~â«Ò32œœÞ¾NO—J¥üù ==côØÐ_|¾h^”•¥%!äblì©3g !5]]]œÎÇ\°³µµ²²ò~7…ð¡ªT±#„,˜i_­šzùë7¯ ÝWçÕ [ÛÊ„ŒÌÌG”‘!•J g BvÔˆ’©©L½M}111±³³%„dff©vOLJÎÎÎÖyÛ§©= CKÏÐûéÀG¢ãò„±D"‘HŒ%â“Zÿ~ú¢…1ùù¯þ˜ŠÐsÑÐ94ß>| :N~R© DZ„W»=3;÷ŒüɹšÝ?é‡Ã»z¸Ú)• ©ÔDø®ß¸ÁOãççܸyóÀ¡ÃíÛ½/ƒ‹³‹B¡›9«k§N9¹¹›¶liäá!“½}4ÐáŸ~622òpopüäé›·þT­Éw«é*“Éæ-ZÜ»g†a/\ºÄ¯ù¿×>(¨u€ÿö»D"Ñ𯇠ï­‰D2ì«¡‹—}÷êUŠ{ƒú÷âïoÚºmöôounìêZC,/X¼´ß>·þü3þþ}  ½r•H,þ¬¡ûé³ç®ßˆÛ°z•žØ‘¢(>ðpopìÄÉÛÿ½yÝZ‘H$_üÝ+ Eýï³Ïb/_Ž»ukݪ!|²õGÌgÏ&M L*{è¹¾*…R¡jMßÐÜ\õ~ú…NÛ@ÑèHìl«½HyîPÕÉÈÈÈ«NµŸ"ºýtéÁ  ¶®Õ¬hš~‘òÜζšðLŸοH$ÎNŽcGìß·Æ6¦¦²K—,‹Žž!“™4óòš:NU»tá‚[¶îÙ·¿j•*‘sfùúø\Œ%„X[[G/[ýê™á‘•¬­;wì°o׎ƒ‡ž9w¾}PPãF¬­¬(‘ÈÛÓ³8зMÓ{÷ؾk·“£ãÌia];wâ; ¡j•*á3g¬^·~fx„¯Oø¬™ƒ†~­½Ùàhš>xøÈî½ûª»¸,ž?ÏKØÕ;RµjÅŠ¨…‹öìÛï`o¿hÞÜ&ÿ'd |ÕÀþýh†Ùwðà¾ýªWwY<^3//Bˆ‡»»g“&ó/135=ê„áIEc/Ã=×Y¥^}C3ðéó·À@‰£–/_2˜rẩ>=ûBhZù*õEÖëLõå÷o·¦(kËJUí쌊~…B¸‹±±£Ç?ñÛ/ªgJ~^ýxx4œõí´"ì[13€ð·çÀžvmÚB¶mÛêï c¦ÁÈHâhïâh_ôû#Ê‚§‰‰ñ üýýÿY,Ë¿žQñ›(ƒvìÞsúìY'GGϦMJ»/¥æ~ƒß‰Dª¥‚ÅQ1“†mÛwÏŸ!}Äßþ.ãÖoÚwóÖ¤ñ¡&&°p@Ÿ24øúøüyíJv<ùû¯¥Ý÷Ò·tá‚ÒîT(ÿÝ/âðA4€ H@$ ’¤Lß=Q,ËÆ'Ä?{ñ¬Ð_TúO‘ÉdŽöŽuëÔQÈàÃTؤ!>!>3+ÓÎÆŽ|‡"¾~ýÚ²¤Ÿ¤T²mr—’šBQT½:õ>]\ B¨°ICò³dG ‹Où|'++«²Ü&Çq&&&iéiŸ,&PaTؤA¡TXYYÉd2Š¢>ÝA SSÓ²Ü&ÇqáR3R?YL Â¨È¶?qÆP.P%‹K»P.UØ™êOÐ2Þ&)(šŠ<Ó:Q„â>åêP¨(*òLùäߪËÅLÃù—? 8tŸ?X–-íŽ&á ÁD|8Í™†û f†G>êo'L™Ê0̨ÈR˜öš†Uk×9wþù‹Dëëûæ­Û|}šO7–âçëÛ/dÈÞ§Nœ`¸JçAKk¦áùóg„ÇÂá Å{kD"ŠbbbB‘ÉLTå«×o9ìëZ@·uûŽ3çÎ9¢^ݺ|É–·wîâÙ¢e·^}Ž8©¾±Îª‹±±¼š%&%}5b”·¯_·^½¯ÇÅÝþëïÞyùúuéÙ+ö²¡«Ú'Z×5ºvêØñó`ò¼üü¿ïÞ jÛ–+‹[ø_»~ÃpUùEQÇaª>Ø{3 µkÕªéêºyÛö±£GîÚ»¿u€¿D"yøèQFF†—gSáÆÝ¼õýªÕžM›„ èÏ—lßµ;zåª}ûx4t?{þ°3­­­š{{®"„ŒŸ<µK§ŽÝ»vþaÍÚ‰S¤Ré þýll*ý°fíŒ9ágŽÕ×í5 >&„\¾zõ×£ÇÔ«’“Ÿ±,ëZ£ºªÄµFõç/^°,k Jç#’J}Mƒ-±DŠæ½¤A,G/[2+<²ë—½[4o6kú·„è•«'OÞbzFÆ”é3LMMçE„ó“J¥rã–­ýz÷šÆ‡ñiàò¡'Bî?t(¨MKK‹îÅ?züdÙ¢…5]]8+"’¦i##Í}ÏÇÄlÙö£ƒ½ýô©SÔËmm+B223œø’ôŒ ©Tjnnn ª˜Ó÷DHU¹ªÊÙÉQ$=yšX§vm¾$1)ÉÁÞ^"‘¨2|\mãÇM*æX´9;»¨^'%%j”|hk†éiÈÉÉ9züD¯ž=T%rBˆ\.ç8Nû‘‘Ïž?ŸAQÔ‚¹fffêUŽV––ÇÕî˜8vâ„{ƒú†«ŠIø©ÑÌ̬aƒ'OŸæß²,{æÜy~Q…ªr w€"Ð;Ó°~Óæ¡ƒñÓ µk¹Õ¨^}ÑÒe½¿ì¹nÓ¦VþþÆÆÆÛO ›öúõ›>Ísóò.ÆÆªWùúø ½r•H,þ¬¡ûé³ç®ßˆÛ°z!D"‘è«*>«´g!C‡L˜2õ»ïhÒ¸ñÑãÇ_¥¤ôïÛ›ßÀ@•À#~ŒQظÐmðÛP4º“†ägÏ=~<1tÜÛŒŒ¢—- šµpQsoïÙ3¾ÕÞåŸ{ñ„K±—/Å^Ö¨úóÚ•ÁÐ4}ðð‘Ý{÷UwqY<žjI£ªâø §øú4Ÿ3cú¦­[>âVÓuÅÒÅNŽŽ…V•c˜h€G-_¾,$d0!äÄ™}zö)íþ”˜ —.4nÔX{Fä£ÊÌ̬¤¶¨³l¶É0̥˗ڴjó)#åÑž{ÚµiGÙ¶m«¿@…©ÆÓJ–Qñ›(›ôÝ=ñ±Zöåk h*ìù7€ßž€"ÀLC ´ìÏ4 €¢©°3 XÒ ’(Ì4”ðAËþL@ÑTÜ™(Qv¦A$q‡™mr…\j,ý”a€Š¡Â& 6•l>~X·v]©´ÄNê7hÜ€À¿e†aRìÛøÝù¿ …\.×ÙfŽÂq܃GìííK*&ðßQa“×®Ÿ<¾vãšR©,Âîú~´Bç áMé|]xƒOÕZ{÷Ø*µÿPêÕêU:ÙT²©éZ³$b ÿ-6i‰Dn5ÝÜjº•vG*,„A*ìL”k,ËÆ'Ä?{ñ,??¿´ûR†Èd2G{ǺuêŠ(¤ûP 4@YŸŸ™•igc÷)Åûõë×–––e¹MŽãRRS(ŠªW§Þ§‹ À;H ,J~–ìâèbaañ)^ËÄÄÄÊʪ,·Éqœ‰‰IZzÚ'‹ €:$ P)” +++™Lö)Ÿ´¡P(LMMËr›Çq„KÍHýd1P‡+£PF}⌡\ (J,—v/à¿ 3 PQï|úƒ–ñ6‘H@)ÂL@yBŠû”«CÔ`¦Ê"üH©>Ÿre(€Ýÿ±,[Úƒÿ4L‚‰(%šIÃý„½úôlÑräØqéªr¥Ròõð¼¼¢?>!aô¸ñ~m[¶ :áib¢jƒ†|5ÌËׯS÷¿þ~T½e¹B½rU‡®Ý½}ý‚Ú3~B|BÂÁ#Gšúøòy ïË~ýçÌÒîØóç/†éíë×½wßëqqªòýuêÞÃÛׯWÿçþˆÑîíö»ÚwììÝÒ?tÒäë7âø«-Ú4ŸBÇh 3wîÞ>:îÝ[Ý?yª¿_Ë93§çLœ6)lZÇσÃgN—+ä3æ„øßI{MC‡Ïƒ èض !ïÕ%'?cYÖµFuU‰kêÏ_¼`YÖ@Ui/KÐôvÔ²1À§÷Þå ±X½lɬðÈ®_önѼ٬éßB¢W®žâæ­?Õ·Ixð 33sÓÚÕn5kB\\œ:¬T*ùÚ6­øƒ¶ ùjØúÍ›‡ ÈWÉ äãÇ~Ó¯Ooþ­µµÕ„)a"JäÑÐý|Ì…v„SgÎX[Y5óöÒTn]¿Bá8nfxDVV–¹¹ùšõÆŒ>tp!¤]`[…B¹vÃF?ßü. ì۰±O¯/§LœÀwiøèoRSS ´immm >úÆèíåIÓ´áÎtëÒ¹oï^Mé ¦•¥¥vLll*é »Foõucôˆa„ýúvëÒ™B3Ì숹sçÌîܱƒêmVv¶µžßeþ}úõ›×„ s U‰…¹˲yyùª,,Ì…4^QI”Íç4¸8;oÛ´Aõöbl¬³“£‹³sbRrļy šy{Íúö[KK õ½ž=ž••Õ¾]ª$8(héŠèBŸüìyöë×:|Á¿¥(ªCp°FÒàâì"“É,Y:°__Ï&MÜë×wŸQ_Uûypû÷ý"ø»ïWªªøD„ã¸ôôô'Oýý!„åØVþþ?îØÉ²¬H$:}ö\›Ö­t>šWuöµ±©D¡æá£GYYY^žžª{ZúúDÎ[ ºCõùó)©©ÁjqhØöʵkÚò!éc¡Ñ™ é ¦vLjÖp5v½Ý`XBˆj‚ŠÏ04ÞÒ4­oȆ¿Uk|;'äíÔ_òöæJ@•þf5Dÿ°ÜÀ:v¢áè¬JNÖ\’ùìY²êµ““³¾±J‹¡‡;±,»qËÖè¥K† 4ÉÅÙyÅÒ% —,»`Á’ïÝ‘––N±©TIUR¹råüüüœœssC_é223!¶¶ÿ~öµµÕØÆÆ¦Ò¦µ«×mÜ(¨u€ÿö»D"Ñð¯‡ÚIõÞûjèâeß½z•âÞ þ½øû›¶n›=ý[õ ¾:dÙŠh±XÜè3s\HLL"…ù¬å˜ ..ΞMšho sŒ…vF'ÁÔˆ‰¾-5z[´n¡s5€öL!dèà S¦~÷ýM7>züø«””þ}{ó¨xÄ1 º ~{J‘î¤!ùÙ³GO ÷v##£èeK£æE-\ÔÜÛ{ö §„ÁÐ4}ðð‘Ý{÷UwqY<^¡wiªv,((8xä§Ã?ýìííµh^Ôá#Ô705•­XºdYtôÌð™Ì¤™——ªc„¥ lܲuϾýU«T‰œ3Ë×Ççbl,!ÄÚÚ:zÙ’èVÍ ¬dmݹc‡}»v <ô̹ó탂7jdmeE‰DÞžž¯}ûÐ4½wÿí»v;9:ΜÖµs' öìÛðÈOŸ·o7fäðé³Ã ^Ë÷pw÷lÒdþâ%f¦¦çOÐÞ@{Œ;£Í@05b¢oKíÞêìÿ)™ð»'!¾>Íç̘¾iëÖ‡¸Õt]±t±“£c¡Uå& ”PË—/ L9qæDŸž}J»?àblìèqãOüöKÕ*Uа{¯~<<ÎúvZö5àî?÷ìUwî=p`Éò×.Æí+l1ÇXFbR.]hܨ±Æ„ÖÇ–™™YIm1oÙl“a˜K—/µiÕæSFþ³öØÓ®M;Bȶm[ýýþ£SOãt>Ó©˜¦NŸ±yë6ÕÛ˜ ë׫[.¯}¼˜žFPkµZ9µc÷žÓgÏ:9:z6mRüÖ4tïÚeÍú –––Õ]\.]¾sñRäœY¥=âRŽIè»{âc´t×45 PŠþ‹Iöí;ŒçÏøÿþ8€a˜CG~JIM­Vµêø±ßt騱´G\Ê1)‚r17SZðÛPZÊqÒàëãóçµ+EØñäï¿~¼^‰D¢aC‡ :¤øMgŒe*&E€™Ñ(eâk%€&œõ@Ò¥¨Ï4@†™€23 f ,‰DÇa¦A›\!—K?eXT4@YdSÉæáã‡ukוJKì©~ÓÆ ü[†a†!ž=ßÿ[¡PÈårmá(Ç=xôÀÞÞ¾¤bðA4@YäZÃõñ“Ç×n\S*•EØ]ßVè|!¼)¯ oð©Zkï[¥öJ½Z½J'›J65]k€Ò€¤Ê"‘HäVÓÍ­¦[iwþ…… ’I‚¤AÒ‚ iA4€ H@$ ’I‚¤AÒ‚ iA4€ H@$ ’I‚¤AÒ‚ iA4€ H@$ ’I‚¤AÒ‚ iA4€ H@$ ’I‚¤AÒ‚ iA4€ H@$ ’I‚¤AÒ‚ iA4€ H@$ ’I‚¤AÒ‚ iA4€ H@$ ’I‚¤AÒ‚ iA4€ H@#õ7{ì)íþ@õoÒЮM»Òî ”]¸<‚ iA4€ H@£â7¥ˆeÙ¤gI©é©r¹¼´ûR†H¥R»ÊvÎNÎ"Jóë1"¦“ˆ© i(ß’ž%I$’Ö~­ŒðOú¿hš¾—p/)9©ºsu*DL'SA¼Ê·”Ô”6m8ŽÃ÷fu"‘¨n­º—®\Ò®BÄt21$ åÍÐ"‘H¡P”vGʆa(¥³ ÓÉ@ÄT4TÇ•vÊŠ*äü‡ˆi(4bI@yGQÇq8ê '$ˆ˜^……I@¹÷ÉNÎÝ]{äͲ„ã8Žp„#„zºÍì_Ú1Ðâ(}ßž?4bÇ%<ŒOÏHÕYkg[Å͵Žoêeœˆñ4”oŸì{3Ͱ+]›;¼­™‰”á(š%,G^çÑ 6âWÚaÐ]e1Žã>¾obbØ:Xû”ÊqÜÝ{w<Нy18$ åÛÇN>Ït­f-Q,ËB¬ÌLÎßJT°”œ&r†jû?gŽ+£ëøÉbFŒã¸‡LLLê×m››CÓJ ŒŒŒê×uÿçþÖ.×yƒ¾ˆ©à‰åE(òn¾½Ä¿õtô²ß(ê]ZÀq,G”,QМ’á”4W PŠÞƒ5\‹ ›9«c÷žm‚¿èÞ»oÔÂEŸ266æ3†G6>Œˆ pu5‰šæÿäÊåw"" ǹU¯nÃ;ÿü•ðð^­šuuÎ7ÌŽœ{õú/»w2p@Nnî.Ì™•’2¼WÏ%ûÙé²F¨?(b*HÊ7ŠPü·Ûl3_NGl‘ÓdâÀÀÉßV}åa9Ša‰‚!or Œ)¥{DëTtî?~ܹ+lÒÄÎ;ð}£(ª{×.KWD/X¼ÄµFõê..ª½Tçï{önßµ{ò„Ð/‚Û3 SüQ苉Àˆ=yúÐXjÜ ^ÃÜÜœÇ7=˜îiccLQ,Ãp捻bq=±ø^D$!\Í‘#Ýë7¼uûæ?ñׯÛP£µ§N_Œ½¼aͪ:µj±,KQTp» %Ë¿[·ispûvææ%øñé E¡©R¡1AÒP¾•øLÃó´7ÓÖŸ«_Ë9л®T"&„´¿CU;ở !b1äU{ÚÀ6iÙ9Dëd³åÇí~~>Öx€Rè˜Ñ7ânîܳ÷Û)“U…|çùiÃæ-ãÆŒîÜ¡MÓ%2}a±´ŒÔÀÖÁ¹¹97o¾?kvc ! Mó—-X>ï`Y E¹’É0¬ëÈáŸ5ltèÈþzuÜ5ZÛ{à`p» š5j(•ÿ®ŠèÓëË/_=zü¸^:[·ï8“žž!“™Ô«[wØÁn5k^½~=lƬ};·/X¼ôî½ìÆóY÷ÉO¿üºïà¡´ôt'G‡}ûª¦p~þí·}¥¦¥¹8; 8°…Os~þ€#…' †7@ÒP¾•lÒwÿeÔöKÁ~ë׬–ð"§Q «UÓz‰ˆ‘˜2©D,5ɤsS)E‘ôì<†aE"Jýè¯RRž&&>\繿}PàþC‡U_|ù¿=zt嚵ÿÚ£k—’ÊJ$bEhZù×ø‰Mmm%ÅÐ4ßá·Yð,˱¬1ǹÒtüŒ™ö!-Ì-J¥Fã©ii=ñÕPk.U«TYºp>Ã0«×­?ò˯!ú»ÕtÍÊÊÞµw_ØÌÙûwnç—_DÎ_àëãÓ©Ãë7mž;á¾Û !G~ùõ‡ÕkzõìñYC÷K±Wæ.Xhmeõ¿FŸùå×ÕëÖ÷íÝ«N­Z.ÅΊˆœ.‰IIÜš‹¤ œ£Jì9 ûÏÝ;pþ~¯/Zš›Ê<Ï16"w³(‰ˆHŒˆÔˆ’ˆ)©˜HŒˆKU#1•”êhgÍŸƒU¼JI!„8::êìRuçììì¼¼|™Ì„ßàä©Ó›ÜÎ?×¹d3½1±w«?9 Ç14Í/ P­‘䓞ÇqG3 òJ­¤áå«W„;;[rŽãøÉ…R9zİn;óW.,--¦ÏÏÌÌä—´hÞ¼_ï^üRÊy‹geg››™ý¸cg÷®]FÆqœŸ¯ïã'ONž9ãÞ þ¶;¾2¸o¯/9Ž ðk©T*·íØ5dЂËPR3 óvÄ>NÉïÛ¹UŽœ}’šojLQ"ÿc!,Ç1,QMÃOtSFb‘\IËŒÅÚGgYÆ@—†VõyÓ¶Ã&OzüäÉö]»›yyÕ®åVR‘Ñ»¦ApÄ8ŽcYŽÂ0 :'ªÛ.Tù»ù~\,Ã( ÍÆ9Ž"‹õtÂØoø"333)ùÙÑã' !ì»>z{6å/jXZZðyüäiVvvëÕÅŽåKÑ4ýäéÓìì×<¾~ý†/oæå¹ä»ü$ ÿu)™¤AA3„#,!J†S0¬#âLv.MÎHÄÉ$”‰„2‘ˆøË1‘J^¦¿q©j¥~ô*¶v„§‰‰öÕªiåib’¹¹¹™™™j—ÐoƵiM3Ì¥ØË‹—·:ú»’úÅj½wOŽDZ KBš~{E©nÖüw²aøë4ÃÐ ­}yÂÖÖ–òüù 혬۴ٵzõjU«îÚ·ïî?ÿXZX:;9™™™¾ë?G177{)‡}{AçMÎBˆ•¥¥ê@b‘ÈH*}““C5n¼ÆQòó ˆÀ¤wOT`U2wOÌÔb×éöü|®s KeÓ')¹¹r¥TLL$”‰„¢E„ZÄÑ"ˆò¦F+3ÙêƒWü9«ÝÎζFu—ã'O5óòÒ8Ã0'Nnîí¥~i¿¹·UbÚ”IߌŸ¸uÇίB•Hd8ŽÓ÷DH!£išeY†fø×êXV% ªù†·¤i†¦µ/OT±³sqv>s¡Iãÿ©—'?{vàÐá]»D¯ZÝ®mÛÈÙ³,ÌÍ9Ž»rõÚù˜ ªF4zËq\åJ6„Ì̬ªUªð…Ï_¼xýúMeBÈìéßV­ZEý@™™™D`Ò`ðÙTx¸@ùFéy¶RômSo|ƇŽÅ¼HM¯çd!QmU ð¨êÛ j³zUšÖ®ÒÈ­Jƒvµœmó èÛ_.Üñ‡ÌXܱ¹›z#,Ë8à¥؟~ýM£|õº /_½êß§·ªÂ0 ÿº¶›[ïž=ö¾¤FTœˆ)J–ei†¦(*_©dhM ͯa` ! B(ŠbZIÓJ…R£)–e¿ìÞíøÉ“W®]W/Üòãv‘HTÓÕU¡PôìÞUbd”ŸŸ_PPpóÏ? QûâÿïxÞ¾­V­ª¥…Åù˜UͲèï>RµJ+Kˬ¬¬:µjñîÝ‹?qê´X,~¯Œ˜ fÊ=!ÿÜ äU·Ú²Q­fnº‘U÷qm–#S–ÐØ†¢H% ‡ÊÝZÖöqwоîëã3¨¿Uk×]½vÝÏ·…••å«”ÔS§Ï<~útæ´©Žü‰–{ÿá à Ðÿbìå%ßE¯ŠþÎX"ùxa1¥R¡T*)Šr[õ$"ÊY.—êÙ]AH’‰‰Ã´)”H,Wȵg!Áí‚.]¾2;rn€_ˆ äåçÇ^¹òϽøAýû5oæmbbòÝ÷+;|̲ìµ7nÿõ7!äÏ¿þ677#„¨Ô­ú›¢¨ýú®Y¿#¤A½zq7oþ}çîÒóE"ÑÀþýV¯ßð*%µNm·ï;pp⸱ïv,dÕB¡aAÒP¾•øsmÍWŒÚ~ù—3ÙÝÚ6%„ü¶@ï# u—¦éAýû}æá±ÿС[¶æåç[YY6ù_ãéaSìíUnÒHxÓ&OúfÂÄ-?n>tHéF¬²íµW7jRµo_†a£æ9çkmÆg vS&Øöì.“ÉΞ;íæVK»qš¦#gÏüå÷£GŸˆ½|…P”kÓ§NiÓ*€¦éù‘áë6nZ¶"ÚÒʲ}`Pè˜Ñ#Ç…Æ^¾ضzˆ8µy‡n;1 säç_~ýý¨“£cøÌé ݆éÚ©#MÓG~þåÐO?9ØÛO Û®mÛ«×o’H.©åË—…„ þH |lwþ¹S·v]õG•–ã¶ýûr|ê‹Ô¬#‘ùo·„Š¢D"‘Ÿe‹Å‰„ߘã8†a”J¥új±Xlbb’——§~&‰D2™L©Tj<ª¤Réí¿oÿï³ÿ-bÇÝýç/†c›6ö|ý:ûÅ®Ý/æ/t.x›7ð=V’hbRyÂ8Û>½ÍLÍb.ü!56 ðo­/>‰ÄÈÈHu†R©ä×sˆÅbccc¾œ¦i¥Ribb²,MÓê!Òˆ˜ª5õ¦Tå"‘ˆeY¾\g¨…GŒ²mÛVÿÌ4”{êkñŠßÔÛ ö Ó­¹cUKñ¦ã¯ÓÒÒøZ>¿cddÄŸœô5eøÄ¬s–eß¼ySRc)fÄêÕu¿ý÷­K±½<½l{õdXæQDŸ:B8BD"QåÐ16½zH¥Ò³çΘHe~- |¡—Ëår¹\H(rssùêå›ékM»¼ÐϢЈñ4”o%xy‚ÿŽ«ú›¦é&¡Ü233Y–‰DFFFüüŸ.ð/Œß®³+cô…åƒ"æáÞèæ­1þhæÝ¼rÏî;rÜ{¿c)IŒÏž=#•Êü[O;(³°¦ ‚+©ç4B¨÷BD"‘³©êG§D"?¯ ÚF,‹D¢²yšÔ{÷ćDŒ¦i·šµoݾq>æœOóR© ˲,Çr,Çq,Ã04MŸ>uÚÈHâíÙŒ¦é’zÈD™Š˜J9’{Nß”±±±D"‘J¥ü*ŽãøK"‘ˆÁç¤ ±Ö7Ù.IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/BarlinesPalette.png0000644000000000000000000000013213135434036020512 xustar0030 mtime=1500919838.089981805 30 atime=1500919916.293315139 30 ctime=1500919913.323315138 denemo-2.2.0/docs/images/BarlinesPalette.png0000644000175000017500000001360513135434036022370 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR@@ä…9IgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>UIDATxÚíy\gþÇ¿3 §XW±µ€ŠU_¶P)h«R¯Þ@[¯ ^ØÚÖ«Úµ.T{xìªU{¨õXP·RÛ-R+^­W·Z øsB‘+!ÉÏï'„˜cr0 ;y½äyfž÷÷Hžyž<Ïd B°iÓÆiÓ¦{y)†Á5¢D=üª®ªÊËË2dÌ3gÏN2åÆüºÊ;V«Õþ|ñ¢¢¢¢•J%EQü:-J”Ð"I’ß!G"‘ „xÆxÇÊd²Î;K bENŽoZZ:ÃÐüz,J” D’$˲üBü2Âv ÖÀ>>>ÍÍj~=%Ê"I’`æ—)Vêá!EhEnn˲âG_Qî(’$¯Ãš~®Ë÷,V?‹½W”›Š$I–åóÝÛ2×å¹G„;°(÷I’ 0óÊ«_ÄbÙM”(ˆ÷E,ý‡Ua¦Ð¼cÅX”{‹÷E,ý\—ïa+‘H€a›•ÆÒ/b!Ă؇yUuuõ–-[÷îÛwýÚ¯°æÝwoܸ±{×®íW{“ë±GZ;tâ›ç°‰dÈ¡ yåÊ•{µµ¸²C@@ÿþý†->ý£µ>Ü:‹Ý× ŒŒŒ“'‹† ýãªðððeË–ÅÄ r2ù…ËËËÀËÛ§©©±ªªªºúOO…RÜ®ãWüo#µaæ`9± E!„‚ŒŒŒºtébmmm@@@dd Äè(Š ‹ [:0ß‹cn­mÛ¶9ª´´ôÇO—••ÅÅÅegg~Ï1“1×÷ßÿCpqãÆAZ{D9-ÞG`Ò¾ýžÜÜãbffp´âÆÒ sìØ±¤¤$’$£¢¢KKJÂzô–e;¦PxJ%‹ [±Ä)´± ‰ èС©©I.÷T«šœƒB’€fµJÌ3"‚÷m¤–Õ&Ìž=Í+9ZqcI‚ÔiµùùùIII‰¤WïÞ4M3 “ŸŸ¯Ój½”J« ñx -þÿ€V«=rôh`PЖ-[‚Àõç/\˜1s֤ɓ£¢¤ŽŸðëµkàÃ>—œѳWÍÝ»ã’SÆO˜h€ÀÁC‡SÇOèÉ"ôϼ¼)S§Fôìu¼ `ÚôQÑâŸIøùâE|~Ñ?L~á…gŸ=üɧ.Z|·¶×_º|9%556îé„Ä‘ié<9É´l#ñøƒ/µ'´tÛ•aýýý´ZMqq±T*©TZ\\¬Õjüýý8Z‘­qÚŠ}ôÑÌ̬ÿþ÷¿»víª¨¨À•™™Y•••yyùŸþùåË—?ø`#IJæÎ«V«Y–;w^MMT*U*½ œ””䯯F„ïóÏ?ÿ矷Y–íÚ5dÚ´iñññ·nÝúä“͉äÔ©S³f¥-]š]XXxüøñ‚‚‚+VâYwffViiYqqñæÍ›  åƒÎÍC¡–˜O‘-û=Ö„MÛSé–eÙÐÐÐaÆÑ4 4M6,44”»‰þ30‹XñÙ¹ªªªnß¾ýñÇoÛ¶ ˆÜœ¿!„¾ûö„‡‡¬¡¡¡ä÷ß ¼¼\.—7«Uø"xèÐ!Fƒ—¯Ze¼ÍÞòû!CÔ*ÕƒçååUVVÊdòÝ»÷ „&L˜`hWTTäééÙ¬VK%•JµnݺY3g=rD*•ŠSq0t`^S!³ï¦e‹'p´²‰ Œ‰‰ †9uêÔСCI’Œ‰‰9wî\MMµVFûÀâúŠ™‚P(<.ÌÚ»woQQ‘ÜSÑܬ¾úË/6üÍÛÛ;%%X–%IÒð²Èd2¦¹[·¦ÙÀ1~ÑŒ§Z¡T øuº~ýº¿¿ëù!€œÜœ%K–nÞ¼ùàÁƒ«V­ìýxo±ûbq/bKN1¯üçáC@¼\lsëùçÇ™Wr´âÆJ$’,Ëæçç×ÖÞ½sç^Ó8pЉo lo#‰Ýײ"H’”ËåxÜËÌÌÒjµ—/]"Hbþü× §7A1Æ/ÕýG-ÿ~õêÕÂÂÂøO›|¨)//?vôHþ‘#K–,]ºtibb¢8CËLQŽ}–{Š´oËQ27!†¦i¼æ¬jj jhhÈÏÏ=z4˲4mõ1âlY†|±,»oÿþºººY³fáá“¢t÷îÝÛ²uëõë×ð |ÍHOÏÏ?’½tiïÞ½***>ÿâËOwî€7ß\žðÌ3£FŽ\±be×®! …²‘ªÐIz(D’$^õ±(“ͬ°Ð0 *eÚ$scY–ýôÓàëëuõu;vl€®]ºJ¬m#áÿ‹)DzÝR¯Üºu âââjjj Åœ9s/^LQÈÎÎ^½zÍþýû,XPXxòæÍ›¯¾újpppee%Ìœ9sÞ¼¹¡¡¡kÖ¬Áë^3fÌèÑ#¬ºº Ö®]KQ:|fzzú† ïge-€òòòµk×Λ7wÿþ}99¹k×­“J¥½zõš4i¢ÒË[¥jŠŽŽ=f¬V«éÙ³çúõëYÞ¿ÕâžÂ#0AX}ïZÜìáÞïáèÀN0íÁv éÆ'v ô÷ó7©4ÍB(77gꔩR©DµÈËË[êá Ã(N«Õà‘ÙC&S(”ˆe5B©$‚¢t,ËÊåž@Q”FÓÌ2ŒB¡”É帆ah¹Ü“ ­FrO|¦N­R)•^2h5¦Y"‘x*”†›`u:-¥Óa—H ‰?&išÕÝUÒ^¥R©®^½ÊÑ·wpPPYÙM~]k˜B³bn•Šóž J§Ã ¨z¡^ÓÜl|Zs³ÚøÆIÜuõg-q©Õ*P« E†aTMŽºô?+’$­M/SË\—çî V¼Z”‹ ©TÊs¶5×}¨°F‹XbånR(¾¾¾Z­–G&)LO+…­^`Qnª:TVVÊd2¾¾(bsú¡ÂJaÐ+P¤ŸÈ!ÊMÕ±cGFSSSƒ7êÛÞÝm =ð(Ê‘ËåürE‰rX– ñóó»yó¦Zý?÷]kž¯¢D¹^4M{{{0àA;ò$>KT{Ã0ÿ›ãâíW¢D¹± _'„òÊò;wïðµ"/—˃:…t ÷! gEPŸ‚»&Ï.S{ ‡@¶æ5ÅxÚÃãgxO¾VÉhš¾þûuš¢À]ÈÂYÔgà®É³ËÔ^Ã!ÐÖ¹ª—ï×gDì{Z«Õº Y8+‚ú,Ü5yv™Úk8RÈø rsh†&IR§Óµ™¬Ã0I€‘…³"¨ÏÁ]“g—©½†sß,‚ǵh“ýt· gEPŸ‚»&Ï.S{ Gj(ó3rC²pVõY ¸kòì2µÇpZG`Þ£"¯nDΊ > wMž]¦vŽ#0nHΊ > wMž]¦vŽ€!ÈÍÈÂYÔgà®É³ËÔ.ÃÑ߉E@ëÔÂDgÎ{2>áö;‹ˆƒì´áÈYá×gn¿p;eOž†9œŸŸ>{nÂè±ÏK~mþëÿ.æ(öö;¥ee±Ã‡ãÍ NÁÁÞ[Ù¯&¼û×õCŸ¼ta–F£Y½î=|ÎWmÛ±3.ö©·ÞXÞ£Çêuï]øùgŽC*•jQöZ­vQæ‚E Ü­­}gÍ|þáü#~²eÄÓqo-Ë {kåª3çÎ9‘%îp¢ú÷3¾âÒ`ͱŒY3`å[ËsÖÛ£ÞZ¹zø°¡Ù‹jµº·W­~gÍš‘ Ë/¢(jíû8ÂiÙ&lLÏŒßÆEŸèÈH‹s}u²q[äøŒ‘r[üç×gnp†a^ÍHŸ2sÖûö766z{{½4y’ѹ±Õþ AA&‡BøFE’ÆŒ~qÒDLXóÞ_ëêë½”ÊÏ÷ퟒ<;#!÷Ô“µ÷j÷|±w@TMÓÍš>µ®¾~Ó‚ùÝBB k—.yGR»>û,mÆô&N@Å>9œ¢¨]Ÿ}1xÐ ~ÃÁùi}9@ŸÏÒ›7-:ýúôéÐÁŸeYkq ˆŠÂ¨ÉÆ?;2!DÓôÚõï¿9{Iâ3ñ†b}}ƒ¯¯ÅpÚ:³,Ë0 GC²I[°{Àá‘ÜÿùõÙ&G¸ÂÓsþìÙ_îÿ*ÿØ¿–.ZÈ=÷¶v?Æ?êÉzkþ¸º¹¹øìÙk×›úÒ‹ÁAA倘„@’ä‹“&nݾƒ ˆ^§‹Ï\¾r¯ÖZ;ÔµKE­Ûð·ÄøxµZ½÷À>?ŽŸ…<å¥?Ùö÷?o߉+)»¹ÿÀÁ¬ùóœËG8ƒcI$’¶lINûŸ_¯—–•a 5Çp·*>w¾KçÎýúöá¹%-àèëŽ+¥©©©Ày'7ñFIÉò«öìøG`ÇŽ`Idã¶½_y$·Å~}nKv~ìëã¿Ý¸±cÛš¦`þœÙÙËßJŒï×·£Xš¦W½½üÈ¿¾þºà›â3g ëÞý%‹GÄÅRe¼ðúúbjò8šaòË?z¬k—.+–¿Ñ§woüXIk‡Ö®|çã­Û6|°ÑÓS>0:úÕ´4Œ7v MÓÿÌ?r(/ï/;g½>/1>‡Æc84M/ÉÊܾk÷†Ü1ƒ.ÉÊš³ !$óð°èXÏðð¨þý?Ú¼E©Pìûl7G\Y2/šKšššzüø×NŽ8ðä‰|ϧ…7 ²y[kV„#·Å~}¶‡Æ ÃAåææ<1dH·n?úK¥R…BÑÔÔ„˜9$“É®ývMá©°FvÚŠpd‡¬ðë37_¸r(Ï¿Úe8­ShkŸìMV8 L„Z¶Ýì¹ÝÂ!+‘²Â¯ÏÜ4~ávÊ¡•Ò@s#²pVõY ¸kòì2µËpô˜$I¼ ÈW`AP4%ó¹Y8+‚ú,Ü5yv™Úk8úìïç_S[ÓÁ¯ƒáÎJ_½Ì™WÑÐÔ ŠlÂ䨀±˜ ›V¬ynÎä+ëí„ šg›²Ö[íEQp«½†£ïÀ錪¾]m²:‡ïG!Âø/SFº¯Zÿ€¿Ÿÿ_:ÿ¿9\I¶7©·`ôÏ Æ•VÌùæž“ÙölpykŸ«Ö¼5';‘gŽ·—ùï&¯…CM¬µm}ÕZ‘aôk=YrÓpôÛHÓ¦M—ÉdR©Ô"Ú¹ë ¾­ Ù&Äæ5Ϧkƒ$ïÙh{BÍ3·Ú8Såq¢Û.ÃiYÄB¬N«Ñ óÝ‘,œA}îš<»Lí)œÿà®IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/paste.png0000644000000000000000000000013213135434036016550 xustar0030 mtime=1500919838.116648472 30 atime=1500919916.303315139 30 ctime=1500919913.359981805 denemo-2.2.0/docs/images/paste.png0000644000175000017500000000205013135434036020416 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR"øµNˆgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<‰PLTEïïï    ­­­¹¹¹þþþùùùuuu¤¤¤èèèíííõõèVVQÿÿÿ“““|||ÅÅ»ÏÆ ÙÙÙîîî×Ϊ­¦‰KH;1("<<<333###¥¥¥GD8³³³ÖÖÖÚÚÚ·®±ªŒ75+ÌÌÌãã㘘˜ÆÆÆàà๲“ C@5cccvvvª¤‹¥ †¡š1/&¯¨Œ©¤‰£ž…ëçÐÒÉ¥¢SŽ|=ˆy;€l/xe+% ÑÑÑÉÉÉ999 ‰‰‰ÍÍÍæææÜÜÜÈÈÈÎÎΓóV&bKGDâµ=º pHYs  šœdIDAT(Ͻ’çSÂ0G *qÄEP(ÃÕ:p/T܆à¬"î-âBñ/7EîlÚúÍó}ê]ß½þÚ”ãþ¾ °ÈðËMÈQ\RZö}Un4)P!a†ºÊ*s5½ªµF‹RAYmÐ^Wïp6 Ôš\&¥âv{š[8ok[{‡ÏÓÙü“ºb †B†îžÞ>›õ^P)nßàа­„G´ºÅ™‡n¡Êè˜Å¢¬PÆ'&§(Žé0;™g^€IDATxÚìÝuX[ðw¶—î,@AD$ óÚíµ½Ö5¯ÝŸÝÝ-¶÷ªˆv£‚­ Û»óý1¸¬[,‚øþÝ9sÎ{ΜÙ={fv–‰DR©„$I@!„Ðo ‚ ñù<‚ÇË/ï`B!Tá0pþ!„Bªpˆ€PE”••µq㦨¨¨ùóç………•w8¡ß‘——[Þ1 Ti 0ðÒ¥K~~ ètFNNÎßÿݬY¨.Ž1¢{÷¤ƒƒ£­­­T*)直÷÷ßÿ÷ß‚ ¤R‰©©Ù¨Q#kÕªUÞq!„J‘››SÞ1 T™99ÕºvíZÍš5/^¼Ø¿ÿÇÑétí›H¥R??¿cǎרQ€ I™L&+ïz]A’$cbbFŒ±ÿ>—òŽ !ô£h@’ø‡øW† ð=ÜÝD"Ÿ/Xò¿%~~ /_º¾|Ùr ÉÄç‰}ûöëС㱣ǀ$‡ ž••ݤI“Ö­ÛH%âgOŸ)®-ró ë74lè¿rÅÊž={Õ©SwèС@’ÙYY£Fš4qR·nÝoݼIŦ´!äæÍ›»té2pÀÀn]»·‚>¯q@£¿ Z²d) é˜j²íÛ¶5òo´jÕªnݺ׭[oÞÜyìܹKíÚu–-[Fmò&9yÐÀA#GŽìÓ»ÏË/Ê/ãþUÆ?"''»¼‡)Ufµj9_¹r…Á`¬^½úÆqqqùùyNNµÚ¶m+•Jëׯ߷oŸ-Z®X±ÜÄÄ444ôÞ½»$IÖªå|íÚ5'''‰D¡º¶ÈÍ÷îÝëì\ëôéÓ³gÏyúôé´iÓªV­:vì˜:uêöèÑcÔ¨‘‰¤]»öЦ¥¥5lèéÒ%ggç¡C‡®[·N—oüï‡òxùJù« ŒN§©MvðàAM›6­ZµêÚµk†††ëׯ?uêT||œP(lß¾ý!CÚ´ùãôéS«W¯9yòDEžhAè…—+"Tæ‚‚‚ôôôêÖ­»eË’$©7³þù§zõê–––N%ÎÈÈ411¦çååfdd¨][äæÕ«W777ïÚµÛ¬Y³ÓÓÓ/^¼¸{÷.©T{ÙÌÌ\,«ÛФvíÚ]ºt2dðüùód2™î¯$IR‰I’¤Óét:=++K—ÀØl–ÚdvvvzzÜÈȈU«V999ååå¶jÕjÆ óóçÏ? m&‹|}}ø|‹Å,ïýŒPeÃ" Tƨù’$¥R)/?_~Ð ™L𗛉‰‰ÆÆßFò+„H šÖ¹¹L*£Óê±H$ÊÍÍ“ˆÅ,&“J šsNvÖî]»Nž:µnݺS§NØ¿O^…ˆÈæÔƒsgϨ¯$ T½îܾS»vmRKäß&iIF#ˆo¥ : h4šT":.‹©ÕAø¡ÒE#©CÿðÿÊæ’›››““ŸŸ'•Iå ©––vvvk×®ÍÈH¿víjròké·9ó"×ê’€âçç·téÒÔ¯_óòóoÞº­vÃW¯_=v´K—΋-úðჾ¼gÏž¹~ýúõë× ÔV‘ä…‹—víÞ5a‰Dªc`:&S|lfnæììKÄÅÇ{xx˜››—ûŽÆ?ü«|ô‰&”÷0¡JkÚôé O¿|ùblllogG-ܲek\\\NNއ‡»¾>Aµk{mظqÍš5™™YáaáÛ¶n‹¿q###£^½ºúzzJkwîÜ©}óÝ»v_¿~=--­I“•+VÞ¹{—Çã;6&&æÿûßùóçk99yzz$©´¡L*]»n}LLLll줉…B¼."¡úS¬àÈQ£_¾|™””tìØÑÝ»÷¼zõjþ¼yÞõ½y<¨ä¯6°ÐЦ^žžj“5k:gΜ/^òx¼ºujÏ›¿àåË—\.·Nm¯¾ Ö®[{9öჇ Ì77·)„Š*DfFzyÇ€Pe¦§§Ïb³Åb‘P ”HÄÔB6‡Ãåê‰D"ŸG]šÀ`0ôôô M,óyùl6‡ÃåÊ(­e±ÙÚ7§ˆE¢üü<—ËápE"¡€Ï×Ó7 Óé2™L(ˆDBÕ ‚ÐÓ7 I’ ¡€/‹‹¬ ¾¾“Å¢ªF„LF |©¤àFºÆËÏ×’ŒÊ_(|==}&‹Åçó„Nçrõd$IŸÏ“I¥å½«ªlˆ " „BH^®ˆB!5ðK!„Rƒ­¼c@!„P…ƒã„B©C„B©C„B©C„B©Á(ïPbïÝ˼t èô¼Õ«Å*2=íÍöž=´OŸ$!!ÂÎË;|õöñ#ÉåÊìí©%ô'O¸+VHkÕâã­BKï՞ªý¡|óÑå ¢ZXašÌÂB,‡o¿IQñýZý• *3îÒ¥´·o€õÇ¢-´'&22ŒÃˆŒ D¢ ;D`ÄÇvî, È9y’ZBKIa;&ñóתRñkµ§j(Ç|t<ˆ¨VZÈÙ¸Q˜·gi`ð³±D~­~‚J‡•ãÎj|¬cÇŠ"0ž|0jÞœöé“b>ò‰t¥F+xsò¤â*µåj骻»‘«¥iï¨í·Zš]Ò¨‘Ú4å£{ï ‘¦6‘7~aÇŽeïØÁ?žšº×ÒJÚ{²¦ ‹Õuµ×TK-Pe‚ßh¨œ˜×¯ÓRRdvvâ€Ñ€ê¹O%ÔÛ°ÔÝ=÷Ð!þ¨QÔB½‰é¯_Küýó6oæL&wÞ<Æ£Gâ&M€ze¡'$‹Aü耸iSMéOûòER»vÞÆüÑ£Fã.YBm%'õòÊÛ¸Q0t(p—/§?y¢=ÎbåOâ&Mò¶m“øú‚LÆÞµ 艉ì={H6›7~Þ®]’ ½q£Æö‰D-[æmß.iЀj Q›6ò§ìC‡ä ¹‹ÙÙâàà¼íÛó¶o‚PÈÙ¶MBr¹ô'O¨wqf\‘‘!uvV(*ñ÷Ï_¹RÔ²¥–½#ßw´OŸ¤..yë×óGú¡ëà¾/·È¢0rUZöަþ ©Ù5…Td¿Ò¥w阉&__ ?®c#«íÉEo¨[×Õå8E•^‹P9±ŽQÇŽ@¢ví872ÏŸ'òò´\ %©SHSSqh(µ„ÈÎf>Mš˜äFB‚ÔÕ•ÈÍez”W»vA":=w÷nYÕª¢Ži©©¬¨(ö‘#¼o³ñªq7’ËÍÛ¶42&Ó W/"%…ª,¢¶meÖÖ2{{ö¶mòIuU2K˼-[€ÅàW/™MÞ¦MÀdRO©< Š34å/[&«Q@(d^½JKM%9qHëÌæ¹s¾}Y§N5žÓ„44Ì=r„d³µïIíÚDVëÜ9 Ñr÷î•Õ¬ ´/_Ø”¬;)–[dÑ?¹ún£yïhêšš]S¥´÷+{—.™h!35•WV—VÒÔ“5m( Ò±ëêtééÉÿE•*#±˜z¿aÄÆvëFý˜'!2Ïœuê¤{6ôçÏA*™Ì`Àj íãG %'Kevvô'O@*¥'$Hj×&x<ÆíÛ@ôˆ46–x{«ÏóÅ I©ƒƒü¼©¸qcöÞ½ô¤$y©££ìÛ¥^âÐPVT”âÚ"bÖ!Y­Z¤‘¼cQ…zyÉìíi>˜xyIêÔ‡†òÇŽU:ùªHæà@}”ÊDæèH]ꡘ'%ñbæÅ‹œM›è/^Г“å×€¸ysÖ™3¬sç„}ú0OŸí'ƒ¤ŽŽò·4-{艉 “Iœ¨ñˆƒƒK ê³~Iù÷Žî5%ÙlÒÔT÷cýŠðrÅʆàó™ÿý‚?ÿ”4lHý {ô -,@$b)¼òIêä$«VöáãáC‰··ÌÁ½e ûÀêËfâà` ˆ‚5wwêü(ëÐ!Ðz­¢ÔÑQV­‘“£7>ˆDô„ö¦Mðý¨‚ÈÍåΛ"ãÁΖ-ê3”ÉJœ¿&œ¹óç99R)uÂßêŽúHGr¹R úÓ§ÜÅ‹¿Å*Qóæ@(ê,C±öŽÔÙYfcCäåqgÌ „BzBçû«ë©éú‹´ÔTÚçÏT+•JÑ¥²¹¼ëJ6¤öE{çûþPd³k¤¡_lú½K;Ú»wýúÑ_¾”:9‰š5û‘FþÁ½S¬šf¾|)ì×ïëŽ*2"T6̳g Ofm-ñó+\J£QoEE~¯á;Á›5 Boòd³ªUMÜÝI½¼Ä-[in.ñò¢¥¥ÉllHssÒÂBV¥ --MñJõyΘœÕ«ÍªV5 ¢¥¥I¼½•>@sÖ®5«ZÕ(4”ÈÈÔ«§¸–ºâ’që–‰§§þ!%Ë_•¬F ‰ýÕ+S''3;;î²e@Â✗QKêé)«Z•ö勉««Y•*ÆÔ5áŒøxöáà nÞ¼ ¥‹‹ÔÅ¥´öÐhÔÕõœ­[M«U3 "ÒÒ”#MM‰ÌLOO//Å/ÈýhÑe°¹–½£¶?Ù쪊èWòÈKÔ»ÔbܹcZ³¦iÍš¦U«šÔ«Çú÷_ÒÈ(Ó&`0~¨‘pïè\Sæ•+¦5kVÔÛ°¢RC„ʆú.ƒ¸U+¥Û‰Zµæ•+Dqî„!jÓ&o×.IíÚ@§Ë¬­…={æ:TxxÓ¦ õð(xZ§èð‰JÔ¶mÞöíROO ÑH aïÞ¹QQ/‹ «^]R¿>Ðh¤‘‘°sçÜC‡×Jê×öèAêéjOš™¿z‘·c‡¨];™¹9ÉdJê×ÏÛµKþƒ»ƒd³s£¢Ä‘‘¤±1I’Fr£¢ÄÁÁ¤žuùº´V-êÖ ÅšBÐeï»wÏ_µJê褉‰Ò<3ih˜»w¯¤n]’Á:9ñÇŽ-Å¢KsÍ{Gm(²ÙUÙ¯ "/YïRK*%rrˆœ‚Ï—YZŠ:uʹx‘:ˆ~°‘pïèZS±˜ÈÉ)Ö%è—ƒ·NBÈïx3©ÔÄÝ–––/uv.»roŽTÞuFýðrE„Ê -9™yû6--MêæV¦ã„*" TnL||¨‚þýË;„R†×" Tn¤®®¤`à@aŸ>å B)ÃkB!¤Î" „BH " „BH " „BH " „BH " „BH ¼/B¡ò'–’+.çÜx[Ä/kKe/$‹Ì'–‰¥PTVd¾H9+KzOî¨#&ýGÅ­À/="„*Ë.e=ü,õw¶J‹PØLz ¢Ó€I×8ƒ.“J/%¤Ö·cŒ 1.N®•Î" „*ÿ&ä·ó«Êa38åNoàlyüæ{"€.C™Löòõˌ̌"SJ$ŠýIÄ]"KÄJKØ,¶­­C ‡×o^ëOYPêgÒ±é*fÝKq÷ýø^øñ–,2†²î®2R&•5‘Z2$H$eÒÓH ‹•óO8ä%R Iêú™µØ™—Ù[ܽ_‚–”ÉdR™NE2RÇ`4u6‹mdnKʸ›è•Q‹ëX¼ìþ³$a^)ô:’$%ÒÒé 2™L&••JVR™T&+"«ð¦áEŸhHz•ÄãñÜ]Ý B×3 :C÷ÄŠèt:¦qþG(>Jx$ Ùlv±âùi˜ fy‡Pr F ÷šŽÊn÷•¸¿éN{ÏüÉõÕ‚‚Q²&.m¥ÒÊë§ÑhtZIf°KA”ÎýÁ–üÁW¶";ƒP(ü÷F‘WæQC*Ê™u\ŸÔÁ1=Â×¥,zA$IþÌ÷‹’b±¸èÎ÷ùËçzµë‘2R—ŠH**£z:Tw¸}ÿ¶›‹[±âùi„RágRnÁ Ë<ø2Ú}e×ß*f}µ+«©…b*­îT.m(“Ê$Pž3veáGZò_Ùté ,CÛjfè%½š“eh[¦½îg¾_”ìxd³ÙE|0‹ÅR©”Íbÿ´šhG§Ó âăŠåwÛ}¿[}˶ai©à-™Å‡ª¦h¶ª)3‹_ÞATE x|ž·‚œªˆñ bùÝvßïVß²€mXZ*xK¦çKìLXåE!;Vz~e›I*"N4ðx<.—[ÞA*T,¿ÛîûÝê[° KKoÉLž¤‘)«â\aVÅ”u?‡:Ì"pØåû ”ïð|.§âör¤Ýï¶û~·ú–lÃÒRÁ[2#_bk\N‚س3p¡È!ŸÏçpÔb¯^‹lÓöñ“¥å'NÿÙ¦í§ÏŸïܻ٦mZZiÞšI hЇ"“ÉNŸ9;b츶»vìÞsÌø‰W¯_ÿ Yª¨¦ËÌÌT»\þ×üvÝz÷]¹v]^^^‘¹ýøŽøñ|´ï>¥ÚÉÿ¦Ï™«%ÏOŸ¿ìÙ€Ïü`íŠÑ:ßm¬ÈîJ™8mzd›¶ÛwíÖ%ÏOŸ?ïÙ€/(v}Õ¶-õ÷š®Ä5ÒÒ†Ôîèе»X,VÍ“ªZfff©¿É3,‹—¸²S½QmË”¬Í3òD6ÆêO4ÄݸáÓ¨qHx¤H¤|aòû}5öiÔ˜:*©”©_¿ÊËÿüƒ›têÞs×Þ}ŠßºTL¯ÄƘ•‘§þ:h¥WªVí: :<êØqê;„Šu×åhÕ±­4¾<ÎÖþòX— ¹¢N4ðy––j¿=ÙÀ§>‡Ã‰½zÕÃÝMqùõ¸xG‡š6ÖÖz\îœéÓ Šüò¥îø¾µ•µ– ç-Z|÷þƒ6-[téØ>?ŸwãÖ­y‹þ7°ï×v´)­~RF€LF*Õ”ZþÏè‘Æ†F ‹^'¿9zâdvvöÔ‰ŠÈ”ýàŽprpøÁª}÷Q_O7z¤‘‘‘ârc#c-%~üôqÏþÍ#ÂÙì2?‘IE(“éÚ’EvWÈÌÌzôø —˽z­wÏEæùñã§=û4g³ŠWß9Ó§Q^¼zµkï¾ñcGêPKJñ-í5ÒÒ†TÇÎçñnܺàßPqÕåØ+ߪFþx¿U[®Œ”•Ö‘õs”EoTß2ÅosžHÆ¤É 8ÚÞòòò®ÇÇ7 V\xîüyí9Ï™1ÍØØø|ÁÝ{÷ÖoÚüèñ“% ç’‡Á¤Éò=–òiÕ×áÇO¶íÜ%‹»tì Xw]ŽV{‘R¡rÆÆZ_Kúr!Wôµl6[í­EX,Vþ×âo 8@~)''çÉÓ§öèN’¤¡¡¡w½ºðí…µTðøã€‹—coܺ½tá‚ZNŽÔ’Ð&!«×oؾkw³¦M J+Œ²F}͆R©¦Ôr/ ssjIà ôôô¶lß!‰XL¦¶ÜHòwÄïPí»Zî©P;¥UZ¶úñÚ颸ei¯/åÊõk4‚èßûÏ56&&%9תUD úF‘¨}'Ï¡¶§§©‰‰b½Ê‹öiiCjCG‡š±W¯6j觸*öÚuG‡š¯^'“Pú/D…T)Y?GYôFõ-Sü6OËU)êZEgç³Ñ畆ç/\tqvNLJÒ´U}oo+KKêqh“€Fþ£þ&:ºyxx‘QU1a¥å‰ªš*ŸþPû: 'NîÜ¡½bÝu9ZuìEª…®*2óâ¿\Èi"H$©LÊd05娸ò•«ž<©íéI-¹që¶L&kÜÈŸ$É»÷ïϘ3oÇæT•Μ‹>zòdzZº½½]®]ü|}ÇMžbll|°¶²ü«)+2M½ºu@$ï;pðZ\|FF‡Ëq®U«wî5kÔ7Ȳ•«Ÿ'%ÙÚØ 4ŠŠ$Éý‡Ÿ>Ÿ—ŸïåáA½Þ©vµoQF††AÀ·…ªíL-OIIýß²I/^ØØØ 4ÐÓÃ]S¨ûNIMYµt‰¼Ð>ÿò©ïݨ¡ŸâÕÒ’Ë/ܼ}‡X,Y¾x¡î»OËðã' “gÌœ;sz//¸cñ²å+þ·¸fêÔ<[ϾýàôÑ(*ý™sÑÇNžLKK···ïѵ‹Ÿ¯jl=»u)Ø«V?Oünw|ß,\—ZN½ztw¨QC1Â×oÞìܽ7ñEI‚›‹ËÀ~}ìªTQŒ¹ÈúRb¯\«ïíÝ4$xËŽ±×®×rr’‡*ojêéîm[LMLÔÖWí¾ÐDµÏY¿ióÞÛõõ ®x>zlNnnFFÆÚËÖlØøòÕk ón;5UxVíiüæÍŽÂfqد¯¼YÔ¦µ5Ò¥ ©…AïÝ@ñÂêwï?¼}÷®ïŸ½^½N&Iòν{òÆÔÞ¿gÏ?y*==½JÛ.;h [©I’ŠDÅ=äµ4ˆöƒKm¯ÐR¯2íš^¸Û\—þ™™'®b¢ñZEjydx؆M›y|¾¼—&¿yóêõë‘Ç%&%ßÈ7Q|,Ϫq£F?qªED„â*µEW1aeæ‰íUÆ.j_©Ü\]Ÿ:Íçóž=“×]mßVêizzz áõ¹ÈB)Zº™RJ¯‘aÍTüZNŽ#‡ •g®íZ>ŸÏåpešÕ­]ÛÐÀàÊÕëò%q7n:9:ZYZÊdßfád2™Lvê¿3¶l ð÷=bxõjÕæ.\|ëÎݺµk'<}FõÝ„gÏ áÙ3*ý“„§&&ÆÕ«UU,ŽÇçi‰'õë×7oß6òóSZnme5sêd7W™Lvìä©{öúû5ý÷ðÕ«/^¶üþƒ‡òPç.\ì[¿þð!ƒ…Bá¼E‹,^ø÷Á"‘xéªUº¤¡JܵwßÉÓÿ†6 7fÔŸ=ºþüeÆÜyòR-]V·¶×ðÁñùüEË–Q›9~bßÁC ýŒ6”ÃálÚ¶]ÞtЍø|ÇãñxYÙÙ>Úèph“:®©©­–¬\é]·Î°Á ‚EË–k µQC¿×ÉoRRS©4Ï“Ò32Bw¨ö–\µn½«³óŸÝ»é¾ûd2ÕõA~>OñO,{¸»…†¯Ý°I(æóx›¶nëØ®-Õ=zvë ÿŒ9sêdÅÎÖ¨aÃQ¯^­ê¼E‹oݹ+ÏÕÚõ®Îνºw¥ž.Zº¼níÚÃâñyòÝ¡Ð,£ÿìÞíÓç/3©=øíDC~~þÔ™³BÁ‡ žž¾àK”ªSd}e2Ùç/_ž'%…5f0¾õë_»GŠM­ô´°¾S&kßÛùûÌe2™O}o©Lv÷Þ}êéÇOŸÞ¼}Û¸‘?õãìä4jø°Õª-[¹úÁÃGZŽè<ªY‚! 8 =#cþâ%ZÒkª‘ŽmHU¤O}‚F»~ã†|yìÕ«Uíí«W­JUS^ß"ÂÛ¼¥Oý1#G898.^¶âá£ÇÚ(ÅœKpÈkií—ê~ÔR¯²îš^¸ty­P”‘/²6.â:‰àÀÆvér¬|ÉÙèó5kÔprt€âð÷ó{òô©.Ÿª­9ù"]Ž ªõØl6“ÉÔ~´ªéiŸhz}V-Tþâ/'‹µt3¥”^ŸÕøþþòBAû,B>/ŸÃáhiJÖ¨aÃø›7ÿÐF£ ‚õèÚ¹`¼CÝ”Š$%Éþƒ‡ztíÜ¡m[hÔ°¡X,ÞèpÿÞî?tøí»÷Õ«U}–˜XÛÓóÑ“'éf¦¦ ÏžQŸK§®ÔOJj*XZZjJ ‘H9Úªyó~½ÿ€Æü3³²DEÕöò¤BmÓªEXÓ¦ ‘JV­]?rØÐ¦!Áò§9¹¹E§ÉÉ144 …½{öhÕ¢9U®¡Á‚ÿ-ÍÊÊ¢J©_¯^‡vm@*•®\».;'‡ËáD;Þ,ô¯þý À¿áäé3Ÿ>®fH2b¤âB+KË~½ÿ$IR*•ªmçî]:@xh(U.I’+Ö¬ÍÎÉ1Òªs-'&“yóöí–‘‘wㆥ……›«Ëý‡©*‹µ·d³¦M[5,Öî“'ü÷H¥åvïÖ¡]Û>ö6jtÔ±ãyyyzzÜNíÛQéj€§‡;õ™F*•î;x¨G—ÎTeüŠDâý‡ׯW—JÚ´eóH¸÷àÔ¯W·CÛ?@*•­\»îÛ}×,†ÔÌ–ŸüæMNNÎàÓ«U­ ¶¶6g£Ï‹ÅbÅ{åY_¸ríºžžžOýú$Iøû_½÷ôùswWWù±£x(QýA©¾ZzµÆvV™Ø416v®åtûÎ]êŒþõø†††µ==Ožþׯ/•s€ÉS§›UĹ« ÆÎÅÄb0èš|IIÉÉÍmܨ¡bØMí,•ÊË¥.”h•ÅbÕ­]ûæ­;Ô\\ÜÍ›ÔÄ |‡Ù’JL—Ý߆ÿclôÝ‹…••%I’úúý{÷^½~ƒL&›7kƒÁϼÂÞÛwïrss==<äßqð®WgÝÆÍR©”Jàõ-6ê_…Ýa¤°û~k–¬Ÿ>_Š¥ö T¾¡­-õ™©MËžîîŽ5kûk|?$*²¾påÚußúÞR‰„/‘¸»¹rØìk×ãÜ\\äMýý¡TØ#ä´ì (\É,¿š])Šoýú'Nÿ+“É‚ˆ¿y«a_ê7)‚äÉ‚ïܳ—$IM=ÍÚÊŠÃfoÚº­M«îîŽÍ’ü憞)¥ÑhjãÑéÿÖJ‹–.ËÎÎ622z•œüéóçÆ}IIÂ÷5 I°µ±QÞ›·o³srøË š5mŠL&Ó~@‘daÅ=ä5ç,-òàRíšêUÖ½Që WÁ&Úû§\žPbiTô7#ÂÂÆMšœ™™ijjú<1éý‡áaï?|(rCEÔ9]nÀ`iÄNHVó+_Ô‚!#F).¬[Û«_ï^J»I©o¿{ÿ^µ§Ý½woéÊÕj_ŸU •¿øËYYZ½}ÿ^m7S @õõYí¯ëÇã1L™ÖË,]]\ÌÌÌ®ÅÅ{yxÄݸåìädnnFmB’2‘2êó÷ø)S•¶ …žîO¼<Õ%MfVÖìù ƒ7Þ¸z%õŠûÆß¼¥˜RiccÈÈÌ”–™•©˜R¡—¨¹b¥ª½½X,šÚ9??¿¸¡úÔ÷&âîý>~¬Q½š½âæ¦Æ&:¶¤î»OSí?ušN£¥¦~½pérh“µ[Q#ÅQÇ)]÷Ëb±t߃sæ/ l~ú$‹[µˆÔ××§V<}öü[Jõ¥XZXÆ^½&_qõzü÷™+7©¢·ïÞp¹\ÍíLW[®–Põ¸\/O[wîÆß¼EM5+íP[²»$IMÛ’$ùéóçCQGúþÙ«m›Ö»öîËÎÎV»•¥……¡A^~ž«‹3õ÷æÝ»ëññòÙ3-ÅQO?~ú$‹[5Ô×Ó£–'<}¦t˜½NN8t8Çc2™µ==Z6øš–&ŠUßëqñõêÔqwu•﯈f¡L&ózÜ ‚ €¼Žwï?Pèßu<­û‚”çL_J@)_oï;÷î߸y«¯|þÿÚ·œe2Ù•k×jÔM=íí»w‡É›Å³EdDZZº@ Ðò  %Ú°°³5ö÷OLzq-..-=½QÁ«(w¯““Õ†geii``pýÆ y¾k7n:qú?(€‹Èkn-;TS¯ÐT¯²îZ_¸ty­ø›HÊ¢ƒ[§ßpŠ {ôøñ¹ó1_¾¤„7 ÕeE7oߎ½z­c»¶º$Öc3Ytˆ¤Z:žön©Ô·Õö´“§ÿÕú΢K¡ZÞ¿Ô¾O}GåÀÿ.#³R©T,3è YQ÷¾¨Q½º­Í™èóÎNN¦&& 3À2Éd4­}Û?¶íÚ–žîP³æ›·oŸ:=¨__™Lfmeeiañ<114$X&“999‘ôâEçí”Ê•Éd‰D{jíêõUWõïýçËW¯þ·`I’L£ïŸ½.Yèîæêäààîêºuç..‡³eýZÅFø÷ì9+KË}ûPM>?PûÔÀÀ`ü˜QûZ»q³¡AHPà¢ys¦Îœ­¸ÙlÖ?£FîÞ¿͆ÛÓݽg·®Šµ+²¾×âã™ F½ºu•Ò4ðñ¹{ÿÁ‡OŸþêßïБ£k7nª[ÛkðÀþÓfÍ¡But¨éîêºuGa}5í Íí¬~9×r240 BqWŽ1üØÉSgÏǘ›™4 Ž——–žÿŒ¹{ß56qØlOÂfÑò  Z#ÛP±"Aøû58}¾QÆ*ݾí5¶¦ðZFFH¥Òó.ž‹¹`kc3jøPOwwM/\ €~ y- ¢i‡š™šªíZêUÖ½Qó WѯòRòøbK.D Ðh´°f¡ûŠk¦Kú©3gS˜LfU{»a êÞµ‹Že€¥'/6Óÿn£éR]«Ú·U{‡Ã=õïšÞY”²•¿ø+š4îMÝL)µ™+øJ™én8Ÿú5õí»·Õì«éÞše*;7;+;«º}õò•Äï¶û~ÑúN˜:­–£Ó€¾½àá£Ç –,]·b™™ÊåQ?Ç/Ú†PoÉÄOYL®A¤ŸûgUêÎÞ|*æç¹T1)ï@Ê–â¯ÈÚÚZã,Ïc0‹>ËðÓÅ©3ôkùÝv߯XßÏ_¾¼}÷¾g·®Tز‚9I²¼jñ+¶aÅTÁ[’/ÙXq+ÎÏ@+27ä&geTئ+J¾mC&½ˆ»uþLb‰˜Í,úDª˜~·Ý÷ËÕ÷lôù[wïYYZº¹¸(_+¯ZürmXaU𖉥¦†z?žOY05ÔKK+lÓý8Õ_‰æ!g¨oXqšF$èTœxP±ün»ï—«ïé³ç˜ ÆA@þõ­¢¾ƒZÖ~¹6¬°*xKJ$bcnyG¡ž±W"Wئûqjüïi"˜›Uœ ¡HXä}œP…õ»í¾_®¾+ÿ·ˆz ÙÓÃ}×–MŠK~²_® +¬ Þ’"‘ÐØ ‚Î"è‰D Ût?NõÀW¢~ˆ “ÉDbN¯ £'’$%IʼnËï¶û~·ú–lÃÒRÁ[R"•1i26K§›"ü|l“I“‰%Röã¹ýŠÔø>‹É 3?ŸH,b2˜'T,¿ÛîûÝê[° KKoI¡HdbXA¯U¤˜r…"SôOHTJê‡Ôº*ÎìŠP(d±X'T,¿ÛîûÝê[° KKoI‘XdRQÏ2PL ôDb§¢Îs”5õCPÀ 3*ΨS,W¨xP±ün»ïw«oYÀ6,-¼%%b±‰©IyG¡±^VfV…mÀ²Fì?¼¿¼c@!ô›êܾsE>Ñ@’ä¡£‡Ê;ŠòÞ4œ];v-ïHB¡ ‡ ˆßó-ò@ÔÐþK!„úmá!„Bjà!„Bjà!„Bjà!„Bjà!„Bj”þáz||_?Å¿ÐÈ“§ÏLKO§V¥¤¦ê˜Õ»÷ÖoÚÌãñsÖ}óbIý =F÷xJF&“ýoÙò Ð°†A!?@“P‘H¤$U—´ôt¥FSªµO£Æí:wݱ{D"QÊY©‘K±åBý* ﮘÏÏ¿uïÚË7I2™T)Fwªá\¿nÀê i±Ï2æurðu0ÑžïüÙ3MLL@&#ß¾{·eûޝi_ûôêY¬àÞx¿aó–NÚëé•ÉO…ʃ”335+ëx'$ìÙ`ðÀ^ž?^^ÞÕë×C›4Q\x6:ZÇZóxü;wï®Y¿áá£ÇË¿ýÞ—ZnnëV­0ý¾­BUn…C„»no·†t:])‘T*ý˜ö¹Ïš[Ážö&rÍI;‡7О¯OýúÖVVÔãÀ€F6{îÂE]:v,ïúj ò§ÉËË€NÚ[˜›ÿ`V®..gÎE+ Îquqyž˜¨K­ÃB›6>jÌ¿g϶ŒŒÔ´‰‰‰I€¿ÿOn(„Bå«ðDÇÏoímjT©bgk[EéÏÈÜfó]£¦¦2:›Fg² qq‹100ßbóÓ§Ïý nؾK·;÷î9~¼¾õÆIéԽnj9s`èˆQÙ¢Ž¯Ÿ|­ÒæÔø»÷ïûÿ5¤A@`»Î]îÜ»÷èñ“.=ÿô ü£cçø7‹ª|R}À¡ uèÚýÞýÔ*¥x¨” OŸö8¨{ï¾Z*¢Hm¥¶ïÚÙæjæÿlôyÅHäù«†Ú<"üÊÕkù<ž|Éëää—¯^5×½¾5 lpôØ ]ÚDKã „ªd ‡t:ƒËÑc±XŒïåaÔÞ—í|mߦ Ÿ~â%¾x1 ™S‘ù ÏãñóóóŸ'&îÚ³7"¬—Ë€ÉÓg4òŸ>e2Ï›0eZp` T*»qƒÚðÝûI/^F4kÇ €…sç¬[µBž³ÒæÔÂQÿŒ l2"üý‡ºíýÔ9 ÝlM÷ÆA!ôë*<ÑÀd²X,vž@JHד…íý«]ö¥w˜ÛÓYVž0æÊÍ¿#-t€‡»{½ºu¨¿¶­[õý³×碩·jÕOœM‚ƒ²²³=~œ’ššðôi¸Êä¼"µX™L¦–§ºIýɯãÓýc±¾¾~É*BIKK3ÓÂ‘Š¹¹9ŸÏ—_Ó ˜¿ªÿ†zzzçb.ÀÙèhw7×jU«ê¹\Jj*‡ÃÑ^"œ3@¡ßÂÁb³Ù ]¬ô ¥>óœ×À­êƒO’<ïÜ¥¸ícÃëÖ0*q15kT‰D¹¹yj×:Ô¬Y­ª}ìÕk.^266nðmà—S‚ŠXX˜@Ff¦|IzF›Í600Ð¥D&“Ù¬i“3ç¢à\LLdx1.T”»qófm/ÏŠü“í!„~¾Â!‹Éd2™,&}ÏØ&ÿ]¸nÈ‚“yB^Þ¹Ë7NkÓÈÞ¥ÛGsµ˜ &hžð€à  Ø«×b.^ )zr¾"+nEìªT162:÷í[ p6:ÚÃÝM÷›G„?|ôèlôù/_R"Šž·PrãÖ­ËW®vjß®¼[!„PÅRx-›Í!IxÕ´<0µMÇÙ'ªÚX>KÏ86³­WMK±XÄfsJ\ ‡Ã€¬ìlM šíÞ»F£ ÐO¾z‹½rõZµjU}¼½K½òwîÞ-Öœ¹.ñ¨­ˆL&³oï?W®YK£Ók{z\¸tùÎÝ{›×­Õ=*ßúõÍÍÌæ/Z\§vm뢯$•ךÏܽ?êè±ðfÍt9'‚Bè·R8D°´°ùœú©Šµ=ƒÁðu¶91«Ý‰¸—†…Ö´1–H$ŸS?YZØ”¸˜êÕ«@ìÕ«šÔ«SÇÄØ˜ ÑøøÈzyxøx{Ï_ü?}=½Ø˜h] *–ÉÓgª.TüB£]âQ[íúôê)‘HŽ;¾ÿà¡êÕª-ž?Ï·8§Zh4ZxX³}F*\ó¨K­™LfU{»¿‡ îÑ­k©·-B¡_±ÿðþ®»€D"Nùú9+'SõûñA˜™Z[Ú2%?×P¤ÎÝ{zyyN›4±¼Û+‚Bè·v ê@xÓðÂYƒig[ÍÎV×ï,”®·ïÞ%¾xAÝà—Vi*‚Bè7Çøñ,~Üžý.\ºdogçS¿ô/8ÀŠ „B%P!†;wïa±XóçÌ¢ÑJÿÇ©±"!„P Tˆ!ÂùÿN—wX„Bè;øa!„Bjà!„Bjà!„Bjà!„Bjà!„Bjà!„Bjà!„Bjà!„Bjà!„BjÐàz||_¿€&¡"‘Hiõ»÷êøúÕñõKKO—§LIM•?–ÿù4jÜ®s×»÷H$ùæŠéµ/,™RÌJ5[ªÊ!„Ðï©ðÌyyyW¯_mÒDqõÙèhíÛÏŸ=ÓÄÄx<þ»w׬ßððÑãåÿ[TÞõB!„Ð)"¸º¸œ9­4D8w>ÆÕÅåyb¢¦í}ê×·¶²¢‡…6 l0|ԘϞmYÞUC!„PÉ^‹Ð<"üÊÕkù<ž|Éëää—¯^5×=»Æ68zìD‘)_'¿é3po@`‹?Ú9~\¾\(­\³¶eÛö ƒÃ"†øâ…|íÁ¨¨Ví:4ìØ­û¹óç3 …ý n×¹kVv6>r´uû ;÷èuùÊUP8+1`ÈЃ:tí~ïþj[’$7lÞÚ¼eƒÆACGŒú’’RÞû!„*g…C„ @‚F»xé²|É™sÑ5kÖrr,VŽ6|œ@’¤ödã'OötwŸ;sº‹³óìy b¯^¥–¯Y¿aïþ´nµhþ¼‘ƾÿðqØÈÑÔª‡£,^8Îl7· S¦Ý¾s—Z%•JÇNœôùË—Mkט8µpÉÒ°Ðй³fÖrr=nüÕëqßÊêïç7cʤ|^þø)S©…;÷ì]¿ishHÈœÓôõõ/]^Þû!„*g…'¸\nHPàçεnÙ‚Zr6ú|ëÍ‹›£µ••P(ÌËË344Ô’¬EDÄ?£G@x³f½ûܼm{p` ÂQïÞµ •ÌÄÄxô¸ ™ÆÆF6oéÚ©#µU³¦M^¾N>}æ,$9uæ¬gÏžoß¼ÉÒÒB"‘¬ß´yØ_ƒúõé áÍBE"ñ†Í[†þ5õïÓ¤RÙ´Y³³²²ôôô¶íØÙ¡mÛÉÆQñôô×ýË{× „Båé»/=6ˆ¸yëvff&<{žøîýûÈâœe !ÿW‹æ‘òô-[D&%½ &&O×½k’$ÓÒÒîܽwú¿³ #e/_¿ÎÌÌŒ “ç°iíê±#GÀ¢%Ëþ;{ÎÃݽZU{xõúuVV–¯ǧþø?OL”IeЈÚÜÜÜ $R釟²srä#‚ ðB „Bˆ¡ø$À¿¡žžÞ¹˜ ];u<íîæZ­jÕ÷>+Ç”ÔT‡£¯¯¯=™¹™™ü±¥…¥P$ÊÏÏ700¸sïÞ–í;>zdll\£zu}==*MvV6˜››Ë·Ò××722€GÐÓ–­7nÝjØ AvvôìÛO©DŸÔ÷/edf€…EaÎåµ?B¡ â»!“ÉlÖ´É™sÑ];u<Ó­sçäxãæÍÚ^žEÎ"¤gdTµ·/xœž®§Ç500HÏÈú÷È–-š/š7רÈ®ÇÇÇ\¼––™™%ßêÝûŸ$ÀÒÅ ëxyÅÅßX¼tùá}{¬¬,`ÁœÙ¶66Š%æäæ¨ÄÒÂÒÒÒã)Ï}‚BUÊwWlþðÑ£³Ñç¿|I‰kVÜìnܺuùÊÕNíÛ™òltÁ÷H’<õïu¼¼àÍÛ·B‘¨W÷nÔøîÞ»O=°·³362ŠŽ‰‘ç0sÎÜ]{ö€­ Aÿû:9ùàá(»*ULŒsórëÕ­Cý%¾xqîüyƒ¡6’*¶¶&&&§Ïœ‘/9s®ˆ»A „B•žò»¦oýúæffó-®S»¶µu‘Ûß¹{—šºçówïß:z,¼Y³ðfEŒ-‚ Þ³½<ÜÏFŸôäɶÀ±fM.—;oÑâ.;H¥²kqqÔwîÞ»6 oŸå«×AÔ­];þÆ{üÙ£ûÎ={©<½<=Z·l±nÓæ‘û÷[¼tyJJª‡»ÛóĤ­;vNŸìÂÅK«×­Ÿ6y’D"9x8j÷¾ýövvS'NhÛ¦õõøxMñôéÕS 9~âØ‰“ ø.š7·ï ¿Ê{× „B剨x׎E¿©#„Bè7q ê@xÓpü¥G„B©C„B©C„B©C„B©C„B©C„B©Á™L–ø"ñãç|>¿¼ãA—˵³µsqv¡8¾D¡ÊŒ‰/3³2-Í,,ïpPiËÉÉ1úv7ëRA’dê×T‚ \]Ë»r!„Ê>|üPÍ®š¡¡!†Ÿ +‡cll\Š’$ÉápÒÒÓÊ»f!„ÊDb‘±±1—Ë-òçÑ/G$é}ûAíRA’$ ä׌¯å]3„Be«`ÚÇHGAÐéôòŽ!„P™cñMyƒJ_YìYì*!ô;À‹P±@xi+BUv³€ +©²˜EÀËZBèw@ ÀI„ªìh@^PàæíÛMBåÁaÝ{÷Ýè0I’Dq|üôiÛÎ]@1ÛˆVm$‰jJª¬ŒÌL*Ù×´4Õ ©UÚÓ ŸO4 „P¥Wx¢AÕŒ)“¨¯Ô‹D¢û®Û¸I,÷îÙC÷Ü?|ü¸uÇζmZs¹\ù¼üüëñ7B‚SÆ\¼$ìêâ²lñBS-9ë’•!! „Pe§þZê±w½zV––Ô’àÀ@ ˆCGŽôéÕS÷Üå9+á\«VÌÅ‹M‚ƒSÆ\¼ä\«VÒ‹A˜š˜øûùiÏPK¤HÞø¥™' ÏL!„PåWŒkêxyeffQ¿ã°gÿv»5 ïÞ»Ïù ©7nÝònòìùóÁÃGôûkŒ7ZµëàÜDžOxhÓkqñ<O¾$ùÍÛ×ÉÉá¡MóIýúH’ܺcgëöCÂ#GŸ’šªšýdA$N# „P%§þZ ?ýË}úü™Ãáp¹Ü‡£ÖmÜÔ$8hÆ”Iµœœ¦Ïžsçî=ùV þ·ÄËÓcè A ÐfOŸ¶â‹å 7¦Ñh±W¯És>áBÍ5œ U(}ßÁC[¶ï œ6i‚¾žÞŠÕkUÓ ’ …OŸ%ˆÅb¥åb±øé³¡P¨eÛòî·!„Ê\Á‰µ 5g ‰<|´kï¾&ÁA‰dçî=;t9|4kÚ4==cÛÎ]¾>õ©­Ú´lÙ©C{걫‹ Ô÷®gnf&Ï–Ëå4ŠŽ‰iA-‰¹x©yD¸jb±x×Þ}´n5nô(mÒdðß#>z\ÞVI¼|õâ⥘'OµkÛÅbS E"á±ãGRRSH’ôôðR»!5>C!T¹i¸»"A@罓6ðõý÷ߟ¿|ÉÊÎ m*OÚtåšµAP[ùúÔ/ÌêûkäO#š5›0uZVv¶©‰IbRÒû›…~øø‰Z+Oöéó眜œ–‘‘Ä·%‘aa=VLƒŸhµÓÒD.ή OŸ¤¤|9vâh»¶Ø,¶P${.º°¬ó1åÝb• ›Ånß®£µµŽã Þ: !„*=õŸÒkÅï (mÀb±z÷ì±fý:îéá~)öʽûÖ­ZA„êV :®ÅÅW³·÷®WW1··™™éâeËk{yÚX[ …ù°X¬žÝ»­Y¿Î`x×­sñò•÷?*¥ÁO´ÚéÒD6§S‡.™f¦fL&³È<ñ7Bèw í šôêÞM"‘;qò`Ô‘jU«ÎŸ=ËÇÛ[mJw7ïzu/]¦§§óßiÅU4-¬iÓ‡£Â›…j/K ?yêÄ©Ó |êÏ›5cÐÐáåÝh•“É´¶².Æ8‰€B•±ÿð~û*öõêÔÓryúueff*^[Z*¤Riܸ¦!M<+„BШáMà nTÞÁ „B¨bQÿTi”Ååx-BýŠý„£!„*=œE¨äÊb» Býh€—" bÁ!Býp¡’Ã[G „*¼î !„Bj0€F£‘$‰Ÿ5+¥²˜EŠ„ºÜ¤!„Ð/f¦f¯’_¹Ôra³Ëùu_Óuò¥µü'„­Ëãr™*‹$IùÕ2™LíZ’$_¾~ikkûÓ¢E!T.P³FÍä7É·ïÞ‹ÅeWR‘Ÿe•hZЍ./rÉC|·*•'„ÚmÔ&.Rnn®jäÄ7ŠË)/ùOp˜™š9Ôtø‘@!Tñœhptpttp,ï`B!TQàåŠ!„R‡!„R‡!„R‡!„R‡!„R£`ˆp=>¾Ž¯_Jjjéæþîý‡õ›6óx|]S1¤¥§·”2 !„ú•í,Âûï7lÞÂãóÊ´7·u«V˜š˜”i)!„Ðo…QÞ”“ÿòŽ!„ªT”gä“ö† mÐ8¨C×î÷î?/ùêUïþ}[·ïpú¿3J›(>¥Î 1 B#[ÔñõS-›$É ›·„6oÙ qÐУ¾¤¤(®=|ähëövîÑëò•«0zÜ„Î=z)nÖ¢Õìy ”8Õª]‡»u?wþ¼– B!¤‰ú ã'Oõ÷ó›1eR>/ü”©òåCþéåé1wæt'G§)3fÞº}G{îÇ €…sç¬[µBuíÎ={×oÚ2gÆ4}}½ÅK—ËW8µpÉÒ°Ðй³fÖrr=nüÕëqa¡M“’>ùB¥yü$!õë×–-"ó~úôáãÇVÍ¿;Ë• æ 3úúúð<1QS†?¥B¡_Lñ¾Ñž‘QÕÞ¾àqz:›Í¦ÞƒÉÏJhgiaiiéŠR¬¬,`ÁœÙ¶66Š›p8œ @‚ ®ÅÅ¿JNv©UËÑở$¶´´€ÌÌ,yžïÞÈÎÎÖ’a¹4:B!Tñï¾g£ ¾ @’ä¿gϺ¹ºA£Ñ 33“Z¥ãe€UlmMLLNŸ9#_ræ\4õÀ®JcãܼÜzuëP‰/^œ;žÁ`úùú^йp±e‹æJyÚÛÙEÇÄÈ—Ìœ3w×Þ½Z2,ïöG!„*¨â½G;q’Á`xy¸Ÿ;áþƒ‡Ô÷jÖ Óé /éѭ냇“’äéét:\¹z­Zµª>ÞÞŠY1™ÌÞ={¬\³–A§×÷®sñò»÷ïå«öï·xéò””Tw·ç‰I[wìœ>yµ6,´é¼E‹%Ióˆp¥ð˜L怾}–¯^Q·víø7î=x°qíjí"„BHUñ†K.ز}ÇC‡­­¬fϘFݰÈÚÊjæÔ)ë6nš:sV€¿ÿÌiSÿì7€Jïåááãí=ñÿôõôbc¢•rëÓ«§@ 8rüı'4ð]4onßAQ«zvë*‘HŽÚ½o¿½ÝÔ‰Ú¶iM­j<{þŸúÞV––ªöêÑ]"•:räÐá¨êÕ«-ž?ÏÏ×W{†!„REì?¼¿kÇ®E¦»?tĨèOY[Y•wÌ!„*C¢„7 Ç_zD!„8D@!„8D@!„º^®àïÿðöÍòŽ!„B? Î" „BH " „BH Èd²Ä‰?äóùåªè¸\®­‹³ Àñ%BUf H|‘˜™•iif dy‡ƒJ[NNŽ‘‘Q)fH’dê×T‚ \]Ë»r!„Ê>|üPÍ®š¡¡!†Ÿ +‡cll\Š’$ÉápÒÒÓÊ»f!„ÊDb‘±±1—Ë%¢¼ãA¥L$ééé•b†$I’@~ÍøZÞ5C!T¶ ¦ p|€tDõë\!„*7ß”w0¨ô•ŞŮ‚B¿¼ø‰—¶"„PeW0‹øÑ°’*‹Y¼¬!„~4ÀÁ*œD@¡ÊŽDáÕÊFŽÐ$tÃæ-JËoÞ¾Ð$ôkZšÒr‰DrèÈÑÞ6kѪUûÃG‰»qC÷l5ÑTµ<#3S{¹T2ù_ã¦ÍÚtè´hé²¼¼<ËZ½n}`h³³Ñçu X‹Ÿ>mÛ¹K ” ±¦vøùðDBUz…'T¥gdÜ{ð@OOïÂåËC Ô%»©3gß½¿s‡öεjñx¼ëñ7ÆMš2jø°Î;üH¶¥RîŒ)“¨;ˆD¢/_í?t8;;{ÁœÙEf¾i붃QG&ü3¦yDø‡úáãÇ­;v¶mÓšËå7±«‹Ë²Å MMLJ¥Ñ~ŽB¨²Óv-ÂÅ˱4íï!ƒ-]öìy¢»[áÝôä›(nõöÝ»«×¯/˜3;$(ZÒ²yä¼E‹·ïÚݹcyJ-Ùj¢¶8ùòwïßk/—Jæ]¯ž•¥%• 80ÐÐÀ`Õºõb±˜Åbi)kמ½;vïùgô¨?Zµ*•×T]›š˜øûù·8] *^ž4<3…B•Ÿ¶kÎÇ\ð÷kÐ<"œËáÄ\¼Xd^™™YP­ª½âÂö´ l,ŠtÉöÆ­[þÁMR¿ï¶<:–«„šQÐþöy0êÈúÍ[FÚ¡íò…ÇNœìÔ½gpXÄŸý^½'NŸ ËËÏ—§éÕ¯ÿ¼E‹_¼|5zü„ðVmÂZ¶3~â»÷`ô¸ Ъ]ÿà&Tb‘H´n㦎ݺ‡E4oÓv섉/^¾¢V)%VjŸ=û´ëÜ5¨Yx÷Þ}Î_¸(oÃbµ^ A’8€B•œÆk>ùòäéÓÈðp‡ШхK—Aá ß=%‚ jÕr222š>{nìÕkB¡Zèîæ6eÂx.—£K¶n®®+þ·ØÌÔT9uÅÉ—×r*ª\ @( @“s÷þým;wµjÞœÅbi*ëäéW¬^3x@ÿn]:ËW9~|ÙªÕ¡MBfL™ìäè0qê´ø›7¤Ré­Û·©4?}zù굿Ÿßˆ±ÿø‚ñcF3:-=mòôA ÐfOŸ¶â‹©ô·l;u¤U‹sgÎú× Ÿ>™0‘Z¥œX¡ŽZ·qS“à S&Õrrš>{λ÷¨4: …OŸ%ˆÅb¥åb±øé³yKªUÞý!„P™+8Ñ ú¡ðü…‹úú YÓ˜‹=~R§¶—–¼ ôõW,Y¼l媉S§1 çZu¼jûÖ÷nàë#¿ŸölMŒú5(n Š.:÷襸•­ÍÈáC5åy6úüÆ-[i4šD*•/”H$[¶íԿߟ=º@h“‘H¼eûÎm×{¸»]‹‹mÒ.]Ž562235ÍÊÊ¿r…CÍPÕÞþØÉ“b±ØÕÅê{×373£²Š„Ãÿ%¿lÂÈÈhâÔi™™™¦¦¦ª‰)b±xçî=;t9|4kÚ4==cÛÎ]¾>õuo·—¯^\¼óäÉ£vm;°Xlj¡H$~ßÁƒUlmÏŸ[ËÉ©èl5ÑtþþÛò"Ê%X4o.u¡ŸŒ”=OLܸyë²U«§Ož¤¶¬ ›·L™0þuròö]»ƒ¸8;@ò›·YÙÙ>Þõ•¶‘¿ß‚ÅKH’ Ø{ð I’4íò•«!AA5kTçr8KW®ìÖ¹³wÝ:în®W]¨Ôeü˜Ñ@’dzFÆ»wïÏ?$uD)ñ·§Ÿ¿|ÉÊÎ m*Ï$,´éÊ5kå“ µÑø¡ßÅÙ5áé“””/ÇNm×¶›ÅŠ„ÇNMIM±¶¶qqvÕ´!Ax¹"BUzê¿Ñð:9ùÕëׯ^¿>}^¾ðâ¥ËcFü­Ëms,,,›…†7 €Ä¤¤é³çN9ûàž]?˜m‰Ë¥Öº»¹Ê/W¬W§Çß±k÷” ãÕþâÀØ‘#Zµh.‰®ÅÅÏš7ç–ÍL&3'7úý5D)1Ï l¼n ¶66OŸ?õ½¡àÓlÁE ò­¿Èl5ápØ——ome¥¸<7/“ÆNœ¤¥\µÑ::8ˆÄb@h` ¯˜'•$80 6›=}ò¤C‡mÞ¶}Øà¿¨ÆœÓ­­¿ ƒËá8Ô¬YÕÞîÚõxK sc##ŸúÞAx¸»-]´P(>xôxÓÖ­£ÇM8yäð·é€‚`222GŽ×<"|ÞÌFFF󿥨XÅ™ù#yE,,Ì ++«ª½CFf&›Í640 æ¾¯‘Æwt›Ó¾]ǣǢRR¾ìصU&“Y[Û´oבýí¼ƒZ8D@¡ßúo4œ¹Ð¨¡Ÿwݺukצþ:¶oÇb2å—Í«UËÑ‘Á`9v\iyÂÓ§–zzz%Ëj99±˜Ì³ÑÑŠ e2ÙgÎÕ¨^­nÚÚËU›çËW¯Œ”ƪ¼<=ºwé¼{ßþ„gϪØÚåæåÊãñòUÌ…‹ 7¾w166$8ˆN§'&½hÙ®C~~>›ÍöóõéÚ©Ó—”þ·3roß½‰DÝ»t¦ÆpÿÁÃ"w[[[##£ó.È—DÇ\psu)~6‹Ý¾]GkkǼuBUz ê?Å3Ö OŸ}øøqðÀŠC===¿¾—bc'ü3†N§S¬]¸|ÙÈÐPž†Ëå8`åÚu)©©!Afffyy¹ñ7o>?{ú´§Ïž™mVvö³gÏë×÷f1™ŠQ4påÚuoß½ 066NMMýïì¹Ä/Vüo±–rå_¸÷à‰±1@&½x±s÷žÞ½zª¿5@-2hàÕëq³æÎß»c[ÿÞ½—­\ššæîæ’˜ôbÇî=“Ç£R†î;pF£ èÓ‡ ˆjÕªŠD¢i³f·nÙ2??û®Ý^žžz\.ƒÎ€kqñÕìí½ëÕup¨Éår/]Þ±}[©TwãÆ{÷àþƒa¡¡J‰å±±X¬Þ={¬Y¿N§{z¸_нrïþƒu«VÈ¿ÑPX¾€Àas:uè’‘™afjÆü¾åÕÂßh@¡ßšo4œ‹‰a1™Ô—5 ¾z=îÖí;þ îÞ³|ÕjŶ66'vrrd0,œ;gݪò…Cþéåé1wæt'G§)3fÞº}§™Èíܳwý¦Í¡!!sfLÓ××[¼t¹|ÕÃQ —, ;kf-'ÇÑãÆ_½Ú41)éó—/TšÇOR¿~mÙ"R1χ£,^8Îl7· S¦Ý¾sWS†å½§B¡ŸŠŸ>€Õk¨MáèP3++KûU„în®àëSßÂÜ\¾°iHð?£G@x³f½ûÜ´m[_ŸâfB‰DÛvììжíä 㨠ûúëþƒ‡ ‘HÖoÚ<ì¯Aýúô€ðf¡"‘xÃæ-›Ö­a±X—¯\íÖ¹Ä\¼hkcã]·nÜTžR©tÃæ-];u¤‚lÖ´ÉË×ɧϜ©W·ŽÚ •÷ÎB!„~Åo4¨ÿ¥AêG}d2iq³n!Ï¡e‹È' OK凟²srZ·lQ˜adÁ|À«×¯³²²|}|x<>õ×8Àÿyb"—Ãñ÷ó»{…JváÒåæ‘Š?PôòõëÌÌÌÈð0ù’MkW9RS†2™¬ìwB!TQ0 Š-$¿yS­jUÕÉoÞ7ks33ùcK K>ŸŸ——W²(323À¢pvÁ‚z=ûöSÚ„Çã……69w^^^ÞÇOŸ>|üتùwg²³²À\aÆB__ž'&jʰ€Bý¢`kkãP³Æñ“§‚•VK¥ÒSÿþ׸‘š¯deeiÏ:=#£ª½}Áãôt6›M½+Š¥…¤¥¥+fH=°²²€sfÛÚØ(nÂápB‚ ‚¸ÿ*9Ù¥V-G‡ï~¿ØÒÒ23³äy¾{ÿ!;;[K†?e „BBÁ‰†!ƒ^¼{àp”â:’$-YöñÓ§ýúF€ÌÌLjm‘Wð>/Ïçß³gÝ\] ‚(n&”*¶¶&&&§Ïœ‘/9s.šz`W¥Š‰±qn^n½ºu¨¿Ä/Î?Ï`0 ý|}/ÅÆÆ\¸Ø²Es¥<íí쌌¢cbäKfΙ»kï^-–÷ÎB!„~ž‚·½ðfÍ’^¼\°øW¯] mjjjòéó—S§ÿMzùrþì™Ôço‡š5ètú‚ÅKztëúàáÃĤ$y.t:®\½V­ZUoojá±' †—‡û¹óî?xH}O¡¸™P˜Lfïž=V®YË Óë{׋¹xùÝû÷òUû÷[¼tyJJª‡»ÛóĤ­;vNŸ<‰ZÚtޢʼn¤yD¸RÍ™L怾}–¯^Q·víø7î=x°qíjí"„B¿ zÇÎ=Ý= ¯OÝ:u'$œ8uúÔgž%&z¸»Ï›5Ã×§àkúú¶66—¯\ù÷ìYSSÓQ#†;q²wÏzzz¦&&=Ž:vìÒ娾özÿáÿgήXò¿³ÑçŽÿŒZ¬L”­SÛ þ={îì¹h+k«ñcFŸ8ušÚ°¶—'›Í>~òÔÉÿKKOÿ{Èàv´¡¶²µµÝ¾k·O}oê{ @ÅÖ«Gw}ýÚ^^,ëÔÿþ÷?¡H8ñŸ‚€– B¡JïÉÓ'Ž5‰ý‡÷wíØµt³¾?tĨèOY[Y•w5B!T<¢„7 Ç_zD!„8D@!„8D@!„eòE¾ÿ‡·o–wÕB!Tr8‹€B!5pˆ€B!5 “É_$~üü‘Ïçÿp†¨’ãr¹v¶v.Î.4Ç—!T™1 ñEbfV¦¥™¥†ßzD¿°œœ##£RÌ$ÉÔ¯©A¸:»–wåB•!|øø¡š]5CCC ?V6ÇØØ¸3$I’Ãᤥ§•wÍB•-ˆÄ"ccc.—KDyǃJ™H$ÒÓÓ+Å I’$üšñµ¼k†B¨lLàøéˆ ê·BUn ¾)ï`Pé+‹=‹]!„~xñ*6/mE¡Ê®`ð£a%U³xY+Býh€ƒT8‰€B• ˆÂ«Ô»yûv@“ÐŒÌL-iH€Uk×5ÿ£m³æ-‰b¢òÿš–FÄÇOŸ¶íÜ%Š› ú™ðDBUz¥6‹ðô鳃QG:µo?wÖÌÉçÃÇ[wìäá}+8! „Pe§ÓµòZÒäóò ÝmÌÍÌŠ„bþº”…tW-IÐp× „På§~$É­;v¶nß1$ÍÈÐ ˆ[¶E;Ö÷Ï^ŽYYY{3aâé£Q|7I *_¨”Oy·Ï/OË,‚@ xõúe-'g‹¥¸\$½x™äèàÄáp4åYÞÕB!Tæ N4(~(‹Å»öîû£u«q£G@h“&ƒÿñðÑcH$[¶íԿߟ=º@h“‘H¼eûÎF ºº¸@}ïzÔ‰¡H8|ð_;v ò422š8uZfff‘)åƒÊÎËW/.^ŠyòäQ»¶X,6µP$;~$%5…$IO/µR;„B•›š»+~úü9''§ed¤üÃ}dXØÃG ‚H~ó6+;ÛÇ»ž@  7ò÷[°x I’ðý5ãÇŒ’$Ó32Þ½{îüy .qSºÔ à_(\ˆ×"”*--éâìšðôIJÊ—c'޶kÛÍb EÂc'ަ¤¦X[Û¸8»jÚ ¼\!„*½ÂËå223ÀÜÜ\¾Ä¢àqNnôûkˆR.ª_@¸÷àÁŽÝ{=~bllT½Z5=niþ’*,«]ÛÇŽIIùrìø‘–Í[ÿ{æTJÊkk›vm;(}P„£7„ú¨ùFƒ¥…¤g¤Wµ·£–¤gdR ¬,-`ÎŒéÖÖVйp9Ba& ##säØqÍ#ÂçÍœaddñ7o^Š-œ;€‚GÙÙÙ ¿"á»ÉœE(5ZZ’Ãæ´o×ñ豨””/;vm•ÉdÖÖ6íÛud;ïPÜ BUj¾Ñ`kccbl|ö\´|IôùêA[[cc£Ü¼ÜºµkS/^¾Š¹p‘Á`(æðöÝ;‘HÔ½Kgj|÷<,(F€Ì¬,êi\üònß›Ånß®£µµŽã Þ: !„*½‚·vÅOí,«g÷nkÖo 3Þuë\¼|åýÇ@Áb±ú÷î½låêÔÔ4w7—Ĥ;vï™<~u|› pp¨Éår/]Þ±}[©TwãÆ{÷àþƒu¼jÓéôÿ-_Þ­sç‡'½|ߣAgÀµ¸øjööÞõê–wûüòt™á°9:tÉÈÌ035c2™E承рB¿ƒ‚Y¥¯¹÷êÞm@ß>—.ÇΘ3ÏçÍ›5C¾ª[—ÎCÿt.æüÔ³.^Ž8îŸ6­Z*ejbl¼táBŸ?sîüÕëÖÛÚØìÛ±ÝÞÎîò•«VV–S'MHMý:sî¼/))Ó&MTÚÖÃÝÍ»^ÝÅK—Ÿ2µ¼ç7Âd2­­¬uÀI„ªìˆý‡÷ÛW±¯W§ž–ËÓЯ+33ÓÔÔ´tó”J¥q7⚆4-ïÊ!„*¢„7 /ø§ò!„B‹N¿Ñ€~]eñݼ!„~¥öKè·‚¿Ñ€B•Î"TreòKØUBè7@¼ Bèw€³•Þ§!„PÉàug!„Rƒ4$Iü¬Y)•Å,‚P$Ôå&Í!„~i 035{•üÊ¥– ›]ίûš®“/­å?!l]—{ÌTY$Iʨ&Édj×’$ùòõK[[ÛŸ-B¡rÁ€š5j&¿I¾}÷¶X,.»’Šü,«”@ûÓR @uy‘K~0âû»U©~¨fWÍÐÐFó-!„$ÉápÒÒÓ¨§¿ïA$s¹Üÿ™i„B¨ I’òkÆWêéoýÇ!„At:]þô÷E ¾)ï@B¡ŠBñmñ·žE@!„"òÛeü¿õ,|?\B!„~sŠ—ðÿ¾³88@!„Ôøv/€‚!‚H$Ú³ÿ@§î=üƒCšDDöÿkÈ•«×~N$×ããëøú¥¥§€L&ûß²åA¡a ƒBJœá»÷ÖoÚÌãqC$¢ðj„ïlÛ¹kêÌÙMB¿¦¥åaÛÎ]§ÿ;£KÊ›·oÿœ8©¨âä!á=ûöÛwðT*-Y¶ZâÿøéÓ¶»A)Æ_Ö­¤©‚™™A«Ö®kþGÛfÍ[–8Ãâ6‹âŽSmgÅðÊ®úšúgYô^]jtþÂſnjhÕ¦Yó–=úô[¿i³<=µyD«6‰Di«Ÿ>QÝ^ÇæR»»323'NÚ¼E‹?ڭݰQ&“•A«#T ”O4ŒŸ<åÖí;Ý»vqsuÉÏç]¹víï1cÇÓ£k—Ÿ3P W—e‹šš˜”KéjÍ_ü¿ÿΞkÞ¶Mk:–˜ôâø©S1/­[µÂÆÚšJ“—Ÿ=þFHP â†1/« µ»{ö¼Éoßü3jTzFÆ–í; úôêYÞM‚:ßfüæÍ¥Ø+Ë/ mÒ„ZÚ¦UËsænÚ²µ{—ÎÄOœÏËË€NÚ[˜›—uY„ºk>~ú¬§Ç555o_yøiuÿ>ÓbU¡L㔇D•â]¯ž•¥%µªiHH€ñ&EÇ\ˆkVÜœµÄ_ŠU+V“–.ÅZäóò ÝmÌÍÌJ%CÝ+®i«²î?¦&&þ~~¥R—RiŸ‹—cÿ;{nñ¼¹ü©%MCBÚ´j٫߀ÍÛ¶OŸ<‰ÚʹV­˜‹›)nsñ’s­ZI/^è°êîNÏȸ}÷îÌ©S¨#…Çã:r´ïŸ½Ê¢åúíûo4ddf@õjÕuîоIH°P(”/Ù¾kwd›?|5n×¹ëÙèóÔBê4AJjªâÓ´ôtùòC†6hÔ¡k÷{÷PiH’ܰyKhó–  1êKJмˆ¡#F@hd‹:¾~:–«š¿ÚLÔ´‚ºãüʵk!Ÿ>ù2dÄÈà°ˆ}úÞðPžfÏþí:w jÞ½wŸó.R oܺåÜäý‡CGŽ ‹èögŸû>yú´÷€AAÍ»ôúóæí;òŽ8Ù©{Ïà°ˆ?û¼z=N5*·gÏŸ>¢ß_CàÅËW£ÇOoÕ&¬eë1ã'¾{ÿA¾‰Ú8E"Ѻ›:vëѼMÛ±&¾xùJgêׯÃG ìѧ߃GÔ.TÛ&ªüýüù7Õƒ–œS¿~U|šž‘¡¥¹H’ܺcgëöCÂ#GŸ ?.JP#µù«f¢¥RÚwœ"í½EÞµ4µÚ0”ðÈñ»õ‹èÙ·¿üCy Ž2ÅãBKƒ«Ú¼m{‹ˆùø€bW¥ÊšåËZDFÊ—„‡6½ÏãñäK’ß¼}œÚTm¶j뮺§Þ¿ÿn.·¾wsuÉÊÊÊÏçB A$Y0@—ZµŒŒ&Nvñòe@@­ðpwŸ9u ‡Ã¡žîÞ·嚵͚4™7k†‹s­ S¦Þ¸u«È’ÆOžêïç7cʤ|^þø)S¨…;÷ì]¿ishHÈœÓôõõ/].O?|È`X8wκU+t)Wmþª™¨ou×"Ä^½H³æÎ÷÷ó›4îŸ?}ö*ÁÃQë6nj4cʤZNNÓgϹs÷AÔ&§NkܨÑäñãBÁÄiÓ'OŸÑ<{N­R[;íñ!“ɦ̘™’’ºzÙRcc‚ è³§O[ñ¿Åº´ü¨qã=ÝÝgL™ääè0{Þ‚»÷ï+ů1†¢r.¬§ü©ææÚwðЖí;‚ƒ§M𠝧·bõZyÅ­‘Úü•2ÑR)Õ' ߉ÄTxÚ{‹¼jjê"÷/Õ1–®XÔ8`Ö´©n®.ÓgÏ¡Æô%8Ê ãÑÚàJRRSß¼}Û,´©|‰X,¦ÚÁ¡f Ow7ê57¦Ñh±W¯ÉSž¿p¡fNŽŽª™kª»êîv®å´}ÓF;»*ÔÓ—¯^³Ùl==.PÅ#£d€ÁúÕ+.Y:z܃áæêR¯n]?_??ê.Kb±xËöÝ»tþgô(ˆ KKOß´e[à ´õïÓ¤RÙ´Y³³²²ôôô¶íØÙ¡mÛÉÆ@x³f}ý%ÿôàîæ ¾>õ© E–«š¿‰‰‰R&º ”(™™™B¡ÐÖÆæíÛwðGëV½{ö’$gÏ_•­¯§·s÷žÎ:Œ> š5mšžž±mç._ŸúT];wjÓ²%H¥Ò9 N›<±ed¤üivN޾žÞ–m;õï÷gîÚ$D$oÙ¾³Qƪ´iÙ²S‡öðèñ“¬¬¬ñ+W8Ô¬Uíí<)‹©BUã416Š„ÃÿÕ¹c*‘‘ÑÄ©Ó233©§6¤6‘ʤsæ/ÌÊÎV»ÐÄØX’––´²´ …yùù\GmíF ¦%~’$gÏ[ð<1iãÚÕÔBW¨ï]š§‹ÅÚ[>¸q µ*´I“AC‡oß¹ÛÇÛ[±Iµ´¡öœ5Qm.}=½]{÷ýѺոѣ¨Hÿ=âá£Ç%«‘ÚÝ¡”É«×Éj+Åd2Uw\çç´µ÷y?¼qó–Ú¦þk@-û—êÿ[¶ïìØ®-µa“à ×ÉoÎDŸ/ÙQ&G,kip%))©PÕÎN¾düä)7nÝ–?ý÷øQê—Ë hÓ"2‚ZsñRóˆpµÙjÚJ{ ôõõÝ\ ¦nܺ½{ßþ°Ð¦ø1¨¢ÆÊ”‚Ë=ÜÝwoÛúõkÚ{÷îÞ¿åêµ]{öÚU©²|Éb—Zµ>~ú”••&ß,2,lÉŠ•E–Јz`nn©ôÃÇOÙ99­[¶(… ZFF*N0**²\Õü‹Ñ *Ã¥«qqAþþÔZ333ÉdŸ¿|ÉÊÎ m*ß*,´éÊ5k囸x{S«ÌÍÍUŸJ¥Òä7o³²³}¼ëÉgkùû-X¼„$I¦€¯O}jójUí¹ÎÒ•+»uîì]·Ž»›+5 Ò'AãÇŒ’$Ó32Þ½{îüy .@ù~s3sʤª ©| Cú¶­R£FFÓT;;»*Zâ_¾jõå+WUµ·WÜ=ŠeÙòá͈o›DF„¯Y·žz*_S¾}÷N{Î…õ•_¼¢® e2Ù§ÏŸsrrZFFFöðÑりY#µ»C)C±3‹|Ѽ¹JW>yútÕÚuEöy?ÔÔÔÚû'AÉoÞdee…5 •WvÍò¥×ãoL›5»G™<í ®ø#ï\.WFʨ—y¶#‡ë—›ž„7 ýðñ“jÿ/²îJ Ç[³~ÃÑ'kT¯>rØP¥µUA|w¹¢œ¥¥Eóˆpj¼üìyâäéÓ'N™zìÐÁ´´t0S¸àËÜÜœÏçSWja¢r1sFfXX~¾—pTUd¹&?p±´êÁyùÊÕáƒ+o¬” ==L¿‹ÇŒ/äåçSO™L¦bz¥§“›ÔiTE<>ß@__)}}}ê©©éºU+·íÜ9yÚt‰TêëSÔðaU·j <ÍIDAT5kjŠî=x°c÷žGŸU¯VM«÷ý~Q³‰Ú…J!©•šú•Ãáèëéiª‡ÃÑÿã' ýûôÞºcç­;whøì^dË›™^hiaN­RlRMmXdΚ¨6uM¹¹bßÖ8Ud¹jw‡-Cuǹ»¹Ê¯3¥ð¾½‰jï-ò~¨©©™,––ý Ôõ%ÔXGž§¡¡!”è(“Ç£½ÁC //¸y5ÖÊÒ ’ß$ר^pÑ•<¤/”bhè×@˽pñRÇöí¢c.ºº¸Tµ·§†ºïU/_½7iʧϟÛ…Nøg¬Á÷ ‹P¡|¢áþƒ‡ýþ|xßêdÅÍÕå¯&L™šÏãQ^Ff¦üs^zF›Í600PÊ:++K{Ù–––^˜Uzº¦Äº—[âV·Çûò%ÅÉÑ >\¬Pø” ¨x²²²ªÚLWfdf²ÙlCM›(=¥^£ç̘nmm¥ —Ãáóùšw·¥‹ …ÂoÚºuô¸ 'ÖThffÖȱãšG„Ï›9ÃÈÈâoÞ¼[øyXiꜱJ>Š!©ŠrëÎOw¦¥vZâ_4o®—§Ç[·–¯Z½wÇ6êÜ–RÙò™™™…«22Ùl¶¾¾RüjcÐ}Ÿfgg I}³S};=#]žUzF&ÎW¯Fjû’R&š*¥Ø™µì8yÓ«·¨mjíýÓÒ²³ +ûþÃÇ„§Oð(ÓÞà›Ö­Q<Ø«ÚÛÙÚØœ‰>ß4$Dé¥àÖ;J{–Åb5 ŽŽ¹Ð©Cû —.uêÐ^mã}l*$þøéÓà¿GŠD¢93¦—àë?ý4Š=œεœ˜ Æ¡¨£Jé?ybii¡¯§gW¥Š±‘ѹoß&€³ÑÑîn@£Ñ@~ÚRéú|UUlmMLLNŸ9#_ræ\´¦ÄZÊ-ÝV€¸7ü¼‘‘Ñù äK¢c.ÈÏ/ꢊ­­±±Qn^nÝÚµ©¿/_Å\¸È`0´˜ô¢e»ùùùl6ÛÏ×§k§N_RRøß&óU½}÷N$uïÒ™zÅM§r´Ó¥MnݹsåÚõöü¡¥v¯^'k‰ßÆÚš ˆ±£F&¿yuôXÉZ>úÛ*’$ÏFŸwuv&B1~Mm¨%炾ýmÔC{SØÚؘŸUèÏÑçc´ô„ìKZ*¥ËŽ“{ûî}±z‹jS'½x©½ÚU±522R¼µÀÜ… ÷8øƒ-£½Áå°níÚÔ’ݺÆ^¹zñòw·<¹åÚuÕÌ#š=zò$:æÂ—””0 ße€â›»÷íÏÍÍøÏX Šï»['éëë2xÙÊU_RRš†››™åäåÆÅßøïì¹ù³g“ÉìÛûÏ•kÖÒèôÚž.]¾s÷ÞæukÀ¡f :¾`ñ’ݺ>xø0±¨›´0™ÌÞ={¬\³–A§×÷®sñò»÷ïµ$ÖT®ÔÇÐ+W¯U«V•ºfMÅ1þå+WºvêXðFáJlPøÍb±z÷ì±fý:îéá~)öʽûÖ­ZAjV»‰jý{÷^¶rujjš»›KbÒ‹»÷L?Ž -T«VU$M›5»uË–ùùùÛwíöòôÔãr5êàP“Ëå,^º¼cû¶R©,îÆ;÷îÀý ô ÔlB¨ÏG1$ùò{˜P·Nî?xpôø‰fM›R¯¡šj§Kü^-##7mÝnblÌ 3àZ\|5{{ïzu‹lù“§ÿe2înç/\zðèѪ¥K”šTS  )g‡5ètúÿ–/ïÖ¹óÃÇ“^¾(اš»GÏîÝÖ¬ß@g0¼ëÖ¹xùÊûåÝ@©K”¬/)5‹¦J©Ýqª©å5k«·¨6u‘û—Åbõý³×êuë ‚¨íåuãÖ­õèÖuϾý?r”iopÕã½s‡ö>œ<}F‹ˆÿ†~,ëîýû'Nêӫ׎ݻ•ö¬··™™éâeËk{yRwURÜYÙÙÏž=¯_ß»ˆº+DrëöfllD]õIñ©ï­z:¡ò¥xmÁµ½{öpvrÚ{ðàòÕkrssŒŒj{znX³ÊÏ×—JЧWO‰DräØñýU¯VmñüyÔÆÖVV3§NY·qÓÔ™³üýgN›úg¿Ú‹ïÓ«§@ 8rüı'4ð]4onßAiI¬¶\-¼<<|¼½ç/þŸ¾ž^lŒÆ) âûo4$&½ðô(ú–޽ºw“H$ÇNœ<u¤ZÕªógÏÒ> QÕ­Kg‰TzøèÑ}ØÙÙM÷O›V-Åb±–ô¸Ü% ç¯\½væÜ¹\××§þÈaCµabl¼táÂÕë7Ìœ;ßÄØ¸U‹æûvlï3ð¯ËW®¶jÞ\Ç8Åõ!MŸ=‡zÀd2ííª ùkP·Î´×t‰øÁcc×mÜ4yü8w7ïzu/]¦§§óßé"[~áÜÙÛwí>t䨕¥åŒ)“ýú)5©–6Ô”³••åÔI6nÞ:sî<ÿ†~Ó&MT½ÌBµ{‚ã'O8uºOýy³f :¼û’R³¨­”ö¾¤®·˜«·¨6µ.û·G×.R©ôȱ㇫^­êüÙ³ôõôöìÛÿƒ-S¬'bÞ¬™ÇNž¨HØÔý”ï‹ð›Â±B!ô=å»+þžp!„Òâ7žE@!„f¿ï,F#IgB!9¡HÈf±©Ç¿ïÁÌÔìUò+—Z.l6»¼cA?•â]5¡ÌѰQ©+ÖÎ*»Ä%H_¾MtA’äË×/mmm?|þ¿ó¡fšÉo’oß½-‹Ë;–ßEyÍÙüH¹åµmåPv-PŠ9c÷ø9ÔÜ­Nç(öîˆÛ\çœK3ì ÓÌLÍj:ܾw~ç!Fstpttpüñ¬B¡Ê/WD!„ Éd‰/?~þÈçóË;T4.—kgkçâìB#p„‡B¨¬0 ñE"3¿ïy‡_ˆD"Iz•”ô"ÉÕÙµ¼cA!Ti1àÃÇM‚šÈd2¡PXÞñ ¢Ñh´ZµnݽUÞ „ªÌ ‹‚J¥å Ò‰T*%h~Û!„P™*<³€o9¿Šßí»R!„Ê‚ I‡¿ÜW!„ÊXÁ,~-‰ !„ÊÎ"üªHœI@!T–pˆðK"I! „*[ øviMC™Lvòßÿ;ýæí[&“Q½ZµNíÛ7 €›·o›4åÈþ}––å]‹ÅÇOžúï\ô§ÏŸ9lvõjÕºvîÔ¨¡ßO(šj‡ã‡š™™ÊHrí†ç¢Ï‹ÄâèÓ'K–áÇŸ¢/\èÚ©#—ËÕ”Ç!„ÊTѳÓgϹuçn§öíúöê™—ŸåÚµs榦êܱƒüÒúŠ01cÎÜ{vîÐÞÅÙ™Çã]‹‹Ÿ8uÚßCwl×®¬‹Vl‡§OŸ>r´ŸÞîn%n–Ÿ>nßµ»MË–GumÁÎ*ÿ&G!T™ d2™Ú÷³è˜ ×ãol^¿ÖÙÉI&“ö¿eË7nÝNmRNR¼{ÿþZ\üüÙ³‚Èã\ð¿%»öìkÿÇeý-AÅvÈçå@›–-LMMe2Y©ä¬ûr„B¨´1‹p0êHdx˜CŠ¿˜Üµs§Ï_R^''Sd?ù2{ÁÂ牉UlmG V§¶•ìÀ¡ÃÇOÎÈȨR¥ÊŸ=º7 –ç vիׯ7mÝþìùsH7·áƒÛÛÛQéOþû£_ÓÒªUµïÛ«W#ÿ†Jqffe@[Å8Û´jI„P(d³ÙZʽuç΄)ÓíÝmia!zäÀ¾—¯^QË,^òôù³*¶UFý=¬¶§'$¹kï¾Sÿþ——ŸWÇ«vp`cø6D7i üÑ© \:wF—rUó§2i×¥«b&Š*° !„PåF †JR¿~}õúupãÆÔƒœµ•Õ’…óëxyQïRó-ö÷k0aì@0gÁB*Íá#G7mÛ4mò¤ZNNs,¼sïž–UùùùÿLœ, ÿ=êŸQ£Ò32fÌK¥?vòÔêuš6 ™6i¢£ƒã´Y³oܺ¥ª“ƒƒ‘‘áìù ®^¿.¨…ÎNNãÇŒf±XÚC’ÿ¤7•Lþ”z0{þ‚¾>ÆŽåóùsæÔî`TÔŽÝ{‚§L˜ ¯¯·zÝz $IrPÿ~0kÚÔe‹êR®ÚüU3QRÞÝ!„På§máKJ XZZ(­"IR$Á·+æÚ´jÙ½Kg*‡¹ eegëëéí=x¨SûvC $I2$(0#3c÷¾ÞuëJ$µ«ú÷ù3+;{Õ¨ÕªV{;»§OSS;÷ìзO·ÎH’ l,‹wîÙ×ÀÇG1$‡³tÑ«×LŸ=—Á`Ôrtôôôð®[§~½zt:4•ë]·.U y >5lHÕN*•Î[´8+;[ËÝðp›V-Gý=L&“6þ{ÌØGŸP9Ôrt/SS™LVd¹ªù)e¢ºÛp”€B¨¬Ñ@aˆ üQ•$€N§“4ð©/‹%‰¡¡H¥ÒOŸ?ggg‡QËE"QÓàà¤/H’Ô´ªª‡ÃY¶jõÕëq9995kü3j$NóömvvN/ÏœœÜÜܼìì?_Ÿ—¯^I¥R¥PkÖܰzÕñçNïâ\ëæ­[“¦ÍøsÀÀ—¯^k)W^ ¥J©ÖÎÈÈP^»œÜÜðЦ"‘H"‘ˆÅâ°¦Må9He2ʤT„E–«š¿j&öNy÷„B•š¶Y øôé³­Òª[·Õ¬^ÝÜÌ >Ë >gdd€¡¡yúôŸ‰“7¬^Y£zuùÌ|µªUûôê9kÞ|§%$yØT†Ù99 ð¬©viié…Y¥gÀ÷ïèòÇE–«š¿j&ªpˆ€B¨¬i;Ñ “É:µowîüù›·ï(.ܾk7F l\0Ù­4÷M’ÖVVF††—¯\•¯¹ëâ\K&“iZ•ôòe×^½333¥RimOÏíÚ¦~ýÊçó­­¬ŒŒ²²²œœ¨¿çÏ£c.Ðh4¥³ ãôgJ¥Ò' ææGKH€¬¬ljùÍÛ· *¥¡vV––ÆÆÆ.]’¯¹x9¶0å÷[i)WSþª™à™„B?_?ãwãæôÙs‚{º»óøüø›7Ÿ=Oü³Gw+KË÷>IÞ€ú—F£uïÒyãÖmA¸:;ÇÅßxøè1uq¾¦Uövv"±xÁ’¥á¡¡<ï@T”‡»;õeÅ^=º¯Û´9%õ«s-Ç—¯“E3âo¥h9΀>½×mÚœúõ«C?S“¼¼ü»÷ï_н2uâxí!Uµ·§Óék6lhצuÂÓç¯^¿VlµµëÚ©ãÆ-[ ÍËÃãz|üÇÏŸ@ñ½^as-åjÊŸ*âoݶ³µõòôPÝ/8‹€B¨¬q_‰D2{úÔSÿ9s.:þÆM ˆš5jL?®iH°X,V¼Ð Nâ<íЮ­D*=ùï¿'Oÿkog7sêd77©T šVÍŸ5cíÆMKV¬äpØõëÕ<`•mÛÖ­$Éñ“§Žž8QÅÖvÌÈ¿ÃCC%‰bœ$I¶oû‡ƒCͨ£Ç·íØ•—Ÿo``àîæºdá|/*±¦rÍLMǽuç®%ËWúúÔ?f̰Q£åí¡¶vÛµ§ÿ;sî|ŒwݺÓ'O1æ…ÂwC.MåjÉߥV­ºµk¯Y¿AË=¸g—ú]‡ƒ„Be‰Øx¿}{g'gÅ›)a2™ ƒºG!I’Ôø@§Ó9Ç#¿}÷Añ)“Éd2™Ô…òM䪮¢ÓéL&“ú-•JE"‘ü]– €F£©f¥Hž5è¡Sã-åƒÁ`±XT¹b±˜Ëåòx<Vdí€ÊJ¾J)™öújÊŸ 6›M}—„Çã©Ö”Íf?zò¨iHÓòî?!„*¡Q›†üŒ“L&Ór·`¡P( U—SoxšžjÚJÓ*¥Íu @÷´ç#‰¨;=PrssáÛpAÇÚÉW©A—ú*=U;2PL\dk „B? ú—„; !„PYÃ!Â/ ÷B¡²VÄ/=¢Š O4 „*k pˆðkÁ…B¨¬á‰†_Î" „*kEÜ: UL¸³B•5Ðh4êæøÆóK B*“²Yìò!„PeÆ3S³ŒÌ cCcê¶Eå®d#•Ÿ6¾Q[ÐÏ]ÑéôìÜl[[ÛŸV"B¡ßjÖ¨ Ÿ>Ò~ß¡’¡îɨËZ¥”Ú7,A¡ª µ”XâÒ €øþé·Gß=UX¨6¥vf¦f5JÜ>!„P‘ N48:8::8–w0!„ª(*Ä™„BU48D@!„8D@!„8D@!„8D@!„8D@!„8D@!„8D@!„¥?D¸_Ç×Oõoøè1%Î-%5UÇåÅ ,4²Åäé3ÓÒÓK½J䯂ªÕt2™ìË–…†5 )q†ïÞX¿i3Ç/ïš!„*À?Êççߺwíå›$™Lª”ˆF£;ÕpnàÝXŸ«¯c¾ógÏ411Q\bfjVÞ•ý.0™Œ|ûîÝ–í;¾¦}ݼnmyÇõ {œ°gÿÁxyz”8“÷Þoؼ¥S‡özzÜò®B!Å!ÂÝ7·[C:®”H*•¦f~ºûàF¨ŽùúÔ¯omeUÞµ+"°À€F6{îÂE|>ŸËÅw¦ÊËË€NÚ[˜›—w,!„JMቆŸßÚÛÔ¨RÅÎÖ¶ŠÒ_•*vö65>|~ûƒ…É'Þ Ú qP‡®ÝïÝ@­ŠD+׬mÙ¶}ƒ€Àà°ˆá£F'¾x!ßðuò›>ù¶ø£Ý‘ãÇUs>|ähëövîÑëò•«º‡d`` ÿÅ&ÕLF›Ð¹G/yb’$ÃZ´š=o¦© &<}Úgà î½ûêËÈÈø$f’%Ýš"9ÜÆÍ[–¯ZþöÛ3¾˜jmm5oá"}ûÑ}HùræŒe_/~åÝ1î*VÉQ_Á0J…J.g$Û)*ÃXÚ+!]z¼WjËØQ#}}ëBÂZ46x!„ãø©Óãsssííí‹‹ŠÇ}<ºoŸÞbc{{»ñc²³sÄo;´k÷éøq„¶ƒ† _½nýG#†‹o±,»|ÕêQŒ:x!¤mD¸V«[±zMX‹æ–L¬š§ç´É“Mu²jÙ…B‘xúLt¯÷!ÇOžtws{«~ý ŸM23b·w»D÷îEùùüyÉÉ· 3œƒN§[³~CßÞ½Äfí"#3³²V­Y×44Tl Y1ýß¼u+''gíŠe>µjB¼½½víÙ+þ]oóÝšb<œ••Õº {tí:9f¢¸#CF|péò±½¿_=BHHpcñDëíN©N Â•D†Q(• F.½T T*Fay¿‹æÏ­j_Õp‹‡‡û­Û· !úC©££!„å8Bˆxì!+++%õÞÁBx[¶j'¾ (ªc‡¨…‹A·Ü¾s'777$8X1|ËÍâgÍáyž¦ióK½Ñ×ßÌ]° oŸÞ’¨UªfMš$ž:-F„?%¶jwçî]S#Šß6 1Qròú³„‡ii¹¹¹íÚFê·DEF.Xœ ÿV²bzÞ^ÞjµzÎüúFøùLñ#„¤¤¦šïÖãáìÔ>*++ÛTcñ…µõ?îûœ¼áÜ23³!UK•££caa¡x ©Šé98T]»bÙÊ5ë>4™eÙ&¡!Çó©Uë¥Ýšb<\vN6!ÄÉ©ä󽓓“©ÍÝ€7„AD+”J¥Üä*‚’‘—!"”IVvöÈÇvìÐ~v¶¶„ŸÏŸ?~ò'Ã^Õª=•ee¥Öb]\œ !sfÄ»»¹ö©R©,ºfêZ­V¼A²“·[…QuöÜùÛwïúÖ©ãS«–xLJå#š™¼H<ôfçä”4ËÎV*•’GR€¿ÿ×_-(..N¾|eùÊU£ÆŽ?|`¿åÝæææšïßÙɉ’™™e¸#¦¿þîÀ› d)^Á0 ÃÐ&0 S¦kÊ$%5µX«Ð7ZÌ„¤äK† ô—Ä ‚pà‡êßòôð°·³{–ÿ¬QÃâ×õ›7;f*ë”ÂÈBˆ««‹©NªT©Ò$$ä§S§ŽŸ8Ù±CûWÑÌäõ»`gk{äE3BÈá£Güý,¬Þµë×#;tÒh4J¥²Y“Ð~ѽ=~\XXh¦[š–Brrž_êaæêN‘‡»»½½ýÁC‡ô[9jªñkî¼!JŽjJ¥Jxqîߘ ðJ¥EŸËE“’,_Oö©YS­VÏš;¯wÏÇŸ=wî·‹I„¤ädñ¦Dñàøè±«ü±nåŠÂ¢ç×0 3|ØÐy =y’àïwíúµ6N›ü¹…C‹ý5š3D†·™5w˲íÛµ-눒“/Õ†a˜!ƒ&,YJËdoÕ8ñSâŤdËŸæäíå­Õjcb§víÜ9_£Y»~}ƒÀ@q]ÄT·µjÖÉdsæ-èÝçò•+×oÜ0?Ã0ƒú÷KX²T.“5jtüdâ½û÷Í4~…Ý×fNŸ9ëíídá¾À¿§$"8;¹=JOóp­füi˜eÙGéiÎNn–÷;yZœñFS÷³ÙÛÛ',œŸðÍÒØ¸øªöö]:uܱusÿÁCO&žêÒ©#EQK/žùåÜí;vz¸»Ï5#¨QCñfQÿè>,Ë~·sצ­ÛªyzÆNŠéÚ¥³…ó¬^Ý›rêÌ™÷‡ 6ÕÉ;o·ŽŸ='¸q‹³sYG”œ¼q³Áú³,»{ï¾mßí¨îí=oö¬àÆî‚••zñ‚ù b㦫ժ&!!ÆŽ1ß­«‹K\ì”e+WÅÆMoѬYÜÔØCß7?Êàý‹ŠŠvïÛ¿wÿ÷¡¡!sgÍ2â3˺;ÁAA³çÍ·¶²:uü(€ŠFmÛ¹­OÏ>„–Õ=Éx”û4G³@I#в·­êêìnêbFøÏؾk{Û6mK ärÆÓÝÛÓÝ»¢' $ "€D€ˆ@"H@D ˆ $ "€D€ˆ@"H@D å~>¾AHã¯Ñã'¼roOÒÓ-ÜnÏó;víî;hHÓVo‡…G 6üèñ¯Óáÿ2±b™YY„žç絨UxdÓVo¿r‡÷î?X¾juAAaEïBˆ\ÿJS¨ù5ùì­”<Ï•jDÓ²Ú5ꆵ´V[[Øïìø8{{{Ã-U*zgɧ“&Ÿ»p!ºw¯÷‡ ÎÏÏÿéÔ鉟O~òdì€~}+zj•Ûïþ¹yÛö‡¿X?à•;¹ÿàþŠÕkÞëÑÝÊJ]Ñ;!éò…¢¢¢ ¿¦2™¬T#ŽãÒsÒ’._hÕ,ÜÂ~ƒ7vuq©è½û‡ƒ?J<}zÓúµ~~â–.:Θ=gñ’¥ïvî\ѳ«Üòóó !ïõèîäèXÑs€òQr¢áÁ£Ôjn5<<<ÝÝ=J}yxxVs«ñàQêk¦_Ìÿ£‘¡-[õèÓ7ùÒeñ­b­6aÉÒŽ]»‡¶kÙnô¸ñ×oÞÔÿà»)ƒ‡iÖáÝn»÷í3îyçî=»÷m֫߀ÄÓg$G߸ysçíõù@4xà€Ðà[·o‹ß¦¥=:âÃÐaÝ{G_LNÖ7[ÿí¦¨.ï7oÙ­WŸÃGîΟý5xøˆ¾ƒ†”:Ua¸ýæÍ‘cÆ……G´l1jìøÔ{÷$ghfÉ¢23„ùnKÍÖÌp‚ ¬X½&¼}ÇЖ­FŽ÷øÉý#ÇŒ#„„GuhÒä•wG²¨(%A&“«UV …BnD¡P¨UV2™Üò~‹ŠŠ ¿X–ßúlrl³&M¾˜ò¹¦@óÙ”Xqã’å+¶lÛþnçNsgÏ;jäýG¯ïí³É“ëûûÏŒ›æ[·nü¬9§Îü#lß¹ëË #ÃÃgN«SÛgüÄÏÎü|®Ô|ž¤§ß¸y+¢M›RÛ½ªU[þuBP£†â·“§}Ñ¢y³iS&ÄL™*nÜ´u[Â’¥ï¼3kú¾uëÄL‰½ðë¯ú¦ÏœÝ 0p̨L•B£Ñ|0êã¢Â)11Sb>ËÈÈø$f’q3ó£HÍ’!ÌwkŠäp7oY¾juøÛoÏøbªµµÕ¼…‹ôíGô!!äË™3–}½ø•wǸ¨@%G}Ã(*¹œ‘l§T¨ ci¯„téñ^©-cGôõ­K kÑ|ØàA„Žã§NÏÍ͵··/.*÷ñè¾}z‹íííÆOŒÉÎοíЮݧãÇBÚFD 6|õºõ.¾Å²ìòU«G}0bèàA„¶áZ­nÅê5a-šŽž–öˆâáán~Ú=ºuç&BlÜôÜÜ\kkë5ë7ôíÝKœ@»ÈÈ̬¬UkÖ5 ¤Û»]¢{÷"„ü|þ¼dŸ7oÝÊÉÉY»b™O­Z„oo¯]{öêt:Æ ž:Îü(’E{é„óÝšb<œ••Õº {tí:9f¢ø‹2âƒK—¯ˆíýýêBB‚‹'^mwJu«$"0ŒB©T0r饥RÁ0 Ëû]4nUûª†[<<ÜÅõ|ýÁÛÑÑÂr!D<ð‚•••’zïà‡ !¼À‹-ÛGµ_PÕ±CÔÂE ‚ ˆ[nß¹“››¬¿¾e‹fñ³æð"”ïîÀ›àA¡PšZEP(”eŠþþÆ—+Š¡Ô¢‹ÉÉkÖo¸rõª]êÕ­­¬ ßut(¹ÂÙɹX«Õh4â·yyO !ý‡ -ÕaAAþ[77WBȃ¼½ª•j¹0áëÚ>µÄO®ÆsËÌÌ"„8T-‰;ŽŽŽ………âz„kë—ÜåáàPuíŠe+׬ûtÒd–e›„†L?Nü¸où(’E{é/íÖãá²s² !NN%ŸïœœLýøkî¼ "‚\¡T*å&W”Œ¼ ¡L²²³G~<¶c‡ösgÍ´³µ%„ü|þüñ“?6ðªöüО••ee¥Öþ]\œ !sfÄ»»¹ö©R© ¿õpw¯Q½ú‘ãÇ›7kj¸=õÞ½o7o;j¤©Åmñ ˜“S2ìl¥Ri˜?$åææê_øûýÕ‚âââäËW–¯\5jìøÃö—Ë(懰¼[ÃÙJrvr"„dffþ"L5~ýÝ€ W²¯`†ah†)Óµe’’šZ¬Õè-æBHRò%ÃúëáA8ðà õoyzxØÛÙ=ËÖ¨añëúÍ›GŽ3Î:úFðÃ+Aøzé2š¦#ÂMÞÌééáagk{äÅ!‡ ð÷3nIÓ2BHNÎóë'ô]»~=²C'F£T*›5 íÝûÑãÇ………¯6Š$SC˜éÖÔlMñpw···?xè~Ë¡#G_¿hðÆ*9Ž*•*áŹc‚À+•*‹º$„r1)ÉòÅdŸš5Õjõ¬¹óz÷ìÁqüÙsç~»˜DIJN¶±±¡(J<äø>zìê¬[¹¢°èù!–a˜áÆÎ[¸èÉ“ô¿k×o¬Ý°qÚäÏGéÑ­kâ™3c&|Ò.2¢QÃMAâ©ÓW~ÿ}İ¡Þ^Õî?¸/97†a† ˜°d)-“½U?àÄO‰“’W/[jܲVÍ2™lμý¢û\¾råúâvo/o­V;µkçÎùÍÚõëªÕêWE’™!Lukj¶¦0 3¨¿„%Kå2Yã FÇO&Þ»ßLãWØñ§Ïœõöö  ²pßà_RœÜ¥§y¸V3þüͲì£ô4g'7Ëû<-Îx£©›ÙìííÎOøfil\|U{û.:îØº¹ÿà¡'OuéÔ‘¢¨¥‹Ïürîö;=ÜÝçΚÔ¨¡áíý£û°,ûÝÎ]›¶n«æé;)¦k‰G!Q•°`þŽ]»÷!ÄÊJ½xÁü… ±qÓÕjU“ cǼò(’Ì aª[S³5_‡¢¢¢ÝûöïÝÿ}hhÈÜY3‡Œøà5‹f(0 8(hö¼ùÖVV§Ž%P¡¨m;·õéÙ‡²º'rŸæèo(iDQö¶U]ÝM]ÌÿÛwmoÛ¦mÉ‚\Îxº{{º{WôÄ âáA€D€ˆ@"H@D ˆ $ "€D€ˆ@"H@D ˆ $ "€D€ˆ@"H@D ˆ $ "€D€ˆ@"H@D ˆ $ "€D€ˆ@"H@D ˆ $ "€D€ˆ@"H@D ˆ $ "€D€ˆ@"H@D ˆ $ "€D€ˆ@"H@D ˆ $ "€9!dû®í= x³PYYY=xãàDH@D ˆ $È+zð*xž¿ÿð~FVFqqqEÏå ¢T*½ªyÑTéÏÀ¨˜$3à •RêýT†a|ëøÊåø°W‚eÙk7¯±:¶ºWõRo¡b’ÌT e¨”Ò3ÒÛ´n#>¢iÚ·¶ï¹_ο…ŠI2S1D€J‰åXš¦µZmEOäÍÂqES’o¡b’ÌT  ¡¢§ðf¡(Ê|T¬3CD¨”(Š< &J‚Š™d¢$ˆ•ÕÿÛoWâ_+ö%±ªç[ÿÏ¿¿yûZíZ¾’k Óâgüz1é½î݆ 蟯ќ>{ö‹3ÓÓGôêÙ£|w’»\ªÔeª"@¥DJüäZŽ}³Ó7œ)fÉ„Ÿ.Ú«ÿ|) Ç-GžiŠ”. F btàI<}úÛ-[c>™Ð¥SGqnEuïúî‚Å sæÍ¯Y£zuooýOéÖ[¶·ië¶OÇíÕŽã¸×ß S5±°b)©·J…½úMþÝ5ko}ìà  (žã„KJ™¬žLvmzS¥xi02õ."@¥Tî«i™Ï&­Jô«íê«dd„6ã6ëß¿è{BˆLFE†Ô™4 Mf^>1:´¬ÿvSë°°Ží£J=žh쨑IÉ—¶lÿîó‰Ÿê7Г߽oÿêuënj٥cG–eËeGL•ÅŠefgD¼¥Ñäß]·îÆÔiªTaáXV<Á‹)ƒçŠò!äf\<Çñ5?ñVý{öí¬W7 ToßíÚÕ6²V:]ÉÕ }z½÷èñ“;wïÖ«[wæ͉gÎdee«Õªz¾¾Ã‡ ö©Uë׋c¦LݱeÓœy þºö·‡»Ç¸G½UÿyþØààŽÝ{2³²ªyzôŽÖ/Ï|ÿÃ;víÉÈÌôöª6dÀ€æÍšŠkyyDl€ˆP)•oDH¾ñxæ¦sQaüj¹Ý|”ß †ÝÒI½ä4‘Ë(…Œ(™RN«•Œ•’¢HV^Çñ4MŽþ$==õÞý‘#FHéÛEFìܳWÿ¡Vü÷à¡CK–¯1lh®ï–W>(—ŠQaYÝïã&4vrb(ŠcYqÂÏ3Çñ!ä£1ãJRXXD,Œ¸£à?ƒ¢Ê玆/6ßzâïíß'v‰hæíh•’®Ñë”2¢b(C±4aiÂÒKŽ&Ï[É;kõ²Ý¿´jàe8º³³SêÞGŽoRjŽãŽ?Ñ44Äð”|ÓÐñü¤‰ŸŒ7aÃæ-à ,—Ê‚`ê銖TŒeYžç9–_>šXôk Ïwe9–5>ÑàâììíåuêÌÙ F ·?xøpמ½=º¾›°tYÛððøiS«ØØ‚ð˯¿:sVßI©Ù ‚àXÕ’““ëêâ"nL{ôèéÓgŽ„i“?wuu1(''‡X¤*†G'TJ”‰'½‚è6õÆõh´çð™GYõªU‘ÑTx·Ö®-ü]›Ôsi\Ç¥‹ çÚ^NEìÕÛ¿Ü|Z­ujêcØ Ïóƒô?{îüþƒ?”Ú¾låêÇOžôëÓ[¿‘ÂqœøºŽOïž=vîÞsíúõòڣש˜V«ãyžåXŠ¢ u:Ž-cÅkxBˆ–Š¢8ŽÕ±¬N«+ÕÏóïuïv䨱_~»h¸qý·›hš®U³¦V«íÙ½+#—]ºr…ƒõ%ûóü[77WÛ*UN9£gaÂ×»öîsuq±³µÍÍÍ­[»¶øuíÚõ£ÇOÈd²ôSÆŠa ²2óŸ{Y…øº-üèíØµg³sk´hT‡Èįv•jCQ¤j•‡c•n-ë4 ð0>…Ý¢Y³ýú.]±ò×ß.†µhnggû$=ãø‰“wSSc'}æéá!V…Þ¬ÏqÜÀþý~>aþ¢„¥ ‹ óï•Å’ŠétZNGQ”Ïœ™)Ógz+Mü¸–û*•Ǥ‰-+Ö¯"B¢ÚFž»ðË´ø­ÃZÖ÷÷/(,<ÿË/_»>°_ߦMBU*Õ¢¯—tlÅóüoIIWÿƒrå÷?ll¬ !úG\ëÿ¥(ªßèå«V „ø×«—|éÒþµ`Îlš¦ôë»lÕê'éuëøÜºswÇ®ÝÆ|üâ_ò¨lSeAD¨”Êý¹žN6KÇEÌÜtáÀɼná !?Ì1ùø?ÉqY–دï[;÷ìY³~CAa¡mPÃF“c&z¸»ë‹T*"ˆ&}úÉèñÖ»iÄÐ![1G§ß’~iÔ È5:šãø{3gy)Œš‰ùÀyâx§žÝÕjõO‰'||jwβlü´Ø?:täèù ¿ŠªY£ÆäÏ&¶y»5˲³ããV®Y»pq‚­m»ˆÈ±£F~8fìù ¿D„·1,‘`°¦Ð­KgŽãö}àà‡ªyzÆÅN¬Àq\×ÎX–Ý÷ý=û÷{¸»OûqÛðð_/&‘׈’TVVÖ¿ôˀϟÿé[Ç×ð<å‚„õ‡þ¸p=ãQFî¾ø.â'WBEQ4M[òÇŠd2Ã0bcA8ŽÓét†W!Èd2•JUPP`xÜ¢iZ­VëtºR]zJ¥òêW¾ÕðÕ*&Â_ÿÎ |ãFÁOŸæ=ÚºíÑì/½Šž§qÆ:Bî©TŽãÇ8õémme}æìi¥BÕºÕ;¦êÃ0Œ\.×ß¡ÓéÄë0d2™B¡·³,«ÓéT*Ïó,Ë–¨TÅô½v¥ßNÓ4ÏóâvÉR[^1¬"TV†W̽~WÏO´s\·¦ž®¶²µGžfffŠïŠÇ{Ù r¹\<™êÊüaX²ÏóÏž=+¯}yÍŠÕó ¸úÇåsç qêÕ“ã¹;ÓgŠA‰"BÓ´ãØQ½z(•ÊŸOª”ê°–­Í|X/.....¶¤F|a¸½T3S½oéïÂ|Å*¥r<Ñ ~~Õÿ˲¬¿‡jlGŸœœžçiš–ËåâÚ€Ä …âùÕpoSe)SÅ\ºœtæìé&¡M{v¯Ò¥“ üão9Êdr9£øé§“J¥ºu«w!åxÒç ©"@¥T^ÏE „PÿD¡iÚËÙJÿ§˜hš× ômd2MÓoæAÑä e©˲>µê\¾štêLb³¦Í•JÏó¼À ¼ <Çq,Ëž8~B.gBƒ›°,[^ux£*V‰w àYy=AìJ¡P0 £T*Å«ôAO.Ð4-¾yƒ?4›Z6·¼b………………®Î7n]Û¶m«x³¢øàe8žxÁÙÉ9 Q`^^žV«U«ÕVVV½ëå\1D€J©#‚žxìééƒ76˜ŸžåS«ÕŠ6Òétâ)ñP*žyaF UjµZ­V›yÊò›«ÿ-å÷gœþcL^X–ŠÑ4mmmmmmmá •úU€ÿDIfj‚ŠIÂ*À MÓú¿ãWÑsyƒP¥cu ÆøYG¨˜43CD¨”ìíì3³3«ÚU5õ|‚×ôÒãh¹h ;)¯K/Ÿæ?uqq1~ “d¦bˆ•’»›» Óë®÷ ŒŸh¸Å’g)–µKú¤Ä?;H¼6xïͤ:³·³÷p÷0~d*VÖŠáÌ••B¡Ð?Ö·\ü«+ðÿoËûÇ™zŠ3*&ÉTÅ@¿r>*;D€ˆ@"Hø?l˜$ù`ŸÅ×%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/BookTitles.png0000644000000000000000000000013213135434036017513 xustar0030 mtime=1500919838.089981805 30 atime=1500919916.333315139 30 ctime=1500919913.326648472 denemo-2.2.0/docs/images/BookTitles.png0000644000175000017500000013653213135434036021376 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRºÔÍ ÐgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>€IDATxÚìÝux×Âð3»I6îJÜ•,¸»(”b-P @/V(PŠ·8-Z\‹»oqK!„¸»»'kóý1í|ÛM6“„÷wûÜ'ÌŽœ9;»óîÌ9g¨œì, ¯± MÒs¿—õ¸:@`d`diaÉ£x)ý$¢0$¥¤ TÜØ»Y?tÔ•ÜÍ5º;kóy”T*MJIÊÊɪ¨¨hìr5(Ù·¸Ñ+¡I{Ô`5ÓØe&¡9~@šà¼æE¢¤Ri=nX,‡G…‹EbkKë‡aùÊÊʼÌT”ùXõH(’Ü H‹E½\u’”•••””»\ Jö-nôJhR…Á5XÍ4vY IhŽ&ø¯y‘”ê7×ðxŸ¾„&„±DÌãñ„Ba#¾ÍBö-nôJhR…Á}P²5@šç¤ ~Àk^¤zŽ %ÿy¦i:2*ZOW‡¦iSSfb3úÛØÈ(7//,,¼¥‡{å½k´7¹‘Tù£0Ø£­rÍæöi‚𚩞ã!„ü»>Š¢hš¦iÚ¼…™Ž¶v£WJQ¥§«KÓ4ýïî±{ר¥k •Þb{ÔP £¹~@šà¼fEªÿ¸@Ñ“V(B˜ ëêè&¡Þk§(Ê»][š¦iêÿ¿²šÊ;Ýðµñï[Ü*¡I{ôAÉÖ iž&ø¯a‘>ÀÕBEˆLN swsmì y_b±XYY™üûeÕ„‚a£øï[ŒÂ`Òü«@šà¼Eªÿ¸À^°§(BÓ„¦é¼üü¦R#ïÁÇïU×ÎØšlZïtÃ’y‹¿šTa°G”ÌÍ@€æúi‚ðIÉÇÏï‡bÿ­¬¬lޢŠýÇŒÉö¼ô}õJvÖìog|9ftÛ&4!„GMhš¦Ý\]ä6ß½oEå~ò÷½F¬µ””Ô{÷ï9f´šššÜK|>Ÿfâ¡ !¡HUwX˜ºÒÐи~ñ¼²²²ÜÊÇ}=™rõü9}}½FÜÍ:W«úJ •Ž%%¥ffC übôç<^-†Ùù…!„èëë·kÓzöŒÕ¼Ršþ}ßþ»÷þŠD÷n\ÏZeÊpéÌi##CΙ9÷ˆ"•J¯ß¼yëνø„ee%k+«1£FõêѽÎ%”«êZ¸Á /«æye%%sss¹óZ­ÔïÇ¡&'‘>½z®úiYåéu8}Ô×·¨sÇbõòe:::„ÒÒ²7‡Ž  ýeõÊÞ•ÿÎò´°[ï?Áäÿs ¡iºr;Çm[61„GDî?txíÊåZZZìÞÿͨ³äÔ”£œ>dˆªªªÜKÞíÚJ¥RŠâ¸ºÀÔUIIÉ ßî]»È¾tÿÑ#ÙŠjÄݬs%*Þ⪣(S«~Z¦««CVß¼}»ïÐa‘X4qܸÆ-ŒTJ'%%;y*;gö͛m:44ìÂ¥ËßLþÚÝÍõýß/Ù[ƒÕÌVÃ="„¬\û³ßkÿ1£FN™4±¸¤äɳg«~þ%3sÆ£?¯[ åªÚÕÙyÛ–Mºº:MäX•­R›|iiÙ›·o9*{^«í¶˜?ÞóãP“8³­ûõíÝ«sÇŽï_†úúýçfDK#ÃBSn]»tî´pÉ÷îßï×»7[8Ùyþ³™JÛþwíD*•Ò4îæê";OÛÖ­™?$ !ÄÓ£%—êw”É:«¼_b±XII‰°7#Åì]• :9:Þø°[—β/=xôÈÉÑ12*ª‰\€ªC%ÈMWT ì<žlïÒ¹¡¨‹—¯NøòËF/Œw»¶***[¶m/++«ò#D))-!„ 2XOOïýK¦ 5yëk²G÷þ¾ÿü¥ÏÁ½¿;98H¥RŠ¢öï·å·mû8 ¿–¦æûUKK«mëÖŠ Ð(šNI )¨ÕG¾G·®]:u”=¯ÕJÍ?¿5\á:‰ØÙÚþ¶c—§‡‡††F}•á=¿Eÿ¹,,•J%ÿ‰Dm[·îÜ©ãÍ[wdK&;ƒYo•hšm» ‹]-¥åÖüç­Û}-..fgžúí¬ÏÇMèÙ`l\Üwó¿ï7dØ„ÉSïþý·ì ¯Ý¸1aòÔþC‡O›5ûù‹—ÌÄ蘘ÅË–5zè¨Ï—ü´<))¹úùišf®_ûeÏþåÊìûê5“Á¤ÿìUõŽÓ„Ò¯w¯>¾%¥¥ìôø„„ظø~½{±ï÷™sçÇNüªßà¡_O›qÿá#š¦W¬Y;mÖlv©T:zü„­Û¶WY`ßW¯zö˜”œí;xhLll>à̶ÍŸWTT´çÀA¹éu(@}}‹òh™ÀÂ’H$íÛ¶ ‹ˆ`!¤¼¼¼´´Œý¯B(¬þÃLQ„YÚÍÅ¥ú"Ò2ÛïÚ©“D"ñû÷T—œ’×·WOBÈ⟖{¸¹®øq©ƒ½Ý†Í[ß¼eæ¹rýÏ]{öõîÕsÅKííìW¬YëãçWRR²hé²ŠŠŠE æ/š??'7wÕ/¿T3?óÒŒo¦BÖ¬XþÛæråüÿ¶ 4בJHÇxõôÙsvâý‡lm¬m¬­™ý½péò#G{öè¾bÙŽ?oØøúÍ›^=zDÇÄfdd2‹„†‡ggç ìß¿Ê37™V¬ù¹kçNK-¬¨®\ûóª_~Яß?,‰Dë·l­f™Å×®ßàݾݒ… ËÊÊ~^¿‘³*½Å +¡Êã*95UUU ;~é굡ƒ­]¹|ÖôéiiéK–¯¤iš)ÕÖm;Zº»Ïœ>­~ S^V^ZZZZZZRR}öÂÅ>½z Eǃܦ+—­¶!dݦÍ:x/Yø}yyùÏê¸G™YY1±±=ºv•Ëë&ÆÆ[7®oÕ²%MW}€±{Q“÷ú·B•‹°¯2ËÊþ³úMW^¤šST3¤öß?‰¤}»ÎkŠŽFæ*Ï5ìÌU~ð[·j5xà€í»w …Â’ÒÒ]{÷M÷¥­mݾ²!FF†3¦}sóööLGÿ{º¬mêë[T‰Vp}Ã@_¿¢¢¢¸¸XSS“yiÒÔi²3téÔqíÊ•ßBZæ²³Zmm-Eu&/Én]GGÛÍÕÕÇϯG·®„'Ïžëhk{µjuîâ¥î]»ÎþvMÓ=ºuýnþ‚“gÎzµò‹ÅÇOžœ6eò¸/Æ0/‰D¢ã'OÏš1-¿ `çü¹V––„ sók7nˆD"BH•ó{·kGq´·'„´tw×ÓÓ•»þܾm›ÿÔ-¥à^ ¡ !**Ê]»t¾ÿèQ¿>ÿ\õzøøÉÀþý¤´”"ŠN;?fÔÈÙ3¦Ó4ݳ{·Ü¼Ü§Ïnüe­²²ò ŸÏ† %„<}öÜÄØØÙÉñ§Õ«+xÊW !_Ž=h@š¦ÅbñúÍ[~š½¸ß>ì? ÕÕÕªÜ_fñÎ;ŽûóAZ·is~A޶v5• ÷+ª¶ÊËËKKK !B‘((8äôÙs=»wgþ9ûÛé#‡g.¤kkk-[¹://YjØÁ#‡“J¥R©´ 3é›ÿÀ-ÌÌÍŸ'‰r›–+›P(¬ÕÇ,>|è¦Âišþeã&¦Âk»GéÌ·‰ÜK4M3£·ŠÅâ*°6^^L1jò¾ÿÿgSÁ"²Ÿ\vf‘HTý¦+/WeUn’†ÄÿÁõ‘¯üª¡~EEEqI‰¢£‘ù£ò¹æË/F“pEß³fLŸ4å›ÓçÎkjhL÷eݾ²˜2H¥Ò‘Ÿ ¿ÿðÑÖ;ïÝ#˜éu(@}}‹*Œ •mX¿vµ®Ž.;#m˜½Òáæâ\åÛMÓDnë4MwéÔñ셋̉äÙóÝ»uåñ(BHŸž=™ó=!¤Ÿ>ÌUšø„„‚‚ÂV-= ‹˜—:´o·eÛöffªªª¿íÜõùˆ­ZzØÙÚ0ç†˜ØØ*ç—H$<O"•B$R Ó¨BÓv=ž5 a÷¨wÏ+ÖüœŸŸ¯££“œ’Ò³{·ä”TBHjzZAAAÏîÝÙÝéÝ£Çî}ûU”•½Ûµ{îã3|èBÈÓç/úõ駨À„Of%::Ú„OwÙŠ%bEõÃ,îÝ®-3¿¶¶!D"‘Ð4]M%Tz‹¶‹a¦}õÍtÙ‰íÛ¶ýîÛ4M/˜ó?æÜ–———”œrûî_„0·®!ÄËÓ“­™z,Œìœ”’¼gÿÁm;wül¸¢ú‘Û´\Ùj{à1‹³®¥¥ÉVx­÷ˆ¦ ÛU§*©iU`ìÊjò¾Ë|6«^„È~Ûþ;3ç¦+/bin® ÆÖ ©ÁG^Ñ«T¥äŽöªÎ5ÿÌPÍ7ªšªêÜïf¯ß¼…¦é]Û~% ŽXÎ8»-‰X¼tÑ÷SgÌ<|ìø¬Ó™éññµ.@}}‹*±sËÍ‘™•%ÔÕÕÙéövv†²PX4û–Ð4M(üœWV:wìpàð‘Ð0cc£ðÈÈo¦|-‰ !²W)ôôôÊËË‹‹‹‹Š‹ !³æÎ—[±Š²òÎß¶?qríú ‰¤µW«™Ó¦ÙX[)š¿´´TCCƒ(O„Wþo:z·gßKöÚ‰¢=jצššÚ£§O‡òèÉg''S“ääBHnn!DKëÿó–®®³;=ºuÝüÛ¶âââôŒŒÔ´´¾½{eçäTYಲrBÅû§«Ó „âñdÿIÓ´¢ýeg3;?MÓÕTB¥·XqÓýÿFLŠ¢LLŒ ôõ™ÓÀkÿ7§ÏŸ ÓÖÒ¶´°ÐÐPÿwµ4!D PùÿuÖ_ad`g§‚ü‚ƒGõìÑCÑñ ¿éÿ–­¶³xÕ^Ë=244$„¤¦¦™™šÊ½´ÿð[kkæ‰'U`Õ£ªýe§Ë/Bªž¹šc[Ñúµµµ«®1Åï5©ÁG¾ªóZ¶ª@ ¦¦VýÑ^ù\SRRLªýFeÎ ];wÒÐP×ÕÑq´·¯ûW–LÙÌLM¿ž4ñȱã=ºuc¦Õºõô-ª0.ø¿y#׌i0ÂùÒ4ÍŽÅÜZuqvªþgÜÖ-ÌÍ-Ì[øøùéëëkkk·twxHÉÉÍ516fæÉÉÉaÒŒ¾>!då²MLŒeש¢¢bgc³nÍj±Xü.8øð±ã?­Z}òèaEó Ù+• Ìçñh™(Šª¦Ñ83½g·n?6xð£'OGøŒ½ ÄtÉÍËûÿÝÉͼÛS„øùû'&&9ØÛY˜›3«ª\༼¼ÊE­üOEûË,.· ²‹s[ÿÿW×rÞÎÖ–=CÓÿ>5/?ÿÇ•«ú÷é³vå -MMš¦}ý^=~ú¬šM×Kaä`ó-D"‘šª@Ññ ¨J™ÖöÀc^­¦Âk¾GÆFFV––Ÿ>kÓÚKvzrJÊÅËW¦M™ÌtDªòã,Fåý­rÙVW„‚ÂBæŸÕÛrëg‘J¥ÕÔX•5@jð‘¯ò¼æ&s^«|42Ó«<×j¿Q™3ȹ‹—x<~jZú­;wö裡T5ùÊ¢ÿ5vôç?ùuÇÎiS&B êV€÷ÿåÉUÃ? à…ïð!ƒÙ)•ç©Æ¿ïå?=#´µ´ÏJW^¯D"éÜ©“ß«g/^tïÒ…üûSæÑã§Ì R©ôhš616ÖÑÖÎÏÏwrp`þ ¸÷÷ýØøø/'}——'‘H<=<>9"3+«¬¬LÑü<& TUFÛ6­éš4u”YC¯ÝCBÃ>~’™•Õ£köUccm-­GOž² =|üØÙÉQ*•ª©ª¶mÓú¥ïÓç/úõé#‘H˜Ïçÿ§¨r%ÿ÷ŸuY\q%Tz‹·‹an¿UÕ&99E(Ž5BYI©¬¬¬¼¼< 0ðßc¶Ò¦ë¯0r+ajÀ@ß@áñ  Jµ=ðª_[­öH*•Ž5òî_ýÓ[ç߉Gÿ8ÁãñztëZÍV]1½TÕtf¬­üüfšï«Wìñ¦hÓÌCr+/Su)®Rûü›€·/||‡ LÓ´¢£QѹæŸM*þàóx¼ä””§ÏÌûnö„/Ǿ„¢lml–-þ¡wÏL-EX5Å«j™—ªXD_Ooñ÷ ÿcë¶íÛµ]üý÷ßÍ_ÀÌ£hÓŠQQVVôQ¨çG~óoÿ^kaf6}ꔑÇ1_õŠ`Bª:×¼òCªýF½öçˆÈ¨£ö1ëŸûÝì¥ËWôëÓÛÓã¶å¯üå ‘H&Mÿôù‹ä””: ¾¾E©´´4¹Qí¤R©X,fÛ…Bø|¾ªªjiiiM>Ãà]ð;/O¯½Ó'w1"aAaaåÞbœkžóý"wW—™Ó§BÞþ´zÍ©£GÌÌLù|¾T*‰Dlš!„(+++))ñx<Ù—ø|¾²²2¬$‰P(d·RåüLe ¦Í9Óåð¶mk/eÁŽ¿Ò4 qvt–­¥*÷HEEEYYY(2sʾª¬¬¬¬¬ÌÜ+’+ƒºººD")//¯få6Tý?kµx5• ÷+ªÎc†Ï竨¨0½o˜ƒMUU•9ðä–úp…aê™yk?ÕTim¼š¬­æ{$»u¦iš®ü¡¨|€Õü}g_âñxU.¼‰Ì>ŠD"555Ùã­Êc[II©ÊEªù¨VY3€μì”Êçµ*Æ7o«<×p~£2kcn¢±(//¯Üàó®èËAMMÇã±§š ¾¾E•D"Q5ßGlEsÎ#;3óù[*ÕÒÔT4†®¢5§¤¦ÆÄÆÎœö ³ 3¢X"®rW !L3º»ÊùŠ6Ѻ•'3û2ÿ¬~£ååå²g}ÙW«)CQQgå6Tý?k»¸¢J`g–ý»Ê7·úc¦ò«%%%Ì•—úp…aë¹&ÇO•+©ùW“µÕ|ªÙz­ÊVÍûξÄ|™V9æA®2«)˜P(¬r‘~Ã4‘â¡é¨Û÷£Ê£Qѹ†óUnmïóW´,û%Y‡ÔË·èy€5³NŠ")Í£éðÈ('Çš¯áÚ›/}}ÍÌLÝ\]þ)wî†Ô/±D¢Äç³Eh:Ïmx2oqãWB“* öèƒBm€¬òùðçš&ø¯a‘>H\`þ ‘Ò4Uý¸ U¹rýOeåe‹»ŒÓ¸5ëÿ&À»][šæwá ó7~%4©Â`>(TÈúp>tù?P‘ê?.°×1˜qx4íìèX«­œ;qœ"{×§Mk¯wn1ÏjØjüÌZ*­É¸ ·ÿ¾Å\ Mª0Ø£ 7#@Ö‡ø€4À¹¦ ~ÀkX¤yuyÄ¡e‡x«‰ââb¹)5i`ñ¡µnåIÿ‹4¥wºáɶClôJhR…Á}P¨ õ!> p®i‚ðéC^]`.é:=#C*¥ÍLMØçP4/4M3;(Š¢ÿy~uuâøèýÿ¼&P Mª0Ø£ Wà?šç¤ ~ÀkX¤xuütuuãtuuÔTUCBÃJËÊ<Ü\ÕÔÔšËß¡aá|%¾šªªŠŠŠüÞ5wºá5©JhR…Á}P¨ Ó? Mð^Ã"Õs\ (J$©(«Bø(Ùš ÍóÒ?à5/Òÿ?Àºú5Öp6Š¢ ‹ !v&êO¢‹{:¨¨*‘: É¿ÏŠùƒHË”ê? ÿydì?ifAšYƒlŽš>åŽ&´O¢¨!DWG7;7[OG[¦^Ôð]xÿ•¿ÏzdßâÚV‚Üv«/FM¹÷)LMJXçcç¯í‚õ¾GµÝÓ:ïrõkxÿµÉÖ yïH•Çd­ÔžeÕã÷'ç¦ëpÖ®¾HJ©é©²‹Éþ!ûÿÿY;¡þ"õÏÿXº:º-ÌZˆD¢ž®ziú|@aI÷s,e6òϺ)ŠP„Pÿü¡°ÙÅ–áß•PÔÿOüg%Š—ýwêÿÿþwEÔë„á`ªÑÃEW"™™šÑ4ž™.;Ž^ÍÉ­–ª¼ÿï½8çzþyÛ(™¿ÿ¿NågžÅ5©ÙòTY¤Ê›üÞÉdÔÿO©Caª©ÆÖ[õ‹(Z–ª\îÿ~€ê\½5ßÁjÊ_Ûõ(ZI]®£ŽÔàÀ«[mÀG¦¶š`IUvõK)úŒ¿ç¼Ê“r•ópžµå¿Eeæ©a‘¨²²²jê·¿ dÇzSQQa©­ƒz¹DS¿×yêqï>P ?Ü:ß§j^žÚ–¼¾Þ‘÷¬±z¬ðqŒÕ{!lÍŠj€ÔõR_—ië¦nð÷Zó"Q999ï¹óðq«ÿ{¢ð‘A\ˆ Àq8 .î”z ÔØ…€Zxx÷vý®°F.¾òmì€ñòîXïëÄÍàP§Ç9@Æ6$¨¯»¸º€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€ƒRc FÒÓÓƒ‚‚$Ic€EQíÚµkì‚Ô§æ=z4oÞ<###>Ÿ¯hš¦)Šjì’@-||_Ý4M999ݽ{·±ËRŸšG\ iº]»vgΜÑÒÒjì²ÔŠ¢hšnìR| …„úõ¼éÁ.@³&‰Î;wòäÉÆ.H=kqAQÔÇB›Å¾4‹BBýúÞô` ùúÈNU,4uˆ À¡9ÝŒedd”““ÓØ¥ äcl«µ¢¯¯ŸÝØ¥ø°šk\ i:##ÃÐа± RÿÐP  ÉÍÍurrjìR|pÍ5.·9 AC-€æãùÆFÛà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\Í5.PÕØEøT4׸@ÓtcàSÑ\ã4Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .‡æ(Šjì"|*šk\ iº±‹ð©h®q âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€Cs E5v>Í5.Ð4ÝØEøT4׸ q8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ À¡¹ÆŠ¢»ŸŠæhšnì"|*šk\€ƒ¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .ÄàÐ\ãEQ]€OEs 4M7v>Í5.@ƒA\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà ÔØø¨TTT¼{÷îáÇaaaEEEZZZ½{÷vuuUUU}Ï•DFF&$$äÈèÛ·ïÈ‘#544>è~¥¥¥………¥§§çææfggçääðx¼!C†ôïß¿á*â@ý iúÁƒ[¶lyòäIEE…±±±……EyyùåË——/_>xðàÅ‹·k×îÊ•+ëׯ5jÔ‚ j{Ž÷ññY»víË—/Ù-êééy{{«««è½cö¢  €¦ifJ×®]‡ ÖàÕ 7#êX,Þ»wïôéÓŸ>}:jÔ(__ߤ¤$??¿wïÞ/Z´È××wòäÉãÆ[µjUll¬™™Y® 0àÉ“')))Ë–-344$„¸¸¸888Põ¡wð»ï¾KKK ˜8q"3ÅÞÞÞÅÅ¥ÁkGs½ºÐß5wöìÙÝ»w§¦¦þôÓOÿûßÿôôôØ—,--W¯^mnn¾eË– .BZ¶libbR· ñù|333[[[MMͬ¬,WWW‡†ÙGUUU{{{+++Bˆ†††ƒƒƒ¹¹yÃl]s½ºÀ^ht111—.] ûì³ÏFŒ!›|>Ò¤IÆ cš/XYYÕ9.B¤RibbbZZšŠŠŠ““sþn©©©III„{{{WW×Ê©],9rÄËËËÛÛ{Ïž=øœ|4šk\h:ž\v¶ÄÄÄØØX±XlmmmooÏãýçç„¢¸‘‘SZZÍŒ ¡­­]XXø÷ßSeee%ÛÕ3**êÚµk~~~êêêC† éׯŸ®®.!$))éöíÛúúú£G®\9iiiÿý÷Ó§O333µµµûõë7dÈ}}}æÕâââðð𬩫«>¼ÿþB¡ðÍ›7çÏŸOJJrss3fŒ‡‡Gc2ÍâÀûêÖ­Û­[·˜æ ‰äÎ;÷ïß÷ööž{'ÂÅÅÅÊÊêøñã7ndÎâ„ .Ìš5ëÇd7ÊxýúõÏ?ÿìëë+•J™Þ ÞÞÞrm$KKK÷íÛ·qãF}}ýåË—ÏŸ?_öÕ’’’ÈÈÈääd'''öTMÓôùóç—-[VRRBþí²²téRBˆ±±ñ’%K,X@‹Å—/_^½zuXX³ì‰'œœœ¾üòËAƒùùù:tˆÔ•™™yüøñ]»v‰D¢Ö­[‹Åâ§OŸž>}zĈ7ndÚOÄÆÆþúë¯/^”H$L:wîœÉ ŒüüüÌÌLeeeMMMÙÞ………ÉÉÉÅÅÅàÍ›7©©©[¶la²MÓ¥¥¥Ì;ÕíC>ˆ õƒ¢(ggçM›6½|ùrÇŽ^^^rçã .œ_îÕÈÈÈŠŠ [[[¹&äß<!ìíímmme_USS;vì $;½¨¨èøñãS¦L‹Åß}÷l±>|xêÔ)‰DÒ¾}û¡C‡ÊîÂãÇ ìíí½½½e‡JNN&„”––ÚØØ|óÍ7ìÈ………IIIeee:::æææ 9°ÀGq Ž˜kÝ/_¾¬¨¨naa1wîÜgÏž]ºt©ÿþ²¿õoݺåëëËü]RRòàÁƒ   Š¢:uê$ûÚÒÒróæÍ÷ïßÿûï¿§Nª¬¬LIOOŽŽ.**"„ :tذa²=/¢¢¢bcc !ÎÎΊž"IQ”“““£££ìK¡¡¡Ì¹ÖÑÑÑÉÉInA¶O„¢Á™›&Lžpss“K„kkkWWWv:MÓAAA³gÏþßÿþçààðË/¿xyy±3ÇÇÇ?zô())ÉÈȨuëÖì“)RSS9ræÌ===f¼mÙM$&&2o  Ô«W/ö¥”””   Bˆ¹¹¹§§g'¤l€:ŠŠŠÚµkW×®]+Y¤¡¡1|øðAƒݸqcݺuþþþ„ÄÄDöêBhhhtt´D"až¿ ÷€JSSS¦‹½´`gg7hÐ Ù“ºX, ŠŒŒäñxÎÎÎUvÔ,((ˆˆˆÈÈȰ´´tvv–ÝœH$ò÷÷ ¤(ªÊ¸NQ”ƒƒC•ƒ/ÉÞ‰`šYT£  àìÙ³¿þúkllìðáÃþùgwwwÙ"""^½zE177g # Ÿ?¾yóæ¿þúËÂÂbÞ¼y3fÌÛ…¸¸8¦uEÇŽÇ'{á!..ŽY¡¥¥¥l.€šC\¨£ÄÄÄìì슊 ±X¬heeå#Flذ!22²¸¸8??_(ª¨¨DEE1k²µµmÑ¢çæØ¸Ð«W¯Î;Ëž#""BCC…B¡³³³»»{•ã#EFFFEEBœœœäAHHˆ¿¿EE…•••³³³Üâ999QQQ999ÌÀPU6ŒˆŽŽ £(ªúÁišذaõk׌ŒŒV¬X1kÖ,¹A«˜ñ'˜‘¤uuu³²²~üñÇ»w†š™™ýðÃ_ýuå+©©©ÁÁÁb±ØÌ̬{÷î²×WŠ‹‹Ã¢££ÕÔÔ*ß…€B\¨#&.äææU3P#EQíÚµsrrbš.òù|æš|nnnaa!!ÄÄÄ„Æ@f$¢´´4 –-[Ê5E|÷îs~mÙ²¥¢÷l\pvv– R©ÔÇÇÇÇLJReJÙ;U>"77—Éæææ...r—Id7tûöíÕ«WöêÕë§Ÿ~êÖ­[ågP•••åää0ƒj?zôÈÏÏÏÙÙ¹GëÖ­ëÔ©“ŽŽN•­JLLdn7ØÛÛËõÆd/-ØØØtèСrà ¨ Ä€º i:)));;;22255µúg7èèè0'Q}}}}}}&.”—— …BBˆ††çxɱ±±4M·lÙÒÕÕUöœ' ƒ‚‚¢££ù|¾‡‡D"EQl›>‘H§««ëèè(nüüü®]»Æô˜`ãÓ¹‘)gLL “3؆ "‘¨¢¢BYY™¹ÃÞ‰°··gÃJnn®H$266fÎîb±øÚµk«V­*++Û´iÓäÉ“eóMÓ4MÓL²²2¦}Ç?~ü¦M›ÌÌ̪²%sAâÝ»w̳*Ú´i#ûj\\œŸŸ!ÄÖÖÖÛÛ›)ŒH$RQQ©ÜÆAШ‹ìììÌÌL¡PèëëÈœøIJJÊÌÌ$„´jÕŠ½NnhhÈôþ‰DUÞÎHNN–mèÀ܉ðôô”»-‰œœœÜÝÝP(ܱcÇܹs™ÜÌ}ëÖ­ÙÙÙ‰$,,,..NUUÕÅÅEn\‡ÄÄÄ””Bˆ«««££#MÓ—/_¾xñ¢……MRRR˜yLMMÙñ¡KKK=úâÅ æÖ†¥¥¥ EQ7oÞyòdÕªUžžž¯^½JKK›?¾Í¦M›!ÑÑÑÛ·oOHH°´´üþû)MÓÌøÜÜÜ7nøúúæääüôÓO=zô`ÖÌ:™––vïÞ½ÈÈÈ+W®888Ì™3‡Ùâëׯz÷î-‹}||******7oÞÌ,;jÔ¨Y³f±AŠé øúõë•+W¦¤¤tíÚU$=zôèĉÙÙÙ ,˜5kÓò€yf||¼žžž“““¡¡¡lå°ñ¨¸¸øÁƒ/_¾ŒˆˆX²dÉàÁƒûhnr¸x¶ó¦ÛéÓ§\XXÈN144ÌÊÊjìrÁ§kÑ¢E={öü믿¤RiYYÙ7Èœð˜Ç0×TUUûõëwíÚµ¢¢¢Ê+‘J¥~~~#FŒ¶AOOoÆŒAAAìl7nÔÕÕ¥(jåÊ•%%%r+y÷î;`‘ŽŽÎìÙ³™'EÉ’H$Çgà ŸÏïØ±ã•+W„BaJJÊÌ™3™ÒjhhL™2%44”]0//oÉ’%Ì8Q`èСϞ=cB²îܹÃ4!$„èêêΚ5+**ŠyI$mÞ¼¹M›6—.]ª¨¨xõêÕܹseÇÖÐИ4i’ìEEE'Ož”ºŠ¢©©9lذGÉ <<ü«¯¾"„xzz^¸pAn=¹¹¹ëÖ­cʯ¬¬Ü½{÷{÷îÉ•à=åääèëë³ÿ …'Nœèß¿#©Uûží¼™ÿ8Ïò5DåääTŸ'z øÊ·q3Í™3gNž=bĈ/¾øBUUµ± þ)ÊÎÎ~òäI@@çœúúú=zôhÓ¦Mc )B\¨‰DråÊ• 6¼}ûV*•B”””444*** =zôøñãß~ûmúôéÓ¦MËÎÎ>|øð;w<==…B!âB£ÈÍͽqãÆÑ£G9çtttÔÕÕE\¨â@MI$’;wþöÛoÉÉÉúúúãÆ7nœ»»»¶¶¶X,NJJºsçÎüñöíÛŸþÙ××·¼¼ÜÏÏRQQ! »ø G,———S¥¦¦Æã5r)CCÃQ£FÙÚÚ–––ÆÅŽxñ"))‰}U]]ÝÃãC‡zzz¦¦¦mÛ¶mäºhªjêüùó‡NNNnß¾ýÚµkûõëÇçó™—TTTìíí¿ûî»ñãÇïÝ»wïÞ½wïÞe¬¨¨‰D]ü†ó÷߯\¹ÒÙÙyýúõ–––[}}ý¡C‡:”¦i©TzîܹÿýïyyyÌ«ýû÷ß»w¯‰‰ Aj€j5מ ,55õÊ•+¡¡¡fffsçÎíÓ§›dééé-]ºtÙ²e¶¶¶ìD¡P(‹{NNNNzzzSkLQŸÏ×ÓÓ322b'jii™˜˜P…¬P=Ä€yøðaHHMÓ:ujÙ²¥²²²¢9y<Þ7ß|3uêTCCCfʧvu!;;;33³±KQ5Š¢Øû#L€@P¨ Ä€ NLL$„ØØØÈþ<­’ŠŠÊ¸qãºwïÎüó“j»ŸŸŸžž^QQÑØ€ú„¸ÀM,gff“ßY°··¸ðâÅ‹ëׯ—––6vA ž¡#%7uuuMMM%%%±X,‰¶nÝZTT4{öl++«êlÛ¶­£££P(äŒ ©©© R©ÔÂÂÂÂÂB]]½Î.((ˆÏÎÎÖÔÔ´··700¨Uƒ>©TZPPœœœ––&•J ­­­ «Y‰H$zôèѺuë?~\çbK¥Ò¢¢"f»"‘ÈÀÀÀÚÚÚØØ­â7çèèhbb’’’BÉÏÏß´iÓ7Fýù矻¸¸(ê(ѽ{÷£GJ$’j†HNN>}úô±cÇ¢¢¢$ 3ÑÞÞ~âĉ“&M²³³“›?!!!<<<'''///??????//ÏÁÁaÔ¨QNNN¡¡¡‡:þ|jj*3¿žžÞÀç̙ӡC‡êÏ»R©4""âäÉ“çÏŸ•í ©¢¢âááñÕW_5ÊÂÂBv©üüü«W¯îÛ·/((HöºÂ£G¦L™¢¦¦ÆNñôôœ8q¢««kåíÆÆÆž>}úÌ™3QQQÌp™ eee—‰'~ñÅÖÖÖôþâ@ÍôìÙóÖ­[L\`„„„„„„lذÁÉÉ©[·n½zõêÔ©S‹-dÇ1TSSsqqQ´Nš¦ÿüóÏ_~ùåõë×<¯eË–:tPRRzùòeppðêÕ«¯]»¶råÊ¡C‡Ê>¼êüùó6lÈÏÏgWB4hP=˜µ1CI²rssOŸ>íïï¿bÅŠ/¿ü²Êá"!iii»wïÞ¿NNމ‰É AƒœœœÄbqTTT```ZZš¿¿ÿ›7o.^¼¸råʾ}û² ûùùUn¯’’"[]„²²²!C†ÈÍ–™™yðàÁ;vdggôíÛ×ÕÕ•¦éèèè·oߦ¤¤¼{÷nÉ’%.\XµjUåÅ a .Ôˆ——×çŸ+;](ïÛ·OYYÙÕÕuРAŸ}ö™§§gõwhš>yòäúõëÃÃÃuuu.\8kÖ,}}}BHQQÑŽ;víÚ°hÑ¢âââ±cDz0ZµjõÕW_¥§§¿yó&::š]á­[·îÞ½2pàÀ¡C‡jhhøúúÞ¹s'>>ž±oß>Ù3=+''gûöí;wî …'N\µj•½½=ûjllìöíÛ?^TTôôéÓ={ö˜ššzxx0¯ššš®]»ö‡~ „\¿~}ëÖ­ÉÉÉ„Ï>ûlñâÅfffìzÔÔÔtuue·›——·ÿþõë×WTTŒ1býúõÎÎÎ쫉‰‰{öìÙ¿AAÁ«W¯víÚeff†g:4 Ä€¡(jêÔ©EmݺUö$Í¢iZ(nÚ´ÉÎÎnÔ¨Q_ýµ««k•ÏMxøðáÁƒÃÃà !_}õÕÔ©S ˜—´µµgÍš•’’rèС˜˜˜½{÷ššš²§ùþýû÷ë×röìÙŸþ9,,Œ¨®®¾k×®ñãÇ3³úúë¯>|¸fÍš'OžB^¼xñàÁƒ.]ºÈÞ `ýüùsBˆ¹¹¹··w‹-dg044ìØ±#3’ô‹/®\¹Âüdg0ƒëéééèè0S’““iš^´hÑ×_Í>ú’¢¨^½z1‚¹h!•Jƒ‚‚BCC+8..޹j" Ÿ>}úòåK¹¬­­Ùa­ÓÒÒe[ÔYrrrdd$³]__ßÊÍ$ÍÍÍ™¿333ãããëe»P[ˆ µ@QTëÖ­=°oß¾Þ½{kiiU3bbâÊ•+Ïœ9ÃÛÀxðàŸŸsæóòòbψ²<==œœ˜¿ïß¿_ùÎãñd¯[ 2dРArM(ŠjÕª{% =====½ò¶dW•‘‘QymmmBˆD")--­—q*e·›-×ÖÝ®@ `·‹ñ"â@­Qemmýí·ßþý÷ßïÞ½;yòäÔ©Sªì‘••uðàAævC"‘øúú2·!!...²Ï£b¹ºº²Ý""""™a%«Ä´©”ë³ÀÐÕÕe/B…Â*Oóžžž^^^ÌßlL‘Ýe555¶5†H$ª—¸àââÂŒdE±¶¶vss«<ªªª††ó·X,F\hh»PwEÙØØØØØŒ?^"‘ÄÇÇ?~üøÎ;Ïž=ËÈÈ`;"¾yóæñãÇíÚµcn $$$$$$°#1èèè°§CYjjjZZZÊÊÊÌœÑÑÑ îîîU–ÄÆÆÆÚÚºÊFššššššÌߊâB¿~ýLLLþþûo•¾}ûVîÍQ\\œŸŸÏöó¤iº^8Ùµk×Ý»wß»w¦é>}ú´lÙRn†ÒÒÒ¼¼-‚•••%Û5´šŠb¯I0ûf_bp0g¦DEE0[ZZÊ>-‚•›››ššŠ›q€›ìæëׯ>|8!!s©ÜÜÜgÏžÅÅÅ©¨¨0Ø—úôéÓ¶m[æïÀÀÀ¨¨¨Ê‹2$BzöìÉùøéº)))ÉÉÉáüùîçç÷ìÙ3öŸrQ€%ÊËËe›e$$$DDD0*--ÍÎή¦Ý[ ÷ïßgÿ)‘HªÜ.|hˆ ÜØ›„©TºwïÞuëÖUù )–P(}zäÈ61”””\¹reæÌ™7nÜpwwg‡~öìÙáÇ/^¼¸eË–;wî°k377g´ö÷÷?räH```VVÖ¡C‡víÚ¥ªªÚ±cG&$ñxf̹gCÛÛÛ?~õêÕLcÌàààß~ûmÊ”)²}Œ‡ ²`Á‚[·n1ËÊÊZ¸p¡ì° -Z´0`À°aÃìííù|¾¶¶ö÷ß¼páBÙ–ŒE999?~œ-›P(ܵk—læ>EQ|>Ò¤I ìÌ999«V­’Ý®‰‰Iß¾}‡îì쬤¤¤©©ùí·ß¯Y³Fn»¶¶¶{÷î­É{ÁûO¡Pxâĉþýû7b‘ZµïàÙΛùó,_Cw€s:0`ÀgŸ}fee5sæÌþýûÿñÇüñGlllLLŒìyˆ¦iBˆ££ã”)S&L˜PMw]]ÝU«Vy{{oÙ²ÅÏÏoÛ¶mÛ·ogÖÀçó;wî¼xñâÈ íããóûï¿çååÉ­-&&&&&ÆÄÄÄÌÌÌÛÛ;""âØ±c̘’²233oÞ¼yóæM•^½z)++Λ7O]]ýðáÃL£ËÔÔTæ@н{÷ ôïß_ L™2%33óüùó<ÏÓÓsÑ¢E£GfW®¬¬,ØÐÐ0<<ÜÐаq Ÿˆ¨¨¨°°0'''GGGÙ›¥¥¥!!!¯^½JHHÈÏÏ—J¥:::¶¶¶ÞÞÞ®®®ŠâPYEEE@@ÀóçÏããã !VVVÝ»w÷ôôT4®sõg5ÙŽªß®\ʉ‹‹óññ ËÉÉÑÐÐpttìܹ³‹‹‹ìÅ‰ŠŠŠ¤¤¤ôôtkkë*GŽ‹Å>ŒŒŒäóùŽŽŽ:ujÙ²e•Û i:))éåË—aaa™™™êêêööö:urww—}ÂgEEEJJJjjª®®®­­m•åR¤æ!£:ÈÍÍuttdO¦"‘èܹs'Nœ¸{÷ncÉË»#{Ø?¼{»^Ö‰« Ü™»rÔÕÕÛ·oß¾}{ÙRN9 cÇŽ;þó ç\C 7Q«’PegggggW}ó$­jV¥¤¤äîîîîî^“Ý¡(ÊÊÊÊÊÊŠ­Ã*çLñj[·µ­¨â@=¨¯RS8±Õcj›W{×@!ôŒˆ Àq8 .Äà€¸šk\@Ÿ+€Ó\ãÆjh0Í5.@ƒA\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ À¡¹ÆŠ¢»ŸŠæhšnì"|*šk\€ƒ¸€âpPjìÔÂ… Ö¬YZç5Ð4n5r²NšKý7d9œœV®\9~üøÆÞi€ê .@s2f̘ѣG7v)š%Š¢jÕŸ¨†ó×vµP¥f¡à‡¸Í ¾X묶UWÃùñŽ| Ðv8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸šk\ÀSmLs xf.@ƒi®q âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\Í5.PÕØEøT4׸@ÓtcàSÑ\ã4Äà€¸€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .Äà€¸šk\ (ª±‹ð©h®q¦éÆ.À§¢¹Æh0ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .ÄàÐ\ã` Ð`šk\À¬Ls Ð`€âp@\ˆ Àq8 .Äà€¸€âp@\ˆ À¡¹Æ<À Á4׸€X4˜æ Á .Äà€¸€âp@\ˆ Àq8 .Äà€¸€Cs x€5@ƒi®q°h0Í5.@ƒA\ˆ Àq8 .Äà€¸€âp@\ˆ Àq8 .‡æðk€Ó\ã` Ð`šk\€ƒ¸€âp@\ˆ Àq8 .Äà ÔØhºhšÎÉÉ)..®ÉÌ:::ÚÚÚ|>ÿ}¶XPP’’’žžž••% Û¶mëææVy¶üüüäääÌÌÌìììâââ6mÚxyyÕm‹"‘(??¿¤¤Dn:ÇSWW×ÖÖVVVn.c®%&&fff2£c—.]»P Ä…’““çÏŸåÊ•êg£iš¢¨_~ùeΜ9ZZZï³Å§OŸþþûï>>>:uZ»vm•qááÇûöíó÷÷ÏÍÍuww_³fMãBPPÐÚµk¯_¿.;‘É4Móù|;;»‘#GNœ8ÑÝݽ‰ç†×¯_¯_¿>(((33ÓÑÑqéÒ¥ˆ õ¥¹ÞŒhâ_[ðqxõêULL MÓ 8þ|ZZÚ®]»¬­­išþþûïâããüñÇ-Z())jjj¾ç‡zóæÍÙ³g WWW;;»*g9rä;w–.]ª§§çìììààPç-¶iÓæÒ¥KsçÎ¥iZEEeΜ9)))éééGÕÕÕÝ´iÓ·ß~û×_5â{Q½zõº{÷îÖ­[555­¬¬ZµjÕØ%øx4׫ xÄ|h4MûùùÅÇÇϘ1ã‡~`NÉùùù;v´´´$„Ì›7/!!áñãǺººõ’bËÊÊòóó%‰³³3³‰*I¥Ò¼¼¼¢¢"ggg{{û÷Ù"ŸÏWRRâñx„//¯šššBŒ'L˜@QÔªU«^¾|yíÚµvíÚéëë7ìûP;"‘(//¯´´ÔÊÊªÊ 3P7ÍõêÀ‡–Þ¡C‡©S§2Y!///&&&??ßÍÍÍ‚™ÍØØØÆÆÆÁÁAOO¯^¶çèèèàà ¤¤0ÐÇÅÅÅÆÆš˜˜8::jhh¼ÿÎÆÇÇBœœœØéEYZZ2TRRR’’’>l¥¿·”””SSSUUÕÆ.ÀÇq j¯^½ÊËË7n\›6m˜)aaa)))„WWW6.B ìííuuuëe»aaa±±±nnnÕ_3ŽŽvqqyŸ;¬ØØØ˜˜>Ÿokkkee%ûRII ÓØSMMM]]½~+¹Þ%&&âN@½C\¨MÓ¯^½êرcÏž=•••™‰L\PRRrqqa.׳LMMÙ¸ •J‹‹‹ Åb±D"©²ß!D,çææÉÞY“H$¡¡¡ñññLÃ…ÒÒÒ¼¼¼ŠŠŠÊÅ ‹‰‰quu­2.ˆÅâ¼¼¼‚‚‚šÜ¶£iš‰ VVVöööìþBÊËËBBB444ÜÜÜlmmå–ev0??_*•VYŒüüüjŠQý 4M—––…B©TZTTTyN𦋋‹óòò¤R)MÓ‰‰‰AAA–––žžž•‹ZXX˜››[¹¨4M3÷€˜ çççãŽ'€,Ä€ª­X±bõêÕÖÖÖÌ?iš MIIqpp°´´”½M0dÈ &˜˜˜0ókkkëèèlܸñÆÆ 355õòò:þ¼D"a掎^¾|y«V­ìíí---§Nʼchhhhh¸{÷ngggGGÇ-[¶dgg³[ÌÎÎŽŠŠ‹ÅNNN&&&²ÅŽ‹‹[»vm›6mìì쬬¬&NœXýžfddÄÆÆ–””ØÙÙÉ^Ò())9räÈÁƒËËËGŽ9nÜ8Ù½NJJÚ¸q#³!kkë/¾øâõë×ì«iiiÛ¶mkÕª•««kûöí?ÿüóçÏŸËn4==}ûöííÚµóôôôöö8pà­[·˜¹D"9qâsÁFKKëÛo¿}ôèÑÔ©SMLLÜÜܶnÝ*‹ !ÅÅÅW¯^íÙ³§±±q‹-ºwï~üøñ°°0gggCCCÙmíÚµ«C‡666¶¶¶ƒ zö쳡K—.17’455'NœøôéÓÙ³g›˜˜8;;¯]»–ÙÄ€*Q¥¥¥¥¦¦Æ¶^LMMMHH(++suu577—ÙÉÉÉÕÕUKKëûï¿?tèPûöíy<^llìµk×tuu]\\¢££_¿~““CÓôíÛ·¿úê«ÈÈÈ“'O&''óÍ7çλxñ"sÁ?44466VWW÷Ê•+QQQË–-›={¶T*]·nÝéÓ§E"³Å°°0öN[Bš¦ïß¿?eÊÿƒ&''Ï;÷êÕ«§OŸ.**ªfg™f„¢¢¢ìرcÆ sæÌéÖ­Û÷߯®®¾yóæÍ›7Ë^ÆxöìÙ´iÓ>|øûï¿'''/[¶ìöíÛG-(( „¼}ûvΜ9;wîüöÛo£££>|haa±cÇŽèèhfñ7oÞÌš5ëСC .Œ}ðà««ëÂ… O:Eáñx£F:uêÔ!C(ŠÊÈȸyófaaaÇŽSSS}}}SRRRSSùå—¯¿þÚÀÀÀÇÇ'--müøñ»wï¾víšÜ¥…€€€Ù³gŸ={vÆ )))¿þúëóçÏwïÞ——Çãñ tîܹÏ?ÿœ¢¨ÜÜÜÛ·o§¥¥uëÖ-33ÓÇÇ'11±±D€¦q F؆ ²íeQ¥­­mjjª®®®¬¬}úĉ•””ÌÍÍ»wï.‹¯^½MQ”†††©©©ŽŽŽ’’RRR’……ÅÁƒûöíkllÌ´a}úܹsr-'òóó/]ºôàÁƒ=zôèуÙtHHHAA±±ñÝ»w/_¾Ü¹sç!C†¨¨¨0ý3 !ÎÎÎeee7oÞ¼téR§NÌ^ÑÑÑ144LJJŠˆˆ`¦$%%…‡‡‹ÅânݺM:ÕÀÀ`Ñ¢Eñññ+W®|üøñÁƒ]]]§L™âîîÎ̯¤¤$ 3^EQQÑíÛ·¯^½êíí=xð`BHAAAHHHff¦ ÛI5---$$D"‘´mÛvöìÙúúú³fÍJHHؼys5=S>5ˆ ÜÄbqXXXZZš‹‹‹………¢ñhš JHHèÕ«W¯^½´µµ !ªªªªªªEÝ¿ÿÕ«W®®®nnn --mÆ ·nÝš}úôÅ‹NNNžžžªªª¿ýöÛ¥K—Æ7vìXv¶Ê’’’âââÄb±­­­½½=EQEµhÑ¢M›6ªªªÿý·¯¯¯ìü¾¾¾=²µµõòòRSSËÎÎþý÷ßOœ81räȯ¿þ:**êÞ½{b±¸S§N̰ªªªóçÏOJJÚµk—……EhhèÓ§OAË–-eïn”––1?ú™)ñññAAAžžžŸ}ö“ÏTTTÔÔÔ>|˜ššêîîÞ³gOv ùùù©©©–––­Zµb2JPPÐÍ›7[´háíí­®®ž——wüøñ]»võéÓgΜ9€Y0999 ÀÅÅeôèÑFFF„eeeuuu6èi¾Ã44¤¸¸¸ääd±X,×…RNFFFtttIII¿~ýZ·n-ûMÓ111LKK[µjÕ7455wìØ1xð`&X0qAnY‘H”]TT¤¯¯¯££CaúDÈv¡¤i:$$$""¢gÏž999k×®½yó¦’’ÒæÍ›‡^}OæN!„‰ ìt>ŸÏ\ŸgnÁ°"##ƒƒƒ;tèPRR²aÆ?ÿüS"‘¬Y³fôèÑzzzW¯^ µ´´”mT¡¢¢Âæ•ÄÄÄÈÈH+++ÙÔUPP••eaaÁTE^^^TTT^^ÞÈ‘#ûôé#Wà7oÞ˜™™µmÛV¶=cvvvBB‚••Ûp!!!áÍ›7®®®„ß~ûíúõëùùù‹-š8q"»`AAAdddNNNŸ>} ÔÈÇ@†¸ÀMvĹv޲‚ƒƒããã[¶lÙ²eK555Ù—ÊÊʲ³³KKKŸ>}*‘H†zñâE+++ö‘TR©4&&&%%ÅÎÎN6‘DGG'$$Ð4íììlggGÓtxxxllì!Cس{yyyvvvII‰EQC† 9uê”MM®¥3qAOOÏÎÎNv¤©ŠŠŠŠŠ ‰DRVVÆNd6T\\üæÍeeå!C†9rDv8©üüüœœ777E·?ŠŠŠòóó=<EQ %%åíÛ·¶¶¶;w®÷ÃàcÒ\oÎáSÐ` ‚ƒƒ333íííå9UVVš••åîî^ù†…–––¾¾¾ŠŠJQQQii);¹¿žÀãñx<žªªªlVˆˆˆ¸{÷nffæçŸδ+LJJJMMurr²³³ :wî\RR’©©©¾¾¾@ (**’*44ôæÍ›L'É*EDDDDDÐ4mee%× @,3G"‘„……111oß¾¥iš¦é9rÄÎÎnæÌ™ÌÈ͉‰‰¡¡¡fffnnn•ŸûàììÜ©S§ððð»wïæææ–——_½zõÒ¥KÖÖÖ***×®]‹ŽŽž:uª‡‡GÏž=._¾,‰„BáóçÏ/^|åÊæÊDjjê»wŒZ¶l‰LpÈáâÙΛnl§OŸÜ ËÉÉÑ××gÿ) Oœ8Ñ¿ÿF,R«ö<Ûy3ÿqžåkˆb»-)ÒkÀ ÀW¾¤Q9sæäÉ“gÏžeoˆ†‡‡Ë¶‹¨w´â‹XUÞcæ¯þNsÅ";;›9ÕÉÝS—J¥ÉÉÉ¥¥¥ÖÖÖríhšŽŠŠJNN¶³³³´´d[J2òóó###333œœªï!»wEU.|aaaxxxyy¹‹‹‹\ÓÅ‚‚‚èèè´´4CCC'''¹§ZWTT$%%ÅÆÆª««»¸¸TþœŠD¢´´´ÈÈH¡Pèäädkk+·#œ5Y\\•’’bnnîêꪪªš““¦¬¬ìîî.[iÅÅÅ111IIIÌ›r…©É[P½ÜÜ\GGGöd*‰Î;wâĉ»wï6V‘¼¼;²ð‡wo×Ë:ÑÔ@¡ÚžEj2¿¾¾~ÇŽ½Êãñ*7#Û„““S妔 ]]ÝÊmkXÚÊ…×ÖÖV´6¶mÛ*Z³@ ppp¨æQ™ÊÊÊœ»Y}á555[·n-ÛãÔÀÀ k×®UÎÙªU+E¨DP¨¡æÚv âp@\ˆ Àq8 .‡æÐý  Á4׸@ch€†Ò\ã4Äà€¸€âp@\ˆ Àq8 .‡æ04@ƒi®qƒ@4˜æ Á .Äà€¸€âp@\ˆ Àq84׸€A Ls  Á4׸ q8 .Äà€¸€âp@\ˆ À¡¹Æ  Ð`šk\À Ð ¦¹Æh0ˆ Àq8 .Äà€¸€âp@\Í5.`h€Ó\ãh0Í5.@ƒA\ˆ Àq8 .Äà€¸€âph®qƒ@4˜æ04@ƒi®q âp@\ˆ Àq8 .Äà€¸ÐŒÑ4-‘H»ðñC\h–˜ÑêÂÂÂÖ®]ÑØÅœRc Ž04|Ê¢¢¢®^½Ú¯_?%%¥ŠŠ ‘HÔØ%‚\s >V4MÄÄÄ…B'''ƒÊóH$’ââ⊊ %¥æú5Í Ž3øDI¥Òìì옘˜’’eeeccc+++ Æ-URRÒÞ½{>œ••EQ”‡‡Ç† \åÌ̧’’’''§Æ-<|ÄàÓRQQtæÌ™[·nÅÄĈÅbö%@àêê:bĈ‘#G¶lÙ² FÓt``à²eËnß¾ÍN‰ŒŒ<{öl•q¡¢¢âÍ›7ááágΜ¹xñâwß}·|ùòÆ«WøÈ!.À§åþýûsçÎÍÈÈpqq™5k–»»»®®®T*-**Љ‰yöìÙo¿ý¶}ûöQ£F-^¼¸!¯GGGoݺ•Í >Ÿ/äæLKK»páÂÉ“'SSS™ :::ì 4MÆÄÄ”••¹¸¸Ty; V …¤¤¤¤¤$Bˆ¾¾¾¥¥¥ŽŽ×û^uêÔéܹsZZZŽŽŽä¿í¦™Soaaá;wvïÞ=vìØ9sæ|ùå—êêê P°¤¤¤¿þúKn¢……Å€ä&­ZµŠ¦i>Ÿ¯¥¥åêêºtéÒ!C†0¯¦¦¦îÛ·ïÀ™™™E¹¸¸lܸqذaWåð1@\€º+--õññ9~üø_ý•žžNÓ4sö¥(ÊÜÜ|À€'NìØ±cåßÇHOO¯mÛ¶U¾Ä^GGgìØ±ƒ>þü† ž={öóÏ?›››ÐRåççåææÊN´¶¶ž;wîÈ‘#åfVRRÒÖÖ¶³³›;wnË–-ÏŸ?oggÇçóiš ]ºté7˜9išŽ‰‰9yò$â¼'Ĩ#©TzàÀåË—öèÑ£M›6|>¿¬¬,!!áåË—W®\9qâD×®]/^ܧO>ŸßØE&R©4///66–âè訫««hN--­‰'jhh¬Y³fÛ¶m[·nýp¥*((¸ÿþÍ›7™¼EÓ´²²²ƒƒÃÀ•””>¬­­Ýºukgggfþ^½z={öìÂ… ...€I9R©ôÍ›7óæÍ{ñâ…ìÊišNLL}Ê”)óçϯæôÜ¢¢¢vïÞ}úô霜Š¢:uêôóÏ?÷êÕKÑü`äÈ‘={öüнøúúijjš››‹Åb•'OžgggWWW;;»F©|hî î¬¬¬¬¬¬ª|‰¢(--­¡C‡öïßÿÞ½{Û¶mËÈÈX¾|ù‡¾ª_%©Túüùó•+W>zôˆ™BÓôÛ·o¯_¿^M\ „SSÓ¨Æ9sæÐ4þüyEõYybEEE^^Þßÿ}ëÖ­I“&µk×NnLssó~øá»ï¾c.í`€;¨3Ä…f&//oñâÅ#GŽìÕ«—ššZc>iR©4+++..NEEÅÁÁA[[»ÊÙTTT†jll¼qãÆíÛ·oذ¡áGz÷îÝo¿ýÆf†’’g£ ©TšŸŸ#•Jœœôôô8gŽ‹ÅNNNúúúu(jMÎèb±8;;ûéÓ§‡JKK£iÚÄĤ¢¢‚¢(eee‰DBÓ´ªªj§N–.]Ú¿ÿÚ–¦é¢¢¢èèèÒÒRCCÃúx yk®qáÓÌÈyyy“'O¾wïÞóçÏÏ;çááñiÖ4ïÞ½Û¹sçåË—óóóy<^ÿþýW®\Ù±cGEó{{{;vL,7Ê(„QQQOŸ>•›èààн{÷j–Љ‰ùý÷ßOœ8Áܼðööþå—_úôéSåÌqqq{öì9~üxvv6EQmÚ´Y·n]NÕ5ñìÙ³#F0ÿ422?~üøñãSRR\\\¾þúë–-[Z[[[[[ס¶322öïß¿wïÞŒŒ Š¢ìíí7mÚT¹¹%|jšk\ø4Þ´iÓ³gÏÊËËÃÂÂ.]ºdff†ÔÿÑ+,,|þüù™3güüü²³³+**TUUMLLºtéòÙgŸuìØ±n?a߇T*½sçÎÚµk}}}™)‰äùóç<¨&.B]~heee………²S\\\æÎ[¹"»¾¾¾+V¬¸ÿ>3…¦éwïÞ]¹r¥r\J¥þþþ?ýôÛ ’¦éK—.} ¸  ôôô† âíí;uêT;;»””eeekkëÞ½{×aµ4MGEE-^¼øúõëÌw,MÓ ÇŽC\€æ>A¯_¿¾rå ÓÏÊÐÐðܹs£GF\øˆ%$$=zôüùó***ÞÞÞÓ§O×ÔÔ,//õññ9sæÌÁƒ]]]çÌ™3vìØê/’×—œœœÐÐÐÇ_¸páÝ»w²/I¥Òððð¿ÿþÛÕÕµÊÖ ÌˆËqqqJJJ²c Õ„T*ÍÉɉ‹‹ãñxŽŽŽµZ>>/^”ë@IJJº}û¶«««Mõ%,** ŠŒŒÌÌ̼páBå444\\\ØVŠ­[·>pà@xxø˜1c455SRR!>ÌÍÍ}ùòeå'NQeddÔ©S'E=#²²².]ºtáÂ…Ƚ”}ñâEƒ.]º cÅ' q¡Ù¸~ýzvv6!dÀ€›6mZ±bE@@€µµµ––Vc >ˆððp©Tºk×®®]»ª¨¨°7ž˜Ÿ}ÙÙÙ÷îÝ;pàÀ÷ßÿøñãüÑÓÓóC)!!áðáÃ7oÞ”€"‹ïß¿;kÖ¬ &Ƚ¼k×®‹/æååñx¼Þ½{¯^½ºsçÎ5ÜnXXØ®]»ÎŸ?Ÿ››KQT=Ö¬YÓ­[·.påÊ ===‰D¢¬¬œ}ôèQ¶J;wî¼bÅ fÔ¦˜˜˜mÛ¶07Y‰äõë×›7ož7oÞÀ !§OŸ¾xñbVVVå™ß¼y³jÕª‰'Î;·úfggß¾}ûÉ“'b±øÇ¬<ƒ®®î—_~¹hÑ"æŸFFF]»vMNNfg i:::zÿþý999üñÇ¥K—*¯ÄÍÍmëÖ­UŽSIÓtllìºuëÒÒÒä^’J¥ÑÑÑK—.uttܽ{·½½} «>69\<ÛyÓíôéÓƒ.,,d§dee5v¹T¯^½ø|~Ïž=#""¤Ré²eË,X˜˜ØØå‚H*•V?CYYÙÙ³g[·nÝ·oß§OŸ6@‘233.\(7‚B›6m._¾,‹+X"‘ܹs§S§N²ókii1ƒr’H$÷ïß—KšššK—.­U±92yòd©b²3_½zÕØØXnHJGGÇÇ‹D"¹™sss·lÙ"×DÀÞÞþÀ•g®Fbbâ¢E‹F]“Ò4¶råÊ—/_†††®Y³&22’¦éÇ{{{_¹r¥†+‘óüùseeeÙ155ݺu«H$¢kp4~²rrrôõõÙ …Â'Nôïß¿‹Ôª}ÏvÞÌœgùÂՅ桤¤$//OKKë—_~±··gº¨=zô¨  ÀÒÒ²±K×, …¼¼¼’’UUU###¦ó,`‰D’‘‘¯©©igg§©©YålªªªcÇŽõôôüùçŸ÷ìÙ£««ëááñA –™™™––FQsa_GGgذaóçÏW4N¢ŸŸß¶mÛ^¾|);QII©†×´ß¼yóÛo¿ÉµR¬ùⲘ2×dÎââbfødf544z÷î½hÑ¢*ÛE$$$ðxŸ/‹išÞÞÞ?þøã AƒjU0øX5•/G¨^AAX,3fŒ­­-ó8..®¬¬¬±‹ÖÌ$$$\¿~ýÆþþþyyy´L›YUUUOOÏaÆ >ÜÉÉ©±Æ-¦iúÕ«WÛ¶m»uëVQQ3ÒO?ýÔªU+E‹¸ºº®]»öñãÇùùù PB7{ö쯿þº´´ÔÎÎÎÄĤšáƒƒƒýüüä&º»»Wß(’&5!...]ºtùл9|øðµk׿ååÙØØ0£UVS!Æ [µjUNNŽ¥¥eŒ_éää´xñâúM¢(‡éÓ§»»»[[[ÛØØ4 ‡B󠪪ÊãñºuëÆ¶ðJMMe~7VÏ´fçöíÛ¿ÿþ»¿¿¿››[¯^½þ÷¿ÿ3¿¥233cbb^½zõìÙ³U«V­Y³¦k×®sæÌéÛ·o7 ‘H$—.]Z·nÛP"‘üõ×_}úô©&.B¬œ:::mÚ´áœM$åååÉuIðòòš7o^=j²¡²²²¢¢"Ù)sçÎUÔ›±iùÄJ<IDAThhÔ¼9ˆººz?ðºòÀŽõBIIÉÚÚºªšœfšuuu>Ÿoaa¡ªªJ)** +++SSSkšýkjD"ѳgϬ¬¬Ö®]ëééYå÷¬D"‘H$QQQ'Nœ8sæÌèÑ£¼|ùòöíÛ7X%߿ǎrTTTäî(WYøÌÌÌøøxuuu{{{E7/R©4333..NMMÍÞÞþÃE"¦û¢T*e.Ôkkk2dÁ‚íÛ·¯áÄb±X,f×ÒÒ0`ÀÂ… kxeê•““Sý½ |åÛ¸¥ºtér÷î]‘HÄì‚ÜüB¡ðüùó­Zµ’m­­­½}ûöÊ»/ /_¾ÜºukÙ™µ´´¶lÙ®YnÌ?e'M˜0aùòåÌ?iš®c:::;vìh‚ï MÓ?1b„»»{=<==çÌ™YåÌééé²wèZ´h±bÅŠ!C†H$æ,þA ‚~ýúíÛ·ïÅ‹aaa{öì‘Í •½~ýZ®¡!¤M›6U¶‹|óæ\° „xyyµnÝúCï|Rø|~aaáòåËà# ¦¹Æ…OP«V­üýýgΜÉãñ–/_nkk[Íü ˜ìröìÙÐÐÐÆ®§ÿH$GŽ™>}ú7Š‹‹™+ç×®] ’-??ÿÊ•+/^ܰaÊ+ä^µµµÝ¶mÛ„ ¦k¥ššš——W§NLLLªobúöíÛÒÒRÙ‰;vœ7o^‡äfÎÉÉILL,..–èíí=oÞ¼š®ø“J¥¥¥¥iiiaaañññ]œæMCC£cÇŽ&&&›6mj‚?! nšë͈O™™Yzzzrr2MÓ3fÌèÕ«—ìõÊêòóó£¢¢ŠŠŠÌÌÌjug¡cÇŽ;wî,//_²d‰µµuc×Ö?®]»¶sçΨ¨(Ù‰***lûŸ?ÿüóîÝ»EEEÌ÷𦦦\,`îž&$$èééÙÚÚV_í‰$---!!AGGÇÖÖVCCãÃí]hhhZZš¦¦f~~>MÓzzzŸþùܹs«ìÑ—œœÌŒÌô2ÐÕÕ1bÄüùó«ïŸù1 ß¾}{NNNfffvvvnnn~~~aaaIIIIIIEE!DIIIII‰½3u¦££ãáá1gÎ{{û/¿ü²±‹õ=#šê{FڷدUûä÷×4;kpv4xÿ¦ûõ^àÚ6à¯Iáë±ÃE5o´¢ž¢­~ŠÍD¥š/òq÷Œø‹Ë­¤¾Þ;צM›Êã}5è MQϱX¼aÃ&=þœi'_½¬Y³&!!sÎcÇŽY[[»»»ûùù‰Åb‰DR\\¼eË–%K–DGGפmsaaáäÉ“™¾þ®®®ÏŸ?¯y»è'!!aĈrûõë÷âÅ f7%ÉôéÓõôôÆŽëëëûû￟95~õÕWß}÷û`BÈž={:wî\^^nff¦¤¤$Û†ÿÖ­[»ví —]§@ ¨òÏÝ»wwíÚ%×tƒéæP‡ª¨U›ü÷iÀ¯è†m:=#˜^BEihhhiiiii1áÀÀÀÀÐÐP___ç_¾¾¾7nDψº …/^¼˜>}zll,EQ&&&&L¨—ªó ^ .4uÌãæ’’’ÔÕÕ™gøÆÄĸ¹¹U?l!DIIéÔ©SÎÎÎ%%%>>>sçÎe†=–›íêÕ«)))„cccæž}yyùëׯóòò!;v422R´‰Dòã?^¼x±¤¤DMMmÅŠÓ¦M«fþ&vîÜÙ²eK>Ÿïàà §§'×xÏçËMa~yóx¼çÏŸWî@Ñ¥KggçÊzùò¥\° „têÔÉÕÕµ±ëþ1nܸ¨©©ÉM‹ÅÅÅÅ………………r­G¡æhšŽˆˆ˜  .4i¥¥¥ .Œˆˆ „lذaàÀéééaaa=zô¨I\°¶¶^µj•¶¶ö¨Q£®]»6zôèÊq!66¶¤¤„ Ò@QUUm׮ݻwïJKK]\\ª!X"‘ŠD"BÈÂ… §NÚt²ÃÐа&-ÿóòò/^¼xþüùåË—wéÒ%??_î ^½{÷ž7o^• ‹ŠŠäfîѣǼyó¼¼¼»>-b±¸¤¤¤@F~~~AAÁ“'O¾ýö[¶…caa!ó®‰Åb>Ÿ¯¤¤Äãñx<MÓL³Ç ‰ ˜¶–111‰‰‰R©ô}VHÓtqqqhh¨­­­®®®¶¶¶¦¦fC>S†©=æ)!VVVÛ·oGVøh .4i'Ož  …ß|óÍèÑ£uttÚ·o¿}ûöÂÂÂ-ZT¿¬’’’ºº:ó}¡©©YeO‡””æ<'û=õóÏ?6LWW×ÉɉyJ…"***+V¬HII íÙ³§‰‰IýÖ€D"INNNLL422²¶¶®üÓð=1}çΟ?¿dÉ’ÂÂBæ‰Ì‰¤¢¢¢¬¬Œ}ØÁ„ þ÷¿ÿ9::V¹eee%%%¦—¹Á—_~9gΜ*¯C@måçç3'~æÜŸ•••‘‘Áôn`¯””””••‰D"ÇÜW¢išmÏÁÞŠÆÛ‹ÅrYIÍ YPPðîÝ;æ*ÓÛ¢¸¸˜-3S좢¢ââbæ¥òòòŠŠ ©TÊôÓaZØ”——¿ç³Äbqddäúõë·lÙ"‹…B!ó:555挶¶¶®®®®®®®®®žžž¶¶¶¶¶¶––Vllì{æçââ²eË–ÿýïÖÖÖ½{÷®§£zF4!UöŒ`g±·îê0&|õMÙÙ¿ßg4þ÷Yüéa]UùT‚Zõ˜¨ÇîhpþêߣZ=) ÏŒ¨ßž Ö•ÿýë¶E}ÿžï³­úêQ/ûÂBψÚú=#šëÕ…&xfz3gÎüöÛoÙ2禦ž9sføðáàØ±cÛ¶m‹ˆˆ`~ÅjjjNš4é‡~°¶¶®\!7nܸ{÷nË–-=:f̘ɓ'ëëëW¹Ñ3gέ^½zÖ¬Yr·$IõÃH‹ÅâÄÄD k×®åççñÅ666ï_‰äÀ[·n‹‹c';vlÈ!5\ɽ{÷6oÞûì3“²²²™3gšššÎŸ?ßÌÌŒs[Ë—/ÿþûïkòXçj¬_¿>((hþüù•ÇYªìâÅ‹üñǘ1c&MšÄ9ó»wïÖ­[çååõã?V9C ;†††2ýt¦N—žž^RR"ûSž5iÒ¤72Õ¨h+………»wïÎËËÛ²e‹ìôC‡Í™3§&wx<ž²²2Ó•½ºÀ\(bÇkjjjkk3-™FŽzzz:::ÌD9ŠÆü–݋իW_¹r¥¶¿Ë)ŠbÊ,ÛÆvðàÁ§NªÕzd½xñb̘1EEEE1ïóHOEóWÊ–––K–,™={vÝ ÀÜ IIIáóùÇwss{ÿg=ddd¬[·ÎÅÅå=×啕ƅu¤0Ù³Oaaa·nÝÚ·o¯®®¾víÚ]»vegg³3ïÝ»÷õë×GŽqww—;©+++¿yóæåË—ëׯïÑ£‡¢{ vvvEEEÌwŠìJ¢¢¢ºvíZÍK—.­Zµ*::ºeË–………૯¾ª2—ÔÊåË—wïÞ-›!ªªªµêhP“6ùóçÏ·´´4661bÄíÛ·™.'²­ôkÕ€ÔÓOÃÑ3Bn©Ú¾$K"‘ìÙ³gß¾}LÔšÔ ç3&U ªªªžž^yy9ÇcO~‰„é÷Èœþ™KëLïæ†={Êg.¼kkkWî¯Ã;Å.¥¥¥eaa¡¡¡¡¬¬Ìt •-§@ PUUeî 2f [0&—hhhhkkëëë›››¿Ï!Ô¾}ûçÏŸ§¦¦²M7 óóó³³³srr˜Û"EEEEEE¥¥¥eeeL eÛmhkkWù󣆘Sûï¿ÿ®¥¥åæævïÞ=''§š?¯¼šªþ("6/Í5.| …Báøñã_¿~}êÔ©ììì~ýúYYY…„„xxx¼~ý:,,ìÕ«Wû÷ï_¶l™Ü` ‹öíÛO›6ÍÝݽš±„?ûì³óçϧ§§gff–——˾týúõ6mÚèééUSHæéDúúú-[¶‹Å{÷î5445jTõCrzðàABB‚ÜÄ^½zÕË¥ Y^^^AAAh _+4M3[YÌe>Ÿ¯¡¡adddnnîääÔªU+''§ëׯççç×y[C† ±µµÍÏÏgÎýLPWWWÔ° áO*–––óçÏg9_´´´˜dÀù)¨÷Òª¨¨ØÚÚÊ _Í+¦­%Ó®‚iû©¦¦Ö­[·:€Çã1­1¬­­Û·oº`Á‚3gÎXZZÖïžBÃC\hº˜ìïîî®®®~ûöíÜÜÜM›6M›6­°°pêÔ©ß}÷££ãªU«Ž9rèС¡C‡Ê6fôððؾ};ç÷‘‹‹Ë¼yóV­ZõâÅ‹¬¬,KKKf‘‡òù|;;»ê[z{{õíÛwñâÅ–––ÑÑÑ©©©eeeïÒÒÒRSS…B¡ìÄAƒÍ›7ÏÉÉéÃU¸@ ¡(J èéé™™™ÙÙÙ¹¹¹1µjÑ¢…@ ½o]PPðèÑ£÷‰ úúú]»vmì=®dz±±©÷ [ªùPQQ122ªÇÞL:::]»v½páÂòåËÇŒS^^”ššŠ¸ðÀ7cÓ¥««Û¢E ]]]>ŸŸœœìêêúÙgŸ1—[%Ivv¶»»û† ââânݺèíí-w% †¿]¾úê+ssó7.[¶lÈ!¦¦¦¡¡¡:::cÆŒ±°°¨~Y ‹¾}ûêëë Š¢õ¨9ÿÌÌL¦ÍMÓÆÆÆS¦L™5kÖzsÛÏçõÕW5¯´O™’’Ò?ü°víZòï]|¦ÒÊÊÊbbb¢¢¢‚‚‚BBB¢££“’’²²²ÆŒÓØE†"ZµjÕ¯_?Š¢ÔÔÔ¼½½»PP?Ð3¢ ‘ë!×þœ(èñ!Æ«oà‡M(*Œ¬:?Ý aº{ÔcßÔ3‚sæzéd!ׇUÃ~=~àÕ»†nKå^$µíÓ÷=#j =#>rr=#.]º´zõê?þøÃËËëþýûK—.ýý÷ßÛ·oÏãñvîÜ™ŸŸ?}út33³¸¸¸#FxyyýòË/uÅÏ×××Îή¾.iÞ¸qcëÖ­‹/pàÀíÛÿ¯½; ¢Ì÷>^ÝI:M²v–îì Y€,l ˜…!•ãv®ƒ£Œ\â—ñ0Š ›£3Š3sŽÂqFT˜M2@DDMœ € ²²‘}ïît÷󢞧¯~H…­C…ïçòES]]uWÙË/÷ý¿«Þùî»ï"##gÍš5uêÔM›6­_¿>...<<|ÿþý½½½ÖϰxcåáúËlêÔ©7ü$\ÿ†x·É6ØóÆ­­­ÙÙÙûöí3›ÍF£QòKÖÁÁa(7¹lS­ CUUUAAÁ?þXZZZYYY[[ÛÖÖf4Å@pÙfØÖ(ˆ×ÒV©T>>>ÁÁÁbãĉ£¢¢¼½½U*ÕPZuS à‡±ÓbØûKì3 3fܨ603âA\¸u¹¹¹ýò—¿|çw§M›öÆo¬[·î­·Þzíµ×BCCÄÉè?üðƒÁ`˜9sæàS bÿA¿‰òÖ úžžžaaa111ãÆ«¬¬>~âĉ111ýî¢P(þþ÷¿çç_E]‘ÑhܲeË–-[† Apqqñóó ‰‰‰;vlDD„F£±Î!· âÂ-M©T¾ù曫W¯~衇–.]ºdÉF£P(Ä騻woddä²eˆ»±²ÔÙÙÙÐÐpñâŲ²²³gÏ–——WWW×××755µµµ­X±ÂÎíñðð¸ï¾ûl¯êh­ìè訪ª*..>yòdqqqyyyUUUGGÇwÞ9”-‡‡‡‡……ÙgggñòGjµZ«Õ†……EGG;6:::,,Ìßß_¼I©íô·'¹ÎŒðõõ-..a3#þçþgíÚµõõõ¶£Â’­Ρä±íëS×¶ÜöŸ·àò~glˆË®pc׿Iíü}ˆåfƒÏŽü&W›*®óåCÙ¾íA]sî¿×І{®³×vBnÔÞRRRŽ9r³NÓõafÄ-mD^zÙ²eO=õÔ +Ô××———···{zz¾ûî»ééé ,pwwî†ß`7pfÄêÕ« A°^«¸ß;ÇúÏ~ßkâqÿó?ÿó&ÍŒ°X,íííUUU?ýôÓÉ“'KJJ***ÄJñ‚‰ý& l§X`èææ¶víÚåË—KîñÚ*ä%_5”Í^vjåõ´êªÚo=oƒ4ãÆ6¬_²·}Êþ_\ýÒØ0î}¸Ú€E®qa¤<€XM&Óˆì"¾3#Axk%¿Åbqrr=z´V« ŠŒŒŒŒŒŒˆˆðññY½zõõÏŒ0 bÈ;qâDaa¡8±±±±»»[¼½²x—A¶,^®J©Tºººúùù‰ããÇOLLŒˆˆðòòºì}Éoä5œÆëßì•V³Ïø¦®\1ÿpìÍ8¢‘Ô\â­®°°ð·¿ýmaaazzú /¼`½Û“J¥2 ×ysúO¡P¨Õjñæ=þþþAAAáááÑÑÑQQQAAA¾¾¾âؼíú⃞žž~O N¬-øá‡¾ûî»ãÇŸ?þzb¿¿XXX\\\BB¸qãÂÃÃ===m¯NÍw.;#.ÜÒjkk—.]zìØ1³Ù\\\ø‹_üBœ0i4¯êöŒ·'ww÷mÛ¶õ»L“m&¨ªªª¯¯¯¨¨8wî\EEÅÅ‹Å:ÇÖÖÖÎÎΕ+WqG­­­999ÙÙÙ’±@ìÛP(*•Êö¶ ±±±â½ 6†qá–vìØ±K—.Y»Ž?ÞÙÙ)Æ…òòòéÓ§~ÿ§Û™Édjooïîî.((hllùä“Ozyy™Íæ­[·fggoÞ¼ùª®þ+/mmmË–-;óF£xw¥!¾Ö:ÁÑÑÑÅÅÅÃÃÃÛÛ[«ÕŠÓ ÂÂÂt:ÝÀ{ÜŒJxˆ ·ºôôô÷Þ{ïå—_þøãu:Ý™3gÂÂÂþøÇ?&&&Š—éyBCCG­×ëÅ›bô#Ž‚àèèèêêêéé)ˆ³¢¢¢‚ƒƒµZ­ÏÀ†ü¨Àµ!.È@ZZÚwß}WVVV]]¥Óé†>Õ^Žâãヂ‚ÔjµJ¥rww÷òòò÷÷×jµ¡¡¡QQQÑÑÑ¡¡¡†4v#׸p»ý0899ÅÄÄÄÄÄ wCìä“O>¹ìòÛíÿ;Ü"丒èÈF,€[ÊÈü7qH . Ä ¸$€â ׸À¼|ìF®qË4`7r Ànˆ @qH . Ä ¸$È5.pÝìF®që.`7r Ànˆ @qH . Ä A®q‰”Ø\ã)°¹Æ`7Ä ¸$È5.Pê€ÝÈ5.Pê€ÝÈ5.»!. r Ô.`7r Ô.`7r ô.`7r ô.`7r ÀnäŒÀnäŒÀnä€ÝÈ5.0€ÝÈ5.0€ÝÈ5.»‘k\`0»‘k\`0»‘k\vC\ä¨]Ànä¨]Ànä€Ý€â ׸@©#v#׸@©#v#׸솸$È5.P»€ÝÈ5.P»€ÝÈ5.»‘k\`0»‘k\`0»‘k\vC\ä¨]Ànä¨]Ànä€Ý€¹Æj°¹Æj°¹Æ`7r F`7r F`7r Ànˆ @‚\ãµ Ø\ãµ Ø\ã°â ׸@ív#׸@ív#׸솸$È5.P»€ÝÈ5.P»€ÝÈ5.»!. r Ô.`7r Ô.`7r Ànˆ @‚\ãµ Ø\ãµ Ø\ã°â ׸@ív#׸@ív#׸솸$È5.P»€ÝÈ5.P»€ÝÈ5.»!. Ä A®qRGìF®qRGìF®qØ qH . Ä A®q™Ø\ã3#°¹Æ`7ŽÃÝà¦(**ÊÊʺpá•Vpuu}ä‘G&L˜Ðoù®]»víÚuáÂ…¾¾¾Õ«WÏŸ?_\^ZZZWWpýÍËÊÊÚ±cGEE…Ñh\¹rå¿ýÛ¿õ[a÷îÝŸ|òIuuujjêÒ¥Kccc¯y_%%%ÙÙÙçÏŸ·]èìì¬ÑhÆ—’’¢ÓélŸª¬¬¬¬¬ ½Ò69òᇖ””Œ5jÉ’%?üðõŸ“+ÉËËÛºuëÙ³g{{{-ZôÒK/]v5³Ù\TT´mÛ¶üü|³ÙÿüóO?ýT­Vß}÷ݳfÍJJJjkkÛ½{÷–-[JKK¾pÖ¬Y¯¾újPPPiii{{»¸°¯¯ïí·ßÎÈÈÈÎÎ6›ÍâÂŽŽŽ£G–••]Có¦OŸ¾zõêèèè³g϶¶¶\aæÌ™?ÿùÏ{{{/\¸`0®çTøøø$%%999åää|öÙg‚ ¤¥¥ÝqÇF£qÍš5©©©ï½÷^oo¯¸²ÉdÚ¾}{FFÆ_þòë‘”””´|ùò˜˜˜’’’˶ÿ?~üK/½t×]w9sæÒ¥K—]Çb±äää¬ZµÊÕÕuëÖ­[·n ~õÕW,XðÑG566FGG/_¾<%%åôéÓÍÍÍ7µÁÀˆDïF&ÿŒŒ ¥Ryüøq“É´`Á‚»îºK|jéÒ¥ï¼óλï¾k4¾ÐÛÛÛÛÛ;**êÈ‘#Ö…ŽŽŽóçÏ ›2eŠRùCvEEÅþýûg̘qµÍóôôôôô3fŒ««ëeWðööŽ×jµ×*|}}ï¾ûnGGÇ¢¢¢–––ôôô{ï½W‹Å’°fÍš÷Þ{ÏÏÏï¾ûîÁÁÁá®»îrppHMMµé@nnn‰‰‰ÑÑÑû÷ï¿QÿËÙWttt\\œ§§ç•Ö)--ÍÉɉ‹‹[½zµ“““ ±±±&Lø¯ÿú/£Ñ¨×ë]\\ÆŽ;~üø›ÝZ`¤".`$S( …B©TŠSiÌfs__ŸƒƒÃâÅ‹>¬×ëM&“ƒƒÃ•^h»$33333ÓvIqqquuõõ·ðšŸ½†Ù—B¡ ?tèmIjjjjjêu¶üfduuu555“&M³‚ J¥rúôéO>ùäÎ;õzý°4Iä:Á'WEœJsüøñW_}õ»ï¾ÓjµaaaJ¥²_ƒÉd²ídNUUÕçŸ^RRrÙgÍfó =ùýö2â¯sBÐÀOÁ`0 jµZ­V¥ }}}WjÃà‡,¾Öd2 ²}“É4p³Ù<ø«¬¯­««ËËË+**².T©T )))Ö¡[‹åJ[¶X,’­| C\¹ö.0‘WE¡PX,–üüüŠŠ ‹Å¢P(^xá•Jeýc´´´ôwÞÙ½{·““Ó“O>)ÖHŠ¿¯GÍÊÊ:þ¼ÅbY¶lYZZÚž={Ö¯_ÿã?Ž5êÙgŸõððHKK[²dIddduuõûï¿¿wïÞÞÞÞˆˆˆ§Ÿ~zÖ¬YÖ½œ?þüãÎ;Aøÿø¦¦&É–›L¦O?ýôСCgÏž3fÌŠ+î¹çž|øá‡/^!::ú‰'žèèèøË_þR]]­T*Ÿzê©Ç{là¦ú}jL&ÓñãÇOž<9uêÔiÓ¦ ‚PXXøü£¤¤¤¯¯ïÁ\¼x±¸fuuõ‡~øÙgŸuuuétº_üâ<ð€³³³øl{{û–-[Þ}÷Ýúúú»ï¾û¹çž›:uªu/'OžÜºuk^^^OOOOOOJJÊ3Ï<3mÚ´3gÎ|öÙg………*•jîܹf³yÓ¦MÝÝÝÏ=÷Ü3Ï<ãààPSSóÑGmÙ²¥³³sÁ‚ƒËøûûGFFîØ±£¸¸øÞ{ï7oÞ¤I“¼¼¼ÃÃíç_ÔÙÙ¹cÇŽ7Þx£ªª*55uÅŠ3gΟ:{öìÖ­[¿þúk½^ßÙÙ™ðì³ÏΚ5K„ÚÚÚ¬¬¬C‡Y,–ÔÔÔ€€€7–——O›6måÊ•iiiuuuYYY_ýµÙlž6mZHHÈúõëËÊÊRRRV®\9{öìáþ×E®½ ÀÐÕÖÖþùÏ^¼xñÚµk+++Å…:N£Ñˆ#eee/¾øâ7ß|ó»ßýîàÁƒÍÍ͹¹¹âšááásæÌiooÿæ›oA˜7oÞ_|ñàƒÆÄļùæ›|õÕWÃÃÃËËËW­Zuüøñ?üáÇŽ›6mÚo~󛬬,q;•••¿þõ¯÷îÝ»víÚC‡™L¦¬¬¬ŽŽŽÁàÀæææ?ÿùÏ?üðC\\Ü /¼°mÛ¶¹sç>úè£F£Q©T>úè£Ó§OÏÈÈø÷ÿwooïûï¿Ñ¢EWÚZ}}ýîÝ»7nÜøÊ+¯Ì›7oË–->úèoûÛ‰' ‚(V9½qãÆæææ]»vÜŸàº0ò988Œ=Z§Ó¹¹¹]v…Ý»wÿë_ÿzôÑGçÏŸ½lÙ²‰'Z»‘u:ݬY³F%.qttT«ÕJ¥ÒÙÙyÔ¨Q*•J¡PüíoËËË›7oÞ”)SœgΜ©V«sssËËËAÈÎÎ>räˆøs.v ÜqÇ}}}ƒ7>,,,333...""báÂ…~~~¹¹¹?ýôSzzzZZÚÙ³gÏœ9c6› EssóÔ©Sï¹ç—AN…øì‰'ššš–.]ú«_ý*66VìGñõõ>}ú”)SÜÜÜÄ®³Ù¼oß¾ýû÷§¥¥Ý}÷Ý/^¬¬¬ìêê²f©–––qãÆ=ÿüóiii=ôPFFÆÙ³g­# 555­­­MMMJ¥2**jüøñuuu•••^^^3gÎLNNnhhèêêJIIyøá‡W­ZµhÑ"//¯üüü={öüìg?[ºtiTTÔý÷ß¿páÂË–¦Š”JeFFÆçŸþöÛo§¦¦ªÕêÖÖÖýû÷?ñÄË—/»aDííí«V­š3gÎÂ… xપª‚‚ñX*++;::êëë•Jeppð¤I“šššÄ9¨®®®S¦L¹óÎ;;::üýý_zé¥ôôô <üðÃ/^ÌÏÏwqq™þüÇ{¬¦¦æûï¿îÏp]ä: ŸŸßý÷ßçwÆÇÇ:tH\(޵;88˜L¦S§N]ºtI«Õº»» ‚¦ÑhúmD²\¦¹¹ùôéÓŽŽŽžžž½½½‹¥«««¯¯¯¤¤äÂ… ÁÁÁ%%%µµµþþþb…HHˆ¿¿¿d㣢¢BBBÄÇ‘‘‘ÁÁÁeee.\HHHHMMýꫯòòòfÏžPQQáïï?ø4 F3wîÜ{ï½·³³óÍ7ß\·n]{{ûŠ+¬# Âÿ_ÙÜÜ\ZZªR©"""T*ÕØ±c_yå•®®.ëõ*œœœBBBAððððööÖëõÖZäää7ÞxÃd27®µµõÔ©S•••ƒÁº‚B¡Ðëõ!!!ÉÉÉAAAâfM&SEEÅùóççÌ™ãëë+þä"‹¥¹¹¹··744ôùçŸöÙg>¼k×®¯¾úêàÁƒÛ·o·^­ÁÑÑQ§Ó……… ‚àæææëëk0º»»A?~ü† ZZZ&NœØÑÑñÓO?;wÎh4ŠÏZÏŒ££c@@€xž]\\|}}FcWWW¿"##mW°n)ân â÷xRRÒÙ³gÅ%YYYgΜ™7ož··wGG‡»»»ø3©V«}||¬} CTWW×ÜÜ\WW·nݺ?ýéOâB‹ÅáèèØÜÜÜÖÖæíííéé)îÅÙÙÙÇÇgž‹Åb±XÜÜܬ“-ÅÇ---mmm‚ ¤¦¦Nž<ùË/¿,((pttLJJ’Œ5â nnn“&MÊÎÎ>zôèìÙ³'MštÙ•›››]]]ÅŽ•J5yòdÛ¼¼¼4¸M¥R©T*-‹µæÑÕÕ588xÏž=k×®íéé 8ø¢V«CCCÅÀ!êèèhjjrssÓh4âdN'''///1Ì d2™vïÞ]XX¸yóf'''¥Rðàƒ.Z´hÏž=/¾øbii©u Œ»»{@@€µÁÖ«Õê   ÂÂÂßýîwmmmÁÁÁâyîÇÍÍM«Õ^v WÓC¿9’k\`f®ŠØµž!æ€S§Nõôô¨T*777gggÛ?©-Koo¯ÑhzEmAAACCƒ££cXXØÆçÍ›gû¬B¡èêêR«Õ¶ï[ë^®´Mq¦€Á`°®c0úúú<==ÅNŸ;î¸ãàÁƒyyyjµÚÏÏ/>>~FöûÔhµZ­V+gLœ8Q¬í7ƒTjéîîÿzÈÉÉI¥R]iùùùbPX³fÍÏ~ö³ÊÊÊM›6Ú6ÉÕÕÕ¡DjµÚÕÕµ_kmû$úQ*•f³ùüùó§OŸNJJ².wppˆMIIÏ›m»Rl:uê7¿ùMYYÙºuëfÏž]WW·yóæœœœ~çPŠä<;88 e¦ /r­]`f®ŠøÛ#þ‘ªV«ËÊʾÿþûîînµZíææ¦Óézzz.]º$þ0×ÖÖÖ××òC.‚X¯ ×ëF£ÙlÞ¹sgyy¹¯¯ouuuCCƒõ§·¾¾>''çôéÓ®®®:Î`0466ŠWi¬¯¯¯««3 Wz3‹sùêêêÅ%—.]jjj ±^¶955uÊ”);vì(((ä¢O¢~;/H%vû=ztË–-bÅŸíj¾¾¾þþþµµµeeeb³Fã¾}û²³³%?ƒ===_~ùe~~þœ9sf̘¡T*;::š››Å^k“Äp`ûBµZ-v–Ô×׋¡¹¹ùÂ… z½þ²;/­‘——÷ñÇ‹—X°êííU(AAAWŠVz½þèÑ£¹¹¹wÝuWzzºR©ìêêjll´m­À7ncr €$‹ÅÒÙÙ©×ë[ZZZ[[Å¢Âîîî£G®X±âàÁƒ®®®â¯È¼yóâââ²²²ŠŠŠÌfógŸ}VTT¤×ë[[[ÅßH³ÙÜÛÛ+nMüÁP«Õ£Gnlllllüé§ŸA ™?~ddä_ÿú×Ç‹{ÿÓŸþtüøq///AfÏž””´oß¾cÇŽ™Í朜œ‚‚ƒÁÐÚÚÚïGNd0Ìfó‰'òòòÄ2ˆ¼¼¼‹/Ξ=;11Q\'"""%%E¬"xÿ ÛSÑÝÝÝÛÛ+ÎfhµZƒÁðí·ßnß¾½¥¥E£Ñˆ}Ö#uqq™1cFRRÒ_|±gσÁpàÀÜÜ\•J%þ¹o[© >¶.¯:ÐÞÞ^[[+þôŠó ›ššÊËË;::Ä&õõõ ¼Êõ¤I“ÒÒÒòóósssÍfs~~þÞ½{Ífskk«µýVb2ëèèØ¾}û믿nžÚÔÔ´wïÞ–––… Šç³§§Ç¶ŒÀh4ŠKzzzÄÖvvvÖÔÔttt´¶¶æææfgg·µµ;w®½½½¯¯Ïº¾íº»»­KúýS„¾¾>qÉ•ºgÙh’’09Ù2Ü>ùä“ÌÌÌöövëŸK—. w»pë:pàÀŒ3¬î|||üüüÄqqá¦M›ÚÚÚ,‹8ø””¤Õj#""žzê©ûî»ÏÃÃC­V/[¶l×®]O<ñ„XüúÚk¯‰oسgÏĉÅZ¶ 6455ÆüãÉÉÉ£GŽ‹‹7nÜsÏ=WZZ*6Él6ggg'''‹ xüñÇ/^ìåååìì¼dÉ’âââ~‡°sçÎU«V½ÿþû?þøÜ¹s333§L™²yóæÖÖVÛÕ –,Yòþûï‹×qèÛo¿ÍÈȰž GGÇäää/¾øÂb±ìÝ»W¼FBTTÔ_ÿú×3gάZµJìºÐjµÏ?ÿ|qq±Á`سgÏäÉ“G=a„>ú¨¨¨è™gžñóó!00pÍš5999K–,ñññQ(!!!›6mjii9|øpZZšJ¥ JNN^·nÝ|0vìX­Vûøã?õÔSb±§N§{úé§;fm³Ùlþþûï322¼¼¼¢¢¢î½÷^qe''§ÌÌÌüüü~ÇøÁÜwß}YYY¿üå/ãââ233/^œœœ|Ï=÷9rÄb±”••½üòËâ¡ùùù­\¹277÷é§Ÿö÷÷W(Z­ö•W^ùòË/çÏŸïää¤Õj§L™ò /üío›0a‚F£ùÕ¯~UZZúë_ÿZ¬±Ðh4Ï<óÌž{î9±Âßßÿ‘GY±bEPP >>>O?ýôW_}µbÅ q??¿+Vˆ=Oaššš¼½½­ÿ4 Û¶m›3gÎ06)qJJÂädñ?É_ù!RH^(ffzƉåo¦ùôÓO·oß¾cÇŽÑ£G‹K4MIIÉÀòuÀÊ"ÕoÜot¼»»»¢¢ÂÕÕU«Õöôôèõzqä¾ßE~l_ØÜÜ\UUåéé©Óé¬Cøz½þÂ… ÍÍÍ:NìT·}mOOOee¥³³³N§Óëõ===jµZÜK¿öÔÔÔˆ?3‹åÂ… ===ÖzL«ýû÷Ÿ8qböìÙƒ÷.\ö,K}}}MM¯¯o`` X¨xÙ#íé驪ªêêê ?w×´]b}a{{»x­‹ÐÐP±äB¯×›Íæ£û ’ôz}MM^¯ µX,*•ÊÅÅEœ¶j»fGG‡^¯{G:::ªªªzzz‚ƒƒ}}}­ù¼ÁÂÿ+1©¬¬Ôëõááá …B¬{5jÔe×ü=vÙ—qš››ÇŒcý15;wîܶm›î¨r%IÉS­ï½¯÷ï½!Û”k©# éj¿šÅ»‰)ß³%ÿ÷[èììu¥—Œ5Êz7jggç+Uû ‚`{_éððpÛ§~üñÇþóŸ“&Mš0aÂáǯªÈÑvy@@€í-¹¯´æ¨Q£bbbßæe_ëîîÞ¯m’e¶kÚø ³HF-þ-¡P(ÜÝÝ/{+©¡4ØÕÕÕú©T*ë›aˆ‡|U+r!׸À‡·³/¿üò­·Þz衇Ž=ªR©~þóŸ÷ëÀK®_1’ýÌÀ–™™Y[[[\\óÀØ^´n¹ÆàvÿöÛo t³°â KöÄu€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä®‹Åbî&ÜtÄ®‹B¡î&ÜtŽÃÝ€ktÇwÆ+­00ëÙçç sD6àª2õð6à&ÿám€íÞ¯aû×ùò«ÝÅànÏ·ÇÍþZÞo¤[ðûð&í×Ëˡ3¼ä>ÿüó»AÛ÷ÐíЭ4Èy°óá÷ûôïÞoÃŒìöÓ;ì ^öÿ>ØñÁmuÚo¹Æ…›šLo‡n¥[öð‡ýäÓ€‘}€Ã~z‡½·çñÞ"Í5j€â ÁNwæÌ™É“'+•öË7—ëÞâ ;4Àþ{ÞbÉ[¼TSrý^~µ-¼Î—_ÿ^íñÞÔ½{nÁ7˜¬÷. Ó׸Åbéî‹»ÙGggòˆ wÞyçÎ;ÛÚÚ†XÈ}S«Z†òV»y Þ½±=4€º*«[­Ô‘س=Ãþ}5xnê{{{ß¼ãòˆ ‚ Lš4i¸›ÀmŠÚ ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$€â@\ˆ @qH . Ä ¸$8e¥Ä))ÃÝN0l¤ãÂ×û÷Šf¦g wkÀ0`0H . Ц¦¦án¸¥Ñ»$€âð•?Ôt«R%tEXtdate:create2015-10-12T12:15:18+01:00ÉœL%tEXtdate:modify2015-10-12T12:15:18+01:00¸Á¬ðtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/save.png0000644000000000000000000000013213135434036016372 xustar0030 mtime=1500919838.116648472 30 atime=1500919916.369981805 30 ctime=1500919913.373315139 denemo-2.2.0/docs/images/save.png0000644000175000017500000000362113135434036020245 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR;ИgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYs  šœ]IDATXÃí˜mhTÙÇ÷e&3“LÌL¢1j*R(bÔÅQ!²6©Ñl5ë¶XQ"6~P·Á…ň6P|ùPE¤A쇂+VJñC+]SÝ1±YšºneE,QkãäÎ};çôC’YfãÒø‚Ié>p¹çœ{ÏÃó?ÿÿy΋Öß߯ø?1}¢x“fŽ.\¸ÀÖ­[_›ãÖÖVÖ­[‡ahš6Ñ8ÐFe‹Å¸Ú“ä_ÖS>ûè7ì{¿Ý0PR"- tFê¾M%‡ßšŽ sì÷WøaíNúž>ãç•ó¸ÿ>¡PÓ4_5Î×bQØ*ɽ~ÅãG}<í¸ C Áw]È #S)Üp6øîP …2 ¬Á$J úýŸÿýs:ov`Y¦iNN°JiH! e…èM /R@ó*MòÑS¢Sr²ÙñÖÃ^4%I…âµ ®§j8çyž‡”r¢1>¬/%Ê”dG –øÕ ;ûäÃÑué»#ƒ7¹}F66é¼:Bøë¹öɤ%£³³ó…˜ `8Ž;Ѹþ;X©4¤ð`Ñ¢E/ììÒ¥KÃ~ü±`ïܹÃþýûéèèÀqJKKilldõêÕo l†Œ¥-º$//ï¥*¥PRŒi¯­­eÙ²e$ îݻǾ}û8uêÔ ß`ÖÑAŽú¢2¶m;]žb޳<`ýúõP^^NyyyÆ?±X €¢¢"Ž;Æ’%K(--%‘HÇxòä eee$ \×eÇŽ\»vÙ³gsòäI–.]:>°z@ÔÀêí})Ÿ?_H„ïù¶wï^–/_ÎâÅ‹™7o•••TTTdüÓßß”’ŽŽêëëéêêbíÚµ´µµ±{÷nÚÚÚ¨©©!‹±yóf6mÚD{{;W¯^¥¡¡ëׯk|;¨³7ïs+щzÖ ÿþ ÇqÆ2è+LĘ‚eYs§RXRÎ¥ǧŸ¡»»›x}:ý½¹¹™ÚÚZ”RÔ××gô­©©¡©© Ã0X³fMºýøñãìÚµ‹¹sçRXXÈÆÏ,(|ეXÉ$?ªZM(â—÷óøÑCù5}}qRvÊbñ²r>úçDŠ ñ|›°©öX°UUUTUU}k uuuÔÕÕ¥ë{öìI—===cúäççsæÌÆk™ë¬¥ h ×CááFG-ùlÏ–i<*Ñœ\Bá0£'Ö¬I|yðR ¤Ø) )žçóèaoúôâº6RødçD™6}¡Pß÷0”‹SŠ,í`»Øý—Ë0äK<×!eYX–…ðE:û:vŠX¼€©…Ede…p)®ã )Jˆ— æ½rå ëÞÿ)•?©%šgÖ÷@⳿2kÖ,êñÓ†Ó{vN.ÑèL3À@ÿî|qǶÉÁ@¸6®.Q#¢ž,×1£–ÞTø¾Ogg'«V­z%‡sß~‡Üü3---TTT››K(šhœ™`•R!H¥R¤R)¹•OWÿúLÓÂqœ_?ªÞ.ñì³ÏÖñÇžLLŽ5 \W È2Š* …$‰þ¾+\dE"ñ¢‘r¢‘'…CÈ’„¦i„µŠ¢’NÌs?ü©TŠH$Râíîîn:::#‘H°ÿ~vîÜù•’ô=«ú©;¢È ããhZ„¼a I2ªª ¸Ž‡ ‰jXÎ4æÔÂH²„ð<\OàØ.÷ô žËåPUY–‘$ Y–9{ö,GåĉÔÔÔpõêU‰ÅblÙ²å+#l¯º®‹™Y _/m/´ï‹—T`Î¥²²RÔÖÖŠÎÎߊ‘‘¡ëºX»v­8}ú´ð¿©ëºèééëÖ­ÆÑÒÒ"¢Ñ¨X½zµH&“Á½¡¡!±qãF‡ÅŠ+DoooQ¿C‡‰òòr±xñbÑÕÕUtO×u( ds&}ÿºÂ—(û–Šë9³A!Žã`ÛŽí!~²ã§¬Yó ñxœk×®Q___Ô§¾¾ž†††¢¶h4Êèè(8p€3gÎÐÖÖÆ®]»èîîæâÅ‹ìÝ»— Ÿçy ÒÛÛËáÇٺuk‘²jqåb9þýæu-ZÈðÍ‹³"èÃqÜB±LË"ž"odîgþç{Äž={Ð4ææfV­Z´_¸psçÎÑÔÔP²´¶¶¢iÛ·o§±±1h/Ùg}¼74Ê[o]ÂÈg‚mÄO!ýúÁâ·9ŽÍ›&–ióîµa–=UID‹PUUEÑ÷úûû©®.Mb>o`Ñu]×¹wï^Ñ}MÓP¥H„’}ÖŸW޸Β%K¸yûM\wF)ŸÈLmY6¶]˜®¦i“Ï[ä #›c:k`dsܽ;ÉÛW¯óýÊJ***hnn¦­­d2‰mÛ$“IöíÛGKKKQÐÇÇ4M:;;Ù°aCоiÓ&ÚÛÛÉd2ܹs§H½/‚/h‘gÇnÞ¦¡áçXV!™FG€'â¸h]+Ãü ¿¾tÑ»u ëIúßÝã¡÷õ#Óþ™|Â3:Ýâ Ú°}²\¼¼¢ÅÚx⢎·w Üë3«äÎÀ2‡ƒ˜t‡ŸÕ~ìå…‡ëжC›>bžÖß?ÒK„Z»Y tEXtCommentCreated with The GIMPïd%n%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/CustomOrnamentsPalette.png0000644000000000000000000000013213135434036022114 xustar0030 mtime=1500919838.093315139 30 atime=1500919916.373315139 30 ctime=1500919913.333315139 denemo-2.2.0/docs/images/CustomOrnamentsPalette.png0000644000175000017500000001605013135434036023767 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRIDƒP•gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>øIDATxÚí]w|Õö?3»›ÝÍÖt²!¡ „^CˆE@ÅŠ‚bç§(DDPŠbAž (JR•&Bh!€(ˆ E }k¶ï”ß7†ÙÙÉf!fæk>¸{öιßû½ç̽s§a4MCrä€"ê?îë?C¹}0÷@¢Á`0"""êš•"î^¯·°°£iú`îN;Ëåòº¦$B„ˆ» ƒ˜Ø"D40à¹r †º¦!B„ˆ» Äcl"ðº& B„ˆZ˜Û"D4Lˆ¹-BDĘÛ"D4Lˆ¹-BDĘÛ"D4LHëš@è°WTTØí>¯¤R©Z­Öêt!øq9ÊÈÈÚ`HÓ´Õju:AH¥R•Z­Õj1 «[ÝÂA5EQ€ãxµFõ5·ËÊÊœ‡>*Jã¸Ñht8!ä¶Ûå*))iÚ¬Ym,).öz½qññ …Âãv—––zÜîø„„º¯î•iÀ¸zåJ ŸB“¢¨¿®]€è˜­V‹Œ6›Íd4@J“&¼é]/çä‡Ãa·ëôzN'‘H0 S*•^ã¶ qµ–HÚl6·Û­T*1 S(•QÑÑN§Ón·×±|u­Œˆa2m6°[õrÜ®¨¨f*•J¥RÙl6‡Ýîñxš6kFÓ´Éht»ÝÔ¸1x<“ÑH’$†aR™,!!¡¬´ÔårAÕ¾¶qr2I’³™$I@‚ãú¨(…Bát:+l6—Ë•`«¨ð¸ÝR©4&6ÖåtVTT`ïA¾Óá•ZÍXÔ*•±¼Üa·«Õj‹Åât:½OrJJII  Ñjív»Û劯¨¨ðx<‰$6.yv»ÝV‹…¢iŸ×+“Ébbc#""‚'ær¹¬ IQ4E)Ѝèh‰Db·ÛÕÈ« G½ºŽ‚°gˆ̃ŽãÑ11(™MF£Ûår:è§è˜˜@sòz9nû¼^‰Dâß$­V‹Ž@ð˜ØXŸÏÇüZVZêóù''ÇÅŹœNˆOHÉdдY³¦ÍšQU\T$•J IIIIIR©´¸¨ÈãñX-è%%%.§“¢(¯×[TXh±XH’$Âb6û“ôz½hNÁX0—H$^¯ôz=MQPZRB‘$`˜Z­& p‰D£Õ*•JŸÏÇx./+#"111¡Q‚Çã1›L$1—ËUR\•”””h08£Ñ5r”‘J¥þê‰ø;¡Õj£cbÐgvb³G8êå¸MÓt+R†Qe6™tz½!)É¿€Õj¥iZWuЮÓëív»ÍfK4nÞ¸"Çq‡Ãa,/—J¥‰ƒÛí.+-%‚·º@äÙ_%&MûX ú×áp0ž“7¦iš¢(ÂG²I¬Âf€¢¢"¦ ·ËÅæÀ[cMÕQÛÐjµì;22R ±¡žæ¶L&óx<Eá59ÆŽ‹/+-µZ­v»Íi9Ð’»DZ©‰T*öÈ,ÆX^Ža˜D"Q©TeIºÝnönˆ¦i’$Q"1À0 0ÌŸ §i^Çl6c8®fMòƒ$F’$^q TcMÕQÛ°ÙlNÖŒÉétÚl6ô®—srµFƒšÊXv{Qa!ó•36"ø|¾¤¤¤˜ØX’$ËËnKITÍB™ ÍWeÒwèHÛápÜ"éporV‹²²2ŸÏ— R©jº­,"\·ÕA‚QR@=Ø‹g‘U'&™¥5^ÔËq[£Ñ¸œN«Å‚a˜F£Áq­™€T*õù|F£122W Œåå‘))jµÚl2I«2 ªv»]©Tj´Z‡Ãa³ZcbcÀjµb¦ éœ9"é°ÛÍ&“L&“Ëåè Y©T¢SMÆ|«ÕÊžG Nç°ÛååEÉår‚ *l¶„F„·b+#‘HxÕ«ïà]âº+§ýîpñŒŠ¢˜ÄFÇØLª›ŒFµZÍ;ç’<ùä¸ä””Ú®V¡R©pwØíf³¹Âf£(J¥V+ 4öz<I*•J‡ÃAQ  T*Ýn·ÕjµÙlhY"‘`˜×ãñx<>ŸO£Ñ(##‡ÍfCKñhÑØl6£AÏëõªÔj´ªDÓ´T*u:hâMÓ´R©äDC´Õf³˜Ín·[£ÑÄÄĆ€Ùdb|FÈ剄©Åçó©T*¦äY*‘¸ÝnÂçÓh4·› ŸÏçõzƒ!¦R©"•J¯Ïç°ÛѵF­Žˆˆ®‘­Œ22Òãñð¨WÏa±Xüú¨¨»îó=3§$™Å3¹\ŽK$¨ûtz=ïâv g¯Þ½kM="DÜÜC×¥‰qOÿÊ3áÅѺæ,B„ˆZ˜Û"D4Lˆ¹-BDĘÛ"D4Lˆ¹-BDĘÛ"D4Lˆ¹-BDĘÛ"D4LH ¢Â~ýæõ2c™Çã©k>õr¹<.&.¹q2ÐP‡º… {õBy¹\ŽÈÙ¯‰–Éd©­RÌ=µ ‚ .þ~ÝG]‡º… {õBy‚ °9û½Ñ?»?ºõ¿®)Õ  ýŽóx~âDÖ€¥¥ew‘ È¿Ñhòÿ h tCÛúÿ½ùÖ òåFce£ÊÊhš¾^©Œ+Ãji0˜<åͬ¿ør…°ò!ô…+‚éÇóÔÄçLf3c9uúôÔ·f<8bdÿûñØãïÏÿàÊÕ«ìMHŠúlÉÒ!ÃF òP  ÝòâÜùóSþ=] @P{ÁIÑYÕÛ3gÏ9qêÇGG ?ö_v‡ãБ#ïÌy¯´ôÙQ#¹+{—…7¿Y½fè!œw àh~þGóç_úý7ô•®'û¹âl{¥V‚»m´í¬Ó9IÕëôå mjê'.Ðiµ4MßDÊ<8D¡ûo “ÉüÓ™3‘‘‘¹yyÏ>3^@ùú"Åü±jíºî]»Dé+ÕX±rÕêuë{õèñÒ¤çt:]qIñ®Ý{žyîùÓ¦öëÛmrþü…M[¶>óÔ“iíÚ¢­ü-(p0ï¾lžbÁ@0R„ áΪÊmÀ(Šâ%±wÎÑüã_.ý¼uË–Ea6xÐÀ?þdÙŠ¯ß?HÒ£¶!H ‹Š"•‘Z­¦r÷)Öw·×?²膌ééq±±»@yÐh4;vä¸ ÔÀji äæåá8þÒ¤ç>øø“ó/¶MM­VùÐ$ ²GNç–ï·­ürºä#7ïÐêuë§¾þÚЇ †`6âá‡~ºèý6IiÒ´I 8œ:äŸQQQhC °ÂãÀÁ¼`ÜjÈð¡C¿úfe¿¾Y¡)_ÛÁLgU3noؼeð Í›6e?û±Q—|»ióºÿ~»tñ¢%Ë–û¼¾¥‹Àö]»6nÞZV^ž’Üxüر½zö@›x½Þ•kÖ<|Øh4)•Š6©©Ç?Õ¢ysxcÚ[0|ôc»g7*È9–ß7«7EQè< ü̿ݸéû;M&“Á`÷Ęþý²«eBÓôêuëwìúÁî°wÈhŸÕç6ŠáΣ(ŠóŒt¶‡ÕëÖoßõƒÝnÏlß¾oVod<~âÄÔ·ÞÞ¸nM\ll¥2£nS&9¹{vï6p@ÿÅK–ææjÓº5²û+ïo ¶íعqËÖr£±q’á_?ŽöõEÅųçÍ¿xé’!1qòK/vhŸÁáó¿½ûš6I‰‹CœW®YÛ¯oÖs.yõÅNÿôÓú ¦½1…áöð££9lÙvxãöÄ©SHíy,<ñ‚!Ñ0ùåÛ§§@×ÎÞŸ¿àì/ç2ÒÓBQ¾*8 Nžä­âÏË——¯øæÂÅ‹4ÐimÛ¾4iRãÆIÁ¨²Ó7qØÀ•Û”–•ýyùrvŸ>hçÄ !>~áü¹™í3`á'‹2ÒÒ&Mœ@ÓôwÛw,^òEÿûú½=íß-š·xûÝÙÇOœ@›¬X¹jË÷Û|àÙ3gó4¼ûöŒ?˜,~hš>|ôXïž=My™oÚ²uù×ßôËîûöôi­Z¶œ3oþ©Ó§«e²aóæ•kÖfge½5uªJ¹xÉRfßÁÒ.nL·ÛítºØÌÀ7lÞ²rÍÚ~YY3þý¦J¹xÉpû{Îx• FaQѯ. 0@"‘ôêÙ#7/éMÿþ¹¾Û¾cÑçK²úô~ç­imSÛÌ™7ÿôÏ?Àû >èÙ½ÛÔ×_s»Ýsæñ0?z,¿Sf&¢QRRzí¯¿¸Aþ%ï8°àä©àÙ2á¤[tÀ<{î¼n]»L}ýu—Ë5gn¥+Ç3ÒÓæç‡¬|e‡òUáp8¦ü{ºÇã™ò“§Lžl4™Þyï=FUÞàG~ØéVmxH0þÑ©¸¤ââbi¿N¯×‹fA ùçð¡¡7H®Z»vÂø§õ(MÓÙY}|>ߪµë»ué^Ÿï…ç&:MìµZÍô™³Ìf³^¯oÕ¢d¤¥EEé)Š"BÀÅbñz=q±±4MÓÀ?í!b݆Žþ³išî×7Ëd6­Yÿm§ÌL&*•ê¿6 }pÈä—_¤(*;«Ï˯½~ö—s¼ÊTZ°jæØcŸžÀ±OxêÉÇGòù|ÿݰq覮,N]èC«–- #=-J¯ç½b¹Z›wH­RõèÖ•¦éû²ûæä<÷ë¯éiiÀQž×H.F³zíºÃF"gõî}åêÕ}9`èƒCÆŒ…(½7ÅjÕ±ÞYEį. ú"Œb,É`à埒œlµZN§R© †-g9Œ[B½zô@„I’|Á áÔÖ­Žæè_¡`‚“¯ŠÓ?Ÿ±X­ŸM~%%9'%mÛ¹M?òäEQþÍç@pNNÓ ‘H4 ³}{ÄéêµkV«­CFºÍV tïÚåÃO>%IÇñÿ{ù%´G0›Í×oÜܽg áƒ¤( )M_…ý;^ЧW/ÔDÀŸyaQ‘Õjí×·/sÑ?;û?_,CÅ1),*²UT П™Â ìß_8·¦dÈ8wö,½N϶£åÍÂ"[EÅ  Tú€!IR`bÕ-…8x°WÏÒÛ¥)ŠÜC‡ÓÚµŽò¼–@r]¹zÍbµÞ—}Kä?\p¼ `Ö{s»u錌ñgs+,*òx<Ì„"…ŽZ‘‡`زÃ#8· a­VÃ&wõÚ5‚À'OI†D…Bññg‹6¬CFzófM§L~Õçóýyùr àç¤oó9¨\K㥠……E‰~ïŽZ¶âëòr#Èåhà »že2§¤ÓéT©T§~<½~ãÆó.h5ÚäÆUªH¸µÞxÛð+ìçȱüç&Ÿ…M ŠoZ­ö³®Z³vöÜy$IvÌì0i„¦MR‚ùaÒ·ùTŽÛ¼Ë}ñqq)ÉÉy‡tê˜É¶ß¸ysóÖïÐ ã:&:fNŸ–Ï.,—ËMfó´™ï 0`öÌ·5j5MÓ'Næ>ÂÁ~œNgiYiJr2{âß¶èè(0™Í ñ•Œ&³\.W©TLÐVååÆ[[M ÛXõ Ô†\ÔÆÛë2Bh¹-Hãà¡Cr¹|á¼¹¸¤ò;ç~ýuéò¯~>s6³Cû@þ‹Ùb $WLT4˜Í¦ …EE.^ÿE~n̈Û$%å{÷uïÚÅ_½½ûsztë*ÜÝŒÅår1áQ#·Â„é@ç‚æ'N1Š¢š7múþ»³‚8{îÜŠ•«ÞzgÖÚoVµÍ÷‡ÐZEQ޾gß>f=¿Y½Çñ~YY·|ÓtB|¼N«µX,­[¶D/^Ú»?Çñ7nz½Þ‘#†É¤R—Ëåv»:s†Å‹ÒωS§zt놦LþÒ,Zæà¡ÃŒ%7//µu+Š¢˜ÄÇÅétºœÜ\f«óxý3jV»”hkT×~¿ºxSš„0ܼCÝ»vm“ÚšsÈàÁ2™¬rÇê/àí¹5JÐj4y‡o‰üÑ¢Ï6mÙz›C¾B'ümö &œÆ{4?ÛÎ]œØ[²ìË¢ââ'ÐÛívxë–ãóö¯¶ »L&SEF†Œ+¾*þøãÏÇÆ>i6›I’lŸžþÈða¥ee.—K ø«m¾?ª¹Wdð ÇŽÌœ=';«Oz»vN—+¿ àÂÅKãžÓ¨QÐtåÎ Çñ±OŒY²üË’Ò²Ö­ZüqùÊÆÍ[^{åeš¦SR’ Å'Ÿýgȃ)Š:ùãh©ãÌ/çúöéîtÏ?q2)11#=MÀϱü‚ÃfG?ä9ªfM™ EVï^cFZ¶âk ÃÚ´n},ÿø™³¿ µDa&=:rÙW+0ÏHK;šŸ³¨Û4MW»–væìYßy»tê„ãøè‘,_ñµÇÓÓÚ9vüfámu¡H™ã' †Dtb¦F4.ýö{aQÑÓOŽcϤRi×ÎŽ;öÂs9ÊCÕS‹°\ÿóøÒå_ÒíÚ´9ýÓOç~=?zä#ßnÚÌ„Í7il”/—ËKKKÑRôîÙcÜc>ÿbÙ‰“'ûôî¥ÓêJËJ÷çä^¾zõíiS“ †ªå®7Ž…Á¸­òÀO¸´´´iJJ UÌ`€åù¶*'%y}¾y ?4`€Óéüvóæ´víÐà(ø9~ü;ËŸC5ç· ‚˜=sÆŽvïÞ³7ÿx`X³¦M§¿ùFÿ~Ù'Oq´öЃA|¿}ÇÖmÛ ‰‰¯½úò ÐaçΞµì«}ºH«ÓÞÿ¯¾øÂ¤W^Í?^Õ»Wj«V™íÛÿgé‘J况«ùq»Ý\¾Üªe V×,ûj›pB||Ÿ^=>Œ Éí»vmß¹«qRÒ¬ÓÓÚ¶%IR˜ÉÈáÃÜn÷ÎvïÙ·¿SfæÌéÓ^ymJ e ˆµ´}âÿÓîmßÀÈáÃ<ÏŽvÿoホ3gNŸöÊëSX]HÓ4]©ÌËejDãàáÃ2™¬k—ΜŸúôêuìxÁéŸÏd¤µã(Ïé a¹†}ˆ$Éï·ïØùÃn$²Ý„ÃC¼Ç3 ¹ê\·0¡QSÈd²ÃÞ½gïøqcëšK@ìÞ³÷‰ÇF3Ó=ê…òBç·E]u«@çv8Ðö¨GF¼:åÍá ç>¹0Á¥ß~Ç0¼g÷î¹ a¯¼Ðùm€¦au®[˜Ð Ë?_ìr¹Â“vÛ6©ï¿ûŽÿÑ;ƒz¡¼˜Û¡€®:½Y·º… ÐÀ{x& "ЈP/”ºWDD T.ŸÔµnaBãD½P^|Îi(`_>QçãvÓ¸Q/”—Žãh¡?lY†0 ó¾YDÝê&4îAÔ å+ß= ×éËMåQº(t&½–dûï–L?wQ} Ãlv[||<¯[ø°¯O¼»4î.jªjíå@íu·?î\yzÁ&*Ø$¥Ø(‘¦éâÒbáõƒ = [ü Ü-oAzFϯ@ŸnûÊ2ÞV’Ï«^§7$Ð|LX7ÄŠý// ÃxË`ÌlÂXi„=ï¤OƒÙPØÕqºóïTŒ¯<ð÷>Ô\yvGÓpN1žÈaðÄ kN;dvD×?†ÜIð÷ÌUþþºHª®­V·Zš³Ô”Æ£n'Ÿá3õ Yùšr«¥4åõ¸½a÷zðz€0Ñ-Lh܃gå¥pÝ”+B„ˆ,|æ9"Dˆ¸‹ø3™xÔ9GŠF%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/DynamicsPalette.png0000644000000000000000000000013213135434036020522 xustar0030 mtime=1500919838.093315139 30 atime=1500919916.386648472 30 ctime=1500919913.336648472 denemo-2.2.0/docs/images/DynamicsPalette.png0000644000175000017500000002237013135434036022377 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRíHTp:EgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>#ÈIDATxÚí]i@G~w’nðæ°åòâô.Þ¢h=@ijêçm­­Th«Ö£«¨­„ ¢Õj=ZOnëUj¥Özà·hlå$›Ýù~,ƘcÂ&`³üØLfž÷ygßÌÎÎÌÎb!àÀo,ð†Àê¾â(.n]C‹áÀº­üC%$¬èر“µµuCËãÀ}ñ0ÿAjZZÏ=Xä<ûûïS§L¹{÷.»RY¤•ÉdEEE…EEóæEÑ)ü„„õ“'O±²“$YSSÍ®t8p0*p £(ŠMBG±ËÉ.-ŸÏwsskÞ¼y||Ý”óÅb1AìŠæÀ€nY$äñx!Ö€°N+Z¶lIóIRήb8p0 p7·þ¸Í›5‹‹[Í·±±©®–°«˜LÇ)#ôÇÙå4-ߢö€¢(n 9ÞPà8ŽXíäÖ€°Ý7- >׈sàÀáÍŽãÅf#ör„å†ÑH´4¸vœo0pGÈýqV9GKƒoŒ™Y8p0 XŸç¬È6θ ë´4¸þ8Þ`°>ÏY;Âvè“–ÇãI’:ÕÁGˆ®)çИ°båÊ;wîþ¸}[C áðÀôóœCiûêØÑ#†Ñòx¼îÝßáñð«W¯–¼xA':8:úùù‘$•sîw榜Ϫ˜3ÂÃï]»žžžUUU–––žžž3fLïØ±cªzòäŸ'Ožˆ,ÅÜŠX:ÁþºÃzôÇ™ºÛŒ´$A „0 ÷÷¸råò‹/ýý!RF†1Øå#ãÌŸrx#šš:hÐàû÷ïŸ={–¢¨òòò¸¸¸±cÇÍûQdddC©ŠÃqsàrà@ƒõþ8®ßA•é«J1ÓÊI2;;;44Çñ€€Àû÷îyxzEQÙÙÙ––">Ç †âÆUÌЉIU%Ÿ‡ÏÿìÓâââÄÄïúöíççëÓ ’è­–Tq‘Ɇ±¾îð儤Î6ÞmÔJ1Óâ.“J322BCCy<^Ûvíär9I’2©ÔJ,fÖƒÓã*Ü¿Ùþ+@¤zï½ñ¡ŒŒ œÇ{oÂDO/ïð‘ÏŠ‹÷íßرӄ‰@Zzú¤ÿýÏ»MÛ_™ °cĨÑ7òn"€#GN™:Í»MÛ“§N͘9«c§ÎÆ¿výzBbb÷w‚úõ¦‹LM5ÚË» ý|ڥ˗ߛ0qÌØqƒ¿›¼1…æ¿’›>2¢wŸ¾C͘9«ÁëûoÀè¥×²øÏÃq`ÈPû{Ñ#±N´öövRiMNNŸÏ>ŸŸ““#•ÖØÛÛéÃò3þhݺ5ܼyÓÂÂbóæM"‘¨wïÞnn­‡ngg÷óÏ{ÄbqXXØ¿ÿ>¥(ÊÕÕuòäÉÁÁÁ=JJJ¦§×£¢¢ ÒÓÓwíÚ•››ã¼M›6Ó£73gÎ:uêTyyù­[·ÃÃG&$$?~ü89y#Ç ¯¨¨@ÙØØÞ¼yë½÷&´k×6##£iÓ¦ëÖ­#9DEE?xðà?þHNN>uꔥ¥¸¡ëŒCÃàeœMà/jmZŸÄ:ÑRåîî$—Ë@.—¹»»3¡íâ½^…û7Û^O¬®®Æq\liÜÿÀ2™ôøñã}ûö …’* ¼|ì {÷—ÇÄ@aa¡@ „~=~üÈáÃååå÷îÞ€‚‚¡P¸ß^¸páÂÝ»w׬Y...7nÜøþûïéltqEßbóæÍr¹<2òcŠ¢>ŽŒüñÇ펎ŽŸÏ¯ªªZ½zuÓ&NY™|>¿á«‘ûoˆÿÚvœÕ¹b#mÿµM¶‰u¢utrêÒ¥ †a$Iž:uŠ$I útéâèä¤S !Ü„¥1–‡€§§'††–}èüù?SSÓæÏÿL.—£×Æc@NÊ-Å–@QŽãàêµkß~û­µµÍÈ‘#•Óé«keeEXXè‚ „B¡ƒƒCÏž=”³)pÿþ}°··—ɤ:wâñøI…P\ܺÏ>›Ÿ””´ÿþåËcÚµ¯än*ÍÌóœ#ÂGª'¦¥d ¤–èœç ¡žÈPŠ™–ÇãuêÔ£(*##ãÅ‹çÏž=£§=;uê|ìèÝë¹Vœ(úæ;wcÇR õîÕÓÆÆ&99¹¬¬Ôßß_ZSóZ/^© âcTT´L&˽rñWë^”²Q$‰+õ”•³µlÑ"//ïâÅ‹þ€)¯Ý%ÿñßgefdfeÍŸ¿`Á‚…!!!ª8˜èþ8=Ú¦?tÌê7ÏYWffZ„H¹\N¯N©ª¬lÚ¤iyyyFFÆÐ¡C)Š’ËIæp®?ÎáÊËË“’’ÓÒÒ§M›Ú§OIU%‚A!!ûXµj†á:-¹\^RR²1%åÖÍ› ´$¦®?~ü¯'NDGG/Zôy³¦Mÿ¼p¡_ß~î‹/0`ÀàAƒbbb\\\,-ÅDYCW‡†ŽãôÄ Fh|í°‡»!Ýq®+§NffZŠ¢¶mûlmmÀÑѱ´¬tëÖ-àâìÂÓ±îBg¿r9¼ˆˆ•ŸŸ}úô)--EyxxlÙ²eÈ!2™”×vs†š•!“Éè^A|||aa!Ìœ9síÚo¢££àñãDZ±±sç~´`Á‚+VìÝ»7*jÞ©Ó§óóógÏžíìܪ¨¨¦Nù1ìÝ»—ÖPPP°jÕ*¡PðäɈýðÃ9‰‰‰ÉÉÉÑÑŸ´hÑ<$d³‹ †ó† ­®®öönóõ×_SFÚDŽC£ÝÇ0­M˜ÆÕÌ ²Úq8õ¡usuå MœšØÛÙ«$j®‡âgÏø|p0WXÛØ*öp ½¡(J&­¡_õG’$ÇKKK»zõÚÚo¿­(/SÜ߉D–B‘B&©ª‹­,ÖÔÔÔT[––bDQ555–b1†a!£HJ(†!©ª[YYX¡êj †ã"‘% $•JBB‘ðZ* P$¢·§ ™´¦!deeópz<±¦Z¢Ï]‡ÿªªª®]»ÆÐŽkëfM›>xÏ®T#ÑÞÈ»ÍGˆàÚqóEeE9÷£F½sêä©}ûö2™ò ]MMµò‹¹%’*T)>2!“Õ—É”K½*RU𪈴¦æÕ±ôÕ1AÈ⪪ʆ®98Ž39Ô/@XnDKƒÛ_…¼½½³²²×¬YݼEËÊÊ .T84*`ÆçóYnÇu €4*ZÜsù˜°fõ*±•ŸoQ-©2Ò+©8p0–––¶¶¶R©”ENÜ8 ®‘hipûsÐIUUýI8p0 [«é\¯Ò¨hipïâÀà ''§šššââb¡PÈçóëßš¿‘ã*B¡Ð¼8pà`ЛüØÙÙåççK$fºa½Q.8pà`2Èårkkë†}ùICáJn.pãã8pø€$Is~†€{”“Þlð) ?{þ¬>kw„BaS§¦®.®À›éÍU¿™«e_!縙;e¼ª7À.]¹daaÑÆ«M}&Rårù­»·ä„êÏfzsFÕoæjYGãWÈ9næN™Šz;uâdTT4vøØáþ}úÓ/ª0˜Çq8wþœT*­?›éÍU¿™«e_!縙;e(êíò_—¢¢¢ùrRŽã¸L&«)I’Ž+l¦7gTýf®–u4~…œãfî”  ¨7µ·0õ\µ¢²öÞØk`X7gTýf®–u4~…œãfî”  Roô+œë[w½zÕ— ÎëæŒªßÌղޯ¯sÜÌ2”ë jc­ Xa3½9£ê7sµ¬£ñ+ä7s§LE½Ñà@ý·XAñ0žâLûd°nΨúÍ\-ëhü 9ÇÍÜ)@¹Þ€î³X}ì²™ÞœQõ›¹Z3TÈ9næN™ ì´ã4  ÖÍU¿™«e_!縙;e(êÖ†¥ }ت$’ä”M9çÿ¤(jÑüϺtîdTs HÈ©5¿BÎq3wÊP4ä:úã2‚ؾcçé3gŸ>{Ö¼Y³aï52\ý-Jµ z\T ‚øh^TþÃG ëÖ~4/ú‡;;wªó.eú›3%á¤i3þ~üøô±#ÿyµ2™,=+û—#GŠž<‰D­]ÝÆõN÷nŠ …EÇ~ýuÜèÑ––"J(ŠJJÙtäØqAÉLטbÔú|S`€ãþõ×gŸ/NÝûó½û÷?û|ñþŸv5mÒ¤¡ý¨³S´êéÝ»u]³â+mÌu BèŒö†­7| ˜b"n}Âo¿Ÿ›ú`ö¨ðt†¢'EÛvì 6T$Ò½»}Þ­[û¦NŸ2¹Cûv´9õc×盃oëí÷Í;[ÛFX]z:µlÉ";;;å;[;†üu BèŒö†­7|À€¢(ÕQV^þËÑcŸÏÿlðÀ¡žAA"¡p×O?Ïœ6Uý¥µ ÚÙ€$ÉŒìC0lÈ’$W}µœ¢(Ãv›ÔÇœ¶‚A#2´;ÚÈe2™ºžú¸¯?¡jÿ~üøì¹œU_Åô ¢( ðÁ!W¯ývÇ®Ý#ÃB x¬ƒÞûøÐ!ööô3Ùê)uRø†aŽ#„lll:4ÎêÒÓ)_Ÿ&NN*õq§>.×)Ú¦Þ@ÑטïߟÚÚØø´oG7µE¹º¸Hª««««Åb±F^6¸œ›[VVfiiàç AÔÓ fs* âÔogöL7zTÿ¾}L@¨'ùá£ÇŽÿuÔÈð^=‚ôó7ë„z’—–•@Ë-är9B’dذ¡†Éd2úõRô]ðȱãàä‘_àåÝ©ßÎ[ŠÅíÚxOŸ:ÅÓÝ]‘yÄ豊Ìê)œ¬ô̬½?îâÜjâøñýúôþó¯¿,^šœ¸>)e!#’×@FvöÞýŸ»¹ºL4)èîpÿÁƒM[~¸yëÔ¡]»fÏvqqÖFk@õÖÌŽ#„~ܵ;#ûPeee€Ÿ_ï^=èôó.,X¼tï®ù.X¼tç[ÖÆ­Ï»y³eËóæ~$°Ä·áÑß7oÖ,rÎ uÕ)E©_Ôs¯^‹š¿`íêØŽðÛÙß¿Zµzcb‚‡ûÛ*AHŸý‰ë7¤l’Ɉ‰ëbRÑNÓnMI^·>ñν{M›8Mž8q`p:3³‰´ÌÌýÓž={æâ⚇ÚùÓO_®Xñ}r’6Ú?0t:¾gÿm;vŽ ð÷=yú·Ä¤t)EÏ‘>X²lùÐw‡’²eë—ËW‚ñcF;8اlÙûõ7~Þm2ôqŠN¬©©‘Hª•Ó-,øþ~CŠKønËÆ$B.OLJž8~œ‡ûÛ!•(¢_·¾k—Î]:wB1Ĥ:£¦¿hIp¿¾cF<~âTì×ß89:øcØÓ±4vT„¯Ï¹œœ¯V­±·³ð÷«É1£½½¼Îž;·4fùʘeݺtÖV-4øôAÚª¯¦¦†>¦(jmÜú[·o'%¬gjæ´³¥lHœ9ïÚáa¡ïϘN’¤â~¾¾ÇOœ¼~#¯c@ÀîŸ÷¾Ó½Ûõ¼¼œó>v:t ðï¨èû{yz€¯OÅÀ!#>˜53<,”&´µµYôŲ’’R{{;õÌê)uRH’ä;w6gÖL„P¯=ò>tȈÐátמ!&&tF;]¶O¯žsÞŸ…êӫׇGíøé'úê®Í„õ»vGŒû 6–‚<|tìĉíÛmß¹kæÔ)ã^Ť|ûÎ]]u-êÓwýø†)gsr6ÄÇ·vue²d`«¨¨¸uû6´o×VqyP@(<ñJJKV}# Ó22Ÿ>{VZZj@Œ¢¨ /LK»xù ´õö3:¢_ïÞ†i{ÿ[„¨•ËåVVVS&N˜4~ܱ_Oì=p0-3+-3«{·®aaþ~Úf#êOhXo×ýí·7&&<þâÊÕ«—ssÏÿya߃-š7ùb‰ÇÛo]!Ê5ùBH&“•””<.(üåÈ1 …RϬžR'…ù•–•õëÓ[1p·î›5r¹üú<ðó£Ó>zTVVîïëS^^AgëÖ¥ó7qñ­Z¶‰Dë#FŒð÷õqû­Oç}LÄýùiUTW¿Šmõ•õùV§ã…EOÊ+*B+v Ø¿¿ÆvÜ×§íÝ^«|$I²ñ8¥È»|™½½rzÓ¦MB–"Qäœ9«¾YKQTbÜ·µ «Õ¢ˆN ð÷Sœ>†˜T¶Âítæþýú*hC'¥l¦Óµ™Èô¨´´T9–â¿YCò‡•••ùùú¾ŠÉ®¿YO’$½Q­zµÐàë3÷]XT”–™³tqk7W¦Ÿbšt¾s÷!—@û¶m5v%nÞº ¡Ã†â8^RRòôÙ3xû­·´žZíæ~9z4.á;èӫ׸ÑíÛµSéþеtúê2 øÝA!—ss÷ìÛŸsþÏ?Îÿ¹dá‚>½z‰Ð0µôoÃÚÚªwÏ}{÷ÂqüÞýËccc×|M?(xÅ/\¼øÓÞ}y7oÚØØ¸¹ºZ‰Å*Ôm1„%³ÂŠÊ P^›ÁÃq¾P€P( Ó+*+àƒÈy*Å ëÖnß±syì*’$ügϘñVk7m´*†GŒRËÎT!¯Ï·:/-+;»W ”ϲâÇqEË®þQ¼RÀÃÝ]ã<'B¨gÐ;b±ØÞÎÖËÃ9Šþ1ICŸh·µ±yUçö555•••VVVÚLT”W€­r,ñx<¯¢‚ŽÉU|—H$VVVë0ÝÓ¾OžüíÛ¶Õ±¶äå‘F¶7o@k77±X¬ž!ïÖ-©TÊçóûõî¢3€·§§VmÚÍÙXÛЗåûܺ}ǹU+ƒìÆ 4@­2äryYYÙ­Ûwò>Çm¬5³Bh€Úë7ò>ý|ÑÆÄõoµn­¸3ssu™z ‚ûö¥oêj®wÏ?ïØ~ 5-ëÐ/ë7$mÙ¾}èàÁÇax‚-BÔ*ðäŸÒ3³;V]]ccc=aÜØ‘#ÂìlmÕ×-BÔz¸¿mÁçg:üáìYŠD’$¯ß¸Ñ¤‰“¥H¤~_PX(#ˆQá#,øüêêjÅéVô§@­o:ûãÚ¶hÑÜÖÆæô™3m¼½è”o×'8Ø;¼;h ¼ä€æÍšÙÙÚ–––öêDgËÈÊþ»  d@ð—ËWlNúN,ûùøD„X¾rUuuµ6ÚÅ >S¶îíé©8Võú|«ÓñfM›ÚÙÙ?y²}»¶tʉS§5Ö­r%+gÐVóÞ^Œ²ëñ­N§@ÓuH…EE;ví^¼pÁÃG¾ÿa[÷®]èeæ]S0Ǥ‚\Ÿh€S¿iצ ]üøÉ“Þ^^!-[´P‰¥uë~ú‰­miÙ«˜LÏÊ.(( ‡ÑµU è9®RQQq÷þ}__†WçÕž к^…îbwh§ùɎ˹¹@QÔ¿OŸžËùC LŸ:YÛ4³9¹\nog7{æŒi“ÿ—}øÈþƒ©{öØw0µW ðÐP•[„*áR§Ê¹ž——šž™sþsvéç ‚ºw7¡¶² äG=—]:u5rd—NéÁw†w\±Eh€Z„ÐȰP÷·ÞÚ—šúý¶íUUUÖÖÖíÛ¶]»:Ö·Cú"ÑÆË+ÀÏï»)bKË=;´¶¶Ž]¾,eó–µñ v¶¶ƒCF~8gNä¼sœïÕ£‡aí8óÉ N’dZFfÖ¡_\œ—-YäëÓáÂÅK*´#†“Ëåi™ÓÓ[µlýñÜà`¹\ó冔Mkã׋DÂN³gÌ ‹h¤5ìA6àÓñQá#¤Riæ¡_=ðÅ¢Ï#?ù´þíxÃ:E'®ù6Ný«f¿ûέ›6ÒùᜅK–†ûútP BטcRÙ4s´ÓlË¿Xúã®ÝYÙM›4YøÙ'~~$I2› •“dzVVVö!ç//òíÐ$I:&SÓ3¦g´jÙ2:rnÈ€`m9Eua§Ïœnצókñx<žH$’H$ gW(^½~•Ïçkd;zü×øï64oÞlÛ¦u’ó.Ĭ\έZ!„œ[µú`ÖLçV-~!Ìæ4º`aaqÿAþ¾ƒ»wíÒ½kWÖ ßÿ(òqAÁ¡´ƒuU{òôo7oß=2ÜÕÅ… }Ú…ú¬VÙ}Çé~EQʆ0  …<!D?œÉãñ½NF.—!‰(Š’J¥êÑ¥3ÞôQhaaÁç×vS‚Ëåiél8ŽÓ.Ð?…w@’¤â ´:O‹ÐÇq@@ß7ÓÑ.ã8®r@{¤R'úüÒMï­JcY©T*ª««•õ×ÔÔ$©„ÃL[Lª Ðí—ss³kÛÖ–-Zðx<å(ÒiÂÂÂÂÂÂ^>®(¥gŒÑõ–{ùJTT´^ýq¹\^YYÉ|2ãâ¡¿.]€wCB4Ž“\ɽ íÚ´IJˆzm¯îå%uÙ³˜Opqn5?:JãR“únÿ~ŽãUUUuU; ¿AA¢éƒú¬VÙ}y*¦ÕóK^ΩG—ÎxÓG¡L&Si4ÒªgcöNc~“AÇ¥R©rKD»LQ”ÊÆ:Ñç—nz§˜U)?®œS%5†™¶˜T -ÐË5ŽkÌ&´Å’ž1öÚ¸ ;›T(”Ùâ¿ãñxsÞŸuéÊܯ¯ÆûôKW®@·®]46+ú›Ó K’ëC¨-t’Q×- êOh°ÚƀƯsÜLœj‘(eÓ4X{Pí ×ëlç/üegk{ü׉dÖôiöö*†BgÏå<.(;[[úæ×`s¬ëg f®–u4~…œãfåTCµã £z­WÑ“Ô&gM›š²eëžýfN:\½“xáâů×ÕN_¬ßTüüùX¥MWêjŽuýlÁÌղޯ¯sÜLœêxâ𡪪ªFÑg‹T…m`pÿaCÞ¥Gë5Žø¼Ó­Û‰Ã‡õ|ÔhŽuýlÁÌÕš¡BÎq3qªAfh¼>>®Çóœu }Mg»lÀÐ0ƒ9Öõ³3WË:¿BÎq3wÊPí³2½@/Da‹Íô挪ßÌղޯ¯sÜÌ2”×þñ¥Azƒi.ª¬›3ª~3WË:¿BÎq3wÊx}\…kǯßÌղޯ¯sÜÌ2^kÇqWÞŸ×0`FÈ …€6Ó›3ª~3WË:¿BÎq3wÊPÔý‘oog_ü¢ØÁÎaŸr•šU¿lbV^YÞ¬Y3ÐÆ¦‘´Ÿ6†‹³žæÒ–lé×V' æþ“jµA›!=K铹ž ë$¾®Ž°â Égøé™Ì;ãÍú¸Æîº2Öiáõz~Ë-Bÿ<ýGùùQzC Ô_ë§‚c8`µ`ogߪe+ºÑQac UIWÿSû£ÁlNEª2sí1`†é¯_³65ÚWÖiâ—‰ÿ%µÚN«ÊyÔ3›zæZ±WÊŸ SÈ Fý£>/A×V\L£cØëÔ v\ÁÌ¥Ô‹0”Å”ý{Ý5u¿ê6™ÆÓÍ.›žÌ*Õ¢Z#˜ZNM¬t½Õf{þü9½±Ž¶—‡1§(@o'/·éað‡•^Nsy꩟¡8³ìÿ˜Z8Ù*R…¬Ë0!»Ž³;CÓHœ2Ô·¢ ºÞ¶oßÍDɤ52iýikÁ.›éÍU¿™«5C…œãfî”iðƒ1‡Õ^Ïß%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/Makefile.in0000644000000000000000000000013213135434044016772 xustar0030 mtime=1500919844.189981806 30 atime=1500919916.393315139 30 ctime=1500919913.319981806 denemo-2.2.0/docs/images/Makefile.in0000644000175000017500000004472513135434044020657 0ustar00jjbenhamjjbenham00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs/images DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(dist_image_DATA) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/as-compiler-flag.m4 \ $(top_srcdir)/build/binreloc.m4 $(top_srcdir)/build/gcov.m4 \ $(top_srcdir)/build/gettext.m4 \ $(top_srcdir)/build/glibtests.m4 \ $(top_srcdir)/build/gtk-doc.m4 $(top_srcdir)/build/iconv.m4 \ $(top_srcdir)/build/lib-ld.m4 $(top_srcdir)/build/lib-link.m4 \ $(top_srcdir)/build/lib-prefix.m4 $(top_srcdir)/build/nls.m4 \ $(top_srcdir)/build/po.m4 $(top_srcdir)/build/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(imagedir)" DATA = $(dist_image_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = @pkgdatadir@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ ALSA_CFLAGS = @ALSA_CFLAGS@ ALSA_LIBS = @ALSA_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EVINCE_2_0_CFLAGS = @EVINCE_2_0_CFLAGS@ EVINCE_2_0_LIBS = @EVINCE_2_0_LIBS@ EVINCE_2_30_CFLAGS = @EVINCE_2_30_CFLAGS@ EVINCE_2_30_LIBS = @EVINCE_2_30_LIBS@ EVINCE_2_32_CFLAGS = @EVINCE_2_32_CFLAGS@ EVINCE_2_32_LIBS = @EVINCE_2_32_LIBS@ EVINCE_CFLAGS = @EVINCE_CFLAGS@ EVINCE_LIBS = @EVINCE_LIBS@ EXEEXT = @EXEEXT@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ FLUIDSYNTH_CFLAGS = @FLUIDSYNTH_CFLAGS@ FLUIDSYNTH_LIBS = @FLUIDSYNTH_LIBS@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKSOURCEVIEW_CFLAGS = @GTKSOURCEVIEW_CFLAGS@ GTKSOURCEVIEW_LIBS = @GTKSOURCEVIEW_LIBS@ GUILE_1_8_CFLAGS = @GUILE_1_8_CFLAGS@ GUILE_1_8_LIBS = @GUILE_1_8_LIBS@ GUILE_2_CFLAGS = @GUILE_2_CFLAGS@ GUILE_2_LIBS = @GUILE_2_LIBS@ GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_EFFECTIVE_VERSION = @GUILE_EFFECTIVE_VERSION@ GUILE_LDFLAGS = @GUILE_LDFLAGS@ GUILE_LIBS = @GUILE_LIBS@ GUILE_LTLIBS = @GUILE_LTLIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBAUBIO_CFLAGS = @LIBAUBIO_CFLAGS@ LIBAUBIO_LIBS = @LIBAUBIO_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALEDIR = @LOCALEDIR@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_DATA_DIR = @PACKAGE_DATA_DIR@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ PORTAUDIO_CFLAGS = @PORTAUDIO_CFLAGS@ PORTAUDIO_LIBS = @PORTAUDIO_LIBS@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ RANLIB = @RANLIB@ RSVG_CFLAGS = @RSVG_CFLAGS@ RSVG_LIBS = @RSVG_LIBS@ RUBBERBAND_CFLAGS = @RUBBERBAND_CFLAGS@ RUBBERBAND_LIBS = @RUBBERBAND_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHTOOL = @SHTOOL@ SMF_CFLAGS = @SMF_CFLAGS@ SMF_LIBS = @SMF_LIBS@ SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ SNDFILE_LIBS = @SNDFILE_LIBS@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XML2_CFLAGS = @XML2_CFLAGS@ XML2_LIBS = @XML2_LIBS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ denemo_bin_path = @denemo_bin_path@ denemo_load_path = @denemo_load_path@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ installed_test_metadir = @installed_test_metadir@ installed_testdir = @installed_testdir@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ imagedir = $(datadir)/${PACKAGE}/manual/images dist_image_DATA = \ ArticulationsPalette.png \ AudioPref.png \ BarlinesPalette.png \ BeamingPalette.png \ BookTitles.png \ ChordSymbolsPalette.png \ CommandCenter.png \ CommandTab.png \ copy.png \ CustomOrnamentsPalette.png \ cut.png \ DenemoDirectives.png \ denemomain.png \ DynamicsPalette.png \ ExternalsPref.png \ FiguredBassPalette.png \ gotobegin.png \ gotoend.png \ InsertOrAppendChords.png \ Lyrics.png \ MidiImportPalette.png \ MidiInControls.png \ MidiPref.png \ MiscellaneousPref.png \ MultiLine.png \ new.png \ ObjectEditor.png \ ObjectInspector.png \ open.png \ OrnamentsPalette.png \ PaletteEntry.png \ PaletteMenu.png \ paste.png \ PianofortePalette.png \ playbackcontrols.png \ PlaybackView.png \ PolyphonyPalette.png \ PreferencesDialog.png \ print.png \ PrintView.png \ redo.png \ RepeatsPalette.png \ save.png \ SchemeWindow.png \ ScoreLayout.png \ ScorePropsEditor.png \ SimpleTitles.png \ SourceView.png \ StaffVoicePropsEditor.png \ StringedInstrumentsPalette.png \ TiesPalette.png \ undo.png \ VirtualKeyboard.png all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/images/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign docs/images/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_imageDATA: $(dist_image_DATA) @$(NORMAL_INSTALL) @list='$(dist_image_DATA)'; test -n "$(imagedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(imagedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(imagedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(imagedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(imagedir)" || exit $$?; \ done uninstall-dist_imageDATA: @$(NORMAL_UNINSTALL) @list='$(dist_image_DATA)'; test -n "$(imagedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(imagedir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(imagedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_imageDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_imageDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_imageDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-dist_imageDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: denemo-2.2.0/docs/images/PaxHeaders.19168/new.png0000644000000000000000000000013213135434036016225 xustar0030 mtime=1500919838.116648472 30 atime=1500919916.403315139 30 ctime=1500919913.353315139 denemo-2.2.0/docs/images/new.png0000644000175000017500000000216413135434036020101 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRlSçzgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<ïPLTEïëç³°­wusÿÿÿÚÚÚÓÓÒ¥£ ööõüûüüüüûûûùùùöõõÖÖÕר×ííí¤¡ŸõôôúúùúúúøøøõõõÓÓÓ¿¿¿ðññ¦£¡ññðØØÙÐÐÐßßßôôô÷÷÷ØÙØ©©©ÏÏϪ§¥îïîÏÐТ¢¡ppoeee”””ŸŸŸ«©¦üüûÚÚÙÚÙÙÎÍÍÕÕÕÔÔÓÖÖÖËËË·¸·˜˜—˜˜˜¢¢¢æææÞßÞÞÞÞÝÝÜÛÛÛÜÜÝÛÐÇ⬄éŒIðvóhâhñ”Pð¸ïàÔöööáâáÌÌÌÊÉÉÐÐÏËÌÌÉÉÈÊÊÊÒ®’åƒ=ófódóbòHðȪôóóßßÞÛÛÚἡï~,ôjófócôsõˆ9óeò‚0ÝÞÝÉÈÉÆÆÆÍÍÌÉÉÉɽµç†@ójôoò^õ…3ù·ˆîîíÕÕÔ᪂ófôy÷ž\ôröŠ<ûаëëê××ÖÂÃÂÀ¿¿ËÊÉÆÆÅá…Bój÷›Yùµƒù´‚ýæÕéèèÕÔÔÏÐÏîuôz%öŽCûÕ·ÿõïþûøóx åååÒÑÑÂÂÁ¼¼¼ÈÈÇÃÃÂògõ~'ø¥hù¼üÙÀâãâÒÒÑîuáààÏÏÎçŠGììëÞÞÝÞÞÜÝßÝæ¯‡‚ujÍj#L„îbKGD Lò pHYsÄÄ•+NIDAT(Ïc`ÀÈrLÌPÀÂʆ)ÇÎÁÉÉÅÍÃËÇ/€!'($,Ì-"*&Î,!‰.'%-#+'/ª (®¤ Œ&§ªjêšZÚ(r:*ºzú†FÆ&¦fæÆ(Žeâ¶°´²¶±¶¶µ³wptrvquCȹ{xzyûøúù†„ÂåÂÂ#@ 2*:&6.>.6!0&É$•”œ’š–ž™•“›“•5–)O7  ‹ŠKJËJKŠ‹‚]¡rå•UÕ5µ±uõ M õu±.P¹æ–V hKÈjïèìêîêìhÏJèÊõöõO˜8ir씩Ӧƒ|ú´©Sb r3fÎdee…Ußì9s”¼•æbµoÞ|ë , Ât'4Þ/ Äô „&& ‡ B2#<ÀÍեǩ9¨ ›…t±‡%üItEXtCommentCreated with GIMPW%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKIEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/SimpleTitles.png0000644000000000000000000000013213135434036020052 xustar0030 mtime=1500919838.103315139 30 atime=1500919916.403315139 30 ctime=1500919913.376648472 denemo-2.2.0/docs/images/SimpleTitles.png0000644000175000017500000006643413135434036021740 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDR9zt­ÞegAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>kìIDATxÚíÝwX×Úð³,»°, ,,€…j j5v”`,Ø5"¢`ÅŒÆDÅÆ$Š^ ( (h‰Q‰ˆ (Š E@¤ª ½,ÛæûãÜ;ßd »˜÷÷øø,3gN›e³å}i‡#@õܹy?PG=K~¤ìþÿ0hØò±š²;´@]Ù¤ç2?€û*ªÖ*ªÖ*ªÖ*ªÖ*ªÖ*ªÖ*ªÖ*Ä¥§§Ï;÷×_•¿W(nÚ´‰ ˆ+|÷îBHñò1°V ÎÁÁaذauuuò÷ª©©¹¸¸Ðh´+ô÷÷G)^ âVð÷îÝ{úôi}}=‹ÅB=zô(99ÙÕÕÕÊÊJlobbbss3>êþýûÏŸ?wuuíÕ«WBB‹/<|øp„P```llì… ôõõù|>µ¼››[=’““ËËËïß¿¿páBeÏ*î«ø‰‰‰ßÿýÌ™3cccBwïÞ ZºtéâÅ‹kjjÄöúøø „bcc=:räH//¯øøø   OOÏ5kÖäææ"„ÜÜÜØlöŒ3,,,pù›7ož?ÞÃÃÃÝݽ®®ŽÍfÏž=»  €Á`lܸQÙs€*‚û*þßÕ«W'L˜Ð£GI“&!„.^¼HDXX“ÉLMM‰‰¡îíß¿¿††BèÒ¥KS¦L±µµ 211©®®>}ú4A}ûöÕÒÒ¢ÓéÚÚÚ¶¶¶¸|hhèĉY,–±±q||ü”)S455ÝÝÝß¼y¢ì9@Á}ÿÍfã·©Þ¼yC„††Æ€V¬Xqýúu{{{±½äQ,«´´”Á`ðùü¨¨¨»wï®\¹RWW—¡ÓéB¡P(FGGãò§¦¦!TSSÃápBÝ»wG©«« …BeÏªî«øË–-[´hQ@@À«W¯ ÷íÛ·aÃ:^UUµe˱½FFFoß¾‹‹óõõ]¸p!ÇëÙ³'“É|ñâÅ‘#G´µµƒƒƒ‡®­­- 7lØÐ§O\~Ó¦M[·nÕÑѱ¶¶vrrŠŒŒ¬¨¨HHHÈÌÌ,..NNN6l˜²gÕBè8r-@âóùø=$„“ɉD•••†††R÷’êãñxººº¡êêj---&“)ÔÕÕB\.W(â£0¡PH­ ‰škî«øƒ_—Ãèt:uEÛKb2™L&?Æ+B/T!MMM±òbÕäƒ÷«¨:X«¨:X«h‹¤¤¤~ÿý÷R÷úúú:::öë׺ð`­ e¿ÿþûŒ3Ķ<þüĉRËìÚµËÄÄ$77·ªªJÙ}àcŸ­ eQQQ\.—ºeõêÕµµµ®®®RËèééÙÚÚþñÇÊî8 ¸¯@>Ÿ|îÜ9‘H$Èïêš™™LžÝ·oߥK—666*{|t ð ò>|¸¾¾þÌ™3Ÿ}öY‹Ú²eK}}ýÞ½{å”ÃãñÜÜÜž?~öìÙ¥K—š˜˜ìÞ½ÛÔÔtÿþýÊ"]ÜWÐFFF­*ýúõçÏŸ#„´µµSRRp¨ÀË—/+{t p_@[´6eâ‹/ðƒèèhmÝËË‹F£‰D"55ø“€ÀZ@ ðZ"‰BóçÏ “\¨$ˈèß¿?~°cÇŽ~ýú!„‚ˆ‹‹ƒ4Á(þ  8aÇëׯÓÓÓ333ñê‚?Áårñú$Y¦©©‰,†š:u*Î,¼oß>œ"äÀ!!!°V ŽÃ €lOž<ÑÑÑA±Ùì7nqðàÁnݺáß {{ûºº:±2¾¾¾, ˜4i®'==}Ô¨Q!ccã™3gÖÖÖ*{p¨®ŽÃÉ€–544äçç[ZZjkkH„Ðû÷ŠLMM•=,Tä uØlö€>¼ BH______Ù ‹÷«¨:X«¨:X«¨:X«¨:X«h‹•+WΙ3ç×_ÛN™dûöíçÎÛ¾gÏžyóæíÞ½[Ù# +µ €¶ðöö¾råÊË—/Ŷ'&&._¾!DDhhèµk×Ķûùù]¹råÉ“'Ê] |fq"‘¨ººšÃáÈ ÖÇápðÇårqÜ ÷óÏ?ãoÓh´ŒŒ ƒ!¶Åb‘_Æš›››šštuu•=nTÜWðÙÙÙcÆŒ puuõòòBùùùq8ooïÇ<¸{÷î¯_¿Æ…oݺ5{öl“U«VqðàÁÈÈÈÄÄÄ¥K—;v¬G...!êvj[B¡píÚµNNNëÖ­›0aBmm­²G€Š‚µ €¸|ùrII‰™™Ù÷ßÿé§Ÿ"„vìØQUUÅãñ>ùä“I“&ÕÕÕ khhüþûïžžž'OžLHHغu+BhäÈ‘!!!k×®USSÃïQQ·SÛúõ×_ÿóŸÿìÛ·ï?ÿùÏíÛ·=ªìÑ ¢`­àæÌ™# }||† V\\Œb2™ä^2Ô,^®ˆÂqÓsssŪ¢(Ubb"B(88xëÖ­^^^­Í‰À¿¬UüCDDÄÕ«Wcbb&NœÒÐÐ`±XeeeA<~ü!DDCCB¨¼¼!„_2dNg±X</888;;ÇßDÉÚîàà€rss;~ü¸¿¿?~Ó ‰nlf¾Ê{…²»€ªˆŽŽ>}ú´¦¦æÛ·o===‡J£Ñ ÃÃï\¹bii™ŸŸŸ››;xðàüü|55µ¢¢¢sçÎmÙ²eΜ94íï¿ÿ¾}ûvcc#ƒÁ¯©©éÛ·¯½½=¹½®®îæÍ›UUUC‡uwwÏÌÌ<~üxvvö7V¬XA†oœ :M>†8ëHQ^^®©©I]9Þ¾}ËápðçúBAhii•••ééé‘í …¥¥¥ffft:Z¡¬í¡šš¡PH~°€Qã¬ÃZ@Q×*x¿ €ªƒµ €ªƒµ €ªƒµ €ªƒµ €ªƒµ €ªƒµ €–Õ××ãxK^¸®®NlKcccYYŸÏWö(P]°Vв+Vôìٳͅ#""jjjB………:::8ë¹qÿþýfff%%%Ê%ª Ö*þK(ŠD"©»æÎ‹w?Š~÷îݶmÛšššB=zô¸{÷nŸ>}¨Éò!§ìi@A®EB(::úÞ½{ZZZÆÆÆ!!!)))ëÖ­+--MIIÁáÕ½½½oܸáãã3`ÀÅ ×ÖÖæää:tè믿¾xñâþýûÿúë¯óçÏ“qùâââ… N˜0!>>þ÷߇ԋPÁ}!tÿþý¨¨¨††ww÷™3gVTT°Ùì±cÇVWW“e¾ûî»7úûûÇÇÇ+^ØÍÍ !äççgdd4}úôòòr¡P8kÖ,r#.ôèѲ²²þýûgdd\¼xQÙó€jû*BhôèÑ'<<<))éðáÃ!.—[QQ÷âWóôôô˜L&N=z´‘‘‘‚…ÕÕÕBoß¾ÕÑÑÁep[¼?æñxÚÚÚ“&MJMMÅïcHp_B]¹r¥²²rÑ¢EãÆëׯ_=æÌ™“––VSSWSS3uêTÿóçÏäÆ+W® „¬­­kkk÷ïß`jjªìù@µ@œuþK(655ikk#„ø|>—Ë%s‚Ô×׳Ù솆Æf³[[¸¾¾ž|L’Ü( «««õõõ•=¨jœux €ÿ¢ÓéxíA1 2UBo'÷¶¶0õ±œt:*¤‚ר:X«¨:X«¨:X«¨:X«¨:X«À¿ÑöíÛÏ;תC‚àr¹ßUeµ €JQþZõîÝ;ewü»zíÚµV•˜˜¸|ùòÎï­²Ú@¥(­ò÷÷WvÀ¿ FËÈȸtéu#Aïß¿'‚Ü"‰*++ñ÷óÏ?‹ÕCDCCC‹Í‰D¢ÚÚZ\^,yUss35„ dO¤¶ À¿P‡¬U)))111ýõ×É“'ñË÷ïß?yò$™€îÑ£GÇŽËÏÏ Œ½pá¾(Ð Ž;Ö£G„ÐîÝ»9άY³Fm``àìì,BÙÙÙcÆŒ puuõòò:xð`dddbbâÒ¥K·oß®§§·~ýúqãÆq8œÄÄD???‡ãííýøñãÁƒwïÞýõë׸æ)S¦888èêênÞ¼y̘1ºººK—.E …µk×:99­[·n„ µµµR{BmWÙÓº|É-,,¤þX\\üðáØ˜˜ÄÄÄÀÀÀ¦¦¦‹/†‡‡!yѦ%~ûí·k×®%$$à]ä5üÁƒ±±±/^¼8þ|Çi ãp¢½eee1™Ì?þøãÂ… ‹/Žõññill>|xmmí;w¼¼¼êêꜜœ²²²êêêA»wY ‚‰D ÃÜܼ¾¾~õêÕ¡ÌÌL‚ víÚeaaqêÔ©'Ožœ}ÚÇLJN§óÍ7ÔcÕÕÕétzïÞ½‡ vçÎò²BjÍööö,‹Ãᘛ››˜˜èéé!„Abb"B(88ø÷ß÷òò222’ÕZëÒ¥KS¦L±µµ B…††’Wಲ2mmíyóæååå999}úé§K—.¥^´ÅŽz÷îÝÎ;GŒáåå…ºxñ"y ohh(++›:uª‡‡G‡ª£Þ¯jnnÆYôôô8þ㱦¦†Ãáhhh 0`ÅŠׯ_··· …B¡0::ºCÇ þ«|ŒÓvà-øÿˆˆˆ«W¯ÆÄÄLœ81""‚N§³X,œM„Y›††‹Å*++#âñãÇbUI> ÂÁÁ!äæævüøqÿîÝ»Kí‰X»Êž6Ð5°X¬ÒÒRƒïËÅ®Àl6›F£©©©áhË8% úçE[쨪ªª¿ÿþ{Ö¬Y‡BQ¯ávvv¦¦¦d¶ŽC763_å½¢Ýëýå—_„Badd¤——×Â… CBBñŠÝ¿ÿýû÷744ܹsgÊ”)'OžÌÉÉqvv677ïèÑ€:yòdxxxMMMß¾}¯^½zóæÍêêêÞ½{Ÿ8qâíÛ·oÞ¼™3gεk×NŸ>­©©ùöí[OOÏO>ùäï¿ÿ¾}ûvccceeåÝ»w«««uuu‡Š¢Ñh………áááW®\±´´ÌÏÏÏÍÍ}õêUlllmm­¾¾>~GÖÔÔôüùóUUU ß~ûmffæñãdz³³oܸ±bÅŠ£GJödîܹ ¸ÝuëÖ‘7mÈѧOŸ={ö¼y󦺺zèСöööäØÌÌìÂ… cÆŒ‰ˆˆHNN8pàùóçß¼y3uêÔcÇŽ‘íÁƒSÒÔÔ|ôè‘©©éˆ#úõëG^Ãkkk£££‡Ú§OŸvÈÉ ÓäãŽÊ baa‘Íårqr9¡PXYYihhˆ÷Rär¹B¡P,]ª ¼¼\SSÿù) KKKÍÌÌÈ¿Cż}û–ÃáP®·¨¦¦F(r89eZlI<¯±±QWWÿ(v–Jì¢M=ŠÇã1™ÌššÉ]: jNy 0::šÁ`$$$P³ RGEýQSS* š ɬTt:½gÏžr ccãV-T!ù •"í ‰Éd’ ’¸K’¼hSÂïïJÝÕi ×"UÔá÷U@;‚µ €ªƒµ €ªƒµ €ªƒµ €ªSòZ A´HÉk$Т‰±ôðáô´´òòò7nØÙÙ…‡‡geeÙÙÙÑh´G]½zÕÀÀ@OO/000$$D__¿Giiiäödddðx¼ØØØAƒ){Š KJHHˆ …æææb×U±©%“““Ÿ={V[[{åÊ•>}úhiiáØí·nÝjjj =ztrr2¾bgeeuÜåšc©Cr‚dffJ ;O$_]]]RR‚‚üõ×_ÔíÏŸ?ï¸ óðop÷îÝ%K–ðxñ¿Hò©©©ƒÆ A¨ÛGÕ9Aæàc5bĈêêêÓ§OQQQáèèH½®ÚØØ?r¹ÜÚÚZjIMMMww÷7oÞ„„„ „ø|¾®®®¦¦&A666›6m">šœ RÃ΋e¡Óé8!Hii)u;B¨s‚ÌÀÇ***êîÝ»+W®ÔÕÕ%I\WÉ%Kâ$5êêêB¡!Ô§OŸºººÓ§OvëÖM)9A:ä¾*::º¢¢"!!!***--íÁƒ‰‰‰/_¾Ü²eËêÕ«étzUUÕ–-[˜L¦P(ܰaòeË~ùår{TTTSSS\\ÜäÉ“;züðQ/^¼8r䈶¶vpppaa!õºJ½ÌŠ•,..ÆðÌÌÌâââääääääÌÌÌwïÞ%%%éêê®_¿ÞÓÓ_±ûöíÛ9—ëÎŽ]+IžLÒ9æàߣººZKK‹Éd œÆ³m%wïÞíììܯ_¿Û·o—••}óÍ7Ÿ¤Cî«ä‹$¯©©)u;€D¦‘¿PµXÒÌÌ,55µ¤¤¤²²rÉ’%HWìÎ^«t-Ë—/Wv”ý]` E°V./==}îܹ¿þúk‹{…B!þ¸­ü ÉÐ_ –WMÀ |L`­]žƒƒÃ°aÃêêêZÜ«¦¦æââB£ÑäWH†þR°¼j‚fàcïW®íÞ½{OŸ>­¯¯g±XxË£G’““]]]­¬¬Äö&&&677ãb÷ïßþü¹««k¯^½^¼x1xðàáÇÆÆÆ^¸pÁÕÕ533S¬¼››[YYYyy¹±±ñýû÷.\h`` «o>¬¬¬ÔÕÕMOOÿòË/### Æœ9sðâGVøàÁƒæææñãÇ'$$ „æÎK‚œJ¨Å’““©½ŠŒŒ$GÁáp”}–øPp_º°ÄÄÄï¿ÿ~æÌ™±±±xËÝ»wƒ‚‚–.]ºxñ⸸8±½†††>>>¡ØØØ£GŽ9ÒËË+>>>((ÈÓÓsÍš5¹¹¹nnnl6{ÆŒ:::dù›7ož?ÞÃÃÃÝÝ!4{öì‚‚ƒ±qãF9ÝÓÕÕuww/,,ÌÍÍ8q¢••UPPPJJŠX…úúú¿üò‹©©iuuu÷îÝ©C¨©©‘U‰X16›MíuÊ>K´¸¯]ØÕ«W'L˜Ð£GI“&á-/^$£¿œ={Vloÿþý544B—.]š2eŠ­­mPP‰‰ 5 ýE-:qâD‹ell\ZZ*†tþüùû÷ïÛÙÙùúú"ÙÁƆ F­°±±QKK+33³¼¼ÜÛÛ{ÅŠÔccÇŽU$bÙ¨Q£¨½ÒÒÒ"GÀGî«@Æf³ñQoÞ¼ÁŸ€ FéÙ³§Ø^‹Å*--e0|>_,À ú+::š,ÏápjjjB555G, iüøñk×®ýâ‹/¨=” 6&Y¡¯¯ï–-[,,,D(2¤XÄ2ôϸ8RG@×÷U  [¶lÙ¢E‹^½zUXX¸hÑ"jôOOOêÞ‡¾}û6..Î××wáÂ…<¯gÏžL&“`æÄ‰8ô×—_~ƒËoÚ´iëÖ­:::ÖÖÖoß¾‹@3lØ0Üssssss²{²‚Í;—Z¡“““@ Ø»wï¬Y³BÔ!lÙ²EÁˆed1Ü«ÌÌLrÊ>K´ƒÎޱ@ûâóùuuul6!Äd2i45ú‹ä^ò@×ØØˆ¿®/`† ýEm¨ÝƒÊˆUX[[‹oŒoK~1©£  ¡ÆX‚µ €*¢®Uð~UkUk誒’’øý÷ßË*àëëëèèØ¯_?ò3ë€. Ö*Ðeüþûï3fÌ þøüùó'NÈ*³k×.“ÜÜܪª*e÷]UˆÍ!]|ftQQQ\.—üqõêÕµµµ®®®²ÊèééÙÚÚþñÇÊî¸ ›Cº ¸¯]ŸÏ>wîœH$ø¸fffdæl©eÈïÞRUTT$''WVVÊiQ$!„JJJ^½z…·455=~ü¸¶¶V¬dUUUrrrEE¹E@!‰p°û x»-VR]]ýøñㆆ9ó@—1Ðq8€j[¿~=þž¦¦fïÞ½×®]ûÃ?tïÞÁ`Ë*CÄ–-[BŸ|ò .óúõëI“&éëë{{{ëééyxx444PZ»v-›Í¦ÓéŸþùÂ… ñïÈüùócccµ´´Bººº÷îÝÃ… ÜÜÜôôô–-[fhh8qâļ¼<‚ È[=¸¸¸àà`===„И1cdõ¡Uí¶X‰««ëÖ­[ñ—ÉŒŒŒž>}*k~Pe‡“ÿ`­]ƒ——BÈÅÅ…ÜòÝwß!„ȵJjêZÕÜÜ<`À„ÐÙ³g ‚رcBhëÖ­b á¨jjj‡>uê^6†š˜˜øÉ'Ÿ „&MšDDCCŽlô믿Cõïß¿¾¾žÇãá]cÇŽÅuþøãŸ~ú©P(”ÓÛ•?¼ùùùýùçŸÆÆÆ¡%K–ÈšTu­‚×AWeddÔªòׯ_þü9BH[[;%%… „ÐåË—¥VËápÖ­[·hÑ"¼ÑÓÓÓÉÉiüøñè9 ÿý÷ŒŒ „Þ8dÈ„PNNΕ+W ^GïÞ½ûìÙ3„еk×öîÝ«¦¦&§ ¶+ ¸uuõƒNœ8qâĉ¡¢¢"eŸ+>|¶tU­MøâÅ ü ::GO÷òò¢Ñh"‘HMMM¬Zsss555\ !Ô£G„“É$‹eeeá8醹¹9F#/`sæÌÙ±cÇË—/üñÇ;vTWWãõFNlW‘ôéÓ׆ã¬ã·¯èÒ`­]¾ ãËîüùóÃÂÂZ[¦ÿþøÁŽ;úõë‡""..®mi­­­ñƒšššnݺÕÕÕáûÜ Nߺu«——×¥K—Á† p+íÒ‡+QW—þ{-9?]4å1ø‚×A׀㺾~ý:===33“F£566"„¸\.yß Y¦©© !„KN:ÕÊÊ !´oß>œ/ãÀ!!!b×k\§&?ÞÄÿã:¿øâ ¼\ݾ}!‡²°°˜3g>dñâÅ={ö …wîÜY°`Þ(§ ¶«H%dI\ù£äü(û¬ 0ølèžB+W®œ3gί¿þ*¶ jö¦íÛ·Ÿ;wNlûž={æÍ›·{÷ne¢=‰ €.Ö*ðòöö¾råÊË—/Ŷ'&&âpæ!‚ BCC¯]»&¶ÝÏÏïÊ•+Ož!´hÑ"²*CCCgggÉíl6{úôéAœ9s!tãÆ ÜÊÞ½{q—/_Þ¹sçÎ;|>o‰D £wïÞ¶¶¶t:½¬¬lîܹ¡ººº'N „"## ‚077wtt$¢¶¶VOOoàÀ"‘hÿþýׯ_—lN~µ²Ê›››×××ãgffJ€.r-‚.lΜ9B¡ÐÇÇgذaÅÅÅÔÜNdàp‚ BDᬹ¹¹’U‰å…’”˜˜ˆ Æ >ÈìŽÇŽ7nܸqãêëëɦ™L¦½½=‹Åâp8æææ&&&8u½@ xøð!BGïÙ³gJJ —ËíÖ­ÛúõëÓÒÒnÞ¼™œœìêê*Ùœüje•4h›ÍîÙ³'¢„l Kƒµ t1W¯^‰‰™8qbDD„††‹Å*++#âñãÇ!‚ Bååå!ü’à!Cèt:‹ÅâñxÁÁÁÙÙÙ¸$A²¶#„BnnnÇ÷÷÷'£ÓúûûQãÕâC$³¿~ýš ˆ¼¼<;;;MMM„кuëØl¶··÷”)Sh4šÔæäT+«<Î_E“ ]¼º–M›69;;ûûû»¹¹áíí²··Ÿ7o‹Åš>}z||ü˜1cÜÜÜ~øá‡^½zíÛ·;yòd6›íêê*‰Nœ8¡¦¦¦££óÛo¿Q·ÿý÷!##£[·nq¹\wwwüþÐüùóKJJdõjß¾}!ccãàà`]]]ƒÔ§O„ÐÚµky<ž‡‡‡³³ó¦M›¬­­SSSÉýüü  ‚lN~µ’åqçÃÃà „š>}º@  PÙ'EANÐå•——kjj’)¬Þ¾}Ëáp þ_úµ´´ÊÊÊôôôÈÏõ …ÂÒÒR333:N­MÖv¬¦¦F(’Ÿ-l³úúúÚÚZSSSj’ÃÆÆÆêêj33³67§Hyù@5ANªr‚èJ`­ ê`­ ê`­ ê`­ ê`­ ê`­§úúúâââv),×¼±±±¬¬ ÙtX«ÀÇiÅŠ8 ^Û GDDà€°………:::8Þ¸ÿ~33³’’eQ!ä@èÒ`­]˜P(”• #G‘7@Š~÷îݶmÛšššB=zô¸{÷nŸ>}ÈdaŒÇã)ÒU@€ÿ'þÖO‘ÃÅöJ­D²\Ll ti°V®*::zË–-þþþK–,Ù¼y³¡¡áëׯ¿øâ GGGô¿˜ëÞÞÞVVV{÷îmUáC‡åää:tèÝ»wGŽ™={vFF¹‘Ì—XPP0räÈ={öŒ3FV2ÆÝ»wz{{®^½zäÈ‘ŽŽŽxE,((5jÔÞ½{?û쳬¬,]]ÝÛ·o¯[·nÆŒÔÊ·mÛ&µ±à¶6lØÐ»wï­[·"„¨QöéàƒÀZºªû÷ïGEE544¸»»Ïœ9³¢¢‚Íf;–ºl|÷Ýw7nô÷÷W¼°››BÈÏÏÏÈÈhúôéåååB¡pÖ¬Yx#yoÏž=eeeýû÷ÏÈȸxñ"Þ¼víÚøøxüãŒ3***–/_>iÒ¤ÜÜÜ .“ÙLè¢Ô•ÝÚhôèÑ'<<<))éðáÃ!.—[QQ÷â{===&“I§ÓGmdd¤`aœS£¢¢âíÛ·:::¸ ŽúZQQA¦ÕhnnÖÖÖž4iRjj*ùžP÷îÝ Èh¹jjj!‡Ãd2ñÿèÙ:®S(òù|ccãåË—8p`æÌ™&&&ÔÊq®ÉJÄ:€ïÍÍ͵´´ð ƒdŸß¾}‹Ã®ÐEÑÍÌWy¯Pv7hµ}ûöÑét'''SSÓiÓ¦]¸páæÍ›uuuyyyƒ~÷î@ ÈÈȸ~ýú¦M›îܹ£xá &üç?ÿyþüù¢E‹"##oÞ¼iddäêêŠ7òùüXZZ~ùå—gÏž­¨¨HII™:uª––BÈÎÎnìØ±æææ¸“'Ož¼{÷®••ULLÌ›7oºwï~ãÆ CCÃñãÇÛÙÙ]¸p¡ªª*!!áØ±cfff;vì8|ø°±±q¿~ýÈÊËÊÊîß¿/Y‰µçλ{÷®µµulllzzº³³³9jª-º„“A§ÉÇgtaB¡°©©I[[!Äçóq²]¼«¾¾žÍf744Ðh46›ÝÚÂõõõäc’äF¡PX]]­¯¯ß¶þQ^^n``€o¿BïÞ½#_¯S¤òËH]ä ê '€®Ö*ªÖ*ªÖ*ªÖ*ªÖ* Ò¶oß~îÜ9ÅËÁår•ÒU%6ý/é0ø7SþZ¥j‘ÊT­?ÿfA„††^»vMñC—/_®”Þ*±éI‡Êê„˦ò×*ewA¥ûóoF£Ñ222.]ºDÝHÄû÷ïÉ@ã"‘¨²²?àñx?ÿü³d=A444´ØœH$ª­­ÅåÅrV577KF§¥öDVÓ-ÖÌçóÉ`¸rHí@Çu€VéŒËæ@ÇáD{KNNþã?nݺuâĉ¦¦&‚ Nœ8QTT„ <|øðèÑ£yyy§N²´´<þ<þÂíããC§Ó¿ùæ±cÕÕÕétzïÞ½‡ vçÎêçpHrjÍööö,‹Ãᘛ››˜˜èéé!„Abb"B(88ø÷ß÷òò222’Ú©—_óÇBVVV¡ž={>|øÁ`¬_¿ÞßßÿæÍ›ÉÉÉ[¶lAÉê@Gt´Ù¥K—¦L™bkk´sçN±+•ÔËÑÒ¥Kå\'{õê5þü#Fxyy]¼xQìÂUVV6uêT²ýe³£Þ¯jnnÆ9ôôô8þ¯¦¦†Ãáhhh 0`ÅŠׯ_··· …B¡0::šz8›Í¦Ñhjjj8º(Nm VBÈ××wË–-buʪA²>­®®. q1©ýÊ‚ÿ¼"ãlx AW¯^‰‰™8qbDDNg±X</88gî ÂÎή¡¡Áb±ÊÊÊ‚ÀY6¨5K}@„ƒƒBÈÍÍíøñãþþþø #Ùɦ[¬yÈ!!ü’Q^^ž¦¦æºuëØl¶··÷”)Sð‚*«ÔaÐ6,«´´”Á`ðù|É+•ÔË’{ÌÊÊúûï¿gÍšuèÐ!É —©©©dN²ü²Ù¯¡««»sçÎÅ‹‡„„.\¸ðܹs+V¬‰D999ÎÎλvíjjj²µµ]»ví£GÈc¯^½Êf³ïÝ»çëë;dÈÄÄÄI“&-\¸0;;›ZA<oàÀÔ:¹\®¬ž={F-våÊ\,00ÐØØ8))I$Iö(ˉ'ÔÔÔttt~ûí·ï¿ÿ!dllŽS1MŸ>}ãÆÎÎÎ8;bPPA“'Of³Ù®®®"‘¿ßkbb‚wáíí²··Ÿ7o‹Åš>}:AûöíÃ5ëêê2Œ   >}ú „Ö®]ËårÝÝÝuuu—.]:þü’’©=Ô¦qsòkæñxÎÎΛ6m²¶¶NMMÅGùùù466â%;ÐqmöâÅ‹ÁƒïܹóôéÓbW|ø0--­¼¼üÆvvváááYYYvvv4íÑ£GW¯^500ÐÓÓ Ñ××ïÑ£GZZ¹ýÁƒ</66‡„‘_çýû÷cbbLLLºwïþÛo¿¥¦¦à˜ùöööd‹ÙÙÙ²j@‘ÅrssŸ={V[[{åÊ•>}úhiiQûÉb±:ú”º®„„„ØØX¡PhnnN½”566R/kÔb¡äädêe‡ÅbݸqãÖ­[MMM!!!£GNNNîˆ+d}}=Y­‚×m±®vèòdÐéÿÿ¡#â*[žŒ$ÿ×_uDÄû7nP[LJJ’ZAÔb>„D!€6¸{÷î’%Kx<ž££ãË—/©—²gÏž‘oß¾M-F„X¢ëׯ/[¶¬¾¾~È!III·o߆œ ’DVtz±ØòƒÆ‘äȈxïíí½bÅ ²æ††©5 6Œr¿¾¾…Ú`ĈÕÕÕ§OŸ&¢¢¢ÂÑÑ‘¼” ò1—Ë­­­%‹õíÛ·ÿþÔËŸÏ×ÕÕÕÔÔ$ÂÆÆfÓ¦Mq…„œ )[žŒ$_ZZÚï%[”™ŸZÌÎÎ…Ú **êîÝ»+W®ÔÕÕ%ýóRF>–,†þ™h£OŸ>uuu§OŸ ìÖ­äAuÈ}UtttEEEBBBTTTZZÚƒ_¾|¹eË–Õ«WÓéôªªª-[¶0™L¡P¸aÆeË–ýòË/äö¨¨¨¦¦¦¸¸¸É“'·XçÎ;wíÚ¥££cmmíä䄚1cÆÞ½{gÍš…Z¿~½§§'®ÙÎÎNj sçÎ¥ëß¿?.–™™Y\\œœœìèèˆûùå—_vÜ™tuàÅ‹GŽÑÖÖ.,,$/eÔËšX±áÇ“×7|Ù¹páBffæ»wï’’’tuu©¨v¼B>œZ­‚×m±®vÚ²³c׊Ŗ'#ÉwPÄ{ÔNAï!Q@ÕÕÕZZZL&S àü–m(¶{÷nggç~ýúݾ}»¬¬ì›o¾œ gTËéÓ§«««ŒŒ***æÍ›‡?+ø/D]«:ä5@m¶|ùrewAå@Œ%ªÖ*ªÖ*ªÖ*ª®3Ö*¡Pˆ¿w­ìÁ¶ÄVE|$qÖÕÔÔ\\\pˆØ.b«€"ºjœõ”””§OŸÆÅÅ988$%%ÕÕÕY[[#J8s===„ldd¤££#¶ ÉLkbbróæMY±ÕÛ<øÂ… [Ð9¨¡ÐÅ®ŸÉÉÉ™™™–––7oÞ,..¶°°ùùùååå½zõÂ5|ôqÖ;侪[·n3gÎlnnîÖ­ÛŠ+ }||BwïÞ ZºtéâÅ‹kjjbcc=:räH///±]¸]]]ww÷ÂÂÂÜÜ܉'ZYY¥¤¤ „nÞ¼yþüywww}}ý_~ùÅÔÔ´ººº{÷îbUɪD¬›Íž={vAAƒÁظq£›››Íž1c†ŽŽNÇ<9¡^ÍêêêÄ®ŸL&sÓ¦M¡ÆÆÆ½{÷"„®_¿nllleeJV"ëB'VyÏž=É«eAAÁ‡_*BsµìµÊÚÚšÁ`¸¸¸L›6-::ºÿþ!j8óÔÔÔK—.M™2ÅÖÖ6((Hl®‡Œ|øç€NkUÛåå噘˜Ü»woß¾}ÙÙÙëׯ¿wïÞ!CrrrvîÜ9gÎYÖ××WVV¶¡EùÕv4???êgRÅ~$ñx¼Õ«WwPŸÛf̘ & „bbbðŸØãÇ¿}û6BHMMÍÕÕõúõë¡áÇ!§é†††ðððììlCCÃùóç›››+2'ÑÑÑkÖ¬éÕ«×… Ä^G’ì3A×®]KII:tèôéÓÅ"ñKŽ:uYYY¯_¿ÖÔÔ411¹r劃ƒÃ_|‘™™Õ§OŸyóæÑh´ÜÜܼ¼|ø´iÓ.]ºÔªù ó tN€“œœŒŠŠŠ¢nüꫯºuëÖØØHÄñãÇ †H$»öíÛ7hÐ ‚ 222ÒÓÓE"Ñõë×ïÞ½K­Aê^©Õþõ×_4­ººš ˆøøxƒQZZJÄêÕ«ÇGDRRBèØ±cAlÛ¶---M~Ó"‘hÀ€aaaAäçç#„²³³ ‚عsçˆ#Èbb?b‹-Z´hQ‹SñèÑ#„PYYA< ÓéÅÅÅòÇN:‚ 6mÚdffÆçó ‚X²d‰‘‘~ìåå5a²Œžž^ss3AQQQ £¢¢‚Úsùݵ’{åWÛ¶9÷óó:t¨H$‰D_|ñŸÏ—UR¬{Ô³#ë{{{\ÆÏÏÏÊÊJ‘´ÿ¯Ò tNþƒ×;Pÿþýñ‹]}ûöåóùB¡¿ @¾ŠÒ¯_?ccc33³… ŠýÑ*k¯dµ=âp8ø{ìVVV|>ÿñãÇnnnžžžÃ† ËËË;wîÜÆƒƒƒW­Z•••5`À>Ÿ/§i–ššúÛo¿ùúúVWW#„pôÌvœŠÄÄD:ŽS´½yóF[[;++‹|aJÖØ©/@Ñh´þýûã)555íׯ~lllLÞ²Ðh4ü=ÜtFFƘ1cÈJäwC’‚¯€I­v̘1m˜óÕ«WÿôÓO÷ï߉DãÆÃc”uvduOVåAØÙÙá2¶¶¶ùùùõõõÚÚÚmž:¬Uˆ %ë RPPpìØ±æææèèè³gÏVVVž9s¦Å½’ÕvëÖ|‡¿¹¹ý/þÊ'Ÿ|âààpüøñªªªC‡>|¿›%¿éÆÆÆ1cÆÌœ9óàÁƒeeeçÏŸW|Ô4M$!„þúë¯áÇã€Í’}¦Ñh ãĉR'G~÷HÔäÇÄ*Ä‚jhh@ÿŒÅÕb7$‡£à^©Õ¾|ù² snii9mÚ´€€]]Ý~ø¡mgGÖ!555ä÷«†††X®¼ç€ÎïWµüÛ.öJ|K>&ÿ§îÊÎÎÞ±cÇÀwìØqþüyü/Iê^©Õººº677ã\2)))={ötttDÑh4OOÏ_~ùeÆŒ&&&nnn;wî\°`A‹MÇÆÆ>~üØÇÇGSSóîÝ»èß"¢¶.ù#f``€k;yò¤¦¦¦¬>O˜0ÇãÅÄÄàíÛ·oǯMÉ»dU->F¥¥¥•”” „îܹӻwo|A–‘ß ÉáˆU.k¯ÔjÛ6ç!__ßÈÈH555œÓANIYó ëÊÊÊ{÷îá2)))Ó¦MÃË‹óõìÙ³ù­ U:$‡ý¿Ê¶mÛ~úé§wïÞ=}ú433óóÏ?G]¹r娱c¹¹¹,‹Åbmß¾ýÕ«W¥¥¥ãÇ¿qãÆáÇsrr¹¹ùµk×>|XPPpîܹ¯¿þšÌHÊÉÉÛ›””$µZwww;;;ÿ÷ïߟ9sæÌ™3–––¸’>}úœ;wîĉêêêZZZÍÍÍø«3’•S›ÖÔÔ ûóÏ?ØlvUUUtttsssHHÈË—/Áرc#""ÈÉc ‚Ø»woBB‚££ãøñãeMÅüùó-,,Ö¯_Ÿ™™yúôi;;;WWW9cïÕ«Wtt49uïß¿'«-..>vìØË—/555ËÊÊrss™LæÈ‘#ãââšššnݺzáÂ+++jÏçÎkff&«bé««#;0nÜ8±½UUUò«mÜöÙg†††–––ááá;vìèÙ³§œ’‰‰‰d÷*++©gGê!#FŒˆ‹‹›2eJDDÄÇ=zÜ­[7EæÇÕÕõýû÷Ó¦MSöïø˜QsØCìZeâr¹jjj    W¯^Ô÷ ZÜ+µ¶ÂÂÂ>}úˆeç,,,Ä×D|‰766V¤òÆÆÆ‚‚KKK‹%‰p>LÇUQQQWWG®—òûœŸŸoffF¾Hض±Ëâçç÷ôéÓ›7oæååYXXà7®ï†"ѳW¬Ú™ó¢¢¢=z/ĵáìHB§ÓËËËq:óêêêÞ½{Ëz¡Or~ªªªØl¶¬ù ]Pc×ÂZ>fëÖ­{úô)ù2  8ëà_!""¢  @CCcÏž=Êî àƒÀ}U÷UºX«@[–’J(J~Ø]*©­ˆD"YY—@;"B(*»0.€¬UmVTT4yòd›Y³fåçç¿yóÆÍÍ oùðKª¦½RR={öÌÝÝ}Ë–-cÆŒ9x𠜒R³(,X°€Åb:t¨µÝîäY’¥]Rpµ™‚­qàÀ™3g~ñÅRƒ(¶;ùIÂÚKç ´X«Ú¨gÏž111={ö|õêU@@€•••‰‰Éõë×ù|þ¾}ûöï߯ì¶§öJIõþýûI“&mÛ¶íСCFFFQQQr KÍ¢daaÖ¯_¿6t»“gI–vIÁÕf ¶èС°°°‘#GÞ¹s§£{%?IX;êäqvkUÛ©««Òéôõë×ã-<˜8qâ¬Y³>²€4í•’êæÍ›,ë“O>A]¾|9>>^~ùÌ®$ÙíNž%©Ú+WÛ(ØzBBBß¾}Y,Ö¶mÛZjÑ¢E%%%?ÿü3AÎηÂéšLLLššš‚øûᅦ fcc³|ùòàà`kkëyóæQ«’Ó\}}ýرcsrr’’’,,,p*“+V,Y²¤¨¨héÒ¥_}õµª´´´I“&Mš4éÞ½{™™™xãW_}ekk»bÅ ±ÖåÔóôéÓåË—÷ïßÿÞ½{÷îÝ[³fŽŽ¹WêÔ¬^^^Ÿ~úi\\Ü—_~©««»ÿ~Yc‘ÕmÉ“"ò¥–—5ó’ÍI=q111ãÆÃi;Z<‰˜âO€””}}}ww÷ªªªòòòiÓ¦}õÕWõõõdU ¶ž––6oÞ¼O>ùäÞ½{UUU’“póæÍ¡C‡N:uíÚµ3gδ¶¶¾uëÖðáÃûöí»iÓ¦“'Or8œ¯¾úÊ××÷Â… çÀr†#6uÔNÊ:k-NÔ£¨ã tZuêåüNINHkË€TÔœ °VµƒGÑh4sssòº 5¡Ô²eËð ˆàà`ɵ -++‰Dƒ>zô¨œLE›6m’• “Õœd¥Öæp"Ú”’Š ˆ={ö|òÉ'øqhh(¹VÉ:\«233BñññAàw2ðZ%?#”X·eeù’5ù²ÊËšyjs ¦˜jñ$¶ö ðý÷ß›››óx<‚ ¦M›†wQ)ØúW_}…s€Éš___ GeffÞ¹s‡P,˜¬áÈIÖÚ³ ÿ(r\òïd.çWXlBÚð[$Aþªv6|øp[[[KKK6›·HM(E½å'¤}bûáÇÇÄÄ!”ššŠ7ÊÉT$+?Y@js’©¡BCCÛ£¨µ)©ÄP»×âOž>>{÷²²²2dˆd¼¾Vµ.gÒh4šžžÞ°aÃp†0¤p:1Eò¢Q;)§r:/ÿ\‹iÕ©—ú;…ûLÉüpmû-$X«Ú‡ØKϲJ‘ÏïW¯^IV¢®®ÞÐÐ ‰ÔÔþû™ù™ŠZÌ%µ9ÉÔPlU§¶¥¤’?{òÄ—$2<+ùåùi®$»-õ¤Èš|9å¥Î<µ¹¸ºº*’bJþIlí@__éÒ¥ ضm[‹3ßâSHÎ$ôéÓGì¨Ó‰ÉŽœ$a­= -%©U§^ί0uBÚð[äƒÏ¶@@ývªÔ„R¦¦¦¯_¿Fñùü¸¸8.—+ö§Ùøñã›››###BEEE»wïV_rBCC-,,8ηß~‹k¦ÖöÛo¿õíÛW[[û§Ÿ~Šˆˆèׯ›ÍþñÇå ‡:uÔNÊ:kŠLœ£ð¸Z{êåüNINˆâ¿e+V¬èÜ‹V—Ÿ­è$MMMÙÙÙ€ÜÂår³³³ù|~cccUU—Ë{/ ˆÚÚÚŒŒ ò]ñ†††ŒŒ ü²P(ÄÊ)HjsMMMÍÍ͸ZêïvSSSFFþE•T^^žŸŸ¯à¨åÔó!ÖÕÕååå‰D¢ÊÊÊúúz¡P(k,rº-yRäL~‹åå4÷!'ŽJñzš››E"Ç[¹r¥äóêC´jÚ6ùO°¶u UG)xêùÆÇ*ø[VYY)ù€Q×*ˆ³ÀGbðàÁóçÏohhøì³Ï&Nœ¨ìîð¡ Î:!OOÏ„„„AƒÁB>>p_@Á}€®Ö*ªÖª.†ø°$‡-VÞ¡9è:´ó  àt€®Öª¶Û»wïðáÃmllð·B ãÇÇéå§2jU@²pÛ’Êj‹šÑŽèøt’¡±ƒtr&ÆÎ雨by ɽRSY ²`­j»ï¾û.(((;;ÛÓÓ3//!Äf³ÿüóO33³¹sç?~\Ö­ÊH-܆$‡rÚ¢f´ë„tmÎÐØA:9cçôMò@êY¦î•šÊ•kÕa³ÙŸþ9ƒÁ˜;w.ŽF§Ó?ýôÓ‘#GÊ9ªU9Å ·6É¡œ¶¨í:']Û24vNÎÄØ9}“e³Ù’ƒ***Ú¼yóÏ?ÿŒ*++;qâÄŠÒÿ’ÚyÉž›››¯Y³æÁƒÇÌÌìÌ™3iiiZZZr檬¬lûöí+W®Ü³gµ~É!gf¤žûS\\üí·ßîß¿ïÞ½©©©ÞÞÞÔjV®\¹xñbgggœ)C²-9}“œ(ùÏêY–?dùÏC”â~ˆ—/_úøøÑÜÜŒ³NäääìÙ³gŸ“•±šY®µy¥&9$ÎbGEÍh'5A’¹ûÚ†N~çeõÜÏÏoèС¸À_|Áçó[œ+Yù÷¤öYÖÌÈjEÁþH&!$)žOjßää]”õl;Ëb{©i—! PAk±ý1™ÌK—. 2dΜ9ø•@¤X·Vå'Ĥ¦˜S0‹•"/òHæî““ûŽ<Š–IRNç¥ö|õêÕ?ýôÓýû÷E"ѸqãÔÕÕ[œ+Yù÷¤öYVeµ¢`$“’>0ËeN±‚gµéy@g‚µêƒp¹\òzaiiyæÌ™Ù³gçççOš4 ÉÎØFÍ,ÇãñZ•çÉH1§`;ò½(Iæîk[:’dçeõÜÒÒrÚ´iººº?üðR,—£ÔÉ‘ÚgY3#«ûsíÚ5É$„˜âù÷¤öM~ÞEEN·œ”†mΓ @ç€÷«>HVV~ÿèîî¾zõ꺺:ü£¬ŒmÔÌr“'OnUžC|kŒw”s f±£Ö,V•¬›!±Ü}mHC'«Eü¿œt‚¾¾¾‘‘‘jjjÉNÉ(¿~Y}–53rZQ¤?„DB’âù÷¤öMÎDÉz¶ˆÍ‰œçR‹s €’ÁûUmöí·ßjkk#„†N¾¸ßÔÔ4hÐ ò ©ÛÄr*žçPNŠ9E²ØQ«•švO2&–»¯UièÈ£du>==]jÏ ‚‰Dvvv‰‰‰d%ræJ~þ=É>Ëš9­´ØÉœ{TŠçß“Ú7Y§XÖ³Eì,‹íKeÙâó€Îù«:VEE…¦¦&^ÆB\.·°°°OŸ>t:Z¦®®®—ÉÏÏ733#_«ZX–ÆÆÆ‚‚KKK‹%‰ø|¾†††â‡K¯O __ßãÇS_’:¨æææ×¯_ã7„š››Y,“ÉTä5%Y=GõèÑC¬i9s%‡dŸåÌŒ¬V>¤?\.WMMM ôêÕ‹ú ‘¬AjßäL”üÜÛæ¹ #Pã¬ÃZd‚Ü}%‚œ @!» "ྠ€*‚û*] ¬UT¬U…è༅ðïq+ÚA|ðàŸÏ:tèž={”Ý#qMMM8& ÷Uí¯ò~UÎ1¨R`¢P°Vµ¿ÎÉ[ØfªœcP¥ÀD : ×â‘L¥(+o!’‘(Oj†ÀØØX©IÉHHZÖ>ÉÎàˆÔÔOŸ>•“cP²ù å ËÊÊzüøqIIIssó©S§ªªªpNÂÀÀÀÒÒR{{{2„X늧[T° B"— œÑÉOÆèÔ\‹°VµA ,¨¯¯_³fÍöíÛ_½z5zô膆†¤¤¤ºººùóç›››Sƒ¢Ž?ÞÂÂbùò剉‰>>>k×®UWWÏÈÈØºukdddAAµµõO?ýôèÑ£)S¦,^¼˜Ëå.\¸ÍfïÛ·Ï绸¸0™L\UCCÃÂ… ¿ýö[##£E‹9::Z[[Kv&55uÛ¶m©©©ééé999ÁÁÁ>>>©©©L&súô醆†ò‡#µ{³gÏ› ©Cûž={öÝwß]¾|¹¾¾¾gÏž¾¾¾åååIIIöööëÖ­£ÑhÎÎÎR[4hЂ 8δiÓ455¿ýö[uuõÉ“'¯Y³æùóç_ýõ‰'&Ož¬`>>>bÊŸÏ—5Q€ÎA]« vmÛÉÊ:(5o¡œDyR3J&9¤Ö&™µOVg$SÿÉÊ1(«Y 9@333wÉ’%FFFø±——9QR[W<Ýb‹MÈ9PÖè䤩tjìZx¿ªíZ•Á'ÊCùúúîܹQåIÍèããSYY•’’‚“Rk#³öõèÑãîÝ»¶¶¶²:C¦þ³±±;vl†#µ{ :@|§ejjÚ¯_?üØØØ˜ÌÂ.µõÕ«W§¦¦Þ¿ÿÞ½{bé W®\ùÃ?à”€Š4!ÿ@9£¨øÌzÛÉÉ:(I~¢<É ’I©$³ö 2DVgÄRÿÉJÇ'g8R*84ŒŽ|y°Åtˆ­J·(¿ 9Êݦ©´#¸¯j;YYñÝ«Xa9‰ò¨å J†@±$‡T’YûätF,õŸ¬ƒŠ ‡Ú=E†&u€RËj]Át‹-6¡àÔÑÉIS èdðÙŠ¶ÓÓÓëÛ·¯¿¿ÿû÷ïÏœ9sæÌKKË+W®;v,77·¶¶vìØ±jjÿýk@SS3,,ìÏ?ÿLHH`³ÙUUUÑÑÑŸ}öY||<.Ïb±X,þXAiiéøñãÍÌÌRRR|}}%³ åää\»víáÇçÎûúë¯ $Ù™°°°ãÇççç×ÕÕá܃!‚ öîÝ›àèèHnlq8’Ý#_–”54CCC„µ†âââcÇŽ½|ùRSS³¬¬, 77—ÉdŽ9Rjë!KKËððð;vàÛÈÈÈÌÌlýúõ™™™§OŸ¶³³suuU¤‰3fÈ?Prt²& Ð9¨Ÿ­€8ëJjÖA©I”‡ÉIrH6*+kŸ"‘ŸcPÁá´mhm˜ÌöM·ØªÛœ¦ðá ×¢ªƒ$‡9AT$9*¸¯ Šà¾ @WkU{"¢££vBJ$‰AGÔÜ™“&Ö–dÓAtÐ0•¢ãÎ$X«>ù]¢]»võèÑcêÔ©TÇ5Ñùþøã­[·R·,X°€Åb:t¨ 3#Y!¹÷СC½{÷=zt' G¬-©M¯[·ŽÅb>|¸ãúóáľ!'KÎmkÕ¡¦8Ú¹sçœ9s:®þjB)êëë+++©[,,,ÂÂÂúõë×¶™«º×ÏÏïË/¿ìœáˆµ%µé£GZXXth>≻Z{Öh3ˆ±ôAÄR‘¡}:¨þŽhB)æÍ›7oÞ<ÉíŠNlfÄ*ìèó"g8bmImZÅObkw©øpÀÇždm½fÍš^½z]¸púROQQÑåË—µµµ=<<È èA\»v-%%eèСӧOÇÉ“òòò455---/_¾Ü­[7jy9õKmB²~jW³³³CCCõôô†jdddccƒ‰D‘‘‘OŸ>8pàìÙ³ÕÔÔD"QDDDzzú˜1c&L˜€zñâEaa!›Íîß¿``àgŸ}6fÌùmÅÄÄà›ŒñãÇß¾}!¤¦¦æêêzýúu„ÐðáÃy<^II F›©ºuëvíÚµAƒ‘õH­¼¡¡!<<<;;ÛÐÐg±‘œ=©Ê:ktx °í¬¬¬ììì´µµ-,,pìééIöññ‰ˆˆðööŽŽŽÞ¼y3B¨¬¬lûöí+W®Ü³gXyYõËjB²~RCCÃÊ•+/^ììììáá㋱`Á‚«W¯®^½zÏž=GŽÁ[’’’¼½½9²oß>„Pqqñ·ß~»ÿþ½{÷¦¦¦z{{Ëo !Ô«W¯5kÖ<~üXGG‡Á`|ùå—FFF,«¤¤$,,ŒÃá8pà믿Æå½½½=:räÈC‡½~ýZΌɚ± eÍ›¬š¥ÎO›‡£ ƒ1|øðiÓ¦]ºt©Å!+x"ÊÊÊvìØ±dÉ’ÐÐбcÇîÚµkûöír*wqq©¬¬ôõõ­­­uttär¹’³'õ@Yg €Žù«>„XŠ£¯¾úJj2¤6$O’Z¿¬&dÕI&»"™-++‰Dƒ>zô¨‚°ä·…­^½zܸqA$%%!„Ž;FĶmÛÒÒÒp}ûö 4ˆ ˆÌÌL„P||ùÄÁÁáøñãUUU‡ 8|ø0~L ^tÉ@·džCù#’:ó ùåË—’óC=Dñá(¨¦¦†üB’@ ÐÐÐ`±X-Y‘A=}¡††„P÷îÝ¥–•xŒ:{8Œ²ØQQQRÏç_ñ~UQQ‘“““§§'!‘Vꉥ8Â÷­xAI†Ô†äIRë—uˆ¬ú1ÉdW¡ñãÇ777GFFâùÙ½{·‚°¤¶Õ¿ÿùóçÏŸ?îܹ!æééùË/¿Ì˜1ÃÄÄÄÍÍmçÎ , +!Gáä䤩©zúôé›7op_ù#’?óò÷JÖ/9?TŠId/û«¬¬¼wï~œ’’2mÚ4:Þâ9øqZZZII BèÎ;½{÷¶³³“ZXVâ1êìMž}úœ;wîĉêêêZZZÍÍÍä7¢££>œ““#¦M›Ö³gÏ7æääÜ¿ŸÇã=|øÐÔÔt„ ò[¡ÎL]]Yá¸qãÄöVUU¼|ùR Œ;V²ÿ½{÷–œŸ¶ §²²’ÚVDDõG\¾©©)44tÊ”)>|ôèQppp·nÝäO¬â'"..®©©)!!áÖ­[¡¡¡.\°²²’ZXVâ1}}}röæÏŸ/y ¶¶¶Ô³F¾( @» æ¯úø?[ÿú£Ñh«V­š4iR»×_^^žŸŸ¯Hɦ¦¦ŒŒŒªªªN®¿©©©¹¹¹¡¡!##£®®Žº«¶¶6##¿OÎÎÎ>–ׯ_ã|>ÿÍ›7rJÖÕÕååå‰D¢ÊÊÊúúz¡P¨H+ògFþ^jÍræ§mÑÏçã­TUU½zõJìÓ4­}’H–ÿꫯ&L˜ ²³³©gVjaþ8ë›7o>tèÐÙ³g—.]jnnž––ÖîïZ :Ö­[÷ôéSò5Fº®WœõÂÂB77·¥K—"„Œáw|Ä""" 444öìÙ£ì¾Ðž>þϪ©©‘_˜-))yõꕲ{@GqwwwwwWv/hÕk€þþþ»víRv/ uôôôÄ¢9ôÏ×?ªµJªo¿ýÖÅÅe̘1Ë–-;{öìƒ>ýôSew þF#Úû5êZõñ¿èì윙™ÉårÏž=kgg7bĈ¯@gúW¬UóçÏÏÈÈ@ýðí ‡@é>þµJ[[;==½¸¸xݺuÓ¦Mk±üË—/=zTUU5qâD[[[ewÀÇõ~|¶ÐEÁûU’>ÚïWùûû‹}í9,, !Äf³W­ZÕâw¤q¡~ø @0jÔ¨îÝ»ã¯ô@ÇQöµ³ ø¨Ö*1©©©Ë–-SSS»zõjZZZ‹åþùg„PÏž=BÕÕÕ‰‰‰µµµÊüÛ}´k•H$Z²dISSÓÞ½{'NœØ»wï¼¼<ù‡àã8}”¾¾þÕ«W£¢¢ðÒ@‰àý*P>x%PÒ¿âýªéÓ§«©©ååå;88eôôô"##¥¾dŒ“ò]¼x‘Üòúõë§OŸ*û¥lÀGNÙ×Î.à£Z«¨ÒÒÒfΜieeµzõꬬ¬¥K—ZXXÌ;·¾¾~Μ9Ïž=“}úìÙ³¿üòËS§N±ÙìÅ‹GFF~ýõ×¹¹¹Êî# ±keøh?[AµqãÆ?ÿü³¶¶öäÉ“‡NHH°··OOOG=ZÙ ¨v­ÒÕÕ]¿~½‡‡‡††Æýû÷ííí322***¿þúkew€¢>ªØµR߯ºzõ*õGCCC„²; ÿ¥§§§ì.¨ºöý*RSSS\\\~~¾¶¶öþóŸäädƒ¡ìNhÁ¿(×bJJ ‹Åš>}:þñ·ß~ƒ… ºœöý*„зß~;lذÄÄÄà-|>_ÙÐjóZŽ"âÏ?ÿIJ; Õ>æµ €‚Ãá,\¸!tóæÍaÆ)»SZíc~¿j÷îÝÏž=;sæÌÀÿúë¯={ö\»vMÙÐjó}Õ AƒbccCCC?ÿüóØØØßÿÃá(»SZíc¾¯BÙØØœ9sFÙ½ðA>æû*X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«¨:X«èB¡pÓ¦MAˆm?qâÄgŸ}&¶ñÝ»wÊî/* Ö*:„ššš‹‹ FÛ¾|ùòׯ_‹mô÷÷WvPiêÊîªèþýûÏŸ?wuuíÕ«~ìææÖ£G”””wïÞihh¼|ùréÒ¥7nÜhhh=ztJJ dz°°¨©©éÕ«×ãÇ­¬¬š››BAܸqãõë×öööwîÜÙºu+BèÉ“' .400 Œ½pá‚««+‡ÃQöÐPEp_€¸ØØØ£GŽ9ÒËËëæÍ›çÏŸ÷ððpww¯««ëÖ­ÛÌ™3›››»uë¶bÅ KKËíÛ·÷ìÙ“ÇãuïÞ½[·nË–-KNNþõ×_9ŽB(&&&""bÉ’%6lpuuUSS+///((`07nD¹¹¹±Ùì3fèèè({è¨(X«wéÒ¥)S¦ØÚÚ…††:;;³X,ccãøøxkkkƒáââ2mÚ´èèèÁƒ;88$$$äå幺ºÚØØ”••M:õÖ­[¶¶¶!>Ÿ¯«««©©I„ Fc2™³fÍš9sfNNBHKK‹N§kkkÓétekâX,Vii)ƒÁàóù§¦¦!TSSƒ_ knnær¹zzz¡7îܹӨØ¿5ejjjddD­­OŸ>uuu§OŸ ìÖ­Bß?©«« …B„N …B¡0::ZÙC@EÁûUˆóõõ]¸p!ÇëÙ³ç¦M›¶nݪ££cmmíää„ÒÖÖþñÇóòòvïÞ7nœ¿¿ÿܹsBQQQMMMqqq“'Oމ‰yûöm\\\nnnffæ»wï’’’tuuÓÒÒ***233‹‹‹“““…Bᆠ¾üòKeEè8üYò#ewÕÂãñuuuBB¡°²²ÒÐÐï²°°ÈÎÎær¹:::ñññC‡½|ùòòåËeUµ{÷nggç~ýúݾ}»¬¬ì›o¾‘,Ãår…B!›ÍVö¸P!ƒ† Ã}R0™L&“‰Óétr¡ŠŽŽf0 &L@8p`äÈ‘ëׯ—S•™™YjjjIIIeeå’%K¤–ÑÔÔTöˆPip_@Qï«à³T¬UT¬U´LÁx}gÏžýôÓO‘ì`€€¶µ €–)¯ÏÓÓ³¬¬ ÉhX«h¯¯²²!”˜””„""&&æÄ‰ÿý÷®]»„B!^Ÿq0Àää䘘˜ÇTTT „=ztìØ±üü|e €®Ö*Z@×äéé¹fÍšÜÜ\ÉXøCCC ÍfÏž=›Œþw÷îÝ   ¥K—.^¼‡Ã(¾_@ Èx}¡#FTWWŸ>}š ˆŠŠ ÉXøþýûã`€ýû÷×ÔÔtwwóæMHHÈÅ‹ ‚ c2™©©©cÇŽUöàèྠ€PãõEEEݽ{wåÊ•ºººAHÆú“Ô½{wô¿è X±bÅõë×ííí•=2º ¸¯ ÚÚÚd¼¾ììì/^9rD[[;88xРAÔXÙÙÙïÞ½»uëÇÃÁëêê¨ÑÿÆÿóÏ?Óéôªªª-[¶({dt·€–QãõUWWkii1™L@°oß¾cý‰‹.âÐ:Ôx}8 -BH]]]‘Xb¨Ñ ‚µ €¶“^ÐŽà³T¬UT¬UT¬UT¬UT¬UT¬UTm ãpe÷çÿöõ¤vÍ›ÛZ%tEXtdate:create2015-10-12T09:25:13+01:00(¿xb%tEXtdate:modify2015-10-12T09:25:13+01:00YâÀÞtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/ScorePropsEditor.png0000644000000000000000000000013213135434036020702 xustar0030 mtime=1500919838.103315139 30 atime=1500919916.419981805 30 ctime=1500919913.376648472 denemo-2.2.0/docs/images/ScorePropsEditor.png0000644000175000017500000041215213135434036022560 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRãYÂŒmsBITÛáOàtEXtSoftwaregnome-screenshotï¿> IDATxœìÝg|Õ×ð3[R6›^I'Ð ]N<(Ò‹", (ÒP@PP)J ‚‚’@(Ò¡„@HH%½'ÛËŸÇã±,«Öh´ Ïðù,ËjµZ]//7îEBbÒÈQãžnòÐG9Ô®m›æÎ¢nÎG jN¥jµZ‰TæäìèëëWUU•˜P\Râàààãã#²²–J%µšˆ†Ñm2rԸ쬇O5wh߀Ôû‰ÍE½j6i4š’â"‰¤ÚËËçÑ£GçÎã1ŒµH”žžÚZ,«” K à‰m³³²žVÎðOÒëÙþDtåÒùfΨß8ý]ãóð/sæÌ¹úñx<]‹B¡øñà¡)/¿¤?jdNU øúúZÛØ¨Õ*‰DjmmݱC'gç²²²êê*–XIu5aÜÝÜô·òñõý[ÇðQ\R²jÕ—.]®¨¨´µµõöòúý÷_›;©&`ô4áã@DB¡ðÊå?<<<¸Æ¼¼üÞÏöS©TDôO¼`‡”‰Ì¹KKKoïÑ£G¾úê¡Pø4ò3™UÍ´›êü®?jÓï¯þ®¹×u[xj‚BÚšî`tòö‹-۾زuÜØÑk׬æŠÕüü‚×çοs7¡¢¢bþsu=TªÕÕÕÄ0|P&—«Õj K>Ÿ¯T*e2™ƒƒƒJ©Òjµé™™¦eKoÝV˜ShK—½÷Ç…‹Ö¯íÙ£{ÚÃô}û¾ýwü‚51 –e?þdÓ‚7ßà?Ûü…îÜôÏ{™s“„%¥¥[¶lûø“M™™™oΟ÷423I?m.æ} ¦FMçÖÖLãŸû©øãñx.ÎÎ.®.în..®?:\³Ï™3ç¾Ø²•ˆ>BDk׬¾yóÖ¼ù JJJ‰hË—ÛئMk®³‘«•*C¤P*r¹J¥äñµF£T*er¹1Z­š%’H¤Å%%ú[aN IÜŠ»MDƒ tww ¬¿öø‰ß¾þzWZÚC›oÍñʼnD¤Õj÷ï?°ÿœG¼<=_žòÒ´©S¸¿SrsP~°jûޝòòò³2ÓX–ýᇃßìÝ—••Ý¢…ÇôiS§L™¬±¾]»÷¬^½†Çã9;;‡‡zoÅr±ØFöÓMoùrÛ£G¹ÁÁAkÖ|еKgn«ï¿ÿq×®=™YY~~~¯¿þ ×hâ41f̨cÇŽ/[¶ÄÅÙ¹¸¸øø‰ß'Mœðíït[`eee·î½T*UìµËnnnDTPPУç³B¡ðzì{{ûÚ†É%¿aýº/·nÏÏÏ XºäÝÄÄÄ}ûTTT´nºvÍíÛ·#"Ǫ¶# ›9ä®Y59³ÊMú~üñúSa]ÏžûcãÆ¾eu¾¿Ÿ}¶qÛ¶¯233}}|æÌ™5iÒnuæ¯Û‹îOúiëO`šuëVÜÚuëïÝKV©TÝ»w›3{f¿~}Mº&Ÿ]Fmƒ>üµe3~ÜØââ¢ü‚Ââ¢â⒒¢¢Â¢¢¤¤{µõ0 ß¸±£¹2õÐá#©©iwÕj5 ‚åËÞÕ•©dtNÕV,&">/—Ëe2¹\.Y[‹ll¤R©Hd]QY¥Q« yYi©þVø'@“‹mªªª Ò»W¯ŽÛ÷îÕËÉÉ‘[uèð‘Ï6ѽ{·ýûv[ZZ~ó;>Ïö"¢ŸÞüù—ãÇÝúåæ»ö¬\ùAyiÙ¸qct1¯^½ºwÏ.±Ø&;+ëÈ/Ç6núlèˆ/6úý?®xoeeeÅÈFMæQΣïìõòô"úõøoë7|Ò«WÏO7m ¢6|Âu6qš3jä¡C?oÚøé믽²uÛF3fôH®R嶪m€áƒ~=þÛž={_zq"øîF3|ø°ªÊÊ}û¾5=Ì .ìÞ¹=..þݥ˧N›1üÿ†~»o÷íø;‹ß]6ï7ìÿ†ˆêŸ™ì¬,£Ç¶AþÚ²€ÆY·vµîµF£)))áªÖü‚‚÷W~P³?Ç[»f5ý9§w;žkwvvúò‹Ïºuëªß™ÉÈÈ "–e¹o©‰»HD––"‘Mzúdžóx¼òòrOOO¹BQ]-IHH°··›9}2%(¤-nh±±×W­úðnB·haa±ñ“ £F½@D½z÷ËÎÎ>wöTPPþ&„§¦¥Å^»Ò¢…Gnn^ž½ƒÏ;MN+ݼqÕíχ ñ 5õâ…sþþ~•••mÛu >{&ÊtVÆ¿e°——çÕ˜Kº°×c¯xxx¨Õê–!</3#•ˆ rÿþƒó碈(-íaÿƒ©–ÙEÝtÙü7œ>}ò÷C‡ ?~Ü«WêOèÕ6Àää”ðˆa¡¡­NŸ:IDƒÃ‡¦¤Ü>ÙªUˆ‰ar‘o\qwwW(AÁ­ucÑjµ~þAº±ÔÄè¨ç}ª\‡¢¢¢>\{ô诳fÎX¹r…Ñ·¬Î÷×àh·j}:²>ùëï¥fÚú-&Bµk&•Jþr84´•………éQà‚›þÌè§Q3É}ø  ŸýÒÖD(kssóFŽWZVÆ-:9:ýå§g ý>ÎG þøãƒ-EÖÖ,KZbår™\.W*©©©qqqÏ?ÿ¼………D*•H%ÕÕUövú[áO•M¢…‡ûW;¾,,,º|%櫯wUVV®Y»®k—0"ÊÍÍ%"¦Æ¯Üìœ"’ˤÙYY܃ˆr=Òï£Ëu‹™™DÔ§ïÝÚôôt£¿Ã“î}ýõ®R+«ª¸/ÓÎËË×ï©R*u‹Z­–{••MD ±W±¿…Ûôìâ¸1£;>vìµZ3zä]gîEm´YwîvëVÜ™è3,±))÷»té,²¶ÊÎʪs˜J…¢Î±ÔÄèVuŽ—ÃÕQîsfÏ|éʼnµ½eu¾¿G;33«žùë略´ë õÊœ™[¶lþÜ </$$xîk¯tùó:ðšŒÞ§ZŸÏL­¯òá€fwýúyóèÊT"*-+Ûòå6Ý–tS¦L!¢©S§êšTj5˲VK¬R©b‰rssmÄb'GG•J-—Ë‹‹ŠX–å.ÖÁ}ªMÈÇ×·K×.Çÿ_ÿƒår÷;ÖÓÓ3;;›­ñ+×Ó³Ezz†•µˆ›V""o/¯šÏMåxxxdggs“¦s?qrNNÎ7ßìê߯¯B¡ mÝN«ÕÖV·èëësÿþ–n1-í¡ÑÎúøúþß°¡'~û}öì™Â bšà믽2kö«—.Çp7³¼þÚ+\{Ã4š¼Áâ_ Rçi±þ½­óý58Ú~~¾ËßD‹‰Po¼1ï•Wæ$'§üñÇ…?Ù´f݆×cê3.ú|fj{Ý ?4¯o|¿vÝÝ©íÛµå.Ö=`I¿X5òD%ŸÏ²¬Z­V(”*µŠeÙAÚÚÙ ‚òŠÊ‚‚ÂG99b±Øà\…?X4‰×ç½9zÔÈÎalmÅW.ÇQ·®]¸ß±cÇŒúlóï.Y¾tÉ;ÖVVûöxcÞëD>ø«¯wmܸ鬙ÓwîÚMDÏ=7¬¶9¨1£_Øüù—K—­X¸àM ¡0þÎ݃?Þüé'53Q*D$—JÓRS¿úzWÍPF§ãF|aýÇ—-_±ôÝw¨~÷©r«–-]¼léb£»01ÀÐV­Z´ðøùÈ/,Ëz¶hÑ*$„k¯s˜¦çÿJ{ûòŠŠkW¯zzzÖ6dÓÄ`mïïã£Í0ë×BDcFlDþµ¥]g¨¥ËÞ{ù僃‚BB‚ˆÈB(¬Ïݹúêó™©íØ6èÃFÕù}3TËWÎ4HRÒ½>\Çýe™»1µK—ÎËW¬Ô=`‰ž,V®+Ã0ºûTsr ˆa*+«ò ª*+ä2Y‡,,-srr’’’rrr„|Aûí;uìä§îSh3fÌN¹ÿ ¤¤X¡Pº¹¹4ðÝÅoÛÛÛsk?ñõÎÝ©©ib±xá‚7¹§¼ªÕšíÛw:üs^^¾——çK/½8sÆ4ýÇŸüŠ>vìøÎ]»¹™«nݺΚ9½oß>53¹v-öý•«ŸÓǶ¡~€ÿ8£÷©6®RmÄ}ªÜ—©vhßnÛÖ/<<܉H«ÕêŠU"Ú±mËàÁ‰èÂùh#•jZZVzFFfVVUU•F£aÆV,Ö²liI‰\¡ÛØ„ÛÚÚúøxèò0¸óþnúϨS¯gû7á•Lw¨¹#–e÷ûÝÄ ã,--uºbuþ¯Ïc.×xá|´‘«…B¡«‹‹J©T»¹ÑŸu,Cäëã#¶±±··‹Å5î‡û@šNÁðô5¢âefê”ÉÜW× 8€›Mý_çšsª˜4rÔ¸Æm OÁÑ_µkÛ¦¹³¨›ñ9ÕFh×¶MSM"À¯î.O‘‘9Õ–¡qqqéééR©ôé'ÿ)"‘(  S§NéiÉ\‹‘JõöíÛeeeÆ ³±±yºéÀŽD"‰‰‰¹}û¶½­×b¤RMKK6l˜………R©|ºéÀŽ……EÏž=###Ã:>~à“‘JU&“YXXhµÚ§›ü±,kaa¡ÿ©ñgÿ¢L€§†ûþT㕪A'€§•*˜Tª`^P©€yA¥ æ•*€q‰I÷~ýí·Ô´‡ CÞ^Þ£F<ß±C{ÝÚŸ}þlïgzvïÞŒü[¡R0âûƒ?íØ¹«cûöýûöQ*•±7nÌ[°ð×^7f4×áâ•Ë~~¾=ºáŒ ÐôP©JN¹ÿõî=¯Îž5cêFÃ0ÌÜW_ùè“Û¾ÞÙ§woww7""b†Áàï€JÀÐÞ¼<='Oš(•Ju³¦O‹:síÚ Ï?§kÔ1323Ïœ;_^^áíå9lH„iµÚó.&%'ó¦cûö½{=£Û°¨¸8òÔ颢¢-Z ìèèø´ð€Jà r¹üæÍ[3§OS©Túí"kë?NG) ¥Rɵ°,Ë1/ÇĬüp­¯OK¿Ÿ~>rð矷}¾ÙÍÕuÙû«âïÞ}¦G…B~ø—£Ç=c:%§¤¼½d™³³SHpðÑ_ÿpð§ë×=ýÁ˜'TªO((,TªTîîgC–e+++Ÿì˲,«R©¶lÛÑ¿oßµ«WQUuõ´YsvïÝ÷ÒÄ Wcc¿Üüi×ΉèëÝ{~Œš5}˲}²©Kç°õk>äñxJ•jîü·6}¾eû›ŸÞ Ì*U€'Èå "²‹ës6dY6)9¹ °pÓ†$ ñy¼q£Gmß¹kÊ‹/Ñ›·‚„BáÌiS_›3»²²25--+;{Õ{Ëe21 óÒ¤‰KV¼WYYikkû7àŸÁx¥ ðŸåèà@D¥ee5W¥=L×h4!ÁO\¦[XXÄ0Œ‡»;·È²¬··B¡ÙˆfL²÷Û?:Ü&4´G·®C‡Dˆmlòò ˆhÕ‡ky<· w9qYy*UæTžàââìæævûÎþ}û¬Z²â½ÐÐV¼·‚[dYbYÖÒÒ’eY…Baiiɵ+” "R©T3¦N™4aü¥ËWnܼuàÇùõø×[·ðù|"š?÷u‘èq\†x ÏÝÍç_¯¹0/,Ëþ߈ÓgÎ>ÊÍÓo¿~ófiYYïgzô÷ñö"¢¤äd]KbÒ=‘HTZZºsÏ7IJƒô_¾dñîÛó ’’ü|}ˆˆÏçµmÅý¨TªË11ºB0§ `hò¤‰§¢Ï,^¶|þÜ×»vÓjµqññŸ~¾Å³E‹ðAƒþw–dY–e[úû·kÛfÇÎÝkW¯tvrJHL:úëñÃÿO©Tí;ð³“Ó°! …âZìu"òláéíåÕ¡]»/·µfÕû.ÎÎ…ë?ÙÔ®m­VÛœc0'¨TŒøró§¬ûhùÊU|>ŸeY­Vòáª÷™'Ï’,˪ÕꥋßY´xɤ)Óììì***zvï>sÚT>ŸÿÂóÏ}úÅ–Ý{÷‘D*}mÎlo/µZ½ê½å Þywòô™ŽŽŽ¥¥¥mÛ´^8ÿ œ|tî¼È0 ˲i’ˆèrÌ!C†4wb͉ÇãÙØØäæå=HMÓj5þ~~-[J$FÃupppËår¹œˆø|¾¥•U|üÒ²2??ßàÀÀêêj–e¹iÓ…BAëÐP[±˜{Þ/ljDwŠ‹K¼½¼B[…TUU¡R€ÿ¸¨¨¨ÞÏt%¢ ç£1§ `„F£©¬¬´·³ëÑ­+·XQQ¡ß¡LïáÀjµZ#‘´mÅãñ¸ ¹öêêjG.‚Z­–J¥ºàUUU!AA­‚ƒµZ­Ad@¥ P+µZ­V«ëÓ“eYîËfêÁh <ûÌ æTÀ¼ Ró‚«À¼`NÌ *U0/¸úÌ‹‘9Ukkk¹\niiùô³€ÿ …B!‰t‹F*ÕÀÀÀ”””«ðwS(÷ïßе©T;uêDDwîÜ‘J¥O/5øO‰D:uJOKæZîáI ð,›ö ‰ˆ.ÇÜhÎà?©÷3]‰èÂùhãÏþ2eÊÓÍþÓöï߯{gÿ€yA¥ æ•*˜Tª`^P©€yA¥ æ•*˜Tª`^P©€yA¥ æ•*˜Tª`^P©€y4Ë^ó”yÛó¶'H*4>–>ÇuËgøO9#ÅGN•ŸÒ-Šx¢@«À‰®…ÎO9“š>\8ÊyTû>ÍÀÓÖ sªw%wûÄ÷9_q¾¯}ßI®“œÎïf¼ûbÊ‹ZÒ>åL¤ 'KO ÷S¬*þìÑg½ã{§ËÓŸr&œù;·äná^ÿ^ú{º¢yÒh^Í0§º1g£›…[T»(kž5×2Üiøä”ÉÑeÑŽO9kžõ—_ê3äá ás6n Úú”3!¢xI¼D#á^'vIä1¸6þ‹š¡RM“§u°é +S‰h ÃÀ¾ö}ËÔeº–DiâÑ’£R´ƒM‡1.cÌã¼Èk‘³Ð9O™w°è`ž2ÏÏÊoœË8W¡k}ró·ò³ K–%×ÖhUšªã%ÇG¹Œ:UvêjÕU[¾í—1­¬[éÂÖ–Œ~üö6í3å™r­üûÂïÇ¹Ž»Vu-À*ÀÓÂÓD «9QzâVõ-ÃëiÛsˆãF½!æ…WVVVVVVwÇÚU¨+LüÔìdt¦üLdY¤†Õè ýq‚ëîõ±’cCî¹Ry¥XU¼"sÅ„ä \Ϩ²¨ð»á'KO–«Ë¿ÊûjÀ9Šn“²>Ø¿{̽1ÑåÑJVW×ÿNÿÃŇ+4ßäÓïN¿»’»õ‹†Õd+²u°AØÚ(Q•¼þöÜÔ¹+3W( Ž•‹¸q±â"ÄD2úñÿ¨øã‘òQ¡ª0²,RŪ^yðJty´‰,±ÓïO;ýí|e~š,mÖƒYë²×5ð­0G''§¿â§âŸVe®b‰­¹j¹Ïò¹žs Wø¬x)å¥÷g¸]úØõékß·¿}w wnm•¦jqúâ©îS×ú¯%¢DibÄ݈èòèöVd¬ê8t{Ðv>Ã/U—O¾!gÖÀÇ7vþ\üó‘ÖGÂÄa,±’'ô´ë¹+x—JµÒ ÷&,N_|²ÝÉšªYõ•Ê+ÜëJMåE?f*2ç{Í×uÐ…Uj•¦H–%ŸípÖIà$×Ê'%Oz?óý3Î0ļùðMÉèâѼ´yä›oô3d‰5aKà–èòèBèg߈Ög¯?Rrd™Ï²½wfˆwôèÑ£Gþ•³=f¯ò[ÅcÐn´L%¢ ë K/íkµïy§çã%ñ .èz»ë¼´y2­ŒˆÎWœ¯ÒTéjŶ¢¶›6¹[¸ß’Üz¤|´Àk÷ˆ`'Ó4÷i¿•þ¦ ;Òy$Wï%JSe© ¼!‰x¢×Z¼/‰/W—×LFª•޽7–û™qF\uÜ ß“\'Õ [g³=f; œˆÈŠgµÈ{QŠ,%Yš\g2ºøµ©-B…¦‚ˆnTÝPj•D´ÄgIl§Xqþ)/¼ðÂ_2Ûc6éϬÖV¦r„Œ0Ü!<Ü!œˆ2™{ò÷ìÌßiÇ·[ç¿.SžiÇ·sºë:OtHD?ÿÄd¤k±‘kå…ªB7¡yYzqíÜ#sç§ÍçÓ㯽‘kåDT¤*r8dbË·½v{Í'¾ ߯ ƒ.l–"«¶¸EýS[[·æ6Q±*ÓÉèâצ¶áØñíæ{Îßœ»y{ÞöÎâ΃Mr›dÇ·3 Àü5Ù•ô‹Uejº<}yÆòý? ´ äZü,ýVû­ÎUæž.;½Îˆ'Ò¦æ†VŒK¬šUsS‹DÄjVÍ-ê&u¹Šn…Ï 1_¬A÷t"} 1¦«;]Ø:àõ_ó¾–ÕšN¦æ\´ÃYâ³d¶Çìèòè˜Ê˜Í¹›÷ì‰nmË·5ÀÌ5å÷ p—¯ö[mb6ÕIàt±òbTY”A;K,Wbµ´j)ÑHRe©ºUãïß–·-À*€ˆnVßԵߨ¾!æ‹=,< B[‘ˆ/êe׋ûá3üË•—kΗ6H ÄVýïâÛ«UW‰(Ð*ð¯'S[„Tyê§>u8Lp°9pó±6DzÙú9üC5ñ7vÎö˜ÍM®ÖÆ^`?ÂiÄg>;T|Hª•‘D#Ù[°7²4r²Ûd"êcßÇßÊYƲ*M.>|©òR˜MX;›vÅWe®*PQlU쾂}\'ðj !Ø:¸‹¸ËªÌUùÊ|"ÊVd/x¸ S‘ù‡Vg»ów_¯ºNDdÖe¯{ÖîÙ«€†&£ÿýþôv7ÛÙ ìKU¥oz½ùŒÝ3D´1`ãËÉ/w‰ëâ(t,Q•ô³ï·Ä{‰Ñ]l Ú:9er÷ÛÝ]…®…ªÂN6Öú­ýë™›N`¸Óð±÷ÆŠø¢ u…¥Ïú–뚌¥ÏÖ’­ƒî:ÖæXñØOrôvúÛÜ—ÓTiª{/±ùëÃh^ÿ»I’eÙ´IDt9æÆ”)Sþî—¨JnInI5Ò-BE¡7‹J4’˜ª¥VÙÖ¦­Ÿ¥Ÿ®]©U^­ºZ¢. ° èhÓÑD|5«Ž­Š-RùZúš~¸nƒM CžÑ+¾×Év']…®7ªnØòm{Ùõ²äY64«:_~^Mêp‡ðru¹˜/¶âY™Žð@öà¾ì¾cÑÁ¦ƒî›~þqöïßßû™®Dtá|´€eY"b˜:žëÓ䜅Îܳ²áÛ v\³Ý‚gÑ×¾o}â A/»^ϯ¦ð´ðá<¢ÑÉa¸ããcâ"t©O„`ë`îFV€&¾Oà/B¥ÚŽ‹½×| 14B3L×-ZY[…†„ aeii:1ýà?ûüÙÞÏôìÞ½þ›Ô_QQÑ?ºŸšZ]-iááÞ§wï¡á<¯AAþºSgÎ\¹rU·hemåãí=|èPû§œIM;°õ‡Jžð -íâåËô7høFùçææ]¸téoÑ.¶ eÃX":ôó…R9yÒDƒþ·ããS¦÷èÖ•ˆX-›óèÑï‘Q¿EFíØò¹éjP?øÅ+—ýü|{t3µ#ƒMêéþƒÔy z¸» ˆ°‰¤¥mÜüùé3g7nøˆÇ0õó×¥¦=üãÒ¥Áp‹åågÏ?ðÃ_oÝâíåõ43áèçFX€A¥ O`ˆ±‰V¿·Â ]­V«Õjc0D w^8w*R©TrÝÊd2#ç †iéï§‹Ï0Ì©è3+V­Ž¹v­WÏž&ÓNÄ0ÌãÖº#ÃMêeϾý®..ßîÙ-X–åóùƒœ¿pÑ•˜˜ÞÏמ‘™yæÜùòò o/ÏaC"ììì¸ö3çηmUQQu:zÚ”—ì틊‹#O.**jÑ¢ÅÐðÁŽŽŽõy#œÛµmû0=ƒË¤fX£ H¤Òó\4pÀ•˜«ñwïÚØØD èïç§ [[2úñƒƒƒõóÍ'ß £´Zíù “’“y Ó±}{£G 6üU«VÑêÕ«W­ZUVZDDÙ9¹;v4±M|||HHÈÓÉž²·n¥>|8qÜØÚ:üxè𺠟¨Ôj"úþÇŸòòó%)×ÿµ7Þtss ú=2ênb’D"•ɤ}zõè§ÏœeY6bð ]Ë…K—/^¾2gæ {{û7, hÀ­Úÿý÷×oÝ⮀Õ'¢Ÿ~>Ò¡]»ÐV!&vd°É²÷V–”•~ûÝ®®®9¹¹~øÑÖÖ¶u«V£»çjl¬¯·—'Ã0D¤ÕjG<7<0 ¥F£!¢³çÿX¼t¹Z£ „?=zãÖ­ˆAƒ†¹³`ñ’ŠÊJÑÙó=~¼_Ÿ>666Dôîò÷d2ùç[·•”– œ••õúü·òòóíìì.\¼tèÈ/]:‡999dr+îvʃ“ÆÓµh4šýß}ïâìÌ=ƒ°q·oM ¨¸xÑ’¥™Y¿EFÙÙÙÞ¼÷ã¡ÃmZ‡¶ðð ¢ä””ڒѯѨ¦gèŽó é¬ÑŽŽŽËÞ_u䨝.ÎÎeåeû¿ÿA¡PtëT üóÜ¿ßßߟ{]XTT³ƒ»Ûã?n:88˜ˆïëãID™1§ O`‰dRéú› ÚÇàï_\RòÍþo'Œ³è­7µZmFfæ”™³­­­Ÿ†ÇcX–?÷õòŠJ™Lºaíšš—æ¦gf®Ýð1±,[XT|/9yÅ’w[úûk4†!ÃÓõçñxÿ[ü3¸.Ó:w¤¿ Ã0\¼ôÓwß:ØÛóx¼·Þ^|ñÒåQ#ž7æÜWç,xçÝ÷VàààÐ%¬S—°°n]:;;;sk¥Ré§Ÿ1vô¨·¼¥Õj¦§¿4mÆ•«×ºwí²eÛŽþ}û®]½’ˆªª«§Íš³{ï¾¥ï¼Í¥qú̙۾lÓºuuuõ¢w—vé¶~͇<O©RÍÿ֦ϷlÿbsÍ7B£QÇÅÇs‹ÕÕ’ÈS§åæN{y²î€è–——›J€(#3óàý¶b±Z­~cÁ¢­;¾Úµ}}ôɦZ“Ñ‹¯ÑhV­Y§;κ˲¬ÑKßYt56öËÍŸrO]úz÷žß#£fMŸVLJàO¨TÀkìê_V˲,{õZ¬V«9}ZUUy¸»G tñòÝye‰eY™LƲZ–e%IÍð¬VËÍO‘½­Xüã¡Ã­C[¹»¹ýÙƒ}¢ÿ“ÁõW˜Ü‘á&ƒYYZJ¥R" ¼~ãfÍÓ™›«ëá¾»výÆ•«W¯ÅÆž9wžÇã è×oÑ›oXZZ^¿yS"•¾üâ$nøž-Z¼·t‰»›kRrrAaᦠqiðy¼q£Gmß¹kÉÛ‹ï:|°Ÿ¯oeeejZZVvöª÷–sG˜a˜—&M\²â½ÊÊJ[[[ƒÔe2ùÂÅKt NNŽó_mhD¸R©4›”T[Ü'MÏçñ$ Ã03§O÷Ö´‡é,«5Œ.>÷¶égîÀÖ6‰DJD7nÞ  …3§M}mÎl.@}4²R€1‘Hôñºµr¹\£Ñz¸» øŸ¬Ñhüýü.^¾Ò ø-×}°š{Í0ŒL&yƌ϶|¹þÃþJÚqññ‹—=~þи1£ç̘nÐÁÅÅY«Õr¯Ù?_Ðjµ2™¬KX§ݺ ‚¼üüƒ‡ð'±Íü¹¯åˆÅb±XÌÅÑh4áƒj4š¨ÓÑ Ãx¸»?β>ÞÞ …¢´¬ÌÉÑ‘ˆ\]\¸âÞ^D””œ¬kOLº'‰\]\ váçëCD|>¯uh+îG¥R]މÑU˜X=&2¯3» ‰ºUw¸MšLMµEÈÈÊÚ¹çbÙAú/_²x÷Žíù Iõ£ÿ˜SC*•êÒ•ƒFQ§zõìáää¸ióï/_j+Ÿ9wþÚõë¶¶¶ÿ;/èÕTú3Š:,QEE….¾F£¾q+îÊÕ«‹-dYÖÁÁáòÕ«û÷ãóù¿GF¥¦¥uëÚÅhðš;bYV[óš^½núõûgËc‰"ÚÿÝövö}z÷²²²’Éä§Ïž½péÒ‚ùóY– ëØÑÛËkËö+—/‰DÑgÏÅÅÇϘ:¥¥¿»¶mvìܽvõJg'§„Ĥ£¿1üÿôóáöåíåÕ¡]»/·µfÕû.ÎÎ…ë?ÙÔ®m›š™Ͱ&®ƒ‰¸GŽëÜ©SÛ6­³²³w~³·[—.ž-ZQÉè'ðÄʲ,ËÖ6…B±ïÀwÎNNÆD(Šk±×‰È³…'þÿõ„JžÀI¥ÒUk ïS ØþÅf†aÞ[ºdùÊUc'½dmmÍãñfMŸvððá?Ï ,ûç9ÂÃÝýÀÙssæÎÛüÉÇÖÖÖú¡¦gèâóù|o/¯Å‹þߥR9mòä ›>}qêt@`gk;~ì˜ôŒŒšÁ§Z׎jlòD¡ûÄ⟫½9ßÒÂrãæÏ?ùl³¥¥¥B¡Ó^~ù…ç†sw꾿|éâ¥ËÇLzI,¶©¬¨œ1mjÛ6­ÕjõÒÅï,Z¼dÒ”ivvv=»wŸ9mjͺZ­V¯zoù‚wÞ<}¦££ciiiÛ6­Î£¶k'\½°¦4`ÀÛK—YYYUWW·háñö‚·Ôj5Õ‘Œ^m¯œu‡¯¶áXXX¼ðüsŸ~±e÷Þ}D$‘J_›3ÛÇÛËô]¯:ÿ{v?˲i’ˆèrÌ)S¦˜ØfÿþýC† yJ ÀÓ%‰Œ^:«V«¹g· …B-ËÞŠ»­Õj»„u²´´´´´,//'"–e¹ï åºÅÅÇ«TêŽíÛé·CD¶¶¶B¡P·ÈM„ÊårÝ Ÿ¥eeÉ))¶¶¶:t ">ŸÏ=hW?¸ƒƒƒ\.çî·¬mG&6!"kkk¡PXói´ ÈD"‰Tš˜tO*•º»¹´ º‡! >Ÿëv¼R© mâäèÈ­âóù–VVññwJËÊüü|ƒ«««¹“¬Á®y<žH$º“P\\âíåÚ*¤ªªªfE*‰,--Ëþ|$RMakK ¿ `ÊÌÙ»wlsww¿s÷®XlÖ±ƒR©äŠFÉÄ×?Î ÃèlmlllróòÒ¦ …‚Ö¡¡¶bqÍJÀ¿CTTT¿~ý¸×wÝÔ¾mî…ŸŸŸ‰8û÷ïïýLW"ºp>º‘•jDDD£†ÿ ÃpÕ¦J¥Ò/±x<žþ¶ôçÃ`ëÏçóù|–e¹Ç)Õ\_m;2±‰i<Ïç3 £Õjk^ÃÌ0Œ@ `F­Vë_(˵óxÃoÆ”ö}š|ï_d³…9U0#w%wûÄ÷9_q¾¯}ßI®“œÎïf¼ûbÊ‹ZÒ6cVw$w¢Ê¢Œ@ÀxÄK—§/ÍX:ðîÀlE¶®Ï勵§+Ò›j;ównÉÝòwDøGÀœ*˜‘9Ý,Ü¢ÚEY󬹖áNÃ'§LŽ.‹ŽpŒhÆÄìøv_~©[L•¥ŽOÿjê«'Úž`ˆ!¢Ä.‰<¦Éþþ/‰—h$Üë¦ ð€JÌHš<­ƒM]™JDöµï[¦.Óµ$J–•j¤l:Œq#`ŸËRd)ÇJŽ«Š[Zµœè:ÑQàȵ-9&+Q•.>¼Èk‘³Ð9O™w°è`ž2ÏÏÊoœË8W¡kCó ²úÐïÃÙf_©¼ÒÛ®7ÅTÅXxZx6t5‡sªìT¦+^JyiÆý.B—>v}úÚ÷íoßßÝÂ[[¥©Zœ¾xªûÔµþk‰(Qšq7"ºÃ¿\yÙ†oÓ T5¬fMö'ÓPÇ¡¦{šØcmé-”¯¥oq—¥'Ž–ï2žG¼Ú‚§ÊS?}ô©ƒÀa‚ë„Í›µ9–­ÈŽ­ÂÀðJÌ…½À~„ÓˆÏ}v¨øT+%"‰F²·`odiäd·ÉDÔǾ¿•ÿ²ŒeUš*":\|øRå¥0›°v6í:‹;¯Ê\U , ¢ØªØ}û&¸NàÕ8Í[wwY•¹*_™ODÙŠìd*2ëÌM¡UD–EF–Ež,;¹·`+.n ؤÿ…:F™ØcmÃá6Ôú±Îh—ÑÇJŽÝª¾Å]'\[p©Fº1gãÁ¢ƒÜV׫®‘¥OÃ0¸úÌȆ–¬2­>\øVÚ[ÖÔöG}UÛM ÇÇÒgkÉÖAwksL?Ô§+3Wö°íáoåo"¸½À~’뤷Óßæ¾œ¦JSµØ{qˆuH}²0 ˲DÄ0 ˲i’ˆèrÌ)S¦4wbðßU¢*¹%¹%ÕH[X´…< H¢‘ÄTÅ(µÊ¶6mý,ýtíJ­òjÕÕuI€U@G›Ž&â«YulUl‘ªÈ×Ò·¶MªXU,æ‹­xV Ý£Ñá¨XÕùòójR‡;„—«ËMD6üìÁ}Ù} Æ¢ƒM‡Ú) Ð$23_ t71©æÚömÛp/üüüj®ÕÙ¿ïgºÑ…óјS³ã,tæžýk” ßf°Ãàší<‹¾öÆŸÄk@ÀzÙõj|~Ƹ]·G£Ã2ÂpÇðúD6<Ø:˜»‘à÷©€yA¥ æ•*˜Tª`^óD¥º¿u ±0§ æ•*˜Tª`^sŸª·å¦^x¼À0B ¯N^à ¬þzð§@R™Ÿxåë’üD¥¼RìàíÔq4Ãð›1¥úÒË¿¾Û²ÝÏ€ÞM¾÷¿/òS–ûðrFâ‰^ÏTgϲ‚ä”›ßçÞѨäbo¯ ~!'òøBnm̉御á^AýMDIŠcO®î¾DlïÕ $uÁï]Û[˜}ÓhŸ–ížó Ò °æìâ/ µ¹ûu+ȼNDmž™éêÕ©¹ó3Òsª%¹ Y)§ž€á †WYšqõ·Ƕ­.ÏùëÁÿn%y ¿|9èQÚÏ€>Áaã­DÎWO¬8}`*Ëj›3«zÒ̤“U¥MµÇ¤«{î\ÚÖ„‘õ6—ªÒŒÌ{Quv»wmï¯_ Ï}xÉï»Ûá|¡Ulä¿~õœBVÎuÈJ>UQüÐt•B’žxB)«hh’ºà ÷øç ¥þQ”§[$æ_uíCFâo,«qpk%²káàÖ*=ñ„¤"¯¹“óÒsªDdaiÛwôgºÅŠâ´¨ý“Ïž÷ܬ_ˆ˜&ÙÅßäöùÏD¶®ÏÏ9.Zs-þm†žþnzÎý³>­7cbuÒIïÆ1MWÀçÞU+%Üë&‰¬МçÞ‰ZÓªëK=†¾Ïðÿs(-¸¹wÒ•ãËŒzÅvh·)¡Ý¦p¯nâè¢ÿø—ñiØa$ù¶ ;·©¹Ó³Ó4•ª{—ÀÃÞ?÷ÓëùW=üŸá%•ù©·K+ól};±¶q!¢ôÄ.žíÕ*EZüϲEË^¾­ÂuqLl"­,ÈHú/° é<ÑÎÙ?íαÂìV6έº¼(²uç6//ºŸžp\&)±sj6ÖÒÚ±fª%éÎ-ÚëÊT"ò êïð¬n>ˆJó“ÒŽ«UR§í‚:ŒÒÕ3µÅOOøÕÅ«“\Zš¤Sÿ·¬DNFòi~Æ5;ç–6v-ºÇšÃÉN‰®*ËÔ¨÷o ê8º ëºsËÒü$OàÔO·aVò)ÐÚ3°OÃ1Èã ‹rnå<8'—”ŠlÝ[¶{Þι%׳0ûfFÒïDÐ~¤ÐBT^ôÀ¯õÐ:W™H /ýJvJ4Ëj þÐ “g§œqóéìà¬ß~=j£{«ÃVê_ïíäÞºCŸ¹÷o~¯RJ…"ƒÑ™ü\±é Ç 2c…–â–íG8¹·Ö­¨íÔSÍ·¸¶€µý›bYMFâïEn3 Ïݯ;רRT§'þÐ~DvJtAf¬ÐÊ6°ÃH×Óƒ5ªÎ· þþ®« }Z…óùyéW¸ÅâGñG·…§Ý9¢”WÞ»¾ÿèÖð’¼"ºyzýÝK;Îü0S!«(/|pöÇ9÷b÷Õ¹IÌoïÅü¶B«Q¥'ž8±käÙ_¹»—eµÉ±û#÷N`µj"ÊJ9ýëŽá™÷N)eå‰1;nR]ñ¨fžö.9Îe%ŸbY®1âåoƒ:å^§'?þõóy1²êâØ“«£öOæzšˆýÔG÷®íÜ;1çþYZYÛ@þâ!=h^Îý³ Ý£ÑáägÆJ*òdU…Yɧ´Z¹0ëÆ…#oq“ˆ”òŠó‡ç•=¨Ïp «º8Ò IDATÞ¿ùÃo»ÇägƪUÒ‡ ¿Û>´4?‘ˆÄýôûžqE9qÕeÙQû_Œú0îÜãYD«L$påë¨ý/åg^«.Ï>wðÕ”›?èRª,ɸr|I^zŒ~žrIIAÖõÎjÞ–Ü®×ìÑoœ«Y¦šþ\];¹:6j¬º(=ñÄñ¯žÏN‰æÚk;õgð›XË¿)öÌs®_*­Ì¯(~xîàk7Ï|LD2IÉ•ãK.y+6êCiuazÂñ_w Ï}xÙä`‡2ýÖ4Èß2§JD<žÀÆÞ³º"—ˆˆØ‹Gyøõ0a'P«¤Qû'ÇœXöÜì_‰(#é䨹§¬ÅnDtúÀÔŒ¤ß[wŸjzIEÞˆWNð–e…)ǶÕ¨ÃgažwP¿³_­*ϱ±÷¼vr•ohx¿±[†/—–ý¶kdÜÙ}F^NÙuð’ÓßM;{ð+gÏ€g[ôö ì«›•U)ª¯œXÖªëäžÿ·šˆJó“~ýê¹ìûg½‚ú™ŽŸvçè°i]¼:±§¾\Û@þÂ!5TŸ=Ö6œnËdÕEj¥dàįuÚ¿p÷òŽÜô+^}‰(#)’ˆ:Œ<ùÍø:‡c0éÚ7!'rO6ÒjÕ?Ñ/+ù´­“ÿÓµ}ff·ˆåDT”÷Ûî1Ü„§J)©m•‰†´*?îܧ­»Oé1l5•¦œØù‚@ø¸Ôtt i¯Á„jei9º·ÑµÈ¥e i©nQdç!´°Ñ-j4JÓï»LR<òõ(KkZ~êÛ)×"?ð îÏã Œ'¶õ}ï ßbã‡T°æ¿)Ï€gsœ˜¼ß3°Ý:»ñá£]-æú—¦¼ðZ”•È‘K;6òƒ^;©Õª¶CŸyµ„2õo AþÆ'µðøBV«!¢Òü¤Šâ´Žýæóx"EízÍ)νË]aÛ²ÝsÜ©‰ÈÉ£Z)«sÿ6CùK"rp $¢–íGp÷UÚ»‘Z)-ι-©ÈíØïMn®ÌJäÚíe®Ö2`ï8úsƒ&íöo3¼8÷Îåc‹}Öû‘j•Œˆ¥]P)ª;ö«K¯÷ˆõ"[÷:ã·l÷3ËÒÚˆø«Ný߬.Ï.Í¿WÛ0qČҽÅu¬ùoŠûR˜}S£QQço}ë’®›ž3¬DŽº´Ë‹î—¦Ô6ØÚB5íGþã3§úÇþýº×ý¦L©­›¬ºÈJäDD•¥™Dtñ—…ºk,5j9É%ÅDÄÝiiÀô&º‰²Çc^¢YUžMÄØ»êZ\ƒ5j¹¬ºÈZìjЙÇø„ ô HDUeY÷b÷%]ÝcaeÛóÿ>¨*Í´°´Õý§Ÿˆ‚ÃÆQjüϦã‹ÿ¬ˆL „+iDwHkªÏkNmÚHŒÙÝë¹5riY~ÆÕÁ/îjÜp/ùú¢œ¸Ê’ôŠ’tîŠâª²,+g +{]7;ç@iU‘éU&¨.˶±÷²°´ÕmåàÖ*ûÉRÓ€¥È‘ˆ$åt_‘Ò¦ç îI?Dtt›áØø\ý¹ø¿;<Ý[QuyŽ‹g{£G ¡Äze¶é€5ÿMÙ9·ìÐgnü…/®ìtõóî6ÞÂʮִ˲•Š*£ƒZІú‹uýß*ðÓ¯_¿º;5D#¯þ5Q rÊ S²rn ˆ›„é:x‰ÐR¬ßGdç©[kÀô&uâ ,‰X­FÅûóéGÜ÷7jŸü}eiƵßWv¶ÒÞ9€k±uôíþÿìÝw\SWûðs3I{ È8j÷@먭UkípÔ[;\µZõ§¶öíôÕÚ¾Ö¶o[_l­Zë¨[2EP–²÷ ÜóûãbCÂ%AÆóýøñ“Üœûœsžs2÷æfæ6‘°²4/:löÇ,_çÏÕtÿa§ºØMš)ÕÁˆõuGßaóÒb¾®,JÖæóNn~Kr/ë ®/ˆBÖú÷9ƒ5xÌÒÀÑ/Ù»_ù}Bˆ`0UJ¹fI’T<ìŠþ‡ öN¥”=²—ê‘»íÙ¹±9–%÷®x™Cm±àÛQGE ͯ.S:wRõO³©Ûl®¥¾ tÚÃ!î0 ÎçÔÈ©‚Ã^-Ë‹©*JɈÿ.çÆÿžYuA³šÍ&,Õª‹S½Ã—Ðc™ã¨ƒYÎþÅXu3ê3 ¾gÐ „­“?BˆÅá»z‡Qÿ³²0©ýåjÔhì¢ÉÆÁ!T[–¦ÞRS–ÆæXjéjÁ·«x¨¾ìf8\BÈÚÞ[! ë Ô\Š|)3éG#ãw½#ÿ4èÑ”` F}ÝÑJ`;ÐÉcdQöù™güCƒFwjJoŠš+§¿øß!c_àÎåÙÊe­!k¹Tجñíõw©2Ü;qKuKc±FÕÿ N Ë?tAaæ™úÊ»Ze&ýо|‡ã^SrSýPuñ „ƒ¯¾ ÐF#`]ÅÝŒ¸}\žèÂñÏ~=ûÕ?[›ÊªKRÛšúð†F³}ôuVÒR£3”©¦:ÈT+U•J^’{¹$÷rIî¥ÜÔCç~^Pù 1|ÞÔ¯¿Ø8ú;yŒL½´KÜR…jm*»vꃖÆRiì¢ÉÞuˆ“{hê¥OÅ-Õ¡ê’›¹©‡üG,Ò:Öı°ñ:7#n_AÆ ¥BŒRÈŹ©‡Jr/Œz!äæ;ÎÊÎ+åüv…¬!Tpçdea’£{ˆ‘ñ»ÒÃ)¥—:}Ý¡v$u}ÖwØ3…™gjËnû‡.êlw¨€ž-B¨µ©!„1™ò‹°.ŸTÉ<ü' l=RÎmSÈEáÜÔC UÙB2ÐÏ žÀ1ñô‡2I#B¸àÎÉòü8uc„õ⎿[Q ÕÈS7XÙyDý¾¢àÎI¥BŒni,N<½±$÷rû³Ê;÷¬”_¨¥]Síý[W¾8]`ë¡/†ÇÑ• ñíØ=÷o§îÖ”ÞB l=¨»9×Ö”ÞD ëòo]ùr€O¸µƒ¾Î*•R¡ºøœ@“i®ý+—6Ç}“ºÍæX:y„Î\vØÅó uI öFý¾âøÞ <£¸¥ÖÑ=$löÃ1iì¢)|ÞW¯øsO8—g+7¸ùM9õƒöÅÆÎý”ɲ¸vzc© ,6O©0™ìaãßqñzÂÚÞ«SÝù'à«Ç=ƒfDÿñº£¯TTïèâ43/형½÷øg¾Š9úæ_„²8|»ßðùMµ÷B &[ßCÀdYŒæËØãïùj4‹Ã'FÈÄwsn´‡ 5fuö|‚ºb­‡k5kűk§7&œ\—p’`2Ù*•ÜÍwüìWÿJü{cû~÷!cWžÿe›k%— ­|žœµ!ää¢/ÁOÒ9 ˜F@W¯'XœtfSZô!¹´eÄ”õ¶Nƒ¨/—zϾxp ‹c)— ¶cçì2ÐY6‡¯3”¡ ³Œ1Bˆ ŒqÁýl„PbòÍ¥¿3IãKe˜TV—Ü”´ÖZÙyêý²e—wѤRÉ«‹oHEõÖ¾Žnà ””ŠjËÒ•rßz€s€úJ3…\\]œ¢RÊí]ƒ­ìŸ-Å UÙ#{×ÁÖöÞ!•RJ0Xêoiª÷–Æ’ºŠ;\ž­«×“ &[½½}ì]ƒ­|Œo¡…uùMµ÷LŽÃ€¡ÔËÍ Å'¾<÷õ¿yÇšÒ[®•«wuamÃmŠbÌÜ8´+0|Þê+WÜé3yÑ~ïàY´S¯¸ÈHõ•îfe·/0lHÛCzyyˆ9nìh„P|ìsýžj{ƒåêfî]41™7ßñÆ”´àÛS×þÕ‰Íá{ Òñ¨ññ»Ø,,èÕ¨³; k`À4c"®3 BÈÉc¤“ÇȶpÞC戚«~ÿlˆz‰"n©*¿;:b3BHÜRûçž±:ê° Ï íköÃÊÎËÊî‘§¾µºáq·²óÔüs†Zû ÐhdÚ8úS¿äÔž¥õÍõQÓ×Y}¡Ì1Õ@?Ô}+U4YZ»ÿVü‰÷ïß>Æd²«KRmüC~ô ñûîÝüÝÝby~üãn è‰`¥ ›QÓ6ú }º¦ô–J!4òÿ‰ÄÃSm <LÈ‚o;bÊzKkíkV›ÕعŸRWÛ²¶÷â œýC>yôCðéÛ>˜L*ÀT`¥Ú—A&ÍrÛÀ “ƒI˜ ¬Tû2Ȥù@nûD`r0©S•j_™4ÈmƒL&`*°RíË “æ¹í`ÉÁ¤L¥¬TÙ¿ýÆŠŽn»CX P¥xþyÄãu¸¯Åš5Ê9s”­´ç£ý™)5µòàÁ»wïÖáçg»reȸqî¦m[llɉyûöMG½óÎå… ƒ&OöÔ*£o»I¬Y=gŽ_D„7½Ýiç6+;çïsçò òp÷˜?ïéáÃè…2•ó/ÝH½Ùv‡ ø|^pPPÄ´©\.·+a¿ÞóÍøqcÃÆŒA}þõîéS§Œîa¿šØ—1ò÷êïZð,‚žš9âkƒØ …"ò÷à 7®[kccC;ŽálkN³ž ++Õ£ÇçäÜ›>uÊøqáúÊÜLK‹‰Û¸n-íZ̤Ç6 @ïÅxÜ Ðw+#ƒ}þ<“Ëer¹L6›UXÈ[¿^Nw¸/ûÜ9f~~‡Å8û÷svï¦Ñ6z`&1Æ{÷¦NŸ~¤ @8o^`D„oqqóìÙÇöïO3mß …gδ¥ýï¿ó …ÔíýûÓvï¾Ñ~»É;WŸßHcÇ®äö÷#GW½û^yyÅ䉯>ùdeUå;k×;þ½h:;þסÃtj—¼üü„¤$6‡Íæ°Y,fyEÅîoö-{ýÊʪ®´$!)±´¬œºŸPQQI/u¨ï bzFFZFÆÃAd••—ÿ{ß·ï®]¯R©Œ¯Ë´©þëÔéÃGùùú²ØlÚA:̶æ4{¼º2©0Æ2™ì×ÈCѱ±Gþ}ælUuµ‹³ž¹Dõ þþ£Ç6 @·³°°H$š[x4âô‘•*E3# Áž=ÌÅ‹™ Ê Ú6VTpfTTÞÞò%KH'§ö•ê,þpQXˆd2Nd¤lñbÄáÕsÐÈä—_^÷ñ±]·î ±X¬Þ¸ukø±cÙ—.®\ÙvÒ]nný‰yµµ??Û_ ¶·o›|'Oæ…†ºH¥Ê#GrärÕ„ gÏöUlj/»xñIâ§žòA«[xñb®ŸŸ»»Õ…  …2™222sñâ ¸¸¶í]©45µ2*ª¨®Nâê*X° ÀÏ϶‹)¢½ãÁß~sws{yÉ š¹}mÅòKQW’¯_æé¹ÑWc …ÂKQW–/}ÅÖÆ¦¶®îâå¨ÚÚÚ<1ÝÎÎN½cVvNÊB¡ÐÁÁaêäÉ=ÜB‰É)år¹üìù 3"¦³Y,´h>}œ7¬}ãG[ogdŒ A]ŒŠìáÞvøÝÌ,©TúÄèQ"±86.~ÚÔ)IÉ)wïZZZΘ6ÕÛËK+Q ‰‰îîΟ&ù1±q©4À߯ôiL&Ó=êP_DüÈ Ž AÕÕÕcŒõ Ÿf]¥V½EÅÅÑWc›š„în³fΰ¶¶¦v‰‹  “Ë.E]Q(#CCÇ…ÕjKêÍ[E%%MM'Nž:yÇÓ­}ÆŒÏö?]8”ôÚüx'%*:&0 àµåËNŸ9}5vÉó‹Ô¥¥§'%§‡‡=‰pÛ+gRJ ‹ÉóÄhu±kII\.÷‰Q£tÎ+ÔQt>+‘Áäèl½îèK\œœŠJJ4·8;ÓY+õ‘³Ûï¨R©ÄÓ§#.—óð|$æ­[ÖcÇrcµ¶Züü³uX3#?|s5\†“’B”•••œóç‘B¡¯½f÷œLŠDòØØ’¥K‡+•rÍíÖÖ̺ºõ«V¤îž?_0qâçÎ67+þóŸÛáá¿•”4SíØ‘´oß­%KÎ47+îÝkzùå³?þ˜N=´oß­gŸ=‘”TQZÚúÊ+ç~ýõŽº…¯¾z>*ªcœ’RYVÖRY):¾P¡P©·Ó®ôàÁ»3gþ™œ\)•’'Näÿ{FF:ùÍzGûJ$’[·ÒæÎžE_RãóxqQ—>7c|à§ÿž8õ÷û6¦ÜHU(9¹¹Ë_{#*:Z,‘œúû̲×ÞÈ»ŸÚë̹ó«×¬½›•%W(bbã^}sUÞý|ŒñÝÌÌêšÚºú†Ääd¥ÁöH;*•jÌèÑ6;=ãµeï·ÿÉÌÎV¸õçÉ“㦦¦¯öìÝõÙßø¡±©éjlÜko­¾™–†ÍðÎ]ÿJ¹‘JÝŽ¾ûÆÛï¤ß¹#6ïÛÿýº7©T*Óö¨C}p±v’R®1lè¬ø4ëº~G³ÞkII+W½}-)Y$ûëÄò7Þ¬ª®¦vÿñ¿¿>vló¶í"±¸¸´tËŽ:­Õž¬œœÊʪ¦Æ¦Ääd©Lf šVÆ:•müè4£×æÇ;©(B¡ðzjê¬ 4dxtÌUõCûsÝÆMw3«kj¶íüäôÙ³T-YÙ9»>ÿB©TRÅš[ZvîúWIi™¾ye8 :Ÿ•†“£¯aôò /±²x{zòy<ƒÁçñ¼½<­qúÈ1Uïyr„ðÀÌòrŒ1ÂØòí·ñĉŠ#GH&“)•²gͲ\·®)* «ÿ¬¿Œâ³ÏXuu¨µUqô(‹õ3Y L¤³™,-m‘ÉTžž­1ÆÍÍÍÔm¹\µiSü¼y‡=C¸±Q>~üÁý+eÿþé!‚ NŸÎÏÈxÝÑÑ‚Á`<óÌŸgÎÞÞ*•JßðiÖ…1ÞùégÔíæææo÷˜B¨¶VÔþ¡¬¬:¥‡„8••‰yy Ô§Œd+‘(kjÄÎÎ|„ЀõQ’lûRZÚ:p  ‡Óö±D¥R ìpþ|¾‘ £W)BH"<˜›šZUPÐTPФR‘4Òbv¶¶¡†ÆÆö<(T©TƒüBNŽŽ*• !TYUÚñɧ FÛŸ“är9B¨±Ihee%‘HN9›“SV^^VV®"uôËpcÚ\ßÐ0Æv”1%z¸ã‡ç& ôð@ÕÔÖè,YU]-‚¶ñR©TÓ¦ªTª¦¦¦nèQõðAôõõù×Ç;©ÛAH$ÒW^}uÏ·ß}þÉÇíiMM-A®..Ô]jXe2YCc£½BÈÑÑAýŒÃºZÞ©hêŒi22Û]lócŸT¡ªªê̬lW—µ|Hma±Xѱ±+–¾R]SãêâÂb2©ç—J¥òöòJHL¢nÏŒ˜~øÈÑ÷W¿-ln¾žñõçÿžW:“ ïYŸ€ô$Ç@ÃSé‰+UÚdÕÚ‘•“ƒ”#GbŒ“‰"?û ?üðAIØÃ©ûè/ƒ5þ^nL±¢³íqs³tw·ºv­üÙgý´zþù3£F¹üï³,,X#©TÎãµM©Tuèš:MTûÏäc€#•*IÏL‰\«…oãN}¸^¥--ò)SްXÌU«F¾õÖè#Ì›wT³Ò®üE¿³;:::8;;§ß¹3yâ­‡6mÝøñë¶R‘©Ë™¼·úmK>¿­ÃÅÙI$½¾ú]“¹hÁsÏ/\080ð½õP»dˆ Ýx]—B),*jnn Ô™.…B¡¹…:hC=$¥þpÃd¡‡ÇQ5[Åãñ©ê2™L,›¸GÆéSƒˆÆX$úçÏLAŒ?é²úí‡Og*0Æ\.c,“ÉÔ¿©+“ËBÔ1O*xûgœÎ¤MçîÉ6ý6?öI…ŠŽ%bÖÌêË×jT IDAT¡££côÕ«YÙ9<O&—k¾rÊd2u-S'MúþÇŸngd”–•9:8Œ min6<¯t&A糜À†˜DO<û×4T*ÁÇ#GGùìÙ!20!$c³EOßÉѱÃzM­³Ù¦WËcŸT¡è«WGñê²¥Ë_y™ú·îýw ÆÕøxw÷ºººŠÊ2™•­¾íà`?|èÐk‰É±q sf=¥R*œWZt>+ÿË@r 7 0‰ž¸RÕûuýB„\Î9žsþ<çÜ9‹_~±=›§ÑÞñå%/8ØÛoühËõÔ›*•J¡Pܸys÷Þ}nDL›¦ÙÃÝ}øÐ¡ß}ÿCeU•B¡(++ÿü«ÝUÕÕ$IR?ãQXT$•Jårùñ“'‹Š‹år…ºyÔA$Ú÷H!—_KJ¾–”|-)éôÙsï­Ûpëöí­›61¨£ÕÛÚÚ&¦¤P=wáb~AÖ¾§NgfecŒ‹KJ~úõà£F¹  ™&õí!!îîß~@$aŒ£¢cngdPëaö¨C}o1BB¡ðá &Ç%$ìþf_RJÊsÏ>‹;>Ío#S·}¼½‡ >ðÓÏuõõã»™Y§þ>3oÎlõ‹aûlêH2¦¾>Ûq4}cÑa¶±ÆÔ¢×æÇ>©òîß/.)˜>U¢Á‚Ë=rdl\|ؘ'ìíívïÝ'ln&I2*:æzjªº•J1}ZLllVNÎ̈éãç•Î$è|V:Ô@rÂÞ4Ð0yÚëCgÿ65Ù,_ÞA ÀcÆ(.]j %Ôi¢JÙ/¿pçÏw=ZåäĬ©!G–ïÞ­ùñÂpÒÓ“³gýäÉ gÎÕsÐhA(ÏŸ_üúëç_|ñ‹ÅÀ«TxÄ×ÿýïiCEeiÿþ§æÏ?>bÄ!;;‹úzÉôé>[·ŽÅX¡®T#«m[ ò‡æ¼üò©ààƒ––lƒØ²eüþsóᇧZëéi½gOêäÉGÏœ™¯ÞN¯ÒÐPçyó^z鬟Ÿm}½tÔ(×gž ŒŒÌôð°|ýõa´SÔ•¿ÛûïÿõÙ–í;˜L&Ƙ$É €€Ovü¡ø°#J¥rǶ-k?øðå+íìì†^÷Þ»ã€Aƒ&Oœ°eûÎîMÂæÁAS&M<{Ⴓ³ÓüyO»º¸üsõÕïìýêK}´û‚PKkëŽ]ŸRwù|Þààï¿ýfŸuš(BhùË/±ûß/.[Áb±¬­¬ž_¸ °¨HjÚ”)6daaÑÚÚ:`€ë†µk”J壉j[´¨TªÿÛ²yãæ- –¼$X6 ›_]¾ìùÏeeg›°GFêKƒˆzPX¤D&“éáî¾qýºÙ3gÈårçY—æíÍ?X¿qÓ’¥Ë­­­…Baؘ1+—/Ó¨WcµÏØ×J²R©ì šþKÇÙ6¾]m60FO=ýíTù˜¸x›=.,LsG•J5mÊä7oÞÎÈØ¶yÓ–í;.y‰Çã1Œ×V,?zü¸ºðÄñãö~û݈껾†ç•¾$è|V l 9AnÐum_Y¡¾»Rp?!”˜|séÒ¥ö‰ŒŒœd°@WÄEFΜ9³³{ñù| õ]êó‡D"Q\F1 +•’‚++‘¯¯räÈ––Œ±­­­T*¥¾\§¯ BˆÇbñãã±BÑ8~<Áfë+Ö)—.]êi™D1 KKËÂÂæ»wkT*è0dˆƒH$RŸ=Èd29~bbYM(0ÐaøpÇÖÖVªûšÉDñx<6›Mý¤›ÍV(X %*ž8ÑÓÒ’àr¹MMM!…‚Ãb©B…b±¸ññå …jüxg’䪷ӫT ܺUS\Üä8dˆCs³,&¦$0ÐÆÃƒ§µ—ñ.]º„êJn+*+ïç¤ÊÛËË×ÇG[­&1 >Ÿ'3³®®ÞÃÝ=(0@=ÍAî½{••>ÞÞ¾>>­­¢›i·<trtd³Ù·32 eȰ¡,K_MÆ<}¸\nCccî½{VVV¡Ã‡#„˜LfKKKUuõÒ•¯ÿ|`¿‹‹Ë»w«!Ãår¹J¥ÒìõÑ– Åb±˜LfZz†\. °·³“H$¦íQ‡úÞ ZYY±Ùlõ]jQ'•J©oê>„f]\.W}›Ífs-,22î446zyyòó3æ§ÉÒÒ’Á`Pµ0™L#£u*ÛZ»_‹f› ŒQ§Ð›T|>Ÿz%Ôª‘ËåZZZRÙ#1N»N’䨡\.Wýʉ"ÂÖÖV©TR%‘Áye :Ÿ•†“Ãf³ 4¬Sy3ßû €n9iÒ$cJzyyx422rÜØÑ¡øØ+=q¥:cÆ 3G±Ùl‚ H’Ôünd‡ƒ^üÐÈP†]¾|¹Çf’ÉdR—ÓP=z¥ A,‹Á`¨T*ã»OõaZ¡Ph~,c0šEÕyÖÚN¯Rõ.*•Šj€ÎïòåË!óåV‹¾if _&Ÿ¨šÍÆ«´"„ªªk–½öúþ}{ùù±X,j•ÛþS¾Î¡$B©üç:[ÝÙ£~8ˆ:‡¢Y—æmzÏ8}ºÍølÓ®¥'L*}ô½rêCïEOç³’¢/9m˜Nf}Ðm̱RíCgÿGýÉFêèD§B=^]ɤR©4ð‰ cL£ûc­R´>B©Ëhm§W©æçr}  Á|¹Õ¢¯Ëúe¦‰ª»ÙÏw5üQؘ¡ìþõ«A4Ð`}õÒ{ÆéÓ•hÆg›v-=aRˆÙ©.z/zR§o» _Q€öz╽…µµÕª×_stpxÜ }J¿;¦Ú¯@&ÍrKáñxKž_$•JµNì`ÉÁ¤LVª}dÒ| ·Œ±HÔñ6öL0ˆÀä`R¦gÿèYà˜j_™4ÈmƒL&`*°RíË “æ¹í`ÉÁ¤LÎþгô¸cªO*•r¹ÜÇݳ“Éd\>ß|ñûO&»5jcÈmïƒL&=æ~Ыõ¸•ê@?¿{÷îôí7{™L–——çáëk¾*úI&»“æ¨An{)D`r0©èé†÷A½Z[©‡†æ"tûΙXü¸ÛbF\>ßÓ×7(4´ÙlUô“Lv'õ¨!„ ·½ "09˜TôtÃû €^æJ5.2Ò´íPc0¡¡¡OÏžÍïÓg‰Åâœ;|˜$I3UÑO2ÙÔ£†‚ÜöR0ˆÀä`RÑÓ ïƒz5‚ºP!Aã‚ûÙ¡Ää›K—.5°Oq7µ @oPlÔ2ÑËËËÀ£‘‘‘ãÆŽFÅÇ^kÿèY`¥  g•*€žÅ×þ½ŸþgE~|Û‚`s,ÝCý†?ÃdYt=x75We%ýX_•%—6 l=<ƒfø‡Cç¹ùŽ3yí&\ñ ñ~Ú‘°9Ÿpy¶Ú«(ëløÓŸ™ª”„“ëH•!4iá·ôzj¦†µ§TH«s¥âk­rÀuwÅÍU6Ž~6Ž~úcè(–›Y]œŠ »ÒÉ=ÔlÍ€>S­¯È,¹E0XƒEŒæ†¢”s[OÿTkSY׃›[}eæÉ秊Ä»ùN4ây ¾CÊÙ­Q¿-Ãøq^ŠÐ˜”g_hi(2UÙ)¿Ü¹¶ß‘B- E…Yg• ig÷*ιD»RÍi*Ê:‡±ÊÖ9Ñí©™¦¥¶,íäwSÏÿ²0á亓ßM‹9òµÀF‘*EÔï+Îþôl©õ'ÿ3=éìG:#è+Æ·`ëX˜uV$¬¤Ý ÌÊ4¿§ÊáZM|nú®°®àRä˱Çß™ûÚI„“Ta&é±{øVNO¿q†ÅæQ[¼ƒŸŠú}EY^ÌÀÀé±a¦tɇ· Âd'o×UÜUÊEÔmÓF~\4{¤e`à ¿áÏ¢ÇÔS Ó€Nm°²÷~æíË®Uy~\ô¯e&ÿ4|üÛ¡´˜¯jJoÍ{óŒ½ëÂÌ¿ãþzßÕkŒï°gµBè+æáqûênóô0ÍJU‹£ß“³þïê±·«ŠR\½ÇREÍUùéÇÅÍ•Vvž~¡ x–Ž¡Â¬³ŽnÔ YAÆ_*•|€O¸g`„:Ž]ÄÍÕEÙç™,nÀȬ¼ )½iaé8êE¾• µ{Sm^a扨ÞÚÞgЈ…\ž]û¦ ë  S/SBîþ“Ý|ÇË$Mê- UÙ…™g” ±ý€¡þÃç –áø…™;º‡JÅ 'B'¯±àÛëìHSZUtÝÚÁÇÒz@gklßÒ{WZ‹UJY^ÚQÿçªKR­|ª² –»ÿ$õŽ%¹—Ylž›ß}Á%¢ºÒ{ÑÎGÚ: Ò×Ã#^Y˜Tzï Ædû?tjþhõˆÁdëlÌ#9ìI km*o®/|ò©ÿãp­Bîþ“œ=G×”ÜDaLÞ¿}<è‰Wì]‡ „|†ÎËK;vÿöŸZ+U#‹Ð3™ë€ÒÀÀ&“SY˜DÝ­+Ï8µ?¢àÎ ¹´9'5òÔ"ê+3B·¢>¿{í@ô+eaSÍý˜#oäÜø_‡»$ŸÛ–|n+©Rf=ûßgc޼™sã ÆdîÈ‹cR‰*¹õ÷9Å9—å’¦¬äŸNíŸÙ*,oßNG¿²ûWKr/c¬RoœñÊ!ÿÐ…ÔíÂÌ3g~|º²(YÒZwãÂÎK‘/S% ÄO½üYÎõƒ¾P–£RÊõu¤‹)ý󲼘ÎÖ¨³;UÅ7DÂJIKMIîe’TP‘kJnÆŸXC%!$— c¿ÓT{ß@ðæú¢¤3›* “ ôÂÀˆg&ýx)ò¥ªâë­M¥W®ºwëõ^?Z=Ò×Íö¨†±¹‚©‹p8šº‹1)i­ãXØ „šŠd’FWï0uaWï°ºò ­F g2Ë1U„ƒÁ²´qkV „ §Ö»z=9eñƒ¥Tˆ/E¾œ|ö£¹¯ÿ*ʾ0õežÀ!õÛ²¢ìóƒÇ,3¼‹HX9ïͳL·±æÞéïŸR)esVž †‡ÿ¤˜£«ZšÊ,mÜ®_Øá1iá·Á”ŠÏý÷ÙÛ1_O˜¿G«£§oŠú}yÌÑ7-,Ü|Çðçî7Q}TV!kM:ûQàè—ÃfïD5TeÿýÃÜÒ¼wÿI†ãÜ95kùQG÷„ðåC/ëëHRªÍ˜õuç‰IZk•rÑÔ~TôöÌÝÄ…Iî~BEÙB¾ÃŸ½ðëóúºcçñÒAT):G\ÜRuûê¿Yú䬡ƚ{gz†Åæ#„hÌ=êPÏi—gë4!T_y·ì~lEA‚\Ú<|Â[!êË¥Ôq`Š¥Í…\$—µP`)F g2ã—ôL6&U¡†ªla]AȤ÷ BˆÅæ £®â.u†­Ïйԧy„½k°R.épï৘,.BÈÖÑ!ä3lõmCG„R.®+K +B&½O]ÂׂoôÄ+ÔZK‹£ßsï^¶ägïà9uwOoüsϸøk• B¨¼ ^!k ™¸Zݼqó>ç[¹tßgèÓŽî!v„vJÛ3¦F}ÝÑÐÎ%ÈÖ) (ëȇߺ¤47]?¿}̬íê«´²ó3s›HXYš6ûc‡¯óçj:Žÿ°S]ìˆ&Í”ê`Dúº£ï°yi1_W¥kóy'7¿‰%¹—õ7>¬Îgqø*¥Ls ©’i–ïÔü¡§›Æ8 ÿ–·ZKšë Õ—³âXØøX”|v‹B.²´vA‰[ªÔ(7W±Ø|ŽÅ#çôY¬Ã'22Çñ³|OcÕͨÏ,øvÔwílüB,_}}—ê’ÔŠ‚Í˽h¡±‹&„PmYÚŸqÔ–š²46ÇRëLW ¾]ŃÄÒ{WlÂßÐê‡+@YÛ{+ä"a]úãþ¥È—Üý'¹ùŽ3&~×;òOƒM©jÔסÚÝo#°èä1²(û|cõ=ÿÐÁ0UwÚ³¶÷·T·4[ÙyQ[jJÓ:ìQ+}¼ k¬Îú}Eûí£_²uò»zìí>¸¥>„®µ“Á`Y;øp,ljJný3÷Jo9y„jý”‘Åè™LsH Ÿ÷õë/6ŽþN#S/í·T!„Z›Ê®ú ¥±Ô@@»h²wâäšzéSqK5B¨ºäfnê!ÿ‹´sq,l|†Î͈ÛWqB©#„rqnê¡’ÜË£^D¹ù޳²óJ9¿]!kEÜ9YY˜äèbdü®tÄpJé¥N_w¨I]߀õöLaæ™Ú²Ûþ¡‹:쎰þAÜñw+ :ì]{žAï‹+‡Wü¹'œË³•ŠÜü&ŒœúAûbcç~ÊdY\;½1áÔ›§TH˜Lö°ño ³ !D0Xæsä?¾ÁáÙÈÄÃ'¼ãêõ¤ññiw¤Ã” ¯FÝØzd&8ýýS³Wþ¥ÊgèÜÔKŸ¸x=amïÕaw¤¢†Â¬³ÎžO¸ùM0¦š˜,‹ñÏ|{üÝ#_fqøÁ™ønÎÈ+ÕG³GlŽegÛÓ= sò¡¯Øøg¿ºvzãïŸ ãXXIÅn¾ãÂç}N=:e]]Å“ßMØÖ幨gè<ê¡ÚòŒÂ¬³cç~ŠØ<ÅèáŒ1Bˆ ŒqÁýl„PbòÍ¥¿½Iãëm˜TV—Ü”´ÖZÙyêý²e—wѤRÉ«‹oHEõÖ¾Žnà ””ŠjËÒ•rßz€sÇÂZóQ…\\]œ¢RÊí]ƒ­ì‡vöâEs§¹R•K$‡$IÓ¶@¯€1æp8fúB(ýkÿÂ2ú3Œ±™"Ó_©š¯Mú3X©èY`¥  g•*€žVªzX©è´‹—£R®ßh¿}â„ñS'Oêþöô7ÓÒbbã6®[k¸ÌÙsÖ­yÏÚÊÊ´‘€n+Uv¿  !1qê”ÉZÛY,f7¼;üù× ™\þò’Ì]QRQQíÚk×.»zÕX 0mdúçp07X©è4<>ç¶­ZÛ•J¥R©4wíyùù‰¤ß½ BD½&„Æ|6&²~ýt8˜¬TЀB‰¤ýEÅÅY9¹S§p8„H,Ž‹â6`@m]ÝÅËQµµµ x*bºz¯ü‚‚˜Ø8‰Tàï?cú4&“y1*jhp°‡»;Uànf–T*}bô¨Ää”òŠ ¹\~öü…ÓÙ,–°šÚW¡npôÕØ¦&¡‡»Û¬™3¬­­©í1qqAƒjëëâ®qØì9³fy¸»]‰¹z7+ËÎÖöé9³Œ)CEËÊÎI¹qC(:88L:,me0Æô"#„tæS_´öÃÑÁÄŒÃܱcBhçÎ;vìhl¨E•–U„„„Ø'##!Ð--ÐãÜLKËðà…E Û?Äf³w|²KØÜ~¾¾TØÈÇSÓÒ¦Orþ⥻YÙ"‘X"OÏ/(ÐV“Î*‚HLN^»q“°¹ÙÒ’wêÌ™I&XZZ"„>Ú¶=;77új¬‹‹sBRÒÉ¿ÏdçäÞNÏptp¸pùrLlÜ3sçlÙ¾³Ã2Aœ=aëÎ ÇK½yë·?Ž„cooGÕRߨpè÷?œœœÊ**~û㈕•ÕàÀ@„Б?ÿ닯J%Bèð‘c•UU"‘˜Êy~Áƒ­;?öòò zô½ø~~ARJÊó ðxlèHª5.葳¦;Y©ŢŽhZÃÁãñ:3½Ú¾sB}ù¤à~6B(1ùæÒ¥K 쉚9sf÷4@OÃçó-,,ÚoW*•2™ŒÏç777Sçî²Ùl++«ææf’$ù|þÌ̺ºzw÷ À€––ê=ˆÅb1™Ì´ô ¹\`og'‘H¸\nCccî½{VVV¡Ã‡#„˜L&u¹Z6›};#C¡P† Êb±ô…Õ¤³ *&×Â"#ãNCc£——ç ?¿ÖÖVjw[[[©T*•J©ööö­­­Ô†˜L¦P(´²²ê°ŒJ¥¹÷îUTVúx{ûúø´¶Šn¦Ýò8ÐÉÑQ«Çf³©kí²Ùlã´Ûé$IŽÊår¹\nSSÕkkk‘H¤þN/…ËåZZZ655‘$I/2ƒÁЙOÃÑÔá¾€þãÒ¥K¡I“&SØËËËÀ£‘‘‘ãÆŽFÅÇ^¡¿R1c†ÑBˆÍfA’¤Ö¥k ‚`±XA(•JõÅ~˜L&“ÉÄS—SÒD]q—ZÛaêí ƒºj±IºÙžº •JE›ÍV=z‘'}mf³Ù!…BaÚS™ G6&Ÿš´†@¿rùòed†•*œý  ûè[Ì`ŒÛ?¤T*õ­”´Ž%³FÒY…í¦¥¹ØÆkµ_ãKv–áÈMˆ™  ?ƒ³tô,pL@Ï+U= œý  gcªzX©èYàì_= ÍcªO*•r¹\Ó¶@o!“ɸ|¾L,6ydš+Õ~~÷îÝ €Å*ôC2™,//ÏÃ×· 3ÓäÁi®TƒCCsº}çŽ9VÏz8.ŸïéëÚƒVª- FðÈ‘cFŽdš¶9‘$yûöíÂÂBqŸ^óù|__ßÐÐPÃ\_î'™ìNêQCõÞÜö^ôs0ˆ é Ìæ09˜TôP+¡y‚Ó\©b„šj2m[B¦§+gÍšeiii†ð=…H$JNNŽOO÷9ÒLUô“Lv'õ¨!„zonûF/ú9DЋÀtæó ˜L*z¨¼¥§›#8ý_©1“ª‚‚¹³fq8¹\þ¸ÛbF',,ììÅ‹æ[©ö“Lv'õ¨!Œ{onûF/ú9DЋÀtæó ˜L*zþÉ›ô¸•ª\"áp8$I>ƘÃáÈÍyRA?Édwҵޛ۾ы~ô"0]9À¼&“г.jzÜJ!ÔOfÆØÜUô“Lv'õ¨õêÜö^ôs0ˆ é Ìæ09˜Tô˜oQÓWªÝ°„ë' “æÓ7rÛ7zÑÏÁ ‚^¦+0˜WÀä`Rõ°RíË “æÓ7rÛ7zÑÏÁ ‚^¦+0˜WÀä`Rõ°RíË “æÓ7rÛ7zÑÏÁ ‚^¦+0˜WÀä`Rõ°RíË “æÓ7rÛ7zÑÏÁ ‚^¦+0˜WÀä`Rõ°RíË “æÓ7rÛ7zÑÏÁ ‚^¦+0˜WÀä`Rõ}d¥Êþí7VttÛ‚ÀjÔ(ÅóÏ#¯Ã}-Ö¬QΙ£Œˆèl¥=í§YjjåÁƒwïÞ­%ÂÏÏvåÊqãÜMÛ¶ØØ’'òö훎zçË Mžì©UFßv“X³&zοˆoz»ÓÈíþò‹ÕráNŸÅšK¥uÿWxdíÀ¹Ãz[²æþ/sFE؇Ðh§a´gHVvÎßçÎå< äáî1ÞÓ!Ç™¶muþ⥩7ÛîŸÏ  Š˜6•Ëåv%ì×{¾?nlؘ1¡Ï¿Þ=}ê”Ñfû dzúÒ Fþ~øÁƒBõ] žEP@ÀS3gXtm»B¡PDþ~øAaáÆukmllhÇéÙ¦çfZZLlÜÆukéíN{ºÞÏÏ?}æÜ½ûy2™ÜÅÙyÜØ°9³g±YÝô¦Ÿ _ïí&¼ šU÷¼ j¾Ûö]Y©=~<'çÞô©SÆ ×W¦‹¯¥æÓÓÆxÜ Ðw+#ƒ}þ<“Ëer¹L6›UXÈ[¿^Nw¸/ûÜ9f~~‡Å8û÷svï¦Ñ6z`&1Æ{÷¦NŸ~¤ @8o^`D„oqqóìÙÇöïO3mß …gδ¥ýï¿ó …ÔíýûÓvï¾Ñ~»É;WŸßHcGÚ¹½Þ|?ºñŽÖÆ&¥èDmJ¥¼ÉÀŽçêoåK«hÔh@WfÈïGŽ®z÷½òòŠÉ'Œ}òÉʪÊwÖ®;vü/6ïØñ¿þ£S»äåç'$%±9l6‡Íb1Ë+*v³oÙëoTVv)u I‰¥eåÔí¸ø„ŠŠJzqhô¨C}oÓ32Ò22"«¬¼üßû¾}wíz•Je|]¦Mõ_§N>zÌÏ×—ÅfÓÒ Ùî6•ñ×®ÑØ±+Óõ·?þX¹êí»YYcF~jF„••`ßþï_[õvMm-½€ÒO†ÏÝ4ÇëžxÔYWo|Ô|·}¼º2©0Æ2™ì×ÈCѱ±Gþ>¶ëÖ=!‹Õ·n ?v,ûҥ•+ÛÎÓÈÍ­?q"¯¶Vâçgûâ‹ÁööÔö“'óBC]¤Rå‘#9r¹j„³gûªãÄÇ—]¼ø€$ñSOù „Õ-¼x1×ÏÏÆÝÝêÂ………B™L™¹xqP\\Ûö®TššZUTW'qu,XàçgÛÅ™vGü0Ôö yÃáêkòo §%ÎãØ6š;¶¨$§ên,t{¡!-IxÏšÅÞ)<ˆOÿÄl½8øÛoînn//yAs†¼¶bù¥¨+Éׯ?óôÜ諱ƒƒ…Bᥨ+Ë—¾bkcS[WwñrTmmí€žŠ˜ngg§Þ1+;'åÆ ¡Pèàà0uòäî¡Ää”òŠ ¹\~öü…ÓÙ,–Z4_œ7¬}ãG[ogdŒ A]ŒŠìáÞ–±»™YR©ô‰Ñ£Dbql\ü´©S’’S2îÞµ´´œ1mª·——V¢=ÜÝ>Ùó bbã$Ri€¿ÿŒéÓ˜L¦9zÔ¡¾6ˆø‘A‚ª««Çë>ͺK­z‹Š‹£¯Æ65 =ÜÝfÍœammMí4(@&—]Šº¢P(F††Ž «Õ–Ô›·ŠJJ›šNœ:=uò$§/ZûŒŸmj‹ávÖÖ×Å%\ã°ÙsfÍòpw»sõnV–­íÓsf;:8ü?{gEùÇñïÌ^ì²Ü (È©€7žyå}¤•¥™e™·eÚáQ¦i¿´,»L³2;4£S3oIEQÅ åEîû^öÞy~ ŒÛ²;,Ë‚€ÏûÅ‹×Ïó}¾Ïçû}ž™Ù™µ¤ G°UãÚqñ 4BÇ>èþÔmM­ˆúa÷Ïû÷eÑBÃÄðòôüß»ëÞXýÖ¹óÈ=~Mæž% Mø,ìf“”´|à>‚§ÁŽ1 ‚A(­óùÁ["£¢C‚ƒÏŸwäØñ¨³1³g=Ëî29ãø<þÁƒØbââD"Ñà­ò&ON€SNò6§ƒ<ýÛ°"EQÊ @$ÖßÂæ]½ê8l˜hÿ~¾\n·{·ãС¼¤$„aEse„ D~>QT$ŒˆÎ\1ëÜn;J*Ú˜˜Ü¹sûêõZÃ펎¼òòÕK—`V#"2Gúóĉ,™L÷í·×‡ÿ-7WÆìÚ¸1nÇŽ«³g“Ét·oWÏ™sü‡n0»vì¸úôÓãâ óòä/½tâçŸo².\™ƒJH(Êϯ-*RDDdét»ÝêF÷î½5yòßññEj5}ð`ÆÈ‘¿'%•²â7U¶¢­²ôþF@¡«µ™Ã®½»¿|¯½½€iˆ ‚ B[¶Œ-/WËåÚ}û¦«T*v»uÀ?Ü\´¨ÿ7ßL¢iš¦‰ž=w<™Õ§;ó™QkßSÍS—-¿ó£á–jJÉX£½ìΣ\{ýÕï-"Ô ŸruӪ̽‘}þÇ^ª2UÒ•×Fls!%Z‚zâê‡ïfýÛïC¬yºµ©½()-Õêt^žžõãÎozöè!—ËW¿³nà€þŸlþ$I­N·ü[¿úú»ÛàŸÃG¦?5mí[«išFÍxnv\BB· À7–/«®‘©TÊO?Ú¬T*·|¾Õœ…ÿø`ªG!//OæËl@@$[†$IÃÕ윜}¿…;H¥z½þõ•«¿ÝõýOßí¬7ƒ˜®‘$R*•_~µcæŒéo­\AÓô½¬¬ç/ŒK¸dÛYHG "dåä|ôégŒ?¥eåiééÖ¾àïOQ”¹ð¶…ÚôÑfY&“}½sטQ£>Úô>ÔÊåó¿¼{ï/ëÞ~ ‚8wþÂþßuvr"IrÅ[kÎ_¸8}Ú“†Î,Y¸@V[›—ŸÿågŸr[3TL¡PÐ4m¹Ú:ŽÛϲòòß~ÞÍãñ²srgÏGQú=?ìB>üíuï[RÆÇ»‹¹`q¨Q^Qñsø¯ÏÍ|fõŠ7išÎÎÉ™»h‰X,nµ™3¿ üVÔét!Ý»çæå2«æÆ¯¹Ü³$’ðYÒM„PS•lÂ$`føXžÛû4h° 5:¦LúÌ‘¢MÊ CW¬¨u6öJ¥!tút6EÑ6 «­­U(þþ’gŸíÁzÈ:«R©h!sœõ"„"#_üä“Ñr¹\©TVTT¡RQ†â7U¢fUD@!ZŽ4†J¤a Þ’çÞQ­õŸ¡–+ ­Ô®ô}òº<«R'g[d.¯_÷{\¤…B¡WhÞ ˜™®,HUäµN/Ôj 8H¥Ü–'Mœàçë+“É2îÜÉÍË›?÷%•J¥P(ô:Ý‹³Ÿ¿‘!“ÉBß³ãe¯2Ñ©¬¬$B£Ñ „T*BuÃíÎÝ»,éÇg_DaTÆp f?7‹G’ …B«Õ.Z0/+;'ó^–a@B‰W¯*”Ê—^˜Íäs—Îß[·Ö³“‡m{Ô(1ˆÑ4EQEÑ4íäèè •þõ÷‚†ý5œ7ض”J%»œ’–VRZº`î…B¡P(x$ùìŒé±.Þïãøñv"3otë¤Öhh¥¦i,´V¯˜á‹O,Q;5=Ûò¸1£5R©ìäá'ŒgzÚÙË4%e8‚Å¡FÂ¥Ë4M/Z0ŸIu/OÏIÆ·æÌ©Õi€Ïç›Ü+‰T*52?~ïffšË=Ë࡟%Ý´BIË'sÃÇð4Ø1¦Aî5:¦LúÌ‘¢ÜírxbQgÏ4Hjo5rI’Qgcç`ôíêÀvðllì£#FˆÅb+†¼¹“ql>ÉÛœ¶xOÕ†%%0nrr€¿p¡KýãÚ„Z ¼òr¶0G½ÁÃÜk¸»K ¬LÑpWJJ¹^úõóÈÏWøùIÙ‡-»wwV©ô¥¥ÊN$й³”ý ¦ë7/OÞµ«“PX—ÉEõèáq×BǬkT*å޽鉉ř™Õ™™ÕÕäOjm‹¿Øs¿· ·Ü’ç¸8;@eUUÃ]™÷²(Š îÞ <ÜÝ)Š€¢âØøáGì+O´Z-TU×888¨TªÃÇŽ§¦¥åäçP¦>Gç¶`‰Ï••CœZR²«7+lW(-+5Y²¸¤D*•J¥uYGQÔÄñã(Šª®®n…5“6ÄÀÀ€?ØÄ,¡R©_Z¸pÛ×ß|òáMíiiiA^žžÌ*VFSYUåêâîînì¼»Ó¨5V1C,Q»QËB¡ÙÅØ †«ÌËÂ,)Ã,“j””–zyzòyFY1äÍœÄÄž3â<ðI¾QÚ╪Õ×åFùiiPY©0!<Ð[¶ ú|%‚&äãì óeÁG,–k#4ÕŸ.]ì½½.\(xúé £]³f8Ðó—_¦ØÙñµZ+×%Z­`n]3X²‚’J…jµÞð‘•Jkäaý2ºÿ°eývë­­ÕŽûŸÏ[ºtÀ«¯êß¿ó´iû m·@ÖVDr¹Üp]¥V à‘<Ø2×W÷¦(æágÒ ê¿§Ê´©¦´lë*$ß:šZËÝÝ­S§N7nÞ3êQ£]k7¼òAýë ËÌ÷øßX¾Ì^"©+GIž< Å’å¯óy¼gŸ™1kæ3=BBÞXý4H  ÆÎ³ñ•-“ÉBCCL]§Óna>­dv©™Ÿx|¨¿jè•X,a>ñf72÷ClÜ#ËèPA@)÷?,#bäðá§N³! ÃgR „H$Bi4ö7u5Z 0öƒ©wn›Ók&«[¢¶å–™ÿ4m4C‚%e –I5Äb±F«5œº™{€­6s††„ðx¼„Ë—Îe@®PÜJIyvÆtŽñËl0™{`A<$᳤›£¸Q%-œšs…§A“R´£i°¾®õ>?ðc+DÅÄ1eò$ö‚ÐÝÝ=êìÙ”Ô4îÁ8nôèï~øñzRR^~¾»›[ÿ°°Z™Ìª!oâä8Øæ“¼Íi‹OÿÚŠ’~ð¸»k§N:$4bð`æO­ÓéOŸ¦Äb¶†%e,/ÖAˆ~ñÅÞÿž•Uc¸=::·´T9yr7èÖÍ®\)a÷^¾\äà ìÜÙžÃr` sQQmvö}³—.Yî˜u&&ÈzvÙ²°GéÄãie2å¶2!â. Ѓí™?F{ºøª˜•LeÜ_®½Ab¯Öq!4uò¤È¨è‚Âÿ„/ñêÕʪªÃŒ_ ïçÛx<²Ghó§Óé.ÆÇ‹D¢”´´²²²mŸúìŒYH‘ IDATé½zô@Éå&næsXhÔ[š¦ܳ×ÙÙiİûïÄ3œÁïee–¿•œb°œ ì{öŒðñî¢T©òòòÙ-o¯[ÿ¿7·tlBû "B(7/Ÿy$8Ã×&|©ééì–”Ô4‰DâáîÞh»¶²f‰Ú¶õÓËoïòòò¢ûÎ'§¤ÚЫFÛÙMš0þàá#ÅÅ%F»~Úó³^¯òñ©ÌªÉñÛÌáö„Ï’n6SÉ>ï§Á¶6 6¿•¶cQgÏìßá¼¹ó_šÃü­zóu’$ÏÆÆrF77×¾½{_¸sîüãS£ôzk‡¼‰““ýþáçOòÒ¯TQÓB«FD#"„'NØíÙãßZ\RBÓ4óþú¬ìlµZ­Õj:”“£ÕêX÷˜OO9,4ì‘N«½!.þB\Ü‘ã'ÞXõÖÕë×7¬]K2÷Ürvv¾˜À¼aïÄ¿'ïff"ƒ$6}úþýuq±«¨PM˜°aÃ0„tl£ªÖm!IúûïŸ3çpÏž{íí$I¬_?òÛo¯Ô·ûÞúú:nÛ–8f̾cǦ³Û­k4,¬Ó´iÁ/¾x<(ȹ¢B=p ×SO…„‡'ûøØ/YÒÇj‰šS!ãŠu Òëõ{z¾6=é“AIïxœJu5ƒ»m ž4ÆOÔ<ã9lFÚ瞨F¯ô{l ^¨×ë[³ßlÿòƒ·¬#ÇCÑ4üáÆÿ¬Áúpèõúï­_ùö;s,rqq©¬¬ìճǪ7^Gwï>fÔ£ëßßÔÕÇ»ºFÖ#4dìèQÇÿý·S'éÓžôòôü-úìËË_Ûþùgæ,÷ V.߸ù#fU"÷êÙ󻯿êÄ<óçÌùtë—/Ì[ÀçófÍ|&+;›55~ìØ·Ö½kgg'—Ë;wözkå VØûæ ò¿õëÖ¬[ÿÌì¥R{Yláüy³ž™‘’šjÃYHG "ÜËÊfƒÈãñ|¼½×¬^5uò$­VË>ö —×­y{õšµ³çÎwtt¬©©:dÈ¢ùó Ú58¸ÖÅÖìcoz½¾kæÕÜj7n¹Þ1ƒƒ™%e¸ƒeN ‚ Þ[·výûgÎ~Q,“$¹xÁü}´fº ‚Ý»v~üù|¼… @ Õj]œ7nX?nÌhæA_0?~9sÏ¢xHÂ×h7­P² “@óÎtñ4í|lZ+¦|n,E›LS+FŸ‹ #†5¬HQÔø±c._¹r=)‰{0Ž9bû×ßôï×ù®¯uCÞäÉI¯ž=8ıù$osêžrfwμ“ ã¯Ì;—£NxxøhÎÍá\xøäÉ“›ZK"‘ØÙÙ±«LʪT*Ã3x’$Äb~B**‚À@ý€µµµ!gggµZÍíÌ•1Ÿ/‰E:]ÕÈ‘„@`®X“8uêT[SH’´··ÏʒݺUJQ($Ä­W/7…BÁ>pÂãñ„BÉÅ‹ù¥¥Š·¾}Ýår9Ó}C1@, æÝ€@§ãŸ?ŸKQhÔ(_{{B$UWW€N'äó)‚ €ÏÅÆètÔÈ‘hZÄn·®Q©TzõjiNNuh¨{¯^n2™&::7$ÄÉÇGlTËrN:Vh+•JI’4z';Çsrrª­­Õét$IŠ¥’„šŒ"MU Äk€4À(EsuCn¬=7p³½{|õm'ýH§z¥ÆŠQXÝ ¨Ï¢¢;w3išò÷ó `3ÄHX’$%ÉÍääòò oïÐ`v°H¥ÒôÛ· ‹ŠüýärÅ•kW}»võpwד’t:}¿>½ù|¾9 †X2 ˆD¢ÊªªôÛ·ÂúöW[[[\R2wÑ’Ý»vzzzÞ¼uK*uè߯¯V«¥(ʰ;̜Θâóù<ïÚ$­Vìêâ¢R©lÛ£FéxAtppÔ¿K†œ¦iµZÍ|mÆ\øÀ°-‘HÄ. ‘]RÒÍʪ*??ßîAA–̆ØÛÛ“$É´Âãñ,´Ö$µ›dÙÕÕU.—3/Ã`fšš‡FËPÅ,î©›FèÚõ4Mì&‰Ø©»I43]%IUUuzÆmµZãåéÉ<½Æ$ÇøóÙkaÀC¾F»i…’NVŽOƒh4¬ny+†>sĨIX—T‰„\F-ŠD"{{{F=ŽÁH„³³³^¯gJg^qˆ`òä„[ÛNò£G¶¤°ŸŸÇÞðððÃ@lÌ™¶x¥:iÒ¤2€ š¦9nC™+ü9~XhЛӧO·Y%y<ó lê¿_Îf ‚Ïç“$IQ”åÝg>æ×ŸÙí$I"ƒÏáX¶[×([…¢(Æ“=²œÓ§O@Ëe)G^åê*IZÙç}žÌÏ60YÑJó{Á!F˜ëGtl>Ü ÝF±7Z ¸¤tÞâ%;wlïÄ!¬É„$B¯¿ÿ¶°ÖìÑCD“ác0lËpÙºyÃͱÖ“jS±n>47u7‰æ§+I’|>ŒRÈ’ñk«ÜƒŽ¾F焦*ÙB39 ž iïÓ MZi ÇVs4u.µzÈ7<9a0'Ž 'y›_©v §-ƒ,¬(Ã| Õ$S–æ(©×ë99BÈŠî#„Œ4d0ul£íÖ5j8•›sÀ Z.K9úÈ>ÖÌ‹m#ƒÖÁ!F˜ëGtZh¸™v»þA/na-IÈÖïÑCD‡ÍµkݼaŽæXk‰Iµ©X7¶‘™Óìð´`ü¶hîA _£sBS»Ù:'NxlØV{œmÒJ[8¶rØlÒ\jõ7'‚¹í6œämN[|£ƒ1‰ _º±Ûó…íûg{Û ŽŽK—,vws{ÐŽ`0˜&ƒÇ/ƒÁtTº{ªXÉ–ãhë@ˆÞôšªV«éÆ~žÛBp†0ˆÅâÙ³žµ¡°­ "¦ÑéÚ®Ç/Æ&àicspRµð•jG+Ùr<mÑ Ü&mh­ýbsa[DL;¢…¨k¿ãcð4ˆ±98©Úøé_ ƒÁ`0 ƒÁ´-ð=ÕŽ V²åèÚvŒ^<äà bÚ8]1-Î+ŒÍÁIÕFÀWª¬dËÑ1´í½xÈÁAÄ´#pºbZœW›ƒ“ª€ŸþÅ`0 ƒÁ`0LÛ¢ÍÝSŠÅjµZ$=hGZF#’HZÎþãdkÂD !Ô®µí½xÈÁAÄ´#pºbZœW›ƒ“Ê:Ý4J¥Í-·¹+Õ®AA·oßîØù¡Ñh222|[®‰‡DÉÖÄ0jíWÛŽÑ‹‡DL;§+¦%Ày…±98©¬ƒÕ-39ÙæÆÛÜ•jϰ°t€ë7o¶ÄuyÛA$‘ø††…ÉZ¬‰‡DÉÖ„´_m;F/rp1휮˜–çÆæà¤²V·–¸R%˜o ʼ“ ã¯Ì;—£Nxx¸Íý`!I2,,,00PÒ’OÆ>p”Jå½{÷nܸÑr¿Tþ(Ùš°Q€ö«mÇèÅC"¦ÓÓà¼ÂØœTÖaxQ3zôhKªøùùqì 1lÄÆœ±æJ5§ Îc0 ƒÁ`0 ¦£“cÑe¢åWªøÝ¿ ƒÁ`0 ƒi[à+U ƒÁ`0 ƒÁ´-ð•*ƒÁ`0 ƒÁ`Ú6x÷ïÞ­[!ÐÞÝ;,¨ïS<¾]ó· YqJÜÅ)ZµLêìã:©[¿Á{€.Y"éÅ£ïôžÖ%p„Í[o9Ë­LὋÙ)LJ?¹Å\´K{Kó®šÜÐû ßÐÉV4z-ú‹ÚÊœÁs¼ü1ÜŽhý…#oÓ”~ФõöŽ^VX6ÄŠ?´Š¦tàé7¸$'z[äáÖLO0 ƒÁ`0˜–À÷T+ “soG$Ÿ ùAÊ*³Nl8òÝcòêüæoi*Š’}3¾ 3¶Kà£Ýûϲ“¸%ßùÛ<„Zꕼye¤9©ÿÖVfÛªÅÔ„=7/ì´¡eCƒŠÚÊ윴S’¬™äÜ=W–]ÂÊ¡Qp76+åøíÄߌ¶fÅeÞ<œ•r\«¶Á/Y£ì”QÎB$Ž;…d¥WÔ5ß ƒÁ`0 ¦%°Íï© E£flcWkÊ3O…ω9ðÚ‹6i¢…¸³MâàñäËÇø1³Å¿çc‘¿/Èψî2á:Ö¨¤³ß¹NX{5ÕòÂ[z­‚Y¶‰eCƒm–ÐÁsC×½æúðÎÉ.‚ 5·‰ƒg^F´^§b“ ²SNH<•µ%Í·ÖÆ¨kȤ ¾O€oÈÄëg·ÚÄ ƒÁ`0 ¦%°Í•ªNîALùßÙýËŠ³¼ü‡1²â»7(eE.¾AaψíÝ +å¸{—>z&3éŠÒvî2‘µÃQE)+ÉNàñEÁžwtóϼy¤4[ÈÀ$žLõ게¬äc*E…£k@÷þ3Eb—†®ÖTd¹uîcxEáÝmL—À‘U5»¥²85+ù˜^§tíÜ»[ßéÉç¶Ÿ•|ÔÝ;L­¬ÌL:6f…ÄÕdGš)iqö%G·{ÇÎMm±awònŸ©­Ê¡ôšŒkûºõ›Q’›èèPYœJ’|ïn÷)7ý4_ îôh£Ý12Hòeù×òïœU+*%ž½Ÿtt `J–æ]ÍN€À>O „’ê²;~=kt‡EYqy·Ï D}РR”çÝŽêÔu€³GwËe7bFž•r"°Ï´¼ÛgJr. ì‚ú>íìÌÖê0?zß+vön]Gvá4н+«ÓÈ㎿2hÎЩ› ²8õè÷OäeD{wÍm?óæá)ó÷¹{÷@§c®#ÍÔKZ4×Á“ÞUÉËôZŸç` öyêÖÅ]…YqÞA£ ;õ$ö}úߟg5Ú#ƒ©—~ð<óf#šÖÿ³ctnz¤ƒ«ÿ•È-½†-í½»¶wêÂá§!†¸çÐ…vàñíÂÆ¼Y]–QUz›ÝÛ%p_ É» õþú8cRv/Jbra0 ƒÁ`0ík g—GÏk®˜J^f'qYeœ?´ŠýéJ¯µ¢˜ïÚÁ]…½QVׇÿ®@muáäÄnqöèNéÕ*y™XêaT˜$ù]ƒÇu µU¹i—IMØ#´s:õƒÚʡȽ€îýgÀݤ¸íK믈8:";›“ά¤ ±¤EsÝ1G`Ÿi)ñ»‡?±Y­¬*ÎN˜ðÂOÖu‡ ÉôÄßÊò¯Ë*²j*²˜'Šk«ríìÝ„vNl1G· em÷.äUyöNÞB‘[˹SH^ý#²M…#…êWï1ÕųÈ«ò\={Ôw™ï×crVòñÀ>OÞ»Héµ]ƒÇ–&s„’C„†˜D–`8–1 ƒÁ`0«=ztã…š‚•Oÿr\ 2T•ÞÖ¨ª™»|Ì ÏAÖ DRÃ2Ç.ì^#¸«4 /@4¥#ëß~Äü’$ýßKYeö¥ˆ÷‡LyßÉ-Ùâàâ;dò{Šš¢¼Œ¨¡S?à %&®¦qûõjfG 1”Ô´h®;æì3íZôEÙ 5ewÅR.A£rÓO›3nΈN#?ºëq‚ä÷27dЋ®^=Ïü¾’G鵆%iZWßó»8{Gé5ÿ©EýgµI4bfµ~Y ì«¶ü{=qæZµ,;5¢kð8ö·pušÚ£¿Ïo(È}8EhˆÕïjnt c0 ƒÁ`0Ò÷?Zäé_„¨+‘[ì$.¾¡“ÀÙ£ð…/ÿ¡ÌAòвâBã{¡,VT1ÄÉ-Êò¯±[Jó¯ „öFOºÚI\ ï]Ì»}¦a„")8ºúë´ŠšòLvÇ©ð“ã~°Ð~ó;rß¡ÿJÊG‹æºcΔԹ«‡Ï€ìÔˆ{ÉǺ…=C¤Ý)Í»¢Mxá§^Ãw.;k5rpt Ъkd? ZQx‹YàØÅÝ;emImUŽAÓ÷ÔT qIn"»«$ç2[…¥sÀP¡cvjDnúiö%ÀPšwÕ¤ Fpˆ€Á`0 ƒÁtxls¥JQÚÜôÓ¹é§sÓO¥'þzb÷3E÷.Ÿö)óë/NîÝ<|$žÚ¬¬-yuþ…Ão×Våq´¢Š!®^½<¼ÃO}Äü|eIî•ôÄ_»õÖèÖ“ÐÎ) ÷Içvd&Ôë” Ó*ÓÍM?<ðè8ÂÁÅ/!â}F™7eŹ{÷³Ð~s:Â-©uÒ™ëS‘6õ ØÀ>Oe%+Ë¿Þ-ìÙ¦v‡1(;€¼º¢SöԔߥ)O·1RgŸ„ïé´ ”žøkeq*ApìâpÀ7t¢Xê~ñÈ;Uʼy¨àî9Ö™šŠ{ç¼^˜y¾Qå qÚ¥½¥yW ¦üîÕ3Ÿuîøß+U‚àù÷˜r-êsšÒùtËn‰L bä‡ ƒÁ`0L‡Ç6ïþÕªeÑû^a–B{Ÿ°ÉóþðôÌýÌöÈߨþ¨Xꮬ-s÷î7têFn›VT1dø´OÏü±àïmÃEbgµ²²KУƽݰذ'>âñí.Ysþð[|X¯Sñx‚>#_e^JüG§ý×Ë~Ö_(vÒ(«ú>úš—ß#–Û·º#Jʹ9º#uöI¾¸ëÈwM]ô¡©€ÞO$žúÐÓo°£«_“ºsßྡ“¢þ\âä¨VT¸{÷ó œqm¿ƒ«ÿȧ>Þ÷ÊŸŸ†ñ…©“wPßéÕew€ä Ìíâp€Ç·ùÔg1^ÿëóA|¡„ È~£^O»\÷‚ZQ™•r¼“ïà.AZ¢!4b¿žSOîÍÚkÕ5RgŸaonhÁ¿÷éW~ ì=yƒ»w˜9Az>rÿ1`n0 ƒÁ`0˜Ž ‚ B™wRàbü•¹œß^ ·âëmˆÖ—ä^QÉË\|Í~Ù²ÙU ¡(mIÎeµ¢ÂÑ-нKŽ’jeeYþ ½V!qììÒ)Xhçh¸W§U–ä$Pz­«WO_+ì7³#¦}VTDöì·-oÑdwhZ_p÷¢õ]ƒÇkT5–-쎡A‚ä—å_“W8ytsõì¡ÓÈ îžsñ ‘8v¡)mqv<_ î82öà DéÇ>· !J¯Ó˜ÜÕ¨ZuMqvB´—ÿP‘ØÅr=Mb2IJʜƒ_ybÉQ±Ô½4ïªPäàå?ÔðZÔ âêÕÓð®,·ÜÑ7ɯ›C†Oû4¨ïÓÌêÞMcžÝéßsJ“ÜÆ`0 ƒÁ`r.<ÜÂ7*ùùùqì 1lÄÆœi©ßSmAò½ü‡¶tCx1eŠP(ÔjµÚ—D(:ôøÉ“-w„~H”lMبBXÛv "Ææà¤²ŽV8b0 ¦]Óæ®Tµ*•P(¤iúA;Ò² „„Ba‹>!ö(ÙšF kÛNÁAÄØœTÖÑ ÇA ƒÁ´kÚÜ•*<$‡y„PK7ñ(Ùš°QÃÚ¶_p16'•u´ÂqƒÁ`0í—¶x¥Š]¶+Ùr`m;8ˆ›ƒ“ ƒÁ`0[¯T;2XÉ–kÛÀAÄØœT ƒÁØ |¥Ú‘ÁJ¶XÛ"Ææà¤Â`0 ÆVà+ÕŽ V²åÀÚvp16'ƒÁ`0¶_©vd°’-Ö¶€ƒˆ±98©0 ƒ±äJUðÛoü¨¨º‚@R)B"“% IDAT5p nÖ,‹­k·b…þñÇõ'6µÑ¶ÕçL‰‰E{÷Þºu«Œ ˆ  çE‹úám[ßbbrÌØ±c¼öÚé™3CÇŒñ5*cn»MX±"êñǃ&Nô·®ºÕÚ¦¤¦=qânæ=‚oŸéÓžì×·u¦lEÄÉS—¯Ô­„D"î:qü8‘HÔ³_lûjäˆaC‡ €O¾Ø:aÜØAmìW;RÃÿãÞ½,vÕNlüØäIvÍ bsÐétá¿ÿq/+kͪ•NNNVÛáVÛ0ÍÚ͹RÝwà@ZÚí ãÆŽ1Ü\™+×®EÇœ[³j¥Õ­´mÖ1 ƒÁ´_Èí€ PÓá'% ""x"O$â ü¬,ñêÕÒáÉœœFë NœàݽÛh1áέ[­ðƒ6¨$BhûöÄ þÊ̬™6-dâÄÀœÙÔ©ûwî¼fÛ¾geÕ;V'ûÑ£w³²j˜å;¯mÝz¹áv›sâDæÝ»UVTl޶¿ÿµoéëoŽõè°G)*.zmåªýþ±ÎšIöøç×?þlR•Œ»wÏÇÅ „PÀçó ·~µcÞ’—‹ŠŠ›ãÉù¸‹yùÌò¹Øó……EÖÙ±¢GÒñ‚x#)éZRR}ùù_îøúõ•«)в¼-ÛJýÏá#ìÛȬ6Ò¨Ú†iö`iNR!„4ÍÏá¿FÅÄüõ÷Žb……E±.XÝJËaµc-}Ä`0Lû¥ƒÜS%œœ´{ö°«ü»wÉI“$ ÔFFAp×%¢ÑFù7n …º]V­PòÚµ’M›.¾ÿþ¨uë†SEÄæÍc–/?ùÞ{ç<¨kWÛyGD‡%%«u:­^¯€7J ]Ãí6‡ À’¸›ÃŠŠé·3~ؽgé’Å çÍe´]¾ô•-Ÿ±ó‡1ÂÓ³“už‘q÷®J¥j’{R©tÓ{êV "/?ÿÕ×ß|óGßíØNpnìÂgOŸÔjµz½Þ +VôÈB:R üý ƒxúLÔ†›â/]>t¨…mÙVêÂÂÂ>½z½¼h¡N§³Î¦ej[4·V{r!.^¡P>=íÉ#ÇŽ—”xv2“KІú{Ÿ6ëƒÁ`Ú-äJ•A¥R±Ë¤tÛ6ÞsÏñΟ×?úhÝÆÂBá……´¿¿völÚãa£&Ëþý—ÌÊF®yî9 9Lµ¬Pò³Ï.8¯Z5X©T²7l¾ê©SY‹Õ=t—ž^qð`FY™*(Èù…zººÚ1ÛÊ óT«õý•¦ÕR>ÚuêÔ@ÖNllþÉ“÷h=öXb=FhøÐGÕÍœq |ÈàAl± qq"‘hðÀ&ó Áä¨NqL:f]÷1 ƒiHyú·aEŠ¢”&€H$¬‰wõªã°a¢ýûùr¹ÝîÝŽC‡ò’’PýÁ•»Œ0!ÈÏ'ŠŠ„ Ó™+fÛmGI…B“;wn_½^k¸ÝÑ‘W^¾zéÒÌjDDæ¨Qž8‘%“é¾ýöúðá¿åæÊ˜]7ÆíØquöìc2™îöíê9sŽÿðà f׎WŸ~ú`\\a^žü¥—NüüóMÖÃ… #"#sB EùùµEEŠˆˆ,Žb·[ÝèÞ½·&Oþ;>¾H­¦Ì9ò÷¤¤RVü¦êÃV´¢®J¥ºzõÚS§0÷—X$bñ¹ÈS3gLGíúñ§ƒ‡¾ùÖš„ˉ:.-=}þâ—#£¢”*Õá£Çæ-~9ãΦֱËW¬¼•’¢Õé¢cÎ-|eiÆ»¡[ÉÉ%¥eå•ããõœþÛ#c5(Š2hP ¸‘t“Ù²ýëo“SSÙ'##ÿ>t!T]]ýù¶í›·|úͮ﫪«ÏÆœ[üêò+×®¡ÿ*¼ióÇ —™å¨³1//{íÆÍ›55²;¿[õÎZŠ¢lÛ£Fé€ADÆ=ŠK¸DDŸÞ½ùð¶uýÆMÃv/ÄÅ-ZºìB\¼B©ØÿÏÁù/¿R\RÂTÿá§=ìß¿î½÷JeN^Þú›þ9|ÄÈŸ”´´¢¢âêªê‹ññj†Ãš‘bMRý7ͬóùÁ&CMMÍ¥ÄÄ)“&J¥Ò°~}£¢Ï²»þÜÿ÷ª5k“n%—”–¾·éÃ#Ç3­¤¤¦mþäS½^Ï“ÕÖnÚüqn^¾¹¼âÁä¨äÇœcÖé†Á`0LC:È=U“Ç<-êÚ•WP€„ì—-C£Féþú‹æñxjµ`ÊûU«ª##ûI°ù2º-[øåå —ëöíCJ¥¹b6“ÀF4Uɼ¼Z†òõ•UDÉd2fY«¥Ö®6-ø×_Ÿ"TU¥9rïÇ'ìÜ9‚8ränRÒww;’$ŸzêïcÇî-^Ü·¨HñÉ'—–-ôå—hšNO¯>|¯½½€iˆ ‚ B[¶Œ-/WËåÚ}û¦«T*v»uÀ?Ü\´¨ÿ7ßL¢iš¦‰ž=w<™Õ§;s õî©–”–ju:/OOm "£¢~ÜùMÏ=ärùêwÖ Ðÿ“Í’$©Õé–¿±bëW_·c;üsøÈô§¦­}k5MÓ¡ÏÍŽKHèøÆòeÕ52•JùéG›•Jå–Ï·š³ðLõ!äååYZVV# ’-C’¤ájvNξߤR½^ÿúÊÕßîúþ§ïvÖ›AL×H’@)•Ê/¿Ú1sÆô·V® iú^VÖ‹óÆ%\²m,¤#²rr>úô3ÆŸÒ²ò´ôô kß ð÷§(Ê\ø ÛBmúh ³,“ɾ޹k̨Qmzjåòù‹_Þ½÷—uo¿Aœ;aÿï¿:;9‘$¹â­5ç/\œ>íICg–,\ «­ÍËÏÿò³O¹­*¦P(hšn‚Ú÷·!Ng…Ï¡›T gcÏÓ4=n욦ÇóÅö¯²srü|}Ë+*~ÿõ¹™Ï¬^ñ&MÓÙ99s-‹Å¡É'þþ×¾«×¯8bÏ_‚xlâ„å+V™Ì+ÌÊáC1'‡cÖé†Á`0LC:ì=Õºíèõ!Þ­[¼;wtk×ÖªÕ …¢–¦õ+Wò®_‡ÊJ¶.G•JÅõ yó¦¹bÖ¹Ýv”T©ôàì,â(såJq~~íÚµC•J¹B¡‰ôK—`ß³fõJA©TÊåò>}<”J=BèôélŠ¢7lV[[«P(üý%Ï>ÛƒõuV¥RÑ4B NX­o!ùâ'ŸŒ–ËåJ¥²¢¢š •Š2¿©Y]Q­Ö€ƒTÊmyÒÄ ~¾¾2™,ãÎܼ¼ùs_R©T …B¯Ó½8ûùÛ2™ !ôý7;ÞXö*Ó¯ÊÊJ‚ 4 BH¥R!T—¨wîÞå°`Ix<>û>£2†k0û¹Y<’T(Z­vÑ‚yYÙ9™õï¡eË ¡Ä«WJåK/Ìf2¡KçÎï­[ëÙÉö=j”ŽD„hš¢(Š¢hšvrttJÿúû@AaaÃþŽ8¶-¥RÉ.§¤¥•”–.˜;G¡P( I>;czì…‹÷û8~¼HÄŒ¸nÝ‚ÔM­Ô4Mƒ…Öê3|ÿ“%jv-5=Ý Ÿïff>ؤbˆ:{vÈ AR{{„Ш‘#H’Œ:ƒJ¸t™¦éE æ3ãÅËÓsÒ„ñL+¾]}Øž}tıXl.¯8D07*9ÄápÌ:Ý0 ƒiH[¼§jCˆ’799À_¸Ð¥þ»7„Z ¼òr¶0G½Á7s,,Öqw—@Y™¢á®””r½õë瑟¯ ð󓲌vïî¬RéKK•:I sg){W„¦ëÎBòòä]»: …u§%Eõèáq×BǬkT*å޽鉉ř™Õ™™ÕE[!‹Mpqv€Êªª†»2ïeQܽx¸»SEÅ%°ñÃH²îã$­V UÕ5*•êð±ã©iiùùùm¢_Ü,ñ¹¢²rˆó@KJvõñFõÏ&tõñ€Ò²R“%‹KJ¤R©TZ/Š¢&ŽGQTuuu+ô¨™´ñ |üÁ&f™ •JýÒÂ…Û¾þæ“?hjOKKË‚ðòôdV™°j4šÊª*WpwwcG2åy“¬±Šb¡ÚÍôù'—$§¤zyz®|ûf ŸÏЉY0÷¥’ÒR/OO>ÇŒ/Š¢üýüÎ_Œc–'OœðÇ_ûÞ\¾¬F&»~#é‹O>Fqç•IÌʘØó`FÇ0 ƒ±mñJÕêY*òÓÒ ²R?`Bx< ·lAõ'AÐ||€½íc¾ 2ø¼Ü’bm„¦úÓ¥‹½··Ã… O?d´kÖ¬czþòË;;>B VkÅâºäQ«uÌ­kæ1QãÉBR©P­ÖÓçL*•ÖÈÃúetÿ‘ÑúíÖ5Z[«;ö/>Ÿ·té€W_Ô¿çiÓö6ÚœOô›ZÑÝÝ­S§N7nÞ3êQ£]k7¼òAý[[ËÌëLÞX¾Ì^"©+GIž< Å’å¯óy¼gŸ™1kæ3=BBÞXý4“±ó¦^…’•-“ÉBCCLÊ¥Óé ·07m˜]jæƒêï£z%K˜ìFF£T*mÜ#ËèPA@)÷?f"bäðá§N³"4 ŸI)B"‘!¤ÑhØßÔÕh5ÀÜódŒ7q&E³ÄšÉêMQÛzŸxR@TL AS&Ob/ÝÝݣΞMIM‹Å­ÖpæÔh4l+ãFþ'%ååç»»¹õ «•ɸóʤ&G%p&0·c ƒÁØ„¶øô¯m (逻»vêT CB@#(fþÔ:þôiJ,fkXRÆòbí„è_ìý÷ßéYY5†Û££sKK•“'w€nÝœàÊ•vïåËEÂÎí9,:Õfgß7{éR‘åŽY×hbbqAüСg—- {ä‘N<žV&ÓXÞ¨mAM<)2*º ð?O¼zµ²ªjÄ0ãßñóí <Ù#4„ùÓétããE"QJZZYYÙ¶Ï?}vÆô^=z „är·Á9,4ê-MÓ?îÙëìì4bØýWƒžÈÞËÊ6,+9Å`9Ø×áãÝE©Rååå³[Þ^·þnnéÙ„öD„Pn^~'wf•#| a—šžÎnIIM“H$îî¶k+kMUÛºVxR@ÔÙ³û÷_8oîü—æ0«Þ|$ɳ±±>ÞÞååå…E÷HNIe—ÝÜ\ûöî}áb|̹óOyŒÒë-Ì+#LŽÊýþá‡Û1 ƒÁ`lB[¼R5ûuó¡Õ #"„Â'ìöìqž:Upîœ~×. ‡Ò¡¡CÅë×S¹¹:޾wÏþµ×x99÷Ÿƒâ,S÷9±^ßh±¦ºÝÖ”\µj§§tæÌ£gÎäèõ´VKEEå¬XqÖÏÏé¹çBB={ºÒåý÷/ÉB …»wßœ;·/ó 7£vÙ‡u§Lñ÷ô´_±âle¥Š¦Ñþý·ÏœÉƒû<†šèõ´Ñvëus“@FF‰Z­Öh´»vÝHO¯Ðhô†â[!‘ÕçÌ~ÞÍÕuÍ»ë/%^¡(J§Ó]¾reëö]:wž8~¼‘eoï¾½{óÝ÷EÅÅ:.?¿à“Ï·—”Ð4ÍüŒGVv¶Z­ÖjµÊÎÉÑju¬{ÌM$ {¤Ój/ÄÅ_ˆ‹¿wäø‰7V½uõúõ k×’ÌÝj„œ/&$0/=ñïÉ»™™È |INIEåäæþøóÞÁvéÜÙP&v¹¿~>ÞÞ_·K¡P „"£¢¯'%1×Ã6ìQ£t¼ "€šššú ÆŸ;~ëW;âf<ý4j,|†ßFf–üý{÷ê¹ëÇÝå¡[É)‡›öøTv2l¨¦ ‘óõÙÆ­™‹E£j#ƒÔ²ÎçžTwîääæMœ0Ne€H4hÀ€˜s±C‡ vuuÙº}GLFÓtdTô¥ÄD¶Š¢&N“’–6yâ„P£yeR“£²OïÞâ ú‡cVè†Á`0LC:ÐÓ¿ÕÕNóç×YJÑ!ºS§jÃÂhó˜¨^³ghút÷Aƒ(^i)=hvëVÃÓ î2´¯¯pÛ6×1c*ã6Õv°Â%‚ÐGD<·dIÄ /œàóI„E¡þý½~ùåI’¤•vî|lúôýûÿêâbWQ¡š0!`ÆaéØF T­ÛB’ô÷ß?>gÎáž=÷ÚÛ H’X¿~ä·ß^©?yºï­¯¯ã¶m‰cÆì;vl:»ÝºFÃÂ:M›üâ‹Çƒ‚œ+*Ôz=õTHxx²ý’%}¬–¨9¿ÙþåoYÿþF‡¢i:48øÃÿ#XƒõÑëõß[¿òíwæ,XäââRYYÙ«gUo¼Ž îÞ}̨G׿¿©«wu¬GhÈØÑ£Žÿûo§NÓ§=éåéù[ôÙ——¿¶ýóÏÌY0î @­\¾qóG̪D"îÕ³çw_Õ=(ˆyLæÏ™óéÖ/_˜·€Ïç;:8ÌšùLVv6kjüرo­{×ÎÎN.—wîìõÖÊz½þ¿BÕ]´Põ¿õëÖ¬[ÿÌì¥R{Yláüy³ž™‘’šjÃYHG "ÜËÊfƒÈãñ|¼½×¬^5uò$­VË>ö —×­y{õšµ³çÎwtt¬©©:dÈ¢ùó Ú5¸Æ@ÆO쉬×ë±fþŠ¥qµ-oÅ”Ï1j<Ìô·Iå£ÏÅ ‚C‡V¤(jüØ1—¯\¹ž”ôÞºµëßß8sö‹b±˜$ÉÅ æï;p€-š³@s8>yòä¦Ö’H$vvvì*sþ¡R©ØÓe IÒA,æ'$ ¢" ÔP[[‹rvvV«ÕÌ—ëÌ•1Ÿ/‰E:]ÕÈ‘„@`®X“8uêT[SH’´··ÏʒݺUJQ($Ä­W/7…BÁ>=Èãñ„BÉÅ‹ù¥¥Š·¾}Ýår9Ó}C1@, æ'%NÇ?>—¢Ð¨Q¾öö„H$ª®®NÈçSAŸ/Š-Ð騑#;Ñ´ˆÝn]£R©ôêÕÒœœêÐP÷^½Üd2MttnHˆ“ب–åœ:u š£maQÑ»™4Mùûù°Ú¹D’¤D"¹™œ\^^áãí̦™T*M¿}»°¨(Àß?0 @.W\¹vÕ·kWww@p=)I§Ó÷ëÓ›Ï盳`ˆ%ÃG$UVU¥ß¾íààÖ·/ðx¼ÚÚÚâ’’¹‹–ìÞµÓÓÓóæ­[R©Cÿ~}µZ-EQ†ÝaNmS|>ŸÇã]»‘¤ÕjCC‚]]\T*•m{Ô(/ˆ€]e.êÔj5óíAsáöD"»,DvvII7+«ªüü|»Y2â ±··'I’i…ÇãYh­IjU·¼CŸ9bÔ$¬K*‰DÂÌ„F-ŠD"{{{F=¡k×oÐ4=°˜H$bgN ÂÙÙY¯×3%3¯8D09*¹ÅŽ5I·–;b0 ¦Õ8>zôhKJúùùqì 1lÄÆœi‹Wª“&Mj!ã ‚ iÚð,ÜÂ2B¡ê_~h¡)nNŸ>Ýf•äñxÌë4¨ÿ¾iƒ >ŸO’$EQ–wŸ ædZ§Óž–‘$ixS”ÕÙh»u²U(Šb0Ù#Ë9}ú4´œ¶F˜K3Ž~ÙxÒ»V[°+¼½yþ›ª’Ûì*_(qëÒ§[¿gøq3ÑiqG×öý†³G÷¦ÖM»´·4ïªÉ]½Ÿð ÌQ—{t7? ç­¢)ŒžùµÕF¬vÇ«QÒÃKr ç°EÞa–WÄ`0 óÀ±Á=ÕŠÂäÜÛ‘É'H>A²Ê섎|÷˜¼:¿ùÆ[šŠ¢äCߌ/ÈŒíøh÷þ³ì$n Ç7Dþ6¡ù*BK$ÍIý·¶2ÛV-¦&ì¹ya§ -|PÔVf礲¤$¥×Ü8÷UVÊñ”¸Œv妟®)¿×pÙ:Hž ¼à†¢¦Ð’ÂÍÔÐBo [)ÊJ(ÊŽ¿Ÿx÷NüïäÞ碬vƒÒk³RþÏÞ}Ç5uµ?7“„°÷žâ¸Zgëè°µÖÖÖÚÚ¡vÙ᯵ãíôÕj_k·ÅW]àA@ŠŠ(KöÞ+@vî=¿?.Æ4$—‚¢>ß?ɽ÷œóœçœ›äronbä’fã‹h#X¬®Xœê¢¤ÆªLÍSD0½‚õ¸w÷}@ËrN`LÚ:#¯9^Bk7[çàÒœ‰¸¶Wp×™ç÷Ty|«)K¶ižŠ›ŠÏD­H<ôÊ‚ç D˜¥‰~r-q›ÐÊiášhÍYßЇâþ|¶ª Á+xÖ] ¬Ç”.'“`üØ×+M57ÔJ ýØ,5kW8ðUÞ<«Rtz¼àꉸÆÒƽÿÚò™]‘;xüª·¼39ÔiÅÖ1P{â•Ü8š|xCUa¢WÐÌþŽÄP`!cW†ŒíºùÑ]s윃´#dpgön¯àÙÃA0^r¼¼ƒ#½ƒ#3Ïm5­8î"ó©ê°q ?÷ÿÎx¹®,ÝÕw½PÒ^Wtí´½ÖÊÎ; l©ÀÒ!Tšãè>L­RgýC’J7¿ík/ŠHÛëËrO²9ü QOX;ø_?ÖPyÙÂÒ!xô“B+ºx[cAiv´LÒlmï7hä2¾À®{¨âæR·aÚËyNs÷Ÿ¤µi–´Ôå–fG«UR{·¡Ã,sý¥ÙÇ=ÂäÒ–â¬ÃaÓÖ[íõv¤)­+»híàgiíÖÛ»w§òæÙŽÖrR­(¸º?pÄ’úŠ k¿–º\‹ã8US°"?–øLî±P‘) IDAT;:²ØÜƪ«U…çä’¡•‹ßÐ…Ö~ô– •WÊrO"„ü‡=Âå Û }?Ôã*†jKS+ožÅ˜Òùh+“4UÞŒwö¥÷jÆâëGì]‡„MÛPpõ@Iöña×3(Ý'@Yî)ÈÑÅ{,BH)—åž¶srò‰’Kš+nžõ4Ígðœ ÇÞÖ©ÚtrX’}ÜÙk´µ½/]ª¾â²Z%õ˜¢Rt–æœð¶¨òæÙúòK\ «€áØ:uVoÒtZé^Ê=`*Bˆ> Ü}šVÔmšéTÛÞ\ZW~ÉÝ¢ÈÖÓ˜ÀXln¯‚^nÌÞ­Q”õÞ ëíx÷â0^÷Öx`àë¯;*yG²Ù¼ÚÒTúiSuÖÑ]‘Å×+åíyQGÿÙ\›º÷Å »ãÿ^­‰Û ö­É»ô{EÒNlN;ñEªJsbb~~$aß‹y—ö`Lå_Š:½çqL©B7ãŽïž_ž«”µå¤ýttלNqu÷8mª ÏUäÇj_/7ûé½aËèÇ¥ÙÑÑ?.¬-K“u6]:µåLÔ zK†ú3b?Ï»¸çôž'ª HµÒPGú˜Òă¯T$ô¶E½Ý©+¿$×Ê:*òc)JE×ÜPq9ùðz:™!¥\œxè•¶ÆBcº£SaÁ•¿Oü²´®ü’Z%-É>~ìû‡ZêrB…™NþúhcUfgk器'/ù$ó\×¹†U d§þx&ꩺò‹m•çö¯½yåoMHíÍe©Ñ›jKÓº'V!k­.J þˆÐÊÅÅ{LÉcÆ ‡Þ P‘w:ãÌ'ôÕEɩћ®&|C?-Ï?“ó›ÃÙz©¹´•^nhÐÉaú‰ÿk¨¸¬i½èÚ¡Ü´_B2Isjô¦äÃë/ùDÚÙPš}|÷üš’h %M§•îݬ)NFˆpöºM3CÊ ï5´¶ÆÂ“¿=ÚXyÅÒÆÝäÀ˜‚^ÕãÞ­ÍP†»w\o0^÷Öx`àë—sª!‹ciãÞÙõ}<|þè®>ã§?¾›Åâ¨UÒ3Q+ÒbÞ[ðÂq„PYî©Åëb"g„PÜÏ”åž<îæ"qí¢cØ~kÃÍcß?DªóW&–gàÔ„ýk;Úª,mÜ/žúÈ;$rê²Á–K[OüüHfÂ7“ë^„6fÖ¦¸?W%ìÑÂÒÁÝ’›ÿD€)š³²*EgjÌ{ÁcV„ÏÛ‚j©Ë=þÂʂÀ©Ìõ_?:wÕ~GáØ½+ u¤)ÕeL‹†º3vö{²ÎFµR2ã‰ÛßÒôöð”Ý5¥©ôiвÜÓ!ÿáœúí±»£SaîÅß‚F=AßÙˆ¢Ôÿì˜Z‘geï{9îó!Vý>B¨±*óÄ/Kéž*¥ÄÐ*†‰!í¨Ë<÷ßÁãVŽŸ»!ÔÚp3槇9\!’sPäS{ôžP-Í91öö0BÈwÈ‚‹§>lk,d¾‘ I*õNAÓKÆ(åbž…M}ù% ¡}CåUŠT±ØÜºÒ4'Ï‘ôé#¯à™•7ã|Œ®Mï. wP ik¸ùðKg,„v¤Z»wå¥Ó?üÒ)­õ“Ö½•¶¦¢äÃèRqMcUfÄÂÏí]CéµZÓLÿ°Ú»Ñ;ͪ â»êo,<ýûr¯A3"}A„ñõj è=‘yïîíŽëãuo¾~ü•›‹)!ÔR—+n*1õ5‹ƒâp…C#Ö4ÕÜ ¯éòº€þŒŽ²w U+e=ñ }ˆÍá#„lB~ÃÑß«´q D©•Ò¦ªkq͈©¯Ó7´Ú…Œ}š>ÖÒaã°äÕs3—ÿâ:¿©æzʱ·n›˜|xƒZ%CU'«#¦¬Ó„7qÑB+—ë÷ºþÄÜ“SÚ1-êŽÞ í\Bl‚ÊrNÒOK³£½‚fIÛkMèÎCÏü=~î‡ôcR­$¡RJ« •òöS^¡—;yŽt÷ 3¬bè]eA¦È‘3ÞìŠß9ØoÈM < kÀ©z¿€Zrý˜›„@ä„ò K¬O«šôÅÒô™Ûºò‹C#ÖjEcõ5„PmYšgÐ º¸OÈœŠüÛ·zÒ» ôJhøsB;„›c6íõ¶Æ‚Ö†Û·„íÝ$Ä©Vj©Vò,¬xÖù{5g½4Ó Vdx¯A·{„V®‹¾ Vß÷æ=‘yïîíŽ÷Œ×½5^¸+L9§š¥y•K[ëÊÒg=ù³iÝ!X¬üŒ?«2Û›KÅÍ¥ôÅ­–< ÍfÖÒŽFæU t¶VZÚxðøVšR¶ÎÁ•·.6¤³­²¡òŠÈÖãôž'è%,6·äÆñQ·Žxõ24Á0¥vôQ[šêâ3¾­±Èwȼâë‡ëJÓø¹¤ÙkPבªKHGk¥J)åò„ÈÀ.Ð+Ú_t´sŒêl­Ô,éÕ¨Ù:Mìö l•ŠŽè¦E¿¹âw¤5ÍaEéfôÕÎOmqö]_žÑX•éì5ºï{G{:ÃÞmLý"³Þd ÆK+þ;7^Úï\0»©S§ö¼Qo˜xõ/Ã*­µá¦BÖFÿU›>á9fÖ&._¤½ÐÚ]³Vs‘±9|„0EªX·î~Dÿæ!uëí½¥ìâÉÇÍýÐÆÁŸ^beç=nÎf‰¸¶² >|ÞÇžPïÏÕô\ÿ­Nõ±#Ú´Sª‡-êŽ!þÃ]Mø¦¶,]ÜX$9¹L©È5T¹¡JTŠÎã»ç,Îàq+ƒÇ·Úy‡ÌFÙ:"„8<¡«o8ý`±kKSéJz™PD›ƒB¨±êªfICÕU.ÏRçJW ¡]MIJåͳÝ{Àã‹BÖö¾*¥DÜT¬Yq&ê©ìÔ¬¿ï¹пSÊ€¡ECÝ1T•ÈÖËÉsTYîÉ’ìèÀ°¥Á2¡; •—%íµ³žüyÈ„çÝü"ø[¥¢!díà§”‹Ûµ~¸µ¹æý€asï¤õ­åZMß CJnuõ 9ý°iëéãç}Llæ €&€ç éíÍ¥%7޹øŒG¹ùE4VeV%i.ý¥y‡Ì.ÏÓs9:JëÂïÖ†íUõ·—_ÒDHëã$lo)ï>± +2¸×ü€r÷ŸD¬ˆ…Ÿ·5ç¤þÔ÷½ƒa zÜ»»cȰ `¼ºÈã€Æ_{³¼‹{*/#„ÄMEWÎ~åæ¡ý$=ŽšöÐË¥­·&^lYîÉÔèMU… ÁcWèfhX‘iæ¤u-€½khhø³×’v°9|ãÓ‹a zÜ»u0gØH0^Ìùhã€Ì<÷þUÊÛö¿H?æò,<Ãæ<óý«’´©K·Çýùì¡í“"GiG££Çˆðy1×iBm‹¾<û׳·Eð¶ri‹{ÀäQ3Þê¾Ù„Ÿ±9޽}þè›®@­’±ÙÜa“^<î„ÁâL^üM¾55’'°QH[‡O~ÅÕg¼ñõ›Ü‘SÊÀP‹ ÝÙzf§ì>öýCóVÿ£]•ßÐg>qñkmïÓ«îÜ®ð¹CÞ!³ãÿ~ÁÆÑ_.ivôá2§àê+{ßI°ÿÅ¿¿ ãð„"€á‹Û B,6×Ð*†Ø‹I•xèÕ}_áð„Á1åÕ¼K]×!È%-¥91ÎÞcÝ&k‚,¹~ŒÍæù ž«¼ßÐ…µÑ)5%)ô}õ2<ÏAÓ 3¸øŒCñøVîC[ëóÝü&h'–«oxm©îÏ“èÏáê†Oz9íÄæÛ"Xl.ßÂfð¸•Ú'Á|BçÞ³œÃ³TÊÅ"[Ï ó?Õ©ŠaÔt†¾­±@3ñX,Ž•½Oø¼-!cžÒ©ÐÉc„¡a ÿl÷iæâ®]|äô å¹§ÒNl620.ϲ÷ÑÃÞ­ƒ9ÃÆ€ñº·Æ 1F1..ÌE¥¤]^Éø}ž¨¨(¾ðƒ)u}ÅeYg£•·‘we4¡ˆ6’TÖ—_’Kš­ü݇1l)—¶4V]S+%Bk7;ç ž…µöZ•RZ_žNª•ö®¡VvÞ&ÔßÇŽèYÒÌå[²9½mQow(J]]”„)µWÐL…LÌP³‘ÝÑ®`q«®v¶UÛ8Ú» V):«‹’ì\‚…Ö+Kãpnþ“’¯Ç¤zúã»1&Õ*…ÞU= ”‹ëÊÒ1¦\}Ã韄é?ÆO½:ÅÕ¤Z¡ùV^w:9ìh-o®ÍáYظúŽ×|ͯ½¥üðÎi ^8.96T^áñ­\}Ãé;cë0”4VzÕ…îÃjïJŸ4´×ôG`ÌÁ¼wkÓ›af{? ŽXôeÀðGº ãeȯ=[ü¦=ºË7T÷oR0—¤¨(#ï¨äããð6**jâ„1¡äijwîHm’öºƒÛ&h>>J;êŽ|7kLä»ÁcžbXu·£p4G>&*ƒ¾Ó>R5Œ×]Gª@ë#Uó\ý @oYZ»›ôRòá× 3°ÙÜúŠ [ç À°eÌ«h²’wܼüç¼çÞí@€YÉ;«‹’ïv0©‚»fôÌ·ý†.l¨¼BªdƒF=á8EsÑ Ã* ÍBh;rú–Öº÷zwÆ„Ÿõx!m0^w˜‹÷XÈ90lœÄî9ðéÜMö.ƒí]÷vÐàYØŒ˜òÊÝŽâÁÕÛSý0^wýk:w; ˜¢_~O0Ù€;§Š)ª43³¾´T)•ÞíXúO(tñ÷÷ #XýõÇ‚$“w’fÔBÛ{ "0;˜T¦¹ïƒîiîHµìÚ5²µuáܹ––‘ï> ‘HÒÒÒÊ®]ó5ªŸšx@2y'iF !¹½GÁ ³ƒIeš;ð>àž6àŽT늋ÌËãñ”JåÝŽ¥ñx¼ððð˜Ó§ûïúÉä¤5„1äöƒÌ&•iîÀû €{Ú€;RUÊd<¢¨»HÿÂóx¼~½BìÉä¤=jÛ{ "0;˜T¦¹ïƒîiîH!ô€¼ÍcŒû»‰$“w’fÔ ·÷.D`v0©LsÞÜ»â‘*¼u™ d²ÿ@nï0ˆÀì`RæGª÷3ÈdÿÜÞ`ÙÁ¤ÌŽTïgÉþ¹½À ³ƒI˜ ©ÞÏ “ýr{€Af“ 08R½ŸA&ûäö>ƒÌ&`.÷É‘*÷?8ññ]O‹DäèѪÇCAe-Ö¯WÏŸ¯ŽŒìm£ŸÉŸ™22j÷ì¹qãF#A¶«W˜8Ñü±%&V>\°cÇ,„Ð+¯Ä.[2mš·Î6†–›ÅúõñóçDFúšVÜäÜæäæ?q¢¨¸„ §‡çâE G fZUæròô™K—»ž„P( ‰œ9ƒÏç÷¥Úo¶};iâ„ðqãB_|³uÖŒécد&ÞOƒõç_%%¥š§‹  ‡æÌ¶èÛ ö…J¥Šúó¯’ÒÒ·7n°±±1¹ælkO³ /GªûÊË»9kÆôI# msùêՄĤ·7n0¹•~2`pïbÝíôÀ½ÇÉÊâž<ÉæóÙ|>›Ëå”– ÞxCA”—÷X–{⻨¨ÇÍx»vñ¶n5!60“ãíÛ3fÍÚW\,^´(82Ò¿¼¼}Þ¼»v]5oßKKÅÑÑ]i?~¼¨´TL?ÞµëêÖ­—º/7»'Š‹ŠZM(Ø—Üþ¹oÿÚW_«®®™6eò„ñãkëj_Ù°ñÀ¡L«M¯‡þÙû×ß½*RPTt>5•Ëãry\‡]]S³õÛϼ°¦¶¶®/‘œOM©¬ª¦'%Ÿ¯©©5­zÔ£ûo¯ee]Íʺ5ˆœªêêÿîØùê†7H’4¾-ó¦úŸ£ÇþÚ ÀߟÃåš\IÙÖžfwW_&ÆX¡Püµ7>1qßÁC ›ÕÔÔ&_¸`r+ýÇäÀúû}À½ë>9§J²±Qþú«æ)§¨ˆ5{¶ðÙg;ââA0—%¢ÇF9×®‰üžz[5!“W¯ÖoÙ’òá‡SÞ}7‚$I‚ >ýtÚºu§7o>?~€——•ù¢#¢+Âúú7T*¥Z­B]»Ö ‘¨º/7;‚@ÆŒ»!&Ì¿Yðã/¿®}áùçžYIçvÝÚ?ÿú›]?þ4yâDgÓ"ÑQPT$“Éz‘H´eó]O ¢²ªê¥W_ÿðÓϾ߱`Ü}˜+Ödø\ìi¥R©V«M¨Å„é~DD~¾>Úƒ{6þƒ¶¤]¼nd[æMuMMͰ!CÖ¬~N¥R™V§qÙ6êüŽ19’ ©i‰ô‘E EÇÔÕ×»8˜KÐêïm60÷¬ûäH•&“É4Yžž¢mÛØ?Î>^=yrךÞ_±jj(__åò唓S÷FõnÃ=uŠUZŠ ^T”âñÇÇPÕÀaB&¿úꢟŸíÆc¥R©fáD8{æLéêÕ]Ýåç7>\ÐØ( °}òÉP{{ zù‘#aa.r¹zß¾<¥’œ<ÙkÞ<M=ÉÉU§O—P~è!?„°&ÂÓ§ól<<¬N*)-+ꨨìÇIJêZÞ—F32jãâÊššd®®¢¥Kƒlû˜"“ îùãw÷ËŸÐÎíóÏ®:w6íâŇ.ˆ?—88$X,Ÿ‰;»jåÓ¶66MM§cãÝÜÜŠœegg§)˜“›—~é’X,vpp˜1mš—§B(%-½º¦F©TÆœ<5;r—Ãa¨A‡öîãäèøæ†×ß~ïƒÌ¬¬‘#F „NÇÅ õôèºüFvŽ\.;f´D*MLJž9czjZzÖ–––³gÎðõñÑIÔù”Oç[»IQqqBb’L. œ=k&›Íîõè~Dü¯A6!ÔÔÔŒ164|Úm‰D–:í–•—ÇŸKlk{z¸Ï3ÛÚÚš.ž”2(H¡Tœ‰;«R©F……MŒ˜ KÆå+e­mm‡›1mª@ 0T[÷ŒŸíÛ]¿5”¦Å|w'-.>!8(èùUÏ‹Ž‰?—¸ü±G5«®^»–š–Na>á®WÎÔôt›3nìÍfRSù|þØÑ£õÎ+ÔSô19z3­û@w÷ÉÕ¿Ý ’$)5 ñù¼[×#±¯\±ž0à§³Óâ—_¬ÃÃÙYYøÖ›+ó6¼ôt¢ªŠ¨­å<‰T*C›™öÀɤD¢LL¬X¹r¸Z­Ô^nmÍnjzcíÚQôÓ“'‹§LùûĉÒövÕÿþ—ñGEE;½ê£Rw츲|yt{»êæÍ¶+b~üñ½jÇŽ+ppãÛ›²nd×74lÞòɱ˜º•œÜ¼O¿øR­VÓ›µwtlùô?•U†æsôî•ÌÉ1˜iyº»OΩê}ÏS"„½¼ØÕÕc„±åË/ã)STûöQl6[.çÎk¹qc[\Öü%Øð6ªÏ?ç45¡ÎNÕþýX*5´™ÙR`&½Ídee‡BAz{‹t bŒÛÛÛéÇJ%¹iSò¢EA{÷>L¸µU9iÒžÿü'}×®Y!‚ Ž+ÊÊzÁÑÑ‚Åb=üðÁèè’çŸ^[+ùâ‹‹/¿<æ¿ÿEQT~~KDÄKK.ÝAÁÂþùô¦&yg§rÿþÅ2™L³Ü´FB?þx}õê‘ß}7›¢(Š"BCwŸ>]:l˜#Bô €;wNµ¾¡A©R¹º¸0äD\|üO»¾ <¸³³ówÞ=jäŸ~Âb±”*Õº×Öoývç÷;¶#„þ9zlñË6½ùEQã%/OMO ðmÝËmâv™LúågŸJ¥ÒÏ¿Þj¨†Å ¯GcWW—†ÆÆ[c„XK³ ‹ÅÒ~ZV^¾ÿ(+‘H­V¿ºáÿíþáçïwݪÓ]c±Œ±T*ýï·;–-Yüæ†õE•”–>µê¹Ôô‹æí‘‘î§AD•–—öåWt< MyùùlzÇÏ×—$ICçÝÆxËgŸÓÛÛÛwîÚ=mʔ϶|ˆêèì\õüš_öüþî[o"„‚H:áÀŸ{mmlX,Öú7ß>!eñ¢…ÚÁ¼ðܳí•UUÿýêKæÚ´3&‘H(ŠêE¶o/Ã*•Ê„˜1ÆwwRÑÎ%Ÿ§(jÆôiEÍœ6í›íß–•—ûx{757ÿµ÷ñeKßXÿ:EQeåå+W¿ 0Æs"#ÿÜ·ÿJfæØÑ£BÉç/ ‚x(rÖºõõÎ+†$Ú+#ÂÇJC`¦å èî¾=§ÚµœËEj5Ƙ}ã»°PµiS‡\.‘H:(J½a;3µ´hÊ2l#“Éèw}‰Dº~ÝÐf¦…=p2)“©B¶¶|†m._®«ªêØ´)\*í”H$|¾zíÚQš{#!„{l°H„¤Riggç°aNR©c’ÔLèèèH$¾¾ÂG¬‰P¬L&£(Œ1ÒúÀjz£㸸§¾øbjgg§T*mnn#B&#µ“ßÛ™\P.W „¬D"æšgGÎòñönoo/(,¬¨¬\µòi™L&‘HÔ*ÕSËŸ¸YPÐÞÞŽ1þữ½üݯ––‚  ÆX&“aÜ5Q ‹Šj0¦Gl6Gs?m´Ÿ!„–?þ›Å’H$J¥rõ³Ï”–•ߺ­fŒÆ8ãʉTúô“Ëé™àîæ¶ùÝM.ÎNæíQîÇAĘ¢H’$I’¢(kk+‘hßÁCÕ55Ýû«½ÇiÚ’J¥šÇ9yyõ Ï®\!‘H$ ›ÅztÉâä )·û8s¦ŸOïqr…¢[®äE!#k»•1íû?“mí®åæç›sQqñÝT´øsçÆ#²´ÄO™4‘ÅbÅŸKħ_¼DQÔêgWÑû‹«‹ËìY3éV¼½<ýýü4<—œˆþþ~ÿùx ý˜ ™LþôsÏmÛùÝŸ|ÜÛž644áêâB?¥‡U¡P´´¶ÚÛÙ!„4{Öy¯jÓdL›‘ÙîcÌw}R!„êêê³sr]]\6¼õ½„ÃáÄ'&>»òéú†W›Mï_$IúúøœOI¥ωœõ×¾ý¯¯{YÜÞžy-ë›/þƒ1fžWz“`h¯LL> $‡!0À\⑪ÉdÕ)ÈÉËC--êQ£0ƈÍFQŸŽo}ø ‚"ìé‰4§} oƒµþ^nÌfDoãqw·ôð°ºp¡ú‘GtV=öXôèÑ.¿ÿ>ׂƒ1’Ë•A×ä‘ËUѧ®éËDuÿLŽ1‰xr¹šÒúÌ$“)u"¼õß¾dôÖrÓíèPNŸ¾Ãa¯];꥗ƌé¶hÑ~íFûòýÞtttpvv¾výú´)“uVmú`sHHðÇ·îÚJ×LßÎäµu/[ …]ÛˆE°\œ$É ë^å°Ù.]òز¥ƒƒƒ_{ãMÔ-™ 5è¯ïV(¥eeííí!!ÁzÓ¥R©´—Ð'mèUrú7lºuU;*@HŸøÓ,T(R©ÔÌ=2Î}5ˆaŒ%’Ûf"bRDÄÉ3±š?"t>½©Àóù|Œ±B¡Ðü¦®B©@Ñç<éÊ»ïqz“fLmz‹÷&Û¦Ç|×'B(>1‘ ˆ¹sfkãÏËÉÍ ¥Rû•S¡PhZ™1uê÷?þ”™•UYUåèà02,¬£½y^éM‚Þ½1N`æÀ³ˆWÿšIŠ>þ9:*çÍCQÁÁ!—+;–þ'W©Ô±±¤@ )aÌ6Æov/˜zê©¡æ—–Šµ—'$T44HçÌ DÚ"„._®×¬½t©ÖÊŠçæfÉP³¿¿mmmGYÙíj/^¬5>0ÓÍȨ«®î÷ÌÊUO¯ ÿm|ýU‹u.9ÙÓã©©©¦öv²sr5ì‡z!%-1éüü¹‘jµ‘óJ‡Þ½òÀ¡’Ã`ñHÕà×Y CJ%ïäIÞÉ“¼',~ýÕvÞío#Óý|}‡ ÝýÓ/MÍÍãÙ9GG/š?OóbØ=›z’Œé¯Ïö\›¡±è1ÛXkj™ó]ŸT……å•‘³fÈ´XðùcFJLJ7ÖÞÞnëöâövŠ¢ââ.fdhZ!I2rÖÌ„ÄÄœ¼¼9‘³0Æ=Î+½IлW:”!9áã3!o@w÷ÑÕ¿mm6«VuÕ áqãTgÎt„…Q*ú2Qµâ×_ù‹;ŽC:9±¨1c”[·j¼`Þ†òöæmÛf?mZKt4sU‡ !„úäÉÇ_xáä“OžàpXc’Ä#GºþþûB‹¤³´k×C‹9r¯Es³lÖ,¿>˜€±JÓ¨VV»–°XÔ?Ì_±âhhèKK.‹E¼ÿþ¤ÿýïò­O·£õö¶Þ¶-cÚ´ýÑÑ‹5ËMk4,ÌyÑ¢ §žŠ °mn–íúðÃÁQQÙžž–/¼0Ìäõ¥àwÛÿûñ>ÿÃØl6Ƙ¢¨  O>ú?BSá­Ž¨Õê6¿¿á­wV<»ÚÎή¥¥eHè௽Š14hÚ”Éï¸ÅËÓ£MÜ>8$xúÔ)1§N9;;-^´ÐÕÅå„skÖ½²ýë¯ Õ Û„::;?úô3ú©P(úýÎoЗ‰"„V­XñåÖÿ>ù̳ÇÚÊê±eKKËÊ4UÍœ>ýÍwß³°°èììtss}sÃzµZýïDu´$ùï¿ûö»ï/]þ”HdÙ.nnÕ3-]’“›kÆé~D„PIi™fÙl¶§‡ÇÛolœ7g¶R©d>í¶´¿ûö[o¼½iùÊUÖÖÖb±8|ܸիžÑjWëë^±¯“dµZÝCm†Xzζñ­è‹™aŒzž úÛ«í’’y\îÄðpí‚$IΜ>íÒåË™YY›ßÝôþ‡-[þ”@ `±XÏ?»jÿ¡Cš§Lš¸}çw#GŒ ¿ëË<¯ %Aï^9$t0Cr‚` è»®¯¬Ðß]).ÌE¥¤]^¹r%C™¨¨¨©ŒôERTÔœ9sz[J(ZXXhžÒŸ?d2™æã2BˆÅbY œôt\[‹üýÕ£Futt`Œmmmår9ýå:CÛ „Ž09«T­“&\®¡ÍzåÌ™3-“!‹eiiYZÚ~ãFIâà`‡!C$‰æêA6›Íã SRª$ÁÁÇ;vvvÒÝ×N&BH p¹\ú'%¸\®JÅ9¾‚$ñ”)Þ––ŸÏokkC©T<‡$!Äáð““«U*rÒ$gŠâk–›Ö¨H$ºr¥¡¼¼-$ÄqȇövEBBEp°§§@§”ñΜ9ƒêKnkjk ‹Š)Šôõññ÷óÓäV'$‹% ¯gg755{zx„i¦™H$Ê¿y³¦¶ÖÏ××ßϯ³Srùêo//'GG.—›™•¥R©G Êáp ՠ݇͘Ïç·´¶æß¼iee6|8BˆÍfwttÔÕׯ\ýÂ/»w¹¸¸\¿qC$²9b¸R©$IR»;ôG[º*‡Ãf³¯^ËR*•!ÁAövv2™Ì¼=êÑý7ˆVVV\.Wó”>¨“Ëåô· BH»->Ÿ¯yÌårùYY×[Z[}|¼³Çi³´´d±Xt+l6ÛÈÚz•mâÆ·¢3ÃõŠi“J(Ò¯„:-òù|KKK:{ÆW3¯Q5zdŸÏ×¼r"„‚°µµU«Õô–ˆq^1$Aï^Éœ.—ËX¯òÖïƒî˜¤¨¨©S§³¥ÃÚ¨¨¨‰Æ „’ÏÄ#ÕÙ³g÷Så!.—KEQÚŸÂ܆Çã¡[7?4²*f±±±6“l6›¾ùï;mЂàp8,‹$Iã»OýaZ¥Ri,c±XÚ'E5yÖYnZ£š"$IÒèí‘ñbccBý—[†¦C¿Ì>QµÃÆkN´"„êêžyþ…];¶ àp8ôQn÷Oùz‡’ µúö}¶îdÀAÔ;|4í¶´›¶Çҗڌ϶ɭ „Ieˆ¡WNCL{ÑÓ»WÒ %§·éÕ¯ïƒî˜þ8R½®þ5Žæ“Ÿ ÛÐg'zUÕÝÕ—LªÕj†Olcº1ÖÉ!Mç#”få¦5ªý¹ÜP&è¿Üê0Ôe†~õÓDÕö­ë]™? 3”w¾GÔ 2l¨]Óö8CúR›ñÙ6¹•0©êìÕ —i/z ©3´ÜŒ¯¨@wñŽJ€{…µµÕÚžwtp¸Û€ûÊwNõ™ì?[š@ XþØ£r¹\çrÁ{ "0;˜T€¹À‘êý 2Ù ·4Œ±DÒó6L0ˆÀì`RæWÿXàœêý 2Ù ·÷D`v0©s#Õûd²ÿ@nï0ˆÀì`RæWÿXÜ9Už@ —Ëù|þݤß) ¾PØõ?8™¼“èQÃCnï]0ˆÀì`R™¦¿ßÜÓÜ‘ªW@ÀÍ›7ƒ‚‚îï7{…BQPPàéïßM< ™¼“´G r{‚Af“Ê4wà}À=mÀ©††…å#”yýºB*½Û±ô#¾PèíïÖÞoM< ™¼“4£†‚ÜÞ£`ÙÁ¤2ÍxpO3ñH5)*ʼqh°X¬°°°…óæ ïë+‚¤RiIIɉ¿þ¢(ªŸšx@2y'iF !¹½GÁ ³ƒIeš;ð>àžFÐ7*$c\\˜‹JI»¼råJ†2åw(6÷‚r£}||ÖFEEMœ0!”œxîý ``#U ©XÌpïßÂkkŠ’»ž—géè0üa6Ç¢ï•ß’öºœÔ›ër”òv‘­§wÈìÀK‚}C2&¥)ÇßñºÈÝ¢Ù[7{Í7.|OªaÓÖ3·•ó¾wH¤Gà4Cõ”Ü8Zy3^ó”ÃZ;ø ù˜…ÐÞ\¡Ö”¤”åÄD,ü¼ûò«ûÂçÂØö¶ÎûÕ«Hg®*<×}ùð)¯Ú9õ*ÕÝ?²‘"U¡©ËvÞÙ`(uLÈ~kZ~FT}yB(tÂj'0S¢è3œSm®É®¸G°8‹C¬ö–²ôûþ¡Î¶ª¾WÞßšk³|7³º8ÙÝò ‘YÒc>ˆûãŒïæ­Iiy–2sµ˜›þëõ »ú£f„P]YzMIŠÞUÚmUäÇŠ›Jêi®Í-Ï;Ý•GÖÙ”•´óðÎéíæ‹¶£¥¬<ïŒÞå¥91j•Ü„:{ìW¯"aÐ\›]‘«ÉÏíB½Luwe9'0&mƒÑ=’ †R÷Á„ì×±¦ ­ÝlƒKsb$âZÓ;`*óüž*o5eÉ6ÍSqSñ™¨‰‡^Yðü„³4ÑO®%nZ9-\Íá è%¾¡ÅýùlUA‚Wð¬»X)]þN&A˜íâí¦šj¥„~lÞš™õ¶-W –ö–òèæ_KÜ>eÉö~ˆîÞÃáYjçG[߇Õ+xvÀðGúRÃÀwMÈ~k„wp¤wpdæ¹­}¬À4æ9RÕaã0~îÿ;ðr]Yº«ïz¡¤½®èÚ!i{­•w@ØR¥#B¨4'ÆÑ}˜Z¥(Îú‡$•n~ÞÁ‘šzŠHÛëËrO²9ü QOX;ø_?ÖPyÙÂÒ!xô“B+ºx[cAiv´LÒlmï7hä2¾À®{¨âæR·ašÃT„Gà4wÿI Y›fIK]niv´Z%µw8|1Áâ0×_š}ÜÑ#L.m)Î:6m½…Ð^oGú˜Òº²‹Ö~–Ön½m±{w*ožíh-'ÕŠ‚«ûG,©¯È°vðk©Ëe±8S5+òc9\{ÀdC•Ë$M•7ã½FÙ: 2²_Ú½ Õ—_RÈZ½Cæh–”地´qwòÙ½¸µ½£GXk}>ýÔàˆ0N³ÚÒÔÊ›g1¦ŒüÛsm†f ­(ëg¯ÑÖö¾]­¸¬VI=¦ôIß§P÷T›¥ò–ÞŽ¦Ž{qBÓ ½©Ã˜,Ë9ÙX} X.>ã´ƒ¸[úëÔ™Wp$›Í«-M¥Ÿ6UgÝY|ý°RÞž—uô‘͵Ù¡+q_ܸ°;þïÕ ™¸­¡0aßš¼K¿÷X$íÄæ´P¤ª4'&æçGö½˜wiÆTþ¥¨Ó{Ç”!Tq3îøîùåy±JY[NÚOGwÍéWwÓÆ1 ªð\E~,Ƥfáì§÷†-£—fGGÿ¸°¶,MÖÙtéÔ–3Q+è-êψý<ïâžÓ{ž¨*H ÕJCécJ¾RUÐÛõv§®ü’D\+ëh¨È¥(]sCÅåäÃëéd"„”rqâ¡WÚ *oo.KÞT[šf|§´{ÑUIKiâ¡W•òvú©D\“xèUYg£Þâ“m•|¡b†i–ú㙨§êÊ/v¶UžÛ¿öæ•¿{Œ™¡6C³E#ýÄÿ5T\Ö<-ºv(7í—#1Ëêžj³T> ²aÂhê¸'¤1½ HŽÿ{Mjô»Òö:qSɹý/]‰ÿÊ„FÌ«_Ω"„X,Ž¥{§¸!„>ô WŸñÓßÍbqÔ*陨i1ï-xá8B¨,÷Ôâu±‘3B(îgÊrO÷ s‰¸vÑ‹1l¿µáæ±ï"ÕŠù«Ë3pjÂþµmU–6îO}ä9uÙN‚`Ë¥­'~~$3á›É‹u/–3kSÜŸ«ö¿haéàî?ÉÍ¢GÀÍYY•¢35æ½à1+ÂçmAµÔåÿaAeA‚GàTæú‹¯»j¿£Ç„pìÞ†:Ò‡”ê2¦ECÝ;û=Yg£Z)™ñÄš ý‡=|#ewMi*}Ž«,÷4BÈø#§~{ÌPw윃"ŸÚcü U½¼Cæ¤Å|PyólÀˆ%¡’Çø[Ï ôZŠ"ëÊÒéÇJy{ᵃ­Ã'¿L’JæÑ;ͤu™çþ;xÜÊñs· „ZnÆüô0‡+ì1H½µJ¯1½fŒ„i_СVJ.}óßùœí2Ûp˽¨Ü’ “G“Ù€æëÉ‹·U&Ì^å0!t5á›’ëGGÏ|»OYè³~ü:"‹Íʼnj©Ë7˜ú‹ÅAq¸Â¡kšjnÐWØú ]@\CÙ»†ª•²‹ø†>ÄæðB¶Ž!¿a‹è/eÙ8"„ÔJiSÕ5‰¸fÄÔ×é[øZíBÆ>Mké°q Xòê¹™Ëñ ßTs=åØÛ·ML>¼A­’!„ª‹“UŠÎSÖi›¸è ¡•Kõû ]èè1¢ÇŽ˜œÒîŒiÑPwôVhçbëT–s’~Zší4KÚ^ËО…µGàTKwº¦ÁغùO*Ëíj·äÆ1¿¡ Y·®U«¤§_NÿKØÿbSÕµ1³6 ù¸#¢gšU$`Š9£ëã¾s°ßÆ©·¶^¥WC$½šBa¥¼]û©V0´k–ù9@²aòh2°Ò\cMŸ.n¨¼B’J„Шo.[ÁÄd˜)çT“¢¢4§®\ih3Yg#ýk í-å¡óG6j~ú…TËBrIBHï—©˜‹èœdè~Ρ£­!ÂÆ1@³ÄÖi©–Ë:"'Y,ŽWÐ ¯ ¡ŽÖмK¿ç¦ÿʳ° Ÿ÷qGK9o¥ù@‰4ò1„PQÖ?Ìõ‹n­1tÄ„_øÐ¤´;cZ4ÔCü‡-ÊIû%bÁ§rik]Yú¬'6ow ñ2?-æ}•RÒÙVÕÚp3bÑšU\¾èÑõ]wm%X.¯kè{q½Ó¬³µÒÒÆƒÇ·º]Ê9ؘó~zkëmzŒ¤W9çòDÚ'Æ{d– Ù0y4{40'¤¹Æšga5|òº¬äï²Sròé9hÚ ‘ñ,¬µËj¿æè5uêÔž7ê ¯þe8@¥µ6ÜTÈÚè³|ô Ï1³6qù"ím„Öîšµ:˜‹ôˆÍá#„)R¥9õAÿ$uë[—´ö–²‹'?7÷Cz‰•÷¸9›%âÚÊ‚øðysxB½?WÓsý·:ÕÇŽhÓN©F´h¨;†ø[t5á›Ú²tqc‘@ää0¥"?ÖPå½éJ¼Cf§Æ¼WyólkÃMíßr$¡óšÖãˆèfžPç4E2•º†ÚzûãF©ì13N¡îÌRùɆɣ٣?!ÁºQ3Þ ®ª ¡®,=+ù»¼K¿?¼ö”öf=¾àà××î—«1&/Ç}n!´£¿4eëˆâð„®¾áô?‚Å®-MÕœè΄"ÚlüBUW5Kª®ry–:ZíjJR*ožíÞ_„²¶÷U)%â¦bÍŠ3QOe§þhdý}ïÈí€þR -ꎡªD¶^Nž£ÊrO–dG†-%–¹ºÃŒgaí0¹,÷dÉc#SÄøÑfmï+í¨ïh-¿]ªò*ÃöÌŒL/¥uývkCA‘ôkÎû¯ò;Ÿ 󎦶{tBê0”:qSqVÒ¾À&0lÙ¤G¾™÷ÜÁζªúŠ sµ `ó©’¤²"?¶"?¶"ÿL~ÆÞ¿,­-I‰Xô%ýë/6ŽNž£2Î|*í¨Cu¶U]8úVGk%C…&Ñfï:ÄÉ#,ãÌgÒŽz„P}ÅåüŒ½#Õ9Á³°ñº +iGqÖaµJŠR)¥ù{+òcƒF?‰r÷Ÿheç“~òC•¢!T|ýHmiª£Ç#ëïKG˜SjZê u‡.Héû¬ÿ°‡K³£«2Ãí±;âæ’¤C¯ÖŸï^BÖv«;]ÿÚ zá;dAE~œD\ë?ܨãGD›wH¤@ä˜rì…¬!\|ýHuQ’1ÍéÅœ^š…¥}eÁYúŽÊW÷i~΄!’>î Ìú¯ò;Ÿ^æƒ0!uJZ%ÍLÜV˜yˆÞ¬¡ò BHdëi®vLcž{ÿ*åí û_¤sy–NžasžùËÅ{¬fƒ©K·Çýùì¡í“"GiG££Çˆðy1×iBm‹¾<û׳·Eð¶ri‹{ÀäQ3Þê¾Ù„Ÿ±9޽}þè›®@­’±ÙÜa“^<î„ÁâL^üM¾55’'°QH[‡O~ÅÕg¼ñõ›Ü‘SÊÀP‹ ÝÙzf§ì>öýCóVÿ£]•ßÐg>qñkmïÓcwä’–Òœgï±ôMDµ‰›Š4Ý¡ ›¸vô¬w uÁ;8’Íæ:yŽÙxÓeÔ›Ñ`s,&=üUâ¡W÷}=†ÃkÄ”Wó.™xéCz5†Oz9íÄæÛ"Xl.ßÂfð¸•ôYGæHú¸/0ë§Êï|6z5š„ìNoêx6ƒF>ž½éjü—!¥¼cäô7úxo€¾#0Æ!‚ 0ÆÅ…¹¡”´Ë+¿•eÂ×–0¥®¯¸,ël´²ó6øeË>ÑF’ÊúòKrI³µƒ¿£û0†-åҖƪkj¥Dhífç¤óÅ3•RZ_žNª•ö®¡VvÞ&ÔßÇŽèYÒÌå[²9½mQow(J]]”„)µWÐL…LÌP³y»c¨Jyûþ­ãÃçm1þ6<¨7#òï¶ÄueéS®¾á|ñÍéeh¶ht´–7׿ð,l\}Çk¾ÄØc$}Ï9Ä1¦ò½ŸG,ú2`ø#½jôÎg££yLHÆZÜTÔÖXÈbó܆j_¢¼g‹ß´Gwù†Î5! <8’¢¢Œ¼£’ÃÚ¨¨¨‰Æ „’Ïö×ï©vG°8®¾áý]D›Ís÷ŸdÌ–B{¯[?Ø—'ô¤g­ñõ÷±#zYX:˜Ö¢Þî°X¯ ™ÆÔÌ\yoj«0s?A¾¡ózU›ñ#¢gaã2§·¥ 14[4¬ì|¬ìôïŸ ‘ô=ç ÃÚó“vç³ÑÇѼ?&¤ cmãHÿÊÀqçŽT0Fg[Õéß—w¶U˜úªÎMJÁÝ••¼ãæå?ç=wðnrG=°2+yguQòÝŽ.8R‹…¥ÃЈ5‘“Ï`³ç}7aÁgzï¹uß{`'¤‹÷XÈ90l™ñ×-˜©‚…ÄŒ}únGt†-»Û!Ü설ÉænG€W¿üž*`2Ï©bŠ*Í̬/-UJ¥æ ÀÀÇ ]üýýÂÂú£rTË®]#[[ÎkiiiÞ€ |‰$--­ìÚµþ¨ÜÄ#Õºââsçòx<¥RiÞ€ |</<<<æôéþ¨ÜÄ#U¥LÆãñ(Š2o4î c×O_5ýÞ¿p˜ 2Œq?Õlú‘jÿÅàAGª8R0°À‘*€ŽT ,p¤ Ô騏ô‹—º/Ÿ2yÒŒiS Š!4 IDATï|<‚ËW¯&$&½½qÃ6ü½O©T>÷ÌÊøfë¬ÓÇŒ…úfÛ·“&N7ÎP=±ññ©©éš§ /OÏù=dkkÓ‡ü‹¡î\¾z5æÄ©ë_³¶²êm=ö«W‘004ÿW®xÊßÏ·W©p/‚#U  ‹‹Ï§¤Ì˜>Mg9‡Ã¾¯Àÿ9¬P*W,¢¿Pjjj“/\xkÃz†m®]¿.“Éž]ùt÷UIÉçCCBðHŒ:Ÿšâãã=~¬Á‘**.IºpaÖŒéôÓ¶6q¹Ä?þÞ÷ãÿvzzxô­] u§¦¦6>1qÝÚ5X$êm=ö«W‘004ÿY,cÜ«T¸Á‘* P"Bá–Íè,W«Õjµº¿[/(*’ÉdÜK=A D0÷š ÂÀ6çbO+•Ê[£CSU",,,4ãKDMmí“+Wýµ÷ƒMïô¥Ú±êïA „06í­¼‡~õ.†æ¿R©¤(ªW©p/‚#U°0BH&“u_QV^ž“—9c:ÇCI¤ÒĤä‘a#ÜÝÜ›šNÇÆ566º¹¹=9ËÎÎNSª¨¸8!1I&—Ξ5“ÍfŸŽ‹ª9ƒw#;G.—3:%-½º¦F©TÆœ<5;r—Ãa¨V[÷&4ÇŸKlk{z¸Ï3ÛÚÚš^ž”2(¨±¹)éü—;î\O÷³ çnääØÙÚ.œ?ÏÑÁÁ˜mèÚrróÒ/]‹Å3¦MóòôÐnE¡Tœ‰;«R©F……MŒ˜ ‰ùêµk©iéÆáãÆèÖ\kkkjúÅ!¡¡¾>Þ݆Eÿ›àù”Og''Í’kׯ··wLž¡Yr.)ÙÅÙ9tpH÷ñµ·³:dHIi]9sÒzÛw¡k9Ƙ¹6CJ×ihþô‰qÓÉàü×›ê^V` c™\èO /¶ŽŽŽ¿ýõëïQôÓ]?üxèÈQ'GǼüüUϯ‰‹—ÊdGG?óüš‚ÂBz›øs‰k^~åÚõëbqûŽ]ßo|gI’Ûwþ/;7WSí鸸ƒGŽ`Œodg×7465·¤¤¥©U*†jµémc|!5uõÚ—/¤¦I¤’ÿ^µæÅºúzºÈ?ÿºmçwÛv|GQÔ¹ää—^{ýƒ>>rì8‹ Ž?þúo©Õjc¶ÁGŸ8¹ný†99J•*!1é¹×iZùëÀw7(‘JË++ßÿhË?GÑ«þ>ppãÛ›²nd×74lÞòɱ˜MΫªk¾Þ¶=3+ËøqÙòéÒ/eh6Ã×ÔÔ~üÙ:::é…õõõÿçóÖ¶6½õ¨Tªêš[›“fBwºw^ÅP›ÞÕ®ÐÐüaŽÄÈéÄüa£{ª{U932ùˆ’œS€ #$“J¿øf«ÎòG—. ðóÛüÞ¦ o½3eÒD‰D{6þ·w³X¬Ï¿Þ:zÔÈ/>ý„Åb)Uªu¯­ßúíÎïwl—J¥ÿývDz%‹ßܰž¢¨’ÒÒ§V=—š~‘ ‹`i^ÏY,ýôµu/·‰Ûe2é—Ÿ}*•J U«•¡&ƽs×îiS¦|¶åC„PGgçªç×ü²ç÷wßz!DDcSÓ¿ýÂf³ËÊ+–¯|†$Õ¿þ¸c<1"â­wß«©­3fO÷Ž[üð¢Mo¾AQÆxÉãËSÓÓüéV’Î_8ðç^[‹µþÍ·Ï_HY¼haSsóoQ{_¶ôõ¯SUV^¾rõ €Nˆ¿ŸïÎm[ÝÝÜô¾ßé$ú[”š­¦N™¼õÛ©éé‘3g „âÏ%Z[[G„§ßØIR™•EoÚÙ)9W]S³êéJ¥’9i&tçßS ÓÿcŒ Õfh@oõ#„ ͆H0ÆÆL'Cóâ„ “èS¾ÝRÝ«Ê |p¤ Öwõ#¦0EQaÇ/Z0ÿË­Ûä ùšÕÏyzxÜ,(¨¨¬ühóût‚ žZþĦ6···gfeI¤Ò§Ÿ\ÞÑÑrwsÛüî&ç®+'ÿýzŽ1Æ2™ c c,‘HŠŠ‹ Uk¥uçØŒ+Wô6‘›Ÿ_ßаõËÏ% BˆÍb=ºdñ÷?ý¼éÍ7è‚3¦MU(!g'G„P䬙ô–n®.!zUÛ`ŒønÇëììDÉd2‚ èåt+³gδàó¥R)B(00 ãòŒqúÅKE­~v³«‹ËìY3ϧ¤Ò¥Áð¡C)Š¢(ªÛ°|Ôùò§Ÿ?nì˜ä[wNŠOLœ=kfW…ËdòooÒlloo÷ÚË/=4;òòÕ«ÌI3¡;:A¢[Çv†j34 ÝçL÷ùÉ‘ÓI“hùOŸ¥×›êÞV`€3ýH@ …_ýç3…r¹œ$IµZýÊÚ—.ÒÆÚæñG—©”ÊÚºz„ÐGŸ|Æbu}³C©T"„ZÛÄuõõ"‘H$ÑÇH$IFΜA_ÉÙ#†jµ?ýjâLÜY‚ \]\èÍ0Æ^žž …¢¥µÕÞÎ!DÕ–.‚âq¹ÚO ¹L&;“›—WU]]UUMþûðÒÑÑAsÀ‰o=¨ohpuqá°»î¥L’¤¯Ïù”TM¨}¿sÆxæ´i_|³U*“Õ××—”nzëMÍZKK˘#ÿÐÙl¶ÀÂB¡P(І†F椙ÐzkëËœaˆÄÈéDë>ÿ•J¥J¥2Ôn¯*0ÀÁ9U¨0FÑ' õJ¿tI&•utt^½š9tH(}·›×Ö½l)vmA Árqv„IjfЧ(‘Ö‰5„}  sžŠ¡Zí- 5Áçó1Æ …‚Ïçw-W*îɱÛg)) ÿ;dÌ6‰ä…u¯rØìG—.ylÙÒÁÁÁ¯½ñ¦v_ºßc,J¥ö)S:æßà0 Ûèœô›0~B(-ýbYy¹·w ¿¿&K¨[)’TÞ”“f–îh†Þ@m sF»zæC$FN§®fç?ê–ê^T`À3ýŽJî"±X¼uûŽuk_\0oî×Û¶+ o/„›ÍLÿS©T)ii|>ßÓÃ]*“UVViŠ¿õîûýƒn–¤•”–uoˆ¡ZíÍ 5A߀77?_³<'7O(:9:š)!”“—×ØØ¸íë/]²xÈàÁãÎNI¥<=<šššjjk5K²srÍÏç‡{>%%þ\â¼9³uNKê½#…iI3owæŒ6½ó‡!#§“iúµrwÜû(„J¥ºš¦ó¾íÖowzzþ?{÷ßTÕÿüÜÌ6Ý‹B]lÊF…2Ê*S*CeˆLQ”!‚¢ÂóÓGPQ}Ô꣢€Œ¥,«- º[º÷LÒìqÜc›¤išèçýâÅ+¹½çœïMûí]Þsž _»æE…Bqà‡}¼½¹ÿ›Ò²2•JUTT¼óãÝeååZ­vØ!>ÞÞ{÷-‘Hhš>wþ­ääAÁÁÎÎÎW˜{çž:•“Cë%cŽà™¨V?ZcMøûðõ·ªª«iš¾{/娉“á³f2ʼn¡TMÿ­™û8;9Bróòär¹R©<üçŸyùùJ¥JŸFUÐ42ê WW—Ý{¾ŠDZ­öÜù ×®_×í\PXôþÎ]7n&5‘HÜhRòò hý«?õ^kµÚ‰B¯ÄÅWTVNš8¡iMµhÐÌìÎ?JèUb¬6cª´±õc"3—Ýd¢ |µÉkó++²8£4 gÿtR4!R©tûû¯S |êÉY×oÞüùû ¹œÅb½¹iã›o½=vLÈöwÞ^ÿÆ›KV¬rqq©©©8 ÿ†u¯Ò4­ÑhÞ}{ëæ­oÏ_ôœ½½H(Z¹|ÙÀý—/Y²k÷§‹—­àp8ŽÏ>=?7¯áažÝ==¾ð׋k_ÙóñGƪÕÊXjµzëæ76nÞ²hérGGG¡P8êñÇW-_¦W¼á‡­—»Ý]mÎ>}z÷ž0~ÜÛïíðõñ®Šú÷ë;1t|ä™3ݺyÌ Ÿ­_„4£iš¦(ê­[Þ~oûÓ‹ž³µµe±X/¬X~èðafO±X{éòàAÁÃ顦 /?¿Ñ¼,|æé•Ë–êªþ{išòÄcq9œàà.ÎÎîÏdð‡©ùƒf~wþѨ®Šާ~mÆ&T?lcëÇD$jµÚœåô H¿jó+€Î¯áÒæ•œ¬TBÈÕøK—.5Q&""‚2mÚ´ö  k666M·«Õj…B!D"sî%—Ëupp‰DZ­V ܹw¯ªªÚÇÛ»_ß>b±˜ùœçp8l6;év²R©ì×·«‹‹L&ãóù5µµéC&„°Ùlæ~­\.÷Vr²J¥2(˜Ãá«VŸÁ&˜:ù66ÉÉwjjkýüzö ª¯¯gŠ;;;Ëår¹\ÎÔàêêZ__Ï܇Íf;99 …B‡f÷Ñh4öööé%¥¥þþõõ’I7{úúz¸»7jÅÖÖ–ËåŠD"¦›ZšNºu[«ÕŽ6”Ïçóùüºº:¦;ŽŽŽ‰Dw}&ÃÁÁûà–N:2™L&“1I³E¿Q‰Tºðùe›^-tÜXýùåóùµµµgßüA3³;úø|¾]]]V«5Q›Á Õßßôú1 ‹Å2g9 ×4x†±¡6³r°¢³gÏBBCCÍÙÙÏÏÏÄW#""ÆŒI¹cy¦:uêT³ƒ€öÃår)ŠÒjµn]KQ‡Ã¡(J­VëŽì±Ùl6›MÓtÓ[ª2wÜerBÕ6Û„n;‹ÅbîZl•n6¥kB£ÑPÅår5ÿ¼'±˜™ÌS¥Rµ2¥a±Xσ:rìxÄÿ~9òÛ/6ÛüÚ,4+v‡ŸPëÇt$æ,'Œ µU*€‰ŽŽ&m©âì_€G.·l„¦é¦_R«ÕÆ~›ot,ÑXµÍ6ab»ué'K4M7Šßó÷lVÓ¬¸¼¢bó[Û**+W-_¦{j‹™,4+vÇœL¬Ó‘´r=˜þD;,6hk–dª¦¸£GѧNvtm¨ÒC<¥:dªÐ¹ S€Î™*t.ÈT sA¦ 2Uè\©@ç‚L:ŽÁ­íÇT sA¦ ‹á³—.]ÚÎq@W¦*Ž©@ç‚L:dªÐ¹ S€Î™*t.ÈT sA¦ 2Uè\©@ç‚L:dªÐ¹ S€Î™*t.œöorçμ<ŲeÝFvÔß®VÓë×ßW©è÷ÞëÙ£¯ý³ †ÎÌ”)¼¼øýû X†þpôhUttî­@À ²Y¸ÐÃÍÛ~±aÃý¹sÝÆsêè@ ëê€cª±±Â'ªü±¢Ñö+WDGŽT8Q-jÚ?ªùöÛ²½{Kšn/,TÌš•2yòÝW_Í »;kÖ½¼ù¤hß¾^m·úÝIIÁbQí€NÇdªãÆ9FGמ;WîÆlQ«é¨¨ÚùóÝ(c¶ddÈŽ¯®ªRØ,\èáâÂ9w®–á&NtÖÕUkkË u*-U:TYZªôó³yæw.!äĉêÁƒíÊÊT‘‘566ÔâÅÝlŽ­º~]ìîÎ}þùnžž ç›(.—Ó‡W*ôرŽÓ¦¹B¢£kóóår¹ö—_*žyƃËmÈëärí… uï¿ïß«—-!¤W/Ûõë}^=§¸XéíÝÌÉÌþþ6Æ٥§Ë˜·ÇŽUf_]­:|¸jãFo77nÓÑ „ˆÅš“'«çÎuŽ®MH;8°çÏwïÛ×VW­Á~5ªÐ ;ýî\»& ´ñò252 Y“”TÏbQ£F90Ã`-V8ûW(T›øg°—K͘ázâDnË•+"…B;eJCzölmXØÝ3gjêêÔß|S:qâ¢"EbbýÚµ9j5­kwÍš¬ÌLÙ­[õ&Ü9|¸J(Ô|ÿ}Yhè»w%„÷ß/ܺ5oË–\•J{üxõÌ™÷V®ÌÌj×­Ëa³v–˵„ÊJ!D øG*Þè-!Ätq//~K‡"7W¾qãý¤$ÉŠž›6yÛÙ± îæàÀ¾~}óšÍ&Mwóönhº Àèh0oõ/Líßß–)œ–l°_ÎÎýúwÄðÈ8:²×­óÚ³§dÿþÒáÃí'Ov^´¨›££ánXÀjwTÒOV›MSáá®K–dˆDš“'k¦Lq±±iH#ù|MµšÖݬˆÉ»Ôjzη; ãâDYY2î„ ÎQQ5„mÛ|™³ˆut÷2IÃŒ7ø4TnÞ¬_¼8=$ÄñêÕ!¦ï¢DQÄtv§;FmcC ý·ú¯ÙlJ«¥MôK¿~cLŒÌ–-¾«Ww‰©‹íÙSrð`yLÌ $«`Ö¼÷/“¬ê¿0-$ÄÑɉsòduTTí'Ÿü}…g`  !äæÍú±c™-7nÔÛÛ³»wç±XdÄûÈÈš´4é³Ïº³X §õ 솯]_º$Ô½5­•ÅõÑ4yõÕœY³\?ý4°¥eM01rBHb¢Xw§„1!$(ÈF£¡IëúeldììØçÏ×½öš×‚ xdfÊ&L¸“˜(ž<ÙÙd}æ²ÂuªúV¯înfšJa³©Y³\wî,R©hý<'8ØnøpûíÛó™g«&&Šü±|Áæç¼yîÇW'%Õ/\èAéÝÛvÄûíÛóËÊ”„ÂBÅúõ÷óófÆ`qq&Ô—”TŸ—'÷ôäýòK…þ?æ¤Y‹™ BÈeׯ‹ !YY²ÿü§pìXÇÀ@›–ö«iwŒÕ •j>ù¤èСJf7¦i_ߟ& `LÇbÄ-nuµ*4ÔiË]‘÷ÞËâ f˾}½–,ÉxüñÛÜŠ ÕСv|àg~ ÷õåïÛW=yòÝãÇèNŽÍÊ’B>ÿ¼¸ÑÎú'6[ÆÄhBfÍr}úé4€-ª}}ù;w´´_úÝÑßn°''΢E›6å2§‹5›7ûôéck°f P4MB(Š¢i:'+•r5þÆÒ¥K;:0¢TjÄÕÕêÀ@›!CìLï¬VÓ‰‰âÊJUÏž|Ó·´µJq•ŠŽ­S«IX˜3‡ÓüãR[ÏàhäåÉCB’Ïœ öðàÞ¸!vp`‡„8êçüföK¿;uuj{{¶.µ6VCV–,3SÆãQƒÛyzšuI0€ cF$„\Šéàcª&ðx¬ñãÌܙá,¸²Ôââ\.æbqs0=^^¼ðp·¦ÛÍì—~wÜÝÿñôWc5ôîmË\È `uV¾N •©>Ä\\8›7ûtoà‘ÒyÏþ…f99q^Ý»££°2S€ÎÇT UòóóÍÙÍÏÏÜç‰â˜*t.ÈT sA¦ 2Uè\©@ç‚L:dªÐ¹ S€Î™*t.ÈT sA¦ 2Uè\©@ç‚L:dªÐ¹p::èvî,ÌËS,[ÖmôhGýíj5½~ý}•Š~~=zð:*‹Ò»·-!dÎw‹Bz÷¶!„H¥Ú”‰‰âO=åʤ©„í¤Rmë;ÎåRºƒœÌ™ã6l˜=!ÄDT±±B±X³n÷ƒ¨»wêNcn¤E#ÆÜÈêÆ ±R©%„lÙ⛘8´õýh%S€öÃáP3gº?^3ožûåËB¥R;eŠó;BHa¡‚¢H¯^¶ºûô±•˵ª¹sÝ¿ù¦t×.º¦F/þñÇ>Ìn×­Ëa³v–˵„ÊJ!D øÇßa½%„˜.îåÅ·zÇ+*TãÇs ~ÉÛ›ßlTùùrGG¶.&„,\èa¢9óGÌÑ‘½nמ=%û÷—n?y²ó¢EÝÙ&*hÈT ]…‡».Y’!iNž¬™2ÅE÷ Q>ŸEÓD­¦u7+b.U«é9sÜvî,Œ‹eeÉ<<¸&8GEÕB¶móeÎ"ÖanSÔ,&[3VœeíóÒÒ¤uujæÀiSÔƒ{3™ˆJ `iZòŸØ–-¾«Ww‰©‹íÙSrð`yLÌ $«Ð‘pö/´«G''ÎÉ“ÕQQµáᮺí6„›7ëu[nܨ··gwïÎëÙ“?b„}ddͱcÕÏ>ëÎb5œÖ+°CB™l6uõªÈÎάüª•Å[D£¡ß¿ÐÕ•3}z3÷Ô5U@€D¢ÉΖév~öÙ´¯¾*5V•ù#–-ÿôÓbgg΂{ö?> °P‘˜(¶Rï,„LÚ›MÍšåºsg‘JEOžü÷“T‚ƒí†·ß¾=Ÿy¶jb¢øÇË,ð`ŽpΛç~üxuRR=sÖkïÞ¶#FØoßž_V¦$„*Ö¯¿ŸŸoø–EMY\\£iþ®¿ …6*ª6*ªöÌ™Ú~(O½|Y¸{w þSd[Õ¸qNþþ6o½•'k!‡W]¹"6ÌÎDTfŽ˜Tªùä“¢C‡*™Rׯ‹ !¾¾Ö?ÿ E©@{ w­®V……93÷=Òùä“@¡P=bÄ­Aƒ’æÌI>Ü~Ë]™LûÄþþ6Ì–}ûz)•ôãß1âVHH²›çƒüÌÁ‚â¾¾üØXáäÉwëëM‰+iV®Ì\¹2sÕªÌÿü§ÐÞžýÇýÍ|H©±¨8êóÏSS¥ÁÁ7Nzýõœ×^ó=ÚÑDTfŽØèÑŽ‹ylÚ”|38øæ[oåmÞìÓ§mÓØÚEÓ4!„¢(š¦s²R !Wão,]º´£€®H©Ô&$ˆ««Õ6C†Ø™ÞY­¦Å••ªž=ùÆ®µbq•ŠŽ­S«IX˜3‡C5»¿1UU*{{¶î]ó£’H4ññb¥R;p Ÿ¿iTuuj5›¨<+K–™)ãñ¨ÁƒíŒÝRÀ„üü|svóó3õwለˆ1£GB.ÅÆ S€V±z¦Š³ sA¦ 2Uè\©@ç± ŒY—ÊXÇT sA¦ 2Uè\,¹NÕ â싵¢g¿©ÌÛÊ¢[™7­)O#„rtóï7r‰§ßãÖj‹Qrÿj^JdÈì !WO¼î8¦Ñ>ƶ[E|äÛ=û…y÷š ªÉ/HYmp·¬Û”d_jxCQ\ž»÷РÁO±96m•u%]øD\“ß÷±%ÝýžÐßNkÕWŽ¿¡Õ¨GN}Ûα{G…g-æÌQÛ­%«×|ÿî±ÂŒóº·žÀÑ- ÷°gm®Öj ;—¿¬-ÏÐo×ÍkP¯!ó9\[«Ô¯RJâNlºÎÙ£w[„¡Ñ(ï\ú²®"sôìm.V‰YçòŸ´!$ôé½]y‚d’ªÄ3;F„m±wò6¿æ6šGéS.ýzDyþuBȀѫ<¼‡vt8Ðu‰Åõå•• …‚Ïç{zx88Ø[P‰uŽ©*å¢kQ;ºùŽ`ÞÞ»úÍ©ó„Õ¹¾}§x×äŸùaAjÂA«´¥#®ÉËO;˼ÎO=#®Éc^§&¼s嫦ۭ® =ZXuŸâèêW~¶¢ð¦ÁݪKîdœ£XŠÅ¡(–¨&/áÔ¶ãû§××µQ`VTœ})7%2ãú϶—äÆåÜ9–›©”‹:$0óé¯cÌ™#뮥6]¥Õ¥©ùiQ ÝaqdõUÉ÷Ý;QÔfß ŒÒ܄Ҽø¿‡±ú~©w£~XHÓ«Ô¯Q+sS"å’ê6 #=1â^ܓ۴]«„!ªÉóð:|Ò¦6ŠÊ·ïÔ Ás˜×]|‚Zª­§æ‘ù”ëÙ7¬gß°[íî舠K+¯¬j²¥Ò‚êVÈTµUæ_–üÀ¼½û¹ƒ‹ïàñkõ÷6qCE™çû=¶”ÙRW™™{ï¤LRíèÐ{ØÓ|Û†ºrS"ݽ©UŠœä#²G@HϾaºzJsã 3bhZëÛwŠ~ýey×Ýì{fĈkó5jEfÒ¡^Cæ•\g¶·¦ÑÊ¢¤¢¬¿ä’ƒg@ðlG·€¦ƒàÓ{b܉7«Kï¹õnvĜ܃ž˜ñî_¿¿\–—ÐÝ4³Q"*˾}X**upé4t¾­{³™("•神fsø}†/ttóϹs¼¢ð†[ß‹ž¦G£‘!…™ç‹2/øœÅl¡µê‚ôèÀÁsÒ®ý`¬ªÂÌó,Ç»W¨®ž‚ôh×Ö+h\+ÃnÑ@5Z,³È4#Ý#„äÞ;áî=T.­ÉI>:tÂë6WƒQ1jÊRsïT«¤®=‚{ žK±8WiMYj‹FŒ"“Tfœïæ;ÜôÙ°„GW?wåéÌ[cKº¢ðf^êiBHà 9\ž ®2˯ÿtÃÞ,¯ PBˆDXÒÒA3ç›NT[–Ÿè8ÆÞÙÇü0Œu§8ç’°2[&©ÎL:<›Ëý¸hIGÌÔõ&ˆÎ½w²ÿë*…LXW‘uá·Ód¾t/î¿g#ž+Ë¿V_Wø×¡—2nþª«?öWŠ2/BÊò%ÂR™¸¢ =Z«Ué¶[ÜhæÍ_O˜_–Ÿ¨VIïß;q|ÿôš²ãÈâxÏK9eæ ùö c³y¥¹qÌÛªâäc_…åÜ9ª”‹Ò®GÛV]zÏt`&ŠÄŸz'þÔ6­F•›ùÝœ ¿­IKü¦µé‰Q?, µjӣѸklž_¿i¹)‘º-%¹qµÂ·÷$[QpãÒÑ×™¶!J¹0öð+u•Y­ »¥Õh=˜9;çH-]þ0íÚQ?,,ʼ Q+EEɽwòäg—æÅËê«Ïì8±„¦5WiKGŒ"ªÎ‹;¹¥47¾Ù¾Ð´¦¾®/p!Æ—tÖ­ßO|¦²èV}máوʼngÿïÖ_ ßLÄ`ZIÎ%B(æºóÍœoººÊ¬Óß?SYxÓÎÉ«EaëNEáMq]¡BZ]­QÉL|ƒ˜ßóuµ ºvfGâÙ÷eõ•¹)‘'¿™]˜Ó±SÓe?åÚMÓÍn1‡Ž©–ä^Õݹ¡¾®X£Q:¸ø™Ø_£Q^;³½g¿°Ð§÷R[.­=õÝœ[>7·á·®¼Ô3s×FÛÚw#„œûyY^êéþ/“ŠËnýõiÿÇ—>1c!¤¶"#òÛ§8\A£Ê›ú–¬¾R­”LZøßÖ7JI½ö}Ÿá ™û6iµê#_„¤ŸcÒòF<¼‡f'aÞ ±X;'¯ú†ƒ<ôåc»û=1qÁ×,G­’žXùÖ“«OÌT‰°4|M$›Ã¯­È8¾ºF­˜µê(E±|z…^8ô’¸®ÈÎÉËôh4â?pÖ…CkTJ —gGÉK9åÓ{"›kKÑj« Ys÷ê×%¹qÞAã !y©Q„ÀÁsÎ|ÿ¬Åa;ºúµt Œ­‡–ÏQc9wŽÍX~ÈÝ{!tôOK F¥RÔÇE¾Õwä’Q3wBjÊRO|ódaæƒQzª¥#æÒ­OØs?< ªÕjÊò˜×J¹(ëöâÚ‚Áã^&F–´ƒ«ÿs½ê±©oB*‹n:0ÿAͦ[#uUÙ—Ž®gJI„%•E·BfèÚ}€ùƒf,BýoººÊ¬¨ùöž¾Óà‰Ó&Ã0Úy}•¨&ÊâÍ~\˜ÙºøÉ$Us^>Ë·uÖ¨åÑ?-½õoïÞX,vNM×ü”è̬pLµ®"Kwr—Z%#„ðMÞ›±ªè¶DX2$ô5渫À¥ßcÏ3?ãÁO2?‰ !®Ý¨•2BHaæZ«öà:%—n}>i~–5J™¾ì×'f¼Ç¼Ö¨•¡TJ©Á&ì]|ë*3Í‰ÅæÒZ !¤¦,UX•3$t‹Å!„p¸‚à«Jî*duÆ3]ÄÀt6‡Oqv"„ g~YtrïEQ+¥ÍŽF#^c8\AaÆ9òà¤8ÿƒ_i¤*Ï~Î}òRN3»åÞ;éÛgŠTTÚš°-¨VÒÍQSÁ³Ý½‡“sQœsI¥¨òàLx×îÆ„ïÔà׈#Ƴqôîjð˜•Z%úqóï¡5UE·GNÙÒ{ØbdIgÅ*å¢!ã_a¶{ø ó a^›öÆh­F­Ð¨µ’gãÀ³qL¿þ“î—9ƒf,B] L$pèn, 2†9Ý1ããÂ¬Ž˜ÐÅ'hàèø¶Î„6Çfè„×êë kÊÒ:vjºì§@§eÉ1Õ‹º×¡K—Ê%•ÞC˜·ÌM•ä’ÆÑBjÊÓh­Ú­Ç q]!!”“{îKν5j¹¬¾ÒÖÞƒ¢»¬T_}m¡“7ïðw©n} œÙ,Ë%„P,VúõŸ+‹n‰ªs…Õ¹º½šâÛ:iÔ •¢žË7ëraY}%óP QM>!äòŸt§LkÔrò` fºH£CÍM<7;P,Ž_ÿi¹÷"Í)¹U£Vúö™XUrRo¼ªÀAá)ñBž|_.­-ËK˜²ø»V†mÁ@µ’nŽš²šˆJ\“Ïã;è~³$„ôö¬‰æZ4bÌ/úÆpùöϼ~•yM±8\Þ߃ipI‹k lìÜx6NºÝÝ‚¤âJÓlƒ³GŸ‰Ïþ}§e¥B|ò›Ùñ'ß [ò£™ƒÆ·u6ýMwíÌŽn=G”ç_¯,º¥;¡×ü0L¯"F³ß fvÄ`l LgBH}]!´±Fu;·ÝÔøuÇàŸá9óË ¥\”—zÚ·Ï$݃FMT8(<éÂ'¥y ÂÊl[{¯ ñéÑ­ Û‚j ý92 «Ù¨8<MkÍoÑŠ#FŠgãØt»±%M±ØµROÝ7ukïàÛgRÎ?„Õü 5ûM7hìKÃ&n8õÝÜøÈ·f¯9¥[xf†aNwšÿ1£#¦Cêâ¤Õ(½æòíÔJi³iÓ©yÄ>åôL´µ¶ø ©~¹·µ÷Püýp<*hð¼œ;Ç™? ëg_”ÕW2÷Htr „T%é¾ZQ”ÄåÙ;+’áèê/—‹kÿ®¶¢0ÉÄþXÖhEá ‰¨tÊâïŽ~¡G@ßÖY©0ú, ¥\Èã;è~¹1¦57Î}h#péÙo*!ÄÙ£!„Ãt÷Åü£XìÒÜ8ýÃ,XPDŸ£Ñ#`ÏÆ1/õtAz´îö˜„G·@cUÙ;ûzø ÏK=}ÿÞÉ^CçS«•a·²x‹4š#Ë¢rtõW)%ªÝÎg#ž»gôZ2«XSÆ–´£[€R.ÔžguÉÝf;hN‹¢šü¦ëÊDÍ~ÓyŽ¥(VÈìë*sRâ¾5³ãº0ÌéŽùß ˜ Ë&¨¢à†îuy~"!ÄÉ-°Ã§¦«}ÊtrVÈTݽ‡ÔUféÞ¿ÖÖÞ#:â¹âìXšÖh5ªâì‹WO¼iïìÓkÈ|Bˆk÷ÞC¯Ÿý€yN]yÁôë?õöŒé¿÷ìfkï~õø› Y-!tÎ?‹³/ÛYÛäÚBËåÙ:BêëŠ !4­MM8(¬Ê6v,·®2ËÝ{°Á/i4Ê‚ôè‚ôè‚ô³é×:u`~éý«!Ộg÷9¹÷òð~ýìûRq!¤¾®èʱ7ĵ…&³ ˆ> Fƒ¢Øþýg$ÿX«QùôžhfUƒžÊ½w²²èV¯¡Ï´>l‹‹7]M™ž#Ë¢ò ãàâ—pú=•¢ž’sçÏÒÜ8ÝAZƒQµhÄ„Õ÷/~µ$çr³½Ó1¶¤}zM°wöI8õŽJ)!„N¿þSMY*E5ÓÁ¦äÒÚ×z:îä–¢¬ }[bþ ™ùMçÚ}À€Q+n_ü¢¾Î@$&Â0§;惴rI7ÕE&(%á “øÕUfÝŒùÈ·ï{gŸŸšGþSàáb…{ÿz޹séKZ«¦ÜbÚÒŸ¯Ûtî+X,MÓ4­që:ÿ Ý/ý!á»b~YñÇg!|[g¹´Æ+hÜðIo˜n…ͱûÔG±‡_ýí㑞€¢XCÆ¿š–hà(³½³Ï½«_ß?}æª#úÛ-hÔÃ{HÏ~SÏÿºÚÉ=P.©v÷â×oZfÒï®þžh|peÑ-¯ÀqëQÊE­a^syv>C§-ûųçcºBçï9÷¿‡÷Œ³µw—Š+ݽ‡Œš¹ÝtlÑgÁhø?™~ãçÀàpæŽ æTüäõ³ÿçé÷˜£«ŸU¶ ¸þz`îêiP³sdAT‹3nî'~{ñ׆ñlÒÚÁã^éî÷1¾J[4brIMnJd·žy^xM™XÒcŸúøÂ¡5¿îÊá 켃ÏÕýÊüa¯«ÌÔ #‹Åqpõ5sG¿‘Ï™?h&"ltMÁ°‰ëóSÏÄŸz'ì¹Z†9Ý1ÿ¤•Kº‘.2AG¯:}ð.ßA):º<1c»ùiÓ©y´?å.ópŠ¢hšÎÉJ%„\¿±Ôäõ-.€9¾úðÉ›}ûLÒß(¬¾_[žAÓ'·@ÝSt4ey~¢\Ríèèî5ÈÌp•raY^Mk»ûÒ=í"—TsùvÌ™·Z­º8û"­Uûö™¬ uÛ-n´²(©¾®ØÉ£—«g•¢¾8û¢k÷žt¯TˆÿøtôÜWΛ>ØZ«./¸!«¯tpéiôÚÈVÑgÙh´¾ªV†ÝÒâúë2ãšFcô×X‹¢R)¥åù µÒµû—žM£j´J[T¹eš.iϾG/­FY–ÏáÚö{éèë´F=qÁ×mƒé:Íù¦k£¦uÌ_ÕæÔöÓû}CÂw n|¿A]a‚ĵU%wø¶ÎÝýž`±¹æ4ªcÝ©1ÓCô)÷ÃŽ€ Ï|å?`FKÛ°ØÅˆÝ•6ÝaÐÀ†|ÐÏÏÔM#""ÆŒI¹cL5ëöEçu¿3uAé7~®(¸9~žáç‘trQÙŸÖýv+—ýù唑a[û:ÚhQ¦Ú&̇LÚ_[dªV8û—ÒkÈüÌ›¿Õ”¥6=vÚh4ÊôÄŸ˜Ç<<Œì»û¯KG_˺õ;›Í-/¸îÜ­O¯¡Owt\”äK_dÜøßÌ•XPæH¾´·8ûRGG`ÖÉT)Š5~ÞgriUj{èÈ%5£ŸüÀα{G`¹“7Ï®(¼©QÉz_èÓk|kN–†FF?ùA+ïyƒ ‚fyö|ÌÖ¾[¯¡O·ò‚€ÎÀj¿è8¸ôÔ]ƒ×ÕØ9vGš WÏþ®žý;:ŠG“UŽb‚À4æÁ6€uXá)5Vdá1UZ«Í½u«<7W)•Z7 èüxg``ÀСmQ¹…™jÞíÛšÚÚÙ3fØÙáÑm]ŽD"‰Ï»}»-*·0S-ËÉyrÆ §T*­t~<oÔ¨Q‘QQmQ¹…™ªR&ãñxZ­ÖºÑÀC¦i×F„Z~ï_¤©]MÓmT³å™jÛÅ]2Uè\©@ç‚L:dªÐ¹ SxÈDEŸK¸–Øtûøqc'Mmÿxº‚IIb/nÞ°ÞÄ>ÑçÏÇÅ%èÞÚØÚøúøÌš>ÝÙÙ©Mc‹øß/÷ïçê·Û¯OŸéÓ¦ÚðùV©_*•~´û³åK—øûùµE*•*â¿ÜÏÍݼa½“SÛŽÞÞmÛíääìû¹O<6’Bké¢ââÓQgOEýzïç,«õõ«Tªó±±sÂgÓ=M­.‹Ã8rìø/‡~ná—‹_-@™*ÀC†"”­@°ãm¶«ÕjµZÝÖ­gfgËd².÷#€¢¡L÷š"”n^(Š*)-]¼tù÷?mÛòf›Æàï§ßntÌùmÛwÄ_»2jTë«×õº™I·4Œ’’’A¾¸j¥J¥êrë ŒC¦ ðС !2™¬éòòóSÒÒÃ&Mäñx„‰T{ñÒ°¡C¼zô¨¬ªŠŠ>WYYÙ£GéaS\\\t¥²sr.Ä^”Éå}zõš:e2›ÍŽ:w.xÀÝ‘À»÷Rärùc#G\O(.)Q*•‘§ÏL ›ÂåpLT«¯iº€Ïÿ[W'ôñöš1mª££#³ýÂÅ‹ýz÷©¬®ºxù Ë5c†·WÌ…¿î¦¤¸8;Ïž5ÓÝÍÍœ}˜ÚRRÓ…B¡››Û¤ |}¼õ[Q(gÏŨTªáC‡Ž ­‹9éöí¸ø-M‡Œz‚Ð4yðƒ¯¶¶6.áÚÀüýzšžW—àïçæ1…q/55öÒeBHؤ‰¶¶¶yùãÇŽa¾dæðúí:„RUUMÓôù¿bû÷ë+ Ïž‹Y¾ôyg''uŒ ž&4ó¢°¨øÎÝ»#†ëîéi~ƺsýÆÍ¼‚‚Úºº£ÇŽOšjkkklI´¨#ð°ü¼ :‚‰aww÷ïŒ8øcóö«oþ{øÏcîîiééË_xñÜùóR™ì؉“Ë^x13+‹Ùçü_±/¾üÊí;w„BÑ_íßðæF³gï¾{©©ºj£ÎûãÏ?iš¾{ï^yEeUuÍÕøxµJe¢Z}› iúJ\ܪ—^¾/‘J~?rtù‹kÊÊË™"ÿýîàg{¿üì‹/µZí_—.ýkÝkÛ¶ÿûÏã'Xõ牯m|C­V›³MÓ'O^ûúú»))J•êBìÅ•k^ÊÌÊÖµòËï¿o}ç=‰Tš_XøööGŽg¾ôëïlؼ%ùî½òŠŠwvüßñÈHݘ—|üÙž[ÉÉÍ΋J¥*.)qvr2Æé¨³¯®ß˜žžQQQ±aó–}_ó}ÄOLq3‡—ÐÛK¸FQÔ à4MýíwGxmÓæ„Äë*“Sf| þ®?/?݆©iéžžž- ÃXwRÒÒJKËêjë®ÆÇË KÂüŽ@;kM:jŽ©øß¯išòÆÖ·JJËÌÙÇÇÛëȱãsŸ ß²i£V«¥izÞ‚Eq ½‚™V.^¾òûÿ~rvrb±X¯oÚ|ùÊչᳫª«¿øiÁÓó7¾þšV«ÍËÏ_ºjµ­­-3 þ{?ÛíÕ£G£Ÿƒ4!úVr2ó¶¾^}®¸¤dùóKhš6†—W¯¿ýî¹… ^}ù_4M§ed¬|ñ¥æ¿9ÃËÈÍÏÿ`×G„š¦+*«ÒÒÓ·my3Àß_£ÑŠ:wþü·_}9 ÿúúúon5V§±Òu3/?Ãæ-cÇ„lÙ´I¡·( cÝ9øÍ~‘X\XTôéG»D"‘‰%a~GàÑ€LàáC:û—ÖÒZ­vèàÁáOÎÚµû3¹Bþ⪕>ÞÞ™™……Ûßy›)BQÔs‹nÙöŽH$º•œ,‘JŸ_¼H,B¼zôxgëÏn þãsž¦iZ&“Ñ´–¦i‰D’“c¬Z]±ë7ol"5=½¼¢b÷®% !„Íb=3oîþo¿Û²i#SpÒ„P…BAéæáN ›2™Ù³GwOBó¥f÷¡iú›/¿àñxõõõ„™LFQ³ieêäÉ6|¾T*%„ôêtýÆMš¦®%jµÚU+–31w÷ôœ:eòå«qL)[[ÛÁÁÁZ­V«Õþsh™L¾aóÝWW—u/ÿkúÔ0¥Ri0ŒÄë7ê%’%‹2Ûüü9‚9]ÖÌámhX«Õh4Ì'GG{ûßþ8Ü¿__ÏnÝ!Sæøõì)‰L×il ˜£¥yyù?üôs·n[6m’Ë œyn: cMWVVjµZBÓ‰$%-Íô’0³#†b€‡å™*t@ðÑ>h´Q.—k4µZýÊKkæ/Zìäè´à™§UJeiY9!dûÿ} »«R©$„ÔÖ ËÊËííííí홤K£Ñ„Mž¤K6L3Q­~¶`¬‰³çb(ŠÒ]ëHÓ´¯B¡¨©­uuq!„0—Ú2E!<.Wÿ-E3÷‘ÉdÇNF¦¦¥kþ™^º»»éNúÁ‹òŠŠîžžvý”5¿Ÿßå«qºPݹÊÎÎ.òÏ#Ìk6›mkc£P(˜\Ú`åå..Î<O×POߪªjó‡—ðŸï`^S%“ÉŸ_¹ò³½_îü¿B<ÜÝ™1]§éú|ßWCº|çfRÒÀý vßD&šÖ¯¨¨4½$ÌìˆÁØà¡ƒcªš&„0Ǿ JHL”Iebq}RÒ­à˜Û­[û²@аEX˳›‡­­@«Ñ触LZE\pȼV©TäŸû4M›¨VOcMðù|š¦ ÿÁó6J!„9ST׊î­–þgÄœ}$É굯rØìgæÏ{öéùýûö]·q“~_(ªñ}iš¶µµU(•ú‡L™˜›ýÁGQDû §ZFù`0¥R©Á0ØlŽJ©ÒoH7Ôf¯.fæ8¤®ScCBNŸn4’&ê41PLÙåÏ/yaÅòþµö³½_îÿb‡cà÷a˜hZWÖü%Ñ¢Á€‡”ž´‡P(ܽ狵/­yræŒ?Û£P(üzúBØlVÿ~}™*•êj|<ŸÏ÷ñö’Êd……Eºâol}û÷ÃGȃÒŒû¹yM2Q­þnÆš`î+›šž®Ûž’š&<ÜÝ­4„’’–VYYùÙÇ»ž™7w`ÿþ4M××Kš-åãí]UUURZªÛr/%ÕÌ ÞaÂX¾ÞÞ"±¸¸¤D·gzfóÂÌá5CAasF´>u6;PÆ ‘J¥[ߨ”_PpøèŸf…. sºcþ’hÍàÀÃ÷þxÈBT*Õ•¸øFÿ˜»Ñîþ|¯÷œ§Â×®yQ¡PøáGoïÁÁÁ_îÿ¦´¬L¥RïüxwYy¹V«6dˆ·÷Þý_K$š¦Ï¿p+9yPp°³³óÕ„æÞ¹§ÎDeçäÐz‡×˜c\&ªÕÖXþþÁ|ýíªêjš¦ïÞK9vâdø¬™Lqb(åÓkæ>ÎNN„ܼ<¹\®T*ÿùg^~¾R©Òß§Q4M‡ŒzÂÕÕe÷ž/„"‘V«=wþµë×u;½¿s×›I&ÆÈGcaŒ9«G/¾Ú/‘JµZíñÈSYÙ9EÌ^¦]¡P¨[/_Þýùq óæÌi4,&êlv Ô5MÓÞ^=-xö§_+-+kQ&šfæ’¦éf—„918þЦ,Î(MÃÙ¿š©TºýýÆ×©>õä¬ë7oþüý…\Îb±ÞÜ´ñÍ·Þ;&dû;o¯ãÍ%+V¹¸¸ÔÔÔ ÐúWišÖh4ï¾½uóÖ·ç/zÎÞÞN$­\¾là€þË—,ÙµûÓÅËVp8G‡gŸžŸ›×ðPÐîžž?_øëŵ¯ìùø#cÕêGe¬ µZ½uó7oY´t¹£££P(õøã«–/Ó+ÞðÃÖËɃó~ŠÒÜ>}z÷ž0~ÜÛïíðõñ®Šú÷ë;1t|ä™3ݺyÌ Ÿ­_„4£iš¦(ê­[Þ~oûÓ‹ž³µµe±X/¬X~èðafO±X{éòàAÁÃé¡fÇÐGa¼³uËo½=áb>¿»§çÌéÓîçæÒ4­V«Í^ÆýÜ<Ýz`³Ù>ÞÞ›7n˜9m*sõ&yðk„‰:MD8yâ„uÐjµzÅóK.üûžýÌzÍ £Ùî0•7³$ÌèHÓÁ€‡TÃõ9Ì…:9Y©„«ñ7–.]j¢LDD!dÚ´ií"è666M·«Õj…B!D"sî.—Ëupp‰DZ­V ܹw¯ªªÚÇÛ»_ß>b±˜ùüçp8l6;év²R©ì×·«‹‹L&ãóù5µµéC&„°ÙlæF¸\.÷Vr²J¥2(˜Ãá«VŸÁ&˜:ù66ÉÉwjjkýüzö ª¯¯gŠ;;;Ëår¹¼áQ(®®®õõõLÞÅf³œœ„B¡ƒƒC³ûh4{{ûôŒŒ’ÒÒÿÀ€€úzɤ›=}}=ÜݵbkkËårE"ÓM-M'ݺ­ÕjG Êçóù|~]]ÓGGG‰D¢»¦W7/|>¿¶¶ÖଠÃÇÛÛÕÅÅÆÆæFÒ-þˆaÃÞý÷ûZ­æ­ÍoBX,–9ÃëààÀ}p+)BMÓZ­V.—3á5꣉: T7‘HÄÜGŠ¢('''Fì3Ã0Ñ´‹Åbj3I˜98ÐΞ=K eÞÞ5tÉÌ ˜~~~&ªŠˆˆ3z$!äRlŒå™êÔ©S-èt.—KQ”V«mtëZŠ¢8EQjµZww6›Íf³išfîñ£¹ãnÃñ:ãÕ6Û„n;‹ÅbîZl•n6¥kB£ÑPÅår5ÿ¼É“±˜™ÔK¥RY%jFYyù¢¥ËßÙúæ¤ hš.-+[ýò+k_Z3eâ])s†·¥ŒÕiÙ@Y¥i-‰¶h©èèhÒ™*Îþè*t¹e#4M7ý’Z­6öÛ£c‰Æªm¶ Û­K?Ù¦iºQüƘ¿§Åa¸¹º.~ɇ>Çáp復„Mš¨ŸÌ·Åø«Ó²²JÓúíšßåvX<ÐQðkú4Š¢š^ü Ðe!SèH*•ªéÅÀ]œåÏSh 8¦ 2Uè\pö/t.SåÙÚÊår>ŸoÝhàa¡P(øB*µzÍfª¾AA}úôA² Ð)ŠÌÌLŸÀÀœ{÷¬^¹…™ê€¡CÓ ¹uçN[dÏÐÉñ‚žý†íD™ª˜Å0|øãdz­!Z­öÖ­[¹¹¹ÒG:C‡e±ÚêRá.2’íI7k„‡wl^tq˜Dxˆ`¹B[Àº«Ã¢² “ÉÛ¦r 3Uš:Bê¬ !„ÜÛ·Õµµ3f̰³³kƒê; ‰Déöí€áÃÛ¨‰.2’íI7k„‡wl^tq˜Dxˆ`¹B[Àº«Ã¢² 3ny·o·Eå–?¥¦”åä<9cÇS*•Kâñx£FŠŒŠj»Lµ‹Œd{ÒÍ¡é‡wl^tq˜Dxˆ`¹B[Àº«Ã¢²ÌßãÖ:]¦ª”Éx<žV«íè@ÚMÓ<OÙ–'t‘‘lOú³öðŽí£Ñ‹.“,Wh XW`uXT–iÓ¤¦Óeª„.²2hšnë&ºÈH¶'ݬ=Ôcûhô¢‹Ã$ÂCËÚÖX•eÚ.©éŒ™j;¤p]F²í<cûhô¢‹Ã$ÂCËÚÖXU'LõQ†‘l;ÆØ>½èâ0‰ðÁr…¶€uV‡EÕI S}”a$ÛΣ1¶F/º8L";fô¨Ç'„ìüd÷”IG¶Ù3-ó(MbÄÿ~¹?W÷ÖÆÖ¦_Ÿ>Ó§MµiÝ$¶†J¥Šøß/÷ss7oXïäädq=p´-s#)éBìÅÍÖ[VÜâåš•}ü䩌¬L…Bé٭ۘѣfÍœÁå´Óï0]dúÞnâc°MµÏÇ þOÛΠ5™ê¡Ã‡ÓÒ2¦Lš8vLˆ±}ZùYÚv:[`¬ŽÀºå8ÉÉÜÓ§Ù|>›Ïgs¹œÜ\ÛíCB¨üüfËrObgg7»﫯x»w[› p$išÞ³çú”)¿åäÃÃû†…æç‹fÎüý«¯’¬Û÷Ü\áÉ“ Ã~âDvn®yýÕWI»w'6Ýnu§Nådg×ZPÐâ±½&Ê:_{§ÑÆ:µäheB©²ÎDÁSÕ7³åe´hBkVÈÿ~;ôҫ늋K&Œ7ú‰'JËJ_Y¿á÷ÃG¬Þï‡üô˯-*’™}9.ŽËãry\‡]\R²ûó/–­~±´´UCw9îjaQ1óúâ¥Ë%%¥–ÕcAšõèMâíää¤ää“È)*.þô‹½¯®ß¨ÑhÌo˺C}äØñ_ýÈár-®¤F»Ý”””^ºrÅ‚‚­Y®?ÿú몗^¾›’òøÈ‘Ó§†98ØñÕþ^z¹¢²Ò² [¤‹L_[t³->÷ÁÇ Á¶ÆAýŸ¶«5‹Š¦i…Bñ}ÄOçccûã°‰Ý,þ,mk­ü·ºGä˜*EQÄÉIyð î-';›5uª`Å ñ¹s„¢L—¥(ªÙF9·oS‰ü¡:À‚‘LJ*ß±ãê{ïߺ5D£ÑPõþûÖ®zç˳fùú:X/:Š¢",/ߨR)Õj!äöí ‰DÕt»ÕQ1gÞ±¤ ñMGBŠ"–‡j‚u¦gdþ÷ÀÁ—V¿°rÙRf…¬}i͇òÕ¿7fŒ§g7«–™-“ÉZE({{ûïlkxKQ…EEÿzõµ÷Þÿ`ÿ{(“¦+ÖÍÎ_ÑQJ¥R­V[P‹=2Ó£4‰„¢üýô'1:æü¶í;â¯] 5Ê̶¬;Ô%%%ƒ|qÕJ•JeYí3Ú퇢H+>Ž,({éÒ7ß\¾ôù­~ù}ˆÅbå¼¼îõmÛw|õù« ÿæÞE¦¯ºÙvŸ{àc< ƒfý6Þn,ŽäJ\¼D">ûøÉȲòrÏnFÖRë>KÛP' ìÉT2™L÷šåãcÿÙgì Ø—/«ÇkØXRÂûåVI‰Öß_¹h‘Öãi£÷áž9ÃÊÍ% /"B±`áñLTÕyX0’}t- ÀyÆǤR©nã¶m!¿ÿžzölîªU çi¤§W=šYY) r^¼x€«« ³ýÏ?3‡õ”ËÕ¿ý–¦TjÆó93PWÏ¥KEQQ÷µZzúôBh]„QQéAANÞÞgÎÜÏÍ*ꈈ{ ô»x±a{k½~½ôܹ¼ª*Y÷îöóç÷ rnåY· ý`˜í%Êš_ʯ”(küm<uëÁuÒ/(ÖÈŽU%>í1úLMRœ0Ñ#xÖ#¤ŸÀò³-èÅ?ÿìíåµdÑBýòŠågÏÅÄ_»öÔì'ÏÿÛ¿ßÿ³wÞqQíŸÝkÞqt” Ь±Å 51±$¾&ÆžÄhŠ-F£IôõMŒFcL4¾¤©1vŠ  ÅREÞ‘r\¿Ûß‹—ËÁÇq‡”çûñãgovæ™§ÍìÍíìPWWw9üꢯÛÙÚVVU]º^YYÙ£GçBCìíí5 ÓÒ3nݪ««sttœ8~¼‡»B(6>¡¸¤D©Tž¿ø÷äЛm@‚Ú“€³“ÓºÕï¯ÿhó½ääAAA¡KááýÝÝ<–’š&—ˇ "‘J£¢c&MœŸœ’bee5yÒDo//G]uwsëþd°gçäDFEËärÿ^½&‡Lb±X–°¨Y:[ñ¿‚888!TUõc¬/|Ú} …V:ýæåçG\‹ª­­swë9uÊd¦ydttŸÞþ ¥ârøU•J588xô¨‘:º$Þ¾“WPPS[{òô™‰ãÇñù|}Ò{Ìxo3%†õ¬|\}ý—Ù>uª»[Ï«‘×RÒÒìíì^˜>ÍÉÑј:‚Õ¬7î&%ÅÅ'Ðñ ÂÿLÝ&ÐÒ†デ~2hÐ[K—h'†«‹Ë'm|oíºèë7† bxü6™{Æ$ê2á3ÒÌyÒøIÀÀð1˜;Ç4ˆ´BišÎO÷ÚÊàï¿lÑÂ3çÎG\‹š÷ÊËšSMƸ„6‹=|ØPMµqq<oØ!¦ ù&¿œ ƒÎ1ã$ov:Éî߯ )Š’†„ ûä6ëΛ‘#ydzÅân‡ÙŒÁJNÆk7ÔW‡›@¥¥Ü‹‘J¥¯šij·OJ$ʨ¨‚ ªÕJírVUÕÚåË3/^Ì;ö rE"ÕwßÝ5êׂsjË–¸½{ïÌ›wN$R=xP;þùƒ“˜S{÷Þy饓qq%……â×_¿ðóÏ÷5.Yr1<<cœPZTT_Z*¹x1W¥¢4å&wzäHÊ”)ÆÇ—ÊåôÉ“YcÆü–œ\¡q~Ký£ih®,ý§aŒñúœ‘w?:^'ÆòCe‘#înLç5¨Š0ƸR%z?ûð›Y6åþQIÕŸªº9.éã¨ÚÔ6³B&“ݹs÷ùiS™V5øüèðËsfÍÄøñ§“§Ï¾¿n}­D•J•‘™¹hÙ›áR™ìôÙs —½™õð!ÓêÜ…‹+W­NIKSªT‘QÑKÞZžõ0cœ’šZ^QYõ¸:6>^mP¿-Ò)EQÇår8IÉ ›®÷ìû.5=]SáRxøŸ§NaŒkkk¿Ü½gÛößø¡¦¶öZTô²·WÞ¾{ÿ;O¶nû"áV"sq-êÍï$Ý¿_W'Ú»ÿû5n (ʼ5K' "Öµ(.á&Aú÷ÃúçÝ×½¤ûÚýÞˆ‹[º|Ÿx‰Trü¯“‹Þ|«¬¼œi~ð§Ã¿?¾ñãO%Ri~aá¦-[ÿ:}FGŸ´ŒŒÒÒ²ÚšÚØøx¹Ba@šŽÇZämŒ±a=wïûv÷Þoiš¾óö{ïoÞò§Îœ% âÔÙ³ï¯ý@­VSÇ@° {ãã®Y¿!9%µ¼¢âã­Ÿ9ÞŒ`³ä#‘)»[[jEyE…R¥ruq1!ˆ Â#"~Üÿm`ß¾b±x퇇 ´cÛg$I*Uª•ï­Úõ;ï÷îAýuúÌÌglX·–¦iŒñ¬¹óâzùù¾·rEmH&“îü|›T*Ýþå.}þ¥CSaŒ]]]˜‡ÙBH‚ÔÔ!IRûc^~þ±_ì…BµZýîêµßøá§ï÷?ƒÓH’ÀK¥Ò¯¿Ù;gÖÌu«WÑ4ý(7÷µEKânš×"#éLADåæç¾ó¿Œ>•U™™›7|èãíMQ”¾ði÷…1ÞúùvæX$íÛ`üرŸoý!T//Zöæ¡#ÿÛøÁ:„AÑ×oÿí;[[’$W­[ýFìÌ/h+óÆ’Å¢úú¢¢¯ÿ»Ó°4mI$š¦÷¶J¥2¬geUÕ¯?b±Xyùó,¤(õáƒ0Æ£Gú`ãG%¥eÆÔqwë©/X¼QõøñÏa¿Ì3{íª÷išÎËÏ_°ô >Ÿßf3gQq BÈ×Ç»qC•JлwAaóQßøÕ—{Æ$@ Ÿ1fbŒ[êÉLz†ñÀ4ØÑ§A­2Üì˜jRg)Ú¢ÜÐVÅ„V×b®Ó4=qÂxš¦'ÿÕžoòòó½<= Æ)¡¡¿=vçÞ½aC† „b®ß@ñ\hÈÊUkZ:äõ}95â}Î1û$ov:í=Õ†r©ÕcVJ ëáCÕ† õr¹D"©§iõêÕ¬{÷Puµ¦­:2™ŒI‰DBÞ¿¯¯šij·OÊdj„Ï@Û·ËŠŠê7l!•Š% §^¾|°æÝH¡W^é+"©T*‹ p–JÕã+Wò(ŠÞ¼yd}}½D"ñö¼ür_†ee2McŒ‘Ögz§ãðð×vì'‹¥RéãǵAÈd”¶ó[ê¢V5Ĉ´+´ÿI±‚˜".x(+Ýà=K.–J$Zª\íùÂ=qnµJ¬é‘Y^¿ë5'G‰D-Q|ä3'SZœ.)l+ärBÈZ(4,yrhˆ—§§H$Êzø° °pÑ‚×e2™D"Q«T¯Íûσ¬,‘H„1þáÛ½ï­x›‰Nuu5A …c,“É0nn³³ H0Æ"‹­y…NíO¡ys_a‘¤D"Q*•K/ÌÍËÏy”«Ý!„1Â'Þ¹#‘J_u“Ï={ôøxã—îÎæµ¨Y:c1¦iŠ¢(Š¢iÚÖÆÆZ(<úç‰â’’ÆöjÏš¾¤R©æ8-#£¼¢bñ‚ù‰D"‘°HòåY3cnÄþcã¤IÝxû¿–ZZQQI„«‹ ó‘ «B¡¨®©q°·G999jæ ÜÜmœf¥i<¦1ÞnV2—ËeN1ò¹ŽöGæeaÆÔ1¬&½Q^QáêâÂf±˜¡AQ”·—×õØ8þ2#Œªª;:84>[UõØÞ¾áÕMŽ_µšBzr‘]$|Ƙi`ãÉf'&‡å€i°½Mƒ­×ù©_[Beeå©ié®..«?ø)a³ÙQQ‹¼n`0R5%4ä÷£ÇÞ_¹¢N$º—”üÕŽ/0Æ& y}_N¢b®#=Îyê“|³´Ç•ªÉër†ìŒ T]­<cŒX,„½};~’¯AÐÝݑ憉þ:Xë'cªµZªOÏžVnnÖ7n¿ô’ŸÎ©W^97dˆËÿþ7µ[76ÆH.Wòù É#—«bn]3,uYÁ …\¹\­½¥G&Sêhøäÿ³ÙòI¹iÖ×+'L8Êf³–/üöÛC ê1cÆ1íN[ó#© ±X,Öþ,“ËB#ÉBmX`ÍjxS³ùÙtDOžSeú”SJMï2•!Ä!Ù¦éÓÒVNNŽÝ»wOºüØguNmØüqŸ>ÿ÷äu…Œdæ9þ÷V®°êˆ$H—îΉä•ï²Y¬—gÏzeÎì¾ï­]‡¥„ ºÊk¶ñk‘›—'‰úô h2è*•J»„ùµ’9%g~~b±Ñ“û¨ÚZñùæoM!s?ÄÌG§ "Bc‰äŸË‚3jÔÅËW4‹ÆákÒc‡1V(š¿©«P*BÌý¨©wnës¦1ÒšlnŒ·—ÌüOÓ:3$2¦N³ÁjÒ|>_¡TjOÝÌ=À6›9û°X¬„[·t¾Ë"„ÄIJZÚ˳f¿LA“¹‡ŒH€.>cÌ40Š›õ¤‘“@k¾AÁ4ؤ+:Ð4ø¤­é:?õk+B("*Š ˆ©S&k„NNN×®¥¥gŒÇûþà÷’“ ‹Šœ׋D& ù&¾œ ƒ löIÞì´Çݿ梄ÿ÷ÈÉI9mBˆ@)8ɰaÌ?¹J¥¾r…âó5-Œ©c|µŽÆôk¯õÿóÏÌÜÜ:íòÈÈ‚Š é”)½B½zÙ!„nß.ל½u«ÔÚšÛ£‡•ɾ¾v¥¥õyyÿˆ½y³ÔxÅLë41±¬¸X|êÔË+V?óLwK))Œï´ à÷DqÔİn¾Ì?•By¥ìŸàêÔLeýs\ÿ!äÇwm%1ÆÓ¦Lˆ,.ùWøïÜ©®©=R÷ú^ž!‹ìÛ'€ù§R©bããy<^ZFFeeåî/w¾úúõ]ßìKH˜õÒK¸¹ði?Ìûx{÷ïxàÇCUcŒSRÓNŸ=7cú4Í”ÞØ›M8c¦—f¥é‹E³Þn‘ž¦;ddfƒÕ¤7FxÆÁÁ~מ½u"MÓá‘7Ûræ¤iúÝ·— …ÂÕë?Œ¹«T*1ÆÅ%%;w}}þïK￳ÒÑÁë¿rÏÈè"ákÖLÓþéÀÀ#VV’$6móÝw·ŸŒ·´õô´Ù½;qüøcçÎÍÔ”›Öipp÷3ü_{í¼ŸŸÝãÇò!C\_|1 ,,ÕÝÝê7˜ì¢Ö4ÄX·aƒV«Õ‡ß™™¼chò‡ÎÛ UÝP›^»üa…Ù.#ge|)`ñêÔR/¾ónÿ%jµº-­øvÏ×ÿ÷ÅöMŸna±Xcš¦ûøû¶åB#ðI8Ôjõ–7­þàÃù‹—ÚÛÛWWW÷ ì»æ½w1Æþ½{ûì¦O·z¸»ÕÖ‰úö ˜0nìù¿ÿîÞÝyæŒ\]\~¼öæÊwö|ù_}tmA¨^,Þ²ísæ£@Àïøý¾ozûù1û£B‹æÏß¹ëëW.f³Ù6Ö̙֯›—§5i„u?êÖ­›X,îÑÃuÝêUÇþs!@ˆ¹¨|²iãú›fÏ{M(´Õ‰–,ZøÊìYiééf´ÈH:SBró4Ad±Xînnë×®™6e²R©4>í¾´7®ÿ`íú ó,²±±©««1|øÒE µúÕº¸6ÄVï¶7µZÝŒ4ý—jÃÞn^òÅ´¾hÍœSÇp°ôyƒ ˆ7nØôé–9ó^ãóù$I.[¼è؉m™®çÐý_|ùÕÿ}± ‡£T*ííì¶lÞ4qü8f£/Ò?~ æžQ ÐEÂ׬™&x²“@ë¾éÂ4ˆ:ø4ز^šÒ¹¹m1-mÃåpF¡Ý¢¨IÆßº}û^r²áÁ8vÌè=û¾Ä<ëkÚoòËI¿À¾œcöIÞì4ìrf¶;ç:)Z z<ÌΡiÊÛËË×ÇG“!:Ž%IR ÜOM­ªzìîæÖ'À_3X„Baæƒ%¥¥>ÞÞ¾>>b±äöÝ;žÎNNç^r²J¥ПÍfë“ 1“Ç«®©É|ðÀÚÚ:xà@„‹Åª¯¯/+/_°ôCö»¸¸ÜOI ­ T*•Ei›ÃÌéŒ(6›Íb±î&%+•Ê>þöö2™Ì¼5Kç ¢µµ5çÉ»d‡Ó4-—Ë™Çfô…!¤ÝÇÓs8^·nÉÉ÷«kj¼¼<{ûù3ohceeE’$Ó ‹Å2RZ‹¼Ý"Éb±˜y3{ÔÕÕY[[7[‡¢(Á26mÞÐGk¤YbRm)¦Í‡ú¦îÑút%I’Íf#„tRȘñk®ÜC=|ÍÎ -õ¤…fr 0 jÓѧA³ôÒ®­úhé\jòoüå„AŸsÌ8É›}¥Ú‰vÿ‡f²0¡óƒV‹D=]ZãIµZm`cŒM0c¬ãCQ§©£SnZ§ÚS¹>LÀrYjÀFÍö°V.¶uš†á ÑAŸQ¢c¡áÖ´ÚO6zv¬1 Ùöu© PX_¿¦Íúh4KLª-Å´ù°Ìœz‡§ã×¢¹‡:QøšZjfÛ|q‚i°q_q4K/íáÚj@f‹æR“‡¼>'è+7ã$ovÚã•h{¶pK¯ÿôàvì?ÛÛ±±±^þÆ2'Gǧ­-Æ/@g¥ËÝSíR€'-ÇSñ­5Á{ßuš\.§›ûóÜFÂÀçóç½ò²Û–@„%ÒµC_À,À4˜Hªv¬T;3àIËñT|‹ÿý×ÀÍ"ÐŒÒ:.fwl[A:ÚP×qÇ/``Ì$U;vÿí ¸§Ú™OZŽÎáÛÎaE‚t ]Ky˜Hªv¬T;3àIËÑ9|Û9¬èâ@¤+` ¯³IÕN€Ý¿@û¢ÝÝSåòùr¹œÇã=mE,ŽB¡à –“ßu<Ù–0QÃwhßv+º8D é XÈ+Àì@R™ã7…TjvÉín¥êáç÷àÁÿÎ …"++ËÝ××r]tO¶%ÚQ븾íVtq ˆ@Ò°W€Ù¤2 ßrRSÍ.¼Ý­Tƒƒ3ºwÿ¾%Öåíž@àéëÛ'8Xd±.ºˆ'ÛMÔB׷Ê.è@@º–ò 0;T¦¡ñ›%VªóÄ0A㜇顨øÛ ,0Ð&,,Ììzh I288Ø××W`ɱO©TúèÑ£¤¤$Ëý¥ò.âɶD5„PÇõmç°¢‹A:®€%€¼Ì$•ih/jÆÇ¦¤¥7®9 _ sàååe@`XXØè‘CB1QWMY©æ›dÐ9ÉoX&šk¥ ïþÚ°RÚ°RÚfx÷ïä?K²c>‡kåäì7ðE»[ë…[š»‘_ÕWç ›ïêõŒv9¦Õ7Î|@Sê¡“7YÙ¸>-õÌ…11Š=û¡Oÿ=}G›½wóJθy¤¢ðN“§|ú?ïÙgоîâÏoòìêÖk¼ñ}]?µ†¦T¡qsö•<Š}x÷èˆéŸñøvÚÇÆÈ)Í˺óÇ…vîÚåeù7$þ:$d½ÐÎÃrþ×!31¬ˆèî1ØÎ¹·‘vi¢£†N5Y¿/Åžý°¦"˾»?SR’£RJ|ú¿ ­¶/UÝ-zxM.©X»øôÁÆÑGS§qžŠ`.,uÇ# ”Åâ–æÆ1«Š“Oï͹R)e$†þ.ôqi*BèNøŽ”"þXªÕÕV<Œ<úfÆ­ÿ5Û$þÂÇñ6Ó”*7íüùŸ^Š<úVÆ­#Ó™·Â.™‹i5B¨àAøÙÓó3®(eµiñ?žÞ?E\WÜ´ X\¯>SrÓÎkJJrã(µÂ£÷Dæc“¢* nÇœ\Åô…RÊë¢N¼S[ù°•j·ÔQeù·$u¥²úŠ‚Ì+4­jMŒ¢þ|§(+’9N¼²=ãæ‘KGþS”I©•ú´B妞;wð…Ò¼x™¸êÖß[/‡ÍǘÒÑŠ‘ÜR!„DóâÎm(Ío‘]C 8Ç@§Â;p‹ÍËM=§)ÉK¿hmï©yRÔ°—²îüqáÐì²ü[j•ôQêÙ3ß?W]–ÆÔi2OÅF0¹§Š"I¶•mOq] B!|ýôZW¯g&Ì=@’lµJz9l~üùžã,B(/ýï™+¯ð…ÝBá¿.ÌK¿ØwøBÃM$u¥3Þ:Ïbój*œùþ9J­˜¾ô$Aî½ÆE[^_[deÛóæß[<û„Ž›³ XriÍ…Ÿ^ºùÕ³3w7©­w¿é‘ÇÞR)%®B(/í‚{ï ,!DSŠ&EõõVJì’Ü87¿±¡¼ôK!ß/ýýó+&«mãàÕRG ›ü‘L\©VJ&þç`ëb¤KÎýÓSsr B_ùe~“Z©â¸ó ?bÚV„PuYúÙž/ÌŠlR+ß/¶ÔcöÝýC_;Ò¢ªÚèwŽ¡ì²žÐÃRnê¹Á×"„hJU˜ÑgØë:Õôxiæ¥#sýÿgÔ ÛB4­þk︂Ìp×~úBàÒö6€¹°àsq$‹ƒi !T]–^W•4î=’d#„ØAÿQoV•¤(dµ!ŸþÏ3«/„ƒk Z)k¶‰wàs,6!dçä‡ò0ƒyÀÏÖ©BH­”V%IêJ‚ƽO,„P7}Ÿa¯3_ú›¤§ïh6GPø =ÙúëÝïyæT¥Qö.}ìœýóÒ.2ÕrSÏyø‡HE¥­QÛG™+Fñéÿ‚“[2‹âœ•B4v¥F«Ñ3vh¶1ë`‚ǸÝlÜz³²íÙzKµ1ìgËá7pf}M~Uq2B¨47V)ùôŸ¡S§I/uØ?·ðg¦~ÊRj%•RŠÒ‚§e#˜Sî©F‡…iŽÇ-X ¯šL\ÙMà€Uç#„®ŸZÃ,öB”ZŽ’KªB̃‘:nÂæþeÿ?"„êk "lü4%vν)µ\&®ä wGl¯¾SrSÏûx©äQ,¥VzøO¨*IE‰õ‹ò0#-þШç·É¥5ey !¯þÔJµMpT+ÑĨ1Â'ëCZÕWçsyÖšõ3B¨÷ W t×"ù`LÀB–æÆ]ù¥a8ôµlhÈ n½ÇóøöRÏ:¹å¥ÿmßÝ_ó̪6½„"H23ñ×Ê¢{¢Ç¹us5Ûƒõ… /ý¢16je0™qãÆ5_©%˜¸û×À•¡¦âBVËÜ”cî ÙÀá µëlzjÎê`¸I³°Ø<„0M©È'¯–aþ*&ýäû}c¼û=õ÷ÅJ¹(/ý¢‡ÿDÍ5 ÊwÀŒ»‘_•æ%ÔUfó…Î=ýÆd^iÚ&8ª5hǨ)mÈfµbsÓÆ÷hv™F+³KÎîƒ^Zq™9æ šx}I²}úMÏK»04dCAfx¿‘K›”ÓØK*…øìéÉî;|AÀÐ×\¯þ¶˜©¬/FÚØì@€f±Äý‹<§Š1u;|{7½gŸÉ!;ç^!6Wàê=‚©P^X’s]ó±1&4ÑÆÖÑ!TYt·‡Ïh¦¤¢è.‡k¥oc*B¨‡Ïn7›¼ô‹™W˜§l}õ‰"ÒÙ}p^úÅšò½‚gÙJµ[Ù¼EèÄÈ4­l¼UJI]UŽæžóå°×Üzë?êÍ&E í<Ìë1Ó°P§l_ûÞ{“ø|)óö¯IQ{²Í[uh쥊ÂÛQéK+.Û97܃U*Ä̾xøO´„Ð6˜ç6E) 2¯d^)ȼœ™øË…C³KÅŽš±“ù ¥¶N½œÝ'^Þ&­/C‰k‹nœþ ¾¦Ð€@šhãàÚÏÙ-8ñòçÌD-/¸™øK¯A/¸-I,ï¾SïF|IS*÷ÞŒå;àÅÜÔs•E÷z¿ÜzµMnNëyÖTÃ12M«ž¾£­í½.~ªRˆB9÷O•æÆinÒ6©U‹±çY¾ÐIZ_éä4bÚÃ2Mh¢Í¨;¯þ¾øÏÝ£x|;¹´º§ß³ƒ'~`¸‰wÿç3oÿêÛóÞ#cDùô>ñòg.^Ãl¼Ì¢¶ Í…vÎ|ÿÜ´¥1ï.n’fcd‚VÉ~væW‘Gßü㿃¸|[…´fà³ï¸z=££•¶¨yL.©ÎM;ßÝsXO¿gѳ1úÔhe˜Zƒï€“cö黡ʠã%g· Ï>“#þxÃÖÉW.yìääÕgJÖÝãÖÞÏ,Ö‚§h#´cŒ"cœó0!{Á§×ÂÂÂLx¼ Óêò‚Û2q¥µ½§Þg#[ÝDŠR–çß’KÛ8ú:õÐÒæ&‹j¥Ú-mNÓêâìhL«=ü'¤é?=È%9<+ͺÆk¥RJËó(µÒÁ5PsŸP[+…¬Î€dÃÂ[iˆçÓé/ÛFÍØé7ð¥VªÔRµ›¤²è®¸¶ØÖ¹—ƒK_•B\œíàhãèƒô„´ñÈVŸñ/ï÷œj9‹€.BtX˜æJ)ié+ èÈxyy6zäP„PLÔUKý=ÕÆ$»¥ÏÈ™ÐD‹ÛÓwŒÉÍMÕJµ[Úœ$Ùþ“LîNC7+Gg hÅá Ü{O4 •aɆ…›€vwœcÞN[O³^rvìì>˜9æð„Þý¦kN5Ôþl#±àßS€N@rÌÞ‹‡_~ÚZ˜“ä˜}Ì" óÑv÷T Ã1òùÏy[UÇÂÅs_ؽWðœVn‰Ë+UÐK¯à9O[óãê=¶íØý ´/L¼§Ši:÷Þ½òÜ\¥Tj^…€öW pñõõ ¶„pWªyIITMÍ S§ZYéýž@gE"‘ÄÇÇç%%YB¸‰+Õ²œœç§Når¹J¥Ò¼ í¥ëÖ& IDAT.—;bĈó—.YB¸‰+U¥LÆåriš6¯6@‡cÌår-ô@¨éïþ…e*@Wcl!ɦ¯T-§Е•*****`.] O¸y«qùØgÇL?®íõé ܾ{72*zýšÕú*œ8y*5-½ÉS'Œ;fôޝv…Lœ0tð`³_íþfÌè‘#†7§ºÐ`¥ ˜‡99×cc'N¯SÎf³Úàzñç_'Jåüyÿ±tG튒’Ò˜7>X½J_6‡Ãár˜ãqqÖBë N±Yãè˜ë}úàAýÛ‡×ãb½¼<Ÿzà©+UÀ ˆà [?Þ¬S®V«Õjµ¥{ÏÊΖÉd]îÂD¬žýÒ‹¯ÌžÅ¿ºp‘Ÿ¯¯&@L\®]¹¤T*™ýÛ‡A’ –Vª€YÀ!™LÖøD^~~ZFfèÄ \.!$‘J£¢cõìÑ£²ªêÒ•ðÊÊÊ=z<boo¯i•“-“Ëý{õš2‰Åb] ïèîæÆTHIM“Ë寉O(.)Q*•ç/þ=94„Ãf«Mã.4 G\‹ª­­swë9uÊd¦<2:ºOoÿÊÇUÑ×op9œéS§º»õ¼y-%-ÍÞÎî…éÓœ©ÃHKKÏH¸u«®®ÎÑÑqâøñînÚ½(”ŠËáWU*ÕàààÑ£Fjt¾›”Ÿ@c}öÜÇŽµã‹Þ½z!„"£¢?ß±³OŸW×½û¿¿þõÎ{ö}·êÝ•n={2b/…‡WVU 28%5µ¼¢’¢¨Øøø‰ãÇeggë«M“]$ÿégŸ{zxøx{ÿë䱿þÚÿÍ—îÝB:ìáî^YU4ðZLÌù¿/ PSSã߻ש³g¯F^ûßO©Ãb±Î_ü{×7{ƒƒºº¸DFEÿúÇÑïöìîÝËéeèÁ·ïÜ6tHiYÙ_§Ï¼»âíY/Î@ýóÄ?êÝ«W÷îÎoýŒYÜ2>/*.ùr÷ž÷ßYéåé¡?:ºں틥‹½0mªŽ±LåÌŒñ'˜X©f#$“Jw|µK§üåÙ³ü||>þhÃê>;f´D"½r5âçƒH’Üþå®!ƒíØöI’J•jå{«v}³ïû½{¤Ré×ßì3kæºÕ«hš~”›ûÚ¢%q 7 ‘©¹ú$É||oåŠÚ:‘L&Ýùù6©TªO¬¶Vúº>tȾýÆûùÖOBõbñ¢eo:ò¿¬CQYUõëχX,V^~Á¼ )J}øàŒñèQ£>ØøQIi™1uÜÝzþuúÌÌglX·–¦iŒñ¬¹óâzùù2½D_¿qü·_ìlmI’\µnýõ±3g¼PõøñÏa¿Ì3{íª÷išÎËÏ_°ô >ŸÏ8Ä×Ç{ßî]={ô0|uÖ=K$IèøðÉ}Wf­Šñ'˜X©æ7µûÓ˜¦éàgww·—^œ!—É^[´äБÿ½óöòýûûýÛ¶|âäèX^^±ãË]ýûÒ4=((ÈÝÍmß÷>Ý´Q \¼v/9yÉÂvvv± Çc±X/]ÎÎÉ6tˆæbÄÜötwsÓ'V[+}]øx{÷ïxàÇCŸoýÔÑÁ!5-ýôÙs3¦Oûg/î“›ºMÞbÕüo¸Ž­-B(7/ÏÑÁc|êìÙ¼üü!ƒi×ÿçøIɨÏ88ØïÚ³÷“M­…ˆkQ7­­­™š…EÅa¿ýö\hèÁƒ Ĩ‰k·V_Ú·Ž™r#ý fVª€ÀI¥Ò-ÛtŸSõóõ}ñùé‰wîüúó!…\N’ä‡ëÖ~øÑ¦1£GmùxÓê>œ¿x©½½}uuu¿À¾kÞ{cLQÔ'›6®ß¸iö¼×„B+QhÉ¢…ýû.š?箯_]¸˜ÍfÛX[¿2gvn^s1ruqù5òÚ›+ßÙóåõ‰ÕÖJ_jµzãúÖ®ß0oÁ"›ºººÇ/]´P«¹Î*Tó‘q6¦ŽïÞãÇ>»éÓ­înµu¢¾}&Œ{þï¿»wwž9ãí&¨¡ÆññÆ ›>Ý2gÞk|>Ÿ$Ée‹;q‚©Y_/ŠŠ¹>p@ÿÁ8ØP˜t¯Ý Òu|¨©¬V«ñ'˜†'a˜Gbr¦#„bão/X°À@›°°0„Д)SÚFE ý#ºuëÖ¸\­V+ @ ‰˜½»ÇÚÚZ$Ñ4-VU=vwsëà___Ï\•Øl6‹Åº›”¬T*ûø;ØÛËd2W]S“ù൵uðÀ!‹Å¼—ÃáÜKNV©ÔAú³Ùl}bµi² F&¯[·ääûÕ55^^ž½ýüÄb1ÓÜÎÎN.—ËårF‚ƒƒƒX,fÞ0Äb±lmmëêꬭ­›­CQ”P(Ì|ð ¤´ÔÇÛÛ×ÇG,–ܾ{ÇÓÃÃÙÉI§>ŸÏápD"c&ñÝ{I4MÌãñx<^mm-cŽD"Ñ<Ó«ƒ­­-EQ:3 `æXÛ‡H’4ÆŸ@—åòåË¡qãÆ1Sšz8e@¿@æÀËËË€¨°°°Ñ#‡"„b¢®š¾R_.—óx<ójt O PH¥f—lâJÕÃÏïÁƒþþþ°Xè‚(Ь¬,w_ßœÔT³ 7q¥œ‰Ð½û÷-±zÚ9<ÀÓ×·Opp;Z©Ö“dààÁÃf™W„hš¾wï^nn®´S¯¯¯opp0IZêQá.âɶD5„PÇõmç°¢‹A:®€%€¼Ì$•i0+™:Ë7q¥ŠªE¨Ö¼º „ÊMJR×ÔL:ÕÊÊÊâÛ ‰$>>>&)Égð` uÑE<Ù–h¢†긾íVtq ˆ@Ò°W€Ù¤2 ÆoyII–nú_©±e99ÏOÊår•JåÓÖÅ‚p¹Ü#Fœ¿tÉr+Õ.âɶD5„qÇõmç°¢‹A:®€%€¼Ì$•iüã7 ÐîVªJ™ŒËåÒ4ý´±,c.—«´ä¦‚.âɶD;j׷Ê.è@@º–ò 0;T¦aÑEM»[©"„ºHf`Œ-ÝEñd[¢‰Z‡ömç°¢‹A:®€%€¼Ì$•iXnQÓWªm°„ë"€'-Gçðmç°¢‹A:®€%€¼Ì$U;Vªð¤åè¾íVtq ˆ@Ò°W€Ù¤j'ÀJµ3ž´÷Ê.è@@º–ò 0;TíX©vfÀ“–£sø¶sXÑÅ HWÀ@^f’ª+ÕÎ xÒrtßv+º8D é XÈ+Àì@Rµ:ÉJ•óë¯ìˆˆ†…BjÈÕ+¯ >¿Ù¶ÝV­ROŸ® mi§í“‡Ybbé‘#)))•AøùÙ-]4z´›yu‹Š*8y2kïÞ„Ð;ï\™3§Ïøñž:uô•›…U«"¦O÷ õ6­¹ ¾Ý_|©\Y·Õg®va¡¼ê“Ü£«=ž(ԫɪ‡‡§; u2AOØœ!iég/\ÈÎyDÈÝÍ}挂0¯n-åâ¥Ë·o7| €اO褉<¯5b¿Úý͘Ñ#G ŽÚñÕ®‰†Zìo ›Fg bØo¿?z”«ùØß­¿ÿsS&wk][ƒJ¥ ûí÷G¹¹ë׬¶µµ5YN;ô¶iܾ{72*zýšÕ¦579]fgŸ9wáÁÃ,…BéÒ½ûè‘#¦O›Êa·Ñw˜.¾Žk&Lƒ¥m¦Aí«m{ 5+Õc'Ndd<™8aÌèQúê´r.µíM1òi+и尓“9/²x<Çâpع¹üµk…£FùùͶå\¸ÀÊÎn¶wÿ~î®]&èf€vèIŒñž=‰!!GsrêfÌ õÍÏM›v|ÿþ»æµ=7·îܹ·Ÿ=››[Çïßw×®[ËÍÎ… 9ÙÙ5&44Ù·7E#jîëÖª%'+J•µ^x|'[^fBhM†üvôØòwß+..?öÙ‘Ïtès“C­­…{÷¿lùŠŠÊJÓ¶ˆ.>K˜i‰yO˜›ì«#NƒÚWÛ§Kk’ c¬P(~û%"*êèŸ' T3y.µ4­œäÍN'¹§J²µU>¬ùÈÎÎ&'O,^\ŽÂp[‚ ší””DH$òµÀOÞ½[¾ukì§ŸŽÝ¸qEQAlÛ6~åÊK|}út?kóiGDƒ†ååkU*¥Z­B%%UH$ªÆåf‡ 1qׇ) õ÷hX2]U˜ 3óAÖÁC‡—¿±lÉÂL†¬\þÖö/¿ÚðÇgGvqénŲ²³e2Y‹Ô#! ·~¼¹á#A½ýîûŸnûüû½{ƒ“€aÁšè\»rI©TªÕj¤˜`‘‘t¦ "‚ðñöÒâ•«›·l¿ysÔˆFöe^W—”” è×ïÍ¥KT*•i2ÛÆÛmA VLG&4ŒŠ‰ùá§Ã‹¼þö˘ïC$Iæ¬xoÕæ-[÷³‡$-ø›{ Ÿ…̴ܼ§Lƒ¨3LƒF}o3LÖäF\¼D"}iÆ gÎ/+/wé®'—Z7—Zv¦X'Y©2Èd2Í1éî.ܽ›5w.ëúuõ³Ï6–”pÿ,)¡½½•óæÑÎÎ;m²çï¿ÉÜ\¤PpÃÂsç".×€¨öƒ žüïoúøØ­Y3L*•j 7ouüxúå˹K—6ìÓÈÌ||òdVe¥ÌÏÏîÕWº1å§Ne»Èåê£G3”JêÙg=¦MóÕȉ‰)ºtéMãçžóAk4¼t)ÓÏÏÖÍÍúï¿åæÖ)ê°°Ô¹sûDG7”·¦ÓÄÄÒðð¼ª*™««pöl??»VºÈ¼ ñ?0å%ÊêßËo”(«½»9Ïë>Æ™c«Ý°ž’®º5ÇyäßÕwãêذ¯8ê#0}c¶ VùõW·ž=çÏûv†,[¼èrøÕø›7_|áùˆkQ}ûÔÕÕ]¿ºhÁëv¶¶•UU—®„WVVöèÑã¹Ð{{{MôôŒ„[·êêê'ŽïáO(.)Q*•ç/þ=94„Ãf ƒö$àìä´nõûë?Ú|/9yPPBèRxxÿÀ@w·¥¤¦ÉåòaC‡H¤Ò¨è˜I'ÄÅ'$§¤XYYMž4ÑÛËKÇQ×ccÝÝܺ?ìÙ99‘QÑ2¹Ü¿W¯É!“X,–%,j–ÎDü¯ BUU=Æë Ÿv_B¡•N¿yùù×¢jkëÜÝzN2ÙÆÆ†iݧ·¿B©¸~U¥R =j¤Ž.‰·ïäÔÔÖž<}fâøq|>_Ÿ´Æ3ÞÛL‰a=+WE_¿Áåp¦OêîÖójäµ”´4{;»¦Osrt4¦Ž`5ë»IIqñ 4Æ£F<ƒð?S· ´´!Æøà¡Ÿ‡ ôÖÒ%Ú‰áêâòÉGß[».úúaC‡¿Mæž1 €ºLøŒ4³Ež4~00|Œ¦ÁÎ1 "­Pš¦óÓ½¶2„GDøû/[´ð̹ó×¢æ½ò²æT“ƒ1.!Íb6TSíF\Ç6dˆiC¾É/'È sÌ8É›N²û·qCŠ¢¤!!ˆÇã>¹…ͺsÇfäHÞñãl±¸Û¡C6#F°’“1ÆÚ õÕá&$EEDi)÷âE¤Ré«fšÚíÇ“‰2*ª`Á‚jµR»ÜƆUUµvùòÁÌÇ‹sÆŽýãÂ…\‘HõÝw÷Fúµ @Ĝڲ%nïÞ;óæ‰TÔΟþàÁ$æÔÞ½w^zéd\\Ia¡øõ×/üüó}†K–\ ÏÇ'$”Õ—–J.^ÌU©(M¹É9’2eÊŸññ¥r9}òdÖ˜1¿%'WhœßRÿhš+Kÿ)Dc|§>gäÝŽWʼn±üPY䈻“Åy ª"Œ1®T‰ÞÏ>üfÖM¹TRõ§ªnŽKú8ª6µÍ¬ÉdwîÜ}~ÚTæ‡U >?:üòœY31Æ~üéäé³ï¯[Ÿp+Q¥Redf.ZöfxD„T&;}öÜÂeof=|È´:wáâÊU«SÒÒ”*UdTô’·–g=ÌÆ§¤¦–WTV=®ŽW”ðo‹tcJQÔð¡C¹NRræë=û¾KMO×T¸þç©SãÚÚÚ/wïÙ¶}ç·~¨©­½½ìí•·ïÞÅÿΓ­Û¾H¸•ÈG\‹zsÅ;I÷ï×Õ‰öîÿ~͇(Š2¯EÍÒ ƒˆu-ŠK¸IÄ€þý°þði÷u/é¾v¿7ââ–._q#.^"•ÿëä¢7ß*+/gšüéðïÇoüøS‰Tš_X¸iËÖ¿NŸÑÑ'-#£´´¬¶¦66>^®P¦ã±yclXÏÝû¾Ý½÷[š¦¯ÅļýÞû›·üß©3gI‚8uöìûk?P«ÕÆÔ1,ÃÞøãøŸkÖoHNI-¯¨øxëggΟ7ãØ,9—”Ì|q†\.×.§(jPp›[ÏqñÆ/ÆX_î“]$|FšÙRO? è>ÆÓ`§™µ­6Mç§{me¨««»™˜8ur¨P( yMsJß`LKÏØ¶c'3Ì1Æ¢úú­Û¾((,2mÈ7ùåİsÌ;É›NrOµI7)¬âbŒ1ÂØjÅ üQ»¤–’2ÒhL¯xøãX‡~GƒÖ±0!Gê©w¶®É9>àÍR•i’)-¾;z·=)PÔów>û(÷÷˜ ÏHdÊîÖ–ZQ^Q¡T©\]\ d"ˆðˆˆ÷Ø·¯X,^ûáÆ!ƒíØöI’J•jå{«v}³ïû½{B>3óÅÖ­¥icØøQIi™1uÜÝzê –oT=~üsØ/sçÌ^»ê}š¦óòó,}ƒÏç·ÙÌYT\‚òõñnÜP¥Rôî]PXÀ|Ô7~õåž1 ÐEÂgŒ™ã–z²“€žác<0 vôiP« 7;¦šÔÙ@ж(7´U1¡Õµ˜ë4MOœ0ž¦éIãǵ盼ü|/OOƒqJhèoGݹwoØ!¡˜ë7A<²rÕš–y}_NFxFŸsÌ>É›N{Oµ¡œÃAj5Ƙ•’ÂzøPµaC½\.‘HêiZ½z5ëÞ=T]­ik ŽL&cE"‘÷ïë«fšÚíÇ“2™!dgÇ3Pçöí²¢¢ú FH¥b‰DÂã©—/¬y7Bè•Wú …H*•ŠÅ✥R5ÆøÊ•<Š¢7oY__/‘H¼½/¿ÜW£¡FY™LFÓc¤5Ç™Þ)Æ8<üµ;ƉÅb©Túøq-A2¥íü–º¨U 1¢0-Æ íR¬`¦ˆ ÊJ7xÏ’‹¥‰„–*W{¾pOœ[­kzd–×ïzMçÉ‘D"QKùÌÉ”§K ÛÆ ¹\² Kžâåé)‰²>,(,\´àu™L&‘HÔ*Õkóþó +K$aŒøvï{+Þf¢S]]M„B¡ÀËd2Œ†ÛÃìlŒ±ˆÅbk^D¡SGûBhÞÜWX$)‘H”JåÒÅ sóòsåj7AaŒ0ƉwîH¤Ò×_ÇäsÏ=>Þ¸Á¥»³y-j–ÎDŒiš¢(Š¢hš¶µ±± þy¢¸¤¤±½Úó†¦/©Tª9NËÈ(¯¨X¼`¾D"‘H$,’|yÖ̘±ÿØ8iR7™7zõò“+|%§i)í‰Ç´_|bŒ·Ó33 Kž8~œB¡J¥ÝB¡!“K{¸º „ …1u Ë€7nÞ¢izéâELª»º¸L™Ô–3§R¥D±Ùì&Ïòx<™LŽõßìœ}¹g\t‰ðc¦ ž4~Ð7|Œ¦ÁÎ1 j›Öì˜jRg)j¸_š˜@ĵkÇZYaŒÇŽM’dĵ(lp0zz¸ûúøh ¼óìèÑ|>ß„!¯ïˉç˜}’7;윇éÝ ÊËÑĉ!N~>Bˆ½d‰ý“íÚ„\ŽbUUi*¨£ÖÚÌmdµŽˆ““!TY)i|*-­J­ÆAAÎEE‚@^^BÍfËÞ½íd2uE…´{wB¨G¡æ‡4]1© IDATšnHÜÂB±‡‡-—ÛÉõÿìÝwX×Úðwf ì²t”¦bA{ï%jb,‰ÆÄXÓ›%¹Æ\Í—ž˜›xÍ5‰1E£¦jŒ±)¢Š ¥‰ ½÷²}gÎ÷ÇàºYv‡eYñý=>>³SÎyÏ{ÎÌ2;³³Lß¾îáá™f]¥ T*vïNOL,ÉʪÉʪa˜Rk[þ¯ýƒþe8çFCîˆ ë WS+“¿ÜùüHE´P¡3úÄz‰½Éz‰¼ _SÙ_Ú½íÃW¨ª®nº(ëv6Ã0½{õO†a ¸¤Þýà#ý#O4 T×Ô:::*•ÊCG¥¦¥2¦>Gç/Á’˜+«ª†» ±dÍî¾>úÄv÷õ€²ò2“k–”–Êd2™¬qÔ1 3mÊd†ajjjîA‹Z©ƒwb``ÀÇï¿ÇMS¥Tªž^¹rë—_mþàý–¶´¬¬œ¢(o//î%×­jµºªºÚÍÕ<<ÜõÇ ÒÜeœfKÓgÌ%Ùn¶d±XÌ-âÊ‹D†/¹‡…Y²g™ÌFiY™·——P àv †aüýüΞãÏ• q¨¨¨twskº´¢¢ÒÕµñÑ&÷_Ž3c,H÷YÒLž½Ø’L6{0¹û´< v´Ã`ëcn÷÷V())MNIõöòZû¯7¹9B¡02&fÅÒ§yvF†afL›úëïûV¿üRm]ÝÕkIŸoþ˜bÅ.oس`&9í~oV'¹û×ä†Â´4¨ªÒ LØO>!wÆ+EQ,E__Ð_01¿1øˆÅ’Õ:ˆ–ÆÓ­›ƒã¹s…sç-Z¸ðè!^{öÌ´·*•F"i<*•€»tÍÝ`iüÉ !D&«T:Ã[z”JQ„w¦ÉÝ›-ïÌ·®ÒúzͤI¿ …‚^üâ‹CÃºΙ³Ï°ÒÖ|d톤¡¡ÁðµR¥  ðIðRGAã“¢¸›Ÿ}iw¸ó=U®N£Ñ×®Ôª@D ­‹§¥[yx¸wéÒåÚõëÇ3Z´aÓÛ}ú¿çq…\ÉÜ÷ø_{ù%©´q= hŠöêâ)—ËŸ}ùU¡@ðø‚ù [Ð78øµ×߀&C‚§ãàõ·ñÈÎÉ©««ëÓ'Ød§kµZÃ9ܧ•Ü"÷ñ“@w®£F%‘H¹O¼õ3¹ë!6n‘e:U'Bäò»–Q5vôèð“§ô'!M»Ïd*!vvv„µZ­ÿM]µF ܇ý`ê™Ûæ’iIi&7·$Û–—ÌýϲFGH°df;Ëd6$‰Z£1ÏþËÍ09öÀ‚ð€tŸ%ÍäÙ‹›Í¤…Öü…‡A“©¸ƒw¶µ>ævo€È˜Š¢fΘ®?!ôððˆŒŽNIMãß'O˜ðÍwß_MJÊ/(ðpw ­¯«³j—7ñÇ ð`›ämŽŽ9sº½Ãh #{ÿ}ððÐÌšlp0¨E"ù°aÜ?•V«;uŠ‘Hô[X²Žå«ÝaŸz*ä?Ò³³k çGEå••)fÌè ={ºÀ¥K¥ú¥/;:Š»vuà)90Ð¥¸¸>'çn±.[˜u•&&–6üõ×ã/½:bD@SW§¶¼Ò{,XÒ D:j˜} ÷O«Öœ*¹,¡ÄFk&ÔeÜ®¿Aï{$!dÖŒé‘Q…Eÿè¾ÄË—«ª«ÇŒ2~€¾_î Ð}ûsÿ´Zíùøx;;»”´´òòò­Ÿ}úøüyýûö%„44˜¸˜ÏSB³Ñ²,ûý®Ý..ÎcFÝ}&žáüvvŽáú7’S ¦“@ÿœ=#¾>ÝJe~~~οÞÚø|ØÖ-²‰û« !yùÜ-‘ÀÛ}MqÝ—šž®Ÿ“’š&•J==<š­×V¥Y’mÛÆiŽ…eÄ×ǧ¢¢¢¨ønðÉ)÷ô>,‰½ýô©S:\RRj´è‡]?êtºGfÏâ^šÜ[¹»= ÝgI3[™Év?îÁÃ`G; ¶¾–Ž0Æ"££‡„…­\¶tùÓK¸ëV¿JÓttl,ÿÎèîî60$äÜùø˜3ggÏ|ˆÑé¬ÝåMüq²ÿÀŸ<Éi÷ƒ|³è•Ï­^ùÜêöãH˥шÃÃÅááâãÇíwír™5KtæŒnǵ@@Ñ‘‘#%72yyZ­–½}Ûá•W¹¹w/ó®ÓøÑ‚N×ìj- »£erݺ¡^^²Ç;rút®NÇj4Lddîš5Ñ~~΋Búõs>¼Û;ïœ/.n „$$íÜy}éÒÜ—"ŒêÕ߬;s¦¿——Ú5ÑUUJ–%û÷ß<}: >4̉NÇÍ·®Rww)dd”ªT*µZ³cǵôôJµZg˜|+Rdõ†¤ÉÃi !ú+Av^#]‚7fÿ’'/Ójµ·Š_¹õC®º‚eÙ»—T €o‹#.Ôß"„d(Š>È;0Ém@€ØóžµbÉâ'ÜÝÜÖÿ{ã…ÄK ÃhµÚ‹—.mùb[·®]§M™bT²¯ÏÀ¯¾ù¶¸¤D«ÕnþlKIi)˲Üóë³srT*•F£9ð×_9¹¹V÷é)O M[¤ÕhÎÅÅŸ‹‹?wøØñ×Ö½qùêÕM6ÐÜ5wB\\\Î'$pOØ;þ÷‰Ì¬,b0:œœ’JÉÍËûþÇÝÆ éÖµ«ašôÓaƒùúø|ù͹\N‰ˆŒºš”ÄÛ°EÍê|Hjkkïtbü™³g·üo[\BÂü¹sIsÝgømdn:Àß?¤¿ßﬨ¬$„ÜHN9täèœÙ³ô‡ô¦Ù4‘dB¸Zš-Í\_4›íÅÙäp®Ólg™ÌÆè‘#ÜÜ\·|±­¶®ŽeوȨ ‰‰÷òÈɲì«/¾ “ÉÖ®3öÜyFC),*útËý}bõ+/»»¹óû/ÏØ³p< Ý×l3­Ë¤…ëßUñ0ØYƒÄàÖº˜Ûý½5ãܼ֭üiS'+ ØÛÙ <8æLìÈáÃxvF†a¦M“’–6cÚTbí.oò“!!<ɱùAÞæ„„­F#n§µL²²µ55ÎË—7– “‘áõ'OÖ‡†²Zî6Qz×.»yó<†e<=eeìСš-[ G$ÿ:lâ­[Ý&N¬:z”¿¨ŽÃŠ(J¾èÙgß|ò¸PHB†„…yïÙóM3\–¶ohÞ¼aa?¹ºÚWV*§N Ø´i!Z}¥YmœCÓì·ßÎ^²äP¿~»D4MmÜ8öë¯/ÝÙßîFÛ£‡ÓÖ­‰'î;ztž~¾u•††v™3§÷SO r©¬T âýè£Á{÷&ûú:<ûì«SÔš 1Þ°1@t:Ý®~¯ÌKÚ<4éMO‘s™¶v¨SÏ-½—µñ5 ¼FÍOûL*°«Õ)ü$ž[{¯Ôét÷²_}ñß÷?þdã;ï B˲}z÷þàÝÿ£ôÞéN÷îÛ×þëÍ%+V¹ººVUUõï×wÝk¯Bz÷ê5qü¸ï¼×Ý×§¦¶®oŸàIÆûûï.]<çÍyÄÛËëç¨èç^~å‹Ïþc®ã¶Ô74¼ûáGÜK©TÒ¿_¿o¾ü_¯  îþ(X¾dɧ[þûä²B¡ÐÉÑqác ²srôEM™4é·þmooßÐÐе«÷k×è{÷€{Sù¿o­kã‚ÅOÉduµu+—/[¸`~Jjª [d¡ÎÔ‰p;;G߉À×Çgýëëf͘®ÑhxºÏ°.Ãé·Öÿëõõ/]îääT[[;røðUË—ÔkðæÚØ·fo{ÓétÍ”fþ­š?ÛÍ—|'0ƒ?H Žœ@,Y‡¿³Ìeƒ¢¨·ßÚ°ñw[ü”D"¡iú™Ë÷8p/‡«H$Ú¹cûÇŸ}þþÇŸP%‰4«‹Ë»›6Nž8»ÑÌcÏ¢ð€t_³Í´"“-8´î/]< Â}~lY-¦bnnˆ¶XK7Œ:+‰ÆŒi¸!Ã0S&M¼xéÒÕ¤$þqüØ1_|ùUØ AÜw}­ÛåMþqÒ¿__žäØü os¹s¦Jáž®t>þÒÒ¥Ky¶Ù»wïÞZãÌÞ½3fÌhéVR©ÔÞÞ^ÿ’²J¥Òð/xš¦%aB).†À@ÝàÁõõõ„•JŽۙ[$B¡46–hµÕcÇR"‘¹ÕZääÉ“-“@Ó´ƒƒCvvÝe C‚ƒÝû÷w—ËåúNX,=¾ ¬Lì>p GCC×|Ãd€D"‰DܳE"‘V+<{6aÈøñ=(;;»ššÐjÅB!CQ …v±±…Z-3vl–µÓÏ·®R™LvùrYnnMŸ>ýû»×Õ©£¢ò‚ƒ}}%F[YîäÉ“`Ene2MÓFÏdÎÎÎõõõZ­–¦i‰LšP›Q¬®”z– ÑÏFó­«T¿ Ã0\&[d¹S§N@ÛRžq•§­‘ôVÄ€ÿ(éÁýlw µ´¾ü#Ĉ¹FñôŽÍw7ð !ú ­PRZ¶ì™g·oû¢WPObMHŠ¢tº»O »—-z;Ñd÷q ë2œ¶î¸aNkJk‹ƒjKYw<4wèn‘ÖWš¦…B! !Kö_[=èìÝ×ì1¡¥™l£#¹ Ýï‡A›ÔÒÞ[Íié±Ôê]¾é'sɱáAÞægªBؼsç§»vYV[hÓ+Îúƒ…ëphµ¨¨öÕšLêt:žœbEó !F9äíuúuŒæ[W©á¡Ü\Vh»QÊÓFýía­<Ù6*Ð:ü#Ĉ¹FñôNín¦Ã¾s£b-÷¾ET'òl®^ëŽæ´¦´¶8¨¶”uÇÃrä4»{Z°ÿ¶é؃NÔ}ÍZÚÌ{ó‡›Öu?mRKGxoå)³EÇR«wysI07߆y›£Û;„¥\…²w{>ÑU|ÿloäääøÂ³Ïx¸»·w ¡Ãý!„:«Nõ{ªÈf²í´Kn)»ÕÞ³T*ÛÜÏs[GG"‘,^ø¸ {/a'¢ûH[ ×ûzÿE6‡Ads8¨:‚õWÈæpPY‡Ë›Z¡°yÉîLµ{PÐÍ›7{÷îݹLJZ­ÎÈÈð l»*LÞK†½vÿæ¶s´â‡ˆî#8\Q[Àq…l•uôyËJN¶yáîLµ_hh:ÀÕë×Û⼼㰓J{ö ­k³*LÞKú^€û7·£8ìDtÁáŠÚŽ+ds8¨¬£Ï[[œ©RÜ7†)Š"„dÝJ€óñ—–.]ʳÍÞ½{m‡MÓ¡¡¡Ò¶¼3¶Ý)ŠÛ·o_»v­í~©üÉ佤ï5¸sÛ9Zñ€ÃND÷®¨-à¸B6‡ƒÊ:†'5&LàfÞHImºæ€þý¸ ???ž÷îÝ;fÔPˆ9mÍ™*B!„B!¤—››ËMØêLŸý‹B!„B¨cÁ3U„B!„B W®\iï0B!„B¡F4,\¸°½Ã@!„B!„Ñ ÀG0#„B!„ê0hؽ{w{‡B!„B5¢`úôéíB!„B!ÔŸý‹B!„B¨cÁ3U„B!„B ž©"„B!„êXðL!„B!„PÇ‚gª!„B!„:½½Ã@!„B!„ ·üçƒöŽ!„B!„º‹~}ýÛ¯¯»½Ã@!„B!„ ³n¥¶w !„B!„Ð]Âö!„P‡³ys~NŽzÙ².£F9Î×éÈÚµ·µZòÎ;=ºv·Wx­ñý÷%eeÚ»Î,(Pøaþ+¯t q°I-gÏÖ9RõÙg6)mß¾òèèZnš¢@&„…9ÌŸïaoOë×Y·îö¼yîãÆ9Û¤FCmW2B!ăn~„B˜˜˜Ú#G*÷ì)3šî\ÝŸV9RY[Ë´K`–ûþû’/¿,j:ÿâÅúè裙µµÌ‘#•ÅÅZ[Õž­¯²UiׯËOž¬ )¡¢iÈÎV½õVÎäÉ7òóÕúuÂë²³Õ<…´ˆaöl[2B!d!¼¦ŠBÈ//ñéÓÕJ%+‘ÜýLóÈ‘J//qi©¦³PR’\.ïè§Ó–sr|õUþef¦ráÂô^È0Ð>%EÞ¢žerìXÕ•+ 4MéÈõ B!d9¼û!„ "5s¦Û‘#woa=w®N­f§Nm]c²Xž®œ1ãF\\]E…vÓ¦ÜE‹Ò†e+¹E=K¬X‘ñÆÙ%%š¬,å3ÏÜúøãüµ!„Âkª!„L›3ÇmåÊ[ ŒL&€#G*§NuánÖhØM›rzÈõ›oz TU•nöìäO?-x饮_]tî\ÝĉÎpüxÌŸï>o^ÚÈ‘N?üÐK$¢ vÑ¢´õë³ÿþ;ŠŠ4§N…ØÙÑiiŠ)Sn¨ÕìÑ£ýi&MrYµ*#?_íïo¿zõms›;V3ÐËKO>™~ìXÕÊ•Þÿ÷=ÊÊ´r9óã½›¶«°P³fM–áœêêÆ;] žº~ø¡ä©§ºpÏIÒjÉèÑ×Nž¬ q()Ñ|öYÁŠ^}äiiŠY³R¤RºÙàÏ?+ì&kiïˆD”¸°Ðô7HõÅ‹¥›  ¾žY¿>{ٲưSRÓ§ß8}ºÆdöæÏw·¼g¿ü2èôéšß~ë3a‚3lÞœð`å¿ÿÝÝd¨!„IxM!„iãÆ9K¥ô©SÕpçÖßGi¼øÊ•†ÂBÍÚµ>nnÂå˽ޝêÛW,9z´’[íСÊéÓ]‹‹5™™Êµk}¸»p¥RúÅ»&%Ékjt0{¶› ½zI`î\šèÕË 6%Eγù£ºq§©Ð¿¿ƒBÁ6Û.–%µµŒá?ƒïdòÕuà@ß>ðãÖÔhXŠ¢är""jX–¼ùfã™Xß¾ÒGu³¤@˜;×ÝŠÓTŽHDé/rÑË@LLm}=óÚk>Ü&ýûK·l Ôßnm¤E=Ë=pëÒ¥z†€ º_¼j]B=°ðš*B!Ó„BjÖ,·Ã‡«æÏ÷8{¶V£a§Nu¹~]ùùjŠ‚ž=%ú•{÷–¨TlY™vÞ<ñ„'Ou–÷¬““àµ×º}ñEÑ7ß,›2Åeñâ.†ùA!„š…gª!„Ìš3ÇmÉ’›uuÌÑ£US§ºêÀÓÎŽ&t:¢X÷uPŽÌë¾ys~\\Ý­[JOOÑĉ.'NTÀ¦Mݹ»ˆõ¸Çÿ4‹; 2·9mÓ{ƒxꪯg¦M»!R+Vx=ý´WHˆtÉ’›ÜR©”æÎÐô¸k‰Í”µOÕMKSÔÔèÌ]ÕË€TJ3-y:r‹zvÆîÏ>ë}útM||Ý_íÚUzúôGG¾^£aû÷wðók¼ìi˜½šOç m IDATÉ<…ߺ¥ÌÈPŠÅÔÀæ)ŒB¨ÓÈÍÍå&n¤¤6]: ãGŸ~~|×îÝ»w̨¡sšÚõÝÿ`ås«ñL!„B!„l~¦Šwÿ"„B!„êXèÌŒ”ÌŒ”ö!„B!„jdÓß¡C!„B!„Z ÏTB!„Bu,ÂæWi*×ÖQ „B!„Bwà5U„B!„B‹06æt{Ç€B!„BÝ…¿RƒB!„B¨cîúîКóÕk·þÈ,Šå¦) Ä"ÐA ö¶‰±-E]ù¼ª>wXð?ï†óY¢;|î_ «›>t£“ƒw{…× ©»”åS‡¼i8³¶¡0âòæ±^ðvëo“ZnOÉ9öÈèOlRš%céÈù7Cævc“ µ]É÷˜…R'/‰Kù®¤2E¥©s‘ùöé1}PÏù%¸7A¶Ò…´Ýùe—M. x¸OæzóXüÆ>=¦õô™È_~JÎñ´Üú—Pöî>žƒBéø)úëì:†Õ€Ÿ×°ÜÒDÕo•gh{Ç…B!ÔôÊçV·ò²jQeòͼšÒ”¢èªºœã ›¾9üPMC­¢l;™…±)ÙÇoþl4?»(îzÖ¡”ìc*M]»f¹„Ô]ç®oo:?¯ôRfᣙJMmJö±:y©­j¯ªÏIË=i«Ò,K©¹WÕçØªFÃìÙ¤dsÝq/YÒ)Å•É_ý5%«06°Û¸°^ ¥öîÇ6ý±ŒöÞÙJ4Esㄦ„™…g ʯê_R@Ã?{Ó°SÒóNUÔÞn¶üÒªôÔœp}™@QåWÆ®ýåôJÒfÍ2­¥ƒ*%ç8!L—`'i×..Á)ÙÇjåÅmB!„P[B€¢¨Ö”b'vœ?~«þeEmÖÞ“KļòÌôªä{ÀQê•‘¥Õ)EB‰~fJÎqG©W½Âfgtm§¨â†F'oï(l¦Ù±ôæâ«e³'fÏ&%ß/Ýsm«£Ôó¹GŽê‡}?ÿ‡~‰X‘QÜ}jûÆf‰a}–ë³”›Þ~hF×Þ†ÃþÙ›Öu M Ê<cÇéËŸæ”\ð÷imàÖ°"þàîÓÍ€àÓ¢¯ni›¸B!„Ú0ëVªÍ õpš9âÿöG¿”S’àï=Š›Y'/¹–y NQìêØ#4hƒÄR²uó Õ©“²þdM@×ÑÁ=¦éËáÙ¤NQšš.Ø îý„»“ÿõ¬Ãùe—ì݇?é(õâ6/¯ÉHÎ>*WVº9„õzLbçj2Ú€®£3ò#3 ¢úûÏææ°D—žwj`àÜ i»Í•‘IÓž>ôå¤ç %AÝÆµ2ì%êfþéêú\£¾’±oPÏùZÔ¢ž2Y§ üÊ­‚h¹ªÊQêðˆ»S€~QvqÜÍüÓ„°MOi̘œ}ÄÇ#T¡ªJÊ:81tÔÞÍÂ›Ž¥œ’ îNN]MËÓ¢’ªÔäì£Z¢«[ÈÀžóhJh”½¼ÒDw§€’ªÔõ¬¡¦Ýa.ùe—SsÂ`@à\±HZ^s«¯ßCÍ.â À\§È•7ó#»wìéÒËp~emvW÷†ŸÎôô™Øm¬R]I™vï2ÄÍÉŸ[”WzI«SùŒWkR²œs3ÿtnéE{‘ãÀ ¹ž.½€g‘å=E“’^X~¢h?¯áÜ 79³YúqbÔ)F«5Û§†zúL8}ùÓêú<îLÕä¶üyà¯Ñäh1ŠŸ¦h+²B!tß¡ƒzõ êÕÏæåwŸ&ˆ³‹ã¸—…IÛM»žuP¥©KLÛûõ¡iÅ•Éqyó¹;~‹\¥T×–ÕÜú=깋i{šÝäxüÛÇã71¬6%ûØÇæþõüÅ´Ý„°Ó÷î>±ˆ%:¸™±ãÈì´ÜSJMM|Ê÷Ûͨm(4ª€÷ñ›‘’}L?'»(NǨ{uŸÌ½4YT^Ù¥ƒ±k¸º@¥©=óJyÍ­V†ÝÒDå–\¬•×+ËÒóN±¬¶E}d®.¸œñÛÎã rK.juŠäÛG¾9üPIU ·(.ù»½'ŸÊ-¹PÓ¿/ú…Ë7³¤ÀS‰Ÿ\HÛ½ûÄQ:FÓ¢8ÆÒ1¯dD™,–'€äì£ß}$§8¾AYñ÷Å÷öž\Bc”=®ä–ö¬!£Í¥ñê­ý»Â/(¿ZÝ¿÷ä“'/~}µñÚÏ"žx:¥².çh܆ìâx£P=œƒnD§ç"„ÑÏ|zúO¡=€ã ÿ—WvI?ÿZæøÔ WVÛp0vÍÉ‹4(Ê’³î82ûvÑyþE÷ù-ò¹£qoÕ)J*joï‹~1òòÌÌlž~œðì#–ô©¡ê†<.u<ÛòçÁŠÎ0~†ÑZ— „B¡ûŽ°Ê¥i¡³C·Ú†" ‡Î¾îç=bѤ4-Ôê{O.9ÿïg>©9¿<ï”LÒ~ŽX–š>¼ï2þMjåÅÏÏ9&Ø•UßüæðC:F½jöAŠ¢{úNØõBM}³C·¿/¼Û§Ç´Ç&|IQ…ªú‡ãs£®~>oÜV“Ñö÷Ÿ½/êyV.9@JÎñ^¾“D 0¬ÚdQ£Cž?cGvQ\ÏxHÍ9çþø÷B«Ãvsòki¢¦ûwƒ²\£“?1ù»¦íªm(:tî Ã9ܳf;åBêƒ{?Á=’‡euÛþœžáíÖ¿^Q}õ¿Ãû.9â=(«¾ùý±GEBi³Àõ¬CËgîóñÔº±dÌ XòÓ©%&PkŽÅý{hð’Y#߀’ªÔo<œ‘e2{miÏêh2nŽþ—>ÕÕôa  üêÎã ¸ ž­ÜÜ"žôòv tqíýÔ´ÝFT`êÐ ¿D,ßõ¼ƒ½{`·±]ÇùŒ×_ØçWVsóÅGOJí]uŒê§SKO\|ÿÅGÿæYÄÝ…ÛlOÍ·õVAÔ’é{ƒº€¨+Ÿ_¿}hPÏMgN²Þ’8MvŠfF,!lröQýtMCÁÅ´=Ãû.íÞeH³ÛšÉeÅNgEmV+³B!t¿°Ù÷ýšÐ"–0PR•ZQ›5aÐk4-‘P::ä¹¢ŠÜYSHÀÃÜÙx»õÓè”ÍnÒÏÿ!¡À<\‚`@ÀîOaçž Ñ) *®ÕÊ‹& ZÍ=¥Sjï:¬ÏÓÜ)‡IÝÆˆ„Ò›ùpçÖßþþs‹ ÊMååÚÇÓ¥wJN8·ZröÑÞݧÖ)Š[¶‰âG£ÒÔþÓh¿íÆ_ײ‡~›9ânM£ŠÒh‘ÅfrXãÙo×àþ[R „§iÁàÞ‹-ÙÖd¬Ûé µ]6B!„l¥é#¬{(’5×T÷žÙ«Ÿ^:a©¹Õ”åÜ׫êr௳ëô¿î cT WU÷…C#ü›è¯qŒ^@M}>ÅݤÇñté¥cT Êr™Ä³iu4%ìë7#9ûØ€À¹·‹ÎëMï*’ ¦ÁlQçħì|xô‡ UuNI“SheØV$ŠŸ‹cw£ëH%U©ß™Í_—ÄÎ…¦èÄôŸ ʯVÖeWÖfëo…­nÈwvð±;ê ì✑Õlà,3>Y²œ~,5¥/–'€ªú\;±£þ<Âz-ä©®E=˵Î$“i¬®Ïs°w·;ëWsw ªW”ó/â €§SøÑ´°w÷ɽ»O檾˜¶'!u—½ØqÖÈ÷ù74üÖ¥—k_¨nÈïâln‘—[_° §ìÅŽã¾›ôU\ò÷¾ža½|'†õZèîÐt¦½Ø©ÙÖ5«Ù>Ä›ž¾©_¿AY¶?úåß"ŸY½ –g[š™ËËêxj4·ÓjM6 Û!„B67aBãs^ìíí•Ê\üØ[óó¥VÞýËs‚Ê)«¾©T×p—P¸ëS‡n°É ×q’vÓ/5¿I³„;°ZîÚp¿.Èý¥hRÿ‡=½B¥©KÍ ïÝ}²þ‘Ú»öé1<]z€X(õ÷Éý£)AvqœXd|QQÏŠM ¹;@Aùýœ‚²+b‘Ï×𺎴;¥æ„§çÒ?ÜÍå"ëîë985'<ùöÑО (ŠneحܼExêÊ/»T'/~rê£ú?Ðu´ÄÎE­ià¶rsò¯W”V×çêËÉ/»Ò¦Á%ëZäæä¯ÑÊ+j³ô+ï=ùT\²‰oörlÒ³æÒèî ÒÔVÕåè×,ª¼ÁMð,âo¹N1Gjïz»èüÍüÓM–;qã9Ë޽ݺ¬:Ãp¥¼ÒDýtnéE¸³Çñ/Ò3×–ŠÚ¬3IÛ$vΡ=›;öó•³þ¨i(HHÝÕt¦a-V³¢O¹ç‡3¬¶ÙmMæÁºÎPQÅ6ÊB!„­8:Êü{ôJ$4MK%¿Ž2k®1ØæL•a4éy§ÒóN¥çLLÿiçñ·‹ÏÏý)÷Î=}=ŸLü°^Q5 ‡Îý«º>Ÿ§@+61äíÖßÇ3ôdâGÜ¢æ•^JLÿ)¬çã<—%)JÐ×fä•ÏVÛËw’…E |49ûhAùÕО·>l«77<©h}]± Ô4!lBꮊÚLî2]ŸÓdÃçßTª«Èõ¬¿2 Ï´2x#ücɺvãêèžðŽZÛ׳þÊ.ŽÓ_¤5™½Öô,W ¹4öôè"ó=žð¶F+ ‰é?•T¥r·îó,â €§S ²öö3¯f5ŒÐ^ìðð™¤mIYµ:h´ŠÄôŸÒóN éý$8Ø»eäŸæn@½’ñ{iuºáæÒvç—]€ŠÚÌÓ—ÿÐu´þ×wx5ÛSZ"æêÖ«·p«å—];·¦3]d¾&3Ï£i/[1bEB;++›ÝÖd¬Ûé ã7™"+²B!Ô¦eAýûö °î4lõì_•¦n_ÔóÜ´XäàëºlƯ=¼†éWX0á‹_"V|q`œLâQ¯(÷ñ4kä»üeZ±‰¡9£?ýõôŠ­Œ–ع(TUAÝÆMü/þMBü¾”þsHàî¹G–ððÉÄü¼†¹9ùÙ$l+6w‘ùžOÞñÍá‡VÍú“{vq+ëòñÔ§Çôß"Ÿõp”«*}<õñ›q%c¿›£ÿˆ~+ûŸ1¯~öûP±PJQôøA¯^LÛk“¶sšKV´ˆ¦„óÆ}þ{Ôsÿù-L"vV¨«Ç |ÅÏ{ü3{†EYݳúWÎ:`.Žýl_ÔóŸþ*Je>ƒæ•×Ü-2·ˆ'¡Àž§S䪪”ìc=º ãž«÷ð¨„ûÃçÖ:û†H(Ñê”h쀇÷]c¾t<þí­ûG h‘½óð¾K ¯H÷ó›µûÄb±ÐA¥©u‘ùÎõ¡%‹ší){±sX¯EGã6D^ùTšúIa¯í³¤¨2ÙhfÓGó3×Ë-±îNÔ…´=~Þ#ø·5—ëv:Ãø›¦¨¥Ù@!„º/P„ (Š’u+ÎÇ_Zº”ïM{÷îµâ+O,Ñå•^jP–»:ö°ð°Vlbˆa4¹¥åªJw§ÀnZº¹ÕEµ2ì–nβºÌÂ3,Ñõî>EÿÀÖ×UP~¥¦¡ÐÓ¹§—[_µ¶!³ðŒ·[?îú˜JS›S’@ëï=’»Òêà­ WUÚ‰ô_$¶¼E­"·4AÇh¼Ýú¹:öh\ß {Ju-OÉü…ß]çŸÝÑ4^®ÁNÒn «É)‰ %]ÇŒ]ÃÝ¢I;a´:µÉEÍÀÓ)<ªª‚òkÜIÚµ‹koÃgóT×çW¦Ø‹ý½G迤]U—ûåÁ‰Ï>|D&ñÈ/»l'vô÷É}²Ã³¨Eɬ¨Í,¯¹% Å]ÝCô·ë›œÉÏpœðì#­±&·m6VìtFñ7› ž3úÓAs¹—ïíx|âö~þ3[Ô:„B!Ëí=³WÿD%~~~~|åìÝ;fÔPˆ9-œ?þwß™ýž Ñ”Ðß{d[obH vkõæVÕʰ[º9M {wŸbóº|=ûzæ¦íD2ÃïîÚ‹ûô˜ÑÒmÅÁÞg)Ob‘´—ïdãõ ²Ç_2á& Si¬“—|òKý™C½¢äVaÌ´¡o@½¢|ë£L.j6žNá!µwãžýÛ”«£Ÿ«£Ù㈓CWÃß±p‘!smñpîÉýnS³3ùö&Ï>Қ˿­¹³0¶½cA!„²†ð£>êß¿{‡ÐdÊõ!ä—]Ö2ÊÁ½žèé;^K*Ï¢Ž@jï2)ìu'wœò,z t„<<<ê#î LnN~2I—Оµòë!„B÷žÐÙÙY ´w=X¼Üúz¹õmé¢vg/v?è•–.z t„<^‡oë»ñB!„Ú]YYÉ0-þ„B!„B¨Ÿ{î¹öŽáXÂ^;š]š­Ð(Ú;–6$K½CBió?ñÚJH&ï%}¯æö>…ˆl•uîÁû B¡ûšp„ þùgó+Þ+×r®U3Õ3™éàЂŸ½ïÈåòøøøk9× n£*LÞKú^Ìí} ;Ù*ë܃÷A„B÷5᫯¾úꫯRÕÞ‘4Ê*ÉšùðL±X¬ÑhÚ;–6$‹GŽyâØ‰¶{‡~@2y/é{ÁÜÞ§°‘Íá ²Î=xD!t_ë@å(5J±X̲l{Ò¶!b±¸Mï{@2y/öæö>…ˆl•uîÁû B¡ûZ‡;S€ämžÒÖU< ™¼—ô½†¹½a'"›ÃAe{ð>ˆBèþÕÏTñ­ËV0“msÛ `'"›ÃA…BÙ ž©vf˜É¶ƒ¹í°‘Íá B!„lÏT;3ÌdÛÁÜvØ‰ÈæpP!„B¶‚gªf²í`n;ìDds8¨B![Á3ÕÎ 3Ùv0·v"²9T!„­t’3UÑÏ? ##_P‘ɘ!C´ ‚DÒì¶ökÖèfÏÖM›ÖÒJ;>«ÿfJL,Þ½ûÆåE¹¬Z5hÌÛÆ“wð`ƶmSà•WN=öXŸ‰{­cn¾M¬Y9{vдiþÖmnunSRÓŽ?ž™u›¢À×ÇwÞœG `]Q¶~âäÅÄK/(J*•ôëÓgÚ”Évvv­)öó­ÿ;fÔÈáÃ`óç[¦Nž4tpÇúÕÄÎÔ‰{ùõöílýK{‰}ŸÞ½š1ݾuØZ­vï/¿ÞÎÎ^¿n­³³³ÕåðgÛp˜u­9SÝwà@ZÚÍ©“'3ÚÜ:—®\‰Š9³~ÝZ«ki#60„B÷/º½0´œ0)I.°³ØÙ D"av¶äõ×e£GS¹¹Ín+:~\™ÙìjâíÛÅ[¶X˜IBÈ_$Nú{VVíœ9ÁÓ¦ææÖÍšµûö+¶m{vvíÑ£i?r$3;»–›Þ¾ýÊ–-›Î·¹ãdz23«­Ø°5¹ýå÷}/¼úZaaÑÄñãFQ\RüÊÚuûüi]i&í?ðçO¿þÖ¢M223ÏÆÅ‰Ä"‘X$ ‹Š¶üoÛ²gŸ+..iM$gãÎçrÓgbÏ[WŽ-jVçëÄkIIW’’ît¢° °ð¿Û¾|uíë ÃX^—mSýç¡Ã¿îÛ(‰¬.¤Ùl³öÕšAEQ«Õ?îý)2&æ÷?ð¬VTT{îœÕµ´«kë÷A„B÷¯NrM•¢(pvÖìÚ¥)Ì̤§O—®XQÅ¿-EQÍV*¼v’ËU÷ÕÛª™¼r¥ô½÷οóÎø·ÞÍ0 EQ~8ñå—O¼ýöÙÙ³ƒºww´]tE5FXZúºV«Ñé´píZ™\®m:ßæ( ,éws¬Ø0ýfÆw;w½ðì3+—-årûò ÏòÙçÛ¿û~ܘ1^^]¬‹ÄHFf¦R©lQxP2™ì½·75¾¤¨ü‚‚_]ý·}³í Šw÷á/XŸáèS'4N§³¢+Zd¡ÎÔ‰@Qþ~†xêtä¦wß‹¿paôÈ‘ÖeÛT èßÿ¹U+µZ­ueZ–m‹à÷ŒÕ‘œ‹‹—Ësçžo¬]½þß›®&%… '""Búõóõi¼ üFrŠJ¥6tˆ\¡ˆ9;eò¤¸ø„¤7¦O™ìïçg”¨³çÏûúøt¹³›dfeEÅœQªT½{öœ>uŠ@ h‹5«³u"ùG'•„sÝgX—Læ`ToNnndtLMM­¯O·™3¦;99q›G9Ó§WoµF}2â´V«:fô(£X/]ÎÉË«®©9xèðä‰$‰¹ÒšfÌòlßmú®´.æöTœˆÈ¨àÞ½ŸY¾ìðÑc‘Ñ1‹>®_tåÚµ¸ø–Ñ#Gi>^¥Vó”f”±e›üs˜Ysû*Nmmí…ÄęӧÉd²ÐA#£¢õ‹~ÛÿǺõ’n$—–•½ýÞ‡ãjIIMûpó§:Ž[­®¾þ½?ÎË/07®ø“`r¯äO޹À¬ËB!Ô”¸»0;+ÞºL¾çiH÷î‚ÂBBâðÒKdüxí￳@¥Íœé°n]MDÑl~í'Ÿ+* ¡A»oQ(Ì­f³ØHK3™Ÿ_¯V3=zÈŒ6$„ÔÕÕqÓ ³aCìœ9½úéQŠ"ÕÕš±cwüqÂöíS€¢¨Ã‡3“’žõð°§iú˜¦ê=IDATÑGÿ8zôö3Ï ,.–oÞ|ᥗ†þ÷¿SY–MO¯=z·ƒƒˆ«ˆ¢(Š¢ !Ÿ|2©¢BÕРٷožR©ÔÏ·®Røî»ë«V…}õÕt–eY–ê×oljÙxpîÝ5ÕÒ²2VëíåÅ“[ ¨ˆÈÈï·Õ¯o߆††×ß|kÈà°Í~@Ó´F«}ùµ5[þ÷å7Û¾€?ž÷èœ o¼Î²,!dþ¢Åq =ƒ_{ù¥šÚ:¥RñéG*ŠO>Ûb®„Ä`ªE„oo¯²òò;}4EëסiÚðeNn÷:Êd:îÕµ¯½ãÛ¾Ù~§Â5¦)BˆB¡øïÿ¶=6Þk×°,{;;û©å+ã.ضEêLÙ¹¹}ú.ž²òŠ´ôôMÞ ð÷gÆ\÷ÖEyï£O¸éººº/·ï˜8~üGï½õ ËŸynçî=oýë  (êÌÙsûùÉÅÙ™¦é5o¬?{îü¼9óìÊuõõùÿýϧü¥fL.—³,Û‚lßG´Z­1BÚwPq¢cϲ,;yÒD–e§LœøùÿËÉÍõëÑ£¢²òǽ?-zlÁëkV³,›“›»tÕ³‰„2cÚ´_~ßwùêÕaC†@ìÙs@QM›úòšu&ÇOÌí•£GŽ0—žÀ¬ËB!Ô ïv«?”51_$Ž"¸qCpë–vÆz•J.—׳¬níZÁÕ«PU¥ß–g¥RɽëËårúúus«YvÇɤR©;žu.]*)(¨ß°a¤BÑ —Ëíìt/¼0Xÿl$X¸°¯L …¢¡¡aÀO…BG9u*‡aØM›FÕ××Ëåréã÷ÕG¨V©T²,! þ`µ¾RBHDÄS›7OhhhP(••5E)•Œaò[š"«7T©Ôà(“ñ—<}ÚT¿=êêê2nÝÊËÏ_¾ôi¥R)—ËuZíS‹Ÿ¸™‘QWWGùö«m¯½ô"×®ªª*Š¢Ôj5!D©TÒ8Poefò”`I‹¡þyt¨ÌÁ2~욦#£c! .²,»jÅrnñöòš>u WKî¾úFÇÆŽ3F"‘˜W¢éÆ[ô5 T×Ô:::*•ÊCG¥¦¥2¬‰vñ—`IÌ•UUÃ]†X²fw_rçÞ„î¾¾PV^frÍ’ÒR™L&“5öÃ0Ó¦Lf¦¦¦æ´¨•:x'|üþ{Ü4EQJ¥êé•+·~ùÕæÞoiKËÊÊ)Šòöòâ^rݪV««ª«Ý\]ÀÃÃ]¿ÇS‘·¨4}Æ Y˜íVÆÜîƒ JJJ“SR½½¼ÖþëMnŽP(ŒŒ‰Y±ôéÒ²2o//¡@Àí_ Ãøûù=ÇMϘ6õ×ß÷­~ù¥Úºº«×’>ßü1!„\™L‚¹½2&ö,˜IO`!„­tª'*m(LKƒª*ÝàÁ„€ýär犢XŠ"¾¾ ¿ìc~bðy¹%«u-§[7Çsç çÎ 2Z´páÑ!C¼öì™io/$T*DÒ8xT*-wéš»MÔøcrBˆL&V©t¬ÁßLJ¥Æ(Â;Óäî-£wæ[Wi}½fҤ߅BÁ / ~ñÅ¡aa]çÌÙgXik>Ñoé†î]ºt¹výúÄñãŒmØôvŸ>Áïßyj+W2÷8“×^~ÉA*m\š¢½ºxÊåòg_~U(<¾`þÂÇô ~íõ7 I2yJ0ÞÔ£P²srêêêúô 6™.­Vk8‡»hÃ-RqÜ„pç:ªaT‰”»ð§Ÿ©V« …[d™NÕ‰„¹üîÇLE=:üä)ý‡M»Ïd*!vvv„µZ­ÿM]µF Ü5O®ð¦{œÉ¤YRšÉÍ[’mëcn÷A‘11EÍœ1]Bèáá’š&‘HÔá‘S­Vëk™l÷O¥ÕêNb$ý–¬cùj÷#Bاž ùãôììZÃùQQyeeŠ3z@Ïž.péR©~éŋŎŽâ®]xJ t).®Ïɹ[ì… Å–f]¥‰‰%…… ýõøK/…ŽÑE ÐÔÕ©-¯Ô¶!³fLˆŒ*,úGÃ/_®ª®3ÊøwDüzt€îÛ'˜û§ÕjÏÇÇÛÙÙ¥¤¥•——oýìÓÇçÏëß·/!¤¡ÁÄepžš–eÙïwívqq3êî£A ÿ½c¸þäƒédÐ?nÔˆ¯O7…R™Ÿ_ Ÿó¯·6þß¶u‹lâþêDBH^~AOî%O÷5Åu_jzº~NJjšT*õôðh¶^[•ÖÒl[WK»*ˆŒŽ¶rÙÒåO/áþ­[ý*MÓѱ±¾>>EÅw3œ’ªŸvwwrî||Ì™³³g>ÄètŽ+#&÷ÊýþäI`!„MtÄ3U³_g1(F.?n¿k—ˬY¢3gt;v¨Bˆ&(ˆŒ)Ù¸‘ÉËÓjµìíÛ¯¼"Èͽ{ï:ŸëtÍ®ÖÒ°;Z&×­êå%{ì±#§Oçêt¬FÃDFæ®Yíçç¼hQ0!¤_?·áû½óÎùââBHBBÑÎ×—.È}Ãͨ^ýͺ3gú{y9¬Y]U¥dY²ÿÍÓ§sÀà:aNt:Öh¾u•º»K #£T¥R©Õš;®¥§WªÕ:Ãä[‘"«7\²ø w7·õÿÞx!ñÃ0Z­öâ¥K[¾ØÖ­k×iS¦•ìëã30$ä«o¾-.)Ñjµ…›?ÛRRZʲ,÷3Ù99*•J£Ñøë¯œÜ\F«»ˆÄSBÓi5šsqñçââÏÅÅ>vüµuo\¾zuÓ† 4wµš—ó ܃Fÿ}"3+‹tßÁC‡“SR !¹yyßÿ¸{Ø!ݺv5L“~:lÐ _Ÿ/¿Ù!—Ë !‘QW“’¸óa¶¨Y¯ @mmíNŒ?söì–ÿm‹KH˜?w.i®û ¿ÌMøû‡ôï·ãû••„É)‡Ž3{–þ`Ø4›&’L¸¯Ï6_š¹¾h6ÛÄ`hYs»ªŒ[·róò§M¬4`og7tðà˜3±#‡sssÝòŶں:–e#"£.$&êkafÚÔ)Q11)ii3¦M%„4;®L&Áä^9 $„'9£GŽà ÌŠ¼!„BMu¢»kjœ—/o,A&#ÇkOž¬ eµÜm¢:õ®]vóæy Êxz ÊÊØ¡C5[¶þyÁ¿Û£‡xëV·‰«Žå/ªã°"$ŠÒ…‡/zöÙð'Ÿ<.Ò„†!aaÞ{öL6Ëîx½Þ5çÿ{ZΜËwÎÌžã™yå•ottü½±ñ¯~¿&ËRooë‹/Ýœ<ݪmUUÑsϽ»}û«¯¿þ½=»B7n\µ{wýþýoÔÖ߸ݼyõƒ†Âá‹••þîî{³ÑRv|áØ³?ÿõozö)Šbšf<o¨¯ÿEß3’á͆èºÞ÷tï£Oþ¤ãà¡’’’ñññ¦Æõý臦iÖ×ÕmoûZïÑŸ­©¬˜œš^ßÚÑÞöÆ›o®Zu÷C»¿¹º¼üo'þñÝïÿàØï—.‡ä¶1‰ôýòWÖŸ>Ÿ·©±ñåçÿXW[kÝ&*„èêèøížý΃ªªƒ{ÞsõÚ5;«vìx¢ç§………‘Häž{V?ñèu]ÿ| >[´†ñLoÏ‘žÞ=ûöþé©éGºìÝó­÷GFrØ¢ ­¤NBüûê5»E©¬¨8òøc_ßµs~~Þ¡ûËJüÜsäÉÇ<µ¯³«¨¨hjjjëý÷ê:PnÂÃL¾c?)Ⱥ®/[úËÂÑμ”Tuv装‡Bšö.*ý‰SƒšÖ²uk⎆a<°cû?‡†Î ?ÝóTïѾ‡÷í÷z½²,>Øõêk¯Ù‰ÛZ[Ž=ÿ¦ ¬ßú:«tAHyT65®wŽ$IÎ`é$ë+Gašæ•Ë#BˆÓouvv:ì‡;Û,EøTx×®]‹ÝËçóÚZó¹¹9{º,„e9èõªï¼cŽŽŠuëôûî›™™1M³¸¸8Z?®K—FáUUßà ‹M´¶Jš–.Ù¢ô÷÷»-’BY–ý~ÿÕ«Ó.Œ† •65•ÎÎÎÚw*ŠRPà;}ú?cc³¡PissY$±šŸL!„×ëÕ4Íz¥„¦i±˜úÖ[†ÙÖVå÷KgrrR‹¨ª!I†BU=ƒƒÿÅŒÖÖUñ¸ÇÞž]¡@àÌ™±?œlh(kj*žþ߉…B_©¬ô&핹þþ~!ÄRbûñèèå]‰ÇµÕÕëjjìØ&UI–eŸÏwþâÅO?½QYQѪ·‡Y øàÒ¥GGkÖ®]WS‰Ì=SµfÍÝeeš¦ŽÅô ÷~UUÕt9$Êäðñx<ã\º 767 !E™™™ùäúõÎCÝùóKåååç/\‚›64ÏÏφ‘Øû<#„PUUQ”³ï ÏÏÏ7„êï*)™››Ëm‹´ò:1 jšfÿi-ê¢Ñ¨õëÁtÝ'„H,ËãñØŸ5M󟟘¨®®ª«­ÍäˆKä÷ûeY¶JQ%ÃÜí¤Ý3/%±Î}´(Ù *ŸÏg “Jôx<~¿ßŠ^Ü4Ïž{/oÞ´ÑãñØgN!„$IÅÅź®[)…ã¸rBÊ£Ò98š¦9TlQqËß÷ `Ù„O…ÛÛÛ3IY]]í”O8ܲm‹bðäq7®TwîÜ™§Ì…š¦I’Çgá¦)((7~˜aVÎ\IEQ¬ÇiŸÒ†E’$UUeY6 #óæK’dM¦c±Xâ´L–åÄ‹¢vœ“¶gW¨½‹aVR¶(sBˆüÅ6IºaæÐ®œÔÄj›¦i_hB|r}ìÀáî—þt¬®¶VUUk•{û,?eWJ’¤ë·ž³µœ-úvbÊî³$–•ø9»#.¥ä–y´³.Å ƒ*tgÎt²;é¥<*-邳؊¥”×ïAÀ²ÉÇJÕz>ç­Ën×Û‡ì™_i¬«‹ÊêÎZJ$u]w˜±™¦™EóMÓLŠ¡%i e§IÚž]¡‰óòtÈBþb›$]“Ú•§šºÚ7ïwuž gÒ•Ëߢ/U':T8]¹Ùqé,%·Ì£u)nTy.êÄ•ÝIÏ!té¶çðŒ ÀíÜøD%_EEÁïu.+-½ÓÀв‚ž¨„ÛÉü!¶¯×»oï·£ÑhÒí‚_t"rŽA@®°R]Ɉdþ[‹iš³³ ¿°ÑèDäƒ €\áî_€»pMu%#’ùClW:9Ç  WX©®dD2ˆí @'"çTä wÿÜE²þ,I’išW.!N¿=ÔÙÉk¸Ë'·lÛ"„%bIDATxÚíw\GÿÇçwtPªˆ¨ ‚Š[ì&F£‰=‰»‰5‰Æ£ÉcâÏkì&&±ÇGØO5 áŽâqw»;¿?æX–+{{\õ˜÷+¯xÌîÎ|¿ŸÛÙÝÙÛB¤ML!¹GOú3î éigƒ‚‚‚‚\\\ì!c T*U~~~A~~÷ä€î éig[·i#‹íck*++oÞ¸Ñ=¹ý„{¦n"‹ƒ‚|@ÚÙTôS7 J;›ª93àq¦.ƒö¾½ÃÀ`Ü0 ¸3`0pgÀ`4à΀Áh¨ëA&“¾xñÂÞQ`¡½°.§Ož>ŸO„P$A ‚ vqq! ‚${‡‰±Eø|¾ÑB]œ¼3 E"QÞóçjµ:8$õ´ÈϿ֣ŠÛðäñcC‹‡‡×®NŠ¢þyúPß××ËË –••ɤR@£°0öþàüA …5Òäñx.b1ÇCŸÑŒ3ö~///º'pÁÉ;Ç mÔH·<(( —ËËÊÊT••èP¤T*KŠK ¤H’’H$¾~¾è@¢ª¬”J¥$Iòx<¡HÔ°aC{§å3hðöñ./—ËdER..b‚ Ê^•¤EEn¹{xÈd2¡@dïHí€Þqm­o€­¹ÖPE÷4N û†L*õðð¨ë·Vÿ¾x¡V«/ üüýÑÍÖÒ’RtuTR,ó©W? 0¨¸X&“É.b±‡‡'ÚV,–äçåAE"_?_{§‚1=bFÿçxw•!L;›Ú©sg{ÇÁX€ZÿqéR]93`êz÷x£¿0hV³wðŒ£€;£w Fî ŒÜ0 ¸3`0pgÀ`4à΀ÁhÐüèöê•üYÞ³Biaee¥½C²$b±Øß×?4$@à” b̤Zúq ßú"‘(:*Zë Éׂ þúû/BMœ2A,‚™Ðâ”HešÎ ¢ˆÝz@©ª7¿œô;|Æ•ŒÊÊJ§L‹`&´8PMjŽIðù|•JeïØ, I’<>ωÄ"˜ -Ðz„Ûù&MÑšùÂùÄ"˜ Sœê»IN©„@Æç: ¦8š3êΧǃžÓ&ˆE0ZÀ¼L‚:ŸLBO@ïΗ ÁLhq óÌPk™®Ý¸™‘™9sú4«mf+æ$è4`ر@g¸wÿþ¡Ã¿Í˜6ÕªÖ®”€uz?À"°@‹ª;0÷jÒ6×® ù ¾î`X@½As7‰>fÔPu1jUjÑ EQZE«råÚµ¤^)/ õ–Ke2ÄP;®\½–Ô+eÙÊUzË¥R¶ÈŸçåmÛ¹K¡P˜,×ÕkI½RèÿzöíÿîÄI{T«Õ¶0Ï hYíû–£žÐ&æ'h‘8m€É"ð 5-½gr÷N‰‰Zåì‘çååïøy÷ $‰iañà³Å‹||¼ …òæíÛ[·ïȹwï‹Ï>µ±8 únhºˆÙ5Ú&n“71;A“ZÔÛ-{£É"@ˆÿúÛq±±îîîÌrŽ‘›œ€¸ØX¿ªÙ¨’ºt8oÁÂÿ¦žíÕ#Ù¦âT_&ž½¾'Ûdë ^½~=¹O¿ÇOž|4{nŸƒÇŒŸðßÔ³Ž#¼Y3å¯^}ÿãOz—î?xèí±ï¥ 8nòûgÓÏÑåó- {{TrŸ~tá‘ãÇÇŒŸØgààÉS§ed^fi”‚ Am['tJL<~òK»ÓgÏ]ºl9Zz';;¹O¿Õkס?/_½šÜ§ßÞ“ûô+,*šóñ‚¾ƒOxÿÃ;ÙÙì⫎ž=αМV8nh›1KšÝ‘Ç|¼hIL‹æK|¹jíW7oݶM`ì"üýý¦Lšxüä)fHà¡_oÙ¶½{·¤¥‹F5iòÅê5×oÞD+L™8°l钯׮A%¿9úݦÍ=’»/]¸ 2"ré²å—¯^å(I’íÚ¶¹ÿà:‰ém·C»¶w³sÐ 99÷wsrÐæw³sê׫Õ¤ `ùªÕíÛµýdî\¥RùŪ5ì¹æe°èݤ —.8uzõË´V[±æË™Ó¦6‹Ž¶H+&`v‚ÜÃcê«·¼[×.Sߟ!ìֵ봙³Þ·/¾UœU3*BR5tð Ô´ôu6lý~“X,Fåj•zσo:uÊda÷¤®²bÙÏ{÷·ŽDEFZÆÄԫ烎î;wïž4~ܨ·Þ„vëÚE­Vïܽ·}Û¶zÕ•ËÏ·~ee¥¼¼\"ëmwÊÄñÛvîzüäixã°ì{÷Û$$ܸu«¨Hêë[ÿNvvÛ6­!¤G| u°•_®-)-õf‹Û„ß „?|t+++÷ñ©LZYYéáîÖ(´H*Õ’øß—/Ï_¼äåå©[aP`à_~9mª···™­pDë h‰}ÊH[F;CäîhâW@Jïž›~øÑ6±ˆ«Æ$A,˜7g”¶îØùá”ɨ<ÿEAiii÷¤$:ìݺmÜüªŠ¤(I‘hâÚ'OŸ–––µj[Vö ­Ü¡]Û¯¾ùI’Z3ÛAÖ €üýíFGE¹»¹Ý¹{·qX£œû÷Ì›“}ïÞÝœœŽÚ?xð¿A úÚ·mƒ6ôòò$i ÷šgö›-A=~âcÇòò ´]»qC«ÆGüå×93fL9kþÂÅZë«TªåŸ-ýöÿ6wlpPP­[1m?€6½›dx‡ÓzyV&êùÔ«¨¨ËåÕcVë„dDFw xoì˜m;vvëÚ•ËdÅOOz[ïê°kvõWr9àó´ZP(Ú98v¼,,’ˆÅ®®®†Ú-//OHˆ¿“ߪUYYYl‹1Í›gß»çãíMdë„ø‡äÌ„š ô7Ä0/“ ­úäéÓe+Wéî Lø|>„0÷ñ“§N5lØpáüy€ÝÛ·ê­P¥R}2oîž}û•Jåýû…›ÔJaQ‘¿ŸŸîRCå(;`“›9...¹\î[¿>³üÕ+9ÀE¤™Î^*“5lÐ@óY*‹ÅnnnVï¨D ¯¡GŽžvîüú ßN?P¿~=€¬¸¸:lY±X,vww§k£kF¹ºhaÆ ˜•‹ÅbCû¢Vù›7[´h!di·MB®={ïÝ¿ß8,L"‘ĵŒ½”™éãåN_ iÝ:cËs¶ÔB.—/Xò)û> hÝ”$É›·oËŠ‹›DD ;J¥²BE øü¸ØØ¼‚‚;w³MjB¸tÙò=û<ÊÍU(”A”””\¿qsͺõ¿9Ê2<2” e  sqqIM?Ç,$Iòô™Ô°Fè=>ýü´ˆ¢¨3iiM£¢¬˜q˜÷P!¤(ꓹ³Ÿ=¾wÿ@à ¼<=é°!„içÎE7ÒÔVsÛ† x{y•””4mÒý÷×_NŸIEÇ2–F7oÝθ|e`ÿþ¨*Cí¶‰/..>õß3±1-(ŠŠiñ(÷ñ•ë7ÚµiMQ”vÍúÒ½Lº›“#+.fßG½½½g4Çã1pè×Ãw²³Ç޵jíW%%¥Z+‡††L2ù‡­Û¢"#W-ûBH÷V „ë׬ٶk×üE‹åòr´¨Qh舡Cú÷íCè³7‡6üÑÍÍÍmÒøq›~ØòÏ?ÿ$¶oïééYXTt6=ýQîã5+–Óª“žæóùÍšF»p);çÞÚU+¬˜Q æŠ¥úZ®qXØÈÃ÷<ðù£G¾õÃÖm<¯YÓ¦™—³îÜE÷Ž@Õ›“™W¯¶Œáóùcß½iËÿ¾,lù0]6¤Û.*¹}ç.º¦¯¨¨¼›“sâÔŸÉÝ’ºtêˆÆ†ÚmذA@ÆÙ99úö6kÚ”Ïçß»ܘwèét 4v™0:€ŽjÒÄÇǧ¤¤D¯Ä"‘¨Wrò¤ ã<ÜÝ)ŠBïŽ6ôüÅK{÷„Ö¥µÉç+VýðÓÖ^={4ަß?4©WWɬéÓæÎœQ\\¬¬¨ðñövssS«ÕôK7U!o£ô°ÁƒB‚ƒ9üÛ–mÛ …·w\Ë–ógÏ ¡pË?]ºkÏÞ#ÇŽûûù-˜?7>. =­»ºcY’$Ǿ3úÂ¥ŒçyyÂáC‡$yäøñ#ÇŽ‡¾dQLóæ(ì訨ø¸¸ßovsu=°{`ÈÀ7‚øýÈÑÃü8gæG)={êªPSk¿þý) ƒ'O?tÐ@zeCíBÛ´N8~òTófÑB@Ð4*êQnn‹æÍè$˜½°v!žCà"jÝ\÷íX§¬¨8züDÆåËù …R"‘øûùE„‡'Ä·êÖ¥³»»»J¥ÒjC(îܽçanîg‹jU8{þ'ýú¤ôMéÍ|'½v­Ð/ì±ïâb±øNö¡P¨7Ak D"ŸÏG‡’$Õj5Ê÷VVÖâÏ–íÙ±-0 @ P¥V«õžÐ,‹QD"AÏ1Ë]]]ù|>*‰D"‘]k1Ãæñxb±X @igA‘H$ ù|>KލQf º3«u\3Ô®X, …J¥i+‘HP¨ºéÊŽ)‚FÎ B‰X‘Ô¥‹!A­4³”ÍžM2ŒÍº¥cŠàhp3˜ƒÞ‹xCWöVMBèPïµØ¥38šŽ=f°Ø#Ü‹-ï&¥MBÂÙS'ÊËËírfp ýg{GeÅT$AŽWÉÎ-‚£¡3fàÙáÜmÓT7A,‚™è938ëÐ Ýwsâ±fBßåwòy“£ß;k‚X3ÑskÕYeÂûíÎÀçóÑOëN¦ÇSj‘‹³&ˆE0ZB¥ÒtoŸ"YQ=ïzZ¯_Ô¡kñ0iµKµL^Ö A€¥äž‘9ûs[3÷]k‹À=Hó;¡eÑ'ÿùsMg „¾xù¤çd´æ:§ÿÔ*gßPw+öÍyšϪþ€ñ/ù'ÂÇÛ'(0]˜š ÑL¹$˽ãº1ä1ódUÀR" ²jp—”K…e©)»8Õ ˆàÆa¹'£…¥Î¼?ƒ“$‰13A«i¥:­*‚ ¶Íå-ަ3Põ÷£¿ÏúŽéíç” bÌÖ-°,`ƒÃºlpX·À"°€ ëX˜âXñ}G:{‚X3©ÒÃùÇàA¶3Ã"°€ÄuâÌ2ºtæ±fÂtûtb™ ¶3Ã"°-îéæÈXÖÎìʵkÌ9dEBappp¿>)oêÈ÷ïÙEÐJŠfê”Éááç/\üë¾½þþ~F[¨Õêß=ñçéü‚‰XÖ¨ÑÛo½Ù)±³!îµÑlßõsÿ/×mh…ógN׺rÔœüÌ IÊ¢Etñ­e¾ôÓ¶íÙ9÷V|n;ó%ËŠ •MHp°«DòÍW_úøxsTï³/VܼõÖðaÑM›*Š‹™ –,ýhê#†€ëlWº\ÊÌ\¿fM@@Côç_þ÷ÃO[—ºÄÓÓ“®°yt´I¡2ÅÌ3ƒ³¾E¿ o©Q%q±±ôá§[×.;&ÎýdáéÔÔÞ=zØ;ãÚˆ ›³¼MBGõþyöìbFæªåË’ºt¦(ŠÇãõMé½ú«u»vï6x0ý¶©¦ü‚7W7//Ï6 ¨=‹ÛMN  (ÊÓÓ“{¨Z9K9÷8>LE(H‘U¨Õê6 Ÿ8E¯¶ïÀÁ‘cÞíÝÿ÷&MIMK‡N›5gÉçËÐÒ¬»w»§ô]õåWèÏÌ+Wº§ôݳÿ@÷”¾/ gÏÿ¤ÏÀAã§|u÷®mDÐM AQÔå«W‘…é­¬¬ä>ýnܼ…69wáB¯þo<ÊÍeÖS\R P«Õ$I¡R©½1 ©k—ÊÊJº!à•k×P²hCô§T&Cî?xðÑœ¹LŸ–^ÌÈLêÚ™¢ªÃC³Ì×(mõDZcòÆ IN½”‘iäk­ Á ÒÇ6»˜/YV@…²BÁí¾ôCÑ ­ZõïÛç?7ªTªr…â»ï7õvDx8³’&^^žËW­¾péREE*lÚ¤ÉÇsf»¸¸0Õ£«E…ôŸèúo6´Œ‰ù`ò$´ôÂ¥ŒÎ;êùj~Ì:M²ÒBàÙ1L¯ÐÁÌ—,"JjìÄIÌÂΗº”Η$ɧL;~âÞ_ÉåîîcF½­õ˜“D"Yÿåšÿ|·ñÓå+„BaTddllLëøVmA õjʨU>p@ÿ¡ƒ¢ùEKJJTªJ??fäz¿ºP­Vs´Ò@çµO3Ç—Â’ÒÒŠŠ /OO½4rsž8YZZŠÚꔘ˜Ü- ©cm ¥çZuó%ËŠ€ÊV-ÿÜÇÛ‡.D–9Ì|]%’Ó¦®Zû„ð»oÖ}ãàÈððÍß}+•ÉngeÝκsåêÕC¿h¸lɒȈpFm5dÔ*‹£Õ˸|¥K§NZ½Nï·@r·Òz:CmçZ+++ûyßþ³éçÊÊÊPI£Ð¡ƒ è×—¾o°s÷žÒ²²±£F¡[jµúÏ3©Ÿ~±bÞÌ™Z÷.¬´¸•c˜/YX‘~¾¾Ì­ „ æea—NÝÝÝ|¼½£"#õV…®à=ÜÝ“ºtéž”Äçó>z´låê•_®Ýºy]›¶Œ5ËÅbºò‹™ïOš Ý–Þo¡ªÐ+-=¿3ÔvFù‹'ué²~ÍêÐ`‰DòêÕ«ÿýýðÄŸæLž0pèðoõëן8î=‚ èwJú¥ônÕ2v݆ Ÿ/^díó„½*jÙÛeº{•Ì—,-ÚÙó=ð˯|¾ ¿àʼnSöMé­µZö½{ó,Úü݆Æaaô±¼Qh踱c–­\EÏéMÇ@W[ZV¦·\©T¾,|Ù(4TïcçzÅšd¥…Äæ ¿\¹âÝwF7kÄçó+++Åbq«¸–K|2|èaqqÉ_ ~c€J¥b(©ÕêþþÉII§Ï¤Ö®]“0'A}Õ9Šù’%E`i‹±èy^ÞÏ{÷Íœ6õ·Gþ¸}GII‰Öº‘ááB¡ð؉“ÌB’$³srü|}% ]zpº¤¤­såÚµª³F$W¯_Olß]+¸ªÐ+­*q€ùêyyz2Ÿ‡"G…z>>´óç|CïÌÛÂîI]¿X½¦Oï^¦6jš¼,8€v ó%ËŠ Õ´ÞEE}óÝÆø¸¸N‰Ú·móçÏlÙ¶}Þ¬™Ì•%ɤqïmÚòãËÂÂŽ‰êùøÈåå7nÝJ;w~É‚™9††„‚›740çÞ_rsAÍ!ú‘yeØÁ†£ª‘½-w+-ºžùhC› ògÏž÷îÙƒ¥Z@@’dIiiýzõ¸4W$•2/j¹cñ´ÝÍ—,+K[ô¢ã'O=øßßÛ·lFiΘ6uÁ’¥½{öˆ‹e¬ ‡ þËáß·íØ%//÷ððhѼٺ5«ZÆÄA׿[¯þÇsfoݹkÝ7Úµmóñœ9ÓfÍÖ ˆ‡¹¹QM"Y¢ªÙª 9ZiÕÐB˜v6U(v‰ŽŠ¶¸yIQB€å»$) RÔÜ [ÇÇ÷ïÛÇ w-/þý÷艓9÷îÿç«/MŠ™¡w-’ ƒ˜/YV–¶èEÀÅÅE©T2먨Ðfhy!Ðj̆„B!2 F?\ººº* >ŸÏŒÄÕÕU¯Ë‘Þ€µ ¹Xi†UugˆŠŒ²xg0::ZA(þòÛï¿9Ó"2"ÂÛÛËÍÕU¡T?|”{7;GZ,>dÈÐAM}kQ,gßˉDÖHðu‹ÀǸ§›™­­ V«ß6täˆá™W®^¿qcïƒERiyy¹‡‡G¿Ø-ƾ3ª}Û¶ÌûQ&Åë¼i 1ƒ½=]Ð^Þ¶uB‡vm²9¤ïE$ÉtÚ35UGHо`Xо›ä 3÷³Ø9×lM€E`GÛŸÁ‰e‚U·Ø5A,‚™èüÎà¼êiú½ó&ˆE0ìÜS·À"° }fpV ìÓE`›•X ö¨ÌÙçtŸ2¨5ج„‹8جÄÜL¹$˽lVR» ±Y W°Y‰•D°Aض¹œÃf%uZ>¯R©ð,܆Ðt†gyÏD"Qr×dGž« +ŠgÏŸœ2A“D ³w,fÏxYøÙX8Ù“ÏçG7‰fút8Y‚&‰`ï@lVâü0ý80,`³çÇ‚Ãeç¦ú~³Sî(°êµXgMÐT0,T?¨œqwáñxš9Rœ4A“DÀ°ãäÏ&AŸ?ýƒ÷ó îÿõGMjÝœ½÷´×€g{c- „ì Λ5SþêÕ÷?þ¤wéþƒ‡Þû^Ê€ã&¿6ý]>ÑbÀ°·G%÷éG9~|Ìø‰}žº•••ûø‰T&­¬¬ôp÷kZ$• u­3ƒÎRÍ:$A,˜7g”¶îØùá”ɨ<ÿ…~C*TIQ’Ò|˜dt6=½SÇÄÊJ ¶EŒD"I;!¦E –‰¸µš3d–¥W4G;Ì9&v›^’ ˆ£ÇOüqìX^~Ö¢k7n ë ,NŒë±À€€÷ÆŽÙ¶cg·®]Q¹!C*¹\îîî®å¤ÄÝ:éÉÓr?É}üäô™TºðüÅ‹S§L6dîu|ŸŒÄ¦O ;V™D¬°¨Hïäòtù“§O—­\¥Û ˜ “ËdYud¨BúÂzäˆáiçίßðí¤ñã,†T°æ-/wë¤ôóçÅbñºÕ«øÍ#;'çû-?Ýκ£U'mî¤Û—ØtEÀ°P=€¶à­Õ¥Ë–ïÙàQn®B¡$¢¤¤äú›kÖ­ÿýÈQ¡\._°äSöžhÝÔRñ°%Xó*EQŸÌýìùó½ûX ©t·ån”vî|‡víšE7¥×з¯H$:wá¢As'}ͱŦO ;V¹LZ¿fͶ]»æ/Z,——£’F¡¡#†éß·AwsrнB¼½½g4Ý"ñ@Ö ¨¡Ž}Sã°°‘#†ï;x 0lH@#ׂ̫[ÆÆp´Nzð¿¿ó &¼÷.ÓãC(¶kÓúbFƨ·Þ4dî¤ÛKlzÓİc•´««dÖôisgÎ(..VVTøx{»¹¹Ñ3lG5iâããSRR¢w[‘HÔ+9yÒ„qîîz MåÅã@Ó‹H’ûÎè —2žçåA R¢£¢âãâ6~¿ÙÍÕõÀî].ÖIé.ˆD¢vmÛhÓ¥S§ŒËWžüóÔ€¹ÔmŽ%6½"XäËub4Î=QóèæE˜~†žùMðx.޲߯3‘uû–œ{ „±xôÈ·ÆŽ…LITATTTX<C !—Ëu·bz£škB¨k7ftb¢ÊÊJ½3t0½)˜&txµkŽå‹ÀhQý¦›-gî‡6œ²…Nª.[ÔÙÄMÂA_î± š1ƒó&È]{Gáè8Ч›õ`¿›TG¨³‰›DõìŒU`Žì‹EÀ°ãü6V°ê}gMÐ0¬8¿Á!6º Û2 N>oÀvf5EÀ°€;C Î&nØàÐù¡E°w Ž68´V²µŽYw[3;0S ØàЬL¹$˽k2ŸòÀè‚ "H+Õ©+†lpèü0 í‹Cƒ lpÈlpèü`ƒCŽ`ƒCçr:?س‡#ØàÐùaŠ€a:?Øà#NþlćØà3öyíÓâþ…F©ã¯}b¸`ŸÎ`)ÿB£`ƒC¦vìiph»É8°Á!68ä€ÝÌJ€å¼HX0jp¨‹],Qå/_Ö¢Qî"`رÁ!jÔ–ÍqOÐ.–‡†*çÒ(w0ìTO`ûW„mÓ¬ipÈaª,ãbc«½tfeµdj¨r S¹)Z2ž: 68Ô],Y@N‡Ÿ<™>{nʃƌŸx:5Õ¤œøûµN>f Û2)A`ËCC‚Æ €/‰mÑ|éÂM"#V¯]ÇŒKRvìiphÓæ8'hËC-_C=å’ºt™úþTÕ´Y³wïÛß*Îv:;VŸ…ÛÚþ…\b0)A»XBcF9ôìÞn7¥gÏM[~ä¨!>3pÁZs­ÚÌ¿Ð(ÝàPßÀæ–‡Ú¾†:å胗—'½B½zõ ÙÃŽU¦—äî_hÔ Ñ238Ô…¾Ô¶å¡‹Ø —ËÑ&4¨;¹ˆDUmɪەJÅb±››פð£Iư¼Á¡Iþ…ìVˆ–´íayÞ¸±H$JMKgRuúLjX£P777Tsú¹ ô¢3iéM£š˜$†Ë_&™ä_Èn…h‘ ¡‰SÒC›[Ü\]'·iËÿ<{Ö¡};/OÏ¢"ijZú£ÜÜ5+¾ !9yú4_ÀŽŠ:ñRvNÎÚ•+8~e¸3pÁòh“ü Ù­-ÊËÁ¡¾õ«·B%Ö¶IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/FiguredBassPalette.png0000644000000000000000000000013213135434036021151 xustar0030 mtime=1500919838.093315139 30 atime=1500919916.536648472 30 ctime=1500919913.339981805 denemo-2.2.0/docs/images/FiguredBassPalette.png0000644000175000017500000001422613135434036023027 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRIBUX³ˆgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>fIDATxÚí]y|EÚ®î9ÉLæÊ9I $!áW7rcMDQ`WÑuXäÐýV]ñBAt×c¹E…Àp(G ‡¸ ‰›{2wæì£¾?jÒæÎ¤‡$³ýÀ¦«ßzê©·ûíª®ªîÆ „€Q¾Çvññc]-‰,cÚíÅÇÕ)))))B¡°«UqàÀ¡³pµÛ'ŠÈωD]­‡ìGÿ¥¤¤pÍC4?¦NIéj%8p`®v›»ÇæÀ!Ê€wµ8D\lsààb›‡èÛ8D'¸ØæÀ!:ÁŶètÚ¦ÆÆ[\¨Ífkjl¬«­íêÚsˆð;OÑCQW[K@  „$I¦¤¦ …B’¤H’¼•b,‹¦¹™ãŽæ¦&«ÕŠv‘$) •*•X,îjÿqèÐ4 Àqééîáý¿ÛÞJ¥.×`ÖÕb|B à8Î=–˳L&cÛ\l»`±X”*Žã­­­f“Éáp ‹+A:Ž"I’$QÏ€ã¸@ @6BVk·Û©iiƒÁjµ:ŽÞ}ú455a¨SRl6›Ñ` hÒ´X,VªT<‘ôz‡ÃÊÅBhµXx|¾J©dív»Ñ` !$œN@–:VKQ†a| ))É_"‡ˆÂ£‰И‡ÇUqq(˜uZ­ÝfC÷kU\œGŸœKsA¯×£Ð•J¥L Z4»Í–¬V'«Õ@Ð7#£Oz:cƒaX\|<ºu( HÓ€æ¦&𢆡A2¥R™ššªNI±X,Z­@DC}=EQê””Ô´4æÖÀjª«5 If³™¢(FI’jµ:)9Éápèu:”®in&"­wï„„[Ûá÷™È¡gA&“©ââÐo÷Àfºè ¸v;È¥Ôétb†ã8ji=.¬V ’4èõ€††f—Ýf š¦ãâãsPôÍÈ (Êh4˜Œ&@Bb" 5- BHÓ4IfÃ0š¦õ:\¡HIM È¡ÇA&“¹·Ø111Þ ¸Øm½&“Ob±Øf³ÙívÂéôЉ ‘Ã0€aB¡µ±ã§Ó 1°x<žJ×jnµÙl.‡C¯×c8.•JÝ-5ÍÍF£±µµ•é¨ûLäÐã`2™¬nÝ.«Õj2™¼Ã›ë“»¬Nöfñ ñb±¸±¡Á`0Èår¹\î¾7”a-P`¢‘ŸÏnݪ¹?×h4A$%%I$w‚ RSSãâã)ŠjÑh$rèYp<‹ikitZ­Édò°äÚmx<~€t¥R+“Ý4ÁÀç¡Õjcbb˜»_ŸËå–ÖVmK MÓ"‘ˆ$I³É””œ,•J­Vk‹Fc³Ù|>êNÓ4mµXbnTw˜Íf𦙋4„¢(£ÑÈÜð#h[Zbúô‘J¥z]Dü%r~îËž© Ê6hšfÝc3¡®ÓjÛ'zÿ˱ÝÔԄ©±¡AÇtPF#J×ëõJ¥Bèt: ‚Ðëõ|@$Éår¡P¨P* ’´Z,$I¢HC6B”½¹©I©R @ V«uz½^§Ã0L ÆJ¥€‰D¥R™L&›ÕJ‹År¹¼µµª{l755¡¸­¯«CCÜr…B¡P ½*•J«Õ¶šÍ ¥Òfµ¡inNHL‰DõuuB¡PÈ ½øLäÐÁ ž¡}NƒaÂâãÇÆO˜ÐÕj»)êë ‚è“žNQ”Íjmii‹ÅhÌœ‡[n]k Iõ{y<ÏNãÀuøœ©ñ™ÈÅvÄ'$èuººÚZ>ŸÏãñ%þo†9pè>àb;zõêÕ‹› æÐÁÍqààb›‡èÛ8D'¸ØæÀ!:ÁÅ6Ñ .¶9pˆN¸æÀÌæÖÿÖýW£Õ8ÙE"QB\Bï´Þ‚Îð³ÅÓUüQ¬³Jê¡"Y‡kÍ©"N%úg÷g÷’$üÏèÑâÎð³ÅÓUüQ¬³Jê¡"Y‡+¶49mò4ô”?‹ìh)\é¹R‡ÃÑ~¶xºŠ?ŠuvCI=T$ëp]½HŠÄq½-€EP…áXçùÙâé*þ(ÖÙ %õP‘¬ã¦ž ë/ÐôxÅ_Øülñtë솒z¨HÖÁg*!ŒH!Külñtë솒z¨HVÑÞnG¨ÎÄÐU³“ülñtë솒z¨Hvùv€±ÄÏOWñG±În(©‡Šdm!€,ð³Å9þï/\Ÿ¿ø‰‚¢Y³î»ù³Ï}w欧àfM¨åEÒoÌßi¿¹ãÑ…‹>Ùû)A™CÔ_[[·s×n«Õvžyþ…‰Óoßñîû>K÷–ÙvÛÅìzùíñâÄÄÄÃG>þÈ<Ÿ_Ïé$[ü!V™]vT'SA½LúÀþý_yy›\&óÎî/o'%ýù/›.^.{à¾{ûçäX­ÖÓ¥gV®Y»|é“sfϯÐÈùíÏZ­PÈV«íâåËïíü ¼¢rÓúuÈCÔ_[_÷Áîf†÷ VN©¬,&&¦¸¤dÉox—î-£½Ý¦i:ì+J`å?|ôë¥O,–ÄH.\º ¶øƒVD¦ïÓQþd …±±±ùyy|>ŸÅZTó믧KϬYùÇE æO7¶`ÆôMë×ÝyÇî=Ÿ0öÝÇoCÎÏËËÏË›8aü³Ë·mó¦Ó¥¥_;”9”Ò;s†—”à8þ»'Ÿ¨oh¨üñGŸ¥{ãLÐGÔ­ø«kjGYxÇÌÃ_e‡-þ èÌ‘;÷ý÷S f6k4Ïüá…‚¢Y –9xpÞü…E³=µô»Ò3LFü üaÕŸ³ç>8¥`f68V|bܘѷOŸÖK,..9é!O0¼Ø^³~Ã¥Ëe!å?rôë‚Ó1 ›1uÊ™sçÍf3»·Ân·ÿeËV”þ¯Ï¿xgçS&OZ»zUv¿~Ù²õ‡‹ÇŒyµ¼5¿•€«Èþjy…J©ÌÊÌÛo)E™_uí*îËý^ß¾cÚÔ)kW­ÌÊÌZ»aãÙóçÝ3ú3€.ùíBÀ†µkþöÒ֠ƨoh¨¨ªº}út7~ÜØâ’÷Þ‡¿v»m~ëÀ¼Ÿ\&[¹fmjjʽwß=cÚÔÀŸ•rqúá§(ê›cÇÿºu3„066väˆßß]TÄ[ü¡Ã#¯Íf÷iÖ«—Ø;×ø±cžû„¢è·½d4½?òT'J|tá"ò˜“Àétþcï§³ ŸY¾Œ¦éÉ'._ñÜ•«åB‚ víùxñ‚ù>p?„pòÄÛ‚ܵçãÑ#ó;ê:±XüÛ¶¾úúë6nâóùÙYYƒçŽ>,?/}¤ µ8³Š QÝ!„›¶n3’˜˜÷~zÿ½³—.Y !œ2i¢N¯ûè“.ùí‚»vߨ®Éè›^^Y•Ÿ—wáÒ¥–m\œêJyùÈüÜÈoঠa§r8­‹X$ÚµgÏ¢ój÷ ±kÏ' {e$§Áè‘#ÙYY€!¹¹J¥‚¦i’${ ¸ä¤T";z„pêäIÇŠO”WT ÎͽI¶—þàciîg':#ÿøüsËžzòÀÁC{þùÏww~pç3gÞ™˜à\÷ǯךû@ßôttzlÞÃÕ55ŽMGyØâL̸'Ý{ŸOãoôÎ;zd>ú„ˆL )Ê[IP(qóÆõ ¹Â=½²ªêo»Çv]}ƒÉl.˜1Y_}û´i(¶«kjŒFãÐ!CL&3Ú5fôÈ—ÿö*EQÞ¯Â*)+#cÇë×êt—ËÊ.—]9wþü¿>ÿ"99iÚ5Y™(S÷ØX)€¢¨ú†£Ñ8eÒ$æsHÓ&O~cÇÛý³³%11W®^í›Þ§¢ªjåó+Ê++¯VTŒ3úÚµŸf†w|Qš¿½Õ55F£iØÁí>5òåW^E_ŒjsšoÇ)šP4…ì{”~üĉñãÆ:NÀàA¹b±¸øä©ÜAƒn–í©¿-¶ß:ßußæ÷7‡œN§H(œ{ÿœ‡æ>pº´ôóï{tá¢ ãÆ®]µÒ·O¡_þ¸8ÕœÙ÷0_–Í蛞™Ñ×ççµÂãa‹?txäÝþÚ«¡˜!H¥R÷ „O%!êÌÊÌŒ¿ù«@æV³{¹BƒÑËÛÌ•J%Úe6·žzú÷´V«ÕûõìA%¡ÛW©D2é¶Û¦Lš„ãøÏ¿ü²áÅ-/n{éýÛÑéÙ^wÚUwNˆ•2œ …Ün·[,–¼¼áWÊˇf2™”;p`ye¥B.')jDÞp¿±Øo~|Þ¬i‹D½zõ2·"Ÿ<ã‘5~B.§ÝÌÄØ Õ5¿^¿Q}ýFõ×ßcOž>½tÉb ÃZoýíí6jÙ¼«ü櫯Üä ¶è)¹ŒÊ¯½~£úÇk?ùõ)Ö>>é½×ýi»Í ‡-~ËŸ¹~©¬ìFuM‹¶ÅétJ%Ò>½Ó´:ð ÚÞii~‹ó‚GÑ~c;(œ¼Kt?‚q* ¥E›”˜ˆµZ­kWœ °nõ*f‚H$ꨤòÊÊçW®Þñúk¨÷„ûôî=ÿÑG6¼¸™ùŒ©wÝU*%@§×·ËÓéE"‘D"ÉÏËÛýñ'•UU}ÓÓÅbñÐ!ƒ¿;sF!“efdøœÛ ÝoÞ>¿pñâ Aw­[½*)é&Ÿèõzwz¸;áÅáÄÉ“"‘è¯[6ãüµ7Þüê›oç¢izpî Ý"Gåð÷`vp¿Ý,áÒå²Ò³çÖ­^!LJL”ËdC»Oö<ôkmíØÑ£Á> Ðx`cwaÅ%'ÇŒ5 “’Þ»÷{ì*9uzØÐ!í´^úƒ?+âÝÖ}}ìøÁC‡oÔÔL8wÐéÒ³uõõ m,ýÑyoûݦ¦æœì~¿\¿±÷³ÏW<½Ü_‰$‰ÅâEóßþλÍ͸±c” Ek«åÂ¥KÅ%'׬|ÁMçu Çñ‡ç>ðöû;1 “SzælÙ•«h9))19)©¼¢¢pæo „rrp¯¬ªšÿÈ<çFˆ~»|å*ì°ÛW+*utêäI·‡nƒ÷ðöwÞmjÖädgý|ýƧn>6@wÑgΟªVœؘÁµŸþSßаðñÇÜÃÏçÊqº´t鋽¼×~j…³.íÃöÜ]TøÒæe²X‚ ¼¿ï ¶ÚÛH¯öÇo±XV¯[¯ÓëgÐ?Ç#o¿¬LŸ–ÍKè±Ô¡Ç6„pÎì{ÇÃG¾úú›¼¼áëV¯zú¹çÑ®{î*"IòË}û¿Ø·?E­^ñôò‚Ó™‘‹Ð%Aï½çîÌ̌Ͼø÷Îw·Z,R©tÐÀݺyHn.I’ƒ@î›÷;‡¤¨ý‡í?x(-5uýšÕ¹R!Ì‘wèÈWô‡òx¼œìì_®_4p@às#èXÚKs]‹ù|~ŠZ½xá‚Ù³îbj|òïý¾Ø·/E­^ñûåÓ§Ÿÿá#اÊÞ?;{øÐ¡o¼µ#¦W¯½{vûcóðð‰S§Á¨‘ùšo?¾ô칋—ËÐ%ƒ©“{í\ïTâ‹„ý³ûûìT{MK¢\5‰DWʯ —T…ÈQžðøÏÿðÃúM›3Èåò—7oJ ëãa<O,£ÅÆÞ›òƒ¿¼L:ŽãîB¡½<Œ¦i‚ Üw >Ÿâ Ê¡áñxÇqĆÊBmQຣ˜£ñ w "‘ˆÏçÛl6t•‹Å8Ž3wïaˆD座 ™*cäÇ=Þ‚= PF ÃD"ǃ2:ý3 …Àûhòù|‘Hd·ÛQݽ+pï“Ó4âK¤cˆ`8Cç(OxüÙýú) ƒÁà3¯@ ˜1uêÂùIbbÂÓ†­¿ÍùÁ_^&­¸bÒ=ަû.‡ÃÊû@C94k îþ4xôDu'ýæo=! ö)2¨‡ív»Ïps:Ì]°Ïà nÍ3žÐm­_—ó„Ç/—ÉÞ{ë̓‡”ž=ÛÐØhµÚÄbqB||Fß¾yÇMš0^"‘8ŽãðÝÍŸÑ-©‡ŠdÁç·; ضF¿ó±Ý…:!„"¡ðÁûç<òЃÌÒÔ 5Ò¡ :t+F·¤*’]Ÿßî$Pÿ§óülñ„Í! ±QDÚÑ!©‡ŠdmØ6¯ØI~¶xºŠ?ŠuvCI=T$»çY‘Á5nÑi~¶xºŠ?ŠuvCI=T$»ˆø{NNVî·»¿ÎH£ê솒z¨HváŠmÇ™ÇYXdÇ0Œ ¡@ØI~¶xºŠ?ŠuvCI=T$ëpŶB®hѵ(åJïçËÜ}ásÙ§³0 3µšþø™eRî‰3¡ðDZg`ø,+ôŒ!wF§GAK QXW¹î–ù- ý­KЌᑸb[¬†667z¯ŒÁ0×KÛÝß"èžØþ66Ðök7VÈ)êTüX<6ۙѓ;˜'Ò:}Âût>ß²èmà-²Ý’ùÓ¶Í$2]§ÏrÃÓÖî17•aH ]X3ŸòXô[PÙÞ›þªÐÑìAy0ŸuÃn6`Ü€Öœž‡Öú{ ¨¿Â‚^Q(ŠB h|ò‡~ÍÌiÆ5µ3Â0tv¨¸0´õ×…-’u%·ŒðÿþÛiÕ‹òt%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/images/PaxHeaders.19168/PianofortePalette.png0000644000000000000000000000013213135434036021061 xustar0030 mtime=1500919838.099981806 30 atime=1500919916.539981805 30 ctime=1500919913.359981805 denemo-2.2.0/docs/images/PianofortePalette.png0000644000175000017500000001702113135434036022733 0ustar00jjbenhamjjbenham00000000000000‰PNG  IHDRñ…‰‰gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>áIDATxÚíy|ÅûÇgÓ$Msõ¾Ò‹R(”Ãr¨@ii¡´\E9/¯€Ê r”S@E¹oDPNåªÅR ”£'½’4Ùs~¬ÄHÓ$­Íî&¿}ózñÚn6óyæÙ'³3ÏÎÎ"BÀÃãBØ6€‡§ácšÇÕš¶Îœ>Ŷ1<<õ'1©'½@Ïž9¬R©T*±X̶a<<õ𢢢⢢‰IșӧڵoïîîζU<<ÿE³®]¨T*> y\ww÷`• Ñj5|—ƒÇeÀ0 1 l›ÁÃÓð¹<WƒiWƒiWƒiWƒiWCøß‹p4••8†5xÉ(Šª«ªPõòòRzz²]Qž†1 aaa!Žã‘H!DD*•zzy AA4¸,Žã¥%%A:ž$É:}×P]í!•²í8‡¢(Öw¾bABBC p <Ój+**‚ðøû;bŠ·V«¥(J$ûúJêôE£ÁPZZÚ(2’mÇq…‡ùùµ}To/QõøÑ#€¯¯R©¤wjµÚÊŠ @xD„•°æbZ¡Tº¹¹ Ïo!‚ ®‚¡(°õ‹¯ „P£Ñ°í¡ÿGTVThµZ`Ð6á@;]!EQnB!@§Ó=ÓjQ¥ñF£Q£VSâ&‰|ýüÄb±N§ÓétFƒ! àÙ³g(Šº¹¹ùùûÓóXèN3I’7ÀËÛ["‘”=}Š¢(àa~¾@ ˆ°x˜Z­®®®ÆP4,<¼´´Àôc£§Ð°0Ç5j5IQ¢$‰·››Û.dšd+·=__:ˆ++*ŒCuu5ý‘¯¯õ–ˆsí4AååB…BËåtЦ¼¬Œ ˆàààÀ @E«*+écH‚ÜÜJ¥‡‡Žãêª*†a%ÅÅB¡P" KŠ‹Qõ‰Dô™ˆ¨í0///HQ€§¥¥I  4}±Qd$Ý)÷öö V©ôz}…}m M”J¥¯/½mЦ®Hmp«~˜Ÿ ÝÓ1ý!¡¡t+Nàà…±£D"¡ÿ×ëõôGBèù<§áéå¥Óé´Z­¿¿¿ùm Äk UŸiµ€ââbÓ£Ÿ?Ó`(•JóZ*•Ú hÀµ˜¶9¤ÀP´ªª ärymǘ_˜p ÐÝ€P(Ð9sl† @š鄉õ! O½Ñjµ¦€TWWkµZ›aídg¢¬¬ ÇñÀÀ@™LfÏñt?ÁÔœÓ]‘PX¿ÃÌ¡Ÿ·‰Åß6;óA¡ôyæÔ4d´·Úi›@I’Ôh45ÛZ‹(==õz½V£ñõóh4AïÁãjð1ÍãjÝqü5Âô`3rÎh63ZŽVañDÓÒ|;Íãjð1Íãjð1Íãj0ØŸ†uîf••—/Zº,¾s§!ƒ2ØrP=Ìæ¸–£U˜ô˜Ei¡#– ­]ÔInÖ¼ù7oe_¾z5®cÇð°P&½ó_Ìv-G«0é±ÒÜí{Üʾ}óV6€$ÉcdzmÓÀÜ}Dú¾¥ýr'O‹DK-lùéÂEl¥ÿêj6÷µ­Â¤Ç,J F‚Ä~¹ò‡ Ô©cGб61µ®fs_ËÑ*LzÌ¢4w'|–WT¤¦$Ó+óÞÐk±ñ¸6™è{@h:Ø#‡ H“¨(áù $ k}:šÍ}-G«0é1‹Òv„í ²Q Ú¶swÀ¿—@g~R×ʯ îæ=|}}{|ŸsçN\‡öl›Ãã4pwþt€ŸßæmÛ7nÞè‘Ð Óžø¦škå[DHQûåÔÍ®½û‰ Íš6e3¦ëb¶sh9Z…IÕ0-mŸÜ¾ßÓíëã3ùƒñì7ÒLz‰-G«°Ò€áþ´y6Þ ç~½ðÅ—_¤Réêå™~Ï_(ÆvšÝ°Zæ?czÛ´§æGVŽ·øÿ *ÖŽü·4=VSš¹9LæÞ·"WPX¸`ñ¡w“ÆQ""ÌßÈ‚ì3»Áµ€#ÃÚžc¬ÃY”0Üï±.!\¸x©Á`ð÷÷ûfÝÚV-[2i^ýÌvF-G«°ÖŸf:—gëGûËé3Ùý%—ÉÖ¬XÕ8òö_9l¹Æ~³OËÑ*, “s˜,]._àÐGŸL›¢RétúK—¯œ—ǵò­ðw;Í ´¤•F ~äØOÂWe”•—ç?|(‰Œ( !,¯¨ ‘ɤŒYk¿ÙN§åh&=VSš[ó=ÂBC¢›6=|ä(‚ S&MtwwHÜÝ1 ÛwàûÑ#Þ`ÖV{ÍvJ-~¾3@ÓR{{zz._õEÖõë>ÞÞ:N,ÏžÿYXXXï”d¶ äq„@̯ŽƒV±)GDîÝâ:´?}îÜÉ_NFV-[ 8€ æd§ÙN¤åh&=fQš‹ÏØR%‘Hú¥¥õOOGÄh4Î[°$I¶íâq˜[ Á„r¦ vss#I6§æÕÉl'Òbà²Ã@-j­1"N§Ÿ¿pѸI“ÿ¼qƒÞ¨Öh˜÷NÌv2-×# ^^Ĺ[¶œ=ðùÒ̽۷¼½¼Ôjµ§RÉ–›˜ô3ZŽVakÙÀä}Døï9æVxôø1½!‰L{¼<=™÷NÌv-G«0é1‹Ò\#&'&þyýFrRÒÛoŽœ:sA///¶úg<µã¸©Ý±ŸjƒaÇ®Ýç~½PQYØ?=m@¿¾Aƒ¥•…t¿‡¹p±C.½OªT&=pð‡Å™Ëy©u«O¦Na÷ .F½ÄŒVUnçä8.“IÕÍÃGΜ=¯P*ƾóvʇNŸ=§¨¨øõ׆åÞ½»~㦂 cßo¨šq±&I2±{÷äÄDúOŠ¢XÉLó˜#‹,ZÒ²E Š¢Þ^ÞÍ›G{{{õNI©k9÷<¸•}{õ²Ì6±/A_îÒY&“}»qÓ{o©G“oFï¹ì”#‚#q\'³B«~*ÑMš,œ?÷À‡æÏž!¤(jÆÜyáa¡[b+åQ “Iq§÷xyzâãÄ‚ÅKŠKJׯýÂTÎk#GÇuì0áý÷¶îØI÷U<$’æÍ¢ß5*ªqdmUãÖ½q×àÏë7æ|ú½=çÓϮ߸ɶE €Ñhܲ}GÏ=0 Ãqœ$IŠ¬Ï»Ä›GG‡¨T«Ö®»›—§Ñj³þ¼¾iËÖ®ññ’¤ ÷< çcîäæ–WT¤öJùnë¶ïNï“:ö¬÷ßy»¸¤dÆÜyV$„ÌOs;ÌÆ0ìçÓ§ú±¨¸89é—§çŒ9sCBTýû''%Úõ@÷òÓƒñó¥™Ã_Ú2&† ˆUk×µˆ‰Áp¬廹¹e.Z8ú÷ÆMú½'D¥š3ã@§¸8‘Hôû—ôë øõâï-cbNŸ=7öÝw2ú÷£BJ¥ræÜyjµÚËËË¢³ýi'Í[Ø2ûiYÙá#G?¡PÈöë×7-M*õ ¯­O2~ìû?9ºcÏž ßmNë“Ú?=ÍÚ2­Ü{n\¯×ž¹l̨‘M¢¢‚X²|e|çN%¥¥¹wójÍ{X-Åê5b‘è½·Ç4Šˆ¸qóæŽÝ{6oÛþÖ¨‘îbq\‡/ýÓ~»˜Ò3 Bø¿&@q¯ªªzRPxüäÏÖ ƒïÝúG”ñ©-5û³E‹¿t¹cûösfNëÐ$I’$1ìï6 Ã0w±xØ+C^6ôÂÅ‹~84â­·_îÒyöôOXw‘=*ÚgÏ–,[1öÝwÂÃB1 [ºbe÷®/wïڕήâ8! ëTþ“‚«YY³§’Ô#¢¨ömÛ$yðÐáÑ#Þ@$¡[×¥+Vêtº’ÒRúr!¼z-kçÞ½åä(ʰÐP™LjÝxk@qä§ã¿^øM­ÑFÿ~i©‰ õÈ&š†Ž>U ‹M³sîäJ=<¢›6iŽ¢¨Åèñn‹˜˜'…òÞɽˢ‹ìW©R«—­\=qüØà  Ç—®XÙ£{÷®ñ]è©8i½{YÇ[/¿¢²Ð$ª1ý]Š¢š5mZm0èõz¹\Þ9.àʵ¬ÇOž4‰Š ©¬ªš>gn¯ž=?3[©PPuùÊÕs¿^°R5kýé’ÒÒÅ™Ë{&öÈ\ôùŽÝ»[µlÙ2&fýÆ—®\ý`ìØ£Ç7mÒ$¶u++¿T 8YHÛ6{ßÎíç/\Ø»ÿûí»vwï2°¿–11/“{÷îá£ÇΞ;ýáÄ Ý»v5úYs‘-•òŠŠUkÖN™<Ñ×ÇÇñ%ËWôLLŒïÜÉ4·ÌFbª–òCT*À­Û©‚ƒé=7²³• …\.H¥íÛµûýÒ¥ûòÓS{C 1 2(Ã],6Ó, Ú¨µïAQÔìùŸM?V.“•”–œ>{®_zÚ¦-[F>døë©½Rš5mzéÊ•«¿ˆïÒyØàÁ¾¾>v:ÓÅú†½Ü¥KB·ny÷îï=p`Úô™ááú¦ÓO0œøåÔGŽæ?z”Ô#á«5_Ðí“©g®‹¬¨”>}ºöëõ}ø¡R© »½““ã:v¨S‚Õbùþ~~ÉI‰ë¾^_^^v3;ûð‘£ï¿=>_•/¡[×_¬! ‚^t<"<\"‘¬\³¦oŸ>E]¹víÆÍ[€7o%tëjQ·Ö.Ä_9w>z¹~ÃÆo7m..)Ñét…ECßÐéôíÛµ0öým›6’$9f츟O¶]K—k¤iH’DQ´QDøŒ¦íßµ£ÛËñßmÝFôÝÖm]_Ž?°kçôiS#ÂÃPµ1œtaQÑ—ë¿™1mªR©Àq|Éò•}z÷ŠëØ¡SØk/BøñÔ)¯¿:ì—Óg–,_q+ûö'Ó¦˜¿§8¾s'Š¢Ú´‰õöò(ŠÅŸ}j4¢ËV®Ú°yKpPÐwß|¢R]üãÚ¤ÿ¾çRó#úõmo¼5ljQo¼~áâÅÅ™Ë3-Üsà{‘PØíåø'ô%cʤ‰b±8så*^ŸÑ¿Ÿ•Ê€ç©xFÎ[Ã`¿ÙEa&õðùúðÃ_£›´ý;·#bOÛ̘‹lª,Ê\¶dÁ©TŠãøâe+ú§§µmk@Û,RÔðaCG¾>œ^« Çqóæ_*•ž=yœ¢(zp!lÕ²Å7ëÖ!I’AìÚº™ö¶EéZ׬iÛ¥s§›·²Ç½ûNŸÞ½~¿téæ­ìc'NŽ5ðÍÆM»÷í ÚðÕº¿rî\øí¢R¡øfã¦ØÖ­#EØYm§Ã³!„æ¾¶ÖoþÏZ€¢ââ­;vVTTöMKMèÖ­AT¦Lš¸zݺ cßÿbÝWú¥Ç¶n]ï{ºµÕÇñÚ<!¬®®6ßC§’Ì÷ +¢€XFdѧó:t0½O*EQS&M¢KÇqüIAÁñŸ޲ᛲòrµF3ç³}z÷1ü5’$:qÂF-ç h&Ͷ[ B8cμ3çÎßÌÎþ|é²k^o•Æ‘‘#†ÿxæìAúǶn]ϧæØ;ÑÖryæ™)‰Ä=0 `@ß¾€K—¯øùøîÚ»oÌèQY×ohµÚ”žItãdå圮šËcX‹ ˆÍÛ¶_ûózlëV#ßx½¼¢ÂôÑã'O ¤öì?àåé9zÄt†¡*E…‡…nZÿ†aõhO´¾‡9EÅÅ /õõõ¹š•Õ9®c¥Z}ïÁƒ´>©ú¦oÛ± T*Á¿ß–`¶þÊÉùåÌÙòŠ u•º¤´ÔÏ×·KçNýûËå2æ=e¿Ù hí?øÃ¾ïäçGF6þê°-Û¶üýü’ºyÜ3`0?›;»Þ*$IZ¿¾sÐc&l?c{þÂ…UkÖõLìQ¥VÏ[°°EóætÛp7ïÞ™óçeee …Ð"¦ùÁÃ?¶hÞ¬Yttýꉢè·ßmn=qÜXwwwA Fã×ßnر{ÏÑãÇçLÿ¤Eì/3p! òš¶ÿ¸tyîÌ¿ývñ~~þ¼Y3nçÜ¡P¥V³^#öž±µÊýe.oß®íÄñã¦Nž$‹õÕúóæ*Š™sç-\²tò„ ™+W-[µÚßϯ]Û6ë7lܸyk-µ´í…‹—vé×§W EQ£Ñˆ0iü¸¶mbÕjÍÌyóó>úñHưW7|·™ 'qé=ûõ•J¥ôvÖõEÅÅÁÁÁr¹,²Q£«YY¦Ãl¬ïãÒï pýæh?ÿÚºMFlÔèÝ·Þ$B$5ŠûÍ7}}¼ÛÆÆ†„¨f|45Àß?9)Ñh0N™41D¥’H$=üý^(ÊÍÍ­äi‰X‘Ëúóú¶]»z§$çÞÍ+,*RÓ¯­&IR&“ûõW‚ îæå¥¦¤¬[ÿÍÓ§e?:xC]dÙŒieýyýÖíÛûõMíÕK¥ Îɹ³ÿàŸ<Á0ìð‘£·srº¿2(£wJòÝ{÷nçÜiÕ¸æ#G׈IY”ÒAS!*UXh(vv'I’¢¨¦M¢š7‹¦÷Ëe²á¯!|mè+EÕVër9¹¹€gþÝLJH˜öádzÛô⋼{÷sïæ ÎpðÐáŒþý™q–u³™Ñʽ›7sÞ|z»s\Ü›£F\»–u;''1!¡YtÓm;wA‡ddÜÊÎ^µv}jP}çÍѬԈI½€©E™?hÊSšï§Óæ¦cꑘ®ª4\¾lÚVzþ³ÂÜÜ!ƒ2RSR¸ó8 ä?|hî“s¦Nžäî.ν›wæÜ¹ñ“ÿgþ•Bn¼µŒa¸õ~Ää¤Äý߬¬ª¢ÿŒëØÑt$eÖðë««­$í™7›­ˆðpÓvÇíÓS{oÙ¾3ÿáÃ/¾ü2<,ìjÖ5À”É“òîÝûñè1úë-[´¨íÙ*ÇÕˆIY”æÖ3 ¹|ã×_:r¤¸¤¤ITTß´>ðùÕÀè/OÏ+ײvìÞ“Þ§wJRëf3£Õ²E̔ɓ®eeuêØÑËÓ3ëúõÒ§O'~þÅtLvvv|—.Û·ÛºcWóèèÁÙ©Þ%Ç „‰ûë¯E™·Ä¹wóLÛÍ›E¯^÷eÞ½û……LÄ47 I²wrÏV-b¦MŸI§SÁ¶MvìÞsùêµ_¹qó–#Ç~:ñË)™L6wÆôöíÚZœÏíòp«ïjÌ—0qùêUz#D¥jùr—.ŸôOOc·?À°Žã'~þÅtï°qd¤Ÿ¯¯Z£1 ÕÕÕ½’{9ö@¯×oÞ¶½e‹˜ú©8‘Ç,J ŸÖON­Ö\¸ø;½ýÚÐW „Ç =ñã¡1£GqÙlGh™¦ÒÚ¶‰=÷ë…?.]®6V­YlzþÈÇÇ翨8ºÅ9ÖBؽ?ÝiÕ²eÏÄÇõz½=8]Œ”žIýÒúH=<Úµm3$cà×6Ðû¯\ËÊÍË3z”T*mݪå¸÷ÞaÛRÖà\ߣ&òó?ðññ™õÉG §ñ9Õ÷$9qü¸'M¤(J«ÕêõÿLË4ŒC26”¢(£ÑXëôeWï{pkŒXƒÁ˜¹r5I’žžž™Ÿ/PÈåN9UµAAQ”ü‰D¢OgÏ:vâ$Žcmbcã;wb,ÅÉe„ ?xR'9 Ç?_šù¤ @¼ôó>ÞÞl­ɤ—ê¤Õ&ö¥ŽÚƒçSÛ¹S#hb´ïë2U£Ñ,\’™“›ß¹óGþO$²òJ—ºšÍ°V=î¤:ºFLzÌ¢4G×Ë»qærƒÑ0uò¤^É=1 ãÂZ½.¥åÂï¾`M¹(Š:|äèŽ={{''ù†‡DòÿóÆO½áÖZ½EÅ%k¾üÊ××çÛ/×øûcÆz¶Î³KËÑ*LzÌ¢4‡Úií³g»÷íû`üØÆaÆ7Ï<õƒC1í©TÎøh†aôR<<õƒC÷\ „ ò\'Ãf;–ËßsqŽù¬Ãù΢Âò|f~Læ?_¶jËq³™Ñr´ ‹'úŸ1"GúÜ„ï{p­|›Ò\|ß8áï¹p­üÚq޹¦<<öÃ÷=8d6ß÷hiÃkõ9Ý̛͌–£UX<Ѧ×Tå×ê刖£UX\«0u0_ãÆ‰ÂšI³™Ñr´ ‹'š–æÇˆ<®Ó<®Ÿ÷àÙ|Þ£A¤ùvšÇÕàcšÇÕ°ë}. Žõ=Ø2›á‰eNZ¾E€$If$!‰™‘sF³™Ñr´ ‹'Ú$Üɽ£Ö¨½=½MK­YÄüWÛÏʘA­N«T(öÈÙ´ÁžýµfãQW³mJ4”‹lžŽÚ„ìW±.ñß˯­pëgÙʹ3I ƒƒ‚!„%OK,.AÿÎyágÚ_óS¤Æ?/O/U°ŠöEmrÕk*ÖéàÚ¾ò¢}È¿ö›°Çl›^²â"s mjÕYAžkÔM¥¦ëÌwšö#àùv]Ê·yŽj~dÙ{f˜KÿÖ·BŠêoE%tEXtdate:create2015-10-10T09:01:41+01:00!ç[÷%tEXtdate:modify2015-10-10T09:01:41+01:00PºãKtEXtSoftwaregnome-screenshotï¿>IEND®B`‚denemo-2.2.0/docs/PaxHeaders.19168/transformations0000644000000000000000000000013213135434151016633 xustar0030 mtime=1500919913.293315139 30 atime=1500919914.539981806 30 ctime=1500919913.293315139 denemo-2.2.0/docs/transformations/0000755000175000017500000000000013135434151020561 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/docs/transformations/PaxHeaders.19168/Makefile.am0000644000000000000000000000013213135434036020746 xustar0030 mtime=1500919838.116648472 30 atime=1500919844.296648472 30 ctime=1500919913.293315139 denemo-2.2.0/docs/transformations/Makefile.am0000644000175000017500000000000013135434036022605 0ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/docs/transformations/PaxHeaders.19168/Makefile.in0000644000000000000000000000013213135434044020756 xustar0030 mtime=1500919844.323315139 30 atime=1500919916.543315139 30 ctime=1500919913.289981805 denemo-2.2.0/docs/transformations/Makefile.in0000644000175000017500000003632213135434044022635 0ustar00jjbenhamjjbenham00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs/transformations DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/as-compiler-flag.m4 \ $(top_srcdir)/build/binreloc.m4 $(top_srcdir)/build/gcov.m4 \ $(top_srcdir)/build/gettext.m4 \ $(top_srcdir)/build/glibtests.m4 \ $(top_srcdir)/build/gtk-doc.m4 $(top_srcdir)/build/iconv.m4 \ $(top_srcdir)/build/lib-ld.m4 $(top_srcdir)/build/lib-link.m4 \ $(top_srcdir)/build/lib-prefix.m4 $(top_srcdir)/build/nls.m4 \ $(top_srcdir)/build/po.m4 $(top_srcdir)/build/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = @pkgdatadir@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ ALSA_CFLAGS = @ALSA_CFLAGS@ ALSA_LIBS = @ALSA_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EVINCE_2_0_CFLAGS = @EVINCE_2_0_CFLAGS@ EVINCE_2_0_LIBS = @EVINCE_2_0_LIBS@ EVINCE_2_30_CFLAGS = @EVINCE_2_30_CFLAGS@ EVINCE_2_30_LIBS = @EVINCE_2_30_LIBS@ EVINCE_2_32_CFLAGS = @EVINCE_2_32_CFLAGS@ EVINCE_2_32_LIBS = @EVINCE_2_32_LIBS@ EVINCE_CFLAGS = @EVINCE_CFLAGS@ EVINCE_LIBS = @EVINCE_LIBS@ EXEEXT = @EXEEXT@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ FLUIDSYNTH_CFLAGS = @FLUIDSYNTH_CFLAGS@ FLUIDSYNTH_LIBS = @FLUIDSYNTH_LIBS@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKSOURCEVIEW_CFLAGS = @GTKSOURCEVIEW_CFLAGS@ GTKSOURCEVIEW_LIBS = @GTKSOURCEVIEW_LIBS@ GUILE_1_8_CFLAGS = @GUILE_1_8_CFLAGS@ GUILE_1_8_LIBS = @GUILE_1_8_LIBS@ GUILE_2_CFLAGS = @GUILE_2_CFLAGS@ GUILE_2_LIBS = @GUILE_2_LIBS@ GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_EFFECTIVE_VERSION = @GUILE_EFFECTIVE_VERSION@ GUILE_LDFLAGS = @GUILE_LDFLAGS@ GUILE_LIBS = @GUILE_LIBS@ GUILE_LTLIBS = @GUILE_LTLIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBAUBIO_CFLAGS = @LIBAUBIO_CFLAGS@ LIBAUBIO_LIBS = @LIBAUBIO_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALEDIR = @LOCALEDIR@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_DATA_DIR = @PACKAGE_DATA_DIR@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ PORTAUDIO_CFLAGS = @PORTAUDIO_CFLAGS@ PORTAUDIO_LIBS = @PORTAUDIO_LIBS@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ RANLIB = @RANLIB@ RSVG_CFLAGS = @RSVG_CFLAGS@ RSVG_LIBS = @RSVG_LIBS@ RUBBERBAND_CFLAGS = @RUBBERBAND_CFLAGS@ RUBBERBAND_LIBS = @RUBBERBAND_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHTOOL = @SHTOOL@ SMF_CFLAGS = @SMF_CFLAGS@ SMF_LIBS = @SMF_LIBS@ SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ SNDFILE_LIBS = @SNDFILE_LIBS@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XML2_CFLAGS = @XML2_CFLAGS@ XML2_LIBS = @XML2_LIBS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ denemo_bin_path = @denemo_bin_path@ denemo_load_path = @denemo_load_path@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ installed_test_metadir = @installed_test_metadir@ installed_testdir = @installed_testdir@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/transformations/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign docs/transformations/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: denemo-2.2.0/docs/PaxHeaders.19168/denemo.css0000644000000000000000000000013213135434036015442 xustar0030 mtime=1500919838.059981806 30 atime=1500919916.559981805 30 ctime=1500919913.263315139 denemo-2.2.0/docs/denemo.css0000644000175000017500000003754013135434036017324 0ustar00jjbenhamjjbenham00000000000000/* * eLyXer -- convert LyX source files to HTML output. * * Copyright (C) 2009-2010 Alex Fernández * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ /* --end-- * Global CSS file for LyX documents. */ body { font: 90% sans-serif; background: #f9f9f9; color: black; margin: 0; padding: 0; } #globalWrapper { margin: 10px 5%; padding: 20px; background: #ffffff; line-height: 1.5em; } /* Basic styles */ a { text-decoration: none; background: none; } a:link { color: #0030c0; } a:visited { color: #603090; } a:active { color: #ffa000; } a:hover { text-decoration: underline; } h1 { margin-top: 1em; line-height: 1.5em; } h1.Part { text-align: center; } h1.Part- { text-align: center; } sup { font-size: 0.75em; line-height: 0.5em; vertical-align: text-top; } sub { font-size: 0.75em; line-height: 0.5em; vertical-align: text-bottom; } div.Standard { margin: 1em 0; } div.Unindented { margin: 0; } div.Indented { text-indent: 30pt; margin: 0; } div.Indented * { text-indent: 0pt; } p.dir { float: right; } p.printindex { font-size: 0.90em; } a.printindex { color: black; } table { display: inline-table; text-align: center; border-collapse: collapse; margin-top: 1em; margin-bottom: 1em; } tr.header { border-bottom: thin solid #c0c0c0; background: #ffffff; font-weight: bold; } td { padding: 1ex; border: thin solid #f0f0f0; } td div.Standard { margin: 0ex; padding: 0ex; } div.caption div.Standard, div.table div.Standard { margin: 0ex; padding: 0ex; } td.numeric { text-align: right; } td.empty { text-align: center; } div.right { text-align: right; } div.center { text-align: center; margin-left: auto; margin-right: auto; } p.biblio { } div.Paragraph, div.Paragraph- { font-weight: bold; font-size: 103%; } span.versalitas, span.noun { font-variant: small-caps; } span.sans { font-family: sans-serif; } span.code { font-family: monospace; } div.Plain { display: inline; width: auto; } h2 { line-height: 1.4em; } span.Description-entry { font-weight: bold; } span.List-entry { display: inline-block; width: 25%; vertical-align: text-top; } span.List-contents { display: inline-block; width: 75%; vertical-align: text-top; } div.Space { display: none; } span.appendix { display: none; } h1.biblio { } span.greyedout { color: #808080; } div.Description, div.List, li { margin: 1em 0; } li.nested { list-style-type: none; } span.Info { background: #f0f0f0; border: thin solid #c0c0c0; } pre { padding: 0em; margin: 0em; width: auto; font-family: monospace; line-height: 1.5em; } pre.LyX-Code { margin: 0.5em 3em; } a.Label { text-decoration: none; color: #000000; } span.phantom { color: #ffffff; } a.biblioentry { color: black; } span.menuitem { font-size: 105%; } span.normal { font-style: normal; } div.PlainVisible { width: auto; } div.indexgroup { margin-left: 2em; } span.strong { font-weight: bold; } /* Figures and Tables */ img.embedded { width: 100%; _width: auto; } div.float { margin-top: 1ex; margin-bottom: 1ex; text-align: center; } span.float { margin-top: 1ex; margin-bottom: 1ex; text-align: center; } div.figure { display: inline-block; text-align: left; padding: 1ex; margin-left: auto; margin-right: auto; border: thin solid #c0c0c0; } div.table { display: inline-block; text-align: left; padding: 1ex; margin-left: auto; margin-right: auto; border: thin solid #c0c0c0; } div.algorithm { display: inline-block; text-align: left; padding: 1ex; margin-left: auto; margin-right: auto; border: thin solid #c0c0c0; } div.caption { text-align: center; font-family: sans-serif; margin-left: auto; margin-right: auto; padding: 0.5ex; } img.figure { width: 100%; _width: auto; } div.multifigure { padding: 1ex; width: 100%; } div.multitable { display: inline-block; padding: 1ex; margin-left: auto; margin-right: auto; border: thin solid #c0c0c0; } div.multialgorithm { display: inline-block; padding: 1ex; margin-left: auto; margin-right: auto; border: thin solid #c0c0c0; } div.wrap-l, div.wrap-o, div.wrap-i { margin: 2ex; float: left; } div.wrap-r { margin: 2ex; float: right; } div.listing { display: inline-block; text-align: left; margin-left: auto; margin-right: auto; padding: 0.5ex; border: thin solid #c0c0c0; } span.number-left { float: left; background: #f0f0f0; width: 3em; text-align: right; margin-right: 1em; } span.number-right { float: right; background: #f0f0f0; width: 3em; text-align: right; margin-left: 1em; } /* Header */ h1.title { text-align: center; } h2.author { text-align: center; } h2.Date { text-align: center; } div.abstract { margin: 1em 3em; text-align: left; font-size: 0.95em; } p.abstract-message { text-align: center; font-weight: bold; } div.tocheader { margin: 1em 0; font-size: large; } a.toc { color: black; } div.tocindent { padding: 0 0 0 2em; } div.toc { margin: 0.5em 0; font-size: 0.95em; } div.fulltoc { padding: 1em; } div.warning { font-size: 120%; color:#cc0000; } div.Institute { text-align: center; } /* * Extras: colors, footnotes, boxes, spaces... */ /* Raw colors */ span.red { color: #c00000; } span.blue { color: #0000c0; } span.green { color: #00c000; } span.magenta { color: #c000c0; } span.cyan { color: #00c0c0; } span.yellow { color: #c0c000; } span.white { color: #ffffff; } /* Footnotes */ span.SupFootMarker { color: #0030c0; font-size: 0.75em; line-height: 0.5em; vertical-align: text-top; } span.AlignFootMarker { color: #0030c0; } div.EndFoot { margin: 0.2ex; background: #ffffff; padding: 0.5ex; font-size: small; font-weight: normal; line-height: 1.5em; text-align: left; } span.MarginFoot { float: right; clear: right; margin: 0.2ex; border: thin solid #c0c0c0; background: #ffffff; width: 30%; padding: 0.5ex; font-size: small; font-weight: normal; line-height: 1.5em; text-align: left; } span.HoverFoot { margin: 0.2ex; border: thin solid #c0c0c0; background: #ffffff; padding: 0.5ex; font-size: small; font-weight: normal; line-height: 1.5em; text-align: left; } span.FootOuter .HoverFoot { display: none; position: absolute; } span.FootOuter:hover .HoverFoot { display: inline; float: none; } span.Marginal { float: right; clear: right; margin: 0.2ex; border: thin solid #c0c0c0; background: #ffffff; width: 30%; padding: 0.5ex; font-size: small; font-weight: normal; line-height: 1.5em; text-align: left; } span.Note { display: none; } /* Boxes */ div.framed { outline-style: solid; } div.frameless { } div.Frameless { } div.Boxed { outline-width: thin; outline-style: solid; } div.Framed { outline-width: thin; outline-style: solid; line-height: 200%; } div.Doublebox { outline-style: double; } div.Shadowbox { outline-style: outset; margin: 18px; } div.Shaded { outline-style: inset; } div.ovalbox { outline-style: groove; } div.Ovalbox { outline-style: ridge; } hr.line { display: inline-block; } /* Spaces */ span.hspace { display: inline-block; } span.vspace { display: inline-block; vertical-align: text-top; } span.hfill { display: inline-block; margin-left: auto; margin-right: auto; min-width: 20mm; background: #fff0f0; } div.defskip { display: block; height: 1em; } div.smallskip { display: block; height: 0.5em; } div.medskip { display: block; height: 1em; } div.bigskip { display: block; height: 2em; } div.vfill { display: block; height: 30em; } /* Sizes */ span.scriptstyle { font-size: 0.75em; } span.scriptscriptstyle { font-size: 0.60em; } /* Chunks */ div.chunk { width: auto; } span.chunkleft span.chunkright { font-style: normal; } span.chunkdecl { font-style: italic; padding: 0em 2em; } span.chunkref { font-style: italic; } /* Split Part Navigation */ div.splitheader { margin: 0em; padding: 0.1em; text-align: center; background: #f9f9f9; overflow: auto; } span.next { float: right; width: 30%; text-align: right; } span.up { display: inline-block; width: 30%; text-align: center; } span.prev { float: left; width: 30%; text-align: left; } hr.footer { margin-top: 2em; } div.footer { font-size: 0.90em; margin: 1em 0; } /* Change Tracking */ span.inserted { color: #0000ff; } span.deleted { color: #ff0000; text-decoration: line-through; } /* Google Charts */ img.chart { vertical-align: middle; } /* --end-- * CSS file for LaTeX formulas. */ /* Formulas */ .formula { text-align: center; font-family: "DejaVu Serif", serif; margin: 1.2em 0; } span.formula { white-space: nowrap; } div.formula { padding: 0.5ex; margin-left: auto; margin-right: auto; } /* Basic features */ a.eqnumber { display: inline-block; float: right; clear: right; font-weight: bold; } span.unknown { color: #800000; } span.ignored, span.arraydef { display: none; } .formula i { letter-spacing: 0.1ex; } /* Alignment */ .align-left, .align-l { text-align: left; } .align-right, .align-r { text-align: right; } .align-center, .align-c { text-align: center; } /* Structures */ span.overline, span.bar { text-decoration: overline; } .fraction, .fullfraction { display: inline-block; vertical-align: middle; text-align: center; } .fraction .fraction { font-size: 80%; line-height: 100%; } span.numerator { display: block; } span.denominator { display: block; padding: 0ex; border-top: thin solid; } sup.numerator, sup.unit { font-size: 70%; vertical-align: 80%; } sub.denominator, sub.unit { font-size: 70%; vertical-align: -20%; } span.sqrt { display: inline-block; vertical-align: middle; padding: 0.1ex; } sup.root { font-size: 70%; position: relative; left: 1.4ex; } span.radical { display: inline-block; padding: 0ex; font-size: 150%; vertical-align: top; } span.root { display: inline-block; border-top: thin solid; padding: 0ex; vertical-align: middle; } span.symbol { font-size: 125%; } span.bigsymbol { font-size: 150%; } span.largesymbol { font-size: 175%; } span.hugesymbol { font-size: 200%; } span.scripts { display: inline-table; vertical-align: middle; } .script { display: table-row; text-align: left; line-height: 150%; } span.limits { display: inline-table; vertical-align: middle; } .limit { display: table-row; line-height: 95%; } sup.limit, sub.limit { line-height: 150%; } span.symbolover { display: inline-block; text-align: center; position: relative; float: right; right: 100%; bottom: 0.5em; width: 0px; } span.withsymbol { display: inline-block; } span.symbolunder { display: inline-block; text-align: center; position: relative; float: right; right: 80%; top: 0.3em; width: 0px; } /* Environments */ span.array, span.bracketcases, span.binomial, span.environment { display: inline-table; text-align: center; border-collapse: collapse; margin: 0em; vertical-align: middle; } span.arrayrow, span.binomrow { display: table-row; padding: 0ex; border: 0ex; } span.arraycell, span.bracket, span.case, span.binomcell, span.environmentcell { display: table-cell; padding: 0ex 0.2ex; line-height: 99%; border: 0ex; } /* * CSS file for LaTeX formulas, extra stuff: * binomials, vertical braces, stackrel, fonts and colors. */ /* Inline binomials */ span.binom { display: inline-block; vertical-align: middle; text-align: center; font-size: 80%; } span.binomstack { display: block; padding: 0em; } /* Over- and underbraces */ span.overbrace { border-top: 2pt solid; } span.underbrace { border-bottom: 2pt solid; } /* Stackrel */ span.stackrel { display: inline-block; text-align: center; } span.upstackrel { display: block; padding: 0em; font-size: 80%; line-height: 64%; position: relative; top: 0.15em; } span.downstackrel { display: block; vertical-align: bottom; padding: 0em; } /* Fonts */ span.mathsf, span.textsf { font-style: normal; font-family: sans-serif; } span.mathrm, span.textrm { font-style: normal; font-family: serif; } span.text, span.textnormal { font-style: normal; } span.textipa { color: #008080; } span.fraktur { font-family: "Lucida Blackletter", eufm10, blackletter; } span.blackboard { font-family: Blackboard, msbm10, serif; } span.scriptfont { font-family: "Monotype Corsiva", "Apple Chancery", "URW Chancery L", cursive; font-style: italic; } /* Colors */ span.colorbox { display: inline-block; padding: 5px; } span.fbox { display: inline-block; border: thin solid black; padding: 2px; } span.boxed, span.framebox { display: inline-block; border: thin solid black; padding: 5px; } /* * Obsolete definitions, kept for backwards compatibility. */ /* Footnotes */ span.FootMarker { color: #0030c0; font-size: 0.75em; line-height: 0.5em; vertical-align: text-top; } span.Foot { margin: 0.2ex; border: thin solid #c0c0c0; background: #ffffff; padding: 0.5ex; font-size: small; font-weight: normal; line-height: 1.5em; text-align: left; } span.FootOuter .Foot { display: none; position: absolute; } span.FootOuter:hover .Foot { display: inline; float: none; } /* Dotted box */ span.dotted { border-top: thin dotted; } /* Obsolete aligned structures */ span.numerator-l { display: block; text-align: left; } span.numerator-r { display: block; text-align: right; } span.numeratorl { display: block; text-align: left; } span.numeratorr { display: block; text-align: right; } span.framebox- { display: inline-block; border: thin solid black; text-align: center; padding: 5px; } span.framebox-l { display: inline-block; border: thin solid black; text-align: left; padding: 5px; } span.framebox-r { display: inline-block; border: thin solid black; text-align: right; padding: 5px; } td.formula-l { text-align: left; padding: 0.2ex; border: 0ex; } td.formula-c { text-align: center; padding: 0.2ex; border: 0ex; } td.formula-r { text-align: right; padding: 0.2ex; border: 0ex; } /* Obsolete limits */ sub.bigsymbol { display: table-row; text-align: left; line-height: 150%; } sup.bigsymbol { display: table-row; text-align: left; line-height: 150%; } /* Obsolete cases */ table.cases { display: inline-block; text-align: center; border-collapse: collapse; margin: 0.2em; border-left: thin solid; vertical-align: middle; } table.cases tr td { padding-left: 1ex; padding-right: 1em; } /* Obsolete binomials */ span.fullbinom { display: inline-block; vertical-align: middle; text-align: center; } span.upbinom { display: block; padding: 0em; } span.downbinom { display: block; padding: 0em; } /* Obsolete environments */ table.formula { display: inline-block; text-align: center; border-collapse: collapse; margin: 0em; vertical-align: middle; } td.formula { padding: 0.2ex; border: 0ex; } table.environment { display: inline-block; text-align: right; margin: 0; vertical-align: middle; } table.environment tr td { padding: 0 1em; } /* * CSS section for print. */ @media print { body { font: 90% serif; background: #ffffff; color: black; margin: 0; padding: 0; } #globalWrapper { width: 100%; margin: 0px; padding: 0px; background: #ffffff; line-height: 1.5em; } span.FootOuter .Foot { display: block; position: relative; float: right; clear: right; margin: 0.2ex; border: thin solid #c0c0c0; background: #ffffff; width: 30%; padding: 0.5ex; font-size: small; font-weight: normal; line-height: 1.5em; text-align: left; } span.FootOuter .HoverFoot { display: block; position: relative; float: right; clear: right; margin: 0.2ex; border: thin solid #c0c0c0; background: #ffffff; width: 30%; padding: 0.5ex; font-size: small; font-weight: normal; line-height: 1.5em; text-align: left; } a:visited { color: #0030c0; } /* end of print CSS */ } denemo-2.2.0/docs/PaxHeaders.19168/Makefile.am0000644000000000000000000000013213135434036015515 xustar0030 mtime=1500919838.053315139 30 atime=1500919916.566648472 30 ctime=1500919913.259981806 denemo-2.2.0/docs/Makefile.am0000644000175000017500000000025713135434036017372 0ustar00jjbenhamjjbenham00000000000000SUBDIRS = transformations images reference docdir = $(datadir)/${PACKAGE}/manual dist_doc_DATA = denemo-manual.html denemo.css imagesdir = $(datadir)/${PACKAGE}/manual/images denemo-2.2.0/docs/PaxHeaders.19168/DESIGN0000644000000000000000000000013213135434036014355 xustar0030 mtime=1500919838.053315139 30 atime=1500919916.569981806 30 ctime=1500919913.033315139 denemo-2.2.0/docs/DESIGN0000644000175000017500000000306113135434036016226 0ustar00jjbenhamjjbenham00000000000000SIMPLICITY OF FEATURES Denemo doesn't attempt to be a full featured, wysiwyg notation editor. Editing that can best be done in Lilypond code will be left to LilyPond. There is no advantage to a GUI environment for adding playing directions, fine-tuning beams, adjusting a staff's relative position, and so on. like that. In fact, it seems that there's a distinct disadvantage to GUIfying these operations: pushing such features to the frontend burdens the interface, making the GUI tool harder to use. (this is the case with graphic editors such as Finale). ASCII text is a much better to handle this kind of complexity. Denemo by design is only half the score preparation chain, final tweaks are done in the backend, currently LIlypond and ABC, but eventually many other ASCII notation formats will follow. Denemo will nonetheless contain many functions and features. To keep the large amount of commands clear and provide ease of use, Denemo uses modes. The primary way of interacting with Denemo is through the computer keyboard. Nearly all functions in Denemo are accessible through keybindings. Denemo will also permit the inputting of notation with a midi keyboard as well. The combination of modes and Denemos keyboard emphasis, as well as the need to learn Lilypond make the learning curve for Lilypond greater than other notation editors. The longer learning curve is traded off by the higher quality published output and the much greater flexibility that the combination of Denemo and LIlypond give. The effort taken to learn Denemo is well worth the results. denemo-2.2.0/docs/PaxHeaders.19168/gtk-doc.make0000644000000000000000000000013213135434036015650 xustar0030 mtime=1500919838.089981805 30 atime=1500919916.569981806 30 ctime=1500919913.673315139 denemo-2.2.0/docs/gtk-doc.make0000644000175000017500000002104413135434036017522 0ustar00jjbenhamjjbenham00000000000000# -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### if GTK_DOC_USE_LIBTOOL GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = $(LIBTOOL) --mode=execute else GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = endif # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) SETUP_FILES = \ $(content_files) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt EXTRA_DIST = \ $(HTML_IMAGES) \ $(SETUP_FILES) DOC_STAMPS=setup-build.stamp scan-build.stamp sgml-build.stamp \ html-build.stamp pdf-build.stamp \ sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) if ENABLE_GTK_DOC if GTK_DOC_BUILD_HTML HTML_BUILD_STAMP=html-build.stamp else HTML_BUILD_STAMP= endif if GTK_DOC_BUILD_PDF PDF_BUILD_STAMP=pdf-build.stamp else PDF_BUILD_STAMP= endif all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) else all-local: endif docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp #### setup #### GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V)) GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SETUP_0=@echo " DOC Preparing build"; setup-build.stamp: -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ test -f $(abs_srcdir)/$$file && \ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ done; \ fi; \ fi $(AM_V_at)touch setup-build.stamp #### scan #### GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V)) GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V)) GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects"; scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) $(GTK_DOC_V_SCAN)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ scanobj_options="--verbose"; \ fi; \ fi; \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi $(AM_V_at)touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### xml #### GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V)) GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XML_0=@echo " DOC Building XML"; sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) $(GTK_DOC_V_XML)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) $(AM_V_at)touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true #### html #### GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V)) GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V)) GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references"; html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$(?)" = "0"; then \ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ fi; \ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ if test -f $(abs_srcdir)/$$file ; then \ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ fi; \ if test -f $(abs_builddir)/$$file ; then \ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ fi; \ done; $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(AM_V_at)touch html-build.stamp #### pdf #### GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V)) GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_PDF_0=@echo " DOC Building PDF"; pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ mkpdf_options="$$mkpdf_options --verbose"; \ fi; \ fi; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ fi; \ done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) $(AM_V_at)touch pdf-build.stamp ############## clean-local: @rm -f *~ *.bak @rm -rf .libs distclean-local: @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \ fi maintainer-clean-local: @rm -rf xml html install-data-local: @installfiles=`echo $(builddir)/html/*`; \ if test "$$installfiles" = '$(builddir)/html/*'; \ then echo 1>&2 'Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo ' $(INSTALL_DATA) '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} if ENABLE_GTK_DOC dist-check-gtkdoc: docs dist-hook: dist-check-gtkdoc dist-hook-local @mkdir $(distdir)/html @cp ./html/* $(distdir)/html @-cp ./$(DOC_MODULE).pdf $(distdir)/ @-cp ./$(DOC_MODULE).types $(distdir)/ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ @cd $(distdir) && rm -f $(DISTCLEANFILES) @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html else dist-check-gtkdoc: dist-hook: endif .PHONY : dist-hook-local docs denemo-2.2.0/docs/PaxHeaders.19168/GOALS0000644000000000000000000000013213135434036014251 xustar0030 mtime=1500919838.053315139 30 atime=1500919916.583315139 30 ctime=1500919913.036648472 denemo-2.2.0/docs/GOALS0000644000175000017500000000320313135434036016120 0ustar00jjbenhamjjbenham00000000000000This project is tied very strongly to Lilypond, the GNU music typesetter (http://www.cs.uu.nl/people/hanwen/lilypond/) and its mudela file format. Even so, the program has been written with flexibility in mind should anyone want to extend it to deal with other file formats. So, Lilypond is a reasonably full-featured music typesetting package; what's the particular advantage to making this GUI shell for dealing with it? Well, this is what it is for me: I find it a mite difficult to compose or arrange with emacs. I mean, Mozart wouldn't have had a problem with it, but I'm not that talented -- it's very, very helpful to me if I can actually see the music that I'm developing as it gets developed. Not on the large scale -- no GUI notation program that I know of really lets you see enough of the score at once to plan things in the large -- but it's certainly very useful for tinkering with lines and voicings and what instrument gets what and so on. GUI notation tools are also pretty good for entering music quickly if you have a midi keyboard; just plunk down the notes on the midi keyboard with the right hand and enter durations with the left. (Of course, I don't have a midi keyboard myself, but from what I understand this feature allows one to enter a part quite rapidly.) Programs like Finale, for all of their faults, are still pretty good at letting the user do things like that. So, that's what this program sets out to do: to let you develop your musical thoughts in a graphical environment. And it'll let you use a keyboard for note entry once I find someone else to write that module or someone sets me up with a donated midi keyboard. :) denemo-2.2.0/docs/PaxHeaders.19168/Makefile.in0000644000000000000000000000013213135434044015525 xustar0030 mtime=1500919844.146648472 30 atime=1500919916.583315139 30 ctime=1500919913.259981806 denemo-2.2.0/docs/Makefile.in0000644000175000017500000005735213135434044017412 0ustar00jjbenhamjjbenham00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(dist_doc_DATA) TODO ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/as-compiler-flag.m4 \ $(top_srcdir)/build/binreloc.m4 $(top_srcdir)/build/gcov.m4 \ $(top_srcdir)/build/gettext.m4 \ $(top_srcdir)/build/glibtests.m4 \ $(top_srcdir)/build/gtk-doc.m4 $(top_srcdir)/build/iconv.m4 \ $(top_srcdir)/build/lib-ld.m4 $(top_srcdir)/build/lib-link.m4 \ $(top_srcdir)/build/lib-prefix.m4 $(top_srcdir)/build/nls.m4 \ $(top_srcdir)/build/po.m4 $(top_srcdir)/build/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(docdir)" DATA = $(dist_doc_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" pkgdatadir = @pkgdatadir@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ ALSA_CFLAGS = @ALSA_CFLAGS@ ALSA_LIBS = @ALSA_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EVINCE_2_0_CFLAGS = @EVINCE_2_0_CFLAGS@ EVINCE_2_0_LIBS = @EVINCE_2_0_LIBS@ EVINCE_2_30_CFLAGS = @EVINCE_2_30_CFLAGS@ EVINCE_2_30_LIBS = @EVINCE_2_30_LIBS@ EVINCE_2_32_CFLAGS = @EVINCE_2_32_CFLAGS@ EVINCE_2_32_LIBS = @EVINCE_2_32_LIBS@ EVINCE_CFLAGS = @EVINCE_CFLAGS@ EVINCE_LIBS = @EVINCE_LIBS@ EXEEXT = @EXEEXT@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ FLUIDSYNTH_CFLAGS = @FLUIDSYNTH_CFLAGS@ FLUIDSYNTH_LIBS = @FLUIDSYNTH_LIBS@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKSOURCEVIEW_CFLAGS = @GTKSOURCEVIEW_CFLAGS@ GTKSOURCEVIEW_LIBS = @GTKSOURCEVIEW_LIBS@ GUILE_1_8_CFLAGS = @GUILE_1_8_CFLAGS@ GUILE_1_8_LIBS = @GUILE_1_8_LIBS@ GUILE_2_CFLAGS = @GUILE_2_CFLAGS@ GUILE_2_LIBS = @GUILE_2_LIBS@ GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_EFFECTIVE_VERSION = @GUILE_EFFECTIVE_VERSION@ GUILE_LDFLAGS = @GUILE_LDFLAGS@ GUILE_LIBS = @GUILE_LIBS@ GUILE_LTLIBS = @GUILE_LTLIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBAUBIO_CFLAGS = @LIBAUBIO_CFLAGS@ LIBAUBIO_LIBS = @LIBAUBIO_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALEDIR = @LOCALEDIR@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_DATA_DIR = @PACKAGE_DATA_DIR@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ PORTAUDIO_CFLAGS = @PORTAUDIO_CFLAGS@ PORTAUDIO_LIBS = @PORTAUDIO_LIBS@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ RANLIB = @RANLIB@ RSVG_CFLAGS = @RSVG_CFLAGS@ RSVG_LIBS = @RSVG_LIBS@ RUBBERBAND_CFLAGS = @RUBBERBAND_CFLAGS@ RUBBERBAND_LIBS = @RUBBERBAND_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHTOOL = @SHTOOL@ SMF_CFLAGS = @SMF_CFLAGS@ SMF_LIBS = @SMF_LIBS@ SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ SNDFILE_LIBS = @SNDFILE_LIBS@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XML2_CFLAGS = @XML2_CFLAGS@ XML2_LIBS = @XML2_LIBS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ denemo_bin_path = @denemo_bin_path@ denemo_load_path = @denemo_load_path@ docdir = $(datadir)/${PACKAGE}/manual dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ installed_test_metadir = @installed_test_metadir@ installed_testdir = @installed_testdir@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = transformations images reference dist_doc_DATA = denemo-manual.html denemo.css imagesdir = $(datadir)/${PACKAGE}/manual/images all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign docs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-dist_docDATA: @$(NORMAL_UNINSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_docDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_docDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_docDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-dist_docDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: denemo-2.2.0/docs/PaxHeaders.19168/DESIGN.lilypond0000644000000000000000000000013213135434036016206 xustar0030 mtime=1500919838.053315139 30 atime=1500919916.606648472 30 ctime=1500919913.036648472 denemo-2.2.0/docs/DESIGN.lilypond0000644000175000017500000001717013135434036020065 0ustar00jjbenhamjjbenham00000000000000A NEW APPROACH In the original design (the text is below, starting at SIMPLICITY OF FEATURES) the intention was to support limited re-import of lilypond files. With this version of denemo, a route to fairly general import of lilypond files is being trialled. As Matt pointed out, you cannot support everything in lilypond without writing an interactive version of lilypond (complete with scheme interpreter, tex etc done on the fly). But we don't need that. What we need is to visualize the notes as we put them in and edit them - there are a lot of them and it is difficult for musicians to "read" music that is just written as text. But we still want to return to editing after adding lily directives - we want to be able to interpret more or less any lilypond file so that we can play with putting voices on a stave, adding fingerings to some favorite score produced by someone else etc. To support this, the lilypond lexer/parser has been migrated to generate the denemo scoreinfo structure, while keeping the original text of the file with the notes that may be edited. In addition to denemo's graphical window a text is opened to allow direct editing of the lilypond text. At present there is no incremental parser, but in practice reloading the whole file seems adequate (it would be nice to return to the same object after reload, though, insofaras this has a meaning). This design works broadly as follows. The parse tree generated is a list except where assignments are made, where the thing assigned to is a branch off the list. The items in the list are a generalization of the mudelaitem structure, which has been expanded to include a field giving the string from the input file that gave rise to the item. After creating this list, it is traversed: the \context statements give rise to the creation of new denemo "staff" structures and any music lists found within the context are split into measures at the '|'s and attached to the "staff" structure. The original parse tree remains valid however - what was a single list of musical items becomes a branch to a list of measures containing the original pieces of musical item list. This means it is still possible to traverse the tree and write out the original text.This is what is done when the file is saved - there is no re-interpretation of the notes which have not been changed - the original text is just writen out again. When a new musical item is inserted, it has no string associated and a standardized lilypond syntax is generated for that item (using the routines of the old exportmudela code, which remains in use for music written from scratch or imported from elsewhere). Many benefits flow from this approach - to give just one example you can define a key in one place and then use it in several - see examples/simple.ly To change the key you just edit the one definition. There follows a corresponding limitations. For example, it no longer makes sense to introduce another staff in the staff list of the score - where in the lilypond file should the definition go? - what should it be called? Sure, you could cope with all this graphically, but (unlike the notes) this is just one-off stuff better done by cutting and pasting a staff definition textually. So the basic design decision is that everything at the staff level and above is just used by denemo to let you get at the mudelaobjects, while the mudelaobjects are actually *in* the original parse tree and will be output when that is traversed. Without a clear cut division like this you would be left with a mess when it came to writing the file out - which bits of the scoreinfo structure came from the original file and which have been added, and so on. There are some wrinkles arising from grafting a new design on in this way. Barlines are implicit in denemo - in the present implementation the textual barlines can easily get notes inserted after them, they perhaps would be better explicitly represented and given widths etc like other items. The '~' sign for a tie does not come attached to its note in the lilypond parse, while in denemo it is an attribute of the note before it. The handling of context (current duration, and once we allow \relative music, current octave) is tricky, duration is handled ok except at measure boundaries where you have to do it by hand. Finally, there is a lot of the parser that hasn't had any rules written for it yet, so don't expect any old lilypond file to get through it yet. SIMPLICITY OF FEATURES You'll notice that denemo doesn't have hooks for many of Lilypond's features. (In fact, providing hooks for all of them would be practically impossible without writing something at least as complicated as Lilypond itself.) So, to use these specific Lilypond features, the user will have to go into the mudela files denemo produces and alter them directly, without denemo as a go-between. Why is the user forced to do these things manually? Well, mainly, it just doesn't seem that there's much advantage to a GUI environment for putting playing directions directly into the music, fine-tuning the way the music is beamed, putting multiple independent voices onto the same staff, adjusting a staff's relative position, and other things like that. In fact, it seems that there's a distinct disadvantage to GUIfying these operations: pushing such features to the frontend will burden the interface and make GUI tool harder to use. (I can say from personal experience that this has definitely happened to Finale.) It's just much better to handle this kind of complexity with the precision and well-defined-ness of plain ASCII text. I will admit that this manner of doing things will present challenges to novice users. Users should find the effort to be worthwhile, though. And it's not really _that_ difficult to learn how to use GNU lilypond; it's still easier than, say, learning C plus its gtk+ bindings. :) THOUGHTS ON THE RE-IMPORTATION OF MUDELA AND HOW DENEMO WILL SUPPORT IT I want users to be able to use Denemo in two ways: 1) Denemo is used for the initial phases of score creation only. Later changes in the work are made directly to the mudela that Denemo has produced and no longer with Denemo. This work can involve drastic changes to the mudela or more simple changes. 2) Both Denemo and direct mudela editing are used throughout the whole process of score creation; the first editing session is done with Denemo, but thereafter, Denemo sessions can alternate with direct-mudela-editing sessions. This latter way of using Denemo is best enabled (at least that I've thought of) by giving Denemo the ability to reload exported mudela and re-export it without losing any information. If a user wants to, I can't stop them from making radical changes to the mudela that Denemo produces that would prevent Denemo from re-exporting successfully. I do want it to handle moderate changes gracefully, though, especially when the user specifically designates a new block of mudela that should be maintained as-is. This is what the lilydirective data type in datastructures.h is for. When Denemo loads mudela, any items which are specifically designated as non-intelligible to Denemo will be retained as lilydirectives and then written out again when the file is saved. (Users will also have to be able to add, remove, and edit lilydirectives within Denemo; otherwise Denemo would not be able to deal with the deletion of a section of music containing Lilydirectives on its edges sanely.) Lilypond itself will not, however, treat mudela designated as a lilydirective any differently. How? Lilydirective denemo will be put on its own line, and it will have a different amount/kind of whitespace in front of it. The mudela parser works now - expect to see this in a release fairly soon. denemo-2.2.0/PaxHeaders.19168/configure0000644000000000000000000000013213135434045014435 xustar0030 mtime=1500919845.383315139 30 atime=1500919916.613315139 30 ctime=1500919912.833315139 denemo-2.2.0/configure0000755000175000017500000305137313135434045016325 0ustar00jjbenhamjjbenham00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for denemo 2.2.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: denemo-devel@gnu.org about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a $0: shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='denemo' PACKAGE_TARNAME='denemo' PACKAGE_VERSION='2.2.0' PACKAGE_STRING='denemo 2.2.0' PACKAGE_BUGREPORT='denemo-devel@gnu.org' PACKAGE_URL='' ac_unique_file="src/core/main.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS denemo_bin_path denemo_load_path PACKAGE_DATA_DIR pkgdatadir SHTOOL HAVE_GCOV_FALSE HAVE_GCOV_TRUE installed_testdir installed_test_metadir ENABLE_ALWAYS_BUILD_TESTS_FALSE ENABLE_ALWAYS_BUILD_TESTS_TRUE ENABLE_INSTALLED_TESTS_FALSE ENABLE_INSTALLED_TESTS_TRUE GTK_DOC_USE_REBASE_FALSE GTK_DOC_USE_REBASE_TRUE GTK_DOC_USE_LIBTOOL_FALSE GTK_DOC_USE_LIBTOOL_TRUE GTK_DOC_BUILD_PDF_FALSE GTK_DOC_BUILD_PDF_TRUE GTK_DOC_BUILD_HTML_FALSE GTK_DOC_BUILD_HTML_TRUE ENABLE_GTK_DOC_FALSE ENABLE_GTK_DOC_TRUE GTKDOC_DEPS_LIBS GTKDOC_DEPS_CFLAGS HTML_DIR GTKDOC_MKPDF GTKDOC_REBASE GTKDOC_CHECK DENEMO_BUILD_DOC_FALSE DENEMO_BUILD_DOC_TRUE WITH_X11_FALSE WITH_X11_TRUE HAVE_PORTMIDI_FALSE HAVE_PORTMIDI_TRUE FFTW_LIBS FFTW_CFLAGS PORTAUDIO_LIBS PORTAUDIO_CFLAGS HAVE_PORTAUDIO_FALSE HAVE_PORTAUDIO_TRUE RUBBERBAND_LIBS RUBBERBAND_CFLAGS HAVE_RUBBERBAND_FALSE HAVE_RUBBERBAND_TRUE FLUIDSYNTH_LIBS FLUIDSYNTH_CFLAGS HAVE_FLUIDSYNTH_FALSE HAVE_FLUIDSYNTH_TRUE ALSA_LIBS ALSA_CFLAGS HAVE_ALSA_FALSE HAVE_ALSA_TRUE EVINCE_LIBS EVINCE_CFLAGS EVINCE_2_32_LIBS EVINCE_2_32_CFLAGS EVINCE_2_30_LIBS EVINCE_2_30_CFLAGS EVINCE_2_0_LIBS EVINCE_2_0_CFLAGS GTKSOURCEVIEW_LIBS GTKSOURCEVIEW_CFLAGS GTK3_LIBS GTK3_CFLAGS GTK2_LIBS GTK2_CFLAGS LIBAUBIO_LIBS LIBAUBIO_CFLAGS HAVE_AUBIO_FALSE HAVE_AUBIO_TRUE HAVE_EVINCE_FALSE HAVE_EVINCE_TRUE JACK_LIBS JACK_CFLAGS HAVE_JACK_FALSE HAVE_JACK_TRUE HAVE_SMF_FALSE HAVE_SMF_TRUE SMF_LIBS SMF_CFLAGS SNDFILE_LIBS SNDFILE_CFLAGS GTHREAD_LIBS GTHREAD_CFLAGS FONTCONFIG_LIBS FONTCONFIG_CFLAGS RSVG_LIBS RSVG_CFLAGS XML2_LIBS XML2_CFLAGS GLIB_LIBS GLIB_CFLAGS GUILE_2_LIBS GUILE_2_CFLAGS GUILE_1_8_LIBS GUILE_1_8_CFLAGS ENABLE_GLIB_TEST_FALSE ENABLE_GLIB_TEST_TRUE CXXCPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP NM ac_ct_DUMPBIN DUMPBIN LD FGREP SED LIBTOOL GUILE_LDFLAGS GUILE_LTLIBS GUILE_LIBS GUILE_CFLAGS GUILE_EFFECTIVE_VERSION PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG LEXLIB LEX_OUTPUT_ROOT LEX YFLAGS YACC am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX LOCALEDIR POFILES PO_IN_DATADIR_FALSE PO_IN_DATADIR_TRUE INSTOBJEXT GMOFILES CATOBJEXT CATALOGS MSGFMT_OPTS EGREP GREP CPP GETTEXT_PACKAGE DATADIRNAME ALL_LINGUAS INTLTOOL_PERL INTLTOOL_POLICY_RULE INTLTOOL_SERVICE_RULE INTLTOOL_THEME_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_CAVES_RULE INTLTOOL_XML_NOMERGE_RULE INTLTOOL_XML_RULE INTLTOOL_KBD_RULE INTLTOOL_XAM_RULE INTLTOOL_UI_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_SHEET_RULE INTLTOOL_SERVER_RULE INTLTOOL_PONG_RULE INTLTOOL_OAF_RULE INTLTOOL_PROP_RULE INTLTOOL_KEYS_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_DESKTOP_RULE intltool__v_merge_options_0 intltool__v_merge_options_ INTLTOOL_V_MERGE_OPTIONS INTLTOOL__v_MERGE_0 INTLTOOL__v_MERGE_ INTLTOOL_V_MERGE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE LN_S POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV host_os host_vendor host_cpu host build_os build_vendor build_cpu build MSGMERGE XGETTEXT GMSGFMT MSGFMT USE_NLS MKINSTALLDIRS BINRELOC_LIBS BINRELOC_CFLAGS am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_binreloc enable_binreloc_threads enable_dependency_tracking enable_nls with_gnu_ld enable_rpath with_libiconv_prefix with_libintl_prefix enable_shared enable_static with_pic enable_fast_install with_sysroot enable_libtool_lock enable_guile_1_8 enable_guile_2_0 enable_jack enable_evince enable_aubio enable_gtk2 enable_gtk3 enable_alsa enable_fluidsynth enable_rubberband enable_portaudio enable_portmidi enable_debug enable_warnings enable_x11 enable_mem enable_doc with_html_dir enable_gtk_doc enable_gtk_doc_html enable_gtk_doc_pdf enable_installed_tests enable_always_build_tests enable_gcov ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC YACC YFLAGS PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GUILE_CFLAGS GUILE_LIBS CXXCPP GUILE_1_8_CFLAGS GUILE_1_8_LIBS GUILE_2_CFLAGS GUILE_2_LIBS GLIB_CFLAGS GLIB_LIBS XML2_CFLAGS XML2_LIBS RSVG_CFLAGS RSVG_LIBS FONTCONFIG_CFLAGS FONTCONFIG_LIBS GTHREAD_CFLAGS GTHREAD_LIBS SNDFILE_CFLAGS SNDFILE_LIBS SMF_CFLAGS SMF_LIBS JACK_CFLAGS JACK_LIBS LIBAUBIO_CFLAGS LIBAUBIO_LIBS GTK2_CFLAGS GTK2_LIBS GTK3_CFLAGS GTK3_LIBS GTKSOURCEVIEW_CFLAGS GTKSOURCEVIEW_LIBS EVINCE_2_0_CFLAGS EVINCE_2_0_LIBS EVINCE_2_30_CFLAGS EVINCE_2_30_LIBS EVINCE_2_32_CFLAGS EVINCE_2_32_LIBS EVINCE_CFLAGS EVINCE_LIBS ALSA_CFLAGS ALSA_LIBS FLUIDSYNTH_CFLAGS FLUIDSYNTH_LIBS RUBBERBAND_CFLAGS RUBBERBAND_LIBS PORTAUDIO_CFLAGS PORTAUDIO_LIBS FFTW_CFLAGS FFTW_LIBS GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures denemo 2.2.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/denemo] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of denemo 2.2.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-binreloc compile with binary relocation support (default=enable when available) --enable-binreloc-threads compile binary relocation with threads support (default=yes) --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-guile_1_8 use GUILE_1_8 [default=no] --enable-guile_2_0 use GUILE_2_0 [default=no] --enable-jack use JACK [default=no] --enable-evince use EVINCE [default=yes] --enable-aubio use AUBIO [default=yes] --enable-gtk2 use GTK2 [default=no] --enable-gtk3 use GTK3 [default=no] --enable-alsa use ALSA [default=no] --enable-fluidsynth use FLUIDSYNTH [default=yes] --enable-rubberband use RUBBERBAND [default=yes] --enable-portaudio use PORTAUDIO [default=yes] --enable-portmidi use PORTMIDI [default=yes] --enable-debug enable debug code [default=no] --disable-warnings use warnings [default=no] --enable-x11 use X11 [default=yes] --enable-mem enable memory debugging [default=no] --enable-doc enable documentation build [default=no] --enable-gtk-doc use gtk-doc to build documentation [[default=no]] --enable-gtk-doc-html build documentation in html format [[default=yes]] --enable-gtk-doc-pdf build documentation in pdf format [[default=no]] --enable-installed-tests Enable installation of some test cases --enable-always-build-tests Enable always building tests during 'make all' --enable-gcov enable coverage testing with gcov Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-html-dir=PATH path to installed docs Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path GUILE_CFLAGS C compiler flags for GUILE, overriding pkg-config GUILE_LIBS linker flags for GUILE, overriding pkg-config CXXCPP C++ preprocessor GUILE_1_8_CFLAGS C compiler flags for GUILE_1_8, overriding pkg-config GUILE_1_8_LIBS linker flags for GUILE_1_8, overriding pkg-config GUILE_2_CFLAGS C compiler flags for GUILE_2, overriding pkg-config GUILE_2_LIBS linker flags for GUILE_2, overriding pkg-config GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config GLIB_LIBS linker flags for GLIB, overriding pkg-config XML2_CFLAGS C compiler flags for XML2, overriding pkg-config XML2_LIBS linker flags for XML2, overriding pkg-config RSVG_CFLAGS C compiler flags for RSVG, overriding pkg-config RSVG_LIBS linker flags for RSVG, overriding pkg-config FONTCONFIG_CFLAGS C compiler flags for FONTCONFIG, overriding pkg-config FONTCONFIG_LIBS linker flags for FONTCONFIG, overriding pkg-config GTHREAD_CFLAGS C compiler flags for GTHREAD, overriding pkg-config GTHREAD_LIBS linker flags for GTHREAD, overriding pkg-config SNDFILE_CFLAGS C compiler flags for SNDFILE, overriding pkg-config SNDFILE_LIBS linker flags for SNDFILE, overriding pkg-config SMF_CFLAGS C compiler flags for SMF, overriding pkg-config SMF_LIBS linker flags for SMF, overriding pkg-config JACK_CFLAGS C compiler flags for JACK, overriding pkg-config JACK_LIBS linker flags for JACK, overriding pkg-config LIBAUBIO_CFLAGS C compiler flags for LIBAUBIO, overriding pkg-config LIBAUBIO_LIBS linker flags for LIBAUBIO, overriding pkg-config GTK2_CFLAGS C compiler flags for GTK2, overriding pkg-config GTK2_LIBS linker flags for GTK2, overriding pkg-config GTK3_CFLAGS C compiler flags for GTK3, overriding pkg-config GTK3_LIBS linker flags for GTK3, overriding pkg-config GTKSOURCEVIEW_CFLAGS C compiler flags for GTKSOURCEVIEW, overriding pkg-config GTKSOURCEVIEW_LIBS linker flags for GTKSOURCEVIEW, overriding pkg-config EVINCE_2_0_CFLAGS C compiler flags for EVINCE_2_0, overriding pkg-config EVINCE_2_0_LIBS linker flags for EVINCE_2_0, overriding pkg-config EVINCE_2_30_CFLAGS C compiler flags for EVINCE_2_30, overriding pkg-config EVINCE_2_30_LIBS linker flags for EVINCE_2_30, overriding pkg-config EVINCE_2_32_CFLAGS C compiler flags for EVINCE_2_32, overriding pkg-config EVINCE_2_32_LIBS linker flags for EVINCE_2_32, overriding pkg-config EVINCE_CFLAGS C compiler flags for EVINCE, overriding pkg-config EVINCE_LIBS linker flags for EVINCE, overriding pkg-config ALSA_CFLAGS C compiler flags for ALSA, overriding pkg-config ALSA_LIBS linker flags for ALSA, overriding pkg-config FLUIDSYNTH_CFLAGS C compiler flags for FLUIDSYNTH, overriding pkg-config FLUIDSYNTH_LIBS linker flags for FLUIDSYNTH, overriding pkg-config RUBBERBAND_CFLAGS C compiler flags for RUBBERBAND, overriding pkg-config RUBBERBAND_LIBS linker flags for RUBBERBAND, overriding pkg-config PORTAUDIO_CFLAGS C compiler flags for PORTAUDIO, overriding pkg-config PORTAUDIO_LIBS linker flags for PORTAUDIO, overriding pkg-config FFTW_CFLAGS C compiler flags for FFTW, overriding pkg-config FFTW_LIBS linker flags for FFTW, overriding pkg-config GTKDOC_DEPS_CFLAGS C compiler flags for GTKDOC_DEPS, overriding pkg-config GTKDOC_DEPS_LIBS linker flags for GTKDOC_DEPS, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF denemo configure 2.2.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ----------------------------------- ## ## Report this to denemo-devel@gnu.org ## ## ----------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by denemo $as_me 2.2.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.14' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='denemo' VERSION='2.2.0' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5 $as_echo_n "checking how to create a pax tar archive... " >&6; } # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_pax-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do { echo "$as_me:$LINENO: $_am_tar --version" >&5 ($_am_tar --version) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break done am__tar="$_am_tar --format=posix -chf - "'"$$tardir"' am__tar_="$_am_tar --format=posix -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x pax -w "$$tardir"' am__tar_='pax -L -x pax -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H pax -L' am__tar_='find "$tardir" -print | cpio -o -H pax -L' am__untar='cpio -i -H pax -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_pax}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -rf conftest.dir if test -s conftest.tar; then { echo "$as_me:$LINENO: $am__untar &5 ($am__untar &5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 (cat conftest.dir/file) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } grep GrepMe conftest.dir/file >/dev/null 2>&1 && break fi done rm -rf conftest.dir if ${am_cv_prog_tar_pax+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_prog_tar_pax=$_am_tool fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5 $as_echo "$am_cv_prog_tar_pax" >&6; } # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi ac_config_headers="$ac_config_headers config.h" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Check whether --enable-binreloc was given. if test "${enable_binreloc+set}" = set; then : enableval=$enable_binreloc; enable_binreloc=$enableval else enable_binreloc=auto fi # Check whether --enable-binreloc-threads was given. if test "${enable_binreloc_threads+set}" = set; then : enableval=$enable_binreloc_threads; enable_binreloc_threads=$enableval else enable_binreloc_threads=yes fi BINRELOC_CFLAGS= BINRELOC_LIBS= if test "x$enable_binreloc" = "xauto"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /proc/self/maps" >&5 $as_echo_n "checking for /proc/self/maps... " >&6; } if ${ac_cv_file__proc_self_maps+:} false; then : $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "/proc/self/maps"; then ac_cv_file__proc_self_maps=yes else ac_cv_file__proc_self_maps=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__proc_self_maps" >&5 $as_echo "$ac_cv_file__proc_self_maps" >&6; } if test "x$ac_cv_file__proc_self_maps" = xyes; then : fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether everything is installed to the same prefix" >&5 $as_echo_n "checking whether everything is installed to the same prefix... " >&6; } if ${br_cv_valid_prefixes+:} false; then : $as_echo_n "(cached) " >&6 else if test "$bindir" = '${exec_prefix}/bin' -a "$sbindir" = '${exec_prefix}/sbin' -a \ "$datadir" = '${prefix}/share' -a "$libdir" = '${exec_prefix}/lib' -a \ "$libexecdir" = '${exec_prefix}/libexec' -a "$sysconfdir" = '${prefix}/etc' then br_cv_valid_prefixes=yes else br_cv_valid_prefixes=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $br_cv_valid_prefixes" >&5 $as_echo "$br_cv_valid_prefixes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether binary relocation support should be enabled" >&5 $as_echo_n "checking whether binary relocation support should be enabled... " >&6; } if ${br_cv_binreloc+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$enable_binreloc" = "xyes"; then br_cv_binreloc=yes elif test "x$enable_binreloc" = "xauto"; then if test "x$br_cv_valid_prefixes" = "xyes" -a \ "x$ac_cv_file__proc_self_maps" = "xyes"; then br_cv_binreloc=yes else br_cv_binreloc=no fi else br_cv_binreloc=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $br_cv_binreloc" >&5 $as_echo "$br_cv_binreloc" >&6; } if test "x$br_cv_binreloc" = "xyes"; then BINRELOC_CFLAGS="-DENABLE_BINRELOC" $as_echo "#define ENABLE_BINRELOC /**/" >>confdefs.h if test "x$enable_binreloc_threads" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_getspecific in -lpthread" >&5 $as_echo_n "checking for pthread_getspecific in -lpthread... " >&6; } if ${ac_cv_lib_pthread_pthread_getspecific+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_getspecific (); int main () { return pthread_getspecific (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_pthread_pthread_getspecific=yes else ac_cv_lib_pthread_pthread_getspecific=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_getspecific" >&5 $as_echo "$ac_cv_lib_pthread_pthread_getspecific" >&6; } if test "x$ac_cv_lib_pthread_pthread_getspecific" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBPTHREAD 1 _ACEOF LIBS="-lpthread $LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether binary relocation should use threads" >&5 $as_echo_n "checking whether binary relocation should use threads... " >&6; } if ${br_cv_binreloc_threads+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$enable_binreloc_threads" = "xyes"; then if test "x$ac_cv_lib_pthread_pthread_getspecific" = "xyes"; then br_cv_binreloc_threads=yes else br_cv_binreloc_threads=no fi else br_cv_binreloc_threads=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $br_cv_binreloc_threads" >&5 $as_echo "$br_cv_binreloc_threads" >&6; } if test "x$br_cv_binreloc_threads" = "xyes"; then BINRELOC_LIBS="-lpthread" $as_echo "#define BR_PTHREAD 1" >>confdefs.h else BINRELOC_CFLAGS="$BINRELOC_CFLAGS -DBR_PTHREADS=0" $as_echo "#define BR_PTHREAD 0" >>confdefs.h fi fi MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$GMSGFMT" != ":"; then if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 $as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } GMSGFMT=":" fi fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi rm -f messages.po fi ac_config_commands="$ac_config_commands default-1" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 $as_echo_n "checking for ld used by GCC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${acl_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 $as_echo "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } if ${acl_cv_rpath+:} false; then : $as_echo_n "(cached) " >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : else enable_rpath=yes fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi LIBICONV= LTLIBICONV= INCICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } LIBINTL= LTLIBINTL= POSUB= if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if ${gt_cv_func_gnugettext1_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_gnugettext1_libc=yes else gt_cv_func_gnugettext1_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libc" >&5 $as_echo "$gt_cv_func_gnugettext1_libc" >&6; } if test "$gt_cv_func_gnugettext1_libc" != "yes"; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi LIBINTL= LTLIBINTL= INCINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if ${gt_cv_func_gnugettext1_libintl+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_gnugettext1_libintl=yes else gt_cv_func_gnugettext1_libintl=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext1_libintl=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libintl" >&5 $as_echo "$gt_cv_func_gnugettext1_libintl" >&6; } fi if test "$gt_cv_func_gnugettext1_libc" = "yes" \ || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi case "$am__api_version" in 1.01234) as_fn_error $? "Automake 1.5 or newer is required to use intltool" "$LINENO" 5 ;; *) ;; esac INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.35.0 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` if test -n "0.35.0"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= 0.35.0" >&5 $as_echo_n "checking for intltool >= 0.35.0... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5 $as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; } test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || as_fn_error $? "Your intltool is too old. You need intltool 0.35.0 or later." "$LINENO" 5 fi # Extract the first word of "intltool-update", so it can be a program name with args. set dummy intltool-update; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_UPDATE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_UPDATE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_UPDATE="$INTLTOOL_UPDATE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_UPDATE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_UPDATE=$ac_cv_path_INTLTOOL_UPDATE if test -n "$INTLTOOL_UPDATE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_UPDATE" >&5 $as_echo "$INTLTOOL_UPDATE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-merge", so it can be a program name with args. set dummy intltool-merge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_MERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_MERGE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_MERGE="$INTLTOOL_MERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_MERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_MERGE=$ac_cv_path_INTLTOOL_MERGE if test -n "$INTLTOOL_MERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_MERGE" >&5 $as_echo "$INTLTOOL_MERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-extract", so it can be a program name with args. set dummy intltool-extract; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_EXTRACT+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_EXTRACT in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_EXTRACT="$INTLTOOL_EXTRACT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_EXTRACT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_EXTRACT=$ac_cv_path_INTLTOOL_EXTRACT if test -n "$INTLTOOL_EXTRACT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_EXTRACT" >&5 $as_echo "$INTLTOOL_EXTRACT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then as_fn_error $? "The intltool scripts were not found. Please install intltool." "$LINENO" 5 fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))' INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))' INTLTOOL__v_MERGE_0='@echo " ITMRG " $@;' INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))' intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))' intltool__v_merge_options_0='-q' INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< $@' INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< $@' else INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.$$RANDOM && mkdir $$_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u $$_it_tmp_dir $< $@ && rmdir $$_it_tmp_dir' fi INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' # Check the gettext tools to make sure they are GNU # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case $XGETTEXT in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XGETTEXT=$ac_cv_path_XGETTEXT if test -n "$XGETTEXT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGMERGE in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGMERGE=$ac_cv_path_MSGMERGE if test -n "$MSGMERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGFMT=$ac_cv_path_MSGFMT if test -n "$MSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_PERL in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL if test -n "$INTLTOOL_PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_PERL" >&5 $as_echo "$INTLTOOL_PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_PERL"; then as_fn_error $? "perl not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl >= 5.8.1" >&5 $as_echo_n "checking for perl >= 5.8.1... " >&6; } $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1 if test $? -ne 0; then as_fn_error $? "perl 5.8.1 is required for intltool" "$LINENO" 5 else IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IT_PERL_VERSION" >&5 $as_echo "$IT_PERL_VERSION" >&6; } fi if test "x" != "xno-xml"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML::Parser" >&5 $as_echo_n "checking for XML::Parser... " >&6; } if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } else as_fn_error $? "XML::Parser perl module is required for intltool" "$LINENO" 5 fi fi # Substitute ALL_LINGUAS so we can use it in po/Makefile # Set DATADIRNAME correctly if it is not set yet # (copied from glib-gettext.m4) if test -z "$DATADIRNAME"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : DATADIRNAME=share else DATADIRNAME=lib fi ;; *) DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi GETTEXT_PACKAGE=denemo cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in locale.h do : ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" if test "x$ac_cv_header_locale_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LOCALE_H 1 _ACEOF fi done if test $ac_cv_header_locale_h = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 $as_echo_n "checking for LC_MESSAGES... " >&6; } if ${am_cv_val_LC_MESSAGES+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return LC_MESSAGES ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_val_LC_MESSAGES=yes else am_cv_val_LC_MESSAGES=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 $as_echo "$am_cv_val_LC_MESSAGES" >&6; } if test $am_cv_val_LC_MESSAGES = yes; then $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi fi USE_NLS=yes gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" if test "x$ac_cv_header_libintl_h" = xyes; then : gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5 $as_echo_n "checking for ngettext in libc... " >&6; } if ${gt_cv_func_ngettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !ngettext ("","", 1) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_ngettext_libc=yes else gt_cv_func_ngettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5 $as_echo "$gt_cv_func_ngettext_libc" >&6; } if test "$gt_cv_func_ngettext_libc" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5 $as_echo_n "checking for dgettext in libc... " >&6; } if ${gt_cv_func_dgettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !dgettext ("","") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_dgettext_libc=yes else gt_cv_func_dgettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5 $as_echo "$gt_cv_func_dgettext_libc" >&6; } fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; } if ${ac_cv_lib_intl_bindtextdomain+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_bindtextdomain=yes else ac_cv_lib_intl_bindtextdomain=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5 $as_echo_n "checking for dgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dgettext (); int main () { return dgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dgettext=yes else ac_cv_lib_intl_dgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5 $as_echo "$ac_cv_lib_intl_dgettext" >&6; } if test "x$ac_cv_lib_intl_dgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes fi fi fi if test "$gt_cv_func_dgettext_libintl" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5 $as_echo_n "checking if -liconv is needed to use gettext... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5 $as_echo_n "checking for dcgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dcgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dcgettext (); int main () { return dcgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dcgettext=yes else ac_cv_lib_intl_dcgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5 $as_echo "$ac_cv_lib_intl_dcgettext" >&6; } if test "x$ac_cv_lib_intl_dcgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv else : fi else : fi fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in /*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" for ac_func in dcgettext do : ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext" if test "x$ac_cv_func_dcgettext" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi done MSGFMT_OPTS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5 $as_echo_n "checking if msgfmt accepts -c... " >&6; } cat >conftest.foo <<_ACEOF msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" _ACEOF if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5 ($MSGFMT -c -o /dev/null conftest.foo) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "$as_me: failed input was:" >&5 sed 's/^/| /' conftest.foo >&5 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in /*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : CATOBJEXT=.gmo DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : CATOBJEXT=.gmo DATADIRNAME=share else CATOBJEXT=.mo DATADIRNAME=lib fi ;; *-*-openbsd*) CATOBJEXT=.mo DATADIRNAME=share ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi fi if test "$gt_cv_have_gettext" = "yes" ; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po ac_config_commands="$ac_config_commands default-2" for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5 $as_echo_n "checking for catalogs to be installed... " >&6; } NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5 $as_echo "$LINGUAS" >&6; } fi if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES LOCALEDIR=${datadir}/locale ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ yyless ((input () != 0)); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if ${ac_cv_prog_lex_root+:} false; then : $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if ${ac_cv_lib_lex+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lex=$ac_lib fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if ${ac_cv_prog_lex_yytext_pointer+:} false; then : $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then $as_echo "#define YYTEXT_POINTER 1" >>confdefs.h fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi _guile_versions_to_search="2.0 1.8" if test -n "$GUILE_EFFECTIVE_VERSION"; then _guile_tmp="" for v in $_guile_versions_to_search; do if test "$v" = "$GUILE_EFFECTIVE_VERSION"; then _guile_tmp=$v fi done if test -z "$_guile_tmp"; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "searching for guile development files for versions $_guile_versions_to_search, but previously found $GUILE version $GUILE_EFFECTIVE_VERSION See \`config.log' for more details" "$LINENO" 5; } fi _guile_versions_to_search=$GUILE_EFFECTIVE_VERSION fi GUILE_EFFECTIVE_VERSION="" _guile_errors="" for v in $_guile_versions_to_search; do if test -z "$GUILE_EFFECTIVE_VERSION"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for guile $v" >&5 $as_echo "$as_me: checking for guile $v" >&6;} if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then GUILE_EFFECTIVE_VERSION=$v fi fi done if test -z "$GUILE_EFFECTIVE_VERSION"; then as_fn_error $? " No Guile development packages were found. Please verify that you have Guile installed. If you installed Guile from a binary distribution, please verify that you have also installed the development packages. If you installed it yourself, you might need to adjust your PKG_CONFIG_PATH; see the pkg-config man page for more. " "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: found guile $GUILE_EFFECTIVE_VERSION" >&5 $as_echo "$as_me: found guile $GUILE_EFFECTIVE_VERSION" >&6;} acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 $as_echo_n "checking for 64-bit host... " >&6; } if ${gl_cv_solaris_64bit+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _LP64 sixtyfour bits #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "sixtyfour bits" >/dev/null 2>&1; then : gl_cv_solaris_64bit=yes else gl_cv_solaris_64bit=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 $as_echo "$gl_cv_solaris_64bit" >&6; } if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5 $as_echo_n "checking for GUILE... " >&6; } if test -n "$GUILE_CFLAGS"; then pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$GUILE_EFFECTIVE_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "guile-$GUILE_EFFECTIVE_VERSION") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$GUILE_EFFECTIVE_VERSION" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GUILE_LIBS"; then pkg_cv_GUILE_LIBS="$GUILE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$GUILE_EFFECTIVE_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "guile-$GUILE_EFFECTIVE_VERSION") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$GUILE_EFFECTIVE_VERSION" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-$GUILE_EFFECTIVE_VERSION" 2>&1` else GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$GUILE_EFFECTIVE_VERSION" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GUILE_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (guile-$GUILE_EFFECTIVE_VERSION) were not met: $GUILE_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GUILE_CFLAGS and GUILE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GUILE_CFLAGS and GUILE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS GUILE_LIBS=$pkg_cv_GUILE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi GUILE_LDFLAGS=$GUILE_LIBS GUILE_LIBS= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then rpathdirs= next= for opt in $GUILE_LDFLAGS; do if test -n "$next"; then dir="$next" if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n """"; then for dir in $rpathdirs; do GUILE_LIBS="${GUILE_LIBS}${GUILE_LIBS:+ }-R$dir" done else if test -n "$acl_hardcode_libdir_separator"; then alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" GUILE_LIBS="$flag" else for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" GUILE_LIBS="${GUILE_LIBS}${GUILE_LIBS:+ }$flag" done fi fi fi fi fi GUILE_LIBS="$GUILE_LDFLAGS $GUILE_LIBS" GUILE_LTLIBS= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then rpathdirs= next= for opt in $GUILE_LDFLAGS; do if test -n "$next"; then dir="$next" if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""yes""; then for dir in $rpathdirs; do GUILE_LTLIBS="${GUILE_LTLIBS}${GUILE_LTLIBS:+ }-R$dir" done else if test -n "$acl_hardcode_libdir_separator"; then alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" GUILE_LTLIBS="$flag" else for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" GUILE_LTLIBS="${GUILE_LTLIBS}${GUILE_LTLIBS:+ }$flag" done fi fi fi fi fi GUILE_LTLIBS="$GUILE_LDFLAGS $GUILE_LTLIBS" case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands -fdiagnostics-color=auto" >&5 $as_echo_n "checking to see if compiler understands -fdiagnostics-color=auto... " >&6; } save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fdiagnostics-color=auto" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : flag_ok=yes else flag_ok=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" if test "X$flag_ok" = Xyes ; then CFLAGS="$CFLAGS -fdiagnostics-color=auto" true else true fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5 $as_echo "$flag_ok" >&6; } if test "x$enable_glibtest" = "xyes"; then ENABLE_GLIB_TEST_TRUE= ENABLE_GLIB_TEST_FALSE='#' else ENABLE_GLIB_TEST_TRUE='#' ENABLE_GLIB_TEST_FALSE= fi # Check whether --enable-guile_1_8 was given. if test "${enable_guile_1_8+set}" = set; then : enableval=$enable_guile_1_8; if test "x$enableval" != "xno"; then useguile_1_8=yes pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE_1_8" >&5 $as_echo_n "checking for GUILE_1_8... " >&6; } if test -n "$GUILE_1_8_CFLAGS"; then pkg_cv_GUILE_1_8_CFLAGS="$GUILE_1_8_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8 >= 1.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "guile-1.8 >= 1.8") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GUILE_1_8_CFLAGS=`$PKG_CONFIG --cflags "guile-1.8 >= 1.8" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GUILE_1_8_LIBS"; then pkg_cv_GUILE_1_8_LIBS="$GUILE_1_8_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8 >= 1.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "guile-1.8 >= 1.8") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GUILE_1_8_LIBS=`$PKG_CONFIG --libs "guile-1.8 >= 1.8" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GUILE_1_8_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-1.8 >= 1.8" 2>&1` else GUILE_1_8_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-1.8 >= 1.8" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GUILE_1_8_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (guile-1.8 >= 1.8) were not met: $GUILE_1_8_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GUILE_1_8_CFLAGS and GUILE_1_8_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GUILE_1_8_CFLAGS and GUILE_1_8_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GUILE_1_8_CFLAGS=$pkg_cv_GUILE_1_8_CFLAGS GUILE_1_8_LIBS=$pkg_cv_GUILE_1_8_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi LIBS="$LIBS $GUILE_1_8_LIBS" CFLAGS="$CFLAGS $GUILE_1_8_CFLAGS" fi else useguile_1_8=no fi # Check whether --enable-guile_2_0 was given. if test "${enable_guile_2_0+set}" = set; then : enableval=$enable_guile_2_0; if test "x$enableval" != "xno"; then useguile_2_0=yes pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE_2" >&5 $as_echo_n "checking for GUILE_2... " >&6; } if test -n "$GUILE_2_CFLAGS"; then pkg_cv_GUILE_2_CFLAGS="$GUILE_2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "guile-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GUILE_2_CFLAGS=`$PKG_CONFIG --cflags "guile-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GUILE_2_LIBS"; then pkg_cv_GUILE_2_LIBS="$GUILE_2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "guile-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GUILE_2_LIBS=`$PKG_CONFIG --libs "guile-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GUILE_2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-2.0" 2>&1` else GUILE_2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GUILE_2_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (guile-2.0) were not met: $GUILE_2_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GUILE_2_CFLAGS and GUILE_2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GUILE_2_CFLAGS and GUILE_2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GUILE_2_CFLAGS=$pkg_cv_GUILE_2_CFLAGS GUILE_2_LIBS=$pkg_cv_GUILE_2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi LIBS="$LIBS $GUILE_2_LIBS" CFLAGS="$CFLAGS $GUILE_2_CFLAGS" fi else useguile_2_0=no fi if test "x$useguile_1_8" = "xno" && test "x$useguile_2_0" = "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE_2" >&5 $as_echo_n "checking for GUILE_2... " >&6; } if test -n "$GUILE_2_CFLAGS"; then pkg_cv_GUILE_2_CFLAGS="$GUILE_2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "guile-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GUILE_2_CFLAGS=`$PKG_CONFIG --cflags "guile-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GUILE_2_LIBS"; then pkg_cv_GUILE_2_LIBS="$GUILE_2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "guile-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GUILE_2_LIBS=`$PKG_CONFIG --libs "guile-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GUILE_2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-2.0" 2>&1` else GUILE_2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GUILE_2_PKG_ERRORS" >&5 useguile_2_0=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } useguile_2_0=no else GUILE_2_CFLAGS=$pkg_cv_GUILE_2_CFLAGS GUILE_2_LIBS=$pkg_cv_GUILE_2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } useguile_2_0=yes fi LIBS="$LIBS $GUILE_2_LIBS" CFLAGS="$CFLAGS $GUILE_2_CFLAGS" if test "x$useguile_2_0" = "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE_1_8" >&5 $as_echo_n "checking for GUILE_1_8... " >&6; } if test -n "$GUILE_1_8_CFLAGS"; then pkg_cv_GUILE_1_8_CFLAGS="$GUILE_1_8_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8 >= 1.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "guile-1.8 >= 1.8") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GUILE_1_8_CFLAGS=`$PKG_CONFIG --cflags "guile-1.8 >= 1.8" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GUILE_1_8_LIBS"; then pkg_cv_GUILE_1_8_LIBS="$GUILE_1_8_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8 >= 1.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "guile-1.8 >= 1.8") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GUILE_1_8_LIBS=`$PKG_CONFIG --libs "guile-1.8 >= 1.8" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GUILE_1_8_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-1.8 >= 1.8" 2>&1` else GUILE_1_8_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-1.8 >= 1.8" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GUILE_1_8_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (guile-1.8 >= 1.8) were not met: $GUILE_1_8_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GUILE_1_8_CFLAGS and GUILE_1_8_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GUILE_1_8_CFLAGS and GUILE_1_8_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GUILE_1_8_CFLAGS=$pkg_cv_GUILE_1_8_CFLAGS GUILE_1_8_LIBS=$pkg_cv_GUILE_1_8_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi LIBS="$LIBS $GUILE_1_8_LIBS" CFLAGS="$CFLAGS $GUILE_1_8_CFLAGS" useguile_1_8=yes else useguile_2_0=yes fi fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5 $as_echo_n "checking for GLIB... " >&6; } if test -n "$GLIB_CFLAGS"; then pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.30\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.30") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.30" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLIB_LIBS"; then pkg_cv_GLIB_LIBS="$GLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.30\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.30") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.30" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.30" 2>&1` else GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.30" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (glib-2.0 >= 2.30) were not met: $GLIB_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS GLIB_LIBS=$pkg_cv_GLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML2" >&5 $as_echo_n "checking for XML2... " >&6; } if test -n "$XML2_CFLAGS"; then pkg_cv_XML2_CFLAGS="$XML2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.3.10\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.3.10") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_XML2_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= 2.3.10" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$XML2_LIBS"; then pkg_cv_XML2_LIBS="$XML2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.3.10\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.3.10") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_XML2_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= 2.3.10" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then XML2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libxml-2.0 >= 2.3.10" 2>&1` else XML2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libxml-2.0 >= 2.3.10" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$XML2_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (libxml-2.0 >= 2.3.10) were not met: $XML2_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables XML2_CFLAGS and XML2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables XML2_CFLAGS and XML2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else XML2_CFLAGS=$pkg_cv_XML2_CFLAGS XML2_LIBS=$pkg_cv_XML2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $XML2_CFLAGS" LIBS="$LIBS $XML2_LIBS" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RSVG" >&5 $as_echo_n "checking for RSVG... " >&6; } if test -n "$RSVG_CFLAGS"; then pkg_cv_RSVG_CFLAGS="$RSVG_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_RSVG_CFLAGS=`$PKG_CONFIG --cflags "librsvg-2.0 >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$RSVG_LIBS"; then pkg_cv_RSVG_LIBS="$RSVG_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_RSVG_LIBS=`$PKG_CONFIG --libs "librsvg-2.0 >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then RSVG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "librsvg-2.0 >= 2.0" 2>&1` else RSVG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "librsvg-2.0 >= 2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$RSVG_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (librsvg-2.0 >= 2.0) were not met: $RSVG_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables RSVG_CFLAGS and RSVG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables RSVG_CFLAGS and RSVG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else RSVG_CFLAGS=$pkg_cv_RSVG_CFLAGS RSVG_LIBS=$pkg_cv_RSVG_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $RSVG_CFLAGS" LIBS="$LIBS $RSVG_LIBS" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FONTCONFIG" >&5 $as_echo_n "checking for FONTCONFIG... " >&6; } if test -n "$FONTCONFIG_CFLAGS"; then pkg_cv_FONTCONFIG_CFLAGS="$FONTCONFIG_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fontconfig >= 2.2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "fontconfig >= 2.2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FONTCONFIG_CFLAGS=`$PKG_CONFIG --cflags "fontconfig >= 2.2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$FONTCONFIG_LIBS"; then pkg_cv_FONTCONFIG_LIBS="$FONTCONFIG_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fontconfig >= 2.2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "fontconfig >= 2.2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FONTCONFIG_LIBS=`$PKG_CONFIG --libs "fontconfig >= 2.2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then FONTCONFIG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fontconfig >= 2.2.0" 2>&1` else FONTCONFIG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fontconfig >= 2.2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$FONTCONFIG_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (fontconfig >= 2.2.0) were not met: $FONTCONFIG_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables FONTCONFIG_CFLAGS and FONTCONFIG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables FONTCONFIG_CFLAGS and FONTCONFIG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else FONTCONFIG_CFLAGS=$pkg_cv_FONTCONFIG_CFLAGS FONTCONFIG_LIBS=$pkg_cv_FONTCONFIG_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $FONTCONFIG_CFLAGS" LIBS="$LIBS $FONTCONFIG_LIBS" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTHREAD" >&5 $as_echo_n "checking for GTHREAD... " >&6; } if test -n "$GTHREAD_CFLAGS"; then pkg_cv_GTHREAD_CFLAGS="$GTHREAD_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 >= 2.21.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= 2.21.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0 >= 2.21.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTHREAD_LIBS"; then pkg_cv_GTHREAD_LIBS="$GTHREAD_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 >= 2.21.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= 2.21.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "gthread-2.0 >= 2.21.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTHREAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gthread-2.0 >= 2.21.0" 2>&1` else GTHREAD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gthread-2.0 >= 2.21.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTHREAD_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gthread-2.0 >= 2.21.0) were not met: $GTHREAD_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTHREAD_CFLAGS and GTHREAD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTHREAD_CFLAGS and GTHREAD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTHREAD_CFLAGS=$pkg_cv_GTHREAD_CFLAGS GTHREAD_LIBS=$pkg_cv_GTHREAD_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $GTHREAD_LIBS" LIBS="$LIBS $GTHREAD_LIBS" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SNDFILE" >&5 $as_echo_n "checking for SNDFILE... " >&6; } if test -n "$SNDFILE_CFLAGS"; then pkg_cv_SNDFILE_CFLAGS="$SNDFILE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile >= 1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "sndfile >= 1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SNDFILE_CFLAGS=`$PKG_CONFIG --cflags "sndfile >= 1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$SNDFILE_LIBS"; then pkg_cv_SNDFILE_LIBS="$SNDFILE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile >= 1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "sndfile >= 1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SNDFILE_LIBS=`$PKG_CONFIG --libs "sndfile >= 1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then SNDFILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sndfile >= 1.0" 2>&1` else SNDFILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sndfile >= 1.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$SNDFILE_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (sndfile >= 1.0) were not met: $SNDFILE_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables SNDFILE_CFLAGS and SNDFILE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables SNDFILE_CFLAGS and SNDFILE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else SNDFILE_CFLAGS=$pkg_cv_SNDFILE_CFLAGS SNDFILE_LIBS=$pkg_cv_SNDFILE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $SNDFILE_LIBS" LIBS="$LIBS $SNDFILE_LIBS" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SMF" >&5 $as_echo_n "checking for SMF... " >&6; } if test -n "$SMF_CFLAGS"; then pkg_cv_SMF_CFLAGS="$SMF_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"smf >= 1.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "smf >= 1.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SMF_CFLAGS=`$PKG_CONFIG --cflags "smf >= 1.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$SMF_LIBS"; then pkg_cv_SMF_LIBS="$SMF_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"smf >= 1.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "smf >= 1.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SMF_LIBS=`$PKG_CONFIG --libs "smf >= 1.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then SMF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "smf >= 1.3" 2>&1` else SMF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "smf >= 1.3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$SMF_PKG_ERRORS" >&5 havesmf=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } havesmf=no else SMF_CFLAGS=$pkg_cv_SMF_CFLAGS SMF_LIBS=$pkg_cv_SMF_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } havesmf=yes fi if test x$havesmf = xyes; then HAVE_SMF_TRUE= HAVE_SMF_FALSE='#' else HAVE_SMF_TRUE='#' HAVE_SMF_FALSE= fi CFLAGS="$CFLAGS $SMF_CFLAGS" LIBS="$LIBS $SMF_LIBS" # Check whether --enable-jack was given. if test "${enable_jack+set}" = set; then : enableval=$enable_jack; if test "x$enableval" != "xno"; then usejack=yes fi fi if test x$usejack = xyes; then HAVE_JACK_TRUE= HAVE_JACK_FALSE='#' else HAVE_JACK_TRUE='#' HAVE_JACK_FALSE= fi if test "x$usejack" = "xyes"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JACK" >&5 $as_echo_n "checking for JACK... " >&6; } if test -n "$JACK_CFLAGS"; then pkg_cv_JACK_CFLAGS="$JACK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack >= 0.102.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "jack >= 0.102.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_JACK_CFLAGS=`$PKG_CONFIG --cflags "jack >= 0.102.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$JACK_LIBS"; then pkg_cv_JACK_LIBS="$JACK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack >= 0.102.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "jack >= 0.102.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_JACK_LIBS=`$PKG_CONFIG --libs "jack >= 0.102.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then JACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "jack >= 0.102.0" 2>&1` else JACK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "jack >= 0.102.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$JACK_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (jack >= 0.102.0) were not met: $JACK_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables JACK_CFLAGS and JACK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables JACK_CFLAGS and JACK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else JACK_CFLAGS=$pkg_cv_JACK_CFLAGS JACK_LIBS=$pkg_cv_JACK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS -D_HAVE_JACK_ $JACK_CFLAGS" LIBS="$LIBS -D_HAVE_JACK_ $JACK_LIBS" fi # Check whether --enable-evince was given. if test "${enable_evince+set}" = set; then : enableval=$enable_evince; if test "x$enableval" == "xno"; then useevince=no else useevince=yes fi else useevince=yes fi if test x$useevince = xyes; then HAVE_EVINCE_TRUE= HAVE_EVINCE_FALSE='#' else HAVE_EVINCE_TRUE='#' HAVE_EVINCE_FALSE= fi # Check whether --enable-aubio was given. if test "${enable_aubio+set}" = set; then : enableval=$enable_aubio; if test "x$enableval" == "xno"; then useaubio=no else useaubio=yes fi else useaubio=yes fi if test x$useaubio = xyes; then HAVE_AUBIO_TRUE= HAVE_AUBIO_FALSE='#' else HAVE_AUBIO_TRUE='#' HAVE_AUBIO_FALSE= fi if test "x$useaubio" = "xyes"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBAUBIO" >&5 $as_echo_n "checking for LIBAUBIO... " >&6; } if test -n "$LIBAUBIO_CFLAGS"; then pkg_cv_LIBAUBIO_CFLAGS="$LIBAUBIO_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"aubio >= 0.4.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "aubio >= 0.4.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBAUBIO_CFLAGS=`$PKG_CONFIG --cflags "aubio >= 0.4.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBAUBIO_LIBS"; then pkg_cv_LIBAUBIO_LIBS="$LIBAUBIO_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"aubio >= 0.4.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "aubio >= 0.4.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBAUBIO_LIBS=`$PKG_CONFIG --libs "aubio >= 0.4.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBAUBIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "aubio >= 0.4.0" 2>&1` else LIBAUBIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "aubio >= 0.4.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBAUBIO_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (aubio >= 0.4.0) were not met: $LIBAUBIO_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBAUBIO_CFLAGS and LIBAUBIO_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables LIBAUBIO_CFLAGS and LIBAUBIO_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else LIBAUBIO_CFLAGS=$pkg_cv_LIBAUBIO_CFLAGS LIBAUBIO_LIBS=$pkg_cv_LIBAUBIO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $LIBAUBIO_CFLAGS -D_WITH_AUBIO_4_" LIBS="$LIBS $LIBAUBIO_LIBS" fi if test "x$useaubio" = "xno"; then CFLAGS="$CFLAGS -DDISABLE_AUBIO" LIBS="$LIBS -DDISABLE_AUBIO" fi # Check whether --enable-gtk2 was given. if test "${enable_gtk2+set}" = set; then : enableval=$enable_gtk2; if test "x$enableval" != "xno"; then usegtk2=yes pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK2" >&5 $as_echo_n "checking for GTK2... " >&6; } if test -n "$GTK2_CFLAGS"; then pkg_cv_GTK2_CFLAGS="$GTK2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.0.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.0.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK2_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.0.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK2_LIBS"; then pkg_cv_GTK2_LIBS="$GTK2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.0.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.0.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK2_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.0.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-2.0 >= 2.0.3" 2>&1` else GTK2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-2.0 >= 2.0.3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK2_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gtk+-2.0 >= 2.0.3) were not met: $GTK2_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK2_CFLAGS and GTK2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK2_CFLAGS and GTK2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTK2_CFLAGS=$pkg_cv_GTK2_CFLAGS GTK2_LIBS=$pkg_cv_GTK2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi else usegtk2=no fi # Check whether --enable-gtk3 was given. if test "${enable_gtk3+set}" = set; then : enableval=$enable_gtk3; if test "x$enableval" != "xno"; then usegtk3=yes pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK3" >&5 $as_echo_n "checking for GTK3... " >&6; } if test -n "$GTK3_CFLAGS"; then pkg_cv_GTK3_CFLAGS="$GTK3_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.0.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK3_CFLAGS=`$PKG_CONFIG --cflags "gtk+-3.0 >= 3.0.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK3_LIBS"; then pkg_cv_GTK3_LIBS="$GTK3_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.0.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK3_LIBS=`$PKG_CONFIG --libs "gtk+-3.0 >= 3.0.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-3.0 >= 3.0.0" 2>&1` else GTK3_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-3.0 >= 3.0.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK3_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gtk+-3.0 >= 3.0.0) were not met: $GTK3_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK3_CFLAGS and GTK3_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK3_CFLAGS and GTK3_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTK3_CFLAGS=$pkg_cv_GTK3_CFLAGS GTK3_LIBS=$pkg_cv_GTK3_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi else usegtk3=no fi if test "x$usegtk2" = "xno" && test "x$usegtk3" = "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK3" >&5 $as_echo_n "checking for GTK3... " >&6; } if test -n "$GTK3_CFLAGS"; then pkg_cv_GTK3_CFLAGS="$GTK3_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.0.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK3_CFLAGS=`$PKG_CONFIG --cflags "gtk+-3.0 >= 3.0.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK3_LIBS"; then pkg_cv_GTK3_LIBS="$GTK3_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.0.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK3_LIBS=`$PKG_CONFIG --libs "gtk+-3.0 >= 3.0.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-3.0 >= 3.0.0" 2>&1` else GTK3_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-3.0 >= 3.0.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK3_PKG_ERRORS" >&5 havegtk3=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } havegtk3=no else GTK3_CFLAGS=$pkg_cv_GTK3_CFLAGS GTK3_LIBS=$pkg_cv_GTK3_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } havegtk3=yes fi if test "x$havegtk3" = "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK2" >&5 $as_echo_n "checking for GTK2... " >&6; } if test -n "$GTK2_CFLAGS"; then pkg_cv_GTK2_CFLAGS="$GTK2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.0.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.0.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK2_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.0.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK2_LIBS"; then pkg_cv_GTK2_LIBS="$GTK2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.0.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.0.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK2_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.0.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-2.0 >= 2.0.3" 2>&1` else GTK2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-2.0 >= 2.0.3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK2_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gtk+-2.0 >= 2.0.3) were not met: $GTK2_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK2_CFLAGS and GTK2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK2_CFLAGS and GTK2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTK2_CFLAGS=$pkg_cv_GTK2_CFLAGS GTK2_LIBS=$pkg_cv_GTK2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi usegtk2=yes else usegtk3=yes fi fi if test "x$usegtk2" = "xyes"; then CFLAGS="$CFLAGS $GTK2_CFLAGS" LIBS="$LIBS $GTK2_LIBS" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKSOURCEVIEW" >&5 $as_echo_n "checking for GTKSOURCEVIEW... " >&6; } if test -n "$GTKSOURCEVIEW_CFLAGS"; then pkg_cv_GTKSOURCEVIEW_CFLAGS="$GTKSOURCEVIEW_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtksourceview-2.0 >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtksourceview-2.0 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKSOURCEVIEW_CFLAGS=`$PKG_CONFIG --cflags "gtksourceview-2.0 >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTKSOURCEVIEW_LIBS"; then pkg_cv_GTKSOURCEVIEW_LIBS="$GTKSOURCEVIEW_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtksourceview-2.0 >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtksourceview-2.0 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKSOURCEVIEW_LIBS=`$PKG_CONFIG --libs "gtksourceview-2.0 >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTKSOURCEVIEW_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtksourceview-2.0 >= 2.0" 2>&1` else GTKSOURCEVIEW_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtksourceview-2.0 >= 2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTKSOURCEVIEW_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gtksourceview-2.0 >= 2.0) were not met: $GTKSOURCEVIEW_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTKSOURCEVIEW_CFLAGS and GTKSOURCEVIEW_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTKSOURCEVIEW_CFLAGS and GTKSOURCEVIEW_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTKSOURCEVIEW_CFLAGS=$pkg_cv_GTKSOURCEVIEW_CFLAGS GTKSOURCEVIEW_LIBS=$pkg_cv_GTKSOURCEVIEW_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $GTKSOURCEVIEW_CFLAGS" LIBS="$LIBS $GTKSOURCEVIEW_LIBS" if test "x$useevince" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVINCE_2_0" >&5 $as_echo_n "checking for EVINCE_2_0... " >&6; } if test -n "$EVINCE_2_0_CFLAGS"; then pkg_cv_EVINCE_2_0_CFLAGS="$EVINCE_2_0_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"evince-view-2.0 >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "evince-view-2.0 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EVINCE_2_0_CFLAGS=`$PKG_CONFIG --cflags "evince-view-2.0 >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$EVINCE_2_0_LIBS"; then pkg_cv_EVINCE_2_0_LIBS="$EVINCE_2_0_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"evince-view-2.0 >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "evince-view-2.0 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EVINCE_2_0_LIBS=`$PKG_CONFIG --libs "evince-view-2.0 >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then EVINCE_2_0_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "evince-view-2.0 >= 2.0" 2>&1` else EVINCE_2_0_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "evince-view-2.0 >= 2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$EVINCE_2_0_PKG_ERRORS" >&5 have_evince2=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_evince2=no else EVINCE_2_0_CFLAGS=$pkg_cv_EVINCE_2_0_CFLAGS EVINCE_2_0_LIBS=$pkg_cv_EVINCE_2_0_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_evince2=yes fi CFLAGS="$CFLAGS $EVINCE_2_0_CFLAGS" LIBS="$LIBS $EVINCE_2_0_LIBS" if test "x$have_evince2" = "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVINCE_2_30" >&5 $as_echo_n "checking for EVINCE_2_30... " >&6; } if test -n "$EVINCE_2_30_CFLAGS"; then pkg_cv_EVINCE_2_30_CFLAGS="$EVINCE_2_30_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"evince-view-2.30 >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "evince-view-2.30 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EVINCE_2_30_CFLAGS=`$PKG_CONFIG --cflags "evince-view-2.30 >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$EVINCE_2_30_LIBS"; then pkg_cv_EVINCE_2_30_LIBS="$EVINCE_2_30_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"evince-view-2.30 >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "evince-view-2.30 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EVINCE_2_30_LIBS=`$PKG_CONFIG --libs "evince-view-2.30 >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then EVINCE_2_30_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "evince-view-2.30 >= 2.0" 2>&1` else EVINCE_2_30_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "evince-view-2.30 >= 2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$EVINCE_2_30_PKG_ERRORS" >&5 have_evince2_3=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_evince2_3=no else EVINCE_2_30_CFLAGS=$pkg_cv_EVINCE_2_30_CFLAGS EVINCE_2_30_LIBS=$pkg_cv_EVINCE_2_30_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_evince2_3=yes fi CFLAGS="$CFLAGS $EVINCE_2_30_CFLAGS" LIBS="$LIBS $EVINCE_2_30_LIBS" fi if test "x$have_evince2_3" = "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVINCE_2_32" >&5 $as_echo_n "checking for EVINCE_2_32... " >&6; } if test -n "$EVINCE_2_32_CFLAGS"; then pkg_cv_EVINCE_2_32_CFLAGS="$EVINCE_2_32_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"evince-view-2.32 >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "evince-view-2.32 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EVINCE_2_32_CFLAGS=`$PKG_CONFIG --cflags "evince-view-2.32 >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$EVINCE_2_32_LIBS"; then pkg_cv_EVINCE_2_32_LIBS="$EVINCE_2_32_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"evince-view-2.32 >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "evince-view-2.32 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EVINCE_2_32_LIBS=`$PKG_CONFIG --libs "evince-view-2.32 >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then EVINCE_2_32_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "evince-view-2.32 >= 2.0" 2>&1` else EVINCE_2_32_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "evince-view-2.32 >= 2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$EVINCE_2_32_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (evince-view-2.32 >= 2.0) were not met: $EVINCE_2_32_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables EVINCE_2_32_CFLAGS and EVINCE_2_32_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables EVINCE_2_32_CFLAGS and EVINCE_2_32_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else EVINCE_2_32_CFLAGS=$pkg_cv_EVINCE_2_32_CFLAGS EVINCE_2_32_LIBS=$pkg_cv_EVINCE_2_32_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $EVINCE_2_32_CFLAGS" LIBS="$LIBS $EVINCE_2_32_LIBS" fi fi fi if test "x$usegtk3" = "xyes"; then CFLAGS="$CFLAGS $GTK3_CFLAGS" LIBS="$LIBS $GTK3_LIBS" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKSOURCEVIEW" >&5 $as_echo_n "checking for GTKSOURCEVIEW... " >&6; } if test -n "$GTKSOURCEVIEW_CFLAGS"; then pkg_cv_GTKSOURCEVIEW_CFLAGS="$GTKSOURCEVIEW_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtksourceview-3.0 >= 3.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtksourceview-3.0 >= 3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKSOURCEVIEW_CFLAGS=`$PKG_CONFIG --cflags "gtksourceview-3.0 >= 3.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTKSOURCEVIEW_LIBS"; then pkg_cv_GTKSOURCEVIEW_LIBS="$GTKSOURCEVIEW_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtksourceview-3.0 >= 3.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtksourceview-3.0 >= 3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKSOURCEVIEW_LIBS=`$PKG_CONFIG --libs "gtksourceview-3.0 >= 3.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTKSOURCEVIEW_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtksourceview-3.0 >= 3.0" 2>&1` else GTKSOURCEVIEW_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtksourceview-3.0 >= 3.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTKSOURCEVIEW_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gtksourceview-3.0 >= 3.0) were not met: $GTKSOURCEVIEW_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTKSOURCEVIEW_CFLAGS and GTKSOURCEVIEW_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTKSOURCEVIEW_CFLAGS and GTKSOURCEVIEW_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTKSOURCEVIEW_CFLAGS=$pkg_cv_GTKSOURCEVIEW_CFLAGS GTKSOURCEVIEW_LIBS=$pkg_cv_GTKSOURCEVIEW_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $GTKSOURCEVIEW_CFLAGS" LIBS="$LIBS $GTKSOURCEVIEW_LIBS" if test "x$useevince" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVINCE" >&5 $as_echo_n "checking for EVINCE... " >&6; } if test -n "$EVINCE_CFLAGS"; then pkg_cv_EVINCE_CFLAGS="$EVINCE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"evince-view-3.0 >= 3.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "evince-view-3.0 >= 3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EVINCE_CFLAGS=`$PKG_CONFIG --cflags "evince-view-3.0 >= 3.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$EVINCE_LIBS"; then pkg_cv_EVINCE_LIBS="$EVINCE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"evince-view-3.0 >= 3.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "evince-view-3.0 >= 3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EVINCE_LIBS=`$PKG_CONFIG --libs "evince-view-3.0 >= 3.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then EVINCE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "evince-view-3.0 >= 3.0" 2>&1` else EVINCE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "evince-view-3.0 >= 3.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$EVINCE_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (evince-view-3.0 >= 3.0) were not met: $EVINCE_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables EVINCE_CFLAGS and EVINCE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables EVINCE_CFLAGS and EVINCE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else EVINCE_CFLAGS=$pkg_cv_EVINCE_CFLAGS EVINCE_LIBS=$pkg_cv_EVINCE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $EVINCE_CFLAGS" LIBS="$LIBS $EVINCE_LIBS" fi fi if test "x$useevince" = "xyes"; then CFLAGS="$CFLAGS -DUSE_EVINCE" LIBS="$LIBS -DUSE_EVINCE" fi # Check whether --enable-alsa was given. if test "${enable_alsa+set}" = set; then : enableval=$enable_alsa; if test "x$enableval" != "xno"; then usealsa=yes fi fi if test x$usealsa = xyes; then HAVE_ALSA_TRUE= HAVE_ALSA_FALSE='#' else HAVE_ALSA_TRUE='#' HAVE_ALSA_FALSE= fi if test "x$usealsa" = "xyes"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ALSA" >&5 $as_echo_n "checking for ALSA... " >&6; } if test -n "$ALSA_CFLAGS"; then pkg_cv_ALSA_CFLAGS="$ALSA_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"alsa >= 1.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "alsa >= 1.0.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ALSA_CFLAGS=`$PKG_CONFIG --cflags "alsa >= 1.0.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$ALSA_LIBS"; then pkg_cv_ALSA_LIBS="$ALSA_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"alsa >= 1.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "alsa >= 1.0.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ALSA_LIBS=`$PKG_CONFIG --libs "alsa >= 1.0.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then ALSA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "alsa >= 1.0.0" 2>&1` else ALSA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "alsa >= 1.0.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$ALSA_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (alsa >= 1.0.0) were not met: $ALSA_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables ALSA_CFLAGS and ALSA_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables ALSA_CFLAGS and ALSA_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else ALSA_CFLAGS=$pkg_cv_ALSA_CFLAGS ALSA_LIBS=$pkg_cv_ALSA_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $ALSA_CFLAGS -D_HAVE_ALSA_" LIBS="$LIBS $ALSA_LIBS" fi # Check whether --enable-fluidsynth was given. if test "${enable_fluidsynth+set}" = set; then : enableval=$enable_fluidsynth; if test "x$enableval" != "xno"; then usefluidsynth=yes fi else usefluidsynth=yes fi if test x$usefluidsynth = xyes; then HAVE_FLUIDSYNTH_TRUE= HAVE_FLUIDSYNTH_FALSE='#' else HAVE_FLUIDSYNTH_TRUE='#' HAVE_FLUIDSYNTH_FALSE= fi if test "x$usefluidsynth" = "xyes"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FLUIDSYNTH" >&5 $as_echo_n "checking for FLUIDSYNTH... " >&6; } if test -n "$FLUIDSYNTH_CFLAGS"; then pkg_cv_FLUIDSYNTH_CFLAGS="$FLUIDSYNTH_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fluidsynth >= 1.0.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "fluidsynth >= 1.0.8") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FLUIDSYNTH_CFLAGS=`$PKG_CONFIG --cflags "fluidsynth >= 1.0.8" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$FLUIDSYNTH_LIBS"; then pkg_cv_FLUIDSYNTH_LIBS="$FLUIDSYNTH_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fluidsynth >= 1.0.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "fluidsynth >= 1.0.8") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FLUIDSYNTH_LIBS=`$PKG_CONFIG --libs "fluidsynth >= 1.0.8" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then FLUIDSYNTH_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fluidsynth >= 1.0.8" 2>&1` else FLUIDSYNTH_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fluidsynth >= 1.0.8" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$FLUIDSYNTH_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (fluidsynth >= 1.0.8) were not met: $FLUIDSYNTH_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables FLUIDSYNTH_CFLAGS and FLUIDSYNTH_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables FLUIDSYNTH_CFLAGS and FLUIDSYNTH_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else FLUIDSYNTH_CFLAGS=$pkg_cv_FLUIDSYNTH_CFLAGS FLUIDSYNTH_LIBS=$pkg_cv_FLUIDSYNTH_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS -D_HAVE_FLUIDSYNTH_ $FLUIDSYNTH_CFLAGS" LIBS="$LIBS -D_HAVE_FLUIDSYNTH_ $FLUIDSYNTH_LIBS" fi # Check whether --enable-rubberband was given. if test "${enable_rubberband+set}" = set; then : enableval=$enable_rubberband; if test "x$enableval" != "xno"; then userubberband=yes fi else userubberband=yes fi if test x$userubberband = xyes; then HAVE_RUBBERBAND_TRUE= HAVE_RUBBERBAND_FALSE='#' else HAVE_RUBBERBAND_TRUE='#' HAVE_RUBBERBAND_FALSE= fi if test "x$userubberband" = "xyes"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RUBBERBAND" >&5 $as_echo_n "checking for RUBBERBAND... " >&6; } if test -n "$RUBBERBAND_CFLAGS"; then pkg_cv_RUBBERBAND_CFLAGS="$RUBBERBAND_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"rubberband >= 1.0.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "rubberband >= 1.0.8") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_RUBBERBAND_CFLAGS=`$PKG_CONFIG --cflags "rubberband >= 1.0.8" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$RUBBERBAND_LIBS"; then pkg_cv_RUBBERBAND_LIBS="$RUBBERBAND_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"rubberband >= 1.0.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "rubberband >= 1.0.8") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_RUBBERBAND_LIBS=`$PKG_CONFIG --libs "rubberband >= 1.0.8" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then RUBBERBAND_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "rubberband >= 1.0.8" 2>&1` else RUBBERBAND_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "rubberband >= 1.0.8" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$RUBBERBAND_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (rubberband >= 1.0.8) were not met: $RUBBERBAND_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables RUBBERBAND_CFLAGS and RUBBERBAND_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables RUBBERBAND_CFLAGS and RUBBERBAND_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else RUBBERBAND_CFLAGS=$pkg_cv_RUBBERBAND_CFLAGS RUBBERBAND_LIBS=$pkg_cv_RUBBERBAND_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS -D_HAVE_RUBBERBAND_ $FLUIDSYNTH_CFLAGS" LIBS="$LIBS -D_HAVE_RUBBERBAND_ $RUBBERBAND_LIBS" fi # Check whether --enable-portaudio was given. if test "${enable_portaudio+set}" = set; then : enableval=$enable_portaudio; if test "x$enableval" != "xno"; then useportaudio=yes fi else useportaudio=yes fi if test x$useportaudio = xyes; then HAVE_PORTAUDIO_TRUE= HAVE_PORTAUDIO_FALSE='#' else HAVE_PORTAUDIO_TRUE='#' HAVE_PORTAUDIO_FALSE= fi if test "x$useportaudio" = "xyes"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PORTAUDIO" >&5 $as_echo_n "checking for PORTAUDIO... " >&6; } if test -n "$PORTAUDIO_CFLAGS"; then pkg_cv_PORTAUDIO_CFLAGS="$PORTAUDIO_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"portaudio-2.0 >= 19\""; } >&5 ($PKG_CONFIG --exists --print-errors "portaudio-2.0 >= 19") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PORTAUDIO_CFLAGS=`$PKG_CONFIG --cflags "portaudio-2.0 >= 19" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PORTAUDIO_LIBS"; then pkg_cv_PORTAUDIO_LIBS="$PORTAUDIO_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"portaudio-2.0 >= 19\""; } >&5 ($PKG_CONFIG --exists --print-errors "portaudio-2.0 >= 19") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PORTAUDIO_LIBS=`$PKG_CONFIG --libs "portaudio-2.0 >= 19" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PORTAUDIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "portaudio-2.0 >= 19" 2>&1` else PORTAUDIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "portaudio-2.0 >= 19" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PORTAUDIO_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (portaudio-2.0 >= 19) were not met: $PORTAUDIO_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables PORTAUDIO_CFLAGS and PORTAUDIO_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables PORTAUDIO_CFLAGS and PORTAUDIO_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else PORTAUDIO_CFLAGS=$pkg_cv_PORTAUDIO_CFLAGS PORTAUDIO_LIBS=$pkg_cv_PORTAUDIO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS -D_HAVE_PORTAUDIO_ $PORTAUDIO_CFLAGS" LIBS="$LIBS $PORTAUDIO_LIBS" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FFTW" >&5 $as_echo_n "checking for FFTW... " >&6; } if test -n "$FFTW_CFLAGS"; then pkg_cv_FFTW_CFLAGS="$FFTW_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fftw3 >= 3.1.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "fftw3 >= 3.1.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FFTW_CFLAGS=`$PKG_CONFIG --cflags "fftw3 >= 3.1.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$FFTW_LIBS"; then pkg_cv_FFTW_LIBS="$FFTW_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fftw3 >= 3.1.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "fftw3 >= 3.1.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FFTW_LIBS=`$PKG_CONFIG --libs "fftw3 >= 3.1.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then FFTW_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fftw3 >= 3.1.2" 2>&1` else FFTW_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fftw3 >= 3.1.2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$FFTW_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (fftw3 >= 3.1.2) were not met: $FFTW_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables FFTW_CFLAGS and FFTW_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables FFTW_CFLAGS and FFTW_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else FFTW_CFLAGS=$pkg_cv_FFTW_CFLAGS FFTW_LIBS=$pkg_cv_FFTW_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CFLAGS="$CFLAGS $FFTW_CFLAGS" LIBS="$LIBS $FFTW_LIBS" fi # Check whether --enable-portmidi was given. if test "${enable_portmidi+set}" = set; then : enableval=$enable_portmidi; if test "x$enableval" != "xno"; then useportmidi=yes fi else useportmidi=yes fi if test x$useportmidi = xyes; then HAVE_PORTMIDI_TRUE= HAVE_PORTMIDI_FALSE='#' else HAVE_PORTMIDI_TRUE='#' HAVE_PORTMIDI_FALSE= fi if test "x$useportmidi" = "xyes"; then ac_fn_c_check_header_mongrel "$LINENO" "portmidi.h" "ac_cv_header_portmidi_h" "$ac_includes_default" if test "x$ac_cv_header_portmidi_h" = xyes; then : else as_fn_error $? "Library 'portmidi' not found" "$LINENO" 5 fi PORTMIDI_CFLAGS="-D_HAVE_PORTMIDI_" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Pm_Initialize in -lportmidi" >&5 $as_echo_n "checking for Pm_Initialize in -lportmidi... " >&6; } if ${ac_cv_lib_portmidi_Pm_Initialize+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lportmidi $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char Pm_Initialize (); int main () { return Pm_Initialize (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_portmidi_Pm_Initialize=yes else ac_cv_lib_portmidi_Pm_Initialize=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_portmidi_Pm_Initialize" >&5 $as_echo "$ac_cv_lib_portmidi_Pm_Initialize" >&6; } if test "x$ac_cv_lib_portmidi_Pm_Initialize" = xyes; then : PORTMIDI_LIBS="-lportmidi $PORTMIDI_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Pt_Start in -lporttime" >&5 $as_echo_n "checking for Pt_Start in -lporttime... " >&6; } if ${ac_cv_lib_porttime_Pt_Start+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lporttime $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char Pt_Start (); int main () { return Pt_Start (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_porttime_Pt_Start=yes else ac_cv_lib_porttime_Pt_Start=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_porttime_Pt_Start" >&5 $as_echo "$ac_cv_lib_porttime_Pt_Start" >&6; } if test "x$ac_cv_lib_porttime_Pt_Start" = xyes; then : PORTMIDI_LIBS="-lporttime $PORTMIDI_LIBS" fi if test "x$PORTMIDI_LIBS" = "x"; then as_fn_error $? "Cannot link against portmidi nor porttime" "$LINENO" 5 fi CFLAGS="$CFLAGS $PORTMIDI_CFLAGS" LIBS="$LIBS $PORTMIDI_LIBS" fi build_debug=no # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; if test "x$enableval" != "xno"; then build_debug=yes CFLAGS="$CFLAGS -DDEBUG -g -Wall -Wextra -Wno-deprecated-declarations -Wno-sign-compare" CXXFLAGS="$CXXFLAGS -DDEBUG -g -Wall -Wextra -Wno-deprecated-declarations -Wno-sign-compare" fi fi # Check whether --enable-warnings was given. if test "${enable_warnings+set}" = set; then : enableval=$enable_warnings; if test "x$enableval" = "xno"; then CFLAGS="$CFLAGS -w" CXXFLAGS="$CXXFLAGS -w" fi fi # Check whether --enable-x11 was given. if test "${enable_x11+set}" = set; then : enableval=$enable_x11; if test "x$enableval" != "xno"; then enable_x11=yes fi else enable_x11=yes fi if test x$enable_x11 = xyes; then WITH_X11_TRUE= WITH_X11_FALSE='#' else WITH_X11_TRUE='#' WITH_X11_FALSE= fi if test "x$enable_x11" = "xyes"; then CFLAGS="$CFLAGS -D_HAVE_X11_" LIBS="$LIBS -D_HAVE_X11_" fi mem_debug=no # Check whether --enable-mem was given. if test "${enable_mem+set}" = set; then : enableval=$enable_mem; if test "x$enableval" != "xno"; then mem_debug=yes fi fi if test "x$mem_debug" = "xyes"; then LDFLAGS="$LDFLAGS -lefence"; fi build_doc=no # Check whether --enable-doc was given. if test "${enable_doc+set}" = set; then : enableval=$enable_doc; if test "x$enableval" != "xno"; then build_doc=yes fi fi if test "$build_doc" = "yes"; then DENEMO_BUILD_DOC_TRUE= DENEMO_BUILD_DOC_FALSE='#' else DENEMO_BUILD_DOC_TRUE='#' DENEMO_BUILD_DOC_FALSE= fi # check for gtk-doc # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GTKDOC_CHECK+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_CHECK in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC_CHECK="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_CHECK=$ac_cv_path_GTKDOC_CHECK if test -n "$GTKDOC_CHECK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 $as_echo "$GTKDOC_CHECK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi for ac_prog in gtkdoc-rebase do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GTKDOC_REBASE+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_REBASE in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC_REBASE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE if test -n "$GTKDOC_REBASE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5 $as_echo "$GTKDOC_REBASE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$GTKDOC_REBASE" && break done test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true" # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args. set dummy gtkdoc-mkpdf; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GTKDOC_MKPDF+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_MKPDF in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC_MKPDF="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF if test -n "$GTKDOC_MKPDF"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5 $as_echo "$GTKDOC_MKPDF" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --with-html-dir was given. if test "${with_html_dir+set}" = set; then : withval=$with_html_dir; else with_html_dir='${datadir}/gtk-doc/html' fi HTML_DIR="$with_html_dir" # Check whether --enable-gtk-doc was given. if test "${enable_gtk_doc+set}" = set; then : enableval=$enable_gtk_doc; else enable_gtk_doc=no fi if test x$enable_gtk_doc = xyes; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.14\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.14") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : else as_fn_error $? "You need to have gtk-doc >= 1.14 installed to build $PACKAGE_NAME" "$LINENO" 5 fi if test "x$PACKAGE_NAME" != "xglib"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKDOC_DEPS" >&5 $as_echo_n "checking for GTKDOC_DEPS... " >&6; } if test -n "$GTKDOC_DEPS_CFLAGS"; then pkg_cv_GTKDOC_DEPS_CFLAGS="$GTKDOC_DEPS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKDOC_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTKDOC_DEPS_LIBS"; then pkg_cv_GTKDOC_DEPS_LIBS="$GTKDOC_DEPS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKDOC_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` else GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTKDOC_DEPS_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else GTKDOC_DEPS_CFLAGS=$pkg_cv_GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS=$pkg_cv_GTKDOC_DEPS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 $as_echo_n "checking whether to build gtk-doc documentation... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 $as_echo "$enable_gtk_doc" >&6; } # Check whether --enable-gtk-doc-html was given. if test "${enable_gtk_doc_html+set}" = set; then : enableval=$enable_gtk_doc_html; else enable_gtk_doc_html=yes fi # Check whether --enable-gtk-doc-pdf was given. if test "${enable_gtk_doc_pdf+set}" = set; then : enableval=$enable_gtk_doc_pdf; else enable_gtk_doc_pdf=no fi if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi if test x$enable_gtk_doc = xyes; then ENABLE_GTK_DOC_TRUE= ENABLE_GTK_DOC_FALSE='#' else ENABLE_GTK_DOC_TRUE='#' ENABLE_GTK_DOC_FALSE= fi if test x$enable_gtk_doc_html = xyes; then GTK_DOC_BUILD_HTML_TRUE= GTK_DOC_BUILD_HTML_FALSE='#' else GTK_DOC_BUILD_HTML_TRUE='#' GTK_DOC_BUILD_HTML_FALSE= fi if test x$enable_gtk_doc_pdf = xyes; then GTK_DOC_BUILD_PDF_TRUE= GTK_DOC_BUILD_PDF_FALSE='#' else GTK_DOC_BUILD_PDF_TRUE='#' GTK_DOC_BUILD_PDF_FALSE= fi if test -n "$LIBTOOL"; then GTK_DOC_USE_LIBTOOL_TRUE= GTK_DOC_USE_LIBTOOL_FALSE='#' else GTK_DOC_USE_LIBTOOL_TRUE='#' GTK_DOC_USE_LIBTOOL_FALSE= fi if test -n "$GTKDOC_REBASE"; then GTK_DOC_USE_REBASE_TRUE= GTK_DOC_USE_REBASE_FALSE='#' else GTK_DOC_USE_REBASE_TRUE='#' GTK_DOC_USE_REBASE_FALSE= fi # Test suite # Check whether --enable-installed-tests was given. if test "${enable_installed_tests+set}" = set; then : enableval=$enable_installed_tests; case ${enableval} in yes) ENABLE_INSTALLED_TESTS="1" ;; no) ENABLE_INSTALLED_TESTS="" ;; *) as_fn_error $? "bad value ${enableval} for --enable-installed-tests" "$LINENO" 5 ;; esac fi if test "$ENABLE_INSTALLED_TESTS" = "1"; then ENABLE_INSTALLED_TESTS_TRUE= ENABLE_INSTALLED_TESTS_FALSE='#' else ENABLE_INSTALLED_TESTS_TRUE='#' ENABLE_INSTALLED_TESTS_FALSE= fi # Check whether --enable-always-build-tests was given. if test "${enable_always_build_tests+set}" = set; then : enableval=$enable_always_build_tests; case ${enableval} in yes) ENABLE_ALWAYS_BUILD_TESTS="1" ;; no) ENABLE_ALWAYS_BUILD_TESTS="" ;; *) as_fn_error $? "bad value ${enableval} for --enable-always-build-tests" "$LINENO" 5 ;; esac fi if test "$ENABLE_ALWAYS_BUILD_TESTS" = "1"; then ENABLE_ALWAYS_BUILD_TESTS_TRUE= ENABLE_ALWAYS_BUILD_TESTS_FALSE='#' else ENABLE_ALWAYS_BUILD_TESTS_TRUE='#' ENABLE_ALWAYS_BUILD_TESTS_FALSE= fi if test "$ENABLE_INSTALLED_TESTS" = "1"; then installed_test_metadir=${datadir}/installed-tests/denemo installed_testdir=${libexecdir}/installed-tests/denemo fi # Check whether --enable-gcov was given. if test "${enable_gcov+set}" = set; then : enableval=$enable_gcov; use_gcov=$enableval else use_gcov=no fi if test "x$use_gcov" = "xyes"; then HAVE_GCOV_TRUE= HAVE_GCOV_FALSE='#' else HAVE_GCOV_TRUE='#' HAVE_GCOV_FALSE= fi if test "x$use_gcov" = "xyes"; then # we need gcc: if test "$GCC" != "yes"; then as_fn_error $? "GCC is required for --enable-gcov" "$LINENO" 5 fi # Check if ccache is being used # Extract the first word of "shtool", so it can be a program name with args. set dummy shtool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_SHTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$SHTOOL"; then ac_cv_prog_SHTOOL="$SHTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_SHTOOL="shtool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi SHTOOL=$ac_cv_prog_SHTOOL if test -n "$SHTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHTOOL" >&5 $as_echo "$SHTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$SHTOOL"; then case `$SHTOOL path $CC` in #( *ccache*) : gcc_ccache=yes ;; #( *) : gcc_ccache=no ;; esac fi if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then as_fn_error $? "ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1." "$LINENO" 5 fi # Remove all optimization flags from CFLAGS CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'` # Add the special gcc flags CFLAGS="$CFLAGS --coverage" CXXFLAGS="$CXXFLAGS --coverage" LDFLAGS="$LDFLAGS --coverage" fi for ac_header in sys/soundcard.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/soundcard.h" "ac_cv_header_sys_soundcard_h" "$ac_includes_default" if test "x$ac_cv_header_sys_soundcard_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_SOUNDCARD_H 1 _ACEOF fi done for ac_header in errno.h do : ac_fn_c_check_header_mongrel "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default" if test "x$ac_cv_header_errno_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ERRNO_H 1 _ACEOF fi done for ac_header in getopt.h sys/wait.h wait.h sys/time.h sys/resource.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int mysignal = SIGCHLD; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : $as_echo "#define HAVE_SIGCHLD 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE * fp; flockfile (fp); ftrylockfile (fp); funlockfile (fp); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : $as_echo "#define HAVE_FILE_LOCKS 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "${prefix}" = "NONE"; then prefix=${ac_default_prefix} fi pkgdatadir=${datadir}/${PACKAGE} PACKAGE_DATA_DIR=${datadir}/${PACKAGE} sysconfdir=$sysconfdir/${PACKAGE} packagesrcdir=`cd $srcdir && pwd` cat >>confdefs.h <<_ACEOF #define PACKAGE_SOURCE_DIR "${packagesrcdir}" _ACEOF denemo_load_path=${PACKAGE_DATA_DIR}/modules denemo_bin_path=${libdir}/${PACKAGE}/modules ac_config_files="$ac_config_files build/Makefile Makefile denemo.spec tools/Makefile src/Makefile pixmaps/Makefile docs/Makefile docs/transformations/Makefile docs/images/Makefile docs/reference/Makefile docs/reference/denemo/Makefile po/Makefile.in fonts/Makefile soundfonts/Makefile ui/Makefile tests/Makefile libs/libsffile/Makefile libs/libsmf/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi ac_config_commands="$ac_config_commands po/stamp-it" if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_GLIB_TEST_TRUE}" && test -z "${ENABLE_GLIB_TEST_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GLIB_TEST\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_SMF_TRUE}" && test -z "${HAVE_SMF_FALSE}"; then as_fn_error $? "conditional \"HAVE_SMF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_JACK_TRUE}" && test -z "${HAVE_JACK_FALSE}"; then as_fn_error $? "conditional \"HAVE_JACK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_EVINCE_TRUE}" && test -z "${HAVE_EVINCE_FALSE}"; then as_fn_error $? "conditional \"HAVE_EVINCE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_AUBIO_TRUE}" && test -z "${HAVE_AUBIO_FALSE}"; then as_fn_error $? "conditional \"HAVE_AUBIO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_ALSA_TRUE}" && test -z "${HAVE_ALSA_FALSE}"; then as_fn_error $? "conditional \"HAVE_ALSA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_FLUIDSYNTH_TRUE}" && test -z "${HAVE_FLUIDSYNTH_FALSE}"; then as_fn_error $? "conditional \"HAVE_FLUIDSYNTH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_RUBBERBAND_TRUE}" && test -z "${HAVE_RUBBERBAND_FALSE}"; then as_fn_error $? "conditional \"HAVE_RUBBERBAND\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PORTAUDIO_TRUE}" && test -z "${HAVE_PORTAUDIO_FALSE}"; then as_fn_error $? "conditional \"HAVE_PORTAUDIO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PORTMIDI_TRUE}" && test -z "${HAVE_PORTMIDI_FALSE}"; then as_fn_error $? "conditional \"HAVE_PORTMIDI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITH_X11_TRUE}" && test -z "${WITH_X11_FALSE}"; then as_fn_error $? "conditional \"WITH_X11\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DENEMO_BUILD_DOC_TRUE}" && test -z "${DENEMO_BUILD_DOC_FALSE}"; then as_fn_error $? "conditional \"DENEMO_BUILD_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_BUILD_HTML\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_BUILD_PDF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_INSTALLED_TESTS_TRUE}" && test -z "${ENABLE_INSTALLED_TESTS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_INSTALLED_TESTS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_ALWAYS_BUILD_TESTS_TRUE}" && test -z "${ENABLE_ALWAYS_BUILD_TESTS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_ALWAYS_BUILD_TESTS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GCOV_TRUE}" && test -z "${HAVE_GCOV_FALSE}"; then as_fn_error $? "conditional \"HAVE_GCOV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by denemo $as_me 2.2.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ denemo config.status 2.2.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "default-2") CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "build/Makefile") CONFIG_FILES="$CONFIG_FILES build/Makefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "denemo.spec") CONFIG_FILES="$CONFIG_FILES denemo.spec" ;; "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "pixmaps/Makefile") CONFIG_FILES="$CONFIG_FILES pixmaps/Makefile" ;; "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; "docs/transformations/Makefile") CONFIG_FILES="$CONFIG_FILES docs/transformations/Makefile" ;; "docs/images/Makefile") CONFIG_FILES="$CONFIG_FILES docs/images/Makefile" ;; "docs/reference/Makefile") CONFIG_FILES="$CONFIG_FILES docs/reference/Makefile" ;; "docs/reference/denemo/Makefile") CONFIG_FILES="$CONFIG_FILES docs/reference/denemo/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "fonts/Makefile") CONFIG_FILES="$CONFIG_FILES fonts/Makefile" ;; "soundfonts/Makefile") CONFIG_FILES="$CONFIG_FILES soundfonts/Makefile" ;; "ui/Makefile") CONFIG_FILES="$CONFIG_FILES ui/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "libs/libsffile/Makefile") CONFIG_FILES="$CONFIG_FILES libs/libsffile/Makefile" ;; "libs/libsmf/Makefile") CONFIG_FILES="$CONFIG_FILES libs/libsmf/Makefile" ;; "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "default-1":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "default-2":C) case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; "po/stamp-it":C) if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then as_fn_error $? "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5 fi rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp" >"po/stamp-it.tmp" sed '/^#/d s/^[[].*] *// /^[ ]*$/d '"s|^| $ac_top_srcdir/|" \ "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES" sed '/^POTFILES =/,/[^\\]$/ { /^POTFILES =/!d r po/POTFILES } ' "po/Makefile.in" >"po/Makefile" rm -f "po/Makefile.tmp" mv "po/stamp-it.tmp" "po/stamp-it" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi denemo-2.2.0/PaxHeaders.19168/ltmain.sh0000644000000000000000000000007412417260023014351 xustar0030 atime=1500919917.186648472 30 ctime=1500919912.889981805 denemo-2.2.0/ltmain.sh0000644000175000017500000105203012417260023016216 0ustar00jjbenhamjjbenham00000000000000 # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.11 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.2 Debian-2.4.2-1.11" TIMESTAMP="" package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type \`$version_type'" ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 denemo-2.2.0/PaxHeaders.19168/COPYING0000644000000000000000000000013213135434035013563 xustar0030 mtime=1500919837.906648472 30 atime=1500919917.429981805 30 ctime=1500919912.866648473 denemo-2.2.0/COPYING0000644000175000017500000010451313135434035015440 0ustar00jjbenhamjjbenham00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . denemo-2.2.0/PaxHeaders.19168/ChangeLog0000644000000000000000000000013213135434035014302 xustar0030 mtime=1500919837.909981805 30 atime=1500919917.459981806 30 ctime=1500919912.873315138 denemo-2.2.0/ChangeLog0000644000175000017500000044624213135434035016167 0ustar00jjbenhamjjbenham000000000000002017-07-08 New Features for release 2.2 Virtual Piano Keyboard Defaults to 8 octaves Enter rhythm then pitches Enter Chords via right click Score editing key shortcuts unaffected Touch screen ready MIDI Simulation PC-keyboard simulates Piano Keyboard Enter rhythm then pitches Octave Control Works for entering chords too Customize key assignments Lyrics Improvements Handle mis-matched quotes Avoid accidental verse deletion Figured Bass Enhancements Position figures on whole notes better Make accidentals without a figure bigger Position accidentals before a figure better Slur and Tie Styles Choose from Dashed, Dotted or Solid Support for .gz files Open compressed files without renaming Bug Fixes Upgrade keeping shortcuts Command Center searches with leading space 2017-02-12 GTK Upgrade UI manager dropped All deprecations to version 3.22 fixed New Features Gregorian Chant Support Easier Mirrored Dynamics Lyrics verses can be mirrored to other staffs Easy selection of staffs to typeset Improved Playback Controls Less Cluttered Dynamics Line Cross Voice Arpeggios Baritone Clef support Invoke Command Center on commands from Object Editor Tear-off Menus Now tear off as palettes Keep them around, dock them, edit the tooltips… Clearer Display Object Position indicators only where needed Bug Fixes Setting playback start via button is now reliable Playback View sometimes playing from wrong point fixed Instability on Undo after delete of staff with lyrics Ledger lines in display for staffs of less than 5 lines fixed Fix display of Drum Clef Fix positioning of graphics in display for windows Fix Playback View for certain locales Improved Lyrics display Fix Lyric aligment syntax 2016-09-17 New Features Specify total page count Set a distinctive style for page numbers Duplex View now shows page edges clearly Chord Entry by MIDI keyboard without sustain pedal Palette button creation for chord types Reload standard palettes Bug Fixes Navigation from stale Print View fixed InsertChord command fixed at clef change Typeset Verses at End now copes with quotes, underscore, tildes 2016-08-05 Bug Fixes: Fix Print View update when changing initial clef/timesig Fix WYSISYG beam angle alteration 2016-07-18 Release 2.0.8 More Conditional Settings Apply conditions to score directives Create duplicate directives to be used conditionally Use for page breaks between movements, margins etc Lyrics Pane Improvements Save directly from verse Navigate verses from keyboard Hidden Staff Improvements Now auto-show when the cursor moves on them Can be navigated with the mouse as well as keyboard Settings stored with score New Commands Create Click-Track Auto-filled with beats Custom fill available Create Intro Handles upbeat Create Multi-Measure rests in bulk Create Palette Buttons for Object Instantiation Chords and Standalone Directives Clones fingerings, string numbers, ornaments etc Swap chord notes Applies to doubled notes (e.g. c c or c c#) Eases editing of the notes Use for fingerings, string number etc Auto-open Source File First link opened on file open Bug Fixes Nth time bar numbers match font Layout sync fixed Undo/Redo fixed for several bugs 2016-04-20 Release 2.0.8 Copy and Paste Applies to note/chord attributes CtrlC, Ctrl-V work for these Copied marking is highlighted Selection changes color when copied Improved Acoustic Feedback Trill makes a short trill sound on entry Copy attributes sounds Improved Visual Feedback Status bar notices are animated Characters are highlighted in Lyric Verses Directives are made more legible when cursor is on them Cadenza Time For un-metered music Music can still display in “bars†New Commands Tuplet Positioning Curved Tuplet Brackets Cadenza on/off uses Cadenza Time, sets smaller note size, editable text Notes without stems Bug Fixes Standalone Multi-line text with backslash editing Pasting into measures that precede a time signature change 2016-03-20 Release 2.0.6 Play Back Controls Buttons to play selection or from cursor Fix bugs with initial use Mute Staffs Mute/Un-mute all or groups of staffs Whole Score Volume Override Denemo Display Upbeat bar numbering matches typesetter LilyPond Error Reporting Separate report for each run Only report include filenames when they error Playback View Shift-Click to Navigate Revert to simple MIDI while editing Playback from Typeset View Unified interface with Playback View Translations Chinese (Simplified) Translation 2016-02-23 Release 2.0.4 Conditional Directives on Chords/Notes Create editions with/without ornaments, fingerings … Conditional items are highlighed in the display Object Inspector reports on them Enhanced Object Editor Set Conditional Behavior Initiate Search/Edit from Object New Commands Gaps in Staffs Enharmonic transpositions of passages Generating Parts Part naming extended to multi-staff instruments 2016-01-14 Release 2.0.2 Playback View Fully Typeset View Click to Play Drag to play selection Shift-Drag to loop Auto-scrolling Simple Scrolling Multiple Scroll Points (tempo changes etc) Play from full score while scrolling a part Fully-featured MIDI Cresc. and Dim. Articulations (staccato etc) Grace Notes Individual Tied Notes in Chords Sustain Pedal … more LilyPond Export One file per part Output divided into measure per line Measure Number every 10th measure All Staffs All Movements Staff/Voice Editor Improvements Navigate to other staffs within editor Visibility/editing of clef, key, time signatures Guidance for voices typeset on one staff Dynamics Lines Display on single line Distinctive coloring Instrument Ranges Out-of-range notes colored red Easy one-click setting to chord Instrument Templates Add staffs pre-configured for chosen instrument Name, range and transposition included Substituting Music Replace music of one staff with that of another Use, e.g. to typeset Chord Symbols and Fret Diagrams from one set of chords Fret Diagrams Include pre-defined Mandolin and Ukulele Default is guitar Tablature Include example for 18th c Lute Bug Fixes Ornament with Accidentals above and/or below fixed 2015-09-16 Release 2.0 Object Inspector Full details of current object nicely formatted Includes all attachments to the current object Tracks the cursor Available from the Print View Object Editor Edit built in attributes Edit attached features Available from Inspector or by right click. Create Palette Buttons for instantiating the current attached features Score and Movement Properties Editor Edit global properties of the Score Edit global properties of the Movement Switch between movements to edit properties Create Palette Buttons for instantiating the current score or movement property Staff and Voice Properties Editor Edit global properties of the Staff Edit global properties of the Voice Create Palette Buttons for instantiating the current staff or voice property Search and Replace Search for rhythmic patterns Edit at found pattern and continue Search for note sequences Wrap to staff start/next staff Resume search Titles Control of bold, italic and fontsize Control of spacing Beaming Rules Create scorewide beaming rules Rules for multiple time signatures Regular rules with exceptions done by example. Preview of Text/Music/Fret Diagram/Chord Symbol Markup Check the appearance before re-typesetting the score Notehead Styles Complete set of notehead styles Set on individual notes or score-wide Improved MIDI output Sustain Pedal effect Bug Fixes MIDI message lengths corrected for custom messages User Manual Many new sections added 2015-07-21 Release 1.2.4 Command Search Improved Search for commands containing key words Fuzzy search Search command help text and label New Commands Choose format of rehearsal marks Plain, boxed or circled Alphabetic or Numeric Controls for page numbering Music Snippets Saved with the score Use extended to all objects Command for insertion from keyboard Re-labelling of snippets Staff Groups (Braces) Graphically displayed Click to edit the start or end Updated Manual New sections on Command Center, Tablature, Fret Diagrams … Autosave Auto-saved versions detected on start up Save rate in granularity of seconds Bug Fixes Fix over long menus Menu of searchable objects avoid spurious items Improved Check Score routine more errors detected error position indicated in all cases 2015-02-02 Release 1.2.2 More mouse selection support Extend an already made selection by dragging Dragging selection now scrolls as needed Large (Deep) Score Support Hide staffs in the Display Display only selected staffs, e.g. woodwind section Use for deep scores, e.g. full orchestra. Navigation commands available Improved Ornamentation Interface Place accidentals above and/or below ornament Stack ornaments. Quick and easy WYSIWYG dragging. Support for Proof-Reading Add PDF Annotations to Denemo typeset Score Open the proof-read score in Denemo Locate proof reading marks Transfer proof read comments to the Denemo score Edit/Delete all of one type of object Chord Chart Bass Inversion Sequences Support for editing from MIDI controller Artificial Harmonics Caesura Arbitrary text for N’th time bars Intelligent tied notes edits Duplicate, Split or Merge Movements 2014-10-31 Release 1.2.0 Palette Shortcuts Execute Palette Commands from Keyboard Label is typed in Label truncation allowed Switch active palette Works even on hidden palettes Automatic Cues Install Reference to Cued Part Automatically detects difference in clef Changes are automatically reflected in cue Fret Diagrams Can be placed in any score Can be embedded in text Can be re-positioned by dragging Accidental Styles 16 styles available Apply across entire score Lyrics Improvements Choose Font Face Choose Font Size Chord Chart Improvements Interface for Customized Chord Symbols Page size and measures per line control One-off arbitrary chord symbol creation Tailored shortcuts for fast keyboard entry. MIDI information on double-click Timing information Volume (velocity) information. Default Font Faces Choose from system installed fonts Titles, Lyrics etc Chord Names and other sans serif text Mono-spaced font General Improvements More checks for user errors Better flow of notes into new measures. 2014-07-15 Release 1.1.8 Spanners Dynamics such as cresc. poco a poco Text such as rall … LilyPond takes care of the extents Lyrics Enhancements Lyric stanza numbers can be inserted Available on lyrics pane menu Lyric font style control Melismata Insert Text and Graphics Graphic Title Pages Multiple columns of text Edit in external vector editor Use for music books, verses … Multi-line text, with embedded music snippets Custom Ornaments/Symbols Edit the Ornament Shape and Size Re-define existing ornaments Attach to notes or stand-alone Custom Barlines Define new barlines Re-define existing barlines Control over how/if they print in all positions Chord Charts Chord Symbols With barlines, repeats Text markings, pauses Use for songs, jazz … Display on smartphone while busking… 2014-06-20 Release 1.1.6 Lyrics Interface Cursor on music moves to match cursor in lyrics Jump to any point in the lyrics by mouse or keyboard The inactive pane (lyrics or music) clearly indicated by graying-out Margins Control Set top, bottom, left and right margins in mm. Tweaking Typesetting Individual notes, chords and rests can be tweaked Accidentals and markings move with the note For use when LilyPond is sub-optimal 2014-04-21 Release 1.1.4 Spillover Appending over-length notes spill into next bar. Works for rests too. Optional – set a preference for old behavior. Shortcuts Cheat Sheet Current set of shortcuts listed. Alphabetical order. Gives description of command. Support for Aubio 4 Microphone Input Note Detection. Note Onset Detection. Instrument Tuning. General Seek and Edit Facility Choose from all available object types in movement. Choose from objects at cursor. Seek and edit the chosen type in music playing order. Restart last search, wrap to beginning, to next movemnt. Display Editing Control+Shift drag to move objects in the input music display Does not affect the final typeset score. Useful when the input music display is too cluttered to see clearly. MusicXML import Imports Titles, copyright and other text Imports dynamic markings 2014-01-27 Release 1.1.2 Transcribing from MIDI Play in to a click track. Enter rhythm afterwards. Guided MIDI import Durations can be checked as they are entered. Support for LilyPond 2.18 Old scores are updated for incompatible syntax. Re-shaping/Re-positioning Ties Both WYSIWYG and tweaking width/height/convexity. LilyPond View Improvements Bracket Matching. Line numbering visible. Cursor position highlighted. Links to source files can be relative to current score location 2013-10-10 Release 1.1 Palettes of commands Customize content and shape User created palettes Movement Navigation Buttons Buttons for quick change Indication of current Movement Raw LilyPond Output For inclusion in user's LilyPond template Single keypress to update the output Improved Command Manager Commands ordered by their labels Incremental search for commands by label Menu path to each command is shown 2013-08-27 Release 1.0.8 Audio Speed Control Slow down the audio output in real time Aids transcription from audio files. Skeleton Score from Audio Note Onsets detected and marked above skeleton score. Note Onsets can be dragged to set tempo and synchronize Bug Fixes Guile 2.x now properly supported. 2013-07-13 Release 1.0.6 Import MusicXML Direct import of music XML. Improved Rhythm Entry Dotted rhythms in two keypresses Triplets in three keypresses Slurred versions of these too. Combined Key Signatures Search and Edit Seek a selected type of item Edit or continue seeking Applies to ornaments, Rehearsal Marks, barlines ... Grace Note Hints works around the long-standing LilyPond "feature" 2013-05-26 Release 1.0.4 Playing back repeats in MIDI Da Capo and Dal Segno also supported Double-Clicking for Help Explore the object at the cursor Learner Mode key presses are shown as you make them the command and its tooltip is explained Note Entry by PC-keyboard Improved The duration keys sound the note entered They simultaneous set the prevailing duration Audio Recording Export to .ogg or .wav files Live performance also recorded Bug Fixes Layout blocks properly supported 2013-04-24 Release 1.0.2 Wysiwyg Improvements Dragging now shows the object as you drag moving over the score Dragging of objects attached to notes can now be done Slurs can be re-shaped Chord Symbols Place chords on a separate staff and have them automatically typeset as Chord Symbols Bug Fixes Octave playback bug fixed 2013-01-04 Release 1.0 WYSIWYG Positioning of elements can be fine-tuned by dragging in the final typeset view. Slur angle and placement can likewise be altered by dragging to avoid occasional problems Beaming angle can be altered using this wysiwyg interface. Continuous Typesetting Option A continuously updated score can be kept visible Option to re-typeset only a few bars/staffs around the current position Animated Display No more losing the cursor when stepping off the side of the screen. Transition when deleting measures or staffs makes it clear what you just did Example of Features Sample pdf output: click on a feature to get instructions on how to create the feature More commands Single command to generate complete set of score and parts Textual Annotations, draggable to any position Lyric verses at end of piece. Acciaccatura built in, with display. Dal Segno Whole Measure Repeats Beaming commands controlling left and right beam numbers LilyPond definitions can be created for a score and immediately appear in a menu 2012-07-08 Release 0.9.6: Tooltips Tooltips now available on all the menus and menu items. Control over delay before tooltips appear and tooltip browsing in preferences Score Layouts - print a variety of score layouts without altering the score In addition to the standard Full Score, Single Part, Reduced Score, you can now define score layouts to print just one section (e.g. the chorus, or the solo parts in score). Blank Pages can be inserted specific to a score layout. Lyrics can be positioned above and below the staff (for two parts to a staff) Conditional Directives Enabling the page turns to be defined separately for Full Score and Single Part layouts Enabling parts which have identical first and second time bars to dispense with these when printing single part. Enabling printing using different clef changes, or for transposing instruments without altering the score. Translations Commands, menu labels tooltips now all translatable. Scheme scripts have their strings made available for translation, but these mostly need marking still. Mouse User Option For those who like clicking on the mouse, lots of user-friendly buttons for creating music scores. 2012-03-06 Release 0.9.4: * Playback in real time No hiccups when page turns or if editing during playback etc Pause and Loop play included Recording MIDI to accompany the live playback *Links to Source Material Source files (manuscripts/facsimiles) can be linked from the Denemo score One click navigation to and from the source to the transcription * Better control of voices Voices can be displayed on separate staffs but remain as voices. No need to join voices before printing. * Printing directly from Denemo optional side-by-side view for seeing page turns no need for external pdf viewer print to file (pdf, postcript or scalable vector graphics) a print-preview is available * Navigate from PDF Pointing and clicking on a note in the PDF score takes you to that note in the Denemo score * Tweaking the positions of Objects Often needed for Rests in single staff polyphony * Book Titles Title Page, with composer, arranger etc information nicely displayed. Table of Contents optional Epilog, a title and paragraph on a page at the end of the music Critical Commentary automatically generated from critical comments placed on the music. * Improved display Markings like staccato now display nicely Text markings also move out of the way of notes in display *Audio/Score mixer Allows you to synchronize a blank score with a human-generated original audio recording, bar by bar. The music can then be transcribed into the blank score and will play in sync with the audio. *Chord Accompaniment Editor Allows you to work through a score listening and playing in chords via MIDI controller Chords are notated for you, and the bars you are working on are replayed MIDI controller can be used to advance to the next bar or retry the current bar. * Supports both GTK3 and GTK2 2011-09-27 Release 0.9.2: * Score Checking o Performed automatically before printing (optional) o Under/Overfull measures o Unterminated tuplets o Miss-matched slurs. * Pitch Spelling o Performed live on MIDI entry o Colors intervals that may be enharmonic spelling mistakes with a different timbre * Enter Accidental before or after note o Use enter accidental to avoid sounding spurious notes on entry. o Change a note to one of its enharmonic variants. Same absolute pitch (in Equal Temperament). o Change the duration of single notes in a chord to create single-voice polyphony * Vertical Rest Positioning (for polyphony) * Grace Notes that come after rather than before the main note. * Improved display of under/overfull measures * Display shows if there are measures before/after those on screen and provides buttons to navigate * Better beaming control. * Arbitrary Dynamics text. * New Denemo fonts o Denemo's own font now uses standard unicode font symbols o LilyPond font accessible to scripts o Improved display of entered music, help texts etc. o Simpler scripting to display any LilyPond feature. * Thumbnails for .denemo files in file open dialog and for your Window Manager o Thumbnail shows a selection of your choice as finally typeset. o Default thumbnail is first three measures * Import images of scores for transcription o Scores captured bar-by-bar into Denemo, displayed directly underneath the bar they relate to. o Editorial decisions/errors can easily be checked But Linux only. * Bug Fixes o Vertical scrolling (a long-standing bug fixed at last) o Bookmark searching o Nested tuplet display o Redo crashes * Notes: o As yet no windows binary is available o Playback out of priority thread is not in this release. o The manual does not have the latest list of scheme commands available. 2010-11-24 Release 0.8.22: * Playback Improvements o playback in historic tunings, microtonal music playback. o mute selected voices during playback * Denemo Display improvements o Whole Measure Rests fills measure for all timesignatures o Upbeat (Anacrusis, pickup) command now fills measure o Vector graphics for Directives Graphics Fonts o Fully justified page display. o Better display for 1-line staffs (e.g. Drum staff) * Breve, Longa notes and rests o Prevailing duration applies to Breve, Longa, Plain chant etc Prevailing Duration * Template for Accordion Shifts * Improved Handling of Voices * More Printing Controls o Change/override the printed measure numbering o Hide single printed objects (notes/chords, timesignatures, keysignatures, clefs) o Hide linear section of notes or the stafflines (or both). o Breath mark o "Mensurstriche" / Mensural Barlines switchable (printing) * Human-readable file format for Denemo files. * Bugfixes o Playback paging made reliable o Check note pitches fixed o Lyrics panes word wrap 2010-10-04 Release 0.8.20: * Improved cursor, showing insert position and clearly distinguishing appending from editing/inserting * Two key keyboard shortcuts Two Key Shortcuts * MusicXML import * Improved LilyPond import * "NotationMagick": Scripts to generate, twist, randomize and shuffle music. o Twelve-Tone-Row (Schoenberg) Generator o Random Note insert. Variants: All diatonic, all chromatic, from a given pool, a complete pool at once (shuffled) * Bug Fixes o Grace notes on tuplets fixed. o Paste places non-note objects correctly. * Build options: o configure --disable-portaudio is now available, removes dependencies of portaudio, libsamplerate, fftw3 and aubio 2010-07-05 Release 0.8.18: * Maximize the space for the score (with/without user's choice of menus). o Standard View - window size, zoom, number of systems etc o No-Menu version of this view o Page View - user chooses a window size, zoom and number of systems, which is stored with the movement for instant recall. o Single keyboard shortcut for toggling between these views (Esc by default). * Musical Snippets - store musical riffs/motifs to be pasted at will or as rhythmic templates for playing over. * MIDI transport work for JACK users. * Bug fixes: o Fix Chord Symbols for music starting with triplets, grace notes etc. o Fix display of dotted rests * Arbitrary Tuplets built in: correct MIDI output as well as engraving, of course. * Diatonic Transposition: Shift notes and chords up and down respecting the current key signature. * Support for figured bass extenders, including those with no starting figure. * Better Paste command. * Cursor can be highlighted, making it easier to locate * Page turning is animated: as the last line starts to play, the page visibly turns at the top. * Default behavior is now non-modal o an easy to understand and very slick interface via keyboard o seamless integration with MIDI controllers * Purely rhythmic notes playback using percussion - click tracks more easily generated. * Separate shortcut loading command * Split Notes and Chords to smaller notes while preserving the original duration (make a quarter note two 8th or tuplet of 8th or 7-tuplet) * Duplicate a Note or Chord as command * Command line interface for interactive scheme use * Support for the "French" clef (G on bottom line) 2010-04-01 Release 0.8.16: * Automatic page turning on playback. When playback reaches the last line in the display the page turns at the top so that you can read the music continuously * Recording Midi: while playing a Denemo score you can record a new MIDI part, and then playback the combined performance. Save the combined performance as midi. Simple convert-to-notation. * Playback controls - set the start position to the cursor * Grace Notes - Now as On/Off command, correct display in Denemo and works with selections 2010-03-01 Release 0.8.14: * Zoom for the Denemo display * Mulit-line display of music. * MIDI player controls o Independent playhead o Loop control - edit your music while it loops. o Master Tempo command o Master Volume command o Control the play interval, set to selection etc * Typical Midi Control Changes (Program Change, Hold Pedals etc.) o A Generic Control Change directive for any Midi CC Message. * Convert GM Drum Staffs to users' drum notation. The mapping can be edited visually by using a normal .denemo template. * Apply To Selection for script authors o Upgrade of some scripts to work with selections. o New user preference that turns "Apply to Selection" on/off * New cursor movement commands: Standard shortcuts now don't alter the selection o Conventional mouse + keyboard selection (shift+left/right), in multiple staffs at once * Improvements to MIDI import. * Hide certain menus / toolbars. 2010-01-01 Release 0.8.12: * MIDI playback by internal synth (Fluidsynth) * MIDI input available from all platforms (using Fluidsynth) * Uses latest LilyPond version * New Paste command Paste Command Script * Adding movements keeps the staff/voice arrangements of the current movement. * Find routines. Find next note lower than cursor. * Support for wheel-mouse * Rhythm entry now creates non-printing notes until pitches are applied * Metronome markings for any duration, slur direction control, memorize and return to the cursor position, * Set up multiple JACK output devices with multiple ports on each. Assign staffs to these device/port names. * Bug fixes: cursor position on directives 2008-07-17 view.c more internationalization fixes, and minor improvements to tooltips. denemoui.xml apply RR's fix for order of menu items. 2008-07-17 exportlilypond.c prints out more info in /paper properties on music excerpt changed many links to point to denemo.org 2008-07-17 importmidi.c printf takes notice if their is possible multiple voices 2008-07-10 importmidi.c rewrote and renamed function NewFindChordTones to findchordtones. 2008-07-09 importmidi.c/h fixed some casting to remove warnings 2008-07-08 importmidi.c/h importmidi now puts notes on correct staves 2008-07-05 commandfuncs.c make toend() function really go to the end of the movement. (See Nils wishlist item). 2008-07-05 main.c view.c position init_keymap() so that it can access all widgets. This is just my own fix as I seem to have checked in the other fixes for multiple windows by mistake & this stops git being broken for display of keybindings on menu items. 2008-07-05 audiocapture.c improve test for portaudio >V18 2008-07-03 importmidi.c importMidi now returns 0 on success. It was returning 1 on Success. 2008-07-02 staffops.c Warn about deleting one of a pair of staffs with context set. 2008-07-02 file.c do not offer to load lilypond. (You can still try though). 2008-07-01 print.c, print.h made seperate function for open_viewer 2008-06-30 commandfuncs.c warn if context set when swapping staffs. view.c document behaviour of swap staffs. 2008-06-28 generate_source.c entries.h callbacks.h, view.c fix duplicate menu_entries. exportlilypond.c change semantics of markup scoreprops.c scoreops.c importxml.c exportxml.c denemo_types.h 2008-06-28 add Metronome.denemo to examples Makefile.am 2008-06-27 add RehearsalMarks.denemo to examples Makefile.am 2008-06-27 exportlilypond.c avoid showing only selection in LilyPond text when focus-in. 2008-06-27 keymaps get rid of duplicate & non-existant actions. kbd-custom.c avoid exit in case of error in Debug code. 2008-06-27 Fixes from JRR -Do not set modifier keys as keybindings when using quick edits src/kbd-custom.c src/kbd-custom.h src/kbd-interface.c 2008-06-27 Fixes from JRR - Mnemonics for some menus and buttons were stealing keybindings. Mnemonics associated to standard gtk stock items are removed through clean_stock_items (was remove_accel_from_stock) Mnemonics in menubars are remove by removing '_' from their labels 2008-06-27 Fixes from JRR - load_accels is not needed anymore and as such is removed. Welcome in a gtk-accel free denemo! src/main.c src/view.c 2008-06-27 Fixes from JRR - Remove the accel code from kbd-custom.c - Move update_accel_labels from view.c to kbd-custom.c Some code factorization is also performed. - Remove load_accels from main.c This breaks again the accel behaviour of action using stock items, but it is the way to go. Next commit will fix this - Fix bug N°1 of RS mail on denemo-devel@gnu.org (Three Bugs, 22/06/2008) 2008-06-27 Makefile.am remove standard.accels 2008-06-27 view.c commandfuncs.[ch] functions for voiceup/down. Refine label on edit change duration. 2008-06-26 keymaps/Makefile.am fixed the installation of keymaps 2008-06-26 view.c commandfuncs.c commandfuncs.h implement staffup/down properly. kbd-custom.c clear old bindings on loading new. 2008-06-26 view.c Improve label on the duration menu in Edit mode 2008-06-26 Makefile.am corrected install 2008-06-26 keymaps/NumericKeypad.keymap, Makefile.am added old ones removed 2008-06-19 keymaps/Makefile.am kbd-custom.c make keymaps a separate directory in share/denemo and in ~/.denemo help.c update website reference 2008-06-19 kbd-custom.c update labels on poaching a shortcut from another menu item standard.accels, used only to clear accels. denemo.keymaprc revised to provide simple startup 2008-06-19 view.c, kbd-custom.c, keyboard.c Discontinue setting of gtk accelerators in favour of scorearea_keypress() based shortcuts. Display all shortcuts with on menus. Still not fixed is deletion of old shortcuts from labels. 2008-06-16 removed src/exportpdf.* and moved doc/*.png to doc/images doc/Makefile.am removed png reference doc/images/Makefile.am referenced png's for installation print.c began code consolidation 2008-06-11 Fix problem with KP_Enter. You have to coordinate standard.accels with denemo.keymaprc. TODO do not load standard.accels if a local keymaprc is used. 2008-06-11 Fix spurious accelerator labels, enable labels on AddTone and the CursorXXX actions to show, Make sure backspace and del show as accelerators. All this just for the default out of the box situation. Remove spurious warning on delete shortcut button. denemo.keymaprc, standard.accels, kbd-custom.c, view.c main.c 2008-06-10 exportlilypond.c commandfuncs.c print.c make print obey selection view.c kbd-custom.c, keyresponse.c keyboard.c kbd-interface.c,h include/denemo/denemo_types.h Updated keybinding code from JRR 2008-06-08 removed exportpdf.* files. src/Makefile.am removed reference to exportpdf.* print.* added functions that were in exportpdf.* and consolidated some 2008-06-08 print.c added pop-up dialog for printing excerpts 2008-06-06 file.c, removed .jtf support removed frogio.c/h frogdefs.h frogparser.h frogparser.y frogparser.c \ src/exportcsound.c src/Makefile.am, src/selectops.c removed reference to above files src/exportcsound.c added function durationtofloat that used to be in frogio.h 2008-06-05 file.c added .png as supported export file type exportlilypond.c added support for png export denemo_types.h function DenemoLilyControl added member gboolean excerpt prefops.c added support for variable imageviewer as a preference view.c added to menu print excerpt denemoui.xml added PrintExcerptPreview in menu 2008-06-04 print.c,h view.c, exportlilypond.c add support for printing excerpt from selection. Make function names more uniform. 2008-06-04 examples Upbeat.denemo added. 2008-06-04 measureops.c showaccidental if note postfixed with ! or ? lilydirectives.c,h view.c denemoui.xml introduce separate menu items for postfix LilyPond and insert LilyPond. 2008-06-03 lilydirectives.c fix string creation error examples/ add SuggestedAccidental.denemo CautionaryAccidental.denemo and ReminderAccidental.denemo 2008-06-02 mousing.c,h view.c allow dragging to select. Remove deprecated functions drawselection.c move the selection rectangle over to the left drawnotes.c remove reference to unused is_highlighted field. gcs.c,h improve colors. importxml.c remove debug output draw.c, drawlilydir.c drawingprims.h mark selected objects blue; make overlayed pitches green, background gray, colour lilypond inserts green. importxml.c remove debug output 2008-05-31 exportlilypond.c turn off the s1* output for empty measures when they contain LilyPond inserts. Tidy code. 2008-05-30 exportlilypond.c fix bug in resetting durations after lilypond insert. examples/Makefile.in,am MultiMeasureRests.denemo 2008-05-26 drawlilydir.c show markup include/denemo/denemo_objects.h commandfuncs.c lilydirectives.c import/exportxml.c introduce a lock for lilypond inserts examples/* lock the lilypond inserts of the examples. utils.c generalize the dialog routine. 2008-05-26 exportlilypond.c save LilyPond on window destroy. 2008-05-25 examples/Cues.denemo examples/Makefile.am,in 2008-05-25 added denemorc.xml po/Makefile.in denemo.conf 2008-05-25 staffops.c prevent crash on deleting only staff when leftmost measure is not start of measures. drawlilydir.c staffops.c allow comment lilydirectives to show. 2008-05-24 examples/Makefile.am Ossia.denemo added example 2008-05-23 file.c,h view.c denemoui.xml added Gallery of examples. 2008-05-23 added Richard's example files to git and Makefile.am 2008-05-23 added Makefile.am in the following directories under templates: band chamber choral jazz added templates/Makefile.am added templates to SUBDIRS in Makefile.am configure.in added templates/makefile, commented out doc/templates/*/Makefiles 2008-05-22 templates direcory containing jazz, band, choral and chamber subdirectories with templates added. 2008-05-22 pitchentry.c fix for multiple guis closing microphone. 2008-05-22 importxml.c fix for NULL context string stored. 2008-05-22 audiocapture.c fixes for V19 2008-05-22 makefile.am added examples to SUBDIRS configure.in added examples/makefile examples/makefile.am added makefile to install examples 2008-05-21 view.c prevent crash on qutting with pitch recog window open. 2008-05-21 exportlilypond.c, include/denemo_types.h, staffpropdialog.c, import/exportxml.c fix context stuff audiocapture.c incorporate portaudio V19 code. 2008-05-17 commandfuncs.c,h keyresponses.c update changecount after sharpening or flattening. 2008-05-17 exportlilypond.c fix fake chord output - it does need modularizing, but what was there didn't work properly. 2008-05-17 view.c, include/denemo_types.h, import/exportxml.c, exportlilypond.c include a flag with scoreblocks to say whether they should be used by default. scoreops.c add URL to denemo tagline exportlilypond.c re-arrange LilyPond output so that custom scoreblocks are much more powerful exportlilypond.c cope with copying hidden scoreblocks, remove midi instrument 2008-05-15 exportlilypond.c default to "Generated by Denemo" tagline with version number. 2008-05-14 exportlilypond.c improve colours in LilyPond text window, make text & labels monospaced. 2008-05-13 commandfuncs.c,h selectops.c keyresponses.c always insert any new measure needed into all staffs when entering music. 2008-05-12 utils.c corrected mistake in string_dialog_entry that could have caused problems with translation 2008-05-12 denemo_types.h, view.c staffops.c staffpropdialog.c exportlilypond.c import/exportxml.c: make the prologs for lyrics, figured basses and fakechords editable in LilyPond view. 2008-05-11 view.c improve the status bar information 2008-05-10 standard.accels replace KP_0... with plain digits 2008-05-10 standard.accels replace shift+plus with plus view.c, kbd-custom.c,h keyresponses.h handle modifiers correctly (from jrr) 2008-05-08 in non-printing rests mode, take a rest input as a non-printing rest. 2008-05-07 utils.c fix spurious free 2008-05-06 keymaps/denemo.keymaprc src/keyresponses.c warn that the code is being phased out. 2008-05-06 util.c util.h created new function string_dialog_entry for text entry dialog box. lilydirectives.c, figure.c, fakechord.c changed code to use new function. 2008-05-04 exportlilypond.c Fix for lilypond window refresh in presence of lyrics, chord symbols or figures. 2008-05-03 scoreprops.c: fix return value of abandon fn. 2008-05-02 commandfuncs.c avoid coredump when multiple timesignatures (present in different voices) are deleted. denemoui.xml, commandfuncs.c,h split and join voices. gcs.c make the yellow colour less bright (so that it stands out better against the white background). commandfuncs.c fix non-printing rest mode to enter only rests. importxml.c remove the special treatment of empty measures - there seems to be no reason for this. exportlilypond.c, print.c capture error output from LilyPond and highlight text window to suit. exportlilypond.c,import/exportxml.c allow editing of prolog to each staff, store and retrieve staff prolog. exportlilypond.c allow deletion of custom blocks/inserts by deleting content, whitespace ignored. enable finding the current object in the LilyText window. include/denemo/denemo_types.h create a field for custom prologs for staffs staffpropdialog.c warn if custom prolog when changing properties of a staff staffops.c,h initialize the staff prolog. Warn of custom scoreblocks if interactive. Set changecount on deleting. commandfuncs.c deletestaff takes boolean to determine whether it is interactive or not. importxml.c scoreops.c, staffpropdialog.c change to passing DenemoGUI for newstaff, deletestaff file.c frog* use gui not si. pitchentry.c avoid compiler warning. scoreops.c fix wrong call to confirm(), potential fatal error. frog* keep up-to-date; 2008-04-20 staffpropdialog.c register changes in status scorewizard.c avoid overflow of gchar*, reduce debug printout, register change count changes prefops.c reduce debug printout scorewizard.c avoid coredup adding no selection in instrument page. 2008-04-20 include/denemo/denemo_types.h DenemoStaff gets a custom_prolog field, replacing lilybefore/after fields. import/exportxml.c,exportlilypond.c allow editing of lilydirectives on notes in chords from the LilyPond text, allow custom staff prologs. staffpropdialog.c allow edit of custom_prolog, remove lilybefore/after 2008-04-19 import/exportxml.c, lilydirectives.c allow lilydirectives on notes in chords chordops.c,h return note if one is added by addtone function. exportlilypond.c output such lilydirectives. Highlight insertion points in music. Re-arrange position of rest between notes and code with a view to making the notes of a chord editable. 2008-04-16 barline.c, importmidid.c,h, keyresponses.c, commandfuncs.c,h, keysigdialog.c,h. lilydirectives.c, scorewizard.c selectops.c, clefdialog.c, exportlilypond.c denemo_api.h pass DenemoGUI not DenemoScore timedialog.c keysigdialog.c timedialog.c update score_status (this also fixes a bug in the callback to insert_barline) commandfuncs.c update score status on object insert. 2008-04-15 Major update to allow LilyPond editing within Denemo. include/denemo_types.h delete obsolete fields, create/re-use the textwindow, buffer fields from the last LilyPond editing work. Use a count of edits (gui->changecount) instead of boolean haschanged, introduce field lilysync for synchronizing LilyPond text with score. exportlilypond.c: output to a textbuffer - allow insertion of LilyPond between notes and custom scoreblocks. export/importxml.c write out/read in the custom score blocks view.c create a textwindow for LilyPond output denemoui.xml create menu items for LilyPond output. scorewizard.c remove spurious haschanged setting, make functions static denemo_types.h README.lilypond - rewrite. doc/templates/general/Piano.denemo doc/templates/jazz/jazzcombo-with-piano to illustrate some features of the new facilities. denemomanual.xml, denemo-manual.html updated with a section on LilyPond editing articulations.c name change for clarity. 2008-04-15 denemo_types.h added gboolean midi_name_override, guint8 midi_prognum, midi_channel for manuall program number / channel selection in midi. exportmidi.c added switch to allow manually setting prognum + channel if midi_name_override is set to TRUE staffpropdialog.c added entry for program number and channel for midi instruments importxml.c/exportxml.c added loading/saving of properties midi_name_override, midi_prognum, midi_channel 2008-04-08 contexts.c,h commandfuncs.c pitchentry.c fix clef change context pitchentry.c Add Bradley Lehman's temperament. 2008-03-28 configure.in now has version set to .7.8 help.c now mentions Richard Shann and Jeremiah Benham as authors 2008-03-27 created gotoend.png, gotobegin.png and stopmidi.png in doc/images 2008-03-27 doc/denemo-manual.html pointed images references to the images folder. doc/Makefile.am now installs .png in doc folder into the users doc/images folder 2008-03-27 commandfuncs.c avoid NULL curmudelaobj 2008-03-27 doc/denemomanual.xml doc/images/Makesfile.am 2008-03-27 doc/denemomanual.xml denemo-manual.html denemomain.png update for release 2008-03-22 print.c avoid error messages about child return value, 2008-03-12 exportxml.c importxml.c haslyrics,hasfakechords stored/retrieved fakechord.c denemo_types.h flag staffs with chordsymbols exportlilypond.c edit lilypond keyresponses.c old textview code removed timesdialog.c increase range of timesignatures allowed lyric.c move onto next note after entering lyric view.c fix memory leak on deleting/re-using a gui 2008-03-09 mousing.c improve placing of cursor on mouse-click (with voices). 2008-03-08 view.c avoid no-object crash staffops.c set currents after voice creation 2008-03-08 file.c Fix width to work with on New 2008-03-07 main.c More gracious treatment of absence of svg pixbuf loader. 2008-03-06 main.c restore the svg file loads. 2008-03-04 denemo_types.h corrected the comments. exportlilypond.c do not assume duration unchanged after lilypond directive 2008-03-01 view.c do not list non-existent filenames in open recent 2008-03-01 exportxml.c do not warn about empty measures on autosave. 2008-02-29 figure.c allow '*' as synonym for space and knock on effects exportlilypond.c make lilypond figures output nicer. 2008-02-28 exportxml.c avoid repeated warnings about empty measures. 2008-02-28 file.c set gui->movements even for one movement. print.c correct the check for multiple movements accordingly. scorewizard.c stop abuse of GStrings exportxml.c warn of empty measures on save denemo.h improve debugging code. 2008-02-25 exportmidi.c,h return duration of midi, cut down verbosity. playback.c move cursor on during play, unless a specific range of measures was specified. playbackprops.c, playback.c Except where a range of measures is specified play from cursor rather than measure 1. Fix typo in name. bookmarks.c avoid gtk critical error on goto with no bookmarks. Wrap bookmark navigation with signal for wrap. Add a delete bookmarks function. 2008-02-24 file.c scoreops.c fix coredump on New, New after multiple movement score. Remove memory leak. 2008-02-23 denemo_types.h add currentbookmark field bookmarks.c view.c denemoui.xml add next/prev bookmark move bookmarks menu to objects menu 2008-02-23 bookmarks.c fix truncation of string: this code needs re-visiting! 2008-02-23 exportlilypond.c quieten scoreops.c remove reminder dialog - not always correct anyway. importxml.c, calculatepositions.c debug output removed view.c do not switch keymaprc file calcuatepositions.c quieten 2008-02-22 commandfuncs.c,h view.c, denemoui.xml introduce swap movements function. file.c comment, and tidy. utils.c update status bar on new movements, change of movement, file load etc. 2008-02-21 view.c start Note entry with pitch recognition. Create toggle for rhythm mode. denemoui.xml Create toggle for rhythm mode 2008-02-21 exportmidi.c Fix for bad midi output of music with trills on notes. 2008-02-19 exportlilypond.c allow four figures beneath a single note in a figured bass 2008-02-18 denemo_types.h, view.c denemoui.xml introduce rhythm entry mode commandfuncs.c Sound bell in rhythm mode when on the last note of a measure. importxml.c do not overwrite score header when adding movements. 2008-02-13 importxml.c reverted keysig changes 2008-02-13 exportlilypond.c Let the user override barlines with lilydirectives. If you place a lilydirective at the end of a measure then you get to choose the barline that will be emitted. 2008-02-13 main.c do not create standard.accels in local directory unless user requests it. 2008-02-12 standard.accels undefine accelerators for stock items which become multiply defined. 2008-02-12 contexts.c revert initkeyaccs use to re-instate correct keysig handling denemoui.xml allow quick accel edits, allow nextrhythm at correct places. utils.c,h standardize the confirm() function as utility file.c mousing.c tidy up utitlity functions to proper places print.c use new utility function to confirm main.c load extra accels (which permit Tab etc to be set as accelerators) view.c remove underscores in menu labels as they conflict with quick accelerator settings; apply stock item icons to all menu items of same class. Allow quick accels, storing unsettable ones in extra.accels. standard.accels avoid duplicate accelerators caused by multiple use of the same stock items in menus. denemo_types.h add accelator status field to global Denemo view.c remove duplicate code in close functions. utils.c,h file.c move the utility confirm() to the right place. view.c: remove the underscores as they are inflexible and prevent quick setting of accelerators. lylexer.l,c avoid index() function on windows builds (note: this code is untested, a lot needs updating before it can be, the fix is just to get the code to build). 2008-02-10 view.c, prefops.c,h window size 2008-02-06 mousing.c print out subtitle in preference to piece field on status. dememoui.xml fill out some menu entries. lyparser.y,c avoid exiting on unreadable files file.c Drop references to mudela as this is ancient history. 2008-02-05 utils.c,h view.c remove the unused progress bar 2008-02-05 denemomanual.xml, denemo-manual.html, denemomain.png update 2008-02-05 denemomanual.xml, denemo-manual.html some documentation for the movements. 2008-02-05 denemomanual.xml, denemo-manual.html minor manual update, reflecting experience with pitch entry. 2008-02-04 figure.c allow some shortcuts, and prevent hanging on attaching figures at the end of a score that finishes in a non-chord. 2008-02-04 file.c, view.c prefops.c Fix the openrecent properly - the history no longer shares pointers with other things. 2008-02-03 view.c check for discard of current score on openrecent file.c view.c,h make history work for multiple windows, and remove the spurious g_free 2008-02-02 denemo_types.h, export/importxml.c move sconfig up to DenemoGUI and rename it lilycontrol - it governs the lilypond output across all movements. exportlilypond.c output lilypond directive for all music scorewizard.c,h new field for lily directive for all movements of a musical score, lyparser.y,c, scoreops.c, scoreprops.c knock on changes. file.c issue warning on failed load, tidy up. view.c file.c provide warnings on load failures. Initialize the lilycontrol fields. 2008-02-01 view.c turn on the entry toolbar by default under windows. 2008-01-31 file.c set filename on save. main.c tidy. commandfuncs.c check that autosave has not fired on a dead gui and turn it off if it has. With this code it should be possible to allow the multiple timers, provided the autosave files are different. 2008-01-31 A major clean up, prompted by something as simple as outputting page breaks between movements. denemo_types.h rationalize, adding fields for putting LilyPond directives in the header blocks of movements and markup between movements. Many consequent changes: file.c multiple timeouts were being set for autosave which weren't killed when the gui was deleted, which probably accounts for Denemo spontaneously exiting on occaisions. runsilent.c exportlilypond.h headerdialog.c scorewizard.h exportabc.h figure.c a lot of dead code removed. scoreops.h exportabc.c mousing.c scorewizard.c exportlilypond.c dead code removed, and output of the new fields to control pagination of movements. also don't write out a midi block, Denemo generates better midi itself. exportxml.c save extra fields importxml.c restore extra fields. lyparser.c lyparser.h view.h generate_source.c set title bar on changes utils.c The haschanged has been thoroughly overhauled, with a single function here managing things. utils.h selectops.c lyric.c commandfuncs.c view.c tidy up the closing of windows scoreops.c set movement properties - this code is much simpler and easier to extend than the table based code (still used for the score properties dialog. A clean up is needed). scoreprops.c keysigdialog.c coredump fixed. entries.h set title bar on changes callbacks.h set title bar on changes 2008-01-26 print.c exportlilypond.c,h, commandfuncs.c, exportpdf.c, file.c main.c runsilent.c support printing parts from multiple movements. view.c commandfuncs.c denemoui.xml add a swap staffs function 2008-01-24 denemo_types.h Introduce a single toplevel object Denemo that holds the DenemoPrefs and a list of DenemoGUI (replaces the global called displays). The .c files that change to suit are: articulations.c playback.c kbd-custom.c exportpdf.c file.c help.c kbd-interface.c keyresponses.c view.c playbackprops.c prefops.h csoundplayback.c print.c main.c prefdialog.c prefops.c file.c bug in autosave if(gui->prefs) was always true calculatepositions.c replace the wrong & ambiguous diagnostic 2008-01-24 improvements to Denemo.ttf 2008-01-24 lilydirectives.c Set up default response. Note this function should be written in the conventional fashion. 2008-01-24 fakechord.c bad loop and memory leak. 2008-01-23 denemo_types.h, commandfuncs.c, view.c, keyresponses.c move rhythm patterns to cope with movement changes. 2008-01-22 Major update: denemo_types.h Removed duplicate field (config, sconfig) and made it a structure, not a pointer (it is a mistake to allocate things dynamically for no good reason!) staffops.c, commandfuncs.c Finally cleaned up the mess that was deleting staffs; amongst many horrors, staffs were not actually being freed because a for loop had the wrong termination condition... scoreops.c insert new movements and delete them file.c, importxml.c add staffs from a file, add movements from a file. Move to version 2 with backward compatibility. exportxml.c move to version 2, supporting multiple movements. fakechord.c - re-wrote separate_fakechord_elements() as the compiler complained about one error (sizeof(gchar*) was used where strlen() was needed, and the indentation indicated {} were missing - can someone who uses this check that this is the desired functionality please. view.c, selectops.c, lyric.c, importmidi.c, file.c fakechord.c, commandfuncs.c haschanged moved to gui-wide basis. gcs.c, draw.c Use gray instead of bright yellow for non-current staffs, the yellow was so bright as to be nearly invisible, also grayed out is the convention for insensitive items. denemo.h file.c add a ImportType field to file open commands for opening files to add to the current file. view.c, denemoui.xml, file.c Install AddStaffs and AddMovements for loading extra staffs/movements from a file importxml.c : fix the coredump on reloading with change of keysig in first measure staffops.c, commandfuncs.c,h, view.c denemoui.xml, generate_source.c, entries.h, callbacks.h add DeleteMeasureAllStaffs lyparser.y,c remove unused include staffops.c fix cursor position after insert of staff before bug. commandfuncs.c fix deletion of measures when appending to a short staff measureops.c fix deletion of first measure of short staff when deleting measures in all staffs from a longer staff. 2008-01-05 print.c reset err to NULL after error. 2008-01-02 print.c,h warn about printing. Tidy code. view.c add icon to print preview denemoui.xml add print preview to toolbar. 2007-12-31 print.c added locatedotdenemo() to the working directory of g_spawn_*ync 2007-12-30 fix printing so that viewer opens .pdf file 2007-12-30 prefops.c prefops.h main.c fix case where no .denemo exists, hide articulation palette by default keymaps/Makefile.am export correct files standard.accels fill out values. 2007-12-28 exportlilypond.c, help.c switch from sourceforge 2007-12-27 print.c commented out renaming of temporary pdf 2007-12-26 doc/Makefile.am Added denemo-manual.html to the installed files list 2007-12-22 doc/templates/jazz/Makefile.am Changed directive to include dist_ doc/templates/brass/Makefile.am Changed directive to include dist_ doc/templates/mixed/Makefile.am Changed directive to include dist_ doc/templates/strings/Makefile.am Changed directive to include dist_ doc/Makefile.am Added transformations and images subdirectories po/POTFILES.in removed exportmudela.c reference and added exportlilypond.c src/Makefile.am Added keysigdialog.h and callbacks.h to SOURCES list 2007-12-21 denemoui.xml add rest entry to Notes/Rest menu 2007-12-21 src/generate_source.c src/entries.h src/view.c src/denemoui.xml add tooltips, add VoiceUp/Down alias for StaffUp/Down with different tooltip. Rename Staff menu to Staffs/Voices. 2007-12-20 missed out denemoui.xml and playback.h from earlier check-ins. 2007-12-20 importmidi.c, importmidi.h added support for importing chords or parallel harmonies 2007-12-20 missed out denemoui.xml and playback.h from earlier check-ins. 2007-12-20 view.c denemoui.xml added PrintPreview button, an alias of Print. Eventually Print should actually contact a printer... denemomanual.xml denemo-manual.html updated manual. 2007-12-18 view.c,h keyresponses.c commandfuncs.c generate_source.c, entries.h, callbacks.h implement singleton rhythm highlighting. 2007-12-18 pitchentry.c WerckmeisterIV change frequencies. 2007-12-17 importmidi.c, importmidi.h removed globals, broke up into smaller functions. Glist stored note list. Changed int to gint. Preperation for further functionalility 2007-12-17 denemoui.xml delete obolete menu item - this fixes the markup problem with Note/rest entry toolbar. 2007-12-16 staffops.c give poly voice unique name exportlilypond.c put voices on one staff draw.c draw voices on one staff, in presence of extra space. denemoui.xml allow access to AddVoice - just for testing, not for release? 2007-12-15 keysigdialog.c fix apply to all staves for initial keysig print.c fix initialization of pid view.c lilypondversion change missed, stop button missed in earlier checkins. 2007-12-15 exportlilypond.c:update midi transposition (for b-flat only at present), it causes errors on modern lilypond denemo.h introduce lilypond version (set to 2.8.7 the current value for debian release - we could set it a bit older just to be on the safe side?) print.c make the display async, so that denemo does not hang. 2007-12-15 exportlilypond.c: better defaults for figured bass. 2007-12-14 src/playback.c src/view.c src/denemoui.xml Implement a stop for midi playback 2007-12-14 src/playback.c play measures from the selection if there is one. 2007-12-14 doc/templates/strings/stringqtet.denemo corrected cello clef. 2007-12-14 print.c,h Better diagnostics - the g_warning was making a wrong pointer access. rename functions to agree with (one of) the callback name conventions exportlilypond.c,h export one staff view.c allow print one part denemoui.xml menu item for print part 2007-12-13 view.c, pitchentry.c improve defaults, (values based on experience with the system). 2007-12-13 commandfuncs.c remove setting of haschanged in displayhelper() selectops.c,h add setting of haschanged to update_undo_info, localize functions that aren't used outside the file. Coredump: If you do New, insert note, save, undo, undo then denemo coredumps. This was an unitialized pointer bug in selectops.c, before the haschanged fix it was reached by other routes. denemoui.xml remove template from toolbar 2007-12-12 view.c remove repeated code for file_open, introduced template save and local template load file.c implemented load/save templates local and system (reverts yesterday's ci - we were inadvertently working in parallel) fix file_open_template_wrapper to check for has changed, rename these functions to _with_check introduce a parameter to indicate whether a template is being loaded/saved Deleted dead code. 2007-12-11 src/file.c changed the opening of template directory to Template directory. Makefile.am makes Template direcory installable configure.in no references makefiles in Template directories that will install templates 2007-12-10 import/exportxml.c save/load the staff attributes space_above, space_below, hasfigures 2007-12-10 Save Parts fails if pathname contains '.' exportlilypond.c Make sure the extension is being removed by searching for '.' from the end of filename. fix figured bass output in parts. view.c update tooltip. importxml.c remove debug printout 2007-12-09 denemo_types.h, exportlilypond.c figure.c Generate figures only for the staff that has them. + improved comments. 2007-12-08 Bug: if you clone a note with an ornament then further ornaments added to the original appear on cloned note as well. Much more dangerous freeing the note should result in double free error, (but doesn't at present because the memory is being leaked). chordops.c freechord() memory leaks fixed. chordops.c eliminate dangling pointers in cloned chord. Note the ornaments, dynamics etc *could* be cloned, but they would have to be deep copies. objops.c cloned objects must not share pointers. Note: types LYRIC, FIGURE, FAKECHORD are not covered - they are I suspect never generated. 2007-12-07 Added the source generator. The tooltips can be added to the array of action specifiers and the file compiled and run by hand to generate the entries.h and callbacks.h files. This will mean we can upgrade the generated functions without losing work on tooltips. 2007-12-07 src/Makefile.am added back the lily files 2007-12-07 mousing.c Make the status bar more informative: information on what is currently selected. 2007-12-07 utils.c warningdialog was shown as error icon + omitted lilydirective patch. 2007-12-07 draw.c, lilydirectives.c exportlilypond.c, denemo_types.h, import/exportxml.c staffpropdialog.c drawlilydir.c commandfuncs.c re-installed lilydirective code, adding import/export to xml and insertion of lilypond directives before staffs removed dead code 2007-12-07 * draw.c fixed the misdrawing of barlines when extra space. Restrict the auto space above/below to sane levels. * draw.c fix for recursive dialog popup on deleting begin_slur 2007-11-27 * EDIT mode: The new edit the octave of the current note in CVS is not working as expected - instead it edits to the octave of the cursor. This is now fixed in keyresponses.c and chordops.c * EDIT mode: changing notes in chords now works for multi-note chords - commandfuncs.c pitchentry.c name changes to menu system. Remove unused function. keyresponses.c prevent editing notes in presence of overlays - this is just octave shifting, typing in notes at keyboard will still lead to confusing result (because the edits are discarded on further pitch entry). fonts/Denemo.ttf improved font Selecting music was not obvious, I fixed this as follows: mousing.c, view.c make mouse clicks cause selection, press starts, release ends the selection. (There is no drag implemented here, so no indicator that you are extending the selection until you release the mouse button). You have to be actually on the note when you release. view.c make Entry toolbar buttons use the Denemo.ttf font instead of icons - this means we can drop those files from the distribution. denemoui.xml new notes menu and code to use music symbols as labels draw.c,mousing.c, utils.h define LYRICS_HEIGHT, denemo_types.h add haslyrics field to staff, so as to know whether to leave space when mousing. Height adjusts to music - this needs to be made optional, and provided with guards against absurd values. staffpropdialog.c space_above,below cannot be re-set to 0 (in release and CVS). 2007-11-26 * added po/ja.po japanese translation 2007-11-11 * print.c commented out romove function which removed the file that was to be sent to the pdf reader. 2007-11-06 * print.c fixed warning printing wrong names * scorewizard.c/h modified headersetup function to allow external usage * scoreprops.c uses headersetup for header info 2007-10-29 * Richards patch for menu tidy up Gtk accel with tooltips affecting the following files: src/denemoui.xml src/main.c src/staffpropdialog.c src/view.c 2007-10-24 * src/commandfuncs.c added Richards patch for fix for staff deletion bug * src/mousing.c added Richards patch for mouse selection being off * src/staffops.c added Richards patch fix for space above staff causing selections to be off 2007-10-12 * importxml.c removed duplicate #include headers * importxml.c removed some code that was duplicated 2007-10-11 * added directory fonts to contain Denemo.ttf * created fonts/Makefile.am for installation in $(datadir)/fonts/truetype/denemo * configure.in added font directory * Makefile.am to include fonts as a subdirectory 2007-10-09 * view.c fix for closing window when score has or has not changed and the no option is selected in the dialog. 2007-10-09 * denemo_types.h, drawcursor.c, keyresponses.c view.c improve names of mode enum, switch to using non-zero bitfields * keyresponses.c,h fix the toggle rest and blank functions calling convention. This was a major bug, lurking beneath the surface, and probably the reason the hard-wired keybindings to the menu items were left in place, since when invoked via a keypress they coredumped, using the menu accellerator keypress avoided the function. * scoreops.c, the failure to initialize the time1,2 fields only worked because of the compiler optimizer hiding a division by zero bug at startup! * view.c improve status bar handling. 2007-09-26 * pitchentry.c applied patch for improving the behaviour when deleting overlaid pitches 2007-09-24 * denemo_types.h, introduce extra rhythmic submode (OVERLAY) for entering pure rhyth patterns without pitch and overlaying with pitches. * chordops.c,h New function modify_note() allows modifying the pitch of a note without otherwise altering it. (The previous attempt at this is reverted in new_note as that was not doing the whole job there). * commandfuncs.c,h casts to eliminate compile time warnings. Allow direct overlay of pitch from keyboard in OVERLAY mode. More fixes to deletestaff (previous version did not coredump but did not always deletestaff). * contexts.c improved comment * denemoui.xml move pitchrecognition onto rhytym/overlay toolbar. * figure.c Fix that failed to be included from last patch I presume * file.c removed commented code - this wasn't present in my version so I think it had got in by meld error * keyresponses.c improve code structure with function make_singleton_rhythm to make a rhythm containing just one duration * pitchentry.c Allow starting pitch overlay at any note in measure (clears old overlays if needed). Return focus to main window after changes to pitchrecognition window (so that further keypresses behave as expected without having to re-select the score area). Use the new modify_note function for overlay. Ensure cursor moves on when rests occur at end of measure. Tidying code. * staffops.c,h more fixes to deletestaff - the enum has been extended to cover a magic number (9) which had been coded in. This code needs rewriting to give these enum value less common names, as they can easily clash with other code as it is (eg prefix each enum value with STAFFOP_) * view.c,h Support for direct entry of rhythm when Overlay selected by clicking on the pattern button internally this is called "pitchless" entry. The new function make_singleton_rhythm defined. Tooltips added to various buttons. Quarter note set as default rhythm for newview. Code tidying, fix for typo (eight note for eighth note). 2007-09-19 * Applied Richard Shann's patch for the following changes: * staffops.c to fix staff deletion * figure.c applied patch to allow empty figures * file.c Added patch for denemo to remember last path saved. * scorewizard.c added patch for scorewizard instrument deletion Gtk-CRITICAL 2007-09-13 * include/denemo/denemo.h dormant code for testing for bad frees. * include/denemo/denemo_api.h change formal parameter name (cosmetic) * include/denemo/denemo_objects.h addition of tone structure type. changed the name of the fields tones, numtones in the chord structure to notes, numnotes as notes is a list of note* structures and I needed a name for the tone structure. * + comments * audiocapture.c header file from standard place - looks fishy? * changenotehead.c, drawnotes.c, export*.c, importxml.c, lyparserfuncs.c, measureops.c, midi.c change of field names * chordops.c,h change of field names, plus attempt to improve re-usability of modifying note code, (this has not really succeeded, modify_note is only changing some of the things that need to be changed to really modify a note) * commandfuncs.c,h Improvements to highlighting rhythm pattern buttons. Inserting a rhythm pattern into the measure when entering just the rhythm of a piece (insert_rhythm_pattern). Making delete object act on tone store if active. * draw.c When an tone store (aka overlay) is present, color notes blue. * kbd_custom.c added insert_rhythm function to enter whole rhythms at a stroke. * keyresponses.c improve highlighting of rhythm pattern buttons. Tidying code. * pitchentry.c Implementation of tone store and application of tone store to overlay note rhythms with tones gotten from pitch recognition. * pitchentry.h export delete_tone, which deletes the overlaid tone and hence reassigns the tones in the measure. * utils.c field name change, and music_font markup function. * view.c,h Use of music font for rhythm pattern buttons. Change name of RhythmKeymaprc to Rhythm.keymaprc to allow .keymaprc list code to work. 2007-09-08 * added missing RhythmKeymaprc 2007-08-23 * Applied Richard Shann's patch for pitch recognition input * Modified configure.in to sort libaubio and portaudio dependencies 2007-08-14 * fixed bug in view.c with closing the application via the gtk interface * Added more doxygen style comments to denemo_types.h 2007-08-04 * edited playbackprops.c to allow enter key to "ok" the dialog after typing in a new tempo * edited prefops.c to have the default version of lily to be 2.10 * fixed wrong conditional in prefops.c in relatation to midiplayer * wrote doxygen style comments to DenemoPrefs in denemo_types.h 2007-08-03 * applied patch from Richard Shann for a new input mode based of precomposed rhythmic motives. * patch modifies denemo_types.h, commandfuncs.c, commandfuncs.h, denemoui.xml, draw.c, exportlilypond.c, kbd-custom.c, keyresponses.c 2007-08-01 * Placed doxygen style documentation in denemo_types.h and denemo_objects.h DenemoScore->readonly is now gboolean instead of int. I edited file.c to use TRUE/FALSE instead of int. 2007-07-29 * fixed bug in function dnm_setinitialkeysig in objops.c 2007-06-22 * added dnm_addtone and dnm_newchord to denemo_api.h 2007-06-20 * defined dnm_setinitialkeysig in objops.h * importmidi.c,importxml.c,context.c, and lyparserfuncs.c now uses api defined dnm_setinitialkeysig * commented out object.h in importmidi.c * created api function dnm_addmeasures * in the files (importxml.c, selectops.c,commandfuncs.c,easylyparser.c, importmidi.c), I changed from addmeasures to dnm_addmeasures 2007-02-25 * exportlilypond.c renamed exportmudela to exportlilypond * exportlilypond.h renamed exportmudela to exportlilypond * file.c renamed exportmudela to exportlilypond * commandfuncs.c renamed exportmudela to exportlilypond * exportpdf.c renamed exportmudela to exportlilypond * main.c renamed exportmudela to exportlilypond * print.c renamed exportmudela to exportlilypond * runsilent.c renamed exportmudela to exportlilypond 2007-02-23 * renamed exportmudela.c to exportlilypond.c * renamed exportmudela.h to exportlilypond.h * otherfiles modified to reflect this 2007-02-05 * external.c: fix exception when .denemo does not exist * main.c: better messages when .denemo does not exist 2007-01-31 * denemo_types.h: DenemoObjType PARTIAL added * frogparser.y lyparser.y: PARTIAL renamed to avoid conflict * calculatepositions.c: fix floating point exception * scoreprops.c: allow edit of header properties for lily files * exportmudela.c: allow export of lilyfiles, remove commented out code * exportmudela.c: output \partial, \lyricsto in staff block * exportmudela.c: do not output \skip in lyrics * file.c: allow I/O of mudela files * lylexer.l lyparserfuncs.c lyparserfuncs.h lyparser.y: fixes to the parsing of mudela files * Makefile.am: add lylexer.l, lyparser.y to build 2007-01-23 * configure.in: indentation * configure.in: added HAVE_FILE_LOCKS macro * csoundplayback.c: check if HAVE_FILE_LOCKS macro is defined * external.c: check if HAVE_FILE_LOCKS macro is defined * playback.c: check if HAVE_FILE_LOCKS macro is defined * main.c: corrected print calls * main.c: code reorganization and comments * POTFILES.in: updated with the files containing * configure.in: commented ALL_LINGUAS * added po/LINGUAS * created po/it.po 2007-01-22 * file.c: removing dependencies to fnmatch.h * main.h: check if SIGCHLD is defined * exportmudela.c: changing from index to strchr * configure.in: added the check for SIGCHLD presence * configure.in: solved a bug related to --enable-OPTIONS * doc/Makefile.am: renamed docdir to docsdir to prevent a warning for a name clash 2007-01-20 * selectops.c (pastefrombuffer): changed to use object_insert * selectops.c (pastefrombuffer): Modified paste function to only add measures to the current staff if only one staff in the buffer. * commandfuncs.c: made beamandstemdirhelper non-static * configure.in: reordered call to AC_CANONICAL_SYSTEM. Fixed bug [231] 2007-01-19 * applied my patch again (to correct indentation and formatting) * main.c: adding debug_handler function * main.c: setting debug_handler as the handler for debug messages * main.c: adjusting the indentation for help messages 2007-01-17 * Applied Simone Crestani's latest patch 2007-01-14 * wrap some debugging statements in #ifdef's 2007-01-13 * external.c: using GLib g_strfreev() * external.c: using (un)lockfile() on pidfiles in ext_init() and ext_quit() to force queuing fprintf() in the case of... * external.c: invalidate build_argv() and free_argv() * external.c: removed truncate(pidfilename,2) on pidfiles to try to fix (badly) an issue on Darwin ( "8 Gb pid file !" bug report by Yves de Champlain on the denemo-users ML) FIXME: we should truncate. * view.c: moved ext_quit() from closeit() to closewrapper() 2007-01-12 * fixed possible buffer overflow in importmidi.c in functions dotrackname and doinstrname 2007-01-10 * Protect against empty fields in denemorc files * Output \! instead of \rc and \rced in mudela files for recent versions of lilypond 2007-01-09 * changed typo for non-windows os's in util.c preventing compilation PKGDATADIR is what it is now in function get_data_dir 2007-01-05 * created to more api functions dnm_setinitialclef, dnm_setinitialtimesig * Applied Simone Crestani's patch for the Win32 version * Changes to free_score to fix some memory leaks 2007-01-04 * added check to see if the score "haschanged" before the scorewizard deletes the current score * commented out line in function newstaff staffops.c that makes haschanged = TRUE when starting denemo. 2007-01-02 * figure.c and fakechord.c uses warningdialog from util.h now 2007-01-02 * Applied Simone Crestani's patch to fix memory leak in drawnotes.c 2007-01-1 * Fix issue that could cause hairpin code to crash * Change saveas to not give a warning if the name in the name field has no extension and that file already exists. * In saveas, if the name is given with a valid Denemo file extension save as that type of file. 2006-12-29 * Fixed minor issue with transpostition when changing it back to 0. 2006-12-28 * Resolved minor issue with undo/redo 2006-12-27 * changed version to 0.7.7 2006-12-27 * Modified src/Makefile.am to include keysigdialog.h * Prepared for releasing 0.7.6 2006-12-27 * fixed BUG 226 added check on number of measures in the score. 2006-12-26 * Fixed slur entry issue. 2006-12-22 * figure bass/fakechords insertion on NULL currentobjects no longer crashed denemo. * I added a check for it. If the currentobject is NULL than a popup warning ensues. 2006-12-21 * Started to rename api function to dnm_functionname * Fixed crescendo and diminuendos issue. 2006-12-19 * edited src/file.c src/prefdialog.c src/prefops.c include/denemo/denemo.h to add support for denemopath denemo path is used for having a default location for saving and loading denemo files. If denemo path is not defined in the preferences it defaults to the current working directory. 2006-12-18 * file.c now has saveas dialog filled in with the title if one exists. 2006-12-16 * switched around pianolh and pianorh in scorewizard * fixed crash caused hitting a remove button when instrument is not selected in scorewizard 2006-12-15 * added check for non-existing measure click in mousing.c * this fixes bug 0000211 2006-12-14 * objops.c fix for bug 0000225 added an if statement check if there is actually an object there to delete. 2006-11-15 * Applied Menno's toolbar focus patch 2006-11-11 * Fixed double bar issues for individual staffs * Added configure option to build documentation 2006-11-10 * small bugfix in scorewizard staff creation 2006-11-10 * Modified export_lilypond parts to use ScoreName_Part.ly as filename * Added user preference to automatically save parts. 2006-11-10 * scorewizard now creates a bass and treble staff when piano type staff is added. 2006-11-06 * Fixed bug 203 PianoContext not effecting Lilypond output 2006-11-05 * Fixed BUG 220 toolbar focus issue * Work on separating barline drawing to individual staffs 2006-10-21 * edited draw.c so fakechords now appear above the staff 2006-10-20 * edited src/drawfakechord.c src/exportmudela.c src/fakechord.c src/fakechord.h src/importxml.c to add support for fakechord extensions like this: c:9 = c9, c:13 = c13, bes:9 = Bb9 2006-10-18 * exportmudela.c now encapsulates fakechords in \chordmode{ } 2006-10-17 * fixed loading and saving of files with figured bass and fakechords * to do this I edited importxml.c to not cast the type figure as (GString *) * exportxml.c figure and fakechord syntax is simpler when calling xmlNewChild * exportmudela.c now begins to export fakechords 2006-10-13 * created drawfakechord.c * edited draw.c to draw fakechords * edited drawingprims.h to reference draw_fakechord * edited exportmudela.c to export fakechords by adding output_fakechord function * edited exportxml.c to allow saving of files with fakechords * edited importxml.c added function parseFakechord to import denemo files with fakechords * fixed bug causing denemo to crash when openfile that has figured bass 2006-10-12 * added FAKECHORD as a type to DenemoObjType * created the files fakechord.h fakechord.c * edit view.c and denemoui.xml to add edit chords to the menu * added CHORDSTAFF to staffops.h list of newstaffcallbackaction * coppied dnm_newstafffigured to create dnm_newstaffchords that will function in a similar fashion as dnm_newstafffigured * edited src/Makefile.am to add the new files fakechord.h and fakechord.c 2006-10-02 * fixed a problem with scorewizard that occurred on ppc architecture 2006-09-29 * scorewizard apply button is hiden until the last page now 2006-09-28 * added keysignature settings in scorewizard * added a keysigdialog.h to allow sharing of some of keysigdialog.c functions * keysigdialong.c no longer uses global GLists 2006-09-27 * added timesig settings to scorewizard 2006-09-26 * inserted new page in scorewizard to allow entry for tempo 2006-09-24 * scorewizard refreshes without having to click on anything now 2006-09-12 * scorewizard now refreshes display once a note is entereed or staff is clicked 2006-08-23 * exportmudela.c, lyparser.y ...: fixed (?) mantis bug #212 * doc/Makefile.am: typo on target denemo-manual-chunk 2006-08-22 * removed all globals from scorewizard * eliminated scorewizard compilation warnings on 32 bit machines 2006-08-15 * scorewizard.c no loger uses gint page global. current page is now determined by gtk_notebook_get_current_page * gtk_notebook_get_n_pages() is now used so that pages can be dynamically added to the scorewizard and the next/back buttons will behave accordingly. 2006-08-14 * external.c: fixed GError bug in spawn_external(): avoid crash on error * alsaseq.c: fixed nano bug, "instant" playback in progress (can chirp) 2006-08-09 * inserted missing } into draw.c that prevented compilation * removed some globals in scorewizard.c * migrated towards having wizarddata contain the other structures using wizarddata as the spine for the other structures. 2006-08-04 * Fixed issue with creating a staff when not first measure on screen. * Modified document Makefile.am to use $(XSLDIR) for the docbook xsl stylesheets 2006-08-01 * Started working on making staffs independent of each other. Beta at the moment. 2006-07-30 * csoundplayback.c: now works the same way as midi playback (singleton) 2006-07-29 * external.[ch]: cleaning. use of a common static ext_pidfiles[] 2006-07-23 * external.[ch]: better external players handling * main.c: use ext_init() (external.h) * view.c: use ext_quit() (external.h) * playback.c: multiple views support singleton external Midi playback * csoundplayback.c: use of external.h (.. no singleton support yet) 2006-07-19 * Fixed Bug 189 Multiple Staff Pasting * Fixed Bug 202 Add Voice does not work 2006-07-17 * Modified undo/redo code * Replaced outstanding mudelobject references to DenemoObject in frogparser.y * More work on undo/redo. Only using one structre for the information. 2006-07-15 * Revised change notehead dialogs * Refactored set_articluation to use addornament * Refactored tupletchangedialog 2006-07-13 * Fixed bug 195: open recent keeps several copies of same document 2006-07-15 * view.c: use now gtk_window_set_defaul_icon_from_file() with denemo.png, allow window managers to decorate iconified Denemo. 2006-07-14 * fixed crash on insert_dynamic() [dynamic.c:119] * added external.[ch]: functions for system commands, filenames... currently having dnm_new_temp_filename() and dnm_spawn_external() * rewriten [midi]playback() and csoundplayback() to use the above funcs. * fixed exportcsound() for non-english locales 2006-07-12 * Fixed Bug 196: Staff Properties number of lines does not work in lilyexport * Added lilyversion entry to the preferences filename * Added Bug 144 Functionality 2006-07-10 * Fixed typedef issue in midiseq.h * Modified addhistorymenuitem to display the short filename 2006-07-06 * Modified exportmudela so determinestaffcontext uses the enum names not the numeric representation 2006-07-08 * removed some redundant code in scorewizard * fixed problem with launching score wizard more than once in a single denemo session * Change in processstaffname.c to allow uppercase staffnames 2006-07-07 * fixed bug #188 * modified configure.in and main.c to conform a little more to GNU coding standards by changing to PKGDATADIR for data directory 2006-06-30 * Fixed bug 138 Pasting multiple bars * Fixed setmark issues * Added Denemo format export of the paper setup properties 2006-06-30 * fixed bug 192. midiplayback issues 2006-06-29 * implemented instrument transposition in exportmidi 2006-06-28 * corrected a few instruments transposition value in instruments.xml 2006-06-27 * fixed exportmidi.c type mismatch in mid_c_offset * fixed exportmudela type mismatch for mid_c_offset fixing bug 186 * scorewizard sets instrument tranposition in the staff properties * new instproperties structure in scorewizard.h for containing instrument specific info 2006-06-08 * Fixed save parts implementation. Beta at present 2006-06-07 * Fixed bug 185. Note palette display issues * Implemented save parts feature, buggy at the moment 2006-06-05 * Fixed Bug 184 Staff drawing issue 2006-06-01 * moved the scorewizard out of debug since it is going to be included in the .76 release 2006-06-01 * Fixed bug 148 and improved staff insertion method. * Refactored Lilypond Output 2006-05-29 * improvements to importmidi.c importmidi.h to allow sharing of functions like the midiinput plugin would call in the future. 2006-05-26 * Incremented Denemo version to 0.7.6 2006-05-20 * Refactored the addition of ornaments to a note. 2006-05-18 * moved input mode to GUI structure * fixed autosave bug 2006-05-18 * fixed issue with scorewizard causing denemo to crash when launched 2006-05-14 * Fixed cursor issue. 2006-05-12 * Moved GUI elements to DenemoGUI and renamed scoreinfo to DenemoScore * Altered all sources accordingly. 2006-04-24 * Added more comments to function definitions * Prepared removemeasures for single staff usage 2006-04-14 * File SaveAs memory leak fix * Keymap loading memory leak fix 2006-04-11 * back button now is shaded out on page 1 of scorewizard. * next button is shaded out in page 3 of scorewizard. 2006-04-10 * updates to scorewizard allowing the correct clef to be used for instrument selection * updates to ROADMAP 2006-04-09 * update INSTALL instructions for compiling CVS * scorewizard can now be launched multiple times per session * scorewizard no longer creates removed instruments 2006-04-08 * applied Francis Daly's memory leak patch 2006-04-07 * applied francis Daly's most recent keyboard patch 2006-04-06 * fixed remove instrument in scorewizard * added more to the TODO in scorewizard 2006-04-05 * Applied Francis Daly's importmidi patch * keybindings on back, next, cancel, apply in scorewizard 2006-03-29 * Applied Francis Daly's keyboard patches 2006-03-27 * Applied patch for keybinding loading from Francis Daly 2006-03-26 * changed kbd-custom.c as per Francis Daly's advice. 2006-03-24 * changed command line file opening to read/write instead of read only in main.c 2006-03-21 * small edits to ROADMAP * changes to denemoui.xml so that when debug is turned off close and quit are still available menu options. * fixed staff and measure playback in exportmidi.c and playbackprops.c 2006-03-20 * lyric,c no longer produces so many warnings when the insert lyric is used. 2006-03-20 * Fixed bug 166 default keymap not loading 2006-03-20 * improvements to exportpdf.c 2006-03-20 * freedesktop menu entry: pixmaps/ denemo.desktop and denemo.png (Yves Champlain) updated Makefile.am to enable installation (please test) * midiinput plugin: removed ALSA default build for midiinput plugin in Makefile.am and let --enable-alsa do the job. * moved setkey() into set_key() because setkey() is already defined in libc or libcrypt (depends on libc version). moved also settime() to set_time() and setclef() to set_clef(). 2006-03-19 * added midiseq.h, alsaseq.h alsaseq.c * began an implementation of a full midi sequencer. midiseq.h is not bound to ALSA. alsaseq.h is an alsa version. In the client code, you must only use midiseq.h and let the --enable-alsa do the job. 2006-03-18 * Added Enter keybinding to activate the file chooser dialogs 2006-03-18 * fixed lyric.c so that checkboxes line up with label * edited denemo.keymaprc assigning multiple modes on same keybinding causing a crash 2006-03-17 * fixed lilypond export stem direction * fixed figured bass dialog to use the return key to close it * fixed lilypond notehead issue 2006-03-17 * further fixes to view.c when using multiple windows * commented out checkbox option to use exportmidi for playback in playback properties. * update INSTALL file 2006-03-16 * preparation for releasing 0.75. * Fixed load keymap issue. 2006-03-16 * I believe I fixed exportpdf on osX but don't have a way to test it yet. * I fixed a bug in view.c that caused all windows to close if any of the windows were closed 2006-03-15 * commented out alsaplayback in view.c and denemoui.xml * small fix on keybindings of the 'A' note in denemo.keymaprc. 2006-03-13 * Fix for staff insertion / cancelling * Figure bass display fixed * Commented calculatepositions.c and contexts.c * Undo removes from the correct position in the measures * Other issues exist when undoing across measures which are still to be resolved * Revised Go menu renaming to Navigation. * Added all argument to addmeasures ready for individual staff lengths 2006-03-10 * Speedy keymap fix and keymap loading fix * Removed Niff plugin from configure.in * Commented out save selection for this release * Modified figured bass display * Moved XML keymap loading/saving from within #ifdef DEBUG's. * Commented Staffops.c 2006-03-09 * added some functions to create gtk_entry text boxes * scoresetupwizard defaults to gtk_entry text boxes. * there is a makeshift switch to revert back to the old behavior 2006-03-08 * scoresetupwizard no longer crashes when hitting finish * " also creates staves and labels their staff and midi names 2006-03-07 * placed #ifdef DEBUG around scorewizard in view.c 2006-03-05 * Undo/Redo work now works for inserting timesig, clefs, and key sigs * Open Recent menu fixes for adding to list when opening a file. * Some menu reorganisation Added Insert and Lyrics menu. * work on lyric export for lilypond. * Moved lyric dialog to global style from old style. * Resolved BUG 140 Tuplets keymap functions * Migrated keymaps to XML versions 2006-03-05 * commented out ly importing in file.c * edited configure.in to fix typo on alsa support and to pass -DHAVEALSA in the CFLAGS. * edited Makefile.am in plugins/midiinput * modified midiinput.c to include alsa inport support 2006-03-04 * Minor XML keymap fix * Partial paste functionality fix 2006-03-04 * basic reading oss midi from device filter in midiinput plugin 2006-03-02 * Fixed BUG 000037 adding the enter keypress for dialogs 2006-02-29 * a few changes to keysigdialog.c to allow mode selection 2006-02-28 * if denemohistory does not exsist it gets created otherwise the user would have to previously have a denemohistory or touch ~/.denemo/denemohistory 2006-02-27 * Added the toolbar section to the manual outputted an HTML version 2006-02-27 * Rewrote the Design doc in cvs so it is nolonger conversational. 2006-02-27 * commented out code in exportmudella.cpp that puts everything on 1 staff. It is because of the extraneous << >> 2006-02-25 * removed c++ specific code from importmidi.cpp and importmidi.h 2006-02-13 * Modified doc make files to fix errors 2006-02-23 * small memory leak fixes in exportmudela.cpp, exportxml.cpp, view.cpp, and prefops.cpp 2006-02-23 * Added a temporary new manual file manualnew.xml. Started a major rewriting of the manual. Added most of the getting started section plus a revision of the first quarter of the manual. 2006-02-22 * fixed small memory leak in importxml.cpp * line 345 g_free(clefTypeName); 2006-02-21 * fixed a memory leak in main.cpp 2006-02-20 * set program title to Denemo instead of using argv[0] in view.cpp 2006-02-20 * moved all playback preferences originally in preferences to playback properties 2006-02-11 * fixed csoundplayback issue of saving .wav files as IRCAM instead of .wav 2006-02-09 * removed csound popup dialong when playing with csound * added rtcs to to prefinfo structure in denemo.h * configuring csound playback is now in the preferances * rewrite of csoundplayback.cpp 2006-02-09 * added a section to user manual on commandline options 2006-02-08 * added user selectable editor in preferences * added texteditor to prefinfo structure in denemo.h * modified prefdialog.cpp and src/prefops.cpp to create a default editor and will save and load user defined editor from .denemorc * commented out old code the saught $EDITOR and uses user defined editor instead 2006-02-05 * gcc 4.x fixes to main.cpp 2006-01-28 * Readded change_pitch keybinding for use in replace mode * 2006-01-26 * Fixed bug 114 failure to load denemohistory * Altered menu titles so that they are translated * Fixed 115 for the documentation browser * More work on xml keymap parsing 2006-01-21 * Removed Changeduration functions and entries in keymap files to free up some bindings. 2006-01-21 * importmidi now sets midi instrument and denemo or track name 2006-01-20 * Removed Blank rest mode as is redundant * Fixed change of editing mode bug * Added config.rpath and glibc2.m4 to CVS * 2006-01-19 gettextize * Makefile.am (EXTRA_DIST): Add config.rpath. 2006-01-18 * Added dialog to continue editing, save as or delete the crash recovery file * More work on BUG 40, added rest mode to menu (not working). * Added insert blank note keybindings to stay in normal mode after insert. 2006-01-17 * importmidi now sets tempo 2006-01-16 * Changed crash behavior to save into the .denemo directory 2006-01-15 * upgraded to monophonic to polyphonic midi type 1 file input * importmidi pads measures with rests instead of leaving measure/ or rest of measure blank 2006-01-15 * Fixed bug 40 for inserting rests 2006-01-10 * Fixed BUG 108 2006-01-10 *made a new version of the html manuals for the cvs and site in both regular and chunk.: 2006-01-10 * fixed funky enharmonic respelling keys in importmidi.cpp 2006-01-09 * Changed add staff to move to the newly created staff * Added *.midi to file filter as separate entry needs to be a single midi file but will sort later 2006-01-06 * Changed autosave to save into .denemo * Added all header fields to the denemo xml file * Fixed typo on score_config dialog and added paper setup to this removing the separate dialog. * Added edit-info to the denemo format * Added config of showing of palettes 2006-01-06 * importmidi now sets key signature * importmidi can repeatedly open up midi files with our restart or denemo or hitting New in menu * importmidi support for tied notes and notes accross bars. 2005-12-30 * Applied various patches from Jeremiah Benham for CSound export and midi files * Alter csoundplayback to set cdata.si. * Added functions for keybindings to change initial keysignatures * Added make html docs option, needs work. * Changed file.cpp as per Jeremiah's mail * Added keybinding functions to set the initial timesig and clef * Removed new keyboard dialog as is unfinished (only commented out menu item) * Fixed 0000025 midi playback range errors 2005-12-18 * added ROADMAP file rough headers * more work on score wizard 2005-12-16 * resolved bug 000000088 trailing l on the denemo.conf * resolved bug 000000087 missing alsa.m4 * resolved bug 00000089 denemo.keymaprc not installing 2005-12-15 * More scoresetup wizard work * Fixed bug 0000086 missing instruments.xml 2005-12-14 * Added paper setup dialog 2005-12-08 * Started commenting more code using doxygen style comments * changed global prefences file to xml file * Removed old rc parsing code 2005-12-04 Adam Tee * Added instruments.xml (taken from JEdit) for instrument definitions * Changed history to a 10 element queue 2005-11-29 Adam Tee * Started on code restructuring for headers * Score Config wizrd page setup 2005-11-27 Adam Tee * Started migration to Pango for drwaing text on score * Implemented staff contexts * Started score configuration wizard 2005-11-25 Adam Tee * Resolved utf8 issues History now functions for runtime * Changed keysig dialog to gtk2 dialog * Started on mode support (dialog only) 2005-11-24 Adam Tee * Altered the way that the score is displayed so current voice/staff is displayed black and the rest in yellow. * [0000063] Fixed exportpdf * [0000062] Fixed print function * More work on History (still issues with utf8 strings) 2005-11-21 Adam Tee * Completed initial bookmarks implementation * Revised polyphony name and added function to copy current staffs properties for polyphony voice. * Fixed alsa configuration errors 2005-11-20 Adam Tee * Added functions for keymappings of insert clef, keysig and time sigs * Added Bookmark code initial implementation 2005-11-18 Adam Tee * Fixed denemo print issue, calling tex * Added pdf viewer preference 2005-11-15 Adam Tee * Added plugin load and unload functionality * Added progress bars for file save. * Started on adding history (recent files) support 2005-11-14 Adam Tee * Finished XML config file support 2005-11-12 Adam Tee * Added FileSeave progressbar and statusbar entry to show file saved. * Start adding load support for XML config file 2005-11-11 Adam Tee * Started to add Alsa Sequencer support 2005-11-09 Adam Tee * Update CSoundplayback orc file chooser 2005-11-05 Adam Tee * Fixed typo in playbackprops dialogs BUG 50 * Alternate NLS functions to more generic to enable translations BUG 53 * Fixed help browser problem BUG 48 * Fixed lookup directories for help, keymaps etc BUG 000049 2005-11-03 Adam Tee * Removed lilypond -m option for playback * Changed blank mode output to s on lilypond export * Changed display of blank notes to use yellow 2005-10-29 Adam Tee * Added display_helper to end of changenotehead * Removed changepitch, using tonechange instead * Added ability to define key bindings for barlines * Added all ornaments to the articulation palette using xbm's * Added warning dialog to display errors. * Partial fix of removal of hairpin starts/ends if end found without corresponding start then warn and remove. 2005-10-27 Adam Tee * Move Open Template to New from Template * Added flag to say a template is read only 2005-10-26 Adam Tee * Added binreloc for register stock icons * Added templates directory on install 2005-10-25 Adam Tee * Fixed coda svg bugs * Added Binreloc support ready for klik integration 2005-10-09 Adam Tee * Updated parts of export lilypond to for 2.6.3 2005-10-02 Adam Tee * Completed addition of all current Lilypond ornaments * Removed legacy ornament code 2005-09-12 Adam Tee * Completed reimplementation of ornaments 2005-09-09 Adam Tee * Renamed Initial Clef to Set Clef * Started to rework the ornament handling 2005-05-11 Adam Tee * Fixed bug 000013 Added call to external browser to get manual This is hardcoded at the moment but will be made user-definable. * Updated doc/Makefile.am to install documentation 2005-05-11 Jens Askengren * Added reworked keybord dialog (unfinished) * Beautified Go to measure dialog 2005-05-08 Adam Tee * run indent on all *.cpp files * Fixed bug 000016 Changed Entry menu to Mode * Jens has fixed bug 00008 * Fixed bug 000019 Added skeleton exportpdf.cpp to the CVS. * 2005-04-18 Jens Askengren * Added score properties dialog (Combines header, measure width and spacing dialogs) * Made toolbars togglable 2005-04-17 Adam Tee * Fixed bug 000009 changenotehead bug * Fixed bug 000010 insert lyric bug * Fixed bug 000011 - added to keymap/Makefile.am * Fixed bug 000007 - insert barline changed callback arguments 2005-04-16 Adam Tee * Added note and rest svg icons to pixmaps/Makefile.am 2005-04-15 Jens Askengren * Note and rest input toolbar * Added note and rest svg icons 2005-04-14 Jens Askengren * New articulation pallette * Added svg accent icons 2005-04-13 Jens Askengren * Made dialogs transient 2005-04-12 Adam Tee * Fixed keyresponses 2005-04-09 Adam Tee * Fixed insert staff bug * Fixed keyresponses 2005-04-08 Adam Tee * Added internationalization files into po directory * Started to fix the staff add functions. 2005-04-08 gettextize * Makefile.am (SUBDIRS): Remove intl. (EXTRA_DIST): Add config.rpath, mkinstalldirs. 2005-04-03 Adam Tee * Fixed Internationalization problem 2005-04-03 gettextize * Makefile.am (SUBDIRS): Remove intl. 2005-04-01 Jens Askengren * Playback dialog remake 2005-03-31 Jens Askengren * Reworked preferences dialog to include plugins 2005-03-27 Adam Tee * Applied Jens' latest patch * Revised Menu's to use gtkuimanager, incoporating a toolbar * Revised Callbacks to reflect the above changes 2005-03-27 Abel Cheung * Adherence to FHS; read systemwide keymap and config under $sysconfdir 2005-03-22 Adam Tee * Finished staffpropdialog and playbackprops dialog changes * Changed List plugins to GtkTreeView 2005-03-19 Adam Tee * Applied Jens Askengren's Patch to beautify the prefops and help dialogs * Started wholesale migration to GTK+2.4 as above patch uses these features. 2005-02-14 Adam Tee * Reformatting of README.lilypond 2005-02-12 Adam Tee * Makefile.am's for doc's directory * Undo's now work on object inserts * Fixed autosave timeout bug * Added open template function which selects the templates directory * Increased undo levels to 50 2005-02-10 gettextize * Makefile.am (SUBDIRS): Add m4. (ACLOCAL_AMFLAGS): New variable. (EXTRA_DIST): Add config.rpath. * configure.in (AC_OUTPUT): Add m4/Makefile. 2005-02-10 Adam Tee * Minor formatting issues and code comments 2005-02-06 Adam Tee * Dynamics now drawn at the bottom of the staff * fixed menu's 2005-01-03 Adam Tee * Fixed g++-3.4.3 problem in lyparser.yy 2004-12-11 Adam Tee * Created separate mudela header structure * autosave working 2004-09-21 Adam Tee * Replace Mode in place (issues with drawing the revised score * Menu reorganisation * Delete staff before/after implemented but a bit buggy. 2004-09-17 Adam Tee * Applied Torbj??rn Turpeinen's Makefile patches. 2004-09-14 Adam Tee * Fixed yylloc problem * Autosave in preference dialogs, still issues with the scanning of numbers * Polyphony fixed staffname problems when drawing 2004-09-03 Adam Tee * Added autosave functionallity * Started looking at undo/redo 2004-09-03 Adam Tee * New cursor to signify the blank mode * Removed ALSA dependencies * Fixed Locale issue (for fonts) * Fixed some GTK2 issues of deprecated code * Fixed barline crash, no new barlines yet as need to replace the current code. * Added barlines to lilypond export, fix for autobarlines required 2004-08-31 Adam Tee * Fixed Makefile for compilation (stale file being kept in archive * Applied patch to bring lyparser upto Richard Shann's most recent version * Fixed insert tuplet at end on current bar * Updated exportmudela function to be compatible with latest lilypond * Put keymaps in separate directory * Fixed exportmidi to output ".mid" extension 2004-08-24 Adam Tee * Fixed broken GTK2.0 about dialog * Fixed font error (not nice fonts at the moment though) * Added DeleteStaff to menu * Put Clef, Time Sig, Key menus under Staff Attributes menu * Fixed Close function for single window of denemo 2003-11-09 Richard Shann * lyparser.y removed stray commas and duplicate declarations. 2003-10-28 Richard Shann * file.cpp, main.cpp, file.h better handling of unreadable files. * lylexer.l,cpp lyparser.y,cpp exportmudela.cpp, lyparserfuncs.h, lyparser.h handle trailing white space before EOF on LilyPond load. Set external editor to start editing at first error rather than the last on encountering a parse error in LilyPond. 2003-10-11 Richard Shann * Switch the branch Denemo-Exp-10_09_2001 to the main branch (This ChangeLog is substantially that of the branch). 2003-10-09 Richard Shann * Tidy up lily parser; handle some erroneous LilyPond better. 2003-10-01 Richard Shann * Unite the LilyPond text editing window with the main denemo window. * Make the windows track each other (except still no incremental parsing of LilyPond text - use reload) * Allow multiple score blocks in a single file 2003-05-25 Tim Bell * Added support for XML export and import of crescendos and diminuendos 2003-03-21 Adam Tee * Applied 's OpenBSD patch * Removed the need for the acconfig.h file 2003-03-14 Adam Tee * Added graceful exit if denemo seg faults saves the file in .denemo format 2003-03-12 Adam Tee * Added Alasdair's runsilent code * Altered plugin selection in configure.in 2003-03-05 Adam Tee * Fixed Analysis plugin to us GtkTreeView so it is compatible with GTK2 * Added plugin options to configure.in * Added gtk2 option to configure.in 2003-03-01 Adam Tee * Applied Richard Shann's latest patch for automated testing and GTK2 code 2003-02-11 Adam Tee * Applied Richard Shann's latest patches including Regression testing and easylyparser * Added Niff Plugin (Note functioning) 2003-01-22 Adam Tee * Applied Richard Shann's Patch for figured bass symbols * Related to this added load/save support for the xml format * Also, applied Richard Shann's fixes for small bugs * Added the first part of an MDI interface for Denemo * Fixed translated GTK Signals * Added chord cloning for tied notes * Applied Alasdair's cautionary accidentals patch 2002-05-29 Adam Tee * Added Support for Lyrics * Reimplemented Dynamics * Added support for invisible notes/rests 2002-05-26 Adam Tee * Added XML loading of analysis results. 2002-05-24 Adam Tee * Added Real-Time CSound playback option 2002-05-23 Adam Tee * Added CSound score file saving. * Added CSound playback, with user specified orchestra. Only outputs wav files. 2002-05-18 Adam Tee * Added ability to insert blank notes/rests 2002-03-22 Adam Tee * Finished unload plugin 2002-02-13 Adam Tee * Added unload plugin feature, beta stage. Implements new plugin structure which is passed to the plugin, based on gnumeric 2002-02-10 Adam Tee * Fixed copy/paste/saveselection by copying the object in the mudelaobject struct. * Updated copyrights 2002-02-09 Adam Tee * Save Selection routine for analysis plugin 2002-01-27 Adam Tee * Fixed some JTF format loading bugs * Implemented basic CSound Score file (.sco) exporter 2002-01-20 Adam Tee * Applied Alasdair's revised File I/O patch * Reimplemented dynamic handling 2001-12-14 Adam Tee * Applied Alasdair's fix for loading the file. * Added midi instrument to the denemo file format 2001-11-16 Adam Tee * Applied all the 0.5.7 patches * Added printing support * Added support for space above/below staff 2001-11-12 Adam Tee * Removed mudelaobject union and replaced with a castable pointer. Ready for plugin extensions. 2001-07-03 Adam Tee * Integrated Eric Galluzo's patch of July 3. * Integrated Per Andersson's exportmidi patch. * Ran code through indent, ready for release. 2001-06-22 Adam Tee * Changed hairpin implementation. Added exportmidi files to the CVS. 2001-05-17 Adam Tee * Fixed JTF parser bug replaced array with Singly Linked List and added extra rule for a single note option. 2001-04-30 Adam Tee * hairpin.[ch] Added haripin code for crescendos and diminuendos. * Reimplemented code for articulations, it is menu based now. * Changed feta26-script* fonts to new Lilypond 1.3.150 fonts. 2001-03-25 Matt Hiller * easylyparser.y (lylex): Fixed recognition of dynamics and chord properties such that it doesn't slurp up >s. * Integrated Eric Galluzzo's patch of March 20. 2001-03-18 Matt Hiller * file.c (file_save): Automatically save as .xml file type, if appropriate. 2001-03-05 Adam Tee * easylyparser.y : Added support for note options such as fermata, accent etc. 2001-03-04 Matt Hiller * Integrated Eric Galluzzo's xml native file patch. 2001-02-25 Matt Hiller * keyresponses.c (sharpen_key, flatten_key): Reintroduce stem directive changing (finally). 2001-02-23 Matt Hiller * exportmudela.c (exportmudela): Added set to prevduration for an empty measure (patch from David Megginson. 2001-02-19 Matt Hiller * kbd-custom.c (init_keymap): Adjusted menu items' integration with the custom keyboard interface such that spaces are excised as well. 2001-02-15 Adam Tee * exportmudela.c Partially Fixed dynamic saving for Mudela files. * easylyparser.y Fixed loading of dynamics * Fixed frogparser bug with dynamics * Grace note implementation almost finished 2001-01-16 Matt Hiller * various: Integrated Eric Galluzzo's patch of Jan 2. 2001-01-15 Matt Hiller * exportmudela.c (exportmudela): Put mid-cap in stemming directives. * easylyparser.y (lylex): Recognize both cases for stemming directives. 2001-01-11 Matt Hiller * exportmudela.c (exportmudela): Exchanged order in which slur-begin and tie indicators are output. * easylyparser.y: Read in the same. 2001-01-07 Matt Hiller * measureops.c (set_accidental_positions): New function. (various): Got nonoverlapping accidentals working. (all): Updated copyright notices to 2001. 2001-01-06 Matt Hiller * chordops.c (findreversealigns): For stemdown notes, function failed to set the reversealign of curnote to FALSE. 2001-01-05 Matt Hiller * lyparserfuncs.c (setkey): Fixed call to initkeyaccs. * staffops.c (copy_staff_bits): New function. 2000-12-29 Matt Hiller * file.c (set_si_filename): Fixed problem whereby si->filename wasn't actually set by this function, leading Save to behave exactly as Save As. * mousing.c (various): Refactored mousing code such that it'll be more pluggable for different kinds of clicks, etc. 2000-12-24 Matt Hiller * commandfuncs.c (various): Factored calcmarkboundaries() into setcurrents(). Adjusted code surrounding calls appropriately. * moveviewport.c (various): Similarly adjusted code surrounding calls to setcurrents(). * mousing.c: New file; adds support for cursor positioning via the mouse. * mousing.h: New file; adds support for cursor positioning via the mouse. 2000-12-04 Matt Hiller * measureops.c (removemeasures): Fixed a rather crucial bug in the opening if. Cut and paste now works 2000-12-03 Matt Hiller * selectops.c (cuttobuffer): Fixed the non-initialization of i under if (staffsinbuffer == 1). 2000-11-24 Matt Hiller * various: Internationalized Denemo, removed accelerators from menubar items and merged the ability to add and customize bindings to the new custom-keyboard interface. 2000-11-12 Matt Hiller * Makefile.am: Rewrote flex and bison rules for configuring from arbitrary directories. Changed it to look for data files and others in pkgdatadir (i.e., /usr/local/share/denemo/). * file.c (filesel_save): Saves according to the file type selected in the combobox rather than by filename. 2000-11-11 Matt Hiller * various: got vertical scrollbar working. 2000-11-05 Matt Hiller * various: added scrollbars, got the horizontal scrollbar working. 2000-10-19 Matt Hiller * kbd-custom.c (load_keymap_file): Fixed handling of tokens to include / as an identifier character. 2000-10-12 Matt Hiller * kbd-custom.c (NO_MAP_DIALOG_TEXT): Fixed this to reflect removal of keybinding stuff from the file menu. * kbd-interface.c (jump): Added a gtk_clist_moveto to move to the newly selected command. 2000-10-10 Matt Hiller * kbd-* (various): redid the custom keybindings dialog to make it of sane size, redid the control buttons at the bottom of the dialog. (lookup_keybindng, add_keybinding): Added a filter to filter out bits of keyboard state we don't want to pay attention to, such as Caps Lock and Num Lock. 2000-09-17 Matthew Hiller * various: refined custom keybinding implementation; added load and save commands, switched back to main Denemo style for callbacks and such rather than the too-verbose Glade style. 2000-09-14 Matthew Hiller * easylyparser.y (chordandassoc): Fixed support for loading slurs. * exportmudela.c (exportmudela): Fixed minor bug in saving of slurs; removed behavior of interpreting a tie as a slur in certain situations. * various: Finished improved custom keybinding implementation. 2000-09-10 Matthew Hiller * various: Summary of changes over the past few weeks: integrated patch for customizing keybindings, various other improvements. 2000-08-14 Matthew Hiller * calculatepositions.c: Got a _vastly_ improved algorithm (in terms of both correctness and simplicity) for determining x positions working. 2000-08-10 Matthew Hiller * easylyparser.y: Added support for reloading dynamics; put in a stub for reloading peculiar noteheads. * various: assorted streamlinings and bugfixes * all: released 0.5.4 2000-08-08 Matthew Hiller * measureops.c (settickvalsinmeasure): Refined the method for calculating mudelaitem->starttickofnextnote such that it handles tuplets more gracefully and no longer assumes that tuplets end on a beat. 2000-08-07 Matthew Hiller * selectops.c (pastefrombuffer): Fixed a bug reported by Francois Pinard regarding segfaults shortly after pasting. 2000-08-05 Matthew Hiller * main.c (main): Fixed command-line loading such that it sets the titlebar correctly. * easylyparser.y: Added support for loading stem directives, and staffs with multiple voices. 2000-08-02 Matthew Hiller * exportmudela.c (exportmudela): Updated exportmudela such that it saves multiple voices on a single staff appropriately. Also updated it to save stem directives. 2000-08-02 Adam Tee * Implemented dynamics * Added feature to change the notehead type 2000-07-31 Matthew Hiller * datastructures.h: Removed barline type, commented other types. * lilydirectives.c: gtk_signal_connect()s became gtk_signal_connect_object()s where appropriate. 2000-07-28 Matthew Hiller * various: wrote stem_directive_insert and added various forms of support for displaying and manipulating stemming directive indicators. * commandfuncs.c (dnm_deleteobject): Cleaned this function up, reorganized what had been copy-and-paste code into helper functions. 2000-07-25 Matthew Hiller * measureops.c (setsdir): Shortened stems * various: Removed stem direction field from staff structure and everything associated with it. * commandfuncs.c: Reorganized code for inserting objects into the score in preparation for writing stem_directive_insert. 2000-07-23 Matthew Hiller * easylyparser.y: Reformatted for greater GNU coding standards compliance * measureops.c (calculatebeamsandstemdirs): Fixed the bug that I'd added when tripletifying Denemo. 2000-07-17 Matthew Hiller * Makefile.am, denemo.spec.in: Integrated Sourav Mandel's patch for RPMifying Denemo * easylyparser.y, exportmudela.c: Integrated Mark Burton's patch for explicitly stating that keys are major. 2000-06-28 Matthew Hiller * README: various updates. In particular, the section describing information for potential contributors was greatly expanded. * all: ran every source file through GNU indent so that the indentation and spacing follows the manner recommended in the GNU coding standards. 2000-06-09 * Fixed various JTF format bugs in frogio.c * Added JTF format loading code for tuplets 2000-06-09 * various: brought together the various threads of tuplet-work that people'd been putting together and integrated it all. 2000-06-04 * various: finished work on a very preliminary "single-staff" polyphony feature. It still has some usability issues, but only one major technical problem. 2000-05-23 * Fixed Soprano clef * Fixed easylyparser chords rule was not required 2000-05-01 * various: integrated code in the fashion of Laurent Martelli's pixmap->bitmap changeover, and cleaned up draw.c 2000-04-25 * file.c (confirmbox): sanified the code that popped up the "really destroy score" confirmation dialog by passing confirmbox () a GtkSignalFunc. * tomeasuredialog.c (tomeasurenum): re-modalized the dialog. * playbackprops.c (playback_properties_change): re-modalized the dialog. 2000-04-23 * headerdialog.c: added Laurent Martelli's patch for header information * main.c, file.c: added plain Save function, added information in window title concerning current filename. 2000-04-22 * README: described select, cut, copy, and paste; described immediate playback mode and the mechanism behind it. * selectops.c (cuttobuffer): got the cut function working. It's presently very ugly, though. * all: released 0.5.3 2000-04-21 * midi.c: Refined the behavior of midi.c, etc. * selectops.c: refined behavior of paste so that new measures are added when existing music would be trampled, etc. * selectops.c: started coding a cut function. Began process of debugging it into existence 2000-04-20 * midi.c, midi.h, various: Added and provided hooks for using Brian Delaney's immediate MIDI output code. 2000-04-19 * measureops.c (calculatebeamsandstemdirs): fixed a bug that caused notes to be aligned as though they were on the wrong clef if a clef interrupted a beaming group. * various: coded up configuration file support and got it working 2000-04-18 * various: got preferences dialog working. Started working on configuration file support. 2000-04-17 * playbackprops.c: Got rid of "path to Lilypond" and "midi player" things in playback properties dialog -- these will go into a preferences dialog instead. 2000-04-15 * various: fixed dialog boxes such that they all have titles and the various text entries react appropriately if you give them an "activate" signal by hitting enter inside them. 2000-04-14 * tomeasuredialog.c, main.c: created a navigate-to-measure dialog. * main.c, keyresponses.c: made Home and End keys into accelerators; they're no longer interpreted by scorearea_keypress_event * various: Actually got this bounding box thing working * commandfuncs.c (calcmarkboundaries): fixed some bugs here * selectops.c (copytobuffer): fixed some bad bugs that caused the wrong notes to get copied to the buffer 2000-04-12 * various: started writing code to give indication of bounding box's location 2000-04-10 * file.c (updatescoreinfo): added call to find_leftmost_allcontexts() * selectops.c (pastefrombuffer): fixed outstanding bugs; it works now 2000-04-09 * various: wrote object-cloning functions for use by the cut-and-paste mechanism. 2000-04-08 * selectops.c: wrote the beginnings for a cut-and-paste mechanism. 2000-04-06 * fixed frogio and frogparser for new change of keysig etc. * altered drawkey so that it correctly draws keysig for G_8 and Tenor clefs * Documented Home and End Keys * applied Roy Rankin's patches 2000-04-04 * various: released version 0.5.2 * various: made it impossible to insert a mudela object before a time signature change, including another time signature change. * commandfuncs.c (dnm_deleteobject): Put a switch statement into the function such that it does the right thing when deleting a chord, clef, or key signature change. 2000-04-03 * contexts.c, draw.c (draw_measures): Denemo now allocates an appropriate amount of space for the leftmost keysignature rather than a hard-coded amount. This is true of the widest key signature, if there are different key signatures in different staves. * calculatepositions.c (find_xes_in_measure): now handles consecutive mudelaobjects where ->durinticks == 0. This was far from trivial, but man, does it ever work. 2000-04-02 * drawkey.c (draw_keysig): Fixed this such that it takes the preceding key signature as an argument and draws "cancelling naturals" where appropriate. Also now returns the width required for drawing the key signature. 2000-04-01 * objops.c, objops.h, timedialog.c, keysigdialog.c, clefdialog.c: Created "new" function returning new non-chord mudelaobject *s and used them. * easylyparser.y: mudela parser now correctly interprets the clef, key, and time signature changes upon reload. * lyparserfuncs.c, lyparserfuncs.h (setclef, cleftypefromname): split off functionality formerly in setclef into two separate functions, allowing cleftypefromname to be invoked distinctly. * draw.c (draw_measures): adjusted determination of whether the cursor was off the end of the measure to account for objects for which durinticks == 0 at the end of the measure. 2000-03-31 * ChangeLog: started using M-x add-change-log-entry to do this ChangeLog * exportmudela.c (exportmudela): export mudela now copies information concerning clef, key, and time signature changes to the mudela it exports. 31 Mar 2000: Changed gtk_file_selection_complete()s to gtk_file_selection_set_filename()s Integrated all of Roy Rankin's patch. 30 Mar 2000: Finished key signature changes. Fixed Adam's toend and tohome functions. 29 Mar 2000: Started enabling key signature changes. 28 Mar 2000: Added ability to insert clef changes. 27 Mar 2000: Continued with time signature changes and got them right. 26 Mar 2000: (post 0.5.1) Fixed a bug in calculatepositions.c listcomparefunc. Put in a first shot at time signature changes. 26 Mar 2000: 0.5.1 Wrote Help->Show Keybindings and Help->About callbacks. Fixed reversealigns bug. Updated README. Packaged release. 25 Mar 2000: mh: A popup window now appears confirming any actions that will destroy the current score if it hasn't been saved off yet. 24 Mar 2000: ajt: incorporated Brian Delaney's MIDI instrument patch, and fixed bugs in it. mh: Added stuff to easylyparser.y to account for the MIDI instrument. Fixed clefdialog.c bug Split off much of the code in keyresponses.c into commandfuncs.c; the resulting cleanups knocked a bunch of stuff off the urgent section of the TODO list. :) Added a "haschanged" flag to struct scoreinfo, to be checked before File->New, File->Open, and File->Quit are invoked. Added ability to change the duration of an existing note with shift - duration-indicator. 23 Mar 2000: mh: Added tearoffs to the menus. Added a signal handler to listen and handle SIGCHLD signals - no more zombie processes after playback. 21 Mar 2000: 0.5.0 mh: Made useful actions for everything in easylyparser.y - import mudela now completely works! Reworked file menu functionality and got rid of lots of duplicate code in file_selection. Adjusted playback controls. Packaged release. 20 Mar 2000: mh: My mudela lexer and parser work now! The next trick is to make useful actions for everything that gets parsed. Added soprano staff support to mudela import/export (when did that get added, btw?) Fixed File->New stuff. 19 Mar 2000: mh: Streamlined playback function, and started working on the mudela parser again. 14 Mar 2000: ajt: More work on playback 10 Mar 2000: ajt: Added Playback function for quick playback. Use fork to create two processes, lilypond -m and playmidi. Also removed one of the score blocks in exportmudela and added a midi block with tempo=60 7 Mar 2000: Much more work on mudela parser. 6 Mar 2000: Fixed bugs reported by Roy Rankin. Some work on mudela parser. 3 Mar 2000: Started writing my easyly lexer. It's actually an ad-hoc lexer; the function's in the last section of the parser file I'm going to use for it. 2 Mar 2000: Fixed parser.y and lexer.l such that they compile with -p and -P, respectively, and won't interfere w/ my simplified-mudela parser. 1 Mar 2000: 0.3.5 Fixed a bug in free_score that was causing segfaults. Posted release. 29 Feb 2000: ajt: fixed parser.y so that Makefile.am looked right. Integrated Roy Rankin's G_8 patch. Fixed some bugs in parser.y that were preventing loading from working. 27 Feb 2000: Finished with ties 26 Feb 2000: Rewrote setpixelmin() from the ground up - it now works _very_ well instead of just being a reasonable guess. Split off many #define'd constants into separate header files. First shot at implementing tied notes. They can be added and removed, and are displayed more-or-less properly. exportmudela.c doesn't yet take ties into account. 25 Feb 2000: Refined method for alloting space before a note. 24 Feb 2000: Wrote a separate, smarter function for determining where to denote accidentals and where not to. This had been done by the drawing code before. Came up with a mechanism -- that barely adds any code, mind you! -- to allot space before notes for accidentals, etc. This broke the proper determination of reversealigns, though, which I also fixed. Integrated Adam Tee's load & save patches into mainstream release. 23 Feb 2000: 0.3.4 Got more complex beaming to work. Adjusted code in timedialog.c and packaged release. 22 Feb 2000: Got basic, eighth-note-style beaming working. 20 Feb 2000: Got rid of memory leaks in dialog box functions. Fixed a few more colliding keyboard commands/accelerators. Put in model groundwork for rudimentary autobeaming. 19 Feb 2000: 0.3.3 Wrote a functions explicitly for calculating the rightmost measure number rather than doing it as a side effect in the drawing routines. Packaged release. 18 Feb 2000: Changed Denemo so that it would cache the heights of noteheads as well. 16 Feb 2000: Split off a lot of what the drawing function was doing into a separate function. Part of this involved putting in facilities for saving the x positions of notes rather than recalculating them for each draw-through. I'll do a similar thing with y's soon. 14 Feb 2000: 0.3.2 Elaborated on Ron Steinke's patch, thereby completing Denemo support of a distinction between major and minor keys. Packaged release. 13 Feb 2000: Adjusted the rest of Denemo such that it no longer uses all those ugly global variables. The part of the score that you're viewing now advances (when necessary) if you implicitly add measures to it. If you enter a "red-zone" note, it'll be added to the next measure if there aren't any notes in the next measure -- before, Denemo would only do this if you were at the very end of the piece. Fixed a bug affecting exportation of rests. Incorporated Ron Steinke's key name patch. Also fixed the 'control-K' interface bug he'd noticed. 10 Feb 2000: Adjusted about half of Denemo such that it no longer uses global variables. 7 Feb 2000: (post-0.3.1) Fixed the problems that have been causing gtk warnings for a long while now (one instance had to do with the use of uninitialized strings, the other an erroneous attempt to add scorearea to the toplevel window as well as the main vbox it contains.) Fixed font loading such that it comes up with a reasonable default font if it can't come up with something else useful. 7 Feb 2000: 0.3.1 Added support for dotted notes in view and control (everything necessary was already in the model.) Packaged release. 6 Feb 2000: Added staff deletion. Finally, added export mudela functionality. Added back in chunks of Adam Tee's file.h and file.c to accomplish this, though nothing that he'd be angry about. 5 Feb 2000: Made initial clef, key, and time signature a property of the staff rather than an actual mudela object (making them mudelaobjects was more trouble than it was worth). Added delete measure operation. Adjusted functionality such that if adding too many notes to the last measure of the piece, a new measure will automatically be tacked onto its end. 4 Feb 2000: Added staff properties dialog. Fixed the problem of currentmeasure falling off the end of the screen when doing a lot of note entry. The name of each staff is now painted. Yet-another-bugfix for the new drawing mechanism. Changed sorting function a little bit for mudelaobjects zero ticks in duration, allowing me to remove a hack from the drawing code. 3 Feb 2000: 0.3.0 Checked with Adam Tee to ask if his save patch should be integrated with the main release cycle; he said not yet. I removed most of it, but left in the stuff that wasn't directly related to his save function. Packaged release. 2 Feb 2000: Fixed individual note allocation. The scheme it uses is also now much simplified. 1 Feb 2000: Got individual note allocation working. Its behavior is still not quite what I'm aiming for when rhythms are syncopated, but where they aren't, it works just about perfectly. Fixed things such that multiple measures are now displayed again when they can be. 31 Jan 2000: Continued working on individual note allocation stuff -- it's almost working. Changed things so that currentobject points to NULL at the beginning of an initial measure (regardless of the initial timesig, etc.) 30 Jan 2000: Added some groundwork that allows Denemo to give explicit note allocations. 24 Jan 2000: 0.1.2 Got rid of lots of gratuitous NOTE_MARGIN + 's Added red exclamation point indicator when a measure has too many beats (not yet perfect) Added display of measure numbers Added ability to display different parts of the score (just left-to-right so far) Adjusted display such that a double-bar-line is shown at the end of the piece Replaced every constant-length gchar * I could find with a dynamically-resizing GString * instead. 23 Jan 2000: Fixed the display of adjacent notes in a chord so that chord tones are displayed where you'd expect them. Added cursor colors other than gray! Green for ability to add music at the cursor, red if it'd extend past the end of the measure. 17 Jan 2000: Added Control-arrow shortcuts for moving around measure-by-measure. Denemo now calculates the number of measures in width it can display and displays only those measures. Added keyboard shortcuts and a dialog for setting the space between staves. Added commands to insert a first and last staff; moved operations that add a staff to their own menu type. Got rid of all that ugly TOP_MARGIN and STAFF_START stuff, as it's now taken care of by the adjusted scheme for providing space between staffs. Fixed dialogs such that they open at the position of the mouse. 16 Jan 2000: 0.1.1 Final packaging of release. 15 Jan 2000: Got time signature dialog working. Multiple simultaneous time signatures seem to work too, though I don't think Lily supports them. :) Added a dialog for setting the measure width. Added keyboard shortcuts for setting the measure width. Updated DESIGN, TODO, etc. 13 Jan 2000: Started time signature dialog. Adjusted the add measure code such that adding a staff will give it the same clef, key, and time signatures as the current staff. Can be added before or after the current staff. Put in groundwork for adjusting the width of measures, which I can now do with the help of gdb. (This is also important for adjusting the time signature such that much space isn't wasted.) 12 Jan 2000: 0.1.0 Final packaging of release 0.1.0 11 Jan 2000: Finished model, control, and view coding for block-chords - they now work Added function for drawing ledger lines 10 Jan 2000: Began coding in model support for block-chords 6 Jan 2000: 0.0.7 Wrote code for actually displaying the key signature (it had to be deduced from the appearance of the music beforehand) 5 Jan 2000: Added support for changing the key signature Added display of accidentals where the context demands it but not elsewhere 4 Jan 2000: Got clef-change dialog entirely working. Added preliminary support for accidentals. 3 Jan 2000: Removed S key as shortcut to 'new staff'. Added '2000' to all copyright lines. First stab at the change-clef dialog. 1 Jan 2000: Finally got New Staff off of the Edit menu working; I ran into lots of stupid problems doing so and as a result it took a lot longer than it should've. 31 Dec 1999: Debugged stuff such that adding new staffs actually works. Fixed pixmaps such that the background was pure-white, not off-white. Reworked height-calculating code. 30 Dec 1999: Added S command to add a new staff. Started working on the scaffolding for it. denemo-2.2.0/PaxHeaders.19168/build0000644000000000000000000000013213135434151013551 xustar0030 mtime=1500919913.236648472 30 atime=1500919914.539981806 30 ctime=1500919913.236648472 denemo-2.2.0/build/0000755000175000017500000000000013135434151015477 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/build/PaxHeaders.19168/intmax.m40000644000000000000000000000013213135434036015372 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.616648472 30 ctime=1500919913.213315139 denemo-2.2.0/build/intmax.m40000644000175000017500000000217213135434036017245 0ustar00jjbenhamjjbenham00000000000000# intmax.m4 serial 1 (gettext-0.12) dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl Test whether the system has the 'intmax_t' type, but don't attempt to dnl find a replacement if it is lacking. AC_DEFUN([gt_TYPE_INTMAX_T], [ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) AC_REQUIRE([jm_AC_HEADER_STDINT_H]) AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, [AC_TRY_COMPILE([ #include #include #if HAVE_STDINT_H_WITH_UINTMAX #include #endif #if HAVE_INTTYPES_H_WITH_UINTMAX #include #endif ], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)]) if test $gt_cv_c_intmax_t = yes; then AC_DEFINE(HAVE_INTMAX_T, 1, [Define if you have the 'intmax_t' type in or .]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/printf-posix.m40000644000000000000000000000013213135434036016534 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.623315139 30 ctime=1500919913.223315139 denemo-2.2.0/build/printf-posix.m40000644000175000017500000000310613135434036020405 0ustar00jjbenhamjjbenham00000000000000# printf-posix.m4 serial 2 (gettext-0.13.1) dnl Copyright (C) 2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl Test whether the printf() function supports POSIX/XSI format strings with dnl positions. AC_DEFUN([gt_PRINTF_POSIX], [ AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings], gt_cv_func_printf_posix, [ AC_TRY_RUN([ #include #include /* The string "%2$d %1$d", with dollar characters protected from the shell's dollar expansion (possibly an autoconf bug). */ static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; static char buf[100]; int main () { sprintf (buf, format, 33, 55); return (strcmp (buf, "55 33") != 0); }], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, [ AC_EGREP_CPP(notposix, [ #if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ notposix #endif ], gt_cv_func_printf_posix="guessing no", gt_cv_func_printf_posix="guessing yes") ]) ]) case $gt_cv_func_printf_posix in *yes) AC_DEFINE(HAVE_POSIX_PRINTF, 1, [Define if your printf() function supports format strings with positions.]) ;; esac ]) denemo-2.2.0/build/PaxHeaders.19168/wint_t.m40000644000000000000000000000013213135434036015376 xustar0030 mtime=1500919838.049981805 30 atime=1500919917.623315139 30 ctime=1500919913.229981805 denemo-2.2.0/build/wint_t.m40000644000175000017500000000153113135434036017247 0ustar00jjbenhamjjbenham00000000000000# wint_t.m4 serial 1 (gettext-0.12) dnl Copyright (C) 2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl Test whether has the 'wint_t' type. dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_WINT_T], [ AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, [AC_TRY_COMPILE([#include wint_t foo = (wchar_t)'\0';], , gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) if test $gt_cv_c_wint_t = yes; then AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/glibc21.m40000644000000000000000000000013213135434036015315 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.623315139 30 ctime=1500919913.213315139 denemo-2.2.0/build/glibc21.m40000644000175000017500000000172713135434036017175 0ustar00jjbenhamjjbenham00000000000000# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. # Test for the GNU C Library, version 2.1 or newer. # From Bruno Haible. AC_DEFUN([jm_GLIBC21], [ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, ac_cv_gnu_library_2_1, [AC_EGREP_CPP([Lucky GNU user], [ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif ], ac_cv_gnu_library_2_1=yes, ac_cv_gnu_library_2_1=no) ] ) AC_SUBST(GLIBC21) GLIBC21="$ac_cv_gnu_library_2_1" ] ) denemo-2.2.0/build/PaxHeaders.19168/ChangeLog0000644000000000000000000000013213135434036015402 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.629981805 30 ctime=1500919913.206648472 denemo-2.2.0/build/ChangeLog0000644000175000017500000000553213135434036017260 0ustar00jjbenhamjjbenham000000000000002006-01-19 gettextize * gettext.m4: Upgrade to gettext-0.14.4. * glibc2.m4: New file, from gettext-0.14.4. * Makefile.am (EXTRA_DIST): Add the new files. 2005-04-08 gettextize * codeset.m4: Upgrade to gettext-0.14.3. * gettext.m4: Upgrade to gettext-0.14.3. * glibc2.m4: New file, from gettext-0.14.3. * glibc21.m4: Upgrade to gettext-0.14.3. * iconv.m4: Upgrade to gettext-0.14.3. * intdiv0.m4: Upgrade to gettext-0.14.3. * intmax.m4: Upgrade to gettext-0.14.3. * inttypes.m4: Upgrade to gettext-0.14.3. * inttypes_h.m4: Upgrade to gettext-0.14.3. * inttypes-pri.m4: Upgrade to gettext-0.14.3. * isc-posix.m4: Upgrade to gettext-0.14.3. * lcmessage.m4: Upgrade to gettext-0.14.3. * lib-ld.m4: Upgrade to gettext-0.14.3. * lib-link.m4: Upgrade to gettext-0.14.3. * lib-prefix.m4: Upgrade to gettext-0.14.3. * longdouble.m4: Upgrade to gettext-0.14.3. * longlong.m4: Upgrade to gettext-0.14.3. * nls.m4: Upgrade to gettext-0.14.3. * po.m4: Upgrade to gettext-0.14.3. * printf-posix.m4: Upgrade to gettext-0.14.3. * progtest.m4: Upgrade to gettext-0.14.3. * signed.m4: Upgrade to gettext-0.14.3. * size_max.m4: Upgrade to gettext-0.14.3. * stdint_h.m4: Upgrade to gettext-0.14.3. * uintmax_t.m4: Upgrade to gettext-0.14.3. * ulonglong.m4: Upgrade to gettext-0.14.3. * wchar_t.m4: Upgrade to gettext-0.14.3. * wint_t.m4: Upgrade to gettext-0.14.3. * xsize.m4: Upgrade to gettext-0.14.3. * Makefile.am (EXTRA_DIST): Add the new files. 2005-02-10 gettextize * codeset.m4: New file, from gettext-0.14.1. * gettext.m4: New file, from gettext-0.14.1. * glibc21.m4: New file, from gettext-0.14.1. * iconv.m4: New file, from gettext-0.14.1. * intdiv0.m4: New file, from gettext-0.14.1. * intmax.m4: New file, from gettext-0.14.1. * inttypes.m4: New file, from gettext-0.14.1. * inttypes_h.m4: New file, from gettext-0.14.1. * inttypes-pri.m4: New file, from gettext-0.14.1. * isc-posix.m4: New file, from gettext-0.14.1. * lcmessage.m4: New file, from gettext-0.14.1. * lib-ld.m4: New file, from gettext-0.14.1. * lib-link.m4: New file, from gettext-0.14.1. * lib-prefix.m4: New file, from gettext-0.14.1. * longdouble.m4: New file, from gettext-0.14.1. * longlong.m4: New file, from gettext-0.14.1. * nls.m4: New file, from gettext-0.14.1. * po.m4: New file, from gettext-0.14.1. * printf-posix.m4: New file, from gettext-0.14.1. * progtest.m4: New file, from gettext-0.14.1. * signed.m4: New file, from gettext-0.14.1. * size_max.m4: New file, from gettext-0.14.1. * stdint_h.m4: New file, from gettext-0.14.1. * uintmax_t.m4: New file, from gettext-0.14.1. * ulonglong.m4: New file, from gettext-0.14.1. * wchar_t.m4: New file, from gettext-0.14.1. * wint_t.m4: New file, from gettext-0.14.1. * xsize.m4: New file, from gettext-0.14.1. * Makefile.am: New file. denemo-2.2.0/build/PaxHeaders.19168/size_max.m40000644000000000000000000000013213135434036015711 xustar0030 mtime=1500919838.049981805 30 atime=1500919917.629981805 30 ctime=1500919913.226648472 denemo-2.2.0/build/size_max.m40000644000175000017500000000407213135434036017565 0ustar00jjbenhamjjbenham00000000000000# size_max.m4 serial 2 dnl Copyright (C) 2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([gl_SIZE_MAX], [ AC_CHECK_HEADERS(stdint.h) dnl First test whether the system already has SIZE_MAX. AC_MSG_CHECKING([for SIZE_MAX]) result= AC_EGREP_CPP([Found it], [ #include #if HAVE_STDINT_H #include #endif #ifdef SIZE_MAX Found it #endif ], result=yes) if test -z "$result"; then dnl Define it ourselves. Here we assume that the type 'size_t' is not wider dnl than the type 'unsigned long'. dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', dnl which is guaranteed to work from LONG_MIN to LONG_MAX. _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, [#include ], result=?) _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, [#include ], result=?) _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, [#include ], result=?) if test "$fits_in_uint" = 1; then dnl Even though SIZE_MAX fits in an unsigned int, it must be of type dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. AC_TRY_COMPILE([#include extern size_t foo; extern unsigned long foo; ], [], fits_in_uint=0) fi if test -z "$result"; then if test "$fits_in_uint" = 1; then result="$res_hi$res_lo"U else result="$res_hi$res_lo"UL fi else dnl Shouldn't happen, but who knows... result='~(size_t)0' fi fi AC_MSG_RESULT([$result]) if test "$result" != yes; then AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], [Define as the maximum value of type 'size_t', if the system doesn't define it.]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/signed.m40000644000000000000000000000013213135434036015343 xustar0030 mtime=1500919838.049981805 30 atime=1500919917.629981805 30 ctime=1500919913.223315139 denemo-2.2.0/build/signed.m40000644000175000017500000000140113135434036017210 0ustar00jjbenhamjjbenham00000000000000# signed.m4 serial 1 (gettext-0.10.40) dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([bh_C_SIGNED], [ AC_CACHE_CHECK([for signed], bh_cv_c_signed, [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)]) if test $bh_cv_c_signed = no; then AC_DEFINE(signed, , [Define to empty if the C compiler doesn't support this keyword.]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/po.m40000644000000000000000000000013213135434036014510 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.643315139 30 ctime=1500919912.846648473 denemo-2.2.0/build/po.m40000644000175000017500000004265213135434036016372 0ustar00jjbenhamjjbenham00000000000000# po.m4 serial 3 (gettext-0.14) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AM_NLS])dnl dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU msgfmt. if test "$GMSGFMT" != ":"; then dnl If it is no GNU msgfmt we define it as : so that the dnl Makefiles still can work. if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` AC_MSG_RESULT( [found $GMSGFMT program is not GNU msgfmt; ignore it]) GMSGFMT=":" fi fi dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is no GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po fi AC_OUTPUT_COMMANDS([ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" <> i | ullmax / ull | ullmax % ull;], ac_cv_type_unsigned_long_long=yes, ac_cv_type_unsigned_long_long=no)]) if test $ac_cv_type_unsigned_long_long = yes; then AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, [Define if you have the 'unsigned long long' type.]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/glib-tap.mk0000644000000000000000000000013213135434036015660 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.656648472 30 ctime=1500919913.233315139 denemo-2.2.0/build/glib-tap.mk0000644000175000017500000001445013135434036017535 0ustar00jjbenhamjjbenham00000000000000# GLIB - Library of useful C routines TESTS_ENVIRONMENT= \ G_TEST_SRCDIR="$(abs_srcdir)" \ G_TEST_BUILDDIR="$(abs_builddir)" \ G_DEBUG=gc-friendly \ MALLOC_CHECK_=2 \ MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/tap-driver.sh LOG_COMPILER = $(top_srcdir)/build/tap-test NULL = # initialize variables for unconditional += appending BUILT_SOURCES = BUILT_EXTRA_DIST = CLEANFILES = *.log *.trs DISTCLEANFILES = MAINTAINERCLEANFILES = EXTRA_DIST = TESTS = installed_test_LTLIBRARIES = installed_test_PROGRAMS = installed_test_SCRIPTS = installed_testdir = nobase_installed_test_DATA = installed_test_metadir = noinst_LTLIBRARIES = noinst_PROGRAMS = noinst_SCRIPTS = noinst_DATA = check_LTLIBRARIES = check_PROGRAMS = check_SCRIPTS = check_DATA = # We support a fairly large range of possible variables. It is expected that all types of files in a test suite # will belong in exactly one of the following variables. # # First, we support the usual automake suffixes, but in lowercase, with the customary meaning: # # test_programs, test_scripts, test_data, test_ltlibraries # # The above are used to list files that are involved in both uninstalled and installed testing. The # test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. # Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is # installed in the same way as it appears in the package layout. # # In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', # like so: # # installed_test_programs, uninstalled_test_programs # installed_test_scripts, uninstalled_test_scripts # installed_test_data, uninstalled_test_data # installed_test_ltlibraries, uninstalled_test_ltlibraries # # Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts # that should not themselves be run as testcases (but exist to be used from other testcases): # # test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs # test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts # # Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data # file automatically end up in the tarball. # # dist_test_scripts, dist_test_data, dist_test_extra_scripts # dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts # dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts # # Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the # standard automake convention of not disting programs scripts or data by default. # # test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted # variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under # gtester. That's a bit strange for scripts, but it's possible. TESTS += $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ $(dist_test_scripts) $(dist_uninstalled_test_scripts) # Note: build even the installed-only targets during 'make check' to ensure that they still work. # We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to # prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were # filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) $(installed_test_scripts) \ $(test_extra_scripts) $(uninstalled_test_extra_scripts) $(installed_test_extra_scripts) all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) all_test_scripts += $(all_dist_test_scripts) EXTRA_DIST += $(all_dist_test_scripts) all_test_data = $(test_data) $(uninstalled_test_data) $(installed_test_data) all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) all_test_data += $(all_dist_test_data) EXTRA_DIST += $(all_dist_test_data) all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) if ENABLE_ALWAYS_BUILD_TESTS noinst_LTLIBRARIES += $(all_test_ltlibs) noinst_PROGRAMS += $(all_test_programs) noinst_SCRIPTS += $(all_test_scripts) noinst_DATA += $(all_test_data) else check_LTLIBRARIES += $(all_test_ltlibs) check_PROGRAMS += $(all_test_programs) check_SCRIPTS += $(all_test_scripts) check_DATA += $(all_test_data) endif if ENABLE_INSTALLED_TESTS installed_test_PROGRAMS += $(test_programs) $(installed_test_programs) \ $(test_extra_programs) $(installed_test_extra_programs) installed_test_SCRIPTS += $(test_scripts) $(installed_test_scripts) \ $(test_extra_scripts) $(test_installed_extra_scripts) installed_test_SCRIPTS += $(dist_test_scripts) $(dist_test_extra_scripts) \ $(dist_installed_test_scripts) $(dist_installed_test_extra_scripts) nobase_installed_test_DATA += $(test_data) $(installed_test_data) nobase_installed_test_DATA += $(dist_test_data) $(dist_installed_test_data) installed_test_LTLIBRARIES += $(test_ltlibraries) $(installed_test_ltlibraries) installed_testcases = $(test_programs) $(installed_test_programs) \ $(test_scripts) $(installed_test_scripts) \ $(dist_test_scripts) $(dist_installed_test_scripts) installed_test_meta_DATA = $(installed_testcases:=.test) %.test: %$(EXEEXT) Makefile $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ echo 'Type=session' >> $@.tmp; \ echo 'Exec=$(installed_testdir)/$<' >> $@.tmp; \ mv $@.tmp $@) CLEANFILES += $(installed_test_meta_DATA) endif denemo-2.2.0/build/PaxHeaders.19168/glibc2.m40000644000000000000000000000013213135434036015234 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.663315139 30 ctime=1500919913.209981805 denemo-2.2.0/build/glibc2.m40000644000175000017500000000135413135434036017110 0ustar00jjbenhamjjbenham00000000000000# glibc2.m4 serial 1 dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Test for the GNU C Library, version 2.0 or newer. # From Bruno Haible. AC_DEFUN([gt_GLIBC2], [ AC_CACHE_CHECK(whether we are using the GNU C Library 2 or newer, ac_cv_gnu_library_2, [AC_EGREP_CPP([Lucky GNU user], [ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ >= 2) Lucky GNU user #endif #endif ], ac_cv_gnu_library_2=yes, ac_cv_gnu_library_2=no) ] ) AC_SUBST(GLIBC2) GLIBC2="$ac_cv_gnu_library_2" ] ) denemo-2.2.0/build/PaxHeaders.19168/as-compiler-flag.m40000644000000000000000000000013213135434036017214 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.663315139 30 ctime=1500919912.833315139 denemo-2.2.0/build/as-compiler-flag.m40000644000175000017500000000273613135434036021075 0ustar00jjbenhamjjbenham00000000000000dnl as-compiler-flag.m4 0.1.0 dnl autostars m4 macro for detection of compiler flags dnl David Schleef dnl $Id: as-compiler-flag.m4,v 1.1 2005/12/15 23:35:19 ds Exp $ dnl AS_COMPILER_FLAG(CFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED]) dnl Tries to compile with the given CFLAGS. dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags, dnl and ACTION-IF-NOT-ACCEPTED otherwise. AC_DEFUN([AS_COMPILER_FLAG], [ AC_MSG_CHECKING([to see if compiler understands $1]) save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $1" AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no]) CFLAGS="$save_CFLAGS" if test "X$flag_ok" = Xyes ; then m4_ifvaln([$2],[$2]) true else m4_ifvaln([$3],[$3]) true fi AC_MSG_RESULT([$flag_ok]) ]) dnl AS_COMPILER_FLAGS(VAR, FLAGS) dnl Tries to compile with the given CFLAGS. AC_DEFUN([AS_COMPILER_FLAGS], [ list=$2 flags_supported="" flags_unsupported="" AC_MSG_CHECKING([for supported compiler flags]) for each in $list do save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $each" AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no]) CFLAGS="$save_CFLAGS" if test "X$flag_ok" = Xyes ; then flags_supported="$flags_supported $each" else flags_unsupported="$flags_unsupported $each" fi done AC_MSG_RESULT([$flags_supported]) if test "X$flags_unsupported" != X ; then AC_MSG_WARN([unsupported compiler flags: $flags_unsupported]) fi $1="$$1 $flags_supported" ]) denemo-2.2.0/build/PaxHeaders.19168/gcov.m40000644000000000000000000000013213135434036015030 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.663315139 30 ctime=1500919912.836648472 denemo-2.2.0/build/gcov.m40000644000175000017500000000243713135434036016707 0ustar00jjbenhamjjbenham00000000000000# Checks for existence of coverage tools: # * gcov # # Sets ac_cv_check_gcov to yes if tooling is present # and reports the executables to the variables LCOV, GCOVR and GENHTML. AC_DEFUN([AC_TDD_GCOV], [ AC_ARG_ENABLE(gcov, AS_HELP_STRING([--enable-gcov], [enable coverage testing with gcov]), [use_gcov=$enableval], [use_gcov=no]) AM_CONDITIONAL(HAVE_GCOV, test "x$use_gcov" = "xyes") if test "x$use_gcov" = "xyes"; then # we need gcc: if test "$GCC" != "yes"; then AC_MSG_ERROR([GCC is required for --enable-gcov]) fi # Check if ccache is being used AC_CHECK_PROG(SHTOOL, shtool, shtool) if test "$SHTOOL"; then AS_CASE([`$SHTOOL path $CC`], [*ccache*], [gcc_ccache=yes], [gcc_ccache=no]) fi if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.]) fi # Remove all optimization flags from CFLAGS changequote({,}) CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'` changequote([,]) # Add the special gcc flags CFLAGS="$CFLAGS --coverage" CXXFLAGS="$CXXFLAGS --coverage" LDFLAGS="$LDFLAGS --coverage" fi ]) # AC_TDD_GCOV denemo-2.2.0/build/PaxHeaders.19168/codeset.m40000644000000000000000000000013213135434036015520 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.676648472 30 ctime=1500919913.209981805 denemo-2.2.0/build/codeset.m40000644000175000017500000000157613135434036017402 0ustar00jjbenhamjjbenham00000000000000# codeset.m4 serial AM1 (gettext-0.10.40) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_LANGINFO_CODESET], [ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, [AC_TRY_LINK([#include ], [char* cs = nl_langinfo(CODESET);], am_cv_langinfo_codeset=yes, am_cv_langinfo_codeset=no) ]) if test $am_cv_langinfo_codeset = yes; then AC_DEFINE(HAVE_LANGINFO_CODESET, 1, [Define if you have and nl_langinfo(CODESET).]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/alsa.m40000644000000000000000000000013213135434036015012 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.679981805 30 ctime=1500919913.209981805 denemo-2.2.0/build/alsa.m40000644000175000017500000001036713135434036016672 0ustar00jjbenhamjjbenham00000000000000dnl Configure Paths for Alsa dnl Some modifications by Richard Boulton dnl Christopher Lansdown dnl Jaroslav Kysela dnl Last modification: $Id: alsa.m4,v 1.1 2007/01/24 20:08:31 atee Exp $ dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for libasound, and define ALSA_CFLAGS and ALSA_LIBS as appropriate. dnl enables arguments --with-alsa-prefix= dnl --with-alsa-enc-prefix= dnl --disable-alsatest dnl dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified, dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result. dnl AC_DEFUN([AM_PATH_ALSA], [dnl Save the original CFLAGS, LDFLAGS, and LIBS alsa_save_CFLAGS="$CFLAGS" alsa_save_LDFLAGS="$LDFLAGS" alsa_save_LIBS="$LIBS" alsa_found=yes dnl dnl Get the cflags and libraries for alsa dnl AC_ARG_WITH(alsa-prefix, [ --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional)], [alsa_prefix="$withval"], [alsa_prefix=""]) AC_ARG_WITH(alsa-inc-prefix, [ --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional)], [alsa_inc_prefix="$withval"], [alsa_inc_prefix=""]) dnl FIXME: this is not yet implemented AC_ARG_ENABLE(alsatest, [ --disable-alsatest Do not try to compile and run a test Alsa program], [enable_alsatest="$enableval"], [enable_alsatest=yes]) dnl Add any special include directories AC_MSG_CHECKING(for ALSA CFLAGS) if test "$alsa_inc_prefix" != "" ; then ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix" CFLAGS="$CFLAGS -I$alsa_inc_prefix" fi AC_MSG_RESULT($ALSA_CFLAGS) dnl add any special lib dirs AC_MSG_CHECKING(for ALSA LDFLAGS) if test "$alsa_prefix" != "" ; then ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix" LDFLAGS="$LDFLAGS $ALSA_LIBS" fi dnl add the alsa library ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread" LIBS="$ALSA_LIBS $LIBS" AC_MSG_RESULT($ALSA_LIBS) dnl Check for a working version of libasound that is of the right version. min_alsa_version=ifelse([$1], ,0.1.1,$1) AC_MSG_CHECKING(for libasound headers version >= $min_alsa_version) no_alsa="" alsa_min_major_version=`echo $min_alsa_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` alsa_min_minor_version=`echo $min_alsa_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` alsa_min_micro_version=`echo $min_alsa_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` AC_LANG_SAVE AC_LANG_C AC_TRY_COMPILE([ #include ], [ /* ensure backward compatibility */ #if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR) #define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR #endif #if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR) #define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR #endif #if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR) #define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR #endif # if(SND_LIB_MAJOR > $alsa_min_major_version) exit(0); # else # if(SND_LIB_MAJOR < $alsa_min_major_version) # error not present # endif # if(SND_LIB_MINOR > $alsa_min_minor_version) exit(0); # else # if(SND_LIB_MINOR < $alsa_min_minor_version) # error not present # endif # if(SND_LIB_SUBMINOR < $alsa_min_micro_version) # error not present # endif # endif # endif exit(0); ], [AC_MSG_RESULT(found.)], [AC_MSG_RESULT(not present.) ifelse([$3], , [AC_MSG_ERROR(Sufficiently new version of libasound not found.)]) alsa_found=no] ) AC_LANG_RESTORE dnl Now that we know that we have the right version, let's see if we have the library and not just the headers. if test "x$enable_alsatest" = "xyes"; then AC_CHECK_LIB([asound], [snd_ctl_open],, [ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)]) alsa_found=no] ) fi if test "x$alsa_found" = "xyes" ; then ifelse([$2], , :, [$2]) LIBS=`echo $LIBS | sed 's/-lasound//g'` LIBS=`echo $LIBS | sed 's/ //'` LIBS="-lasound $LIBS" fi if test "x$alsa_found" = "xno" ; then ifelse([$3], , :, [$3]) CFLAGS="$alsa_save_CFLAGS" LDFLAGS="$alsa_save_LDFLAGS" LIBS="$alsa_save_LIBS" ALSA_CFLAGS="" ALSA_LIBS="" fi dnl That should be it. Now just export out symbols: AC_SUBST(ALSA_CFLAGS) AC_SUBST(ALSA_LIBS) ]) denemo-2.2.0/build/PaxHeaders.19168/iconv.m40000644000000000000000000000013213135434036015210 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.679981805 30 ctime=1500919912.839981805 denemo-2.2.0/build/iconv.m40000644000175000017500000000665313135434036017073 0ustar00jjbenhamjjbenham00000000000000# iconv.m4 serial AM4 (gettext-0.11.3) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST(LIBICONV) AC_SUBST(LTLIBICONV) ]) AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/lib-prefix.m40000644000000000000000000000013213135434036016133 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.686648473 30 ctime=1500919912.843315139 denemo-2.2.0/build/lib-prefix.m40000644000175000017500000001250713135434036020011 0ustar00jjbenhamjjbenham00000000000000# lib-prefix.m4 serial 3 (gettext-0.13) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) denemo-2.2.0/build/PaxHeaders.19168/lib-ld.m40000644000000000000000000000013213135434036015235 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.696648472 30 ctime=1500919912.843315139 denemo-2.2.0/build/lib-ld.m40000644000175000017500000000675613135434036017124 0ustar00jjbenhamjjbenham00000000000000# lib-ld.m4 serial 3 (gettext-0.13) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) denemo-2.2.0/build/PaxHeaders.19168/lib-link.m40000644000000000000000000000013213135434036015573 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.696648472 30 ctime=1500919912.843315139 denemo-2.2.0/build/lib-link.m40000644000175000017500000005534313135434036017456 0ustar00jjbenhamjjbenham00000000000000# lib-link.m4 serial 4 (gettext-0.12) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, dnl hardcode_direct, hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE(rpath, [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib$1-prefix], [ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib$1-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) denemo-2.2.0/build/PaxHeaders.19168/Makefile.am0000644000000000000000000000013213135434036015664 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.729981805 30 ctime=1500919913.206648472 denemo-2.2.0/build/Makefile.am0000644000175000017500000000067313135434036017543 0ustar00jjbenhamjjbenham00000000000000EXTRA_DIST = glibc2.m4 alsa.m4 codeset.m4 gettext.m4 glibc21.m4 iconv.m4 intdiv0.m4 intmax.m4 inttypes.m4 inttypes_h.m4 inttypes-pri.m4 isc-posix.m4 lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 longdouble.m4 longlong.m4 nls.m4 po.m4 printf-posix.m4 progtest.m4 signed.m4 size_max.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4 wchar_t.m4 wint_t.m4 xsize.m4 binreloc.m4 as-compiler-flag.m4 glib-tap.mk glibtests.m4 Makefile.am.gitignore tap-test denemo-2.2.0/build/PaxHeaders.19168/inttypes-pri.m40000644000000000000000000000013213135434036016541 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.729981805 30 ctime=1500919913.216648472 denemo-2.2.0/build/inttypes-pri.m40000644000175000017500000000222713135434036020415 0ustar00jjbenhamjjbenham00000000000000# inttypes-pri.m4 serial 1 (gettext-0.11.4) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. # Define PRI_MACROS_BROKEN if exists and defines the PRI* # macros to non-string values. This is the case on AIX 4.3.3. AC_DEFUN([gt_INTTYPES_PRI], [ AC_REQUIRE([gt_HEADER_INTTYPES_H]) if test $gt_cv_header_inttypes_h = yes; then AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], gt_cv_inttypes_pri_broken, [ AC_TRY_COMPILE([#include #ifdef PRId32 char *p = PRId32; #endif ], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) ]) fi if test "$gt_cv_inttypes_pri_broken" = yes; then AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, [Define if exists and defines unusable PRI* macros.]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/xsize.m40000644000000000000000000000013213135434036015234 xustar0030 mtime=1500919838.049981805 30 atime=1500919917.729981805 30 ctime=1500919913.233315139 denemo-2.2.0/build/xsize.m40000644000175000017500000000103113135434036017100 0ustar00jjbenhamjjbenham00000000000000# xsize.m4 serial 2 dnl Copyright (C) 2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. AC_DEFUN([gl_XSIZE], [ dnl Prerequisites of lib/xsize.h. AC_REQUIRE([gl_SIZE_MAX]) AC_CHECK_HEADERS(stdint.h) ]) denemo-2.2.0/build/PaxHeaders.19168/glibtests.m40000644000000000000000000000013213135434036016072 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.729981805 30 ctime=1500919912.839981805 denemo-2.2.0/build/glibtests.m40000644000175000017500000000243413135434036017746 0ustar00jjbenhamjjbenham00000000000000dnl GLIB_TESTS dnl AC_DEFUN([GLIB_TESTS], [ AC_ARG_ENABLE(installed-tests, AS_HELP_STRING([--enable-installed-tests], [Enable installation of some test cases]), [case ${enableval} in yes) ENABLE_INSTALLED_TESTS="1" ;; no) ENABLE_INSTALLED_TESTS="" ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-installed-tests]) ;; esac]) AM_CONDITIONAL([ENABLE_INSTALLED_TESTS], test "$ENABLE_INSTALLED_TESTS" = "1") AC_ARG_ENABLE(always-build-tests, AS_HELP_STRING([--enable-always-build-tests], [Enable always building tests during 'make all']), [case ${enableval} in yes) ENABLE_ALWAYS_BUILD_TESTS="1" ;; no) ENABLE_ALWAYS_BUILD_TESTS="" ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-always-build-tests]) ;; esac]) AM_CONDITIONAL([ENABLE_ALWAYS_BUILD_TESTS], test "$ENABLE_ALWAYS_BUILD_TESTS" = "1") if test "$ENABLE_INSTALLED_TESTS" = "1"; then AC_SUBST(installed_test_metadir, [${datadir}/installed-tests/]AC_PACKAGE_NAME) AC_SUBST(installed_testdir, [${libexecdir}/installed-tests/]AC_PACKAGE_NAME) fi ]) denemo-2.2.0/build/PaxHeaders.19168/gettext.m40000644000000000000000000000013213135434036015556 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.739981805 30 ctime=1500919912.836648472 denemo-2.2.0/build/gettext.m40000644000175000017500000004513013135434036017432 0ustar00jjbenhamjjbenham00000000000000# gettext.m4 serial 28 (gettext-0.13) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define(gt_included_intl, ifelse([$1], [external], [no], [yes])) define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Set USE_NLS. AM_NLS ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. dnl Add a version number to the cache macros. define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, [AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], gt_cv_func_gnugettext_libc=yes, gt_cv_func_gnugettext_libc=no)]) if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], gt_cv_func_gnugettext_libintl, [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], gt_cv_func_gnugettext_libintl=yes, gt_cv_func_gnugettext_libintl=no) dnl Now see whether libintl exists and depends on libiconv. if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext_libintl=yes ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if test "$gt_cv_func_gnugettext_libc" = "yes" \ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATOBJEXT) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) dnl For backward compatibility. Some Makefiles may be using this. if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST(INTLOBJS) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST(INTLLIBS) dnl Make all documented variables known to autoconf. AC_SUBST(LIBINTL) AC_SUBST(LTLIBINTL) AC_SUBST(POSUB) ]) dnl Checks for all prerequisites of the intl subdirectory, dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. AC_DEFUN([AM_INTL_SUBDIR], [ AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_ISC_POSIX])dnl AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_C_CONST])dnl AC_REQUIRE([bh_C_SIGNED])dnl AC_REQUIRE([AC_C_INLINE])dnl AC_REQUIRE([AC_TYPE_OFF_T])dnl AC_REQUIRE([AC_TYPE_SIZE_T])dnl AC_REQUIRE([jm_AC_TYPE_LONG_LONG])dnl AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl AC_REQUIRE([gt_TYPE_WCHAR_T])dnl AC_REQUIRE([gt_TYPE_WINT_T])dnl AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) AC_REQUIRE([jm_AC_HEADER_STDINT_H]) AC_REQUIRE([gt_TYPE_INTMAX_T]) AC_REQUIRE([gt_PRINTF_POSIX]) AC_REQUIRE([AC_FUNC_ALLOCA])dnl AC_REQUIRE([AC_FUNC_MMAP])dnl AC_REQUIRE([jm_GLIBC21])dnl AC_REQUIRE([gt_INTDIV0])dnl AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl AC_REQUIRE([gt_INTTYPES_PRI])dnl AC_REQUIRE([gl_XSIZE])dnl AC_CHECK_TYPE([ptrdiff_t], , [AC_DEFINE([ptrdiff_t], [long], [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) ]) AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ __fsetlocking]) dnl Use the _snprintf function only if it is declared (because on NetBSD it dnl is defined as a weak alias of snprintf; we prefer to use the latter). gt_CHECK_DECL(_snprintf, [#include ]) gt_CHECK_DECL(_snwprintf, [#include ]) dnl Use the *_unlocked functions only if they are declared. dnl (because some of them were defined without being declared in Solaris dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built dnl on Solaris 2.5.1 to run on Solaris 2.6). dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. gt_CHECK_DECL(feof_unlocked, [#include ]) gt_CHECK_DECL(fgets_unlocked, [#include ]) gt_CHECK_DECL(getc_unlocked, [#include ]) case $gt_cv_func_printf_posix in *yes) HAVE_POSIX_PRINTF=1 ;; *) HAVE_POSIX_PRINTF=0 ;; esac AC_SUBST([HAVE_POSIX_PRINTF]) if test "$ac_cv_func_asprintf" = yes; then HAVE_ASPRINTF=1 else HAVE_ASPRINTF=0 fi AC_SUBST([HAVE_ASPRINTF]) if test "$ac_cv_func_snprintf" = yes; then HAVE_SNPRINTF=1 else HAVE_SNPRINTF=0 fi AC_SUBST([HAVE_SNPRINTF]) if test "$ac_cv_func_wprintf" = yes; then HAVE_WPRINTF=1 else HAVE_WPRINTF=0 fi AC_SUBST([HAVE_WPRINTF]) AM_ICONV AM_LANGINFO_CODESET if test $ac_cv_header_locale_h = yes; then AM_LC_MESSAGES fi dnl intl/plural.c is generated from intl/plural.y. It requires bison, dnl because plural.y uses bison specific features. It requires at least dnl bison-1.26 because earlier versions generate a plural.c that doesn't dnl compile. dnl bison is only needed for the maintainer (who touches plural.y). But in dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put dnl the rule in general Makefile. Now, some people carelessly touch the dnl files or have a broken "make" program, hence the plural.c rule will dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not dnl present or too old. AC_CHECK_PROGS([INTLBISON], [bison]) if test -z "$INTLBISON"; then ac_verc_fail=yes else dnl Found it, now check the version. AC_MSG_CHECKING([version of bison]) changequote(<<,>>)dnl ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) changequote([,])dnl ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac AC_MSG_RESULT([$ac_prog_version]) fi if test $ac_verc_fail = yes; then INTLBISON=: fi ]) dnl gt_CHECK_DECL(FUNC, INCLUDES) dnl Check whether a function is declared. AC_DEFUN([gt_CHECK_DECL], [ AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, [AC_TRY_COMPILE([$2], [ #ifndef $1 char *p = (char *) $1; #endif ], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) if test $ac_cv_have_decl_$1 = yes; then gt_value=1 else gt_value=0 fi AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) denemo-2.2.0/build/PaxHeaders.19168/inttypes.m40000644000000000000000000000013213135434036015751 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.763315139 30 ctime=1500919913.216648472 denemo-2.2.0/build/inttypes.m40000644000175000017500000000171713135434036017630 0ustar00jjbenhamjjbenham00000000000000# inttypes.m4 serial 1 (gettext-0.11.4) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_INTTYPES_H if exists and doesn't clash with # . AC_DEFUN([gt_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, [ AC_TRY_COMPILE( [#include #include ], [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) ]) if test $gt_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, [Define if exists and doesn't clash with .]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/stdint_h.m40000644000000000000000000000013213135434036015706 xustar0030 mtime=1500919838.049981805 30 atime=1500919917.763315139 30 ctime=1500919913.226648472 denemo-2.2.0/build/stdint_h.m40000644000175000017500000000205313135434036017557 0ustar00jjbenhamjjbenham00000000000000# stdint_h.m4 serial 3 (gettext-0.12) dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_STDINT_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([jm_AC_HEADER_STDINT_H], [ AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, [AC_TRY_COMPILE( [#include #include ], [uintmax_t i = (uintmax_t) -1;], jm_ac_cv_header_stdint_h=yes, jm_ac_cv_header_stdint_h=no)]) if test $jm_ac_cv_header_stdint_h = yes; then AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/isc-posix.m40000644000000000000000000000013213135434036016010 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.763315139 30 ctime=1500919913.219981805 denemo-2.2.0/build/isc-posix.m40000644000175000017500000000213313135434036017660 0ustar00jjbenhamjjbenham00000000000000# isc-posix.m4 serial 2 (gettext-0.11.2) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. # This file is not needed with autoconf-2.53 and newer. Remove it in 2005. # This test replaces the one in autoconf. # Currently this macro should have the same name as the autoconf macro # because gettext's gettext.m4 (distributed in the automake package) # still uses it. Otherwise, the use in gettext.m4 makes autoheader # give these diagnostics: # configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX # configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX undefine([AC_ISC_POSIX]) AC_DEFUN([AC_ISC_POSIX], [ dnl This test replaces the obsolescent AC_ISC_POSIX kludge. AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) ] ) denemo-2.2.0/build/PaxHeaders.19168/longdouble.m40000644000000000000000000000013213135434036016224 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.773315139 30 ctime=1500919913.219981805 denemo-2.2.0/build/longdouble.m40000644000175000017500000000230013135434036020070 0ustar00jjbenhamjjbenham00000000000000# longdouble.m4 serial 1 (gettext-0.12) dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl Test whether the compiler supports the 'long double' type. dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_LONGDOUBLE], [ AC_CACHE_CHECK([for long double], gt_cv_c_long_double, [if test "$GCC" = yes; then gt_cv_c_long_double=yes else AC_TRY_COMPILE([ /* The Stardent Vistra knows sizeof(long double), but does not support it. */ long double foo = 0.0; /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ int array [2*(sizeof(long double) >= sizeof(double)) - 1]; ], , gt_cv_c_long_double=yes, gt_cv_c_long_double=no) fi]) if test $gt_cv_c_long_double = yes; then AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/wchar_t.m40000644000000000000000000000013213135434036015521 xustar0030 mtime=1500919838.049981805 30 atime=1500919917.773315139 30 ctime=1500919913.229981805 denemo-2.2.0/build/wchar_t.m40000644000175000017500000000155313135434036017376 0ustar00jjbenhamjjbenham00000000000000# wchar_t.m4 serial 1 (gettext-0.12) dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl Test whether has the 'wchar_t' type. dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_WCHAR_T], [ AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, [AC_TRY_COMPILE([#include wchar_t foo = (wchar_t)'\0';], , gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) if test $gt_cv_c_wchar_t = yes; then AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/progtest.m40000644000000000000000000000013213135434036015741 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.773315139 30 ctime=1500919912.849981805 denemo-2.2.0/build/progtest.m40000644000175000017500000000563413135434036017622 0ustar00jjbenhamjjbenham00000000000000# progtest.m4 serial 3 (gettext-0.12) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) denemo-2.2.0/build/PaxHeaders.19168/tap-test0000644000000000000000000000013213135434036015314 xustar0030 mtime=1500919838.049981805 30 atime=1500919917.783315139 30 ctime=1500919913.236648472 denemo-2.2.0/build/tap-test0000755000175000017500000000012413135434036017165 0ustar00jjbenhamjjbenham00000000000000#! /bin/sh # run a GTest in tap mode. The test binary is passed as $1 $1 -k --tap denemo-2.2.0/build/PaxHeaders.19168/inttypes_h.m40000644000000000000000000000013213135434036016260 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.783315139 30 ctime=1500919913.216648472 denemo-2.2.0/build/inttypes_h.m40000644000175000017500000000210313135434036020125 0ustar00jjbenhamjjbenham00000000000000# inttypes_h.m4 serial 5 (gettext-0.12) dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([jm_AC_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, [AC_TRY_COMPILE( [#include #include ], [uintmax_t i = (uintmax_t) -1;], jm_ac_cv_header_inttypes_h=yes, jm_ac_cv_header_inttypes_h=no)]) if test $jm_ac_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/Makefile.in0000644000000000000000000000013213135434044015674 xustar0030 mtime=1500919844.099981805 30 atime=1500919917.783315139 30 ctime=1500919913.206648472 denemo-2.2.0/build/Makefile.in0000644000175000017500000003715213135434044017555 0ustar00jjbenhamjjbenham00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = build DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs ChangeLog ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/as-compiler-flag.m4 \ $(top_srcdir)/build/binreloc.m4 $(top_srcdir)/build/gcov.m4 \ $(top_srcdir)/build/gettext.m4 \ $(top_srcdir)/build/glibtests.m4 \ $(top_srcdir)/build/gtk-doc.m4 $(top_srcdir)/build/iconv.m4 \ $(top_srcdir)/build/lib-ld.m4 $(top_srcdir)/build/lib-link.m4 \ $(top_srcdir)/build/lib-prefix.m4 $(top_srcdir)/build/nls.m4 \ $(top_srcdir)/build/po.m4 $(top_srcdir)/build/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = @pkgdatadir@ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ ALSA_CFLAGS = @ALSA_CFLAGS@ ALSA_LIBS = @ALSA_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ BINRELOC_LIBS = @BINRELOC_LIBS@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EVINCE_2_0_CFLAGS = @EVINCE_2_0_CFLAGS@ EVINCE_2_0_LIBS = @EVINCE_2_0_LIBS@ EVINCE_2_30_CFLAGS = @EVINCE_2_30_CFLAGS@ EVINCE_2_30_LIBS = @EVINCE_2_30_LIBS@ EVINCE_2_32_CFLAGS = @EVINCE_2_32_CFLAGS@ EVINCE_2_32_LIBS = @EVINCE_2_32_LIBS@ EVINCE_CFLAGS = @EVINCE_CFLAGS@ EVINCE_LIBS = @EVINCE_LIBS@ EXEEXT = @EXEEXT@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ FLUIDSYNTH_CFLAGS = @FLUIDSYNTH_CFLAGS@ FLUIDSYNTH_LIBS = @FLUIDSYNTH_LIBS@ FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_LIBS = @GTK2_LIBS@ GTK3_CFLAGS = @GTK3_CFLAGS@ GTK3_LIBS = @GTK3_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKSOURCEVIEW_CFLAGS = @GTKSOURCEVIEW_CFLAGS@ GTKSOURCEVIEW_LIBS = @GTKSOURCEVIEW_LIBS@ GUILE_1_8_CFLAGS = @GUILE_1_8_CFLAGS@ GUILE_1_8_LIBS = @GUILE_1_8_LIBS@ GUILE_2_CFLAGS = @GUILE_2_CFLAGS@ GUILE_2_LIBS = @GUILE_2_LIBS@ GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_EFFECTIVE_VERSION = @GUILE_EFFECTIVE_VERSION@ GUILE_LDFLAGS = @GUILE_LDFLAGS@ GUILE_LIBS = @GUILE_LIBS@ GUILE_LTLIBS = @GUILE_LTLIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBAUBIO_CFLAGS = @LIBAUBIO_CFLAGS@ LIBAUBIO_LIBS = @LIBAUBIO_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALEDIR = @LOCALEDIR@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_DATA_DIR = @PACKAGE_DATA_DIR@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ PORTAUDIO_CFLAGS = @PORTAUDIO_CFLAGS@ PORTAUDIO_LIBS = @PORTAUDIO_LIBS@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ RANLIB = @RANLIB@ RSVG_CFLAGS = @RSVG_CFLAGS@ RSVG_LIBS = @RSVG_LIBS@ RUBBERBAND_CFLAGS = @RUBBERBAND_CFLAGS@ RUBBERBAND_LIBS = @RUBBERBAND_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHTOOL = @SHTOOL@ SMF_CFLAGS = @SMF_CFLAGS@ SMF_LIBS = @SMF_LIBS@ SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ SNDFILE_LIBS = @SNDFILE_LIBS@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XML2_CFLAGS = @XML2_CFLAGS@ XML2_LIBS = @XML2_LIBS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ denemo_bin_path = @denemo_bin_path@ denemo_load_path = @denemo_load_path@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ installed_test_metadir = @installed_test_metadir@ installed_testdir = @installed_testdir@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = glibc2.m4 alsa.m4 codeset.m4 gettext.m4 glibc21.m4 iconv.m4 intdiv0.m4 intmax.m4 inttypes.m4 inttypes_h.m4 inttypes-pri.m4 isc-posix.m4 lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 longdouble.m4 longlong.m4 nls.m4 po.m4 printf-posix.m4 progtest.m4 signed.m4 size_max.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4 wchar_t.m4 wint_t.m4 xsize.m4 binreloc.m4 as-compiler-flag.m4 glib-tap.mk glibtests.m4 Makefile.am.gitignore tap-test all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign build/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign build/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: denemo-2.2.0/build/PaxHeaders.19168/lcmessage.m40000644000000000000000000000013213135434036016035 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.803315139 30 ctime=1500919913.219981805 denemo-2.2.0/build/lcmessage.m40000644000175000017500000000261613135434036017713 0ustar00jjbenhamjjbenham00000000000000# lcmessage.m4 serial 3 (gettext-0.11.3) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995. # Check whether LC_MESSAGES is available in . AC_DEFUN([AM_LC_MESSAGES], [ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/nls.m40000644000000000000000000000013213135434036014666 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.803315139 30 ctime=1500919912.846648473 denemo-2.2.0/build/nls.m40000644000175000017500000000350513135434036016542 0ustar00jjbenhamjjbenham00000000000000# nls.m4 serial 1 (gettext-0.12) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) ]) AC_DEFUN([AM_MKINSTALLDIRS], [ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but $(top_srcdir). dnl Try to locate it. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) ]) denemo-2.2.0/build/PaxHeaders.19168/binreloc.m40000644000000000000000000000013213135434036015667 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.803315139 30 ctime=1500919912.836648472 denemo-2.2.0/build/binreloc.m40000644000175000017500000000503713135434036017545 0ustar00jjbenhamjjbenham00000000000000# Check for binary relocation support. # Written by Hongli Lai # http://autopackage.org/ AC_DEFUN([AM_BINRELOC], [ AC_ARG_ENABLE(binreloc, [ --enable-binreloc compile with binary relocation support (default=enable when available)], enable_binreloc=$enableval,enable_binreloc=auto) AC_ARG_ENABLE(binreloc-threads, [ --enable-binreloc-threads compile binary relocation with threads support (default=yes)], enable_binreloc_threads=$enableval,enable_binreloc_threads=yes) BINRELOC_CFLAGS= BINRELOC_LIBS= if test "x$enable_binreloc" = "xauto"; then AC_CHECK_FILE([/proc/self/maps]) AC_CACHE_CHECK([whether everything is installed to the same prefix], [br_cv_valid_prefixes], [ if test "$bindir" = '${exec_prefix}/bin' -a "$sbindir" = '${exec_prefix}/sbin' -a \ "$datadir" = '${prefix}/share' -a "$libdir" = '${exec_prefix}/lib' -a \ "$libexecdir" = '${exec_prefix}/libexec' -a "$sysconfdir" = '${prefix}/etc' then br_cv_valid_prefixes=yes else br_cv_valid_prefixes=no fi ]) fi AC_CACHE_CHECK([whether binary relocation support should be enabled], [br_cv_binreloc], [if test "x$enable_binreloc" = "xyes"; then br_cv_binreloc=yes elif test "x$enable_binreloc" = "xauto"; then if test "x$br_cv_valid_prefixes" = "xyes" -a \ "x$ac_cv_file__proc_self_maps" = "xyes"; then br_cv_binreloc=yes else br_cv_binreloc=no fi else br_cv_binreloc=no fi]) if test "x$br_cv_binreloc" = "xyes"; then BINRELOC_CFLAGS="-DENABLE_BINRELOC" AC_DEFINE(ENABLE_BINRELOC,,[Use binary relocation?]) if test "x$enable_binreloc_threads" = "xyes"; then AC_CHECK_LIB([pthread], [pthread_getspecific]) fi AC_CACHE_CHECK([whether binary relocation should use threads], [br_cv_binreloc_threads], [if test "x$enable_binreloc_threads" = "xyes"; then if test "x$ac_cv_lib_pthread_pthread_getspecific" = "xyes"; then br_cv_binreloc_threads=yes else br_cv_binreloc_threads=no fi else br_cv_binreloc_threads=no fi]) if test "x$br_cv_binreloc_threads" = "xyes"; then BINRELOC_LIBS="-lpthread" AC_DEFINE(BR_PTHREAD,1,[Include pthread support for binary relocation?]) else BINRELOC_CFLAGS="$BINRELOC_CFLAGS -DBR_PTHREADS=0" AC_DEFINE(BR_PTHREAD,0,[Include pthread support for binary relocation?]) fi fi AC_SUBST(BINRELOC_CFLAGS) AC_SUBST(BINRELOC_LIBS) ]) denemo-2.2.0/build/PaxHeaders.19168/Makefile.am.gitignore0000644000000000000000000000013213135434036017652 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.813315139 30 ctime=1500919913.233315139 denemo-2.2.0/build/Makefile.am.gitignore0000644000175000017500000000162513135434036021527 0ustar00jjbenhamjjbenham00000000000000# From https://git.gnome.org/browse/json-glib/plain/build/autotools/Makefile.am.gitignore # this file should only be used in directories that generate test # or example binaries through noinst_PROGRAMS; it is *not* a full # generator of Git ignore files, and it's not meant to be used as # the top-level Git ignore file generator. GITIGNORE="$(builddir)/.gitignore" $(GITIGNORE): Makefile.am $(AM_V_GEN)( \ echo "*.o" ; \ echo ".gitignore" ; \ echo "*.trs" ; \ echo "*.log" ; \ ) > $(GITIGNORE) ; \ for p in $(noinst_PROGRAMS); do \ echo "/$$p" >> $(GITIGNORE) ; \ done ; \ for p in $(check_PROGRAMS); do \ echo "/$$p" >> $(GITIGNORE) ; \ done gitignore: $(GITIGNORE) gitignore-clean: $(QUIET_RM)rm -f $(GITIGNORE) .PHONY: gitignore gitignore-clean all: gitignore maintainer-clean: gitignore-clean dist-clean: gitignore-clean MAINTAINERCLEANFILES+=.gitignore DISTCLEANFILES+=.gitignoredenemo-2.2.0/build/PaxHeaders.19168/intdiv0.m40000644000000000000000000000013213135434036015447 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.813315139 30 ctime=1500919913.213315139 denemo-2.2.0/build/intdiv0.m40000644000175000017500000000356513135434036017331 0ustar00jjbenhamjjbenham00000000000000# intdiv0.m4 serial 1 (gettext-0.11.3) dnl Copyright (C) 2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([gt_INTDIV0], [ AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], gt_cv_int_divbyzero_sigfpe, [ AC_TRY_RUN([ #include #include static void #ifdef __cplusplus sigfpe_handler (int sig) #else sigfpe_handler (sig) int sig; #endif { /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ exit (sig != SIGFPE); } int x = 1; int y = 0; int z; int nan; int main () { signal (SIGFPE, sigfpe_handler); /* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ #if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) signal (SIGTRAP, sigfpe_handler); #endif /* Linux/SPARC yields signal SIGILL. */ #if defined (__sparc__) && defined (__linux__) signal (SIGILL, sigfpe_handler); #endif z = x / y; nan = y / y; exit (1); } ], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, [ # Guess based on the CPU. case "$host_cpu" in alpha* | i[34567]86 | m68k | s390*) gt_cv_int_divbyzero_sigfpe="guessing yes";; *) gt_cv_int_divbyzero_sigfpe="guessing no";; esac ]) ]) case "$gt_cv_int_divbyzero_sigfpe" in *yes) value=1;; *) value=0;; esac AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, [Define if integer division by zero raises signal SIGFPE.]) ]) denemo-2.2.0/build/PaxHeaders.19168/uintmax_t.m40000644000000000000000000000013213135434036016102 xustar0030 mtime=1500919838.049981805 30 atime=1500919917.813315139 30 ctime=1500919913.226648472 denemo-2.2.0/build/uintmax_t.m40000644000175000017500000000235013135434036017753 0ustar00jjbenhamjjbenham00000000000000# uintmax_t.m4 serial 7 (gettext-0.12) dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. AC_PREREQ(2.13) # Define uintmax_t to 'unsigned long' or 'unsigned long long' # if it is not already defined in or . AC_DEFUN([jm_AC_TYPE_UINTMAX_T], [ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) AC_REQUIRE([jm_AC_HEADER_STDINT_H]) if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) test $ac_cv_type_unsigned_long_long = yes \ && ac_type='unsigned long long' \ || ac_type='unsigned long' AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, [Define to unsigned long or unsigned long long if and don't define.]) else AC_DEFINE(HAVE_UINTMAX_T, 1, [Define if you have the 'uintmax_t' type in or .]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/longlong.m40000644000000000000000000000013213135434036015711 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.823315139 30 ctime=1500919913.223315139 denemo-2.2.0/build/longlong.m40000644000175000017500000000164313135434036017566 0ustar00jjbenhamjjbenham00000000000000# longlong.m4 serial 4 dnl Copyright (C) 1999-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_LONG_LONG if 'long long' works. AC_DEFUN([jm_AC_TYPE_LONG_LONG], [ AC_CACHE_CHECK([for long long], ac_cv_type_long_long, [AC_TRY_LINK([long long ll = 1LL; int i = 63;], [long long llmax = (long long) -1; return ll << i | ll >> i | llmax / ll | llmax % ll;], ac_cv_type_long_long=yes, ac_cv_type_long_long=no)]) if test $ac_cv_type_long_long = yes; then AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have the 'long long' type.]) fi ]) denemo-2.2.0/build/PaxHeaders.19168/gtk-doc.m40000644000000000000000000000013213135434036015422 xustar0030 mtime=1500919838.046648472 30 atime=1500919917.823315139 30 ctime=1500919912.839981805 denemo-2.2.0/build/gtk-doc.m40000644000175000017500000000477213135434036017305 0ustar00jjbenhamjjbenham00000000000000dnl -*- mode: autoconf -*- # serial 1 dnl Usage: dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) AC_DEFUN([GTK_DOC_CHECK], [ AC_REQUIRE([PKG_PROG_PKG_CONFIG]) AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first dnl check for tools we added during development AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check]) AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) dnl for overriding the documentation installation directory AC_ARG_WITH([html-dir], AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, [with_html_dir='${datadir}/gtk-doc/html']) HTML_DIR="$with_html_dir" AC_SUBST([HTML_DIR]) dnl enable/disable documentation building AC_ARG_ENABLE([gtk-doc], AS_HELP_STRING([--enable-gtk-doc], [use gtk-doc to build documentation [[default=no]]]),, [enable_gtk_doc=no]) if test x$enable_gtk_doc = xyes; then ifelse([$1],[], [PKG_CHECK_EXISTS([gtk-doc],, AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))], [PKG_CHECK_EXISTS([gtk-doc >= $1],, AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))]) dnl don't check for glib if we build glib if test "x$PACKAGE_NAME" != "xglib"; then dnl don't fail if someone does not have glib PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:]) fi fi AC_MSG_CHECKING([whether to build gtk-doc documentation]) AC_MSG_RESULT($enable_gtk_doc) dnl enable/disable output formats AC_ARG_ENABLE([gtk-doc-html], AS_HELP_STRING([--enable-gtk-doc-html], [build documentation in html format [[default=yes]]]),, [enable_gtk_doc_html=yes]) AC_ARG_ENABLE([gtk-doc-pdf], AS_HELP_STRING([--enable-gtk-doc-pdf], [build documentation in pdf format [[default=no]]]),, [enable_gtk_doc_pdf=no]) if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi AC_SUBST([AM_DEFAULT_VERBOSITY]) AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) ]) denemo-2.2.0/PaxHeaders.19168/ABOUT-NLS0000644000000000000000000000013213135434035013757 xustar0030 mtime=1500919837.906648472 30 atime=1500919917.823315139 30 ctime=1500919912.863315139 denemo-2.2.0/ABOUT-NLS0000644000175000017500000015111613135434035015635 0ustar00jjbenhamjjbenham00000000000000Notes on the Free Translation Project ************************************* Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work at translations should contact the appropriate team. When reporting bugs in the `intl/' directory or bugs which may be related to internationalization, you should tell about the version of `gettext' which is used. The information can be found in the `intl/VERSION' file, in internationalized packages. Quick configuration advice ========================== If you want to exploit the full power of internationalization, you should configure it using ./configure --with-included-gettext to force usage of internationalizing routines provided within this package, despite the existence of internationalizing capabilities in the operating system where this package is being installed. So far, only the `gettext' implementation in the GNU C library version 2 provides as many features (such as locale alias, message inheritance, automatic charset conversion or plural form handling) as the implementation here. It is also not possible to offer this additional functionality on top of a `catgets' implementation. Future versions of GNU `gettext' will very likely convey even more functionality. So it might be a good idea to change to GNU `gettext' as soon as possible. So you need _not_ provide this option if you are using GNU libc 2 or you have installed a recent copy of the GNU gettext package with the included `libintl'. INSTALL Matters =============== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. If not, the GNU `gettext' own library will be used. This library is wholly contained within this package, usually in the `intl/' subdirectory, so prior installation of the GNU `gettext' package is _not_ required. Installers may use special options at configuration time for changing the default behaviour. The commands: ./configure --with-included-gettext ./configure --disable-nls will respectively bypass any pre-existing `gettext' to use the internationalizing routines provided within this package, or else, _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl.a' file and will decide to use this. This might be not what is desirable. You should use the more recent version of the GNU `gettext' library. I.e. if the file `intl/VERSION' shows that the library which comes with this package is more recent, you should use ./configure --with-included-gettext to prevent auto-detection. The configuration process will not test for the `catgets' function and therefore it will not be used. The reason is that even an emulation of `gettext' on top of `catgets' could not provide all the extensions of the GNU `gettext' library. Internationalized packages have usually many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. Using This Package ================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your country by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. Translating Teams ================= For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `translation@iro.umontreal.ca' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skill are praised more than programming skill, here. Available Packages ================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of January 2004. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am ar az be bg bs ca cs da de el en en_GB eo es +----------------------------------------------------+ a2ps | [] [] [] [] | aegis | () | ant-phone | () | anubis | | ap-utils | | aspell | [] | bash | [] [] [] [] | batchelor | | bfd | [] [] | binutils | [] [] | bison | [] [] [] | bluez-pin | [] [] [] | clisp | | clisp | [] [] [] | console-tools | [] [] | coreutils | [] [] [] [] | cpio | [] [] [] | darkstat | [] () [] | diffutils | [] [] [] [] [] [] [] | e2fsprogs | [] [] [] | enscript | [] [] [] [] | error | [] [] [] [] [] | fetchmail | [] () [] [] [] [] | fileutils | [] [] [] | findutils | [] [] [] [] [] [] [] | flex | [] [] [] [] | fslint | | gas | [] | gawk | [] [] [] [] | gbiff | [] | gcal | [] | gcc | [] [] | gettext | [] [] [] [] [] | gettext-examples | [] [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] | gimp-print | [] [] [] [] [] | gliv | | glunarclock | [] [] | gnubiff | [] | gnucash | [] () [] [] | gnucash-glossary | [] () [] | gnupg | [] () [] [] [] [] | gpe-aerial | [] | gpe-beam | [] [] | gpe-calendar | [] [] | gpe-clock | [] [] | gpe-conf | [] [] | gpe-contacts | [] [] | gpe-edit | [] | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] | gpe-taskmanager | [] [] | gpe-timesheet | [] | gpe-today | [] [] | gpe-todo | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] | gpsdrive | () () () | gramadoir | [] | grep | [] [] [] [] [] [] | gretl | [] | gtick | [] () | hello | [] [] [] [] [] [] | id-utils | [] [] | indent | [] [] [] [] | iso_3166 | [] [] [] [] [] [] [] [] [] [] | iso_3166_1 | [] [] [] [] [] [] | iso_3166_2 | | iso_3166_3 | [] | iso_4217 | [] [] [] [] | iso_639 | | jpilot | [] [] [] | jtag | | jwhois | [] | kbd | [] [] [] [] [] | latrine | () | ld | [] [] | libc | [] [] [] [] [] [] | libgpewidget | [] [] | libiconv | [] [] [] [] [] | lifelines | [] () | lilypond | [] | lingoteach | | lingoteach_lessons | () () | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | [] [] | make | [] [] [] | man-db | [] () [] [] () | minicom | [] [] [] | mysecretdiary | [] [] [] | nano | [] () [] [] [] | nano_1_0 | [] () [] [] [] | opcodes | [] | parted | [] [] [] [] [] | ptx | [] [] [] [] [] | python | | radius | [] | recode | [] [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] [] [] [] [] [] | sed | [] [] [] [] [] [] | sh-utils | [] [] [] | shared-mime-info | | sharutils | [] [] [] [] [] [] | silky | () | skencil | [] () [] | sketch | [] () [] | soundtracker | [] [] [] | sp | [] | tar | [] [] [] [] | texinfo | [] [] [] | textutils | [] [] [] [] | tin | () () | tp-robot | | tuxpaint | [] [] [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] [] [] | vorbis-tools | [] [] [] [] | wastesedge | () | wdiff | [] [] [] [] | wget | [] [] [] [] [] [] | xchat | [] [] [] [] | xfree86_xkb_xml | [] [] | xpad | [] | +----------------------------------------------------+ af am ar az be bg bs ca cs da de el en en_GB eo es 4 0 0 1 9 4 1 40 41 60 78 17 1 5 13 68 et eu fa fi fr ga gl he hr hu id is it ja ko lg +-------------------------------------------------+ a2ps | [] [] [] () () | aegis | | ant-phone | [] | anubis | [] | ap-utils | [] | aspell | [] [] | bash | [] [] | batchelor | [] [] | bfd | [] | binutils | [] [] | bison | [] [] [] [] | bluez-pin | [] [] [] [] [] | clisp | | clisp | [] | console-tools | | coreutils | [] [] [] [] [] [] | cpio | [] [] [] [] | darkstat | () [] [] [] | diffutils | [] [] [] [] [] [] [] | e2fsprogs | | enscript | [] [] | error | [] [] [] [] | fetchmail | [] | fileutils | [] [] [] [] [] [] | findutils | [] [] [] [] [] [] [] [] [] [] [] | flex | [] [] [] | fslint | [] | gas | [] | gawk | [] [] [] | gbiff | [] | gcal | [] | gcc | [] | gettext | [] [] [] | gettext-examples | [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] | gimp-print | [] [] | gliv | () | glunarclock | [] [] [] [] | gnubiff | [] | gnucash | () [] | gnucash-glossary | [] | gnupg | [] [] [] [] [] [] [] | gpe-aerial | [] | gpe-beam | [] | gpe-calendar | [] [] [] | gpe-clock | [] | gpe-conf | [] | gpe-contacts | [] [] | gpe-edit | [] [] | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] | gpe-sketchbook | [] | gpe-su | [] | gpe-taskmanager | [] | gpe-timesheet | [] [] [] | gpe-today | [] [] | gpe-todo | [] [] | gphoto2 | [] [] [] | gprof | [] [] | gpsdrive | () () () | gramadoir | [] [] | grep | [] [] [] [] [] [] [] [] [] [] [] | gretl | [] [] | gtick | [] [] [] | hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] | indent | [] [] [] [] [] [] [] [] [] | iso_3166 | [] [] [] [] [] [] [] | iso_3166_1 | [] [] [] [] [] | iso_3166_2 | | iso_3166_3 | | iso_4217 | [] [] [] [] [] [] | iso_639 | | jpilot | [] () | jtag | [] | jwhois | [] [] [] [] | kbd | [] | latrine | [] | ld | [] | libc | [] [] [] [] [] [] | libgpewidget | [] [] [] [] | libiconv | [] [] [] [] [] [] [] [] [] | lifelines | () | lilypond | [] | lingoteach | [] [] | lingoteach_lessons | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | | make | [] [] [] [] [] [] | man-db | () () | minicom | [] [] [] [] | mysecretdiary | [] [] | nano | [] [] [] [] | nano_1_0 | [] [] [] [] | opcodes | [] | parted | [] [] [] | ptx | [] [] [] [] [] [] [] | python | | radius | [] | recode | [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] | sed | [] [] [] [] [] [] [] [] [] | sh-utils | [] [] [] [] [] [] [] | shared-mime-info | [] [] [] | sharutils | [] [] [] [] [] | silky | () [] () () | skencil | [] | sketch | [] | soundtracker | [] [] | sp | [] () | tar | [] [] [] [] [] [] [] [] [] | texinfo | [] [] [] [] | textutils | [] [] [] [] [] [] | tin | [] () | tp-robot | [] | tuxpaint | [] [] [] [] [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux | [] [] [] [] () [] | vorbis-tools | [] | wastesedge | () | wdiff | [] [] [] [] [] [] | wget | [] [] [] [] [] [] [] | xchat | [] [] [] | xfree86_xkb_xml | [] [] | xpad | [] [] | +-------------------------------------------------+ et eu fa fi fr ga gl he hr hu id is it ja ko lg 22 2 1 26 106 28 24 8 10 41 33 1 26 33 12 0 lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru +-----------------------------------------------------+ a2ps | [] [] () () [] [] [] | aegis | () () () | ant-phone | [] [] | anubis | [] [] [] [] [] [] | ap-utils | [] () [] | aspell | [] | bash | [] [] [] | batchelor | [] | bfd | [] | binutils | [] | bison | [] [] [] [] [] | bluez-pin | [] [] [] | clisp | | clisp | [] | console-tools | [] | coreutils | [] [] | cpio | [] [] [] [] [] | darkstat | [] [] [] [] | diffutils | [] [] [] [] [] [] | e2fsprogs | [] | enscript | [] [] [] [] | error | [] [] [] | fetchmail | [] [] () [] | fileutils | [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] | fslint | [] [] | gas | | gawk | [] [] [] | gbiff | [] [] | gcal | | gcc | | gettext | [] [] [] | gettext-examples | [] [] [] | gettext-runtime | [] [] [] [] | gettext-tools | [] [] | gimp-print | [] | gliv | [] [] [] | glunarclock | [] [] [] [] | gnubiff | [] | gnucash | [] [] () [] | gnucash-glossary | [] [] | gnupg | [] | gpe-aerial | [] [] [] [] | gpe-beam | [] [] [] [] | gpe-calendar | [] [] [] [] | gpe-clock | [] [] [] [] | gpe-conf | [] [] [] [] | gpe-contacts | [] [] [] [] | gpe-edit | [] [] [] [] | gpe-go | [] [] [] | gpe-login | [] [] [] [] | gpe-ownerinfo | [] [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] [] [] | gphoto2 | [] | gprof | [] [] | gpsdrive | () () [] | gramadoir | () [] | grep | [] [] [] [] [] | gretl | | gtick | [] [] [] | hello | [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] | indent | [] [] [] [] | iso_3166 | [] [] [] | iso_3166_1 | [] [] | iso_3166_2 | | iso_3166_3 | [] | iso_4217 | [] [] [] [] [] [] [] [] | iso_639 | [] | jpilot | () () | jtag | | jwhois | [] [] [] [] () | kbd | [] [] [] | latrine | [] | ld | | libc | [] [] [] [] | libgpewidget | [] [] [] | libiconv | [] [] [] [] [] | lifelines | | lilypond | | lingoteach | | lingoteach_lessons | | lynx | [] [] [] | m4 | [] [] [] [] [] | mailutils | [] [] [] | make | [] [] [] [] | man-db | [] | minicom | [] [] [] [] | mysecretdiary | [] [] [] | nano | [] [] [] [] [] | nano_1_0 | [] [] [] [] [] [] | opcodes | [] [] | parted | [] [] [] [] | ptx | [] [] [] [] [] [] [] [] | python | | radius | [] [] | recode | [] [] [] [] | rpm | [] [] [] | screem | | scrollkeeper | [] [] [] [] [] | sed | [] [] [] | sh-utils | [] [] | shared-mime-info | [] [] | sharutils | [] [] | silky | () | skencil | [] [] | sketch | [] [] | soundtracker | | sp | | tar | [] [] [] [] [] [] | texinfo | [] [] [] [] | textutils | [] [] | tin | | tp-robot | [] | tuxpaint | [] [] [] [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] | vorbis-tools | [] [] [] | wastesedge | | wdiff | [] [] [] [] [] | wget | [] [] [] | xchat | [] [] [] | xfree86_xkb_xml | [] [] | xpad | [] [] | +-----------------------------------------------------+ lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru 1 2 0 3 12 0 10 69 6 7 1 40 26 36 76 63 sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu +-----------------------------------------------------+ a2ps | [] [] [] [] | 16 aegis | | 0 ant-phone | | 3 anubis | [] [] | 9 ap-utils | () | 3 aspell | | 4 bash | | 9 batchelor | | 3 bfd | [] [] | 6 binutils | [] [] [] | 8 bison | [] [] | 14 bluez-pin | [] [] [] | 14 clisp | | 0 clisp | | 5 console-tools | | 3 coreutils | [] [] [] [] | 16 cpio | [] [] | 14 darkstat | [] [] [] () () | 12 diffutils | [] [] [] | 23 e2fsprogs | [] [] | 6 enscript | [] [] | 12 error | [] [] [] | 15 fetchmail | [] [] | 11 fileutils | [] [] [] [] [] | 17 findutils | [] [] [] [] [] [] | 29 flex | [] [] | 13 fslint | | 3 gas | [] | 3 gawk | [] [] | 12 gbiff | | 4 gcal | [] [] | 4 gcc | [] | 4 gettext | [] [] [] [] [] | 16 gettext-examples | [] [] [] [] [] | 14 gettext-runtime | [] [] [] [] [] [] [] [] | 22 gettext-tools | [] [] [] [] [] [] | 14 gimp-print | [] [] | 10 gliv | | 3 glunarclock | [] [] [] | 13 gnubiff | | 3 gnucash | [] [] | 9 gnucash-glossary | [] [] [] | 8 gnupg | [] [] [] [] | 17 gpe-aerial | [] | 7 gpe-beam | [] | 8 gpe-calendar | [] [] [] [] | 13 gpe-clock | [] [] [] | 10 gpe-conf | [] [] | 9 gpe-contacts | [] [] [] | 11 gpe-edit | [] [] [] [] [] | 12 gpe-go | | 5 gpe-login | [] [] [] [] [] | 13 gpe-ownerinfo | [] [] [] [] | 13 gpe-sketchbook | [] [] | 9 gpe-su | [] [] [] | 10 gpe-taskmanager | [] [] [] | 10 gpe-timesheet | [] [] [] [] | 12 gpe-today | [] [] [] [] [] | 13 gpe-todo | [] [] [] [] | 12 gphoto2 | [] [] [] | 11 gprof | [] [] | 9 gpsdrive | [] [] | 3 gramadoir | [] | 5 grep | [] [] [] [] | 26 gretl | | 3 gtick | | 7 hello | [] [] [] [] [] | 34 id-utils | [] [] | 12 indent | [] [] [] [] | 21 iso_3166 | [] [] [] [] [] [] [] | 27 iso_3166_1 | [] [] [] | 16 iso_3166_2 | | 0 iso_3166_3 | | 2 iso_4217 | [] [] [] [] [] [] | 24 iso_639 | | 1 jpilot | [] [] [] [] [] | 9 jtag | [] | 2 jwhois | () [] [] | 11 kbd | [] [] | 11 latrine | | 2 ld | [] [] | 5 libc | [] [] [] [] | 20 libgpewidget | [] [] [] [] | 13 libiconv | [] [] [] [] [] [] [] [] | 27 lifelines | [] | 2 lilypond | [] | 3 lingoteach | | 2 lingoteach_lessons | () | 0 lynx | [] [] [] | 14 m4 | [] [] | 15 mailutils | | 5 make | [] [] [] | 16 man-db | [] | 5 minicom | | 11 mysecretdiary | [] [] | 10 nano | [] [] [] [] | 17 nano_1_0 | [] [] [] | 17 opcodes | [] [] | 6 parted | [] [] [] | 15 ptx | [] [] | 22 python | | 0 radius | | 4 recode | [] [] [] | 20 rpm | [] [] | 9 screem | [] [] | 2 scrollkeeper | [] [] [] | 15 sed | [] [] [] [] [] [] | 24 sh-utils | [] [] | 14 shared-mime-info | [] [] | 7 sharutils | [] [] [] [] | 17 silky | () | 3 skencil | [] | 6 sketch | [] | 6 soundtracker | [] [] | 7 sp | [] | 3 tar | [] [] [] [] [] | 24 texinfo | [] [] [] | 14 textutils | [] [] [] [] | 16 tin | | 1 tp-robot | | 2 tuxpaint | [] [] [] [] [] | 29 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux | [] [] | 15 vorbis-tools | | 8 wastesedge | | 0 wdiff | [] [] [] | 18 wget | [] [] [] [] [] [] [] [] | 24 xchat | [] [] [] [] [] | 15 xfree86_xkb_xml | [] [] [] [] [] | 11 xpad | | 5 +-----------------------------------------------------+ 63 teams sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu 131 domains 47 19 28 83 0 0 59 13 1 1 11 0 22 22 0 1373 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If January 2004 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. Using `gettext' in new packages =============================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `translation@iro.umontreal.ca' to make the `.pot' files available to the translation teams. denemo-2.2.0/PaxHeaders.19168/config.rpath0000644000000000000000000000013213135434036015036 xustar0030 mtime=1500919838.049981805 30 atime=1500919917.883315139 30 ctime=1500919912.883315139 denemo-2.2.0/config.rpath0000755000175000017500000003521313135434036016716 0ustar00jjbenhamjjbenham00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2003 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; mingw* | pw32* | os2*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux*) case $CC in icc|ecc) wl='-Wl,' ;; ccc) wl='-Wl,' ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; sco3.2v5*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) wl='-Wl,' ;; sysv4*MP*) ;; uts4*) ;; esac fi # Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then case "$host_os" in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi4*) ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then hardcode_direct=no fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10* | hpux11*) if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=no ;; ia64*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; *) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4.2uw2*) hardcode_direct=yes hardcode_minus_L=no ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) ;; sysv5*) hardcode_libdir_flag_spec= ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. libname_spec='lib$name' case "$host_os" in aix3*) ;; aix4* | aix5*) ;; amigaos*) ;; beos*) ;; bsdi4*) ;; cygwin* | mingw* | pw32*) shrext=.dll ;; darwin* | rhapsody*) shrext=.dylib ;; dgux*) ;; freebsd1*) ;; freebsd*) ;; gnu*) ;; hpux9* | hpux10* | hpux11*) case "$host_cpu" in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac ;; irix5* | irix6* | nonstopux*) case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux*) ;; netbsd*) ;; newsos6) ;; nto-qnx) ;; openbsd*) ;; os2*) libname_spec='$name' shrext=.dll ;; osf3* | osf4* | osf5*) ;; sco3.2v5*) ;; solaris*) ;; sunos4*) ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ;; sysv4*MP*) ;; uts4*) ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: denemo-2.2.0/PaxHeaders.19168/test-driver0000644000000000000000000000007412423346767014745 xustar0030 atime=1500919917.936648472 30 ctime=1500919914.516648472 denemo-2.2.0/test-driver0000755000175000017500000001027712423346767016623 0ustar00jjbenhamjjbenham00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2013 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then estatus=1 fi case $estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: denemo-2.2.0/PaxHeaders.19168/src0000644000000000000000000000013213135434152013242 xustar0030 mtime=1500919914.036648472 30 atime=1500919914.539981806 30 ctime=1500919914.036648472 denemo-2.2.0/src/0000755000175000017500000000000013135434152015170 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/src/PaxHeaders.19168/command0000644000000000000000000000013213135434152014660 xustar0030 mtime=1500919914.156648472 30 atime=1500919914.539981806 30 ctime=1500919914.156648472 denemo-2.2.0/src/command/0000755000175000017500000000000013135434152016606 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/src/command/PaxHeaders.19168/keyresponses.h0000644000000000000000000000013213135434036017641 xustar0030 mtime=1500919838.336648472 30 atime=1500919917.946648472 30 ctime=1500919914.116648472 denemo-2.2.0/src/command/keyresponses.h0000644000175000017500000002625713135434036021526 0ustar00jjbenhamjjbenham00000000000000/* keyresponses.h * function prototypes for responses to user keypresses * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #ifndef KEYRESPONSES_H #define KEYRESPONSES_H #include #include #include "command/commandfuncs.h" #include #include "display/draw.h" #include "command/select.h" #include "command/chord.h" #include "command/object.h" gint scorearea_keypress_event (GtkWidget * widget, GdkEventKey * event); gint scorearea_keyrelease_event (GtkWidget * widget, GdkEventKey * event); gint scorearea_button_press (GtkWidget * widget, GdkEventButton * event); gint scorearea_button_release (GtkWidget * widget, GdkEventButton * event); gboolean intercept_scorearea_keypress (GdkEventKey * pevent); void adjust_measure_less_width_key (DenemoAction* action, DenemoScriptParam *param); void adjust_measure_more_width_key (DenemoAction* action, DenemoScriptParam *param); void adjust_staff_less_height_key (DenemoAction* action, DenemoScriptParam *param); void adjust_staff_more_height_key (DenemoAction* action, DenemoScriptParam *param); void unset_selection_key (DenemoScriptParam *param); void insert_chord_xkey (gint duration, DenemoScriptParam *param); void change_or_append_A_key (DenemoAction* action, DenemoScriptParam *param); void change_or_append_B_key (DenemoAction* action, DenemoScriptParam *param); void change_or_append_C_key (DenemoAction* action, DenemoScriptParam *param); void change_or_append_D_key (DenemoAction* action, DenemoScriptParam *param); void change_or_append_E_key (DenemoAction* action, DenemoScriptParam *param); void change_or_append_F_key (DenemoAction* action, DenemoScriptParam *param); void change_or_append_G_key (DenemoAction* action, DenemoScriptParam *param); void octave_up_key (DenemoAction* action, DenemoScriptParam *param); void octave_down_key (DenemoAction* action, DenemoScriptParam *param); void rest_toggle_key (DenemoAction* action, DenemoScriptParam *param); void toggle_blank (DenemoAction* action, DenemoScriptParam *param); void append_measure_key (DenemoAction* action, DenemoScriptParam *param); void insert_measure_key (DenemoAction* action, DenemoScriptParam *param); void insert_chord_0key (DenemoAction* action, DenemoScriptParam *param); void insert_chord_1key (DenemoAction* action, DenemoScriptParam *param); void insert_chord_2key (DenemoAction* action, DenemoScriptParam *param); void insert_chord_3key (DenemoAction* action, DenemoScriptParam *param); void insert_chord_4key (DenemoAction* action, DenemoScriptParam *param); void insert_chord_5key (DenemoAction* action, DenemoScriptParam *param); void insert_chord_6key (DenemoAction* action, DenemoScriptParam *param); void insert_chord_7key (DenemoAction* action, DenemoScriptParam *param); void insert_chord_8key (DenemoAction* action, DenemoScriptParam *param); void insert_blankchord_xkey (gint duration, DenemoScriptParam *param); void insert_blankchord_0key (DenemoAction* action, DenemoScriptParam *param); void insert_blankchord_1key (DenemoAction* action, DenemoScriptParam *param); void insert_blankchord_2key (DenemoAction* action, DenemoScriptParam *param); void insert_blankchord_3key (DenemoAction* action, DenemoScriptParam *param); void insert_blankchord_4key (DenemoAction* action, DenemoScriptParam *param); void insert_blankchord_5key (DenemoAction* action, DenemoScriptParam *param); void insert_blankchord_6key (DenemoAction* action, DenemoScriptParam *param); void insert_blankchord_7key (DenemoAction* action, DenemoScriptParam *param); void insert_blankchord_8key (DenemoAction* action, DenemoScriptParam *param); void insert_rest_xkey(gint duration, DenemoScriptParam* param); void insert_rest_0key (DenemoAction* action, DenemoScriptParam *param); void insert_rest_1key (DenemoAction* action, DenemoScriptParam *param); void insert_rest_2key (DenemoAction* action, DenemoScriptParam *param); void insert_rest_3key (DenemoAction* action, DenemoScriptParam *param); void insert_rest_4key (DenemoAction* action, DenemoScriptParam *param); void insert_rest_5key (DenemoAction* action, DenemoScriptParam *param); void insert_rest_6key (DenemoAction* action, DenemoScriptParam *param); void insert_rest_7key (DenemoAction* action, DenemoScriptParam *param); void insert_rest_8key (DenemoAction* action, DenemoScriptParam *param); gboolean add_note_to_chord (DenemoAction* action, DenemoScriptParam *param); gboolean delete_note_from_chord (DenemoAction* action, DenemoScriptParam *param); void deletepreviousobject (DenemoAction* action, DenemoScriptParam *param); void sharpen_key (DenemoAction* action, DenemoScriptParam *param); void set_stem_up (DenemoAction* action, DenemoScriptParam *param); void set_stem_down (DenemoAction* action, DenemoScriptParam *param); void sharpen_note (DenemoAction* action, DenemoScriptParam *param); void flatten_note (DenemoAction* action, DenemoScriptParam *param); void pending_flatten (DenemoAction* action, DenemoScriptParam *param); void pending_sharpen (DenemoAction* action, DenemoScriptParam *param); void tie_notes_key (DenemoAction* action, DenemoScriptParam *param); void add_dot_key (DenemoAction* action, DenemoScriptParam *param); void remove_dot_key (DenemoAction* action, DenemoScriptParam *param); void insert_clone_key (DenemoScriptParam *param); void add_mordent (DenemoScriptParam *param); void add_turn (DenemoScriptParam *param); void set_grace (DenemoScriptParam *param); void force_cautionary (DenemoAction* action, DenemoScriptParam *param); void change_pitch (DenemoAction* action, DenemoScriptParam *param); void add_coda (DenemoScriptParam *param); void add_flageolet (DenemoScriptParam *param); void add_open (DenemoScriptParam *param); void add_prallmordent (DenemoScriptParam *param); void add_prallprall (DenemoScriptParam *param); void add_prall (DenemoScriptParam *param); void add_reverseturn (DenemoScriptParam *param); void add_segno (DenemoScriptParam *param); void add_sforzato (DenemoScriptParam *param); void add_stopped (DenemoScriptParam *param); void add_thumb (DenemoScriptParam *param); void add_trillelement (DenemoScriptParam *param); void add_trill_element (DenemoScriptParam *param); void add_upprall (DenemoScriptParam *param); void add_arpeggio (DenemoScriptParam *param); void default_mode (DenemoScriptParam *param); void replace_mode (DenemoScriptParam *param); void insert_mode (DenemoScriptParam *param); void insert_opencloserepeat (DenemoScriptParam *param); void insert_closerepeat (DenemoScriptParam *param); void insert_openrepeat (DenemoScriptParam *param); void insert_endbar (DenemoScriptParam *param); void insert_doublebar (DenemoScriptParam *param); void blank_mode (DenemoAction * action, DenemoScriptParam *param); void append_measure_score (DenemoAction* action, DenemoScriptParam *param); gchar *process_key_event (GdkEventKey * event, gchar * perform_command ()); void InsertRest(gint duration); void InsertDur(gint duration); void ChangeDur(gint duration); void SetDur(gint duration); //void Dur(gint duration); void ChangeTo(gchar note); void MoveTo(gchar note); void Insert(gchar note); void AddNote(gchar note); void Add(gchar note); void Dur0(DenemoAction *action, gpointer param); void ChangeDur0(DenemoAction *action, gpointer param); void InsertDur0(DenemoAction *action, gpointer param); void InsertRest0(DenemoAction *action, gpointer param); void SetDur0(DenemoAction *action, gpointer param); void Dur1(DenemoAction *action, gpointer param); void ChangeDur1(DenemoAction *action, gpointer param); void InsertDur1(DenemoAction *action, gpointer param); void InsertRest1(DenemoAction *action, gpointer param); void SetDur1(DenemoAction *action, gpointer param); void Dur2(DenemoAction *action, gpointer param); void ChangeDur2(DenemoAction *action, gpointer param); void InsertDur2(DenemoAction *action, gpointer param); void InsertRest2(DenemoAction *action, gpointer param); void SetDur2(DenemoAction *action, gpointer param); void Dur3(DenemoAction *action, gpointer param); void ChangeDur3(DenemoAction *action, gpointer param); void InsertDur3(DenemoAction *action, gpointer param); void InsertRest3(DenemoAction *action, gpointer param); void SetDur3(DenemoAction *action, gpointer param); void Dur4(DenemoAction *action, gpointer param); void ChangeDur4(DenemoAction *action, gpointer param); void InsertDur4(DenemoAction *action, gpointer param); void InsertRest4(DenemoAction *action, gpointer param); void SetDur4(DenemoAction *action, gpointer param); void Dur5(DenemoAction *action, gpointer param); void ChangeDur5(DenemoAction *action, gpointer param); void InsertDur5(DenemoAction *action, gpointer param); void InsertRest5(DenemoAction *action, gpointer param); void SetDur5(DenemoAction *action, gpointer param); void Dur6(DenemoAction *action, gpointer param); void ChangeDur6(DenemoAction *action, gpointer param); void InsertDur6(DenemoAction *action, gpointer param); void InsertRest6(DenemoAction *action, gpointer param); void SetDur6(DenemoAction *action, gpointer param); void Dur7(DenemoAction *action, gpointer param); void ChangeDur7(DenemoAction *action, gpointer param); void InsertDur7(DenemoAction *action, gpointer param); void InsertRest7(DenemoAction *action, gpointer param); void SetDur7(DenemoAction *action, gpointer param); void Dur8(DenemoAction *action, gpointer param); void ChangeDur8(DenemoAction *action, gpointer param); void InsertDur8(DenemoAction *action, gpointer param); void InsertRest8(DenemoAction *action, gpointer param); void SetDur8(DenemoAction *action, gpointer param); void InsertA(DenemoAction *action, gpointer param); void AddNoteA(DenemoAction *action, gpointer param); void AddA(DenemoAction *action, gpointer param); void ChangeToA(DenemoAction *action, gpointer param); void MoveToA(DenemoAction *action, gpointer param); void InsertB(DenemoAction *action, gpointer param); void AddNoteB(DenemoAction *action, gpointer param); void AddB(DenemoAction *action, gpointer param); void ChangeToB(DenemoAction *action, gpointer param); void MoveToB(DenemoAction *action, gpointer param); void InsertC(DenemoAction *action, gpointer param); void AddNoteC(DenemoAction *action, gpointer param); void AddC(DenemoAction *action, gpointer param); void ChangeToC(DenemoAction *action, gpointer param); void MoveToC(DenemoAction *action, gpointer param); void InsertD(DenemoAction *action, gpointer param); void AddNoteD(DenemoAction *action, gpointer param); void AddD(DenemoAction *action, gpointer param); void ChangeToD(DenemoAction *action, gpointer param); void MoveToD(DenemoAction *action, gpointer param); void InsertE(DenemoAction *action, gpointer param); void AddNoteE(DenemoAction *action, gpointer param); void AddE(DenemoAction *action, gpointer param); void ChangeToE(DenemoAction *action, gpointer param); void MoveToE(DenemoAction *action, gpointer param); void InsertF(DenemoAction *action, gpointer param); void AddNoteF(DenemoAction *action, gpointer param); void AddF(DenemoAction *action, gpointer param); void ChangeToF(DenemoAction *action, gpointer param); void MoveToF(DenemoAction *action, gpointer param); void InsertG(DenemoAction *action, gpointer param); void AddNoteG(DenemoAction *action, gpointer param); void AddG(DenemoAction *action, gpointer param); void ChangeToG(DenemoAction *action, gpointer param); void MoveToG(DenemoAction *action, gpointer param); #endif //KEYRESPONSES_H denemo-2.2.0/src/command/PaxHeaders.19168/chord.c0000644000000000000000000000013213135434036016201 xustar0030 mtime=1500919838.336648472 30 atime=1500919917.956648473 30 ctime=1500919914.096648472 denemo-2.2.0/src/command/chord.c0000644000175000017500000004466613135434036020072 0ustar00jjbenhamjjbenham00000000000000/* chord.c * * functions which manipulate chords * For denemo, a gtk+ frontend to Lilypond, the GNU music typesetter * * (c) 2000-2005 Matthew Hiller, Adam Tee * */ #include #include #include #include #include "command/object.h" #include "command/chord.h" #include "core/utils.h" #include "audio/audiointerface.h" #include "command/commandfuncs.h" /* Calculates the height of a notehead */ static void calcheight (gpointer data, gpointer user_data) { note *thenote = (note *) data; gint dclef = GPOINTER_TO_INT (user_data); thenote->y = calculateheight (thenote->mid_c_offset, dclef); } /** * Changes the position of the chord when a new clef * is selected * */ void newclefify (DenemoObject * thechord) { if (((chord *) thechord->object)->notes == NULL) return; gint dclef = thechord->clef->type; g_list_foreach (((chord *) thechord->object)->notes, calcheight, GINT_TO_POINTER (dclef)); ((chord *) thechord->object)->highesty = calculateheight (((chord *) thechord->object)->highestpitch, dclef); ((chord *) thechord->object)->lowesty = calculateheight (((chord *) thechord->object)->lowestpitch, dclef); } /** * This function goes through a chord and checks to see how its notes are * laid out, and if it will have to push the display of any notes to the * "wrong" side of the stem as a result * the result is to set the is_reversealigned field of the chord * and the reversealign field of the note* structures that make up the chord. * thechord must have type CHORD on entry. */ void findreversealigns (DenemoObject * thechord) { GList *current; GList *previous; note *curnote; note *prevnote; ((chord *) thechord->object)->is_reversealigned = FALSE; if (((chord *) thechord->object)->notes) { if (((chord *) thechord->object)->is_stemup) { /* note clusters are painted left-right from bottom to top */ previous = ((chord *) thechord->object)->notes; current = previous->next; prevnote = (note *) previous->data; prevnote->reversealign = FALSE; for (; current; previous = current, prevnote = curnote, current = current->next) { curnote = (note *) current->data; if ((prevnote->mid_c_offset == curnote->mid_c_offset - 1) || (prevnote->mid_c_offset == curnote->mid_c_offset)) { ((chord *) thechord->object)->is_reversealigned = TRUE; curnote->reversealign = !prevnote->reversealign; } else curnote->reversealign = FALSE; } /* End for */ } else { /* the stem's down * note clusters are painted right-left from top to bottom */ previous = g_list_last (((chord *) thechord->object)->notes); current = previous->prev; prevnote = (note *) previous->data; prevnote->reversealign = FALSE; for (; current; previous = current, prevnote = curnote, current = current->prev) { curnote = (note *) current->data; if ((prevnote->mid_c_offset == curnote->mid_c_offset + 1) || (prevnote->mid_c_offset == curnote->mid_c_offset)) { curnote->reversealign = !prevnote->reversealign; ((chord *) thechord->object)->is_reversealigned = TRUE; } else curnote->reversealign = FALSE; } /* End for */ } /* End else */ } setpixelmin (thechord); } /** * Allocate new chord from the heap * and do the basic initialisation * */ DenemoObject * newchord (gint baseduration, gint numdots, int tied) { DenemoObject *thechord = (DenemoObject *) g_malloc0 (sizeof (DenemoObject)); chord *newchord = (chord *) g_malloc0 (sizeof (chord)); thechord->type = CHORD; thechord->isinvisible = FALSE; newchord->notes = NULL; newchord->dynamics = NULL; newchord->highestpitch = G_MININT; newchord->lowestpitch = G_MAXINT; newchord->baseduration = baseduration; newchord->numdots = numdots; newchord->sum_mid_c_offset = 0; newchord->numnotes = 0; newchord->is_tied = tied; newchord->is_reversealigned = FALSE; newchord->slur_begin_p = FALSE; newchord->slur_end_p = FALSE; newchord->crescendo_begin_p = FALSE; newchord->crescendo_end_p = FALSE; newchord->diminuendo_begin_p = FALSE; newchord->diminuendo_end_p = FALSE; newchord->hasanacc = FALSE; newchord->is_grace = FALSE; newchord->struck_through = FALSE; newchord->has_dynamic = FALSE; newchord->is_syllable = FALSE; newchord->center_lyric = FALSE; newchord->lyric = NULL; newchord->figure = NULL; thechord->object = newchord; set_basic_numticks (thechord); //g_debug ("Chord %d \n", ((chord *) (thechord->object))->baseduration); return thechord; } DenemoObject * dnm_newchord (gint baseduration, gint numdots, int tied) { return newchord (baseduration, numdots, tied); } /** * Set the invisible flag for the DenemoObject * @param thechord object to make invisible * @return the chord */ DenemoObject * hidechord (DenemoObject * thechord) { thechord->isinvisible = TRUE; return thechord; } /** * compare current note with pitch to be added * * if equal return FALSE(0) else return TRUE (1) */ #if 0 static gint findcomparefunc (gconstpointer a, gconstpointer b) { const note *anote = (note *) a; const int bnum = GPOINTER_TO_INT (b); if (anote->mid_c_offset == bnum) return 0; /* Identical */ else return 1; /* Not identical */ } #endif /** * Compare two notes * used for sorting the currentchords * note list */ static gint insertcomparefunc (gconstpointer a, gconstpointer b) { const note *anote = (note *) a; const note *bnote = (note *) b; return anote->mid_c_offset - bnote->mid_c_offset; } /* modify the pitch of the note of a one note chord. (for multi-note chords delete and add a note, do not use this). FIXME repeated calls to calculateheight */ void modify_note (chord * thechord, gint mid_c_offset, gint enshift, gint dclef) { note *thenote; if(thechord->notes == NULL) { g_critical ("modify_note called with rest"); gdk_beep(); return; } thenote = (note *) (thechord->notes->data); thenote->mid_c_offset = mid_c_offset; thenote->enshift = enshift; thenote->y = calculateheight (mid_c_offset, dclef); thechord->sum_mid_c_offset = mid_c_offset; //Damned difficult to track this down - will not work if there are >1 notes in chord thechord->highestpitch = mid_c_offset; thechord->highesty = calculateheight (mid_c_offset, dclef); thechord->lowestpitch = mid_c_offset; thechord->lowesty = calculateheight (mid_c_offset, dclef); if (Denemo.project->last_source == INPUTKEYBOARD) { DenemoStaff *curstaffstruct = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (Denemo.prefs.immediateplayback) { play_notes (DEFAULT_BACKEND, curstaffstruct->midi_port, curstaffstruct->midi_channel, thechord); } } displayhelper (Denemo.project); } /* Allocate a new note structure initializing the fields * caller must g_free */ static note * new_note (gint mid_c_offset, gint enshift, gint dclef) { note *newnote; if (enshift > 2) enshift = 2; if (enshift < -2) enshift = -2; newnote = (note *) g_malloc0 (sizeof (note)); newnote->mid_c_offset = mid_c_offset; newnote->enshift = enshift; newnote->y = calculateheight (mid_c_offset, dclef); newnote->reversealign = FALSE; newnote->noteheadtype = DENEMO_NORMAL_NOTEHEAD; return newnote; } /** * Add note to the current chord * The note *will* get added if it is * present already * return note added */ note * addtone (DenemoObject * thechord, gint mid_c_offset, gint enshift) { gint dclef = thechord->clef->type; note *newnote = new_note (mid_c_offset, (Denemo.project->movement?Denemo.project->movement->pending_enshift:0) + enshift, dclef); if(Denemo.project->movement) Denemo.project->movement->pending_enshift = 0; ((chord *) thechord->object)->notes = g_list_insert_sorted (((chord *) thechord->object)->notes, newnote, insertcomparefunc); if (mid_c_offset > ((chord *) thechord->object)->highestpitch) { ((chord *) thechord->object)->highestpitch = mid_c_offset; ((chord *) thechord->object)->highesty = calculateheight (mid_c_offset, dclef); } if (mid_c_offset < ((chord *) thechord->object)->lowestpitch) { ((chord *) thechord->object)->lowestpitch = mid_c_offset; ((chord *) thechord->object)->lowesty = calculateheight (mid_c_offset, dclef); } ((chord *) thechord->object)->sum_mid_c_offset += mid_c_offset; ((chord *) thechord->object)->numnotes++; return newnote; } void dnm_addtone (DenemoObject * thechord, gint mid_c_offset, gint enshift) { addtone (thechord, mid_c_offset, enshift); } /** * This function finds the node of the closest chord tone to n; in the * case of equally distant chord notes, it'll select the higher notes * of the two * returns NULL in the case of no notes */ /* I don't think that I could have quite done this with a g_list_find_custom */ static GList * findclosest (GList * notes, gint n) { GList *cur_tnode = notes; GList *next_tnode; note *cur_tone; note *next_tone; gint distance_from_cur; gint distance_from_next; if (!cur_tnode) return NULL; for (next_tnode = cur_tnode->next;; cur_tnode = next_tnode, next_tnode = cur_tnode->next) { cur_tone = (note *) cur_tnode->data; if (n <= cur_tone->mid_c_offset || !next_tnode) /* Aha! We have no other options */ return cur_tnode; else { next_tone = (note *) next_tnode->data; if (cur_tone->mid_c_offset < n && n < next_tone->mid_c_offset) { distance_from_cur = n - cur_tone->mid_c_offset; distance_from_next = next_tone->mid_c_offset - n; if (distance_from_cur < distance_from_next) return cur_tnode; else return next_tnode; } } } /* End for loop */ } objnode * nearestnote (DenemoObject * thechord, gint mid_c_offset) { if (thechord && thechord->object && thechord->type == CHORD && ((chord *) thechord->object)->notes) return findclosest (((chord *) thechord->object)->notes, mid_c_offset); else return NULL; } /** * Remove tone from current chord * return TRUE if a note is removed, * false if chord is a rest. */ gboolean removetone (DenemoObject * thechord, gint mid_c_offset) { GList *tnode; /* Tone node to remove */ note *tone; gint dclef = thechord->clef->type; tnode = findclosest (((chord *) thechord->object)->notes, mid_c_offset); if (tnode) { tone = (note *) tnode->data; if (!tnode->next) /* That is, we're removing the highest pitch */ { if (tnode->prev) { ((chord *) thechord->object)->highestpitch = ((note *) tnode->prev->data)->mid_c_offset; ((chord *) thechord->object)->highesty = calculateheight (((chord *) thechord->object)->highestpitch, dclef); } else { ((chord *) thechord->object)->highestpitch = G_MININT; /* Had to take care of this somewhere - perhaps not needed - when passing through an edit with no notes... ((chord *) thechord->object)->is_tied = FALSE; */ } } if (!tnode->prev) /* That is, we're removing the lowest pitch */ { if (tnode->next) { ((chord *) thechord->object)->lowestpitch = ((note *) tnode->next->data)->mid_c_offset; ((chord *) thechord->object)->lowesty = calculateheight (((chord *) thechord->object)->lowestpitch, dclef); } else ((chord *) thechord->object)->lowestpitch = G_MAXINT; } ((chord *) thechord->object)->sum_mid_c_offset -= tone->mid_c_offset; /* Now that we no longer need any info in tnode or tone, * actually free stuff */ g_free (tone); ((chord *) thechord->object)->notes = g_list_remove_link (((chord *) thechord->object)->notes, tnode); g_list_free_1 (tnode); } if (((chord *) thechord->object)->notes==NULL) ((chord *) thechord->object)->highesty = ((chord *) thechord->object)->lowesty = 0; return (gboolean) (intptr_t) tnode; } //void //removeallnotes(DenemoObject * thechord) { // while(removetone(thechord, 0, 0)) // ; //} /** * Set the accidental of note closest to mid_c_offset in * the currentchord accidental = -2 ... +2 for double flat to double sharp */ void changeenshift (DenemoObject * thechord, gint mid_c_offset, gint accidental) { GList *tnode; /* note node to inflect */ note *tone; tnode = findclosest (((chord *) thechord->object)->notes, mid_c_offset); if (tnode) { tone = (note *) tnode->data; tone->enshift = accidental; displayhelper (Denemo.project); } } /** * Alter the pitch the note closest to mid_c_offset in * the currentchord by setting * the accidental value * one sharper or flatter subject to a limit of double sharp/flat */ void shiftpitch (DenemoObject * thechord, gint mid_c_offset, gint amount) { GList *tnode; /* Tone node to inflect */ note *tone; tnode = findclosest (((chord *) thechord->object)->notes, mid_c_offset); if (tnode) { tone = (note *) tnode->data; tone->enshift = tone->enshift + amount, 2; if (tone->enshift > 2) tone->enshift = 2; else if (tone->enshift < -2) tone->enshift = -2; } } /** * Change the duration of the current chord * */ void changedur (DenemoObject * thechord, gint baseduration, gint numdots) { gint current = ((chord *) thechord->object)->baseduration; if (current < 0) { if (((chord *) thechord->object)->directives) { GList *g; for (g = ((chord *) thechord->object)->directives; g; g = g->next) { DenemoDirective *directive = g->data; if (directive->prefix && (0 == (directive->override & DENEMO_OVERRIDE_AFFIX))) { free_directive (directive); ((chord *) thechord->object)->directives = g_list_remove (((chord *) thechord->object)->directives, directive); break; //there can only be one prefix replacing the duration, it would be tricky to remove more than one anyway as continuing the loop would be trick... } } } } ((chord *) thechord->object)->baseduration = baseduration; ((chord *) thechord->object)->numdots = numdots; set_basic_numticks (thechord); } /** * Set the number of dots on the chord * */ void changenumdots (DenemoObject * thechord, gint number) { ((chord *) thechord->object)->numdots = MAX (((chord *) thechord->object)->numdots + number, 0); set_basic_numticks (thechord); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } static void freenote (gpointer thenote) { if (((note *) thenote)->directives) { free_directives (((note *) thenote)->directives); //g_list_free(thenote->directives); } g_free (thenote); } /** * Free the current chord */ void freechord (DenemoObject * thechord) { g_list_foreach (((chord *) thechord->object)->notes, (GFunc) freenote, NULL); g_list_free (((chord *) thechord->object)->notes); g_list_free (((chord *) thechord->object)->dynamics); if (((chord *) thechord->object)->lyric) g_string_free (((chord *) thechord->object)->lyric, FALSE); //FIXME memory leak???? /* tone_node does not belong to the chord but belongs instead to the pitch recognition system */ if (((chord *) thechord->object)->is_figure && ((chord *) thechord->object)->figure) g_string_free (((chord *) thechord->object)->figure, FALSE); //FIXME memory leak???? if (((chord *) thechord->object)->directives) { free_directives (((chord *) thechord->object)->directives); //g_list_free(((chord *) thechord->object)->directives); } //FIXME we should free thechord->directives too if scripts fail to delete them g_free (thechord); } /** * Clone the current chord * used in the cut/copy/paste routine */ DenemoObject * clone_chord (DenemoObject * thechord) { DenemoObject *ret = (DenemoObject *) g_malloc0 (sizeof (DenemoObject)); GList *curtone; note *newnote; chord *curchord = (chord *) thechord->object; chord *clonedchord = (chord *) g_malloc0 (sizeof (chord)); /* I'd use a g_list_copy here, only that won't do the deep copy of * the list data that I'd want it to */ memcpy ((DenemoObject *) ret, (DenemoObject *) thechord, sizeof (DenemoObject)); ret->object = NULL; ret->directives = NULL; //currently the only pointers in DenemoObject memcpy ((chord *) clonedchord, curchord, sizeof (chord)); clonedchord->directives = NULL; clonedchord->dynamics = NULL; clonedchord->tone_node = NULL; if (curchord->figure) clonedchord->figure = g_string_new (((GString *) curchord->figure)->str); else clonedchord->figure = NULL; clonedchord->is_figure = curchord->is_figure; if (curchord->fakechord) clonedchord->fakechord = g_string_new (((GString *) curchord->fakechord)->str); else clonedchord->fakechord = NULL; clonedchord->is_fakechord = curchord->is_fakechord; clonedchord->lyric = NULL; /* GList *g = curchord->directives; */ /* for(;g;g=g->next) { */ /* DenemoDirective *directive = (DenemoDirective *)g->data; */ /* if(directive) */ /* clonedchord->directives = g_list_append(clonedchord->directives, clone_directive(directive)); */ /* else */ /* g_warning("A Chord Directive list with NULL directive"); */ /* } */ clonedchord->directives = clone_directives (curchord->directives); clonedchord->notes = NULL; for (curtone = ((chord *) thechord->object)->notes; curtone; curtone = curtone->next) { newnote = (note *) g_malloc0 (sizeof (note)); note *curnote = (note *) curtone->data; memcpy (newnote, curnote, sizeof (note)); newnote->directives = clone_directives (curnote->directives); clonedchord->notes = g_list_append (clonedchord->notes, newnote); } ret->object = (chord *) clonedchord; /* g_debug ("Chord Base dur %d \tCloned Note base dur %d\n", ((chord *) thechord->object)->baseduration, ((chord *) ret->object)->baseduration); */ return ret; } denemo-2.2.0/src/command/PaxHeaders.19168/fakechord.c0000644000000000000000000000013213135434036017030 xustar0030 mtime=1500919838.336648472 30 atime=1500919917.983315139 30 ctime=1500919914.106648472 denemo-2.2.0/src/command/fakechord.c0000644000175000017500000001413613135434036020706 0ustar00jjbenhamjjbenham00000000000000#include #include #include #include "command/chord.h" #include "display/calculatepositions.h" #include "command/commandfuncs.h" #include "command/contexts.h" #include "command/fakechord.h" #include "ui/dialogs.h" #include "display/draw.h" #include "command/object.h" #include "command/staff.h" #include "core/utils.h" struct callbackdata { DenemoProject *gui; gchar *string; }; /** * Allocate new fakechord structure from the heap * and initialise * */ DenemoObject * newfakechord (gint baseduration, gint numdots, gchar * figs) { DenemoObject *thefakechord = newchord (baseduration, numdots, 0); ((chord *) thefakechord->object)->fakechord = (gpointer) g_string_new (figs); ((chord *) thefakechord->object)->is_fakechord = TRUE; set_basic_numticks (thefakechord); return thefakechord; } /** * Apply the fakechord to the given chord if it does not already have one * otherwise assign to the chords existing fakechord */ /* UNUSED static void apply_fakechord (chord * ch, gchar * fig) { if (!ch->fakechord) { ch->fakechord = g_list_append (NULL, newfakechord (ch->baseduration, ch->numdots, fig)); ch->is_fakechord = FALSE; } else { DenemoObject *mud = (DenemoObject *) (((GList *) ch->fakechord)->data); chord *mych = (chord *) mud->object; GString *mygstr = (GString *) mych->fakechord; g_string_assign (mygstr, fig); // FIXME g_free(mygstr->str) first ? } } */ /** * Get the fakechords if it has one * */ void separate_fakechord_elements (gchar * fakechord, DenemoObject * curObj) { gboolean has_extension = FALSE; GString *base = g_string_new (""); GString *extension = g_string_new (""); do { if ((*fakechord != ':') && (has_extension == FALSE)) g_string_sprintfa (base, "%c", *fakechord); if (*fakechord == ':') has_extension = TRUE; if (has_extension) g_string_sprintfa (extension, "%c", *fakechord); //if (*fakechord == '/') // has_pedal_bass = TRUE; // not used!!! } while (*++fakechord); //g_debug("\nthe base chord is %s\n", base->str); //g_debug("\nthe chord extension is %s\n", extension->str); if (curObj && curObj->type == CHORD) { ((chord *) curObj->object)->is_fakechord = TRUE; ((chord *) curObj->object)->fakechord = base; //if (has_extension) //((chord *) curObj->object)->fakechord_extension = extension; //else { g_string_free (extension, TRUE); //((chord *) curObj->object)->fakechord_extension = NULL; //} } } /** * Function to actually insert a fakechord to an object * */ gboolean insertfakechord (GtkWidget * widget, gpointer data) { struct callbackdata *cbdata = (struct callbackdata *) data; DenemoProject *gui = cbdata->gui; DenemoMovement *si = gui->movement; if (cbdata->string == NULL) return FALSE; if (si->currentobject != NULL) { DenemoObject *curObj = (DenemoObject *) si->currentobject->data; //gchar *fakechord = cbdata->string; //separate_fakechord_elements(fakechord, curObj); if (((chord *) curObj->object)->fakechord) g_string_assign (((chord *) curObj->object)->fakechord, cbdata->string); else ((chord *) curObj->object)->fakechord = g_string_new (cbdata->string); do { if (si->currentobject->next) movecursorright (NULL, NULL); else if (gui->movement->currentmeasure->next) movetomeasureright (NULL, NULL); else break; curObj = si->currentobject ? (DenemoObject *) si->currentobject->data : NULL; } while ((curObj != NULL) && (curObj->type != CHORD)); if (!si->has_fakechords) { si->has_fakechords = (gpointer) TRUE; signal_structural_change (gui); } score_status (gui, TRUE); return TRUE; } else { warningdialog (_("There is no object here to attach a fakechord to.")); } return FALSE; } void delete_fakechords (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; DenemoStaff *thestaff = (DenemoStaff *) gui->movement->currentstaff->data; if (confirm (_("Chord Symbol Deletion"), _("Delete all Chord Symbols from this staff?"))) { thestaff->hasfakechords = FALSE; gui->movement->has_fakechords = FALSE; score_status (gui, TRUE); measurenode *curmeasure; for (curmeasure = thestaff->themeasures; curmeasure; curmeasure = curmeasure->next) { objnode *curobj; for (curobj = ((DenemoMeasure*)curmeasure->data)->objects; curobj; curobj = curobj->next) { DenemoObject *curObj = (DenemoObject *) curobj->data; if (curObj && curObj->type == CHORD) { GString *s = ((chord *) curObj->object)->fakechord; if (s) g_string_free (s, TRUE); ((chord *) curObj->object)->fakechord = NULL; ((chord *) curObj->object)->is_fakechord = 0; } } } } } /** * Creates fakebook style chord entry dialog * */ void fakechord_insert (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; gchar *string; gchar *PreValue = NULL; GString *temp = g_string_new (""); DenemoMovement *si = gui->movement; static struct callbackdata cbdata; DenemoObject *curObj = (DenemoObject *) si->currentobject ? (DenemoObject *) si->currentobject->data : NULL; if (curObj && curObj->type == CHORD && ((chord *) curObj->object)->fakechord) { PreValue = (((GString *) ((chord *) curObj->object)->fakechord)->str); } string = string_dialog_entry (gui, _("Insert/Edit Chord Symbol"), _("Give Chord(s) in LilyPond Notation\nE.g. c:m7 aes:aug7\n(Separate chord changes with spaces)"), PreValue); cbdata.gui = gui; cbdata.string = string; if (string) { if (insertfakechord (NULL, &cbdata)) ((DenemoStaff *) si->currentstaff->data)->hasfakechords = TRUE; displayhelper (gui); } g_string_free (temp, TRUE); g_free (string); } denemo-2.2.0/src/command/PaxHeaders.19168/processstaffname.h0000644000000000000000000000013213135434036020452 xustar0030 mtime=1500919838.339981805 30 atime=1500919917.989981805 30 ctime=1500919914.129981805 denemo-2.2.0/src/command/processstaffname.h0000644000175000017500000000053113135434036022322 0ustar00jjbenhamjjbenham00000000000000/* processstaffname.h * for Denemo, the GNU graphical frontend to GNU Lilypond * * (c) 2000-2005 Matthew Hiller */ #include void set_lily_name (GString * denemo_name, GString * lily_name); void set_denemo_name (GString * lily_name, GString * denemo_name); gint canonicalize_denemo_name (gchar * proposal, GString * denemo_name); denemo-2.2.0/src/command/PaxHeaders.19168/commandfuncs.c0000644000000000000000000000013213135434036017557 xustar0030 mtime=1500919838.336648472 30 atime=1500919917.989981805 30 ctime=1500919914.099981805 denemo-2.2.0/src/command/commandfuncs.c0000644000175000017500000027677513135434036021460 0ustar00jjbenhamjjbenham00000000000000/* commandfuncs.c * functions invoked by user keypresses in score area * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller, Adam Tee */ #include #include #include "command/commandfuncs.h" #include "display/calculatepositions.h" #include "command/chord.h" #include "command/contexts.h" #include "display/draw.h" #include "command/measure.h" #include "audio/midi.h" #include "command/object.h" #include "ui/moveviewport.h" #include "command/select.h" #include "command/staff.h" #include "core/utils.h" #include "command/tuplet.h" #include "command/grace.h" #include "audio/instrumentname.h" #include "export/file.h" #include "export/exportlilypond.h" #include "core/exportxml.h" #include "core/prefops.h" #include "command/keyresponses.h" #include "core/view.h" #include "audio/pitchentry.h" #include "audio/audiointerface.h" #include "display/displayanimation.h" #include "core/cache.h" /** * Macro to get the current DenemoObject */ #define declarecurmudelaobj \ DenemoObject *curmudelaobj = \ (DenemoObject *) ( (si->currentobject && si->currentobject->data) ? \ ((((DenemoObject *)si->currentobject->data)->type == TUPCLOSE) ? \ (si->currentobject->prev?si->currentobject->prev->data:si->currentobject->data) : si->currentobject->data) : NULL) /** * Move the current rhythm on to the next one * FIXME re-arrange the list of rhythms each time as well so that it * is easy to alternate rhythms. */ void nextrhythm (DenemoAction* action, DenemoScriptParam* param) { if (!Denemo.project->rhythms) return; if (Denemo.project->currhythm == NULL) Denemo.project->currhythm = g_list_last (Denemo.project->rhythms); unhighlight_rhythm ((RhythmPattern *) Denemo.project->currhythm->data); if (Denemo.project->currhythm->next) Denemo.project->currhythm = Denemo.project->currhythm->next; else Denemo.project->currhythm = Denemo.project->rhythms; #define g (Denemo.project->rstep) g = ((RhythmPattern *) Denemo.project->currhythm->data)->rsteps; RhythmPattern *cursnip = ((RhythmPattern *)Denemo.project->currhythm->data); Denemo.project->cstep = (cursnip->clipboard)->data; if (((RhythmElement *) g->data)->highlightlabel) { set_rhythm_label (cursnip, ((RhythmElement *) g->data)->highlightlabel); } highlight_rhythm ((RhythmPattern *) Denemo.project->currhythm->data); #undef g displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Helper function for calculating the * beam and stem direction * I think it calculates the beam and stem directions for the si->currentmeasure * on the assumption that si->curmeasureclef has been set to the appropriate value * before the function is called. Likewise for * si->cursortime1/2 and si->curmeasure_stem_directive. * the calculated values are stored in the objects in the measure - the fields set are: * isstart/end_beamgroup, is_stemup, stemy, is_reversealigned. reversealign, minpixelsalloted, space_before * si->curmeasureclef is also set: it is set to the value prevailing at the end of the measure. */ void beamandstemdirhelper (DenemoMovement * si) { calculatebeamsandstemdirs ((DenemoMeasure*)si->currentmeasure->data); } /** * Set si->current* variables from currentmeasurenum * the current object is set to the first in the measure * the selection is not updated * */ void setcurrents (DenemoMovement * si) { if (((DenemoStaff *) si->currentstaff->data)->nummeasures >= si->currentmeasurenum) { si->currentmeasure = g_list_nth (staff_first_measure_node (si->currentstaff), si->currentmeasurenum - 1); } else { g_debug ("Setting measure to %d which is last in Staff\n", ((DenemoStaff *) si->currentstaff->data)->nummeasures); si->currentmeasure = g_list_nth (staff_first_measure_node (si->currentstaff), ((DenemoStaff *) si->currentstaff->data)->nummeasures - 1); si->currentmeasurenum = ((DenemoStaff *) si->currentstaff->data)->nummeasures; } si->cursor_x = 0; si->currentobject = (objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects; if (si->currentobject) si->cursor_appending = FALSE; else si->cursor_appending = TRUE; si->cursoroffend = FALSE; } /** * Push the score to the left off the * displayed portion */ void nudgerightward (DenemoProject * gui) { if (set_rightmeasurenum (gui->movement) || (gui->movement->currentmeasurenum > gui->movement->rightmeasurenum)) { if (gui->movement->currentmeasurenum > gui->movement->rightmeasurenum) { while (gui->movement->currentmeasurenum > gui->movement->rightmeasurenum) { gui->movement->leftmeasurenum++; set_rightmeasurenum (gui->movement); } } find_leftmost_allcontexts (gui->movement); update_hscrollbar (gui); } } /** * Push the score upwards off the displayed * portion */ void nudge_downward (DenemoProject * gui) { set_bottom_staff (gui); while (gui->movement->currentstaffnum > gui->movement->bottom_staff) { gui->movement->top_staff++; set_bottom_staff (gui); } update_vscrollbar (gui); } /** * Set the width available for drawing the measures of the movements from the width of the working scorearea widget */ void set_width_to_work_with (DenemoProject * gui) { if(Denemo.non_interactive) return; GList *g; for (g = gui->movements; g; g = g->next) { DenemoMovement *si = ((DenemoMovement *) g->data); //the total line length for drawing DenemoObjects onto the screen // this length will be divided amongst the systems (line). // This length is in "pixels", the Denemo unit of display, which corresponds to a screen pixel when zoom ==1.0 //this value often does not leave enough room for the right_arrow "button" which cannot then be accessed, subtracting say 10 off the value wastes space generally but alleviates the problem... si->widthtoworkwith = (gint) ((get_widget_width (Denemo.scorearea) / si->zoom - (RIGHT_MARGIN + (gui->leftmargin+35) + si->maxkeywidth + SPACE_FOR_TIME)) * ((int) (1 / si->system_height))); // g_print("Width %d from num systems%d\n", si->widthtoworkwith, ((int)(1/si->system_height ))); } } /** * Change the basic width of each measure */ void adjustmeasurewidth (DenemoMovement * si, gint amount) { si->measurewidth += amount; if (si->measurewidth < 10) si->measurewidth = 10; if (si->widthtoworkwith < si->measurewidth + SPACE_FOR_BARLINE) si->measurewidth = si->widthtoworkwith - SPACE_FOR_BARLINE; find_xes_in_all_measures (si); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); /*nudgerightward (si); */ } /** * Determines whether the closer jump will be up or down */ gint jumpcursor (gint cursor_y, gint fromnote, gint tonote) { int distance; distance = (tonote - fromnote + 7) % 7; if (distance <= 3) /* an upward jump is good */ return cursor_y + distance; else /* jump down */ return cursor_y - 7 + distance; } /** * Reset the cursor stats: sets currentobject to the si->cursor_x'th object in currentmeasure, if no such object sets cursor_appending. NOTE does not set cursor appending false if there is an object... * @param si pointer to the scoreinfo structure * @return none */ static void reset_cursor_stats (DenemoMovement * si) { si->currentobject = g_list_nth ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects, si->cursor_x); if (!si->currentobject) { si->currentobject = g_list_last ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects); si->cursor_appending = TRUE; } } /** * General function for inserting a DenemoObject * into the score * the object is inserted at position gui->movement->cursor_x in the list of objects (counting from 0) * gui->movement->cursor_x is incremented * gui->movement->currentobject is set to the object at the new cursor_x position, unless this is too large, or we have cursor_appending in which case it is set to the last object. */ void object_insert (DenemoProject * gui, DenemoObject * mudela_obj_new) { DenemoMovement *si = gui->movement; measurenode *curmeasure = si->currentmeasure; if (mudela_obj_new->type == TIMESIG) { ((DenemoMeasure*)curmeasure->data)->timesig = mudela_obj_new->object; } /* update undo information */ DenemoUndoData *undo; if (!si->undo_guard) { undo = (DenemoUndoData *) g_malloc (sizeof (DenemoUndoData)); // should not be needed, we are inserting the object undo->object = dnm_clone_object (mudela_obj_new); //do position after inserting, so we can go back to it to delete } objnode *obj = g_list_nth ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects, si->cursor_x - 1); if (obj) { mudela_obj_new->clef = (mudela_obj_new->type == CLEF)?mudela_obj_new->object:((DenemoObject*)obj->data)->clef; mudela_obj_new->keysig = (mudela_obj_new->type == KEYSIG)?mudela_obj_new->object:((DenemoObject*)obj->data)->keysig; mudela_obj_new->stemdir = (mudela_obj_new->type == STEMDIRECTIVE)?mudela_obj_new->object:((DenemoObject*)obj->data)->stemdir; } else { mudela_obj_new->clef = (mudela_obj_new->type == CLEF)?mudela_obj_new->object:((DenemoMeasure*)curmeasure->data)->clef; mudela_obj_new->keysig = (mudela_obj_new->type == KEYSIG)?mudela_obj_new->object:((DenemoMeasure*)curmeasure->data)->keysig; mudela_obj_new->stemdir = (mudela_obj_new->type == STEMDIRECTIVE)?mudela_obj_new->object:((DenemoMeasure*)curmeasure->data)->stemdir; } ((DenemoMeasure*)si->currentmeasure->data)->objects = g_list_insert ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects, mudela_obj_new, si->cursor_x); obj = g_list_nth ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects, si->cursor_x);//g_assert (obj->data == mudela_obj_new); if (mudela_obj_new->type == CLEF) update_clef_cache (si->currentmeasure, obj); else if (mudela_obj_new->type == KEYSIG) update_keysig_cache (si->currentmeasure, obj); else if (mudela_obj_new->type == TIMESIG) update_timesig_cache (si->currentmeasure); else if (mudela_obj_new->type == STEMDIRECTIVE) update_stemdir_cache (si->currentmeasure, obj); if (mudela_obj_new->type == CLEF) { reset_cursor_stats (si); staff_fix_note_heights ((DenemoStaff *) si->currentstaff->data); staff_beams_and_stems_dirs ((DenemoStaff *) si->currentstaff->data); find_xes_in_all_measures (si); } if (!si->undo_guard) { get_position (si, &undo->position); undo->position.appending = 0; undo->action = ACTION_INSERT; update_undo_info (si, undo); } si->cursor_x++; if (si->cursor_appending) si->currentobject = g_list_last ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects); else si->currentobject = g_list_nth ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects, si->cursor_x); if (si->currentobject == NULL) { g_warning ("problematic parameters on insert %d out of %d objects", si->cursor_x + 1, g_list_length ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects)); si->cursor_x--; si->currentobject = g_list_nth ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects, si->cursor_x); } //g_debug("object insert appending %d cursor_x %d length %d\n", si->cursor_appending, si->cursor_x, g_list_length(((DenemoMeasure*)si->currentmeasure->data)->objects)); score_status (gui, TRUE); si->markstaffnum = 0; displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Change the y position of each staff */ void adjuststaffheight (DenemoMovement * si, gint amount) { si->staffspace += amount; if (si->staffspace < 2 * STAFF_HEIGHT) si->staffspace = 2 * STAFF_HEIGHT; displayhelper (Denemo.project); score_status(Denemo.project, TRUE); /*nudge_downward (si); */ } /** * Move an entire measure to the left * */ static void gomeasureleft (DenemoScriptParam * param, gboolean extend_selection) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; DenemoScriptParam dummy; if (param == NULL) param = &dummy; param->status = FALSE; if (extend_selection && !si->markstaffnum) set_mark (NULL, NULL); if (gui->movement->currentmeasure->prev) { gui->movement->currentmeasurenum--; if (!gui->movement->playingnow) //during playback cursor moves should not affect viewport isoffleftside (gui); param->status = TRUE; write_status (gui); } setcurrents (gui->movement); if (extend_selection) calcmarkboundaries (gui->movement); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); } /** * Move an entire measure to the left * */ void measureleft (DenemoAction* action, DenemoScriptParam * param) { gomeasureleft (param, TRUE); } /** * Move an entire measure to the right * */ static void gomeasureright (DenemoScriptParam * param, gboolean extend_selection) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; DenemoScriptParam dummy; if (param == NULL) param = &dummy; param->status = FALSE; if (extend_selection && !si->markstaffnum) set_mark (NULL, NULL); if (gui->movement->currentmeasure->next) { gui->movement->currentmeasurenum++; if (!gui->movement->playingnow) //during playback cursor moves should not affect viewport isoffrightside (gui); setcurrents (gui->movement); param->status = TRUE; if (extend_selection) calcmarkboundaries (gui->movement); write_status (gui); } if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); } void measureright (DenemoAction* action, DenemoScriptParam * param) { gomeasureright (param, TRUE); } void movetomeasureright (DenemoAction* action, DenemoScriptParam * param) { gomeasureright (param, FALSE); } void movetomeasureleft (DenemoAction* action, DenemoScriptParam * param) { gomeasureleft (param, FALSE); } /** * swap the current movement for the previous one in the list of movements * return TRUE if movements are swapped */ gboolean swapmovements (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; (void) signal_structural_change (gui); GList *this = g_list_find (gui->movements, gui->movement); if (this->prev) { GList *prev = this->prev; GList *prevv = prev->prev; GList *next = this->next; if (next) next->prev = prev; if (prevv) prevv->next = this; else gui->movements = this; this->next = prev; this->prev = prevv; prev->next = next; prev->prev = this; set_movement_selector (gui); gchar *str = g_strdup_printf (_("This movement is now number %d in the score"), 1 + g_list_index (gui->movements, gui->movement)); infodialog (str); g_free (str); return TRUE; } else warningdialog (_("There is no previous movement to swap with")); return FALSE; } /** * * */ gboolean swapstaffs (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; (void) signal_structural_change (gui); if (gui->movement->currentstaff && gui->movement->currentstaff->prev) { DenemoStaff *temp; //if this is a staff with no voices extra voices on it then swap if (((DenemoStaff *) gui->movement->currentstaff->data)->voicecontrol == DENEMO_PRIMARY && ((gui->movement->currentstaff->next == NULL) || !(((DenemoStaff *) gui->movement->currentstaff->next->data)->voicecontrol & DENEMO_SECONDARY))) { temp = gui->movement->currentstaff->data; if (temp->context == DENEMO_NONE || confirm (_("A context is set on this staff"), _("You will need to alter the staff → properties → context of this and the previous staff; Proceed?"))) { take_snapshot (); gui->movement->currentstaff->data = gui->movement->currentstaff->prev->data; gui->movement->currentstaff->prev->data = temp; gui->movement->currentstaffnum--; gui->movement->currentstaff = gui->movement->currentstaff->prev; staff_set_current_primary (gui->movement); setcurrents (gui->movement); move_viewport_up (gui); score_status (gui, TRUE); displayhelper (gui); return TRUE; } } else warningdialog (_("Split off voices from this staff first")); } else warningdialog (_("There is no previous staff to swap with")); return FALSE; } /** * * */ gboolean splitstaffs (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; if (gui->movement->currentstaff && gui->movement->currentstaff->next) { take_snapshot (); DenemoStaff *thestaff = (DenemoStaff *) gui->movement->currentstaff->data; DenemoStaff *nextstaff = (DenemoStaff *) gui->movement->currentstaff->next->data; if ((thestaff->voicecontrol & DENEMO_PRIMARY) && (nextstaff->voicecontrol == DENEMO_SECONDARY)) nextstaff->voicecontrol = DENEMO_SECONDARY | DENEMO_PRIMARY; else warningdialog (_("There is no voice below this one on this staff")); staff_set_current_primary (gui->movement); setcurrents (gui->movement); move_viewport_up (gui); score_status (gui, TRUE); displayhelper (gui); return TRUE; } else warningdialog (_("There is no voice below this one to split from")); return FALSE; } /** * * */ gboolean joinstaffs (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; if (gui->movement->currentstaff && gui->movement->currentstaff->prev) { take_snapshot (); DenemoStaff *thestaff = (DenemoStaff *) gui->movement->currentstaff->data; thestaff->voicecontrol = DENEMO_SECONDARY; staff_set_current_primary (gui->movement); setcurrents (gui->movement); move_viewport_up (gui); score_status (gui, TRUE); displayhelper (gui); return TRUE; } else warningdialog (_("There is no staff above to move this staff into")); return FALSE; } /** * Move si->currentstaff up an one voice, return TRUE if successful * param is NULL for interactive calls, otherwise status is returned in param->status; * alter selection if extend_selection */ static gboolean govoiceup (DenemoScriptParam * param, gboolean extend_selection) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; DenemoScriptParam dummy; if (param == NULL) param = &dummy; param->status = FALSE; if (!gui->movement->currentstaff) return param->status = FALSE;//should never happen if (extend_selection && !si->markstaffnum) set_mark (NULL, NULL); if (gui->movement->currentstaff && (((DenemoStaff *) (gui->movement->currentstaff->data))->voicecontrol & DENEMO_SECONDARY)) { hide_lyrics (); gui->movement->currentstaffnum--; gui->movement->currentstaff = gui->movement->currentstaff->prev; staff_set_current_primary (gui->movement); setcurrents (gui->movement); show_lyrics (); move_viewport_down (gui); set_cursor_transition (); param->status = TRUE; } else if (param == &dummy) //is interactive warningmessage (_("This is the first voice")); write_status(gui); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); return param->status; } /** * Move si->currentstaff up an one staff, not skipping voices unless displayed on same staff, return TRUE if successful * alter selection if extend_selection */ static gboolean gostaffup (DenemoScriptParam * param, gboolean extend_selection) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; DenemoScriptParam dummy; if (param == NULL) param = &dummy; param->status = FALSE; if (!gui->movement->currentstaff) return param->status = FALSE;//should never happen gboolean was_hidden = ((DenemoStaff *) (gui->movement->currentstaff->data))->hidden; if (extend_selection && !si->markstaffnum) set_mark (NULL, NULL); while ((((DenemoStaff *) (gui->movement->currentstaff->data))->voicecontrol == DENEMO_SECONDARY) && govoiceup (param, extend_selection)) ;/* do nothing */ if (gui->movement->currentstaff->prev) { hide_lyrics (); gui->movement->currentstaffnum--; gui->movement->currentstaff = gui->movement->currentstaff->prev; staff_set_current_primary (gui->movement); setcurrents (gui->movement); if (extend_selection) calcmarkboundaries (gui->movement); show_lyrics (); find_leftmost_allcontexts (si); update_drawing_cache ();; move_viewport_up (gui); set_cursor_transition (); param->status = TRUE; if (was_hidden != ((DenemoStaff *) (gui->movement->currentstaff->data))->hidden) set_staff_transition (20); } else if (param == &dummy) //is interactive warningmessage (_("This is the first staff")); write_status(gui); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); return param->status; } /** * Move si->currentstaff down one voice, skipping voices, return TRUE if successful * alter selection if extend_selection */ static gboolean govoicedown (DenemoScriptParam * param, gboolean extend_selection) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; DenemoScriptParam dummy; if (param == NULL) param = &dummy; param->status = FALSE; if (!gui->movement->currentstaff) return param->status = FALSE; if (extend_selection && !si->markstaffnum) set_mark (NULL, NULL); if (gui->movement->currentstaff->next && ((DenemoStaff *) (gui->movement->currentstaff->next->data))->voicecontrol & DENEMO_SECONDARY) { hide_lyrics (); gui->movement->currentstaffnum++; gui->movement->currentstaff = gui->movement->currentstaff->next; staff_set_current_primary (gui->movement); setcurrents (gui->movement); if (extend_selection) calcmarkboundaries (gui->movement); show_lyrics (); move_viewport_down (gui); set_cursor_transition (); param->status = TRUE; } else if (param == &dummy) //is interactive warningmessage (_("This is the last voice")); write_status(gui); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); return param->status; } gboolean movetovoicedown (DenemoAction* action, DenemoScriptParam * param) { return govoicedown (param, FALSE); } gboolean voicedown (DenemoAction* action, DenemoScriptParam * param) { return govoicedown (param, TRUE); } gboolean movetovoiceup (DenemoAction* action, DenemoScriptParam * param) { return govoiceup (param, FALSE); } gboolean voiceup (DenemoAction* action, DenemoScriptParam * param) { return govoiceup (param, TRUE); } /** * Move si->currentstaff down one staff/voice, not skipping voices unless displayed on same staff, return TRUE if successful * alter selection if extend_selection */ static gboolean gostaffdown (DenemoScriptParam * param, gboolean extend_selection) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; DenemoScriptParam dummy; if (param == NULL) param = &dummy; param->status = FALSE; if (!gui->movement->currentstaff) return param->status = FALSE; gboolean was_hidden = ((DenemoStaff *) (gui->movement->currentstaff->data))->hidden; if (extend_selection && !si->markstaffnum) set_mark (NULL, NULL); while (gui->movement->currentstaff->next && (((DenemoStaff *) (gui->movement->currentstaff->next->data))->voicecontrol == DENEMO_SECONDARY) && govoicedown (param, extend_selection)) ; /* do nothing */ if (gui->movement->currentstaff->next) { hide_lyrics (); gui->movement->currentstaffnum++; gui->movement->currentstaff = gui->movement->currentstaff->next; staff_set_current_primary (gui->movement); setcurrents (gui->movement); if (extend_selection) calcmarkboundaries (gui->movement); show_lyrics (); find_leftmost_allcontexts (si); update_drawing_cache (); move_viewport_down (gui); set_cursor_transition (); param->status = TRUE; if (was_hidden != ((DenemoStaff *) (gui->movement->currentstaff->data))->hidden) set_staff_transition (20); } else if (param == &dummy) //is interactive warningmessage (_("This is the last staff")); write_status(gui); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); return param->status; } gboolean movetostaffdown (DenemoAction* action, DenemoScriptParam * param) { return gostaffdown (param, FALSE); } gboolean staffdown (DenemoAction* action, DenemoScriptParam * param) { return gostaffdown (param, TRUE); } gboolean movetostaffup (DenemoAction* action, DenemoScriptParam * param) { return gostaffup (param, FALSE); } gboolean staffup (DenemoAction* action, DenemoScriptParam * param) { return gostaffup (param, TRUE); } /** * move the cursor one position to the left * */ gboolean move_left (DenemoScriptParam * param, gboolean extend_selection) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; DenemoScriptParam dummy; if (param == NULL) param = &dummy; param->status = FALSE; if (extend_selection && !si->markstaffnum) set_mark (NULL, NULL); g_debug ("cursorleft: cursorpos %d\n", si->cursor_x); if (!si->cursor_x) { /* also the only situation where si->currentobject == NULL */ if (si->currentmeasure->prev) { g_debug ("Currentmeasure prev == TRUE"); /* Go to end of preceding measure */ si->cursor_appending = TRUE; si->currentmeasure = si->currentmeasure->prev; si->currentmeasurenum--; if (!si->playingnow) //during playback cursor moves should not affect viewport isoffleftside (gui); si->currentobject = g_list_last ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects); /* The preceding statement will set currentobject to * NULL if appropriate */ si->cursor_x = g_list_length ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects); /* Despite appearances, there is not an off-by-one error in the * preceding command */ param->status = TRUE; } } else if (si->cursor_appending) { /* Can back off from appending */ si->cursor_appending = FALSE; si->cursor_x--; param->status = TRUE; } else { /* Can go back in the measure */ if (si->currentobject && si->currentobject->prev) { si->currentobject = si->currentobject->prev; si->cursor_x--; param->status = TRUE; } } if (extend_selection) calcmarkboundaries (si); write_status (gui); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); return param->status; } /** * move the cursor one position to the right * selection (if any) is extended if extend_selection is TRUE * sets param->status TRUE if cursor could still move right, and returns that value. */ gboolean move_right (DenemoScriptParam * param, gboolean extend_selection) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; DenemoScriptParam dummy; if (param == NULL) param = &dummy; param->status = FALSE; if (extend_selection && !si->markstaffnum) set_mark (NULL, NULL); if (si->cursor_appending && si->currentmeasure->next) { /* Go to the next measure */ si->currentmeasure = si->currentmeasure->next; si->currentmeasurenum++; if (!si->playingnow) //during playback cursor moves should not affect viewport isoffrightside (gui); si->currentobject = (objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects; si->cursor_x = 0; if (si->currentobject) si->cursor_appending = FALSE; } else if (si->currentobject) { /* See if we should go to appending position. If not, go to the * next note (if possible) */ if (!si->cursor_appending && !si->currentobject->next) { /* Go to appending position */ si->cursor_appending = TRUE; si->cursor_x++; } else if (si->currentobject->next) { si->currentobject = si->currentobject->next; si->cursor_x++; } else return param->status = FALSE; } if (extend_selection) calcmarkboundaries (si); write_status (gui); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); return (param->status = (si->currentobject || (!si->cursor_appending) || si->currentmeasure->next)); } /** * move the cursor one position to the right extending the selection if any * sets param->status TRUE if cursor could still move right, and returns that value. */ gboolean cursorright (DenemoAction* action, DenemoScriptParam * param) { return move_right (param, TRUE); } /** * move the cursor one position to the left extending the selection if any * sets param->status TRUE if cursor could still move left, and returns that value. */ gboolean cursorleft (DenemoAction* action, DenemoScriptParam * param) { return move_left (param, TRUE); } // cursor move without altering selection gboolean movecursorright (DenemoAction* action, DenemoScriptParam * param) { return move_right (param, FALSE); } gboolean movecursorleft (DenemoAction* action, DenemoScriptParam * param) { return move_left (param, FALSE); } // moves the cursor in the direction indicated, observing within_measure and if stopping stopping at empty measures static gboolean to_object_direction (gboolean within_measure, gboolean right, gboolean stopping) { if (!Denemo.project || !(Denemo.project->movement)) return FALSE; GList *start_obj = Denemo.project->movement->currentobject; GList *start_measure = Denemo.project->movement->currentmeasure; gboolean was_appending = Denemo.project->movement->cursor_appending; if (start_obj && Denemo.project->movement->cursor_appending) movecursorleft (NULL, NULL); if (start_obj == NULL) { if (within_measure) return FALSE; // start object is NULL, not restricted to current measure if (right) { if (start_measure->next) { movetomeasureright (NULL, NULL); if (Denemo.project->movement->currentobject) return TRUE; else if (stopping) return FALSE; else return to_object_direction (within_measure, right, stopping); } else return FALSE; } // going left, start object is NULL, not restricted to current measure, going previous if (start_measure->prev) { movecursorleft (NULL, NULL); if (Denemo.project->movement->currentobject == NULL){ if (stopping) return FALSE; else return to_object_direction (within_measure, right, stopping); } movecursorleft (NULL, NULL); return TRUE; } return FALSE; } //start object is not NULL if (within_measure) { if (right) { if (start_obj->next) { movecursorright (NULL, NULL); return TRUE; } if (was_appending) movecursorright (NULL, NULL); return FALSE; } //left if (start_obj->prev == NULL) return FALSE; } //not restricted to this measure if (right) { if (start_obj->next) { movecursorright (NULL, NULL); return TRUE; } if (start_measure->next) { movetomeasureright (NULL, NULL); if (Denemo.project->movement->currentobject == NULL){ if (stopping) return FALSE; else return to_object_direction (within_measure, right, stopping); } return TRUE; } if (was_appending) movecursorright (NULL, NULL); return FALSE; } //left if (start_obj->prev) { movecursorleft (NULL, NULL); return TRUE; } if (start_measure->prev) { movecursorleft (NULL, NULL); if (Denemo.project->movement->currentobject == NULL){ if (stopping) return FALSE; else return to_object_direction (within_measure, right, stopping); } movecursorleft (NULL, NULL); return TRUE; } return FALSE; } static gboolean to_standalone_directive_direction (gboolean right) { gboolean ret = to_object_direction (FALSE, right, FALSE); if (!ret) return ret; write_status(Denemo.project); if (Denemo.project->movement->currentobject && Denemo.project->movement->currentobject->data && ((DenemoObject *) Denemo.project->movement->currentobject->data)->type == LILYDIRECTIVE) return TRUE; else return to_standalone_directive_direction (right); } /* moves currentobject to object in the selection in the direction indicated by right. Steps over barlines (i.e. cursor_appending). returns TRUE if currentobject is different after than before the call */ static gboolean to_selected_object_direction (gboolean right) { if (!Denemo.project || !(Denemo.project->movement)) return FALSE; gboolean success = to_object_direction (FALSE, right, FALSE); if (!success) success = to_object_direction (FALSE, right, FALSE); write_status(Denemo.project); if ((success) && in_selection (Denemo.project->movement)) return TRUE; if (success) to_object_direction (FALSE, !right, FALSE); return FALSE; } static gboolean to_chord_direction (gboolean right, gboolean stopping) { gboolean ret = to_object_direction (FALSE, right, stopping); if (!ret) return ret; write_status(Denemo.project); if (Denemo.project->movement->currentobject && Denemo.project->movement->currentobject->data && ((DenemoObject *) Denemo.project->movement->currentobject->data)->type == CHORD) return TRUE; else return to_chord_direction (right, stopping); } static gboolean to_chord_direction_in_measure (gboolean right) { gboolean ret = to_object_direction (TRUE, right, TRUE); if (!ret) return ret; write_status(Denemo.project); if (Denemo.project->movement->currentobject && Denemo.project->movement->currentobject->data && ((DenemoObject *) Denemo.project->movement->currentobject->data)->type == CHORD) return TRUE; else return to_chord_direction_in_measure (right); } static gboolean to_standalone_direction_in_measure (gboolean right) { gboolean ret = to_object_direction (TRUE, right, TRUE); if (!ret) return ret; write_status(Denemo.project); if (Denemo.project->movement->currentobject && Denemo.project->movement->currentobject->data && ((DenemoObject *) Denemo.project->movement->currentobject->data)->type == LILYDIRECTIVE) return TRUE; else return to_standalone_direction_in_measure (right); } // there is a significant problem with the concept of next note in a chord of several notes. We have no way of iterating over the notes of a chord // since the notes may be altered during the iteration and Denemo does not define a "currentnote" //but we can define cursor_to_top_note() and cursor_next_note_down() the latter moving to the next note below the cursor position (if any). gboolean cursor_to_nth_note_height(gint n) { DenemoProject *gui = Denemo.project; DenemoObject *curObj; chord *thechord; note *thenote; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) thechord->notes->data)) return FALSE; if(n >= g_list_length (thechord->notes)) return FALSE; thenote = g_list_nth (thechord->notes, n)->data; gint mid_c_offset = thenote->mid_c_offset; //g_print("Mid c offset required %d\n", mid_c_offset); //g_print ("Currently gui->movement->cursor_y = %d\n", gui->movement->cursor_y); if (gui->movement->cursor_y < mid_c_offset) while (gui->movement->cursor_y < mid_c_offset) cursorup (NULL, NULL); else while (gui->movement->cursor_y > mid_c_offset) cursordown (NULL, NULL); return (gui->movement->cursor_y == mid_c_offset); } gboolean cursor_to_next_note_height(void) { GList *thenotes; DenemoProject *gui = Denemo.project; DenemoObject *curObj; chord *thechord; note *thenote; gint mid_c_offset; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thenotes = thechord->notes) || !(thenote = (note *) thenotes->data)) return FALSE; cursorup (NULL, NULL); //seek *above* the current cursor position only for(;thenotes;thenotes=thenotes->next) { thenote = (note *) thenotes->data; mid_c_offset = thenote->mid_c_offset;// g_print ("Currently gui->movement->cursor_y = %d considering %d\n", gui->movement->cursor_y, mid_c_offset); while (gui->movement->cursor_y < mid_c_offset) cursorup (NULL, NULL); if (gui->movement->cursor_y == mid_c_offset) break; } return (gui->movement->cursor_y == mid_c_offset); } //This next note is next chord that is not a rest in the given direction. static gboolean to_note_direction (gboolean right, gboolean stopping) { gboolean ret = to_chord_direction (right, stopping); if (!ret) return ret; write_status(Denemo.project); if (Denemo.project->movement->currentobject && Denemo.project->movement->currentobject->data && ((DenemoObject *) Denemo.project->movement->currentobject->data)->type == CHORD && ((((chord *) (((DenemoObject *) Denemo.project->movement->currentobject->data)->object))->notes)) && (!Denemo.project->movement->cursor_appending)) return TRUE; else return to_note_direction (right, stopping); } /******** advances the cursor to the next note, stopping at empty measures. The cursor is left after last note if no more notes */ gboolean next_editable_note (void) { gboolean ret = to_note_direction (TRUE, TRUE); if ((!ret) && Denemo.project->movement->currentobject == NULL) { to_note_direction (FALSE, TRUE); } if (!ret) movecursorright (NULL, NULL); else write_status(Denemo.project); return ret; } /******** advances the cursor to the next note, stopping at empty measures and at appending position if any. The cursor is left after last note if no more notes */ gboolean next_insert_or_editable_note (void) { gboolean ret; if (Denemo.project->movement->currentobject && (Denemo.project->movement->currentobject->next == NULL)) { ret = FALSE; } else { ret = to_note_direction (TRUE, TRUE); if ((!ret) && Denemo.project->movement->currentobject == NULL) { to_note_direction (FALSE, TRUE); } } if (!ret) { movecursorright (NULL, NULL); if (Denemo.project->movement->currentobject == NULL) movecursorleft (NULL, NULL); } else write_status(Denemo.project); return ret; } gboolean cursor_to_next_object (gboolean within_measure, gboolean stopping) { return to_object_direction (within_measure, TRUE, stopping); } gboolean cursor_to_prev_object (gboolean within_measure, gboolean stopping) { return to_object_direction (within_measure, FALSE, stopping); } gboolean cursor_to_next_selected_object (void) { return to_selected_object_direction (TRUE); } gboolean cursor_to_prev_selected_object (void) { return to_selected_object_direction (FALSE); } gboolean cursor_to_next_standalone_directive (void) { return to_standalone_directive_direction (TRUE); } gboolean cursor_to_prev_standalone_directive (void) { return to_standalone_directive_direction (FALSE); } gboolean cursor_to_next_standalone_in_measure (void) { return to_standalone_direction_in_measure (TRUE); } gboolean cursor_to_prev_standalone_in_measure (void) { return to_standalone_direction_in_measure (FALSE); } gboolean cursor_to_next_chord (void) { return to_chord_direction (TRUE, FALSE); } gboolean cursor_to_prev_chord (void) { return to_chord_direction (FALSE, FALSE); } gboolean cursor_to_next_chord_in_measure (void) { return to_chord_direction_in_measure (TRUE); } gboolean cursor_to_prev_chord_in_measure (void) { return to_chord_direction_in_measure (FALSE); } //Badly named - it is a next chord that is not a rest gboolean cursor_to_next_note (void) { return to_note_direction (TRUE, FALSE); } //Badly named - it is a prev chord that is not a rest gboolean cursor_to_prev_note (void) { return to_note_direction (FALSE, FALSE); } /** * Move the cursor up one diatonic step */ void cursorup (DenemoAction* action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; DenemoScriptParam dummy; if (param == NULL) param = &dummy; param->status = FALSE; gui->movement->cursor_y++; gui->movement->staffletter_y = (gui->movement->staffletter_y + 1) % 7; param->status = TRUE; //FIXME introduce some range boundaries, settable by user for instrument ranges. //g_debug ("Cursor Y Position %d\n", gui->movement->cursor_y); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); update_object_info (); } /** * Move the cursor down one diatonic step */ void cursordown (DenemoAction* action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; DenemoScriptParam dummy; if (param == NULL) param = &dummy; param->status = FALSE; gui->movement->cursor_y--; gui->movement->staffletter_y = (gui->movement->staffletter_y + 6) % 7; param->status = TRUE; //FIXME introduce some range boundaries, settable by user for instrument ranges. //g_debug ("Cursor Y Position %d\n", gui->movement->cursor_y); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); update_object_info (); } static gboolean cur_object_is_rhythm (DenemoProject * gui) { if (gui->movement->currentobject == NULL) return FALSE; return ((DenemoObject *) (gui->movement->currentobject->data))->isinvisible; } /* insert a note into the score at the current cursor position following the current rhythm step */ void insert_note_following_pattern (DenemoProject * gui) { if (gui->rstep) { GList *h; gint mode = gui->mode; gui->mode = mode & ~INPUTRHYTHM; //without this, when entering a note-name at the pc-keyboard a pitchless note is entered (with a MIDI controller attached, at least). And playing a note in appending position on the MIDI keyboard first enters a pitchless note. // if(gui->currhythm && gui->currhythm->data && ((RhythmPattern*)gui->currhythm->data)->clipboard) if (gui->currhythm && gui->cstep) //snippet { // g_debug("Have a clip\n"); GList *objs; gboolean note_inserted = FALSE; for (objs = gui->cstep; objs; objs = objs->next) { if (((DenemoObject *) objs->data)->type == CHORD && (note_inserted)) break; DenemoObject *clipobj = dnm_clone_object (objs->data); if ((((DenemoObject *) objs->data)->type == CHORD) && ((chord *) clipobj->object)->notes) { chord *thechord = (chord *) clipobj->object; note *thenote = (note *) (thechord->notes->data); thenote->mid_c_offset = gui->movement->cursor_y; gint dclef = gui->movement->currentobject?((DenemoObject*)gui->movement->currentobject->data)->clef->type:((DenemoMeasure*)gui->movement->currentmeasure->data)->clef->type; thechord->lowesty = thechord->highesty = thenote->y = calculateheight (thenote->mid_c_offset, dclef); thechord->lowestpitch = thechord->highestpitch = thechord->sum_mid_c_offset = thenote->mid_c_offset; clipobj->isinvisible = FALSE; note_inserted = TRUE; gui->rstep = gui->rstep->next; } insertion_point_for_type (gui->movement, ((DenemoObject *) objs->data)->type); object_insert (Denemo.project, clipobj); } //g_assert (g_list_first(gui->cstep) == (((RhythmPattern *) gui->currhythm->data)->clipboard)->data); gui->cstep = (objs ? objs : (((RhythmPattern *) gui->currhythm->data)->clipboard)->data); } else //singleton { insertion_point (gui->movement); gui->movement->cursoroffend = FALSE; h = ((RhythmElement *) gui->rstep->data)->functions; #if GTK_MAJOR_VERSION==3 ((GSourceFunc) h->data) (gui); #else ((GtkFunction) h->data) (gui); #endif displayhelper (gui); } if (((RhythmElement *) gui->rstep->data)->highlightlabel) { /* singletons do not have highlightlabel */ RhythmPattern *cursnip = gui->currhythm->data; set_rhythm_label (cursnip, ((RhythmElement *) gui->rstep->data)->highlightlabel); } gui->mode = mode; score_status (gui, TRUE); } } /* get duration of next element in current rhythm pattern */ gint get_prevailing_duration (void) { DenemoProject *gui = Denemo.project; gint duration = 0; if (gui->rstep) { if (gui->currhythm && gui->cstep) { GList *objs; for (objs = gui->cstep; objs; objs = objs->next) { if ((((DenemoObject *) objs->data)->type == CHORD)) { duration = ((chord *) ((DenemoObject *) objs->data)->object)->baseduration; break; } } } else { for (duration = 0; duration < 7; duration++) if ((Denemo.project->prevailing_rhythm == Denemo.singleton_rhythms['0' + duration]) || (Denemo.project->prevailing_rhythm == Denemo.singleton_rhythms['r' + duration])) break; } } return duration; } void move_to_pitch (DenemoProject * gui, gint note_value) { gint oldstaffletter_y = gui->movement->staffletter_y; gui->movement->staffletter_y = note_value; gui->movement->cursor_y = jumpcursor (gui->movement->cursor_y, oldstaffletter_y, gui->movement->staffletter_y); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); } /* insert_pitch * inserts a note at the cursor following the prevailing rhythm */ void insert_pitch (DenemoProject * gui, gint note_value) { gint oldstaffletter_y = gui->movement->staffletter_y; gui->movement->staffletter_y = note_value; gui->movement->cursor_y = jumpcursor (gui->movement->cursor_y, oldstaffletter_y, gui->movement->staffletter_y); insert_note_following_pattern (gui); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); } /** * edit_pitch * edits the note at the cursor height to have given mid_c_offset with pending enshift as modifier or absolute value */ void edit_or_append_pitch (gint note_value, gboolean absolute) { DenemoProject *gui = Denemo.project; gint oldstaffletter_y = gui->movement->staffletter_y; gint oldcursor_y = gui->movement->cursor_y; gui->movement->staffletter_y = note_value; gui->movement->cursor_y = jumpcursor (gui->movement->cursor_y, oldstaffletter_y, gui->movement->staffletter_y); int mid_c_offset = gui->movement->cursor_y; if ((gui->mode & INPUTEDIT) && ((!gui->movement->cursor_appending) || cur_object_is_rhythm (gui))) { DenemoObject *theobj = (DenemoObject *) (gui->movement->currentobject->data); chord *thechord; if (theobj->type == CHORD && (thechord = (chord *) theobj->object)->notes) { store_for_undo_change (gui->movement, theobj); //turn off further storage of UNDO info while this takes place gui->movement->undo_guard++; theobj->isinvisible = FALSE; if (g_list_length (thechord->notes) > 1) { /* multi-note chord - remove and add a note */ gui->movement->cursor_y = oldcursor_y; delete_chordnote (gui); gui->movement->cursor_y = mid_c_offset; insert_chordnote (gui); } else { /* single-note chord - change the note */ gint dclef = theobj->clef->type; keysig *key = theobj->keysig; if(!thechord->is_tied) { modify_note (thechord, mid_c_offset, key->accs[note_value], dclef); if (absolute) setenshift (gui->movement, Denemo.project->movement->pending_enshift); else if (Denemo.project->movement->pending_enshift) incrementenshift (gui, Denemo.project->movement->pending_enshift); } else //if tied modify the tied note(s) too, FIXME but this breaks the UNDO mechanism, see store_for_undo_change (gui->movement, theobj) above - now recursive - does that fix it? { gint enshift = Denemo.project->movement->pending_enshift; modify_note (thechord, mid_c_offset, key->accs[note_value], dclef); if (absolute) setenshift (gui->movement, Denemo.project->movement->pending_enshift); else if (Denemo.project->movement->pending_enshift) incrementenshift (gui, Denemo.project->movement->pending_enshift); DenemoPosition pos; get_position (Denemo.project->movement, &pos); gboolean ret = cursor_to_next_chord (); if (ret) { Denemo.project->movement->pending_enshift = enshift; edit_or_append_pitch (note_value, absolute); } goto_movement_staff_obj (NULL, -1, -1, pos.measure, pos.object, pos.leftmeasurenum); } } gui->movement->undo_guard--; score_status (gui, TRUE); } } else { gint enshift = Denemo.project->movement->pending_enshift; insert_pitch (gui, note_value); if (absolute) setenshift (gui->movement, enshift); else if (Denemo.project->movement->pending_enshift) incrementenshift (gui, Denemo.project->movement->pending_enshift); } if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); } void insert_rhythm_pattern (DenemoAction* action, DenemoScriptParam* param) { if (Denemo.project->rhythms==NULL) { g_warning("No snippets"); return; } if (Denemo.project->currhythm == NULL) call_out_to_guile("(d-InsertNthSnippet)"); else insert_clipboard (((RhythmPattern *) Denemo.project->currhythm->data)->clipboard); } void insertion_point_for_type (DenemoMovement * si, DenemoObjType type) { switch (type) { case TUPCLOSE: return; default: break; } insertion_point (si); } static void set_cursor_offend (void) { DenemoMovement * si = Denemo.project->movement; DenemoObject *curObj = si->currentobject?(DenemoObject*)si->currentobject->data:NULL; if (curObj) { gint tickspermeasure = WHOLE_NUMTICKS * ((DenemoMeasure*)si->currentmeasure->data)->timesig->time1 / ((DenemoMeasure*)si->currentmeasure->data)->timesig->time2; si->cursoroffend = (curObj->starttickofnextnote >= tickspermeasure); } else si->cursoroffend = FALSE; } /** * insertion_point() * chooses/creates a good insertion point. * if the cursor is at the end of a full measure: * creates a new measure and makes it the current one. * if the cursor is at the end of a full measure before an empty measure: * it makes that empty measure current. * */ void insertion_point (DenemoMovement * si) { gboolean next_measure; /* First, check to see if the insertion'll cause the cursor to * jump to the next measure. (Denemo will implicitly create it * if it doesn't exist already.) */ set_cursor_offend (); next_measure = FALSE; if(si->cursoroffend && si->cursor_appending) { if ( (!si->currentmeasure->next) || (!((DenemoMeasure*)si->currentmeasure->next->data)->objects)) next_measure = TRUE; else { objnode *objnode = ((DenemoMeasure*)si->currentmeasure->next->data)->objects; DenemoObject *obj = objnode?objnode->data:NULL; while (obj && (obj->type != CHORD)) { objnode=objnode->next;obj = objnode?objnode->data:NULL; } if ((obj==NULL) || (obj->type != CHORD)) next_measure = TRUE; } } if (next_measure) { if (!si->currentmeasure->next) { gboolean all = TRUE; //add to all measures //g_debug ("Appending a new measure\n"); /* Add a measure and make it currentmeasure */ if (!(all && si->currentstaff && g_list_length (((DenemoStaff *) si->currentstaff->data)->themeasures) == g_list_length (si->measurewidths))) all = FALSE; // add only to current staff if it is shorter than some other staff si->currentmeasure = dnm_addmeasures (si, si->currentmeasurenum, 1, all); } else si->currentmeasure = si->currentmeasure->next; if (Denemo.project->mode & (INPUTRHYTHM)) signal_measure_end (); /* Now the stuff that needs to be done for each case */ si->currentmeasurenum++; si->currentobject = (objnode *) (si->currentmeasure->data?((DenemoMeasure*)si->currentmeasure->data)->objects : NULL); si->cursor_x = 0; while(si->currentobject && (((DenemoObject *)si->currentobject->data)->type != CHORD)) { si->currentobject = si->currentobject->next; si->cursor_x++; } // memcpy (si->cursoraccs, si->nextmeasureaccs, SEVENGINTS); // memcpy (si->curmeasureaccs, si->nextmeasureaccs, SEVENGINTS); // si->curmeasureclef = si->cursorclef; } } //get the prevailing accidental for the current cursor height, that is the last accidental before the cursor at this height (from a note or keysig change), or the cached keysig accidental static gint get_cursoracc (void) { //g_print ("Get cursoracc with %d\n", Denemo.project->last_source); if ( Denemo.project->last_source) return 0; //INPUT_MIDI and AUDIO ignore cursoracc DenemoMovement *si = Denemo.project->movement; gint noteheight = si->staffletter_y; measurenode *meas = si->currentmeasure; objnode *obj = si->currentobject; if ((!si->cursor_appending) && obj) obj = obj->prev;//want the object before the cursor unless appending for (;obj;obj = obj->prev) { DenemoObject *curobj = (DenemoObject*)obj->data; if (curobj->type == CHORD) { chord *thechord = (chord*) curobj->object; GList *g; for (g = thechord->notes?thechord->notes:NULL;g;g=g->next) { note *thenote = (note*)g->data; if (offsettonumber(thenote->mid_c_offset) == noteheight) return thenote->enshift; } } else if (curobj->type == KEYSIG) return curobj->keysig->accs [noteheight]; } //if (meas && meas->data && ((DenemoMeasure *)meas->data)->keysig) return ((DenemoMeasure *)meas->data)->keysig->accs [noteheight];// p *((DenemoMeasure *)(Denemo.project->movement->currentmeasure->data))->keysig // else // return 0; } void change_duration (duration) { highlight_duration (Denemo.project, duration); changeduration (Denemo.project->movement, duration); return; } /** * Insert a note into the score * @param gui pointer to the DenemoProject structure * @param duration the duration of the note to insert * @param mode the current input mode * @param rest specifies the note is a rest, else cursor height determines note-name */ void dnm_insertnote (DenemoProject * gui, gint duration, input_mode mode, gboolean rest) { DenemoMovement *si = gui->movement; DenemoObject *mudela_obj_new; gboolean inserting_midi = si->recording && (si->recording->type==DENEMO_RECORDING_MIDI) && si->marked_onset; insertion_point (si); //At this point, if it is the user's preference, check if there is room for this duration in the current measure. //if not put in a shorter note and tie it, then call recursively to put in the remaining duration. //only do this if we are in the appending position //The difficulty here is that we do not have the prevailing time signature cached (?), so we do not know when a measure is full. draw.c is used to compute this. //well, they are cached as cursortime1 and 2 in the DenemoMovement structure. // is the curObj->starttickofnextnote > tickspermeasure where tickspermeasure = WHOLE_NUMTICKS * time1 / time2 if(Denemo.prefs.spillover && si->cursor_appending) { DenemoObject *curObj; if(duration>= 0 && si->currentobject && (curObj=si->currentobject->data)) { if(curObj->type==CHORD) {//g_print("dur %d base %d\n", curObj->durinticks, curObj->basic_durinticks); gint ticks = (curObj->durinticks/ curObj->basic_durinticks) * WHOLE_NUMTICKS / (1 << duration); /* takes into account prevailing tuple */ gint tickspermeasure = WHOLE_NUMTICKS * ((DenemoMeasure*)si->currentmeasure->data)->timesig->time1 / ((DenemoMeasure*)si->currentmeasure->data)->timesig->time2; if ((curObj->starttickofnextnote < tickspermeasure) && ((ticks + curObj->starttickofnextnote) > tickspermeasure)) { gint enshift = Denemo.project->movement->pending_enshift; dnm_insertnote (gui, duration+1, mode, rest); //set si->cursoroffend if measure is full curObj = si->currentobject->data; si->cursoroffend = (curObj->starttickofnextnote >= tickspermeasure); toggle_tie (NULL, NULL); Denemo.project->movement->pending_enshift = enshift; dnm_insertnote (gui, duration+1, mode, rest); return; } } } } /* Now actually create the chord as an object (before insertion) */ mudela_obj_new = newchord (duration, 0, 0); { //we have to give the obj a clef to add the note to it objnode *obj = g_list_nth ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects, si->cursor_x -1); if (obj) { mudela_obj_new->clef = ((DenemoObject*)obj->data)->clef; mudela_obj_new->keysig = ((DenemoObject*)obj->data)->keysig; } else { mudela_obj_new->clef = ((DenemoMeasure*)si->currentmeasure->data)->clef; mudela_obj_new->keysig = ((DenemoMeasure*)si->currentmeasure->data)->keysig; } } if ((mode & INPUTNORMAL) && (rest != TRUE)) { if(inserting_midi && si->recording && si->marked_onset && si->marked_onset->data) { DenemoRecordedNote *midinote = (DenemoRecordedNote*)si->marked_onset->data; addtone (mudela_obj_new, midinote->mid_c_offset + 7 * midinote->octave, midinote->enshift); si->marked_onset = si->marked_onset->next; } else addtone (mudela_obj_new, si->cursor_y, get_cursoracc ()); //mudela_obj_new->keysig->accs[si->staffletter_y]); } if ((mode & INPUTBLANK) || (!rest && (Denemo.project->input_source == INPUTMIDI) && (gui->mode & (INPUTRHYTHM)))) // INPUTRHYTHM is usually set BUT input_note_following_rhythm unsets it, it is input_source that creates yellow/brown notes when input is from MIDI mudela_obj_new->isinvisible = TRUE; //if (Denemo.prefs.startmidiin) // mudela_obj_new->isinvisible = TRUE; can't do this, inputting note from MIDI inputs rhythm only then fills in the note on the next press /* Insert the new note into the score. Note that while we may have added a measure above, object_insert will invoke nudgerightward, which will in turn invoke update_hscrollbar, so we don't need to invoke that here. */ gboolean was_appending = si->cursor_appending; object_insert (gui, mudela_obj_new); if(inserting_midi) mudela_obj_new->isinvisible = FALSE; if (Denemo.project->input_source == INPUTMIDI && (gui->mode & (INPUTRHYTHM))) { if (Denemo.prefs.immediateplayback) { if(inserting_midi && !rest) { DenemoStaff *curstaffstruct = (DenemoStaff *) si->currentstaff->data; //play_notes (DEFAULT_BACKEND, curstaffstruct->midi_port, curstaffstruct->midi_channel, (chord *) mudela_obj_new->object);//compute duration and use that??? note *n = ((chord *) mudela_obj_new->object)->notes->data; /* Because mid_c_offset is a measure of notes and we need a measure of * half-steps, this array will help */ const gint key_offset[] = { -10, -8, -7, -5, -3, -1, 0, 2, 4, 5, 7, 9, 11 }; gint offset = n->mid_c_offset; /* 60 is middle-C in MIDI keys */ gchar key = 60 + 12 * (offset / 7) + key_offset[offset % 7 + 6]; key += n->enshift; #define MIDI_RESOLUTION (384) gint duration_ms = 1000 * mudela_obj_new->durinticks * 60.0 / (si->tempo * MIDI_RESOLUTION); g_debug("duration %d duration ms = %d\n", duration, duration_ms); play_note (DEFAULT_BACKEND , curstaffstruct->midi_port , curstaffstruct->midi_channel, key, duration_ms, 127); } else rhythm_feedback (DEFAULT_BACKEND, duration, rest, FALSE); } } else { if (Denemo.project->last_source == INPUTKEYBOARD) { DenemoStaff *curstaffstruct = (DenemoStaff *) si->currentstaff->data; if (Denemo.prefs.immediateplayback) { play_notes (DEFAULT_BACKEND, curstaffstruct->midi_port, curstaffstruct->midi_channel, (chord *) mudela_obj_new->object); if(si->currentobject->prev == NULL) signal_measure_end(); } } // if (((mode & INPUTBLANK) || (gui->mode & INPUTBLANK)) && !was_appending) // movecursorleft (NULL, NULL); } } gboolean insert_marked_midi_note (void) { DenemoMovement *si = Denemo.project->movement; gboolean inserting_midi = si->recording && (si->recording->type==DENEMO_RECORDING_MIDI) && si->marked_onset; if(inserting_midi && si->marked_onset && si->marked_onset->data) { gint dots; DenemoRecordedNote *midinote = (DenemoRecordedNote*)si->marked_onset->data;//FIXME look at marked_onset->prev to see if we should add to a chord dnm_insertnote (Denemo.project, midinote->duration, INPUTNORMAL, FALSE); changenumdots (si->currentobject->data, midinote->dots); return TRUE; } return FALSE; } /** * Insert tuplet into the score * @param si pointer to the scoreinfo structure * @param type the type of tuplet to insert */ void dnm_inserttuplet (DenemoProject * gui, tuplet_type type) { DenemoMovement *si = gui->movement; DenemoObject *mudela_obj_new; insertion_point (si); switch (type) { case DUPLET: mudela_obj_new = tuplet_open_new (3, 2); break; case TRIPLET: mudela_obj_new = tuplet_open_new (2, 3); break; case QUADTUPLET: mudela_obj_new = tuplet_open_new (3, 4); break; case QUINTUPLET: mudela_obj_new = tuplet_open_new (4, 5); break; case SEXTUPLET: mudela_obj_new = tuplet_open_new (4, 6); break; case SEPTUPLET: mudela_obj_new = tuplet_open_new (4, 7); break; default: mudela_obj_new = tuplet_open_new (2, 3); break; } //g_debug ("Cursor pos %d (Before tup open)\n", si->cursor_x); object_insert (gui, mudela_obj_new); //g_debug ("Cursor pos %d (After tup open, before tup close)\n", si->cursor_x); /* Add the closing bracket */ object_insert (gui, tuplet_close_new ()); //g_debug ("Cursor pos %d (After tup close)\n", si->cursor_x); si->cursor_x--; //g_debug ("Cursor pos %d( After move back)\n", si->cursor_x); si->currentobject = si->currentobject->prev; si->cursor_appending = FALSE; displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Change the duration of the current note/rest * @param si pointer to the scoreinfo structure * @param duration the duration to change the current CHORD * object to */ void changeduration (DenemoMovement * si, gint duration) { declarecurmudelaobj; if (curmudelaobj && curmudelaobj->type == CHORD) { store_for_undo_change (si, curmudelaobj); changedur (curmudelaobj, duration, 0); } } /** * notechange * If REMOVE delete the note closest to si->cursor_y in a ~si->currentobject * else add a note at si->cursor_y to the ~si->currentobject * FIXME ~si->currentobject in this comment means the thing gotten by the macro declaremudelaobj. This macro is a horrible hack induced by trying to be clever with tuplets - enforcing pairing of begin/end. notechange * @param si pointer to the scoreinfo structure * @param remove whether to remove note or not */ static gboolean notechange (DenemoMovement * si, gboolean remove) { declarecurmudelaobj; gboolean ret = FALSE; gboolean inserting_midi = si->recording && (si->recording->type==DENEMO_RECORDING_MIDI) && si->marked_onset; if (curmudelaobj && curmudelaobj->type == CHORD) { store_for_undo_change (si, curmudelaobj); if (remove == TRUE) ret = removetone (curmudelaobj, si->cursor_y /*mid_c_offset */ ); else { if(inserting_midi) { DenemoRecordedNote *midinote = (DenemoRecordedNote*)si->marked_onset->data; ret = (gboolean) (intptr_t) addtone (curmudelaobj, midinote->mid_c_offset + 7 * midinote->octave, midinote->enshift); si->marked_onset = si->marked_onset->next; } else ret = (gboolean) (intptr_t) addtone (curmudelaobj, si->cursor_y /* mid_c_offset */ , curmudelaobj->keysig->accs[si->staffletter_y] /* enshift */ ); } if (Denemo.project->last_source == INPUTKEYBOARD) { DenemoStaff *curstaffstruct = (DenemoStaff *) si->currentstaff->data; if (Denemo.prefs.immediateplayback) { play_notes (DEFAULT_BACKEND, curstaffstruct->midi_port, curstaffstruct->midi_channel, (chord *) curmudelaobj->object); } } else { // Denemo.project->last_source = INPUTKEYBOARD; } displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } return ret; } /** * Delete chord note closest to y cursor */ gboolean delete_chordnote (DenemoProject * gui) { notechange (gui->movement, TRUE); return TRUE; } /** * Insert chord note at y cursor position */ gboolean insert_chordnote (DenemoProject * gui) { DenemoObject *curObj; if (gui->movement->currentobject && (curObj = Denemo.project->movement->currentobject->data) && (curObj->type == CHORD)) notechange (gui->movement, FALSE); else insert_note_following_pattern (gui); return TRUE; } /** * Insert chord note at y cursor position or delete one if already present * return TRUE if inserted else FALSE */ gboolean insert_or_delete_chordnote (gint enshift) { DenemoProject *gui = Denemo.project; DenemoObject *curObj; gboolean remove = FALSE; if (gui->movement->currentobject && (curObj = Denemo.project->movement->currentobject->data) && (curObj->type == CHORD)) { GList *node; for (node = ((chord *) curObj->object)->notes; node; node=node->next) { note *thenote = (note*)node->data; if((thenote->mid_c_offset == gui->movement->cursor_y) && (thenote->enshift == enshift)) remove = TRUE; } notechange (gui->movement, remove); } else insert_note_following_pattern (gui); return !remove; } //insert the passed note data as a chord at the cursor position. //the data are struct twoints*, mid c offset and enshift. void insert_chord (GList *note_data, gint duration) { gboolean spill = Denemo.prefs.spillover; gint mode = Denemo.project->mode; Denemo.project->mode = 0; Denemo.prefs.spillover = 0; dnm_insertnote (Denemo.project, duration, INPUTNORMAL, TRUE);//insert a rest movecursorleft (NULL, NULL); Denemo.project->mode = mode; Denemo.prefs.spillover = spill; GList *g; for (g=note_data;g;g=g->next) { struct twoints *data = g->data; addtone (Denemo.project->movement->currentobject->data, data->a, data->b); } movecursorright (NULL, NULL); displayhelper (Denemo.project); } G_GNUC_UNUSED void tempfn (void) { struct twoints note_data = { 6, 1}; struct twoints note_data2 = { 12, -1}; GList *g = g_list_append (NULL, ¬e_data); g = g_list_append (g, ¬e_data2); insert_chord (g, 3); } /** * Helper function that contains calls to all the display * update functions * * @param gui pointer to the DenemoProject structure */ void displayhelper (DenemoProject * gui) { if(Denemo.non_interactive) return; DenemoMovement *si = gui->movement; beamandstemdirhelper (si); showwhichaccidentals ((objnode *)((DenemoMeasure*)si->currentmeasure->data)->objects); find_xes_in_measure (si, si->currentmeasurenum); nudgerightward (gui); set_bottom_staff (gui); write_status (gui); gtk_widget_queue_draw (Denemo.scorearea); } /** * Increment the enharmonic shift of the tone closest to the cursor. * @param si pointer to the DenemoMovement structure * @param amount to shift */ void incrementenshift (DenemoProject * gui, gint amount) { DenemoMovement *si = gui->movement; declarecurmudelaobj; if (curmudelaobj && curmudelaobj->type == CHORD) { store_for_undo_change (si, curmudelaobj); shiftpitch (curmudelaobj, si->cursor_y, amount); showwhichaccidentals ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects); find_xes_in_measure (si, si->currentmeasurenum); //if tied ... chord *next = curmudelaobj->object; if (next->is_tied) { objnode *nextobj = gui->movement->currentobject->next; measurenode *current = gui->movement->currentmeasure; if(nextobj==NULL) { current = current->next; if(current && current->data) { nextobj = ((DenemoMeasure*)current->data)->objects; } } while (nextobj) { DenemoObject *thenextobj= (DenemoObject *) nextobj->data; if (thenextobj->type == CHORD) { chord *next = thenextobj->object; shiftpitch (thenextobj, si->cursor_y, amount); showwhichaccidentals ((objnode *)((DenemoMeasure*) current->data)->objects); if(next->is_tied) { if(nextobj->next==NULL) { current = current->next; if(current && current->data) { nextobj = current->data; continue; } } nextobj = nextobj->next; continue; } else break; } break; } } if (Denemo.project->last_source == INPUTKEYBOARD) { DenemoStaff *curstaffstruct = (DenemoStaff *) si->currentstaff->data; if (Denemo.prefs.immediateplayback) { play_notes (DEFAULT_BACKEND, curstaffstruct->midi_port, curstaffstruct->midi_channel, (chord *) curmudelaobj->object); } } else { // Denemo.project->last_source = INPUTKEYBOARD; } displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } } /** * Set the enharmonic shift of the tone closest to the cursor. * @param si pointer to the DenemoMovement structure * @param enshift -2 .. +2 for double flat to double sharp FIXME make this a system wide enum */ void setenshift (DenemoMovement * si, gint enshift) { declarecurmudelaobj; if (curmudelaobj && curmudelaobj->type == CHORD) { store_for_undo_change (si, curmudelaobj); changeenshift (curmudelaobj, si->cursor_y, enshift); if (Denemo.project->input_source == INPUTKEYBOARD) { DenemoStaff *curstaffstruct = (DenemoStaff *) si->currentstaff->data; if (Denemo.prefs.immediateplayback) { play_notes (DEFAULT_BACKEND, curstaffstruct->midi_port, curstaffstruct->midi_channel, (chord *) curmudelaobj->object); } } } } /** * Change the stemdirection of the current chord object * by a given amount * @param si pointer to the scoreinfo structure * @param amount the stem direction change to make */ void change_stem_directive (DenemoMovement * si, enum stemdirections amount) { declarecurmudelaobj; if (curmudelaobj && curmudelaobj->type == STEMDIRECTIVE) { store_for_undo_change (si, curmudelaobj); switch (amount) { case DENEMO_STEMDOWN: ((stemdirective *) curmudelaobj->object)->type = DENEMO_STEMDOWN; break; case DENEMO_STEMUP: ((stemdirective *) curmudelaobj->object)->type = DENEMO_STEMUP; break; default: ((stemdirective *) curmudelaobj->object)->type = DENEMO_STEMBOTH; break; } displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } } /** * Change the number of dots on the current chord * * @param si pointer to the scoreinfo structure * @param amount the number of dots to add/remove */ void changedots (DenemoMovement * si, gint amount) { declarecurmudelaobj; if (curmudelaobj && curmudelaobj->type == CHORD) { store_for_undo_change (si, curmudelaobj); if (Denemo.project->mode & (INPUTRHYTHM)) { if (Denemo.prefs.immediateplayback) { chord *thechord = (chord *) curmudelaobj->object; gboolean rest = (thechord->notes == NULL); rhythm_feedback (DEFAULT_BACKEND, thechord->baseduration, rest, TRUE); } } changenumdots (curmudelaobj, amount); } } /** * Insert measure into the score at the current position * * @param si pointer to the scoreinfo structure * @param number of measures to insert */ void dnm_insertmeasures (DenemoMovement * si, gint number) { si->currentmeasure = dnm_addmeasures (si, si->currentmeasurenum - 1, number, 1); si->cursor_x = 0; si->cursor_appending = TRUE; si->currentobject = NULL; set_rightmeasurenum (si); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); //si->markstaffnum = 0; //calcmarkboundaries (si); /* update_hscrollbar (si); */ } /** * Insert measure into the staff after the current position */ void insertmeasureafter (DenemoAction* action, G_GNUC_UNUSED DenemoScriptParam* param) { DenemoMovement *si = Denemo.project->movement; take_snapshot (); si->currentmeasure = addmeasures (si, si->currentmeasurenum++, 1, 0); si->cursor_x = 0; si->cursor_appending = TRUE; si->currentobject = NULL; set_rightmeasurenum (si); //si->markstaffnum = 0; //calcmarkboundaries (si); /* update_hscrollbar (si); */ } /** * Insert measure into the staffs after the current position */ void addmeasureafter (DenemoAction* action, G_GNUC_UNUSED DenemoScriptParam* param) { DenemoMovement *si = Denemo.project->movement; take_snapshot (); si->currentmeasure = addmeasures (si, si->currentmeasurenum++, 1, 1); si->cursor_x = 0; si->cursor_appending = TRUE; si->currentobject = NULL; set_rightmeasurenum (si); //si->markstaffnum = 0; draw_score_area(); score_status(Denemo.project, TRUE); // calcmarkboundaries (si); /* update_hscrollbar (si); */ displayhelper (Denemo.project); } /** * Insert measure into the staff before the current position */ void insertmeasurebefore (DenemoAction* action, G_GNUC_UNUSED DenemoScriptParam* param) { DenemoMovement *si = Denemo.project->movement; si->currentmeasure = addmeasures (si, si->currentmeasurenum - 1, 1, 0); si->cursor_x = 0; si->cursor_appending = TRUE; si->currentobject = NULL; set_rightmeasurenum (si); si->markstaffnum = 0; draw_score_area();// displayhelper (Denemo.project); score_status(Denemo.project, TRUE); /* update_hscrollbar (si); */ } /** * Add measure to the end of the score * * @param si pointer to the scoreinfo structure * @param number the number of measures to append */ void appendmeasures (DenemoMovement * si, gint number) { dnm_addmeasures (si, g_list_length (staff_first_measure_node (si->currentstaff)), number, FALSE); /* Reset these two variables because si->currentmeasure and * si->currentobject may now be pointing to dead data */ si->currentmeasure = g_list_nth (staff_first_measure_node (si->currentstaff), si->currentmeasurenum - 1); si->currentobject = g_list_nth ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects, si->cursor_x - (si->cursor_appending == TRUE)); set_rightmeasurenum (si); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); /*update_hscrollbar (si); */ } void appendmeasurestoentirescore (DenemoMovement * si, gint number) { dnm_addmeasures (si, g_list_length (staff_first_measure_node (si->currentstaff)), number, TRUE); /* Reset these two variables because si->currentmeasure and * si->currentobject may now be pointing to dead data */ si->currentmeasure = g_list_nth (staff_first_measure_node (si->currentstaff), si->currentmeasurenum - 1); si->currentobject = g_list_nth ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects, si->cursor_x - (si->cursor_appending == TRUE)); set_rightmeasurenum (si); /* update_hscrollbar (si); */ } /** * Delete staff wrapper to delete the preceding staff * * @param action pointer to the DenemoAction event * @param gui pointer to the DenemoProject structure */ void delete_staff_before (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; if (staffup (action, param)) { staff_delete (gui, TRUE); } } /** * Delete staff wrapper to delete the next staff * * @param action pointer to the DenemoAction event * @param gui pointer to the DenemoProject structure */ void delete_staff_after (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; if (staffdown (action, param)) { staff_delete (gui, TRUE); } } /** * Delete staff wrapper to delete current staff * * @param action pointer to the DenemoAction event * @param gui pointer to the DenemoProject structure */ void delete_staff_current (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; staff_delete (gui, TRUE); } /** * Delete mesasure from score * @param gui pointer to the DenemoProject structure * @return none * * This is only a wrapper for the real dnm_deletemeasure * function. */ void deletemeasure (DenemoAction* action, DenemoScriptParam* param) { dnm_deletemeasure (Denemo.project->movement); find_xes_in_all_measures (Denemo.project->movement); isoffleftside (Denemo.project); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Delete mesasure from all staffs of score * @param gui pointer to the DenemoProject structure * @return none * */ void deletemeasureallstaffs (DenemoAction* action, DenemoScriptParam* param) { DenemoMovement *si = Denemo.project->movement; //take_snapshot(); this does not prevent the multiple undo steps needed si->currentmeasure = removemeasures (si, si->currentmeasurenum - 1, 1, TRUE); setcurrents (si); if (si->markstaffnum) calcmarkboundaries (si); score_status (Denemo.project, TRUE); si->markstaffnum = 0; isoffleftside (Denemo.project); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Delete measure from the score * * TODO remove measure from current staff * rather than the entire score * @param gui pointer to the DenemoProject structure * @return none */ void dnm_deletemeasure (DenemoMovement * si) { si->currentmeasure = removemeasures (si, si->currentmeasurenum - 1, 1, FALSE); /* In case that was the last measure we just deleted, which'd cause * the current measure to be the left of what's displayed */ setcurrents (si); if (si->markstaffnum) calcmarkboundaries (si); si->markstaffnum = 0; //g_debug("Removed current measure now %p number %d\n", si->currentmeasure, si->currentmeasurenum); } /** * Remove current object from the score *@param cur_measure pointer to the current measure * @param cur_objnode pointer to the current object * @return none */ static void remove_object (DenemoMeasure * cur_measure, objnode * cur_objnode) { if (cur_measure->objects) { cur_measure->objects = g_list_remove_link ((objnode *) cur_measure->objects, cur_objnode); freeobject ((DenemoObject *) cur_objnode->data); g_list_free_1 (cur_objnode); } } /** * Helper to remove the current object an reset cursor stats * @param si pointer to the scoreinfo structure * @return none */ static void delete_object_helper (DenemoMovement * si) { remove_object ((DenemoMeasure*)si->currentmeasure->data, si->currentobject); reset_cursor_stats (si); } /** * Helper to remove a object from the score * @return none. * */ void deleteobject (DenemoAction* action, DenemoScriptParam* param) { dnm_deleteobject (Denemo.project->movement); } /** * Function to delete object from the score * @param gui - pointer to the DenemoProject structure * @return none */ void dnm_deleteobject (DenemoMovement * si) { declarecurmudelaobj; //staffnode *curstaff; //measurenode *curmeasure; //g_debug ("dnm_deleteobject undo/redo mode %d\n", si->undo_redo_mode); if (curmudelaobj == NULL) return; /* when tone_store is active, act on that, not the staff itself */ #ifdef _HAVE_PORTAUDIO_ if (((DenemoStaff *) si->currentstaff->data)->tone_store) { if (si->currentobject && ((DenemoObject *) (si->currentobject->data))->type == CHORD) { if (delete_tone (si, ((DenemoObject *) (si->currentobject->data))->object)) return; } } #endif if (curmudelaobj->type == LILYDIRECTIVE && ((lilydirective *) curmudelaobj->object)->locked) { DenemoDirective *directive = (lilydirective *) curmudelaobj->object; DenemoScriptParam param; param.string = g_string_new ("delete"); DenemoAction *action = directive->tag?lookup_action_from_name (directive->tag->str):NULL; if (action && (Denemo.keyboard_state != GDK_MOD2_MASK /*NumLock */ )) { activate_script (action, ¶m); g_string_free (param.string, TRUE); return; } } DenemoUndoData *undo; if (!si->undo_guard) { undo = (DenemoUndoData *) g_malloc (sizeof (DenemoUndoData)); undo->object = dnm_clone_object (curmudelaobj); //get position after delete } if (!si->cursor_appending) { switch (curmudelaobj->type) { case CHORD: delete_object_helper (si); break; case TUPOPEN: case TUPCLOSE: /* TODO - add code that will automatically delete a tupbracket's * corresponding bracket */ delete_object_helper (si); break; case CLEF: /* here we have to re-validate leftmost clef e.g. find_leftmost_allcontexts (gui->movement); which seems to be done... */ delete_object_helper (si); cache_staff (si->currentstaff); staff_fix_note_heights ((DenemoStaff *) si->currentstaff->data); staff_beams_and_stems_dirs ((DenemoStaff *) si->currentstaff->data); find_xes_in_all_measures (si); break; case KEYSIG: delete_object_helper (si); cache_staff (si->currentstaff); staff_beams_and_stems_dirs ((DenemoStaff *) si->currentstaff->data); staff_show_which_accidentals ((DenemoStaff *) si->currentstaff->data); find_xes_in_all_measures (si); break; case TIMESIG: delete_object_helper (si); DenemoMeasure *measure = (DenemoMeasure *)si->currentmeasure->data; if (si->currentmeasure->prev) { DenemoMeasure *prevmeas = (DenemoMeasure *)si->currentmeasure->prev->data; measure->timesig = prevmeas->timesig; } else { DenemoStaff *thestaff = (DenemoStaff *) si->currentstaff->data; measure->timesig = &thestaff->timesig; } update_timesig_cache (si->currentmeasure); reset_cursor_stats (si); find_xes_in_all_measures (si); break; case STEMDIRECTIVE: delete_object_helper (si); cache_staff (si->currentstaff); staff_beams_and_stems_dirs ((DenemoStaff *) si->currentstaff->data); find_xes_in_all_measures (si); break; case DYNAMIC: delete_object_helper (si); break; case LILYDIRECTIVE: delete_object_helper (si); //displayhelper (gui); break; case GRACE_START: case GRACE_END: delete_object_helper (si); break; case LYRIC: case FIGURE: delete_object_helper (si); break; case BARLINE: // case COMMENT: case MEASUREBREAK: break; // XXX: unhandled... case STAFFBREAK: case FAKECHORD: case PARTIAL: break; } si->markstaffnum = 0; } if (!si->undo_guard) { get_position (si, &undo->position); undo->action = ACTION_DELETE; update_undo_info (si, undo); } displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Insert cloned chordobject into the * score * @param si - pointer to the scoreinfo structure * @return none */ void insertclone (DenemoProject * gui) { DenemoMovement *si = gui->movement; declarecurmudelaobj; if (curmudelaobj && curmudelaobj->type == CHORD) object_insert (gui, dnm_clone_object (curmudelaobj)); } void tolastobject (DenemoProject * gui) { while (gui->movement->currentobject && (gui->movement->currentobject->next)) { gui->movement->currentobject = gui->movement->currentobject->next; gui->movement->cursor_x++; } } /* Make note tied/untied */ void toggle_tie (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; DenemoObject *curmudelaobj = (DenemoObject *) (gui->movement->currentobject ? gui->movement->currentobject->data : NULL); if (curmudelaobj && curmudelaobj->type == CHORD && ((((chord *) curmudelaobj->object)->notes) || ((chord *) curmudelaobj->object)->is_tied)) { store_for_undo_change (si, curmudelaobj); ((chord *) curmudelaobj->object)->is_tied ^= 1; draw_score_area(); } score_status (gui, TRUE); } /** * Move cursor to the end of the score extending the selection if extend_selection is TRUE * @param param - pointer to a script parameter structure * @return none */ static void gotoend (gpointer param, gboolean extend_selection) { DenemoProject *gui = Denemo.project; if (extend_selection && !gui->movement->markstaffnum) set_mark (NULL, NULL); gui->movement->currentmeasurenum = g_list_length (((DenemoStaff *) gui->movement->currentstaff->data)->themeasures); setcurrents (gui->movement); if (extend_selection) calcmarkboundaries (gui->movement); tolastobject (gui); if (extend_selection) cursorright (NULL, param); else movecursorright (NULL, param); //refresh cached values, eg current timesig update_drawing_cache (); find_leftmost_allcontexts (gui->movement); //FIXME is this done in displayhelper? displayhelper (gui); } /** * Move the cursor to the beginning of the score extending the selection if extend_selection is TRUE * @param param - pointer to a script parameter structure * @return none */ static void gotohome (gboolean extend_selection) { DenemoProject *gui = Denemo.project; if (extend_selection && !gui->movement->markstaffnum) set_mark (NULL, NULL); gui->movement->currentmeasurenum = gui->movement->leftmeasurenum = 1; displayhelper (gui); setcurrents (gui->movement); if (extend_selection) calcmarkboundaries (gui->movement); find_leftmost_allcontexts (gui->movement); if(!Denemo.non_interactive){ //refresh cached values, eg current timesig update_drawing_cache (); } } /** * Move the cursor to the beginning of the score, extending the selection if any. * @param action - Gtk Action event * @param * @return none */ void tohome (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { gotohome (TRUE); } /** * Move the cursor to the end of the score, extending the selection if any. * @param action - Gtk Action event * @param * @return none */ void toend (G_GNUC_UNUSED DenemoAction * action, DenemoScriptParam * param) { gotoend (param, TRUE); } /** * Move the cursor to the beginning of the staff, without extending the selection if any. * @param action - Gtk Action event * @param * @return none */ void movetostart (G_GNUC_UNUSED DenemoAction * action, DenemoScriptParam * param) { gotohome (FALSE); if (param) param->status = TRUE; } /** * Move the cursor to the end of the staff, without extending the selection if any. * @param action - Gtk Action event * @param * @return none */ void movetoend (G_GNUC_UNUSED DenemoAction * action, DenemoScriptParam * param) { gotoend (param, FALSE); if (param) param->status = TRUE; } /** * Insert stem directive, absolute stemdirection for the * entire staff or until a new stem directive in added * * @param action Gtk Action event * @param gui pointer to the DenemoProject structure * @return none */ void stem_directive_insert (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; object_insert (gui, dnm_stem_directive_new (DENEMO_STEMBOTH)); /* This sets beams and stem directions in the measure, but that's * not sufficient */ displayhelper (gui); } /** * Toggle start_slur flag for the current chord * * @return none */ void toggle_begin_slur (DenemoAction* action, DenemoScriptParam* param) { DenemoMovement *si = Denemo.project->movement; declarecurmudelaobj; if (curmudelaobj && curmudelaobj->type == CHORD) { store_for_undo_change (si, curmudelaobj); ((chord *) curmudelaobj->object)->slur_begin_p = !((chord *) curmudelaobj->object)->slur_begin_p; } displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Force a cautionary accidental * @param si pointer to the scoreinfo structure * @return none */ void caution (DenemoMovement * si) { declarecurmudelaobj; forceaccidentals (curmudelaobj); find_xes_in_measure (si, si->currentmeasurenum); } /** * Toggle end_slur flag for the current chord * @return none */ void toggle_end_slur (DenemoAction* action, DenemoScriptParam * param) { DenemoMovement *si = Denemo.project->movement; declarecurmudelaobj; if (curmudelaobj && curmudelaobj->type == CHORD) { store_for_undo_change (si, curmudelaobj); ((chord *) curmudelaobj->object)->slur_end_p = !((chord *) curmudelaobj->object)->slur_end_p; } displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Toggle start crescendo flag for current chord * @param si pointer to the scoreinfo structure * @return none */ void toggle_start_crescendo (DenemoAction* action, DenemoScriptParam * param) { DenemoMovement *si = (DenemoMovement *) Denemo.project->movement; declarecurmudelaobj; if (curmudelaobj && curmudelaobj->type == CHORD) { ((chord *) curmudelaobj->object)->crescendo_begin_p = !((chord *) curmudelaobj->object)->crescendo_begin_p; } displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Toggle end crescendo flag for current chord * @param si pointer to the scoreinfo structure * @return none */ void toggle_end_crescendo (DenemoAction* action, DenemoScriptParam * param) { DenemoMovement *si = (DenemoMovement *) Denemo.project->movement; declarecurmudelaobj; if (curmudelaobj && curmudelaobj->type == CHORD) { ((chord *) curmudelaobj->object)->crescendo_end_p = !((chord *) curmudelaobj->object)->crescendo_end_p; } displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Toggle start diminuendo flag for current chord * @param si pointer to the scoreinfo structure * @return none */ void toggle_start_diminuendo (DenemoAction* action, DenemoScriptParam * param) { DenemoMovement *si = (DenemoMovement *) Denemo.project->movement; declarecurmudelaobj; if (curmudelaobj && curmudelaobj->type == CHORD) { ((chord *) curmudelaobj->object)->diminuendo_begin_p = !((chord *) curmudelaobj->object)->diminuendo_begin_p; } displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Toggle end diminuendo flag for current chord * @param si pointer to the scoreinfo structure * @return none */ void toggle_end_diminuendo (DenemoAction* action, DenemoScriptParam * param) { DenemoMovement *si = (DenemoMovement *) Denemo.project->movement; declarecurmudelaobj; if (curmudelaobj && curmudelaobj->type == CHORD) { ((chord *) curmudelaobj->object)->diminuendo_end_p = !((chord *) curmudelaobj->object)->diminuendo_end_p; } displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Autosave timeout function - saves the current score after the current * timeout has expired * @param si pointer to the scoreinfo structure * @return TRUE for timer to continue FALSE if the DenemoProject has vanished. */ gboolean auto_save_document_timeout (DenemoProject * gui) { static gint old_changecount; /* first check that this timer has not been left running after destruction of the gui */ if (g_list_find (Denemo.projects, gui) == NULL) { //do not do this, it causes denemo to hang. warningdialog (_("Timer left running")); return FALSE; /* turns off the timer */ } if ((!gui->notsaved) || (gui->changecount == old_changecount)) return TRUE; // wait until project has been modified. DenemoMovement *si = gui->movement; g_message ("Autosaving"); if (!gui->autosavename) { g_warning ("gui->autosavename not set"); return FALSE; } old_changecount = gui->changecount; //g_debug ("Auto save file name %s\n", gui->autosavename->str); exportXML (gui->autosavename->str, gui); return TRUE; } denemo-2.2.0/src/command/PaxHeaders.19168/contexts.h0000644000000000000000000000013213135434036016756 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.079981806 30 ctime=1500919914.106648472 denemo-2.2.0/src/command/contexts.h0000644000175000017500000000131613135434036020630 0ustar00jjbenhamjjbenham00000000000000/* contexts.h * Context finders: functions that find the current clef, key, and time * signature contexts for the initial(?) measures being displayed * Also, set the initial values for the staffs from the first measure data * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #ifndef __CONTEXTS_H__ #define __CONTEXTS_H__ #include void find_leftmost_staffcontext (DenemoStaff * curstaffstruct, DenemoMovement * si); void find_leftmost_allcontexts (DenemoMovement * si); gint find_prevailing_clef (DenemoMovement * si); DenemoObject *get_clef_before_object (objnode * curobj); gpointer get_prevailing_context (DenemoObjType type); #endif /* __CONTEXTS_H__ */ denemo-2.2.0/src/command/PaxHeaders.19168/lyric.c0000644000000000000000000000013213135434036016224 xustar0030 mtime=1500919838.339981805 30 atime=1500919918.079981806 30 ctime=1500919914.123315139 denemo-2.2.0/src/command/lyric.c0000644000175000017500000006757313135434036020117 0ustar00jjbenhamjjbenham00000000000000/* lyric.c * * Functions for the manipulations of lyrics * * for Denemo, a gtk+ frontend for GNU Lilypond * (c)2009 Richard Shann */ #include #include /* for strcmp() */ #include "command/lyric.h" #include "command/object.h" #include "command/staff.h" #include "core/utils.h" #include "core/view.h" #include "command/score.h" #include "display/draw.h" #include "command/lilydirectives.h" // movement->lyricsbox is a GtkVBox containing GtkNotebook s for each staff with verses. The verses are GtkTextView s notebook //staff->verse_views is a list of GtkTextView which are packed in a GtkScrolledWindow //so movement->lyricsbox contains Notebook->ScrolledWindow->TextView //the text of the verses is stored in staff->verses static GtkWidget *DummyVerse; /* a non-existent verse */ static gint SkipCount = 0; //count of syllables to be skipped gboolean denemo_pango_scan_string (const char **pos, GString *out) { const char *p = *pos; while (g_ascii_isspace (*p)) p++; if (G_UNLIKELY (!*p)) return FALSE; else if (*p == '"') { gboolean quoted = FALSE; g_string_truncate (out, 0); p++; while (TRUE) { if (quoted) { int c = *p; switch (c) { case '\0': return FALSE; case 'n': c = '\n'; break; case 't': c = '\t'; break; default: break; } quoted = FALSE; g_string_append_c (out, c); } else { switch (*p) { case '\0': return FALSE; case '\\': quoted = TRUE; break; case '"': p++; goto done; default: g_string_append_c (out, *p); break; } } p++; } done: ; } else { g_string_truncate (out, 0); while (*p && !g_ascii_isspace (*p)) { g_string_append_c (out, *p); p++; } } *pos = p; return TRUE; } GtkWidget * verse_get_current_view (DenemoStaff * staff) { if (!staff) return NULL; if (!staff->current_verse_view) return NULL; return staff->current_verse_view->data; } gboolean verse_set_current (DenemoStaff * staff, gint id) { if (staff && staff->verse_views && (id >= 0) && (id < g_list_length (staff->verse_views))) { staff->current_verse_view = g_list_nth (staff->verse_views, id); GtkWidget *w = staff->verse_views->data; GtkWidget *notebook = gtk_widget_get_parent (gtk_widget_get_parent (w)); if(notebook) gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), id); return TRUE; } else return FALSE; } static void point_to_verse (DenemoStaff * staff, guint id) { if (staff && staff->verse_views && (id >= 0) && (id < g_list_length (staff->verse_views))) { staff->current_verse_view = g_list_nth (staff->verse_views, id); } } gint verse_get_current (DenemoStaff * staff) { return g_list_position (staff->verse_views, staff->current_verse_view); } static void previous_verse (void) { DenemoStaff *thestaff = Denemo.project->movement->currentstaff->data; GtkWidget *w = thestaff->verse_views->data; GtkNotebook *notebook = (GtkNotebook *)gtk_widget_get_parent (gtk_widget_get_parent (w)); gtk_notebook_prev_page (notebook); } static void next_verse (void) { DenemoStaff *thestaff = Denemo.project->movement->currentstaff->data; GtkWidget *w = thestaff->verse_views->data; GtkNotebook *notebook = (GtkNotebook *)gtk_widget_get_parent (gtk_widget_get_parent (w)); gtk_notebook_next_page (notebook); } void verse_set_current_text (DenemoStaff * staff, gchar * text) { if (text) { gint pos = verse_get_current (staff); if (pos >= 0) { GList *the_current_verse = g_list_nth (staff->verses, pos); if (the_current_verse->data) g_free (the_current_verse->data); the_current_verse->data = text; } } } gchar * verse_get_current_text (DenemoStaff * staff) { gint id = verse_get_current (staff); if (id >= 0) { GList *verse = g_list_nth (staff->verses, id); if (verse) return (gchar *) verse->data; } return NULL; } gboolean lyric_changed_cb (GtkTextBuffer * buffer) { // Synchronizes buffers and verses DenemoStaff *staff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; gchar *text = get_lyrics_for_current_verse (staff); verse_set_current_text (staff, text); { GtkTextIter startiter, enditer; gtk_text_buffer_get_start_iter (buffer, &startiter); gtk_text_buffer_get_end_iter (buffer, &enditer); gtk_text_buffer_apply_tag_by_name (buffer, "highlight", &startiter, &enditer); } score_status (Denemo.project, TRUE); draw_score_area (); return FALSE; } static GtkWidget * new_lyric_editor (void) { GtkTextTagTable *tagtable = (GtkTextTagTable *) gtk_text_tag_table_new (); GtkTextTag *t; t = gtk_text_tag_new ("highlight"); g_object_set (G_OBJECT (t), "background", "white", NULL); gtk_text_tag_table_add (tagtable, t); GtkTextBuffer *buffer = gtk_text_buffer_new (tagtable); GtkWidget *view = gtk_text_view_new_with_buffer (buffer); GtkWidget *sw = gtk_scrolled_window_new (gtk_adjustment_new (0, 0, 0, 0, 0, 0), gtk_adjustment_new (0, 0, 0, 0, 0, 0)); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); if (Denemo.prefs.newbie) gtk_widget_set_tooltip_text (sw, _("The text of a verse can be typed or pasted here. Press Esc to return to editing notes.\n" "Separate syllables with space double hyphen space, -- , if they should have their own note(s).\n" "New lines and extra spaces have no special significance. Slurs on notes make them take only one syllable. Use the underscore _ for blank syllables.")); gtk_container_add (GTK_CONTAINER (sw), view); return view; } DenemoObject * newlyric (gint baseduration, gint numdots, gchar * lys) { g_warning ("Not implemented"); return NULL; } static void switch_page (GtkNotebook * notebook, gpointer dummy, guint pagenum, DenemoStaff * staff) { draw_score_area (); point_to_verse (staff, pagenum); } //scans *next for a syllable putting the syllable into gs and moving *next to the address beyond the syllable //return TRUE if a syllable was found static gboolean scan_syllable (gchar ** next, GString * gs) { gboolean result; gchar *initial = *next; if (SkipCount > 0) { SkipCount--; g_string_assign (gs, "(skip)"); return TRUE; } result = denemo_pango_scan_string ((const char **) next, gs); if (result && (*gs->str == '\\') && (*(gs->str + 1) != '\\') && (*(gs->str + 1) != '\"')) { //if it is \repeat unfold n \skip 1 put the number n into SkipCount and return a space indicator if (!strcmp (gs->str, "\\repeat")) { result = denemo_pango_scan_string ((const char **) next, gs); if (result && (!strcmp (gs->str, "unfold"))) { result = denemo_pango_scan_string ((const char **) next, gs); if (result) SkipCount = atoi (gs->str); while (**next && **next != '\n') (*next)++; //ignore to end of line return scan_syllable (next, gs); } } while (**next && **next != '\n') (*next)++; //ignore to end of line return scan_syllable (next, gs); } if (result && ((!strcmp (gs->str, "--") || (!strcmp (gs->str, "__"))))) return scan_syllable (next, gs); return result; } //get the count of the syllable at the cursor. static gint get_syllable_count (GtkTextBuffer * buffer) { GString *gs = g_string_new (""); GtkTextIter cursor, startiter; gtk_text_buffer_get_iter_at_mark (buffer, &cursor, gtk_text_buffer_get_insert (buffer)); gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (buffer), &startiter); gchar *text = gtk_text_buffer_get_text (GTK_TEXT_BUFFER (buffer), &startiter, &cursor, FALSE); gchar *next = text; gint count = 0; while (scan_syllable (&next, gs)) count++; g_string_free (gs, TRUE); g_free (text); return count ? count : 1; } /* fills the measure and object fields of the passed in position with values for num'th syllable */ static void get_pos_at_syllable_count (DenemoStaff * staff, gint num, DenemoPosition * pos) { gint count = 0; gint measurenum, objnum; GList *curmeasure = staff->themeasures; gboolean in_slur = FALSE; for (measurenum = 0; curmeasure && (count < num); measurenum++, curmeasure = curmeasure->next) { objnode *curobj; for (objnum = 0, curobj = ((DenemoMeasure *) curmeasure->data)->objects; curobj && (count < num); objnum++, curobj = curobj->next) { DenemoObject *obj = curobj->data; if (obj->type == CHORD) { chord *thechord = ((chord *) obj->object); if (thechord->notes && !in_slur) count++; if (thechord->slur_begin_p) in_slur = TRUE; if (thechord->slur_end_p) in_slur = FALSE; if (thechord->is_tied) count--; } } //for objs } //for measures pos->measure = measurenum; pos->object = objnum; } /* count the number of syllables up to Denemo cursor position */ gint syllable_count (void) { DenemoStaff *thestaff = Denemo.project->movement->currentstaff->data; gint count = 0; gint i; GList *curmeasure; gboolean in_slur = FALSE; objnode *curobj = Denemo.project->movement->currentobject; for (curmeasure = thestaff->themeasures; curmeasure; curmeasure = curmeasure->next) { objnode *thisobj; for (thisobj = ((DenemoMeasure *) curmeasure->data)->objects; thisobj && (thisobj != curobj); thisobj = thisobj->next) { DenemoObject *obj = thisobj->data; if (obj->type == CHORD) { chord *thechord = ((chord *) obj->object); if (thechord->notes && !in_slur && !find_directive (thechord->directives, "MoveRest")) count++; if (thechord->slur_begin_p) in_slur = TRUE; if (thechord->slur_end_p) in_slur = FALSE; if (thechord->is_tied) count--; } } //for objs if (thisobj == curobj) break; } //for measures return count; } static gint get_character_count_at_syllable (gchar * text, gint count) { gint chars = 0; GString *gs = g_string_new (""); for (; count; count--) { gchar *next = text + chars; gint this; if (!scan_syllable (&next, gs)) break; chars = next - text; } g_string_free (gs, TRUE); return chars; } gboolean synchronize_lyric_cursor (gint offset) { DenemoStaff *thestaff = Denemo.project->movement->currentstaff->data; gint count = syllable_count () + 1 + offset; GtkTextView *verse_view = (GtkTextView *) verse_get_current_view (thestaff); if (verse_view) { gchar *text = get_text_from_view (GTK_WIDGET (verse_view)); gint character_count = get_character_count_at_syllable (text, count); GtkTextBuffer *textbuffer = gtk_text_view_get_buffer (verse_view); GtkTextIter where; gtk_text_buffer_get_iter_at_offset (textbuffer, &where, character_count); gtk_text_buffer_place_cursor (textbuffer, &where); gtk_widget_grab_focus (GTK_WIDGET (verse_view)); gtk_text_view_scroll_mark_onscreen (verse_view, gtk_text_buffer_get_insert (textbuffer)); return TRUE; } return FALSE; } static void synchronize_cursor (GtkWidget * textview) { DenemoStaff *thestaff = Denemo.project->movement->currentstaff->data; gint count; DenemoPosition pos; count = get_syllable_count (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview))); get_pos_at_syllable_count (thestaff, count, &pos); goto_movement_staff_obj (NULL, 0, Denemo.project->movement->currentstaffnum, pos.measure, pos.object, 0 /* means ignore */ ); } static gboolean keypress (GtkWidget * textview, GdkEventKey * event) { guint keyval = event->keyval; //g_print ("press %x mask %x", event->keyval, event->state); if (keyval == 0xFF63) return TRUE; // ignore Ins, don't want to have overwrite mode if (keyval == 0xFF09) //TAB return TRUE; if (event->state & GDK_CONTROL_MASK) //allow save etc from lyrics pane { switch (event->keyval) { case 0x6C: //Control-l standard prefix for lyrics commands switch_back_to_main_window (); break; //return TRUE; case 0xFF55: //Control-PgDn previous_verse (); return TRUE; case 0xFF56: //Control-PgUp next_verse (); return TRUE; case 0x73: //Control-s save but stay in verse call_out_to_guile ("(d-Save)"); return TRUE; case 0xFF52: //Control-up call_out_to_guile ("(d-MoveToStaffUp)(d-EditLyricAtCursor)"); return TRUE; case 0xFF54: //Control-down call_out_to_guile ("(d-MoveToStaffDown)(d-EditLyricAtCursor)"); return TRUE; default: break; } } return FALSE; } static gboolean text_inserted_cb (GtkWidget * textview, GdkEventKey * event) { static gboolean seen_space; gchar *str = event->string; guint keyval = event->keyval; // g_print ("release %x", event->keyval); if ((keyval == 0x20) || (keyval == 0xFF0D) || (keyval == 0xFF09) || (keyval == 0xFF8D)) //space return tab Enter { seen_space = TRUE; } else if ((keyval == 0xFF51) || (keyval == 0xFF52) || (keyval == 0xFF53) || (keyval == 0xFF54) || seen_space) //arrows { seen_space = FALSE; synchronize_cursor (textview); } //Note a Control-l is received when used as a shortcut to switch to the lyrics pane, so we use Esc or Tab to switch back if ((keyval == 0xFF09) //TAB || (keyval == 0xFF1B)) //ESC { switch_back_to_main_window (); return TRUE; } return FALSE; } static gboolean button_released_cb (GtkWidget * textview) { synchronize_cursor (textview); return FALSE; } //Insert the text at the current insertion point of the current verse // return FALSE if no verse gboolean insert_text_in_verse (gchar * text) { DenemoProject *project = Denemo.project; DenemoMovement *movement = project->movement; DenemoStaff *staff = movement->currentstaff->data; GtkTextView *verse_view = (GtkTextView *) verse_get_current_view (staff); GtkTextIter iter; if (verse_view) { GtkTextBuffer *textbuffer = gtk_text_view_get_buffer (verse_view); GtkTextMark *cursor = gtk_text_buffer_get_insert (textbuffer); gtk_text_buffer_get_iter_at_mark (textbuffer, &iter, cursor); gtk_text_buffer_insert (textbuffer, &iter, text, -1); return TRUE; } return FALSE; } static void insert_stanza_number (void) { DenemoProject *project = Denemo.project; DenemoMovement *movement = project->movement; if (movement->currentstaff) { gchar *text = string_dialog_entry (Denemo.project, _("Stanza Number"), _("Give text to appear before lyrics"), _("1. ")); if (text) { gchar *stanza = g_strdup_printf ("\\set stanza = #\"%s\"\n", text); g_free (text); (void) insert_text_in_verse (stanza); g_free (stanza); } } } static void prepend_menu_item (GtkMenuShell * menu, gchar * text, gpointer callback, gchar * tooltip) { GtkWidget *item; item = gtk_menu_item_new_with_label (text); gtk_widget_set_tooltip_text (item, tooltip); g_signal_connect (item, "activate", G_CALLBACK (callback), NULL); gtk_menu_shell_prepend (menu, GTK_WIDGET (item)); gtk_widget_show (GTK_WIDGET (item)); } static gboolean populate_called (G_GNUC_UNUSED GtkWidget * view, GtkMenuShell * menu) { prepend_menu_item (menu, _("Insert Stanza Number"), (gpointer) insert_stanza_number, _("Insert a stanza number using the LilyPond syntax")); return FALSE; } guint add_verse_to_staff (DenemoMovement * movement, DenemoStaff * staff) { staff->verses = g_list_append (staff->verses, NULL); if (Denemo.non_interactive) return g_list_length (staff->verses) - 1; GtkWidget *notebook, *textview; if (staff->verse_views == NULL) { notebook = gtk_notebook_new (); gtk_widget_show (notebook); g_signal_connect (G_OBJECT (notebook), "switch_page", G_CALLBACK (switch_page), staff); if (movement->lyricsbox == NULL) //FIXME we need a proper way of getting to the top vbox, that will not break when scorearea is moved in the widget hierarchy. install_lyrics_preview (movement, gtk_widget_get_parent (gtk_widget_get_parent (Denemo.scorearea))); gtk_box_pack_start (GTK_BOX (movement->lyricsbox), notebook, TRUE, TRUE, 0); if (movement->measurewidth == DENEMO_INITIAL_MEASURE_WIDTH) movement->measurewidth = DENEMO_INITIAL_MEASURE_WIDTH * 3; } else { GtkWidget *w = staff->verse_views->data; notebook = gtk_widget_get_parent (gtk_widget_get_parent (w)); } textview = new_lyric_editor (); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (textview), GTK_WRAP_WORD_CHAR); gtk_widget_show_all (gtk_widget_get_parent (textview)); staff->verse_views = g_list_append (staff->verse_views, textview); guint pos = g_list_position (staff->verse_views, g_list_last (staff->verse_views)); point_to_verse (staff, pos); gint pagenum = gtk_notebook_append_page (GTK_NOTEBOOK (notebook), gtk_widget_get_parent (textview), NULL); gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), pagenum); gchar *tablabel = g_strdup_printf (_("Verse %d"), pagenum + 1); gtk_notebook_set_tab_label_text (GTK_NOTEBOOK (notebook), gtk_widget_get_parent (textview), tablabel); g_free (tablabel); if (pagenum) gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), TRUE); GtkTextView *verse_view = (GtkTextView *) verse_get_current_view (staff); g_signal_connect (G_OBJECT (gtk_text_view_get_buffer (verse_view)), "changed", G_CALLBACK (lyric_changed_cb), NULL); g_signal_connect (G_OBJECT (verse_view), "key-release-event", G_CALLBACK (text_inserted_cb), NULL); g_signal_connect (G_OBJECT (verse_view), "key-press-event", G_CALLBACK (keypress), NULL); g_signal_connect (G_OBJECT (verse_view), "button-release-event", G_CALLBACK (button_released_cb), NULL); g_signal_connect_after (G_OBJECT (verse_view), "populate-popup", G_CALLBACK (populate_called), NULL); #if GTK_MAJOR_VERSION==2 GdkColor thecolor; //gdk_color_parse ("white", &thecolor); //gtk_widget_modify_bg (verse_view, GTK_STATE_SELECTED, &thecolor); gdk_color_parse ("gray", &thecolor); gtk_widget_modify_bg (verse_view, GTK_STATE_NORMAL, &thecolor); #else { GtkCssProvider *gcp; GtkStyleContext *gsc; gsc = gtk_widget_get_style_context(GTK_WIDGET (verse_view)); gchar *str = "GtkTextView {background-color: rgb(128,128,80);}"; //this overrides the focus one unless it is before. gcp= gtk_css_provider_new(); gtk_css_provider_load_from_data(gcp, str, -1, 0); gtk_style_context_add_provider(gsc, GTK_STYLE_PROVIDER(gcp), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); str = "GtkTextView:focus {background-color: rgb(128,128,0);}"; //this is effective gcp= gtk_css_provider_new(); gtk_css_provider_load_from_data(gcp, str, -1, 0); gtk_style_context_add_provider(gsc, GTK_STYLE_PROVIDER(gcp), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); str = "GtkTextView:selected {background-color: rgb(200,128,0);}"; gcp= gtk_css_provider_new(); gtk_css_provider_load_from_data(gcp, str, -1, 0); gtk_style_context_add_provider(gsc, GTK_STYLE_PROVIDER(gcp), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); #if ((GTK_MAJOR_VERSION==3) && (GTK_MINOR_VERSION >= 20)) str = "GtkTextView {caret-color: rgb(200,200,0);}"; #else str = "GtkTextView {-GtkWidget-cursor-color: rgb(200,200,0);}"; #endif gcp= gtk_css_provider_new(); gtk_css_provider_load_from_data(gcp, str, -1, 0); gtk_style_context_add_provider(gsc, GTK_STYLE_PROVIDER(gcp), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); str = "GtkTextView {-GtkWidget-cursor-aspect-ratio: 0.1;}"; gcp= gtk_css_provider_new(); gtk_css_provider_load_from_data(gcp, str, -1, 0); gtk_style_context_add_provider(gsc, GTK_STYLE_PROVIDER(gcp), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } #endif show_verses (); return pos; } void add_verse (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *project = Denemo.project; DenemoMovement *movement = project->movement; if (project->movement->currentstaff) { DenemoStaff *staff = movement->currentstaff->data; add_verse_to_staff (movement, staff); signal_structural_change (project); GtkTextView *verse_view = (GtkTextView *) verse_get_current_view (staff); gtk_widget_show (GTK_WIDGET (verse_view)); } } void delete_verse (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; if (si->currentstaff) { DenemoStaff *staff = si->currentstaff->data; if (staff->verses && staff->verse_views) { GtkTextView *verse_view = (GtkTextView *) verse_get_current_view (staff); gint versenum = verse_get_current (staff); gchar *verse_text = verse_get_current_text (staff); staff->verse_views = g_list_remove (staff->verse_views, verse_view); staff->verses = g_list_remove (staff->verses, verse_text); if (staff->verse_views == NULL) { staff->current_verse_view = NULL; gtk_widget_destroy (gtk_widget_get_parent (gtk_widget_get_parent (GTK_WIDGET (verse_view))));//destroy notebook and so notebook->scrolled window->text view } else gtk_widget_destroy (gtk_widget_get_parent (GTK_WIDGET (verse_view))); // g_print("Children are %p\n", gtk_container_get_children (GTK_CONTAINER (gtk_container_get_children (GTK_CONTAINER (si->lyricsbox))->data))); if (!verse_set_current (staff, versenum-1)) staff->current_verse_view = NULL;// no verses left signal_structural_change (gui); score_status (gui, TRUE); draw_score_area (); } } } gchar * get_text_from_view (GtkWidget * textview) { GtkTextIter startiter, enditer; GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview)); gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (buffer), &startiter); gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (buffer), &enditer); return gtk_text_buffer_get_text (GTK_TEXT_BUFFER (buffer), &startiter, &enditer, FALSE); } // For the first call a textview is passed and the count'th syllable in that textview is set to be the next syllable returned. // Subsequent calls with NULL for textview return the next syllable of the textview that was set up by the above static gchar * lyric_iterator (GtkWidget * textview, gint count) { static const gchar *next; static gchar *lyrics; static GString *gs; if (gs == NULL) gs = g_string_new (""); if (textview == NULL) { gboolean result = scan_syllable ((gchar **) & next, gs); if (result && gs->len) return gs->str; else return NULL; } if (textview != DummyVerse) { SkipCount = 0; if (lyrics) g_free (lyrics); lyrics = get_text_from_view (textview); next = lyrics; while (count--) scan_syllable ((gchar **) & next, gs); } return NULL; } //for every chord while drawing next_syllable is called. gchar * next_syllable (void) { return lyric_iterator (NULL, 0); } /* reset_lyrics sets up the lyric iterator so that a call to next_syllable() will return the count'th syllable */ void reset_lyrics (DenemoStaff * staff, gint count) { if (Denemo.non_interactive) return; if (DummyVerse == NULL) DummyVerse = gtk_text_view_new (); GtkTextView *verse_view = (GtkTextView *) verse_get_current_view (staff); if (staff && verse_view) lyric_iterator (GTK_WIDGET (verse_view), count); else lyric_iterator (DummyVerse, count); } void install_lyrics_preview (DenemoMovement * si, GtkWidget * top_vbox) { if (Denemo.non_interactive) return; GtkWidget *parent = gtk_widget_get_parent (top_vbox); if (si->lyricsbox == NULL) si->lyricsbox = (GtkWidget *) gtk_vbox_new (FALSE, 1); //box to hold notebook of textview widgets if (parent) { if (!gtk_paned_get_child2 (GTK_PANED (parent))) { GtkWidget *vbox = (GtkWidget *) gtk_vbox_new (FALSE, 8); gtk_paned_pack2 (GTK_PANED (parent), vbox, FALSE, TRUE); //si->lyricsbox); gtk_widget_show (vbox); } gtk_box_pack_start (GTK_BOX (gtk_paned_get_child2 (GTK_PANED (parent))), si->lyricsbox, TRUE, TRUE, 0); } // if (Denemo.prefs.lyrics_pane) gtk_widget_show (si->lyricsbox); } /* hide the notebook of verses for the current staff */ void hide_lyrics (void) { DenemoProject *gui = Denemo.project; if (gui->movement->currentstaff && ((DenemoStaff *) gui->movement->currentstaff->data)->verse_views) //hide the notebook gtk_widget_hide (gtk_widget_get_parent (gtk_widget_get_parent (((DenemoStaff *) gui->movement->currentstaff->data)->verse_views->data))); } /* show the notebook of verses for the current staff hide all others*/ void show_lyrics (void) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; if (si->currentstaff && ((DenemoStaff *) si->currentstaff->data)->verse_views) //show the notebook gtk_widget_show (gtk_widget_get_parent (gtk_widget_get_parent (((DenemoStaff *) si->currentstaff->data)->verse_views->data))); select_lyrics (); } /* hide the notebooks of verses for the non-current staffs */ void select_lyrics (void) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; GList *current = si->thescore; for (; current; current = current->next) { if (current != si->currentstaff && ((DenemoStaff *) current->data)->verse_views) //hide the notebook gtk_widget_hide (gtk_widget_get_parent (gtk_widget_get_parent (((DenemoStaff *) current->data)->verse_views->data))); } } gchar * get_lyrics_for_current_verse (DenemoStaff * thestaff) { GtkTextView *verse_view = (GtkTextView *) verse_get_current_view (thestaff); if (verse_view) return get_text_from_view (GTK_WIDGET (verse_view)); else return NULL; } gboolean append_lyrics_for_current_verse (DenemoStaff * thestaff, gchar * text) { GtkTextView *verse_view = (GtkTextView *) verse_get_current_view (thestaff); if (verse_view) { GtkTextIter iter; GtkTextBuffer *textbuffer = gtk_text_view_get_buffer (verse_view); gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (textbuffer), &iter); gtk_text_buffer_insert (textbuffer, &iter, text, -1); return TRUE; } else return FALSE; } gboolean put_lyrics_for_current_verse (DenemoStaff * thestaff, gchar * text) { GtkTextView *verse_view = (GtkTextView *) verse_get_current_view (thestaff); if (verse_view) { GtkTextBuffer *textbuffer = gtk_text_view_get_buffer (verse_view); GtkTextIter startiter, enditer; gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (textbuffer), &startiter); gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (textbuffer), &enditer); gtk_text_buffer_delete (textbuffer, &startiter, &enditer); gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (textbuffer), &enditer); gtk_text_buffer_insert (textbuffer, &enditer, text, -1); return TRUE; } else return FALSE; } gchar * get_lyrics_for_verse_num (gint number) { DenemoProject *gui = Denemo.project; if (gui->movement->currentstaff) { DenemoStaff *thestaff = ((DenemoStaff *) gui->movement->currentstaff->data); if (thestaff->verses) { GList *verse = g_list_nth (thestaff->verses, number - 1); if (verse) return verse->data; } } return NULL; } denemo-2.2.0/src/command/PaxHeaders.19168/score.h0000644000000000000000000000013213135434036016222 xustar0030 mtime=1500919838.339981805 30 atime=1500919918.099981806 30 ctime=1500919914.146648472 denemo-2.2.0/src/command/score.h0000644000175000017500000000331513135434036020075 0ustar00jjbenhamjjbenham00000000000000/* score.h * headers for functions dealing with the whole score * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller */ #include #ifndef SCOREOPS_H #define SCOREOPS_H void point_to_empty_movement /*new_empty_score */ (DenemoProject * gui); void point_to_new_movement /*new_score */ (DenemoProject * gui); void init_score (DenemoMovement * si, DenemoProject * gui); DenemoMovement *clone_movement (DenemoMovement * si); void free_movement (DenemoProject * gui); void deletescore (GtkWidget * widget, DenemoProject * gui); void updatescoreinfo (DenemoProject * gui); void next_movement (DenemoAction * action, DenemoScriptParam * param); void prev_movement (DenemoAction * action, DenemoScriptParam * param); void append_new_movement (DenemoAction * action, DenemoScriptParam * param); void append_blank_movement (void); void insert_movement_before (DenemoAction * action, DenemoScriptParam * param); void insert_movement_after (DenemoAction * action, DenemoScriptParam * param); void delete_movement (DenemoAction * action, DenemoScriptParam * param); void movement_props_dialog (DenemoAction * action, DenemoScriptParam * param); gboolean goto_movement_staff_obj (DenemoProject * gui, gint movementnum, gint staffnum, gint measurenum, gint objnum, gint leftmeasurenum); void PopPosition (DenemoAction * action, DenemoScriptParam * param); void PushPosition (DenemoAction * action, DenemoScriptParam * param); void PopPushPosition (DenemoAction * action, DenemoScriptParam * param); void reset_movement_numbers (DenemoProject * gui); void set_movement_selector (DenemoProject *gui); DenemoObject *get_object_by_position (gint movementnum, gint staffnum, gint measurenum, gint objnum); #endif denemo-2.2.0/src/command/PaxHeaders.19168/grace.c0000644000000000000000000000013213135434036016163 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.116648472 30 ctime=1500919914.113315139 denemo-2.2.0/src/command/grace.c0000644000175000017500000000354513135434036020043 0ustar00jjbenhamjjbenham00000000000000/* grace.cpp * * functions which manipulate grace notes * For denemo, a gtk+ frontend to Lilypond, the GNU music typesetter * * (c) 2000, 2001, 2002 Adam Tee * */ #include "command/grace.h" #include "command/select.h" #include "command/commandfuncs.h" #include #include #include "core/utils.h" void toggle_grace (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; GET_1PARAM (action, param, grace); DenemoObject *curmudelaobj = (DenemoObject *) (gui->movement->currentobject ? gui->movement->currentobject->data : NULL); if (curmudelaobj && (curmudelaobj->type == CHORD)) { if (query) param->status = ((chord *) curmudelaobj->object)->is_grace, g_string_assign (param->string, "gracenote"); else { store_for_undo_change (si, curmudelaobj); ((chord *) curmudelaobj->object)->is_grace ^= GRACED_NOTE; displayhelper (Denemo.project); } //g_debug("now %x\n", ((chord *)curmudelaobj->object)->is_grace); } } void toggle_acciaccatura (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; GET_1PARAM (action, param, grace); DenemoObject *curmudelaobj = (DenemoObject *) (gui->movement->currentobject ? gui->movement->currentobject->data : NULL); if (curmudelaobj && (curmudelaobj->type == CHORD)) { if (query) param->status = ((chord *) curmudelaobj->object)->is_grace, g_string_assign (param->string, "acciaccatura"); else { store_for_undo_change (si, curmudelaobj); ((chord *) curmudelaobj->object)->is_grace ^= ACCIACCATURA; displayhelper (Denemo.project); } //g_debug("now %x\n", ((chord *)curmudelaobj->object)->is_grace); } } denemo-2.2.0/src/command/PaxHeaders.19168/fakechord.h0000644000000000000000000000013213135434036017035 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.116648472 30 ctime=1500919914.106648472 denemo-2.2.0/src/command/fakechord.h0000644000175000017500000000046713135434036020715 0ustar00jjbenhamjjbenham00000000000000 //#ifndef FAKECHORD_H //#define FAKECHORD_H #include void separate_fakechord_elements (gchar * fakechord, DenemoObject * curObj); void fakechord_insert (DenemoAction * action, DenemoScriptParam * param); void delete_fakechords (DenemoAction * action, DenemoScriptParam * param); //#endif denemo-2.2.0/src/command/PaxHeaders.19168/select.c0000644000000000000000000000013213135434036016361 xustar0030 mtime=1500919838.343315139 30 atime=1500919918.116648472 30 ctime=1500919914.146648472 denemo-2.2.0/src/command/select.c0000644000175000017500000015771513135434036020252 0ustar00jjbenhamjjbenham00000000000000/** * select.c * operations for selecting, cutting, copying, and pasting music * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller, Adam Tee, 2011 Richard Shann * * */ #include #include "display/calculatepositions.h" #include "command/commandfuncs.h" #include #include "display/draw.h" #include "display/calculatepositions.h" #include "command/object.h" #include "command/measure.h" #include "command/select.h" #include "command/staff.h" #include "core/prefops.h" #include "command/lyric.h" #include "command/lilydirectives.h" #include "command/score.h" #include "core/cache.h" #include "core/view.h" #include "command/contexts.h" #include "ui/moveviewport.h" /*For save selection function*/ #include "core/utils.h" /** * The copy buffer is a GList of objnode *s -- at first, I was going * to use staffnode *s, measurenode *s, and then objnode *s, but I * realized that'd be overkill and just complicate the implementation * unnecessarily. * * Each item in the copybuffer list corresponds to the stuff in * the buffer on each staff. */ static gboolean XesNeedRecalculating; static void undo (DenemoProject * gui); static void redo (DenemoProject * gui); static GList *copybuffer = NULL; // this is a list one for each staff of lists of objects static gint staffsinbuffer = 0; static gint measurebreaksinbuffer = 0; static GList *clipboards = NULL; typedef struct DenemoClipboard { GList *objectlist; gint staffsinbuffer; gint measurebreaksinbuffer; } DenemoClipboard; static GList * clone_obj_list (GList * g) { GList *ret = NULL; do { ret = g_list_append (ret, dnm_clone_object (g->data)); } while ((g = g->next)); return ret; } // pushes the current copybuffer; pushes a NULL clipboard if none. void push_clipboard (void) { GList *thecopy = NULL; DenemoClipboard *clip = (DenemoClipboard *) g_malloc0 (sizeof (DenemoClipboard)); GList *g; for (g = copybuffer; g; g = g->next) { thecopy = g_list_append (thecopy, clone_obj_list (g->data)); } clip->objectlist = thecopy; clip->measurebreaksinbuffer = measurebreaksinbuffer; clip->staffsinbuffer = staffsinbuffer; clipboards = g_list_prepend (clipboards, clip); } gboolean pop_clipboard (void) { GList *thecopy = NULL; DenemoClipboard *clip; if (clipboards == NULL) return FALSE; clip = (DenemoClipboard *) clipboards->data; clipboards = g_list_remove (clipboards, clip); clearbuffer (); if (clip->objectlist) { thecopy = clip->objectlist; measurebreaksinbuffer = clip->measurebreaksinbuffer; staffsinbuffer = clip->staffsinbuffer; copybuffer = thecopy; } g_free (clip); return TRUE; } /* returns the top clipboard popped off the stack. The caller must free the clipboard with when done */ GList * pop_off_clipboard (void) { GList *thecopy = NULL; if (clipboards && clipboards->data) thecopy = ((DenemoClipboard *) clipboards->data)->objectlist; if(clipboards) g_free (clipboards->data); clipboards = g_list_remove (clipboards, clipboards->data); return thecopy; } /** * sets current object to the given cursor position * */ void setcurrentobject (DenemoMovement * si, gint cursorpos) { g_debug ("Set Current Object Cursor pos %d\n", cursorpos); si->currentobject = g_list_nth ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects, cursorpos); //g_assert (si->currentobject != NULL); } /** * clearbuffer * Clears the copybuffer of data * Arguments - None * return - none */ void clearbuffer (void) { g_list_foreach (copybuffer, (GFunc)freeobjlist, NULL); g_list_free (copybuffer); copybuffer = NULL; staffsinbuffer = 0; measurebreaksinbuffer = 0; } void free_clipboard (GList * clipboard) { if (clipboard) { push_clipboard (); copybuffer = clipboard; measurebreaksinbuffer = 0; staffsinbuffer = 1; clearbuffer (); pop_clipboard (); } } gint get_staffs_in_clipboard (void) { return staffsinbuffer; } void insert_clipboard (GList * clipboard) { if (clipboard) { push_clipboard (); copybuffer = clipboard; measurebreaksinbuffer = 0; staffsinbuffer = 1; call_out_to_guile ("(d-Paste)"); copybuffer = NULL; pop_clipboard (); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } } /** * saveselection * Saves the current selection to a given file * * @param si pointer to the score information structure * @return none */ void saveselection (DenemoMovement * si) { if (si->markstaffnum == 0) /* Indicator that there's no selection. */ return; clearbuffer (); staffsinbuffer = si->selection.laststaffmarked - si->selection.firststaffmarked + 1; copytobuffer (si); si->savebuffer = copybuffer; /* Test code for save selection FILE *fp; GString *file = NULL; file = g_string_new(get_user_data_dir()); g_string_append(file, "/denemoanalysispattern"); filesaveselection(file->str, si); clearbuffer (); g_free(file); */ } /** * copytobuffer * Copies selection to the copybuffer * * @param si pointer to the score information structure */ void copytobuffer (DenemoMovement * si) { staffnode *curstaff; measurenode *curmeasure; objnode *curobj; objnode *theobjs; DenemoObject *clonedobject; gint i = 0, j = 0, k = 0; if (si->markstaffnum == 0) /* Indicator that there's no selection. */ { clearbuffer (); call_out_to_guile ("(CreateScriptForDirective)"); } else { call_out_to_guile ("(set! CreateScriptForDirective::clipboard #f)"); Denemo.project->movement->directive_on_clipboard = NULL; } if (si->markstaffnum == 0) return; clearbuffer (); si->selection_is_copied = TRUE; staffsinbuffer = si->selection.laststaffmarked - si->selection.firststaffmarked + 1; g_debug ("No staffs in copybuffer %d\n", staffsinbuffer); /* Staff loop. */ for (i = si->selection.firststaffmarked, curstaff = g_list_nth (si->thescore, i - 1); curstaff && i <= si->selection.laststaffmarked; curstaff = curstaff->next, i++) { if (((DenemoStaff *) curstaff->data)->is_parasite) continue; /* Initialize first ->data for copybuffer to NULL. */ theobjs = NULL; /* Measure loop. */ for (j = si->selection.firstmeasuremarked, k = si->selection.firstobjmarked, curmeasure = g_list_nth (staff_first_measure_node (curstaff), j - 1); curmeasure && j <= si->selection.lastmeasuremarked; curmeasure = curmeasure->next, j++) { for (curobj = g_list_nth ((objnode *) ((DenemoMeasure*)curmeasure->data)->objects, k); /* cursor_x is 0-indexed */ curobj && (j < si->selection.lastmeasuremarked || k <= si->selection.lastobjmarked); curobj = curobj->next, k++) { clonedobject = dnm_clone_object ((DenemoObject *) curobj->data); theobjs = g_list_append (theobjs, clonedobject); } /* End object loop */ g_debug ("cloned objects on staff \n"); if (j < si->selection.lastmeasuremarked || k < si->selection.lastobjmarked) { if (!((j == si->selection.lastmeasuremarked))) { g_print ("Insert measurebreak obj in copybuffer %d %d", j, k); /* ???outdated comment??? That is, there's another measure, the cursor is in appending position, or the selection spans multiple staffs, in which case another measure boundary should be added. */ theobjs = g_list_append (theobjs, newmeasurebreakobject ()); if (i == si->selection.firststaffmarked) measurebreaksinbuffer++; } } k = 0; /* Set it for next run through object loop */ } /* End measure loop */ if ((staffsinbuffer > 1) && (i < si->selection.laststaffmarked)) { theobjs = g_list_append (theobjs, newstaffbreakobject ()); g_debug ("Inserting Staffbreak object in copybuffer"); } if (theobjs) copybuffer = g_list_append (copybuffer, theobjs); } /* End staff loop */ } /** * cuttobuffer * Cuts selection to the copybuffer, removing it from the score * * @param si pointer to score information structure */ static void cuttobuffer (DenemoMovement * si, gboolean copyfirst) { staffnode *curstaff; measurenode *curmeasure; objnode *tempobj; gint i, jcounter, //jcounter is marking the position of the measure currently being cleared I think max; if (!si->markstaffnum) return; take_snapshot (); if (copyfirst) copytobuffer (si); gint staffs_removed_measures = 0; // a count of removed measures in the case where multiple staffs are involved gint lmeasurebreaksinbuffer = si->selection.lastmeasuremarked - si->selection.firstmeasuremarked; gint lstaffsinbuffer = si->selection.laststaffmarked - si->selection.firststaffmarked + 1; if (copyfirst) { if (!(lmeasurebreaksinbuffer == measurebreaksinbuffer)) g_warning ("logic of copy to buffer seems wrong about measure breaks"); if (!(lstaffsinbuffer == staffsinbuffer)) g_warning ("logic of copy to buffer seems wrong about staff breaks"); } if (lstaffsinbuffer == 1) { /* Just a single staff is a special case, again. */ jcounter = si->selection.firstmeasuremarked; //currently clearing stuff from the firstmeasuremarked curmeasure = g_list_nth (staff_first_measure_node (si->currentstaff), jcounter - 1); /* Clear the relevant part of the first measure selected */ if (lmeasurebreaksinbuffer) max = G_MAXINT; else max = si->selection.lastobjmarked; for (i = si->selection.firstobjmarked; ((tempobj = g_list_nth ((objnode *) ((DenemoMeasure*)curmeasure->data)->objects, si->selection.firstobjmarked)) && i <= max); i++) { ((DenemoMeasure*)curmeasure->data)->objects = g_list_remove_link ((objnode *) ((DenemoMeasure*)curmeasure->data)->objects, tempobj); freeobject ((DenemoObject *) tempobj->data); g_list_free_1 (tempobj); } jcounter++; //move on to the second measure being cleared curmeasure = curmeasure->next; if (!si->thescore->next) { /* That is, the score has only this one staff remove the (whole) measures between the first and last - which may be partial. */ if (lmeasurebreaksinbuffer - 1 > 0) { curmeasure = removemeasures (si, jcounter - 1, lmeasurebreaksinbuffer - 1, TRUE); jcounter += lmeasurebreaksinbuffer - 1; // increased by the number of measures *between* first and last marked } } else for (; curmeasure && jcounter < si->selection.lastmeasuremarked; curmeasure = curmeasure->next, jcounter++) { freeobjlist (((DenemoMeasure*)curmeasure->data)->objects); ((DenemoMeasure*)curmeasure->data)->objects = NULL; } /* Now clear the relevant part of the last measure selected */ if (curmeasure && (jcounter <= si->selection.lastmeasuremarked)) { for (i = 0; ((DenemoMeasure*)curmeasure->data)->objects && i <= si->selection.lastobjmarked; i++) { tempobj = (objnode *) ((DenemoMeasure*)curmeasure->data)->objects; ((DenemoMeasure*)curmeasure->data)->objects = g_list_remove_link ((objnode *) ((DenemoMeasure*)curmeasure->data)->objects, tempobj); freeobject ((DenemoObject *) tempobj->data); g_list_free_1 (tempobj); } /* And delete it, if the measure's been cleared and there's only one staff. */ if (!((DenemoMeasure*)curmeasure->data)->objects && !si->thescore->next) removemeasures (si, g_list_position (staff_first_measure_node (si->currentstaff), curmeasure), 1, TRUE); } cache_staff (si->currentstaff); staff_fix_note_heights ((DenemoStaff*)si->currentstaff->data); staff_show_which_accidentals ((DenemoStaff *) si->currentstaff->data); staff_beams_and_stems_dirs ((DenemoStaff *) si->currentstaff->data); } // end of single staff else { /* Multiple staff selection */ if (lstaffsinbuffer == (gint) (g_list_length (si->thescore))) { /* Every staff was part of the selection */ if (lmeasurebreaksinbuffer > 0) { removemeasures (si, si->selection.firstmeasuremarked - 1, lmeasurebreaksinbuffer + 1, TRUE); staffs_removed_measures = lmeasurebreaksinbuffer; cache_all (); } else for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) { curmeasure = g_list_nth (staff_first_measure_node (curstaff), si->selection.firstmeasuremarked - 1); freeobjlist ( ((DenemoMeasure*)curmeasure->data)->objects); ((DenemoMeasure*)curmeasure->data)->objects = NULL; cache_staff (curstaff); staff_fix_note_heights ((DenemoStaff*)curstaff->data); staff_show_which_accidentals ((DenemoStaff *) curstaff->data); staff_beams_and_stems_dirs ((DenemoStaff *) curstaff->data); } } else { /* Staff loop */ for (i = si->selection.firststaffmarked, curstaff = g_list_nth (si->thescore, i - 1); curstaff && i <= si->selection.laststaffmarked; curstaff = curstaff->next, i++) { if (((DenemoStaff *) curstaff->data)->is_parasite) continue; /* Measure loop */ for (jcounter = si->selection.firstmeasuremarked, curmeasure = g_list_nth (staff_first_measure_node (curstaff), jcounter - 1); curmeasure && jcounter <= si->selection.lastmeasuremarked; curmeasure = curmeasure->next, jcounter++) { freeobjlist ( ((DenemoMeasure*)curmeasure->data)->objects); ((DenemoMeasure*)curmeasure->data)->objects = NULL; } cache_staff (curstaff); staff_show_which_accidentals ((DenemoStaff *) curstaff->data); staff_beams_and_stems_dirs ((DenemoStaff *) curstaff->data); } } } si->selection.firststaffmarked = si->markstaffnum = 0; //only the latter is needed, but there was some confusion at one time... /* And set some currents. This would probably be better to split off * into a more-generalized version of setcurrents or something; * what's here is more-or-less copied from dnm_deleteobject in * commandfuncs */ si->currentmeasurenum = si->selection.firstmeasuremarked - (staffs_removed_measures ? 1 : 0); if (si->currentmeasurenum < 1) { si->currentmeasurenum = 1; } si->currentmeasure = g_list_nth (staff_first_measure_node (si->currentstaff), si->currentmeasurenum - 1); si->cursor_x = si->selection.firstobjmarked; if (si->cursor_x < (gint) (g_list_length ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects))) { si->currentobject = g_list_nth ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects, si->cursor_x); si->cursor_appending = FALSE; } else { si->currentobject = g_list_last ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects); si->cursor_appending = TRUE; } //if clef has been deleted we need to re-validate leftmost clef - would only apply if the clef being deleted was off the left side of screen - some sort of scripting scenario... find_leftmost_allcontexts (si); isoffleftside (Denemo.project); isoffrightside (Denemo.project); score_status (Denemo.project, TRUE); } DenemoObjType get_clip_obj_type (gint m, gint n) { if (copybuffer == NULL) return -1; GList *stafflist = g_list_nth (copybuffer, m); if (stafflist == NULL) return -1; GList *curbufferobj = g_list_nth (stafflist->data, n); if (curbufferobj == NULL || curbufferobj->data == NULL) return -1; return ((DenemoObject *) (curbufferobj->data))->type; } gint get_clip_objs (gint m) { if (copybuffer == NULL) return -1; GList *stafflist = g_list_nth (copybuffer, m); if (stafflist == NULL) return -1; return g_list_length (stafflist->data); } // insert the nth object from the mth staff from the copybuffer into music at the cursor position // return TRUE if inserted gboolean insert_clip_obj (gint m, gint n) { DenemoMovement *si = Denemo.project->movement; if (copybuffer == NULL) return FALSE; GList *stafflist = g_list_nth (copybuffer, m); if (stafflist == NULL) return FALSE; objnode *curbufferobj = g_list_nth (stafflist->data, n); if (curbufferobj == NULL) return FALSE; DenemoObject *clonedobj; DenemoObject *curobj = (DenemoObject *) curbufferobj->data; clonedobj = dnm_clone_object (curobj); object_insert (Denemo.project, clonedobj); cache_measure (si->currentmeasure); //reset_cursor_stats (si); if (clonedobj->type == CLEF) staff_fix_note_heights ((DenemoStaff *) si->currentstaff->data); else if (clonedobj->type == CHORD) newclefify (clonedobj); staff_beams_and_stems_dirs ((DenemoStaff *) si->currentstaff->data); find_xes_in_all_measures (si); showwhichaccidentals ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects); return TRUE; } DenemoObject * get_mark_object (void) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; if (!si->markstaffnum) return NULL; staffnode *curstaff = g_list_nth (si->thescore, si->selection.firststaffmarked - 1); DenemoStaff *firststaff = (DenemoStaff *) curstaff->data; measurenode *firstmeasure = g_list_nth (firststaff->themeasures, si->selection.firstmeasuremarked - 1); objnode *firstobj = g_list_nth (((DenemoMeasure*)firstmeasure->data)->objects, si->selection.firstobjmarked); //g_debug("First %d\n", si->selection.firstobjmarked); return firstobj ? ((DenemoObject *) firstobj->data) : NULL; } DenemoObject * get_point_object (void) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; if (!si->markstaffnum) return NULL; staffnode *curstaff = g_list_nth (si->thescore, si->selection.laststaffmarked - 1); DenemoStaff *laststaff = (DenemoStaff *) curstaff->data; measurenode *lastmeasure = g_list_nth (laststaff->themeasures, si->selection.lastmeasuremarked - 1); objnode *lastobj = g_list_nth (((DenemoMeasure*)lastmeasure->data)->objects, si->selection.lastobjmarked); return lastobj ? ((DenemoObject *) lastobj->data) : NULL; } /** * mark_boundaries_helper * Helper function which marks the boundaries of the * mark * * Inputs * @param si pointer to the DenemoMovement structure * @param mark_staff * @param mark_measure - * @param mark_object - * @param point_staff - * @param point_measure - * @param point_object - * @param type - */ static void mark_boundaries_helper (DenemoMovement * si, gint mark_staff, gint mark_measure, gint mark_object, gint point_staff, gint point_measure, gint point_object, enum drag_selection_type type) { si->selection_is_copied = FALSE; if (mark_staff) { si->selection.firststaffmarked = MIN (mark_staff, point_staff); si->selection.laststaffmarked = MAX (mark_staff, point_staff); switch (type) { case NO_DRAG: /* error, really. */ break; case NORMAL_SELECT: case WHOLE_MEASURES: /* I was thinking of handling these with a fallthrough, but the commonality in setting si->selection.firstmeasuremarked and si->selection.lastmeasuremarked caused it not to work out cleanly. */ si->selection.firstmeasuremarked = MIN (mark_measure, point_measure); si->selection.lastmeasuremarked = MAX (mark_measure, point_measure); if (type == NORMAL_SELECT && si->selection.firststaffmarked == si->selection.laststaffmarked) { if (mark_measure < point_measure) { si->selection.firstobjmarked = mark_object; si->selection.lastobjmarked = point_object; } else if (mark_measure > point_measure) { si->selection.firstobjmarked = point_object; si->selection.lastobjmarked = mark_object; } else { /* Same measure */ si->selection.firstobjmarked = MIN (mark_object, point_object); si->selection.lastobjmarked = MAX (mark_object, point_object); } } else { si->selection.firstobjmarked = 0; si->selection.lastobjmarked = G_MAXINT - 1; } break; case WHOLE_STAFFS: si->selection.firstmeasuremarked = 1; si->selection.lastmeasuremarked = g_list_length (si->measurewidths); si->selection.firstobjmarked = 0; si->selection.lastobjmarked = G_MAXINT - 1; } } } /** * setmark * Sets the current mark for the start of the buffer * */ void set_mark (DenemoAction* action, DenemoScriptParam * param) { DenemoMovement *si = Denemo.project->movement; si->selection_is_copied = FALSE; si->markstaffnum = si->currentstaffnum; si->markmeasurenum = si->currentmeasurenum; si->markcursor_x = si->cursor_x; calcmarkboundaries (si); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); } /** * set_point * Sets the current cursor position as the end of the selection * */ void set_point (DenemoAction* action, DenemoScriptParam * param) { DenemoMovement *si = Denemo.project->movement; if (si->markstaffnum) { mark_boundaries_helper (si, si->markstaffnum, si->markmeasurenum, si->markcursor_x, si->currentstaffnum, si->currentmeasurenum, si->cursor_x, NORMAL_SELECT); } if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); } gboolean mark_status (void) { return Denemo.project->movement->markstaffnum != 0; } /** * unset_mark * Remove the current mark * */ void unset_mark (DenemoAction* action, DenemoScriptParam * param) { DenemoMovement *si = Denemo.project->movement; si->markstaffnum = 0; calcmarkboundaries (si); if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); } gboolean in_selection (DenemoMovement * si) { if (si->markstaffnum) { if (si->currentstaffnum >= si->selection.firststaffmarked && si->currentstaffnum <= si->selection.laststaffmarked) { if (si->currentmeasurenum == si->selection.firstmeasuremarked) { if (si->currentmeasurenum == si->selection.lastmeasuremarked) { if (si->cursor_appending) return FALSE; if ((si->cursor_x >= si->selection.firstobjmarked) && (si->cursor_x <= si->selection.lastobjmarked)) return TRUE; else return FALSE; } if (si->currentmeasurenum < si->selection.lastmeasuremarked) { if (si->cursor_x >= si->selection.firstobjmarked) return TRUE; return FALSE; } } if (si->currentmeasurenum > si->selection.firstmeasuremarked) { if (si->currentmeasurenum == si->selection.lastmeasuremarked) { if ((si->cursor_x <= si->selection.lastobjmarked)) return TRUE; else return FALSE; } if (si->currentmeasurenum < si->selection.lastmeasuremarked) return TRUE; } } } return FALSE; } /* save/restore selection */ static gint firststaff; static gint laststaff; static gint firstobj; static gint lastobj; static gint firstmeasure; static gint lastmeasure; void save_selection (DenemoMovement * si) { firststaff = si->selection.firststaffmarked; laststaff = si->selection.laststaffmarked; firstobj = si->selection.firstobjmarked; lastobj = si->selection.lastobjmarked; firstmeasure = si->selection.firstmeasuremarked; lastmeasure = si->selection.lastmeasuremarked; } void restore_selection (DenemoMovement * si) { si->selection.firststaffmarked = firststaff; si->selection.laststaffmarked = laststaff; si->selection.firstobjmarked = firstobj; si->selection.lastobjmarked = lastobj; si->selection.firstmeasuremarked = firstmeasure; si->selection.lastmeasuremarked = lastmeasure; } /** * goto_mark * goto the current mark without changing the selection * * */ void goto_mark (DenemoAction * action, DenemoScriptParam * param) { DenemoScriptParam local_param; local_param.status = TRUE; DenemoMovement *si = Denemo.project->movement; if (!action) ((DenemoScriptParam *) param)->status = si->markstaffnum; else param = &local_param; if (si->markstaffnum) { save_selection (si); set_currentmeasurenum (Denemo.project, si->markmeasurenum); set_currentstaffnum (Denemo.project, si->markstaffnum); while (si->cursor_x < si->markcursor_x && param->status) cursorright (NULL, param); restore_selection (si); if (!action) displayhelper (Denemo.project); } } /** * goto_selection_start * move cursor the first object in the selection without changing the selection * * */ void goto_selection_start (DenemoAction * action, DenemoScriptParam * param) { DenemoMovement *si = Denemo.project->movement; if (!action) ((DenemoScriptParam *) param)->status = si->markstaffnum; if (si->markstaffnum) { gint first = si->selection.firstobjmarked; save_selection (si); set_currentmeasurenum (Denemo.project, si->selection.firstmeasuremarked); set_currentstaffnum (Denemo.project, si->selection.firststaffmarked); while (si->cursor_x < first) cursorright (NULL, NULL); restore_selection (si); if (!action) displayhelper (Denemo.project); } } static GSList *positions = NULL; DenemoPosition * pop_position (void) { DenemoPosition *pos; if (positions) { pos = positions->data; positions = g_slist_delete_link (positions, positions); return pos; } return NULL; } void get_position (DenemoMovement * si, DenemoPosition * pos) { pos->movement = g_list_index (Denemo.project->movements, si) + 1; pos->staff = si->currentstaffnum; pos->measure = si->currentmeasurenum; pos->object = si->currentobject ? si->cursor_x + 1 : 0; pos->appending = si->cursor_appending; pos->offend = si->cursoroffend; pos->leftmeasurenum = si->leftmeasurenum; } void push_position (void) { DenemoMovement *si = Denemo.project->movement; DenemoPosition *pos = (DenemoPosition *) g_malloc (sizeof (DenemoPosition)); get_position (si, pos); if (pos->movement) positions = g_slist_prepend (positions, pos); else g_free (pos); //g_debug("%d %d %d %d \n", pos->movement, pos->staff, pos->measure, pos->object); } static void push_given_position (DenemoPosition * pos) { DenemoPosition *position = (DenemoPosition *) g_malloc (sizeof (DenemoPosition)); memcpy (position, pos, sizeof (DenemoPosition)); positions = g_slist_prepend (positions, position); } /** * copywrapper * Wrapper function for the copy command * * @param action pointer to the DenemoAction event * @param gui pointer to the DenemoProject structure */ void copywrapper (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; copytobuffer (gui->movement); } /** * cutwrapper * Wrapper function for the cut command * * @param action pointer to the DenemoAction event * @param gui pointer to the DenemoProject structure */ void cutwrapper (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; cuttobuffer (gui->movement, TRUE); //check that measurewidths is long enough after cutting empty measures displayhelper (gui); } void delete_selection (void) { DenemoProject *gui = Denemo.project; cuttobuffer (gui->movement, FALSE); displayhelper (gui); } /** * pastewrapper * Wrapper function for the paste command * * @param gui pointer to the DenemoProject structure * @param action pointer to the DenemoAction event */ void pastewrapper (DenemoAction * action, DenemoScriptParam * param) { stage_undo (Denemo.project->movement, ACTION_STAGE_END); //undo is a queue (ie stack) so we push the end first if ((Denemo.project->movement->directive_on_clipboard) && (copybuffer == NULL)) call_out_to_guile ("(eval-string CreateScriptForDirective::clipboard)"); else call_out_to_guile ("(DenemoPaste)"); //FIXME if not success a ACTION_SCRIPT_ERROR will have been put in the undo queue... stage_undo (Denemo.project->movement, ACTION_STAGE_START); score_status (Denemo.project, TRUE); } /** * saveselwrapper * Wrapper function for the Save selection command * * @param action pointer to the DenemoAction event * @param gui pointer to the DenemoProject structure */ void saveselwrapper (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; saveselection (gui->movement); } /** * calcmarkboundaries * Wrapper function for the mark_boundaries_helper function * drag selection type is set to NORMAL_SELECT * * Inputs * scoreinfo - score information */ void calcmarkboundaries (DenemoMovement * si) { mark_boundaries_helper (si, si->markstaffnum, si->markmeasurenum, si->markcursor_x, si->currentstaffnum, si->currentmeasurenum, si->cursor_x, NORMAL_SELECT); } void swap_point_and_mark (DenemoAction * action, DenemoScriptParam * param) { DenemoMovement *si = Denemo.project->movement; gint temp = si->currentstaffnum; si->currentstaffnum = si->markstaffnum; si->markstaffnum = temp; temp = si->currentmeasurenum; si->currentmeasurenum = si->markmeasurenum; si->markmeasurenum = temp; temp = si->cursor_x; si->cursor_x = si->markcursor_x; si->markcursor_x = temp; setcurrentobject (si, si->cursor_x); calcmarkboundaries (si); displayhelper (Denemo.project); } /** * undowrapper * Wrapper function for the undo command * * Inputs * data - pointer to the score * callback_action - unused * widget - unused */ void undowrapper (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; XesNeedRecalculating = FALSE; undo (gui); if (XesNeedRecalculating) setcurrents (Denemo.project->movement), find_xes_in_all_measures (Denemo.project->movement); displayhelper (gui); } /** * redowrapper * Wrapper function for the redo command * * Inputs * data - pointer to the score * callback_action - unused * widget - unused */ void redowrapper (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; redo (gui); displayhelper (gui); } /* store the passed object as ACTION_CHANGE undo information */ /* potentially we could optimize the storage of undo information by telescoping changes to the same object when the undo is staged, it would mean keeping a global note of whether the undo is currently staged. We would peek at the head of the queue and if it was an ACTION_CHANGE at the same position we could free the stored object and replace it with the clone created here */ void store_for_undo_change (DenemoMovement * si, DenemoObject * curobj) { if (!si->undo_guard) { DenemoUndoData *data = (DenemoUndoData *) g_malloc (sizeof (DenemoUndoData)); data->object = dnm_clone_object (curobj); get_position (si, &data->position); data->action = ACTION_CHANGE; update_undo_info (si, data); } } void store_for_undo_measure_create (DenemoMovement * si, gint staffnum, gint measurenum) { if (!si->undo_guard) { DenemoUndoData *data = (DenemoUndoData *) g_malloc (sizeof (DenemoUndoData)); data->position.staff = staffnum; data->position.measure = measurenum + 1; data->action = ACTION_MEASURE_CREATE; update_undo_info (si, data); } } static void free_chunk (DenemoUndoData * chunk) { g_debug ("free %d\n", chunk->action); switch (chunk->action) { case ACTION_STAGE_START: case ACTION_STAGE_END: case ACTION_SCRIPT_ERROR: return; //statically allocated case ACTION_INSERT: case ACTION_DELETE: case ACTION_CHANGE: freeobject (chunk->object); g_free (chunk); break; case ACTION_MEASURE_CREATE: case ACTION_MEASURE_REMOVE: g_free (chunk); break; case ACTION_MEASURE_DELETE: case ACTION_MEASURE_INSERT: if (chunk->object) free_measure (chunk->object); g_free (chunk); break; case ACTION_SNAPSHOT: g_warning ("Snapshot free is not implemented"); g_free (chunk); break; default: g_warning ("Unknown type of undo data %d", chunk->action); } } static DenemoUndoData ActionStageStart = { ACTION_STAGE_START }; static DenemoUndoData ActionStageEnd = { ACTION_STAGE_END }; static DenemoUndoData ActionScriptError = { ACTION_SCRIPT_ERROR }; void stage_undo (DenemoMovement * si, action_type type) { switch (type) { case ACTION_STAGE_START: { if (g_queue_is_empty (si->undodata)) return; DenemoUndoData *chunk = g_queue_peek_head (si->undodata); if (chunk->action == ACTION_STAGE_END) { chunk = g_queue_pop_head (si->undodata); // free_chunk(chunk); not needed, is static anyway //g_debug("Script did not need undoing"); } else update_undo_info (si, &ActionStageStart); } break; case ACTION_STAGE_END: update_undo_info (si, &ActionStageEnd); break; case ACTION_SCRIPT_ERROR: update_undo_info (si, &ActionScriptError); break; default: g_warning ("Unknown undo action %d will not be stored", type); } } //return a string describing the top of the undo stack, or one below if stage start. // caller must g_free gchar * get_last_change (DenemoMovement * si) { DenemoUndoData *last = g_queue_peek_head (si->undodata); gint n = 0; while (last && ((last->action == ACTION_STAGE_START) || (last->action == ACTION_STAGE_END))) last = g_queue_peek_nth (si->undodata, ++n); if (last == NULL) return NULL; switch (last->action) { case ACTION_SNAPSHOT: return g_strdup_printf ("Snapshot (e.g. measure delete, cut, paste and sadly many other things ... "); break; case ACTION_INSERT: return g_strdup_printf ("Insert the object at staff %d measure %d position %d; ", last->position.staff, last->position.measure, last->position.object + 1); case ACTION_DELETE: return g_strdup_printf ("Deleted a %s at staff %d measure %d position %d; ", DenemoObjTypeNames[((DenemoObject *) last->object)->type], last->position.staff, last->position.measure, last->position.object); break; case ACTION_CHANGE: return g_strdup_printf ("Change %s at staff %d measure %d position %d; ", DenemoObjTypeNames[((DenemoObject *) last->object)->type], last->position.staff, last->position.measure, last->position.object); break; case ACTION_MEASURE_CREATE: return g_strdup_printf ("Create %s; at staff %d measure %d position %d; ", DenemoObjTypeNames[((DenemoObject *) last->object)->type], last->position.staff, last->position.measure, last->position.object); break; case ACTION_MEASURE_REMOVE: return g_strdup_printf ("Remove %s; at staff %d measure %d position %d; ", DenemoObjTypeNames[((DenemoObject *) last->object)->type], last->position.staff, last->position.measure, last->position.object); case ACTION_MEASURE_DELETE: return g_strdup_printf ("Delete Measure at staff %d measure %d position %d; ", last->position.staff, last->position.measure, last->position.object); case ACTION_NOOP: return g_strdup_printf ("No-op; "); break; default: return g_strdup_printf ("Unknown action %d\n", last->action); } } // snapshot the current movement for undo gboolean take_snapshot (void) { if (!Denemo.project->movement->undo_guard) { DenemoUndoData *chunk; chunk = (DenemoUndoData *) g_malloc (sizeof (DenemoUndoData)); chunk->object = (DenemoObject *) clone_movement (Denemo.project->movement); //fix up somethings... get_position (Denemo.project->movement, &chunk->position); chunk->position.appending = 0; chunk->action = ACTION_SNAPSHOT; update_undo_info (Denemo.project->movement, chunk); return TRUE; } else return FALSE; } static void print_queue (gchar * msg, GQueue * q) { GList *g; g_print ("%s", msg); for (g = q->head; g; g = g->next) { DenemoUndoData *chunk = g->data; switch (chunk->action) { case ACTION_STAGE_START: g_print ("["); break; case ACTION_STAGE_END: g_print ("]\n"); break; case ACTION_SNAPSHOT: g_print ("Snapshot; "); break; case ACTION_INSERT: g_print ("Ins; "); break; case ACTION_DELETE: g_print ("Del %s; ", DenemoObjTypeNames[((DenemoObject *) chunk->object)->type]); break; case ACTION_CHANGE: g_print ("Chn %s; ", DenemoObjTypeNames[((DenemoObject *) chunk->object)->type]); break; case ACTION_MEASURE_CREATE: g_print ("Create; "); break; case ACTION_MEASURE_REMOVE: g_print ("Remove; "); break; case ACTION_MEASURE_DELETE: g_print ("Delete Measure; "); break; case ACTION_NOOP: g_print ("No-op; "); break; default: g_print ("Unknown action %d\n", chunk->action); } } g_print ("End queue"); } static gboolean position_for_chunk (DenemoProject * gui, DenemoUndoData * chunk) { DenemoScriptParam param; param.status = TRUE; //g_debug("undo guard before %d level is %d\n undo action is %d\n", gui->movement->undo_guard, gui->undo_level, chunk->action); switch (chunk->action) { case ACTION_CHANGE: if (chunk->position.object == 0) return FALSE; //Cannot undo a change in an empty measure=>undo queue is corrupt //FALL THRU case ACTION_INSERT: case ACTION_DELETE: case ACTION_MEASURE_CREATE: //this creates an (blank)measure case ACTION_MEASURE_REMOVE: //this is the action that removes a blank measure at pos case ACTION_MEASURE_DELETE: //this is the action that deletes measure at pos { goto_movement_staff_obj (NULL /*non-interactive*/, -1, chunk->position.staff, chunk->position.measure, chunk->position.object, chunk->position.leftmeasurenum); } break; case ACTION_NOOP: break; default: break; } return param.status; } //Takes the action needed for one chunk of undo/redo data static void action_chunk (DenemoProject * gui, DenemoUndoData ** pchunk) { DenemoUndoData *chunk = *pchunk; switch (chunk->action) { case ACTION_MEASURE_CREATE: { //delete the empty measure in the chunk->position.staff at measure number chunk->position->object dnm_deletemeasure (gui->movement); chunk->action = ACTION_MEASURE_REMOVE; if (chunk->position.measure > 1) chunk->position.measure--; else chunk->action = ACTION_NOOP; if (!gui->movement->currentmeasure) { g_warning ("position after undo insert Bug in select.c"); position_for_chunk (gui, chunk); //movetoend(NULL, NULL); } } break; case ACTION_MEASURE_REMOVE: { //create empty measure in the chunk->position.staff at measure number chunk->position->object insertmeasureafter (NULL, NULL); cache_measure (Denemo.project->movement->currentmeasure);//rather than cache_staff (Denemo.project->movement->currentstaff); //rather than cach_all (); chunk->action = ACTION_MEASURE_CREATE; chunk->position.measure++; if (!gui->movement->currentmeasure) { g_warning ("position after undo insert Bug in select.c"); position_for_chunk (gui, chunk); //???? //movetoend(NULL, NULL); } } break; case ACTION_MEASURE_DELETE: { //insert the chunk object (a DenemoMeasure) at chunk->position.staff GList *curstaff = g_list_nth (gui->movement->thescore, chunk->position.staff -1); //g_print ("Selecting staff %d\n", chunk->position.staff -1); ((DenemoStaff *) curstaff->data)->themeasures = g_list_insert (staff_first_measure_node (curstaff), chunk->object, chunk->position.measure - 1); ((DenemoStaff *) curstaff->data)->nummeasures++; //find_xes_in_measure (Denemo.project->movement, chunk->position.measure); cache_staff (curstaff); staff_fix_note_heights (curstaff->data); chunk->action = ACTION_MEASURE_INSERT; chunk->object = NULL; if (g_list_length ( ((DenemoStaff *) curstaff->data)->themeasures) > g_list_length (Denemo.project->movement->measurewidths)) Denemo.project->movement->measurewidths = g_list_append (Denemo.project->movement->measurewidths, GINT_TO_POINTER (Denemo.project->movement->measurewidth)); position_for_chunk (gui, chunk); XesNeedRecalculating = TRUE; //setcurrents (Denemo.project->movement); } break; case ACTION_MEASURE_INSERT: { chunk->object = clone_measure (gui->movement->currentmeasure->data); dnm_deletemeasure (gui->movement); chunk->action = ACTION_MEASURE_DELETE; } break; case ACTION_STAGE_START: gui->undo_level++; *pchunk = &ActionStageEnd; break; case ACTION_STAGE_END: gui->undo_level--; *pchunk = &ActionStageStart; setcurrents (Denemo.project->movement); break; case ACTION_SCRIPT_ERROR: //chunk = &ActionScriptError; gui->undo_level = 0; break; case ACTION_INSERT: { chunk->object = dnm_clone_object (gui->movement->currentobject->data); dnm_deleteobject (gui->movement); chunk->action = ACTION_DELETE; } break; case ACTION_DELETE: { object_insert (gui, chunk->object);cache_all (); chunk->action = ACTION_INSERT; chunk->object = NULL; } break; case ACTION_CHANGE: { //FIXME guard against a corrupt undo queue here by checking if(gui->movement->currentobject) { DenemoObject *temp = gui->movement->currentobject->data; gui->movement->currentobject->data = chunk->object; chunk->object = temp;cache_all (); } break; case ACTION_SNAPSHOT: { DenemoMovement *si = (DenemoMovement *) chunk->object; gint initial_guard = gui->movement->undo_guard; gint initial_changecount = gui->movement->changecount; gboolean initial_redo_invalid = gui->movement->redo_invalid; gpointer initial_smf = gui->movement->smf; // replace gui->movement in gui->movements with si GList *find = g_list_find (gui->movements, gui->movement); if (find) { find->data = si; GList *g, *gorig = NULL, *curstaff; for (curstaff = gui->movement->thescore; curstaff; curstaff = curstaff->next) { DenemoStaff *thestaff = curstaff->data; gorig = g = thestaff->verse_views; thestaff->verse_views = NULL; for (; g; g = g->next) { gchar *text = get_text_from_view (g->data); gtk_widget_destroy (gtk_widget_get_parent(g->data)); thestaff->verse_views = g_list_append (thestaff->verse_views, text); if (thestaff->current_verse_view == g) thestaff->current_verse_view = g_list_last (thestaff->verse_views); } { GList *direc; for (direc = thestaff->staff_directives; direc; direc = direc->next) { DenemoDirective *directive = direc->data; if (directive->widget) { gtk_widget_destroy (directive->widget); directive->widget = NULL; } //widget_for_staff_directive(directive); } } { GList *direc; for (direc = thestaff->voice_directives; direc; direc = direc->next) { DenemoDirective *directive = direc->data; if (directive->widget) { gtk_widget_destroy (directive->widget); directive->widget = NULL; } //widget_for_voice_directive(directive); } } } { GList *direc; for (direc = gui->movement->movementcontrol.directives; direc; direc = direc->next) { DenemoDirective *directive = direc->data; if(directive->widget) gtk_widget_destroy (directive->widget); directive->widget = NULL; } } { GList *direc; for (direc = gui->movement->header.directives; direc; direc = direc->next) { DenemoDirective *directive = direc->data; if(directive->widget) gtk_widget_destroy (directive->widget); directive->widget = NULL; } } { GList *direc; for (direc = gui->movement->layout.directives; direc; direc = direc->next) { DenemoDirective *directive = direc->data; if(directive->widget) gtk_widget_destroy (directive->widget); directive->widget = NULL; } } g_list_free (gorig); chunk->object = (DenemoObject *) gui->movement; //FIXME fix up other values in stored object si?????? voice/staff directive widgets gui->movement = si; for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) { DenemoStaff *thestaff = curstaff->data; gorig = g = thestaff->verse_views; gint curversenum = g_list_position (g, thestaff->current_verse_view); thestaff->verse_views = NULL; for (; g; g = g->next) { add_verse_to_staff (si, thestaff); gtk_text_buffer_set_text (gtk_text_view_get_buffer ((GtkTextView *) thestaff->current_verse_view->data), g->data, -1); gtk_widget_show (thestaff->current_verse_view->data); g_signal_connect (G_OBJECT (gtk_text_view_get_buffer (thestaff->current_verse_view->data)), "changed", G_CALLBACK (lyric_changed_cb), NULL); } thestaff->current_verse_view = g_list_nth (thestaff->verse_views, curversenum); { GList *direc; for (direc = thestaff->staff_directives; direc; direc = direc->next) { DenemoDirective *directive = direc->data; directive->widget = NULL; widget_for_staff_directive (directive, thestaff->staffmenu); } } { GList *direc; for (direc = thestaff->voice_directives; direc; direc = direc->next) { DenemoDirective *directive = direc->data; directive->widget = NULL; widget_for_voice_directive (directive, thestaff->voicemenu); } } g_list_free (gorig); } { GList *direc; for (direc = gui->movement->movementcontrol.directives; direc; direc = direc->next) { DenemoDirective *directive = direc->data; directive->widget = NULL; widget_for_movementcontrol_directive (directive); } } { GList *direc; for (direc = gui->movement->header.directives; direc; direc = direc->next) { DenemoDirective *directive = direc->data; directive->widget = NULL; widget_for_header_directive (directive); } } { GList *direc; for (direc = gui->movement->layout.directives; direc; direc = direc->next) { DenemoDirective *directive = direc->data; directive->widget = NULL; widget_for_layout_directive (directive); } } cache_all (); gui->movement->smf = initial_smf; gui->movement->smfsync = -1; //force recalculation of midi gui->movement->redo_invalid = initial_redo_invalid; gui->movement->undo_guard = initial_guard; //we keep all the guards we had on entry which will be removed when gui->movement->changecount = initial_changecount; position_for_chunk (gui, chunk);// !!!!! this doesn't call goto_movement_staff_obj //FIXME check return val setcurrents (Denemo.project->movement); if (!gui->movement->currentmeasure) { g_warning ( "positioning after snapshot Bug in select.c movem %d, staff %d, measure %d, obj = %d, appending %d, offend %d, leftmeas %d\n", chunk->position.movement, chunk->position.staff, chunk->position.measure, chunk->position.object,/**< 0 means no object */ chunk->position.appending,/**< if cursor is in appending position */ chunk->position.offend,/**< cursor is shown red in this case, obscure connection with appending */ chunk->position.leftmeasurenum /**< start at 1 */); movetoend (NULL, NULL); } //without this currentstaffnum is set wrongly, and moveviewport causes a crash. gui->movement->currentstaffnum = 1 + g_list_position (gui->movement->thescore, gui->movement->currentstaff); XesNeedRecalculating = TRUE; signal_structural_change (gui); } else { g_critical ("Movement does not exist in list of movements"); } } break; case ACTION_NOOP: break; default: g_warning ("Unexpected undo case "); } } static void position_warning (DenemoUndoData * chunk) { g_warning ("Could not find position for undotype %d movement %d staff %d measure %d object %d appending %d offend %d", chunk->action, chunk->position.movement, chunk->position.staff, chunk->position.measure, chunk->position.object, chunk->position.appending, chunk->position.offend); print_queue ("The undo queue was:", Denemo.project->movement->undodata); print_queue ("The redo queue was:", Denemo.project->movement->redodata); } static void warn_no_more_undo (DenemoProject * gui) { g_warning ("No more undo information at level %d guard %d ... resetting", gui->undo_level, gui->movement->undo_guard); gui->undo_level = 0; gui->movement->undo_guard = Denemo.prefs.disable_undo; } static void free_queue (GQueue * queue) { DenemoUndoData *chunk; //g_debug("before redo queue %p is %d empty\n", queue, g_queue_is_empty(queue)); while ((chunk = (DenemoUndoData *) g_queue_pop_head (queue))) free_chunk (chunk); //g_debug("after redo queue %p is %d empty\n", queue, g_queue_is_empty(queue)); } /** * undo * Undoes an insert, delete change of a DenemoObject, transferring the undo object to the redo queue and switching it between delete/insert * Undoes other changes to movement by returning to a snapshot. * * PARAM gui the score (why??? this is per movement undo FIXME) */ static void undo (DenemoProject * gui) { DenemoUndoData *chunk = (DenemoUndoData *) g_queue_pop_head (gui->movement->undodata); if (chunk) { gui->movement->undo_guard++; //g_debug("undo %d\n", chunk->action); if (position_for_chunk (gui, chunk)) { action_chunk (gui, &chunk); } else { position_warning (chunk); free_queue (gui->movement->redodata); free_queue (gui->movement->undodata); warn_no_more_undo (gui); //returns guard to user preference and sets level 0 return; } //g_debug("actioned undo now pushing %d\n", chunk->action); update_redo_info (gui->movement, chunk); gui->movement->undo_guard--; //g_debug("***undo guard after undo %d\n", gui->movement->undo_guard); if (gui->undo_level > 0) undo (gui); score_status (gui, TRUE); if (gui->movement->currentmeasurenum > g_list_length (gui->movement->measurewidths)) { g_warning ("Undo failed to set current measurenum %d out of %d", gui->movement->currentmeasurenum, g_list_length (gui->movement->measurewidths)); gui->movement->currentmeasurenum = g_list_length (gui->movement->measurewidths); } //print_queue("Undo, queue: ", gui->movement->undodata); } else warn_no_more_undo (gui); } /** * redo * Takes objects from the redo queue and actions them, staged by ACTION_STAGE_START/END * Once actioned they are transferred back to the undo queue, with inverse transformation * * Input * scoreinfo - score data */ void redo (DenemoProject * gui) { DenemoUndoData *chunk = (DenemoUndoData *) g_queue_pop_head (gui->movement->redodata); if (chunk) { //g_debug("Before %s and %d\n", gui->movement->currentobject?"Obj":"noObj", gui->movement->cursor_x); gui->movement->undo_guard++; if (position_for_chunk (gui, chunk)) { action_chunk (gui, &chunk); } else { position_warning (chunk); } update_undo_info (gui->movement, chunk); gui->movement->undo_guard--; //g_debug("After %s and %d\n", gui->movement->currentobject?"Obj":"noObj!!", gui->movement->cursor_x); if (gui->undo_level > 0) redo (gui); score_status (gui, TRUE); } else warn_no_more_undo (gui); cache_all (); } /** * update_undo_info * * Updates the undo list with current operation. * Is passed score structure and undo_data structure * */ void update_undo_info (DenemoMovement * si, DenemoUndoData * undo) { //g_print ("Adding: Action %d at pos %d appending %d\n", undo->action, undo->position.object, undo->position.appending); // if (g_queue_get_length (si->undodata) == MAX_UNDOS) // { // tmp = g_queue_pop_tail (si->undodata);//FIXME freeing undo info, especially the object // g_warning("Lost undo of %p %p", tmp, tmp->object); // } g_queue_push_head (si->undodata, undo); si->redo_invalid = TRUE; // print_queue("\nUpdate Undo, queue:", si->undodata); } /** * update_redo_info * * Updates the redo list with last undo operation. * Is passed score structure and redo_data structure * @param si pointer to the DenemoMovement structure * @param redo redo data structure to prepend to the queue g */ void update_redo_info (DenemoMovement * si, DenemoUndoData * redo) { //print_queue("Update redo ******************\nUndo queue:\n", si->undodata); //print_queue("Update redo ******************\nredo queue:\n", si->redodata); if (si->redo_invalid) { free_queue (si->redodata); si->redo_invalid = FALSE; //g_debug("queue = %p\n", si->redodata); } g_queue_push_head (si->redodata, redo); } denemo-2.2.0/src/command/PaxHeaders.19168/lilydirectives.h0000644000000000000000000000013213135434036020142 xustar0030 mtime=1500919838.339981805 30 atime=1500919918.173315139 30 ctime=1500919914.123315139 denemo-2.2.0/src/command/lilydirectives.h0000644000175000017500000001404613135434036022020 0ustar00jjbenhamjjbenham00000000000000/* lilydirectives.h * * * (c) 2000-2005 Adam Tee * */ #ifndef LILYDIRECTIVE_H #define LILYDIRECTIVE_H #include DenemoDirective *get_note_directive_number (gint num); gboolean unpopulate_menu (GtkWidget * menu); gchar *get_scoretitle (void); void widget_for_directive (DenemoDirective * directive, void fn ()); void widget_for_staff_directive (DenemoDirective * directive, GtkMenu * menu); void widget_for_voice_directive (DenemoDirective * directive, GtkMenu * menu); void widget_for_movementcontrol_directive (DenemoDirective * directive); void widget_for_header_directive (DenemoDirective * directive); void widget_for_layout_directive (DenemoDirective * directive); gboolean text_edit_chord_directive (gchar * tag); gboolean text_edit_note_directive (gchar * tag); gboolean text_edit_clef_directive (gchar * tag); gboolean text_edit_timesig_directive (gchar * tag); gboolean text_edit_tuplet_directive (gchar * tag); gboolean text_edit_stemdirective_directive (gchar * tag); gboolean text_edit_keysig_directive (gchar * tag); gboolean text_edit_standalone_directive (gchar * tag); gboolean text_edit_score_directive (gchar * tag);// and all the others ... paper ...etc void set_action_script_for_tag (gchar * tag, gchar * script); gchar *get_action_script (gchar * name); void edit_object_directive (DenemoAction * action, DenemoScriptParam * param); void edit_clef_directive (DenemoAction * action, DenemoScriptParam * param); void edit_keysig_directive (DenemoAction * action, DenemoScriptParam * param); void edit_timesig_directive (DenemoAction * action, DenemoScriptParam * param); void edit_staff_directive (DenemoAction * action, DenemoScriptParam * param); void edit_voice_directive (DenemoAction * action, DenemoScriptParam * param); void edit_score_directive (DenemoAction * action, DenemoScriptParam * param); void edit_movement_directive (DenemoAction * action, DenemoScriptParam * param); void edit_object_type (DenemoAction * action, DenemoScriptParam * param); //FIXME move to ??? gboolean low_level_directive_edit (DenemoDirective *directive); void standalone_directive (DenemoAction * action, DenemoScriptParam * param); void put_standalone_directive (gchar *tag, gint pixelwidth); void delete_chord_or_note_directive (DenemoAction * action, DenemoScriptParam * param); gchar *get_editscript_filename (gchar * tag); DenemoDirective *get_movementcontrol_directive (gchar * tag); DenemoDirective *get_score_directive (gchar * tag); DenemoDirective *find_directive (GList * directives, gchar * tag); gchar *get_nth_strict_note_tag (gint index); const gchar *strict_note_directive_get_tag (gchar *tag); void delete_directives (GList ** pdirectives); gboolean delete_chord_directive (gchar * tag); gboolean delete_note_directive (gchar * tag); gboolean delete_staff_directive (gchar * tag); gboolean delete_voice_directive (gchar * tag); gboolean choose_tag_at_cursor (gchar **ptag); gchar *get_script_for_directive (DenemoDirective* directive, gchar * what); #define DECL_PUT_FIELD(what, field) gboolean what##_directive_put_##field(gchar *tag, gchar *value); #define DECL_GET_FIELD(what, field) gchar *what##_directive_get_##field(gchar *tag); #define DECL_GET_INT(what, field) gint what##_directive_get_##field(gchar *tag); #define DECL_PUT_INT(what, field) gboolean what##_directive_put_##field(gchar *tag, gint value); #define DECL_GET_TAG_FUNC(what) gchar * what##_directive_get_tag(gchar * tag); #define DECL_TEXT_EDIT_DIRECTIVE(what) gboolean text_edit_##what##_directive(gchar * tag); #define DECL_PUT_GRAPHIC(what) gboolean what##_directive_put_graphic(gchar *tag, gchar *value); DECL_GET_TAG_FUNC (staff) DECL_GET_TAG_FUNC (movementcontrol) DECL_TEXT_EDIT_DIRECTIVE (header) DECL_TEXT_EDIT_DIRECTIVE (layout) DECL_TEXT_EDIT_DIRECTIVE (movementcontrol) DECL_TEXT_EDIT_DIRECTIVE (paper) DECL_TEXT_EDIT_DIRECTIVE (scoreheader) DECL_TEXT_EDIT_DIRECTIVE (staff) DECL_TEXT_EDIT_DIRECTIVE (voice) DECL_PUT_GRAPHIC (chord) DECL_PUT_GRAPHIC (note) DECL_PUT_GRAPHIC (standalone) DECL_GET_FIELD (note, prefix) DECL_GET_FIELD (note, postfix) DECL_GET_FIELD (note, display) DECL_GET_FIELD (note, grob) DECL_PUT_FIELD (note, prefix) DECL_PUT_FIELD (note, postfix) DECL_PUT_FIELD (note, display) DECL_PUT_FIELD (note, grob) DECL_GET_FIELD (chord, prefix) DECL_GET_FIELD (chord, postfix) DECL_GET_FIELD (chord, display) DECL_GET_FIELD (chord, grob) DECL_PUT_FIELD (chord, prefix) DECL_PUT_FIELD (chord, postfix) DECL_PUT_FIELD (chord, display) DECL_PUT_FIELD (chord, grob) DECL_GET_FIELD (standalone, prefix) DECL_GET_FIELD (standalone, postfix) DECL_GET_FIELD (standalone, display) DECL_PUT_FIELD (standalone, prefix) DECL_PUT_FIELD (standalone, postfix) DECL_PUT_FIELD (standalone, display) DECL_PUT_FIELD (standalone, grob) DECL_GET_INT (note, minpixels) DECL_GET_INT (chord, minpixels) DECL_GET_INT (standalone, minpixels) // block to copy DECL_PUT_GRAPHIC (clef) DECL_GET_FIELD (clef, prefix) DECL_GET_FIELD (clef, postfix) DECL_GET_FIELD (clef, display) DECL_PUT_FIELD (clef, prefix) DECL_PUT_FIELD (clef, postfix) DECL_PUT_FIELD (clef, display) // end of block to copy DECL_PUT_FIELD (header, postfix) DECL_PUT_FIELD (header, display) DECL_PUT_FIELD (paper, postfix) DECL_PUT_FIELD (scoreheader, postfix) DECL_PUT_GRAPHIC (score) DECL_PUT_GRAPHIC (staff) DECL_PUT_GRAPHIC (voice) DECL_PUT_GRAPHIC (scoreheader) DECL_PUT_GRAPHIC (header) DECL_PUT_GRAPHIC (paper) DECL_PUT_GRAPHIC (layout) DECL_PUT_GRAPHIC (movementcontrol) //FIXME x,y,tx,ty,gx,gy DECL_PUT_FIELD(staff, prefix) DECL_PUT_INT(staff, override) DECL_PUT_FIELD(staff, postfix) DECL_PUT_GRAPHIC(timesig) DECL_PUT_GRAPHIC(tuplet) DECL_PUT_GRAPHIC(stemdirective) DECL_PUT_GRAPHIC(keysig) #undef DECL_PUT_FIELD #undef DECL_GET_FIELD #undef DECL_PUT_INT #undef DECL_GET_INT void widget_for_directive_menu (DenemoDirective * directive, void fn (), GtkMenu * menu); DenemoDirective *get_next_directive_at_cursor (void); void edit_system_directive (void); DenemoDirective *get_note_directive (gchar * tag); gboolean wrong_layout (DenemoDirective *d, guint id);//TRUE if layout id is not allowed for directive d #endif denemo-2.2.0/src/command/PaxHeaders.19168/contexts.c0000644000000000000000000000013213135434036016751 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.183315139 30 ctime=1500919914.103315139 denemo-2.2.0/src/command/contexts.c0000644000175000017500000001510113135434036020620 0ustar00jjbenhamjjbenham00000000000000/* contexts.cpp * Context finders: functions that find the current clef, key, and time * signature contexts for the measures being displayed * * These functions are also invoked when a staff is created * * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller, Adam Tee */ #include "command/contexts.h" #include "display/drawingprims.h" #include "command/object.h" #include "command/staff.h" #include "command/measure.h" /** * This function finds the first DenemoObject of type thetype *before* measure * curmeasure. It returns NULL if it was unable to find such a DenemoObject * * @param curmeasure the current measure to search * @param thetype type of DenemoObject to find * @return the first DenemoObject of type the type */ static DenemoObject * find_measure_context (measurenode * curmeasure, DenemoObjType thetype) { objnode *curobj; if (curmeasure && curmeasure->prev) curmeasure = curmeasure->prev; else return NULL; curobj = measure_last_obj_node (curmeasure); while (1) { while (!curobj) { /* Cycle back to preceding measure */ if (!curmeasure->prev) return NULL; /* That is, we've fallen off the beginnig */ curmeasure = curmeasure->prev; curobj = measure_last_obj_node (curmeasure); } if (((DenemoObject *) curobj->data)->type == thetype) return (DenemoObject *) curobj->data; else curobj = curobj->prev; } } /** * This function finds the first DenemoObject of type thetype before si->currentobject * It returns NULL if it was unable to find such a DenemoObject * @param si the DenemoMovement with si->currentobject and si->currentmeasure set * @param thetype type of DenemoObject to find * @return the first DenemoObject of type thetype */ static DenemoObject * find_context_of_object (DenemoMovement * si, DenemoObjType thetype) { objnode *curobj = si->currentobject; measurenode *curmeasure = si->currentmeasure; if (curmeasure == NULL) return NULL; if (curobj == NULL) while (curmeasure->prev) { curmeasure = curmeasure->prev; curobj = measure_last_obj_node (curmeasure); if (curobj) break; } if (curobj == NULL || curmeasure == NULL) return NULL; while (curobj) { if (((DenemoObject *) curobj->data)->type == thetype) return (DenemoObject *) curobj->data; else curobj = curobj->prev; if (curobj == NULL) { /* go back to preceding measure */ while (curmeasure->prev) { curmeasure = curmeasure->prev; curobj = measure_last_obj_node (curmeasure); if (curobj) break; } } } return NULL; } DenemoObject * get_clef_before_object (objnode * obj) { DenemoObject *ret; objnode *curobj = Denemo.project->movement->currentobject; Denemo.project->movement->currentobject = obj; ret = find_context_of_object (Denemo.project->movement, CLEF); Denemo.project->movement->currentobject = curobj; return ret; } /* find the clef in which the currentobject lies */ gint find_prevailing_clef (DenemoMovement * si) { return ((clef*)get_prevailing_context (CLEF))->type; /* DenemoStaff *curstaff = ((DenemoStaff *) si->currentstaff->data); DenemoObject *obj = find_context_of_object (si, CLEF); //g_debug("prevailing clef %d\n", obj? ((clef *) obj->object)->type:curstaff->clef.type); return obj ? ((clef *) obj->object)->type : curstaff->clef.type; * */ } /* returns a pointer to a CLEF TIMESIG or KEYSIG structure which holds the information on the prevailing context for the current object */ gpointer get_prevailing_context (DenemoObjType type) { DenemoStaff *curstaff = ((DenemoStaff *) Denemo.project->movement->currentstaff->data); gpointer *obj; switch (type) { case CLEF: obj = (gpointer)(Denemo.project->movement->currentobject?((DenemoObject*)Denemo.project->movement->currentobject->data)->clef:((DenemoMeasure*)Denemo.project->movement->currentmeasure->data)->clef); break; case KEYSIG: obj = (gpointer)(Denemo.project->movement->currentobject?((DenemoObject*)Denemo.project->movement->currentobject->data)->keysig:((DenemoMeasure*)Denemo.project->movement->currentmeasure->data)->keysig); break; case TIMESIG: obj = (gpointer)((DenemoMeasure*)Denemo.project->movement->currentmeasure->data)->timesig; break; default: g_critical ("Wrong type in call to get_prevailing_context"); obj = NULL; break; } return obj; } /** * Finds the first occurrences of the clef, keysig and timesig of the * current staff inserting them into the passed CURSTAFFSTRUCT * * @param curstaffstruct the current staff * @param si the scoreinfo structure * @return none */ void find_leftmost_staffcontext (DenemoStaff * curstaffstruct, DenemoMovement * si) { measurenode *leftmeasure = g_list_nth (curstaffstruct->themeasures, si->leftmeasurenum - 1); DenemoObject *obj; if ((obj = find_measure_context (leftmeasure, CLEF))) curstaffstruct->leftmost_clefcontext = ((clef *) obj->object); else curstaffstruct->leftmost_clefcontext = &curstaffstruct->clef; if ((obj = find_measure_context (leftmeasure, KEYSIG))) curstaffstruct->leftmost_keysig = (keysig *) obj->object; else curstaffstruct->leftmost_keysig = &curstaffstruct->keysig; // initkeyaccs (curstaffstruct->leftmost_keysig->accs, // curstaffstruct->leftmost_keysig->number); si->maxkeywidth = MAX (si->maxkeywidth, draw_key (NULL, 0, 0, curstaffstruct->leftmost_keysig->number, 0, 0, FALSE, curstaffstruct->leftmost_keysig)); if ((obj = find_measure_context (leftmeasure, TIMESIG))) { curstaffstruct->leftmost_timesig = (timesig *) obj->object; } else { curstaffstruct->leftmost_timesig = &curstaffstruct->timesig; } if ((obj = find_measure_context (leftmeasure, STEMDIRECTIVE))) curstaffstruct->leftmost_stem_directive = ((stemdirective *) obj->object)->type; else curstaffstruct->leftmost_stem_directive = DENEMO_STEMBOTH; } /** * Finds the first occurrences of the clef, keysig and timesig of the * across the entir score * @param si the scoreinfo structure * @return none */ void find_leftmost_allcontexts (DenemoMovement * si) { staffnode *curstaff = si->thescore; si->maxkeywidth = G_MININT; for (; curstaff; curstaff = curstaff->next) { find_leftmost_staffcontext ((DenemoStaff *) curstaff->data, si); } } denemo-2.2.0/src/command/PaxHeaders.19168/timesig.c0000644000000000000000000000013213135434036016543 xustar0030 mtime=1500919838.343315139 30 atime=1500919918.199981805 30 ctime=1500919914.153315138 denemo-2.2.0/src/command/timesig.c0000644000175000017500000001410713135434036020417 0ustar00jjbenhamjjbenham00000000000000#include "timesig.h" #include "core/utils.h" #include "command/commandfuncs.h" /** * Create a new timesignature object * @param time1 nominator of time signature * @param time2 denominator of the time signature * @return the timesignature */ DenemoObject * dnm_newtimesigobj (gint time1, gint time2) { DenemoObject *ret; timesig *newtimesig = (timesig *) g_malloc0 (sizeof (timesig)); ret = (DenemoObject *) g_malloc0 (sizeof (DenemoObject)); ret->type = TIMESIG; newtimesig->time1 = time1; newtimesig->time2 = time2; ret->object = newtimesig; set_basic_numticks (ret); setpixelmin (ret); return ret; } /** * Wrapper function to create new 4/4 time sig and insert into the score */ void newtimesig44 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, dnm_newtimesigobj (4, 4)); } /** * Wrapper function to create new 2/4 time sig and insert into the score */ void newtimesig24 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, dnm_newtimesigobj (2, 4)); } /** * Wrapper function to create new 3/4 time sig and insert into the score */ void newtimesig34 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, dnm_newtimesigobj (3, 4)); } /** * Wrapper function to create new 6/4 time sig and insert into the score */ void newtimesig64 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, dnm_newtimesigobj (6, 4)); } /** * Wrapper function to create new 5/4 time sig and insert into the score */ void newtimesig54 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, dnm_newtimesigobj (5, 4)); } /** * Wrapper function to create new 3/8 time sig and insert into the score */ void newtimesig38 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, dnm_newtimesigobj (3, 8)); } /** * Wrapper function to create new 6/8 time sig and insert into the score */ void newtimesig68 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, dnm_newtimesigobj (6, 8)); } /** * Wrapper function to create new 9/8 time sig and insert into the score */ void newtimesig98 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, dnm_newtimesigobj (9, 8)); } /** * Wrapper function to create new 12/8 time sig and insert into the score */ void newtimesig128 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, dnm_newtimesigobj (12, 8)); } /** * Wrapper function to create new 2/2 time sig and insert into the score */ void newtimesig22 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, dnm_newtimesigobj (2, 2)); } /** * Wrapper function to create new 3/2 time sig and insert into the score */ void newtimesig32 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, dnm_newtimesigobj (3, 2)); } /** * Wrapper function to create new 4/2 time sig and insert into the score */ void newtimesig42 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, dnm_newtimesigobj (4, 2)); } void settimesig22 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialtimesig (Denemo.project->movement, curstaff, 2, 2, TRUE); } void settimesig42 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialtimesig (Denemo.project->movement, curstaff, 4, 2, TRUE); } void settimesig32 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialtimesig (Denemo.project->movement, curstaff, 3, 2, TRUE); } void settimesig44 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialtimesig (Denemo.project->movement, curstaff, 4, 4, TRUE); } void settimesig54 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialtimesig (Denemo.project->movement, curstaff, 5, 4, TRUE); } void settimesig24 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialtimesig (Denemo.project->movement, curstaff, 2, 4, TRUE); } void settimesig34 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialtimesig (Denemo.project->movement, curstaff, 3, 4, TRUE); } void settimesig68 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialtimesig (Denemo.project->movement, curstaff, 6, 8, TRUE); } void settimesig128 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialtimesig (Denemo.project->movement, curstaff, 12, 8, TRUE); } void settimesig38 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialtimesig (Denemo.project->movement, curstaff, 3, 8, TRUE); } void settimesig98 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialtimesig (Denemo.project->movement, curstaff, 9, 8, TRUE); } void settimesig64 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialtimesig (Denemo.project->movement, curstaff, 6, 4, TRUE); } denemo-2.2.0/src/command/PaxHeaders.19168/lyric.h0000644000000000000000000000013213135434036016231 xustar0030 mtime=1500919838.339981805 30 atime=1500919918.199981805 30 ctime=1500919914.123315139 denemo-2.2.0/src/command/lyric.h0000644000175000017500000000247613135434036020113 0ustar00jjbenhamjjbenham00000000000000/* lyric.h * * (c) 2002-2005 Adam Tee, 2009 Richard Shann */ #ifndef LYRIC_H #define LYRIC_H #include void add_verse (DenemoAction * action, DenemoScriptParam * param); void delete_verse (DenemoAction * action, DenemoScriptParam * param); void reset_lyrics (DenemoStaff * staff, gint count); gchar *get_text_from_view (GtkWidget * textview); guint add_verse_to_staff (DenemoMovement * si, DenemoStaff * staff); gchar *next_syllable (void); void install_lyrics_preview (DenemoMovement * si, GtkWidget * top_vbox); void hide_lyrics (void); void show_lyrics (void); gboolean lyric_changed_cb (GtkTextBuffer * buffer); void select_lyrics (void); gchar *get_lyrics_for_current_verse (DenemoStaff * thestaff); gboolean put_lyrics_for_current_verse (DenemoStaff * staff, gchar * text); gchar *get_lyrics_for_verse_num (gint number); gboolean append_lyrics_for_current_verse (DenemoStaff * thestaff, gchar * text); gboolean synchronize_lyric_cursor (gint offset); GtkWidget *verse_get_current_view (DenemoStaff * staff); gboolean verse_set_current (DenemoStaff * staff, gint id); gint verse_get_current (DenemoStaff * staff); void verse_set_current_text (DenemoStaff * staff, gchar * text); gchar *verse_get_current_text (DenemoStaff * staff); gboolean insert_text_in_verse (gchar * text); gint syllable_count (void); #endif denemo-2.2.0/src/command/PaxHeaders.19168/changenotehead.c0000644000000000000000000000013213135434036020037 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.206648472 30 ctime=1500919914.093315138 denemo-2.2.0/src/command/changenotehead.c0000644000175000017500000001021213135434036021704 0ustar00jjbenhamjjbenham00000000000000/* changenotehead.c * Changes the type of notehead if required * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) Adam Tee 2000-2005 */ #include #include #include #include "display/calculatepositions.h" #include "command/contexts.h" #include "ui/dialogs.h" #include "display/draw.h" #include "command/object.h" #include "command/staff.h" #include "core/utils.h" #include "command/commandfuncs.h" /** * Array of different Notehead types */ gchar *notehead[4] = { N_("Normal"), N_("Cross"), N_("Diamond"), N_("Harmonic") }; /** * Set the correct enum value for the selected * notehead */ enum headtype texttohead (gchar * text) { if (g_strcasecmp (text, _("Normal")) == 0) return DENEMO_NORMAL_NOTEHEAD; else if (g_strcasecmp (text, _("Cross")) == 0) return DENEMO_CROSS_NOTEHEAD; else if (g_strcasecmp (text, _("Diamond")) == 0) return DENEMO_DIAMOND_NOTEHEAD; else if (g_strcasecmp (text, _("Harmonic")) == 0) return DENEMO_HARMONIC_NOTEHEAD; else return DENEMO_NORMAL_NOTEHEAD; } /** * Set current notes notehead to the selected * value */ void insertnotehead (DenemoMovement * si, gchar * notehead_string) { DenemoObject *obj = (DenemoObject *) (si->currentobject ? si->currentobject->data : NULL); if (obj != NULL && obj->type == CHORD) { /* Lilypond's behavior is a bit anomalous here. It doesn't seem * to like giving chords non-standard noteheads. This is * just a default behavior for the time being. */ ((note *) ((chord *) obj->object)->notes->data)->noteheadtype = texttohead (notehead_string); } } /** * Notehead selection dialog * Displays the notehead type in a Combobox * Callback - insert_notehead */ void set_notehead (GtkAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; GtkWidget *dialog; GtkWidget *label; GtkWidget *combo; GtkWidget *content_area; static GList *list = NULL; //NOTE required for gtk<2.24 guint i; if (!action) { if (((DenemoScriptParam *) param)->string && ((DenemoScriptParam *) param)->string->len) { insertnotehead (gui->movement, ((DenemoScriptParam *) param)->string->str); ((DenemoScriptParam *) param)->status = TRUE; return; } else { if (param) ((DenemoScriptParam *) param)->status = FALSE; return; } } if (!list) { for (i = 0; i < 4; i++) { list = g_list_append (list, _(notehead[i])); } } dialog = gtk_dialog_new_with_buttons (_("Change Notehead"), GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); label = gtk_label_new (_("Select Notehead Type")); gtk_container_add (GTK_CONTAINER (content_area), label); #if GTK_MAJOR_VERSION==3 combo = gtk_combo_box_text_new (); for (i = 0; i < G_N_ELEMENTS (notehead); i++) gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), notehead[i]); gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0); #else combo = gtk_combo_new (); gtk_combo_set_popdown_strings (GTK_COMBO (combo), list); gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (combo)->entry), _(notehead[0])); gtk_combo_box_set_active (GTK_COMBO (combo), 0); #endif gtk_container_add (GTK_CONTAINER (content_area), combo); gtk_widget_grab_focus (combo); gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { #if GTK_MAJOR_VERSION==3 gint num = gtk_combo_box_get_active (GTK_COMBO_BOX (combo)); insertnotehead (gui->movement, notehead[num]); #else gchar *noteheadstring = (gchar *) gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (combo)->entry)); insertnotehead (gui->movement, noteheadstring); #endif } gtk_widget_destroy (dialog); displayhelper (gui); } denemo-2.2.0/src/command/PaxHeaders.19168/processstaffname.c0000644000000000000000000000013213135434036020445 xustar0030 mtime=1500919838.339981805 30 atime=1500919918.206648472 30 ctime=1500919914.129981805 denemo-2.2.0/src/command/processstaffname.c0000644000175000017500000001075713135434036022330 0ustar00jjbenhamjjbenham00000000000000/* processstaffname.cpp * for Denemo, the GNU graphical frontend to GNU Lilypond * * (c) 2000-2005 Matthew Hiller */ /* This function accepts a Denemo staff's canonicalized name * denemo_name, and sets lily_name to be what the corresponding voice * will be called in the mudela representation. Both GString *s should * be initialized before this function is called */ /* e.g., "bass voice"->"BassVoice" */ #include #include #include #define ROWS 4 #define COLS 4 static guint pows[ROWS][COLS] = { {1000, 1000, 1000, 1000}, {900, 500, 400, 100}, {90, 50, 40, 10}, {9, 5, 4, 1} }; static char *roms[ROWS][COLS] = { {"M", "M", "M", "M"}, {"CM", "D", "CD", "C"}, {"XC", "L", "XL", "X"}, {"IX", "V", "IV", "I"} }; static void to_roman (guint decimal, GString * lily_name) { guint power; /* current power of 10 */ guint indx; /* indexes through values to subtract */ for (power = 0; power < ROWS; power++) for (indx = 0; indx < COLS; indx++) while (decimal >= pows[power][indx]) { g_string_append (lily_name, roms[power][indx]); decimal -= pows[power][indx]; } } /* make an acceptable lily name from denemo_name: FIXME - check for anything other than alphaword */ void set_lily_name (GString * denemo_name, GString * lily_name) { guint i; gchar c; gboolean last_char_was_space = TRUE; g_string_assign (lily_name, ""); for (i = 0; i < denemo_name->len; i++) { c = denemo_name->str[i]; if (c == ' ') last_char_was_space = TRUE; else { guint decimal; int numchars; if (c == '0') /* character 0 that is */ g_string_append (lily_name, "O"); /* replace with upper case o */ else if ((sscanf (&denemo_name->str[i], "%u%n", &decimal, &numchars)) == 1) { i += numchars, i--; /* move over digits that have been converted by sscanf */ to_roman (decimal, lily_name); } else { if (last_char_was_space && 'a' <= c && c <= 'z') { /* Make the character uppercase */ c -= ('a' - 'A'); } g_string_append_c (lily_name, c); last_char_was_space = FALSE; } } } } void dnm_set_lily_name (GString * denemo_name, GString * lily_name) { set_lily_name (denemo_name, lily_name); } /* This function accepts a Lilypond voice name lily_name and calculates * from it the canonicalized denemo_name. Both Gstring *s should be * initialized before this function is called */ /* e.g., "BassVoice"->"bass voice" */ void set_denemo_name (GString * lily_name, GString * denemo_name) { guint i; gchar c; g_string_assign (denemo_name, ""); for (i = 0; i < lily_name->len; i++) { c = lily_name->str[i]; if ('A' <= c && c <= 'Z') { /* Need to make the character lowercase and insert a space */ c += ('a' - 'A'); if (i) /* insert a space before it as well */ g_string_append_c (denemo_name, ' '); } g_string_append_c (denemo_name, c); } } /* This function accepts a gchar *proposal as an argument. If * this proposal can be made into a canonical Denemo staff name, * it is stored in denemo_name. If not, denemo_name is left * unchanged. It returns -1 if the name could not be canonicalized. */ gint canonicalize_denemo_name (gchar * proposal, GString * denemo_name) { gchar *accept = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 "; guint i; gchar c; gboolean last_char_was_space = FALSE; if ((proposal==NULL) || (denemo_name == NULL)) { g_critical ("Bad call to canonicalize_denemo_name"); return -1; } //g_strdown (proposal); if (strspn (proposal, accept) == strlen (proposal)) { /* Okay; we have only acceptable characters. Let's boogie */ g_string_assign (denemo_name, proposal); for (i = 0; i < denemo_name->len;) { c = denemo_name->str[i]; if (c == ' ') { if (last_char_was_space) g_string_erase (denemo_name, i, 1); else { last_char_was_space = TRUE; i++; } } else { last_char_was_space = FALSE; i++; } } return 0; } return -1; } denemo-2.2.0/src/command/PaxHeaders.19168/chord.h0000644000000000000000000000013213135434036016206 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.213315139 30 ctime=1500919914.096648472 denemo-2.2.0/src/command/chord.h0000644000175000017500000000251113135434036020056 0ustar00jjbenhamjjbenham00000000000000/* chord.h * * the header files for chord.c, functions which manipulate chords * For denemo, a gtk+ frontend to Lilypond, the GNU music typesetter * * (c) 2000-2005 Matthew Hiller, Adam Tee * */ #include #include #ifndef CHORDOPSH #define CHORDOPSH void newclefify (DenemoObject * thechord); void findreversealigns (DenemoObject * thechord); DenemoObject *newchord (gint baseduration, gint numdots, int tied); objnode *nearestnote (DenemoObject * thechord, gint mid_c_offset); void modify_note (chord * thechord, gint mid_c_offset, gint enshift, gint dclef); note *addtone (DenemoObject * mudelaobj, gint mid_c_offset, gint enshift); void addornament (DenemoObject * obj, Ornament orn); gboolean removetone (DenemoObject * mudelaobj, gint mid_c_offset); void shiftpitch (DenemoObject * mudelaobj, gint mid_c_offset, gint is_sharpening); void changenote (DenemoObject * thechord, gint mid_c_offset, gint new_offset); void changeenshift (DenemoObject * thechord, gint mid_c_offset, gint accidental); void changedur (DenemoObject * thechord, gint baseduration, gint numdots); void changenumdots (DenemoObject * thechord, int number); void freechord (DenemoObject * mudelaobj); DenemoObject *clone_chord (DenemoObject * mudelaobj); DenemoObject *hidechord (DenemoObject * thechord); #endif /*CHORDOPSH */ denemo-2.2.0/src/command/PaxHeaders.19168/scorelayout.h0000644000000000000000000000013213135434036017460 xustar0030 mtime=1500919838.343315139 30 atime=1500919918.213315139 30 ctime=1500919914.143315138 denemo-2.2.0/src/command/scorelayout.h0000644000175000017500000000417413135434036021337 0ustar00jjbenhamjjbenham00000000000000// scorelayout.h // // Copyright 2012 Richard Shann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA 02110-1301, USA. #ifndef scorelayout_H #define scorelayout_H #include void create_default_scoreblock (void); void free_scoreblocks (DenemoProject * gui); DenemoScoreblock *select_layout (gboolean all_movements, gchar * partname, gchar * instrumentation); DenemoScoreblock *get_scoreblock_for_lilypond (gchar * lily); GtkWidget *get_score_layout_notebook (DenemoProject * gui); DenemoScoreblock *create_custom_scoreblock (gchar * layout_name, gboolean force); gboolean delete_custom_scoreblock (gchar * layout_name); DenemoScoreblock *create_custom_lilypond_scoreblock (void); void select_default_scoreblock (void); DenemoScoreblock *selected_scoreblock (void); gboolean current_scoreblock_is_custom (void); guint selected_layout_id (void); DenemoScoreblock *get_next_scoreblock (void); DenemoScoreblock *get_first_scoreblock (void); gboolean iterate_custom_layout (gboolean init); gchar *get_output_uri_from_scoreblock (void); void set_current_scoreblock_uri (gchar * uri); void select_standard_layout (DenemoScoreblock * sb); void select_custom_layout (DenemoScoreblock * sb); gboolean select_custom_layout_for_name (gchar * name); GtkWidget *GetLayoutMenu (void); void refresh_lilypond (DenemoScoreblock * sb); gboolean select_layout_id (gint id); guint get_layout_id_for_name (gchar * name); #endif denemo-2.2.0/src/command/PaxHeaders.19168/measure.h0000644000000000000000000000013213135434036016550 xustar0030 mtime=1500919838.339981805 30 atime=1500919918.219981805 30 ctime=1500919914.126648472 denemo-2.2.0/src/command/measure.h0000644000175000017500000000142413135434036020422 0ustar00jjbenhamjjbenham00000000000000/* measure.h * header file for functions dealing with measures * * for Denemo, a gtk+ frontent to GNU Lilypond * (c) 2000-2005 Matthew Hiller */ #ifndef MEASURE_H #define MEASURE_H #include measurenode *addmeasures (DenemoMovement * si, gint pos, guint nummeasures, gint all); void freeobjlist (gpointer data); measurenode *removemeasures (DenemoMovement * si, guint pos, guint nummeasures, gboolean all); void calculatebeamsandstemdirs (DenemoMeasure *m); void showwhichaccidentals (objnode * theobjs); void forceaccidentals (DenemoObject * theobj); objnode *measure_first_obj_node (measurenode * mnode); objnode *measure_last_obj_node (measurenode * mnode); DenemoMeasure *clone_measure (DenemoMeasure *m); void free_measure (DenemoMeasure *m); #endif denemo-2.2.0/src/command/PaxHeaders.19168/figure.c0000644000000000000000000000013213135434036016363 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.219981805 30 ctime=1500919914.109981805 denemo-2.2.0/src/command/figure.c0000644000175000017500000001712713135434036020244 0ustar00jjbenhamjjbenham00000000000000/* figure.c * * Functions for the manipulations of figured basses * * for Denemo, a gtk+ frontend for GNU Lilypond * (c) 2003-2006 Richard Shann */ #include #include #include #include "command/chord.h" #include "display/calculatepositions.h" #include "command/commandfuncs.h" #include "command/contexts.h" #include "command/figure.h" #include "ui/dialogs.h" #include "display/draw.h" #include "command/object.h" #include "command/staff.h" #include "core/utils.h" struct callbackdata { DenemoProject *gui; gchar *string; }; /** * Function to actually insert a figure to an object * */ static void insertfigure (gboolean filter, gpointer data) { struct callbackdata *cbdata = (struct callbackdata *) data; DenemoProject *gui = cbdata->gui; DenemoMovement *si = gui->movement; gchar filter_sep = filter ? '/' : '|'; gchar filter_spc = filter ? '*' : ' '; if (si->measurewidth == DENEMO_INITIAL_MEASURE_WIDTH) si->measurewidth = DENEMO_INITIAL_MEASURE_WIDTH * 2; if (si->currentobject != NULL) { DenemoObject *curObj = (DenemoObject *) si->currentobject ? (DenemoObject *) si->currentobject->data : NULL; gchar *figure = (cbdata->string); if (strlen (figure) < 1) figure = "_"; /* in case user deleted the figure to yield <> */ /* translate the input somewhat */ GString *f = g_string_new (""); gchar *c = figure; for (c = figure; *c; c++) { if (*c == '+') { if (c == figure || *(c - 1) == ' ' || *(c - 1) == filter_spc || *(c - 1) == '|' || *(c - 1) == filter_sep) g_string_append (f, "_+"); else g_string_append (f, "+"); } else if (*c == '-') { if (c == figure || *(c - 1) == ' ' || *(c - 1) == filter_spc || *(c - 1) == '|' || *(c - 1) == filter_sep) g_string_append (f, "_-"); else g_string_append (f, "-"); } else if (*c == filter_sep) g_string_append (f, "|"); else { if (*c == filter_spc) g_string_append (f, " "); else g_string_append_c (f, *c); } } if (curObj && curObj->type == CHORD) ((chord *) curObj->object)->is_figure = TRUE; if(((chord *) curObj->object)->figure) g_string_free (((chord *) curObj->object)->figure, TRUE); ((chord *) curObj->object)->figure = g_string_new (f->str); g_string_free (f, TRUE); do { if (si->currentobject->next) movecursorright (NULL, NULL); else if (gui->movement->currentmeasure->next) movetomeasureright (NULL, NULL); else break; curObj = si->currentobject ? (DenemoObject *) si->currentobject->data : NULL; } while ((curObj != NULL) && (curObj->type != CHORD)); si->has_figures = (gpointer) TRUE; //&null_info; score_status (gui, TRUE); } // if currentobject not null else { warningdialog (_("No current object to attach a figure to")); } } void delete_figured_bass (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; DenemoStaff *thestaff = (DenemoStaff *) gui->movement->currentstaff->data; if (confirm ("Figured Bass Deletion", "Delete all figured bass markings from this staff?")) { thestaff->hasfigures = FALSE; gui->movement->has_figures = FALSE; signal_structural_change (gui); measurenode *curmeasure; for (curmeasure = thestaff->themeasures; curmeasure; curmeasure = curmeasure->next) { objnode *curobj; for (curobj = ((DenemoMeasure*)curmeasure->data)->objects; curobj; curobj = curobj->next) { DenemoObject *curObj = (DenemoObject *) curobj->data; if (curObj && curObj->type == CHORD) { GString *s = ((chord *) curObj->object)->figure; if (s) g_string_free (s, TRUE); ((chord *) curObj->object)->figure = NULL; } } } } } void hide_figured_bass (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; DenemoStaff *thestaff = (DenemoStaff *) gui->movement->currentstaff->data; if (thestaff->hasfigures) signal_structural_change (gui); thestaff->hasfigures = FALSE; } /* turn on figured bass if any figures are present */ void show_figured_bass (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; DenemoStaff *thestaff = (DenemoStaff *) gui->movement->currentstaff->data; measurenode *curmeasure; if (!thestaff->hasfigures) signal_structural_change (gui); for (curmeasure = thestaff->themeasures; curmeasure; curmeasure = curmeasure->next) { objnode *curobj; for (curobj = ((DenemoMeasure*)curmeasure->data)->objects; curobj; curobj = curobj->next) { DenemoObject *curObj = (DenemoObject *) curobj->data; if (curObj && curObj->type == CHORD) { GString *s = ((chord *) curObj->object)->figure; if (s) thestaff->hasfigures = TRUE; } } } } /** * Creates figured bass entry dialog * */ void figure_insert (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; gchar *string = NULL; gchar *PreValue = NULL; DenemoMovement *si = gui->movement; static struct callbackdata cbdata; DenemoObject *curObj = (DenemoObject *) si->currentobject ? (DenemoObject *) si->currentobject->data : NULL; if (curObj==NULL) return; if (curObj->type != CHORD) return; if (curObj && curObj->type == CHORD && ((chord *) curObj->object)->figure) PreValue = ((GString *) ((chord *) curObj->object)->figure)->str; if (!action && param && param->string) { //Called from scheme, could be "query" or setting the values GString *values = param->string; gchar *str; gint i; if (!strcmp (values->str, "query")) { if (PreValue && *PreValue && strcmp (PreValue, "_")) { //there is a figure, other than the "no figure" sign param->status = TRUE; g_string_assign (param->string, PreValue); } else //the no figure case leave status FALSE and return NULL g_string_assign (param->string, ""); } else //detect the string "figures" followed by a separator character and then the figures for (i = 0; i < values->len; i += strlen (values->str + i) + 1) { if ((str = g_strstr_len (values->str + i, strlen (values->str + i), "figures"))) { string = g_strdup (str + strlen ("figures") + 1); break; } } } else { //interactive string = string_dialog_entry (gui, "Insert/Edit Figure", "Give figures followed by Enter key", PreValue); } cbdata.gui = gui; cbdata.string = string; if (string) { insertfigure (action != NULL, &cbdata); //also \set Staff.useBassFigureExtenders = ##t if (!((DenemoStaff *) si->currentstaff->data)->hasfigures) { signal_structural_change (gui); ((DenemoStaff *) si->currentstaff->data)->hasfigures = TRUE; } displayhelper (gui); } g_free (string); } denemo-2.2.0/src/command/PaxHeaders.19168/keysig.h0000644000000000000000000000013213135434036016402 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.233315139 30 ctime=1500919914.119981805 denemo-2.2.0/src/command/keysig.h0000644000175000017500000001101413135434036020250 0ustar00jjbenhamjjbenham00000000000000#ifndef __KEYSIG_H__ #define __KEYSIG_H__ #include void keysig_new_maj(gint number); void keysig_new_cmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_gmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_dmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_amaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_emaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_bmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_fsharpmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_csharpmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_fmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_bflatmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_eflatmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_aflatmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_dflatmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_gflatmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_cflatmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_new_min(gint number); void keysig_new_amin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_emin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_bmin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_fsharpmin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_csharpmin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_gsharpmin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_dsharpmin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_asharpmin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_dmin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_gmin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_cmin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_fmin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_bflatmin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_eflatmin (DenemoAction* action, DenemoScriptParam *param); void keysig_new_aflatmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_maj(gint number); void keysig_set_cmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_gmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_dmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_amaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_emaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_bmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_fsharpmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_csharpmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_fmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_bflatmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_eflatmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_aflatmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_dflatmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_gflatmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_cflatmaj (DenemoAction* action, DenemoScriptParam *param); void keysig_set_min(gint number); void keysig_set_amin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_emin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_bmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_fsharpmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_csharpmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_gsharpmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_dsharpmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_asharpmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_dmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_gmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_cmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_fmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_bflatmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_eflatmin (DenemoAction* action, DenemoScriptParam *param); void keysig_set_aflatmin (DenemoAction* action, DenemoScriptParam *param); #endif denemo-2.2.0/src/command/PaxHeaders.19168/score.c0000644000000000000000000000013213135434036016215 xustar0030 mtime=1500919838.339981805 30 atime=1500919918.233315139 30 ctime=1500919914.143315138 denemo-2.2.0/src/command/score.c0000644000175000017500000007352113135434036020076 0ustar00jjbenhamjjbenham00000000000000/* score.cpp * functions dealing with the whole score * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller, Adam Tee*/ #include #include #include #include "config.h" #include "command/staff.h" #include "command/score.h" #include "core/prefops.h" #include "command/select.h" #include "command/object.h" #include "command/lyric.h" #include "audio/audiointerface.h" #include "source/sourceaudio.h" #include "core/cache.h" #include "core/utils.h" #include "core/view.h" #include "command/commandfuncs.h" #include "ui/moveviewport.h" #include "command/contexts.h" #include "audio/midi.h" #include "display/displayanimation.h" #include "command/lilydirectives.h" #include "export/exportmidi.h" #include "display/calculatepositions.h" #include "command/measure.h" #define MOVEMENT_WIDTH (10) /** * Create new DenemoMovement with no staff * set it as gui->movement but do not add it to the movements list. */ void point_to_empty_movement (DenemoProject * gui) { DenemoMovement *newscore = (DenemoMovement *) g_malloc0 (sizeof (DenemoMovement)); init_score (newscore, gui); if (!Denemo.non_interactive && gui->movement && gui->movement->buttonbox) gtk_widget_hide (gui->movement->buttonbox); if (!Denemo.non_interactive && (gui->movement) && gui->movement->lyricsbox) gtk_widget_hide (gui->movement->lyricsbox); g_mutex_lock (&smfmutex); gui->movement = newscore; g_mutex_unlock (&smfmutex); if(!Denemo.non_interactive) gtk_widget_show (gui->movement->buttonbox); } /** * Create new DenemoMovement with one empty staff * set it as gui->movement but do not add it to the movements list. */ void point_to_new_movement (DenemoProject * gui) { point_to_empty_movement (gui); staff_new (gui, INITIAL, DENEMO_NONE); cache_all (); gui->movement->undo_guard = Denemo.prefs.disable_undo; } static void select_movement (gint movementnum) { gboolean ok = goto_movement_staff_obj (NULL, movementnum, 1, 1, 0, 0);// this was moving to the movement but failing on the staff num g_print ("ok is %d\n", ok); set_movement_selector (Denemo.project); displayhelper (Denemo.project); write_status (Denemo.project); } #define NUM_MOVEMENTS_TO_SHOW (2*5) void set_movement_selector (DenemoProject *gui) { GtkWidget *button; GList *g; gint i; if(Denemo.non_interactive) return; reset_movement_numbers (gui); if(gui->movements_selector) gtk_widget_destroy (gui->movements_selector); gui->movements_selector = (GtkWidget*)gtk_hbox_new(FALSE,1); gtk_box_pack_start(GTK_BOX(gui->buttonbox), gui->movements_selector, FALSE, TRUE, 0); gtk_widget_show (gui->movements_selector); if (Denemo.prefs.visible_directive_buttons) gtk_widget_show (gui->buttonbox); gint num_movements = 1; gint last = 1; gint first = 1; if(gui->movements) { gint current = g_list_index (gui->movements, gui->movement) + 1; num_movements = g_list_length(gui->movements); first = current - NUM_MOVEMENTS_TO_SHOW/2; if(first<1) first = 1; last = first + NUM_MOVEMENTS_TO_SHOW -1; if(last>num_movements) { last = num_movements; first = num_movements - NUM_MOVEMENTS_TO_SHOW; if(first<1) first = 1; } } for (g=gui->movements, i=1;g;g=g->next, i++) { if(ilast) continue; button = gtk_button_new_with_label(""); if (g->data == gui->movement) { gchar *text = g_strdup_printf("%d", movementcontrol_directive_get_tag ("HideMovement")?"red":"blue", i); GtkWidget *label_widget = gtk_bin_get_child(GTK_BIN(button)); gtk_label_set_use_markup (GTK_LABEL(label_widget), TRUE); gtk_label_set_markup (GTK_LABEL (label_widget), text); g_free(text); text = g_strdup_printf(_("This is the current movement number %d\nClick on another button to change movements"), i); gtk_widget_set_tooltip_text (button, text); g_free(text); } else { gchar *more = ""; if((lastmovements_selector), button, FALSE, TRUE, 0); } if(i==2) gtk_widget_hide (gui->movements_selector); if(gui->movement) set_master_tempo (gui->movement, 1.0); if ((gui->movement) && gui->movement->lyricsbox /*&& Denemo.prefs.lyrics_pane*/) gtk_widget_show (gui->movement->lyricsbox), show_lyrics (); } static void new_movement (DenemoAction * action, DenemoScriptParam * param, gboolean before) { DenemoProject *gui = Denemo.project; gint pos = g_list_index (gui->movements, gui->movement); append_new_movement (action, param); DenemoMovement *newsi = g_list_last (gui->movements)->data; gui->movements = g_list_delete_link (gui->movements, g_list_last (gui->movements)); gui->movements = g_list_insert (gui->movements, newsi, before ? pos : pos + 1); //newsi->currentmovementnum = 1 + g_list_index (gui->movements, newsi); done in set_movement_selector() staff_set_current_primary (gui->movement); //gui->movements_selector = NULL; set_movement_selector (gui); goto_movement_staff_obj (NULL, -1, 1, 0, 0, 0); #ifdef DISABLE_AUBIO #else rewind_audio (); #endif write_status (gui); } static void append_movement (DenemoAction * action, gpointer param, gboolean populate) { DenemoProject *gui = Denemo.project; DenemoMovement *source_movement = gui->movement; GList *g; (void) signal_structural_change (gui); if (gui->movement->lyricsbox) gtk_widget_hide (gui->movement->lyricsbox); point_to_empty_movement (gui); for (g = source_movement->thescore; g; g = g->next) { DenemoStaff *source_staff = g->data; staff_new (gui, LAST, DENEMO_NONE); if (!populate) break; GList *dest = g_list_last (gui->movement->thescore); DenemoStaff *dest_staff = dest->data; staff_copy (source_staff, dest_staff, TRUE); } gui->movements = g_list_append (gui->movements, gui->movement); //gui->movement->currentmovementnum = 1 + g_list_index (gui->movements, gui->movement); set_movement_selector (gui); gui->movement->undo_guard = Denemo.prefs.disable_undo; call_out_to_guile ("(d-DirectivePut-header-postfix \"SuppressTitleRepeats\" \"title = ##f\ninstrument = ##f\n\")"); set_width_to_work_with (gui); //FIXME duplicate code set_rightmeasurenum (gui->movement); find_leftmost_allcontexts (gui->movement); set_bottom_staff (gui); if(!Denemo.non_interactive){ update_hscrollbar (gui); update_vscrollbar (gui); draw_score_area(); g_signal_emit_by_name (G_OBJECT (Denemo.hadjustment), "changed"); g_signal_emit_by_name (G_OBJECT (Denemo.vadjustment), "changed"); } displayhelper (gui); score_status (gui, TRUE); } //copies staff structure to new movement void append_new_movement (DenemoAction * action, DenemoScriptParam * param) { append_movement (action, param, TRUE); } //does not copy staff structure to new movement void append_blank_movement (void) { append_movement (NULL, NULL, FALSE); } void insert_movement_before (DenemoAction * action, DenemoScriptParam * param) { new_movement (action, param, TRUE); } void insert_movement_after (DenemoAction * action, DenemoScriptParam * param) { new_movement (action, param, FALSE); } static void terminate_playback (void) { if (is_playing ()) midi_stop (); g_thread_yield (); //FIXME find a better way of ensuring playing is finished - in principle the user could start playing again if (is_playing ()) terminate_playback (); //g_debug("Terminated %d\n", is_playing()); } void reset_movement_numbers (DenemoProject * gui) { GList *g; gint i; for (i = 1, g = gui->movements; g; g = g->next, i++) { DenemoMovement *si = g->data; si->currentmovementnum = i; } } void delete_movement (DenemoAction * action, DenemoScriptParam* param) { DenemoProject *gui = Denemo.project; terminate_playback (); (void) signal_structural_change (gui); GString *primary = g_string_new (""), *secondary = g_string_new (""); if (gui->movements == NULL || (g_list_length (gui->movements) == 1)) { g_string_assign (primary, _("This is the only movement")); g_string_assign (secondary, _("Delete it and start over?")); if (confirm (primary->str, secondary->str)) { gchar *name = g_strdup (gui->filename->str); gui->movement->undo_guard = 1; //no undo as that is per movement deletescore (NULL, gui); g_string_assign (gui->filename, name); g_free (name); } } else { // more than one movement gint num = g_list_index (gui->movements, gui->movement); g_string_printf (primary, _("This is movement #%d"), num + 1); g_string_assign (secondary, _("Delete entire movement?")); if (confirm (primary->str, secondary->str)) { gui->movement->undo_guard = 1; //no undo as that is per movement free_movement (gui); DenemoMovement *si = gui->movement; GList *g = g_list_find (gui->movements, si)->next; if (g == NULL) g = g_list_find (gui->movements, si)->prev; gui->movement = g->data; gui->movements = g_list_remove (gui->movements, (gpointer) si); } } reset_movement_numbers (gui); g_string_free (primary, TRUE); g_string_free (secondary, TRUE); set_movement_selector (gui); set_movement_transition (-MOVEMENT_WIDTH); displayhelper (gui); score_status (gui, TRUE); } /* go to the movement voice measure staff and object numbers (starting from 1) movementnum<=0 means current movement * objnum 0 finds first object if any possible_gui is really a flag interactive or not */ gboolean goto_movement_staff_obj (DenemoProject * possible_gui, gint movementnum, gint staffnum, gint measurenum, gint objnum, gint leftmeasurenum) { DenemoProject *gui; terminate_playback (); if (possible_gui == NULL) gui = Denemo.project; else gui = possible_gui; if (movementnum > 0 && (movementnum != gui->movement->currentmovementnum)) { GList *this = g_list_nth (gui->movements, movementnum - 1); if (this == NULL) { if (possible_gui) warningdialog (_("No such movement")); return FALSE; } panic_all (); //g_print ("Reset synth\n"); if(!Denemo.non_interactive) { gtk_widget_hide (gui->movement->buttonbox); if ((gui->movement) && gui->movement->lyricsbox /*&& Denemo.prefs.lyrics_pane*/) gtk_widget_hide (gui->movement->lyricsbox); } gui->movement = this->data; if(!Denemo.non_interactive) gtk_widget_show (gui->movement->buttonbox); set_movement_selector (gui); } if (staffnum>0 && !moveto_currentstaffnum (gui, staffnum)) { if (possible_gui) warningdialog (_("No such voice")); else moveto_currentstaffnum (gui, 1); return FALSE; } if (measurenum>0 && !moveto_currentmeasurenum (gui, measurenum, leftmeasurenum)) { if (possible_gui) warningdialog (_("No such measure")); else moveto_currentmeasurenum (gui, 1, leftmeasurenum); return FALSE; } //cursor_x is zero and we are on the first, if any, object if (gui->movement->currentobject == NULL && objnum) return FALSE; //asking for an object in an empty measure while (--objnum > 0 && gui->movement->currentobject && gui->movement->currentobject->next) { gui->movement->currentobject = gui->movement->currentobject->next; gui->movement->cursor_x++; } //g_debug("objnum %d\n",objnum); if (objnum > 0) { gui->movement->cursor_x++; // objnum; if (!gui->movement->currentobject) return FALSE; gui->movement->cursor_appending = TRUE; } if(leftmeasurenum) { gui->movement->leftmeasurenum = leftmeasurenum; set_rightmeasurenum (gui->movement); } write_status (gui); move_viewport_up (gui); move_viewport_down (gui); draw_score_area(); return TRUE; } /* get the object specified or NULL if there is none. */ DenemoObject * get_object_by_position (gint movementnum, gint staffnum, gint measurenum, gint objnum) { DenemoProject *gui = Denemo.project; GList *this = g_list_nth (gui->movements, movementnum - 1); if (this == NULL) return NULL; DenemoMovement *movement = this->data; this = g_list_nth (movement->thescore, staffnum - 1); if (this == NULL) return NULL; DenemoStaff *thestaff = (DenemoStaff*)this->data; this = g_list_nth (thestaff->themeasures, measurenum -1); if (this==NULL) return NULL; this = g_list_nth (((DenemoMeasure*)this->data)->objects, objnum-1); if (this==NULL) return NULL; return this->data; } void PopPosition (DenemoAction * action, DenemoScriptParam * param) { DenemoPosition *pos = pop_position (); DenemoScriptParam dummy; if (action || !param) param = &dummy; if (pos == NULL) { param->status = FALSE; return; } param->status = goto_movement_staff_obj (NULL, pos->movement, pos->staff, pos->measure, pos->object, pos->leftmeasurenum); if (param->status) { Denemo.project->movement->cursor_appending = pos->appending; Denemo.project->movement->cursoroffend = pos->offend; } g_free (pos); } void PushPosition (DenemoAction * action, DenemoScriptParam * param) { push_position (); } void PopPushPosition (DenemoAction * action, DenemoScriptParam * param) { DenemoPosition *pos = pop_position (); DenemoScriptParam dummy; if (action || !param) param = &dummy; if (pos) { push_position (); param->status = goto_movement_staff_obj (NULL, pos->movement, pos->staff, pos->measure, pos->object, pos->leftmeasurenum); if (param->status) { Denemo.project->movement->cursor_appending = pos->appending; Denemo.project->movement->cursoroffend = pos->offend; } } else param->status = FALSE; } /** * Move to the next movement * @param action - Gtk Action event * @param gui - pointer to the DenemoProject structure * @return none */ void next_movement (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; terminate_playback (); GList *this = g_list_find (gui->movements, gui->movement); this = this->next; if (param) param->status = TRUE; if (this == NULL) { if (param) param->status = FALSE; else warningmessage (_("This is the last movement")); return; } if(!Denemo.non_interactive){ gtk_widget_hide (gui->movement->buttonbox); if (gui->movement->lyricsbox) gtk_widget_hide (gui->movement->lyricsbox); } gui->movement = this->data; if(!Denemo.non_interactive){ if (gui->movement->lyricsbox /*&& Denemo.prefs.lyrics_pane*/) gtk_widget_show (gui->movement->lyricsbox); gtk_widget_show (gui->movement->buttonbox); } set_movement_selector (gui); //!!!!!!!!updatescoreinfo (gui); //FIXME duplicate code set_rightmeasurenum (gui->movement); find_leftmost_allcontexts (gui->movement); set_bottom_staff (gui); if(!Denemo.non_interactive){ update_hscrollbar (gui); update_vscrollbar (gui); g_signal_emit_by_name (G_OBJECT (Denemo.hadjustment), "changed"); g_signal_emit_by_name (G_OBJECT (Denemo.vadjustment), "changed"); write_status (gui); //gtk_widget_draw (Denemo.scorearea, NULL);//KLUDGE FIXME see staffup/down set_movement_transition (-MOVEMENT_WIDTH); draw_score_area(); draw_score (NULL); } } /** * Move to the previous movement * @param action - Gtk Action event * @param gui - pointer to the DenemoProject structure * @return none */ void prev_movement (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; terminate_playback (); GList *this = g_list_find (gui->movements, gui->movement); this = this->prev; if (param) param->status = TRUE; if (this == NULL) { if (param) param->status = FALSE; else warningmessage (_("This is the first movement")); return; } if(!Denemo.non_interactive){ gtk_widget_hide (gui->movement->buttonbox); if (gui->movement->lyricsbox) gtk_widget_hide (gui->movement->lyricsbox); } gui->movement = this->data; if(!Denemo.non_interactive){ gtk_widget_show (gui->movement->buttonbox); } set_movement_selector (gui); //!!!!!!!!!!!!!updatescoreinfo (gui); //FIXME duplicate code set_rightmeasurenum (gui->movement); set_bottom_staff (gui); if(!Denemo.non_interactive){ update_hscrollbar (gui); update_vscrollbar (gui); draw_score_area(); g_signal_emit_by_name (G_OBJECT (Denemo.hadjustment), "changed"); g_signal_emit_by_name (G_OBJECT (Denemo.vadjustment), "changed"); } write_status (gui); //gtk_widget_draw (Denemo.scorearea, NULL);//KLUDGE FIXME see staffup/down set_movement_transition (MOVEMENT_WIDTH); if(!Denemo.non_interactive){ draw_score_area(); draw_score (NULL); } } /** * Initialise scoreinfo structure * * @param si pointer to the scoreinfo structure to initialise */ void init_score (DenemoMovement * si, DenemoProject * gui) { gchar *dir = (gchar *) get_user_data_dir (TRUE); si->readonly = 0; si->leftmeasurenum = si->rightmeasurenum = 1; si->top_staff = si->bottom_staff = 1; si->measurewidth = DENEMO_INITIAL_MEASURE_WIDTH; si->measurewidths = NULL; si->staffspace = DENEMO_INITIAL_STAFF_HEIGHT; si->thescore = NULL; si->currentstaffnum = 1; si->currentmeasurenum = 1; si->currentobject = NULL; si->cursor_x = 0; si->cursor_y = 0; si->staffletter_y = 0; si->cursor_appending = TRUE; si->zoom = Denemo.prefs.zoom > 0 ? Denemo.prefs.zoom / 100.0 : 1.0; si->preview_zoom = 1.0; si->system_height = Denemo.prefs.system_height > 0 ? Denemo.prefs.system_height / 100.0 : 1.0; si->cursoroffend = FALSE; //si->cursortime1 = si->cursortime2 = 4; si->markstaffnum = 0; si->markmeasurenum = 0; si->markcursor_x = 0; si->maxkeywidth = 0; si->has_figures = FALSE; si->has_fakechords = FALSE; /*playback purposes */ si->tempo = 120; si->start = 0; si->end = 0; si->stafftoplay = 0; si->start_time = 0; si->end_time = -1.0; //ie unset if (Denemo.project->movement) set_master_volume (si, 1.0); else si->master_volume = 1.0; si->tempo_change_time = 0.0; if (Denemo.project->movement) set_master_tempo (si, 1.0); else si->master_tempo = 1.0; si->savebuffer = NULL; si->smfsync = G_MAXINT; if (gui->filename == NULL) gui->filename = g_string_new (""); gui->autosavename = g_string_new (g_build_filename (dir, "autosave.denemo", NULL)); if (gui->tabname == NULL) gui->tabname = g_string_new (""); /* Undo/redo initialisation */ si->undodata = g_queue_new (); si->redodata = g_queue_new (); si->undo_guard = 1; //do not collect undo information until file is loaded if(!Denemo.non_interactive){ si->buttonbox = gtk_hbox_new (FALSE, 1); set_movement_selector (gui); gtk_widget_set_tooltip_text (si->buttonbox, _("A button bar that can be populated by Movement titles and other user generated buttons.\nGenerally by clicking the button you can edit the title or value or execute the action of the button")); gtk_box_pack_end (GTK_BOX (gui->buttonboxes), si->buttonbox, FALSE, TRUE, 0); gtk_widget_show (si->buttonbox); gtk_widget_set_can_focus (si->buttonbox, FALSE); //GTK_WIDGET_UNSET_FLAGS(si->buttonbox, GTK_CAN_FOCUS); } } static gboolean delete_all_staffs (DenemoProject * gui) { DenemoMovement *si = gui->movement; gint i; for (i = g_list_length (si->thescore); i > 0; i--) { si->currentstaffnum = i; si->currentstaff = g_list_nth (si->thescore, i - 1); staff_delete (gui, FALSE); } return TRUE; } /** * * frees the data in a movement * * @param gui pointer to the DenemoProject structure whose current movement to free */ void free_movement (DenemoProject * gui) { delete_all_staffs (gui); delete_directives (&gui->movement->layout.directives); delete_directives (&gui->movement->header.directives); free_midi_data (gui->movement); if (gui->movement->buttonbox) { gtk_widget_destroy (gui->movement->buttonbox); gui->movement->buttonbox = NULL; } if (gui->movement->lyricsbox) { gtk_widget_destroy (gui->movement->lyricsbox); gui->movement->lyricsbox = NULL; } reset_lyrics (NULL, 0); g_queue_free (gui->movement->undodata); g_queue_free (gui->movement->redodata); } static GList * extract_verses (GList * verses) { //g_warning("extract_verses not tested!!!!!!!"); GList *ret = NULL; GList *g; for (g = verses; g; g = g->next) { GtkTextView *srcVerse = g->data; ret = g_list_append (ret, get_text_from_view (GTK_WIDGET (srcVerse))); } return ret; } static void clone_staff (DenemoStaff *srcStaff, DenemoStaff *thestaff) { // There are things like // measurenode *measures; /**< This is a pointer to each measure in the staff */ actually a GList * of measures. // and nummeasures which must be fixed by the caller. memcpy (thestaff, srcStaff, sizeof (DenemoStaff)); thestaff->staffmenu = thestaff->voicemenu = NULL; thestaff->sources = NULL; thestaff->denemo_name = g_string_new (srcStaff->denemo_name->str); thestaff->lily_name = g_string_new (srcStaff->lily_name->str); thestaff->midi_instrument = g_string_new (srcStaff->midi_instrument->str); thestaff->device_port= g_string_new (srcStaff->device_port->str); thestaff->clef.directives = clone_directives (srcStaff->clef.directives); thestaff->keysig.directives = clone_directives (srcStaff->keysig.directives); thestaff->timesig.directives = clone_directives (srcStaff->timesig.directives); if (srcStaff->leftmost_clefcontext == &srcStaff->clef) thestaff->leftmost_clefcontext = &thestaff->clef; else{ // has to be fixed up after the measures are done..., so do the whole thing after??? // likewise keysig timesig g_warning ("Not doing clef context yet..."); thestaff->leftmost_clefcontext = &thestaff->clef; } if (srcStaff->leftmost_timesig == &srcStaff->timesig) thestaff->leftmost_timesig = &thestaff->timesig; else{ // has to be fixed up after the measures are done..., so do the whole thing after??? // likewise keysig timesig g_warning ("Not doing timesig context yet..."); thestaff->leftmost_timesig = &thestaff->timesig; } if (srcStaff->leftmost_keysig == &srcStaff->keysig) thestaff->leftmost_keysig = &thestaff->keysig; else{ // has to be fixed up after the measures are done..., so do the whole thing after??? // likewise keysig timesig g_warning ("Not doing keysig context yet..."); thestaff->leftmost_keysig = &thestaff->keysig; } thestaff->denemo_name = g_string_new (srcStaff->denemo_name->str); thestaff->lily_name = g_string_new (srcStaff->lily_name->str); thestaff->staff_directives = clone_directives (srcStaff->staff_directives); { GList *direc; for (direc = thestaff->staff_directives; direc; direc = direc->next) { DenemoDirective *directive = direc->data; directive->widget = NULL; // widget_for_staff_directive(directive); } } thestaff->voice_directives = clone_directives (srcStaff->voice_directives); { GList *direc; for (direc = thestaff->voice_directives; direc; direc = direc->next) { DenemoDirective *directive = direc->data; directive->widget = NULL; // widget_for_voice_directive(directive); } } //this rather horrible: it is for the snapshot() routine //the verses not the verse_views are extracted, and then select.c expects that! //the reason is there is nowhere on the DenemoStaff structure to store the index of the current view, //so the current_verse_view is set to the index'th element of staff->verse_views. //so the only other way, other than creating a special field for a snapshotted staff would be to store a pointer into staff->verses in the current_verse_view field //which select.c would have to know about. Not much better. thestaff->verse_views = extract_verses (srcStaff->verse_views); gint pos = verse_get_current (srcStaff); if (pos>=0) thestaff->current_verse_view = g_list_nth (thestaff->verse_views, pos); } DenemoMovement * clone_movement (DenemoMovement * si) { DenemoMovement *newscore = (DenemoMovement *) g_malloc0 (sizeof (DenemoMovement)); memcpy (newscore, si, sizeof (DenemoMovement)); GList *g; newscore->measurewidths = NULL; for (g = si->measurewidths; g; g = g->next) newscore->measurewidths = g_list_append (newscore->measurewidths, g->data); newscore->playingnow = NULL; for (newscore->thescore = NULL, g = si->thescore; g; g = g->next) { DenemoStaff *srcStaff = (DenemoStaff *) g->data; // staff_copy(srcStaff, thestaff);!!!!!! does not copy e.g. no of lines ... need proper clone code. DenemoStaff *thestaff = (DenemoStaff *)g_malloc(sizeof(DenemoStaff)); clone_staff (srcStaff, thestaff); newscore->lyricsbox = NULL; newscore->thescore = g_list_append (newscore->thescore, thestaff); if (g == si->currentprimarystaff) newscore->currentprimarystaff = newscore->thescore; if (g == si->currentstaff) newscore->currentstaff = newscore->thescore; newscore->currentmeasure = newscore->currentobject = thestaff->themeasures = NULL; GList *h; for (h = srcStaff->themeasures; h; h = h->next) { objnode *theobjs = ((DenemoMeasure*)h->data)->objects; DenemoMeasure *newmeasure = (DenemoMeasure*)g_malloc0(sizeof (DenemoMeasure)); GList *i; for (i = theobjs; i; i = i->next) { DenemoObject *theobj = (DenemoObject *) i->data; DenemoObject *newobj = dnm_clone_object (theobj); newmeasure->objects = g_list_append (newmeasure->objects, newobj); if (i == si->currentobject) /*g_print("current object %x\n", g_list_last(newmeasure)), */ newscore->currentobject = g_list_last(newmeasure->objects); } thestaff->themeasures = g_list_append (thestaff->themeasures, newmeasure); if (h == si->currentmeasure) /*g_print("current measure %x\n", g_list_last(thestaff->measures)), */ newscore->currentmeasure = g_list_last (thestaff->themeasures); //??? } } newscore->movementcontrol.directives = clone_directives (si->movementcontrol.directives); newscore->layout.directives = clone_directives (si->layout.directives); newscore->header.directives = clone_directives (si->header.directives); newscore->smfsync = G_MAXINT; /* savebuffer Instruments */ newscore->markstaffnum = 0; //Do not clone the selection return newscore; } /** * Recalculates the stored information about a movement * either gui->movement or if that does exist yet, gui->movements->data, the first movement.(FIXME) * * @param gui pointer to the gui structure */ void updatescoreinfo (DenemoProject * gui) { staffnode *curstaff; DenemoMovement *si; GList *g = gui->movements; if (g) si = g->data; else si = gui->movement; do { for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) { staff_beams_and_stems_dirs ((DenemoStaff *) curstaff->data); staff_show_which_accidentals ((DenemoStaff *) curstaff->data); } find_xes_in_all_measures (si); find_leftmost_allcontexts (si); si->currentstaff = si->thescore; si->currentmeasure = staff_first_measure_node (si->currentstaff); si->currentobject = measure_first_obj_node (si->currentmeasure); if (!si->currentobject) si->cursor_appending = TRUE; else si->cursor_appending = FALSE; si->leftmeasurenum = si->currentstaffnum = si->currentmeasurenum = 1; } while (g && (g = g->next) && (si = g->data)); score_status (gui, FALSE); } /** * Delete the movements of the given score and create a new one * with one movement and empty music data, no title * This is the action for the d-New command */ void deletescore (GtkWidget * widget, DenemoProject * gui) { free_movements (gui); score_status (gui, FALSE); if (gui->filename) { g_string_free (gui->filename, TRUE); g_string_free (gui->autosavename, TRUE); gui->filename = NULL; set_title_bar (gui); } if (gui->tabname) { g_string_free (gui->tabname, TRUE); gui->tabname = NULL; } gui->total_edit_time = 0; reset_editing_timer(); point_to_new_movement (gui); gui->movements = g_list_append (gui->movements, gui->movement); reset_movement_numbers (gui); set_width_to_work_with (gui); set_rightmeasurenum (gui->movement); if(!Denemo.non_interactive){ update_hscrollbar (gui); update_vscrollbar (gui); draw_score_area(); g_signal_emit_by_name (G_OBJECT (Denemo.hadjustment), "changed"); g_signal_emit_by_name (G_OBJECT (Denemo.vadjustment), "changed"); force_lily_refresh (gui); } panic_all (); //g_print ("Reset synth after deletescore()\n"); } denemo-2.2.0/src/command/PaxHeaders.19168/timesig.h0000644000000000000000000000013213135434036016550 xustar0030 mtime=1500919838.343315139 30 atime=1500919918.266648473 30 ctime=1500919914.153315138 denemo-2.2.0/src/command/timesig.h0000644000175000017500000000326413135434036020426 0ustar00jjbenhamjjbenham00000000000000#ifndef __TIMESIG_H__ #define __TIMESIG_H__ #include void newtimesig22 (DenemoAction* action, DenemoScriptParam *param); void newtimesig42 (DenemoAction* action, DenemoScriptParam *param); void newtimesig32 (DenemoAction* action, DenemoScriptParam *param); void newtimesig44 (DenemoAction* action, DenemoScriptParam *param); void newtimesig54 (DenemoAction* action, DenemoScriptParam *param); void newtimesig24 (DenemoAction* action, DenemoScriptParam *param); void newtimesig34 (DenemoAction* action, DenemoScriptParam *param); void newtimesig68 (DenemoAction* action, DenemoScriptParam *param); void newtimesig128 (DenemoAction* action, DenemoScriptParam *param); void newtimesig38 (DenemoAction* action, DenemoScriptParam *param); void newtimesig98 (DenemoAction* action, DenemoScriptParam *param); void newtimesig64 (DenemoAction* action, DenemoScriptParam *param); void settimesig22 (DenemoAction* action, DenemoScriptParam *param); void settimesig42 (DenemoAction* action, DenemoScriptParam *param); void settimesig32 (DenemoAction* action, DenemoScriptParam *param); void settimesig44 (DenemoAction* action, DenemoScriptParam *param); void settimesig54 (DenemoAction* action, DenemoScriptParam *param); void settimesig24 (DenemoAction* action, DenemoScriptParam *param); void settimesig34 (DenemoAction* action, DenemoScriptParam *param); void settimesig68 (DenemoAction* action, DenemoScriptParam *param); void settimesig128 (DenemoAction* action, DenemoScriptParam *param); void settimesig38 (DenemoAction* action, DenemoScriptParam *param); void settimesig98 (DenemoAction* action, DenemoScriptParam *param); void settimesig64 (DenemoAction* action, DenemoScriptParam *param); #endif denemo-2.2.0/src/command/PaxHeaders.19168/grace.h0000644000000000000000000000013213135434036016170 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.266648473 30 ctime=1500919914.113315139 denemo-2.2.0/src/command/grace.h0000644000175000017500000000072313135434036020043 0ustar00jjbenhamjjbenham00000000000000/* grace.h * * Grace note function prototypes * * for Denemo, a gtk+ frontend for GNU Lilypond * (c) 2000, 2001 Adam Tee, 2010 Richard Shann */ #ifndef GRACEOPS_H #define GRACEOPS_H #include #include DenemoObject *newgracestart (); DenemoObject *newgraceend (); void toggle_grace (DenemoAction * action, DenemoScriptParam * param); void toggle_acciaccatura (DenemoAction * action, DenemoScriptParam * param); #endif //GRACEOPS_H denemo-2.2.0/src/command/PaxHeaders.19168/figure.h0000644000000000000000000000013213135434036016370 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.266648473 30 ctime=1500919914.109981805 denemo-2.2.0/src/command/figure.h0000644000175000017500000000100513135434036020235 0ustar00jjbenhamjjbenham00000000000000/* figure.h * * (c) 2003 Richard Shann */ #ifndef FIGURE_H #define FIGURE_H #include void figure_insert (DenemoAction * action, DenemoScriptParam * param); DenemoObject *newfigure (gint baseduration, gint numdots, gchar * figs); void delete_figured_bass (DenemoAction * action, DenemoScriptParam * param); void hide_figured_bass (DenemoAction * action, DenemoScriptParam * param); void show_figured_bass (DenemoAction * action, DenemoScriptParam * param); #endif denemo-2.2.0/src/command/PaxHeaders.19168/keyresponses.c0000644000000000000000000000013213135434036017634 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.266648473 30 ctime=1500919914.116648472 denemo-2.2.0/src/command/keyresponses.c0000644000175000017500000010517513135434036021516 0ustar00jjbenhamjjbenham00000000000000/* keyresponses.c * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #include #include "core/kbd-custom.h" #include "command/keyresponses.h" #include "core/utils.h" #include "command/tuplet.h" #include "core/view.h" #include "command/commandfuncs.h" #include "core/kbd-custom.h" #include "audio/audiointerface.h" #if GTK_MAJOR_VERSION==3 #include //FIXME Look for something more gtk3 like #endif static GdkEventKey **divert_key_event; /* Non null if key events are being intercepted by a function * (which is running a gtk_mail_loop() for this reason). * return TRUE if a key press successfully captured * in which case the kyval, state pair are returned */ static gint divert_key_id = 0; gboolean intercept_scorearea_keypress (GdkEventKey * pevent) { if (divert_key_event) { warningdialog (_("Recursive key capture not possible!")); /* we could make a stack of them instead ... */ return FALSE; } GdkEventKey *event; divert_key_id = Denemo.project->id; divert_key_event = &event; gtk_main (); divert_key_event = NULL; // *keyval = event->keyval; // *state = dnm_sanitize_key_state(event); memcpy (pevent, event, sizeof (GdkEventKey)); return TRUE; } static guint lock_mask (gint keyval) { if ((keyval == GDK_Shift_L) || (keyval == GDK_Shift_R)) return GDK_SHIFT_MASK; if (keyval == GDK_Caps_Lock) return GDK_LOCK_MASK; if ((keyval == GDK_Control_L) || (keyval == GDK_Control_R)) return GDK_CONTROL_MASK; if (keyval == GDK_Alt_L) return GDK_MOD1_MASK; if (keyval == GDK_Num_Lock) return GDK_MOD2_MASK; /*penguin/windows */ if ((keyval == GDK_Super_L) || (keyval == GDK_Super_R)) return GDK_MOD4_MASK; if (keyval == GDK_Alt_R || GDK_ISO_Level3_Shift) return GDK_MOD5_MASK; return 0; } static guint klock_mask (gint keyval) { if ((keyval == GDK_Shift_L) || (keyval == GDK_Shift_R)) return GDK_SHIFT_MASK; if ((keyval == GDK_Control_L) || (keyval == GDK_Control_R)) return GDK_CONTROL_MASK; if (keyval == GDK_Alt_L) return GDK_MOD1_MASK; /*penguin/windows */ if ((keyval == GDK_Super_L) || (keyval == GDK_Super_R)) return GDK_MOD4_MASK; if (keyval == GDK_Alt_R || GDK_ISO_Level3_Shift) return GDK_MOD5_MASK; return 0; } static guint llock_mask (gint keyval) { if (keyval == GDK_Caps_Lock) return GDK_LOCK_MASK; if (keyval == GDK_Num_Lock) return GDK_MOD2_MASK; return 0; } /** * keyrelease event callback * sets cursor if a modifier */ gint scorearea_keyrelease_event (GtkWidget * widget, GdkEventKey * event) { if(!Denemo.keyboard_state_locked) { Denemo.keyboard_state ^= (0xf & klock_mask (event->keyval)); if ((event->keyval == GDK_Alt_L) || (event->keyval == GDK_Alt_R)) { if ((Denemo.keyboard_state & CHORD_MASK)) //At least one note has been entered in a chord next_insert_or_editable_note (); Denemo.keyboard_state &= ~CHORD_MASK; } set_midi_in_status (); } //g_print("release %x state %x\n", Denemo.keyboard_state, event->state); // set_cursor_for(keyrelease_modify(event->state), event->keyval); gint state; if ((event->keyval == GDK_Caps_Lock) || (event->keyval == GDK_Num_Lock)) return TRUE; state = (lock_mask (event->keyval) ^ event->state); set_cursor_for (state); return TRUE; } /* perform the command of the given name and store the event that triggered it */ static gchar * perform_command (const gchar * command_name, GdkEventKey * event) { Denemo.last_keyval = event->keyval; Denemo.last_keystate = dnm_sanitize_key_state (event); call_out_to_guile ("(define DenemoKeypressActivatedCommand #t)"); execute_callback_from_name (command_name); call_out_to_guile ("(define DenemoKeypressActivatedCommand #f)"); // note Denemo.project = Denemo.project; may have changed as a result of executing the command #ifdef TESTING_REPEATED_XPOSITION_UPDATE if (Denemo.project->movement) displayhelper (Denemo.project); #endif return NULL; } //return the value of perform_command if executed or "" if keypress is part of a two-key shortcut, or NULL toherwise gchar * process_key_event (GdkEventKey * event, gchar * perform_command ()) { keymap *the_keymap = Denemo.map; //g_debug("\n********\nCaps Lock %x?\n\n********\nShifted %x?\n", event->state&GDK_LOCK_MASK, event->state&GDK_SHIFT_MASK ); { gint state; state = (lock_mask (event->keyval) ^ event->state); if (state || ((event->keyval == GDK_Caps_Lock) || (event->keyval == GDK_Num_Lock))) set_cursor_for (state); // MUST LOOK AHEAD to state after keypress HERE CATCH modifiers and set the cursor for them..... } dnm_clean_event (event); if (isModifier (event)) return NULL; /* Look up the keystroke in the keymap and execute the appropriate * function */ static GString *prefix_store = NULL; if (!prefix_store) prefix_store = g_string_new (""); gint command_idx = lookup_command_for_keyevent (event); if ((prefix_store->len == 0) && (command_idx != -1)) { const gchar *command_name = lookup_name_from_idx (the_keymap, command_idx); if (command_name) { if (Denemo.prefs.learning) { gchar *name = dnm_accelerator_name (event->keyval, event->state); KeyStrokeShow (name, command_idx, TRUE); g_free (name); } if (Denemo.ScriptRecording) { append_scheme_call ((gchar *) command_name); } //g_debug("Single Key shortcut %s invokes %s\n", dnm_accelerator_name(event->keyval, event->state), command_name); return perform_command (command_name, event); } else { g_warning ("Error: action %i has no name", command_idx); return NULL; } } /* we create a store for the prefix char and look to see if it is populated when a keystroke is received. If it is populated, we try for the two-key combination, {???else we try for the single key, and if that fails populate the store. OR if it fails clear store}. If the two-key combination works we clear the store. If the two-key combination fails we try for the single key, if that succeeds we clear the store if it fails we set the store to the unresolved keystroke. */ gchar *ret = NULL; if (prefix_store->len) { gchar *name = dnm_accelerator_name (event->keyval, event->state); //g_debug("second key %s\n", name); g_string_append_printf (prefix_store, "%c%s", ',', name); command_idx = lookup_command_for_keybinding_name (Denemo.map, prefix_store->str); if (command_idx != -1) { const gchar *command_name = lookup_name_from_idx (the_keymap, command_idx); if (command_name) { if (Denemo.prefs.learning) { KeyStrokeShow (prefix_store->str, command_idx, FALSE); } if (Denemo.ScriptRecording) { append_scheme_call ((gchar *) command_name); } ret = perform_command (command_name, event); } } else { //Two key name was not a binding ret = NULL; write_status (Denemo.project); if ((Denemo.project->view != DENEMO_MENU_VIEW) || Denemo.prefs.learning) { Denemo.prefs.learning = TRUE; KeyStrokeDecline (prefix_store->str); } toggle_to_drawing_area (TRUE); //restore menus, in case the user is lost and needs to look up a keypress if (Denemo.project->view != DENEMO_MENU_VIEW) toggle_to_drawing_area (TRUE); } g_string_assign (prefix_store, ""); Denemo.continuations = NULL; return ret; } else { //no prefix stored gchar *name = dnm_accelerator_name (event->keyval, event->state); //FIXME free name if ((Denemo.continuations = (GList *) g_hash_table_lookup (Denemo.map->continuations_table, name))) { GList *g; GString *continuations = g_string_new (""); for (g = Denemo.continuations; g; g = g->next) g_string_append_printf (continuations, "%s%s", (gchar *) g->data, _(", or ")); g_string_printf (prefix_store, _( "Prefix Key %s, waiting for key %stype Esc to abort"), name, continuations->str); g_string_free (continuations, TRUE); if (Denemo.prefs.immediateplayback) play_note (DEFAULT_BACKEND, 0, 9, 61, 300, 127 * Denemo.project->movement->master_volume); //gtk_statusbar_pop (GTK_STATUSBAR (Denemo.statusbar), Denemo.status_context_id); gtk_label_set_text (GTK_LABEL (Denemo.statuslabel), prefix_store->str); g_string_assign (prefix_store, name); if (Denemo.prefs.learning) { KeyStrokeAwait (name); } return ""; //continuation available } else { if ((Denemo.project->view != DENEMO_MENU_VIEW) || Denemo.prefs.learning) { Denemo.prefs.learning = TRUE; KeyStrokeDecline (name); } toggle_to_drawing_area (TRUE); //restore menus, in case the user is lost and needs to look up a keypress if (Denemo.project->view != DENEMO_MENU_VIEW) toggle_to_drawing_area (TRUE); } return NULL; } return NULL; } /** * keypress event callback * looks up the key press and executes the correct function */ gint scorearea_keypress_event (GtkWidget * widget, GdkEventKey * event) { if(!Denemo.keyboard_state_locked) { Denemo.keyboard_state |= (0xf & klock_mask (event->keyval)); Denemo.keyboard_state ^= llock_mask (event->keyval); // if((event->keyval==GDK_Alt_L)||(event->keyval==GDK_Alt_R)) // Denemo.keyboard_state |= CHORD_MASK; set_midi_in_status (); } //g_print("press Denemo %x state %x klock %x\n", Denemo.keyboard_state, event->state, klock_mask(event->keyval)); //g_debug("State eored %x\n", (lock_mask(event->keyval)^event->state)); if (divert_key_event && !isModifier (event) && divert_key_id == Denemo.project->id) { dnm_clean_event (event); *divert_key_event = event; //g_object_ref(event); FIXME do we need to keep it around? gtk_main_quit (); return TRUE; //*is* reached main loop exits to the caller of the loop when it next gains control } (void) process_key_event (event, perform_command); return TRUE; //I think this means do not run any other handlers after this. } /** * Reduce the measure width by 10 pixels */ void adjust_measure_less_width_key (DenemoAction* action, DenemoScriptParam *param) { adjustmeasurewidth (Denemo.project->movement, -10); } /** * Enlarge the measure width by 10 pixels */ void adjust_measure_more_width_key (DenemoAction* action, DenemoScriptParam *param) { adjustmeasurewidth (Denemo.project->movement, 10); } /** * Reduce the staff height by 10 pixels */ void adjust_staff_less_height_key (DenemoAction* action, DenemoScriptParam *param) { adjuststaffheight (Denemo.project->movement, -10); } /** * Enlarge the staff height by 10 pixels */ void adjust_staff_more_height_key (DenemoAction* action, DenemoScriptParam *param) { adjuststaffheight (Denemo.project->movement, 10); } /** * Remove selection marker */ void unset_selection_key (DenemoScriptParam *param) { Denemo.project->movement->markstaffnum = 0; } static void move_to_note_by_command (gchar note) { Denemo.project->last_source = INPUTKEYBOARD; move_to_pitch (Denemo.project, ((note + 5 - 'A') % 7)); } static void insert_note_by_command(gchar note) { Denemo.project->last_source = INPUTKEYBOARD; insert_pitch (Denemo.project, ((note + 5 - 'A') % 7)); } static void change_or_append_x_key (gint key) { //move_to_pitch (Denemo.project, key); //gint enshift = get_cursoracc();g_print ("Cursoracc for change_or_append_x_key is %d\n", enshift); Denemo.project->last_source = INPUTKEYBOARD; edit_or_append_pitch (key, FALSE); } /** * Goto the nearest a * */ void change_or_append_A_key (DenemoAction* action, DenemoScriptParam *param) { change_or_append_x_key (5); } /** * Goto the nearest b * */ void change_or_append_B_key (DenemoAction* action, DenemoScriptParam *param) { change_or_append_x_key (6); } /** * Goto the nearest c * */ void change_or_append_C_key (DenemoAction* action, DenemoScriptParam *param) { change_or_append_x_key (0); } /** * Goto the nearest d * */ void change_or_append_D_key (DenemoAction* action, DenemoScriptParam *param) { change_or_append_x_key (1); } /** * Goto the nearest e * */ void change_or_append_E_key (DenemoAction* action, DenemoScriptParam *param) { change_or_append_x_key (2); } /** * Goto the nearest f * */ void change_or_append_F_key (DenemoAction* action, DenemoScriptParam *param) { change_or_append_x_key (3); } /** * Goto the nearest g * */ void change_or_append_G_key (DenemoAction* action, DenemoScriptParam *param) { change_or_append_x_key (4); } /** * Move cursor by amount or in EDIT mode change the note by the amount */ static void octave_shift_key (DenemoScriptParam *param, gint amount) { if (((DenemoStaff *) Denemo.project->movement->currentstaff->data)->tone_store) { return; //FIXME create a function modify_tone, like delete_tone in pitchentry.c to do this sort of thing } else { if (Denemo.project->mode & (INPUTEDIT)) { if (Denemo.project->movement->currentobject) { objnode *thenote = nearestnote (Denemo.project->movement->currentobject->data, Denemo.project->movement->cursor_y); if (thenote) { note copy = *((note *) thenote->data); GList *direcs = ((note *) thenote->data)->directives; store_for_undo_change (Denemo.project->movement, Denemo.project->movement->currentobject->data); Denemo.project->movement->undo_guard++; delete_chordnote (Denemo.project); //does not delete the directives. Denemo.project->movement->cursor_y = copy.mid_c_offset + amount; insert_chordnote (Denemo.project); changeenshift (Denemo.project->movement->currentobject->data, Denemo.project->movement->cursor_y, copy.enshift); thenote = nearestnote (Denemo.project->movement->currentobject->data, Denemo.project->movement->cursor_y); if (thenote) ((note *) thenote->data)->directives = direcs; Denemo.project->movement->staffletter_y = offsettonumber (Denemo.project->movement->cursor_y); Denemo.project->movement->undo_guard--; score_status (Denemo.project, TRUE); } } } else Denemo.project->movement->cursor_y += amount; } if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); } /** * Move cursor an octave up */ void octave_up_key (DenemoAction* action, DenemoScriptParam *param) { octave_shift_key (param, 7); } /** * Move cursor an octave down */ void octave_down_key (DenemoAction* action, DenemoScriptParam *param) { octave_shift_key (param, -7); } /** * change to read only mode * only score traversal available FIXME wrong name */ void default_mode (DenemoScriptParam *param) { Denemo.project->mode ^= TRAVERSE; if (Denemo.project->mode & TRAVERSE) gtk_label_set_text (GTK_LABEL (Denemo.statuslabel), "Read Only"); g_debug ("Mode %d\n", Denemo.project->mode); displayhelper (Denemo.project); } /** * Add measure to end of staff / score */ void append_measure_key (DenemoAction* action, DenemoScriptParam *param) { appendmeasures (Denemo.project->movement, 1); } void append_measure_score (DenemoAction* action, DenemoScriptParam *param) { appendmeasurestoentirescore (Denemo.project->movement, 1); } /** * Insert measure at the current */ void insert_measure_key (DenemoAction* action, DenemoScriptParam *param) { dnm_insertmeasures (Denemo.project->movement, 1); } static void insert_chord_xdur (gint duration, DenemoScriptParam *param) { dnm_insertnote (Denemo.project, duration, Denemo.project->mode, FALSE);//gets it wrong displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } void insert_chord_0key (DenemoAction* action, DenemoScriptParam *param) { insert_chord_xdur(0, param); } void insert_chord_1key (DenemoAction* action, DenemoScriptParam *param) { insert_chord_xdur(1, param); } void insert_chord_2key (DenemoAction* action, DenemoScriptParam *param) { insert_chord_xdur(2, param); } void insert_chord_3key (DenemoAction* action, DenemoScriptParam *param) { insert_chord_xdur(3, param); } void insert_chord_4key (DenemoAction* action, DenemoScriptParam *param) { insert_chord_xdur(4, param); } void insert_chord_5key (DenemoAction* action, DenemoScriptParam *param) { insert_chord_xdur(5, param); } void insert_chord_6key (DenemoAction* action, DenemoScriptParam *param) { insert_chord_xdur(6, param); } void insert_chord_7key (DenemoAction* action, DenemoScriptParam *param) { insert_chord_xdur(7, param); } void insert_chord_8key (DenemoAction* action, DenemoScriptParam *param) { insert_chord_xdur(8, param); } void insert_rest_xkey(gint duration, DenemoScriptParam* param) { dnm_insertnote (Denemo.project, duration, INPUTREST, TRUE); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } void insert_rest_0key (DenemoAction* action, DenemoScriptParam *param) { insert_rest_xkey(0, param); } void insert_rest_1key (DenemoAction* action, DenemoScriptParam *param) { insert_rest_xkey(1, param); } void insert_rest_2key (DenemoAction* action, DenemoScriptParam *param) { insert_rest_xkey(2, param); } void insert_rest_3key (DenemoAction* action, DenemoScriptParam *param) { insert_rest_xkey(3, param); } void insert_rest_4key (DenemoAction* action, DenemoScriptParam *param) { insert_rest_xkey(4, param); } void insert_rest_5key (DenemoAction* action, DenemoScriptParam *param) { insert_rest_xkey(5, param); } void insert_rest_6key (DenemoAction* action, DenemoScriptParam *param) { insert_rest_xkey(6, param); } void insert_rest_7key (DenemoAction* action, DenemoScriptParam *param) { insert_rest_xkey(7, param); } void insert_rest_8key (DenemoAction* action, DenemoScriptParam *param) { insert_rest_xkey(8, param); } void insert_blankchord_xkey (gint duration, DenemoScriptParam *param) { dnm_insertnote (Denemo.project, duration, INPUTBLANK, FALSE); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } void insert_blankchord_0key (DenemoAction* action, DenemoScriptParam *param) { insert_blankchord_xkey(0, param); } void insert_blankchord_1key (DenemoAction* action, DenemoScriptParam *param) { insert_blankchord_xkey(1, param); } void insert_blankchord_2key (DenemoAction* action, DenemoScriptParam *param) { insert_blankchord_xkey(2, param); } void insert_blankchord_3key (DenemoAction* action, DenemoScriptParam *param) { insert_blankchord_xkey(3, param); } void insert_blankchord_4key (DenemoAction* action, DenemoScriptParam *param) { insert_blankchord_xkey(4, param); } void insert_blankchord_5key (DenemoAction* action, DenemoScriptParam *param) { insert_blankchord_xkey(5, param); } void insert_blankchord_6key (DenemoAction* action, DenemoScriptParam *param) { insert_blankchord_xkey(6, param); } void insert_blankchord_7key (DenemoAction* action, DenemoScriptParam *param) { insert_blankchord_xkey(7, param); } void insert_blankchord_8key (DenemoAction* action, DenemoScriptParam *param) { insert_blankchord_xkey(8, param); } gboolean add_note_to_chord (DenemoAction* action, DenemoScriptParam *param) { return insert_chordnote (Denemo.project); } gboolean delete_note_from_chord (DenemoAction* action, DenemoScriptParam *param) { return delete_chordnote (Denemo.project); } // Note this function is RECURSIVE. // deletes the object before the cursor. If the measure is empty it moves to the end of the previous measure and calls itself. // after deleting an object it backs-up on any rhythm pattern being followed. void deletepreviousobject (DenemoAction* action, DenemoScriptParam *param) { /* remove the object preceding the cursor, within the current measure */ if (Denemo.project->movement->cursor_x) { /* Then move the cursor back */ movecursorleft (NULL, NULL); DenemoObject *curObj = (DenemoObject*)Denemo.project->movement->currentobject->data; gboolean anote = (curObj->type == CHORD) && ((chord*)curObj->object)->notes; /* And delete */ deleteobject (NULL, NULL); /* if you are following a rhythmic pattern then backup the pattern */ if ((Denemo.project->mode & (INPUTEDIT) && Denemo.project->rstep)) { if (anote) Denemo.project->rstep = Denemo.project->rstep->prev; /* rstep list of elements is circular */ if (Denemo.project->cstep) { RhythmPattern *cursnip = (RhythmPattern *)Denemo.project->currhythm->data; Denemo.project->cstep = Denemo.project->cstep->prev ? Denemo.project->cstep->prev : g_list_last (Denemo.project->cstep);// cstep list of DenemoObjects is not circular } if (((RhythmElement *) Denemo.project->rstep->data)->highlightlabel) { RhythmPattern *cursnip = (RhythmPattern *)Denemo.project->currhythm->data; set_rhythm_label (cursnip, ((RhythmElement *) Denemo.project->rstep->data)->highlightlabel); } } } else { /* go to the previous measure, go to end of it, and start deleting there */ if (Denemo.project->movement->currentmeasure->prev) { DenemoScriptParam param; do { movetomeasureleft (NULL, ¶m); //go to end while (Denemo.project->movement->currentobject && (Denemo.project->movement->currentobject->next)) { Denemo.project->movement->currentobject = Denemo.project->movement->currentobject->next; Denemo.project->movement->cursor_x++; } } while (param.status && !Denemo.project->movement->currentobject); if (Denemo.project->movement->currentobject) { movecursorright (NULL, NULL); deletepreviousobject (NULL, NULL);//RECURSIVE!! } } } } void sharpen_note (DenemoAction* action, DenemoScriptParam *param) { incrementenshift (Denemo.project, 1); } void set_stem_up (DenemoAction* action, DenemoScriptParam *param) { DenemoObject *curmudelaobj = (DenemoObject *) (Denemo.project->movement->currentobject ? Denemo.project->movement->currentobject->data : NULL); if (curmudelaobj && curmudelaobj->type == STEMDIRECTIVE) change_stem_directive (Denemo.project->movement, DENEMO_STEMUP); } void flatten_note (DenemoAction* action, DenemoScriptParam *param) { incrementenshift (Denemo.project, -1); } void set_stem_down (DenemoAction* action, DenemoScriptParam *param) { DenemoObject *curmudelaobj = (DenemoObject *) (Denemo.project->movement->currentobject ? Denemo.project->movement->currentobject->data : NULL); if (curmudelaobj && curmudelaobj->type == STEMDIRECTIVE) change_stem_directive (Denemo.project->movement, DENEMO_STEMDOWN); } void pending_sharpen (DenemoAction* action, DenemoScriptParam *param) { Denemo.project->movement->pending_enshift++; if (Denemo.project->movement->pending_enshift > 2) Denemo.project->movement->pending_enshift = 2; displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } void pending_flatten (DenemoAction* action, DenemoScriptParam *param) { Denemo.project->movement->pending_enshift--; if (Denemo.project->movement->pending_enshift < -2) Denemo.project->movement->pending_enshift = -2; displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /* insert a duplicate note and tie to it */ void tie_notes_key (DenemoAction* action, DenemoScriptParam *param) { DenemoObject *curObj = (DenemoObject *) (Denemo.project->movement->currentobject ? Denemo.project->movement->currentobject->data : NULL); /* Equals - toggle whether this note is tied */ if (curObj && curObj->type == CHORD && ((chord *) curObj->object)->notes) { if (Denemo.project->movement->cursor_appending) { DenemoMovement *si = Denemo.project->movement; gint tickspermeasure = WHOLE_NUMTICKS * ((DenemoMeasure*)si->currentmeasure->data)->timesig->time1 / ((DenemoMeasure*)si->currentmeasure->data)->timesig->time2; si->cursoroffend = (curObj->starttickofnextnote >= tickspermeasure); insertion_point (Denemo.project->movement); object_insert (Denemo.project, dnm_clone_object (curObj)); movecursorleft (NULL, NULL); movecursorleft (NULL, NULL); toggle_tie (NULL, NULL); movecursorright (NULL, NULL); movecursorright (NULL, NULL); } else { object_insert (Denemo.project, dnm_clone_object (curObj)); movecursorleft (NULL, NULL); ((chord *) ((DenemoObject *)Denemo.project->movement->currentobject->data)->object)->is_tied = 1; movecursorright (NULL, NULL); movecursorright (NULL, NULL); } } } void add_dot_key (DenemoAction* action, DenemoScriptParam *param) { changedots (Denemo.project->movement, 1); } void remove_dot_key (DenemoAction* action, DenemoScriptParam *param) { changedots (Denemo.project->movement, -1); } void force_cautionary (DenemoAction* action, DenemoScriptParam *param) { DenemoObject *theobj = Denemo.project->movement->currentobject ? (DenemoObject *) Denemo.project->movement->currentobject->data : NULL; if (theobj && theobj->type == CHORD) caution (Denemo.project->movement); } void change_pitch (DenemoAction* action, DenemoScriptParam *param) { if (Denemo.project->mode & INPUTEDIT) { //DenemoObject *theobj = // si->currentobject ? (DenemoObject *) si->currentobject->data : NULL; delete_chordnote (Denemo.project); insert_chordnote (Denemo.project); } } /******************************************************************************* * DURATION COMMANDS ******************************************************************************/ void InsertRest(gint duration){ highlight_rest(Denemo.project, duration); dnm_insertnote (Denemo.project, duration, INPUTREST, TRUE); score_status(Denemo.project, TRUE); displayhelper(Denemo.project); } void InsertDur(gint duration){ highlight_duration(Denemo.project, duration); dnm_insertnote (Denemo.project, duration, INPUTNORMAL, FALSE); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } void ChangeDur(gint duration){ gboolean appending = Denemo.project->movement->cursor_appending; if(appending) movecursorleft(NULL, NULL); change_duration(duration); if(appending) movecursorright(NULL, NULL); score_status(Denemo.project, TRUE); displayhelper(Denemo.project); } void SetDur(gint duration){ highlight_duration(Denemo.project, duration); } //called by the commands (d-0) (d-1) etc static void Dur (gint duration) { insert_chord_xdur(duration, NULL); highlight_duration(Denemo.project, duration); score_status(Denemo.project, TRUE); displayhelper(Denemo.project); } /******************************************************************************* * NOTE COMMANDS ******************************************************************************/ static change_note_to (gchar note)//CHECK executing (d-ChangeToA) { gint mode = Denemo.project->mode; Denemo.project->last_source = INPUTKEYBOARD; edit_or_append_pitch (((note + 5 - 'A') % 7), FALSE); Denemo.project->mode = mode; } void ChangeTo(gchar note){ gboolean appending = Denemo.project->movement->cursor_appending; if(appending) movecursorleft(NULL, NULL); change_note_to (note); if(appending) movecursorright(NULL, NULL); score_status(Denemo.project, TRUE); displayhelper(Denemo.project); } void MoveTo(gchar note){ move_to_note_by_command (note); displayhelper(Denemo.project); } void Insert(gchar note){ insert_note_by_command (note); score_status(Denemo.project, TRUE); displayhelper(Denemo.project); } void AddNote(gchar note){ movecursorright(NULL, NULL); insert_note_by_command (note); movecursorleft(NULL, NULL); score_status(Denemo.project, TRUE); displayhelper(Denemo.project); } void Add(gchar note){ //AddA etc Denemo.project->last_source = INPUTKEYBOARD; move_to_pitch (Denemo.project, ((note + 5 - 'A') % 7)); insert_chordnote (Denemo.project); score_status(Denemo.project, TRUE); displayhelper(Denemo.project); } void Dur0(DenemoAction *action, gpointer param) { Dur(0); } void ChangeDur0(DenemoAction *action, gpointer param){ ChangeDur(0); } void InsertDur0(DenemoAction *action, gpointer param){ InsertDur(0); } void InsertRest0(DenemoAction *action, gpointer param){ InsertRest(0); } void SetDur0(DenemoAction *action, gpointer param){ SetDur(0); } void Dur1(DenemoAction *action, gpointer param) { Dur(1); } void ChangeDur1(DenemoAction *action, gpointer param){ ChangeDur(1); } void InsertDur1(DenemoAction *action, gpointer param){ InsertDur(1); } void InsertRest1(DenemoAction *action, gpointer param){ InsertRest(1); } void SetDur1(DenemoAction *action, gpointer param){ SetDur(1); } void Dur2(DenemoAction *action, gpointer param) { Dur(2); } void ChangeDur2(DenemoAction *action, gpointer param){ ChangeDur(2); } void InsertDur2(DenemoAction *action, gpointer param){ InsertDur(2); } void InsertRest2(DenemoAction *action, gpointer param){ InsertRest(2); } void SetDur2(DenemoAction *action, gpointer param){ SetDur(2); } void Dur3(DenemoAction *action, gpointer param) { Dur(3); } void ChangeDur3(DenemoAction *action, gpointer param){ ChangeDur(3); } void InsertDur3(DenemoAction *action, gpointer param){ InsertDur(3); } void InsertRest3(DenemoAction *action, gpointer param){ InsertRest(3); } void SetDur3(DenemoAction *action, gpointer param){ SetDur(3); } void Dur4(DenemoAction *action, gpointer param) { Dur(4); } void ChangeDur4(DenemoAction *action, gpointer param){ ChangeDur(4); } void InsertDur4(DenemoAction *action, gpointer param){ InsertDur(4); } void InsertRest4(DenemoAction *action, gpointer param){ InsertRest(4); } void SetDur4(DenemoAction *action, gpointer param){ SetDur(4); } void Dur5(DenemoAction *action, gpointer param) { Dur(5); } void ChangeDur5(DenemoAction *action, gpointer param){ ChangeDur(5); } void InsertDur5(DenemoAction *action, gpointer param){ InsertDur(5); } void InsertRest5(DenemoAction *action, gpointer param){ InsertRest(5); } void SetDur5(DenemoAction *action, gpointer param){ SetDur(5); } void Dur6(DenemoAction *action, gpointer param) { Dur(6); } void ChangeDur6(DenemoAction *action, gpointer param){ ChangeDur(6); } void InsertDur6(DenemoAction *action, gpointer param){ InsertDur(6); } void InsertRest6(DenemoAction *action, gpointer param){ InsertRest(6); } void SetDur6(DenemoAction *action, gpointer param){ SetDur(6); } void Dur7(DenemoAction *action, gpointer param) { Dur(7); } void ChangeDur7(DenemoAction *action, gpointer param){ ChangeDur(7); } void InsertDur7(DenemoAction *action, gpointer param){ InsertDur(7); } void InsertRest7(DenemoAction *action, gpointer param){ InsertRest(7); } void SetDur7(DenemoAction *action, gpointer param){ SetDur(7); } void Dur8(DenemoAction *action, gpointer param) { Dur(8); } void ChangeDur8(DenemoAction *action, gpointer param){ ChangeDur(8); } void InsertDur8(DenemoAction *action, gpointer param){ InsertDur(8); } void InsertRest8(DenemoAction *action, gpointer param){ InsertRest(8); } void SetDur8(DenemoAction *action, gpointer param){ SetDur(8); } void InsertA(DenemoAction *action, gpointer param){ Insert('A'); } void AddNoteA(DenemoAction *action, gpointer param){ AddNote('A'); } void AddA(DenemoAction *action, gpointer param){ Add('A'); } void ChangeToA(DenemoAction *action, gpointer param){ ChangeTo('A'); } void MoveToA(DenemoAction *action, gpointer param){ MoveTo('A'); } void InsertB(DenemoAction *action, gpointer param){ Insert('B'); } void AddNoteB(DenemoAction *action, gpointer param){ AddNote('B'); } void AddB(DenemoAction *action, gpointer param){ Add('B'); } void ChangeToB(DenemoAction *action, gpointer param){ ChangeTo('B'); } void MoveToB(DenemoAction *action, gpointer param){ MoveTo('B'); } void InsertC(DenemoAction *action, gpointer param){ Insert('C'); } void AddNoteC(DenemoAction *action, gpointer param){ AddNote('C'); } void AddC(DenemoAction *action, gpointer param){ Add('C'); } void ChangeToC(DenemoAction *action, gpointer param){ ChangeTo('C'); } void MoveToC(DenemoAction *action, gpointer param){ MoveTo('C'); } void InsertD(DenemoAction *action, gpointer param){ Insert('D'); } void AddNoteD(DenemoAction *action, gpointer param){ AddNote('D'); } void AddD(DenemoAction *action, gpointer param){ Add('D'); } void ChangeToD(DenemoAction *action, gpointer param){ ChangeTo('D'); } void MoveToD(DenemoAction *action, gpointer param){ MoveTo('D'); } void InsertE(DenemoAction *action, gpointer param){ Insert('E'); } void AddNoteE(DenemoAction *action, gpointer param){ AddNote('E'); } void AddE(DenemoAction *action, gpointer param){ Add('E'); } void ChangeToE(DenemoAction *action, gpointer param){ ChangeTo('E'); } void MoveToE(DenemoAction *action, gpointer param){ MoveTo('E'); } void InsertF(DenemoAction *action, gpointer param){ Insert('F'); } void AddNoteF(DenemoAction *action, gpointer param){ AddNote('F'); } void AddF(DenemoAction *action, gpointer param){ Add('F'); } void ChangeToF(DenemoAction *action, gpointer param){ ChangeTo('F'); } void MoveToF(DenemoAction *action, gpointer param){ MoveTo('F'); } void InsertG(DenemoAction *action, gpointer param){ Insert('G'); } void AddNoteG(DenemoAction *action, gpointer param){ AddNote('G'); } void AddG(DenemoAction *action, gpointer param){ Add('G'); } void ChangeToG(DenemoAction *action, gpointer param){ ChangeTo('G'); } void MoveToG(DenemoAction *action, gpointer param){ MoveTo('G'); } denemo-2.2.0/src/command/PaxHeaders.19168/object.h0000644000000000000000000000013213135434036016355 xustar0030 mtime=1500919838.339981805 30 atime=1500919918.309981805 30 ctime=1500919914.133315139 denemo-2.2.0/src/command/object.h0000644000175000017500000000227413135434036020233 0ustar00jjbenhamjjbenham00000000000000/* object.h * header file for operations to objects * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #ifndef OBJOPS_H #define OBJOPS_H #include DenemoObject *get_object (void); void freeobject (DenemoObject * mudobj); void display_current_object (void); void update_object_info (void); void edit_object (void); void edit_score_properties (void); void edit_movement_properties (void); void edit_staff_properties (void); void edit_voice_properties (void); void set_modeaccs (gint * accs, gint number, gint mode); void initkeyaccs (gint * accs, gint number); //void dnm_setinitialkeysig (DenemoStaff * curstaff, gint tokey, gint type); DenemoObject *newmeasurebreakobject (); DenemoObject *newstaffbreakobject (); DenemoObject *lily_directive_new (gchar * type); DenemoObject *directive_object_new (DenemoDirective * directive); DenemoObject *dynamic_new (gchar * type); DenemoDirective *clone_directive (DenemoDirective * directive); GList *clone_directives (GList * directives); void free_directives (GList * directives); void free_directive (DenemoDirective * directive); void free_directive_data (DenemoDirective * directive); #endif denemo-2.2.0/src/command/PaxHeaders.19168/keysig.c0000644000000000000000000000013213135434036016375 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.309981805 30 ctime=1500919914.119981805 denemo-2.2.0/src/command/keysig.c0000644000175000017500000001654413135434036020260 0ustar00jjbenhamjjbenham00000000000000#include "keysig.h" #include "command/commandfuncs.h" #include "command/object.h" #include "core/utils.h" /** * Create a new keysignature object * * @param number number of keysignature * @param isminor signifies if the key sig should be minor * @param mode description of the keys mode * @return the key signature */ DenemoObject * dnm_newkeyobj (gint number, gint isminor, gint mode) { DenemoObject *ret; keysig *key_sig = (keysig *) g_malloc (sizeof (keysig)); ret = (DenemoObject *) g_malloc0 (sizeof (DenemoObject)); ret->type = KEYSIG; ret->isinvisible = FALSE; g_debug ("Number %d \t IsMinor %d \t Mode %d\n", number, isminor, mode); key_sig->mode = mode; key_sig->number = number; key_sig->isminor = isminor; if (isminor == 2) set_modeaccs (key_sig->accs, number, mode); else initkeyaccs (key_sig->accs, number); ret->object = key_sig; set_basic_numticks (ret); setpixelmin (ret); return ret; } void keysig_new_maj(gint number){ object_insert (Denemo.project, dnm_newkeyobj (number, 1, 0)); } void keysig_new_cmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(0); } void keysig_new_gmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(1); } void keysig_new_dmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(2); } void keysig_new_amaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(3); } void keysig_new_emaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(4); } void keysig_new_bmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(5); } void keysig_new_fsharpmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(6); } void keysig_new_csharpmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(7); } void keysig_new_fmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(-1); } void keysig_new_bflatmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(-2); } void keysig_new_eflatmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(-3); } void keysig_new_aflatmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(-4); } void keysig_new_dflatmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(-5); } void keysig_new_gflatmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(-6); } void keysig_new_cflatmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_new_maj(-7); } void keysig_new_min(gint number) { object_insert (Denemo.project, dnm_newkeyobj (number, 0, 0)); } void keysig_new_amin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (0); } void keysig_new_emin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (1); } void keysig_new_bmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (2); } void keysig_new_fsharpmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (3); } void keysig_new_csharpmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (4); } void keysig_new_gsharpmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (5); } void keysig_new_dsharpmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (6); } void keysig_new_asharpmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (7); } void keysig_new_dmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (-1); } void keysig_new_gmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (-2); } void keysig_new_cmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (-3); } void keysig_new_fmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (-4); } void keysig_new_bflatmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (-5); } void keysig_new_eflatmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (-6); } void keysig_new_aflatmin (DenemoAction* action, DenemoScriptParam *param) { keysig_new_min (-7); } //Functions to set the initial key signature void keysig_set_maj(gint number) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; dnm_setinitialkeysig (curstaff, number, 1); } void keysig_set_cmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (0); } void keysig_set_gmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (1); } void keysig_set_dmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (2); } void keysig_set_amaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (3); } void keysig_set_emaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (4); } void keysig_set_bmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (5); } void keysig_set_fsharpmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (6); } void keysig_set_csharpmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (7); } void keysig_set_fmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (-1); } void keysig_set_bflatmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (-2); } void keysig_set_eflatmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (-3); } void keysig_set_aflatmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (-4); } void keysig_set_dflatmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (-5); } void keysig_set_gflatmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (-6); } void keysig_set_cflatmaj (DenemoAction* action, DenemoScriptParam *param) { keysig_set_maj (-7); } void keysig_set_min(gint number) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; dnm_setinitialkeysig (curstaff, number, 0); } void keysig_set_amin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (0); } void keysig_set_emin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (1); } void keysig_set_bmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (2); } void keysig_set_fsharpmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (3); } void keysig_set_csharpmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (4); } void keysig_set_gsharpmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (5); } void keysig_set_dsharpmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (6); } void keysig_set_asharpmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (7); } void keysig_set_dmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (-1); } void keysig_set_gmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (-2); } void keysig_set_cmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (-3); } void keysig_set_fmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (-4); } void keysig_set_bflatmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (-5); } void keysig_set_eflatmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (-6); } void keysig_set_aflatmin (DenemoAction* action, DenemoScriptParam *param) { keysig_set_min (-7); } denemo-2.2.0/src/command/PaxHeaders.19168/clef.c0000644000000000000000000000013213135434036016013 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.316648472 30 ctime=1500919914.099981805 denemo-2.2.0/src/command/clef.c0000644000175000017500000001027513135434036017671 0ustar00jjbenhamjjbenham00000000000000#include "command/clef.h" #include "command/commandfuncs.h" #include "core/utils.h" /** * Create a new clef object * @param type clef type to create * * @return the clef */ DenemoObject * clef_new (enum clefs type) { DenemoObject *ret; clef *newclef = (clef *) g_malloc (sizeof (clef)); ret = (DenemoObject *) g_malloc (sizeof (DenemoObject)); ret->type = CLEF; newclef->type = type; ret->object = newclef; set_basic_numticks (ret); setpixelmin (ret); return ret; } /** * Wrapper function to create new treble clef and insert into the score */ void clef_new_treble (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, clef_new (DENEMO_TREBLE_CLEF)); } /** * Wrapper function to create new bass clef and insert into the score */ void clef_new_bass (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, clef_new (DENEMO_BASS_CLEF)); } /** * Wrapper function to create new alto clef and insert into the score */ void clef_new_alto (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, clef_new (DENEMO_ALTO_CLEF)); } /** * Wrapper function to create new treble_8 clef and insert into the score */ void clef_new_g8 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, clef_new (DENEMO_G_8_CLEF)); } /** * Wrapper function to create new bass_8 clef and insert into the score */ void clef_new_f8 (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, clef_new (DENEMO_F_8_CLEF)); } /** * Wrapper function to create new tenor clef and insert into the score */ void clef_new_tenor (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, clef_new (DENEMO_TENOR_CLEF)); } /** * Wrapper function to create new soprano clef and insert into the score */ void clef_new_soprano (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, clef_new (DENEMO_SOPRANO_CLEF)); } /** * Wrapper function to create new french clef and insert into the score */ void clef_new_french (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, clef_new (DENEMO_FRENCH_CLEF)); } void clef_set_treble (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialclef (Denemo.project->movement, curstaff, DENEMO_TREBLE_CLEF); } void clef_set_bass (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialclef (Denemo.project->movement, curstaff, DENEMO_BASS_CLEF); } void clef_set_g8 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialclef (Denemo.project->movement, curstaff, DENEMO_G_8_CLEF); } void clef_set_f8 (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialclef (Denemo.project->movement, curstaff, DENEMO_F_8_CLEF); } void clef_set_alto (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialclef (Denemo.project->movement, curstaff, DENEMO_ALTO_CLEF); } void clef_set_tenor (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialclef (Denemo.project->movement, curstaff, DENEMO_TENOR_CLEF); } void clef_set_soprano (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialclef (Denemo.project->movement, curstaff, DENEMO_SOPRANO_CLEF); } void clef_set_french (DenemoAction* action, DenemoScriptParam *param) { DenemoStaff *curstaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (curstaff) dnm_setinitialclef (Denemo.project->movement, curstaff, DENEMO_FRENCH_CLEF); } denemo-2.2.0/src/command/PaxHeaders.19168/commandfuncs.h0000644000000000000000000000013213135434036017564 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.326648473 30 ctime=1500919914.103315139 denemo-2.2.0/src/command/commandfuncs.h0000644000175000017500000001433213135434036021440 0ustar00jjbenhamjjbenham00000000000000/* commandfuncs.h * header file for functions invoked by user keypresses * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #ifndef COMMANDFUNCSH #define COMMANDFUNCSH #include void nudgerightward (DenemoProject * gui); void nudge_downward (DenemoProject * gui); void set_width_to_work_with (DenemoProject * gui); void adjustmeasurewidth (DenemoMovement * si, gint amount); void setcurrents (DenemoMovement * si); void adjuststaffheight (DenemoMovement * si, gint amount); void measureleft (DenemoAction * action, DenemoScriptParam * param); void measureright (DenemoAction * action, DenemoScriptParam * param); void movetomeasureleft (DenemoAction * action, DenemoScriptParam * param); void movetomeasureright (DenemoAction * action, DenemoScriptParam * param); void movetostart (DenemoAction * action, DenemoScriptParam * param); void movetoend (DenemoAction * action, DenemoScriptParam * param); gboolean swapstaffs (DenemoAction * action, DenemoScriptParam * param); gboolean splitstaffs (DenemoAction * action, DenemoScriptParam * param); gboolean joinstaffs (DenemoAction * action, DenemoScriptParam * param); gboolean swapmovements (DenemoAction * action, DenemoScriptParam * param); gboolean staffup (DenemoAction * action, DenemoScriptParam * param); gboolean staffdown (DenemoAction * action, DenemoScriptParam * param); gboolean movetostaffup (DenemoAction * action, DenemoScriptParam * param); gboolean movetostaffdown (DenemoAction * action, DenemoScriptParam * param); gboolean voiceup (DenemoAction * action, DenemoScriptParam * param); gboolean voicedown (DenemoAction * action, DenemoScriptParam * param); gboolean movetovoiceup (DenemoAction * action, DenemoScriptParam * param); gboolean movetovoicedown (DenemoAction * action, DenemoScriptParam * param); gboolean cursorleft (DenemoAction * action, DenemoScriptParam * param); gboolean cursorright (DenemoAction * action, DenemoScriptParam * param); gboolean movecursorleft (DenemoAction * action, DenemoScriptParam * param); gboolean movecursorright (DenemoAction * action, DenemoScriptParam * param); gboolean cursor_to_next_object (gboolean within_measure, gboolean stopping_at_empty); gboolean cursor_to_prev_object (gboolean within_measure, gboolean stopping_at_empty); gboolean cursor_to_next_selected_object (void); gboolean cursor_to_prev_selected_object (void); gboolean cursor_to_next_standalone_directive (void); gboolean cursor_to_prev_standalone_directive (void); gboolean cursor_to_next_standalone_in_measure (void); gboolean cursor_to_prev_standalone_in_measure (void); gboolean cursor_to_next_chord (void); gboolean cursor_to_prev_chord (void); gboolean cursor_to_next_chord_in_measure (void); gboolean cursor_to_prev_chord_in_measure (void); gboolean cursor_to_next_note (void); gboolean cursor_to_prev_note (void); gboolean cursor_to_nth_note_height(gint n); gboolean cursor_to_next_note_height (void); void cursorup (DenemoAction * action, DenemoScriptParam * param); void cursordown (DenemoAction * action, DenemoScriptParam * param); void change_duration (gint duration); void edit_or_append_pitch (gint note_value, gboolean absolute); void insert_pitch (DenemoProject * gui, gint note_value); void move_to_pitch (DenemoProject * gui, gint note_value); void setenshift (DenemoMovement * si, gint enshift); void changeduration (DenemoMovement * si, gint duration); gboolean delete_chordnote (DenemoProject * gui); gboolean insert_chordnote (DenemoProject * gui); gboolean insert_or_delete_chordnote (gint enshift); void incrementenshift (DenemoProject * gui, gint direction); void change_stem_directive (DenemoMovement * si, enum stemdirections amount); void changedots (DenemoMovement * si, gint amount); void appendmeasures (DenemoMovement * si, gint number); void insertclone (DenemoProject * gui); void toend (DenemoAction * action, DenemoScriptParam * param); void tohome (DenemoAction * action, DenemoScriptParam * param); void inserttuplet (DenemoMovement * si, tuplet_type type); void object_insert (DenemoProject * gui, DenemoObject * mudela_obj_new); void stem_directive_insert (DenemoAction * action, DenemoScriptParam * param); void toggle_begin_slur (DenemoAction * action, DenemoScriptParam* param); void toggle_end_slur (DenemoAction * action, DenemoScriptParam* param); void insertgrace (DenemoProject * gui); void toggle_start_crescendo (DenemoAction * action, DenemoScriptParam* param); void toggle_end_crescendo (DenemoAction * action, DenemoScriptParam* param); void toggle_start_diminuendo (DenemoAction * action, DenemoScriptParam* param); void toggle_end_diminuendo (DenemoAction * action, DenemoScriptParam* param); void insertion_point (DenemoMovement * si); void insertion_point_for_type (DenemoMovement * si, DenemoObjType type); void caution (DenemoMovement * si); void displayhelper (DenemoProject * si); gboolean auto_save_document_timeout (DenemoProject * gui); void delete_staff_current (DenemoAction * action, DenemoScriptParam * param); void delete_staff_before (DenemoAction * action, DenemoScriptParam * param); void delete_staff_after (DenemoAction * action, DenemoScriptParam * param); void appendmeasurestoentirescore (DenemoMovement * si, gint number); void insertmeasureafter (DenemoAction* action, DenemoScriptParam* param); void addmeasureafter (DenemoAction* action, DenemoScriptParam* param); void insertmeasurebefore (DenemoAction* action, DenemoScriptParam* param); void deletemeasure (DenemoAction* action, DenemoScriptParam* param); void deletemeasureallstaffs (DenemoAction* action, DenemoScriptParam* param); void deleteobject (DenemoAction* action, DenemoScriptParam* param); void insert_note_following_pattern (DenemoProject * gui); void beamandstemdirhelper (DenemoMovement * si); void nextrhythm (DenemoAction* action, DenemoScriptParam* param); void insert_rhythm_pattern (DenemoAction* action, DenemoScriptParam* param); void toggle_tie (DenemoAction * action, DenemoScriptParam * param); gint get_prevailing_duration (void); void dnm_inserttuplet (DenemoProject * gui, tuplet_type type); gboolean next_editable_note (void); gboolean next_insert_or_editable_note (void); gboolean insert_marked_midi_note (void); void insert_chord (GList *note_data, gint duration); #endif /*COMMANDFUNCSH */ denemo-2.2.0/src/command/PaxHeaders.19168/object.c0000644000000000000000000000013213135434036016350 xustar0030 mtime=1500919838.339981805 30 atime=1500919918.333315139 30 ctime=1500919914.129981805 denemo-2.2.0/src/command/object.c0000644000175000017500000035502013135434036020226 0ustar00jjbenhamjjbenham00000000000000/* object.c * functions that do operations to DenemoObjects * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #include #include "command/chord.h" #include "core/utils.h" #include "core/kbd-custom.h" #include "core/menusystem.h" #include "command/commandfuncs.h" #include "command/object.h" #include "command/staff.h" #include "command/tuplet.h" #include "command/select.h" #include "audio/pitchentry.h" #include "core/utils.h" #include "core/view.h" #include "command/lilydirectives.h" #include "command/scorelayout.h" #include typedef enum DIRECTIVE_TYPE { DIRECTIVE_OBJECT = 0, DIRECTIVE_SCORE = 1, DIRECTIVE_MOVEMENT = 2, DIRECTIVE_STAFF = 3, DIRECTIVE_VOICE = 4, DIRECTIVE_KEYSIG = 5, DIRECTIVE_TIMESIG = 6, DIRECTIVE_CLEF = 7} DIRECTIVE_TYPE; static GList *OldCurrentObject; //current object when object editor was left static GtkWidget *TheEditorWidget = NULL; static GtkWidget *ObjectInfo = NULL; static void edit_staff_and_voice_properties (gboolean show_staff); void initkeyaccs (gint * accs, gint number); DenemoObject * get_object (void) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; return (DenemoObject *) si->currentobject ? (DenemoObject *) si->currentobject->data : NULL; } /** * Free the given object * @param mudobj the DenemoObject to free FIXME is this failing to free the object field??? */ void freeobject (DenemoObject * mudobj) { if (mudobj == NULL) return; if (mudobj->lilypond) g_free (mudobj->lilypond); switch (mudobj->type) { case CHORD: freechord (mudobj); /* Which also frees mudobj itself */ break; case CLEF: free_directives (((clef *) mudobj->object)->directives); g_free (mudobj->object); g_free (mudobj); break; case KEYSIG: free_directives (((keysig *) mudobj->object)->directives); g_free (mudobj->object); g_free (mudobj); break; case TIMESIG: free_directives (((timesig *) mudobj->object)->directives); g_free (mudobj->object); g_free (mudobj); break; case TUPOPEN: case TUPCLOSE: free_directives (((tuplet *) mudobj->object)->directives); g_free (mudobj->object); g_free (mudobj); break; default: g_free (mudobj); break; } } /* drop display full information about the object at the cursor */ static gboolean drop_object_info (void) { if (ObjectInfo) gtk_widget_hide (ObjectInfo); return TRUE; } /* display full information about the object at the cursor if Inspector is open*/ void update_object_info (void) { if (ObjectInfo && gtk_widget_get_visible (ObjectInfo)) display_current_object (); } static void append_directives_information (GString * selection, GList * directives) { gboolean first = TRUE; do { DenemoDirective *directive = directives->data; if (directive->tag == NULL) directive->tag = g_string_new (""); //shouldn't happen const gchar *label = get_label_for_command (directive->tag->str); const gchar *menupath = get_menu_path_for_command (directive->tag->str); const gchar *tooltip = get_tooltip_for_command (directive->tag->str); if (tooltip == NULL) tooltip = _("No tooltip"); if (directive->tag == NULL) directive->tag = g_string_new (""); //shouldn't happen gchar *label_e = label ? g_markup_escape_text (label, -1) : g_markup_escape_text (directive->tag->str, -1); if (!first) g_string_append (selection, "\n---------------------------------------------------------\n"); else g_string_append (selection, "\n---------------------------------------------------------\n"); first = FALSE; if (label) g_string_append_printf (selection, _("Directive for command: \"%s\"\n"), label_e); else g_string_append_printf (selection, _("Directive tagged: \"%s\"\n"), label_e); g_free (label_e); if (menupath) { gchar *menupath_e = g_markup_escape_text (menupath, -1); g_string_append_printf (selection, _("Menu location for this command: \"%s\"\n"), menupath_e); g_free (menupath_e); } if (tooltip) { gchar *tooltip_e = g_markup_escape_text (tooltip, -1); g_string_append_printf (selection, _("The help for the command that created this directive is:\n\"%s\"\n"), tooltip_e); g_free (tooltip_e); } if (directive->prefix) { gchar *lily = g_markup_escape_text (directive->prefix->str, -1); g_string_append_printf (selection, _("LilyPond inserted in prefix to this object is \"%s\"\n"), lily); g_free (lily); } if (directive->postfix) { gchar *lily = g_markup_escape_text (directive->postfix->str, -1); g_string_append_printf (selection, _("LilyPond inserted in postfix to this object is \"%s\"\n"), lily); g_free (lily); } if (directive->layouts && (directive->flag == DENEMO_IGNORE_FOR_LAYOUTS)) g_string_append (selection, _("THIS DIRECTIVE IS IGNORED FOR SOME LAYOUTS\n")); else if (directive->layouts && (directive->flag == DENEMO_ALLOW_FOR_LAYOUTS)) g_string_append (selection, _("THIS DIRECTIVE ONLY FOR SOME LAYOUTS\n")); if (!directives->next) g_string_append (selection, "---------------------------------------------------------"); } while (directives->next && (directives = directives->next)); g_string_append (selection, "\n"); } static void append_lilypond (DenemoObject * curObj, GString * selection) { DenemoProject *gui = Denemo.project; if (gui->lilysync != gui->changecount) refresh_lily_cb (NULL, gui); //if(curObj->lilypond)g_print ("lili |%s|\n", curObj->lilypond); if (curObj->lilypond && *curObj->lilypond) g_string_append_printf (selection, _("The LilyPond syntax generated is: \"%s\"\n"), g_markup_escape_text (curObj->lilypond, -1)); else g_string_append_printf (selection, _("This object does not affect the music typesetting, (no LilyPond syntax is generated)\n")); } static gint gcd384 (gint n) { gint remainder, m = 384; while (n != 0) { remainder = m % n; m = n; n = remainder; } return m; } static void reset_cursors (void) { gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), Denemo.GDK_LEFT_PTR); if (ObjectInfo) gdk_window_set_cursor (gtk_widget_get_window (ObjectInfo), Denemo.GDK_LEFT_PTR); if (Denemo.printarea && gtk_widget_get_window (Denemo.printarea)) gdk_window_set_cursor (gtk_widget_get_window (Denemo.printarea), Denemo.GDK_LEFT_PTR); } static void move_to_next_note (GtkWidget * editwin) { if (!cursor_to_next_note_height ()) cursor_to_nth_note_height (0); if (editwin) { gtk_widget_destroy (editwin); reset_cursors (); edit_object (); } } static void go_left (GtkWidget * editwin) { cursor_to_prev_object (FALSE, FALSE); if (Denemo.project->movement->currentobject == NULL) { cursor_to_next_object (FALSE, FALSE); warningdialog (_("Preceding measures are empty")); } if (editwin) { gtk_widget_destroy (editwin); reset_cursors (); edit_object (); } } static void go_right (GtkWidget * editwin) { cursor_to_next_object (FALSE, FALSE); if (Denemo.project->movement->currentobject == NULL) { cursor_to_prev_object (FALSE, FALSE); warningdialog (_("Subsequent measures are empty")); } if (editwin) { gtk_widget_destroy (editwin); reset_cursors (); edit_object (); } } //swap element node with following element static void swap_notes (GList *node) { gpointer temp; temp = node->data; node->data = node->next->data; node->next->data = temp; } static void swap_notes_for_inspector (GList *node) { swap_notes (node); update_object_info (); } static void swap_notes_for_edit (GList *node) { gtk_widget_destroy (TheEditorWidget); TheEditorWidget = NULL; swap_notes (node); edit_object (); } static void create_palette_button_for_clone (void) { call_out_to_guile ("(d-CreateButtonForObject)"); } static gint display_timeout_id = 0; //timeout to avoid calling display_current_object() repeatedly during rapid changes/entry of music static gboolean display_current_object_callback (void) { DenemoProject *gui = Denemo.project; if (Denemo.project->movement == NULL) return FALSE; gchar *type = "object"; if (ObjectInfo == NULL) { ObjectInfo = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (ObjectInfo), _("Denemo Object Inspector")); g_signal_connect (G_OBJECT (ObjectInfo), "delete-event", G_CALLBACK (drop_object_info), NULL); // gtk_window_set_keep_above (GTK_WINDOW (ObjectInfo), TRUE); gtk_window_set_default_size (GTK_WINDOW (ObjectInfo), 400, 400); gtk_window_set_accept_focus (GTK_WINDOW (ObjectInfo), FALSE); } else { gtk_widget_destroy (gtk_bin_get_child (GTK_BIN (ObjectInfo))); } GtkWidget *vbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (ObjectInfo), vbox); if (gui->movement->currentobject == NULL) { GtkWidget *label = gtk_label_new ("The cursor is in an empty measure.\n" "As a special case this will be typeset as a non-printing whole measure rest.\n" "Note that if you put anything at all in this measure\n" "you must insert a real whole measure rest if that is what you want."); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0); } else { DenemoObject *curObj = gui->movement->currentobject->data; if (curObj->type == CHORD) { chord *thechord = ((chord *) curObj->object); if (thechord->notes) { note *thenote = findnote (curObj, Denemo.project->movement->cursor_y); GtkWidget *button = gtk_button_new_with_label (thechord->notes->next ? _("Inspect next note in chord") : _("Inspect the note")); gtk_widget_set_sensitive (button, ((!thenote) || thechord->notes->next || (Denemo.project->movement->cursor_y != thenote->mid_c_offset))); g_signal_connect_swapped (button, "clicked", G_CALLBACK (move_to_next_note), NULL); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, TRUE, 0); GList * notenode = g_list_find (thechord->notes, thenote); if (notenode->next) { note *nextnote = notenode->next->data; if (thenote->mid_c_offset == nextnote->mid_c_offset) { GtkWidget *button = gtk_button_new_with_label ( _("Alternate note at cursor")); g_signal_connect_swapped (button, "clicked", G_CALLBACK (swap_notes_for_inspector), notenode); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, TRUE, 0); } } } } GtkWidget *edit_button = gtk_button_new_with_label (_("Run the Object Editor")); g_signal_connect (edit_button, "clicked", G_CALLBACK (edit_object), NULL); gtk_box_pack_start (GTK_BOX (vbox), edit_button, FALSE, TRUE, 0); if ((curObj->type == CHORD) || (curObj->type == LILYDIRECTIVE) || (curObj->type == CLEF) || (curObj->type == KEYSIG) || (curObj->type == TIMESIG) || (curObj->type == TUPOPEN) || (curObj->type == TUPCLOSE)) { GtkWidget *clone_button = gtk_button_new_with_label (_("Create Button for Clone")); g_signal_connect (clone_button, "clicked", G_CALLBACK (create_palette_button_for_clone), NULL); gtk_box_pack_start (GTK_BOX (vbox), clone_button, FALSE, TRUE, 0); } GString *selection = g_string_new (gui->movement->cursor_appending ? _("The cursor is in the appending position after ") : _("The cursor is on ")); GString *warning = g_string_new (""); switch (curObj->type) { case CHORD: { chord *thechord = ((chord *) curObj->object); if (thechord->notes) { if (thechord->notes->next) { type = _("chord"); selection = g_string_append (selection, _("a chord.\n")); } else { type = _("note"); selection = g_string_append (selection, _("a one-note chord.\n")); } if (thechord->slur_begin_p) selection = g_string_append (selection, _("A slur starts from here.\n" "There should be a matching end slur later.\n")); if (thechord->slur_end_p) selection = g_string_append (selection, _("A slur ends here\n" "There should be a matching start slur earlier.\n")); if (thechord->is_tied) selection = g_string_append (selection, _("This is tied to the following note or chord.\n" "The following note or chord should have the same pitch\n")); if (thechord->crescendo_begin_p) selection = g_string_append (selection, _("This note begins a crescendo. Use the Right Click → Dynamics menu to control this.\n")); if (thechord->crescendo_end_p) selection = g_string_append (selection, _("This note ends a crescendo. Use the Right Click → Dynamics menu to control this.\n")); if (thechord->diminuendo_begin_p) selection = g_string_append (selection, _("This note begins a diminuendo. Use the Right Click → Dynamics menu to control this.\n")); if (thechord->diminuendo_end_p) selection = g_string_append (selection, _("This note ends a diminuendo. Use the Right Click → Dynamics menu to control this.\n")); if (thechord->is_grace && !(thechord->is_grace & GRACED_NOTE)) selection = g_string_append (selection, _("This is an acciaccatura note\n")); if (thechord->is_grace & GRACED_NOTE) selection = g_string_append (selection, _("This is an appoggiatura note\n")); if (curObj->isinvisible) selection = g_string_append (selection, _("This note denotes a rhythm - use a MIDI keyboard to add pitches by playing.\n")); if (thechord->fakechord) g_string_append_printf (selection, _("A Chord Symbol \"%s\" is attached to this note.\n"), ((GString *) thechord->fakechord)->str); if (thechord->figure) g_string_append_printf (selection, _("A Bass Figure \"%s\" is attached to this note.\n"), ((GString *) thechord->figure)->str); note *thenote = findnote (curObj, gui->movement->cursor_y); if (thenote && gui->movement->cursor_y == thenote->mid_c_offset) { g_string_append_printf (selection, _("Within the chord the cursor is on the note %s \n"), pretty_name (mid_c_offsettolily (thenote->mid_c_offset, thenote->enshift))); if (thenote->directives) { selection = g_string_append (selection, _("Attached to this note:")); append_directives_information (selection, thenote->directives); } } if ((thechord->notes->next) && curObj->isinvisible) warning = g_string_append (warning, _("This rhythm has extra notes added to it, delete them and use the foot-pedal or Alt key to enter chords with the MIDI controller.\n")); } else { type = _("rest"); selection = g_string_append (selection, _("a rest.\n")); if (thechord->slur_begin_p) warning = g_string_append (warning, _("This rest has a slur start on it, use the Right Click → Slurs menu to remove it\n")); if (thechord->slur_end_p) warning = g_string_append (warning, _("This rest has a slur end on it, use the Right Click → Slurs menu to remove it\n")); if (thechord->is_tied) warning = g_string_append (warning, _("This rest has a tie starting on it, use the Right Click → Tied Note to remove it\n")); if (curObj->isinvisible) selection = g_string_append (selection, _("This rest will not print, just act as a spacer.\n")); if (thechord->is_grace && curObj->isinvisible) warning = g_string_append (warning, _("This rest has the grace attribute set: these objects are usually inserted automatically to match real grace notes in other parts, this helps the music typesetter place the grace note correctly in the Print View.\n")); } if (thechord->directives) { selection = g_string_append (selection, _("Attached to the chord:")); append_directives_information (selection, thechord->directives); } gint gcd_s = gcd384 (curObj->starttick); gint gcd_d = gcd384 (curObj->durinticks); if (gcd_s == 384) { if (gcd_d == 384) g_string_append_printf (selection, _("This %s starts %d ð…Ÿ 's into the measure and lasts %d ð…Ÿ 's.\n"), type, curObj->starttick / 384, curObj->durinticks / 384); else g_string_append_printf (selection, _("This %s starts %d ð…Ÿ 's into the measure and lasts %d/%d ð…Ÿ 's.\n"), type, curObj->starttick / 384, curObj->durinticks / gcd_d, 384 / gcd_d); } else { if (gcd_d == 384) g_string_append_printf (selection, _("This %s starts %d/%d ð…Ÿ 's into the measure and lasts %d ð…Ÿ 's.\n"), type, curObj->starttick / gcd_s, 384 / gcd_s, curObj->durinticks / 384); else g_string_append_printf (selection, _("This %s starts %d/%d ð…Ÿ 's into the measure and lasts %d/%d ð…Ÿ 's.\n"), type, curObj->starttick / gcd_s, 384 / gcd_s, curObj->durinticks / gcd_d, 384 / gcd_d); } append_lilypond (curObj, selection); } break; case TUPOPEN: { tuplet *thetup = ((tuplet *) curObj->object); //type = _("start tuplet marker"); g_string_append_printf (selection, _(" a Start Tuplet object\n" "Meaning %d notes will take the time of %d notes\n" "until an End Tuplet object.\nSee the Notes/Rests → Tuplets for control over how tuplets print\n"), thetup->denominator, thetup->numerator); if (thetup->directives) { selection = g_string_append (selection, _("Attached to the Start Tuplet:")); append_directives_information (selection, thetup->directives); } append_lilypond (curObj, selection); } break; case TUPCLOSE: { tuplet *thetup = ((tuplet *) curObj->object); //type = _("end tuplet marker"); g_string_append_printf (selection, _("an End Tuplet object\n" "Note: the Start Tuplet must be in the same measure.\n")); if (thetup->directives) { selection = g_string_append (selection, _("Attached to the End Tuplet:")); append_directives_information (selection, thetup->directives); } append_lilypond (curObj, selection); } break; case CLEF: { clef *theclef = ((clef *) curObj->object); //type = _("clef change object"); g_string_append_printf (selection, _("a Clef Change object.\n")); if (theclef->directives) { selection = g_string_append (selection, _("Attached to the Clef Change:")); append_directives_information (selection, theclef->directives); } if (curObj->isinvisible) selection = g_string_append (selection, _("This clef change is non-printing, it just affects the display.\n")); append_lilypond (curObj, selection); } break; case TIMESIG: { timesig *thetime = ((timesig *) curObj->object); //type = _("time signature change object"); g_string_append_printf (selection, _("a Time Signature Change object.\n")); if (thetime->directives) { selection = g_string_append (selection, _("Attached to the Time Signature Change:")); append_directives_information (selection, thetime->directives); } append_lilypond (curObj, selection); if (curObj->starttick) g_string_append_printf (warning, _("A Time Signature Change should be the first object in a measure\n" "unless you are trying to do something unusual")); } break; case KEYSIG: { keysig *thekey = ((keysig *) curObj->object); //type = _("key signature change object"); g_string_append_printf (selection, _("a Key Signature Change object.\n")); if (thekey->directives) { selection = g_string_append (selection, _("Attached to the Key Signature Change:")); append_directives_information (selection, thekey->directives); } append_lilypond (curObj, selection); } break; case STEMDIRECTIVE: { stemdirective *thestem = ((stemdirective *) curObj->object); //type = _("stem direction change object"); g_string_append_printf (selection, _("a Stem Direction Control Object. The notes after the cursor %s"), ((stemdirective *) curObj->object)->type == DENEMO_STEMDOWN ? _("will have stems downwards.") : ((stemdirective *) curObj->object)->type == DENEMO_STEMUP ? _("will have stems upwards.") : _("will have stems up or down as needed.")); if (thestem->directives) { selection = g_string_append (selection, _("\nAttached to the Stemming Change:")); append_directives_information (selection, thestem->directives); } append_lilypond (curObj, selection); } break; case LILYDIRECTIVE: { DenemoDirective *directive = (DenemoDirective *) curObj->object; //type = _("Denemo directive object"); if (directive->tag == NULL) directive->tag = g_string_new (""); //shouldn't happen const gchar *label = get_label_for_command (directive->tag->str); const gchar *menupath = get_menu_path_for_command (directive->tag->str); const gchar *tooltip = get_tooltip_for_command (directive->tag->str); if (tooltip == NULL) tooltip = _("No tooltip"); gchar *label_e = label ? g_markup_escape_text (label, -1) : g_markup_escape_text (directive->tag->str, -1); if (label) g_string_append_printf (selection, _("a Denemo Directive: %s\n"), label_e); else g_string_append_printf (selection, _("a Denemo Directive tagged: %s\n"), label_e); g_free (label_e); if (tooltip) { gchar *tooltip_e = g_markup_escape_text (tooltip, -1); g_string_append_printf (selection, _("\nThe help for the command that created this directive is\n\"%s\""), tooltip_e); g_free (tooltip_e); } g_string_append_printf (selection, _("%s"), (directive->layouts && (directive->flag == DENEMO_IGNORE_FOR_LAYOUTS)) ? _("\nNot for some layouts\n") : (directive->layouts && (directive->flag == DENEMO_ALLOW_FOR_LAYOUTS)) ? _("\nOnly for some Layout(s)\n") : "\n"); if (menupath) { gchar *menupath_e = g_markup_escape_text (menupath, -1); g_string_append_printf (selection, _("Menu location for this command: \"%s\"\n"), menupath_e); g_free (menupath_e); } { gchar *text = g_strconcat (directive->prefix ? directive->prefix->str : "", directive->postfix ? directive->postfix->str : "", NULL); g_strchug (text); //does not allocate memory if (*text) { gchar *lily1 = directive->prefix ? g_markup_escape_text (directive->prefix->str, -1) : g_strdup (""); gchar *lily2 = directive->postfix ? g_markup_escape_text (directive->postfix->str, -1) : g_strdup (""); g_string_append_printf (selection, _("The LilyPond text inserted is %s%s\n"), lily1, lily2); //puts the whitespace back g_free (lily1); g_free (lily2); } else g_string_append_printf (selection, _("This object does not affect the printed output (no LilyPond syntax is generated for the typesetter)\n")); //well this ignores possible effect of whitespace... g_free (text); if (directive->layouts) g_string_append (selection, _("THIS DIRECTIVE IS CONDITIONAL ON THE LAYOUT\n")); } if (gui->movement->currentobject->next == NULL && (gui->movement->currentmeasure->next == NULL)) g_string_assign (warning, _("This Directive is at the end of the music" "\nYou may need a closing double bar line -\n" "see Directives → Markings → Inserting Barlines")); } break; default: { g_string_append (selection, _("The cursor is on an unknown object type. Please report how this happened!")); } break; } //end switch curObj type if (gui->movement->smfsync == gui->movement->changecount) { gdouble time = curObj->earliest_time; gint minutes = time / 60.0; gdouble seconds = time - 60 * minutes; g_string_append_printf (selection, _("Playback timing: %d minutes %1.2f seconds"), minutes, seconds); } if (warning->len) { GtkWidget *label = gtk_label_new (""); warning = g_string_prepend (warning, _("Warning ")); gtk_label_set_markup (GTK_LABEL (label), warning->str); gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0); } if (selection->len) { GtkWidget *scrolled_window = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0); GtkWidget *inner_box = gtk_vbox_new (FALSE, 0); #if (GTK_MAJOR_VERSION==3 && GTK_MINOR_VERSION<8) gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), inner_box); #else gtk_container_add (GTK_CONTAINER(scrolled_window), inner_box); #endif GtkWidget *label = gtk_label_new (""); gtk_label_set_selectable (GTK_LABEL (label), TRUE); /* making the text selectable unfortunately results in the label text being selected at the start the following code would undo that, but selection-bound cannot be written to, so it does not work. int start, end; gtk_label_get_selection_bounds (GTK_LABEL(label), &start, &end); GValue value = { 0 }; g_value_init (&value, G_TYPE_INT); g_value_set_int (&value, end); g_object_set_property (G_OBJECT (label), "selection-bound", &value); *this also does not work: g_signal_emit_by_name (GTK_LABEL(label), "move-cursor", GTK_MOVEMENT_BUFFER_ENDS, -1, FALSE); */ gtk_label_set_markup (GTK_LABEL (label), selection->str); gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); gtk_box_pack_start (GTK_BOX (inner_box), label, TRUE, TRUE, 0); } g_string_free (warning, TRUE); g_string_free (selection, TRUE); } gtk_widget_show_all (ObjectInfo); #ifdef G_OS_WIN32 //on windows, the ObjectInfo window takes the focus regardless of having told it not to, so it is up to the user to bring the inspector to the front. gtk_window_set_transient_for (GTK_WINDOW (ObjectInfo), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (ObjectInfo), TRUE); #else gtk_window_present (GTK_WINDOW (ObjectInfo)); #endif display_timeout_id = 0; return FALSE; } void display_current_object (void) { static gint delay = 10; if (display_timeout_id == 0) { display_timeout_id = g_timeout_add (delay, (GSourceFunc) display_current_object_callback, NULL); delay = 10; } else { if (delay < 1500) delay += 100; } } static void show_window (GtkWidget * w) { w = gtk_widget_get_toplevel (w); gtk_widget_show (w); gtk_window_present (GTK_WINDOW (w)); //g_print ("Window presented"); } static void set_false (GtkWidget * button, gboolean * bool) { GtkWidget *w = gtk_widget_get_toplevel (button); gtk_widget_destroy (button); show_window (w); if (*bool) score_status (Denemo.project, TRUE); *bool = FALSE; } static void chuck_object_editor (void) { if (TheEditorWidget) gtk_widget_destroy (TheEditorWidget); else g_warning ("Call to chuck editor window, but it is not set\n"); TheEditorWidget = NULL; OldCurrentObject = Denemo.project->movement->currentobject; } static gboolean recover_object_editor (void) { if (OldCurrentObject == Denemo.project->movement->currentobject) { edit_object (); return TRUE; } else reset_cursors (); return FALSE; } typedef gboolean fn_type (gchar *); static void advanced_edit_type_directive (GtkWidget * button, gpointer fn) { DenemoDirective *directive = (DenemoDirective *) g_object_get_data (G_OBJECT (button), "directive"); GList **directives = (GList **) g_object_get_data (G_OBJECT (button), "directives"); chuck_object_editor(); if (!(((fn_type *) fn) (directive->tag->str))) { if (directives) *directives = g_list_remove (*directives, directive); else dnm_deleteobject (Denemo.project->movement); gtk_widget_destroy (gtk_widget_get_parent (gtk_widget_get_parent (button))); score_status (Denemo.project, TRUE); } else recover_object_editor (); } static void create_palette_button_for_directive (GtkWidget * button, gchar * what) { DenemoDirective *directive = (DenemoDirective *) g_object_get_data (G_OBJECT (button), "directive"); DenemoPalette *pal = NULL; if (!strcmp (what, "lilycontrol")) what = "score"; GString *script = g_string_new (get_script_for_directive (directive, what)); gchar *name = choose_palette_by_name (TRUE, FALSE); DenemoObject *curObj = get_object (); if (curObj && (curObj->type == CHORD) && (!strcmp (what, "note"))) { chord *thechord = (chord *) curObj->object; if (thechord->chordize) g_string_append (script, "(d-Chordize #t)\n"); } if (name) pal = create_palette (name, FALSE, TRUE); if (pal) { gchar *button_name = g_strdup_printf (_("Clone %s"), directive->tag->str); gchar *label = string_dialog_entry (Denemo.project, _("Palette Button Creation"), _("Give a (unique) name for the button"), button_name); if (label) { if (!palette_add_button (pal, label, _("Creates a cloned Denemo Directive"), script->str)) warningdialog (_("Could not create a button of that name in that palette")); } else warningdialog (_("Cancelled")); g_free (label); g_free (button_name); gtk_widget_show_all (gtk_widget_get_parent (pal->box)); gtk_widget_destroy (gtk_widget_get_toplevel (button)); reset_cursors (); } g_string_free (script, TRUE); } static void dummy_rerun (void) { g_warning ("No action"); } static gpointer get_rerun (gchar * field) { gpointer rerun = dummy_rerun; if (!strcmp (field, "movementcontrol")) rerun = edit_movement_properties; else if (!strcmp (field, "scoreheader")) rerun = edit_score_properties; else if (!strcmp (field, "lilycontrol")) rerun = edit_score_properties; else if (!strcmp (field, "header")) rerun = edit_score_properties; else if (!strcmp (field, "layout")) rerun = edit_score_properties; else if (!strcmp (field, "paper")) rerun = edit_score_properties; else if (!strcmp (field, "staff")) rerun = edit_staff_properties; else if (!strcmp (field, "clef")) rerun = edit_staff_properties; else if (!strcmp (field, "timesig")) rerun = edit_staff_properties; else if (!strcmp (field, "keysig")) rerun = edit_staff_properties; else if (!strcmp (field, "voice")) rerun = edit_voice_properties; else g_warning ("The field %s should have a Advanced button but does not.\n\n\n", field); return rerun; } static void create_duplicate_directive (GtkWidget * button, gchar * what) { DenemoDirective *directive = (DenemoDirective *) g_object_get_data (G_OBJECT (button), "directive"); DenemoPalette *pal = NULL; GList **directives = (GList **) g_object_get_data (G_OBJECT (button), "directives"); gpointer rerun = get_rerun (what); DenemoScoreblock *sb = (DenemoScoreblock *) selected_scoreblock (); if (directive && directives) { gchar *tag_suffix = string_dialog_entry (Denemo.project, _("Duplicate Directive"), _("Give layout duplicate directive is for: "), (sb && sb->name) ? sb->name : _("Score")); if (tag_suffix) { DenemoDirective *newdirective = clone_directive (directive); newdirective->tag = g_string_new (g_strdup_printf ("%s\n%s", directive->tag->str, tag_suffix)); *directives = g_list_append (*directives, newdirective); //g_print ("override was %x", newdirective->override); newdirective->override &= ~DENEMO_OVERRIDE_GRAPHIC; //g_print ("override becomes %x", newdirective->override); newdirective->flag = DENEMO_ALLOW_FOR_LAYOUTS; newdirective->layouts = g_list_append (NULL, GUINT_TO_POINTER (get_layout_id_for_name (tag_suffix))); gchar *info = g_strdup_printf ("%s: %c%s%c %s", _("The duplicate will be typeset only for layout: "), '\"', tag_suffix, '\"', _("The original directive should be made to ignore that layout even though later directives generally override earlier ones. The duplicate directive will appear at the end of the directives of its type in the editor, tagged with the name of the layout (you can change the conditional behavior regardless of this name though). ")); warningdialog (info); g_free (info); gtk_widget_destroy (gtk_widget_get_toplevel (button)); signal_structural_change (Denemo.project); score_status (Denemo.project, TRUE); if (rerun) G_CALLBACK (rerun) (); } else warningdialog (_("Cancelled")); } } static void create_palette_button_for_command (GtkWidget * button, gchar * tooltip) { DenemoDirective *directive = (DenemoDirective *) g_object_get_data (G_OBJECT (button), "directive"); DenemoPalette *pal = NULL; gchar *script = g_strdup_printf ("(d-%s)", directive->tag->str); gchar *name = choose_palette_by_name (TRUE, FALSE); if (name) pal = create_palette (name, FALSE, TRUE); if (pal) { gboolean success = palette_add_button (pal, directive->tag->str, tooltip, script); gtk_widget_show_all (gtk_widget_get_parent (pal->box)); gtk_widget_destroy (gtk_widget_get_toplevel (button)); reset_cursors (); } g_free (script); } static void delete_directive (GtkWidget * button, gpointer fn) { DenemoDirective *directive = (DenemoDirective *) g_object_get_data (G_OBJECT (button), "directive"); GList **directives = (GList **) g_object_get_data (G_OBJECT (button), "directives"); if (directives) { *directives = g_list_remove (*directives, directive); free_directive (directive); } else dnm_deleteobject (Denemo.project->movement); gtk_widget_destroy (gtk_widget_get_toplevel (button)); score_status (Denemo.project, TRUE); } static void call_edit_on_action (GtkWidget * button, DIRECTIVE_TYPE score_edit) { //gtk_widget_destroy (gtk_widget_get_toplevel (button)); DenemoScriptParam param; DenemoAction *action = (DenemoAction *) g_object_get_data (G_OBJECT (button), "action"); //GList *currentobject = Denemo.project->movement->currentobject; chuck_object_editor (); param.string = g_string_new ("edit"); g_debug ("Script can look for params \"edit\" - a string to catch this"); activate_script (action, ¶m); g_string_free (param.string, TRUE); // gtk_widget_destroy (gtk_widget_get_toplevel (button)); if (score_edit) { if (score_edit == DIRECTIVE_SCORE) edit_score_properties (); else if (score_edit == DIRECTIVE_MOVEMENT) edit_movement_properties (); else if (score_edit == DIRECTIVE_VOICE) edit_voice_properties (); else edit_staff_properties (); //also for KEYSIG AND TIMESIG } else { if (score_edit || (!recover_object_editor ())) reset_cursors (); } } static void call_score_properties_dialog (GtkWidget * button) { gtk_widget_hide (gtk_widget_get_toplevel (button)); score_properties_dialog (NULL, NULL); show_window (button); //gtk_widget_show (gtk_widget_get_toplevel (button)); } static void execute_editscript (GtkWidget * button, gchar * filename) { gchar *keep = g_strdup (filename); gtk_widget_destroy (gtk_widget_get_toplevel (button)); GError *error = (GError *) execute_script_file (keep); g_free (keep); GList *currentobject = Denemo.project->movement->currentobject; if (error) g_warning ("%s", error->message); if (currentobject == Denemo.project->movement->currentobject) edit_object (); else reset_cursors (); } /* linked to type_str[] array!!! */ typedef enum { EDIT_CHORD = 0, EDIT_NOTE, EDIT_TUPLET_START, EDIT_TUPLET_END, EDIT_CLEF, EDIT_KEY, EDIT_TIMESIG, EDIT_STEMDIR, EDIT_STANDALONE, } EditObjectType; static gchar *type_str[] = { "chord", "note", "tuplet", "tuplet", "clef", "keysig", "timesig", "stemdirective", "standalone", }; static void general_edit_popup (GtkWidget * button, EditObjectType type) { #ifdef G_OS_WIN32 //the popup does not work on windows... #else if (type == EDIT_CHORD) popup_menu ("NotesRests"); else #endif infodialog (_("To add or remove built-in attributes right click on the object in the display window")); gtk_widget_destroy (gtk_widget_get_parent (gtk_widget_get_parent (button))); reset_cursors (); } static void display_help (gchar * help) { infowarningdialog (help, TRUE); } static void seek_directive (GtkWidget * button, gchar * type, gchar * tag) { gtk_widget_destroy (gtk_widget_get_toplevel (button)); GList *currentobject = Denemo.project->movement->currentobject; gchar *script = type ? g_strconcat ("(define-once EditSimilar::last #f)\n(set! EditSimilar::last (cons ", type, " \"", tag, "\"))\n(d-ResumeEdit)", NULL) : g_strdup ("(d-EditSimilar)"); call_out_to_guile (script); g_free (script); if (currentobject == Denemo.project->movement->currentobject) edit_object (); else reset_cursors (); } static void seek_note_directive (GtkWidget * button, gchar * tag) { seek_directive (button, "'note", tag); } static void seek_chord_directive (GtkWidget * button, gchar * tag) { seek_directive (button, "'chord", tag); } static void seek_keysig_directive (GtkWidget * button, gchar * tag) { seek_directive (button, "'keysigdir", tag); } static void seek_timesig_directive (GtkWidget * button, gchar * tag) { seek_directive (button, "'timesigdir", tag); } static void seek_stemdirective_directive (GtkWidget * button, gchar * tag) { seek_directive (button, "'stemdir", tag); } static void seek_clef_directive (GtkWidget * button, gchar * tag) { seek_directive (button, "'clefdir", tag); } static void seek_standalone_directive (GtkWidget * button, gchar * tag) { seek_directive (button, NULL, tag); } static void make_type_directive_conditional (gchar *type, gchar * tag) { gchar *script = g_strdup_printf ("(SetDirectiveConditional #f (cons \"%s\" \"%s\"))", type, tag); chuck_object_editor (); call_out_to_guile (script); g_free (script); recover_object_editor (); } static void make_clef_directive_conditional (gchar * tag) { make_type_directive_conditional ("clef", tag); } static void make_keysig_directive_conditional (gchar * tag) { make_type_directive_conditional ("keysig", tag); } static void make_timesig_directive_conditional (gchar * tag) { make_type_directive_conditional ("timesig", tag); } static void make_chord_directive_conditional (gchar * tag) { gchar *script = g_strdup_printf ("(d-ChooseCondition (cons \"%s\" #f))", tag); chuck_object_editor (); call_out_to_guile (script); g_free (script); recover_object_editor (); } static void make_note_directive_conditional (gchar * tag) { gchar *script = g_strdup_printf ("(d-ChooseCondition (cons \"%s\" #t))", tag); chuck_object_editor (); call_out_to_guile (script); g_free (script); recover_object_editor (); } static void make_directive_conditional (GtkWidget * button, DenemoDirective * directive) { static gboolean notwarned = TRUE; if (Denemo.project->custom_scoreblocks) { warningdialog (_("You have custom score layout(s). Making this directive conditional will not affect them until you Reload Score-wide Settings in the Score Layout view.")); notwarned = FALSE; } gtk_widget_destroy (TheEditorWidget); gpointer rerun; const gchar *field; rerun = g_object_get_data (G_OBJECT (button), "rerun"); if (!rerun) rerun = dummy_rerun; field = (const gchar *) g_object_get_data (G_OBJECT (button), "field"); if (directive && directive->tag) { gchar *script = g_strdup_printf ("(SetDirectiveConditional #f (cons \"%s\" \"%s\"))", field, directive->tag->str); // g_print ("Calling %s\n\n", script); signal_structural_change (Denemo.project); //changing the conditional behavior of non-object directives requires score layouts to be reconstructed call_out_to_guile (script); g_free (script); score_status (Denemo.project, TRUE); } G_CALLBACK (rerun) (); } static void install_conditional_button (GtkWidget * hbox, DenemoDirective * directive, gchar * field) { GdkRGBA color; GtkWidget *button = gtk_button_new_with_label (_("Conditional")); #if GTK_MAJOR_VERSION == 2 get_color (&color, 0.0, 0.0, 0.5, 1.0); gtk_widget_override_color (button, GTK_STATE_FLAG_NORMAL, &color); #else set_foreground_color (button, "rgb(0, 0, 128)");//dark blue #endif gpointer rerun = NULL; if (!strcmp (field, "movementcontrol")) rerun = edit_movement_properties; else if (!strcmp (field, "scoreheader")) rerun = edit_score_properties; else if (!strcmp (field, "lilycontrol")) rerun = edit_score_properties; else if (!strcmp (field, "header")) rerun = edit_score_properties; else if (!strcmp (field, "layout")) rerun = edit_score_properties; else if (!strcmp (field, "paper")) rerun = edit_score_properties; else if (!strcmp (field, "staff")) rerun = edit_staff_properties; else if (!strcmp (field, "clef")) rerun = edit_staff_properties; else if (!strcmp (field, "timesig")) rerun = edit_staff_properties; else if (!strcmp (field, "keysig")) rerun = edit_staff_properties; else if (!strcmp (field, "voice")) rerun = edit_voice_properties; else g_warning ("The field %s should have a conditional button but doesnt.\n\n\n", field); g_object_set_data (G_OBJECT (button), "rerun", rerun); g_object_set_data (G_OBJECT (button), "field", (!strcmp (field, "lilycontrol")) ? "score" : field); if (rerun) { g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (make_directive_conditional), (gpointer) directive); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } } static void copy_chord_directive_to_clipboard (gchar * tag) { gchar *script = g_strdup_printf ("(CreateScriptForDirective (cons \"%s\" #f))", tag); call_out_to_guile (script); g_free (script); } static void copy_note_directive_to_clipboard (gchar * tag) { gchar *script = g_strdup_printf ("(CreateScriptForDirective (cons \"%s\" 'note))", tag); call_out_to_guile (script); g_free (script); } static void place_directives (GtkWidget * vbox, GList ** pdirectives, EditObjectType type) { GList *directives = *pdirectives; for (; directives; directives = directives->next) { DenemoDirective *directive = directives->data; const gchar *label = get_label_for_command (directive->tag->str); DenemoAction *action = lookup_action_from_name (directive->tag->str); gchar *name = label ? (gchar *) label : directive->tag->str; const gchar *tooltip = get_tooltip_for_command (directive->tag->str); gchar *display = directive->display ? directive->display->str : ""; gchar *filename = get_editscript_filename (directive->tag->str); if (!label) label = directive->tag->str; gchar *label_text = g_strdup_printf ("%s %c%s%c", label, '[', display, ']'); GtkWidget *expander = gtk_expander_new (label_text); g_free (label_text); gtk_expander_set_expanded (GTK_EXPANDER (expander), TRUE); gtk_widget_set_sensitive (expander, TRUE); gtk_container_set_border_width (GTK_CONTAINER (expander), 0); gtk_box_pack_start (GTK_BOX (vbox), expander, FALSE, TRUE, 0); GtkWidget *inner_box = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (expander), inner_box); if (filename) { gchar *thelabel = g_strconcat (_("Run the Edit Script for "), name, NULL); GtkWidget *button = gtk_button_new_with_label (thelabel); g_signal_connect (button, "clicked", G_CALLBACK (execute_editscript), filename); g_signal_connect_swapped (button, "destroy", G_CALLBACK (g_free), filename); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); g_free (thelabel); } else if (action) { gchar *thelabel = g_strconcat (_("Execute command: "), name, NULL); GtkWidget *button = gtk_button_new_with_label (thelabel); gtk_widget_set_tooltip_text (button, _("Re-run the command to edit the Denemo Directive")); g_object_set_data (G_OBJECT (button), "action", (gpointer) action); g_signal_connect (button, "clicked", G_CALLBACK (call_edit_on_action), NULL); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); g_free (thelabel); } fn_type *func; switch (type) { case EDIT_NOTE: func = text_edit_note_directive; break; case EDIT_CHORD: func = text_edit_chord_directive; break; case EDIT_CLEF: func = text_edit_clef_directive; break; case EDIT_KEY: func = text_edit_keysig_directive; break; case EDIT_TIMESIG: func = text_edit_timesig_directive; break; case EDIT_STEMDIR: func = text_edit_stemdirective_directive; break; default: g_critical ("Unknown type"); func = text_edit_standalone_directive; break; } GtkWidget *hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (inner_box), hbox, FALSE, TRUE, 0); //gtk_widget_override_color (inner_box, GTK_STATE_FLAG_NORMAL, &color); GtkWidget *button = gtk_button_new_with_label (_("Delete")); //GtkWidget *labelwidget = (GtkWidget *) gtk_bin_get_child (GTK_BIN (button)); //GdkRGBA color; //get_color (&color, 1.0, 0.0, 0.0, 1.0); //gtk_widget_override_color (labelwidget, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (button, "rgb(255,0,0)"); g_object_set_data (G_OBJECT (button), "directives", (gpointer) pdirectives); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect (button, "clicked", G_CALLBACK (delete_directive), func); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 30); { fn_type *func; switch (type) { case EDIT_NOTE: func = (fn_type *) seek_note_directive; //seek_directive (note, tag); break; case EDIT_CHORD: func = (fn_type *) seek_chord_directive; break; case EDIT_CLEF: func = (fn_type *) seek_clef_directive; break; case EDIT_KEY: func = (fn_type *) seek_keysig_directive; break; case EDIT_TIMESIG: func = (fn_type *) seek_timesig_directive; break; case EDIT_STEMDIR: func = (fn_type *) seek_stemdirective_directive; break; default: g_critical ("Unknown type"); func = NULL; break; } if (func) { button = gtk_button_new_with_label (_("Next âž¡")); //get_color (&color, 0.0, 0.7, 0.7, 1.0); //gtk_widget_override_color (button, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (button, "rgb(0,180,180)"); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (func), (gpointer) label); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } } if ((type == EDIT_NOTE) || (type == EDIT_CHORD) || (type == EDIT_CLEF)|| (type == EDIT_KEY)|| (type == EDIT_TIMESIG)) { button = gtk_button_new_with_label (_("Conditional")); #if GTK_MAJOR_VERSION == 2 get_color (&color, 0.0, 0.0, 0.5, 1.0); gtk_widget_override_color (button, GTK_STATE_FLAG_NORMAL, &color); #else set_foreground_color (button, "rgb(0, 0, 128)");//dark blue #endif if (type == EDIT_CHORD) g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (make_chord_directive_conditional), (gpointer) directive->tag->str); else if (type == EDIT_CLEF) g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (make_clef_directive_conditional), (gpointer) directive->tag->str); if (type == EDIT_KEY) g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (make_keysig_directive_conditional), (gpointer) directive->tag->str); if (type == EDIT_TIMESIG) g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (make_timesig_directive_conditional), (gpointer) directive->tag->str); else g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (make_note_directive_conditional), (gpointer) directive->tag->str); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Copy")); //get_color (&color, 0.0, 0.4, 0.5, 1.0); //gtk_widget_override_color (button, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (button, "rgb(0,110,128)"); if (type == EDIT_CHORD) g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (copy_chord_directive_to_clipboard), (gpointer) directive->tag->str); else g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (copy_note_directive_to_clipboard), (gpointer) directive->tag->str); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } if (tooltip) { button = gtk_button_new_with_label (_("Help")); //get_color (&color, 0.0, 0.7, 0.7, 1.0); //color.red = 0.0; color.green = 0.7, color.blue = 0.3; color.alpha = 1.0; //gtk_widget_override_color (button, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (button, "rgb(0,255,180)"); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (display_help), (gpointer) tooltip); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } if (tooltip == NULL) tooltip = _("No tooltip"); if (action) { button = gtk_button_new_with_label (_("Create Button for Command")); gtk_widget_set_tooltip_text (button, _("Make a palette button for running the command that created this attribute.")); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect (button, "clicked", G_CALLBACK (create_palette_button_for_command), (gpointer) tooltip); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } button = gtk_button_new_with_label (_("Create Button for Clone")); gtk_widget_set_tooltip_text (button, _("Make a palette button for installing this attribute elsewhere.")); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect (button, "clicked", G_CALLBACK (create_palette_button_for_directive), (gpointer) (type_str[type])); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Advanced")); gtk_widget_set_tooltip_text (button, _("Examine/Edit this directive at a low-level")); g_object_set_data (G_OBJECT (button), "directives", (gpointer) pdirectives); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect (button, "clicked", G_CALLBACK (advanced_edit_type_directive), func); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } } static void place_chord_attributes (GtkWidget * vbox, chord * thechord) { GtkWidget *expander = gtk_expander_new (_("Built-in Chord Attributes")); //gtk_expander_new gtk_expander_set_expanded (GTK_EXPANDER (expander), TRUE); gtk_widget_set_sensitive (expander, TRUE); gtk_container_set_border_width (GTK_CONTAINER (expander), 10); GdkRGBA color; #if GTK_MAJOR_VERSION == 2 get_color (&color, 0.1, 0.1, 0.8, 1.0); gtk_widget_override_color (expander, GTK_STATE_FLAG_NORMAL, &color); #else set_foreground_color (expander, "rgb(25, 25, 200)");//blue #endif gtk_box_pack_start (GTK_BOX (vbox), expander, FALSE, TRUE, 0); GtkWidget *inner_box = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (expander), inner_box); GtkWidget *hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (inner_box), hbox, FALSE, TRUE, 0); inner_box = gtk_vbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), inner_box, FALSE, TRUE, 30); if (thechord->slur_begin_p) { GtkWidget *button = gtk_button_new_with_label (_("Remove slur start")); g_signal_connect (button, "clicked", G_CALLBACK (set_false), &thechord->slur_begin_p); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); } if (thechord->slur_end_p) { GtkWidget *button = gtk_button_new_with_label (_("Remove slur end")); g_signal_connect (button, "clicked", G_CALLBACK (set_false), &thechord->slur_end_p); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); } if (thechord->is_tied) { GtkWidget *button = gtk_button_new_with_label (_("Remove tie")); g_signal_connect (button, "clicked", G_CALLBACK (set_false), &thechord->is_tied); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); } if (thechord->crescendo_begin_p) { GtkWidget *button = gtk_button_new_with_label (_("Remove Start cresc. marking")); g_signal_connect (button, "clicked", G_CALLBACK (set_false), &thechord->crescendo_begin_p); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); } if (thechord->crescendo_end_p) { GtkWidget *button = gtk_button_new_with_label (_("Remove End cresc. marking")); g_signal_connect (button, "clicked", G_CALLBACK (set_false), &thechord->crescendo_end_p); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); } if (thechord->diminuendo_begin_p) { GtkWidget *button = gtk_button_new_with_label (_("Remove Start dim. marking")); g_signal_connect (button, "clicked", G_CALLBACK (set_false), &thechord->diminuendo_begin_p); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); } if (thechord->diminuendo_end_p) { GtkWidget *button = gtk_button_new_with_label (_("Remove End dim. marking")); g_signal_connect (button, "clicked", G_CALLBACK (set_false), &thechord->diminuendo_end_p); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); } if (thechord->is_grace) { GtkWidget *button = gtk_button_new_with_label (_("Un-grace the note")); g_signal_connect (button, "clicked", G_CALLBACK (set_false), &thechord->is_grace); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); } if (!gtk_container_get_children (GTK_CONTAINER (inner_box))) gtk_widget_destroy (expander); } static void update_and_close (GtkWidget * editwin) { update_object_info (); gtk_widget_destroy (editwin); reset_cursors (); } static void run_script (GtkWidget * button, gchar * script) { call_out_to_guile (script); gtk_widget_destroy (gtk_widget_get_parent (gtk_widget_get_parent (button))); reset_cursors (); } static void delete_standalone (GtkWidget * button) { dnm_deleteobject (Denemo.project->movement); gtk_widget_destroy (gtk_widget_get_toplevel (button)); score_status (Denemo.project, TRUE); reset_cursors (); } // edit the specific object at the cursor void edit_object (void) { DenemoMovement *si = Denemo.project->movement; DenemoObject *curObj = get_object (); if (curObj == NULL) { warningmessage (_("No object here to edit")); return; } GtkWidget *editwin = gtk_window_new (GTK_WINDOW_TOPLEVEL); TheEditorWidget = editwin; GdkRGBA color; #if GTK_MAJOR_VERSION == 2 get_color (&color, 1.0, 1.0, 1.0, 1.0); //.red = color.green = color.blue = color.alpha = 1.0; gtk_widget_override_background_color (editwin, GTK_STATE_FLAG_NORMAL, &color); #else { GtkCssProvider *gcp; GtkStyleContext *gsc; gsc = gtk_widget_get_style_context(GTK_WIDGET (editwin)); gchar *str = "GtkWindow {background-color: #ffffff;}"; gcp= gtk_css_provider_new(); gtk_css_provider_load_from_data(gcp, str, -1, 0); gtk_style_context_add_provider(gsc, GTK_STYLE_PROVIDER(gcp), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } #endif gtk_window_set_modal (GTK_WINDOW (editwin), TRUE); gtk_window_set_title (GTK_WINDOW (editwin), _("Denemo Object Editor")); gtk_window_set_transient_for (GTK_WINDOW (editwin), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (editwin), TRUE); GtkWidget *vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (editwin), vbox); GtkWidget *close_button = gtk_button_new_with_label (_("Close")); g_signal_connect_swapped (close_button, "clicked", G_CALLBACK (update_and_close), editwin); g_signal_connect (G_OBJECT (editwin), "destroy", G_CALLBACK (reset_cursors), NULL); gtk_box_pack_start (GTK_BOX (vbox), close_button, FALSE, TRUE, 0); GtkWidget *hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); GtkWidget *button = gtk_button_new_with_label (_("⬅ Previous Object")); g_signal_connect_swapped (button, "clicked", G_CALLBACK (go_left), editwin); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); if ((!si->currentobject->prev) && (!si->currentmeasure->prev)) gtk_widget_set_sensitive (button, FALSE); GtkWidget *note_up_button = gtk_button_new_with_label (_("Next note in chord")); g_signal_connect_swapped (note_up_button, "clicked", G_CALLBACK (move_to_next_note), editwin); gtk_box_pack_start (GTK_BOX (hbox), note_up_button, FALSE, TRUE, 0); GtkWidget *alternate_note_button = gtk_button_new_with_label (_("Alternate note")); gtk_box_pack_start (GTK_BOX (hbox), alternate_note_button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Next Object âž¡")); g_signal_connect_swapped (button, "clicked", G_CALLBACK (go_right), editwin); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); if ((!si->currentobject->next) && (!si->currentmeasure->next)) gtk_widget_set_sensitive (button, FALSE); switch (curObj->type) { case CHORD: { chord *thechord = ((chord *) curObj->object); if (thechord->directives) { GtkWidget *frame = gtk_frame_new (thechord->notes ? _("Attached to the chord:") : _("Attached to the rest:")); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); //GdkRGBA color; //get_color (&color, 0.8, 0.1, 0.1, 1.0); //color.red = 0.8;color.green = color.blue = 0.1; color.alpha = 1; //gtk_widget_override_color (frame, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (frame, "rgb(200,25,25)"); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *inner_box = gtk_vbox_new (FALSE, 0); //get_color (&color, 0.1, 0.8, 0.1, 1.0); //gtk_widget_override_color (inner_box, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (inner_box, "rgb(25,200,25)"); gtk_container_add (GTK_CONTAINER (frame), inner_box); place_directives (inner_box, &thechord->directives, EDIT_CHORD); } if (thechord->notes) { place_chord_attributes (vbox, thechord); note *thenote = findnote (curObj, Denemo.project->movement->cursor_y); GList * notenode = g_list_find (thechord->notes, thenote); if (!thechord->notes->next) //only one note gtk_button_set_label (GTK_BUTTON (note_up_button), _("Edit the note")); if ((!thenote) || thechord->notes->next || (Denemo.project->movement->cursor_y != thenote->mid_c_offset)) { note_up_button = NULL; // a tricksy bit of code this: the button is already packed in the vbox, by setting this NULL we stop it being set insensitive as it must be for all other cases. } if (notenode->next) { note *nextnote = notenode->next->data; if (thenote->mid_c_offset == nextnote->mid_c_offset) { g_signal_connect_swapped (alternate_note_button, "clicked", G_CALLBACK (swap_notes_for_edit), notenode); alternate_note_button = NULL; //to prevent it being set insensitive } } if (thenote && Denemo.project->movement->cursor_y == thenote->mid_c_offset) { GString *text = g_string_new (""); if (thenote->directives) { g_string_append_printf (text, _("Attached to Note %s"), pretty_name (mid_c_offsettolily (thenote->mid_c_offset, thenote->enshift))); GtkWidget *frame = gtk_frame_new (text->str); gtk_container_set_border_width (GTK_CONTAINER (frame), 20); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); //GdkRGBA color; //get_color (&color, 0.2, 0.7, 0.2, 1.0); /// color.green = 0.7; color.red = color.blue = 0.2; color.alpha = 1; //gtk_widget_override_color (frame, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (frame, "rgb(50,200,50)"); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *inner_box = gtk_vbox_new (FALSE, 0); //get_color (&color, 0.1, 0.8, 0.1, 1.0); //gtk_widget_override_color (inner_box, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (inner_box, "rgb(25,200,25)");//this colors the description of the directives placed inside it gtk_container_add (GTK_CONTAINER (frame), inner_box); place_directives (inner_box, &thenote->directives, EDIT_NOTE); } else { g_string_append_printf (text, _("Nothing attached to Note %s"), pretty_name (mid_c_offsettolily (thenote->mid_c_offset, thenote->enshift))); GtkWidget *frame = gtk_frame_new (text->str); gtk_container_set_border_width (GTK_CONTAINER (frame), 20); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); //GdkRGBA color; //get_color (&color, 0.8, 0.1, 0.1, 1.0); //color.red = 0.8;color.green = color.blue = 0.1; color.alpha = 1; //gtk_widget_override_color (frame, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (frame, "rgb(200,25,25)"); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); } g_string_free (text, TRUE); } if ((thechord->notes) && curObj->isinvisible) { GtkWidget *button = gtk_button_new_with_label (_("Assign Pitch to Rhythm")); g_signal_connect (button, "clicked", G_CALLBACK (set_false), &curObj->isinvisible); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, TRUE, 0); } } else { //type = _("rest"); place_chord_attributes (vbox, thechord); } if (thechord->fakechord) { GtkWidget *button = gtk_button_new_with_label (_("Edit Chord Symbol")); g_signal_connect (button, "clicked", G_CALLBACK (run_script), "(d-EditChords)"); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, TRUE, 0); } if (thechord->figure) { GtkWidget *button = gtk_button_new_with_label (_("Edit Bass Figure")); g_signal_connect (button, "clicked", G_CALLBACK (run_script), "(d-EditFiguredBass)"); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, TRUE, 0); } { GtkWidget *separator = #if GTK_MAJOR_VERSION == 2 gtk_hseparator_new (); #else gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); #endif gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, TRUE, 0); GtkWidget *button = gtk_button_new_with_label (_("Add/Remove attributes")); g_signal_connect (button, "clicked", G_CALLBACK (general_edit_popup), EDIT_CHORD); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, TRUE, 0); } } break; case TUPOPEN: { tuplet *thetup = ((tuplet *) curObj->object); //type = _("start tuplet marker"); GtkWidget *button = gtk_button_new_with_label (_("Alter Tuplet Type")); g_signal_connect_swapped (button, "clicked", G_CALLBACK (call_out_to_guile), "(d-StartTuplet)"); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, TRUE, 0); if (thetup->directives) { GtkWidget *frame = gtk_frame_new (_("Attached to the tuplet start:")); //GdkRGBA color; //get_color (&color, 0.8, 0.1, 0.1, 1.0); //gtk_widget_override_color (frame, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (frame, "rgb(200,25,25)"); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *inner_box = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), inner_box); place_directives (inner_box, &thetup->directives, EDIT_TUPLET_START); } } break; case TUPCLOSE: { tuplet *thetup = ((tuplet *) curObj->object); //type = _("start tuplet marker"); if (thetup->directives) { GtkWidget *frame = gtk_frame_new (_("Attached to the tuplet end:")); //GdkRGBA color; //get_color (&color, 0.8, 0.1, 0.1, 1.0); //gtk_widget_override_color (frame, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (frame, "rgb(200,25,25)"); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *inner_box = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), inner_box); place_directives (inner_box, &thetup->directives, EDIT_TUPLET_END); } } break; case CLEF: { clef *theclef = ((clef *) curObj->object); //type = _("clef change object"); if (theclef->directives) { GtkWidget *frame = gtk_frame_new (_("Attached to the clef change object:")); //GdkRGBA color; //get_color (&color, 0.8, 0.1, 0.1, 1.0); //gtk_widget_override_color (frame, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (frame, "rgb(200,25,25)"); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *inner_box = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), inner_box); place_directives (inner_box, &theclef->directives, EDIT_CLEF); } if (curObj->isinvisible) { GtkWidget *button = gtk_button_new_with_label (_("Transform to printing clef")); g_signal_connect (button, "clicked", G_CALLBACK (set_false), &curObj->isinvisible); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, TRUE, 0); } } break; case TIMESIG: { timesig *thetime = ((timesig *) curObj->object); //type = _("time signature change object"); if (thetime->directives) { GtkWidget *frame = gtk_frame_new (_("Attached to the time signature change object:")); //GdkRGBA color; //get_color (&color, 0.8, 0.1, 0.1, 1.0); //gtk_widget_override_color (frame, GTK_STATE_FLAG_NORMAL, &color); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); set_foreground_color (frame, "rgb(200,25,25)"); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *inner_box = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), inner_box); place_directives (inner_box, &thetime->directives, EDIT_TIMESIG); } } break; case KEYSIG: { keysig *thekey = ((keysig *) curObj->object); //type = _("key signature change object"); if (thekey->directives) { GtkWidget *frame = gtk_frame_new (_("Attached to the key signature change object:")); //GdkRGBA color; //get_color (&color, 0.8, 0.1, 0.1, 1.0); //gtk_widget_override_color (frame, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (frame, "rgb(200,25,25)"); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *inner_box = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), inner_box); place_directives (inner_box, &thekey->directives, EDIT_KEY); } } break; case STEMDIRECTIVE: { stemdirective *thestem = ((stemdirective *) curObj->object); //type = _("stem direction change object"); if (thestem->directives) { GtkWidget *frame = gtk_frame_new (_("Attached to the stemming change object:")); //GdkRGBA color; //get_color (&color, 0.8, 0.1, 0.1, 1.0); //gtk_widget_override_color (frame, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (frame, "rgb(200,25,25)"); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *inner_box = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), inner_box); place_directives (inner_box, &thestem->directives, EDIT_STEMDIR); } } break; case LILYDIRECTIVE: { DenemoDirective *directive = (DenemoDirective *) curObj->object; const gchar *label = get_label_for_command (directive->tag->str); DenemoAction *action = lookup_action_from_name (directive->tag->str); gchar *name = label ? (gchar *) label : directive->tag->str; const gchar *tooltip = get_tooltip_for_command (directive->tag->str); gchar *filename = get_editscript_filename (directive->tag->str); GtkWidget *frame = gtk_frame_new (_("Standalone Denemo Directive:")); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); //GdkRGBA color; //get_color (&color, 0.5, 0.5, 0.1, 1.0); // .red = 0.5; //color.green = 0.5; color.blue = 0.1; color.alpha = 1; //gtk_widget_override_color (frame, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (frame, "rgb(128,128,25)"); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *inner_box = gtk_vbox_new (FALSE, 0); //get_color (&color, 0.8, 0.1, 0.1, 1.0); //gtk_widget_override_color (inner_box, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (frame, "rgb(200,25,25)"); gtk_container_add (GTK_CONTAINER (frame), inner_box); if (filename) { gchar *thelabel = g_strconcat (_("Run the Edit Script for "), name, NULL); GtkWidget *button = gtk_button_new_with_label (thelabel); g_signal_connect (button, "clicked", G_CALLBACK (execute_editscript), filename); g_signal_connect_swapped (button, "destroy", G_CALLBACK (g_free), filename); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); g_free (thelabel); } else if (action) { gchar *thelabel = g_strconcat (_("Execute command: "), name, NULL); GtkWidget *button = gtk_button_new_with_label (thelabel); gtk_widget_set_tooltip_text (button, _("Re-run the command to edit the Denemo Directive")); g_object_set_data (G_OBJECT (button), "action", (gpointer) action); g_signal_connect (button, "clicked", G_CALLBACK (call_edit_on_action), NULL); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); g_free (thelabel); } { GtkWidget *hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (inner_box), hbox, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Delete")); //GtkWidget *labelwidget = (GtkWidget *) gtk_bin_get_child (GTK_BIN (button)); //get_color (&color, 1.0, 0.0, 0.0, 1.0); //color.red = 1.0; color.green = color.blue = 0.0; color.alpha = 1.0; //gtk_widget_override_color (labelwidget, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (button, "rgb(255,0,0)"); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect (button, "clicked", G_CALLBACK (delete_standalone), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 30); button = gtk_button_new_with_label (_("Next âž¡")); // get_color (&color, 0.0, 0.7, 0.7, 1.0); // gtk_widget_override_color (button, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (button, "rgb(0,180,180)"); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (seek_standalone_directive), (gpointer) label); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); { button = gtk_button_new_with_label (_("Conditional")); //get_color (&color, 0.0, 0., 0.5, 1.0); //gtk_widget_override_color (button, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (button, "#000080"); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (call_out_to_guile), (gpointer) "(d-ChooseCondition #f)"); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } if (tooltip) { button = gtk_button_new_with_label (_("Help")); //get_color (&color, 0.0, 0.7, 0.3, 1.0); //color.red = 0.0; color.green = 0.7, color.blue = 0.3; color.alpha = 1.0; //gtk_widget_override_color (button, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (button, "#00b34d"); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (display_help), (gpointer) tooltip); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } if (tooltip == NULL) tooltip = _("No tooltip"); if (action) { button = gtk_button_new_with_label (_("Create Button for Command")); gtk_widget_set_tooltip_text (button, _("Make a palette button for running the command that created/inserted this object.")); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (create_palette_button_for_command), (gpointer) tooltip); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } button = gtk_button_new_with_label (_("Create Button for Clone")); gtk_widget_set_tooltip_text (button, _("Make a palette button for inserting a clone of this object elsewhere.")); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect (button, "clicked", G_CALLBACK (create_palette_button_for_directive), "standalone"); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Advanced")); g_object_set_data (G_OBJECT (button), "directives", NULL); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect (button, "clicked", G_CALLBACK (advanced_edit_type_directive), text_edit_standalone_directive); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } } break; default: g_critical ("Type not done"); break; } if (g_list_length (gtk_container_get_children (GTK_CONTAINER (vbox))) == 1) { //just the close button warningdialog ("Nothing editable on this object\nYou can add attributes to the object at the cursor by right-clicking on it."); gtk_widget_destroy (editwin); } else { if (note_up_button) gtk_widget_set_sensitive (note_up_button, FALSE); if (alternate_note_button) gtk_widget_set_sensitive (alternate_note_button, FALSE); gtk_widget_show_all (editwin); gtk_window_present (GTK_WINDOW (editwin)); gdk_window_set_cursor (gtk_widget_get_window (editwin), Denemo.GDK_LEFT_PTR); gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), Denemo.GDK_X_CURSOR); if (ObjectInfo) gdk_window_set_cursor (gtk_widget_get_window (ObjectInfo), Denemo.GDK_X_CURSOR); if (Denemo.printarea && gtk_widget_get_window (Denemo.printarea)) gdk_window_set_cursor (gtk_widget_get_window (Denemo.printarea), Denemo.GDK_X_CURSOR); #ifdef G_OS_WIN32 if (ObjectInfo) gtk_widget_hide (ObjectInfo); //windows doesn't handle order properly, so this can hide the object editor #endif } } static void score_update_and_close (GtkWidget * editwin) { gtk_widget_destroy (editwin); reset_cursors (); } static void go_previous (GtkWidget * editwin) { prev_movement (NULL, NULL); //FIXME pass in a DenemoParam * to get status if (editwin) { gtk_widget_destroy (editwin); reset_cursors (); edit_movement_properties (); } } static void go_next (GtkWidget * editwin) { next_movement (NULL, NULL); //FIXME pass in a DenemoParam * to get status if (editwin) { gtk_widget_destroy (editwin); reset_cursors (); edit_movement_properties (); } } static void low_level_edit_type_directive (GtkWidget * button, gpointer rerun) { gtk_widget_hide (gtk_widget_get_toplevel (button)); DenemoDirective *directive = (DenemoDirective *) g_object_get_data (G_OBJECT (button), "directive"); GList **directives = (GList **) g_object_get_data (G_OBJECT (button), "directives"); signal_structural_change (Denemo.project); // system directive may be edited in the next call if (!low_level_directive_edit (directive)) { gtk_widget_destroy (gtk_widget_get_toplevel (button)); if (directives) { *directives = g_list_remove (*directives, directive); free_directive (directive); } if (rerun) G_CALLBACK (rerun) (); score_status (Denemo.project, TRUE); } else show_window (button); //gtk_widget_show (gtk_widget_get_toplevel (button)); } static void delete_score_directive (GtkWidget * button, gpointer rerun) { DenemoDirective *directive = (DenemoDirective *) g_object_get_data (G_OBJECT (button), "directive"); GList **directives = (GList **) g_object_get_data (G_OBJECT (button), "directives"); *directives = g_list_remove (*directives, directive); free_directive (directive); gtk_widget_destroy (gtk_widget_get_toplevel (button)); signal_structural_change (Denemo.project); G_CALLBACK (rerun) (); //edit_score_properties (); score_status (Denemo.project, TRUE); } static void open_command_center_for_action (DenemoAction *action) { gint idx = lookup_command_from_name (Denemo.map, denemo_action_get_name (action)); command_center_select_idx (NULL, idx); gtk_widget_destroy (TheEditorWidget); TheEditorWidget = NULL; } static void place_buttons_for_directives (GList ** pdirectives, GtkWidget * vbox, DIRECTIVE_TYPE score_or_movement, gchar * field) { GList *g; gchar *type = ""; gchar *thecolor = "#ffffff"; if (!strcmp (field, "lilycontrol")) thecolor = "#e0ffff", type = _("Score "); else if (!strcmp (field, "movementcontrol")) thecolor = "#e0ffff", type = _("Movement "); else if (!strcmp (field, "scoreheader")) thecolor = "#ffe0ff", type = _("Score Header "); else if (!strcmp (field, "paper")) thecolor = "#ffffe0", type = _("Paper "); else if (!strcmp (field, "header")) thecolor = "#ffe0ff", type = _("Movement Header "); else if (!strcmp (field, "layout")) thecolor = "#ffffe0", type = _("Movement Layout "); else if (!strcmp (field, "keysig")) thecolor = "#e0ffff", type = _("Key Signature"); else if (!strcmp (field, "timesig")) thecolor = "#ffe0ff", type = _("Time Signature"); else if (!strcmp (field, "clef")) thecolor = "#ffffe0", type = _("Clef"); else if (!strcmp (field, "staff")) thecolor = "#ffffff", type = _("Staff"); else if (!strcmp (field, "voice")) thecolor = "#ffffff", type = _("Voice"); { gchar *text = g_strdup_printf (" \n%s %s", type, _("Directives")); GtkWidget *label = gtk_label_new (text); g_free (text); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0); } for (g = *pdirectives; g; g = g->next) { DenemoDirective *directive = g->data; const gchar *label = get_label_for_command (directive->tag->str); DenemoAction *action = lookup_action_from_name (directive->tag->str); gchar *name = label ? (gchar *) label : directive->tag->str; const gchar *tooltip = get_tooltip_for_command (directive->tag->str); gchar *filename = get_editscript_filename (directive->tag->str); gchar *display = directive->display ? directive->display->str : ""; GtkWidget *frame; gchar *text, *oneline; oneline = g_strescape (name,""); if (label == NULL) text = g_strdup_printf (_("%sDenemo %s Directive tagged: %s %c%s%c"), (directive->layouts) ? _("(Conditional) ") : "", type, oneline, '[', display, ']'); else text = g_strdup_printf (_("%sDenemo %s Directive: %s %c%s%c"), (directive->layouts) ? _("(Conditional) ") : "", type, label, '[', display, ']'); frame = gtk_frame_new (text); g_free (text); g_free (oneline); set_foreground_color (frame, "#808020"); GtkWidget *evbox = gtk_event_box_new (); set_background_color (evbox, thecolor); gtk_container_add (GTK_CONTAINER (vbox), evbox); gtk_container_add (GTK_CONTAINER (evbox), frame); GtkWidget *inner_box = gtk_vbox_new (FALSE, 0); set_foreground_color (inner_box, "#cccc20"); gtk_container_add (GTK_CONTAINER (frame), inner_box); GtkWidget *button; if (filename) { gchar *thelabel = g_strconcat (_("Run the Edit Script for "), name, NULL); button = gtk_button_new_with_label (thelabel); g_signal_connect (button, "clicked", G_CALLBACK (execute_editscript), filename); g_signal_connect_swapped (button, "destroy", G_CALLBACK (g_free), filename); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); g_free (thelabel); } else if (action) { gchar *thelabel = g_strconcat (_("Execute command: "), name, NULL); button = gtk_button_new_with_label (thelabel); gtk_widget_set_tooltip_text (button, _("Re-run the command to edit the Denemo Directive")); g_object_set_data (G_OBJECT (button), "action", (gpointer) action); g_signal_connect (button, "clicked", G_CALLBACK (call_edit_on_action), GINT_TO_POINTER (score_or_movement)); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); g_free (thelabel); } if (tooltip) gtk_widget_set_tooltip_text (button, tooltip); GtkWidget *hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (inner_box), hbox, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Delete")); //GtkWidget *labelwidget = (GtkWidget *) gtk_bin_get_child (GTK_BIN (button)); //get_color (&color, 1.0, 0.0, 0.0, 1.0); //color.red = 1.0; color.green = color.blue = 0.0; color.alpha = 1.0; //gtk_widget_override_color (labelwidget, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (button, "rgb(255,0,0)"); g_object_set_data (G_OBJECT (button), "directives", (gpointer) pdirectives); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect (button, "clicked", G_CALLBACK (delete_score_directive), get_rerun (field)); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 30); install_conditional_button (hbox, directive, field); if (tooltip) { button = gtk_button_new_with_label (_("Help")); //get_color (&color, 0.0, 0.7, 0.3, 1.0); //gtk_widget_override_color (button, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color(button, "#00b34d"); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (display_help), (gpointer) tooltip); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } if (tooltip == NULL) tooltip = _("No tooltip"); button = gtk_button_new_with_label (_("Create Duplicate")); gtk_widget_set_tooltip_text (button, _("Duplicate this directive with a new name. Usually only makes sense when the two directives are conditional applying to different layouts.")); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_object_set_data (G_OBJECT (button), "directives", pdirectives); g_signal_connect (button, "clicked", G_CALLBACK (create_duplicate_directive), (gpointer) (field)); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); if (action) { button = gtk_button_new_with_label (_("Create Button for Command")); gtk_widget_set_tooltip_text (button, _("Make a palette button for running the command that created this attribute.")); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (create_palette_button_for_command), (gpointer) tooltip); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Open Command Center")); gtk_widget_set_tooltip_text (button, _("Opens the Command Center on this command. Here you can find the location of the command in the menu system, set shortcuts etc.")); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (open_command_center_for_action), (gpointer) action); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } button = gtk_button_new_with_label (_("Create Button for Clone")); gtk_widget_set_tooltip_text (button, _("Make a palette button for installing a clone of this attribute elsewhere.")); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect (button, "clicked", G_CALLBACK (create_palette_button_for_directive), (gpointer) (field)); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Advanced")); g_object_set_data (G_OBJECT (button), "directives", pdirectives); g_object_set_data (G_OBJECT (button), "directive", (gpointer) directive); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (low_level_edit_type_directive), get_rerun (field)); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } } static void edit_score_and_movement_properties (gboolean show_score) { GtkWidget *editscorewin = gtk_window_new (GTK_WINDOW_TOPLEVEL); TheEditorWidget = editscorewin; gint window_height = 800; GdkRGBA color; #if GTK_MAJOR_VERSION == 2 get_color (&color, 1.0, 1.0, 1.0, 1.0); //.red = color.green = color.blue = color.alpha = 1.0; gtk_widget_override_background_color (editscorewin, GTK_STATE_FLAG_NORMAL, &color); #else { GtkCssProvider *gcp; GtkStyleContext *gsc; gsc = gtk_widget_get_style_context(GTK_WIDGET (editscorewin)); gchar *str = "GtkWindow {background-color: #ffffff;}"; gcp= gtk_css_provider_new(); gtk_css_provider_load_from_data(gcp, str, -1, 0); gtk_style_context_add_provider(gsc, GTK_STYLE_PROVIDER(gcp), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } #endif gtk_window_set_modal (GTK_WINDOW (editscorewin), TRUE); gtk_window_set_title (GTK_WINDOW (editscorewin), _("Score and Movement Properties Editor")); gtk_window_set_transient_for (GTK_WINDOW (editscorewin), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (editscorewin), TRUE); gtk_window_set_default_size (GTK_WINDOW (editscorewin), 1000, window_height); GtkWidget *vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (editscorewin), vbox); GtkWidget *close_button = gtk_button_new_with_label (_("Close")); g_signal_connect_swapped (close_button, "clicked", G_CALLBACK (score_update_and_close), editscorewin); g_signal_connect (G_OBJECT (editscorewin), "destroy", G_CALLBACK (reset_cursors), NULL); gtk_box_pack_start (GTK_BOX (vbox), close_button, FALSE, TRUE, 0); GtkWidget *button; GtkWidget *pane; #if GTK_MAJOR_VERSION == 2 pane = gtk_vpaned_new (); #else pane = gtk_paned_new (GTK_ORIENTATION_VERTICAL); #endif gtk_box_pack_start (GTK_BOX (vbox), pane, TRUE, TRUE, 0); GtkWidget *expander = gtk_expander_new (_("Score Properties")); gtk_expander_set_expanded (GTK_EXPANDER (expander), show_score); gtk_widget_set_sensitive (expander, TRUE); gtk_container_set_border_width (GTK_CONTAINER (expander), 10); //get_color (&color, 0.1, 0.8, 0.1, 1.0); //gtk_widget_override_color (expander, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color (expander, "rgb(25,200,25)"); // gtk_box_pack_start (GTK_BOX (vbox), expander, TRUE, TRUE, 0); GtkWidget *frame = gtk_frame_new (NULL); //gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_paned_add1 (GTK_PANED (pane), frame); gtk_container_add (GTK_CONTAINER (frame), expander); GtkWidget *scrolled_window = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_container_add (GTK_CONTAINER (expander), scrolled_window); GtkWidget *inner_box = gtk_vbox_new (FALSE, 0); #if GTK_MAJOR_VERSION==2 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), inner_box); #else gtk_container_add (GTK_CONTAINER(scrolled_window), inner_box); #endif button = gtk_button_new_with_label (_("Edit Built-in Score Properties")); g_signal_connect (button, "clicked", G_CALLBACK (call_score_properties_dialog), NULL); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); place_buttons_for_directives ((GList **) & Denemo.project->lilycontrol.directives, inner_box, DIRECTIVE_SCORE, "lilycontrol"); place_buttons_for_directives ((GList **) & Denemo.project->scoreheader, inner_box, DIRECTIVE_SCORE, "scoreheader"); place_buttons_for_directives ((GList **) & Denemo.project->paper, inner_box, DIRECTIVE_SCORE, "paper"); gchar *mnum = g_strdup_printf ("%s %d %s", _("Movement"), Denemo.project->movement->currentmovementnum, _("Properties")); expander = gtk_expander_new (mnum); g_free (mnum); gtk_expander_set_expanded (GTK_EXPANDER (expander), !show_score); gtk_widget_set_sensitive (expander, TRUE); gtk_container_set_border_width (GTK_CONTAINER (expander), 10); #if GTK_MAJOR_VERSION == 2 get_color (&color, 0.1, 0.1, 0.8, 1.0); gtk_widget_override_color (expander, GTK_STATE_FLAG_NORMAL, &color); #else set_foreground_color (expander, "rgb(25, 25, 200)");//blue #endif frame = gtk_frame_new (NULL); //gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_paned_add2 (GTK_PANED (pane), frame); gtk_container_add (GTK_CONTAINER (frame), expander); scrolled_window = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_container_add (GTK_CONTAINER (expander), scrolled_window); inner_box = gtk_vbox_new (FALSE, 0); #if GTK_MAJOR_VERSION==2 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), inner_box); #else gtk_container_add (GTK_CONTAINER(scrolled_window), inner_box); #endif GtkWidget *hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (inner_box), hbox, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("⬅ Previous Movement")); g_signal_connect_swapped (button, "clicked", G_CALLBACK (go_previous), editscorewin); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); if (Denemo.project->movement->currentmovementnum == 1) gtk_widget_set_sensitive (button, FALSE); button = gtk_button_new_with_label (_("Next Movement âž¡")); g_signal_connect_swapped (button, "clicked", G_CALLBACK (go_next), editscorewin); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); if (g_list_length (Denemo.project->movements) == Denemo.project->movement->currentmovementnum) gtk_widget_set_sensitive (button, FALSE); place_buttons_for_directives ((GList **) & Denemo.project->movement->movementcontrol, inner_box, DIRECTIVE_MOVEMENT, "movementcontrol"); place_buttons_for_directives ((GList **) & Denemo.project->movement->header, inner_box, DIRECTIVE_MOVEMENT, "header"); place_buttons_for_directives ((GList **) & Denemo.project->movement->layout, inner_box, DIRECTIVE_MOVEMENT, "layout"); gtk_paned_set_position (GTK_PANED (pane), show_score ? window_height - 50 : 50); if (g_list_length (gtk_container_get_children (GTK_CONTAINER (vbox))) == 1) { //just the close button warningdialog ("No properties have been set on the current score."); gtk_widget_destroy (editscorewin); } else { gtk_widget_show_all (editscorewin); gtk_window_present (GTK_WINDOW (editscorewin)); gdk_window_set_cursor (gtk_widget_get_window (editscorewin), Denemo.GDK_LEFT_PTR); gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), Denemo.GDK_X_CURSOR); if (ObjectInfo) gdk_window_set_cursor (gtk_widget_get_window (ObjectInfo), Denemo.GDK_X_CURSOR); if (Denemo.printarea && gtk_widget_get_window (Denemo.printarea)) gdk_window_set_cursor (gtk_widget_get_window (Denemo.printarea), Denemo.GDK_X_CURSOR); } } void edit_score_properties (void) { edit_score_and_movement_properties (TRUE); } void edit_movement_properties (void) { edit_score_and_movement_properties (FALSE); } static void clef_change_initial_cb (GtkWidget * editstaffwin) { DenemoStaff *thestaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (thestaff->voicecontrol != DENEMO_PRIMARY) warningdialog (_("The clef here only affects the display as this voice is typeset on the staff above.\nNormally you will want it set the same as the staff the notes will appear on.\nDismiss this warning and make any needed changes via the popup dialog coming next.")); clef_change_initial (NULL, NULL); } static void keysig_change_info (void) { DenemoStaff *thestaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (thestaff->voicecontrol != DENEMO_PRIMARY) { warningdialog (_("This voice should have the same key signature as the staff it appears on. Use the key signature menu commands to correct it if needed.")); // warningdialog (param.string); } else { warningdialog (_("Change the keysignature by clicking on it, or via the Key Signatures menu (after closing this editor).")); //for some reason the change_key() call does not get the keyboard focus so we can't change the key here. } } static void timesig_change_initial_cb (GtkWidget * editstaffwin) { DenemoStaff *thestaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (thestaff->voicecontrol != DENEMO_PRIMARY) { warningdialog (_("This voice should have the same time signature as the staff it appears on. Use the time signature menu commands to correct it if needed.")); // warningdialog (param.string); } else { timesig_change (Denemo.project, CHANGEINITIAL); gtk_widget_destroy (editstaffwin); edit_staff_and_voice_properties (TRUE); } } static void staff_above (GtkWidget * editstaffwin) { movetostaffup (NULL, NULL); gtk_widget_destroy (editstaffwin); edit_staff_and_voice_properties (TRUE); } static void staff_below (GtkWidget * editstaffwin) { movetostaffdown (NULL, NULL); gtk_widget_destroy (editstaffwin); edit_staff_and_voice_properties (TRUE); } static void change_staff_properties (GtkWidget * editstaffwin) { gtk_widget_destroy (editstaffwin); staff_properties_change_cb (NULL, NULL); edit_staff_and_voice_properties (TRUE); } static void edit_staff_and_voice_properties (gboolean show_staff) { GtkWidget *editstaffwin = gtk_window_new (GTK_WINDOW_TOPLEVEL); TheEditorWidget = editstaffwin; gint window_height = 800; GdkRGBA color; #if GTK_MAJOR_VERSION == 2 get_color (&color, 1.0, 1.0, 1.0, 1.0); //.red = color.green = color.blue = color.alpha = 1.0; gtk_widget_override_background_color (editstaffwin, GTK_STATE_FLAG_NORMAL, &color); #else { GtkCssProvider *gcp; GtkStyleContext *gsc; gsc = gtk_widget_get_style_context(GTK_WIDGET (editstaffwin)); gchar *str = "GtkWindow {background-color: #ffffff;}"; gcp= gtk_css_provider_new(); gtk_css_provider_load_from_data(gcp, str, -1, 0); gtk_style_context_add_provider(gsc, GTK_STYLE_PROVIDER(gcp), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } #endif gtk_window_set_modal (GTK_WINDOW (editstaffwin), TRUE); gtk_window_set_title (GTK_WINDOW (editstaffwin), _("Staff and Voice Properties Editor")); gtk_window_set_transient_for (GTK_WINDOW (editstaffwin), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (editstaffwin), TRUE); gtk_window_set_default_size (GTK_WINDOW (editstaffwin), 800, window_height); GtkWidget *vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (editstaffwin), vbox); GtkWidget *close_button = gtk_button_new_with_label (_("Close")); g_signal_connect_swapped (close_button, "clicked", G_CALLBACK (score_update_and_close), editstaffwin); g_signal_connect (G_OBJECT (editstaffwin), "destroy", G_CALLBACK (reset_cursors), NULL); gtk_box_pack_start (GTK_BOX (vbox), close_button, FALSE, TRUE, 0); GtkWidget *button; GtkWidget *pane; #if GTK_MAJOR_VERSION == 2 pane = gtk_vpaned_new (); #else pane = gtk_paned_new (GTK_ORIENTATION_VERTICAL); #endif gtk_box_pack_start (GTK_BOX (vbox), pane, TRUE, TRUE, 0); GtkWidget *expander = gtk_expander_new (_("Staff Properties")); gtk_expander_set_expanded (GTK_EXPANDER (expander), TRUE); gtk_widget_set_sensitive (expander, TRUE); gtk_container_set_border_width (GTK_CONTAINER (expander), 10); #if GTK_MAJOR_VERSION == 2 get_color (&color, 0.1, 0.1, 0.8, 1.0); gtk_widget_override_color (expander, GTK_STATE_FLAG_NORMAL, &color); #else set_foreground_color (expander, "rgb(25, 25, 200)");//blue #endif GtkWidget *frame = gtk_frame_new (NULL); //gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_paned_add1 (GTK_PANED (pane), frame); gtk_container_add (GTK_CONTAINER (frame), expander); GtkWidget *scrolled_window = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_container_add (GTK_CONTAINER (expander), scrolled_window); GtkWidget *inner_box = gtk_vbox_new (FALSE, 0); #if GTK_MAJOR_VERSION==2 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), inner_box); #else gtk_container_add (GTK_CONTAINER(scrolled_window), inner_box); #endif GtkWidget *inner_hbox; inner_hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (inner_box), inner_hbox, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Staff Above")); g_signal_connect_swapped (button, "clicked", G_CALLBACK (staff_above), editstaffwin); gtk_box_pack_start (GTK_BOX (inner_hbox), button, FALSE, TRUE, 0); if (Denemo.project->movement->currentstaffnum == 1) gtk_widget_set_sensitive (button, FALSE); button = gtk_button_new_with_label (_("Staff Below")); g_signal_connect_swapped (button, "clicked", G_CALLBACK (staff_below), editstaffwin); gtk_box_pack_start (GTK_BOX (inner_hbox), button, FALSE, TRUE, 0); if (g_list_length (Denemo.project->movement->thescore) == Denemo.project->movement->currentstaffnum) gtk_widget_set_sensitive (button, FALSE); DenemoStaff *thestaff = (DenemoStaff *) Denemo.project->movement->currentstaff->data; if (thestaff->voicecontrol != DENEMO_PRIMARY) { GtkWidget *label = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (label), _("This voice will be typeset on the staff above")); gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); gtk_box_pack_start (GTK_BOX (inner_box), label, FALSE, TRUE, 0); } inner_hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (inner_box), inner_hbox, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Edit Built-in Staff Properties")); g_signal_connect_swapped (button, "clicked", G_CALLBACK (change_staff_properties), editstaffwin); gtk_box_pack_start (GTK_BOX (inner_hbox), button, FALSE, TRUE, 0); const gchar *theclef = get_clef_name (thestaff->clef.type); gchar *text = g_strconcat (_("Clef: "), theclef, NULL); button = gtk_button_new_with_label (text); g_signal_connect_swapped (button, "clicked", G_CALLBACK (clef_change_initial_cb), editstaffwin); gtk_box_pack_start (GTK_BOX (inner_hbox), button, FALSE, TRUE, 0); g_free (text); text = g_strdup_printf (_("Time: %d/%d"), thestaff->timesig.time1, thestaff->timesig.time2); button = gtk_button_new_with_label (text); g_signal_connect_swapped (button, "clicked", G_CALLBACK (timesig_change_initial_cb), editstaffwin); gtk_box_pack_start (GTK_BOX (inner_hbox), button, FALSE, TRUE, 0); g_free (text); text = g_strdup_printf (_("Key: %s"), get_lilypond_for_keysig (&(thestaff->keysig))); button = gtk_button_new_with_label (text); g_signal_connect (button, "clicked", G_CALLBACK (keysig_change_info), NULL); gtk_box_pack_start (GTK_BOX (inner_hbox), button, FALSE, TRUE, 0); g_free (text); place_buttons_for_directives ((GList **) & thestaff->staff_directives, inner_box, DIRECTIVE_STAFF, "staff"); if (thestaff->keysig.directives) { //GtkWidget *label = gtk_label_new (_("Key Signature Directives")); //gtk_box_pack_start (GTK_BOX (inner_box), label, FALSE, TRUE, 0); place_buttons_for_directives ((GList **) & (thestaff->keysig.directives), inner_box, DIRECTIVE_KEYSIG, "keysig"); } if (thestaff->timesig.directives) { //GtkWidget *label = gtk_label_new (_("Time Signature Directives")); //gtk_box_pack_start (GTK_BOX (inner_box), label, FALSE, TRUE, 0); place_buttons_for_directives ((GList **) & (thestaff->timesig.directives), inner_box, DIRECTIVE_TIMESIG, "timesig"); } if (thestaff->clef.directives) { //GtkWidget *label = gtk_label_new (_("Clef Directives")); //gtk_box_pack_start (GTK_BOX (inner_box), label, FALSE, TRUE, 0); place_buttons_for_directives ((GList **) & (thestaff->clef.directives), inner_box, DIRECTIVE_CLEF, "clef"); } expander = gtk_expander_new (_("Voice Properties")); gtk_expander_set_expanded (GTK_EXPANDER (expander), TRUE); gtk_widget_set_sensitive (expander, TRUE); gtk_container_set_border_width (GTK_CONTAINER (expander), 10); #if GTK_MAJOR_VERSION == 2 get_color (&color, 0.1, 0.1, 0.8, 1.0); gtk_widget_override_color (expander, GTK_STATE_FLAG_NORMAL, &color); #else set_foreground_color (expander, "rgb(25, 25, 200)");//blue #endif frame = gtk_frame_new (NULL); //gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_paned_add2 (GTK_PANED (pane), frame); gtk_container_add (GTK_CONTAINER (frame), expander); scrolled_window = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_container_add (GTK_CONTAINER (expander), scrolled_window); inner_box = gtk_vbox_new (FALSE, 0); #if GTK_MAJOR_VERSION==2 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), inner_box); #else gtk_container_add (GTK_CONTAINER(scrolled_window), inner_box); #endif GtkWidget *hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (inner_box), hbox, FALSE, TRUE, 0); place_buttons_for_directives ((GList **) & thestaff->voice_directives, inner_box, DIRECTIVE_VOICE, "voice"); gtk_paned_set_position (GTK_PANED (pane), window_height / 2); if (g_list_length (gtk_container_get_children (GTK_CONTAINER (vbox))) == 1) { //just the close button warningdialog ("No properties have been set on the current score."); gtk_widget_destroy (editstaffwin); } else { gtk_widget_show_all (editstaffwin); gtk_window_present (GTK_WINDOW (editstaffwin)); gdk_window_set_cursor (gtk_widget_get_window (editstaffwin), Denemo.GDK_LEFT_PTR); gdk_window_set_cursor (gtk_widget_get_window (Denemo.window), Denemo.GDK_X_CURSOR); if (ObjectInfo) gdk_window_set_cursor (gtk_widget_get_window (ObjectInfo), Denemo.GDK_X_CURSOR); if (Denemo.printarea && gtk_widget_get_window (Denemo.printarea)) gdk_window_set_cursor (gtk_widget_get_window (Denemo.printarea), Denemo.GDK_X_CURSOR); } } void edit_staff_properties (void) { edit_staff_and_voice_properties (TRUE); } void edit_voice_properties (void) { edit_staff_and_voice_properties (FALSE); } void set_modeaccs (gint * accs, gint number, gint mode) { g_debug ("Mode %d : %d \n", number, mode); if (mode == 0) { switch (number) { case 11: number -= 7; break; } initkeyaccs (accs, number); } else if (mode == 2) initkeyaccs (accs, 0); else if (number == 1 && mode == 1) initkeyaccs (accs, 0); } /** * This function initializes the accidental-context array associated with * a key signature or a staff to that appropriate for _number_ */ void initkeyaccs (gint * accs, gint number) { int index; memset (accs, 0, SEVENGINTS); if (number > 0) for (index = 3; number; number--, index = (index + 4) % 7) accs[index] = 1; else if (number < 0) for (index = 6; number; number++, index = (index + 3) % 7) accs[index] = -1; } /** * Create a new measure break object * @return the measurebreak */ DenemoObject * newmeasurebreakobject () { DenemoObject *ret; ret = (DenemoObject *) g_malloc0 (sizeof (DenemoObject)); ret->type = MEASUREBREAK; return ret; } /** * Create a new staff break object * @return the staffbreak */ DenemoObject * newstaffbreakobject () { DenemoObject *ret; ret = (DenemoObject *) g_malloc0 (sizeof (DenemoObject)); ret->type = STAFFBREAK; return ret; } /* clone the directive, excluding the widget */ DenemoDirective * clone_directive (DenemoDirective * directive) { DenemoDirective *ret = (DenemoDirective *) g_malloc0 (sizeof (DenemoDirective)); memcpy (ret, directive, sizeof (DenemoDirective)); //BEWARE all pointers in DenemoDirective require code, as follows: #define CLONE(field) \ if(directive->field && directive->field->len)\ ret->field = g_string_new(directive->field->str);\ else\ ret->field = NULL; CLONE (tag); CLONE (prefix); CLONE (postfix); CLONE (display); CLONE (graphic_name); CLONE (grob); CLONE (midibytes); CLONE (data); #undef CLONE if (directive->graphic) { ret->graphic = directive->graphic; //alternatively could load it via loadGraphicItem, is the same } if (directive->widget) { // gpointer fn = g_object_get_data(G_OBJECT(directive->widget), "fn"); ret->widget = NULL; //FIXME call widget_for_directive here??? // widget_for_directive(ret, fn); } GList *g; GList *start = directive->layouts; directive->layouts = NULL; for (g = start; g; g = g->next) directive->layouts = g_list_append (directive->layouts, g->data); return ret; } GList * clone_directives (GList * directives) { GList *ret = NULL; for (; directives; directives = directives->next) ret = g_list_append (ret, clone_directive (directives->data)); return ret; } void free_directive_data (DenemoDirective * directive) { #define DFREE(field) if(directive->field) g_string_free(directive->field, TRUE); DFREE (tag); DFREE (display); DFREE (prefix); DFREE (postfix); DFREE (graphic_name); DFREE (grob); #undef DFREE if (directive->widget && !G_IS_OBJECT (directive->widget)) { g_debug ("Found non-gobject widget %p\n", directive->widget); } if (directive->widget && G_IS_OBJECT (directive->widget)) { //g_debug("We should destroy the widget now "); GtkWidget *texteditor = (GtkWidget *) g_object_get_data (G_OBJECT (directive->widget), DENEMO_TEXTEDITOR_TAG); if (texteditor) gtk_widget_destroy (texteditor); //FIXME we may need to destroy its parents gtk_widget_destroy ((GtkWidget *) directive->widget); } g_list_free (directive->layouts); } void free_directive (DenemoDirective * directive) { free_directive_data (directive); g_free (directive); } void free_directives (GList * directives) { for (; directives; directives = directives->next) { DenemoDirective *directive = directives->data; free_directive (directive); } g_list_free (directives); } /** * Create a clone of the given object * @param orig the object to clone * @return the cloned object */ DenemoObject * dnm_clone_object (DenemoObject * orig) { DenemoObject *ret = NULL; if (orig != NULL) { switch (orig->type) { case CHORD: ret = clone_chord (orig); break; case TUPOPEN: ret = (DenemoObject *) tuplet_open_new (((tupopen *) orig->object)->numerator, ((tupopen *) orig->object)->denominator); ((tupopen *) ret->object)->directives = clone_directives (((tupopen *) orig->object)->directives); break; case TUPCLOSE: ret = (DenemoObject *) tuplet_close_new (); ((tupopen *) ret->object)->directives = clone_directives (((tupopen *) orig->object)->directives); break; case CLEF: ret = clef_new (((clef *) orig->object)->type); ((clef *) ret->object)->directives = clone_directives (((clef *) orig->object)->directives); break; case TIMESIG: ret = dnm_newtimesigobj (((timesig *) orig->object)->time1, ((timesig *) orig->object)->time2); ((timesig *) ret->object)->directives = clone_directives (((timesig *) orig->object)->directives); break; case KEYSIG: ret = dnm_newkeyobj (((keysig *) orig->object)->number, ((keysig *) orig->object)->isminor, ((keysig *) orig->object)->mode); ((keysig *) ret->object)->directives = clone_directives (((keysig *) orig->object)->directives); break; break; case STEMDIRECTIVE: ret = dnm_stem_directive_new (((stemdirective *) orig->object)->type); ((stemdirective *) ret->object)->directives = clone_directives (((stemdirective *) orig->object)->directives); break; case MEASUREBREAK: ret = newmeasurebreakobject (); break; case STAFFBREAK: ret = newstaffbreakobject (); break; case LILYDIRECTIVE: { lilydirective *curlily = (lilydirective *) orig->object; ret = directive_object_new (clone_directive (curlily)); ret->durinticks = orig->durinticks; ret->basic_durinticks = orig->basic_durinticks; } break; default: g_warning ("Unknown object type %x", orig->type); ret = lily_directive_new ("%unknown object\n"); break; } } if (ret) { if (orig->lilypond) ret->lilypond = g_strdup (orig->lilypond); else ret->lilypond = NULL; ret->isinvisible = orig->isinvisible; } return ret; } /** * Create a new stem directive * @param type the stem directive type * @return the stem directive */ DenemoObject * dnm_stem_directive_new (enum stemdirections type) { DenemoObject *ret; stemdirective *newstemdir = (stemdirective *) g_malloc (sizeof (stemdirective)); ret = (DenemoObject *) g_malloc0 (sizeof (DenemoObject)); ret->type = STEMDIRECTIVE; ret->isinvisible = FALSE; newstemdir->type = type; ret->object = newstemdir; set_basic_numticks (ret); setpixelmin (ret); return ret; } /** * Create a new lilypond directive * * @param type the lilypond directive body * @return the lilypond directive * */ DenemoObject * lily_directive_new (gchar * type) { DenemoObject *ret; lilydirective *newlily = (lilydirective *) g_malloc0 (sizeof (lilydirective)); ret = (DenemoObject *) g_malloc0 (sizeof (DenemoObject)); ret->type = LILYDIRECTIVE; newlily->postfix = g_string_new (type); ret->object = newlily; set_basic_numticks (ret); setpixelmin (ret); return ret; } DenemoObject * directive_object_new (DenemoDirective * directive) { DenemoObject *ret; ret = (DenemoObject *) g_malloc0 (sizeof (DenemoObject)); ret->type = LILYDIRECTIVE; ret->object = directive; set_basic_numticks (ret); setpixelmin (ret); return ret; } /** * Create a new dynamic object * @param type the dynamic to create * @return the dynamic */ DenemoObject * dynamic_new (gchar * type) { DenemoObject *ret; dynamic *newdyn = (dynamic *) g_malloc0 (sizeof (dynamic)); ret = (DenemoObject *) g_malloc0 (sizeof (DenemoObject)); ret->type = DYNAMIC; ret->isinvisible = FALSE; newdyn->type = g_string_new (type); ret->object = newdyn; set_basic_numticks (ret); setpixelmin (ret); return ret; } /** * Create a new lyric object * @param type the lyric to create * @param position whether it shoul be centered or not * @param syllable whether it is a syllable * @return the dynamic */ DenemoObject * dnm_lyric_new (gchar * type, gint position, gboolean syllable) { DenemoObject *ret; lyric *newlyric = (lyric *) g_malloc0 (sizeof (lyric)); ret = (DenemoObject *) g_malloc0 (sizeof (DenemoObject)); ret->type = LYRIC; ret->isinvisible = FALSE; newlyric->lyrics = g_string_new (type); newlyric->position = position; newlyric->is_syllable = syllable; ret->object = newlyric; set_basic_numticks (ret); setpixelmin (ret); return ret; } /** * Create a DenemoObject * @param type DenemoObject type * @return the DenemoObject */ DenemoObject * dnm_newobj (DenemoObjType type) { DenemoObject *ret = (DenemoObject *) g_malloc0 (sizeof (DenemoObject));; ret->type = type; set_basic_numticks (ret); setpixelmin (ret); /* these do nothing at present - but if we introduce a show markers option then we will want to allot some space */ return ret; } /** * Set the key signature into the score * @param curstaff the current staff * @param tokey the key sig to insert * @param type major/minor/mode */ void dnm_setinitialkeysig (DenemoStaff * curstaff, gint tokey, gint type) { take_snapshot (); signal_structural_change (Denemo.project); curstaff->keysig.number = tokey; curstaff->keysig.isminor = type; initkeyaccs (curstaff->keysig.accs, tokey); curstaff->leftmost_keysig = &curstaff->keysig; staff_show_which_accidentals (curstaff); adjust_tonal_center (curstaff->keysig.accs); displayhelper (Denemo.project); score_status (Denemo.project, TRUE); } denemo-2.2.0/src/command/PaxHeaders.19168/clef.h0000644000000000000000000000013213135434036016020 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.439981805 30 ctime=1500919914.099981805 denemo-2.2.0/src/command/clef.h0000644000175000017500000000224413135434036017673 0ustar00jjbenhamjjbenham00000000000000#ifndef __CLEF_H__ #define __CLEF_H__ #include void clef_new_treble (DenemoAction* action, DenemoScriptParam *param); void clef_new_bass (DenemoAction* action, DenemoScriptParam *param); void clef_new_g8 (DenemoAction* action, DenemoScriptParam *param); void clef_new_alto (DenemoAction* action, DenemoScriptParam *param); void clef_new_tenor (DenemoAction* action, DenemoScriptParam *param); void clef_new_soprano (DenemoAction* action, DenemoScriptParam *param); void clef_new_french (DenemoAction* action, DenemoScriptParam *param); void clef_new_f8 (DenemoAction* action, DenemoScriptParam *param); void clef_set_treble (DenemoAction* action, DenemoScriptParam *param); void clef_set_bass (DenemoAction* action, DenemoScriptParam *param); void clef_set_g8 (DenemoAction* action, DenemoScriptParam *param); void clef_set_alto (DenemoAction* action, DenemoScriptParam *param); void clef_set_tenor (DenemoAction* action, DenemoScriptParam *param); void clef_set_soprano (DenemoAction* action, DenemoScriptParam *param); void clef_set_french (DenemoAction* action, DenemoScriptParam *param); void clef_set_f8 (DenemoAction* action, DenemoScriptParam *param); #endif denemo-2.2.0/src/command/PaxHeaders.19168/staff.h0000644000000000000000000000013213135434036016212 xustar0030 mtime=1500919838.343315139 30 atime=1500919918.439981805 30 ctime=1500919914.149981805 denemo-2.2.0/src/command/staff.h0000644000175000017500000000274213135434036020070 0ustar00jjbenhamjjbenham00000000000000/* staff.h * Header file for functions dealing with whole staffs * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #ifndef __STAFFOPS_H__ #define __STAFFOPS_H__ #include gboolean signal_structural_change (DenemoProject * project); enum newstaffcallbackaction { INITIAL, FIRST, LAST, ADDFROMLOAD, BEFORE, AFTER, CURRENT, NEWVOICE, LYRICSTAFF, FIGURESTAFF, CHORDSTAFF }; measurenode *staff_first_measure_node (staffnode * thestaff); measurenode *staff_nth_measure_node (staffnode * thestaff, gint n); void staff_set_current_primary (DenemoMovement * movement); /* default context shall be DENEMO_NONE */ DenemoStaff* staff_new (DenemoProject * gui, enum newstaffcallbackaction action, DenemoContext context); void staff_delete (DenemoProject * gui, gboolean interactive); void staff_beams_and_stems_dirs (DenemoStaff * thestaff); void staff_show_which_accidentals (DenemoStaff * thestaff); void staff_fix_note_heights (DenemoStaff * thestaff); void staff_new_initial (DenemoAction * action, DenemoScriptParam * param); void staff_new_before (DenemoAction * action, DenemoScriptParam * param); void staff_new_after (DenemoAction * action, DenemoScriptParam * param); void staff_new_voice (DenemoAction * action, DenemoScriptParam * param); void staff_new_last (DenemoAction * action, DenemoScriptParam * param); void staff_copy (DenemoStaff * src, DenemoStaff * dest, gboolean copy_all); #endif /* __STAFFOPS_H__ */ denemo-2.2.0/src/command/PaxHeaders.19168/measure.c0000644000000000000000000000013213135434036016543 xustar0030 mtime=1500919838.339981805 30 atime=1500919918.439981805 30 ctime=1500919914.126648472 denemo-2.2.0/src/command/measure.c0000644000175000017500000007024513135434036020424 0ustar00jjbenhamjjbenham00000000000000/* measure.cpp * functions dealing with measures * * for Denemo, a gtk+ frontent to GNU Lilypond * (c) 2000-2005 Matthew Hiller, Adam Tee */ #include "display/accwidths.h" #include "command/chord.h" #include #include "display/drawingprims.h" #include "command/measure.h" #include "display/notewidths.h" #include "command/object.h" #include "command/staff.h" #include "string.h" #include "core/utils.h" #include "core/cache.h" #include "command/select.h" #include "display/displayanimation.h" #include "command/commandfuncs.h" #define STEMDIFFERENCE 6 #define HALFSTEMDIFFERENCE 3 /** * Adds measures to the score at given position, and returns the * measurenode * to the first one in currentstaff * @param si the scoreinfo structure * @param pos position in staff to insert measures * @param nummeasures number of measures to insert * @param all append across all staffs * @return measurenode pointer to the first added in the current staff */ measurenode * addmeasures (DenemoMovement * si, gint pos, guint nummeasures, gint all) { staffnode *curstaff; guint i; objnode *barlinenode = NULL; if(all) stage_undo (si, ACTION_STAGE_END); for (i = 0; i < nummeasures; i++) { if (all) { gint j; for (j = 1, curstaff = si->thescore; curstaff; j++, curstaff = curstaff->next) { store_for_undo_measure_create (si, j, pos); barlinenode = g_malloc0 (sizeof (DenemoMeasure)); //use NULL originally ((DenemoStaff *) curstaff->data)->themeasures = g_list_insert (staff_first_measure_node (curstaff), barlinenode, pos); ((DenemoStaff *) curstaff->data)->nummeasures++; } } else { store_for_undo_measure_create (si, si->currentstaffnum, pos); barlinenode = g_malloc0 (sizeof (DenemoMeasure)); //use NULL originally ((DenemoStaff *) si->currentstaff->data)->themeasures = g_list_insert (staff_first_measure_node (si->currentstaff), barlinenode, pos); ((DenemoStaff *) si->currentstaff->data)->nummeasures++; } gint maxmeasures = 0; for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) { maxmeasures = MAX (maxmeasures, ((DenemoStaff *) curstaff->data)->nummeasures); } if (g_list_length (si->measurewidths) < maxmeasures) { si->measurewidths = g_list_insert (si->measurewidths, GINT_TO_POINTER (si->measurewidth), pos); } } if (all) cache_all(); else cache_staff (si->currentstaff); set_measure_transition (-20 * nummeasures, all); measurenode *ret = g_list_nth (staff_first_measure_node (si->currentstaff), pos); // displayhelper (Denemo.project); // score_status(Denemo.project, TRUE); //check not returning NULL!!!! si->cursoroffend = FALSE;//This was left to the drawing routine to set, but it can happen that no draw occurs before the value is needed. if(all) stage_undo (si, ACTION_STAGE_START); if (ret) return ret; g_warning ("Add measures was going to return NULL"); return g_list_last (staff_first_measure_node (si->currentstaff)); } measurenode * dnm_addmeasures (DenemoMovement * si, gint pos, guint nummeasures, gint all) { return addmeasures (si, pos, nummeasures, all); } /** * g_list_foreach function called by freeobjlist */ static void freeit_object (gpointer data, gpointer user_data) { freeobject ((DenemoObject *) data); } /** * Free a measures objects * */ void freeobjlist (gpointer data) { objnode *delobjs = (objnode *) data; if (delobjs) { /* Free all the Denemo objects */ g_list_foreach (delobjs, freeit_object, NULL); /* Free the object list itself */ g_list_free (delobjs); } } DenemoMeasure * clone_measure (DenemoMeasure* m) { GList *g; DenemoMeasure *ret = g_malloc0 (sizeof (DenemoMeasure)); memcpy (ret, m, sizeof (DenemoMeasure)); ret->objects = NULL; for (g=m->objects;g;g=g->next) ret->objects = g_list_append (ret->objects, dnm_clone_object (g->data)); //the cache values will need recalculating depending on how the clone is used. return ret; } void free_measure (DenemoMeasure *m) { GList *g; for (g=m->objects;g;g=g->next) freeobjlist (g); m->objects = NULL; } /** * staffremovemeasures * Contains common code to remove a measure from a staff * * @param curstaff the staff to remove the measure from * @param pos the position in the staff to remove the measure from * */ void staffremovemeasures (staffnode * curstaff, guint pos) { //g_debug ("In Staffremovemeasures\n"); DenemoMovement *si = Denemo.project->movement; measurenode *firstmeasure; measurenode *delmeasure; firstmeasure = staff_first_measure_node (curstaff); delmeasure = g_list_nth (firstmeasure, pos); if (delmeasure) { // g_debug ("Firstmeasure %x\t DelMeasure %x \t Position\n", // firstmeasure, delmeasure, pos); DenemoUndoData *undo; if (!si->undo_guard) { undo = (DenemoUndoData *) g_malloc (sizeof (DenemoUndoData)); undo->object = clone_measure ((DenemoMeasure*)delmeasure->data); } // freeobjlist (((DenemoMeasure*)delmeasure->data)->objects, NULL); free_measure (delmeasure->data); ((DenemoStaff *) curstaff->data)->themeasures = g_list_remove_link (firstmeasure, delmeasure); //FIXME DANGER g_free ((DenemoMeasure*)delmeasure->data); g_list_free_1 (delmeasure); ((DenemoStaff *) curstaff->data)->nummeasures--; if ( ((DenemoStaff *) curstaff->data)->themeasures != NULL) {//if the removed measures have a clef change in them the noteheights may need to change so... cache_staff (curstaff); staff_fix_note_heights (curstaff->data); } if (!si->undo_guard) { get_position (si, &undo->position); //!!!!!!!! that is setting the cursor position undo->position.staff = 1 + g_list_position (si->thescore, curstaff); g_print ("Setting staff %d\n", undo->position.staff); undo->action = ACTION_MEASURE_DELETE; update_undo_info (si, undo); } } else g_warning ("Request to delete non-existent measure %d", pos); } /** * Remove measures at given position, and return an appropriate * currentmeasure * * @param si pointer to the scoreinfo structure * @param pos position to remove the measures from * @param nummeasures number of measures to remove * @param all remove from all staffs */ measurenode * removemeasures (DenemoMovement * si, guint pos, guint nummeasures, gboolean all) { staffnode *curstaff; measurenode *firstmeasure; GList *temp; guint totalmeasures = 0; guint i; if (nummeasures <= g_list_length (staff_first_measure_node ((staffnode *) si->currentstaff)) - pos) { if(all) stage_undo (si, ACTION_STAGE_END); for (i = 0; i < nummeasures; i++) { totalmeasures = 0; for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) { if (curstaff == si->currentstaff || all) { staffremovemeasures (curstaff, pos); if (!staff_first_measure_node (curstaff)) { ((DenemoStaff *) curstaff->data)->themeasures = g_list_append (NULL, g_malloc0(sizeof (DenemoMeasure))); ((DenemoStaff *) curstaff->data)->nummeasures = 1; } } } for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) { totalmeasures = MAX (totalmeasures, ((DenemoStaff *) curstaff->data)->nummeasures); } if (totalmeasures <= (g_list_length (si->measurewidths) - 1)) { /* And get rid of the no-longer-needed width data too */ temp = g_list_nth (si->measurewidths, pos); si->measurewidths = g_list_remove_link (si->measurewidths, temp); g_list_free_1 (temp); } } set_measure_transition (20, all); all? cache_all (): cache_staff (si->currentstaff); if(all) stage_undo (si, ACTION_STAGE_START); } else { g_warning (_("removemeasures: received request to delete more measures\ than exist. Junking request.")); return si->currentmeasure; } firstmeasure = staff_first_measure_node (si->currentstaff); if (pos == g_list_length (staff_first_measure_node ((staffnode *) si->currentstaff))) { /* That is, we deleted the last measure */ si->currentmeasurenum--; return g_list_nth (firstmeasure, pos - 1); } else return g_list_nth (firstmeasure, pos); } /** * This function calculates the number of ticks per beat in a given * time signature */ gint calcticksperbeat (gint time1, gint time2) { gint ret = WHOLE_NUMTICKS / time2; /* If time1 is divisible by three and time2 is greater than 4; * e.g.,the time signature is 3/8, 15/16, etc., it's assumed that * the beat group is actually 3 times what's above */ if (time2 > 4 && time1 % 3 == 0) ret *= 3; return ret; } /* looks at succeeding objects to see if the current object is the last chord in a grace returns ENDGRACE if it is */ static gint is_end_grace (objnode * curobjnode) { for (; curobjnode->next; curobjnode = curobjnode->next) { DenemoObject *obj = (DenemoObject *) curobjnode->next->data; if (obj->type == CHORD) { if (((chord *) obj->object)->is_grace) return 0; else return ENDGRACE; } } return ENDGRACE; } /** * This function goes through a measure and properly sets * durinticks and starttickofnextnote values for everything in * that measure, tuplets or no. * It also marks the end of grace groups * * It works out that this function can be called wherever * calculatebeamsandstemdirs is invoked, and would share code besides, so * that's precisely where it is invoked */ static void settickvalsinmeasure (objnode * theobjs) { gint numerator = 1, denominator = 1; objnode *curobjnode; DenemoObject *theobj; gint ticks_so_far = 0; gint basic_ticks_in_tuplet_group = 0; gboolean in_tuplet = FALSE; for (curobjnode = theobjs; curobjnode; curobjnode = curobjnode->next) { theobj = (DenemoObject *) curobjnode->data; theobj->starttick = ticks_so_far + (basic_ticks_in_tuplet_group * numerator / denominator); if (theobj->type == CHORD) { if (in_tuplet) { if (!((chord *) theobj->object)->is_grace) { set_tuplefied_numticks (theobj, numerator, denominator); basic_ticks_in_tuplet_group += theobj->basic_durinticks; } else { if(is_end_grace (curobjnode)) ((chord *) theobj->object)->is_grace |= ENDGRACE; else ((chord *) theobj->object)->is_grace &= (~ENDGRACE); //and re-instate if needed theobj->durinticks = 0; } } else { ((chord *) theobj->object)->is_grace &= (GRACED_NOTE | ACCIACCATURA); //leave any fixed grace, changed by toggle. if (((chord *) theobj->object)->is_grace) { if(is_end_grace (curobjnode)) ((chord *) theobj->object)->is_grace |= ENDGRACE; else ((chord *) theobj->object)->is_grace &= (~ENDGRACE); //and re-instate if needed theobj->durinticks = 0; } else theobj->durinticks = theobj->basic_durinticks; ticks_so_far += theobj->durinticks; } } else if (theobj->type == TUPOPEN) { in_tuplet = TRUE; numerator = ((tupopen *) theobj->object)->numerator; denominator = ((tupopen *) theobj->object)->denominator; /* basic_ticks_in_tuplet_group = 0; does not work when nested tuplets are used */ } else if (theobj->type == TUPCLOSE) { in_tuplet = FALSE; ticks_so_far += ((basic_ticks_in_tuplet_group * numerator) / denominator); numerator = 1; denominator = 1; basic_ticks_in_tuplet_group = 0; } else if (theobj->type == LILYDIRECTIVE) ticks_so_far += theobj->durinticks; theobj->starttickofnextnote = ticks_so_far + (basic_ticks_in_tuplet_group * numerator / denominator); //this goes up too fast for grace notes... //g_debug("start tick next %d\n", theobj->starttickofnextnote); } } /** * This function simply sets stem directions. It probably deals with * staves that have a fixed stem direction inefficiently, but this was * the easiest way to add things to the existing code. */ static void setsdir (objnode * starter, objnode * ender, gint beamgroup_sum, gint beamgroup_number, gint beamgroup_highest, gint beamgroup_lowest, gint clef, gint stem_directive) { objnode *curobjnode; DenemoObject *theobj; gint avgoffset = beamgroup_number ? beamgroup_sum / beamgroup_number : 0; gint avgheight = calculateheight (avgoffset, clef); gboolean is_stemup = TRUE; gint stemoffset; gint stemy; #if 0 { static gint count = 0; count++; g_debug ("Call %d ++++++++++++++++++++++++++++++++\n\ Stem directive %s\n\ Clef %d\n\ ------------------------------\n", count, stem_directive == 2 ? "Neutral" : stem_directive == 1 ? "Down" : "Up", clef); } #endif switch (stem_directive) { case DENEMO_STEMUP: is_stemup = TRUE; break; case DENEMO_STEMBOTH: is_stemup = avgheight > MID_STAFF_HEIGHT; break; case DENEMO_STEMDOWN: is_stemup = FALSE; break; } theobj = (DenemoObject *) starter->data; if (theobj->type == CHORD && (((chord *) theobj->object)->is_grace)) is_stemup = TRUE; if (is_stemup) stemoffset = MAX (beamgroup_lowest + 7, beamgroup_highest + 5); else stemoffset = MIN (beamgroup_highest - 7, beamgroup_lowest - 5); stemy = calculateheight (stemoffset, clef); /* Okay; now that we've got everything calculated, just roll through * the measure and set stem heights. */ for (curobjnode = starter; curobjnode != ender->next; curobjnode = curobjnode->next) { theobj = (DenemoObject *) curobjnode->data; if (theobj->type == CHORD) { if ((((chord *) theobj->object)->baseduration <= 0)) /* Whole notes are always laid out stemup */ ((chord *) theobj->object)->is_stemup = TRUE; else { if (((chord *) theobj->object)->is_grace) ((chord *) theobj->object)->is_stemup = TRUE; else ((chord *) theobj->object)->is_stemup = is_stemup; ((chord *) theobj->object)->stemy = stemy; } findreversealigns (theobj); } } } /** * This function takes all these int *s in so that appropriate values * can be fed into the function when it's called again for the * next measure -- see staff_beams_and_stems_dirs for details */ void calculatebeamsandstemdirs (DenemoMeasure *measure) { if (measure == NULL) return; objnode * theobjs = measure->objects; DenemoObject *prevobj = NULL, *theobj; objnode *curobjnode, *starter = NULL; chord chordval; gint beatendsat, ticksperbeat; gint beamgroup_sum = 0; /* Sum of mid_c_offsets in the beamgroup */ gint beamgroup_number = 0; gint beamgroup_highest = 0; gint beamgroup_lowest = 0; gboolean isbeambreak; gint theclef = measure->clef->type; gint thetime1 = measure->timesig->time1; gint thetime2 = measure->timesig->time2; gint thestem_directive = measure->stemdir->type; gint next_clef = theclef; /* Useful for when a clef intrudes mid-beamgroup */ gint next_stem_directive = thestem_directive; if (theobjs==NULL) return; #if 0 { static gint count = 0; count++; gint stem = *stem_directive; g_debug ("Call calc %d #################################\n\ Stem directive %s\n\ Clef %d\n\ ------------------------------\n", count, stem == 2 ? "Neutral" : stem == 1 ? "Down" : "Up", next_clef); } #endif ticksperbeat = calcticksperbeat (thetime1, thetime2); settickvalsinmeasure (theobjs); beatendsat = ticksperbeat; for (curobjnode = theobjs; curobjnode; prevobj = theobj, curobjnode = curobjnode->next) { theobj = (DenemoObject *) curobjnode->data; isbeambreak = (theobj->type == CHORD) && (!((chord *) theobj->object)->notes || ((chord *) theobj->object)->is_grace); if (theobj->type != CHORD || isbeambreak) { /* A non-chord or rest always breaks up a beam group */ /* LilyPond directives can have their own behaviour, starting with *not* forcing beam breaks */ /* if(theobj->type != LILYDIRECTIVE) */ { theobj->isstart_beamgroup = TRUE; theobj->isend_beamgroup = TRUE; } switch (theobj->type) { case CLEF: next_clef = ((clef *) theobj->object)->type; break; case STEMDIRECTIVE: next_stem_directive = ((stemdirective *) theobj->object)->type; break; default: break; } } else { /* Determine whether this is the start or end of another * beam group. Quarter notes or longer automatically are. */ if (((chord *) theobj->object)->baseduration <= 2) theobj->isstart_beamgroup = theobj->isend_beamgroup = TRUE; else /* otherwise... */ { if (prevobj) theobj->isstart_beamgroup = prevobj->isend_beamgroup; else theobj->isstart_beamgroup = TRUE; /* Does this note occupy a beat boundary. i.e., it's dotted, * syncopated, whatever? If so, then it's its own beamgroup. */ if (theobj->starttickofnextnote > beatendsat) theobj->isstart_beamgroup = theobj->isend_beamgroup = TRUE; /* Does it end exactly on the beat? Then it's the end of * the beamgroup */ else if (theobj->starttickofnextnote == beatendsat) theobj->isend_beamgroup = TRUE; /* Is it the last note in the measure */ else if (!curobjnode->next) theobj->isend_beamgroup = TRUE; /* Okay. So it's not the end of the beamgroup */ else theobj->isend_beamgroup = FALSE; } /* End inner else */ } /* End outer else */ /* Update beatendsat to reflect the bit of music that's just * been tacked on */ while (theobj->starttickofnextnote >= beatendsat) beatendsat += ticksperbeat; /* Backtrack a little bit -- we may not have known that prevobj * was the end of the preceding beamgroup until just now. If it * is, set the stem direction and such for the preceding * beamgroup. */ if (prevobj && !prevobj->isend_beamgroup && theobj->isstart_beamgroup) { prevobj->isend_beamgroup = TRUE; setsdir (starter, curobjnode->prev, beamgroup_sum, beamgroup_number, beamgroup_highest, beamgroup_lowest, theclef, thestem_directive); } /* Now that we've determined this note's status, what to actually * do about it: */ theclef = theobj->clef->type; thestem_directive = theobj->stemdir->type; if (theobj->isstart_beamgroup) { starter = curobjnode; beamgroup_sum = beamgroup_number = 0; beamgroup_highest = G_MININT; beamgroup_lowest = G_MAXINT; } if (theobj->type == CHORD) { chordval = *(chord *) theobj->object; beamgroup_sum += chordval.sum_mid_c_offset; beamgroup_number += g_list_length (chordval.notes); beamgroup_highest = MAX (beamgroup_highest, chordval.highestpitch); beamgroup_lowest = MIN (beamgroup_lowest, chordval.lowestpitch); } if (theobj->isend_beamgroup) { setsdir (starter, curobjnode, beamgroup_sum, beamgroup_number, beamgroup_highest, beamgroup_lowest, theclef, thestem_directive); } } /* End object loop */ } /* End function */ #define ACCS_TOO_CLOSE 10 /** * This function offsets accidentals that are near to each * other on the same chord. */ void set_accidental_positions (DenemoObject * the_chord) { GList *current; note *current_note; gint columns[ACCS_TOO_CLOSE]; gint column_widths[ACCS_TOO_CLOSE]; gint column_positions[ACCS_TOO_CLOSE]; gint i; chord chordval = *(chord *) the_chord->object; gint baseduration = chordval.baseduration; if (g_list_length (chordval.notes) > ACCS_TOO_CLOSE) return; baseduration = MAX (baseduration, 0); gint additional_space = ((!chordval.is_stemup && chordval.is_reversealigned) ? headwidths[MIN (baseduration, 2)] : 0); for (i = 0; i < ACCS_TOO_CLOSE; i++) { columns[i] = G_MAXINT; column_widths[i] = 0; } /* First pass through notes: assign accidentals to numerical columns: 0 -> closest to noteheads, ACCS_TOO_CLOSE - 1 -> furthest away. Store this value in position_of_accidental, though it will be replaced fairly quickly. */ for (current = g_list_last (chordval.notes); current; current = current->prev) { current_note = (note *) current->data; if (current_note->showaccidental) { for (i = 0; columns[i] < current_note->mid_c_offset + ACCS_TOO_CLOSE; i++) ; current_note->position_of_accidental = i; columns[i] = current_note->mid_c_offset; column_widths[i] = MAX (column_widths[i], accwidths[current_note->enshift + 2]); } } /* Second pass: go through the notes again and replace position_of_accidental with a more useful value. */ column_positions[0] = (column_widths[0] + additional_space + EXTRABACKOFF); for (i = 1; i < ACCS_TOO_CLOSE; i++) column_positions[i] = (column_positions[i - 1] + column_widths[i] + EXTRABACKOFF); for (current = chordval.notes; current; current = current->next) { current_note = (note *) current->data; if (current_note->showaccidental) current_note->position_of_accidental = column_positions[current_note->position_of_accidental]; } } #define UNSET -3 #define CONTRADICTED 3 /** * Calculate which accidentials should be shown * for each note of each chord of the measure whose list of objects is passed in * It also changes minpixelsalloted value of keysginatures to cope with the varying size (dependent on previous keysignature) by calling draw_key in dry-run mode. */ void showwhichaccidentals (objnode * theobjs) { if(theobjs==NULL) return; gint curkey; gint * initialaccs; gint whatpersisted[7]; static gint initialaccsthischord[7] = { UNSET, UNSET, UNSET, UNSET, UNSET, UNSET, UNSET }; gint accsthischord[7]; gboolean freshthischord[7]; gboolean contradicted[7]; gint otn; /* offsettonumber */ objnode *curobjnode; DenemoObject *theobj = (DenemoObject *) theobjs->data;; GList *curtone; note *thetone; gint ret[7]; gint i; keysig *thekeysig = theobj->keysig; curkey = thekeysig->number; initialaccs = thekeysig->accs; memcpy (ret, initialaccs, SEVENGINTS); memcpy (whatpersisted, initialaccs, SEVENGINTS); for (curobjnode = theobjs; curobjnode; curobjnode = curobjnode->next) { theobj = (DenemoObject *) curobjnode->data; if (theobj->type == CHORD) { ((chord *) theobj->object)->hasanacc = FALSE; memcpy (accsthischord, initialaccsthischord, SEVENGINTS); memset (freshthischord, 0, SEVENGINTS); memset (contradicted, 0, SEVENGINTS); /* First loop through chord - looks for conflicting values * for the same note */ for (curtone = ((chord *) theobj->object)->notes; curtone; curtone = curtone->next) { thetone = (note *) curtone->data; otn = offsettonumber (thetone->mid_c_offset); if (thetone->enshift != whatpersisted[otn]) { freshthischord[otn] = TRUE; whatpersisted[otn] = thetone->enshift; } if (accsthischord[otn] == UNSET) accsthischord[otn] = thetone->enshift; else if (accsthischord[otn] != thetone->enshift) { contradicted[otn] = TRUE; whatpersisted[otn] = CONTRADICTED; } } /* End first loop through chord */ /* Now loop through the chord again, setting note->showaccidental * appropriately */ for (curtone = ((chord *) theobj->object)->notes; curtone; curtone = curtone->next) { thetone = (note *) curtone->data; otn = offsettonumber (thetone->mid_c_offset); if (contradicted[otn]) /* We've got conflicting accidentals for the same pitch */ thetone->showaccidental = ((chord *) theobj->object)->hasanacc = TRUE; else if (freshthischord[otn]) /* A new accidental not present in the original chord */ thetone->showaccidental = ((chord *) theobj->object)->hasanacc = TRUE; else thetone->showaccidental = FALSE; // FIXME - you should use a script to apply these directives & set hasnacc with that. if (thetone->directives && ((DenemoDirective *) thetone->directives->data)->postfix && (*((DenemoDirective *) thetone->directives->data)->postfix->str == '!' || *((DenemoDirective *) thetone->directives->data)->postfix->str == '?')) thetone->showaccidental = ((chord *) theobj->object)->hasanacc = (*((DenemoDirective *) thetone->directives->data)->postfix->str == '?') ? DENEMO_CAUTIONARY : DENEMO_REMINDER; } /* End second loop through chord */ set_accidental_positions (theobj); setpixelmin (theobj); } /* End if chord */ else if (theobj->type == KEYSIG) { for (i = 0; i < 7; i++) initialaccsthischord[i] = UNSET; memcpy (ret, ((keysig *) theobj->object)->accs, SEVENGINTS); memcpy (whatpersisted, ret, SEVENGINTS); theobj->minpixelsalloted = draw_key (NULL, 0, 0, ((keysig *) theobj->object)->number, curkey, 0, FALSE, (keysig *) theobj->object); curkey = ((keysig *) theobj->object)->number; } } /* End object loop */ //memcpy (initialaccs, ret, SEVENGINTS); } /** * Force and accidental to be shown on the score. * * @param theobj the DenemoObject to force the accidential on */ void forceaccidentals (DenemoObject * theobj) { GList *curtone; note *thetone; for (curtone = ((chord *) theobj->object)->notes; curtone; curtone = curtone->next) { thetone = (note *) curtone->data; thetone->showaccidental = TRUE; } ((chord *) theobj->object)->hasanacc = TRUE; set_accidental_positions (theobj); setpixelmin (theobj); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); } /** * Return the first object node of the given measure * @param mnode a measurenode * @return the first object node of the measure */ objnode * measure_first_obj_node (measurenode * mnode) { return mnode?(objnode *) ((DenemoMeasure*)mnode->data)->objects:NULL; //FIXME DANGER was expecting a node with NULL data for the first object in the case of an empty measure. } /** * Return the last object node of the given measure * @param mnode a measurenode * @return the last object node of the measure */ objnode * measure_last_obj_node (measurenode * mnode) { return g_list_last ((objnode *) ((DenemoMeasure*)mnode->data)->objects); } denemo-2.2.0/src/command/PaxHeaders.19168/tuplet.c0000644000000000000000000000013213135434036016417 xustar0030 mtime=1500919838.343315139 30 atime=1500919918.466648472 30 ctime=1500919914.156648472 denemo-2.2.0/src/command/tuplet.c0000644000175000017500000000441613135434036020275 0ustar00jjbenhamjjbenham00000000000000/* tuplet.cpp * Set Tuplet options * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Adam Tee Matthew Hiller */ #include #include #include #include "command/tuplet.h" #include "command/chord.h" #include "command/contexts.h" #include #include "command/staff.h" #include "core/utils.h" #include "display/draw.h" #include "command/measure.h" #include "audio/midi.h" #include "command/object.h" #include "command/commandfuncs.h" DenemoObject * tuplet_open_new (gint numerator, gint denominator) { DenemoObject *tuplet; tupopen *newtup = (tupopen *) g_malloc (sizeof (tupopen)); tuplet = (DenemoObject *) g_malloc (sizeof (DenemoObject)); tuplet->type = TUPOPEN; newtup->numerator = numerator; newtup->denominator = denominator; tuplet->object = newtup; set_basic_numticks (tuplet); setpixelmin (tuplet); return tuplet; } DenemoObject * tuplet_close_new () { DenemoObject *tuplet; tupopen *newtup = (tupopen *) g_malloc (sizeof (tupopen)); //avoids a null object tuplet = (DenemoObject *) g_malloc (sizeof (DenemoObject)); tuplet->type = TUPCLOSE; tuplet->object = newtup; //avoids a null object set_basic_numticks (tuplet); setpixelmin (tuplet); return tuplet; } void duplet_insert (DenemoAction* action, DenemoScriptParam *param) { dnm_inserttuplet (Denemo.project, DUPLET); } void triplet_insert (DenemoAction* action, DenemoScriptParam *param) { dnm_inserttuplet (Denemo.project, TRIPLET); } void triplet_start (DenemoAction* action, DenemoScriptParam *param) { insertion_point (Denemo.project->movement); object_insert (Denemo.project, tuplet_open_new (2, 3)); } void tuplet_end (DenemoAction* action, DenemoScriptParam *param) { object_insert (Denemo.project, tuplet_close_new ()); } void insert_quadtuplet (DenemoAction* action, DenemoScriptParam *param) { dnm_inserttuplet (Denemo.project, QUADTUPLET); } void quintuplet_insert (DenemoAction* action, DenemoScriptParam *param) { dnm_inserttuplet (Denemo.project, QUINTUPLET); } void sextuplet_insert (DenemoAction* action, DenemoScriptParam *param) { dnm_inserttuplet (Denemo.project, SEXTUPLET); } void septuplet_insert (DenemoAction* action, DenemoScriptParam *param) { dnm_inserttuplet (Denemo.project, SEPTUPLET); } denemo-2.2.0/src/command/PaxHeaders.19168/lilydirectives.c0000644000000000000000000000013213135434036020135 xustar0030 mtime=1500919838.339981805 30 atime=1500919918.473315139 30 ctime=1500919914.119981805 denemo-2.2.0/src/command/lilydirectives.c0000644000175000017500000041113313135434036022011 0ustar00jjbenhamjjbenham00000000000000/* lilydirectives.c * Implements lilydirectives which are not notes * * for Denemo, a gtk+ frontend to GNU Lilypond * Richard Shann 2009, 2010, 2011 * A Tee (c) 2000-2005 */ #include #include #include #include #include "command/lilydirectives.h" #include "command/chord.h" #include "display/calculatepositions.h" #include "command/commandfuncs.h" #include "command/contexts.h" #include "ui/dialogs.h" #include "display/draw.h" #include "command/object.h" #include "command/staff.h" #include "core/utils.h" #include "core/prefops.h" #include "core/view.h" #include "core/menusystem.h" #include "ui/texteditors.h" //#if GTK_MAJOR_VERSION==2 //#define GDK_KEY_Escape GDK_Escape //#define GDK_KEY_Return GDK_Return //#define GDK_KEY_Tab GDK_Tab //#define GDK_KEY_BackSpace GDK_BackSpace //#endif static gboolean text_edit_directive (DenemoDirective * directive, gchar * what); static GHashTable *action_scripts; static void action_script_table_insert (gchar * name, gchar * script) { if (!action_scripts) action_scripts = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); g_hash_table_insert (action_scripts, g_strdup (name), script); } void set_action_script_for_tag (gchar * tag, gchar * script) { action_script_table_insert (tag, script); } gchar * get_action_script (gchar * name) { if (action_scripts) return (gchar *) g_hash_table_lookup (action_scripts, name); return NULL; } static void gtk_menu_item_set_label_text (GtkMenuItem * item, gchar * text) { GtkWidget *label = (GtkWidget *) gtk_bin_get_child (GTK_BIN (item)); if (label) gtk_label_set_text (GTK_LABEL (label), text); } static void toggle_locked (GtkWidget * widget, gboolean * locked) { //g_debug("Called with %d\n", *locked); *locked = !*locked; } /* lookup a directive tagged with TAG in a list DIRECTIVES and return it. if TAG is NULL or "" return the first directive else return NULL DEPRECATED * If TAG has two lines the first only is matched, while the second is DEPRECATED* interpreted as a number selecting which matching directive to return * USE d-DirectiveGetNthTag-##what## instead. * */ DenemoDirective * find_directive (GList * directives, gchar * tag) { DenemoDirective *directive = NULL; if (tag && *tag) { GList *g; gchar *newline; gint number = 0; //number of matching directive required 1 is first matching gint count = 0; //count of directives with matching name if (*tag == '\n') return NULL; for (newline = tag; *newline; newline++) { if (*newline == '\n') { number = atoi (newline + 1); if (number) *newline = 0; break; } } for (g = directives; g; g = g->next) { directive = (DenemoDirective *) g->data; if (directive->tag && (number ? g_str_has_prefix (directive->tag->str, tag) : !strcmp (tag, directive->tag->str))) { if (number == 0) return directive; count++; if (number == count) { if (newline != tag) *newline = '\n'; return directive; } } directive = NULL; } } else directive = (DenemoDirective *) directives->data; return directive; } static DenemoDirective * find_directive_number (GList * directives, gint num) { return g_list_nth_data (directives, num - 1); } static gboolean delete_directive (GList ** directives, gchar * tag) { DenemoDirective *directive = NULL; if (tag) { GList *g; for (g = *directives; g; g = g->next) { directive = (DenemoDirective *) g->data; if (directive->tag && !strcmp (tag, directive->tag->str)) { *directives = g_list_remove (*directives, directive); free_directive (directive); score_status (Denemo.project, TRUE); displayhelper (Denemo.project); return TRUE; } } } return FALSE; } /* free a list of directives and set to NULL */ void delete_directives (GList ** directives) { DenemoDirective *directive = NULL; //FIXME use free_directives if (directives) while (*directives) { directive = (DenemoDirective *) (*directives)->data; *directives = g_list_remove (*directives, directive); free_directive (directive); } } static DenemoDirective * new_directive (gchar * tag) { DenemoDirective *directive = (DenemoDirective *) g_malloc0 (sizeof (DenemoDirective)); if (tag) directive->tag = g_string_new (tag); return directive; } typedef enum attach_type { ATTACH_NOTE, ATTACH_CHORD } attach_type; /** * Denemo directive attach or edit. if interactive: Allows user to attach a lilypond directive else attache the passed strings as lilypond directive attachment is to chord ( attach is ATTACH_CHORD) or to the note at the cursor */ static void attach_directive (attach_type attach, gchar * postfix, gchar * prefix, gchar * display, gchar * tag, gboolean interactive) { gchar *prefixstring = NULL, *postfixstring = NULL, *displaystring = NULL; DenemoProject *gui = Denemo.project; note *curnote = NULL; DenemoObject *curObj = get_object (); if (curObj == NULL) { if (interactive) warningdialog (_("You must put the cursor on a chord to attach LilyPond")); //FIXME find a note and ask return; } chord *thechord = NULL; thechord = (chord *) curObj->object; if (curObj->type != CHORD) { if (interactive) warningdialog (_("You must put the cursor on a chord to attach LilyPond")); return; } curnote = findnote (curObj, gui->movement->cursor_y); if (attach == ATTACH_NOTE && (curnote == NULL)) { if (interactive) warningdialog (_("You must put the cursor on a note to attach LilyPond to the note")); //FIXME find a note and ask return; } if (tag==NULL) { if (attach==ATTACH_CHORD) tag = "AttachLilyToChord"; else tag = "AttachLilyToNote"; } // setup directive to be data from thechord->directives or curnote->directives which has matching tag, or first if tag is NULL. DenemoDirective *directive = NULL; switch (attach) { case ATTACH_CHORD: if (thechord->directives == NULL) { directive = new_directive (tag); thechord->directives = g_list_append (NULL, directive); } else { directive = find_directive (thechord->directives, tag); if (directive == NULL) { if (tag) { directive = new_directive (tag); thechord->directives = g_list_append (thechord->directives, directive); } } } break; case ATTACH_NOTE: if (curnote->directives == NULL) { directive = new_directive (tag); curnote->directives = g_list_append (NULL, directive); } else { directive = find_directive (curnote->directives, tag); if (directive == NULL) { if (tag) { directive = new_directive (tag); curnote->directives = g_list_append (curnote->directives, directive); } } } break; default: g_warning (_("Error in attach type")); return; } if (interactive) { if (directive->postfix) postfixstring = directive->postfix->str; if (directive->prefix) prefixstring = directive->prefix->str; if (directive->display) displaystring = directive->display->str; prefixstring = string_dialog_entry (gui, _("Attach LilyPond"), _("Give text to place before the note"), prefixstring); postfixstring = string_dialog_entry (gui, curnote ? _("Attach LilyPond to Note") : _("Attach LilyPond to Chord"), curnote ? _("Give LilyPond text to postfix to note of chord") : _("Give LilyPond text to postfix to chord"), postfixstring); displaystring = string_dialog_entry (gui, _("Attach LilyPond"), _("Give Display text if required"), displaystring); } else { //not interactive if (prefix) prefixstring = g_strdup (prefix); if (postfix) postfixstring = g_strdup (postfix); if (display) displaystring = g_strdup (display); } #define STRINGASSIGN(field, val) \ if(val && *val) {\ if(directive->field) g_string_assign(directive->field, val);\ else directive->field=g_string_new(val);} STRINGASSIGN (postfix, postfixstring); STRINGASSIGN (prefix, prefixstring); STRINGASSIGN (display, displaystring); #undef STRINGASSIGN score_status (gui, TRUE); displayhelper (gui); g_free (postfixstring); g_free (displaystring); g_free (prefixstring); } static void create_directives (GList ** directives, gchar * tag) { *directives = g_list_append (NULL, new_directive (tag)); } static void get_lily_parameter (gchar * query, DenemoScriptParam * param) { DenemoObject *curObj = (DenemoObject *) Denemo.project->movement->currentobject ? (DenemoObject *) Denemo.project->movement->currentobject->data : NULL; param->status = curObj && curObj->type == LILYDIRECTIVE; #define ASSIGN_PARAM(field) if(!strcmp(#field, query))\ g_string_assign(param->string, lilyobj->field->str); if (param->status) { lilydirective *lilyobj = (lilydirective *) curObj->object; ASSIGN_PARAM (postfix); ASSIGN_PARAM (display); if (!strcmp ("minpixels", query)) g_string_printf (param->string, "%d", curObj->minpixelsalloted); } #undef ASSIGN_PARAM } static void insert_lily_directive (gchar * postfix, gchar * display, gboolean locked, gint minpixels) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; DenemoObject *lily; lilydirective *lilyobj = NULL; /* a lily directive object */ DenemoObject *curObj = (DenemoObject *) si->currentobject ? (DenemoObject *) si->currentobject->data : NULL; if (postfix == NULL) postfix = ""; gboolean is_new = FALSE; if (curObj && curObj->type == LILYDIRECTIVE) { g_string_assign ((lilyobj = (lilydirective *) curObj->object)->postfix, postfix); setpixelmin (curObj); //curObj->minpixelsalloted = minpixels; } else { lily = lily_directive_new (postfix); is_new = TRUE; lilyobj = (lilydirective *) lily->object; setpixelmin (lily); //lily->minpixelsalloted = minpixels;//g_debug("min pixels %d\n", lily->minpixelsalloted); } if (lilyobj) { lilyobj->locked = locked; if (*postfix == '%') { //append newline if directive starts with a LilyPond comment indicator g_string_append (lilyobj->postfix, "\n"); } if (display) { if (lilyobj->display) g_string_assign (lilyobj->display, display); else lilyobj->display = g_string_new (display); } } if (is_new) object_insert (gui, lily); score_status (gui, TRUE); displayhelper (gui); } /* Run a dialog to get a lily directive from the user the values returned must be freed by the caller */ static gboolean get_lily_directive (gchar ** directive, gchar ** display, gboolean * locked) { DenemoProject *gui = Denemo.project; GtkToggleButton *button = NULL; button = (GtkToggleButton *) gtk_check_button_new_with_label ("locked"); g_signal_connect (button, "toggled", G_CALLBACK (toggle_locked), locked); if (*locked) gtk_toggle_button_set_active (button, *locked), *locked = TRUE; //FIXME how is this supposed to be done? *directive = string_dialog_entry_with_widget (gui, _("Insert LilyPond"), _("Give LilyPond text to insert"), *directive, GTK_WIDGET (button)); if (!*directive) return FALSE; *display = string_dialog_entry (gui, _("Insert LilyPond"), _("Give Display text if required"), *display); return TRUE; } /* return the directive whose tag is prefixed with tag if present at cursor postion if tag is NULL, return any directive at current position*/ static DenemoDirective * get_standalone_directive (gchar * tag) { DenemoObject *curObj = (DenemoObject *) Denemo.project->movement->currentobject ? (DenemoObject *) Denemo.project->movement->currentobject->data : NULL; if (curObj && curObj->type == LILYDIRECTIVE) { DenemoDirective *ret = (DenemoDirective *) curObj->object; if (tag == NULL) return ret; if (*tag == 0) return ret; if (ret && ret->tag && !g_str_has_prefix (ret->tag->str, tag)) ret = NULL; return ret; } return NULL; } static DenemoObject * get_chordobject (void) { DenemoObject *curObj = get_object (); if (curObj == NULL) return NULL; if (curObj->type != CHORD) { return NULL; } return curObj; } static chord * get_chord (void) { DenemoObject *curObj = get_chordobject (); if (curObj == NULL) return NULL; return (chord *) curObj->object; } static DenemoLilyControl * get_score (void) { return &Denemo.project->lilycontrol; } static note * get_note (void) { DenemoProject *gui = Denemo.project; DenemoObject *curObj = get_chordobject (); if (curObj == NULL) return NULL; return findnote (curObj, gui->movement->cursor_y); } static note * get_strict_note (void) { DenemoProject *gui = Denemo.project; DenemoObject *curObj = get_chordobject (); if (curObj == NULL) return NULL; return findnote_strict (curObj, gui->movement->cursor_y); } static DenemoStaff * get_staff (void) { if (Denemo.project->movement->currentstaff == NULL) return NULL; return Denemo.project->movement->currentstaff->data; } #define get_voice get_staff //block for new type of directive static clef * get_clef (void) { clef *ret = NULL; DenemoObject *curObj = get_object (); if (curObj && curObj->type == CLEF) { ret = ((clef *) curObj->object); } else { DenemoStaff *curstaff = get_staff (); if (curstaff) ret = &curstaff->clef; } return ret; } static DenemoDirective * get_clef_directive (gchar * tag) { clef *curclef = get_clef (); if (curclef == NULL || (curclef->directives == NULL)) return NULL; return find_directive (curclef->directives, tag); } gboolean delete_clef_directive (gchar * tag) { clef *curclef = get_clef (); if (curclef == NULL || (curclef->directives == NULL)) return FALSE; DenemoDirective *directive = get_clef_directive (tag); if (directive == NULL) return FALSE; signal_structural_change (Denemo.project); return delete_directive (&curclef->directives, tag); } // end of block for new type of directive static keysig * get_keysig (void) { keysig *ret = NULL; DenemoObject *curObj = get_object (); if (curObj && curObj->type == KEYSIG) { ret = ((keysig *) curObj->object); } else { DenemoStaff *curstaff = get_staff (); if (curstaff) ret = &curstaff->keysig; } return ret; } static DenemoDirective * get_keysig_directive (gchar * tag) { keysig *curkeysig = get_keysig (); if (curkeysig == NULL || (curkeysig->directives == NULL)) return NULL; return find_directive (curkeysig->directives, tag); } gboolean delete_keysig_directive (gchar * tag) { keysig *curkeysig = get_keysig (); if (curkeysig == NULL || (curkeysig->directives == NULL)) return FALSE; DenemoDirective *directive = get_keysig_directive (tag); if (directive == NULL) return FALSE; signal_structural_change (Denemo.project); return delete_directive (&curkeysig->directives, tag); } static timesig * get_timesig (void) { timesig *ret = NULL; DenemoObject *curObj = get_object (); if (curObj && curObj->type == TIMESIG) { ret = ((timesig *) curObj->object); } else { DenemoStaff *curstaff = get_staff (); if (curstaff) ret = &curstaff->timesig; } return ret; } static DenemoDirective * get_timesig_directive (gchar * tag) { timesig *curtimesig = get_timesig (); if (curtimesig == NULL || (curtimesig->directives == NULL)) return NULL; return find_directive (curtimesig->directives, tag); } gboolean delete_timesig_directive (gchar * tag) { timesig *curtimesig = get_timesig (); if (curtimesig == NULL || (curtimesig->directives == NULL)) return FALSE; DenemoDirective *directive = get_timesig_directive (tag); if (directive == NULL) return FALSE; signal_structural_change (Denemo.project); return delete_directive (&curtimesig->directives, tag); } static tuplet * get_tuplet (void) { tuplet *ret = NULL; DenemoObject *curObj = get_object (); if (curObj && (curObj->type == TUPOPEN || curObj->type == TUPCLOSE)) { ret = ((tuplet *) curObj->object); } return ret; } static DenemoDirective * get_tuplet_directive (gchar * tag) { tuplet *curtuplet = get_tuplet (); if (curtuplet == NULL || (curtuplet->directives == NULL)) return NULL; return find_directive (curtuplet->directives, tag); } gboolean delete_tuplet_directive (gchar * tag) { tuplet *curtuplet = get_tuplet (); if (curtuplet == NULL || (curtuplet->directives == NULL)) return FALSE; DenemoDirective *directive = get_tuplet_directive (tag); if (directive == NULL) return FALSE; return delete_directive (&curtuplet->directives, tag); } static stemdirective * get_stemdirective (void) { stemdirective *ret = NULL; DenemoObject *curObj = get_object (); if (curObj && (curObj->type == STEMDIRECTIVE)) { ret = ((stemdirective *) curObj->object); } return ret; } static DenemoDirective * get_stemdirective_directive (gchar * tag) { stemdirective *curstemdirective = get_stemdirective (); if (curstemdirective == NULL || (curstemdirective->directives == NULL)) return NULL; return find_directive (curstemdirective->directives, tag); } gboolean delete_stemdirective_directive (gchar * tag) { stemdirective *curstemdirective = get_stemdirective (); if (curstemdirective == NULL || (curstemdirective->directives == NULL)) return FALSE; DenemoDirective *directive = get_stemdirective_directive (tag); if (directive == NULL) return FALSE; return delete_directive (&curstemdirective->directives, tag); } static scoreheader * get_scoreheader (void) { return &Denemo.project->scoreheader; } static DenemoDirective * get_scoreheader_directive (gchar * tag) { scoreheader *curscoreheader = get_scoreheader (); if (curscoreheader == NULL || (curscoreheader->directives == NULL)) return NULL; return find_directive (curscoreheader->directives, tag); } gboolean delete_scoreheader_directive (gchar * tag) { scoreheader *curscoreheader = get_scoreheader (); if (curscoreheader == NULL || (curscoreheader->directives == NULL)) return FALSE; DenemoDirective *directive = get_scoreheader_directive (tag); if (directive == NULL) return FALSE; signal_structural_change (Denemo.project); return delete_directive (&curscoreheader->directives, tag); } static paper * get_paper (void) { return &Denemo.project->paper; } static DenemoDirective * get_paper_directive (gchar * tag) { paper *curpaper = get_paper (); if (curpaper == NULL || (curpaper->directives == NULL)) return NULL; return find_directive (curpaper->directives, tag); } gboolean delete_paper_directive (gchar * tag) { paper *curpaper = get_paper (); if (curpaper == NULL || (curpaper->directives == NULL)) return FALSE; DenemoDirective *directive = get_paper_directive (tag); if (directive == NULL) return FALSE; signal_structural_change (Denemo.project); return delete_directive (&curpaper->directives, tag); } static layout * get_layout (void) { return &Denemo.project->movement->layout; } static DenemoDirective * get_layout_directive (gchar * tag) { layout *curlayout = get_layout (); if (curlayout == NULL || (curlayout->directives == NULL)) return NULL; return find_directive (curlayout->directives, tag); } gboolean delete_layout_directive (gchar * tag) { layout *curlayout = get_layout (); if (curlayout == NULL || (curlayout->directives == NULL)) return FALSE; DenemoDirective *directive = get_layout_directive (tag); if (directive == NULL) return FALSE; signal_structural_change (Denemo.project); return delete_directive (&curlayout->directives, tag); } static movementcontrol * get_movementcontrol (void) { return &Denemo.project->movement->movementcontrol; } DenemoDirective * get_movementcontrol_directive (gchar * tag) { movementcontrol *curmovementcontrol = get_movementcontrol (); if (curmovementcontrol == NULL || (curmovementcontrol->directives == NULL)) return NULL; return find_directive (curmovementcontrol->directives, tag); } gboolean delete_movementcontrol_directive (gchar * tag) { movementcontrol *curmovementcontrol = get_movementcontrol (); if (curmovementcontrol == NULL || (curmovementcontrol->directives == NULL)) return FALSE; DenemoDirective *directive = get_movementcontrol_directive (tag); if (directive == NULL) return FALSE; signal_structural_change (Denemo.project); return delete_directive (&curmovementcontrol->directives, tag); } static header * get_header (void) { return &Denemo.project->movement->header; } static DenemoDirective * get_header_directive (gchar * tag) { header *curheader = get_header (); if (curheader == NULL || (curheader->directives == NULL)) return NULL; return find_directive (curheader->directives, tag); } gboolean delete_header_directive (gchar * tag) { header *curheader = get_header (); if (curheader == NULL || (curheader->directives == NULL)) return FALSE; DenemoDirective *directive = get_header_directive (tag); if (directive == NULL) return FALSE; signal_structural_change (Denemo.project); return delete_directive (&curheader->directives, tag); } DenemoDirective * get_note_directive (gchar * tag) { note *curnote = get_note (); if (curnote == NULL || (curnote->directives == NULL)) return NULL; return find_directive (curnote->directives, tag); } DenemoDirective * get_note_directive_number (gint num) { note *curnote = get_note (); if (curnote == NULL || (curnote->directives == NULL)) return NULL; return find_directive_number (curnote->directives, num); } static DenemoDirective * get_chord_directive (gchar * tag) { DenemoObject *curObj = get_chordobject (); if (curObj == NULL) return NULL; chord *thechord = (chord *) curObj->object; if (thechord->directives == NULL) return NULL; return find_directive (thechord->directives, tag); } static DenemoDirective * get_object_directive (gchar * tag) { DenemoObject *curObj = get_object (); if (curObj == NULL) return NULL; if (curObj->directives == NULL) return NULL; return find_directive (curObj->directives, tag); } gboolean delete_object_directive (gchar * tag) { DenemoObject *curObj = get_object (); if (curObj == NULL) return FALSE; if (curObj->directives == NULL) return FALSE; return delete_directive (&curObj->directives, tag); } DenemoDirective * get_score_directive (gchar * tag) { return find_directive (Denemo.project->lilycontrol.directives, tag); } static DenemoDirective * get_staff_directive (gchar * tag) { if (Denemo.project->movement->currentstaff == NULL) return NULL; DenemoStaff *curstaff = Denemo.project->movement->currentstaff->data; //FIXME return NULL if not primary staff if (curstaff == NULL || curstaff->staff_directives == NULL) return NULL; return find_directive (curstaff->staff_directives, tag); } static DenemoDirective * get_voice_directive (gchar * tag) { if (Denemo.project->movement->currentstaff == NULL) return NULL; DenemoStaff *curstaff = Denemo.project->movement->currentstaff->data; if (curstaff == NULL || curstaff->voice_directives == NULL) return NULL; return find_directive (curstaff->voice_directives, tag); } gboolean delete_staff_directive (gchar * tag) { if (Denemo.project->movement->currentstaff == NULL) return FALSE; DenemoStaff *curstaff = Denemo.project->movement->currentstaff->data; if (curstaff == NULL || curstaff->staff_directives == NULL) return FALSE; signal_structural_change (Denemo.project); return delete_directive (&curstaff->staff_directives, tag); } gboolean delete_initialclef_directive (gchar * tag) { if (Denemo.project->movement->currentstaff == NULL) return FALSE; DenemoStaff *curstaff = Denemo.project->movement->currentstaff->data; if (curstaff == NULL || curstaff->clef.directives == NULL) return FALSE; signal_structural_change (Denemo.project); return delete_directive (&curstaff->clef.directives, tag); } gboolean delete_voice_directive (gchar * tag) { if (Denemo.project->movement->currentstaff == NULL) return FALSE; DenemoStaff *curstaff = Denemo.project->movement->currentstaff->data; if (curstaff == NULL || curstaff->voice_directives == NULL) return FALSE; signal_structural_change (Denemo.project); return delete_directive (&curstaff->voice_directives, tag); } gboolean delete_note_directive (gchar * tag) { note *curnote = get_note (); if (curnote == NULL || (curnote->directives == NULL)) return FALSE; DenemoDirective *directive = get_note_directive (tag); if (directive == NULL) return FALSE; return delete_directive (&curnote->directives, tag); } gboolean delete_chord_directive (gchar * tag) { DenemoObject *curObj = get_chordobject (); if (curObj == NULL) return FALSE; chord *thechord = (chord *) curObj->object; if (thechord->directives == NULL) return FALSE; DenemoDirective *directive = get_chord_directive (tag); if (directive == NULL) return FALSE; return delete_directive (&thechord->directives, tag); } gboolean delete_score_directive (gchar * tagname) { DenemoDirective *directive = get_score_directive (tagname); if (directive == NULL) return FALSE; signal_structural_change (Denemo.project); return delete_directive (&Denemo.project->lilycontrol.directives, tagname); } #define GET_TAG_FUNC(what)\ gchar *\ what##_directive_get_tag(gchar *tag) {\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive && directive->tag)\ return directive->tag->str;\ else directive = NULL;/* get_##what##_directive(NULL)*/; \ if(directive && directive->tag)\ return directive->tag->str;\ return NULL;\ } #define GET_STR_FIELD_FUNC(what, field)\ gchar *\ what##_directive_get_##field(gchar *tag) {\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive && directive->field)\ return directive->field->str;\ return NULL;\ } //typdefs to make the macros defined below pick up the right structure for staff, voice and score as chord & note do typedef DenemoStaff staff; typedef DenemoStaff voice; typedef DenemoLilyControl score; typedef DenemoObject object; //note I think you cannot change the graphic once you have set it. #define PUT_GRAPHIC_NAME(what, directives) gboolean \ what##_directive_put_graphic(gchar *tag, gchar *value) {\ what *current = get_##what();\ if(current==NULL) return FALSE;\ if(Denemo.project->movement->currentobject)\ store_for_undo_change (Denemo.project->movement, Denemo.project->movement->currentobject->data);\ if(current->directives==NULL)\ create_directives (¤t->directives, tag);\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive==NULL){\ directive=new_directive(tag);\ current->directives = g_list_append(current->directives, directive);\ }\ loadGraphicItem(value, (DenemoGraphic **)&directive->graphic);\ if(directive->graphic_name)\ g_string_assign(directive->graphic_name, value);\ else\ directive->graphic_name = g_string_new(value);\ return TRUE;\ } #define PUT_GRAPHIC(what) PUT_GRAPHIC_NAME(what, directives) PUT_GRAPHIC (chord); PUT_GRAPHIC (note); PUT_GRAPHIC (keysig); PUT_GRAPHIC (timesig); PUT_GRAPHIC (tuplet); PUT_GRAPHIC (stemdirective) #define PUT_STR_FIELD_FUNC_NAME(what, field, name)\ gboolean \ what##_directive_put_##field(gchar *tag, gchar *value) {\ what *current = get_##what();\ if(current==NULL) return FALSE;\ if(Denemo.project->movement->currentobject)\ store_for_undo_change (Denemo.project->movement, Denemo.project->movement->currentobject->data);\ if(current->name==NULL)\ create_directives (¤t->name, tag);\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive==NULL){\ directive=new_directive(tag);\ current->name = g_list_append(current->name, directive);\ }\ if(directive->field)\ g_string_assign(directive->field, value);\ else\ directive->field = g_string_new(value);\ if(!Denemo.non_interactive){\ widget_for_directive(directive, (void(*)())what##_directive_put_graphic);\ if (directive->widget) g_object_set_data(G_OBJECT(directive->widget), "directives-pointer", ¤t->name);\ }\ return TRUE;\ } #define PUT_STR_FIELD_FUNC(what, field) PUT_STR_FIELD_FUNC_NAME(what, field, directives) #define PUT_STR_FIELD_FUNCS(what, field) PUT_STR_FIELD_FUNC_NAME(what, field, staff_directives) #define PUT_STR_FIELD_FUNCV(what, field) PUT_STR_FIELD_FUNC_NAME(what, field, voice_directives) GET_TAG_FUNC (object); GET_TAG_FUNC (standalone); GET_TAG_FUNC (chord); GET_TAG_FUNC (note); GET_TAG_FUNC (staff); GET_TAG_FUNC (voice); GET_TAG_FUNC (score); GET_TAG_FUNC (clef); GET_TAG_FUNC (timesig); GET_TAG_FUNC (tuplet); GET_TAG_FUNC (stemdirective); GET_TAG_FUNC (keysig); GET_TAG_FUNC (scoreheader); GET_TAG_FUNC (header); GET_TAG_FUNC (paper); GET_TAG_FUNC (layout); GET_TAG_FUNC (movementcontrol); #undef GET_TAG_FUNC GET_STR_FIELD_FUNC (score, midibytes); GET_STR_FIELD_FUNC (movementcontrol, midibytes); GET_STR_FIELD_FUNC (note, midibytes); GET_STR_FIELD_FUNC (chord, midibytes); GET_STR_FIELD_FUNC (keysig, midibytes); GET_STR_FIELD_FUNC (timesig, midibytes); GET_STR_FIELD_FUNC (tuplet, midibytes); GET_STR_FIELD_FUNC (clef, midibytes); GET_STR_FIELD_FUNC (staff, midibytes); GET_STR_FIELD_FUNC (voice, midibytes); GET_STR_FIELD_FUNC (standalone, midibytes); PUT_STR_FIELD_FUNC (note, midibytes); PUT_STR_FIELD_FUNC (chord, midibytes) PUT_STR_FIELD_FUNC (keysig, midibytes) PUT_STR_FIELD_FUNC (timesig, midibytes) PUT_STR_FIELD_FUNC (tuplet, midibytes) PUT_STR_FIELD_FUNC (clef, midibytes) //cloned for grob GET_STR_FIELD_FUNC (score, grob); GET_STR_FIELD_FUNC (movementcontrol, grob); GET_STR_FIELD_FUNC (note, grob); GET_STR_FIELD_FUNC (chord, grob); GET_STR_FIELD_FUNC (staff, grob); GET_STR_FIELD_FUNC (voice, grob); GET_STR_FIELD_FUNC (clef, grob); GET_STR_FIELD_FUNC (timesig, grob); GET_STR_FIELD_FUNC (keysig, grob); GET_STR_FIELD_FUNC (tuplet, grob); GET_STR_FIELD_FUNC (stemdirective, grob); GET_STR_FIELD_FUNC (standalone, grob); GET_STR_FIELD_FUNC (standalone, graphic_name); GET_STR_FIELD_FUNC (chord, graphic_name); GET_STR_FIELD_FUNC (note, graphic_name); GET_STR_FIELD_FUNC (clef, graphic_name); GET_STR_FIELD_FUNC (keysig, graphic_name); GET_STR_FIELD_FUNC (timesig, graphic_name); GET_STR_FIELD_FUNC (tuplet, graphic_name); PUT_STR_FIELD_FUNC (score, grob) //PUT_STR_FIELD_FUNC(staff, grob) //PUT_STR_FIELD_FUNC(voice, grob) PUT_STR_FIELD_FUNC (note, grob); PUT_STR_FIELD_FUNC (chord, grob); PUT_STR_FIELD_FUNC (clef, grob); PUT_STR_FIELD_FUNC (timesig, grob); PUT_STR_FIELD_FUNC (keysig, grob); PUT_STR_FIELD_FUNC (tuplet, grob); PUT_STR_FIELD_FUNC (stemdirective, grob) //PUT_STR_FIELD_FUNC(standalone, grob) //end of clone for grob //this set for the "data" field is complete I think. For some reason others fields have incomplete sets of get/put functions. //In particular, the S and V versions of the macros, that enable staff and voice directives to be accessed were commented out for some reason and needed to be put back for this set. GET_STR_FIELD_FUNC (score, data) GET_STR_FIELD_FUNC (scoreheader, data) GET_STR_FIELD_FUNC (header, data) GET_STR_FIELD_FUNC (paper, data) GET_STR_FIELD_FUNC (layout, data) GET_STR_FIELD_FUNC (movementcontrol, data) GET_STR_FIELD_FUNC (note, data) GET_STR_FIELD_FUNC (chord, data) GET_STR_FIELD_FUNC (staff, data) GET_STR_FIELD_FUNC (voice, data) GET_STR_FIELD_FUNC (clef, data) GET_STR_FIELD_FUNC (timesig, data) GET_STR_FIELD_FUNC (keysig, data); GET_STR_FIELD_FUNC (tuplet, data); GET_STR_FIELD_FUNC (stemdirective, data); GET_STR_FIELD_FUNC (standalone, data) PUT_STR_FIELD_FUNC (score, data) PUT_STR_FIELD_FUNC (scoreheader, data) PUT_STR_FIELD_FUNC (header, data) PUT_STR_FIELD_FUNC (paper, data) PUT_STR_FIELD_FUNC (layout, data) PUT_STR_FIELD_FUNCS(staff, data) PUT_STR_FIELD_FUNCV(voice, data) PUT_STR_FIELD_FUNC (movementcontrol, data) PUT_STR_FIELD_FUNC (note, data); PUT_STR_FIELD_FUNC (chord, data); PUT_STR_FIELD_FUNC (clef, data); PUT_STR_FIELD_FUNC (timesig, data); PUT_STR_FIELD_FUNC (keysig, data); PUT_STR_FIELD_FUNC (tuplet, data); PUT_STR_FIELD_FUNC (stemdirective, data) //PUT_STR_FIELD_FUNC(standalone, data) // done separately below... //end of set for data GET_STR_FIELD_FUNC (chord, prefix) GET_STR_FIELD_FUNC (chord, postfix) GET_STR_FIELD_FUNC (chord, display) PUT_STR_FIELD_FUNC (chord, prefix) PUT_STR_FIELD_FUNC (chord, postfix) PUT_STR_FIELD_FUNC (chord, display) GET_STR_FIELD_FUNC (note, prefix) GET_STR_FIELD_FUNC (note, postfix) GET_STR_FIELD_FUNC (note, display) PUT_STR_FIELD_FUNC (note, prefix) PUT_STR_FIELD_FUNC (note, postfix) PUT_STR_FIELD_FUNC (note, display); GET_STR_FIELD_FUNC (standalone, prefix); GET_STR_FIELD_FUNC (standalone, postfix); GET_STR_FIELD_FUNC (standalone, display); GET_STR_FIELD_FUNC (score, prefix); GET_STR_FIELD_FUNC (score, postfix); GET_STR_FIELD_FUNC (score, display); GET_STR_FIELD_FUNC (staff, prefix); GET_STR_FIELD_FUNC (staff, postfix); GET_STR_FIELD_FUNC (staff, display); GET_STR_FIELD_FUNC (voice, prefix); GET_STR_FIELD_FUNC (voice, postfix); GET_STR_FIELD_FUNC (voice, display) #undef staff #define PUT_INT_FIELD_FUNC_NAME(what, field, name)\ gboolean \ what##_directive_put_##field(gchar *tag, gint value) {\ what *current = get_##what();\ if(current==NULL) return FALSE;\ if(Denemo.project->movement->currentobject)\ store_for_undo_change (Denemo.project->movement, Denemo.project->movement->currentobject->data);\ if(current->name==NULL)\ create_directives (¤t->name, tag);\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive==NULL){\ directive=new_directive(tag);\ current->name = g_list_append(current->name, directive);\ }\ directive->field = value;\ if(!Denemo.non_interactive){\ widget_for_directive(directive, (void(*)())what##_directive_put_graphic);\ if (directive->widget) g_object_set_data(G_OBJECT(directive->widget), "directives-pointer", ¤t->name);\ }\ return TRUE;\ } static GList *add_layout (GList *layouts, guint id) { if (g_list_index (layouts, GUINT_TO_POINTER(id))<0) return g_list_append (layouts, GUINT_TO_POINTER(id)); return layouts; } static GList *remove_layout (GList *layouts, guint id) { return g_list_remove (layouts, GUINT_TO_POINTER(id)); } static void action_ignore (DenemoDirective *directive, guint value) { if (value) { if(directive->layouts==NULL) { directive->flag = DENEMO_IGNORE_FOR_LAYOUTS; directive->layouts = add_layout (directive->layouts, value);//g_print("Made %x the ignored layouts\n", value); } else { if (directive->flag == DENEMO_IGNORE_FOR_LAYOUTS) { directive->layouts = add_layout (directive->layouts, value);//g_print("Added %x to ignored layouts\n", value); } else { directive->layouts = remove_layout (directive->layouts, value);//g_print("Removed %x from allowed layouts\n", value); if(directive->layouts == NULL) directive->flag = 0;//, g_print("No conditions left\n"); } } } else { g_list_free (directive->layouts);//g_print("Removed conditions\n"); directive->layouts = NULL; directive->flag = 0; } } static void action_allow (DenemoDirective *directive, guint value) { if (value) { if(directive->layouts==NULL) { directive->flag = DENEMO_ALLOW_FOR_LAYOUTS; directive->layouts = add_layout (directive->layouts, value);//g_print("Made %x the allowed layout\n", value); } else { if (directive->flag == DENEMO_ALLOW_FOR_LAYOUTS) { directive->layouts = add_layout (directive->layouts, value);//g_print("Added %x to allowed layouts\n", value); } else { directive->layouts = remove_layout (directive->layouts, value);//g_print("Removed %x from ignored layouts\n", value); if(directive->layouts == NULL) directive->flag = 0;//, g_print("No conditions left\n"); } } } else { g_list_free (directive->layouts);//g_print("Removed conditions\n"); directive->layouts = NULL; directive->flag = 0; } } #define PUT_LAYOUT_IGNORE_FUNC_NAME(what, directives) \ gboolean \ what##_directive_put_ignore(gchar *tag, guint value) {\ what *current = get_##what();\ if(current==NULL) return FALSE;\ if(Denemo.project->movement->currentobject)\ store_for_undo_change (Denemo.project->movement, Denemo.project->movement->currentobject->data);\ if(current->directives==NULL)\ create_directives (¤t->directives, tag);\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive==NULL){\ directive=new_directive(tag);\ current->directives = g_list_append(current->directives, directive);\ }\ action_ignore (directive, value);\ if(!Denemo.non_interactive){\ widget_for_directive(directive, (void(*)())what##_directive_put_graphic);\ if (directive->widget) g_object_set_data(G_OBJECT(directive->widget), "directives-pointer", ¤t->directives);\ }\ return TRUE;\ } #define PUT_LAYOUT_ALLOW_FUNC_NAME(what, directives) \ gboolean \ what##_directive_put_allow(gchar *tag, guint value) {\ what *current = get_##what();\ if(current==NULL) return FALSE;\ if(Denemo.project->movement->currentobject)\ store_for_undo_change (Denemo.project->movement, Denemo.project->movement->currentobject->data);\ if(current->directives==NULL)\ create_directives (¤t->directives, tag);\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive==NULL){\ directive=new_directive(tag);\ current->directives = g_list_append(current->directives, directive);\ }\ action_allow (directive, value);\ if(!Denemo.non_interactive){\ widget_for_directive(directive, (void(*)())what##_directive_put_graphic);\ if (directive->widget) g_object_set_data(G_OBJECT(directive->widget), "directives-pointer", ¤t->directives);\ }\ return TRUE;\ } #define PUT_LAYOUT_IGNORE_FUNC(what) PUT_LAYOUT_IGNORE_FUNC_NAME(what, directives) #define PUT_LAYOUT_ALLOW_FUNC(what) PUT_LAYOUT_ALLOW_FUNC_NAME(what, directives) #define PUT_LAYOUT_IGNORE_FUNCS(what) PUT_LAYOUT_IGNORE_FUNC_NAME(what, staff_directives) #define PUT_LAYOUT_IGNORE_FUNCV(what) PUT_LAYOUT_IGNORE_FUNC_NAME(what, voice_directives) #define PUT_LAYOUT_ALLOW_FUNCS(what) PUT_LAYOUT_ALLOW_FUNC_NAME(what, staff_directives) #define PUT_LAYOUT_ALLOW_FUNCV(what) PUT_LAYOUT_ALLOW_FUNC_NAME(what, voice_directives) #define PUT_INT_FIELD_FUNC(what, field) PUT_INT_FIELD_FUNC_NAME(what, field, directives) //#define PUT_INT_FIELD_FUNCS(what, field) PUT_INT_FIELD_FUNC_NAME(what, field, staff_directives) //#define PUT_INT_FIELD_FUNCV(what, field) PUT_INT_FIELD_FUNC_NAME(what, field, voice_directives) #define GET_INT_FIELD_FUNC(what, field)\ gint \ what##_directive_get_##field(gchar *tag) {\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive)\ return directive->field;\ return 0;\ } #define GET_INT_GRAPHIC_FIELD_FUNC(what, field)\ gint \ what##_directive_get_##field(gchar *tag) {\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive)\ return directive->graphic->field;\ return 0;\ } PUT_GRAPHIC (object); PUT_INT_FIELD_FUNC (object, minpixels); GET_INT_FIELD_FUNC (object, minpixels) /* block which can be copied for new int fields */ PUT_INT_FIELD_FUNC (note, minpixels); PUT_INT_FIELD_FUNC (chord, minpixels) //PUT_INT_FIELD_FUNCS(staff, minpixels) //PUT_INT_FIELD_FUNCV(voice, minpixels) //PUT_INT_FIELD_FUNC(score, minpixels) PUT_INT_FIELD_FUNC (clef, minpixels); PUT_INT_FIELD_FUNC (timesig, minpixels); PUT_INT_FIELD_FUNC (tuplet, minpixels); PUT_INT_FIELD_FUNC (stemdirective, minpixels); PUT_INT_FIELD_FUNC (keysig, minpixels) //PUT_INT_FIELD_FUNC(scoreheader, minpixels) //PUT_INT_FIELD_FUNC(header, minpixels) //PUT_INT_FIELD_FUNC(paper, minpixels) //PUT_INT_FIELD_FUNC(layout, minpixels) //PUT_INT_FIELD_FUNC(movementcontrol, minpixels) //standalone needs different code for "put" see STANDALONE_PUT* below GET_INT_FIELD_FUNC (note, minpixels) GET_INT_FIELD_FUNC (chord, minpixels) GET_INT_FIELD_FUNC (staff, minpixels) GET_INT_FIELD_FUNC (voice, minpixels) GET_INT_FIELD_FUNC (score, minpixels); GET_INT_FIELD_FUNC (clef, minpixels); GET_INT_FIELD_FUNC (keysig, minpixels); GET_INT_FIELD_FUNC (timesig, minpixels); GET_INT_FIELD_FUNC (tuplet, minpixels); GET_INT_FIELD_FUNC (stemdirective, minpixels); GET_INT_FIELD_FUNC (scoreheader, minpixels); GET_INT_FIELD_FUNC (header, minpixels); GET_INT_FIELD_FUNC (paper, minpixels); GET_INT_FIELD_FUNC (layout, minpixels); GET_INT_FIELD_FUNC (movementcontrol, minpixels); GET_INT_FIELD_FUNC (standalone, minpixels) /* end block which can be copied for new int fields */ PUT_INT_FIELD_FUNC (note, override) PUT_INT_FIELD_FUNC (chord, override) GET_INT_FIELD_FUNC (note, override) GET_INT_FIELD_FUNC (chord, override) GET_INT_FIELD_FUNC (staff, override) GET_INT_FIELD_FUNC (voice, override) GET_INT_FIELD_FUNC (score, override) PUT_LAYOUT_ALLOW_FUNC (note) PUT_LAYOUT_ALLOW_FUNC (chord) PUT_LAYOUT_ALLOW_FUNCS (staff) PUT_LAYOUT_ALLOW_FUNCV (voice) PUT_LAYOUT_IGNORE_FUNC (note) PUT_LAYOUT_IGNORE_FUNC (chord) PUT_LAYOUT_IGNORE_FUNCS (staff) PUT_LAYOUT_IGNORE_FUNCV (voice) PUT_INT_FIELD_FUNC (note, tx) PUT_INT_FIELD_FUNC (chord, tx) GET_INT_FIELD_FUNC (note, tx) GET_INT_FIELD_FUNC (chord, tx) GET_INT_FIELD_FUNC (staff, tx) GET_INT_FIELD_FUNC (voice, tx) PUT_INT_FIELD_FUNC (note, ty) PUT_INT_FIELD_FUNC (chord, ty) GET_INT_FIELD_FUNC (note, ty) GET_INT_FIELD_FUNC (chord, ty) GET_INT_FIELD_FUNC (staff, ty) GET_INT_FIELD_FUNC (voice, ty) PUT_INT_FIELD_FUNC (note, gx) PUT_INT_FIELD_FUNC (chord, gx) GET_INT_FIELD_FUNC (note, gx) GET_INT_FIELD_FUNC (chord, gx) GET_INT_FIELD_FUNC (staff, gx) GET_INT_FIELD_FUNC (voice, gx) PUT_INT_FIELD_FUNC (note, gy) PUT_INT_FIELD_FUNC (chord, gy) GET_INT_FIELD_FUNC (note, gy) GET_INT_FIELD_FUNC (chord, gy) GET_INT_FIELD_FUNC (staff, gy) GET_INT_FIELD_FUNC (voice, gy) GET_INT_FIELD_FUNC (standalone, override) GET_INT_FIELD_FUNC (standalone, tx) GET_INT_FIELD_FUNC (standalone, ty) GET_INT_FIELD_FUNC (standalone, gx) GET_INT_FIELD_FUNC (standalone, gy) PUT_LAYOUT_ALLOW_FUNC (score) PUT_LAYOUT_IGNORE_FUNC (score) GET_INT_FIELD_FUNC (score, tx) GET_INT_FIELD_FUNC (score, ty) GET_INT_FIELD_FUNC (score, gx) GET_INT_FIELD_FUNC (score, gy) /* width and height of graphic (if any), read only */ GET_INT_GRAPHIC_FIELD_FUNC (note, width) GET_INT_GRAPHIC_FIELD_FUNC (chord, width); GET_INT_GRAPHIC_FIELD_FUNC (staff, width); GET_INT_GRAPHIC_FIELD_FUNC (voice, width); GET_INT_GRAPHIC_FIELD_FUNC (standalone, width); GET_INT_GRAPHIC_FIELD_FUNC (score, width); GET_INT_GRAPHIC_FIELD_FUNC (note, height); GET_INT_GRAPHIC_FIELD_FUNC (chord, height); GET_INT_GRAPHIC_FIELD_FUNC (staff, height); GET_INT_GRAPHIC_FIELD_FUNC (voice, height); GET_INT_GRAPHIC_FIELD_FUNC (standalone, height); GET_INT_GRAPHIC_FIELD_FUNC (score, height) /* return a full path to an editscript for directive or NULL if there is none */ gchar * get_editscript_filename (gchar * tag) { gchar *basename = g_strconcat (tag, ".scm", NULL); GList* dirs = NULL; dirs = g_list_append(dirs, g_build_filename (get_user_data_dir (FALSE), COMMANDS_DIR, "editscripts", NULL)); dirs = g_list_append(dirs, g_build_filename (get_system_data_dir (), COMMANDS_DIR, "editscripts", NULL)); return find_path_for_file(basename, dirs); } /* instead of the "activate" "button-release-event" signal gboolean user_function (GtkWidget *widget, GdkEventButton *event, gpointer user_data) : Run Last * PROBLEM cannot use gtk_widget_activate ... d-DirectiveActivate ... the look at event to see if left or right button pressed and allow advanced edit if right button. */ static gboolean text_edit_directive_by_fn (DenemoDirective * directive, gpointer fn); static gboolean swallow_button_press (void) { return TRUE;} //prevent other handlers seeing this. static gboolean button_callback (GtkWidget * widget, GdkEventButton * event, DenemoDirective * directive) { // !!!!! clicking on a staff tools menu item comes thru here - but if you break gdb here as the menu item is still up your mouse is grabbed. gboolean left = TRUE; signal_structural_change (Denemo.project); //FIXME this is only needed for some directives if (event != NULL) left = !((event->button != 1)); if (left && (directive->override & DENEMO_OVERRIDE_EDITOR)) { GtkWidget *texteditor = (GtkWidget *) g_object_get_data (G_OBJECT (directive->widget), DENEMO_TEXTEDITOR_TAG); if (texteditor) { //FIXME position at cursor if a toplevel window gtk_widget_show_all (gtk_widget_get_toplevel (texteditor)); gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (texteditor))); } } else { gchar *script = get_action_script (directive->tag->str); if (left && script) { stage_undo (Denemo.project->movement, ACTION_STAGE_END); //undo is a queue so this is the end :) call_out_to_guile (script); stage_undo (Denemo.project->movement, ACTION_STAGE_START); } else { if (left && (directive->override & DENEMO_OVERRIDE_TAGEDIT)) script = get_editscript_filename (directive->tag->str); else script = NULL; if (script) execute_script_file (script); else { /* if there is an action of this tag with scheme script, run it again else do text edit of the directives fields */ DenemoAction *action; if (left && ((action = lookup_action_from_name ((gchar *) directive->tag->str)) != NULL) && (directive->override & DENEMO_OVERRIDE_TAGEDIT)) denemo_action_activate (action); else { if (left && action) { gchar *name = (gchar *) denemo_action_get_name (action); gint idx = lookup_command_from_name (Denemo.map, name); if (idx > 0) { gpointer fn = (widget != NULL) ? g_object_get_data (G_OBJECT (widget), "fn") : NULL; gchar *label = (gchar *) lookup_label_from_idx (Denemo.map, idx); if (confirm (label, _("Repeat the command?\n(Hold Shift for advanced edit)"))) if(shift_held_down()) { GList **directives = (GList **) g_object_get_data (G_OBJECT (widget), "directives-pointer"); gboolean delete = !text_edit_directive (directive, fn); if (delete) { if (directives) delete_directive (directives, directive->tag->str); else g_warning ("Could not get directives list to delete from"); } } else denemo_action_activate (action); } } else { gpointer fn = (widget != NULL) ? g_object_get_data (G_OBJECT (widget), "fn") : NULL; if (fn) { gboolean delete = !text_edit_directive_by_fn (directive, fn); if (delete) { GList **directives = (GList **) g_object_get_data (G_OBJECT (widget), "directives-pointer"); if (directives) delete_directive (directives, directive->tag->str); else g_warning ("Could not get directives list to delete from"); } } } } } } } return TRUE; } static void button_activate_callback (GtkWidget * w, DenemoDirective * d) { button_callback (w, NULL, d); } /* return a GtkTextView which has been installed inside a scrolled window */ static GtkWidget * create_text_window (void) { GtkWidget *textview = gtk_text_view_new (); GtkWidget *w = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (w), _("Denemo Editor:Newline to update, Esc for Advanced Edit")); gtk_window_set_default_size (GTK_WINDOW (w), 600, 400); gtk_window_set_position (GTK_WINDOW (w), GTK_WIN_POS_MOUSE); g_signal_connect (G_OBJECT (w), "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), w); GtkWidget *main_vbox = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (w), main_vbox); GtkWidget *sw = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (main_vbox), sw, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER (sw), textview); return textview; } static void assign_text (GtkWidget * w, gchar * text) { GtkTextBuffer *textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (w)); if (textbuffer) gtk_text_buffer_set_text (textbuffer, text, -1); } static gchar * get_label_text (DenemoDirective * directive, gchar * text) { if (directive->override & DENEMO_OVERRIDE_MARKUP) return g_strdup (text); return g_markup_escape_text (text, -1); } /* create a label. Use the display string up to the first newline, if it is long enough else use tag */ static void set_directive_graphic_label (DenemoDirective * directive) { if(Denemo.non_interactive) return; gchar *value; if (directive->display && directive->display->len > 0) value = get_label_text (directive, directive->display->str); else value = get_label_text (directive, directive->tag->str); gchar *c; for (c = value; *c; c++) if (*c == '\n') { *c = 0; break; } if (GTK_IS_MENU_ITEM (directive->widget)) gtk_menu_item_set_label_text ((GtkMenuItem *) directive->widget, value); else gtk_label_set_markup ((GtkLabel *) gtk_bin_get_child (GTK_BIN (directive->widget)), value); g_free (value); } static gboolean editor_keypress (GtkWidget * w, GdkEventKey * event, DenemoDirective * directive) { GtkTextIter startiter, enditer; GtkTextBuffer *textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (w)); gtk_text_buffer_get_start_iter (textbuffer, &startiter); gtk_text_buffer_get_end_iter (textbuffer, &enditer); gchar *text = gtk_text_buffer_get_text (textbuffer, &startiter, &enditer, FALSE); if (directive->display) g_string_assign (directive->display, text); else directive->display = g_string_new (text); //if the GdkEventKey is newline, run the editscript for the directive //FIXME use switch if (event->keyval == GDK_KEY_Escape) if (!text_edit_directive (directive, "unknown")) { /* I have used "unknown" here because we would need to get the name e.g. "score" "movementcontrol" etc from fn, but this is only used for the create a script thing... g_object_get_data(G_OBJECT(directive->widget), "fn") */ GList **directives_ptr = g_object_get_data (G_OBJECT (directive->widget), "directives-pointer"); if (directives_ptr) delete_directive (g_object_get_data (G_OBJECT (directive->widget), "directives-pointer"), directive->tag->str); else warningdialog (_("Cannot delete via this mechanism, sorry")); return TRUE; } if (event->keyval == GDK_KEY_Return) { gchar *filename = get_editscript_filename (directive->tag->str); if (filename) execute_script_file (filename); set_directive_graphic_label (directive); } return TRUE; } static void attach_textedit_widget (DenemoDirective * directive) { if (directive->override & DENEMO_OVERRIDE_EDITOR) { GtkWidget *texteditor = create_text_window (); // g_signal_connect (G_OBJECT (texteditor), "key-press-event", // G_CALLBACK (editor_keypress), directive); g_signal_connect_after (G_OBJECT (texteditor), "key-release-event", G_CALLBACK (editor_keypress), directive); if (directive->display == NULL) directive->display = g_string_new (""); assign_text (texteditor, directive->display->str); // g_object_set_data(texteditor, "gstring", directive->display); g_object_set_data (G_OBJECT (directive->widget), DENEMO_TEXTEDITOR_TAG, texteditor); } } /* widget_for_directive() if directive does not have widget: creates a widget (button or menu depending on fn) for editing/actioning directive, point directive->widget to it and attach a callback to edit/action this directive, passing fn as data to it (to say what sort of directive it is) or the directive itself (for actionscripts/editscripts). if directive is non-DenemoObject directive it places the widget in the appropriate buttonbox/menu, the directives attached to DenemoObjects have menus created dynamically. (fn gives the type of directive: it determines where the widget goes (score or movement level, DenemoProject or DenemoMovement respectively, or in staff or voice menu)) set the label for the widget from directive->display or the tag if no display text set the visibility for the widget from directive->override */ void widget_for_directive_menu (DenemoDirective * directive, void fn (), GtkMenu * menu) { if(Denemo.non_interactive) return; //if (menu==NULL) return; this kills the titles bar! GtkWidget *box; gchar *value = ""; //FIXME we don't need value now... if (directive->override & DENEMO_OVERRIDE_EDITOR) { value = directive->tag->str; } else if (directive->display) value = directive->display->str; value = get_label_text (directive, value); if (!Denemo.non_interactive && directive->widget == NULL) { //FIXME at this point you could allow the user to specify a custom button box for his directive - some property of the directive saying which button box it should be in. We could even allow the directive to create a toolitem of a toolbar or menuitem on a menu bar??? if (fn == (void (*)()) score_directive_put_graphic || fn == (void (*)()) scoreheader_directive_put_graphic || fn == (void (*)()) paper_directive_put_graphic || fn == (void (*)()) layout_directive_put_graphic) box = Denemo.project->buttonbox; else if (fn == (void (*)()) movementcontrol_directive_put_graphic || fn == (void (*)()) header_directive_put_graphic) box = Denemo.project->movement->buttonbox; else box = NULL; if ((fn == (void (*)()) staff_directive_put_graphic) || (fn == (void (*)()) voice_directive_put_graphic)) { #if 0 voice and staff directives no longer have these popup menus, instead the staff voice editor is used. however, at least the rest of this code expects a valid GtkWidget... #endif //g_print("Doing the staff or voice case"); directive->widget = GTK_WIDGET (gtk_menu_item_new_with_label (value)); //WARNING _with_label is important // attach_textedit_widget (directive); // g_signal_connect (G_OBJECT (directive->widget), "button-release-event", G_CALLBACK (button_callback), directive); // gtk_menu_shell_append (GTK_MENU_SHELL (menu), GTK_WIDGET (directive->widget)); } else if (box) { //g_debug("Doing the score and movement cases starting from %p", directive->widget); directive->widget = GTK_WIDGET (gtk_button_new_with_label (value)); gchar *tooltip; const gchar *label = get_label_for_command (directive->tag->str); const gchar *help = get_tooltip_for_command (directive->tag->str); if (label) tooltip = g_strdup_printf (_("Command: %s.\n(%s)" "\nLeft click to run the command or right click for further options"), label, help ? help : ""); else tooltip = g_strdup_printf (_("This button was created for the Denemo Directive whose tag is %s." " Usually you click on it to alter the setting made or perform the action it is labelled with"), directive->tag->str); //FIXME enable scripters to pass a tooltip in??? gtk_widget_set_tooltip_text (directive->widget, tooltip); g_free (tooltip); { GtkWidget *label = gtk_bin_get_child (GTK_BIN (directive->widget)); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); } attach_textedit_widget (directive); g_signal_connect (G_OBJECT (directive->widget), "button-release-event", G_CALLBACK (button_callback), directive); g_signal_connect (G_OBJECT (directive->widget), "button-press-event", G_CALLBACK (swallow_button_press), directive); if (box) { gtk_box_pack_start (GTK_BOX (box), GTK_WIDGET (directive->widget), FALSE, TRUE, 0); gtk_widget_show (box); } } else { directive->widget = gtk_menu_item_new_with_label (value); attach_textedit_widget (directive); g_signal_connect (G_OBJECT (directive->widget), "button-release-event", G_CALLBACK (button_callback), directive); } g_object_set_data (G_OBJECT (directive->widget), "directive", (gpointer) directive); g_object_set_data (G_OBJECT (directive->widget), "fn", (gpointer) fn); //GTK_WIDGET_UNSET_FLAGS(directive->widget, GTK_CAN_FOCUS); gtk_widget_set_can_focus (directive->widget, FALSE); } //end of no widget (directive->override & DENEMO_OVERRIDE_GRAPHIC) ? gtk_widget_show (GTK_WIDGET (directive->widget)) : gtk_widget_hide (GTK_WIDGET (directive->widget)); // here handle the case where widget has a GtkTextView editing the text in value if (directive->display) { GtkWidget *texteditor = (GtkWidget *) g_object_get_data (G_OBJECT (directive->widget), DENEMO_TEXTEDITOR_TAG); if (texteditor) assign_text (texteditor, directive->display->str); } set_directive_graphic_label (directive); g_free (value); } void widget_for_directive (DenemoDirective * directive, void fn ()) { if(Denemo.non_interactive) return; GtkMenu *menu = NULL; if (Denemo.project->movement) { if (fn == (void (*)()) staff_directive_put_graphic) { menu = ((DenemoStaff *) Denemo.project->movement->currentstaff->data)->staffmenu; } if (fn == (void (*)()) voice_directive_put_graphic) { menu = ((DenemoStaff *) Denemo.project->movement->currentstaff->data)->voicemenu; } } widget_for_directive_menu (directive, fn, menu); } void widget_for_staff_directive (DenemoDirective * directive, GtkMenu * menu) { return widget_for_directive_menu (directive, (void (*)()) staff_directive_put_graphic, menu); } void widget_for_voice_directive (DenemoDirective * directive, GtkMenu * menu) { return widget_for_directive_menu (directive, (void (*)()) voice_directive_put_graphic, menu); } void widget_for_movementcontrol_directive (DenemoDirective * directive) { return widget_for_directive_menu (directive, (void (*)()) movementcontrol_directive_put_graphic, NULL); } void widget_for_header_directive (DenemoDirective * directive) { return widget_for_directive_menu (directive, (void (*)()) header_directive_put_graphic, NULL); } void widget_for_layout_directive (DenemoDirective * directive) { return widget_for_directive_menu (directive, (void (*)()) layout_directive_put_graphic, NULL); } // create a directive for non-DenemoObject directive #what // assigning the string VALUE to the field ##field // also create a button or menuitem ( if it does not already exist) as the directive->widget, this will be used to edit/action the directive // Compare this with the macros above which create the what##_directive_put_##field() without calling widget_for_directive() and so do not create a widget in the graphic field, except via the user setting graphic_name. // FIXME this comment above seems out of date. the macros above also call widget_for_directive(), the only difference is that these don't call store_for_undo_change () for the currentobject. // So it seems these should be used for non-object directives and the other for object directives. #define PUT_GRAPHIC_WIDGET_STR(field, what, name) \ gboolean \ what##_directive_put_##field(gchar *tag, gchar *value) {\ what *current = get_##what();\ if(current==NULL) return FALSE;\ if(current->name==NULL)\ create_directives (¤t->name, tag);\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive==NULL){\ directive=new_directive(tag);\ current->name = g_list_append(current->name, directive);\ }\ if(directive->field)\ g_string_assign(directive->field, value);\ else\ directive->field = g_string_new(value);\ if(!Denemo.non_interactive){\ widget_for_directive(directive, (void(*)())what##_directive_put_graphic);\ if (directive->widget) g_object_set_data(G_OBJECT(directive->widget), "directives-pointer", (gpointer)¤t->name); \ }\ return TRUE;\ } #define PUT_GRAPHIC_WIDGET_INT(field, what, name)\ gboolean \ what##_directive_put_##field(gchar *tag, gint value) {\ what *current = get_##what();\ if(current==NULL) return FALSE;\ if(current->name==NULL)\ create_directives (¤t->name, tag);\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive==NULL){\ directive=new_directive(tag);\ current->name = g_list_append(current->name, directive);\ }\ directive->field = value;\ if(!Denemo.non_interactive){\ widget_for_directive(directive, (void(*)())what##_directive_put_graphic);\ if (directive->widget) g_object_set_data(G_OBJECT(directive->widget), "directives-pointer", ¤t->name);\ }\ return TRUE;\ } //As the above (for string and int) but for the graphic name field //FIXME this is just storing the graphic name, any bitmap of that name could be placed on the button/menu item as an icon #define PUT_GRAPHIC_WIDGET_GRAPHIC(what, name) gboolean \ what##_directive_put_graphic(gchar *tag, gchar *value) {\ what *current = get_##what();\ if(current==NULL) return FALSE;\ if(current->name==NULL)\ create_directives (¤t->name, tag);\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive==NULL){\ directive=new_directive(tag);\ current->name = g_list_append(current->name, directive);\ }\ if(directive->graphic_name==NULL) \ directive->graphic_name = g_string_new(value);\ else\ g_string_assign(directive->graphic_name, value);\ if(!Denemo.non_interactive){\ widget_for_directive(directive, (void(*)())what##_directive_put_graphic);\ if (directive->widget) g_object_set_data(G_OBJECT(directive->widget), "directives-pointer", ¤t->name);\ }\ return directive != NULL;\ } PUT_GRAPHIC_WIDGET_GRAPHIC (score, directives) PUT_GRAPHIC_WIDGET_GRAPHIC (scoreheader, directives) PUT_GRAPHIC_WIDGET_GRAPHIC (header, directives) PUT_GRAPHIC_WIDGET_GRAPHIC (paper, directives) PUT_GRAPHIC_WIDGET_GRAPHIC (layout, directives) PUT_GRAPHIC_WIDGET_GRAPHIC (movementcontrol, directives) PUT_GRAPHIC_WIDGET_GRAPHIC (staff, staff_directives) PUT_GRAPHIC_WIDGET_GRAPHIC (voice, voice_directives) PUT_GRAPHIC_WIDGET_STR (display, score, directives) PUT_GRAPHIC_WIDGET_STR (display, scoreheader, directives) PUT_GRAPHIC_WIDGET_STR (display, header, directives) PUT_GRAPHIC_WIDGET_STR (display, paper, directives) PUT_GRAPHIC_WIDGET_STR (display, layout, directives) PUT_GRAPHIC_WIDGET_STR (display, movementcontrol, directives) PUT_GRAPHIC_WIDGET_STR (display, staff, staff_directives) PUT_GRAPHIC_WIDGET_STR (display, voice, voice_directives) PUT_GRAPHIC_WIDGET_STR (prefix, score, directives) PUT_GRAPHIC_WIDGET_STR (prefix, scoreheader, directives) PUT_GRAPHIC_WIDGET_STR (prefix, header, directives) PUT_GRAPHIC_WIDGET_STR (prefix, paper, directives) PUT_GRAPHIC_WIDGET_STR (prefix, layout, directives) PUT_GRAPHIC_WIDGET_STR (prefix, movementcontrol, directives) PUT_GRAPHIC_WIDGET_STR (prefix, staff, staff_directives) PUT_GRAPHIC_WIDGET_STR (prefix, voice, voice_directives) PUT_GRAPHIC_WIDGET_STR (postfix, score, directives) PUT_GRAPHIC_WIDGET_STR (postfix, scoreheader, directives) PUT_GRAPHIC_WIDGET_STR (postfix, header, directives) PUT_GRAPHIC_WIDGET_STR (postfix, paper, directives) PUT_GRAPHIC_WIDGET_STR (postfix, layout, directives) PUT_GRAPHIC_WIDGET_STR (postfix, movementcontrol, directives) PUT_GRAPHIC_WIDGET_STR (postfix, staff, staff_directives) PUT_GRAPHIC_WIDGET_STR (postfix, voice, voice_directives) PUT_GRAPHIC_WIDGET_STR (midibytes, score, directives) PUT_GRAPHIC_WIDGET_STR (midibytes, scoreheader, directives) PUT_GRAPHIC_WIDGET_STR (midibytes, header, directives) PUT_GRAPHIC_WIDGET_STR (midibytes, paper, directives) PUT_GRAPHIC_WIDGET_STR (midibytes, layout, directives) PUT_GRAPHIC_WIDGET_STR (midibytes, movementcontrol, directives) PUT_GRAPHIC_WIDGET_STR (midibytes, staff, staff_directives) PUT_GRAPHIC_WIDGET_STR (midibytes, voice, voice_directives) PUT_GRAPHIC_WIDGET_INT (minpixels, score, directives) PUT_GRAPHIC_WIDGET_INT (minpixels, scoreheader, directives) PUT_GRAPHIC_WIDGET_INT (minpixels, header, directives) PUT_GRAPHIC_WIDGET_INT (minpixels, paper, directives) PUT_GRAPHIC_WIDGET_INT (minpixels, layout, directives) PUT_GRAPHIC_WIDGET_INT (minpixels, movementcontrol, directives) PUT_GRAPHIC_WIDGET_INT (minpixels, staff, staff_directives) PUT_GRAPHIC_WIDGET_INT (minpixels, voice, voice_directives) #if 0 PUT_GRAPHIC_WIDGET_INT (x, score, directives) PUT_GRAPHIC_WIDGET_INT (x, scoreheader, directives) PUT_GRAPHIC_WIDGET_INT (x, header, directives) PUT_GRAPHIC_WIDGET_INT (x, paper, directives) PUT_GRAPHIC_WIDGET_INT (x, layout, directives) PUT_GRAPHIC_WIDGET_INT (x, movementcontrol, directives) PUT_GRAPHIC_WIDGET_INT (x, staff, staff_directives) PUT_GRAPHIC_WIDGET_INT (x, voice, voice_directives) PUT_GRAPHIC_WIDGET_INT (y, score, directives) PUT_GRAPHIC_WIDGET_INT (y, scoreheader, directives) PUT_GRAPHIC_WIDGET_INT (y, header, directives) PUT_GRAPHIC_WIDGET_INT (y, paper, directives) PUT_GRAPHIC_WIDGET_INT (y, layout, directives) PUT_GRAPHIC_WIDGET_INT (y, movementcontrol, directives) PUT_GRAPHIC_WIDGET_INT (y, staff, staff_directives) PUT_GRAPHIC_WIDGET_INT (y, voice, voice_directives) #endif PUT_GRAPHIC_WIDGET_INT (tx, score, directives) PUT_GRAPHIC_WIDGET_INT (tx, scoreheader, directives) PUT_GRAPHIC_WIDGET_INT (tx, header, directives) PUT_GRAPHIC_WIDGET_INT (tx, paper, directives) PUT_GRAPHIC_WIDGET_INT (tx, layout, directives) PUT_GRAPHIC_WIDGET_INT (tx, movementcontrol, directives) PUT_GRAPHIC_WIDGET_INT (tx, staff, staff_directives) PUT_GRAPHIC_WIDGET_INT (tx, voice, voice_directives) PUT_GRAPHIC_WIDGET_INT (ty, score, directives) PUT_GRAPHIC_WIDGET_INT (ty, scoreheader, directives) PUT_GRAPHIC_WIDGET_INT (ty, header, directives) PUT_GRAPHIC_WIDGET_INT (ty, paper, directives) PUT_GRAPHIC_WIDGET_INT (ty, layout, directives) PUT_GRAPHIC_WIDGET_INT (ty, movementcontrol, directives) PUT_GRAPHIC_WIDGET_INT (ty, staff, staff_directives) PUT_GRAPHIC_WIDGET_INT (ty, voice, voice_directives) PUT_GRAPHIC_WIDGET_INT (gx, score, directives) PUT_GRAPHIC_WIDGET_INT (gx, scoreheader, directives) PUT_GRAPHIC_WIDGET_INT (gx, header, directives) PUT_GRAPHIC_WIDGET_INT (gx, paper, directives) PUT_GRAPHIC_WIDGET_INT (gx, layout, directives) PUT_GRAPHIC_WIDGET_INT (gx, movementcontrol, directives) PUT_GRAPHIC_WIDGET_INT (gx, staff, staff_directives) PUT_GRAPHIC_WIDGET_INT (gx, voice, voice_directives) PUT_GRAPHIC_WIDGET_INT (gy, score, directives); PUT_GRAPHIC_WIDGET_INT (gy, scoreheader, directives); PUT_GRAPHIC_WIDGET_INT (gy, header, directives); PUT_GRAPHIC_WIDGET_INT (gy, paper, directives); PUT_GRAPHIC_WIDGET_INT (gy, layout, directives); PUT_GRAPHIC_WIDGET_INT (gy, movementcontrol, directives); PUT_GRAPHIC_WIDGET_INT (gy, staff, staff_directives); PUT_GRAPHIC_WIDGET_INT (gy, voice, voice_directives); PUT_GRAPHIC_WIDGET_INT (override, score, directives); PUT_GRAPHIC_WIDGET_INT (override, scoreheader, directives); PUT_GRAPHIC_WIDGET_INT (override, header, directives); PUT_GRAPHIC_WIDGET_INT (override, paper, directives); PUT_GRAPHIC_WIDGET_INT (override, layout, directives); PUT_GRAPHIC_WIDGET_INT (override, movementcontrol, directives); PUT_GRAPHIC_WIDGET_INT (override, staff, staff_directives); PUT_GRAPHIC_WIDGET_INT (override, voice, voice_directives); #undef PUT_GRAPHIC_WIDGET_STR #undef PUT_GRAPHIC_WIDGET_INT gboolean standalone_directive_put_graphic (gchar * tag, gchar * value) { DenemoDirective *directive = get_standalone_directive (tag); if (directive && directive->graphic) { // directive->graphic = NULL; FIXME should we do this... //g_string_free(directive->graphic_name, TRUE); } if (!directive) { DenemoObject *obj = lily_directive_new (" "); directive = (DenemoDirective *) obj->object; directive->tag = g_string_new (tag); object_insert (Denemo.project, obj); displayhelper (Denemo.project); } if (loadGraphicItem (value, &directive->graphic)) { if (directive->graphic_name) g_string_assign (directive->graphic_name, value); else directive->graphic_name = g_string_new (value); return TRUE; } else { directive->graphic = NULL; directive->graphic_name = NULL; return FALSE; } } #define STANDALONE_PUT_STR_FIELD_FUNC(field)\ gboolean \ standalone_directive_put_##field(gchar *tag, gchar *value) {\ DenemoDirective *directive = get_standalone_directive(tag);\ if(directive && directive->field){\ store_for_undo_change (Denemo.project->movement, Denemo.project->movement->currentobject->data);\ g_string_assign(directive->field, value);} \ else if(directive)\ directive->field = g_string_new(value);\ else {\ DenemoObject *obj = lily_directive_new (" ");\ directive = (DenemoDirective*)obj->object;\ directive->tag = g_string_new(tag);\ directive->field = g_string_new(value);\ object_insert(Denemo.project, obj);\ displayhelper(Denemo.project);\ }\ return TRUE;\ } STANDALONE_PUT_STR_FIELD_FUNC (prefix); STANDALONE_PUT_STR_FIELD_FUNC (postfix); STANDALONE_PUT_STR_FIELD_FUNC (display); STANDALONE_PUT_STR_FIELD_FUNC (midibytes); STANDALONE_PUT_STR_FIELD_FUNC (grob); STANDALONE_PUT_STR_FIELD_FUNC (data); gboolean standalone_directive_put_allow(gchar *tag, gint id) { DenemoDirective *directive = get_standalone_directive(tag); if(directive) { store_for_undo_change (Denemo.project->movement, Denemo.project->movement->currentobject->data);\ action_allow (directive, id); return TRUE; } return FALSE; //can only make an already existing directive conditional } gboolean standalone_directive_put_ignore(gchar *tag, gint id) { DenemoDirective *directive = get_standalone_directive(tag); if(directive) { store_for_undo_change (Denemo.project->movement, Denemo.project->movement->currentobject->data);\ action_ignore (directive, id); return TRUE; } return FALSE; //can only make an already existing directive conditional } #define STANDALONE_PUT_INT_FIELD_FUNC(field)\ gboolean \ standalone_directive_put_##field(gchar *tag, gint value) {\ DenemoDirective *directive = get_standalone_directive(tag);\ if(directive){\ store_for_undo_change (Denemo.project->movement, Denemo.project->movement->currentobject->data);\ directive->field = value;}\ else {\ DenemoObject *obj = lily_directive_new (" ");\ directive = (DenemoDirective*)obj->object;\ directive->tag = g_string_new(tag);\ directive->field = value;\ object_insert(Denemo.project, obj);\ }\ return TRUE;\ } //STANDALONE_PUT_INT_FIELD_FUNC(minpixels); special case STANDALONE_PUT_INT_FIELD_FUNC (tx); STANDALONE_PUT_INT_FIELD_FUNC (ty); STANDALONE_PUT_INT_FIELD_FUNC (gx); STANDALONE_PUT_INT_FIELD_FUNC (gy); STANDALONE_PUT_INT_FIELD_FUNC (override); void put_standalone_directive (gchar *tag, gint value) { DenemoObject *obj = lily_directive_new (" "); DenemoDirective *directive = (DenemoDirective *) obj->object; directive->tag = g_string_new (tag); obj->minpixelsalloted = directive->minpixels = value; object_insert (Denemo.project, obj); } gboolean standalone_directive_put_minpixels (gchar * tag, gint value) { DenemoDirective *directive = get_standalone_directive (tag); if (directive) { directive->minpixels = value; //This field is not actually useful for standalone directives. DenemoObject *obj = get_object (); store_for_undo_change (Denemo.project->movement, obj); obj->minpixelsalloted = value; } else { put_standalone_directive (tag, value); } return TRUE; } static gboolean tag_choice (GtkWidget * widget, DenemoDirective ** response) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) *response = g_object_get_data (G_OBJECT (widget), "choice"); return TRUE; } static void tag_none (GtkWidget * widget, DenemoDirective ** response) { *response = NULL; } #define UNKNOWN_TAG "" /* pack radio buttons for directive choice */ static gint pack_buttons (GtkWidget * vbox, GList * directives, DenemoDirective ** response) { GList *g; gint count; GtkWidget *widget = NULL, *widget2; for (count = 0, g = directives; g; g = g->next) { DenemoDirective *directive = (DenemoDirective *) g->data; if (directive->tag == NULL) directive->tag = g_string_new (UNKNOWN_TAG); count++; if (*response == NULL) *response = directive; if (widget == NULL) { widget = gtk_radio_button_new_with_label (NULL, directive->tag->str); //FIXME get_label_for_tag() and get_tooltip_for_tag() here!!! g_object_set_data (G_OBJECT (widget), "choice", directive); g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (tag_choice), response); gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, TRUE, 0); } else { widget2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (widget), directive->tag->str); g_object_set_data (G_OBJECT (widget2), "choice", directive); g_signal_connect (G_OBJECT (widget2), "toggled", G_CALLBACK (tag_choice), response); gtk_box_pack_start (GTK_BOX (vbox), widget2, FALSE, TRUE, 0); } } return count; } /* let the user choose from a list of directives */ static DenemoDirective * select_directive (gchar * instr, GList * directives) { GtkWidget *dialog = gtk_dialog_new_with_buttons (_("Select Directive"), GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, NULL); GtkWidget *cancelbutton = gtk_dialog_add_button (GTK_DIALOG(dialog),_("Cancel"), GTK_RESPONSE_REJECT); GtkWidget *vbox = gtk_vbox_new (FALSE, 8); GtkWidget *content_area; if(g_list_length(directives)>Denemo.prefs.max_menu_size) //this doesn't avoid menu running off screen but allows the user to cancel in that case { content_area = gtk_widget_get_parent (cancelbutton); //get the action area - this will break if GTK decides to implement the dialog widget in some strange fashion gtk_box_pack_start (GTK_BOX (content_area), vbox, FALSE, TRUE, 0); } else { content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), vbox); } DenemoDirective *response = NULL; /* void user_function (GtkDialog *arg0, gpointer user_data) : Action The ::close signal is a keybinding signal which gets emitted when the user uses a keybinding to close the dialog. The default binding for this signal is the Escape key. */ g_signal_connect (G_OBJECT (dialog), "close", G_CALLBACK (tag_none), &response); gint count; //count tagged directives GtkWidget *widget; widget = gtk_label_new (instr); gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, TRUE, 0); count = pack_buttons (vbox, directives, &response); if (count > 0) { gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_REJECT) { response = NULL; } } gtk_widget_destroy (dialog); //if(response && response->tag) //g_debug("Came back with response %s\n", response->tag->str); return response; } /* let the user choose from the directives at the cursor */ static void user_select_directive_at_cursor (gchar ** what, GList *** pdirectives, DenemoDirective ** pdirective) { *pdirectives = NULL; *pdirective = get_standalone_directive (NULL); if (*pdirective) return; //FIXME is this needed???? a return will be done anyway { tuplet *curtuplet = get_tuplet (); if (curtuplet && curtuplet->directives) { gchar *instr = get_object()->type==TUPOPEN? _("Select a directive attached to the tuplet start object"): _("Select a directive attached to the tuplet end object"); *pdirectives = &curtuplet->directives; *what = "tuplet"; *pdirective = select_directive (instr, **pdirectives); } } { gchar *instr = _("Select a directive attached to the stem control object"); stemdirective *curstemdir = get_stemdirective (); if (curstemdir && curstemdir->directives) { *pdirectives = &curstemdir->directives; *what = "stemdir"; *pdirective = select_directive (instr, **pdirectives); } } gchar *name = NULL; note *curnote = get_note (); if (curnote != NULL) { name = mid_c_offsettolily (curnote->mid_c_offset, curnote->enshift); if (curnote->mid_c_offset == Denemo.project->movement->cursor_y) if (curnote->directives) { *pdirectives = &curnote->directives; *what = "note"; gchar *instr = g_strdup_printf (_("Select a directive attached to the note \"%s\""), name); if (g_list_length (curnote->directives) == 1) *pdirective = (DenemoDirective*)(curnote->directives->data); else *pdirective = select_directive (instr, **pdirectives); g_free (instr); if (*pdirective) { g_free (name); return; } } } { // not exactly on a note, offer any chord directives gchar *instr = _("Select a directive attached to the chord"); chord *curchord = get_chord (); if (curchord && curchord->directives) { *pdirectives = &curchord->directives; *what = "chord"; if (g_list_length (curchord->directives) == 1) *pdirective = (DenemoDirective*)(curchord->directives->data); else *pdirective = select_directive (instr, **pdirectives); } } if (*pdirective == NULL && curnote) //try nearest note if (curnote->directives && curnote->mid_c_offset != Denemo.project->movement->cursor_y) { *pdirectives = &curnote->directives; *what = "note"; gchar *instr = g_strdup_printf (_("Select a directive attached to the note \"%s\""), name); if (g_list_length (curnote->directives) == 1) *pdirective = (DenemoDirective*)(curnote->directives->data); else *pdirective = select_directive (instr, **pdirectives); g_free (instr); if (*pdirective && (g_list_length (**pdirectives) == 1)) { /* seek confirmation of the choice of this directive since it is on a note not pointed at and has been chosen automatically. */ gchar *name = mid_c_offsettolily (curnote->mid_c_offset, curnote->enshift); gchar *msg = g_strdup_printf (_("Select the directive %s on note \"%s\"?"), (*pdirective)->tag->str, name); if (!confirm (_("Select Directive"), msg)) *pdirective = NULL; g_free (name); g_free (msg); } } g_free (name); return; } gboolean choose_tag_at_cursor (gchar **ptag) { gchar *what; GList **ppdirectives; DenemoDirective *pdirective; user_select_directive_at_cursor (&what, &ppdirectives, &pdirective); if (pdirective && (pdirective->tag == NULL)) pdirective->tag = g_string_new (""); *ptag = pdirective?pdirective->tag->str:NULL; return g_strcmp0 (what, "chord"); } static void populate_menu_for_directive (GtkWidget * menu, DenemoDirective * directive) { GtkWidget *item = gtk_menu_item_new_with_label (directive->tag->str); gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), GTK_WIDGET (item)); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (button_activate_callback), directive); gtk_widget_show (item); } static void populate_menu_for_directives (GtkWidget * menu, GList * directives) { g_object_set_data (G_OBJECT (menu), "directives", directives); //g_debug("setting directives %p for menu %p\n", directives, menu); for (; directives; directives = directives->next) { populate_menu_for_directive (menu, directives->data); } } /* callback for deactivate signal installed at startup on the NoteEditPopup menu it removes the menu items for the specific note */ gboolean unpopulate_menu (GtkWidget * menu) { GList *directives = g_object_get_data (G_OBJECT (menu), "directives"); //g_debug("removing directives %p for menu %p\n", directives, menu); for (; directives; directives = directives->next) { DenemoDirective *directive = directives->data; //g_debug("now remove %p\n", directive->widget); if (directive->widget) gtk_container_remove (GTK_CONTAINER (menu), directive->widget); } g_object_set_data (G_OBJECT (menu), "directives", NULL); return FALSE; } // edit the object at the cursor based on its type void edit_object_type (DenemoAction * action, DenemoScriptParam * param) { DenemoObject *obj = get_object (); if (obj == NULL) { warningmessage (_("No object here to edit")); return; } switch (obj->type) { case LILYDIRECTIVE: edit_object_directive (NULL, NULL); return; case CLEF: { popup_menu ("ClefMenu"); } return; case KEYSIG: { popup_menu ("Key"); } return; case TIMESIG: { popup_menu ("TimeSig"); } return; case CHORD: { popup_menu ("NotesRests"); } return; case STEMDIRECTIVE: { GList *directives = ((stemdirective *) obj->object)->directives; if (directives) { GtkWidget *menu = gtk_menu_new (); populate_menu_for_directives (menu, directives); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); } else { infodialog (_("Nothing to edit on this stem direction control object - use controls in Staffs → Voices menu")); } } return; case TUPOPEN: popup_menu ("Tuplets"); return; case TUPCLOSE: infodialog (_("This marks the end of a tuplet (that is triplets etc) - it should come in the same measure as the tuplet start marker.")); return; default: warningdialog (_("No method for editing this type of object")); return; } } static gboolean set_gstring (GtkWidget * widget, GdkEventKey * event, GString * gstr) { g_string_assign (gstr, (gchar *) gtk_entry_get_text (GTK_ENTRY (widget))); return TRUE; } static gboolean set_int (GtkSpinButton * widget, gint * val) { *val = gtk_spin_button_get_value_as_int (widget); return TRUE; } static gboolean set_uint (GtkSpinButton * widget, guint * val) { *val = (guint) gtk_spin_button_get_value (widget); return TRUE; } static gchar * quote_scheme (gchar * s) { GString *dest = g_string_new (""); gchar *c; for (c = s; *c; c++) { if (*c == '"' || *c == '\\') g_string_append_c (dest, '\\'); g_string_append_c (dest, *c); } return g_string_free (dest, FALSE); } gchar *get_script_for_directive (DenemoDirective* directive, gchar * what) { GString *scheme = g_string_new (""); g_string_append_printf (scheme, "(let ((tag \"%s\"))\n", directive->tag->str); if (what == NULL) what = "standalone"; if (!strcmp (what, "standalone")) g_string_append (scheme, "(d-Directive-standalone tag)\n"); #define ADD_TEXT(field)\ if(directive->field && directive->field->len)\ {gchar *quote = quote_scheme(directive->field->str);\ g_string_append_printf(scheme, "(d-DirectivePut-%s-%s tag \"%s\")\n",\ what, #field, quote);\ g_free(quote);} ADD_TEXT (prefix); ADD_TEXT (postfix); ADD_TEXT (display); ADD_TEXT (grob); ADD_TEXT (midibytes); ADD_TEXT (data); //graphic_name is exceptional, the graphic field is filled in from it if(directive->graphic_name && directive->graphic_name->len) { gchar *quote = quote_scheme(directive->graphic_name->str); g_string_append_printf(scheme, "(d-DirectivePut-%s-graphic tag \"%s\")\n", what, quote); g_free(quote); } #undef ADD_TEXT #define ADD_INTTEXT(field)\ if(directive->field)\ g_string_append_printf(scheme, "(d-DirectivePut-%s-%s tag %d)\n",\ what, #field, directive->field); ADD_INTTEXT (minpixels); ADD_INTTEXT (override); // ADD_INTTEXT (x); FIXME would it be good for the script to make the directive conditional if the original is? ie to install the flag and layouts? // ADD_INTTEXT (y); ADD_INTTEXT (tx); ADD_INTTEXT (ty); ADD_INTTEXT (gx); ADD_INTTEXT (gy); #undef ADD_INTTEXT if (!strcmp (what, "note")) g_string_append (scheme, "(d-Chordize)(d-SetSaved #f))\n"); else if (!strcmp (what, "standalone")) g_string_append (scheme, "(d-SetSaved #f)(d-RefreshDisplay))\n"); else g_string_append (scheme, "(d-SetSaved #f))\n"); return g_string_free (scheme, FALSE); } static void create_script (DenemoDirective * directive, gchar * what) { gchar *scheme = get_script_for_directive (directive, what); appendSchemeText (scheme); g_free (scheme); } /* callback to get an upload script of name tag */ #ifdef UPLOAD_TO_DENEMO_DOT_ORG static void upload_edit_script_cb (GtkWidget * widget, gchar * tag) { gchar *filename = get_editscript_filename (tag); if (filename) { GError *error = NULL; gchar *script; if (g_file_get_contents (filename, &script, NULL, &error)) upload_edit_script (tag, script); g_free (script); g_free (filename); } } #endif /* callback to get an edit script of name tag into the Scheme Script window */ static void get_edit_script (GtkWidget * widget, gchar * tag) { gchar *filename = get_editscript_filename (tag); if (filename) { GError *error = NULL; gchar *script; if (g_file_get_contents (filename, &script, NULL, &error)) appendSchemeText (script); else g_warning (_("Could not get contents of %s"), filename); g_free (script); g_free (filename); } } /* callback to save the scheme script text buffer as an edit script of name tag in the user's local denemo directory */ static void put_edit_script (GtkWidget * widget, gchar * tag) { gchar *tagscm = g_strconcat (tag, ".scm", NULL); gchar *filename = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "editscripts", tagscm, NULL); if ((!g_file_test (filename, G_FILE_TEST_EXISTS)) || confirm (_("There is already an edit script for this tag"), _("Do you want to replace it?"))) { gchar *scheme = (gchar *) get_script_view_text (); if (scheme && *scheme) { FILE *fp = fopen (filename, "w"); if (fp) { fprintf (fp, "%s", scheme); fclose (fp); infodialog (_("Wrote edit script file to ~/.denemo/editscripts")); } g_free (scheme); } } g_free (tagscm); g_free (filename); } static gboolean activate_directive (DenemoDirective * directive, gchar * what) { if (directive->widget && GTK_IS_WIDGET (directive->widget)) { g_debug ("Activate"); gtk_widget_activate (directive->widget); //g_signal_emit!!!!!!!!!!!!!!! what do we do!!!!!!!!!!!(directive->widget, "button-release-event"); return TRUE; } return FALSE; } static void help_for_conditional (gchar *help) { warningdialog (help); } /* text_edit_directive textually edit the directive via a dialog. return FALSE if the user requests deletion of the directive. */ static gboolean text_edit_directive (DenemoDirective * directive, gchar * what) { gboolean ret = TRUE; #define CREATE_SCRIPT (2) DenemoDirective *clone = clone_directive (directive); //for reset GtkWidget *dialog = gtk_dialog_new_with_buttons (_("Low Level Denemo Directive Edit"), GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_CANCEL, NULL); // gtk_window_set_title (GTK_WINDOW (dialog), _("Denemo Object Editor")); gtk_dialog_add_button (GTK_DIALOG (dialog), _("Delete Directive"), GTK_RESPONSE_REJECT); gtk_dialog_add_button (GTK_DIALOG (dialog), _("Create Script"), CREATE_SCRIPT); GtkWidget *vbox = gtk_vbox_new (FALSE, 8); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), vbox); GtkWidget *hbox; GString *entrycontent = g_string_new (""); GtkWidget *entrywidget; GtkWidget *label; GtkWidget *button; #define TEXTENTRY(thelabel, field) \ G_GNUC_UNUSED GtkWidget *field;\ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (_(thelabel));\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ entrywidget = gtk_entry_new ();\ g_string_sprintf (entrycontent, "%s", directive->field?directive->field->str:"");\ gtk_entry_set_text (GTK_ENTRY (entrywidget), entrycontent->str);\ gtk_box_pack_start (GTK_BOX (hbox), entrywidget, TRUE, TRUE, 0);\ if(directive->field==NULL) directive->field=g_string_new("");\ g_signal_connect(G_OBJECT(entrywidget), "key-release-event", G_CALLBACK(set_gstring), directive->field);\ g_string_assign(entrycontent, ""); #define NEWINTENTRY(thelabel, field)\ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (_(thelabel));\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ entrywidget = gtk_spin_button_new_with_range (0.0, (gdouble)G_MAXUINT, 1.0);\ gtk_spin_button_set_value (GTK_SPIN_BUTTON (entrywidget), directive->field);\ gtk_box_pack_start (GTK_BOX (hbox), entrywidget, TRUE, TRUE, 0);\ g_signal_connect(G_OBJECT(entrywidget), "value-changed", G_CALLBACK(set_int), &directive->field); #define NEWUINTENTRY(thelabel, field)\ hbox = gtk_hbox_new (FALSE, 8);\ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);\ label = gtk_label_new (_(thelabel));\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ entrywidget = gtk_spin_button_new_with_range (0.0, (gdouble)G_MAXUINT, 1.0);\ gtk_spin_button_set_value (GTK_SPIN_BUTTON (entrywidget), *(guint*)&directive->field);\ gtk_box_pack_start (GTK_BOX (hbox), entrywidget, TRUE, TRUE, 0);\ g_signal_connect(G_OBJECT(entrywidget), "value-changed", G_CALLBACK(set_uint), &directive->field); #define ADDINTENTRY(thelabel, fieldx, fieldy)\ label = gtk_label_new (_(thelabel));\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ label = gtk_label_new (_(" x:"));\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ entrywidget = gtk_spin_button_new_with_range (-(gdouble)G_MAXINT, (gdouble)G_MAXINT, 1.0);\ gtk_spin_button_set_value (GTK_SPIN_BUTTON (entrywidget), directive->fieldx);\ gtk_box_pack_start (GTK_BOX (hbox), entrywidget, TRUE, TRUE, 0);\ g_signal_connect(G_OBJECT(entrywidget), "value-changed", G_CALLBACK(set_int), &directive->fieldx);\ label = gtk_label_new (_(" y:"));\ gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);\ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);\ entrywidget = gtk_spin_button_new_with_range (-(gdouble)G_MAXINT, (gdouble)G_MAXINT, 1.0);\ gtk_spin_button_set_value (GTK_SPIN_BUTTON (entrywidget), directive->fieldy);\ gtk_box_pack_start (GTK_BOX (hbox), entrywidget, TRUE, TRUE, 0);\ g_signal_connect(G_OBJECT(entrywidget), "value-changed", G_CALLBACK(set_int), &directive->fieldy); TEXTENTRY (_("Postfix"), postfix); TEXTENTRY (_("Prefix"), prefix); TEXTENTRY (_("Display text"), display); ADDINTENTRY (_("Text Position"), tx, ty); TEXTENTRY (_("Graphic"), graphic_name); ADDINTENTRY (_("Graphic Position"), gx, gy); TEXTENTRY (_("Tag"), tag); TEXTENTRY (_("LilyPond Grob Name"), grob); TEXTENTRY (_("Scheme Data"), data); TEXTENTRY (_("MidiBytes"), midibytes); NEWINTENTRY (_("Override Mask"), override); NEWINTENTRY (_("Minimum pixel width"), minpixels); // NEWUINTENTRY (_("Only Applies to Layout"), allowed); a new display for allowed and layouts fields needed... // NEWUINTENTRY (_("Ignored by Layout"), layouts); #undef TEXTENTRY if (directive->layouts == NULL) { button = gtk_button_new_with_label (_("Applies to all layouts")); //GtkWidget *labelwidget = (GtkWidget *) gtk_bin_get_child (GTK_BIN (button)); //GdkRGBA color; //get_color (&color, 0.0, 1.0, 0.0, 1.0); //gtk_widget_override_color (labelwidget, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color(button, "#00ff00"); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (help_for_conditional), _("This directive is honored by all layouts. Use the Score/Movement/Staff/Voice/Object Editor to make it conditional on the Current Layout, the Default Layout or the Default Layout for the current part.")); } else { gboolean wrong = wrong_layout (directive, Denemo.project->layout_id);//g_print ("Current layout %x directive->flag %d and directive->layouts->data %x which is wrong = %d\n", Denemo.project->layout_id, directive->flag, directive->layouts->data, wrong); if (directive->flag == DENEMO_ALLOW_FOR_LAYOUTS) { button = gtk_button_new_with_label (wrong? _("Applies only to certain layouts, excluding the current one.") :_("Applies only to certain layouts, including the current one.")); //GtkWidget *labelwidget = (GtkWidget *) gtk_bin_get_child (GTK_BIN (button)); //GdkRGBA color; //get_color (&color, wrong?1:0, wrong?0:1, 0.0, 1.0); //gtk_widget_override_color (labelwidget, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color(button, wrong?"#ff0000":"#00ff00"); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (help_for_conditional), _("This directive is honored only by certain layouts. Use the Score/Movement/Staff/Voice/Object Editor to alter this behavior.")); } else { button = gtk_button_new_with_label (wrong? _("Excludes the current layout.") :_("Excludes certain layouts, but applies to the current one.")); //GtkWidget *labelwidget = (GtkWidget *) gtk_bin_get_child (GTK_BIN (button)); //GdkRGBA color; //get_color (&color, wrong?1:0, wrong?0:1, 0.0, 1.0); //gtk_widget_override_color (labelwidget, GTK_STATE_FLAG_NORMAL, &color); set_foreground_color(button, wrong?"#ff0000":"#00ff00"); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (help_for_conditional), _("This directive is disregarded by certain layouts. Use the Score/Movement/Staff/Voice/Object Editor to alter this behavior.")); } } gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Get Edit Script")); gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (get_edit_script), directive->tag->str); button = gtk_button_new_with_label (_("Put Edit Script")); gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (put_edit_script), directive->tag->str); #ifdef UPLOAD_TO_DENEMO_DOT_ORG //disabled until website can take uploading again button = gtk_button_new_with_label (_("Upload Edit Script")); gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (upload_edit_script_cb), directive->tag->str); #endif #ifdef EXTRA_WORK button = gtk_check_button_new_with_label (_("Show Current Script")); gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); this should set_toggle scheme or some such... gtk_activatable_set_related_action (GTK_ACTIVATABLE (button), gtk_ui_manager_get_action (Denemo.ui_manager, "/MainMenu/ViewMenu/ToggleScript")); #endif gtk_widget_show_all (dialog); gint response = gtk_dialog_run (GTK_DIALOG (dialog)); //g_debug("Got response %d\n", response); if (response == GTK_RESPONSE_CANCEL || response == GTK_RESPONSE_DELETE_EVENT || response == GTK_RESPONSE_REJECT) { GtkWidget *ref_widget = directive->widget; //not cloned directive->widget = NULL; //prevent any button being destroyed free_directive_data (directive); memcpy (directive, clone, sizeof (DenemoDirective)); directive->widget = ref_widget; if (response == GTK_RESPONSE_REJECT) { ret = FALSE; //that is it may be deleted, we ensure it has not been changed first,as the tag is used for delelet } } else { clone->widget = NULL; //prevent any button being destroyed FIXME ??? free_directive (clone); score_status (Denemo.project, TRUE); } #define REMOVEEMPTIES(field)\ if(directive->field && directive->field->len==0) g_string_free(directive->field, TRUE), directive->field=NULL; REMOVEEMPTIES (postfix); REMOVEEMPTIES (prefix); REMOVEEMPTIES (display); REMOVEEMPTIES (graphic_name); //REMOVEEMPTIES(tag); don't allow NULL tag #undef REMOVEEMPTIES if (directive->tag && directive->tag->len == 0) directive->tag = g_string_new (UNKNOWN_TAG); if (directive->widget) { if (GTK_IS_WIDGET (directive->widget)) widget_for_directive (directive, NULL /* no need to pass fn in as it is only needed if there is not widget, g_object_get_data(directive->widget, "fn") */ ); } if (directive->graphic_name && directive->graphic) { loadGraphicItem (directive->graphic_name->str, (DenemoGraphic **) & directive->graphic); } gtk_widget_destroy (dialog); if (what && (response == CREATE_SCRIPT)) create_script (directive, what); //g_debug("(d-DirectivePut-%s \"%s\")\n", what, directive->tag->str); return ret; } gboolean low_level_directive_edit (DenemoDirective *directive) { return text_edit_directive (directive, NULL); } #define TEXT_EDIT_IF(what)\ if(fn == (void(*)())what##_directive_put_graphic)\ return text_edit_directive(directive, #what); static gboolean text_edit_directive_by_fn (DenemoDirective * directive, gpointer fn) { TEXT_EDIT_IF (note); TEXT_EDIT_IF (chord); TEXT_EDIT_IF (staff); TEXT_EDIT_IF (voice); TEXT_EDIT_IF (score); TEXT_EDIT_IF (clef); TEXT_EDIT_IF (timesig); TEXT_EDIT_IF (tuplet); TEXT_EDIT_IF (stemdirective); TEXT_EDIT_IF (keysig); TEXT_EDIT_IF (scoreheader); TEXT_EDIT_IF (header); TEXT_EDIT_IF (paper); TEXT_EDIT_IF (layout); TEXT_EDIT_IF (movementcontrol); TEXT_EDIT_IF (standalone); return TRUE; } #undef TEXT_EDIT_IF /* allow edit of a directive, either via script or textually if no script exists return FALSE if user confirms a request to delete the directive */ static gboolean edit_directive (DenemoDirective * directive, gchar * what) { gboolean ret = TRUE; gchar *filename = get_editscript_filename (directive->tag->str); if (filename == NULL) { DenemoAction *action; gchar *eol; gboolean chopped = FALSE; for (eol = directive->tag->str; *eol; eol++) { if (*eol == '\n') { *eol = 0; chopped = TRUE; break; } } action = lookup_action_from_name (directive->tag->str); if (chopped) *eol = '\n'; if (action && !shift_held_down()) { DenemoScriptParam param; param.string = g_string_new ("edit"); g_debug ("Script can look for params \"edit\" - a string to catch this"); activate_script (action, ¶m); g_string_free (param.string, TRUE); } else { if (what || shift_held_down()) { ret = (text_edit_directive (directive, what) || !confirm (_("Directive Delete"), _("Are you sure you want to delete the directive?"))); score_status (Denemo.project, TRUE); } else edit_object(); } return ret; } GError *error = (GError *) execute_script_file (filename); if (error) g_warning ("%s", error->message); g_free (filename); return ret; } /** * callback for EditDirective on directive attached to an object. */ void edit_object_directive (DenemoAction * action, DenemoScriptParam * param) { //g_debug("Edit directive called\n"); DenemoDirective *directive; GList **directives; gchar *what = NULL; user_select_directive_at_cursor (&what, &directives, &directive); if (directive == NULL) { if (directives && *directives != NULL) infodialog (_("Cancelled")); else warningdialog (_("Use the ObjectMenu to modify this object - there are no directives here")); return; } if (directive->tag == NULL) directive->tag = g_string_new (UNKNOWN_TAG); if (!(param ? text_edit_directive (directive, what) : edit_directive (directive, what))) { if (directives && *directives) { delete_directive (directives, directive->tag->str); } else { //standalone directive dnm_deleteobject (Denemo.project->movement); } } if (Denemo.project->movement->currentobject) //for standalone directive setpixelmin (Denemo.project->movement->currentobject->data); } /** * callback for DeleteDirective */ void delete_chord_or_note_directive (DenemoAction * action, DenemoScriptParam * param) { //g_debug("Edit directive called\n"); DenemoDirective *directive; GList **directives; gchar *what = NULL; user_select_directive_at_cursor (&what, &directives, &directive); //g_debug("Got directive %p in list %p\n", directive, directives); if (directives == NULL) { warningdialog (_("No directives here")); return; } if (directive == NULL) { warningdialog (_("No directive selected")); return; } if (directive->tag == NULL) directive->tag = g_string_new (UNKNOWN_TAG); if (confirm (_("Directive Delete"), _("Are you sure you want to delete the directive?"))) delete_directive (directives, directive->tag->str); else warningdialog (_("Operation cancelled")); } static GList *all_directives = NULL; static GList *directive_types = NULL; static void append_directives (DenemoDirective *direc, gchar *type) { all_directives = g_list_append (all_directives, direc); directive_types = g_list_append (directive_types, type);//g_print("tag %s\n", direc->tag->str); } static gint select_system_directive (void) { g_list_foreach (Denemo.project->lilycontrol.directives, (GFunc)append_directives, "lilycontrol"); g_list_foreach (Denemo.project->scoreheader.directives, (GFunc)append_directives, "scoreheader"); g_list_foreach (Denemo.project->paper.directives, (GFunc)append_directives, "paper"); g_list_foreach (Denemo.project->movement->header.directives, (GFunc)append_directives, "header"); g_list_foreach (Denemo.project->movement->layout.directives, (GFunc)append_directives, "layout"); g_list_foreach (Denemo.project->movement->movementcontrol.directives, (GFunc)append_directives, "movementcontrol"); if(all_directives) { DenemoDirective *d; d = select_directive (_("Select a score or movement directive for advanced (low-level) edit.\nNote: these directives can be edited normally using Score/Movement Properties Editor from the Score or Movement menus."), all_directives); if (d) return g_list_index (all_directives, d); } return -1; } void edit_system_directive (void) { gint index = select_system_directive (); if(index >= 0) { gchar *type = g_list_nth_data (directive_types, index); DenemoDirective *directive = g_list_nth_data (all_directives, index); gboolean delete = !text_edit_directive (directive, type); if (delete) { GList **directives = NULL; if (!strcmp(type, "lilycontrol")) directives = &Denemo.project->lilycontrol.directives; else if (!strcmp(type, "scoreheader")) directives = &Denemo.project->scoreheader.directives; else if (!strcmp(type, "paper")) directives = &Denemo.project->paper.directives; else if (!strcmp(type, "header")) directives = &Denemo.project->movement->header.directives; else if (!strcmp(type, "layout")) directives = &Denemo.project->movement->layout.directives; else if (!strcmp(type, "movementcontrol")) directives = &Denemo.project->movement->movementcontrol.directives; if (directives) delete_directive (directives, directive->tag->str); else g_warning ("Could not get directives list to delete from"); } signal_structural_change (Denemo.project); } g_list_free (all_directives); g_list_free (directive_types); all_directives = NULL; directive_types = NULL; } static DenemoDirective * select_score_directive (void) { if (Denemo.project->lilycontrol.directives == NULL) return NULL; return select_directive (_("Select a score directive - use Shift for advanced edit"), Denemo.project->lilycontrol.directives); } static DenemoDirective * select_scoreheader_directive (void) { if (Denemo.project->scoreheader.directives == NULL) return NULL; return select_directive (_("Select a score header block directive - use Shift for advanced edit"), Denemo.project->scoreheader.directives); } static DenemoDirective * select_paper_directive (void) { if (Denemo.project->paper.directives == NULL) return NULL; return select_directive (_("Select a score paper block directive - use Shift for advanced edit"), Denemo.project->paper.directives); } static DenemoDirective * select_header_directive (void) { if (Denemo.project->movement->header.directives == NULL) return NULL; return select_directive (_("Select a movement header block directive - use Shift for advanced edit"), Denemo.project->movement->header.directives); } static DenemoDirective * select_layout_directive (void) { if (Denemo.project->movement->layout.directives == NULL) return NULL; return select_directive (_("Select a movement layout block directive - use Shift for advanced edit"), Denemo.project->movement->layout.directives); } static DenemoDirective * select_movementcontrol_directive (void) { if (Denemo.project->movement->movementcontrol.directives == NULL) return NULL; return select_directive (_("Select a movement control directive - use Shift for advanced edit"), Denemo.project->movement->movementcontrol.directives); } static DenemoDirective * select_clef_directive (void) { clef *curclef = get_clef (); if (curclef == NULL || curclef->directives == NULL) return NULL; return select_directive (_("Select a clef directive - use Shift for advanced edit"), curclef->directives); } static DenemoDirective * select_keysig_directive (void) { keysig *curkeysig = get_keysig (); if (curkeysig == NULL || curkeysig->directives == NULL) return NULL; return select_directive (_("Select a key signature directive - use Shift for advanced edit"), curkeysig->directives); } static DenemoDirective * select_timesig_directive (void) { timesig *curtimesig = get_timesig (); if (curtimesig == NULL || curtimesig->directives == NULL) return NULL; return select_directive (_("Select a time signature directive - use Shift for advanced edit"), curtimesig->directives); } static DenemoDirective * select_tuplet_directive (void) { tuplet *curtuplet = get_tuplet (); if (curtuplet == NULL || curtuplet->directives == NULL) return NULL; return select_directive (_("Select a time signature directive - use Shift for advanced edit"), curtuplet->directives); } static DenemoDirective * select_stemdirective_directive (void) { stemdirective *curstemdirective = get_stemdirective (); if (curstemdirective == NULL || curstemdirective->directives == NULL) return NULL; return select_directive (_("Select a time signature directive - use Shift for advanced edit"), curstemdirective->directives); } static DenemoDirective * select_staff_directive (void) { if (Denemo.project->movement->currentstaff == NULL) return NULL; DenemoStaff *curstaff = Denemo.project->movement->currentstaff->data; //FIXME return NULL if not primary staff if (curstaff == NULL || curstaff->staff_directives == NULL) return NULL; return select_directive (_("Select a staff directive - use Shift for advanced edit"), curstaff->staff_directives); } static DenemoDirective * select_voice_directive (void) { if (Denemo.project->movement->currentstaff == NULL) return NULL; DenemoStaff *curstaff = Denemo.project->movement->currentstaff->data; if (curstaff == NULL || curstaff->voice_directives == NULL) return NULL; return select_directive (_("Select a voice directive - use Shift for advanced edit"), curstaff->voice_directives); } /** * callback for EditVoiceDirective */ void edit_voice_directive (DenemoAction * action, DenemoScriptParam * param) { //g_debug("Edit directive called\n"); DenemoDirective *directive = select_voice_directive (); //g_debug("Got directive %p\n", directive); if (directive == NULL) return; if (directive->tag == NULL) directive->tag = g_string_new (UNKNOWN_TAG); if (!edit_directive (directive, "voice")) delete_voice_directive (directive->tag->str); signal_structural_change (Denemo.project); score_status (Denemo.project, TRUE); } /** * callback for EditStaffDirective */ void edit_staff_directive (DenemoAction * action, DenemoScriptParam * param) { //g_debug("Edit directive called\n"); DenemoDirective *directive = select_staff_directive (); //g_debug("Got directive %p\n", directive); if (directive == NULL) return; if (directive->tag == NULL) directive->tag = g_string_new (UNKNOWN_TAG); if (!edit_directive (directive, "staff")) delete_staff_directive (directive->tag->str); signal_structural_change (Denemo.project); score_status (Denemo.project, TRUE); } /** * callback for EditClefDirective */ void edit_clef_directive (DenemoAction * action, DenemoScriptParam * param) { //g_debug("Edit directive called\n"); DenemoDirective *directive = select_clef_directive (); //g_debug("Got directive %p\n", directive); if (directive == NULL) return; if (directive->tag == NULL) directive->tag = g_string_new (UNKNOWN_TAG); if (!edit_directive (directive, "clef")) delete_clef_directive (directive->tag->str); signal_structural_change (Denemo.project); score_status (Denemo.project, TRUE); } /** * callback for EditKeysigDirective */ void edit_keysig_directive (DenemoAction * action, DenemoScriptParam * param) { //g_debug("Edit directive called\n"); DenemoDirective *directive = select_keysig_directive (); //g_debug("Got directive %p\n", directive); if (directive == NULL) return; if (directive->tag == NULL) directive->tag = g_string_new (UNKNOWN_TAG); if (!edit_directive (directive, "keysig")) delete_keysig_directive (directive->tag->str); signal_structural_change (Denemo.project); score_status (Denemo.project, TRUE); } /** * callback for EditTimesigDirective */ void edit_timesig_directive (DenemoAction * action, DenemoScriptParam * param) { //g_debug("Edit directive called\n"); DenemoDirective *directive = select_timesig_directive (); //g_debug("Got directive %p\n", directive); if (directive == NULL) return; if (directive->tag == NULL) directive->tag = g_string_new (UNKNOWN_TAG); if (!edit_directive (directive, "timesig")) delete_timesig_directive (directive->tag->str); signal_structural_change (Denemo.project); score_status (Denemo.project, TRUE); } /** * callback for EditTupletDirective */ void edit_tuplet_directive (DenemoAction * action, DenemoScriptParam * param) { //g_debug("Edit directive called\n"); DenemoDirective *directive = select_tuplet_directive (); //g_debug("Got directive %p\n", directive); if (directive == NULL) return; if (directive->tag == NULL) directive->tag = g_string_new (UNKNOWN_TAG); if (!edit_directive (directive, "tuplet")) delete_tuplet_directive (directive->tag->str); score_status (Denemo.project, TRUE); } /** * callback for EditStemdirectiveDirective */ void edit_stemdirective_directive (DenemoAction * action, DenemoScriptParam * param) { //g_debug("Edit directive called\n"); DenemoDirective *directive = select_stemdirective_directive (); //g_debug("Got directive %p\n", directive); if (directive == NULL) return; if (directive->tag == NULL) directive->tag = g_string_new (UNKNOWN_TAG); if (!edit_directive (directive, "stemdirective")) delete_stemdirective_directive (directive->tag->str); score_status (Denemo.project, TRUE); } /** * callback for EditScoreDirective */ void edit_score_directive (DenemoAction * action, DenemoScriptParam * param) { signal_structural_change (Denemo.project); #define ScoreDirectives _("ScoreDirectives") #define ScoreHeaderBlockDirectives _("Score Header Block Directives") #define ScorePaperBlockDirectives _("Score Paper Block Directives") #define HeaderBlockDirectives _("Movement Header Block Directives") #define LayoutBlockDirectives _("Layout Block Directives") #define STRINGAPPEND(field) g_string_append_printf(options,"%s%c", field,'\0') GString *options = g_string_new (""); gchar *option; if (Denemo.project->lilycontrol.directives) STRINGAPPEND (ScoreDirectives); if (Denemo.project->scoreheader.directives) STRINGAPPEND (ScoreHeaderBlockDirectives); if (Denemo.project->paper.directives) STRINGAPPEND (ScorePaperBlockDirectives); if (Denemo.project->movement->header.directives) STRINGAPPEND (HeaderBlockDirectives); if (Denemo.project->movement->layout.directives) STRINGAPPEND (LayoutBlockDirectives); if (strlen (options->str) != options->len) { option = get_option (NULL, options->str, options->len); if (option == NULL) { g_string_free (options, TRUE); return; } } else option = options->str; #define EDITTYPE(type, what)\ if(!strcmp(option, type)) {\ DenemoDirective *directive = select_##what##_directive();\ if(directive==NULL)\ return;\ if(directive->tag == NULL)\ directive->tag = g_string_new(UNKNOWN_TAG);\ if(!edit_directive(directive, #what))\ delete_##what##_directive(directive->tag->str);\ score_status (Denemo.project, TRUE);\ } EDITTYPE (ScoreDirectives, score); EDITTYPE (ScoreHeaderBlockDirectives, scoreheader); EDITTYPE (ScorePaperBlockDirectives, paper); EDITTYPE (HeaderBlockDirectives, header); EDITTYPE (LayoutBlockDirectives, layout); //g_debug("option was %s\n",option); g_string_free (options, TRUE); #undef EDITTYPE #undef STRINGAPPEND } /** * callback for EditMovementDirective */ void edit_movement_directive (DenemoAction * action, DenemoScriptParam * param) { signal_structural_change (Denemo.project); #define LayoutDirectives _("Layout Directives") #define MovementDirectives _("Movement Directives") #define HeaderBlockDirectives _("Movement Header Block Directives") #define STRINGAPPEND(field) g_string_append_printf(options,"%s%c", field,'\0') GString *options = g_string_new (""); gchar *option; if (Denemo.project->movement->layout.directives) STRINGAPPEND (LayoutDirectives); if (Denemo.project->movement->movementcontrol.directives) STRINGAPPEND (MovementDirectives); if (Denemo.project->movement->header.directives) STRINGAPPEND (HeaderBlockDirectives); if (strlen (options->str) != options->len) { option = get_option (NULL, options->str, options->len); if (option == NULL) { g_string_free (options, TRUE); return; } } else option = options->str; #define EDITTYPE(type, what)\ if(!strcmp(option, type)) {\ DenemoDirective *directive = select_##what##_directive();\ if(directive==NULL)\ return;\ if(directive->tag == NULL)\ directive->tag = g_string_new(UNKNOWN_TAG);\ if(!edit_directive(directive, #what))\ delete_##what##_directive(directive->tag->str);\ score_status (Denemo.project, TRUE);\ } EDITTYPE (HeaderBlockDirectives, header); EDITTYPE (LayoutDirectives, layout); EDITTYPE (MovementDirectives, movementcontrol); g_string_free (options, TRUE); #undef EDITTYPE #undef STRINGAPPEND } /* block which can be copied for type of directive (minpixels is done as sample for new int fields */ PUT_LAYOUT_ALLOW_FUNC (clef) PUT_LAYOUT_IGNORE_FUNC (clef) PUT_INT_FIELD_FUNC (clef, tx) PUT_INT_FIELD_FUNC (clef, ty) PUT_INT_FIELD_FUNC (clef, gx) PUT_INT_FIELD_FUNC (clef, gy) PUT_INT_FIELD_FUNC (clef, override) GET_INT_FIELD_FUNC (clef, tx) GET_INT_FIELD_FUNC (clef, ty) GET_INT_FIELD_FUNC (clef, gx) GET_INT_FIELD_FUNC (clef, gy) GET_INT_FIELD_FUNC (clef, override); GET_INT_GRAPHIC_FIELD_FUNC (clef, width); GET_INT_GRAPHIC_FIELD_FUNC (clef, height); PUT_GRAPHIC (clef); PUT_STR_FIELD_FUNC (clef, prefix); PUT_STR_FIELD_FUNC (clef, postfix); PUT_STR_FIELD_FUNC (clef, display); GET_STR_FIELD_FUNC (clef, prefix); GET_STR_FIELD_FUNC (clef, postfix); GET_STR_FIELD_FUNC (clef, display) /* end block which can be copied for type of directive */ PUT_LAYOUT_ALLOW_FUNC (keysig) PUT_LAYOUT_IGNORE_FUNC (keysig) PUT_INT_FIELD_FUNC (keysig, tx) PUT_INT_FIELD_FUNC (keysig, ty) PUT_INT_FIELD_FUNC (keysig, gx) PUT_INT_FIELD_FUNC (keysig, gy) PUT_INT_FIELD_FUNC (keysig, override) GET_INT_FIELD_FUNC (keysig, tx) GET_INT_FIELD_FUNC (keysig, ty) GET_INT_FIELD_FUNC (keysig, gx) GET_INT_FIELD_FUNC (keysig, gy) GET_INT_FIELD_FUNC (keysig, override) GET_INT_GRAPHIC_FIELD_FUNC (keysig, width) GET_INT_GRAPHIC_FIELD_FUNC (keysig, height) PUT_STR_FIELD_FUNC (keysig, prefix) PUT_STR_FIELD_FUNC (keysig, postfix) PUT_STR_FIELD_FUNC (keysig, display) GET_STR_FIELD_FUNC (keysig, prefix) GET_STR_FIELD_FUNC (keysig, postfix) GET_STR_FIELD_FUNC (keysig, display) PUT_LAYOUT_ALLOW_FUNC (timesig) PUT_LAYOUT_IGNORE_FUNC (timesig) PUT_INT_FIELD_FUNC (timesig, tx) PUT_INT_FIELD_FUNC (timesig, ty) PUT_INT_FIELD_FUNC (timesig, gx) PUT_INT_FIELD_FUNC (timesig, gy) PUT_INT_FIELD_FUNC (timesig, override) GET_INT_FIELD_FUNC (timesig, tx) GET_INT_FIELD_FUNC (timesig, ty) GET_INT_FIELD_FUNC (timesig, gx) GET_INT_FIELD_FUNC (timesig, gy) GET_INT_FIELD_FUNC (timesig, override) GET_INT_GRAPHIC_FIELD_FUNC (timesig, width) GET_INT_GRAPHIC_FIELD_FUNC (timesig, height) PUT_STR_FIELD_FUNC (timesig, prefix) PUT_STR_FIELD_FUNC (timesig, postfix) PUT_STR_FIELD_FUNC (timesig, display) GET_STR_FIELD_FUNC (timesig, prefix) GET_STR_FIELD_FUNC (timesig, postfix) GET_STR_FIELD_FUNC (timesig, display) PUT_LAYOUT_ALLOW_FUNC (tuplet) PUT_LAYOUT_IGNORE_FUNC (tuplet) PUT_INT_FIELD_FUNC (tuplet, tx) PUT_INT_FIELD_FUNC (tuplet, ty) PUT_INT_FIELD_FUNC (tuplet, gx) PUT_INT_FIELD_FUNC (tuplet, gy) PUT_INT_FIELD_FUNC (tuplet, override) GET_INT_FIELD_FUNC (tuplet, tx) GET_INT_FIELD_FUNC (tuplet, ty) GET_INT_FIELD_FUNC (tuplet, gx) GET_INT_FIELD_FUNC (tuplet, gy) GET_INT_FIELD_FUNC (tuplet, override) GET_INT_GRAPHIC_FIELD_FUNC (tuplet, width) GET_INT_GRAPHIC_FIELD_FUNC (tuplet, height) PUT_STR_FIELD_FUNC (tuplet, prefix) PUT_STR_FIELD_FUNC (tuplet, postfix) PUT_STR_FIELD_FUNC (tuplet, display) GET_STR_FIELD_FUNC (tuplet, prefix) GET_STR_FIELD_FUNC (tuplet, postfix) GET_STR_FIELD_FUNC (tuplet, display) PUT_LAYOUT_ALLOW_FUNC (stemdirective) PUT_LAYOUT_IGNORE_FUNC (stemdirective) PUT_INT_FIELD_FUNC (stemdirective, tx) PUT_INT_FIELD_FUNC (stemdirective, ty) PUT_INT_FIELD_FUNC (stemdirective, gx) PUT_INT_FIELD_FUNC (stemdirective, gy) PUT_INT_FIELD_FUNC (stemdirective, override) GET_INT_FIELD_FUNC (stemdirective, tx) GET_INT_FIELD_FUNC (stemdirective, ty) GET_INT_FIELD_FUNC (stemdirective, gx) GET_INT_FIELD_FUNC (stemdirective, gy) GET_INT_FIELD_FUNC (stemdirective, override) GET_INT_GRAPHIC_FIELD_FUNC (stemdirective, width) GET_INT_GRAPHIC_FIELD_FUNC (stemdirective, height) PUT_STR_FIELD_FUNC (stemdirective, prefix) PUT_STR_FIELD_FUNC (stemdirective, postfix) PUT_STR_FIELD_FUNC (stemdirective, display) GET_STR_FIELD_FUNC (stemdirective, prefix) GET_STR_FIELD_FUNC (stemdirective, postfix) GET_STR_FIELD_FUNC (stemdirective, display) PUT_LAYOUT_ALLOW_FUNC (scoreheader) PUT_LAYOUT_IGNORE_FUNC (scoreheader) GET_INT_FIELD_FUNC (scoreheader, tx) GET_INT_FIELD_FUNC (scoreheader, ty) GET_INT_FIELD_FUNC (scoreheader, gx) GET_INT_FIELD_FUNC (scoreheader, gy) GET_INT_FIELD_FUNC (scoreheader, override) GET_INT_GRAPHIC_FIELD_FUNC (scoreheader, width) GET_INT_GRAPHIC_FIELD_FUNC (scoreheader, height) GET_STR_FIELD_FUNC (scoreheader, prefix) GET_STR_FIELD_FUNC (scoreheader, postfix) GET_STR_FIELD_FUNC (scoreheader, display) PUT_LAYOUT_ALLOW_FUNC (header) PUT_LAYOUT_IGNORE_FUNC (header) GET_INT_FIELD_FUNC (header, tx) GET_INT_FIELD_FUNC (header, ty) GET_INT_FIELD_FUNC (header, gx) GET_INT_FIELD_FUNC (header, gy) GET_INT_FIELD_FUNC (header, override) GET_INT_GRAPHIC_FIELD_FUNC (header, width) GET_INT_GRAPHIC_FIELD_FUNC (header, height) GET_STR_FIELD_FUNC (header, prefix) GET_STR_FIELD_FUNC (header, postfix) GET_STR_FIELD_FUNC (header, display) PUT_LAYOUT_ALLOW_FUNC (paper) PUT_LAYOUT_IGNORE_FUNC (paper) GET_INT_FIELD_FUNC (paper, tx) GET_INT_FIELD_FUNC (paper, ty) GET_INT_FIELD_FUNC (paper, gx) GET_INT_FIELD_FUNC (paper, gy) GET_INT_FIELD_FUNC (paper, override) GET_INT_GRAPHIC_FIELD_FUNC (paper, width) GET_INT_GRAPHIC_FIELD_FUNC (paper, height) GET_STR_FIELD_FUNC (paper, prefix) GET_STR_FIELD_FUNC (paper, postfix) GET_STR_FIELD_FUNC (paper, display) PUT_LAYOUT_ALLOW_FUNC (layout) PUT_LAYOUT_IGNORE_FUNC (layout) GET_INT_FIELD_FUNC (layout, tx) GET_INT_FIELD_FUNC (layout, ty) GET_INT_FIELD_FUNC (layout, gx) GET_INT_FIELD_FUNC (layout, gy) GET_INT_FIELD_FUNC (layout, override) GET_INT_GRAPHIC_FIELD_FUNC (layout, width) GET_INT_GRAPHIC_FIELD_FUNC (layout, height) GET_STR_FIELD_FUNC (layout, prefix) GET_STR_FIELD_FUNC (layout, postfix) GET_STR_FIELD_FUNC (layout, display) PUT_LAYOUT_ALLOW_FUNC (movementcontrol) PUT_LAYOUT_IGNORE_FUNC (movementcontrol) GET_INT_FIELD_FUNC (movementcontrol, tx) GET_INT_FIELD_FUNC (movementcontrol, ty) GET_INT_FIELD_FUNC (movementcontrol, gx) GET_INT_FIELD_FUNC (movementcontrol, gy) GET_INT_FIELD_FUNC (movementcontrol, override) GET_INT_GRAPHIC_FIELD_FUNC (movementcontrol, width) GET_INT_GRAPHIC_FIELD_FUNC (movementcontrol, height) GET_STR_FIELD_FUNC (movementcontrol, prefix) GET_STR_FIELD_FUNC (movementcontrol, postfix) GET_STR_FIELD_FUNC (movementcontrol, display) #undef STANDALONE_PUT_INT_FIELD_FUNC #undef PUT_GRAPHIC #undef PUT_INT_FIELD_FUNC #undef GET_INT_FIELD_FUNC #undef PUT_STR_FIELD_FUNC #undef GET_STR_FIELD_FUNC gchar * get_scoretitle (void) { gchar *scoretitle = NULL; GList *first = Denemo.project->movements; if (first) { DenemoMovement *si = (DenemoMovement *) first->data; if (si) { DenemoDirective *directive = find_directive (si->header.directives, "Movement-title"); if (directive && directive->display) scoretitle = directive->display->str; } } return scoretitle; } #define ACTIVATE_DIRECTIVE(what)\ gboolean activate_##what##_directive(gchar *tag) {\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive)\ return activate_directive(directive, #what);\ return FALSE;\ } #define TEXT_EDIT_DIRECTIVE(what)\ gboolean text_edit_##what##_directive(gchar *tag) {\ DenemoDirective *directive = get_##what##_directive(tag);\ if(directive)\ return text_edit_directive(directive, #what);\ return FALSE;\ }\ ACTIVATE_DIRECTIVE(what) TEXT_EDIT_DIRECTIVE (note); TEXT_EDIT_DIRECTIVE (chord); TEXT_EDIT_DIRECTIVE (staff); TEXT_EDIT_DIRECTIVE (voice); TEXT_EDIT_DIRECTIVE (score); TEXT_EDIT_DIRECTIVE (clef); TEXT_EDIT_DIRECTIVE (timesig); TEXT_EDIT_DIRECTIVE (tuplet); TEXT_EDIT_DIRECTIVE (stemdirective); TEXT_EDIT_DIRECTIVE (keysig); TEXT_EDIT_DIRECTIVE (scoreheader); TEXT_EDIT_DIRECTIVE (header); TEXT_EDIT_DIRECTIVE (paper); TEXT_EDIT_DIRECTIVE (layout); TEXT_EDIT_DIRECTIVE (movementcontrol); TEXT_EDIT_DIRECTIVE (standalone); #undef TEXT_EDIT_DIRECTIVE #define GET_NTH_TAG(what, name)\ gchar *get_nth_##what##_tag(gint n) {\ what *current = get_##what();\ if(current==NULL) return NULL;\ GList *g = g_list_nth(current->name, n);\ if(g==NULL) return NULL;\ DenemoDirective *directive = (DenemoDirective *)g->data;\ return directive->tag->str;} GET_NTH_TAG (note, directives); GET_NTH_TAG (chord, directives); GET_NTH_TAG (staff, staff_directives); GET_NTH_TAG (voice, voice_directives); GET_NTH_TAG (score, directives); GET_NTH_TAG (clef, directives); GET_NTH_TAG (timesig, directives); GET_NTH_TAG (tuplet, directives); GET_NTH_TAG (stemdirective, directives); GET_NTH_TAG (keysig, directives); GET_NTH_TAG (scoreheader, directives); GET_NTH_TAG (header, directives); GET_NTH_TAG (paper, directives); GET_NTH_TAG (layout, directives); GET_NTH_TAG (movementcontrol, directives); #undef GET_NTH_TAG gchar *get_nth_strict_note_tag(gint n) { note *current = get_strict_note(); if(current==NULL) return NULL; GList *g = g_list_nth(current->directives, n); if(g==NULL) return NULL; DenemoDirective *directive = (DenemoDirective *)g->data; if (directive->tag==NULL) directive->tag = g_string_new (UNKNOWN_TAG); return directive->tag->str; } const gchar *strict_note_directive_get_tag (gchar *tag) { note *current = get_strict_note(); if(current==NULL) return NULL; GList *g = current->directives; for(;g; g=g->next) { DenemoDirective *directive = (DenemoDirective *)g->data; if(tag == NULL) return directive->tag?directive->tag->str:NULL; if (directive->tag && !strcmp (directive->tag->str, tag)) return tag; } return NULL; } /* gets the directive at the cursor a further call on the same object gets the next directive unless called on another object of the same type * which causes it to reset to the first directive */ DenemoDirective *get_next_directive_at_cursor (void) { GList *directives = NULL; DenemoDirective *directive = NULL; note *current = get_strict_note(); if(current) {static GList *last; directives = current->directives; if(directives) { if(last && (g_list_position(directives, last)>=0)) { last = last->next; if(!last) last = directives; } else last = directives; directive = last->data; } } if(directives==NULL) { chord *curchord = get_chord (); if(curchord) {static GList *last; directives = curchord->directives; if(directives) { if(last && (g_list_position(directives, last)>=0)) { last = last->next; if(!last) last = directives; } else last = directives; directive = last->data; } } } if(directives==NULL) { DenemoObject *currentobject = get_object (); if (currentobject) {static GList *last; if(currentobject->type == LILYDIRECTIVE) { directive = currentobject->object; } else { gpointer obj = currentobject->object; directives = (currentobject->type==KEYSIG)?((keysig*)obj)->directives: (currentobject->type==TIMESIG)?((timesig*)obj)->directives: (currentobject->type==CLEF)?((clef*)obj)->directives: (currentobject->type==STEMDIRECTIVE)?((stemdirective*)obj)->directives: (currentobject->type==TUPOPEN)?((tuplet*)obj)->directives: (currentobject->type==TUPCLOSE)?((tuplet*)obj)->directives:NULL; if(directives) { if(last && (g_list_position(directives, last)>=0)) { last = last->next; if(!last) last = directives; } else last = directives; directive = last->data; } } } } return directive; } static GList *move_to_front (GList *directives, gchar *tag) { GList *el; gpointer data = NULL; for (el = directives;el;el=el->next) { DenemoDirective *directive = el->data; if (!(g_strcmp0 (tag, (gchar*) directive->tag->str))) { data = el->data; directives = g_list_remove (directives, data); break; } } if(data) return g_list_prepend (directives, data); return NULL; } #define REORDER_TAG(what, name)\ gboolean prioritize_##what##_tag (gchar *tag) {\ what *current = get_##what();\ if(current==NULL) return FALSE;\ GList *g = move_to_front (current->name, tag);\ if(g==NULL) return FALSE;\ current->name = g;\ return TRUE;} REORDER_TAG (note, directives); REORDER_TAG (chord, directives); REORDER_TAG (staff, staff_directives); REORDER_TAG (voice, voice_directives); REORDER_TAG (score, directives); REORDER_TAG (clef, directives); REORDER_TAG (timesig, directives); REORDER_TAG (tuplet, directives); REORDER_TAG (stemdirective, directives); REORDER_TAG (keysig, directives); REORDER_TAG (scoreheader, directives); REORDER_TAG (header, directives); REORDER_TAG (paper, directives); REORDER_TAG (layout, directives); REORDER_TAG (movementcontrol, directives); #undef REORDER_TAG gboolean wrong_layout (DenemoDirective *directive, guint id) { if (directive->layouts) { if(directive->flag == DENEMO_ALLOW_FOR_LAYOUTS) { if (g_list_index (directive->layouts, GUINT_TO_POINTER(id))<0) return TRUE; return FALSE; } if(directive->flag == DENEMO_IGNORE_FOR_LAYOUTS) { if (g_list_index (directive->layouts, GUINT_TO_POINTER(id))>=0) return TRUE; } } return FALSE; } denemo-2.2.0/src/command/PaxHeaders.19168/staff.c0000644000000000000000000000013213135434036016205 xustar0030 mtime=1500919838.343315139 30 atime=1500919918.593315139 30 ctime=1500919914.149981805 denemo-2.2.0/src/command/staff.c0000644000175000017500000004726413135434036020073 0ustar00jjbenhamjjbenham00000000000000/** * staff.cpp * functions dealing with whole staffs * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #include "command/chord.h" #include "command/contexts.h" #include #include "ui/dialogs.h" #include "command/measure.h" #include "ui/moveviewport.h" #include "command/object.h" #include "command/processstaffname.h" #include "command/staff.h" #include #include #include "display/calculatepositions.h" #include "command/commandfuncs.h" #include "command/lilydirectives.h" #include "display/displayanimation.h" #include "command/select.h" #include "core/cache.h" #include "core/utils.h" #include "command/lyric.h" gboolean signal_structural_change (DenemoProject * project) { project->layout_sync++;//project->changecount; return TRUE; } /** * Return the first measure node of the given staffops * @param thestaff a staffnode * @return the first measure node of the staff */ measurenode * staff_first_measure_node (staffnode * thestaff) { return ((DenemoStaff *) thestaff->data)->themeasures; } /** * Return the nth measure of the given staff * @param thestaff a staffnode * @param n the number of the measure to return * @return the nth measure of the staff */ measurenode * staff_nth_measure_node (staffnode * thestaff, gint n) { return g_list_nth (((DenemoStaff *) thestaff->data)->themeasures, n); } /** * Reset movement->currentprimarystaff based on current value of * movement->currentstaff * @param movement a scoreinfo structure * @return none */ void staff_set_current_primary (DenemoMovement * movement) { for (movement->currentprimarystaff = movement->currentstaff; movement->currentprimarystaff && (((DenemoStaff *) movement->currentprimarystaff->data)->voicecontrol & DENEMO_SECONDARY); movement->currentprimarystaff = movement->currentprimarystaff->prev) ; } /** * Copies the staff data from a source staff to destination staff * @param src the source staff * @param dest the destination staff * @return none */ static void staff_copy_bits (DenemoStaff * src, DenemoStaff * dest) { dest->clef.type = src->clef.type; //other fields - take care if dynamic dest->keysig.number = src->keysig.number; dest->keysig.isminor = src->keysig.isminor; memcpy (dest->keysig.accs, src->keysig.accs, SEVENGINTS); dest->timesig.time1 = src->timesig.time1; dest->timesig.time2 = src->timesig.time2; dest->volume = 127; dest->no_of_lines = 5; dest->transposition = 0; dest->hide_lyrics = src->hide_lyrics; dest->space_above = 0; dest->space_below = 0; dest->context = DENEMO_NONE; } /** * Copies a staffs parameters from source to destination FIXME: only for a new voice - does not really copy * @param src the source staff * @param dest the destination staff * @return none */ static void staff_copy_properties (DenemoStaff * src, DenemoStaff * dest) { dest->midi_instrument = g_string_new (src->midi_instrument->str); dest->space_above = src->space_above; dest->space_shorten = src->space_shorten; dest->space_below = src->space_below; dest->no_of_lines = src->no_of_lines; dest->transposition = src->transposition; dest->hide_lyrics = src->hide_lyrics; dest->volume = src->volume; dest->voicecontrol = DENEMO_SECONDARY; // staff_beams_and_stems_dirs (dest); this crashes the cache code, and is anyway absurd, this is an empty voice. } /* copies a staff without its music data to another staff * if copy_all is FALSE directives attached to the staff are not copied nor the voicecontrol field * so that a voice can be created with cloned properties. */ void staff_copy (DenemoStaff * src, DenemoStaff * dest, gboolean copy_all) { dest->denemo_name = g_string_new (src->denemo_name->str); dest->lily_name = g_string_new (src->lily_name->str); dest->midi_instrument = g_string_new (src->midi_instrument->str); dest->midi_channel = src->midi_channel; dest->midi_prognum = src->midi_prognum; dest->hide_lyrics = src->hide_lyrics; dest->no_of_lines = src->no_of_lines; dest->transposition = src->transposition; dest->space_above = src->space_above; /**< space above the staff used in the denemo gui */ dest->space_shorten = src->space_shorten; /**< space by the staff is shorter in height because of few staff lines */ dest->space_below = src->space_below; /**< space below the staff used in the denemo gui */ dest->range = src->range;/**range_hi = src->range_hi;/**< highest note playable by instrument, mid_c_offset */ dest->range_lo = src->range_lo;/**< lowest note playable by instrument, mid_c_offset */ dest->volume = src->volume; dest->clef.type = src->clef.type; dest->leftmost_clefcontext = &dest->clef; if (copy_all) { dest->voicecontrol = src->voicecontrol; dest->staff_directives = clone_directives (src->staff_directives); dest->voice_directives = clone_directives (src->voice_directives); dest->clef.directives = clone_directives (src->clef.directives); dest->keysig.directives = clone_directives (src->keysig.directives); dest->timesig.directives = clone_directives (src->timesig.directives); } dest->keysig.number = src->keysig.number; dest->keysig.isminor = src->keysig.isminor; memcpy (dest->keysig.accs, src->keysig.accs, SEVENGINTS); dest->leftmost_keysig = &dest->keysig; dest->timesig.time1 = src->timesig.time1; dest->timesig.time2 = src->timesig.time2; dest->transposition = src->transposition; dest->space_above = 0; dest->space_below = 0; dest->context = src->context; } /** * Insert a new staff into the score * @param movement the scoreinfo structure * @param staff the staff to insert * @param action where to insert the new staff * @param addat the position to insert at * @return none */ static void staff_insert (DenemoMovement * movement, DenemoStaff * staff, enum newstaffcallbackaction action, gint addat) { movement->thescore = g_list_insert (movement->thescore, staff, addat - 1); if (action != BEFORE) if (action != AFTER) { movement->currentstaff = g_list_nth (movement->thescore, addat - 1); movement->currentstaffnum = addat; staff_set_current_primary (movement); find_leftmost_staffcontext (staff, movement); } set_staff_transition (20); } /** * Create and insert a new staff into the score * @param movement the scoreinfo structure * @param action the staffs type / where to insert it * @param context the staffs contexts * @return the newly created staff */ DenemoStaff* staff_new (DenemoProject * project, enum newstaffcallbackaction action, DenemoContext context) { DenemoMovement *movement = project->movement; if (movement == NULL) return NULL; take_snapshot (); DenemoStaff *staff = (DenemoStaff *) g_malloc (sizeof (DenemoStaff)); if(!Denemo.non_interactive){ // staff->staffmenu = (GtkMenu *) gtk_menu_new (); // staff->voicemenu = (GtkMenu *) gtk_menu_new (); } measurenode *themeasures = NULL; /* Initial set of measures in staff */ gint numstaffs = g_list_length (movement->thescore); gint i, addat = 1; //g_debug ("newstaff: Num staffs %d", numstaffs); if (numstaffs == 0) { action = INITIAL; staff->clef.type = DENEMO_TREBLE_CLEF; staff->keysig.number = 0; staff->keysig.isminor = FALSE; memset (staff->keysig.accs, 0, SEVENGINTS); staff->timesig.time1 = 4; staff->timesig.time2 = 4; staff->volume = 127; staff->no_of_lines = 5; staff->transposition = 0; staff->space_above = 20; staff->space_below = 0; staff->nummeasures = 1; staff->midi_channel = 0; #if 0 movement->measurewidths = g_list_append (movement->measurewidths, GINT_TO_POINTER (movement->measurewidth)); #else movement->measurewidths = g_list_append (NULL, GINT_TO_POINTER (movement->measurewidth)); //FIXME free old measurewidths #endif } else { /* how did this work before? a new staff must have the same number of measures as the present one(s) */ staff->nummeasures = g_list_length (staff_first_measure_node (movement->thescore)); staff_copy_bits ((DenemoStaff *) movement->currentstaff->data, staff); staff->midi_channel = (numstaffs < 9 ? numstaffs : numstaffs + 1) & 0xF; } if (action == NEWVOICE) { staff->voicecontrol = DENEMO_SECONDARY; staff->nummeasures = g_list_length (staff_first_measure_node (movement->currentstaff)); //FIXME redundant } else { staff->voicecontrol = DENEMO_PRIMARY; }; for (i = 0; i < staff->nummeasures; i++) { themeasures = g_list_append (themeasures, (gpointer)g_malloc0(sizeof(DenemoMeasure))); }; if (action == INITIAL || action == ADDFROMLOAD) { movement->currentmeasure = themeasures; } /* Now fix the stuff that shouldn't be directly copied from * the current staff, if this staff was non-initial and that * was done to begin with */ staff->themeasures = themeasures; staff->denemo_name = g_string_new (""); staff->lily_name = g_string_new (""); staff->context = context; if (action == INITIAL) g_string_sprintf (staff->denemo_name, _("Part 1")); else g_string_sprintf (staff->denemo_name, _("Part %d"), numstaffs + 1); set_lily_name (staff->denemo_name, staff->lily_name); staff->midi_instrument = g_string_new (""); staff->device_port = g_string_new ("NONE"); staff->leftmost_timesig = &staff->timesig; /* In what position should the scrollbar be added? */ switch (action) { case INITIAL: addat = 1; break; case LAST: case ADDFROMLOAD: addat = numstaffs + 1; break; case BEFORE: addat = movement->currentstaffnum; break; case AFTER: case NEWVOICE: case LYRICSTAFF: case FIGURESTAFF: addat = movement->currentstaffnum + 1; break; case CHORDSTAFF: addat = movement->currentstaffnum + 1; break; case FIRST: addat = 1; break; default: break; } if (action != INITIAL && action != ADDFROMLOAD) { if (action == NEWVOICE) { staff_copy_properties ((DenemoStaff *) movement->currentstaff->data, staff); set_lily_name (staff->denemo_name, staff->lily_name); //this should be re-done if the denemo_name is reset. staff_insert (movement, staff, action, addat); } else { // ret = staff_properties_change (&itp); // if (ret) { /* If staff_properties_change returns false, then the staff should probably be removed Fixed 09042005 Adam Tee */ staff_insert (movement, staff, action, addat); movement->currentmeasurenum = 1; /* Reset leftmeasure num to 1 to be at the start of the next staff. */ movement->leftmeasurenum = 1; } // else // { /* * Free the staff struct as it has not been inserted * into the score */ // g_free (staff); // } } } else // is INITIAL or ADDFROMLOAD { staff_insert (movement, staff, action, addat); movement->leftmeasurenum = 1; } if ( addat==1) staff->space_above = 20; cache_staff (g_list_find (Denemo.project->movement->thescore, staff)); return staff; } static void freemeasure (DenemoMeasure *meas) { //g_list_foreach (meas->objects, freeobjlist, NULL); freeobjlist (meas->objects); } /** * Remove the project->movement->currentstaff from the piece project and reset movement->currentstaff * if only one staff, inserts a new empty one * if interactive checks for custom_scoreblock * if a staff is deleted, updates the changecount * @param project the DenemoProject structure * @return nothing */ void staff_delete (DenemoProject * project, gboolean interactive) { DenemoMovement *movement = project->movement; DenemoStaff *curstaffstruct = movement->currentstaff->data; gboolean has_next = (movement->currentstaff->next != NULL); (void) signal_structural_change (project); if (movement->currentstaff == NULL) return; gboolean give_info = FALSE; //give info about removing matching context if (interactive && (curstaffstruct->context != DENEMO_NONE) && (!confirm (_("A context is set on this staff"), _("You will need to alter/delete the matching staff; Proceed?")))) return; if (interactive && (curstaffstruct->context != DENEMO_NONE)) give_info = TRUE; take_snapshot (); if (!Denemo.non_interactive) Denemo.project->movement->undo_guard++; gboolean isprimary = (gboolean) (curstaffstruct->voicecontrol & DENEMO_PRIMARY); //FIXME free_staff() free_directives (curstaffstruct->staff_directives); free_directives (curstaffstruct->timesig.directives); free_directives (curstaffstruct->keysig.directives); if(!Denemo.non_interactive){ // gtk_widget_destroy ((GtkWidget *) (curstaffstruct->staffmenu)); these aren't used // gtk_widget_destroy ((GtkWidget *) (curstaffstruct->voicemenu)); } //FIXME DANGER g_list_foreach (curstaffstruct->themeasures, (GFunc)freemeasure, NULL); g_list_free_full (curstaffstruct->themeasures, g_free); g_string_free (curstaffstruct->denemo_name, FALSE); //FIXME these should all be TRUE?? g_string_free (curstaffstruct->lily_name, FALSE); g_string_free (curstaffstruct->midi_instrument, FALSE); // g_list_foreach (curstaffstruct->verse_views, (GFunc)destroy_parent, NULL);//FIXME it is enough to destroy the notebook, here we are only destroying the GtkTextViews if (curstaffstruct->verse_views) gtk_widget_destroy (gtk_widget_get_parent (gtk_widget_get_parent (curstaffstruct->verse_views->data))); g_free (curstaffstruct); if (movement->currentstaff == g_list_last (movement->thescore)) movement->currentstaffnum--; //deleting the last, so the currentstaffnum must decrease else set_staff_transition (20); movement->thescore = g_list_delete_link (movement->thescore, movement->currentstaff); if (movement->thescore == NULL) { staff_new (project, INITIAL, DENEMO_NONE); } movement->currentstaff = g_list_nth (movement->thescore, movement->currentstaffnum - 1); if (isprimary && has_next) // we deleted the primary, so the next one (which is present) must become the primary { ((DenemoStaff *) movement->currentstaff->data)->voicecontrol = DENEMO_PRIMARY; movement->currentprimarystaff = movement->currentstaff; } else { staff_set_current_primary (movement); } setcurrents (movement); if (movement->markstaffnum) calcmarkboundaries (movement); if (project->movement->currentstaffnum < project->movement->top_staff) project->movement->top_staff = project->movement->currentstaffnum; show_lyrics (); if(!Denemo.non_interactive){ update_vscrollbar (project); displayhelper (project); score_status (project, TRUE); } if (give_info) infodialog (_("The staff deleted had a start/end context; if you still have the staff with the matching end/start context\n then you should remove it (or its context) now.\nSee Staff->properties->context\nYou will not be able to print with miss-matched contexts.")); if (!Denemo.non_interactive) Denemo.project->movement->undo_guard--; return; } /** * Sets the beams and stem directions across the given staff * @param thestaff a staff structure * @return none */ void staff_beams_and_stems_dirs (DenemoStaff * thestaff) { measurenode *curmeasure; for (curmeasure = thestaff->themeasures; curmeasure; curmeasure = curmeasure->next) { calculatebeamsandstemdirs ((DenemoMeasure*)curmeasure->data); } } /** * Sets which accidentals to show across a staff on a key sig change * @param thestaff a staff stucture * @return none */ void staff_show_which_accidentals (DenemoStaff * thestaff) { measurenode *curmeasure; for (curmeasure = thestaff->themeasures; curmeasure; curmeasure = curmeasure->next) showwhichaccidentals ((objnode *) ((DenemoMeasure*)curmeasure->data)->objects); } /** * Function to set the note positions on the given staff when there is a clef change * @param thestaff a staff structure * @return none */ void staff_fix_note_heights (DenemoStaff * thestaff) { //gint nclef = thestaff->clef.type; //gint time1 = thestaff->stime1;//USELESS //gint time2 = thestaff->stime2;//USELESS //gint initialclef;//USELESS measurenode *curmeasure; objnode *curobj; DenemoObject *theobj; g_warning ("Staff fix note heights called uselessly?"); for (curmeasure = thestaff->themeasures; curmeasure; curmeasure = curmeasure->next) { //initialclef = nclef; for (curobj = (objnode *) ((DenemoMeasure *)curmeasure->data)->objects; curobj; curobj = curobj->next) { theobj = (DenemoObject *) curobj->data; switch (theobj->type) { case CHORD: newclefify (theobj); break; default: break; } } /* End for */ } /* End for */ staff_beams_and_stems_dirs (thestaff); } /** * Callback function to insert a staff in the initial position * @param action a Gtk Action * @param project the DenemoProject structure * @return none */ void staff_new_initial (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *project = Denemo.project; while (project->movement->currentstaff && project->movement->currentstaff->prev) movetostaffup (NULL, NULL); staff_new_before (action, NULL); } /** Callback function to insert a staff before the current staff * @param action a Gtk Action * @param project the DenemoProject structure * @return none */ void staff_new_before (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *project = Denemo.project; (void) signal_structural_change (project); movetostart (NULL, NULL); staff_new (project, BEFORE, DENEMO_NONE); if (project->movement->currentstaffnum >= project->movement->top_staff) project->movement->top_staff++; project->movement->currentstaffnum++; project->movement->bottom_staff++; set_bottom_staff (project); move_viewport_down (project); movetostaffup (NULL, NULL); displayhelper (project); } /** * Callback function to insert a staff after the current staff * @param action a Gtk Action * @param project the DenemoProject structure * @return none */ void staff_new_after (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *project = Denemo.project; if (!signal_structural_change (project)) return; movetostart (NULL, NULL); staff_new (project, AFTER, DENEMO_NONE); if(!Denemo.non_interactive){ set_bottom_staff (project); update_vscrollbar (project); } movetostaffdown (NULL, NULL); displayhelper (project); } /** * Callback function to insert a staff at the bottom of the score * @param action a Gtk Action * @param project the DenemoProject structure * @return none */ void staff_new_last (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *project = Denemo.project; while (project->movement->currentstaff && project->movement->currentstaff->next) movetostaffdown (NULL, NULL); staff_new_after (action, param); } /** * Callback function to add a new voice to the current staff * @param action a Gtk Action * @param project the DenemoProject structure * @return none */ void staff_new_voice (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *project = Denemo.project; staff_new (project, NEWVOICE, DENEMO_NONE); set_bottom_staff (project); update_vscrollbar (project); setcurrents (project->movement); if (project->movement->markstaffnum) calcmarkboundaries (project->movement); displayhelper (project); } denemo-2.2.0/src/command/PaxHeaders.19168/scorelayout.c0000644000000000000000000000013213135434036017453 xustar0030 mtime=1500919838.343315139 30 atime=1500919918.606648472 30 ctime=1500919914.133315139 denemo-2.2.0/src/command/scorelayout.c0000644000175000017500000035702413135434036021337 0ustar00jjbenhamjjbenham00000000000000// scorelayout.c // // Copyright 2012 Richard Shann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA 02110-1301, USA. #include #include "command/scorelayout.h" #include "export/exportlilypond.h" #include "core/utils.h" #include "export/print.h" #include "printview/printview.h" #include "command/lilydirectives.h" #include "command/score.h" #include "command/processstaffname.h" #include "core/view.h" #include "core/menusystem.h" #define LILYPOND_TEXT_EDITOR _("LilyPond text editor") #define DEFAULT_SCORE_LAYOUT _("Default Score Layout") static void set_notebook_page (GtkWidget * w); static void prefix_edit_callback (GtkWidget * widget, GtkWidget * frame); static void create_element (GtkWidget * vbox, GtkWidget * widget, gchar * lilypond); static void create_standard_scoreblock (DenemoScoreblock ** psb, gint movement, gchar * partname); static void recreate_standard_scoreblock (DenemoScoreblock ** psb); static DenemoScoreblock *get_standard_scoreblock (GtkWidget * widget); static GtkWidget *get_options_button (DenemoScoreblock * sb, gboolean custom); static void install_duplicate_movement_callback (DenemoScoreblock * sb); static void reorder_movement_callback (DenemoScoreblock * psb); static gboolean edit_lilypond_prefix (GtkWidget * widget, gchar * oldval, gchar * newval); static void reload_scorewide_block (GtkWidget * frame); static gint layout_sync; // Reverses (reflects) bits in a 32-bit word. static guint32 bit_reverse (guint32 x) { x = ((x & 0x55555555) << 1) | ((x >> 1) & 0x55555555); x = ((x & 0x33333333) << 2) | ((x >> 2) & 0x33333333); x = ((x & 0x0F0F0F0F) << 4) | ((x >> 4) & 0x0F0F0F0F); x = (x << 24) | ((x & 0xFF00) << 8) | ((x >> 8) & 0xFF00) | (x >> 24); return x; } /* This is the basic CRC algorithm with no optimizations. It follows the logic circuit as closely as possible. */ //returns a 32 bit crc for the passed string static guint32 crc32 (guchar * message) { int i, j; guint32 byte, crc; i = 0; crc = 0xFFFFFFFF; while (message[i] != 0) { byte = message[i]; // Get next byte. byte = bit_reverse (byte); // 32-bit reversal. for (j = 0; j <= 7; j++) { // Do eight times. if ((int) (crc ^ byte) < 0) crc = (crc << 1) ^ 0x04C11DB7; else crc = crc << 1; byte = byte << 1; // Ready next msg bit. } i = i + 1; } return bit_reverse (~crc); } static guint get_location (guint movementnum, guint voicecount) { return (movementnum << 16) | voicecount; } static void navigate_to_location (GtkWidget * w, guint location) { guint movementnum = location >> 16; guint staffnum = location & 0xFFFF; goto_movement_staff_obj (NULL, movementnum, staffnum, 1, 0, 0); } static void popup_staff_groups_menu (GtkWidget * button) { GtkWidget *menuitem = denemo_menusystem_get_widget ("StaffGroupings"); if (get_standard_scoreblock (button)) { if (menuitem) gtk_menu_popup (GTK_MENU (gtk_menu_item_get_submenu (GTK_MENU_ITEM (menuitem))), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME); else g_warning ("No such menu path"); } else warningdialog (_("This button is for changing the score itself, it will not affect this custom layout")); } static void staff_groups_menu (GtkWidget * w, GdkEvent * event, guint location) { navigate_to_location (NULL, location); popup_staff_groups_menu (w); } //callback on destroying widgets that are on the staff_list of a scoreblock. static gboolean remove_from_staff_list (GtkWidget * widget, GList ** g) { *g = g_list_remove (*g, widget); return TRUE; //that is go on to destroy the widget } //free the passed DenemoScoreblock structure for re-use or disposal static void free_scoreblock (DenemoScoreblock * sb) { if (sb->widget) gtk_widget_destroy (sb->widget); //FIXME free lilypond attached to widgets sb->widget = 0; if (sb->lilypond) g_string_free ((GString *) (sb->lilypond), TRUE); g_free (sb->instrumentation); sb->instrumentation = NULL; sb->lilypond = NULL; } void free_scoreblocks (DenemoProject * gui) { if (gui->standard_scoreblocks) { GList *g; for (g = gui->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = ((DenemoScoreblock *) g->data); free_scoreblock (sb); } g_list_free (gui->standard_scoreblocks); gui->standard_scoreblocks = NULL; } if (gui->custom_scoreblocks) { GList *g; for (g = gui->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = ((DenemoScoreblock *) g->data); free_scoreblock (sb); } g_list_free (gui->custom_scoreblocks); gui->custom_scoreblocks = NULL; } } static gboolean is_in_standard_scoreblock (DenemoScoreblock * sb) { return (g_list_find (Denemo.project->standard_scoreblocks, sb) != NULL); } static gboolean free_prefix_and_postfix (GtkWidget * widget) { // glib 2.28 and greater can use: //g_list_free_full(g_object_get_data(G_OBJECT(widget), "prefix"), (GDestroyNotify)g_free); //g_list_free_full(g_object_get_data(G_OBJECT(widget), "postfix"), (GDestroyNotify)g_free); GList *g = g_object_get_data (G_OBJECT (widget), "prefix"); g_list_foreach (g, (GFunc) (g_free), NULL); g_list_free (g); g = g_object_get_data (G_OBJECT (widget), "postfix"); g_list_foreach (g, (GFunc) (g_free), NULL); g_list_free (g); return TRUE; //and destroy widget } void break_and_carry_on (void) { } // attaches the two lilypond strings to the prefix and postfix lists of widget // prefix is created in the reverse order to postfix so they can nest // the destroy widget is arranged to free the lists static void add_lilypond (GtkWidget * w, gchar * prefix, gchar * postfix) { if (g_object_get_data (G_OBJECT (w), "prefix") == NULL && g_object_get_data (G_OBJECT (w), "postfix") == NULL) g_signal_connect (G_OBJECT (w), "destroy", G_CALLBACK (free_prefix_and_postfix), NULL); if (prefix) g_object_set_data (G_OBJECT (w), "prefix", (gpointer) g_list_append (g_object_get_data (G_OBJECT (w), "prefix"), prefix)); if (postfix) g_object_set_data (G_OBJECT (w), "postfix", (gpointer) g_list_prepend (g_object_get_data (G_OBJECT (w), "postfix"), postfix)); } #define get_voicetag get_voicename //they don't need to be different. static gchar * get_voicename (gint movementnum, gint voice_count) { GString *str = g_string_new (""); GString *name = g_string_new (""); g_string_printf (str, "Mvmnt%d Voice%d", movementnum, voice_count); set_lily_name (str, name); g_string_free (str, TRUE); return g_string_free (name, FALSE); } static gchar * get_versename (gint movementnum, gint voice_count, gint versenum) { GString *str = g_string_new (""); GString *name = g_string_new (""); g_string_printf (str, "Mvmnt%d Voice%d Verse%d", movementnum, voice_count, versenum); set_lily_name (str, name); g_string_free (str, TRUE); return g_string_free (name, FALSE); } //Change the name of the scoreblock to user given value static gboolean name_scoreblock (DenemoScoreblock * sb, gchar * name) { gchar *value; if (name == NULL) value = string_dialog_entry (Denemo.project, _("New Score Layout"), _("Give a name for this new score layout"), _("Custom Layout")); else value = name; if (value) { sb->name = g_strdup (value); gtk_notebook_set_tab_label_text (GTK_NOTEBOOK (get_score_layout_notebook (Denemo.project)), sb->widget, value); //FIXME if name==NULL g_free(value) I think. return TRUE; } else return FALSE; } //gets the toplevel standard DenemoScoreblock which contains the passed in widget, or NULL if not in the standard scoreblocks static DenemoScoreblock * get_standard_scoreblock (GtkWidget * widget) { GList *g; for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = (DenemoScoreblock *) g->data; if (sb->widget && gtk_widget_is_ancestor (widget, sb->widget)) return sb; } return NULL; } //gets the toplevel custom DenemoScoreblock which contains the passed in widget, or NULL if not in the custom scoreblocks /* UNUSED static DenemoScoreblock * get_custom_scoreblock (GtkWidget * widget) { GList *g; for (g = Denemo.project->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = (DenemoScoreblock *) g->data; if (sb->widget && gtk_widget_is_ancestor (widget, sb->widget)) return sb; } return NULL; } */ static gboolean is_lilypond_text_layout (DenemoScoreblock * sb) { return sb->text_only; //return sb->widget && GTK_IS_FRAME(sb->widget) && gtk_frame_get_label(GTK_FRAME(sb->widget)) && !strcmp(gtk_frame_get_label(GTK_FRAME(sb->widget)), LILYPOND_TEXT_EDITOR); } static void open_lilypond_window_callback (void) { if (Denemo.textwindow && !gtk_widget_get_visible (Denemo.textwindow)) set_toggle ("ToggleLilyText", TRUE); } static void convert_to_lilypond_callback (GtkWidget * widget, DenemoScoreblock * sb) { refresh_lilypond (sb); DenemoScoreblock *newsb = get_scoreblock_for_lilypond (sb->lilypond->str); Denemo.project->custom_scoreblocks = g_list_remove (Denemo.project->custom_scoreblocks, sb); Denemo.project->standard_scoreblocks = g_list_remove (Denemo.project->standard_scoreblocks, sb); GtkWidget *notebook = get_score_layout_notebook (Denemo.project); GtkWidget *label = gtk_label_new (sb->name); if (sb->widget) gtk_widget_destroy (sb->widget); gtk_widget_show_all (newsb->widget); gtk_notebook_prepend_page (GTK_NOTEBOOK (notebook), newsb->widget, label); gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0); Denemo.project->custom_scoreblocks = g_list_append (Denemo.project->custom_scoreblocks, newsb); Denemo.project->layout_id = 0; } static void delete_custom_scoreblock_callback (GtkWidget * dummy, DenemoScoreblock * sb) { Denemo.project->custom_scoreblocks = g_list_remove (Denemo.project->custom_scoreblocks, sb); gtk_widget_destroy (sb->widget); if (Denemo.project->standard_scoreblocks == NULL && Denemo.project->custom_scoreblocks == NULL) create_default_scoreblock (); score_status (Denemo.project, TRUE); } static void delete_standard_scoreblock_callback (GtkWidget * widget, DenemoScoreblock * sb) { Denemo.project->standard_scoreblocks = g_list_remove (Denemo.project->standard_scoreblocks, sb); gtk_widget_destroy (sb->widget); if (Denemo.project->standard_scoreblocks == NULL && Denemo.project->custom_scoreblocks == NULL) create_default_scoreblock (); score_status (Denemo.project, TRUE); } static void recreate_standard_scoreblock_callback (GtkWidget * widget, DenemoScoreblock * psb) { recreate_standard_scoreblock (&psb); } static gboolean customize_scoreblock (DenemoScoreblock * sb, gchar * name) { if (is_lilypond_text_layout (sb)) { DenemoScoreblock *newsb = get_scoreblock_for_lilypond (sb->lilypond->str); GtkWidget *notebook = get_score_layout_notebook (Denemo.project); name_scoreblock (newsb, name); GtkWidget *label = gtk_label_new (newsb->name); gtk_widget_show_all (newsb->widget); gtk_notebook_prepend_page (GTK_NOTEBOOK (notebook), newsb->widget, label); gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0); Denemo.project->custom_scoreblocks = g_list_append (Denemo.project->custom_scoreblocks, newsb); Denemo.project->layout_id = 0; gchar *new_name = g_strdup_printf ("%%%s\n", newsb->name); g_string_prepend (newsb->lilypond, new_name); g_free (new_name); g_string_append_printf (newsb->lilypond, "\n\\header {DenemoLayoutName = \"%s\"}\n", newsb->name); score_status (Denemo.project, TRUE); } else if (name_scoreblock (sb, name)) { g_free (sb->partname); sb->partname = NULL; sb->movement = 0; if (sb->lilypond) g_string_free (sb->lilypond, TRUE); sb->lilypond = NULL; Denemo.project->standard_scoreblocks = g_list_remove (Denemo.project->standard_scoreblocks, sb); Denemo.project->custom_scoreblocks = g_list_append (Denemo.project->custom_scoreblocks, sb); score_status (Denemo.project, TRUE); } else { return FALSE; } return TRUE; } #if 0 //having buttons that affect the score itself is confusing /* go through the layout deleting score block elements that are marked standard as they are not needed for a custom scoreblock*/ static void prune_layout (GtkWidget * layout) { if (GTK_IS_CONTAINER (layout)) { GList *g = gtk_container_get_children (GTK_CONTAINER (layout)); if (g) do { prune_layout (g->data); } while ((g = g->next)); } if (g_object_get_data (G_OBJECT (layout), "standard")) gtk_widget_destroy (layout); } #endif static DenemoScoreblock * clone_scoreblock (DenemoScoreblock * sb, gchar * name) { gchar *partname = g_strdup (sb->partname); //prune_layout (sb->widget); GtkWidget *options = get_options_button (sb, TRUE); gtk_widget_show_all (options); GtkWidget *viewport = gtk_bin_get_child (GTK_BIN (sb->widget)); GList *children = gtk_container_get_children (GTK_CONTAINER (viewport)); GtkWidget *vbox = children->data; GList *grandchildren = gtk_container_get_children (GTK_CONTAINER (vbox)); gtk_container_remove (GTK_CONTAINER (vbox), grandchildren->data); gtk_box_pack_start (GTK_BOX (vbox), options, FALSE, FALSE, 0); gtk_box_reorder_child (GTK_BOX (vbox), options, 0); if (customize_scoreblock (sb, name)) { #if 0 DenemoScoreblock *newsb = g_malloc0 (sizeof (DenemoScoreblock)); create_standard_scoreblock (&newsb, movement, partname); Denemo.project->standard_scoreblocks = g_list_prepend (Denemo.project->standard_scoreblocks, newsb); Denemo.project->lilysync = G_MAXUINT; Denemo.project->layout_id = 0; gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (Denemo.project->score_layout)))); return newsb; #else g_free (partname); return sb; #endif } else { g_free (partname); return NULL; } } static void customize_standard_scoreblock_callback (GtkWidget * widget, DenemoScoreblock * sb) { if (confirm (_("Customize Layout"), _("Replace Standard Layout?"))) { static gboolean warned; clone_scoreblock (sb, sb->name); if (!warned) infodialog (_("This layout will be used in place of the standard one, unless you delete it.\nAny new staffs added to the score will not appear in it unless you edit it.")); warned = TRUE; } else clone_scoreblock (sb, NULL); } static void duplicate_lilypond_scoreblock_callback (GtkWidget * widget, DenemoScoreblock * sb) { customize_scoreblock (sb, NULL); } static GtkWidget * get_options_button (DenemoScoreblock * sb, gboolean custom) { GtkWidget *frame = gtk_frame_new (_("Actions for this Layout")); GtkWidget *hbox = gtk_hbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), hbox); GtkWidget *button = gtk_button_new_with_label (_("Typeset")); gtk_widget_set_tooltip_text (button, _("Typeset the score using this layout to determine which movements, parts, titles, page breaks etc should be used")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); #ifdef USE_EVINCE g_signal_connect (button, "clicked", G_CALLBACK (show_print_view), NULL); #endif if (custom) { if (sb->text_only) { button = gtk_button_new_with_label (_("Edit LilyPond Text of Layout")); gtk_widget_set_tooltip_text (button, _("Opens the LilyPond window for further editing.")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (open_lilypond_window_callback), sb); button = gtk_button_new_with_label (_("Duplicate")); gtk_widget_set_tooltip_text (button, _("Create a duplicate of this layout.")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (duplicate_lilypond_scoreblock_callback), sb); } else { button = gtk_button_new_with_label (_("Convert to LilyPond Text")); gtk_widget_set_tooltip_text (button, _("Converts this layout to LilyPond text for further editing.")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (convert_to_lilypond_callback), sb); } button = gtk_button_new_with_label (_("Delete")); gtk_widget_set_tooltip_text (button, _("Discard this customized score layout.")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (delete_custom_scoreblock_callback), sb); button = gtk_button_new_with_label (_("Create Default Score Layout")); gtk_widget_set_tooltip_text (button, _("Creates the Default Score Layout")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (create_default_scoreblock), NULL); if (!sb->text_only) { button = gtk_button_new_with_label (_("Append Current Movement")); gtk_widget_set_tooltip_text (button, _("Appends the current movement at the end of this layout. Select the movement you wish to append to the layout in the Denemo Display first. The same movement can be placed multiple times in the layout, with individual edits as needed.")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect_swapped (button, "clicked", G_CALLBACK (install_duplicate_movement_callback), sb); button = gtk_button_new_with_label (_("Re-order Movement")); gtk_widget_set_tooltip_text (button, _("Moves the first expanded movement in this layout to the end.\nThis does not alter the score, just this layout. To re-order the actual movements of the score see the Movements menu.")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect_swapped (button, "clicked", G_CALLBACK (reorder_movement_callback), sb); } } else { button = gtk_button_new_with_label (_("Refresh")); gtk_widget_set_tooltip_text (button, _("Re-calculate this layout to incorporate changes made to the score structure.")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (recreate_standard_scoreblock_callback), sb); button = gtk_button_new_with_label (_("Customize")); gtk_widget_set_tooltip_text (button, _("Create a layout from this standard layout that you can then modify.")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (customize_standard_scoreblock_callback), sb); button = gtk_button_new_with_label (_("Create Default Score Layout")); gtk_widget_set_tooltip_text (button, _("Creates the Default Score Layout")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (create_default_scoreblock), NULL); button = gtk_button_new_with_label (_("Delete")); gtk_widget_set_tooltip_text (button, _("Discard this standard score layout.")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (delete_standard_scoreblock_callback), sb); } return frame; } //if widget is in a standard scoreblock, clone the scoreblock converting the standard one into a custom one. static gboolean clone_scoreblock_if_needed (GtkWidget * widget) { DenemoScoreblock *default_sb; if ((default_sb = get_standard_scoreblock (widget))) { //the button widget was on the default scoreblock, so we convert this to a custom scoreblock return clone_scoreblock (default_sb, NULL) != NULL; } return TRUE; } static gboolean move_parent (GtkWidget * widget, gboolean up) { if (!clone_scoreblock_if_needed (widget)) return TRUE; GtkWidget *parent = gtk_widget_get_parent (widget); GtkWidget *grandparent = gtk_widget_get_parent (parent); GList *children = gtk_container_get_children (GTK_CONTAINER (grandparent)); gint position = g_list_index (children, parent); if (up) { if (position > 0) { position--; gtk_box_reorder_child (GTK_BOX (grandparent), parent, position); score_status (Denemo.project, TRUE); } } else { position++; gtk_box_reorder_child (GTK_BOX (grandparent), parent, position); score_status (Denemo.project, TRUE); } return TRUE; } static gboolean move_grandparent (GtkWidget * widget, gboolean up) { if (!clone_scoreblock_if_needed (widget)) return TRUE; GtkWidget *parent = gtk_widget_get_parent (gtk_widget_get_parent (widget)); GtkWidget *grandparent = gtk_widget_get_parent (parent); GList *children = gtk_container_get_children (GTK_CONTAINER (grandparent)); gint position = g_list_index (children, parent); if (up) { if (position > 0) { position--; gtk_box_reorder_child (GTK_BOX (grandparent), parent, position); score_status (Denemo.project, TRUE); } } else { position++; gtk_box_reorder_child (GTK_BOX (grandparent), parent, position); score_status (Denemo.project, TRUE); } return TRUE; } static gboolean remove_element (GtkWidget * widget) { if (!clone_scoreblock_if_needed (widget)) return TRUE; GtkWidget *parent = gtk_widget_get_parent (widget); gtk_widget_destroy (parent); score_status (Denemo.project, TRUE); return TRUE; } static gboolean remove_parent_element (GtkWidget * widget) { if (!clone_scoreblock_if_needed (widget)) return TRUE; GtkWidget *parent = gtk_widget_get_parent (gtk_widget_get_parent (widget)); gtk_widget_destroy (parent); score_status (Denemo.project, TRUE); return TRUE; } static gboolean remove_lyric_element (GtkWidget * widget, gchar * context_text) { if (!clone_scoreblock_if_needed (widget)) return TRUE; GtkWidget *parent = gtk_widget_get_parent (widget); GtkWidget *grandparent = gtk_widget_get_parent (parent); gtk_widget_destroy (parent); GList *postfixes = (GList *) g_object_get_data (G_OBJECT (grandparent), "postfix"); g_object_set_data (G_OBJECT (grandparent), "postfix", (gpointer) g_list_remove (postfixes, context_text)); //free context_text here score_status (Denemo.project, TRUE); return TRUE; } static void substitute_voice_name (GtkWidget * button, GtkWidget * frame) { if (!clone_scoreblock_if_needed (frame)) return; GList *m; gint mvmnt = 1, staffnum = Denemo.project->movement->currentstaffnum; if (Denemo.project->movements) mvmnt = 1 + g_list_index (Denemo.project->movements, Denemo.project->movement); gchar *thename = g_strdup_printf ("\\Mvmnt%dVoice%d", mvmnt, staffnum); GString *initial = g_string_new (thename); g_free (thename); GString *lily = g_string_new (""); set_lily_name (initial, lily); GList *g = g_object_get_data (G_OBJECT (frame), "prefix"); if (g) { gchar *oldlily = (gchar *) g->data; edit_lilypond_prefix (frame, oldlily, g_strdup (lily->str)); score_status (Denemo.project, TRUE); gchar *text = g_strdup_printf (_("The music for this staff has been replaced by the music from the current staff, i.e. staff where the cursor is, Movement %d, Staff %d."), mvmnt, staffnum); infodialog (text); } g_string_free (lily, TRUE); } static GtkWidget * create_voice_widget (DenemoStaff * staff, gchar * voicename, guint location) { gchar *name = staff->denemo_name->str; GtkWidget *ret = gtk_hbox_new (FALSE, 8); GtkWidget *w = gtk_button_new_with_label (_("Edit")); gtk_widget_set_tooltip_text (w, _("Edit the voice directives for this layout")); gtk_box_pack_start (GTK_BOX (ret), w, FALSE, TRUE, 0); g_signal_connect (w, "clicked", G_CALLBACK (prefix_edit_callback), ret); w = gtk_button_new_with_label ("X"); gtk_widget_set_tooltip_text (w, _("Delete this voice from the score layout\nNote that if it is the first voice the clef time and keysignatures will be deleted too.")); g_signal_connect (w, "clicked", G_CALLBACK (remove_element), NULL); gtk_box_pack_end (GTK_BOX (ret), w, FALSE, TRUE, 0); gchar *text = g_strdup_printf (" \\%s", voicename); gchar *label_text = _("Initial Signatures"); if (staff->voicecontrol == DENEMO_PRIMARY) { GtkWidget *expander = gtk_expander_new (label_text); gtk_widget_set_tooltip_text (expander, _("Click here to view and edit the clef, key and time signatures of this staff")); gtk_box_pack_start (GTK_BOX (ret), expander, FALSE, TRUE, 0); GtkWidget *hbox = gtk_hbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (expander), hbox); GtkWidget *button = gtk_button_new_with_label (_("Clef")); gtk_widget_set_tooltip_text (button, _("Edit the LilyPond definition of the clef. The editing affects only this layout.")); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (prefix_edit_callback), button); add_lilypond (button, get_lilypond_for_clef (&staff->clef), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Key")); gtk_widget_set_tooltip_text (button, _("Edit the LilyPond definition of the key signature. The editing affects only this layout.")); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (prefix_edit_callback), button); add_lilypond (button, get_lilypond_for_keysig (&staff->keysig), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = gtk_button_new_with_label (_("Time")); gtk_widget_set_tooltip_text (button, _("Edit the LilyPond definition of the time signature. The editing affects only this layout.")); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (prefix_edit_callback), button); add_lilypond (button, get_lilypond_for_timesig (&staff->timesig), NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); } else { //Make a matching expander so the music aligns with primary voice GtkWidget *expander = gtk_expander_new (label_text); gtk_widget_set_sensitive (expander, FALSE); gtk_widget_set_tooltip_text (expander, _("The clef, time and key signatures attached to other voices are ignored, only the primary one has effect")); gtk_box_pack_start (GTK_BOX (ret), expander, FALSE, TRUE, 0); } gchar *music = g_strconcat (_("Music for "), name, NULL); w = gtk_button_new_with_label (music); gtk_widget_set_tooltip_text (w, _("Click here to move the Denemo cursor to the start of this music.\nThe actual notes live here. You can only edit these in the main Denemo display.\nHowever you can place conditional directives that are to be used only when using this layout. For example page breaks just for this layout can be placed at points in the music.\n")); g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (navigate_to_location), GINT_TO_POINTER (location)); g_free (music); add_lilypond (w, text, NULL); gtk_box_pack_start (GTK_BOX (ret), w, FALSE, TRUE, 0); GtkWidget *button = gtk_button_new_with_label (_("Substitute")); gtk_widget_set_tooltip_text (button, _("Substitute the music of this staff/voice with the music of the current staff/voice.\nYou can click the \"Music for ...\" button to move the cursor in the Denemo Display onto the staff/voice whose music you want to use before clicking this button to substitute the music. The editing affects only this layout.")); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (substitute_voice_name), w); //prefix_edit_callback), w); gtk_box_pack_start (GTK_BOX (ret), button, FALSE, TRUE, 0); return ret; } static GtkWidget * create_lyric_widget (gchar * context_text, gchar * name) { GtkWidget *ret = gtk_hbox_new (FALSE, 8); GtkWidget *w = gtk_button_new_with_label ("X"); gtk_widget_set_tooltip_text (w, _("Drop this lyric part from the score layout")); g_signal_connect (w, "clicked", G_CALLBACK (remove_lyric_element), context_text); gtk_box_pack_end (GTK_BOX (ret), w, FALSE, TRUE, 0); w = gtk_button_new_with_label (name); //FIXME pop up the lyrics here or some info, or navigate?? gtk_box_pack_start (GTK_BOX (ret), w, FALSE, TRUE, 0); w = gtk_button_new_with_label ("⬆"); gtk_widget_set_tooltip_text (w, _("Move this lyric part above the staff for this score layout")); gtk_box_pack_start (GTK_BOX (ret), w, FALSE, TRUE, 0); g_signal_connect (w, "clicked", G_CALLBACK (move_parent), (gpointer) TRUE); w = gtk_button_new_with_label ("⬇"); gtk_widget_set_tooltip_text (w, _("Move this lyric part below the staff for this score layout")); gtk_box_pack_start (GTK_BOX (ret), w, FALSE, TRUE, 0); g_signal_connect (w, "clicked", G_CALLBACK (move_parent), (gpointer) FALSE); return ret; } static void install_voice (DenemoStaff * staff, gint movementnum, gint voice_count, GtkWidget * vbox) { gchar *voicetag = get_voicetag (movementnum, voice_count); gchar *voicename = get_voicename (movementnum, voice_count); GtkWidget *voice = create_voice_widget (staff, voicename, get_location (movementnum, voice_count)); GString *voicetext = g_string_new (""); //That is \new Voice = name prefix { postfix FIXME is prefix any use here???? set_voice_definition (voicetext, staff, voicetag); gchar *text = g_strdup_printf (" %s ", voicetext->str); g_string_assign (voicetext, ""); set_voice_termination (voicetext, staff); // TAB TAB"} %End of voice" if not overridden add_lilypond (voice, text, g_string_free (voicetext, FALSE)); gtk_box_pack_start (GTK_BOX (vbox), voice, FALSE, TRUE, 0); } static void do_verses (DenemoStaff * staff, GtkWidget * vbox, gint movementnum, gint voice_count) { //FIXME do text of the verses get_text_from_view(GtkWidget *textview) where staff->verse_views->data is textview widget GList *g = staff->verse_views; gint versenum = 1; if (!staff->hide_lyrics) for (versenum = 1; g; g = g->next, versenum++) { gchar *versename = get_versename (movementnum, voice_count, versenum); gchar *context_text = g_strdup_printf ("\n" TAB "\\%s%s", versename, "Context\n"); //gchar *label = g_strconcat("Lyrics:", staff->denemo_name->str, NULL); gchar *label = g_strdup_printf ("Verse %d: %s", versenum, staff->denemo_name->str); GtkWidget *voice = create_lyric_widget (context_text, label); g_free (label); gchar *lyrics = g_strdup_printf ("\n" TAB "\\new Lyrics = %s\n", versename /*e.g. MvmntIVoiceIVerseI */ ); add_lilypond (voice, lyrics, NULL); //FIXME the destroy of these widgets should free the string add_lilypond (voice, NULL, context_text); gtk_box_pack_start (GTK_BOX (vbox), voice, FALSE, TRUE, 0); //has to go outside the staff g_free (versename); } } //if oldval is in the prefix list attached to widget, replace it with newval and free oldval static gboolean edit_lilypond_prefix (GtkWidget * widget, gchar * oldval, gchar * newval) { GList *g; for (g = g_object_get_data (G_OBJECT (widget), "prefix"); g; g = g->next) if (!strcmp ((gchar *) g->data, oldval)) { g->data = (gpointer) newval; g_free (oldval); return TRUE; } return FALSE; } static void prefix_edit_callback (GtkWidget * widget, GtkWidget * frame) { if (!clone_scoreblock_if_needed (frame)) return; GList *g = g_object_get_data (G_OBJECT (frame), "prefix"); if (g) { gchar *lily = (gchar *) g->data; gchar *newval = string_dialog_editor_with_widget (Denemo.project, _("Edit LilyPond"), _("Edit this using LilyPond syntax\nThe editing applies just to this score layout"), lily ? lily : "", NULL, NULL); if (newval) { edit_lilypond_prefix (frame, lily, newval); score_status (Denemo.project, TRUE); } } } static void affixes_delete_callback (GtkWidget * widget, GtkWidget * frame) { if (!clone_scoreblock_if_needed (frame)) return; GList *g = g_object_get_data (G_OBJECT (frame), "prefix"); if (g) g_free (g->data); g_object_set_data (G_OBJECT (frame), "prefix", NULL); g = g_object_get_data (G_OBJECT (frame), "postfix"); if (g) g_free (g->data); g_object_set_data (G_OBJECT (frame), "postfix", NULL); gtk_frame_set_label_widget (GTK_FRAME (frame), NULL); score_status (Denemo.project, TRUE); } static gboolean popup (GtkWidget * button, GtkWidget * menu) { gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME); return FALSE; } static void create_element (GtkWidget * vbox, GtkWidget * widget, gchar * lilypond) { GtkWidget *hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); add_lilypond (hbox, lilypond, NULL); gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, TRUE, 0); GtkWidget *button = gtk_button_new_with_label (_("Edit")); gtk_widget_set_tooltip_text (button, _("Edit this element for this layout")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (prefix_edit_callback), hbox); button = gtk_button_new_with_label ("⬆"); gtk_widget_set_tooltip_text (button, _("Move this element upwards for this score layout")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (move_parent), (gpointer) TRUE); button = gtk_button_new_with_label ("⬇"); gtk_widget_set_tooltip_text (button, _("Move this element downwards for this score layout")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (move_parent), (gpointer) FALSE); button = gtk_button_new_with_label ("X"); gtk_widget_set_tooltip_text (button, _("Remove this element from this layout")); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (remove_element), NULL); gtk_widget_show_all (hbox); } //gtk_expander_set_expanded (expander,gtk_expander_get_expanded (expander)); /* UNUSED static void toggle_expand (GtkWidget * item, GtkWidget * expander) { gtk_expander_set_expanded (GTK_EXPANDER (expander), !gtk_expander_get_expanded (GTK_EXPANDER (expander))); } */ static void page_break (GtkWidget * item, GtkWidget * vbox) { if (!clone_scoreblock_if_needed (vbox)) return; GtkWidget *button = gtk_button_new_with_label (_("Page Break")); gtk_widget_set_tooltip_text (button, _("This forces a new page, useful for avoiding page turns\n")); create_element (vbox, button, g_strdup ("\\pageBreak\n")); gtk_box_reorder_child (GTK_BOX (vbox), gtk_widget_get_parent (button), 0); score_status (Denemo.project, TRUE); } static void blank_page (GtkWidget * item, GtkWidget * vbox) { if (!clone_scoreblock_if_needed (vbox)) return; GtkWidget *button = gtk_button_new_with_label (_("Blank Page")); gtk_widget_set_tooltip_text (button, _("This prints a page intentionally left blank, useful for avoiding page turns\n")); create_element (vbox, button, g_strdup ("\\pageBreak\n\\markup \\italic \"This page is intentionally left blank\"\n\\pageBreak\n")); gtk_box_reorder_child (GTK_BOX (vbox), gtk_widget_get_parent (button), 0); score_status (Denemo.project, TRUE); } static void custom_lilypond (GtkWidget * item, GtkWidget * vbox) { if (!clone_scoreblock_if_needed (vbox)) return; GtkWidget *button = gtk_button_new_with_label ("LilyPond"); gtk_widget_set_tooltip_text (button, _("This lets you insert your own titles etc just for this layout.\nFor book titles use \\titledPiece \\markup \"myname\"\nSimple titles are not placed here, but appear in a header block at the end of the movement.\nFor other possible uses, see LilyPond manual.")); create_element (vbox, button, g_strdup ("%Enter LilyPond syntax here\n")); gtk_box_reorder_child (GTK_BOX (vbox), gtk_widget_get_parent (button), 0); score_status (Denemo.project, TRUE); } static GtkWidget * get_titles_menu (GtkWidget * vbox) { GtkWidget *menu = gtk_menu_new (); GtkWidget *item; item = gtk_menu_item_new_with_label (_("Create Page Break")); gtk_widget_set_tooltip_text (item, _("This inserts a page break, useful for avoiding page turns\nMove it before the title (using the up arrow) once created!")); g_signal_connect (item, "activate", G_CALLBACK (page_break), vbox); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label (_("Create Blank Page")); gtk_widget_set_tooltip_text (item, _("This inserts a page intentionally left blank, useful for avoiding page turns when printing on both sides of the paper")); g_signal_connect (item, "activate", G_CALLBACK (blank_page), vbox); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label (_("Insert LilyPond")); gtk_widget_set_tooltip_text (item, _(_("This creates a LilyPond comment which you can then edit to give titles etc for this movment, applying just to this layout."))); g_signal_connect (item, "activate", G_CALLBACK (custom_lilypond), vbox); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); item = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); gtk_widget_show_all (menu); return menu; } //return a newly allocated label to hint at the contents of a directive static gchar * label_for_directive (DenemoDirective * d) { gchar *text = g_strdup_printf ("%s%s%.25s", d->tag ? d->tag->str : "", d->display ? ": " : "", d->display ? d->display->str : ""); gchar *etext = g_strescape (text, NULL); g_free (text); return etext; } static void popup_movement_menu (GtkWidget * w, GtkWidget * vbox) { gtk_menu_popup (GTK_MENU (get_titles_menu (vbox)), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME); } static void popup_movement_titles_menu (GtkWidget * button) { GtkWidget *menuitem = denemo_menusystem_get_widget ("BookTitles"); if (get_standard_scoreblock (button)) { if (menuitem) gtk_menu_popup (GTK_MENU (gtk_menu_item_get_submenu (GTK_MENU_ITEM (menuitem))), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME); else g_warning ("No such menu path"); } else warningdialog (_("This button is for changing the score itself, it will not affect this custom layout")); } /* installs movement titles, page breaks etc * */ static void install_pre_movement_widgets (GtkWidget * vbox, DenemoMovement * si, gboolean standard, DenemoScoreblock * sb) { GtkWidget *frame = gtk_frame_new (NULL); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *expander = gtk_expander_new (_("Movement Titles, Page Breaks etc")); gtk_widget_set_tooltip_text (expander, _("In here are settings for the movement title, page breaks before the movement etc")); gtk_container_add (GTK_CONTAINER (frame), expander); GtkWidget *inner_vbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (expander), inner_vbox); GtkWidget *inner_hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (inner_vbox), inner_hbox, FALSE, TRUE, 0); GtkWidget *button; #if 0 //having buttons that affect the score itself is confusing if (standard) { button = gtk_button_new_with_label (_("Create Titles for Movement")); mark_as_non_custom (button); gtk_widget_set_tooltip_text (button, _("Set book titles for this movement in the score")); g_signal_connect (button, "clicked", G_CALLBACK (popup_movement_titles_menu), NULL); gtk_box_pack_start (GTK_BOX (inner_hbox), button, FALSE, TRUE, 0); } #endif button = gtk_button_new_with_label (_("Create for Custom Layout")); gtk_widget_set_tooltip_text (button, _("Create page breaks, blank pages ...for this layout")); g_signal_connect (button, "clicked", G_CALLBACK (popup_movement_menu), inner_vbox); gtk_box_pack_start (GTK_BOX (inner_hbox), button, FALSE, TRUE, 0); GList *g; for (g = si->movementcontrol.directives; g; g = g->next) { DenemoDirective *d = (DenemoDirective *) g->data; if (d->override & DENEMO_OVERRIDE_AFFIX) //see set_initiate_scoreblock() call which outputs the DENEMO_OVERRIDE_AFFIX continue; if (d->override & DENEMO_OVERRIDE_HIDDEN) continue; if (sb && wrong_layout (d, sb->id)) continue; if (d->prefix) { gchar *text = label_for_directive (d); GtkWidget *label = gtk_label_new (text); g_free (text); create_element (inner_vbox, label, g_strdup (d->prefix->str)); } } } static void popup_score_titles_menu (GtkWidget * button) { GtkWidget *menuitem = denemo_menusystem_get_widget ("BookTitles"); if (get_standard_scoreblock (button)) { if (menuitem) gtk_menu_popup (GTK_MENU (gtk_menu_item_get_submenu (GTK_MENU_ITEM (menuitem))), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME); else g_warning ("No such menu path"); } else warningdialog (_("This button is for changing the score itself, it will not affect this custom layout")); } /* install widgets for the postfix field of score directives (lilycontrol.directives) which are not hidden and which are not OVERRIDE_AFFIX and not conditionally out - * the prefix is done in create_score_directives. * Ones with OVERRIDE_AFFIX are done in set_default_scoreblock() */ static GtkWidget * install_scoreblock_overrides (GtkWidget * vbox, DenemoProject * gui, DenemoMovement * si, gboolean last_movement, DenemoScoreblock * sb) { GList *g; for (g = gui->lilycontrol.directives; g; g = g->next) { DenemoDirective *d = g->data; if (d->override & DENEMO_OVERRIDE_HIDDEN) continue; if (d->override & DENEMO_OVERRIDE_AFFIX) continue; if (wrong_layout (d, sb->id)) continue; gchar *start = (d->postfix && d->postfix->len) ? d->postfix->str : NULL; if (start) { GtkWidget *frame = gtk_frame_new (NULL); gchar *text = label_for_directive (d); GtkWidget *button = gtk_button_new_with_label (text); g_free (text); gtk_frame_set_label_widget (GTK_FRAME (frame), button); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); gchar *lily = g_strdup_printf ("\n<< %s\n<< ", start); add_lilypond (frame, lily, g_strdup ("\n >>\n>>")); GtkWidget *menu = gtk_menu_new (); GtkWidget *menuitem = gtk_menu_item_new_with_label ("Edit"); g_signal_connect (menuitem, "activate", G_CALLBACK (prefix_edit_callback), frame); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label ("Delete"); g_signal_connect (menuitem, "activate", G_CALLBACK (affixes_delete_callback), frame); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_widget_show_all (menu); g_signal_connect (button, "clicked", G_CALLBACK (popup), menu); vbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), vbox); } } return vbox; } static gboolean draw_staff_brace_for_layout (GtkWidget * w, cairo_t * cr, gchar * context) { GtkAllocation allocation; gtk_widget_get_allocation (w, &allocation); gint height = allocation.height; cairo_set_source_rgb (cr, 0.9, 0.9, 0.9); cairo_paint (cr); gboolean curly = !((!strcmp (context, "ChoirStaffStart")) || (!strcmp (context, "GroupStaffStart"))); draw_staff_brace (cr, curly, 5, 8, height * 0.9 - 15); return TRUE; } #if GTK_MAJOR_VERSION == 2 static gboolean draw_staff_brace_gtk2 (GtkWidget * w, GdkEventExpose * event, gchar * context) { cairo_t *cr = gdk_cairo_create (event->window); gdk_cairo_region (cr, event->region); cairo_clip (cr); draw_staff_brace_for_layout (w, cr, context); cairo_destroy (cr); return TRUE; } #endif static void show_type (GtkWidget * widget, gchar * message) { g_message ("%s%s", message, widget ? g_type_name (G_TYPE_FROM_INSTANCE (widget)) : "NULL widget"); } static void delete_brace (gchar * postfix) { gchar *c = g_strrstr (postfix, ">>%"); if (c && c > postfix) { *c = 0; return; } #if 0 gchar *c = postfix; while (*(c++)); c--; c--; c--; if (c != postfix) while (*(c--) != '\n'); c++; if (*c == '\n') *c = 0; #endif } static void remove_brace_end (GtkWidget * vbox) { show_type (vbox, "new vbox ??? "); GList *g = g_object_get_data (G_OBJECT (vbox), "postfix"); for (; g; g = g->next) { //g_print ("Next postfix %s\n", (char *) g->data); delete_brace (g->data); //g_print ("transformed to %s\n", (char *) g->data); } } static gboolean remove_context (GtkWidget * button, GtkWidget * parent) { if (!clone_scoreblock_if_needed (parent)) return TRUE; show_type (parent, "parent "); GList *children = gtk_container_get_children (GTK_CONTAINER (parent)); //show_type (g_list_last (children)->data, "vbox type is"); //show_type (gtk_widget_get_parent (gtk_widget_get_parent (parent)), "Reparenting on "); GtkWidget *vbox = g_list_last (children)->data; GList *staff_list = gtk_container_get_children (GTK_CONTAINER (vbox)); GList *g; for (g = staff_list; g; g = g->next) { //show_type (g->data, "The staff frame is "); gtk_widget_reparent (g->data, //frame gtk_widget_get_parent (gtk_widget_get_parent (parent))); } GtkWidget *topw = gtk_widget_get_parent (gtk_widget_get_parent (gtk_widget_get_parent (parent))); //show_type (topw, "new vbox parent ");g_print ("parent %p, grandparent %p, great-grp %p\n", parent, gtk_widget_get_parent (parent), topw); if (g_object_get_data (G_OBJECT (parent), "postfix") == NULL) remove_brace_end (gtk_bin_get_child (g_list_last (staff_list)->data)); // without it deleting a top level brace leaving lower ones fails. else for (g = g_object_get_data (G_OBJECT (parent), "postfix"); g; g = g->next) { delete_brace (g->data); if (GTK_IS_BOX (topw)) add_lilypond (topw, NULL, g_strdup (g->data)); } Denemo.project->lilysync = G_MAXUINT; gtk_widget_destroy (gtk_widget_get_parent (parent)); return TRUE; } //Move the frame above into this frame's vbox, unless we are inside it. /* UNUSED static gboolean move_context_up (GtkWidget * button, GtkWidget * parent) { //!!!! these not working if (!clone_scoreblock_if_needed (parent)) return TRUE; DenemoScoreblock *sb = get_custom_scoreblock (parent); gint index = g_list_index (sb->staff_list, parent); if (index > 0) { GtkWidget *frame = (GtkWidget *) g_list_nth (sb->staff_list, index - 1)->data; if (!gtk_widget_is_ancestor (parent, frame)) { GtkWidget *hbox = gtk_bin_get_child (GTK_BIN (parent)); GList *children = gtk_container_get_children (GTK_CONTAINER (hbox)); GtkWidget *vbox = g_list_last (children)->data; g_list_free (children); gtk_widget_reparent (frame, vbox); gtk_box_reorder_child (GTK_BOX (vbox), frame, 0); //now move the frame on one in the list of frames sb->staff_list = g_list_remove (sb->staff_list, frame); sb->staff_list = g_list_insert (sb->staff_list, frame, index); //layout = ??? } } return TRUE; } */ //Move the frame below into this frame's vbox, unless we are inside it. /* UNUSED static gboolean move_context_down (GtkWidget * button, GtkWidget * parent) { if (!clone_scoreblock_if_needed (parent)) return TRUE; DenemoScoreblock *sb = get_custom_scoreblock (parent); //!!!!doesn't work see junk.denemo g_assert (sb); gint index = g_list_index (sb->staff_list, parent); if (index < g_list_length (sb->staff_list)) { GtkWidget *frame = (GtkWidget *) g_list_nth (sb->staff_list, index + 1)->data; if (!gtk_widget_is_ancestor (parent, frame)) { GtkWidget *hbox = gtk_bin_get_child (GTK_BIN (parent)); GList *children = gtk_container_get_children (GTK_CONTAINER (hbox)); GtkWidget *vbox = g_list_last (children)->data; g_list_free (children); gtk_widget_reparent (frame, vbox); gtk_box_reorder_child (GTK_BOX (vbox), frame, -1); //now move the frame on one in the list of frames //sb->staff_list = g_list_remove(sb->staff_list, frame); //sb->staff_list = g_list_insert(sb->staff_list, frame, index); // layout_sync = ??? } } return TRUE; } */ static GtkWidget * install_staff_group_start (GList ** pstaffs, GtkWidget * vbox, GList * directives, gint * nesting) { GList *g; for (g = directives; g; g = g->next) { DenemoDirective *directive = g->data; if ((directive->override & DENEMO_OVERRIDE_AFFIX) && !(directive->override & DENEMO_ALT_OVERRIDE)) { if (wrong_layout (directive, Denemo.project->layout_id)) continue; if (directive->prefix && (directive->prefix->len > 0)) { GtkWidget *frame = (GtkWidget *) gtk_frame_new (directive->tag->str); add_lilypond (frame, directive->prefix ? g_strdup (directive->prefix->str) : NULL, directive->postfix ? g_strdup (directive->postfix->str) : NULL); (*nesting)++; *pstaffs = g_list_append (*pstaffs, frame); g_signal_connect (G_OBJECT (frame), "destroy", G_CALLBACK (remove_from_staff_list), pstaffs); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *hbox = gtk_hbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), hbox); GtkWidget *layout = gtk_drawing_area_new (); gtk_widget_set_tooltip_text (layout, _("This brace connects together several staffs - you can delete it for a customized layout.")); #if GTK_MAJOR_VERSION == 2 g_signal_connect (G_OBJECT (layout), "expose_event", G_CALLBACK (draw_staff_brace_gtk2), directive->tag->str); #else g_signal_connect (G_OBJECT (layout), "draw", G_CALLBACK (draw_staff_brace_for_layout), directive->tag->str); #endif gint width = 20, height = 100; gtk_widget_set_size_request (layout, width, height); gtk_box_pack_start (GTK_BOX (hbox), layout, TRUE, TRUE, 0); GtkWidget *controls = gtk_vbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (hbox), controls, FALSE, TRUE, 0); GtkWidget *button = gtk_button_new_with_label ("X"); gtk_widget_set_tooltip_text (button, _("Remove this staff brace from these staffs for a customized layout.")); g_signal_connect (button, "clicked", G_CALLBACK (remove_context), hbox); gtk_box_pack_start (GTK_BOX (controls), button, FALSE, TRUE, 0); vbox = gtk_vbox_new (FALSE, 8); //this vbox will be passed back so that the staffs can be put inside this staff group frame. gtk_box_pack_end (GTK_BOX (hbox), vbox, FALSE, TRUE, 0); } } } return vbox; } static GtkWidget * install_staff_group_end (GtkWidget * vbox, GList * directives, gint * nesting) { GList *g; for (g = directives; g; g = g->next) { DenemoDirective *directive = g->data; if (wrong_layout (directive, Denemo.project->layout_id)) continue; if ((directive->override & DENEMO_OVERRIDE_AFFIX) && !(directive->override & DENEMO_ALT_OVERRIDE)) { if (directive->postfix && (directive->postfix->len > 0)) { if (*nesting) { //show_type (gtk_widget_get_parent (vbox), "Adding beam ends to type: "); g_print ("Specifically %s to %p\n", directive->postfix->str, gtk_widget_get_parent (vbox)); add_lilypond (gtk_widget_get_parent (vbox), NULL, g_strdup (directive->postfix->str)); gint number_of_ends = 1; if (directive->data) number_of_ends = atoi (directive->data->str); if (number_of_ends < 0 || (number_of_ends > 10)) number_of_ends = 1; //sanity check on data in directive (*nesting) -= number_of_ends; vbox = gtk_widget_get_parent (gtk_widget_get_parent (gtk_widget_get_parent (vbox))); } else g_warning ("Badly placed end of staff group - ignored"); } } } return vbox; } static GtkWidget * get_label (GtkWidget * button) { if (GTK_IS_CONTAINER (button)) { GList *g = gtk_container_get_children (GTK_CONTAINER (button)); for (; g; g = g->next) if (GTK_IS_LABEL (g->data)) return GTK_WIDGET (g->data); } return NULL; } static GtkWidget * get_large_button (gchar * text) { GtkWidget *button = gtk_button_new_with_label ("dummy"); GtkWidget *label = get_label (button); gchar *markup = g_markup_printf_escaped ("%s", text); gtk_label_set_markup (GTK_LABEL (label), markup); g_free (markup); return button; } static GtkWidget * get_small_button (gchar * text) { GtkWidget *button = gtk_button_new_with_label ("dummy"); GtkWidget *label = get_label (button); gchar *markup = g_markup_printf_escaped ("%s", text); gtk_label_set_markup (GTK_LABEL (label), markup); g_free (markup); return button; } static void add_staff_widget (DenemoStaff * staff, GtkWidget * hbox) { gchar *clef_glyph = "\xF0\x9D\x84\x9E "; switch (staff->clef.type) { case DENEMO_FRENCH_CLEF: case DENEMO_TREBLE_CLEF: clef_glyph = "ð„ž "; break; case DENEMO_G_8_CLEF: clef_glyph = "ð„Ÿ "; break; case DENEMO_F_8_CLEF: clef_glyph = "ð„¤ "; break; case DENEMO_BASS_CLEF: clef_glyph = "ð„¢ "; break; case DENEMO_SOPRANO_CLEF: case DENEMO_ALTO_CLEF: case DENEMO_TENOR_CLEF: clef_glyph = "ð„¡ "; break; default: break; } GtkWidget *button = get_large_button (clef_glyph); gtk_widget_set_tooltip_text (button, _("This shows the clef in the Denemo score - the actual clef printed may be modified by Directives attached to it.\nYou can edit the clef for a custom layout - do this on the first voice on the staff.")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); button = get_small_button ("⬆"); gtk_widget_set_tooltip_text (button, _("Move this staff (with all its voices) above the preceding staff.")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (move_grandparent), (gpointer) TRUE); button = get_small_button ("⬇"); gtk_widget_set_tooltip_text (button, _("Move this staff (with all its voices) after the following staff.")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (move_grandparent), (gpointer) FALSE); button = gtk_button_new_with_label ("X"); gtk_widget_set_tooltip_text (button, _("Remove this staff (with all its voices) for customized layout.")); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect_swapped (button, "clicked", G_CALLBACK (remove_parent_element), hbox); } static void install_staff_with_voices (GList ** pstaffs, GtkWidget ** pvbox, gchar * partname, GList ** pstafflist, gint * pvoice_count, gint staff_count, gint movementnum, gint * pstaff_group_nesting, gboolean standard, gboolean append_only) { DenemoMovement *si = Denemo.project->movement; GList *g = *pstafflist; GtkWidget *vbox = *pvbox; DenemoStaff *staff = g->data; DenemoStaff *nextstaff = g->next ? g->next->data : NULL; //if (partname == NULL) Don't omit staff groups start for single part, since parts can be multi-staff e.g. piano, it will be closed at the end if the part doesn't include the close if (!append_only) vbox = install_staff_group_start (pstaffs, vbox, staff->staff_directives, pstaff_group_nesting); if (staff->hasfakechords) { //the reason these are outside the staff frame is it makes them appear above the staff GtkWidget *chords = gtk_label_new (_("Chord Symbols")); gchar *text = g_strdup_printf ("\n" TAB TAB "\\new ChordNames \\chordmode { \\%sChords }\n", get_voicename (movementnum, (*pvoice_count))); add_lilypond (chords, text, NULL); gtk_box_pack_start (GTK_BOX (vbox), chords, FALSE, TRUE, 0); *pstaffs = g_list_append (*pstaffs, chords); g_signal_connect (G_OBJECT (chords), "destroy", G_CALLBACK (remove_from_staff_list), pstaffs); } gchar *label_text = (si->thescore->next == NULL) ? g_strdup (_("Staff Start")) : g_strdup_printf (_("Staff %d Start"), staff_count); GtkWidget *frame = gtk_frame_new (NULL); GtkWidget *staff_hbox = gtk_hbox_new (FALSE, 8); //gtk_frame_set_label_widget (GTK_FRAME (frame), staff_hbox); !!!!! setting the label widget it's position looks odd because no frame is visible GtkWidget *button = gtk_button_new_with_label (label_text); g_free (label_text); gtk_box_pack_start (GTK_BOX (staff_hbox), button, FALSE, TRUE, 0); gtk_widget_set_tooltip_text (button, _("Click for a menu to position the Denemo cursor on this staff\nor to alter this staff for a customized layout")); GtkWidget *menu = gtk_menu_new (); GtkWidget *menuitem = gtk_menu_item_new_with_label (_("Move Denemo Cursor to this staff")); gtk_widget_set_tooltip_text (menuitem, _("This will move the Denemo Cursor to the start of this staff in this movement")); g_signal_connect (G_OBJECT (menuitem), "activate", G_CALLBACK (navigate_to_location), GINT_TO_POINTER (get_location (movementnum, (*pvoice_count)))); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = gtk_menu_item_new_with_label (_("Edit Staff Opening Syntax")); gtk_widget_set_tooltip_text (menuitem, _("Edit the syntax creating this staff to customize this layout\nTake care only alter the obvious bits, such as instrument name etc\nInjudicious deletion of the LilyPond typesetting characters {<<# etc can make the layout unreadable by the LilyPond typesetter. Just delete the layout if you get stuck.")); g_signal_connect (menuitem, "activate", G_CALLBACK (prefix_edit_callback), frame); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_widget_show_all (menu); g_signal_connect (button, "clicked", G_CALLBACK (popup), menu); #if 0 //having buttons that affect the score itself is confusing if (standard && (si->thescore->next != NULL)) { button = gtk_button_new_with_label (_("Set Staff Group Start/End")); mark_as_non_custom (button); gtk_box_pack_start (GTK_BOX (staff_hbox), button, FALSE, TRUE, 0); gtk_widget_set_tooltip_text (button, _("The braces { and [ binding staffs together can be set here. Set the start on one staff and the end on a later staff.\nThis is editing the score, not just customizing a layout.\nRefresh the layout view (see under Options for this Layout button at the top) once you have made the changes.")); g_signal_connect (button, "button-press-event", G_CALLBACK (staff_groups_menu), GINT_TO_POINTER (get_location (movementnum, (*pvoice_count)))); } #endif *pstaffs = g_list_append (*pstaffs, frame); g_signal_connect (G_OBJECT (frame), "destroy", G_CALLBACK (remove_from_staff_list), pstaffs); GString *staffprefix = g_string_new (""); set_staff_definition (staffprefix, staff); // TAKES DENEMO_ALT_OVERRIDE that are DENEMO_OVERRIDE_AFFIX in exportlilypond // if (staff->no_of_lines != 5) now done by a directive // g_string_append_printf (staffprefix, TAB "\\override Staff.StaffSymbol #'line-count = #%d\n", staff->no_of_lines); //FIXME create_element GString *stafftext = g_string_new (""); g_string_assign (stafftext, ""); set_staff_termination (stafftext, staff); // "\n>>\n%End of Staff\n" add_lilypond (frame, g_string_free (staffprefix, FALSE), g_string_free (stafftext, FALSE)); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *outer_vbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), outer_vbox); gtk_box_pack_start (GTK_BOX (outer_vbox), staff_hbox, FALSE, TRUE, 0); GtkWidget *hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_end (GTK_BOX (outer_vbox), hbox, FALSE, TRUE, 0); //gtk_container_add (GTK_CONTAINER (frame), hbox); add_staff_widget (staff, hbox); label_text = (nextstaff && nextstaff->voicecontrol & DENEMO_SECONDARY) ? _("Voices") : _("Voice"); GtkWidget *expander = gtk_expander_new (label_text); gtk_widget_set_tooltip_text (expander, _("This holds the voice(s) of the staff - the clef, time signature, key signature and music are all here")); //gtk_container_add (GTK_CONTAINER (frame), expander); gtk_box_pack_end (GTK_BOX (hbox), expander, FALSE, TRUE, 0); GtkWidget *voices_vbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (expander), voices_vbox); if (staff->hasfigures) { GtkWidget *voice = gtk_label_new ("Bass figures"); gchar *text = g_strdup_printf ("\n" TAB TAB "\\context Staff \\with {implicitBassFigures = #'(0) } \\%sBassFiguresLine %%End of bass figures\n", get_voicename (movementnum, (*pvoice_count))); add_lilypond (voice, text, NULL); gtk_box_pack_start (GTK_BOX (voices_vbox), voice, FALSE, TRUE, 0); } install_voice (staff, movementnum, (*pvoice_count), voices_vbox); //Primary voice do_verses (staff, vbox, movementnum, (*pvoice_count)); { label_text = (si->thescore->next == NULL) ? g_strdup (_("Staff End")) : g_strdup_printf (_("Staff %d End"), staff_count); GString *text = g_string_new (""); set_staff_finalize (text, staff); GtkWidget *butt = gtk_button_new_with_label (label_text); g_free (label_text); create_element (vbox, butt, g_string_free (text, FALSE)); } if (nextstaff && (nextstaff->voicecontrol & DENEMO_SECONDARY)) { for (g = g->next, (*pvoice_count)++; g && (((DenemoStaff *) g->data)->voicecontrol & DENEMO_SECONDARY); g = g->next, (*pvoice_count)++) { DenemoStaff *staff = g->data; install_voice (staff, movementnum, (*pvoice_count), voices_vbox); do_verses (staff, vbox, movementnum, (*pvoice_count)); //!!! these need *pstaffs = g_list_append(*pstaffs, voice); treatment too... if (partname == NULL) vbox = install_staff_group_end (vbox, staff->staff_directives, pstaff_group_nesting); } if (g != NULL) { g = g->prev; (*pvoice_count)--; } } if (partname == NULL) //Have to omit all end braces for part layouts, since the part may not include all the start braces for them. vbox = install_staff_group_end (vbox, staff->staff_directives, pstaff_group_nesting); *pstafflist = g; *pvbox = vbox; } static void append_staff (GtkWidget * widget, GList ** pstaffs) { if (!clone_scoreblock_if_needed (widget)) return; gint staff_group_nesting = 0; gint voice_count = Denemo.project->movement->currentstaffnum; gint movementnum = 1; if (Denemo.project->movements) movementnum = 1 + g_list_index (Denemo.project->movements, Denemo.project->movement); GtkWidget *vbox = gtk_widget_get_parent (widget); install_staff_with_voices (pstaffs, &vbox, NULL, &Denemo.project->movement->currentstaff, &voice_count, Denemo.project->movement->currentstaffnum, movementnum, &staff_group_nesting, FALSE, TRUE); gtk_widget_show_all (vbox); Denemo.project->lilysync = G_MAXUINT; } static GtkWidget * get_movement_widget (GList ** pstaffs, gchar * partname, DenemoMovement * si, gint movementnum, gboolean last_movement, gboolean standard, DenemoScoreblock * sb) { DenemoProject *gui = Denemo.project; gint staff_group_nesting = 0; //to check on loose staff group markers gint voice_count; //a count of voices from the very top of the score (ie DenemoStaffs in thescore) gint staff_count; //a count of staffs excluding voices from top of score GtkWidget *ret = gtk_frame_new (NULL); GString *start = g_string_new (""); set_initiate_scoreblock (si, start); // ie << possibly overridden add_lilypond (ret, g_string_free (start, FALSE), g_strdup ("\n >>\n")); GtkWidget *vbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (ret), vbox); vbox = install_scoreblock_overrides (vbox, gui, si, last_movement, sb); //things like transpose whole score etc gchar *label_text = (si->thescore->next == NULL) ? _("The Staff") : _("The Staffs"); GtkWidget *topexpander = gtk_expander_new (label_text); gtk_widget_set_tooltip_text (topexpander, _("This holds the staffs below which are the voices with the music.")); gtk_expander_set_expanded (GTK_EXPANDER (topexpander), si == Denemo.project->movement); gtk_box_pack_start (GTK_BOX (vbox), topexpander, FALSE, TRUE, 0); vbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (topexpander), vbox); GtkWidget *addbutton = gtk_button_new_with_label (_("Append Current Staff")); gtk_widget_set_tooltip_text (addbutton, _("Appends the current staff (the one where the cursor is in the Denemo Display) to this layout. The same staff can be placed at multiple positions in the layout with individual edits in each.")); gtk_box_pack_start (GTK_BOX (vbox), addbutton, FALSE, TRUE, 0); g_signal_connect (G_OBJECT (addbutton), "clicked", G_CALLBACK (append_staff), pstaffs); GList *g; for (voice_count = 1, staff_count = 1, g = si->thescore; g; g = g->next, voice_count++, staff_count++) { DenemoStaff *staff = g->data; if ((*(staff->lily_name->str)) && (partname && strcmp (partname, staff->lily_name->str))) // empty partname means include with all parts. continue; install_staff_with_voices (pstaffs, &vbox, partname, &g, &voice_count, staff_count /*sic */ , movementnum, &staff_group_nesting, standard, FALSE); if (g == NULL) break; } //for each staff if (staff_group_nesting < 0) { g_critical ("Impossible staff group nesting"); } else { for (; staff_group_nesting; staff_group_nesting--) { if (partname == NULL) { g_warning ("Staff group start without end - terminating it"); add_lilypond (vbox, NULL, g_strdup (" >>%Missing staff group end inserted here\n")); } else add_lilypond (vbox, NULL, g_strdup (" >>%Closing staff group end for part layout\n")); } } return ret; } /* append the data labeled with affix on the widget s to the out string */ static void append_lilypond_for_affix (const gchar * affix, GtkWidget * w, GString * out) { GList *g; for (g = (GList *) g_object_get_data (G_OBJECT (w), affix); g; g = g->next) { gchar *text = (gchar *) g->data; if (text) g_string_append (out, text); } } /* go through the layout appending score block elements to the out string */ static void lilypond_for_layout (GString * out, GtkWidget * layout) { append_lilypond_for_affix ("prefix", layout, out); if (GTK_IS_CONTAINER (layout)) { GList *list = gtk_container_get_children (GTK_CONTAINER (layout)); if (list) { GList *g = list; do { lilypond_for_layout (out, g->data); } while ((g = g->next)); g_list_free (list); } } append_lilypond_for_affix ("postfix", layout, out); } //return a newly allocated name for a standard scoreblock static gchar * movement_part_name (gint movement, gchar * partname) { if (movement && partname) return g_strdup_printf ("%s M%d", partname, movement); if (movement) return g_strdup_printf (_("Movement %d"), movement); if (partname) return g_strdup_printf ("%s", partname); return g_strdup (DEFAULT_SCORE_LAYOUT); } static GtkWidget * get_event_box (GtkWidget * vbox) { GtkWidget *event_box = gtk_event_box_new (); gtk_box_pack_start (GTK_BOX (vbox), event_box, FALSE, TRUE, 0); #if GTK_MAJOR_VERSION == 2 GdkColor color; if (gdk_color_parse ("#BBFFCC", &color)) gtk_widget_modify_bg (event_box, GTK_STATE_NORMAL, &color); #else { set_background_color (event_box, "#bbffcc"); } #endif return event_box; } static void create_misc_scorewide (GtkWidget * inner_vbox) { DenemoProject *gui = Denemo.project; gchar *lily = g_strdup_printf ("#(set-default-paper-size \"%s\"%s)\n", gui->lilycontrol.papersize->str, gui->lilycontrol.orientation ? "" : " 'landscape"); create_element (inner_vbox, gtk_button_new_with_label (_("paper size")), lily); lily = g_strdup_printf ("#(set-global-staff-size %s)\n", gui->lilycontrol.staffsize->str); create_element (inner_vbox, gtk_button_new_with_label (_("Global staff size")), lily); GtkWidget *expander = gtk_expander_new (_("Paper Block")); gtk_widget_set_tooltip_text (expander, _("Settings for whole score: includes overall staff size, paper size ...\n")); add_lilypond (expander, g_strdup ("\\paper {\n"), g_strdup ("\n }\n")); gtk_box_pack_start (GTK_BOX (inner_vbox), expander, FALSE, TRUE, 0); GtkWidget *paper_box = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (expander), paper_box); create_element (paper_box, gtk_button_new_with_label (_("the paper block contents")), get_lilypond_paper ()); } static void create_scoreheader_directives (GtkWidget * vbox, DenemoScoreblock * sb) { DenemoProject *gui = Denemo.project; GtkWidget *frame = gtk_frame_new (NULL); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *top_expander = gtk_expander_new (_("Score Titles")); gtk_expander_set_expanded (GTK_EXPANDER (top_expander), TRUE); add_lilypond (top_expander, g_strdup ("\n\\header {\n"), g_strdup ("\n }\n")); gtk_widget_set_tooltip_text (top_expander, _("Titles, layout settings, preferences etc for the whole score.\nIncludes main title, composer, date, instrumentation, tagline")); gtk_container_add (GTK_CONTAINER (frame), top_expander); GtkWidget *header_box = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (top_expander), header_box); gchar *escaped_name = g_strescape (gui->filename->str, NULL); gchar *default_tagline = g_strdup_printf ("tagline = \\markup {\"%s\" on \\simple #(strftime \"%%x\" (localtime (current-time)))}\n", escaped_name); g_free (escaped_name); create_element (header_box, gtk_label_new (_("Default tagline")), default_tagline); GList *g; for (g = gui->scoreheader.directives; g; g = g->next) { DenemoDirective *directive = (DenemoDirective *) g->data; if (directive->override & (DENEMO_OVERRIDE_AFFIX | DENEMO_OVERRIDE_HIDDEN)) continue; if (directive->postfix == NULL) continue; if (wrong_layout (directive, sb->id)) continue; create_element (header_box, gtk_label_new (directive->tag->str), g_strdup (directive->postfix->str)); } } static void create_score_directives (GtkWidget * vbox, DenemoScoreblock * sb) { DenemoProject *gui = Denemo.project; if (gui->lilycontrol.directives == NULL) return; GtkWidget *frame = gtk_frame_new (NULL); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); GtkWidget *top_expander = gtk_expander_new (_("Score Directives")); gtk_widget_set_tooltip_text (top_expander, _("Includes the indent before first measure, LilyPond include files ...")); gtk_container_add (GTK_CONTAINER (frame), top_expander); GtkWidget *inner_vbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (top_expander), inner_vbox); GList *g = gui->lilycontrol.directives; for (; g; g = g->next) { DenemoDirective *directive = g->data; if (wrong_layout (directive, sb->id)) continue; if (directive->prefix && !(directive->override & (DENEMO_OVERRIDE_AFFIX))) { GtkWidget *label = gtk_label_new (directive->tag->str); create_element (inner_vbox, label, g_strdup (directive->prefix->str)); } } } static void fill_scorewide_frame (GtkWidget * frame, GtkWidget * reload_button, DenemoScoreblock * sb) { GtkWidget *expander = gtk_expander_new (_("Score-wide Settings.")); gtk_widget_set_tooltip_text (expander, _("Setting the score title, composer, headers and footers for this layout")); gtk_container_add (GTK_CONTAINER (frame), expander); GtkWidget *inner_box = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (expander), inner_box); gtk_box_pack_start (GTK_BOX (inner_box), reload_button, FALSE, TRUE, 0); #if 0 //having buttons that affect the score itself is confusing GtkWidget *button = gtk_button_new_with_label (_("Create Book Titles")); mark_as_non_custom (button); gtk_widget_set_tooltip_text (button, _("Set book titles for the score")); g_signal_connect (button, "clicked", G_CALLBACK (popup_score_titles_menu), NULL); gtk_box_pack_start (GTK_BOX (inner_box), button, FALSE, TRUE, 0); #endif create_scoreheader_directives (inner_box, sb); create_score_directives (inner_box, sb); create_misc_scorewide (inner_box); } static GtkWidget * get_reload_button (GtkWidget * frame) { GtkWidget *reload_button = gtk_button_new_with_label (_("Reload Score-Wide Settings")); gtk_widget_set_tooltip_text (reload_button, _("Reload the score wide settings for this layout from the current values in the score.\nDo this if you have made changes to the score titles etc which you wish to be used for this layout.")); g_signal_connect_swapped (reload_button, "clicked", G_CALLBACK (reload_scorewide_block), frame); return reload_button; } static void reload_scorewide_block (GtkWidget * frame) { GtkWidget *event_box = gtk_widget_get_parent (frame); GtkWidget *vbox = gtk_widget_get_parent (event_box); gtk_widget_destroy (frame); frame = gtk_frame_new (NULL); GtkWidget *reload_button = get_reload_button (frame); gtk_container_add (GTK_CONTAINER (event_box), frame); fill_scorewide_frame (frame, reload_button, selected_scoreblock ()); gtk_widget_show_all (vbox); Denemo.project->lilysync = G_MAXUINT; } static void create_scorewide_block (GtkWidget * vbox, DenemoScoreblock * sb) { GtkWidget *frame = gtk_frame_new (NULL); GtkWidget *reload_button = get_reload_button (frame); GtkWidget *event_box = get_event_box (vbox); // event_box is packed into vbox gtk_container_add (GTK_CONTAINER (event_box), frame); fill_scorewide_frame (frame, reload_button, sb); gtk_widget_show_all (vbox); } static void install_movement_widget (DenemoMovement * si, GtkWidget * vbox, DenemoScoreblock ** psb, gchar * partname, gint movement_num, gboolean last, gboolean standard) { DenemoProject *gui = Denemo.project; DenemoScoreblock *sb = *psb; //if(sb)g_print ("Typesetting for id = %d\n\n\n\n", sb->id); else g_print ("No score layout\n\n"); gchar *label_text = gui->movements->next ? g_strdup_printf (_("Movement %d"), movement_num) : g_strdup (_("Movement")); GtkWidget *movement_frame = gtk_expander_new (label_text); gtk_label_set_use_markup (GTK_LABEL (gtk_expander_get_label_widget (GTK_EXPANDER (movement_frame))), TRUE); gtk_widget_set_tooltip_text (movement_frame, _("This contains the layout of the movement- the movement title, and the actual music itself")); gtk_expander_set_expanded (GTK_EXPANDER (movement_frame), si == gui->movement); g_free (label_text); gtk_box_pack_start (GTK_BOX (vbox), movement_frame, FALSE, TRUE, 0); GtkWidget *frame_box = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (movement_frame), frame_box); GtkWidget *remove_box = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (frame_box), remove_box, FALSE, FALSE, 0); GtkWidget *w = gtk_button_new_with_label ("Remove Movement"); gtk_label_set_use_markup (GTK_LABEL (gtk_bin_get_child (GTK_BIN (w))), TRUE); gtk_widget_set_tooltip_text (w, _("Remove this movement from the score layout")); g_signal_connect_swapped (w, "clicked", G_CALLBACK (remove_element), frame_box); //grandparent gtk_box_pack_start (GTK_BOX (remove_box), w, FALSE, FALSE, 14); // GtkWidget *dummy = gtk_label_new (" dummy "); //gtk_box_pack_start (GTK_BOX (frame_box), dummy, TRUE, TRUE, 0); GtkWidget *outer_hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (frame_box), outer_hbox, FALSE, TRUE, 0); GtkWidget *movement_vbox = gtk_vbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (outer_hbox), movement_vbox, FALSE, TRUE, 10); install_pre_movement_widgets (movement_vbox, si, standard, *psb); GtkWidget *frame = gtk_frame_new (NULL); add_lilypond (frame, g_strdup ("\n\\score { %Start of Movement\n"), g_strdup ("\n } %End of Movement\n")); gtk_box_pack_start (GTK_BOX (movement_vbox), frame, FALSE, TRUE, 0); GtkWidget *outer_vbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), outer_vbox); GtkWidget *hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (hbox), get_movement_widget (&(*psb)->staff_list, partname, si, movement_num, last, standard, *psb), FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (outer_vbox), hbox, FALSE, TRUE, 0); if (si->header.directives) { GtkWidget *frame = gtk_frame_new (_("Header block")); gtk_box_pack_start (GTK_BOX (outer_vbox), frame, FALSE, TRUE, 0); add_lilypond (frame, g_strdup ("\n\\header {\n"), g_strdup ("\n }\n")); GtkWidget *innerbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), innerbox); GList *g; for (g = si->header.directives; g; g = g->next) { DenemoDirective *d = g->data; if (d->override & DENEMO_OVERRIDE_HIDDEN) continue; if (sb && wrong_layout (d, sb->id)) continue; gchar *lily = (d->postfix && d->postfix->len) ? d->postfix->str : NULL; if (lily) { create_element (innerbox, gtk_button_new_with_label (d->tag->str), g_strdup (lily)); } } } if (si->layout.directives) { GtkWidget *frame = gtk_frame_new (_("Layout block")); gtk_box_pack_start (GTK_BOX (outer_vbox), frame, FALSE, TRUE, 0); add_lilypond (frame, g_strdup ("\n\\layout {\n"), g_strdup ("\n}\n")); GtkWidget *innerbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), innerbox); GList *g; for (g = si->layout.directives; g; g = g->next) { DenemoDirective *d = g->data; if (d->override & DENEMO_OVERRIDE_HIDDEN) continue; if (sb && wrong_layout (d, sb->id)) continue; gchar *lily = (d->postfix && d->postfix->len) ? d->postfix->str : NULL; if (lily) { create_element (innerbox, gtk_button_new_with_label (d->tag->str), g_strdup (lily)); } } } if (si->movementcontrol.directives) { GtkWidget *frame = gtk_frame_new (_("Movement Block")); gtk_box_pack_start (GTK_BOX (outer_vbox), frame, FALSE, TRUE, 0); GtkWidget *innerbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), innerbox); GList *g; for (g = si->movementcontrol.directives; g; g = g->next) { DenemoDirective *d = (DenemoDirective *) g->data; if (sb && wrong_layout (d, sb->id)) continue; if (d->override & DENEMO_OVERRIDE_AFFIX && d->postfix) { gchar *text = label_for_directive (d); GtkWidget *label = gtk_label_new (text); g_free (text); create_element (innerbox, label, g_strdup (d->postfix->str)); } } } if (si->movementcontrol.directives) { GtkWidget *frame = gtk_frame_new (_("Movement Epilog")); gtk_box_pack_start (GTK_BOX (movement_vbox), frame, FALSE, TRUE, 0); GtkWidget *innerbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (frame), innerbox); GList *g; for (g = si->movementcontrol.directives; g; g = g->next) { DenemoDirective *d = (DenemoDirective *) g->data; if (d->override & DENEMO_OVERRIDE_AFFIX) continue; if (d->override & DENEMO_OVERRIDE_HIDDEN) continue; if (sb && wrong_layout (d, sb->id)) continue; if (d->postfix) { gchar *text = label_for_directive (d); GtkWidget *label = gtk_label_new (text); g_free (text); create_element (innerbox, label, g_strdup (d->postfix->str)); } } } } static void install_duplicate_movement (DenemoScoreblock ** psb, gint movement) { gchar *partname = NULL; //show_type (gtk_bin_get_child (gtk_bin_get_child ((*psb)->widget)), "Type of widget "); GtkWidget *vbox = gtk_bin_get_child (GTK_BIN (gtk_bin_get_child (GTK_BIN ((*psb)->widget)))); DenemoMovement *si = g_list_nth_data (Denemo.project->movements, movement - 1); if (si) install_movement_widget (si, vbox, psb, partname, movement, TRUE, FALSE); } static void install_duplicate_movement_callback (DenemoScoreblock * sb) { install_duplicate_movement (&sb, Denemo.project->movement->currentmovementnum); score_status (Denemo.project, TRUE); gtk_widget_show_all (sb->widget); } static void reorder_movement (DenemoScoreblock * psb) { //show_type (gtk_bin_get_child (gtk_bin_get_child ((*psb)->widget)), "Type of widget "); GtkWidget *vbox = gtk_bin_get_child (GTK_BIN (gtk_bin_get_child (GTK_BIN (psb->widget)))); GList *children = gtk_container_get_children (GTK_CONTAINER (vbox)); //show_type ( g_list_nth_data (children, movement) , "Type of widget "); for (; children; children = children->next) { if (GTK_IS_EXPANDER (children->data) && gtk_expander_get_expanded (children->data)) { if (children->next == NULL) warningdialog (_("The currently expanded movement is already at the end")); else gtk_box_reorder_child (GTK_BOX (vbox), children->data, -1); //-1 = to end g_list_free (children); return; } } warningdialog (_("No movement is expanded - don't know which movement to move")); } static void reorder_movement_callback (DenemoScoreblock * psb) { reorder_movement (psb); score_status (Denemo.project, TRUE); } //find the one that is expanded FIXME //populates the scoreblock *psb with the movement or movements for partname from the current score Denemo.project static void set_default_scoreblock (DenemoScoreblock ** psb, gint movement, gchar * partname) { DenemoProject *gui = Denemo.project; (*psb)->staff_list = NULL; //list of staff frames in order they appear in scoreblock (*psb)->widget = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); (*psb)->visible = FALSE; //will be set true when/if tab is selected if (partname) (*psb)->partname = g_strdup (partname); (*psb)->movement = movement; layout_sync = (*psb)->layout_sync = gui->layout_sync; GtkWidget *vbox = gtk_vbox_new (FALSE, 8); #if (GTK_MAJOR_VERSION==3 && GTK_MINOR_VERSION<8) gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW ((*psb)->widget), vbox); #else gtk_container_add (GTK_CONTAINER((*psb)->widget), vbox); #endif GtkWidget *options = get_options_button (*psb, FALSE); gtk_box_pack_start (GTK_BOX (vbox), options, FALSE, FALSE, 0); //now create a hierarchy of widgets representing the score create_scorewide_block (vbox, *psb); GList *g; gint movement_num = 1; for (g = gui->movements; g; g = g->next, movement_num++) { if (movement == 0 /*all movements */ || (movement == movement_num) /*this movement */ ) { DenemoMovement *si = (DenemoMovement *) g->data; install_movement_widget (si, vbox, psb, partname, movement_num, !(gboolean) GPOINTER_TO_INT (g->next), TRUE); } //if movement is wanted } //for all movements for (g = gui->lilycontrol.directives; g; g = g->next) { DenemoDirective *d = g->data; // g_print("Trying tag %s postfix %s\n", d->tag->str, d->postfix?d->postfix->str:"No postfix"); if (d->override & DENEMO_OVERRIDE_HIDDEN) continue; if (!(d->override & DENEMO_OVERRIDE_AFFIX)) continue; if (wrong_layout (d, (*psb)->id)) continue; gchar *post = (d->postfix && d->postfix->len) ? d->postfix->str : NULL; if (post) { create_element (vbox, gtk_button_new_with_label (d->tag->str), g_strdup (post)); } } } //recompute a standard scoreblock if out of date static void recreate_standard_scoreblock (DenemoScoreblock ** psb) { if ((*psb)->layout_sync == Denemo.project->layout_sync) return; gint movement = (*psb)->movement; gchar *partname = (*psb)->partname ? g_strdup ((*psb)->partname) : NULL; gchar *instrumentation = (*psb)->instrumentation ? g_strdup ((*psb)->instrumentation) : NULL; gboolean visible = (*psb)->visible; GtkNotebook *notebook = GTK_NOTEBOOK (get_score_layout_notebook (Denemo.project)); if ((*psb)->widget) set_notebook_page ((*psb)->widget); gint position = gtk_notebook_get_current_page (notebook); free_scoreblock ((*psb)); //this changes the page in the notebook if it was selected before. So if sb->visible then re-select this page after reconstruction create_standard_scoreblock (psb, movement, partname); (*psb)->instrumentation = instrumentation; gtk_notebook_reorder_child (notebook, (*psb)->widget, position); //alternatively pass in desired position to create_standard_scoreblock.... // if (visible) // gtk_notebook_set_current_page (GTK_NOTEBOOK (get_score_layout_notebook (Denemo.project)), 0); } //return value must not be freed /* UNUSED static const gchar * scoreblock_name (DenemoScoreblock * sb) { return gtk_notebook_get_tab_label_text (GTK_NOTEBOOK (get_score_layout_notebook (Denemo.project)), sb->widget); } */ //refreshes the lilypond field of all the standard scoreblocks after re-computing the standard scoreblocks already present //returns FALSE if structure has not changed since they were computed. static gboolean check_for_update (void) { DenemoProject *gui = Denemo.project; if (gui->layout_sync > layout_sync) { GList *g; for (g = gui->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = (DenemoScoreblock *) g->data; recreate_standard_scoreblock (&sb); } return TRUE; } return FALSE; } static gboolean change_tab (GtkNotebook * notebook, GtkWidget * page, gint pagenum) { //this is getting called with pagenum 0 when clicking on the lilypond text window... // Denemo.project->lilysync = G_MAXUINT; this would trigger off a re-typeset in continuous typesetting. It seems to happen *before the code below is executed. // g_print ("Page num %d widget 0x%x\n", pagenum, page); page = gtk_notebook_get_nth_page (notebook, pagenum); // value passed in appears to be something else - it is not documented what. //g_print ("gtk_notebook_get_nth_page %d widget 0x%x\n", pagenum, page); GList *g; for (g = Denemo.project->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = ((DenemoScoreblock *) g->data); sb->visible = (sb->widget == page); //g_print ("%s for layout 0x%x\n", sb->visible?"Visible":"Invisible", sb->id); if (sb->visible) Denemo.project->layout_id = sb->id; } for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = ((DenemoScoreblock *) g->data); sb->visible = (sb->widget == page); //g_print ("%s for layout 0x%x\n", sb->visible?"Visible":"Invisible", sb->id); if (sb->visible) Denemo.project->layout_id = sb->id; } // Denemo.project->layout_id = 0; Denemo.project->lilysync = G_MAXUINT; return TRUE; } //takes a DenemoScoreblock that has a valid widget field and recomputes the lilypond field of the scoreblock //from the widget. It also sets the name field of the scoreblock to the name on the Notebook tab. // It sets the instrumentation if set in the scoreblock structure. void refresh_lilypond (DenemoScoreblock * sb) { if (sb->widget) { if ((!is_lilypond_text_layout (sb))) { gchar *instrumentation = sb->instrumentation; gchar *set_instr = instrumentation ? g_strdup (instrumentation) : ((!strcmp (sb->name, DEFAULT_SCORE_LAYOUT)) ? g_strdup (_("Full Score")) : ((g_str_has_prefix (sb->name, _("Movement"))) ? g_strdup (sb->name) : NULL)); instrumentation = set_instr ? g_strdup_printf (" instrumentation = \\markup { \\with-url #'\"scheme:(d-BookInstrumentation)\" \"%s\"}\n", set_instr) : g_strdup (""); g_free (set_instr); set_instr = instrumentation; sb->id = crc32 ((guchar *) sb->name); if (sb->lilypond == NULL) sb->lilypond = g_string_new (sb->name); else g_string_assign (sb->lilypond, sb->name); g_string_prepend (sb->lilypond, "%"); g_string_append_printf (sb->lilypond, "\n\\header{DenemoLayoutName = \"%s\"\n%s }\n", sb->name, set_instr); g_free (set_instr); lilypond_for_layout (sb->lilypond, sb->widget); } } else g_warning ("No widget for scoreblock"); } gboolean current_scoreblock_is_custom (void) { GtkWidget *notebook = get_score_layout_notebook (Denemo.project); gint pagenum = gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)); GtkWidget *page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), pagenum); GList *g; for (g = Denemo.project->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = ((DenemoScoreblock *) g->data); if (sb->widget == page) return TRUE; } return FALSE; } DenemoScoreblock * selected_scoreblock (void) { GtkWidget *notebook = get_score_layout_notebook (Denemo.project); gint pagenum = gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)); // value passed in appears to be something else - it is not documented what. GtkWidget *page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), pagenum); GList *g; for (g = Denemo.project->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = ((DenemoScoreblock *) g->data); if (sb->widget == page) { refresh_lilypond (sb); //!!!! needs sorting out !!! return sb; } } for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = ((DenemoScoreblock *) g->data); if (sb->widget == page) { refresh_lilypond (sb); return sb; } } return NULL; } //returns a uri for the pdf output for the current scoreblock. The user must free when done. gchar * get_output_uri_from_scoreblock (void) { DenemoScoreblock *sb = selected_scoreblock (); if (sb == NULL) { g_warning ("No Score Layout"); return g_strdup (""); } DenemoProject *gui = Denemo.project; if (sb->uri) return g_strdup (sb->uri); gchar *basename; gchar *dirname; if (Denemo.project->filename && Denemo.project->filename->len) { gchar *filename = gui->filename->str; dirname = g_path_get_dirname (filename); basename = g_path_get_basename (filename); gchar *suffix = g_strrstr (basename, DENEMO_FILE_SUFFIX); if (suffix) *suffix = 0; } else { basename = g_strdup ("output"); dirname = g_get_current_dir (); } gchar *uri = g_strdup_printf ("file://%s", dirname); g_free (dirname); gchar *ret; if (sb) { gchar *pdf_name = g_strconcat (basename, "-", sb->name, ".pdf", NULL); ret = g_build_filename (uri, pdf_name, NULL); g_free (pdf_name); } else { ret = g_build_filename (uri, "output.pdf", NULL); } g_free (basename); g_free (uri); return ret; } void set_current_scoreblock_uri (gchar * uri) { DenemoScoreblock *sb = selected_scoreblock (); if (sb) { g_free (sb->uri); sb->uri = uri; } } //Returns the next scoreblock in the score layout notebook, or NULL if it is the last DenemoScoreblock * get_next_scoreblock (void) { GtkWidget *notebook = get_score_layout_notebook (Denemo.project); gint pagenum = gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)); GtkWidget *page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), pagenum + 1); if (page) gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), pagenum + 1); GList *g; for (g = Denemo.project->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = ((DenemoScoreblock *) g->data); if (sb->widget == page) { refresh_lilypond (sb); //!!!! needs sorting out !!! return sb; } } for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = ((DenemoScoreblock *) g->data); if (sb->widget == page) { refresh_lilypond (sb); return sb; } } return NULL; } //Returns the next scoreblock in the score layout notebook, or NULL if it is the last DenemoScoreblock * get_first_scoreblock (void) { GtkWidget *notebook = get_score_layout_notebook (Denemo.project); gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0); GtkWidget *page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 0); GList *g; for (g = Denemo.project->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = ((DenemoScoreblock *) g->data); if (sb->widget == page) { refresh_lilypond (sb); return sb; } } for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = ((DenemoScoreblock *) g->data); if (sb->widget == page) { refresh_lilypond (sb); return sb; } } return NULL; } gboolean iterate_custom_layout (gboolean init) { //!!!!!!!!problem for lilypondized ones is widget NULL???? static gint current; DenemoScoreblock *sb; if (Denemo.project->custom_scoreblocks == NULL) { return FALSE; } if (init) { current = 0; sb = (DenemoScoreblock *) (Denemo.project->custom_scoreblocks->data); } else { current++; sb = (DenemoScoreblock *) g_list_nth_data (Denemo.project->custom_scoreblocks, current); } if (sb && sb->widget) { if (!Denemo.non_interactive) { if (!gtk_widget_get_visible (Denemo.project->score_layout)) set_toggle ("ToggleScoreLayout", TRUE); set_notebook_page (sb->widget); } return TRUE; } else { g_debug ("No custom layout %d sb = %p\n", current, sb); return FALSE; } } guint get_layout_id_for_name (gchar * name) { return crc32 (name); } guint selected_layout_id (void) { if (Denemo.project->layout_id == 0) { DenemoScoreblock *sb = selected_scoreblock (); if (sb) Denemo.project->layout_id = sb->id; } return Denemo.project->layout_id; } GtkWidget * get_score_layout_notebook (DenemoProject * gui) { GtkWidget *notebook = gtk_bin_get_child (GTK_BIN (gui->score_layout)); if (notebook == NULL) { notebook = gtk_notebook_new (); g_signal_connect (notebook, "switch_page", G_CALLBACK (change_tab), NULL); g_signal_connect (gui->score_layout, "focus-in-event", G_CALLBACK (check_for_update), NULL); gtk_container_add (GTK_CONTAINER (gui->score_layout), notebook); } return notebook; } //create a standard scoreblock in the passed DenemoScoreblock structure and put it in a new tab in the score //does not add it to the standard scoreblocks list static void create_standard_scoreblock (DenemoScoreblock ** psb, gint movement, gchar * partname) { DenemoProject *gui = Denemo.project; GtkWidget *notebook = get_score_layout_notebook (gui); gchar *label_text = movement_part_name (movement, partname); (*psb)->name = g_strdup (label_text); Denemo.project->layout_id = (*psb)->id = crc32 ((guchar *) (*psb)->name); set_default_scoreblock (psb, movement, partname); GtkWidget *label = gtk_label_new (label_text); g_free (label_text); gtk_notebook_prepend_page (GTK_NOTEBOOK (notebook), (*psb)->widget, label); gtk_widget_set_tooltip_markup ((*psb)->widget, _ ("This is a score layout - the buttons mostly customize the layout\nYou can have several layouts and use them to print different versions of your score.\nOnce customized e.g. by adding page breaks, deleting certain parts etc the layout will be saved with your score and can be used for printing from even though you may have made corrections to the music.\nStandard layouts are created by invoking the standard print commands - print, print part, print movement etc.\nThese standard layouts provide a convenient starting point for your customized layouts.Note 1Custom layouts are not saved for further graphical editing, only the typesetting commands are saved, so, unless you are familiar with LilyPond do all your work on the layout in one session.Note 2The first comment in the LilyPond text of the layout holds the name of the layout. If you change it any conditional directives that are for the layout will need refreshing")); gtk_widget_show_all (notebook); } static void set_notebook_page (GtkWidget * w) { GtkWidget *notebook = get_score_layout_notebook (Denemo.project); GList *g = gtk_container_get_children (GTK_CONTAINER (notebook)); gint position = g_list_index (g, w); g_list_free (g); gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), position); } void create_default_scoreblock (void) { DenemoProject *gui = Denemo.project; if (gui->custom_scoreblocks) { GList *g; for (g = gui->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = g->data; if (!strcmp (sb->name, DEFAULT_SCORE_LAYOUT)) { set_notebook_page (sb->widget); return; } } } if (gui->standard_scoreblocks) { GList *g; for (g = gui->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = g->data; if (!strcmp (sb->name, DEFAULT_SCORE_LAYOUT)) { set_notebook_page (sb->widget); return; } } } DenemoScoreblock *sb = g_malloc0 (sizeof (DenemoScoreblock)); (void) create_standard_scoreblock (&sb, 0, NULL); gui->standard_scoreblocks = g_list_prepend (gui->standard_scoreblocks, (gpointer) sb); } /* select the scoreblock with the standard default scoreblock name, choosing a customized * version over any standard version. Create one if it does not exist. */ void select_default_scoreblock (void) { DenemoProject *gui = Denemo.project; if (gui->custom_scoreblocks) { GList *g; for (g = gui->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = g->data; if (!strcmp (sb->name, DEFAULT_SCORE_LAYOUT)) { set_notebook_page (sb->widget); return; } } } if (gui->standard_scoreblocks) { GList *g; for (g = gui->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = g->data; if (!strcmp (sb->name, DEFAULT_SCORE_LAYOUT)) { set_notebook_page (sb->widget); return; } } } create_default_scoreblock (); if (gui->standard_scoreblocks) { GList *g; for (g = gui->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = g->data; if (!strcmp (sb->name, DEFAULT_SCORE_LAYOUT)) { set_notebook_page (sb->widget); return; } } } } static void selection_install_voice (DenemoStaff * staff, gint movementnum, gint voice_count, GString * lilypond, GString * tail, GString * voice_tail) { gchar *voicetag = get_voicetag (movementnum, voice_count); gchar *voicename = get_voicename (movementnum, voice_count); gchar *text1; GString *voicetext = g_string_new (""); set_voice_definition (voicetext, staff, voicetag); //That is \new Voice = name prefix { postfix FIXME is prefix any use here???? gchar *text = g_strdup_printf (" %s ", voicetext->str); g_string_assign (voicetext, ""); set_voice_termination (voice_tail, staff); // TAB TAB"} %End of voice" if not overridden g_string_append (lilypond, text); text1 = g_strdup_printf (" \\%s", voicename); if (staff->voicecontrol == DENEMO_PRIMARY) { g_string_append (lilypond, get_lilypond_for_clef (&staff->clef)); g_string_append (lilypond, get_lilypond_for_keysig (&staff->keysig)); g_string_append (lilypond, get_lilypond_for_timesig (&staff->timesig)); } g_string_append (lilypond, text1); g_free (text1); g_string_prepend (tail, g_string_free (voicetext, FALSE)); } //returns a layout with no widget whose lilypond is the scoreblock for just the selected staffs DenemoScoreblock * selection_layout (void) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; GString *movement_tail = g_string_new (""); gint movementnum = g_list_index (Denemo.project->movements, Denemo.project->movement) + 1; static DenemoScoreblock *sb; if (sb == NULL) { sb = g_malloc0 (sizeof (DenemoScoreblock)); sb->lilypond = g_string_new (""); } g_string_assign (sb->lilypond, "\n\\score\n{ %Start of Selection from current movement\n"); set_initiate_scoreblock (si, sb->lilypond); // ie << possibly overridden GList *g; //things like transpose whole score etc for (g = gui->lilycontrol.directives; g; g = g->next) { DenemoDirective *d = g->data; if (d->override & DENEMO_OVERRIDE_HIDDEN) continue; if (d->override & DENEMO_OVERRIDE_AFFIX) continue; //g_print ("Trying tag %s with postfix %s at %x\n", d->tag->str, (d->postfix && d->postfix->len) ? d->postfix->str :"", selected_layout_id ()); if (wrong_layout (d, sb->id)) continue; gchar *start = (d->postfix && d->postfix->len) ? d->postfix->str : NULL; if (start) { g_string_append_printf (sb->lilypond, "\n << %s\n << ", start); g_string_prepend (movement_tail, "\n >>\n >>"); } } gint voice_count; for (voice_count = 1, g = gui->movement->thescore; g; g ? g = g->next : g, voice_count++) { DenemoStaff *staff = g->data; DenemoStaff *nextstaff = g->next ? g->next->data : NULL; GString *stafftext = g_string_new (""); if (!(voice_count >= gui->movement->selection.firststaffmarked && voice_count <= gui->movement->selection.laststaffmarked)) continue; if (staff->hasfakechords) { //the reason these are outside the staff frame is it makes them appear above the staff g_string_append_printf (sb->lilypond, "\n" TAB TAB "\\new ChordNames \\chordmode { \\%sChords }\n", get_voicename (movementnum, voice_count)); } set_staff_definition (sb->lilypond, staff); //if (staff->no_of_lines != 5) // g_string_append_printf (sb->lilypond, TAB "\\override Staff.StaffSymbol #'line-count = #%d\n", staff->no_of_lines); //FIXME create_element GString *tail = g_string_new (""); GString *voice_tail = g_string_new (""); g_string_assign (stafftext, ""); set_staff_termination (stafftext, staff); // "\n>>\n%End of Staff\n" g_string_prepend (tail, g_string_free (stafftext, FALSE)); if (staff->hasfigures) { g_string_append_printf (sb->lilypond, "\n" TAB TAB "\\context Staff \\with {implicitBassFigures = #'(0) } \\%sBassFiguresLine %%End of bass figures\n", get_voicename (movementnum, voice_count)); } selection_install_voice (staff, movementnum, voice_count, sb->lilypond, tail, voice_tail); //Primary voice g_string_append (sb->lilypond, voice_tail->str); g_string_assign (voice_tail, ""); //selection_do_verses(staff, vbox, movementnum, this is repeated below gboolean voices_intervened; voices_intervened = FALSE; if (nextstaff && (nextstaff->voicecontrol & DENEMO_SECONDARY)) { for (g = g->next, voice_count++; g && (((DenemoStaff *) g->data)->voicecontrol & DENEMO_SECONDARY); g = g->next, voice_count++) { GString *voicetail = g_string_new (""); DenemoStaff *staff = g->data; selection_install_voice (staff, movementnum, voice_count, sb->lilypond, voicetail, voice_tail); g_string_append (sb->lilypond, g_string_free (voicetail, FALSE)); g_string_append (sb->lilypond, voice_tail->str); g_string_assign (voice_tail, ""); voices_intervened = TRUE; //selection_do_verses(staff, vbox, movementnum, this is repeated above } } g_string_free (voice_tail, TRUE); if (tail->len) g_string_append (sb->lilypond, g_string_free (tail, FALSE)); else g_string_free (tail, FALSE); if (g && voices_intervened) // we have added voices to the staff, so the for loop has advanced the iterator over staffs and voice count already, so back up { g = g->prev; voice_count--; } } // end of for each staff Now loop back for all the staffs in firststaffnum - laststaffnum g_string_append (sb->lilypond, movement_tail->str); g_string_free (movement_tail, TRUE); g_string_append (sb->lilypond, "\n >>\n"); g_string_append_printf (sb->lilypond, "\n\\header {\n"); for (g = si->header.directives; g; g = g->next) { DenemoDirective *d = g->data; if (d->override & DENEMO_OVERRIDE_HIDDEN) continue; if (wrong_layout (d, sb->id)) continue; gchar *lily = (d->postfix && d->postfix->len) ? d->postfix->str : NULL; if (lily) { g_string_append (sb->lilypond, lily); } } g_string_append (sb->lilypond, "\n}\n"); if (si->layout.directives) { g_string_append (sb->lilypond, "\n\\layout {\n"); for (g = si->layout.directives; g; g = g->next) { DenemoDirective *d = g->data; if (d->override & DENEMO_OVERRIDE_HIDDEN) continue; if (wrong_layout (d, sb->id)) continue; gchar *lily = (d->postfix && d->postfix->len) ? d->postfix->str : NULL; if (lily) { g_string_append (sb->lilypond, lily); } } g_string_append (sb->lilypond, ("\n}\n")); } g_string_append (sb->lilypond, "\n} %End of Movement\n"); return sb; } //if the call is all_movements is current (1) and no partname ie default, then current layout is returned, re-created (if need be) if it is a standard one //otherwise selects or creates a standard layout for the given spec: all_movements (0=all, 1 = current) and part (NULL is all parts, otherwise parts with partname). DenemoScoreblock * select_layout (gboolean all_movements, gchar * partname, gchar * instrumentation) { GList *g; DenemoScoreblock *sb; if (Denemo.project->movement->markstaffnum) return selection_layout (); if (all_movements && partname == NULL) { sb = selected_scoreblock (); if (sb) { if (is_in_standard_scoreblock (sb)) { recreate_standard_scoreblock (&sb); refresh_lilypond (sb); } set_notebook_page (sb->widget); return sb; } } //otherwise return a standard scoreblock recreating it - though this should only need doing if changecount has moved on //make sure at least the default scoreblock has been created, this can now be a custom version named with default scoreblock name if (Denemo.project->standard_scoreblocks == NULL) { create_default_scoreblock (); if (Denemo.project->standard_scoreblocks) sb = (DenemoScoreblock *) (Denemo.project->standard_scoreblocks->data); else if (Denemo.project->custom_scoreblocks) sb = (DenemoScoreblock *) (Denemo.project->custom_scoreblocks->data); else { g_critical ("No score layout available"); return NULL; } refresh_lilypond (sb); //creating a scoreblock does *not* include generating the lilypond from its widgets. } //first recreate all the standard scoreblocks and set them not visible for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { sb = (DenemoScoreblock *) g->data; // if(sb->layout_sync!=Denemo.project->layout_sync) //this conditional was dropped, it will be better to fix the cases where project->layout_sync is not updated as it should, that is places where signal_structural_change() call is missed recreate_standard_scoreblock (&sb); sb->visible = FALSE; } if (all_movements && partname == NULL) { //select the one for the whole score for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { sb = (DenemoScoreblock *) g->data; if ((sb->movement == 0) && (sb->partname == NULL)) { sb->visible = TRUE; refresh_lilypond (sb); set_notebook_page (sb->widget); return sb; } } if (Denemo.project->custom_scoreblocks) { sb = (DenemoScoreblock *) (Denemo.project->custom_scoreblocks->data); return sb; } g_warning ("Error in logic: the default standard scoreblock should exist or a custom one of that name "); } else { //Not a whole score print for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { sb = (DenemoScoreblock *) g->data; //a good match to partname ? gboolean good = (sb->partname && partname && !strcmp (sb->partname, partname)) || (sb->partname == NULL && partname == NULL); if (good && (all_movements && (sb->movement == 0))) { //scoreblock is for good partname and is for all movements - use it sb->visible = TRUE; refresh_lilypond (sb); set_notebook_page (sb->widget); return sb; } } } //either just the current movement or just the part named or both. Set up the movement number (1 ...) or 0 for the all movements case gint movement; if (all_movements) { movement = 0; } else { movement = g_list_index (Denemo.project->movements, Denemo.project->movement) + 1; //current movement } if (movement || partname) { //a specific movement and/or a specific part for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { sb = (DenemoScoreblock *) g->data; if ((movement == sb->movement) && ((partname == sb->partname) || (partname && sb->partname && !strcmp (sb->partname, partname)))) { sb->visible = TRUE; refresh_lilypond (sb); set_notebook_page (sb->widget); return sb; } } sb = g_malloc0 (sizeof (DenemoScoreblock)); create_standard_scoreblock (&sb, movement, partname); Denemo.project->standard_scoreblocks = g_list_prepend (Denemo.project->standard_scoreblocks, sb); sb->visible = TRUE; sb->instrumentation = g_strdup (instrumentation); //g_print ("instrumentation %s\n", sb->instrumentation); refresh_lilypond (sb); set_notebook_page (sb->widget); return sb; } //NOT REACHED g_warning ("Error in logic: the default standard scoreblock should exist and be returned "); return sb; //this is the last in the list of standard scoreblocks but cannot be reached } void select_standard_layout (DenemoScoreblock * sb) { if (Denemo.project->standard_scoreblocks == NULL) { create_default_scoreblock (); //creating a scoreblock does *not* include generating the lilypond from its widgets. if (Denemo.project->standard_scoreblocks == NULL) { DenemoScoreblock *sb = g_malloc0 (sizeof (DenemoScoreblock)); (void) create_standard_scoreblock (&sb, 0, NULL); Denemo.project->standard_scoreblocks = g_list_prepend (NULL, (gpointer) sb); } sb = (DenemoScoreblock *) (Denemo.project->standard_scoreblocks->data); } refresh_lilypond (sb); set_notebook_page (sb->widget); } void select_custom_layout (DenemoScoreblock * sb) { if (Denemo.project->custom_scoreblocks == NULL) { return; } set_notebook_page (sb->widget); } gboolean select_custom_layout_for_name (gchar * name) { GList *g = Denemo.project->custom_scoreblocks; for (; g; g = g->next) { DenemoScoreblock *sb = g->data; if (sb->name && !strcmp (name, sb->name)) return TRUE; } return FALSE; } gboolean select_layout_id (gint id) { GList *g = Denemo.project->custom_scoreblocks; for (; g; g = g->next) { DenemoScoreblock *sb = g->data; if (sb->id == id) { set_notebook_page (sb->widget); return TRUE; } } for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = g->data; if (sb->id == id) { set_notebook_page (sb->widget); return TRUE; } } return FALSE; } /* UNUSED static void text_modified (GtkTextBuffer * textbuffer, DenemoScoreblock * sb) { GtkTextIter startiter, enditer; gtk_text_buffer_get_start_iter (textbuffer, &startiter); gtk_text_buffer_get_end_iter (textbuffer, &enditer); gchar *text = gtk_text_buffer_get_text (textbuffer, &startiter, &enditer, FALSE); if (sb->lilypond) g_string_assign (sb->lilypond, text); else sb->lilypond = g_string_new (text); score_status (Denemo.project, TRUE); } */ DenemoScoreblock * get_scoreblock_for_lilypond (gchar * lily) { gchar *text = _("The LilyPond text for this layout can be edited in the LilyPond view window.\nYou can safely delete this layout if you no longer need it\n(for example if you have made structural changes to the score\nnot reflected in this layout)."); gchar *name = NULL; DenemoScoreblock *sb = g_malloc0 (sizeof (DenemoScoreblock)); sb->text_only = TRUE; if (!Denemo.non_interactive) { GtkWidget *frame = gtk_frame_new (LILYPOND_TEXT_EDITOR); sb->widget = frame; gtk_widget_set_tooltip_text (frame, _("This is a customized layout, which has been transformed into instructions for the LilyPond music typesetter.\nThis is the form in which customized layouts are stored in a Denemo score on disk - the graphical interface is no longer available. You can, however still edit the layout with care (and some understanding of LilyPond).\nUse the View → LilyPond window to do this.\nOtherwise you can delete it and create a new one from a standard layout.")); GtkWidget *vbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (sb->widget), vbox); GtkWidget *options = get_options_button (sb, TRUE); gtk_box_pack_start (GTK_BOX (vbox), options, FALSE, FALSE, 0); GtkWidget *textview = gtk_text_view_new (); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview), TRUE); GtkTextBuffer *textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview)); gtk_text_buffer_set_text (textbuffer, text, -1); GtkWidget *sw = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (sw), textview); gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0); } gchar *newline = g_strstr_len (lily, -1, "\n"); if (newline) { name = g_strndup (lily, newline - lily); sb->name = g_strdup (name + 1); sb->id = crc32 ((guchar *) sb->name); g_free (name); } else sb->name = g_strdup (_("Custom Scoreblock")); sb->id = crc32 ((guchar *) sb->name); sb->lilypond = g_string_new (lily); refresh_lilypond (sb); return sb; } //if the score_layout window is visible and a standard scoreblock is selected, create a custom one cloned from it with the passed name DenemoScoreblock * create_custom_scoreblock (gchar * layout_name, gboolean force) { GList *g; if (!force && !gtk_widget_get_visible (Denemo.project->score_layout)) return NULL; for (g = Denemo.project->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = (DenemoScoreblock *) g->data; if (!strcmp (layout_name, sb->name)) return NULL; } for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = (DenemoScoreblock *) g->data; if (sb->visible) { if (clone_scoreblock (sb, layout_name)) return sb; } } return NULL; } gboolean delete_custom_scoreblock (gchar * layout_name) { GList *g; for (g = Denemo.project->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = (DenemoScoreblock *) g->data; if (!strcmp (layout_name, sb->name)) { delete_custom_scoreblock_callback (NULL, sb); return TRUE; } } return FALSE; } DenemoScoreblock * create_custom_lilypond_scoreblock (void) { //called for //make_scoreblock_editable(); in view.c DenemoScoreblock *sb = NULL; GList *g; for (g = Denemo.project->custom_scoreblocks; g; g = g->next) { sb = (DenemoScoreblock *) g->data; if (sb->visible) { if (!sb->text_only) convert_to_lilypond_callback (NULL, sb); return sb; } } for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { sb = (DenemoScoreblock *) g->data; if (sb->visible) { if (!sb->text_only) convert_to_lilypond_callback (NULL, sb); return sb; } } //if none, create the default and convert that to lilypoond. create_default_scoreblock (); sb = (DenemoScoreblock *) (Denemo.project->standard_scoreblocks->data); convert_to_lilypond_callback (NULL, sb); return sb; } static GtkWidget *LayoutMenu; //a menu for the default layout and all created layouts static void typeset_layout (DenemoScoreblock * sb) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else set_notebook_page (sb->widget); g_debug ("Switched to %s\n", sb->name); typeset_current_layout (); #endif } static void remove_menuitem (GtkWidget * menuitem, GtkContainer * container) { gtk_container_remove (container, menuitem); } static void attach_item (DenemoScoreblock * sb) { GtkWidget *menuitem = gtk_menu_item_new_with_label (sb->name); gtk_widget_set_tooltip_text (menuitem, _("Typesets this layout")); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (typeset_layout), sb); gtk_menu_shell_append (GTK_MENU_SHELL (LayoutMenu), menuitem); } GtkWidget * GetLayoutMenu (void) { GList *g; if (LayoutMenu == NULL) { LayoutMenu = gtk_menu_new (); } else { gtk_container_foreach (GTK_CONTAINER (LayoutMenu), (GtkCallback) remove_menuitem, LayoutMenu); } if (Denemo.project->standard_scoreblocks == NULL) create_default_scoreblock (); for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = (DenemoScoreblock *) g->data; attach_item (sb); } for (g = Denemo.project->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = (DenemoScoreblock *) g->data; attach_item (sb); } gtk_widget_show_all (LayoutMenu); return LayoutMenu; } denemo-2.2.0/src/command/PaxHeaders.19168/tuplet.h0000644000000000000000000000013213135434036016424 xustar0030 mtime=1500919838.343315139 30 atime=1500919918.713315139 30 ctime=1500919914.156648472 denemo-2.2.0/src/command/tuplet.h0000644000175000017500000000150413135434036020275 0ustar00jjbenhamjjbenham00000000000000/* tuplet.h * * tuplet function prototypes * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Adam Tee, Matthew Hiller */ #include DenemoObject *tuplet_open_new (gint numerator, gint denominator); DenemoObject *tuplet_close_new (); void duplet_insert (DenemoAction* action, DenemoScriptParam *param); void triplet_insert (DenemoAction* action, DenemoScriptParam *param); void triplet_start (DenemoAction* action, DenemoScriptParam *param); void tuplet_end (DenemoAction* action, DenemoScriptParam *param); void insert_quadtuplet (DenemoAction* action, DenemoScriptParam *param); void quintuplet_insert (DenemoAction* action, DenemoScriptParam *param); void sextuplet_insert (DenemoAction* action, DenemoScriptParam *param); void septuplet_insert (DenemoAction* action, DenemoScriptParam *param); denemo-2.2.0/src/command/PaxHeaders.19168/select.h0000644000000000000000000000013213135434036016366 xustar0030 mtime=1500919838.343315139 30 atime=1500919918.719981806 30 ctime=1500919914.146648472 denemo-2.2.0/src/command/select.h0000644000175000017500000000510713135434036020242 0ustar00jjbenhamjjbenham00000000000000/* select.h * Undoing, selecting, cutting, copying, and pasting music * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller 2010 Richard Shann */ #include #ifndef DENEMO_SELECTOPS #define DENEMO_SELECTOPS enum drag_selection_type { NO_DRAG, NORMAL_SELECT, WHOLE_MEASURES, WHOLE_STAFFS }; DenemoObjType get_clip_obj_type (gint staff, gint object); gboolean insert_clip_obj (gint staff, gint object); /* clear the Primary Denemo Clipboard */ void clearbuffer (void); /* destroy the passed clipboard */ void free_clipboard (GList * clipboard); void saveselection (DenemoMovement * si); void copytobuffer (DenemoMovement * si); void delete_selection (void); gboolean mark_status (void); void set_mark (DenemoAction * action, DenemoScriptParam * param); void unset_mark (DenemoAction * action, DenemoScriptParam * param); void set_point (DenemoAction * action, DenemoScriptParam * param); void copywrapper (DenemoAction * action, DenemoScriptParam * param); void cutwrapper (DenemoAction * action, DenemoScriptParam * param); void pastewrapper (DenemoAction * action, DenemoScriptParam * param); void calcmarkboundaries (DenemoMovement * si); void saveselwrapper (DenemoAction * action, DenemoScriptParam * param); void undowrapper (DenemoAction * action, DenemoScriptParam * param); void redowrapper (DenemoAction * action, DenemoScriptParam * param); void update_undo_info (DenemoMovement * si, DenemoUndoData * undo); void update_redo_info (DenemoMovement * si, DenemoUndoData * redo); void store_for_undo_change (DenemoMovement * si, DenemoObject * obj); gboolean take_snapshot (void); void stage_undo (DenemoMovement * si, action_type type); void goto_mark (DenemoAction * action, DenemoScriptParam * param); void goto_selection_start (DenemoAction * action, DenemoScriptParam * param); DenemoPosition *pop_position (void); void push_position (void); void get_position (DenemoMovement * si, DenemoPosition * pos); DenemoObject *get_mark_object (void); DenemoObject *get_point_object (void); void save_selection (DenemoMovement * si); void restore_selection (DenemoMovement * si); gboolean in_selection (DenemoMovement * si); void swap_point_and_mark (DenemoAction * action, DenemoScriptParam * param); GList *pop_off_clipboard (void); gboolean pop_clipboard (void); void push_clipboard (void); gint get_staffs_in_clipboard (void); gchar *get_last_change (DenemoMovement * si); void insert_clipboard (GList * clipboard); gint get_clip_objs (gint m); void store_for_undo_measure_create (DenemoMovement * si, gint staffnum, gint measurenum); #endif denemo-2.2.0/src/command/PaxHeaders.19168/changenotehead.h0000644000000000000000000000013213135434036020044 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.719981806 30 ctime=1500919914.096648472 denemo-2.2.0/src/command/changenotehead.h0000644000175000017500000000060213135434036021713 0ustar00jjbenhamjjbenham00000000000000/* changenotehead.h * * function prototypes for changing * the notehead. * * for Denemo, a gtk+ frontend for GNU Lilypond * (c) 2000-2005 Adam Tee */ #ifndef CHANGENOTEHEAD_H #define CHANGENOTEHEAD_H void insertnotehead (DenemoMovement * si, gchar * noteheadstring); gint texttohead (gchar * text); void set_notehead (DenemoAction * action, DenemoScriptParam * param); #endif denemo-2.2.0/src/PaxHeaders.19168/audio0000644000000000000000000000013213135434152014343 xustar0030 mtime=1500919914.093315138 30 atime=1500919914.539981806 30 ctime=1500919914.093315138 denemo-2.2.0/src/audio/0000755000175000017500000000000013135434152016271 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/src/audio/PaxHeaders.19168/pitchentry.h0000644000000000000000000000013213135434036016763 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.719981806 30 ctime=1500919914.083315138 denemo-2.2.0/src/audio/pitchentry.h0000644000175000017500000000324513135434036020640 0ustar00jjbenhamjjbenham00000000000000/* pitchentry.h * function prototypes for interface to audio/midi in * * for Denemo, a gtk+ frontend to GNU Lilypond * (c)2007 Richard Shann */ #ifndef PITCHENTRY_H #define PITCHENTRY_H #include #include #include "command/select.h" #include "command/chord.h" #include "command/object.h" gint setup_pitch_input (void); gint stop_pitch_input (void); void start_pitch_input (void); gboolean pitch_recognition_system_active (void); gboolean delete_tone (DenemoMovement * si, chord * thechord); gboolean apply_tones (DenemoMovement * si); void clear_overlay (DenemoAction * action, DenemoScriptParam* param); void store_pitch (double pitch); double get_pitch (void); void set_sharper (DenemoAction * action, DenemoScriptParam * param); void set_flatter (DenemoAction * action, DenemoScriptParam * param); gchar *determine_interval (gint bass, gint harmony, gboolean * status); gchar *sharpest (void); gchar *flattest (void); void signal_measure_end (void); gboolean pitch_entry_active (DenemoProject * gui); GtkWidget *get_enharmonic_frame (void); GtkWidget *get_temperament_combo (void); void reset_temperament (void); gchar *get_fents_string (void); gchar *get_sharpest (void); gchar *get_flattest (void); gchar *get_temperament_name (void); void set_enharmonic_position (gint position); void notenum2enharmonic (gint notenum, gint * poffset, gint * penshift, gint * poctave); gchar *get_cents_string (void); void set_tuning (void); void adjust_tonal_center (gint * accs); gint get_enharmonic_position (void); gboolean check_interval (gint step1, gint enshift1, gint step2, gint enshift2); gboolean check_midi_intervals (GList * midichord); #endif //PITCHENTRY_H denemo-2.2.0/src/audio/PaxHeaders.19168/portaudiobackend.h0000644000000000000000000000013213135434036020110 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.733315139 30 ctime=1500919914.056648472 denemo-2.2.0/src/audio/portaudiobackend.h0000644000175000017500000000115713135434036021765 0ustar00jjbenhamjjbenham00000000000000/* * portaudiobackend.h * PortAudio backend. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #ifndef PORTAUDIOBACKEND_H #define PORTAUDIOBACKEND_H #include "audio/audiointerface.h" extern backend_t portaudio_backend; #ifdef _HAVE_RUBBERBAND_ void set_playback_speed (double speed); #endif #endif // PORTAUDIOBACKEND_H denemo-2.2.0/src/audio/PaxHeaders.19168/dummybackend.c0000644000000000000000000000013213135434036017230 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.733315139 30 ctime=1500919914.043315139 denemo-2.2.0/src/audio/dummybackend.c0000644000175000017500000001043413135434036021103 0ustar00jjbenhamjjbenham00000000000000/* * dummybackend.c * Dummy audio and MIDI backend. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #include "audio/dummybackend.h" #include "audio/midi.h" #include // only affects GUI update, 10 Hz should be enough static int const PLAYBACK_INTERVAL = 100000; static GThread *process_thread = NULL; static GCond process_cond; static gboolean quit_thread = FALSE; static gboolean dummy_audio = FALSE; static gboolean dummy_midi = FALSE; static double playback_start_time; static gpointer process_thread_func (gpointer data) { static GMutex mutex; gint64 end_time; g_mutex_lock (&mutex); for (;;) { end_time = g_get_monotonic_time () + (PLAYBACK_INTERVAL * G_TIME_SPAN_SECOND)/1000000; g_cond_wait_until (&process_cond, &mutex, end_time); if (g_atomic_int_get (&quit_thread)) { break; } GTimeVal tv; g_get_current_time (&tv); double now = (double) tv.tv_sec + tv.tv_usec / 1000000.0; double playback_time = now - playback_start_time; unsigned char event_data[3]; size_t event_length; double event_time; double until_time = playback_time + PLAYBACK_INTERVAL / 1000000.0; if (g_atomic_int_get (&dummy_audio)) { // clear the audio event queue while (read_event_from_queue (AUDIO_BACKEND, event_data, &event_length, &event_time, until_time)) { // do nothing. this is the dummy backend after all } if (is_playing ()) { update_playback_time (TIMEBASE_PRIO_DUMMY, playback_time); } } if (g_atomic_int_get (&dummy_midi)) { // clear the MIDI event queue while (read_event_from_queue (MIDI_BACKEND, event_data, &event_length, &event_time, until_time)) { // do nothing. this is the dummy backend after all } } } g_mutex_unlock (&mutex); return NULL; } static void start_process_thread () { if (!process_thread) { process_thread = g_thread_try_new ("Dummy process", process_thread_func, NULL, NULL); } } static void stop_process_thread () { if (dummy_audio || dummy_midi) { return; } if (process_thread) { g_atomic_int_set (&quit_thread, TRUE); g_cond_signal (&process_cond); g_thread_join (process_thread); process_thread = NULL; } } static int dummy_audio_initialize (DenemoPrefs * config) { g_message ("Initializing dummy audio backend"); start_process_thread (); g_atomic_int_set (&dummy_audio, TRUE); return 0; } static int dummy_midi_initialize (DenemoPrefs * config) { g_message ("Initializing dummy MIDI backend"); start_process_thread (); g_atomic_int_set (&dummy_midi, TRUE); return 0; } static int dummy_audio_destroy () { g_message ("Destroying dummy audio backend"); g_atomic_int_set (&dummy_audio, FALSE); stop_process_thread (); return 0; } static int dummy_midi_destroy () { g_message ("Destroying dummy MIDI backend"); g_atomic_int_set (&dummy_midi, FALSE); stop_process_thread (); return 0; } static int dummy_audio_reconfigure (DenemoPrefs * config) { dummy_audio_destroy (); return dummy_audio_initialize (config); } static int dummy_midi_reconfigure (DenemoPrefs * config) { dummy_midi_destroy (); return dummy_midi_initialize (config); } static int dummy_start_playing () { GTimeVal tv; g_get_current_time (&tv); playback_start_time = (double) tv.tv_sec + tv.tv_usec / 1000000.0; playback_start_time -= get_playback_time (); return 0; } static int dummy_stop_playing () { return 0; } static int dummy_panic () { return 0; } backend_t dummy_audio_backend = { dummy_audio_initialize, dummy_audio_destroy, dummy_audio_reconfigure, dummy_start_playing, dummy_stop_playing, dummy_panic, }; backend_t dummy_midi_backend = { dummy_midi_initialize, dummy_midi_destroy, dummy_midi_reconfigure, dummy_start_playing, dummy_stop_playing, dummy_panic, }; denemo-2.2.0/src/audio/PaxHeaders.19168/portmidibackend.c0000644000000000000000000000013213135434036017724 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.739981806 30 ctime=1500919914.059981806 denemo-2.2.0/src/audio/portmidibackend.c0000644000175000017500000001133513135434036021600 0ustar00jjbenhamjjbenham00000000000000#ifdef _HAVE_PORTMIDI_ /* * portmidibackend.c * PortMidi backend. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #include "audio/portmidibackend.h" #include "audio/portmidiutil.h" #include "audio/midi.h" #include #include #include #define TIMER_RESOLUTION 5 #define INPUT_BUFFER_SIZE 0 #define OUTPUT_BUFFER_SIZE 256 static PmStream *input_stream = NULL; static PmStream *output_stream = NULL; static gboolean initialized = FALSE; static gboolean reset = FALSE; static double playback_start_time; static int portmidi_destroy (); static void process_midi (PtTimestamp timestamp, void *user_data) { if (!g_atomic_int_get (&initialized)) { return; } if (!input_stream) { return; } PmEvent event; int r; while (Pm_Poll (input_stream) == TRUE) { r = Pm_Read (input_stream, &event, 1); // we should only ever get one event. // if we get a sysex, just skip it. if (r != 1 || (Pm_MessageStatus (event.message) & 0xf0) == 0xf0) { continue; } unsigned char buffer[3] = { Pm_MessageStatus (event.message), Pm_MessageData1 (event.message), Pm_MessageData2 (event.message) }; input_midi_event (MIDI_BACKEND, 0, buffer); } } static int portmidi_initialize (DenemoPrefs * config) { g_message ("Initializing PortMidi backend"); PtError pterr = Pt_Start (TIMER_RESOLUTION, &process_midi, NULL); if (pterr != ptNoError) { g_warning ("Couldn't start timer"); return -1; } PmError err; int id; PmDeviceInfo const *info; err = Pm_InitializeWrapper (); if (err != pmNoError) { g_warning ("Couldn't initialize PortMidi"); portmidi_destroy (); return -1; } if (g_strcmp0 (config->portmidi_input_device->str, "none") != 0) { id = get_portmidi_device_id (config->portmidi_input_device->str, FALSE); info = Pm_GetDeviceInfo (id); if (info == NULL) { id = get_portmidi_device_id ("default", FALSE); info = Pm_GetDeviceInfo (id); if (info == NULL) { g_warning ("No MIDI input device, and no default device"); portmidi_destroy (); return -1; } } g_message ("Opening input device '%s: %s'", info->interf, info->name); err = Pm_OpenInput (&input_stream, id, NULL, INPUT_BUFFER_SIZE, NULL, NULL); if (err != pmNoError) { g_warning ("Couldn't open input stream"); portmidi_destroy (); return -1; } } else { g_message ("Input device is disabled"); input_stream = NULL; } if (g_strcmp0 (config->portmidi_output_device->str, "none") != 0) { id = get_portmidi_device_id (config->portmidi_output_device->str, TRUE); info = Pm_GetDeviceInfo (id); if (info == NULL) { g_warning ("No output device"); portmidi_destroy (); return -1; } g_message ("Opening output device '%s: %s'", info->interf, info->name); err = Pm_OpenOutput (&output_stream, id, NULL, OUTPUT_BUFFER_SIZE, NULL, NULL, 0); if (err != pmNoError) { g_warning ("Couldn't open output stream"); portmidi_destroy (); return -1; } } else { g_message ("Output device is disabled"); output_stream = NULL; } g_atomic_int_set (&initialized, TRUE); return 0; } static int portmidi_destroy () { g_message ("Destroying PortMidi backend"); Pt_Stop (); g_atomic_int_set (&initialized, FALSE); if (input_stream) { Pm_Close (input_stream); } if (output_stream) { Pm_Close (output_stream); } Pm_TerminateWrapper (); return 0; } static int portmidi_reconfigure (DenemoPrefs * config) { portmidi_destroy (); return portmidi_initialize (config); } static int portmidi_start_playing () { GTimeVal tv; g_get_current_time (&tv); playback_start_time = (double) tv.tv_sec + tv.tv_usec / 1000000.0; playback_start_time -= get_playback_time (); return 0; } static int portmidi_stop_playing () { reset = TRUE; return 0; } static int portmidi_panic () { reset = TRUE; return 0; } backend_t portmidi_backend = { portmidi_initialize, portmidi_destroy, portmidi_reconfigure, portmidi_start_playing, portmidi_stop_playing, portmidi_panic, }; #endif //_HAVE_PORTMIDI_ denemo-2.2.0/src/audio/PaxHeaders.19168/portaudiobackend.c0000644000000000000000000000013213135434036020103 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.739981806 30 ctime=1500919914.056648472 denemo-2.2.0/src/audio/portaudiobackend.c0000644000175000017500000002474513135434036021770 0ustar00jjbenhamjjbenham00000000000000#ifdef _HAVE_PORTAUDIO_ /* * portaudiobackend.c * PortAudio backend. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #include #include "audio/portaudiobackend.h" #include "audio/portaudioutil.h" #ifdef _HAVE_RUBBERBAND_ #include #endif #include "audio/midi.h" #include "audio/fluid.h" #include "audio/audiointerface.h" #include #include #include #include "export/audiofile.h" #include "core/utils.h" static PaStream *stream; static unsigned long sample_rate; static unsigned long playback_frame = 0; static gboolean reset_audio = FALSE; static gint ready = FALSE; static double slowdown = 1.0; //2.0 = twice as long ie half speed. static gboolean rubberband_active = FALSE; #ifdef _HAVE_RUBBERBAND_ static RubberBandState rubberband; static gint rubberband_init(DenemoPrefs *config) { rubberband = rubberband_new(sample_rate, 2 /* channels */, RubberBandOptionProcessRealTime | RubberBandOptionStretchPrecise, slowdown, 1.0); //rubberband_set_debug_level(rubberband, 3); return 0; } void set_playback_speed (double speed) { if(rubberband==NULL) rubberband_init(&Denemo.prefs); Denemo.project->movement->end_time /= slowdown; Denemo.project->movement->start_time /= slowdown; if(speed>1.01) { slowdown = speed; rubberband_active = TRUE; } else { slowdown = 1.0; rubberband_active = FALSE; } rubberband_set_time_ratio(rubberband, slowdown); Denemo.project->movement->end_time *= slowdown; Denemo.project->movement->start_time *= slowdown; } gdouble get_playback_speed (void) { return slowdown; } #endif static double nframes_to_seconds (unsigned long nframes) { return nframes / (double) sample_rate; } static unsigned long seconds_to_nframes (double seconds) { return (unsigned long) (sample_rate * seconds); } #define MAX_MESSAGE_LENGTH (255) //Allow single sysex blocks, ie 0xF0, length, data...0xF7 where length is one byte. static void record_audio(float ** buffers, unsigned long frames_per_buffer){ // Recording audio out - only one channel is saved at the moment, so source audio (which is dumped in the second channel) is not recorded. if (Denemo.prefs.maxrecordingtime <= 0) return; static FILE *fp = NULL; if (Denemo.project && Denemo.project->audio_recording) { static guint recorded_frames; if (fp == NULL) { const gchar *filename = recorded_audio_filename (); fp = fopen (filename, "wb"); recorded_frames = 0; if (fp == NULL) g_warning ("Could not open denemo-output"); else g_info ("Opened output file %s", filename); } if (fp) { if (recorded_frames / 44100 < Denemo.prefs.maxrecordingtime) { fwrite (buffers[0], sizeof (float), frames_per_buffer, fp); recorded_frames += frames_per_buffer; } else { //only warn once, don't spew out warnings... if (recorded_frames < G_MAXINT) { recorded_frames = G_MAXINT; g_warning ("Recording length exceeded preference (%d seconds); use the Change Preferences dialog to alter this", Denemo.prefs.maxrecordingtime); } } } } else { if (fp) { fclose (fp); fp = NULL; g_message ("File closed samples are raw data, Little Endian (? or architecture dependent), mono"); } } } static int stream_callback (const void *input_buffer, void *output_buffer, unsigned long frames_per_buffer, const PaStreamCallbackTimeInfo * time_info, PaStreamCallbackFlags status_flags, void *user_data) { float **buffers = (float **) output_buffer; #ifdef _HAVE_RUBBERBAND_ static gboolean initialized = FALSE; if (!initialized) { rubberband_set_max_process_size(rubberband, frames_per_buffer); initialized = TRUE; } #endif size_t i; for (i = 0; i < 2; ++i) { memset (buffers[i], 0, frames_per_buffer * sizeof (float)); } if (!ready) return paContinue; #ifdef _HAVE_FLUIDSYNTH_ if (reset_audio) { fluidsynth_all_notes_off (); reset_synth_channels (); reset_audio = FALSE; return paContinue; } unsigned char event_data[MAX_MESSAGE_LENGTH]; //needs to be long enough for variable length messages... size_t event_length = MAX_MESSAGE_LENGTH; double event_time; double until_time = nframes_to_seconds (playback_frame + frames_per_buffer); #ifdef _HAVE_RUBBERBAND_ gint available = rubberband_available(rubberband); if((!rubberband_active) || (available < (gint)frames_per_buffer)) { #endif while (read_event_from_queue (AUDIO_BACKEND, event_data, &event_length, &event_time, until_time/slowdown)) {//g_print("%x %x %x\n", event_data[0], event_data[1], event_data[2] ); fluidsynth_feed_midi (event_data, event_length); //in fluid.c note fluidsynth api ues fluid_synth_xxx these naming conventions are a bit too similar } fluidsynth_render_audio (frames_per_buffer, buffers[0], buffers[1]); //in fluid.c calls fluid_synth_write_float() // Now get any audio to mix - dump it in the left hand channel for now event_length = frames_per_buffer; read_event_from_mixer_queue (AUDIO_BACKEND, (void *) buffers[1], &event_length); #ifdef _HAVE_RUBBERBAND_ } //if there is stuff available use it and give buffers[] to rubber band to process if(rubberband_active) { if(available < (gint)frames_per_buffer) rubberband_process(rubberband, (const float * const*)buffers, frames_per_buffer, 0); available = rubberband_available(rubberband); if(available >= (gint)frames_per_buffer) { rubberband_retrieve(rubberband, buffers, frames_per_buffer);//re-use buffers[] as they are available... write_samples_to_rubberband_queue (AUDIO_BACKEND, buffers[0], frames_per_buffer); write_samples_to_rubberband_queue (AUDIO_BACKEND, buffers[1], frames_per_buffer); available -= frames_per_buffer; } event_length = frames_per_buffer; read_event_from_rubberband_queue (AUDIO_BACKEND, (unsigned char *) buffers[0], &event_length); event_length = frames_per_buffer; read_event_from_rubberband_queue (AUDIO_BACKEND, (unsigned char *) buffers[1], &event_length); } #endif //_HAVE_RUBBERBAND_ if (until_time < get_playuntil ()) { #endif //_HAVE_FLUIDSYNTH_ playback_frame += frames_per_buffer; update_playback_time (TIMEBASE_PRIO_AUDIO, nframes_to_seconds (playback_frame)); #ifdef _HAVE_FLUIDSYNTH_ } #endif //_HAVE_FLUIDSYNTH_ // This is probably a bad idea to do heavy work in an audio callback record_audio(buffers, frames_per_buffer); return paContinue; } static int actual_portaudio_initialize (DenemoPrefs * config) { sample_rate = config->portaudio_sample_rate; #ifdef _HAVE_FLUIDSYNTH_ g_message ("Initializing Fluidsynth"); if (fluidsynth_init (config, sample_rate)) { g_warning ("Initializing Fluidsynth FAILED!"); return -1; } #endif #ifdef _HAVE_RUBBERBAND_ g_message ("Initializing Rubberband"); if (rubberband_init (config)) { g_warning ("Initializing Rubberband FAILED!"); return -1; } #endif g_unlink (recorded_audio_filename ()); g_message ("Initializing PortAudio backend"); g_info("PortAudio version: %s", Pa_GetVersionText()); PaStreamParameters output_parameters; PaError err; err = Pa_Initialize (); if (err != paNoError) { g_warning ("Initializing PortAudio failed"); return -1; } output_parameters.device = get_portaudio_device_index (config->portaudio_device->str); if (output_parameters.device == paNoDevice) { output_parameters.device = get_portaudio_device_index ("default"); if (output_parameters.device == paNoDevice) { g_warning("No PortAudio device %s and no default either.", config->portaudio_device->str); return -1; } } PaDeviceInfo const *info = Pa_GetDeviceInfo (output_parameters.device); if (!info) { g_warning ("Invalid device '%s'", config->portaudio_device->str); return -1; } char const *api_name = Pa_GetHostApiInfo (info->hostApi)->name; g_message ("Opening output device '%s: %s'", api_name, info->name); output_parameters.channelCount = 2; output_parameters.sampleFormat = paFloat32 | paNonInterleaved; output_parameters.suggestedLatency = Pa_GetDeviceInfo (output_parameters.device)->defaultLowOutputLatency; output_parameters.hostApiSpecificStreamInfo = NULL; err = Pa_OpenStream (&stream, NULL, &output_parameters, config->portaudio_sample_rate, config->portaudio_period_size, paNoFlag /* make this a pref??? paClipOff */ , stream_callback, NULL); if (err != paNoError) { g_warning ("Couldn't open output stream"); return -1; } err = Pa_StartStream (stream); if (err != paNoError) { g_warning ("Couldn't start output stream"); return -1; } return 0; } static int ready_now () { ready = TRUE; return FALSE; } static int portaudio_initialize (DenemoPrefs * config) { g_idle_add ((GSourceFunc) ready_now, NULL); return actual_portaudio_initialize (config); } static int portaudio_destroy () { g_message ("Destroying PortAudio backend"); ready = FALSE; PaError err; err = Pa_CloseStream (stream); if (err != paNoError) { g_warning ("Closing stream failed: %d, %s", err, Pa_GetErrorText (err)); return -1; } Pa_Terminate (); #ifdef _HAVE_FLUIDSYNTH_ fluidsynth_shutdown (); #endif return 0; } static int portaudio_reconfigure (DenemoPrefs * config) { portaudio_destroy (); return portaudio_initialize (config); } static int portaudio_start_playing () { playback_frame = seconds_to_nframes (get_playback_time ()); return 0; } static int portaudio_stop_playing () { reset_audio = TRUE; return 0; } static int portaudio_panic () { reset_audio = TRUE; return 0; } backend_t portaudio_backend = { portaudio_initialize, portaudio_destroy, portaudio_reconfigure, portaudio_start_playing, portaudio_stop_playing, portaudio_panic, }; #endif //_HAVE_PORTAUDIO_ denemo-2.2.0/src/audio/PaxHeaders.19168/ringbuffer.c0000644000000000000000000000013213135434036016716 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.753315139 30 ctime=1500919914.066648472 denemo-2.2.0/src/audio/ringbuffer.c0000644000175000017500000002042613135434036020573 0ustar00jjbenhamjjbenham00000000000000#ifndef _HAVE_JACK_ /* Copyright (C) 2000 Paul Davis Copyright (C) 2003 Rohan Drape This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ISO/POSIX C version of Paul Davis's lock free ringbuffer C++ code. This is safe for the case of one read thread and one write thread. */ #include #include #include #ifdef USE_MLOCK #include #endif /* USE_MLOCK */ //#include #include "audio/ringbuffer.h" /* Create a new ringbuffer to hold at least `sz' bytes of data. The actual buffer size is rounded up to the next power of two. */ jack_ringbuffer_t * jack_ringbuffer_create (size_t sz) { unsigned int power_of_two; jack_ringbuffer_t *rb; if ((rb = malloc (sizeof (jack_ringbuffer_t))) == NULL) { return NULL; } for (power_of_two = 1; (unsigned int) 1 << power_of_two < sz; power_of_two++); rb->size = 1 << power_of_two; rb->size_mask = rb->size; rb->size_mask -= 1; rb->write_ptr = 0; rb->read_ptr = 0; if ((rb->buf = malloc (rb->size)) == NULL) { free (rb); return NULL; } rb->mlocked = 0; return rb; } /* Free all data associated with the ringbuffer `rb'. */ void jack_ringbuffer_free (jack_ringbuffer_t * rb) { #ifdef USE_MLOCK if (rb->mlocked) { munlock (rb->buf, rb->size); } #endif /* USE_MLOCK */ free (rb->buf); free (rb); } /* Lock the data block of `rb' using the system call 'mlock'. */ int jack_ringbuffer_mlock (jack_ringbuffer_t * rb) { #ifdef USE_MLOCK if (mlock (rb->buf, rb->size)) { return -1; } #endif /* USE_MLOCK */ rb->mlocked = 1; return 0; } /* Reset the read and write pointers to zero. This is not thread safe. */ void jack_ringbuffer_reset (jack_ringbuffer_t * rb) { rb->read_ptr = 0; rb->write_ptr = 0; } /* Return the number of bytes available for reading. This is the number of bytes in front of the read pointer and behind the write pointer. */ size_t jack_ringbuffer_read_space (const jack_ringbuffer_t * rb) { size_t w, r; w = rb->write_ptr; r = rb->read_ptr; if (w > r) { return w - r; } else { return (w - r + rb->size) & rb->size_mask; } } /* Return the number of bytes available for writing. This is the number of bytes in front of the write pointer and behind the read pointer. */ size_t jack_ringbuffer_write_space (const jack_ringbuffer_t * rb) { size_t w, r; w = rb->write_ptr; r = rb->read_ptr; if (w > r) { return ((r - w + rb->size) & rb->size_mask) - 1; } else if (w < r) { return (r - w) - 1; } else { return rb->size - 1; } } /* The copying data reader. Copy at most `cnt' bytes from `rb' to `dest'. Returns the actual number of bytes copied. */ size_t jack_ringbuffer_read (jack_ringbuffer_t * rb, char *dest, size_t cnt) { size_t free_cnt; size_t cnt2; size_t to_read; size_t n1, n2; if ((free_cnt = jack_ringbuffer_read_space (rb)) == 0) { return 0; } to_read = cnt > free_cnt ? free_cnt : cnt; cnt2 = rb->read_ptr + to_read; if (cnt2 > rb->size) { n1 = rb->size - rb->read_ptr; n2 = cnt2 & rb->size_mask; } else { n1 = to_read; n2 = 0; } memcpy (dest, &(rb->buf[rb->read_ptr]), n1); rb->read_ptr = (rb->read_ptr + n1) & rb->size_mask; if (n2) { memcpy (dest + n1, &(rb->buf[rb->read_ptr]), n2); rb->read_ptr = (rb->read_ptr + n2) & rb->size_mask; } return to_read; } /* The copying data reader w/o read pointer advance. Copy at most `cnt' bytes from `rb' to `dest'. Returns the actual number of bytes copied. */ size_t jack_ringbuffer_peek (jack_ringbuffer_t * rb, char *dest, size_t cnt) { size_t free_cnt; size_t cnt2; size_t to_read; size_t n1, n2; size_t tmp_read_ptr; tmp_read_ptr = rb->read_ptr; if ((free_cnt = jack_ringbuffer_read_space (rb)) == 0) { return 0; } to_read = cnt > free_cnt ? free_cnt : cnt; cnt2 = tmp_read_ptr + to_read; if (cnt2 > rb->size) { n1 = rb->size - tmp_read_ptr; n2 = cnt2 & rb->size_mask; } else { n1 = to_read; n2 = 0; } memcpy (dest, &(rb->buf[tmp_read_ptr]), n1); tmp_read_ptr = (tmp_read_ptr + n1) & rb->size_mask; if (n2) { memcpy (dest + n1, &(rb->buf[tmp_read_ptr]), n2); } return to_read; } /* The copying data writer. Copy at most `cnt' bytes to `rb' from `src'. Returns the actual number of bytes copied. */ size_t jack_ringbuffer_write (jack_ringbuffer_t * rb, const char *src, size_t cnt) { size_t free_cnt; size_t cnt2; size_t to_write; size_t n1, n2; if ((free_cnt = jack_ringbuffer_write_space (rb)) == 0) { return 0; } to_write = cnt > free_cnt ? free_cnt : cnt; cnt2 = rb->write_ptr + to_write; if (cnt2 > rb->size) { n1 = rb->size - rb->write_ptr; n2 = cnt2 & rb->size_mask; } else { n1 = to_write; n2 = 0; } memcpy (&(rb->buf[rb->write_ptr]), src, n1); rb->write_ptr = (rb->write_ptr + n1) & rb->size_mask; if (n2) { memcpy (&(rb->buf[rb->write_ptr]), src + n1, n2); rb->write_ptr = (rb->write_ptr + n2) & rb->size_mask; } return to_write; } /* Advance the read pointer `cnt' places. */ void jack_ringbuffer_read_advance (jack_ringbuffer_t * rb, size_t cnt) { size_t tmp = (rb->read_ptr + cnt) & rb->size_mask; rb->read_ptr = tmp; } /* Advance the write pointer `cnt' places. */ void jack_ringbuffer_write_advance (jack_ringbuffer_t * rb, size_t cnt) { size_t tmp = (rb->write_ptr + cnt) & rb->size_mask; rb->write_ptr = tmp; } /* The non-copying data reader. `vec' is an array of two places. Set the values at `vec' to hold the current readable data at `rb'. If the readable data is in one segment the second segment has zero length. */ void jack_ringbuffer_get_read_vector (const jack_ringbuffer_t * rb, jack_ringbuffer_data_t * vec) { size_t free_cnt; size_t cnt2; size_t w, r; w = rb->write_ptr; r = rb->read_ptr; if (w > r) { free_cnt = w - r; } else { free_cnt = (w - r + rb->size) & rb->size_mask; } cnt2 = r + free_cnt; if (cnt2 > rb->size) { /* Two part vector: the rest of the buffer after the current write ptr, plus some from the start of the buffer. */ vec[0].buf = &(rb->buf[r]); vec[0].len = rb->size - r; vec[1].buf = rb->buf; vec[1].len = cnt2 & rb->size_mask; } else { /* Single part vector: just the rest of the buffer */ vec[0].buf = &(rb->buf[r]); vec[0].len = free_cnt; vec[1].len = 0; } } /* The non-copying data writer. `vec' is an array of two places. Set the values at `vec' to hold the current writeable data at `rb'. If the writeable data is in one segment the second segment has zero length. */ void jack_ringbuffer_get_write_vector (const jack_ringbuffer_t * rb, jack_ringbuffer_data_t * vec) { size_t free_cnt; size_t cnt2; size_t w, r; w = rb->write_ptr; r = rb->read_ptr; if (w > r) { free_cnt = ((r - w + rb->size) & rb->size_mask) - 1; } else if (w < r) { free_cnt = (r - w) - 1; } else { free_cnt = rb->size - 1; } cnt2 = w + free_cnt; if (cnt2 > rb->size) { /* Two part vector: the rest of the buffer after the current write ptr, plus some from the start of the buffer. */ vec[0].buf = &(rb->buf[w]); vec[0].len = rb->size - w; vec[1].buf = rb->buf; vec[1].len = cnt2 & rb->size_mask; } else { vec[0].buf = &(rb->buf[w]); vec[0].len = free_cnt; vec[1].len = 0; } } #endif //_HAVE_JACK_ denemo-2.2.0/src/audio/PaxHeaders.19168/alsabackend.h0000644000000000000000000000013213135434036017022 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.769981805 30 ctime=1500919914.039981806 denemo-2.2.0/src/audio/alsabackend.h0000644000175000017500000000104213135434036020670 0ustar00jjbenhamjjbenham00000000000000/* * alsabackend.h * ALSA sequencer MIDI backend. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #ifndef ALSABACKEND_H #define ALSABACKEND_H #include "audio/audiointerface.h" extern backend_t alsa_seq_midi_backend; #endif // ALSABACKEND_H denemo-2.2.0/src/audio/PaxHeaders.19168/alsabackend.c0000644000000000000000000000013213135434036017015 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.769981805 30 ctime=1500919914.039981806 denemo-2.2.0/src/audio/alsabackend.c0000644000175000017500000001253713135434036020676 0ustar00jjbenhamjjbenham00000000000000#ifdef _HAVE_ALSA_ /* * alsabackend.c * ALSA sequencer MIDI backend. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #include "audio/alsabackend.h" #include "audio/midi.h" #include #include static char const *ALSA_SEQ_CLIENT_NAME = "denemo"; static int const PLAYBACK_INTERVAL = 5000; static snd_seq_t *seq; static int in_port_id; static int out_port_id; static snd_midi_event_t *parser; static GThread *process_thread; static GCond process_cond; static gboolean quit_thread = FALSE; static gboolean reset = FALSE; static double playback_start_time; static gpointer process_thread_func (gpointer data) { static GMutex mutex; gint64 end_time; g_mutex_lock (&mutex); for (;;) { end_time = g_get_monotonic_time () + (PLAYBACK_INTERVAL * G_TIME_SPAN_SECOND)/1000000; g_cond_wait_until (&process_cond, &mutex, end_time); if (g_atomic_int_get (&quit_thread)) { break; } snd_seq_event_t *pev; while (snd_seq_event_input (seq, &pev) >= 0) { unsigned char buffer[3]; snd_midi_event_reset_decode (parser); if (snd_midi_event_decode (parser, buffer, sizeof (buffer), pev) > 0) { input_midi_event (MIDI_BACKEND, 0, buffer); } } GTimeVal tv; g_get_current_time (&tv); double now = (double) tv.tv_sec + tv.tv_usec / 1000000.0; double playback_time = now - playback_start_time; unsigned char event_data[3]; size_t event_length; double event_time; double until_time = playback_time + PLAYBACK_INTERVAL / 1000000.0; if (reset) { int n; for (n = 0; n < 16; ++n) { snd_seq_event_t ev; snd_seq_ev_set_controller (&ev, n, 123, 0); snd_seq_ev_set_subs (&ev); snd_seq_ev_set_direct (&ev); snd_seq_ev_set_source (&ev, out_port_id); snd_seq_event_output_direct (seq, &ev); } reset = FALSE; } while (read_event_from_queue (MIDI_BACKEND, event_data, &event_length, &event_time, until_time)) { snd_seq_event_t ev; snd_midi_event_reset_encode (parser); snd_midi_event_encode (parser, event_data, event_length, &ev); snd_seq_ev_set_subs (&ev); snd_seq_ev_set_direct (&ev); snd_seq_ev_set_source (&ev, out_port_id); snd_seq_event_output_direct (seq, &ev); } if (is_playing ()) { update_playback_time (TIMEBASE_PRIO_MIDI, playback_time); } } g_mutex_unlock (&mutex); return NULL; } static int alsa_seq_initialize (DenemoPrefs * config) { g_message ("Initializing ALSA sequencer MIDI backend"); // create sequencer client if (snd_seq_open (&seq, "hw", SND_SEQ_OPEN_DUPLEX, SND_SEQ_NONBLOCK) < 0) { g_warning ("error opening alsa sequencer"); return -1; } snd_seq_set_client_name (seq, ALSA_SEQ_CLIENT_NAME); // create input port in_port_id = snd_seq_create_simple_port (seq, "midi_in", SND_SEQ_PORT_CAP_WRITE | SND_SEQ_PORT_CAP_SUBS_WRITE, SND_SEQ_PORT_TYPE_APPLICATION); if (in_port_id < 0) { g_warning ("error creating sequencer output port"); return -1; } // create output port out_port_id = snd_seq_create_simple_port (seq, "midi_out", SND_SEQ_PORT_CAP_READ | SND_SEQ_PORT_CAP_SUBS_READ, SND_SEQ_PORT_TYPE_APPLICATION); if (in_port_id < 0) { g_warning ("error creating sequencer output port"); return -1; } // initialize MIDI event parser if (snd_midi_event_new (12, &parser)) { g_warning ("error initializing MIDI event parser"); return -1; } snd_midi_event_init (parser); snd_midi_event_no_status (parser, 1); //process_cond = g_cond_new ();since GLib 2.32 no longer needed, static declaration is enough process_thread = g_thread_try_new ("ALSA process", process_thread_func, NULL, NULL); return 0; } static int alsa_seq_destroy () { g_message ("Destroying ALSA sequencer MIDI backend"); g_atomic_int_set (&quit_thread, TRUE); g_cond_signal (&process_cond); g_thread_join (process_thread); // g_cond_free (process_cond);since GLib 2.32 no longer needed, static declaration is enough snd_midi_event_free (parser); snd_seq_delete_port (seq, in_port_id); snd_seq_delete_port (seq, out_port_id); snd_seq_close (seq); return 0; } static int alsa_seq_reconfigure (DenemoPrefs * config) { alsa_seq_destroy (); return alsa_seq_initialize (config); } static int alsa_seq_start_playing () { GTimeVal tv; g_get_current_time (&tv); playback_start_time = (double) tv.tv_sec + tv.tv_usec / 1000000.0; playback_start_time -= get_playback_time (); return 0; } static int alsa_seq_stop_playing () { reset = TRUE; return 0; } static int alsa_seq_panic () { reset = TRUE; return 0; } backend_t alsa_seq_midi_backend = { alsa_seq_initialize, alsa_seq_destroy, alsa_seq_reconfigure, alsa_seq_start_playing, alsa_seq_stop_playing, alsa_seq_panic, }; #endif //_HAVE_ALSA_ denemo-2.2.0/src/audio/PaxHeaders.19168/portaudioutil.c0000644000000000000000000000013213135434036017471 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.769981805 30 ctime=1500919914.059981806 denemo-2.2.0/src/audio/portaudioutil.c0000644000175000017500000000341013135434036021340 0ustar00jjbenhamjjbenham00000000000000#ifdef _HAVE_PORTAUDIO_ /* * portaudioutil.c * PortAudio utility functions. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #include "audio/portaudioutil.h" #include GList * get_portaudio_devices () { GList *list = NULL; PaError err = Pa_Initialize (); if (err != paNoError) { return NULL; } list = g_list_append (list, g_strdup ("default")); PaDeviceIndex num = Pa_GetDeviceCount (); if (num < 0) { goto ret; } PaDeviceIndex i; for (i = 0; i < num; ++i) { PaDeviceInfo const *info = Pa_GetDeviceInfo (i); char const *api_name = Pa_GetHostApiInfo (info->hostApi)->name; char *s = g_strdup_printf ("%s: %s", api_name, info->name); list = g_list_append (list, s); } ret: Pa_Terminate (); return list; } void free_portaudio_devices (GList * list) { GList *p = list; while (p) { g_free (p->data); p = g_list_next (p); } g_list_free (list); } PaDeviceIndex get_portaudio_device_index (char const *name) { if (g_strcmp0 (name, "default") == 0) { return Pa_GetDefaultOutputDevice (); } GList *list = get_portaudio_devices (); if (!list) { return paNoDevice; } GList *item = g_list_find_custom (list, name, (GCompareFunc) g_strcmp0); PaDeviceIndex index = g_list_position (list, item); if (index == -1) { index = paNoDevice; } free_portaudio_devices (list); return index - 1; } #endif //_HAVE_PORTAUDIO_ denemo-2.2.0/src/audio/PaxHeaders.19168/eventqueue.c0000644000000000000000000000013213135434036016753 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.776648472 30 ctime=1500919914.046648472 denemo-2.2.0/src/audio/eventqueue.c0000644000175000017500000002024013135434036020622 0ustar00jjbenhamjjbenham00000000000000/* * eventqueue.c * event queue for audio/MIDI backends. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #include "audio/eventqueue.h" #include "audio/midi.h" #include "ui/moveviewport.h" #include #include event_queue_t * event_queue_new (size_t playback_queue_size, size_t immediate_queue_size, size_t input_queue_size, size_t mixer_queue_size #ifdef _HAVE_RUBBERBAND_ , size_t rubberband_queue_size #endif ) { event_queue_t *queue = g_malloc0 (sizeof (event_queue_t)); if (playback_queue_size) { queue->playback = jack_ringbuffer_create (playback_queue_size * sizeof (smf_event_t *)); jack_ringbuffer_reset (queue->playback); } if (immediate_queue_size) { queue->immediate = jack_ringbuffer_create (immediate_queue_size * sizeof (midi_event_t)); jack_ringbuffer_reset (queue->immediate); } if (input_queue_size) { queue->input = jack_ringbuffer_create (input_queue_size * sizeof (midi_event_t)); jack_ringbuffer_reset (queue->input); } if (mixer_queue_size) { queue->mixer = jack_ringbuffer_create (mixer_queue_size * sizeof (float)); jack_ringbuffer_reset (queue->mixer); } #ifdef _HAVE_RUBBERBAND_ if (rubberband_queue_size) { queue->rubberband = jack_ringbuffer_create (rubberband_queue_size * sizeof (float)); jack_ringbuffer_reset (queue->rubberband); } #endif return queue; } void event_queue_free (event_queue_t * queue) { if (queue->playback) { jack_ringbuffer_free (queue->playback); } if (queue->immediate) { jack_ringbuffer_free (queue->immediate); } if (queue->input) { jack_ringbuffer_free (queue->input); } g_free (queue); } void event_queue_reset_playback (event_queue_t * queue) { if (queue->playback) { jack_ringbuffer_reset (queue->playback); } } void event_queue_reset_mixer (event_queue_t * queue) { if (queue->mixer) { jack_ringbuffer_reset (queue->mixer); } } #ifdef _HAVE_RUBBERBAND_ void event_queue_reset_rubberband (event_queue_t * queue) { if (queue->rubberband) { jack_ringbuffer_reset (queue->rubberband); } } #endif gboolean event_queue_write_playback (event_queue_t * queue, smf_event_t * event) { if (!queue->playback || jack_ringbuffer_write_space (queue->playback) < sizeof (smf_event_t *)) { return FALSE; } size_t n = jack_ringbuffer_write (queue->playback, (char const *) &event, sizeof (smf_event_t *)); return n == sizeof (smf_event_t *); } gboolean event_queue_write_immediate (event_queue_t * queue, guchar * data, guint length) { if (!queue->immediate || jack_ringbuffer_write_space (queue->immediate) < length) { return FALSE; } size_t n = jack_ringbuffer_write (queue->immediate, (char const *) data, length); return n == length; } gboolean event_queue_write_mixer (event_queue_t * queue, float *data) { if (!queue->mixer || jack_ringbuffer_write_space (queue->mixer) < sizeof (float)) { return FALSE; } size_t n = jack_ringbuffer_write (queue->mixer, (char const *) data, sizeof (float)); return n == sizeof (float); } #ifdef _HAVE_RUBBERBAND_ gboolean event_queue_write_rubberband (event_queue_t * queue, float *data) { if (!queue->rubberband || jack_ringbuffer_write_space (queue->rubberband) < sizeof (float)) { return FALSE; } size_t n = jack_ringbuffer_write (queue->rubberband, (char const *) data, sizeof (float)); return n == sizeof (float); } #endif static gboolean do_page_viewport(void) { page_viewport (); return FALSE; } static gboolean page_viewport_callback (gpointer data) { g_main_context_invoke (NULL, (GSourceFunc)do_page_viewport, NULL); return FALSE; } static void page_for_time (gdouble time_seconds) { DenemoMovement *si = Denemo.project->movement; if ((si->rightmost_time > 0.0) && (time_seconds > si->rightmost_time)) { si->rightmost_time = -1; g_idle_add_full (G_PRIORITY_HIGH_IDLE, page_viewport_callback, NULL, NULL); } } gboolean mixer_queue_read_output (event_queue_t * queue, unsigned char *event_buffer, size_t * event_length) { if (jack_ringbuffer_read_space (queue->mixer) >= (*event_length) * sizeof (float)) { *event_length = jack_ringbuffer_read (queue->mixer, (char *) event_buffer, (*event_length) * sizeof (float)) / sizeof (float); return TRUE; } *event_length = 0; return FALSE; } #ifdef _HAVE_RUBBERBAND_ gboolean rubberband_queue_read_output (event_queue_t * queue, unsigned char *event_buffer, size_t * event_length) { if (jack_ringbuffer_read_space (queue->rubberband) >= (*event_length) * sizeof (float)) { *event_length = jack_ringbuffer_read (queue->rubberband, (char *) event_buffer, (*event_length) * sizeof (float)) / sizeof (float); return TRUE; } *event_length = 0; return FALSE; } #endif gboolean event_queue_read_output (event_queue_t * queue, unsigned char *event_buffer, size_t * event_length, double *event_time, double until_time) { #if 0 //old fixed length code if (jack_ringbuffer_read_space (queue->immediate)) { midi_event_t event; jack_ringbuffer_read (queue->immediate, (char *) &event, sizeof (midi_event_t)); memcpy (event_buffer, &event.data, 3); // FIXME *event_length = 3; *event_time = 0.0; return TRUE; } #else if (jack_ringbuffer_read_space (queue->immediate)) { jack_ringbuffer_data_t vec[2]; jack_ringbuffer_get_read_vector (queue->immediate, vec); if (vec[0].len) { guchar length; jack_ringbuffer_read (queue->immediate, (char*) &length, 1); //g_assert (length < 255); jack_ringbuffer_read (queue->immediate, (char*) event_buffer, length); *event_length = length; *event_time = 0.0; return TRUE; } } #endif if (!queue->playback) { return FALSE; } for (;;) { smf_event_t *event; // printf("is_playing=%d, playback_time=%f, end_time=%f\n", is_playing(), get_playback_time(), get_end_time()); if (!jack_ringbuffer_read_space (queue->playback)) { // printf("no more events in playback queue\n"); return FALSE; } jack_ringbuffer_peek (queue->playback, (char *) &event, sizeof (smf_event_t *)); if (event->time_seconds >= until_time) { // printf("no event to play right now\n"); return FALSE; } if (smf_event_is_metadata (event)) { // consume metadata event and continue with the next one jack_ringbuffer_read_advance (queue->playback, sizeof (smf_event_t *)); continue; } // consume the event jack_ringbuffer_read_advance (queue->playback, sizeof (smf_event_t *)); //g_assert(event->midi_buffer_length <= 3); update_position (event); adjust_midi_velocity ((gchar*)event->midi_buffer, 100 - Denemo.prefs.dynamic_compression); memcpy (event_buffer, event->midi_buffer, event->midi_buffer_length); *event_length = event->midi_buffer_length; *event_time = event->time_seconds; page_for_time (*event_time); // printf("event_time=%f\n", *event_time); return TRUE; } } gboolean event_queue_write_input (event_queue_t * queue, midi_event_t const *event) { if (!queue->input || jack_ringbuffer_write_space (queue->input) < sizeof (midi_event_t)) { return FALSE; } size_t n = jack_ringbuffer_write (queue->input, (char *) event, sizeof (midi_event_t)); return n == sizeof (midi_event_t); } midi_event_t * event_queue_read_input (event_queue_t * queue) { if (!queue->input) { return NULL; } if (jack_ringbuffer_read_space (queue->input)) { midi_event_t *ev = g_malloc (sizeof (midi_event_t)); jack_ringbuffer_read (queue->input, (char *) ev, sizeof (midi_event_t)); return ev; } else { return NULL; } } denemo-2.2.0/src/audio/PaxHeaders.19168/jackutil.h0000644000000000000000000000013213135434036016400 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.786648472 30 ctime=1500919914.053315139 denemo-2.2.0/src/audio/jackutil.h0000644000175000017500000000174313135434036020256 0ustar00jjbenhamjjbenham00000000000000/* * jackutil.h * JACK utility functions. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #ifndef JACKUTIL_H #define JACKUTIL_H #include /** * Returns a list of available JACK port names, that is, ports to which our * own input/output ports can be connected. * * If the JACK server is not running or there are no available ports, this * function returns NULL. * * @param midi if TRUE returns MIDI ports, otherwise audio ports. * @param output if TRUE returns output ports, otherwise input ports. */ GList *get_jack_ports (gboolean midi, gboolean output); /** * Frees a list returned by get_jack_ports() */ void free_jack_ports (GList * list); #endif // JACKUTIL_H denemo-2.2.0/src/audio/PaxHeaders.19168/jackbackend.h0000644000000000000000000000013213135434036017012 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.786648472 30 ctime=1500919914.053315139 denemo-2.2.0/src/audio/jackbackend.h0000644000175000017500000000110413135434036020657 0ustar00jjbenhamjjbenham00000000000000/* * jackbackend.h * JACK audio and MIDI backends. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #ifndef JACKBACKEND_H #define JACKBACKEND_H #include "audio/audiointerface.h" extern backend_t jack_audio_backend; extern backend_t jack_midi_backend; #endif // JACKBACKEND_H denemo-2.2.0/src/audio/PaxHeaders.19168/pitchrecog.h0000644000000000000000000000013213135434036016721 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.786648472 30 ctime=1500919914.089981805 denemo-2.2.0/src/audio/pitchrecog.h0000644000175000017500000000030313135434036020566 0ustar00jjbenhamjjbenham00000000000000#ifndef __PITCHRECOG_H__ #define __PITCHRECOG_H__ int set_silence (double shh); int set_threshold (double thresh); int set_smoothing (double smooth); int set_onset_type (unsigned onset); #endifdenemo-2.2.0/src/audio/PaxHeaders.19168/fluid.c0000644000000000000000000000013213135434036015670 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.793315139 30 ctime=1500919914.049981805 denemo-2.2.0/src/audio/fluid.c0000644000175000017500000001524213135434036017545 0ustar00jjbenhamjjbenham00000000000000#ifdef _HAVE_FLUIDSYNTH_ /* * fluid.c * JACK audio and MIDI backends. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #include "audio/fluid.h" #include "audio/midi.h" #include "audio/pitchentry.h" #include #include #include "core/utils.h" static fluid_settings_t *settings = NULL; static fluid_synth_t *synth = NULL; static int sfont_id = -1; void reset_synth_channels (void) { // select bank 0 and preset 0 in the soundfont we just loaded on channel 0 fluid_synth_program_select (synth, 0, sfont_id, 0, 0); gint i; for (i = 0; i < 16; i++) fluid_synth_program_change (synth, i, 0); if (Denemo.project && Denemo.project->movement) { DenemoMovement *si = Denemo.project->movement; GList *curstaff; for (curstaff = si->thescore; curstaff; curstaff=curstaff->next) { DenemoStaff *curstaffstruct = (DenemoStaff *) curstaff->data;//g_print ("Reset staff program chan %d to prog %d\n", curstaffstruct->midi_channel, curstaffstruct->midi_prognum); fluid_synth_program_change (synth, curstaffstruct->midi_channel, curstaffstruct->midi_prognum); } } if (Denemo.prefs.pitchspellingchannel) fluid_synth_program_change (synth, Denemo.prefs.pitchspellingchannel, Denemo.prefs.pitchspellingprogram); set_tuning (); } int fluidsynth_init (DenemoPrefs * config, unsigned int samplerate) { g_debug ("Starting FLUIDSYNTH"); settings = new_fluid_settings (); if (!settings) { g_warning ("Failed to create the settings"); return -1; } fluid_settings_setnum (settings, "synth.sample-rate", (double) samplerate); fluid_settings_setint (settings, "synth.reverb.active", config->fluidsynth_reverb ? 1 : 0); fluid_settings_setint (settings, "synth.chorus.active", config->fluidsynth_chorus ? 1 : 0); // create the synthesizer synth = new_fluid_synth (settings); if (!synth) { g_warning ("Failed to create the settings"); fluidsynth_shutdown (); return -1; } if(g_file_test(config->fluidsynth_soundfont->str, G_FILE_TEST_EXISTS)) sfont_id = fluid_synth_sfload (synth, config->fluidsynth_soundfont->str, FALSE); if (sfont_id == -1) { g_debug ("Failed to load the user soundfont. Now trying the default soundfont."); gchar *default_soundfont = find_denemo_file(DENEMO_DIR_SOUNDFONTS, "A320U.sf2"); if(default_soundfont) sfont_id = fluid_synth_sfload (synth, default_soundfont, FALSE); g_string_assign (Denemo.prefs.fluidsynth_soundfont, default_soundfont); g_free (default_soundfont); } if (sfont_id == -1) { fluidsynth_shutdown (); return -1; } else { g_message ("The default fluidsynth soundfont has been loaded"); } reset_synth_channels (); return 0; } void fluidsynth_shutdown () { g_debug ("\nStopping FLUIDSYNTH\n"); if (sfont_id != -1) { fluid_synth_sfunload (synth, sfont_id, FALSE); } if (synth) { delete_fluid_synth (synth); } synth = NULL; if (settings) { delete_fluid_settings (settings); } settings = NULL; } void fluidsynth_feed_midi (unsigned char *event_data, size_t event_length) { int channel = (event_data[0] & 0x0f); int type = (event_data[0] & 0xf0); switch (type) { case MIDI_NOTE_ON: { int velocity = ((int) (Denemo.project->movement->master_volume * event_data[2])); if (velocity > 0x7F) velocity = 0x7F; fluid_synth_noteon (synth, channel, event_data[1], velocity); } break; case MIDI_NOTE_OFF: fluid_synth_noteoff (synth, channel, event_data[1]); break; case MIDI_CONTROL_CHANGE: fluid_synth_cc (synth, channel, event_data[1], event_data[2]); break; case MIDI_PROGRAM_CHANGE: fluid_synth_program_change (synth, channel, event_data[1]); break; case MIDI_PITCH_BEND: fluid_synth_pitch_bend (synth, channel, event_data[1] + (event_data[2] << 7)); break; case SYS_EXCLUSIVE_MESSAGE1: //g_debug("length %d\n", event_length); fluid_synth_sysex (synth, (const char*) event_data + 1, event_length - 1, NULL, 0, NULL, FALSE); break; default: g_warning ("MIDI message type %x not handled", type); } } static void fluid_all_notes_off_channel (gint chan) { // fluid_event_all_sounds_off (fluid_event_t *evt, int channel)!!!!!!!!!!! // fluid_event_t evt; // fluid_event_all_notes_off (&evt, chan) gint i; for (i = 0; i < 128; i++) fluid_synth_noteoff (synth, chan, i); } static void fluid_all_notes_off (void) { gint chan; for (chan = 0; chan < 16; chan++) fluid_all_notes_off_channel (chan); } void fluidsynth_all_notes_off () { // FIXME: this call has the potential to cause an xrun and/or disconnect us from JACK //FIXME: this unsets the channel settings for immediate playback (fixed below) and more ...???? //fluid_synth_system_reset(synth); fluid_all_notes_off (); // if(Denemo.prefs.pitchspellingchannel) // fluid_synth_program_change(synth, Denemo.prefs.pitchspellingchannel, Denemo.prefs.pitchspellingprogram); } void fluidsynth_render_audio (unsigned int nframes, float *left_channel, float *right_channel) { //printf("\nsynth == %d, nframes == %d, left_channel == %f right_channel == %f\n",synth, nframes, left_channel, right_channel); fluid_synth_write_float (synth, nframes, left_channel, 0, 1, right_channel, 0, 1); } /** * Select the soundfont to use for playback */ void choose_sound_font (GtkWidget * widget, GtkWidget * fluidsynth_soundfont) { GtkWidget *sf; //GtkFileFilter *filter; sf = gtk_file_chooser_dialog_new (_("Choose SoundFont File"), GTK_WINDOW (Denemo.window), GTK_FILE_CHOOSER_ACTION_OPEN, _("_Cancel"), GTK_RESPONSE_REJECT, _("_Open"), GTK_RESPONSE_ACCEPT, NULL); //TODO Should we filter???? //filter = gtk_file_filter_new (); //gtk_file_filter_set_name (filter, "Soundfont file"); //gtk_file_filter_add_pattern (filter, "*.sf"); //gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (fs), filter); gtk_widget_show_all (sf); if (gtk_dialog_run (GTK_DIALOG (sf)) == GTK_RESPONSE_ACCEPT) { g_string_assign (Denemo.prefs.fluidsynth_soundfont, gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (sf))); /* this will only work for 1 sound font */ gtk_entry_set_text (GTK_ENTRY (fluidsynth_soundfont), Denemo.prefs.fluidsynth_soundfont->str); } gtk_widget_destroy (sf); } #endif //_HAVE_FLUIDSYNTH_ denemo-2.2.0/src/audio/PaxHeaders.19168/pitchrecog.c0000644000000000000000000000013213135434036016714 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.793315139 30 ctime=1500919914.086648472 denemo-2.2.0/src/audio/pitchrecog.c0000644000175000017500000001611313135434036020567 0ustar00jjbenhamjjbenham00000000000000/* * pitchrecog.c * upgraded to AUBIO 4 Paul Brossier 2014 Hacked from aubionotes.c for denemo by Richard Shann (c) 2007 Copyright (C) 2003 Paul Brossier This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifdef _HAVE_PORTAUDIO_ #include "audio/audio.h" #include #include #include #include #include #include #define AUBIO_UNSTABLE 1 #ifdef DISABLE_AUBIO #else #include #include #include "audio/pitchrecog.h" typedef int (*aubio_process_func_t) (smpl_t ** input, smpl_t ** output, int nframes); static void send_noteon (smpl_t pitch, int velo); #define MAX_PITCHES (20) static smpl_t pitches[MAX_PITCHES]; static int usejack = 1; static int usedoubled = 1; /* energy,specdiff,hfc,complexdomain,phase */ static smpl_t threshold = 0.3; static smpl_t silence = -90.; static uint_t buffer_size = 1024; //512; //1024; static uint_t overlap_size = 512; //256; //512; static uint_t samplerate = 44100; static fvec_t *ibuf; static aubio_onset_t *o; static fvec_t *onset; static uint_t isonset; /* pitch objects */ static aubio_pitch_t *p; static fvec_t *pitch; static uint_t median = 6; static fvec_t *note_buffer = NULL; static fvec_t *note_buffer2 = NULL; static smpl_t curlevel = 0.; static smpl_t curnote = 0.; // should not be global //smpl_t newnote = 0.; static uint_t isready = 0; // should not be global, is static within pitchrecog() static void init_aubio (void) { ibuf = new_fvec (overlap_size); { p = new_aubio_pitch ("default", buffer_size * 4, overlap_size, samplerate); aubio_pitch_set_tolerance (p, 0.7); aubio_pitch_set_unit (p, "freq"); if (median) { note_buffer = new_fvec (median); note_buffer2 = new_fvec (median); } } o = new_aubio_onset ("default", buffer_size, overlap_size, samplerate); onset = new_fvec (2); pitch = new_fvec (1); } static void aubio_finish (void) { { send_noteon (curnote, 0); if (median) { if (note_buffer) del_fvec (note_buffer); if (note_buffer2) del_fvec (note_buffer2); } } if (o) del_aubio_onset (o); if (p) del_aubio_pitch (p); if (onset) del_fvec (onset); if (pitch) del_fvec (pitch); aubio_cleanup (); } static volatile int count; static void send_noteon (smpl_t pitch, int velo) { if (velo) if (++count < MAX_PITCHES) pitches[count] = pitch; } /** append new note candidate to the note_buffer and return filtered value. we * need to copy the input array as fvec_median destroy its input data.*/ static void note_append (fvec_t * note_buffer, smpl_t anote) { uint_t i = 0; for (i = 0; i < note_buffer->length - 1; i++) { note_buffer->data[i] = note_buffer->data[i + 1]; } note_buffer->data[note_buffer->length - 1] = anote; return; } static uint_t get_note (fvec_t * note_buffer, fvec_t * note_buffer2) { fvec_copy(note_buffer, note_buffer2); return fvec_median (note_buffer2); } static int Stop; int pitchrecog (float **input, float **output, int nframes) { unsigned int pos = 0; /*frames%dspblocksize */ unsigned int j; /*frames */ if (Stop) return Stop; for (j = 0; j < (unsigned) nframes; j++) { if (usejack) { DENEMO_SAMPLE_TYPE *in = (DENEMO_SAMPLE_TYPE *) * input; ibuf->data[pos] = *(in + j); /* need threshold higher - say 0.5 to avoid repeated note detection when using this higher precision data */ } /*when pos reaches overlap size it is time for fft to look for a note */ if (pos == overlap_size - 1) { /* block loop */ aubio_onset_do (o, ibuf, onset); aubio_pitch_do (p, ibuf, pitch); isonset = onset->data[0]; if (median) { note_append (note_buffer, pitch->data[0]); } /* curlevel is negatif or 1 if silence */ curlevel = aubio_level_detection (ibuf, silence); if (isonset) { if (curlevel == 1) { isonset = 0; if (median) isready = 0; /* send note off */ send_noteon (curnote, 0); } else { // not silent if (median) { isready = 1; } else { /* kill old note */ send_noteon (curnote, 0); /* get and send new one */ curnote = pitch->data[0]; send_noteon (curnote, 1); } } } else { //not onset if (median) { if (isready > 0) isready++; if (isready == median) { /* kill old note */ send_noteon (curnote, 0); curnote = get_note (note_buffer, note_buffer2); /* get and send new one */ if (curnote > 45) { //FIXME send_noteon (curnote, 1); } } } // if median } /* end of block loop */ pos = -1; /* so it will be zero next j loop */ } pos++; } return Stop; } extern int pa_main (aubio_process_func_t process_func); #define START init_aubio();return pa_main(pitchrecog); #define STOP (void)pa_main(NULL);aubio_finish(); int set_silence (double shh) { silence = shh; return 0; } int set_threshold (double thresh) { /* threshold requires memory allocation */ STOP threshold = thresh; START} int set_smoothing (double smooth) { /* median requires memory allocation */ STOP median = (unsigned) smooth; START} int set_onset_type (unsigned onset) { /* changing onset type requires memory allocation */ #if 0 if (onset >= sizeof (onset_types) / sizeof (aubio_onsetdetection_type)) return 0; STOP type_onset = onset_types[onset]; #endif START} int initialize_pitch_recognition (void) { Stop = 0; init_aubio (); return pa_main (pitchrecog); } int terminate_pitch_recognition (void) { g_print ("Terminating portaudio and aubio\n"); (void) pa_main (NULL); aubio_finish (); return 0; } double get_pitch (void) { double ret = 0.0; if (count) { //printf("count is %d\n", count); ret = pitches[count]; count = 0; } return ret; } void store_pitch (double pitch) { send_noteon (pitch, 1); // return count #include #include #include #include typedef jack_default_audio_sample_t sample_t; typedef jack_nframes_t nframes_t; static char const *JACK_CLIENT_NAME = "denemo"; static jack_client_t *client = NULL; static jack_port_t **audio_in_ports = NULL; static jack_port_t **audio_out_ports = NULL; static jack_port_t **midi_in_ports = NULL; static jack_port_t **midi_out_ports = NULL; static size_t num_audio_in_ports; static size_t num_audio_out_ports; static size_t num_midi_in_ports; static size_t num_midi_out_ports; static gboolean audio_initialized = FALSE; static gboolean midi_initialized = FALSE; static nframes_t playback_frame = 0; static gboolean reset_audio = FALSE; static gboolean reset_midi = FALSE; static double nframes_to_seconds (nframes_t nframes) { return nframes / (double) jack_get_sample_rate (client); } static nframes_t seconds_to_nframes (double seconds) { return (nframes_t) (jack_get_sample_rate (client) * seconds); } static void process_audio (nframes_t nframes) { size_t i; sample_t *port_buffers[num_audio_out_ports]; for (i = 0; i < num_audio_out_ports; ++i) { port_buffers[i] = jack_port_get_buffer (audio_out_ports[i], nframes); //memset(port_buffers[i], 0, nframes * sizeof(sample_t)); jack_midi_clear_buffer (port_buffers[i]); } #ifdef _HAVE_FLUIDSYNTH_ if (reset_audio) { fluidsynth_all_notes_off (); reset_audio = FALSE; return; } unsigned char event_data[3]; size_t event_length; double event_time; double until_time = nframes_to_seconds (playback_frame + nframes); while (read_event_from_queue (AUDIO_BACKEND, event_data, &event_length, &event_time, until_time)) { // FIXME: we can't pass an exact frame/time to fluidsynth, can we...? fluidsynth_feed_midi (event_data, event_length); } assert (num_audio_out_ports >= 2); fluidsynth_render_audio (nframes, port_buffers[0], port_buffers[1]); #endif } static void process_midi_input (nframes_t nframes) { size_t i, n; jack_midi_event_t ev; for (i = 0; i < num_midi_in_ports; ++i) { void *port_buffer = jack_port_get_buffer (midi_in_ports[i], nframes); size_t num_events = jack_midi_get_event_count (port_buffer); for (n = 0; n < num_events; ++n) { jack_midi_event_get (&ev, port_buffer, n); input_midi_event (MIDI_BACKEND, i, ev.buffer); } } } static void process_midi_output (nframes_t nframes) { size_t i; void *port_buffers[num_midi_out_ports]; for (i = 0; i < num_midi_out_ports; ++i) { port_buffers[i] = jack_port_get_buffer (midi_out_ports[i], nframes); jack_midi_clear_buffer (port_buffers[i]); } if (reset_midi) { // send all-notes-off on all ports and on all channels for (i = 0; i < num_midi_out_ports; ++i) { int n; for (n = 0; n < 16; ++n) { unsigned char event_data[] = { MIDI_CONTROL_CHANGE | n, 123, 0 }; jack_midi_event_write (port_buffers[i], 0, event_data, sizeof (event_data)); } } reset_midi = FALSE; return; } unsigned char event_data[3]; size_t event_length; double event_time; double until_time = nframes_to_seconds (playback_frame + nframes); while (read_event_from_queue (MIDI_BACKEND, event_data, &event_length, &event_time, until_time)) { nframes_t frame; if (event_time == 0.0) { frame = 0; } else { frame = seconds_to_nframes (event_time) - playback_frame; } // FIXME: use correct port jack_midi_event_write (port_buffers[0], frame, event_data, event_length); } } static int process_callback (nframes_t nframes, void *arg) { if (g_atomic_int_get (&audio_initialized)) { process_audio (nframes); } if (g_atomic_int_get (&midi_initialized)) { process_midi_input (nframes); process_midi_output (nframes); } if (is_playing ()) { playback_frame += nframes; update_playback_time (TIMEBASE_PRIO_AUDIO, nframes_to_seconds (playback_frame)); } return 0; } static void shutdown_callback (void *arg) { g_warning ("*** shut down by JACK! ***"); g_atomic_int_set (&audio_initialized, FALSE); g_atomic_int_set (&midi_initialized, FALSE); } static int initialize_client (char const *name) { if (client) { // already initialized return 0; } if ((client = jack_client_open (name, JackNullOption, NULL)) == NULL) { g_warning ("Can't connect to jack server"); return -1; } jack_set_process_callback (client, &process_callback, NULL); jack_on_shutdown (client, &shutdown_callback, NULL); if (jack_activate (client)) { g_warning ("Can't activate jack client"); return -1; } return 0; } static int destroy_client () { if (g_atomic_int_get (&audio_initialized) || g_atomic_int_get (&midi_initialized)) { // don't destroy client if someone's still using it return 0; } if (client) { jack_deactivate (client); jack_client_close (client); client = NULL; } return 0; } static int unregister_audio_ports () { jack_port_t **p; for (p = audio_in_ports; *p != NULL; ++p) { jack_port_unregister (client, *p); } for (p = audio_out_ports; *p != NULL; ++p) { jack_port_unregister (client, *p); } g_free (audio_in_ports); g_free (audio_out_ports); audio_in_ports = NULL; audio_out_ports = NULL; return 0; } static int register_audio_ports (int num_in_ports, char const *in_portnames[], int num_out_ports, char const *out_portnames[]) { int n; // allocate one more item as an end-of-array marker audio_in_ports = g_new0 (jack_port_t *, num_in_ports + 1); audio_out_ports = g_new0 (jack_port_t *, num_out_ports + 1); num_audio_in_ports = num_in_ports; num_audio_out_ports = num_out_ports; for (n = 0; n < num_in_ports; ++n) { audio_in_ports[n] = jack_port_register (client, in_portnames[n], JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0); if (audio_in_ports[n] == NULL) { goto err; } } for (n = 0; n < num_out_ports; ++n) { audio_out_ports[n] = jack_port_register (client, out_portnames[n], JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); if (audio_out_ports[n] == NULL) { goto err; } } return 0; err: unregister_audio_ports (); return -1; } static int connect_audio_ports (char const *connect_ports_l, char const *connect_ports_r) { if (jack_connect (client, jack_port_name (audio_out_ports[0]), connect_ports_l)) { return -1; } if (jack_connect (client, jack_port_name (audio_out_ports[1]), connect_ports_r)) { return -1; } return 0; } static int unregister_midi_ports () { jack_port_t **p; for (p = midi_in_ports; *p != NULL; ++p) { jack_port_unregister (client, *p); } for (p = midi_out_ports; *p != NULL; ++p) { jack_port_unregister (client, *p); } g_free (midi_in_ports); g_free (midi_out_ports); midi_in_ports = NULL; midi_out_ports = NULL; return 0; } static int register_midi_ports (int num_in_ports, char const *in_portnames[], int num_out_ports, char const *out_portnames[]) { int n; // allocate one more item as an end-of-array marker midi_in_ports = g_new0 (jack_port_t *, num_in_ports + 1); midi_out_ports = g_new0 (jack_port_t *, num_out_ports + 1); num_midi_in_ports = num_in_ports; num_midi_out_ports = num_out_ports; for (n = 0; n < num_in_ports; ++n) { midi_in_ports[n] = jack_port_register (client, in_portnames[n], JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0); if (midi_in_ports[n] == NULL) { goto err; } } for (n = 0; n < num_out_ports; ++n) { midi_out_ports[n] = jack_port_register (client, out_portnames[n], JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput, 0); if (midi_out_ports[n] == NULL) { goto err; } } return 0; err: unregister_midi_ports (); return -1; } static int connect_midi_ports (char const *connect_input_port, char const *connect_output_port) { int ret = 0; if (strlen (connect_input_port)) { if (jack_connect (client, connect_input_port, jack_port_name (midi_in_ports[0]))) { ret = -1; } } if (strlen (connect_output_port)) { if (jack_connect (client, jack_port_name (midi_out_ports[0]), connect_output_port)) { ret = -1; } } return ret; } static int jack_audio_initialize (DenemoPrefs * config) { g_message ("Initializing JACK audio backend"); if (initialize_client (JACK_CLIENT_NAME)) { return -1; } #ifdef _HAVE_FLUIDSYNTH_ if (fluidsynth_init (config, jack_get_sample_rate (client))) { return -1; } #endif // mono input, stereo output char const *in_portnames[] = { "in_1" }; char const *out_portnames[] = { "out_1", "out_2" }; if (register_audio_ports (1, in_portnames, 2, out_portnames)) { return -1; } if (connect_audio_ports (config->jack_connect_ports_l->str, config->jack_connect_ports_r->str)) { g_warning ("Could not connect audio output ports"); } g_atomic_int_set (&audio_initialized, TRUE); return 0; } static int jack_audio_destroy () { g_message ("Destroying JACK audio backend"); if (g_atomic_int_get (&audio_initialized)) { g_atomic_int_set (&audio_initialized, FALSE); unregister_audio_ports (); } destroy_client (); #ifdef _HAVE_FLUIDSYNTH_ fluidsynth_shutdown (); #endif return 0; } static int jack_audio_reconfigure (DenemoPrefs * config) { jack_audio_destroy (); return jack_audio_initialize (config); } static int jack_audio_start_playing () { playback_frame = seconds_to_nframes (get_playback_time ()); return 0; } static int jack_audio_stop_playing () { reset_audio = TRUE; return 0; } static int jack_audio_panic () { reset_audio = TRUE; return 0; } static int jack_midi_initialize (DenemoPrefs * config) { g_message ("Initializing JACK MIDI backend"); if (initialize_client (JACK_CLIENT_NAME)) { return -1; } // FIXME: get port names from config char const *in_portnames[] = { "midi_in_1" }; char const *out_portnames[] = { "midi_out_1" }; if (register_midi_ports (1, in_portnames, 1, out_portnames)) { return -1; } if (connect_midi_ports (config->jack_connect_midi_in_port->str, config->jack_connect_midi_out_port->str)) { g_warning ("Could not connect MIDI port(s)"); } g_atomic_int_set (&midi_initialized, TRUE); return 0; } static int jack_midi_destroy () { g_message ("Destroying JACK MIDI backend"); if (g_atomic_int_get (&midi_initialized)) { g_atomic_int_set (&midi_initialized, FALSE); unregister_midi_ports (); } destroy_client (); return 0; } static int jack_midi_reconfigure (DenemoPrefs * config) { g_message ("Reconfiguring JACK MIDI backend"); jack_midi_destroy (); jack_midi_initialize (config); return 0; } static int jack_midi_start_playing () { playback_frame = seconds_to_nframes (get_playback_time ()); return 0; } static int jack_midi_stop_playing () { reset_midi = TRUE; return 0; } static int jack_midi_panic () { reset_midi = TRUE; return 0; } backend_t jack_audio_backend = { jack_audio_initialize, jack_audio_destroy, jack_audio_reconfigure, jack_audio_start_playing, jack_audio_stop_playing, jack_audio_panic, }; backend_t jack_midi_backend = { jack_midi_initialize, jack_midi_destroy, jack_midi_reconfigure, jack_midi_start_playing, jack_midi_stop_playing, jack_midi_panic, }; #endif //_HAVE_JACK_ denemo-2.2.0/src/audio/PaxHeaders.19168/playback.h0000644000000000000000000000013213135434036016360 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.826648472 30 ctime=1500919914.093315138 denemo-2.2.0/src/audio/playback.h0000644000175000017500000000067413135434036020240 0ustar00jjbenhamjjbenham00000000000000#ifndef PLAYBACKH #define PLAYBACKH #include #include "denemo/denemo_types.h" gchar *get_midi_audio_pointer (gchar * audio_device); void set_tempo (void); void ext_midi_playback (DenemoAction * action, DenemoScriptParam * param); void stop_midi_playback (DenemoAction * action, DenemoScriptParam* param); void playback_panic (void); void PlaybackRangeDialog (); void MasterVolumeDialog (); void restart_play(); #endif //PLAYBACKH denemo-2.2.0/src/audio/PaxHeaders.19168/audiointerface.c0000644000000000000000000000013213135434036017547 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.826648472 30 ctime=1500919914.043315139 denemo-2.2.0/src/audio/audiointerface.c0000644000175000017500000005010513135434036021421 0ustar00jjbenhamjjbenham00000000000000/* * audiointerface.h * Interface definition for audio and MIDI backends. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #include "audio/audiointerface.h" #include "audio/eventqueue.h" #include "audio/dummybackend.h" #include "source/sourceaudio.h" #ifdef _HAVE_JACK_ #include "audio/jackbackend.h" #endif #ifdef _HAVE_PORTAUDIO_ #include "audio/portaudiobackend.h" #endif #ifdef _HAVE_PORTMIDI_ #include "audio/portmidibackend.h" #endif #ifdef _HAVE_ALSA_ #include "audio/alsabackend.h" #endif #include "audio/midi.h" #include "audio/audio.h" #include "command/commandfuncs.h" #include "display/draw.h" #include #include #include static backend_t *backends[NUM_BACKENDS] = { NULL }; #define PLAYBACK_QUEUE_SIZE 1024 #define IMMEDIATE_QUEUE_SIZE 32 #define INPUT_QUEUE_SIZE 256 #define MIXER_QUEUE_SIZE 50000 #define RUBBERBAND_QUEUE_SIZE 50000 // the time in µs after which the queue thread wakes up, whether it has been // signalled or not #define QUEUE_TIMEOUT 100000 static event_queue_t *event_queues[NUM_BACKENDS] = { NULL }; static GThread *queue_thread; static GCond queue_cond; static GMutex queue_mutex; static double playback_start_time; // FIXME: synchronize access from multiple threads static volatile double playback_time; static gboolean quit_thread; static gboolean signalled = FALSE; static gboolean must_redraw_all = FALSE; static gboolean must_redraw_playhead = FALSE; static smf_event_t *redraw_event; #ifndef _HAVE_RUBBERBAND_ gdouble get_playback_speed (void) { return 1.0; //Rubberband can do slowdown, backend should define its own version of this } #endif static gpointer queue_thread_func (gpointer data); static void signal_queue (); static backend_t * get_backend (backend_type_t backend) { if (backend == DEFAULT_BACKEND) { // FIXME: this should be configurable //return backends[MIDI_BACKEND]; return backends[AUDIO_BACKEND]; } else { return backends[backend]; } } static event_queue_t * get_event_queue (backend_type_t backend) { if (backend == DEFAULT_BACKEND) { // FIXME // return event_queues[MIDI_BACKEND]; return event_queues[AUDIO_BACKEND]; } else { return event_queues[backend]; } } static int initialize_audio (DenemoPrefs * config) { char const *driver = config->audio_driver->str; g_message ("Audio driver is '%s'", driver); if (strcmp (driver, "jack") == 0) { #ifdef _HAVE_JACK_ backends[AUDIO_BACKEND] = &jack_audio_backend; #else g_warning ("JACK backend is not enabled"); #endif } else if (strcmp (driver, "portaudio") == 0) { #ifdef _HAVE_PORTAUDIO_ backends[AUDIO_BACKEND] = &portaudio_backend; #else g_warning ("PortAudio backend is not enabled"); #endif } else if (strcmp (driver, "dummy") == 0) { // do nothing } else { g_warning ("Unknown audio backend '%s'", driver); } if (backends[AUDIO_BACKEND] == NULL) { backends[AUDIO_BACKEND] = &dummy_audio_backend; } //event_queues[AUDIO_BACKEND] = event_queue_new(PLAYBACK_QUEUE_SIZE, IMMEDIATE_QUEUE_SIZE, 0); int ret = get_backend (AUDIO_BACKEND)->initialize (config); if (ret) { g_warning ("Initializing audio backend '%s' failed, falling back to dummy", driver); backends[AUDIO_BACKEND] = &dummy_audio_backend; ret = get_backend (AUDIO_BACKEND)->initialize (config); } return ret; } static int initialize_midi (DenemoPrefs * config) { char const *driver = config->midi_driver->str; g_message ("MIDI driver is '%s'", driver); if (strcmp (driver, "jack") == 0) { #ifdef _HAVE_JACK_ backends[MIDI_BACKEND] = &jack_midi_backend; #else g_warning ("JACK backend is not enabled"); #endif } else if (strcmp (driver, "portmidi") == 0) { #ifdef _HAVE_PORTMIDI_ backends[MIDI_BACKEND] = &portmidi_backend; #else g_warning ("PortMidi backend is not enabled"); #endif } else if (strcmp (driver, "alsa") == 0) { #ifdef _HAVE_ALSA_ backends[MIDI_BACKEND] = &alsa_seq_midi_backend; #else g_warning ("ALSA backend is not enabled"); #endif } else if (strcmp (driver, "dummy") == 0) { // do nothing } else { g_warning ("Unknown MIDI backend '%s'", driver); } if (backends[MIDI_BACKEND] == NULL) { backends[MIDI_BACKEND] = &dummy_midi_backend; } //event_queues[MIDI_BACKEND] = event_queue_new(PLAYBACK_QUEUE_SIZE, IMMEDIATE_QUEUE_SIZE, INPUT_QUEUE_SIZE); int ret = get_backend (MIDI_BACKEND)->initialize (config); if (ret) { g_warning ("Initializing MIDI backend '%s' failed, falling back to dummy", driver); backends[MIDI_BACKEND] = &dummy_midi_backend; ret = get_backend (MIDI_BACKEND)->initialize (config); } return ret; } gboolean have_midi (void) { return strcmp (Denemo.prefs.portmidi_input_device->str, "default") && (backends[MIDI_BACKEND] != &dummy_midi_backend); } int audio_initialize (DenemoPrefs * config) { queue_thread = NULL; quit_thread = FALSE; redraw_event = NULL; //&queue_cond = g_cond_new (); since GLib 2.32 no longer needed, static declaration is enough //&queue_mutex = g_mutex_new (); since GLib 2.32 no longer needed, static declaration is enough event_queues[AUDIO_BACKEND] = event_queue_new (PLAYBACK_QUEUE_SIZE, IMMEDIATE_QUEUE_SIZE, 0, MIXER_QUEUE_SIZE #ifdef _HAVE_RUBBERBAND_ , RUBBERBAND_QUEUE_SIZE #endif ); event_queues[MIDI_BACKEND] = event_queue_new (PLAYBACK_QUEUE_SIZE, IMMEDIATE_QUEUE_SIZE, INPUT_QUEUE_SIZE, 0 #ifdef _HAVE_RUBBERBAND_ , 0 #endif ); if (initialize_audio (config) || initialize_midi(config)) { audio_shutdown (); return -1; } queue_thread = g_thread_try_new ("Queue Thread", queue_thread_func, NULL, NULL); if (queue_thread == NULL) { audio_shutdown(); return -1; } return 0; } static int destroy (backend_type_t backend) { get_backend (backend)->destroy (); backends[backend] = NULL; event_queue_free (event_queues[backend]); return 0; } int audio_shutdown () { g_atomic_int_set (&quit_thread, TRUE); if (queue_thread) { signal_queue (); g_thread_join (queue_thread); } if (get_backend (AUDIO_BACKEND)) { destroy (AUDIO_BACKEND); } if (get_backend (MIDI_BACKEND)) { destroy (MIDI_BACKEND); } //g_cond_free (&queue_cond); since GLib 2.32 no longer needed, static declaration is enough //g_mutex_free (&queue_mutex); since GLib 2.32 no longer needed, static declaration is enough return 0; } static gboolean do_queue_draw (void) { draw_score_area(); return FALSE; } static gboolean redraw_all_callback (gpointer data) { g_main_context_invoke (NULL, (GSourceFunc)do_queue_draw, NULL); return FALSE; } static gboolean redraw_playhead_callback (gpointer data) { DenemoMovement *si = Denemo.project->movement; smf_event_t *event = (smf_event_t *) data; si->playingnow = event->user_pointer; si->playhead = event->time_seconds; g_main_context_invoke (NULL, (GSourceFunc)do_queue_draw, NULL); return FALSE; } static gboolean do_handle_midi_event (gchar *data) { handle_midi_event (data); g_free(data); return FALSE; } static gboolean handle_midi_event_callback (gpointer data) { midi_event_t *ev = (midi_event_t *) data; // TODO: handle backend type and port gchar *evdata = g_malloc (sizeof (ev->data)); memcpy (evdata, ev->data, sizeof (ev->data)); g_main_context_invoke (NULL, (GSourceFunc)do_handle_midi_event, evdata); g_free (ev); return FALSE; } static void reset_playback_queue (backend_type_t backend) { if (get_event_queue (backend)) { event_queue_reset_playback (get_event_queue (backend)); } } static void reset_mixer_queue (backend_type_t backend) { if (get_event_queue (backend)) { event_queue_reset_mixer (get_event_queue (backend)); } } #ifdef _HAVE_RUBBERBAND_ static void reset_rubberband_queue (backend_type_t backend) { if (get_event_queue (backend)) { event_queue_reset_rubberband (get_event_queue (backend)); } } #endif static gboolean write_event_to_queue (backend_type_t backend, smf_event_t * event) { return event_queue_write_playback (get_event_queue (backend), event); } static gboolean write_sample_to_mixer_queue (backend_type_t backend, float *sample) { return event_queue_write_mixer (get_event_queue (backend), sample); } #ifdef _HAVE_RUBBERBAND_ gboolean write_samples_to_rubberband_queue (backend_type_t backend, float *sample, gint num) {gint i; for(i=0;i get_end_time ()) { if (is_playing () && thetime > 0.0) // this is the same value rather than the global, but what the check is for I do not know { midi_stop (); } } return event_queue_read_output (get_event_queue (backend), event_buffer, event_length, event_time, until_time); } gboolean read_event_from_mixer_queue (backend_type_t backend, unsigned char *event_buffer, size_t * event_length) { return mixer_queue_read_output (get_event_queue (backend), event_buffer, event_length); } #ifdef _HAVE_RUBBERBAND_ gboolean read_event_from_rubberband_queue (backend_type_t backend, unsigned char *event_buffer, size_t * event_length) { return rubberband_queue_read_output (get_event_queue (backend), event_buffer, event_length); } #endif GMutex smfmutex;// = G_STATIC_MUTEX_INIT; static gpointer queue_thread_func (gpointer data) { g_mutex_lock (&queue_mutex); for (;;) { if (!g_atomic_int_get (&signalled)) { gint64 end_time = g_get_monotonic_time () + (QUEUE_TIMEOUT * G_TIME_SPAN_SECOND)/1000000; g_cond_wait_until (&queue_cond, &queue_mutex, end_time); signalled = FALSE; } if (g_atomic_int_get (&quit_thread)) { g_message ("That's it, I quit!"); break; } // TODO: audio capture midi_event_t *ev; while ((ev = event_queue_read_input (get_event_queue (MIDI_BACKEND))) != NULL) { g_idle_add_full (G_PRIORITY_HIGH_IDLE, handle_midi_event_callback, (gpointer) ev, NULL); } if (is_playing ()) { smf_event_t *event; double until_time = playback_time + 5.0; //printf("playback_time=%f, until_time=%f\n", playback_time, until_time); g_mutex_lock (&smfmutex); while ((event = get_smf_event (until_time))) { write_event_to_queue (AUDIO_BACKEND, event);//g_print ("queue gets 0x%hhX 0x%hhX 0x%hhX\n", *(event->midi_buffer+0), *(event->midi_buffer+1), *(event->midi_buffer+2)); write_event_to_queue (MIDI_BACKEND, event); } g_mutex_unlock (&smfmutex); } if (audio_is_playing ()) { float sample[2]; //two channels assumed FIXME //FIXME I think this will drop samples if they can't be put in the queue, should find if there is space for a sample before getting it. #ifdef DISABLE_AUBIO #else while (get_audio_sample (sample) && write_sample_to_mixer_queue (AUDIO_BACKEND, sample)) ; #endif } if (g_atomic_int_get (&must_redraw_all)) { g_atomic_int_set (&must_redraw_all, FALSE); g_atomic_int_set (&must_redraw_playhead, FALSE); g_idle_add_full (G_PRIORITY_HIGH_IDLE, redraw_all_callback, NULL, NULL); } if (g_atomic_int_get (&must_redraw_playhead)) { g_atomic_int_set (&must_redraw_playhead, FALSE); g_idle_add_full (G_PRIORITY_HIGH_IDLE, redraw_playhead_callback, (gpointer) redraw_event, NULL); } } g_mutex_unlock (&queue_mutex); return NULL; } static void signal_queue () { g_mutex_lock (&queue_mutex); g_atomic_int_set (&signalled, TRUE); g_cond_signal (&queue_cond); g_mutex_unlock (&queue_mutex); } static gboolean try_signal_queue () { if (g_mutex_trylock (&queue_mutex)) { g_atomic_int_set (&signalled, TRUE); g_cond_signal (&queue_cond); g_mutex_unlock (&queue_mutex); return TRUE; } else { return FALSE; } } static gboolean time_reset = FALSE; void update_playback_time (backend_timebase_prio_t prio, double new_time) { if (!((prio == TIMEBASE_PRIO_AUDIO) || (prio == TIMEBASE_PRIO_MIDI && get_backend (AUDIO_BACKEND) == &dummy_audio_backend) || (get_backend (AUDIO_BACKEND) == &dummy_audio_backend && get_backend (MIDI_BACKEND) == &dummy_midi_backend))) { // ignore new playback time if another backend has higher priority return; } if(time_reset) { time_reset = FALSE; return; } if (new_time != playback_time) { playback_time = new_time; // midi_play tries to set playback_time, which then gets overriden by the call in the portaudio callback. // if the lock fails, the playback time update will be delayed until the // queue thread wakes up on its own if (!try_signal_queue ()) { ;//this is continuously emitted by windows which has debug on. g_debug ("Couldn't signal playback time update to queue"); } } } double get_playback_time (void) { return playback_time; } void midi_play (gchar * callback) { generate_midi (); reset_playback_queue (AUDIO_BACKEND); reset_playback_queue (MIDI_BACKEND); g_message ("Starting playback"); start_playing (callback); do {//FIXME, this is a crude attempt to get the playback_time set without the callback from portaudio re-writing it. playback_time = playback_start_time; time_reset = TRUE; playback_time = playback_start_time; get_backend (AUDIO_BACKEND)->start_playing ();// this must pick up the playback_start_time, which won't happen if an interrrupt has occurred meanwhile. } while(playback_time != playback_start_time); g_message ("Starting playback at %f", playback_start_time); get_backend (MIDI_BACKEND)->start_playing (); } void audio_play (void) { reset_mixer_queue (AUDIO_BACKEND); #ifdef _HAVE_RUBBERBAND_ reset_rubberband_queue (AUDIO_BACKEND); #endif playback_start_time = get_start_time (); //g_debug ("starting audio playback at %f\n", playback_start_time); playback_time = playback_start_time; } void midi_stop (void) { g_message ("Stopping playback"); get_backend (AUDIO_BACKEND)->stop_playing (); get_backend (MIDI_BACKEND)->stop_playing (); stop_playing (); #ifdef DISABLE_AUBIO #else stop_audio_playing (); #endif reset_playback_queue (AUDIO_BACKEND); reset_playback_queue (MIDI_BACKEND); reset_mixer_queue (AUDIO_BACKEND); #ifdef _HAVE_RUBBERBAND_ reset_rubberband_queue (AUDIO_BACKEND); #endif gtk_widget_queue_draw (Denemo.playbackview); } #define MIDI_EOX (0xF7) int play_midi_event (backend_type_t backend, int port, unsigned char *buffer) { if(Denemo.non_interactive) return TRUE; guchar ev[1 + 255]; /* 1 length byte plus up to 255 data bytes */ gint i = 3; #ifndef _HAVE_JACK_ if (buffer[0] == SYS_EXCLUSIVE_MESSAGE1) { for (i = 0; i < 255; i++) if (buffer[i] == MIDI_EOX) break; if (i == 255) return FALSE; } #endif *ev = i; memcpy (ev + 1, buffer, i);//g_print (" midibytes 0x%hhX 0x%hhX 0x%hhX\n", *(buffer+0), *(buffer+1), *(buffer+2)); return event_queue_write_immediate (get_event_queue (backend), ev, i + 1); } static gboolean play_note_noteoff_callback (gpointer data) { backend_type_t backend = (((intptr_t) data) >> 24); int port = (((intptr_t) data) >> 16) & 0xff; int channel = (((intptr_t) data) >> 8) & 0xff; int key = ((intptr_t) data) & 0xff; unsigned char buffer[] = { MIDI_NOTE_OFF | channel, key, 0 }; play_midi_event (backend, port, buffer); return FALSE; } int play_note (backend_type_t backend, int port, int channel, int key, int duration, int volume) { if(Denemo.non_interactive) return -1; unsigned char buffer[] = { MIDI_NOTE_ON | channel, key, (volume ? volume : 127) * Denemo.project->movement->master_volume }; int r = play_midi_event (backend, port, buffer); // XXX this limits the number of ports to 256... gpointer data = (gpointer) (intptr_t) (backend << 24 | port << 16 | channel << 8 | key); g_timeout_add (duration, play_note_noteoff_callback, data); return r; } int play_notes (backend_type_t backend, int port, int channel, chord * chord_to_play) { if (chord_to_play->notes) { GList *g; for (g = chord_to_play->notes; g; g = g->next) { note *n = g->data; /* Because mid_c_offset is a measure of notes and we need a measure of * half-steps, this array will help */ const gint key_offset[] = { -10, -8, -7, -5, -3, -1, 0, 2, 4, 5, 7, 9, 11 }; gint offset = n->mid_c_offset; /* 60 is middle-C in MIDI keys */ gchar key = 60 + 12 * (offset / 7) + key_offset[offset % 7 + 6]; key += n->enshift; // FIXME play_note (backend, port, channel, key, 200, 127); } } return 0; } /* give audible feedback for entering a rhythmic element */ static gint rhythm_sounds[] = { 41, 48, 64, 62, 60, 70, 81, 69, 79 }; int rhythm_feedback (backend_type_t backend, gint duration, gboolean rest, gboolean dot) { int key; if (dot) play_note (backend, 0, 9, 67, 100, 60 * Denemo.project->movement->master_volume); else play_note (backend, 0, 9, rhythm_sounds[duration], rest ? 100 : 200, 127 * Denemo.project->movement->master_volume); //add extra sound effect for rests if (rest) play_note (backend, 0, 9, 46, 300, 127 * Denemo.project->movement->master_volume); while ((key = GPOINTER_TO_INT( g_queue_pop_head (Denemo.project->pending_midi)) )) play_note (backend, 0, 9, key, 300, 127 * Denemo.project->movement->master_volume); //g_debug("playing %d %d\n", rhythm_sounds[duration], (60/(4*Denemo.project->movement->tempo*(1<panic (); } int panic_all (void) { backend_type_t n; for (n = 0; n < NUM_BACKENDS; ++n) { panic (n); } return 0; } void input_midi_event (backend_type_t backend, int port, unsigned char *buffer) { midi_event_t ev; ev.backend = backend; ev.port = port; // FIXME: size might be less than 3 memcpy (&ev.data, buffer, 3); // normalize events: replace note-on with zero velocity by note-off if ((ev.data[0] & 0xf0) == MIDI_NOTE_ON && ev.data[2] == 0) { ev.data[0] = (ev.data[0] & 0x0f) | MIDI_NOTE_OFF; } event_queue_write_input (get_event_queue (backend), &ev); // if the lock fails, processing of the event will be delayed until the // queue thread wakes up on its own if (!try_signal_queue ()) { g_debug ("Couldn't signal MIDI event input to queue"); } } void queue_redraw_all () { g_atomic_int_set (&must_redraw_all, TRUE); if (!try_signal_queue ()) { g_debug ("Couldn't signal redraw request to queue"); } } void queue_redraw_playhead (smf_event_t * event) { g_atomic_int_set (&must_redraw_playhead, TRUE); redraw_event = event; if (!try_signal_queue ()) { g_debug ("Couldn't signal redraw request to queue"); } } // FIXME: not quite sure what to do with these yet // from fluid.c void advance_time (gdouble seconds) { } #if 0 // from audiocapture.c int pa_main (AubioCallback * fn) { return 0; } int init_audio_out () { return 0; } int collect_data_for_tuning (int ok) { return 0; } double determine_frequency () { return 0.0; } void set_frequency_smoothing (double fraction) { } void setTuningTarget (double pitch) { } #endif denemo-2.2.0/src/audio/PaxHeaders.19168/portmidiutil.h0000644000000000000000000000013213135434036017317 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.853315139 30 ctime=1500919914.063315139 denemo-2.2.0/src/audio/portmidiutil.h0000644000175000017500000000220713135434036021171 0ustar00jjbenhamjjbenham00000000000000/* * portmidiutil.h * PortMidi utility functions. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #ifndef PORTMIDIUTIL_H #define PORTMIDIUTIL_H #include #include /** * A wrapper around Pm_Initialize() that may be called more than once. */ PmError Pm_InitializeWrapper (); /** * A wrapper around Pm_Terminate() that may be called more than once. */ PmError Pm_TerminateWrapper (); /** * Returns a list of available PortMidi device names. * * @param output if TRUE returns output ports, otherwise input ports. */ GList *get_portmidi_devices (gboolean output); /** * Frees a list returned by get_portmidi_devices() */ void free_portmidi_devices (GList * list); /** * Returns the device id for the given device name. */ PmDeviceID get_portmidi_device_id (char const *name, gboolean output); #endif // PORTMIDIUTIL_H denemo-2.2.0/src/audio/PaxHeaders.19168/portmidiutil.c0000644000000000000000000000013213135434036017312 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.853315139 30 ctime=1500919914.063315139 denemo-2.2.0/src/audio/portmidiutil.c0000644000175000017500000000562213135434036021170 0ustar00jjbenhamjjbenham00000000000000#ifdef _HAVE_PORTMIDI_ /* * portmidiutil.c * PortMidi utility functions. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #include "audio/portmidiutil.h" #include /* * Unlike PortAudio, PortMidi may only be initialized once. We get around this * limitation by counting PortMidi initializations ourselves, and only calling * Pm_Terminate() when the counter reaches zero. */ static int init_count = 0; PmError Pm_InitializeWrapper () { if (init_count++ == 0) { return Pm_Initialize (); } else { return pmNoError; } } PmError Pm_TerminateWrapper () { if (--init_count == 0) { return Pm_Terminate (); } else { return pmNoError; } } GList * get_portmidi_devices (gboolean output) { GList *list = NULL; PmError err = Pm_InitializeWrapper (); if (err != pmNoError) { return NULL; } list = g_list_append (list, g_strdup ("none")); list = g_list_append (list, g_strdup ("default")); int num = Pm_CountDevices (); int i; for (i = 0; i < num; ++i) { PmDeviceInfo const *info = Pm_GetDeviceInfo (i); // skip inputs if we're looking for outputs, skip outputs if we're looking // for inputs if ((output && !info->output) || (!output && !info->input)) { continue; } char *s = g_strdup_printf ("%s: %s", info->interf, info->name); list = g_list_append (list, s); } Pm_TerminateWrapper (); return list; } void free_portmidi_devices (GList * list) { GList *p = list; while (p) { g_free (p->data); p = g_list_next (p); } g_list_free (list); } PmDeviceID get_portmidi_device_id (char const *name, gboolean output) { PmError err = Pm_InitializeWrapper (); if (err != pmNoError) { return pmNoDevice; } PmDeviceID ret = pmNoDevice; if (g_strcmp0 (name, "default") == 0) { if (output) { ret = Pm_GetDefaultOutputDeviceID (); goto out; } else { ret = Pm_GetDefaultInputDeviceID (); goto out; } } int num = Pm_CountDevices (); int i; for (i = 0; i < num; ++i) { PmDeviceInfo const *info = Pm_GetDeviceInfo (i); char *s = g_strdup_printf ("%s: %s", info->interf, info->name); // check if the device type (input/output) and name matches if (((output && info->output) || (!output && info->input)) && g_strcmp0 (name, s) == 0) { ret = i; g_free (s); break; } g_free (s); } out: Pm_TerminateWrapper (); return ret; } #endif //_HAVE_PORTMIDI_ denemo-2.2.0/src/audio/PaxHeaders.19168/eventqueue.h0000644000000000000000000000013213135434036016760 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.859981805 30 ctime=1500919914.046648472 denemo-2.2.0/src/audio/eventqueue.h0000644000175000017500000001233113135434036020631 0ustar00jjbenhamjjbenham00000000000000/* * eventqueue.h * event queue for audio/MIDI backends. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #ifndef EVENTQUEUE_H #define EVENTQUEUE_H #include "audio/audiointerface.h" #ifdef _HAVE_JACK_ #include #else #include "audio/ringbuffer.h" #endif #include "smf.h" /** * Event queue structure for input/output of MIDI events to/from backends. */ typedef struct event_queue_t { /** * The playback queue. Events from the SMF structure are written to this * queue a few seconds in advance to ensure precise timing with no dropouts. */ jack_ringbuffer_t *playback; /** * The queue for immediate event output. Events written to this queue will * be played back as soon as possible. */ jack_ringbuffer_t *immediate; /** * The input queue. */ jack_ringbuffer_t *input; /* mixer queue - audio for mixing with playback output */ jack_ringbuffer_t *mixer; #ifdef _HAVE_RUBBERBAND_ /* rubberband queue - for audio stretching */ jack_ringbuffer_t *rubberband; #endif } event_queue_t; /** * Creates a new event queue. * * @param playback_queue_size the maximum number of events in the playback * queue * @param immediate_queue_size the maximum number of events in the immediate * playback queue * @param input_queue_size the maximum number of events in the input * queue * * @return the new event queue */ event_queue_t *event_queue_new (size_t playback_queue_size, size_t immediate_queue_size, size_t input_queue_size, size_t mixer_queue_size #ifdef _HAVE_RUBBERBAND_ , size_t rubberband_queue_size #endif ); /** * Frees the given queue. */ void event_queue_free (event_queue_t * queue); /** * Clears the playback queue. */ void event_queue_reset_playback (event_queue_t * queue); /** * Clears the mixer queue. */ void event_queue_reset_mixer (event_queue_t * queue); #ifdef _HAVE_RUBBERBAND_ /** * Clears the rubberband queue. */ void event_queue_reset_rubberband (event_queue_t * queue); #endif /** * Writes an SMF event to the playback queue. * * @param event the event to be written to the queue. Only a pointer to the * event will be stored in the queue, not the event data itself. * * @return TRUE if the event was successfully written to the queue */ gboolean event_queue_write_playback (event_queue_t * queue, smf_event_t * event); /** * Writes an event to the immmediate playback queue. * * @param data the event or extended_event to be written to the queue. The event data will be * copied. * @param length length of the event or extended_event to be written to the queue. * * @return TRUE if the event was successfully written to the queue */ gboolean event_queue_write_immediate (event_queue_t * queue, guchar * data, guint length); /** * Writes an audio sample to the mixer queue. * * @param event the sample to be written to the queue. * * @return TRUE if the sample was successfully written to the queue */ gboolean event_queue_write_mixer (event_queue_t * queue, float *sample); #ifdef _HAVE_RUBBERBAND_ /** * Writes single sample to the rubberband queue. * * @param event the sample to be written to the queue. * * @return TRUE if the sample was successfully written to the queue */ gboolean event_queue_write_rubberband (event_queue_t * queue, float *sample); #endif /** * Reads an event from one of the output queues. * * @param[out] event_buffer the event data * @param[out] event_length the length of the event in bytes * @param[out] event_time the time of the event (in seconds from the start * of the score) * @param until_time the playback time up to which events should be * returned * * @return TRUE if an event was written to the output * parameters */ gboolean event_queue_read_output (event_queue_t * queue, unsigned char *event_buffer, size_t * event_length, double *event_time, double until_time); gboolean mixer_queue_read_output (event_queue_t * queue, unsigned char *event_buffer, size_t * event_length); #ifdef _HAVE_RUBBERBAND_ gboolean rubberband_queue_read_output (event_queue_t * queue, unsigned char *event_buffer, size_t * event_length); #endif /** * Writes an event to the input queue. * * @param event the event to be written to the queue. The event data will be * copied. * * @return TRUE if the event was successfully written to the queue */ gboolean event_queue_write_input (event_queue_t * queue, midi_event_t const *event); /** * Reads an event from the input queue. * * @return a pointer to a newly allocated structure containing the event data. * The caller is responsible for calling g_free() on this pointer. */ midi_event_t *event_queue_read_input (event_queue_t * queue); #endif // EVENTQUEUE_H denemo-2.2.0/src/audio/PaxHeaders.19168/parseinstruments.h0000644000000000000000000000013213135434036020220 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.866648473 30 ctime=1500919914.036648472 denemo-2.2.0/src/audio/parseinstruments.h0000644000175000017500000000065613135434036022100 0ustar00jjbenhamjjbenham00000000000000// // parseinstruments.h // // // // // Author: Adam Tee , (C) 2005 // // Copyright: See COPYING file that comes with this distribution // // #ifndef PARSEINSTRUMENTS_H #define PARSEINSTRUMENTS_H #include #include #include #include GList *parseInstruments (GList * instruments); InstrumentType lookuptype (gchar * string); #endif denemo-2.2.0/src/audio/PaxHeaders.19168/audiocapture.h0000644000000000000000000000013213135434036017257 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.866648473 30 ctime=1500919914.069981805 denemo-2.2.0/src/audio/audiocapture.h0000644000175000017500000000014413135434036021127 0ustar00jjbenhamjjbenham00000000000000#ifndef __AUDIOCAPTURE_H__ #define __AUDIOCAPTURE_H__ int collect_data_for_tuning (int ok); #endifdenemo-2.2.0/src/audio/PaxHeaders.19168/jackutil.c0000644000000000000000000000013213135434036016373 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.866648473 30 ctime=1500919914.053315139 denemo-2.2.0/src/audio/jackutil.c0000644000175000017500000000265213135434036020251 0ustar00jjbenhamjjbenham00000000000000#ifdef _HAVE_JACK_ /* * jackutil.c * JACK utility functions. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #include "audio/jackutil.h" #include GList * get_jack_ports (gboolean midi, gboolean output) { GList *list = NULL; // open a temporary connection to the JACK server jack_client_t *client = jack_client_open ("denemo", JackNoStartServer, NULL); if (!client) { return NULL; } char const *type = midi ? JACK_DEFAULT_MIDI_TYPE : JACK_DEFAULT_AUDIO_TYPE; unsigned long flags = output ? JackPortIsOutput : JackPortIsInput; // get all input port names of the given type char const **ports = jack_get_ports (client, NULL, type, flags); if (!ports) { return NULL; } // copy all port names to our own list char const **p = ports; while (*p) { char *s = g_strdup (*p++); list = g_list_append (list, s); } jack_free (ports); jack_client_close (client); return list; } void free_jack_ports (GList * list) { GList *p = list; while (p) { g_free (p->data); p = g_list_next (p); } g_list_free (list); } #endif //_HAVE_JACK_ denemo-2.2.0/src/audio/PaxHeaders.19168/instrumentname.h0000644000000000000000000000013213135434036017643 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.866648473 30 ctime=1500919914.073315139 denemo-2.2.0/src/audio/instrumentname.h0000644000175000017500000000020313135434036021507 0ustar00jjbenhamjjbenham00000000000000/* * Header file for instrument name recognition output * (c) 2001-2005 Per Andersson */ int select_program (char *instrname); denemo-2.2.0/src/audio/PaxHeaders.19168/dummybackend.h0000644000000000000000000000013213135434036017235 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.866648473 30 ctime=1500919914.046648472 denemo-2.2.0/src/audio/dummybackend.h0000644000175000017500000000111313135434036021102 0ustar00jjbenhamjjbenham00000000000000/* * dummybackend.h * Dummy audio and MIDI backend. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #ifndef DUMMYBACKEND_H #define DUMMYBACKEND_H #include "audio/audiointerface.h" extern backend_t dummy_audio_backend; extern backend_t dummy_midi_backend; #endif // DUMMYBACKEND_H denemo-2.2.0/src/audio/PaxHeaders.19168/audio.h0000644000000000000000000000013213135434036015673 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.876648472 30 ctime=1500919914.066648472 denemo-2.2.0/src/audio/audio.h0000644000175000017500000000157613135434036017555 0ustar00jjbenhamjjbenham00000000000000/* audio.h * common header file for pitchentry, portaudio and aubio to share definitions * * (c) 2007 Richard Shann */ #ifndef AUDIO_H #define AUDIO_H #define DENEMO_SAMPLE_RATE (44100) #define DENEMO_SAMPLE_TYPE float /*unsigned char */ typedef int (AubioCallback) (void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer); /* get approximate pitch in Hz of new note from audio input or 0 if none */ double get_pitch (void); /* set the pitch as target for accurate pitch detection */ void setTuningTarget (double pitch); /* measure the frequency of a peak in the spectrum close to the target frequency */ double determine_frequency (void); void set_frequency_smoothing (double fraction); int initialize_pitch_recognition (void); int terminate_pitch_recognition (void); void play_pitch (double pitch, double duration, double volume, int channel); #endif //AUDIO_H denemo-2.2.0/src/audio/PaxHeaders.19168/parseinstruments.c0000644000000000000000000000013213135434036020213 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.876648472 30 ctime=1500919914.079981806 denemo-2.2.0/src/audio/parseinstruments.c0000644000175000017500000001161313135434036022066 0ustar00jjbenhamjjbenham00000000000000/* parseinstruments.cpp * Parse instruments for score setup * File taken from lily4jedit * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Adam Tee */ #include "parseinstruments.h" #include #include "core/utils.h" /** * Look up instrument group * * @param string textual description of instrument group * * @return enum value for specific group */ InstrumentType lookuptype (gchar * string) { InstrumentType type = NONE; if (!strcmp (string, "Woodwinds")) type = WOODWIND; else if (!strcmp (string, "Brass")) type = BRASS; else if (!strcmp (string, "Pitched Percussion")) type = PITCHEDPERCUSSION; else if (!strcmp (string, "Plucked Strings")) type = PLUCKEDSTRINGS; else if (!strcmp (string, "Keyboards")) type = KEYBOARDS; else if (!strcmp (string, "Vocals")) type = VOCALS; else if (!strcmp (string, "Strings")) type = STRINGS; return type; } /** * Look up number of staffs instrument uses * * @param string textual description of number of staves/type * @return integer value of the number of staffs */ static gint lookupnumstaffs (gchar * string) { if (!strcmp (string, "single")) return 1; else if (!strcmp (string, "piano")) return 2; else if (!strcmp (string, "organ")) return 3; return 0; } /** * Parse the instrument description * * @param doc document pointer * @param cur pointer to the current XML Node * @param list pointer to the list of instruments * * @return list pointer to the updated list */ GList * ParseInstruments (xmlDocPtr doc, xmlNodePtr cur, GList * list) { cur = cur->xmlChildrenNode; while (cur != NULL) { if (0 == xmlStrcmp (cur->name, (const xmlChar *) "Instrument")) { g_debug ("%s\n", cur->name); InstrumentConfig *config = (InstrumentConfig *) g_malloc0 (sizeof (InstrumentConfig)); gchar *tmpname = (gchar *) xmlGetProp (cur, (xmlChar *) "name"); if (tmpname) { config->name = g_string_new (tmpname); g_free (tmpname); tmpname = NULL; } gchar *tmpmidi = (gchar *) xmlGetProp (cur, (xmlChar *) "midiName"); if (tmpmidi) { config->midiinstrument = g_string_new (tmpmidi); g_free (tmpmidi); tmpmidi = NULL; } gchar *tmptrans = (gchar *) xmlGetProp (cur, (xmlChar *) "transposing"); if (tmptrans) { config->transposition = atoi (tmptrans); g_free (tmptrans); tmptrans = NULL; } gchar *tmpclef = (gchar *) xmlGetProp (cur, (xmlChar *) "clef"); if (tmpclef) { config->sclef = cleftypefromname (tmpclef); //g_free(tmpclef); //tmpclef = NULL; } gchar *tmpstaff = (gchar *) xmlGetProp (cur, (xmlChar *) "staffType"); if (tmpstaff) { config->numstaffs = lookupnumstaffs (tmpstaff); g_free (tmpstaff); tmpstaff = NULL; } g_debug ("Names %s\n", config->name->str); list = g_list_append (list, config); } cur = cur->next; } return list; } /** * parse Instruments description file * Creates a list containing each instrument type's set of instruments * * @param instruments pointer to a list to insert each instrument type into * @return a pointer to the updated list */ GList * parseInstruments (GList * instruments) { xmlDocPtr doc = NULL; xmlNodePtr rootElem; static gchar *filename = NULL; if (filename == NULL) filename = g_build_filename (get_system_data_dir (), "instruments.xml", NULL); doc = xmlParseFile (filename); if (doc == NULL) { g_warning ("Could not read XML file %s", filename); return instruments; } rootElem = xmlDocGetRootElement (doc); if (rootElem == NULL) { g_warning ("Empty Document"); xmlFreeDoc (doc); return instruments; } g_debug ("RootElem: %s\n", rootElem->name); if (0 != xmlStrcmp (rootElem->name, (xmlChar*) "Instruments")) { g_warning ("Document has wrong type"); xmlFreeDoc (doc); return instruments; } rootElem = rootElem->xmlChildrenNode; while (rootElem != NULL) { g_debug ("RootElem %s\n", rootElem->name); if (0 == xmlStrcmp (rootElem->name, (const xmlChar *) "InstrumentType")) { InstrumentList *list = (InstrumentList *) g_malloc0 (sizeof (InstrumentList)); gchar *tmp = (gchar *) xmlGetProp (rootElem, (xmlChar *) "name"); list->type = lookuptype (tmp); g_debug ("Type %s\n", tmp); list->instruments = ParseInstruments (doc, rootElem, list->instruments); instruments = g_list_append (instruments, list); } rootElem = rootElem->next; } xmlFreeDoc (doc); return instruments; } denemo-2.2.0/src/audio/PaxHeaders.19168/fluid.h0000644000000000000000000000013213135434036015675 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.896648472 30 ctime=1500919914.049981805 denemo-2.2.0/src/audio/fluid.h0000644000175000017500000000215613135434036017552 0ustar00jjbenhamjjbenham00000000000000/* * fluid.h * JACK audio and MIDI backends. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #ifndef FLUID_H #define FLUID_H #include int fluidsynth_init (DenemoPrefs * config, unsigned int samplerate); void fluidsynth_shutdown (); /** * Feeds a MIDI event to the synth engine. */ void fluidsynth_feed_midi (unsigned char *event_data, size_t event_length); /** * Sends an all-notes-off event to the synth engine. */ void fluidsynth_all_notes_off (); /** * Renders the given number of audio frames into a buffer. */ void fluidsynth_render_audio (unsigned int nframes, float *left_channel, float *right_channel); /** * Select the soundfont to use for playback */ void choose_sound_font (GtkWidget * widget, GtkWidget * fluidsynth_soundfont); void reset_synth_channels (void); #endif // FLUID_H denemo-2.2.0/src/audio/PaxHeaders.19168/ringbuffer.h0000644000000000000000000000013213135434036016723 xustar0030 mtime=1500919838.336648472 30 atime=1500919918.896648472 30 ctime=1500919914.066648472 denemo-2.2.0/src/audio/ringbuffer.h0000644000175000017500000001671513135434036020606 0ustar00jjbenhamjjbenham00000000000000/* Copyright (C) 2000 Paul Davis Copyright (C) 2003 Rohan Drape This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _RINGBUFFER_H #define _RINGBUFFER_H #ifdef __cplusplus extern "C" { #endif #include /** @file ringbuffer.h * * A set of library functions to make lock-free ringbuffers available * to JACK clients. The `capture_client.c' (in the example_clients * directory) is a fully functioning user of this API. * * The key attribute of a ringbuffer is that it can be safely accessed * by two threads simultaneously -- one reading from the buffer and * the other writing to it -- without using any synchronization or * mutual exclusion primitives. For this to work correctly, there can * only be a single reader and a single writer thread. Their * identities cannot be interchanged. */ typedef struct { char *buf; size_t len; } jack_ringbuffer_data_t; typedef struct { char *buf; volatile size_t write_ptr; volatile size_t read_ptr; size_t size; size_t size_mask; int mlocked; } jack_ringbuffer_t; /** * Allocates a ringbuffer data structure of a specified size. The * caller must arrange for a call to jack_ringbuffer_free() to release * the memory associated with the ringbuffer. * * @param sz the ringbuffer size in bytes. * * @return a pointer to a new jack_ringbuffer_t, if successful; NULL * otherwise. */ jack_ringbuffer_t *jack_ringbuffer_create (size_t sz); /** * Frees the ringbuffer data structure allocated by an earlier call to * jack_ringbuffer_create(). * * @param rb a pointer to the ringbuffer structure. */ void jack_ringbuffer_free (jack_ringbuffer_t * rb); /** * Fill a data structure with a description of the current readable * data held in the ringbuffer. This description is returned in a two * element array of jack_ringbuffer_data_t. Two elements are needed * because the data to be read may be split across the end of the * ringbuffer. * * The first element will always contain a valid @a len field, which * may be zero or greater. If the @a len field is non-zero, then data * can be read in a contiguous fashion using the address given in the * corresponding @a buf field. * * If the second element has a non-zero @a len field, then a second * contiguous stretch of data can be read from the address given in * its corresponding @a buf field. * * @param rb a pointer to the ringbuffer structure. * @param vec a pointer to a 2 element array of jack_ringbuffer_data_t. * */ void jack_ringbuffer_get_read_vector (const jack_ringbuffer_t * rb, jack_ringbuffer_data_t * vec); /** * Fill a data structure with a description of the current writable * space in the ringbuffer. The description is returned in a two * element array of jack_ringbuffer_data_t. Two elements are needed * because the space available for writing may be split across the end * of the ringbuffer. * * The first element will always contain a valid @a len field, which * may be zero or greater. If the @a len field is non-zero, then data * can be written in a contiguous fashion using the address given in * the corresponding @a buf field. * * If the second element has a non-zero @a len field, then a second * contiguous stretch of data can be written to the address given in * the corresponding @a buf field. * * @param rb a pointer to the ringbuffer structure. * @param vec a pointer to a 2 element array of jack_ringbuffer_data_t. */ void jack_ringbuffer_get_write_vector (const jack_ringbuffer_t * rb, jack_ringbuffer_data_t * vec); /** * Read data from the ringbuffer. * * @param rb a pointer to the ringbuffer structure. * @param dest a pointer to a buffer where data read from the * ringbuffer will go. * @param cnt the number of bytes to read. * * @return the number of bytes read, which may range from 0 to cnt. */ size_t jack_ringbuffer_read (jack_ringbuffer_t * rb, char *dest, size_t cnt); /** * Read data from the ringbuffer. Opposed to jack_ringbuffer_read() * this function does not move the read pointer. Thus it's * a convenient way to inspect data in the ringbuffer in a * continous fashion. The price is that the data is copied * into a user provided buffer. For "raw" non-copy inspection * of the data in the ringbuffer use jack_ringbuffer_get_read_vector(). * * @param rb a pointer to the ringbuffer structure. * @param dest a pointer to a buffer where data read from the * ringbuffer will go. * @param cnt the number of bytes to read. * * @return the number of bytes read, which may range from 0 to cnt. */ size_t jack_ringbuffer_peek (jack_ringbuffer_t * rb, char *dest, size_t cnt); /** * Advance the read pointer. * * After data have been read from the ringbuffer using the pointers * returned by jack_ringbuffer_get_read_vector(), use this function to * advance the buffer pointers, making that space available for future * write operations. * * @param rb a pointer to the ringbuffer structure. * @param cnt the number of bytes read. */ void jack_ringbuffer_read_advance (jack_ringbuffer_t * rb, size_t cnt); /** * Return the number of bytes available for reading. * * @param rb a pointer to the ringbuffer structure. * * @return the number of bytes available to read. */ size_t jack_ringbuffer_read_space (const jack_ringbuffer_t * rb); /** * Lock a ringbuffer data block into memory. * * Uses the mlock() system call. This is not a realtime operation. * * @param rb a pointer to the ringbuffer structure. */ int jack_ringbuffer_mlock (jack_ringbuffer_t * rb); /** * Reset the read and write pointers, making an empty buffer. * * This is not thread safe. * * @param rb a pointer to the ringbuffer structure. */ void jack_ringbuffer_reset (jack_ringbuffer_t * rb); /** * Write data into the ringbuffer. * * @param rb a pointer to the ringbuffer structure. * @param src a pointer to the data to be written to the ringbuffer. * @param cnt the number of bytes to write. * * @return the number of bytes write, which may range from 0 to cnt */ size_t jack_ringbuffer_write (jack_ringbuffer_t * rb, const char *src, size_t cnt); /** * Advance the write pointer. * * After data have been written the ringbuffer using the pointers * returned by jack_ringbuffer_get_write_vector(), use this function * to advance the buffer pointer, making the data available for future * read operations. * * @param rb a pointer to the ringbuffer structure. * @param cnt the number of bytes written. */ void jack_ringbuffer_write_advance (jack_ringbuffer_t * rb, size_t cnt); /** * Return the number of bytes available for writing. * * @param rb a pointer to the ringbuffer structure. * * @return the amount of free space (in bytes) available for writing. */ size_t jack_ringbuffer_write_space (const jack_ringbuffer_t * rb); #ifdef __cplusplus } #endif #endif denemo-2.2.0/src/audio/PaxHeaders.19168/playback.c0000644000000000000000000000013213135434036016353 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.899981805 30 ctime=1500919914.089981805 denemo-2.2.0/src/audio/playback.c0000644000175000017500000001032213135434036020222 0ustar00jjbenhamjjbenham00000000000000/* playback.c * Midi playback for a specific portion of * a score * * (c) 2000-2005 Adam Tee */ #include #include "audio/playback.h" #include "export/exportlilypond.h" #include "export/exportmidi.h" #include "command/staff.h" #include "command/score.h" #include "ui/dialogs.h" #include "core/prefops.h" #include "core/utils.h" #include "core/external.h" #include "audio/audiointerface.h" #include "audio/midi.h" #include "core/view.h" #include "source/sourceaudio.h" #include #include #include #include #include #include #ifdef HAVE_SYS_WAIT_H #include #endif #ifdef HAVE_WAIT_H #include #endif #include void set_tempo (void) { gdouble tempo = Denemo.project->movement->master_tempo; if (tempo < 0.001 || (tempo > 0.999 && tempo < 1.001)) return; Denemo.project->movement->tempo *= tempo; Denemo.project->movement->start_time /= tempo; Denemo.project->movement->end_time /= tempo; Denemo.project->movement->master_tempo = 1.0; //caller should call this:score_status (Denemo.project, TRUE); // caller should call this: exportmidi (NULL, Denemo.project->movement); } /* start playing the current movement as MIDI * the name ext_... is anachronistic, Fluidsynth or Jack are normally used. */ void ext_midi_playback (DenemoAction * action, DenemoScriptParam * param) { if(Denemo.non_interactive) return; GET_1PARAM (action, param, callback); set_playbutton (is_paused ()); if (is_playing ()) { toggle_paused (); return; } set_tempo (); #ifdef DISABLE_AUBIO #else //rewind_audio(); done in start_audio_playing() start_audio_playing (FALSE); #endif midi_play (callback); } // a function that stops any play in progress, and starts play again. void restart_play (void) { stop_midi_playback (NULL, NULL); ext_midi_playback (NULL, NULL); } void stop_midi_playback (DenemoAction * action, DenemoScriptParam* param) { if (is_paused ()) toggle_paused (); else set_playbutton (TRUE); midi_stop (); if (Denemo.playbackview) gtk_widget_queue_draw (Denemo.playbackview); draw_score_area(); //update playhead on screen } void playback_panic () { panic_all (); } /** * Dialog function used to select measure range * This is similar to printrangedialog in print.c */ void PlaybackRangeDialog () { DenemoProject *gui = Denemo.project; GtkWidget *dialog; GtkWidget *label; GtkWidget *hbox; GtkWidget *from_time; GtkWidget *to_time; dialog = gtk_dialog_new_with_buttons (_("Play range in seconds:"), GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); hbox = gtk_hbox_new (FALSE, 8); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), hbox); //TODO calculate hightest number in seconds gdouble max_end_time = 7200.0; //g_list_length (((DenemoStaff *) (gui->movement->thescore->data))->measures); label = gtk_label_new (_("Play from time")); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); from_time = gtk_spin_button_new_with_range (0.0, max_end_time, 0.1); gtk_box_pack_start (GTK_BOX (hbox), from_time, TRUE, TRUE, 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (from_time), (gdouble) gui->movement->start_time); label = gtk_label_new (_("to")); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); to_time = gtk_spin_button_new_with_range (0.0, max_end_time, 0.1); gtk_box_pack_start (GTK_BOX (hbox), to_time, TRUE, TRUE, 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (to_time), (gdouble) gui->movement->end_time); gtk_widget_show (hbox); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { gui->movement->start_time = gtk_spin_button_get_value (GTK_SPIN_BUTTON (from_time)); gui->movement->end_time = gtk_spin_button_get_value (GTK_SPIN_BUTTON (to_time)); //gtk_widget_destroy (dialog); } gtk_widget_destroy (dialog); } denemo-2.2.0/src/audio/PaxHeaders.19168/midi.c0000644000000000000000000000013213135434036015507 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.899981805 30 ctime=1500919914.073315139 denemo-2.2.0/src/audio/midi.c0000644000175000017500000010113313135434036017357 0ustar00jjbenhamjjbenham00000000000000/* * midi.c * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2000-2005 Brian Delaney * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #include #include "audio/midi.h" #include "audio/audiointerface.h" #include "smf.h" #include "export/exportmidi.h" #include "display/draw.h" #include "core/view.h" #include "audio/pitchentry.h" #include "audio/instrumentname.h" #include "printview/svgview.h" #include #include #include #include #define SHAVING (0.01) //seconds to shave off a note start time to ensure stopping before noteon is sent, and starting with noteon first note may depend of speed of machine??? FIXME static volatile gboolean playing = FALSE; static double last_draw_time; // huh? static gboolean midi_capture_on = FALSE; //any midi events not caught by midi_divert will be dropped if this is true static gdouble play_until = G_MAXDOUBLE; /* MIDI in handling diversion to scheme scripts of MIDI in data */ static gint *divert_midi_event; static gint divert_midi_id = 0; //id of the DenemoProject which wants to intercept midi events static GQueue midi_queue = G_QUEUE_INIT; static gint put_get_midiqueue (gint midi) { if (g_queue_is_empty (&midi_queue)) return midi; g_queue_push_tail (&midi_queue, GINT_TO_POINTER (midi)); return GPOINTER_TO_INT( g_queue_pop_head (&midi_queue) ); } static void put_midiqueue (gint midi) { g_queue_push_tail (&midi_queue, GINT_TO_POINTER (midi)); } static gint get_midiqueue (void) { return GPOINTER_TO_INT( g_queue_pop_head (&midi_queue) ); } /*End of MIDI in handling diversion to scheme scripts of MIDI in data */ void update_position (smf_event_t * event) { DenemoMovement *si = Denemo.project->movement; if (event) { if (((event->midi_buffer[0] & 0xf0) == MIDI_NOTE_ON) && ((event->time_seconds - last_draw_time) > Denemo.prefs.display_refresh)) { last_draw_time = event->time_seconds; queue_redraw_playhead (event); } } else { if (si) { si->playingnow = NULL; si->playhead = 0; queue_redraw_all (); } } } static void safely_add_track (smf_t * smf, smf_track_t * track) { track->smf = NULL; smf_add_track (smf, track); } static void safely_track_remove_from_smf (smf_track_t * track) { if (track->smf != NULL && (track->track_number>=1)) smf_track_remove_from_smf (track); track->smf = NULL; } static GString *callback_script = NULL; void start_playing (gchar * callback) { smf_t *smf = Denemo.project->movement->smf; if (callback && *callback) callback_script = g_string_new (callback); if (Denemo.project->movement->recorded_midi_track) safely_add_track (Denemo.project->movement->smf, Denemo.project->movement->recorded_midi_track); set_start_and_end_objects_for_draw (); smf_rewind (smf); gdouble start = (Denemo.project->movement->start_time/get_playback_speed()) - SHAVING; if(smf_seek_to_seconds (smf, (start>0.0)?start:0.0)) g_warning("smf_seek_to_seconds %f failed", start); initialize_until_time (); initialize_playhead (); playing = TRUE; last_draw_time = -1.0;//needed to trigger drawing first note } static gboolean stop_play_callback (gchar * thescript) { call_out_to_guile (thescript); g_free (thescript); return FALSE; } static gboolean do_set_playbutton (gboolean paused) { set_playbutton (paused); return FALSE; } static gboolean update_playbutton_callback (gboolean paused) { g_main_context_invoke (NULL, (GSourceFunc)do_set_playbutton, GINT_TO_POINTER(paused)); return FALSE; } static void finish_recording (void) { if ((Denemo.project->midi_destination & MIDIRECORD)) { Denemo.project->midi_destination ^= MIDIRECORD; g_idle_add_full (G_PRIORITY_HIGH_IDLE, (GSourceFunc) show_midi_record_control, NULL, NULL); } } void stop_playing () { update_position (NULL); g_idle_add_full (G_PRIORITY_HIGH_IDLE, (GSourceFunc) update_playbutton_callback, GINT_TO_POINTER (is_paused ()), NULL); playing = FALSE; play_until = -G_MAXDOUBLE; if (Denemo.project->movement && Denemo.project->movement->recorded_midi_track) { safely_track_remove_from_smf (Denemo.project->movement->recorded_midi_track); finish_recording (); } if (callback_script) { g_idle_add_full (G_PRIORITY_HIGH_IDLE, (GSourceFunc) stop_play_callback, g_string_free (callback_script, FALSE), NULL); callback_script = NULL; } } void toggle_paused () { if (play_until < 0.0) play_until = G_MAXDOUBLE; else play_until = -G_MAXDOUBLE; } gboolean is_playing () { return playing; } gboolean is_paused () { return play_until < 0.0; } gdouble get_playuntil (void) { return play_until; } void update_playback_start_time (double adjust) { if (Denemo.project && Denemo.project->movement) { Denemo.project->movement->start_time += adjust; } } double get_start_time () { if (Denemo.project && Denemo.project->movement && (Denemo.project->movement->start_time > 0.0)) { return Denemo.project->movement->start_time; } else { return 0.0; } } double get_end_time () { if (Denemo.project && Denemo.project->movement && Denemo.project->movement->smf) { if (Denemo.project->movement->end_time < 0.0) Denemo.project->movement->end_time = smf_get_length_seconds (Denemo.project->movement->smf); return Denemo.project->movement->end_time; } else { return 0.0; } } smf_event_t * get_smf_event (double until_time) { if (Denemo.project == NULL || Denemo.project->movement == NULL || Denemo.project->movement->smf == NULL) return NULL; smf_t *smf = Denemo.project->movement->smf; if (until_time > Denemo.project->movement->end_time) { until_time = Denemo.project->movement->end_time; } for (;;) { smf_event_t *event = smf_peek_next_event (smf); if (event == NULL || event->time_seconds >= until_time) { return NULL; } if (smf_event_is_metadata (event)) { // consume metadata event and continue with the next one event = smf_get_next_event (smf); continue; } // consume the event event = smf_get_next_event (smf); return event; } } gdouble get_time () { GTimeVal tv; double seconds; g_get_current_time (&tv); seconds = tv.tv_sec + tv.tv_usec / 1000000.0; return seconds; } void generate_midi (void) { if ((Denemo.project->movement->smf == NULL) || (Denemo.project->movement->smfsync != Denemo.project->movement->changecount)) { exportmidi (NULL, Denemo.project->movement); } if (Denemo.project->movement->smf == NULL) { g_critical ("Loading SMF failed."); } } /* return the time of the last event on the list events */ gdouble get_midi_off_time (GList * events) { smf_event_t *event = g_list_last (events)->data; return event->time_seconds; } /* return the time of the first event on the list events */ gdouble get_midi_on_time (GList * events) { smf_event_t *event = events->data; return event->time_seconds; } //finds the first note which comes ON after the passed time DenemoObject * get_obj_for_start_time (smf_t * smf, gdouble time) { if (time < 0.0) time = 0.0; static smf_event_t *event; smf_event_t *initial = smf_peek_next_event (smf); gdouble total = smf_get_length_seconds (smf); time = (time > total ? total : time); if(smf_seek_to_seconds (smf, time)) g_debug("smf_seek_to_seconds failed"); do { event = smf_get_next_event (smf); } while (event && (((event->midi_buffer[0] & 0xF0) == MIDI_NOTE_OFF) || !event->user_pointer)); if (initial && smf_seek_to_event (smf, initial)) g_debug("smf_seek_to_event failed"); //if (event) g_debug("sought for endObj %f found %f\n", time, event->time_seconds); if (event) return (DenemoObject *) (event->user_pointer); return get_object_for_time (time, TRUE); } //finds the first note which comes OFF after the passed time DenemoObject * get_obj_for_end_time (smf_t * smf, gdouble time) { if (time < 0.0) time = 0.0; static smf_event_t *event = NULL; smf_event_t *initial = smf_peek_next_event (smf); gdouble total = smf_get_length_seconds (smf); time = (time > total ? total : time); if(smf_seek_to_seconds (smf, time)) g_debug("smf_seek_to_seconds failed"); do { event = smf_get_next_event (smf); } while (event && (((event->midi_buffer[0] & 0xF0) == MIDI_NOTE_ON) || !event->user_pointer)); if (initial && smf_seek_to_event (smf, initial)) g_debug("smf_seek_to_event failed");//if (event) g_debug("sought for startObj %f found %f\n", time, event->time_seconds); if (event) return (DenemoObject *) (event->user_pointer); //midi is generated by LilyPond, no user_pointer, get timings from events.txt return get_object_for_time (time, FALSE); } /** * action_note_into_score enters ( or (if mode==INPUTEDIT and appending) edits the note at the cursor) * the parameters specify which note * @mid_c_offset * @enshift enharmonic adjustment -1 is one flat etc.. * @octave */ static void action_note_into_score (gint mid_c_offset, gint enshift, gint octave) {//g_print ("action note into score\n"); DenemoProject *gui = Denemo.project; gui->last_source = INPUTMIDI; gui->movement->cursor_y = gui->movement->staffletter_y = mid_c_offset; gui->movement->cursor_y += 7 * octave; Denemo.project->movement->pending_enshift = enshift; edit_or_append_pitch (mid_c_offset, TRUE); Denemo.project->movement->pending_enshift = 0; displayhelper (gui); } static void add_or_delete_note_to_chord (gint mid_c_offset, gint enshift, gint octave) {//g_print ("add or delete note to chord\n"); DenemoProject *gui = Denemo.project; DenemoObject *curObj; gui->last_source = INPUTMIDI; gui->movement->cursor_y = gui->movement->staffletter_y = mid_c_offset; gui->movement->cursor_y += 7 * octave; if(insert_or_delete_chordnote (enshift)) setenshift (gui->movement, enshift); displayhelper (gui); } typedef struct enharmonic { gint mid_c_offset; gint enshift; gint octave; } enharmonic; void new_midi_recording (void) { DenemoRecording *recording; if(Denemo.project->movement->recording && (Denemo.project->movement->recording->type==DENEMO_RECORDING_MIDI)) { //FIXME a better name for the mutex which originally was just for midi data, but will work for audio data too. recording = Denemo.project->movement->recording; g_mutex_lock (&smfmutex); Denemo.project->movement->recording = NULL; g_mutex_unlock (&smfmutex); g_free (recording->filename); g_free (recording); g_list_free_full (recording->notes, g_free); } recording = (DenemoRecording *) g_malloc (sizeof (DenemoRecording)); recording->type = DENEMO_RECORDING_MIDI; recording->samplerate = 44100; Denemo.project->movement->recording = recording; } //Add the passed midi to a recording in Denemo.project->movement static void record_midi (gchar * buf, gdouble time) { buf[0] |= 0xF; //here force the channel to 15 smf_event_t *event = smf_event_new_from_pointer (buf, 3); if (event && smf_event_is_valid (event)) { if (Denemo.project->movement->recorded_midi_track && ((smf_track_t *) Denemo.project->movement->recorded_midi_track)->smf) { smf_track_add_event_seconds (Denemo.project->movement->recorded_midi_track, event, time); if(Denemo.project->movement->recording && noteon_key(event)) { DenemoRecordedNote *note = g_malloc0(sizeof(DenemoRecordedNote)); note->timing = event->time_seconds * Denemo.project->movement->recording->samplerate; notenum2enharmonic (noteon_key(event), &(note->mid_c_offset), &(note->enshift), &(note->octave)); note->event = event; Denemo.project->movement->recording->notes = g_list_append (Denemo.project->movement->recording->notes, note); } } else { smf_event_delete (event); gdk_beep (); } } } static void do_one_note (gint mid_c_offset, gint enshift, gint notenum) {//g_print("do one note Adding mask %x, Chord mask %x\n", (Denemo.keyboard_state & ADDING_MASK) , (Denemo.keyboard_state & CHORD_MASK)); if ((Denemo.keyboard_state & ADDING_MASK) && (Denemo.keyboard_state & CHORD_MASK)) { add_or_delete_note_to_chord (mid_c_offset, enshift, notenum); } else { DenemoObject *curobj = NULL; //check for non-printing notes - back up to the first non-printing note. gboolean non_printing_note = FALSE; PushPosition (NULL, NULL); while (cursor_to_prev_note ()) { curobj = Denemo.project->movement->currentobject->data; if (!curobj->isinvisible) break; else non_printing_note = TRUE; } if (Denemo.project->movement->currentobject) { curobj = Denemo.project->movement->currentobject->data; if (non_printing_note) { if (!curobj->isinvisible) cursor_to_next_note (); (void)pop_position ();//Discard the pushed position } else PopPosition (NULL, NULL);// go to where we started, as there are no non-printing notes } else PopPosition (NULL, NULL);// go to where we started, as there are no non-printing notes action_note_into_score (mid_c_offset, enshift, notenum); if (Denemo.keyboard_state & ADDING_MASK) Denemo.keyboard_state |= CHORD_MASK; set_midi_in_status (); } } static gboolean get_current (enharmonic * enote) { DenemoObject *curObj = NULL; if (Denemo.project->movement->currentobject) { curObj = Denemo.project->movement->currentobject->data; if (curObj && curObj->type == CHORD) { chord *thechord = (chord *) curObj->object; if (thechord->notes) { note *thenote = (note *) thechord->notes->data; enote->mid_c_offset = offsettonumber (thenote->mid_c_offset); enote->enshift = thenote->enshift; return TRUE; } } } return FALSE; } static gboolean get_previous (enharmonic * enote) { DenemoObject *curObj = NULL; if (Denemo.project->movement->currentobject) { if (Denemo.project->movement->currentobject->prev) curObj = Denemo.project->movement->currentobject->prev->data; else { if (Denemo.project->movement->currentmeasure->prev && Denemo.project->movement->currentmeasure->prev->data) { DenemoMeasure *m = (DenemoMeasure*)Denemo.project->movement->currentmeasure->prev->data; curObj = m->objects?g_list_last (m->objects)->data:NULL; } } } if (curObj && curObj->type == CHORD) { chord *thechord = (chord *) curObj->object; if (thechord->notes) { note *thenote = (note *) thechord->notes->data; enote->mid_c_offset = offsettonumber (thenote->mid_c_offset); enote->enshift = thenote->enshift; return TRUE; } } return FALSE; } static gboolean at_nonprinting (void) { DenemoStaff *curstaffstruct = (DenemoStaff *) Denemo.project->movement->currentstaff->data; DenemoObject *curObj = Denemo.project->movement->currentobject->data; return (curObj->type == CHORD && curObj->isinvisible); } /* take an action for the passed note. Enter/edit/check the score following the mode and keyboard state. */ static gint midiaction (gint notenum) { gboolean new_measure = Denemo.project->movement->cursoroffend; DenemoProject *gui = Denemo.project; if (gui == NULL) return TRUE; if (gui->movement == NULL) return TRUE; DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; enharmonic enote, prevenote; gboolean have_previous; //g_print("midiaction Adding mask %x, Chord mask %x\n", (Denemo.keyboard_state & ADDING_MASK) , (Denemo.keyboard_state & CHORD_MASK)); notenum2enharmonic (notenum, &enote.mid_c_offset, &enote.enshift, &enote.octave); if (Denemo.project->movement->cursor_appending) have_previous = get_current (&prevenote); else have_previous = get_previous (&prevenote); if (!(Denemo.keyboard_state & CHECKING_MASK)) stage_undo (gui->movement, ACTION_STAGE_END); //undo is a queue so this is the end :) if ((gui->mode & INPUTEDIT) || (Denemo.keyboard_state & CHECKING_MASK)) { static gboolean beep = FALSE; gboolean is_tied = FALSE; gint measure = gui->movement->currentmeasurenum; if (Denemo.project->movement->currentobject) { DenemoObject *curObj = Denemo.project->movement->currentobject->data; if (curObj->type == CHORD) { do { curObj = Denemo.project->movement->currentobject->data; chord *thechord = (chord *) curObj->object; is_tied = (!Denemo.prefs.ignore_ties) && thechord->is_tied; //#define check_midi_note(a,b,c,d) ((a->mid_c_offset==b)&&(a->enshift==c))?playnote(a,curstaffstruct->midi_channel):gdk_beep(); if ((Denemo.keyboard_state & CHECKING_MASK) && thechord->notes) { //later - find note nearest cursor and note *thenote = (note *) thechord->notes->data; // check_midi_note(thenote, enote.mid_c_offset + 7 *(enote.octave), enote.enshift, enote.octave); if ((!curObj->isinvisible) && (thenote->mid_c_offset == (enote.mid_c_offset + 7 * (enote.octave))) && (thenote->enshift == enote.enshift)) { gint midi = dia_to_midinote (thenote->mid_c_offset) + thenote->enshift; play_note (DEFAULT_BACKEND, 0 /*port */ , curstaffstruct->midi_channel, midi, 300 /*duration */ , 0); } else { gdk_beep (); break; //do not move on to next note } } else { do_one_note (enote.mid_c_offset, enote.enshift, enote.octave); } if (Denemo.project->movement->cursor_appending) break; curObj = Denemo.project->movement->currentobject->data; thechord = (chord *) curObj->object; is_tied = (!Denemo.prefs.ignore_ties) && thechord->is_tied; } while ((!(Denemo.keyboard_state & ADDING_MASK)) && next_editable_note () && is_tied); } else //there is a current object that is not a chord { if (gui->movement->cursor_appending) { do_one_note (enote.mid_c_offset, enote.enshift, enote.octave); next_insert_or_editable_note(); //in some circumstance this fails to advance to the next editable note, the following checks for that. if (Denemo.project->movement->currentobject) { curObj = Denemo.project->movement->currentobject->data; if(!curObj->isinvisible) next_editable_note (); } } else gdk_beep (); } if (gui->mode & INPUTRHYTHM) { //g_print("measure was %d now %d with appending %d\n", measure, gui->movement->currentmeasurenum, gui->movement->cursor_appending); if (!beep && (measure != gui->movement->currentmeasurenum) && !gui->movement->cursor_appending) beep = TRUE; else if (beep) signal_measure_end (), beep = FALSE; } } else { // no current object do_one_note (enote.mid_c_offset, enote.enshift, enote.octave); next_insert_or_editable_note();//next_editable_note ();//if we have gone back from an empty measure we need this. } } else { // not INPUTEDIT action_note_into_score (enote.mid_c_offset, enote.enshift, enote.octave); } if (!(Denemo.keyboard_state & CHECKING_MASK)) { stage_undo (gui->movement, ACTION_STAGE_START); } draw_score_area(); //just for advancing the cursor. if (!(Denemo.keyboard_state & CHECKING_MASK)) { if (Denemo.prefs.immediateplayback) { gint channel = curstaffstruct->midi_channel; if (have_previous && check_interval (enote.mid_c_offset, enote.enshift, prevenote.mid_c_offset, prevenote.enshift)) channel = Denemo.prefs.pitchspellingchannel; play_note (DEFAULT_BACKEND, 0 /*port */ , channel, notenum, 300 /*duration */ , 0); if(new_measure) signal_measure_end(); } } return TRUE; } gboolean set_midi_capture (gboolean set) { gboolean ret = midi_capture_on; midi_capture_on = set; if (!set) divert_midi_id = 0; return ret; } #define command ((*buf)&0xF0) #define notenumber ((*(buf+1))&0x7F) #define velocity ((*(buf+2))&0x7F) void adjust_midi_velocity (gchar * buf, gint percent) { if ((command == MIDI_NOTE_ON) && buf[2]) buf[2] = 127 - (gint) ((127 - buf[2]) * percent / 100.0); } void add_after_touch (gchar * buf) { if (Denemo.prefs.damping) { static gdouble times[0x7F]; //takes no account of channel, really only good for one channel. //HACK IN kill pitch bend and "modulation" wheel here if (command == MIDI_PITCH_BEND) {g_print ("Dropping pitch bend\n"); *buf=0; return;} if (command == 0xB0) {g_print ("Dropping controller change message\n"); *buf=0; return;} if (command == MIDI_NOTE_ON) { times[notenumber] = get_time (); } if (command == MIDI_NOTE_OFF) { //g_debug("after %f seconds\n", get_time()-times[notenumber]); buf[0] = MIDI_NOTE_ON; //or the channel here buf[2] = 60 / exp ((get_time () - times[notenumber]) * 1); //scale according to the time return; } } } void process_midi_event (gchar * buf) { if (command == MIDI_CONTROL_CHANGE && (notenumber == 0x40)) { if (velocity == 0x7F) {//PEDAL DOWN if (Denemo.project->movement->cursor_appending || at_nonprinting ()) Denemo.keyboard_state |= ADDING_MASK; else Denemo.keyboard_state |= CHORD_MASK | ADDING_MASK; } else { Denemo.keyboard_state &= ~(CHORD_MASK | ADDING_MASK); next_insert_or_editable_note();//next_insert_or_editable_note (); } set_midi_in_status (); displayhelper (Denemo.project); } if ((0xFFFFFF & *(gint *) buf) == 0) { set_midi_capture (FALSE); g_queue_clear (&midi_queue); if (divert_midi_event) { *divert_midi_event = 0; divert_midi_event = NULL; gtk_main_quit (); } //g_debug("queue emptied %d\n", g_queue_get_length(&midi_queue)); } else { if (command == MIDI_NOTE_ON) midiaction (notenumber); else if (command == MIDI_CONTROL_CHANGE) { gchar *command_name = get_midi_control_command (notenumber, velocity); if (command_name) { execute_callback_from_name (command_name); g_free (command_name); } else { if (notenumber == 0x40) { //Foot Pedal if (velocity == 0x7F) { if ((Denemo.project->movement->cursor_appending) || at_nonprinting ()) Denemo.keyboard_state |= ADDING_MASK; else Denemo.keyboard_state |= CHORD_MASK | ADDING_MASK; } else { Denemo.keyboard_state &= ~(CHORD_MASK | ADDING_MASK); //next_editable_note (); this causes a double advance... } set_midi_in_status (); displayhelper (Denemo.project); } } } else if (command == MIDI_PITCH_BEND) { gchar *command_name = get_midi_pitch_bend_command ((notenumber << 8) + velocity); if (command_name) { execute_callback_from_name (command_name); g_free (command_name); } } } } void initialize_until_time (void) { if ((Denemo.project->midi_destination & MIDIPLAYALONG) && Denemo.project->movement->currentobject) { DenemoObject *obj = Denemo.project->movement->currentobject->data; if (obj->type == CHORD) { chord *thechord = obj->object; if (thechord->notes) { play_until = obj->earliest_time - SHAVING; //g_debug("initial until %f\n", play_until); } } } else play_until = G_MAXDOUBLE; } //test if the midi event in buf is a note-on for the current note //if so set play_until //advance cursor to next note static void advance_until_time (gchar * buf) { if (Denemo.project->movement->currentobject) { DenemoObject *obj = Denemo.project->movement->currentobject->data; if (obj->type != CHORD) if (cursor_to_next_chord ()) obj = Denemo.project->movement->currentobject->data; if (Denemo.project->movement->currentobject && obj->type == CHORD) { chord *thechord = obj->object; if (thechord->notes) { note *thenote = thechord->notes->data; if (((buf[0] & 0xf0) == MIDI_NOTE_ON) && buf[2] && buf[1] == (dia_to_midinote (thenote->mid_c_offset) + thenote->enshift)) { gdouble thetime = get_time (); Denemo.project->movement->start_player = thetime - obj->earliest_time; if ((!Denemo.prefs.ignore_ties) && thechord->is_tied && cursor_to_next_note ()) { obj = Denemo.project->movement->currentobject->data; } //IF THE NEXT OBJ IS A REST ADVANCE OVER IT/THEM do { if (!cursor_to_next_note ()) //if(!cursor_to_next_chord()) { play_until = G_MAXDOUBLE; break; } else { obj = Denemo.project->movement->currentobject->data; thechord = obj->object; play_until = obj->earliest_time - SHAVING; //g_debug("play until %f\n", play_until); } } while (!thechord->notes); } } } else g_warning ("Not on a chord"); } else g_warning ("Not on an object"); } static void adjust_midi_channel (gchar * buf) { DenemoStaff *curstaffstruct = (DenemoStaff *) Denemo.project->movement->currentstaff->data; gint channel = curstaffstruct->midi_channel; if ((buf[0] & SYS_EXCLUSIVE_MESSAGE1) == MIDI_NOTE_ON) { buf[0] = MIDI_NOTE_ON | channel; } else if ((buf[0] & SYS_EXCLUSIVE_MESSAGE1) == MIDI_NOTE_OFF) { buf[0] = MIDI_NOTE_OFF | channel; } } //Event generated by MIDI controller or Scheme script //adjusts the note-on volume by preferred dynamic compression and plays the passed event on default backend void play_adjusted_midi_event (gchar * buf) { adjust_midi_velocity (buf, 100 - Denemo.prefs.dynamic_compression); add_after_touch (buf); adjust_midi_channel (buf); //g_print ("play adj midibytes 0x%hhX 0x%hhX 0x%hhX\n", *(buf+0), *(buf+1), *(buf+2)); play_midi_event (DEFAULT_BACKEND, 0, (guchar*) buf); } #define EDITING_MASK (GDK_SHIFT_MASK) //these are event generated by a MIDI controller or Scheme script void handle_midi_event (gchar * buf) { //g_debug("%x : ready %d %x queue %d\n", midi_capture_on, divert_midi_event!=NULL, (0xFFFFFF & *(gint*)buf), g_queue_get_length(&midi_queue)); if (midi_capture_on && divert_midi_id == Denemo.project->id) { // this is only good for one endianness - FIXME ?? if (divert_midi_event) { *divert_midi_event = (0xFFFFFF & put_get_midiqueue (*(gint *) buf)); divert_midi_event = NULL; gtk_main_quit (); } else { put_midiqueue (*(gint *) buf); } return; //this *is* reached } if ((Denemo.project->midi_destination & MIDIRECORD) || (Denemo.project->midi_destination & (MIDIPLAYALONG | MIDICONDUCT))) { if (Denemo.project->midi_destination & MIDIRECORD) record_midi (buf, get_playback_time ()); if (Denemo.project->midi_destination & (MIDIPLAYALONG)) advance_until_time (buf);//FIXME is this thread-safe???? else play_adjusted_midi_event (buf);//play_midi_event (DEFAULT_BACKEND, 0, (guchar *) buf); } else { if ((Denemo.keyboard_state == (GDK_SHIFT_MASK | GDK_LOCK_MASK)) || Denemo.keyboard_state == (GDK_CONTROL_MASK) || Denemo.keyboard_state == (ADDING_MASK) || Denemo.keyboard_state == ((ADDING_MASK) | (CHORD_MASK)) || Denemo.keyboard_state == (GDK_CONTROL_MASK | GDK_LOCK_MASK) || (Denemo.keyboard_state == 0)) process_midi_event (buf); else if (Denemo.keyboard_state == (GDK_SHIFT_MASK) || Denemo.keyboard_state == (GDK_LOCK_MASK)) { play_adjusted_midi_event (buf); } } } gboolean intercept_midi_event (gint * midi) { if (divert_midi_event) { infodialog (_("Not exiting the previous MIDI capture loop")); g_warning ("Cannot return to script"); // divert_midi_event = NULL; // return FALSE; set_midi_capture (FALSE); g_queue_clear (&midi_queue); return FALSE; } if (g_queue_is_empty (&midi_queue)) { divert_midi_event = midi; divert_midi_id = Denemo.project->id; set_midi_capture (TRUE); gtk_main (); divert_midi_event = NULL; return TRUE; } else { *midi = (0xFFFFFF & get_midiqueue ()); //g_debug("getting from queue %x\n", *midi); } return TRUE; } gint get_midi_channel (DenemoStaff * staff) { if (!strcmp (staff->midi_instrument->str, "drums")) { return 9; } else { gint tracknumber = Denemo.project->movement->currentstaffnum - 1; tracknumber = (tracknumber >= 9) ? tracknumber + 1 : tracknumber; return tracknumber & 0xF; } } gint get_midi_prognum (DenemoStaff * staff) { if (staff->midi_channel == 9) { return 0; } else { return select_program (staff->midi_instrument->str); } } gint get_midi_port (DenemoStaff * staff) { return staff->midi_port; } /* change the MIDI output tuning */ void change_tuning (gdouble * cents) { guchar buffer[] = { 0xF0, 0x7F, // Universal Real-Time SysEx header 0x7F, // ID of target device (7F = all devices) 0x08, // sub-ID#1 = "MIDI Tuning Standard" 0x08, // sub-ID#2 = "scale/octave tuning 1-byte form (Real-Time)" 0x03, /* channel/options byte 1 bits 0 to 1 = channel 15 to 16 bit 2 to 6 = reserved for future expansion */ 0x7F, // channel byte 2 - bits 0 to 6 = channel 8 to 14 0x7F, // channel byte 3 - bits 0 to 6 = channel 1 to 7 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* [ss] 12 byte tuning offset of 12 semitones from C to B 00H means -64 cents 40H means 0 cents (equal temperament) 7FH means +63 cents */ 0xF7 // EOX }; gint i; for (i = 0; i < 12; i++) buffer[i + 8] = 64 + (cents[i] + 0.5); play_midi_event (DEFAULT_BACKEND, 0, buffer); } //return the midi key of the passed event if note on, else 0 int noteon_key (smf_event_t * event) { if ((event->midi_buffer[0] & SYS_EXCLUSIVE_MESSAGE1) == MIDI_NOTE_ON) return event->midi_buffer[1]; return 0; } denemo-2.2.0/src/audio/PaxHeaders.19168/pitchentry.c0000644000000000000000000000013213135434036016756 xustar0030 mtime=1500919838.333315139 30 atime=1500919918.939981805 30 ctime=1500919914.083315138 denemo-2.2.0/src/audio/pitchentry.c0000644000175000017500000016160313135434036020636 0ustar00jjbenhamjjbenham00000000000000/* pitchentry.c * responses to pitchrecognition from audio in * * for Denemo, a gtk+ frontend to GNU Lilypond * (c)2007 Richard Shann */ #include #include /* for strcmp() */ #include /* for abs() */ #include "audio/audio.h" #include "audio/pitchentry.h" #include "core/view.h" #include "audio/audiointerface.h" #include "command/measure.h" #include "audio/pitchrecog.h" #include "audio/audiocapture.h" #define DEFAULT_HIGH (1400.0) #define DEFAULT_LOW (60.0) #define DEFAULT_TIMER_RATE (50) #define QUARTER_COMMA_MEAN_TONE "Quarter comma meantone" static GtkWidget *PR_window = NULL; /* a top level window for controlling pitch-recognition entry. We do not create one of these for each view (ie each DenemoProject object, ie each score) because there is only one audio input source being used, so we would have to cope with resource contention issues, there is just no point. */ static DenemoProject *PR_gui; /* the gui for which the pitch recognition has been set up */ gint PR_click; /*volume of a audible warning of next measure or extra tones in measure */ static gboolean PR_tuning; /* whether the notes should be analyzed to refine the frequency determination for tuning instruments etc */ static GtkWidget *PR_notelabel = NULL; static GtkWidget *PR_deviation = NULL; static GtkWidget *PR_indicator = NULL; static GtkWidget *PR_label = NULL; static gdouble PR_target_pitch = 440.0; static gdouble PR_accurate_pitch = 0.0; static guint PR_timer; // timer id static guint PR_enter; // signal id static guint PR_leave; // signal id //keymap *PR_oldkeymap;// the keymap of PR_gui when PR was started //keymap *PR_rhythmkeymap;// special keymap for rhythm work. static guint PR_time = DEFAULT_TIMER_RATE; //the period of timer for checking for a new pitch in ms 10 gives quicker response,100 more reliability... gboolean PR_enable = TRUE; guint greatest_interval; static gdouble lowest_pitch = DEFAULT_LOW; static gdouble highest_pitch = DEFAULT_HIGH; static gboolean repeated_notes_allowed; static gdouble transposition_required = 1.0; static int enharmonic_position = 0; typedef struct notespec { guint step; /* 0=C 1=D ... 6=B */ gint alteration; /* -2 = bb, -1=b, 0=natural, 1=#, 2=x */ gint cents; //deviation from Equal } notespec; typedef struct notepitch { double pitch; /* pitch of note of given notespec in range C=260 to B=493 Hz actual pitch is *=2^octave */ notespec spec; } notepitch; typedef struct temperament { gchar *name; gint unusedsharp; /* which notepitch is the sharpest in circle of 5ths - initially G# */ gint unusedflat; /* which notepitch is the flattest in circle of 5ths - initially Eb */ notepitch notepitches[12]; /* pitches of C-natural, C#, ... A#, B-natural */ } temperament; static gint flat_degree = 3, sharp_degree = 8; /* which notepitch is the sharpest in circle of 5ths - initially G# flattest in circle of 5ths - initially Eb */ static gint temperament_offset = 0; /* shift in temperament around circle of 5ths */ #if 0 Pythagorean 261.6 279.4 294.3 310.1 331.1 348.8 372.5 392.4 419.1 441.5 465.1 496.7 Van Zwolle 261.6 279.4 294.3 314.3 331.1 353.6 372.5 392.4 419.1 441.5 471.5 496.7 Meantone 261.6 272.8 292.3 313.2 326.7 350.0 365.0 391.1 407.9 437.0 468.3 488.3 Silbermann I 261.6 275.0 293.0 312.2 328.1 349.6 367.5 391.6 411.6 438.5 467.2 491.1 Silbermann II 261.6 276.2 293.0 312.2 329.6 349.6 369.2 391.6 413.4 438.5 467.2 493.3 Rameau 261.6 276.9 293.3 309.7 330.4 348.8 369.2 391.1 413.9 438.5 463.0 493.9 Werckmeister III 261.6 277.5 293.3 311.1 328.9 350.0 370.0 391.1 414.8 438.5 466.7 493.3 Werckmeister IV 261.6 275.6 293.0 311.5 329.6 348.8 369.2 390.7 413.4 437.5 467.2 492.2 Werckmeister V 261.6 275.6 293.3 311.1 328.9 348.8 368.7 392.4 413.4 438.5 465.1 493.3 Werckmeister VI 261.6 278.3 293.8 311.3 331.1 349.5 372.5 391.7 414.2 441.5 466.9 496.7 Kirnberger II 261.6 277.5 294.3 312.2 328.9 348.8 370.0 392.4 416.2 438.5 465.1 493.3 Kirnberger III 261.6 277.5 293.3 311.1 328.9 348.8 370.0 391.1 414.8 438.5 465.1 493.3 Italian 18 th Century 261.6 277.2 293.0 311.1 328.9 349.2 370.0 391.1 414.4 438.0 465.1 492.8 Equal Temperament 261.6 277.2 293.7 311.1 329.6 349.2 370.0 392.0 415.3 440.0 466.2 493.9 HARPSICHORD TUNING - A COURSE OUTLINE, by G.C.Klop, distributed by The Sunbury Press, P.O.Box 1778, Raleigh, NC 27602. #endif static temperament Pythagorean = { "Pythagorean", 8, 3, { {261.6, {0, 0, 0}}, {279.4, {0, 1, 0}}, {294.3, {1, 0, 0}}, {310.1, {2, -1,0}}, {331.1, {2, 0, 0}}, {348.8, {3, 0, 0}}, {372.5, {3, 1, 0}}, {392.4, {4, 0, 0}}, {419.1, {4, 1, 0}}, {441.5, {5, 0, 0}}, {465.1, {6, -1,0}}, {496.7, {6, 0, 0}} } }; static temperament Rameau = { "Rameau", 8, 3, { {261.6, {0, 0, 0}}, {276.9, {0, 1, 0}}, {293.3, {1, 0, 0}}, {309.7, {2, -1,0}}, {330.4, {2, 0, 0}}, {348.8, {3, 0, 0}}, {369.2, {3, 1, 0}}, {391.1, {4, 0, 0}}, {413.9, {4, 1, 0}}, {438.5, {5, 0, 0}}, {463.0, {6, -1,0}}, {493.9, {6, 0, 0}} } }; static temperament Equal = { "Equal", 8, 3, { {261.6, {0, 0, 0}}, {277.2, {0, 1, 0}}, {293.7, {1, 0, 0}}, {311.1, {2, -1, 0}}, {329.6, {2, 0, 0}}, {349.2, {3, 0, 0}}, {370.0, {3, 1, 0}}, {392.0, {4, 0, 0}}, {415.3, {4, 1, 0}}, {440.0, {5, 0, 0}}, {466.2, {6, -1, 0}}, {493.9, {6, 0, 0}} } }; static temperament Lehman = { "Lehman", 8, 3, { {262.37 * 1, {0, 0, 0}}, {262.37 * 1.0590, {0, 1, 0}}, {262.37 * 1.1203, {1, 0, 0}}, {262.37 * 1.1889, {2, -1, 0}}, {262.37 * 1.2551, {2, 0, 0}}, {262.37 * 1.3360, {3, 0, 0}}, {262.37 * 1.4120, {3, 1, 0}}, {262.37 * 1.4968, {4, 0, 0}}, {262.37 * 1.5869, {4, 1, 0}}, {262.37 * 1.6770, {5, 0, 0}}, {262.37 * 1.7816, {6, -1, 0}}, {262.37 * 1.8827, {6, 0, 0}} } }; static temperament Meantone = { QUARTER_COMMA_MEAN_TONE, 8, 3, { {261.6, {0, 0, 0}}, {272.8, {0, 1, 0}}, {292.3, {1, 0, 0}}, {313.2, {2, -1, 0}}, {326.7, {2, 0, 0}}, {350.0, {3, 0, 0}}, {365.0, {3, 1, 0}}, {391.1, {4, 0, 0}}, {407.9, {4, 1, 0}}, {437.0, {5, 0, 0}}, {468.3, {6, -1, 0}}, {488.3, {6, 0, 0}} } }; // 261.6 279.4 294.3 314.3 331.1 353.6 372.5 392.4 419.1 441.5 471.5 496.7 static temperament VanZwolle = { "Van Zwolle", 8, 3, { {261.6, {0, 0, 0}}, /* c */ {279.4, {0, 1, 0}}, {294.3, {1, 0, 0}}, /* d */ {314.3, {2, -1, 0}}, /* Eb */ {331.1, {2, 0, 0}}, /* e */ {353.6, {3, 0, 0}}, /* f */ {372.5, {3, 1, 0}}, {392.4, {4, 0, 0}}, /* g */ {419.1, {4, 1, 0}}, /* g# */ {441.5, {5, 0, 0}}, /* a */ {471.5, {6, -1, 0}}, /* Bb */ {496.7, {6, 0, 0}} /* b */ } }; //261.6 275.0 293.0 312.2 328.1 349.6 367.5 391.6 411.6 438.5 467.2 491.1 static temperament SilbermannI = { "Silbermann I", 8, 3, { {261.6, {0, 0, 0}}, /* c */ {275.0, {0, 1, 0}}, {293.0, {1, 0, 0}}, /* d */ {312.2, {2, -1, 0}}, /* Eb */ {328.1, {2, 0, 0}}, /* e */ {349.6, {3, 0, 0}}, /* f */ {367.5, {3, 1, 0}}, {391.6, {4, 0, 0}}, /* g */ {411.6, {4, 1, 0}}, /* g# */ {438.5, {5, 0, 0}}, /* a */ {467.2, {6, -1, 0}}, /* Bb */ {491.1, {6, 0, 0}} /* b */ } }; // 261.6 276.2 293.0 312.2 329.6 349.6 369.2 391.6 413.4 438.5 467.2 493.3 static temperament SilbermannII = { "Silbermann II", 8, 3, { {261.6, {0, 0, 0}}, /* c */ {276.2, {0, 1, 0}}, {293.0, {1, 0, 0}}, /* d */ {312.2, {2, -1, 0}}, /* Eb */ {329.6, {2, 0, 0}}, /* e */ {349.6, {3, 0, 0}}, /* f */ {369.2, {3, 1, 0}}, {391.6, {4, 0, 0}}, /* g */ {413.4, {4, 1, 0}}, /* g# */ {438.5, {5, 0, 0}}, /* a */ {467.2, {6, -1, 0}}, /* Bb */ {493.3, {6, 0, 0}} /* b */ } }; //261.6 277.5 293.3 311.1 328.9 350.0 370.0 391.1 414.8 438.5 466.7 493.3 static temperament WerckmeisterIII = { "Werckmeister III", 8, 3, { {261.6, {0, 0, 0}}, /* c */ {277.5, {0, 1, 0}}, {293.3, {1, 0, 0}}, /* d */ {311.1, {2, -1, 0}}, /* Eb */ {328.9, {2, 0, 0}}, /* e */ {350.0, {3, 0, 0}}, /* f */ {370.0, {3, 1, 0}}, {391.1, {4, 0, 0}}, /* g */ {414.8, {4, 1, 0}}, /* g# */ {438.5, {5, 0, 0}}, /* a */ {466.7, {6, -1, 0}}, /* Bb */ {493.3, {6, 0, 0}} /* b */ } }; static temperament WerckmeisterIV = { "Werckmeister IV", 8, 3, { {263.11, {0, 0, 0}}, /* c */ {275.93, {0, 1, 0}}, {294.66, {1, 0, 0}}, /* d */ {311.83, {2, -1, 0}}, /* Eb */ {330.00, {2, 0, 0}}, /* e */ {350.81, {3, 0, 0}}, /* f */ {369.58, {3, 1, 0}}, {392.88, {4, 0, 0}}, /* g */ {413.90, {4, 1, 0}}, /* g# */ {440.00, {5, 0, 0}}, /* a */ {469.86, {6, -1, 0}}, /* Bb */ {492.77, {6, 0, 0}} /* b */ } }; static temperament *PR_temperament = ⩵ /* the currently used temperament */ static temperament *temperaments[] = { &Equal, &Meantone, &WerckmeisterIII, &WerckmeisterIV, &Lehman, &Rameau, &Pythagorean, &SilbermannII, &SilbermannI, &VanZwolle}; static void pr_display_note (gchar * notename) { gchar *labelstr = g_strdup_printf ("%s", notename); //printf("string is %s\n", labelstr); gtk_label_set_markup (GTK_LABEL (PR_notelabel), labelstr); g_free (labelstr); } static void pr_display_pitch_deviation (double deviation) { gchar *labelstr = g_strdup_printf ("%2.1f", deviation > 0.0 ? "blue" : deviation < 0.0 ? "red" : "black", deviation); gtk_label_set_markup (GTK_LABEL (PR_deviation), labelstr); g_free (labelstr); } /* return c,d,e,f,g,a,b depending on the step. German translation will be difficult I'm afraid. */ static gchar step_name (guint step) { if (step > 4) step -= 7; return 'C' + step; } /* return "##", "#" ..." "..... "bb" for double sharp to double flat accidentals a const string is returned*/ static gchar * alteration_name (gint alteration) { switch (alteration) { case -2: return "ð„«"; case -1: return "â™­"; case 0: return ""; case 1: return "#"; case 2: return "ð„ª"; default: return "ER"; } } static gint fifths[7] = { 0, 2, 4, -1, 1, 3, 5 }; /* check_interval() checks the interval passed notes * returns TRUE if the interval is unusual */ gboolean check_interval (gint step1, gint enshift1, gint step2, gint enshift2) { gint distance = fifths[step1] + 7 * enshift1 - fifths[step2] - 7 * enshift2; if (distance > 6 || distance < -6) return TRUE; return FALSE; } gboolean check_midi_intervals (GList * midichord) { GList *g = midichord; gint most = 0, least = G_MAXINT; for (; g; g = g->next) { gint offset, enshift, octave, value; notenum2enharmonic (GPOINTER_TO_INT (g->data), &offset, &enshift, &octave); value = fifths[offset] + 7 * enshift; most = MAX (most, value); least = MIN (least, value); //g_debug("note %d value %d\noffset %d enshift %d least=%d most=%d\n", g->data, value, offset, least, least, most); } return abs (most - least) < 6; } /* returns the note names currently set for the given temperament caller must free the string */ static gchar * notenames (gpointer p) { temperament *t = (temperament *) p; gchar *str, *oldstr; gint i; oldstr = g_strdup (""); for (i = 0; i < 12; i++) { if (i == flat_degree) str = g_strdup_printf ("%s%c%s ", oldstr, step_name (t->notepitches[i].spec.step), alteration_name (t->notepitches[i].spec.alteration)); else if (i == sharp_degree) str = g_strdup_printf ("%s%c%s ", oldstr, step_name (t->notepitches[i].spec.step), alteration_name (t->notepitches[i].spec.alteration)); else str = g_strdup_printf ("%s%c%s ", oldstr, step_name (t->notepitches[i].spec.step), alteration_name (t->notepitches[i].spec.alteration)); g_free (oldstr); oldstr = str; } return str; } gchar * determine_interval (gint bass, gint harmony, gboolean * status) { gint semitones = harmony - bass; gint *accs = ((DenemoStaff *) Denemo.project->movement->currentstaff->data)->keysig.accs; notepitch bassnote = PR_temperament->notepitches[bass % 12]; notepitch harmonynote = PR_temperament->notepitches[harmony % 12]; gint interval = harmonynote.spec.step - bassnote.spec.step + 1; if (interval < 2) interval += 7; if (interval == 2 && semitones > 12) interval = 9; gint inflection = harmonynote.spec.alteration - accs[harmonynote.spec.step]; *status = check_interval (bassnote.spec.step, bassnote.spec.alteration, harmonynote.spec.step, harmonynote.spec.alteration); //g_debug("have %d %d\n", bassnote.spec.step, harmonynote.spec.step); // g_debug("Bass %d harmony %d\nInterval is %d, semitones is %d cf (%d, %d) \n keyaccs of bass note %d of harmony %d\ninflection %d\n", bass, harmony, interval, semitones, bassnote.spec.alteration, harmonynote.spec.alteration, accs[bassnote.spec.step], accs[harmonynote.spec.step], inflection); gchar *modifier = ""; if (interval == 5 && semitones == 6) modifier = "/"; else if (inflection < 0) modifier = "-"; else if (inflection > 0) modifier = "+"; if (harmony < bass) return g_strdup_printf ("%s", "~"); //an extender - was A non printing figure if (interval == 3 && inflection) return g_strdup_printf ("%c%s", '_', modifier); else return g_strdup_printf ("%d%s", interval, modifier); } static gchar * nameof (gint notenumber) { return g_strdup_printf ("%c%s", step_name (PR_temperament->notepitches[notenumber].spec.step), alteration_name (PR_temperament->notepitches[notenumber].spec.alteration)); } //Caller must free gchar * sharpest (void) { return nameof (sharp_degree); } gchar * flattest (void) { return nameof (flat_degree); } /* returns an opaque id for the user's default temperament FIXME user prefs */ static gpointer default_temperament () { gint i; for (i = 0; i < G_N_ELEMENTS (temperaments); i++) { if (!strcmp (Denemo.prefs.temperament->str, temperaments[i]->name)) return (gpointer) temperaments[i]; } return (gpointer) & Equal; } static void sharpen (GtkWidget * label) { enharmonic_position++; #define f (PR_temperament->notepitches[flat_degree].spec) gint next = (flat_degree + 11) % 12; #define g (PR_temperament->notepitches[next].spec) if (g.alteration + 1 > 2) return; else { f.step = g.step; f.alteration = g.alteration + 1; } #undef f #undef g sharp_degree = flat_degree; flat_degree = (flat_degree + 7) % 12; temperament_offset = (temperament_offset + 5) % 12; if (!Denemo.non_interactive) { gchar *names = notenames (PR_temperament); gtk_label_set_markup ((GtkLabel *) label, names); g_free (names); switch_back_to_main_window (); } reset_temperament (); return; } static void flatten (GtkWidget * label) { enharmonic_position--; #define s (PR_temperament->notepitches[sharp_degree].spec) gint next = (sharp_degree + 1) % 12; #define t (PR_temperament->notepitches[next].spec) if (t.alteration - 1 < -2) return; else { s.step = t.step; s.alteration = t.alteration - 1; } #undef s #undef t flat_degree = sharp_degree; sharp_degree = (sharp_degree + 5) % 12; temperament_offset = (temperament_offset + 7) % 12; if (!Denemo.non_interactive) { gchar *names = notenames (PR_temperament); gtk_label_set_markup ((GtkLabel *) label, names); g_free (names); switch_back_to_main_window (); } reset_temperament (); return; } void adjust_tonal_center (gint * accs) { gint i; gint center; for (center = 0, i = 0; i < 7; i++) center += accs[i]; set_enharmonic_position (center); } void set_enharmonic_position (gint position) { while (position < enharmonic_position) { set_flatter (NULL, NULL); } while (position > enharmonic_position) { set_sharper (NULL, NULL); } } gint get_enharmonic_position (void) { return enharmonic_position; } static void enharmonic_step (gboolean sharp) { gchar *sharpestname, *flattestname; if (sharp) sharpen (PR_label); else flatten (PR_label); } void set_sharper (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { enharmonic_step (TRUE); } void set_flatter (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { enharmonic_step (FALSE); } void signal_measure_end (void) { if (Denemo.prefs.immediateplayback) { play_note (DEFAULT_BACKEND, 0 /*port */ , 9, Denemo.prefs.measureswitchsound, 300, 127);//(gint) (100 * Denemo.project->movement->master_volume)); } } //Computes the mid_c_offset and enshift for the MIDI notenum passed in void notenum2enharmonic (gint notenum, gint * poffset, gint * penshift, gint * poctave) { *penshift = notenum % 12; temperament *t = PR_temperament; *poctave = (notenum) / 12 - 5; *poffset = t->notepitches[*penshift].spec.step; *penshift = t->notepitches[*penshift].spec.alteration; if ((notenum % 12) == 0 && *penshift == 1) *poctave = *poctave - 1; if ((notenum % 12) == 11 && *penshift == -1) *poctave = *poctave + 1; return; } #ifdef _HAVE_PORTAUDIO_ static void sound_click (void) { if (PR_click) signal_measure_end (); } static GList * get_tones (GList * tone_store, gint measurenum) { GList *g = g_list_nth (tone_store, measurenum); if (g) return g->data; return NULL; } /* apply the tones in the currentmeasure to the notes of the currentmeasure * return TRUE if measure has enough tones for all its notes */ gboolean apply_tones (DenemoMovement * si) { gboolean ret = FALSE; DenemoStaff *curstaff = ((DenemoStaff *) si->currentstaff->data); GList *store; gint measurenum; store = (curstaff->tone_store); measurenode *curmeasure = curstaff->themeasures; GList *store_el = NULL; // move cursor to start of current measure si->currentobject = (objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects; si->cursor_x = 0; si->cursor_appending = !GPOINTER_TO_INT (si->currentobject); //calcmarkboundaries (si); measurenum = si->currentmeasurenum - 1; curmeasure = si->currentmeasure; if (curmeasure) { store_el = get_tones (store, measurenum); objnode *curobj = ((DenemoMeasure*)curmeasure->data)->objects; while (curobj) { tone *thetone = NULL; //skip over invalid tones while (store_el && (thetone = (tone *) store_el->data) && !thetone->valid) store_el = store_el->next; gboolean tone_stored = FALSE; DenemoObject *theobj = (DenemoObject *) curobj->data; if (theobj->type == CHORD && ((chord *) theobj->object)->notes /* not a rest */ ) { if (thetone == NULL || store_el == NULL) ((chord *) theobj->object)->tone_node = NULL; else { gint dclef = theobj->clef->type; gint mid_c_offset = thetone->step; ((chord *) theobj->object)->tone_node = store_el; modify_note ((chord *) theobj->object, mid_c_offset, thetone->enshift, dclef); tone_stored = TRUE; if (!si->cursor_appending) cursorright (NULL, NULL); store_el = store_el->next; } // tone available } // note available /* skip over non notes */ do { curobj = curobj->next; if (curobj) theobj = (DenemoObject *) curobj->data; } while (curobj && (theobj->type != CHORD || ((chord *) theobj->object)->notes == NULL)); if (tone_stored && curobj == NULL && curmeasure->next) ret = TRUE; } // while objects in measure if (store_el && !Denemo.prefs.continuous) sound_click (); //extra tones in measure showwhichaccidentals ((objnode *) ((DenemoMeasure*)si->currentmeasure->data)->objects); } return ret; } /* * enter_note_in_score * enters the note FOUND in the score gui->movement at octave OCTAVE steps above/below mid-c */ static void enter_note_in_score (DenemoProject * gui, notepitch * found, gint octave) { //printf("Cursor_y %d and staffletter = %d\n", gui->movement->cursor_y, gui->movement->staffletter_y); gui->last_source = INPUTAUDIO; gui->movement->cursor_y = gui->movement->staffletter_y = found->spec.step; gui->movement->cursor_y += 7 * octave; //edit_or_append_pitch (found->spec.step, found->spec.alteration); Denemo.project->movement->pending_enshift = found->spec.alteration; edit_or_append_pitch (found->spec.step, TRUE); Denemo.project->movement->pending_enshift = 0; displayhelper (gui); } static GList * put_tone (GList * store, gint measurenum, tone * thetone) { // extend store if too small gint i = measurenum + 1 - g_list_length (store); for (; i > 0; i--) { store = g_list_append (store, NULL); } GList *g = g_list_nth (store, measurenum); if (g) g->data = g_list_append (g->data, thetone); return store; } /* * enter_tone_in_store * enters the note FOUND as a tone in the tone store */ static void enter_tone_in_store (DenemoProject * gui, notepitch * found, gint octave) { gboolean nextmeasure; tone *thetone = (tone *) g_malloc0 (sizeof (tone)); //g_debug("tone %p\n", thetone); thetone->enshift = found->spec.alteration; thetone->step = found->spec.step + 7 * octave; thetone->octave = octave; thetone->valid = TRUE; #define store (((DenemoStaff*)gui->movement->currentstaff->data)->tone_store) store = put_tone (store, gui->movement->currentmeasurenum - 1, thetone); nextmeasure = apply_tones (gui->movement); displayhelper (gui); if (Denemo.prefs.continuous && nextmeasure) { sound_click (); measureright (NULL, NULL); } #undef store } /* * clear the references to tones (ie any overlay) in the currentstaff */ static void clear_tone_nodes (DenemoProject * gui) { DenemoMovement *si = gui->movement; DenemoStaff *curstaff = ((DenemoStaff *) si->currentstaff->data); measurenode *curmeasure; for (curmeasure = curstaff->themeasures; curmeasure; curmeasure = curmeasure->next) { objnode *curobj = ((DenemoMeasure*)curmeasure->data)->objects; for (; curobj; curobj = curobj->next) { DenemoObject *theobj = (DenemoObject *) curobj->data; if (theobj->type == CHORD) { ((chord *) theobj->object)->tone_node = NULL; } } } } static void free_tones (GList * tones) { if (tones) { g_list_foreach (tones, freeit, NULL); g_list_free (tones); } } // clear gui->movement->currentstaff->data->tone_store and the references to it static void clear_tone_store (G_GNUC_UNUSED GtkButton * button, DenemoProject * gui) { #define store (((DenemoStaff*)gui->movement->currentstaff->data)->tone_store) g_list_foreach (store, (GFunc) free_tones, NULL); clear_tone_nodes (gui); g_list_free (store); store = NULL; #undef store displayhelper (gui); if (PR_gui) switch_back_to_main_window (); } void clear_overlay (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam* param) { DenemoProject *gui = Denemo.project; clear_tone_store (NULL, gui); } /* * clear the references to tones (ie any overlay) in the currentmeasure */ /* UNUSED static void clear_tone_nodes_currentmeasure (DenemoMovement * si) { measurenode *curmeasure = si->currentmeasure; objnode *curobj = ((DenemoMeasure*)curmeasure->data)->objects; for (; curobj; curobj = curobj->next) { DenemoObject *theobj = (DenemoObject *) curobj->data; if (theobj->type == CHORD) { ((chord *) theobj->object)->tone_node = NULL; } } } */ gboolean delete_tone (DenemoMovement * si, chord * thechord) { GList *tone_node = thechord->tone_node; if (tone_node) { ((tone *) tone_node->data)->valid = FALSE; objnode *keep = si->currentobject; gint keepx = si->cursor_x; gboolean keepa = si->cursor_appending; apply_tones (si); /*restore the position of the cursor before the delete of the tone */ si->currentobject = keep; si->cursor_x = keepx; si->cursor_appending = keepa; calcmarkboundaries (si); displayhelper (Denemo.project); score_status(Denemo.project, TRUE); return TRUE; } else { return FALSE; } } /* return note for the passed pitch, or NULL if not a good note; * @param pitch, the pitch being enquired about * @temperament, the temperament to use to determine which pitch. * @param which_octave returns the number of the octave above/below mid_c FIXME there is a bug when the enharmonic changes take b# into the wrong octave */ static notepitch * determine_note (gdouble pitch, temperament * t, gint * which_octave, double *deviation) { gint i; gint octave = 0; while (pitch > t->notepitches[11].pitch * (1.0231) /* quartertone */ ) { //printf("pitch going down %f pitch %f\n", pitch, t->notepitches[11].pitch*(1.0231) ); pitch /= 2; octave++; } while (pitch < t->notepitches[0].pitch * (0.977) /* quartertone */ ) { //printf("pitch going up %f pitch\n", pitch); pitch *= 2; octave--; } for (i = 0; i < 12; i++) { //printf("considering %d %f\n", pitch, t->notepitches[i].pitch); if ((pitch > t->notepitches[i].pitch * (0.977)) && (pitch <= t->notepitches[i].pitch * (1.0231))) { *which_octave = octave; //printf("found %d octave \n", octave); *deviation = (pitch - t->notepitches[i].pitch) / (t->notepitches[i].pitch * (pow (2, 1.0 / 12.0) - 1.0) / 100.0); return &t->notepitches[i]; } } return NULL; } static void display_pitch (double note) { gint octave; double deviation; temperament *t = (temperament *) PR_temperament; if (!GTK_IS_WINDOW (PR_window)) return; notepitch *found = determine_note (note, t, &octave, &deviation); if (found) { int i; gchar *octstr = g_strdup (""); for (i = 0; i < octave + 1; i++) { gchar *str = g_strdup_printf ("%s%c", octstr, '\''); g_free (octstr); octstr = str; } for (i = 0; i > octave + 1; i--) { gchar *str = g_strdup_printf ("%s%c", octstr, ','); g_free (octstr); octstr = str; } pr_display_note (g_strdup_printf ("%c%s%s", step_name (found->spec.step), alteration_name (found->spec.alteration), octstr)); g_free (octstr); pr_display_pitch_deviation (deviation); // FIXME if tuning display a graphic for how far note is from target_note if (PR_tuning) { PR_accurate_pitch = note; //gtk_widget_draw(PR_indicator, NULL); gtk_widget_queue_draw (PR_indicator); draw_score (NULL); gtk_widget_queue_draw (PR_indicator); } } //fprintf(stderr, "Pitch is %0.2f\t", note); } static gint measure_pitch_accurately (G_GNUC_UNUSED gpointer data) { double note = determine_frequency (); //g_debug("returned %f\n", note); if (note > 0.0) display_pitch (note); return TRUE; } static float Freq2Pitch (float freq) { return 0.5 + (69.0 + 12.0 * (log (freq / 440.0) / log (2.0))); } #ifdef DISABLE_AUBIO #else /* look for a new note played into audio input, if present insert it into the score/store */ gint pitchentry (DenemoProject * gui) { static gint last_step = -1, last_alteration, last_octave; if (PR_window == NULL) return FALSE; /* stops the timer */ double deviation; temperament *t = (temperament *) PR_temperament; gint octave; gdouble note; note = get_pitch (); note *= transposition_required; if ((note < highest_pitch) && (note > lowest_pitch)) { //printf("Got a note %2.1f\n", note); notepitch *found = determine_note (note, t, &octave, &deviation); if (found) { /* if tuning */ if (PR_tuning) { setTuningTarget (note); PR_target_pitch = found->pitch * (pow (2, (octave))); } if (!repeated_notes_allowed) if (found->spec.step == last_step && found->spec.alteration == last_alteration && (octave == last_octave || octave == last_octave - 1) /* sometimes it jumps down an octave */ ) { last_step = -1; printf ("Ignoring repeated note\n"); return TRUE; } last_step = found->spec.step; last_alteration = found->spec.alteration; last_octave = octave; if (!PR_enable) { //printf("Enter the score area to insert notes!"); return TRUE; } // Enter the note in the score if (!PR_tuning) { display_pitch (note); if (gui->input_source == INPUTMIDI) { gint key = (gint) (Freq2Pitch (found->pitch * (pow (2, (octave))))); //g_debug("pitch %f key number %d\n",found->pitch, key); DenemoStaff *curstaffstruct = ((DenemoStaff *) Denemo.project->movement->currentstaff->data); play_note (DEFAULT_BACKEND, curstaffstruct->midi_port, curstaffstruct->midi_channel, key, 300 /*duration */ , 0); } if (gui->input_source == INPUTMIDI || !Denemo.prefs.overlays) { enter_note_in_score (gui, found, octave); if (gui->mode & INPUTRHYTHM) { static gboolean beep = FALSE; gint measure = gui->movement->currentmeasurenum; scheme_next_note (NULL); if (measure != gui->movement->currentmeasurenum) beep = TRUE; else if (beep) signal_measure_end (), beep = FALSE; } } else enter_tone_in_store (gui, found, octave); } } //note found } // acceptable range return TRUE; } // toggle continuous advance to next measure or not static void toggle_continuous (G_GNUC_UNUSED GtkButton * button, G_GNUC_UNUSED gpointer data) { Denemo.prefs.continuous = !Denemo.prefs.continuous; switch_back_to_main_window (); } static void change_silence (GtkSpinButton * widget, G_GNUC_UNUSED gpointer data) { double silence = gtk_spin_button_get_value (widget); set_silence (silence); switch_back_to_main_window (); } static void change_threshold (GtkSpinButton * widget, G_GNUC_UNUSED gpointer data) { double t = gtk_spin_button_get_value (widget); set_threshold (t); switch_back_to_main_window (); } static void change_smoothing (GtkSpinButton * widget, G_GNUC_UNUSED gpointer data) { double m = gtk_spin_button_get_value (widget); set_smoothing (m); switch_back_to_main_window (); } static void change_onset_detection (GtkSpinButton * widget, G_GNUC_UNUSED gpointer data) { guint m = gtk_spin_button_get_value (widget); set_onset_type (m); switch_back_to_main_window (); } static void change_lowest_pitch (GtkSpinButton * widget, G_GNUC_UNUSED gpointer data) { lowest_pitch = gtk_spin_button_get_value (widget); switch_back_to_main_window (); } static void change_highest_pitch (GtkSpinButton * widget, G_GNUC_UNUSED gpointer data) { highest_pitch = gtk_spin_button_get_value (widget); switch_back_to_main_window (); } static void change_greatest_interval (GtkSpinButton * widget, G_GNUC_UNUSED gpointer data) { greatest_interval = gtk_spin_button_get_value_as_int (widget); switch_back_to_main_window (); } static void change_transposition (GtkSpinButton * widget, G_GNUC_UNUSED gpointer data) { gdouble power = gtk_spin_button_get_value_as_int (widget); transposition_required = pow (2.0, power); switch_back_to_main_window (); //printf("transposing = %f 2^1/12=%f\n", transposition_required, pow(2,1.0/12.0)); } static void frequency_smoothing (GtkSpinButton * widget, G_GNUC_UNUSED gpointer data) { double m = gtk_spin_button_get_value (widget); set_frequency_smoothing (m); } #endif /* stop_pitch_input if not midi stop audio and aubio */ int stop_pitch_input (void) { #ifdef DISABLE_AUBIO return -1; #else DenemoProject *gui = Denemo.project; if (PR_timer) g_source_remove (PR_timer); if (PR_enter) g_signal_handler_disconnect (Denemo.scorearea, PR_enter); if (PR_leave) g_signal_handler_disconnect (Denemo.scorearea, PR_leave); PR_timer = PR_enter = PR_leave = 0; if (gui->input_source == INPUTAUDIO) terminate_pitch_recognition (); // else // stop_midi_input(); clear_tone_store (NULL, gui); if (GTK_IS_WINDOW (PR_window)) { GtkWidget *temp = PR_window; PR_window = NULL, gtk_widget_destroy (temp); } PR_gui = NULL; return 0; #endif } static gboolean window_destroy_callback (void) { if (PR_gui == NULL) return FALSE; activate_action ("KeyboardOnly");//FIXME will not set radio buttons PR_window = NULL; clear_tone_store (NULL, Denemo.project); return FALSE; } static gboolean stop_tuning_callback () { PR_tuning = FALSE; collect_data_for_tuning (PR_tuning); PR_indicator = NULL; return FALSE; } static void toggle_repeated_notes_allowed () { repeated_notes_allowed = !repeated_notes_allowed; switch_back_to_main_window (); } //eventually make this value control the loudness of a click static void change_click_volume (GtkSpinButton * widget) { PR_click = (guint) gtk_spin_button_get_value (widget); switch_back_to_main_window (); } static void change_timer_rate (GtkSpinButton * widget, G_GNUC_UNUSED gpointer data) { PR_time = (guint) gtk_spin_button_get_value (widget); start_pitch_input (); //FIXME do not call the whole of start_pitch_recognition, just the timer setting bit??? switch_back_to_main_window (); } // toggle Denemo.prefs.overlays to show where the notes detected should go static void toggle_insert (G_GNUC_UNUSED GtkButton * button) { Denemo.prefs.overlays = !Denemo.prefs.overlays; clear_tone_store (NULL, Denemo.project); switch_back_to_main_window (); } static gint draw_indicator (GtkWidget * widget) { int barwidth = 20; int centre = 400; double cent = log10f (PR_accurate_pitch / PR_target_pitch) * 1200 / log10f (2); int iCent = lround ((2 * cent + 100) * 4); // causes warning if not stdc=-c99, whose problem is this? //value 400 is perfect, 410 = 5/2 cents sharp if (iCent < 0) iCent = 0; if (iCent > 800) iCent = 800; cairo_t *cr = gdk_cairo_create (gtk_widget_get_window (widget)); if (iCent < 380) cairo_set_source_rgb (cr, 1, 0, 0); else if (iCent > 420) cairo_set_source_rgb (cr, 0, 0, 1); else cairo_set_source_rgb (cr, 0, 1, 0); cairo_rectangle (cr, iCent - barwidth / 2, 0, barwidth, 320); cairo_fill (cr); cairo_set_source_rgb (cr, 0, 0, 0); cairo_rectangle (cr, centre - barwidth / 8, 0, barwidth / 4, 320); cairo_fill (cr); cairo_destroy (cr); return TRUE; } static void toggle_tuning (GtkToggleButton * button, DenemoProject * gui) { static int id; static GtkWidget *widget; PR_tuning = gtk_toggle_button_get_active (button); collect_data_for_tuning (PR_tuning); if (PR_tuning) { if (PR_indicator == NULL) { widget = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (widget), "Tuning Indicator"); gtk_window_set_default_size (GTK_WINDOW (widget), 800, 100); g_signal_connect (G_OBJECT (widget), "destroy", G_CALLBACK (stop_tuning_callback), NULL); GtkWidget *hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (widget), hbox); PR_indicator = gtk_drawing_area_new (); gtk_box_pack_start (GTK_BOX (hbox), PR_indicator, TRUE, TRUE, 0); #if GTK_MAJOR_VERSION==3 g_signal_connect (G_OBJECT (PR_indicator), "draw", G_CALLBACK (draw_indicator), NULL); #else g_signal_connect (G_OBJECT (PR_indicator), "expose_event", G_CALLBACK (draw_indicator), NULL); #endif gtk_widget_show_all (widget); } gtk_window_present (GTK_WINDOW (widget)); id = g_timeout_add (200, (GSourceFunc) measure_pitch_accurately, NULL); } else if (id) { if (PR_indicator) gtk_widget_hide (widget); g_source_remove (id); id = 0; } } #endif /* return an array of values representing deviations from equal temperament for 12 notes from C for the passed temperament. Returned value is read only */ static gdouble * get_cents (temperament * t) { static gdouble array[12]; int i, j; for (i = 0; i < 12; i++) { j = (i + temperament_offset) % 12; //g_debug("cents tempered %d to %d unshifted %f shifted %f\n", i, j, 1200 * log2(t->notepitches[i].pitch/Equal.notepitches[i].pitch), 1200 * log2(t->notepitches[j].pitch/Equal.notepitches[j].pitch)); array[i] = 1200 * log2 (t->notepitches[j].pitch / Equal.notepitches[j].pitch); } return array; } /* return a string off offsets from 64 representing cents deviation for current temperment caller must free*/ gchar * get_cents_string (void) { gdouble *values = get_cents (PR_temperament); return g_strdup_printf (" %d %d %d %d %d %d %d %d %d %d %d %d ", (gint) (64 + values[0]) & 0x7f, (gint) (64 + values[1]) & 0x7f, (gint) (64 + values[2]) & 0x7f, (gint) (64 + values[3]) & 0x7f, (gint) (64 + values[4]) & 0x7f, (gint) (64 + values[5]) & 0x7f, (gint) (64 + values[6]) & 0x7f, (gint) (64 + values[7]) & 0x7f, (gint) (64 + values[8]) & 0x7f, (gint) (64 + values[9]) & 0x7f, (gint) (64 + values[10]) & 0x7f, (gint) (64 + values[11]) & 0x7f); } gchar * get_sharpest (void) { return nameof (sharp_degree); } gchar * get_flattest (void) { return nameof (flat_degree); } gchar * get_temperament_name (void) { return g_strdup (PR_temperament->name); } void set_tuning (void) { if (strcmp (PR_temperament->name, QUARTER_COMMA_MEAN_TONE)) change_tuning (get_cents (PR_temperament)); else set_meantone_tuning (enharmonic_position); //Really other temperaments could do this too... } #define COLUMN_NAME (0) #define COLUMN_PTR (1) static void temperament_changed_callback (GtkComboBox * combobox, GtkListStore * list_store) { GtkTreeIter iter; gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combobox), &iter); gtk_tree_model_get (GTK_TREE_MODEL (list_store), &iter, COLUMN_PTR, &PR_temperament, -1); set_tuning (); //note synth may not be attached... g_string_assign (Denemo.prefs.temperament, PR_temperament->name); switch_back_to_main_window (); } void reset_temperament (void) { change_tuning (get_cents (PR_temperament)); } GtkWidget * get_enharmonic_frame (void) { static GtkWidget *frame; if (frame == NULL) { frame = gtk_frame_new ("Enharmonic selection"); g_object_ref (frame); //gtk_container_add (GTK_CONTAINER (main_vbox), frame); GtkWidget *hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), hbox); GtkWidget *label = gtk_label_new (""); PR_label = label; label = gtk_label_new (""); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gchar *button_label = g_strdup_printf ("â™­ â—„", Denemo.prefs.fontsize); gtk_label_set_markup (GTK_LABEL (label), button_label); GtkWidget *button = gtk_button_new (); gtk_container_add (GTK_CONTAINER(button), label); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK(set_flatter), NULL); gchar *names = notenames (PR_temperament); //label = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (PR_label), names); g_free (names); gtk_box_pack_start (GTK_BOX (hbox), PR_label, FALSE, TRUE, 0); label = gtk_label_new (""); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); g_free (button_label); button_label = g_strdup_printf ("â–º ♯", Denemo.prefs.fontsize); gtk_label_set_markup (GTK_LABEL (label), button_label); g_free (button_label); button = gtk_button_new (); gtk_container_add (GTK_CONTAINER(button), label); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK(set_sharper), NULL); } GtkWidget *cont = gtk_widget_get_parent (frame); if (cont) gtk_container_remove (GTK_CONTAINER (cont), frame); return frame; } GtkWidget * get_temperament_combo (void) { static GtkWidget *combobox; if (combobox == NULL) { GtkListStore *list_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_POINTER); GtkCellRenderer *renderer; combobox = gtk_combo_box_new_with_model (GTK_TREE_MODEL (list_store)); gtk_widget_set_tooltip_text (combobox, _("Set the musical temperament (tuning) to be used for playback.")); g_object_ref (combobox); PR_temperament = ⩵ int i; for (i = 0; i < (gint) G_N_ELEMENTS (temperaments); i++) { GtkTreeIter iter; gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, COLUMN_NAME, temperaments[i]->name, COLUMN_PTR, temperaments[i], -1); if ((i == 0) || (Denemo.prefs.temperament && !strcmp (Denemo.prefs.temperament->str, temperaments[i]->name))) { gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), &iter); PR_temperament = temperaments[i]; } } renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combobox), renderer, "text", COLUMN_NAME); g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (temperament_changed_callback), list_store); //set_tuning(); } // GtkWidget *cont = gtk_widget_get_parent(combobox); // if(cont) // gtk_container_remove(GTK_CONTAINER(cont), combobox); return combobox; } #ifdef _HAVE_PORTAUDIO_ static void create_pitch_recognition_window (DenemoProject * gui) { #ifdef DISABLE_AUBIO return; #else GtkWidget *hbox, *hbox2; GtkWidget *button; GtkWidget *frame; GtkWidget *label; GtkAdjustment *spinner_adj; GtkWidget *spinner; if (GTK_IS_WINDOW (PR_window)) { g_warning ("unexpected call"); return; } PR_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (PR_window), "Pitch Input Control"); g_signal_connect (G_OBJECT (PR_window), "destroy", G_CALLBACK (window_destroy_callback), NULL); GtkWidget *main_vbox = gtk_vbox_new (FALSE, 1); gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 1); gtk_container_add (GTK_CONTAINER (PR_window), main_vbox); if (gui->input_source == INPUTAUDIO) { frame = gtk_frame_new ("Mode"); gtk_container_add (GTK_CONTAINER (main_vbox), frame); hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), hbox); GtkWidget *vbox = gtk_vbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); GtkWidget *radio_button = gtk_radio_button_new_with_label (NULL, "Overlay Pitches"); g_signal_connect (G_OBJECT (radio_button), "toggled", G_CALLBACK (toggle_insert), NULL); button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio_button), "Insert Notes"); //g_debug("Overlays %d\n", Denemo.prefs.overlays); if (Denemo.prefs.overlays) { //gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(button), FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE); } else { Denemo.prefs.overlays = !Denemo.prefs.overlays; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE); //gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(radio_button), FALSE); } //g_debug("Overlays after button setting %d\n", Denemo.prefs.overlays); gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0); /* no need for callback */ gtk_box_pack_start (GTK_BOX (vbox), radio_button, TRUE, TRUE, 0); button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio_button), "Tuning"); g_signal_connect (G_OBJECT (button), "toggled", G_CALLBACK (toggle_tuning), gui); gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0); frame = gtk_frame_new (_("Overlay Pitches")); gtk_container_add (GTK_CONTAINER (hbox), frame); GtkWidget *vbox2 = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), vbox2); hbox2 = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (vbox2), hbox2, TRUE, TRUE, 0); button = gtk_button_new_with_label (_("Clear Overlay")); //FIXME make this a proxy for the ClearOverlay action ?? gtk_box_pack_start (GTK_BOX (hbox2), button, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (clear_tone_store), gui); hbox2 = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (vbox2), hbox2, TRUE, TRUE, 0); button = gtk_check_button_new_with_label (_("Continuous")); gtk_box_pack_start (GTK_BOX (hbox2), button, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (toggle_continuous), NULL); if (Denemo.prefs.continuous) { Denemo.prefs.continuous = !Denemo.prefs.continuous; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), !Denemo.prefs.continuous); } label = gtk_label_new (_("Click Volume")); gtk_box_pack_start (GTK_BOX (hbox2), label, TRUE, TRUE, 0); PR_click = 1; spinner_adj = (GtkAdjustment *) gtk_adjustment_new ((double) PR_click, 0.0, 1.0, 1.0, 1.0, 1.0); spinner = gtk_spin_button_new (spinner_adj, 1.0, 1); gtk_box_pack_start (GTK_BOX (hbox2), spinner, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (spinner), "value-changed", G_CALLBACK (change_click_volume), NULL); } // if audio input allow use of overlay mechanism, MIDI can use MIDIAdvanceOnEdit filter. frame = get_enharmonic_frame (); if (!gtk_widget_get_parent (frame)) gtk_container_add (GTK_CONTAINER (main_vbox), frame); frame = gtk_frame_new ("Detected note"); gtk_container_add (GTK_CONTAINER (main_vbox), frame); hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), hbox); PR_notelabel = gtk_label_new ("---"); gtk_box_pack_start (GTK_BOX (hbox), PR_notelabel, TRUE, TRUE, 0); PR_deviation = gtk_label_new ("0.0"); gtk_box_pack_start (GTK_BOX (hbox), PR_deviation, TRUE, TRUE, 0); if (gui->input_source == INPUTAUDIO) { /* spinners to select silence, threshold, smoothing */ frame = gtk_frame_new (_("Pitch Recognition Parameters")); gtk_container_add (GTK_CONTAINER (main_vbox), frame); hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), hbox); hbox2 = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (hbox), hbox2, TRUE, TRUE, 0); label = gtk_label_new (_("Silence")); gtk_box_pack_start (GTK_BOX (hbox2), label, TRUE, TRUE, 0); spinner_adj = (GtkAdjustment *) gtk_adjustment_new (-90.0, -1000.0, 100.0, 10.0, 1.0, 1.0); spinner = gtk_spin_button_new (spinner_adj, 100.0, 0); gtk_box_pack_start (GTK_BOX (hbox), spinner, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (spinner), "value-changed", G_CALLBACK (change_silence), NULL); hbox2 = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (hbox), hbox2, TRUE, TRUE, 0); label = gtk_label_new (_("Threshold")); gtk_box_pack_start (GTK_BOX (hbox2), label, TRUE, TRUE, 0); spinner_adj = (GtkAdjustment *) gtk_adjustment_new (1.0, 0.01, 100.0, 0.1, 1.0, 1.0); spinner = gtk_spin_button_new (spinner_adj, 0.5, 2); gtk_box_pack_start (GTK_BOX (hbox2), spinner, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (spinner), "value-changed", G_CALLBACK (change_threshold), NULL); hbox2 = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (hbox), hbox2, TRUE, TRUE, 0); label = gtk_label_new (_("Smoothing")); gtk_box_pack_start (GTK_BOX (hbox2), label, TRUE, TRUE, 0); spinner_adj = (GtkAdjustment *) gtk_adjustment_new (6.0, 0.0, 100.0, 1.0, 1.0, 1.0); spinner = gtk_spin_button_new (spinner_adj, 0.5, 2); gtk_box_pack_start (GTK_BOX (hbox2), spinner, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (spinner), "value-changed", G_CALLBACK (change_smoothing), NULL); label = gtk_label_new (_("Onset")); gtk_box_pack_start (GTK_BOX (hbox2), label, TRUE, TRUE, 0); spinner_adj = (GtkAdjustment *) gtk_adjustment_new (7.0, 0.0, 7.0, 1.0, 1.0, 1.0); spinner = gtk_spin_button_new (spinner_adj, 0.5, 2); gtk_box_pack_start (GTK_BOX (hbox2), spinner, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (spinner), "value-changed", G_CALLBACK (change_onset_detection), NULL); } /* spinners to constrain the note values */ frame = gtk_frame_new (_("Note validation criteria")); gtk_container_add (GTK_CONTAINER (main_vbox), frame); hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), hbox); hbox2 = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (hbox), hbox2, TRUE, TRUE, 0); label = gtk_label_new (_("Lowest Pitch")); gtk_box_pack_start (GTK_BOX (hbox2), label, TRUE, TRUE, 0); spinner_adj = (GtkAdjustment *) gtk_adjustment_new (DEFAULT_LOW, 10.0, 2080.0, 10.0, 1.0, 1.0); spinner = gtk_spin_button_new (spinner_adj, 100.0, 1); gtk_box_pack_start (GTK_BOX (hbox), spinner, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (spinner), "value-changed", G_CALLBACK (change_lowest_pitch), NULL); hbox2 = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (hbox), hbox2, TRUE, TRUE, 0); label = gtk_label_new (_("Highest Pitch")); gtk_box_pack_start (GTK_BOX (hbox2), label, TRUE, TRUE, 0); spinner_adj = (GtkAdjustment *) gtk_adjustment_new (DEFAULT_HIGH, 120.0, 9600.0, 10.0, 1.0, 1.0); spinner = gtk_spin_button_new (spinner_adj, 100.0, 1); gtk_box_pack_start (GTK_BOX (hbox2), spinner, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (spinner), "value-changed", G_CALLBACK (change_highest_pitch), NULL); hbox2 = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (hbox), hbox2, TRUE, TRUE, 0); label = gtk_label_new (_("Greatest Interval")); gtk_box_pack_start (GTK_BOX (hbox2), label, TRUE, TRUE, 0); spinner_adj = (GtkAdjustment *) gtk_adjustment_new (8.0, 1.0, 15.0, 1.0, 1.0, 1.0); spinner = gtk_spin_button_new (spinner_adj, 1.0, 0); gtk_box_pack_start (GTK_BOX (hbox2), spinner, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (spinner), "value-changed", G_CALLBACK (change_greatest_interval), NULL); /* options */ if (gui->input_source == INPUTAUDIO) { frame = gtk_frame_new (_("Input handling")); gtk_container_add (GTK_CONTAINER (main_vbox), frame); hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), hbox); label = gtk_check_button_new_with_label (_("Disable repeated notes")); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (label), "clicked", G_CALLBACK (toggle_repeated_notes_allowed), NULL); label = gtk_label_new ("Transpose Input"); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); spinner_adj = (GtkAdjustment *) gtk_adjustment_new (0.0, -3.0, 3.0, 1.0, 1.0, 1.0); spinner = gtk_spin_button_new (spinner_adj, 1.0, 0); gtk_box_pack_start (GTK_BOX (hbox), spinner, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (spinner), "value-changed", G_CALLBACK (change_transposition), NULL); label = gtk_label_new (_("Delay")); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); spinner_adj = (GtkAdjustment *) gtk_adjustment_new (DEFAULT_TIMER_RATE, 1.0, 500.0, 10.0, 1.0, 1.0); spinner = gtk_spin_button_new (spinner_adj, 10.0, 0); gtk_box_pack_start (GTK_BOX (hbox), spinner, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (spinner), "value-changed", G_CALLBACK (change_timer_rate), NULL); frame = gtk_frame_new (_("Frequency Measurement")); gtk_container_add (GTK_CONTAINER (main_vbox), frame); hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), hbox); label = gtk_label_new (_("Frequency smoothing")); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); spinner_adj = (GtkAdjustment *) gtk_adjustment_new (0.25, 0.1, 1.0, 0.05, 0.05, 0.05); spinner = gtk_spin_button_new (spinner_adj, 0.5, 2); gtk_box_pack_start (GTK_BOX (hbox), spinner, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (spinner), "value-changed", G_CALLBACK (frequency_smoothing), NULL); frame = get_temperament_combo (); if (!gtk_widget_get_parent (frame)) gtk_container_add (GTK_CONTAINER (hbox), frame); } /* now show the window, but leave the main window with the focus */ gtk_window_set_focus_on_map ((GtkWindow *) PR_window, FALSE); gtk_widget_show_all (PR_window); gtk_window_set_focus ((GtkWindow *) PR_window, NULL); gtk_widget_grab_focus (Denemo.scorearea); // FIXME make the visibility of the Frequency Measurement frame depend of the tuning toggle // sort out the size of the drawing area // sort out how to pass the deviation from in-tune to the draw_indicator function #endif } gint setup_pitch_input (void) { #ifdef DISABLE_AUBIO return -1; #else DenemoProject *gui = Denemo.project; if (GTK_IS_WINDOW (PR_window)) { gtk_window_present (GTK_WINDOW (PR_window)); return 0; } if (PR_temperament == NULL) PR_temperament = default_temperament (); if (gui->input_source == INPUTAUDIO ? (initialize_pitch_recognition () == 0) : /*(init_midi_input()==0) */ TRUE) { if (gui->input_source == INPUTAUDIO) { //FIXME these should be done at initialize_pitch_recognition time set_silence (-90.0); set_threshold (0.3); set_smoothing (6.0); } if (gui->input_source == INPUTMIDI) { PR_time = 5; } } else return -1; transposition_required = 1.0; lowest_pitch = DEFAULT_LOW; highest_pitch = DEFAULT_HIGH; repeated_notes_allowed = TRUE; create_pitch_recognition_window (gui); //read_PRkeymap(gui); return 0; #endif } static void scorearea_set_active (G_GNUC_UNUSED GtkWidget * widget, G_GNUC_UNUSED GdkEventCrossing * event, G_GNUC_UNUSED gpointer data) { PR_enable = TRUE; //gtk_widget_draw(Denemo.scorearea, NULL); draw_score_area(); draw_score (NULL); } static void scorearea_set_inactive (G_GNUC_UNUSED GtkWidget * widget, G_GNUC_UNUSED GdkEventCrossing * event, G_GNUC_UNUSED gpointer data) { PR_enable = FALSE; //gtk_widget_draw(Denemo.scorearea, NULL); draw_score_area(); draw_score (NULL); } void start_pitch_input (void) { #ifdef DISABLE_AUBIO return; #else DenemoProject *gui = Denemo.project; if (PR_timer) g_source_remove (PR_timer); PR_timer = g_timeout_add (PR_time, (GSourceFunc) pitchentry, Denemo.project); if (PR_timer == 0) g_error ("Timer id 0 - if valid the code needs re-writing (documentation not clear)"); if (gui->input_source == INPUTAUDIO) { /* for input from microphone avoid accidental activation by insisting on pointer being in the score drawing area */ gtk_widget_add_events (Denemo.scorearea, GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK); PR_enter = g_signal_connect (G_OBJECT (Denemo.scorearea), "enter-notify-event", G_CALLBACK (scorearea_set_active), NULL); PR_leave = g_signal_connect (G_OBJECT (Denemo.scorearea), "leave-notify-event", G_CALLBACK (scorearea_set_inactive), NULL); } else PR_enable = TRUE; /* for midi input you are unlikely to enter notes by accident */ PR_gui = gui; #endif } gboolean pitch_recognition_system_active (void) { return PR_window != NULL; } gboolean pitch_entry_active (DenemoProject * gui) { return (PR_gui == gui) && PR_enable; } #else gboolean pitch_entry_active (DenemoProject * gui) { return 0; } gint setup_pitch_input (void) { return -1; } void start_pitch_input (void) { } int stop_pitch_input (void) { return 0; } void clear_overlay (DenemoAction * action, DenemoScriptParam* param) { } #endif denemo-2.2.0/src/audio/PaxHeaders.19168/audiointerface.h0000644000000000000000000000013213135434036017554 xustar0030 mtime=1500919838.333315139 30 atime=1500919919.006648472 30 ctime=1500919914.043315139 denemo-2.2.0/src/audio/audiointerface.h0000644000175000017500000001657713135434036021445 0ustar00jjbenhamjjbenham00000000000000/* * audiointerface.h * Interface definition for audio and MIDI backends. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #ifndef AUDIOINTERFACE_H #define AUDIOINTERFACE_H #include /** * The common interface for all audio and MIDI backends. */ typedef struct backend_t { /** * Initializes the backend with the given configuration. * * FIXME: the DenemoPrefs argument is both too general (backend-specific * settings would be enough) and redundant (there's a global instance * anyway). * * @param config the configuration object containing the backend's settings * * @return zero on success, a negative error code on failure */ int (*initialize) (DenemoPrefs * config); /** * Destroys the backend and cleans up all its resources. * * @return zero on success, a negative error code on failure */ int (*destroy) (); /** * Changes the backend's configuration, if possible without destroying and * recreating the backend. * * This is not used by any backends at the moment, but will be needed, for * example, to configure the audio input settings. * * @return zero on success, a negative error code on failure */ int (*reconfigure) (DenemoPrefs * config); /** * Called when playback is started. * * @return zero on success, a negative error code on failure */ int (*start_playing) (); /** * Called when playback is stopped. * * @return zero on success, a negative error code on failure */ int (*stop_playing) (); /** * Sends a MIDI panic CC and/or resets the synth engine. * * @return zero on success, a negative error code on failure */ int (*panic) (); } backend_t; /** * An enum that identifies a backend's type. */ typedef enum backend_type_t { /** * The default backend (either audio or MIDI) */ DEFAULT_BACKEND = -1, /** * The audio backend */ AUDIO_BACKEND = 0, /** * The MIDI backend */ MIDI_BACKEND = 1 } backend_type_t; // we only have two backends at the same time: audio and MIDI #define NUM_BACKENDS 2 /** * An enum that specifies a backend's priority regarding the playback time. */ typedef enum backend_timebase_prio_t { /** * The backend synchronizes to an external sample clock */ TIMEBASE_PRIO_AUDIO = 3, /** * The backend is not bound to any external clock */ TIMEBASE_PRIO_MIDI = 2, /** * The backend requires no timing information */ TIMEBASE_PRIO_DUMMY = 1 } backend_timebase_prio_t; typedef struct midi_event_t { backend_type_t backend; int port; int length; unsigned char data[3]; } midi_event_t; /** * Initializes the audio/MIDI subsystem. * * @return zero on success, a negative error code on failure */ int audio_initialize (DenemoPrefs * config); /** * Destroys and cleans up the audio/MIDI subsystem. * * @return zero on success, a negative error code on failure */ int audio_shutdown (); /** * Starts playing the current movement. */ void midi_play (gchar * callback); /** * Starts playing the current movements source audio. */ void audio_play (void); /** * Stops playing the current movement. */ void midi_stop (); /** * Plays a single MIDI event. * * @param backend the type of backend to be used * @param port the number of the backend's output port to be used. ignored * by most backends. * @param buffer the MIDI data to be sent */ int play_midi_event (backend_type_t backend, int port, unsigned char *buffer); /** * Plays a single note. * * @param backend the type of backend to be used * @param port the number of the backend's output port to be used. ignored * by most backends. * @param channel the note's MIDI channel * @param key the MIDI note number * @param duration the note's duration in milliseconds * @param volume the note's volume (1-127) */ int play_note (backend_type_t backend, int port, int channel, int key, int duration, int volume); /** * Plays a chord. * * @param backend the type of backend to be used * @param port the number of the backend's output port to be used. ignored * by most backends. * @param channel the note's MIDI channel * @param chord the chord structure containing the individual notes to be played */ int play_notes (backend_type_t backend, int port, int channel, chord * chord_to_play); /** * Not yet implemented. */ int rhythm_feedback (backend_type_t backend, int duration, gboolean rest, gboolean dot); /** * Sends a MIDI panic CC and/or resets the synth engine. * * @param backend the backend to be reset */ int panic (backend_type_t backend); /** * Sends a MIDI panic CC and/or resets the synth engine for all active * backends. */ int panic_all (); /** * Called by a backend to read midi events queued for playback. * * @param backend the type of backend * @param[out] event_buffer the event data * @param[out] event_length the length of the event in bytes * @param[out] event_time the time of the event (in seconds from the start * of the score) * @param until_time the playback time up to which events should be * returned * * @return TRUE if an event was written to the output * parameters, FALSE if there is no event to be * played */ gboolean read_event_from_queue (backend_type_t backend, unsigned char *event_buffer, size_t * event_length, double *event_time, double until_time); gboolean read_event_from_mixer_queue (backend_type_t backend, unsigned char *event_buffer, size_t * event_length); #ifdef _HAVE_RUBBERBAND_ gboolean read_event_from_rubberband_queue (backend_type_t backend, unsigned char *event_buffer, size_t * event_length); gboolean write_samples_to_rubberband_queue (backend_type_t backend, float *sample, gint len); #endif /** * Called by a backend to notify the audio subsystem that the current playback * time changed. Usually this is called once per period during playback. * * @param prio the backend's timebase priority * @param new_time the new playback time in milliseconds */ void update_playback_time (backend_timebase_prio_t prio, double new_time); /** * Returns the current playback time in milliseconds. */ double get_playback_time (); /** * Called by a backend when an incoming MIDI event was received. * * @param backend the backend that received the event * @param port the port that received the event (zero if there is only * one port) * @param buffer the MIDI event data */ void input_midi_event (backend_type_t backend, int port, unsigned char *buffer); /** * Queues a full redraw of the GUI. */ void queue_redraw_all (); /** * Queues a redraw of the playhead. */ void queue_redraw_playhead (); extern GMutex smfmutex; gboolean have_midi (void); void advance_time (gdouble seconds); /* * Returns a slowdown factor; the backend is only emitting audio at this rate * */ gdouble get_playback_speed (void); #endif // AUDIOINTERFACE_H denemo-2.2.0/src/audio/PaxHeaders.19168/portmidibackend.h0000644000000000000000000000013213135434036017731 xustar0030 mtime=1500919838.336648472 30 atime=1500919919.019981805 30 ctime=1500919914.063315139 denemo-2.2.0/src/audio/portmidibackend.h0000644000175000017500000000104213135434036021577 0ustar00jjbenhamjjbenham00000000000000/* * portmidibackend.h * PortMidi backend. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #ifndef PORTMIDIBACKEND_H #define PORTMIDIBACKEND_H #include "audio/audiointerface.h" extern backend_t portmidi_backend; #endif // PORTMIDIBACKEND_H denemo-2.2.0/src/audio/PaxHeaders.19168/portaudioutil.h0000644000000000000000000000013213135434036017476 xustar0030 mtime=1500919838.336648472 30 atime=1500919919.019981805 30 ctime=1500919914.059981806 denemo-2.2.0/src/audio/portaudioutil.h0000644000175000017500000000151713135434036021353 0ustar00jjbenhamjjbenham00000000000000/* * portaudioutil.h * PortAudio utility functions. * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #ifndef PORTAUDIOUTIL_H #define PORTAUDIOUTIL_H #include #include /** * Returns a list of available PortAudio device names. */ GList *get_portaudio_devices (); /** * Frees a list returned by get_portaudio_devices() */ void free_portaudio_devices (GList * list); /** * Returns the device index for the given device name. */ PaDeviceIndex get_portaudio_device_index (char const *name); #endif // PORTAUDIOUTIL_H denemo-2.2.0/src/audio/PaxHeaders.19168/audiocapture.c0000644000000000000000000000013213135434036017252 xustar0030 mtime=1500919838.333315139 30 atime=1500919919.019981805 30 ctime=1500919914.069981805 denemo-2.2.0/src/audio/audiocapture.c0000644000175000017500000006266013135434036021135 0ustar00jjbenhamjjbenham00000000000000/* * audiocapture.c * capture audio data using portaudio library api * analyse data to determine frequency of a note close to a target note. * Hacked from patest_record.c * Record input into an array. * Save array to a file. * Playback recorded data. * * Author: Phil Burk http://www.softsynth.com * * This program uses the PortAudio Portable Audio Library. * For more information see: http://www.portaudio.com * Copyright (c) 1999-2000 Ross Bencina and Phil Burk * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files * (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, * publish, distribute, sublicense, and/or sell copies of the Software, * and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * Any person wishing to distribute modifications to the Software is * requested to send the modifications to the original developer so that * they can be incorporated into the canonical version. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #ifdef _HAVE_PORTAUDIO_ #include #include #include #include #include #include "audio/audiocapture.h" #include "audio/audio.h" #ifndef paNonInterleaved #undef PA_VERSION_19 #else #define PA_VERSION_19 #endif // #define SAMPLE_RATE (17932) // Test failure to open with this value. #define SAMPLE_RATE DENEMO_SAMPLE_RATE #define NUM_SECONDS (10) #define PA_SAMPLE_TYPE paFloat32 /*paUInt8 */ typedef DENEMO_SAMPLE_TYPE SAMPLE; static AubioCallback *aubio_routine; typedef struct { int frameIndex; /* Index into sample array. */ int maxFrameIndex; int samplesPerFrame; SAMPLE *recordedSamples; } paTestData; typedef struct { int frameIndex; /* Index into sample array. */ int maxFrameIndex; double pitch; double volume; int channel; SAMPLE *recordedSamples; } OutData; static paTestData data; static OutData out_data; static int tuning = 0; /* copy data for instrument tuning routines */ #define TABLE_SIZE (20000) #ifndef PA_VERSION_19 static PortAudioStream *out_stream = NULL; #define StreamActive Pa_StreamActive #else static PaStream *out_stream = NULL; PaStreamParameters inputParameters, outputParameters; #define StreamActive Pa_IsStreamActive #endif static int init_audio_out (void) { PaError err; int i; err = Pa_Initialize (); if (err != paNoError) { g_warning ("Error initializing portaudio library"); return 0; } out_data.frameIndex = 0; out_data.recordedSamples = (SAMPLE *) malloc (TABLE_SIZE * sizeof (SAMPLE)); if (out_data.recordedSamples == NULL) { printf ("Could not allocate record array.\n"); return 0; } for (i = 0; i < TABLE_SIZE; i++) out_data.recordedSamples[i] = sin (2.0 * M_PI * i / (double) TABLE_SIZE); play_pitch (440.0, 0.0, 0.0, 0); /* to start the stream */ return 1; } /* This routine will be called by the PortAudio engine when audio is needed. ** It may be called at interrupt level on some machines so don't do anything ** that could mess up the system like calling malloc() or free(). */ static int playCallback (void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, #ifndef PA_VERSION_19 PaTimestamp outTime, #else PaStreamCallbackTimeInfo * outTime, PaStreamCallbackFlags status, #endif void *userData) { SAMPLE *wptr = (SAMPLE *) outputBuffer; unsigned int i; (void) inputBuffer; /* Prevent unused variable warnings. */ (void) outTime; for (i = 0; i < framesPerBuffer; i++) { if (out_data.frameIndex >= out_data.maxFrameIndex) wptr[i] = 0; else { wptr[i] = out_data.volume * out_data.recordedSamples[out_data.frameIndex % TABLE_SIZE]; if (out_data.channel && wptr[i] < 0) wptr[i] = -wptr[i]; //distort sound for other channels out_data.frameIndex += TABLE_SIZE * out_data.pitch / SAMPLE_RATE; } } return 0; // return out_data.frameIndex >= out_data.maxFrameIndex; } void play_pitch (double pitch, double duration, double volume, int channel) { //g_debug("playing"); if (out_data.recordedSamples == NULL && !init_audio_out ()) { fprintf (stderr, "Could not initialize audio out\n"); return; } //else //g_debug("already initialized"); if (out_stream && StreamActive (out_stream)) { out_data.maxFrameIndex = duration * TABLE_SIZE * pitch /*SAMPLE_RATE */ ; out_data.pitch = pitch; out_data.volume = volume; out_data.channel = channel; out_data.frameIndex = 0; return; } //g_debug("starting stream ..."); #ifdef PA_VERSION_19 outputParameters.device = Pa_GetDefaultOutputDevice (); /* default output device */ if (outputParameters.device == paNoDevice) { g_critical ("Error: No default output device."); return; } outputParameters.channelCount = 1; /* mono output */ outputParameters.sampleFormat = PA_SAMPLE_TYPE; outputParameters.suggestedLatency = Pa_GetDeviceInfo (outputParameters.device)->defaultLowInputLatency; outputParameters.hostApiSpecificStreamInfo = NULL; #endif out_data.maxFrameIndex = duration * SAMPLE_RATE; out_data.pitch = pitch; PaError err; out_data.frameIndex = 0; out_stream = NULL; err = Pa_OpenStream (&out_stream, #ifndef PA_VERSION_19 paNoDevice, 0, /* NO input */ PA_SAMPLE_TYPE, NULL, Pa_GetDefaultOutputDeviceID (), 1, /* mono output */ PA_SAMPLE_TYPE, NULL, SAMPLE_RATE, 1024, /* frames per buffer */ 0, /* number of buffers, if zero then use default minimum */ paClipOff, /* we won't output out of range samples so don't bother clipping them */ playCallback, &out_data); #else NULL, /* input parameters */ &outputParameters, SAMPLE_RATE, 1024, /* frames per buffer */ paClipOff, /* we won't output out of range samples so don't bother clipping them */ (PaStreamCallback *) playCallback, &out_data); #endif if (err != paNoError) { g_critical ("Error opening stream"); return; } if (out_stream) err = Pa_StartStream (out_stream); if (err != paNoError) { g_critical ("Error starting stream"); out_stream = NULL; return; } } void stop_audio (void) { if (out_stream != NULL) Pa_CloseStream (out_stream); out_stream = NULL; } /* This routine will be called by the PortAudio engine when audio is needed. ** It may be called at interrupt level on some machines so don't do anything ** that could mess up the system like calling malloc() or free(). */ static int recordCallback (const void *inputBuffer, const void *outputBuffer, unsigned long framesPerBuffer, #ifndef PA_VERSION_19 PaTimestamp outTime, #else PaStreamCallbackTimeInfo * outTime, PaStreamCallbackFlags status, #endif void *userData) { SAMPLE *rptr = (SAMPLE *) inputBuffer; /* copy data to data.recordedSamples */ if (tuning) { float *wptr = &data.recordedSamples[data.frameIndex * data.samplesPerFrame]; long framesToCalc; long i; unsigned long framesLeft = data.maxFrameIndex - data.frameIndex; (void) outputBuffer; /* Prevent unused variable warnings. */ (void) outTime; if (framesLeft < framesPerBuffer) { framesToCalc = framesLeft; } else { framesToCalc = framesPerBuffer; } if (inputBuffer == NULL) { for (i = 0; i < framesToCalc; i++) { *wptr++ = 0; /* left */ } } else { for (i = 0; i < framesToCalc; i++) { *wptr++ = *rptr++; /* left */ } } data.frameIndex += framesToCalc; } rptr = (SAMPLE *) inputBuffer; return aubio_routine (&rptr, NULL, framesPerBuffer); } int collect_data_for_tuning (int ok) { tuning = ok; return 1; } /****************************************************************** with param FN non null, start audio capture with FN as callback else shutdown audio capture. return 0 for success */ int pa_main (AubioCallback * fn) { #ifndef PA_VERSION_19 static PortAudioStream *stream; #else static PaStream *stream; PaStreamParameters inputParameters; #endif PaError err = -1; static int last_tried; int totalFrames; int numSamples; int numBytes; if ((fn == NULL) && (stream)) { err = Pa_StopStream (stream); if (err != paNoError) goto error; err = Pa_CloseStream (stream); if (err != paNoError) goto error; Pa_Terminate (); return 0; } if (fn == NULL) return -1; aubio_routine = fn; err = Pa_Initialize (); if (err != paNoError) goto error; data.maxFrameIndex = totalFrames = NUM_SECONDS * SAMPLE_RATE; /* Record for a few seconds. */ data.frameIndex = 0; data.samplesPerFrame = 1; /*mono */ numSamples = totalFrames * data.samplesPerFrame; numBytes = numSamples * sizeof (float); data.recordedSamples = (float *) malloc (numBytes); //FIXME multiple inits, memory leak... #ifdef PA_VERSION_19 inputParameters.device = Pa_GetDefaultInputDevice (); /* default input device */ if (inputParameters.device == paNoDevice) { //g_debug("Number of devices %d now trying = %d\n", Pa_GetDeviceCount(), last_tried); inputParameters.device = last_tried++; // guess } inputParameters.channelCount = 1; /* mono input */ inputParameters.sampleFormat = PA_SAMPLE_TYPE; const PaDeviceInfo *info = Pa_GetDeviceInfo (inputParameters.device); if (info) inputParameters.suggestedLatency = info->defaultLowInputLatency; else goto error; inputParameters.hostApiSpecificStreamInfo = NULL; #endif /* Record some audio. -------------------------------------------- */ err = Pa_OpenStream (&stream, #ifndef PA_VERSION_19 Pa_GetDefaultInputDeviceID (), 1, /* mono input */ PA_SAMPLE_TYPE, NULL, paNoDevice, 0, PA_SAMPLE_TYPE, NULL, SAMPLE_RATE, 1024, /* frames per buffer */ 0, /* number of buffers, if zero then use default minimum */ paClipOff, /* we won't output out of range samples so don't bother clipping them */ recordCallback, NULL); #else &inputParameters, NULL, /* output parameters */ SAMPLE_RATE, 1024, /* frames per buffer */ paClipOff, /* we won't output out of range samples so don't bother clipping them */ (PaStreamCallback *) recordCallback, NULL); #endif if (err != paNoError) goto error; err = Pa_StartStream (stream); if (err != paNoError) goto error; last_tried--; printf ("Now recording!!\n"); fflush (stdout); return 0; error: Pa_Terminate (); fprintf (stderr, "An error occurred while using the portaudio stream\n"); fprintf (stderr, "Error number: %d\n", err); fprintf (stderr, "Error message: %s\n", Pa_GetErrorText (err)); return -1; } /********************** code from accordeur ****************************/ static int Autocorrelation (float mData[], // In int mDataLen, // In // int mWindowSize, In float *processed[] // Out //, int* mProcessedSize Out ); static float bestPeak2 (float *mProcessed, // IN int mProcessedSize, // IN float mRate // IN ); static float Freq2Pitch (float freq); #define OCTAVE 4 static unsigned long WindowSize = 16384 >> OCTAVE; int Pitch = 69 /* 69 */ ; /* 69 = 5 octaves *12 + 9th step = A, so A 440 */ #define MIN_DB (-96) #define BACKGROUND_DB (-54) // This seemed to work okay #define INF_DB (MIN_DB - 1) static float level2db (SAMPLE level) { const SAMPLE maxLevel = 1; // wxASSERT((0 < level) && (level <= maxLevel)); return 20 * log10 (level / maxLevel); } float PitchToFreq (float pitch) { return 440.0 * pow (2, (pitch - 69.0) / 12.0); } /* void setTargetPitch(int pitch) { */ void setTuningTarget (double note) { int pitch = (int) (Freq2Pitch (note) + 0.5); Pitch = pitch; WindowSize = 16384 >> ((Pitch - 12) / 12); if (WindowSize < 1024) WindowSize = 1024; } static double PARTDERNIER = 0.25; void set_frequency_smoothing (double m) { PARTDERNIER = m; fprintf (stderr, "smoothing %f\n", PARTDERNIER); } double determine_frequency (void) { static float *autocorr = 0; static float *autocorr2; /* initialize if needed */ if (autocorr == NULL) { autocorr = calloc (sizeof (float), 16384); autocorr2 = calloc (sizeof (float), 16384); } // Analyze the audio SAMPLE avg_abs, *average_abs; int numSamples = data.frameIndex * data.samplesPerFrame; /* Measure average absolute amplitude. */ SAMPLE val; average_abs = &avg_abs; *average_abs = 0; int i; for (i = 0; i < numSamples; i++) { val = data.recordedSamples[i]; if (val < 0) val = -val; /* ABS */ *average_abs += val; } *average_abs /= numSamples; int gotSound = (numSamples > 0) && (*average_abs > 0) && Autocorrelation (data.recordedSamples, numSamples, &autocorr); /* Reset the frame index to 0, so we keep going with only new sound */ data.frameIndex = 0; /* smooth the autocorrelation */ /*#define PARTDERNIER 0.25 */ for (i = 0; i < WindowSize; i++) { autocorr2[i] = (autocorr[i]) * PARTDERNIER + autocorr2[i] * (1 - PARTDERNIER); } for (; i < 16384; i++) { autocorr2[i] = autocorr2[i] * (1 - PARTDERNIER); } float db = level2db (avg_abs); gotSound = gotSound && (db > BACKGROUND_DB); if (gotSound) { #define INTERVAL (1) /*(2) */ double m_sample_rate = 44100.0; int lower = lround (m_sample_rate / PitchToFreq (Pitch - INTERVAL)); /* lowest allowed value of Pitch is 12 */ int upper = lround (m_sample_rate / PitchToFreq (Pitch + INTERVAL)); double bestpeak_x = upper + bestPeak2 (&autocorr2[upper], lower - upper, m_sample_rate); double psd; for (psd = 0.0, i = upper; i < lower; i++) psd += autocorr[i]; psd *= (Pitch * Pitch * Pitch * Pitch / (400000000.0)); if (psd < 1.0) return -1.0; double bestpeak_freq2 = m_sample_rate / bestpeak_x; int pitch = -1; if (db > BACKGROUND_DB + 6) { pitch = (int) (Freq2Pitch (bestpeak_freq2) + 0.5); // note found this time } // loud enough else return -4.0; if (pitch > 0) { return bestpeak_freq2; } return -3.0; } // if gotPitch return -2.0; } /********************************************************************** from FFT.cpp Dominic Mazzoni September 2000 **********************************************************************/ #define M_PI 3.14159265358979323846 /* pi */ #define false 0 #define true 1 #define bool int static int **gFFTBitTable = NULL; static const int MaxFastBits = 16; static int IsPowerOfTwo (int x) { if (x < 2) return false; if (x & (x - 1)) /* Thanks to 'byang' for this cute trick! */ return false; return true; } static int NumberOfBitsNeeded (int PowerOfTwo) { int i; if (PowerOfTwo < 2) { fprintf (stderr, "Error: FFT called with size %d\n", PowerOfTwo); exit (1); } for (i = 0;; i++) if (PowerOfTwo & (1 << i)) return i; } static int ReverseBits (int index, int NumBits) { int i, rev; for (i = rev = 0; i < NumBits; i++) { rev = (rev << 1) | (index & 1); index >>= 1; } return rev; } static void InitFFT () { gFFTBitTable = malloc (sizeof (int *) * MaxFastBits); int len = 2; int b; for (b = 1; b <= MaxFastBits; b++) { gFFTBitTable[b - 1] = malloc (sizeof (int) * len); int i; for (i = 0; i < len; i++) gFFTBitTable[b - 1][i] = ReverseBits (i, b); len <<= 1; } } static inline int FastReverseBits (int i, int NumBits) { if (NumBits <= MaxFastBits) return gFFTBitTable[NumBits - 1][i]; else return ReverseBits (i, NumBits); } /* * Complex Fast Fourier Transform */ static void FFT (int NumSamples, bool InverseTransform, float *RealIn, float *ImagIn, float *RealOut, float *ImagOut) { int NumBits; /* Number of bits needed to store indices */ int i, j, k, n; int BlockSize, BlockEnd; double angle_numerator = 2.0 * M_PI; float tr, ti; /* temp real, temp imaginary */ if (!IsPowerOfTwo (NumSamples)) { fprintf (stderr, "%d is not a power of two\n", NumSamples); exit (1); } if (!gFFTBitTable) InitFFT (); if (InverseTransform) angle_numerator = -angle_numerator; NumBits = NumberOfBitsNeeded (NumSamples); /* ** Do simultaneous data copy and bit-reversal ordering into outputs... */ for (i = 0; i < NumSamples; i++) { j = FastReverseBits (i, NumBits); RealOut[j] = RealIn[i]; ImagOut[j] = (ImagIn == NULL) ? 0.0 : ImagIn[i]; } /* ** Do the FFT itself... */ BlockEnd = 1; for (BlockSize = 2; BlockSize <= NumSamples; BlockSize <<= 1) { double delta_angle = angle_numerator / (double) BlockSize; float sm2 = sin (-2 * delta_angle); float sm1 = sin (-delta_angle); float cm2 = cos (-2 * delta_angle); float cm1 = cos (-delta_angle); float w = 2 * cm1; float ar0, ar1, ar2, ai0, ai1, ai2; for (i = 0; i < NumSamples; i += BlockSize) { ar2 = cm2; ar1 = cm1; ai2 = sm2; ai1 = sm1; for (j = i, n = 0; n < BlockEnd; j++, n++) { ar0 = w * ar1 - ar2; ar2 = ar1; ar1 = ar0; ai0 = w * ai1 - ai2; ai2 = ai1; ai1 = ai0; k = j + BlockEnd; tr = ar0 * RealOut[k] - ai0 * ImagOut[k]; ti = ar0 * ImagOut[k] + ai0 * RealOut[k]; RealOut[k] = RealOut[j] - tr; ImagOut[k] = ImagOut[j] - ti; RealOut[j] += tr; ImagOut[j] += ti; } } BlockEnd = BlockSize; } /* ** Need to normalize if inverse transform... */ if (InverseTransform) { float denom = (float) NumSamples; for (i = 0; i < NumSamples; i++) { RealOut[i] /= denom; ImagOut[i] /= denom; } } } /* * Windowing Functions */ static void WindowFunc (int whichFunction, int NumSamples, float *in) { int i; if (whichFunction == 1) { // Bartlett (triangular) window for (i = 0; i < NumSamples / 2; i++) { in[i] *= (i / (float) (NumSamples / 2)); in[i + (NumSamples / 2)] *= (1.0 - (i / (float) (NumSamples / 2))); } } if (whichFunction == 2) { // Hamming for (i = 0; i < NumSamples; i++) in[i] *= 0.54 - 0.46 * cos (2 * M_PI * i / (NumSamples - 1)); } if (whichFunction == 3) { // Hanning for (i = 0; i < NumSamples; i++) in[i] *= 0.50 - 0.50 * cos (2 * M_PI * i / (NumSamples - 1)); } } // This is Audacity's FreqWindow::Recalc(), but shaved down to // 1) be enhanced auto-correlation only // 2) take parameters, and return values. static bool Autocorrelation (float mData[], // In int mDataLen, // In float *processed[] // Out ) { if (mDataLen < WindowSize) { // Not enough data to get even one window return false; } // float *mProcessed = NULL; float *mProcessed = *processed; // mProcessed = new float[WindowSize]; int i; for (i = 0; i < WindowSize; i++) mProcessed[i] = 0.0; int half = WindowSize / 2; float *in = malloc (sizeof (float) * WindowSize); float *out = malloc (sizeof (float) * WindowSize); float *out2 = malloc (sizeof (float) * WindowSize); int start = 0; int windows = 0; while (start + WindowSize <= mDataLen) { // Copy stuff into in for (i = 0; i < WindowSize; i++) in[i] = mData[start + i]; // Window the data to lose crazy artifacts // due to finite-length window WindowFunc (2 /* Hamming */ , WindowSize, in); // Enhanced AC // Take FFT FFT (WindowSize, false, in, NULL, out, out2); // Compute power for (i = 0; i < WindowSize; i++) in[i] = (out[i] * out[i]) + (out2[i] * out2[i]); // Tolonen and Karjalainen recommend taking the cube root // of the power, instead of the square root for (i = 0; i < WindowSize; i++) in[i] = pow (in[i], 1.0 / 3.0); // Take FFT FFT (WindowSize, false, in, NULL, out, out2); // Take real part of result for (i = 0; i < half; i++) mProcessed[i] += out[i]; start += half; windows++; } // Enhanced Autocorrelation for (i = 0; i < half; i++) mProcessed[i] = mProcessed[i] / windows; // Peak Pruning as described by Tolonen and Karjalainen, 2000 // Clip at zero, copy to temp array for (i = 0; i < half; i++) { if (mProcessed[i] < 0.0) mProcessed[i] = 0.0; out[i] = mProcessed[i]; } // Subtract a time-doubled signal (linearly interp.) from the original // (clipped) signal for (i = 0; i < half; i++) if ((i % 2) == 0) mProcessed[i] -= out[i / 2]; else mProcessed[i] -= ((out[i / 2] + out[i / 2 + 1]) / 2); // Clip at zero again for (i = 0; i < half; i++) if (mProcessed[i] < 0.0) mProcessed[i] = 0.0; /* *mProcessedSize = half; */ free (in); free (out); free (out2); // *processed = mProcessed; return true; } static float Freq2Pitch (float freq) { return (69.0 + 12.0 * (log (freq / 440.0) / log (2.0))); } float CubicMaximize (float y0, float y1, float y2, float y3, float *maxyVal) { // Find coefficients of cubic float a, b, c, d; a = y0 / -6.0 + y1 / 2.0 - y2 / 2.0 + y3 / 6.0; b = y0 - 5.0 * y1 / 2.0 + 2.0 * y2 - y3 / 2.0; c = -11.0 * y0 / 6.0 + 3.0 * y1 - 3.0 * y2 / 2.0 + y3 / 3.0; d = y0; // Take derivative float da, db, dc; da = 3 * a; db = 2 * b; dc = c; // Find zeroes of derivative using quadratic equation float discriminant = db * db - 4 * da * dc; if (discriminant < 0.0) return -1.0; // error float x1 = (-db + sqrt (discriminant)) / (2 * da); float x2 = (-db - sqrt (discriminant)) / (2 * da); // The one which corresponds to a local _maximum_ in the // cubic is the one we want - the one with a negative // second derivative float dda = 2 * da; float ddb = db; #define CUBIC(x,a,b,c,d) (a*x*x*x + b*x*x + c*x + d) if (dda * x1 + ddb < 0) { *maxyVal = CUBIC (x1, a, b, c, d); return x1; } else { *maxyVal = CUBIC (x2, a, b, c, d); return x2; } #undef CUBIC } static float Parabole (float *y, int nb, float *maxyVal) { int i; float mx4 = 0, mx3 = 0, mx2 = 0, mx = 0; float mx2y = 0, mxy = 0, my = 0; float a, b, c; float highX; for (i = 0; i < nb; i++) { mx += i; mx2 += i * i; mx3 += i * i * i; mx4 += i * i * i * i; mxy += i * y[i]; mx2y += i * i * y[i]; my += y[i]; } mx /= nb; mx2 /= nb; mx3 /= nb; mx4 /= nb; my /= nb; mxy /= nb; mx2y /= nb; a = ((mx2y - mx2 * my) * (mx2 - mx * mx) - (mxy - mx * my) * (mx3 - mx2 * mx)) / ((mx4 - mx2 * mx2) * (mx2 - mx * mx) - (mx3 - mx * mx2) * (mx3 - mx * mx2)); b = (mxy - mx * my - a * (mx3 - mx * mx2)) / (mx2 - mx * mx); c = my - a * mx2 - b * mx; highX = (-b / (2 * a)); *maxyVal = a * highX * highX + b * highX + c; return (-b / (2 * a)); } static float bestPeak2 (float *mProcessed, // IN int mProcessedSize, // IN float mRate // IN ) { float highestpeak_y = 0; int iMaxX = 0; int bin; bool up = (mProcessed[1] > mProcessed[0]); for (bin = 2; bin < mProcessedSize; bin++) { bool nowUp = mProcessed[bin] > mProcessed[bin - 1]; if (!nowUp && up) { if (mProcessed[bin - 1] > highestpeak_y) { highestpeak_y = mProcessed[bin - 1]; iMaxX = bin - 1; } } up = nowUp; } // cherche le pic par recherche de la parabole la plus proche. int leftbin = iMaxX - 1; while (leftbin > 1 && leftbin > (iMaxX - 20) && mProcessed[leftbin - 1] > mProcessed[iMaxX] / 2) leftbin--; int nb = (iMaxX - leftbin) * 2 + 1; float thispeak_y; float max = leftbin + Parabole (&mProcessed[leftbin], nb, &thispeak_y); return max; } #endif denemo-2.2.0/src/audio/PaxHeaders.19168/instrumentname.c0000644000000000000000000000013213135434036017636 xustar0030 mtime=1500919838.333315139 30 atime=1500919919.043315139 30 ctime=1500919914.069981805 denemo-2.2.0/src/audio/instrumentname.c0000644000175000017500000001601013135434036021505 0ustar00jjbenhamjjbenham00000000000000/**************************************************************** * * instrumentname.cpp * * Functions for identifying instrument names * * (c) 2001-2005 Per Andersson * * License: GPL version 3 or later * */ #define INSTRUMENT_DB_VERSION 1.1 /* * What? The function select_program() tries to find an instrument name * that matches the input string as closely as possible. * * How? this time with a pre processor to make it even more flexible. * * Why? I can't remember if the good guitar sound is called "Acoustic guitar * (nylon)" or "Nylon acoustic" or "Nylon guitar" or ... * * See www.wotsit.org for some info on midi and the standard file format * * * Per * **************************************************************** * * Per Andersson * Artifex consulting * * email to: artifex@europe.com * ****************************************************************/ #include #include #include #include #include "ctype.h" /****************************************************************/ /** * synonyms data base */ char *synonym_table[] = { "piano", "pno", "pi", "", "guitar", "guit", "gui", "gtr", "gt", "", "electric", "electr", "elect", "ele", "el", "", "distorted", "distort", "disted", "dist", "dis", "" "synthetic", "synth", "synt", "syn", "sy", "", "overdriven", "overdrive", "ovrdrv", "ovrdr", "over", "", "oohs", "oos", "ohs", "oo", "o", "", "aahs", "aas", "ahs", "aa", "a", "", NULL, }; /** * instrument name recognition data base * * handles some common instruments (not yet complete) */ typedef struct instrname { char *text; /* word to match */ int gsprogram; /* timidity program number */ int matchpoints; /* score to compare */ } instrname_t; /** * Midi instruments * */ instrname_t keywords[] = { {"piano", 1, 10}, {"grand", 1, 8}, {"acoustic", 1, 5}, {"piano", 2, 10}, {"bright", 2, 5}, {"brite", 2, 5}, {"acoustic", 2, 5}, {"piano", 3, 10}, {"grand", 3, 8}, {"electric", 3, 5}, {"piano", 4, 10}, {"honkytonk", 4, 8}, {"honky", 4, 4}, {"tonk", 4, 4}, {"piano", 5, 10}, {"electric", 5, 5}, {"piano", 6, 10}, {"electric", 6, 5}, {"harpsichord", 7, 10}, {"clav", 8, 10}, {"celesta", 9, 10}, {"glockenspiel", 10, 10}, {"music box", 11, 10}, {"vibraphone", 12, 10}, {"marimba", 13, 10}, {"xylophone", 14, 10}, {"tubular bells", 15, 10}, {"dulcimer", 16, 10}, {"organ", 17, 10}, {"drawbar", 17, 5}, {"organ", 18, 10}, {"percussive", 18, 5}, {"organ", 19, 10}, {"rock", 19, 5}, {"organ", 20, 10}, {"church", 20, 5}, {"pipe", 20, 5}, {"organ", 21, 10}, {"reed", 21, 5}, {"accordion", 22, 10}, {"concertina", 23, 10}, {"guitar", 25, 11}, {"acoustic", 25, 8}, {"nylon", 25, 8}, {"guitar", 26, 10}, {"acoustic", 26, 8}, {"steel", 26, 8}, {"guitar", 27, 10}, {"electric", 27, 8}, {"jazz", 27, 10}, {"guitar", 28, 10}, {"electric", 28, 8}, {"clean", 28, 10}, {"guitar", 29, 10}, {"electric", 29, 8}, {"muted", 29, 8}, {"guitar", 30, 10}, {"electric", 30, 5}, {"overdriven", 30, 8}, {"guitar", 31, 10}, {"electric", 31, 5}, {"distorted", 31, 8}, {"guitar", 32, 10}, {"electric", 32, 5}, {"harmonics", 32, 8}, {"bass", 33, 10}, {"acoustic", 33, 8}, {"bass", 34, 10}, {"electric", 34, 8}, {"finger", 34, 8}, {"bass", 35, 10}, {"electric", 35, 8}, {"pick", 36, 8}, {"bass", 36, 10}, {"electric", 36, 8}, {"fretless", 36, 8}, {"bass", 37, 10}, {"slap", 37, 8}, {"bass", 39, 10}, {"synth", 39, 5}, {"violin", 41, 10}, {"fiddle", 41, 10}, {"viola", 42, 10}, {"bratsch", 42, 10}, {"cello", 43, 10}, {"violoncello", 43, 10}, {"contrabass", 44, 10}, {"contra", 44, 8}, {"bass", 44, 5}, {"bowed", 44, 8}, {"strings", 45, 10}, {"tremolo", 45, 8}, {"strings", 46, 10}, {"pizzicato", 46, 10}, {"strings", 47, 10}, {"orchestral", 47, 10}, {"timpani", 48, 10}, {"string", 49, 10}, {"ensemble", 49, 8}, {"synthstrings", 51, 10}, {"synth", 51, 5}, {"strings", 51, 10}, {"choir", 53, 10}, {"aahs", 53, 10}, {"voice", 54, 10}, {"oohs", 54, 10}, {"synth", 55, 5}, {"voice", 55, 10}, {"orchestra", 56, 10}, {"hit", 56, 5}, {"trumpet", 57, 10}, {"trombone", 58, 10}, {"tuba", 59, 10}, {"trumpet", 60, 9}, {"muted", 60, 5}, {"french", 61, 8}, {"horn", 61, 8}, {"brass", 62, 8}, {"section", 62, 8}, {"brass", 63, 10}, {"synth", 63, 5}, {"sax", 65, 10}, {"soprano", 65, 8}, {"sax", 66, 10}, {"alto", 66, 8}, {"sax", 67, 10}, {"tenor", 67, 8}, {"sax", 68, 10}, {"baritone", 68, 8}, {"oboe", 69, 10}, {"english", 70, 9}, {"horn", 70, 9}, {"bassoon", 71, 10}, {"clarinet", 72, 10}, {"piccolo", 73, 10}, {"flute", 73, 3}, {"flute", 74, 10}, {"traverso", 74, 10}, {"recorder", 75, 10}, {"pan", 76, 8}, {"flute", 76, 8}, {"blown", 77, 5}, {"bottle", 77, 8}, {"skakuhachi", 78, 10}, {"whistle", 79, 10}, {"ocarina", 80, 10}, {"", 0, 0}, }; void clear_score_table (int *score_table) { int i; for (i = 0; i < 128; i++) { score_table[i] = 0; } } /** * scans the data base and count points for matching words */ void match (instrname_t * keywords, char *name, int *score_table) { int i; int instr; /* scan all entries */ for (i = 0; keywords[i].text[0]; i++) { if (!strcmp (keywords[i].text, name)) { instr = keywords[i].gsprogram; score_table[instr] += keywords[i].matchpoints; } } } /** * replace a word by it's canonical form */ char * synonym (char **tab, char *txt) { char *saved; saved = NULL; for (; *tab; tab++) { if (!saved) { saved = *tab; } if (!strcmp (txt, *tab)) { return saved; } if (**tab == 0) { saved = NULL; } } return txt; } /** * convert a (potentially multi-word) instrument name to a * midi program number 0 .. 127 * * I hope this is fairly GS compatible! */ int select_program (char *instr) { char name[100]; char *namepointer; int score[128]; int i; int winner = 1; char *input_instr = instr; /* get a fresh start */ clear_score_table (score); /* scan the input for words */ while (*instr) { namepointer = name; while (isalpha (*instr)) { /* copy a word */ *namepointer++ = tolower (*instr++); } *namepointer = 0; if (name[0]) { /* it was a word: match it */ match (keywords, synonym (synonym_table, name), score); } if (*instr) { instr++; } } /* then select the best match */ winner = 0; for (i = 0; i < 128; i++) { if (score[i] > score[winner]) { winner = i; } } g_debug ("For %s choose prog %d\n", input_instr, winner & 127); return winner & 127; } /****************************************************************/ denemo-2.2.0/src/audio/PaxHeaders.19168/midi.h0000644000000000000000000000013213135434036015514 xustar0030 mtime=1500919838.333315139 30 atime=1500919919.063315139 30 ctime=1500919914.079981806 denemo-2.2.0/src/audio/midi.h0000644000175000017500000000371613135434036017374 0ustar00jjbenhamjjbenham00000000000000/* * midi.h * * for Denemo, a gtk+ frontend to GNU Lilypond * Copyright (C) 2011 Dominic Sacré * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ #ifndef MIDI_H #define MIDI_H #include #include "smf.h" #define MIDI_NOTE_OFF 0x80 #define MIDI_NOTE_ON 0x90 #define MIDI_KEY_PRESSURE 0xA0 #define MIDI_CONTROL_CHANGE 0xB0 #define MIDI_PROGRAM_CHANGE 0xC0 #define MIDI_CHANNEL_PRESSURE 0xD0 #define MIDI_PITCH_BEND 0xE0 #define SYS_EXCLUSIVE_MESSAGE1 0xF0 void generate_midi (void); gdouble get_time (void); gdouble get_playuntil (void); void adjust_midi_velocity (gchar * buf, gint percent); void add_after_touch (gchar * buf); void change_tuning (gdouble * cents); gdouble get_midi_on_time (GList * events); gdouble get_midi_off_time (GList * events); DenemoObject *get_obj_for_start_time (smf_t * smf, gdouble time); DenemoObject *get_obj_for_end_time (smf_t * smf, gdouble time); void update_position (smf_event_t * event); void start_playing (gchar * callback); void pause_playing (); void stop_playing (); gboolean is_playing (); gboolean is_paused (); double get_start_time (); double get_end_time (); void update_start_time (double adjust); void initialize_until_time (void); smf_event_t *get_smf_event (double until_time); void handle_midi_event (gchar * buf); gboolean intercept_midi_event (gint * midi); gint get_midi_channel (DenemoStaff * staff); gint get_midi_prognum (DenemoStaff * staff); gint get_midi_port (DenemoStaff * staff); void change_tuning (gdouble * cents); int noteon_key (smf_event_t * event); void toggle_paused (); void play_adjusted_midi_event (gchar * buf); gboolean set_midi_capture (gboolean set); void process_midi_event (gchar * buf); void new_midi_recording (void); #endif // MIDI_H denemo-2.2.0/src/PaxHeaders.19168/instruments.xml0000644000000000000000000000013213135434036016435 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.063315139 30 ctime=1500919914.036648472 denemo-2.2.0/src/instruments.xml0000644000175000017500000001443513135434036020315 0ustar00jjbenhamjjbenham00000000000000 denemo-2.2.0/src/PaxHeaders.19168/export0000644000000000000000000000013213135434152014563 xustar0030 mtime=1500919914.283315139 30 atime=1500919914.539981806 30 ctime=1500919914.283315139 denemo-2.2.0/src/export/0000755000175000017500000000000013135434152016511 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/src/export/PaxHeaders.19168/file.h0000644000000000000000000000013213135434036015731 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.069981805 30 ctime=1500919914.266648472 denemo-2.2.0/src/export/file.h0000644000175000017500000000456413135434036017613 0ustar00jjbenhamjjbenham00000000000000/* file.h * prototypes for file I/O routines * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000, 2001, Adam Tee * (c) 2000, 2001, University of Leeds */ #ifndef FILE_H #define FILE_H gboolean confirmbox (DenemoProject * gui); void file_savepartswrapper (DenemoAction * action, DenemoScriptParam * param); void file_open_with_check (DenemoAction * action, DenemoScriptParam * param); void file_import_lilypond_with_check (DenemoAction * action, DenemoScriptParam * param); void file_import_midi_with_check (DenemoAction * action, DenemoScriptParam * param); void file_import_musicxml_with_check (DenemoAction * action, DenemoScriptParam * param); void file_add_staffs (DenemoAction * action, DenemoScriptParam * param); void file_add_movements (DenemoAction * action, DenemoScriptParam * param); void system_template_open_with_check (DenemoAction * action, DenemoScriptParam * param); void system_example_open_with_check (DenemoAction * action, DenemoScriptParam * param); void local_template_open_with_check (DenemoAction * action, DenemoScriptParam * param); void file_savewrapper (DenemoAction * action, DenemoScriptParam * param); void file_saveaswrapper (DenemoAction * action, DenemoScriptParam * param); void file_newwrapper (DenemoAction * action, DenemoScriptParam * param); void new_score_cb (DenemoAction * action, DenemoScriptParam * param); gint file_save (GtkWidget * widget, DenemoProject * gui); void file_saveas (DenemoSaveType as_template); void template_save (DenemoAction * action, DenemoScriptParam * param); void file_copy_save (DenemoAction * action, DenemoScriptParam * param); void export_mudela_action (DenemoAction * action, DenemoScriptParam * param); void export_pdf_action (DenemoAction * action, DenemoScriptParam * param); void export_png_action (DenemoAction * action, DenemoScriptParam * param); void export_midi_action (DenemoAction * action, DenemoScriptParam * param); void paste_clipboard (DenemoAction * action, DenemoScriptParam * param); void paste_comment (DenemoAction * action, DenemoScriptParam * param); void openrecent (GtkWidget * widget, gchar * filename); gint open_for_real (gchar * filename, DenemoProject * gui, DenemoSaveType template, ImportType type); gchar *file_dialog (gchar * message, gboolean type, gchar * location); gint lyinput (gchar * filename); gint open_source_file (void); gint open_proof_file (void); #endif /*FILE_H */ denemo-2.2.0/src/export/PaxHeaders.19168/exportabc.h0000644000000000000000000000013213135434036017001 xustar0030 mtime=1500919838.353315139 30 atime=1500919919.069981805 30 ctime=1500919914.256648472 denemo-2.2.0/src/export/exportabc.h0000644000175000017500000000044713135434036020657 0ustar00jjbenhamjjbenham00000000000000/* exportabc.h * Header file for exporting ABC files * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2001 Eric Galluzzo */ #ifndef EXPORTABC_H #define EXPORTABC_H #include void exportabc (gchar * thefilename, DenemoProject * gui, gint start, gint end); #endif denemo-2.2.0/src/export/PaxHeaders.19168/file.c0000644000000000000000000000013213135434036015724 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.076648472 30 ctime=1500919914.266648472 denemo-2.2.0/src/export/file.c0000644000175000017500000012753713135434036017614 0ustar00jjbenhamjjbenham00000000000000/* file.c * License: this file may be used under the FSF GPL version 3 or later * Denemo File IO * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) Adam Tee, Matthew Hiller 2000-2005 * (c) University of Leeds 2000-2005 * (c) Richard Shann 2010 */ #include "display/calculatepositions.h" #include "command/commandfuncs.h" #include "command/contexts.h" #include #include "ui/dialogs.h" #include "export/exportabc.h" #include "export/exportlilypond.h" #include "export/file.h" #include "export/guidedimportmidi.h" #include "ui/moveviewport.h" #include "command/staff.h" #include "command/score.h" #include "core/cache.h" #include "core/utils.h" #include "core/exportxml.h" #include "export/exportmidi.h" #include "core/importxml.h" #include "export/importmusicxml.h" #include "importmidi.h" #include "core/prefops.h" #include "core/binreloc.h" #include "core/view.h" #include "command/lilydirectives.h" #include "ui/texteditors.h" #include "export/print.h" #include #include #include /* check existance and type of files */ #include /* filter and sort filenames */ #include "source/source.h" #include "source/sourceaudio.h" #include "source/proof.h" #include "audio/pitchentry.h" #include "audio/audiointerface.h" static gint file_open (DenemoProject * gui, DenemoSaveType template, ImportType type, gchar * filename); static gint file_import_lilypond (DenemoProject * gui, DenemoSaveType template, ImportType type, gchar * filename); static gint file_import_midi (DenemoProject * gui, DenemoSaveType template, ImportType type, gchar * filename); static gint file_import_musicxml (DenemoProject * gui, DenemoSaveType template, ImportType type, gchar * filename); static gboolean replace_existing_file_dialog (const gchar * filename, gint format_id); typedef enum { DENEMO_FORMAT = 0, DNM_FORMAT, MUDELA_FORMAT, PDF_FORMAT, PNG_FORMAT, ABC_FORMAT, MIDI_FORMAT, CSOUND_FORMAT, MUSICXML_FORMAT } FileFormatNames; struct FileFormatData { gchar *filename_mask; gchar *description; gchar *filename_extension; gboolean async; /* TRUE if uses async */ }; /* WARNING this array has to match the FileFormatNames enum above which is used to index it!!!!!!!!!" */ static struct FileFormatData supported_file_formats[] = { {"*.denemo", N_("Denemo format (*.denemo *.denemo.gz)"), ".denemo", 0}, {"*.denemo.gz", N_("CompressedDenemo XML format (*.denemo.gz)"), ".denemo", 0}, {"*.ly", N_("Lilypond (*.ly)"), ".ly", 0}, {"*.pdf", N_("PDF (*.pdf)"), ".pdf", 1}, {"*.png", N_("PNG Image format (*.png)"), ".png", 1}, {"*.abc", N_("ABC (*.abc)"), ".abc", 0}, {"*.mid", N_("Midi (*.mid, *.midi)"), ".mid", 0}, {"*.sco", N_("CSound Score File (*.sco)"), ".sco", 0}, {"*.mxml", N_("MusicXML file (*.mxml, *.xml)"), ".mxml", 0} }; static GList* supported_file_extensions(gchar* format){ GList* exts = NULL; if(g_strcmp0 ("denemo", format) == 0){ exts = g_list_append(exts, "*.denemo"); exts = g_list_append(exts, "*.DENEMO"); exts = g_list_append(exts, "*.denemo.gz"); } if(g_strcmp0 ("lilypond", format) == 0){ exts = g_list_append(exts, "*.ly"); exts = g_list_append(exts, "*.LY"); } if(g_strcmp0 ("midi", format) == 0){ exts = g_list_append(exts, "*.midi"); exts = g_list_append(exts, "*.mid"); exts = g_list_append(exts, "*.MIDI"); exts = g_list_append(exts, "*.MID"); } if(g_strcmp0 ("musicxml", format) == 0){ exts = g_list_append(exts, "*.mxml"); exts = g_list_append(exts, "*.MXML"); exts = g_list_append(exts, "*.xml"); } if(g_strcmp0 ("pdf", format) == 0){ exts = g_list_append(exts, "*.pdf"); exts = g_list_append(exts, "*.PDF"); } if(g_strcmp0 ("evince", format) == 0){ exts = g_list_append(exts, "*.pdf"); exts = g_list_append(exts, "*.PDF"); } if(g_strcmp0 ("proof", format) == 0){ exts = g_list_append(exts, "*.pdf"); exts = g_list_append(exts, "*.PDF"); } return exts; } /* Some macros just to shorten lines */ #define FORMAT_MASK(i) supported_file_formats[i].filename_mask #define FORMAT_DESCRIPTION(i) supported_file_formats[i].description #define FORMAT_EXTENSION(i) supported_file_formats[i].filename_extension #define FORMAT_ASYNC(i) supported_file_formats[i].async struct FileDialogData { DenemoSaveType template; gint format_id; }; /* directory last used for saving */ static gchar *file_selection_path = NULL; static gchar *system_template_path = NULL; static gchar *system_example_path = NULL; static gchar *local_template_path = NULL; static gchar *default_template_path = NULL; /** * Display a message box asking the user whether to save unsaved changes * or close without saving */ static gboolean confirm_save (DenemoProject * gui, gchar * primary, gchar * secondary) { if (Denemo.non_interactive) return TRUE; GtkWidget *dialog; gboolean r = FALSE; dialog = gtk_message_dialog_new (GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, "%s", primary); (void) gtk_dialog_add_button ((GtkDialog *) dialog, _("Close without Saving"), GTK_RESPONSE_NO); (void) gtk_dialog_add_button ((GtkDialog *) dialog, _("_Cancel"), GTK_RESPONSE_CANCEL); (void) gtk_dialog_add_button ((GtkDialog *) dialog, _("Save _As"), GTK_RESPONSE_YES); gtk_dialog_set_default_response ((GtkDialog *) dialog, GTK_RESPONSE_YES); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s", secondary); gtk_widget_show_all (dialog); gint response = gtk_dialog_run (GTK_DIALOG (dialog)); if (response == GTK_RESPONSE_YES) { gtk_widget_destroy (dialog); file_saveas (SAVE_NORMAL); if (gui->notsaved) r = FALSE; else r = TRUE; } else if (response == GTK_RESPONSE_NO) { gtk_widget_destroy (dialog); r = TRUE; } else { gtk_widget_destroy (dialog); r = FALSE; } return r; } /** * Display a message box asking the user to confirm that unsaved * changes will be lost * @return TRUE if the OK button clicked or Enter pressed */ gboolean confirmbox (DenemoProject * gui) { gboolean ret; gchar *primary = g_strdup_printf (_("The score %s has unsaved changes"), gui->filename->len ? gui->filename->str : _("(Untitled)")); ret = confirm_save (gui, primary, _("Save changes?")); g_free (primary); return ret; } /** * Custom function to compare the elements of the History queue * it simply wraps up stcmp * * @param a pointer to a queue elements * @param b pointer to the comparison value * @return gint 0 if match -1 or 1 otherwise */ static gint history_compare (gconstpointer a, gconstpointer b) { return (strcmp ((gchar *) a, (gchar *) b)); } /** * Callback for the history menu * opens the selected file */ void openrecent (G_GNUC_UNUSED GtkWidget * widget, gchar * filename) { DenemoProject *gui = Denemo.project; if (!gui->notsaved || (gui->notsaved && confirmbox (gui))) { // deletescore(NULL, gui); if (open_for_real (filename, gui, FALSE, FALSE)) { gchar *warning = g_strdup_printf (_("Load of recently used file %s failed"), filename); warningdialog (warning); g_free (warning); } } } /** * Decorate the window with the tile */ static void set_gui_tabname (DenemoProject * gui, gchar * filename) { if(gui->tabname==NULL) gui->tabname = g_string_new (filename); else g_string_assign (gui->tabname, filename); if(!Denemo.non_interactive) set_title_bar (gui); } /** * Sets the filename for storing the passed in gui. * and adds it to the history */ static void set_project_filename (DenemoProject * gui, gchar * filename) { GList *link = NULL; g_string_assign (gui->filename, filename); set_gui_tabname (gui, filename); if ((link = g_queue_find_custom (Denemo.prefs.history, gui->filename->str, &history_compare))) g_queue_remove (Denemo.prefs.history, link->data); g_debug ("max history now %d\n", Denemo.prefs.maxhistory); if (g_queue_get_length (Denemo.prefs.history) > Denemo.prefs.maxhistory) { gpointer data = g_queue_pop_head (Denemo.prefs.history); g_debug ("Losing one history"); if (data) g_free (data); } if(!Denemo.non_interactive){ if (link) /* not a new one */ addhistorymenuitem (filename); } g_queue_push_tail (Denemo.prefs.history, g_strdup (gui->filename->str)); } static gchar * strip_path_and_extension (gchar * filename) { gchar *basename; basename = g_path_get_basename (filename); (void) strtok (basename, "."); return basename; } static void update_file_selection_path (gchar * file) { if (file_selection_path) g_free (file_selection_path); file_selection_path = g_path_get_dirname (file); } gint lyinput (gchar * filename) { gchar *path = g_path_get_dirname (filename); gchar *base = g_path_get_basename (filename); #ifdef G_OS_WIN32 gchar *call = g_strescape (path, ""); call = g_strdup_printf ("%s%s%s%s%s", "(debug-set! stack 200000) (lyimport::load-file \"", call, "\\\\\" \"", base, "\")"); g_debug ("Calling %s\n", call); #else gchar *call = g_strdup_printf ("%s%s%c%s%s%s", "(lyimport::load-file \"", path, G_DIR_SEPARATOR, "\" \"", base, "\")"); #endif call_out_to_guile (call); g_free (path); g_free (base); g_free (call); return 0; } static gboolean has_extension(gchar* filename, const gchar* extension) { return (strcmp (filename + strlen (filename) - strlen(extension), extension) == 0); } static void delete_all_rhythms (void) { DenemoProject *project = Denemo.project; GList *g; for (g = project->rhythms;g;g=project->rhythms) { delete_rhythm_pattern (g->data); } } static void enquire_rhythms (void) { if (Denemo.project->rhythms && choose_option (_("Music Snippets Can be Kept"), _("Drop Music Snippets"), _("Keep Music Snippets"))) delete_all_rhythms (); } /** * The function that actually determines the file type and calls the * function that opens the file. (So many layers of indirection...) *filename must be full path * @return 0 for success non zero for failure */ gint open_for_real (gchar * filename, DenemoProject * gui, DenemoSaveType template, ImportType type) { if(!Denemo.non_interactive) g_signal_handlers_block_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_draw_event), NULL); gint result; gboolean xml = FALSE; result = 1; //FAILURE if (type == REPLACE_SCORE) { if(Denemo.non_interactive) delete_all_rhythms (); else enquire_rhythms (); } //if (g_file_test (filename, G_FILE_TEST_EXISTS)) if (filename) { if (has_extension (filename, ".denemo") || has_extension (filename, ".denemo.gz")) { xml = TRUE, result = importXML (filename, gui, type); if (result) { gchar *zip = g_strconcat (filename, ".gz", NULL); result = importXML (zip, gui, type); g_free (zip); } } else if (has_extension (filename, ".ly")) result = lyinput (filename); else if (has_extension (filename, ".mxml") || has_extension (filename, ".xml")) result = mxmlinput (filename); else if (has_extension (filename, ".mid") || has_extension (filename, ".midi")) result = (type==GUIDED_IMPORT)?guidedImportMidi (filename):importMidi (filename); else if (has_extension (filename, ".pdf") || has_extension (filename, ".PDF")) { #ifndef USE_EVINCE g_debug("This feature requires denemo to be built with evince"); #else // a .pdf file for transcribing from, does not affect the current score. g_signal_handlers_unblock_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_draw_event), NULL); return type==PROOFREAD? (!open_proofread_file(filename)) : !open_source (filename, 0, 0, 0); #endif } g_message("Opening file %s", filename); } //printf("\nResult == %d type == %d template == %d xml == %d\n",result,type,template,(int)xml); if (result == 0) { if (!template) { // not a template update_file_selection_path (filename); if (type == REPLACE_SCORE) { if (xml){ if (g_str_has_suffix (filename, ".gz")) { *(filename + strlen(filename) -3) = 0; } set_project_filename (gui, filename); } else { gchar *sname = strip_path_and_extension (filename); set_gui_tabname (gui, sname); g_free (sname); } } if (type == ADD_STAFFS || type == ADD_MOVEMENTS) score_status (gui, TRUE); } else { g_string_assign (gui->filename, ""); set_gui_tabname (gui, ""); } //if (Denemo.printarea) // g_object_set_data (G_OBJECT (Denemo.printarea), "printviewupdate", (gpointer) G_MAXUINT); if (!xml) updatescoreinfo (gui); else { if ((gui->script) && (*gui->script) && !(type == ADD_STAFFS || type == ADD_MOVEMENTS)) { gui->has_script = TRUE; cache_all (); executeScript (); } } set_rightmeasurenum (gui->movement); select_lyrics (); if(!Denemo.non_interactive){ set_bottom_staff (gui); update_hscrollbar (gui); update_vscrollbar (gui); draw_score_area(); g_signal_emit_by_name (G_OBJECT (Denemo.hadjustment), "changed"); g_signal_emit_by_name (G_OBJECT (Denemo.vadjustment), "changed"); force_lily_refresh (gui); } } else /*file load failed - gui may not be valid */ { if(!Denemo.non_interactive) deletescore (NULL, gui); } if(!Denemo.non_interactive){ g_signal_handlers_unblock_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_draw_event), NULL); gui->movement->undo_guard = 1; } denemo_scheme_init (); //to re-instate any user defined directives for whole score if(!Denemo.non_interactive){ if (!(type == ADD_STAFFS || type == ADD_MOVEMENTS)) score_status (gui, FALSE); #ifdef DISABLE_AUBIO #else rewind_audio (); #endif panic_all ();// g_print ("Reset synth in file open\n"); gui->movement->undo_guard = Denemo.prefs.disable_undo; //user pref to (dis)allow undo information to be collected } //look for a link to a source file at the start of the score, open it if there is one if ((result==0) && (type != ADD_STAFFS) && (type != ADD_MOVEMENTS) && Denemo.project->movement && Denemo.project->movement->thescore) { DenemoStaff*thestaff = (DenemoStaff*)Denemo.project->movement->thescore->data; DenemoMeasure* themeasure = (DenemoMeasure*)thestaff->themeasures->data; if (themeasure->objects) { DenemoObject *firstobj = (DenemoObject *)themeasure->objects->data; if (firstobj->type == LILYDIRECTIVE) { DenemoDirective *direc = (DenemoDirective *)firstobj->object; if (direc->tag && !strcmp (direc->tag->str, "DenemoLink") &&direc->data) { gchar *script = g_strdup_printf ("(d-OpenSource (scheme-escape \"%s\"))", direc->data->str); call_out_to_guile (script); g_free (script); } } } } return result; } /* If the filename format already has the correct extension use it. otherwise add the file name extension */ static gchar * create_filename (const gchar * file_name, gint format_id) { if (g_pattern_match_simple (FORMAT_MASK (format_id), file_name)) return (g_strdup (file_name)); else return (g_strconcat (file_name, FORMAT_EXTENSION (format_id), NULL)); } /* This is used to strip the extension (if it exists) off of ASYNC file types. */ static gchar * strip_filename_ext (const gchar * file_name, gint format_id) { gchar *ext = strrchr (file_name, '.'); if (ext == NULL) return g_strdup (file_name); gint i; GString *file_name_stripped = g_string_new (""); gint filename_size = strlen (file_name); gint ext_size = strlen (FORMAT_EXTENSION (format_id)); if (strlen (ext) != ext_size) return g_strdup (file_name); gint stripped_filename_size = filename_size - ext_size; for (i = 0; i < stripped_filename_size; i++) { g_string_append_c (file_name_stripped, file_name[i]); } printf ("\nTruncated filename == %s\n", file_name_stripped->str); return g_string_free (file_name_stripped, FALSE); } /* Save gui in the file in format format_id to the file filename (or gui->filename if filename is NULL) If there is a scheme script, offers to save that with the file. */ static gint save_in_format (gint format_id, DenemoProject * gui, gchar * filename) { gint ret = 0; gchar *file = filename ? filename : gui->filename->str; switch (format_id) { case DENEMO_FORMAT: case DNM_FORMAT: { /* HERE examine Denemo.Script and * if present ask it it should be * saved with the file, if not * delete the script. */ if (getNumCharsSchemeText () == 0) gui->has_script = FALSE; if ((!Denemo.non_interactive) && getNumCharsSchemeText () && (!gui->has_script)) if (choose_option (_("You have a Script defined"), _("Normal Save"), _("Advanced: Execute the script every time this file is opened?"))) { deleteSchemeText (); gui->has_script = FALSE; } ret = exportXML (file, gui); break; }; case MUDELA_FORMAT: { gui->movement->markstaffnum = 0; exportlilypond (file, gui, TRUE); break; }; case PDF_FORMAT: { gui->movement->markstaffnum = 0; export_pdf (file, gui); break; }; case PNG_FORMAT: { gui->movement->markstaffnum = 0; export_png (file, (GChildWatchFunc) printpng_finished, gui); break; }; case ABC_FORMAT: { exportabc (file, gui, 0, 0); break; }; case MIDI_FORMAT: { exportmidi (file, gui->movement); break; }; default: break; }; return ret; } /** * File save called by fileselsave callback * param file_name is full path to file possibly with extension */ static gint filesel_save (DenemoProject * gui, const gchar * file_name, gint format_id, DenemoSaveType template) { gint ret = 0; //g_assert (gui != NULL); //g_assert (file_name != NULL); //g_assert (format_id >= 0 && format_id < (int) G_N_ELEMENTS (supported_file_formats)); // Append file extension if needed gchar *file = NULL; gchar *basename = NULL; file = create_filename (file_name, format_id); if (!template && format_id == DENEMO_FORMAT) { update_file_selection_path (file); if(!Denemo.non_interactive) set_project_filename (gui, file); } basename = g_path_get_basename (file); if (basename[0] != '.') // avoids empty filename { if (FORMAT_ASYNC (format_id)) ret = save_in_format (format_id, gui, strip_filename_ext (file_name, format_id)); //FIXME strip_filename is not freed else ret = save_in_format (format_id, gui, file); /*export parts as lilypond files */ if (Denemo.prefs.saveparts) export_lilypond_parts (file, gui); if(!Denemo.non_interactive) gui->movement->readonly = FALSE; } g_free (basename); g_free (file); return ret; } /* set local_template_path up */ static void init_local_path (void) { local_template_path = g_build_filename (get_user_data_dir (TRUE), "templates", NULL); gboolean err = g_mkdir_with_parents (local_template_path, 0770); if (err) { warningdialog (_("Could not create .denemo/templates for you personal templates")); g_free (local_template_path); local_template_path = NULL; } } typedef enum { LOCAL, SYSTEM, EXAMPLE } TemplateType; /* * Sets the file_selection_path to the templates directory and * calls file_open to create the file selection dialog * LOCAL whether to use the local templates or systemwide templates or examples * does nothing if unable to access templates * filename is NULL for interactive use, otherwise file base name */ static gint template_open (DenemoProject * gui, TemplateType local, gchar * filename) { gboolean ret = FALSE; if (local == LOCAL) { if (local_template_path == NULL) { init_local_path (); } default_template_path = local_template_path; } else if (local == EXAMPLE) { if (system_example_path == NULL) { system_example_path = g_build_filename (get_system_data_dir (), "examples", NULL); GDir *denemo_path = g_dir_open (system_example_path, 0, NULL); if (denemo_path == NULL) { warningdialog (_("No examples directory in installation")); system_example_path = NULL; } } default_template_path = system_example_path; } else { if (system_template_path == NULL) { system_template_path = g_build_filename (get_system_data_dir (), "templates", NULL); GDir *denemo_path = g_dir_open (system_template_path, 0, NULL); if (denemo_path == NULL) { warningdialog (_("No templates directory in installation")); system_template_path = NULL; } } default_template_path = system_template_path; } if (default_template_path) { gchar *filepath = g_build_filename (default_template_path, filename, NULL); ret = file_open (gui, TRUE, REPLACE_SCORE, filepath); g_free (filepath); gui->filename = g_string_new (""); gui->tabname = g_string_new (""); } return ret; } static void open_with_check(TemplateType dir, DenemoAction * action, DenemoScriptParam * param){ GET_1PARAM(action, param, filename); if (Denemo.project->notsaved){ if (filename==NULL && confirmbox (Denemo.project)){ param->status = !template_open (Denemo.project, dir, filename); } } else{ param->status = !template_open (Denemo.project, dir, filename); } } /* * Open system template file callback function */ void system_template_open_with_check (DenemoAction * action, DenemoScriptParam * param) { open_with_check (SYSTEM, action, param); } /* * Open system template file callback function */ void system_example_open_with_check (DenemoAction * action, DenemoScriptParam * param) { open_with_check (EXAMPLE, action, param); } /* * Open local template file callback function */ void local_template_open_with_check (DenemoAction * action, DenemoScriptParam * param) { open_with_check (LOCAL, action, param); } /** * Wrapper function for opening a file, d-Open * if no param checks to see if current score has changed and prompts user to save * otherwise opens the file */ void file_open_with_check (DenemoAction * action, DenemoScriptParam * param) { GET_1PARAM (action, param, filename); if (query) { param->status = (Denemo.project->filename != NULL) && Denemo.project->filename->len; if (param->status) g_string_assign (param->string, Denemo.project->filename->str); return; } DenemoProject *gui = Denemo.project; if (!gui->notsaved || (gui->notsaved && (confirmbox (gui)))) { param->status = !file_open (gui, FALSE, REPLACE_SCORE, filename); } } void file_import_lilypond_with_check (DenemoAction * action, DenemoScriptParam * param) { GET_1PARAM(action, param, filename); param->status = !file_import_lilypond (Denemo.project, FALSE, REPLACE_SCORE, filename); } void file_import_midi_with_check (DenemoAction * action, DenemoScriptParam * param) { GET_2PARAMS(action, param, filename, guided); if(guided) file_import_midi (Denemo.project, FALSE, GUIDED_IMPORT, filename); else file_import_midi (Denemo.project, FALSE, REPLACE_SCORE, filename); } void file_import_musicxml_with_check (DenemoAction * action, DenemoScriptParam * param) { GET_1PARAM(action, param, filename); param->status = !file_import_musicxml (Denemo.project, FALSE, REPLACE_SCORE, filename); } #define ADD(insertion_strategy)\ GET_1PARAM(action, param, filename);\ (void)signal_structural_change(Denemo.project);\ param->status = !file_open(Denemo.project, FALSE, insertion_strategy, filename);\ score_status(Denemo.project, TRUE);\ /** * Wrapper function for opening a file to add movements to the current score * */ void file_add_movements (DenemoAction * action, DenemoScriptParam * param) { ADD (ADD_MOVEMENTS)} /** * Wrapper function for opening a file to add staffs to the current movement * */ void file_add_staffs (DenemoAction * action, DenemoScriptParam * param) { ADD (ADD_STAFFS)} static void set_current_folder (GtkWidget * file_selection, DenemoSaveType template) { gchar *path, *fallback; if (template == SAVE_TEMPLATE) { fallback = path = default_template_path; } else { fallback = path = file_selection_path; GDir *denemo_path = g_dir_open (Denemo.prefs.denemopath->str, 0, NULL); if (denemo_path != NULL) { g_dir_close (denemo_path); fallback = Denemo.prefs.denemopath->str; } } if (path != NULL) { gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_selection), path); } else { if (fallback != NULL) gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_selection), fallback); } } gchar * file_dialog (gchar * message, gboolean type, gchar * location) { GtkWidget *file_selection; gchar *filename; file_selection = gtk_file_chooser_dialog_new (message, GTK_WINDOW (Denemo.window), type ? GTK_FILE_CHOOSER_ACTION_OPEN : GTK_FILE_CHOOSER_ACTION_SAVE, _("_Cancel"), GTK_RESPONSE_REJECT, type ? _("_Open") : _("_Save"), GTK_RESPONSE_ACCEPT, NULL); if (location) gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_selection), location); gtk_dialog_set_default_response (GTK_DIALOG (file_selection), GTK_RESPONSE_ACCEPT); gtk_widget_show_all (file_selection); if (gtk_dialog_run (GTK_DIALOG (file_selection)) == GTK_RESPONSE_ACCEPT) filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_selection)); else filename = NULL; gtk_widget_destroy (file_selection); return filename; } static void update_preview_cb (GtkFileChooser * file_chooser, gpointer data) { #ifndef USE_EVINCE g_debug("This feature requires denemo to be built with evince"); #else GtkWidget *preview = NULL; gchar *thumb_filename = NULL; gchar *selection_filename = NULL; GdkPixbuf *pixbuf = NULL; gboolean have_preview = FALSE; preview = GTK_WIDGET (data); selection_filename = gtk_file_chooser_get_preview_filename (file_chooser); thumb_filename = large_thumbnail_name (selection_filename); pixbuf = gdk_pixbuf_new_from_file_at_size (thumb_filename, 512, 512, NULL); have_preview = (pixbuf != NULL); g_debug ("\n# %s for %s thumbnail = %s\n", have_preview ? "We have a thumbnail generated" : "We have not yet generated a thumbnail", selection_filename, thumb_filename); g_free (selection_filename); g_free (thumb_filename); gtk_image_set_from_pixbuf (GTK_IMAGE (preview), pixbuf); if (pixbuf) g_object_unref (pixbuf); gtk_file_chooser_set_preview_widget_active (file_chooser, have_preview); #endif } static gboolean file_open_dialog(gchar* message, gchar* format, FileFormatNames save_type, DenemoSaveType template, ImportType type, gchar* filename){ gboolean ret = -1; if(filename && (!g_file_test(filename, G_FILE_TEST_EXISTS)) && (!g_path_is_absolute (filename)) && file_selection_path) filename = g_build_filename (file_selection_path, filename, NULL);//memory leak if(filename && !g_file_test(filename, G_FILE_TEST_IS_DIR)) return (open_for_real(filename, Denemo.project, template, type)); GtkWidget *file_selection; GtkFileFilter *filter; gint i; file_selection = gtk_file_chooser_dialog_new (_(message), GTK_WINDOW (Denemo.window), GTK_FILE_CHOOSER_ACTION_OPEN, _("_Cancel"), GTK_RESPONSE_REJECT, _("_Open"), GTK_RESPONSE_ACCEPT, NULL); /* Open in passed in directory or the last visited directory, if any, or a default depending on template. */ if (filename && g_file_test(filename, G_FILE_TEST_IS_DIR)) gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_selection), filename); else set_current_folder(file_selection, template); filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, FORMAT_DESCRIPTION(save_type)); GList* exts = supported_file_extensions (format); GList* cur = NULL; for (cur = exts; cur; cur = cur->next) gtk_file_filter_add_pattern (filter, cur->data); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_selection), filter); gtk_dialog_set_default_response (GTK_DIALOG (file_selection), GTK_RESPONSE_ACCEPT); gtk_widget_show_all (file_selection); GtkWidget *preview; preview = gtk_image_new(); gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER (file_selection), preview); g_signal_connect (GTK_FILE_CHOOSER(file_selection), "update-preview", G_CALLBACK (update_preview_cb), preview); gtk_widget_show_all (preview); if (gtk_dialog_run (GTK_DIALOG (file_selection)) == GTK_RESPONSE_ACCEPT) { gchar *name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_selection)); if((ret=open_for_real (name, Denemo.project, template, type))) { gchar *warning = g_strdup_printf(_("Load of file %s failed"), name); warningdialog(warning); g_free(warning); } g_free (name); } gtk_widget_destroy (file_selection); return ret; } /** * File open dialog - opened where appropriate * return 0 on success non-zero on failure. * filename must be full path or NULL for dialog */ static gint file_open (DenemoProject * gui, DenemoSaveType template, ImportType type, gchar * filename) { return file_open_dialog ("Open", "denemo", DENEMO_FORMAT, template, type, filename); } gint open_source_file (void) { return file_open_dialog ("Open", "evince", PDF_FORMAT, 0, SOURCE_PDF, NULL); } gint open_proof_file (void) { return file_open_dialog ("Open", "proof", PDF_FORMAT, 0, PROOFREAD, NULL); } /** * Lilypond Import dialog - opened where appropriate * return 0 on success non-zero on failure. * filename must be full path or NULL for dialog */ static gint file_import_lilypond (DenemoProject * gui, DenemoSaveType template, ImportType type, gchar * filename) { return file_open_dialog ("Import Lilypond", "lilypond", MUDELA_FORMAT, template, type, filename); } /** * Midi Import dialog - opened where appropriate * return 0 on success non-zero on failure. * filename must be full path or NULL for dialog */ static gint file_import_midi (DenemoProject * gui, DenemoSaveType template, ImportType type, gchar * filename) { return file_open_dialog ("Import Midi", "midi", MIDI_FORMAT, template, type, filename); } /** * MusicXML Import dialog - opened where appropriate * return 0 on success non-zero on failure. * filename must be full path or NULL for dialog */ static gint file_import_musicxml (DenemoProject * gui, DenemoSaveType template, ImportType type, gchar * filename) { return file_open_dialog ("Import MusicXML", "musicxml", MUSICXML_FORMAT, template, type, filename); } /** * Wrapper function to save the current file if not already * saved. */ void file_saveaswrapper (DenemoAction * action, DenemoScriptParam * param) { GET_1PARAM (action, param, filename); DenemoProject *gui = Denemo.project; if (filename == NULL) { file_saveas (FALSE); } else { gint status = filesel_save (gui, filename, DENEMO_FORMAT, FALSE); if(!Denemo.non_interactive){ if (status == 0) score_status (gui, FALSE); force_lily_refresh (gui); } } } /** * Wrapper function to save the current file as template */ void template_save (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; init_local_path (); default_template_path = local_template_path; Denemo.project->total_edit_time = 0; file_saveas (SAVE_TEMPLATE); g_string_assign (gui->filename, ""); set_gui_tabname (gui, ""); } /** * Wrapper function to save the current file as a copy */ void file_copy_save (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { init_local_path (); file_saveas (SAVE_COPY); } /** * Wrapper function for saving an existing file * */ void file_savewrapper (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; GET_1PARAM (action, param, filename); if (filename) { exportXML (filename, gui); return; } if (file_save (NULL, gui)) { if (action && Denemo.project->filename && Denemo.project->filename->len) { warningdialog (_("File save failed")); score_status (gui, TRUE); } else { if (param) param->status = FALSE; } } } /** * if gui->filename exists saves gui to the filename based on its extension * otherwise call saveas routine */ gint file_save (GtkWidget * widget, DenemoProject * gui) { gint ret; DenemoMovement *si = gui->movement; g_debug ("READONLY %d\n", si->readonly); if ((gui->filename->len == 0) /* || (si->readonly == TRUE) */ ) /* No filename's been given or is opened from template */ file_saveas (FALSE); else ret = save_in_format (DENEMO_FORMAT, gui, NULL); /*Save parts as lilypond files */ if (Denemo.prefs.saveparts) export_lilypond_parts (gui->filename->str, gui); score_status (gui, FALSE); return ret; } static void file_dialog_response (GtkWidget * dialog, gint response_id, struct FileDialogData *data) { DenemoProject *gui = Denemo.project; if (response_id == GTK_RESPONSE_ACCEPT) { gchar *file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); if (replace_existing_file_dialog (file_name, data->format_id)) { gint status = filesel_save (gui, file_name, data->format_id, data->template); if (status == 0) score_status (gui, FALSE); force_lily_refresh (gui); //FIXME why is this here??? } g_free (file_name); } gtk_widget_destroy (dialog); g_free (data); } #define FILE_SAVE_DIALOG(description, template)\ GtkWidget *file_selection;\ GtkFileFilter *filter;\ file_selection = gtk_file_chooser_dialog_new (description,\ GTK_WINDOW (Denemo.window),\ GTK_FILE_CHOOSER_ACTION_SAVE,\ _("_Cancel"),\ GTK_RESPONSE_REJECT,\ _("_Save"),\ GTK_RESPONSE_ACCEPT, NULL);\ /*set default folder for saving */\ set_current_folder(file_selection, template?SAVE_TEMPLATE:SAVE_NORMAL);\ \ /* assign title */ \ gchar *title = get_scoretitle();\ if (title)\ { \ gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (file_selection), title);\ } \ \ filter = gtk_file_filter_new ();\ gtk_file_filter_set_name (filter, FORMAT_DESCRIPTION(format_id));\ gtk_file_filter_add_pattern (filter, FORMAT_MASK(format_id));\ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_selection), filter);\ gtk_dialog_set_default_response (GTK_DIALOG (file_selection),\ GTK_RESPONSE_ACCEPT);\ gtk_widget_show_all (file_selection);\ struct FileDialogData *data = (struct FileDialogData *) g_malloc (sizeof (struct FileDialogData));\ data->template=template;\ data->format_id=format_id;\ g_signal_connect(file_selection, "response", G_CALLBACK(file_dialog_response), data); /** * Create file saveas dialog to enable user to export the current file to * * */ static void file_export (FileFormatNames format_id) { gchar *description = g_strconcat (_("Export As "), FORMAT_DESCRIPTION (format_id), NULL); DenemoSaveType template = FALSE; FILE_SAVE_DIALOG (description, template) g_free (description); } /** * Create file saveas dialog to enable user to save the current file to * * */ void file_saveas (DenemoSaveType template) { gint format_id = DENEMO_FORMAT; FILE_SAVE_DIALOG (_("Save As"), template)} /** * Wrapper function for command New which asks to delete the current gui and on success creates an empty score * */ void file_newwrapper (DenemoAction * action, DenemoScriptParam * param) { DenemoScriptParam dummy; dummy.string = NULL; if (param == NULL) param = &dummy; DenemoProject *gui = Denemo.project; if(!Denemo.non_interactive) g_signal_handlers_block_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_draw_event), NULL); if (!Denemo.non_interactive && gui->notsaved) { if (confirmbox (gui)) { enquire_rhythms (); deletescore (NULL, gui); } else { param->status = FALSE; g_signal_handlers_unblock_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_draw_event), NULL); return; } } else { if(Denemo.non_interactive) delete_all_rhythms (); else enquire_rhythms (); deletescore (NULL, gui); } deleteSchemeText (); gui->has_script = FALSE; set_enharmonic_position (0); // if (Denemo.printarea) // g_object_set_data (G_OBJECT (Denemo.printarea), "printviewupdate", (gpointer) G_MAXUINT); score_status (gui, FALSE); param->status = TRUE; if(!Denemo.non_interactive) g_signal_handlers_unblock_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_draw_event), NULL); } #if 0 /* open_user_default_template * open the user's standard template if there is one * @return 0 for success non zero for failure **/ gint open_user_default_template (ImportType type) { gint ret = -1; gchar *filename = g_build_filename (get_user_data_dir (TRUE), "templates", "default.denemo", NULL); if (g_file_test (filename, G_FILE_TEST_EXISTS)) { ret = open_for_real (filename, Denemo.project, TRUE, type); } g_free (filename); return ret; } #endif /** * Creates dialog to say that the chosen filename already exists * and do you want to overwrite it. * */ static gboolean replace_existing_file_dialog (const gchar * filename, gint format_id) { gboolean ret; gchar *file = create_filename (filename, format_id); if (!g_file_test (file, G_FILE_TEST_EXISTS)) { g_free (file); return TRUE; } gchar *primary = g_strdup_printf (_("A file with the name %s already exists"), file); ret = confirm (primary, _("Do you want to replace it?")); g_free (file); g_free (primary); return ret; } /** * Save parts to individual files */ void file_savepartswrapper (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; if (gui->filename->len == 0) { file_saveas (FALSE); } export_lilypond_parts (gui->filename->str, gui); } static void lilypond_selection_received (G_GNUC_UNUSED GtkClipboard * clipboard, const gchar * text, G_GNUC_UNUSED gpointer data) { if (!text) { warningdialog (_("No selection text available")); return; } gchar *filename = g_build_filename (get_user_data_dir (TRUE), "denemopaste.ly", NULL); FILE *fp = fopen (filename, "w"); if (fp) { fprintf (fp, "music = { %s }\n\\score {\n\\music\n\\layout {}\n}\n", text); fclose (fp); gint theclef = find_prevailing_clef (Denemo.project->movement); newview (NULL, NULL); gint fail = open_for_real (filename, Denemo.project, TRUE, REPLACE_SCORE); //thescore can be NULL after failed load.... if (fail) { DenemoProject *gui = Denemo.project; //FIXME repeated code free_movements (gui); gtk_widget_destroy (Denemo.page); Denemo.projects = g_list_remove (Denemo.projects, gui); g_free (gui); warningdialog (_("Could not interpret selection as LilyPond notes")); return; } dnm_setinitialclef (Denemo.project->movement, (DenemoStaff *) Denemo.project->movement->currentstaff->data, theclef); call_out_to_guile ("(while (and (None?) (d-MoveToStaffDown)) (begin (d-MoveToStaffUp)(d-DeleteStaff)))"); if (confirm (_("Paste from Selection"), _("Paste this music into your score?"))) { DenemoProject *gui = Denemo.project; tohome (NULL, NULL); set_mark (NULL, NULL); toend (NULL, NULL); copywrapper (NULL, NULL); free_movements (gui); gtk_widget_destroy (Denemo.page); Denemo.projects = g_list_remove (Denemo.projects, gui); g_free (gui); pastewrapper (NULL, NULL); } } } void paste_clipboard (DenemoAction * action, DenemoScriptParam * param) { if (Denemo.project != g_list_last (Denemo.projects)->data) { warningdialog (_("Can only paste LilyPond text into the last tab, sorry")); return; } GtkClipboard *clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); gtk_clipboard_request_text (clipboard, (GtkClipboardTextReceivedFunc) lilypond_selection_received, NULL); } static void comment_selection_received (G_GNUC_UNUSED GtkClipboard * clipboard, const gchar * text) { gchar *comment; GString *exceptions = g_string_new (""); gint i; for (i=0x1;i<0x10;i++) g_string_append_printf (exceptions, "%c", i); for (i=0x7F;i<0x100;i++) g_string_append_printf (exceptions, "%c", i); if ((!text) || (*text == 0)) { warningdialog (_("No selection text available")); return; } gchar *escaped = g_strescape(text, exceptions->str); gchar *info = g_strconcat(_("Inserted:\n"), escaped, NULL); comment = g_strdup_printf ("(d-Comment \"%s\")(d-InfoDialog \"%s\")", escaped, info); call_out_to_guile (comment); g_string_free (exceptions, TRUE); g_free (escaped); g_free (info); g_free (comment); } void paste_comment (DenemoAction * action, DenemoScriptParam * param) { if(param && param->string && param->string->len) comment_selection_received (NULL, param->string->str); else { GtkClipboard *clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); gtk_clipboard_request_text (clipboard, (GtkClipboardTextReceivedFunc) comment_selection_received, NULL); } } static void export_interface(DenemoAction* action, DenemoScriptParam* param, gint format_id){ GET_1PARAM(action, param, filename); if (filename==NULL) file_export(format_id); else if (action==NULL || replace_existing_file_dialog(filename, format_id)){ filesel_save (Denemo.project, filename, format_id, SAVE_COPY); force_lily_refresh(Denemo.project); } } /** * Export mudela callback prompts for filename * */ void export_mudela_action (DenemoAction * action, DenemoScriptParam * param) { export_interface (action, param, MUDELA_FORMAT); } /** * Export pdf callback prompts for filename * */ void export_pdf_action (DenemoAction * action, DenemoScriptParam * param) { export_interface (action, param, PDF_FORMAT); } /** * Export pdf callback prompts for filename * */ void export_png_action (DenemoAction * action, DenemoScriptParam * param) { export_interface (action, param, PNG_FORMAT); } /** * Export ABC callback prompts for filename * */ void export_ABC_action (DenemoAction * action, DenemoScriptParam * param) { export_interface (action, param, ABC_FORMAT); } /** * Export MIDI callback prompts for filename * */ void export_midi_action (DenemoAction * action, DenemoScriptParam * param) { export_interface (action, param, MIDI_FORMAT); } denemo-2.2.0/src/export/PaxHeaders.19168/importmidi.h0000644000000000000000000000013213135434036017167 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.116648472 30 ctime=1500919914.273315138 denemo-2.2.0/src/export/importmidi.h0000644000175000017500000000017713135434036021045 0ustar00jjbenhamjjbenham00000000000000/* importmidi.h AJAnderson */ #include "smf.h" gint process_track (smf_track_t * track); gint importMidi (gchar * filename); denemo-2.2.0/src/export/PaxHeaders.19168/audiofile.c0000644000000000000000000000013213135434036016746 xustar0030 mtime=1500919838.353315139 30 atime=1500919919.116648472 30 ctime=1500919914.253315139 denemo-2.2.0/src/export/audiofile.c0000644000175000017500000000604113135434036020620 0ustar00jjbenhamjjbenham00000000000000// sourceaudio.c // // Copyright 2013 Richard Shann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA 02110-1301, USA. #include #include #include #include #include "export/audiofile.h" #include "export/file.h" #include "core/prefops.h" #include "core/utils.h" const gchar * recorded_audio_filename (void) { static gchar *filename; if (filename == NULL) filename = g_build_filename (get_user_data_dir (TRUE), "denemo_audio.1channel-floats", NULL); return filename; } gboolean export_recorded_audio () { const gchar *filename = recorded_audio_filename (); SF_INFO out; if (filename) { gsize length; float *data; if (g_file_get_contents (filename, (gchar **)&data, &length, NULL)) { gchar *outfile = file_dialog ("Give output audio file name, with .ogg or .wav extension", FALSE, Denemo.prefs.denemopath->str); if (outfile) { gint len = strlen (outfile); if (len > 4) { if (*(outfile + len - 3) == 'o') { out.format = SF_FORMAT_VORBIS | SF_FORMAT_OGG; } else { out.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16; } out.channels = 1; out.samplerate = 44100; gpointer outsnd = sf_open (outfile, SFM_WRITE, &out); if (outsnd) { sf_write_float (outsnd, data, length/sizeof(float)); g_free(data); sf_close (outsnd); return TRUE; } else { g_warning ("Unable to open file %s for writing this format", outfile); } g_free (outfile); } } } else { if (Denemo.prefs.maxrecordingtime) warningdialog (_("No audio recording has been made.\nSee Playback Controls - Record Button")); else warningdialog (_("The preference set for recording time is 0 - nothing is recorded.\nSee Edit → Change Preferences Audio/Midi Tab")); } } return FALSE; } denemo-2.2.0/src/export/PaxHeaders.19168/importmusicxml.h0000644000000000000000000000013213135434036020106 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.126648472 30 ctime=1500919914.276648472 denemo-2.2.0/src/export/importmusicxml.h0000644000175000017500000000040513135434036021756 0ustar00jjbenhamjjbenham00000000000000/* * importmusicxml.h * * Functions for importing a MusicXML file * * for Denemo, a gtk+ frontend to GNU Lilypond * (C) 2010 Richard Shann * * License: this file may be used under the FSF GPL version 3 or later */ gint mxmlinput (gchar * filename); denemo-2.2.0/src/export/PaxHeaders.19168/guidedimportmidi.c0000644000000000000000000000013213135434036020344 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.126648472 30 ctime=1500919914.269981805 denemo-2.2.0/src/export/guidedimportmidi.c0000644000175000017500000003151113135434036022216 0ustar00jjbenhamjjbenham00000000000000/*importmidi.c * midi file import functions * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2003-2005 AJAnderson * * TODO * * multi voice support * lyrics * triplet support * */ #include #include #include #include #include #include #include "command/staff.h" #include "smf.h" #include "core/view.h" #include "core/utils.h" #include "export/file.h" #include "command/commandfuncs.h" #include "command/processstaffname.h" #include "export/exportmidi.h" #include "audio/pitchentry.h" static smf_t *smf = NULL; static gint current_track = 0; static gboolean smf_from_file = FALSE; #define TEXT 0x01 #define COPYRIGHT 0X02 #define META_TRACK_NAME 0x03 #define META_INSTR_NAME 0x04 #define META_TEMPO 0x51 #define META_TIMESIG 0x58 #define META_KEYSIG 0x59 #define NOTE_OFF 0x80 #define NOTE_ON 0x90 #define AFTERTOUCH 0xA0 #define CTRL_CHANGE 0xB0 #define PGM_CHANGE 0xC0 #define CHNL_PRESSURE 0xD0 #define PCH_WHEEL 0xE0 #define SYS_EXCLUSIVE_MESSAGE1 0xF0 #define META_EVENT 0xFF /** * Insert time signature into current staff * */ static void dotimesig (gint numerator, gint denominator) { DenemoProject *gui = Denemo.project; /*only does initial TS */ DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; curstaffstruct->timesig.time1 = numerator; curstaffstruct->timesig.time2 = denominator; } /** * Insert key signature into the current staff * */ static void dokeysig (gint isminor, gint key) { DenemoProject *gui = Denemo.project; if (key > 7) key = key - 256; /*get flat key num, see keysigdialog.cpp */ g_debug ("\nkey = %d\n", key); DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; curstaffstruct->keysig.number = key; curstaffstruct->keysig.isminor = isminor; dnm_setinitialkeysig (curstaffstruct, key, isminor); } static void dotempo (gint tempo) { DenemoProject *gui = Denemo.project; gui->movement->tempo = (gint) (6.0e7 / (double) tempo); //FIXME insert as change of tempo instead g_warning("Changed si->tempo to %d", gui->movement->tempo); } static void dotrackname (gchar * name) { DenemoProject *gui = Denemo.project; DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; if (name) g_string_assign (curstaffstruct->denemo_name, name); } static void doinstrname (gchar * name) { DenemoProject *gui = Denemo.project; DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; if (name) g_string_assign (curstaffstruct->midi_instrument, name); } static smf_t * cmd_load (gchar * file_name) { smf_t *smf; smf = smf_load (file_name); if (smf == NULL) { g_critical ("Couldn't load '%s'.", file_name); return NULL; } g_message ("File '%s' loaded.", file_name); g_message ("%s.", smf_decode (smf)); return smf; } #define BUFFER_SIZE 1024 static void decode_metadata (const smf_event_t * event) { switch (event->midi_buffer[1]) { case META_TRACK_NAME: //return smf_event_decode_textual(event, "Sequence/Track Name"); dotrackname (smf_event_extract_text (event)); case META_INSTR_NAME: //printf("\nInstrument text = %s\n", smf_string_from_event(event)); doinstrname (smf_event_extract_text (event)); default: break; } } /** * Process note off command */ static void donoteoff (const smf_event_t * event) { } /** * Process note on command */ static void donoteon (smf_event_t * event) { DenemoRecordedNote *note = g_malloc0(sizeof(DenemoRecordedNote)); note->timing = event->time_seconds * Denemo.project->movement->recording->samplerate; notenum2enharmonic (noteon_key(event), &(note->mid_c_offset), &(note->enshift), &(note->octave)); note->event = (struct smf_event_t *)event; Denemo.project->movement->recording->notes = g_list_append (Denemo.project->movement->recording->notes, note); } static void decode_midi_event (smf_event_t * event) { gint channel; gchar note[5]; /* + 1, because user-visible channels used to be in range <1-16>. */ channel = (event->midi_buffer[0] & 0x0F) + 1; switch (event->midi_buffer[0] & SYS_EXCLUSIVE_MESSAGE1) { case NOTE_OFF: donoteoff (event); break; case NOTE_ON: if (event->midi_buffer[2]) donoteon (event); else donoteoff (event); break; default: break; } } static void event_for_staff (smf_event_t * event) { if (smf_event_is_metadata (event)) decode_metadata (event); else decode_midi_event (event); } static gint create_staff (gint track) { smf_event_t *event; smf_track_t *selected_track; smf_rewind (smf); selected_track = smf_get_track_by_number (smf, track); while ((event = smf_track_get_next_event (selected_track)) && event) event_for_staff (event); return 1; } /* create the global smf for the recorded track if it does not already belong to it * this happens when the user records MIDI using a MIDI controller, add the track and set user_pointer to -1 to indicate that the smf is for recorded MIDI * otherwise add it to smf, or if already present in smf (user_pointer points to track number) re-attach so that smf can be used. */ static void ensure_smf (void) { if (Denemo.project->movement->recorded_midi_track) { smf_track_t *track = Denemo.project->movement->recorded_midi_track; if(smf==NULL) { smf = smf_new (); smf_add_track (smf, track); track->user_pointer = GINT_TO_POINTER(-1); } else { track->smf = smf; if(smf_from_file) { assert(track->user_pointer>0); track->track_number = GPOINTER_TO_INT(track->user_pointer); } else track->track_number = 1; } } } static void guess_note_length (gdouble quarternotes, gint *dur, gint *dot) { int vals[] = { 7 ,10 ,13 ,19 ,25 ,37 ,49 ,73 ,97 ,145 ,193 ,289 ,385 ,577 ,769 ,1153 ,1537 ,2205 }; //#define formula(n) ((vals[n+1]+vals[n])/2) // ad hoc formula, nothing really works for guessing durations. #define formula(n) (vals[n]) gint ticks = (gint)(384*quarternotes+0.5); if(ticks < formula(0)) {*dur = 8;*dot = 0; return;} if(ticks < formula(1)) {*dur = 8;*dot = 1; return;} if(ticks < formula(2)) {*dur = 7;*dot = 0; return;} if(ticks < formula(3)) {*dur = 7;*dot = 1; return;} if(ticks < formula(4)) {*dur = 6;*dot = 0; return;} if(ticks < formula(5)) {*dur = 6;*dot = 1; return;} if(ticks < formula(6)) {*dur = 5;*dot = 0; return;} if(ticks < formula(7)) {*dur = 5;*dot = 1; return;} if(ticks < formula(8)) {*dur = 4;*dot = 0; return;} if(ticks < formula(9)) {*dur = 4;*dot = 1; return;} if(ticks < formula(10)) {*dur = 3;*dot = 0; return;} if(ticks < formula(11)) {*dur = 3;*dot = 1; return;} if(ticks < formula(12)) {*dur = 2;*dot = 0; return;} if(ticks < formula(13)) {*dur = 2;*dot = 1; return;} if(ticks < formula(14)) {*dur = 1;*dot = 0; return;} if(ticks < formula(15)) {*dur = 1;*dot = 1; return;} if(ticks < formula(16)) {*dur = 0;*dot = 0; return;} if(ticks<2705) {*dur = 0;*dot = 1; return;} *dur = *dot = 0; } gboolean compute_midi_note_durations (void) { gboolean ret = FALSE; DenemoRecording *recording = Denemo.project->movement->recording; if (recording) { GList *g; ensure_smf (); smf_rewind (smf); for(g = recording->notes;g;g=g->next) { DenemoRecordedNote *note = g->data; smf_event_t *event = note->event; if( event && (0 == smf_seek_to_event (smf, event))) { smf_event_t *next; while ((next = smf_get_next_event (smf))) { if (((next->midi_buffer[0] & SYS_EXCLUSIVE_MESSAGE1)==NOTE_OFF) && (next->midi_buffer[1] == event->midi_buffer[1])) { smf_tempo_t *tempo = smf_get_tempo_by_seconds (smf, event->time_seconds); double spqn = (tempo? tempo->microseconds_per_quarter_note/1000000.0: 60.0/Denemo.project->movement->tempo); guess_note_length((next->time_seconds - event->time_seconds)/spqn, ¬e->duration, ¬e->dots); //g_debug("spqn %f dur %f %d %d\n", spqn, (next->time_seconds - event->time_seconds), note->duration, note->dots); ret = TRUE; break; } } smf_rewind (smf); } } } return ret; } static gint readtrack (gint track) { gint ret = 0; smf_track_t *selected_track; //double track_duration = smf_get_length_seconds (smf); smf_rewind (smf); if (track > 0 && track <= smf->number_of_tracks) { selected_track = smf_get_track_by_number (smf, track); new_midi_recording (); create_staff (track); //re-attach the current Denemo.project->movement->recorded_midi_track to smf or delete it if it is not in smf if(Denemo.project->movement->recorded_midi_track) { if(((smf_track_t *)Denemo.project->movement->recorded_midi_track)->user_pointer == NULL) smf_track_delete(Denemo.project->movement->recorded_midi_track); else ((smf_track_t *)Denemo.project->movement->recorded_midi_track)->smf = smf; } selected_track->user_pointer = GINT_TO_POINTER(track); Denemo.project->movement->recorded_midi_track = selected_track; compute_midi_note_durations (); //fills Denemo.project->movement->recording->notes with the note durations ((smf_track_t *)Denemo.project->movement->recorded_midi_track)->smf = NULL; // we detach this track from smf, so it can be attached to the playback smf; we cannot use smf while this is done, as it thinks it still owns the track. current_track = track; } else ret = -1; exportmidi (NULL, Denemo.project->movement); return ret; } gint get_imported_midi_track (gint track) { ensure_smf (); if(smf) return readtrack(track); else return -1; } gint get_imported_midi_tracks (void) { if(smf) return smf->number_of_tracks; else if(Denemo.project->movement->recorded_midi_track) return 1; return 0; } gint get_current_midi_track (void) { return current_track; } smf_tempo_t *get_recorded_midi_tempo (gint index) { ensure_smf (); if(smf && index>=0) return smf_get_tempo_by_number(smf, index); else return NULL; } double my_smf_get_length_seconds(const smf_t *smf) { int i; double seconds = 0.0; for (i = 1; i <= smf->number_of_tracks; i++) { smf_track_t *track; smf_event_t *event; track = smf_get_track_by_number(smf, i); assert(track); event = smf_track_get_last_event(track); /* Empty track? */ if (event == NULL) continue; //g_debug("my seconds %f\n", event->time_seconds ); if (event->time_seconds > seconds) seconds = event->time_seconds; } return (seconds); } gdouble get_recorded_midi_duration (void) { ensure_smf (); if(smf) { #if 0 double val1, val2; val1 = smf_get_length_seconds (smf); val2 = my_smf_get_length_seconds (smf); if((int)val1 != (int)val2) g_critical ("Call to smf_get_length_seconds has yielded bad value: %f should be %f\n", val1, val2); return val2; #else //return smf_get_length_seconds (smf); g_debug("my value %f\n", my_smf_get_length_seconds (smf)); double val = smf_get_length_seconds (smf); //g_debug("smf val %f\n", val); return val; #endif } else return 0.0; } gboolean delete_imported_midi (void) { if(is_playing ()) { stop_playing(); return FALSE; } if (smf) { // gint track; // for (track=1; track <= smf->number_of_tracks; track++) // smf_get_track_by_number (smf, track)->smf = smf; // FIXME, this crashes with the assertion smf.c:752: smf_get_track_by_number: Assertion `track_number >= 1' failed. in some circumstances. smf = NULL; current_track = 0; } if(Denemo.project && Denemo.project->movement) Denemo.project->movement->recorded_midi_track = NULL; delete_recording (); smf_from_file = FALSE; return TRUE; } gint guidedImportMidi (gchar * filename) { delete_imported_midi (); /* load the file */ smf = cmd_load (filename); if (!smf) return -1; smf_from_file = TRUE; return 0; } gboolean midi_is_from_file (void) { return smf_from_file; } denemo-2.2.0/src/export/PaxHeaders.19168/importmidi.c0000644000000000000000000000013213135434036017162 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.139981805 30 ctime=1500919914.273315138 denemo-2.2.0/src/export/importmidi.c0000644000175000017500000004155613135434036021046 0ustar00jjbenhamjjbenham00000000000000/*importmidi.c * midi file import functions * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2003-2005 AJAnderson * * TODO * * multi voice support * lyrics * triplet support * */ #include #include #include #include #include #include #include "importmidi.h" #include "command/staff.h" #include "smf.h" #include "core/view.h" #include "core/utils.h" #include "export/file.h" #include "command/commandfuncs.h" #include "command/processstaffname.h" #define TEXT 0x01 #define COPYRIGHT 0X02 #define META_TRACK_NAME 0x03 #define META_INSTR_NAME 0x04 #define META_TEMPO 0x51 #define META_TIMESIG 0x58 #define META_KEYSIG 0x59 #define NOTE_OFF 0x80 #define NOTE_ON 0x90 #define AFTERTOUCH 0xA0 #define CTRL_CHANGE 0xB0 #define PGM_CHANGE 0xC0 #define CHNL_PRESSURE 0xD0 #define PCH_WHEEL 0xE0 #define SYS_EXCLUSIVE_MESSAGE1 0xF0 #define META_EVENT 0xFF typedef struct notetype { gint notetype; gint numofdots; } notetype; typedef struct harmonic { gint pitch; gint enshift; } harmonic; static void note_from_int (char *buf, int note_number) { int note, octave; char *names[] = { "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" }; octave = note_number / 12 - 1; note = note_number % 12; sprintf (buf, "%s%d", names[note], octave); } static harmonic enharmonic (gint input, gint key) { harmonic local; local.pitch = (input / 12) - 5; local.enshift = input % 12; switch (local.enshift) { case 0: //c { local.pitch = (key > 6) ? (-1 + local.pitch * 7) : (local.pitch * 7); local.enshift = (key > 6) ? (1) : (0); break; } case 1: //c# { local.pitch = (key < -3) ? (1 + local.pitch * 7) : (local.pitch * 7); local.enshift = (key < -3) ? (-1) : (1); break; } case 2: //D { local.pitch = 1 + local.pitch * 7; local.enshift = 0; break; } case 3: //D# { local.pitch = (key < -1) ? (2 + local.pitch * 7) : (1 + local.pitch * 7); local.enshift = (key < -1) ? (-1) : (1); break; } case 4: //E { local.pitch = (key < -6) ? (3 + local.pitch * 7) : (2 + local.pitch * 7); local.enshift = (key < -6) ? (-1) : (0); break; } case 5: //F { local.pitch = (key > 5) ? (2 + local.pitch * 7) : (3 + local.pitch * 7); local.enshift = (key > 5) ? (1) : (0); break; } case 6: //F# { local.pitch = (key < -4) ? (4 + local.pitch * 7) : (3 + local.pitch * 7); local.enshift = (key < -4) ? (-1) : (1); break; } case 7: //G { local.pitch = 4 + local.pitch * 7; local.enshift = 0; break; } case 8: //G# { local.pitch = (key < -2) ? (5 + local.pitch * 7) : (4 + local.pitch * 7); local.enshift = (key < -2) ? (-1) : (1); break; } case 9: //A { local.pitch = 5 + local.pitch * 7; local.enshift = 0; break; } case 10: //A# { local.pitch = (key < 0) ? (6 + local.pitch * 7) : (5 + local.pitch * 7); local.enshift = (key < 0) ? (-1) : (1); break; } case 11: //B { local.pitch = (key < -5) ? (7 + local.pitch * 7) : (6 + local.pitch * 7); local.enshift = (key < -5) ? (-1) : (0); break; } }; return local; } static void ConvertLength (gint ppqn, gint duration, notetype * pnotetype) { /*convert length to 2 = quarter, 1 = half, 0 = whole etc...... */ /* quarter = 384, half = 768, whole = 1536 */ gint notetype = 0; gint numofdots = 0; gint leftover = 0; gint dsq = (4 * ppqn); g_debug ("\nDuration = %d ticks\n", duration); while ((dsq >> notetype) > duration) notetype++; leftover = duration - (dsq >> notetype); if ((dsq >> (notetype + 1)) > 0) while (leftover >= (dsq >> (notetype + 1))) { leftover -= (dsq >> (notetype + 1)); numofdots++; } pnotetype->notetype = notetype; pnotetype->numofdots = numofdots; } /** * Insert time signature into current staff * */ static void dotimesig (gint numerator, gint denominator) { DenemoProject *gui = Denemo.project; /*only does initial TS */ DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; curstaffstruct->timesig.time1 = numerator; curstaffstruct->timesig.time2 = denominator; } /** * Insert key signature into the current staff * */ static void dokeysig (gint isminor, gint key) { DenemoProject *gui = Denemo.project; if (key > 7) key = key - 256; /*get flat key num, see keysigdialog.cpp */ g_debug ("\nkey = %d\n", key); DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; curstaffstruct->keysig.number = key; curstaffstruct->keysig.isminor = isminor; dnm_setinitialkeysig (curstaffstruct, key, isminor); } static void dotempo (gint tempo) { DenemoProject *gui = Denemo.project; gui->movement->tempo = (gint) (6.0e7 / (double) tempo); } static void dotrackname (gchar * name) { DenemoProject *gui = Denemo.project; DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; if (name) g_string_assign (curstaffstruct->denemo_name, name); } static void doinstrname (gchar * name) { DenemoProject *gui = Denemo.project; DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; if (name) g_string_assign (curstaffstruct->midi_instrument, name); } static void insert_rest_into_score (notetype length) { DenemoProject *gui = Denemo.project; gint i; switch (length.notetype) { case 0: insert_rest_0key (NULL, NULL); break; case 1: insert_rest_1key (NULL, NULL); break; case 2: insert_rest_2key (NULL, NULL); break; case 3: insert_rest_3key (NULL, NULL); break; case 4: insert_rest_4key (NULL, NULL); break; case 5: insert_rest_5key (NULL, NULL); break; case 6: insert_rest_6key (NULL, NULL); break; default: insert_rest_2key (NULL, NULL); break; } displayhelper (gui); /* add dots */ for (i = 0; i < length.numofdots; i++) add_dot_key (NULL, NULL); } static gint ConvertNoteType2ticks (gint ppqn, notetype * gnotetype) { gint ticks; gint notetype = (int) gnotetype->notetype; gint numofdots = (int) gnotetype->numofdots; gint dsq = (4 * ppqn); gint i = 0; ticks = dsq >> notetype; while (i++ < numofdots) ticks += dsq >> (notetype + 1); return ticks; } static void AddRest (gint ppqn, gint duration) { gint rest; gint ticks; if (duration == 0) return; rest = duration; while (rest) { notetype length; ConvertLength (ppqn, rest, &length); insert_rest_into_score (length); ticks = ConvertNoteType2ticks (ppqn, &length); rest -= ticks; } } static void insert_note_into_score (gint pitch, notetype length) { DenemoProject *gui = Denemo.project; DenemoStaff *curstaffstruct = (DenemoStaff *) gui->movement->currentstaff->data; gint i; /* 0-8 accepted bellow */ DenemoScriptParam param; highlight_duration (gui, length.notetype); switch (length.notetype) { case 0: insert_chord_0key (NULL, NULL); break; case 1: insert_chord_1key (NULL, NULL); break; case 2: insert_chord_2key (NULL, NULL); break; case 3: insert_chord_3key (NULL, NULL); break; case 4: insert_chord_4key (NULL, NULL); break; case 5: insert_chord_5key (NULL, NULL); break; case 6: insert_chord_6key (NULL, NULL); break; case 7: insert_chord_7key (NULL, NULL); break; default: insert_chord_8key (NULL, NULL); g_warning ("Cannot handle size %d", length.notetype); break; } score_status (gui, TRUE); displayhelper (gui); g_debug ("DenemoScriptParam = %d", param.status); /* get correct note name */ gint key = curstaffstruct->keysig.number; harmonic enote = enharmonic (pitch, (gint) key); gchar *name = mid_c_offsettolily (enote.pitch, enote.enshift); /* Rename note to the correct note */ gchar *accidental = g_strdup_printf ("(d-ChangeChordNotes \"%s\")", name); call_out_to_guile (accidental); g_free (accidental); /* Add dots */ for (i = 0; i < length.numofdots; i++) add_dot_key (NULL, NULL); displayhelper (gui); } static void AddMidiNote (gint ppqn, gint pitch, gint duration) { if (duration == 0) return; notetype length; ConvertLength (ppqn, duration, &length); insert_note_into_score (pitch, length); } static smf_t * cmd_load (gchar * file_name) { smf_t *smf; smf = smf_load (file_name); if (smf == NULL) { g_critical ("Couldn't load '%s'.", file_name); return NULL; } g_message ("File '%s' loaded.", file_name); g_message ("%s.", smf_decode (smf)); return smf; } #define BUFFER_SIZE 1024 void decode_metadata (const smf_event_t * event) { int off = 0, mspqn, flats, isminor; char *buf; /* static const char *const major_keys[] = { "Fb", "Cb", "Gb", "Db", "Ab", "Eb", "Bb", "F", "C", "G", "D", "A", "E", "B", "F#", "C#", "G#" }; static const char *const minor_keys[] = { "Dbm", "Abm", "Ebm", "Bbm", "Fm", "Cm", "Gm", "Dm", "Am", "Em", "Bm", "F#m", "C#m", "G#m", "D#m", "A#m", "E#m" }; */ //assert(smf_event_is_metadata(event)); switch (event->midi_buffer[1]) { case TEXT: //return smf_event_decode_textual(event, "Text"); case COPYRIGHT: //return smf_event_decode_textual(event, "Copyright"); case META_TRACK_NAME: //return smf_event_decode_textual(event, "Sequence/Track Name"); dotrackname (smf_event_extract_text (event)); case META_INSTR_NAME: //printf("\nInstrument text = %s\n", smf_string_from_event(event)); doinstrname (smf_event_extract_text (event)); case 0x05: //return smf_event_decode_textual(event, "Lyric"); case 0x06: //return smf_event_decode_textual(event, "Marker"); case 0x07: //return smf_event_decode_textual(event, "Cue Point"); case 0x08: //return smf_event_decode_textual(event, "Program Name"); case 0x09: //return smf_event_decode_textual(event, "Device (Port) Name"); default: break; } buf = malloc (BUFFER_SIZE); if (buf == NULL) { g_critical ("smf_event_decode_metadata: malloc failed."); } switch (event->midi_buffer[1]) { case 0x00: off += snprintf (buf + off, BUFFER_SIZE - off, "Sequence number"); break; /* http://music.columbia.edu/pipermail/music-dsp/2004-August/061196.html */ case 0x20: if (event->midi_buffer_length < 4) { g_critical ("smf_event_decode_metadata: truncated MIDI message."); goto error; } off += snprintf (buf + off, BUFFER_SIZE - off, "Channel Prefix: %d.", event->midi_buffer[3]); break; case 0x21: if (event->midi_buffer_length < 4) { g_critical ("smf_event_decode_metadata: truncated MIDI message."); goto error; } off += snprintf (buf + off, BUFFER_SIZE - off, "Midi Port: %d.", event->midi_buffer[3]); break; case 0x2F: off += snprintf (buf + off, BUFFER_SIZE - off, "End Of Track"); break; case META_TEMPO: if (event->midi_buffer_length < 6) { g_critical ("smf_event_decode_metadata: truncated MIDI message."); goto error; } mspqn = (event->midi_buffer[3] << 16) + (event->midi_buffer[4] << 8) + event->midi_buffer[5]; dotempo (mspqn); break; case 0x54: off += snprintf (buf + off, BUFFER_SIZE - off, "SMPTE Offset"); break; case META_TIMESIG: if (event->midi_buffer_length < 7) { g_critical ("smf_event_decode_metadata: truncated MIDI message."); goto error; } dotimesig (event->midi_buffer[3], (int) pow (2, event->midi_buffer[4])); break; case META_KEYSIG: if (event->midi_buffer_length < 5) { g_critical ("smf_event_decode_metadata: truncated MIDI message."); goto error; } flats = event->midi_buffer[3]; isminor = event->midi_buffer[4]; if (isminor != 0 && isminor != 1) { g_critical ("smf_event_decode_metadata: last byte of the Key Signature event has invalid value %d.", isminor); goto error; } dokeysig (isminor, flats); break; case 0x7F: off += snprintf (buf + off, BUFFER_SIZE - off, "Proprietary (aka Sequencer) Event, length %d", event->midi_buffer_length); break; default: goto error; } error: free (buf); } /** * extremely simple quantizer that rounds * to the closest granule size */ static gint round2granule (gint tick) { gint smallestgrain = 48; gdouble div = ((gdouble) tick / (gdouble) smallestgrain); return smallestgrain * (gint) round (div); } /** * Process note off command */ void donoteoff (const smf_event_t * event) { gint duration; gint ppqn; ppqn = event->track->smf->ppqn; duration = event->delta_time_pulses; duration = round2granule (duration); AddMidiNote (ppqn, event->midi_buffer[1], duration); } /** * Process note on command */ void donoteon (const smf_event_t * event) { gint ppqn; ppqn = event->track->smf->ppqn; if (event->delta_time_pulses) AddRest (ppqn, round2granule (event->delta_time_pulses)); } void decode_midi_event (const smf_event_t * event) { gint channel; gchar note[5]; /* + 1, because user-visible channels used to be in range <1-16>. */ channel = (event->midi_buffer[0] & 0x0F) + 1; switch (event->midi_buffer[0] & SYS_EXCLUSIVE_MESSAGE1) { case NOTE_OFF: note_from_int (note, event->midi_buffer[1]); g_debug ("\nNote Off channel %d note %s velocity %d\n", channel, note, event->midi_buffer[2]); donoteoff (event); break; case NOTE_ON: note_from_int (note, event->midi_buffer[1]); g_debug ("\nNote On channel %d note %s velocity %d\n", channel, note, event->midi_buffer[2]); if (event->midi_buffer[2]) donoteon (event); else donoteoff (event); break; case AFTERTOUCH: note_from_int (note, event->midi_buffer[1]); g_debug ("\nAftertouch channel %d note %s velocity %d\n", channel, note, event->midi_buffer[2]); break; case CTRL_CHANGE: g_debug ("\nController channel %d controller %d value %d\n", channel, event->midi_buffer[1], event->midi_buffer[2]); break; case PGM_CHANGE: g_debug ("\nProgram Change channel %d controller %d\n", channel, event->midi_buffer[1]); break; case CHNL_PRESSURE: g_debug ("\nChannel Pressure channel %d pressure %d\n", channel, event->midi_buffer[1]); break; case PCH_WHEEL: g_debug ("\nPitch Wheel channel %d value %d\n", channel, ((int) event->midi_buffer[2] << 7) | (int) event->midi_buffer[2]); break; default: break; } } static int process_midi (smf_event_t * event) { if (smf_event_is_metadata (event)) decode_metadata (event); else decode_midi_event (event); return 0; } gint process_track (smf_track_t * track) { smf_event_t *event; smf_t *smf = track->smf; //tracks can't be processed except inside an smf_t so create one if needed gboolean delete_smf_after = FALSE; if (smf == NULL) { delete_smf_after = TRUE; smf = smf_new (); smf_add_track (smf, track); smf_rewind (smf); } while ((event = smf_track_get_next_event (track)) && event) process_midi (event); if (delete_smf_after) { smf_track_remove_from_smf (track); smf_delete (smf); } return 1; } void AddStaff () { call_out_to_guile ("(d-AddAfter)"); } static gint readtrack (smf_t * smf) { smf_track_t *selected_track; gint track; smf_rewind (smf); for (track = 1; track <= smf->number_of_tracks; track++) { selected_track = smf_get_track_by_number (smf, track); process_track (selected_track); if (track + 1 <= smf->number_of_tracks) AddStaff (); } return 0; } gint importMidi (gchar * filename) { smf_t *smf; gint ret = 0; // (-1 on failure) gboolean save = Denemo.prefs.immediateplayback; Denemo.prefs.immediateplayback = FALSE; /* load the file */ smf = cmd_load (filename); if (!smf) return -1; /* Read Track Data */ if (readtrack (smf)) return -1; /* Delete data...Does it free it? */ smf_delete (smf); Denemo.prefs.immediateplayback = save; return ret; } denemo-2.2.0/src/export/PaxHeaders.19168/exportlilypond.c0000644000000000000000000000013213135434036020101 xustar0030 mtime=1500919838.353315139 30 atime=1500919919.159981805 30 ctime=1500919914.259981805 denemo-2.2.0/src/export/exportlilypond.c0000644000175000017500000042631413135434036021764 0ustar00jjbenhamjjbenham00000000000000/* exportlilypond.c * Functions for generating LilyPond representation of the music * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000, 2001, 2002 Matthew Hiller, Adam Tee */ #include "config.h" #include #include #include #include "core/utils.h" #include #include #include #include #include #include "export/exportlilypond.h" #include "export/print.h" #include "printview/printview.h" #include "command/score.h" #include "command/object.h" #include "export/xmldefs.h" #include "command/lyric.h" #include "command/processstaffname.h" #include "command/commandfuncs.h" #include "command/lilydirectives.h" #include "command/scorelayout.h" #include "command/contexts.h" #include "display/draw.h" #include "core/view.h" #include "core/menusystem.h" #include "audio/audiointerface.h" #include "printview/printview.h" #define ENTER_NOTIFY_EVENT "focus-in-event" #define LEAVE_NOTIFY_EVENT "focus-out-event" #define SIGNAL_WIDGET Denemo.textwindow /* Denemo.window */ #define GSTRINGP "gstring" #define MUSIC "music" #define START "start" #define SCOREBLOCK "scoreblock" #define CUSTOM "custom" #define OBJECTNODE "object" #define ORIGINAL "original" #define OBJECTNUM "objectnum" #define TARGETTYPE "type" #define MIDCOFFSET "midcoffset" #define DIRECTIVENUM "directivenum" #define MEASURENUM "measurenum" #define STAFFNUM "staffnum" #define MOVEMENTNUM "movementnum" #define STANDARD_SCOREBLOCK "Standard scoreblock" #define INEDITABLE "ineditable" #define HIGHLIGHT "highlight" #define ERRORTEXT "error text" gchar *get_postfix (GList * g); //HIDDEN INSIDE GET_AFFIX macro static void output_score_to_buffer (DenemoProject * gui, gboolean all_movements, gchar * partname, gchar * instrumentation); static GtkTextTagTable *tagtable; /* inserts a navigation anchor into the lilypond textbuffer at curmark */ static void place_navigation_anchor (GtkTextMark * curmark, gpointer curobjnode, gint movement_count, gint measurenum, gint voice_count, gint objnum, DenemoTargetType type, gint mid_c_offset) { //GtkTextIter iter = *piter; //put in an ineditable anchor to mark the start of the object GtkTextIter iter; gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, curmark); GtkTextChildAnchor *objanc = gtk_text_buffer_create_child_anchor (Denemo.textbuffer, &iter); g_object_set_data (G_OBJECT (objanc), OBJECTNODE, curobjnode); //store objnode here g_object_set_data (G_OBJECT (objanc), MOVEMENTNUM, GINT_TO_POINTER (movement_count)); g_object_set_data (G_OBJECT (objanc), MEASURENUM, GINT_TO_POINTER (measurenum)); g_object_set_data (G_OBJECT (objanc), STAFFNUM, GINT_TO_POINTER (voice_count)); g_object_set_data (G_OBJECT (objanc), OBJECTNUM, GINT_TO_POINTER (objnum)); g_object_set_data (G_OBJECT (objanc), TARGETTYPE, GINT_TO_POINTER (type)); g_object_set_data (G_OBJECT (objanc), MIDCOFFSET, GINT_TO_POINTER (mid_c_offset)); //g_debug("place nav anchor marked anchor %p as type %d\n", objanc, type); GtkTextIter back; back = iter; (void) gtk_text_iter_backward_char (&back); gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, INEDITABLE, &back, &iter); #if 1 //0 makes anchors visible - but throws out locations gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, "system_invisible", &back, &iter); #endif } void highlight_lily_error () { if (Denemo.textbuffer == NULL) return; GtkTextIter enditer, iter; gtk_text_buffer_get_end_iter (Denemo.textbuffer, &enditer); gtk_text_buffer_get_start_iter (Denemo.textbuffer, &iter); gtk_text_buffer_remove_tag_by_name (Denemo.textbuffer, ERRORTEXT, &enditer, &iter); gint line, column; line = (intptr_t) g_object_get_data (G_OBJECT (Denemo.textbuffer), "error line"); column = (intptr_t) g_object_get_data (G_OBJECT (Denemo.textbuffer), "error column"); line--; if (line > 0) { #ifdef BUG_COLUMN_OFFSET_TOO_LARGE_FIXED gtk_text_buffer_get_iter_at_line_offset (Denemo.textbuffer, &iter, line, column); #else gtk_text_buffer_get_iter_at_line_offset (Denemo.textbuffer, &iter, line, 0); g_debug ("line %d column %d\n", line, column); g_debug ("line has %d chars\n", gtk_text_iter_get_chars_in_line (&iter)); while (column--) (void) gtk_text_iter_forward_char (&iter); //EEEK TAB is 8 spaces for lilypond find these!!!! #endif /* gtk_text_iter_set_line(&iter, line); */ /* gtk_text_iter_set_visible_line_offset(&iter, column); */ gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, ERRORTEXT, &enditer, &iter); } } /* set_lily_error() * set line, column as the current line and column in Denemo.textbuffer where an error has been found * in the LilyPond interpreter. line starts from 1, column starts from 0 * line=0 means no error */ void set_lily_error (gint line, gint column) { if (Denemo.textbuffer) { g_object_set_data (G_OBJECT (Denemo.textbuffer), "error line", (gpointer) (intptr_t) line); g_object_set_data (G_OBJECT (Denemo.textbuffer), "error column", (gpointer) (intptr_t) column); } } static void explain_temporary_scoreblock (void) { infodialog (_("This scorelayout is purely for continuous typesetting, and will change as you edit the score.\n" "To get a real score layout turn off continuous typesetting in the Print View and " "typeset using Part, Movement or Typeset (Default Layout) buttons.")); } static void popup_score_layout_options (void) { GtkWidget *menu = gtk_menu_new (); GtkWidget *item; GList *g; for (g = Denemo.project->standard_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = g->data; gchar *text = g_strdup_printf (_("Switch to Layout \"%s\""), sb->name); item = gtk_menu_item_new_with_label (text); g_free (text); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (select_standard_layout), sb); } for (g = Denemo.project->custom_scoreblocks; g; g = g->next) { DenemoScoreblock *sb = g->data; gchar *text = g_strdup_printf (_("Switch to Layout \"%s\""), sb->name); item = gtk_menu_item_new_with_label (text); g_free (text); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (select_custom_layout), sb); } if (Denemo.project->standard_scoreblocks == NULL) { item = gtk_menu_item_new_with_label (_("Create Standard Score Layout")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (select_standard_layout), NULL); } item = gtk_menu_item_new_with_label ("Customize Score Layout"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (make_scoreblock_editable), NULL); gtk_widget_show_all (menu); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); } void make_scoreblock_editable (void) { if (!gtk_widget_get_visible (Denemo.project->score_layout)) set_toggle ("ToggleScoreLayout", TRUE); create_custom_lilypond_scoreblock (); force_lily_refresh (Denemo.project); } /* insert a pair of anchors and a mark to denote a section. if str is non-null it is a target for saving edited versions of the section to, in this case the start anchor of the section is prepended to the list gui->anchors if name is non-null a button is attached to the start anchor. */ static GtkTextChildAnchor * insert_section (GString ** str, gchar * markname, gchar * name, GtkTextIter * iter, DenemoProject * gui) { GtkTextIter back; GtkTextChildAnchor *objanc = gtk_text_buffer_create_child_anchor (Denemo.textbuffer, iter); back = *iter; (void) gtk_text_iter_backward_char (&back); gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, INEDITABLE, &back, iter); if (name == NULL) gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, "system_invisible", &back, iter); gtk_text_buffer_insert (Denemo.textbuffer, iter, "\n", -1); //THE NEWLINE is needed to give something for the section to contain to which the attribute is then applied, but it causes problems as well... GtkTextChildAnchor *endanc = gtk_text_buffer_create_child_anchor (Denemo.textbuffer, iter); back = *iter; (void) gtk_text_iter_backward_char (&back); gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, INEDITABLE, &back, iter); gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, "system_invisible", &back, iter); g_object_set_data (G_OBJECT (objanc), "end", (gpointer) endanc); g_object_set_data (G_OBJECT (objanc), GSTRINGP, (gpointer) str); if (str) gui->anchors = g_list_prepend (gui->anchors, objanc); if (!Denemo.non_interactive && name) { if (!strcmp (markname, "standard scoreblock")) { GtkWidget *button = gtk_button_new (); gtk_button_set_label (GTK_BUTTON (button), _("Score Layout Options")); g_signal_connect (G_OBJECT (button), "button-press-event", G_CALLBACK (popup_score_layout_options), NULL); gtk_widget_show_all (button); gtk_text_view_add_child_at_anchor (GTK_TEXT_VIEW (Denemo.textview), button, objanc); } else if (!strcmp (markname, "temporary scoreblock")) { GtkWidget *button = gtk_button_new (); gtk_button_set_label (GTK_BUTTON (button), _("Temporary Score Layout")); g_signal_connect (G_OBJECT (button), "button-press-event", G_CALLBACK (explain_temporary_scoreblock), NULL); gtk_widget_show_all (button); gtk_text_view_add_child_at_anchor (GTK_TEXT_VIEW (Denemo.textview), button, objanc); } else { char *markup = g_markup_printf_escaped ("%% %s\n", name); //monospace label to get serifs GtkWidget *label = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (label), markup); gtk_text_view_add_child_at_anchor (GTK_TEXT_VIEW (Denemo.textview), label, objanc); gtk_widget_show_all (label); } } (void) gtk_text_iter_backward_char (iter); (void) gtk_text_iter_backward_char (iter); gtk_text_buffer_create_mark (Denemo.textbuffer, markname, iter, FALSE); return objanc; } #define FAKECHORD_SEP " |\t" /* | to separate chord symbols */ #define FIGURES_SEP "|" /* a separator for groups of figured bass figures on one note this could be a user preference thingy */ /** * Output the lilypond representation of the given keysignature * */ static void determinekey (gint number, gchar ** keyname) { switch (number) { case -7: *keyname = "ces"; break; case -6: *keyname = "ges"; break; case -5: *keyname = "des"; break; case -4: *keyname = "aes"; break; case -3: *keyname = "ees"; break; case -2: *keyname = "bes"; break; case -1: *keyname = "f"; break; case 0: *keyname = "c"; break; case 1: *keyname = "g"; break; case 2: *keyname = "d"; break; case 3: *keyname = "a"; break; case 4: *keyname = "e"; break; case 5: *keyname = "b"; break; case 6: *keyname = "fis"; break; case 7: *keyname = "cis"; break; case 8: *keyname = "gis"; break; case 9: *keyname = "dis"; break; case 10: *keyname = "ais"; break; default: *keyname = _("%{error. defaulting to%}c"); break; } } /** * Output the lilypond representataion of the given clef * */ static void determineclef (gint type, gchar ** clefname) { switch (type) { case DENEMO_TREBLE_CLEF: *clefname = "treble"; break; case DENEMO_BASS_CLEF: *clefname = "bass"; break; case DENEMO_ALTO_CLEF: *clefname = "alto"; break; case DENEMO_G_8_CLEF: // *clefname = "\"G_8\""; *clefname = "\"treble_8\""; break; case DENEMO_F_8_CLEF: *clefname = "\"bass_8\""; break; case DENEMO_TENOR_CLEF: *clefname = "tenor"; break; case DENEMO_SOPRANO_CLEF: *clefname = "soprano"; break; case DENEMO_FRENCH_CLEF: *clefname = "french"; break; case DENEMO_BARITONE_CLEF: *clefname = "baritone"; break; default: *clefname = _("%{error. defaulting to%}treble"); break; } /* I've found the quotes are necessary for ^ and _ clefs * to parse correctly */ } /** * Convert denemo duration to lilypond duration */ static gint internaltomuduration (gint internalduration) { if (internalduration < 0) return internalduration; return 1 << internalduration; } /** * append mudela duration information to FIGURES. * This could be optimized to remember the previous value and * avoid repetition - an initialization call would be needed to * set up initial values in that case */ static GString * append_duration (GString * figures, gint duration, gint numdots) { int i; g_string_sprintfa (figures, "%d", duration); for (i = 0; i < numdots; i++) figures = g_string_append (figures, "."); return figures; } static gchar * output_figured_bass_prefix (GString * figures, DenemoDirective * directive) { if ((directive->override & DENEMO_ALT_OVERRIDE) && directive->prefix) { g_string_append (figures, directive->prefix->str); return directive->prefix->str; } return NULL; } /** * add figures to *pfigures for *pchord */ static void output_figured_bass (GString * figures, chord * pchord) { static gboolean continuation = FALSE; static GString *last_figure; // for continuations gint duration = internaltomuduration (pchord->baseduration); gint numdots = pchord->numdots; GString *fig_str; /*working copy of figures string stored in pchord */ char *str; /* pointer into the figure string fig_str */ gint num_groups = 1; /* number of groups of figures */ gchar *duration_string = NULL; //whole measure rests etc gchar * prefix = NULL; //First any override (e.g. to tweak position of figures) //This is stored in note-directives with DENEMO_ALT_OVERRIDE set. // This does mean that figures on rests can only be tweaked with a postfix on the previous note. DenemoDirective *directive; if (pchord->notes && (note *) (pchord->notes->data) && ((note *) (pchord->notes->data))->directives && (directive = ((note *) (pchord->notes->data))->directives->data)) { prefix = output_figured_bass_prefix (figures, directive); //Outputs first directive's prefix field } if (duration < 0) { gchar *lily = get_postfix (pchord->directives); if (lily) { duration_string = g_strrstr (lily, "R1*"); if (!duration_string) { g_warning ("duration is special but cannot find R1* - output in figured bass"); duration_string = g_strdup ("R1*4/4"); } } else { g_warning ("duration is special but no directives to account for it - output in figured bass"); duration_string = g_strdup ("R1*4/4"); } duration_string++; //the duration, after the R } #define APPEND_DUR(a, b, c) duration<0?g_string_append(a, duration_string):append_duration(a,b,c) if (!last_figure) last_figure = g_string_new (""); if (pchord->figure == NULL || (((GString *) ((chord *) pchord->figure))->str) == NULL) fig_str = g_string_new ("_"); /* the no-figure figure */ else fig_str = g_string_new (((GString *) ((chord *) pchord->figure))->str); gchar *figstr = fig_str->str; //handle direct insert into the figured bass staff if (*figstr == '$') { figstr++; str = strchr (figstr, '$'); if (str) { *str = 0; g_string_append (figures, figstr); *str = '$'; figstr = str + 1; } } if (*figstr == '~') { if (!continuation) { figures = g_string_append (figures, "\\bassFigureExtendersOn "); continuation = TRUE; } if (last_figure->len) { figures = g_string_append (figures, "<"); figures = g_string_append (figures, last_figure->str); } } else { if (continuation) figures = g_string_append (figures, "\\bassFigureExtendersOff <"); else figures = g_string_append (figures, "<"); } /* multiple figures are separated by a FIGURES_SEP char, output these at subdivisions of the duration */ str = strchr (figstr, *(char *) FIGURES_SEP); if (str != NULL) { /* we have more than one group of figures to be output for one bass note. Count the number of groups */ num_groups = 2; /* one on either side of the FIGURES_SEP found */ while ((str = strchr (++str, *(char *) FIGURES_SEP)) != NULL) num_groups++; } switch (num_groups) { default: case 1: if (*figstr != '~') { if (continuation) continuation = FALSE; figures = g_string_append (figures, figstr); g_string_assign (last_figure, figstr); } figures = g_string_append (figures, ">"); APPEND_DUR (figures, duration, numdots); break; /* Each group of figures is assigned a duration to achieve a normal looking output */ case 2: { gint first_duration, second_duration; if (numdots) { /* divide unequally */ first_duration = duration; second_duration = duration * 2; } else { first_duration = second_duration = duration * 2; } str = strtok (figstr, FIGURES_SEP); figures = g_string_append (figures, str); figures = g_string_append (figures, ">"); APPEND_DUR (figures, first_duration, 0); if (pchord->notes && (note *) (pchord->notes->data) && ((note *) (pchord->notes->data))->directives && ((note *) (pchord->notes->data))->directives->next && (directive = ((note *) (pchord->notes->data))->directives->next->data)) { prefix = output_figured_bass_prefix (figures, directive); //output second directive's prefix } else if (prefix) g_string_append (figures, directive->prefix->str); figures = g_string_append (figures, "<"); str = strtok (NULL, FIGURES_SEP); figures = g_string_append (figures, str); figures = g_string_append (figures, ">"); APPEND_DUR (figures, second_duration, 0); } break; case 3: { gint first_duration, second_duration, third_duration; if (numdots == 1) { /* divide equally */ first_duration = second_duration = third_duration = duration * 2; } else if (numdots == 2) { first_duration = second_duration = duration * 2; third_duration = duration * 4; } /* no more dots please! */ else { /* divide unequally */ first_duration = duration * 2; second_duration = third_duration = duration * 4; } str = strtok (figstr, FIGURES_SEP); figures = g_string_append (figures, str); figures = g_string_append (figures, ">"); APPEND_DUR (figures, first_duration, 0); if (pchord->notes && (note *) (pchord->notes->data) && ((note *) (pchord->notes->data))->directives && ((note *) (pchord->notes->data))->directives->next && (directive = ((note *) (pchord->notes->data))->directives->next->data)) { prefix = output_figured_bass_prefix (figures, directive); //outputs third directive's prefix } else if (prefix) g_string_append (figures, directive->prefix->str); figures = g_string_append (figures, "<"); str = strtok (NULL, FIGURES_SEP); figures = g_string_append (figures, str); figures = g_string_append (figures, ">"); APPEND_DUR (figures, second_duration, 0); if (pchord->notes && (note *) (pchord->notes->data) && ((note *) (pchord->notes->data))->directives && ((note *) (pchord->notes->data))->directives->next && ((note *) (pchord->notes->data))->directives->next->next && (directive = ((note *) (pchord->notes->data))->directives->next->next->data)) { prefix = output_figured_bass_prefix (figures, directive);//outputs third directive's prefix } else if (prefix) g_string_append (figures, directive->prefix->str); str = strtok (NULL, FIGURES_SEP); figures = g_string_append (figures, "<"); figures = g_string_append (figures, str); figures = g_string_append (figures, ">"); APPEND_DUR (figures, third_duration, 0); } break; case 4: { gint first_duration, second_duration, third_duration, fourth_duration; if (numdots == 1) { /* divide unequally */ first_duration = second_duration = duration * 2; third_duration = fourth_duration = duration * 4; } else if (numdots == 2) { first_duration = second_duration = duration * 2; third_duration = duration * 4; fourth_duration = duration * 8; } /* no more dots please! */ else { /* divide equally */ first_duration = second_duration = third_duration = fourth_duration = duration * 4; } str = strtok (figstr, FIGURES_SEP); figures = g_string_append (figures, str); figures = g_string_append (figures, ">"); APPEND_DUR (figures, first_duration, 0); if (pchord->notes && (note *) (pchord->notes->data) && ((note *) (pchord->notes->data))->directives && ((note *) (pchord->notes->data))->directives->next && (directive = ((note *) (pchord->notes->data))->directives->next->data)) { prefix = output_figured_bass_prefix (figures, directive); //output second directive's prefix field } else if (prefix) g_string_append (figures, directive->prefix->str); figures = g_string_append (figures, "<"); str = strtok (NULL, FIGURES_SEP); figures = g_string_append (figures, str); figures = g_string_append (figures, ">"); APPEND_DUR (figures, second_duration, 0); if (pchord->notes && (note *) (pchord->notes->data) && ((note *) (pchord->notes->data))->directives && ((note *) (pchord->notes->data))->directives->next && ((note *) (pchord->notes->data))->directives->next->next && (directive = ((note *) (pchord->notes->data))->directives->next->next->data)) { prefix = output_figured_bass_prefix (figures, directive);//output third directive's prefix field } else if (prefix) g_string_append (figures, directive->prefix->str); str = strtok (NULL, FIGURES_SEP); figures = g_string_append (figures, "<"); figures = g_string_append (figures, str); figures = g_string_append (figures, ">"); APPEND_DUR (figures, third_duration, 0); if (pchord->notes && (note *) (pchord->notes->data) && ((note *) (pchord->notes->data))->directives && ((note *) (pchord->notes->data))->directives->next && ((note *) (pchord->notes->data))->directives->next->next && (directive = ((note *) (pchord->notes->data))->directives->next->next->data)) { prefix = output_figured_bass_prefix (figures, directive); //output third (we haven't bothered to do four) directive's prefix field } else if (prefix) g_string_append (figures, directive->prefix->str); str = strtok (NULL, FIGURES_SEP); figures = g_string_append (figures, "<"); figures = g_string_append (figures, str); figures = g_string_append (figures, ">"); APPEND_DUR (figures, fourth_duration, 0); } break; } // if(duration_string) g_free(--duration_string); } static gchar * parse_extension (gchar * input) { while (*input && *input != ':') input++; if (*input == ':') return input++; return NULL; } static gint num_fakechords (gchar * thestr) { gint num = 1; gchar *str = g_strdup (thestr); strtok (str, FAKECHORD_SEP); while (strtok (NULL, FAKECHORD_SEP)) num++; g_free (str); return num; } /** * add figures to *pfigures for *pchord */ static void output_fakechord (GString * fakechord, chord * pchord) { gint duration = internaltomuduration (pchord->baseduration); gint numdots = pchord->numdots; GString *fig_str; /*working copy of figures string */ char *str; /* pointer into the figure string fig_str */ gint num_groups = 1; /* number of groups of figures */ gchar *extension; gchar *duration_string = NULL; //whole measure rests etc fakechord = g_string_append (fakechord, " "); if (duration < 0) { gchar *lily = get_postfix (pchord->directives); if (lily) { duration_string = g_strrstr (lily, "R1*"); if (!duration_string) { g_warning ("duration is special but cannot find R1* - output in fakechord"); duration_string = g_strdup ("R1*4/4"); } } else { g_warning ("duration is special but no directives to account for it - output in fakechord"); duration_string = g_strdup ("R1*4/4"); } duration_string++; //the duration, after the R //g_string_append_printf(fakechord, "%s%s", "s", duration_string); // return; } if (pchord->fakechord == NULL || (((GString *) ((chord *) pchord->fakechord))->len) == 0) fig_str = g_string_new ("s"); /* the no-fakechord figure */ else { fig_str = g_string_new (((GString *) ((chord *) pchord->fakechord))->str); if (*fig_str->str >= 'A' && *fig_str->str <= 'G') *fig_str->str = *fig_str->str - 'A' + 'a'; //downcase only first Chord root name, allows inserted LilyPond syntax } num_groups = num_fakechords (fig_str->str); //g_print("for %s num groups %d\n",fig_str->str, num_groups); switch (num_groups) { default: case 1: { gchar *c; extension = parse_extension (fig_str->str); for (c = fig_str->str; *c && *c != ':'; c++) g_string_append_c (fakechord, *c); APPEND_DUR (fakechord, duration, numdots); if (extension) g_string_append (fakechord, extension); break; } /* Each group of fakechord is assigned a duration to achieve a normal looking output */ case 2: { gint first_duration, second_duration; if (numdots) { /* divide unequally */ first_duration = duration; second_duration = duration * 2; } else { first_duration = second_duration = duration * 2; } gchar *c; gchar *thestr = g_strdup (fig_str->str); str = strtok (thestr, FAKECHORD_SEP); g_print ("str %s ", str); extension = parse_extension (str); for (c = str; *c && *c != ':'; c++) g_string_append_c (fakechord, *c); APPEND_DUR (fakechord, first_duration, 0); if (extension) g_string_append (fakechord, extension); fakechord = g_string_append (fakechord, " "); str = strtok (NULL, FAKECHORD_SEP); g_print ("str2 %s ", str); extension = parse_extension (str); for (c = str; *c && *c != ':'; c++) g_string_append_c (fakechord, *c); APPEND_DUR (fakechord, second_duration, 0); if (extension) g_string_append (fakechord, extension); fakechord = g_string_append (fakechord, " "); g_free (thestr); } break; case 3: { gint first_duration, second_duration, third_duration; if (numdots == 1) { /* divide equally */ first_duration = second_duration = third_duration = duration * 2; } else if (numdots == 2) { first_duration = second_duration = duration * 2; third_duration = duration * 4; } /* no more dots please! */ else { /* divide unequally */ first_duration = duration * 2; second_duration = third_duration = duration * 4; } gchar *c; gchar *thestr = g_strdup (fig_str->str); str = strtok (thestr, FAKECHORD_SEP); g_print ("str %s ", str); extension = parse_extension (str); for (c = str; *c && *c != ':'; c++) g_string_append_c (fakechord, *c); APPEND_DUR (fakechord, first_duration, 0); if (extension) g_string_append (fakechord, extension); fakechord = g_string_append (fakechord, " "); str = strtok (NULL, FAKECHORD_SEP); g_print ("str2 %s ", str); extension = parse_extension (str); for (c = str; *c && *c != ':'; c++) g_string_append_c (fakechord, *c); APPEND_DUR (fakechord, second_duration, 0); if (extension) g_string_append (fakechord, extension); fakechord = g_string_append (fakechord, " "); str = strtok (NULL, FAKECHORD_SEP); g_print ("str2 %s ", str); extension = parse_extension (str); for (c = str; *c && *c != ':'; c++) g_string_append_c (fakechord, *c); APPEND_DUR (fakechord, third_duration, 0); if (extension) g_string_append (fakechord, extension); fakechord = g_string_append (fakechord, " "); g_free (thestr); } break; case 4: { gint first_duration, second_duration; if (numdots) { /* divide unequally */ first_duration = duration * 2; second_duration = duration * 4; } else { first_duration = second_duration = duration * 4; } gchar *c; gchar *thestr = g_strdup (fig_str->str); str = strtok (thestr, FAKECHORD_SEP); g_print ("str %s duration %d", str, first_duration); extension = parse_extension (str); for (c = str; *c && *c != ':'; c++) g_string_append_c (fakechord, *c); APPEND_DUR (fakechord, first_duration, 0); if (extension) g_string_append (fakechord, extension); fakechord = g_string_append (fakechord, " "); str = strtok (NULL, FAKECHORD_SEP); g_print ("str2 %s ", str); extension = parse_extension (str); for (c = str; *c && *c != ':'; c++) g_string_append_c (fakechord, *c); APPEND_DUR (fakechord, second_duration, 0); if (extension) g_string_append (fakechord, extension); fakechord = g_string_append (fakechord, " "); str = strtok (NULL, FAKECHORD_SEP); g_print ("str3 %s ", str); extension = parse_extension (str); for (c = str; *c && *c != ':'; c++) g_string_append_c (fakechord, *c); APPEND_DUR (fakechord, second_duration, 0); if (extension) g_string_append (fakechord, extension); fakechord = g_string_append (fakechord, " "); str = strtok (NULL, FAKECHORD_SEP); g_print ("str4 %s ", str); extension = parse_extension (str); for (c = str; *c && *c != ':'; c++) g_string_append_c (fakechord, *c); APPEND_DUR (fakechord, second_duration, 0); if (extension) g_string_append (fakechord, extension); g_free (thestr); } break; } } #undef APPEND_DUR /* * insert_editable() * Insert pair of invisble anchors and editable text between, adding the start anchor to the list in gui->anchors * if directive is NULL or empty string provide a space for editing. * ORIGINAL: string containing text to initialize with: the caller owns this string * DIRECTIVE: pointer to a target GString where changes should be stored, * or NULL if editable text is to be allowed here (an editable space is inserted in this case) * ITER: the current iter in Denemo.textbuffer * GUI: the gui with the textbuffer * */ static void insert_editable (GString ** pdirective, gchar * original, GtkTextIter * iter, DenemoProject * gui, GString * lily_for_obj, DenemoTargetType type, gint movement_count, gint measurenum, gint voice_count, gint objnum, gint directive_index, gint midcoffset) { gint directivenum = directive_index + 1; GtkTextChildAnchor *lilyanc = gtk_text_buffer_create_child_anchor (Denemo.textbuffer, iter); GtkTextIter back; back = *iter; (void) gtk_text_iter_backward_char (&back); gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, INEDITABLE, &back, iter); gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, "system_invisible", &back, iter); g_object_set_data (G_OBJECT (lilyanc), GSTRINGP, (gpointer) pdirective); g_object_set_data (G_OBJECT (lilyanc), ORIGINAL, original); g_object_set_data (G_OBJECT (lilyanc), MOVEMENTNUM, GINT_TO_POINTER (movement_count)); g_object_set_data (G_OBJECT (lilyanc), MEASURENUM, GINT_TO_POINTER (measurenum)); g_object_set_data (G_OBJECT (lilyanc), STAFFNUM, GINT_TO_POINTER (voice_count)); g_object_set_data (G_OBJECT (lilyanc), OBJECTNUM, GINT_TO_POINTER (objnum)); g_object_set_data (G_OBJECT (lilyanc), TARGETTYPE, GINT_TO_POINTER (type)); if (directivenum) g_object_set_data (G_OBJECT (lilyanc), DIRECTIVENUM, GINT_TO_POINTER (directivenum)); //g_debug("insert editable marked target anchor %p directivenum %d type %d\n", lilyanc, directivenum, type); if (midcoffset) g_object_set_data (G_OBJECT (lilyanc), MIDCOFFSET, GINT_TO_POINTER (midcoffset)); if (type) g_object_set_data (G_OBJECT (lilyanc), TARGETTYPE, GINT_TO_POINTER (type)); //g_debug("marked anchor %p as %d %d %d %d type %d\n", lilyanc, movement_count, measurenum, voice_count, objnum, type); gui->anchors = g_list_prepend (gui->anchors, lilyanc); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, iter, g_strdup (original), -1, "bold", NULL); if (lily_for_obj) g_string_append (lily_for_obj, original); GtkTextChildAnchor *endanc = gtk_text_buffer_create_child_anchor (Denemo.textbuffer, iter); back = *iter; (void) gtk_text_iter_backward_char (&back); gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, INEDITABLE, &back, iter); gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, "system_invisible", &back, iter); g_object_set_data (G_OBJECT (lilyanc), "end", (gpointer) endanc); if ((*pdirective) == NULL || (*pdirective)->len == 0) gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, iter, " ", -1, HIGHLIGHT, NULL); } static gint brace_count (gchar * str) { gint ret; for (ret = 0; *str; str++) { if (*str == '{') ret++; if (*str == '}') ret--; } return ret; } // get_prefix, postfix returns the relevant fields from the directive list assembled with those marked as overriding lilypond in front and other at end; //DENEMO_OVERRIDE_HIDDEN are omitted // ones with any of the bits in SKIP set are omitted #define GET_AFFIX_SKIPPING(field)\ static gchar *get_skip_##field(GList *g, gint skip) {\ if(g==NULL)\ return g_strdup("");\ GString *ret = g_string_new("");\ for(;g;g=g->next) {\ DenemoDirective *d = g->data;\ if(d->override&skip)\ continue;\ if (wrong_layout (d, Denemo.project->layout_id))\ continue;\ if(!((d->override & DENEMO_OVERRIDE_HIDDEN))){\ if(d->field && d->field->len) {\ if(d->override & DENEMO_OVERRIDE_LILYPOND)\ g_string_prepend(ret, d->field->str);\ else\ g_string_append(ret, d->field->str);\ }\ }\ }\ return g_string_free(ret, FALSE);\ } // get_prefix, postfix returns the relevant fields from the directive list assembled with those marked as overriding lilypond in front and other at end; //DENEMO_OVERRIDE_HIDDEN are omitted // ones with all of the bits in INCLUDE set are taken otherwise they are omitted #define GET_AFFIX_INCLUDING(field)\ static gchar *get_include_##field(GList *g, gint include) {\ if(g==NULL)\ return g_strdup("");\ GString *ret = g_string_new("");\ for(;g;g=g->next) {\ DenemoDirective *d = g->data;\ if((d->override&include)!=include)\ continue;\ if (wrong_layout (d, Denemo.project->layout_id))\ continue;\ if(!((d->override & DENEMO_OVERRIDE_HIDDEN))){\ if(d->field && d->field->len) {\ if(d->override & DENEMO_OVERRIDE_LILYPOND)\ g_string_prepend(ret, d->field->str);\ else\ g_string_append(ret, d->field->str);\ }\ }\ }\ return g_string_free(ret, FALSE);\ } GET_AFFIX_INCLUDING(prefix); //defines get_include_prefix() GET_AFFIX_INCLUDING(postfix);//defines get_include_postfix() GET_AFFIX_SKIPPING(prefix); //defines get_skip_prefix() GET_AFFIX_SKIPPING(postfix);//defines get_skip_postfix() #define GET_AFFIX(field)\ gchar *get_##field(GList *g) {\ return get_skip_##field(g, DENEMO_OVERRIDE_AFFIX);\ } GET_AFFIX (prefix); //defines get_prefix() GET_AFFIX (postfix);//defines get_postfix() /* insert editable prefix string from passed directives, updating duration and open brace count omit or include those with AFFIX override set. Skip any directive with HIDDEN attribute set or conditionally out*/ //NAVANC #define DIRECTIVES_INSERT_EDITABLE_AFFIX(field) static void \ directives_insert_##field##_editable (GList *directives, gint *popen_braces, gint *pprevduration, GtkTextIter *iter, gboolean override, GString *lily_for_obj,\ DenemoTargetType type, gint movement_count, gint measurenum, gint voice_count, gint objnum, gint midcoffset, guint sbid) {\ DenemoProject *gui = Denemo.project;\ GList *g = directives; gint num;\ for(num=0;g;g=g->next, num++) {\ DenemoDirective *directive = (DenemoDirective *)g->data;\ if(override == ((directive->override&DENEMO_OVERRIDE_AFFIX)==0))\ continue;\ if(directive->override&DENEMO_OVERRIDE_HIDDEN)\ continue;\ if (wrong_layout (directive, sbid))\ continue;\ if(directive->field && directive->field->len) {\ if(pprevduration) *pprevduration = -1; \ if(popen_braces) *popen_braces += brace_count(directive->field->str); \ insert_editable(&directive->field, directive->field->str, iter, gui, lily_for_obj\ , type, movement_count, measurenum, voice_count, objnum, num, midcoffset);\ }\ }\ } DIRECTIVES_INSERT_EDITABLE_AFFIX (prefix); DIRECTIVES_INSERT_EDITABLE_AFFIX (postfix); static void directives_insert_affix_postfix_editable (GList * directives, gint * popen_braces, gint * pprevduration, GtkTextIter * iter, GString * lily_for_obj, DenemoTargetType type, gint movement_count, gint measurenum, gint voice_count, gint objnum, gint midcoffset, guint sbid) { DenemoProject *gui = Denemo.project; GList *g = directives;; gint num; for (num = 0; g; g = g->next, num++) { DenemoDirective *directive = (DenemoDirective *) g->data; if (!(directive->override & DENEMO_OVERRIDE_AFFIX)) continue; if (directive->override & DENEMO_OVERRIDE_HIDDEN) continue; if (wrong_layout (directive, sbid)) continue; if (directive->postfix && directive->postfix->len) { if (pprevduration) *pprevduration = -1; if (popen_braces) *popen_braces += brace_count (directive->postfix->str); insert_editable (&directive->postfix, directive->postfix->str, iter, gui, lily_for_obj, type, movement_count, measurenum, voice_count, objnum, num, midcoffset); } } } /* returns if there is a directive overriding the normal LilyPond output */ static gint get_lily_override (GList * g) { return get_override (g) & DENEMO_OVERRIDE_LILYPOND; } /** * generate the lilypond for the DenemoObject curobj * the state of the prevailing duration, clef keysignature are updated and returned. * returns the excess of open braces "{" created by this object. */ static gint generate_lily_for_obj (DenemoProject * gui, GtkTextIter * iter, DenemoObject * curobj, gint * pprevduration, gint * pprevnumdots, gchar ** pclefname, gchar ** pkeyname, gint * pcur_stime1, gint * pcur_stime2, gint * pgrace_status, GString * figures, GString * fakechords, GtkTextMark * curmark, gpointer curobjnode, gint movement_count, gint measurenum, gint voice_count, gint objnum, guint sbid) { GString *lily_for_obj = g_string_new (""); GString *ret = g_string_new (""); //no longer returned, instead put into *music #define outputret gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, iter, ret->str, -1, INEDITABLE, NULL), \ g_string_append(lily_for_obj, ret->str);\ open_braces += brace_count(ret->str), \ g_string_assign(ret, "") #define output(astring) (gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, iter, astring, -1, INEDITABLE, NULL));\ g_string_append(lily_for_obj, astring); gint prevduration = *pprevduration; gint prevnumdots = *pprevnumdots; chord *pchord; gchar *clefname = *pclefname; gchar *keyname = *pkeyname; gint cur_stime1 = *pcur_stime1; gint cur_stime2 = *pcur_stime2; gint j, k; gint duration, numdots; gboolean is_normalnotehead = TRUE; gboolean is_chordmode = FALSE; gint octave, enshift; gint noteheadtype; gint mid_c_offset; gint open_braces = 0; /* keep track of excess open braces "{" so as to ensure they are closed */ GString *dynamic_string = NULL; gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, iter, " ", -1, INEDITABLE, HIGHLIGHT, NULL); //A gray blank between objects g_string_append (lily_for_obj, " "); #define NAVANC(type, offset) place_navigation_anchor(curmark, (gpointer)curobjnode, movement_count, measurenum, voice_count, objnum, type, offset);\ gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, iter, curmark); switch (curobj->type) { case CHORD: { gint lily_override; pchord = (chord *) curobj->object; gchar *chord_prefix = get_prefix (pchord->directives); duration = internaltomuduration (pchord->baseduration); numdots = pchord->numdots; is_chordmode = FALSE; lily_override = get_lily_override (pchord->directives); if (!lily_override) if ((!*pgrace_status) && pchord->is_grace) { *pgrace_status = TRUE; if (pchord->is_grace & GRACED_NOTE) g_string_append_printf (ret, "\\grace {"); else g_string_append_printf (ret, "\\acciaccatura {"); } /* prefix is before duration unless AFFIX override is set */ directives_insert_prefix_editable (pchord->directives, &open_braces, &prevduration, iter, !lily_override, lily_for_obj, TARGET_CHORD, movement_count, measurenum, voice_count, objnum, 0, sbid); if (!lily_override) { //all LilyPond is output for this chord if (!pchord->notes) { /* A rest */ if (!curobj->isinvisible) { g_string_append_printf (ret, "r"); /* Duplicated code follows. I ought to fix that */ NAVANC (TARGET_CHORD, 0); outputret; directives_insert_prefix_editable (pchord->directives, &open_braces, &prevduration, iter, FALSE, lily_for_obj, TARGET_CHORD, movement_count, measurenum, voice_count, objnum, 0, sbid); if (duration != prevduration || numdots != prevnumdots || duration < 0) { /* only in this case do we explicitly note the duration */ if (duration > 0) g_string_append_printf (ret, "%d", duration); prevduration = duration; prevnumdots = numdots; for (j = 0; j < numdots; j++) g_string_append_printf (ret, "."); } if (pchord->crescendo_begin_p) { NAVANC (TARGET_CRESC, 0); g_string_append_printf (ret, " \\cr"); outputret; } if (pchord->diminuendo_begin_p) { NAVANC (TARGET_DIM, 0); g_string_append_printf (ret, " \\decr"); outputret; } if (pchord->crescendo_end_p) g_string_append_printf (ret, " \\!"); if (pchord->diminuendo_end_p) g_string_append_printf (ret, " \\!"); } else { /* non printing rest */ g_string_append_printf (ret, "s"); NAVANC (TARGET_CHORD, 0); outputret; directives_insert_prefix_editable (pchord->directives, &open_braces, &prevduration, iter, FALSE, lily_for_obj, TARGET_CHORD, movement_count, measurenum, voice_count, objnum, 0, sbid); if (duration > 0) g_string_append_printf (ret, "%d", duration); prevduration = -1; prevnumdots = -1; for (j = 0; j < numdots; j++) g_string_append_printf (ret, "."); } outputret; directives_insert_postfix_editable (pchord->directives, &open_braces, &prevduration, iter, FALSE, lily_for_obj, TARGET_CHORD, movement_count, measurenum, voice_count, objnum, 0, sbid); } else /* there are notes */ { if (pchord->notes->next || pchord->chordize) { //multinote chord is_chordmode = TRUE; g_string_append_printf (ret, "<"); } GList *notenode; outputret; for (notenode = pchord->notes; notenode; notenode = notenode->next) { note *curnote = (note *) notenode->data; noteheadtype = curnote->noteheadtype; //As with chord-prefix, this is perhaps not a useful position, but until some other use is found for this field it is here... GList *g = curnote->directives; gint num = 0; for (; g; g = g->next, num++) { DenemoDirective *directive = (DenemoDirective *) g->data; if (directive->prefix && (!(directive->override & DENEMO_ALT_OVERRIDE)) && !wrong_layout (directive, sbid)) { prevduration = -1; insert_editable (&directive->prefix, directive->prefix->len ? directive->prefix->str : " ", iter, gui, lily_for_obj, TARGET_NOTE, movement_count, measurenum, voice_count, objnum, num, curnote->mid_c_offset); } } if (!get_lily_override (curnote->directives)) { //not skip all LilyPond output for this note switch (noteheadtype) { case DENEMO_NORMAL_NOTEHEAD: if (!is_normalnotehead) { // g_string_append_printf (ret, "\n" TAB "\\revert NoteHead #'style "); is_normalnotehead = !is_normalnotehead; } break; case DENEMO_CROSS_NOTEHEAD: g_string_append_printf (ret, "\n" TAB "\\once \\override NoteHead #'style = #'cross "); is_normalnotehead = FALSE; break; case DENEMO_HARMONIC_NOTEHEAD: g_string_append_printf (ret, "\n" TAB "\\once \\override NoteHead #'style = #'harmonic "); is_normalnotehead = FALSE; break; case DENEMO_DIAMOND_NOTEHEAD: g_string_append_printf (ret, "\n" TAB "\\once \\override Voice.NoteHead #'style = #'diamond "); is_normalnotehead = FALSE; break; default: g_string_append_printf (ret, "\n" TAB "\\revert Voice.NoteHead #'style "); break; } mid_c_offset = curnote->mid_c_offset; g_string_append_printf (ret, "%c", mid_c_offsettoname (mid_c_offset)); enshift = curnote->enshift; if (enshift < 0) for (k = enshift; k; k++) g_string_append_printf (ret, "es"); else for (k = enshift; k; k--) g_string_append_printf (ret, "is"); octave = mid_c_offsettooctave (mid_c_offset); if (octave < 0) for (; octave; octave++) g_string_append_printf (ret, ","); else for (; octave; octave--) g_string_append_printf (ret, "\'"); NAVANC (TARGET_NOTE, mid_c_offset); //we target the note outputret; g = curnote->directives; if (!g && notenode->next) output (" "); for (num = 0; g; g = g->next, num++) { DenemoDirective *directive = (DenemoDirective *) g->data; if (directive->postfix && !(directive->override & DENEMO_OVERRIDE_HIDDEN) && (!(directive->override & DENEMO_ALT_OVERRIDE)) && !wrong_layout (directive, sbid)) { insert_editable (&directive->postfix, directive->postfix->len ? directive->postfix->str : " ", iter, gui, lily_for_obj, TARGET_NOTE, movement_count, measurenum, voice_count, objnum, num, curnote->mid_c_offset); prevduration = -1; } else if (notenode->next) output (" "); } //for directives } /* End of LilyPond output for note, skipped if override set ie !get_lily_override (curnote->directives) */ } /* End notes in chord loop */ if (pchord->notes->next || pchord->chordize) //multi-note chord g_string_append_printf (ret, ">"); if (duration != prevduration || numdots != prevnumdots || duration < 0) { /* only in this case do we explicitly note the duration */ outputret; directives_insert_prefix_editable (pchord->directives, &open_braces, &prevduration, iter, FALSE, lily_for_obj, TARGET_CHORD, movement_count, measurenum, voice_count, objnum, 0, sbid); if (duration > 0) g_string_append_printf (ret, "%d", duration); prevduration = duration; prevnumdots = numdots; for (j = 0; j < numdots; j++) g_string_append_printf (ret, "."); outputret; } else { outputret; directives_insert_prefix_editable (pchord->directives, &open_braces, &prevduration, iter, FALSE, lily_for_obj, TARGET_CHORD, movement_count, measurenum, voice_count, objnum, 0, sbid); outputret; } directives_insert_postfix_editable (pchord->directives, &open_braces, &prevduration, iter, FALSE, lily_for_obj, TARGET_CHORD, movement_count, measurenum, voice_count, objnum, 0, sbid); //!!! dynamics like \cr have their own positional info in LilyPond - how to tell Denemo???? if (pchord->dynamics && (pchord->notes->next == NULL)) { dynamic_string = (GString *) pchord->dynamics->data; if (is_chordmode) g_string_append_printf (ret, "\\%s", dynamic_string->str); else g_string_append_printf (ret, "\\%s ", dynamic_string->str); } //!! dynamics like \cr have their own positional info in LilyPond - how to tell Denemo???? //We have to output the cresc/dim begin and the slur begin and tie with a NAVANC(type, 0) before each one. if (pchord->crescendo_begin_p) { NAVANC (TARGET_CRESC, 0); g_string_append_printf (ret, " \\cr"); outputret; } if (pchord->diminuendo_begin_p) { NAVANC (TARGET_DIM, 0); g_string_append_printf (ret, " \\decr"); outputret; } if (pchord->is_tied) { NAVANC (TARGET_TIE, 0); g_string_append_printf (ret, "~ "); outputret; } if (pchord->slur_begin_p) { NAVANC (TARGET_SLUR, 0); g_string_append_printf (ret, "("); outputret; } if (pchord->crescendo_end_p) g_string_append_printf (ret, " \\!"); if (pchord->diminuendo_end_p) g_string_append_printf (ret, " \\!"); if (pchord->slur_end_p) g_string_append_printf (ret, ")"); outputret; } /* End of else chord with note(s) */ //now output the postfix field of directives that have AFFIX set, which are not emitted directives_insert_affix_postfix_editable (pchord->directives, &open_braces, &prevduration, iter, lily_for_obj, TARGET_CHORD, movement_count, measurenum, voice_count, objnum, 0, sbid); } /* End of outputting LilyPond for this chord because LILYPOND_OVERRIDE not set in a chord directive, ie !lily_override */ else { GList *g = pchord->directives; gint num; for (num = 0; g; g = g->next, num++) { DenemoDirective *directive = (DenemoDirective *) g->data; if (directive->postfix && directive->postfix->len && (!(directive->override & DENEMO_OVERRIDE_HIDDEN)) && !wrong_layout (directive, sbid)) { prevduration = -1; open_braces += brace_count (directive->postfix->str); insert_editable (&directive->postfix, directive->postfix->str, iter, gui, lily_for_obj, TARGET_CHORD, movement_count, measurenum, voice_count, objnum, num, 0); } } } if (!lily_override) if ((pchord->is_grace & ENDGRACE) && *pgrace_status) { *pgrace_status = FALSE, g_string_append_printf (ret, "} "); } g_free (chord_prefix); } //end of case CHORD break; case CLEF: { // no NAVANC ??? but one for keysig gboolean override = FALSE; gchar *clef_string = ""; gchar *clef_prestring = ""; GList *directives = ((clef *) curobj->object)->directives; if (directives) { override = get_lily_override (directives); clef_string = get_postfix (directives); clef_prestring = get_prefix (directives); } if (override) g_string_append_printf (ret, "%s", clef_string); else { if (!curobj->isinvisible) { determineclef (((clef *) curobj->object)->type, &clefname); g_string_append_printf (ret, "%s\\clef %s%s", clef_prestring, clefname, clef_string); } } } break; case KEYSIG: { gboolean override = FALSE; gchar *keysig_string = ""; gchar *keysig_prestring = ""; GList *directives = ((keysig *) curobj->object)->directives; if (directives) { override = get_lily_override (directives); keysig_string = get_postfix (directives); keysig_prestring = get_prefix (directives); } NAVANC (0, 0); //this could indicate keysig type, although that is clear from the object at the cursor. if (override) g_string_append_printf (ret, "%s", keysig_string); else { determinekey (((keysig *) curobj->object)->isminor ? ((keysig *) curobj->object)->number + 3 : ((keysig *) curobj->object)->number, &keyname); g_string_append_printf (ret, "%s\\key %s", keysig_prestring, keyname); if (((keysig *) curobj->object)->isminor) g_string_append_printf (ret, " \\minor%s", keysig_string); else g_string_append_printf (ret, " \\major%s", keysig_string); } } break; case TIMESIG: { gboolean override = FALSE; gchar *timesig_string = ""; gchar *timesig_prestring = ""; GList *directives = ((timesig *) curobj->object)->directives; if (directives) { override = get_lily_override (directives); timesig_string = get_postfix (directives); timesig_prestring = get_prefix (directives); } if (override) g_string_append_printf (ret, "%s", timesig_string); else g_string_append_printf (ret, "%s\\time %d/%d%s ", timesig_prestring, ((timesig *) curobj->object)->time1, ((timesig *) curobj->object)->time2, timesig_string); } cur_stime1 = ((timesig *) curobj->object)->time1; cur_stime2 = ((timesig *) curobj->object)->time2; break; case TUPOPEN: { gboolean override = FALSE; gchar *prestem_string = ""; gchar *poststem_string = ""; GList *directives = ((tuplet *) curobj->object)->directives; if (directives) { override = get_lily_override (directives); poststem_string = get_postfix (directives); prestem_string = get_prefix (directives); } NAVANC (0, 0); // 0 means we don't need to say what the target is, it is the object itself if (override) g_string_append_printf (ret, "%s%s", prestem_string, poststem_string); else { g_string_append_printf (ret, "%s\\tuplet %d/%d %s{", prestem_string, ((tupopen *) curobj->object)->denominator, ((tupopen *) curobj->object)->numerator, poststem_string); if (figures->len) g_string_append_printf (figures, " \\tuplet %d/%d {", ((tupopen *) curobj->object)->denominator, ((tupopen *) curobj->object)->numerator); if (fakechords->len) g_string_append_printf (fakechords, " \\tuplet %d/%d {", ((tupopen *) curobj->object)->denominator, ((tupopen *) curobj->object)->numerator); } } break; case TUPCLOSE: { // no NAVANC gboolean override = FALSE; gchar *prestem_string = ""; gchar *poststem_string = ""; GList *directives = ((tuplet *) curobj->object)->directives; if (directives) { override = get_lily_override (directives); poststem_string = get_postfix (directives); prestem_string = get_prefix (directives); } if (override) g_string_append_printf (ret, "%s%s", prestem_string, poststem_string); else { g_string_append_printf (ret, "%s}%s", prestem_string, poststem_string); if (figures->len) g_string_append_printf (figures, "}"); if (fakechords->len) g_string_append_printf (fakechords, "}"); } } break; case STEMDIRECTIVE: { //no NAVANC gboolean override = FALSE; gchar *prestem_string = ""; gchar *poststem_string = ""; GList *directives = ((stemdirective *) curobj->object)->directives; if (directives) { override = get_lily_override (directives); poststem_string = get_postfix (directives); prestem_string = get_prefix (directives); } if (override) g_string_append_printf (ret, "%s%s", prestem_string, poststem_string); else switch (((stemdirective *) curobj->object)->type) { case DENEMO_STEMDOWN: g_string_append_printf (ret, "%s\\stemDown" "%s", prestem_string, poststem_string); break; case DENEMO_STEMBOTH: g_string_append_printf (ret, "%s\\stemNeutral" "%s", prestem_string, poststem_string); break; case DENEMO_STEMUP: g_string_append_printf (ret, "%s\\stemUp" "%s", prestem_string, poststem_string); break; } if (*poststem_string) g_free (poststem_string); if (*prestem_string) g_free (prestem_string); } break; case LILYDIRECTIVE: ; //handled in the if block break; default: break; } outputret; g_free (curobj->lilypond); curobj->lilypond = g_string_free (lily_for_obj, FALSE); //There is a scheme command d-GetLilyPondthat retrieves the LilyPond text associated with the current object *pprevduration = prevduration; *pprevnumdots = prevnumdots; *pclefname = clefname; *pkeyname = keyname; *pcur_stime1 = cur_stime1; *pcur_stime2 = cur_stime2; return open_braces; } /* create and insertion point and button for the next piece of music */ static void insert_music_section (DenemoProject * gui, gchar * name) { GtkTextIter iter; gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, gtk_text_buffer_get_mark (Denemo.textbuffer, MUSIC)); gtk_text_buffer_insert (Denemo.textbuffer, &iter, "\n", -1); (void) gtk_text_iter_backward_char (&iter); insert_section (NULL, name, name, &iter, gui); } /* create and insertion point and button for the next scoreblock */ static GtkTextChildAnchor * insert_scoreblock_section (DenemoProject * gui, gchar * name, DenemoScoreblock * sb) { GString **target = sb ? &sb->lilypond : NULL; GtkTextChildAnchor *anchor; GtkTextIter iter; gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, gtk_text_buffer_get_mark (Denemo.textbuffer, SCOREBLOCK)); gtk_text_buffer_insert (Denemo.textbuffer, &iter, "\n", -1); (void) gtk_text_iter_backward_char (&iter); if (sb && *target) { // custom scoreblock if ((*target)->len && *(*target)->str == '%') { gint maxlength = 50; gchar *v = g_malloc0 (maxlength * sizeof (gchar)); strncpy (v, (*target)->str + 1, maxlength - 1); //skip the opening % sign to make label, leave a NULL at the end while (--maxlength) if (*(v + maxlength) == '\n') *(v + maxlength) = 0; //truncate at first end of line anchor = insert_section (target, name, v, &iter, gui); g_free (v); } else { anchor = insert_section (target, name, name, &iter, gui); } g_object_set_data (G_OBJECT (anchor), CUSTOM, (gpointer) sb); } else { //standard scoreblock anchor = insert_section (target, name, name, &iter, gui); g_object_set_data (G_OBJECT (anchor), STANDARD_SCOREBLOCK, (gpointer) 1); } return anchor; } /* gets the text for the section that starts at anchor */ static gchar * get_text (GtkTextChildAnchor * anchor) { GtkTextIter start, end; gtk_text_buffer_get_iter_at_child_anchor (Denemo.textbuffer, &start, anchor); GtkTextChildAnchor *endanc = g_object_get_data (G_OBJECT (anchor), "end"); gtk_text_buffer_get_iter_at_child_anchor (Denemo.textbuffer, &end, endanc); return gtk_text_buffer_get_text (Denemo.textbuffer, &start, &end, FALSE /* get only visible text */ ); } /** * Output the header information using Lilypond syntax * * */ static void outputHeader (GString * str, DenemoProject * gui) { g_string_append_printf (str, "%s", _("%% LilyPond file generated by Denemo version ")); g_string_append_printf (str, "%s", VERSION "\n\n"); if (gui->lilycontrol.excerpt == TRUE) g_string_append_printf (str, "%s", "\\include \"lilypond-book-preamble.ly\" \n\n"); g_string_append_printf (str, "%s", "%%http://www.gnu.org/software/denemo/\n\n"); /*Print out lilypond syntax version */ if (gui->lilycontrol.lilyversion->len) g_string_append_printf (str, "\\version \"%s\"\n", gui->lilycontrol.lilyversion->str /*LILYPOND_VERSION */ ); else g_string_append_printf (str, "\\version \"%s\"\n", get_lily_version_string ()); } gchar * get_lilypond_paper (void) { DenemoProject *gui = Denemo.project; GString *str = g_string_new (""); /* \paper block settings for excerpt */ if (gui->lilycontrol.excerpt == TRUE) { g_string_append_printf (str, "%s", "print-all-headers = ##f\n"); g_string_append_printf (str, "%s", TAB "#(define dump-extents #t)\n"); g_string_append_printf (str, "%s", TAB "line-width = 160\\mm - 2.0 * 0.4\\in\n"); g_string_append_printf (str, "%s", TAB "ragged-right = ##t\n"); g_string_append_printf (str, "%s", TAB "indent = 0\\mm\n"); g_string_append_printf (str, "%s", TAB "force-assignment = #\"\"\n"); g_string_append_printf (str, "%s", TAB "line-width = #(- line-width (* mm 3.000000))\n"); } /* \paper block settings for the score */ else { gchar *paper_settings = get_postfix (gui->paper.directives); if (paper_settings) { g_string_append (str, paper_settings); g_free (paper_settings); } else g_string_append_printf (str, "%s", "print-all-headers = ##f\n"); } return g_string_free (str, FALSE); } const gchar * get_prevailing_clef_as_lilypond (void) { clef *theclef = get_prevailing_context (CLEF); const gchar *clefname = get_lilypond_for_clef (theclef); return clefname; } const gchar * get_prevailing_keysig_as_lilypond (void) { keysig *thekeysig = get_prevailing_context (KEYSIG); const gchar *keysigname = get_lilypond_for_keysig (thekeysig); return keysigname; } const gchar * get_prevailing_timesig_as_lilypond (void) { timesig *thetimesig = get_prevailing_context (TIMESIG); const gchar *timesigname = get_lilypond_for_timesig (thetimesig); return timesigname; } gchar * get_lilypond_for_timesig (timesig * time) { gboolean override = get_lily_override (time->directives); gchar *timesig_string = get_postfix (time->directives); gchar *time_prefix = get_prefix (time->directives); if (override) { g_free (time_prefix); return timesig_string; } gchar *ret = g_strdup_printf (" %s \\time %d/%d %s ", time_prefix, time->time1, time->time2, timesig_string); g_free (timesig_string); g_free (time_prefix); return ret; } gchar * get_lilypond_for_keysig (struct keysig * key) { gchar *keyname; gboolean override = get_lily_override (key->directives); gchar *keysig_string = get_postfix (key->directives); gchar *key_prefix = get_prefix (key->directives); if (override) { g_free (key_prefix); return keysig_string; } determinekey (key->isminor ? key->number + 3 : key->number, &keyname); gchar *ret = g_strdup_printf (" %s \\key %s%s %s", key_prefix, keyname, (key->isminor) ? " \\minor " : " \\major ", keysig_string); g_free (keysig_string); g_free (key_prefix); return ret; } void do_clef (GString * definitions, DenemoStaff * curstaffstruct, gchar * movement, gchar * voice) { gchar *clefname; determineclef (curstaffstruct->clef.type, &clefname); gboolean clef_override = get_lily_override (curstaffstruct->clef.directives); gchar *clef_postfix_insert = get_postfix (curstaffstruct->clef.directives); gchar *clef_prefix = get_prefix (curstaffstruct->clef.directives); if (clef_override) g_string_append_printf (definitions, "%s%sClef = %s\n", movement, voice, clef_postfix_insert); else g_string_append_printf (definitions, "%s%sClef = %s \\clef %s %s\n", movement, voice, clef_prefix, clefname, clef_postfix_insert); g_free (clef_postfix_insert); g_free (clef_prefix); } gchar * get_lilypond_for_clef (clef * theclef) { gchar *clefname = NULL; determineclef (theclef->type, &clefname); gboolean clef_override = get_lily_override (theclef->directives); gchar *clef_postfix_insert = get_postfix (theclef->directives); gchar *clef_prefix = get_prefix (theclef->directives); if (clef_override) { g_free (clef_prefix); return clef_postfix_insert; } gchar *ret = g_strdup_printf ("%s \\clef %s %s ", clef_prefix, clefname, clef_postfix_insert); g_free (clef_postfix_insert); g_free (clef_prefix); return ret; } static gboolean needs_hyphen (gchar *str) { gchar *c = str; gboolean needed = FALSE; do { if(*c=='"') needed = !needed; } while (*c++); return needed; } /** * Output a Denemo Staff in Lilypond syntax * A section is created in the Denemo.textbuffer and the music inserted into it. * each DenemoObject is given an anchor and a pointer to the object is stored with the anchor, * so that it will be possible to create LilyPond directives from within the buffer (not yet * implemented FIXME). * Any lyrics, chord symbols and figured basses are put in separate sections. * */ static void outputStaff (DenemoProject * gui, DenemoStaff * curstaffstruct, gint start, gint end, gchar * movement, gchar * voice, gint movement_count, gint voice_count, DenemoScoreblock * sb) { gint cur_stime1 = curstaffstruct->timesig.time1; gint cur_stime2 = curstaffstruct->timesig.time2; gint prevduration, prevnumdots; gchar *clefname; /* clef name */ gchar *keyname; /* key signature name */ measurenode *curmeasure; objnode *curobjnode; DenemoObject *curobj; gint curmeasurenum; // count of measures printed gint measurenum; //count of measures from start of staff starting at 1 gint objnum; //count of objects in measure starting at 1 gint open_braces; //Keep track of the number of open brace "{" chars in the music, in case of imbalance. GString *staff_str = g_string_new (""); //Bits of the music of the staff are accumulated here and then stored in the lilypond view buffer GList *lyrics = NULL; GString *figures = g_string_new (""); GString *fakechords = g_string_new (""); prevduration = -1; prevnumdots = -1; gint grace_status = 0; GtkTextIter iter; GtkTextMark *curmark; /* movable mark for insertion point of the music of the staff */ /* a button and mark for the music of this staff */ GString *voice_name = g_string_new (movement); g_string_prepend (voice_name, "Notes for "); g_string_append_printf (voice_name, " Voice %d", /* ABS */ (voice_count)); //g_debug("making %s\n", voice_name->str); insert_music_section (gui, voice_name->str); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, gtk_text_buffer_get_mark (Denemo.textbuffer, voice_name->str)); curmark = gtk_text_buffer_create_mark (Denemo.textbuffer, NULL, &iter, FALSE); //FIXME remove this mark at the end of the output of this staff... /* a button and mark for the lyrics of this staff */ GString *lyrics_name = g_string_new (movement); if ((!curstaffstruct->hide_lyrics) && curstaffstruct->verse_views) { g_string_prepend (lyrics_name, "Lyrics for "); g_string_append_printf (lyrics_name, " Voice %d", voice_count); insert_music_section (gui, lyrics_name->str); GList *g; for (g = curstaffstruct->verse_views; g; g = g->next) { lyrics = g_list_append (lyrics, get_text_from_view (g->data)); } } /* a button and mark for the figures of this staff */ GString *figures_name = g_string_new (movement); if (curstaffstruct->hasfigures) { g_string_prepend (figures_name, "Figured Bass for "); g_string_append_printf (figures_name, " Voice %d", voice_count); insert_music_section (gui, figures_name->str); g_string_append (figures, "%figures follow\n\\set Staff.implicitBassFigures = #'(0)\n"); } /* a button and mark for the chord symbols of this staff */ GString *fakechords_name = g_string_new (movement); if (curstaffstruct->hasfakechords) { g_string_prepend (fakechords_name, "Chord symbols for "); g_string_append_printf (fakechords_name, " Voice %d", voice_count); insert_music_section (gui, fakechords_name->str); g_string_append (fakechords, "%chord symbols follow\n"); } gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, curmark); { /* standard staff-prolog */ /* Determine the key signature */ gchar *keyname; /* key signature name */ determinekey (curstaffstruct->keysig.isminor ? curstaffstruct->keysig.number + 3 : curstaffstruct->keysig.number, &keyname); gchar *clefname; /* Determine the clef */ determineclef (curstaffstruct->clef.type, &clefname); g_string_append_printf (staff_str, "%s%s = {\n", movement, voice); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, curmark); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, staff_str->str, -1, INEDITABLE, NULL); } /*end standard staff-prolog */ g_string_assign (staff_str, ""); curmeasurenum = 0; curmeasure = curstaffstruct->themeasures; if (!end) end = g_list_length (curmeasure); /* Now each measure */ if (start) curmeasure = g_list_nth (curmeasure, start - 1); open_braces = 0; //keep track of excess open braces "{" gboolean nonprintingnotes = FALSE; //no nonprinting notes found yet in this voice, once there are issue a cross-head directive for (measurenum = MAX (start, 1); curmeasure && measurenum <= end; curmeasure = curmeasure->next, measurenum++) { gboolean empty_measure = TRUE; if ((++curmeasurenum % 5) == 0) { g_string_append_printf (staff_str, "%%%d\n", curmeasurenum); if (figures->len) g_string_append_printf (figures, "\n%%%d\n", curmeasurenum); if (fakechords->len) g_string_append_printf (fakechords, "\n%%%d\n", curmeasurenum); } g_string_append_printf (staff_str, "%s", TAB); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, curmark); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, staff_str->str, -1, INEDITABLE, NULL); g_string_assign (staff_str, ""); gint firstobj = 1, lastobj = G_MAXINT - 1; if (start && gui->movement->markstaffnum) { //markstaffnum==0 means not set firstobj = 1 + gui->movement->selection.firstobjmarked; lastobj = 1 + gui->movement->selection.lastobjmarked; } //g_debug("First last, %d %d %d\n", firstobj, lastobj, start); for (objnum = 1, curobjnode = (objnode *) ((DenemoMeasure *) curmeasure->data)->objects; /* curobjnode NULL checked at end */ ; curobjnode = curobjnode->next, objnum++) { curobj = NULL; //avoid random values for debugabililty if ((measurenum > MAX (start, 1) && (measurenum < end)) || (start == end && measurenum == start && objnum >= firstobj && objnum <= lastobj) || (start != end && ((((measurenum == MAX (start, 1)) && (objnum >= firstobj))) || ((measurenum == end) && (objnum <= lastobj))))) { if (curobjnode) { curobj = (DenemoObject *) curobjnode->data; // if (curobj->type==CHORD||curobj->type==PARTIAL||curobj->type==LILYDIRECTIVE) if (curobj->durinticks || (curobj->type == LILYDIRECTIVE && (((lilydirective *) curobj->object)->override & DENEMO_OVERRIDE_LILYPOND))) empty_measure = FALSE; //Print rhythm notes with cross head. We ignore the case where someone reverts to real notes after rhythm only notes if (curobj->type == CHORD && ((chord *) curobj->object)->notes && curobj->isinvisible && !nonprintingnotes) { gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, curmark); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, "\n" TAB "\\override NoteHead #'style = #'cross" "\n\\override NoteHead #'color = #darkyellow" "\n\\override Stem #'color = #darkyellow" "\n\\override Flag #'color = #darkyellow" "\n\\override Beam #'color = #darkyellow ", -1, INEDITABLE, NULL); nonprintingnotes = TRUE; } if (curobj->type == LILYDIRECTIVE) { DenemoDirective *directive = ((lilydirective *) curobj->object); #define OUTPUT_LILY(what) \ if(directive->what && directive->what->len && !wrong_layout(directive, sb->id) \ && (!(directive->override & DENEMO_OVERRIDE_HIDDEN)) \ ) { \ gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, curmark);\ GtkTextChildAnchor *objanc = gtk_text_buffer_create_child_anchor (Denemo.textbuffer, &iter);\ g_object_set_data(G_OBJECT(objanc), OBJECTNODE, (gpointer)curobjnode);\ g_object_set_data(G_OBJECT(objanc), MOVEMENTNUM, (gpointer)(intptr_t)ABS(movement_count));\ g_object_set_data(G_OBJECT(objanc), MEASURENUM, (gpointer)(intptr_t)measurenum);\ g_object_set_data(G_OBJECT(objanc), STAFFNUM, (gpointer)(intptr_t)ABS(voice_count));\ g_object_set_data(G_OBJECT(objanc), OBJECTNUM, (gpointer)(intptr_t)ABS(objnum));\ g_object_set_data(G_OBJECT(objanc), TARGETTYPE, (gpointer)(intptr_t)ABS(TARGET_OBJECT));\ GtkTextIter back;\ back = iter;\ (void)gtk_text_iter_backward_char(&back);\ gtk_text_buffer_apply_tag_by_name(Denemo.textbuffer, INEDITABLE, &back, &iter);\ gtk_text_buffer_apply_tag_by_name(Denemo.textbuffer, "system_invisible", &back, &iter);\ open_braces += brace_count( directive->what->str);\ gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, directive->what->str, -1, "bold", NULL); \ GtkTextChildAnchor *endanc = gtk_text_buffer_create_child_anchor (Denemo.textbuffer, &iter);\ back = iter;\ (void)gtk_text_iter_backward_char(&back);\ gtk_text_buffer_apply_tag_by_name(Denemo.textbuffer, INEDITABLE, &back, &iter);\ gtk_text_buffer_apply_tag_by_name(Denemo.textbuffer, "system_invisible", &back, &iter);\ g_object_set_data(G_OBJECT(objanc), "end", (gpointer)endanc);\ g_object_set_data(G_OBJECT(objanc), GSTRINGP, (gpointer)&directive->what);\ gui->anchors = g_list_prepend(gui->anchors, objanc);\ } g_free (curobj->lilypond); OUTPUT_LILY (prefix); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, " ", -1, INEDITABLE, HIGHLIGHT, NULL); OUTPUT_LILY (postfix); curobj->lilypond = g_strconcat (directive->prefix ? directive->prefix->str : "", directive->postfix ? directive->postfix->str : "", NULL); #undef OUTPUT_LILY prevduration = -1; prevnumdots = -1; // the LILYDIRECTIVE may have changed the duration } else { #if 0 place_navigation_anchor (curmark, (gpointer) curobjnode, ABS (movement_count), measurenum, ABS (voice_count), ABS (objnum), 0, 0); #endif open_braces += generate_lily_for_obj (gui, &iter, curobj, &prevduration, &prevnumdots, &clefname, &keyname, &cur_stime1, &cur_stime2, &grace_status, figures, fakechords, curmark, (gpointer) curobjnode, ABS (movement_count), measurenum, ABS (voice_count), ABS (objnum), sb->id); } // end not lilydirective } // if curobjnode if ((curobjnode == NULL) || (curobjnode->next == NULL)) { //at end of measure GString *endstr = g_string_new (""); if (empty_measure && (cur_stime1 < 256)) // measure has nothing to use up the duration, assume SKIP, 256 means cadenza time, do not skip. { g_string_append_printf (endstr, " s1*%d/%d ", cur_stime1, cur_stime2); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, curmark); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, endstr->str, -1, NULL, NULL); g_string_assign (endstr, ""); prevduration = -1; } if (figures->len) g_string_append (figures, "\n"); if (fakechords->len) g_string_append (fakechords, "\n"); if ((curobjnode != NULL) && ((curobj == NULL) || curobj->type != LILYDIRECTIVE)) /* if it ends in a lilydirective, the user may want to choose their own barline style, let them */ { if (curmeasure->next) g_string_append_printf (endstr, "%s", "\\AutoBarline\n"); else g_string_append_printf (endstr, "%s", " \\AutoEndMovementBarline\n"); } gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, curmark); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, endstr->str, -1, INEDITABLE, NULL); } //if end of measure if (curobjnode) { curobj = (DenemoObject *) curobjnode->data; /* figures and chord symbols */ if (curobj->type == CHORD) { chord *pchord = (chord *) curobj->object; if (curstaffstruct->hasfigures && !pchord->is_grace) output_figured_bass (figures, pchord); if (curstaffstruct->hasfakechords && !pchord->is_grace) output_fakechord (fakechords, pchord); /* end of figures and chord symbols */ } // if CHORD else if (curobj->type == LILYDIRECTIVE) { DenemoDirective *directive = ((lilydirective *) curobj->object); if (directive->tag && !strcmp (directive->tag->str, "MultiMeasureRests")) { if (curstaffstruct->hasfigures) g_string_append (figures, directive->postfix->str); if (curstaffstruct->hasfakechords) g_string_append (fakechords, directive->postfix->str); } } } // if object } //in obj range if (curobjnode == NULL || curobjnode->next == NULL) break; //we want to go through once for empty measures } /* For each object in the measure */ } /* for each measure */ for (; open_braces > 0; open_braces--) { g_string_append_printf (staff_str, "%s", "\n} %% missing close brace\n"); } g_string_append_printf (staff_str, "%s", "}\n"); gchar *voice_prolog_insert = get_postfix (curstaffstruct->voice_directives); g_free (voice_prolog_insert); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, curmark); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, staff_str->str, -1, INEDITABLE, NULL); if (lyrics) { GList *g; gint versenum; for (versenum = 1, g = lyrics; g; g = g->next, versenum++) { GString *versename = g_string_new (""); GString *temp = g_string_new (""); g_string_printf (temp, "Verse%d", versenum); set_lily_name (temp, versename); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, gtk_text_buffer_get_mark (Denemo.textbuffer, lyrics_name->str)); g_string_printf (temp, "%s%sLyrics%s = \\lyricmode { \n", movement, voice, versename->str); gboolean terminate_hyphens = needs_hyphen ((gchar *)g->data); g_string_append_printf (temp, "%s%s \n}\n", (char *) g->data, terminate_hyphens?"\"\n%Odd number of double-qotes corrected\n":""); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, temp->str, -1, INEDITABLE, NULL); g_string_free (temp, TRUE); g_string_free (versename, TRUE); g_free (g->data); } } g_string_free (lyrics_name, TRUE); if (figures->len) { GString *temp = g_string_new (""); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, gtk_text_buffer_get_mark (Denemo.textbuffer, figures_name->str)); /* output figures prolog */ g_string_printf (temp, "%s%sBassFiguresLine = \\figuremode {\n" "\\set figuredBassAlterationDirection = #1\n" "\\set figuredBassPlusDirection = #1\n" "\\override FiguredBass.BassFigure " "#'font-size = #-1\n", movement, voice); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, temp->str, -1, INEDITABLE, NULL); g_string_printf (temp, "%s \n}\n", figures->str); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, temp->str, -1, INEDITABLE, NULL); g_string_free (temp, TRUE); } g_string_free (figures_name, TRUE); if (fakechords->len) { GString *temp = g_string_new (""); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, gtk_text_buffer_get_mark (Denemo.textbuffer, fakechords_name->str)); /* output fakechords prolog */ g_string_append_printf (temp, "%s%sChords = \\new ChordNames \\chordmode {\n", movement, voice); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, temp->str, -1, INEDITABLE, NULL); g_string_printf (temp, "%s \n}\n" /* another definition here */ , fakechords->str); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, temp->str, -1, INEDITABLE, NULL); g_string_free (temp, TRUE); } g_string_free (fakechords_name, TRUE); g_string_free (staff_str, TRUE); //g_string_free(lyrics, TRUE); g_string_free (figures, TRUE); g_string_free (fakechords, TRUE); } /* outputStaff */ /* Merge back any modified LilyPond text into the Denemo Score */ void merge_lily_strings (DenemoProject * gui) { //g_debug("Merge...\n"); GList *g; if (gui == Denemo.project) write_status (gui); if (!gtk_text_buffer_get_modified (Denemo.textbuffer)) { //g_debug("not modified\n"); return; } if (gui->lilysync != gui->changecount) { warningdialog (_("The score has been altered so that this LilyPond text is out of date - ignoring request")); return; } for (g = gui->anchors; g; g = g->next) { GtkTextChildAnchor *anchor = g->data; GString **gstringp = g_object_get_data (G_OBJECT (anchor), GSTRINGP); if (gstringp) { gchar *lily = get_text (anchor); if (strcmp (lily, g_object_get_data (G_OBJECT (anchor), ORIGINAL))) { //g_debug("Compare %s\nwith %s for gstringp %p\n", lily, g_object_get_data(anchor,ORIGINAL), *gstringp); if (!*gstringp) *gstringp = g_string_new (lily); else g_string_assign (*gstringp, lily); //this does not prevent corruption!!!!! on deleting all the string... /* white space becomes empty string */ g_strstrip (lily); if (*lily == '\0') { g_string_free (*gstringp, TRUE); *gstringp = g_string_new (""); } #if 0 g_debug ("gstringp %p at %p holds %s\n", *gstringp, gstringp, (*gstringp)->str); #endif /* this is ((DenemoDirective*)((DenemoObject*)(Denemo.project->movement->currentobject->data))->object)->postfix */ g_free (g_object_get_data (G_OBJECT (anchor), ORIGINAL)); g_object_set_data (G_OBJECT (anchor), ORIGINAL, get_text (anchor)); score_status (gui, TRUE); g_free (lily); } } } gtk_text_buffer_set_modified (Denemo.textbuffer, FALSE); } /* UNUSED void merge_lily_cb (DenemoAction * action, DenemoProject * gui) { merge_lily_strings (gui); } */ /* if there is not yet a textbuffer for the passed gui, it creates and populates one, if there is it finds the offset of the current point in the buffer, refreshes it from the Denemo data and then repositions the cursor at that offset. The refresh is subject to conditions (see output_score_to_buffer()). */ void refresh_lily_cb (DenemoAction * action, DenemoProject * gui) { if (Denemo.textbuffer) { GtkTextIter iter; GtkTextMark *cursor = gtk_text_buffer_get_insert (Denemo.textbuffer); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, cursor); gint offset = gtk_text_iter_get_offset (&iter); output_score_to_buffer (gui, TRUE, NULL, NULL); //restore the cursor position gtk_text_buffer_get_iter_at_offset (Denemo.textbuffer, &iter, offset); gtk_text_buffer_place_cursor (Denemo.textbuffer, &iter); } else output_score_to_buffer (gui, TRUE, NULL, NULL); } void force_lily_refresh (DenemoProject * gui) { gui->lilysync = G_MAXUINT; refresh_lily_cb (NULL, gui); } void delete_lily_cb (DenemoAction * action, gpointer param) { DenemoProject *gui = Denemo.project; GtkTextChildAnchor *anchor = gui->lilystart; GtkTextIter start, end; gtk_text_buffer_get_iter_at_child_anchor (Denemo.textbuffer, &start, anchor); GtkTextChildAnchor *endanc = g_object_get_data (G_OBJECT (anchor), "end"); gtk_text_buffer_get_iter_at_child_anchor (Denemo.textbuffer, &end, endanc); gpointer sb = g_object_get_data (G_OBJECT (anchor), CUSTOM); gui->anchors = g_list_remove (gui->anchors, anchor); gui->custom_scoreblocks = g_list_remove (gui->custom_scoreblocks, sb); gtk_text_buffer_delete (Denemo.textbuffer, &start, &end); } void toggle_lily_visible_cb (DenemoAction * action, gpointer param) { DenemoProject *gui = Denemo.project; GtkTextIter start, end; GtkTextChildAnchor *anchor = gui->lilystart; DenemoScoreblock *sb = g_object_get_data (G_OBJECT (anchor), CUSTOM); gtk_text_buffer_get_iter_at_child_anchor (Denemo.textbuffer, &start, anchor); (void) gtk_text_iter_forward_char (&start); GtkTextChildAnchor *endanc = g_object_get_data (G_OBJECT (anchor), "end"); gtk_text_buffer_get_iter_at_child_anchor (Denemo.textbuffer, &end, endanc); GtkTextTag *tag = gtk_text_tag_table_lookup (tagtable, "invisible"); /* GtkTextTag *systemtag = gtk_text_tag_table_lookup(tagtable, "system_invisible"); */ if (gtk_text_iter_has_tag (&start, tag)) { if (sb) sb->visible = TRUE; gtk_text_buffer_remove_tag_by_name (Denemo.textbuffer, "invisible", &start, &end); } else { if (sb) sb->visible = FALSE; gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, "invisible", &start, &end); } //g_debug("visible %d\n", sb?sb->visible:-1); } static void place_cursor_cb (void) { DenemoProject *gui = Denemo.project; /* place cursor on current object */ if (gui->movement->currentobject) { DenemoObject *targetobj = gui->movement->currentobject->data; GList *curobjnode; GtkTextIter iter; gtk_text_buffer_get_start_iter (Denemo.textbuffer, &iter); while (gtk_text_iter_forward_char (&iter)) { GtkTextChildAnchor *anchor; anchor = gtk_text_iter_get_child_anchor (&iter); if (anchor && (curobjnode = g_object_get_data (G_OBJECT (anchor), OBJECTNODE)) && curobjnode->data == targetobj) { gtk_text_buffer_place_cursor (Denemo.textbuffer, &iter); gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW (Denemo.textview), gtk_text_buffer_get_insert (Denemo.textbuffer)); gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (Denemo.textview), gtk_text_buffer_get_insert (Denemo.textbuffer), 0.0, TRUE, 0.5, 0.5); //g_debug("placed cursor\n"); FIXME as well color in relevant objects } } } } static void insert_lilypond_directive (void) { call_out_to_guile ("(d-InsertStandaloneDirective)"); } #if 0 static void print_cursor_cb (void) { GtkTextIter iter; DenemoProject *gui = Denemo.project; gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, gtk_text_buffer_get_insert (Denemo.textbuffer)); g_debug ("Char is %c at bytes=%d chars=%d\n", gtk_text_iter_get_char (&iter), gtk_text_iter_get_visible_line_index (&iter), gtk_text_iter_get_visible_line_offset (&iter)); } #endif void set_initiate_scoreblock (DenemoMovement * si, GString * scoreblock) { GString *movement_prolog = g_string_new (" "); GList *g; for (g = si->movementcontrol.directives; g; g = g->next) { DenemoDirective *d = (DenemoDirective *) g->data; if (wrong_layout (d, Denemo.project->layout_id)) continue; if ((d->override & DENEMO_OVERRIDE_AFFIX) && (d->prefix)) { g_string_append (movement_prolog, d->prefix->str); } } if (!get_lily_override (si->movementcontrol.directives)) g_string_append (movement_prolog, "<<\n"); g_string_append_printf (scoreblock, "%s", movement_prolog->str); g_string_free (movement_prolog, FALSE); } static gchar * get_alt_non_aff_prefix (GList * g) { GString *s = g_string_new (""); for (; g; g = g->next) { DenemoDirective *d = g->data; if (wrong_layout (d, Denemo.project->layout_id)) continue; if ((d->override & DENEMO_ALT_OVERRIDE) && d->prefix &&!(d->override & DENEMO_OVERRIDE_AFFIX)) g_string_append (s, d->prefix->str); } return g_string_free (s, FALSE); } static gchar * get_alt_non_aff_postfix (GList * g) { GString *s = g_string_new (""); for (; g; g = g->next) { DenemoDirective *d = g->data; if (wrong_layout (d, Denemo.project->layout_id)) continue; if ((d->override & DENEMO_ALT_OVERRIDE) && d->postfix &&!(d->override & DENEMO_OVERRIDE_AFFIX)) g_string_append (s, d->postfix->str); } return g_string_free (s, FALSE); } static gchar * get_non_alt_aff_postfix (GList * g) { GString *s = g_string_new (""); for (; g; g = g->next) { DenemoDirective *d = g->data; if (wrong_layout (d, Denemo.project->layout_id)) continue; if ((d->override & DENEMO_OVERRIDE_AFFIX) && !(d->override & DENEMO_ALT_OVERRIDE) && d->postfix) g_string_append (s, d->postfix->str); } return g_string_free (s, FALSE); } void set_staff_definition (GString * str, DenemoStaff * curstaffstruct) { gint staff_override = get_lily_override (curstaffstruct->staff_directives); gchar *staff_prolog_insert = get_skip_prefix (curstaffstruct->staff_directives, DENEMO_OVERRIDE_WITH); //DENEMO_ALT_OVERRIDE | DENEMO_OVERRIDE_AFFIX ignores directives with DENEMO_OVERRIDE_AFFIX or ALT_OVERRIDE gchar *staff_epilog_insert = get_skip_postfix (curstaffstruct->staff_directives, DENEMO_OVERRIDE_WITH);//was get_postfix ignores directives with DENEMO_OVERRIDE_AFFIX set gchar *denemo_name = curstaffstruct->subpart ? g_strdup_printf ("%s_%s", curstaffstruct->denemo_name->str, curstaffstruct->subpart->str) : curstaffstruct->denemo_name->str; { gchar *alt_override = get_alt_non_aff_prefix (curstaffstruct->staff_directives); //This is only the prefix field being gotten if (*alt_override) { if (staff_override) { g_string_append_printf (str, "%s %s%s", alt_override, staff_prolog_insert, staff_epilog_insert); } else g_string_append_printf (str, "\n%%Start of Staff\n %s \\new Staff = \"%s\" << %s\n", alt_override, denemo_name, staff_epilog_insert); } else { g_free (alt_override); alt_override = get_include_prefix (curstaffstruct->staff_directives, DENEMO_OVERRIDE_WITH); if (*alt_override) { if (staff_override) { g_string_append_printf (str, "%s %s%s", alt_override, staff_prolog_insert, staff_epilog_insert); } else g_string_append_printf (str, "\n%%Start of Staff\n \\new Staff = \"%s\" \\with { %s }<< %s\n", denemo_name, alt_override, staff_epilog_insert); } else { if (staff_override) { g_string_append_printf (str, "%s %s%s", alt_override, staff_prolog_insert, staff_epilog_insert); } else g_string_append_printf (str, "\n%%Start of Staff\n\\new Staff = \"%s\" %s << %s\n", denemo_name, staff_prolog_insert, staff_epilog_insert); } } g_free (alt_override); } if (curstaffstruct->subpart) g_free (denemo_name); g_free (staff_prolog_insert); g_free (staff_epilog_insert); } void set_voice_definition (GString * str, DenemoStaff * curstaffstruct, gchar * voicetag) { gint voice_override = get_lily_override (curstaffstruct->voice_directives); gchar *voice_prolog_insert = get_prefix (curstaffstruct->voice_directives); gchar *voice_epilog_insert = get_postfix (curstaffstruct->voice_directives); if (voice_override) { g_string_append_printf (str, "%s", voice_prolog_insert); } else { g_string_append_printf (str, "\\new Voice = \"%s\" %s { %s\n", voicetag, voice_prolog_insert, voice_epilog_insert); } } void set_voice_termination (GString * str, DenemoStaff * curstaffstruct) { gint voice_override = get_lily_override (curstaffstruct->voice_directives); gchar *voice_epilog_insert = get_postfix (curstaffstruct->voice_directives); if (voice_override) { g_string_append_printf (str, "%s", voice_epilog_insert); } else { g_string_assign (str, "\n" TAB TAB TAB "} %End of voice\n"); } } // termination is end of staff but before any figures, lyrics etc attached to the staff void set_staff_termination (GString * str, DenemoStaff * curstaffstruct) { gint staff_override = (DENEMO_OVERRIDE_LILYPOND | DENEMO_OVERRIDE_AFFIX) == (get_override (curstaffstruct->staff_directives) & (DENEMO_OVERRIDE_LILYPOND | DENEMO_OVERRIDE_AFFIX)); gchar *staff_epilog_insert = get_non_alt_aff_postfix (curstaffstruct->staff_directives); if (staff_override) { g_string_append_printf (str, "%s", staff_epilog_insert); } else { g_string_assign (str, "\n" TAB TAB TAB ">> %End of Staff\n"); } } //finalize is after all stuff associated with the staff void set_staff_finalize (GString * str, DenemoStaff * curstaffstruct) { g_string_append (str, get_alt_non_aff_postfix (curstaffstruct->staff_directives)); } void generate_lilypond_part (void) { DenemoStaff *staff = (DenemoStaff *) (Denemo.project->movement->currentstaff->data); output_score_to_buffer (Denemo.project, TRUE, staff->lily_name->str, staff->denemo_name->str); } /* *writes the current score in LilyPond format to the textbuffer. *sets gui->lilysync equal to gui->changecount *if gui->lilysync is up to date with changecount on entry does nothing unless *the set of score blocks will be different from the last call * this namespec is not otherwise used FIXME */ static void output_score_to_buffer (DenemoProject * gui, gboolean all_movements, gchar * partname, gchar * instrumentation) { GString *definitions = g_string_new (""); GString *staffdefinitions = g_string_new (""); if (gui->namespec == NULL) gui->namespec = g_strdup (""); /* to check if the scoreblocks to make visible are different */ gchar *namespec; gchar *movementname; if (all_movements) movementname = g_strdup ("All movements"); else movementname = g_strdup_printf ("Movement %d", 1 + g_list_index (gui->movements, gui->movement)); if (partname) namespec = g_strdup_printf ("%s Part %s", movementname, partname); else namespec = g_strdup_printf ("%s all parts", movementname); g_free (movementname); //if(Denemo.textview==NULL) // create_lilywindow(); DenemoScoreblock *sb = select_layout (all_movements, partname, instrumentation); //FIXME gui->namespec mechanism is probably redundant, and could well cause trouble... Denemo.project->layout_id = sb->id; if (gui->movement->markstaffnum) all_movements = FALSE; staffnode *curstaff; DenemoStaff *curstaffstruct; // if(Denemo.project->custom_scoreblocks==NULL) // create_default_scoreblock(); if ((gui->movement->markstaffnum == 0) && Denemo.textbuffer && (gui->changecount == gui->lilysync) && !strcmp (gui->namespec, namespec)) { g_free (gui->namespec); gui->namespec = namespec; //g_debug("changecount=%d and lilysync= %d\n", gui->changecount, gui->lilysync); return; } g_free (gui->namespec); gui->namespec = namespec; //g_debug("actually refreshing %d %d", gui->lilysync, gui->changecount); gui->lilysync = gui->changecount; if (Denemo.textbuffer) gtk_text_buffer_set_text (Denemo.textbuffer, "", -1); else warningdialog (_("No textbuffer")); if (gui->anchors) { //FIXME the working curmark at the end of the creation of the text g_list_free (gui->anchors); gui->anchors = NULL; } /* divide up the buffer for the various parts of the lily file */ GtkTextIter iter; gtk_text_buffer_get_start_iter (Denemo.textbuffer, &iter); insert_section (NULL, START, "Prolog", &iter, gui); gtk_text_buffer_get_end_iter (Denemo.textbuffer, &iter); insert_section (NULL, MUSIC, NULL, &iter, gui); gtk_text_buffer_get_end_iter (Denemo.textbuffer, &iter); insert_section (NULL, SCOREBLOCK, NULL, &iter, gui); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, gtk_text_buffer_get_mark (Denemo.textbuffer, START)); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, "\n", -1, "bold", NULL); { //no custom prolog GString *header = g_string_new (""); outputHeader (header, gui); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, header->str, -1, INEDITABLE, NULL); g_string_free (header, TRUE); } //end of standard prolog { //Score prefix // !!used in DenemoBar command (set barlines literally) along with postfix. // change this script to have DENEMO_OVERRIDE_AFFIX set and then move all others to the score layout section //Default value for barline = barline check gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, LILYPOND_SYMBOL_DEFINITIONS, -1, INEDITABLE, NULL, NULL); GList *g = gui->lilycontrol.directives; /* num is not needed, as at the moment we can never get this location from LilyPond */ for (; g; g = g->next) { DenemoDirective *directive = g->data; if (wrong_layout (directive, Denemo.project->layout_id)) continue; if (directive->prefix && (directive->override & (DENEMO_OVERRIDE_AFFIX))) //This used to be (mistakenly) DENEMO_ALT_OVERRIDE insert_editable (&directive->prefix, directive->prefix->str, &iter, gui, NULL, TARGET_OBJECT, 0, 0, 0, 0, 0, 0); //insert_section(&directive->prefix, directive->tag->str, NULL, &iter, gui); } } gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, "\n% The music follows\n", -1, INEDITABLE, NULL); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, gtk_text_buffer_get_mark (Denemo.textbuffer, SCOREBLOCK)); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, "% The scoreblocks follow\n", -1, "bold", "system_invisible", NULL); /* output scoreblock */ { gchar *scoreblock_tag; #ifdef USE_EVINCE if (continuous_typesetting ()) scoreblock_tag = "temporary scoreblock"; else scoreblock_tag = "standard scoreblock"; #else scoreblock_tag = "standard scoreblock"; #endif insert_scoreblock_section (gui, scoreblock_tag, sb); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, gtk_text_buffer_get_mark (Denemo.textbuffer, scoreblock_tag)); if (sb->text_only) insert_editable (&sb->lilypond, g_strchomp ((sb->lilypond)->str), &iter, gui, 0, 0, 0, 0, 0, 0, 0, 0); //without strchomp a newline is appended each refresh. else gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, (sb->lilypond)->str, -1, INEDITABLE, NULL); } /* insert standard scoreblock section */ //insert_scoreblock_section(gui, STANDARD_SCOREBLOCK, NULL); GList *g; gint movement_count; gint visible_movement; /* 1 for visible -1 for invisible */ for (g = gui->movements, movement_count = 1; g; g = g->next, movement_count++) { DenemoMovement *si = g->data; gint voice_count; //which voice counting from 1st voice of 1st staff thru to last voice of last staff. gint staff_count; //which staff (not counting voices) visible_movement = (((all_movements) || (g->data == gui->movement)) ? 1 : -1); GString *movement_name = g_string_new (""); GString *name = g_string_new (""); g_string_printf (name, "Mvmnt%d", movement_count); set_lily_name (name, movement_name); g_string_free (name, TRUE); //context = FALSE; for (curstaff = si->thescore, voice_count = 1, staff_count = 0; curstaff; curstaff = curstaff->next, voice_count++) { gint visible_part = 1; /* 1 for visible -1 for invisible */ curstaffstruct = (DenemoStaff *) curstaff->data; GString *voice_name = g_string_new (""); GString *staff_name = g_string_new (""); GString *name = g_string_new (""); if (curstaffstruct->voicecontrol == DENEMO_PRIMARY) staff_count++; g_string_printf (name, "Voice%d", voice_count); set_lily_name (name, voice_name); g_string_printf (name, "Staff%d", staff_count); set_lily_name (name, staff_name); g_string_free (name, TRUE); gint start = 0, end = 0; if (gui->movement->markstaffnum) { if (!(voice_count >= gui->movement->selection.firststaffmarked && voice_count <= gui->movement->selection.laststaffmarked)) visible_part = -1; start = gui->movement->selection.firstmeasuremarked; end = gui->movement->selection.lastmeasuremarked; } if (visible_part > 0 && visible_movement > 0) outputStaff (gui, curstaffstruct, start, end, movement_name->str, voice_name->str, movement_count * visible_movement, voice_count * visible_part, sb); //g_debug("Music for staff is \n%s\n", visible_part>0?"visible":"NOT visible"); //FIXME amalgamate movement and voice names below here... /* output score block */ if (visible_movement == 1 && (visible_part == 1)) { if (!(curstaffstruct->voicecontrol & DENEMO_SECONDARY)) { if ((!curstaffstruct->hide_lyrics) && curstaffstruct->verse_views) { GList *g; gint versenum; for (g = curstaffstruct->verse_views, versenum = 1; g; g = g->next, versenum++) { GString *versename = g_string_new (""); GString *temp = g_string_new (""); g_string_printf (temp, "Verse%d", versenum); set_lily_name (temp, versename); gchar *sofar = g_strdup (staffdefinitions->str); //this definition is used by score_layout.c to get LilyPond to provide the durations for lyrics, which denemo does not compute (contrast figured bass and chord symbols where durations are computed, see above). g_string_printf (staffdefinitions, "\n%s%s%sContext = \\context Lyrics = %s%s%s \\lyricsto %s%s \\%s%sLyrics%s\n%s", movement_name->str, voice_name->str, versename->str, movement_name->str, voice_name->str, versename->str, movement_name->str, voice_name->str, movement_name->str, voice_name->str, versename->str, sofar); g_free (sofar); g_string_free (versename, TRUE); g_string_free (temp, TRUE); } } //g_string_append_printf (staffdefinitions, "\n\\addQuote \"%s\" \\%s%s\n", curstaffstruct->denemo_name->str, movement_name->str, voice_name->str); //g_string_append_printf(staffdefinitions, TAB TAB"%s\n", endofblock); } else if (curstaffstruct->voicecontrol & DENEMO_SECONDARY) { //g_string_append_printf(staffdefinitions, "%s"TAB TAB"\\%s%s\n"TAB TAB"\n"TAB TAB"\n", thestr->str, movement_name->str, voice_name->str); if ((!curstaffstruct->hide_lyrics) && curstaffstruct->verse_views) { GList *g; gint versenum; for (g = curstaffstruct->verse_views, versenum = 1; g; g = g->next, versenum++) { GString *versename = g_string_new (""); GString *temp = g_string_new (""); g_string_printf (temp, "Verse%d", versenum); set_lily_name (temp, versename); gchar *sofar = g_strdup (staffdefinitions->str); //this definition is used by score_layout.c to get LilyPond to provide the durations for lyrics, which denemo does not compute (contrast figured bass and chord symbols where durations are computed, see above). g_string_printf (staffdefinitions, "\n%s%s%sContext = \\context Lyrics = %s%s%s \\lyricsto %s%s \\%s%sLyrics%s\n%s", movement_name->str, voice_name->str, versename->str, movement_name->str, voice_name->str, versename->str, movement_name->str, voice_name->str, movement_name->str, voice_name->str, versename->str, sofar); g_free (sofar); g_string_free (versename, TRUE); g_string_free (temp, TRUE); } } } // g_string_append_printf (staffdefinitions, "\n\\addQuote \"%s Mvmnt %d\" \\%s%s\n", curstaffstruct->denemo_name->str, movement_count, movement_name->str, voice_name->str); } } /*end for staff loop */ if (visible_movement == 1) { /* output the definitions to a definitions block in the music section */ { GtkTextIter iter; GtkTextMark *curmark; gchar *name = g_strdup_printf ("%s Definitions", movement_name->str); insert_music_section (gui, name); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, gtk_text_buffer_get_mark (Denemo.textbuffer, name)); curmark = gtk_text_buffer_create_mark (Denemo.textbuffer, NULL, &iter, FALSE); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, curmark); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, definitions->str, -1, INEDITABLE, NULL); gtk_text_buffer_insert_with_tags_by_name (Denemo.textbuffer, &iter, staffdefinitions->str, -1, INEDITABLE, NULL); g_free (name); g_string_assign (definitions, ""); g_string_assign (staffdefinitions, ""); } } /* if visible movement */ } /* for each movement */ g_string_free (definitions, TRUE); // now go through gui->anchors, and to each anchor attach a copy of the original text, for checking when saving. { GList *g; for (g = gui->anchors; g; g = g->next) { GtkTextChildAnchor *anchor = g->data; GString **target = g_object_get_data (G_OBJECT (anchor), GSTRINGP); if (target) g_object_set_data (G_OBJECT (anchor), ORIGINAL, get_text (anchor)); } } #if 0 g_get_current_time (&time); g_debug ("time %ld secs", time.tv_sec); seconds -= time.tv_sec; g_debug ("time diff = %ld\n", seconds); #endif { GtkTextIter startiter, enditer; gtk_text_buffer_get_start_iter (Denemo.textbuffer, &startiter); gtk_text_buffer_get_end_iter (Denemo.textbuffer, &enditer); gtk_text_buffer_apply_tag_by_name (Denemo.textbuffer, "monospace", &startiter, &enditer); } gtk_text_buffer_set_modified (Denemo.textbuffer, FALSE); } /* output_score_to_buffer */ /** * Write out LilyPond to correspond with the music in the DenemoProject from measure start to measure end * in the current movement or all the movements if all_movements is TRUE. * param PARTNAME if not NULL, print only this parts of this name * * The function works in two passes: the first pass writes out all the * LilyPond music blocks defined by identifiers; the second pass writes out the score blocks (one for * each movement) with the * identifiers placed suitably. */ static void export_lilypond (gchar * thefilename, DenemoProject * gui, gboolean all_movements, gchar * partname, gchar * instrumentation) { GtkTextIter startiter, enditer, iter; gint offset; offset = get_cursor_offset (); output_score_to_buffer (gui, all_movements, partname, instrumentation); GString *filename = g_string_new (thefilename); if (filename) { gtk_text_buffer_get_start_iter (Denemo.textbuffer, &startiter); gtk_text_buffer_get_end_iter (Denemo.textbuffer, &enditer); gchar *lily = gtk_text_buffer_get_text (Denemo.textbuffer, &startiter, &enditer, FALSE); /* Append .ly onto the filename if necessary */ if (strcmp (filename->str + filename->len - 3, ".ly")) g_string_append (filename, ".ly"); /* Now open the file */ FILE *fp; fp = fopen (filename->str, "w"); if (!fp) { warningdialog (_("Could not open output file for writing")); g_warning ("Cannot open %s", filename->str); return; } fprintf (fp, "%s", lily); g_free (lily); fclose (fp); g_string_free (filename, TRUE); } //restore the insertion point gtk_text_buffer_get_iter_at_offset (Denemo.textbuffer, &iter, offset); gtk_text_buffer_place_cursor (Denemo.textbuffer, &iter); } void exportlilypond (gchar * thefilename, DenemoProject * gui, gboolean all_movements) { export_lilypond (thefilename, gui, all_movements, NULL, NULL); } /* output lilypond for the current staff */ void export_lilypond_part (char *filename, DenemoProject * gui, gboolean all_movements) { DenemoStaff *staff = (DenemoStaff *) gui->movement->currentstaff->data; export_lilypond (filename, gui, all_movements, staff->lily_name->str, staff->denemo_name->str); } /* output lilypond for each part into a separate file */ void export_lilypond_parts (char *filename, DenemoProject * gui) { gchar *staff_filename; staffnode *curstaff; DenemoStaff *curstaffstruct; DenemoMovement *si = gui->movement; for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) { curstaffstruct = (DenemoStaff *) curstaff->data; gchar *c = filename + strlen (filename); // find .extension FIXME dots in filename while (*c != '.' && c != filename) c--; if (c != filename) *c = '\0'; else { warningdialog (_("Filename does not have extension")); return; } staff_filename = g_strconcat (filename, "_", curstaffstruct->lily_name->str, ".ly", NULL); *c = '.'; export_lilypond (staff_filename, gui, FALSE, ((DenemoStaff *) curstaff->data)->lily_name->str, ((DenemoStaff *) curstaff->data)->denemo_name->str); } if (staff_filename) g_free (staff_filename); } /* callback on closing lilypond window */ static gboolean lilywindow_closed () { set_toggle ("ToggleLilyText", FALSE); return TRUE; } static gboolean lily_refresh (GtkWidget * item, GdkEventCrossing * e); static gboolean lily_save (G_GNUC_UNUSED GtkWidget * item, G_GNUC_UNUSED GdkEventCrossing * e) { DenemoProject *gui = Denemo.project; //g_debug("Consider Save ... %d %d", gui->lilysync, gui->changecount); // g_signal_handlers_block_by_func (G_OBJECT (SIGNAL_WIDGET), G_CALLBACK (lily_save), NULL); // g_signal_handlers_unblock_by_func (G_OBJECT (SIGNAL_WIDGET), G_CALLBACK (lily_refresh), gui); merge_lily_strings (gui); if (gui->movement) update_drawing_cache (); return FALSE; } static gboolean lily_refresh (G_GNUC_UNUSED GtkWidget * item, G_GNUC_UNUSED GdkEventCrossing * e) { DenemoProject *gui = Denemo.project; //g_debug("Consider Refresh ... %d %d", gui->lilysync, gui->changecount); //g_signal_handlers_block_by_func(G_OBJECT (SIGNAL_WIDGET), G_CALLBACK (lily_refresh), NULL); //g_signal_handlers_unblock_by_func (G_OBJECT (SIGNAL_WIDGET), G_CALLBACK (lily_save), NULL); if (gui->movement->markstaffnum || (gui->lilysync != gui->changecount)) { gui->movement->markstaffnum = 0; //remove selection, else we will only see that bit in LilyText refresh_lily_cb (NULL, gui); } return FALSE; } static void prepend_menu_item (GtkMenuShell * menu, DenemoProject * gui, gchar * text, gpointer callback, gchar * tooltip) { GtkWidget *item; item = gtk_menu_item_new_with_label (text); gtk_widget_set_tooltip_text (item, tooltip); g_signal_connect (item, "activate", G_CALLBACK (callback), gui); gtk_menu_shell_prepend (menu, GTK_WIDGET (item)); gtk_widget_show (GTK_WIDGET (item)); } static gboolean position_display_cursor (G_GNUC_UNUSED GtkWidget * view, GdkEventButton * event) { if (event->button == 1 && (GDK_SHIFT_MASK & event->state)) { GtkTextIter iter; gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &iter, gtk_text_buffer_get_insert (Denemo.textbuffer)); gtk_text_buffer_place_cursor (Denemo.textbuffer, &iter); gint column = gtk_text_iter_get_visible_line_offset (&iter); gint line = gtk_text_iter_get_line (&iter); goto_lilypond_position (line + 1, column); place_cursor_cb (); //this is purely for the side effect of taking off the marking which happens without it. } return FALSE; } static gboolean populate_called (G_GNUC_UNUSED GtkWidget * view, GtkMenuShell * menu) { DenemoProject *gui = Denemo.project; //g_debug("populate called with %p\n", menu); gtk_container_foreach (GTK_CONTAINER (menu), (GtkCallback) (gtk_widget_destroy), NULL); prepend_menu_item (menu, gui, _("Find Current Object"), (gpointer) place_cursor_cb, _("Move the text cursor in this window to the object that the Denemo cursor is on")); prepend_menu_item (menu, gui, _("Insert LilyPond Text"), (gpointer) insert_lilypond_directive, _("Insert LilyPond text at the cursor position.\nWarning! Shift click to position Denemo cursor first")); #ifdef USE_EVINCE prepend_menu_item (menu, gui, _("Typeset this LilyPond text"), (gpointer) typeset_current_layout, _("Typesets the current LilyPond text, which will display in the Print View window. Any errors are shown below in the errors pane.")); #endif //position_display_cursor(); return FALSE; } DenemoObject * get_object_at_lilypond (gint line, gint column) { DenemoProject *gui = Denemo.project; GtkTextIter enditer, iter; gtk_text_buffer_get_end_iter (Denemo.textbuffer, &enditer); gtk_text_buffer_get_start_iter (Denemo.textbuffer, &iter); line--; column++; //needed to avoid stepping back after anchor on directives if (column > 0 && line > 0) { gtk_text_buffer_get_iter_at_line_offset (Denemo.textbuffer, &iter, line, 0); gint maxcol = gtk_text_iter_get_chars_in_line (&iter); gtk_text_iter_set_visible_line_offset (&iter, MIN (maxcol, column)); gtk_text_buffer_place_cursor (Denemo.textbuffer, &iter); GtkTextChildAnchor *anchor = gtk_text_iter_get_child_anchor (&iter); if (anchor && (g_object_get_data (G_OBJECT (anchor), MOVEMENTNUM) == NULL)) anchor = NULL; while ((anchor == NULL) && gtk_text_iter_backward_char (&iter)) { anchor = gtk_text_iter_get_child_anchor (&iter); if (anchor && (g_object_get_data (G_OBJECT (anchor), MOVEMENTNUM) == NULL)) anchor = NULL; } if (anchor) { gint objnum = (intptr_t) g_object_get_data (G_OBJECT (anchor), OBJECTNUM); gint measurenum = (intptr_t) g_object_get_data (G_OBJECT (anchor), MEASURENUM); gint staffnum = (intptr_t) g_object_get_data (G_OBJECT (anchor), STAFFNUM); gint movementnum = (intptr_t) g_object_get_data (G_OBJECT (anchor), MOVEMENTNUM); //g_print ("Getting object from %d, %d as measure %d obj %d\n", line, column, measurenum, objnum); return get_object_by_position (movementnum, staffnum, measurenum, objnum); } } return NULL; } // moves cursor to position indicated by anchor found before line and column, and sets si->target to indicate type of construct there. gboolean goto_lilypond_position (gint line, gint column) { #ifndef USE_EVINCE return FALSE; #else DenemoProject *gui = Denemo.project; GtkTextIter enditer, iter; if (printview_is_stale ()) { gint old = gui->movement->markstaffnum; gui->movement->markstaffnum = 0; refresh_lily_cb (NULL, gui); gui->movement->markstaffnum = old; } if (printview_is_stale ()) play_note (DEFAULT_BACKEND, 0, 9, 69, 300, 100); //g_print ("goto_lilypond_position called for line %d column %d\n", line, column); gtk_text_buffer_get_end_iter (Denemo.textbuffer, &enditer); gtk_text_buffer_get_start_iter (Denemo.textbuffer, &iter); line--; column++; //needed to avoid stepping back after anchor on directives if (column > 0 && line > 0) { gtk_text_buffer_get_iter_at_line_offset (Denemo.textbuffer, &iter, line, 0); gint maxcol = gtk_text_iter_get_chars_in_line (&iter); //g_debug("line %d column %d\n", line, column); //g_debug("line has %d chars\n", maxcol); gtk_text_iter_set_visible_line_offset (&iter, MIN (maxcol, column)); gtk_text_buffer_place_cursor (Denemo.textbuffer, &iter); GtkTextChildAnchor *anchor = gtk_text_iter_get_child_anchor (&iter); // if(anchor) g_print("Initially at anchor %x <%c> type %d\n", anchor, gtk_text_iter_get_char (&iter),g_object_get_data (G_OBJECT (anchor), TARGETTYPE)) ; // else g_print("Not at anchor <%c> ", gtk_text_iter_get_char (&iter)); if (anchor && (g_object_get_data (G_OBJECT (anchor), MOVEMENTNUM) == NULL)) anchor = NULL; while ((anchor == NULL) && gtk_text_iter_backward_char (&iter)) { anchor = gtk_text_iter_get_child_anchor (&iter); if (anchor && (g_object_get_data (G_OBJECT (anchor), MOVEMENTNUM) == NULL)) //g_print("Now At movementless anchor %x <%c> type %d\n", anchor, gtk_text_iter_get_char (&iter),g_object_get_data (G_OBJECT (anchor), TARGETTYPE)), anchor = NULL; //ignore anchors without positional info // else if(anchor) // g_print("Now proper anchor %x <%c> type %d\n", anchor, gtk_text_iter_get_char (&iter),g_object_get_data (G_OBJECT (anchor), TARGETTYPE)); //g_debug("#%c#", gtk_text_iter_get_char (&iter)); } if (anchor) { gint objnum = (intptr_t) g_object_get_data (G_OBJECT (anchor), OBJECTNUM); gint measurenum = (intptr_t) g_object_get_data (G_OBJECT (anchor), MEASURENUM); gint staffnum = (intptr_t) g_object_get_data (G_OBJECT (anchor), STAFFNUM); gint movementnum = (intptr_t) g_object_get_data (G_OBJECT (anchor), MOVEMENTNUM); gint directivenum = (intptr_t) g_object_get_data (G_OBJECT (anchor), DIRECTIVENUM); gint mid_c_offset = (intptr_t) g_object_get_data (G_OBJECT (anchor), MIDCOFFSET); DenemoTargetType type = (intptr_t) g_object_get_data (G_OBJECT (anchor), TARGETTYPE); //g_print("location %d %d %d movement %d, type %d at %d %d \n", objnum, measurenum, staffnum, movementnum, type, line, column); gui->movement->target.objnum = objnum; gui->movement->target.measurenum = measurenum; gui->movement->target.staffnum = staffnum; gui->movement->target.type = type; gui->movement->target.directivenum = directivenum; #ifdef G_OS_WIN32 g_debug ("goto_lilypond_position: anchor located and target set %d %d\n", measurenum, objnum); #endif if (movementnum < 1) { g_warning ("Object %p has no location data", g_object_get_data (G_OBJECT (anchor), OBJECTNODE)); return FALSE; } hide_lyrics (); if (!goto_movement_staff_obj (gui, movementnum, staffnum, measurenum, objnum, 0)) { show_lyrics (); return FALSE; } show_lyrics (); //g_debug("TARGET is %d\n", type); if (type == TARGET_NOTE) { int midcoffset = (intptr_t) g_object_get_data (G_OBJECT (anchor), MIDCOFFSET); //!!!!move cursor to midcoffset This has been lifted from view.c, but there surely should exist a function to do this { //dclef = find_prevailing_clef(gui->movement); This should be dropped from scheme_cursor_to_note() as well I guess. gui->movement->cursor_y = mid_c_offset; gui->movement->staffletter_y = offsettonumber (gui->movement->cursor_y); displayhelper (gui); } gui->movement->target.mid_c_offset = midcoffset; } #ifdef G_OS_WIN32 g_debug ("goto_lilypond_position: Success\n"); #endif return TRUE; } else { play_note (DEFAULT_BACKEND, 0, 9, 43, 300, 127); g_warning ("Anchor not found"); } } //if reasonable column and line number return FALSE; #endif } gint get_cursor_offset (void) { GtkTextIter cursor; gint offset; gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &cursor, gtk_text_buffer_get_insert (Denemo.textbuffer)); offset = gtk_text_iter_get_offset (&cursor); //g_print("Offset %d\n", offset); return offset; } static gboolean lily_keypress (G_GNUC_UNUSED GtkWidget * w, GdkEventKey * event, gboolean after) { DenemoProject *gui = Denemo.project; GtkTextIter cursor; static gint offset; if (after) { //g_print("Called after for %d\n", offset); if (offset) { gtk_text_buffer_get_iter_at_offset (Denemo.textbuffer, &cursor, offset); gtk_text_buffer_place_cursor (Denemo.textbuffer, &cursor); offset = 0; } return TRUE; } offset = 0; gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &cursor, gtk_text_buffer_get_insert (Denemo.textbuffer)); #ifndef TEXTBUFFER_BUG_FIXED //FIXME workaround for a nasty bug, presumably in GTK, where the back arrow gets a wrong char count, off end of line if ((event->keyval == 65361) && (gtk_text_iter_get_line_offset (&cursor) < 2)) { g_debug ("avoiding gtk bug..."); GtkTextTag *tag = gtk_text_tag_table_lookup (tagtable, "invisible"); if (tag && gtk_text_iter_has_tag (&cursor, tag)) { while (gtk_text_iter_backward_cursor_position (&cursor) && gtk_text_iter_has_tag (&cursor, tag)) gtk_text_buffer_place_cursor (Denemo.textbuffer, &cursor); g_debug ("backed up"); return TRUE; } if (gtk_text_iter_backward_cursor_position (&cursor)) gtk_text_buffer_place_cursor (Denemo.textbuffer, &cursor); return TRUE; } #endif if (event->state & (GDK_CONTROL_MASK)) { switch (event->keyval) { case 'z': g_warning ("Undo is disabled because gtk source view crashes with its use\n"); return TRUE; //Do not allow Ctrl-Z undo as it breaks a lot of stuff case 'c': return FALSE; case 'v': return FALSE; case 'x': return FALSE; default: return TRUE; } } // if you have a visible marker you do this gtk_text_iter_backward_cursor_position(&cursor); GtkTextChildAnchor *anchor = gtk_text_iter_get_child_anchor (&cursor); //g_print("Got a keypress event at anchor %p\n", anchor);g_print("Initially the offset %d at anchor %p\n", gtk_text_iter_get_offset (&cursor), anchor); //g_print("The character is %x keyval %x at %d\n", (guint)gdk_keyval_to_unicode(event->keyval), event->keyval, gtk_text_iter_get_line_offset(&cursor)); if (anchor) { gint objnum = (intptr_t) g_object_get_data (G_OBJECT (anchor), OBJECTNUM); gint measurenum = (intptr_t) g_object_get_data (G_OBJECT (anchor), MEASURENUM); gint staffnum = (intptr_t) g_object_get_data (G_OBJECT (anchor), STAFFNUM); gint movementnum = (intptr_t) g_object_get_data (G_OBJECT (anchor), MOVEMENTNUM); // g_print("location %d %d %d %d\n", objnum, measurenum, staffnum, movementnum); if (movementnum < 1) return FALSE; if (!goto_movement_staff_obj (gui, movementnum, staffnum, measurenum, objnum, 0)) return FALSE; gchar *key = g_strdup_printf ("%c", gdk_keyval_to_unicode (event->keyval)); GList *curobjnode = gui->movement->currentobject; DenemoObject *obj = curobjnode ? curobjnode->data : NULL; if (obj && *key > 0x1f) { switch (obj->type) { case LILYDIRECTIVE: gtk_text_iter_forward_char (&cursor); // past anchor GString **target = g_object_get_data (G_OBJECT (anchor), GSTRINGP); if (!*target) { *target = g_string_new (key); //g_debug("new string %s (%x)\n", key, *key); } else { gchar *lily = get_text (anchor); g_string_assign (*target, lily); //FIXME free original g_free (lily); g_string_prepend (*target, key); g_object_set_data (G_OBJECT (anchor), ORIGINAL, get_text (anchor)); //g_debug("prepended %s (%x)\n", key, *key); } score_status (gui, TRUE); refresh_lily_cb (NULL, gui); gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &cursor, gtk_text_buffer_get_insert (Denemo.textbuffer)); if (gtk_text_iter_forward_char (&cursor)) gtk_text_buffer_place_cursor (Denemo.textbuffer, &cursor); offset = get_cursor_offset (); g_free (key); return TRUE; case CHORD: default: { GString **target = g_object_get_data (G_OBJECT (anchor), GSTRINGP); if (target && *target) { //g_print("Target is %s\n", (*target)->str); g_string_prepend (*target, key); g_object_set_data (G_OBJECT (anchor), ORIGINAL, get_text (anchor)); offset = get_cursor_offset (); score_status (gui, TRUE); refresh_lily_cb (NULL, gui); //g_print("After lily refresh %d", offset); gtk_text_buffer_get_iter_at_offset (Denemo.textbuffer, &cursor, offset); gtk_text_buffer_place_cursor (Denemo.textbuffer, &cursor); if (gtk_text_iter_forward_char (&cursor) && gtk_text_iter_forward_char (&cursor)) gtk_text_buffer_place_cursor (Denemo.textbuffer, &cursor); offset = get_cursor_offset (); // g_print("resetting lily refresh %d", offset); } else { DenemoObject *lilyobj = lily_directive_new (key); ((DenemoDirective *) lilyobj->object)->tag = g_string_new ("LilyInsert"); //g_debug("inserted a lilydirective %s (%x)\n", key, *key); // offset = gtk_text_iter_get_offset (&cursor); // g_print("The offset %d at anchor %p\n", offset, anchor); offset = get_cursor_offset (); object_insert (gui, lilyobj); gtk_text_buffer_get_iter_at_offset (Denemo.textbuffer, &cursor, offset); gtk_text_buffer_place_cursor (Denemo.textbuffer, &cursor); displayhelper (gui); // gtk_text_buffer_get_iter_at_mark (Denemo.textbuffer, &cursor, gtk_text_buffer_get_insert (Denemo.textbuffer)); // g_print("Before advancing %d\n", gtk_text_iter_get_offset (&cursor)); if (gtk_text_iter_forward_char (&cursor) && gtk_text_iter_forward_char (&cursor)) gtk_text_buffer_place_cursor (Denemo.textbuffer, &cursor); // g_print("after advancing %d\n", gtk_text_iter_get_offset (&cursor)); refresh_lily_cb (NULL, gui); // g_print ("After refresh %d\n\n", get_cursor_offset()); offset = get_cursor_offset (); //if (gtk_text_iter_forward_char (&cursor) && gtk_text_iter_forward_char (&cursor)) // gtk_text_buffer_place_cursor (Denemo.textbuffer, &cursor); } g_free (key); return TRUE; } } // switch obj->type } //if useful keypress?? g_free (key); } //if cursor is at anchor return FALSE; //let the normal handler have the keypress } static void create_console (GtkWidget * box) { //GtkWidget *vpaned = gtk_vpaned_new (); //gtk_container_set_border_width (GTK_CONTAINER(vpaned), 5); //gtk_box_pack_start (GTK_BOX (box), vpaned, FALSE, TRUE, 0); if (Denemo.console) return; Denemo.console = gtk_text_view_new (); GtkWidget *sw = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (box), sw, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER (sw), Denemo.console); gtk_widget_show_all (sw); } void drag_begin (void) { g_message ("Drag begin"); } void init_lilypond_buffer (void) { tagtable = (GtkTextTagTable *) gtk_text_tag_table_new (); GtkTextTag *t; t = gtk_text_tag_new ("system_invisible"); g_object_set (G_OBJECT (t), "invisible", TRUE, NULL); gtk_text_tag_table_add (tagtable, t); t = gtk_text_tag_new (INEDITABLE); g_object_set (G_OBJECT (t), "editable", FALSE, NULL); gtk_text_tag_table_add (tagtable, t); t = gtk_text_tag_new (HIGHLIGHT); g_object_set (G_OBJECT (t), "background", "light gray", NULL); gtk_text_tag_table_add (tagtable, t); t = gtk_text_tag_new (ERRORTEXT); g_object_set (G_OBJECT (t), "background", "pink", NULL); gtk_text_tag_table_add (tagtable, t); t = gtk_text_tag_new ("bold"); g_object_set (G_OBJECT (t), "weight", PANGO_WEIGHT_BOLD, "family", "monospace", NULL); gtk_text_tag_table_add (tagtable, t); t = gtk_text_tag_new ("monospace"); g_object_set (G_OBJECT (t), "family", "monospace", NULL); gtk_text_tag_table_add (tagtable, t); Denemo.textbuffer = (GtkTextBuffer *) gtk_source_buffer_new (tagtable); gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (Denemo.textbuffer), TRUE); } void create_lilywindow (void) { gchar *helptext = _("Shift left click in music in this window to move the Denemo cursor the corresponding position\n" "Using arrows to move the cursor in the music here also moves the Denemo cursor.\n" "Right click for menu.\n" "Turn off continuous typesetting before using the score layout options."); Denemo.textwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); //gtk_window_set_position (GTK_WINDOW (Denemo.textwindow), GTK_WIN_POS_NONE); gtk_window_set_default_size (GTK_WINDOW (Denemo.textwindow), 800, 600); gtk_window_set_title (GTK_WINDOW (Denemo.textwindow), "LilyPond Text - Denemo"); g_signal_connect (G_OBJECT (Denemo.textwindow), "delete-event", G_CALLBACK (lilywindow_closed), NULL); #if GTK_MAJOR_VERSION == 2 GtkWidget *top_pane = (GtkWidget *) gtk_vpaned_new (); #else GtkWidget *top_pane = (GtkWidget *) gtk_paned_new (GTK_ORIENTATION_VERTICAL); #endif GtkWidget *vbox = (GtkWidget *) gtk_vbox_new (FALSE, 8); gtk_paned_add2 (GTK_PANED (top_pane), vbox); //gtk_container_add (GTK_CONTAINER (Denemo.textwindow), top_pane); gtk_container_add (GTK_CONTAINER (Denemo.textwindow), top_pane); create_console (vbox); GtkWidget *view = (GtkWidget *) gtk_source_view_new (); GtkWidget *sw = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_widget_set_tooltip_text (sw, helptext); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_paned_add1 (GTK_PANED (top_pane), sw); gtk_container_add (GTK_CONTAINER (sw), view); gtk_paned_set_position (GTK_PANED (top_pane), 500); gtk_widget_show_all (top_pane); gtk_source_view_set_show_line_numbers (GTK_SOURCE_VIEW (view), TRUE); gtk_source_view_set_highlight_current_line (GTK_SOURCE_VIEW (view), TRUE); gtk_source_view_set_show_line_marks (GTK_SOURCE_VIEW (view), TRUE); Denemo.textview = (GtkTextView *) view; g_signal_connect (G_OBJECT (Denemo.textview), "key-press-event", G_CALLBACK (lily_keypress), NULL); g_signal_connect_after (G_OBJECT (Denemo.textview), "key-release-event", G_CALLBACK (lily_keypress), GINT_TO_POINTER (TRUE)); g_signal_connect_after (G_OBJECT (Denemo.textview), "populate-popup", G_CALLBACK (populate_called), NULL); g_signal_connect (G_OBJECT (Denemo.textview), "button-release-event", G_CALLBACK (position_display_cursor), NULL); /* g_object_set_data(G_OBJECT (SIGNAL_WIDGET),"enter-signal", (gpointer)id); */ gtk_text_view_set_buffer (GTK_TEXT_VIEW (Denemo.textview), Denemo.textbuffer); //gui->lilysync = G_MAXUINT;//buffer not yet up to date g_signal_connect (G_OBJECT (SIGNAL_WIDGET), LEAVE_NOTIFY_EVENT, G_CALLBACK (lily_save), NULL); g_signal_connect (G_OBJECT (SIGNAL_WIDGET), ENTER_NOTIFY_EVENT, G_CALLBACK (lily_refresh), NULL); //g_signal_handlers_block_by_func(G_OBJECT (SIGNAL_WIDGET), G_CALLBACK (lily_refresh), NULL); } denemo-2.2.0/src/export/PaxHeaders.19168/print.c0000644000000000000000000000013213135434036016141 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.299981806 30 ctime=1500919914.279981805 denemo-2.2.0/src/export/print.c0000644000175000017500000010103413135434036020011 0ustar00jjbenhamjjbenham00000000000000/* Print.c * * printing support for GNU Denemo * outputs to a pdf or png file * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2001-2005 Adam Tee, 2009, 2010, 2011 Richard Shann */ #include #include #include #include #include #include #include #include #include #ifdef HAVE_SYS_WAIT_H #include #endif #ifdef HAVE_WAIT_H #include #endif #include "export/print.h" #include "printview/printview.h" #include "printview/markupview.h" #include "core/prefops.h" #include "export/exportlilypond.h" #include "core/utils.h" #if GTK_MAJOR_VERSION==3 typedef enum { GDK_RGB_DITHER_NONE, GDK_RGB_DITHER_NORMAL, GDK_RGB_DITHER_MAX } GdkRgbDither; #endif typedef struct lilyversion { gint major; gint minor; } lilyversion; gint LilyPond_stderr = -1; //A file descriptor to pipe for LilyPond's stderr GError *lily_err = NULL; GPid previewerpid = GPID_NONE; WysiwygInfo* get_wysiwyg_info(){ static WysiwygInfo Ww; //Wysywyg information return &Ww; } void initialize_print_status (void) { Denemo.printstatus = (DenemoPrintInfo*)g_malloc0(sizeof (DenemoPrintInfo)); Denemo.printstatus->printpid = GPID_NONE; Denemo.printstatus->typeset_type = TYPESET_ALL_MOVEMENTS; Denemo.printstatus->printbasename[0] = g_build_filename (locateprintdir (), "denemoprintA", NULL); Denemo.printstatus->printbasename[1] = g_build_filename (locateprintdir (), "denemoprintB", NULL); Denemo.printstatus->printname_pdf[0] = g_strconcat (Denemo.printstatus->printbasename[0], ".pdf", NULL); Denemo.printstatus->printname_svg[0] = g_strconcat (Denemo.printstatus->printbasename[0], ".svg", NULL); #ifdef G_OS_WIN32 Denemo.printstatus->printname_midi[0] = g_strconcat (Denemo.printstatus->printbasename[0], ".mid", NULL);//LilyPond outputs .mid files for midi #else Denemo.printstatus->printname_midi[0] = g_strconcat (Denemo.printstatus->printbasename[0], ".midi", NULL); #endif Denemo.printstatus->printname_ly[0] = g_strconcat (Denemo.printstatus->printbasename[0], ".ly", NULL); Denemo.printstatus->printname_pdf[1] = g_strconcat (Denemo.printstatus->printbasename[1], ".pdf", NULL); Denemo.printstatus->printname_svg[1] = g_strconcat (Denemo.printstatus->printbasename[1], ".svg", NULL); #ifdef G_OS_WIN32 Denemo.printstatus->printname_midi[1] = g_strconcat (Denemo.printstatus->printbasename[1], ".mid", NULL);//LilyPond outputs .mid files for midi #else Denemo.printstatus->printname_midi[1] = g_strconcat (Denemo.printstatus->printbasename[1], ".midi", NULL); #endif Denemo.printstatus->printname_ly[1] = g_strconcat (Denemo.printstatus->printbasename[1], ".ly", NULL); Denemo.printstatus->error_file = NULL; } static void advance_printname () { Denemo.printstatus->cycle = !Denemo.printstatus->cycle; /*gint success =*/ g_unlink (Denemo.printstatus->printname_pdf[Denemo.printstatus->cycle]); g_unlink (Denemo.printstatus->printname_svg[Denemo.printstatus->cycle]); //g_debug("Removed old pdf file %s %d\n",Denemo.printstatus->printname_pdf[Denemo.printstatus->cycle], success); } /*** * make sure lilypond is in the path defined in the preferences */ /* UNUSED gboolean check_lilypond_path (DenemoProject * gui) { gchar *lilypath = g_find_program_in_path (Denemo.prefs.lilypath->str); if (lilypath == NULL) { // show a warning dialog GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW (Denemo.window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, _("Could not find %s"), Denemo.prefs.lilypath->str); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("Please edit lilypond path " "in the preferences.")); gtk_dialog_run (GTK_DIALOG (dialog)); // free the memory and return gtk_widget_destroy (dialog); return 0; } else return 1; } */ static int version_check (lilyversion base, lilyversion installed) { if (base.major > installed.major) return LESSER; if (base.major < installed.major) return GREATER; if (base.minor == installed.minor) return SAME; if (base.minor > installed.minor) return LESSER; if (base.minor < installed.minor) return GREATER; /* if none of the above something is wrong */ return -1; } static lilyversion string_to_lilyversion (char *string) { lilyversion version = { 2, 0 }; char **token; const char delimiters[] = "."; if (string == NULL || *string == 0) return version; /* split string */ token = g_strsplit (string, delimiters, 2); /* get major version number */ if (token[0]) version.major = atoi (token[0]); /* get minor version number */ if (token[1]) version.minor = atoi (token[1]); g_strfreev (token); //intf("\nstring_to_lilyversion() major = %d minor = %d\n",version.major, version.minor); return version; } /* UNUSED static gchar * regex_parse_version_number (const gchar * str) { GRegex *regex = NULL; GMatchInfo *match_info; GString *lilyversion = g_string_new (""); regex = g_regex_new ("\\d.\\d\\d", 0, 0, NULL); g_regex_match (regex, str, 0, &match_info); if (g_match_info_matches (match_info)) { g_string_append (lilyversion, g_match_info_fetch (match_info, 0)); } g_match_info_free (match_info); g_regex_unref (regex); return g_string_free (lilyversion, FALSE); } */ gchar * get_lily_version_string (void) { GString *ver = Denemo.project->lilycontrol.lilyversion; if (ver && (ver->len > 1)) return ver->str; return INSTALLED_LILYPOND_VERSION; } int check_lily_version (gchar * version) { gchar *version_string = get_lily_version_string (); lilyversion installed_version = string_to_lilyversion (version_string); lilyversion check_version = string_to_lilyversion (version); return version_check (check_version, installed_version); } /* returns the base name (/tmp/Denemo????/denemoprint usually) used as a base filepath for printing. The returned string should not be freed. */ gchar * get_printfile_pathbasename (void) { if (Denemo.printstatus->printbasename[0] == NULL) advance_printname (); return Denemo.printstatus->printbasename[Denemo.printstatus->cycle]; } /* truncate epoint after 20 lines replacing the last three chars in that case with dots */ static void truncate_lines (gchar * epoint) { gint i; for (i = 0; i < 20 && *epoint; i++) { while (*epoint && *epoint != '\n') epoint++; if (*epoint) epoint++; } if (epoint) *epoint-- = '\0'; /* replace last three chars with ... This is always possible if epoint is not NULL */ if (*epoint) for (i = 3; i > 0; i--) *epoint-- = '.'; } /*** * Run the command line convert-ly to get the lilypond output * current with the version running on the users computer * */ /* UNUSED void convert_ly (gchar * lilyfile) { GError *err = NULL; #ifdef G_OS_WIN32 gchar *conv_argv[] = { "python" "convert-ly.py", "-e", lilyfile, NULL }; #else gchar *conv_argv[] = { "convert-ly", "-e", lilyfile, NULL }; #endif g_spawn_sync (locateprintdir (), // dir conv_argv, NULL, // env G_SPAWN_SEARCH_PATH, NULL, // child setup func NULL, // user data NULL, // stdout NULL, // stderr NULL, &err); if (err != NULL) { g_warning ("%s", err->message); if (err) g_error_free (err); err = NULL; } } */ /* look in message for :line:col: where line and col are integers and return point where found or NULL if none*/ static gchar * get_error_point (gchar *bytes, gint *line, gint *col) { gchar *epoint; gchar *message = bytes; while (*message) { while (*message && (*message!=':')) message++; if (*message==':') { epoint = message; *line = atoi (message+1); if (*line == 0) { message++; continue; } message++; while (*message && g_ascii_isdigit (*message)) message++; if (*message==':') { *col = atoi (message+1); if (*col == 0) { message++; continue; } message++; while (*message && g_ascii_isdigit (*message)) message++; g_print ("%c", *message); if (*message==':') { gchar *colon = epoint; *colon = 0; while ((epoint != bytes) && (*epoint != '\n')) epoint--;//FIXME is epoint now referring to the main file or some include file, line col will not work for an include file if(strcmp (Denemo.printstatus->printname_ly[Denemo.printstatus->cycle], epoint)) // error is in an include file Denemo.printstatus->error_file = g_strdup (epoint); *colon = ':'; return epoint; } } else { message++;g_print ("%c", *message); continue; } } else { message++;g_print ("%c", *message); continue; } } return NULL; } void process_lilypond_errors (gchar * filename) { Denemo.printstatus->invalid = 0; gchar *logfile = g_strconcat (filename, ".log", NULL); gchar *epoint = NULL; gchar *bytes; gint numbytes = g_file_get_contents (logfile, &bytes, NULL, NULL); g_free (logfile); if (bytes) numbytes=strlen (bytes); else return; //g_print("\nLilyPond error messages\n8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8>< %s \n8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><\n", bytes); gint line, column; epoint=get_error_point (bytes, &line, &column); if (epoint) { truncate_lines (epoint); /* truncate epoint if it has too many lines */ line--; /* make this 0 based */ if (line >= gtk_text_buffer_get_line_count (Denemo.textbuffer)) warningdialog (_("Spurious line number")), line = 0; /* gchar *errmsg = g_strdup_printf("Error at line %d column %d %d", line,column, cnv); */ /* warningdialog(errmsg); */ console_output (epoint); if (Denemo.textbuffer) { set_lily_error (line + 1, column); } goto_lilypond_position (line + 1, column); Denemo.printstatus->invalid = 2; //print_is_valid = FALSE; if (Denemo.printarea) gtk_widget_queue_draw (Denemo.printarea); // FIXME this causes a lock-up warningdialog(_("Typesetter detected errors. Cursor is position on the error point.\nIf in doubt delete and re-enter the measure.")); } else { // console_output (_("Done")); set_lily_error (0, 0); /* line 0 meaning no line */ } highlight_lily_error (); if (lily_err != NULL) { if (*bytes) console_output (bytes); warningdialog (_("Could not execute lilypond - check Edit->preferences → externals → lilypond setting\nand lilypond installation")); g_warning ("%s", lily_err->message); if (lily_err) g_error_free (lily_err); lily_err = NULL; } g_free (bytes); } static void open_viewer (gint status, gchar * filename) { if (Denemo.printstatus->printpid == GPID_NONE) return; GError *err = NULL; gchar *printfile; gchar **arguments; progressbar_stop (); console_output (_("Done")); g_spawn_close_pid (Denemo.printstatus->printpid); Denemo.printstatus->printpid = GPID_NONE; //normal_cursor(); process_lilypond_errors (filename); #if GLIB_CHECK_VERSION(2,34,0) { GError* err = NULL; status = g_spawn_check_exit_status (status, &err); if(!status) g_warning ("Lilypond did not end successfully: %s", err->message); } #endif if (status) { g_warning /* a warning dialog causes deadlock in threaded version of program */ ("LilyPond engraver failed - See highlighting in LilyPond window (open the LilyPond window and right click to print)"); } else { printfile = g_strconcat (filename, ".png", NULL); if (!g_file_test (printfile, G_FILE_TEST_EXISTS)) { //FIXME use filename in message g_warning ("Failed to find %s, check permissions", (gchar *) printfile); g_free (printfile); return; } gchar *png[] = { Denemo.prefs.imageviewer->str, printfile, NULL }; arguments = png; if (Denemo.prefs.imageviewer->len == 0) { gboolean ok = run_file_association (printfile); if (!ok) { err = g_error_new (G_FILE_ERROR, -1, "Could not run file assoc for %s", ".png"); g_warning ("Could not run the file association for a %s file", ".png"); } } else { g_spawn_async_with_pipes (locateprintdir (), /* dir */ arguments, NULL, /* env */ G_SPAWN_SEARCH_PATH, /* search in path for executable */ NULL, /* child setup func */ NULL, /* user data */ &previewerpid, /* FIXME &pid see g_spawn_close_pid(&pid) */ NULL, NULL, NULL, &err); } if (err != NULL) { warningdialog (err->message); g_warning ("%s", err->message); g_error_free (err); err = NULL; } g_free (printfile); } } static void open_pngviewer (G_GNUC_UNUSED GPid pid, gint status, gchar * filename) { open_viewer (status, filename); } static gboolean call_stop_lilypond (void) { progressbar_stop (); stop_lilypond (); return TRUE; } static gint run_lilypond (gchar ** arguments) { static gboolean old_error = FALSE; gint error = 0; if (old_error) { g_string_assign (Denemo.input_filters, ""); gtk_widget_show (Denemo.input_label); write_input_status (); old_error = FALSE; } if (Denemo.printstatus->background == STATE_NONE) progressbar (_("Denemo Typesetting"), call_stop_lilypond); if (lily_err) { g_warning ("Old error message from launching lilypond still present - message was %s\nDiscarding...", lily_err->message); g_error_free (lily_err); lily_err = NULL; } console_output (NULL); console_output (_("Typesetting ...")); gboolean lilypond_launch_success = g_spawn_async_with_pipes (locateprintdir (), /* dir */ arguments, NULL, /* env */ G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, NULL, /* child setup func */ NULL, /* user data */ &Denemo.printstatus->printpid, NULL, NULL, /* stdout */ NULL, /* stderr */ &lily_err); if (lily_err) { g_critical ("Error launching lilypond! Message is %s", lily_err->message); g_string_printf (Denemo.input_filters, "%s%s%s", "", _("Error: see LilyPond window"), ""); gtk_widget_show (Denemo.input_label); write_input_status (); console_output (g_strdup_printf("Error launching lilypond! Message is %s", lily_err->message)); g_error_free (lily_err); lily_err = NULL; error = -1; old_error = TRUE;//clear the status bar on next attempt... } if (!lilypond_launch_success) { //g_critical ("Error executing lilypond. Perhaps Lilypond is not installed or its path is not correctly configured. %s", lily_err->message); error = -1; } if (error) progressbar_stop (); return error; } gboolean stop_lilypond () { if (Denemo.printstatus->printpid != GPID_NONE) { kill_process (Denemo.printstatus->printpid); Denemo.printstatus->printpid = GPID_NONE; } return FALSE; //do not call again } static void generate_lilypond (gchar * lilyfile, gboolean part_only, gboolean all_movements) { DenemoProject *gui = Denemo.project; if (part_only) export_lilypond_part (lilyfile, gui, all_movements); else exportlilypond (lilyfile, gui, all_movements); } static void run_lilypond_for_pdf (gchar * filename, gchar * lilyfile) { static gchar *include = NULL; static gchar *local_include = NULL; if(!include) { local_include = g_strdup_printf ("-I%s", g_build_filename(get_user_data_dir(TRUE), get_local_dir (DENEMO_DIR_LILYPOND_INCLUDE), NULL)); include = g_strdup_printf ("-I%s", get_system_dir (DENEMO_DIR_LILYPOND_INCLUDE)); } /*arguments to pass to lilypond to create a pdf for printing */ gchar *arguments[] = { Denemo.prefs.lilypath->str, "-dgui", "--loglevel=WARN", "--pdf", local_include, include, "-o", filename, lilyfile, NULL }; run_lilypond (arguments); } static void run_lilypond_for_svg (gchar * filename, gchar * lilyfile) { static gchar *include = NULL; static gchar *local_include = NULL; if(!include) { local_include = g_strdup_printf ("-I%s", g_build_filename(get_user_data_dir(TRUE), get_local_dir (DENEMO_DIR_LILYPOND_INCLUDE), NULL)); include = g_strdup_printf ("-I%s", get_system_dir (DENEMO_DIR_LILYPOND_INCLUDE)); } /*arguments to pass to lilypond to create a svg for printing */ gchar *arguments[] = { Denemo.prefs.lilypath->str, "-dgui", "--loglevel=WARN", "-dno-point-and-click", "-ddelete-intermediate-files", "-dbackend=svg", local_include, include, "-o", filename, lilyfile, NULL }; run_lilypond (arguments); } /* create pdf of current score, optionally restricted to voices/staffs whose name match the current one. * generate the lilypond text (on disk) * Fork and run lilypond */ void create_pdf (gboolean part_only, gboolean all_movements) { if (Denemo.printstatus->printpid != GPID_NONE) { if (confirm (_("Already Typesetting"), _("Abandon this typeset?"))) { if (Denemo.printstatus->printpid != GPID_NONE) //It could have died while the user was making up their mind... kill_process (Denemo.printstatus->printpid); Denemo.printstatus->printpid = GPID_NONE; } else { warningdialog (_("Cancelled")); return; } } get_wysiwyg_info()->stage = STAGE_NONE; advance_printname (); gchar *filename = Denemo.printstatus->printbasename[Denemo.printstatus->cycle]; gchar *lilyfile = Denemo.printstatus->printname_ly[Denemo.printstatus->cycle]; g_remove (lilyfile); Denemo.printstatus->invalid = 0; g_free (Denemo.printstatus->error_file);Denemo.printstatus->error_file = NULL; generate_lilypond (lilyfile, part_only, all_movements); run_lilypond_for_pdf (filename, lilyfile); } /* create pdf of current score, optionally restricted to voices/staffs whose name match the current one. * generate the lilypond text (on disk) * Fork and run lilypond */ void create_svg (gboolean part_only, gboolean all_movements) { if (Denemo.printstatus->printpid != GPID_NONE) { if (confirm (_("Already Typesetting"), _("Abandon this typeset?"))) { if (Denemo.printstatus->printpid != GPID_NONE) //It could have died while the user was making up their mind... kill_process (Denemo.printstatus->printpid); Denemo.printstatus->printpid = GPID_NONE; } else { warningdialog (_("Cancelled")); return; } } get_wysiwyg_info()->stage = TypesetForPlaybackView; advance_printname (); gchar *filename = Denemo.printstatus->printbasename[Denemo.printstatus->cycle]; gchar *lilyfile = Denemo.printstatus->printname_ly[Denemo.printstatus->cycle]; g_remove (lilyfile); Denemo.printstatus->invalid = 0; g_free (Denemo.printstatus->error_file);Denemo.printstatus->error_file = NULL; generate_lilypond (lilyfile, part_only, all_movements); run_lilypond_for_svg (filename, lilyfile); } void create_pdf_for_lilypond (gchar *lilypond) { #ifndef USE_EVINCE g_debug("This feature requires denemo to be built with evince"); #else if (Denemo.printstatus->printpid != GPID_NONE) return; get_wysiwyg_info()->stage = STAGE_NONE; advance_printname (); gchar *filename = Denemo.printstatus->printbasename[Denemo.printstatus->cycle]; gchar *lilyfile = Denemo.printstatus->printname_ly[Denemo.printstatus->cycle]; g_remove (lilyfile); g_file_set_contents (lilyfile, lilypond, -1, NULL); Denemo.printstatus->invalid = 0; g_free (Denemo.printstatus->error_file);Denemo.printstatus->error_file = NULL; run_lilypond_for_pdf (filename, lilyfile); g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) markupview_finished, (gpointer) (FALSE)); #endif } /** * Dialog function used to select measure range * */ void printrangedialog (DenemoProject * gui) { GtkWidget *dialog; GtkWidget *label; GtkWidget *hbox; GtkWidget *from_measure; GtkWidget *to_measure; dialog = gtk_dialog_new_with_buttons (_("Print Excerpt Range"), GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); hbox = gtk_hbox_new (FALSE, 8); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), hbox); gint max_measure = g_list_length (((DenemoStaff *) (gui->movement->thescore->data))->themeasures); label = gtk_label_new (_("Print from Measure")); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); from_measure = gtk_spin_button_new_with_range (1.0, (gdouble) max_measure, 1.0); gtk_box_pack_start (GTK_BOX (hbox), from_measure, TRUE, TRUE, 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (from_measure), (gdouble) gui->movement->selection.firstmeasuremarked); label = gtk_label_new (_("to")); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); to_measure = gtk_spin_button_new_with_range (1.0, (gdouble) max_measure, 1.0); gtk_box_pack_start (GTK_BOX (hbox), to_measure, TRUE, TRUE, 0); // gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), to_measure, TRUE, TRUE, 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (to_measure), (gdouble) gui->movement->selection.lastmeasuremarked); gtk_widget_show (hbox); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { gui->movement->selection.firstmeasuremarked = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (from_measure)); gui->movement->selection.lastmeasuremarked = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (to_measure)); //gtk_widget_destroy (dialog); } else { gui->movement->selection.firstmeasuremarked = gui->movement->selection.lastmeasuremarked = 0; } if (gui->movement->selection.firstmeasuremarked) { gui->movement->markstaffnum = gui->movement->selection.firststaffmarked = 1; gui->movement->selection.laststaffmarked = g_list_length (gui->movement->thescore); } gtk_widget_destroy (dialog); } static void rm_temp_files (gchar * file, gpointer free_only) { //g_debug("\n%s Deleting temp file %s\n",free_only?"Not":"", file); if (!free_only) g_remove (file); g_free (file); } void printpng_finished (G_GNUC_UNUSED GPid pid, G_GNUC_UNUSED gint status, GList * filelist) { g_debug ("printpng_finished\n"); g_list_foreach (filelist, (GFunc) rm_temp_files, FALSE); g_list_free (filelist); g_spawn_close_pid (Denemo.printstatus->printpid); Denemo.printstatus->printpid = GPID_NONE; progressbar_stop (); infodialog (_("Your PNG file has now been created")); } static void printpdf_finished (G_GNUC_UNUSED GPid pid, G_GNUC_UNUSED gint status, GList * filelist) { if (filelist) { g_list_foreach (filelist, (GFunc) rm_temp_files, FALSE); g_list_free (filelist); } g_spawn_close_pid (Denemo.printstatus->printpid); Denemo.printstatus->printpid = GPID_NONE; progressbar_stop (); infodialog (_("Your PDF file has now been created")); } static void prepare_preview (GPid pid, gint status, GList * filelist) { open_pngviewer (pid, status, (gchar *) get_printfile_pathbasename ()); printpng_finished (pid, status, (GList *) filelist); } /** * Does all the export pdf work. * calls exportmudela and then * runs lilypond to a create a filename.pdf * * @param filename filename to save score to * @param finish callback after creating png or if NULL, wait for finish before returning. * @param gui pointer to the DenemoProject structure */ void export_png (gchar * filename, GChildWatchFunc finish, DenemoProject * gui) { gchar *basename; gchar *lilyfile; gchar *epsfile; gchar *epsfile2; gchar *texfile; gchar *texifile; gchar *countfile; GList *filelist = NULL; /* get the intended resolution of the png */ gchar *resolution = g_strdup_printf ("-dresolution=%d", (int) Denemo.prefs.resolution); /* create temp file names */ basename = get_printfile_pathbasename (); lilyfile = g_strconcat (basename, ".ly", NULL); epsfile = g_strconcat (filename, ".eps", NULL); epsfile2 = g_strconcat (filename, "-1.eps", NULL); texfile = g_strconcat (filename, "-systems.tex", NULL); texifile = g_strconcat (filename, "-systems.texi", NULL); countfile = g_strconcat (filename, "-systems.count", NULL); /* create a list of files that need to be deleted */ filelist = g_list_append (filelist, lilyfile); filelist = g_list_append (filelist, epsfile); filelist = g_list_append (filelist, epsfile2); filelist = g_list_append (filelist, texfile); filelist = g_list_append (filelist, texifile); filelist = g_list_append (filelist, countfile); /* generate the lilypond file */ gui->lilysync = G_MAXUINT; exportlilypond (lilyfile, gui, finish == (GChildWatchFunc) printpng_finished ? TRUE : FALSE); /* create arguments needed to pass to lilypond to create a png */ gchar *arguments[] = { Denemo.prefs.lilypath->str, "-dgui", "--loglevel=WARN", "--png", "-dbackend=eps", resolution, "-o", filename, lilyfile, NULL }; gchar* output = g_strconcat(filename, ".png", NULL); g_debug("Generating %s from Lilypond", output); /* generate the png file */ if (finish) { gint error = run_lilypond (arguments); if (!error) g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) finish, (gchar *) filelist); if(!g_file_test(output, G_FILE_TEST_EXISTS)) g_critical("Lilypond has not generated %s", output); } else { GError *err = NULL; gint ret = 0; gboolean success = g_spawn_sync (locateprintdir (), /* dir */ arguments, NULL, /* env */ G_SPAWN_SEARCH_PATH, NULL, /* child setup func */ NULL, /* user data */ NULL, /* stdout */ NULL, /* stderr */ &ret, &err); if(!success) g_warning ("An error happened during lilypond launching: %s", err->message); if(ret != 0) g_debug ("Lilypond did not end successfully for file %s", filename); //These are in tmpdir and can be used for the .eps file, so don't delete them //g_list_foreach(filelist, (GFunc)rm_temp_files, FALSE); g_list_free (filelist); } g_free(output); } /** * Does all the export pdf work. * calls exportmudela and then * runs lilypond to a create a filename.pdf * * @param filename filename to save score to * @param gui pointer to the DenemoProject structure */ void export_pdf (gchar * filename, DenemoProject * gui) { gchar *basename; gchar *lilyfile; gchar *psfile; GList *filelist = NULL; basename = get_printfile_pathbasename (); lilyfile = g_strconcat (basename, ".ly", NULL); psfile = g_strconcat (filename, ".ps", NULL); /* create list of files that will need to be deleted */ filelist = g_list_append (filelist, lilyfile); filelist = g_list_append (filelist, psfile); /* generate the lilypond file */ exportlilypond (lilyfile, gui, TRUE); /* create arguments to pass to lilypond to create a pdf */ gchar *arguments[] = { Denemo.prefs.lilypath->str, "-dgui", "--loglevel=WARN", "--pdf", "-o", filename, lilyfile, NULL }; /* generate the pdf file */ return_on_windows_if_printing; gint error = run_lilypond (arguments); if (error) { g_spawn_close_pid (Denemo.printstatus->printpid); Denemo.printstatus->printpid = GPID_NONE; return; } g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) printpdf_finished, filelist); } /* callback to print current part (staff) of score */ void printpart_cb (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { return_on_windows_if_printing; #ifndef USE_EVINCE g_debug("This feature requires denemo to be built with evince"); #else present_print_view_window(); DenemoProject *gui = Denemo.project; if (gui->movement->markstaffnum) if (confirm (_("A range of music is selected"), _("Print whole file?"))) { gui->movement->markstaffnum = 0; } if ((gui->movements && g_list_length (gui->movements) > 1) && (confirm (_("This piece has several movements"), _("Print this part from all of them?")))) create_pdf (TRUE, TRUE); else create_pdf (TRUE, FALSE); g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) printview_finished, (gpointer) (TRUE)); #endif } void printselection_cb (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { return_on_windows_if_printing; #ifndef USE_EVINCE g_debug("This feature requires denemo to be built with evince"); #else if (Denemo.project->movement->markstaffnum) { present_print_view_window(); create_pdf (FALSE, FALSE); g_child_watch_add (Denemo.printstatus->printpid, (GChildWatchFunc) printview_finished, (gpointer) (TRUE)); } else warningdialog (_("No selection to print")); #endif } void printexcerptpreview_cb (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { return_on_windows_if_printing; DenemoProject *gui = Denemo.project; if (!gui->movement->markstaffnum) //If no selection has been made printrangedialog (gui); //Launch a dialog to get selection if (gui->movement->selection.firstmeasuremarked) { gui->lilycontrol.excerpt = TRUE; export_png ((gchar *) get_printfile_pathbasename (), (GChildWatchFunc) prepare_preview, gui); gui->lilycontrol.excerpt = FALSE; } } /* callback to print whole of score */ void printall_cb (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { return_on_windows_if_printing; #ifndef USE_EVINCE g_debug("This feature requires denemo to be built with evince"); #else print_from_print_view (TRUE); #endif } /* callback to print movement of score */ void printmovement_cb (G_GNUC_UNUSED DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param) { return_on_windows_if_printing; #ifndef USE_EVINCE g_debug("This feature requires denemo to be built with evince"); #else print_from_print_view (FALSE); #endif } void show_print_view (DenemoAction * action, G_GNUC_UNUSED DenemoScriptParam * param){ #ifndef USE_EVINCE g_debug("This feature requires denemo to be built with evince"); #else implement_show_print_view(action!=NULL); #endif } denemo-2.2.0/src/export/PaxHeaders.19168/exportlilypond.h0000644000000000000000000000013213135434036020106 xustar0030 mtime=1500919838.353315139 30 atime=1500919919.339981806 30 ctime=1500919914.259981805 denemo-2.2.0/src/export/exportlilypond.h0000644000175000017500000000515313135434036021763 0ustar00jjbenhamjjbenham00000000000000/* exportlilypond.h * Header file for lilypond generation * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2000-2005 Matthew Hiller, Adam Tee, 2011 Richard Shann */ #ifndef EXPORTMUDELAH #define EXPORTMUDELAH #include #include //real TAB causes mismatch between LilyPond error columns and Gtks #define TAB " " #define LILYPOND_SYMBOL_DEFINITIONS \ "\nCompactChordSymbols = {}\n#(define DenemoTransposeStep 0)\n#(define DenemoTransposeAccidental 0)\nDenemoGlobalTranspose = #(define-music-function (parser location arg)(ly:music?) #{\\transpose c c#arg #})\ntitledPiece = {}\nAutoBarline = {}\nAutoEndMovementBarline = \\bar \"|.\"\n" void create_lilywindow (void); void exportlilypond (gchar * thefilename, DenemoProject * gui, gboolean all_movements); void export_lilypond_parts (char *filename, DenemoProject * gui); void export_lilypond_part (char *filename, DenemoProject * gui, gboolean all_movements); /* generate the LilyPond for the current part, all movements, into the LilyPond textview window */ void generate_lilypond_part (void); void make_scoreblock_editable (void); /* generate lilypond text for the object passed in - the string should be g_freed by the caller when finished with*/ gchar *generate_lily (objnode * obj); void refresh_lily_cb (DenemoAction * action, DenemoProject * gui); void force_lily_refresh (DenemoProject * gui); void toggle_lily_visible_cb (DenemoAction * action, gpointer param); void custom_lily_cb (DenemoAction * action, gpointer param); void delete_lily_cb (DenemoAction * action, gpointer param); void set_lily_error (gint line, gint column); void highlight_lily_error (); gboolean goto_lilypond_position (gint line, gint column); DenemoObject *get_object_at_lilypond (gint line, gint col); void set_initiate_scoreblock (DenemoMovement * si, GString * scoreblock); gchar *get_lilypond_for_clef (clef * theclef); gchar *get_lilypond_for_keysig (struct keysig *key); gchar *get_lilypond_for_timesig (timesig * time); gchar *get_lilypond_paper (void); const gchar *get_prevailing_clef_as_lilypond (void); const gchar *get_prevailing_keysig_as_lilypond (void); const gchar *get_prevailing_timesig_as_lilypond (void); void set_voice_termination (GString * str, DenemoStaff * curstaffstruct); void set_staff_termination (GString * str, DenemoStaff * curstaffstruct); void set_staff_finalize (GString * str, DenemoStaff * curstaffstruct); void set_voice_definition (GString * str, DenemoStaff * curstaffstruct, gchar * denemo_name); void set_staff_definition (GString * str, DenemoStaff * curstaffstruct); gint get_cursor_offset (void); void init_lilypond_buffer (void); #endif denemo-2.2.0/src/export/PaxHeaders.19168/exportmidi.h0000644000000000000000000000013213135434036017176 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.339981806 30 ctime=1500919914.266648472 denemo-2.2.0/src/export/exportmidi.h0000644000175000017500000000076113135434036021053 0ustar00jjbenhamjjbenham00000000000000/* exportmidi.h * Header file for Standard MIDI output * for Denemo, a gtk+ frontend to GNU Lilypond * * (c) 2001 Per Andersson * 2009- 2013 RTS */ #ifndef EXPORTMIDI_H #define EXPORTMIDI_H #include gdouble exportmidi (gchar * filename, DenemoMovement * si); gdouble load_lilypond_midi (gchar * outfile, gboolean keep); gchar *substitute_midi_values (gchar * str, gint channel, gint volume); void free_midi_data (DenemoMovement * si); int dia_to_midinote (int offs); #endif denemo-2.2.0/src/export/PaxHeaders.19168/exportmidi.c0000644000000000000000000000013213135434036017171 xustar0030 mtime=1500919838.353315139 30 atime=1500919919.346648472 30 ctime=1500919914.263315139 denemo-2.2.0/src/export/exportmidi.c0000644000175000017500000016220613135434036021051 0ustar00jjbenhamjjbenham00000000000000/* * exportmidi.c * * Functions for exporting a Standard Midi file * * for Denemo, a gtk+ frontend to GNU Lilypond * (C) 2001, 2002 Per Andersson, 2009, 2010, 2011, 2012 Richard Shann * * License: this file may be used under the FSF GPL version 3 or later */ #define EXPORTMIDI_VERSION "1.2" /* * The function exportmidi() writes a "Standard MIDI file" to disk. * The file can then be played by programs like playmidi * or TiMidity, externally or by the denemo playback command. * * See www.wotsit.org for some info on midi and the standard file format * * The ambition is to honour as many musical directives (tempo, slurs, ties, * dynamics, staccato ...) as possible, and to make the output as musical * as possible. Efforts have been made to try to handle empty or incomplete * measures, unbalanced slurs and other strange input. * * Exportmidi() has a velocity modulation feature to make the sound * less mechanical, but this is still under development. * Timing modulation is planned. * * Call exportmidi() from some file menu or as a part of the playback command. * It has the same parameters as exportmudela(). * There is a code fragment for this in the file fragment.c. * The makefile needs the four files exportmidi.[ch] and instrumentname.[ch]. * * Environment variable is used for user preferences. This should be replaced * by some musical "style sheet" in the future, since the values depend on * the genre (and tempo) of the piece, as well as personal taste. * Information should be stored in the mudela file, somehow. * Values may change within the piece, and ... * There are many issues to resolve here! * * This software is tested with denemo 0.5.5. * * * * Per Andersson * Artifex consulting * * email to: artifex@europe.com */ #include #include #include #include #include #include #include #include "export/exportmidi.h" #include "audio/instrumentname.h" #include "audio/audiointerface.h" #include "core/view.h" #include "printview/svgview.h" #include "smf.h" /* * only for developers */ static int debug = 0; /****************************************************************/ /** * some important midi command bytes */ #define MIDI_NOTE_OFF 0x80 #define MIDI_NOTE_ON 0x90 #define MIDI_PROG_CHANGE 0xc0 #define MAX_TRACKS 16 /* * support macros for exportmidi() */ /* length, in ticks, of a quarter note */ #define MIDI_RESOLUTION 384 /* tick conversion */ #define ticks2bars(t,u,l) (t/(MIDI_RESOLUTION*4*u/l)) #define bars2ticks(t,u,l) (t*(MIDI_RESOLUTION*4*u/l)) #define ticks2beats(t,u,l) (t/(MIDI_RESOLUTION*4/l)) #define beats2ticks(t,u,l) (t*(MIDI_RESOLUTION*4/l)) /****************************************************************/ /** * dynamic request handling */ enum dynamics { DYN_TACET = 0, DYN_PPP, DYN_PP, DYN_P, DYN_MP, DYN_MF, DYN_F, DYN_FF, DYN_FFF, DYN_MAX }; static char *dyn_strings[DYN_MAX] = { "tacet", "ppp", "pp", "p", "mp", "mf", "f", "ff", "fff", }; static int dyn_vol[DYN_MAX] = { 1, 16, 32, 48, 64, 80, 96, 112, 127 }; /** * convert dynamic string to midi velocity 0 .. 127 */ static int string_to_vol (char *dynamic, int default_vol) { int i; for (i = 0; i < DYN_MAX; i++) { if (!strcmp (dynamic, dyn_strings[i])) { return dyn_vol[i]; } } return default_vol; } /****************************************************************/ /** * unbiased random generator, * * returns a value within +- maxdev */ /* UNUSED static int i_random (int *accumulate, int maxdev) { int rnd; rnd = maxdev - 2 * maxdev * (rand () >> 4) / (RAND_MAX >> 4) - *accumulate; *accumulate += rnd / 2; if (debug >= 10) { fprintf (stderr, "random=%d\n", rnd / 2); } return rnd / 2; } */ /****************************************************************/ /** * limit a value to be within limits * (simple first approach) */ /* UNUSED static int compress (int range, int invalue) { int outvalue; outvalue = invalue; if (invalue >= range) { outvalue = range - 1; } if (invalue != outvalue) { fprintf (stderr, "compress %d %d\n", invalue, outvalue); } return outvalue & 0x7F; } */ /****************************************************************/ /** * integer base 2 logarithm used in time-sig code */ static int twolog (int x) { int answer = 0; /* should not happen! */ if (x < 1) return 0; while (x > 1) { x >>= 1; answer++; } return answer; } #define midi_meta_text(a,b) smf_event_new_textual(a,b) /** * almost only used for program change */ static smf_event_t * midi_change_event (int type, int chan, int val) { smf_event_t *event = smf_event_new (); guchar *buf = malloc (2); event->midi_buffer = buf; event->midi_buffer_length = 2; *buf++ = type | chan; *buf++ = val; return event; } /** * meta event: set time signature, time scale and metronome FF 58 04 nn dd cc bb Time Signature */ static smf_event_t * midi_timesig (int upper, int lower) { smf_event_t *event = smf_event_new (); guchar *buf = malloc (7); event->midi_buffer = buf; event->midi_buffer_length = 7; div_t n; int click = 24; if (lower != 0) { n = div (4, lower); click = 24 * ((float) n.quot + (float) n.rem); } *buf++ = 0xff, *buf++ = 0x58, *buf++ = 4; *buf++ = upper, *buf++ = twolog (lower), *buf++ = click, *buf++ = 8; return event; } /** * meta event: set key signature */ static smf_event_t * midi_keysig (gint key, gint isminor) { smf_event_t *event = smf_event_new (); guchar *buf = malloc (5); event->midi_buffer = buf; event->midi_buffer_length = 5; *buf++ = 0xff; *buf++ = 0x59; *buf++ = 2; *buf++ = key; *buf++ = isminor; return event; } /** * meta event: set system clock speed */ static smf_event_t * midi_tempo (long tempo) { long midi_tempo; smf_event_t *event = smf_event_new (); guchar *buf = malloc (6); event->midi_buffer = buf; event->midi_buffer_length = 6; if (tempo == 0) { tempo = 1; } *buf++ = 0xff; *buf++ = 0x51; *buf++ = 3; midi_tempo = 60000000 / tempo; *buf++ = (midi_tempo >> 16) & 255; *buf++ = (midi_tempo >> 8) & 255/*, (midi_tempo >> 0) & 255*/; return event; } /** * compute midi chromatic note number from diatonic offset */ int dia_to_midinote (int offs) { int table[] = { -10, -8, -7, -5, -3, -1, 0, 2, 4, 5, 7, 9, 11 }; int tone, octave; int midinum; octave = offs / 7; tone = offs % 7; midinum = 60 + 12 * octave + table[tone + 6]; return midinum; } /****************************************************************/ /** * slur handling code: * * decide what to do about slurs and things, using a note status table * describing each note and a status variable for the general situation */ /* * constants used in note status table */ #define FLG_CONNECT_B 0x01 #define FLG_CONNECT_F 0x02 #define FLG_SLUR_BEGIN 0x04 #define FLG_SLUR_END 0x08 #define FLG_NOTE_ON 0x10 #define FLG_NOTE_OFF 0x20 #define FLG_STACCATO 0x40 #define FLG_STACCATISSIMO 0x80 #define FLG_TIED_F 0x100 #define FLG_TIED_B 0x200 /** * debug print-out of slur table */ static char * fmt_ticks (long t) { static char answer[12]; long sig = 4; long res = 4; long count; count = t * res / MIDI_RESOLUTION / sig; sprintf (answer, "%ld = %ld+%ld/%ld", t, count / res, count % res, res); return answer; } #if slurdebug /** * Output slur descriptions to the given file * */ static int print_slurs (FILE * fd, int *tab, int status, int t_read, int t_written, char *txt) { int i; fprintf (fd, "=== slurs: (state=%d) %s @ ", status, txt); fprintf (fd, "r=%s ", fmt_ticks (t_read)); fprintf (fd, "w=%s\n", fmt_ticks (t_written)); for (i = 0; i < 128; i++) { if (tab[i]) { fprintf (fd, "%2d: %3x %s%s%s%s%s%s%s%s%s%s\n", i, tab[i], tab[i] & FLG_CONNECT_B ? "connect-backward " : "", tab[i] & FLG_CONNECT_F ? "connect-forward " : "", tab[i] & FLG_SLUR_BEGIN ? "begin " : "", tab[i] & FLG_SLUR_END ? "end " : "", tab[i] & FLG_STACCATO ? "staccato " : "", tab[i] & FLG_STACCATISSIMO ? "staccatissimo " : "", tab[i] & FLG_NOTE_ON ? "note_is_on " : "", tab[i] & FLG_NOTE_OFF ? "note_is_off " : "", tab[i] & FLG_TIED_B ? "tied_backward " : "", tab[i] & FLG_TIED_F ? "tied_forward " : ""); } } /* not used */ return 0; } #endif #define STATE_NONE 0 #define STATE_FIRST 1 #define STATE_LAST 2 #define STATE_THROUGH 3 /** * reset note status table and slur status * * called once before each track */ static void slur_erase (int *table, int *state) { int i; for (i = 0; i < 128; i++) { table[i] = 0; } *state = STATE_NONE; } /** * prepare note status table for next chord * * only keep notes that are still playing * * called once after each chord */ static void slur_shift (int *table) { int i; for (i = 0; i < 128; i++) { if (table[i] & FLG_CONNECT_F) { table[i] |= FLG_CONNECT_B; } else { table[i] &= ~FLG_CONNECT_B; } if (table[i] & FLG_TIED_F) { table[i] |= FLG_TIED_B; } else { table[i] &= ~FLG_TIED_B; } table[i] &= (FLG_TIED_B | FLG_CONNECT_B); } } /** * update slur status (begin/middle/end of slurs, or no slur) */ static void slur_update (int *state, int begin, int end) { /* prepare flag bits */ begin = begin ? FLG_SLUR_BEGIN : 0; end = end ? FLG_SLUR_END : 0; /* look at: previous state, begin and end, then set new state */ switch (*state) { case STATE_FIRST: switch (begin + end) { case FLG_SLUR_BEGIN: fprintf (stderr, "warning: strange slur: extra begin\n"); *state = STATE_THROUGH; break; case 0: case FLG_SLUR_BEGIN + FLG_SLUR_END: *state = STATE_THROUGH; break; case FLG_SLUR_END: *state = STATE_LAST; break; } break; case STATE_LAST: switch (begin + end) { case FLG_SLUR_BEGIN: *state = STATE_FIRST; break; case FLG_SLUR_BEGIN + FLG_SLUR_END: *state = STATE_THROUGH; fprintf (stderr, "strange slur: extra end\n"); break; case 0: *state = STATE_NONE; break; case FLG_SLUR_END: fprintf (stderr, "strange slur: extra end\n"); *state = STATE_LAST; break; } break; case STATE_NONE: switch (begin + end) { case FLG_SLUR_BEGIN: *state = STATE_FIRST; break; case 0: *state = STATE_NONE; break; case FLG_SLUR_BEGIN + FLG_SLUR_END: fprintf (stderr, "strange slur: missing begin\n"); *state = STATE_THROUGH; break; case FLG_SLUR_END: *state = STATE_LAST; break; } break; case STATE_THROUGH: switch (begin + end) { case FLG_SLUR_BEGIN: fprintf (stderr, "strange slur: extra begin\n"); *state = STATE_THROUGH; break; case 0: case FLG_SLUR_BEGIN + FLG_SLUR_END: *state = STATE_THROUGH; break; case FLG_SLUR_END: *state = STATE_LAST; break; } break; } } /** * insert a note and its properties in the table */ static void slur_note (int *table, int state, int notenum, int staccato, int staccatissimo, int tied) { int running; /* see if note is already playing */ running = table[notenum] & FLG_CONNECT_B; /* set flags for directives */ staccato = staccato ? FLG_STACCATO : 0; staccatissimo = (staccatissimo ? FLG_STACCATISSIMO : 0); table[notenum] &= FLG_TIED_B; /* set note on/off according to the slur state */ switch (state) { case STATE_LAST: if (!running) { table[notenum] |= FLG_NOTE_ON + FLG_NOTE_OFF; } else { table[notenum] |= FLG_NOTE_OFF; } break; case STATE_NONE: /* normal note, no slur */ if (running) { fprintf (stderr, "warning: note should not be on (0)\n"); } table[notenum] |= FLG_NOTE_ON + FLG_NOTE_OFF; break; case STATE_THROUGH: /* note may be started before */ if (!running) { table[notenum] |= FLG_NOTE_ON + FLG_CONNECT_F; } else { table[notenum] |= FLG_CONNECT_F; } break; case STATE_FIRST: /* first note of slur */ if (running) { fprintf (stderr, "warning: note should not be on (1)\n"); table[notenum] |= FLG_CONNECT_F; } else { table[notenum] |= FLG_NOTE_ON + FLG_CONNECT_F; } break; default: fprintf (stderr, "this shouldn't happen!\n"); exit (3); } if (tied) { table[notenum] |= FLG_TIED_F; table[notenum] &= ~FLG_NOTE_OFF; } /* only relevant in normal notes or at end of slur */ table[notenum] += staccato + staccatissimo; } /* * some predicates used in exportmidi */ static int slur_on_p (int *table, int notenum) { return (table[notenum] & FLG_NOTE_ON) && !(table[notenum] & FLG_TIED_B); } static int slur_kill_p (int *table, int notenum) { return ((table[notenum] & FLG_CONNECT_B) && !(table[notenum] & FLG_NOTE_ON)) || ((table[notenum] & FLG_TIED_B) && !(table[notenum] & FLG_NOTE_ON)); } static int slur_off_p (int *table, int notenum) { return (table[notenum] & FLG_NOTE_OFF); } /* UNUSED static int slur_staccato_p (int *table, int notenum) { return !(table[notenum] & FLG_STACCATO); } static int slur_staccatissimo_p (int *table, int notenum) { return !(table[notenum] & FLG_STACCATISSIMO); } */ /****************************************************************/ /** * compute the amount of extra velocity to be added to a note */ /* UNUSED static int compute_beat (long ticks, long ticks_in_a_beat, long ticks_in_a_measure, int length, int factor) { // give extra beat only to short notes if (length < ticks_in_a_measure / 2) { if (ticks == 0) { // put more emphasis on the first beat return factor; } else if (ticks % ticks_in_a_beat) { // put less emphasis on off beat notes return -factor; } else { // leave the rest alone return 0; } } else { return 0; } } */ /****************************************************************/ /* convert denemo time values to ticks */ #define internaltoticks(i) ((MIDI_RESOLUTION*4)>>i) /* this is a real high-tech macro */ #define percent(t,p) ((t*p)/100) static int is_status_byte(const unsigned char status) { return (status & 0x80); } /* puts an event into track if buffer contains valid midi message. and frees buffer. Returns the event, or NULL if invalid buffer. */ static smf_event_t * put_event (gchar * buffer, gint numbytes, smf_track_t * track) { smf_event_t *event = NULL; if (numbytes && is_status_byte (buffer[0])) event = smf_event_new_from_pointer (buffer, numbytes); if (event && smf_event_is_valid (event)) { smf_track_add_event_delta_pulses (track, event, 0); } g_free (buffer); return event; } static gint directive_get_midi_override (DenemoDirective * directive) { return (directive->override & DENEMO_OVERRIDE_HIDDEN) | (directive->override & DENEMO_MIDI_MASK); } static gint directive_get_midi_interpretation (DenemoDirective * directive) { return directive->override & DENEMO_MIDI_INTERPRETATION_MASK; } static gint directive_get_midi_action (DenemoDirective * directive) { return directive->override & DENEMO_MIDI_ACTION_MASK; } gchar * substitute_midi_values (gchar * str, gint channel, gint volume) { gchar *bytes = g_strdup (str); gchar *c; for (c = bytes; *c; c++) { if (*c == '$') *c = '0' + channel; if (*c == '%' && *(c + 1) == '%' && *(c + 2) == '%') sprintf (c, "%3d", volume); //*c = itoa(volume); } // g_debug("We have transformed %s to %s\n", str, bytes); return bytes; } static gchar * directive_get_midi_buffer (DenemoDirective * directive, gint * pnumbytes, gint channel, gint volume) { errno = 0; *pnumbytes = 0; if (directive->midibytes) { gchar *bytes; bytes = substitute_midi_values (directive->midibytes->str, channel, volume); //g_print("Got %s as midi bytes\n", bytes); char *next; gint i, numbytes; for (i = 0, next = bytes; *next; i++) { gchar *last = next; strtol (next, &next, 0); if(errno || (last==next)) { g_free(bytes); return NULL; } } gchar *buf = (gchar *) g_malloc0 (i); for (i=0, next = bytes; *next; i++) { buf[i] = (char) strtol (next, &next, 0); //g_print("byte %x\n", buf[i]); } *pnumbytes = i; g_free (bytes); return buf; } return NULL; } static gint directive_get_midi_val (DenemoDirective * directive) { gint val = 0; if (directive->midibytes) { gchar *bytes; bytes = directive->midibytes->str; errno = 0; val = strtol (bytes, NULL, 0); if (errno) { g_warning ("String %s is bad format for MIDI value", bytes); return 0; } } return val; } /* change the volume according to the values passed in */ static void change_volume (gint * volume, gint midi_val, gint midi_interpretation, gint midi_action) { gdouble val; // g_debug("midi_val %d cur_volume %d\n", midi_val, cur_volume); val = (gdouble) midi_val; if (midi_interpretation & DENEMO_OVERRIDE_PERCENT) val = *volume * (midi_val / 100.0); if (midi_action == DENEMO_OVERRIDE_ONCE) g_warning ("Scripting error, ONCE for standalone directive is meaningless"); if (midi_action == DENEMO_OVERRIDE_RAMP) g_warning ("Not implemented ramp yet"); if (midi_action == DENEMO_OVERRIDE_STEP) { if (midi_interpretation & DENEMO_OVERRIDE_RELATIVE) *volume += val; else *volume = val; } if (*volume > 127) *volume = 127; if (*volume < 0) *volume = 0; } /* change the channel according to the values passed in */ static void change_channel (gint * channel, gint midi_val, gint midi_interpretation, gint midi_action) { gdouble val; //g_debug("midi_val %d cur_channel %d\n", midi_val, cur_channel); val = (gdouble) midi_val; if (midi_interpretation & DENEMO_OVERRIDE_PERCENT) g_warning ("Percent meaningless with channel change"); if (midi_action == DENEMO_OVERRIDE_ONCE) g_warning ("Scripting error, ONCE for standalone directive is meaningless"); if (midi_action == DENEMO_OVERRIDE_RAMP) g_warning ("Ramp meaningless with channel change"); if (midi_action == DENEMO_OVERRIDE_STEP) { *channel = val; } if (*channel > 127) *channel = 127; if (*channel < 0) *channel = 0; g_message ("After channel change channel = %d", *channel); } /* change the tempo according to the values passed in */ static void change_tempo (gint * tempo, gint midi_val, gint midi_interpretation, gint midi_action) { gdouble val; val = (gdouble) midi_val; if (midi_interpretation & DENEMO_OVERRIDE_PERCENT) val = *tempo * (midi_val / 100.0); if (midi_action == DENEMO_OVERRIDE_ONCE) g_warning ("Not implemented change of tempo for one chord"); if (midi_action == DENEMO_OVERRIDE_RAMP) g_warning ("Not implemented ramp yet"); if (midi_action == DENEMO_OVERRIDE_STEP) { if (midi_interpretation & DENEMO_OVERRIDE_RELATIVE) *tempo += val; else *tempo = val; } } static void load_smf ( DenemoMovement *si, smf_t *smf) { if (si->smf==smf) return; gboolean midi_track = FALSE; g_mutex_lock (&smfmutex); if (Denemo.project->movement->recorded_midi_track) { if (si->smf && (((smf_track_t *) Denemo.project->movement->recorded_midi_track)->smf == si->smf)) { smf_track_remove_from_smf (Denemo.project->movement->recorded_midi_track); midi_track = TRUE; } } free_midi_data (si); si->smf = smf; if (midi_track) smf_add_track (smf, Denemo.project->movement->recorded_midi_track); si->smfsync = si->changecount; g_mutex_unlock (&smfmutex); } static void save_smf_to_file (smf_t *smf, gchar *thefilename) { if (thefilename) { if (Denemo.project->movement->recorded_midi_track) smf_add_track (smf, Denemo.project->movement->recorded_midi_track); if(smf_save (smf, (const char *) thefilename)) g_debug("smf_save failed"); if (Denemo.project->movement->recorded_midi_track) smf_track_remove_from_smf (Denemo.project->movement->recorded_midi_track); } } gdouble load_lilypond_midi (gchar * outfile, gboolean keep) { smf_t *saved = NULL; gchar *midi_file = Denemo.printstatus->printname_midi[Denemo.printstatus->cycle]; smf_t *smf = smf_load (midi_file); if (smf) { if (!attach_timings ()) g_warning ("Attaching timings to objects failed\n"); if (outfile) save_smf_to_file (smf, outfile); if (!keep ) load_smf (Denemo.project->movement, smf); else smf_delete (smf); return smf_get_length_seconds (Denemo.project->movement->smf); } else { g_warning ("midi file %s not loaded", midi_file); } return 0.0; } /* * the main midi output system (somewhat large) */ /****************************************************************/ /****************************************************************/ /****************************************************************/ /** * the main midi output system (somewhat large) * return the duration in seconds of the music stored */ gdouble exportmidi (gchar * thefilename, DenemoMovement * si) { /* variables for reading and decoding the object list */ smf_event_t *event = NULL; staffnode *curstaff; DenemoStaff *curstaffstruct; measurenode *curmeasure; objnode *curobjnode; DenemoObject *curobj; gint curmeasurenum; chord chordval; gint duration, numdots; gint enshift; gint mid_c_offset; GList *curtone; //gdouble fraction; gint measurenum, last = 0; /* variables for generating music */ //int i; int d, n; long ticks_read; long ticks_written; long ticks_at_bar = 0; int cur_volume; gdouble master_volume; gboolean override_volume; int cur_transposition; int midi_channel = (-1); int tracknumber = 0; int timesigupper = 4; int timesiglower = 4; int notenumber; int prognum; int width = 0; int notes_in_chord = 0; int note_status[128]; int slur_status; int measure_is_empty; int measure_has_odd_tuplet; int measurewidth; /* output velocity and timing modulation */ //int rand_sigma = 0; //int rand_delta; //int beat = 0; /* to handle user preferences */ char *envp; int vel_randfact = 5; int vel_beatfact = 10; int pref_width = 100; int pref_staccato = 25; int pref_staccatissimo = 10; /* tuplets */ int tuplet = 0; //level of tuplet nesting only 0 and 1 are supported tupopen tupletnums; tupopen savedtuplet; /* used to insert track sizes in the midi file */ //long track_start_pos[MAX_TRACKS]; //long track_end_pos[MAX_TRACKS]; /* statistics */ time_t starttime; //time_t endtime; call_out_to_guile ("(InitializeMidiGeneration)"); /* get user preferences, if any */ envp = getenv ("EXP_MIDI_VEL"); if (envp) { sscanf (envp, "%d %d", &vel_randfact, &vel_beatfact); fprintf (stderr, "VELOCITY parameters are: %d %d\n", vel_randfact, vel_beatfact); } envp = getenv ("EXP_MIDI_PERCENT"); if (envp) { sscanf (envp, "%d %d %d", &pref_width, &pref_staccato, &pref_staccatissimo); fprintf (stderr, "PERCENT parameters are: normal=%d staccato=%d %d\n", pref_width, pref_staccato, pref_staccatissimo); } /* just curious */ time (&starttime); smf_t *smf = smf_new (); if(smf_set_ppqn (smf, MIDI_RESOLUTION)) g_debug("smf_set_ppqn failed"); /* * end of headers and meta events, now for some real actions */ //fraction = 1 / g_list_length (si->thescore); /* iterate over all tracks in file */ //printf ("\nsi->stafftoplay in exportmidi = %i", si->stafftoplay); curstaff = si->thescore; if (si->stafftoplay > 0) { int z = si->stafftoplay; while (--z) curstaff = curstaff->next; } //for (curstaff = si->thescore; curstaff; curstaff = curstaff->next) while (curstaff) { /* handle one track */ curstaffstruct = (DenemoStaff *) curstaff->data; /* select a suitable track number */ tracknumber++; smf_track_t *track = smf_track_new (); smf_add_track (smf, track); /* track name */ event = midi_meta_text (3, curstaffstruct->lily_name->str); smf_track_add_event_delta_pulses (track, event, 0); /* tempo */ gint cur_tempo = si->tempo; if (tracknumber == 1) { //Do not set the tempo for later tracks as there may be tempo directives at the start of the first measure which libsmf will muddle up with any done here event = midi_tempo (cur_tempo); smf_track_add_event_delta_pulses (track, event, 0); } /* Midi Client/Port */ // track->user_pointer = (DevicePort *) device_manager_get_DevicePort(curstaffstruct->device_port->str); /* The midi instrument */ if (curstaffstruct->midi_instrument && curstaffstruct->midi_instrument->len) { event = midi_meta_text (4, curstaffstruct->midi_instrument->str); smf_track_add_event_delta_pulses (track, event, 0); } midi_channel = curstaffstruct->midi_channel; prognum = curstaffstruct->midi_prognum; /* set selected midi program */ g_message ("Using channel %d prognum %d", midi_channel, prognum); event = midi_change_event (MIDI_PROG_CHANGE, midi_channel, prognum); smf_track_add_event_delta_pulses (track, event, 0); /*key signature */ event = midi_keysig (curstaffstruct->keysig.number, curstaffstruct->keysig.isminor); smf_track_add_event_delta_pulses (track, event, 0); /* Time signature */ timesigupper = curstaffstruct->timesig.time1; //printf("\nstime1 = %i\n", timesigupper); timesiglower = curstaffstruct->timesig.time2; //printf("\nstime2 = %i\n", timesiglower); event = midi_timesig (timesigupper, timesiglower); smf_track_add_event_delta_pulses (track, event, 0); /* set a default velocity value */ cur_volume = curstaffstruct->volume; master_volume = curstaffstruct->volume / 127.0; /* new semantic for staff volume as fractional master volume */ override_volume = curstaffstruct->override_volume; /* force full volume output if set */ cur_transposition = curstaffstruct->transposition; if (tuplet > 0) g_warning ("Unterminated tuplet at end of voice %d", tracknumber - 1); //Reset to tuplets nesting level 0, in case unbalanced tuplet start end in last staff tuplet = 0; //Now that we have the channel and volume we can interpret any score and staff-wide directives for midi if (curstaffstruct->staff_directives) { GList *g = curstaffstruct->staff_directives; DenemoDirective *directive = NULL; for (; g; g = g->next) { gint numbytes; directive = (DenemoDirective *) g->data; gint midi_override = directive_get_midi_override (directive); gchar *buf = directive_get_midi_buffer (directive, &numbytes, midi_channel, cur_volume); if (!(midi_override & DENEMO_OVERRIDE_HIDDEN)) if (buf) if (NULL == put_event (buf, numbytes, track)) g_warning ("Invalid midi bytes in staff directive"); } } if (tracknumber == 1) { if (Denemo.project->lilycontrol.directives) { //FIXME repeated code GList *g = Denemo.project->lilycontrol.directives; DenemoDirective *directive = NULL; for (; g; g = g->next) { gint numbytes; directive = (DenemoDirective *) g->data; gint midi_override = directive_get_midi_override (directive); gchar *buf = directive_get_midi_buffer (directive, &numbytes, midi_channel, cur_volume); if (!(midi_override & DENEMO_OVERRIDE_HIDDEN)) if (buf) if (NULL == put_event (buf, numbytes, track)) g_warning ("Invalid midi bytes in score directive"); } } if (Denemo.project->movement->movementcontrol.directives) { GList *g = Denemo.project->movement->movementcontrol.directives; DenemoDirective *directive = NULL; for (; g; g = g->next) { gint numbytes; directive = (DenemoDirective *) g->data; gint midi_override = directive_get_midi_override (directive); gchar *buf = directive_get_midi_buffer (directive, &numbytes, midi_channel, cur_volume); if (!(midi_override & DENEMO_OVERRIDE_HIDDEN)) if (buf) if (NULL == put_event (buf, numbytes, track)) g_warning ("Invalid midi bytes in movement directive"); } } } /* reset measure */ curmeasurenum = 0; curmeasure = curstaffstruct->themeasures; /* reset tick counters */ ticks_read = 0; ticks_written = 0; /* reset slur system */ slur_erase (note_status, &slur_status); /* set boundries */ last = g_list_length (curmeasure); /* iterate for over measures in track */ for (measurenum = 1; curmeasure && measurenum <= last; curmeasure = curmeasure->next, measurenum++) { /* start of measure */ curmeasurenum++; measure_is_empty = 1; measure_has_odd_tuplet = 0; ticks_at_bar = ticks_read; /* iterate over objects in measure */ for (curobjnode = (objnode *) ((DenemoMeasure*)curmeasure->data)->objects; curobjnode; curobjnode = curobjnode->next) { curobj = (DenemoObject *) curobjnode->data; curobj->earliest_time = ticks_read * 60.0 / (cur_tempo * MIDI_RESOLUTION); //smf_get_length_seconds(smf); /******************************************* * huge switch: * here we handle every kind of object * that seems relevant to us *******************************************/ int tmpstaccato = 0, tmpstaccatissimo = 0; gboolean skip_midi = FALSE; switch (curobj->type) { case CHORD: /******************** * one or more notes ********************/ measure_is_empty = 0; if (debug) fprintf (stderr, "=============================== chord at %s\n", fmt_ticks (ticks_read)); chordval = *(chord *) curobj->object; if (chordval.directives) { GList *g = chordval.directives; DenemoDirective *directive = NULL; for (; g; g = g->next) { gint numbytes; directive = (DenemoDirective *) g->data; gchar *buf = directive_get_midi_buffer (directive, &numbytes, midi_channel, cur_volume); gint midi_override = directive_get_midi_override (directive); gint midi_interpretation = directive_get_midi_interpretation (directive); gint midi_action = directive_get_midi_action (directive); gint midi_val = directive_get_midi_val (directive); /* handle all types of MIDI overrides attached to chord here */ switch (midi_override) { case DENEMO_OVERRIDE_VOLUME: if (midi_val) change_volume (&cur_volume, midi_val, midi_interpretation, midi_action); else skip_midi = TRUE; break; case DENEMO_OVERRIDE_TRANSPOSITION: cur_transposition = midi_val; break; case DENEMO_OVERRIDE_CHANNEL: change_channel (&midi_channel, midi_val, midi_interpretation, midi_action); break; case DENEMO_OVERRIDE_TEMPO: change_tempo (&cur_tempo, midi_val, midi_interpretation, midi_action); if (cur_tempo) { event = midi_tempo (cur_tempo); smf_track_add_event_delta_pulses (track, event, 0); } else g_warning ("Tempo change to 0 bpm is illegal"); break; //etc default: if (!(midi_override & DENEMO_OVERRIDE_HIDDEN)) if (buf) { if (NULL == put_event (buf, numbytes, track)) g_warning ("Invalid midi bytes in chord directive"); } break; } } //for each directive attached to the chord } //if there are directives /* FIXME sound grace notes either simultaneously for shorter duration or steal time .... */ if (chordval.is_grace) { curobj->latest_time = curobj->earliest_time; break; } /*********************************** * compute nominal duration of note ***********************************/ numdots = chordval.numdots; duration = 0; if (chordval.baseduration >= 0) { for (d = 0; d <= numdots; d++) { duration += internaltoticks (chordval.baseduration) >> d; } if (tuplet >= 1) { duration *= tupletnums.numerator; duration /= tupletnums.denominator; if (MIDI_RESOLUTION % tupletnums.denominator) { measure_has_odd_tuplet = 1; } } if (tuplet >= 2) { if (MIDI_RESOLUTION % tupletnums.denominator * savedtuplet.denominator) { measure_has_odd_tuplet = 1; } duration *= savedtuplet.numerator; duration /= savedtuplet.denominator; } } else duration = curobj->durinticks; /******************************** * compute real duration of note ********************************/ #if 0 //this is not working - it causes the delta to be -ve later for (tmp = chordval.ornamentlist; tmp; tmp = tmp->next) { if (*(enum ornament *) tmp->data == (enum ornament) STACCATISSIMO) { tmpstaccatissimo = 1; width = percent (duration, pref_staccatissimo); } else if (*(enum ornament *) tmp->data == (enum ornament) STACCATO) { width = percent (duration, pref_staccato); tmpstaccato = 1; } else { width = percent (duration, pref_width); } } if (debug) fprintf (stderr, "duration is %s\n", fmt_ticks (duration)); #else width = 0; #endif if (!chordval.notes) { //MUST GIVE OFF TIME FOR RESTS HERE curobj->latest_time = curobj->earliest_time + duration * 60.0 / (cur_tempo * MIDI_RESOLUTION); //g_debug("Adding Dummy event for rest %d %d %d\n", duration, ticks_read, ticks_written); event = midi_meta_text (1 /* comment */ , "rest"); smf_track_add_event_delta_pulses (track, event, duration); ticks_written += duration; event->user_pointer = curobj; //g_debug("rest of %f seconds at %f\n", duration/(double)MIDI_RESOLUTION, curobj->latest_time); } if (chordval.notes) { gint tmp_channel = midi_channel; if (curobj->isinvisible) midi_channel = 9; /************************** * prepare for note output **************************/ notes_in_chord = 0; if (debug) fprintf (stderr, "this is a chord\n"); // slur_update (&slur_status, chordval.slur_begin_p, chordval.slur_end_p); slur_update (&slur_status, 0, 0); /* compute beat to add to note velocity */ //beat = compute_beat (ticks_read - ticks_at_bar, beats2ticks (1, timesigupper, timesiglower), bars2ticks (1, timesigupper, timesiglower), duration, vel_beatfact); /************************ * begin chord read loop ************************/ for (curtone = chordval.notes; curtone; curtone = curtone->next) { note *thenote = (note *) curtone->data; #ifdef NOTE_MIDI_OVERRIDES_IMPLEMENTED for (g = thenote->directives; g; g = g->next) { DenemoDirective *directive = g->data; gint midi_override = directive_get_midi_override (directive); if (midi_override) skip_midi = TRUE; //TODO if it *is* overriden take action e.g. increase volume etc. For now we just drop it } #endif if (!skip_midi) { if (chordval.has_dynamic) { //g_debug ("\nThis chord has a dynamic marking attatched\n"); GList *dynamic = g_list_first (chordval.dynamics); cur_volume = string_to_vol (((GString *) dynamic->data)->str, cur_volume); } mid_c_offset = thenote->mid_c_offset; enshift = thenote->enshift; notenumber = dia_to_midinote (mid_c_offset) + enshift; notenumber += cur_transposition; if (notenumber > 127) { g_warning ("Note out of range: %d", notenumber = 60); } slur_note (note_status, slur_status, notenumber, tmpstaccato, tmpstaccatissimo, chordval.is_tied); } } /* End chord read loop */ #if slurdebug print_slurs (stderr, note_status, slur_status, ticks_read, ticks_written, "after chord read"); #endif /**************************** * start note-on output loop ****************************/ /* kill old slurs and ties */ /* start new notes */ notes_in_chord = 0; /* write delta */ for (n = 0; n < 128; n++) { gint mididelta; if (slur_on_p (note_status, n) || slur_kill_p (note_status, n)) { if (notes_in_chord++ == 0) { mididelta = ticks_read - ticks_written; ticks_written = ticks_read; } else { mididelta = 0; } } /* compute velocity delta */ //rand_delta = i_random (&rand_sigma, vel_randfact); /* write note on/off */ if (slur_on_p (note_status, n)) { // int mix = cur_volume? compress(128, cur_volume + rand_delta + beat) : 0; // FIXME the function compress is returning large values. event = smf_event_new_from_bytes (MIDI_NOTE_ON | midi_channel, n,(curstaffstruct->mute)? 0: (override_volume ? 127 : (gint) (master_volume * cur_volume /*FIXME as above, mix */ ))); smf_track_add_event_delta_pulses (track, event, mididelta); event->user_pointer = curobj; curobj->earliest_time = event->time_seconds; curobj->latest_time = curobj->earliest_time + duration * 60.0 / (cur_tempo * MIDI_RESOLUTION); //g_debug ("'%d len %d'", event->event_number, event->midi_buffer_length); //printf ("volume = %i\n", (override_volume ? 0:mix)); } else if (slur_kill_p (note_status, n)) { event = smf_event_new_from_bytes (MIDI_NOTE_OFF | midi_channel, n, 0); //g_debug("{%d}", event->event_number); smf_track_add_event_delta_pulses (track, event, mididelta); //g_debug("Note off for track %x at delta (%d) %.1f for cur_tempo %d\n", track, mididelta, event->time_seconds, cur_tempo); event->user_pointer = curobj; curobj->latest_time = event->time_seconds; curobj->earliest_time = curobj->latest_time - duration * 60.0 / (cur_tempo * MIDI_RESOLUTION); //g_debug("event off lur kill %f\n", event->time_seconds); } } /* end of first chord output loop */ #if slurdebug print_slurs (stderr, note_status, slur_status, ticks_read, ticks_written, "after loop1"); #endif /***************************** * start note-off output loop *****************************/ /* kill untied notes */ notes_in_chord = 0; /* start second chord output loop */ /* write delta */ for (n = 0; n < 128; n++) { if (slur_off_p (note_status, n)) { gint mididelta; if (notes_in_chord++ == 0) { width += ticks_read - ticks_written; mididelta = duration + width; ticks_written += duration + width; if (ticks_written > ticks_read + duration) { fprintf (stderr, "BAD WIDTH %d so delta %d\n" "(should not happen!)", width, mididelta); mididelta = 0; } } else { mididelta = 0; } /* write note off */ event = smf_event_new_from_bytes (MIDI_NOTE_OFF | midi_channel, n, 60); //g_debug("smf length before %d %f mididelta %d",smf_get_length_pulses(smf), smf_get_length_seconds(smf),mididelta); smf_track_add_event_delta_pulses (track, event, mididelta); //g_debug("Note off for track %x at delta (%d) %.1f for cur_tempo %d\n", track, mididelta, event->time_seconds, cur_tempo); //g_debug("smf length after %d %f mididelta %d", smf_get_length_pulses(smf), smf_get_length_seconds(smf),mididelta); event->user_pointer = curobj; curobj->latest_time = event->time_seconds; curobj->earliest_time = curobj->latest_time - duration * 60.0 / (cur_tempo * MIDI_RESOLUTION); //g_debug("event off %f mididelta %d duration %d for curobj->type = %d\n", event->time_seconds, mididelta, duration, curobj->type); } } /* end of second chord output loop */ midi_channel = tmp_channel; } //end of for notes in chord. Note that rests have no MIDI representation, of course. width = 0; #if slurdebug print_slurs (stderr, note_status, slur_status, ticks_read, ticks_written, "after loop2"); #endif /* prepare for next event */ ticks_read += duration; slur_shift (note_status); #if slurdebug print_slurs (stderr, note_status, slur_status, ticks_read, ticks_written, "after shift"); #endif if (debug) fprintf (stderr, "chord end\n"); break; case TIMESIG: /************************ * time signature change ************************/ if (ticks_read != ticks_at_bar) { fprintf (stderr, "error: can only change time" " signature at beginning of a measure\n"); } timesigupper = ((timesig *) curobj->object)->time1; timesiglower = ((timesig *) curobj->object)->time2; if (debug) { fprintf (stderr, "timesig change to %d:%d\n", timesigupper, timesiglower); } event = midi_timesig (timesigupper, timesiglower); smf_track_add_event_delta_pulses (track, event, 0); event->user_pointer = curobj; curobj->earliest_time = curobj->latest_time = event->time_seconds; //= smf_get_length_seconds(smf); break; case TUPOPEN: /*************** * tuplet begin ***************/ switch (tuplet) { default: fprintf (stderr, "too complicated tuplets\n"); break; case 1: savedtuplet.numerator = tupletnums.numerator; savedtuplet.denominator = tupletnums.denominator; tupletnums.numerator = ((tupopen *) curobj->object)->numerator; tupletnums.denominator = ((tupopen *) curobj->object)->denominator; break; case 0: tupletnums.numerator = ((tupopen *) curobj->object)->numerator; tupletnums.denominator = ((tupopen *) curobj->object)->denominator; break; } tuplet++; curobj->earliest_time = curobj->latest_time = event->time_seconds; //the last event break; case TUPCLOSE: /************* * tuplet end *************/ tuplet--; switch (tuplet) { case 2: case 3: case 4: case 5: case 6: case -1: fprintf (stderr, "too complicated tuplets\n"); break; case 1: tupletnums.numerator = savedtuplet.numerator; tupletnums.denominator = savedtuplet.denominator; break; case 0: break; } curobj->earliest_time = curobj->latest_time = event->time_seconds; //the last event break; case DYNAMIC: /******************** * dynamic directive ********************/ cur_volume = string_to_vol (((dynamic *) curobj->object)->type->str, cur_volume); curobj->earliest_time = curobj->latest_time = event->time_seconds; //the last event break; case KEYSIG: // curobj->object // ((keysig *) theobj->object)->number; referenced in src/measure.cpp //printf("\nKEYSIG type = %d\n", ((keysig *) curobj->object)->number); event = midi_keysig ((((keysig *) curobj->object)->number), curstaffstruct->keysig.isminor); smf_track_add_event_delta_pulses (track, event, 0); event->user_pointer = curobj; curobj->earliest_time = curobj->latest_time = event->time_seconds; //= smf_get_length_seconds(smf); break; case CLEF: /*********** * ignored! ***********/ break; case LILYDIRECTIVE: { gint theduration = curobj->durinticks; if (!(((DenemoDirective *) curobj->object)->override & DENEMO_OVERRIDE_HIDDEN)) { gint numbytes; gchar *buf = directive_get_midi_buffer (curobj->object, &numbytes, midi_channel, cur_volume); gint midi_override = directive_get_midi_override (curobj->object); gint midi_interpretation = directive_get_midi_interpretation (curobj->object); gint midi_action = directive_get_midi_action (curobj->object); gint midi_val = directive_get_midi_val (curobj->object); switch (midi_override) { case DENEMO_OVERRIDE_VOLUME: change_volume (&cur_volume, midi_val, midi_interpretation, midi_action); break; case DENEMO_OVERRIDE_TRANSPOSITION: cur_transposition = midi_val; break; case DENEMO_OVERRIDE_CHANNEL: change_channel (&midi_channel, midi_val, midi_interpretation, midi_action); break; case DENEMO_OVERRIDE_TEMPO: change_tempo (&cur_tempo, midi_val, midi_interpretation, midi_action); if (cur_tempo) { event = midi_tempo (cur_tempo); smf_track_add_event_delta_pulses (track, event, 0); //!!!!!!!!!! if rests precede this it is not at the right time... } else { g_warning ("Tempo change to 0 bpm is illegal - re-setting."); cur_tempo = 120; } break; case DENEMO_OVERRIDE_DURATION: theduration = midi_interpretation; //g_debug ("Duration is %d", theduration); break; default: if (!(midi_override & DENEMO_OVERRIDE_HIDDEN)) if (buf) {g_print ("putting numbytes %d", numbytes); if (NULL == put_event (buf, numbytes, track)) g_warning ("Directive has invalid MIDI bytes"); } break; } } curobj->earliest_time = event->time_seconds; // taking the last one... curobj->latest_time = curobj->earliest_time + theduration * 60.0 / (cur_tempo * MIDI_RESOLUTION); ticks_read += theduration; } break; default: #if DEBUG fprintf (stderr, "midi ignoring type %d\n", curobj->type); #endif break; } //g_debug("Object type 0x%x Starts at %f Finishes %f\n",curobj->type, curobj->earliest_time, curobj->latest_time); } // end of objects /******************* * Do some checking *******************/ measurewidth = bars2ticks (1, timesigupper, timesiglower); if (((DenemoMeasure*)curmeasure->data)->objects == NULL) //An empty measure - treat as whole measure silence ticks_read = ticks_at_bar + measurewidth; if (ticks_at_bar + measurewidth != ticks_read) { if ((!measure_is_empty) && curmeasure->next) { g_warning ("warning: overfull measure in %s " "measure %d from %ld to %ld " "\n%sdifference is %ld, measure began at %ld)", curstaffstruct->lily_name->str, measurenum, ticks_read, ticks_at_bar + measurewidth, measure_has_odd_tuplet ? "(after unusual tuplet: " : "(", ticks_at_bar + measurewidth - ticks_read, ticks_at_bar); } if (debug) { printf ("\nmeasure is empty = %d", measure_is_empty); printf ("\nticks_at_bar %ld + measurewidth %d != ticks_read %ld\n", ticks_at_bar, measurewidth, ticks_read); printf ("\ninternal ticks = %d\n", internaltoticks (0)); } //ticks_read = ticks_at_bar + measurewidth;//+ internaltoticks (0); } else { ; //fprintf (stderr, "[%d]", measurenum); } fflush (stdout); /************************* * Done with this measure *************************/ } /* Done with this staff */ /*********************** * Done with this track ***********************/ //fprintf (stderr, "[%s done]\n", curstaffstruct->lily_name->str); fflush (stdout); /*gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(si->progressbar), fraction + gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(si->progressbar))); */ if (si->stafftoplay == 0) curstaff = curstaff->next; else break; } #if 0 { smf_event_t *event; smf_rewind (smf); while ((event=smf_get_next_event (smf))) g_print ("generated 0x%hhX 0x%hhX 0x%hhX\n", *(event->midi_buffer+0), *(event->midi_buffer+1), *(event->midi_buffer+2)); } #endif /******** * Done! ********/ save_smf_to_file (smf, thefilename); load_smf (si, smf); if (si->start_time < 0.0) si->start_time = 0.0; if (si->end_time < 0.0) si->end_time = smf_get_length_seconds (smf); g_debug ("Start time %f end time %f\n", si->start_time, si->end_time); call_out_to_guile ("(FinalizeMidiGeneration)"); return smf_get_length_seconds (smf); } void free_midi_data (DenemoMovement * si) { if (si->smf) { smf_t *temp = si->smf; si->smf = NULL; smf_delete (temp); } } /* * That's all, folks! * * End of exportmidi.c */ denemo-2.2.0/src/export/PaxHeaders.19168/exportabc.c0000644000000000000000000000013213135434036016774 xustar0030 mtime=1500919838.353315139 30 atime=1500919919.399981805 30 ctime=1500919914.256648472 denemo-2.2.0/src/export/exportabc.c0000644000175000017500000004116513135434036020654 0ustar00jjbenhamjjbenham00000000000000/* exportabc.cpp * Functions for exporting what Denemo's working on to an ABC file (adapted * somewhat from exportmudela.c) * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2001-2005 Eric Galluzzo */ #include #include #include "core/twoints.h" #include "core/utils.h" #include #include #include #include #include #include /** * Determine key signature from denemo value * */ static void determinebasekey (gint number, gchar ** basekey) { switch (number) { case -7: *basekey = "Cb"; break; case -6: *basekey = "Gb"; break; case -5: *basekey = "Db"; break; case -4: *basekey = "Ab"; break; case -3: *basekey = "Eb"; break; case -2: *basekey = "Bb"; break; case -1: *basekey = "F"; break; case 0: *basekey = "C"; break; case 1: *basekey = "G"; break; case 2: *basekey = "D"; break; case 3: *basekey = "A"; break; case 4: *basekey = "E"; break; case 5: *basekey = "B"; break; case 6: *basekey = "F#"; break; case 7: *basekey = "C#"; break; case 8: *basekey = "G#"; break; case 9: *basekey = "D#"; break; case 10: *basekey = "A#"; break; default: *basekey = _("%{error. defaulting to%}C"); break; } } /** * Determine clef from denemo value * */ static void determineclef (gint type, gchar ** clefname, gint * octaveshift) { switch (type) { case DENEMO_TREBLE_CLEF: *clefname = "treble"; *octaveshift = 0; break; case DENEMO_BASS_CLEF: *clefname = "bass"; *octaveshift = 2; break; case DENEMO_ALTO_CLEF: *clefname = "alto"; *octaveshift = 1; break; case DENEMO_G_8_CLEF: *clefname = "treble8"; *octaveshift = 1; break; case DENEMO_TENOR_CLEF: *clefname = "tenor"; /* FIXME: highly nonstandard */ *octaveshift = 1; /* FIXME: ditto */ break; case DENEMO_SOPRANO_CLEF: *clefname = "soprano"; /* FIXME: highly nonstandard */ *octaveshift = 0; /* FIXME: ditto */ break; default: *clefname = _("%{error. defaulting to%}treble"); *octaveshift = 0; break; } } /** * determine the timesig denominator * */ static gint determinedefaultlength (struct twoints *timesig) { /* For 1/x and 2/x time signatures, return x*2; for all others, return x. */ if (timesig->a < 3) return timesig->b << 1; else return timesig->b; } /** * Determine the length as it should be written to the ABC file as a fraction. * defaultlength is a denominator (e.g. "8"), the current default length * (e.g. "L:1/8"). duration and numdots are the Denemo duration and number of * dots, and the ABC length is returned in length. */ static void determinelength (gint duration, gint numdots, gint defaultlength, struct twoints *length) { /* ABC duration is: * numdots + 1 * defaultlength * (2 - 1) * ----------------------------------- * numdots + duration * 2 <-- = 1 << (numdots + duration) * * simplified as far as possible (defaultlength is always a multiple of 2). */ //gint i; gint num = 1; /* so far */ gint denom = 1 << (numdots + duration); while (denom > 1 && defaultlength > 1) { denom >>= 1; defaultlength >>= 1; } while (defaultlength > 1) { num <<= 1; defaultlength >>= 1; } num *= ((1 << (numdots + 1)) - 1); length->a = num; length->b = denom; } /** * Print out the given length (numerator/denominator), omitting 1's. */ static void printlength (FILE * fp, struct twoints *length) { if (length->a > 1) fprintf (fp, "%d", length->a); if (length->b > 1) { fprintf (fp, "/"); if (length->b > 2) fprintf (fp, "%d", length->b); } } /** * Print out the given chord, given the current default length. */ static void printchord (FILE * fp, chord * chordptr, gint octaveshift, gint defaultlength) { gint i; struct twoints length; determinelength (chordptr->baseduration, chordptr->numdots, defaultlength, &length); if (chordptr->notes) /* it's a note or chord, not a rest */ { /* If there's only one note, it's a note, not a chord. */ gboolean ischord = chordptr->notes->next != NULL; GList *curnotenode; note *curnote; gchar notename; gint octave; /* Print out the decorations and beginning of the slur (if any). */ if (chordptr->slur_begin_p) fprintf (fp, "("); if (ischord) fprintf (fp, "["); for (curnotenode = chordptr->notes; curnotenode != NULL; curnotenode = curnotenode->next) { curnote = (note *) curnotenode->data; notename = mid_c_offsettoname (curnote->mid_c_offset); octave = mid_c_offsettooctave (curnote->mid_c_offset) + octaveshift - 2; /* Print accidentals. */ if (curnote->showaccidental) { if (curnote->enshift > 0) { for (i = 0; i < curnote->enshift; i++) fprintf (fp, "^"); } else if (curnote->enshift < 0) { for (i = 0; i > curnote->enshift; i--) fprintf (fp, "_"); } else { fprintf (fp, "="); } } /* Print the note name. */ if (octave < 0) { octave += 1; notename = toupper (notename); } fprintf (fp, "%c", notename); /* Print the correct number of "'" or "," marks. */ if (octave > 0) { for (i = 0; i < octave; i++) fprintf (fp, "'"); } else { for (i = 0; i > octave; i--) fprintf (fp, ","); } printlength (fp, &length); } if (ischord) fprintf (fp, "]"); if (chordptr->slur_end_p) fprintf (fp, ")"); if (chordptr->is_tied) fprintf (fp, "-"); } else /* it's a rest */ { fprintf (fp, "z"); printlength (fp, &length); } } /** * Export the ABC. This works as follows: * 1. Write out all the headers (X:, T:, C:, Q:, and K:). * 2. Write out each voice in turn. */ void exportabc (gchar * thefilename, DenemoProject * gui, gint start, gint end) { DenemoMovement *si = gui->movement; gchar *clefname; gchar *basekeyname; FILE *fp; GString *filename = g_string_new (thefilename); /* FIXME: The following assumes that there is at least one staff. */ DenemoStaff *firststaffstruct = (DenemoStaff *) si->thescore->data; staffnode *curstaff; DenemoStaff *curstaffstruct; gint defaultlength; gint curvoicenum; gint octaveshift; measurenode *curmeasure; gint externalmeasurenum; gint internalmeasurenum; gboolean emptymeasure; objnode *curobjnode; DenemoObject *curobj; struct twoints curtime; gboolean curisnonprimary; gboolean nextisnonprimary; objnode *tupleobjnode; DenemoObject *tupleobj; gint notesintuple; gboolean ishomogenoustuple; gint prevduration; gint prevnumdots; gdouble fraction = 0; enum clefs type = DENEMO_TREBLE_CLEF; /* Append .abc onto the filename if necessary */ if (strcmp (filename->str + filename->len - 4, ".abc")) g_string_append (filename, ".abc"); /* Now open the file */ fp = fopen (filename->str, "w"); /* And cut off the filename extension for use in the file itself */ g_string_truncate (filename, filename->len - 4); fprintf (fp, _("%% ABC file generated by Denemo version ")); fprintf (fp, VERSION "\n\n"); fprintf (fp, "%% http://www.denemo.org\n\n"); /* We export the following headers in this order: * - X: (tune number) * - T: (title) * - C: (composer) * - Q: (tempo) * - M: (initial time signature) * - L: (initial default note length) * - %%staves (for the benefit of abcm2ps) * - K: (key signature) */ determinebasekey (firststaffstruct->keysig.isminor ? firststaffstruct->keysig.number + 3 : firststaffstruct->keysig.number, &basekeyname); curtime.a = firststaffstruct->timesig.time1; curtime.b = firststaffstruct->timesig.time2; defaultlength = determinedefaultlength (&curtime); fprintf (fp, "X:1\n"); fprintf (fp, "T:%s\n", "No title"); fprintf (fp, "Q:1/4=%d\n", si->tempo); fprintf (fp, "M:%d/%d\n", firststaffstruct->timesig.time1, firststaffstruct->timesig.time2); fprintf (fp, "L:1/%d\n", defaultlength); fraction = 1.0 / (gdouble) g_list_length (si->thescore); fraction /= 2; g_debug ("Fraction %lf", fraction); /* Figure out the %%staves comment. It should look something like: * %%staves [{(1 2) 3} 4 (5 6)] [7 8] 9 * * where {} denotes curly braces (e.g. a piano, harp, or organ staff), * [] denotes square braces, * and () denotes two voices on the same staff. */ fprintf (fp, "%%%%staves ["); for (curstaff = si->thescore, curvoicenum = 1; curstaff != NULL; curstaff = curstaff->next, curvoicenum++) { curstaffstruct = (DenemoStaff *) curstaff->data; nextisnonprimary = (curstaff->next != NULL && ((DenemoStaff *) curstaff->next->data)->voicecontrol & DENEMO_SECONDARY); curisnonprimary = (curstaffstruct->voicecontrol & DENEMO_SECONDARY); if (curvoicenum != 1) fprintf (fp, " "); if (!curisnonprimary && nextisnonprimary) fprintf (fp, "("); fprintf (fp, "%d", curvoicenum); if (curisnonprimary && !nextisnonprimary) fprintf (fp, ")"); } fprintf (fp, "]\n"); fprintf (fp, "K:%s%s\n", basekeyname, firststaffstruct->keysig.isminor ? "m" : ""); /* Now we output each voice in turn. */ for (curstaff = si->thescore, curvoicenum = 1; curstaff != NULL; curstaff = curstaff->next, curvoicenum++) { curstaffstruct = (DenemoStaff *) curstaff->data; determineclef (curstaffstruct->clef.type, &clefname, &octaveshift); determinebasekey (curstaffstruct->keysig.isminor ? curstaffstruct->keysig.number + 3 : curstaffstruct->keysig.number, &basekeyname); curtime.a = curstaffstruct->timesig.time1; curtime.b = curstaffstruct->timesig.time2; defaultlength = determinedefaultlength (&curtime); /* First, the V: header. FIXME: Output name="..." too. */ fprintf (fp, "%%\n%%\nV:%d clef=%s\n", curvoicenum, clefname); fprintf (fp, "I:octave=%d\n", -octaveshift); /* FIXME: nonstandard */ fprintf (fp, "M:%d/%d\n", curstaffstruct->timesig.time1, curstaffstruct->timesig.time2); fprintf (fp, "L:1/%d\n", defaultlength); fprintf (fp, "K:%s%s\n", basekeyname, curstaffstruct->keysig.isminor ? "m" : ""); /* Then the actual notes, measure for measure (sorry, excuse the bad * Shakespeare pun). */ for (curmeasure = curstaffstruct->themeasures, internalmeasurenum = MAX (start, 1), externalmeasurenum = 1; curmeasure != NULL && (end == 0 || internalmeasurenum <= end); curmeasure = curmeasure->next, externalmeasurenum++, internalmeasurenum++) { /* Print the measure number every 5 measures. */ if (externalmeasurenum % 5 == 0) fprintf (fp, "%%%d\n", externalmeasurenum); emptymeasure = TRUE; /* Print out everything in this measure. */ for (curobjnode = (objnode *) ((DenemoMeasure*)curmeasure->data)->objects; curobjnode; curobjnode = curobjnode->next) { curobj = (DenemoObject *) curobjnode->data; switch (curobj->type) { case CHORD: emptymeasure = FALSE; printchord (fp, (chord *) curobj->object, octaveshift, defaultlength); if (curobj->isend_beamgroup) fprintf (fp, " "); break; case CLEF: type = ((clef *) curobj->object)->type; determineclef (type, &clefname, &octaveshift); fprintf (fp, "[K:%s][I:octave=%d]", clefname, -octaveshift); break; case KEYSIG: determinebasekey (((keysig *) curobj->object)->isminor ? ((keysig *) curobj->object)->number + 3 : ((keysig *) curobj->object)->number, &basekeyname); fprintf (fp, "[K:%s%s]", basekeyname, ((keysig *) curobj->object)->isminor ? "m" : ""); break; case TIMESIG: curtime.a = ((timesig *) curobj->object)->time1; curtime.b = ((timesig *) curobj->object)->time2; defaultlength = determinedefaultlength (&curtime); fprintf (fp, "[M:%d/%d][L:1/%d]", curtime.a, curtime.b, defaultlength); break; case TUPOPEN: /* Count the number of chords in the tuplet, and determine * whether they are all of the same length. * * Note: This could eventually cross measures, maybe, and * the current algorithm doesn't take that into * account. */ notesintuple = 0; ishomogenoustuple = TRUE; prevduration = G_MAXINT; prevnumdots = G_MAXINT; for (tupleobjnode = curobjnode->next; tupleobjnode != NULL; tupleobjnode = tupleobjnode->next) { tupleobj = (DenemoObject *) tupleobjnode->data; if (tupleobj->type == TUPCLOSE) break; if (tupleobj->type == CHORD) { notesintuple++; if (ishomogenoustuple) { if ((prevduration != G_MAXINT && prevduration != ((chord *) tupleobj->object)->baseduration) || (prevnumdots != G_MAXINT && prevnumdots != ((chord *) tupleobj->object)->numdots)) { ishomogenoustuple = FALSE; } else { prevduration = ((chord *) tupleobj->object)->baseduration; prevnumdots = ((chord *) tupleobj->object)->numdots; } } /* End if ishomogenoustuple */ } /* End if tuple object is a chord */ } /* End for each object in tuple */ if (notesintuple == 3 && ishomogenoustuple && ((tupopen *) curobj->object)->numerator == 2 && ((tupopen *) curobj->object)->denominator == 3) /* a simple triplet */ fprintf (fp, "(3"); else fprintf (fp, "(%d:%d:%d", ((tupopen *) curobj->object)->denominator, ((tupopen *) curobj->object)->numerator, notesintuple); break; case GRACE_START: fprintf (fp, "{"); break; case GRACE_END: fprintf (fp, "}"); break; case TUPCLOSE: case STEMDIRECTIVE: case DYNAMIC: /* Do nothing at present. * FIXME: I should probably do the !pp! thing for dynamics * at some point, when it becomes mainstream in ABC * parsers. */ break; default: /* Danger, Will Robinson! */ g_warning ("Warning: unknown DenemoObject type \"%d\" " "found, ignoring", curobj->type); break; } /* End switch on object type */ } /* End for each note */ /* Print out (e.g.) "x3" for an empty measure. */ if (emptymeasure) fprintf (fp, "x%d ", curtime.a * (defaultlength / curtime.b)); /* And finally, of course, the barline. */ if (curmeasure->next) fprintf (fp, "|\n"); else fprintf (fp, "|]\n"); } /* End for each measure */ } /* End for each staff (voice) */ /* Clean up and go home. */ fclose (fp); g_string_free (filename, FALSE); } denemo-2.2.0/src/export/PaxHeaders.19168/audiofile.h0000644000000000000000000000013213135434036016753 xustar0030 mtime=1500919838.353315139 30 atime=1500919919.426648472 30 ctime=1500919914.253315139 denemo-2.2.0/src/export/audiofile.h0000644000175000017500000000200013135434036020614 0ustar00jjbenhamjjbenham00000000000000// audiofile.h // // Copyright 2013 Richard Shann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA 02110-1301, USA. #ifndef AUDIOFILE_H #define AUDIOFILE_H #include const gchar * recorded_audio_filename(void); gboolean export_recorded_audio (void); #endif denemo-2.2.0/src/export/PaxHeaders.19168/print.h0000644000000000000000000000013213135434036016146 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.436648472 30 ctime=1500919914.279981805 denemo-2.2.0/src/export/print.h0000644000175000017500000000755313135434036020031 0ustar00jjbenhamjjbenham00000000000000#ifndef PRINT_H #define PRINT_H #include #define PRINTMARKER (22) #define GREATER 2 #define SAME 1 #define LESSER 0 #define GPID_NONE (-1) #define INSTALLED_LILYPOND_VERSION "2.18.0" /* FIXME set via gub */ #define MANUAL _("Manual Updates") #define CONTINUOUS _("Continuous") #ifdef G_OS_WIN32 #define return_on_windows_if_printing \ if (Denemo.printstatus->printpid != GPID_NONE)\ {\ warningdialog (_("Already doing a print"));\ return;\ } #define return1_on_windows_if_printing \ if (Denemo.printstatus->printpid != GPID_NONE)\ {\ warningdialog (_("Already doing a print"));\ return 1;\ } #else #define return_on_windows_if_printing #define return1_on_windows_if_printing #endif typedef struct WwRectangle { gdouble x, y, width, height; } WwRectangle; //Width=0 means no rectangle set typedef struct WwPoint { gint x, y; } WwPoint; //Width=0 means no rectangle set typedef struct Curve { WwPoint p1, p2, p3, p4; } Curve; typedef enum { STAGE_NONE, Offsetting, Selecting, TargetEstablished, //the get_wysiwyg_info()->grob has been set SelectingNearEnd, SelectingFarEnd, DraggingNearEnd, DraggingFarEnd, WaitingForDrag, SelectingReference, WaitingForCurveDrag, SelectingPoint, Dragging1, Dragging2, Dragging3, Dragging4, TypesetForPlaybackView } WwStage; typedef enum { TASK_NONE, Positions, Padding, Offset, Shape } WwTask; typedef enum { OBJ_NONE, Beam, Slur, Tie, Articulation, BassFigure, } WwGrob; typedef struct WysiwygInfo { WwRectangle Mark; WwRectangle Reference; //reference is origin for LilyPond offsets, set by the user with blue cross wires. Curve Curve; gdouble curx, cury; // position of mouse pointer during motion //gdouble pointx, pointy; becomes near.x,y gboolean ObjectLocated; //TRUE when an external-link has just been followed back to a Denemo object gint button; //which mouse button was last pressed WwPoint nearpoint; //left hand end of slur, beam etc WwPoint farpoint; //right hand end of slur, beam etc WwPoint near_i; //initial left hand end of slur, beam etc WwPoint far_i; //initial right hand end of slur, beam etc WwPoint last_button_press; WwPoint last_button_release; WwStage stage; WwGrob grob; WwTask task; DenemoPosition pos; gboolean repeatable; //if pos is still the same, and the same edit parameters, just continue editing. GtkWidget *dialog; //an info dialog to tell the user what to do next... } WysiwygInfo; gint LilyPond_stderr; //A file descriptor to pipe for LilyPond's stderr GError *lily_err; GPid previewerpid; WysiwygInfo* get_wysiwyg_info(); void initialize_print_status (void); void printall_cb (DenemoAction * action, DenemoScriptParam * param); void printmovement_cb (DenemoAction * action, DenemoScriptParam * param); void printpart_cb (DenemoAction * action, DenemoScriptParam * param); void printselection_cb (DenemoAction * action, DenemoScriptParam * param); void printexcerptpreview_cb (DenemoAction * action, DenemoScriptParam * param); gchar *get_lily_version_string (void); void export_pdf (gchar * filename, DenemoProject * gui); void export_png (gchar * filename, GChildWatchFunc finish, DenemoProject * gui); void printpng_finished (GPid pid, gint status, GList * filelist); gboolean create_thumbnail (gboolean async, gchar* thumbnail_path); gchar *large_thumbnail_name (gchar * filepath); gboolean stop_lilypond (); void process_lilypond_errors (gchar * filename); gchar *get_printfile_pathbasename (void); void create_pdf (gboolean part_only, gboolean all_movements); void show_print_view (DenemoAction * action, DenemoScriptParam * param); void create_svg (gboolean part_only, gboolean all_movements); #endif /*PRINT_H */ denemo-2.2.0/src/export/PaxHeaders.19168/importmusicxml.c0000644000000000000000000000013213135434036020101 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.436648472 30 ctime=1500919914.276648472 denemo-2.2.0/src/export/importmusicxml.c0000644000175000017500000012272313135434036021761 0ustar00jjbenhamjjbenham00000000000000/* * importmusicxml.c * * Functions for importing a MusicXML file * * for Denemo, a gtk+ frontend to GNU Lilypond * (C) 2010 Richard Shann * * License: this file may be used under the FSF GPL version 3 or later */ #include #include #include "core/prefops.h" //for get_user_data_dir() #include "export/file.h" #include "core/utils.h" #include "core/view.h" /* libxml includes: for libxml2 this should be */ #include #include //A bad array access accessing before the array start is causing a crash sporadically (perhaps a bad xml file?) this pads the memory allocated as work-around //#define g_malloc0(a) (g_malloc0(2*(a)) + (a)) gint InitialVoiceNum = 0; GString *Warnings; /* Defines for making traversing XML trees easier */ #define FOREACH_CHILD_ELEM(childElem, parentElem) \ for ((childElem) = (parentElem)->xmlChildrenNode; \ (childElem) != NULL; \ (childElem) = (childElem)->next) #define ELEM_NAME_EQ(childElem, childElemName) \ (strcmp ((gchar *)(childElem)->name, (childElemName)) == 0) #define ILLEGAL_ELEM(parentElemName, childElem) \ do \ { \ g_warning ("Illegal element inside <%s>: <%s>", parentElemName, \ (childElem)->name); \ } while (0) #define RETURN_IF_ELEM_NOT_FOUND(parentElemName, childElem, childElemName) \ do \ { \ if (childElem == NULL) \ { \ g_warning ("Element <%s> not found inside <%s>", childElemName, \ parentElemName); \ return -1; \ } \ } while (0) /** * Get the text from the child node list of elem, convert it to an integer, * and return it. If unsuccessful, return G_MAXINT. */ static gint getXMLIntChild (xmlNodePtr elem) { gchar *text = (gchar *) xmlNodeListGetString (elem->doc, elem->xmlChildrenNode, 1); gint num = G_MAXINT; if (text == NULL) { g_warning ("No child text found %s", elem->name); } else { if (sscanf (text, " %d", &num) != 1) { g_warning ("Could not convert child text \"%s\" of <%s> to number", text, elem->name); num = G_MAXINT; } g_free (text); } return num; } #define INSERT_REST(num, den, rest) \ if(duration >= (num*divisions)/den)\ {\ g_string_append (script, "(d-InsertRest" rest ")(d-SetNonprinting)");\ return insert_invisible_rest (script, duration - (num*divisions)/den, divisions);\ } else static gint insert_invisible_rest (GString * script, gint duration, gint divisions) { //g_assert (divisions); if (duration == 0) return TRUE; //g_debug("invis rest %d, %d\n", duration, divisions); INSERT_REST (4, 1, "0") INSERT_REST (2, 1, "1") INSERT_REST (1, 1, "2") INSERT_REST (1, 2, "3") INSERT_REST (1, 4, "4") INSERT_REST (1, 8, "5") INSERT_REST (1, 16, "6") INSERT_REST (1, 32, "7") INSERT_REST (1, 64, "8") g_warning ("Cannot cope with rest of %d/%d quarter notes", duration, divisions); return FALSE; } #undef INSERT_REST static void parse_time (GString ** scripts, gint numvoices, gint measurenum, xmlNodePtr rootElem) { xmlNodePtr childElem; gint numerator = 0, denominator = 0; gint i; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "beats")) numerator = getXMLIntChild (childElem); if (ELEM_NAME_EQ (childElem, "beat-type")) denominator = getXMLIntChild (childElem); } if (numerator && denominator) for (i = 0; i < numvoices; i++) if (measurenum == 1) g_string_append_printf (scripts[i + 1], "(d-InitialTimeSig \"%d/%d\")", numerator, denominator); else g_string_append_printf (scripts[i + 1], "(d-InsertTimeSig \"%d/%d\")(if (not (Appending?))(d-MoveCursorRight))", numerator, denominator); } const gchar * get_clef (gint line, gchar * sign) { switch (line) { case 1: if (*sign == 'G') return "French"; case 2: if (*sign == 'G') return "Treble"; case 3: if (*sign == 'C') return "Alto"; case 4: if (*sign == 'F') return "Bass"; if (*sign == 'C') return "Tenor"; default: return "Treble"; } } static void parse_key (GString ** scripts, gint numvoices, gint measurenum, xmlNodePtr rootElem) { xmlNodePtr childElem; gint fifths = 0; gchar *mode = NULL; gint i; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "fifths")) fifths = getXMLIntChild (childElem); if (ELEM_NAME_EQ (childElem, "mode")) mode = xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); } if (mode) for (i = 0; i < numvoices; i++) if (measurenum == 1) g_string_append_printf (scripts[i + 1], "(d-InitialKey \"C major\")(d-IncrementKeysig %d)", fifths); else g_string_append_printf (scripts[i + 1], "(d-InsertKey \"C major\")(d-IncrementKeysig %d)", fifths); g_free (mode); } static void parse_clef (GString ** scripts, gint division, gint * voice_timings, gint voicenum, gint numvoices, gint * staff_for_voice, gint divisions, gint measurenum, xmlNodePtr rootElem) { xmlNodePtr childElem; gint line = 0; gchar *sign = NULL; gchar *number = xmlGetProp (rootElem, (xmlChar *) "number"); gint staffnum = 0; if (number) staffnum = atoi (number); if (staffnum == 0) staffnum = 1; FOREACH_CHILD_ELEM (childElem, rootElem) { //g_debug("clef change %s \n", childElem->name); if (ELEM_NAME_EQ (childElem, "line")) line = getXMLIntChild (childElem); if (ELEM_NAME_EQ (childElem, "sign")) sign = xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); } //g_assert(voicenum>0); if (division > voice_timings[voicenum - 1]) { insert_invisible_rest (scripts[voicenum], division - voice_timings[voicenum - 1], divisions); voice_timings[voicenum - 1] = division; } if (sign) { gint i; const gchar *clef = get_clef (line, sign); for (i = 0; i < numvoices; i++) { if (staff_for_voice[i] == staffnum) if (measurenum == 1) g_string_append_printf (scripts[i + 1], "(d-InitialClef \"%s\")", clef); else g_string_append_printf (scripts[i + 1], "(d-InsertClef \"%s\")", clef); } } g_free (sign); } static const gchar * alteration (gint alter) { switch (alter) { case -2: return "eses"; case -1: return "es"; case 1: return "is"; case 2: return "isis"; default: return ""; } } static const gchar * octave_string (gint octave) { gchar *octavation; switch (octave) { case 0: octavation = ",,,"; break; case 1: octavation = ",,"; break; case 2: octavation = ","; break; case 3: octavation = ""; break; case 4: octavation = "'"; break; case 5: octavation = "''"; break; case 6: octavation = "'''"; break; case 7: octavation = "''''"; break; case 8: octavation = "'''''"; break; case 9: octavation = "''''''"; break; default: octavation = "%{duration not implemented%}"; break; } return octavation; } static gchar * insert_note (gchar * type, gint octave, gchar * step, gint alter) { if (step == NULL) { g_warning ("Note without step"); return g_strdup (""); } gchar *duration_text = ""; if (!strcmp (type, "whole")) duration_text = "\n(d-Set0)"; else if (!strcmp (type, "half")) duration_text = "\n(d-Set1)"; else if (!strcmp (type, "quarter")) duration_text = "\n(d-Set2)"; else if (!strcmp (type, "eighth")) duration_text = "\n(d-Set3)"; else if (!strcmp (type, "16th")) duration_text = "\n(d-Set4)"; else if (!strcmp (type, "32nd")) duration_text = "\n(d-Set5)"; else if (!strcmp (type, "64th")) duration_text = "\n(d-Set6)"; else if (!strcmp (type, "128th")) duration_text = "\n(d-Set7)"; else if (!strcmp (type, "256th")) duration_text = "\n(d-Set8)"; else if (!strcmp (type, "breve")) duration_text = "\n(d-SetBreve)"; else if (!strcmp (type, "longa")) duration_text = "\n(d-SetLonga)"; else g_warning ("Note duration %s not implemented", type); const gchar *octavation = octave_string (octave); gchar *put_text = g_strdup_printf ("(d-InsertC)(d-PutNoteName \"%c%s%s\")", g_ascii_tolower (*step), alteration (alter), octavation); GString *ret = g_string_new (duration_text); g_string_append (ret, put_text); return g_string_free (ret, FALSE); } static gchar * add_note (gint octave, gchar * step, gint alter) { // d-InsertNoteInChord lily (d-ShiftCursor is relative (d-MoveTo ???? const gchar *octavation = octave_string (octave); gchar *text = g_strdup_printf ("(d-InsertNoteInChord \"%c%s%s\")", g_ascii_tolower (*step), alteration (alter), octavation); GString *ret = g_string_new (text); g_free (text); return g_string_free (ret, FALSE); } static void get_numstaffs_from_note (xmlNodePtr rootElem, gint * maxstaffs, gint * maxvoices) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "staff")) { gint staffnum = getXMLIntChild (childElem); if (staffnum > *maxstaffs) *maxstaffs = staffnum; //g_debug("staff num %d ...", staffnum); } if (ELEM_NAME_EQ (childElem, "voice")) { gint voicenum = getXMLIntChild (childElem); if (voicenum > *maxvoices) *maxvoices = voicenum; } } //g_debug("So far %d %d\t", *maxstaffs, *maxvoices); } static void get_numstaffs_in_measure (xmlNodePtr rootElem, gint * maxstaffs, gint * maxvoices) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "note")) { get_numstaffs_from_note (childElem, maxstaffs, maxvoices); } if (ELEM_NAME_EQ (childElem, "backup")) { //should someone do backup without specifying a voice for it. if (*maxvoices == 1) *maxvoices = (*maxvoices) + 1; } } } static gint parseDuration (gint * current_voice, xmlNodePtr rootElem) { xmlNodePtr childElem; gint duration = 0; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "duration")) duration = getXMLIntChild (childElem); if (ELEM_NAME_EQ (childElem, "voice")) *current_voice = getXMLIntChild (childElem); } return duration; } static void get_rest_for_duration (GString * ret, gint duration, gint divisions) { //g_debug("Rest duration %d, divisions %d\n", duration, divisions); if (duration >= 4 * divisions) { g_string_append (ret, "(d-InsertRest0)"); duration -= 4 * divisions; return get_rest_for_duration (ret, duration, divisions); } else if (duration >= 2 * divisions) { g_string_append (ret, "(d-InsertRest1)"); duration -= 2 * divisions; return get_rest_for_duration (ret, duration, divisions); } else if (duration >= 1 * divisions) { g_string_append (ret, "(d-InsertRest2)"); duration -= 1 * divisions; return get_rest_for_duration (ret, duration, divisions); } else if (2 * duration >= divisions && (divisions / 2)) { g_string_append (ret, "(d-InsertRest3)"); duration -= divisions / 2; return get_rest_for_duration (ret, duration, divisions); } else if (4 * duration >= divisions && (divisions / 4)) { g_string_append (ret, "(d-InsertRest4)"); duration -= divisions / 4; return get_rest_for_duration (ret, duration, divisions); } else if (8 * duration >= divisions && (divisions / 8)) { g_string_append (ret, "(d-InsertRest5)"); duration -= divisions / 8; return get_rest_for_duration (ret, duration, divisions); } else if (16 * duration >= divisions && (divisions / 16)) { g_string_append (ret, "(d-InsertRest6)"); duration -= divisions / 16; return get_rest_for_duration (ret, duration, divisions); } else if (32 * duration >= divisions && (divisions / 32)) { g_string_append (ret, "(d-InsertRest7)"); duration -= divisions / 32; return get_rest_for_duration (ret, duration, divisions); } else if (duration == 0) return; g_string_append (ret, "\n;Duration of rest not recognized\n"); } static gchar * add_rest (gchar * type, gint duration, gint divisions) { gchar *duration_text = ""; if (!strcmp (type, "whole")) { if (4 * divisions == duration) duration_text = "(d-InsertRest0)"; else { GString *ret = g_string_new (""); get_rest_for_duration (ret, duration, divisions); return g_string_free (ret, FALSE); } } else if (!strcmp (type, "half")) duration_text = "(d-InsertRest1)"; else if (!strcmp (type, "quarter")) duration_text = "(d-InsertRest2)"; else if (!strcmp (type, "eighth")) duration_text = "(d-InsertRest3)"; else if (!strcmp (type, "16th")) duration_text = "(d-InsertRest4)"; else if (!strcmp (type, "32nd")) duration_text = "(d-InsertRest5)"; else if (!strcmp (type, "64th")) duration_text = "(d-InsertRest6)"; else if (!strcmp (type, "128th")) duration_text = "(d-InsertRest7)"; else if (!strcmp (type, "256th")) duration_text = "(d-InsertRest8)"; else if (!strcmp (type, "breve")) duration_text = "(d-InsertBreveRest)"; else if (!strcmp (type, "longa")) duration_text = "(d-InsertLongaRest)"; else g_warning ("Restduration %s not implemented", type); return g_strdup (duration_text); } static void modify_time (xmlNodePtr rootElem, gint * actual_notes, gint * normal_notes) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "actual-notes")) *actual_notes = getXMLIntChild (childElem); if (ELEM_NAME_EQ (childElem, "normal-notes")) *normal_notes = getXMLIntChild (childElem); } } static void parse_ornaments (GString * notations, xmlNodePtr rootElem) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "trill-mark")) { g_string_append (notations, "(d-ToggleTrill)"); } if (ELEM_NAME_EQ (childElem, "turn")) { g_string_append (notations, "(d-ToggleTurn)"); } } } static void parse_articulations (GString * notations, xmlNodePtr rootElem) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "staccato")) g_string_append (notations, "(d-ToggleStaccato)"); if (ELEM_NAME_EQ (childElem, "staccatissimo")) g_string_append (notations, "(d-ToggleStaccatissimo)"); } } static void parse_notations (GString * notations, xmlNodePtr rootElem) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "articulations")) { parse_articulations (notations, childElem); } if (ELEM_NAME_EQ (childElem, "slur")) { gchar *type = xmlGetProp (childElem, (xmlChar *) "type"); if (type && (!strcmp (type, "start"))) g_string_append (notations, "(d-ToggleBeginSlur)"); if (type && (!strcmp (type, "stop"))) g_string_append (notations, "(d-ToggleEndSlur)"); } if (ELEM_NAME_EQ (childElem, "fermata")) { g_string_append (notations, "(d-ToggleFermata)"); } // I think we need functions to apply that aren't toggles. //note tuplets will be ignored, we will depend on the timing changes (as at present), since tuplet start/end is a separate object which once inserted prevents us seeing the note/chord if (ELEM_NAME_EQ (childElem, "ornaments")) parse_ornaments (notations, childElem); } } // *division is the current position of the tick counter from the start of the measure static gchar * parse_note (xmlNodePtr rootElem, GString ** scripts, gint * staff_for_voice, gint * division, gint divisions, gint * voice_timings, gint * current_voice, gint * actual_notes, gint * normal_notes, gboolean is_nonprinting) { GString *ret = g_string_new (""); xmlNodePtr childElem; gint octave, alter = 0; gchar *step = NULL; gchar *type = NULL; gboolean in_chord = FALSE, is_dotted = FALSE, is_double_dotted = FALSE, is_rest = FALSE, is_whole_measure_rest = FALSE, is_grace = FALSE, is_tied = FALSE; GString *notations = g_string_new (""); gint voicenum = 1, staffnum = 1; gint duration = 0; gint initial_actual_notes = *actual_notes; gint initial_normal_notes = *normal_notes; gboolean timing_set = FALSE; //for case where one voice ends during a tuplet and the next one starts during a tuplet GString *text = g_string_new (""); FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "pitch")) { xmlNodePtr grandchildElem; FOREACH_CHILD_ELEM (grandchildElem, childElem) { if (ELEM_NAME_EQ (grandchildElem, "step")) step = xmlNodeListGetString (grandchildElem->doc, grandchildElem->xmlChildrenNode, 1); if (ELEM_NAME_EQ (grandchildElem, "octave")) octave = getXMLIntChild (grandchildElem); if (ELEM_NAME_EQ (grandchildElem, "alter")) alter = getXMLIntChild (grandchildElem); } } if (ELEM_NAME_EQ (childElem, "chord")) { in_chord = TRUE; } if (ELEM_NAME_EQ (childElem, "grace")) { is_grace = TRUE; } if (ELEM_NAME_EQ (childElem, "rest")) { is_rest = TRUE; gchar *whole = xmlGetProp (childElem, (xmlChar *) "measure"); is_whole_measure_rest = !g_strcmp0 (whole , "yes"); } if (ELEM_NAME_EQ (childElem, "dot")) { if (is_dotted) is_double_dotted = TRUE; is_dotted = TRUE; } if (ELEM_NAME_EQ (childElem, "tie")) { gchar *start = xmlGetProp (childElem, (xmlChar *) "type"); if (start && !strcmp ("start", start)) is_tied = TRUE; } if (ELEM_NAME_EQ (childElem, "type")) type = xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (ELEM_NAME_EQ (childElem, "duration")) { duration = getXMLIntChild (childElem); } if (ELEM_NAME_EQ (childElem, "voice")) voicenum = getXMLIntChild (childElem); if (ELEM_NAME_EQ (childElem, "staff")) staffnum = getXMLIntChild (childElem); /* */ if (ELEM_NAME_EQ (childElem, "notations")) { parse_notations (notations, childElem); } if (ELEM_NAME_EQ (childElem, "time-modification")) { timing_set = TRUE; modify_time (childElem, actual_notes, normal_notes); } } if (voicenum < 1) { g_warning ("Bad MusicXML file voice 0 encountered"); voicenum = 1; } if (staffnum < 1) { g_warning ("Bad MusicXML file staff 0 encountered"); staffnum = 1; } if (staff_for_voice[voicenum - 1] == 0) staff_for_voice[voicenum - 1] = staffnum; #ifdef FIXED_PROBLEM_WITH_VOICE_CHANGE_IN_CHORDS // PROBLEM - this inserts an object which will come before inserting notes in a chord... // Do we need a command to add a note to a chord which works in this position???? otherwise it's like tuplets. if (!in_chord && (staff_for_voice[voicenum - 1] != staffnum)) { g_string_append_printf (scripts[voicenum], "(d-ChangeStaff \"voice %d\")(d-MoveCursorRight)", staffnum + InitialVoiceNum); //always at end of bar !!!!!!!!!!! voice 1 staff 1 in debmand example. staff_for_voice[voicenum - 1] = staffnum; // g_warning("Voice %d in staff %d + %d need a staff change directive", voicenum, staffnum, InitialVoiceNum); } #else if (!in_chord && (staff_for_voice[voicenum - 1] != staffnum)) { g_string_append (ret, "Change Staff Omitted "); } #endif if (*division > voice_timings[voicenum - 1]) { insert_invisible_rest (scripts[voicenum], *division - voice_timings[voicenum - 1], divisions); voice_timings[voicenum - 1] = *division; } if (type) { g_string_append (text, in_chord ? add_note (octave, step, alter) : (is_rest ? add_rest (type, duration, divisions) : insert_note (type, octave, step, alter))); if (is_nonprinting) g_string_append (text, "(d-SetNonprinting)"); if (!(in_chord || is_grace)) voice_timings[voicenum - 1] += duration; if (is_tied && !in_chord) g_string_append (text, "(d-ToggleTie)"); if (is_grace) g_string_append (text, "(d-ToggleGrace)"); if ((!in_chord) && is_dotted) g_string_append (text, "(d-AddDot)"); if (is_double_dotted) g_string_append (text, "(d-AddDot)"); } else if (is_rest) { //for the case where a rest is given without a type, just a duration. if(is_whole_measure_rest) g_string_append (text, "(d-InsertWholeMeasureRest)(d-MoveCursorLeft)"); else get_rest_for_duration (text, duration, divisions); voice_timings[voicenum - 1] += duration; } if (!timing_set) { *actual_notes = 1; *normal_notes = 1; } if (((*current_voice != voicenum) && !(((initial_actual_notes) == 1) && (initial_normal_notes == 1)))) { /* an unterminated tuplet in the last voice *///g_assert(*current_voice>0); g_string_append (scripts[*current_voice], "\n;Voice terminated during a tuplet\n(d-EndTuplet)"); initial_actual_notes = 1; initial_normal_notes = 1; } if (((initial_actual_notes != *actual_notes) || (initial_normal_notes != *normal_notes))) { gchar *str; if ((initial_actual_notes) == 1 && (initial_normal_notes == 1)) str = g_strdup_printf ("(d-StartTuplet \"%d/%d\")", *normal_notes, *actual_notes); //str = g_strdup_printf("\n;not end tuplet and entered with normal timings %d \n(d-StartTuplet \"%d/%d\")", in_chord, *normal_notes, *actual_notes); else { if (*normal_notes==1 && *actual_notes==1) str = g_strdup_printf ("\n;Leaving tuplet timing\n(d-EndTuplet)"); else str = g_strdup_printf ("\n;Changed timings\n(d-EndTuplet)(d-StartTuplet \"%d/%d\")", *normal_notes, *actual_notes); } g_string_append (scripts[voicenum], str); g_free (str); } g_string_append (scripts[voicenum], text->str); g_string_append (scripts[voicenum], notations->str); g_string_free (notations, TRUE); g_string_free (text, TRUE); if (!(in_chord || is_grace)) *division = *division + duration; *current_voice = voicenum; g_free (step); g_free (type); return g_string_free (ret, FALSE); } static void get_staff_for_voice_note (xmlNodePtr rootElem, gint * staff_for_voice) { xmlNodePtr childElem; gint voicenum = 1, staffnum = 1; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "voice")) voicenum = getXMLIntChild (childElem); if (ELEM_NAME_EQ (childElem, "staff")) staffnum = getXMLIntChild (childElem); } if (voicenum < 1) { g_warning ("Bad MusicXML file voice 0 encountered"); voicenum = 1; } if (staffnum < 1) { g_warning ("Bad MusicXML file staff 0 encountered"); staffnum = 1; } if (staff_for_voice[voicenum - 1] == 0) staff_for_voice[voicenum - 1] = staffnum; } static void parse_attributes (xmlNodePtr rootElem, GString ** scripts, gint numvoices, gint * staff_for_voice, gint division, gint * voice_timings, gint * divisions, gint * current_voice, gint measurenum) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, rootElem) { //g_debug("attribute %s at division %d\n", childElem->name, division); if (ELEM_NAME_EQ (childElem, "time")) parse_time (scripts, numvoices, measurenum, childElem); if (ELEM_NAME_EQ (childElem, "key")) parse_key (scripts, numvoices, measurenum, childElem); if (ELEM_NAME_EQ (childElem, "clef")) parse_clef (scripts, division, voice_timings, *current_voice, numvoices, staff_for_voice, *divisions, measurenum, childElem); if (ELEM_NAME_EQ (childElem, "divisions")) *divisions = getXMLIntChild (childElem); } } static void parse_barline (xmlNodePtr rootElem, GString ** scripts, gint numvoices) { xmlNodePtr childElem; gchar *text = NULL; gchar *style = NULL, *repeat = NULL; gint i; FOREACH_CHILD_ELEM (childElem, rootElem) { //g_debug("attribute %s at division %d\n", childElem->name, division); if (ELEM_NAME_EQ (childElem, "bar-style")) style = xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if (ELEM_NAME_EQ (childElem, "repeat")) repeat = xmlGetProp (childElem, "direction"); } if (repeat) { if ((!strcmp (repeat, "backward"))) text = "(d-RepeatEnd)"; else if ((!strcmp (repeat, "forward"))) text = "(d-RepeatStart)"; else if ((!strcmp (repeat, "forward-backward"))) text = "(d-RepeatEndStart)"; } else if (style) { if ((!strcmp (style, "light-light"))) text = "(d-DoubleBarline)"; else if ((!strcmp (style, "light-heavy"))) text = "(d-ClosingBarline)"; } if (text) for (i = 0; i < numvoices; i++) g_string_append (scripts[i + 1], text); g_free (style); } /* */ static gchar * parse_direction_type (xmlNodePtr rootElem, GString * script, gchar *placement) { xmlNodePtr childElem; gchar *pending = NULL; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "wedge")) { gchar *type = xmlGetProp (childElem, (xmlChar *) "type"); gchar *spread = xmlGetProp (childElem, (xmlChar *) "spread"); if (type && spread) { if (!strcmp (type, "crescendo")) g_string_append (script, "(if (Appending?)(d-MoveCursorLeft))(d-ToggleStartCrescendo)(GoToMeasureEnd)"); if (!strcmp (type, "diminuendo")) g_string_append (script, "(if (Appending?)(d-MoveCursorLeft))(d-ToggleStartDiminuendo)(GoToMeasureEnd)"); if (!strcmp (type, "stop")) { if (!strcmp (spread, "0")) g_string_append (script, "(if (Appending?)(d-MoveCursorLeft))(d-ToggleEndDiminuendo)(GoToMeasureEnd)"); else g_string_append (script, "(if (Appending?)(d-MoveCursorLeft))(d-ToggleEndCrescendo)(GoToMeasureEnd)"); } } } if (ELEM_NAME_EQ (childElem, "words")) { //FIXME get italic etc here xmlGetProp gchar *words = xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); //pending = g_strdup_printf ("(d-TextAnnotation \"%s\")(GoToMeasureEnd)", g_strescape(words, NULL)); gchar *font_style = xmlGetProp (childElem, "font-style"); if(font_style) { if(!strcmp(font_style, "italic")) font_style = "\\\\italic"; else font_style = ""; } else font_style = ""; if(placement) { if(!strcmp(placement, "above")) placement = "^"; else if(!strcmp(placement, "below")) placement = "_"; else placement = "-"; } else placement = "-"; //if(pending==NULL) // pending = ""; gchar *thewords = escape_scheme (words); pending = g_strdup_printf ("(StandaloneText \"TextAnnotation\" \"%s\" \"%s\" \"%s\")(GoToMeasureEnd)", /*words g_strescape(words, NULL)*/ escape_scheme (words), placement, font_style); g_free (thewords); g_free (words); } /* 4 2 */ if (ELEM_NAME_EQ (childElem, "dynamics")) { // if(pending==NULL) // pending = ""; // pending = g_strdup_printf ("%s(d-DynamicText \"%s\")(GoToMeasureEnd)", pending, childElem->xmlChildrenNode->name); g_string_append_printf (script, "(if (Appending?)(d-MoveCursorLeft))(d-DynamicText \"%s\")(GoToMeasureEnd)", childElem->xmlChildrenNode->name); } } return pending; } static gchar * parse_direction (xmlNodePtr rootElem, GString * script, gchar *placement) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "direction-type")) return parse_direction_type (childElem, script, placement); } return NULL; } static void get_staff_for_voice_measure (xmlNodePtr rootElem, gint * staff_for_voice) { xmlNodePtr childElem; gint division = 0; gint current_voice = 1; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "note")) { get_staff_for_voice_note (childElem, staff_for_voice); } } } static gchar * parse_measure (xmlNodePtr rootElem, GString ** scripts, gint * staff_for_voice, gint * divisions, gint * voice_timings, gint numvoices, gint measurenum) { GString *ret = g_string_new (""); gint note_count = 0; xmlNodePtr childElem; gint division = 0; gint current_voice = 1; gint actual_notes = 1, normal_notes = 1; /* for tuplets */ gint last_voice_with_notes = 1; /* in case a voice with not "note" elements moves the current voice on while unfinished stuff in last voice */ GString *pendings = g_string_new(""); FOREACH_CHILD_ELEM (childElem, rootElem) { //g_debug("name %s at voicenumber %d at division %d\n", childElem->name, current_voice, division); if (ELEM_NAME_EQ (childElem, "attributes")) parse_attributes (childElem, scripts, numvoices, staff_for_voice, division, voice_timings, divisions, ¤t_voice, measurenum); if (ELEM_NAME_EQ (childElem, "backup")) { division -= parseDuration (¤t_voice, childElem); //g_debug("backward arrives at %d\n", division); } if (ELEM_NAME_EQ (childElem, "forward")) { division += parseDuration (¤t_voice, childElem); //g_debug("forward arrives at %d\n", division); } if (ELEM_NAME_EQ (childElem, "note")) { gchar *printing = xmlGetProp (childElem, "print-object"); gboolean is_nonprinting = FALSE; if (printing && !strcmp (printing, "no")) is_nonprinting = TRUE; gchar *warning = parse_note (childElem, scripts, staff_for_voice, &division, *divisions, voice_timings, ¤t_voice, &actual_notes, &normal_notes, is_nonprinting); if(pendings->len) { g_string_prepend (pendings, "(d-MoveCursorLeft)"); g_string_append (scripts[current_voice], pendings->str); g_string_assign(pendings, ""); } note_count++; if (*warning) g_string_append_printf (ret, "%s at note number %d, ", warning, note_count); last_voice_with_notes = current_voice; } if (ELEM_NAME_EQ (childElem, "direction")) { //g_assert(current_voice>0); gchar *placement = xmlGetProp (childElem, "placement"); gchar *text = parse_direction (childElem, scripts[current_voice], placement); if(text) g_string_append(pendings, text); } if (ELEM_NAME_EQ (childElem, "barline")) { parse_barline (childElem, scripts, numvoices); } } //g_assert(last_voice_with_notes>0); if ((actual_notes != 1) || (normal_notes != 1)) g_string_append_printf (scripts[last_voice_with_notes], "\n;measure end with tuplet still active in voice %d\n(d-EndTuplet)", current_voice); g_string_free(pendings, TRUE); return g_string_free (ret, FALSE); } static gchar * parse_part (xmlNodePtr rootElem) { GString *warnings = g_string_new (""); gint i, j; xmlNodePtr childElem; gint numstaffs = 1, numvoices = 1; gint divisions = 384; //will be overriden anyway. FOREACH_CHILD_ELEM (childElem, rootElem) { gint maxstaffs = 1, maxvoices = 1; if (ELEM_NAME_EQ (childElem, "measure")) { get_numstaffs_in_measure (childElem, &maxstaffs, &maxvoices); if (maxstaffs > numstaffs) numstaffs = maxstaffs; if (maxvoices > numvoices) numvoices = maxvoices; } } g_info ("Number of staffs %d, voices %d\n", numstaffs, numvoices); gint *staff_for_voice = (gint *) g_malloc0 (numvoices * sizeof (gint)); GString **scripts = (GString **) g_malloc0 ((1 + numvoices) * sizeof (GString *)); for (i = 0; i <= numvoices; i++) scripts[i] = g_string_new ("\n"); gint *voice_timings = (gint *) g_malloc0 (numvoices * sizeof (gint)); FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "measure")) { get_staff_for_voice_measure (childElem, staff_for_voice); } } for (i = 0; i < numvoices; i++) if (staff_for_voice[i] == 0) { g_info ("Voicenum %d was not actually used", i + 1); staff_for_voice[i] = 1; //if a voice was not actually used, assign it to the first staff } gint *numvoices_for_staff = (gint *) g_malloc0 (numstaffs * sizeof (gint)); for (i = 0; i < numvoices; i++) { //g_assert(staff_for_voice[i]>0); numvoices_for_staff[staff_for_voice[i] - 1]++; } /* create script to make enough staffs and voices, we are already in staff 1 voice 1 */ g_string_append (scripts[0], "(d-PushPosition)"); for (i = 0; i < numstaffs; i++) { //g_debug("Staff %d with %d voices\n", i, numvoices_for_staff[i]); if (i > 0) /*already have first staff */ g_string_append (scripts[0], "(d-AddAfter)"); for (j = 1 /*already have first voice */ ; j < numvoices_for_staff[i]; j++) { //g_debug("Voice %d on Staff %d\n", j, i); g_string_append (scripts[0], "(d-AddAfter)(d-SetCurrentStaffAsVoice)"); } } g_string_append (scripts[0], "(d-PopPosition)"); g_string_append (scripts[0], "(d-PushPosition)"); gint measure_count = 1; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "measure")) { gint maxduration = 0; memset (voice_timings, 0, numvoices * sizeof (gint)); gchar *warning = parse_measure (childElem, scripts, staff_for_voice, &divisions, voice_timings, numvoices, measure_count); if (*warning) g_string_append_printf (warnings, "%s in bar %d.\n", warning, measure_count); for (i = 0; i < numvoices; i++) if (maxduration < voice_timings[i]) maxduration = voice_timings[i]; for (i = 0; i < numvoices; i++) { if (voice_timings[i] < maxduration) { insert_invisible_rest (scripts[i + 1], maxduration - voice_timings[i], divisions); } g_string_append (scripts[0], scripts[i + 1]->str); g_string_assign (scripts[i + 1], ""); g_string_append_printf (scripts[0], "%s\n;;;;;;;finished voice %d\n", "(d-MoveToStaffDown)", i + 1); voice_timings[i] = 0; } g_string_append_printf (scripts[0], "(d-PopPosition)(if (not (d-MoveToMeasureRight))(d-AddMeasure))(d-PushPosition)\n;;;;;;;;;End of measure %d\n ", measure_count); measure_count++; } } g_string_append (scripts[0], "(d-PopPosition)"); for (i = 0; i < numvoices; i++) { g_string_append (scripts[0], "(d-MoveToBeginning)(d-MoveToStaffDown)"); } g_string_append (scripts[0], "(d-AddAfter)(d-InitialKey \"C major\")"); if (warnings->len) g_warning ("Parsing MusicXML gave these warnings:\n%s", warnings->str); g_string_free (warnings, TRUE); InitialVoiceNum += numvoices; g_free (numvoices_for_staff); g_free (staff_for_voice); g_free (voice_timings); return g_string_free (scripts[0], FALSE); } static void parse_identification (xmlNodePtr rootElem, GString *script) { gchar *title = NULL; xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "creator")) { title = xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); g_string_append_printf (script, "(d-BookComposer \"%s\")", title); } if (ELEM_NAME_EQ (childElem, "rights")) { title = xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); g_string_append_printf (script, "(d-BookCopyright \"%s\")", title); } } g_free (title); } gint mxmlinput (gchar * filename) { GError *err = NULL; gint ret = 0; xmlDocPtr doc = NULL; xmlNsPtr ns; xmlNodePtr rootElem; gboolean spillover = Denemo.prefs.spillover; Denemo.prefs.spillover = FALSE; /* ignore blanks between nodes that appear as "text" */ xmlKeepBlanksDefault (0); /* Try to parse the file. */ doc = xmlParseFile (filename); if (doc == NULL) { g_warning ("Could not read MusicXML file %s", filename); Denemo.prefs.spillover = spillover; return -1; } rootElem = xmlDocGetRootElement (doc); xmlNodePtr childElem; GString *script = g_string_new (";Score\n\n(d-MasterVolume 0) (d-IncreaseGuard) (d-StaffProperties \"denemo_name=voice 1\")"); gint part_count = 1; InitialVoiceNum = 0; if (Warnings == NULL) Warnings = g_string_new (""); else g_string_assign (Warnings, ""); FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "movement-title")) { gchar *title = xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1); if(title) g_string_append_printf (script, "(d-BookTitle \"%s\")", escape_scheme(title)); g_free (title); } if (ELEM_NAME_EQ (childElem, "identification")) { parse_identification (childElem, script); } if (ELEM_NAME_EQ (childElem, "part")) { g_string_append_printf (script, "\n;;-------------------------Part (ie Instrument) %d ----------------------\n", part_count++); g_string_append (script, parse_part (childElem)); } } g_string_append (script, "(d-DeleteStaff)(d-MoveToEnd)(if (None?) (d-DeleteMeasureAllStaffs))(d-MasterVolume 1)(d-MoveToBeginning)(if (and (not (None?))(UnderfullMeasure?))(d-Upbeat)) (d-DecreaseGuard) "); #ifdef DEVELOPER { FILE *fp = fopen ("/home/rshann/junk.scm", "w"); if (fp) { fprintf (fp, ";Parser not yet finished upbeat bug present:\n %s", script->str); fclose (fp); } } #endif call_out_to_guile (script->str); g_string_free (script, TRUE); Denemo.prefs.spillover = spillover; return ret; } /* this code is a utility for generating a scheme structure for inclusion in the MusicGlyph script */ #ifdef DEVELOPER static void parseFont (xmlNodePtr rootElem, GString *script) { xmlNodePtr childElem;g_print("Parse font\n"); gchar buffer1[5000],buffer2[5000], current[5000]; gboolean new_class = FALSE; current[0] = 0; FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "glyph")) { gchar *title = xmlGetProp (childElem, (xmlChar *) "glyph-name"); if(title) { gint i, j; gchar *c; for(i=0, j=0, c = title; *c; c++) { if(*c=='.') { for(c++; *c;c++) buffer2[j++] = *c; c--; } else buffer1[i++] = *c; } buffer1[i]=buffer2[j] = 0; if(*buffer2 == 0) { gchar * misc = "..."; new_class = strcmp(current, misc); strcpy(current, misc); strcpy(buffer2, buffer1); } else if((new_class = strcmp(current, buffer1))) strcpy (current, buffer1); if(new_class) g_string_append_printf(script, "))\n(cons (_ \"%s\") (list \n", current); g_string_append_printf (script, "\t(cons (_ \"%s\") \"%s\")\n", buffer2, title); } } } } static void parseDefs (xmlNodePtr rootElem, GString *script) { xmlNodePtr childElem;g_print("Parse defs\n"); FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "font")) { parseFont(childElem, script); } } } gint fontinput (gchar * filename) { GError *err = NULL; gint ret = 0; xmlDocPtr doc = NULL; xmlNsPtr ns; xmlNodePtr rootElem; /* ignore blanks between nodes that appear as "text" */ xmlKeepBlanksDefault (0); /* Try to parse the file. */ doc = xmlParseFile (filename); if (doc == NULL) { g_warning ("Could not read font file %s", filename); return -1; } rootElem = xmlDocGetRootElement (doc); xmlNodePtr childElem; GString *script = g_string_new (""); FOREACH_CHILD_ELEM (childElem, rootElem) { if (ELEM_NAME_EQ (childElem, "defs")) { parseDefs(childElem, script); } } { FILE *fp = fopen ("/home/rshann/junk.scm", "w"); if (fp) { fprintf (fp, ";font glyphs:\n;;%s))\n", script->str); fclose (fp); } } return ret; } #endif denemo-2.2.0/src/export/PaxHeaders.19168/guidedimportmidi.h0000644000000000000000000000013213135434036020351 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.479981805 30 ctime=1500919914.273315138 denemo-2.2.0/src/export/guidedimportmidi.h0000644000175000017500000000236613135434036022231 0ustar00jjbenhamjjbenham00000000000000/* guidedimportmidi.h Richard Shann * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA */ #ifndef GUIDEDIMPORTMIDI_H #define GUIDEDIMPORTMIDI_H #include "smf.h" gint guidedImportMidi (gchar * filename); smf_tempo_t *get_recorded_midi_tempo (gint index); gdouble get_recorded_midi_duration (void); smf_tempo_t *get_recorded_midi_tempo (gint index); gint get_imported_midi_track (gint track); gint get_imported_midi_tracks (void); gint get_current_midi_track (void); gboolean delete_imported_midi (void); gboolean compute_midi_note_durations (void); gboolean midi_is_from_file (void); #endif denemo-2.2.0/src/export/PaxHeaders.19168/xmldefs.h0000644000000000000000000000013213135434036016454 xustar0030 mtime=1500919838.356648472 30 atime=1500919919.489981805 30 ctime=1500919914.283315139 denemo-2.2.0/src/export/xmldefs.h0000644000175000017500000000152213135434036020325 0ustar00jjbenhamjjbenham00000000000000/* xmldefs.h * Definitions common to importing and exporting Denemo's "native" XML file * format * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2001-2005 Eric Galluzzo */ #ifndef XMLDEFS_H #define XMLDEFS_H #include #include /* The namespace in which built-in Denemo XML elements reside */ #define DENEMO_XML_NAMESPACE "http://denemo.org/xmlns/Denemo" /* some strings useful elsewhere */ #define NONE_STRING "None" #define PIANO_START_STRING "PianoContextStart" #define PIANO_END_STRING "PianoContextEnd" #define CHOIR_START_STRING "ChoirContextStart" #define CHOIR_END_STRING "ChoirContextEnd" #define GROUP_START_STRING "StaffGroupStart" #define GROUP_END_STRING "StaffGroupEnd" #define CURRENT_XML_VERSION (8) /* the highest version of the .denemo xml format supported */ #endif denemo-2.2.0/src/PaxHeaders.19168/core0000644000000000000000000000013213135434152014172 xustar0030 mtime=1500919914.349981805 30 atime=1500919914.539981806 30 ctime=1500919914.349981805 denemo-2.2.0/src/core/0000755000175000017500000000000013135434152016120 5ustar00jjbenhamjjbenham00000000000000denemo-2.2.0/src/core/PaxHeaders.19168/keymapio.h0000644000000000000000000000013213135434036016237 xustar0030 mtime=1500919838.346648472 30 atime=1500919919.489981805 30 ctime=1500919914.196648472 denemo-2.2.0/src/core/keymapio.h0000644000175000017500000000454113135434036020114 0ustar00jjbenhamjjbenham00000000000000#ifndef KEYMAPIO_H #define KEYMAPIO_H #include #include #include #include #include "core/utils.h" #include "core/prefops.h" #include "core/kbd-custom.h" #include "core/keyboard.h" gint load_xml_keymap (gchar * filename); gint save_xml_keymap (gchar * filename); gint save_xml_keybindings (gchar * filename); gint load_xml_keybindings (gchar * filename); gint save_command_metadata (gchar * filename, gchar * myname, gchar * mylabel, gchar * mytooltip, gchar * after); gint save_command_data (gchar * filename, gchar * myscheme); gchar* load_command_data (gint idx); #define XML_ENCODING "UTF-8" #define COMMANDXML_TAG_ROOT (const xmlChar *) "Denemo" #define COMMANDXML_TAG_MERGE (const xmlChar *) "merge" #define COMMANDXML_TAG_TITLE (const xmlChar *) "title" #define COMMANDXML_TAG_AUTHOR (const xmlChar *) "author" #define COMMANDXML_TAG_MAP (const xmlChar *) "map" #define COMMANDXML_TAG_ROW (const xmlChar *) "row" #define COMMANDXML_TAG_AFTER (const xmlChar *) "after" #define COMMANDXML_TAG_CURSORS (const xmlChar *) "cursors" #define COMMANDXML_TAG_ACTION (const xmlChar *) "action" #define COMMANDXML_TAG_HIDDEN (const xmlChar *) "hidden" #define COMMANDXML_TAG_MENUPATH (const xmlChar *) "menupath" #define COMMANDXML_TAG_TYPE (const xmlChar *) "type" #define COMMANDXML_TAG_LABEL (const xmlChar *) "_label" #define COMMANDXML_TAG_TOOLTIP (const xmlChar *) "_tooltip" #define COMMAND_TYPE_SCHEME (const xmlChar *) "scheme" #define COMMAND_TYPE_BUILTIN (const xmlChar *) "builtin" #define MENUXML_TAG_MENU (const xmlChar *) "menu" #define MENUXML_TAG_MENUBAR (const xmlChar *) "menubar" #define MENUXML_TAG_TOOLBAR (const xmlChar *) "toolbar" #define MENUXML_TAG_MENUITEM (const xmlChar *) "menuitem" #define MENUXML_PROP_ACTION (const xmlChar *) "action" #define MENUXML_PROP_NAME (const xmlChar *) "name" #define BINDINGXML_TAG_ACTION (const xmlChar *) "action" #define BINDINGXML_TAG_BIND (const xmlChar *) "bind" #define BINDINGXML_TAG_STATE (const xmlChar *) "state" #define BINDINGXML_TAG_CURSOR (const xmlChar *) "cursor" #define BINDINGXML_TAG_CURSORBINDING (const xmlChar *) "cursor-binding" #endif denemo-2.2.0/src/core/PaxHeaders.19168/view.h0000644000000000000000000000013213135434036015373 xustar0030 mtime=1500919838.349981806 30 atime=1500919919.489981805 30 ctime=1500919914.209981805 denemo-2.2.0/src/core/view.h0000644000175000017500000001324513135434036017251 0ustar00jjbenhamjjbenham00000000000000/* Header file for functions for creating new views of * the main window * * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2003-2005 Adam Tee */ #ifndef VIEW_H #define VIEW_H #include "command/commandfuncs.h" #include "config.h" #include "display/draw.h" /* Which includes gtk.h */ #include #include "ui/dialogs.h" #include "export/exportlilypond.h" #include "export/file.h" #include "core/kbd-custom.h" #include "ui/kbd-interface.h" #include "command/keyresponses.h" #include "command/clef.h" #include "command/keysig.h" #include "command/timesig.h" #include "command/tuplet.h" #include "command/contexts.h" #include "ui/help.h" #include "audio/midi.h" #include "ui/mousing.h" #include "ui/moveviewport.h" #include "core/prefops.h" #include "command/score.h" #include "command/select.h" #include "command/staff.h" #include "core/utils.h" #include "command/lyric.h" #include "command/figure.h" #include "command/fakechord.h" #include "command/changenotehead.h" #include "export/print.h" #include "ui/palettes.h" #include "core/palettestorage.h" #include #define EXTRA_ACCELS "extra.accels" #define INIT_SCM "init.scm" void newview (DenemoAction * action, DenemoScriptParam * param); void free_movements (DenemoProject * gui); /* frees all movement data (i.e. the DenemoMovement objects) from gui, leaving gui interface intact */ void addhistorymenuitem (gchar * filename); //TODO Fix for automatic updating during operation // /* tool_buttons cannot be visually separated from the toolbar, which is ok for icons but not so good for pure text; to separate them we put the label of the tool_button into an event box and decorate that. This macro gets the label out. Unfortunately, this lead to problems on some builds, so it has been dropped and the macro re-defined.*/ void set_rhythm_label (RhythmPattern * r, gchar * text); void delete_rhythm_pattern (RhythmPattern * r); void highlight_rhythm (RhythmPattern * r); void unhighlight_rhythm (RhythmPattern * r); void highlight_duration (DenemoProject * gui, gint dur); void highlight_rest (DenemoProject * gui, gint dur); void highlight_audio_record (); gboolean loadGraphicItem (gchar * name, DenemoGraphic ** pgraphic); DenemoAction *activate_action (gchar * path); GError *execute_script_file (gchar * filename); gboolean activate_script (DenemoAction * action, DenemoScriptParam * param); void create_scheme_function_for_script (gchar * name); void *inner_main (void *data); gchar *create_xbm_data_from_pixbuf (GdkPixbuf * pixbuf, int lox, int loy, int hix, int hiy); gchar *get_icon_for_name (gchar * name, gchar * label); void upload_edit_script (gchar * tag, gchar * script); void execute_init_scripts (gchar * menupath); void denemo_scheme_init (void); void execute_scheme (DenemoAction * action, DenemoScriptParam * param); gchar modifier_code (gpointer fn); gboolean code_is_a_duration (gchar code); gint call_out_to_guile (const char *script); void set_playbutton (gboolean pause); void set_master_volume (DenemoMovement * si, gdouble volume); void set_master_tempo (DenemoMovement * si, gdouble tempo); void toggle_to_drawing_area (gboolean show); void ToggleReduceToDrawingArea (DenemoAction * action, DenemoScriptParam * param); gchar *get_midi_control_command (guchar type, guchar value); gchar *get_midi_pitch_bend_command (gint value); gint hide_printarea_on_delete (void); void set_midi_in_status (void); void set_meantone_tuning (gint step); void update_leadin_widget (gdouble secs); void update_tempo_widget (gdouble bpm_change); void append_scheme_call (gchar * str); SCM scheme_set_enharmonic_position (SCM position); void define_scheme_variable (gchar * varname, gchar * value, gchar * tooltip); void define_scheme_int_variable (gchar * varname, gint value, gchar * tooltip); void define_scheme_double_variable (gchar * varname, gdouble value, gchar * tooltip); void define_scheme_bool_variable (gchar * varname, gint value, gchar * tooltip); SCM scheme_next_note (SCM optional); void define_scheme_literal_variable (gchar * varname, gchar * value, gchar * tooltip); gboolean show_midi_record_control (void); gint eval_file_with_catch (gchar * filename); GtkWidget *get_playalong_button (); GtkWidget *get_conduct_button (); GtkWidget *get_record_button (); void destroy_local_scheme_init (void); void delete_recording (void); void pb_playalong (GtkWidget * button); gboolean pb_record (gchar * callback); void pb_conduct (GtkWidget * button); void install_button_for_pattern (RhythmPattern * r, gchar * thelabel); gboolean append_rhythm (RhythmPattern * r, gpointer fn); gint insert_pattern_in_toolbar (RhythmPattern * r, gboolean highlight); void select_rhythm_pattern (RhythmPattern * r); void toggle_toolbar (DenemoAction * action, gpointer param); void toggle_playback_controls (DenemoAction * action, gpointer param); void toggle_midi_in_controls (DenemoAction * action, gpointer param); void openinnew (DenemoAction * action, DenemoScriptParam * param); gboolean close_gui_with_check (DenemoAction * action, DenemoScriptParam * param); void closewrapper (DenemoAction * action, DenemoScriptParam * param); void morecommands (DenemoAction * action, DenemoScriptParam * param); void mycommands (DenemoAction * action, DenemoScriptParam * param); void fetchcommands (DenemoAction * action, DenemoScriptParam * param); void create_rhythm_cb (DenemoAction * action, DenemoScriptParam * param); void delete_rhythm_cb (DenemoAction * action, DenemoScriptParam * param); void midi_in_adjust (gint value); gboolean insert_nth_rhythm (gint n); void create_rhythm (RhythmPattern * r, gboolean from_selection); GError *execute_script_file (gchar * filename); void popup_help_for_action (DenemoAction * action); void save_accels (void); #endif denemo-2.2.0/src/core/PaxHeaders.19168/exportxml.c0000644000000000000000000000013213135434036016456 xustar0030 mtime=1500919838.343315139 30 atime=1500919919.499981805 30 ctime=1500919914.166648472 denemo-2.2.0/src/core/exportxml.c0000644000175000017500000013155113135434036020335 0ustar00jjbenhamjjbenham00000000000000/* exportxml.cpp * Functions for exporting what Denemo's working on to an XML file (adapted * somewhat from exportabc.c) * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2001, 2002 Eric Galluzzo */ #include "config.h" #include #include #include "core/exportxml.h" #include "source/source.h" #include "core/utils.h" #include "command/lyric.h" #include "command/lilydirectives.h" #include "ui/texteditors.h" #include "export/xmldefs.h" #include "command/scorelayout.h" #include "audio/pitchentry.h" #include #include /* libxml includes: for libxml2 this should be */ #include #define XML_COMPRESSION_RATIO 3 /* The list of export handlers */ /*static GList *sExportHandlers = NULL;*/ /** * The map from staves, voices, chords, etc. to XML IDs * * FIXME: This won't work for multi-threaded applications! I should really * encapsulate these in a nice DenemoXMLContext struct or some such * thing (or does libxml already provide generating unique IDs?) that I * pass around. */ static gint sNextXMLID = 0; static GHashTable *sStructToXMLIDMap = NULL; /** * Free the value (a string) of the given key/value pair. For use with * g_hash_table_foreach. */ static void freeHashTableValue (G_GNUC_UNUSED gpointer key, gpointer value, G_GNUC_UNUSED gpointer userData) { g_free (value); } /** * Determine the key signature as it should * be written to the XML file */ static void determineKeySignature (gint number, gboolean isMinor, gchar ** baseNote, gchar ** baseAcc, gchar ** mode) { if (isMinor) { number += 3; *mode = "minor"; } else { *mode = "major"; } switch (number) { case -7: *baseNote = "C"; *baseAcc = "flat"; break; case -6: *baseNote = "G"; *baseAcc = "flat"; break; case -5: *baseNote = "D"; *baseAcc = "flat"; break; case -4: *baseNote = "A"; *baseAcc = "flat"; break; case -3: *baseNote = "E"; *baseAcc = "flat"; break; case -2: *baseNote = "B"; *baseAcc = "flat"; break; case -1: *baseNote = "F"; *baseAcc = NULL; break; case 0: *baseNote = "C"; *baseAcc = NULL; break; case 1: *baseNote = "G"; *baseAcc = NULL; break; case 2: *baseNote = "D"; *baseAcc = NULL; break; case 3: *baseNote = "A"; *baseAcc = NULL; break; case 4: *baseNote = "E"; *baseAcc = NULL; break; case 5: *baseNote = "B"; *baseAcc = NULL; break; case 6: *baseNote = "F"; *baseAcc = "sharp"; break; case 7: *baseNote = "C"; *baseAcc = "sharp"; break; case 8: *baseNote = "G"; *baseAcc = "sharp"; break; case 9: *baseNote = "D"; *baseAcc = "sharp"; break; case 10: *baseNote = "A"; *baseAcc = "sharp"; break; default: if (isMinor) number -= 3; g_warning ("Unknown key signature with %d %s, using C major", abs (number), number < 0 ? "flats" : "sharps"); *baseNote = "C"; *baseAcc = NULL; *mode = "major"; break; } } /** * Determine the clef as it should * be written to the XML file */ static void determineClef (gint type, gchar ** clefName) { switch (type) { case DENEMO_TREBLE_CLEF: *clefName = "treble"; break; case DENEMO_BASS_CLEF: *clefName = "bass"; break; case DENEMO_ALTO_CLEF: *clefName = "alto"; break; case DENEMO_G_8_CLEF: *clefName = "treble-8vb"; break; case DENEMO_F_8_CLEF: *clefName = "bass-8vb"; break; case DENEMO_TENOR_CLEF: *clefName = "tenor"; break; case DENEMO_SOPRANO_CLEF: *clefName = "soprano"; break; case DENEMO_FRENCH_CLEF: *clefName = "french"; break; case DENEMO_BARITONE_CLEF: *clefName = "baritone"; break; default: g_warning ("Unknown clef type %d, using treble", type); *clefName = "treble"; break; } } /** * Determine the duration as it should be written to the XML file. duration * is the Denemo duration, and the XML duration is returned in durationName. */ static void determineDuration (gint duration, gchar ** durationName) { switch (duration) { case 0: *durationName = "whole"; break; case 1: *durationName = "half"; break; case 2: *durationName = "quarter"; break; case 3: *durationName = "eighth"; break; case 4: *durationName = "sixteenth"; break; case 5: *durationName = "thirty-second"; break; case 6: *durationName = "sixty-fourth"; break; case 7: *durationName = "one-hundred-twenty-eighth"; break; default: if (duration < 0) *durationName = "whole"; else { g_warning ("Unknown note duration 1/%d, using quarter", 1 << duration); *durationName = "quarter"; } break; } } /** * return a child node of parent, holding the passed name and integer. */ static xmlNodePtr newXMLIntChild (xmlNodePtr parent, xmlNsPtr ns, const xmlChar * name, gint content) { gchar *integer = g_strdup_printf ("%d", content); xmlNodePtr child = xmlNewChild (parent, ns, name, (xmlChar *) integer); g_free (integer); return child; } /** * return a child node of parent, holding the passed name and integer. */ static xmlNodePtr newXMLUIntChild (xmlNodePtr parent, xmlNsPtr ns, const xmlChar * name, guint content) { gchar *integer = g_strdup_printf ("%u", content); xmlNodePtr child = xmlNewChild (parent, ns, name, (xmlChar *) integer); g_free (integer); return child; } /** * Set a prop of the parent, holding the passed name and integer. */ static void newXMLIntProp (xmlNodePtr parent, const xmlChar * name, gint content) { gchar *integer = g_strdup_printf ("%d", content); xmlSetProp (parent, name, (xmlChar *) integer); g_free (integer); } /** * Return a newly allocated unique XML ID string which must be freed by the * caller when it is no longer needed. */ static gchar * newXMLID () { /* Allocate enough space for "id2000000000" + '\0'. */ gchar *result = g_new (char, 13); sprintf (result, "id%d", sNextXMLID++); return result; } /** * Return a unique XML ID for the given pointer, and register it in the global * structure -> XML ID map. If it already exists in the map, return its XML * ID; otherwise, create a new XML ID and return that. */ static gchar * getXMLID (gpointer ptr) { gchar *xmlID = (gchar *) g_hash_table_lookup (sStructToXMLIDMap, ptr); if (xmlID == NULL) g_hash_table_insert (sStructToXMLIDMap, ptr, (xmlID = newXMLID ())); return xmlID; } /** * Output a fraction (, ) as a child of the given * node. */ static void newXMLFraction (xmlNodePtr parent, xmlNsPtr ns, gint num, gint denom) { newXMLIntChild (parent, ns, (xmlChar *) "numerator", num); newXMLIntChild (parent, ns, (xmlChar *) "denominator", denom); } static void newThumbnailElem (xmlNodePtr curElem, xmlNsPtr ns, DenemoSelection * thumbnail, gchar * type) { xmlNodePtr thumbElem = xmlNewChild (curElem, ns, (xmlChar *) type, NULL); newXMLIntChild (thumbElem, ns, (xmlChar *) "first-staff", thumbnail->firststaffmarked); newXMLIntChild (thumbElem, ns, (xmlChar *) "last-staff", thumbnail->laststaffmarked); newXMLIntChild (thumbElem, ns, (xmlChar *) "first-measure", thumbnail->firstmeasuremarked); newXMLIntChild (thumbElem, ns, (xmlChar *) "last-measure", thumbnail->lastmeasuremarked); newXMLIntChild (thumbElem, ns, (xmlChar *) "first-obj", thumbnail->firstobjmarked); newXMLIntChild (thumbElem, ns, (xmlChar *) "last-obj", thumbnail->lastobjmarked); } static void newSourceFileElem (xmlNodePtr curElem, xmlNsPtr ns, DenemoProject * gui) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else if (source_position (&gui->source_x, &gui->source_y, &gui->source_width, &gui->source_height, &gui->source_scale)) { xmlNodePtr sourceElem = xmlNewChild (curElem, ns, (xmlChar *) "sourcefile", NULL); newXMLIntChild (sourceElem, ns, (xmlChar *) "x", gui->source_x); newXMLIntChild (sourceElem, ns, (xmlChar *) "y", gui->source_y); newXMLIntChild (sourceElem, ns, (xmlChar *) "width", gui->source_width); newXMLIntChild (sourceElem, ns, (xmlChar *) "height", gui->source_height); newXMLIntChild (sourceElem, ns, (xmlChar *) "scale", gui->source_scale); } #endif } static void newVersesElem (xmlNodePtr curElem, xmlNsPtr ns, GList * verses, gchar * type) { xmlNodePtr versesElem = xmlNewChild (curElem, ns, (xmlChar *) type, NULL); for (; verses; verses = verses->next) { if (verses->data && *(xmlChar *) verses->data) //do not create empty verses xmlNewTextChild (versesElem, ns, (xmlChar *) "verse", (xmlChar *) verses->data); } } static void newLayoutsElem (xmlNodePtr layoutsElem, xmlNsPtr ns, DenemoDirective * directive) { GList *g; for (g = directive->layouts; g; g = g->next) { newXMLUIntChild (layoutsElem, ns, (xmlChar *) "layout", GPOINTER_TO_UINT (g->data)); } } static void newDirectiveElem (xmlNodePtr directiveElem, xmlNsPtr ns, DenemoDirective * directive) { /* hhmmmm the set_action_script_for_tag is not modifying the directive - just associating a script with the tag. It is when we try to invoke the directive that we find there is an action script */ /* We Decline to store any directive that has a tag for which an action script is defined in this run of denemo * this implies people need to be careful in the tags they use for action scripts*/ #define DO_DIREC(field) if (directive->field \ && directive->field->len)\ xmlNewTextChild (directiveElem, ns, (xmlChar *) #field,\ (xmlChar *) directive->field->str); #define DO_INTDIREC(field) if(directive->field) newXMLIntChild (directiveElem, ns, (xmlChar *) #field,\ directive->field); DO_DIREC (tag); DO_DIREC (prefix); DO_DIREC (postfix); DO_DIREC (display); DO_DIREC (midibytes); DO_DIREC (grob); DO_DIREC (data); DO_DIREC (graphic_name); DO_INTDIREC (minpixels); // DO_INTDIREC (x); // DO_INTDIREC (y); DO_INTDIREC (tx); DO_INTDIREC (ty); DO_INTDIREC (gx); DO_INTDIREC (gy); DO_INTDIREC (override); #undef DO_DIREC #undef DO_INTDIREC if (directive->layouts) { xmlNodePtr layoutsElem = xmlNewChild (directiveElem, ns, (xmlChar *) (directive->flag == DENEMO_ALLOW_FOR_LAYOUTS ? "allow" : "ignore"), NULL); newLayoutsElem (layoutsElem, ns, directive); } } static void newDirectivesElem (xmlNodePtr objElem, xmlNsPtr ns, GList * g, gchar * type) { xmlNodePtr directivesElem = xmlNewChild (objElem, ns, (xmlChar *) type, NULL); for (; g; g = g->next) { DenemoDirective *directive = (DenemoDirective *) g->data; if (directive->tag && get_action_script (directive->tag->str)) continue; xmlNodePtr directiveElem = xmlNewChild (directivesElem, ns, (xmlChar *) "directive", NULL); newDirectiveElem (directiveElem, ns, directive); } } /** * Output a clef of the form: * * * * as a child of the given node. */ static xmlNodePtr newXMLClef (xmlNodePtr parent, xmlNsPtr ns, clef * clef) { gchar *clefName = NULL; xmlNodePtr clefElem = NULL; determineClef (clef->type, &clefName); clefElem = xmlNewChild (parent, ns, (xmlChar *) "clef", NULL); xmlSetProp (clefElem, (xmlChar *) "name", (xmlChar *) clefName); if (clef->directives) newDirectivesElem (clefElem, ns, clef->directives, "directives"); return clefElem; } /** * Output a key signature of the form: * * * * * .... * * * * as a child of the given node. */ static xmlNodePtr newXMLKeySignature (xmlNodePtr parent, xmlNsPtr ns, keysig * keysig) { gint keySig = keysig->number; gboolean isMinor = keysig->isminor; gchar *noteName = NULL, *accidental = NULL, *mode = NULL; xmlNodePtr keySigElem = NULL, modalKeySigElem = NULL; determineKeySignature (keySig, isMinor, ¬eName, &accidental, &mode); keySigElem = xmlNewChild (parent, ns, (xmlChar *) "key-signature", NULL); modalKeySigElem = xmlNewChild (keySigElem, ns, (xmlChar *) "modal-key-signature", NULL); xmlSetProp (modalKeySigElem, (xmlChar *) "note-name", (xmlChar *) noteName); if (accidental != NULL) xmlSetProp (modalKeySigElem, (xmlChar *) "accidental", (xmlChar *) accidental); xmlSetProp (modalKeySigElem, (xmlChar *) "mode", (xmlChar *) mode); if (keysig->directives) newDirectivesElem (keySigElem, ns, keysig->directives, "directives"); return keySigElem; } /** * Output a time signature of the form: * * * * 3 * 4 * * * .... * * * * as a child of the given node. */ static xmlNodePtr newXMLTimeSignature (xmlNodePtr parent, xmlNsPtr ns, timesig * timesig) { xmlNodePtr timeSigElem = xmlNewChild (parent, ns, (xmlChar *) "time-signature", NULL); newXMLFraction (xmlNewChild (timeSigElem, ns, (xmlChar *) "simple-time-signature", NULL), ns, timesig->time1, timesig->time2); if (timesig->directives) newDirectivesElem (timeSigElem, ns, timesig->directives, "directives"); return timeSigElem; } /** * Output a decoration of the form: * * * * as a child of the given node. */ /*UNUSED static xmlNodePtr newXMLDecoration (xmlNodePtr parent, xmlNsPtr ns, gchar * decorationName) { xmlNodePtr decorationElem = xmlNewChild (parent, ns, (xmlChar *) "decoration", NULL); xmlSetProp (decorationElem, (xmlChar *) "type", (xmlChar *) decorationName); return decorationElem; } */ /** * Output an accidental of the form: * * * * as a child of the given node. */ static xmlNodePtr newXMLAccidental (xmlNodePtr parent, xmlNsPtr ns, gint enshift, gboolean show) { xmlNodePtr accElem = xmlNewChild (parent, ns, (xmlChar *) "accidental", NULL); gchar *accName = NULL; switch (enshift) { case -2: accName = "double-flat"; break; case -1: accName = "flat"; break; case 0: accName = "natural"; break; case 1: accName = "sharp"; break; case 2: accName = "double-sharp"; break; default: g_warning ("Illegal accidental shift %d: must be between -2 and 2; " "using 0", enshift); accName = "natural"; break; } xmlSetProp (accElem, (xmlChar *) "name", (xmlChar *) accName); xmlSetProp (accElem, (xmlChar *) "show", (show ? (xmlChar *) "true" : (xmlChar *) "false")); return accElem; } /** * Output a stem directive of the form: * * * * as a child of the given node. */ static xmlNodePtr newXMLStemDirective (xmlNodePtr parent, xmlNsPtr ns, stemdirective * stem) { xmlNodePtr stemElem = xmlNewChild (parent, ns, (xmlChar *) "stem-directive", NULL); gchar *stemName = NULL; switch (stem->type) { case DENEMO_STEMDOWN: stemName = "down"; break; case DENEMO_STEMBOTH: stemName = "auto"; break; case DENEMO_STEMUP: stemName = "up"; break; default: g_warning ("Unknown stem directive type %d, using auto", stem->type); stemName = "auto"; break; } xmlSetProp (stemElem, (xmlChar *) "type", (xmlChar *) stemName); if (stem->directives) newDirectivesElem (stemElem, ns, stem->directives, "directives"); return stemElem; } /* staff (aka voice) properties */ static void newVoiceProps (xmlNodePtr parentElem, xmlNsPtr ns, DenemoStaff * curStaffStruct) { xmlNodePtr curElem = xmlNewChild (parentElem, ns, (xmlChar *) "voice-props", NULL); newXMLIntChild (curElem, ns, (xmlChar *) "number-of-lines", curStaffStruct->no_of_lines); if (curStaffStruct->color) newXMLIntChild (curElem, ns, (xmlChar *) "staff-color", curStaffStruct->color); if (curStaffStruct->hidden) newXMLIntChild (curElem, ns, (xmlChar *) "staff-hidden", curStaffStruct->hidden); if (curStaffStruct->range) newXMLIntChild (curElem, ns, (xmlChar *) "staff-range-lo", curStaffStruct->range_lo); if (curStaffStruct->range) newXMLIntChild (curElem, ns, (xmlChar *) "staff-range-hi", curStaffStruct->range_hi); if (curStaffStruct->range) newXMLIntChild (curElem, ns, (xmlChar *) "staff-range", curStaffStruct->range); newXMLIntChild (curElem, ns, (xmlChar *) "voice-control", curStaffStruct->voicecontrol); newXMLIntChild (curElem, ns, (xmlChar *) "transpose", curStaffStruct->transposition); xmlNewChild (curElem, ns, (xmlChar *) "instrument", (xmlChar *) curStaffStruct->midi_instrument->str); if (curStaffStruct->device_port->len) xmlNewChild (curElem, ns, (xmlChar *) "device-port", (xmlChar *) curStaffStruct->device_port->str); newXMLIntChild (curElem, ns, (xmlChar *) "volume", curStaffStruct->volume); newXMLIntChild (curElem, ns, (xmlChar *) "override_volume", curStaffStruct->override_volume); newXMLIntChild (curElem, ns, (xmlChar *) "mute", curStaffStruct->mute); newXMLIntChild (curElem, ns, (xmlChar *) "midi_prognum", curStaffStruct->midi_prognum); newXMLIntChild (curElem, ns, (xmlChar *) "midi_channel", curStaffStruct->midi_channel); newXMLIntChild (curElem, ns, (xmlChar *) "hasfigures", curStaffStruct->hasfigures); newXMLIntChild (curElem, ns, (xmlChar *) "hasfakechords", curStaffStruct->hasfakechords); if (curStaffStruct->verses) newVersesElem (curElem, ns, curStaffStruct->verses, "verses"); if (curStaffStruct->staff_directives) newDirectivesElem (curElem, ns, curStaffStruct->staff_directives, "staff-directives"); if (curStaffStruct->voice_directives) newDirectivesElem (curElem, ns, curStaffStruct->voice_directives, "voice-directives"); if (curStaffStruct->clef.directives) newDirectivesElem (curElem, ns, curStaffStruct->clef.directives, "clef-directives"); } /** * Output a notehead element of the form: * * * * as a child of the given node. */ static xmlNodePtr newXMLNoteHead (xmlNodePtr parent, xmlNsPtr ns, enum headtype noteHeadType) { xmlNodePtr noteHeadElem = xmlNewChild (parent, ns, (xmlChar *) "note-head", NULL); gchar *headTypeName = NULL; switch (noteHeadType) { case DENEMO_NORMAL_NOTEHEAD: headTypeName = "normal"; break; case DENEMO_CROSS_NOTEHEAD: headTypeName = "cross"; break; case DENEMO_HARMONIC_NOTEHEAD: headTypeName = "harmonic"; break; case DENEMO_DIAMOND_NOTEHEAD: headTypeName = "diamond"; break; default: g_warning ("Unknown notehead type %d, using normal", noteHeadType); headTypeName = "normal"; break; } xmlSetProp (noteHeadElem, (xmlChar *) "type", (xmlChar *) headTypeName); return noteHeadElem; } static void outputSources (xmlNodePtr mvmntElem, xmlNsPtr ns, GList * sources) { GList *g = sources; xmlNodePtr curElem = xmlNewChild (mvmntElem, ns, (xmlChar *) "sources", NULL); for (; g; g = g->next) { gsize len; GError *error = NULL; gchar *buf; gdk_pixbuf_save_to_buffer (g->data, &buf, &len, "png", &error, NULL); gchar *cdata = g_base64_encode ((guchar *) buf, len); g_free (buf); xmlNewChild (curElem, ns, (xmlChar *) "pixbuf", (xmlChar *) cdata); g_free (cdata); //??? xmlNodePtr xmlNewCDataBlock (xmlDocPtr doc, const xmlChar *content, int len); //use gboolean gdk_pixbuf_save_to_buffer(GdkPixbuf *pixbuf, gchar **buffer, gsize *buffer_size, const char *type, GError **error, ...); //g_base64_encode(guchar *buf, gsize len); //g_base64_decode(guchar *buf, gsize* outlen); //g_base64_decode_inplace(guchar *buf, gsize* outlen);//overwrites buf with decoded data. } } static void outputAudio (xmlNodePtr mvmntElem, xmlNsPtr ns, DenemoRecording * audio) { xmlNodePtr curElem = xmlNewChild (mvmntElem, ns, (xmlChar *) "audio", NULL); xmlNewChild (curElem, ns, (xmlChar *) "filename", (xmlChar *) audio->filename); newXMLIntChild (curElem, ns, (xmlChar *) "lead-in", audio->leadin); } static void set_invisible (xmlNodePtr objElem, DenemoObject * curObj) { if (curObj->isinvisible) xmlSetProp (objElem, (xmlChar *) "show", (xmlChar *) "false"); else xmlSetProp (objElem, (xmlChar *) "show", (xmlChar *) "true"); } static void parseObjects (xmlNodePtr measureElem, xmlNsPtr ns, GList * curObjNode) { xmlNodePtr parentElem, curElem, objElem; DenemoObject *curObj; GList *curNoteNode; note *curNote; gchar *durationType; gchar *chordXMLID, *noteXMLID; for (; curObjNode != NULL; curObjNode = curObjNode->next) { curObj = (DenemoObject *) curObjNode->data; switch (curObj->type) { case CHORD: { chord *thechord = (chord *) curObj->object; /* Output the root element, "rest" or "chord". */ if ((thechord)->notes == NULL) { objElem = xmlNewChild (measureElem, ns, (xmlChar *) "rest", NULL); } else objElem = xmlNewChild (measureElem, ns, (xmlChar *) "chord", NULL); set_invisible (objElem, curObj); chordXMLID = getXMLID (curObj); xmlSetProp (objElem, (xmlChar *) "id", (xmlChar *) chordXMLID); if (thechord->is_grace & GRACED_NOTE) xmlSetProp (objElem, (xmlChar *) "grace", (xmlChar *) "true"); else if (thechord->is_grace & ACCIACCATURA) xmlSetProp (objElem, (xmlChar *) "grace", (xmlChar *) "acciaccatura"); /* Output the duration. */ determineDuration ((thechord)->baseduration, &durationType); parentElem = xmlNewChild (objElem, ns, (xmlChar *) "duration", NULL); xmlSetProp (parentElem, (xmlChar *) "base", (xmlChar *) durationType); if ((thechord)->numdots != 0) newXMLIntChild (parentElem, ns, (xmlChar *) "dots", (thechord)->numdots); if ((thechord)->chordize) newXMLIntChild (objElem, ns, (xmlChar *) "chordize", TRUE); /*Output Lyric */ if ((thechord)->lyric) { parentElem = xmlNewTextChild (objElem, ns, (xmlChar *) "lyric", (xmlChar *) (thechord)->lyric->str); if ((thechord)->is_syllable) xmlSetProp (parentElem, (xmlChar *) "extend", (xmlChar *) "true"); else xmlSetProp (parentElem, (xmlChar *) "extend", (xmlChar *) "false"); if ((thechord)->center_lyric) xmlSetProp (parentElem, (xmlChar *) "center", (xmlChar *) "true"); else xmlSetProp (parentElem, (xmlChar *) "center", (xmlChar *) "false"); } /*Output Figured Bass */ if ((thechord)->figure) { //DenemoObject *mud = (DenemoObject *) ((GList *) ((thechord)->figure)->data); //chord *mych = (chord *) mud->object; parentElem = xmlNewTextChild (objElem, ns, (xmlChar *) "figure", (xmlChar *) ((GString *) (thechord)->figure)->str); // printf("\nfigure in exportxml == %s\n", ((GString *) (thechord)->figure)->str); } //(thechord)->is_figure = FALSE; // parentElem = xmlNewChild (objElem, ns, (xmlChar *) "figure", // (GString *) mych->figure); /*Output Fakechords */ if ((thechord)->fakechord && ((GString *) (thechord)->fakechord)->len) { GString *temp = g_string_new (""); temp = g_string_append (temp, ((GString *) (thechord)->fakechord)->str); parentElem = xmlNewTextChild (objElem, ns, (xmlChar *) "fakechord", (xmlChar *) ((GString *) temp)->str); } /* Output the DenemoDirectives on the chord */ if ((thechord)->directives) { newDirectivesElem (objElem, ns, (thechord)->directives, "directives"); } if (thechord->baseduration < 0) newXMLIntChild (objElem, ns, (xmlChar *) "ticks", -thechord->baseduration); /* * Output Dynamic which is now part of note * */ if ((thechord)->dynamics) { GString *string = (GString *) (thechord)->dynamics->data; parentElem = xmlNewChild (objElem, ns, (xmlChar *) "dynamic", NULL); xmlSetProp (parentElem, (xmlChar *) "name", (xmlChar *) string->str); } /* * If this is the end of a slur, terminate the previous * element. */ if ((thechord)->slur_end_p) { newXMLIntChild (objElem, ns, (xmlChar *) "slur-end", 1); } if ((thechord)->crescendo_end_p) { newXMLIntChild (objElem, ns, (xmlChar *) "cresc-end", 1); } if ((thechord)->diminuendo_end_p) { newXMLIntChild (objElem, ns, (xmlChar *) "dim-end", 1); } if ((thechord)->slur_begin_p) { newXMLIntChild (objElem, ns, (xmlChar *) "slur-begin", 1); } if ((thechord)->crescendo_begin_p) { newXMLIntChild (objElem, ns, (xmlChar *) "cresc-begin", 1); } if ((thechord)->diminuendo_begin_p) { newXMLIntChild (objElem, ns, (xmlChar *) "dim-begin", 1); } /* Output a element if this chord is tied. */ if ((thechord)->is_tied) { xmlNewChild (objElem, ns, (xmlChar *) "tie", NULL); } /* Output all the notes, if this isn't a rest. */ if ((thechord)->notes != NULL) { parentElem = xmlNewChild (objElem, ns, (xmlChar *) "notes", NULL); for (curNoteNode = (thechord)->notes; curNoteNode != NULL; curNoteNode = curNoteNode->next) { curNote = (note *) curNoteNode->data; curElem = xmlNewChild (parentElem, ns, (xmlChar *) "note", NULL); noteXMLID = getXMLID (curNote); xmlSetProp (curElem, (xmlChar *) "id", (xmlChar *) noteXMLID); newXMLIntChild (curElem, ns, (xmlChar *) "middle-c-offset", curNote->mid_c_offset); if (curNote->enshift != 0 || curNote->showaccidental) { newXMLAccidental (curElem, ns, curNote->enshift, curNote->showaccidental); } if (curNote->noteheadtype != DENEMO_NORMAL_NOTEHEAD) { newXMLNoteHead (curElem, ns, curNote->noteheadtype); } if (curNote->directives) { newDirectivesElem (curElem, ns, curNote->directives, "directives"); } } } } break; case TUPOPEN: { tuplet *theob = (tuplet *) curObj->object; objElem = xmlNewChild (measureElem, ns, (xmlChar *) "tuplet-start", NULL); newXMLFraction (xmlNewChild (objElem, ns, (xmlChar *) "multiplier", NULL), ns, ((tupopen *) curObj->object)->numerator, ((tupopen *) curObj->object)->denominator); if (theob->directives) { newDirectivesElem (objElem, ns, theob->directives, "directives"); } } break; case TUPCLOSE: { tuplet *theob = (tuplet *) curObj->object; objElem = xmlNewChild (measureElem, ns, (xmlChar *) "tuplet-end", NULL); if (theob->directives) { newDirectivesElem (objElem, ns, theob->directives, "directives"); } } break; case CLEF: objElem = newXMLClef (measureElem, ns, ((clef *) curObj->object)); set_invisible (objElem, curObj); break; case TIMESIG: objElem = newXMLTimeSignature (measureElem, ns, (timesig *) curObj->object); break; case KEYSIG: objElem = newXMLKeySignature (measureElem, ns, ((keysig *) curObj->object)); break; case STEMDIRECTIVE: { stemdirective *theob = (stemdirective *) curObj->object; objElem = newXMLStemDirective (measureElem, ns, theob); } break; case GRACE_START: //obsolete break; case GRACE_END: //obsolete break; case LYRIC: objElem = xmlNewTextChild (measureElem, ns, (xmlChar *) "lyric", (xmlChar *) ((lyric *) curObj->object)->lyrics->str); if (((lyric *) curObj->object)->is_syllable) xmlSetProp (objElem, (xmlChar *) "extend", (xmlChar *) "true"); else xmlSetProp (objElem, (xmlChar *) "extend", (xmlChar *) "false"); if (((lyric *) curObj->object)->center_lyric) xmlSetProp (objElem, (xmlChar *) "center", (xmlChar *) "true"); else xmlSetProp (objElem, (xmlChar *) "center", (xmlChar *) "false"); break; case LILYDIRECTIVE: #ifdef OLDSTYLE_STANDALONE_SAVE //FIXME this should really have been the tag saved here, but for backwards compatibility we use the postfix string. if (((lilydirective *) curObj->object)->postfix && ((lilydirective *) curObj->object)->postfix->len) objElem = xmlNewTextChild (measureElem, ns, (xmlChar *) "lily-directive", (xmlChar *) ((lilydirective *) curObj->object)->postfix->str); else objElem = xmlNewTextChild (measureElem, ns, (xmlChar *) "lily-directive", (xmlChar *) " "); #else objElem = xmlNewChild (measureElem, ns, (xmlChar *) "lily-directive", NULL); newDirectiveElem (objElem, ns, (lilydirective *) curObj->object); #endif if (((lilydirective *) curObj->object)->locked) xmlSetProp (objElem, (xmlChar *) "locked", (xmlChar *) "true"); #ifdef OLDSTYLE_STANDALONE_SAVE #define SETSTRING_PROP(field)\ if(((lilydirective *) curObj->object)->field && ((lilydirective *) curObj->object)->field->len)\ xmlSetProp (objElem, (xmlChar *) #field,\ (xmlChar *) (((lilydirective *) curObj->object)->field->str)); SETSTRING_PROP (tag); SETSTRING_PROP (display); SETSTRING_PROP (midibytes); SETSTRING_PROP (grob); SETSTRING_PROP (data); SETSTRING_PROP (graphic_name); SETSTRING_PROP (prefix); //postfix done above, for backward compatibility #undef SETSTRING_PROP #define SETINT_PROP(x)\ if(((lilydirective *) curObj->object)->x) newXMLIntProp (objElem, (xmlChar *) #x, \ (((lilydirective *) curObj->object)->x)); SETINT_PROP (x); SETINT_PROP (y); SETINT_PROP (tx); SETINT_PROP (ty); SETINT_PROP (gx); SETINT_PROP (gy); SETINT_PROP (minpixels); SETINT_PROP (override); #undef SETINT_PROP #endif if (curObj->durinticks) newXMLIntProp (objElem, (xmlChar *) "ticks", curObj->durinticks); break; case BARLINE: case MEASUREBREAK: g_warning ("Cannot yet handle DenemoObjects of type %d", curObj->type); break; default: /* FIXME: First try handlers. */ g_warning ("Got a DenemoObject of unknown type %d", curObj->type); break; } /* end switch on object type */ } /* end for each object in curObjNode */ } static void newClipboardElem (xmlNodePtr curElem, xmlNsPtr ns, GList * objects) { GList *g; xmlNodePtr objectsElem = xmlNewChild (curElem, ns, (xmlChar *) "objects", NULL); for (g = objects; g; g = g->next) { parseObjects (objectsElem, ns, g->data); } } static void newRhythmElem (xmlNodePtr curElem, xmlNsPtr ns, RhythmPattern * r) { xmlNodePtr rhythmElem = xmlNewChild (curElem, ns, (xmlChar *) "rhythm", NULL); xmlSetProp (rhythmElem, (xmlChar *) "lilypond", (xmlChar *) (r->lilypond ? r->lilypond->str : "")); if (r->nickname) xmlSetProp (rhythmElem, (xmlChar *) "nickname", (xmlChar *) (r->nickname->str)); newClipboardElem (rhythmElem, ns, r->clipboard); } static void newRhythmsElem (xmlNodePtr curElem, xmlNsPtr ns, GList * rhythms) { xmlNodePtr rhythmsElem; rhythmsElem = xmlNewChild (curElem, ns, (xmlChar *) "rhythms", NULL); for (; rhythms; rhythms = rhythms->next) { RhythmPattern *r = (RhythmPattern *) rhythms->data; newRhythmElem (rhythmsElem, ns, r); } } static void newScrollPointElem (xmlNodePtr scrollElem, xmlNsPtr ns, DenemoScrollPoint * s) { newXMLIntChild (scrollElem, ns, "time", (gint) (1000 * (s->time))); newXMLIntChild (scrollElem, ns, "adj", (gint) (1000 * (s->adj))); newXMLIntChild (scrollElem, ns, "x", (gint) (1000 * (s->x))); newXMLIntChild (scrollElem, ns, "y", (gint) (1000 * (s->y))); } static void newScrollPointsElem (xmlNodePtr curElem, xmlNsPtr ns, GList * scroll_points) { xmlNodePtr scrollElem = xmlNewChild (curElem, ns, (xmlChar *) "scroll-points", NULL); for (; scroll_points; scroll_points = scroll_points->next) { DenemoScrollPoint *s = (DenemoScrollPoint *) scroll_points->data; xmlNodePtr child = xmlNewChild (scrollElem, ns, (xmlChar *) "scroll-point", NULL); newScrollPointElem (child, ns, s); } } /** * Export the given score (from measure start to measure end) as a "native" * Denemo XML file to the given file. */ gint exportXML (gchar * thefilename, DenemoProject * gui) { gint ret = 0; GString *filename = g_string_new (thefilename); xmlDocPtr doc; xmlNodePtr scoreElem, mvmntElem, stavesElem, voicesElem, voiceElem; xmlNodePtr measuresElem, measureElem; xmlNodePtr curElem, parentElem; xmlNsPtr ns; staffnode *curStaff; DenemoStaff *curStaffStruct; gchar *staffXMLID = 0, *voiceXMLID; //gchar *clefname, *baseKeyName, *accidental; measurenode *curMeasure; static gchar *version_string; if (version_string == NULL) version_string = g_strdup_printf ("%d", CURRENT_XML_VERSION); /* Append .denemo onto the filename if necessary. */ //if (strcmp (filename->str + filename->len - 7, ".denemo")) // g_string_append (filename, ".denemo"); /* Initialize score-wide variables. */ sStructToXMLIDMap = g_hash_table_new (NULL, NULL); /* Create the XML document and output the root element. */ doc = xmlNewDoc ((xmlChar *) "1.0"); //xmlSetDocCompressMode (doc, XML_COMPRESSION_RATIO); //xmlSetCompressMode (Denemo.prefs.compression); xmlSetDocCompressMode (doc, Denemo.prefs.compression); g_print ("Document compression mode set to %d, (read back as %d)\n", Denemo.prefs.compression, xmlGetDocCompressMode (doc)); doc->xmlRootNode = scoreElem = xmlNewDocNode (doc, NULL, (xmlChar *) "score", NULL); ns = xmlNewNs (doc->xmlRootNode, (xmlChar *) DENEMO_XML_NAMESPACE, NULL); xmlSetProp (scoreElem, (xmlChar *) "version", (xmlChar *) version_string); /* FIXME: Put comment here ("Denemo XML file generated by..."). */ if (gui->script && *(gui->script) != '\0') { xmlNewTextChild (scoreElem, ns, (xmlChar *) "scheme", (xmlChar *) gui->script); } if (gui->scoreheader.directives) newDirectivesElem (scoreElem, ns, gui->scoreheader.directives, "scoreheader-directives"); if (gui->paper.directives) newDirectivesElem (scoreElem, ns, gui->paper.directives, "paper-directives"); if (gui->thumbnail.firststaffmarked) newThumbnailElem (scoreElem, ns, &gui->thumbnail, "thumbnail"); newSourceFileElem (scoreElem, ns, gui); if (gui->rhythms) newRhythmsElem (scoreElem, ns, gui->rhythms); /* lilycontrol for the whole musical score */ parentElem = xmlNewChild (scoreElem, ns, (xmlChar *) "lilycontrol", NULL); #define NEWCHILD(field) if(gui->lilycontrol.field->len) \ xmlNewTextChild (parentElem, ns, (xmlChar *) #field,\ (xmlChar *) gui->lilycontrol.field->str) NEWCHILD (papersize); NEWCHILD (lilyversion); newXMLIntChild (parentElem, ns, (xmlChar *) "fontsize", atoi (gui->lilycontrol.staffsize->str)); newXMLIntChild (parentElem, ns, (xmlChar *) "orientation", gui->lilycontrol.orientation); newXMLIntChild (parentElem, ns, (xmlChar *) "total-edit-time", gui->total_edit_time); if (gui->lilycontrol.directives) newDirectivesElem (parentElem, ns, gui->lilycontrol.directives, "score-directives"); GList *custom; for (custom = g_list_last (gui->custom_scoreblocks); custom; custom = custom->prev) { GString *lilypond = (GString *) (((DenemoScoreblock *) custom->data)->lilypond); if (lilypond == NULL) refresh_lilypond ((DenemoScoreblock *) custom->data); lilypond = (GString *) (((DenemoScoreblock *) custom->data)->lilypond); if (lilypond) { xmlNodePtr scoreblockElem = xmlNewTextChild (scoreElem, ns, (xmlChar *) "custom_scoreblock", (xmlChar *) (lilypond->str)); if (((DenemoScoreblock *) custom->data)->uri) xmlSetProp (scoreblockElem, (xmlChar *) "scoreblock_uri", (xmlChar *) ((DenemoScoreblock *) custom->data)->uri); } else g_warning ("Custom Scoreblock with no LilyPond text"); } // if(gui->custom_prolog && gui->custom_prolog->len) // xmlNewChild (scoreElem, ns, "custom_prolog", (xmlChar *)gui->custom_prolog->str); gint movement_number = 1 + g_list_index (gui->movements, gui->movement); if (movement_number) newXMLIntChild (scoreElem, ns, (xmlChar *) "movement-number", movement_number); GList *g; for (g = gui->movements; g; g = g->next) { DenemoMovement *si = g->data; mvmntElem = xmlNewChild (scoreElem, ns, (xmlChar *) "movement", NULL); parentElem = xmlNewChild (mvmntElem, ns, (xmlChar *) "edit-info", NULL); newXMLIntChild (parentElem, ns, (xmlChar *) "staffno", si->currentstaffnum); newXMLIntChild (parentElem, ns, (xmlChar *) "measureno", si->currentmeasurenum); newXMLIntChild (parentElem, ns, (xmlChar *) "cursorposition", MAX (0, si->cursor_x)); newXMLIntChild (parentElem, ns, (xmlChar *) "tonalcenter", get_enharmonic_position ()); newXMLIntChild (parentElem, ns, (xmlChar *) "zoom", (int) (0.5 + 100 * si->zoom)); newXMLIntChild (parentElem, ns, (xmlChar *) "system-height", (int) (100 * si->system_height)); newXMLIntChild (parentElem, ns, (xmlChar *) "page-zoom", (int) (100 * si->page_zoom)); newXMLIntChild (parentElem, ns, (xmlChar *) "page-system-height", (int) (100 * si->page_system_height)); if (si->page_width) newXMLIntChild (parentElem, ns, (xmlChar *) "page-width", si->page_width); if (si->page_height) newXMLIntChild (parentElem, ns, (xmlChar *) "page-height", si->page_height); if (si->measurewidth != DENEMO_INITIAL_MEASURE_WIDTH) newXMLIntChild (parentElem, ns, (xmlChar *) "measure-width", si->measurewidth); if (si->header.directives) { newDirectivesElem (mvmntElem, ns, si->header.directives, "header-directives"); } if (si->layout.directives) { newDirectivesElem (mvmntElem, ns, si->layout.directives, "layout-directives"); } if (si->movementcontrol.directives) { newDirectivesElem (mvmntElem, ns, si->movementcontrol.directives, "movementcontrol-directives"); } if (si->scroll_points) newScrollPointsElem (mvmntElem, ns, si->scroll_points); // output audio source if (si->recording) outputAudio (mvmntElem, ns, si->recording); parentElem = xmlNewChild (mvmntElem, ns, (xmlChar *) "score-info", NULL); curElem = xmlNewChild (parentElem, ns, (xmlChar *) "tempo", NULL); newXMLFraction (xmlNewChild (curElem, ns, (xmlChar *) "duration", NULL), ns, 1, 4); newXMLIntChild (curElem, ns, (xmlChar *) "bpm", si->tempo * si->master_tempo); stavesElem = xmlNewChild (mvmntElem, ns, (xmlChar *) "staves", NULL); for (curStaff = si->thescore; curStaff != NULL; curStaff = curStaff->next) { curStaffStruct = (DenemoStaff *) curStaff->data; if (!(curStaffStruct->voicecontrol & DENEMO_SECONDARY)) { parentElem = xmlNewChild (stavesElem, ns, (xmlChar *) "staff", NULL); staffXMLID = getXMLID (curStaffStruct); xmlSetProp (parentElem, (xmlChar *) "id", (xmlChar *) staffXMLID); // curElem = xmlNewChild (parentElem, ns, // (xmlChar *) "staff-info", NULL); } } /* Output each voice. These are the DenemoStaff objects */ voicesElem = xmlNewChild (mvmntElem, ns, (xmlChar *) "voices", NULL); for (curStaff = si->thescore; curStaff != NULL; curStaff = curStaff->next) { curStaffStruct = (DenemoStaff *) curStaff->data; /* Initialize voice-wide variables. */ /* * If this is a primary voice, find the ID of its staff, which applies * until the next primary voice we run across. */ if (!(curStaffStruct->voicecontrol & DENEMO_SECONDARY)) { staffXMLID = getXMLID (curStaffStruct); } voiceElem = xmlNewChild (voicesElem, ns, (xmlChar *) "voice", NULL); voiceXMLID = newXMLID (); xmlSetProp (voiceElem, (xmlChar *) "id", (xmlChar *) voiceXMLID); /* Nobody actually needs the voice ID right now, so we throw it away. */ g_free (voiceXMLID); /* * Output the voice info (voice name and first measure number, which * currently is always 1. */ parentElem = xmlNewChild (voiceElem, ns, (xmlChar *) "voice-info", NULL); xmlNewChild (parentElem, ns, (xmlChar *) "voice-name", (xmlChar *) curStaffStruct->denemo_name->str); if (curStaffStruct->subpart) xmlNewChild (parentElem, ns, (xmlChar *) "subpart", (xmlChar *) curStaffStruct->subpart->str); newXMLIntChild (parentElem, ns, (xmlChar *) "first-measure-number", 1); /* * Output the initial voice parameters: * - staff on which this voice resides * - clef * - key signature * - time signature */ parentElem = xmlNewChild (voiceElem, ns, (xmlChar *) "initial-voice-params", NULL); curElem = xmlNewChild (parentElem, ns, (xmlChar *) "staff-ref", NULL); xmlSetProp (curElem, (xmlChar *) "staff", (xmlChar *) staffXMLID); newXMLClef (parentElem, ns, &curStaffStruct->clef); newXMLKeySignature (parentElem, ns, &curStaffStruct->keysig); newXMLTimeSignature (parentElem, ns, &curStaffStruct->timesig); // output here the stuff like device-port which are currently being done on the staff, because that staff is just a container, not a real Denemo staff newVoiceProps (voiceElem, ns, curStaffStruct); // output staff->sources if (curStaffStruct->sources) outputSources (parentElem, ns, curStaffStruct->sources); /* Write out the measures. */ measuresElem = xmlNewChild (voiceElem, ns, (xmlChar *) "measures", NULL); for (curMeasure = curStaffStruct->themeasures; curMeasure != NULL; curMeasure = curMeasure->next) { DenemoMeasure *themeasure = (DenemoMeasure *) curMeasure->data; measureElem = xmlNewChild (measuresElem, ns, (xmlChar *) "measure", NULL); if (themeasure->measure_numbering_offset) newXMLIntProp (measureElem, (xmlChar *) "offset", themeasure->measure_numbering_offset); parseObjects (measureElem, ns, (objnode *) ((DenemoMeasure *) curMeasure->data)->objects); } /* end for each measure in voice */ /* Clean up voice-specific variables. */ } /* end for each voice in score */ } // for each movement /* Save the file. */ xmlSaveCtxt *ctxt = xmlSaveToFilename (filename->str, "UTF-8", XML_SAVE_FORMAT | XML_SAVE_NO_EMPTY); if (!ctxt || xmlSaveDoc (ctxt, doc) < 0 || xmlSaveClose (ctxt) < 0) { g_warning ("Could not save file %s", filename->str); ret = -1; } /* Clean up all the memory we've allocated. */ xmlFreeDoc (doc); g_hash_table_foreach (sStructToXMLIDMap, freeHashTableValue, NULL); g_hash_table_destroy (sStructToXMLIDMap); sNextXMLID = 0; g_string_free (filename, TRUE); return ret; } denemo-2.2.0/src/core/PaxHeaders.19168/exportxml.h0000644000000000000000000000013213135434036016463 xustar0030 mtime=1500919838.343315139 30 atime=1500919919.563315139 30 ctime=1500919914.166648472 denemo-2.2.0/src/core/exportxml.h0000644000175000017500000000736213135434036020344 0ustar00jjbenhamjjbenham00000000000000/* exportxml.h * Header file for exporting "native" Denemo XML files * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2001 Eric Galluzzo */ #ifndef EXPORTXML_H #define EXPORTXML_H #include #include "export/xmldefs.h" #include /* libxml includes: for libxml2 this should be */ #include /* * This is the "interface" that all export handlers must "implement" if they * wish to export data from Denemo. If any of the callbacks in the structure * are NULL, then they are not called. However, all other fields must be * non-NULL. */ typedef struct _DenemoExportXMLNSHandler { /* * The prefix of the XML namespace (e.g. "lily") */ gchar *xmlnsPrefix; /* * The actual XML namespace URI (e.g. * "http://www.denemo.sourceforge.net/Denemo/Lilypond") */ gchar *xmlnsURI; /* * The DenemoObject types for which to call this structure's exportObjectInfo * and createXMLObject callbacks */ gint numHandlerObjectTypes; gint *handlerObjectTypes; /* * Create and return user data necessary for importing the given score. If * no user data is required, set this startScore function to NULL. */ gpointer (*startScore) (DenemoMovement * si); /* * Delete the given user data. If no user data is required, set this * endScore function to NULL. */ void (*endScore) (DenemoMovement * si, gpointer userData); /* * Export any information related to this score as children of * scoreInfoElem. All XML elements should be in the given namespace. */ void (*exportScoreInfo) (DenemoMovement * si, xmlNsPtr ns, xmlNodePtr scoreInfoElem); /* * Export any information related to this staff as children of * staffInfoElem. All XML elements should be in the given namespace. */ void (*exportStaffInfo) (DenemoMovement * si, xmlNsPtr ns, xmlNodePtr staffInfoElem); /* * Export any metadata about this voice as children of voiceInfoElem. All * XML elements should be in the given namespace. */ void (*exportVoiceInfo) (DenemoMovement * si, xmlNsPtr ns, xmlNodePtr voiceInfoElem); /* * Export any non-built-in initial parameters for this voice as children of * voiceInitParamsElem. All XML elements should be in the given namespace. */ void (*exportVoiceInitParams) (DenemoMovement * si, xmlNsPtr ns, xmlNodePtr voiceInitParamsElem); /* * Export any information related to this measure as children of measureElem. * All XML elements should be in the given namespace. */ void (*exportMeasure) (DenemoMovement * si, xmlNsPtr ns, xmlNodePtr measureElem); /* * Export any information related to this built-in type DenemoObject as * children of objectElem. All XML elements should be in the given * namespace. */ void (*exportObjectInfo) (DenemoMovement * si, xmlNsPtr ns, xmlNodePtr objectElem); /* * Export any information related to this note as children of chordElem. * All XML elements should be in the given namespace. */ void (*exportNoteInfo) (DenemoMovement * si, xmlNsPtr ns, xmlNodePtr chordElem); /* * Create a new XML element or multiple elements corresponding to the given * custom type DenemoObject, as children of measureElem. All XML elements * should be in the given namespace. */ void (*exportCustomObject) (DenemoMovement * si, xmlNsPtr ns, xmlNodePtr measureElem); } DenemoExportXMLNSHandler; /* * Export the given score as Denemo's "native" XML file format to the given * filename. The file will be exported from the measures numbered start to * end. */ gint exportXML (gchar * thefilename, DenemoProject * gui); void registerExportXMLNSHandler (DenemoExportXMLNSHandler * handler); void unregisterExportXMLNSHandler (DenemoExportXMLNSHandler * handler); #endif denemo-2.2.0/src/core/PaxHeaders.19168/palettestorage.c0000644000000000000000000000013213135434036017437 xustar0030 mtime=1500919838.346648472 30 atime=1500919919.563315139 30 ctime=1500919914.199981805 denemo-2.2.0/src/core/palettestorage.c0000644000175000017500000002222313135434036021311 0ustar00jjbenhamjjbenham00000000000000/* * palettestorage.c * * Copyright 2013 Richard Shann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include #include "ui/palettes.h" #include "core/view.h" #include "core/utils.h" #include #include #include static void save_button (xmlNodePtr button, GtkWidget *widget) { //newXMLIntProp (xmlNodePtr parent, const xmlChar * name, gint content) const gchar *label = g_object_get_data (G_OBJECT(widget), "icon"); if(label == NULL) label = gtk_button_get_label(GTK_BUTTON(widget)); xmlSetProp (button, (xmlChar *) "label", (xmlChar *) label ); xmlSetProp (button, (xmlChar *) "_tooltip", (xmlChar *) gtk_widget_get_tooltip_text(widget)); xmlSetProp (button, (xmlChar *) "script", (xmlChar *) g_object_get_data (G_OBJECT(widget), "script")); } /** * Set a prop of the parent, holding the passed name and integer. */ static void newXMLIntProp (xmlNodePtr parent, const xmlChar * name, gint content) { gchar *integer = g_strdup_printf ("%d", content); xmlSetProp (parent, name, (xmlChar *) integer); g_free (integer); } static void save_palette (xmlNodePtr parent, DenemoPalette *pal) { xmlSetProp (parent, (xmlChar *) "_name", (xmlChar *) pal->name); newXMLIntProp (parent, "row-wise", pal->rows); newXMLIntProp (parent, "limit", pal->limit); newXMLIntProp (parent, "dock", pal->docked); if (pal->menu) newXMLIntProp (parent, "menu", pal->menu); newXMLIntProp (parent, "hidden", pal->docked?!gtk_widget_get_visible(pal->box): !gtk_widget_get_visible(pal->window)); GList *g; for(g=pal->buttons;g;g=g->next) { xmlNodePtr child = xmlNewChild (parent, NULL, (xmlChar *) "button", NULL); save_button (child, g->data); } } gint writePalettes (void) { gint ret = -1; xmlDocPtr doc; xmlNodePtr parent, child; gchar *localpal = NULL; localpal = g_build_filename (get_user_data_dir (TRUE), "actions", "palettes.xml", NULL); doc = xmlNewDoc ((xmlChar *) "1.0"); doc->xmlRootNode = parent = xmlNewDocNode (doc, NULL, (xmlChar *) "Denemo", NULL); GList *g; for( g = Denemo.palettes; g; g = g->next) { child = xmlNewChild (parent, NULL, (xmlChar *) "palette", NULL); save_palette (child, g->data); } if (xmlSaveFormatFile (localpal, doc, 1) < 0) { g_warning ("Could not save file %s", localpal); ret = -1; } else ret = 0; xmlFreeDoc (doc); return ret; } /** * install palettes from file */ static gint getXMLIntProp (xmlNodePtr child, gchar *name) { gint val = -1; gchar *thename = (gchar *) xmlGetProp (child, (xmlChar *) name); if (thename) val = atoi (thename); xmlFree (thename); return val; } #define FOREACH_CHILD_ELEM(childElem, parentElem) \ for ((childElem) = (parentElem)->xmlChildrenNode; \ (childElem) != NULL; \ (childElem) = (childElem)->next) #define ELEM_NAME_EQ(childElem, childElemName) \ (strcmp ((gchar *)(childElem)->name, (childElemName)) == 0) static void installButtons (xmlNodePtr palette, DenemoPalette *pal) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, palette) if (ELEM_NAME_EQ (childElem, "button")) { gchar *label = (gchar *) xmlGetProp (childElem, (xmlChar *) "label"); gchar *tooltip = (gchar *) xmlGetProp (childElem, (xmlChar *) "_tooltip"); gchar *script = (gchar *) xmlGetProp (childElem, (xmlChar *) "script"); if(label && tooltip && script) palette_add_button (pal, label, tooltip, script); else g_warning ("Bad value for button in palettes.xml %s %s %s", label, tooltip, script); } } static void install_palette (xmlNodePtr palette, gboolean hide) { gchar *name = (gchar *) xmlGetProp (palette, (xmlChar *) "_name"); gboolean hidden = getXMLIntProp (palette, (xmlChar *) "hidden"); gboolean row_wise = getXMLIntProp (palette, (xmlChar *) "row-wise"); gboolean dock = getXMLIntProp (palette, (xmlChar *) "dock"); gint limit = getXMLIntProp (palette, (xmlChar *) "limit"); DenemoPalette *pal = create_palette (name, dock, row_wise); pal->menu = (getXMLIntProp (palette, (xmlChar *) "menu")>0); // -1 is returned if not present set_palette_shape (name, row_wise, limit);//does gtk_widget_show in repack installButtons (palette, pal); if (hide) hidden = TRUE; if(hidden) gtk_widget_hide(pal->docked?pal->box:pal->window); else gtk_widget_show(pal->docked?pal->box:pal->window); if (pal->buttons==NULL) { delete_palette (pal); } } static gint merge_palette (xmlNodePtr palette, const gchar *sought) { gchar *name = (gchar *) xmlGetProp (palette, (xmlChar *) "_name"); gboolean hidden = getXMLIntProp (palette, (xmlChar *) "hidden"); gboolean row_wise = getXMLIntProp (palette, (xmlChar *) "row-wise"); gboolean dock = getXMLIntProp (palette, (xmlChar *) "dock"); gint limit = getXMLIntProp (palette, (xmlChar *) "limit"); if(!strcmp(name, sought)) { DenemoPalette *pal = create_palette (name, dock, row_wise); set_palette_shape (name, row_wise, limit);//does gtk_widget_show in repack installButtons (palette, pal); gtk_widget_show(pal->docked?pal->box:pal->window); if (pal->buttons==NULL) { delete_palette (pal); return -1; } return 0; } return -1; } gint installPalettesFile (gchar *filename, gboolean hide) { xmlDocPtr doc = NULL; xmlNodePtr rootElem; doc = xmlParseFile (filename); if (doc == NULL) { g_warning ("Could not read XML file %s", filename); return -1; } rootElem = xmlDocGetRootElement (doc); if (rootElem == NULL) { g_warning ("Empty Document"); xmlFreeDoc (doc); return -1; } //g_debug ("RootElem: %s\n", rootElem->name); if (0 != xmlStrcmp (rootElem->name, (xmlChar*) "Denemo")) { g_warning ("Document has wrong type"); xmlFreeDoc (doc); return -1; } rootElem = rootElem->xmlChildrenNode; while (rootElem != NULL) { //g_debug ("RootElem %s\n", rootElem->name); if (0 == xmlStrcmp (rootElem->name, (const xmlChar *) "palette")) { install_palette (rootElem, hide); } rootElem = rootElem->next; } xmlFreeDoc (doc); return 0; } gint installPalettes (void) { gint ret; gchar *filename = NULL; GList* dirs = NULL; // if(Denemo.old_user_data_dir) // dirs = g_list_append(dirs, g_build_filename (Denemo.old_user_data_dir, COMMANDS_DIR, NULL)); // else dirs = g_list_append(dirs, g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, NULL)); dirs = g_list_append(dirs, g_build_filename (PACKAGE_SOURCE_DIR, COMMANDS_DIR, NULL)); dirs = g_list_append(dirs, g_build_filename (get_system_data_dir (), COMMANDS_DIR, NULL)); filename = find_path_for_file("palettes.xml", dirs); if (filename == NULL) { g_warning ("Could not find palette file."); return -1; } if(Denemo.old_user_data_dir) { ret = installPalettesFile (filename, TRUE);//install but hide the new standard palettes installPalettesFile (g_build_filename (Denemo.old_user_data_dir, COMMANDS_DIR, "palettes.xml", NULL) , FALSE);//merge users previous custom palettes, showing them } else { ret = installPalettesFile (filename, FALSE);//install and show palettes } return ret; } gint mergePalette (const gchar *name) { gint ret = -1; xmlDocPtr doc = NULL; xmlNodePtr rootElem; gchar *filename = NULL; if (filename == NULL) filename = g_build_filename (get_system_data_dir (), "actions", "palettes.xml", NULL); doc = xmlParseFile (filename); if (doc == NULL) { g_warning ("Could not read XML file %s", filename); return -1; } rootElem = xmlDocGetRootElement (doc); if (rootElem == NULL) { g_warning ("Empty Document"); xmlFreeDoc (doc); return -1; } //g_debug ("RootElem: %s\n", rootElem->name); if (0 != xmlStrcmp (rootElem->name, (xmlChar*) "Denemo")) { g_warning ("Document has wrong type"); xmlFreeDoc (doc); return -1; } rootElem = rootElem->xmlChildrenNode; while (rootElem != NULL) { if (0 == xmlStrcmp (rootElem->name, (const xmlChar *) "palette")) { if( 0 == merge_palette (rootElem, name)) { ret = 0; break; } } rootElem = rootElem->next; } xmlFreeDoc (doc); return ret; } denemo-2.2.0/src/core/PaxHeaders.19168/entries.h0000644000000000000000000000013213135434036016072 xustar0030 mtime=1500919838.343315139 30 atime=1500919919.583315139 30 ctime=1500919914.209981805 denemo-2.2.0/src/core/entries.h0000644000175000017500000021771113135434036017754 0ustar00jjbenhamjjbenham00000000000000/******** built-in commands */ {"CursorLeft", NULL, N_("Selection Cursor Left"), "",N_("Moves the cursor one object left, altering the selection if any"),G_CALLBACK (cursorleft)}, {"MoveCursorLeft", NULL, N_("Move Cursor Left"), "",N_("Moves the cursor one object left, without altering the selection"),G_CALLBACK (movecursorleft)}, {"CursorDown", NULL, N_("Cursor Down"), "",N_("Moves the cursor one scale step down"),G_CALLBACK (cursordown)}, {"CursorUp", NULL, N_("Cursor Up"), "",N_("Moves the cursor one scale step up"),G_CALLBACK (cursorup)}, {"CursorRight", NULL, N_("Selection Cursor Right"), "",N_("Moves the cursor one object right, altering the selection if any"),G_CALLBACK (cursorright)}, {"MoveCursorRight", NULL, N_("Move Cursor Right"), "",N_("Moves the cursor one object right, without altering the selection"),G_CALLBACK (movecursorright)}, {"GoToMark", NULL, N_("To Mark"), "",N_("Moves the cursor to the Mark without altering the selection"),G_CALLBACK (goto_mark)}, {"SwapPointAndMark", NULL, N_("Swap Ends of Selection"), "",N_("Swaps the active end of the selection"),G_CALLBACK (swap_point_and_mark)}, {"GoToSelectionStart", NULL, N_("To Selection Start"), "",N_("Moves the cursor to the first object in the selection without altering the selection. returns #f if no selection"),G_CALLBACK (goto_selection_start)}, {"PushPosition", NULL, N_("Push Position"), "",N_("Pushes the current cursor position onto a stack"),G_CALLBACK (PushPosition)}, {"PopPosition", NULL, N_("Pop Position"), "",N_("Pops a position from the stack of cursor positions, moving the cursor there"),G_CALLBACK (PopPosition)}, {"PopPushPosition", NULL, N_("Pop and Push Position"), "",N_("Pops a position from the stack of cursor positions, pushes the current position, then moves the cursor to the popped position"),G_CALLBACK (PopPushPosition)}, {"ToggleReduceToDrawingArea", NULL, N_("Hide/Show Menus"), "",N_("Hides/Shows menus, panes etc. The ones shown are those checked in the view menu."),G_CALLBACK (ToggleReduceToDrawingArea)}, {"StaffUp", NULL, N_("Selection Staff Up"), "",N_("Moves the cursor to the staff above, extending selection if any"),G_CALLBACK (staffup)}, {"StaffDown", NULL, N_("Selection Staff Down"), "",N_("Moves the cursor to the staff below, extending selection if any"),G_CALLBACK (staffdown)}, {"MoveToStaffUp", NULL, N_("Move to Staff Up"), "",N_("Moves the cursor to the staff above without altering selection. On the top staff it adds space above the staffs."),G_CALLBACK (movetostaffup)}, {"MoveToStaffDown", NULL, N_("Move to Staff Down"), "",N_("Moves the cursor to the staff below without altering selection"),G_CALLBACK (movetostaffdown)}, {"MeasureLeft", NULL, N_("Measure Left"), "",N_("Moves the cursor to the first object in the next measure, extending selection if any"),G_CALLBACK (measureleft)}, {"MeasureRight", NULL, N_("Measure Right"), "",N_("Moves the cursor to the first object in the previous measure, extending selection if any"),G_CALLBACK (measureright)}, {"MoveToMeasureLeft", NULL, N_("Move to Measure Left"), "",N_("Moves the cursor to the first object in the next measure leaving selection, if any, unchanged"),G_CALLBACK (movetomeasureleft)}, {"MoveToMeasureRight", NULL, N_("Move to Measure Right"), "",N_("Moves the cursor to the first object in the previous measure leaving selection, if any, unchanged"),G_CALLBACK (movetomeasureright)}, {"A", NULL, N_("Change/Append A"), "",N_("Changes the note the cursor is on to the note A.\nIf the cursor is in the appending position, appends a note using the prevailing duration."),G_CALLBACK (change_or_append_A_key)}, {"B", NULL, N_("Change/Append B"), "",N_("Changes the note the cursor is on to the note B.\nIf the cursor is in the appending position, appends a note using the prevailing duration."),G_CALLBACK (change_or_append_B_key)}, {"C", NULL, N_("Change/Append C"), "",N_("Changes the note the cursor is on to the note C.\nIf the cursor is in the appending position, appends a note using the prevailing duration."),G_CALLBACK (change_or_append_C_key)}, {"D", NULL, N_("Change/Append D"), "",N_("Changes the note the cursor is on to the note D.\nIf the cursor is in the appending position, appends a note using the prevailing duration."),G_CALLBACK (change_or_append_D_key)}, {"E", NULL, N_("Change/Append E"), "",N_("Changes the note the cursor is on to the note E.\nIf the cursor is in the appending position, appends a note using the prevailing duration."),G_CALLBACK (change_or_append_E_key)}, {"F", NULL, N_("Change/Append F"), "",N_("Changes the note the cursor is on to the note F.\nIf the cursor is in the appending position, appends a note using the prevailing duration."),G_CALLBACK (change_or_append_F_key)}, {"G", NULL, N_("Change/Append G"), "",N_("Changes the note the cursor is on to the note G.\nIf the cursor is in the appending position, appends a note using the prevailing duration."),G_CALLBACK (change_or_append_G_key)}, {"OctaveUp", NULL, N_("Octave Up"), "",N_("Changes the note at the cursor to an octave higher"),G_CALLBACK (octave_up_key)}, {"OctaveDown", NULL, N_("Octave Down"), "",N_("Changes the note at the cursor to an octave lower"),G_CALLBACK (octave_down_key)}, {"WholeNote", NULL, N_("WholeNote"), "",N_("Insert ð…"),G_CALLBACK (insert_chord_0key)}, {"HalfNote", NULL, N_("HalfNote"), "",N_("Insert ð…ž"),G_CALLBACK (insert_chord_1key)}, {"QuarterNote", NULL, N_("QuarterNote"), "",N_("Insert ð…Ÿ"),G_CALLBACK (insert_chord_2key)}, {"EighthNote", NULL, N_("EighthNote"), "",N_("Insert ð… "),G_CALLBACK (insert_chord_3key)}, {"SixteenthNote", NULL, N_("SixteenthNote"), "",N_("Insert ð…¡"),G_CALLBACK (insert_chord_4key)}, {"ThirtysecondNote", NULL, N_("ThirtysecondNote"), "",N_("Insert ð…¢"),G_CALLBACK (insert_chord_5key)}, {"SixtyfourthNote", NULL, N_("SixtyfourthNote"), "",N_("Insert ð…£"),G_CALLBACK (insert_chord_6key)}, {"OneHundredTwentyEighthNote", NULL, N_("OneHundredTwentyEighthNote"), "",N_("Insert ð…¤"),G_CALLBACK (insert_chord_7key)}, {"TwoHundredFiftySixthNote", NULL, N_("TwoHundredFiftySixthNote"), "",N_("Insert ð…¥"),G_CALLBACK (insert_chord_8key)}, {"InsertWholeRest", NULL, N_("Insert a ð„»"), "",N_("Insert ð„» rest"),G_CALLBACK (insert_rest_0key)}, {"InsertHalfRest", NULL, N_("Insert a ð„¼"), "",N_("Insert ð„¼ rest"),G_CALLBACK (insert_rest_1key)}, {"InsertQuarterRest", NULL, N_("Insert a ð„½"), "",N_("Insert ð„½ rest"),G_CALLBACK (insert_rest_2key)}, {"InsertEighthRest", NULL, N_("Insert a ð„¾"), "",N_("Insert ð„¾ rest"),G_CALLBACK (insert_rest_3key)}, {"InsertSixteenthRest", NULL, N_("Insert a ð„¿"), "",N_("Insert ð„¿ rest"),G_CALLBACK (insert_rest_4key)}, {"InsertThirtysecondRest", NULL, N_("Insert a ð…€"), "",N_("Insert ð…€ rest"),G_CALLBACK (insert_rest_5key)}, {"InsertSixtyfourthRest", NULL, N_("Insert a ð…"), "",N_("Insert ð… rest"),G_CALLBACK (insert_rest_6key)}, {"InsertBlankWholeNote", NULL, N_("Insert a ð„» Spacer"), "",N_("Insert a non-printing ð„» rest"),G_CALLBACK (insert_blankchord_0key)}, {"InsertBlankHalfNote", NULL, N_("Insert a ð„¼ Spacer"), "",N_("Insert a non-printing ð„¼ rest"),G_CALLBACK (insert_blankchord_1key)}, {"InsertBlankQuarterNote", NULL, N_("Insert a ð„½ Spacer"), "",N_("Insert a non-printing ð„½ rest"),G_CALLBACK (insert_blankchord_2key)}, {"InsertBlankEighthNote", NULL, N_("Insert a ð„¾ Spacer"), "",N_("Insert a non-printing ð„¾ rest"),G_CALLBACK (insert_blankchord_3key)}, {"InsertBlankSixteenthNote", NULL, N_("Insert a ð„¿ Spacer"), "",N_("Insert a non-printing ð„¿ rest"),G_CALLBACK (insert_blankchord_4key)}, {"InsertBlankThirtysecondNote", NULL, N_("Insert a ð…€ Spacer"), "",N_("Insert a non-printing ð…€ rest"),G_CALLBACK (insert_blankchord_5key)}, {"InsertBlankSixtyfourthNote", NULL, N_("Insert a ð… Spacer"), "",N_("Insert a non-printing ð… rest"),G_CALLBACK (insert_blankchord_6key)}, {"InsertBlankOneHundredTwentyEighthNote", NULL, N_("Insert a ð…‚ Spacer"), "",N_("Insert a non-printing ð…‚ rest"),G_CALLBACK (insert_blankchord_7key)}, {"InsertBlankTwoHundredFiftySixthNote", NULL, N_("Insert a ð…ƒ Spacer"), "",N_("Insert a non-printing ð…ƒ rest"),G_CALLBACK (insert_blankchord_8key)}, {"InsertDuplet", NULL, N_("Insert Duplet"), "",N_("No Tooltip yet"),G_CALLBACK (duplet_insert)}, {"InsertTriplet", NULL, N_("Insert Triplet"), "",N_("Inserts a Start Triplet object and an End Tuplet object and places the cursor between these two"),G_CALLBACK (triplet_insert)}, {"StartTriplet", NULL, N_("Start Triplet"), "",N_("Inserts an Start Triplet object, which makes the notes following take 2/3 of their written duration. Later in this measure there should be an End Tuplet object."),G_CALLBACK (triplet_start)}, {"EndTuplet", NULL, N_("End Tuplet"), "",N_("Inserts an End Tuplet object, which terminates a tuplet started earlier in this measure."),G_CALLBACK (tuplet_end)}, {"InsertQuadtuplet", NULL, N_("Insert Quadruplet"), "",N_("No Tooltip yet"),G_CALLBACK (insert_quadtuplet)}, {"InsertQuintuplet", NULL, N_("Insert Quintuplet"), "",N_("No Tooltip yet"),G_CALLBACK (quintuplet_insert)}, {"InsertSextuplet", NULL, N_("Insert Sextuplet"), "",N_("No Tooltip yet"),G_CALLBACK (sextuplet_insert)}, {"InsertSeptuplet", NULL, N_("Insert Septuplet"), "",N_("No Tooltip yet"),G_CALLBACK (septuplet_insert)}, {"AddNoteToChord", NULL, N_("Add note"), "",N_("Add a note to the current chord\nThe cursor position determines which note to add"),G_CALLBACK (add_note_to_chord)}, {"RemoveNoteFromChord", NULL, N_("Remove note"), "",N_("Remove a note from the current chord, based on the cursor position"),G_CALLBACK (delete_note_from_chord)}, {"Sharpen", NULL, N_("Sharpen"), "",N_("Sharpen the note at the cursor"),G_CALLBACK (sharpen_note)}, {"Flatten", NULL, N_("Flatten"), "",N_("Flatten the note at the cursor"),G_CALLBACK (flatten_note)}, {"PendingSharpen", NULL, N_("Sharpen Next Note"), "",N_("Increases the sharpness of the next entered note. The status bar shows the current state."),G_CALLBACK (pending_sharpen)}, {"PendingFlatten", NULL, N_("Flatten Next Note"), "",N_("Increases the flatness of the next entered note. The status bar shows the current state."),G_CALLBACK (pending_flatten)}, {"StemUp", NULL, N_("StemUp"), "",N_("Alters a StemNeutral object to stem up."),G_CALLBACK (set_stem_up)}, {"StemDown", NULL, N_("StemDown"), "",N_("Alters a StemNeutral object to stem down."),G_CALLBACK (set_stem_down)}, {"AddDot", NULL, N_("Add Dot"), "",N_("Lengthen the chord, note or rest at the cursor by dotting it."),G_CALLBACK (add_dot_key)}, {"RemoveDot", NULL, N_("Remove Dot"), "",N_("Reduce the dotting of the chord note or rest at the cursor."),G_CALLBACK (remove_dot_key)}, {"InsertTiedNote", NULL, N_("Tied note"), "",N_("Inserts a duplicate of the current note, tied"),G_CALLBACK (tie_notes_key)}, {"ToggleTie", NULL, N_("Tie (Off/On)"), "",N_("Ties/unties the note at the cursor. The following note should be the same pitch."),G_CALLBACK (toggle_tie)}, {"DeleteObject", NULL, N_("Delete Object"), "",N_("Delete the object at the cursor"),G_CALLBACK (deleteobject)}, {"DeletePreviousObject", NULL, N_("Delete Previous Object"), "",N_("Delete to the left of the cursor."),G_CALLBACK (deletepreviousobject)}, {"InsertMeasure", NULL, N_("Insert Measure Before"), "",N_("Insert a blank measure before the current one (in all staffs)"),G_CALLBACK (insert_measure_key)}, {"AddMeasure", NULL, N_("Insert Measure After"), "",N_("Insert a blank measure after the current one (in all staffs)"),G_CALLBACK (addmeasureafter)}, {"InsertMeasureBefore", NULL, N_("Staff Insert Measure Before"), "",N_("Insert a blank measure before the current one (in current staff)"),G_CALLBACK (insertmeasurebefore)}, {"InsertMeasureAfter", NULL, N_("Staff Insert Measure After"), "",N_("Insert a blank measure in current staff after the current measure"),G_CALLBACK (insertmeasureafter)}, {"AppendMeasure", NULL, N_("Staff Append Measure"), "",N_("Append an empty measure at the end of the current staff"),G_CALLBACK (append_measure_key)}, {"DeleteMeasure", NULL, N_("Staff Delete Measure"), "",N_("Delete the current measure in this staff, leaving the staff short"),G_CALLBACK (deletemeasure)}, {"DeleteMeasureAllStaffs", NULL, N_("Delete Measure All Staffs"), "",N_("Delete the current measure in all staffs"),G_CALLBACK (deletemeasureallstaffs)}, {"ShrinkMeasures", NULL, N_("Shrink Measure"), "",N_("No Tooltip yet"),G_CALLBACK (adjust_measure_less_width_key)}, {"WidenMeasures", NULL, N_("Widen Measures"), "",N_("No Tooltip yet"),G_CALLBACK (adjust_measure_more_width_key)}, {"ShorterStaffs", NULL, N_("Shorter Staffs"), "",N_("No Tooltip yet"),G_CALLBACK (adjust_staff_less_height_key)}, {"TallerStaffs", NULL, N_("Taller Staffs"), "",N_("No Tooltip yet"),G_CALLBACK (adjust_staff_more_height_key)}, {"InsertTrebleClef", NULL, N_("New Treble Clef"), "",N_("No Tooltip yet"),G_CALLBACK (clef_new_treble)}, {"InsertBassClef", NULL, N_("New Bass Clef"), "",N_("No Tooltip yet"),G_CALLBACK (clef_new_bass)}, {"Insertg8clef", NULL, N_("New G8 Clef"), "",N_("No Tooltip yet"),G_CALLBACK (clef_new_g8)}, {"InsertAltoClef", NULL, N_("New Alto Clef"), "",N_("No Tooltip yet"),G_CALLBACK (clef_new_alto)}, {"InsertTenorClef", NULL, N_("New Tenor Clef"), "",N_("No Tooltip yet"),G_CALLBACK (clef_new_tenor)}, {"InsertSopranoClef", NULL, N_("New Soprano Clef"), "",N_("No Tooltip yet"),G_CALLBACK (clef_new_soprano)}, {"SetInitialTrebleClef", NULL, N_("Set Treble Clef"), "",N_("No Tooltip yet"),G_CALLBACK (clef_set_treble)}, {"SetInitialBassClef", NULL, N_("Set Bass Clef"), "",N_("No Tooltip yet"),G_CALLBACK (clef_set_bass)}, {"SetInitialg8clef", NULL, N_("Set G8 Clef"), "",N_("No Tooltip yet"),G_CALLBACK (clef_set_g8)}, {"SetInitialAltoClef", NULL, N_("Set Alto Clef"), "",N_("No Tooltip yet"),G_CALLBACK (clef_set_alto)}, {"SetInitialTenorClef", NULL, N_("Set Tenor Clef"), "",N_("No Tooltip yet"),G_CALLBACK (clef_set_tenor)}, {"SetInitialSopranoClef", NULL, N_("Set Soprano Clef"), "",N_("No Tooltip yet"),G_CALLBACK (clef_set_soprano)}, {"Insert22Time", NULL, N_("Insert 2/2 Time"), "",N_("No Tooltip yet"),G_CALLBACK (newtimesig22)}, {"Insert32Time", NULL, N_("Insert 3/2 Time"), "",N_("No Tooltip yet"),G_CALLBACK (newtimesig32)}, {"Insert42Time", NULL, N_("Insert 4/2 Time"), "",N_("No Tooltip yet"),G_CALLBACK (newtimesig42)}, {"Insert44Time", NULL, N_("Insert 4/4 Time"), "",N_("No Tooltip yet"),G_CALLBACK (newtimesig44)}, {"Insert34Time", NULL, N_("Insert 3/4 Time"), "",N_("No Tooltip yet"),G_CALLBACK (newtimesig34)}, {"Insert24Time", NULL, N_("Insert 2/4 Time"), "",N_("No Tooltip yet"),G_CALLBACK (newtimesig24)}, {"Insert64Time", NULL, N_("Insert 6/4 Time"), "",N_("No Tooltip yet"),G_CALLBACK (newtimesig64)}, {"Insert38Time", NULL, N_("Insert 3/8 Time"), "",N_("No Tooltip yet"),G_CALLBACK (newtimesig38)}, {"Insert68Time", NULL, N_("Insert 6/8 Time"), "",N_("No Tooltip yet"),G_CALLBACK (newtimesig68)}, {"Insert128Time", NULL, N_("Insert 12/8 Time"), "",N_("No Tooltip yet"),G_CALLBACK (newtimesig128)}, {"Insert98Time", NULL, N_("Insert 9/8 Time"), "",N_("No Tooltip yet"),G_CALLBACK (newtimesig98)}, {"Set22Time", NULL, N_("Set 2/2 Time"), "",N_("No Tooltip yet"),G_CALLBACK (settimesig22)}, {"Set32Time", NULL, N_("Set 3/2 Time"), "",N_("No Tooltip yet"),G_CALLBACK (settimesig32)}, {"Set42Time", NULL, N_("Set 4/2 Time"), "",N_("No Tooltip yet"),G_CALLBACK (settimesig42)}, {"Set44Time", NULL, N_("Set 4/4 Time"), "",N_("No Tooltip yet"),G_CALLBACK (settimesig44)}, {"Set34Time", NULL, N_("Set 3/4 Time"), "",N_("No Tooltip yet"),G_CALLBACK (settimesig34)}, {"Set24Time", NULL, N_("Set 2/4 Time"), "",N_("No Tooltip yet"),G_CALLBACK (settimesig24)}, {"Set64Time", NULL, N_("Set 6/4 Time"), "",N_("No Tooltip yet"),G_CALLBACK (settimesig64)}, {"Set38Time", NULL, N_("Set 3/8 Time"), "",N_("No Tooltip yet"),G_CALLBACK (settimesig38)}, {"Set68Time", NULL, N_("Set 6/8 Time"), "",N_("No Tooltip yet"),G_CALLBACK (settimesig68)}, {"Set128Time", NULL, N_("Set 12/8 Time"), "",N_("No Tooltip yet"),G_CALLBACK (settimesig128)}, {"Set98Time", NULL, N_("Set 9/8 Time"), "",N_("No Tooltip yet"),G_CALLBACK (settimesig98)}, {"InsertCmaj", NULL, N_("Insert Cmaj"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_cmaj)}, {"InsertGmaj", NULL, N_("Insert Gmaj"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_gmaj)}, {"InsertDmaj", NULL, N_("Insert Dmaj"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_dmaj)}, {"InsertAmaj", NULL, N_("Insert Amaj"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_amaj)}, {"InsertEmaj", NULL, N_("Insert Emaj"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_emaj)}, {"InsertBmaj", NULL, N_("Insert Bmaj"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_bmaj)}, {"InsertFSharpmaj", NULL, N_("Insert F# Major"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_fsharpmaj)}, {"InsertCSharpmaj", NULL, N_("Insert C# Major"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_csharpmaj)}, {"InsertFmaj", NULL, N_("Insert F Major"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_fmaj)}, {"InsertBflatmaj", NULL, N_("Insert Bb Major"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_bflatmaj)}, {"InsertEflatmaj", NULL, N_("Insert Eb Major"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_eflatmaj)}, {"InsertAflatmaj", NULL, N_("Insert Ab Major"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_aflatmaj)}, {"InsertDflatmaj", NULL, N_("Insert Db Major"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_dflatmaj)}, {"InsertGflatmaj", NULL, N_("Insert Gb Major"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_gflatmaj)}, {"InsertCflatmaj", NULL, N_("Insert Cb Major"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_cflatmaj)}, {"InsertAmin", NULL, N_("Insert A Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_amin)}, {"InsertEmin", NULL, N_("Insert E Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_emin)}, {"InsertBmin", NULL, N_("Insert B Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_bmin)}, {"InsertFSharpmin", NULL, N_("Insert F# Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_fsharpmin)}, {"InsertCSharpmin", NULL, N_("Insert C# Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_csharpmin)}, {"InsertGSharpmin", NULL, N_("Insert G# Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_gsharpmin)}, {"InsertDSharpmin", NULL, N_("Insert D# Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_dsharpmin)}, {"InsertASharpmin", NULL, N_("Insert A# Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_asharpmin)}, {"InsertDmin", NULL, N_("Insert D Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_dmin)}, {"InsertGmin", NULL, N_("Insert G Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_gmin)}, {"InsertCmin", NULL, N_("Insert C Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_cmin)}, {"InsertFmin", NULL, N_("Insert F Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_fmin)}, {"InsertBflatmin", NULL, N_("Insert Bb Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_bflatmin)}, {"InsertEflatmin", NULL, N_("Insert Eb Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_eflatmin)}, {"InsertAflatmin", NULL, N_("Insert Ab Minor"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_new_aflatmin)}, {"SetInitialCmaj", NULL, N_("Set Initial Keysig to C Major"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_cmaj)}, {"SetInitialGmaj", NULL, N_("Set Initial Keysig to G Major"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_gmaj)}, {"SetInitialDmaj", NULL, N_("Set D Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_dmaj)}, {"SetInitialAmaj", NULL, N_("Set A Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_amaj)}, {"SetInitialEmaj", NULL, N_("Set E Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_emaj)}, {"SetInitialBmaj", NULL, N_("Set B Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_bmaj)}, {"SetInitialFSharpmaj", NULL, N_("Set F# Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_fsharpmaj)}, {"SetInitialCSharpmaj", NULL, N_("Set C# Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_csharpmaj)}, {"SetInitialFmaj", NULL, N_("Set F Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_fmaj)}, {"SetInitialBflatmaj", NULL, N_("Set Bb Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_bflatmaj)}, {"SetInitialEflatmaj", NULL, N_("Set Eb Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_eflatmaj)}, {"SetInitialAflatmaj", NULL, N_("Set Ab Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_aflatmaj)}, {"SetInitialDflatmaj", NULL, N_("Set Db Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_dflatmaj)}, {"SetInitialGflatmaj", NULL, N_("Set Gb Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_gflatmaj)}, {"SetInitialCflatmaj", NULL, N_("Set Cb Major as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_cflatmaj)}, {"SetInitialAmin", NULL, N_("Set A Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_amin)}, {"SetInitialEmin", NULL, N_("Set E Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_emin)}, {"SetInitialBmin", NULL, N_("Set B Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_bmin)}, {"SetInitialFSharpmin", NULL, N_("Set F# Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_fsharpmin)}, {"SetInitialCSharpmin", NULL, N_("Set C# Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_csharpmin)}, {"SetInitialGSharpmin", NULL, N_("Set G# Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_gsharpmin)}, {"SetInitialDSharpmin", NULL, N_("Set D# Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_dsharpmin)}, {"SetInitialASharpmin", NULL, N_("Set A# Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_asharpmin)}, {"SetInitialDmin", NULL, N_("Set D Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_dmin)}, {"SetInitialGmin", NULL, N_("Set G Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_gmin)}, {"SetInitialCmin", NULL, N_("Set C Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_cmin)}, {"SetInitialFmin", NULL, N_("Set F Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_fmin)}, {"SetInitialBflatmin", NULL, N_("Set Bb Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_bflatmin)}, {"SetInitialEflatmin", NULL, N_("Set Eb Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_eflatmin)}, {"SetInitialAflatmin", NULL, N_("Set Ab Minor as Initial Keysig"), "",N_("No Tooltip yet"),G_CALLBACK (keysig_set_aflatmin)}, {"SetMark", NULL, N_("Set Mark"), "",N_("Sets the start point for a selection,\nthe end point of the selection is unaltered"),G_CALLBACK (set_mark)}, {"UnsetMark", NULL, N_("Unset Mark"), "",N_("Gets rid of the selection."),G_CALLBACK (unset_mark)}, {"SetPoint", NULL, N_("Set Point"), "",N_("Extends the selection to the current cursor position"),G_CALLBACK (set_point)}, {"ToggleBeginSlur", NULL, N_("Begin Slur (Off/On)"), "",N_("Insert/delete begin slur on this note"),G_CALLBACK (toggle_begin_slur)}, {"ToggleEndSlur", NULL, N_("End Slur (Off/On)"), "",N_("Insert/delete end slur on this note"),G_CALLBACK (toggle_end_slur)}, {"ToggleStartCrescendo", NULL, N_("Start Crescendo (Off/On)"), "",N_("Marks/Unmarks the chord or note at the cursor as the start of a crescendo."),G_CALLBACK (toggle_start_crescendo)}, {"ToggleEndCrescendo", NULL, N_("End Crescendo (Off/On)"), "",N_("Marks/Unmarks the chord or note at the cursor as the end of a crescendo."),G_CALLBACK (toggle_end_crescendo)}, {"ToggleStartDiminuendo", NULL, N_("Start Diminuendo (Off/On)"), "",N_("Marks/Unmarks the chord or note at the cursor as the start of a diminuendo."),G_CALLBACK (toggle_start_diminuendo)}, {"ToggleEndDiminuendo", NULL, N_("End Diminuendo (Off/On)"), "",N_("Marks/Unmarks the chord or note at the cursor as the end of a diminuendo."),G_CALLBACK (toggle_end_diminuendo)}, {"ToggleGrace", NULL, N_("Grace Note Off/On"), "",N_("Makes the note at the cursor an appoggiatura grace note, if it is one, makes it normal"),G_CALLBACK (toggle_grace)}, {"ToggleAcciaccatura", NULL, N_("Acciaccatura Off/On"), "",N_("Makes the note at the cursor an acciaccatura grace note, if it is one, makes it normal"),G_CALLBACK (toggle_acciaccatura)}, {"ForceCaution", NULL, N_("Force Cautionary Accidental"), "",N_("Give a cautionary accidental to the note at the cursor"),G_CALLBACK (force_cautionary)}, {"ChangePitch", NULL, N_("Change Pitch"), "",N_("Changes the pitch of the note at the cursor to the cursor height"),G_CALLBACK (change_pitch)}, {"InsertRhythm", NULL, N_("Insert Snippet"), "",N_("Inserts the current music snippet, or if none is selected prompts for a number 1,2... for the snippet to insert."),G_CALLBACK (insert_rhythm_pattern)}, {"NextRhythm", NULL, N_("Next Snippet"), "",N_("Make next snippet\nthe current snippet.\nNotes entered will follow the rhythmic pattern of this snippet"),G_CALLBACK (nextrhythm)}, {"AppendMeasureAllStaffs", NULL, N_("Append Measure All Staffs"), "",N_("Appends a blank measure to every staff in this movement"),G_CALLBACK (append_measure_score)}, {"ExecuteScheme", NULL, N_("Execute Scheme"), "",N_("Execute the scheme code from the scripting window"),G_CALLBACK (execute_scheme)}, {"FileMenu", NULL, N_("File"), "",N_("Menu:\nCreating, saving, loading, exporting, importing, typesetting and printing musical scores")}, {"Bookmarks", NULL, N_("Bookmarks"), "",N_("Creating, saving places in musical scores")}, {"ModeMenu", NULL, N_("Mode"), "",N_("Different keyboard and MIDI entry modes")}, {"EditMenu", NULL, N_("Edit"), "",N_("Menu:\nGeneral editing commands")}, {"ViewMenu", NULL, N_("View"), "",N_("Menu:\nControl which tools are to be shown")}, {"HiddenMenu", NULL, N_("Hidden"), "",N_("Menu:\nHidden Items")}, {"StaffMenu", NULL, N_("Staffs/Voices"), "",N_("Menu:\nCommands that manipulate Staffs and voices on staffs.\nCommands that apply to the current staff.")}, {"StaffPropertiesMenu", NULL, N_("Staff Properties"), "",N_("Menu:\nCommands for properties of the current staff.")}, {"MovementPropertiesMenu", NULL, N_("Movement Properties"), "",N_("Menu:\nCommands for properties of the current movement.")}, {"Voices", NULL, N_("Voices"), "",N_("Menu:\nThings that manipulate Voices, that is separately stemmed and beamed parts that will be typeset on the same staff.\nKeep them displayed on separate staffs for editing purposes at least.\nThe typesetter will amalgamate them for you.\nSee also commands for hiding rests and moving notes and rests to avoid collisions in the Notes/Rests menu")}, {"MovementMenu", NULL, N_("Movements"), "",N_("Menu:\nCommands that apply to the current movement in your score.\nMovements in a score could be songs in a song book etc\nAny piece of continuous music.")}, {"HelpMenu", NULL, N_("Help"), "",N_("Menu:\nInformation and help for Denemo")}, {"InputMenu", NULL, N_("Input"), "",N_("Menu:\nChoose whether to get input audio (e.g. microphone) or MIDI controller (e.g. MIDI keyboard)\nor just from the pc keyboard.")}, {"SharpenEnharmonicSet", NULL, N_("Shift Accidentals Sharpwise"), "",N_("Shifts the set of accidentals one step sharper"),G_CALLBACK (set_sharper)}, {"FlattenEnharmonicSet", NULL, N_("Shift Accidentals Flatwise"), "",N_("Shifts the set of accidentals one step flatter"),G_CALLBACK (set_flatter)}, {"PlaybackMenu", NULL, N_("Playback"), "",N_("Music playback. Music is played between the playback start (green bar) and playback end (red bar).\nThere are playback controls (See View->Playback Controls) which make it easy to set and re-set these and also to loop-play, choose the temperament to play in etc. Or use items in this menu to play the whole piece from the cursor to the end.")}, {"New", GTK_STOCK_NEW, N_("Empty Score"), "",N_("Start a new musical score"),G_CALLBACK (file_newwrapper)}, {"NewScore", GTK_STOCK_NEW, N_("New"), "",N_("Start a new musical score for a named instrument/voice."),G_CALLBACK (new_score_cb)}, {"OpenMenu", GTK_STOCK_OPEN, N_("Open"), "",N_("Menu:\nOpen a previously edited score, or a source file for transcription")}, {"Open", GTK_STOCK_OPEN, N_("Open"), "",N_("Open a file containing a music score for editing"),G_CALLBACK (file_open_with_check)}, {"ImportLilypond", GTK_STOCK_OPEN, N_("Import Lilypond"), "",N_("Import a Lilypond file"),G_CALLBACK (file_import_lilypond_with_check)}, {"ImportMidi", GTK_STOCK_OPEN, N_("Import Midi"), "",N_("Import a Midi file"),G_CALLBACK (file_import_midi_with_check)}, {"ImportMusicXml", GTK_STOCK_OPEN, N_("Import MusicXml"), "",N_("Import a MusicXml file"),G_CALLBACK (file_import_musicxml_with_check)}, {"AddStaffs", GTK_STOCK_OPEN, N_("Add Staffs"), "",N_("Add staffs from a Denemo file"),G_CALLBACK (file_add_staffs)}, {"AddMovements", GTK_STOCK_OPEN, N_("Add Movement"), "",N_("Add movements from a Denemo file"),G_CALLBACK (file_add_movements)}, {"MovementProps", GTK_STOCK_PROPERTIES, N_("Change Properties"), "",N_("Change properties of this movement"),G_CALLBACK (movement_props_dialog)}, {"OpenNewWindow", GTK_STOCK_OPEN, N_("Open In New"), "",N_("Open a file containing a music score for editing in a separate working area (tab)"),G_CALLBACK (openinnew)}, {"Save", GTK_STOCK_SAVE, N_("Save"), "",N_("Save the score. The score is saved to disk in XML format."),G_CALLBACK (file_savewrapper)}, {"SaveAs", GTK_STOCK_SAVE_AS, N_("Save As"), "",N_("Save the score under a new name"),G_CALLBACK (file_saveaswrapper)}, {"SaveCopy", GTK_STOCK_SAVE_AS, N_("Create Copy"), "",N_("Save a copy of the score"),G_CALLBACK (file_copy_save)}, {"OpenTemplate", GTK_STOCK_OPEN, N_("Open Standard Template"), "",N_("Start a new score from a built-in template file"),G_CALLBACK (system_template_open_with_check)}, {"OpenExample", GTK_STOCK_OPEN, N_("Open Example"), "",N_("Start a new score from a built-in example"),G_CALLBACK (system_example_open_with_check)}, {"OpenMyTemplate", GTK_STOCK_OPEN, N_("Open Custom Template"), "",N_("Start a new score from one of your own template files"),G_CALLBACK (local_template_open_with_check)}, {"SaveTemplate", GTK_STOCK_SAVE_AS, N_("Save Template"), "",N_("Save the score as a template for re-use as a starting point for new scores"),G_CALLBACK (template_save)}, {"NewWindow", NULL, N_("New Tab"), "",N_("Create working area (tab with an empty score in it)"),G_CALLBACK (newview)}, {"InsertMovementBefore", NULL, N_("Insert Movement Before"), "",N_("Insert a new movement before the current one"),G_CALLBACK (insert_movement_before)}, {"InsertMovementAfter", NULL, N_("Insert Movement After"), "",N_("Insert a new movement after the current one"),G_CALLBACK (insert_movement_after)}, {"NewMovement", NULL, N_("New Movement"), "",N_("Create a new movement, using any default template"),G_CALLBACK (append_new_movement)}, {"SaveMenu", GTK_STOCK_SAVE, N_("Save"), "",N_("Menu:\nSave the score\nBesides saving for later you can save the score for use as a template for future works, or save under a new name etc\nThe score is saved to disk in XML format.")}, {"SaveParts", GTK_STOCK_SAVE_AS, N_("Save Parts"), "",N_("Save Parts: each staff becomes a file in lilypond format"),G_CALLBACK (file_savepartswrapper)}, {"ExportMUDELA", GTK_STOCK_SAVE_AS, N_("Export Lilypond"), "",N_("Export the score as a lilypond file"),G_CALLBACK (export_mudela_action)}, {"ExportPDF", GTK_STOCK_SAVE_AS, N_("Export PDF"), "",N_("Export the score as a PDF document file"),G_CALLBACK (export_pdf_action)}, {"ExportPNG", GTK_STOCK_SAVE_AS, N_("Export Score as PNG"), "",N_("Export the score as a PNG image file"),G_CALLBACK (export_png_action)}, {"ExportMIDI", GTK_STOCK_SAVE_AS, N_("Export MIDI"), "",N_("Export the score as a MIDI file"),G_CALLBACK (export_midi_action)}, {"PrintMenu", GTK_STOCK_PRINT, N_("Print"), "",N_("Menu:\nCommands for typesetting and then printing the music.\nA part, movement, full score or various reduced scores can be typeset.\n See also the Score Layout view for further options.")}, {"PrintView", GTK_STOCK_PRINT_PREVIEW, N_("Print Preview"), "",N_("Typesets the score\nIf you have a score layout selected it will use that\notherwise all movements staffs and lyrics are typeset by default.\nBe patient! It takes time to create a beautifully laid out score.\nOnce complete you can view and then send to your printer or to a file as a .pdf document."),G_CALLBACK (show_print_view)}, {"PrintSelection", GTK_STOCK_PRINT, N_("Print Selection"), "",N_("Displays selected music from score in your pdf viewer"),G_CALLBACK (printselection_cb)}, {"PrintExcerptPreview", GTK_STOCK_PRINT_PREVIEW, N_("Export Selection as PNG"), "",N_("Displays a musical excerpt in your image viewer"),G_CALLBACK (printexcerptpreview_cb)}, {"PrintMovement", GTK_STOCK_PRINT, N_("Print Movement"), "",N_("Typesets the current movement and opens a print dialog"),G_CALLBACK (printmovement_cb)}, {"Print", GTK_STOCK_PRINT, N_("Print"), "",N_("Typesets the score using LilyPond and opens a print dialog"),G_CALLBACK (printall_cb)}, {"PrintPart", GTK_STOCK_PRINT, N_("Print Part"), "",N_("Typesets the current part (the one containing the cursor)."),G_CALLBACK (printpart_cb)}, {"Close", GTK_STOCK_CLOSE, N_("Close Score"), "",N_("Close the current score. Other scores (tabs) will stay open"),G_CALLBACK (close_gui_with_check)}, {"Quit", GTK_STOCK_QUIT, N_("Quit"), "",N_("Quit the Denemo program - closes tabs one at a time."),G_CALLBACK (closewrapper)}, {"Undo", GTK_STOCK_UNDO, N_("Undo"), "",N_("Undoes one (more) step of your edits to the current score."),G_CALLBACK (undowrapper)}, {"Redo", GTK_STOCK_REDO, N_("Redo"), "",N_("Redoes the next of the steps you have Undone"),G_CALLBACK (redowrapper)}, {"Select", NULL, N_("Select"), "",N_("Selecting stretches of notes")}, {"ExtendSelect", NULL, N_("Extend Selection"), "",N_("Extend the selection")}, {"Copy", GTK_STOCK_COPY, N_("Copy"), "",N_("Copy the music selected to the Denemo clipboard"),G_CALLBACK (copywrapper)}, {"Cut", GTK_STOCK_CUT, N_("Cut"), "",N_("Cut the music selected to the Denemo clipboard"),G_CALLBACK (cutwrapper)}, {"Paste", GTK_STOCK_PASTE, N_("Paste"), "",N_("Paste the Denemo clipboard into the score where the cursor is positioned"),G_CALLBACK (pastewrapper)}, {"PasteClipboard", GTK_STOCK_PASTE, N_("Paste LilyPond notes"), "",N_("Paste LilyPond notes from the text clipboard\nThis will import music written as LilyPond syntax\nYou open the LilyPond file in a texteditor, copy the stretch of notes (control-c command in your texteditor usually) and then use this command."),G_CALLBACK (paste_clipboard)}, {"PasteComment", GTK_STOCK_PASTE, N_("Paste a Comment"), "",N_("Paste the text clipboard as a comment inserted at the cursor."),G_CALLBACK (paste_comment)}, {"ScoreProperties", GTK_STOCK_PROPERTIES, N_("Score Properties"), "",N_("Change built-in properties of the current score. This will start up a dialog window"),G_CALLBACK (score_properties_dialog)}, {"SaveSelection", NULL, N_("Save Selection"), "",N_("Save the selected music. Not sure if this is working"),G_CALLBACK (saveselwrapper)}, {"Preferences", GTK_STOCK_PREFERENCES, N_("Change Preferences"), "",N_("Set and save your preferences for how Denemo operates on startup.\nAdvanced users can edit .denemo-XXXX/denemorc for missing ones"),G_CALLBACK (preferences_change)}, {"KeyBindings", NULL, N_("Customize Commands, Shortcuts ..."), "",N_("Set actions to take in response to keypresses")}, {"SaveAccels", GTK_STOCK_SAVE, N_("Save Command Set"), "",N_("Save the current commands and keyboard shortcuts as the default"),G_CALLBACK (save_default_keymap_file_wrapper)}, {"CommandManagement", NULL, N_("Manage Command Set"), "",N_("View help, change and save keyboard shortcuts"),G_CALLBACK (configure_keyboard_dialog)}, {"SwapStaffs", NULL, N_("Swap Staffs"), "",N_("Swap this staff with the one higher up.\nBe aware that if you have inserted directives to move a voice to another staff\nthese may need re-making."),G_CALLBACK (swapstaffs)}, {"SplitVoices", NULL, N_("Split Voices"), "",N_("Split off the next voice as a separate staff"),G_CALLBACK (splitstaffs)}, {"JoinVoices", NULL, N_("Join Voices"), "",N_("Merge this staff as a voice on the previous staff"),G_CALLBACK (joinstaffs)}, {"SwapMovements", NULL, N_("Swap Movements"), "",N_("Swap this movement with the one before"),G_CALLBACK (swapmovements)}, {"VoiceUp", NULL, N_("Selection Voice Up"), "",N_("Go to the higher numbered voice on staff, extending selection if any"),G_CALLBACK (voiceup)}, {"VoiceDown", NULL, N_("Selection Voice Down"), "",N_("Go to the lower numbered voice on this staff, extending selection if any"),G_CALLBACK (voicedown)}, {"MoveToVoiceUp", NULL, N_("Move to Voice Up"), "",N_("Go to the higher numbered voice on staff without altering selection"),G_CALLBACK (movetovoiceup)}, {"MoveToVoiceDown", NULL, N_("Move to Voice Down"), "",N_("Go to the lower numbered voice on this staff without altering selection"),G_CALLBACK (movetovoicedown)}, {"AddBefore", NULL, N_("Add Staff Before"), "",N_("Inserts a new staff before the current staff"),G_CALLBACK (staff_new_before)}, {"AddAfter", NULL, N_("Add Staff After"), "",N_("Inserts/Adds a new staff after the current staff"),G_CALLBACK (staff_new_after)}, {"AddInitial", NULL, N_("Add Initial Staff"), "",N_("Inserts a new staff at the top of the score"),G_CALLBACK (staff_new_initial)}, {"AddLast", NULL, N_("Add Last Staff"), "",N_("Inserts a new staff at the end of the score"),G_CALLBACK (staff_new_last)}, {"DeleteBefore", NULL, N_("Delete Staff Before"), "",N_("Deletes the staff before the current staff"),G_CALLBACK (delete_staff_before)}, {"DeleteStaff", NULL, N_("Delete Current Staff"), "",N_("Deletes the current staff"),G_CALLBACK (delete_staff_current)}, {"DeleteAfter", NULL, N_("Delete Staff After"), "",N_("Deletes the staff after the current staff"),G_CALLBACK (delete_staff_after)}, {"AddVoice", NULL, N_("Add Voice"), "",N_("Adds a new voice (part), to the current staff. It is tricky to switch between the voices. Suggest to use merge staffs"),G_CALLBACK (staff_new_voice)}, {"StaffProperties", GTK_STOCK_PROPERTIES, N_("Built-in Staff Properties"), "",N_("Change the built-in properties of the current staff"),G_CALLBACK (staff_properties_change_cb)}, {"InsertMenu", NULL, N_("InsertMenu"), "",N_("Insert")}, {"Clef", NULL, N_("Clef"), "",N_("Menu:\nClef")}, {"InitialClef", NULL, N_("Initial Clef"), "",N_("Change the initial clef of the current staff"),G_CALLBACK (clef_change_initial)}, {"InsertClef", NULL, N_("Clef Change"), "",N_("Insert/Edit a change of clef at the cursor"),G_CALLBACK (clef_change_insert)}, {"Key", NULL, N_("Keys"), "",N_("Menu:\nSet the key signature or insert a change of key signature\nSharpen or flatten a key signature or\nhide it on printing")}, {"InitialKey", NULL, N_("Initial Key"), "",N_("Set the initial key signature of the current staff"),G_CALLBACK (key_change_initial)}, {"InsertKey", NULL, N_("Key Signature Change"), "",N_("Insert/Edit a key change at the cursor position"),G_CALLBACK (key_change_insert)}, {"TimeSig", NULL, N_("Time Signatures"), "",N_("Menu:\nSet the time signature, insert or edit a change of timesignature,\nhide a time signature on printing.\nControl whether to use numerical or traditional styles.")}, {"InitialTimeSig", NULL, N_("Inital Time Signature"), "",N_("Set the initial time signature of the current staff"),G_CALLBACK (timesig_change_initial)}, {"InsertTimeSig", NULL, N_("Time Signature Change"), "",N_("Edit/Insert a time signature change for the current measure"),G_CALLBACK (timesig_change_insert)}, {"ChangeNotehead", NULL, N_("Set Notehead"), "",N_("Change the type of notehead for the current note"),G_CALLBACK (set_notehead)}, {"InsertStem", NULL, N_("Auto Stemming"), "",N_("Inserts a stem neutral object. After this automatic stem directions are active. You can click on this tag and use Sharpen/StemUp etc commands to change stem direction"),G_CALLBACK (stem_directive_insert)}, {"AddVerse", NULL, N_("Add Lyric Verse"), "",N_("Add a verse of lyrics"),G_CALLBACK (add_verse)}, {"DeleteVerse", NULL, N_("Delete Verse"), "",N_("Deletes current verse of lyrics from current voice"),G_CALLBACK (delete_verse)}, {"EditFiguredBass", NULL, N_("Insert/Edit Figured Bass"), "",N_("Add a bass figure to the current note. Use | sign to split the duration of a note so as to have multiple figures on one note. See Lilypond docs for other notation"),G_CALLBACK (figure_insert)}, {"DeleteFiguredBass", NULL, N_("Delete Figures"), "",N_("Delete the figured bass on the current staff"),G_CALLBACK (delete_figured_bass)}, {"DeleteChordSymbols", NULL, N_("Delete Chord Symbols"), "",N_("Delete the chord symbols on the current staff"),G_CALLBACK (delete_fakechords)}, {"HideFiguredBass", NULL, N_("Hide Figures (Print)"), "",N_("Hide the figured bass on the current staff on printing"),G_CALLBACK (hide_figured_bass)}, {"ShowFiguredBass", NULL, N_("Show Figures (Print)"), "",N_("Show the figured bass on the current staff on printing"),G_CALLBACK (show_figured_bass)}, {"EditChords", NULL, N_("Edit Chord Symbols"), "",N_("Allows chord symbols to be added to the current note. E.G.cis:dim7 for c-sharp diminished 7th. See Lilypond docs for notation"),G_CALLBACK (fakechord_insert)}, {"EditObject", NULL, N_("Edit at Cursor"), "",N_("Edit in the context of the object at the cursor."),G_CALLBACK (edit_object_type)}, {"EditCursorObject", NULL, N_("Run Object Editor"), "",N_("Opens a dialog to edit the object at the cursor."),G_CALLBACK (edit_object)}, {"EditScoreProperties", NULL, N_("Score Properties Editor"), "",N_("Opens a dialog to edit the score properties."),G_CALLBACK (edit_score_properties)}, {"EditMovementProperties", NULL, N_("Movement Properties Editor"), "",N_("Opens a dialog to edit the movement properties."),G_CALLBACK (edit_movement_properties)}, {"EditStaffProperties", NULL, N_("Staff Properties Editor"), "",N_("Opens a dialog to edit the current staff properties."),G_CALLBACK (edit_staff_properties)}, {"EditVoiceProperties", NULL, N_("Voice Properties Editor"), "",N_("Opens a dialog to edit the voice properties of the current staff."),G_CALLBACK (edit_voice_properties)}, {"EditDirective", NULL, N_("Edit Directives"), "",N_("Edit any directives attached to chord/note at cursor."),G_CALLBACK (edit_object_directive)}, {"EditStaffDirective", NULL, N_("Edit Staff Directives"), "",N_("Edit any directives attached to staff."),G_CALLBACK (edit_staff_directive)}, {"EditVoiceDirective", NULL, N_("Edit Voice Directives"), "",N_("Edit any directives attached to voice."),G_CALLBACK (edit_voice_directive)}, {"EditScoreDirective", NULL, N_("Edit Score Directives"), "",N_("Edit any directives attached to score."),G_CALLBACK (edit_score_directive)}, {"EditMovementDirective", NULL, N_("Edit Movement Directives"), "",N_("Edit any directives attached to movement."),G_CALLBACK (edit_movement_directive)}, {"EditClefDirective", NULL, N_("Edit Clef Directives"), "",N_("Edit any directives attached to clef."),G_CALLBACK (edit_clef_directive)}, {"EditTimesigDirective", NULL, N_("Edit Time Signature Directives"), "",N_("Edit any directives attached to time signature."),G_CALLBACK (edit_timesig_directive)}, {"EditKeysigDirective", NULL, N_("Edit Key Signature Directives"), "",N_("Edit any directives attached to key signature."),G_CALLBACK (edit_keysig_directive)}, {"DeleteDirective", NULL, N_("Delete a Directive"), "",N_("Delete a directive attached to chord/note at cursor."),G_CALLBACK (delete_chord_or_note_directive)}, {"NavigationMenu", NULL, N_("Navigation"), "",N_("Moving the cursor within the current movement, setting bookmarks, seeking things in the score")}, {"GoToMeasure", NULL, N_("Go to Measure"), "",N_("Opens a dialog for going to a numbered measure"),G_CALLBACK (tomeasurenum)}, {"GoToBeginning", GTK_STOCK_GOTO_FIRST, N_("Go to Beginning"), "",N_("Cursor to start of staff/voice, extending selection if any"),G_CALLBACK (tohome)}, {"GoToEnd", GTK_STOCK_GOTO_LAST, N_("Go to End"), "",N_("Cursor to end of staff/voice, extending selection if any"),G_CALLBACK (toend)}, {"MoveToBeginning", GTK_STOCK_GOTO_FIRST, N_("Move to Staff/Voice Beginning"), "",N_("Cursor to start of staff/voice, without extending selection if any"),G_CALLBACK (movetostart)}, {"MoveToEnd", GTK_STOCK_GOTO_LAST, N_("Move to Staff/Voice End"), "",N_("Cursor to end of staff/voice, without extending selection if any"),G_CALLBACK (movetoend)}, {"NextMovement", NULL, N_("Next Movement"), "",N_("Go to the next movement"),G_CALLBACK (next_movement)}, {"PreviousMovement", NULL, N_("Previous Movement"), "",N_("Go to the previous movement"),G_CALLBACK (prev_movement)}, {"DeleteMovement", NULL, N_("Delete Movement"), "",N_("Delete the current movement"),G_CALLBACK (delete_movement)}, {"Play", GTK_STOCK_MEDIA_PLAY, N_("Play"), "",N_("Playback from start marker to end marker (Set these markers in the playback controls)"),G_CALLBACK (ext_midi_playback)}, {"Stop", GTK_STOCK_MEDIA_STOP, N_("Stop"), "",N_("Stop Playback"),G_CALLBACK (stop_midi_playback)}, {"PlaybackProperties", GTK_STOCK_PROPERTIES, N_("Playback Properties"), "",N_("Allows you to specify properties used in playing back (midi)"),G_CALLBACK (playback_properties_change)}, {"Help", NULL, N_("Browse Manual"), "",N_("Opens a browser on the user manual"),G_CALLBACK (browse_manual)}, {"About", NULL, N_("About"), "",N_("Gives the version number etc of this program"),G_CALLBACK (about)}, {"Shortcuts", NULL, N_("Shortcuts"), "",N_("Gives a list of shortcuts currently available. Explains how to set them too."),G_CALLBACK (display_shortcuts)}, {"MoreMenu", NULL, N_("More"), "",N_("Allows choosing extra commands/menu items from disk")}, {"MoreCommands", NULL, N_("More Commands"), "",N_("Allows choosing standard extra commands/menu items"),G_CALLBACK (morecommands)}, {"MyCommands", NULL, N_("My Commands"), "",N_("Allows choosing extra commands/menu items from your own collection of extras"),G_CALLBACK (mycommands)}, {"FetchCommands", NULL, N_("Update Commands from Internet"), "",N_("Refreshes the set of commands available from Denemo.org.\nUse More Commands after this has finished"),G_CALLBACK (fetchcommands)}, {"OpenRecent", GTK_STOCK_OPEN, N_("Open Recent"), "",N_("Open previously used files")}, {"Import", GTK_STOCK_OPEN, N_("Import File"), "",N_("Menu:\nImport the supported file formats")}, {"Export", NULL, N_("Export As"), "",N_("Menu:\nExport the music to another file format.\nThese file formats will not support all the features of the score.")}, {"ClearOverlay", NULL, N_("Clear Overlay"), "",N_("Clear the list of pitches that overlay the notes"),G_CALLBACK (clear_overlay)}, {"CreateRhythm", NULL, N_("Create Snippet"), "",N_("Copy selection as music snippet or rhythm pattern for notes to follow as they are entered"),G_CALLBACK (create_rhythm_cb)}, {"DeleteRhythm", NULL, N_("Delete Snippet"), "",N_("Delete the selected music snippet/rhythm pattern"),G_CALLBACK (delete_rhythm_cb)}, {"ClassicModeNote", NULL, N_("Classic Mode"), "",N_("Menu:\nMoving the cursor and inserting notes or rests there")}, {"SelectNote", NULL, N_("Select Note"), "",N_("Menu:\nMoving the cursor to the nearest ...")}, {"InsertModeNote", NULL, N_("Insert"), "",N_("Menu:\nCommands for notes: inserting, deleting, etc.")}, {"StemControl", NULL, N_("Stem Direction"), "",N_("Menu:\nCommands to control the stem up/down")}, {"NoteheadControl", NULL, N_("Notehead Types"), "",N_("Menu:\nDifferent types of notehead")}, {"TiedNotes", NULL, N_("Tied Notes"), "",N_("Menu:\nCreating Tied Notes\nDo not confuse with slurs!!")}, {"DisplayEffects", NULL, N_("Display Effects"), "",N_("Menu:\nEffects that are only for the Denemo display,\nnot affecting the printed page.")}, {"Articulations", NULL, N_("Articulations"), "",N_("Menu:\nArticulations")}, {"Slurs", NULL, N_("Slurs"), "",N_("Menu:\nSlurs\nDo not confuse with ties which in print can look the same\nSlurs have little ticks at the end in the Denemo display.")}, {"GraceNotes", NULL, N_("Grace Notes"), "",N_("Menu:\nGrace Notes")}, {"Score", NULL, N_("Score"), "",N_("Menu:\nCommands that affect the entire piece of music across all movements.")}, {"Instruments", NULL, N_("Instruments"), "",N_("Menu:\nInstruments")}, {"Markings", NULL, N_("Markings"), "",N_("Menu:\nMarkings to be applied to the note at the cursor.\nIncludes articulations, string numbers, chord symbols, arbitrary text ...")}, {"TextMarks", NULL, N_("Text/Symbol"), "",N_("Menu:\nText and symbol Markings")}, {"Strings", NULL, N_("Fingerings etc for Instruments"), "",N_("Menu:\nMarkings on scores for Instruments")}, {"InsertNote", NULL, N_("Note Insertion"), "",N_("Menu:\nInserting the note ...")}, {"Lyrics", NULL, N_("Lyrics"), "",N_("Menu:\nLyrics consist of syllables which are placed under or above the notes of the voice they are attached to\nYou can use the hyphen - and underscore _ to affect the placement\nas well as slurs placed over notes. Spaces, tabs or new lines can serve to separate the syllables, it makes no difference which.")}, {"Directives", NULL, N_("Directives"), "",N_("Menu:\nDirectives tell Denemo to do something special with the object they are attached to\nor at the point in the music they are placed\nThis can be directing the typesetter to do something special\nor issuing MIDI instructions to alter the playback\nor even take an action, such as linking to source manuscript when clicked")}, {"Navigation", NULL, N_("Navigation"), "",N_("Menu:\nMoving the Denemo cursor around the piece")}, {"NoteEntry", NULL, N_("Insert Note"), "",N_("Menu:\nEntering notes")}, {"Articulation", NULL, N_("Articulation"), "",N_("Menu:\nMarks placed on notes and chords")}, {"Edit", NULL, N_("Edit"), "",N_("Menu:\nEditing")}, {"Measure", NULL, N_("Measure"), "",N_("Menu:\nManipulating measures\nCommands that apply to the current measure")}, {"Staff", NULL, N_("Staff"), "",N_("Menu:\nCommands for staffs")}, {"Playback", NULL, N_("Playback"), "",N_("Menu:\nPlaying the music via the computer's soundcard.\nAll or part of the piece can be played controlled by the green and red markers (start and stop playing)\nUse the Playback Controls (from the View menu) to set/reset these and to loop play while editing the score")}, {"SelectDuration", NULL, N_("Select Duration"), "",N_("Menu:\nChanging the prevailing duration or rhythm pattern")}, {"EditModeNote", NULL, N_("Append/Edit"), "",N_("Menu:\nAppending, Changing, and deleting notes")}, {"EditNote", NULL, N_("Append/Edit Note"), "",N_("Menu:\nAppending or Editing notes")}, {"EditDuration", NULL, N_("Append/Insert Duration"), "",N_("Menu:\nAppending or Editing durations")}, {"Cursor", NULL, N_("Cursor"), "",N_("Menu:\nMoving the cursor")}, {"CursorToNote", NULL, N_("Cursor to Note"), "",N_("Menu:\nMoving the cursor to note positions")}, {"ClefMenu", NULL, N_("Clefs"), "",N_("Menu:\nInsert/change clef, set initial clef, hide a clef on printing,\nor display in a different clef")}, {"ChordMenu", NULL, N_("Chords"), "",N_("Menu:\nCommands for creating chords. Note that chord symbols and figured bass are under markings on notes.\nSee Notes/Rests menu")}, {"ChordNoteMenu", NULL, N_("Add Note"), "",N_("Menu:\nAdding notes to a note or chord at the cursor to make chords")}, {"ChordSymbols", NULL, N_("Chords Symbols"), "",N_("Menu:\nAdding Chord Symbols over music")}, {"FiguredBass", NULL, N_("Figured Bass"), "",N_("Menu:\nAdding Figured Bass Figures")}, {"MeasureMenu", NULL, N_("Measures"), "",N_("Menu:\nMeasures: adding, deleting, navigating etc")}, {"Insert", NULL, N_("Insert"), "",N_("Menu:\nInserting notes, measures, staffs, keysignatures etc")}, {"InsertStaff", NULL, N_("Add Staff"), "",N_("Menu:\nInsert a new staff postioned relative to current staff")}, {"InsertMovement", NULL, N_("Insert Movement"), "",N_("Menu:\nInsert a new movement positioned relative to current movement")}, {"InsertDuration", NULL, N_("Insert at Cursor"), "",N_("Menu:\nInserting notes of a given duration at cursor note height")}, {"Change", NULL, N_("Change"), "",N_("Menu:\nChanging properties of notes, measures, staffs, keysigs etc")}, {"ModelessNote", NULL, N_("Notes/Durations"), "",N_("Menu:\nModeless actions on notes/rests")}, {"NotesRests", NULL, N_("Notes/Rests"), "",N_("Menu:\nCommands for notes/rests")}, {"RestEntry", NULL, N_("Rest Insertion"), "",N_("Menu:\nModeless entry of rests")}, {"Educational", NULL, N_("Educational"), "",N_("Menu:\nEducational Games")}, {"EditDirectivesMenu", NULL, N_("Edit Directive(s)"), "",N_("Menu:\nEditing directives")}, {"ChangeNote", NULL, N_("Change Note"), "",N_("Menu:\nChanging the note at the cursor to the nearest ...")}, {"ChangeDuration", NULL, N_("Edit Duration"), "",N_("Menu:\nChanges the duration of the current note")}, {"ChangeRest", NULL, N_("Change Rest"), "",N_("Menu:\nChanges the duration of the current rest")}, {"ExpressionMarks", NULL, N_("Expression Marks"), "",N_("Menu:\nDynamics, staccato, slurs, ties and other expressive marks")}, {"Dynamics", NULL, N_("Dynamics"), "",N_("Dynamic markings")}, {"Ornaments", NULL, N_("Ornaments"), "",N_("Menu:\ngrace notes etc")}, {"Other", NULL, N_("Other"), "",N_("Lyrics, chord symbols, figured basses etc")}, {"Others", NULL, N_("Others"), "",N_("Less used actions")}, {"Favorites", NULL, N_("Favorites"), "",N_("Customized LilyPond inserts. Store often-used inserts here labelled with what they do")}, {"AddFavorite", NULL, N_("Add Favorite"), "",N_("Menu:\nAdd a custom LilyPond insert to favorites menu")}, {"Tuplets", NULL, N_("Tuplets"), "",N_("Menu:\nEntering triplets and other tuplets")}, {"Delete", NULL, N_("Delete"), "",N_("Menu:\nDeleting notes, measures, staffs, key signatures as well as meta-objects such as imported MIDI or audio recordings.")}, {"Beaming", NULL, N_("Beaming"), "",N_("Menu:\nBeaming - controlling which notes are beamed together")}, {"Conditional Directives", NULL, N_("Conditional Directives"), "",N_("Menu:\nFor making directives apply only to one score layout or be omitted from one score layout")}, {"MIDI", NULL, N_("MIDI"), "",N_("Menu:\nFor issuing MIDI instructions during playback at the time indicated by the current cursor position.")}, {"Keyboard", NULL, N_("PC Keyboard"), "",N_("Menu:\nChoose between different ways of entering notes from the computer keyboard.")}, {"Mouse", NULL, N_("Mouse"), "",N_("Menu:\nChoose between different ways of using the mouse.")}, {"PrintTranspositions", NULL, N_("Print Transposed"), "",N_("Menu:\nTransposing the score when typesetting.")}, {"Print Transpositions", NULL, N_("Start/Stop Transposing"), "",N_("Menu:\nInserting markers to start/stop transposition when typesetting. The markers affect only the music in the staff/voice they are placed in.")}, {"Barlines", NULL, N_("Inserting Barlines"), "",N_("Menu:\nDifferent sorts of barline (repeat barlines, double bars, end of movement ...).")}, {"Seek", NULL, N_("Seek"), "",N_("Menu:\nMoving the Denemo cursor forwards/backwards to find useful places in the score.")}, {"Titles", NULL, N_("Titles"), "",N_("Menu:\nVarious titling schemes, (main title, movement titles, composer etc) and adding table of contents, critical commentary.")}, {"PrintLayout", NULL, N_("Print Layout"), "",N_("Menu:\nCommands to affect the layout of the typeset score.")}, {"VerticalSpacing", NULL, N_("Vertical Spacing"), "",N_("Menu:\nCommands to affect the vertical spacing of the typeset score.")}, {"CaptureScore", NULL, N_("Capture Score"), "",N_("Menu:\nCommands to embed images taken from original manuscripts etc into the score (one for each measure).")}, {"Ossia", NULL, N_("Ossia"), "",N_("Menu:\nCreating an Ossia staff, which appears with alternative interpretations for a bar or two on typesetting.")}, {"Numbering", NULL, N_("Bar and Page Numbering"), "",N_("Menu:\nCommands for setting how often bar numbers appear in the typeset version of this staff.")}, {"StaffGroupings", NULL, N_("Staff Groupings (Braces)"), "",N_("Menu:\nVarious sorts of brace linking the staffs together. These may be nested, see the Score Layout view for a display of the staff groups created.")}, {"AddAboveBase", NULL, N_("Add Note Above Base of Chord"), "",N_("Menu:\nAdding notes to the chord at the cursor at various intervals above base note.")}, {"AddBelowTop", NULL, N_("Add Note Below Top of Chord"), "",N_("Menu:\nAdding notes to the chord at the cursor at various intervals below the top-most note.")}, {"ChangePrintDuration", NULL, N_("Change Duration of Note"), "",N_("Menu:\nCommands to include other durations in a chord (instead of polyphony - this is specialized stuff!) The note at the cursor height is altered.")}, {"Fingerings", NULL, N_("Fingerings"), "",N_("Menu:\nFingerings (numbers) to typeset near to notes.")}, {"Transpose", NULL, N_("Transpose Music"), "",N_("Menu:\nAlters the note/chord at the cursor or the selection transposing it by the interval chosen. This alters the music in the score - see other transpose options for transposing the printed output, leaving the music untouched.")}, {"Conditional-Directives", NULL, N_("Make a Directive Conditional"), "",N_("Menu:\nMark the directive at the cursor as applying to just the current score layout, or to exclude the current layout. Use this for example to exclude redundant first and second time markings in parts which don't need them.")}, {"SingleRandomNote", NULL, N_("Single Random Note"), "",N_("Menu:\nTo insert random notes at cursor.")}, {"GenerateRhythmFromString", NULL, N_("Generate Rhythm from String"), "",N_("Menu:\nCreating rhythms from a sequence of characters.")}, {"NotationMagick", NULL, N_("Notation Magick"), "",N_("Menu:\nMethods of generating music of guided randomness.")}, {"Zoom", NULL, N_("Display Zoom"), "",N_("Menu:\nZooming the Denemo display. Usually Control and mouse wheel are used for this.")}, {"Aural Training", NULL, N_("Aural Training"), "",N_("Menu:\nGames for testing your musical ear.")}, {"Note-Reading", NULL, N_("Note Reading"), "",N_("Menu:\nGames for testing your music reading ability. Notice there is (elsewhere) the Checking Pitches feature which lets you test your ability to play via Midi Controller.")}, {"Simple Titles", NULL, N_("Simple Titling"), "",N_("Menu:\nCommands to place titles etc at the start of the music (and each movement if needed). Do not mix with Book Titles.")}, {"Book Titles", NULL, N_("Book Titling"), "",N_("Menu:\nCommands to create a title page, table of contents, commentaries, appendices etc.")}, {"Palettes", NULL, N_("Palettes"), "",N_("Menu:\nCommands to manipulate the palettes of commands.")}, {"Spanning", NULL, N_("Spanning"), "",N_("Menu:\nCommands to tell the typesetter to start or stop a particular effect. Use these around passages that are to be treated differently, or over which a marking should be placed.")}, {"AlternativeBars", NULL, N_("Alternative Bars"), "",N_("Menu:\nCommands for creating first/second/nth time bars.")}, {"Typesetter", NULL, N_("Typesetter"), "",N_("Menu:\nInstructions for the typesetter to do something at the cursor position.")}, {"Part-Combining", NULL, N_("Part-Combining"), "",N_("Menu:\nInstructions for the typesetter to combine two voices in various ways.")}, {"ObjectMenu", NULL, N_("Object Menu"), "",N_("Menu:\nCommands for working with the musical object hierarchy.")}, {"MainMenu", NULL, N_("Main Menu"), "",N_("Menu:\nThe top level commands for operating Denemo.")}, {"0", "NULL", NOTE0, NULL, "Inserts a note at the cursor with duration "NOTE0", or \n(if appending) appends this duration\nIf MIDI-in is active the note will be pitchless (displays yellow, percussion-sounding)\n - the MIDI keyboard will provide the pitch. Changes prevailing duration.", G_CALLBACK (Dur0)}, {"Change0", "NULL", NOTE0, NULL, "Change current note to a "NOTE0, G_CALLBACK (ChangeDur0)}, {"Insert0", NULL, "Insert a "NOTE0"", NULL, "Inserts a "NOTE0" at cursor position\nSets prevailing duration to "NOTE0, G_CALLBACK (InsertDur0)}, {"InsertRest0", NULL, "Insert a "REST0"rest", NULL, "Inserts a rest at cursor position\nSets prevailing duration to "NOTE0, G_CALLBACK (InsertRest0)}, {"Set0", NULL, "Set Duration to "NOTE0"", NULL, "Sets prevailing duration to "NOTE0" (subsequent notes entered will have this duration)", G_CALLBACK (SetDur0)}, {"1", "NULL", NOTE1, NULL, "Inserts a note at the cursor with duration "NOTE1", or \n(if appending) appends this duration\nIf MIDI-in is active the note will be pitchless (displays yellow, percussion-sounding)\n - the MIDI keyboard will provide the pitch. Changes prevailing duration.", G_CALLBACK (Dur1)}, {"Change1", "NULL", NOTE1, NULL, "Change current note to a "NOTE1, G_CALLBACK (ChangeDur1)}, {"Insert1", NULL, "Insert a "NOTE1"", NULL, "Inserts a "NOTE1" at cursor position\nSets prevailing duration to "NOTE1, G_CALLBACK (InsertDur1)}, {"InsertRest1", NULL, "Insert a "REST1"rest", NULL, "Inserts a rest at cursor position\nSets prevailing duration to "NOTE1, G_CALLBACK (InsertRest1)}, {"Set1", NULL, "Set Duration to "NOTE1"", NULL, "Sets prevailing duration to "NOTE1" (subsequent notes entered will have this duration)", G_CALLBACK (SetDur1)}, {"2", "NULL", NOTE2, NULL, "Inserts a note at the cursor with duration "NOTE2", or \n(if appending) appends this duration\nIf MIDI-in is active the note will be pitchless (displays yellow, percussion-sounding)\n - the MIDI keyboard will provide the pitch. Changes prevailing duration.", G_CALLBACK (Dur2)}, {"Change2", "NULL", NOTE2, NULL, "Change current note to a "NOTE2, G_CALLBACK (ChangeDur2)}, {"Insert2", NULL, "Insert a "NOTE2"", NULL, "Inserts a "NOTE2" at cursor position\nSets prevailing duration to "NOTE2, G_CALLBACK (InsertDur2)}, {"InsertRest2", NULL, "Insert a "REST2"rest", NULL, "Inserts a rest at cursor position\nSets prevailing duration to "NOTE2, G_CALLBACK (InsertRest2)}, {"Set2", NULL, "Set Duration to "NOTE2"", NULL, "Sets prevailing duration to "NOTE2" (subsequent notes entered will have this duration)", G_CALLBACK (SetDur2)}, {"3", "NULL", NOTE3, NULL, "Inserts a note at the cursor with duration "NOTE3", or \n(if appending) appends this duration\nIf MIDI-in is active the note will be pitchless (displays yellow, percussion-sounding)\n - the MIDI keyboard will provide the pitch. Changes prevailing duration.", G_CALLBACK (Dur3)}, {"Change3", "NULL", NOTE3, NULL, "Change current note to a "NOTE3, G_CALLBACK (ChangeDur3)}, {"Insert3", NULL, "Insert a "NOTE3"", NULL, "Inserts a "NOTE3" at cursor position\nSets prevailing duration to "NOTE3, G_CALLBACK (InsertDur3)}, {"InsertRest3", NULL, "Insert a "REST3"rest", NULL, "Inserts a rest at cursor position\nSets prevailing duration to "NOTE3, G_CALLBACK (InsertRest3)}, {"Set3", NULL, "Set Duration to "NOTE3"", NULL, "Sets prevailing duration to "NOTE3" (subsequent notes entered will have this duration)", G_CALLBACK (SetDur3)}, {"4", "NULL", NOTE4, NULL, "Inserts a note at the cursor with duration "NOTE4", or \n(if appending) appends this duration\nIf MIDI-in is active the note will be pitchless (displays yellow, percussion-sounding)\n - the MIDI keyboard will provide the pitch. Changes prevailing duration.", G_CALLBACK (Dur4)}, {"Change4", "NULL", NOTE4, NULL, "Change current note to a "NOTE4, G_CALLBACK (ChangeDur4)}, {"Insert4", NULL, "Insert a "NOTE4"", NULL, "Inserts a "NOTE4" at cursor position\nSets prevailing duration to "NOTE4, G_CALLBACK (InsertDur4)}, {"InsertRest4", NULL, "Insert a "REST4"rest", NULL, "Inserts a rest at cursor position\nSets prevailing duration to "NOTE4, G_CALLBACK (InsertRest4)}, {"Set4", NULL, "Set Duration to "NOTE4"", NULL, "Sets prevailing duration to "NOTE4" (subsequent notes entered will have this duration)", G_CALLBACK (SetDur4)}, {"5", "NULL", NOTE5, NULL, "Inserts a note at the cursor with duration "NOTE5", or \n(if appending) appends this duration\nIf MIDI-in is active the note will be pitchless (displays yellow, percussion-sounding)\n - the MIDI keyboard will provide the pitch. Changes prevailing duration.", G_CALLBACK (Dur5)}, {"Change5", "NULL", NOTE5, NULL, "Change current note to a "NOTE5, G_CALLBACK (ChangeDur5)}, {"Insert5", NULL, "Insert a "NOTE5"", NULL, "Inserts a "NOTE5" at cursor position\nSets prevailing duration to "NOTE5, G_CALLBACK (InsertDur5)}, {"InsertRest5", NULL, "Insert a "REST5"rest", NULL, "Inserts a rest at cursor position\nSets prevailing duration to "NOTE5, G_CALLBACK (InsertRest5)}, {"Set5", NULL, "Set Duration to "NOTE5"", NULL, "Sets prevailing duration to "NOTE5" (subsequent notes entered will have this duration)", G_CALLBACK (SetDur5)}, {"6", "NULL", NOTE6, NULL, "Inserts a note at the cursor with duration "NOTE6", or \n(if appending) appends this duration\nIf MIDI-in is active the note will be pitchless (displays yellow, percussion-sounding)\n - the MIDI keyboard will provide the pitch. Changes prevailing duration.", G_CALLBACK (Dur6)}, {"Change6", "NULL", NOTE6, NULL, "Change current note to a "NOTE6, G_CALLBACK (ChangeDur6)}, {"Insert6", NULL, "Insert a "NOTE6"", NULL, "Inserts a "NOTE6" at cursor position\nSets prevailing duration to "NOTE6, G_CALLBACK (InsertDur6)}, {"InsertRest6", NULL, "Insert a "REST6"rest", NULL, "Inserts a rest at cursor position\nSets prevailing duration to "NOTE6, G_CALLBACK (InsertRest6)}, {"Set6", NULL, "Set Duration to "NOTE6"", NULL, "Sets prevailing duration to "NOTE6" (subsequent notes entered will have this duration)", G_CALLBACK (SetDur6)}, {"7", "NULL", NOTE7, NULL, "Inserts a note at the cursor with duration "NOTE7", or \n(if appending) appends this duration\nIf MIDI-in is active the note will be pitchless (displays yellow, percussion-sounding)\n - the MIDI keyboard will provide the pitch. Changes prevailing duration.", G_CALLBACK (Dur7)}, {"Change7", "NULL", NOTE7, NULL, "Change current note to a "NOTE7, G_CALLBACK (ChangeDur7)}, {"Insert7", NULL, "Insert a "NOTE7"", NULL, "Inserts a "NOTE7" at cursor position\nSets prevailing duration to "NOTE7, G_CALLBACK (InsertDur7)}, {"InsertRest7", NULL, "Insert a "REST7"rest", NULL, "Inserts a rest at cursor position\nSets prevailing duration to "NOTE7, G_CALLBACK (InsertRest7)}, {"Set7", NULL, "Set Duration to "NOTE7"", NULL, "Sets prevailing duration to "NOTE7" (subsequent notes entered will have this duration)", G_CALLBACK (SetDur7)}, {"8", "NULL", NOTE8, NULL, "Inserts a note at the cursor with duration "NOTE8", or \n(if appending) appends this duration\nIf MIDI-in is active the note will be pitchless (displays yellow, percussion-sounding)\n - the MIDI keyboard will provide the pitch. Changes prevailing duration.", G_CALLBACK (Dur8)}, {"Change8", "NULL", NOTE8, NULL, "Change current note to a "NOTE8, G_CALLBACK (ChangeDur8)}, {"Insert8", NULL, "Insert a "NOTE8"", NULL, "Inserts a "NOTE8" at cursor position\nSets prevailing duration to "NOTE8, G_CALLBACK (InsertDur8)}, {"InsertRest8", NULL, "Insert a "REST8"rest", NULL, "Inserts a rest at cursor position\nSets prevailing duration to "NOTE8, G_CALLBACK (InsertRest8)}, {"Set8", NULL, "Set Duration to "NOTE8"", NULL, "Sets prevailing duration to "NOTE8" (subsequent notes entered will have this duration)", G_CALLBACK (SetDur8)}, {"InsertA", NULL, "Insert A", NULL, "Inserts note A before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (InsertA)}, {"AddNoteA", NULL, "Insert A After", NULL, "Inserts note A after note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (AddNoteA)}, {"AddA", NULL, "Add A to Chord", NULL, "Adds note A to chord at cursor\nCursor determines which octave", G_CALLBACK (AddA)}, {"ChangeToA", NULL, "Change current note to A", NULL, "Changes current note to the A nearest cursor or (if no current note) inserts the note A\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (ChangeToA)}, {"MoveToA", NULL, "Move cursor to step A", NULL, "Moves the cursor to the A nearest cursor\nCurrent cursor position determines which octave.", G_CALLBACK (MoveToA)}, {"InsertB", NULL, "Insert B", NULL, "Inserts note B before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (InsertB)}, {"AddNoteB", NULL, "Insert B After", NULL, "Inserts note B after note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (AddNoteB)}, {"AddB", NULL, "Add B to Chord", NULL, "Adds note B to chord at cursor\nCursor determines which octave", G_CALLBACK (AddB)}, {"ChangeToB", NULL, "Change current note to B", NULL, "Changes current note to the B nearest cursor or (if no current note) inserts the note B\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (ChangeToB)}, {"MoveToB", NULL, "Move cursor to step B", NULL, "Moves the cursor to the B nearest cursor\nCurrent cursor position determines which octave.", G_CALLBACK (MoveToB)}, {"InsertC", NULL, "Insert C", NULL, "Inserts note C before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (InsertC)}, {"AddNoteC", NULL, "Insert C After", NULL, "Inserts note C after note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (AddNoteC)}, {"AddC", NULL, "Add C to Chord", NULL, "Adds note C to chord at cursor\nCursor determines which octave", G_CALLBACK (AddC)}, {"ChangeToC", NULL, "Change current note to C", NULL, "Changes current note to the C nearest cursor or (if no current note) inserts the note C\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (ChangeToC)}, {"MoveToC", NULL, "Move cursor to step C", NULL, "Moves the cursor to the C nearest cursor\nCurrent cursor position determines which octave.", G_CALLBACK (MoveToC)}, {"InsertD", NULL, "Insert D", NULL, "Inserts note D before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (InsertD)}, {"AddNoteD", NULL, "Insert D After", NULL, "Inserts note D after note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (AddNoteD)}, {"AddD", NULL, "Add D to Chord", NULL, "Adds note D to chord at cursor\nCursor determines which octave", G_CALLBACK (AddD)}, {"ChangeToD", NULL, "Change current note to D", NULL, "Changes current note to the D nearest cursor or (if no current note) inserts the note D\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (ChangeToD)}, {"MoveToD", NULL, "Move cursor to step D", NULL, "Moves the cursor to the D nearest cursor\nCurrent cursor position determines which octave.", G_CALLBACK (MoveToD)}, {"InsertE", NULL, "Insert E", NULL, "Inserts note E before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (InsertE)}, {"AddNoteE", NULL, "Insert E After", NULL, "Inserts note E after note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (AddNoteE)}, {"AddE", NULL, "Add E to Chord", NULL, "Adds note E to chord at cursor\nCursor determines which octave", G_CALLBACK (AddE)}, {"ChangeToE", NULL, "Change current note to E", NULL, "Changes current note to the E nearest cursor or (if no current note) inserts the note E\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (ChangeToE)}, {"MoveToE", NULL, "Move cursor to step E", NULL, "Moves the cursor to the E nearest cursor\nCurrent cursor position determines which octave.", G_CALLBACK (MoveToE)}, {"InsertF", NULL, "Insert F", NULL, "Inserts note F before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (InsertF)}, {"AddNoteF", NULL, "Insert F After", NULL, "Inserts note F after note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (AddNoteF)}, {"AddF", NULL, "Add F to Chord", NULL, "Adds note F to chord at cursor\nCursor determines which octave", G_CALLBACK (AddF)}, {"ChangeToF", NULL, "Change current note to F", NULL, "Changes current note to the F nearest cursor or (if no current note) inserts the note F\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (ChangeToF)}, {"MoveToF", NULL, "Move cursor to step F", NULL, "Moves the cursor to the F nearest cursor\nCurrent cursor position determines which octave.", G_CALLBACK (MoveToF)}, {"InsertG", NULL, "Insert G", NULL, "Inserts note G before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (InsertG)}, {"AddNoteG", NULL, "Insert G After", NULL, "Inserts note G after note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (AddNoteG)}, {"AddG", NULL, "Add G to Chord", NULL, "Adds note G to chord at cursor\nCursor determines which octave", G_CALLBACK (AddG)}, {"ChangeToG", NULL, "Change current note to G", NULL, "Changes current note to the G nearest cursor or (if no current note) inserts the note G\nCursor determines which octave\nNote is inserted in the prevailing rhythm", G_CALLBACK (ChangeToG)}, {"MoveToG", NULL, "Move cursor to step G", NULL, "Moves the cursor to the G nearest cursor\nCurrent cursor position determines which octave.", G_CALLBACK (MoveToG)} denemo-2.2.0/src/core/PaxHeaders.19168/twoints.h0000644000000000000000000000013213135434036016130 xustar0030 mtime=1500919838.346648472 30 atime=1500919919.669981805 30 ctime=1500919914.203315139 denemo-2.2.0/src/core/twoints.h0000644000175000017500000000040713135434036020002 0ustar00jjbenhamjjbenham00000000000000/* twoints.h * header file for struct twoints * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #ifndef DENEMO_TWOINTS_H #define DENEMO_TWOINTS_H struct twoints { gint a; gint b; }; #endif /* ifndef DENEMO_TWOINTS_H */ denemo-2.2.0/src/core/PaxHeaders.19168/menusystem.c0000644000000000000000000000013213135434036016625 xustar0030 mtime=1500919838.346648472 30 atime=1500919919.669981805 30 ctime=1500919914.349981805 denemo-2.2.0/src/core/menusystem.c0000644000175000017500000016124213135434036020504 0ustar00jjbenhamjjbenham00000000000000/* * menusystem.c * * Copyright 2016 Richard Shann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include #include "core/view.h" #include "core/utils.h" #include "core/keymapio.h" #include "core/menusystem.h" #include "core/keyboard.h" #include "command/commandfuncs.h" #include "command/select.h" #include "command/grace.h" #include "command/lilydirectives.h" #include "command/scorelayout.h" #include "audio/pitchentry.h" #include "audio/playback.h" #include "audio/audiointerface.h" #include "scripting/scheme-callbacks.h" #include "printview/printview.h" #include "ui/texteditors.h" DenemoAction DummyAction; //this dummy parameter is passed to built-in callbacks to distinguish them from callbacks via scripts which have a NULL parameter (for historical reasons). typedef void (*BuiltInCallback)(gpointer action, gpointer param); typedef struct MenuEntry {gchar *name; gchar *dummy; gchar *label; gchar *dummy2; gchar *tooltip; gpointer callback;} MenuEntry; static MenuEntry menu_entries[] = { #include "entries.h" }; GHashTable *ActionWidgets, *Actions; static void show_type (GtkWidget * widget, gchar * message) { g_message ("%s%s", message, widget ? g_type_name (G_TYPE_FROM_INSTANCE (widget)) : "NULL widget"); } /** * callback changing the input source (keyboard only/audio/midi) * */ static void change_input_type (GtkCheckMenuItem * item, gint val) { DenemoProject *project = Denemo.project; if(!gtk_check_menu_item_get_active(item)) return; switch (val) { case INPUTKEYBOARD: if (project->input_source == INPUTAUDIO) { //g_debug("Stopping audio\n"); stop_pitch_input (); } project->input_source = INPUTKEYBOARD; Denemo.project->last_source = INPUTKEYBOARD; g_print ("Input keyboard %d", Denemo.project->last_source); infodialog (_("Rhythms will be entered as notes at the cursor height")); break; case INPUTAUDIO: g_print("Starting audio\n"); if (project->input_source == INPUTMIDI) { g_print("Stopping midi\n"); stop_pitch_input (); } project->input_source = INPUTAUDIO; if (setup_pitch_input ()) { project->input_source = INPUTKEYBOARD; warningdialog (_("Could not start Audio input")); //gtk_radio_action_set_current_value (current, INPUTKEYBOARD); } else start_pitch_input (); break; case INPUTMIDI: if (have_midi ()) { project->input_source = INPUTMIDI; infodialog (_("Rhythms will be entered as (brown) notes without pitch")); } else { warningdialog (_("No MIDI in device was found on startup- re-start Denemo with the device plugged in, select the device in the MIDI tab of the preferences dialog and re-start Denemo again.")); } g_print ("Input source %d\n", project->input_source); break; default: g_warning ("Bad Value"); break; } write_input_status (); } static void placeInPalette (GtkWidget * widget, DenemoAction * action) { gchar *name = (gchar *) denemo_action_get_name (action); gint idx = lookup_command_from_name (Denemo.map, name); if (idx > 0) place_action_in_palette (idx, name); } static void configure_keyboard_idx (GtkWidget * w, gint idx) { command_center_select_idx (NULL, idx); } /* return a directory path for a system menu ending in menupath, or NULL if none exists checking user's download then the installed menus user must free the returned string*/ static gchar * get_system_menupath (gchar * menupath) { gchar *filepath = g_build_filename (get_user_data_dir (TRUE), "download", COMMANDS_DIR, "menus", menupath, NULL); //g_debug("No file %s\n", filepath); if (0 != g_access (filepath, 4)) { g_free (filepath); filepath = g_build_filename (get_system_data_dir (), COMMANDS_DIR, "menus", menupath, NULL); } return filepath; } static void appendSchemeText_cb (GtkWidget * widget, gchar * text) { gboolean sensitive = gtk_widget_get_visible (gtk_widget_get_toplevel (Denemo.script_view)); appendSchemeText (text); if (!sensitive) toggle_scheme ();//activate_action ("/MainMenu/ViewMenu/ToggleScript"); } /* save the action (which must be a script), setting the script text to the script currently in the script_view The save is to the user's menu hierarchy on disk */ static void saveMenuItem (GtkWidget * widget, DenemoAction * action) { gchar *name = (gchar *) denemo_action_get_name (action); gint idx = lookup_command_from_name (Denemo.map, name); command_row *row = NULL; keymap_get_command_row (Denemo.map, &row, idx); if (!row) return; gchar *tooltip = (gchar *) lookup_tooltip_from_idx (Denemo.map, idx); gchar *label = (gchar *) lookup_label_from_idx (Denemo.map, idx); gchar *xml_filename = g_strconcat (name, XML_EXT, NULL); gchar *xml_path = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", row->menupath, xml_filename, NULL); g_free (xml_filename); gchar *scm_filename = g_strconcat (name, SCM_EXT, NULL); gchar *scm_path = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", row->menupath, scm_filename, NULL); g_free (scm_filename); gchar *scheme = get_script_view_text (); if (scheme && *scheme && confirm (_("Save Script"), g_strconcat (_("Over-write previous version of the script for "), name, _(" ?"), NULL))) { gchar *dirpath = g_path_get_dirname (xml_path); g_mkdir_with_parents (dirpath, 0770); g_free (dirpath); save_command_metadata (xml_filename, name, label, tooltip, row->after); save_command_data (scm_path, scheme); row->scheme = NULL; } else warningdialog (_("No script saved")); } /* write scheme script from Denemo.script_view into file init.scm in the user's local menupath. */ static void put_initialization_script (GtkWidget * widget, gchar * directory) { gchar *filename = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", directory, INIT_SCM, NULL); if ((!g_file_test (filename, G_FILE_TEST_EXISTS)) || confirm (_("There is already an initialization script here"), _("Do you want to replace it?"))) { gchar *scheme = get_script_view_text (); if (scheme && *scheme) { FILE *fp = fopen (filename, "w"); if (fp) { fprintf (fp, "%s", scheme); fclose (fp); if (confirm (_("Wrote init.scm"), _("Shall I execute it now?"))) call_out_to_guile (scheme); } else { warningdialog (_("Could not create init.scm;\n" "you must create your scripted menu item in the menu\n" "before you create the initialization script for it, sorry.")); } g_free (scheme); } } } /* replace dangerous characters in command names */ static void subst_illegals (gchar * myname) { gchar *c; // avoid whitespace etc for (c = myname; *c; c++) if (*c == ' ' || *c == '\t' || *c == '\n' || *c == '/' || *c == '\\') *c = '-'; } /* gets a name label and tooltip from the user, then creates a menuitem in the menu given by the path myposition whose callback is the activate on the current scheme script. */ static void insertScript (GtkWidget * widget, gchar * insertion_point) { DenemoProject *project = Denemo.project; gchar *myname, *mylabel, *myscheme, *mytooltip, *submenu; gchar *myposition = g_path_get_dirname (insertion_point); gchar *after = g_path_get_basename (insertion_point); gint idx = lookup_command_from_name (Denemo.map, after); myname = string_dialog_entry (project, "Create a new menu item", "Give item name (avoid clashes): ", "MyName"); //FIXME check for name clashes if (myname == NULL) return; subst_illegals (myname); mylabel = string_dialog_entry (project, _("Create a new menu item"), _("Give menu label: "), _("My Label")); if (mylabel == NULL) return; mytooltip = string_dialog_entry (project, _("Create a new menu item"), _("Give explanation of what it does: "), _("Prints my special effect")); if (mytooltip == NULL) return; if (confirm (_("Create a new menu item"), _("Do you want the new menu item in a submenu?"))) { submenu = string_dialog_entry (project, _("Create a new menu item"), _("Give a label for the Sub-Menu"), _("Sub Menu Label")); if (submenu) { subst_illegals (submenu); myposition = g_strdup_printf ("%s/%s", myposition, submenu); //FIXME G_DIR_SEPARATOR in myposition??? } } myscheme = get_script_view_text (); gchar *xml_filename = g_strconcat (myname, XML_EXT, NULL); gchar *scm_filename = g_strconcat (myname, SCM_EXT, NULL); g_info ("The filename built is %s from %s", xml_filename, myposition); gchar *xml_path = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", myposition, xml_filename, NULL); gchar *scm_path = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", myposition, scm_filename, NULL); g_free (xml_filename); if ((!g_file_test (xml_path, G_FILE_TEST_EXISTS)) || (g_file_test (xml_path, G_FILE_TEST_EXISTS) && confirm (_("Duplicate Name"), _("A command of this name is already available in your custom menus; Overwrite?")))) { gchar *dirpath = g_path_get_dirname (xml_path); g_mkdir_with_parents (dirpath, 0770); g_free (dirpath); //g_file_set_contents(xml_path, text, -1, NULL); save_command_metadata (xml_path, myname, mylabel, mytooltip, idx < 0 ? NULL : after); save_command_data (scm_path, myscheme); load_xml_keymap (xml_path);//g_print ("Loading from %s\n", xml_path); if (confirm (_("New Command Added"), _("Do you want to save this with your default commands?"))) save_accels (); } else warningdialog (_("Operation cancelled")); g_free (myposition); return; } /* get init.scm for the current path into the scheme text editor. */ static void get_initialization_script (GtkWidget * widget, gchar * directory) { GError *error = NULL; gchar *script; g_debug ("Loading %s/init.scm into Denemo.script_view", directory); GList *dirs = NULL; dirs = g_list_append (dirs, g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", directory, NULL)); dirs = g_list_append (dirs, g_build_filename (get_user_data_dir (TRUE), "download", COMMANDS_DIR, "menus", directory, NULL)); dirs = g_list_append (dirs, g_build_filename (get_system_data_dir (), COMMANDS_DIR, "menus", directory, NULL)); gchar *filename = find_path_for_file (INIT_SCM, dirs); if (!filename) { g_warning ("Could not find scm initialization file"); return; } if (g_file_get_contents (filename, &script, NULL, &error)) appendSchemeText (script); else g_warning ("Could not get contents of %s", filename); g_free (script); g_free (filename); } /** * Function to toggle whether rhythm toolbar is visible * (no longer switches keymap to Rhythm.keymaprc when toolbar is on back to standard when off.) * */ static void toggle_rhythm_toolbar (DenemoAction * action, gpointer param) { GtkWidget *widget; widget = denemo_menusystem_get_widget ("/RhythmToolBar"); //g_debug("Callback for %s\n", g_type_name(G_TYPE_FROM_INSTANCE(widget))); if ((!action) || gtk_widget_get_visible (widget)) { gtk_widget_hide (widget); } else { gtk_widget_show (widget); /* make sure we are in Insert and Note for rhythm toolbar */ // activate_action( "/MainMenu/ModeMenu/Note"); //activate_action( "/MainMenu/ModeMenu/InsertMode"); } if (Denemo.prefs.persistence && (Denemo.project->view == DENEMO_MENU_VIEW)) Denemo.prefs.rhythm_palette = gtk_widget_get_visible (widget); } /** * Function to toggle whether main toolbar is visible * * */ void toggle_toolbar (DenemoAction * action, gpointer param) { GtkWidget *widget; widget = denemo_menusystem_get_widget ("/ToolBar"); if ((!action) || gtk_widget_get_visible (widget)) gtk_widget_hide (widget); else gtk_widget_show_all (widget); if (Denemo.prefs.persistence && (Denemo.project->view == DENEMO_MENU_VIEW)) Denemo.prefs.toolbar = gtk_widget_get_visible (widget); } /** * Function to toggle whether playback toolbar is visible * * */ void toggle_playback_controls (DenemoAction * action, gpointer param) { GtkWidget *widget; widget = Denemo.playback_control; if ((!action) || gtk_widget_get_visible (widget)) gtk_widget_hide (widget); else gtk_widget_show (widget); if (Denemo.prefs.persistence && (Denemo.project->view == DENEMO_MENU_VIEW)) Denemo.prefs.playback_controls = gtk_widget_get_visible (widget); } /** * Function to toggle whether playback toolbar is visible * * */ void toggle_midi_in_controls (DenemoAction * action, gpointer param) { GtkWidget *widget; widget = Denemo.midi_in_control; if ((!action) || gtk_widget_get_visible (widget)) gtk_widget_hide (widget); else gtk_widget_show (widget); if (Denemo.prefs.persistence && (Denemo.project->view == DENEMO_MENU_VIEW)) Denemo.prefs.midi_in_controls = gtk_widget_get_visible (widget); } #if 0 /** * Function to toggle whether keyboard bindings can be set by pressing key over menu item * * */ static void toggle_quick_edits (DenemoAction * action, gpointer param) { //Denemo.prefs.quickshortcuts = !Denemo.prefs.quickshortcuts; get_widget (Toggle_Quick.... this is silly - this is not a viewable item. } #endif /** * Function to toggle visibility of print preview pane of current project * * */ static void toggle_print_view (DenemoAction * action, gpointer param) { if (Denemo.non_interactive) return; #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else GtkWidget *w = gtk_widget_get_toplevel (Denemo.printarea); if ((!action) || gtk_widget_get_visible (w)) gtk_widget_hide (w); else { // gtk_widget_show (w); //if (GPOINTER_TO_INT (g_object_get_data (G_OBJECT (Denemo.printarea), "printviewupdate")) < Denemo.project->changecount) // refresh_print_view (TRUE); implement_show_print_view (TRUE); } #endif } /** * Function to toggle visibility of playback view pane of current project * * */ static void toggle_playback_view (DenemoAction * action, gpointer param) { if (Denemo.non_interactive) return; GtkWidget *w = gtk_widget_get_toplevel (Denemo.playbackview); if (gtk_widget_get_visible (w)) gtk_widget_hide (w); else { gtk_widget_show (w); GtkImageType type = gtk_image_get_storage_type (GTK_IMAGE (Denemo.playbackview)); if (type == GTK_IMAGE_EMPTY) call_out_to_guile ("(d-PlaybackView #f)"); } } /** * Function to toggle visibility of score layout window of current project * * */ static void toggle_score_layout (DenemoAction * action, gpointer param) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else DenemoProject *project = Denemo.project; GtkWidget *w = project->score_layout; GList *g = gtk_container_get_children (GTK_CONTAINER (w)); if (g == NULL) { create_default_scoreblock (); } if ((!action) || gtk_widget_get_visible (w)) gtk_widget_hide (w); else { gtk_widget_show (w); } #endif } /** * Function to toggle visibility of command manager window * * */ static void toggle_command_manager (DenemoAction * action, gpointer param) { if (Denemo.command_manager == NULL) { configure_keyboard_dialog (action, NULL); gtk_widget_show (Denemo.command_manager); } else { GtkWidget *w = Denemo.command_manager; if ((!action) || gtk_widget_get_visible (w)) gtk_widget_hide (w); else gtk_widget_show (w); } } /** * show the vbox containing the verses notebook for the current movement. * * */ void show_verses (void) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else GtkWidget *widget = Denemo.project->movement->lyricsbox; static gint last_height = 100; if (!widget) g_warning ("No lyrics"); else { //if ((!action) || gtk_widget_get_visible (widget)) //{ //GtkWidget *parent = gtk_widget_get_parent (gtk_widget_get_parent (widget)); //gint height = get_widget_height (parent); //last_height = get_widget_height (widget); //gtk_paned_set_position (GTK_PANED (parent), height); //gtk_widget_hide (widget); //} //else { gtk_widget_show (widget); GtkWidget *parent = gtk_widget_get_parent (gtk_widget_get_parent (widget)); gint height = get_widget_height (parent); if ((height > last_height)) gtk_paned_set_position (GTK_PANED (parent), height - last_height); } // if (Denemo.prefs.persistence && (Denemo.project->view == DENEMO_MENU_VIEW)) // Denemo.prefs.lyrics_pane = gtk_widget_get_visible (widget); } #endif } /** * Function to toggle whether object menubar is visible * * */ static void toggle_object_menu (DenemoAction * action, gpointer param) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else GtkWidget *widget; widget = denemo_menusystem_get_widget ("/ObjectMenu"); if (!widget) return; // internal error - out of step with menu_entries... if ((!action) || gtk_widget_get_visible (widget)) { gtk_widget_hide (widget); } else { gtk_widget_show (widget); } #endif } /** * Function to toggle the visibility of the LilyPond text window. It refreshes * the text if needed */ static void toggle_lilytext (DenemoAction * action, gpointer param) { DenemoProject *project = Denemo.project; //if(!project->textview) refresh_lily_cb (action, project); if (!gtk_widget_get_visible (Denemo.textwindow)) gtk_widget_show /*_all*/ (Denemo.textwindow); else gtk_widget_hide (Denemo.textwindow); //g_debug("toggling lily window"); } /** * Function to toggle the visibility of the Scheme text window. */ void toggle_scheme (void) { GtkWidget *widget = gtk_widget_get_toplevel (Denemo.script_view); // set_toggle (ToggleScript_STRING, !gtk_widget_get_visible (textwindow)); if (gtk_widget_get_visible (widget)) { gtk_widget_hide (widget); } else { gtk_widget_show (widget); } } //toggle_rhythm_mode /** * Function to toggle visibility of print preview pane of current project * * */ static void toggle_score_view (DenemoAction * action, gpointer param) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else GtkWidget *w = gtk_widget_get_parent (gtk_widget_get_parent (Denemo.scorearea)); if ((!action) || gtk_widget_get_visible (w)) gtk_widget_hide (w); else { gtk_widget_show (w); gtk_widget_grab_focus (Denemo.scorearea); } #endif } /** * Function to toggle visibility of titles etc of current project * * */ static void toggle_scoretitles (DenemoAction * action, gpointer param) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else GtkWidget *widget = Denemo.project->buttonboxes; if ((!action) || gtk_widget_get_visible (widget)) gtk_widget_hide (widget); else gtk_widget_show (widget); if (Denemo.prefs.persistence && (Denemo.project->view == DENEMO_MENU_VIEW)) Denemo.prefs.visible_directive_buttons = gtk_widget_get_visible (widget); #endif } typedef struct ToggleMenuEntry {gchar *name; GtkWidget *item; gchar *label; gchar *dummy; gchar *tooltip; gpointer callback; gboolean initial;} ToggleMenuEntry; /** * Toggle entries for the menus */ ToggleMenuEntry toggle_menu_entries[] = { {TogglePrintView_STRING, NULL, N_("Typeset Music"), NULL, N_("Shows the Print View\nwith the music typeset by the LilyPond Music Typesetter."), G_CALLBACK (toggle_print_view), FALSE} , {TogglePlaybackView_STRING, NULL, N_("Playback"), NULL, N_("Shows the PlayBack View from which a more sophisticated playback of the music is possible"), G_CALLBACK (toggle_playback_view), FALSE} , {ToggleCommandManager_STRING, NULL, N_("Command Center"), NULL, N_("Shows a searchable list of all commands, enables setting of keyboard short-cuts, etc."), G_CALLBACK (toggle_command_manager), FALSE} , {ToggleScoreLayout_STRING, NULL, N_("Score Layout"), NULL, N_("Shows an overview of the score where various elements can be rearranged, deleted etc. to form a customized layout"), G_CALLBACK (toggle_score_layout), FALSE} , {ToggleRhythmToolbar_STRING, NULL, N_("Snippets"), NULL, N_("Show/hide a toolbar which allows\nyou to store and enter snippets of music and to enter notes using rhythm pattern of a snippet"), G_CALLBACK (toggle_rhythm_toolbar), FALSE} , {ToggleToolbar_STRING, NULL, N_("Tools"), NULL, N_("Show/hide a toolbar for general operations on music files"), G_CALLBACK (toggle_toolbar), FALSE} , {TogglePlaybackControls_STRING, NULL, N_("Playback Control"), NULL, N_("Show/hide playback controls"), G_CALLBACK (toggle_playback_controls), FALSE} , {ToggleMidiInControls_STRING, NULL, N_("Midi In Control"), NULL, N_("Show/hide Midi Input controls"), G_CALLBACK (toggle_midi_in_controls), FALSE} , {ToggleScoreTitles_STRING, NULL, N_("Titles, Buttons etc"), NULL, N_("Shows a bar holding the title etc of the music and buttons for selecting a movement to make currrent."), G_CALLBACK (toggle_scoretitles), FALSE} , {ToggleObjectMenu_STRING, NULL, N_("Object Menu"), NULL, N_("Show/hide a menu which is arranged by objects\nThe actions available for note objects change with the mode"), G_CALLBACK (toggle_object_menu), FALSE} , {ToggleLilyText_STRING, NULL, N_("LilyPond"), NULL, N_("Show/hide the LilyPond music typesetting language window. Any errors in typesetting are shown here."), G_CALLBACK (toggle_lilytext), FALSE} , {ToggleScript_STRING, NULL, N_("Scheme Script"), NULL, N_("Show Scheme script window. Sequences of commands can be recorded here\nand then executed or turned into new commaneds."), G_CALLBACK (toggle_scheme), FALSE} , {ToggleScoreView_STRING, NULL, N_("Score"), NULL, N_("Shows/hides the music in the Denemo Display"), G_CALLBACK (toggle_score_view), FALSE} }; typedef struct RadioMenuEntry {gchar *name; GtkWidget *item; gchar *label; gchar *dummy; gchar *tooltip; input_mode val;} RadioMenuEntry; static RadioMenuEntry input_menu_entries[] = { {"KeyboardOnly", NULL, N_("No External Input"), NULL, N_("Entry of notes via computer keyboard only\nIgnores connected MIDI or microphone devices."), INPUTKEYBOARD}, {"JackMidi", NULL, N_("Midi Input"), NULL, N_("Input from a MIDI source. Set up the source first using Edit → Change Preferences → Audio/Midi\nUse View → MIDI In Control to control what the input does.\n"), INPUTMIDI}, {"Microphone", NULL, N_("Audio Input"), NULL, N_("Enable pitch entry from microphone"), INPUTAUDIO } }; static void load_command_from_location (GtkWidget * w, gchar * filepath) { gchar *location = g_strdup_printf ("%s%c", filepath, G_DIR_SEPARATOR); g_info ("Calling the file loader with %s", location); load_keymap_dialog_location (location); g_free (location); } /* menu_click: intercepter for the callback when clicking on menu items for the set of Actions the Denemo offers. Left click runs default action, after recording the item in a scheme script if recording. Right click offers pop-up menu for setting shortcuts etc */ static gboolean menu_click (GtkWidget * widget, GdkEventButton * event, DenemoAction * action) { keymap *the_keymap = Denemo.map; const gchar *func_name = denemo_action_get_name (action); //g_print("In menu click action is %p name is %s button %d\n",action, func_name, event->button); gint idx = lookup_command_from_name (the_keymap, func_name); command_row *row = NULL; keymap_get_command_row (the_keymap, &row, idx); if (!row) return TRUE;//stop other handlers running //g_debug("event button %d, idx %d for %s recording = %d scm = %d\n", event->button, idx, func_name, Denemo.ScriptRecording,g_object_get_data(G_OBJECT(action), "scm") ); if (event->button != 3) //Not right click if (Denemo.ScriptRecording) { append_scheme_call ((gchar *) func_name); } if (event->button != 3) return FALSE; gboolean sensitive = gtk_widget_get_visible (gtk_widget_get_toplevel (Denemo.script_view)); //some buttons should be insensitive if the Scheme window is not visible GtkWidget *menu = gtk_menu_new (); gchar *labeltext = g_strdup_printf ("Help for %s", func_name); GtkWidget *item = gtk_menu_item_new_with_label (labeltext); g_free (labeltext); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (popup_help_for_action), (gpointer) action); /* Place button in palette */ if (idx != -1) { item = gtk_menu_item_new_with_label (_("Place Command in a Palette")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (placeInPalette), action); } /* "drag" menu item onto button bar */ //item = gtk_menu_item_new_with_label (_("Place Command on the Title Bar")); //gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); //g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (placeOnButtonBar), action); if (idx != -1) { //item = gtk_menu_item_new_with_label (_("Create Mouse Shortcut")); //gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); //g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (createMouseShortcut), action); item = gtk_menu_item_new_with_label (_("Open Command Center\non this command")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (configure_keyboard_idx), GINT_TO_POINTER (idx)); item = gtk_menu_item_new_with_label (_("Save Command Set")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (save_default_keymap_file), action); item = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); } //idx!=-1 // applies if it is a built-in command: FIXME not set for the popup menus though gchar *myposition = g_object_get_data (G_OBJECT (widget), "menupath"); //g_print("position from built in is %s\n", myposition); if (row && !myposition) //menu item runs a script myposition = row->menupath; //g_print("position is %s\n", myposition); if (myposition == NULL) { g_warning("Cannot find the position of this menu item %s in the menu system", func_name); return TRUE; } static gchar *filepath; // static so that we can free it next time we are here. if (filepath) g_free (filepath); filepath = get_system_menupath (myposition); if (0 == g_access (filepath, 4)) { //g_debug("We can look for a menu item in the path %s\n", filepath); item = gtk_menu_item_new_with_label ("More Commands"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (load_command_from_location), (gpointer) filepath); } if (!is_action_name_builtin ((gchar *) func_name)) { gchar *scheme = get_scheme_from_idx (idx); if (!scheme) g_warning ("Could not get script for %s", denemo_action_get_name (action)); else { item = gtk_menu_item_new_with_label (_("Get Script into Scheme Window")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (appendSchemeText_cb), scheme); } { item = gtk_menu_item_new_with_label (_("Save Script from Scheme Window")); gtk_widget_set_sensitive (item, sensitive); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (saveMenuItem), action); } #ifdef EXTRA_WORK if (Denemo.project->xbm) { //item = gtk_menu_item_new_with_label (_("Save Graphic")); // GtkSettings* settings = gtk_settings_get_default(); // gtk_settings_set_long_property (settings,"gtk-menu-images",(glong)TRUE, "XProperty"); //item = gtk_image_menu_item_new_from_stock("Save Graphic", gtk_accel_group_new()); item = gtk_image_menu_item_new_from_stock (_("Save Graphic") /*_("_OK") */ , NULL); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (saveGraphicItem), action); } #endif #ifdef UPLOAD_TO_DENEMO_DOT_ORG item = gtk_menu_item_new_with_label (_("Upload this Script to denemo.org")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (uploadMenuItem), action); #endif } item = gtk_menu_item_new_with_label (_("Save Script as New Menu Item")); gtk_widget_set_sensitive (item, sensitive); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); static gchar *insertion_point; if (insertion_point) g_free (insertion_point); insertion_point = g_build_filename (myposition, func_name, NULL); //g_debug("using %p %s for %d %s %s\n", insertion_point, insertion_point, idx, myposition, func_name); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (insertScript), insertion_point); /* options for getting/putting init.scm */ item = gtk_menu_item_new_with_label (_("Get Initialization Script for this Menu")); gtk_widget_set_sensitive (item, sensitive); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (get_initialization_script), myposition); item = gtk_menu_item_new_with_label (_("Put Script as Initialization Script for this Menu")); gtk_widget_set_sensitive (item, sensitive); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (put_initialization_script), myposition); gtk_widget_show_all (menu); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); return TRUE; } //static gboolean //thecallback (GtkWidget * widget, GdkEventButton * event, DenemoAction * action) //{ //if (event->button == 1 && !(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK))) //return FALSE; //g_debug ("going for %d for %d\n", event->button, event->state); //event->button = 3; //return menu_click (widget, event, action); //} static void attach_right_click_callback (GtkWidget * widget, DenemoAction * action) { gtk_widget_add_events (widget, (GDK_BUTTON_RELEASE_MASK)); //will not work because label are NO_WINDOW g_signal_connect (G_OBJECT (widget), "button-release-event", G_CALLBACK (menu_click), action); } /** * Key snooper function. This function intercepts all key events before they are * passed to other functions for further processing. We use do quick shortcut edits. */ static gint dnm_key_snooper (GtkWidget *grab_widget, GdkEventKey * event) { //show_type (grab_widget, "type is "); //no special processing for key release events if (event->type == GDK_KEY_RELEASE) return FALSE; //if the grab_widget is a menu, the event could be a quick edit if (Denemo.prefs.quickshortcuts && GTK_IS_MENU (grab_widget)) { GtkWidget *item = gtk_menu_shell_get_selected_item (GTK_MENU_SHELL(grab_widget)); DenemoAction *action = (DenemoAction*)g_object_get_data (G_OBJECT(item), "action"); return keymap_accel_quick_edit_snooper (grab_widget, event, action); } //else we let the event be processed by other functions return FALSE; } static void attach_key_snooper (GtkWidget * widget, DenemoAction * action) { show_type (widget, "attaching to type "); GdkWindow *window = gtk_widget_get_window (widget); if (window) gdk_window_set_source_events (window, GDK_SOURCE_KEYBOARD, GDK_KEY_PRESS_MASK); //else g_warning ("No GdkWindow for menu item"); gtk_widget_add_events (widget, (GDK_KEY_PRESS_MASK)); g_signal_connect (G_OBJECT (widget), "key-press-event", G_CALLBACK (dnm_key_snooper), action); } /* * * set callback for right click on menu items and * set the shortcut label * (was proxy_connected()) */ static void attach_accels_and_callbacks (DenemoAction * action, GtkWidget * proxy) { int command_idx; command_row *row; attach_right_click_callback (proxy, action); // attach_key_snooper (proxy, action); // g_signal_connect (G_OBJECT (proxy), "button-press-event", G_CALLBACK (thecallback), action); //show_type (proxy, "the type is"); const gchar *tooltip = denemo_action_get_tooltip (action); const gchar *additional_text; g_object_set_data (G_OBJECT (proxy), "action", action); if (tooltip && g_str_has_prefix (tooltip, _("Menu:"))) additional_text = _("Click here then hover over the menu items to find out what they will do"); else additional_text = _("Left click to execute the command, press a key to assign a keyboard shortcut to the command,\nRight click to get a menu from which you can\nCreate a button for this command, or a two-key keyboard shortcut or more options still"); gchar *tip = g_strconcat (tooltip, "\n------------------------------------------------------------------\n", additional_text, NULL); denemo_widget_set_tooltip_text (proxy, tip); g_free (tip); if (Denemo.map == NULL) return; command_idx = lookup_command_from_name (Denemo.map, denemo_action_get_name (action)); if (command_idx > -1) { if (keymap_get_command_row (Denemo.map, &row, command_idx)) { update_accel_labels (Denemo.map, command_idx); if (row->hidden) set_visibility_for_action (action, FALSE); } } } void denemo_menusystem_new (void) { ActionWidgets = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL); Actions = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL); denemo_menusystem_add_menu (NULL, "/MainMenu"); denemo_menusystem_add_menu (NULL, "/ObjectMenu"); denemo_menusystem_add_menu (NULL, "/RhythmToolBar"); //popup menus, toolbar etc need seeding too denemo_menusystem_add_menu (NULL, "/ToolBar"); } GtkWidget *denemo_menusystem_get_widget (gchar *path) { GList *list = g_hash_table_lookup (ActionWidgets, path); if (list) return (GtkWidget*)list->data; return NULL; } static popup (GtkWidget *menuitem, GtkWidget *menu) { gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); } DenemoAction *denemo_action_new (const gchar *name, const gchar *label, const gchar *tooltip) { if (!Actions) { g_critical ("No Actions in %s", __FILE__); return NULL; } DenemoAction *action = (DenemoAction *)g_malloc (sizeof (DenemoAction)); action->name = g_strdup(name); action->label = g_strdup(label); action->tooltip = g_strdup(tooltip); g_hash_table_insert (Actions, action->name, action); return action; } static gpointer get_callback (gchar *name) { gint i; for (i=0;idata); for (g=g->prev;g;g=g->prev) { g_string_append_printf (gs, " â—€ %s", g->data); } return g_string_free (gs, FALSE); } static gchar *get_location_from_list (GList *g) { GString *gs = g_string_new((gchar*)g->data); for (g=g->next;g;g=g->next) { g_string_append_printf (gs, " â–¶ %s", g->data); } return g_string_free (gs, FALSE); } static void create_palette_for_menu (GtkWidget *menu) { GList *g, *children = gtk_container_get_children (GTK_CONTAINER(menu)); GList *palette_names = (GList*)g_object_get_data (G_OBJECT(menu), "labels"); gchar *palette_name = get_palette_name_from_list (palette_names); DenemoPalette *pal = get_palette (palette_name); if(pal==NULL) { gboolean palette_is_empty = TRUE; pal = set_palette_shape (palette_name, FALSE, 1); pal->menu = TRUE; for (g=children;g;g=g->next) { GtkWidget *item = (GtkWidget*)g->data; gchar *script; DenemoAction *action = (DenemoAction *)g_object_get_data (G_OBJECT(item), "action"); if (action==NULL) continue;//skip submenus gint command_idx = lookup_command_from_name (Denemo.map, denemo_action_get_name (action)); if ((command_idx>-1) && lookup_hidden_from_idx (Denemo.map, command_idx)) continue; script = g_strdup_printf ("(d-%s)", action->name); gchar *escaped = g_markup_escape_text (action->label, -1); palette_add_button (pal, escaped, action->tooltip, script); palette_is_empty = FALSE; g_free (escaped); } g_list_free (children); if (palette_is_empty) { delete_palette (pal); warningdialog (_("This menu holds no commands")); } } else gtk_widget_show (gtk_widget_get_parent (pal->box)), gtk_widget_show (pal->box); } static GList *clone_list (GList *g) { GList *h; for (h=NULL;g;g=g->next) { h = g_list_append (h, g->data); } return h; } /* * if path is "/MainMenu" or /ObjectMenu creates a menubar otherwise creates a menu item that pops up a menu * */ void denemo_menusystem_add_menu (gchar *path, gchar *name) { GtkWidget *w; if (path==NULL) { if (!strcmp(name, "/MainMenu")) w = gtk_menu_bar_new (), g_object_set_data (G_OBJECT(w), "labels", g_list_append (NULL, _("Main Menu"))); else { if ((!strcmp(name, "/ObjectMenu"))) w = gtk_menu_bar_new (), g_object_set_data (G_OBJECT(w), "labels", g_list_append (NULL, _("Object Menu"))); else w = gtk_toolbar_new (), g_object_set_data (G_OBJECT(w), "labels", g_list_append (NULL,_("Tool Bar"))); } path = g_strdup(name); } else { GtkWidget *item, *parent = denemo_menusystem_get_widget (path); if (!parent) { g_critical ("No menu in for path %s, name %s in %s", path, name, __FILE__); return; } gchar *label = get_label_for_name (name); if (label==NULL) label = name; item = gtk_menu_item_new_with_label (label); gtk_widget_show (item); gtk_menu_shell_append (GTK_MENU_SHELL (parent), item); w = gtk_menu_new (); gtk_widget_show (w); g_signal_connect (G_OBJECT (w), "key-press-event", G_CALLBACK(dnm_key_snooper), NULL); GList *labels = g_object_get_data (G_OBJECT(parent), "labels"); g_object_set_data (G_OBJECT(w), "labels", g_list_append(clone_list(labels), label)); GList *current = (GList*)g_hash_table_lookup (ActionWidgets, name); if(current==NULL) { current = g_list_append (current, w);//g_print ("created widget for name %s\n", name); g_hash_table_insert (ActionWidgets, g_strdup (name), current); } gtk_menu_item_set_submenu (GTK_MENU_ITEM(item), w); //we need to add a menu item that creates a palette (whose name is the menupath) for the items of the menu, and code in the palettes.c to display such palettes in a sub-menu when choosing etc //item = gtk_menu_item_new_with_label ("8>< 8>< 8>< 8>< 8>< 8>< 8>< 8>< 8>< 8>< 8><"); item = gtk_menu_item_new_with_label ("---------------------------------------------"); gtk_widget_set_tooltip_text (item, _("Tear off this menu as a palette")); gtk_menu_shell_append (GTK_MENU_SHELL (w), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK(create_palette_for_menu), w); gtk_widget_show (item); path = g_build_filename (path, name, NULL); //g_print("menu %s\n", path); g_object_set_data (G_OBJECT(w), "menupath", path); } GList *current = (GList*)g_hash_table_lookup (ActionWidgets, path); current = g_list_append (current, w); g_hash_table_insert (ActionWidgets, path, current); //g_print ("the path %s added to ActionWidgets", path); } static gint get_item_position (GtkWidget *menu, gchar *name) { gint position = -1; if (name) { GList *children = gtk_container_get_children (GTK_CONTAINER (menu)); GList *g; gint i=0; for (g=children;g;g=g->next, i++) { gchar *n = g_object_get_data (G_OBJECT(g->data), "name"); if (n && !strcmp (n, name)) { position = i; break; } } g_list_free (children); } return position; } static void relabel_tear_off (GtkWidget *menu, gint length) { GList *children = gtk_container_get_children (GTK_CONTAINER (menu)); // g_print ("length %d\n", length); if (children) { GtkMenuItem *tearoff = (GtkMenuItem*)children->data; gchar *label = g_strnfill((gsize)length*2, '-'); //g_print ("label is %s\n", label); gchar *scissor = g_strconcat ("✂", label, NULL); gtk_menu_item_set_label (tearoff, scissor); g_free (scissor); g_list_free (children); g_free (label); } } /* * if name is in entries.h create a menu item that calls the callback on activate signal * otherwise create menuitem that calls activate_action */ void denemo_menusystem_add_command (gchar *path, gchar *name, gchar *after) { DenemoAction *action = denemo_menusystem_get_action (name); GtkWidget *item, *parent = denemo_menusystem_get_widget (path); if (!parent) { g_critical ("No menu in %s", __FILE__); return; } gchar *label = get_label_for_name (name); if(label==NULL) label = name; gint length = strlen (label); gint curw = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (parent), "width")); if (length > curw) { relabel_tear_off (parent, length); g_object_set_data (G_OBJECT (parent), "width", GINT_TO_POINTER (length)); } item = gtk_menu_item_new_with_label (label); gtk_widget_show (item); g_object_set_data (G_OBJECT (item), "menupath", path); //FIXME is this in use??? g_object_set_data (G_OBJECT (item), "name", name); gint position = get_item_position (parent, after); if(position<0) gtk_menu_shell_append (GTK_MENU_SHELL (parent), item); else gtk_menu_shell_insert (GTK_MENU_SHELL (parent), item, position + 1); gpointer callback = get_callback (name); if (callback) g_signal_connect (item, "activate", G_CALLBACK (callback), NULL); else g_signal_connect_swapped (item, "activate", G_CALLBACK (activate_action), name); // g_print ("Storing menu item for %s\n", name); GList *current = (GList*)g_hash_table_lookup (ActionWidgets, name); current = g_list_append (current, item); g_hash_table_insert (ActionWidgets, g_strdup (name), current); attach_accels_and_callbacks (action, item); } //returns the (first) menupath stored for action of name gchar *get_menupath_for_name (gchar *name) { GList *current = (GList*)g_hash_table_lookup (ActionWidgets, name); if (current) return (gchar*)g_object_get_data (G_OBJECT (current->data), "menupath"); return NULL; } //returns labels stored for action of name gchar *get_location_for_name (gchar *name) { GList *current = (GList*)g_hash_table_lookup (ActionWidgets, name); if (current) { GtkWidget *item = (GtkWidget*)current->data; GtkWidget *menu = gtk_widget_get_parent(item); GList *labels = g_object_get_data (G_OBJECT (menu), "labels"); if (labels) return get_location_from_list (labels); } return NULL; } //this is called early on, before the keymap has been set up void denemo_menusystem_add_actions (void) { gint i; for (i=0;itype = DENEMO_MENU_ITEM; action->callback = menu_entries[i].callback; } } static void denemo_action_group_add_toggle_actions (void) { GtkWidget *item, *parent = denemo_menusystem_get_widget ("/MainMenu/ViewMenu"); if (!parent) { g_critical ("No menu in %s", __FILE__); return; } gint i; for ( i=0;itype = DENEMO_MENU_ITEM; action->callback = toggle_menu_entries[i].callback; item = gtk_check_menu_item_new_with_label (toggle_menu_entries[i].label); // toggle_menu_entries[i].item = item; gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(item), toggle_menu_entries[i].initial); gtk_widget_show (item); toggle_menu_entries[i].item = item; gtk_menu_shell_insert (GTK_MENU_SHELL (parent), item, i+1); //placed after the tear-off item. g_signal_connect (item, "activate", G_CALLBACK (toggle_menu_entries[i].callback), NULL); } } void set_toggle (gchar *name, gboolean value) { gint i; for (i=0;itype = DENEMO_MENU_ITEM; item = gtk_radio_menu_item_new_with_label (group, input_menu_entries[i].label); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item)); gtk_menu_shell_insert (GTK_MENU_SHELL (parent), item, i+1);//placed after the tear-off item. if (i == (have_midi ()? 1 : 0)) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE);//must do this before connecting signal otherwise the audio will be re-started. g_signal_connect (item, "toggled", G_CALLBACK(change_input_type), GINT_TO_POINTER(i)); } } DenemoAction *denemo_menusystem_get_action (gchar *name) { return name?(DenemoAction*)g_hash_table_lookup (Actions, name):NULL; } GList* denemo_action_get_proxies (DenemoAction *action) { return action?(GList*)g_hash_table_lookup (ActionWidgets, action->name):NULL; } gchar *denemo_action_get_name (DenemoAction *action) { return action->name; } gchar *denemo_action_get_tooltip (DenemoAction *action) { return action->tooltip; } void denemo_action_activate(DenemoAction *action) { if(action) { if (action->type) ((BuiltInCallback)(action->callback))(&DummyAction, NULL); else activate_script (action, NULL); } } static void toolbar_new_callback (void) {new_score_cb (NULL, NULL);} static void toolbar_open_callback (void) {file_open_with_check (NULL, NULL);} static void toolbar_save_callback (void) {file_savewrapper (NULL, NULL);} static void toolbar_print_callback (void) { #ifndef USE_EVINCE g_debug ("This feature requires denemo to be built with evince"); #else if (!gtk_widget_get_visible ( gtk_widget_get_toplevel (Denemo.printarea))) set_toggle (TogglePrintView_STRING, TRUE); else implement_show_print_view(TRUE); #endif } static void toolbar_move_to_start_callback (void) {movetostart (NULL, NULL);} static void toolbar_move_to_end_callback (void) {movetoend (NULL, NULL);} static void initialize_toggle_settings (void) { gint i; for ( i=0;ibuttonboxes); else gtk_widget_hide (Denemo.project->buttonboxes); //toggle_scoretitles (NULL, NULL); //gtk_widget_hide (denemo_menusystem_get_widget (ToggleLyricsView_STRING)); gtk_widget_show (Denemo.menubar); //gtk_widget_show (denemo_menusystem_get_widget ("/ObjectMenu")); gtk_widget_hide (denemo_menusystem_get_widget ("/ObjectMenu")); create_toolbar_items (); } /* add ui elements for menupath if missing else create menu and a menuitem that will popup the menu when activated and in all cases associate the name with the menu widget. */ void instantiate_menus (gchar * menupath) { //g_print("Instantiate menus for %s\n", menupath); gchar *up1 = g_path_get_dirname (menupath); gchar *name = g_path_get_basename (menupath); GtkWidget *widget = denemo_menusystem_get_widget (up1); if (!strcmp (up1, "/")) { g_critical ("bad menu path"); return; } if (widget == NULL) instantiate_menus (up1); if (NULL == denemo_menusystem_get_action (name)) {//g_print("Menu %s has no action\n", name); gchar *tooltip = g_strconcat (_("Menu:\nnamed \""), name, _("\" located at "), menupath, _(" in the menu system"), NULL); DenemoAction *action = denemo_action_new (name, name, tooltip); g_free (tooltip); //denemo_action_group_add_action (action); gint idx = lookup_command_from_name (Denemo.map, name); command_row* row = NULL; keymap_get_command_row(Denemo.map, &row, idx);//g_print ("For %s get idx %d and row %p\n", name, idx, row); if(row) row->menupath = up1; } denemo_menusystem_add_menu (up1, name); } denemo-2.2.0/src/core/PaxHeaders.19168/keymapio.c0000644000000000000000000000013213135434036016232 xustar0030 mtime=1500919838.346648472 30 atime=1500919919.729981805 30 ctime=1500919914.189981805 denemo-2.2.0/src/core/keymapio.c0000644000175000017500000007030413135434036020107 0ustar00jjbenhamjjbenham00000000000000#include "core/keymapio.h" #include "core/kbd-custom.h" #include "core/view.h" #include "core/menusystem.h" #include "ui/mousing.h" static gchar* find_command_dir(gint idx, gchar* filename) { command_row* row = NULL; keymap_get_command_row(Denemo.map, &row, idx); if(row) { GList* dirs = NULL; dirs = g_list_append(dirs, g_build_filename (PACKAGE_SOURCE_DIR, COMMANDS_DIR, "menus", row->menupath, NULL)); dirs = g_list_append(dirs, g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", row->menupath, NULL)); //dirs = g_list_append(dirs, g_build_filename (get_user_data_dir (TRUE), "download", COMMANDS_DIR, "menus", row->menupath, NULL)); dirs = g_list_append(dirs, g_build_filename (get_system_data_dir (), COMMANDS_DIR, "menus", row->menupath, NULL)); return find_dir_for_file (filename, dirs); } return NULL; } static int get_command_type(xmlChar* type) { return 0 == xmlStrcmp (type, COMMAND_TYPE_SCHEME) ? COMMAND_SCHEME : COMMAND_BUILTIN; } static gboolean check_script_exists (gchar *menupath, gchar *name) { gboolean ok; gchar *filename = g_strconcat (name, ".scm", NULL); gchar *filepath = g_build_filename (PACKAGE_SOURCE_DIR, COMMANDS_DIR, "menus", menupath, filename, NULL); if (!g_file_test (filepath, G_FILE_TEST_EXISTS)) { g_free (filepath); filepath = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", menupath, filename, NULL); if (!g_file_test (filepath, G_FILE_TEST_EXISTS)) { g_free (filepath); filepath = g_build_filename (get_system_data_dir (), COMMANDS_DIR, "menus", menupath, filename, NULL); if (!g_file_test (filepath, G_FILE_TEST_EXISTS)) { g_free (filepath); g_free (filename); return FALSE; } } } g_free (filename); g_free (filepath); return TRUE; } static void parseScripts (xmlDocPtr doc, xmlNodePtr cur, gchar * fallback) { command_row* command = NULL; xmlChar *type = NULL; xmlNodePtr head = cur; type = xmlGetProp(cur, COMMANDXML_TAG_TYPE); //first pass check script exists if(type && 0 == xmlStrcmp (type, COMMAND_TYPE_SCHEME)) { gchar* name=NULL, *menupath=NULL; for (cur = cur->xmlChildrenNode; cur; cur = cur->next) { if (0 == xmlStrcmp (cur->name, COMMANDXML_TAG_ACTION)) { if (cur->xmlChildrenNode == NULL) { g_warning ("Empty action node found in keymap file"); return; } else { name = (gchar*) xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); } } else if (0 == xmlStrcmp (cur->name, COMMANDXML_TAG_MENUPATH)) { menupath = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); } if (name && menupath) { if (check_script_exists (menupath, name)) break; else { g_warning ("Script %s%s.scm not found", menupath, name); return; } } } } cur = head; //this second pass finds the of this and does get_or_create_command() on it, then for scheme ones it runs get_command() for (cur = cur->xmlChildrenNode; cur; cur = cur->next) { if (0 == xmlStrcmp (cur->name, COMMANDXML_TAG_ACTION)) { if (cur->xmlChildrenNode == NULL) { g_warning ("Empty action node found in keymap file"); } else { // We allow multiple locations for a given action, all are added to the gtk_ui when this command is processed after the tooltip node. // This is very bad xml, as the action should have all the others as children, and not depend on the order.FIXME gchar* name = (gchar*) xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); command = get_or_create_command(name); //g_print ("in parseScripts called get_or_create_command row with action name %s\n", command->name); command->fallback = fallback; command->locations = NULL; if(type && 0 == xmlStrcmp (type, COMMAND_TYPE_SCHEME)) command->script_type = get_command_type(type); } } } //third pass gets the other fields in this and fills in command with them cur = head; for (cur = cur->xmlChildrenNode; cur; cur = cur->next) { if (0 == xmlStrcmp (cur->name, COMMANDXML_TAG_HIDDEN)) { command->hidden = TRUE; } else if (0 == xmlStrcmp (cur->name, COMMANDXML_TAG_MENUPATH)) { command->locations = g_list_append (command->locations, xmlNodeListGetString (doc, cur->xmlChildrenNode, 1)); } else if (0 == xmlStrcmp (cur->name, COMMANDXML_TAG_LABEL)) { command->label = _((gchar*) xmlNodeListGetString (doc, cur->xmlChildrenNode, 1)); } else if (0 == xmlStrcmp (cur->name, COMMANDXML_TAG_AFTER)) { command->after = (gchar*) xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); } else if (0 == xmlStrcmp (cur->name, COMMANDXML_TAG_TOOLTIP)) { command->tooltip = _((gchar*) xmlNodeListGetString (doc, cur->xmlChildrenNode, 1)); } } create_command(command);//g_print ("calling create_command for %s path %s\n", command->name, command->menupath); xmlFree(type); } static void parseBindings (xmlDocPtr doc, xmlNodePtr cur, keymap * the_keymap) { xmlChar *name = NULL; //keyval variables gint command_number = -1; guint keyval = 0; GdkModifierType state = 0; name = 0; //defend against corrupt files. for (cur = cur->xmlChildrenNode; cur != NULL; cur = cur->next) { if (0 == xmlStrcmp (cur->name, BINDINGXML_TAG_ACTION)) { if (cur->xmlChildrenNode == NULL) { g_warning ("Empty children node found in keymap file"); } else { name = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); if (name) show_action_of_name ((gchar*) name); } } else if (0 == xmlStrcmp (cur->name, COMMANDXML_TAG_HIDDEN)) { if (name) hide_action_of_name ((gchar*) name); } else if (0 == xmlStrcmp (cur->name, BINDINGXML_TAG_BIND)) { if (name) command_number = lookup_command_from_name (the_keymap, (gchar *) name); //g_print("Found bind node for action %s %d\n", name, command_number); if (cur->xmlChildrenNode == NULL) { g_warning ("Empty <\\bind> found in commandset file"); } else { xmlChar *tmp = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); if (name && tmp) { gchar *gtk_binding = translate_binding_dnm_to_gtk ((gchar *) tmp); //g_debug("gtk_binding is %s\n", gtk_binding); if (gtk_binding) { keyval = 0; if (Denemo.prefs.strictshortcuts) dnm_accelerator_parse (gtk_binding, &keyval, &state); //g_debug ("binding %s, keyval %d, state %d, Command Number %d", gtk_binding, keyval, state, command_number); { gchar *comma; comma = strtok (gtk_binding, ","); if (comma) //two key binding, remove any single keybinding { if (-1 != lookup_command_for_keybinding_name (the_keymap, comma)) remove_keybinding_from_name (the_keymap, comma); *(comma + strlen (comma)) = ','; } } if (command_number != -1) { if (keyval) add_keybinding_to_idx (the_keymap, keyval, state, command_number, POS_LAST); else add_named_binding_to_idx (the_keymap, (gchar*) tmp, command_number, POS_LAST); } g_free (gtk_binding); } else { g_warning ("No gtk equivalent for shortcut %s", tmp); } xmlFree (tmp); } } } } } static void parseCursorBinding (xmlDocPtr doc, xmlNodePtr cur) { gint state, cursor_num; xmlChar *tmp; for (cur = cur->xmlChildrenNode; cur != NULL; cur = cur->next) { if (0 == xmlStrcmp (cur->name, BINDINGXML_TAG_STATE)) { tmp = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); if (tmp) { sscanf ((char*) tmp, "%x", &state); // = atoi(tmp); xmlFree (tmp); } } else if (0 == xmlStrcmp (cur->name, BINDINGXML_TAG_CURSOR)) { tmp = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); if (tmp) { cursor_num = atoi ((char*) tmp); xmlFree (tmp); } assign_cursor (state, cursor_num); //g_debug("type is %s\n",g_type_name(G_TYPE_FROM_INSTANCE(Denemo.window->window))); // set_cursor_for(state); } } } static void parseCursors (xmlDocPtr doc, xmlNodePtr cur) { for (cur = cur->xmlChildrenNode; cur != NULL; cur = cur->next) { if (0 == xmlStrcmp (cur->name, BINDINGXML_TAG_CURSORBINDING)) { parseCursorBinding (doc, cur); } } } static xmlDocPtr docx; static int compare_nodes (xmlNodePtr *a, xmlNodePtr *b) { xmlNodePtr ptr1, ptr2; char *type1="", *menupath1="", *label1=""; char *type2="", *menupath2="", *label2=""; type1 = xmlGetProp( (*a), COMMANDXML_TAG_TYPE); // g_print ("Found type1 %s for %p vs %p\n", type1, *a, *b); if ((!type1) && (!type2)) return 0; if (!type1) return -1; if (!type2) return 1; for (ptr1 = (*a)->xmlChildrenNode;ptr1;ptr1 = ptr1->next) { if (0 == xmlStrcmp (ptr1->name, COMMANDXML_TAG_MENUPATH)) menupath1 = xmlNodeListGetString (docx, ptr1->xmlChildrenNode, 1); else if (0 == xmlStrcmp (ptr1->name, COMMANDXML_TAG_LABEL)) label1 = xmlNodeListGetString (docx, ptr1->xmlChildrenNode, 1); } type2 = xmlGetProp((*b), COMMANDXML_TAG_TYPE); for (ptr2 = (*b)->xmlChildrenNode;ptr2;ptr2 = ptr2->next) { if (0 == xmlStrcmp (ptr2->name, COMMANDXML_TAG_MENUPATH)) menupath2 = xmlNodeListGetString (docx, ptr2->xmlChildrenNode, 1); else if (0 == xmlStrcmp (ptr2->name, COMMANDXML_TAG_LABEL)) label2 = xmlNodeListGetString (docx, ptr2->xmlChildrenNode, 1); } //g_print (" |%s| |%s| |%s| vs |%s| |%s| |%s|\n", type1, menupath1, label1, type2, menupath2, label2); // if (!strcmp (type1, type2)) // { if (!strcmp (menupath1, menupath2)) return strcmp (label1, label2); else return strcmp (menupath1, menupath2); //the other way round they are in reverse, but come before menu items, this way they are in order but come after menu items!!! // } // else // { // if (!strcmp (type1, "scheme")) // return 1; // else // return -1; // } } static void parseCommands (xmlDocPtr doc, xmlNodePtr cur, keymap * the_keymap, gchar * menupath) { docx = doc; xmlNodePtr ncur; #ifdef DEVELOPER //HERE WE CAN qsort the ncur->children by the menupath tag they hold // make an array of them first. gint i=0, num_nodes; xmlNodePtr ptr=cur->xmlChildrenNode; while (ptr = ptr->next) i++; //g_print ("Number of entries %d\n", i); num_nodes = i; xmlNodePtr *array = g_malloc (sizeof (xmlNodePtr) * num_nodes); //g_print ("first %s %s\n", cur->xmlChildrenNode->name, xmlGetProp( (cur->xmlChildrenNode), COMMANDXML_TAG_TYPE)); for (i=0, ptr=cur->xmlChildrenNode;inext) array[i] = ptr; //g_print ("last written index %d\n", i-1); qsort (array, num_nodes, sizeof (xmlNodePtr), (__compar_fn_t)compare_nodes); //this won't work - you have to take each xmlNodePtr from the array and set its next field to the next. for (i=0, cur->xmlChildrenNode = array[0];inext = array[i+1]; array[num_nodes-1]->next = NULL; //g_print ("last read index %d\n", i-1); #endif //DEVELOPER //Parse commands first for (ncur = cur->xmlChildrenNode; ncur; ncur = ncur->next) { if ((0 == xmlStrcmp (ncur->name, COMMANDXML_TAG_ROW))) { parseScripts (doc, ncur, menupath); } } //Then parse bindings if(!Denemo.non_interactive){ for (ncur = cur->xmlChildrenNode; ncur; ncur = ncur->next) { if ((0 == xmlStrcmp (ncur->name, COMMANDXML_TAG_ROW))) { parseBindings (doc, ncur, the_keymap); } else if (0 == xmlStrcmp (ncur->name, COMMANDXML_TAG_CURSORS)) { parseCursors (doc, ncur); } } } } static void parseKeymap (xmlDocPtr doc, xmlNodePtr cur, keymap * the_keymap, gchar * menupath) { for (cur = cur->xmlChildrenNode; cur != NULL; cur = cur->next) { if (0 == xmlStrcmp (cur->name, COMMANDXML_TAG_MAP)) { parseCommands (doc, cur, the_keymap, menupath); } } } /* * load a command from filename. * if not scripted and merging with other commands, tell the user where the new command is. * If an action exists but has an empty script load the scheme script, if action is a new action leave script as empty string for loading on demand. * Create a widget for the action in a menupath found in filename or failing that deduced from * the path to filename itself (starting from actions/menus). * returns 0 on success * negative on failure */ gint load_xml_keymap (gchar * filename) { gint ret = -1; xmlDocPtr doc; xmlNodePtr rootElem; xmlKeepBlanksDefault (0); if (filename == NULL) return ret; if (!g_file_test (filename, G_FILE_TEST_EXISTS)) return ret; if (g_file_test (filename, G_FILE_TEST_IS_DIR)) { warningdialog (_("There is no support for loading whole folders of commands yet, sorry")); return ret; } doc = xmlParseFile (filename); gchar *menupath = extract_menupath (filename); if (doc == NULL) { g_debug ("Could not read XML file %s", filename); return ret; } rootElem = xmlDocGetRootElement (doc); if (rootElem == NULL) { g_warning ("Empty Document"); xmlFreeDoc (doc); return ret; } if (xmlStrcmp (rootElem->name, COMMANDXML_TAG_ROOT)) { g_warning ("Document has wrong type"); xmlFreeDoc (doc); return ret; } rootElem = rootElem->xmlChildrenNode; while (rootElem != NULL) { parseKeymap (doc, rootElem, Denemo.map, menupath); if (Denemo.last_merged_command) g_free (Denemo.last_merged_command); Denemo.last_merged_command = g_strdup (filename); if (menupath) execute_init_scripts (menupath); if(!Denemo.non_interactive) update_all_labels (Denemo.map); ret = 0; rootElem = rootElem->next; } xmlFreeDoc (doc); { //if this is a new-style .commands file, we need to load the keybindings separately gchar *name = g_strdup (filename); gchar *ext = remove_extension (name); if (ext && !strcmp (ext, "commands") && !Denemo.non_interactive) { gchar *newname = g_strdup_printf ("%s%s", name, ".shortcuts"); load_xml_keybindings (newname); g_free (newname); } g_free (name); } return ret; } gint load_xml_keybindings (gchar * filename) { gint ret = -1; xmlDocPtr doc; //xmlNsPtr ns; xmlNodePtr rootElem; if (filename == NULL) return ret; if (!g_file_test (filename, G_FILE_TEST_EXISTS)) return ret; doc = xmlParseFile (filename); if (doc == NULL) { g_debug ("Could not read XML file %s", filename); return ret; } rootElem = xmlDocGetRootElement (doc); if (rootElem == NULL) { g_warning ("Empty Document"); xmlFreeDoc (doc); return ret; } //g_debug ("RootElem %s\n", rootElem->name); if (xmlStrcmp (rootElem->name, COMMANDXML_TAG_ROOT)) { g_warning ("Document has wrong type"); xmlFreeDoc (doc); return ret; } rootElem = rootElem->xmlChildrenNode; while (rootElem != NULL) { if ((0 == xmlStrcmp (rootElem->name, COMMANDXML_TAG_MERGE))) { xmlNodePtr cur; for (cur = rootElem->xmlChildrenNode; cur != NULL; cur = cur->next) { if (0 == xmlStrcmp (cur->name, COMMANDXML_TAG_MAP)) { xmlNodePtr ncur; for (ncur = cur->xmlChildrenNode; ncur != NULL; ncur = ncur->next) { parseBindings (doc, ncur, Denemo.map); } ret = 0; } } update_all_labels (Denemo.map); } rootElem = rootElem->next; } xmlFreeDoc (doc); return ret; } static void write_xml_keybinding_info (gchar * kb_name, xmlNodePtr node) { gchar *dnm_binding = translate_binding_gtk_to_dnm (kb_name); g_debug ("binding is : (dnm) %s, (gtk) %s \n", dnm_binding, kb_name); if (!(Denemo.prefs.return_key_is_special && !strcmp (dnm_binding, N_("Return")))) xmlNewTextChild (node, NULL, (xmlChar *) "bind", (xmlChar *) dnm_binding); g_free (dnm_binding); } static void output_pointer_shortcut (gint * state, GdkCursor * cursor, xmlNodePtr parent) { gchar *statestr = g_strdup_printf ("%x", *state); #if GTK_MAJOR_VERSION==3 gint cursor_num = gdk_cursor_get_cursor_type (cursor); #else gint cursor_num = cursor->type; #endif gchar *numstr = g_strdup_printf ("%d", cursor_num); xmlNodePtr child = xmlNewTextChild (parent, NULL, (xmlChar *) "cursor-binding", NULL); xmlNewChild (child, NULL, (xmlChar*) "state", (xmlChar*) statestr); xmlNewChild (child, NULL, (xmlChar*) "cursor", (xmlChar*) numstr); g_free (statestr); g_free (numstr); } gint save_xml_keymap (gchar * filename) //_!!! create a DEV version here, saving C-code to create the actions at runtime with translatable tooltips. { keymap *the_keymap = Denemo.map; gint i, ret = -1; xmlDocPtr doc; xmlNodePtr parent, child; gchar* cfilename = NULL; const gchar *basename = NULL; gchar* dir = NULL; doc = xmlNewDoc ((xmlChar *) "1.0"); command_row* row; doc->xmlRootNode = parent = xmlNewDocNode (doc, NULL, COMMANDXML_TAG_ROOT, NULL); child = xmlNewChild (parent, NULL, COMMANDXML_TAG_MERGE, NULL); xmlNewTextChild (child, NULL, COMMANDXML_TAG_TITLE, (xmlChar *) "A Denemo Command Set"); xmlNewTextChild (child, NULL, COMMANDXML_TAG_AUTHOR, (xmlChar *) "AT, JRR, RTS"); parent = xmlNewChild (child, NULL, COMMANDXML_TAG_MAP, NULL); child = xmlNewChild (parent, NULL, COMMANDXML_TAG_CURSORS, NULL); g_hash_table_foreach (Denemo.map->cursors, (GHFunc) output_pointer_shortcut, child); for (i = 0; i < keymap_size (the_keymap); i++) { if (!keymap_get_command_row (the_keymap, &row, i)) continue; gpointer action = (gpointer) lookup_action_from_idx (the_keymap, i); if (!action) continue; gchar *name = (gchar *) lookup_name_from_idx (the_keymap, i); //g_print ("Storing %s at %d\n", name, i); basename = denemo_action_get_name (action); if(!is_action_name_builtin(name)) { // Check if the command metada file exists cfilename = g_strconcat (basename, XML_EXT, NULL); dir = find_command_dir(i, cfilename); g_free(cfilename); if(!dir) { g_warning("Unable to find metadata file for script %s", name); continue; } // Check if the command data file exists cfilename = g_strconcat (basename, SCM_EXT, NULL); dir = find_command_dir(i, cfilename); g_free(cfilename); if(!dir) { g_warning("Unable to find data file for script %s", name); continue; } } child = xmlNewChild (parent, NULL, COMMANDXML_TAG_ROW, NULL); xmlNewTextChild (child, NULL, COMMANDXML_TAG_ACTION, (xmlChar *) name); if(!is_action_name_builtin(name)) xmlNewProp(child, COMMANDXML_TAG_TYPE, COMMAND_TYPE_SCHEME); else xmlNewProp(child, COMMANDXML_TAG_TYPE, COMMAND_TYPE_BUILTIN); if (row->after) xmlNewTextChild (child, NULL, COMMANDXML_TAG_AFTER, (xmlChar *) row->after); if (row->deleted) //store as hidden in commands file xmlNewTextChild (child, NULL, COMMANDXML_TAG_HIDDEN, (xmlChar *) "true"); gchar *menupath; if (row->menupath) menupath = row->menupath; else menupath = get_menupath_for_name (name); if (menupath) xmlNewTextChild (child, NULL, COMMANDXML_TAG_MENUPATH, (xmlChar *) menupath); gchar *label = (gchar *) lookup_label_from_idx (the_keymap, i); if (label) xmlNewTextChild (child, NULL, COMMANDXML_TAG_LABEL, (xmlChar *) label); gchar *tooltip = (gchar *) lookup_tooltip_from_idx (the_keymap, i); if (tooltip) xmlNewTextChild (child, NULL, COMMANDXML_TAG_TOOLTIP, (xmlChar *) tooltip); } xmlSaveFormatFileEnc (filename, doc, XML_ENCODING, 1); xmlFreeDoc (doc); return ret; } gint save_xml_keybindings (gchar * filename) { keymap *the_keymap = Denemo.map; gint i, ret = -1; xmlDocPtr doc; //xmlNsPtr ns; xmlNodePtr parent, child; command_row *row; doc = xmlNewDoc ((xmlChar *) "1.0"); doc->xmlRootNode = parent = xmlNewDocNode (doc, NULL, COMMANDXML_TAG_ROOT, NULL); child = xmlNewChild (parent, NULL, COMMANDXML_TAG_MERGE, NULL); xmlNewTextChild (child, NULL, COMMANDXML_TAG_TITLE, (xmlChar *) "A Denemo Command Set"); xmlNewTextChild (child, NULL, COMMANDXML_TAG_AUTHOR, (xmlChar *) "AT, JRR, RTS"); parent = xmlNewChild (child, NULL, COMMANDXML_TAG_MAP, NULL); child = xmlNewChild (parent, NULL, COMMANDXML_TAG_CURSORS, NULL); g_hash_table_foreach (Denemo.map->cursors, (GHFunc) output_pointer_shortcut, child); for (i = 0; i < keymap_size (the_keymap); i++) { if (!keymap_get_command_row (the_keymap, &row, i)) continue; gpointer action = (gpointer) lookup_action_from_idx (the_keymap, i); if (row->deleted && !is_action_id_builtin(i)) continue; if (row->hidden || command_has_binding (i)) { child = xmlNewChild (parent, NULL, COMMANDXML_TAG_ROW, NULL); gchar *name = (gchar *) lookup_name_from_idx (the_keymap, i); //g_debug ("%s %s binding(s) \n", name, command_has_binding (i) ? "has" : "does not have"); xmlNewTextChild (child, NULL, COMMANDXML_TAG_ACTION, (xmlChar *) name); if (row->hidden) xmlNewTextChild (child, NULL, COMMANDXML_TAG_HIDDEN, (xmlChar *) "true"); g_list_foreach(row->bindings, (GFunc) write_xml_keybinding_info, child); } } xmlSaveFormatFileEnc (filename, doc, XML_ENCODING, 1); xmlFreeDoc (doc); return ret; } gint save_command_metadata (gchar * filename, gchar * myname, gchar * mylabel, gchar * mytooltip, gchar * after) { xmlDocPtr doc; xmlNodePtr parent, child; doc = xmlNewDoc ((xmlChar *) "1.0"); doc->xmlRootNode = parent = xmlNewDocNode (doc, NULL, COMMANDXML_TAG_ROOT, NULL); child = xmlNewChild (parent, NULL, COMMANDXML_TAG_MERGE, NULL); xmlNewTextChild (child, NULL, COMMANDXML_TAG_TITLE, (xmlChar *) "A Denemo Keymap"); xmlNewTextChild (child, NULL, COMMANDXML_TAG_AUTHOR, (xmlChar *) "AT, JRR, RTS"); parent = xmlNewChild (child, NULL, COMMANDXML_TAG_MAP, NULL); child = xmlNewChild (parent, NULL, COMMANDXML_TAG_ROW, NULL); xmlNewProp(child, COMMANDXML_TAG_TYPE, COMMAND_TYPE_SCHEME); xmlNewTextChild (child, NULL, COMMANDXML_TAG_ACTION, (xmlChar *) myname); if (after) xmlNewTextChild (child, NULL, COMMANDXML_TAG_AFTER, (xmlChar *) after); xmlNewTextChild (child, NULL, COMMANDXML_TAG_LABEL, (xmlChar *) mylabel); xmlNewTextChild (child, NULL, COMMANDXML_TAG_TOOLTIP, (xmlChar *) mytooltip); xmlSaveFormatFileEnc (filename, doc, XML_ENCODING, 1); xmlFreeDoc (doc); return 0; } gint save_command_data (gchar * filename, gchar * myscheme) { g_file_set_contents (filename, myscheme, -1, NULL); return 0; } gchar * load_command_data (gint idx) { gchar *basename = (gchar*) lookup_name_from_idx (Denemo.map, idx); gchar *filename = g_strconcat (basename, SCM_EXT, NULL); gchar* path = NULL; gchar* scheme = NULL; GError* error = NULL; // Locate the script gchar* dir = find_command_dir(idx, filename); if(!dir) { gchar* msg = g_strdup_printf(_("Unable to locate the script %s"), filename); warningdialog (msg); g_free(msg); g_free(filename); return NULL; } // Load the script path = g_build_filename(dir, filename, NULL); g_free(filename); if(!g_file_get_contents (path, &scheme, NULL, &error)) { gchar* msg = g_strdup_printf(_("Unable to load the script %s"), path); warningdialog (msg); g_free(msg); g_free(path); return NULL; } g_free(path); // Load the init script if there is one path = g_build_filename (dir, INIT_SCM, NULL); if (g_file_test (path, G_FILE_TEST_EXISTS)) //scm_c_primitive_load(path);Use scm_c_primitive_load together with scm_internal_catch and scm_handle_by_message_no_exit instead. eval_file_with_catch (path); g_free (path); g_free (dir); return scheme; } #ifdef DEVELOPER //code to take denemoui.xml and Default.commands from the cwd and output a new version of Default.commands with builtin commands' menupaths inserted GString *contents = NULL; static void insert_path (gchar *name, gchar *path) { if(!contents) { GError* error = NULL; gchar *temp; g_file_get_contents ("Default.commands", &temp, NULL, &error); if(error) exit (-1); contents = g_string_new (temp); //g_print ("contents %s\n", contents->str); } name = g_strconcat ("", name, "", NULL); gchar *found = g_strrstr (contents->str, name); if(found) { path = g_strconcat ("", path, "\n", NULL); contents = g_string_insert (contents, found - contents->str, path); } } static void parseMenuItems (xmlDocPtr doc, xmlNodePtr cur, gchar *folder) { for (cur = cur->xmlChildrenNode; cur != NULL; cur = cur->next) { if (0 == xmlStrcmp (cur->name, "menuitem")) { gchar *name = xmlGetProp (cur, "action"); insert_path (name, folder); } else if (0 == xmlStrcmp (cur->name, "menu")) { gchar *menufolder = g_strconcat (folder, "/", xmlGetProp (cur, "action"), NULL); parseMenuItems (doc, cur, menufolder); } } } gint attach_menupaths (void) { gchar * filename = "denemoui.xml"; gchar * commands = "Default.commands"; gint ret = -1; xmlDocPtr doc; //xmlNsPtr ns; xmlNodePtr rootElem; if (filename == NULL) return ret; if (!g_file_test (filename, G_FILE_TEST_EXISTS)) return ret; doc = xmlParseFile (filename); if (doc == NULL) { g_debug ("Could not read XML file %s", filename); return ret; } rootElem = xmlDocGetRootElement (doc); if (rootElem == NULL) { g_warning ("Empty Document"); xmlFreeDoc (doc); return ret; } //g_debug ("RootElem %s\n", rootElem->name); if (xmlStrcmp (rootElem->name, "ui")) { g_warning ("Document has wrong type"); xmlFreeDoc (doc); return ret; } xmlNodePtr cur; for (cur = rootElem->xmlChildrenNode; cur != NULL; cur = cur->next) { if ((0 == xmlStrcmp (cur->name, "menubar"))) { gchar *folder = xmlGetProp (cur, "name"); parseMenuItems (doc, cur, folder); } } g_print ("\n%s", contents->str); xmlFreeDoc (doc); return ret; } #endif denemo-2.2.0/src/core/PaxHeaders.19168/kbd-custom.c0000644000000000000000000000013213135434036016464 xustar0030 mtime=1500919838.346648472 30 atime=1500919919.766648472 30 ctime=1500919914.186648472 denemo-2.2.0/src/core/kbd-custom.c0000644000175000017500000021252113135434036020340 0ustar00jjbenhamjjbenham00000000000000/* kbd-custom.cpp * Low-level data structure routines and file I/O for customizing keyboard * configuration. * * For Denemo, the GNU graphical music notation package * (c) 2000-2005 * Olivier Vermersch, Matthew Hiller, Adam Tee */ #include #include #include #if GTK_MAJOR_VERSION==3 #include //FIXME Look for something more gtk3 like #endif #include #include #include #include #include #include #include #include #include "command/commandfuncs.h" #include "core/kbd-custom.h" #include "ui/kbd-interface.h" #include "command/keyresponses.h" #include "core/prefops.h" #include "command/select.h" #include "core/utils.h" #include "audio/audiointerface.h" //#include "audio/playback.h" #include "core/keyboard.h" #include "export/file.h" #include "core/view.h" #include "core/keymapio.h" #include "core/utils.h" #include "core/menusystem.h" #define DENEMO_TWO_KEY_SEPARATOR "," #if 0 //GTK_MINOR_VERSION < 10 //Hmm, should we define these as 0, so that they don't mask anything in gtk 2.8 #define GDK_SUPER_MASK ( 1 << 26) #define GDK_HYPER_MASK (1 << 27) #define GDK_META_MASK (1 << 28) #endif #define USER_KEYMAP "Default" /** * load_keymap_files: * @files: The files to test. String are freed. * * Takes a list of keymap and try to load them until one is loaded successfully. * * Returns: FALSE if no keymap has been loaded, TRUE either. **/ gboolean load_keymap_files(GList* files) { gboolean ret = FALSE; GList *cur = NULL; for(cur = files; cur; cur = cur->next) if(g_file_test(cur->data, G_FILE_TEST_EXISTS)) { if(!ret && load_xml_keymap(cur->data) == 0){ g_message("Loaded keymap %s", (char *) cur->data); ret = TRUE; } g_free(cur->data); } return ret; } gboolean is_action_id_builtin(gint id) { command_row *command; if (keymap_get_command_row(Denemo.map, &command, id)) return command->script_type == COMMAND_BUILTIN; return FALSE; } gboolean is_action_name_builtin(gchar* command_name) { gint* id = NULL; id = g_hash_table_lookup (Denemo.map->idx_from_name, command_name); if(!id) { g_debug("Requesting a invalid action name"); return TRUE; } return is_action_id_builtin(*id); } void command_row_init(command_row *command) { command->name = _("No name"); command->label = _("No label"); command->tooltip = _("No indication what this done beyond the name and label"); command->hidden = FALSE; command->deleted = FALSE; command->bindings = NULL; command->callback = NULL; command->type = KeymapEntry; command->script_type = COMMAND_BUILTIN; command->locations = NULL; command->after = NULL; command->fallback = NULL; command->menupath = NULL; command->scheme = NULL; } command_row* get_or_create_command(gchar* name){ if(!Denemo.map) g_error("Map is not instantiated"); command_row* command = NULL; gint* idx = (gint*) g_hash_table_lookup(Denemo.map->idx_from_name, name); if(idx) command = (command_row*) g_hash_table_lookup(Denemo.map->commands, idx); else{ command = (command_row*) g_malloc(sizeof(command_row)); command_row_init(command); command->name = name;/* idx = g_malloc(sizeof(gint)); *idx = g_hash_table_size(Denemo.map->commands); g_hash_table_insert(Denemo.map->commands, idx, command); g_hash_table_insert(Denemo.map->idx_from_name, name, idx); g_free(idx);*/ } return command; } void dnm_clean_event (GdkEventKey * event) { if (!Denemo.prefs.strictshortcuts) { guint ret; //g_debug("Called %s\n", gdk_keyval_name(event->keyval)); gdk_keymap_translate_keyboard_state (gdk_keymap_get_default (), event->hardware_keycode, GDK_MOD2_MASK /*NumLock forcing numeric keypad to give numbers */ , 0 /*group 0 */ , &ret, NULL, NULL, NULL); if (ret >= 'A' && ret <= 'G') ret += ('a' - 'A'); event->keyval = ret; //g_debug("Changed to %s\n", gdk_keyval_name(event->keyval)); } } /* Returns the state of the event after removing the modifiers consumed by the * system and unwanted modifiers. Use this before doing anything based on the * (keyval, state) pair in an event handler. */ guint dnm_sanitize_key_state (GdkEventKey * event) { guint ret = event->state; if (!Denemo.prefs.strictshortcuts) { return ret; } #if 1 GdkModifierType consumed; /* We want to ignore irrelevant modifiers like ScrollLock */ gdk_keymap_translate_keyboard_state (gdk_keymap_get_default (), event->hardware_keycode, event->state, event->group, NULL, NULL, NULL, &consumed); /* removing consumed modifiers from ret */ ret &= ~consumed; /* removing other unwanted modifiers from event->state */ ret &= (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK | GDK_MOD2_MASK | GDK_MOD3_MASK | GDK_MOD4_MASK | GDK_MOD5_MASK /* these make numlock required to be off for example */ ); #endif return ret; } /* Returns the state of the event after removing the modifiers consumed by the * system and even more unwanted modifiers. Use this if sanitize is insufficient. */ guint dnm_hyper_sanitize_key_state (GdkEventKey * event) { guint ret = event->state; #if 1 GdkModifierType consumed; /* We want to ignore irrelevant modifiers like ScrollLock */ gdk_keymap_translate_keyboard_state (gdk_keymap_get_default (), event->hardware_keycode, event->state, event->group, NULL, NULL, NULL, &consumed); /* removing consumed modifiers from ret */ ret &= ~consumed; /* removing other unwanted modifiers from event->state */ ret &= (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK); #endif return ret; } /* Returns the state of the event as for hyper_sanitize * additionally undoes the effect of CapsLock on keyval when Shift is not pressed. * note that event->keycode & keystring are not altered, leaving event inconsistent. * this could conceivably become a problem in other developments. * Use this if hyper sanitize is insufficient. */ guint dnm_meta_sanitize_key_state (GdkEventKey * event) { guint ret = event->state; #if 1 if (ret & GDK_LOCK_MASK) { if (!(ret & GDK_SHIFT_MASK)) event->keyval += ('a' - 'A'); } /* removing everything other than control shift and alt modifiers from event->state */ ret &= (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK); #endif return ret; } /* * Returns True if the key event is just a modifier key, False otherwise * TODO look for a gdk function doing that properly */ gboolean isModifier (GdkEventKey * event) { /* This check for modifier values on the event may not be right, if the contents of gdkkeysyms.h are OS-dependent. I don't believe they are. */ return (event->keyval >= GDK_Shift_L && event->keyval <= GDK_Hyper_R) || (event->keyval == GDK_Num_Lock); } static inline gboolean is_alt (const gchar * string) { return ((string[0] == '<') && (string[1] == 'a' || string[1] == 'A') && (string[2] == 'l' || string[2] == 'L') && (string[3] == 't' || string[3] == 'T') && (string[4] == '>')); } static inline gboolean is_ctl (const gchar * string) { return ((string[0] == '<') && (string[1] == 'c' || string[1] == 'C') && (string[2] == 't' || string[2] == 'T') && (string[3] == 'l' || string[3] == 'L') && (string[4] == '>')); } static inline gboolean is_modx (const gchar * string) { return ((string[0] == '<') && (string[1] == 'm' || string[1] == 'M') && (string[2] == 'o' || string[2] == 'O') && (string[3] == 'd' || string[3] == 'D') && (string[4] >= '1' && string[4] <= '5') && (string[5] == '>')); } static inline gboolean is_ctrl (const gchar * string) { return ((string[0] == '<') && (string[1] == 'c' || string[1] == 'C') && (string[2] == 't' || string[2] == 'T') && (string[3] == 'r' || string[3] == 'R') && (string[4] == 'l' || string[4] == 'L') && (string[5] == '>')); } static inline gboolean is_shft (const gchar * string) { return ((string[0] == '<') && (string[1] == 's' || string[1] == 'S') && (string[2] == 'h' || string[2] == 'H') && (string[3] == 'f' || string[3] == 'F') && (string[4] == 't' || string[4] == 'T') && (string[5] == '>')); } static inline gboolean is_shift (const gchar * string) { return ((string[0] == '<') && (string[1] == 's' || string[1] == 'S') && (string[2] == 'h' || string[2] == 'H') && (string[3] == 'i' || string[3] == 'I') && (string[4] == 'f' || string[4] == 'F') && (string[5] == 't' || string[5] == 'T') && (string[6] == '>')); } static inline gboolean is_control (const gchar * string) { return ((string[0] == '<') && (string[1] == 'c' || string[1] == 'C') && (string[2] == 'o' || string[2] == 'O') && (string[3] == 'n' || string[3] == 'N') && (string[4] == 't' || string[4] == 'T') && (string[5] == 'r' || string[5] == 'R') && (string[6] == 'o' || string[6] == 'O') && (string[7] == 'l' || string[7] == 'L') && (string[8] == '>')); } static inline gboolean is_release (const gchar * string) { return ((string[0] == '<') && (string[1] == 'r' || string[1] == 'R') && (string[2] == 'e' || string[2] == 'E') && (string[3] == 'l' || string[3] == 'L') && (string[4] == 'e' || string[4] == 'E') && (string[5] == 'a' || string[5] == 'A') && (string[6] == 's' || string[6] == 'S') && (string[7] == 'e' || string[7] == 'E') && (string[8] == '>')); } static inline gboolean is_meta (const gchar * string) { return ((string[0] == '<') && (string[1] == 'm' || string[1] == 'M') && (string[2] == 'e' || string[2] == 'E') && (string[3] == 't' || string[3] == 'T') && (string[4] == 'a' || string[4] == 'A') && (string[5] == '>')); } static inline gboolean is_super (const gchar * string) { return ((string[0] == '<') && (string[1] == 's' || string[1] == 'S') && (string[2] == 'u' || string[2] == 'U') && (string[3] == 'p' || string[3] == 'P') && (string[4] == 'e' || string[4] == 'E') && (string[5] == 'r' || string[5] == 'R') && (string[6] == '>')); } static inline gboolean is_hyper (const gchar * string) { return ((string[0] == '<') && (string[1] == 'h' || string[1] == 'H') && (string[2] == 'y' || string[2] == 'Y') && (string[3] == 'p' || string[3] == 'P') && (string[4] == 'e' || string[4] == 'E') && (string[5] == 'r' || string[5] == 'R') && (string[6] == '>')); } void dnm_accelerator_parse (const gchar * accelerator, guint * accelerator_key, GdkModifierType * accelerator_mods) { guint keyval; GdkModifierType mods; gint len; if (accelerator_key) *accelerator_key = 0; if (accelerator_mods) *accelerator_mods = 0; g_return_if_fail (accelerator != NULL); keyval = 0; mods = 0; len = strlen (accelerator); while (len) { if (*accelerator == '<') { if (len >= 9 && is_release (accelerator)) { accelerator += 9; len -= 9; mods |= GDK_RELEASE_MASK; } else if (len >= 9 && is_control (accelerator)) { accelerator += 9; len -= 9; mods |= GDK_CONTROL_MASK; } else if (len >= 7 && is_shift (accelerator)) { accelerator += 7; len -= 7; mods |= GDK_SHIFT_MASK; } else if (len >= 6 && is_shft (accelerator)) { accelerator += 6; len -= 6; mods |= GDK_SHIFT_MASK; } else if (len >= 6 && is_ctrl (accelerator)) { accelerator += 6; len -= 6; mods |= GDK_CONTROL_MASK; } else if (len >= 6 && is_modx (accelerator)) { static const guint mod_vals[] = { GDK_MOD1_MASK, GDK_MOD2_MASK, GDK_MOD3_MASK, GDK_MOD4_MASK, GDK_MOD5_MASK }; len -= 6; accelerator += 4; mods |= mod_vals[*accelerator - '1']; accelerator += 2; } else if (len >= 5 && is_ctl (accelerator)) { accelerator += 5; len -= 5; mods |= GDK_CONTROL_MASK; } else if (len >= 5 && is_alt (accelerator)) { accelerator += 5; len -= 5; mods |= GDK_MOD1_MASK; } else if (len >= 6 && is_meta (accelerator)) { accelerator += 6; len -= 6; mods |= GDK_META_MASK; } else if (len >= 7 && is_hyper (accelerator)) { accelerator += 7; len -= 7; mods |= GDK_HYPER_MASK; } else if (len >= 7 && is_super (accelerator)) { accelerator += 7; len -= 7; mods |= GDK_SUPER_MASK; } else { gchar last_ch; last_ch = *accelerator; while (last_ch && last_ch != '>') { last_ch = *accelerator; accelerator += 1; len -= 1; } } } else { keyval = gdk_keyval_from_name (accelerator); accelerator += len; len = 0; } } if (accelerator_key) //The line we modify, so that uppercase letter are processed as we want // *accelerator_key = gdk_keyval_to_lower (keyval); *accelerator_key = keyval; if (accelerator_mods) *accelerator_mods = mods; } //#include "gdkdisplay-x11.h" //gboolean gdk_keymap_get_caps_lock_state (GdkKeymapX11 *keymap_x11) { //return keymap_x11->caps_lock_state; //} // if((gdk_keymap_get_caps_lock_state (gdk_keymap_get_default())!=0) != ((accelerator_mods&GDK_SHIFT_MASK)!=0)) gchar * dnm_accelerator_name (guint accelerator_key, GdkModifierType accelerator_mods) { if (!Denemo.prefs.strictshortcuts) { GString *name; name = g_string_new (gdk_keyval_name (accelerator_key)); if (name->len > 3 && (*name->str == 'K') && (*(name->str + 1) == 'P') && (*(name->str + 2) == '_')) { if((*(name->str + 3) !='7') && (*(name->str + 3) !='8') && (*(name->str + 3) !='9')) g_string_erase (name, 0, 3); //force numeric keypad KP_ names to normal except for 7 8 9 which are not needed for duration entry } //g_debug("label %s\nname %s\n", gtk_accelerator_get_label(accelerator_key, 0), gdk_keyval_name(accelerator_key)); //g_debug("mods were %x\n", accelerator_mods); #if 0 //do not let caps lock affect shift of backspace etc if ((accelerator_key == GDK_BackSpace) || (accelerator_key == GDK_Left) || (accelerator_key == GDK_Right) || (accelerator_key == GDK_Up) || (accelerator_key == GDK_Down) || (accelerator_key == GDK_Page_Up) || (accelerator_key == GDK_Page_Down) || (accelerator_key == GDK_Home) || (accelerator_key == GDK_End) || (accelerator_key == GDK_Insert) || (accelerator_key == GDK_Delete) || (accelerator_key == GDK_KP_Decimal) || (accelerator_key == GDK_period)) accelerator_mods &= ~GDK_LOCK_MASK; #else if (!((name->len == 1) && (*name->str >= 'a') && (*name->str <= 'z'))) if (!((name->len == 1) && (*name->str >= '0') && (*name->str <= '9'))) accelerator_mods &= ~GDK_LOCK_MASK; #endif //g_debug("mods %x\n", accelerator_mods); // if (accelerator_mods&GDK_SHIFT_MASK) // if((name->len==1) && (*name->str>='A') && (*name->str<='Z')) // *name->str += ('a'-'A'); if (!((name->len == 1) && (*name->str >= 'a') && (*name->str <= 'z'))) if (((accelerator_mods & GDK_LOCK_MASK) != 0) != ((accelerator_mods & GDK_SHIFT_MASK) != 0)) g_string_prepend (name, "Shft+"); if (((accelerator_mods & GDK_LOCK_MASK) != 0) != ((accelerator_mods & GDK_SHIFT_MASK) != 0)) { if ((name->len == 1) && (*name->str >= 'a') && (*name->str <= 'z')) *name->str -= ('a' - 'A'); } if ((accelerator_mods & GDK_CONTROL_MASK)) g_string_prepend (name, "Ctrl+"); if ((accelerator_mods & GDK_MOD1_MASK)) g_string_prepend (name, "Alt+"); if ((accelerator_mods & GDK_HYPER_MASK)) g_string_prepend (name, "Hypr+"); if ((accelerator_mods & GDK_MOD4_MASK)) g_string_prepend (name, "Mod4+"); if ((accelerator_mods & GDK_MOD5_MASK)) g_string_prepend (name, "Mod5+"); return g_string_free (name, FALSE); } static const gchar text_release[] = ""; static const gchar text_shift[] = ""; static const gchar text_control[] = ""; static const gchar text_mod1[] = ""; static const gchar text_mod2[] = ""; static const gchar text_mod3[] = ""; static const gchar text_mod4[] = ""; static const gchar text_mod5[] = ""; static const gchar text_meta[] = ""; static const gchar text_super[] = ""; static const gchar text_hyper[] = ""; guint l; gchar *keyval_name; gchar *accelerator; accelerator_mods &= GDK_MODIFIER_MASK; //The line we modify, so that uppercase letter are processed as we want //keyval_name = gdk_keyval_name (gdk_keyval_to_lower (accelerator_key)); keyval_name = gdk_keyval_name (accelerator_key); if (!keyval_name) keyval_name = ""; l = 0; if (accelerator_mods & GDK_RELEASE_MASK) l += sizeof (text_release) - 1; if (accelerator_mods & GDK_SHIFT_MASK) l += sizeof (text_shift) - 1; if (accelerator_mods & GDK_CONTROL_MASK) l += sizeof (text_control) - 1; if (accelerator_mods & GDK_MOD1_MASK) l += sizeof (text_mod1) - 1; if (accelerator_mods & GDK_MOD2_MASK) l += sizeof (text_mod2) - 1; if (accelerator_mods & GDK_MOD3_MASK) l += sizeof (text_mod3) - 1; if (accelerator_mods & GDK_MOD4_MASK) l += sizeof (text_mod4) - 1; if (accelerator_mods & GDK_MOD5_MASK) l += sizeof (text_mod5) - 1; l += strlen (keyval_name); if (accelerator_mods & GDK_META_MASK) l += sizeof (text_meta) - 1; if (accelerator_mods & GDK_HYPER_MASK) l += sizeof (text_hyper) - 1; if (accelerator_mods & GDK_SUPER_MASK) l += sizeof (text_super) - 1; accelerator = g_new (gchar, l + 1); l = 0; accelerator[l] = 0; if (accelerator_mods & GDK_RELEASE_MASK) { strcpy (accelerator + l, text_release); l += sizeof (text_release) - 1; } if (accelerator_mods & GDK_SHIFT_MASK) { strcpy (accelerator + l, text_shift); l += sizeof (text_shift) - 1; } if (accelerator_mods & GDK_CONTROL_MASK) { strcpy (accelerator + l, text_control); l += sizeof (text_control) - 1; } if (accelerator_mods & GDK_MOD1_MASK) { strcpy (accelerator + l, text_mod1); l += sizeof (text_mod1) - 1; } if (accelerator_mods & GDK_MOD2_MASK) { strcpy (accelerator + l, text_mod2); l += sizeof (text_mod2) - 1; } if (accelerator_mods & GDK_MOD3_MASK) { strcpy (accelerator + l, text_mod3); l += sizeof (text_mod3) - 1; } if (accelerator_mods & GDK_MOD4_MASK) { strcpy (accelerator + l, text_mod4); l += sizeof (text_mod4) - 1; } if (accelerator_mods & GDK_MOD5_MASK) { strcpy (accelerator + l, text_mod5); l += sizeof (text_mod5) - 1; } if (accelerator_mods & GDK_META_MASK) { strcpy (accelerator + l, text_meta); l += sizeof (text_meta) - 1; } if (accelerator_mods & GDK_HYPER_MASK) { strcpy (accelerator + l, text_hyper); l += sizeof (text_hyper) - 1; } if (accelerator_mods & GDK_SUPER_MASK) { strcpy (accelerator + l, text_super); l += sizeof (text_super) - 1; } strcpy (accelerator + l, keyval_name); return accelerator; } /** * Warns user that there was no keymap available to load * */ /* UNUSED static void no_map_dialog () { GtkWidget *dialog; dialog = gtk_message_dialog_new (NULL, (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, _("Keyboard shortcuts could not be found")); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("No commands file was found in either" " the systemwide Denemo directory" " or in .denemo directory within your " "home directory. This is an installation error. You can use" " Edit/Command Management to construct a custom " "interface or to load one from" " a commandset file.")); gtk_widget_show_all (dialog); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } */ /* * Allocates a keymap. * action_group_name is the name of the group of actions for the commands * of the keymap. */ keymap * allocate_keymap (void) { keymap *the_keymap = (keymap *) g_malloc (sizeof (keymap)); the_keymap->commands = g_hash_table_new (g_int_hash, g_int_equal); //empty index reference the_keymap->idx_from_name = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); the_keymap->idx_from_keystring = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); the_keymap->continuations_table = g_hash_table_new (g_str_hash, g_str_equal); the_keymap->cursors = g_hash_table_new (g_int_hash, g_int_equal); //g_debug("Created hash table %p\n", the_keymap->cursors); return the_keymap; } void free_keymap (keymap * the_keymap) { g_object_unref (the_keymap->commands); g_hash_table_destroy (the_keymap->idx_from_name); g_hash_table_destroy (the_keymap->idx_from_keystring); g_hash_table_destroy (the_keymap->continuations_table); } void register_command_row(keymap* the_keymap, command_row* command){ gint *idx = g_malloc(sizeof(gint)); *idx = g_hash_table_size (the_keymap->commands);//g_print ("Adding %s number %d\n", command->name, *idx); //This code is only relevant to developers, to check that no action //entry masks another. Users cannot add actions. THIS IS CHANGING NOW... if (g_hash_table_lookup (the_keymap->commands, idx) != NULL) g_debug ("Command %s is inserted more than once...\n", command->name); else{ //insert the information in the hashmap g_hash_table_insert (the_keymap->commands, idx, command); //insert the command name in the index reference g_hash_table_insert (the_keymap->idx_from_name, g_strdup (command->name), idx); // g_print ("Inserting command %i: %s %s %s %p", *idx, command->name, command->label, command->tooltip, command->callback, command->menupath); } } //False if command_id is an invalid index or keymap is null, true otherwise //TODO keymap should not be NULL gboolean keymap_get_command_row (keymap * the_keymap, command_row ** row, guint command_id) { if (!the_keymap) { warningdialog (_("This should not happen...")); return FALSE; } if(g_hash_table_lookup (the_keymap->commands, &command_id) == NULL){ g_debug("Command not found"); return FALSE; } if(!row){ g_debug("Empty row transmitted"); return FALSE; } *row = g_hash_table_lookup (the_keymap->commands, &command_id); return TRUE; } static void keymap_clear_bindings_in_row (gpointer key, gpointer value, gpointer data) { command_row *command = (command_row*) value; g_list_free (command->bindings); } static void keymap_collect_bindings_in_row (gpointer key, gpointer value, GList **data) { GList *g; command_row *command = (command_row*) value; for (g = command->bindings; g; g=g->next) { *data = g_list_prepend (*data, g_strdup_printf("\"%s\":\n %s\n\"%s\"\n\n", (char *) g->data, (char *) command->label, (char *) command->tooltip)); } } static void catname (gchar * name, GString * str, gchar * separator) { if (str) g_string_append_printf (str, "%s%s", name, separator); } #if 0 static void newlinename (gchar * name, GString * str) { catname (name, str, "\n"); } #endif static void listname (gchar * name, GString * str) { catname (name, str, " "); } /** * Clears the keymap of all entries. Leaves the content of commands and * idx_from_name untouched, removes the content of bindings and * idx_from_keystring * */ void keymap_clear_bindings (keymap * the_keymap) { g_hash_table_foreach (the_keymap->commands, keymap_clear_bindings_in_row, NULL); g_hash_table_remove_all (the_keymap->idx_from_keystring); } GString *keymap_get_bindings (keymap * the_keymap) { GString *ret = g_string_new ( _("List of all current command shortcuts\nThe name of the shortcut key is given first \nE.g. \"0\" is the shortcut name of the number key for the number zero.\n(a \",\" separates the two names if is a two-key shortcut)\nThen the label as it appears in the menu\nand finally the tooltip.\nYou can search the tooltip in the Command Center to locate the command. See View->Command Center.\nThis list is in alphabetical order by name.\n----------------\n")); GList *g = NULL; g_hash_table_foreach (the_keymap->commands, (GHFunc)keymap_collect_bindings_in_row, (gpointer)&g); g = g_list_sort (g, (GCompareFunc)strcmp); GList *tofree = g; for(;g;g=g->next) { g_string_append_printf (ret, "%s%s\n----------------\n", _("Shortcut key name: "), (char *) g->data); g_free(g->data); } g_list_free(tofree); g_string_append (ret, _("\nEnd of shortcuts\n")); return ret; } /* * Returns the number of commands in the keymap */ guint keymap_size (keymap * the_keymap) { return g_hash_table_size (the_keymap->commands); } /* returns TRUE if command has at least one binding */ gboolean command_has_binding (guint command_id) { command_row* row; if (keymap_get_command_row (Denemo.map, &row, command_id)) return row->bindings != NULL; return FALSE; } /** * Search through keybindings for a specific binding * return the command idx for the command that is bound to the keyval,state pair, or -1 if none */ gint lookup_command_for_keybinding (keymap * the_keymap, gint keyval, GdkModifierType state) { gint res; gchar *name = dnm_accelerator_name (keyval, state); res = lookup_command_for_keybinding_name (the_keymap, name); g_free (name); return res; } /* weaker lookup of keybinding */ gint lookup_command_for_keyevent (GdkEventKey * event) { keymap *the_keymap = Denemo.map; gint command_id = lookup_command_for_keybinding (the_keymap, event->keyval, dnm_sanitize_key_state (event)); #if 0 if (!Denemo.prefs.strictshortcuts) { // lookup_command_for_keybinding (the_keymap, event->keyval, // dnm_sanitize_key_state(event)); if (command_id == -1) command_id = lookup_command_for_keybinding (the_keymap, event->keyval, dnm_hyper_sanitize_key_state (event)); if (command_id == -1) command_id = lookup_command_for_keybinding (the_keymap, event->keyval, dnm_meta_sanitize_key_state (event)); } #endif return command_id; } /* looks up the command idx for the binding of name binding_name */ gint lookup_command_for_keybinding_name (keymap * the_keymap, const gchar * binding_name) { gpointer *value = g_hash_table_lookup (the_keymap->idx_from_keystring, binding_name); if (value) return *((guint *) value); else return -1; } /** * get_scheme_from_idx: * @idx: The command id. * * Returns null if idx is not valid. * Loads the scheme code if it is not yet loaded, and caches it. * Finally returns the scheme code, or NULL if the command is builtin. **/ gchar* get_scheme_from_idx (gint idx){ command_row* row = g_hash_table_lookup(Denemo.map->commands, &idx); if(!row) return NULL; if(row->scheme) return row->scheme; row->scheme = load_command_data (idx); return row->scheme; } /** * Look up for a command index. * * @param keymap * @param name */ gint lookup_command_from_name (keymap * keymap, const gchar * command_name) { gpointer value = g_hash_table_lookup (keymap->idx_from_name, command_name); if (value) return *(guint *) value; else return -1; } //do not free the result //returns NULL if not found const DenemoAction * lookup_action_from_idx (keymap * keymap, gint command_id) { if (command_id == -1) return NULL; command_row* row; if (!keymap_get_command_row (keymap, &row, command_id)) return NULL; DenemoAction* action = denemo_menusystem_get_action ( row->name); return action; } //do not free the result //returns NULL if not found gpointer lookup_callback_from_idx (keymap * keymap, gint command_id) { if (command_id == -1) return NULL; command_row *row; if (!keymap_get_command_row (keymap, &row, command_id)) return NULL; return row->callback; } //do not free the result //returns NULL if not found const gchar * lookup_name_from_idx (keymap * keymap, gint command_id) { const gchar *res = NULL; if (command_id == -1) return NULL; command_row *row; if (!keymap_get_command_row (keymap, &row, command_id)) return NULL; return row->name; } //do not free the result //returns NULL if not found const gchar * lookup_tooltip_from_idx (keymap * keymap, gint command_id) { const gchar *res = NULL; if (command_id == -1) return NULL; command_row *row; if (!keymap_get_command_row (keymap, &row, command_id)) return NULL; res = row->tooltip; //FIXME label is a property g_object_get_prop... return res; } gboolean lookup_hidden_from_idx (keymap * keymap, guint command_id) { gboolean res = FALSE; command_row *row; if (!keymap_get_command_row (keymap, &row, command_id)) return FALSE; res = row->hidden; //FIXME label is a property g_object_get_prop... return res; } gboolean lookup_deleted_from_idx (keymap * keymap, guint command_id) { gboolean res = FALSE; command_row *row; if (!keymap_get_command_row (keymap, &row, command_id)) return 0; res = row->deleted; //FIXME label is a property g_object_get_prop... return res; } //do not free the result //returns NULL if not found const gchar * lookup_label_from_idx (keymap * keymap, gint command_id) { const gchar *res = NULL; if (command_id == -1) return NULL; command_row *row; if (!keymap_get_command_row (keymap, &row, command_id)) return NULL; res = row->label; //FIXME label is a property g_object_get_prop... return res; } const gchar * lookup_menu_path_from_idx (keymap * keymap, gint command_id) { command_row* row = NULL; if (command_id == -1) return NULL; keymap_get_command_row(Denemo.map, &row, command_id); if(row) return row->menupath; g_critical ("No row for command id %d\n", command_id); return NULL; } //returns the accel, "" if no accel defined. free the result //the accel is the first keybinding of the list #if 0 static gchar * keymap_get_accel (keymap * the_keymap, guint command_id) { command_row* row; GtkTreeModel *model_bind; GtkTreeIter iter; gchar *res; if (!keymap_get_command_row (the_keymap, &row, command_id)) return g_strdup (""); model_bind = GTK_TREE_MODEL (row->bindings); if (!gtk_tree_model_get_iter_first (model_bind, &iter)) { return g_strdup (""); } gtk_tree_model_get (model_bind, &iter, 0, &res, -1); return res; } #endif /* Updates the label of the widgets proxying an action with the bindings * present in the keymap. */ void update_accel_labels (keymap * the_keymap, guint command_id) { if(Denemo.non_interactive) return; DenemoAction *action; command_row *row = NULL; //Getting the accel const gchar *command_name = lookup_name_from_idx (the_keymap, command_id); if(!command_name) g_debug ("Could not find command %i", command_id); GString *str = g_string_new (""); //TODO don't use all the bindings as accels if (keymap_get_command_row (the_keymap, &row, command_id) && (row != NULL)) g_list_foreach(row->bindings, (GFunc) listname, str); if (row == NULL) { g_debug ("No row for command id %d", command_id); return; } //Prepare the new label const gchar *base; //FIXME use translate_dnm_to_gtk base = lookup_label_from_idx (the_keymap, command_id); #if 0 //FIXME here generate a locale dependent name using gtk_accelerator_get_label after back-tracking to find the keyval from the binding (stripping off the prefixes we have added etc). This will be needed for language translation (i.e. _N() should be applied to the gdk_keyval_name() but the label we are writing here should be better with a translated indication of the keybinding (Left becomes Links in German etc). // we have to store an invariant gdk name, so we should look it up here to get the keyval and from that derive a locale specific name to use on the label. In any case the following transformation is redundant gchar *c; for (c = str->str; *c; c++) { if (*c == '<') *c = ' '; if (*c == '>') *c = '-'; } #endif gchar *escape_base = g_markup_escape_text(base, -1); gchar *markup; if(str->len) markup = g_strdup_printf ("%s %s", escape_base, str->str); else markup = g_strdup (escape_base); g_free (escape_base); //For all widgets proxying the action, change the label action = denemo_menusystem_get_action ( row->name); GList *h = action?denemo_action_get_proxies (action):NULL; for (; h; h = h->next) { GtkWidget *widget = h->data; GtkWidget *child = (GtkWidget *) gtk_bin_get_child (GTK_BIN (widget)); if (GTK_IS_BUTTON (child)) { child = gtk_bin_get_child (GTK_BIN (child)); } //FIXME others?? toolitem ... if (GTK_IS_LABEL (child)) { gtk_label_set_markup (GTK_LABEL (child), markup); } } //free allocated strings g_free (markup); g_string_free (str, TRUE); } void update_all_labels (keymap * the_keymap) { gint command_id, num = keymap_size (the_keymap); for (command_id = 0; command_id < num; command_id++) update_accel_labels (the_keymap, command_id); } //if binding is a two-key binding, update a table of such bindings, adding is add is true else removing static void update_continuations_table (keymap * the_keymap, const gchar * binding, gboolean add) { gchar *second = g_strrstr (binding, DENEMO_TWO_KEY_SEPARATOR); if (!second) return; gchar *shortcut = g_strdup (binding); *(shortcut + (second - binding)) = 0; // split into two strings at the separator gchar *value = shortcut + (second - binding) + 1; //g_debug("Two key shortcuts %s %s\n", shortcut, value); if (add) { GList *thelist = g_hash_table_lookup (the_keymap->continuations_table, shortcut); thelist = g_list_append (thelist, value); g_hash_table_insert (the_keymap->continuations_table, shortcut, thelist); } else { GList *thelist = g_hash_table_lookup (the_keymap->continuations_table, shortcut); if (thelist == NULL) g_warning ("Missing shortcut in table"); else { GList *g; for (g = thelist; g; g = g->next) { if (!strcmp (value, (gchar *) g->data)) { thelist = g_list_delete_link (thelist, g); g_hash_table_insert (the_keymap->continuations_table, shortcut, thelist); //unlikely you can get the memory back... g_free(shortcut); } } } } } static void remove_keybinding_bindings_helper (keymap * the_keymap, guint command_id, const gchar * binding) { gchar *cur_binding; command_row *row; GtkTreeIter iter; if (!keymap_get_command_row (the_keymap, &row, command_id) || !row->bindings) return; GList * pos = g_list_find_custom(row->bindings, binding, (GCompareFunc) g_strcmp0); if (pos) { row->bindings = g_list_delete_link(row->bindings, pos); update_continuations_table (the_keymap, binding, FALSE); } } void remove_keybinding (keymap * the_keymap, gint keyval, GdkModifierType state) { gchar *name = dnm_accelerator_name (keyval, state); remove_keybinding_from_name (the_keymap, name); g_free (name); } void remove_keybinding_from_name (keymap * the_keymap, const gchar * binding) { gint *value; value = (gint *) g_hash_table_lookup (the_keymap->idx_from_keystring, binding); if (value) { remove_keybinding_bindings_helper (the_keymap, *value, binding); update_accel_labels (the_keymap, *value); g_hash_table_remove (the_keymap->idx_from_keystring, binding); } } /* * Insert a binding to the bindings of command_id. * pos indicates where in the list of bindings to insert this binding. */ static void add_keybinding_bindings_helper (keymap * the_keymap, guint command_id, const gchar * binding, ListPosition pos) { command_row *row; if (!keymap_get_command_row (the_keymap, &row, command_id)) return; if (pos == POS_FIRST) row->bindings = g_list_prepend(row->bindings, g_strdup(binding)); else if (pos == POS_LAST) row->bindings = g_list_append(row->bindings, g_strdup(binding)); else return; update_continuations_table (the_keymap, binding, TRUE); } gint add_keybinding_to_named_command (keymap * the_keymap, gint keyval, GdkModifierType state, const gchar * command_name, ListPosition pos) { gpointer value; guint command_id; value = g_hash_table_lookup (the_keymap->idx_from_name, command_name); if (!value) { g_warning ("add_keybinding: %s, command does not exist", command_name); return -1; } command_id = *(guint *) value; return add_keybinding_to_idx (the_keymap, keyval, state, command_id, pos); } gint add_named_binding_to_idx (keymap * the_keymap, gchar * kb_name, guint command_id, ListPosition pos) { guint *new_idx; gint old_command_id; old_command_id = lookup_command_for_keybinding_name (the_keymap, kb_name); //lookup_keybinding(the_keymap, keyval, state); gchar *title = NULL; gchar *prompt = NULL; if (old_command_id >= 0) { if ((!Denemo.prefs.return_key_is_special) || strcmp (kb_name, "Return")) { title = g_strdup_printf (_("The Command %s Responds to the Shortcut %s"), lookup_name_from_idx (Denemo.map, old_command_id), kb_name); prompt = g_strdup_printf (_("Lose the shortcut %s for this?"), kb_name); } } if (title && (pos == POS_FIRST) && (old_command_id >= 0) && (!confirm (title, prompt))) { g_free (title); g_free (prompt); return old_command_id; } if ((pos == POS_FIRST) && strcmp (kb_name, "Return")) Denemo.accelerator_status = TRUE; if(g_hash_table_lookup(Denemo.map->continuations_table, kb_name)) { gchar *text = g_strdup_printf (_("The key %s is the first keypress of some two key shortcuts.\nIf you wish to re-assign it you will need to remove those first.\nOpen the View->Command Center to find and remove the shortcuts."), kb_name); infodialog (text);//Warning! cannot use warningdialog() here as it is modal, resulting in a deadlock if a command which also modal is fired off from the menu at the same time. g_free(text); } else { if (old_command_id >= 0) { remove_keybinding_bindings_helper (the_keymap, old_command_id, kb_name); update_accel_labels (the_keymap, old_command_id); } //add the keybinding to the binding on idx_command add_keybinding_bindings_helper (the_keymap, command_id, kb_name, pos); //update the accel labels of the command update_accel_labels (the_keymap, command_id); //add or modify an entry in idx_from_keystring new_idx = (guint *) g_malloc (sizeof (guint)); *new_idx = command_id; g_hash_table_insert (the_keymap->idx_from_keystring, g_strdup (kb_name), new_idx); } g_free (title); g_free (prompt); return old_command_id; } /** * Adds a keybinding to the_keymap. If the key was already bound, * this function removes the old binding and replaces it, returning * the number of the command this keybinding was attached to. Otherwise * returns -1. * if pos is POS_FIRST, then the user is adding the binding - get confirmation before stealing * if POS_LAST it is the command set being loaded, do not ask */ gint add_keybinding_to_idx (keymap * the_keymap, gint keyval, GdkModifierType state, guint command_id, ListPosition pos) { gint old_command_id; gchar *kb_name; kb_name = dnm_accelerator_name (keyval, state); old_command_id = add_named_binding_to_idx (the_keymap, kb_name, command_id, pos); g_free (kb_name); //Denemo.accelerator_status = TRUE; return old_command_id; } gint add_twokeybinding_to_idx (keymap * the_keymap, gint first_keyval, GdkModifierType first_state, gint keyval, GdkModifierType state, guint command_id, ListPosition pos) { gint old_command_id; gchar *kb_name; kb_name = g_strdup_printf ("%s" DENEMO_TWO_KEY_SEPARATOR "%s", dnm_accelerator_name (first_keyval, first_state), dnm_accelerator_name (keyval, state)); old_command_id = add_named_binding_to_idx (the_keymap, kb_name, command_id, pos); g_free (kb_name); Denemo.accelerator_status = TRUE; return old_command_id; } /* force keybinding on action of name, returning old command id */ gint add_keybinding_for_name (gchar * name, gchar * binding) { guint idx = lookup_command_from_name (Denemo.map, name); if (idx != -1) { return add_named_binding_to_idx (Denemo.map, binding, idx, POS_LAST); } return -1; } /* force keybinding on action of id, returning old command id */ gint add_keybinding_for_command (gint idx, gchar * binding) { if (idx != -1) { return add_named_binding_to_idx (Denemo.map, binding, idx, POS_LAST); } return -1; } #if 0 //we have to reproduce this function here since it is static in gtkmenu.c static void stolen_gtk_menu_stop_navigating_submenu (GtkMenu * menu) { if (menu->navigation_region) { cairo_region_destroy (menu->navigation_region); menu->navigation_region = NULL; } if (menu->navigation_timeout) { g_source_remove (menu->navigation_timeout); menu->navigation_timeout = 0; } } #endif gint keymap_accel_quick_edit_snooper (GtkWidget * grab_widget, GdkEventKey * event, DenemoAction *action) { guint keyval; GdkModifierType modifiers; keymap *the_keymap = Denemo.map; GtkMenu *menu = GTK_MENU (grab_widget); if (Denemo.prefs.menunavigation && ((event->keyval == 0xFF1B) || (event->keyval == 0xFF51) || (event->keyval == 0xFF52) || (event->keyval == 0xFF53) || (event->keyval == 0xFF54))) { //Esc and arrows for navigating menus return FALSE; } //If this menu item has no action we give up if (!action) return FALSE; //If the KeyEvent is only a modifier, stop processing here if (isModifier (event)) return TRUE; dnm_clean_event (event); modifiers = dnm_sanitize_key_state (event); keyval = event->keyval; gint idx = lookup_command_from_name (the_keymap, denemo_action_get_name (action));//g_assert(denemo_action_get_name(action), action->name); //If this menu item action is not registered in the //keymap, we give up if (idx == -1) return TRUE; //#if ((GTK_MAJOR_VERSION == 3) && (GTK_MINOR_VERSION >= 10)) //g_print ("event key %x\n", event->keyval); if (event->keyval == 0xFFBE) //f1 key { popup_help_for_action (action); return TRUE; } //#endif //Add the keybinding add_keybinding_to_idx (the_keymap, keyval, modifiers, idx, POS_FIRST); return TRUE; } DenemoAction * lookup_action_from_name (gchar * command_name) { return denemo_menusystem_get_action (command_name); } gboolean execute_callback_from_idx (keymap * the_keymap, guint command_id) { const gchar *command_name; command_name = lookup_name_from_idx (the_keymap, command_id); return execute_callback_from_name (command_name); } gboolean execute_callback_from_name (const gchar * command_name) { gint idx = lookup_command_from_name(Denemo.map, command_name); DenemoAction *action = lookup_action_from_name ((gchar *) command_name); gboolean builtin = is_action_name_builtin((gchar*) denemo_action_get_name(action)); if (!builtin){ gchar* text = get_scheme_from_idx (idx); if(text) call_out_to_guile (text); else denemo_action_activate (action); } else denemo_action_activate (action); return TRUE; } //prints info on the data of the keymap relative to a command G_GNUC_UNUSED void dump_command_info (keymap * the_keymap, gint command_id) { gchar *cur_binding; command_row *row; GtkTreeIter iter; GList* cur = NULL; if (command_id == -1) { g_message ("No command."); return; } g_message ("command %s (%d)\nKeyboard Shortcuts:", lookup_name_from_idx (the_keymap, command_id), command_id); if (!keymap_get_command_row (the_keymap, &row, command_id)) return; cur = row->bindings; while(cur) { g_debug ("\t%s (%d)\n", (char *) cur->data, lookup_command_for_keybinding_name (the_keymap, cur->data)); cur = g_list_next(cur); } } /** * This checks to see if there's a .denemo/keymaps directory in the user's * home directory, tries to create one if there isn't, and returns the * path to it * */ const gchar * get_user_keymap_dir () { static gchar *keymapdir = NULL; gboolean err; if (!keymapdir) { keymapdir = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, NULL); } err = g_mkdir_with_parents (keymapdir, 0770); if (err) { warningdialog (_("Could not create .denemo/actions for your customized commands")); g_free (keymapdir); keymapdir = NULL; } return keymapdir; } /** * loads a command set (aka keymap) from a file in a file selector. * This function is a callback that is wrapper for * load_keymap_file amongst others *FIXME note that non xml file support has been commented out */ void load_keymap_from_dialog (gchar * filename) { GList* files = g_list_append(NULL, g_strdup(filename)); if (g_file_test (filename, G_FILE_TEST_EXISTS)) load_keymap_files (files); g_free (filename); Denemo.accelerator_status = TRUE; } #if 0 static void show_type (GtkWidget * widget, gchar * message) { g_debug ("%s%s\n", message, widget ? g_type_name (G_TYPE_FROM_INSTANCE (widget)) : "NULL widget"); } #endif /** * Function for loading a command set (aka keymap) from location by way of * a user dialog. */ void load_keymap_dialog_location (gchar * location) { gchar *filename = file_dialog ("Load Command Set", TRUE, location); if (filename) { if(confirm (_("Key Map Loading"), _("Load Shortcuts only?"))) {//g_print("Starting filename %s\n", filename); if(g_str_has_suffix (filename, ".commands")) { *(filename+strlen(filename)-strlen(".commands")) = 0; filename = g_strdup_printf ("%s.shortcuts", filename); } //g_print("Doing filename %s\n", filename); load_xml_keybindings (filename); } else load_keymap_from_dialog (filename); Denemo.accelerator_status = TRUE; } } void load_keymap_dialog (void) { gchar *keymapdir = g_strdup_printf ("%s%c", get_user_keymap_dir (), G_DIR_SEPARATOR); if (keymapdir) load_keymap_dialog_location (keymapdir); else warningdialog (_("Cannot access your local .denemo")); g_free (keymapdir); } void load_system_keymap_dialog (void) { gchar *systemwide = g_build_filename (get_system_data_dir (), COMMANDS_DIR, USER_KEYMAP, KEYMAP_EXT, NULL); if (systemwide) load_keymap_dialog_location (systemwide); else warningdialog (_("Installation error")); g_free (systemwide); } void load_default_keymap_file () { gchar* user_keymap_file = g_strconcat (USER_KEYMAP, KEYMAP_EXT, NULL); gchar* default_keymap_file = g_strconcat (DEFAULT_KEYMAP, KEYMAP_EXT, NULL); GList* files = NULL; files = g_list_append(files, g_build_filename (get_user_keymap_dir (), user_keymap_file, NULL)); files = g_list_append(files, g_build_filename (PACKAGE_SOURCE_DIR, COMMANDS_DIR, user_keymap_file, NULL)); files = g_list_append(files, g_build_filename (get_system_data_dir (), COMMANDS_DIR, user_keymap_file, NULL)); files = g_list_append(files, g_build_filename (get_user_keymap_dir (), default_keymap_file, NULL)); files = g_list_append(files, g_build_filename (get_system_data_dir (), COMMANDS_DIR, default_keymap_file, NULL)); if(!load_keymap_files (files)) g_warning ("Unable to load default keymap"); if(Denemo.old_user_data_dir) { files = g_list_append(NULL, g_build_filename (Denemo.old_user_data_dir, COMMANDS_DIR, user_keymap_file, NULL)); if(!load_keymap_files (files)) g_warning ("Unable to load former default keymap"); else save_default_keymap_file (); } g_free(default_keymap_file); g_free (user_keymap_file); } /* UNUSED static GScannerConfig scanner_config_template = { (" \t\r\n") // cset_skip_characters ,(G_CSET_a_2_z "_0123456789/." G_CSET_A_2_Z) // cset_identifier_first ,(G_CSET_a_2_z "_0123456789/." G_CSET_A_2_Z G_CSET_LATINS G_CSET_LATINC) // cset_identifier_nth ,("#\n") // cpair_comment_single ,FALSE // case_sensitive ,TRUE // skip_comment_multi ,TRUE // skip_comment_single ,TRUE // scan_comment_multi ,TRUE // scan_identifier ,TRUE // scan_identifier_1char ,FALSE //scan_identifier_NULL ,TRUE // scan_symbols ,FALSE // scan_binary ,FALSE // scan_octal ,FALSE // scan_float ,FALSE // scan_hex ,FALSE // scan_hex_dollar ,TRUE // scan_string_sq ,TRUE // scan_string_dq ,FALSE // numbers_2_int ,FALSE // int_2_float ,TRUE // identifier_2_string ,TRUE // char_2_token ,TRUE // symbol_2_token ,FALSE // scope_0_fallback }; */ /** * Callback for saving the keymap to a given file * */ void save_keymap_from_dialog (gchar * filename) { gchar *extendedname = substitute_extension (filename, "commands"); save_xml_keymap (extendedname); //no longer save keybindings here gchar *fname = substitute_extension (extendedname, "shortcuts"); save_xml_keybindings (fname); g_free (fname); g_free (extendedname); g_free (filename); } /** * Function for saving a keymap to an arbitrary place by way of * a user dialog. Similar to file_saveas. */ void save_keymap_dialog (void) { gchar *keymapdir = NULL; keymapdir = g_build_filename (get_user_keymap_dir (), NULL); gchar *filename = file_dialog (_("Save Command Set"), FALSE, keymapdir); if (filename) save_keymap_from_dialog (filename); g_free (keymapdir); } /** * Wrapper function for saving the keymap to the standard place * */ void save_default_keymap_file_wrapper (DenemoAction * action, DenemoScriptParam * param) { save_default_keymap_file (); } /** * Saves the keymap as the user's default keymap * */ void save_default_keymap_file (void) { gchar *localrc = NULL; const gchar *keymapdir = get_user_keymap_dir (); if (keymapdir) { gchar* default_keymap_file = g_strconcat (DEFAULT_KEYMAP, KEYMAP_EXT, NULL); localrc = g_build_filename (keymapdir, default_keymap_file, NULL); g_free(default_keymap_file); save_xml_keymap (localrc); //no longer saves keybindings g_free (localrc); localrc = g_build_filename (keymapdir, DEFAULT_KEYBINDINGS, NULL); save_xml_keybindings (localrc); g_free (localrc); } } /** * This function gets the caller a string useful for display */ void set_state (gint state, gchar ** value) { switch (state) { case 1: *value = "Shift+"; break; case 4: *value = "Ctrl+"; break; case 8: *value = "Alt+"; break; case 5: *value = "Ctrl+Shift+"; break; case 9: *value = "Alt+Shift+"; break; case 12: *value = "Alt+Ctrl+"; break; case 13: *value = "Alt+Ctrl+Shift+"; break; } } /* UNUSED static void command_name_data_function (G_GNUC_UNUSED GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, G_GNUC_UNUSED gpointer user_data) { KeymapCommandType type; gpointer action; const gchar *name; gtk_tree_model_get (model, iter, COL_TYPE, &type, COL_ACTION, &action, -1); name = denemo_action_get_name (action); g_object_set (renderer, "text", name, NULL); } */ static void label_data_function (G_GNUC_UNUSED GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, G_GNUC_UNUSED gpointer user_data) { const gchar *name; gtk_tree_model_get (model, iter, COL_LABEL, &name, -1); g_object_set (renderer, "text", name, NULL); } static void command_hidden_data_function (G_GNUC_UNUSED GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, G_GNUC_UNUSED gpointer user_data) { command_row* row = NULL; gchar* name = NULL; gtk_tree_model_get (model, iter, COL_NAME, &name, -1); gint id = lookup_command_from_name (Denemo.map, name); if (keymap_get_command_row (Denemo.map, &row, id)) g_object_set (renderer, "active", row->hidden, NULL); } static gint fuzzy = 0; // number of mis-matched words to allow static gint last_row = -1; // implemented as last found idx static gboolean search_equal_func (GtkTreeModel * model, gint G_GNUC_UNUSED column, const gchar * key, GtkTreeIter * iter, G_GNUC_UNUSED gpointer search_data) { gchar *lookin; gboolean notfound; static gchar *last_key; static gchar **search_strings; static gint number_of_search_terms; gboolean backspace = FALSE; while (*key==' ') key++; if (*key == 0 || strlen(key)<4) return TRUE; if ((!last_key) || strcmp (key, last_key)) { if(search_strings) g_strfreev (search_strings); search_strings = g_strsplit (key, " ", -1); gchar **p; number_of_search_terms = 0; for (p = search_strings;*p && **p;p++) {gchar *c = *p; *p = g_utf8_casefold (*p, -1); g_free (c); number_of_search_terms++; } backspace = last_key && (strlen(key) 1) notfound = (matches + fuzzy < number_of_search_terms); else notfound = !matches; if ((!notfound) && (rownum <= last_row)) notfound = TRUE; if (!notfound) { last_row = rownum; if (Denemo.prefs.immediateplayback) play_note (DEFAULT_BACKEND, 0, 9, 67, 300, 127); } g_free(this); g_free (lookin); return notfound; } /*toggle hidden on action at row in command list */ static void toggle_hidden_on_action (G_GNUC_UNUSED GtkCellRendererToggle * cell_renderer, gchar * path, GtkTreeModel* model) { gint command_id = -1; command_row* row = NULL; GtkTreeIter iter = { 0, NULL, NULL, NULL }; const gchar *command_name; GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(get_command_view())); if(selection) { if(gtk_tree_selection_get_selected (selection, NULL, &iter)) { gtk_tree_model_get (model, &iter, COL_NAME, &command_name, -1); command_id = lookup_command_from_name(Denemo.map, command_name); } keymap_get_command_row (Denemo.map, &row, command_id); const DenemoAction *action = lookup_action_from_idx (Denemo.map, command_id); if (action && row) { set_visibility_for_action ((DenemoAction *)action, row->hidden); } } } static void search_next (GtkWidget *SearchEntry) { if ( gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW(get_command_view())), NULL, NULL)) ;//last_row++; else last_row = -1; //FIXME issue some signal to cause a search to be made instead of this: g_signal_emit_by_name (SearchEntry, "insert-at-cursor", " "); gtk_widget_grab_focus (SearchEntry); } static void toggle_fuzzy (void) { fuzzy = !fuzzy; } static void prepend_no_selection (GtkTextBuffer *text_buffer) //for "No selection { GtkTextIter iter; gtk_text_buffer_get_start_iter (text_buffer, &iter); gtk_text_buffer_insert (text_buffer, &iter, _("NO COMMAND SELECTED.\nPress -> to search again\n_________________________________\nLast selected command was:\n"), -1); } static void selection_changed (GtkTreeSelection *selection, GtkTreeModel* model) { GtkTreeIter iter = { 0, NULL, NULL, NULL }; const gchar *command_name; if(gtk_tree_selection_get_selected (selection, NULL, &iter)) { GtkTreePath *path = gtk_tree_model_get_path (model, &iter); gchar *thepath = path?gtk_tree_path_to_string (path):NULL; last_row = thepath?atoi (thepath):0; gtk_tree_path_free(path); g_free(thepath); //g_print ("Last row set to idx %d\n", last_row); } else { keyboard_dialog_data *cbdata = g_object_get_data (G_OBJECT(model), "dialog-data"); GtkTextBuffer *text_buffer = gtk_text_view_get_buffer (cbdata->text_view); prepend_no_selection (text_buffer); } } static void command_from_hashtable_to_treemodel(gpointer key, gpointer value, gpointer data){ GtkListStore* list = GTK_LIST_STORE(data); command_row* command = (command_row*) value; GtkTreeIter iter = { 0, NULL, NULL, NULL }; gtk_list_store_append (list, &iter); gtk_list_store_set (list, &iter, COL_TYPE, command->type, COL_NAME, command->name, COL_LABEL, command->label, COL_TOOLTIP, command->tooltip, COL_CALLBACK, command->callback, COL_BINDINGS, command->bindings, COL_SCRIPTTYPE, command->script_type, COL_LOCATIONS, command->locations, COL_ROW, command, -1); } static GtkTreeModel* commands_treemodel(keymap * the_keymap){ GtkListStore* list = gtk_list_store_new (N_COLUMNS, G_TYPE_INT, //type G_TYPE_POINTER, //action G_TYPE_POINTER, //name G_TYPE_POINTER, //label G_TYPE_POINTER, //tooltip G_TYPE_POINTER, //callback G_TYPE_POINTER, //bindings G_TYPE_BOOLEAN, //hidden G_TYPE_BOOLEAN, //deleted G_TYPE_INT, //type G_TYPE_POINTER, G_TYPE_POINTER //row ); g_hash_table_foreach(the_keymap->commands, command_from_hashtable_to_treemodel, list); return GTK_TREE_MODEL(list); } GtkWidget * keymap_get_command_view (keymap * the_keymap, GtkWidget *SearchEntry, GtkWidget *SearchNext, keyboard_dialog_data *cbdata) { GtkScrolledWindow *res2; GtkTreeView *res; GtkTreeViewColumn *col; GtkCellRenderer *renderer; GtkTreeSelection *selection; GtkTreeModel *model; model = commands_treemodel(the_keymap); g_object_set_data (G_OBJECT(model), "dialog-data", (gpointer)cbdata); //setting up the tree view res = GTK_TREE_VIEW (gtk_tree_view_new ()); gtk_tree_view_set_model (res, model); col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, _("Command")); gtk_tree_view_append_column (res, col); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (col, renderer, TRUE); gtk_tree_view_column_set_cell_data_func (col, renderer, label_data_function, NULL, NULL); #if 0 /* including this column makes the command manager too wide */ col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, _("Commands")); gtk_tree_view_append_column (res, col); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (col, renderer, TRUE); gtk_tree_view_column_set_cell_data_func (col, renderer, command_name_data_function, NULL, NULL); #endif col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, _("Hidden")); gtk_tree_view_append_column (res, col); renderer = gtk_cell_renderer_toggle_new (); gtk_tree_view_column_pack_start (col, renderer, TRUE); //gtk_tree_view_column_add_attribute (col, renderer, "active", COL_HIDDEN); this causes warnings from GLib-GObject gtk_tree_view_column_set_cell_data_func (col, renderer, command_hidden_data_function, NULL, NULL); g_signal_connect (renderer, "toggled", (GCallback) toggle_hidden_on_action, (gpointer) model); #if 0 col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, _("Deleted")); gtk_tree_view_append_column (res, col); renderer = gtk_cell_renderer_toggle_new (); gtk_tree_view_column_pack_start (col, renderer, TRUE); gtk_tree_view_column_add_attribute (col, renderer, "active", COL_DELETED); gtk_tree_view_column_set_cell_data_func (col, renderer, command_deleted_data_function, NULL, NULL); g_signal_connect (renderer, "toggled", (GCallback) toggle_deleted_on_action, NULL); #endif selection = gtk_tree_view_get_selection (res); gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE); g_signal_connect (G_OBJECT(selection), "changed", G_CALLBACK(selection_changed), (gpointer) model); gtk_tree_view_set_search_equal_func (res, search_equal_func, NULL, NULL); //gtk_tree_view_set_search_column (res, COL_LABEL); gtk_tree_view_set_enable_search (res, TRUE); //setting up the scrolledwindow res2 = GTK_SCROLLED_WINDOW (gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0))); gtk_container_add (GTK_CONTAINER (res2), GTK_WIDGET (res)); gtk_scrolled_window_set_policy (res2, GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); //FIXME adapt so that 10~15 rows are visible gtk_widget_set_size_request (GTK_WIDGET (res2), -1, 300); GtkWidget *vbox = gtk_vbox_new (FALSE, 8); GtkWidget *hbox = gtk_hbox_new (FALSE, 8); gtk_tree_view_set_search_entry (res, (GtkEntry*)SearchEntry); GtkWidget *label = gtk_label_new (_("Search")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (hbox), SearchEntry, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (hbox), SearchNext, FALSE, TRUE, 0); GtkWidget *toggle = gtk_check_button_new_with_label (_("Fuzzy Search")); gtk_widget_set_tooltip_text (toggle, _("Allow one non-matching word in the search.")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(toggle), FALSE); gtk_widget_set_can_focus (toggle, FALSE); g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(toggle_fuzzy), NULL); gtk_box_pack_end (GTK_BOX (hbox), toggle, FALSE, TRUE, 0); g_signal_connect_swapped (G_OBJECT (SearchNext), "clicked", G_CALLBACK (search_next), SearchEntry); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (vbox), (GtkWidget*)res2, TRUE, TRUE, 0); return GTK_WIDGET (res2); } void row_inserted_handler (GtkTreeModel * model, GtkTreePath * arg1, GtkTreeIter * arg2, gpointer user_data) { keyboard_dialog_data *cbdata = (keyboard_dialog_data *) user_data; if (cbdata->command_id != -1) update_accel_labels (Denemo.map, cbdata->command_id); } void row_deleted_handler (GtkTreeModel * model, GtkTreePath * arg1, gpointer user_data) { keyboard_dialog_data *cbdata = (keyboard_dialog_data *) user_data; if (cbdata->command_id != -1) update_accel_labels (Denemo.map, cbdata->command_id); } const gchar * get_menu_label (gchar *name) { gint* idx = (gint*) g_hash_table_lookup(Denemo.map->idx_from_name, name); if(!idx) return name; command_row* row = g_hash_table_lookup(Denemo.map->commands, idx); return row->label ?: name; } /* caller must free */ gchar *get_menu_position (gchar *menupath) { if(menupath==NULL) menupath = g_strdup_printf("%s", _("Not in menu system. You can create a palette button for it using the Add to Palette button.")); GString *position = g_string_new(""); gchar *path = g_strdup(menupath/* + 1 skip over the initial delimeter*/); gchar *element = strtok (path, "/"); if(element) { g_string_append (position, get_menu_label(element)); while ((element = strtok (NULL, "/"))) { if(*element) g_string_append_printf (position, "->%s", get_menu_label(element)); else g_string_append (position, "**"); } } g_free(path); return g_string_free (position, FALSE); } void update_bindings_model(GtkListStore * model, GList *bindings){ GtkTreeIter iter = {0,0,0,0}; GList* cur = bindings; gtk_list_store_clear (model); while(cur){ gtk_list_store_append (model, &iter); gtk_list_store_set (model, &iter, 0, cur->data, -1); cur = g_list_next(cur); } } static GtkTreeModel* get_bindings_model(GList *bindings) { GtkListStore* list = gtk_list_store_new (1, G_TYPE_STRING); update_bindings_model(list, bindings); return GTK_TREE_MODEL(list); } gboolean keymap_change_binding_view_on_command_selection (GtkTreeSelection * selection, GtkTreeModel * model, GtkTreePath * path, gboolean path_currently_selected, gpointer data) { GtkTreeView *binding_view; GtkTreeIter iter; GtkTreeModel *old_binding_model; GtkTextBuffer *text_buffer; KeymapCommandType type; gpointer action; gint *array; command_row* row; const gchar *tooltip; keyboard_dialog_data *cbdata = (keyboard_dialog_data *) data; //if the same command is selected again, we do nothing if (path_currently_selected) return TRUE; //getting the binding_view binding_view = cbdata->binding_view; //disconnecting signals of the old binding view old_binding_model = gtk_tree_view_get_model (binding_view); if (old_binding_model) g_signal_handlers_disconnect_by_func (old_binding_model, row_deleted_handler, data); //getting the new model gtk_tree_model_get_iter (model, &iter, path); gchar* name; gboolean hidden = FALSE; gtk_tree_model_get (model, &iter, COL_TYPE, &type, COL_TOOLTIP, &tooltip, COL_ROW, &row, COL_NAME, &name, -1); hidden = row->hidden; action = denemo_menusystem_get_action (name); //getting the new command_id array = gtk_tree_path_get_indices (path); cbdata->command_id = array[0]; //setting the model and releasing our reference GtkTreeModel* bindings_model = get_bindings_model (row->bindings); gtk_tree_view_set_model (binding_view, bindings_model); g_signal_connect (bindings_model, "row-deleted", G_CALLBACK (row_deleted_handler), data); //changing the tooltip text_buffer = gtk_text_view_get_buffer (cbdata->text_view); if (tooltip) { gchar *plain = NULL; gchar *menupath = get_location_for_name (name);//get_menu_position (row->menupath); const gchar *label = get_menu_label (name); pango_parse_markup (tooltip, -1, 0, NULL, &plain, 0, NULL);//strip out any markup gchar *text = NULL; if (menupath==NULL) menupath = g_strdup (_("Not in menu system. You can create a palette button for it using the Add to Palette button.")); if (plain) text = g_strdup_printf (_( "%sCommand: %s\n%s\nLocation: %s\nInternal Name: %s"), hidden?_("WARNING!!:\nThis command is hidden.\nMost likely you want to continue your search for a better command.\nHidden commands are either for LilyPond users or low-level interfaces for more user-friendly versions.\n"):"", label, plain, menupath, denemo_action_get_name(action)); g_free (plain); if (text) gtk_text_buffer_set_text (text_buffer, text, -1); else gtk_text_buffer_set_text (text_buffer, "Internal Problem", -1); g_free(text); g_free(menupath); } //perform the selection return TRUE; } GtkWidget * keymap_get_binding_view () { GtkScrolledWindow *res2; GtkTreeView *res; GtkTreeViewColumn *col; GtkCellRenderer *renderer; GtkTreeSelection *selection; //setting up the tree view res = GTK_TREE_VIEW (gtk_tree_view_new ()); col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, _("Shortcuts")); gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_GROW_ONLY); gtk_tree_view_append_column (res, col); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (col, renderer, TRUE); gtk_tree_view_column_add_attribute (col, renderer, "text", 0); selection = gtk_tree_view_get_selection (res); gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); gtk_tree_view_set_enable_search (res, FALSE); gtk_tree_view_set_reorderable (res, TRUE); //setting up the scrolledwindow res2 = GTK_SCROLLED_WINDOW (gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0))); gtk_container_add (GTK_CONTAINER (res2), GTK_WIDGET (res)); gtk_scrolled_window_set_policy (res2, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); //FIXME adapt so that 10~15 rows are visible gtk_widget_set_size_request (GTK_WIDGET (res2), -1, 300); return GTK_WIDGET (res2); } denemo-2.2.0/src/core/PaxHeaders.19168/kbd-custom.h0000644000000000000000000000013213135434036016471 xustar0030 mtime=1500919838.346648472 30 atime=1500919919.843315139 30 ctime=1500919914.189981805 denemo-2.2.0/src/core/kbd-custom.h0000644000175000017500000001414613135434036020350 0ustar00jjbenhamjjbenham00000000000000/* kbd-custom.h Header files for customizing keyboard configuration For Denemo, the GNU graphical music notation package (c) 2000-2005 Olivier Vermersch, Matthew Hiller */ #ifndef KBD_CUSTOM_H #define KBD_CUSTOM_H #include #include #include #include #define MASK_FILTER(state) state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK \ | GDK_MOD1_MASK) typedef struct _keyboard_dialog_data { GtkButton *addbutton; GtkButton *add2button; GtkButton *delbutton; GtkButton *lookbutton; GtkStatusbar *statusbar; guint context_id; GtkTreeView *command_view; GtkTreeView *binding_view; GtkTextView *text_view; gulong handler_key_press; gulong handler_focus_out; gint command_id; gint two_key; // 0 means not two key, 1 means first key, 2 second. GString *twokeylist; //list of commands whose shortcuts start with pressed key gint first_keyval; gint first_modifiers; } keyboard_dialog_data; guint dnm_sanitize_key_event (GdkEventKey * event); guint dnm_hyper_sanitize_key_event (GdkEventKey * event); guint dnm_meta_sanitize_key_state (GdkEventKey * event); gboolean isModifier (GdkEventKey * event); //adapted from gtk because we want to allow uppercase accelerator through //A, instead of a //we need this to be consistent with other modified values. void dnm_accelerator_parse (const gchar * accelerator, guint * accelerator_key, GdkModifierType * accelerator_mods); gchar *dnm_accelerator_name (guint accelerator_key, GdkModifierType accelerator_mods); /** * List of all categories. * This list also defines the order of the * categories in the keyboard shortcut dialog. */ extern gchar *kbd_categories[]; extern gint kbd_categories_length; void configure_keyboard (gpointer callback_data, guint callback_action, GtkWidget * widget); keymap *allocate_keymap (void); void free_keymap (keymap * the_keymap); void register_command (gchar * name, gchar * label, gchar * tooltip, gpointer callback); void register_command_row(keymap* the_keymap, command_row* command); void alphabeticalize_commands (keymap * the_keymap); //keymap * //create_keymap (const gchar *filename); void keymap_clear_bindings (keymap * the_keymap); guint keymap_size (keymap * the_keymap); //-1 if the binding is not found gint lookup_command_for_keybinding (keymap * the_keymap, gint keyval, GdkModifierType state); //-1 if the binding is not found gint lookup_command_for_keyevent (GdkEventKey * event); //-1 if the binding is not found gint lookup_command_for_keybinding_name (keymap * the_keymap, const gchar * binding_name); gint lookup_command_from_name (keymap * keymap, const gchar * command_name); const gchar *lookup_name_from_idx (keymap * keymap, gint command_id); const gchar *lookup_label_from_idx (keymap * keymap, gint command_id); const gchar *lookup_tooltip_from_idx (keymap * keymap, gint command_id); gboolean lookup_hidden_from_idx (keymap * keymap, guint command_id); gpointer lookup_callback_from_idx (keymap * keymap, gint command_id); void remove_keybinding (keymap * the_keymap, gint keyval, GdkModifierType state); void remove_keybinding_from_name (keymap * the_keymap, const gchar * binding); typedef enum { POS_FIRST = 0, POS_LAST } ListPosition; gint add_keybinding_to_idx (keymap * the_keymap, gint keyval, GdkModifierType state, guint command_id, ListPosition pos); gint add_keybinding_to_named_command (keymap * the_keymap, gint keyval, GdkModifierType state, const gchar * command_name, ListPosition pos); gint add_named_binding_to_idx (keymap * the_keymap, gchar * kb_name, guint command_id, ListPosition pos); gint keymap_update_accel (keymap * the_keymap, DenemoAction * action, guint keyval, GdkModifierType modifiers); gint keymap_accel_quick_edit_snooper (GtkWidget * grab_widget, GdkEventKey * event, DenemoAction *action); DenemoAction *lookup_action_from_name (gchar * command_name); const DenemoAction *lookup_action_from_idx (keymap * keymap, gint command_id); const gchar *lookup_menu_path_from_idx (keymap * keymap, gint command_id); gboolean execute_callback_from_idx (keymap * the_keymap, guint command_id); gboolean execute_callback_from_name (const gchar * command_name); void dump_command_info (keymap * the_keymap, gint command_id); guint dnm_sanitize_key_state (GdkEventKey * event); void load_keymap_dialog (void); void load_default_keymap_file (void); void load_system_keymap_dialog (void); void save_keymap_dialog (void); void load_keymap_dialog_location (gchar * location); void save_default_keymap_file_wrapper (DenemoAction * action, DenemoScriptParam * param); void save_default_keymap_file (void); void set_state (gint state, gchar ** value); GtkWidget *keymap_get_command_view (keymap * the_keymap, GtkWidget *entry, GtkWidget *next, keyboard_dialog_data *cbdata); GtkWidget *keymap_get_binding_view (); gboolean keymap_cleanup_command_view (keyboard_dialog_data * data); gboolean keymap_change_binding_view_on_command_selection (GtkTreeSelection * selection, GtkTreeModel * model, GtkTreePath * path, gboolean path_currently_selected, gpointer data); void update_accel_labels (keymap * the_keymap, guint command_id); gboolean command_has_binding (guint command_id); gint add_keybinding_for_name (gchar * name, gchar * binding); gint add_keybinding_for_command (gint idx, gchar * binding); void update_all_labels (keymap * the_keymap); void dnm_clean_event (GdkEventKey * event); gint add_twokeybinding_to_idx (keymap * the_keymap, gint first_keyval, GdkModifierType first_state, gint keyval, GdkModifierType state, guint command_id, ListPosition pos); void command_row_init(command_row *command); gboolean keymap_get_command_row (keymap * the_keymap, command_row ** row, guint command_id); gboolean is_action_id_builtin(gint id); gboolean is_action_name_builtin(gchar* command_name); const gchar *get_menu_label (gchar *name); gchar *get_menu_position (gchar *menupath); void update_bindings_model(GtkListStore * model, GList* bindings); command_row* get_or_create_command(gchar* name); gboolean load_keymap_files(GList* files); GString *keymap_get_bindings (keymap * the_keymap); gchar* get_scheme_from_idx(gint idx); #endif denemo-2.2.0/src/core/PaxHeaders.19168/binreloc.h0000644000000000000000000000013213135434036016216 xustar0030 mtime=1500919838.343315139 30 atime=1500919919.853315139 30 ctime=1500919914.159981805 denemo-2.2.0/src/core/binreloc.h0000644000175000017500000000470013135434036020070 0ustar00jjbenhamjjbenham00000000000000/* * BinReloc - a library for creating relocatable executables * Written by: Hongli Lai * http://autopackage.org/ * * This source code is public domain. You can relicense this code * under whatever license you want. * * See http://autopackage.org/docs/binreloc/ for * more information and how to use this. */ #ifndef __BINRELOC_H__ #define __BINRELOC_H__ #include G_BEGIN_DECLS /** These error codes can be returned by br_init(), br_init_lib(), gbr_init() or gbr_init_lib(). */ typedef enum { /** Cannot allocate memory. */ GBR_INIT_ERROR_NOMEM, /** Unable to open /proc/self/maps; see errno for details. */ GBR_INIT_ERROR_OPEN_MAPS, /** Unable to read from /proc/self/maps; see errno for details. */ GBR_INIT_ERROR_READ_MAPS, /** The file format of /proc/self/maps is invalid; kernel bug? */ GBR_INIT_ERROR_INVALID_MAPS, /** BinReloc is disabled (the ENABLE_BINRELOC macro is not defined). */ GBR_INIT_ERROR_DISABLED } GbrInitError; #ifndef BINRELOC_RUNNING_DOXYGEN /* Mangle symbol names to avoid symbol collisions with other ELF objects. */ #define gbr_find_exe PCUt96149520938076_gbr_find_exe #define gbr_find_exe_dir PCUt96149520938076_gbr_find_exe_dir #define gbr_find_prefix PCUt96149520938076_gbr_find_prefix #define gbr_find_bin_dir PCUt96149520938076_gbr_find_bin_dir #define gbr_find_sbin_dir PCUt96149520938076_gbr_find_sbin_dir #define gbr_find_data_dir PCUt96149520938076_gbr_find_data_dir #define gbr_find_locale_dir PCUt96149520938076_gbr_find_locale_dir #define gbr_find_lib_dir PCUt96149520938076_gbr_find_lib_dir #define gbr_find_libexec_dir PCUt96149520938076_gbr_find_libexec_dir #define gbr_find_etc_dir PCUt96149520938076_gbr_find_etc_dir #endif gboolean gbr_init (GError ** error); gboolean gbr_init_lib (GError ** error); gchar *gbr_find_exe (const gchar * default_exe); gchar *gbr_find_exe_dir (const gchar * default_dir); gchar *gbr_find_prefix (const gchar * default_prefix); gchar *gbr_find_bin_dir (const gchar * default_bin_dir); gchar *gbr_find_sbin_dir (const gchar * default_sbin_dir); gchar *gbr_find_data_dir (const gchar * default_data_dir); gchar *gbr_find_locale_dir (const gchar * default_locale_dir); gchar *gbr_find_lib_dir (const gchar * default_lib_dir); gchar *gbr_find_libexec_dir (const gchar * default_libexec_dir); gchar *gbr_find_etc_dir (const gchar * default_etc_dir); G_END_DECLS #endif /* __BINRELOC_H__ */ denemo-2.2.0/src/core/PaxHeaders.19168/importxml.h0000644000000000000000000000013213135434036016454 xustar0030 mtime=1500919838.346648472 30 atime=1500919919.853315139 30 ctime=1500919914.186648472 denemo-2.2.0/src/core/importxml.h0000644000175000017500000000606713135434036020336 0ustar00jjbenhamjjbenham00000000000000/* importxml.h * Header file for importing "native" Denemo XML files * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2001-2005 Eric Galluzzo */ #ifndef IMPORTXML_H #define IMPORTXML_H #include #include "export/xmldefs.h" #include /* libxml includes: for libxml2 this should be */ #include /* * This is the "interface" that all import handlers must "implement" if they * wish to import data into Denemo. If any of the callbacks in the structure * are NULL, then they are not called. However, all other fields must be * non-NULL. */ typedef struct _DenemoImportXMLNSHandler { /* * The XML namespace URI handled by this handler (e.g. * "http://www.denemo.sourceforge.net/Denemo/Lilypond") */ gchar *xmlnsURI; /* * Create and return user data necessary for importing the given score. If * no user data is required, set this startScore function to NULL. */ gpointer (*startScore) (xmlDocPtr doc); /* * Delete the given user data. If no user data is required, set this * endScore function to NULL. */ void (*endScore) (xmlDocPtr doc, gpointer userData); /* * Import the given score-level XML element into the given score. */ void (*importScoreInfo) (DenemoMovement * si, xmlNodePtr elem); /* * Import the given staff-level XML element into the "primary" staff located * in the given score (si->currentprimarystaff). */ void (*importStaffInfo) (DenemoMovement * si, xmlNodePtr elem); /* * Import the given voice-level XML element into the voice located in the * given score (si->currentstaff). Note that elem may be a child of * or . */ void (*importVoiceInfo) (DenemoMovement * si, xmlNodePtr elem); /* * Import the given measure-level XML element into the measure located in * the given score (si->currentmeasure). */ void (*importMeasure) (DenemoMovement * si, xmlNodePtr elem); /* * Import the given object-level XML element into the DenemoObject located * in the given score (si->currentobj). Note that this function is only * called for built-in object types, not custom types. */ void (*importObjectInfo) (DenemoMovement * si, xmlNodePtr elem); /* * Import the given note-level XML element into the note located in the * given score (N.B.: not yet implemented!). */ void (*importNoteInfo) (DenemoMovement * si, xmlNodePtr elem); /* * Create a new DenemoObject from the given object-level XML element and * return it. Return NULL if no object should be created. */ DenemoObject *(*importCustomObject) (DenemoMovement * si, xmlNodePtr elem); } DenemoImportXMLNSHandler; /* * Import the given file in Denemo's "native" XML file format into the given * score. Return TRUE if the file was imported successfully, FALSE otherwise. */ gboolean importXML (gchar * filename, DenemoProject * gui, ImportType type); void registerImportXMLNSHandler (DenemoImportXMLNSHandler * handler); void unregisterImportXMLNSHandler (DenemoImportXMLNSHandler * handler); #endif denemo-2.2.0/src/core/PaxHeaders.19168/utils.c0000644000000000000000000000013213135434036015554 xustar0030 mtime=1500919838.349981806 30 atime=1500919919.859981806 30 ctime=1500919914.203315139 denemo-2.2.0/src/core/utils.c0000644000175000017500000032515013135434036017433 0ustar00jjbenhamjjbenham00000000000000/* utils.c * Functions useful across the different modules of * drawing and non-drawing code. * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #include #include /*for SIGTERM */ #include #include #include #include #include #include #include #include "display/accwidths.h" #include #include "display/notewidths.h" #include "core/utils.h" #include "smf.h" #include "export/print.h" #include "core/kbd-custom.h" #include "core/view.h" #include "core/menusystem.h" #include "command/lilydirectives.h" #include "command/object.h" #include "command/scorelayout.h" #include /*for SIGTERM */ #include "config.h" #ifdef G_OS_WIN32 #include "windows.h" #else #include "core/binreloc.h" #endif #include "audio/pitchentry.h" #include "command/measure.h" #ifdef _MACH_O_ #include #endif //generated by cairo_svg2path from piano_staff.svg static cairo_path_data_t piano_brace_data[] = { {.header.type = 0,.header.length = 2}, {.point.x = 13.694762,.point.y = 15.134294}, {.header.type = 0,.header.length = 2}, {.point.x = 13.694762,.point.y = 34.647228}, {.header.type = 2,.header.length = 4}, {.point.x = 13.694745,.point.y = 37.873117}, {.point.x = 13.456160,.point.y = 40.450299}, {.point.x = 12.979007,.point.y = 42.378764}, {.header.type = 2,.header.length = 4}, {.point.x = 12.533633,.point.y = 44.307289}, {.point.x = 11.849690,.point.y = 45.797498}, {.point.x = 10.927179,.point.y = 46.849380}, {.header.type = 2,.header.length = 4}, {.point.x = 10.036446,.point.y = 47.901323}, {.point.x = 8.748092,.point.y = 48.830499}, {.point.x = 7.062105,.point.y = 49.636952}, {.header.type = 2,.header.length = 4}, {.point.x = 9.734241,.point.y = 50.899267}, {.point.x = 11.499767,.point.y = 52.722581}, {.point.x = 12.358688,.point.y = 55.106874}, {.header.type = 2,.header.length = 4}, {.point.x = 13.249387,.point.y = 57.491228}, {.point.x = 13.694745,.point.y = 61.102772}, {.point.x = 13.694762,.point.y = 65.941541}, {.header.type = 1,.header.length = 2}, {.point.x = 13.694762,.point.y = 83.666226}, {.header.type = 2,.header.length = 4}, {.point.x = 13.694745,.point.y = 88.119297}, {.point.x = 14.251441,.point.y = 91.450330}, {.point.x = 15.364854,.point.y = 93.659376}, {.header.type = 2,.header.length = 4}, {.point.x = 15.937439,.point.y = 94.781380}, {.point.x = 16.557760,.point.y = 95.675508}, {.point.x = 17.225817,.point.y = 96.341727}, {.header.type = 2,.header.length = 4}, {.point.x = 17.925643,.point.y = 97.042993}, {.point.x = 18.434624,.point.y = 97.463756}, {.point.x = 18.752761,.point.y = 97.604034}, {.header.type = 2,.header.length = 4}, {.point.x = 19.102663,.point.y = 97.744242}, {.point.x = 19.532113,.point.y = 97.884511}, {.point.x = 20.041117,.point.y = 98.024788}, {.header.type = 1,.header.length = 2}, {.point.x = 20.041117,.point.y = 99.602655}, {.header.type = 2,.header.length = 4}, {.point.x = 14.442310,.point.y = 99.427312}, {.point.x = 10.815824,.point.y = 98.112447}, {.point.x = 9.161650,.point.y = 95.658006}, {.header.type = 2,.header.length = 4}, {.point.x = 7.412016,.point.y = 93.028214}, {.point.x = 6.537207,.point.y = 88.487468}, {.point.x = 6.537217,.point.y = 82.035749}, {.header.type = 1,.header.length = 2}, {.point.x = 6.537217,.point.y = 63.206580}, {.header.type = 2,.header.length = 4}, {.point.x = 6.537207,.point.y = 60.787187}, {.point.x = 6.362244,.point.y = 58.735972}, {.point.x = 6.012330,.point.y = 57.052911}, {.header.type = 2,.header.length = 4}, {.point.x = 5.694207,.point.y = 55.369866}, {.point.x = 5.026171,.point.y = 53.879675}, {.point.x = 4.008217,.point.y = 52.582286}, {.header.type = 2,.header.length = 4}, {.point.x = 3.022060,.point.y = 51.249883}, {.point.x = 1.685986,.point.y = 50.373300}, {.point.x = -0.000008,.point.y = 49.952520}, {.header.type = 1,.header.length = 2}, {.point.x = -0.000008,.point.y = 49.373968}, {.header.type = 2,.header.length = 4}, {.point.x = 4.358134,.point.y = 48.006509}, {.point.x = 6.537207,.point.y = 43.676162}, {.point.x = 6.537217,.point.y = 36.382874}, {.header.type = 1,.header.length = 2}, {.point.x = 6.537217,.point.y = 15.975830}, {.header.type = 2,.header.length = 4}, {.point.x = 6.537207,.point.y = 10.120270}, {.point.x = 7.443829,.point.y = 5.965213}, {.point.x = 9.257083,.point.y = 3.510685}, {.header.type = 2,.header.length = 4}, {.point.x = 11.102126,.point.y = 1.056314}, {.point.x = 14.696800,.point.y = -0.258578}, {.point.x = 20.041117,.point.y = -0.433981}, {.header.type = 1,.header.length = 2}, {.point.x = 20.041117,.point.y = 1.143903}, {.header.type = 2,.header.length = 4}, {.point.x = 18.068795,.point.y = 1.740052}, {.point.x = 16.462326,.point.y = 3.212732}, {.point.x = 15.221705,.point.y = 5.561917}, {.header.type = 2,.header.length = 4}, {.point.x = 14.203726,.point.y = 7.490478}, {.point.x = 13.694745,.point.y = 10.681285}, {.point.x = 13.694762,.point.y = 15.134294}, }; static cairo_path_t piano_brace_path = { 0, piano_brace_data, 92 }; /** * This checks to see if there's a .denemo/ directory in the user's * home directory, * if create tries to create one if there isn't, and returns the * path to it * else returns NULL * * .denemo/ is used for holding configuration files, templates, and so on. * * On windows the home directory is the one containing the My Documents folder. */ const gchar * get_user_data_dir (gboolean create) { static gchar *dotdenemo = NULL; gboolean err; if (!dotdenemo) { dotdenemo = g_build_filename (g_get_home_dir (), ".denemo-" PACKAGE_VERSION, NULL); } if ((!create) && !g_file_test (dotdenemo, G_FILE_TEST_IS_DIR)) return NULL; err = g_mkdir_with_parents (dotdenemo, 0770); if (err) { warningdialog (_("Could not create .denemo for you personal settings")); g_free (dotdenemo); dotdenemo = NULL; } return dotdenemo; } // Create or remove a unique temporary directory // If removal is FALSE, the directory will be newly // created or the existing temporary directory will // be returned. // If removal is TRUE, the directory gets removed and NULL is returned. gchar * make_temp_dir (gboolean removal) { static gchar *tmpdir = NULL; if (!removal) { // Either create a new directory or get the path if (!tmpdir) { gchar *newdir = g_build_filename (g_get_tmp_dir (), "Denemo_XXXXXX", NULL); #ifdef G_OS_WIN32 // Windows does not delete the temporary directory, use a constant one. if (!g_mkdir_with_parents (newdir, 0700)) g_warning ("Creation of temp dir failed\n"); #else if (!g_mkdtemp (newdir)) g_warning ("Creation of temp dir failed\n"); #endif tmpdir = newdir; } } else { // The directory should be removed. // Remove all files in the directory before deleting it. GError *error = NULL; GDir *dir = g_dir_open (tmpdir, 0, &error); if (!error) { const gchar *filename; while (filename = g_dir_read_name (dir)) { gchar *fullpath = g_build_filename (tmpdir, filename, NULL); g_remove (fullpath); g_free (fullpath); } g_dir_close (dir); } g_remove (tmpdir); tmpdir = NULL; } return tmpdir; } // Return a path to a temporary directory to be used for print intermediate files const gchar * locateprintdir (void) { return make_temp_dir (FALSE); } // Remove the temporary directory void removeprintdir (void) { make_temp_dir (TRUE); } //copies all files in source_dir to dest_dir creating the latter if need be void copy_files (gchar *source_dir, gchar *dest_dir) { GError *error = NULL; GDir *thedir; const gchar *thefile; gsize length; if (-1 == g_mkdir_with_parents (dest_dir, 0770)) { g_warning ("Could not create %s\n", dest_dir); return; } thedir = g_dir_open (source_dir, 0, &error); if (error) { g_warning ("Could not open %s\n", source_dir); return; } if (thedir) { while (thefile = g_dir_read_name (thedir)) { gchar *contents; gchar *path = g_build_filename (source_dir, thefile, NULL); gchar *newfile = g_build_filename (dest_dir, thefile, NULL); if (g_file_get_contents (path, &contents, &length, &error)) g_file_set_contents (newfile, contents, length, &error); if (error) g_warning ("Failed to copy file %s to %s message: %s\n", thefile, newfile, error->message); g_free (contents); g_free (newfile); g_free (path); } g_dir_close (thedir); } } void add_font_directory (gchar * fontpath) { #ifdef G_OS_WIN32 if (0 == AddFontResource (fontpath)) g_warning ("Failed to add font dir %s.", fontpath); SendMessage (HWND_BROADCAST, WM_FONTCHANGE, 0, 0); #endif if (FcConfigAppFontAddDir (NULL, (FcChar8 *) fontpath) == FcFalse) g_warning ("Failed to add font dir %s.", fontpath); } void add_font_file (gchar * fontname) { #ifdef G_OS_WIN32 if (0 == AddFontResource (fontname)) g_warning ("Failed to add font file %s.", fontname); SendMessage (HWND_BROADCAST, WM_FONTCHANGE, 0, 0); #endif if (FcConfigAppFontAddFile (NULL, (FcChar8 *) fontname) == FcFalse) g_warning ("Failed to add font file %s.", fontname); } #ifdef G_OS_WIN32 gboolean CoInitializeExCalled = FALSE; #endif gboolean run_file_association (gchar * filename) { #ifdef G_OS_WIN32 gint value = 0; if (!CoInitializeExCalled) { value = CoInitializeExCalled = TRUE; CoInitializeEx (NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE); g_debug ("coinit returned %d\n", value); } g_info ("Running ShellExecute %s \n", filename); return ShellExecute (NULL, NULL, filename, NULL, NULL, 0) > 32 /* value above 32 indicating success */ ; #else g_warning ("No file assoc code - set pref in externals tab of prefs dialog"); return 0; #endif } /** Popups up the menu named. */ void popup_menu (gchar * name) { GtkWidget *menu = denemo_menusystem_get_widget (name); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); } /** * outputs a warning and sounds bell * @return none */ void warningmessage (gchar * msg) { gdk_beep (); g_warning ("%s", msg); } /** * Pops up an info or warning dialog and blocks until it is dismissed * @param msg warning message to display * @param info TRUE if informational only * @return none */ void infowarningdialog (gchar * msg, gboolean info) { if (Denemo.non_interactive) g_warning ("%s", msg); else { GtkWidget *dialog; dialog = gtk_message_dialog_new (GTK_WINDOW (Denemo.window), GTK_DIALOG_DESTROY_WITH_PARENT, info ? GTK_MESSAGE_INFO : GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, "%s", msg); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } } /** * Pops up a warning dialog and blocks until it is dismissed * @param msg warning message to display * @return none */ void warningdialog (gchar * msg) { infowarningdialog (msg, FALSE); } /** * Displays information message to screen, not blocking. * User can destroy window when no longer needed. * @param msg message to display * @return dialog */ GtkWidget * infodialog (gchar * msg) { if (Denemo.non_interactive) { g_info ("%s", msg); return NULL; } GtkWidget *dialog; dialog = gtk_message_dialog_new (GTK_WINDOW (Denemo.window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "%s", msg); #ifdef G_OS_WIN32 gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE); //needed on windows because of a bug, not all text can be seen. #endif g_signal_connect_swapped (dialog, "response", G_CALLBACK (gtk_widget_hide), dialog); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE); gtk_widget_show_all (dialog); return dialog; } /* data stucture to contain Progressbar * data */ typedef struct _ProgressData { GtkWidget *window; GtkWidget *pbar; int timer; gboolean progressing; } ProgressData; static ProgressData progress_data; /* Update the value of the progress bar so that we get * some movement */ static gboolean progress_timeout (void) { if (progress_data.progressing) gtk_progress_bar_pulse (GTK_PROGRESS_BAR (progress_data.pbar)); else { gtk_widget_hide (progress_data.window); progress_data.timer = 0; return FALSE; } return TRUE; } /** * Displays progress bar * optionally pass a callback to be run on delete signal * @param msg message to display, callback (can be NULL) */ GtkWindow * progressbar (gchar * msg, gpointer callback) { GtkWidget *vbox; ProgressData *pdata = &progress_data; if (pdata->progressing) pdata->window; if (pdata->window == NULL) { if (callback && Denemo.prefs.progressbardecorations) pdata->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); else pdata->window = gtk_window_new (GTK_WINDOW_POPUP); gtk_window_set_accept_focus (GTK_WINDOW (pdata->window), FALSE); //FIXME this is only a hint; perhaps we should embed the progress bar in the status line... gtk_window_set_title (GTK_WINDOW (pdata->window), _("Progress")); gtk_widget_set_tooltip_text (pdata->window, _("This indicates the the LilyPond typesetter is still working on setting the Denemo score. This can take a long time, particularly for polyphony where voices must not collide. You can continue editing while the typesetting is taking place.\nKill this window if you want to re-start the typesetting e.g. after fixing a mistake you just spotted.")); gtk_window_set_transient_for (GTK_WINDOW (pdata->window), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (pdata->window), TRUE); vbox = gtk_vbox_new (FALSE, 5); gtk_container_add (GTK_CONTAINER (pdata->window), vbox); pdata->pbar = gtk_progress_bar_new (); gtk_container_add (GTK_CONTAINER (vbox), pdata->pbar); gtk_widget_show_all (vbox); } /* set text inside progress bar */ gtk_progress_bar_set_text (GTK_PROGRESS_BAR (pdata->pbar), msg); if (pdata->timer == 0) pdata->timer = g_timeout_add (100, (GSourceFunc) progress_timeout, pdata); pdata->progressing = TRUE; /* If this is false the progress bar will stop */ gtk_widget_show (pdata->window); /* If widget is destroyed stop the printing */ if (callback) g_signal_connect (G_OBJECT (pdata->window), "delete-event", G_CALLBACK (callback /*call_stop_lilypond */ ), NULL); else g_signal_connect (G_OBJECT (pdata->window), "delete-event", G_CALLBACK (progressbar_stop), NULL); return GTK_WINDOW (pdata->window); } void progressbar_stop (void) { progress_data.progressing = FALSE; } void busy_cursor (GtkWidget * area) { static GdkCursor *busycursor = NULL; if (!busycursor) busycursor = gdk_cursor_new_for_display (gdk_display_get_default (), GDK_WATCH); if (gtk_widget_get_window (Denemo.printarea)) gdk_window_set_cursor (gtk_widget_get_window (area), busycursor); } void normal_cursor (GtkWidget * area) { static GdkCursor *arrowcursor = NULL; if (!arrowcursor) arrowcursor = Denemo.GDK_LEFT_PTR; if (gtk_widget_get_window (area)) gdk_window_set_cursor (gtk_widget_get_window (area), arrowcursor); } /** * Draws the given bitmap mask on to the pixmap using the given * grahpics context. * * @param pixmap pixmap be drawn on. * @param gc graphics context to use * @param mask bitmap to be drawn * @param x x position on the pixmap * @param y y position on the pixmap * @param width width of the bitmap mask * @param height height of the bitmap mask * * @return none */ #ifdef G_OS_WIN32 //this code actually works on GNU/Linux too, it is not clear what to prefer static void windows_draw_text (cairo_t * cr, const char *font, const char *text, double x, double y, double size, gboolean invert) { y -= size; size *= 0.75; PangoLayout *layout; PangoFontDescription *desc; /* Create a PangoLayout, set the font and text */ layout = pango_cairo_create_layout (cr); pango_layout_set_text (layout, text, -1); desc = pango_font_description_from_string (font); pango_font_description_set_size (desc, size * PANGO_SCALE); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); pango_cairo_update_layout (cr, layout); cairo_move_to (cr, x, y); if (invert) cairo_scale (cr, 1, -1); pango_cairo_show_layout (cr, layout); /* free the layout object */ g_object_unref (layout); } #endif void drawbitmapinverse_cr (cairo_t * cr, DenemoGraphic * mask, gint x, gint y, gboolean invert) { cairo_save (cr); switch (mask->type) { case DENEMO_BITMAP: { #if GTK_MAJOR_VERSION==3 gdk_cairo_set_source_window (cr, mask->graphic, x, y); //??? bitmap???? asks torbenh #else cairo_rectangle (cr, x, y, mask->width, mask->height); #endif cairo_fill (cr); break; } case DENEMO_PATTERN: { cairo_pattern_t *pattern = (cairo_pattern_t *) mask->graphic; cairo_translate (cr, x, y); cairo_mask (cr, pattern); break; } case DENEMO_FONT: { DenemoGlyph *glyph = mask->graphic; #ifdef G_OS_WIN32 y+= 4; windows_draw_text (cr, glyph->fontname, glyph->utf, x, y - 25, glyph->size, invert); #else cairo_select_font_face (cr, glyph->fontname, glyph->slant, glyph->weight); cairo_set_font_size (cr, glyph->size); cairo_move_to (cr, x, y); if (invert) cairo_scale (cr, 1, -1); cairo_show_text (cr, glyph->utf); #endif break; } } cairo_restore (cr); } void drawfetachar_cr (cairo_t * cr, gunichar uc, double x, double y) { int len; char utf_string[8]; len = g_unichar_to_utf8 (uc, utf_string); utf_string[len] = '\0'; // windows_draw_text (cr, "feta26", utf_string, x, y, 35.0, FALSE); this fails to position stuff correctly, but the code below is working on windows anyway. cairo_select_font_face (cr, "feta26", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, 35.0); cairo_move_to (cr, x, y); cairo_show_text (cr, utf_string); } void drawtext_cr (cairo_t * cr, const char *text, double x, double y, double size) { if (*text) { #ifdef G_OS_WIN32 return windows_draw_text (cr, "Denemo", text, x, y, size, FALSE); //these values arrived at by trial and error, to match the previously used code below #else //use the FreeSerif font as it has music symbols - there is no font substitution done by cairo here cairo_select_font_face (cr, "Denemo", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, size); cairo_move_to (cr, x, y); cairo_show_text (cr, text); #endif } } void drawnormaltext_cr (cairo_t * cr, const char *text, double x, double y) { drawtext_cr (cr, text, x, y, 14.0); } void drawlargetext_cr (cairo_t * cr, const char *text, double x, double y) { drawtext_cr (cr, text, x, y, 24.0); } /* draw display text and or graphics for directives return the widest graphic width*/ gint draw_for_directives (cairo_t * cr, GList * directives, gint x, gint y, gboolean at_cursor) { gint count = 10; gint maxwidth = 0; for (; directives; directives = directives->next, count += 10) { DenemoDirective *directive = (DenemoDirective *) directives->data; guint layout = selected_layout_id (); gdouble only = (directive->layouts && !wrong_layout (directive, layout)) ? 0.5 : 0.0; gdouble exclude = (directive->layouts && wrong_layout (directive, layout)) ? 0.9 : 0.0; //if (directive->y && directive->y != layout) // exclude = 0.9; if (exclude > 0.0 || only > 0.0) { cairo_save (cr); cairo_set_source_rgba (cr, 0.4 + exclude - only / 2, 0.5 + only, 0.4 - only / 2, at_cursor ? 1.0 : 0.7); } if (directive->graphic) { gint gwidth, gheight; gwidth = directive->graphic->width; gheight = directive->graphic->height; maxwidth = MAX (gwidth, maxwidth); // g_print("%p %p drawing a graphic at %d %d\n",directive,Denemo.project->movement->directive_on_clipboard, x + directive->gx + count - gwidth / 2, y + directive->gy - gheight / 2); drawbitmapinverse_cr (cr, directive->graphic, x + directive->gx + count - gwidth / 2, y + directive->gy - gheight / 2, FALSE); if (directive == Denemo.project->movement->directive_on_clipboard) { cairo_save (cr); cairo_set_source_rgba (cr, 0.4, 0.8, 0.5, 0.7); cairo_arc (cr, x + directive->gx + count, y + directive->gy, MAX (gwidth, 8.0), 0.0, 2 * M_PI); cairo_fill (cr); cairo_restore (cr); } } if (directive->display) { #define MAXLEN (8) gchar c = 0; //if it is a long string only show it all when cursor is on it also only display from first line gchar *p; for (p = directive->display->str; *p; p++) { if (*p == '\n' || (!at_cursor && (p - directive->display->str) > MAXLEN)) { c = *p; *p = 0; break; } } drawnormaltext_cr (cr, directive->display->str, x + directive->tx + count, y + directive->ty); if (directive == Denemo.project->movement->directive_on_clipboard) { cairo_save (cr); cairo_set_source_rgba (cr, 0.4, 0.8, 0.5, 0.7); cairo_arc (cr, x + directive->tx + count + 4, y + directive->ty - 4, 8.0, 0.0, 2 * M_PI); cairo_fill (cr); cairo_restore (cr); } if (c) { *p = c; } if (exclude > 0.0 || only > 0.0) cairo_restore (cr); } } return maxwidth; } /* draw a brace straight or curly */ void draw_staff_brace (cairo_t * cr, gboolean curly, gint x, gint y, gint height) { if(Denemo.hovering_over_brace) cairo_set_source_rgb (cr, 0, 0.8, 0.1); else cairo_set_source_rgb (cr, 0, 0, 0); if (!curly) { drawfetachar_cr (cr, 0xD8, x, y); cairo_rectangle (cr, x, y + 2.0, 3, height - 4.0); cairo_fill (cr); cairo_rectangle (cr, x + 5.0, y + 1.0, 1, height - 2.0); cairo_fill (cr); drawfetachar_cr (cr, 0xD9, x, y + height); } else { //cairo_translate (cr, 0, 10.0); cairo_translate (cr, x - 5, y + 2); cairo_scale (cr, 1.0, height / 100.0); cairo_append_path (cr, &piano_brace_path); cairo_fill (cr); } return; } gchar * pretty_name (gchar * lilynote) //display ð„ªð„«â™¯â™­â™® with note name { static gchar *natural = NULL; static gchar *sharp; static gchar *flat; static gchar *double_sharp; static gchar *double_flat; gchar *answer; if (!natural) { natural = g_strdup ("Câ™®"); sharp = g_strdup ("C♯"); flat = g_strdup ("Câ™­"); double_sharp = g_strdup ("Cð„ª"); double_flat = g_strdup ("Cð„«"); } answer = natural; if (*(lilynote + 1) == 0) answer = natural; else if (*(lilynote + 1) == 'i') { if (*(lilynote + 3) == 'i') answer = double_sharp; else answer = sharp; } else if (*(lilynote + 1) == 'e') { if (*(lilynote + 3) == 'e') answer = double_flat; else answer = flat; } *answer = toupper (*lilynote); return answer; } /** * Utility function to set the number of ticks used by the given object * if it is within a given tuplet * * @param theobj DenemoObject to set the number of ticks * @param numerator numerator of the current tuplet * @param denominator denominator of the current tuplet * @return none */ void set_tuplefied_numticks (DenemoObject * theobj, gint numerator, gint denominator) { theobj->durinticks = theobj->basic_durinticks * numerator / denominator; /* Though WHOLENUMTICKS is chosen strategically so that in common * cases, this division works out evenly, things should also work * out properly if it doesn't; i.e., durinticks_untupletized is * rounded down */ } /** * Utility function to set the number of ticks of a mudela object * in a grace note * @param theobj the DenemoObject to set the number of ticks * @param multiplier the grace notes multiplier * @return none */ void set_grace_numticks (DenemoObject * theobj, gint multiplier) { theobj->durinticks = theobj->basic_durinticks / multiplier; } /** * Sets the number of ticks taken by the given DenemoObject. * * @param theobj the mudela object to set the number of ticks on * @return none */ void set_basic_numticks (DenemoObject * theobj) { gint power; gint withoutdots; gint addperdot, i; switch (theobj->type) { case CHORD: if (((chord *) theobj->object)->baseduration < 0) { withoutdots = -((chord *) theobj->object)->baseduration; } else { power = 1 << ((chord *) theobj->object)->baseduration; withoutdots = WHOLE_NUMTICKS / power; } addperdot = withoutdots / 2; theobj->basic_durinticks = withoutdots; for (i = 0; i < ((chord *) theobj->object)->numdots; addperdot /= 2, i++) theobj->basic_durinticks += addperdot; break; default: theobj->basic_durinticks = 0; theobj->durinticks = 0; /* There's no reason not to set that as well */ break; } } /** * Returns the amount of space to be left after a note or rest, only * taking the width of the measure into consideration * * @param numticks the number of ticks taken so far * @param wholenotewidth the number of ticks taken be a whole note * @return the amount of space to be left after a note or rest */ gint space_after (gint numticks, gint wholenotewidth) { return MAX (numticks * wholenotewidth / WHOLE_NUMTICKS, 0); } #define EXTRAWIDTH 5 /** * Sets the minimum space that needs to be allocated for drawing a mudela * object based on the type * also sets space_before * @param theobj the DenemoObject to set the minimum space on * @return none */ void setpixelmin (DenemoObject * theobj) { gint i, baseduration, headtype; chord chordval; GList *tnode; note *thetone; /* And these static declaration are copied right out of drawnotes.c * and drawaccidentals.c */ switch (theobj->type) { case CHORD: chordval = *(chord *) theobj->object; baseduration = chordval.baseduration; baseduration = MAX (baseduration, 0); headtype = MIN (baseduration, 2); if (headtype < 0) headtype = 0; //-ve values of baseduration are for specials gint directive_pixels = 0; // the largest amount of extra space asked for by any directive GList *g = chordval.directives; for (; g; g = g->next) directive_pixels = MAX (directive_pixels, ((DenemoDirective *) g->data)->minpixels); if (chordval.notes) { theobj->minpixelsalloted = headwidths[headtype]; //search through notes and their attached directives, find max display space requested //use this below g = chordval.notes; for (; g; g = g->next) { GList *h = ((note *) g->data)->directives; for (; h; h = h->next) directive_pixels = MAX (directive_pixels, ((DenemoDirective *) h->data)->minpixels); } } else /* a rest */ theobj->minpixelsalloted = restwidths[baseduration]; // Allow extra space specified by attached LilyPond directives - example: theobj->minpixelsalloted += directive_pixels; /* 12 pixels for the first dot, 6 for each dot thereafter */ if (chordval.numdots) theobj->minpixelsalloted += 6; for (i = 0; i < chordval.numdots; i++) theobj->minpixelsalloted += 6; theobj->space_before = 0; if (chordval.hasanacc) for (tnode = chordval.notes; tnode; tnode = tnode->next) { thetone = (note *) tnode->data; if (thetone->showaccidental) theobj->space_before = MAX (theobj->space_before, thetone->position_of_accidental); } if (chordval.is_reversealigned) { if (chordval.is_stemup) theobj->minpixelsalloted += headwidths[headtype]; else if (!chordval.hasanacc) /* Accidental positioning already accounts for the extra leading space that we need for reverse-aligned noteheads, provided the chord has an accidental in it somewhere. We only have to remark upon noteheads to the left of the stem if there weren't any accidentals to position. */ theobj->space_before += headwidths[headtype]; } theobj->minpixelsalloted += EXTRAWIDTH; break; case TUPOPEN: case TUPCLOSE: /* The real way do this will be with a gdk_string_width. Until * then, though: */ theobj->minpixelsalloted = #if 0 40; #else 16; #endif theobj->space_before = theobj->minpixelsalloted / 2; break; case LILYDIRECTIVE: { DenemoDirective *directive = (DenemoDirective *) theobj->object; theobj->minpixelsalloted = directive->minpixels ? directive->minpixels : 16; theobj->space_before = theobj->minpixelsalloted / 2; } break; case CLEF: theobj->minpixelsalloted = 35; theobj->space_before = 0; break; case KEYSIG: theobj->minpixelsalloted = 20; //needed so find_xes_in_measures assigns space to it without waiting for drawing to do so. theobj->space_before = 0; break; case TIMESIG: theobj->minpixelsalloted = 40; theobj->space_before = 0; break; case STEMDIRECTIVE: /* The real way do this will be with a gdk_string_width. Until * then, though: */ theobj->minpixelsalloted = 40; theobj->space_before = 0; break; case DYNAMIC: theobj->minpixelsalloted = 40; theobj->space_before = 0; break; case GRACE_START: case GRACE_END: theobj->minpixelsalloted = 16; theobj->space_before = theobj->minpixelsalloted / 2; break; default: theobj->minpixelsalloted = 0; theobj->space_before = 0; break; } } /** * * @param mid_c_offset the mid_c_offset of the the tone * @param dclef the clef of the current tone * * @return the height of a tone based on its mid_c_offset and the clef that it's in */ gint calculateheight (gint mid_c_offset, gint dclef) { switch (dclef) { case DENEMO_TREBLE_CLEF: return 5 * LINE_SPACE - HALF_LINE_SPACE * mid_c_offset; break; /* Probably gratuitous */ case DENEMO_ALTO_CLEF: return 2 * LINE_SPACE - HALF_LINE_SPACE * mid_c_offset; break; case DENEMO_G_8_CLEF: return LINE_SPACE - HALF_LINE_SPACE * (mid_c_offset - 1); break; case DENEMO_BASS_CLEF: return -LINE_SPACE - HALF_LINE_SPACE * mid_c_offset; break; case DENEMO_F_8_CLEF: return -5 * LINE_SPACE - HALF_LINE_SPACE * (mid_c_offset - 1); break; case DENEMO_TENOR_CLEF: return LINE_SPACE - HALF_LINE_SPACE * mid_c_offset; break; case DENEMO_SOPRANO_CLEF: return LINE_SPACE - HALF_LINE_SPACE * (mid_c_offset - 6); break; case DENEMO_FRENCH_CLEF: return 6 * LINE_SPACE - HALF_LINE_SPACE * (mid_c_offset); break; case DENEMO_BARITONE_CLEF: return - HALF_LINE_SPACE * (mid_c_offset); break; } return (0); } /** * Converts the given offset to a number * * @param n the offset to convert * @return the result of the offset conversion */ gint offsettonumber (gint n) { if (n >= 0) return n % 7; else return (7 - (-n % 7)) % 7; /* Not all C implementations conform to the more recent standard on how % should operate on negative operands. */ } /** * converts the int mid_c_offset to the lilypond name * returns a gchar * so it will have to be freed * 0 returns "c", 1 returns "cis" * The octave ",,, or '''" is also appended" */ gchar * mid_c_offsettolily (int mid_c_offset, int enshift) { gint octave, k; GString *lilynote = g_string_new (""); g_string_append_printf (lilynote, "%c", mid_c_offsettoname (mid_c_offset)); if (enshift < 0) for (k = enshift; k; k++) g_string_append_printf (lilynote, "es"); else for (k = enshift; k; k--) g_string_append_printf (lilynote, "is"); octave = mid_c_offsettooctave (mid_c_offset); if (octave < 0) for (; octave; octave++) g_string_append_printf (lilynote, ","); else for (; octave; octave--) g_string_append_printf (lilynote, "\'"); return g_string_free (lilynote, FALSE); } /** * converts the mid_c_offset to the correct letter name * @param mid_c_offset the mid_c_offset to convert * @return the character name of the mid_c_offset */ gchar mid_c_offsettoname (gint mid_c_offset) { gint otn = offsettonumber (mid_c_offset); return ((otn + 2) % 7) + 'a'; } void note2lilynotename (struct note *noteobject, GString * ret) { gint mid_c_offset = noteobject->mid_c_offset; g_string_append_printf (ret, "%c", mid_c_offsettoname (mid_c_offset)); } void note2lilyaccidental (struct note *noteobject, GString * ret) { gint enshift = noteobject->enshift; gint k; if (enshift < 0) for (k = enshift; k; k++) g_string_append_printf (ret, "es"); else for (k = enshift; k; k--) g_string_append_printf (ret, "is"); } void note2lilyoctave (struct note *noteobject, GString * ret) { gint mid_c_offset = noteobject->mid_c_offset; gint octave = mid_c_offsettooctave (mid_c_offset); if (octave < 0) for (; octave; octave++) g_string_append_printf (ret, ","); else for (; octave; octave--) g_string_append_printf (ret, "\'"); } void chord2lilyduration (struct chord *chordobject, GString * ret) { chord2lilybaseduration (chordobject, ret); chord2lilynumdots (chordobject, ret); } void chord2lilybaseduration (struct chord *chordobject, GString * ret) { int baseduration = chordobject->baseduration; g_string_append_printf (ret, "%d", baseduration); } void chord2lilynumdots (struct chord *chordobject, GString * ret) { int numdots = chordobject->numdots; g_string_append_printf (ret, "%d", numdots); } /** * Calculate a pitches octave from the mid_c_offset * @param mid_c_offset the mid_c_offset to use * @return the octave of the given mid_c_offset */ gint mid_c_offsettooctave (gint mid_c_offset) { if (mid_c_offset < 0) return -((-mid_c_offset + 6) / 7) + 1; else return (mid_c_offset / 7) + 1; } /** * g_list_foreach helper function to free the given data * @param data the list elements data * @param user_data any user supplied data (not used in this case) */ void freeit (gpointer data, gpointer user_data) { g_free (data); } /************* routines for calling from debug code ***************/ #include "command/staff.h" G_GNUC_UNUSED void printobj (objnode * obj) { DenemoObject *curObj; curObj = (DenemoObject *) (obj->data); switch (curObj->type) { case CHORD: fprintf (stderr, "\t\t%s type\n", "CHORD"); break; case TUPOPEN: fprintf (stderr, "\t\t%s type\n", "TUPOPEN"); break; case TUPCLOSE: fprintf (stderr, "\t\t%s type\n", "TUPCLOSE"); break; case CLEF: fprintf (stderr, "\t\t%s type\n", "CLEF"); break; case TIMESIG: fprintf (stderr, "\t\t%s type\n", "TIMESIG"); break; case KEYSIG: fprintf (stderr, "\t\t%s type\n", "KEYSIG"); break; case BARLINE: fprintf (stderr, "\t\t%s type\n", "BARLINE"); break; case STEMDIRECTIVE: fprintf (stderr, "\t\t%s type\n", "STEMDIRECTIVE"); break; case MEASUREBREAK: fprintf (stderr, "\t\t%s type\n", "MEASUREBREAK"); break; case DYNAMIC: fprintf (stderr, "\t\t%s type\n", "DYNAMIC"); break; case GRACE_START: fprintf (stderr, "\t\t%s type\n", "GRACE_START"); break; case GRACE_END: fprintf (stderr, "\t\t%s type\n", "GRACE_END"); break; case LYRIC: fprintf (stderr, "\t\t%s type\n", "LYRIC"); break; case FIGURE: fprintf (stderr, "\t\t%s type\n", "FIGURE"); break; default: /* needs to be up to date with enum in include/denemo/denemo.h */ fprintf (stderr, "!!!!!unknown object type %x - see enum in denemo.h\n", curObj->type); break; } } G_GNUC_UNUSED void printobjs (objnode * obj) { objnode *curobj; if (obj == NULL) { fprintf (stderr, "NULL object\n"); return; } printobj (obj); fprintf (stderr, "previous objects\n"); curobj = obj; while (curobj->prev) { printobj (curobj->prev); curobj = curobj->prev; } fprintf (stderr, "next objects\n"); curobj = obj; while (curobj->next) { printobj (curobj->next); curobj = curobj->next; } } G_GNUC_UNUSED void printmeasure (measurenode * mnode) { if (mnode == NULL) { fprintf (stderr, "Empty measure\n"); return; } printobjs ((objnode *) measure_first_obj_node (mnode)); } G_GNUC_UNUSED void printmeasures (staffnode * thestaff) { GList *measure = staff_first_measure_node (thestaff); gint measurenum = 1; for (measure = staff_first_measure_node (thestaff); measure; measure = measure->next) { fprintf (stderr, "*************Measure %d *************\n", measurenum++); printmeasure (measure); } } G_GNUC_UNUSED void printscoreinfo (DenemoMovement * si) { if (si->thescore == NULL) { fprintf (stderr, "Staff with NULL thescore field\n"); return; } printmeasures (si->thescore); } /** * Function that initializes the code needed for the directory relocation. * @return none */ void initdir () { #ifndef G_OS_WIN32 GError *error = NULL; if (!gbr_init (&error) && (error != (GError *) GBR_INIT_ERROR_DISABLED)) { g_debug ("BinReloc failed to initialize:\n"); g_debug ("Domain: %d (%s)\n", (int) error->domain, g_quark_to_string (error->domain)); g_debug ("Code: %d\n", error->code); g_debug ("Message: %s\n", error->message); g_error_free (error); g_debug ("----------------\n"); } #endif /* not G_OS_WIN32 */ } extern gchar *gbr_find_pkg_data_dir (const gchar * default_pkg_data_dir, const gchar * pkg_name); static gchar *DENEMO_datadir = NULL; const gchar * get_system_data_dir () { //DENEMO_datadir?g_debug("datadir is %s at %p", DENEMO_datadir, DENEMO_datadir):g_debug("datadir not yet set"); if (DENEMO_datadir == NULL) { #ifdef G_OS_WIN32 gchar *rootdir = g_win32_get_package_installation_directory (NULL, NULL); DENEMO_datadir = g_build_filename (rootdir, "share", "denemo", NULL); g_message ("rootdir=%s", rootdir); g_message ("datadir=%s", DENEMO_datadir); g_free (rootdir); #else /* not G_OS_WIN32 */ #ifdef _MACH_O_ { char path[1024]; guint size = sizeof (path); _NSGetExecutablePath (path, &size); gchar *bindir = (gchar *) g_malloc (size); if (_NSGetExecutablePath (bindir, &size) == 0) g_message ("Using bin path %s", bindir); else g_critical ("Cannot get bin dir"); DENEMO_datadir = g_build_filename (g_path_get_dirname (bindir), "..", "share", "denemo", NULL); g_message ("OSX set data dir to %s", DENEMO_datadir); } #else #ifndef ENABLE_BINRELOC DENEMO_datadir = g_strdup (PKGDATADIR); #else DENEMO_datadir = gbr_find_pkg_data_dir (PKGDATADIR, PKGNAME); #endif //ENABLE_BINRELOC #endif //_MACH_O_ #endif /* not G_OS_WIN32 */ } return DENEMO_datadir; } const gchar * get_prefix_dir (void) { gchar *prefix; #ifdef G_OS_WIN32 prefix = g_win32_get_package_installation_directory (NULL, NULL); #else /* not G_OS_WIN32 */ #ifdef _MACH_O_ { char path[1024]; guint size = sizeof (path); _NSGetExecutablePath (path, &size); gchar *bindir = (gchar *) g_malloc (size); if (_NSGetExecutablePath (bindir, &size) == 0) { prefix = g_build_filename (bindir, "..", "..", NULL); g_message ("OSX set data prefix to %s", prefix); } else g_critical ("Cannot get bin dir"); } #else #ifndef ENABLE_BINRELOC prefix = g_strdup (PREFIX); #else prefix = gbr_find_prefix (PREFIX); #endif //ENABLE_BINRELOC #endif //_MACH_O_ #endif //G_OS_WIN32 return prefix; } static gchar *DENEMO_bindir = NULL; const gchar * get_system_bin_dir (void) { if (DENEMO_bindir == NULL) { #ifdef G_OS_WIN32 gchar *rootdir = g_win32_get_package_installation_directory (NULL, NULL); DENEMO_bindir = g_build_filename (rootdir, "bin", NULL); g_message ("rootdir=%s", rootdir); g_message ("bindir=%s", DENEMO_bindir); g_free (rootdir); #else /* not G_OS_WIN32 */ #ifdef _MACH_O_ { char path[1024]; guint size = sizeof (path); _NSGetExecutablePath (path, &size); gchar *bin = (gchar *) g_malloc (size); if (_NSGetExecutablePath (bin, &size) == 0) { DENEMO_bindir = g_build_filename (bin, "..", NULL); g_message ("Using bin path %s", DENEMO_bindir); } else g_critical ("Cannot get bin dir"); g_message ("OSX set bin dir to %s", DENEMO_bindir); } #else #ifndef ENABLE_BINRELOC DENEMO_bindir = g_strdup (BINDIR); #else DENEMO_bindir = gbr_find_bin_dir (BINDIR); #endif //ENABLE_BINRELOC #endif //_MACH_O_ #endif /* not G_OS_WIN32 */ } return DENEMO_bindir; } /** UNUSED const gchar * get_system_conf_dir () { static gchar *confdir = NULL; if (confdir == NULL) { #ifdef G_OS_WIN32 gchar *rootdir = g_win32_get_package_installation_directory (NULL, NULL); confdir = g_build_filename (rootdir, "etc", "denemo", NULL); g_free (rootdir); #else // not G_OS_WIN32 #ifdef _MACH_O_ { char path[1024]; guint size = sizeof (path); _NSGetExecutablePath (path, &size); gchar *bindir = (gchar *) g_malloc (size); if (_NSGetExecutablePath (bindir, &size) == 0) g_debug ("using bin path %s\n", bindir); else g_critical ("Cannot get bin dir\n"); confdir = g_build_filename (g_path_get_dirname (bindir), "..", "etc", "denemo", NULL); g_debug ("OSX set conf dir to %s\n", confdir); } #else #ifndef ENABLE_BINRELOC confdir = g_build_filename (SYSCONFDIR, NULL); #else confdir = g_build_filename (gbr_find_etc_dir (SYSCONFDIR), "denemo", NULL); #endif //ENABLE_BINRELOC #endif //_MACH_O_ #endif // not G_OS_WIN32 } return confdir; } */ const gchar * get_system_locale_dir () { static gchar *localedir = NULL; if (localedir == NULL) { #ifdef G_OS_WIN32 gchar *rootdir = g_win32_get_package_installation_directory (NULL, NULL); localedir = g_build_filename (rootdir, "share", "locale", NULL); g_free (rootdir); #else /* not G_OS_WIN32 */ #ifdef _MACH_O_ { char path[1024]; guint size = sizeof (path); _NSGetExecutablePath (path, &size); gchar *bindir = (gchar *) g_malloc (size); if (_NSGetExecutablePath (bindir, &size) == 0) g_message ("Using bin path %s", bindir); else g_critical ("Cannot get bin dir"); localedir = g_build_filename (g_path_get_dirname (bindir), "..", "share", "locale", NULL); g_message ("OSX set locale dir to %s", localedir); } #else #ifndef ENABLE_BINRELOC /* it seems to be the standard way (no binreloc) * to set the path of translations this way: * messages are in $LOCALEDIR/$LANG/denemo */ localedir = g_strdup (LOCALEDIR); #else /* ENABLE_BINRELOC */ /* binreloc says it is disabled even with built thanks to * --enable-binreloc... So, searhing falls back to * $LOCALEDIR/denemo/$LANG which is not a valid path */ localedir = gbr_find_locale_dir (LOCALEDIR); #endif /* ENABLE_BINRELOC */ #endif #endif /* not G_OS_WIN32 */ } return localedir; } const gchar * get_system_font_dir () { static gchar *fontdir = NULL; if (fontdir == NULL) { #ifdef G_OS_WIN32 gchar *prefix = g_win32_get_package_installation_directory (NULL, NULL); #else gchar *prefix = g_build_filename (get_prefix_dir (), NULL); #endif fontdir = g_build_filename (prefix, "share", "fonts", "truetype", "denemo", NULL); } return fontdir; } void kill_process (GPid pid) { #ifdef G_OS_WIN32 TerminateProcess (pid, 0); #else /* not G_OS_WIN32 */ kill (pid, SIGTERM); #endif /* not G_OS_WIN32 */ g_spawn_close_pid (pid); } void init_denemo_notenames (void) { define_scheme_literal_variable ("Denemo-Note0", NOTE0, NULL); define_scheme_literal_variable ("Denemo-Rest0", REST0, NULL); define_scheme_literal_variable ("Denemo-Note1", NOTE1, NULL); define_scheme_literal_variable ("Denemo-Rest1", REST1, NULL); define_scheme_literal_variable ("Denemo-Note2", NOTE2, NULL); define_scheme_literal_variable ("Denemo-Rest2", REST2, NULL); define_scheme_literal_variable ("Denemo-Note3", NOTE3, NULL); define_scheme_literal_variable ("Denemo-Rest3", REST3, NULL); define_scheme_literal_variable ("Denemo-Note4", NOTE4, NULL); define_scheme_literal_variable ("Denemo-Rest4", REST4, NULL); define_scheme_literal_variable ("Denemo-Note5", NOTE5, NULL); define_scheme_literal_variable ("Denemo-Rest5", REST5, NULL); define_scheme_literal_variable ("Denemo-Note6", NOTE6, NULL); define_scheme_literal_variable ("Denemo-Rest6", REST6, NULL); define_scheme_literal_variable ("Denemo-Note7", NOTE7, NULL); define_scheme_literal_variable ("Denemo-Rest7", REST7, NULL); define_scheme_literal_variable ("Denemo-Note8", NOTE8, NULL); define_scheme_literal_variable ("Denemo-Rest8", REST8, NULL); } #define HIGHLIGHT " " /* markup the passed string to be in the denemo music font * caller must free the returned string */ gchar * music_font (gchar * str) { GString *s = g_string_new (""); gint c = *str; for (c = *str; c; c = *++str) switch (c) { case '0': g_string_append (s, " " NOTE0 " "); break; case HIGHLIGHT_OFFSET + '0': g_string_append (s, HIGHLIGHT NOTE0 " "); break; case '1': g_string_append (s, " " NOTE1 " "); break; case HIGHLIGHT_OFFSET + '1': g_string_append (s, HIGHLIGHT NOTE1 " "); break; case '2': g_string_append (s, " " NOTE2 " "); break; case HIGHLIGHT_OFFSET + '2': g_string_append (s, HIGHLIGHT NOTE2 " "); break; case '3': g_string_append (s, " " NOTE3 " "); break; case HIGHLIGHT_OFFSET + '3': g_string_append (s, HIGHLIGHT NOTE3 " "); break; case '4': g_string_append (s, " " NOTE4 " "); break; case HIGHLIGHT_OFFSET + '4': g_string_append (s, HIGHLIGHT NOTE4 " "); break; case '5': g_string_append (s, " " NOTE5 " "); break; case HIGHLIGHT_OFFSET + '5': g_string_append (s, HIGHLIGHT NOTE5 " "); break; case '6': g_string_append (s, " " NOTE6 " "); break; case HIGHLIGHT_OFFSET + '6': g_string_append (s, HIGHLIGHT NOTE6 " "); break; case '7': g_string_append (s, " " NOTE7 " "); break; case HIGHLIGHT_OFFSET + '7': g_string_append (s, HIGHLIGHT NOTE7 " "); break; case '8': g_string_append (s, " " NOTE8 " "); break; case HIGHLIGHT_OFFSET + '8': g_string_append (s, HIGHLIGHT NOTE8 " "); break; case 'r': g_string_append (s, " " REST0 " "); break; case HIGHLIGHT_OFFSET + 'r': g_string_append (s, HIGHLIGHT REST0 " "); break; case 's': g_string_append (s, " " REST1 " "); break; case HIGHLIGHT_OFFSET + 's': g_string_append (s, HIGHLIGHT REST1 " "); break; case 't': g_string_append (s, " " REST2 " "); break; case HIGHLIGHT_OFFSET + 't': g_string_append (s, HIGHLIGHT REST2 " "); break; case 'u': g_string_append (s, " " REST3 " "); break; case HIGHLIGHT_OFFSET + 'u': g_string_append (s, HIGHLIGHT REST3 " "); break; case 'v': g_string_append (s, " " REST4 " "); break; case HIGHLIGHT_OFFSET + 'v': g_string_append (s, HIGHLIGHT REST4 " "); break; case 'w': g_string_append (s, " " REST5 " "); break; case HIGHLIGHT_OFFSET + 'w': g_string_append (s, HIGHLIGHT REST5 " "); break; case 'x': g_string_append (s, " " REST6 " "); break; case HIGHLIGHT_OFFSET + 'x': g_string_append (s, HIGHLIGHT REST6 " "); break; case 'y': g_string_append (s, " " REST7 " "); break; case HIGHLIGHT_OFFSET + 'y': g_string_append (s, HIGHLIGHT REST7 " "); break; case 'z': g_string_append (s, " " REST8 " "); break; case HIGHLIGHT_OFFSET + 'z': g_string_append (s, HIGHLIGHT REST8 " "); break; default: g_string_append_c (s, c); } return g_string_free (s, FALSE); } void set_title_bar (DenemoProject * gui) { if (Denemo.non_interactive) return; gchar *title; if (gui->tabname && gui->tabname->len) title = gui->tabname->str; else title = _("(Untitled)"); title = g_strdup_printf ("%s%c", title, gui->notsaved ? '*' : ' '); gtk_window_set_title (GTK_WINDOW (Denemo.window), title); gchar *base = g_path_get_basename (title); gint index = g_list_index (Denemo.projects, gui); if (index < 0) { g_critical ("project is %p is not in list of projects, first tab is %p\n", gui, Denemo.projects->data); return; } GtkWidget *page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (Denemo.notebook), index); if (page == NULL) { g_critical ("Bad page, passed project is %p, first tab is %p\n", gui, Denemo.projects->data); return; } gtk_notebook_set_tab_label_text (GTK_NOTEBOOK (Denemo.notebook), page, base); gtk_notebook_set_menu_label_text (GTK_NOTEBOOK (Denemo.notebook), page, base); g_free (title); g_free (base); } static const gchar * enshift_string (gint enshift) { switch (enshift) { case -2: return "ð„«"; case -1: return "â™­"; case 0: return " "; case 1: return "♯"; case 2: return "ð„ª"; default: return _("Error"); } } gint64 thetime; static void start_editing_timer (void) { thetime = g_get_monotonic_time (); } static void stop_editing_timer (void) { gint64 thistime = g_get_monotonic_time (); if ((thetime > 0) && (thetime < thistime)) Denemo.project->total_edit_time += (thistime - thetime) / 1000000; } void reset_editing_timer (void) { thetime = 0; } gchar * time_spent_editing () { gint seconds = Denemo.project->total_edit_time; gint days = seconds / (24 * 60 * 60); gint hours; gint minutes; seconds -= days * (24 * 60 * 60); hours = (seconds / (60 * 60)); seconds -= hours * (60 * 60); minutes = seconds / 60; seconds -= minutes * 60; return g_strdup_printf ("%d days %d hours %d minutes %d seconds\n", days, hours, minutes, seconds); } /* set the status of the current musical score - its change count and title bar and status bars. DenemoProject *gui the musical score. gboolean change TRUE = a change has just been made FALSE = the score is to be assumed saved */ void score_status (DenemoProject * gui, gboolean change) { if (change) { gboolean just_changed = !gui->notsaved; gui->notsaved = TRUE; gui->changecount++; gui->movement->changecount++; if (just_changed) if (!Denemo.non_interactive) start_editing_timer (); } else { gui->notsaved = FALSE; if (!Denemo.non_interactive) stop_editing_timer (); } if (!Denemo.non_interactive) { set_title_bar (gui); write_status (gui); } } /** * If the curObj is a chord with a note(s) * return the first note at or below cursory, or the last note * else return NULL */ note * findnote (DenemoObject * curObj, gint cursory) { note *curnote = NULL; if (curObj && curObj->type == CHORD && ((chord *) curObj->object)->notes) { GList *notes = ((chord *) curObj->object)->notes; for (; notes; notes = notes->next) { curnote = (note *) notes->data; //g_debug("comparing %d and %d\n", cursory, curnote->y); if (cursory <= curnote->mid_c_offset) break; } } return curnote; } /** * If the curObj is a chord with a note(s) * return the note at cursory else return NULL */ note * findnote_strict (DenemoObject * curObj, gint cursory) { note *curnote = NULL; if (curObj && curObj->type == CHORD && ((chord *) curObj->object)->notes) { GList *notes = ((chord *) curObj->object)->notes; for (; notes; notes = notes->next) { curnote = (note *) notes->data; //g_debug("comparing %d and %d\n", cursory, curnote->y); if (cursory == curnote->mid_c_offset) return curnote; } } return NULL; } /* get a fret diagram for the chord at the cursor or before the cursor if not on the chord */ gchar * get_fretdiagram_as_markup (void) { DenemoProject *gui = Denemo.project; DenemoObject *curObj; if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || !(DENEMO_OBJECT_TYPE_NAME (curObj))) return NULL; if (curObj->type != CHORD && Denemo.project->movement->currentobject->next) curObj = Denemo.project->movement->currentobject->next->data; if (gui->lilysync != gui->changecount) refresh_lily_cb (NULL, Denemo.project); if (curObj->lilypond) { gchar *text = g_strdup_printf ("\\score{\n\\DenemoGlobalTranspose\n\\new FretBoards {%s}\n\\layout{indent=0.0}\n}", curObj->lilypond); return text; } return NULL; } static gint note1, note2, acc1, acc2, oct1, oct2; static void set_encoding (gint val, gboolean one) { if(val&7) { val = (val | (0xFFFF - 7)) & val; if (one) note1 = val; else note2 = val; return; } val = val>>4; if(val&7) { val = (val | (0xFFFF - 7)) & val; if (one) acc1 = val; else acc2 = val; return; } val = val>>4; // a total shift of >>8 now if(val&7) { if (one) oct1 = val; else oct2 = val; return; } } static void set_note_name_encoding1 (GtkWidget*w, gint val) { set_encoding (val,TRUE); } static void set_note_name_encoding2 (GtkWidget*w, gint val) { set_encoding (val, FALSE); } static gchar* note_name[]= {"A", "B","C","D","E","F","G" }; static gchar* note_name_lc[]= {"a", "b","c","d","e","f","g" }; static gchar* acc_name[]= {"â™®", "♯","â™­","ð„ª","ð„«", NULL,NULL, ""}; static gchar* acc_name_lily[]= {"", "is","es","isis","eses",NULL,NULL, ""}; static gchar *oct_name[] = {"1", "2","3","4","5","6","7","8"}; static gchar *oct_name_lily[] = { ",,,,", ",,,",",,", ",", "", "'", "''", "''"}; static gchar *decode_values (gint nm, gint acc, gint oct) { gchar *name = g_strdup (note_name_lc[nm - 1]); gchar *accname = acc_name_lily [acc]; gchar *octname = oct_name_lily [oct]; //g_print ("decoded %d %d %d %s %s %s\n",nm, acc, oct, name, accname, octname); return g_strconcat (name, accname, octname, NULL); } static gint decode_note (gchar *note) { gint ret = 0; if (*note) { gchar *c; ret = 1 + tolower (*note)-'a'; if (ret<1 || ret>7) ret = 0; c = note+1; if(g_str_has_prefix (c, "eses")) {c +=4; ret += (4<<4);} else if (g_str_has_prefix (c, "es")) {c +=2; ret += (2<<4);} else if (g_str_has_prefix (c, "isis")) {c +=5; ret += (3<<4);} else if (g_str_has_prefix (c, "is")) {c +=2; ret += (1<<4);} gint oct=0; while (*c==',') { oct++; c++; } if (oct) { ret += (4-oct)<<(4+4); } if (oct==0) // no ,,, { while (*c=='\'') { oct++; c++; } if (oct) { ret += (4+oct)<<(4+4); } else ret += (4+oct)<<(4+4);//can include in above case } } // g_print ("Encoded %s as 0x%x", note, ret); return ret; } gchar * notes_choice_dialog (gint number_of_notes /* 1 or 2 */, gchar *initial_value, gchar *meaning) { GtkWidget *dialog; gchar *text = NULL; gint j; gchar *title = (number_of_notes==1) ? _("Select Note") : _("Select Notes"); gint enc1=0, enc2=0; if (initial_value) { gchar first[50], second[50]; if ((number_of_notes == 2) && ( 2 == sscanf (initial_value, "%50s%50s", first, second))) { enc1 = decode_note (first); enc2 = decode_note (second); } else if ( 1 == sscanf (initial_value, "%50s", first)) { enc1 = decode_note (first); } note1 = enc1 & 7; note2 = enc2 & 7; enc1 >>=4; enc2 >>= 4; acc1 = enc1 & 7; acc2 = enc2 & 7; enc1 >>=4; enc2 >>= 4; oct1 = enc1 & 7; oct2 = enc2 & 7; //g_print ("Initial values are %s %s %s", note_name [note1], acc_name[acc1], oct_name[oct1]); } dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("Done"), GTK_RESPONSE_ACCEPT, _("Cancel"), GTK_RESPONSE_CANCEL, NULL); GtkWidget *frame; GtkWidget *area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); GtkWidget *hbox = gtk_hbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (area), hbox); frame = gtk_frame_new (_("Note Name")); gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, TRUE, 0); GtkWidget *vbox = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), vbox); for (j=0;j"); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); frame = gtk_frame_new (_("Note Name")); gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, TRUE, 0); vbox = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), vbox); } GtkWidget *button; void (*set_note_name_encoding)(GtkWidget*, gint) = j? set_note_name_encoding2: set_note_name_encoding1; //buttons for note name GtkWidget *button0 = gtk_radio_button_new_with_label_from_widget (NULL,note_name[0]); gtk_box_pack_start (GTK_BOX (vbox), button0, TRUE, TRUE, 0); if (note1==0) //no initial values set { note1 = note2 = 1; //initial choice "A" acc1 = acc2 = 7; //initial choice natural oct1 = oct2 = 4; //initial choice } gint i; for (i=1; i<7; i++) { GtkWidget *button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON(button0), note_name[i]); if (i == ((j?note2:note1)-1)) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(button), TRUE); //NOTE: setting this active actually causes the clicked signal to be fired! so must do it before connecting the handler g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (set_note_name_encoding), GINT_TO_POINTER(i+1)); gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0); } g_signal_connect (G_OBJECT (button0), "clicked", G_CALLBACK (set_note_name_encoding),GINT_TO_POINTER(1)); //buttons for accidental frame = gtk_frame_new (_("Accidental")); gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, TRUE, 0); GtkWidget *accbox = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), accbox); button0 = gtk_radio_button_new_with_label_from_widget (NULL,acc_name[0]); gtk_box_pack_start (GTK_BOX (accbox), button0, TRUE, TRUE, 0); for (i=1; i<5; i++) { GtkWidget *button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON(button0), acc_name[i]); if ((i==0 && ((j?acc2:acc1)==7)) || (i == ((j?acc2:acc1)))) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(button), TRUE); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (set_note_name_encoding), GINT_TO_POINTER(i<<4)); gtk_box_pack_start (GTK_BOX (accbox), button, TRUE, TRUE, 0); } g_signal_connect (G_OBJECT (button0), "clicked", G_CALLBACK (set_note_name_encoding),GINT_TO_POINTER(7<<4)); //buttons for octave if(number_of_notes == 2) //only offer octave for picking note pairs { frame = gtk_frame_new (_("Octave")); gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, TRUE, 0); GtkWidget *octbox = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), octbox); button0 = gtk_radio_button_new_with_label_from_widget (NULL,oct_name[0]); gtk_box_pack_start (GTK_BOX (octbox), button0, TRUE, TRUE, 0); for (i=1; i<7; i++) { GtkWidget *button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON(button0), oct_name[i]); if (i == ((j?oct2:oct1) -1)) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(button), TRUE); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (set_note_name_encoding), GINT_TO_POINTER((i+1)<<8)); gtk_box_pack_start (GTK_BOX (octbox), button, TRUE, TRUE, 0); } g_signal_connect (G_OBJECT (button0), "clicked", G_CALLBACK (set_note_name_encoding),GINT_TO_POINTER(1<<8)); } } gtk_widget_show_all (dialog); gtk_window_present(GTK_WINDOW (dialog)); //gtk_window_set_urgency_hint (GTK_WINDOW (dialog), TRUE); causes flashing on windows even when selected :( gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE); gint result = gtk_dialog_run (GTK_DIALOG (dialog)); if (result == GTK_RESPONSE_ACCEPT) { gchar *text1 = decode_values (note1, acc1, oct1); gchar *text2 = decode_values (note2, acc2, oct2); text = g_strdup_printf ("%s%s%s", text1, number_of_notes==2?" ":"", number_of_notes==2?text2:"");//g_print ("Octave 2 is %d %s so %s\n", oct2, text2, text); g_free (text1); g_free (text2); } gtk_widget_destroy (dialog); return text; } gchar *get_chord_notes (void) { DenemoObject *curObj; chord *thechord; note *thenote; GString *str = g_string_new (""); if (!Denemo.project || !(Denemo.project->movement) || !(Denemo.project->movement->currentobject) || !(curObj = Denemo.project->movement->currentobject->data) || (curObj->type != CHORD) || !(thechord = (chord *) curObj->object) || !(thechord->notes) || !(thenote = (note *) thechord->notes->data)) return NULL; else { GList *g; for (g = thechord->notes; g; g = g->next) { thenote = (note *) g->data; gchar *name = mid_c_offsettolily (thenote->mid_c_offset, thenote->enshift); str = g_string_append (str, name); if (g->next) str = g_string_append (str, " "); } return g_string_free (str, FALSE); } return NULL; } /**************** * write the status bar ********************/ void write_status (DenemoProject * gui) { if (Denemo.non_interactive) return; gint minutes = 0; gdouble seconds = 0.0; gdouble early = 0.0, late = 0.0; gchar *selection; if (gui->movement == NULL) return; static GList *last_object; if ((get_wysiwyg_info ()->stage != SelectingFarEnd)) if (gui->movement->currentobject) { if ((last_object != gui->movement->currentobject)) { if (get_wysiwyg_info ()->stage != TypesetForPlaybackView) get_wysiwyg_info ()->stage = STAGE_NONE; //remove the mark in the printview window as the cursor has moved get_wysiwyg_info ()->Mark.width = 0; gtk_widget_queue_draw (Denemo.printarea); } last_object = gui->movement->currentobject; } if (gui->movement->currentobject && gui->movement->currentobject->data) { DenemoObject *curObj = gui->movement->currentobject->data; if ((gui->movement->smfsync == gui->movement->changecount)) { early = curObj->earliest_time, late = curObj->latest_time; } switch (curObj->type) { case CHORD: { chord *thechord = ((chord *) curObj->object); selection = g_strdup_printf ("%s%s%s%s%s%s%s%s%s", thechord->notes ? (g_list_length (thechord->notes) > 1 ? _("Chord ") : _("Note ")) : _("Rest "), thechord->slur_begin_p ? _(", begin slur") : "", thechord->slur_end_p ? _(", end slur") : "", thechord->is_tied ? _(", tied") : "", thechord->crescendo_begin_p ? _(", begin cresc.") : "", thechord->crescendo_end_p ? _(", end cresc.") : "", thechord->diminuendo_begin_p ? _(", begin dim.") : "", thechord->diminuendo_end_p ? _(", end dim.") : "", thechord->is_grace ? _(", grace note") : ""); if (thechord->notes) { GList *g; for (g = thechord->notes; g; g = g->next) { note *thenote = (note *) g->data; GList *h; for (h = thenote->directives; h; h = h->next) { DenemoDirective *directive = (DenemoDirective *) h->data; if (directive->postfix || directive->prefix) { gchar *old = selection; selection = g_strdup_printf ("%.50s (%s) %.50s", directive->prefix ? directive->prefix->str : "", selection, directive->postfix ? directive->postfix->str : ""); g_free (old); } } } } } break; case TUPOPEN: selection = g_strdup_printf (_("Tuplet %d/%d"), ((tupopen *) curObj->object)->numerator, ((tupopen *) curObj->object)->denominator); break; case TUPCLOSE: selection = g_strdup_printf (_("End tuplet")); break; case CLEF: selection = g_strdup_printf (_("Clef change")); break; case TIMESIG: selection = g_strdup_printf (_("Time signature change")); break; case KEYSIG: selection = g_strdup_printf (_("Key signature change")); break; case STEMDIRECTIVE: selection = g_strdup_printf (_("Stem directive: %s"), ((stemdirective *) curObj->object)->type == DENEMO_STEMDOWN ? _("stem down") : ((stemdirective *) curObj->object)->type == DENEMO_STEMUP ? _("stem up") : _("normal stemming")); break; case DYNAMIC: selection = g_strdup_printf (_("Dynamic: %s"), ((dynamic *) curObj->object)->type->str); break; case LILYDIRECTIVE: { DenemoDirective *directive = (DenemoDirective *) curObj->object; selection = g_strdup_printf (_("Directive:(%.20s) %.20s%.50s"), directive->tag ? directive->tag->str : _("Unknown Tag"), directive->layouts ? _("Not all layouts") : "", directive->postfix ? directive->postfix->str : directive->prefix ? directive->prefix->str : directive->graphic_name ? directive->graphic_name->str : directive->display ? directive->display->str : "empty"); } break; default: selection = g_strdup_printf (_("Cursor on an unknown object")); } //DenemoMeasure *measure = gui->movement->currentmeasure->data; //selection = g_strdup_printf ("%s %s %d/%d %d", selection, curObj->clef?get_clef_name (curObj->clef->type):"NULL", measure->timesig?measure->timesig->time1:0, measure->timesig?measure->timesig->time2:0, curObj->keysig?curObj->keysig->number:0xFFFF); } else selection = g_strdup_printf (_("Cursor not on any object")); GString *status = g_string_new (_("Movement")); gint index = g_list_index (gui->movements, gui->movement); const gchar *dur = ""; switch (get_prevailing_duration ()) { case 0: dur = NOTE0; break; case 1: dur = NOTE1; break; case 2: dur = NOTE2; break; case 3: dur = NOTE3; break; case 4: dur = NOTE4; break; case 5: dur = NOTE5; break; case 6: dur = NOTE6; break; case 7: dur = NOTE7; break; case 8: dur = NOTE8; break; } g_string_printf (status, "%s%s %d: %s: ", enshift_string (gui->movement->pending_enshift), dur, index + 1, selection); if (gui->movement->smf && (gui->movement->smfsync == gui->movement->changecount) && Denemo.prefs.playback_controls) g_string_append_printf (status, _("start %.2f end %.2f"), early, late); else g_string_append_printf (status, _(" Staff %d Measure %d Position %d %s"), gui->movement->currentstaffnum, gui->movement->currentmeasurenum, gui->movement->cursor_x + 1, gui->movement->cursor_appending ? _("Appending") : _("Not Appending") /*not understood this one... , gui->movement->cursoroffend?"Off End":"Not Off End" */ ); if (Denemo.prefs.midi_in_controls) { gchar *thesharp = sharpest (); gchar *theflat = flattest (); g_string_append_printf (status, " |%s - %s|", theflat, thesharp); g_free (theflat); g_free (thesharp); } g_free (selection); gchar *end_valid; if (!g_utf8_validate (status->str, -1, (const gchar **) &end_valid)) *end_valid = '\0'; gtk_label_set_text (GTK_LABEL (Denemo.statuslabel), status->str); g_string_free (status, TRUE); update_object_info (); } void write_input_status (void) { if (Denemo.non_interactive) return; gtk_label_set_markup (GTK_LABEL (Denemo.input_label), Denemo.input_filters->str); } /** * Display a message box giving two choices, return FALSE if second is chosen. * */ gboolean confirm_first_choice (gchar *title, gchar * primary, gchar * secondary) { GtkWidget *dialog; gboolean r = 0; dialog = gtk_message_dialog_new (GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, "%s", title, NULL); gtk_dialog_add_buttons (GTK_DIALOG (dialog), primary, GTK_RESPONSE_YES, secondary, GTK_RESPONSE_NO, NULL); gtk_widget_show_all (dialog); r = (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_YES); gtk_widget_destroy (dialog); return r; } /** * Display a message box asking primary & secondary messages * @return TRUE if the OK button was clicked or Enter pressed */ gboolean confirm (gchar * primary, gchar * secondary) { GtkWidget *dialog; gboolean r = 0; dialog = gtk_message_dialog_new (GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s", primary); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s", secondary); gtk_widget_show_all (dialog); r = (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_YES); gtk_widget_destroy (dialog); return r; } gboolean choose_option (gchar * title, gchar * primary, gchar * secondary) { return choose_option_or_cancel (title, primary, secondary, FALSE) > 0; } gint choose_option_or_cancel (gchar * title, gchar * primary, gchar * secondary, gboolean cancel_button) { GtkWidget *dialog; gint r; dialog = (cancel_button? gtk_dialog_new_with_buttons (title, GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), primary, GTK_RESPONSE_ACCEPT, secondary, GTK_RESPONSE_REJECT, _("Cancel"), GTK_RESPONSE_CANCEL, NULL): gtk_dialog_new_with_buttons (title, GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), primary, GTK_RESPONSE_ACCEPT, secondary, GTK_RESPONSE_REJECT, NULL)); gtk_window_set_urgency_hint (GTK_WINDOW (dialog), TRUE); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE); r = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); if (r==GTK_RESPONSE_ACCEPT) return 1; if (r==GTK_RESPONSE_REJECT) return 0; return -1; } /* free a GString and the string it holds, and set the pointer to it to NULL */ void nullify_gstring (GString ** s) { if (*s) g_string_free (*s, TRUE); *s = NULL; } /* dialog to get a filename from the user */ gchar * choose_file (gchar * title, gchar * startdir, GList * extensions) { GtkWidget *dialog; gchar *filename = NULL; dialog = gtk_file_chooser_dialog_new (title, NULL, GTK_FILE_CHOOSER_ACTION_OPEN, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Open"), GTK_RESPONSE_ACCEPT, NULL); GtkFileFilter *filter = gtk_file_filter_new (); GString *filter_description = g_string_new (""); for (extensions; extensions; extensions = extensions->next) { gtk_file_filter_add_pattern (filter, (gchar *) extensions->data); g_string_append_printf (filter_description, "%s ", (gchar *) extensions->data); } gtk_file_filter_set_name (filter, filter_description->str); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), startdir); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); } gtk_widget_destroy (dialog); return filename; } static void hide_windows (void) { if (Denemo.prefs.hide_windows) { if (Denemo.window) gtk_widget_hide (Denemo.window); if (Denemo.printarea) gtk_widget_hide (gtk_widget_get_toplevel (Denemo.printarea)); } } static void show_windows (void) { if (Denemo.prefs.hide_windows) { if (Denemo.window) gtk_widget_show (Denemo.window); if (Denemo.printarea) gtk_widget_show (gtk_widget_get_toplevel (Denemo.printarea)); } } /** * Pops up a dialog box that has a text entry box and ok/cancel buttons * title is a title for the box. * initial_value is for the text entry box, or NULL if none. * instruction is a prompt for the user. * Returns a new value on Ok and NULL if cancelled. * The returned value should be freed by the caller. * */ gchar * string_dialog_entry (DenemoProject * gui, gchar * title, gchar * instruction, gchar * initial_value) { return string_dialog_entry_with_widget (gui, title, instruction, initial_value, NULL); } /* as string_dialog_entry() but with extra widget */ gchar * string_dialog_entry_with_widget_opt (DenemoProject * gui, gchar * wlabel, gchar * direction, gchar * PreValue, GtkWidget * widget, gboolean modal) { GtkWidget *dialog; GtkWidget *entry; GtkWidget *label; gchar *entry_string = NULL; //GString *string; entry = gtk_entry_new (); dialog = modal ? gtk_dialog_new_with_buttons (wlabel, GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL) : gtk_dialog_new_with_buttons (wlabel, GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, NULL); g_signal_connect (dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); //if the user tries to dismiss the window, hide it, will that then hang??? It doesn't on GNOME using the right-click menu to close the window label = gtk_label_new (direction); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), label); if (widget) gtk_container_add (GTK_CONTAINER (content_area), widget); if (PreValue != NULL) { gtk_entry_set_text (GTK_ENTRY (entry), (gchar *) PreValue); } gtk_container_add (GTK_CONTAINER (content_area), entry); gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE); gtk_widget_show_all (dialog); if (modal) { gtk_widget_grab_focus (entry); hide_windows (); gtk_window_present (GTK_WINDOW (dialog)); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { gchar *string = NULL; if (GTK_DIALOG (dialog)) { entry_string = (gchar *) gtk_entry_get_text (GTK_ENTRY (entry)); string = g_strdup (entry_string); gtk_widget_destroy (dialog); } show_windows (); return string; } else { if (GTK_DIALOG (dialog)) gtk_widget_destroy (dialog); } show_windows (); return NULL; } else { g_signal_connect_swapped (dialog, "response", G_CALLBACK (gtk_main_quit), entry); gtk_main (); gtk_window_present (GTK_WINDOW (dialog)); if (GTK_IS_WIDGET (entry)) { entry_string = GTK_IS_WIDGET (entry) ? g_strdup ((gchar *) gtk_entry_get_text (GTK_ENTRY (entry))) : NULL; gtk_widget_destroy (dialog); return entry_string; } return NULL; } } gchar * string_dialog_entry_with_widget (DenemoProject * gui, gchar * wlabel, gchar * direction, gchar * PreValue, GtkWidget * widget) { return string_dialog_entry_with_widget_opt (gui, wlabel, direction, PreValue, widget, TRUE); } /* as string_dialog_entry_with_widget() but gives a text editor instead of a single line editor */ gchar * string_dialog_editor_with_widget_opt (DenemoProject * gui, gchar * wlabel, gchar * direction, gchar * PreValue, GtkWidget * widget, gboolean modal, gpointer keypress_callback) { GtkWidget *dialog; GtkWidget *label; GtkTextTagTable *tagtable = (GtkTextTagTable *) gtk_text_tag_table_new (); GtkTextTag *t = gtk_text_tag_new ("ineditable"); g_object_set (G_OBJECT (t), "background", "light gray", NULL); g_object_set (G_OBJECT (t), "editable", FALSE, NULL); gtk_text_tag_table_add (tagtable, t); t = gtk_text_tag_new ("code"); g_object_set (G_OBJECT (t), "weight", PANGO_WEIGHT_BOLD, "family", "monospace", NULL); gtk_text_tag_table_add (tagtable, t); GtkTextBuffer *textbuffer = gtk_text_buffer_new (tagtable); GtkWidget *textview = gtk_text_view_new_with_buffer (textbuffer); gtk_text_buffer_set_text (textbuffer, PreValue ? PreValue : "", -1); GtkWidget *sw = gtk_scrolled_window_new (gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0), gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0)); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); dialog = modal ? gtk_dialog_new_with_buttons (wlabel, GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL) : gtk_dialog_new_with_buttons (wlabel, GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, NULL); if (keypress_callback) g_signal_connect (G_OBJECT (textview), "key-press-event", G_CALLBACK (keypress_callback), textbuffer); label = gtk_label_new (direction); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_box_pack_start (GTK_BOX (content_area), label, FALSE, TRUE, 0); if (widget) { gtk_box_pack_start (GTK_BOX (content_area), widget, FALSE, TRUE, 0); g_object_set_data (G_OBJECT (widget), "textbuffer", textbuffer); // g_object_set_data (G_OBJECT (widget), "textview", textview); } gtk_container_add (GTK_CONTAINER (sw), textview); gtk_box_pack_start (GTK_BOX (content_area), sw, TRUE, TRUE, 0); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE); gtk_widget_show_all (dialog); gtk_widget_grab_focus (textview); if (modal) { if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { GtkTextIter startiter, enditer; gtk_text_buffer_get_start_iter (textbuffer, &startiter); gtk_text_buffer_get_end_iter (textbuffer, &enditer); gchar *text = gtk_text_buffer_get_text (textbuffer, &startiter, &enditer, FALSE); gtk_widget_destroy (dialog); return text; } else { gtk_widget_destroy (dialog); return NULL; } return NULL; } else { g_signal_connect_swapped (dialog, "response", G_CALLBACK (gtk_main_quit), NULL); gtk_main (); if (GTK_IS_TEXT_BUFFER (textbuffer)) { GtkTextIter startiter, enditer; gtk_text_buffer_get_start_iter (textbuffer, &startiter); gtk_text_buffer_get_end_iter (textbuffer, &enditer); gchar *text = gtk_text_buffer_get_text (textbuffer, &startiter, &enditer, FALSE); gtk_widget_destroy (dialog); return text; } else { return NULL; } } } gchar * string_dialog_editor_with_widget (DenemoProject * gui, gchar * wlabel, gchar * direction, gchar * PreValue, GtkWidget * widget, gpointer keypress_callback) { return string_dialog_editor_with_widget_opt (gui, wlabel, direction, PreValue, widget, TRUE, keypress_callback); } gchar *get_multiline_input (gchar *title, gchar *instruction, gchar *initial) { gchar *text = string_dialog_editor_with_widget (Denemo.project, title, instruction, initial, NULL, NULL); #ifndef USE_EVINCE #else drop_markup_area (); #endif return text; } static gboolean option_choice (GtkWidget * widget, gchar ** response) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) *response = g_object_get_data (G_OBJECT (widget), "choice"); //do not respond to the toggling off of other radio buttons return TRUE; } static gint root_x; static gint root_y; static gboolean dialog_realize (GtkWidget * dialog) { if (root_x) gtk_window_move (GTK_WINDOW (dialog), root_x, root_y); return FALSE; } /* run a dialog for the user to select a string from the NULL separated strings, str return NULL if user cancels.*/ static gchar * get_option_recursive (gchar * title, gchar * str, gint length, gboolean more) { gchar *response = NULL; if (title == NULL) title = _("Select from List (or Cancel)"); GtkWidget *dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW (Denemo.window), (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); g_signal_connect_after (G_OBJECT (dialog), "realize", G_CALLBACK (dialog_realize), NULL); GtkWidget *vbox = gtk_vbox_new (FALSE, 1); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), vbox); gchar *opt; GtkWidget *widget1, *widget; for (opt = str; (opt - str) < length; opt += strlen (opt) + 1) { if (opt == str) { widget = widget1 = gtk_radio_button_new_with_label (NULL, opt); response = str; //this is the first radio button, we set response to be the input string ie first option, in case the user makes no choice, in which case the callback option_choice is not called. } else { widget = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (widget1), opt); } g_object_set_data (G_OBJECT (widget), "choice", (gpointer) opt); g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (option_choice), &response); gtk_container_add (GTK_CONTAINER (vbox), widget); } if (more) { opt = _("More..."); widget = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (widget1), opt); g_object_set_data (G_OBJECT (widget), "choice", (gpointer) opt); g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (option_choice), &response); gtk_container_add (GTK_CONTAINER (vbox), widget); } gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE); gtk_widget_show_all (dialog); hide_windows (); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_REJECT) { response = NULL; } g_debug ("Returning contents of response is %s\n", response); gtk_window_get_position (GTK_WINDOW (dialog), &root_x, &root_y); gtk_widget_destroy (dialog); show_windows (); return response; } #define MAX_ITEMS (Denemo.prefs.max_menu_size) gchar * get_option (gchar * title, gchar * str, gint length) { gchar *opt; gint i; for (opt = str, i = 0; (opt - str) < length; i++, opt += strlen (opt) + 1) { if (i < MAX_ITEMS) continue; else { gchar *response = get_option_recursive (title, str, opt - str, TRUE); if (response && (!strcmp (response, _("More...")))) { length -= (opt - str); str = opt; i = 0; continue; } else return response; } } if ((opt - str) >= length) return get_option_recursive (title, str, length, FALSE); return NULL; } /* output text to the console (lilypond errors) window. If text==NULL clear window*/ void console_output (gchar * text) { GtkTextIter enditer; GtkTextBuffer *buffer = gtk_text_view_get_buffer ((GtkTextView *) (Denemo.console)); gtk_text_buffer_get_end_iter (buffer, &enditer); if (text) gtk_text_buffer_insert (buffer, &enditer, text, -1); else gtk_text_buffer_set_text (buffer, "", -1); } /* returns an override flag ORd from all those in the list of directives, excluding ones with DENEMO_OVERRIDE_HIDDEN set and ones not for the current layout */ gint get_override (GList * g) { gint ret = 0; for (; g; g = g->next) { DenemoDirective *d = g->data; if (wrong_layout (d, Denemo.project->layout_id)) continue; if (!(d->override & DENEMO_OVERRIDE_HIDDEN)) ret |= d->override; } return ret; } //modfies name to truncate at the extension (a dot at end before any directory separators), returning a pointer to the extension chopped off // returns NULL if no extension, with name unchanged gchar * remove_extension (gchar * name) { gchar *c; if (name) for (c = name + strlen (name); c != name; c--) { if (*c == '.') { *c = '\0'; return c + 1; } if (*c == G_DIR_SEPARATOR) break; } return NULL; } //modifies name, removing the extension and returns a newly allocated string //with the passed extension gchar * substitute_extension (gchar * name, gchar * extension) { (void) remove_extension (name); return g_strdup_printf ("%s.%s", name, extension); } enum clefs cleftypefromname (gchar * str) { enum clefs ret = DENEMO_TREBLE_CLEF; if (g_strcasecmp (str, "treble") == 0) ret = DENEMO_TREBLE_CLEF; else if (g_strcasecmp (str, "bass") == 0) ret = DENEMO_BASS_CLEF; else if (g_strcasecmp (str, "alto") == 0) ret = DENEMO_ALTO_CLEF; else if (g_strcasecmp (str, "\"g_8\"") == 0) ret = DENEMO_G_8_CLEF; else if (g_strcasecmp (str, "tenor") == 0) ret = DENEMO_TENOR_CLEF; else if (g_strcasecmp (str, "soprano") == 0) ret = DENEMO_SOPRANO_CLEF; g_free (str); return ret; } gint get_widget_height (GtkWidget * w) { GtkAllocation allocation; gtk_widget_get_allocation (w, &allocation); return allocation.height; } gint get_widget_width (GtkWidget * w) { GtkAllocation allocation; gtk_widget_get_allocation (w, &allocation); return allocation.width; } void switch_back_to_main_window (void) { if (Denemo.non_interactive) return; gtk_window_present (GTK_WINDOW (Denemo.window)); gtk_widget_grab_focus (Denemo.scorearea); } /* set all labels in the hierarchy below widget to use markup */ void use_markup (GtkWidget * widget) { if (!widget) return; if (GTK_IS_LABEL (widget)) { gtk_label_set_use_markup (GTK_LABEL (widget), TRUE); } else if (GTK_IS_CONTAINER (widget)) { GList *g = gtk_container_get_children (GTK_CONTAINER (widget)); for (; g; g = g->next) use_markup (g->data); if (GTK_IS_MENU_ITEM (widget)) { use_markup (gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget))); } } } #ifdef FAKE_TOOLTIPS static GtkWidget *TooltipPopup = NULL; static gboolean not_wanted = TRUE; static gboolean not_wanted_in_this_session = FALSE; static gboolean no_longer_wanted (GtkWidget * w) { if (TooltipPopup == NULL) return FALSE; not_wanted = TRUE; if (Denemo.prefs.newbie) not_wanted_in_this_session = FALSE; GtkWidget *deleting = TooltipPopup; //to prevent recursion in popping down menu TooltipPopup = NULL; gtk_menu_popdown (GTK_MENU (deleting)); return FALSE; } gchar *format_tooltip (const gchar *tip) { gchar *this = (gchar*)tip; if (tip==NULL) return _("No Tooltip"); GString *out = g_string_new (""); for (this = (gchar*)tip; *this; this++) { if (*this == '.') //UTF8 strings never contain ASCII bytes except to represent the corresponding ASCII char { this++; if (*this == ' ') g_string_append (out, ".\n"); else { this--; g_string_append_c (out, *this); } } else g_string_append_c (out, *this); } return g_string_free (out, FALSE); } gboolean show_tooltip (GtkWidget * w, GdkEvent * ev, gchar * text) { static gchar *last_tooltip; static guint32 last_time; static GtkWidget *last_widget; static gint last_y; guint32 time; gdouble x, y; if (w == NULL) { last_widget = NULL; last_y = last_time = 0; no_longer_wanted (TooltipPopup); return FALSE; } time = gdk_event_get_time (ev); gdk_event_get_coords (ev, &x, &y); // g_print ( "widget same %d, time = %u, last_time = %u time diff %d y-diff %d\n", (w == last_widget), time, last_time, time-last_time, (int)y-last_y); if ( w != last_widget) { last_widget = w; last_time = time; return FALSE; } if (abs (last_time - time) < Denemo.prefs.tooltip_timeout) //use ... { last_y = (int)y; return FALSE; } if (abs (last_y - (int)y) > 3) { last_y = (int)y; return FALSE; } if (last_tooltip != text) if (text && (*text) && (last_tooltip != text)) { last_tooltip = text; TooltipPopup = gtk_menu_new (); GtkWidget *item = gtk_menu_item_new_with_label (text); //FIXME remove markup and break into lines - do this at creation time. gtk_menu_shell_append (GTK_MENU_SHELL (TooltipPopup), item); g_signal_connect (G_OBJECT (item), "leave-notify-event", G_CALLBACK (no_longer_wanted), NULL); gtk_widget_show_all (TooltipPopup); gtk_menu_popup (GTK_MENU (TooltipPopup), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); return FALSE; } return FALSE; //allow normal response } void free_tooltip (GtkWidget * w, gchar * tooltip) { //g_print ("Freeing tooltip\n"); g_free (tooltip); } #endif // Help for beginners using keyboard shortcuts static GtkWidget *KeyStrokes; static GtkWidget *KeyStrokeLabel; static GtkWidget *KeyStrokeHelp; void KeyStrokeAwait (gchar * first_keypress) { KeyStrokeShow (first_keypress, DENEMO_NO_COMMAND, TwoKey); } void KeyStrokeDecline (gchar * first_keypress) { KeyStrokeShow (first_keypress, DENEMO_NO_COMMAND, SingleKey); } void MouseGestureShow (gchar * str, gchar * help, DenemoShortcutType type) { gtk_label_set_text (GTK_LABEL (KeyStrokeHelp), help); KeyStrokeShow (str, DENEMO_NO_COMMAND, type); } void KeyPlusMouseGestureShow (gchar * str, gint command_idx) { const gchar *label = lookup_label_from_idx (Denemo.map, command_idx); const gchar *tooltip = lookup_tooltip_from_idx (Denemo.map, command_idx); gchar *text = g_strdup_printf (_("Mouse shortcut %s" " invokes command %s"), str, label); gtk_window_set_title (GTK_WINDOW (KeyStrokes), _("Mouse Shortcut")); gtk_label_set_markup (GTK_LABEL (KeyStrokeLabel), text); gtk_label_set_text (GTK_LABEL (KeyStrokeHelp), tooltip); g_free (text); gtk_widget_show (KeyStrokes); } void KeyStrokeShow (gchar * str, gint command_idx, DenemoShortcutType type) { if (str != NULL) { gchar *text; if (command_idx != DENEMO_NO_COMMAND) { const gchar *label = lookup_label_from_idx (Denemo.map, command_idx); const gchar *tooltip = lookup_tooltip_from_idx (Denemo.map, command_idx); if (type) { text = g_strdup_printf (_("Key Press %s" " invokes command %s"), str, label); } else { text = g_strdup_printf (_("Key Presses %s" " invoke command %s"), str, label); } gtk_window_set_title (GTK_WINDOW (KeyStrokes), type == SingleKey ? _("Single Key Press") : _("Two Key Presses")); gtk_label_set_markup (GTK_LABEL (KeyStrokeLabel), text); gtk_label_set_text (GTK_LABEL (KeyStrokeHelp), tooltip); g_free (text); } else // no command { switch (type) { case SingleKey: gtk_window_set_title (GTK_WINDOW (KeyStrokes), _("Key Press")); gtk_label_set_text (GTK_LABEL (KeyStrokeHelp), ""); text = g_strdup_printf (_("Key Press %s" " Is not a shortcut.\n%s"), str, (Denemo.project->view != DENEMO_MENU_VIEW) ? _("(The menus are now restored in case you are lost.)") : ""); break; case TwoKey: gtk_window_set_title (GTK_WINDOW (KeyStrokes), _("First Key Press")); gtk_label_set_text (GTK_LABEL (KeyStrokeHelp), ""); text = g_strdup_printf (_("Key Press %s" " Awaiting continuation"), str); break; case MouseGesture: gtk_window_set_title (GTK_WINDOW (KeyStrokes), _("Mouse")); text = g_strdup_printf (_("Mouse %s"), str); break; case KeyPlusMouse: gtk_window_set_title (GTK_WINDOW (KeyStrokes), _("Key + Mouse")); text = g_strdup_printf (_("Key Press %s"), str); break; default: g_warning ("bad call"); return; } gtk_label_set_markup (GTK_LABEL (KeyStrokeLabel), text); g_free (text); } } gtk_widget_show (KeyStrokes); } static gboolean toggle_show_keystroke_preference (void) { Denemo.prefs.learning = FALSE; gtk_widget_hide (KeyStrokes); return TRUE; } void initialize_keystroke_help (void) { if (KeyStrokes == NULL) { KeyStrokes = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (G_OBJECT (KeyStrokes), "delete-event", G_CALLBACK (toggle_show_keystroke_preference), NULL); gtk_window_set_transient_for (GTK_WINDOW (KeyStrokes), GTK_WINDOW (Denemo.window)); gtk_window_set_keep_above (GTK_WINDOW (KeyStrokes), TRUE); gtk_window_set_accept_focus (GTK_WINDOW (KeyStrokes), FALSE); KeyStrokeLabel = gtk_label_new (""); //gtk_label_set_line_wrap (KeyStrokeLabel, TRUE); KeyStrokeHelp = gtk_label_new (""); gtk_label_set_line_wrap (GTK_LABEL (KeyStrokeHelp), TRUE); GtkWidget *vbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (KeyStrokes), vbox); gtk_box_pack_start (GTK_BOX (vbox), KeyStrokeLabel, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (vbox), KeyStrokeHelp, FALSE, TRUE, 0); gtk_label_set_use_markup (GTK_LABEL (KeyStrokeLabel), TRUE); gtk_widget_show_all (KeyStrokes); } gtk_widget_hide (KeyStrokes); } void init_gdk_cursors (void) { Denemo.GDK_LEFT_PTR = gdk_cursor_new_for_display (gdk_display_get_default (), GDK_LEFT_PTR); Denemo.GDK_SB_V_DOUBLE_ARROW = gdk_cursor_new_for_display (gdk_display_get_default (), GDK_SB_V_DOUBLE_ARROW); Denemo.GDK_SB_H_DOUBLE_ARROW = gdk_cursor_new_for_display (gdk_display_get_default (), GDK_SB_H_DOUBLE_ARROW); Denemo.GDK_X_CURSOR = gdk_cursor_new_for_display (gdk_display_get_default (), GDK_X_CURSOR); Denemo.GDK_TARGET = gdk_cursor_new_for_display (gdk_display_get_default (), GDK_TARGET); } /** * find_dir_for_file: * @filename: The file to search * @dirs: A dir paths array, ending by NULL, where to search. * * Finds the first dir in the list that contains 'filename', and free the array. * * Returns: The dir path if found, NULL either **/ gchar * find_dir_for_file (gchar * filename, GList * dirs) { gchar *dir = NULL; gchar *path = NULL; GList *curdir = NULL; for (curdir = dirs; curdir; curdir = g_list_next (curdir)) { if (!dir) { path = g_build_filename (curdir->data, filename, NULL); if (g_file_test (path, G_FILE_TEST_EXISTS)) dir = g_strdup (curdir->data); //even though found, the loop is continued to clear the list of dirs // else here causes a memory leak as path is not used hereafter g_free (path); } g_free (curdir->data); } return dir; } /** * find_dir_for_files: * @files: The files to search * @dirs: A dir paths list, where to search. * * Finds the first dir in the list that contains 'filename', and free the array. * * Returns: The dir path if found, NULL either **/ gchar * find_dir_for_files (GList * files, GList * dirs) { gchar *dir = NULL; gchar *path = NULL; GList *curdir = NULL; GList *curfile = NULL; for (curdir = dirs; curdir; curdir = g_list_next (curdir)) { for (curfile = files; curfile; curfile = g_list_next (curfile)) { if (!dir) { path = g_build_filename (curdir->data, curfile->data, NULL); if (g_file_test (path, G_FILE_TEST_EXISTS)) dir = g_strdup (curdir->data); g_free (path); } } g_free (curdir->data); } return dir; } /** * find_path_for_file: * @filename: The file to search * @dirs: A dir paths list, where to search. * * Finds the first dir in the list that contains 'filename', and free the array. * * Returns: The file path if found, NULL either **/ gchar * find_path_for_file (gchar * filename, GList * dirs) { gchar *dir = find_dir_for_file (filename, dirs); if (dir) { gchar *path = g_build_filename (dir, filename, NULL); g_free (dir); return path; } return NULL; } gchar * get_project_dir (void) { if (Denemo.project && Denemo.project->filename->len) { return g_path_get_dirname (Denemo.project->filename->str); } return g_strdup (g_get_home_dir ()); } const gchar * get_local_dir (DenemoDirectory dir) { switch (dir) { case DENEMO_DIR_COMMANDS: return COMMANDS_DIR; case DENEMO_DIR_UI: return UI_DIR; case DENEMO_DIR_SOUNDFONTS: return SOUNDFONTS_DIR; case DENEMO_DIR_PIXMAPS: return PIXMAPS_DIR; case DENEMO_DIR_FONTS: return FONTS_DIR; case DENEMO_DIR_LOCALE: return LOCALE_DIR; case DENEMO_DIR_LILYPOND_INCLUDE: return LILYPOND_INCLUDE_DIR; default: return NULL; } } gchar * get_system_dir (DenemoDirectory dir) { switch (dir) { case DENEMO_DIR_COMMANDS: case DENEMO_DIR_UI: case DENEMO_DIR_SOUNDFONTS: case DENEMO_DIR_FONTS: case DENEMO_DIR_LILYPOND_INCLUDE: return g_build_filename (get_system_data_dir (), get_local_dir (dir), NULL); case DENEMO_DIR_PIXMAPS: return g_build_filename (get_system_data_dir (), PIXMAPS_DIR, NULL); break; case DENEMO_DIR_LOCALE: return g_strdup (get_system_locale_dir ()); break; case DENEMO_DIR_BIN: return g_strdup (get_system_bin_dir ()); break; default: return NULL; } } const gchar * get_executable_dir () { static const gchar *dir = NULL; if (dir == NULL) { char path[1024]; gint n; #ifdef G_OS_WIN32 GetModuleFileNameW (NULL, path, MAX_PATH); #elif defined _MACH_O_ guint size = sizeof (path); _NSGetExecutablePath (path, &size); #else if ((n = readlink ("/proc/self/exe", path, sizeof (path))) < 0) { perror ("/proc/self/exe"); return NULL; } path[n] = 0; #endif dir = g_path_get_dirname (path); } return dir; } /** * find: * @dir: The denemo directory where to search * @filename: The file to search * * Finds a file by searching: * - in the local directory * - in the executable parent directory * - in the user directory * - in the system directory * - in the system fonts directory **/ gchar * find_denemo_file (DenemoDirectory dir, gchar * filename) { //g_debug("find_denemo_file called with %d and %s\n", dir, filename); GList *dirs = NULL; dirs = g_list_append (dirs, g_build_filename (PACKAGE_SOURCE_DIR, get_local_dir (dir), NULL)); dirs = g_list_append (dirs, g_build_filename (get_executable_dir (), "..", get_local_dir (dir), NULL)); dirs = g_list_append (dirs, g_build_filename (get_user_data_dir (TRUE), get_local_dir (dir), NULL)); dirs = g_list_append (dirs, g_strdup (get_system_dir (dir))); dirs = g_list_append (dirs, g_build_filename (get_executable_dir (), "..", "share", "fonts", "truetype", "denemo", NULL)); return find_path_for_file (filename, dirs); } gchar * escape_scheme (gchar * input) { gchar *c = input - 1; GString *out = g_string_new (""); for (c = input; c && *c; c++) { if (*c == '"') g_string_append (out, "\\\\\\\""); else if (*c == '\\') g_string_append (out, "\\\\"); else { g_string_append_printf (out, "%c", *c); } } return g_string_free (out, FALSE); } gboolean shift_held_down (void) { GdkModifierType mask; GdkWindow *win = gtk_widget_get_window (Denemo.window); #if GTK_MAJOR_VERSION == 2 gdk_window_get_pointer (win, NULL, NULL, &mask); #else #if GTK_MINOR_VERSION < 20 gdk_window_get_device_position (win, gdk_device_manager_get_client_pointer (gdk_display_get_device_manager (gdk_display_get_default ())), NULL, NULL, &mask); #else gdk_window_get_device_position (win, gdk_seat_get_pointer (gdk_display_get_default_seat (gdk_display_get_default ())), NULL, NULL, &mask); #endif #endif return (mask & GDK_SHIFT_MASK); } #if GTK_MAJOR_VERSION == 2 #define GdkRGBA GdkColor #define gtk_widget_override_color gtk_widget_modify_fg #define gtk_widget_override_background_color gtk_widget_modify_bg #define GTK_STATE_FLAG_NORMAL (0) void get_color (GdkColor * color, gdouble r, gdouble g, gdouble b, gdouble a) { gchar *col = g_strdup_printf ("#%02x%02x%02x", (gint) (r * 254), (gint) (g * 254), (gint) (b * 254)); gdk_color_parse (col, color); g_free (col); } #else void get_color (GdkRGBA * color, gdouble r, gdouble g, gdouble b, gdouble a) { color->red = r; color->green = g; color->blue = b; color->alpha = a; } static gchar *get_css_selector (GtkWidget *w) { static gchar *ret = NULL; #if ((GTK_MAJOR_VERSION==3) && (GTK_MINOR_VERSION>=20)) g_free (ret); ret = g_ascii_strdown (g_strdup (g_type_name (G_TYPE_FROM_INSTANCE (w))), -1); return ret+3; #else ret = (gchar *)g_type_name (G_TYPE_FROM_INSTANCE (w)); return ret; #endif } void set_background_color(GtkWidget *w, gchar *color) { GtkCssProvider *gcp; GtkStyleContext *gsc; gsc = gtk_widget_get_style_context(w); gchar *type = get_css_selector(w); gchar *str = g_strdup_printf ("%s {background-color: %s;}", type, color); //g_print ("%s", str); gcp= gtk_css_provider_new(); gtk_css_provider_load_from_data(gcp, str, -1, 0); g_free (str); gtk_style_context_add_provider(gsc, GTK_STYLE_PROVIDER(gcp), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } void set_foreground_color(GtkWidget *w, gchar *color) { GtkCssProvider *gcp; GtkStyleContext *gsc; gsc = gtk_widget_get_style_context(w); gchar *type = get_css_selector(w); gchar *str = g_strdup_printf ("%s {color: %s;}", type, color); //g_print ("%s", str); gcp= gtk_css_provider_new(); gtk_css_provider_load_from_data(gcp, str, -1, 0); g_free (str); gtk_style_context_add_provider(gsc, GTK_STYLE_PROVIDER(gcp), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } #endif denemo-2.2.0/src/core/PaxHeaders.19168/menusystem.h0000644000000000000000000000013213135434036016632 xustar0030 mtime=1500919838.346648472 30 atime=1500919919.976648472 30 ctime=1500919914.349981805 denemo-2.2.0/src/core/menusystem.h0000644000175000017500000000337613135434036020514 0ustar00jjbenhamjjbenham00000000000000/* * menusystem.h * * Copyright 2016 Richard Shann * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA */ #ifndef UIMANAGER_H #define UIMANAGER_H #include void denemo_menusystem_new (void); void denemo_menusystem_add_menu (gchar *path, gchar *name); GtkWidget *denemo_menusystem_get_widget (gchar *path); DenemoAction *denemo_menusystem_get_action (gchar *path); DenemoAction *denemo_action_new (const gchar *name, const gchar *label, const gchar *tooltip); gchar *denemo_action_get_name (DenemoAction *action); gchar *denemo_action_get_tooltip (DenemoAction *action); GList* denemo_action_get_proxies (DenemoAction *action); void denemo_action_activate (DenemoAction *action); void finalize_menusystem(void); void instantiate_menus (gchar * menupath); gchar *get_menupath_for_name (gchar *name); gchar *get_location_for_name (gchar *name); void set_toggle (gchar *name, gboolean value); void toggle_scheme (void); void denemo_menusystem_add_command (gchar *path, gchar *name, gchar *after); void denemo_menusystem_add_actions (void); void show_verses (void); #endif denemo-2.2.0/src/core/PaxHeaders.19168/prefops.h0000644000000000000000000000013213135434036016077 xustar0030 mtime=1500919838.346648472 30 atime=1500919919.976648472 30 ctime=1500919914.199981805 denemo-2.2.0/src/core/prefops.h0000644000175000017500000000114613135434036017752 0ustar00jjbenhamjjbenham00000000000000/* prefops.h * header file for initializing preferences * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #ifndef PREFOPSH #define PREFOPSH #include #define INITIAL_WIDTH 1000 #define INITIAL_HEIGHT 500 void initprefs (void); gint readxmlprefsString (gchar * xmlprefs); gint writeXMLPrefs (DenemoPrefs * prefs); void writeHistory (void); gint readHistory (void); void storeWindowState (void); void loadWindowState (void); gboolean get_bool_pref (gchar * prefname); gint get_int_pref (gchar * prefname); gchar *get_string_pref (gchar * prefname); #endif denemo-2.2.0/src/core/PaxHeaders.19168/palettestorage.h0000644000000000000000000000013213135434036017444 xustar0030 mtime=1500919838.346648472 30 atime=1500919919.976648472 30 ctime=1500919914.199981805 denemo-2.2.0/src/core/palettestorage.h0000644000175000017500000000254613135434036021324 0ustar00jjbenhamjjbenham00000000000000/* * palettestorage.h * * Copyright 2013 Richard Shann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ #ifndef PALETTESTORAGE_H #define PALETTESTORAGE_H #include #include #include gint writePalettes (void); /* installs palettes from user's palettes or, failing, from system palettes */ gint installPalettes (void); /* installs palette of given name from the system palettes merging with those already present */ gint mergePalette (const gchar *name); /*installs palettes from the give xml file, merging with those already present. If hide is TRUE hide all elements in the merged palettes */ gint installPalettesFile (gchar *filename, gboolean hide); #endif denemo-2.2.0/src/core/PaxHeaders.19168/graphicseditor.c0000644000000000000000000000013213135434036017423 xustar0030 mtime=1500919838.343315139 30 atime=1500919919.976648472 30 ctime=1500919914.176648472 denemo-2.2.0/src/core/graphicseditor.c0000644000175000017500000001251413135434036021277 0ustar00jjbenhamjjbenham00000000000000/* * graphicsedit.c * * Copyright 2014 Richard Shann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include #include #include #include "utils.h" #define GPID_NONE (-1) static gchar *get_extension (gchar *filename) { if(filename==NULL) return NULL; gchar *c = filename+strlen(filename); for(;c != filename; c--) { if(*c=='.') { return (c+1); } } return NULL; } static gchar *choose_graphic_file (void) { GtkWidget *dialog; gchar *filename = NULL; gchar *system_dir = g_build_filename (get_system_data_dir (), COMMANDS_DIR, "graphics", NULL); gchar *title = _("Graphics File"); GList *extensions = NULL; extensions = g_list_append (extensions, (gpointer) "*.eps"); extensions = g_list_append (extensions, (gpointer) "*.EPS"); extensions = g_list_append (extensions, (gpointer) "*.svg"); extensions = g_list_append (extensions, (gpointer) "*.SVG"); filename = choose_file (title, system_dir, extensions); g_free(system_dir); return filename; } static gchar *create_editable_file (gchar *filename, gchar *newname) { gchar *ret, *contents, *outname; gsize length; gchar *temp; if(newname) newname = g_strdup_printf ("%s.%s", newname, get_extension (filename)); temp = g_path_get_basename (newname?newname:filename); gchar * current_directory = newname? g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "graphics", NULL): get_project_dir (); if (!g_file_test (current_directory, G_FILE_TEST_EXISTS)) g_mkdir_with_parents (current_directory, 0770); outname = g_build_filename (current_directory, temp, NULL); g_free(temp);g_print("outname is %s for %s %s\n", outname, newname, get_user_data_dir (TRUE)); if(g_file_get_contents (filename, &contents, &length, NULL)) { if(g_file_set_contents (outname, contents, length, NULL)) { //g_free (filename); return outname; } else { g_warning ("Could not write %s\n", outname); } } g_free (filename); if(newname) g_free(current_directory); return NULL; } static gboolean try_for_svg (gchar *filename) { gchar *extension = get_extension (filename); if(extension) { if(!strcmp (extension, "eps")) { *extension = 's'; *(extension+1) = 'v'; *(extension+2) = 'g'; } if(!g_file_test (filename, G_FILE_TEST_EXISTS)) { *extension = 'e'; *(extension+1) = 'p'; *(extension+2) = 's'; return FALSE; } } return TRUE; } /* filename is an svg or eps file, if NULL allows the user to choose an svg or eps file from * the system files and the file is copied to the project directory (template==FALSE) or * to the users actions/graphics directory (template=TRUE) * prefs->graphicseditor run on the .svg file of the same name (if present). * the filename being edited (without the extension) is returned * returns the filename chosen which should be freed by the caller */ gchar *edit_graphics_file (gchar *filename, gchar *newname) { GPid pid = GPID_NONE; GError *err = NULL; gchar *choice = NULL; if(filename==NULL) { choice = choose_graphic_file(); if(choice) choice = create_editable_file (choice, newname); } else choice = strdup (filename); if(try_for_svg(choice)) g_info("Opening SVG for eps"); if(choice && g_file_test (choice, G_FILE_TEST_EXISTS)) { gchar *arguments[] = { Denemo.prefs.graphicseditor->str, choice, NULL}; g_spawn_async_with_pipes (NULL, /* dir */ arguments, NULL, /* env */ G_SPAWN_SEARCH_PATH, /* search in path for executable */ NULL, /* child setup func */ NULL, /* user data */ &pid, /* FIXME &pid see g_spawn_close_pid(&pid) */ NULL, NULL, NULL, &err); //drop extension if(choice) { gchar *c; for (c= choice + strlen(choice);c !=choice; c--) if(*c == '.') { *c = 0; break; } } } return choice; } denemo-2.2.0/src/core/PaxHeaders.19168/main.c0000644000000000000000000000013213135434036015340 xustar0030 mtime=1500919838.346648472 30 atime=1500919919.986648472 30 ctime=1500919914.196648472 denemo-2.2.0/src/core/main.c0000644000175000017500000003624013135434036017216 0ustar00jjbenhamjjbenham00000000000000/* main.c * sets up the GUI and connects the main callback functions. * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller, Adam Tee */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_GETOPT_H #include #endif #include #include #include #include #include #include #include #ifdef HAVE_SYS_WAIT_H #include #endif #ifdef HAVE_WAIT_H #include #endif #ifdef HAVE_SYS_RESOURCE_H #include #endif #include "denemo/denemo.h" #include "core/importxml.h" #include #include #include #include #include #include #include "core/view.h" #include "core/exportxml.h" #include "core/utils.h" #include "core/keyboard.h" struct DenemoRoot Denemo; #ifdef HAVE_SIGCHLD /* Code by Erik Mouw, taken directly from the gtk+ FAQ */ /** * signal handler to be invoked when child processes _exit() without * having to wait for them */ static void sigchld_handler (G_GNUC_UNUSED gint num) { sigset_t set, oldset; pid_t pid; gint status, exitstatus; /* block other incoming SIGCHLD signals */ sigemptyset (&set); sigaddset (&set, SIGCHLD); sigprocmask (SIG_BLOCK, &set, &oldset); /* wait for child */ while ((pid = waitpid ((pid_t) - 1, &status, WNOHANG)) > 0) { if (WIFEXITED (status)) { exitstatus = WEXITSTATUS (status); fprintf (stderr, _("Parent: child exited, pid = %d, exit status = %d\n"), (int) pid, exitstatus); } else if (WIFSIGNALED (status)) { exitstatus = WTERMSIG (status); fprintf (stderr, _("Parent: child terminated by signal %d, pid = %d\n"), exitstatus, (int) pid); } else if (WIFSTOPPED (status)) { exitstatus = WSTOPSIG (status); fprintf (stderr, _("Parent: child stopped by signal %d, pid = %d\n"), exitstatus, (int) pid); } else { fprintf (stderr, _("Parent: child exited magically, pid = %d\n"), (int) pid); } } /* re-install the signal handler (some systems need this) */ signal (SIGCHLD, sigchld_handler); /* and unblock it */ sigemptyset (&set); sigaddset (&set, SIGCHLD); sigprocmask (SIG_UNBLOCK, &set, &oldset); } #endif /* HAVE_SIGCHLD */ static void append_to_path (gchar * path, gchar * extra, ...) { va_list ap; va_start(ap, extra); gchar *path_string = (gchar *) g_getenv (path); if (!path_string){ if(extra){ path_string = g_strdup (extra); extra = va_arg(ap, gchar*); } } while(extra){ path_string = g_strconcat (path_string, G_SEARCHPATH_SEPARATOR_S, extra, NULL); extra = va_arg(ap, gchar*); } g_setenv (path, path_string, TRUE); g_debug ("%s is %s\n", path, path_string); va_end(ap); } static gchar ** process_command_line (int argc, char **argv, gboolean gtkstatus) { GError *error = NULL; GOptionContext *context; gchar* scheme_script_name = NULL; gboolean version = FALSE; gchar **filenames = NULL; GOptionEntry entries[] = { { "scheme-path", 'i', 0, G_OPTION_ARG_FILENAME, &Denemo.scheme_file, _("Process scheme commands in pathtofile on file open"), _("path") }, { "scheme-script-name", 's', 0, G_OPTION_ARG_STRING, &scheme_script_name, _("Process scheme commands from system file on file open"), _("file") }, { "scheme", 'a', 0, G_OPTION_ARG_STRING, &Denemo.scheme_commands, _("Process the scheme on startup"), _("scheme") }, { "fatal-scheme-errors", 'e', 0, G_OPTION_ARG_NONE, &Denemo.fatal_scheme_errors, _("Abort on scheme errors"), NULL }, { "silent", 'm', 0, G_OPTION_ARG_NONE, &Denemo.silent, _("Don't log any message"), NULL }, { "verbose", 'V', 0, G_OPTION_ARG_NONE, &Denemo.verbose, _("Display every messages"), NULL }, { "non-interactive", 'n', 0, G_OPTION_ARG_NONE, &Denemo.non_interactive, _("Launch Denemo without GUI"), NULL }, { "version", 'v', 0, G_OPTION_ARG_NONE, &version, _("Print version information and exit"), NULL }, { "audio-options", 'A', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &Denemo.prefs.audio_driver,_("Audio driver options"), _("options") }, { "midi-options", 'M', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &Denemo.prefs.midi_driver, _("Midi driver options"), _("options") }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &filenames, NULL, _("[FILE]...") }, { NULL } }; const gchar* subtitle = _(" "); gchar *header = g_strconcat (_("GNU Denemo version"), " ", VERSION, "\n", _("Denemo is a graphical music notation editor.\n" "It uses GNU Lilypond for music typesetting.\n" "Denemo is part of the GNU project."), NULL); const gchar* footer = _("Report bugs to http://www.denemo.org\n" "GNU Denemo, a free and open music notation editor"); context = g_option_context_new (subtitle); g_option_context_set_summary (context, header); g_free(header); g_option_context_set_description (context, footer); g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE); if(gtkstatus) g_option_context_add_group (context, gtk_get_option_group (TRUE)); if (!g_option_context_parse (context, &argc, &argv, &error)) g_error ("Option parsing failed: %s", error->message); if(version) { gchar *message = g_strconcat ( _("GNU Denemo version"), " ", VERSION, "\n", _("Gtk versions") , " runtime: %u.%u.%u, compiled against: %u.%u.%u, \n", _("© 1999-2005, 2009 Matthew Hiller, Adam Tee, and others, 2010-2015 Richard Shann, Jeremiah Benham, Nils Gey and others.\n"), _("This program is provided with absolutely NO WARRANTY; see the file COPYING for details.\n"), _("This software may be redistributed and modified under the terms of the GNU General Public License; again, see the file COPYING for details.\n"), NULL); g_print(message, gtk_major_version, gtk_minor_version, gtk_micro_version, GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); g_free(message); exit(EXIT_SUCCESS); } if(scheme_script_name) Denemo.scheme_file = g_build_filename (get_system_data_dir (), COMMANDS_DIR, scheme_script_name, NULL); if(Denemo.prefs.audio_driver) g_string_ascii_down (Denemo.prefs.audio_driver); if(Denemo.prefs.midi_driver) g_string_ascii_down (Denemo.prefs.midi_driver); #ifdef HAVE_SIGCHLD //signal (SIGCHLD, sigchld_handler); #endif //Set command line mode if gtk could not be initialized if(!gtkstatus) Denemo.non_interactive = TRUE; return filenames; } static void localization_init() { setlocale (LC_ALL, ""); bindtextdomain(GETTEXT_PACKAGE, get_system_locale_dir ()); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); } static void init_environment() { #ifdef G_OS_WIN32 gchar *prefix = g_win32_get_package_installation_directory (NULL, NULL); gchar *guile = g_build_filename (prefix, "share", "guile", NULL); gchar *guile_1_8 = g_build_filename (guile, "1.8", NULL); gchar *lilypond_current_scm = g_build_filename (prefix, "share", "lilypond", "current", "scm", NULL); gchar *denemo_scm = g_build_filename (get_system_data_dir (), COMMANDS_DIR, NULL); gchar *denemo_modules_scm = g_build_filename (get_system_data_dir (), COMMANDS_DIR, "denemo-modules", NULL); if (g_file_test (guile, G_FILE_TEST_EXISTS)) { gchar *guile_path = g_strconcat (guile, ";", guile_1_8, ";", denemo_scm, ";", denemo_modules_scm, ";", lilypond_current_scm, NULL); //FIXME TRUE means we overwrite any installed version of lilyponds scm, FALSE risks not putting denemos scm in the path... g_setenv ("GUILE_LOAD_PATH", guile_path, TRUE); g_info ("Setting GUILE_LOAD_PATH=%s\n", guile_path); } else warningdialog (_("You may need to set GUILE_LOAD_PATH to the directory where you have ice9 installed\n")); g_setenv ("PANGO_PREFIX", prefix, TRUE); g_setenv ("PANGO_MODULE_VERSION", "1.6.0", TRUE); g_setenv ("PANGO_SO_EXTENSION", ".dll", TRUE); g_info ("Setting PANGO_PREFIX=%s\n", prefix); g_setenv ("GTK_MODULE_VERSION", "2.10.0", TRUE); g_setenv ("GTK_SO_EXTENSION", ".dll", TRUE); g_setenv ("GTK_PREFIX", prefix, TRUE); g_info ("Setting GTK_PREFIX=%s\n", prefix); gchar *fc_path = g_build_filename (prefix, "etc", "fonts", NULL); g_setenv ("FONTCONFIG_PATH", fc_path, TRUE); g_info ("Setting FONTCONFIG_PATH=%s\n", fc_path); gchar *fc_file = g_build_filename (fc_path, "fonts.conf", NULL); g_setenv ("FONTCONFIG_FILE", fc_file, TRUE); g_info ("Setting FONTCONFIG_FILE=%s\n", fc_file); //gchar *program_files = g_getenv ("PROGRAMFILES"); gchar *path = g_getenv ("PATH"); gchar *lilypond_path = g_build_filename (prefix, "bin", NULL); gchar *lib_path = g_build_filename (prefix, "lib", NULL); path = g_strconcat (path, ";", lilypond_path, ";", lib_path, NULL); g_setenv ("PATH", path, TRUE); g_info ("PATH set to %s\n", path); gchar *lilypond_data_path = g_build_filename (prefix, "share", "lilypond", "current", NULL); g_setenv ("LILYPOND_DATA_PATH", lilypond_data_path, FALSE); g_info ("LILYPOND_DATA_PATH will be %s if not already set", lilypond_data_path); append_to_path ("GUILE_LOAD_PATH", get_system_data_dir (), NULL); #else add_font_directory (g_build_filename (get_system_data_dir (), "fonts", NULL)); GList* dirs = NULL; dirs = g_list_append(dirs, g_build_filename (PACKAGE_SOURCE_DIR, COMMANDS_DIR, NULL)); dirs = g_list_append(dirs, g_build_filename (get_system_data_dir (), COMMANDS_DIR, NULL)); gchar* data_dir = find_dir_for_file ("denemo.scm", dirs); append_to_path ("GUILE_LOAD_PATH", g_build_filename (data_dir, NULL), g_build_filename (data_dir, "denemo-modules", NULL), NULL); #endif /* end of else not windows */ g_setenv ("LILYPOND_VERBOSE", "1", FALSE); gchar *fontpath = NULL; fontpath = find_denemo_file(DENEMO_DIR_FONTS, "feta.ttf"); if(fontpath) add_font_file (fontpath); else g_info("Did not find feta.ttf - perhaps installed in system"); g_free(fontpath); fontpath = find_denemo_file(DENEMO_DIR_FONTS, "Denemo.ttf"); if(fontpath) add_font_file (fontpath); else g_info("Did not find Denemo.ttf - perhaps installed in system"); g_free(fontpath); fontpath = find_denemo_file(DENEMO_DIR_FONTS, "emmentaler.ttf"); if(fontpath) add_font_file (fontpath); else g_info("Did not find emmentaler.ttf - perhaps installed in system"); g_free(fontpath); g_setenv ("LYEDITOR", "denemoclient %(line)s %(column)s", FALSE); } //check .denemo-xxx directory already exists set Denemo.old_user_data_dir to it if so. static void check_if_upgrade (void) { if(get_user_data_dir (FALSE)==NULL) { guint32 ver_maj, ver_min, ver_mic, sofar=0; guint32 this_maj, this_min, this_mic, this_ver; guint32 foundmaj=0, foundmin=0, foundmic=0; const gchar *name; sscanf (PACKAGE_VERSION, "%u.%u.%u", &this_maj, &this_min, &this_mic); this_ver = (this_maj<<16) + (this_min<<8) + this_mic;//allows for version numbers up to 256 GDir *dir = g_dir_open (g_get_home_dir (), 0, NULL); if(dir==NULL) { g_warning ("Cannot find home directory"); return; } while ((name = g_dir_read_name (dir))) { gchar *filename = g_build_filename (g_get_home_dir (), name, NULL); if(g_file_test (filename, G_FILE_TEST_IS_DIR)) { guint32 val; ver_maj=ver_min=ver_mic=0; sscanf (name, ".denemo-%u.%u.%u", &ver_maj, &ver_min, &ver_mic); //g_debug (" %u %u %u\n", ver_maj, ver_min, ver_mic); val = (ver_maj<<16) + (ver_min<<8) + ver_mic; if(val) g_debug("name %s", name); if (val>this_ver) { g_warning ("Downgrade of Denemo version. Ignoring"); return; } g_free(filename); if(val>sofar) sofar = val; } } if(sofar) { gchar *old_dot_denemo = g_strdup_printf (".denemo-%u.%u.%u", (unsigned)(sofar>>16), (unsigned)((sofar>>8)&0xFF), (unsigned)(sofar&0xFF)); Denemo.old_user_data_dir = g_build_filename (g_get_home_dir (), old_dot_denemo, NULL); g_free(old_dot_denemo); } } } /* main_log_handler: * Message handler. How log levels should be used: * ERROR: Fatal error that makes the program stop. * CRITICAL: Error that don't makes the program stop, but should make a test * fail * WARNING: Warns the user (or developper) about unwanted, but non fatal stuffs * MESSAGE: Regular messages about program execution. * INFO: Further information that may interest users, when launched with * --verbose. Thoses messages may be relevant to repport bugs, but * non interesting ortherwise. * DEBUG: Debug information that may interest developpers, when compiled with * -DDEBUG or configured with --enable-debug, and launched with * --verbose */ static void main_log_handler(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data ){ if(Denemo.silent) return; char* color = NULL; char* level = NULL; char* endcolor = "\033[0m"; FILE* stream = stdout; char* prev = NULL; char* next = NULL; char* msg = NULL; if(log_level & G_LOG_LEVEL_ERROR){ color = "\033[1;41m"; level = "ERROR"; stream = stderr; } else if (log_level & G_LOG_LEVEL_CRITICAL){ color = "\033[1;31m"; level = "CRITICAL"; stream = stderr; } else if (log_level & G_LOG_LEVEL_WARNING){ color = "\033[0;33m"; level = "WARNING"; stream = stderr; } else if (log_level & G_LOG_LEVEL_MESSAGE){ color = "\033[0;32m"; level = "MESSAGE"; } else if (Denemo.verbose && (log_level & G_LOG_LEVEL_INFO)){ color = "\033[0;34m"; level = "INFO"; } #ifdef DEBUG else if (Denemo.verbose && (log_level & G_LOG_LEVEL_DEBUG)){ color = "\033[0;35m"; level = "DEBUG"; } #endif #ifdef G_OS_WIN32 color = ""; level = ""; #endif if(color != NULL && level != NULL){ msg = g_strdup(message); //Displays colored header g_fprintf(stream, "%s%6s - %-8s%s: ", color, log_domain, level, endcolor); //Add some tab prev = msg; while(next = strchr(prev, '\n')){ *next = '\0'; g_fprintf(stream, "%s\n ", prev); prev = next+1; } g_fprintf(stream, "%s\n", prev); g_free(msg); } if(log_level & G_LOG_FLAG_FATAL) abort(); } int main (int argc, char *argv[]) { gchar** files = NULL; gboolean gtk_status = FALSE; g_log_set_default_handler (main_log_handler, NULL); if(!(gtk_status = gtk_init_check (&argc, &argv))) g_message(_("Could not start graphical interface.")); files = process_command_line (argc, argv, gtk_status); /* initialization of directory relocatability */ initdir (); check_if_upgrade(); init_environment(); localization_init(); //register_stock_items (); scm_with_guile (inner_main, files); return 0; } denemo-2.2.0/src/core/PaxHeaders.19168/graphicseditor.h0000644000000000000000000000013213135434036017430 xustar0030 mtime=1500919838.346648472 30 atime=1500919920.013315139 30 ctime=1500919914.183315139 denemo-2.2.0/src/core/graphicseditor.h0000644000175000017500000000154413135434036021305 0ustar00jjbenhamjjbenham00000000000000/* * graphicseditor.h * * Copyright 2014 Richard Shann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ gchar *edit_graphics_file (gchar *filename, gchar *newname); denemo-2.2.0/src/core/PaxHeaders.19168/prefops.c0000644000000000000000000000013213135434036016072 xustar0030 mtime=1500919838.346648472 30 atime=1500919920.013315139 30 ctime=1500919914.199981805 denemo-2.2.0/src/core/prefops.c0000644000175000017500000007347213135434036017760 0ustar00jjbenhamjjbenham00000000000000/* prefops.c * Functions for initializing preferences * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 1999-2005 Matthew Hiller */ #include #include #include #include #include #include #include #include #include "config.h" #include #include #include #include "core/utils.h" #include "core/prefops.h" #include "audio/playback.h" #include "core/view.h" static gint readxmlprefsFile (gchar * filename); #define ret (&Denemo.prefs) static void set_default_lilypond_path (void) { #ifdef G_OS_WIN32 ret->lilypath = g_string_new (g_build_filename (get_system_bin_dir (), "lilypond-windows.exe", NULL)); //We don't assume the file assoc works - we are installing this anyway to a known place,the option neither lilypond-windows.exe nor the -dgui option are used #else /* !G_OS_WIN32 */ #ifdef _GUB_BUILD_ #ifdef _MACH_O_ ret->lilypath = g_string_new (getenv("LILYPOND_PATH")); #else ret->lilypath = g_string_new (g_build_filename (get_system_bin_dir (), "lilypond", NULL)); #endif #else ret->lilypath = g_string_new ("lilypond"); #endif #endif /* !G_OS_WIN32 */ } /** * Initialise user preferences to reasonable defaults * read global denemorc file * then local preferences file * */ void initprefs () { gchar *dotdenemo = (gchar *) get_user_data_dir (TRUE); gchar *localrc = dotdenemo ? g_build_filename (dotdenemo, PREFS_FILE, NULL) : NULL; if(Denemo.old_user_data_dir) { if(confirm (_("Denemo Upgrade"), _("Re-use your old preferences, palettes and shortcuts?"))) localrc = g_build_filename (Denemo.old_user_data_dir, PREFS_FILE, NULL); else Denemo.old_user_data_dir = NULL; } /* Reasonable default values */ ret->mode = INPUTEDIT | INPUTRHYTHM | INPUTNORMAL; const gchar *name = g_get_user_name (); ret->username = g_string_new (name ? name : "DenemoUser"); ret->password = g_string_new (""); ret->fontname = g_string_new ("Denemo"); ret->fontsize = 9; #ifdef G_OS_WIN32 ret->browser = g_string_new (""); //use file association ret->graphicseditor = g_string_new (g_build_filename (get_system_bin_dir (), "..\\..\\..\\Inkscape\\inkscape.exe", NULL)); //the likely place for Inkscape to be installed, as we are not shipping it yet. ret->imageviewer = g_string_new (""); #else /* !G_OS_WIN32 */ ret->browser = g_string_new ("firefox"); ret->graphicseditor = g_string_new ("inkscape"); ret->imageviewer = g_string_new ("eog"); #endif /* !G_OS_WIN32 */ set_default_lilypond_path (); ret->profile = g_string_new ("Default"); ret->denemopath = g_string_new (g_get_home_dir ()); ret->lilyversion = g_string_new (""); //meaning use installed LilyPond version ret->temperament = g_string_new ("Equal"); ret->strictshortcuts = FALSE; ret->resolution = 300; ret->display_refresh = 0.01; ret->animation_steps = 10; ret->max_menu_size = 16; ret->tooltip_timeout = 1000; ret->tooltip_browse_timeout = 700; ret->tooltip_browse_mode_timeout = 1000; ret->overlays = FALSE; ret->continuous = TRUE; ret->cursor_highlight = TRUE; ret->return_key_is_special = TRUE; ret->newbie = TRUE; ret->persistence = TRUE; ret->learning = TRUE; ret->immediateplayback = TRUE; ret->measureswitchsound = 72; ret->manualtypeset = FALSE; ret->typesetrefresh = 10; ret->typesettype = TYPESET_ALL_MOVEMENTS; ret->firstmeasure = 4; ret->firststaff = 4; ret->lastmeasure = 4; ret->laststaff = 4; ret->audio_driver = g_string_new ("default"); ret->midi_driver = g_string_new ("default"); #ifdef _HAVE_PORTAUDIO_ ret->audio_driver = g_string_new ("portaudio"); ret->midi_driver = g_string_new ("portmidi"); #endif ret->jack_connect_ports_l = g_string_new ("system:playback_1"); ret->jack_connect_ports_r = g_string_new ("system:playback_2"); ret->jack_connect_midi_in_port = g_string_new (""); ret->jack_connect_midi_out_port = g_string_new (""); ret->portaudio_device = g_string_new ("default"); ret->portaudio_sample_rate = 44100; ret->portaudio_period_size = 256; ret->portmidi_input_device = g_string_new ("default"); ret->portmidi_output_device = g_string_new ("default"); gchar *soundfontpath = find_denemo_file(DENEMO_DIR_SOUNDFONTS, "A320U.sf2"); ret->fluidsynth_soundfont = g_string_new (soundfontpath); ret->pitchspellingchannel = 15; ret->pitchspellingprogram = 17; ret->saveparts = FALSE; ret->spillover = TRUE; ret->ignore_ties = FALSE; ret->createclones = FALSE; ret->enable_thumbnails = TRUE; ret->autosave = TRUE; ret->autosave_timeout = 5; ret->compression = 3; ret->maxhistory = 20; ret->midi_in_controls = FALSE; ret->playback_controls = FALSE; ret->toolbar = TRUE; ret->console_pane = FALSE; ret->lyrics_pane = TRUE; ret->visible_directive_buttons = TRUE; #ifdef _MACH_O_ ret->hide_windows = TRUE; #else ret->hide_windows = FALSE; #endif ret->autoupdate = FALSE; ret->rhythm_palette = TRUE; ret->object_palette = TRUE; ret->history = g_queue_new (); ret->zoom = 100; ret->system_height = 100; ret->applytoselection = TRUE; ret->quickshortcuts = TRUE; ret->progressbardecorations = TRUE; /* Read values from personal preferences file */ //readpreffile (localrc, ret); if (localrc) { if (g_file_test (localrc, G_FILE_TEST_EXISTS)) readxmlprefsFile (localrc); else writeXMLPrefs (ret); } g_free (localrc); if(ret->lilypath && !g_file_test (ret->lilypath->str, G_FILE_TEST_EXISTS)) set_default_lilypond_path (); //FIXME if ret->lilypath still does not exist prepare to issue warning to user once the GUI is available. #undef ret } /** * parseConfig searches the rc file for the configuration settings. * * @param doc document pointer * @param cur pointer to the current XML Node * @param prefs pointer to the preferences structure * */ static void parseConfig (xmlDocPtr doc, xmlNodePtr cur, DenemoPrefs * prefs) { cur = cur->xmlChildrenNode; while (cur != NULL) { #define READXMLENTRY(field) \ else if (0 == xmlStrcmp (cur->name, (const xmlChar *) #field))\ {\ xmlChar *tmp = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1);\ if(tmp)\ {\ define_scheme_variable("DenemoPref_" #field, (gchar*) tmp, NULL);\ prefs->field =\ g_string_assign (prefs->field, (gchar *) tmp);\ xmlFree (tmp);\ }\ } #define READINTXMLENTRY(field) \ else if (0 ==\ xmlStrcmp (cur->name, (const xmlChar *) #field))\ {\ xmlChar *tmp = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1);\ if(tmp)\ {\ define_scheme_int_variable("DenemoPref_" #field, atoi((gchar *) tmp), NULL); \ prefs->field = atoi ((gchar *) tmp);\ xmlFree (tmp);\ }\ } #define READDOUBLEXMLENTRY(field) \ else if (0 ==\ xmlStrcmp (cur->name, (const xmlChar *) #field))\ {\ xmlChar *tmp = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1);\ if(tmp)\ {\ define_scheme_int_variable("DenemoPref_" #field, atof((gchar *) tmp), NULL); \ prefs->field = atof ((gchar *) tmp);\ xmlFree (tmp);\ }\ } #define READBOOLXMLENTRY(field) \ else if (0 ==\ xmlStrcmp (cur->name, (const xmlChar *) #field))\ {\ xmlChar *tmp = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1);\ if(tmp)\ {\ define_scheme_bool_variable("DenemoPref_" #field, atoi((gchar *) tmp), NULL); \ prefs->field = atoi ((gchar *) tmp);\ xmlFree (tmp);\ }\ } if (0 == xmlStrcmp (cur->name, (const xmlChar *) "lilypath")) { xmlChar *tmp = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); if (tmp) { gchar *curname = g_strdup_printf ("DenemoPref_%s", cur->name); define_scheme_variable (curname, (gchar*) tmp, NULL); g_free (curname); prefs->lilypath = g_string_assign (prefs->lilypath, (gchar *) tmp); //g_debug ("Lilypond Path %s\n", tmp); xmlFree (tmp); } } READXMLENTRY (graphicseditor) READXMLENTRY (fontname) READINTXMLENTRY (fontsize) READXMLENTRY (browser) else if (0 == xmlStrcmp (cur->name, (const xmlChar *) "autosavetimeout")) { xmlChar *tmp = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); if (tmp) { gchar *curname = g_strdup_printf ("DenemoPref_%s", cur->name); define_scheme_int_variable (curname, atoi ((char*) tmp), NULL); g_free (curname); prefs->autosave_timeout = atoi ((gchar *) tmp); if (prefs->autosave_timeout < 1) prefs->autosave_timeout = 1; //g_debug ("Autosave Timeout %s\n", tmp); xmlFree (tmp); } } else if (0 == xmlStrcmp (cur->name, (const xmlChar *) "maxhistory")) { xmlChar *tmp = xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); if (tmp) { gchar *curname = g_strdup_printf ("DenemoPref_%s", cur->name); define_scheme_int_variable (curname, atoi ((char*) tmp), NULL); g_free (curname); prefs->maxhistory = atoi ((gchar *) tmp); if (prefs->maxhistory < 1) prefs->maxhistory = 1; xmlFree (tmp); } } READXMLENTRY (imageviewer) READXMLENTRY (profile) READXMLENTRY (username) READXMLENTRY (password) READXMLENTRY (denemopath) READXMLENTRY (temperament) READBOOLXMLENTRY (createclones) READBOOLXMLENTRY (autosave) READINTXMLENTRY (autosave_timeout) READINTXMLENTRY (maxhistory) READBOOLXMLENTRY (immediateplayback) READINTXMLENTRY (measureswitchsound) READBOOLXMLENTRY (manualtypeset) READINTXMLENTRY (typesetrefresh) READINTXMLENTRY (typesettype) READINTXMLENTRY (firstmeasure) READINTXMLENTRY (firststaff) READINTXMLENTRY (lastmeasure) READINTXMLENTRY (laststaff) READINTXMLENTRY (pitchspellingchannel) READINTXMLENTRY (pitchspellingprogram) READBOOLXMLENTRY (persistence) READBOOLXMLENTRY (cursor_highlight) READBOOLXMLENTRY (return_key_is_special) READBOOLXMLENTRY (newbie) READBOOLXMLENTRY (learning) READBOOLXMLENTRY (applytoselection) READBOOLXMLENTRY (quickshortcuts) READBOOLXMLENTRY (startmidiin) READINTXMLENTRY (mode) READBOOLXMLENTRY (strictshortcuts) READBOOLXMLENTRY (menunavigation) READINTXMLENTRY (resolution) READDOUBLEXMLENTRY (display_refresh) READINTXMLENTRY (animation_steps) READINTXMLENTRY (max_menu_size) READINTXMLENTRY (tooltip_timeout) READINTXMLENTRY (tooltip_browse_timeout) READINTXMLENTRY (tooltip_browse_mode_timeout) READBOOLXMLENTRY (overlays) READBOOLXMLENTRY (enable_thumbnails) READBOOLXMLENTRY (continuous) READBOOLXMLENTRY (spillover) READBOOLXMLENTRY (ignore_ties) READBOOLXMLENTRY (toolbar) READBOOLXMLENTRY (midi_in_controls) READBOOLXMLENTRY (playback_controls) READBOOLXMLENTRY (console_pane) // READBOOLXMLENTRY (lyrics_pane) READBOOLXMLENTRY (visible_directive_buttons) READBOOLXMLENTRY (rhythm_palette) READBOOLXMLENTRY (object_palette) READBOOLXMLENTRY (autoupdate) READXMLENTRY (audio_driver) READXMLENTRY (midi_driver) READBOOLXMLENTRY (jacktransport) READBOOLXMLENTRY (jacktransport_start_stopped) READXMLENTRY (jack_connect_ports_l) READXMLENTRY (jack_connect_ports_r) READXMLENTRY (jack_connect_midi_in_port) READXMLENTRY (jack_connect_midi_out_port) READXMLENTRY (portaudio_device) READINTXMLENTRY (portaudio_sample_rate) READINTXMLENTRY (portaudio_period_size) READINTXMLENTRY (maxrecordingtime) READXMLENTRY (portmidi_input_device) READXMLENTRY (portmidi_output_device) READXMLENTRY (fluidsynth_soundfont) READBOOLXMLENTRY (fluidsynth_reverb) READBOOLXMLENTRY (fluidsynth_chorus) READINTXMLENTRY (zoom) READINTXMLENTRY (dynamic_compression) READBOOLXMLENTRY (damping) READINTXMLENTRY (system_height) READBOOLXMLENTRY (progressbardecorations) READBOOLXMLENTRY (saveparts) cur = cur->next; } return; } #undef READXMLENTRY #undef READBOOLXMLENTRY #undef READINTXMLENTRY #undef READDOUBLEXMLENTRY #define GETBOOLPREF(field) \ else if (!strcmp(prefname, #field))\ return Denemo.prefs.field; gboolean get_bool_pref (gchar * prefname) { if (*prefname == 0) return FALSE; GETBOOLPREF (autosave) GETBOOLPREF (createclones) GETBOOLPREF (immediateplayback) GETBOOLPREF (manualtypeset) GETBOOLPREF (damping) GETBOOLPREF (persistence) GETBOOLPREF (cursor_highlight) GETBOOLPREF (return_key_is_special) GETBOOLPREF (newbie) GETBOOLPREF (learning) GETBOOLPREF (applytoselection) GETBOOLPREF (quickshortcuts) GETBOOLPREF (startmidiin) GETBOOLPREF (strictshortcuts) GETBOOLPREF (menunavigation) GETBOOLPREF (overlays) GETBOOLPREF (enable_thumbnails) GETBOOLPREF (continuous) GETBOOLPREF (spillover) GETBOOLPREF (ignore_ties) GETBOOLPREF (toolbar) GETBOOLPREF (midi_in_controls) GETBOOLPREF (playback_controls) GETBOOLPREF (console_pane) // GETBOOLPREF (lyrics_pane) GETBOOLPREF (visible_directive_buttons) GETBOOLPREF (rhythm_palette) GETBOOLPREF (object_palette) GETBOOLPREF (autoupdate) GETBOOLPREF (jacktransport_start_stopped) GETBOOLPREF (fluidsynth_reverb) GETBOOLPREF (fluidsynth_chorus) GETBOOLPREF (progressbardecorations) return FALSE; } #undef GETBOOLPREF #define GETINTPREF(field) \ else if (!strcmp(prefname, #field))\ return Denemo.prefs.field; gint get_int_pref (gchar * prefname) { if (*prefname == 0) return 0; GETINTPREF (measureswitchsound) GETINTPREF (typesettype) GETINTPREF (typesetrefresh) GETINTPREF (firstmeasure) GETINTPREF (firststaff) GETINTPREF (lastmeasure) GETINTPREF (laststaff) GETINTPREF (pitchspellingchannel) GETINTPREF (pitchspellingprogram) GETINTPREF (mode) GETINTPREF (resolution) GETINTPREF (animation_steps) GETINTPREF (max_menu_size) GETINTPREF (tooltip_timeout) GETINTPREF (tooltip_browse_timeout) GETINTPREF (tooltip_browse_timeout) GETINTPREF (portaudio_sample_rate) GETINTPREF (portaudio_period_size) GETINTPREF (zoom) GETINTPREF (dynamic_compression) GETINTPREF (system_height) return 0; } #undef GETINTPREF #define GETSTRINGPREF(field) \ else if (!strcmp(prefname, #field))\ return Denemo.prefs.field->str; gchar * get_string_pref (gchar * prefname) { if (*prefname == 0) return NULL; GETSTRINGPREF (imageviewer) GETSTRINGPREF (profile) GETSTRINGPREF (username) GETSTRINGPREF (password) GETSTRINGPREF (denemopath) GETSTRINGPREF (temperament) GETSTRINGPREF (audio_driver) GETSTRINGPREF (midi_driver) GETSTRINGPREF (jack_connect_ports_l) GETSTRINGPREF (jack_connect_ports_r) GETSTRINGPREF (jack_connect_midi_in_port) GETSTRINGPREF (jack_connect_midi_out_port) GETSTRINGPREF (portaudio_device) GETSTRINGPREF (portmidi_input_device) GETSTRINGPREF (portmidi_output_device) GETSTRINGPREF (fluidsynth_soundfont) return NULL; } /** * writeHistoryEntry - adds history entry to the denemohistory file * @param data - pointer to the filename to add * @param user_data - pointer to the xml Node */ static void writeHistoryEntry (gpointer data, gpointer user_data) { //g_debug ("filename %s\n", (gchar *) data); xmlNewTextChild ((xmlNodePtr) user_data, NULL, (xmlChar *) "file", (xmlChar *) data); } /** * parseHistory - reads history entry from xml node and adds it to the history queue * * @param doc document pointer * @param cur pointer to the current XML Node * @param prefs pointer to the preferences structure */ static void parseHistory (xmlDocPtr doc, xmlNodePtr cur, DenemoPrefs * prefs) { cur = cur->xmlChildrenNode; while (cur != NULL) { if (xmlStrcmp (cur->name, (const xmlChar *) "file") == 0) { gsize read = 0, written = 0; GError *err = NULL; gchar *tmp = NULL; tmp = (gchar *) xmlNodeListGetString (doc, cur->xmlChildrenNode, 1); if (tmp) { gchar *file = g_filename_to_utf8 (tmp, -1, &read, &written, &err); if (err != NULL) { file = "Unknown file name"; g_warning ("%s", err->message); g_error_free (err); } g_queue_push_tail (prefs->history, g_strdup (file)); g_free (tmp); g_free (file); } } cur = cur->next; } return; } static gint readxmlprefs (gchar * xmlsource, gboolean from_file); /** * Read a denemo preferences xml file. * @param filename - denemorc file name * @param prefs - struct to populate data into * */ static gint readxmlprefsFile (gchar * filename) { return readxmlprefs (filename, TRUE); } /** * Read denemo preferences from an xml string. * @param content - a string containing prefs in xml * */ gint readxmlprefsString (gchar * content) { gchar *xml = g_strconcat ("", content, "", NULL); gint ret = readxmlprefs (xml, FALSE); g_free (xml); return ret; } static gint readxmlprefs (gchar * xmlsource, gboolean from_file) { DenemoPrefs *prefs = &Denemo.prefs; gint ret = -1; xmlDocPtr doc = NULL; xmlNodePtr rootElem; if (from_file) g_message ("Loading preference file: %s", xmlsource); if (from_file) doc = xmlParseFile (xmlsource); else doc = xmlReadMemory (xmlsource, strlen (xmlsource), "noname.xml", NULL, 0); if (doc == NULL) { g_warning ("Could not read XML %s %s", from_file ? "File: " : ":", xmlsource); return ret; } rootElem = xmlDocGetRootElement (doc); if (rootElem == NULL) { g_warning ("Empty Document"); xmlFreeDoc (doc); return ret; } //g_debug ("RootElem %s\n", rootElem->name); if (xmlStrcmp (rootElem->name, (const xmlChar *) "Denemo")) { g_warning ("Document has wrong type"); xmlFreeDoc (doc); return ret; } rootElem = rootElem->xmlChildrenNode; while (rootElem != NULL) { g_debug ("RootElem 2 %s\n", rootElem->name); if (0 == xmlStrcmp (rootElem->name, (const xmlChar *) "Config")) { parseConfig (doc, rootElem, prefs); } rootElem = rootElem->next; } xmlFreeDoc (doc); if (Denemo.project) { if (Denemo.prefs.startmidiin) Denemo.project->input_source = INPUTMIDI; else Denemo.project->input_source = INPUTKEYBOARD; } ret = 0; return ret; } /** * Output an integer child as a child of the given node. * * @param parent - pointer to child nodes parent * @param name - name for the child node * @param content - data to add to the child node */ static xmlNodePtr newXMLIntChild (xmlNodePtr parent, const xmlChar * name, gint content) { static gchar sIntBuf[12]; /* enough for -2000000000 + '\0' */ sprintf (sIntBuf, "%d", content); return xmlNewChild (parent, NULL, name, (xmlChar *) sIntBuf); } /** * Output an double child as a child of the given node. * * @param parent - pointer to child nodes parent * @param name - name for the child node * @param content - data to add to the child node */ static xmlNodePtr newXMLDoubleChild (xmlNodePtr parent, const xmlChar * name, gdouble content) { static GString *str; if (str == NULL) str = g_string_new (""); g_string_printf (str, "%f", content); return xmlNewChild (parent, NULL, name, (xmlChar *) str->str); } gint writeXMLPrefs (DenemoPrefs * prefs) { gint ret = -1; xmlDocPtr doc; xmlNodePtr parent, child; static GString *localrc = NULL; if (!localrc) { localrc = g_string_new (g_build_filename (get_user_data_dir (TRUE), PREFS_FILE, NULL)); } doc = xmlNewDoc ((xmlChar *) "1.0"); doc->xmlRootNode = parent = xmlNewDocNode (doc, NULL, (xmlChar *) "Denemo", NULL); child = xmlNewChild (parent, NULL, (xmlChar *) "Config", NULL); #define WRITEXMLENTRY(field) \ if (prefs->field){\ gchar *def = g_strdup("Holds the value of the user's " #field " preference");\ gchar *curname = g_strdup_printf("DenemoPref_%s", #field);\ define_scheme_variable(curname, prefs->field->str, def);\ g_free(curname);\ g_free(def);\ xmlNewChild (child, NULL, (xmlChar *) #field,\ (xmlChar *) prefs->field->str);} #define WRITEXMLENTRY2(field) \ if (prefs->field){\ gchar *def = g_strdup("Holds the value of the user's " #field " preference");\ gchar *curname = g_strdup_printf("DenemoPref_%s", #field);\ define_scheme_variable(curname, prefs->field, def);\ g_free(curname);\ g_free(def);\ xmlNewChild (child, NULL, (xmlChar *) #field,\ (xmlChar *) prefs->field);} #define WRITEINTXMLENTRY(field){ \ gchar *def = g_strdup("Holds the integer value of the user's " #field " preference");\ gint value = prefs->field;\ gchar *curname = g_strdup_printf("DenemoPref_%s", #field);\ define_scheme_int_variable(curname, value, def);\ g_free(curname);\ g_free(def);\ newXMLIntChild (child, (xmlChar *) #field,\ prefs->field);} #define WRITEDOUBLEXMLENTRY(field){ \ gchar *def = g_strdup("Holds the integer value of the user's " #field " preference");\ gdouble value = prefs->field;\ gchar *curname = g_strdup_printf("DenemoPref_%s", #field);\ define_scheme_double_variable(curname, value, def);\ g_free(curname);\ g_free(def);\ newXMLDoubleChild (child, (xmlChar *) #field,\ prefs->field);} #define WRITEBOOLXMLENTRY(field){ \ gchar *def = g_strdup("Holds #t or #f, the user's " #field " preference");\ gboolean value = prefs->field;\ gchar *curname = g_strdup_printf("DenemoPref_%s", #field);\ define_scheme_bool_variable(curname, value, def);\ g_free(curname);\ g_free(def);\ newXMLIntChild (child, (xmlChar *) #field,\ prefs->field);} WRITEXMLENTRY (lilypath) WRITEXMLENTRY (graphicseditor) WRITEXMLENTRY (fontname) WRITEINTXMLENTRY (fontsize) WRITEXMLENTRY (imageviewer) WRITEXMLENTRY (profile) WRITEXMLENTRY (username) WRITEXMLENTRY (password) WRITEXMLENTRY (denemopath) WRITEXMLENTRY (temperament) WRITEBOOLXMLENTRY (autosave) WRITEINTXMLENTRY (autosave_timeout) WRITEINTXMLENTRY (maxhistory) WRITEBOOLXMLENTRY (saveparts) WRITEBOOLXMLENTRY (createclones) WRITEBOOLXMLENTRY (spillover) WRITEBOOLXMLENTRY (ignore_ties) WRITEBOOLXMLENTRY (immediateplayback) WRITEINTXMLENTRY (measureswitchsound) WRITEBOOLXMLENTRY (manualtypeset) WRITEINTXMLENTRY (typesetrefresh) WRITEINTXMLENTRY (typesettype) WRITEINTXMLENTRY (firstmeasure) WRITEINTXMLENTRY (firststaff) WRITEINTXMLENTRY (lastmeasure) WRITEINTXMLENTRY (laststaff) WRITEINTXMLENTRY (pitchspellingchannel) WRITEINTXMLENTRY (pitchspellingprogram) WRITEBOOLXMLENTRY (persistence) WRITEBOOLXMLENTRY (cursor_highlight) WRITEBOOLXMLENTRY (return_key_is_special) WRITEBOOLXMLENTRY (newbie) WRITEBOOLXMLENTRY (learning) WRITEBOOLXMLENTRY (applytoselection) WRITEBOOLXMLENTRY (quickshortcuts) WRITEBOOLXMLENTRY (startmidiin) WRITEINTXMLENTRY (mode) WRITEBOOLXMLENTRY (strictshortcuts) WRITEBOOLXMLENTRY (menunavigation) WRITEINTXMLENTRY (resolution) WRITEDOUBLEXMLENTRY (display_refresh) WRITEINTXMLENTRY (animation_steps) WRITEINTXMLENTRY (max_menu_size) WRITEINTXMLENTRY (tooltip_timeout) WRITEINTXMLENTRY (tooltip_browse_timeout) WRITEINTXMLENTRY (tooltip_browse_mode_timeout) WRITEBOOLXMLENTRY (overlays) WRITEBOOLXMLENTRY (enable_thumbnails) WRITEBOOLXMLENTRY (continuous) WRITEBOOLXMLENTRY (toolbar) WRITEBOOLXMLENTRY (midi_in_controls) WRITEBOOLXMLENTRY (playback_controls) WRITEBOOLXMLENTRY (console_pane) // WRITEBOOLXMLENTRY (lyrics_pane) WRITEBOOLXMLENTRY (visible_directive_buttons) WRITEBOOLXMLENTRY (autoupdate) WRITEBOOLXMLENTRY (rhythm_palette) WRITEBOOLXMLENTRY (object_palette) WRITEXMLENTRY (audio_driver) WRITEXMLENTRY (midi_driver) WRITEBOOLXMLENTRY (jacktransport) WRITEBOOLXMLENTRY (jacktransport_start_stopped) WRITEXMLENTRY (jack_connect_ports_l) WRITEXMLENTRY (jack_connect_ports_r) WRITEXMLENTRY (jack_connect_midi_in_port) WRITEXMLENTRY (jack_connect_midi_out_port) WRITEXMLENTRY (portaudio_device) WRITEINTXMLENTRY (portaudio_sample_rate) WRITEINTXMLENTRY (portaudio_period_size) WRITEINTXMLENTRY (maxrecordingtime) WRITEXMLENTRY (portmidi_input_device) WRITEXMLENTRY (portmidi_output_device) WRITEXMLENTRY (fluidsynth_soundfont) WRITEBOOLXMLENTRY (fluidsynth_reverb) WRITEBOOLXMLENTRY (fluidsynth_chorus) WRITEINTXMLENTRY (dynamic_compression) WRITEBOOLXMLENTRY (damping) WRITEINTXMLENTRY (zoom) WRITEINTXMLENTRY (system_height) WRITEBOOLXMLENTRY (progressbardecorations) WRITEXMLENTRY (browser) xmlSaveFormatFile (localrc->str, doc, 1); xmlFreeDoc (doc); ret = 0; return ret; } /** * Read denemohistory file * * @param prefs pointer to the preferences structure * */ gint readHistory () { gint ret = -1; xmlDocPtr doc = NULL; xmlNodePtr rootElem; gchar *oldhistory = NULL; static GString *filename = NULL; if (!filename) { filename = g_string_new (g_build_filename (get_user_data_dir (TRUE), "denemohistory", NULL)); } gchar* history = oldhistory ? oldhistory : filename->str; if(Denemo.old_user_data_dir) oldhistory = g_build_filename (Denemo.old_user_data_dir, "denemohistory", NULL); if (g_file_test (history, G_FILE_TEST_EXISTS)) doc = xmlParseFile (history); else return ret; if (doc == NULL) { g_warning ("Could not read XML file %s", filename->str); xmlSaveFormatFile ((gchar *) filename->str, doc, 0); //What is this for??? return ret; } rootElem = xmlDocGetRootElement (doc); if (rootElem == NULL) { g_warning ("Empty history document"); xmlFreeDoc (doc); return ret; } if (xmlStrcmp (rootElem->name, (const xmlChar *) "Denemo")) { g_warning ("Document has wrong type"); xmlFreeDoc (doc); return ret; } rootElem = rootElem->xmlChildrenNode; g_message("Reading history file %s", history); while (rootElem != NULL) { if (0 == xmlStrcmp (rootElem->name, (const xmlChar *) "History")) { parseHistory (doc, rootElem, &Denemo.prefs); } rootElem = rootElem->next; } xmlFreeDoc (doc); ret = 0; return ret; } /** * Write denemohistory file * * @param none * */ void writeHistory (void) { xmlDocPtr doc; xmlNodePtr parent, child; static GString *filename = NULL; if (!filename) { filename = g_string_new (g_build_filename (get_user_data_dir (TRUE), "denemohistory", NULL)); } doc = xmlNewDoc ((xmlChar *) "1.0"); doc->xmlRootNode = parent = xmlNewDocNode (doc, NULL, (xmlChar *) "Denemo", NULL); child = xmlNewChild (parent, NULL, (xmlChar *) "History", NULL); g_queue_foreach (Denemo.prefs.history, writeHistoryEntry, child); xmlSaveFormatFile (filename->str, doc, 0); xmlFreeDoc (doc); } /** * Store default window position size etc * * */ void storeWindowState (void) { GKeyFile *keyfile; gchar *contents; gchar *filename; gtk_window_get_size (GTK_WINDOW (Denemo.window), &(Denemo.width), &(Denemo.height)); keyfile = g_key_file_new (); g_key_file_set_integer (keyfile, "State", "width", Denemo.width); g_key_file_set_integer (keyfile, "State", "height", Denemo.height); g_key_file_set_boolean (keyfile, "State", "maximized", Denemo.maximized); contents = g_key_file_to_data (keyfile, NULL, NULL); g_key_file_free (keyfile); filename = g_build_filename (get_user_data_dir (TRUE), "state.ini", NULL); g_file_set_contents (filename, contents, -1, NULL); g_free (filename); g_free (contents); } /** * Load default window position * * @param the denemo gui * */ void loadWindowState (void) { gchar *filename; GKeyFile *keyfile; gint w, h; gboolean maximized = FALSE; GError *err = NULL; filename = g_build_filename (get_user_data_dir (TRUE), "state.ini", NULL); keyfile = g_key_file_new (); if (g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, NULL) == FALSE) { g_free (filename); w = INITIAL_WIDTH; h = INITIAL_HEIGHT; maximized = FALSE; } else { g_free (filename); w = g_key_file_get_integer (keyfile, "State", "width", &err); if (err != NULL) { w = INITIAL_WIDTH; g_error_free (err); err = NULL; } h = g_key_file_get_integer (keyfile, "State", "height", &err); if (err != NULL) { h = INITIAL_HEIGHT; g_error_free (err); err = NULL; } maximized = g_key_file_get_boolean (keyfile, "State", "maximized", &err); if (err != NULL) { maximized = FALSE; g_error_free (err); err = NULL; } g_key_file_free (keyfile); Denemo.width = (w <= 0 ? INITIAL_WIDTH : w); Denemo.height = (h <= 0 ? INITIAL_HEIGHT : h); gtk_window_set_default_size (GTK_WINDOW (Denemo.window), Denemo.width, Denemo.height); if ((Denemo.maximized = maximized)) { gtk_window_maximize (GTK_WINDOW (Denemo.window)); } else gtk_window_unmaximize (GTK_WINDOW (Denemo.window)); } } denemo-2.2.0/src/core/PaxHeaders.19168/view.c0000644000000000000000000000013213135434036015366 xustar0030 mtime=1500919838.349981806 30 atime=1500919920.046648472 30 ctime=1500919914.206648472 denemo-2.2.0/src/core/view.c0000644000175000017500000043055013135434036017246 0ustar00jjbenhamjjbenham00000000000000/* view.c * Functions to create a top level Denemo window * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2003-2005 Adam Tee (c) 2007, 2008 2009 Richard Shann * */ #include #include #include "core/view.h" #include "command/lilydirectives.h" #include "ui/dialogs.h" #include "core/utils.h" #include #include #include #include #include #include #include "audio/playback.h" #include "audio/pitchentry.h" #include "audio/portaudiobackend.h" #include "export/exportlilypond.h" #include "export/print.h" #include "printview/printview.h" #include "printview/svgview.h" #include "command/grace.h" #include "core/kbd-custom.h" #include "core/keyboard.h" #include "export/exportmidi.h" #include "audio/midi.h" #include "source/source.h" #include "command/commandfuncs.h" #include "display/calculatepositions.h" #include "ui/texteditors.h" #include "core/prefops.h" #include "audio/audiointerface.h" #include "source/sourceaudio.h" #include "command/scorelayout.h" #include "core/keymapio.h" #include "core/menusystem.h" #include "command/measure.h" #include "export/audiofile.h" #include "export/guidedimportmidi.h" #include "scripting/scheme-identifiers.h" #include "scripting/scheme-callbacks.h" static GtkWidget *playbutton; static GtkWidget *midirecordbutton; static GtkWidget *midihelpbutton; static GtkWidget *audiorecordbutton; static GtkWidget *midi_in_status; static GtkWidget *midiplayalongbutton; static GtkWidget *midiconductbutton; static GtkWidget *deletebutton; static GtkWidget *exportbutton; static GtkWidget *convertbutton; static GtkSpinButton *leadin; static GtkAdjustment *master_vol_adj; static GtkAdjustment *audio_vol_adj; static GtkAdjustment *master_tempo_adj; #ifdef _HAVE_RUBBERBAND_ static GtkAdjustment *speed_adj; #endif static void pb_audiorecord (GtkWidget * button); static void pb_exportaudio (GtkWidget * button); static DenemoProject *new_project (gboolean); static void newtab (); static void create_window (void); static void populate_opened_recent_menu (void); static gchar *get_most_recent_file (void); typedef enum { ACCELS_LOADED = 0x0, ACCELS_CHANGED = 0x1 << 0, EXTRA_ACCELS_ACTIVE = 0x1 << 1, ACCELS_MAY_HAVE_CHANGED = 0x1 << 2 } AccelStatus; GtkWidget * get_playalong_button () { return midiplayalongbutton; } GtkWidget * get_conduct_button () { return midiconductbutton; } GtkWidget * get_record_button () { return midirecordbutton; } static gint scm_eval_status = 0; static SCM standard_handler (gchar * data SCM_UNUSED, SCM tag, SCM throw_args SCM_UNUSED) { g_warning ("\nA script error for file/script %s; the throw arguments are\n", data); scm_display (throw_args, scm_current_output_port ()); scm_newline (scm_current_output_port ()); g_warning ("\nThe tag is\n"); scm_display (tag, scm_current_output_port ()); scm_newline (scm_current_output_port ()); scm_newline (scm_current_output_port ()); scm_eval_status = -1; // g_warning ("Undo will be affected\n"); //stage_undo(Denemo.gui->movement, ACTION_SCRIPT_ERROR); We don't need this as control will return to activate_script() which will terminate the undo properly, with anything the script has done on the undo stack. return SCM_BOOL_F; } static SCM standard_preunwind_proc (void *data, SCM key, SCM parameters) { // Capture the stack here: *(SCM *) data = scm_make_stack (SCM_BOOL_T, SCM_EOL); return *(SCM *) data; } gint eval_file_with_catch (gchar * filename) { // scm_c_primitive_load(filename); SCM captured_stack = SCM_BOOL_F; SCM name = scm_from_locale_string (filename); scm_eval_status = 0; scm_c_catch (SCM_BOOL_T, (scm_t_catch_body) scm_primitive_load, (void *) name, (scm_t_catch_handler) standard_handler, (void *) filename, standard_preunwind_proc, &captured_stack); if (captured_stack != SCM_BOOL_F) { #ifdef DEBUG scm_display_backtrace (captured_stack, scm_current_error_port (), SCM_BOOL_F, SCM_BOOL_F); #endif } return scm_eval_status; } gint call_out_to_guile (const char *script) { scm_eval_status = 0; scm_internal_catch (SCM_BOOL_T, (scm_t_catch_body) scm_c_eval_string, (void *) script, (scm_t_catch_handler) standard_handler, (void *) script); return scm_eval_status; } //FIXME common up these!!! void define_scheme_variable (gchar * varname, gchar * value, gchar * tooltip) { gchar *def = g_strdup_printf ("\"%s\"", value); //g_debug("Defining %s\n", def); scm_c_define (varname, scm_from_locale_string (def)); g_free (def); } void define_scheme_literal_variable (gchar * varname, gchar * value, gchar * tooltip) { scm_c_define (varname, scm_from_locale_string (value)); } void define_scheme_int_variable (gchar * varname, gint value, gchar * tooltip) { scm_c_define (varname, scm_from_int (value)); } void define_scheme_double_variable (gchar * varname, gdouble value, gchar * tooltip) { scm_c_define (varname, scm_from_double (value)); } void define_scheme_bool_variable (gchar * varname, gint value, gchar * tooltip) { scm_c_define (varname, SCM_BOOL (value)); } GError * execute_script_file (gchar * filename) { GError *error = NULL; gchar *script; if (g_file_get_contents (filename, &script, NULL, &error)) { call_out_to_guile (script); //FIXME setup error here if non null return g_free (script); } return error; } void execute_scheme (DenemoAction * action, DenemoScriptParam * param) { if (Denemo.ScriptRecording) denemo_action_activate (denemo_menusystem_get_action (RecordScript_STRING)); executeScript (); } /***************** end of definitions to implement calling radio/check items from scheme *******************/ //returns newly allocated string. FIXME use proper scm_xxx calls not strings gchar * get_midi_control_command (guchar type, guchar value) { gchar *command = g_strdup_printf ("(MIDI-shortcut::controller %d %d)", type, value); SCM scm = scm_c_eval_string (command); g_free (command); if (scm_is_string (scm)) { char *ctrl = scm_to_locale_string (scm); command = g_strdup (ctrl); //FIXME free (ctrl); return command; } return NULL; } //returns newly allocated string. FIXME use proper scm_xxx calls not strings gchar * get_midi_pitch_bend_command (gint value) { gchar *command = g_strdup_printf ("(MIDI-shortcut::pitchbend %d)", value); SCM scm = scm_c_eval_string (command); g_free (command); if (scm_is_string (scm)) { char *pbend; pbend = scm_to_locale_string (scm); command = g_strdup (pbend); //FIXME free (pbend); return command; } return NULL; } static void define_scheme_constants (void) { gint major = 0, minor = 0, micro = 0; sscanf (VERSION, "%d.%d.%d", &major, &minor, µ); gchar *denemo_version = g_strdup_printf ("%d.%d.%d%s", major, minor, micro, #ifdef G_OS_WIN32 "_Win" #else "" #endif ); gchar *filename = g_build_filename (get_system_data_dir (), COMMANDS_DIR, NULL); gchar *actions_dir = g_strdup_printf ("%s%c", filename, G_DIR_SEPARATOR); gchar *templates_dir = g_build_filename (get_system_data_dir (), "templates", NULL); gchar *instruments_dir = g_build_filename (get_system_data_dir (), "templates", "instruments", NULL); gchar *glyphs_dir = g_build_filename (get_system_data_dir (), COMMANDS_DIR, "bitmaps", NULL); gchar *graphics_dir = g_build_filename (get_system_data_dir (), COMMANDS_DIR, "graphics", NULL); glyphs_dir = g_strdup_printf ("%s%c", glyphs_dir, G_DIR_SEPARATOR); graphics_dir = g_strdup_printf ("%s%c", graphics_dir, G_DIR_SEPARATOR); if (filename) g_free (filename); filename = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, NULL); gchar *local_actions_dir = g_strdup_printf ("%s%c", filename, G_DIR_SEPARATOR); gchar *local_templates_dir = g_build_filename (get_user_data_dir (TRUE), "templates", NULL); gchar *local_instruments_dir = g_build_filename (get_user_data_dir (TRUE), "templates", "instruments", NULL); if (filename) g_free (filename); g_message ("Denemo version %s", denemo_version); #define DEF_SCHEME_STR(which, what, tooltip)\ scm_c_define(which, scm_from_locale_string(what)); #define DEF_SCHEME_CONST(which, what)\ define_scheme_int_variable(which, what, "See documentation elsewhere"); DEF_SCHEME_CONST ("DENEMO_INPUTMIDI", INPUTMIDI); DEF_SCHEME_CONST ("DENEMO_INPUTKEYBOARD", INPUTKEYBOARD); DEF_SCHEME_CONST ("DENEMO_INPUTAUDIO", INPUTAUDIO); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_LILYPOND", DENEMO_OVERRIDE_LILYPOND); DEF_SCHEME_CONST ("DENEMO_ALT_OVERRIDE", DENEMO_ALT_OVERRIDE); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_GRAPHIC", DENEMO_OVERRIDE_GRAPHIC); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_EDITOR", DENEMO_OVERRIDE_EDITOR); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_AFFIX", DENEMO_OVERRIDE_AFFIX); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_TAGEDIT", DENEMO_OVERRIDE_TAGEDIT); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_VOLUME", DENEMO_OVERRIDE_VOLUME); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_DURATION", DENEMO_OVERRIDE_DURATION); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_REPEAT", DENEMO_OVERRIDE_REPEAT); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_CHANNEL", DENEMO_OVERRIDE_CHANNEL); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_TEMPO", DENEMO_OVERRIDE_TEMPO); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_TRANSPOSITION", DENEMO_OVERRIDE_TRANSPOSITION); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_ONCE", DENEMO_OVERRIDE_ONCE); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_STEP", DENEMO_OVERRIDE_STEP); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_RAMP", DENEMO_OVERRIDE_RAMP); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_RELATIVE", DENEMO_OVERRIDE_RELATIVE); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_PERCENT", DENEMO_OVERRIDE_PERCENT); DEF_SCHEME_CONST ("DENEMO_MIDI_MASK", DENEMO_MIDI_MASK); DEF_SCHEME_CONST ("DENEMO_MIDI_INTERPRETATION_MASK", DENEMO_MIDI_INTERPRETATION_MASK); DEF_SCHEME_CONST ("DENEMO_MIDI_ACTION_MASK", DENEMO_MIDI_ACTION_MASK); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_DYNAMIC", DENEMO_OVERRIDE_DYNAMIC); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_HIDDEN", DENEMO_OVERRIDE_HIDDEN); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_MARKUP", DENEMO_OVERRIDE_MARKUP); DEF_SCHEME_CONST ("DENEMO_OVERRIDE_ABOVE", DENEMO_OVERRIDE_ABOVE); DEF_SCHEME_CONST ("VERSION_MAJOR", major); DEF_SCHEME_CONST ("VERSION_MINOR", minor); DEF_SCHEME_CONST ("VERSION_MICRO", micro); DEF_SCHEME_STR ("DENEMO_VERSION", denemo_version, "Holds the denemo version major.minor.micro"); DEF_SCHEME_STR ("DENEMO_ACTIONS_DIR", actions_dir, "Holds location of system-wide Denemo actions directory"); DEF_SCHEME_STR ("DENEMO_TEMPLATES_DIR", templates_dir, "Holds location of system-wide Denemo templates directory"); DEF_SCHEME_STR ("DENEMO_INSTRUMENTS_DIR", instruments_dir, "Holds location of system-wide Denemo instrument templates directory"); DEF_SCHEME_STR ("DENEMO_GLYPHS_DIR", glyphs_dir, "Holds location of system-wide Denemo glyphs directory"); DEF_SCHEME_STR ("DENEMO_GRAPHICS_DIR", graphics_dir, "Holds location of system-wide Denemo graphics directory"); DEF_SCHEME_STR ("DENEMO_LILYPOND_DIR", g_build_filename (actions_dir, "lilypond", NULL), "Holds location of Denemo's system-wide lilypond include files directory"); DEF_SCHEME_STR ("DENEMO_LOCAL_ACTIONS_DIR", local_actions_dir, "Holds location of Denemo actions directory beneath your home directory"); DEF_SCHEME_STR ("DENEMO_LOCAL_TEMPLATES_DIR", local_templates_dir, "Holds location of Denemo templates directory beneath your home directory"); DEF_SCHEME_STR ("DENEMO_LOCAL_INSTRUMENTS_DIR", local_instruments_dir, "Holds location of Denemo instrument templates directory beneath your home directory"); DEF_SCHEME_STR ("DENEMO_LOCAL_LILYPOND_DIR", g_build_filename (local_actions_dir, "lilypond", NULL), "Holds location of user lilypond include files directory"); DEF_SCHEME_STR ("DENEMO_HOME_DIR", g_get_home_dir (), "Holds location of user home directory"); { gint i; for (i = 0; i < G_N_ELEMENTS (DenemoObjTypeNames); i++) DEF_SCHEME_CONST (DenemoObjTypeNames[i], i); } DEF_SCHEME_STR ("DenemoClickTrack", DENEMO_CLICK_TRACK_NAME, "Holds a name for identifying a click track as the staff name query=denemo_name"); #undef DEF_SCHEME_STR #undef DEF_SCHEME_CONST g_free (denemo_version); g_free (actions_dir); g_free (local_actions_dir); } /* load denemo.scm from user's .denemo */ static void load_local_scheme_init (void) { gchar *filename = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, SCHEME_INIT, NULL); if (g_file_test (filename, G_FILE_TEST_EXISTS)) eval_file_with_catch (filename); //scm_c_primitive_load(filename); if (filename) g_free (filename); } void denemo_scheme_init (void) { gchar *initscheme = Denemo.scheme_file; if (!Denemo.non_interactive) Denemo.project->movement->undo_guard++; if (initscheme) { if (g_file_test (initscheme, G_FILE_TEST_EXISTS)) eval_file_with_catch (initscheme); //scm_c_primitive_load(initscheme); else g_warning ("Cannot find your scheme initialization file %s", initscheme); } if (Denemo.prefs.profile->len) { gchar *name = g_strconcat (Denemo.prefs.profile->str, ".scm", NULL); gchar *filename = g_build_filename (get_system_data_dir (), COMMANDS_DIR, name, NULL); if (g_file_test (filename, G_FILE_TEST_EXISTS)) eval_file_with_catch (filename); g_free (name); g_free (filename); score_status (Denemo.project, FALSE); } load_local_scheme_init (); if (!Denemo.non_interactive) Denemo.project->movement->undo_guard--; } /* append scheme to user's denemo.scm */ void append_to_local_scheme_init (gchar * scheme) { gchar *filename = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, SCHEME_INIT, NULL); FILE *fp = fopen (filename, "a+"); if (fp) { fprintf (fp, "%s", scheme); fclose (fp); } g_free (filename); } /* empty the user's user's denemo.scm */ void destroy_local_scheme_init (void) { gchar *filename = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, SCHEME_INIT, NULL); FILE *fp = fopen (filename, "w"); if (fp) fclose (fp); } /* load denemo.scm from system, */ static void load_scheme_init (void) { //Denemo.project->movement->undo_guard++; GList *dirs = NULL; dirs = g_list_append (dirs, g_build_filename (PACKAGE_SOURCE_DIR, COMMANDS_DIR, NULL)); dirs = g_list_append (dirs, g_build_filename (get_system_data_dir (), COMMANDS_DIR, NULL)); gchar *filename = find_path_for_file (SCHEME_INIT, dirs); g_debug ("System wide denemo.scm %s\n", filename); if (g_file_test (filename, G_FILE_TEST_EXISTS)) eval_file_with_catch (filename); //scm_c_primitive_load(filename); else g_warning ("Cannot find Denemo's scheme initialization file denemo.scm"); g_free (filename); //Denemo.project->movement->undo_guard--; } /* show the user's preferred view. Assumes all hidden on entry */ void load_preferences (void) { Denemo.project->mode = Denemo.prefs.mode; if (Denemo.prefs.startmidiin) Denemo.project->input_source = INPUTMIDI; set_toggle (TogglePlaybackControls_STRING, Denemo.prefs.playback_controls); set_toggle (ToggleMidiInControls_STRING, Denemo.prefs.midi_in_controls); set_toggle (QuickEdits_STRING, Denemo.prefs.quickshortcuts); set_toggle (ToggleToolbar_STRING, Denemo.prefs.toolbar); // set_toggle (ToggleLyricsView_STRING, Denemo.prefs.lyrics_pane); //Denemo.prefs.lyrics_pane = TRUE; //ignore pref, does not work. set_toggle (ToggleRhythmToolbar_STRING, Denemo.prefs.rhythm_palette); if (!Denemo.prefs.manualtypeset) set_toggle (TogglePrintView_STRING, TRUE); set_toggle (ToggleObjectMenu_STRING, Denemo.prefs.object_palette); //these menu ones are visible on entry - FIXME is this the array of toolbars below, ending in TRUE? // if (!Denemo.prefs.playback_controls) // toggle_playback_controls (NULL, NULL); //if (!Denemo.prefs.midi_in_controls) // toggle_midi_in_controls (NULL, NULL); // if (!Denemo.prefs.toolbar) // toggle_toolbar (NULL, NULL); if (Denemo.prefs.cursor_highlight) { Denemo.prefs.cursor_highlight = FALSE; scheme_highlight_cursor (SCM_BOOL_T); } } /* * create and populate the keymap - a register of all the Denemo commands with their shortcuts - with the built in commands. this means they come first - scrap this, instead load them with Default.commands. */ static void init_keymap (void) { if (Denemo.map) free_keymap (Denemo.map); Denemo.map = allocate_keymap (); //#include "generated/register_commands.h" } static gboolean load_files (gchar ** files) { gboolean ret = FALSE; gint i = 0; if (!files) { if (!Denemo.non_interactive) newtab (); else Denemo.project = new_project (TRUE); open_for_real (get_most_recent_file (), Denemo.project, FALSE, REPLACE_SCORE); return TRUE; } for (i = 0; files[i]; i++) { if (!Denemo.non_interactive) newtab (); else Denemo.project = new_project (TRUE); open_for_real (files[i], Denemo.project, FALSE, REPLACE_SCORE); ret = TRUE; } return ret; } static void autosave_recovery_check (void) { gchar *autosave_file; if (!Denemo.project->autosavename) return; autosave_file = Denemo.project->autosavename->str; if (g_file_test (autosave_file, G_FILE_TEST_EXISTS)) { if (choose_option (_("Denemo was terminated abnormally"), _("Open auto-saved file"), _("Delete auto-saved file"))) { open_for_real (autosave_file, Denemo.project, TRUE, REPLACE_SCORE); score_status (Denemo.project, TRUE); } g_remove (autosave_file); } } /* Called from main for scheme initialization reasons. calls back to finish command line processing */ void * inner_main (void *files) { #if 0 //disabled pending appearance of pathconfig.h /* initialize guile core */ { SCM load_path; char *user_path; /* we assume a normal guile with %load-path always be present */ load_path = scm_c_lookup ("%load-path"); scm_variable_set_x (load_path, scm_cons (scm_from_locale_string (DENEMO_LOAD_PATH), scm_variable_ref (load_path))); /* consider user-specified path extension */ user_path = getenv ("DENEMO_LOAD_PATH"); if (user_path) { scm_variable_set_x (load_path, scm_cons (scm_from_locale_string (user_path), scm_variable_ref (load_path))); } } #endif initprefs (); if (Denemo.old_user_data_dir != NULL) // if Denemo.old_user_data is not NULL the user has preferred to keep their old values. Copy the templates etc... { gchar *templates_dir = g_build_filename (get_user_data_dir (TRUE), "templates", NULL); gchar *old_templates_dir = g_build_filename (Denemo.old_user_data_dir, "templates", NULL); copy_files (old_templates_dir, templates_dir); } init_lilypond_buffer (); initialize_print_status (); //project Initializations if (audio_initialize (&Denemo.prefs)) g_error ("Failed to initialize audio or MIDI backends"); if (!Denemo.non_interactive) { initialize_keystroke_help (); init_gdk_cursors (); create_window (); installPalettes (); if (Denemo.prefs.tooltip_timeout) { g_object_set (gtk_widget_get_settings (Denemo.window), "gtk-tooltip-timeout", Denemo.prefs.tooltip_timeout, NULL); g_object_set (gtk_widget_get_settings (Denemo.window), "gtk-tooltip-browse-timeout", Denemo.prefs.tooltip_browse_timeout, NULL); g_object_set (gtk_widget_get_settings (Denemo.window), "gtk-tooltip-browse-mode-timeout", Denemo.prefs.tooltip_browse_mode_timeout, NULL); } Denemo.prefs.mode = INPUTEDIT | INPUTRHYTHM | INPUTNORMAL; //FIXME must correspond with default in prefops.c Denemo.accelerator_status = FALSE; } //Scheme initializations { const char prog[] = "(catch #t (lambda () (setlocale LC_ALL \"\")) (lambda _(display \"Locale not supported by the C library. Falling back to default \\\"C\\\" locale.\\n\"(current-error-port))))"; scm_c_eval_string (prog); //scm_setlocale( scm_variable_ref(scm_c_lookup("LC_ALL")), scm_from_locale_string("") ); create_scheme_identfiers (); if (Denemo.prefs.autoupdate) fetchcommands (NULL, NULL); gint i; //ensure (use-modules (ice-9 optargs)) is loaded first #:optional params call_out_to_guile ("(use-modules (ice-9 optargs))"); init_keymap (); define_scheme_constants (); load_default_keymap_file (); load_scheme_init (); readHistory (); gboolean file_loaded = load_files (files); if (!file_loaded && !Denemo.scheme_commands) { gchar *code = g_strdup_printf ("(d-InstrumentName \"%s\")", _("Unnamed")); call_out_to_guile (code); g_free (code); denemo_scheme_init (); } } //project related initializations if (!Denemo.non_interactive) { populate_opened_recent_menu (); //load_preferences (); score_status (Denemo.project, FALSE); if (Denemo.scheme_commands) { g_debug ("Executing '%s'", Denemo.scheme_commands); call_out_to_guile (Denemo.scheme_commands); } else autosave_recovery_check (); if (Denemo.prefs.fontname->len && Denemo.prefs.fontsize) { gchar *fontspec = g_strdup_printf ("%s %d", Denemo.prefs.fontname->str, Denemo.prefs.fontsize); GtkSettings *settings = gtk_settings_get_default (); //gtk_settings_set_string_property (settings, "gtk-font-name", fontspec, "denemo"); g_object_set (G_OBJECT(settings), "gtk-font-name", fontspec, NULL); g_free (fontspec); } finalize_menusystem(); load_preferences (); gtk_main (); } else if (Denemo.scheme_commands) { g_debug ("Executing '%s'", Denemo.scheme_commands); call_out_to_guile (Denemo.scheme_commands); } return NULL; } static void selection_received (GtkClipboard * clipboard, const gchar * text, DenemoScriptParam * param) { if (!text) { warningdialog (_("No selection text available")); param->status = FALSE; return; } param->string = g_string_new (text); param->status = TRUE; gtk_main_quit (); } /* get the X selection into the param->string */ void get_clipboard (DenemoAction * action, DenemoScriptParam * param) { GtkClipboard *clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); gtk_clipboard_request_text (clipboard, (GtkClipboardTextReceivedFunc) selection_received, param); gtk_main (); } GString * get_widget_path (GtkWidget * widget) { const gchar *name; GString *str = g_string_new ("/"); for (widget = gtk_widget_get_parent (widget); widget; widget = gtk_widget_get_parent (widget)) { name = gtk_widget_get_name (widget); g_string_prepend (str, name); g_string_prepend_c (str, '/'); } g_debug ("String is %s\n", str->str); return str; } static gboolean action_callbacks (DenemoProject * project) { GList *callbacks = project->callbacks; if (callbacks == NULL) return FALSE; project->callbacks = NULL; //do this before calling the callbacks, so they cannot run twice for (; callbacks; callbacks = g_list_delete_link (callbacks, callbacks)) { call_out_to_guile (callbacks->data); g_free (callbacks->data); } return TRUE; } /** * Close the current musical score (Denemo.project) freeing all its movements (DenemoMovement), releasing its memory and removing it from the global list Denemo.projects * Do not close the sequencer */ static gboolean close_project (void) { g_signal_handlers_block_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_draw_event), NULL); // turn of refresh of display before destroying the data stop_midi_playback (NULL, NULL); // if you do not do this, there is a timer moving the score on which will hang #ifdef USE_EVINCE if (Denemo.prefs.enable_thumbnails) create_thumbnail (TRUE, NULL); #endif if (Denemo.autosaveid) { if (g_list_length (Denemo.projects) > 1) g_debug ("Auto save being turned off"); g_source_remove (Denemo.autosaveid); Denemo.autosaveid = 0; } if (Denemo.project->autosavename) g_remove (Denemo.project->autosavename->str); if (Denemo.textwindow && gtk_widget_get_visible (Denemo.textwindow)) { set_toggle (ToggleLilyText_STRING, FALSE); } free_movements (Denemo.project); DenemoProject *oldproject = Denemo.project; /* * gtk_widget_destroy (Denemo.page); //note switch_page from g_signal_connect (G_OBJECT(Denemo.notebook), "switch_page", G_CALLBACK(switch_page), NULL); * this widget destroy causes critical errors - the sequence of New, New Tab, (return to first tab), Close, New shows the effect. */ gint index = g_list_index (Denemo.projects, oldproject); gtk_notebook_remove_page (GTK_NOTEBOOK (Denemo.notebook), index); g_message ("Closing project %d", index); Denemo.projects = g_list_remove (Denemo.projects, oldproject); //FIXME ?? or in the destroy callback?? g_free (oldproject); if (Denemo.projects) { if (index > g_list_length (Denemo.projects) - 1) index = g_list_length (Denemo.projects) - 1; if (index < 0) index = 0; Denemo.project = g_list_nth_data (Denemo.projects, index); g_message ("Selecting score (tab) %d\n", index); gtk_notebook_set_current_page (GTK_NOTEBOOK (Denemo.notebook), index); } else Denemo.project = NULL; g_signal_handlers_unblock_by_func (G_OBJECT (Denemo.scorearea), G_CALLBACK (scorearea_draw_event), NULL); return TRUE; } /* remove all the movements (ie the DenemoMovement) leaving it with project->movement NULL */ void free_movements (DenemoProject * project) { gint success; if (!is_playing ()) success = delete_imported_midi (); g_print ("Success %d\n", success); GList *g; free_scoreblocks (project); for (g = project->movements; g; g = g->next) { project->movement = g->data; project->movement->undo_guard = 1; //no undo as that is per movement //close_source_audio ();//??? // if(!delete_imported_midi ()) not if still playing!!! // delete_imported_midi(); free_movement (project); } project->movement = NULL; delete_directives (&project->lilycontrol.directives); delete_directives (&project->scoreheader.directives); delete_directives (&project->paper.directives); g_list_free (project->movements); project->movements = NULL; /* any other free/initializations */ project->lilycontrol.papersize = g_string_new ("a4"); //A4 default project->lilycontrol.staffsize = g_string_new ("18"); project->lilycontrol.lilyversion = g_string_new (""); project->lilycontrol.orientation = TRUE; //portrait } /** * Wrapper function to close application when the quit * menu item has been used * * */ void closewrapper (DenemoAction * action, DenemoScriptParam * param) { if (!Denemo.non_interactive) { GList *display; gint unsaved = 0; for (display = Denemo.projects; display != NULL; display = g_list_next (display)) { DenemoProject *project = (DenemoProject *) display->data; if (project->notsaved) unsaved++; } if (unsaved > 1) { GString *options = g_string_new (""); g_string_append_printf (options, "%s%c%s", _("Ask me about each"), '\0', _("Close all without saving")); gchar *title = g_strdup_printf (_("You have %d score(s) unsaved"), unsaved); gchar *response = get_option (title, options->str, options->len); if (response != options->str) { for (display = Denemo.projects; display != NULL; display = g_list_next (display)) { DenemoProject *project = (DenemoProject *) display->data; project->notsaved = FALSE; } } } for (display = Denemo.projects; display != NULL; display = Denemo.projects) { Denemo.project = (DenemoProject *) display->data; if (close_gui_with_check (NULL, NULL) == FALSE) break; } } } /** * callback from deleting window belonging to project: * close window if check for unsaved data succeeds. * */ static gboolean delete_callback (GtkWidget * widget, GdkEvent * event) { close_gui_with_check (NULL, NULL); return TRUE; } /** * callback to fetch up-to-date system commands from internet, denemo.org hardwired at present */ void fetchcommands (DenemoAction * action, DenemoScriptParam * param) { static gchar *location = NULL; location = g_build_filename (get_user_data_dir (TRUE), "download", COMMANDS_DIR, NULL); gboolean err = g_mkdir_with_parents (location, 0770); if (err) { gchar *message = g_strdup_printf (_("Could not make folder %s for the downloaded commands"), location); warningdialog (message); g_free (message); return; } g_debug ("location is %s\n", location); GError *error = NULL; gchar *arguments[] = { "wget", "-N", "-r", "-np", //only below the menus directory "-nH", //cut prefix "--cut-dirs=1", //cut download part of path DENEMO_DEFAULT_ANON_FTP, NULL }; g_spawn_async (location, /* dir */ arguments, NULL, /* env */ G_SPAWN_SEARCH_PATH, /* search in path for executable */ NULL, /* child setup func */ NULL, /* user data */ NULL, &error); //FIXME create a callback to tell the user the result... } /** * callback to load system extra commands * if user has a local (possibly updated) set in ~/.denemo/downloads then that directory is used. */ void morecommands (DenemoAction * action, DenemoScriptParam * param) { static gchar *location = NULL; location = g_build_filename (get_user_data_dir (TRUE), "download", COMMANDS_DIR, "menus", NULL); if (!g_file_test (location, G_FILE_TEST_EXISTS)) { g_free (location); location = NULL; } if (location == NULL) location = g_build_filename (get_system_data_dir (), COMMANDS_DIR, "menus", NULL); load_keymap_dialog_location (location); //#define WARNING_NEW_MENUS "Note: if you load a command that creates a new menu\nSome of the new commands may not work until you have exited\nand re-started denemo" //warningdialog(WARNING_NEW_MENUS); if (Denemo.last_merged_command && g_str_has_prefix (Denemo.last_merged_command, get_system_data_dir ())) { g_free (location); location = g_strdup (Denemo.last_merged_command); //FIXME } } /** * callback to load local extra commands * */ void mycommands (DenemoAction * action, DenemoScriptParam * param) { static gchar *location = NULL; if (location == NULL) location = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", NULL); if (Denemo.last_merged_command && g_str_has_prefix (Denemo.last_merged_command, get_user_data_dir (TRUE))) { g_free (location); location = g_path_get_dirname (Denemo.last_merged_command); } load_keymap_dialog_location (location); // warningdialog(WARNING_NEW_MENUS); //g_debug("The last was %s %s %s\n", Denemo.last_merged_command, location, get_user_data_dir(FALSE)); } /** * Open in New Window callback * Creates new view then opens file in the view */ void openinnew (DenemoAction * action, DenemoScriptParam * param) { newtab (); file_open_with_check (NULL, param); if (param && (param->status == FALSE)) close_project (); set_title_bar (Denemo.project); } /** * Close callback * if user confirms close the current project * if it is the last close the application. * return FALSE if project was not closed, else TRUE */ gboolean close_gui_with_check (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *project = Denemo.project; Denemo.prefs.mode = Denemo.project->mode; if (action_callbacks (Denemo.project)) return FALSE; //Denemo.project may have been closed, depends on script callbacks; if (Denemo.accelerator_status) { if (confirm (_("You have made changes to the commands you have"), _("Do you want to save the changes?"))) save_accels (); } //do not ask for confirm if scripted FIXME if ((!project->notsaved) || (project->notsaved && confirmbox (project))) close_project (); else return FALSE; if (action) //called as Close not Quit { if (Denemo.projects == NULL) newtab (); return TRUE; } if (Denemo.projects == NULL) { storeWindowState (); writeHistory (); writeXMLPrefs (&Denemo.prefs); writePalettes (); // Remove the temporary print directory removeprintdir (); #ifdef G_OS_WIN32 if (project) { CoUninitialize (); g_message ("Windows - Exiting without shutting down audio"); if (project->input_source == INPUTMIDI) { if (confirm (_("MIDI Controller Active?"), _("Please turn off your MIDI keyboard\nif you have not already done so"))) _exit (0); //audio shutdown can hang } else _exit (0); } #endif g_print ("Exiting directly - may leave notes sounding on audio!"); _exit (0); audio_shutdown (); exit (0); //do not use gtk_main_quit, as there may be inner loops active. } return TRUE; } static void pb_go_back (GtkWidget * button) { call_out_to_guile ("(DenemoGoBack)"); } static void pb_previous (GtkWidget * button) { call_out_to_guile ("(DenemoPrevious)"); } /*UNUSED static void pb_rewind (GtkWidget * button) { call_out_to_guile ("(DenemoRewind)"); } */ static void pb_stop (GtkWidget * button) { call_out_to_guile ("(DenemoStop)"); } static void pb_play (GtkWidget * button) { call_out_to_guile ("(DenemoPlay)"); } static void pb_next (GtkWidget * button) { generate_midi (); call_out_to_guile ("(DenemoNext)"); } static void pb_go_forward (GtkWidget * button) { generate_midi (); call_out_to_guile ("(DenemoGoForward)"); } static void pb_start_to_cursor (GtkWidget * button) { generate_midi (); call_out_to_guile ("(DenemoSetPlaybackStart)"); //gtk_widget_draw(Denemo.scorearea, NULL); draw_score_area (); draw_score (NULL); } static void pb_end_to_cursor (GtkWidget * button) { generate_midi (); call_out_to_guile ("(DenemoSetPlaybackEnd)"); //gtk_widget_draw(Denemo.scorearea, NULL); draw_score_area (); draw_score (NULL); } static void pb_loop (GtkWidget * button) { generate_midi (); call_out_to_guile ("(DenemoLoop)"); } static void pb_tempo (GtkAdjustment * adjustment) { gdouble tempo; gdouble bpm = gtk_adjustment_get_value (adjustment); tempo = (Denemo.project->movement->tempo > 0) ? bpm / Denemo.project->movement->tempo : 1.0; scm_c_define ("DenemoTempo::Value", scm_from_double (tempo)); call_out_to_guile ("(DenemoTempo)"); Denemo.project->movement->smfsync = G_MAXINT; } static void pb_mute_staffs () { call_out_to_guile ("(d-MuteStaffs)"); } void update_tempo_widget (gdouble value) { gdouble bpm = gtk_adjustment_get_value (master_tempo_adj); //g_debug("bpm %f and correction %f\n", bpm, value); bpm += value; gtk_adjustment_set_value (master_tempo_adj, bpm); //gtk_adjustment_changed (master_tempo_adj); Denemo.project->movement->smfsync = G_MAXINT; } #ifdef _HAVE_RUBBERBAND_ static void set_speed (GtkAdjustment * adjustment) { gdouble speed = gtk_adjustment_get_value (adjustment); set_playback_speed (speed); } #endif static void pb_volume (GtkAdjustment * adjustment) { gdouble volume = gtk_adjustment_get_value (adjustment); scm_c_define ("DenemoVolume::Value", scm_from_double (volume)); call_out_to_guile ("(DenemoVolume)"); } static void audio_volume_cut (GtkAdjustment * adjustment) { if (Denemo.project->movement->recording) { Denemo.project->movement->recording->volume = gtk_adjustment_get_value (adjustment); } } static void audio_volume_boost (GtkAdjustment * adjustment) { if (Denemo.project->movement->recording) { Denemo.project->movement->recording->volume = gtk_adjustment_get_value (adjustment); } } static void leadin_changed (GtkSpinButton * spin) { if (Denemo.project->movement->recording) { #ifdef USE_AUBIO set_lead_in (gtk_spin_button_get_value (spin)); //g_debug("%d for %f\n", Denemo.project->movement->recording->leadin, gtk_spin_button_get_value(spin)); #endif } } void update_leadin_widget (gdouble secs) { gtk_spin_button_set_value (leadin, secs); } static void pb_play_range (GtkWidget * button) { if (Denemo.project->movement->markstaffnum) call_out_to_guile ("(DenemoSetPlaybackIntervalToSelection)(d-Play)"); else call_out_to_guile ("(d-DenemoPlayCursorToEnd)"); } static void pb_range (GtkWidget * button) { PlaybackRangeDialog (); } static void pb_panic (GtkWidget * button) { playback_panic (); Denemo.project->movement->start_time = 0.0; Denemo.project->movement->end_time = -1.0; //ie unset set_start_and_end_objects_for_draw (); reset_temperament (); draw_score_area (); } static void track_delete (smf_track_t * track) { if (track == NULL || track->user_pointer) return; if (track->smf == NULL) { smf_t *smf = smf_new (); smf_add_track (smf, track); smf_delete (smf); } else smf_track_delete (track); } void set_midi_in_status (void) { if (midi_in_status) { gchar *text = NULL; if ((Denemo.project->midi_destination & MIDIRECORD) && (Denemo.project->midi_destination & MIDIPLAYALONG)) text = g_strconcat ("", _("Recording + Play Along"), "", NULL); else if (Denemo.project->midi_destination & MIDIRECORD) text = g_strconcat ("", _("Recording"), "", NULL); else if (Denemo.project->midi_destination & MIDIPLAYALONG) text = g_strconcat ("", _("Play Along"), "", NULL); else if ((Denemo.keyboard_state & ~GDK_LOCK_MASK) == (GDK_CONTROL_MASK)) text = g_strconcat ("", _("Checking Pitches"), "", NULL); else if ((Denemo.keyboard_state == (GDK_SHIFT_MASK)) || (Denemo.keyboard_state == (GDK_LOCK_MASK))) text = g_strconcat ("", _("Listening to Pitches"), "", NULL); else if ((Denemo.keyboard_state & CHORD_MASK)) text = g_strconcat ("", _("Editing a Chord"), "", NULL); else if ((Denemo.keyboard_state & ADDING_MASK)) text = g_strconcat ("", _("Starting a Chord"), "", NULL); else text = g_strconcat ("", _("Appending/Editing Pitches"), "", NULL); gtk_label_set_markup (GTK_LABEL (midi_in_status), text); g_free (text); } } void midi_in_adjust (gint value) { Denemo.keyboard_state = value; Denemo.keyboard_state_locked = value; //lock if set to listening or checking set_midi_in_status (); switch_back_to_main_window (); } static void midi_in_menu (void) { GtkWidget *menu = gtk_menu_new (); GtkWidget *item = gtk_menu_item_new_with_label (_("Checking Pitches")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (midi_in_adjust), GINT_TO_POINTER (GDK_CONTROL_MASK)); item = gtk_menu_item_new_with_label (_("Listening to Pitches")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (midi_in_adjust), GINT_TO_POINTER (GDK_SHIFT_MASK)); item = gtk_menu_item_new_with_label (_("Appending/Editing Pitches")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (midi_in_adjust), 0); gtk_widget_show_all (menu); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); } void pb_conduct (GtkWidget * button) { Denemo.project->midi_destination ^= MIDICONDUCT; if (Denemo.project->midi_destination & MIDICONDUCT) gtk_button_set_label (GTK_BUTTON (button), _("Mouse Conductor ON")); else gtk_button_set_label (GTK_BUTTON (button), _("Mouse Conductor OFF")); } void pb_playalong (GtkWidget * button) { Denemo.project->midi_destination ^= MIDIPLAYALONG; if (Denemo.project->midi_destination & MIDIPLAYALONG) gtk_button_set_label (GTK_BUTTON (button), _("Switch to Normal Playback")); else gtk_button_set_label (GTK_BUTTON (button), _("Switch to Play Along Playback")); set_midi_in_status (); } gboolean show_midi_record_control (void) { gtk_widget_show (deletebutton); gtk_widget_show (convertbutton); set_midi_in_status (); return FALSE; // stop timer callback } gboolean pb_record (gchar * callback) { if (is_playing ()) { warningdialog (_("Stop playing first")); return FALSE; } if (Denemo.project->movement->recording && (Denemo.project->movement->recording->type == DENEMO_RECORDING_AUDIO)) { warningdialog (_("Cannot mix audio and MIDI recordings")); return FALSE; } if (Denemo.project->movement->recorded_midi_track && midi_is_from_file ()) { warningdialog (_("Cannot mix MIDI recordings with imported MIDI - delete imported MIDI first")); return FALSE; } if (Denemo.project->movement->recorded_midi_track && !confirm (_("MIDI Recording"), _("Delete last recording?"))) { return FALSE; } delete_imported_midi (); call_out_to_guile ("(DenemoSetPlaybackStart)"); new_midi_recording (); Denemo.project->midi_destination |= MIDIRECORD; track_delete (Denemo.project->movement->recorded_midi_track); Denemo.project->movement->recorded_midi_track = smf_track_new (); gtk_widget_hide (deletebutton); gtk_widget_hide (convertbutton); set_midi_in_status (); gchar *script = callback ? g_strdup_printf ("(d-Play \"%s\")", callback) : g_strdup ("(d-Play)"); call_out_to_guile (script); g_free (script); { //this note off event prevents the first MIDI note from sounding a few seconds into the recording //why such a spurious note is heard is unknown, it does not get put into the event queues (immediate or standard) gchar buf[] = { 0x80, 0x0, 0x0 }; handle_midi_event (buf); } return TRUE; } static void pb_audiorecord (GtkWidget * button) { gtk_button_set_image (GTK_BUTTON (audiorecordbutton), gtk_image_new_from_icon_name ("media-record", GTK_ICON_SIZE_BUTTON)); //highlighting may have turned it off if (Denemo.prefs.maxrecordingtime) { Denemo.project->audio_recording = !Denemo.project->audio_recording; if (!Denemo.project->audio_recording) gtk_widget_show (exportbutton); } else { warningdialog (_("The preference set for recording time is 0 - nothing can be recorded.\nSee Edit → Change Preferences Audio/Midi Tab")); } } static void pb_exportaudio (GtkWidget * button) { if (!Denemo.project->audio_recording) Denemo.project->audio_recording = FALSE; export_recorded_audio (); } void highlight_audio_record (void) { static gboolean on; on = !on; gtk_button_set_image (GTK_BUTTON (audiorecordbutton), gtk_image_new_from_icon_name (on ? #if ((GTK_MAJOR_VERSION==3)&&(GTK_MINOR_VERSION<10)) GTK_STOCK_MEDIA_RECORD : GTK_STOCK_MEDIA_STOP #else "media-record" : "media-playback-stop" #endif , GTK_ICON_SIZE_BUTTON)); } void delete_recording (void) { //FIXME a better name for the mutex which originally was just for midi data, but will work for audio data too. if (Denemo.project->movement && Denemo.project->movement->recording) { DenemoRecording *temp = Denemo.project->movement->recording; g_mutex_lock (&smfmutex); Denemo.project->movement->recording = NULL; g_mutex_unlock (&smfmutex); if (temp->sndfile) sf_close (temp->sndfile); g_free (temp->filename); g_list_free_full (temp->notes, g_free); g_free (temp); Denemo.project->movement->recording = NULL; Denemo.project->movement->marked_onset = NULL; } } static void pb_midi_delete (GtkWidget * button) { DenemoRecording *recording = Denemo.project->movement->recording; if (recording) { if (recording->type != DENEMO_RECORDING_MIDI) { g_warning ("Cannot delete Audio yet"); return; //see sourceaudio.c:222 for deleting audio } track_delete (Denemo.project->movement->recorded_midi_track); Denemo.project->movement->recorded_midi_track = NULL; delete_recording (); } gtk_widget_hide (convertbutton); gtk_widget_hide (button); gtk_widget_queue_draw (Denemo.scorearea); } static void pb_midi_convert (GtkWidget * button) { call_out_to_guile ("(DenemoConvert)"); g_info ("Finished midi convert"); } #define CURRP ((RhythmPattern *)project->currhythm->data) #define LABEL_WIDGET_OF_TOOLBUTTON(a) (gtk_tool_button_get_label_widget((a))) void set_rhythm_label (RhythmPattern * r, gchar * text) { DenemoProject *project = Denemo.project; GtkWidget *label = LABEL_WIDGET_OF_TOOLBUTTON (CURRP->button); gchar *labelstr; if (r->nickname && r->nickname->len) labelstr = g_strconcat (text, "\n", r->nickname->str, NULL); else labelstr = g_strdup (text); //g_debug("markup is %s\n", ((RhythmElement*)g->data)->icon); gtk_label_set_markup (GTK_LABEL (label), labelstr); g_free (labelstr); } /** * Rhythm callback select rhythm * inserts the rhythm if pitchless */ void select_rhythm_pattern (RhythmPattern * r) { DenemoProject *project = Denemo.project; if (project->currhythm && (CURRP != r)) { //Change the highlighting if (CURRP) unhighlight_rhythm (CURRP); else if (project->rstep) unhighlight_rhythm (((RhythmElement *) project->rstep->data)->rhythm_pattern); } project->currhythm = g_list_find (project->rhythms, r); if (project->currhythm != NULL) { project->rstep = r->rsteps; project->cstep = r->clipboard->data; gchar *text = ((RhythmElement *) project->rstep->data)->highlightlabel; if (text) { set_rhythm_label (r, text); } highlight_rhythm (CURRP); } #undef CURRP } #undef LABEL_WIDGET_OF_TOOLBUTTON static void insert_and_select_snippet (RhythmPattern * r) { select_rhythm_pattern (r); if ((Denemo.project->mode & INPUTEDIT)) { insert_clipboard (r->clipboard); } } static void insert_snippet (RhythmPattern * r) { if ((Denemo.project->mode & INPUTEDIT)) { insert_clipboard (r->clipboard); } } static void rename_snippet (RhythmPattern * r); static void activate_rhythm_pattern (GtkToolButton * toolbutton, RhythmPattern * r) { GtkWidget *menu = gtk_menu_new (); GtkWidget *item = gtk_menu_item_new_with_label (_("Select and Reset Snippet")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (select_rhythm_pattern), r); item = gtk_menu_item_new_with_label (_("Insert Snippet at Cursor")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (insert_snippet), r); item = gtk_menu_item_new_with_label (_("Re-label Snippet")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (rename_snippet), r); item = gtk_menu_item_new_with_label (_("Insert and Select")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (insert_and_select_snippet), r); item = gtk_menu_item_new_with_label (_("Delete Snippet")); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (delete_rhythm_pattern), r); gtk_widget_show_all (menu); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); } gboolean insert_nth_rhythm (gint n) { gint nr = g_list_length (Denemo.project->rhythms); if (n >= 0 && n < nr) { insert_clipboard (((RhythmPattern *) (g_list_nth (Denemo.project->rhythms, n))->data)->clipboard); return TRUE; } return FALSE; } static void null_action () { } /* duration_code(gpointer function) * return an ascii code to indicate what duration (if any) function gives. * '0x0' means not a duration * chars 012345678 are the standard note durations * */ gchar duration_code (gpointer fn) { return fn == (gpointer) insert_chord_0key ? '0' : fn == (gpointer) insert_chord_1key ? '1' : fn == (gpointer) insert_chord_2key ? '2' : fn == (gpointer) insert_chord_3key ? '3' : fn == (gpointer) insert_chord_4key ? '4' : fn == (gpointer) insert_chord_5key ? '5' : fn == (gpointer) insert_chord_6key ? '6' : fn == (gpointer) insert_chord_7key ? '7' : fn == (gpointer) insert_chord_8key ? '8' : 0; } /* modifier_code(gpointer function) * return an ascii code to indicate what modifier (if any) function gives. * '0x0' means not a valid modifier for a rhythmic duration * char '.' means a dotted note, '(' and ')' mean start and end slur * r to z are rests * others to be defined * */ gchar modifier_code (gpointer fn) { return fn == (gpointer) triplet_start ? '~' : fn == (gpointer) tuplet_end ? '|' : fn == (gpointer) add_dot_key ? '.' : fn == (gpointer) toggle_begin_slur ? '(' : fn == (gpointer) toggle_end_slur ? ')' : fn == (gpointer) insert_rest_0key ? 'r' : fn == (gpointer) insert_rest_1key ? 's' : fn == (gpointer) insert_rest_2key ? 't' : fn == (gpointer) insert_rest_3key ? 'u' : fn == (gpointer) insert_rest_4key ? 'v' : fn == (gpointer) insert_rest_5key ? 'w' : fn == (gpointer) insert_rest_6key ? 'x' : fn == (gpointer) insert_rest_7key ? 'y' : fn == (gpointer) insert_rest_8key ? 'z' : fn == (gpointer) null_action ? 'S' : 0; } gboolean code_is_a_duration (gchar code) { return code == 0 || (code >= 'r' && code <= 'z'); } /* add_to_rhythm appends to a rhythm pattern the callback function fn fn is a callback function returns TRUE if something was added */ gboolean append_rhythm (RhythmPattern * r, gpointer fn) { RhythmElement *relement; int keyval = duration_code (fn); if (keyval) { relement = (RhythmElement *) g_malloc0 (sizeof (RhythmElement)); relement->functions = g_list_append (NULL, fn); r->rsteps = g_list_append (r->rsteps, relement); relement->rhythm_pattern = r; return TRUE; } keyval = modifier_code (fn); if (keyval) { if (r->rsteps) { relement = (RhythmElement *) (g_list_last (r->rsteps)->data); } else { relement = (RhythmElement *) g_malloc0 (sizeof (RhythmElement)); } relement->functions = g_list_append (relement->functions, (gpointer) fn); if (r->rsteps == NULL) { r->rsteps = g_list_append (r->rsteps, relement); } relement->rhythm_pattern = r; return TRUE; } return FALSE; } static void remove_breaks (GList * clip) { for (; clip; clip = clip->next) { GList *g = clip->data; for (; g; g = g->next) { //g_debug("have %x type %d\n", g->data, ((DenemoObject*)g->data)->type); if ((((DenemoObject *) g->data)->type == MEASUREBREAK) || (((DenemoObject *) g->data)->type == STAFFBREAK)) g = clip->data = g_list_delete_link (clip->data, g); //we search from the start again, as g has been freed } } } static void attach_clipboard (RhythmPattern * r) { DenemoProject *project = Denemo.project; DenemoMovement *si; if (project->movement) si = project->movement; if (si->markstaffnum) { push_clipboard (); copytobuffer (si); push_clipboard (); r->clipboard = pop_off_clipboard (); remove_breaks (r->clipboard); pop_clipboard (); } } gint insert_pattern_in_toolbar (RhythmPattern * r, gboolean highlight) { if (Denemo.non_interactive) return -1; DenemoProject *project = Denemo.project; if (r->clipboard == NULL) { g_warning ("No clipboard for this pattern, cannot add"); return -1; } GtkWidget *toolbar = denemo_menusystem_get_widget ("/RhythmToolBar"); gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (r->button), -1); gtk_widget_show_all (GTK_WIDGET (r->button)); project->rhythms = g_list_append (project->rhythms, r); if (highlight) { project->rstep = r->rsteps; project->cstep = r->clipboard->data; if (project->currhythm) unhighlight_rhythm ((RhythmPattern *) project->currhythm->data); project->currhythm = g_list_last (project->rhythms); highlight_rhythm ((RhythmPattern *) project->currhythm->data); } g_signal_connect (G_OBJECT (r->button), "clicked", G_CALLBACK (activate_rhythm_pattern), (gpointer) r); return g_list_length (project->rhythms); //the index of the newly added snippet } void install_button_for_pattern (RhythmPattern * r, gchar * thelabel) { GtkToolButton *button; GtkWidget *label; button = (GtkToolButton *) gtk_tool_button_new (NULL, NULL); label = gtk_label_new (thelabel); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_tool_button_set_label_widget (button, label); r->button = button; } static GString * shorten_string (gchar * str) { GString *ret = g_string_new (""); for (; *str; str++) { switch (*str) { case '\n': case '\t': case ' ': continue; default: g_string_append_c (ret, *str); } if (ret->len > 8) break; } return ret; } /* * curobj is a list of DenemoObject, * creates a RhythmPattern * and the ASCII pattern that is used by the caller to generate a label on the snippet button and a set of highlighted labels for each step of the rhythm pattern. * accumulates the lilypond field of the rhythm pattern from the lilypond fields of the objects */ static void create_rhythm_and_pattern (GList * curobj, RhythmPattern * r, GString * pattern) { if (r->lilypond == NULL) r->lilypond = g_string_new (""); for (; curobj; curobj = curobj->next) { gpointer fn; DenemoObject *obj = (DenemoObject *) curobj->data; switch (obj->type) { case TUPCLOSE: fn = (gpointer) tuplet_end; g_string_append_c (pattern, '|'); append_rhythm (r, fn); break; case TUPOPEN: switch (((tupopen *) obj->object)->denominator) { case 3: fn = (gpointer) triplet_start; g_string_append_c (pattern, '~'); break; default: // need to create start_xxxtuplet() functions to go with triplet_start(), then they can go here. fn = NULL; } append_rhythm (r, fn); break; case CHORD: { chord *ch = (chord *) obj->object; if (ch->notes) { switch (ch->baseduration) { case 0: fn = insert_chord_0key; break; case 1: fn = insert_chord_1key; break; case 2: fn = insert_chord_2key; break; case 3: fn = insert_chord_3key; break; case 4: fn = insert_chord_4key; break; case 5: fn = insert_chord_5key; break; case 6: fn = insert_chord_6key; break; case 7: fn = insert_chord_7key; break; case 8: fn = insert_chord_8key; break; default: g_warning ("Handling unknown type of chord as whole note"); fn = insert_chord_0key; break; } g_string_append_c (pattern, duration_code (fn)); append_rhythm (r, fn); } else { /* a rest */ switch (ch->baseduration) { case 0: fn = insert_rest_0key; break; case 1: fn = insert_rest_1key; break; case 2: fn = insert_rest_2key; break; case 3: fn = insert_rest_3key; break; case 4: fn = insert_rest_4key; break; case 5: fn = insert_rest_5key; break; case 6: fn = insert_rest_6key; break; case 7: fn = insert_rest_7key; break; case 8: fn = insert_rest_8key; break; default: g_warning ("Handling unknown type of rest as whole note rest"); fn = insert_rest_0key; break; } g_string_append_c (pattern, modifier_code (fn)); append_rhythm (r, fn); } /* end of rests */ gint i; for (i = ch->numdots; i; i--) { fn = add_dot_key; g_string_append_c (pattern, modifier_code (fn)); append_rhythm (r, fn); } if (ch->slur_begin_p) { fn = (gpointer) toggle_begin_slur; g_string_append_c (pattern, '('); append_rhythm (r, fn); } if (ch->slur_end_p) { fn = (gpointer) toggle_end_slur; g_string_append_c (pattern, ')'); append_rhythm (r, fn); } //FIXME other built-ins here - cresc endcresc ... } break; case LILYDIRECTIVE: { DenemoDirective *direc = (DenemoDirective *) obj->object; fn = (gpointer) null_action; if ((curobj->prev == NULL) && (curobj->next == NULL) && (r->nickname == NULL)) { if (direc->display) r->nickname = shorten_string (direc->display->str); else if (direc->graphic_name) r->nickname = shorten_string (direc->graphic_name->str); else if (direc->postfix) r->nickname = shorten_string (direc->prefix->str); else r->nickname = g_string_new ("S"); } g_string_append_c (pattern, 'S'); append_rhythm (r, fn); } break; default: { fn = null_action; g_string_append_c (pattern, 'S'); append_rhythm (r, fn); } //g_warning("ignoring %d", obj->type); break; } /* end of switch obj type */ //g_debug("Number of rhythms %d\n", g_list_length(r->rsteps)); if (obj->lilypond) g_string_append (r->lilypond, obj->lilypond); } /* End object loop */ } //create values for highlightlabel field of the r->steps from the pattern void fill_in_steps (RhythmPattern * r, GString * pattern) { /* fill the r->rsteps with highlightlabels for each step */ GList *g; RhythmElement *el; gint i; for (g = r->rsteps, i = 0; g; g = g->next, i++) { el = (RhythmElement *) g->data; if (i == 0 && (*(pattern->str) < '0' || *(pattern->str) > '8') && g->next) g = g->next; // pattern does not start with a note (0 to 8), so we skip to the second element, unless there are no notes while (*(pattern->str + i) && (*(pattern->str + i) < '0' || *(pattern->str + i) > '8')) i++; if (*(pattern->str + i)) { *(pattern->str + i) += HIGHLIGHT_OFFSET; el->highlightlabel = music_font (pattern->str); *(pattern->str + i) -= HIGHLIGHT_OFFSET; } //g_debug("el->highlightlabel = %s step %d pattern->str %s\n", el->highlightlabel, i, pattern->str); } } static void rename_rhythm (RhythmPattern * r, gchar * name) { GtkWidget *label = gtk_tool_button_get_label_widget (r->button); if (r->nickname == NULL) r->nickname = g_string_new (r->name); if (name == NULL) name = string_dialog_entry (Denemo.project, _("Rename Music Snippet"), _("Give new label for snippet"), r->nickname->str); if (name && *name) { g_string_assign (r->nickname, name); gtk_label_set_markup (GTK_LABEL (label), r->nickname->str); } } static void rename_snippet (RhythmPattern * r) { rename_rhythm (r, NULL); } //create a rhythm pattern (aka snippet) from r->clipboard or the selection //put the rhythm pattern in the Denemo.project and on the snippets toolbar //highlight the created rhythm if from the selection void create_rhythm (RhythmPattern * r, gboolean from_selection) { GString *pattern = g_string_new (""); install_button_for_pattern (r, NULL); if (from_selection) attach_clipboard (r); if (r->clipboard) create_rhythm_and_pattern ((GList *) ((GList *) r->clipboard)->data, r, pattern); gchar *labelstr; labelstr = music_font (pattern->str); GtkWidget *label = gtk_tool_button_get_label_widget (r->button); gtk_label_set_markup (GTK_LABEL (label), labelstr); g_free (labelstr); fill_in_steps (r, pattern); if (r->rsteps) { /* make the list circular */ r->rsteps->prev = g_list_last (r->rsteps); g_list_last (r->rsteps)->next = r->rsteps; } insert_pattern_in_toolbar (r, from_selection); if (r->nickname) rename_rhythm (r, r->nickname->str); if (!from_selection) unhighlight_rhythm (r); g_string_free (pattern, TRUE); } /* create_rhythm_cb - create a rhythm pattern from the current selection - clipboard field is pointed to the selected objects - a button is created in "/RhythmToolbar" - and the pattern is added to project->rhythms - with the first step of it put in project->rstep - the rhythm becomes the prevailing_rhythm, setting cstep */ void create_rhythm_cb (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *project = Denemo.project; DenemoMovement *si = project->movement; RhythmPattern *r; if (!si->markstaffnum) /* Indicator that there's a selection. */ { warningdialog (_("No selection to create a music snippet from\nSee Edit → Select menu for selecting music to snip")); return; } r = (RhythmPattern *) g_malloc0 (sizeof (RhythmPattern)); if (project->lilysync != project->changecount) refresh_lily_cb (NULL, Denemo.project); /* ensure lilypond syntax attached to objects in selection */ create_rhythm (r, TRUE); } // create a rhythm pattern for a standard duration note or rest action is the insert_chord or rest for the appropriate duration. static void create_singleton_rhythm (gpointer insert_fn) { DenemoProject *project = Denemo.project; gboolean already_done = FALSE; // a singleton which has already been installed globally, that is a new tab is being opened. gboolean default_rhythm = FALSE; DenemoMovement *si = project->movement; RhythmPattern *r = (RhythmPattern *) g_malloc0 (sizeof (RhythmPattern)); GString *pattern = g_string_new (""); if (insert_fn == (gpointer) insert_chord_0key) pattern = g_string_assign (pattern, "0"); if (insert_fn == (gpointer) insert_chord_1key) pattern = g_string_assign (pattern, "1"); if (insert_fn == (gpointer) insert_chord_2key) pattern = g_string_assign (pattern, "2"), default_rhythm = TRUE; if (insert_fn == (gpointer) insert_chord_3key) pattern = g_string_assign (pattern, "3"); if (insert_fn == (gpointer) insert_chord_4key) pattern = g_string_assign (pattern, "4"); if (insert_fn == (gpointer) insert_chord_5key) pattern = g_string_assign (pattern, "5"); if (insert_fn == (gpointer) insert_chord_6key) pattern = g_string_assign (pattern, "6"); if (insert_fn == (gpointer) insert_chord_7key) pattern = g_string_assign (pattern, "7"); if (insert_fn == (gpointer) insert_chord_8key) pattern = g_string_assign (pattern, "8"); if (insert_fn == (gpointer) insert_rest_0key) pattern = g_string_assign (pattern, "r"); if (insert_fn == (gpointer) insert_rest_1key) pattern = g_string_assign (pattern, "s"); if (insert_fn == (gpointer) insert_rest_2key) pattern = g_string_assign (pattern, "t"); if (insert_fn == (gpointer) insert_rest_3key) pattern = g_string_assign (pattern, "u"); if (insert_fn == (gpointer) insert_rest_4key) pattern = g_string_assign (pattern, "v"); if (insert_fn == (gpointer) insert_rest_5key) pattern = g_string_assign (pattern, "w"); if (insert_fn == (gpointer) insert_rest_6key) pattern = g_string_assign (pattern, "x"); if (insert_fn == (gpointer) insert_rest_7key) pattern = g_string_assign (pattern, "y"); if (insert_fn == (gpointer) insert_rest_8key) pattern = g_string_assign (pattern, "z"); if (pattern->len <= 0) { g_critical ("Bad call to create_singleton_rhythm"); g_string_free (pattern, TRUE); return; } /* if we already have it globally we don't need it again note we never delete the singleton rhythms */ if (Denemo.singleton_rhythms[(unsigned int) *pattern->str]) { g_free (r); r = Denemo.singleton_rhythms[(unsigned int) *pattern->str]; already_done = TRUE; } else { Denemo.singleton_rhythms[(unsigned int) *pattern->str] = r; already_done = FALSE; } if (!already_done) { gchar *labelstr; append_rhythm (r, insert_fn); labelstr = music_font (pattern->str); g_free (labelstr); /* make the list circular */ r->rsteps->prev = g_list_last (r->rsteps); g_list_last (r->rsteps)->next = r->rsteps; } if (default_rhythm) { project->prevailing_rhythm = r; project->rstep = r->rsteps; project->cstep = NULL; highlight_rhythm (r); } g_string_free (pattern, TRUE); } void save_accels (void) { save_default_keymap_file (); Denemo.accelerator_status = FALSE; } static void show_type (GtkWidget * widget, gchar * message); //static void toggleRecording (GtkWidget*w, gboolean *record) { //g_debug("Recording was %d\n", *record); // *record = !*record; //} static void attach_right_click_callback (GtkWidget * widget, DenemoAction * action); /* the callback for menu items that are scripts. The script is attached to the action, tagged as "scheme". The script may be empty, in which case it is fetched from actions/menus... This call also ensures that the right-click callback is attached to all the proxies of the action, as there are problems trying to do this earlier, and it defines a scheme variable to give the name of the script being executed. */ gboolean activate_script (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *project = Denemo.project; gchar *name = (gchar *) denemo_action_get_name (action); gint idx = lookup_command_from_name (Denemo.map, name); gboolean ret = FALSE; { //FIXME use define_scheme_variable for this //define a global variable in Scheme (CurrentScript) to give the name of the currently executing script const gchar *name = denemo_action_get_name (action); gchar *current_script = g_strdup_printf ("(define CurrentScript \"%s\")\n", name); /*note that scripts must copy their name from CurrentScript into local storage before calling other scripts if they need it */ gchar *paramvar = NULL; if (param && param->string) { paramvar = g_strdup_printf ("%s::params", name); scm_c_define (paramvar, scm_from_locale_string (param->string->str)); } scm_c_eval_string (current_script); g_free (current_script); gchar *text = get_scheme_from_idx (idx); if (!is_action_name_builtin ((gchar *) denemo_action_get_name (action))) { if (text) { stage_undo (project->movement, ACTION_STAGE_END); //undo is a queue so this is the end :) ret = (gboolean) ! call_out_to_guile (text); stage_undo (project->movement, ACTION_STAGE_START); } else { g_warning ("Could not get script for %s", denemo_action_get_name (action)); ret = FALSE; } } if (paramvar) scm_c_define (paramvar, SCM_BOOL_F); g_free (paramvar); } return ret; } /*pop up the help for passed command as info dialog */ void popup_help_for_action (DenemoAction * action) { const gchar *name = denemo_action_get_name (action); gint idx = lookup_command_from_name (Denemo.map, name); gchar *tooltip = idx >= 0 ? (gchar *) lookup_tooltip_from_idx (Denemo.map, idx) : "A menu for ..."; tooltip = g_strdup_printf (_("Command: %s\n\nInformation:\n%s"), name, tooltip); infodialog (tooltip); g_free (tooltip); } static void placeOnButtonBar (GtkWidget * widget, DenemoAction * action) { gchar *name = (gchar *) denemo_action_get_name (action); gint idx = lookup_command_from_name (Denemo.map, name); if (idx > 0) { gchar *label = (gchar *) lookup_label_from_idx (Denemo.map, idx); gchar *scheme = g_strdup_printf ("\n;To remove the %s button delete from here\n(CreateButton \"Button%s\" \"%s\")\n(d-SetDirectiveTagActionScript \"Button%s\" \"(" DENEMO_SCHEME_PREFIX "%s)\")\n;;End of delete %s button", name, name, g_strescape (label, NULL), name, name, name); //g_debug("the scheme is \n%s\n", scheme); if (!call_out_to_guile (scheme)) append_to_local_scheme_init (scheme); else warningdialog (_("Could not create button")); g_free (scheme); } } void append_scheme_call (gchar * func) { if (strcmp (func, "ExecuteScheme")) { GtkTextIter enditer; GtkTextBuffer *buffer = gtk_text_view_get_buffer ((GtkTextView *) (Denemo.script_view)); //gtk_text_buffer_set_text(buffer,"",-1); gtk_text_buffer_get_end_iter (buffer, &enditer); gchar *text = g_strdup_printf ("(d-%s)\n", func); //prefix dnm_!!!!!!! gtk_text_buffer_insert (buffer, &enditer, text, -1); //g_debug("Added %s\n", text); g_free (text); if (Denemo.prefs.immediateplayback) play_note (DEFAULT_BACKEND, 0, 9, 58, 300, 127 * Denemo.project->movement->master_volume); } } /* upload scripts for command/tag name. Parameters: name the name of a command or a tag script the scheme script that the command runs, or an editscript for directives with tag name init_script the scheme script that is run before the command runs, not used for tags command the xml description of that command, or "" for tags for tags: command is "" for an editscript and name is the tag for directives that the script edits for commands: command is the command set file for merging the command as a new menu item the script is given in scheme and any initialization script for the menu is given in init_script */ static void upload_scripts (gchar * name, gchar * script, gchar * init_script, gchar * command, gchar * menupath, gchar * label, gchar * tooltip, gchar * after) { SCM func_symbol; SCM func; func_symbol = scm_c_lookup ("d-UploadRoutine"); func = scm_variable_ref (func_symbol); #define ARG(s) s?scm_from_locale_string(s):scm_from_locale_string("") SCM list = scm_list_n (ARG (command), ARG (name), ARG (script), ARG (init_script), ARG (menupath), ARG (label), ARG (tooltip), ARG (after), SCM_UNDEFINED); scm_call_1 (func, list); #undef ARG } /* upload the action, from the user's menu hierarchy on disk, along with initialization script and menu item xml etc */ #ifdef UPLOAD_TO_DENEMO_DOT_ORG static void uploadMenuItem (GtkWidget * widget, DenemoAction * action) { gchar *name = (gchar *) denemo_action_get_name (action); gint idx = lookup_command_from_name (Denemo.map, name); command_row *row = NULL; keymap_get_command_row (the_keymap, &row, idx); gchar *tooltip = (gchar *) lookup_tooltip_from_idx (Denemo.map, idx); gchar *label = (gchar *) lookup_label_from_idx (Denemo.map, idx); gchar *filename = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", row->menupath, name, NULL); gchar *script = get_scheme_from_idx (idx); gchar *xml; GError *error = NULL; g_file_get_contents (filename, &xml, NULL, &error); filename = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "menus", row->menupath, INIT_SCM, NULL); gchar *init_script; g_file_get_contents (filename, &init_script, NULL, &error); if (xml == NULL) xml = ""; if (init_script == NULL) init_script = ""; if (script == NULL) script = ""; upload_scripts (name, script, init_script, xml, row->menupath, label, tooltip, row->after); } #endif /* upload editscript for tag */ void upload_edit_script (gchar * tag, gchar * script) { upload_scripts (tag, script, "", "", "", "", "", ""); } static const gchar * locatebitmapsdir (void) { static gchar *bitmapsdir = NULL; gboolean err; if (!bitmapsdir) { bitmapsdir = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "bitmaps", NULL); } err = g_mkdir_with_parents (bitmapsdir, 0770); if (err) { warningdialog (_("Could not create .denemo/actions/bitmaps for your graphics for customized commands")); g_free (bitmapsdir); bitmapsdir = g_strdup (""); //FIXME } return bitmapsdir; } static const gchar * locategraphicsdir (void) { static gchar *bitmapsdir = NULL; gboolean err; if (!bitmapsdir) { bitmapsdir = g_build_filename (get_user_data_dir (TRUE), COMMANDS_DIR, "graphics", NULL); } err = g_mkdir_with_parents (bitmapsdir, 0770); if (err) { warningdialog (_("Could not create .denemo-xxx/actions/graphics for your graphics for customized commands")); g_free (bitmapsdir); bitmapsdir = g_strdup (""); //FIXME } return bitmapsdir; } static const gchar * locatedownloadbitmapsdir (void) { static gchar *bitmapsdir = NULL; if (!bitmapsdir) { bitmapsdir = g_build_filename (get_user_data_dir (TRUE), "download", COMMANDS_DIR, "bitmaps", NULL); } return bitmapsdir; } /* if a graphic file for name exists (local or downloaded or systemwide) create an icon for it called label and return label, else return NULL */ gchar * get_icon_for_name (gchar * name, gchar * label) { return NULL; //this function is disabled until we figure out why the icons are no longer being shown. #ifdef PROBLEM_SHOWING_ICONS_FIXED gchar *pngname = g_strconcat (name, ".png", NULL); gchar *filename = g_build_filename (locatebitmapsdir (), pngname, NULL); if (!g_file_test (filename, G_FILE_TEST_EXISTS)) { g_free (filename); filename = g_build_filename (locatedownloadbitmapsdir (), pngname, NULL); if (!g_file_test (filename, G_FILE_TEST_EXISTS)) { g_free (filename); filename = g_build_filename (get_system_data_dir (), COMMANDS_DIR, "bitmaps", pngname, NULL); if (!g_file_test (filename, G_FILE_TEST_EXISTS)) { g_free (filename); filename = g_build_filename (get_system_data_dir (), COMMANDS_DIR, "graphics", pngname, NULL); if (!g_file_test (filename, G_FILE_TEST_EXISTS)) { g_free (filename); g_free (pngname); return NULL; } } } } GError *error = NULL; GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file (filename, &error); g_free (filename); g_free (pngname); if (error) { warningdialog (error->message); return NULL; } static GtkIconFactory *icon_factory; if (!icon_factory) { icon_factory = gtk_icon_factory_new (); gtk_icon_factory_add_default (icon_factory); } GtkIconSet *icon_set = gtk_icon_set_new_from_pixbuf (pixbuf); g_object_unref (pixbuf); gtk_icon_factory_add (icon_factory, label, icon_set); return label; #endif } gchar * create_xbm_data_from_pixbuf (GdkPixbuf * pixbuf, int lox, int loy, int hix, int hiy) { int width, height, rowstride, n_channels; guchar *pixels; n_channels = gdk_pixbuf_get_n_channels (pixbuf); #ifdef DEBUG //g_assert (gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB); //g_assert (gdk_pixbuf_get_bits_per_sample (pixbuf) == 8); //g_assert (gdk_pixbuf_get_has_alpha (pixbuf)); //g_assert (n_channels == 4); #endif width = hix - lox; height = hiy - loy; rowstride = gdk_pixbuf_get_rowstride (pixbuf); pixels = gdk_pixbuf_get_pixels (pixbuf); int x, y, i; char *chars = g_malloc0 (sizeof (char) * width * height); //about 8 times too big! char *this = chars; for (i = 0, y = loy; y < hiy; y++) { for (x = lox; x < hix; x++, i++) { this = chars + (i / 8); gint set = ((pixels + y * rowstride + x * n_channels)[3] > 0); #ifdef G_OS_WIN32 set = (set ? 0 : 1); //bizarrely the bitmaps come out inverted on windows #endif *this += set << i % 8; } i = ((i + 7) / 8) * 8; } return chars; } static GHashTable *bitmaps; static void bitmap_table_insert (gchar * name, DenemoGraphic * xbm) { if (!bitmaps) bitmaps = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); //FIXME is this right for GdkBitmap data? g_hash_table_insert (bitmaps, g_strdup (name), xbm); //FIXME } static DenemoGraphic * create_bitmap_from_data (gchar * data, gint width, gint height) { #if 0 /* static GdkColor white, black;gboolean init = FALSE; */ /* if(!init) { */ /* gdk_color_parse ("white", &white); */ /* gdk_colormap_alloc_color (gdk_colormap_get_system (), &white, TRUE, TRUE); */ /* gdk_color_parse ("black", &black); */ /* gdk_colormap_alloc_color (gdk_colormap_get_system (), &black, TRUE, TRUE); */ /* } */ // return gdk_pixmap_create_from_data(NULL,data, width, height, 1, &white, &black); //return gdk_bitmap_create_from_data(NULL,data, width, height); cairo_surface_t *surface = cairo_image_surface_create_for_data (data, CAIRO_FORMAT_A1, width, height, cairo_format_stride_for_width (CAIRO_FORMAT_A1, width)); cairo_pattern_t *pattern = cairo_pattern_create_for_surface (surface); cairo_pattern_reference (pattern); return pattern; #else return NULL; #endif } static gboolean loadGraphicFromFormat (gchar * basename, gchar * name, DenemoGraphic ** xbm) { RsvgDimensionData thesize; gchar *filename = g_strconcat (name, ".png", NULL); thesize.width = 40; thesize.height = 40; cairo_surface_t *surface = cairo_image_surface_create_from_png (filename); if (cairo_surface_status (surface) != CAIRO_STATUS_SUCCESS) { g_free (filename); filename = g_strconcat (name, ".svg", NULL); if (g_file_test (filename, G_FILE_TEST_EXISTS)) { #ifdef CAIRO_HAS_SVG_SURFACE GError *error = NULL; RsvgHandle *handle = rsvg_handle_new_from_file (filename, &error); if (handle == NULL) { if (error) g_warning ("Could not open %s error %s", basename, error->message); else g_warning ("Opening %s, Bug in librsvg:rsvg handle null but no error message", basename); return FALSE; } rsvg_handle_get_dimensions (handle, &thesize); surface = cairo_svg_surface_create_for_stream (NULL, NULL, (double) (thesize.width), (double) (thesize.height)); cairo_t *cr = cairo_create (surface); rsvg_handle_render_cairo (handle, cr); rsvg_handle_close (handle, NULL); g_object_unref (handle); cairo_destroy (cr); #else g_warning ("Cairo svg backend not available"); return FALSE; #endif } } else { FILE *fp = fopen (filename, "rb"); if (fp) { size_t n; fseek (fp, 16, SEEK_SET); n = fread (&thesize.width, 4, 1, fp); if (n != 1) { thesize.width = 40; } else { thesize.width = GINT_FROM_BE (thesize.width); } n = fread (&thesize.height, 4, 1, fp); if (n != 1) { thesize.height = 40; } else { thesize.height = GINT_FROM_BE (thesize.height); } fclose (fp); } } g_free (filename); if (cairo_surface_status (surface) == CAIRO_STATUS_SUCCESS) { cairo_pattern_t *pattern = cairo_pattern_create_for_surface (surface); cairo_pattern_reference (pattern); DenemoGraphic *graphic = g_malloc (sizeof (DenemoGraphic)); graphic->type = DENEMO_PATTERN; graphic->width = thesize.width; graphic->height = thesize.height; //g_debug("size %d x %d", thesize.width, thesize.height); graphic->graphic = pattern; bitmap_table_insert (basename, graphic); *xbm = graphic; return TRUE; } else return FALSE; } gboolean loadGraphicItem (gchar * name, DenemoGraphic ** xbm) { if (!name || !*name) return FALSE; #define NEWLINE "\n" if (*name == *NEWLINE) { //if name starts '\n' treat it as lines holding char font size weight (e.g. bold) slant (e.g. italic) //so let user specify a hex value and convert to utf8 here len = g_unichar_to_utf8( uc, utf_string ); //e.g "\n0x20" would be glyph 0x20 from the feta26 font, size 35 not bold or italic (as in drawfetachar_cr()) //while "\n0x40 0x40\nSans\n16\n1\n1" would be a "AA" string in sans font at 16pt bold and italic gchar **spec = g_strsplit (name + 1, NEWLINE, 5); gint i; DenemoGraphic *graphic = g_malloc (sizeof (DenemoGraphic)); DenemoGlyph *glyph = (DenemoGlyph *) g_malloc (sizeof (DenemoGlyph)); graphic->type = DENEMO_FONT; graphic->graphic = glyph; glyph->fontname = "feta26"; glyph->size = 35.0; for (i = 0; i < 5 && spec[i]; i++) { switch (i) { case 0: { // get a set of hex values (unicodes?) and create a utf8 string //should involve strtol(spec[0], &next, 0); //and perhaps g_unichar_to_utf8(*spec[0], NULL); // and glyph->utf = g_malloc(len); //if not hex digits, then treat as utf8 string glyph->utf = g_strdup (spec[0]); break; } case 1: glyph->fontname = g_strdup (spec[1]); break; case 2: glyph->size = g_ascii_strtod (spec[2], NULL); break; case 3: glyph->weight = atoi (spec[3]); break; case 4: glyph->slant = atoi (spec[4]); break; } } g_strfreev (spec); *xbm = graphic; return TRUE; } if (bitmaps && (*xbm = (DenemoGraphic *) g_hash_table_lookup (bitmaps, name))) { return TRUE; } GList *files = NULL; files = g_list_append (files, g_strconcat (name, ".png", NULL)); files = g_list_append (files, g_strconcat (name, ".svg", NULL)); GList *dirs = NULL; dirs = g_list_append (dirs, g_build_filename (locategraphicsdir (), NULL)); dirs = g_list_append (dirs, g_build_filename (locatebitmapsdir (), NULL)); dirs = g_list_append (dirs, g_build_filename (locatedownloadbitmapsdir (), NULL)); dirs = g_list_append (dirs, g_build_filename (PACKAGE_SOURCE_DIR, COMMANDS_DIR, "bitmaps", NULL)); dirs = g_list_append (dirs, g_build_filename (get_system_data_dir (), COMMANDS_DIR, "bitmaps", NULL)); dirs = g_list_append (dirs, g_build_filename (get_system_data_dir (), COMMANDS_DIR, "graphics", NULL)); gboolean success = TRUE; gchar *dir = find_dir_for_files (files, dirs); if (!dir) { g_warning ("Could not find graphic item %s", name); success = FALSE; } else { gchar *basename = g_build_filename (dir, name, NULL); success = loadGraphicFromFormat (name, basename, xbm); g_free (basename); if (!success) g_warning ("Could not load graphic item %s from %s", name, dir); } g_free (dir); return success; } /* save the current graphic */ static void saveGraphicItem (GtkWidget * widget, DenemoAction * action) { gchar *name = (gchar *) denemo_action_get_name (action); gchar *pngname = g_strconcat (name, ".png", NULL); gchar *filename = g_build_filename (locatebitmapsdir (), pngname, NULL); //FIXME allow fileselector here to change the name gchar *msg = g_strdup_printf (_("Saving a graphic for use in the %s script"), name); if (!g_file_test (filename, G_FILE_TEST_EXISTS) || confirm (msg, _("Replace current graphic?"))) { guint width = Denemo.project->xbm_width; guint height = Denemo.project->xbm_height; create_bitmap_from_data (Denemo.project->xbm, width, height); } g_free (pngname); g_free (msg); g_free (filename); } static void color_rhythm_button (RhythmPattern * r, const gchar * color) // only black and gray { if ((r == NULL) || (r->button == NULL)) return; #if GTK_MAJOR_VERSION==2 GdkColor thecolor; gdk_color_parse (color, &thecolor); gtk_widget_modify_fg (gtk_tool_button_get_label_widget (GTK_TOOL_BUTTON (r->button)), GTK_STATE_NORMAL, &thecolor); //bg does not work, and setting the label in a GtkEvent box gave a problem on some build - R.Rankin patched for this and so we have to use fg #else set_foreground_color(gtk_tool_button_get_label_widget (GTK_TOOL_BUTTON (r->button)), strcmp (color, "gray")?"#000000":"#cc6666"); #endif } void highlight_rhythm (RhythmPattern * r) { //g_debug("highlight\n"); color_rhythm_button (r, "black"); } void unhighlight_rhythm (RhythmPattern * r) { //g_debug("Unhighlight\n"); color_rhythm_button (r, "gray"); } /* */ void highlight_rest (DenemoProject * project, gint dur) { if (project->currhythm) { unhighlight_rhythm ((RhythmPattern *) project->currhythm->data); } gint nb_sr = 'r' + dur; if (nb_sr < 0 || nb_sr > NB_SINGLETON_RHYTHMS) { g_critical ("Singleton rhythm index out of range"); return; } if (!Denemo.singleton_rhythms[nb_sr]) { g_debug ("Unvalid singleton rhythm %i", nb_sr); return; } project->currhythm = NULL; project->cstep = NULL; project->rstep = Denemo.singleton_rhythms[nb_sr]->rsteps; unhighlight_rhythm (project->prevailing_rhythm); project->prevailing_rhythm = Denemo.singleton_rhythms[nb_sr]; highlight_rhythm (project->prevailing_rhythm); } void highlight_duration (DenemoProject * project, gint dur) { if (project->currhythm) { unhighlight_rhythm ((RhythmPattern *) project->currhythm->data); } gint nb_sr = '0' + dur; if (nb_sr < 0 || nb_sr > NB_SINGLETON_RHYTHMS) { g_critical ("Singleton rhythm index out of range"); return; } if (!Denemo.singleton_rhythms[nb_sr]) { g_debug ("Unvalid singleton rhythm %i", nb_sr); return; } project->currhythm = NULL; project->cstep = NULL; project->rstep = Denemo.singleton_rhythms[nb_sr]->rsteps; unhighlight_rhythm (project->prevailing_rhythm); project->prevailing_rhythm = Denemo.singleton_rhythms[nb_sr]; highlight_rhythm (project->prevailing_rhythm); write_status (project); } void delete_rhythm_pattern (RhythmPattern * r) { DenemoProject *project = Denemo.project; free_clipboard (r->clipboard); r->clipboard = NULL; if (r->name) { gchar *command = g_strdup_printf ("(define Snippet::%s 0)", r->name); call_out_to_guile (command); g_free (command); } gtk_widget_destroy (GTK_WIDGET (r->button)); /* list is circular, so before we free it we have to break it */ r->rsteps->prev->next = NULL; r->rsteps->prev = NULL; GList *g; for (g = r->rsteps; g; g = g->next) g_free (g->data); g_list_free (r->rsteps); g_free (r); //g_debug("length %d\n", g_list_length(project->rhythms)); project->rhythms = g_list_remove (project->rhythms, r); //project->currhythm->data); //g_debug("length %d %p\n", g_list_length(project->rhythms), project->rhythms); project->currhythm = g_list_last (project->rhythms); if (project->currhythm == NULL) { create_singleton_rhythm ((gpointer) insert_chord_2key); //to re-set the default rhythm which is 1/4 note } else { highlight_rhythm (project->currhythm->data); project->rstep = ((RhythmPattern *) project->currhythm->data)->rsteps; project->cstep = ((RhythmPattern *) project->currhythm->data)->clipboard->data; } update_scheme_snippet_ids (); } /* * delete a rhythmic pattern and its button * */ void delete_rhythm_cb (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *project = Denemo.project; if ((project->mode & (INPUTEDIT)) == 0) return; if (project->currhythm == NULL) return; RhythmPattern *r = (RhythmPattern *) project->currhythm->data; delete_rhythm_pattern (r); } /* * workaround for glib<2.10 */ /* UNUSED static void attach_action_to_widget (GtkWidget * widget, DenemoAction * action, DenemoProject * project) { g_object_set_data (G_OBJECT (widget), "action", action); } */ /* attaches a button-press-event signal to the widget with the action as data for use in the callback */ /* UNUSED static void dummy (void) { call_out_to_guile ("(d-Insert2)"); call_out_to_guile ("(d-Insert2)"); call_out_to_guile ("(d-Insert2)"); call_out_to_guile ("(d-Insert2)"); call_out_to_guile ("(d-Insert2)"); return; } */ DenemoAction * activate_action (gchar * path) { DenemoAction *a; a = denemo_menusystem_get_action (path); if (a) denemo_action_activate (a); else g_warning ("No command at %s - should this be in denemoui.xml?", path); return a; } struct cbdata { DenemoProject *project; gchar *filename; }; /** * Add history entry to the History menu, create a menu item for it * Do not add it if it no longer exists, and no gzipped version exists. */ void addhistorymenuitem (gchar * filename) { static gboolean init = FALSE; if (!g_file_test (filename, G_FILE_TEST_EXISTS)) { gchar *zip = g_strconcat (filename, ".gz", NULL); if (!g_file_test (zip, G_FILE_TEST_EXISTS)) { g_free (zip); return; } g_free(zip); } GtkWidget *item ;//= gtk_ui_manager_get_widget (Denemo.ui_manager,"/MainMenu/FileMenu/OpenMenu/OpenRecent/Browse"); //GtkWidget *menu = gtk_widget_get_parent (GTK_WIDGET (item)); if(!init) { instantiate_menus ("/MainMenu/FileMenu/OpenMenu/OpenRecent"); init = TRUE; } GtkWidget *menu = denemo_menusystem_get_widget ("/MainMenu/FileMenu/OpenMenu/OpenRecent"); { static gboolean positioned = FALSE; if (!positioned) { GList *g; GtkWidget *open_menu = denemo_menusystem_get_widget ("/MainMenu/FileMenu/OpenMenu"); GList *children = gtk_container_get_children (GTK_CONTAINER(open_menu)); for (g=children;g;g=g->next) { if (menu == gtk_menu_item_get_submenu (GTK_MENU_ITEM(g->data))) { gtk_menu_reorder_child ( GTK_MENU(open_menu), GTK_WIDGET(g->data), 1); positioned = TRUE; break; } } g_list_free (children); } } item = gtk_menu_item_new_with_label (filename); gtk_menu_shell_insert (GTK_MENU_SHELL (menu), item, 1);//after the tear-off item g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (openrecent), g_strdup (filename)); //FIXME gtk_widget_show (item); } /** * Top-Level function to populate the History menu * with elements read from the denemohistory file */ static void populate_opened_recent_menu (void) { g_queue_foreach (Denemo.prefs.history, (GFunc) addhistorymenuitem, NULL); } static gchar * get_most_recent_file (void) { if (Denemo.prefs.history) { gchar *filename = (gchar *) g_queue_peek_tail (Denemo.prefs.history); if (filename) // && g_file_test (filename, G_FILE_TEST_EXISTS)) return filename; } return NULL; } static void show_type (GtkWidget * widget, gchar * message) { g_message ("%s%s", message, widget ? g_type_name (G_TYPE_FROM_INSTANCE (widget)) : "NULL widget"); } static void visible_rhythm_buttons (GList * rhythms, gboolean on) { GList *g; for (g = rhythms; g; g = g->next) on ? gtk_widget_show (GTK_WIDGET (((RhythmPattern *) (g->data))->button)) : gtk_widget_hide (GTK_WIDGET (((RhythmPattern *) (g->data))->button)); } static void switch_page (GtkNotebook * notebook, GtkWidget * page, guint pagenum) { //g_debug("switching pagenum %d\n",pagenum); DenemoProject *project = Denemo.project; if (project == NULL) return; GList *g = g_list_nth (Denemo.projects, pagenum); if (g == NULL) { g_warning ("Got a switch page, but there is no such page in Denemo.projects"); return; } DenemoProject *newproject = g->data; if (project == newproject) return; //on arrival Denemo.project is already set to the new project when you are doing new window /* turn off the LilyPond window if it is on it would be nice to keep a record of whether it was open for re-opening on return to this tab FIXME */ if (Denemo.textwindow && gtk_widget_get_visible (Denemo.textwindow)) set_toggle (ToggleLilyText_STRING, FALSE);//activate_action ("/MainMenu/ViewMenu/" ToggleLilyText_STRING); if (gtk_widget_get_visible (Denemo.project->score_layout)) set_toggle (ToggleScoreLayout_STRING, FALSE); unhighlight_rhythm (Denemo.project->prevailing_rhythm); visible_rhythm_buttons (Denemo.project->rhythms, FALSE); Denemo.project = project = (DenemoProject *) (g->data); //g_debug("switch page\n"); //Switch to the scheme script attached to this tab of the notebook gchar *current_script = Denemo.project->script; Denemo.project->script = NULL; deleteSchemeText (); if (current_script) { appendSchemeText (current_script); Denemo.project->script = current_script; Denemo.project->has_script = TRUE; } //FIXME if Denemo.project->movement->recording then show Denemo.audio_vol_control if (Denemo.prefs.visible_directive_buttons) { gtk_widget_hide (Denemo.project->buttonboxes); set_toggle (ToggleScoreTitles_STRING, FALSE); } visible_rhythm_buttons (Denemo.project->rhythms, TRUE); set_title_bar (Denemo.project); highlight_rhythm (Denemo.project->prevailing_rhythm); draw_score_area (); draw_score (NULL); } static GtkWidget * create_playbutton (GtkWidget * box, gchar * thelabel, gpointer callback, gchar * image, gchar * tooltip) { GtkWidget *button; if (thelabel) {button = gtk_button_new_with_label (""); GtkWidget *label = gtk_bin_get_child (GTK_BIN(button)); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_label_set_markup(GTK_LABEL (label), thelabel); } else button = gtk_button_new (); gtk_widget_set_can_focus (button, FALSE); if (image) { gtk_button_set_image (GTK_BUTTON (button), gtk_image_new_from_icon_name (image, GTK_ICON_SIZE_BUTTON)); } if (callback) g_signal_connect (button, "clicked", G_CALLBACK (callback), NULL); gtk_box_pack_start (GTK_BOX (box), button, FALSE, TRUE, 0); gtk_widget_set_tooltip_text (button, tooltip); return button; } void set_playbutton (gboolean pause) { if (pause) { #if ((GTK_MAJOR_VERSION==3)&&(GTK_MINOR_VERSION<10)) gtk_button_set_label (GTK_BUTTON (playbutton), _("Pause")); #else gtk_button_set_image (GTK_BUTTON (playbutton), gtk_image_new_from_icon_name ("media-playback-pause", GTK_ICON_SIZE_BUTTON)); #endif } else { #if ((GTK_MAJOR_VERSION==3)&&(GTK_MINOR_VERSION<10)) gtk_button_set_label (GTK_BUTTON (playbutton), _("Play")); #else gtk_button_set_image (GTK_BUTTON (playbutton), gtk_image_new_from_icon_name ("media-playback-start" , GTK_ICON_SIZE_BUTTON)); #endif } } //Set the master volume of the passed score and change the slider to suit void set_master_volume (DenemoMovement * si, gdouble volume) { si->master_volume = volume; if (master_vol_adj) { gtk_adjustment_set_value (master_vol_adj, volume); //gtk_adjustment_changed (master_vol_adj); } } //Set the master tempo of the passed score and change the slider to suit void set_master_tempo (DenemoMovement * si, gdouble tempo) { if (si->master_tempo > 0.0) { Denemo.project->movement->end_time /= si->master_tempo; Denemo.project->movement->start_time /= si->master_tempo; } si->master_tempo = tempo; Denemo.project->movement->end_time *= si->master_tempo; Denemo.project->movement->start_time *= si->master_tempo; if (master_tempo_adj) { gtk_adjustment_set_value (master_tempo_adj, tempo * si->tempo); //gtk_adjustment_changed (master_tempo_adj); } } static void toggle_dynamic_compression (gboolean * compression) { *compression = 100 * (!*compression); Denemo.project->movement->smfsync = G_MAXINT; } /* create_window() creates the toplevel window and all the menus - it only called once per invocation of Denemo */ static void create_window (void) { GtkWidget *outer_main_vbox, *main_hbox, *main_vbox, *menubar, *toolbar, *hbox; GtkUIManager *ui_manager; GError *error; gchar *data_file = NULL; Denemo.window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (Denemo.window), _("Denemo Main Window")); // it accesses Denemo.window loadWindowState (); #ifdef G_OS_WIN32 g_message ("Denemo icon not used"); //not installed on windows ... data_file = g_build_filename (get_system_data_dir (), "icons","denemo.png", NULL); #else GList *icon_dirs = NULL; icon_dirs = g_list_append (icon_dirs, g_build_filename (PACKAGE_SOURCE_DIR, PIXMAPS_DIR, NULL)); icon_dirs = g_list_append (icon_dirs, g_strconcat (get_system_data_dir (), "/../pixmaps", NULL)); //FIXME installed in wrong place? data_file = find_path_for_file ("denemo.png", icon_dirs); if (data_file) gtk_window_set_default_icon_from_file (data_file, NULL); #endif g_signal_connect (G_OBJECT (Denemo.window), "delete_event", G_CALLBACK (delete_callback), NULL); g_free (data_file); gtk_window_set_resizable (GTK_WINDOW (Denemo.window), TRUE); Denemo.color = 0xFFFFFF; //white background RGB values //FIXME this is where score_layout should be created. //score_layout should belong the Denemo.xxx not Denemo.project->xxx (so as to be like the others) #ifdef USE_EVINCE install_printpreview (NULL); #endif install_svgview (NULL); outer_main_vbox = gtk_vbox_new (FALSE, 1); gtk_container_set_border_width (GTK_CONTAINER (outer_main_vbox), 1); gtk_container_add (GTK_CONTAINER (Denemo.window), outer_main_vbox); gtk_widget_show (outer_main_vbox); // the keymap is *NOT* yet created. We create actions here for all the built-ins. Then when init_keymap() is called the built-ins can pickup their callback functions from the actions. //non built-in actions will be created later. //the toggle and radio actions and the popup menus will need extra work #ifdef EXTRA_WORK denemo_menusystem_new ();//creates ActionWidgets hash table the keymap is not yet created denemo_menusystem_add_actions (); #ifdef EXTRA_WORK { //pops up with menu items for the directives attached to the current note GtkWidget *menu = denemo_menusystem_get_widget ("/NoteEditPopupDirectives"); g_signal_connect (menu, "deactivate", G_CALLBACK (unpopulate_menu), NULL); } #endif Denemo.menubar = denemo_menusystem_get_widget ("/MainMenu"); if (Denemo.prefs.newbie) gtk_widget_set_tooltip_text (Denemo.menubar, _("This is the Main Menu bar, where menus for the mostly non-musical aspects (saving, printing, setting up input sources etc) are placed. See the Object Menu bar for the commands that edit music")); gtk_box_pack_start (GTK_BOX (outer_main_vbox), Denemo.menubar, FALSE, TRUE, 0); gtk_widget_show (Denemo.menubar); if (Denemo.prefs.newbie) gtk_widget_set_tooltip_text (denemo_menusystem_get_widget ("/ObjectMenu"), _("This is the Object Menu bar, where menus for the commands that edit music live. They are arranged in a hierarchy Score, Movement, Staff (which contains Voices) and then the things that go on a staff, notes, clefs etc. Directives covers everything else that you can put in amongst the notes to change the behavior from that point in the music.")); gtk_widget_set_tooltip_markup (denemo_menusystem_get_widget ("/RhythmToolBar"), _ ("You can populate this bar with buttons holding a snippet of music. The highlighted snippet is the prevailing duration, that is the next note entered will follow the rhythmic pattern of this snippet.\nYou can enter the whole snippet by clicking on it, or using the command under ObjectMenu → Notes/Rests → Append/InsertDuration → Insert Snippet. You can also select the prevailing snippet using ObjectMenu → Notes/Rests → Select Duration → Next Snippet.\nYou can hide this bar (to make more room on the screen) using the View menu. You can make it your preference to hide it using MainMenu → Edit → Change Preferences → Display Note/Rest entry toolbar")); toolbar = denemo_menusystem_get_widget ("/ToolBar"); if (Denemo.prefs.newbie) gtk_widget_set_tooltip_text (toolbar, _("This tool bar contains a few conventional commands. You can hide it (to make more room on the screen) using the View menu. You can make it your preference to hide it using MainMenu → Edit → Change Preferences → Display general toolbar")); gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_BOTH_HORIZ); gtk_box_pack_start (GTK_BOX (outer_main_vbox), toolbar, FALSE, TRUE, 0); gtk_widget_set_can_focus (toolbar, FALSE); { Denemo.playback_control = gtk_vbox_new (FALSE, 1); //gtk_widget_set_tooltip_text (Denemo.playback_control, _("Controls for playback. The arrows on either side of the PLAY and STOP buttons move the playback start" " and playback end markers. Loop plays in a loop - you can edit while it plays. You can also record the output and save it as .ogg or .wav file. The temperament used for playing back can be set here.")); gtk_box_pack_start (GTK_BOX (outer_main_vbox), Denemo.playback_control, FALSE, TRUE, 0); GtkFrame *frame = (GtkFrame *) gtk_frame_new (_("Playback Control")); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); gtk_container_add (GTK_CONTAINER (Denemo.playback_control), GTK_WIDGET (frame)); GtkWidget *inner1 = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), inner1); GtkWidget *inner = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (inner1), inner, FALSE, TRUE, 0); //gtk_box_pack_start (GTK_BOX (outer_main_vbox), inner, FALSE, TRUE, 0); gtk_widget_set_can_focus (inner, FALSE); GtkWidget *label; //create_playbutton(inner, NULL, pb_first, GTK_STOCK_GOTO_FIRST); //create_playbutton(inner,NULL, pb_rewind, GTK_STOCK_MEDIA_REWIND); #if ((GTK_MAJOR_VERSION==3)&&(GTK_MINOR_VERSION<10)) create_playbutton (inner, "â—€-", pb_go_back, NULL #else create_playbutton (inner, NULL, pb_go_back, "go-previous" #endif , _("Moves the playback start point (which shows as a green bar) earlier in time\nThe red and green bars do not get drawn until you have started play, or at least created the time base.")); create_playbutton (inner, "â™", pb_start_to_cursor, NULL, _("Sets the playback start point (green bar) to the note at the cursor.\nThe red and green bars do not get drawn until you have started play, or at least created the time base.")); #if ((GTK_MAJOR_VERSION==3)&&(GTK_MINOR_VERSION<10)) create_playbutton (inner, "-â–¶", pb_next, NULL #else create_playbutton (inner, NULL, pb_next, "go-next" #endif , _("Moves the playback start point (which shows as a green bar) later in time\nThe red and green bars do not get drawn until you have started play, or at least created the time base.")); create_playbutton (inner, NULL, pb_stop, "media-playback-stop", _("Stops the playback. On pressing play after this playback will start where the green bar is, not where you stopped. Use the Play/Pause button for that.")); #if ((GTK_MAJOR_VERSION==3)&&(GTK_MINOR_VERSION<10)) playbutton = create_playbutton (inner, _("Play"), pb_play, NULL #else playbutton = create_playbutton (inner, _("Play"), pb_play, "media-playback-start" #endif , _("Starts playing back from the playback start (green bar) until the playback end (red bar).\nWhen playing it pauses the play, and continues when pressed again.")); audiorecordbutton = create_playbutton (inner, NULL, pb_audiorecord, "media-record", _("Starts/Stops recording the audio output from Denemo.\nRecords live performance and/or playback,\nsave to disk to avoid overwriting previous recordings.")); exportbutton = create_playbutton (inner, NULL, pb_exportaudio, "document-save", _("Exports the audio recorded to disk")); #if ((GTK_MAJOR_VERSION==3)&&(GTK_MINOR_VERSION<10)) create_playbutton (inner, "â—€-", pb_previous, NULL #else create_playbutton (inner, NULL, pb_previous, "go-previous" #endif , _("Moves the playback end point (which shows as a red bar) earlier in time\nThe red and green bars do not get drawn until you have started play, or at least created the time base.")); create_playbutton (inner, "â™", pb_end_to_cursor, NULL, _("Sets the playback end point (red bar) to the note at the cursor.\nThe red and green bars do not get drawn until you have started play, or at least created the time base.")); #if ((GTK_MAJOR_VERSION==3)&&(GTK_MINOR_VERSION<10)) create_playbutton (inner, "-â–¶", pb_go_forward, NULL #else create_playbutton (inner, NULL, pb_go_forward, "go-next" #endif , _("Moves the playback end point (which shows as a red bar) later in time\nThe red and green bars do not get drawn until you have started play, or at least created the time base.")); //create_playbutton(inner,NULL, pb_forward, GTK_STOCK_MEDIA_FORWARD); create_playbutton (inner, _("Loop"), pb_loop, NULL, _("The music between the red and green bars is played in a loop.\nYou can edit the music while it is playing\n(so that you can continuously listen as you try alternatives).")); // midiconductbutton = create_playbutton (inner, _("Conductor"), pb_conduct, NULL, _("With the mouse conductor once you press play the playback progresses as you move the mouse around\nWith this you can speed up and slow down the playback to listen in detail to a certain passage\n")); create_playbutton (inner, #ifdef _HAVE_JACK_ _("Panic") #else _("Reset") #endif , pb_panic, NULL, _("Resets the synthesizer, on JACK it sends a JACK panic.")); create_playbutton (inner, _("Play Selection"), pb_play_range, NULL, _("Plays the current selection or from the cursor to the end if no selection present.")); create_playbutton (inner, _("Playback Range"), pb_range, NULL, _("Pops up a dialog to get timings for start and end of playback.")); GtkWidget *temperament_control = get_temperament_combo (); if (!gtk_widget_get_parent (temperament_control)) //gtk_container_add (GTK_CONTAINER (inner), temperament_control); gtk_box_pack_start (GTK_BOX (inner), temperament_control, FALSE, FALSE, 0); #define PLAYBACK_HELP _("Controls for playback.\nThe arrows on either side of the PLAY and STOP buttons move the playback start\nand playback end markers.\nLoop plays in a loop - you can edit while it plays.\nYou can also record the output and save it as .ogg or .wav file.\nThe temperament used for playing back can be set here.") GtkWidget* helpbutton = create_playbutton (inner, _("Help"), NULL, NULL, PLAYBACK_HELP); g_signal_connect_swapped (helpbutton, "clicked", G_CALLBACK(infodialog), PLAYBACK_HELP); { GtkWidget *hbox; hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (inner1), hbox, TRUE, TRUE, 0); // Tempo label = gtk_label_new (_("Tempo:")); gtk_widget_set_tooltip_text (label, _("Set the (initial) tempo of the movement")); gtk_widget_set_can_focus (label, FALSE); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); master_tempo_adj = (GtkAdjustment *) gtk_adjustment_new (120.0, 0.0, 600.0, 1.0, 1.0, 0.0); GtkWidget *hscale = gtk_hscale_new (GTK_ADJUSTMENT (master_tempo_adj)); gtk_scale_set_digits (GTK_SCALE (hscale), 0); //GTK_WIDGET_UNSET_FLAGS(hscale, GTK_CAN_FOCUS); gtk_widget_set_can_focus (hscale, FALSE); g_signal_connect (G_OBJECT (master_tempo_adj), "value_changed", G_CALLBACK (pb_tempo), NULL); gtk_box_pack_start (GTK_BOX (hbox), hscale, TRUE, TRUE, 0); create_playbutton (hbox, _("Mute Staffs"), pb_mute_staffs, NULL, _("Select which staffs should be muted during playback.")); // Volume label = gtk_label_new (_("Volume")); //GTK_WIDGET_UNSET_FLAGS(label, GTK_CAN_FOCUS); gtk_widget_set_tooltip_text (label, _("Set the (initial) volume of the movement")); gtk_widget_set_can_focus (label, FALSE); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); master_vol_adj = (GtkAdjustment *) gtk_adjustment_new (1.0, 0.0, 1.0, 1.0, 1.0, 0.0); hscale = gtk_hscale_new (GTK_ADJUSTMENT (master_vol_adj)); gtk_scale_set_digits (GTK_SCALE (hscale), 2); gtk_widget_set_can_focus (hscale, FALSE); //GTK_WIDGET_UNSET_FLAGS(hscale, GTK_CAN_FOCUS); g_signal_connect (G_OBJECT (master_vol_adj), "value_changed", G_CALLBACK (pb_volume), NULL); gtk_box_pack_start (GTK_BOX (hbox), hscale, TRUE, TRUE, 0); GtkWidget *always_full_volume = gtk_check_button_new_with_label (_("Always Full Volume")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (always_full_volume), Denemo.prefs.dynamic_compression); g_signal_connect_swapped (G_OBJECT (always_full_volume), "toggled", G_CALLBACK (toggle_dynamic_compression), &Denemo.prefs.dynamic_compression); gtk_box_pack_start (GTK_BOX (hbox), always_full_volume, FALSE, FALSE, 10); // Audio Volume Denemo.audio_vol_control = gtk_hbox_new (FALSE, 1); label = gtk_label_new (_("Audio Volume Cut")); gtk_widget_set_tooltip_text (label, _("Reduce the volume of the source audio relative to the volume of the score")); gtk_widget_set_can_focus (label, FALSE); gtk_box_pack_start (GTK_BOX (Denemo.audio_vol_control), label, FALSE, TRUE, 0); audio_vol_adj = (GtkAdjustment *) gtk_adjustment_new (1.0, 0.0, 1.0, 0.1, 0.2, 0.0); hscale = gtk_hscale_new (GTK_ADJUSTMENT (audio_vol_adj)); gtk_scale_set_digits (GTK_SCALE (hscale), 2); gtk_widget_set_can_focus (hscale, FALSE); //GTK_WIDGET_UNSET_FLAGS(hscale, GTK_CAN_FOCUS); g_signal_connect (G_OBJECT (audio_vol_adj), "value_changed", G_CALLBACK (audio_volume_cut), NULL); gtk_box_pack_start (GTK_BOX (Denemo.audio_vol_control), hscale, TRUE, TRUE, 0); label = gtk_label_new (_("Audio Volume Boost")); gtk_widget_set_tooltip_text (label, _("Boost the volume of the source audio relative to the volume of the score")); gtk_widget_set_can_focus (label, FALSE); gtk_box_pack_start (GTK_BOX (Denemo.audio_vol_control), label, FALSE, TRUE, 0); audio_vol_adj = (GtkAdjustment *) gtk_adjustment_new (1.0, 1.0, 10.0, 0.5, 2.0, 0.0); hscale = gtk_hscale_new (GTK_ADJUSTMENT (audio_vol_adj)); gtk_scale_set_digits (GTK_SCALE (hscale), 2); gtk_widget_set_can_focus (hscale, FALSE); //GTK_WIDGET_UNSET_FLAGS(hscale, GTK_CAN_FOCUS); g_signal_connect (G_OBJECT (audio_vol_adj), "value_changed", G_CALLBACK (audio_volume_boost), NULL); gtk_box_pack_start (GTK_BOX (Denemo.audio_vol_control), hscale, TRUE, TRUE, 0); label = gtk_label_new (_("Audio Lead In ")); gtk_widget_set_can_focus (label, FALSE); gtk_box_pack_start (GTK_BOX (Denemo.audio_vol_control), label, FALSE, TRUE, 0); leadin = (GtkSpinButton *) gtk_spin_button_new_with_range (-2.0, 2.0, 0.01); gtk_widget_set_tooltip_text (GTK_WIDGET (label), _("Set the number of seconds to clip from the audio, or if negative number of seconds silence before audio plays.\nThis is useful when the audio track does not begin on a barline.")); g_signal_connect (G_OBJECT (leadin), "value_changed", G_CALLBACK (leadin_changed), NULL); gtk_box_pack_start (GTK_BOX (Denemo.audio_vol_control), GTK_WIDGET (leadin), FALSE, TRUE, 0); //label = gtk_label_new (_(" secs.")); //gtk_widget_set_can_focus (label, FALSE); //gtk_box_pack_start (GTK_BOX (Denemo.audio_vol_control), label, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (hbox), Denemo.audio_vol_control, TRUE, TRUE, 0); #ifdef _HAVE_RUBBERBAND_ /* Speed */ label = gtk_label_new (_("Slowdown:")); gtk_widget_set_can_focus (label, FALSE); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); speed_adj = (GtkAdjustment *) gtk_adjustment_new (1.0, 1.0, 4.0, 0.01, 0.1, 0.0); hscale = gtk_hscale_new (GTK_ADJUSTMENT (speed_adj)); //gtk_scale_set_digits (GTK_SCALE (hscale), 0); gtk_widget_set_can_focus (hscale, FALSE); gtk_widget_set_tooltip_text (label, _("Slow down the audio output maintaining the pitch")); g_signal_connect (G_OBJECT (speed_adj), "value_changed", G_CALLBACK (set_speed), NULL); gtk_box_pack_start (GTK_BOX (hbox), hscale, TRUE, TRUE, 0); #endif } Denemo.midi_in_control = gtk_vbox_new (FALSE, 1); //gtk_widget_set_tooltip_text (Denemo.midi_in_control, _("Controls for managing input from a MIDI controller (e.g. keyboard) attached to the computer. You may need to select your MIDI device first using MainMenu → Edit → Change Preferences → MIDI looking for MIDI in devices (turn your device on first). When you have a MIDI controller durations are inserted without any pitch (they appear in brown) playing on the controller puts the pitches onto the durations. The Shift and Control and ALT keys can also be used for listening without entering notes, checking pitches entered and entering chords. The foot pedal can also be used for chords. Release the ALT key and re-press to start a new chord - timing is unimportant, play the chord fast or slow.")); gtk_box_pack_start (GTK_BOX (outer_main_vbox), Denemo.midi_in_control, FALSE, TRUE, 0); frame = (GtkFrame *) gtk_frame_new (_("Midi In Control")); gtk_frame_set_shadow_type ((GtkFrame *) frame, GTK_SHADOW_IN); gtk_container_add (GTK_CONTAINER (Denemo.midi_in_control), GTK_WIDGET (frame)); inner1 = gtk_vbox_new (FALSE, 1); gtk_container_add (GTK_CONTAINER (frame), inner1); //inner = gtk_hbox_new(FALSE, 1); //gtk_box_pack_start (GTK_BOX (inner1), inner, FALSE, TRUE, 0); GtkWidget *enharmonic_control = get_enharmonic_frame (); if (!gtk_widget_get_parent (enharmonic_control)) gtk_container_add (GTK_CONTAINER (inner1), enharmonic_control); { GtkWidget *hbox; hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (inner1), hbox, TRUE, TRUE, 0); GtkWidget *midi_in_button = gtk_button_new (); g_signal_connect (G_OBJECT (midi_in_button), "clicked", midi_in_menu, NULL); midi_in_status = gtk_label_new (_("Appending/Editing Pitches")); gtk_container_add (GTK_CONTAINER (midi_in_button), midi_in_status); gtk_widget_set_tooltip_text (midi_in_status, _("This tells you what will happen to a MIDI in event from your controller. Click here or use the Control Shift or ALT keys, or caps lock to affect what will happen. Moving the cursor into the display will revert to editing notes.")); gtk_label_set_use_markup (GTK_LABEL (midi_in_status), TRUE); gtk_box_pack_start (GTK_BOX (hbox), midi_in_button, FALSE, TRUE, 0); midiplayalongbutton = create_playbutton (hbox, _("Switch to Play Along Playback"), pb_playalong, NULL, _("When in playalong mode, on clicking Play, the music plays until it reaches the Denemo cursor\nFrom then on you must play the notes at the cursor to progress the playback.\nSo if you set the cursor on the first note of the part you want to play, then once you have pressed play you can play along with Denemo, with Denemo filling in the other parts and waiting if you play a wrong note.")); deletebutton = create_playbutton (hbox, "Delete", pb_midi_delete, NULL, _("Delete the MIDI recording you have made.")); convertbutton = create_playbutton (hbox, "Convert", pb_midi_convert, NULL, _("Convert the MIDI recording you have made to notation.")); midirecordbutton = create_playbutton (hbox, NULL, pb_record, "media-record", _("Starts playing and simultaneously records from MIDI in.\nOnce a recording is made it is played back with the score when you press Play.\nIt can be deleted with the Delete button or converted to notation with the Convert button.\nA MIDI recording is not saved with the Denemo score.")); #define MIDI_CONTROL_HELP _("Controls for managing input from a MIDI controller (e.g. keyboard) attached to the computer.\nYou may need to select your MIDI device first using MainMenu → Edit → Change Preferences → MIDI\nlooking for MIDI in devices (turn your device on first).\nWhen you have a MIDI controller durations are inserted without any pitch (they appear in brown)\n playing on the controller puts the pitches onto the durations.\nThe Shift and Control and ALT keys can also be used for listening without entering notes,\nchecking pitches entered and entering chords.\nThe foot pedal can also be used for chords. Release the ALT key and re-press to start a new chord\n- timing is unimportant, play the chord fast or slow.\nOr use Input → MIDI → Chord Entry Without Pedal to enter chords based on playing the notes simultaneously") midihelpbutton = create_playbutton (hbox, _( "Help"), NULL, NULL, MIDI_CONTROL_HELP); g_signal_connect_swapped (midihelpbutton, "clicked", G_CALLBACK(infodialog), MIDI_CONTROL_HELP); gtk_widget_show_all (Denemo.midi_in_control); gtk_widget_show_all (Denemo.playback_control); gtk_widget_hide (Denemo.midi_in_control); gtk_widget_hide (Denemo.playback_control); gtk_widget_hide (deletebutton); gtk_widget_hide (convertbutton); gtk_widget_hide (exportbutton); gtk_widget_hide (Denemo.audio_vol_control); } } toolbar = denemo_menusystem_get_widget ("/RhythmToolBar"); gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_TEXT); gtk_box_pack_start (GTK_BOX (outer_main_vbox), toolbar, FALSE, TRUE, 0); menubar = denemo_menusystem_get_widget ("/ObjectMenu"); if (menubar) { gtk_box_pack_start (GTK_BOX (outer_main_vbox), menubar, FALSE, TRUE, 0); } main_hbox = gtk_hbox_new (FALSE, 1); gtk_widget_show (main_hbox); gtk_box_pack_start (GTK_BOX (outer_main_vbox), main_hbox, TRUE, TRUE, 0); Denemo.hpalettes = gtk_hbox_new (FALSE, 1); gtk_widget_show (Denemo.hpalettes); gtk_box_pack_start (GTK_BOX (main_hbox), Denemo.hpalettes, FALSE, FALSE, 0); main_vbox = gtk_vbox_new (FALSE, 1); gtk_widget_show (main_vbox); gtk_box_pack_start (GTK_BOX (main_hbox), main_vbox, TRUE, TRUE, 0); Denemo.vpalettes = gtk_vbox_new (FALSE, 1); gtk_widget_show (Denemo.vpalettes); gtk_box_pack_start (GTK_BOX (main_vbox), Denemo.vpalettes, FALSE, FALSE, 0); Denemo.notebook = gtk_notebook_new (); gtk_notebook_set_show_tabs (GTK_NOTEBOOK (Denemo.notebook), FALSE); //only show when more than one //gtk_notebook_popup_enable (Denemo.notebook);?? doesn't work... gtk_widget_show (Denemo.notebook); gtk_box_pack_start (GTK_BOX (main_vbox), Denemo.notebook, FALSE, FALSE, 0); { Denemo.scorearea = gtk_drawing_area_new (); if (Denemo.prefs.newbie) gtk_widget_set_tooltip_text (Denemo.scorearea, _("This is the Denemo Display for the music you have entered." " See the print view window for the typeset appearance. " " The blue lozenge is the Denemo Cursor - it turns red when when the bar is full or green if you are inserting in a bar. " "Overfull/Underfull bars are colored red/blue," " use the Upbeat (Anacrusis, Pickup) command if that is intentional." "\nYou can switch to a menu-less view or a page-view using the Esc key." " For the paged view you drag the red bar up the page to set how many systems you want showing." "For the paged view you will probably want a smaller zoom - use Control+scroll-wheel on your mouse to zoom the display." "\nMany commands operate on the object at the Denemo cursor. " "Right-click on an object to get a short menu of actions or set the mouse input mode.\n" "Shift-Right-click for more objects to insert.")); #if GTK_MAJOR_VERSION == 2 GtkWidget *outer_pane = gtk_vpaned_new (); #else GtkWidget *outer_pane = gtk_paned_new (GTK_ORIENTATION_VERTICAL); #endif GtkWidget *scorearea_topbox = gtk_vbox_new (FALSE, 1); //gtk_container_add (GTK_CONTAINER (main_vbox), scorearea_topbox); gtk_box_pack_start (GTK_BOX (main_vbox), outer_pane, TRUE, TRUE, 0); gtk_paned_pack1 (GTK_PANED (outer_pane), scorearea_topbox, TRUE, FALSE); GtkWidget *score_and_scroll_hbox = gtk_hbox_new (FALSE, 1); //gtk_container_add (GTK_CONTAINER (scorearea_topbox), score_and_scroll_hbox); gtk_box_pack_start (GTK_BOX (scorearea_topbox), score_and_scroll_hbox, TRUE, TRUE, 0); gtk_widget_show (score_and_scroll_hbox); gtk_box_pack_start (GTK_BOX (score_and_scroll_hbox), Denemo.scorearea, TRUE, TRUE, 0); // with this, the scorearea_draw_event is called gtk_widget_show (Denemo.scorearea); #if GTK_MAJOR_VERSION != 2 g_signal_connect (G_OBJECT (Denemo.scorearea), "draw", G_CALLBACK (scorearea_draw_event), NULL); #else g_signal_connect (G_OBJECT (Denemo.scorearea), "expose_event", G_CALLBACK (scorearea_draw_event), NULL); #endif g_signal_connect (G_OBJECT (Denemo.scorearea), "configure_event", G_CALLBACK (scorearea_configure_event), NULL); g_signal_connect (G_OBJECT (Denemo.scorearea), "button_release_event", G_CALLBACK (scorearea_button_release), NULL); g_signal_connect (G_OBJECT (Denemo.scorearea), "motion_notify_event", G_CALLBACK (scorearea_motion_notify), NULL); g_signal_connect (G_OBJECT (Denemo.scorearea), "leave-notify-event", G_CALLBACK (scorearea_leave_event), NULL); g_signal_connect (G_OBJECT (Denemo.scorearea), "enter-notify-event", G_CALLBACK (scorearea_enter_event), NULL); g_signal_connect (G_OBJECT (Denemo.scorearea), "scroll_event", G_CALLBACK (scorearea_scroll_event), NULL); //g_signal_handlers_block_by_func(Denemo.scorearea, G_CALLBACK (ascorearea_motion_notify), NULL); g_signal_connect (G_OBJECT (Denemo.scorearea), "button_press_event", G_CALLBACK (scorearea_button_press), NULL); g_signal_connect (G_OBJECT (Denemo.scorearea), "key_press_event", G_CALLBACK (scorearea_keypress_event), NULL); g_signal_connect (G_OBJECT (Denemo.scorearea), "key_release_event", G_CALLBACK (scorearea_keyrelease_event), NULL); #if GTK_MAJOR_VERSION==2 gtk_widget_add_events /*gtk_widget_set_events */ (Denemo.scorearea, (GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK)); #else gtk_widget_add_events /*gtk_widget_set_events */ (Denemo.scorearea, (GDK_EXPOSURE_MASK | GDK_SCROLL_MASK | GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK)); #endif Denemo.vadjustment = (GtkAdjustment *) gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0); g_signal_connect (G_OBJECT (Denemo.vadjustment), "value_changed", G_CALLBACK (vertical_scroll), NULL); Denemo.vscrollbar = gtk_vscrollbar_new (GTK_ADJUSTMENT (Denemo.vadjustment)); gtk_box_pack_start (GTK_BOX (score_and_scroll_hbox), Denemo.vscrollbar, FALSE, TRUE, 0); gtk_widget_show (Denemo.vscrollbar); Denemo.hadjustment = (GtkAdjustment *) gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 4.0, 1.0); g_signal_connect (G_OBJECT (Denemo.hadjustment), "value_changed", G_CALLBACK (horizontal_scroll), NULL); Denemo.hscrollbar = gtk_hscrollbar_new (GTK_ADJUSTMENT (Denemo.hadjustment)); gtk_box_pack_start (GTK_BOX (scorearea_topbox), Denemo.hscrollbar, FALSE, TRUE, 0); gtk_widget_show_all (outer_pane); } create_lilywindow (); // This section creates an hbox and places it in the main vbox. Inside this hbox are placed a status bar and a label. // The status bar is not properly used within Denemo, and could just as well be a label too. Denemo.statuslabel = gtk_label_new (""); gtk_widget_set_tooltip_text (Denemo.statuslabel, _ ("This bar shows:\nPending ♯ or â™­ sign (if the next note entered will be sharpened or flattened)\nThe movement number\nDescription of the object at the Denemo cursor\nPosition and status (appending or inserting) of the cursor.\nIf the Playback Controls are visible then the timing of the object at the cursor is shown.\nIf MIDI in controls are visible the current enharmonic range is shown.\nWhen the first key of a two-key shortcut is pressed the possible continuations are shown here.")); #if GTK_MAJOR_VERSION == 2 hbox = gtk_hpaned_new (); #else hbox = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL); #endif gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0); gtk_paned_add1 (GTK_PANED (hbox), Denemo.statuslabel); gtk_widget_show (Denemo.statuslabel); //Denemo.status_context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (Denemo.statusbar), "Denemo"); //gtk_statusbar_push (GTK_STATUSBAR (Denemo.statusbar), Denemo.status_context_id, "Denemo"); Denemo.input_label = gtk_label_new (_("No MIDI filter")); gtk_widget_set_tooltip_text (Denemo.input_label, _("This area shows which MIDI filters are active. It can also be used by commands to pass information to the user")); gtk_widget_show (Denemo.input_label); Denemo.input_filters = g_string_new (""); gtk_paned_add2 (GTK_PANED (hbox), Denemo.input_label); gtk_paned_set_position (GTK_PANED (hbox), 600); gtk_widget_show (hbox); // End of status bar stuff - note this is not working on Windows correctly. create_scheme_window (); //gtk_widget_hide (denemo_menusystem_get_widget ("/MainMenu/HiddenMenu")); if (!Denemo.non_interactive) gtk_widget_show (Denemo.window); //set all the labels to use markup so that we can use the music font. Be aware this means you cannot use labels involving "&" "<" and ">" and so on without escaping them // FIXME labels in toolitems are not correct until you do NewWindow. // Really we should change the default for the class. */ use_markup (Denemo.window); //g_debug("Turning on the modes\n"); g_signal_connect (G_OBJECT (Denemo.notebook), "switch_page", G_CALLBACK (switch_page), NULL); } /* create window */ void newview (DenemoAction * action, DenemoScriptParam * param) { newtab (); Denemo.project->movement->undo_guard = 1; //do not collect undo for initialization of score load_scheme_init (); Denemo.project->movement->undo_guard = Denemo.prefs.disable_undo; } void new_score_cb (DenemoAction * action, DenemoScriptParam * param) { DenemoScriptParam dummy; dummy.string = NULL; if (param == NULL) param = &dummy; file_newwrapper (action, param); if (param->status) { //call_out_to_guile ("(d-InstrumentName (_ \"Unnamed\"))"); // call_out_to_guile ("(d-ScoreTitle (_ \"Click Title\"))"); denemo_scheme_init (); } } static DenemoProject * new_project (gboolean new_movement) { static gint id = 1; DenemoProject *project = (DenemoProject *) g_malloc0 (sizeof (DenemoProject)); //uniquely identifies this musical score editor for duration of program. project->id = id++; project->mode = Denemo.prefs.mode; project->pending_midi = g_queue_new (); Denemo.projects = g_list_append (Denemo.projects, project); Denemo.project = NULL; project->lilycontrol.papersize = g_string_new ("a4"); //A4 default project->lilycontrol.staffsize = g_string_new ("18"); project->lilycontrol.lilyversion = g_string_new (""); project->lilycontrol.orientation = TRUE; //portrait project->total_edit_time = 0; reset_editing_timer (); if (new_movement) { Denemo.project = project; point_to_new_movement (project); project->movements = g_list_append (NULL, project->movement); } return project; } gint hide_printarea_on_delete (void) { //activate_action (TogglePrintView_STRING); set_toggle (TogglePrintView_STRING, FALSE); return TRUE; } static gint hide_score_layout_on_delete (void) { set_toggle (ToggleScoreLayout_STRING, FALSE); return TRUE; } static void toggle_rhythm_toolbar (DenemoAction * action, gpointer param); static void toggle_entry_toolbar (DenemoAction * action, gpointer param); static void toggle_object_menu (DenemoAction * action, gpointer param); /* UNUSED static void toggle_main_menu (DenemoAction * action, gpointer param); */ static void toggle_print_view (DenemoAction * action, gpointer param); static void toggle_score_layout (DenemoAction * action, gpointer param); static void toggle_command_manager (DenemoAction * action, gpointer param); static void toggle_scoretitles (DenemoAction * action, gpointer param); #if ((GTK_MAJOR_VERSION>3)||((GTK_MAJOR_VERSION==3) && (GTK_MINOR_VERSION>=22))) static gint denemo_get_screen_width (void) { GdkRectangle r; gdk_monitor_get_workarea (gdk_display_get_primary_monitor (gdk_display_get_default ()), &r); return r.width; } static gint denemo_get_screen_height (void) { GdkRectangle r; gdk_monitor_get_workarea (gdk_display_get_primary_monitor (gdk_display_get_default ()), &r); return r.height; } #define gdk_screen_get_width(s) denemo_get_screen_width() #define gdk_screen_get_height(s) denemo_get_screen_height() #endif static void toggle_page_view (void) { static gdouble zoom = 1.0; static gdouble system_height = 0.25; DenemoMovement *si = Denemo.project->movement; if (si->page_width == 0) { si->page_width = gdk_screen_get_width (gtk_window_get_screen (GTK_WINDOW (Denemo.window))); si->page_height = gdk_screen_get_height (gtk_window_get_screen (GTK_WINDOW (Denemo.window))); if (si->page_height / (double) si->page_width < 1.4) si->page_width = si->page_height / 1.4; si->page_zoom = 0.5; si->page_system_height = 0.25; } if (Denemo.project->view == DENEMO_PAGE_VIEW) { gtk_window_get_size (GTK_WINDOW (Denemo.window), &si->page_width, &si->page_height); si->page_zoom = si->zoom; si->page_system_height = si->system_height; si->zoom = zoom; si->system_height = system_height; Denemo.project->view = DENEMO_LINE_VIEW; gtk_window_resize (GTK_WINDOW (Denemo.window), si->stored_width, si->stored_height); } else { gtk_window_get_size (GTK_WINDOW (Denemo.window), &si->stored_width, &si->stored_height); zoom = si->zoom; system_height = si->system_height; si->zoom = si->page_zoom; si->system_height = si->page_system_height; Denemo.project->view = DENEMO_PAGE_VIEW; gtk_window_resize (GTK_WINDOW (Denemo.window), si->page_width, si->page_height); } } /* Hide/show everything except the drawing area */ void toggle_to_drawing_area (gboolean show) { if (Denemo.non_interactive) return; #define current_view Denemo.project->view gint height; // height of menus that are hidden gint win_width, win_height; height = 0; if (current_view == DENEMO_LINE_VIEW) { toggle_page_view (); return; } if (current_view == DENEMO_PAGE_VIEW) { toggle_page_view (); win_width = Denemo.project->movement->stored_width; win_height = Denemo.project->movement->stored_height; } else gtk_window_get_size (GTK_WINDOW (Denemo.window), &win_width, &win_height); //g_debug("window width is %d\n", win_width); // NOTE lyrics are per movement GtkWidget *widget; gboolean hide = !show; if (((current_view == DENEMO_PAGE_VIEW) && hide) || (show && (!current_view))) return; hide ? (gtk_widget_hide (Denemo.vpalettes), gtk_widget_hide (Denemo.hpalettes)) : (gtk_widget_show (Denemo.vpalettes), gtk_widget_show (Denemo.hpalettes)); current_view = hide ? DENEMO_LINE_VIEW : DENEMO_MENU_VIEW; #define ACCUM height += get_widget_height(widget) #define TOG(name, item, menu)\ widget = denemo_menusystem_get_widget (name);\ static gboolean item=TRUE;\ if(hide)\ item = gtk_widget_get_visible (widget);\ if((hide && item) || (show && item))\ ACCUM, activate_action(menu); #define TOG2(name, item)\ widget = denemo_menusystem_get_widget (name);\ static gboolean item=TRUE;\ if(hide)\ item = gtk_widget_get_visible (widget);\ if(hide && item)\ ACCUM, gtk_widget_hide(widget);\ if(!hide && item)\ ACCUM, gtk_widget_show(widget); #define TOG3(name, item, menu)\ widget = name;\ static gboolean item=TRUE;\ if(hide) \ item = gtk_widget_get_visible (widget);\ if((hide && item) || (show && item))\ ACCUM, activate_action(menu); TOG ("/ToolBar", toolbar, ToggleToolbar_STRING); //TOG("/RhythmToolBar", rtoolbar, "/MainMenu/ViewMenu/"ToggleRhythmToolbar_STRING); TOG ("/ObjectMenu", objectmenu, ToggleObjectMenu_STRING); TOG2 ("/MainMenu", mainmenu); //TOG3(gtk_widget_get_parent(gtk_widget_get_parent(Denemo.printarea)), print_view, "/MainMenu/ViewMenu/"TogglePrintView_STRING); TOG3 (Denemo.project->buttonboxes, scoretitles, ToggleScoreTitles_STRING); TOG3 (Denemo.playback_control, playback_control, TogglePlaybackControls_STRING); TOG3 (Denemo.midi_in_control, midi_in_control, ToggleMidiInControls_STRING); gtk_window_resize (GTK_WINDOW (Denemo.window), win_width, win_height + (current_view ? -height : height)); #undef current_view } void ToggleReduceToDrawingArea (DenemoAction * action, DenemoScriptParam * param) { GtkWidget *widget = denemo_menusystem_get_widget ("/MainMenu"); gboolean visibile = gtk_widget_get_visible (widget); if (Denemo.project->view == DENEMO_MENU_VIEW && !visibile) { g_warning ("Out of step"); Denemo.project->view = DENEMO_LINE_VIEW; } toggle_to_drawing_area (!gtk_widget_get_visible (widget)); } /** * Creates a new DenemoProject structure represented by a tab in a notebook: the DenemoProject can, at anyone time, control one musical score possibly of several movements. It can, from time to time have different musical scores loaded into it. So it is to be thought of as a Music Score Editor. * This DenemoProject* project is appended to the global list Denemo.projects. * A single movement (DenemoMovement) is instantiated in the project. * */ static void newtab (void) { if (Denemo.project && gtk_widget_get_visible (Denemo.project->score_layout)) set_toggle (ToggleScoreLayout_STRING, FALSE); if (Denemo.project && gtk_widget_get_visible (Denemo.textwindow)) set_toggle ( ToggleLilyText_STRING, FALSE); if (Denemo.project) visible_rhythm_buttons (Denemo.project->rhythms, FALSE);//!!!!!!!!!!!!!!!!! DenemoProject *project = new_project (FALSE); project->score_layout = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (project->score_layout), "Score Layout"); gtk_window_set_default_size (GTK_WINDOW (project->score_layout), 1000, 600); g_signal_connect (G_OBJECT (project->score_layout), "delete-event", G_CALLBACK (hide_score_layout_on_delete), NULL); /* Initialize the project */ //create the tab for this project GtkWidget *top_vbox = gtk_vbox_new (FALSE, 1); project->buttonboxes = gtk_vbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (top_vbox), project->buttonboxes, FALSE, TRUE, 0); project->buttonbox = gtk_hbox_new (FALSE, 1); gtk_widget_set_tooltip_text (project->buttonbox, _("A button bar that can be populated by titles and other user generated buttons.\nGenerally by clicking the button you can edit the title or value or execute the action of the button")); gtk_box_pack_start (GTK_BOX (project->buttonboxes), project->buttonbox, FALSE, TRUE, 0); gtk_widget_set_can_focus (project->buttonboxes, FALSE); gtk_widget_set_can_focus (project->buttonbox, FALSE); GtkWidget *main_vbox = gtk_vbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (top_vbox), main_vbox, TRUE, TRUE, 0); gint pagenum = gtk_notebook_insert_page_menu (GTK_NOTEBOOK (Denemo.notebook), top_vbox, NULL, NULL, -1); //puts top_vbox inside Denemo.notebook gtk_notebook_popup_enable (GTK_NOTEBOOK (Denemo.notebook)); Denemo.page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (Denemo.notebook), pagenum); //note Denemo.page is suspect, it is set to the last page created and it is never unset even when that page is deleted - it is only used by the selection paste routine. gtk_notebook_set_current_page (GTK_NOTEBOOK (Denemo.notebook), pagenum); Denemo.project = project; set_title_bar (project); if (pagenum) gtk_notebook_set_show_tabs (GTK_NOTEBOOK (Denemo.notebook), TRUE); set_title_bar (project); gtk_widget_show (top_vbox); gtk_widget_show (main_vbox); //gtk_grab_remove(toolbar); ????????? #if 0 GtkWidget *hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0); gtk_widget_show (hbox); #endif //FIXME populate_opened_recent_menu (project); /* create the first movement now because showing the window causes it to try to draw the scorearea which it cannot do before there is a score. FIXME use signal blocking to control this - see importxml.c */ point_to_new_movement (project); project->movements = g_list_append (NULL, project->movement); //install_lyrics_preview (project->movement, top_vbox); gtk_widget_set_can_focus (Denemo.scorearea, TRUE); gtk_widget_show (Denemo.page); gtk_widget_grab_focus (Denemo.scorearea); create_singleton_rhythm ((gpointer) insert_chord_0key); create_singleton_rhythm ((gpointer) insert_chord_1key); create_singleton_rhythm ((gpointer) insert_chord_2key); create_singleton_rhythm ((gpointer) insert_chord_3key); create_singleton_rhythm ((gpointer) insert_chord_4key); create_singleton_rhythm ((gpointer) insert_chord_5key); create_singleton_rhythm ((gpointer) insert_chord_6key); create_singleton_rhythm ((gpointer) insert_chord_7key); create_singleton_rhythm ((gpointer) insert_chord_8key); create_singleton_rhythm ((gpointer) insert_rest_0key); create_singleton_rhythm ((gpointer) insert_rest_1key); create_singleton_rhythm ((gpointer) insert_rest_2key); create_singleton_rhythm ((gpointer) insert_rest_3key); create_singleton_rhythm ((gpointer) insert_rest_4key); create_singleton_rhythm ((gpointer) insert_rest_5key); create_singleton_rhythm ((gpointer) insert_rest_6key); create_singleton_rhythm ((gpointer) insert_rest_7key); create_singleton_rhythm ((gpointer) insert_rest_8key); //Denemo.project->mode = Denemo.prefs.mode; // this stops the keyboard input from getting to scorearea_keypress_event if done after attaching the signal, why? gtk_notebook_set_current_page (GTK_NOTEBOOK (Denemo.notebook), pagenum); //if this is not done Gdk-CRITICAL **: gdk_draw_drawable: assertion `GDK_IS_DRAWABLE (drawable)' failed message results. Presumably because we have failed to block the (expose_event) drawing while we set up the new page. FIXME. gtk_widget_set_can_focus (Denemo.scorearea, TRUE); //GTK_WIDGET_SET_FLAGS(Denemo.scorearea, GTK_CAN_FOCUS); gtk_widget_grab_focus (GTK_WIDGET (Denemo.scorearea)); if (Denemo.prefs.autosave) { if (Denemo.autosaveid) { g_debug ("No autosave on new tab."); } else { Denemo.autosaveid = g_timeout_add_seconds (Denemo.prefs.autosave_timeout, (GSourceFunc) auto_save_document_timeout, Denemo.project); } } if (Denemo.prefs.visible_directive_buttons) { gtk_widget_hide (Denemo.project->buttonboxes); //set_toggle (ToggleScoreTitles_STRING, FALSE); there is no score titles in a new score } if (have_midi () && Denemo.prefs.startmidiin) project->input_source = INPUTMIDI; panic_all (); //g_print ("Reset synth as part of newtab()\n"); } /* end of newtab creating a new DenemoProject holding one musical score */ denemo-2.2.0/src/core/PaxHeaders.19168/cache.h0000644000000000000000000000013213135434036015464 xustar0030 mtime=1500919838.343315139 30 atime=1500919920.196648472 30 ctime=1500919914.163315139 denemo-2.2.0/src/core/cache.h0000644000175000017500000000227013135434036017336 0ustar00jjbenhamjjbenham00000000000000/* * cache.h * * Copyright 2016 Richard Shann * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA */ #ifndef CACHE_H #define CACHE_H #include void update_timesig_cache (measurenode *mnode); void update_clef_cache (measurenode *mnode, objnode *onode); void update_keysig_cache (measurenode *mnode, objnode *onode); void update_stemdir_cache (measurenode *mnode, objnode *onode); void cache_measure (measurenode *mnode); void cache_staff (staffnode *s); void cache_all (void); #endif denemo-2.2.0/src/core/PaxHeaders.19168/external.c0000644000000000000000000000013213135434036016236 xustar0030 mtime=1500919838.343315139 30 atime=1500919920.203315139 30 ctime=1500919914.163315139 denemo-2.2.0/src/core/external.c0000644000175000017500000000416213135434036020112 0ustar00jjbenhamjjbenham00000000000000/* * external.c * * functions that deals with external commmands * such as play, playmidi, lpr... * * this is part of the GNU Denemo, * Copyright (c) 2000-2006 Adam Tee */ #include #include "core/prefops.h" #include #include "core/external.h" #include "core/utils.h" /* give a filepath string pointing to the user's * Denemo temporary directory. * * if constname is NULL, basename is random. * else, basename is the given constname. * * returns: the filepath */ gchar * get_temp_filename (const gchar * name) { gchar *path = NULL; if (get_user_data_dir (FALSE) == NULL) return NULL; if (name != NULL) path = g_build_filename (get_user_data_dir (FALSE), name, NULL); else path = g_build_filename (get_user_data_dir (FALSE), "bla", NULL); g_debug ("temp filename: %s\n", path); return path; } gchar * dnm_get_temp_filename (const gchar * name) { return get_temp_filename (name); } /* * spawn an external shell command line with * its arguments and returns immediately. * * additional options can be put in cmdline, * separated by spaces or tabs. * * return: PID of spawned process. */ GPid spawn_external (const GString * cmdline) { GError *err = NULL; /* force implicit g_malloc */ gchar **argv; GPid pid = GPID_UNREF; gboolean ok; if (!cmdline->str) return GPID_UNREF; /* argv = build_argv (cmdline->str); */ if (!g_shell_parse_argv (cmdline->str, NULL, &argv, &err)) { g_message (_("Could not parse command line: %s"), err->message); g_error_free (err); return pid; } ok = g_spawn_async (NULL, /* dir */ argv, NULL, /* env */ G_SPAWN_SEARCH_PATH, /* | G_SPAWN_DO_NOT_REAP_CHILD, */ NULL, /* child setup func */ NULL, /* user data passed to setup */ &pid, /* child pid */ &err); if (!ok) { g_warning ("error spawning pid %d: %s", pid, err->message); g_error_free (err); } /* free_argv (argv); */ g_strfreev (argv); return pid; } denemo-2.2.0/src/core/PaxHeaders.19168/keyboard.c0000644000000000000000000000013213135434036016214 xustar0030 mtime=1500919838.346648472 30 atime=1500919920.203315139 30 ctime=1500919914.189981805 denemo-2.2.0/src/core/keyboard.c0000644000175000017500000001646213135434036020076 0ustar00jjbenhamjjbenham00000000000000#include "core/keyboard.h" #include "core/kbd-custom.h" #include "core/view.h" #include "core/menusystem.h" #include #include /* * translate a keybinding from the format used in denemo keymaprc file to the * format understood by gtk_accelerator_parse. The output is an allocated string * that must be freed by the caller. */ gchar * translate_binding_dnm_to_gtk (const gchar * dnm_binding) { if (!Denemo.prefs.strictshortcuts) { return g_strdup (dnm_binding); } /* hold is now "modifiers+keyname" or just "keyname" */ guint len, i; gchar **tokens = g_strsplit (dnm_binding, "+", 0); gchar *res, *save; len = g_strv_length (tokens); if (len == 0) res = NULL; else if (len == 1) res = g_strdup (dnm_binding); else { res = ""; for (i = 0; i < len - 1; i++) { save = res; res = g_strconcat (res, "<", tokens[i], ">", NULL); if (save[0]) g_free (save); } save = res; res = g_strconcat (res, tokens[len - 1], NULL); g_free (save); } g_strfreev (tokens); return res; } /* * translate a keybinding from the format used in denemo keymaprc file to the * format understood by gtk_accelerator_parse. The output is an allocated string * that must be freed by the caller. */ gchar * translate_binding_gtk_to_dnm (const gchar * gtk_binding) { if (!Denemo.prefs.strictshortcuts) { return g_strdup (gtk_binding); } gchar *res = "", *save, *next, *mod; const gchar *cur = gtk_binding; while (cur[0] == '<') { next = strchr (cur, '>'); if (!next) { cur = NULL; if (res[0]) g_free (res); return NULL; } mod = g_strndup (cur + 1, next - cur - 1); if (res[0]) { save = res; res = g_strconcat (res, "+", NULL); g_free (save); } save = res; res = g_strconcat (res, mod, NULL); g_free (mod); if (save[0]) g_free (save); cur = next + 1; } if (!res[0]) return g_strdup (gtk_binding); else { save = res; res = g_strconcat (res, "+", cur, NULL); g_free (save); return res; } } /* UNUSED static gint get_state (gchar * key) { gint ret = -1; if (0 == strcmp (key, "Ctrl")) ret = 4; else if (0 == strcmp (key, "Shift")) ret = 1; else if (0 == strcmp (key, "Alt")) ret = 8; else if (0 == strcmp (key, "Ctrl+Shift")) ret = 5; else if (0 == strcmp (key, "Alt+Shift")) ret = 9; else if (0 == strcmp (key, "Alt+Ctrl")) ret = 12; else if (0 == strcmp (key, "Alt+Ctrl+Shift")) ret = 13; return ret; } */ void set_visibility_for_action (DenemoAction * action, gboolean visible) { GList *h = denemo_action_get_proxies (action); for (; h; h = h->next) { if (visible) gtk_widget_show (h->data); else gtk_widget_hide (h->data); } command_row* row = NULL; const gchar* name = denemo_action_get_name(action); gint id = lookup_command_from_name (Denemo.map, name); if(id < 0) g_warning("Invalid command name:'%s' id:'%i'", name, id); else { if (keymap_get_command_row (Denemo.map, &row, id)) row->hidden = !visible; } } void hide_action_of_name (gchar * name) { DenemoAction *action = lookup_action_from_name (name); if(action) set_visibility_for_action (action, FALSE); else g_warning ("Action %s not created yet\n", name);} void show_action_of_name (gchar * name) { DenemoAction *action = lookup_action_from_name (name); if(action) set_visibility_for_action (action, TRUE); else g_warning ("Action %s not created yet\n", name); } void add_ui (gchar * menupath, gchar * after, gchar * name) { GtkWidget *widget = denemo_menusystem_get_widget (menupath); if (widget == NULL) instantiate_menus (menupath); denemo_menusystem_add_command (menupath, name, after); } //Called while parsing Default.commands etc void create_command(command_row *command) { DenemoAction* action = NULL; gboolean new_command = (g_hash_table_lookup(Denemo.map->idx_from_name, command->name) == NULL); if (command->script_type == COMMAND_SCHEME) { if(!Denemo.non_interactive){ if (!new_command) action = lookup_action_from_name (command->name); else { gchar *icon_name = get_icon_for_name (command->name, command->label); action = denemo_action_new (command->name, command->label, command->tooltip); // denemo_action_group_add_action (action); } } if(new_command){ register_command_row (Denemo.map, command); command->callback = activate_script; // create a scheme function to call this script create_scheme_function_for_script (command->name); } if(g_list_length(command->locations) > 0) { GList *g = NULL; for (g = command->locations; g; g = g->next) { command->menupath = (gchar *) (g->data ?: "/MainMenu/Other"); if(!Denemo.non_interactive) add_ui (command->menupath, command->after, command->name); } } else if (command->fallback) { command->menupath = command->fallback; add_ui (command->menupath, command->after, command->name); } #ifdef EXTRA_WORK if(!Denemo.non_interactive){ if (new_command) g_signal_connect (G_OBJECT (action), "activate", G_CALLBACK (activate_script), NULL); } #endif // Note the script should *not* be in Default.cmdset // to delay loading it, but we should set the signal initally and we should not repeat setting the signal later. // the signal does not specify which script will be run, that is decided lazily, when the action is invoked for the first time } // we are not as yet re-writing tooltips etc on builtin commands else { //built-in if(!Denemo.non_interactive) { //action = lookup_action_from_name (command->name); //register_command (command->name, command->label, command->tooltip, command->callback); if(new_command) { if(command->locations) { //action = lookup_action_from_name (command->name); command->menupath = (gchar *) command->locations->data; //only doing one location for now FIXME //g_print ("Command %s has %s menupath\n", command->name, command->menupath); if(!Denemo.non_interactive) add_ui (command->menupath, NULL, command->name); } register_command_row (Denemo.map, command); } } if (command->hidden && !Denemo.non_interactive) { hide_action_of_name (command->name); command->hidden = FALSE; g_info ("Hiding Builtin %s\n", command->name); } } } /* if filename ends in /menus/.... hierarchy extract and return the tail below menus/ */ gchar * extract_menupath (gchar * filename) { gchar *head = g_strdup_printf ("%c%s", G_DIR_SEPARATOR, "menus"); gchar *base = g_strrstr (filename, head); if (base) { base += strlen (head); base = g_path_get_dirname (base); gchar *c; for (c = base; c && *c; c++) if (*c == G_DIR_SEPARATOR) *c = '/'; //g_debug("got base as %s\n", base); } g_free (head); return base; } denemo-2.2.0/src/core/PaxHeaders.19168/denemo_types.c0000644000000000000000000000013213135434036017107 xustar0030 mtime=1500919838.343315139 30 atime=1500919920.223315139 30 ctime=1500919914.159981805 denemo-2.2.0/src/core/denemo_types.c0000644000175000017500000000214413135434036020761 0ustar00jjbenhamjjbenham00000000000000/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA */ #include /* keep the numeration ordered to allow access by array index. */ gchar *DenemoObjTypeNames[18] = { "CHORD", "TUPOPEN", "TUPCLOSE", "CLEF", "TIMESIG", "KEYSIG", "BARLINE", "STEMDIRECTIVE", "MEASUREBREAK", "STAFFBREAK", "DYNAMIC", "GRACE_START", "GRACE_END", "LYRIC", "FIGURE", "LILYDIRECTIVE", "FAKECHORD", "PARTIAL" }; denemo-2.2.0/src/core/PaxHeaders.19168/importxml.c0000644000000000000000000000013213135434036016447 xustar0030 mtime=1500919838.346648472 30 atime=1500919920.223315139 30 ctime=1500919914.186648472 denemo-2.2.0/src/core/importxml.c0000644000175000017500000030761313135434036020332 0ustar00jjbenhamjjbenham00000000000000/* importxml.c * Import Denemo's "native" XML file format into a Denemo score structure * * for Denemo, a gtk+ frontend to GNU Lilypond * (c) 2001-2005 Eric Galluzzo, Adam Tee * 2009, 2010, 2011 Richard Shann */ #include "command/chord.h" #include "command/grace.h" #include "core/importxml.h" #include "command/measure.h" #include "command/object.h" #include "command/score.h" #include "command/staff.h" #include "command/processstaffname.h" #include "command/tuplet.h" #include "export/xmldefs.h" #include "core/cache.h" #include "core/view.h" #include "ui/texteditors.h" #include "command/lilydirectives.h" #include "display/calculatepositions.h" #include "command/scorelayout.h" #include "audio/pitchentry.h" #include #include "core/cache.h" /* libxml includes: for libxml2 this should be */ #include #include static gint version_number; static gint current_movement = 0, current_staff = 0, current_measure = 0, current_position = 0, tonal_center = 0; /* Defines for making traversing XML trees easier */ #define FOREACH_CHILD_ELEM(childElem, parentElem) \ for ((childElem) = (parentElem)->xmlChildrenNode; \ (childElem) != NULL; \ (childElem) = (childElem)->next) #define ELEM_NAME_EQ(childElem, childElemName) \ (strcmp ((gchar *)(childElem)->name, (childElemName)) == 0) #define ILLEGAL_ELEM(parentElemName, childElem) \ do \ { \ g_warning ("Illegal element inside <%s>: <%s>", parentElemName, \ (childElem)->name); \ } while (0) #define RETURN_IF_ELEM_NOT_FOUND(parentElemName, childElem, childElemName) \ do \ { \ if (childElem == NULL) \ { \ g_warning ("Element <%s> not found inside <%s>", childElemName, \ parentElemName); \ return -1; \ } \ } while (0) /* The list of handlers for elements in other XML namespaces */ /*static GList *sImportHandlers = NULL;*/ /* * The global XML ID to element map * * FIXME: This won't work for multi-threaded apps. */ static GHashTable *sXMLIDToElemMap = NULL; /* * The previous staff element that we came across * * FIXME: This won't work for multi-threaded apps, but I'm too lazy to pass * this silly thing around everywhere. */ static xmlNodePtr sPrevStaffElem = NULL; /** * Free a hash table key. This function is suitable for use with * g_hash_table_foreach. */ static void freeHashTableKey (gpointer key, G_GNUC_UNUSED gpointer value, G_GNUC_UNUSED gpointer userData) { g_free (key); } /** * Recursively descend the tree starting from node elem and add any element * which has an "id" attribute to the map. */ static void buildXMLIDMapForChildren (xmlNodePtr elem) { xmlNodePtr childElem; gchar *id; if (elem != NULL) { id = (gchar *) xmlGetProp (elem, (xmlChar *) "id"); if (id != NULL) { g_hash_table_insert (sXMLIDToElemMap, id, elem); } FOREACH_CHILD_ELEM (childElem, elem) { buildXMLIDMapForChildren (childElem); } } } /** * Build the global (ick) XML ID to element map from the given document. We * consider any attribute with name "id" to be of type ID. Not technically * correct, but currently true. */ static void buildXMLIDToElemMap (xmlDocPtr doc) { sXMLIDToElemMap = g_hash_table_new (g_str_hash, g_str_equal); buildXMLIDMapForChildren (xmlDocGetRootElement (doc)); } /** * Try to find the given XML ID in the ID -> XML element map. If it's found, * return it; if not, return NULL. */ static xmlNodePtr lookupXMLID (gchar * id) { return (xmlNodePtr) g_hash_table_lookup (sXMLIDToElemMap, id); } /** * Get the text from the child node list of elem, convert it to an integer, * and return it. If unsuccessful, return G_MAXINT. */ static gint getXMLIntChild (xmlNodePtr elem) { gchar *text = (gchar *) xmlNodeListGetString (elem->doc, elem->xmlChildrenNode, 1); gint num = G_MAXINT; if (text == NULL) { g_warning ("No child text found"); } else { if (sscanf (text, " %d", &num) != 1) { g_warning ("Could not convert child text \"%s\" of <%s> to number", text, elem->name); num = G_MAXINT; } g_free (text); } return num; } /** * Get the text from the child node list of elem, convert it to an integer, * and return it. If unsuccessful, return G_MAXINT. */ static guint getXMLUIntChild (xmlNodePtr elem) { gchar *text = (gchar *) xmlNodeListGetString (elem->doc, elem->xmlChildrenNode, 1); guint num = G_MAXUINT; if (text == NULL) { g_warning ("No child text found"); } else { if (sscanf (text, " %u", &num) != 1) { g_warning ("Could not convert child text \"%s\" of <%s> to number", text, elem->name); num = G_MAXUINT; } g_free (text); } return num; } /** * Try to find the element with the given name and namespace as an immediate * child of the given parent element. If found, return the child element; if * not, return NULL. */ static xmlNodePtr getXMLChild (xmlNodePtr parentElem, gchar * childElemName) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, parentElem) if (ELEM_NAME_EQ (childElem, childElemName)) return childElem; return NULL; } /** * Convert textual context to a denemo context * */ static void add_staff_context (DenemoContext c) { if (c == DENEMO_NONE) return; switch (c) { case DENEMO_PIANO_START: staff_directive_put_prefix ("ContextPianoStaff", " \\new PianoStaff <<\n"); staff_directive_put_override ("ContextPianoStaff", DENEMO_OVERRIDE_AFFIX); break; case DENEMO_GROUP_START: staff_directive_put_prefix ("ContextGroupStaff", " \\new StaffGroup <<\n"); staff_directive_put_override ("ContextGroupStaff", DENEMO_OVERRIDE_AFFIX); break; case DENEMO_CHOIR_START: staff_directive_put_prefix ("ContextChoirStaff", " \\new ChoirStaff <<\n"); staff_directive_put_override ("ContextChoirStaff", DENEMO_OVERRIDE_AFFIX); break; case DENEMO_PIANO_END: staff_directive_put_postfix ("ContextPianoStaff", ">>\n"); staff_directive_put_override ("ContextPianoStaff", DENEMO_OVERRIDE_AFFIX); break; case DENEMO_GROUP_END: staff_directive_put_postfix ("ContextGroupStaff", ">>\n"); staff_directive_put_override ("ContextGroupStaff", DENEMO_OVERRIDE_AFFIX); break; case DENEMO_CHOIR_END: staff_directive_put_postfix ("ContextChoirStaff", ">>\n"); staff_directive_put_override ("ContextChoirStaff", DENEMO_OVERRIDE_AFFIX); break; default: g_warning ("Unexpected context value"); } } static void addContext (gchar * string) { if (string == NULL) return; if ((!strcmp (string, "PianoStaff")) || (!strcmp (string, "ChoirStaff")) || (!strcmp (string, "GroupStaff"))) { g_warning ("Old context specs found - no longer supported. You will have to reset the Staff contexts"); return; } #define LOOKUP(A,B) if (!strcmp (string, A)) {add_staff_context(B); return;} LOOKUP (PIANO_START_STRING, DENEMO_PIANO_START) LOOKUP (PIANO_END_STRING, DENEMO_PIANO_END) LOOKUP (CHOIR_START_STRING, DENEMO_CHOIR_START) LOOKUP (CHOIR_END_STRING, DENEMO_CHOIR_END) LOOKUP (GROUP_START_STRING, DENEMO_GROUP_START) LOOKUP (GROUP_END_STRING, DENEMO_GROUP_END) #undef LOOKUP } #define UPDATE_OVERRIDE(directive) \ if(version_number<4)\ directive->override |= DENEMO_OVERRIDE_TAGEDIT; #define DO_DIREC(field) if (ELEM_NAME_EQ (childElem, #field))\ directive->field = g_string_new((gchar *)xmlNodeListGetString (childElem->doc,\ childElem->xmlChildrenNode, 1)); #define DO_INTDIREC(field) if (ELEM_NAME_EQ (childElem, #field))\ directive->field = getXMLIntChild(childElem); static GList *parseLayouts (xmlNodePtr parentElem) { GList *g = NULL; xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, parentElem) { g = g_list_append (g, GUINT_TO_POINTER(getXMLUIntChild(childElem))); } return g; } static void parseDirective (xmlNodePtr parentElem, DenemoDirective * directive) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, parentElem) { DO_DIREC (tag); DO_DIREC (prefix); DO_DIREC (postfix); DO_DIREC (display); DO_DIREC (midibytes); DO_DIREC (data); DO_DIREC (grob); DO_INTDIREC (override); DO_INTDIREC (minpixels); // DO_INTDIREC (x); if (ELEM_NAME_EQ (childElem, "x")) { directive->flag = DENEMO_IGNORE_FOR_LAYOUTS; directive->layouts = g_list_append (NULL, GUINT_TO_POINTER(getXMLUIntChild(childElem))); } // DO_INTDIREC (y); if (ELEM_NAME_EQ (childElem, "y")) { directive->flag = DENEMO_ALLOW_FOR_LAYOUTS; directive->layouts = g_list_append (NULL, GUINT_TO_POINTER(getXMLUIntChild(childElem))); } DO_INTDIREC (tx); DO_INTDIREC (ty); DO_INTDIREC (gx); DO_INTDIREC (gy); if (ELEM_NAME_EQ (childElem, "graphic_name")) { directive->graphic_name = g_string_new ((gchar *) xmlNodeListGetString (childElem->doc, childElem->xmlChildrenNode, 1)); loadGraphicItem (directive->graphic_name->str, (DenemoGraphic **) & directive->graphic); /* FIXME,handle not loaded */ } if (ELEM_NAME_EQ (childElem, "allow")) { directive->flag = DENEMO_ALLOW_FOR_LAYOUTS; directive->layouts = parseLayouts (childElem); } if (ELEM_NAME_EQ (childElem, "ignore")) { directive->flag = DENEMO_IGNORE_FOR_LAYOUTS; directive->layouts = parseLayouts (childElem); } } UPDATE_OVERRIDE (directive); } static gint parseWidgetDirective (xmlNodePtr parentElem, gpointer fn, DenemoDirective * directive, GtkMenu * menu) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, parentElem) { DO_DIREC (tag); DO_DIREC (prefix); DO_DIREC (postfix); DO_DIREC (display); DO_DIREC (graphic_name); DO_DIREC (midibytes); DO_DIREC (grob); DO_DIREC (data); DO_INTDIREC (override); DO_INTDIREC (minpixels); //DO_INTDIREC (x); //DO_INTDIREC (y); if (ELEM_NAME_EQ (childElem, "x")) { directive->flag = DENEMO_IGNORE_FOR_LAYOUTS; directive->layouts = g_list_append (NULL, GUINT_TO_POINTER(getXMLUIntChild(childElem))); } if (ELEM_NAME_EQ (childElem, "y")) { directive->flag = DENEMO_ALLOW_FOR_LAYOUTS; directive->layouts = g_list_append (NULL, GUINT_TO_POINTER(getXMLUIntChild(childElem))); } DO_INTDIREC (tx); DO_INTDIREC (ty); DO_INTDIREC (gx); DO_INTDIREC (gy); if (ELEM_NAME_EQ (childElem, "allow")) { directive->flag = DENEMO_ALLOW_FOR_LAYOUTS; directive->layouts = parseLayouts (childElem); } if (ELEM_NAME_EQ (childElem, "ignore")) { directive->flag = DENEMO_IGNORE_FOR_LAYOUTS; directive->layouts = parseLayouts (childElem); } } if (directive->tag == NULL) directive->tag = g_string_new (""); if (directive->postfix && (g_str_has_prefix (directive->postfix->str, "tagline = \"Generated by Denemo Version"))) //drop old automated taglinesdirective->postfix->str g_string_assign (directive->postfix, ""); UPDATE_OVERRIDE (directive); widget_for_directive_menu (directive, fn, menu); return TRUE; } #undef DO_DIREC #undef DO_INTDIREC static void parseVerse (xmlNodePtr parentElem, guint verse) { gchar *text = (gchar *) xmlNodeListGetString (parentElem->doc, parentElem->xmlChildrenNode, 1); DenemoStaff* staff = (DenemoStaff*) Denemo.project->movement->currentstaff->data; if(!Denemo.non_interactive){ GtkTextView* verse_view = g_list_nth_data (staff->verse_views, verse); gtk_text_buffer_set_text (gtk_text_view_get_buffer(verse_view), text ? text : "", -1); g_signal_connect (G_OBJECT (gtk_text_view_get_buffer (verse_view)), "changed", G_CALLBACK (lyric_changed_cb), NULL); g_free (text); } else{ GList* _current_verse = g_list_nth(staff->verses, verse); if(_current_verse->data) g_free(_current_verse->data); _current_verse->data = text; } } static void parseVerses (DenemoMovement * movement, DenemoStaff * staff, xmlNodePtr parentElem) { xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, parentElem) { guint verse = add_verse_to_staff (movement, staff); parseVerse (childElem, verse); } } /* Fix for semantic change to prefix field in the directives */ static void fix_prefix_use (GList * directives) { GList *g; for (g = directives; g; g = g->next) { DenemoDirective *directive = g->data; if (directive->tag == NULL) directive->tag = g_string_new (""); if (directive->prefix) { directive->prefix = g_string_new (g_strdup_printf ("%%{Disabled form \n%s\n use newer command %%}\n", directive->prefix->str)); directive->display = g_string_new (g_strdup_printf ("Warning - re-run the %s command here!\nold version", directive->tag->str)); } } } static GList * parseDirectives (xmlNodePtr parentElem) { GList *directives = NULL; xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, parentElem) { DenemoDirective *directive = (DenemoDirective *) g_malloc0 (sizeof (DenemoDirective)); parseDirective (childElem, directive); directives = g_list_append (directives, directive); } return directives; } static GList * parseWidgetDirectives (xmlNodePtr parentElem, gpointer fn, GtkMenu * menu, GList ** directives_pointer) { GList *directives = NULL; xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, parentElem) { DenemoDirective *directive = (DenemoDirective *) g_malloc0 (sizeof (DenemoDirective)); parseWidgetDirective (childElem, fn, directive, menu); directives = g_list_append (directives, directive); if (directive->widget && directives_pointer) //FIXME this const string has to match with lilydirectives.c g_object_set_data (G_OBJECT (directive->widget), "directives-pointer", (gpointer) directives_pointer); } return directives; } /** * Return the numerator and denominator from the given XML fraction. */ static gint parseFraction (xmlNodePtr parentElem, gint * numerator, gint * denominator) { xmlNodePtr childElem; gboolean gotNumerator = FALSE, gotDenominator = FALSE; gboolean gotCorrectNumerator = FALSE, gotCorrectDenominator = FALSE; FOREACH_CHILD_ELEM (childElem, parentElem) { { if (ELEM_NAME_EQ (childElem, "numerator")) { if (gotNumerator) { g_warning ("Two numerators in the same fraction under <%s>", parentElem->name); gotCorrectNumerator = FALSE; } else { gotNumerator = TRUE; *numerator = getXMLIntChild (childElem); if (*numerator == G_MAXINT) *numerator = 1; else gotCorrectNumerator = TRUE; } } else if (ELEM_NAME_EQ (childElem, "denominator")) { if (gotDenominator) { g_warning ("Two numerators in the same fraction under <%s>", parentElem->name); gotCorrectDenominator = FALSE; } else { gotDenominator = TRUE; *denominator = getXMLIntChild (childElem); if (*denominator == G_MAXINT) *denominator = 1; else gotCorrectDenominator = TRUE; } } } } if (!gotNumerator) { g_warning ("Fraction's numerator not found inside <%s>; defaulting to 1", parentElem->name); *numerator = 1; } if (!gotDenominator) { g_warning ("Fraction's denominator not found inside <%s>; defaulting to " "1", parentElem->name); *denominator = 1; } return (gotCorrectNumerator && gotCorrectDenominator) ? 0 : -1; } /** * From the given XML accidental name, determine the accidental shift. */ static gint determineAccidentalShift (gchar * accidentalName) { if (strcmp (accidentalName, "natural") == 0) return 0; else if (strcmp (accidentalName, "sharp") == 0) return 1; else if (strcmp (accidentalName, "flat") == 0) return -1; else if (strcmp (accidentalName, "double-sharp") == 0) return 2; else if (strcmp (accidentalName, "double-flat") == 0) return -2; else { g_warning ("Unknown accidental \"%s\"; defaulting to natural", accidentalName); return 0; } } /** * Parse the given element into a numeric clef type. */ static void parseClef (xmlNodePtr clefElem, clef * clef) { gchar *clefTypeName = (gchar *) xmlGetProp (clefElem, (xmlChar *) "name"); if (clefTypeName == NULL) { g_warning ("No clef name specified; defaulting to treble"); clef->type = DENEMO_TREBLE_CLEF; } else if (strcmp (clefTypeName, "treble") == 0) clef->type = DENEMO_TREBLE_CLEF; else if (strcmp (clefTypeName, "bass") == 0) clef->type = DENEMO_BASS_CLEF; else if (strcmp (clefTypeName, "alto") == 0) clef->type = DENEMO_ALTO_CLEF; else if (strcmp (clefTypeName, "treble-8vb") == 0) clef->type = DENEMO_G_8_CLEF; else if (strcmp (clefTypeName, "bass-8vb") == 0) clef->type = DENEMO_F_8_CLEF; else if (strcmp (clefTypeName, "tenor") == 0) clef->type = DENEMO_TENOR_CLEF; else if (strcmp (clefTypeName, "soprano") == 0) clef->type = DENEMO_SOPRANO_CLEF; else if (strcmp (clefTypeName, "french") == 0) clef->type = DENEMO_FRENCH_CLEF; else if (strcmp (clefTypeName, "baritone") == 0) clef->type = DENEMO_BARITONE_CLEF; else { g_warning ("Unknown clef type \"%s\"; defaulting to treble", clefTypeName); clef->type = DENEMO_TREBLE_CLEF; } g_free (clefTypeName); xmlNodePtr childElem; FOREACH_CHILD_ELEM (childElem, clefElem) { if (ELEM_NAME_EQ (childElem, "directives")) { clef->directives = parseDirectives (childElem); } } } /** * Parse the given element into a key signature (with the * given number of sharps plus whether it's minor or not). */ static void parseKeySignature (xmlNodePtr keySigElem, keysig * keysig) { gint *keySig = &keysig->number; gboolean *isMinor = &keysig->isminor; xmlNodePtr childElem; gboolean successful = FALSE; gchar *noteName, *accidentalName, *modeName; gint note, accidental; FOREACH_CHILD_ELEM (childElem, keySigElem) { if (ELEM_NAME_EQ (childElem, "modal-key-signature")) { noteName = (gchar *) xmlGetProp (childElem, (xmlChar *) "note-name"); accidentalName = (gchar *) xmlGetProp (childElem, (xmlChar *) "accidental"); modeName = (gchar *) xmlGetProp (childElem, (xmlChar *) "mode"); if (noteName == NULL) { g_warning (" should have a " "note-name attribute; defaulting to C"); noteName = "C"; } if (accidentalName == NULL) accidentalName = "natural"; if (modeName == NULL) { g_warning (" should have a " "mode attribute; defaulting to major"); modeName = "major"; } /* Translate note name (A to G) into note number (0 to 6). */ note = noteName[0] - 'A'; if (strlen (noteName) != 1 || note < 0 || note > 6) { g_warning (" note name should be A " "through G, received \"%s\"; defaulting to C", noteName); note = 2; } accidental = determineAccidentalShift (accidentalName); /* Try to determine the base key signature. */ if (note == 2 && accidental == -1) *keySig = -7; else if (note == 6 && accidental == -1) *keySig = -6; else if (note == 3 && accidental == -1) *keySig = -5; else if (note == 0 && accidental == -1) *keySig = -4; else if (note == 4 && accidental == -1) *keySig = -3; else if (note == 1 && accidental == -1) *keySig = -2; else if (note == 5 && accidental == 0) *keySig = -1; else if (note == 2 && accidental == 0) *keySig = 0; else if (note == 6 && accidental == 0) *keySig = 1; else if (note == 3 && accidental == 0) *keySig = 2; else if (note == 0 && accidental == 0) *keySig = 3; else if (note == 4 && accidental == 0) *keySig = 4; else if (note == 1 && accidental == 0) *keySig = 5; else if (note == 5 && accidental == 1) *keySig = 6; else if (note == 2 && accidental == 1) *keySig = 7; else if (note == 6 && accidental == 1) *keySig = 8; else if (note == 3 && accidental == 1) *keySig = 9; else if (note == 0 && accidental == 1) *keySig = 10; else { g_warning ("Unknown key signature with note name %s and " "accidental %s; defaulting to C", noteName, accidentalName); *keySig = 0; } /* Determine whether it's major or minor. */ if (strcmp (modeName, "major") == 0) *isMinor = FALSE; else if (strcmp (modeName, "minor") == 0) *isMinor = TRUE; else { g_warning ("Unknown mode %s; defaulting to major", modeName); *isMinor = FALSE; } successful = TRUE; g_free (noteName); //g_free (accidentalName); g_free (modeName); } if (ELEM_NAME_EQ (childElem, "directives")) { keysig->directives = parseDirectives (childElem); } } if (!successful) { *keySig = 0; *isMinor = FALSE; } if (*isMinor) *keySig -= 3; } /** * Parse the given element into a key signature (with the * given number of sharps plus whether it's minor or not). */ static void parseTimeSignature (xmlNodePtr timeSigElem, timesig * timesig) { xmlNodePtr childElem; gboolean successful = FALSE; gint *numerator = ×ig->time1; gint *denominator = ×ig->time2; FOREACH_CHILD_ELEM (childElem, timeSigElem) { if (ELEM_NAME_EQ (childElem, "simple-time-signature")) { if (parseFraction (childElem, numerator, denominator) != 0) g_warning ("Could not parse ; " "defaulting to 4/4"); else successful = TRUE; } if (ELEM_NAME_EQ (childElem, "directives")) { timesig->directives = parseDirectives (childElem); } /* * Note: We can ignore other namespaces because the generic "parse this * DenemoObject" code takes care of them for us. */ } if (!successful) { *numerator = 4; *denominator = 4; } } /** * Parse the given into the current chord object * * */ static GString *Lyric = NULL; static void parseLyric (xmlNodePtr lyricElem) { gchar *lyric = (gchar *) xmlNodeListGetString (lyricElem->doc, lyricElem->xmlChildrenNode, 1); if (lyric) Lyric = g_string_append (Lyric, lyric); Lyric = g_string_append (Lyric, " "); g_free (lyric); } /** * Parse the given